{
  "version": 3,
  "sources": ["../../../node_modules/jquery/dist/jquery.js", "../../../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../node_modules/tooltipster/dist/js/tooltipster.bundle.min.js", "../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/jquery-bar-rating/jquery.barrating.js", "../../../node_modules/moment/moment.js", "../../../node_modules/chartkick/dist/chartkick.js", "../../../node_modules/bootstrap-select/js/bootstrap-select.js", "../../../node_modules/lodash/isArray.js", "../../../node_modules/lodash/_freeGlobal.js", "../../../node_modules/lodash/_root.js", "../../../node_modules/lodash/_Symbol.js", "../../../node_modules/lodash/_getRawTag.js", "../../../node_modules/lodash/_objectToString.js", "../../../node_modules/lodash/_baseGetTag.js", "../../../node_modules/lodash/isObjectLike.js", "../../../node_modules/lodash/isSymbol.js", "../../../node_modules/lodash/_isKey.js", "../../../node_modules/lodash/isObject.js", "../../../node_modules/lodash/isFunction.js", "../../../node_modules/lodash/_coreJsData.js", "../../../node_modules/lodash/_isMasked.js", "../../../node_modules/lodash/_toSource.js", "../../../node_modules/lodash/_baseIsNative.js", "../../../node_modules/lodash/_getValue.js", "../../../node_modules/lodash/_getNative.js", "../../../node_modules/lodash/_nativeCreate.js", "../../../node_modules/lodash/_hashClear.js", "../../../node_modules/lodash/_hashDelete.js", "../../../node_modules/lodash/_hashGet.js", "../../../node_modules/lodash/_hashHas.js", "../../../node_modules/lodash/_hashSet.js", "../../../node_modules/lodash/_Hash.js", "../../../node_modules/lodash/_listCacheClear.js", "../../../node_modules/lodash/eq.js", "../../../node_modules/lodash/_assocIndexOf.js", "../../../node_modules/lodash/_listCacheDelete.js", "../../../node_modules/lodash/_listCacheGet.js", "../../../node_modules/lodash/_listCacheHas.js", "../../../node_modules/lodash/_listCacheSet.js", "../../../node_modules/lodash/_ListCache.js", "../../../node_modules/lodash/_Map.js", "../../../node_modules/lodash/_mapCacheClear.js", "../../../node_modules/lodash/_isKeyable.js", "../../../node_modules/lodash/_getMapData.js", "../../../node_modules/lodash/_mapCacheDelete.js", "../../../node_modules/lodash/_mapCacheGet.js", "../../../node_modules/lodash/_mapCacheHas.js", "../../../node_modules/lodash/_mapCacheSet.js", "../../../node_modules/lodash/_MapCache.js", "../../../node_modules/lodash/memoize.js", "../../../node_modules/lodash/_memoizeCapped.js", "../../../node_modules/lodash/_stringToPath.js", "../../../node_modules/lodash/_arrayMap.js", "../../../node_modules/lodash/_baseToString.js", "../../../node_modules/lodash/toString.js", "../../../node_modules/lodash/_castPath.js", "../../../node_modules/lodash/_toKey.js", "../../../node_modules/lodash/_baseGet.js", "../../../node_modules/lodash/get.js", "../../../node_modules/lodash/_baseHas.js", "../../../node_modules/lodash/_baseIsArguments.js", "../../../node_modules/lodash/isArguments.js", "../../../node_modules/lodash/_isIndex.js", "../../../node_modules/lodash/isLength.js", "../../../node_modules/lodash/_hasPath.js", "../../../node_modules/lodash/has.js", "../../../node_modules/lodash/_stackClear.js", "../../../node_modules/lodash/_stackDelete.js", "../../../node_modules/lodash/_stackGet.js", "../../../node_modules/lodash/_stackHas.js", "../../../node_modules/lodash/_stackSet.js", "../../../node_modules/lodash/_Stack.js", "../../../node_modules/lodash/_defineProperty.js", "../../../node_modules/lodash/_baseAssignValue.js", "../../../node_modules/lodash/_assignMergeValue.js", "../../../node_modules/lodash/_createBaseFor.js", "../../../node_modules/lodash/_baseFor.js", "../../../node_modules/lodash/_cloneBuffer.js", "../../../node_modules/lodash/_Uint8Array.js", "../../../node_modules/lodash/_cloneArrayBuffer.js", "../../../node_modules/lodash/_cloneTypedArray.js", "../../../node_modules/lodash/_copyArray.js", "../../../node_modules/lodash/_baseCreate.js", "../../../node_modules/lodash/_overArg.js", "../../../node_modules/lodash/_getPrototype.js", "../../../node_modules/lodash/_isPrototype.js", "../../../node_modules/lodash/_initCloneObject.js", "../../../node_modules/lodash/isArrayLike.js", "../../../node_modules/lodash/isArrayLikeObject.js", "../../../node_modules/lodash/stubFalse.js", "../../../node_modules/lodash/isBuffer.js", "../../../node_modules/lodash/isPlainObject.js", "../../../node_modules/lodash/_baseIsTypedArray.js", "../../../node_modules/lodash/_baseUnary.js", "../../../node_modules/lodash/_nodeUtil.js", "../../../node_modules/lodash/isTypedArray.js", "../../../node_modules/lodash/_safeGet.js", "../../../node_modules/lodash/_assignValue.js", "../../../node_modules/lodash/_copyObject.js", "../../../node_modules/lodash/_baseTimes.js", "../../../node_modules/lodash/_arrayLikeKeys.js", "../../../node_modules/lodash/_nativeKeysIn.js", "../../../node_modules/lodash/_baseKeysIn.js", "../../../node_modules/lodash/keysIn.js", "../../../node_modules/lodash/toPlainObject.js", "../../../node_modules/lodash/_baseMergeDeep.js", "../../../node_modules/lodash/_baseMerge.js", "../../../node_modules/lodash/identity.js", "../../../node_modules/lodash/_apply.js", "../../../node_modules/lodash/_overRest.js", "../../../node_modules/lodash/constant.js", "../../../node_modules/lodash/_baseSetToString.js", "../../../node_modules/lodash/_shortOut.js", "../../../node_modules/lodash/_setToString.js", "../../../node_modules/lodash/_baseRest.js", "../../../node_modules/lodash/_isIterateeCall.js", "../../../node_modules/lodash/_createAssigner.js", "../../../node_modules/lodash/merge.js", "../../../node_modules/lodash/_setCacheAdd.js", "../../../node_modules/lodash/_setCacheHas.js", "../../../node_modules/lodash/_SetCache.js", "../../../node_modules/lodash/_baseFindIndex.js", "../../../node_modules/lodash/_baseIsNaN.js", "../../../node_modules/lodash/_strictIndexOf.js", "../../../node_modules/lodash/_baseIndexOf.js", "../../../node_modules/lodash/_arrayIncludes.js", "../../../node_modules/lodash/_arrayIncludesWith.js", "../../../node_modules/lodash/_cacheHas.js", "../../../node_modules/lodash/_Set.js", "../../../node_modules/lodash/noop.js", "../../../node_modules/lodash/_setToArray.js", "../../../node_modules/lodash/_createSet.js", "../../../node_modules/lodash/_baseUniq.js", "../../../node_modules/lodash/uniq.js", "../../../node_modules/lodash/_baseSlice.js", "../../../node_modules/lodash/_castSlice.js", "../../../node_modules/lodash/_hasUnicode.js", "../../../node_modules/lodash/_asciiToArray.js", "../../../node_modules/lodash/_unicodeToArray.js", "../../../node_modules/lodash/_stringToArray.js", "../../../node_modules/lodash/_createCaseFirst.js", "../../../node_modules/lodash/upperFirst.js", "../../../node_modules/lodash/capitalize.js", "../../../node_modules/lodash/_arrayReduce.js", "../../../node_modules/lodash/_basePropertyOf.js", "../../../node_modules/lodash/_deburrLetter.js", "../../../node_modules/lodash/deburr.js", "../../../node_modules/lodash/_asciiWords.js", "../../../node_modules/lodash/_hasUnicodeWord.js", "../../../node_modules/lodash/_unicodeWords.js", "../../../node_modules/lodash/words.js", "../../../node_modules/lodash/_createCompounder.js", "../../../node_modules/lodash/camelCase.js", "../../../node_modules/lodash/_baseRepeat.js", "../../../node_modules/lodash/_trimmedEndIndex.js", "../../../node_modules/lodash/_baseTrim.js", "../../../node_modules/lodash/toNumber.js", "../../../node_modules/lodash/toFinite.js", "../../../node_modules/lodash/toInteger.js", "../../../node_modules/lodash/repeat.js", "../../../node_modules/lodash/_arrayPush.js", "../../../node_modules/lodash/_isFlattenable.js", "../../../node_modules/lodash/_baseFlatten.js", "../../../node_modules/lodash/_arraySome.js", "../../../node_modules/lodash/_equalArrays.js", "../../../node_modules/lodash/_mapToArray.js", "../../../node_modules/lodash/_equalByTag.js", "../../../node_modules/lodash/_baseGetAllKeys.js", "../../../node_modules/lodash/_arrayFilter.js", "../../../node_modules/lodash/stubArray.js", "../../../node_modules/lodash/_getSymbols.js", "../../../node_modules/lodash/_nativeKeys.js", "../../../node_modules/lodash/_baseKeys.js", "../../../node_modules/lodash/keys.js", "../../../node_modules/lodash/_getAllKeys.js", "../../../node_modules/lodash/_equalObjects.js", "../../../node_modules/lodash/_DataView.js", "../../../node_modules/lodash/_Promise.js", "../../../node_modules/lodash/_WeakMap.js", "../../../node_modules/lodash/_getTag.js", "../../../node_modules/lodash/_baseIsEqualDeep.js", "../../../node_modules/lodash/_baseIsEqual.js", "../../../node_modules/lodash/_baseIsMatch.js", "../../../node_modules/lodash/_isStrictComparable.js", "../../../node_modules/lodash/_getMatchData.js", "../../../node_modules/lodash/_matchesStrictComparable.js", "../../../node_modules/lodash/_baseMatches.js", "../../../node_modules/lodash/_baseHasIn.js", "../../../node_modules/lodash/hasIn.js", "../../../node_modules/lodash/_baseMatchesProperty.js", "../../../node_modules/lodash/_baseProperty.js", "../../../node_modules/lodash/_basePropertyDeep.js", "../../../node_modules/lodash/property.js", "../../../node_modules/lodash/_baseIteratee.js", "../../../node_modules/lodash/_baseForOwn.js", "../../../node_modules/lodash/_createBaseEach.js", "../../../node_modules/lodash/_baseEach.js", "../../../node_modules/lodash/_baseMap.js", "../../../node_modules/lodash/_baseSortBy.js", "../../../node_modules/lodash/_compareAscending.js", "../../../node_modules/lodash/_compareMultiple.js", "../../../node_modules/lodash/_baseOrderBy.js", "../../../node_modules/lodash/sortBy.js", "../../../node_modules/lodash/_baseZipObject.js", "../../../node_modules/lodash/zipObject.js", "../../../node_modules/lodash/_baseRange.js", "../../../node_modules/lodash/_createRange.js", "../../../node_modules/lodash/range.js", "../../../node_modules/trix/dist/trix.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/@rails/actiontext/app/javascript/actiontext/attachment_upload.js", "../../../node_modules/@rails/actiontext/app/javascript/actiontext/index.js", "../../../node_modules/select2/dist/js/select2.js", "../../javascript/academy/general.js", "../../javascript/academy/inputs/autocomplete.js", "../../../node_modules/strict-uri-encode/index.js", "../../../node_modules/decode-uri-component/index.js", "../../../node_modules/split-on-first/index.js", "../../../node_modules/filter-obj/index.js", "../../../node_modules/query-string/index.js", "../../../node_modules/flatpickr/dist/l10n/default.js", "../../../node_modules/flatpickr/dist/l10n/de.js", "../../../node_modules/@fullcalendar/core/locales-all.js", "../../../node_modules/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/autocompleter/autocomplete.ts", "../../../node_modules/js-cookie/dist/js.cookie.js", "../../../node_modules/scrollmagic/scrollmagic/uncompressed/ScrollMagic.js", "../../../node_modules/scrollmagic/scrollmagic/uncompressed/plugins/debug.addIndicators.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/webpack/bootstrap", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/immutable/dist/immutable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/defineProperty.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/createClass.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/utils.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/inherits.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/createSuper.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/prop-types/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/export.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/global.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/reselect/es/defaultMemoize.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/reselect/es/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/typeof.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/objectSpread2.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/extends.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/window.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/function-uncurry-this.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-immutable-proptypes/dist/ImmutablePropTypes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/an-object.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/fails.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/path.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-is-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/function-call.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-pure.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/helpers.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/well-known-symbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/entry-virtual.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-callable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/get.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/regenerator/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-object.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/a-callable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/has-own-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/define-well-known-symbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/iterate.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/descriptors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/spec/actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/classnames/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/function-bind-context.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/createForOfIteratorHelper.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/get-built-in.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/(webpack)/buildin/global.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-object.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-define-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/helpers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/err/actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-indexed-object.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/length-of-array-like.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isObject.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/inherits/inherits_browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/safe-buffer/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/promise.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-string.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/web.dom-collections.iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_root.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/js-yaml/dist/js-yaml.mjs", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/classof.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/internal-state.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-iteration.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isObjectLike.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/get-map-iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/entries.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/url/url.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/auth/actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/objectSpread.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/create-non-enumerable-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/spec/selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/url-parse/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/url.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/create-element.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/highlight.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/light.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/javascript.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/json.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/xml.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/bash.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/yaml.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/http.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/powershell.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/agate.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/syntax-highlighting.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/arta.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/monokai.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/nord.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/obsidian.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/formdata-node/lib/cjs/browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/function-apply.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-get-own-property-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/create-property-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-user-agent.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-create.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/redefine.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/set-to-string-tag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/toString.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/eq.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isFunction.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/utils/jsonParse.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/memoize.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/layout/actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/deep-extend/lib/deep-extend.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/classof-raw.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/require-object-coercible.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-method-is-strict.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getNative.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseGetTag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isArrayLike.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/randombytes/browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/err/error-transformers/hook.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/esm/objectSpread2.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/redux/es/redux.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-v8-version.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-integer-or-infinity.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/create-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/iterators.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.string.iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/node-libs-browser/node_modules/buffer/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_Symbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_copyObject.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_toKey.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/process/browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/an-instance.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/sha.js/hash.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/serialize-error/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/samples/fn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-copy-to-clipboard/lib/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/configs/actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/safe-render/fn.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/helpers/get-parameter-schema.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/components/Context.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/utils/batch.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/utils/Subscription.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/components/Provider.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/components/connectAdvanced.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/utils/shallowEqual.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/connect/wrapMapToProps.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/connect/mapDispatchToProps.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/utils/bindActionCreators.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/connect/mapStateToProps.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/connect/mergeProps.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/connect/selectorFactory.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/connect/connect.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/hooks/useSelector.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/es/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/view/root-injects.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isEmpty.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/function-bind-native.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-method-has-species-support.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-absolute-index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/hidden-keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/add-to-unscopables.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-get-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isArguments.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isBuffer.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/keysIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/get-iterator-method.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/get-iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getTag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_castPath.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-util-is/lib/util.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/redefine-all.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/species-constructor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/new-promise-capability.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/identity.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/request-snippets/fn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/configs/helpers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/safe-render/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/safe-render/components/fallback.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/request-body.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/helpers/memoizeN.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/deep-linking/helpers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/symbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-property-is-enumerable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/indexed-object.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-property-key.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/try-to-string.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/uid.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-constructor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-define-properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/shared-key.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-get-own-property-names.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-set-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/define-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-is-node.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_Stack.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_ListCache.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_assocIndexOf.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_nativeCreate.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getMapData.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/(webpack)/buildin/module.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_isPrototype.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isTypedArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_assignValue.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_isIndex.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isSymbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIteratee.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/process-nextick-args/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/internal-metadata.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/perform.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-dom/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/last-index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/object/values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/btoa/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/online-validator-badge.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/remarkable/dist/esm/index.browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/utils.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/html-tag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/anchor-tag-builder.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/truncate/truncate-smart.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/truncate/truncate-middle.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/truncate/truncate-end.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/match/match.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/node_modules/tslib/tslib.es6.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/match/email-match.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/matcher/url-matcher.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/match/hashtag-match.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/match/mention-match.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/match/phone-match.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/match/url-match.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/matcher/matcher.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/regex-lib.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/matcher/tld-regex.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/matcher/email-matcher.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/matcher/url-match-validator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/matcher/hashtag-matcher.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/matcher/phone-matcher.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/matcher/mention-matcher.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/htmlParser/parse-html.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/autolinker/dist/es2015/autolinker.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/remarkable/dist/esm/linkify.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/providers/markdown.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-immutable-pure-component/lib/react-immutable-pure-component.es.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/model.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/node_modules/qs/lib/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/dompurify/dist/purify.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-symbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/native-symbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/get-method.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/shared.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/shared-store.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/document-create-element.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-species-create.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-string-tag-support.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/inspect-source.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/enum-bug-keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-slice-simple.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-get-own-property-symbols.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/well-known-symbol-wrapped.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/define-iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_Map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_MapCache.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseAssignValue.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_cloneArrayBuffer.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getPrototype.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isLength.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseUnary.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_nodeUtil.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/array/is-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_arrayPush.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getSymbols.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseGet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_isKey.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/events/events.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/readable-browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/reflect/construct.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/a-constructor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/get-intrinsic/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/function-bind/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/node_modules/qs/lib/formats.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/web.url-search-params.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/upperFirst.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/err/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/err/reducers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/err/error-transformers/transformers/not-of-type.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/err/error-transformers/transformers/parameter-oneof.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/err/selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/layout/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/layout/reducers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/layout/selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/layout/spec-extensions/wrap-selector.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/spec/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/spec/reducers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/spec/wrap-actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/view/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/node_modules/react-is/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/view/fn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/samples/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/request-snippets/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/request-snippets/selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/request-snippets/request-snippets.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/logs/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/swagger-js/configs-wrap-actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/auth/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/auth/reducers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/auth/selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/auth/spec-wrap-actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/util/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/download-url.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/configs/spec-actions.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/configs/selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/configs/reducers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/deep-linking/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/deep-linking/layout.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/deep-linking/operation-wrapper.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/deep-linking/operation-tag-wrapper.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/filter/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/filter/opsFilter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/on-complete/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/safe-render/components/error-boundary.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/spec-extensions/wrap-selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/auth-extensions/wrap-selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/spec-extensions/selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/callbacks.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/operation-link.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/servers.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/servers-container.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/request-body-editor.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/http-auth.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/components/operation-servers.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/wrap-components/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/wrap-components/markdown.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/wrap-components/auth-item.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/wrap-components/version-stamp.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/wrap-components/online-validator-badge.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/wrap-components/model.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/wrap-components/json-schema-string.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/selectors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/oas3/reducers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/all.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/execute/oas3/style-serializer.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/http/fold-formdata-to-request.browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/http/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/fast-json-patch/module/helpers.mjs", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/fast-json-patch/module/core.mjs", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/fast-json-patch/module/duplex.mjs", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/fast-json-patch/index.mjs", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/lib/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/lib/create-error.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/helpers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/constants.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/lib/refs.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/lib/all-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/lib/parameters.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/lib/properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/lib/context-tree.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/specmap/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/resolver.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/node_modules/is-plain-object/dist/is-plain-object.mjs", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/execute/swagger2/parameter-builders.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/execute/oas3/content-serializer.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/execute/oas3/parameter-builders.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/execute/oas3/build-request.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/execute/swagger2/build-request.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/execute/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/es/subtree-resolver/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/swagger-js/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/swagger-config.yaml", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins/configs/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/some.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/get.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/date/now.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/set.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lowlight/lib/core.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/url-search-params.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/toLower.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-debounce-input/lib/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/toArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.concat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/use-symbol-as-uid.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/ie8-dom-define.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-forced.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/v8-prototype-define-bug.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-length.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-keys-internal.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/html.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-get-own-property-names-external.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/native-weak-map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/function-name.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/create-iterator-constructor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/iterators-core.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/correct-prototype-getter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/string-multibyte.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/isarray/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/define-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/function-bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/assign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-assign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/array/is-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/object-assign/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/redux-immutable/dist/utilities/getStateName.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_freeGlobal.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_toSource.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_assignMergeValue.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_defineProperty.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseFor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_cloneBuffer.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_cloneTypedArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_Uint8Array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_copyArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_initCloneObject.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_overArg.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isPlainObject.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_safeGet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_arrayLikeKeys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_overRest.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_setToString.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_isIterateeCall.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/array/from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/array/from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/iterator-close.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-array-iterator-method.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/check-correctness-of-iteration.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-sort.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/not-a-regexp.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/correct-is-regexp-logic.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/whitespaces.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_arrayMap.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseSlice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_hasUnicode.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_arrayReduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIsEqual.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_equalArrays.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_arraySome.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getAllKeys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseGetAllKeys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/stubArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseKeys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_isStrictComparable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_matchesStrictComparable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/toNumber.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseEach.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/node-libs-browser/node_modules/string_decoder/lib/string_decoder.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/create.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/isNativeReflectConstruct.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/map/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/collection.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-is-extensible.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/set-species.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/map-upsert.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/sha.js/sha256.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/sha.js/sha512.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-symbols.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/own-keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/promise/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.aggregate-error.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/native-promise-constructor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/task.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-is-ios.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/promise-resolve.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.promise.all-settled.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.promise.any.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-to-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getSymbolsIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getAllKeysIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/arrayLikeToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/cross-fetch/dist/browser-polyfill.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/node_modules/qs/lib/utils.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/native-url.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/img/rolling-load.svg", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/redux-immutable/dist/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/merge.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@braintree/sanitize-url/dist/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/camelCase.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/find.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/xml/lib/xml.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/wrapNativeSuper.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/css.escape/css.escape.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/sha.js/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/reduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isString.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/debounce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/omit.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/repeat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/toConsumableArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/extends.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/highlight.js/lib/languages/json.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/highlight.js/lib/languages/javascript.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/highlight.js/lib/languages/xml.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/highlight.js/lib/languages/yaml.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/highlight.js/lib/languages/http.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/highlight.js/lib/languages/bash.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/highlight.js/lib/languages/powershell.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/deepmerge/dist/cjs.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/traverse/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/node_modules/cookie/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/zenscroll/zenscroll.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/fill.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/zipObject.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/js-file-download/file-download.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js-stable/instance/values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/xml-but-prettier/dist/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/symbol/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/symbol/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/symbol/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/symbol/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/to-primitive.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/ordinary-to-primitive.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/set-global.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-species-constructor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/object-to-string.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.async-iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.has-instance.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.match.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.match-all.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.replace.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.search.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.species.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.split.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.to-primitive.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.to-string-tag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.symbol.unscopables.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.json.to-string-tag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/a-possible-prototype.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/dom-iterables.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.symbol.dispose.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.symbol.matcher.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.symbol.metadata.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.symbol.observable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.symbol.replace-all.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/symbol/iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/symbol/iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/symbol/iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/symbol/iterator.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/concat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/concat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/concat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/last-index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/last-index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/last-index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.last-index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-last-index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/json/stringify.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/json/stringify.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.json.stringify.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/base64-js/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/ieee754/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/define-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/define-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/define-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.define-property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/function/virtual/bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.function.bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/assign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.assign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/is-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.is-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/reduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/reduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/reduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.reduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-reduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react/cjs/react.production.min.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/redux-immutable/dist/combineReducers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/redux-immutable/dist/utilities/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/redux-immutable/dist/utilities/getUnexpectedInvocationParameterMessage.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/redux-immutable/dist/utilities/validateNextState.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseMerge.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_listCacheClear.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_listCacheDelete.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_listCacheGet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_listCacheHas.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_listCacheSet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_stackClear.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_stackDelete.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_stackGet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_stackHas.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_stackSet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIsNative.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getRawTag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_objectToString.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_isMasked.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_coreJsData.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getValue.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_mapCacheClear.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_Hash.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_hashClear.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_hashDelete.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_hashGet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_hashHas.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_hashSet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_mapCacheDelete.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_isKeyable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_mapCacheGet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_mapCacheHas.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_mapCacheSet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_createBaseFor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseMergeDeep.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseCreate.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIsArguments.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isArrayLikeObject.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/stubFalse.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIsTypedArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/toPlainObject.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseTimes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseKeysIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_nativeKeysIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_createAssigner.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseRest.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_apply.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseSetToString.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/constant.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_shortOut.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/array/is-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/array/is-array.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/get-iterator-method.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/get-iterator-method.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/get-iterator-method.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/get-iterator-method.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/array/from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/array/from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/instance/slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/instance/slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/instance/slice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/entries.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/array/virtual/entries.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/entries.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/array/virtual/for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/sort.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/sort.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/sort.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.sort.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-ff-version.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-is-ie-or-edge.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-webkit-version.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/some.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/some.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/some.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.some.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/string/virtual/includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.string.includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-regexp.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/find.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/find.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/find.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.find.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/starts-with.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/starts-with.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/string/virtual/starts-with.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.string.starts-with.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/trim.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/trim.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/string/virtual/trim.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.string.trim.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/string-trim.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/string-trim-forced.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/capitalize.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseToString.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_createCaseFirst.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_castSlice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_stringToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_asciiToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_unicodeToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_createCompounder.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/deburr.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_deburrLetter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_basePropertyOf.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/words.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_asciiWords.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_hasUnicodeWord.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_unicodeWords.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_createFind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseMatches.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIsMatch.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIsEqualDeep.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_SetCache.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_setCacheAdd.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_setCacheHas.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_cacheHas.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_equalByTag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_mapToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_setToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_equalObjects.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_arrayFilter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_nativeKeys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_DataView.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_Promise.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_Set.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_WeakMap.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_getMatchData.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseMatchesProperty.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_stringToPath.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_memoizeCapped.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/hasIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseHasIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_hasPath.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/property.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseProperty.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_basePropertyDeep.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/findIndex.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseFindIndex.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/toInteger.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/toFinite.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseTrim.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_trimmedEndIndex.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseSome.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseForOwn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_createBaseEach.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/xml/lib/escapeForXML.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/BufferList.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/timers-browserify/main.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/setimmediate/setImmediate.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/util-deprecate/browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/writable-browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/duplex-browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/transform.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/stream-browserify/node_modules/readable-stream/passthrough.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/reflect/get.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/reflect/get.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/reflect/get.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/reflect/get.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/reflect/get.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.reflect.get.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/is-data-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/get-own-property-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/get-own-property-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/get-own-property-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/get-own-property-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/superPropBase.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/set-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/set-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/set-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/set-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.set-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/get-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/get-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/get-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/get-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.get-prototype-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/create.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/create.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/create.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/create.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.create.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/reflect/construct.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/reflect/construct.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/reflect/construct.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/reflect/construct.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.reflect.construct.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/map/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/map/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/map/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-buffer-non-extensible.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/freezing.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/collection-strong.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/collection-from.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/collection-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.delete-all.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/collection-delete-all.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.emplace.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/map-emplace.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.every.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.find.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.find-key.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.group-by.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.includes.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/same-value-zero.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.key-by.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.key-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.map-keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.map-values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.merge.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.reduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.some.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.update.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.upsert.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.map.update-or-insert.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/isNativeFunction.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/instance/index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/instance/index-of.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/construct.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/instance/bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/instance/bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/instance/bind.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/every.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/every.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/every.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.every.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/array/virtual/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/find-index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/find-index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/find-index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.find-index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/sha.js/sha.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/sha.js/sha1.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/sha.js/sha224.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/sha.js/sha384.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseReduce.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/keys.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/get-own-property-symbols.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/get-own-property-symbols.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/get-own-property-symbols.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/get-own-property-symbols.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/instance/filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/instance/filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/instance/filter.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/instance/for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/instance/for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/instance/for-each.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-descriptors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/get-own-property-descriptors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/get-own-property-descriptors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/get-own-property-descriptors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/get-own-property-descriptors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/define-properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/define-properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/define-properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/define-properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/define-properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.define-properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/promise.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/promise/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/promise/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/promise/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/copy-constructor-properties.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/clear-error-stack.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/install-error-cause.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/normalize-string-argument.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/error-stack-installable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.promise.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/microtask.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-is-ios-pebble.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-is-webos-webkit.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/host-report-errors.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/queue.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/engine-is-browser.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.promise.finally.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.aggregate-error.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.promise.all-settled.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.promise.try.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/esnext.promise.any.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/regenerator-runtime/runtime.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/date/now.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/date/now.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.date.now.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/requires-port/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/querystringify/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/now.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseSet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime-corejs3/core-js/object/assign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/features/object/assign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/actual/object/assign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-dom/cjs/react-dom.production.min.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/scheduler/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/scheduler/cjs/scheduler.production.min.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseClone.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_arrayEach.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseAssign.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseAssignIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_copySymbols.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_copySymbolsIn.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_initCloneArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_initCloneByTag.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_cloneDataView.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_cloneRegExp.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_cloneSymbol.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isMap.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIsMap.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/isSet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseIsSet.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseUnset.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/last.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_parent.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_customOmitClone.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_flatRest.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/flatten.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseFlatten.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_isFlattenable.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/repeat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/repeat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/string/virtual/repeat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.string.repeat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/string-repeat.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-copy-to-clipboard/lib/Component.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/copy-to-clipboard/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/toggle-selection/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/highlight.js/lib/core.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/fault/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/format/format.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/iterableToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/@babel/runtime/helpers/defineProperty.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/object/entries.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/object/entries.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.object.entries.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/node_modules/qs/lib/stringify.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/side-channel/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/has-symbols/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/has-symbols/shams.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/function-bind/implementation.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/has/src/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/call-bind/callBound.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/call-bind/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/object-inspect/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/swagger-client/node_modules/qs/lib/parse.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/splice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/splice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/splice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.splice.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/weak-map/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/weak-map/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.weak-map.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/collection-weak.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/url-search-params/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/web/url-search-params.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/validate-arguments-length.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/node-libs-browser/node_modules/punycode/punycode.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/url/util.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/querystring-es3/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/querystring-es3/decode.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/querystring-es3/encode.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/url/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/web/url.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/web.url.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/string-punycode-to-ascii.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/set-timeout.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/web.timers.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/fill.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/instance/fill.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/fill.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/modules/es.array.fill.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/internals/array-fill.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash/_baseZipObject.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/instance/values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/stable/array/virtual/values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/core-js-pure/es/array/virtual/values.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/repeat-string/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/react-debounce-input/lib/Component.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/node_modules/lodash.debounce/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/plugins sync /.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/system.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/containers/OperationContainer.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/app.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/authorization-popup.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/authorize-btn.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/containers/authorize-btn.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/authorize-operation-btn.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/auths.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/auth-item.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/error.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/api-key-auth.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/basic-auth.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/example.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/examples-select.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/examples-select-value-retainer.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/auth/oauth2.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/oauth2-authorize.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/clear.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/live-response.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/operations.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/utils/url.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/operation-tag.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/operation.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/operation-summary.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/operation-summary-method.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/operation-summary-path.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/operation-extensions.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/operation-extension-row.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/highlight-code.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/responses.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/helpers/create-html-ready-id.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/response.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/response-extension.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/response-body.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/parameters/parameters.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/parameter-extension.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/parameter-include-empty.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/parameter-row.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/execute.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/headers.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/errors.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/content-type.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/layout-utils.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/overview.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/initialized-input.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/info.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/containers/info.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/jump-to-path.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/footer.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/containers/filter.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/param-body.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/curl.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/schemes.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/containers/schemes.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/model-collapse.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/model-example.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/model-wrapper.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/models.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/enum-model.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/object-model.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/array-model.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/primitive-model.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/property.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/try-it-out-button.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/version-pragma-filter.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/version-stamp.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/deep-link.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/svg-assets.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/components/layouts/base.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/json-schema-components.jsx", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/presets/base.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/presets/apis.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/core/index.js", "../../../node_modules/swagger-ui/dist/webpack:/SwaggerUIBundle/src/index.js", "../../../node_modules/core-js/modules/_global.js", "../../../node_modules/core-js/modules/_core.js", "../../../node_modules/core-js/modules/_is-object.js", "../../../node_modules/core-js/modules/_an-object.js", "../../../node_modules/core-js/modules/_fails.js", "../../../node_modules/core-js/modules/_descriptors.js", "../../../node_modules/core-js/modules/_dom-create.js", "../../../node_modules/core-js/modules/_ie8-dom-define.js", "../../../node_modules/core-js/modules/_to-primitive.js", "../../../node_modules/core-js/modules/_object-dp.js", "../../../node_modules/core-js/modules/_property-desc.js", "../../../node_modules/core-js/modules/_hide.js", "../../../node_modules/core-js/modules/_has.js", "../../../node_modules/core-js/modules/_uid.js", "../../../node_modules/core-js/modules/_library.js", "../../../node_modules/core-js/modules/_shared.js", "../../../node_modules/core-js/modules/_function-to-string.js", "../../../node_modules/core-js/modules/_redefine.js", "../../../node_modules/core-js/modules/_a-function.js", "../../../node_modules/core-js/modules/_ctx.js", "../../../node_modules/core-js/modules/_export.js", "../../../node_modules/core-js/modules/_cof.js", "../../../node_modules/core-js/modules/_iobject.js", "../../../node_modules/core-js/modules/_defined.js", "../../../node_modules/core-js/modules/_to-object.js", "../../../node_modules/core-js/modules/_to-integer.js", "../../../node_modules/core-js/modules/_to-length.js", "../../../node_modules/core-js/modules/_is-array.js", "../../../node_modules/core-js/modules/_wks.js", "../../../node_modules/core-js/modules/_array-species-constructor.js", "../../../node_modules/core-js/modules/_array-species-create.js", "../../../node_modules/core-js/modules/_array-methods.js", "../../../node_modules/core-js/modules/_add-to-unscopables.js", "../../../node_modules/core-js/modules/es6.array.find.js", "../../../node_modules/core-js/fn/array/find.js", "../../../node_modules/core-js/modules/es6.array.find-index.js", "../../../node_modules/core-js/fn/array/find-index.js", "../../../node_modules/core-js/modules/_string-at.js", "../../../node_modules/core-js/modules/_iterators.js", "../../../node_modules/core-js/modules/_to-iobject.js", "../../../node_modules/core-js/modules/_to-absolute-index.js", "../../../node_modules/core-js/modules/_array-includes.js", "../../../node_modules/core-js/modules/_shared-key.js", "../../../node_modules/core-js/modules/_object-keys-internal.js", "../../../node_modules/core-js/modules/_enum-bug-keys.js", "../../../node_modules/core-js/modules/_object-keys.js", "../../../node_modules/core-js/modules/_object-dps.js", "../../../node_modules/core-js/modules/_html.js", "../../../node_modules/core-js/modules/_object-create.js", "../../../node_modules/core-js/modules/_set-to-string-tag.js", "../../../node_modules/core-js/modules/_iter-create.js", "../../../node_modules/core-js/modules/_object-gpo.js", "../../../node_modules/core-js/modules/_iter-define.js", "../../../node_modules/core-js/modules/es6.string.iterator.js", "../../../node_modules/core-js/modules/_iter-call.js", "../../../node_modules/core-js/modules/_is-array-iter.js", "../../../node_modules/core-js/modules/_create-property.js", "../../../node_modules/core-js/modules/_classof.js", "../../../node_modules/core-js/modules/core.get-iterator-method.js", "../../../node_modules/core-js/modules/_iter-detect.js", "../../../node_modules/core-js/modules/es6.array.from.js", "../../../node_modules/core-js/fn/array/from.js", "../../../node_modules/core-js/modules/es6.object.to-string.js", "../../../node_modules/core-js/modules/_iter-step.js", "../../../node_modules/core-js/modules/es6.array.iterator.js", "../../../node_modules/core-js/modules/web.dom.iterable.js", "../../../node_modules/core-js/modules/_redefine-all.js", "../../../node_modules/core-js/modules/_an-instance.js", "../../../node_modules/core-js/modules/_for-of.js", "../../../node_modules/core-js/modules/_set-species.js", "../../../node_modules/core-js/modules/_meta.js", "../../../node_modules/core-js/modules/_validate-collection.js", "../../../node_modules/core-js/modules/_collection-strong.js", "../../../node_modules/core-js/modules/_object-pie.js", "../../../node_modules/core-js/modules/_object-gopd.js", "../../../node_modules/core-js/modules/_set-proto.js", "../../../node_modules/core-js/modules/_inherit-if-required.js", "../../../node_modules/core-js/modules/_collection.js", "../../../node_modules/core-js/modules/es6.map.js", "../../../node_modules/core-js/modules/_array-from-iterable.js", "../../../node_modules/core-js/modules/_collection-to-json.js", "../../../node_modules/core-js/modules/es7.map.to-json.js", "../../../node_modules/core-js/modules/_set-collection-of.js", "../../../node_modules/core-js/modules/es7.map.of.js", "../../../node_modules/core-js/modules/_set-collection-from.js", "../../../node_modules/core-js/modules/es7.map.from.js", "../../../node_modules/core-js/fn/map.js", "../../../node_modules/core-js/modules/_object-gops.js", "../../../node_modules/core-js/modules/_object-assign.js", "../../../node_modules/core-js/modules/es6.object.assign.js", "../../../node_modules/core-js/fn/object/assign.js", "../../../node_modules/core-js/modules/_species-constructor.js", "../../../node_modules/core-js/modules/_invoke.js", "../../../node_modules/core-js/modules/_task.js", "../../../node_modules/core-js/modules/_microtask.js", "../../../node_modules/core-js/modules/_new-promise-capability.js", "../../../node_modules/core-js/modules/_perform.js", "../../../node_modules/core-js/modules/_user-agent.js", "../../../node_modules/core-js/modules/_promise-resolve.js", "../../../node_modules/core-js/modules/es6.promise.js", "../../../node_modules/core-js/modules/es7.promise.finally.js", "../../../node_modules/core-js/modules/es7.promise.try.js", "../../../node_modules/core-js/fn/promise.js", "../../../node_modules/core-js/modules/es6.set.js", "../../../node_modules/core-js/modules/es7.set.to-json.js", "../../../node_modules/core-js/modules/es7.set.of.js", "../../../node_modules/core-js/modules/es7.set.from.js", "../../../node_modules/core-js/fn/set.js", "../../javascript/packs/jquery-tooltipster.js", "../../../node_modules/croppie/croppie.js", "../../javascript/config/jquery.js", "../../javascript/config/rails_ujs.js", "../../javascript/config/tooltipster.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../javascript/config/turbo.js", "../../javascript/config/jquery_bar_rating.js", "../../javascript/packs/jquery-ui.min.js", "../../javascript/packs/nested_sortable.js", "../../javascript/config/moment.js", "../../../node_modules/chartkick/chart.js/chart.esm.js", "../../../node_modules/@kurkle/color/dist/color.esm.js", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.core.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.math.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.collection.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.extras.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.easing.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.color.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.animations.defaults.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.layouts.defaults.js", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.intl.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.ticks.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.scale.defaults.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.defaults.js", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.canvas.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.options.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.config.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.curve.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.dom.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.interpolation.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.rtl.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.segment.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.animator.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.animation.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.animations.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.datasetController.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.bar.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.bubble.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.doughnut.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.line.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.polarArea.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.pie.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.radar.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.scatter.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.adapters.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.interaction.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.layouts.js", "../../../node_modules/chartkick/node_modules/chart.js/src/platform/platform.base.js", "../../../node_modules/chartkick/node_modules/chart.js/src/platform/platform.basic.js", "../../../node_modules/chartkick/node_modules/chart.js/src/platform/platform.dom.js", "../../../node_modules/chartkick/node_modules/chart.js/src/platform/index.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.element.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.scale.autoskip.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.scale.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.typedRegistry.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.registry.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.plugins.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.config.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.controller.js", "../../../node_modules/chartkick/node_modules/chart.js/src/elements/element.arc.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/elements/element.line.js", "../../../node_modules/chartkick/node_modules/chart.js/src/elements/element.point.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/elements/element.bar.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.colors.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.decimation.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.segment.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.helper.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.options.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.target.stack.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/simpleArc.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.target.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.drawing.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/index.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.legend.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.title.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.subtitle.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.tooltip.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.category.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.linearbase.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.linear.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.logarithmic.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.radialLinear.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.time.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.timeseries.js", "../../../node_modules/chartkick/node_modules/chart.js/src/index.ts", "../../../node_modules/chartkick/node_modules/chart.js/auto/auto.js", "../../../node_modules/date-fns/constants.js", "../../../node_modules/date-fns/constructFrom.js", "../../../node_modules/date-fns/toDate.js", "../../../node_modules/date-fns/addDays.js", "../../../node_modules/date-fns/addMonths.js", "../../../node_modules/date-fns/addMilliseconds.js", "../../../node_modules/date-fns/addHours.js", "../../../node_modules/date-fns/_lib/defaultOptions.js", "../../../node_modules/date-fns/startOfWeek.js", "../../../node_modules/date-fns/startOfISOWeek.js", "../../../node_modules/date-fns/getISOWeekYear.js", "../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "../../../node_modules/date-fns/_lib/normalizeDates.js", "../../../node_modules/date-fns/startOfDay.js", "../../../node_modules/date-fns/differenceInCalendarDays.js", "../../../node_modules/date-fns/startOfISOWeekYear.js", "../../../node_modules/date-fns/addMinutes.js", "../../../node_modules/date-fns/addQuarters.js", "../../../node_modules/date-fns/addSeconds.js", "../../../node_modules/date-fns/addWeeks.js", "../../../node_modules/date-fns/addYears.js", "../../../node_modules/date-fns/compareAsc.js", "../../../node_modules/date-fns/isDate.js", "../../../node_modules/date-fns/isValid.js", "../../../node_modules/date-fns/differenceInCalendarMonths.js", "../../../node_modules/date-fns/differenceInCalendarYears.js", "../../../node_modules/date-fns/differenceInDays.js", "../../../node_modules/date-fns/_lib/getRoundingMethod.js", "../../../node_modules/date-fns/differenceInHours.js", "../../../node_modules/date-fns/differenceInMilliseconds.js", "../../../node_modules/date-fns/differenceInMinutes.js", "../../../node_modules/date-fns/endOfDay.js", "../../../node_modules/date-fns/endOfMonth.js", "../../../node_modules/date-fns/isLastDayOfMonth.js", "../../../node_modules/date-fns/differenceInMonths.js", "../../../node_modules/date-fns/differenceInQuarters.js", "../../../node_modules/date-fns/differenceInSeconds.js", "../../../node_modules/date-fns/differenceInWeeks.js", "../../../node_modules/date-fns/differenceInYears.js", "../../../node_modules/date-fns/startOfQuarter.js", "../../../node_modules/date-fns/startOfMonth.js", "../../../node_modules/date-fns/endOfYear.js", "../../../node_modules/date-fns/startOfYear.js", "../../../node_modules/date-fns/endOfHour.js", "../../../node_modules/date-fns/endOfWeek.js", "../../../node_modules/date-fns/endOfMinute.js", "../../../node_modules/date-fns/endOfQuarter.js", "../../../node_modules/date-fns/endOfSecond.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js", "../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js", "../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/localize.js", "../../../node_modules/date-fns/locale/_lib/buildMatchFn.js", "../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/match.js", "../../../node_modules/date-fns/locale/en-US.js", "../../../node_modules/date-fns/getDayOfYear.js", "../../../node_modules/date-fns/getISOWeek.js", "../../../node_modules/date-fns/getWeekYear.js", "../../../node_modules/date-fns/startOfWeekYear.js", "../../../node_modules/date-fns/getWeek.js", "../../../node_modules/date-fns/_lib/addLeadingZeros.js", "../../../node_modules/date-fns/_lib/format/lightFormatters.js", "../../../node_modules/date-fns/_lib/format/formatters.js", "../../../node_modules/date-fns/_lib/format/longFormatters.js", "../../../node_modules/date-fns/_lib/protectedTokens.js", "../../../node_modules/date-fns/format.js", "../../../node_modules/date-fns/getDefaultOptions.js", "../../../node_modules/date-fns/getISODay.js", "../../../node_modules/date-fns/transpose.js", "../../../node_modules/date-fns/parse/_lib/Setter.js", "../../../node_modules/date-fns/parse/_lib/Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/EraParser.js", "../../../node_modules/date-fns/parse/_lib/constants.js", "../../../node_modules/date-fns/parse/_lib/utils.js", "../../../node_modules/date-fns/parse/_lib/parsers/YearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/MonthParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js", "../../../node_modules/date-fns/setWeek.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js", "../../../node_modules/date-fns/setISOWeek.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DateParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js", "../../../node_modules/date-fns/setDay.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js", "../../../node_modules/date-fns/setISODay.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/SecondParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js", "../../../node_modules/date-fns/parse/_lib/parsers.js", "../../../node_modules/date-fns/parse.js", "../../../node_modules/date-fns/startOfHour.js", "../../../node_modules/date-fns/startOfMinute.js", "../../../node_modules/date-fns/startOfSecond.js", "../../../node_modules/date-fns/parseISO.js", "../../../node_modules/chartkick/node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js", "../../javascript/config/chartkick.js", "../../../node_modules/@popperjs/core/lib/index.js", "../../../node_modules/@popperjs/core/lib/enums.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/math.js", "../../../node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/within.js", "../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/debounce.js", "../../../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../node_modules/@popperjs/core/lib/createPopper.js", "../../../node_modules/@popperjs/core/lib/popper-lite.js", "../../../node_modules/@popperjs/core/lib/popper.js", "../../../node_modules/bootstrap/js/src/util/index.js", "../../../node_modules/bootstrap/js/src/dom/event-handler.js", "../../../node_modules/bootstrap/js/src/dom/data.js", "../../../node_modules/bootstrap/js/src/dom/manipulator.js", "../../../node_modules/bootstrap/js/src/util/config.js", "../../../node_modules/bootstrap/js/src/base-component.js", "../../../node_modules/bootstrap/js/src/util/component-functions.js", "../../../node_modules/bootstrap/js/src/alert.js", "../../../node_modules/bootstrap/js/src/button.js", "../../../node_modules/bootstrap/js/src/dom/selector-engine.js", "../../../node_modules/bootstrap/js/src/util/swipe.js", "../../../node_modules/bootstrap/js/src/carousel.js", "../../../node_modules/bootstrap/js/src/collapse.js", "../../../node_modules/bootstrap/js/src/dropdown.js", "../../../node_modules/bootstrap/js/src/util/scrollbar.js", "../../../node_modules/bootstrap/js/src/util/backdrop.js", "../../../node_modules/bootstrap/js/src/util/focustrap.js", "../../../node_modules/bootstrap/js/src/modal.js", "../../../node_modules/bootstrap/js/src/offcanvas.js", "../../../node_modules/bootstrap/js/src/util/sanitizer.js", "../../../node_modules/bootstrap/js/src/util/template-factory.js", "../../../node_modules/bootstrap/js/src/tooltip.js", "../../../node_modules/bootstrap/js/src/popover.js", "../../../node_modules/bootstrap/js/src/scrollspy.js", "../../../node_modules/bootstrap/js/src/tab.js", "../../../node_modules/bootstrap/js/src/toast.js", "../../javascript/config/bootstrap.js", "../../javascript/config/bootstrap-select.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js", "../../javascript/channels/consumer.js", "../../javascript/controllers/application.js", "../../../node_modules/morphdom/dist/morphdom-esm.js", "../../../node_modules/stimulus_reflex/node_modules/cable_ready/dist/cable_ready.js", "../../../node_modules/stimulus_reflex/dist/stimulus_reflex.js", "../../javascript/controllers/application_controller.js", "../../javascript/packs/global_functions.js", "../../javascript/packs/logger.js", "../../javascript/config/stimulus_reflex.js", "../../../node_modules/i18n-js/src/I18n.ts", "../../../node_modules/i18n-js/src/Locales.ts", "../../../node_modules/make-plural/plurals.mjs", "../../../node_modules/i18n-js/src/Pluralization.ts", "../../../node_modules/i18n-js/src/helpers/camelCaseKeys.ts", "../../../node_modules/i18n-js/src/helpers/isSet.ts", "../../../node_modules/i18n-js/src/helpers/createTranslationOptions.ts", "../../../node_modules/bignumber.js/bignumber.mjs", "../../../node_modules/i18n-js/src/helpers/expandRoundMode.ts", "../../../node_modules/i18n-js/src/helpers/formatNumber.ts", "../../../node_modules/i18n-js/src/helpers/roundNumber.ts", "../../../node_modules/i18n-js/src/helpers/getFullScope.ts", "../../../node_modules/i18n-js/src/helpers/inferType.ts", "../../../node_modules/i18n-js/src/helpers/interpolate.ts", "../../../node_modules/i18n-js/src/helpers/lookup.ts", "../../../node_modules/i18n-js/src/helpers/numberToDelimited.ts", "../../../node_modules/i18n-js/src/helpers/numberToHuman.ts", "../../../node_modules/i18n-js/src/helpers/numberToHumanSize.ts", "../../../node_modules/i18n-js/src/helpers/parseDate.ts", "../../../node_modules/i18n-js/src/helpers/pluralize.ts", "../../../node_modules/i18n-js/src/helpers/strftime.ts", "../../../node_modules/i18n-js/src/helpers/timeAgoInWords.ts", "../../../node_modules/i18n-js/src/MissingTranslation.ts", "../../javascript/js_locales/de.json", "../../javascript/js_locales/en.json", "../../javascript/config/i18n.js", "../../javascript/packs/video_player.js", "../../javascript/config/video_player.js", "../../javascript/packs/trix.js", "../../javascript/config/trix.js", "../../javascript/config/google_maps.js", "../../javascript/config/select2.js", "../../javascript/academy/form_initialization.js", "../../javascript/academy/index.js", "../../javascript/academy/product_events.js", "../../javascript/academy/inputs/index.js", "../../javascript/academy/inputs/jquery.tokeninput.js", "../../javascript/academy/inputs/association_autocomplete_input.js", "../../javascript/controllers/agreements_controller.js", "../../javascript/packs/ajax.js", "../../javascript/controllers/appointments_controller.js", "../../javascript/packs/param.js", "../../javascript/controllers/booking_controller.js", "../../javascript/controllers/bootstrap_controller.js", "../../../node_modules/sortablejs/modular/sortable.esm.js", "../../javascript/controllers/bulk_tag_modal_controller.js", "../../javascript/controllers/bulk_tag_mode_controller.js", "../../javascript/controllers/card_selection_controller.js", "../../javascript/controllers/certificate_layout_editor_controller.js", "../../javascript/controllers/character_counter_controller.js", "../../javascript/controllers/chat_controller.js", "../../javascript/controllers/clear_filter_controller.js", "../../javascript/controllers/collapsible_controller.js", "../../javascript/controllers/color_palette_controller.js", "../../javascript/controllers/color_picker_controller.js", "../../../node_modules/@svgdotjs/svg.js/src/utils/methods.js", "../../../node_modules/@svgdotjs/svg.js/src/utils/utils.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/namespaces.js", "../../../node_modules/@svgdotjs/svg.js/src/utils/window.js", "../../../node_modules/@svgdotjs/svg.js/src/types/Base.js", "../../../node_modules/@svgdotjs/svg.js/src/utils/adopter.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/optional/arrange.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/regex.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/optional/class.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/optional/css.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/optional/data.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/optional/memory.js", "../../../node_modules/@svgdotjs/svg.js/src/types/Color.js", "../../../node_modules/@svgdotjs/svg.js/src/types/Point.js", "../../../node_modules/@svgdotjs/svg.js/src/types/Matrix.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/parser.js", "../../../node_modules/@svgdotjs/svg.js/src/types/Box.js", "../../../node_modules/@svgdotjs/svg.js/src/types/List.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/selector.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/event.js", "../../../node_modules/@svgdotjs/svg.js/src/types/EventTarget.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/defaults.js", "../../../node_modules/@svgdotjs/svg.js/src/types/SVGArray.js", "../../../node_modules/@svgdotjs/svg.js/src/types/SVGNumber.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/attr.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Dom.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Element.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/optional/sugar.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/optional/transform.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Container.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Defs.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Shape.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/circled.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Ellipse.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Fragment.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/gradiented.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Gradient.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Pattern.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Image.js", "../../../node_modules/@svgdotjs/svg.js/src/types/PointArray.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/pointed.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Line.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Marker.js", "../../../node_modules/@svgdotjs/svg.js/src/animation/Controller.js", "../../../node_modules/@svgdotjs/svg.js/src/utils/pathParser.js", "../../../node_modules/@svgdotjs/svg.js/src/types/PathArray.js", "../../../node_modules/@svgdotjs/svg.js/src/animation/Morphable.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Path.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/poly.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Polygon.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Polyline.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Rect.js", "../../../node_modules/@svgdotjs/svg.js/src/animation/Queue.js", "../../../node_modules/@svgdotjs/svg.js/src/animation/Animator.js", "../../../node_modules/@svgdotjs/svg.js/src/animation/Timeline.js", "../../../node_modules/@svgdotjs/svg.js/src/animation/Runner.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Svg.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Symbol.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/textable.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Text.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Tspan.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Circle.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/ClipPath.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/ForeignObject.js", "../../../node_modules/@svgdotjs/svg.js/src/modules/core/containerGeometry.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/G.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/A.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Mask.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Stop.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Style.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/TextPath.js", "../../../node_modules/@svgdotjs/svg.js/src/elements/Use.js", "../../../node_modules/@svgdotjs/svg.js/src/main.js", "../../javascript/controllers/company_select_controller.js", "../../javascript/controllers/consumable_controller.js", "../../javascript/controllers/consumable_group_controller.js", "../../javascript/controllers/date_display_controller.js", "../../javascript/controllers/date_selection_controller.js", "../../javascript/controllers/debug_toggle_controller.js", "../../javascript/controllers/definition_controller.js", "../../javascript/controllers/delete_controller.js", "../../javascript/controllers/drop_file_controller.js", "../../../node_modules/just-extend/index.esm.js", "../../../node_modules/dropzone/dist/src/dropzone.js", "../../../node_modules/dropzone/dist/src/emitter.js", "../../../node_modules/dropzone/dist/src/options.js", "../../../node_modules/dropzone/dist/node_modules/@parcel/runtime-js/lib/bundles/runtime-044f6de40395a564.js", "../../javascript/controllers/drop_it_controller.js", "../../javascript/controllers/dropdown_controller.js", "../../javascript/controllers/dropzone_controller.js", "../../javascript/controllers/dsl_import_controller.js", "../../javascript/controllers/event_specifics_controller.js", "../../javascript/controllers/file_controller.js", "../../javascript/controllers/filter_sort_controller.js", "../../javascript/controllers/flatpickr_controller.js", "../../../node_modules/flatpickr/dist/esm/types/options.js", "../../../node_modules/flatpickr/dist/esm/l10n/default.js", "../../../node_modules/flatpickr/dist/esm/utils/index.js", "../../../node_modules/flatpickr/dist/esm/utils/dom.js", "../../../node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../node_modules/flatpickr/dist/esm/utils/dates.js", "../../../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../node_modules/flatpickr/dist/esm/index.js", "../../../node_modules/stimulus-flatpickr/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/stimulus-flatpickr/src/utils.js", "../../../node_modules/stimulus-flatpickr/src/config_options.js", "../../../node_modules/stimulus-flatpickr/src/events.js", "../../../node_modules/stimulus-flatpickr/src/elements.js", "../../../node_modules/stimulus-flatpickr/src/strftime_mapping.js", "../../../node_modules/stimulus-flatpickr/src/index.js", "../../javascript/controllers/form_controller.js", "../../javascript/controllers/frame_data_controller.js", "../../javascript/controllers/full_calendar_controller.js", "../../../node_modules/tslib/tslib.es6.mjs", "../../../node_modules/preact/src/util.js", "../../../node_modules/preact/src/options.js", "../../../node_modules/preact/src/create-element.js", "../../../node_modules/preact/src/diff/props.js", "../../../node_modules/preact/src/component.js", "../../../node_modules/preact/src/create-context.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/src/diff/children.js", "../../../node_modules/preact/src/diff/index.js", "../../../node_modules/preact/src/render.js", "../../../node_modules/preact/src/clone-element.js", "../../../node_modules/preact/src/diff/catch-error.js", "../../../node_modules/preact/hooks/src/index.js", "../../../node_modules/preact/compat/src/util.js", "../../../node_modules/preact/compat/src/PureComponent.js", "../../../node_modules/preact/compat/src/memo.js", "../../../node_modules/preact/compat/src/forwardRef.js", "../../../node_modules/preact/compat/src/Children.js", "../../../node_modules/preact/compat/src/suspense.js", "../../../node_modules/preact/compat/src/suspense-list.js", "../../../node_modules/preact/compat/src/portals.js", "../../../node_modules/preact/compat/src/render.js", "../../../node_modules/preact/compat/src/index.js", "../../../node_modules/@fullcalendar/core/vdom.js", "../../../node_modules/@fullcalendar/common/vdom.js", "../../../node_modules/@fullcalendar/common/src/api/EventSourceApi.ts", "../../../node_modules/@fullcalendar/common/src/util/dom-manip.ts", "../../../node_modules/@fullcalendar/common/src/util/dom-event.ts", "../../../node_modules/@fullcalendar/common/src/util/misc.ts", "../../../node_modules/@fullcalendar/common/src/datelib/marker.ts", "../../../node_modules/@fullcalendar/common/src/structs/event-instance.ts", "../../../node_modules/@fullcalendar/common/src/util/object.ts", "../../../node_modules/@fullcalendar/common/src/structs/recurring-event.ts", "../../../node_modules/@fullcalendar/common/src/datelib/duration.ts", "../../../node_modules/@fullcalendar/common/src/datelib/formatting-utils.ts", "../../../node_modules/@fullcalendar/common/src/util/array.ts", "../../../node_modules/@fullcalendar/common/src/util/memoize.ts", "../../../node_modules/@fullcalendar/common/src/datelib/formatting-native.ts", "../../../node_modules/@fullcalendar/common/src/datelib/zoned-marker.ts", "../../../node_modules/@fullcalendar/common/src/datelib/DateFormatter.ts", "../../../node_modules/@fullcalendar/common/src/datelib/formatting-cmd.ts", "../../../node_modules/@fullcalendar/common/src/datelib/formatting-func.ts", "../../../node_modules/@fullcalendar/common/src/datelib/formatting.ts", "../../../node_modules/@fullcalendar/common/src/options.ts", "../../../node_modules/@fullcalendar/common/src/structs/event-store.ts", "../../../node_modules/@fullcalendar/common/src/structs/constraint.ts", "../../../node_modules/@fullcalendar/common/src/util/html.ts", "../../../node_modules/@fullcalendar/common/src/component/event-ui.ts", "../../../node_modules/@fullcalendar/common/src/structs/event-parse.ts", "../../../node_modules/@fullcalendar/common/src/util/date.ts", "../../../node_modules/@fullcalendar/common/src/datelib/date-range.ts", "../../../node_modules/@fullcalendar/common/src/component/event-rendering.ts", "../../../node_modules/@fullcalendar/common/src/structs/date-span.ts", "../../../node_modules/@fullcalendar/common/src/calendar-utils.ts", "../../../node_modules/@fullcalendar/common/src/structs/event-mutation.ts", "../../../node_modules/@fullcalendar/common/src/ViewApi.ts", "../../../node_modules/@fullcalendar/common/src/structs/event-source-parse.ts", "../../../node_modules/@fullcalendar/common/src/reducers/current-date.ts", "../../../node_modules/@fullcalendar/common/src/CalendarApi.tsx", "../../../node_modules/@fullcalendar/common/src/api/EventApi.ts", "../../../node_modules/@fullcalendar/common/src/datelib/calendar-system.ts", "../../../node_modules/@fullcalendar/common/src/datelib/parsing.ts", "../../../node_modules/@fullcalendar/common/src/datelib/env.ts", "../../../node_modules/@fullcalendar/common/src/global-locales.ts", "../../../node_modules/@fullcalendar/common/src/datelib/locale.ts", "../../../node_modules/@fullcalendar/common/src/formatting-api.ts", "../../../node_modules/@fullcalendar/common/src/structs/business-hours.ts", "../../../node_modules/@fullcalendar/common/src/util/geom.ts", "../../../node_modules/@fullcalendar/common/src/util/table-styling.tsx", "../../../node_modules/@fullcalendar/common/src/component/event-splitting.ts", "../../../node_modules/@fullcalendar/common/src/component/date-rendering.tsx", "../../../node_modules/@fullcalendar/common/src/common/nav-link.ts", "../../../node_modules/@fullcalendar/common/src/util/scrollbar-side.ts", "../../../node_modules/@fullcalendar/common/src/util/scrollbar-width.ts", "../../../node_modules/@fullcalendar/common/src/util/dom-geom.ts", "../../../node_modules/@fullcalendar/common/src/util/promise.ts", "../../../node_modules/@fullcalendar/common/src/common/Emitter.ts", "../../../node_modules/@fullcalendar/common/src/common/PositionCache.ts", "../../../node_modules/@fullcalendar/common/src/common/scroll-controller.ts", "../../../node_modules/@fullcalendar/common/src/theme/Theme.ts", "../../../node_modules/@fullcalendar/common/src/ScrollResponder.ts", "../../../node_modules/@fullcalendar/common/src/ViewContext.ts", "../../../node_modules/@fullcalendar/common/src/vdom-util.tsx", "../../../node_modules/@fullcalendar/common/src/component/DateComponent.ts", "../../../node_modules/@fullcalendar/common/src/plugin-system.ts", "../../../node_modules/@fullcalendar/common/src/theme/StandardTheme.ts", "../../../node_modules/@fullcalendar/common/src/structs/view-def.ts", "../../../node_modules/@fullcalendar/common/src/common/render-hook.tsx", "../../../node_modules/@fullcalendar/common/src/common/ViewRoot.tsx", "../../../node_modules/@fullcalendar/common/src/structs/view-config.tsx", "../../../node_modules/@fullcalendar/common/src/structs/view-spec.ts", "../../../node_modules/@fullcalendar/common/src/DateProfileGenerator.ts", "../../../node_modules/@fullcalendar/common/src/reducers/view-type.ts", "../../../node_modules/@fullcalendar/common/src/reducers/options.ts", "../../../node_modules/@fullcalendar/common/src/reducers/date-profile.ts", "../../../node_modules/@fullcalendar/common/src/reducers/eventSources.ts", "../../../node_modules/@fullcalendar/common/src/reducers/eventStore.ts", "../../../node_modules/@fullcalendar/common/src/reducers/date-selection.ts", "../../../node_modules/@fullcalendar/common/src/reducers/selected-event.ts", "../../../node_modules/@fullcalendar/common/src/reducers/event-drag.ts", "../../../node_modules/@fullcalendar/common/src/reducers/event-resize.ts", "../../../node_modules/@fullcalendar/common/src/toolbar-parse.ts", "../../../node_modules/@fullcalendar/common/src/event-sources/array-event-source.ts", "../../../node_modules/@fullcalendar/common/src/event-sources/func-event-source.ts", "../../../node_modules/@fullcalendar/common/src/util/requestJson.ts", "../../../node_modules/@fullcalendar/common/src/event-sources/json-feed-event-source-refiners.ts", "../../../node_modules/@fullcalendar/common/src/event-sources/json-feed-event-source.ts", "../../../node_modules/@fullcalendar/common/src/structs/recurring-event-simple-refiners.ts", "../../../node_modules/@fullcalendar/common/src/structs/recurring-event-simple.ts", "../../../node_modules/@fullcalendar/common/src/option-change-handlers.ts", "../../../node_modules/@fullcalendar/common/src/dates-set.ts", "../../../node_modules/@fullcalendar/common/src/event-crud.ts", "../../../node_modules/@fullcalendar/common/src/global-plugins.ts", "../../../node_modules/@fullcalendar/common/src/util/DelayedRunner.ts", "../../../node_modules/@fullcalendar/common/src/util/TaskRunner.ts", "../../../node_modules/@fullcalendar/common/src/reducers/title-formatting.ts", "../../../node_modules/@fullcalendar/common/src/reducers/CalendarDataManager.ts", "../../../node_modules/@fullcalendar/common/src/component/CalendarDataProvider.ts", "../../../node_modules/@fullcalendar/common/src/View.ts", "../../../node_modules/@fullcalendar/common/src/datelib/timezone.ts", "../../../node_modules/@fullcalendar/common/src/seg-hierarchy.ts", "../../../node_modules/@fullcalendar/common/src/interactions/interaction.ts", "../../../node_modules/@fullcalendar/common/src/interactions/ElementDragging.ts", "../../../node_modules/@fullcalendar/common/src/global-config.ts", "../../../node_modules/@fullcalendar/common/src/structs/drag-meta.ts", "../../../node_modules/@fullcalendar/common/src/ToolbarSection.tsx", "../../../node_modules/@fullcalendar/common/src/Toolbar.tsx", "../../../node_modules/@fullcalendar/common/src/ViewContainer.tsx", "../../../node_modules/@fullcalendar/common/src/interactions/EventClicking.ts", "../../../node_modules/@fullcalendar/common/src/interactions/EventHovering.ts", "../../../node_modules/@fullcalendar/common/src/CalendarContent.tsx", "../../../node_modules/@fullcalendar/common/src/CalendarRoot.tsx", "../../../node_modules/@fullcalendar/common/src/common/table-utils.ts", "../../../node_modules/@fullcalendar/common/src/common/table-cell-util.tsx", "../../../node_modules/@fullcalendar/common/src/common/TableDateCell.tsx", "../../../node_modules/@fullcalendar/common/src/common/TableDowCell.tsx", "../../../node_modules/@fullcalendar/common/src/NowTimer.ts", "../../../node_modules/@fullcalendar/common/src/common/DayHeader.tsx", "../../../node_modules/@fullcalendar/common/src/common/DaySeriesModel.ts", "../../../node_modules/@fullcalendar/common/src/common/DayTableModel.ts", "../../../node_modules/@fullcalendar/common/src/common/slicing-utils.ts", "../../../node_modules/@fullcalendar/common/src/validation.ts", "../../../node_modules/@fullcalendar/common/src/scrollgrid/Scroller.tsx", "../../../node_modules/@fullcalendar/common/src/util/RefMap.ts", "../../../node_modules/@fullcalendar/common/src/scrollgrid/util.tsx", "../../../node_modules/@fullcalendar/common/src/scrollgrid/SimpleScrollGrid.tsx", "../../../node_modules/@fullcalendar/common/src/common/EventRoot.tsx", "../../../node_modules/@fullcalendar/common/src/common/StandardEvent.tsx", "../../../node_modules/@fullcalendar/common/src/common/NowIndicatorRoot.tsx", "../../../node_modules/@fullcalendar/common/src/common/DayCellContent.tsx", "../../../node_modules/@fullcalendar/common/src/common/DayCellRoot.tsx", "../../../node_modules/@fullcalendar/common/src/common/bg-fill.tsx", "../../../node_modules/@fullcalendar/common/src/common/WeekNumberRoot.tsx", "../../../node_modules/@fullcalendar/common/src/common/Popover.tsx", "../../../node_modules/@fullcalendar/common/src/common/MorePopover.tsx", "../../../node_modules/@fullcalendar/common/src/common/MoreLinkRoot.tsx", "../../../node_modules/@fullcalendar/common/src/main.ts", "../../../node_modules/@fullcalendar/core/src/Calendar.tsx", "../../../node_modules/@fullcalendar/daygrid/src/TableView.tsx", "../../../node_modules/@fullcalendar/daygrid/src/TableSeg.ts", "../../../node_modules/@fullcalendar/daygrid/src/TableCellTop.tsx", "../../../node_modules/@fullcalendar/daygrid/src/event-rendering.ts", "../../../node_modules/@fullcalendar/daygrid/src/TableBlockEvent.tsx", "../../../node_modules/@fullcalendar/daygrid/src/TableListItemEvent.tsx", "../../../node_modules/@fullcalendar/daygrid/src/TableCellMoreLink.tsx", "../../../node_modules/@fullcalendar/daygrid/src/TableCell.tsx", "../../../node_modules/@fullcalendar/daygrid/src/event-placement.ts", "../../../node_modules/@fullcalendar/daygrid/src/TableRow.tsx", "../../../node_modules/@fullcalendar/daygrid/src/Table.tsx", "../../../node_modules/@fullcalendar/daygrid/src/DayTableSlicer.tsx", "../../../node_modules/@fullcalendar/daygrid/src/DayTable.tsx", "../../../node_modules/@fullcalendar/daygrid/src/DayTableView.tsx", "../../../node_modules/@fullcalendar/daygrid/src/TableDateProfileGenerator.ts", "../../../node_modules/@fullcalendar/daygrid/src/main.ts", "../../../node_modules/@fullcalendar/interaction/src/dnd/PointerDragging.ts", "../../../node_modules/@fullcalendar/interaction/src/dnd/ElementMirror.ts", "../../../node_modules/@fullcalendar/interaction/src/ScrollGeomCache.ts", "../../../node_modules/@fullcalendar/interaction/src/ElementScrollGeomCache.ts", "../../../node_modules/@fullcalendar/interaction/src/WindowScrollGeomCache.ts", "../../../node_modules/@fullcalendar/interaction/src/dnd/AutoScroller.ts", "../../../node_modules/@fullcalendar/interaction/src/dnd/FeaturefulElementDragging.ts", "../../../node_modules/@fullcalendar/interaction/src/OffsetTracker.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions/HitDragging.ts", "../../../node_modules/@fullcalendar/interaction/src/utils.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions/DateClicking.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions/DateSelecting.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions/EventDragging.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions/EventResizing.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions/UnselectAuto.ts", "../../../node_modules/@fullcalendar/interaction/src/options.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions-external/ExternalElementDragging.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions-external/ExternalDraggable.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions-external/InferredElementDragging.ts", "../../../node_modules/@fullcalendar/interaction/src/interactions-external/ThirdPartyDraggable.ts", "../../../node_modules/@fullcalendar/interaction/src/main.ts", "../../javascript/controllers/google_maps_controller.js", "../../javascript/controllers/group_definition_controller.js", "../../javascript/controllers/group_definition_delete_handler_controller.js", "../../javascript/controllers/group_selector_controller.js", "../../javascript/controllers/groups_collapse_controller.js", "../../javascript/controllers/collapse_state_manager.js", "../../javascript/controllers/groups_controller.js", "../../javascript/controllers/hide_controller.js", "../../javascript/controllers/image_source_switcher_controller.js", "../../javascript/controllers/journey_containers/visibility_controller.js", "../../javascript/controllers/journey_controller.js", "../../javascript/controllers/journey_hierarchy_config_controller.js", "../../javascript/controllers/journey_versions_controller.js", "../../javascript/controllers/learn_card_collection_controller.js", "../../javascript/controllers/learn_unit_select_controller.js", "../../javascript/controllers/light_dark_mode_switch_controller.js", "../../javascript/controllers/line_chart_controller.js", "../../../node_modules/chart.js/dist/chunks/helpers.segment.mjs", "../../../node_modules/chart.js/dist/chart.mjs", "../../../node_modules/chart.js/auto/auto.mjs", "../../javascript/controllers/mc_sortable_controller.js", "../../javascript/controllers/media_library_controller.js", "../../javascript/controllers/migration_management_controller.js", "../../javascript/controllers/modal_controller.js", "../../javascript/controllers/modal_tag_fix_controller.js", "../../javascript/controllers/multiplechoice_controller.js", "../../javascript/controllers/multiselect_controller.js", "../../javascript/controllers/navigation_controller.js", "../../javascript/controllers/nested_form_controller.js", "../../javascript/controllers/page_controller.js", "../../javascript/controllers/pagination_controller.js", "../../javascript/controllers/pain_point_modal_controller.js", "../../javascript/controllers/password_toggle_controller.js", "../../javascript/controllers/pdf_certificate_template_sortable_controller.js", "../../javascript/controllers/pdf_template_form_controller.js", "../../javascript/controllers/peak_collapsible_controller.js", "../../javascript/controllers/permission_controller.js", "../../javascript/controllers/permission_delete_handler_controller.js", "../../javascript/controllers/phase_builder_controller.js", "../../javascript/controllers/phase_change_controller.js", "../../javascript/controllers/phase_line_controller.js", "../../javascript/packs/phase_line.js", "../../javascript/packs/draggable.js", "../../javascript/packs/trash_can.js", "../../javascript/controllers/places_autocomplete_controller.js", "../../../node_modules/stimulus-places-autocomplete/dist/stimulus-places-autocomplete.es.js", "../../javascript/controllers/popover_controller.js", "../../javascript/controllers/profile_controller.js", "../../javascript/controllers/props_filter_controller.js", "../../javascript/controllers/publish_hover_controller.js", "../../javascript/controllers/rating_controller.js", "../../javascript/controllers/ratings_controller.js", "../../javascript/controllers/rooms_controller.js", "../../javascript/controllers/scroll/animation_controller.js", "../../javascript/controllers/select2_controller.js", "../../javascript/controllers/selection_controller.js", "../../javascript/controllers/selectpicker_controller.js", "../../javascript/controllers/skills_controller.js", "../../javascript/controllers/slide_form_controller.js", "../../javascript/controllers/slide_page_controller.js", "../../javascript/controllers/supervising_controller.js", "../../javascript/controllers/swagger_controller.js", "../../javascript/controllers/switch_controller.js", "../../javascript/controllers/sync_form_fields_controller.js", "../../javascript/controllers/tables/column_groups_controller.js", "../../javascript/controllers/tables/index_controller.js", "../../javascript/controllers/tag_controller.js", "../../javascript/controllers/tag_input_controller.js", "../../javascript/controllers/tag_modal_controller.js", "../../javascript/controllers/template_reset_form_controller.js", "../../javascript/controllers/translation/deepl_controller.js", "../../javascript/controllers/translation/translatables_controller.js", "../../javascript/controllers/trix_image_zoom_controller.js", "../../javascript/controllers/turbo_debugger_controller.js", "../../javascript/controllers/user_controller.js", "../../javascript/controllers/users_collapse_controller.js", "../../javascript/controllers/users_controller.js", "../../javascript/controllers/validations/boolean_validation_controller.js", "../../javascript/controllers/validations/field_validation_controller.js", "../../javascript/controllers/validations/validation_states.js", "../../javascript/controllers/validations/file_validation_controller.js", "../../javascript/controllers/validations/group_validation_controller.js", "../../javascript/controllers/validations/journey_validation_controller.js", "../../javascript/controllers/video_audio_js_controller.js", "../../javascript/controllers/video_player_controller.js", "../../javascript/controllers/view_switcher_controller.js", "../../javascript/controllers/wizard/quiz_controller.js", "../../javascript/controllers/workaround_fix_controller.js", "rails:/app/app/javascript/controllers/**/*_controller.js", "../../javascript/controllers/index.js", "../../javascript/packs/share.js", "../../../node_modules/@stimulus/polyfills/index.js", "../../../node_modules/element-closest/element-closest.js", "../../../node_modules/mutation-observer-inner-html-shim/mutation-observer-inner-html-shim.js", "../../javascript/packs/application.js", "../../javascript/js_locales/hu.json", "../../components/ai_stuff/phase_structure/component_controller.js", "../../components/blueprints/blueprint_modal/component_controller.js", "../../components/blueprints/blueprint_release_modal/component_controller.js", "../../components/blueprints/modal/component_controller.js", "../../components/button/multi_state/component_controller.js", "../../components/certificate/verification/component_controller.js", "../../components/certificates/received_certificates/component_controller.js", "../../components/certificates/received_certificates/modal/component_controller.js", "../../components/charts/radar_chart/component_controller.js", "../../components/editor/lock_modal/component_controller.js", "../../components/form/icon_checkbox/component_controller.js", "../../components/form/image_cropper/component_controller.js", "../../components/form/image_cropper_modal/component_controller.js", "../../components/form/inline_edit_mini/component_controller.js", "../../components/form/key_value_editor/component_controller.js", "../../components/form/tag_filter/component_controller.js", "../../components/form/trix_editor/component_controller.js", "../../components/items/container/component_controller.js", "../../components/items/item/component_controller.js", "../../components/items/journey/component_controller.js", "../../components/items/unit/component_controller.js", "../../components/journey_builder/consumable_groups/component_controller.js", "../../components/journey_builder/general_condition/component_controller.js", "../../components/journey_builder/learn_type_dependent/component_controller.js", "../../components/journey_containers/show/component_controller.js", "../../components/journey_filter/component_controller.js", "../../components/journey_hierarchy/available_journeys/component_controller.js", "../../components/journey_hierarchy/component_controller.js", "../../components/journey_hierarchy/container_card/component_controller.js", "../../components/journey_hierarchy/container_detail/component_controller.js", "../../components/journey_hierarchy/container_node/component_controller.js", "../../components/journey_hierarchy/level_card/component_controller.js", "../../components/journeys/bulk_rename_modal/component_controller.js", "../../components/journeys/container_section/component_controller.js", "../../components/journeys/journey_visibility_and_usage/component_controller.js", "../../components/journeys/level_explorer/component_controller.js", "../../components/journeys/level_explorer/unassigned_journeys/component_controller.js", "../../components/journeys/root_container_order/component_controller.js", "../../components/learnables/html_package/component_controller.js", "../../components/learnables/slide/component_controller.js", "../../components/modals/delete/component_controller.js", "../../components/permissions/role_selector/component_controller.js", "../../components/representation/accordion_section/component_controller.js", "../../components/representation/collapsible_section/component_controller.js", "../../components/skill_management/main_skill_category/component_controller.js", "../../components/skill_management/skill_development/component_controller.js", "../../../node_modules/@jsplumb/browser-ui/js/jsplumb.browser-ui.es.js", "../../components/skill_management/skill_rating_modal/component_controller.js", "../../components/translation/modal/component_controller.js", "../../components/trix/image_zoom_modal/component_controller.js", "../../components/unit/work_through/component_controller.js", "../../components/view_mode_switcher/component_controller.js", "../../components/wizard/ltd_info_modal/component_controller.js", "../../components/wizard/ltd_modal/component_controller.js", "../../components/wizard/ltd_quiz_page/component_controller.js", "../../components/wizard/question_type_color_order/component_controller.js", "../../components/wizard/question_type_radio/component_controller.js", "../../components/wizard/question_type_right_wrong/component_controller.js", "../../components/wizard/question_type_sort/component_controller.js", "rails:/app/app/components/**/component_controller.js", "../../javascript/components.js", "../../javascript/turbo_confirm_modal.js"],
  "sourcesContent": ["/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.isContentEditable = function(element) {\n        var isEditable;\n        isEditable = false;\n        while (true) {\n          if (element.isContentEditable) {\n            isEditable = true;\n            break;\n          }\n          element = element.parentElement;\n          if (!element) {\n            break;\n          }\n        }\n        return isEditable;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (isContentEditable(element)) {\n          return;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (isContentEditable(element)) {\n          return;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var isContentEditable, stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      isContentEditable = Rails.isContentEditable;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        if (isContentEditable(this)) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isContentEditable, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        if (isContentEditable(element)) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n", "/*! tooltipster v4.2.8 */!function(a,b){\"function\"==typeof define&&define.amd?define([\"jquery\"],function(a){return b(a)}):\"object\"==typeof exports?module.exports=b(require(\"jquery\")):b(jQuery)}(this,function(a){function b(a){this.$container,this.constraints=null,this.__$tooltip,this.__init(a)}function c(b,c){var d=!0;return a.each(b,function(a,e){return void 0===c[a]||b[a]!==c[a]?(d=!1,!1):void 0}),d}function d(b){var c=b.attr(\"id\"),d=c?h.window.document.getElementById(c):null;return d?d===b[0]:a.contains(h.window.document.body,b[0])}function e(){if(!g)return!1;var a=g.document.body||g.document.documentElement,b=a.style,c=\"transition\",d=[\"Moz\",\"Webkit\",\"Khtml\",\"O\",\"ms\"];if(\"string\"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e<d.length;e++)if(\"string\"==typeof b[d[e]+c])return!0;return!1}var f={animation:\"fade\",animationDuration:350,content:null,contentAsHTML:!1,contentCloning:!1,debug:!0,delay:300,delayTouch:[300,500],functionInit:null,functionBefore:null,functionReady:null,functionAfter:null,functionFormat:null,IEmin:6,interactive:!1,multiple:!1,parent:null,plugins:[\"sideTip\"],repositionOnScroll:!1,restoration:\"none\",selfDestruction:!0,theme:[],timer:0,trackerInterval:500,trackOrigin:!1,trackTooltip:!1,trigger:\"hover\",triggerClose:{click:!1,mouseleave:!1,originClick:!1,scroll:!1,tap:!1,touchleave:!1},triggerOpen:{click:!1,mouseenter:!1,tap:!1,touchstart:!1},updateAnimation:\"rotate\",zIndex:9999999},g=\"undefined\"!=typeof window?window:null,h={hasTouchCapability:!(!g||!(\"ontouchstart\"in g||g.DocumentTouch&&g.document instanceof g.DocumentTouch||g.navigator.maxTouchPoints)),hasTransitions:e(),IE:!1,semVer:\"4.2.8\",window:g},i=function(){this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__instancesLatestArr=[],this.__plugins={},this._env=h};i.prototype={__bridge:function(b,c,d){if(!c[d]){var e=function(){};e.prototype=b;var g=new e;g.__init&&g.__init(c),a.each(b,function(a,b){0!=a.indexOf(\"__\")&&(c[a]?f.debug&&console.log(\"The \"+a+\" method of the \"+d+\" plugin conflicts with another plugin or native methods\"):(c[a]=function(){return g[a].apply(g,Array.prototype.slice.apply(arguments))},c[a].bridged=g))}),c[d]=g}return this},__setWindow:function(a){return h.window=a,this},_getRuler:function(a){return new b(a)},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_plugin:function(b){var c=this;if(\"string\"==typeof b){var d=b,e=null;return d.indexOf(\".\")>0?e=c.__plugins[d]:a.each(c.__plugins,function(a,b){return b.name.substring(b.name.length-d.length-1)==\".\"+d?(e=b,!1):void 0}),e}if(b.name.indexOf(\".\")<0)throw new Error(\"Plugins must be namespaced\");return c.__plugins[b.name]=b,b.core&&c.__bridge(b.core,c,b.name),this},_trigger:function(){var a=Array.prototype.slice.apply(arguments);return\"string\"==typeof a[0]&&(a[0]={type:a[0]}),this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,a),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,a),this},instances:function(b){var c=[],d=b||\".tooltipstered\";return a(d).each(function(){var b=a(this),d=b.data(\"tooltipster-ns\");d&&a.each(d,function(a,d){c.push(b.data(d))})}),c},instancesLatest:function(){return this.__instancesLatestArr},off:function(){return this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},origins:function(b){var c=b?b+\" \":\"\";return a(c+\".tooltipstered\").toArray()},setDefaults:function(b){return a.extend(f,b),this},triggerHandler:function(){return this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.tooltipster=new i,a.Tooltipster=function(b,c){this.__callbacks={close:[],open:[]},this.__closingTime,this.__Content,this.__contentBcr,this.__destroyed=!1,this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__enabled=!0,this.__garbageCollector,this.__Geometry,this.__lastPosition,this.__namespace=\"tooltipster-\"+Math.round(1e6*Math.random()),this.__options,this.__$originParents,this.__pointerIsOverOrigin=!1,this.__previousThemes=[],this.__state=\"closed\",this.__timeouts={close:[],open:null},this.__touchEvents=[],this.__tracker=null,this._$origin,this._$tooltip,this.__init(b,c)},a.Tooltipster.prototype={__init:function(b,c){var d=this;if(d._$origin=a(b),d.__options=a.extend(!0,{},f,c),d.__optionsFormat(),!h.IE||h.IE>=d.__options.IEmin){var e=null;if(void 0===d._$origin.data(\"tooltipster-initialTitle\")&&(e=d._$origin.attr(\"title\"),void 0===e&&(e=null),d._$origin.data(\"tooltipster-initialTitle\",e)),null!==d.__options.content)d.__contentSet(d.__options.content);else{var g,i=d._$origin.attr(\"data-tooltip-content\");i&&(g=a(i)),g&&g[0]?d.__contentSet(g.first()):d.__contentSet(e)}d._$origin.removeAttr(\"title\").addClass(\"tooltipstered\"),d.__prepareOrigin(),d.__prepareGC(),a.each(d.__options.plugins,function(a,b){d._plug(b)}),h.hasTouchCapability&&a(h.window.document.body).on(\"touchmove.\"+d.__namespace+\"-triggerOpen\",function(a){d._touchRecordEvent(a)}),d._on(\"created\",function(){d.__prepareTooltip()})._on(\"repositioned\",function(a){d.__lastPosition=a.position})}else d.__options.disabled=!0},__contentInsert:function(){var a=this,b=a._$tooltip.find(\".tooltipster-content\"),c=a.__Content,d=function(a){c=a};return a._trigger({type:\"format\",content:a.__Content,format:d}),a.__options.functionFormat&&(c=a.__options.functionFormat.call(a,a,{origin:a._$origin[0]},a.__Content)),\"string\"!=typeof c||a.__options.contentAsHTML?b.empty().append(c):b.text(c),a},__contentSet:function(b){return b instanceof a&&this.__options.contentCloning&&(b=b.clone(!0)),this.__Content=b,this._trigger({type:\"updated\",content:b}),this},__destroyError:function(){throw new Error(\"This tooltip has been destroyed and cannot execute your method call.\")},__geometry:function(){var b=this,c=b._$origin,d=b._$origin.is(\"area\");if(d){var e=b._$origin.parent().attr(\"name\");c=a('img[usemap=\"#'+e+'\"]')}var f=c[0].getBoundingClientRect(),g=a(h.window.document),i=a(h.window),j=c,k={available:{document:null,window:null},document:{size:{height:g.height(),width:g.width()}},window:{scroll:{left:h.window.scrollX||h.window.document.documentElement.scrollLeft,top:h.window.scrollY||h.window.document.documentElement.scrollTop},size:{height:i.height(),width:i.width()}},origin:{fixedLineage:!1,offset:{},size:{height:f.bottom-f.top,width:f.right-f.left},usemapImage:d?c[0]:null,windowOffset:{bottom:f.bottom,left:f.left,right:f.right,top:f.top}}};if(d){var l=b._$origin.attr(\"shape\"),m=b._$origin.attr(\"coords\");if(m&&(m=m.split(\",\"),a.map(m,function(a,b){m[b]=parseInt(a)})),\"default\"!=l)switch(l){case\"circle\":var n=m[0],o=m[1],p=m[2],q=o-p,r=n-p;k.origin.size.height=2*p,k.origin.size.width=k.origin.size.height,k.origin.windowOffset.left+=r,k.origin.windowOffset.top+=q;break;case\"rect\":var s=m[0],t=m[1],u=m[2],v=m[3];k.origin.size.height=v-t,k.origin.size.width=u-s,k.origin.windowOffset.left+=s,k.origin.windowOffset.top+=t;break;case\"poly\":for(var w=0,x=0,y=0,z=0,A=\"even\",B=0;B<m.length;B++){var C=m[B];\"even\"==A?(C>y&&(y=C,0===B&&(w=y)),w>C&&(w=C),A=\"odd\"):(C>z&&(z=C,1==B&&(x=z)),x>C&&(x=C),A=\"even\")}k.origin.size.height=z-x,k.origin.size.width=y-w,k.origin.windowOffset.left+=w,k.origin.windowOffset.top+=x}}var D=function(a){k.origin.size.height=a.height,k.origin.windowOffset.left=a.left,k.origin.windowOffset.top=a.top,k.origin.size.width=a.width};for(b._trigger({type:\"geometry\",edit:D,geometry:{height:k.origin.size.height,left:k.origin.windowOffset.left,top:k.origin.windowOffset.top,width:k.origin.size.width}}),k.origin.windowOffset.right=k.origin.windowOffset.left+k.origin.size.width,k.origin.windowOffset.bottom=k.origin.windowOffset.top+k.origin.size.height,k.origin.offset.left=k.origin.windowOffset.left+k.window.scroll.left,k.origin.offset.top=k.origin.windowOffset.top+k.window.scroll.top,k.origin.offset.bottom=k.origin.offset.top+k.origin.size.height,k.origin.offset.right=k.origin.offset.left+k.origin.size.width,k.available.document={bottom:{height:k.document.size.height-k.origin.offset.bottom,width:k.document.size.width},left:{height:k.document.size.height,width:k.origin.offset.left},right:{height:k.document.size.height,width:k.document.size.width-k.origin.offset.right},top:{height:k.origin.offset.top,width:k.document.size.width}},k.available.window={bottom:{height:Math.max(k.window.size.height-Math.max(k.origin.windowOffset.bottom,0),0),width:k.window.size.width},left:{height:k.window.size.height,width:Math.max(k.origin.windowOffset.left,0)},right:{height:k.window.size.height,width:Math.max(k.window.size.width-Math.max(k.origin.windowOffset.right,0),0)},top:{height:Math.max(k.origin.windowOffset.top,0),width:k.window.size.width}};\"html\"!=j[0].tagName.toLowerCase();){if(\"fixed\"==j.css(\"position\")){k.origin.fixedLineage=!0;break}j=j.parent()}return k},__optionsFormat:function(){return\"number\"==typeof this.__options.animationDuration&&(this.__options.animationDuration=[this.__options.animationDuration,this.__options.animationDuration]),\"number\"==typeof this.__options.delay&&(this.__options.delay=[this.__options.delay,this.__options.delay]),\"number\"==typeof this.__options.delayTouch&&(this.__options.delayTouch=[this.__options.delayTouch,this.__options.delayTouch]),\"string\"==typeof this.__options.theme&&(this.__options.theme=[this.__options.theme]),null===this.__options.parent?this.__options.parent=a(h.window.document.body):\"string\"==typeof this.__options.parent&&(this.__options.parent=a(this.__options.parent)),\"hover\"==this.__options.trigger?(this.__options.triggerOpen={mouseenter:!0,touchstart:!0},this.__options.triggerClose={mouseleave:!0,originClick:!0,touchleave:!0}):\"click\"==this.__options.trigger&&(this.__options.triggerOpen={click:!0,tap:!0},this.__options.triggerClose={click:!0,tap:!0}),this._trigger(\"options\"),this},__prepareGC:function(){var b=this;return b.__options.selfDestruction?b.__garbageCollector=setInterval(function(){var c=(new Date).getTime();b.__touchEvents=a.grep(b.__touchEvents,function(a,b){return c-a.time>6e4}),d(b._$origin)||b.close(function(){b.destroy()})},2e4):clearInterval(b.__garbageCollector),b},__prepareOrigin:function(){var a=this;if(a._$origin.off(\".\"+a.__namespace+\"-triggerOpen\"),h.hasTouchCapability&&a._$origin.on(\"touchstart.\"+a.__namespace+\"-triggerOpen touchend.\"+a.__namespace+\"-triggerOpen touchcancel.\"+a.__namespace+\"-triggerOpen\",function(b){a._touchRecordEvent(b)}),a.__options.triggerOpen.click||a.__options.triggerOpen.tap&&h.hasTouchCapability){var b=\"\";a.__options.triggerOpen.click&&(b+=\"click.\"+a.__namespace+\"-triggerOpen \"),a.__options.triggerOpen.tap&&h.hasTouchCapability&&(b+=\"touchend.\"+a.__namespace+\"-triggerOpen\"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&a._open(b)})}if(a.__options.triggerOpen.mouseenter||a.__options.triggerOpen.touchstart&&h.hasTouchCapability){var b=\"\";a.__options.triggerOpen.mouseenter&&(b+=\"mouseenter.\"+a.__namespace+\"-triggerOpen \"),a.__options.triggerOpen.touchstart&&h.hasTouchCapability&&(b+=\"touchstart.\"+a.__namespace+\"-triggerOpen\"),a._$origin.on(b,function(b){!a._touchIsTouchEvent(b)&&a._touchIsEmulatedEvent(b)||(a.__pointerIsOverOrigin=!0,a._openShortly(b))})}if(a.__options.triggerClose.mouseleave||a.__options.triggerClose.touchleave&&h.hasTouchCapability){var b=\"\";a.__options.triggerClose.mouseleave&&(b+=\"mouseleave.\"+a.__namespace+\"-triggerOpen \"),a.__options.triggerClose.touchleave&&h.hasTouchCapability&&(b+=\"touchend.\"+a.__namespace+\"-triggerOpen touchcancel.\"+a.__namespace+\"-triggerOpen\"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&(a.__pointerIsOverOrigin=!1)})}return a},__prepareTooltip:function(){var b=this,c=b.__options.interactive?\"auto\":\"\";return b._$tooltip.attr(\"id\",b.__namespace).css({\"pointer-events\":c,zIndex:b.__options.zIndex}),a.each(b.__previousThemes,function(a,c){b._$tooltip.removeClass(c)}),a.each(b.__options.theme,function(a,c){b._$tooltip.addClass(c)}),b.__previousThemes=a.merge([],b.__options.theme),b},__scrollHandler:function(b){var c=this;if(c.__options.triggerClose.scroll)c._close(b);else if(d(c._$origin)&&d(c._$tooltip)){var e=null;if(b.target===h.window.document)c.__Geometry.origin.fixedLineage||c.__options.repositionOnScroll&&c.reposition(b);else{e=c.__geometry();var f=!1;if(\"fixed\"!=c._$origin.css(\"position\")&&c.__$originParents.each(function(b,c){var d=a(c),g=d.css(\"overflow-x\"),h=d.css(\"overflow-y\");if(\"visible\"!=g||\"visible\"!=h){var i=c.getBoundingClientRect();if(\"visible\"!=g&&(e.origin.windowOffset.left<i.left||e.origin.windowOffset.right>i.right))return f=!0,!1;if(\"visible\"!=h&&(e.origin.windowOffset.top<i.top||e.origin.windowOffset.bottom>i.bottom))return f=!0,!1}return\"fixed\"==d.css(\"position\")?!1:void 0}),f)c._$tooltip.css(\"visibility\",\"hidden\");else if(c._$tooltip.css(\"visibility\",\"visible\"),c.__options.repositionOnScroll)c.reposition(b);else{var g=e.origin.offset.left-c.__Geometry.origin.offset.left,i=e.origin.offset.top-c.__Geometry.origin.offset.top;c._$tooltip.css({left:c.__lastPosition.coord.left+g,top:c.__lastPosition.coord.top+i})}}c._trigger({type:\"scroll\",event:b,geo:e})}return c},__stateSet:function(a){return this.__state=a,this._trigger({type:\"state\",state:a}),this},__timeoutsClear:function(){return clearTimeout(this.__timeouts.open),this.__timeouts.open=null,a.each(this.__timeouts.close,function(a,b){clearTimeout(b)}),this.__timeouts.close=[],this},__trackerStart:function(){var a=this,b=a._$tooltip.find(\".tooltipster-content\");return a.__options.trackTooltip&&(a.__contentBcr=b[0].getBoundingClientRect()),a.__tracker=setInterval(function(){if(d(a._$origin)&&d(a._$tooltip)){if(a.__options.trackOrigin){var e=a.__geometry(),f=!1;c(e.origin.size,a.__Geometry.origin.size)&&(a.__Geometry.origin.fixedLineage?c(e.origin.windowOffset,a.__Geometry.origin.windowOffset)&&(f=!0):c(e.origin.offset,a.__Geometry.origin.offset)&&(f=!0)),f||(a.__options.triggerClose.mouseleave?a._close():a.reposition())}if(a.__options.trackTooltip){var g=b[0].getBoundingClientRect();g.height===a.__contentBcr.height&&g.width===a.__contentBcr.width||(a.reposition(),a.__contentBcr=g)}}else a._close()},a.__options.trackerInterval),a},_close:function(b,c,d){var e=this,f=!0;if(e._trigger({type:\"close\",event:b,stop:function(){f=!1}}),f||d){c&&e.__callbacks.close.push(c),e.__callbacks.open=[],e.__timeoutsClear();var g=function(){a.each(e.__callbacks.close,function(a,c){c.call(e,e,{event:b,origin:e._$origin[0]})}),e.__callbacks.close=[]};if(\"closed\"!=e.__state){var i=!0,j=new Date,k=j.getTime(),l=k+e.__options.animationDuration[1];if(\"disappearing\"==e.__state&&l>e.__closingTime&&e.__options.animationDuration[1]>0&&(i=!1),i){e.__closingTime=l,\"disappearing\"!=e.__state&&e.__stateSet(\"disappearing\");var m=function(){clearInterval(e.__tracker),e._trigger({type:\"closing\",event:b}),e._$tooltip.off(\".\"+e.__namespace+\"-triggerClose\").removeClass(\"tooltipster-dying\"),a(h.window).off(\".\"+e.__namespace+\"-triggerClose\"),e.__$originParents.each(function(b,c){a(c).off(\"scroll.\"+e.__namespace+\"-triggerClose\")}),e.__$originParents=null,a(h.window.document.body).off(\".\"+e.__namespace+\"-triggerClose\"),e._$origin.off(\".\"+e.__namespace+\"-triggerClose\"),e._off(\"dismissable\"),e.__stateSet(\"closed\"),e._trigger({type:\"after\",event:b}),e.__options.functionAfter&&e.__options.functionAfter.call(e,e,{event:b,origin:e._$origin[0]}),g()};h.hasTransitions?(e._$tooltip.css({\"-moz-animation-duration\":e.__options.animationDuration[1]+\"ms\",\"-ms-animation-duration\":e.__options.animationDuration[1]+\"ms\",\"-o-animation-duration\":e.__options.animationDuration[1]+\"ms\",\"-webkit-animation-duration\":e.__options.animationDuration[1]+\"ms\",\"animation-duration\":e.__options.animationDuration[1]+\"ms\",\"transition-duration\":e.__options.animationDuration[1]+\"ms\"}),e._$tooltip.clearQueue().removeClass(\"tooltipster-show\").addClass(\"tooltipster-dying\"),e.__options.animationDuration[1]>0&&e._$tooltip.delay(e.__options.animationDuration[1]),e._$tooltip.queue(m)):e._$tooltip.stop().fadeOut(e.__options.animationDuration[1],m)}}else g()}return e},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_open:function(b,c){var e=this;if(!e.__destroying&&d(e._$origin)&&e.__enabled){var f=!0;if(\"closed\"==e.__state&&(e._trigger({type:\"before\",event:b,stop:function(){f=!1}}),f&&e.__options.functionBefore&&(f=e.__options.functionBefore.call(e,e,{event:b,origin:e._$origin[0]}))),f!==!1&&null!==e.__Content){c&&e.__callbacks.open.push(c),e.__callbacks.close=[],e.__timeoutsClear();var g,i=function(){\"stable\"!=e.__state&&e.__stateSet(\"stable\"),a.each(e.__callbacks.open,function(a,b){b.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}),e.__callbacks.open=[]};if(\"closed\"!==e.__state)g=0,\"disappearing\"===e.__state?(e.__stateSet(\"appearing\"),h.hasTransitions?(e._$tooltip.clearQueue().removeClass(\"tooltipster-dying\").addClass(\"tooltipster-show\"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i)):e._$tooltip.stop().fadeIn(i)):\"stable\"==e.__state&&i();else{if(e.__stateSet(\"appearing\"),g=e.__options.animationDuration[0],e.__contentInsert(),e.reposition(b,!0),h.hasTransitions?(e._$tooltip.addClass(\"tooltipster-\"+e.__options.animation).addClass(\"tooltipster-initial\").css({\"-moz-animation-duration\":e.__options.animationDuration[0]+\"ms\",\"-ms-animation-duration\":e.__options.animationDuration[0]+\"ms\",\"-o-animation-duration\":e.__options.animationDuration[0]+\"ms\",\"-webkit-animation-duration\":e.__options.animationDuration[0]+\"ms\",\"animation-duration\":e.__options.animationDuration[0]+\"ms\",\"transition-duration\":e.__options.animationDuration[0]+\"ms\"}),setTimeout(function(){\"closed\"!=e.__state&&(e._$tooltip.addClass(\"tooltipster-show\").removeClass(\"tooltipster-initial\"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i))},0)):e._$tooltip.css(\"display\",\"none\").fadeIn(e.__options.animationDuration[0],i),e.__trackerStart(),a(h.window).on(\"resize.\"+e.__namespace+\"-triggerClose\",function(b){var c=a(document.activeElement);(c.is(\"input\")||c.is(\"textarea\"))&&a.contains(e._$tooltip[0],c[0])||e.reposition(b)}).on(\"scroll.\"+e.__namespace+\"-triggerClose\",function(a){e.__scrollHandler(a)}),e.__$originParents=e._$origin.parents(),e.__$originParents.each(function(b,c){a(c).on(\"scroll.\"+e.__namespace+\"-triggerClose\",function(a){e.__scrollHandler(a)})}),e.__options.triggerClose.mouseleave||e.__options.triggerClose.touchleave&&h.hasTouchCapability){e._on(\"dismissable\",function(a){a.dismissable?a.delay?(m=setTimeout(function(){e._close(a.event)},a.delay),e.__timeouts.close.push(m)):e._close(a):clearTimeout(m)});var j=e._$origin,k=\"\",l=\"\",m=null;e.__options.interactive&&(j=j.add(e._$tooltip)),e.__options.triggerClose.mouseleave&&(k+=\"mouseenter.\"+e.__namespace+\"-triggerClose \",l+=\"mouseleave.\"+e.__namespace+\"-triggerClose \"),e.__options.triggerClose.touchleave&&h.hasTouchCapability&&(k+=\"touchstart.\"+e.__namespace+\"-triggerClose\",l+=\"touchend.\"+e.__namespace+\"-triggerClose touchcancel.\"+e.__namespace+\"-triggerClose\"),j.on(l,function(a){if(e._touchIsTouchEvent(a)||!e._touchIsEmulatedEvent(a)){var b=\"mouseleave\"==a.type?e.__options.delay:e.__options.delayTouch;e._trigger({delay:b[1],dismissable:!0,event:a,type:\"dismissable\"})}}).on(k,function(a){!e._touchIsTouchEvent(a)&&e._touchIsEmulatedEvent(a)||e._trigger({dismissable:!1,event:a,type:\"dismissable\"})})}e.__options.triggerClose.originClick&&e._$origin.on(\"click.\"+e.__namespace+\"-triggerClose\",function(a){e._touchIsTouchEvent(a)||e._touchIsEmulatedEvent(a)||e._close(a)}),(e.__options.triggerClose.click||e.__options.triggerClose.tap&&h.hasTouchCapability)&&setTimeout(function(){if(\"closed\"!=e.__state){var b=\"\",c=a(h.window.document.body);e.__options.triggerClose.click&&(b+=\"click.\"+e.__namespace+\"-triggerClose \"),e.__options.triggerClose.tap&&h.hasTouchCapability&&(b+=\"touchend.\"+e.__namespace+\"-triggerClose\"),c.on(b,function(b){e._touchIsMeaningfulEvent(b)&&(e._touchRecordEvent(b),e.__options.interactive&&a.contains(e._$tooltip[0],b.target)||e._close(b))}),e.__options.triggerClose.tap&&h.hasTouchCapability&&c.on(\"touchstart.\"+e.__namespace+\"-triggerClose\",function(a){e._touchRecordEvent(a)})}},0),e._trigger(\"ready\"),e.__options.functionReady&&e.__options.functionReady.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}if(e.__options.timer>0){var m=setTimeout(function(){e._close()},e.__options.timer+g);e.__timeouts.close.push(m)}}}return e},_openShortly:function(a){var b=this,c=!0;if(\"stable\"!=b.__state&&\"appearing\"!=b.__state&&!b.__timeouts.open&&(b._trigger({type:\"start\",event:a,stop:function(){c=!1}}),c)){var d=0==a.type.indexOf(\"touch\")?b.__options.delayTouch:b.__options.delay;d[0]?b.__timeouts.open=setTimeout(function(){b.__timeouts.open=null,b.__pointerIsOverOrigin&&b._touchIsMeaningfulEvent(a)?(b._trigger(\"startend\"),b._open(a)):b._trigger(\"startcancel\")},d[0]):(b._trigger(\"startend\"),b._open(a))}return b},_optionsExtract:function(b,c){var d=this,e=a.extend(!0,{},c),f=d.__options[b];return f||(f={},a.each(c,function(a,b){var c=d.__options[a];void 0!==c&&(f[a]=c)})),a.each(e,function(b,c){void 0!==f[b]&&(\"object\"!=typeof c||c instanceof Array||null==c||\"object\"!=typeof f[b]||f[b]instanceof Array||null==f[b]?e[b]=f[b]:a.extend(e[b],f[b]))}),e},_plug:function(b){var c=a.tooltipster._plugin(b);if(!c)throw new Error('The \"'+b+'\" plugin is not defined');return c.instance&&a.tooltipster.__bridge(c.instance,this,c.name),this},_touchIsEmulatedEvent:function(a){for(var b=!1,c=(new Date).getTime(),d=this.__touchEvents.length-1;d>=0;d--){var e=this.__touchEvents[d];if(!(c-e.time<500))break;e.target===a.target&&(b=!0)}return b},_touchIsMeaningfulEvent:function(a){return this._touchIsTouchEvent(a)&&!this._touchSwiped(a.target)||!this._touchIsTouchEvent(a)&&!this._touchIsEmulatedEvent(a)},_touchIsTouchEvent:function(a){return 0==a.type.indexOf(\"touch\")},_touchRecordEvent:function(a){return this._touchIsTouchEvent(a)&&(a.time=(new Date).getTime(),this.__touchEvents.push(a)),this},_touchSwiped:function(a){for(var b=!1,c=this.__touchEvents.length-1;c>=0;c--){var d=this.__touchEvents[c];if(\"touchmove\"==d.type){b=!0;break}if(\"touchstart\"==d.type&&a===d.target)break}return b},_trigger:function(){var b=Array.prototype.slice.apply(arguments);return\"string\"==typeof b[0]&&(b[0]={type:b[0]}),b[0].instance=this,b[0].origin=this._$origin?this._$origin[0]:null,b[0].tooltip=this._$tooltip?this._$tooltip[0]:null,this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,b),a.tooltipster._trigger.apply(a.tooltipster,b),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,b),this},_unplug:function(b){var c=this;if(c[b]){var d=a.tooltipster._plugin(b);d.instance&&a.each(d.instance,function(a,d){c[a]&&c[a].bridged===c[b]&&delete c[a]}),c[b].__destroy&&c[b].__destroy(),delete c[b]}return c},close:function(a){return this.__destroyed?this.__destroyError():this._close(null,a),this},content:function(a){var b=this;if(void 0===a)return b.__Content;if(b.__destroyed)b.__destroyError();else if(b.__contentSet(a),null!==b.__Content){if(\"closed\"!==b.__state&&(b.__contentInsert(),b.reposition(),b.__options.updateAnimation))if(h.hasTransitions){var c=b.__options.updateAnimation;b._$tooltip.addClass(\"tooltipster-update-\"+c),setTimeout(function(){\"closed\"!=b.__state&&b._$tooltip.removeClass(\"tooltipster-update-\"+c)},1e3)}else b._$tooltip.fadeTo(200,.5,function(){\"closed\"!=b.__state&&b._$tooltip.fadeTo(200,1)})}else b._close();return b},destroy:function(){var b=this;if(b.__destroyed)b.__destroyError();else{\"closed\"!=b.__state?b.option(\"animationDuration\",0)._close(null,null,!0):b.__timeoutsClear(),b._trigger(\"destroy\"),b.__destroyed=!0,b._$origin.removeData(b.__namespace).off(\".\"+b.__namespace+\"-triggerOpen\"),a(h.window.document.body).off(\".\"+b.__namespace+\"-triggerOpen\");var c=b._$origin.data(\"tooltipster-ns\");if(c)if(1===c.length){var d=null;\"previous\"==b.__options.restoration?d=b._$origin.data(\"tooltipster-initialTitle\"):\"current\"==b.__options.restoration&&(d=\"string\"==typeof b.__Content?b.__Content:a(\"<div></div>\").append(b.__Content).html()),d&&b._$origin.attr(\"title\",d),b._$origin.removeClass(\"tooltipstered\"),b._$origin.removeData(\"tooltipster-ns\").removeData(\"tooltipster-initialTitle\")}else c=a.grep(c,function(a,c){return a!==b.__namespace}),b._$origin.data(\"tooltipster-ns\",c);b._trigger(\"destroyed\"),b._off(),b.off(),b.__Content=null,b.__$emitterPrivate=null,b.__$emitterPublic=null,b.__options.parent=null,b._$origin=null,b._$tooltip=null,a.tooltipster.__instancesLatestArr=a.grep(a.tooltipster.__instancesLatestArr,function(a,c){return b!==a}),clearInterval(b.__garbageCollector)}return b},disable:function(){return this.__destroyed?(this.__destroyError(),this):(this._close(),this.__enabled=!1,this)},elementOrigin:function(){return this.__destroyed?void this.__destroyError():this._$origin[0]},elementTooltip:function(){return this._$tooltip?this._$tooltip[0]:null},enable:function(){return this.__enabled=!0,this},hide:function(a){return this.close(a)},instance:function(){return this},off:function(){return this.__destroyed||this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},open:function(a){return this.__destroyed?this.__destroyError():this._open(null,a),this},option:function(b,c){return void 0===c?this.__options[b]:(this.__destroyed?this.__destroyError():(this.__options[b]=c,this.__optionsFormat(),a.inArray(b,[\"trigger\",\"triggerClose\",\"triggerOpen\"])>=0&&this.__prepareOrigin(),\"selfDestruction\"===b&&this.__prepareGC()),this)},reposition:function(a,b){var c=this;return c.__destroyed?c.__destroyError():\"closed\"!=c.__state&&d(c._$origin)&&(b||d(c._$tooltip))&&(b||c._$tooltip.detach(),c.__Geometry=c.__geometry(),c._trigger({type:\"reposition\",event:a,helper:{geo:c.__Geometry}})),c},show:function(a){return this.open(a)},status:function(){return{destroyed:this.__destroyed,enabled:this.__enabled,open:\"closed\"!==this.__state,state:this.__state}},triggerHandler:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.fn.tooltipster=function(){var b=Array.prototype.slice.apply(arguments),c=\"You are using a single HTML element as content for several tooltips. You probably want to set the contentCloning option to TRUE.\";if(0===this.length)return this;if(\"string\"==typeof b[0]){var d=\"#*$~&\";return this.each(function(){var e=a(this).data(\"tooltipster-ns\"),f=e?a(this).data(e[0]):null;if(!f)throw new Error(\"You called Tooltipster's \\\"\"+b[0]+'\" method on an uninitialized element');if(\"function\"!=typeof f[b[0]])throw new Error('Unknown method \"'+b[0]+'\"');this.length>1&&\"content\"==b[0]&&(b[1]instanceof a||\"object\"==typeof b[1]&&null!=b[1]&&b[1].tagName)&&!f.__options.contentCloning&&f.__options.debug&&console.log(c);var g=f[b[0]](b[1],b[2]);return g!==f||\"instance\"===b[0]?(d=g,!1):void 0}),\"#*$~&\"!==d?d:this}a.tooltipster.__instancesLatestArr=[];var e=b[0]&&void 0!==b[0].multiple,g=e&&b[0].multiple||!e&&f.multiple,h=b[0]&&void 0!==b[0].content,i=h&&b[0].content||!h&&f.content,j=b[0]&&void 0!==b[0].contentCloning,k=j&&b[0].contentCloning||!j&&f.contentCloning,l=b[0]&&void 0!==b[0].debug,m=l&&b[0].debug||!l&&f.debug;return this.length>1&&(i instanceof a||\"object\"==typeof i&&null!=i&&i.tagName)&&!k&&m&&console.log(c),this.each(function(){var c=!1,d=a(this),e=d.data(\"tooltipster-ns\"),f=null;e?g?c=!0:m&&(console.log(\"Tooltipster: one or more tooltips are already attached to the element below. Ignoring.\"),console.log(this)):c=!0,c&&(f=new a.Tooltipster(this,b[0]),e||(e=[]),e.push(f.__namespace),d.data(\"tooltipster-ns\",e),d.data(f.__namespace,f),f.__options.functionInit&&f.__options.functionInit.call(f,f,{origin:this}),f._trigger(\"init\")),a.tooltipster.__instancesLatestArr.push(f)}),this},b.prototype={__init:function(b){this.__$tooltip=b,this.__$tooltip.css({left:0,overflow:\"hidden\",position:\"absolute\",top:0}).find(\".tooltipster-content\").css(\"overflow\",\"auto\"),this.$container=a('<div class=\"tooltipster-ruler\"></div>').append(this.__$tooltip).appendTo(h.window.document.body)},__forceRedraw:function(){var a=this.__$tooltip.parent();this.__$tooltip.detach(),this.__$tooltip.appendTo(a)},constrain:function(a,b){return this.constraints={width:a,height:b},this.__$tooltip.css({display:\"block\",height:\"\",overflow:\"auto\",width:a}),this},destroy:function(){this.__$tooltip.detach().find(\".tooltipster-content\").css({display:\"\",overflow:\"\"}),this.$container.remove()},free:function(){return this.constraints=null,this.__$tooltip.css({display:\"\",height:\"\",overflow:\"visible\",width:\"\"}),this},measure:function(){this.__forceRedraw();var a=this.__$tooltip[0].getBoundingClientRect(),b={size:{height:a.height||a.bottom-a.top,width:a.width||a.right-a.left}};if(this.constraints){var c=this.__$tooltip.find(\".tooltipster-content\"),d=this.__$tooltip.outerHeight(),e=c[0].getBoundingClientRect(),f={height:d<=this.constraints.height,width:a.width<=this.constraints.width&&e.width>=c[0].scrollWidth-1};b.fits=f.height&&f.width}return h.IE&&h.IE<=11&&b.size.width!==h.window.document.documentElement.clientWidth&&(b.size.width=Math.ceil(b.size.width)+1),b}};var j=navigator.userAgent.toLowerCase();-1!=j.indexOf(\"msie\")?h.IE=parseInt(j.split(\"msie\")[1]):-1!==j.toLowerCase().indexOf(\"trident\")&&-1!==j.indexOf(\" rv:11\")?h.IE=11:-1!=j.toLowerCase().indexOf(\"edge/\")&&(h.IE=parseInt(j.toLowerCase().split(\"edge/\")[1]));var k=\"tooltipster.sideTip\";return a.tooltipster._plugin({name:k,instance:{__defaults:function(){return{arrow:!0,distance:6,functionPosition:null,maxWidth:null,minIntersection:16,minWidth:0,position:null,side:\"top\",viewportAware:!0}},__init:function(a){var b=this;b.__instance=a,b.__namespace=\"tooltipster-sideTip-\"+Math.round(1e6*Math.random()),b.__previousState=\"closed\",b.__options,b.__optionsFormat(),b.__instance._on(\"state.\"+b.__namespace,function(a){\"closed\"==a.state?b.__close():\"appearing\"==a.state&&\"closed\"==b.__previousState&&b.__create(),b.__previousState=a.state}),b.__instance._on(\"options.\"+b.__namespace,function(){b.__optionsFormat()}),b.__instance._on(\"reposition.\"+b.__namespace,function(a){b.__reposition(a.event,a.helper)})},__close:function(){this.__instance.content()instanceof a&&this.__instance.content().detach(),this.__instance._$tooltip.remove(),this.__instance._$tooltip=null},__create:function(){var b=a('<div class=\"tooltipster-base tooltipster-sidetip\"><div class=\"tooltipster-box\"><div class=\"tooltipster-content\"></div></div><div class=\"tooltipster-arrow\"><div class=\"tooltipster-arrow-uncropped\"><div class=\"tooltipster-arrow-border\"></div><div class=\"tooltipster-arrow-background\"></div></div></div></div>');this.__options.arrow||b.find(\".tooltipster-box\").css(\"margin\",0).end().find(\".tooltipster-arrow\").hide(),this.__options.minWidth&&b.css(\"min-width\",this.__options.minWidth+\"px\"),this.__options.maxWidth&&b.css(\"max-width\",this.__options.maxWidth+\"px\"),\nthis.__instance._$tooltip=b,this.__instance._trigger(\"created\")},__destroy:function(){this.__instance._off(\".\"+self.__namespace)},__optionsFormat:function(){var b=this;if(b.__options=b.__instance._optionsExtract(k,b.__defaults()),b.__options.position&&(b.__options.side=b.__options.position),\"object\"!=typeof b.__options.distance&&(b.__options.distance=[b.__options.distance]),b.__options.distance.length<4&&(void 0===b.__options.distance[1]&&(b.__options.distance[1]=b.__options.distance[0]),void 0===b.__options.distance[2]&&(b.__options.distance[2]=b.__options.distance[0]),void 0===b.__options.distance[3]&&(b.__options.distance[3]=b.__options.distance[1])),b.__options.distance={top:b.__options.distance[0],right:b.__options.distance[1],bottom:b.__options.distance[2],left:b.__options.distance[3]},\"string\"==typeof b.__options.side){var c={top:\"bottom\",right:\"left\",bottom:\"top\",left:\"right\"};b.__options.side=[b.__options.side,c[b.__options.side]],\"left\"==b.__options.side[0]||\"right\"==b.__options.side[0]?b.__options.side.push(\"top\",\"bottom\"):b.__options.side.push(\"right\",\"left\")}6===a.tooltipster._env.IE&&b.__options.arrow!==!0&&(b.__options.arrow=!1)},__reposition:function(b,c){var d,e=this,f=e.__targetFind(c),g=[];e.__instance._$tooltip.detach();var h=e.__instance._$tooltip.clone(),i=a.tooltipster._getRuler(h),j=!1,k=e.__instance.option(\"animation\");switch(k&&h.removeClass(\"tooltipster-\"+k),a.each([\"window\",\"document\"],function(d,k){var l=null;if(e.__instance._trigger({container:k,helper:c,satisfied:j,takeTest:function(a){l=a},results:g,type:\"positionTest\"}),1==l||0!=l&&0==j&&(\"window\"!=k||e.__options.viewportAware))for(var d=0;d<e.__options.side.length;d++){var m={horizontal:0,vertical:0},n=e.__options.side[d];\"top\"==n||\"bottom\"==n?m.vertical=e.__options.distance[n]:m.horizontal=e.__options.distance[n],e.__sideChange(h,n),a.each([\"natural\",\"constrained\"],function(a,d){if(l=null,e.__instance._trigger({container:k,event:b,helper:c,mode:d,results:g,satisfied:j,side:n,takeTest:function(a){l=a},type:\"positionTest\"}),1==l||0!=l&&0==j){var h={container:k,distance:m,fits:null,mode:d,outerSize:null,side:n,size:null,target:f[n],whole:null},o=\"natural\"==d?i.free():i.constrain(c.geo.available[k][n].width-m.horizontal,c.geo.available[k][n].height-m.vertical),p=o.measure();if(h.size=p.size,h.outerSize={height:p.size.height+m.vertical,width:p.size.width+m.horizontal},\"natural\"==d?c.geo.available[k][n].width>=h.outerSize.width&&c.geo.available[k][n].height>=h.outerSize.height?h.fits=!0:h.fits=!1:h.fits=p.fits,\"window\"==k&&(h.fits?\"top\"==n||\"bottom\"==n?h.whole=c.geo.origin.windowOffset.right>=e.__options.minIntersection&&c.geo.window.size.width-c.geo.origin.windowOffset.left>=e.__options.minIntersection:h.whole=c.geo.origin.windowOffset.bottom>=e.__options.minIntersection&&c.geo.window.size.height-c.geo.origin.windowOffset.top>=e.__options.minIntersection:h.whole=!1),g.push(h),h.whole)j=!0;else if(\"natural\"==h.mode&&(h.fits||h.size.width<=c.geo.available[k][n].width))return!1}})}}),e.__instance._trigger({edit:function(a){g=a},event:b,helper:c,results:g,type:\"positionTested\"}),g.sort(function(a,b){if(a.whole&&!b.whole)return-1;if(!a.whole&&b.whole)return 1;if(a.whole&&b.whole){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:\"natural\"==a.mode?-1:1}if(a.fits&&!b.fits)return-1;if(!a.fits&&b.fits)return 1;if(a.fits&&b.fits){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:\"natural\"==a.mode?-1:1}return\"document\"==a.container&&\"bottom\"==a.side&&\"natural\"==a.mode?-1:1}),d=g[0],d.coord={},d.side){case\"left\":case\"right\":d.coord.top=Math.floor(d.target-d.size.height/2);break;case\"bottom\":case\"top\":d.coord.left=Math.floor(d.target-d.size.width/2)}switch(d.side){case\"left\":d.coord.left=c.geo.origin.windowOffset.left-d.outerSize.width;break;case\"right\":d.coord.left=c.geo.origin.windowOffset.right+d.distance.horizontal;break;case\"top\":d.coord.top=c.geo.origin.windowOffset.top-d.outerSize.height;break;case\"bottom\":d.coord.top=c.geo.origin.windowOffset.bottom+d.distance.vertical}\"window\"==d.container?\"top\"==d.side||\"bottom\"==d.side?d.coord.left<0?c.geo.origin.windowOffset.right-this.__options.minIntersection>=0?d.coord.left=0:d.coord.left=c.geo.origin.windowOffset.right-this.__options.minIntersection-1:d.coord.left>c.geo.window.size.width-d.size.width&&(c.geo.origin.windowOffset.left+this.__options.minIntersection<=c.geo.window.size.width?d.coord.left=c.geo.window.size.width-d.size.width:d.coord.left=c.geo.origin.windowOffset.left+this.__options.minIntersection+1-d.size.width):d.coord.top<0?c.geo.origin.windowOffset.bottom-this.__options.minIntersection>=0?d.coord.top=0:d.coord.top=c.geo.origin.windowOffset.bottom-this.__options.minIntersection-1:d.coord.top>c.geo.window.size.height-d.size.height&&(c.geo.origin.windowOffset.top+this.__options.minIntersection<=c.geo.window.size.height?d.coord.top=c.geo.window.size.height-d.size.height:d.coord.top=c.geo.origin.windowOffset.top+this.__options.minIntersection+1-d.size.height):(d.coord.left>c.geo.window.size.width-d.size.width&&(d.coord.left=c.geo.window.size.width-d.size.width),d.coord.left<0&&(d.coord.left=0)),e.__sideChange(h,d.side),c.tooltipClone=h[0],c.tooltipParent=e.__instance.option(\"parent\").parent[0],c.mode=d.mode,c.whole=d.whole,c.origin=e.__instance._$origin[0],c.tooltip=e.__instance._$tooltip[0],delete d.container,delete d.fits,delete d.mode,delete d.outerSize,delete d.whole,d.distance=d.distance.horizontal||d.distance.vertical;var l=a.extend(!0,{},d);if(e.__instance._trigger({edit:function(a){d=a},event:b,helper:c,position:l,type:\"position\"}),e.__options.functionPosition){var m=e.__options.functionPosition.call(e,e.__instance,c,l);m&&(d=m)}i.destroy();var n,o;\"top\"==d.side||\"bottom\"==d.side?(n={prop:\"left\",val:d.target-d.coord.left},o=d.size.width-this.__options.minIntersection):(n={prop:\"top\",val:d.target-d.coord.top},o=d.size.height-this.__options.minIntersection),n.val<this.__options.minIntersection?n.val=this.__options.minIntersection:n.val>o&&(n.val=o);var p;p=c.geo.origin.fixedLineage?c.geo.origin.windowOffset:{left:c.geo.origin.windowOffset.left+c.geo.window.scroll.left,top:c.geo.origin.windowOffset.top+c.geo.window.scroll.top},d.coord={left:p.left+(d.coord.left-c.geo.origin.windowOffset.left),top:p.top+(d.coord.top-c.geo.origin.windowOffset.top)},e.__sideChange(e.__instance._$tooltip,d.side),c.geo.origin.fixedLineage?e.__instance._$tooltip.css(\"position\",\"fixed\"):e.__instance._$tooltip.css(\"position\",\"\"),e.__instance._$tooltip.css({left:d.coord.left,top:d.coord.top,height:d.size.height,width:d.size.width}).find(\".tooltipster-arrow\").css({left:\"\",top:\"\"}).css(n.prop,n.val),e.__instance._$tooltip.appendTo(e.__instance.option(\"parent\")),e.__instance._trigger({type:\"repositioned\",event:b,position:d})},__sideChange:function(a,b){a.removeClass(\"tooltipster-bottom\").removeClass(\"tooltipster-left\").removeClass(\"tooltipster-right\").removeClass(\"tooltipster-top\").addClass(\"tooltipster-\"+b)},__targetFind:function(a){var b={},c=this.__instance._$origin[0].getClientRects();if(c.length>1){var d=this.__instance._$origin.css(\"opacity\");1==d&&(this.__instance._$origin.css(\"opacity\",.99),c=this.__instance._$origin[0].getClientRects(),this.__instance._$origin.css(\"opacity\",1))}if(c.length<2)b.top=Math.floor(a.geo.origin.windowOffset.left+a.geo.origin.size.width/2),b.bottom=b.top,b.left=Math.floor(a.geo.origin.windowOffset.top+a.geo.origin.size.height/2),b.right=b.left;else{var e=c[0];b.top=Math.floor(e.left+(e.right-e.left)/2),e=c.length>2?c[Math.ceil(c.length/2)-1]:c[0],b.right=Math.floor(e.top+(e.bottom-e.top)/2),e=c[c.length-1],b.bottom=Math.floor(e.left+(e.right-e.left)/2),e=c.length>2?c[Math.ceil((c.length+1)/2)-1]:c[c.length-1],b.left=Math.floor(e.top+(e.bottom-e.top)/2)}return b}}}),a});", "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", "/**\n * jQuery Bar Rating Plugin v1.2.2\n *\n * http://github.com/antennaio/jquery-bar-rating\n *\n * Copyright (c) 2012-2016 Kazik Pietruszewski\n *\n * This plugin is available under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n */\n(function (factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD\n        define(['jquery'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        // Node/CommonJS\n        module.exports = factory(require('jquery'));\n    } else {\n        // browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n\n    var BarRating = (function() {\n\n        function BarRating() {\n            var self = this;\n\n            // wrap element in a wrapper div\n            var wrapElement = function() {\n                var classes = ['br-wrapper'];\n\n                if (self.options.theme !== '') {\n                    classes.push('br-theme-' + self.options.theme);\n                }\n\n                self.$elem.wrap($('<div />', {\n                    'class': classes.join(' ')\n                }));\n            };\n\n            // unwrap element\n            var unwrapElement = function() {\n                self.$elem.unwrap();\n            };\n\n            // find option by value\n            var findOption = function(value) {\n                if ($.isNumeric(value)) {\n                    value = Math.floor(value);\n                }\n\n                return $('option[value=\"' + value  + '\"]', self.$elem);\n            };\n\n            // get initial option\n            var getInitialOption = function() {\n                var initialRating = self.options.initialRating;\n\n                if (!initialRating) {\n                    return $('option:selected', self.$elem);\n                }\n\n                return findOption(initialRating);\n            };\n\n            // get empty option\n            var getEmptyOption = function() {\n                var $emptyOpt = self.$elem.find('option[value=\"' + self.options.emptyValue + '\"]');\n\n                if (!$emptyOpt.length && self.options.allowEmpty) {\n                    $emptyOpt = $('<option />', { 'value': self.options.emptyValue });\n\n                    return $emptyOpt.prependTo(self.$elem);\n                }\n\n                return $emptyOpt;\n            };\n\n            // get data\n            var getData = function(key) {\n                var data = self.$elem.data('barrating');\n\n                if (typeof key !== 'undefined') {\n                    return data[key];\n                }\n\n                return data;\n            };\n\n            // set data\n            var setData = function(key, value) {\n                if (value !== null && typeof value === 'object') {\n                    self.$elem.data('barrating', value);\n                } else {\n                    self.$elem.data('barrating')[key] = value;\n                }\n            };\n\n            // save data on element\n            var saveDataOnElement = function() {\n                var $opt = getInitialOption();\n                var $emptyOpt = getEmptyOption();\n\n                var value = $opt.val();\n                var text = $opt.data('html') ? $opt.data('html') : $opt.text();\n\n                // if the allowEmpty option is not set let's check if empty option exists in the select field\n                var allowEmpty = (self.options.allowEmpty !== null) ?\n                    self.options.allowEmpty :\n                    !!$emptyOpt.length;\n\n                var emptyValue = ($emptyOpt.length) ? $emptyOpt.val() : null;\n                var emptyText = ($emptyOpt.length) ? $emptyOpt.text() : null;\n\n                setData(null, {\n                    userOptions: self.options,\n\n                    // initial rating based on the OPTION value\n                    ratingValue: value,\n                    ratingText: text,\n\n                    // rating will be restored by calling clear method\n                    originalRatingValue: value,\n                    originalRatingText: text,\n\n                    // allow empty ratings?\n                    allowEmpty: allowEmpty,\n\n                    // rating value and text of the empty OPTION\n                    emptyRatingValue: emptyValue,\n                    emptyRatingText: emptyText,\n\n                    // read-only state\n                    readOnly: self.options.readonly,\n\n                    // did the user already select a rating?\n                    ratingMade: false\n                });\n            };\n\n            // remove data on element\n            var removeDataOnElement = function() {\n                self.$elem.removeData('barrating');\n            };\n\n            // return current rating text\n            var ratingText = function() {\n                return getData('ratingText');\n            };\n\n            // return current rating value\n            var ratingValue = function() {\n                return getData('ratingValue');\n            };\n\n            // build widget and return jQuery element\n            var buildWidget = function() {\n                var $w = $('<div />', { 'class': 'br-widget' });\n\n                // create A elements that will replace OPTIONs\n                self.$elem.find('option').each(function() {\n                    var val, text, html, $a;\n\n                    val = $(this).val();\n\n                    // create ratings - but only if val is not defined as empty\n                    if (val !== getData('emptyRatingValue')) {\n                        text = $(this).text();\n                        html = $(this).data('html');\n                        if (html) { text = html; }\n\n                        $a = $('<a />', {\n                            'href': '#',\n                            'data-rating-value': val,\n                            'data-rating-text': text,\n                            'html': (self.options.showValues) ? text : ''\n                        });\n\n                        $w.append($a);\n                    }\n\n                });\n\n                // append .br-current-rating div to the widget\n                if (self.options.showSelectedRating) {\n                    $w.append($('<div />', { 'text': '', 'class': 'br-current-rating' }));\n                }\n\n                // additional classes for the widget\n                if (self.options.reverse) {\n                    $w.addClass('br-reverse');\n                }\n\n                if (self.options.readonly) {\n                    $w.addClass('br-readonly');\n                }\n\n                return $w;\n            };\n\n            // return a jQuery function name depending on the 'reverse' setting\n            var nextAllorPreviousAll = function() {\n                if (getData('userOptions').reverse) {\n                    return 'nextAll';\n                } else {\n                    return 'prevAll';\n                }\n            };\n\n            // set the value of the select field\n            var setSelectFieldValue = function(value) {\n                // change selected option\n                findOption(value).prop('selected', true);\n\n                self.$elem.change();\n            };\n\n            // reset select field\n            var resetSelectField = function() {\n                $('option', self.$elem).prop('selected', function() {\n                    return this.defaultSelected;\n                });\n\n                self.$elem.change();\n            };\n\n            // display the currently selected rating\n            var showSelectedRating = function(text) {\n                // text undefined?\n                text = text ? text : ratingText();\n\n                // special case when the selected rating is defined as empty\n                if (text == getData('emptyRatingText')) {\n                    text = '';\n                }\n\n                // update .br-current-rating div\n                if (self.options.showSelectedRating) {\n                    self.$elem.parent().find('.br-current-rating').text(text);\n                }\n            };\n\n            // return rounded fraction of a value (14.4 -> 40, 0.99 -> 90)\n            var fraction = function(value) {\n                return Math.round(((Math.floor(value * 10) / 10) % 1) * 100);\n            };\n\n            // remove all classes from elements\n            var resetStyle = function() {\n                // remove all classes starting with br-*\n                self.$widget.find('a').removeClass(function(index, classes) {\n                    return (classes.match(/(^|\\s)br-\\S+/g) || []).join(' ');\n                });\n            };\n\n            // apply style by setting classes on elements\n            var applyStyle = function() {\n                var $a = self.$widget.find('a[data-rating-value=\"' + ratingValue() + '\"]');\n                var initialRating = getData('userOptions').initialRating;\n                var baseValue = $.isNumeric(ratingValue()) ? ratingValue() : 0;\n                var f = fraction(initialRating);\n                var $all, $fractional;\n\n                resetStyle();\n\n                // add classes\n                $a.addClass('br-selected br-current')[nextAllorPreviousAll()]()\n                    .addClass('br-selected');\n\n                if (!getData('ratingMade') && $.isNumeric(initialRating)) {\n                    if ((initialRating <= baseValue) || !f) {\n                        return;\n                    }\n\n                    $all = self.$widget.find('a');\n\n                    $fractional = ($a.length) ?\n                        $a[(getData('userOptions').reverse) ? 'prev' : 'next']() :\n                        $all[(getData('userOptions').reverse) ? 'last' : 'first']();\n\n                    $fractional.addClass('br-fractional');\n                    $fractional.addClass('br-fractional-' + f);\n                }\n            };\n\n            // check if the element is deselectable?\n            var isDeselectable = function($element) {\n                if (!getData('allowEmpty') || !getData('userOptions').deselectable) {\n                    return false;\n                }\n\n                return (ratingValue() == $element.attr('data-rating-value'));\n            };\n\n            // handle click events\n            var attachClickHandler = function($elements) {\n                $elements.on('click.barrating', function(event) {\n                    var $a = $(this),\n                        options = getData('userOptions'),\n                        value,\n                        text;\n\n                    event.preventDefault();\n\n                    value = $a.attr('data-rating-value');\n                    text = $a.attr('data-rating-text');\n\n                    // is current and deselectable?\n                    if (isDeselectable($a)) {\n                        value = getData('emptyRatingValue');\n                        text = getData('emptyRatingText');\n                    }\n\n                    // remember selected rating\n                    setData('ratingValue', value);\n                    setData('ratingText', text);\n                    setData('ratingMade', true);\n\n                    setSelectFieldValue(value);\n                    showSelectedRating(text);\n\n                    applyStyle();\n\n                    // onSelect callback\n                    options.onSelect.call(\n                        self,\n                        ratingValue(),\n                        ratingText(),\n                        event\n                    );\n\n                    return false;\n                });\n            };\n\n            // handle mouseenter events\n            var attachMouseEnterHandler = function($elements) {\n                $elements.on('mouseenter.barrating', function() {\n                    var $a = $(this);\n\n                    resetStyle();\n\n                    $a.addClass('br-active')[nextAllorPreviousAll()]()\n                        .addClass('br-active');\n\n                    showSelectedRating($a.attr('data-rating-text'));\n                });\n            };\n\n            // handle mouseleave events\n            var attachMouseLeaveHandler = function($elements) {\n                self.$widget.on('mouseleave.barrating blur.barrating', function() {\n                    showSelectedRating();\n                    applyStyle();\n                });\n            };\n\n            // somewhat primitive way to remove 300ms click delay on touch devices\n            // for a more advanced solution consider setting `fastClicks` option to false\n            // and using a library such as fastclick (https://github.com/ftlabs/fastclick)\n            var fastClicks = function($elements) {\n                $elements.on('touchstart.barrating', function(event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    $(this).click();\n                });\n            };\n\n            // disable clicks\n            var disableClicks = function($elements) {\n                $elements.on('click.barrating', function(event) {\n                    event.preventDefault();\n                });\n            };\n\n            var attachHandlers = function($elements) {\n                // attach click event handler\n                attachClickHandler($elements);\n\n                if (self.options.hoverState) {\n                    // attach mouseenter event handler\n                    attachMouseEnterHandler($elements);\n\n                    // attach mouseleave event handler\n                    attachMouseLeaveHandler($elements);\n                }\n            };\n\n            var detachHandlers = function($elements) {\n                // remove event handlers in the \".barrating\" namespace\n                $elements.off('.barrating');\n            };\n\n            var setupHandlers = function(readonly) {\n                var $elements = self.$widget.find('a');\n\n                if (fastClicks) {\n                    fastClicks($elements);\n                }\n\n                if (readonly) {\n                    detachHandlers($elements);\n                    disableClicks($elements);\n                } else {\n                    attachHandlers($elements);\n                }\n            };\n\n            this.show = function() {\n                // run only once\n                if (getData()) return;\n\n                // wrap element\n                wrapElement();\n\n                // save data\n                saveDataOnElement();\n\n                // build & append widget to the DOM\n                self.$widget = buildWidget();\n                self.$widget.insertAfter(self.$elem);\n\n                applyStyle();\n\n                showSelectedRating();\n\n                setupHandlers(self.options.readonly);\n\n                // hide the select field\n                self.$elem.hide();\n            };\n\n            this.readonly = function(state) {\n                if (typeof state !== 'boolean' || getData('readOnly') == state) return;\n\n                setupHandlers(state);\n                setData('readOnly', state);\n                self.$widget.toggleClass('br-readonly');\n            };\n\n            this.set = function(value) {\n                var options = getData('userOptions');\n\n                if (self.$elem.find('option[value=\"' + value + '\"]').length === 0) return;\n\n                // set data\n                setData('ratingValue', value);\n                setData('ratingText', self.$elem.find('option[value=\"' + value + '\"]').text());\n                setData('ratingMade', true);\n\n                setSelectFieldValue(ratingValue());\n                showSelectedRating(ratingText());\n\n                applyStyle();\n\n                // onSelect callback\n                if (!options.silent) {\n                    options.onSelect.call(\n                        this,\n                        ratingValue(),\n                        ratingText()\n                    );\n                }\n            };\n\n            this.clear = function() {\n                var options = getData('userOptions');\n\n                // restore original data\n                setData('ratingValue', getData('originalRatingValue'));\n                setData('ratingText', getData('originalRatingText'));\n                setData('ratingMade', false);\n\n                resetSelectField();\n                showSelectedRating(ratingText());\n\n                applyStyle();\n\n                // onClear callback\n                options.onClear.call(\n                    this,\n                    ratingValue(),\n                    ratingText()\n                );\n            };\n\n            this.destroy = function() {\n                var value = ratingValue();\n                var text = ratingText();\n                var options = getData('userOptions');\n\n                // detach handlers\n                detachHandlers(self.$widget.find('a'));\n\n                // remove widget\n                self.$widget.remove();\n\n                // remove data\n                removeDataOnElement();\n\n                // unwrap the element\n                unwrapElement();\n\n                // show the element\n                self.$elem.show();\n\n                // onDestroy callback\n                options.onDestroy.call(\n                    this,\n                    value,\n                    text\n                );\n            };\n        }\n\n        BarRating.prototype.init = function (options, elem) {\n            this.$elem = $(elem);\n            this.options = $.extend({}, $.fn.barrating.defaults, options);\n\n            return this.options;\n        };\n\n        return BarRating;\n    })();\n\n    $.fn.barrating = function (method, options) {\n        return this.each(function () {\n            var plugin = new BarRating();\n\n            // plugin works with select fields\n            if (!$(this).is('select')) {\n                $.error('Sorry, this plugin only works with select fields.');\n            }\n\n            // method supplied\n            if (plugin.hasOwnProperty(method)) {\n                plugin.init(options, this);\n                if (method === 'show') {\n                    return plugin.show(options);\n                } else {\n                    // plugin exists?\n                    if (plugin.$elem.data('barrating')) {\n                        plugin.$widget = $(this).next('.br-widget');\n                        return plugin[method](options);\n                    }\n                }\n\n            // no method supplied or only options supplied\n            } else if (typeof method === 'object' || !method) {\n                options = method;\n                plugin.init(options, this);\n                return plugin.show();\n\n            } else {\n                $.error('Method ' + method + ' does not exist on jQuery.barrating');\n            }\n        });\n    };\n\n    $.fn.barrating.defaults = {\n        theme:'',\n        initialRating:null, // initial rating\n        allowEmpty:null, // allow empty ratings?\n        emptyValue:'', // this is the expected value of the empty rating\n        showValues:false, // display rating values on the bars?\n        showSelectedRating:true, // append a div with a rating to the widget?\n        deselectable:true, // allow to deselect ratings?\n        reverse:false, // reverse the rating?\n        readonly:false, // make the rating ready-only?\n        fastClicks:true, // remove 300ms click delay on touch devices?\n        hoverState:true, // change state on hover?\n        silent:false, // supress callbacks when controlling ratings programatically\n        onSelect:function (value, text, event) {\n        }, // callback fired when a rating is selected\n        onClear:function (value, text) {\n        }, // callback fired when a rating is cleared\n        onDestroy:function (value, text) {\n        } // callback fired when a widget is destroyed\n    };\n\n    $.fn.barrating.BarRating = BarRating;\n\n}));\n", "//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\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.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        var flags = null,\n            parsedParts = false,\n            isNowValid = m._d && !isNaN(m._d.getTime());\n        if (isNowValid) {\n            flags = getParsingFlags(m);\n            parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            isNowValid =\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidEra &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n        }\n        if (Object.isFrozen == null || !Object.isFrozen(m)) {\n            m._isValid = isNowValid;\n        } else {\n            return isNowValid;\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {\n        D: 'date',\n        dates: 'date',\n        date: 'date',\n        d: 'day',\n        days: 'day',\n        day: 'day',\n        e: 'weekday',\n        weekdays: 'weekday',\n        weekday: 'weekday',\n        E: 'isoWeekday',\n        isoweekdays: 'isoWeekday',\n        isoweekday: 'isoWeekday',\n        DDD: 'dayOfYear',\n        dayofyears: 'dayOfYear',\n        dayofyear: 'dayOfYear',\n        h: 'hour',\n        hours: 'hour',\n        hour: 'hour',\n        ms: 'millisecond',\n        milliseconds: 'millisecond',\n        millisecond: 'millisecond',\n        m: 'minute',\n        minutes: 'minute',\n        minute: 'minute',\n        M: 'month',\n        months: 'month',\n        month: 'month',\n        Q: 'quarter',\n        quarters: 'quarter',\n        quarter: 'quarter',\n        s: 'second',\n        seconds: 'second',\n        second: 'second',\n        gg: 'weekYear',\n        weekyears: 'weekYear',\n        weekyear: 'weekYear',\n        GG: 'isoWeekYear',\n        isoweekyears: 'isoWeekYear',\n        isoweekyear: 'isoWeekYear',\n        w: 'week',\n        weeks: 'week',\n        week: 'week',\n        W: 'isoWeek',\n        isoweeks: 'isoWeek',\n        isoweek: 'isoWeek',\n        y: 'year',\n        years: 'year',\n        year: 'year',\n    };\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {\n        date: 9,\n        day: 11,\n        weekday: 11,\n        isoWeekday: 11,\n        dayOfYear: 4,\n        hour: 13,\n        millisecond: 16,\n        minute: 14,\n        month: 8,\n        quarter: 7,\n        second: 15,\n        weekYear: 1,\n        isoWeekYear: 1,\n        week: 5,\n        isoWeek: 5,\n        year: 1,\n    };\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n        match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        if (!mom.isValid()) {\n            return NaN;\n        }\n\n        var d = mom._d,\n            isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n            case 'Seconds':\n                return isUTC ? d.getUTCSeconds() : d.getSeconds();\n            case 'Minutes':\n                return isUTC ? d.getUTCMinutes() : d.getMinutes();\n            case 'Hours':\n                return isUTC ? d.getUTCHours() : d.getHours();\n            case 'Date':\n                return isUTC ? d.getUTCDate() : d.getDate();\n            case 'Day':\n                return isUTC ? d.getUTCDay() : d.getDay();\n            case 'Month':\n                return isUTC ? d.getUTCMonth() : d.getMonth();\n            case 'FullYear':\n                return isUTC ? d.getUTCFullYear() : d.getFullYear();\n            default:\n                return NaN; // Just in case\n        }\n    }\n\n    function set$1(mom, unit, value) {\n        var d, isUTC, year, month, date;\n\n        if (!mom.isValid() || isNaN(value)) {\n            return;\n        }\n\n        d = mom._d;\n        isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return void (isUTC\n                    ? d.setUTCMilliseconds(value)\n                    : d.setMilliseconds(value));\n            case 'Seconds':\n                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n            case 'Minutes':\n                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n            case 'Hours':\n                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n            case 'Date':\n                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n            // case 'Day': // Not real\n            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n            // case 'Month': // Not used because we need to pass two variables\n            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n            case 'FullYear':\n                break; // See below ...\n            default:\n                return; // Just in case\n        }\n\n        year = value;\n        month = mom.month();\n        date = mom.date();\n        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n        void (isUTC\n            ? d.setUTCFullYear(year, month, date)\n            : d.setFullYear(year, month, date));\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // PARSING\n\n    addRegexToken('M', match1to2, match1to2NoLeadingZero);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        var month = value,\n            date = mom.date();\n\n        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n        void (mom._isUTC\n            ? mom._d.setUTCMonth(month, date)\n            : mom._d.setMonth(month, date));\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            shortP,\n            longP;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortP = regexEscape(this.monthsShort(mom, ''));\n            longP = regexEscape(this.months(mom, ''));\n            shortPieces.push(shortP);\n            longPieces.push(longP);\n            mixedPieces.push(longP);\n            mixedPieces.push(shortP);\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // PARSING\n\n    addRegexToken('w', match1to2, match1to2NoLeadingZero);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2, match1to2NoLeadingZero);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n              ? weekdays[m.day()]\n              : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n              ? this._weekdaysShort[m.day()]\n              : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n              ? this._weekdaysMin[m.day()]\n              : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        var day = get(this, 'Day');\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2, match1to2HasZero);\n    addRegexToken('h', match1to2, match1to2NoLeadingZero);\n    addRegexToken('k', match1to2, match1to2NoLeadingZero);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        // Ensure name is available and function returns boolean\n        return !!(name && name.match('^[^/\\\\\\\\]*$'));\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                      ? DATE\n                      : a[HOUR] < 0 ||\n                          a[HOUR] > 24 ||\n                          (a[HOUR] === 24 &&\n                              (a[MINUTE] !== 0 ||\n                                  a[SECOND] !== 0 ||\n                                  a[MILLISECOND] !== 0))\n                        ? HOUR\n                        : a[MINUTE] < 0 || a[MINUTE] > 59\n                          ? MINUTE\n                          : a[SECOND] < 0 || a[SECOND] > 59\n                            ? SECOND\n                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                              ? MILLISECOND\n                              : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n              ? 'lastWeek'\n              : diff < 0\n                ? 'lastDay'\n                : diff < 1\n                  ? 'sameDay'\n                  : diff < 2\n                    ? 'nextDay'\n                    : diff < 7\n                      ? 'nextWeek'\n                      : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            erasName,\n            erasAbbr,\n            erasNarrow,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            erasName = regexEscape(eras[i].name);\n            erasAbbr = regexEscape(eras[i].abbr);\n            erasNarrow = regexEscape(eras[i].narrow);\n\n            namePieces.push(erasName);\n            abbrPieces.push(erasAbbr);\n            narrowPieces.push(erasNarrow);\n            mixedPieces.push(erasName);\n            mixedPieces.push(erasAbbr);\n            mixedPieces.push(erasNarrow);\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday() + this.localeData()._week.dow,\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // PARSING\n\n    addRegexToken('D', match1to2, match1to2NoLeadingZero);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // PARSING\n\n    addRegexToken('m', match1to2, match1to2HasZero);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // PARSING\n\n    addRegexToken('s', match1to2, match1to2HasZero);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y'),\n        valueOf$1 = asMilliseconds;\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.30.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\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 ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ];\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n  var ParseableAttributes = ['title', 'placeholder']; // attributes to use as settings, can add others in the future\n\n  function allowedAttribute (attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n      }\n\n      return true;\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp;\n    });\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml (unsafeElements, whiteList, sanitizeFn) {\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeElements);\n    }\n\n    var whitelistKeys = Object.keys(whiteList);\n\n    for (var i = 0, len = unsafeElements.length; i < len; i++) {\n      var elements = unsafeElements[i].querySelectorAll('*');\n\n      for (var j = 0, len2 = elements.length; j < len2; j++) {\n        var el = elements[j];\n        var elName = el.nodeName.toLowerCase();\n\n        if (whitelistKeys.indexOf(elName) === -1) {\n          el.parentNode.removeChild(el);\n\n          continue;\n        }\n\n        var attributeList = [].slice.call(el.attributes);\n        var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n\n        for (var k = 0, len3 = attributeList.length; k < len3; k++) {\n          var attr = attributeList[k];\n\n          if (!allowedAttribute(attr, whitelistedAttributes)) {\n            el.removeAttribute(attr.nodeName);\n          }\n        }\n      }\n    }\n  }\n\n  function getAttributesObject ($select) {\n    var attributesObject = {},\n        attrVal;\n\n    ParseableAttributes.forEach(function (item) {\n      attrVal = $select.attr(item);\n      if (attrVal) attributesObject[item] = attrVal;\n    });\n\n    // for backwards compatibility\n    // (using title as placeholder is deprecated - remove in v2.0.0)\n    if (!attributesObject.placeholder && attributesObject.title) {\n      attributesObject.placeholder = attributesObject.title;\n    }\n\n    return attributesObject;\n  }\n\n  // Polyfill for browsers with no classList support\n  // Remove in v2\n  if (!('classList' in document.createElement('_'))) {\n    (function (view) {\n      if (!('Element' in view)) return;\n\n      var classListProp = 'classList',\n          protoProp = 'prototype',\n          elemCtrProto = view.Element[protoProp],\n          objCtr = Object,\n          classListGetter = function () {\n            var $elem = $(this);\n\n            return {\n              add: function (classes) {\n                classes = Array.prototype.slice.call(arguments).join(' ');\n                return $elem.addClass(classes);\n              },\n              remove: function (classes) {\n                classes = Array.prototype.slice.call(arguments).join(' ');\n                return $elem.removeClass(classes);\n              },\n              toggle: function (classes, force) {\n                return $elem.toggleClass(classes, force);\n              },\n              contains: function (classes) {\n                return $elem.hasClass(classes);\n              }\n            };\n          };\n\n      if (objCtr.defineProperty) {\n        var classListPropDesc = {\n          get: classListGetter,\n          enumerable: true,\n          configurable: true\n        };\n        try {\n          objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n        } catch (ex) { // IE 8 doesn't support enumerable:true\n          // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n          // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n          if (ex.number === undefined || ex.number === -0x7FF5EC54) {\n            classListPropDesc.enumerable = false;\n            objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n          }\n        }\n      } else if (objCtr[protoProp].__defineGetter__) {\n        elemCtrProto.__defineGetter__(classListProp, classListGetter);\n      }\n    }(window));\n  }\n\n  var testElement = document.createElement('_');\n\n  testElement.classList.add('c1', 'c2');\n\n  if (!testElement.classList.contains('c2')) {\n    var _add = DOMTokenList.prototype.add,\n        _remove = DOMTokenList.prototype.remove;\n\n    DOMTokenList.prototype.add = function () {\n      Array.prototype.forEach.call(arguments, _add.bind(this));\n    };\n\n    DOMTokenList.prototype.remove = function () {\n      Array.prototype.forEach.call(arguments, _remove.bind(this));\n    };\n  }\n\n  testElement.classList.toggle('c3', false);\n\n  // Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n  // support the second argument.\n  if (testElement.classList.contains('c3')) {\n    var _toggle = DOMTokenList.prototype.toggle;\n\n    DOMTokenList.prototype.toggle = function (token, force) {\n      if (1 in arguments && !this.contains(token) === !force) {\n        return force;\n      } else {\n        return _toggle.call(this, token);\n      }\n    };\n  }\n\n  testElement = null;\n\n  // Polyfill for IE (remove in v2)\n  Object.values = typeof Object.values === 'function' ? Object.values : function (obj) {\n    return Object.keys(obj).map(function (key) {\n      return obj[key];\n    });\n  };\n\n  // shallow array comparison\n  function isEqual (array1, array2) {\n    return array1.length === array2.length && array1.every(function (element, index) {\n      return element === array2[index];\n    });\n  };\n\n  // <editor-fold desc=\"Shims\">\n  if (!String.prototype.startsWith) {\n    (function () {\n      'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n      var toString = {}.toString;\n      var startsWith = function (search) {\n        if (this == null) {\n          throw new TypeError();\n        }\n        var string = String(this);\n        if (search && toString.call(search) == '[object RegExp]') {\n          throw new TypeError();\n        }\n        var stringLength = string.length;\n        var searchString = String(search);\n        var searchLength = searchString.length;\n        var position = arguments.length > 1 ? arguments[1] : undefined;\n        // `ToInteger`\n        var pos = position ? Number(position) : 0;\n        if (pos != pos) { // better `isNaN`\n          pos = 0;\n        }\n        var start = Math.min(Math.max(pos, 0), stringLength);\n        // Avoid the `indexOf` call if no match is possible\n        if (searchLength + start > stringLength) {\n          return false;\n        }\n        var index = -1;\n        while (++index < searchLength) {\n          if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\n            return false;\n          }\n        }\n        return true;\n      };\n      if (Object.defineProperty) {\n        Object.defineProperty(String.prototype, 'startsWith', {\n          'value': startsWith,\n          'configurable': true,\n          'writable': true\n        });\n      } else {\n        String.prototype.startsWith = startsWith;\n      }\n    }());\n  }\n\n  function toKebabCase (str) {\n    return str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, function ($, ofs) {\n      return (ofs ? '-' : '') + $.toLowerCase();\n    });\n  }\n\n  function getSelectedOptions () {\n    var options = this.selectpicker.main.data;\n\n    if (this.options.source.data || this.options.source.search) {\n      options = Object.values(this.selectpicker.optionValuesDataMap);\n    }\n\n    var selectedOptions = options.filter(function (item) {\n      if (item.selected) {\n        if (this.options.hideDisabled && item.disabled) return false;\n        return true;\n      }\n\n      return false;\n    }, this);\n\n    // ensure only 1 option is selected if multiple are set in the data source\n    if (this.options.source.data && !this.multiple && selectedOptions.length > 1) {\n      for (var i = 0; i < selectedOptions.length - 1; i++) {\n        selectedOptions[i].selected = false;\n      }\n\n      selectedOptions = [ selectedOptions[selectedOptions.length - 1] ];\n    }\n\n    return selectedOptions;\n  }\n\n  // much faster than $.val()\n  function getSelectValues (selectedOptions) {\n    var value = [],\n        options = selectedOptions || getSelectedOptions.call(this),\n        opt;\n\n    for (var i = 0, len = options.length; i < len; i++) {\n      opt = options[i];\n\n      if (!opt.disabled) {\n        value.push(opt.value === undefined ? opt.text : opt.value);\n      }\n    }\n\n    if (!this.multiple) {\n      return !value.length ? null : value[0];\n    }\n\n    return value;\n  }\n\n  // set data-selected on select element if the value has been programmatically selected\n  // prior to initialization of bootstrap-select\n  // * consider removing or replacing an alternative method *\n  var valHooks = {\n    useDefault: false,\n    _set: $.valHooks.select.set\n  };\n\n  $.valHooks.select.set = function (elem, value) {\n    if (value && !valHooks.useDefault) $(elem).data('selected', true);\n\n    return valHooks._set.apply(this, arguments);\n  };\n\n  var changedArguments = null;\n\n  var EventIsSupported = (function () {\n    try {\n      new Event('change');\n      return true;\n    } catch (e) {\n      return false;\n    }\n  })();\n\n  $.fn.triggerNative = function (eventName) {\n    var el = this[0],\n        event;\n\n    if (el.dispatchEvent) { // for modern browsers & IE9+\n      if (EventIsSupported) {\n        // For modern browsers\n        event = new Event(eventName, {\n          bubbles: true\n        });\n      } else {\n        // For IE since it doesn't support Event constructor\n        event = document.createEvent('Event');\n        event.initEvent(eventName, true, false);\n      }\n\n      el.dispatchEvent(event);\n    }\n  };\n  // </editor-fold>\n\n  function stringSearch (li, searchString, method, normalize) {\n    var stringTypes = [\n          'display',\n          'subtext',\n          'tokens'\n        ],\n        searchSuccess = false;\n\n    for (var i = 0; i < stringTypes.length; i++) {\n      var stringType = stringTypes[i],\n          string = li[stringType];\n\n      if (string) {\n        string = string.toString();\n\n        // Strip HTML tags. This isn't perfect, but it's much faster than any other method\n        if (stringType === 'display') {\n          string = string.replace(/<[^>]+>/g, '');\n        }\n\n        if (normalize) string = normalizeToBase(string);\n        string = string.toUpperCase();\n\n        if (typeof method === 'function') {\n          searchSuccess = method(string, searchString);\n        } else if (method === 'contains') {\n          searchSuccess = string.indexOf(searchString) >= 0;\n        } else {\n          searchSuccess = string.startsWith(searchString);\n        }\n\n        if (searchSuccess) break;\n      }\n    }\n\n    return searchSuccess;\n  }\n\n  function toInteger (value) {\n    return parseInt(value, 10) || 0;\n  }\n\n  // Borrowed from Lodash (_.deburr)\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboMarksExtendedRange = '\\\\u1ab0-\\\\u1aff',\n      rsComboMarksSupplementRange = '\\\\u1dc0-\\\\u1dff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsCombo = '[' + rsComboRange + ']';\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  function deburrLetter (key) {\n    return deburredLetters[key];\n  };\n\n  function normalizeToBase (string) {\n    string = string.toString();\n    return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n  }\n\n  // List of HTML entities for escaping.\n  var escapeMap = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#x27;',\n    '`': '&#x60;'\n  };\n\n  // Functions for escaping and unescaping strings to/from HTML interpolation.\n  var createEscaper = function (map) {\n    var escaper = function (match) {\n      return map[match];\n    };\n    // Regexes for identifying a key that needs to be escaped.\n    var source = '(?:' + Object.keys(map).join('|') + ')';\n    var testRegexp = RegExp(source);\n    var replaceRegexp = RegExp(source, 'g');\n    return function (string) {\n      string = string == null ? '' : '' + string;\n      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n    };\n  };\n\n  var htmlEscape = createEscaper(escapeMap);\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var keyCodeMap = {\n    32: ' ',\n    48: '0',\n    49: '1',\n    50: '2',\n    51: '3',\n    52: '4',\n    53: '5',\n    54: '6',\n    55: '7',\n    56: '8',\n    57: '9',\n    59: ';',\n    65: 'A',\n    66: 'B',\n    67: 'C',\n    68: 'D',\n    69: 'E',\n    70: 'F',\n    71: 'G',\n    72: 'H',\n    73: 'I',\n    74: 'J',\n    75: 'K',\n    76: 'L',\n    77: 'M',\n    78: 'N',\n    79: 'O',\n    80: 'P',\n    81: 'Q',\n    82: 'R',\n    83: 'S',\n    84: 'T',\n    85: 'U',\n    86: 'V',\n    87: 'W',\n    88: 'X',\n    89: 'Y',\n    90: 'Z',\n    96: '0',\n    97: '1',\n    98: '2',\n    99: '3',\n    100: '4',\n    101: '5',\n    102: '6',\n    103: '7',\n    104: '8',\n    105: '9'\n  };\n\n  var keyCodes = {\n    ESCAPE: 27, // KeyboardEvent.which value for Escape (Esc) key\n    ENTER: 13, // KeyboardEvent.which value for Enter key\n    SPACE: 32, // KeyboardEvent.which value for space key\n    TAB: 9, // KeyboardEvent.which value for tab key\n    ARROW_UP: 38, // KeyboardEvent.which value for up arrow key\n    ARROW_DOWN: 40 // KeyboardEvent.which value for down arrow key\n  };\n\n  // eslint-disable-next-line no-undef\n  var Dropdown = window.Dropdown || bootstrap.Dropdown;\n\n  function getVersion () {\n    var version;\n\n    try {\n      version = $.fn.dropdown.Constructor.VERSION;\n    } catch (err) {\n      version = Dropdown.VERSION;\n    }\n\n    return version;\n  }\n\n  var version = {\n    success: false,\n    major: '3'\n  };\n\n  try {\n    version.full = (getVersion() || '').split(' ')[0].split('.');\n    version.major = version.full[0];\n    version.success = true;\n  } catch (err) {\n    // do nothing\n  }\n\n  var selectId = 0;\n\n  var EVENT_KEY = '.bs.select';\n\n  var classNames = {\n    DISABLED: 'disabled',\n    DIVIDER: 'divider',\n    SHOW: 'open',\n    DROPUP: 'dropup',\n    MENU: 'dropdown-menu',\n    MENURIGHT: 'dropdown-menu-right',\n    MENULEFT: 'dropdown-menu-left',\n    // to-do: replace with more advanced template/customization options\n    BUTTONCLASS: 'btn-default',\n    POPOVERHEADER: 'popover-title',\n    ICONBASE: 'glyphicon',\n    TICKICON: 'glyphicon-ok'\n  };\n\n  var Selector = {\n    MENU: '.' + classNames.MENU,\n    DATA_TOGGLE: 'data-toggle=\"dropdown\"'\n  };\n\n  var elementTemplates = {\n    div: document.createElement('div'),\n    span: document.createElement('span'),\n    i: document.createElement('i'),\n    subtext: document.createElement('small'),\n    a: document.createElement('a'),\n    li: document.createElement('li'),\n    whitespace: document.createTextNode('\\u00A0'),\n    fragment: document.createDocumentFragment(),\n    option: document.createElement('option')\n  };\n\n  elementTemplates.selectedOption = elementTemplates.option.cloneNode(false);\n  elementTemplates.selectedOption.setAttribute('selected', true);\n\n  elementTemplates.noResults = elementTemplates.li.cloneNode(false);\n  elementTemplates.noResults.className = 'no-results';\n\n  elementTemplates.a.setAttribute('role', 'option');\n  elementTemplates.a.className = 'dropdown-item';\n\n  elementTemplates.subtext.className = 'text-muted';\n\n  elementTemplates.text = elementTemplates.span.cloneNode(false);\n  elementTemplates.text.className = 'text';\n\n  elementTemplates.checkMark = elementTemplates.span.cloneNode(false);\n\n  var REGEXP_ARROW = new RegExp(keyCodes.ARROW_UP + '|' + keyCodes.ARROW_DOWN);\n  var REGEXP_TAB_OR_ESCAPE = new RegExp('^' + keyCodes.TAB + '$|' + keyCodes.ESCAPE);\n\n  var generateOption = {\n    li: function (content, classes, optgroup) {\n      var li = elementTemplates.li.cloneNode(false);\n\n      if (content) {\n        if (content.nodeType === 1 || content.nodeType === 11) {\n          li.appendChild(content);\n        } else {\n          li.innerHTML = content;\n        }\n      }\n\n      if (typeof classes !== 'undefined' && classes !== '') li.className = classes;\n      if (typeof optgroup !== 'undefined' && optgroup !== null) li.classList.add('optgroup-' + optgroup);\n\n      return li;\n    },\n\n    a: function (text, classes, inline) {\n      var a = elementTemplates.a.cloneNode(true);\n\n      if (text) {\n        if (text.nodeType === 11) {\n          a.appendChild(text);\n        } else {\n          a.insertAdjacentHTML('beforeend', text);\n        }\n      }\n\n      if (typeof classes !== 'undefined' && classes !== '') a.classList.add.apply(a.classList, classes.split(/\\s+/));\n      if (inline) a.setAttribute('style', inline);\n\n      return a;\n    },\n\n    text: function (options, useFragment) {\n      var textElement = elementTemplates.text.cloneNode(false),\n          subtextElement,\n          iconElement;\n\n      if (options.content) {\n        textElement.innerHTML = options.content;\n      } else {\n        textElement.textContent = options.text;\n\n        if (options.icon) {\n          var whitespace = elementTemplates.whitespace.cloneNode(false);\n\n          // need to use <i> for icons in the button to prevent a breaking change\n          // note: switch to span in next major release\n          iconElement = (useFragment === true ? elementTemplates.i : elementTemplates.span).cloneNode(false);\n          iconElement.className = this.options.iconBase + ' ' + options.icon;\n\n          elementTemplates.fragment.appendChild(iconElement);\n          elementTemplates.fragment.appendChild(whitespace);\n        }\n\n        if (options.subtext) {\n          subtextElement = elementTemplates.subtext.cloneNode(false);\n          subtextElement.textContent = options.subtext;\n          textElement.appendChild(subtextElement);\n        }\n      }\n\n      if (useFragment === true) {\n        while (textElement.childNodes.length > 0) {\n          elementTemplates.fragment.appendChild(textElement.childNodes[0]);\n        }\n      } else {\n        elementTemplates.fragment.appendChild(textElement);\n      }\n\n      return elementTemplates.fragment;\n    },\n\n    label: function (options) {\n      var textElement = elementTemplates.text.cloneNode(false),\n          subtextElement,\n          iconElement;\n\n      textElement.innerHTML = options.display;\n\n      if (options.icon) {\n        var whitespace = elementTemplates.whitespace.cloneNode(false);\n\n        iconElement = elementTemplates.span.cloneNode(false);\n        iconElement.className = this.options.iconBase + ' ' + options.icon;\n\n        elementTemplates.fragment.appendChild(iconElement);\n        elementTemplates.fragment.appendChild(whitespace);\n      }\n\n      if (options.subtext) {\n        subtextElement = elementTemplates.subtext.cloneNode(false);\n        subtextElement.textContent = options.subtext;\n        textElement.appendChild(subtextElement);\n      }\n\n      elementTemplates.fragment.appendChild(textElement);\n\n      return elementTemplates.fragment;\n    }\n  };\n\n  var getOptionData = {\n    fromOption: function (option, type) {\n      var value;\n\n      switch (type) {\n        case 'divider':\n          value = option.getAttribute('data-divider') === 'true';\n          break;\n\n        case 'text':\n          value = option.textContent;\n          break;\n\n        case 'label':\n          value = option.label;\n          break;\n\n        case 'style':\n          value = option.style.cssText;\n          break;\n\n        case 'title':\n          value = option.title;\n          break;\n\n        default:\n          value = option.getAttribute('data-' + toKebabCase(type));\n          break;\n      }\n\n      return value;\n    },\n    fromDataSource: function (option, type) {\n      var value;\n\n      switch (type) {\n        case 'text':\n        case 'label':\n          value = option.text || option.value || '';\n          break;\n\n        default:\n          value = option[type];\n          break;\n      }\n\n      return value;\n    }\n  };\n\n  function showNoResults (searchMatch, searchValue) {\n    if (!searchMatch.length) {\n      elementTemplates.noResults.innerHTML = this.options.noneResultsText.replace('{0}', '\"' + htmlEscape(searchValue) + '\"');\n      this.$menuInner[0].firstChild.appendChild(elementTemplates.noResults);\n    }\n  }\n\n  function filterHidden (item) {\n    return !(item.hidden || this.options.hideDisabled && item.disabled);\n  }\n\n  var Selectpicker = function (element, options) {\n    var that = this;\n\n    // bootstrap-select has been initialized - revert valHooks.select.set back to its original function\n    if (!valHooks.useDefault) {\n      $.valHooks.select.set = valHooks._set;\n      valHooks.useDefault = true;\n    }\n\n    this.$element = $(element);\n    this.$newElement = null;\n    this.$button = null;\n    this.$menu = null;\n    this.options = options;\n    this.selectpicker = {\n      main: {\n        data: [],\n        optionQueue: elementTemplates.fragment.cloneNode(false),\n        hasMore: false\n      },\n      search: {\n        data: [],\n        hasMore: false\n      },\n      current: {}, // current is either equal to main or search depending on if a search is in progress\n      view: {},\n      // map of option values and their respective data (only used in conjunction with options.source)\n      optionValuesDataMap: {},\n      isSearching: false,\n      keydown: {\n        keyHistory: '',\n        resetKeyHistory: {\n          start: function () {\n            return setTimeout(function () {\n              that.selectpicker.keydown.keyHistory = '';\n            }, 800);\n          }\n        }\n      }\n    };\n\n    this.sizeInfo = {};\n\n    // Format window padding\n    var winPad = this.options.windowPadding;\n    if (typeof winPad === 'number') {\n      this.options.windowPadding = [winPad, winPad, winPad, winPad];\n    }\n\n    // Expose public methods\n    this.val = Selectpicker.prototype.val;\n    this.render = Selectpicker.prototype.render;\n    this.refresh = Selectpicker.prototype.refresh;\n    this.setStyle = Selectpicker.prototype.setStyle;\n    this.selectAll = Selectpicker.prototype.selectAll;\n    this.deselectAll = Selectpicker.prototype.deselectAll;\n    this.destroy = Selectpicker.prototype.destroy;\n    this.remove = Selectpicker.prototype.remove;\n    this.show = Selectpicker.prototype.show;\n    this.hide = Selectpicker.prototype.hide;\n\n    this.init();\n  };\n\n  Selectpicker.VERSION = '1.14.0-beta3';\n\n  // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.\n  Selectpicker.DEFAULTS = {\n    noneSelectedText: 'Nothing selected',\n    noneResultsText: 'No results matched {0}',\n    countSelectedText: function (numSelected, numTotal) {\n      return (numSelected == 1) ? '{0} item selected' : '{0} items selected';\n    },\n    maxOptionsText: function (numAll, numGroup) {\n      return [\n        (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',\n        (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'\n      ];\n    },\n    selectAllText: 'Select All',\n    deselectAllText: 'Deselect All',\n    source: {\n      pageSize: 40\n    },\n    chunkSize: 40,\n    doneButton: false,\n    doneButtonText: 'Close',\n    multipleSeparator: ', ',\n    styleBase: 'btn',\n    style: classNames.BUTTONCLASS,\n    size: 'auto',\n    title: null,\n    placeholder: null,\n    allowClear: false,\n    selectedTextFormat: 'values',\n    width: false,\n    container: false,\n    hideDisabled: false,\n    showSubtext: false,\n    showIcon: true,\n    showContent: true,\n    dropupAuto: true,\n    header: false,\n    liveSearch: false,\n    liveSearchPlaceholder: null,\n    liveSearchNormalize: false,\n    liveSearchStyle: 'contains',\n    actionsBox: false,\n    iconBase: classNames.ICONBASE,\n    tickIcon: classNames.TICKICON,\n    showTick: false,\n    template: {\n      caret: '<span class=\"caret\"></span>'\n    },\n    maxOptions: false,\n    mobile: false,\n    selectOnTab: true,\n    dropdownAlignRight: false,\n    windowPadding: 0,\n    virtualScroll: 600,\n    display: false,\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist\n  };\n\n  Selectpicker.prototype = {\n\n    constructor: Selectpicker,\n\n    init: function () {\n      var that = this,\n          id = this.$element.attr('id'),\n          element = this.$element[0],\n          form = element.form;\n\n      selectId++;\n      this.selectId = 'bs-select-' + selectId;\n\n      element.classList.add('bs-select-hidden');\n\n      this.multiple = this.$element.prop('multiple');\n      this.autofocus = this.$element.prop('autofocus');\n\n      if (element.classList.contains('show-tick')) {\n        this.options.showTick = true;\n      }\n\n      this.$newElement = this.createDropdown();\n\n      this.$element\n        .after(this.$newElement)\n        .prependTo(this.$newElement);\n\n      // ensure select is associated with form element if it got unlinked after moving it inside newElement\n      if (form && element.form === null) {\n        if (!form.id) form.id = 'form-' + this.selectId;\n        element.setAttribute('form', form.id);\n      }\n\n      this.$button = this.$newElement.children('button');\n      if (this.options.allowClear) this.$clearButton = this.$button.children('.bs-select-clear-selected');\n      this.$menu = this.$newElement.children(Selector.MENU);\n      this.$menuInner = this.$menu.children('.inner');\n      this.$searchbox = this.$menu.find('input');\n\n      element.classList.remove('bs-select-hidden');\n\n      this.fetchData(function () {\n        that.render(true);\n        that.buildList();\n\n        requestAnimationFrame(function () {\n          that.$element.trigger('loaded' + EVENT_KEY);\n        });\n      });\n\n      if (this.options.dropdownAlignRight === true) this.$menu[0].classList.add(classNames.MENURIGHT);\n\n      if (typeof id !== 'undefined') {\n        this.$button.attr('data-id', id);\n      }\n\n      this.checkDisabled();\n      this.clickListener();\n\n      if (version.major > 4) this.dropdown = new Dropdown(this.$button[0]);\n\n      if (this.options.liveSearch) {\n        this.liveSearchListener();\n        this.focusedParent = this.$searchbox[0];\n      } else {\n        this.focusedParent = this.$menuInner[0];\n      }\n\n      this.setStyle();\n      this.setWidth();\n      if (this.options.container) {\n        this.selectPosition();\n      } else {\n        this.$element.on('hide' + EVENT_KEY, function () {\n          if (that.isVirtual()) {\n            // empty menu on close\n            var menuInner = that.$menuInner[0],\n                emptyMenu = menuInner.firstChild.cloneNode(false);\n\n            // replace the existing UL with an empty one - this is faster than $.empty() or innerHTML = ''\n            menuInner.replaceChild(emptyMenu, menuInner.firstChild);\n            menuInner.scrollTop = 0;\n          }\n        });\n      }\n      this.$menu.data('this', this);\n      this.$newElement.data('this', this);\n      if (this.options.mobile) this.mobile();\n\n      this.$newElement.on({\n        'hide.bs.dropdown': function (e) {\n          that.$element.trigger('hide' + EVENT_KEY, e);\n        },\n        'hidden.bs.dropdown': function (e) {\n          that.$element.trigger('hidden' + EVENT_KEY, e);\n        },\n        'show.bs.dropdown': function (e) {\n          that.$element.trigger('show' + EVENT_KEY, e);\n        },\n        'shown.bs.dropdown': function (e) {\n          that.$element.trigger('shown' + EVENT_KEY, e);\n        }\n      });\n\n      if (element.hasAttribute('required')) {\n        this.$element.on('invalid' + EVENT_KEY, function () {\n          that.$button[0].classList.add('bs-invalid');\n\n          that.$element\n            .on('shown' + EVENT_KEY + '.invalid', function () {\n              that.$element\n                .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened\n                .off('shown' + EVENT_KEY + '.invalid');\n            })\n            .on('rendered' + EVENT_KEY, function () {\n              // if select is no longer invalid, remove the bs-invalid class\n              if (this.validity.valid) that.$button[0].classList.remove('bs-invalid');\n              that.$element.off('rendered' + EVENT_KEY);\n            });\n\n          that.$button.on('blur' + EVENT_KEY, function () {\n            that.$element.trigger('focus').trigger('blur');\n            that.$button.off('blur' + EVENT_KEY);\n          });\n        });\n      }\n\n      if (form) {\n        $(form).on('reset' + EVENT_KEY, function () {\n          requestAnimationFrame(function () {\n            that.render();\n          });\n        });\n      }\n    },\n\n    createDropdown: function () {\n      // Options\n      // If we are multiple or showTick option is set, then add the show-tick class\n      var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '',\n          multiselectable = this.multiple ? ' aria-multiselectable=\"true\"' : '',\n          inputGroup = '',\n          autofocus = this.autofocus ? ' autofocus' : '';\n\n      if (version.major < 4 && this.$element.parent().hasClass('input-group')) {\n        inputGroup = ' input-group-btn';\n      }\n\n      // Elements\n      var drop,\n          header = '',\n          searchbox = '',\n          actionsbox = '',\n          donebutton = '',\n          clearButton = '';\n\n      if (this.options.header) {\n        header =\n          '<div class=\"' + classNames.POPOVERHEADER + '\">' +\n            '<button type=\"button\" class=\"close\" aria-hidden=\"true\">&times;</button>' +\n              this.options.header +\n          '</div>';\n      }\n\n      if (this.options.liveSearch) {\n        searchbox =\n          '<div class=\"bs-searchbox\">' +\n            '<input type=\"search\" class=\"form-control\" autocomplete=\"off\"' +\n              (\n                this.options.liveSearchPlaceholder === null ? ''\n                :\n                ' placeholder=\"' + htmlEscape(this.options.liveSearchPlaceholder) + '\"'\n              ) +\n              ' role=\"combobox\" aria-label=\"Search\" aria-controls=\"' + this.selectId + '\" aria-autocomplete=\"list\">' +\n          '</div>';\n      }\n\n      if (this.multiple && this.options.actionsBox) {\n        actionsbox =\n          '<div class=\"bs-actionsbox\">' +\n            '<div class=\"btn-group btn-group-sm\">' +\n              '<button type=\"button\" class=\"actions-btn bs-select-all btn ' + classNames.BUTTONCLASS + '\">' +\n                this.options.selectAllText +\n              '</button>' +\n              '<button type=\"button\" class=\"actions-btn bs-deselect-all btn ' + classNames.BUTTONCLASS + '\">' +\n                this.options.deselectAllText +\n              '</button>' +\n            '</div>' +\n          '</div>';\n      }\n\n      if (this.multiple && this.options.doneButton) {\n        donebutton =\n          '<div class=\"bs-donebutton\">' +\n            '<div class=\"btn-group\">' +\n              '<button type=\"button\" class=\"btn btn-sm ' + classNames.BUTTONCLASS + '\">' +\n                this.options.doneButtonText +\n              '</button>' +\n            '</div>' +\n          '</div>';\n      }\n\n      if (this.options.allowClear) {\n        clearButton = '<span class=\"close bs-select-clear-selected\" title=\"' + this.options.deselectAllText + '\"><span>&times;</span>';\n      }\n\n      drop =\n        '<div class=\"dropdown bootstrap-select' + showTick + inputGroup + '\">' +\n          '<button type=\"button\" tabindex=\"-1\" class=\"' +\n            this.options.styleBase +\n            ' dropdown-toggle\" ' +\n            (this.options.display === 'static' ? 'data-display=\"static\"' : '') +\n            Selector.DATA_TOGGLE +\n            autofocus +\n            ' role=\"combobox\" aria-owns=\"' +\n            this.selectId +\n            '\" aria-haspopup=\"listbox\" aria-expanded=\"false\">' +\n            '<div class=\"filter-option\">' +\n              '<div class=\"filter-option-inner\">' +\n                '<div class=\"filter-option-inner-inner\">&nbsp;</div>' +\n              '</div> ' +\n            '</div>' +\n            clearButton +\n            '</span>' +\n            (\n              version.major >= '4' ? ''\n              :\n              '<span class=\"bs-caret\">' +\n                this.options.template.caret +\n              '</span>'\n            ) +\n          '</button>' +\n          '<div class=\"' + classNames.MENU + ' ' + (version.major >= '4' ? '' : classNames.SHOW) + '\">' +\n            header +\n            searchbox +\n            actionsbox +\n            '<div class=\"inner ' + classNames.SHOW + '\" role=\"listbox\" id=\"' + this.selectId + '\" tabindex=\"-1\" ' + multiselectable + '>' +\n                '<ul class=\"' + classNames.MENU + ' inner ' + (version.major >= '4' ? classNames.SHOW : '') + '\" role=\"presentation\">' +\n                '</ul>' +\n            '</div>' +\n            donebutton +\n          '</div>' +\n        '</div>';\n\n      return $(drop);\n    },\n\n    setPositionData: function () {\n      this.selectpicker.view.canHighlight = [];\n      this.selectpicker.view.size = 0;\n      this.selectpicker.view.firstHighlightIndex = false;\n\n      for (var i = 0; i < this.selectpicker.current.data.length; i++) {\n        var li = this.selectpicker.current.data[i],\n            canHighlight = true;\n\n        if (li.type === 'divider') {\n          canHighlight = false;\n          li.height = this.sizeInfo.dividerHeight;\n        } else if (li.type === 'optgroup-label') {\n          canHighlight = false;\n          li.height = this.sizeInfo.dropdownHeaderHeight;\n        } else {\n          li.height = this.sizeInfo.liHeight;\n        }\n\n        if (li.disabled) canHighlight = false;\n\n        this.selectpicker.view.canHighlight.push(canHighlight);\n\n        if (canHighlight) {\n          this.selectpicker.view.size++;\n          li.posinset = this.selectpicker.view.size;\n          if (this.selectpicker.view.firstHighlightIndex === false) this.selectpicker.view.firstHighlightIndex = i;\n        }\n\n        li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height;\n      }\n    },\n\n    isVirtual: function () {\n      return (this.options.virtualScroll !== false) && (this.selectpicker.main.data.length >= this.options.virtualScroll) || this.options.virtualScroll === true;\n    },\n\n    createView: function (isSearching, setSize, refresh) {\n      var that = this,\n          scrollTop = 0;\n\n      this.selectpicker.isSearching = isSearching;\n      this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main;\n\n      this.setPositionData();\n\n      if (setSize) {\n        if (refresh) {\n          scrollTop = this.$menuInner[0].scrollTop;\n        } else if (!that.multiple) {\n          var element = that.$element[0],\n              selectedIndex = (element.options[element.selectedIndex] || {}).liIndex;\n\n          if (typeof selectedIndex === 'number' && that.options.size !== false) {\n            var selectedData = that.selectpicker.main.data[selectedIndex],\n                position = selectedData && selectedData.position;\n\n            if (position) {\n              scrollTop = position - ((that.sizeInfo.menuInnerHeight + that.sizeInfo.liHeight) / 2);\n            }\n          }\n        }\n      }\n\n      scroll(scrollTop, true);\n\n      this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) {\n        if (!that.noScroll) scroll(this.scrollTop, updateValue);\n        that.noScroll = false;\n      });\n\n      function scroll (scrollTop, init) {\n        var size = that.selectpicker.current.data.length,\n            chunks = [],\n            chunkSize,\n            chunkCount,\n            firstChunk,\n            lastChunk,\n            currentChunk,\n            prevPositions,\n            positionIsDifferent,\n            previousElements,\n            menuIsDifferent = true,\n            isVirtual = that.isVirtual();\n\n        that.selectpicker.view.scrollTop = scrollTop;\n\n        chunkSize = that.options.chunkSize; // number of options in a chunk\n        chunkCount = Math.ceil(size / chunkSize) || 1; // number of chunks\n\n        for (var i = 0; i < chunkCount; i++) {\n          var endOfChunk = (i + 1) * chunkSize;\n\n          if (i === chunkCount - 1) {\n            endOfChunk = size;\n          }\n\n          chunks[i] = [\n            (i) * chunkSize + (!i ? 0 : 1),\n            endOfChunk\n          ];\n\n          if (!size) break;\n\n          if (currentChunk === undefined && scrollTop - 1 <= that.selectpicker.current.data[endOfChunk - 1].position - that.sizeInfo.menuInnerHeight) {\n            currentChunk = i;\n          }\n        }\n\n        if (currentChunk === undefined) currentChunk = 0;\n\n        prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1];\n\n        // always display previous, current, and next chunks\n        firstChunk = Math.max(0, currentChunk - 1);\n        lastChunk = Math.min(chunkCount - 1, currentChunk + 1);\n\n        that.selectpicker.view.position0 = isVirtual === false ? 0 : (Math.max(0, chunks[firstChunk][0]) || 0);\n        that.selectpicker.view.position1 = isVirtual === false ? size : (Math.min(size, chunks[lastChunk][1]) || 0);\n\n        positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1;\n\n        if (that.activeElement !== undefined) {\n          if (init) {\n            if (that.activeElement !== that.selectedElement) {\n              that.defocusItem(that.activeElement);\n            }\n            that.activeElement = undefined;\n          }\n\n          if (that.activeElement !== that.selectedElement) {\n            that.defocusItem(that.selectedElement);\n          }\n        }\n\n        if (that.prevActiveElement !== undefined && that.prevActiveElement !== that.activeElement && that.prevActiveElement !== that.selectedElement) {\n          that.defocusItem(that.prevActiveElement);\n        }\n\n        if (init || positionIsDifferent || that.selectpicker.current.hasMore) {\n          previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : [];\n\n          if (isVirtual === false) {\n            that.selectpicker.view.visibleElements = that.selectpicker.current.elements;\n          } else {\n            that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1);\n          }\n\n          that.setOptionStatus();\n\n          // if searching, check to make sure the list has actually been updated before updating DOM\n          // this prevents unnecessary repaints\n          if (isSearching || (isVirtual === false && init)) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements);\n\n          // if virtual scroll is disabled and not searching,\n          // menu should never need to be updated more than once\n          if ((init || isVirtual === true) && menuIsDifferent) {\n            var menuInner = that.$menuInner[0],\n                menuFragment = document.createDocumentFragment(),\n                emptyMenu = menuInner.firstChild.cloneNode(false),\n                marginTop,\n                marginBottom,\n                elements = that.selectpicker.view.visibleElements,\n                toSanitize = [];\n\n            // replace the existing UL with an empty one - this is faster than $.empty()\n            menuInner.replaceChild(emptyMenu, menuInner.firstChild);\n\n            for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) {\n              var element = elements[i],\n                  elText,\n                  elementData;\n\n              if (that.options.sanitize) {\n                elText = element.lastChild;\n\n                if (elText) {\n                  elementData = that.selectpicker.current.data[i + that.selectpicker.view.position0];\n\n                  if (elementData && elementData.content && !elementData.sanitized) {\n                    toSanitize.push(elText);\n                    elementData.sanitized = true;\n                  }\n                }\n              }\n\n              menuFragment.appendChild(element);\n            }\n\n            if (that.options.sanitize && toSanitize.length) {\n              sanitizeHtml(toSanitize, that.options.whiteList, that.options.sanitizeFn);\n            }\n\n            if (isVirtual === true) {\n              marginTop = (that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position);\n              marginBottom = (that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position);\n\n              menuInner.firstChild.style.marginTop = marginTop + 'px';\n              menuInner.firstChild.style.marginBottom = marginBottom + 'px';\n            } else {\n              menuInner.firstChild.style.marginTop = 0;\n              menuInner.firstChild.style.marginBottom = 0;\n            }\n\n            menuInner.firstChild.appendChild(menuFragment);\n\n            // if an option is encountered that is wider than the current menu width, update the menu width accordingly\n            // switch to ResizeObserver with increased browser support\n            if (isVirtual === true && that.sizeInfo.hasScrollBar) {\n              var menuInnerInnerWidth = menuInner.firstChild.offsetWidth;\n\n              if (init && menuInnerInnerWidth < that.sizeInfo.menuInnerInnerWidth && that.sizeInfo.totalMenuWidth > that.sizeInfo.selectWidth) {\n                menuInner.firstChild.style.minWidth = that.sizeInfo.menuInnerInnerWidth + 'px';\n              } else if (menuInnerInnerWidth > that.sizeInfo.menuInnerInnerWidth) {\n                // set to 0 to get actual width of menu\n                that.$menu[0].style.minWidth = 0;\n\n                var actualMenuWidth = menuInner.firstChild.offsetWidth;\n\n                if (actualMenuWidth > that.sizeInfo.menuInnerInnerWidth) {\n                  that.sizeInfo.menuInnerInnerWidth = actualMenuWidth;\n                  menuInner.firstChild.style.minWidth = that.sizeInfo.menuInnerInnerWidth + 'px';\n                }\n\n                // reset to default CSS styling\n                that.$menu[0].style.minWidth = '';\n              }\n            }\n          }\n\n          if ((!isSearching && that.options.source.data || isSearching && that.options.source.search) && that.selectpicker.current.hasMore && currentChunk === chunkCount - 1) {\n            // Don't load the next chunk until scrolling has started\n            // This prevents unnecessary requests while the user is typing if pageSize is <= chunkSize\n            if (scrollTop > 0) {\n              // Chunks use 0-based indexing, but pages use 1-based. Add 1 to convert and add 1 again to get next page\n              var page = Math.floor((currentChunk * that.options.chunkSize) / that.options.source.pageSize) + 2;\n\n              that.fetchData(function () {\n                that.render();\n                that.buildList(size, isSearching);\n                that.setPositionData();\n                scroll(scrollTop);\n              }, isSearching ? 'search' : 'data', page, isSearching ? that.selectpicker.search.previousValue : undefined);\n            }\n          }\n        }\n\n        that.prevActiveElement = that.activeElement;\n\n        if (!that.options.liveSearch) {\n          that.$menuInner.trigger('focus');\n        } else if (isSearching && init) {\n          var index = 0,\n              newActive;\n\n          if (!that.selectpicker.view.canHighlight[index]) {\n            index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true);\n          }\n\n          newActive = that.selectpicker.view.visibleElements[index];\n\n          that.defocusItem(that.selectpicker.view.currentActive);\n\n          that.activeElement = (that.selectpicker.current.data[index] || {}).element;\n\n          that.focusItem(newActive);\n        }\n      }\n\n      $(window)\n        .off('resize' + EVENT_KEY + '.' + this.selectId + '.createView')\n        .on('resize' + EVENT_KEY + '.' + this.selectId + '.createView', function () {\n          var isActive = that.$newElement.hasClass(classNames.SHOW);\n\n          if (isActive) scroll(that.$menuInner[0].scrollTop);\n        });\n    },\n\n    focusItem: function (li, liData, noStyle) {\n      if (li) {\n        liData = liData || this.selectpicker.current.data[this.selectpicker.current.elements.indexOf(this.activeElement)];\n        var a = li.firstChild;\n\n        if (a) {\n          a.setAttribute('aria-setsize', this.selectpicker.view.size);\n          a.setAttribute('aria-posinset', liData.posinset);\n\n          if (noStyle !== true) {\n            this.focusedParent.setAttribute('aria-activedescendant', a.id);\n            li.classList.add('active');\n            a.classList.add('active');\n          }\n        }\n      }\n    },\n\n    defocusItem: function (li) {\n      if (li) {\n        li.classList.remove('active');\n        if (li.firstChild) li.firstChild.classList.remove('active');\n      }\n    },\n\n    setPlaceholder: function () {\n      var that = this,\n          updateIndex = false;\n\n      if ((this.options.placeholder || this.options.allowClear) && !this.multiple) {\n        if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option');\n\n        // this option doesn't create a new <li> element, but does add a new option at the start,\n        // so startIndex should increase to prevent having to check every option for the bs-title-option class\n        updateIndex = true;\n\n        var element = this.$element[0],\n            selectTitleOption = false,\n            titleNotAppended = !this.selectpicker.view.titleOption.parentNode,\n            selectedIndex = element.selectedIndex,\n            selectedOption = element.options[selectedIndex],\n            firstSelectable = element.querySelector('select > *:not(:disabled)'),\n            firstSelectableIndex = firstSelectable ? firstSelectable.index : 0,\n            navigation = window.performance && window.performance.getEntriesByType('navigation'),\n            // Safari doesn't support getEntriesByType('navigation') - fall back to performance.navigation\n            isNotBackForward = (navigation && navigation.length) ? navigation[0].type !== 'back_forward' : window.performance.navigation.type !== 2;\n\n        if (titleNotAppended) {\n          // Use native JS to prepend option (faster)\n          this.selectpicker.view.titleOption.className = 'bs-title-option';\n          this.selectpicker.view.titleOption.value = '';\n\n          // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.\n          // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs,\n          // if so, the select will have the data-selected attribute\n          selectTitleOption = !selectedOption || (selectedIndex === firstSelectableIndex && selectedOption.defaultSelected === false && this.$element.data('selected') === undefined);\n        }\n\n        if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) {\n          element.insertBefore(this.selectpicker.view.titleOption, element.firstChild);\n        }\n\n        // Set selected *after* appending to select,\n        // otherwise the option doesn't get selected in IE\n        // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11\n        if (selectTitleOption && isNotBackForward) {\n          element.selectedIndex = 0;\n        } else if (document.readyState !== 'complete') {\n          // if navigation type is back_forward, there's a chance the select will have its value set by BFCache\n          // wait for that value to be set, then run render again\n          window.addEventListener('pageshow', function () {\n            if (that.selectpicker.view.displayedValue !== element.value) that.render();\n          });\n        }\n      }\n\n      return updateIndex;\n    },\n\n    fetchData: function (callback, type, page, searchValue) {\n      page = page || 1;\n      type = type || 'data';\n\n      var that = this,\n          data = this.options.source[type],\n          builtData;\n\n      if (data) {\n        this.options.virtualScroll = true;\n\n        if (typeof data === 'function') {\n          data.call(\n            this,\n            function (data, more, totalItems) {\n              var current = that.selectpicker[type === 'search' ? 'search' : 'main'];\n              current.hasMore = more;\n              current.totalItems = totalItems;\n              builtData = that.buildData(data, type);\n              callback.call(that, builtData);\n              that.$element.trigger('fetched' + EVENT_KEY);\n            },\n            page,\n            searchValue\n          );\n        } else if (Array.isArray(data)) {\n          builtData = that.buildData(data, type);\n          callback.call(that, builtData);\n        }\n      } else {\n        builtData = this.buildData(false, type);\n        callback.call(that, builtData);\n      }\n    },\n\n    buildData: function (data, type) {\n      var that = this;\n      var dataGetter = data === false ? getOptionData.fromOption : getOptionData.fromDataSource;\n\n      var optionSelector = ':not([hidden]):not([data-hidden=\"true\"]):not([style*=\"display: none\"])',\n          mainData = [],\n          startLen = this.selectpicker.main.data ? this.selectpicker.main.data.length : 0,\n          optID = 0,\n          startIndex = this.setPlaceholder() && !data ? 1 : 0; // append the titleOption if necessary and skip the first option in the loop\n\n      if (type === 'search') {\n        startLen = this.selectpicker.search.data.length;\n      }\n\n      if (this.options.hideDisabled) optionSelector += ':not(:disabled)';\n\n      var selectOptions = data ? data.filter(filterHidden, this) : this.$element[0].querySelectorAll('select > *' + optionSelector);\n\n      function addDivider (config) {\n        var previousData = mainData[mainData.length - 1];\n\n        // ensure optgroup doesn't create back-to-back dividers\n        if (\n          previousData &&\n          previousData.type === 'divider' &&\n          (previousData.optID || config.optID)\n        ) {\n          return;\n        }\n\n        config = config || {};\n        config.type = 'divider';\n\n        mainData.push(config);\n      }\n\n      function addOption (item, config) {\n        config = config || {};\n\n        config.divider = dataGetter(item, 'divider');\n\n        if (config.divider === true) {\n          addDivider({\n            optID: config.optID\n          });\n        } else {\n          var liIndex = mainData.length + startLen,\n              cssText = dataGetter(item, 'style'),\n              inlineStyle = cssText ? htmlEscape(cssText) : '',\n              optionClass = (item.className || '') + (config.optgroupClass || '');\n\n          if (config.optID) optionClass = 'opt ' + optionClass;\n\n          config.optionClass = optionClass.trim();\n          config.inlineStyle = inlineStyle;\n\n          config.text = dataGetter(item, 'text');\n          config.title = dataGetter(item, 'title');\n          config.content = dataGetter(item, 'content');\n          config.tokens = dataGetter(item, 'tokens');\n          config.subtext = dataGetter(item, 'subtext');\n          config.icon = dataGetter(item, 'icon');\n\n          config.display = config.content || config.text;\n          config.value = item.value === undefined ? item.text : item.value;\n          config.type = 'option';\n          config.index = liIndex;\n\n          config.option = !item.option ? item : item.option; // reference option element if it exists\n          config.option.liIndex = liIndex;\n          config.selected = !!item.selected;\n          config.disabled = config.disabled || !!item.disabled;\n\n          if (data !== false) {\n            if (that.selectpicker.optionValuesDataMap[config.value]) {\n              config = $.extend(that.selectpicker.optionValuesDataMap[config.value], config);\n            } else {\n              that.selectpicker.optionValuesDataMap[config.value] = config;\n            }\n          }\n\n          mainData.push(config);\n        }\n      }\n\n      function addOptgroup (index, selectOptions) {\n        var optgroup = selectOptions[index],\n            // skip placeholder option\n            previous = index - 1 < startIndex ? false : selectOptions[index - 1],\n            next = selectOptions[index + 1],\n            options = data ? optgroup.children.filter(filterHidden, this) : optgroup.querySelectorAll('option' + optionSelector);\n\n        if (!options.length) return;\n\n        var config = {\n              display: htmlEscape(dataGetter(item, 'label')),\n              subtext: dataGetter(optgroup, 'subtext'),\n              icon: dataGetter(optgroup, 'icon'),\n              type: 'optgroup-label',\n              optgroupClass: ' ' + (optgroup.className || ''),\n              optgroup: optgroup\n            },\n            headerIndex,\n            lastIndex;\n\n        optID++;\n\n        if (previous) {\n          addDivider({ optID: optID });\n        }\n\n        config.optID = optID;\n\n        mainData.push(config);\n\n        for (var j = 0, len = options.length; j < len; j++) {\n          var option = options[j];\n\n          if (j === 0) {\n            headerIndex = mainData.length - 1;\n            lastIndex = headerIndex + len;\n          }\n\n          addOption(option, {\n            headerIndex: headerIndex,\n            lastIndex: lastIndex,\n            optID: config.optID,\n            optgroupClass: config.optgroupClass,\n            disabled: optgroup.disabled\n          });\n        }\n\n        if (next) {\n          addDivider({ optID: optID });\n        }\n      }\n\n      for (var len = selectOptions.length, i = startIndex; i < len; i++) {\n        var item = selectOptions[i],\n            children = item.children;\n\n        if (children && children.length) {\n          addOptgroup.call(this, i, selectOptions);\n        } else {\n          addOption.call(this, item, {});\n        }\n      }\n\n      switch (type) {\n        case 'data': {\n          if (!this.selectpicker.main.data) {\n            this.selectpicker.main.data = [];\n          }\n          Array.prototype.push.apply(this.selectpicker.main.data, mainData);\n          this.selectpicker.current.data = this.selectpicker.main.data;\n          break;\n        }\n        case 'search': {\n          Array.prototype.push.apply(this.selectpicker.search.data, mainData);\n          break;\n        }\n      }\n\n      return mainData;\n    },\n\n    buildList: function (size, searching) {\n      var that = this,\n          selectData = searching ? this.selectpicker.search.data : this.selectpicker.main.data,\n          mainElements = [],\n          widestOptionLength = 0;\n\n      if ((that.options.showTick || that.multiple) && !elementTemplates.checkMark.parentNode) {\n        elementTemplates.checkMark.className = this.options.iconBase + ' ' + that.options.tickIcon + ' check-mark';\n        elementTemplates.a.appendChild(elementTemplates.checkMark);\n      }\n\n      function buildElement (mainElements, item) {\n        var liElement,\n            combinedLength = 0;\n\n        switch (item.type) {\n          case 'divider':\n            liElement = generateOption.li(\n              false,\n              classNames.DIVIDER,\n              (item.optID ? item.optID + 'div' : undefined)\n            );\n\n            break;\n\n          case 'option':\n            liElement = generateOption.li(\n              generateOption.a(\n                generateOption.text.call(that, item),\n                item.optionClass,\n                item.inlineStyle\n              ),\n              '',\n              item.optID\n            );\n\n            if (liElement.firstChild) {\n              liElement.firstChild.id = that.selectId + '-' + item.index;\n            }\n\n            break;\n\n          case 'optgroup-label':\n            liElement = generateOption.li(\n              generateOption.label.call(that, item),\n              'dropdown-header' + item.optgroupClass,\n              item.optID\n            );\n\n            break;\n        }\n\n        if (!item.element) {\n          item.element = liElement;\n        } else {\n          item.element.innerHTML = liElement.innerHTML;\n        }\n        mainElements.push(item.element);\n\n        // count the number of characters in the option - not perfect, but should work in most cases\n        if (item.display) combinedLength += item.display.length;\n        if (item.subtext) combinedLength += item.subtext.length;\n        // if there is an icon, ensure this option's width is checked\n        if (item.icon) combinedLength += 1;\n\n        if (combinedLength > widestOptionLength) {\n          widestOptionLength = combinedLength;\n\n          // guess which option is the widest\n          // use this when calculating menu width\n          // not perfect, but it's fast, and the width will be updating accordingly when scrolling\n          that.selectpicker.view.widestOption = mainElements[mainElements.length - 1];\n        }\n      }\n\n      var startIndex = size || 0;\n\n      for (var len = selectData.length, i = startIndex; i < len; i++) {\n        var item = selectData[i];\n\n        buildElement(mainElements, item);\n      }\n\n      if (size) {\n        if (searching) {\n          Array.prototype.push.apply(this.selectpicker.search.elements, mainElements);\n        } else {\n          Array.prototype.push.apply(this.selectpicker.main.elements, mainElements);\n          this.selectpicker.current.elements = this.selectpicker.main.elements;\n        }\n      } else {\n        if (searching) {\n          this.selectpicker.search.elements = mainElements;\n        } else {\n          this.selectpicker.main.elements = this.selectpicker.current.elements = mainElements;\n        }\n      }\n    },\n\n    findLis: function () {\n      return this.$menuInner.find('.inner > li');\n    },\n\n    render: function (init) {\n      var that = this,\n          element = this.$element[0],\n          // ensure titleOption is appended and selected (if necessary) before getting selectedOptions\n          placeholderSelected = this.setPlaceholder() && element.selectedIndex === 0,\n          selectedOptions = getSelectedOptions.call(this),\n          selectedCount = selectedOptions.length,\n          selectedValues = getSelectValues.call(this, selectedOptions),\n          button = this.$button[0],\n          buttonInner = button.querySelector('.filter-option-inner-inner'),\n          multipleSeparator = document.createTextNode(this.options.multipleSeparator),\n          titleFragment = elementTemplates.fragment.cloneNode(false),\n          showCount,\n          countMax,\n          hasContent = false;\n\n      function createSelected (item) {\n        if (item.selected) {\n          that.createOption(item, true);\n        } else if (item.children && item.children.length) {\n          item.children.map(createSelected);\n        }\n      }\n\n      // create selected option elements to ensure select value is correct\n      if (this.options.source.data && init) {\n        selectedOptions.map(createSelected);\n        element.appendChild(this.selectpicker.main.optionQueue);\n\n        if (placeholderSelected) placeholderSelected = element.selectedIndex === 0;\n      }\n\n      button.classList.toggle('bs-placeholder', that.multiple ? !selectedCount : !selectedValues && selectedValues !== 0);\n\n      if (!that.multiple && selectedOptions.length === 1) {\n        that.selectpicker.view.displayedValue = selectedValues;\n      }\n\n      if (this.options.selectedTextFormat === 'static') {\n        titleFragment = generateOption.text.call(this, { text: this.options.placeholder }, true);\n      } else {\n        showCount = this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1 && selectedCount > 0;\n\n        // determine if the number of selected options will be shown (showCount === true)\n        if (showCount) {\n          countMax = this.options.selectedTextFormat.split('>');\n          showCount = (countMax.length > 1 && selectedCount > countMax[1]) || (countMax.length === 1 && selectedCount >= 2);\n        }\n\n        // only loop through all selected options if the count won't be shown\n        if (showCount === false) {\n          if (!placeholderSelected) {\n            for (var selectedIndex = 0; selectedIndex < selectedCount; selectedIndex++) {\n              if (selectedIndex < 50) {\n                var option = selectedOptions[selectedIndex],\n                    titleOptions = {};\n\n                if (option) {\n                  if (this.multiple && selectedIndex > 0) {\n                    titleFragment.appendChild(multipleSeparator.cloneNode(false));\n                  }\n\n                  if (option.title) {\n                    titleOptions.text = option.title;\n                  } else if (option.content && that.options.showContent) {\n                    titleOptions.content = option.content.toString();\n                    hasContent = true;\n                  } else {\n                    if (that.options.showIcon) {\n                      titleOptions.icon = option.icon;\n                    }\n                    if (that.options.showSubtext && !that.multiple && option.subtext) titleOptions.subtext = ' ' + option.subtext;\n                    titleOptions.text = option.text.trim();\n                  }\n\n                  titleFragment.appendChild(generateOption.text.call(this, titleOptions, true));\n                }\n              } else {\n                break;\n              }\n            }\n\n            // add ellipsis\n            if (selectedCount > 49) {\n              titleFragment.appendChild(document.createTextNode('...'));\n            }\n          }\n        } else {\n          var optionSelector = ':not([hidden]):not([data-hidden=\"true\"]):not([data-divider=\"true\"]):not([style*=\"display: none\"])';\n          if (this.options.hideDisabled) optionSelector += ':not(:disabled)';\n\n          // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected, etc.\n          var totalCount = this.$element[0].querySelectorAll('select > option' + optionSelector + ', optgroup' + optionSelector + ' option' + optionSelector).length,\n              tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedCount, totalCount) : this.options.countSelectedText;\n\n          titleFragment = generateOption.text.call(this, {\n            text: tr8nText.replace('{0}', selectedCount.toString()).replace('{1}', totalCount.toString())\n          }, true);\n        }\n      }\n\n      // If the select doesn't have a title, then use the default, or if nothing is set at all, use noneSelectedText\n      if (!titleFragment.childNodes.length) {\n        titleFragment = generateOption.text.call(this, {\n          text: this.options.placeholder ? this.options.placeholder : this.options.noneSelectedText\n        }, true);\n      }\n\n      // if the select has a title, apply it to the button, and if not, apply titleFragment text\n      // strip all HTML tags and trim the result, then unescape any escaped tags\n      button.title = titleFragment.textContent.replace(/<[^>]*>?/g, '').trim();\n\n      if (this.options.sanitize && hasContent) {\n        sanitizeHtml([titleFragment], that.options.whiteList, that.options.sanitizeFn);\n      }\n\n      buttonInner.innerHTML = '';\n      buttonInner.appendChild(titleFragment);\n\n      if (version.major < 4 && this.$newElement[0].classList.contains('bs3-has-addon')) {\n        var filterExpand = button.querySelector('.filter-expand'),\n            clone = buttonInner.cloneNode(true);\n\n        clone.className = 'filter-expand';\n\n        if (filterExpand) {\n          button.replaceChild(clone, filterExpand);\n        } else {\n          button.appendChild(clone);\n        }\n      }\n\n      this.$element.trigger('rendered' + EVENT_KEY);\n    },\n\n    /**\n     * @param [style]\n     * @param [status]\n     */\n    setStyle: function (newStyle, status) {\n      var button = this.$button[0],\n          newElement = this.$newElement[0],\n          style = this.options.style.trim(),\n          buttonClass;\n\n      if (this.$element.attr('class')) {\n        this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]/gi, ''));\n      }\n\n      if (version.major < 4) {\n        newElement.classList.add('bs3');\n\n        if (newElement.parentNode.classList && newElement.parentNode.classList.contains('input-group') &&\n            (newElement.previousElementSibling || newElement.nextElementSibling) &&\n            (newElement.previousElementSibling || newElement.nextElementSibling).classList.contains('input-group-addon')\n        ) {\n          newElement.classList.add('bs3-has-addon');\n        }\n      }\n\n      if (newStyle) {\n        buttonClass = newStyle.trim();\n      } else {\n        buttonClass = style;\n      }\n\n      if (status == 'add') {\n        if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' '));\n      } else if (status == 'remove') {\n        if (buttonClass) button.classList.remove.apply(button.classList, buttonClass.split(' '));\n      } else {\n        if (style) button.classList.remove.apply(button.classList, style.split(' '));\n        if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' '));\n      }\n    },\n\n    liHeight: function (refresh) {\n      if (!refresh && (this.options.size === false || Object.keys(this.sizeInfo).length)) return;\n\n      var newElement = elementTemplates.div.cloneNode(false),\n          menu = elementTemplates.div.cloneNode(false),\n          menuInner = elementTemplates.div.cloneNode(false),\n          menuInnerInner = document.createElement('ul'),\n          divider = elementTemplates.li.cloneNode(false),\n          dropdownHeader = elementTemplates.li.cloneNode(false),\n          li,\n          a = elementTemplates.a.cloneNode(false),\n          text = elementTemplates.span.cloneNode(false),\n          header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null,\n          search = this.options.liveSearch ? elementTemplates.div.cloneNode(false) : null,\n          actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,\n          doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null,\n          firstOption = this.$element[0].options[0];\n\n      this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth;\n\n      text.className = 'text';\n      a.className = 'dropdown-item ' + (firstOption ? firstOption.className : '');\n      newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW;\n      newElement.style.width = 0; // ensure button width doesn't affect natural width of menu when calculating\n      if (this.options.width === 'auto') menu.style.minWidth = 0;\n      menu.className = classNames.MENU + ' ' + classNames.SHOW;\n      menuInner.className = 'inner ' + classNames.SHOW;\n      menuInnerInner.className = classNames.MENU + ' inner ' + (version.major >= '4' ? classNames.SHOW : '');\n      divider.className = classNames.DIVIDER;\n      dropdownHeader.className = 'dropdown-header';\n\n      text.appendChild(document.createTextNode('\\u200b'));\n\n      if (this.selectpicker.current.data.length) {\n        for (var i = 0; i < this.selectpicker.current.data.length; i++) {\n          var data = this.selectpicker.current.data[i];\n          if (data.type === 'option' && $(data.element.firstChild).css('display') !== 'none') {\n            li = data.element;\n            break;\n          }\n        }\n      } else {\n        li = elementTemplates.li.cloneNode(false);\n        a.appendChild(text);\n        li.appendChild(a);\n      }\n\n      dropdownHeader.appendChild(text.cloneNode(true));\n\n      if (this.selectpicker.view.widestOption) {\n        menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true));\n      }\n\n      menuInnerInner.appendChild(li);\n      menuInnerInner.appendChild(divider);\n      menuInnerInner.appendChild(dropdownHeader);\n      if (header) menu.appendChild(header);\n      if (search) {\n        var input = document.createElement('input');\n        search.className = 'bs-searchbox';\n        input.className = 'form-control';\n        search.appendChild(input);\n        menu.appendChild(search);\n      }\n      if (actions) menu.appendChild(actions);\n      menuInner.appendChild(menuInnerInner);\n      menu.appendChild(menuInner);\n      if (doneButton) menu.appendChild(doneButton);\n      newElement.appendChild(menu);\n\n      document.body.appendChild(newElement);\n\n      var liHeight = li.offsetHeight,\n          dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0,\n          headerHeight = header ? header.offsetHeight : 0,\n          searchHeight = search ? search.offsetHeight : 0,\n          actionsHeight = actions ? actions.offsetHeight : 0,\n          doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,\n          dividerHeight = $(divider).outerHeight(true),\n          menuStyle = window.getComputedStyle(menu),\n          menuWidth = menu.offsetWidth,\n          menuPadding = {\n            vert: toInteger(menuStyle.paddingTop) +\n                  toInteger(menuStyle.paddingBottom) +\n                  toInteger(menuStyle.borderTopWidth) +\n                  toInteger(menuStyle.borderBottomWidth),\n            horiz: toInteger(menuStyle.paddingLeft) +\n                  toInteger(menuStyle.paddingRight) +\n                  toInteger(menuStyle.borderLeftWidth) +\n                  toInteger(menuStyle.borderRightWidth)\n          },\n          menuExtras = {\n            vert: menuPadding.vert +\n                  toInteger(menuStyle.marginTop) +\n                  toInteger(menuStyle.marginBottom) + 2,\n            horiz: menuPadding.horiz +\n                  toInteger(menuStyle.marginLeft) +\n                  toInteger(menuStyle.marginRight) + 2\n          },\n          scrollBarWidth;\n\n      menuInner.style.overflowY = 'scroll';\n\n      scrollBarWidth = menu.offsetWidth - menuWidth;\n\n      document.body.removeChild(newElement);\n\n      this.sizeInfo.liHeight = liHeight;\n      this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight;\n      this.sizeInfo.headerHeight = headerHeight;\n      this.sizeInfo.searchHeight = searchHeight;\n      this.sizeInfo.actionsHeight = actionsHeight;\n      this.sizeInfo.doneButtonHeight = doneButtonHeight;\n      this.sizeInfo.dividerHeight = dividerHeight;\n      this.sizeInfo.menuPadding = menuPadding;\n      this.sizeInfo.menuExtras = menuExtras;\n      this.sizeInfo.menuWidth = menuWidth;\n      this.sizeInfo.menuInnerInnerWidth = menuWidth - menuPadding.horiz;\n      this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth;\n      this.sizeInfo.scrollBarWidth = scrollBarWidth;\n      this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight;\n\n      this.setPositionData();\n    },\n\n    getSelectPosition: function () {\n      var that = this,\n          $window = $(window),\n          pos = that.$newElement.offset(),\n          $container = $(that.options.container),\n          containerPos;\n\n      if (that.options.container && $container.length && !$container.is('body')) {\n        containerPos = $container.offset();\n        containerPos.top += parseInt($container.css('borderTopWidth'));\n        containerPos.left += parseInt($container.css('borderLeftWidth'));\n      } else {\n        containerPos = { top: 0, left: 0 };\n      }\n\n      var winPad = that.options.windowPadding;\n\n      this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();\n      this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - containerPos.top - winPad[2];\n      this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();\n      this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - containerPos.left - winPad[1];\n      this.sizeInfo.selectOffsetTop -= winPad[0];\n      this.sizeInfo.selectOffsetLeft -= winPad[3];\n    },\n\n    setMenuSize: function (isAuto) {\n      this.getSelectPosition();\n\n      var selectWidth = this.sizeInfo.selectWidth,\n          liHeight = this.sizeInfo.liHeight,\n          headerHeight = this.sizeInfo.headerHeight,\n          searchHeight = this.sizeInfo.searchHeight,\n          actionsHeight = this.sizeInfo.actionsHeight,\n          doneButtonHeight = this.sizeInfo.doneButtonHeight,\n          divHeight = this.sizeInfo.dividerHeight,\n          menuPadding = this.sizeInfo.menuPadding,\n          menuInnerHeight,\n          menuHeight,\n          divLength = 0,\n          minHeight,\n          _minHeight,\n          maxHeight,\n          menuInnerMinHeight,\n          estimate,\n          isDropup;\n\n      if (this.options.dropupAuto) {\n        // Get the estimated height of the menu without scrollbars.\n        // This is useful for smaller menus, where there might be plenty of room\n        // below the button without setting dropup, but we can't know\n        // the exact height of the menu until createView is called later\n        estimate = liHeight * this.selectpicker.current.data.length + menuPadding.vert;\n\n        isDropup = this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot;\n\n        // ensure dropup doesn't change while searching (so menu doesn't bounce back and forth)\n        if (this.selectpicker.isSearching === true) {\n          isDropup = this.selectpicker.dropup;\n        }\n\n        this.$newElement.toggleClass(classNames.DROPUP, isDropup);\n        this.selectpicker.dropup = isDropup;\n      }\n\n      if (this.options.size === 'auto') {\n        _minHeight = this.selectpicker.current.data.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0;\n        menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert;\n        minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight;\n        menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0);\n\n        if (this.$newElement.hasClass(classNames.DROPUP)) {\n          menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert;\n        }\n\n        maxHeight = menuHeight;\n        menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert;\n      } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) {\n        for (var i = 0; i < this.options.size; i++) {\n          if (this.selectpicker.current.data[i].type === 'divider') divLength++;\n        }\n\n        menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;\n        menuInnerHeight = menuHeight - menuPadding.vert;\n        maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight;\n        minHeight = menuInnerMinHeight = '';\n      }\n\n      this.$menu.css({\n        'max-height': maxHeight + 'px',\n        'overflow': 'hidden',\n        'min-height': minHeight + 'px'\n      });\n\n      this.$menuInner.css({\n        'max-height': menuInnerHeight + 'px',\n        'overflow': 'hidden auto',\n        'min-height': menuInnerMinHeight + 'px'\n      });\n\n      // ensure menuInnerHeight is always a positive number to prevent issues calculating chunkSize in createView\n      this.sizeInfo.menuInnerHeight = Math.max(menuInnerHeight, 1);\n\n      if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) {\n        this.sizeInfo.hasScrollBar = true;\n        this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth;\n      }\n\n      if (this.options.dropdownAlignRight === 'auto') {\n        this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < (this.sizeInfo.totalMenuWidth - selectWidth));\n      }\n\n      if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update();\n    },\n\n    setSize: function (refresh) {\n      this.liHeight(refresh);\n\n      if (this.options.header) this.$menu.css('padding-top', 0);\n\n      if (this.options.size !== false) {\n        var that = this,\n            $window = $(window);\n\n        this.setMenuSize();\n\n        if (this.options.liveSearch) {\n          this.$searchbox\n            .off('input.setMenuSize propertychange.setMenuSize')\n            .on('input.setMenuSize propertychange.setMenuSize', function () {\n              return that.setMenuSize();\n            });\n        }\n\n        if (this.options.size === 'auto') {\n          $window\n            .off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize')\n            .on('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize', function () {\n              return that.setMenuSize();\n            });\n        } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) {\n          $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize');\n        }\n      }\n\n      this.createView(false, true, refresh);\n    },\n\n    setWidth: function () {\n      var that = this;\n\n      if (this.options.width === 'auto') {\n        requestAnimationFrame(function () {\n          that.$menu.css('min-width', '0');\n\n          that.$element.on('loaded' + EVENT_KEY, function () {\n            that.liHeight();\n            that.setMenuSize();\n\n            // Get correct width if element is hidden\n            var $selectClone = that.$newElement.clone().appendTo('body'),\n                btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth();\n\n            $selectClone.remove();\n\n            // Set width to whatever's larger, button title or longest option\n            that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth);\n            that.$newElement.css('width', that.sizeInfo.selectWidth + 'px');\n          });\n        });\n      } else if (this.options.width === 'fit') {\n        // Remove inline min-width so width can be changed from 'auto'\n        this.$menu.css('min-width', '');\n        this.$newElement.css('width', '').addClass('fit-width');\n      } else if (this.options.width) {\n        // Remove inline min-width so width can be changed from 'auto'\n        this.$menu.css('min-width', '');\n        this.$newElement.css('width', this.options.width);\n      } else {\n        // Remove inline min-width/width so width can be changed\n        this.$menu.css('min-width', '');\n        this.$newElement.css('width', '');\n      }\n      // Remove fit-width class if width is changed programmatically\n      if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\n        this.$newElement[0].classList.remove('fit-width');\n      }\n    },\n\n    selectPosition: function () {\n      this.$bsContainer = $('<div class=\"bs-container\" />');\n\n      var that = this,\n          $container = $(this.options.container),\n          pos,\n          containerPos,\n          actualHeight,\n          getPlacement = function ($element) {\n            var containerPosition = {},\n                // fall back to dropdown's default display setting if display is not manually set\n                display = that.options.display || (\n                  // Bootstrap 3 doesn't have $.fn.dropdown.Constructor.Default\n                  $.fn.dropdown.Constructor.Default ? $.fn.dropdown.Constructor.Default.display\n                  : false\n                );\n\n            that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP));\n            pos = $element.offset();\n\n            if (!$container.is('body')) {\n              containerPos = $container.offset();\n              containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();\n              containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();\n            } else {\n              containerPos = { top: 0, left: 0 };\n            }\n\n            actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight;\n\n            // Bootstrap 4+ uses Popper for menu positioning\n            if (version.major < 4 || display === 'static') {\n              containerPosition.top = pos.top - containerPos.top + actualHeight;\n              containerPosition.left = pos.left - containerPos.left;\n            }\n\n            containerPosition.width = $element[0].offsetWidth;\n\n            that.$bsContainer.css(containerPosition);\n          };\n\n      this.$button.on('click.bs.dropdown.data-api', function () {\n        if (that.isDisabled()) {\n          return;\n        }\n\n        getPlacement(that.$newElement);\n\n        that.$bsContainer\n          .appendTo(that.options.container)\n          .toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW))\n          .append(that.$menu);\n      });\n\n      $(window)\n        .off('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId)\n        .on('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId, function () {\n          var isActive = that.$newElement.hasClass(classNames.SHOW);\n\n          if (isActive) getPlacement(that.$newElement);\n        });\n\n      this.$element.on('hide' + EVENT_KEY, function () {\n        that.$menu.data('height', that.$menu.height());\n        that.$bsContainer.detach();\n      });\n    },\n\n    createOption: function (data, init) {\n      var optionData = !data.option ? data : data.option;\n\n      if (optionData && optionData.nodeType !== 1) {\n        var option = (init ? elementTemplates.selectedOption : elementTemplates.option).cloneNode(true);\n        if (optionData.value !== undefined) option.value = optionData.value;\n        option.textContent = optionData.text;\n\n        option.selected = true;\n\n        if (optionData.liIndex !== undefined) {\n          option.liIndex = optionData.liIndex;\n        } else if (!init) {\n          option.liIndex = data.index;\n        }\n\n        data.option = option;\n\n        this.selectpicker.main.optionQueue.appendChild(option);\n      }\n    },\n\n    setOptionStatus: function (selectedOnly) {\n      var that = this;\n\n      that.noScroll = false;\n\n      if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) {\n        for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) {\n          var liData = that.selectpicker.current.data[i + that.selectpicker.view.position0],\n              option = liData.option;\n\n          if (option) {\n            if (selectedOnly !== true) {\n              that.setDisabled(liData);\n            }\n\n            that.setSelected(liData);\n          }\n        }\n\n        // append optionQueue (documentFragment with option elements for select options)\n        if (this.options.source.data) this.$element[0].appendChild(this.selectpicker.main.optionQueue);\n      }\n    },\n\n    /**\n     * @param {Object} liData - the option object that is being changed\n     * @param {boolean} selected - true if the option is being selected, false if being deselected\n     */\n    setSelected: function (liData, selected) {\n      selected = selected === undefined ? liData.selected : selected;\n\n      var li = liData.element,\n          activeElementIsSet = this.activeElement !== undefined,\n          thisIsActive = this.activeElement === li,\n          prevActive,\n          a,\n          // if current option is already active\n          // OR\n          // if the current option is being selected, it's NOT multiple, and\n          // activeElement is undefined:\n          //  - when the menu is first being opened, OR\n          //  - after a search has been performed, OR\n          //  - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeElement)\n          keepActive = thisIsActive || (selected && !this.multiple && !activeElementIsSet);\n\n      if (!li) return;\n\n      if (selected !== undefined) {\n        liData.selected = selected;\n        if (liData.option) liData.option.selected = selected;\n      }\n\n      if (selected && this.options.source.data) {\n        this.createOption(liData, false);\n      }\n\n      a = li.firstChild;\n\n      if (selected) {\n        this.selectedElement = li;\n      }\n\n      li.classList.toggle('selected', selected);\n\n      if (keepActive) {\n        this.focusItem(li, liData);\n        this.selectpicker.view.currentActive = li;\n        this.activeElement = li;\n      } else {\n        this.defocusItem(li);\n      }\n\n      if (a) {\n        a.classList.toggle('selected', selected);\n\n        if (selected) {\n          a.setAttribute('aria-selected', true);\n        } else {\n          if (this.multiple) {\n            a.setAttribute('aria-selected', false);\n          } else {\n            a.removeAttribute('aria-selected');\n          }\n        }\n      }\n\n      if (!keepActive && !activeElementIsSet && selected && this.prevActiveElement !== undefined) {\n        prevActive = this.prevActiveElement;\n\n        this.defocusItem(prevActive);\n      }\n    },\n\n    /**\n     * @param {number} index - the index of the option that is being disabled\n     * @param {boolean} disabled - true if the option is being disabled, false if being enabled\n     */\n    setDisabled: function (liData) {\n      var disabled = liData.disabled,\n          li = liData.element,\n          a;\n\n      if (!li) return;\n\n      a = li.firstChild;\n\n      li.classList.toggle(classNames.DISABLED, disabled);\n\n      if (a) {\n        if (version.major >= '4') a.classList.toggle(classNames.DISABLED, disabled);\n\n        if (disabled) {\n          a.setAttribute('aria-disabled', disabled);\n          a.setAttribute('tabindex', -1);\n        } else {\n          a.removeAttribute('aria-disabled');\n          a.setAttribute('tabindex', 0);\n        }\n      }\n    },\n\n    isDisabled: function () {\n      return this.$element[0].disabled;\n    },\n\n    checkDisabled: function () {\n      if (this.isDisabled()) {\n        this.$newElement[0].classList.add(classNames.DISABLED);\n        this.$button.addClass(classNames.DISABLED).attr('aria-disabled', true);\n      } else {\n        if (this.$button[0].classList.contains(classNames.DISABLED)) {\n          this.$newElement[0].classList.remove(classNames.DISABLED);\n          this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false);\n        }\n      }\n    },\n\n    clickListener: function () {\n      var that = this,\n          $document = $(document);\n\n      $document.data('spaceSelect', false);\n\n      this.$button.on('keyup', function (e) {\n        if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {\n          e.preventDefault();\n          $document.data('spaceSelect', false);\n        }\n      });\n\n      this.$newElement.on('show.bs.dropdown', function () {\n        if (!that.dropdown && version.major === '4') {\n          that.dropdown = that.$button.data('bs.dropdown');\n          that.dropdown._menu = that.$menu[0];\n        }\n      });\n\n      function clearSelection (e) {\n        if (that.multiple) {\n          that.deselectAll();\n        } else {\n          var element = that.$element[0],\n              prevValue = element.value,\n              prevIndex = element.selectedIndex,\n              prevOption = element.options[prevIndex],\n              prevData = prevOption ? that.selectpicker.main.data[prevOption.liIndex] : false;\n\n          if (prevData) {\n            that.setSelected(prevData, false);\n          }\n\n          element.selectedIndex = 0;\n\n          changedArguments = [prevIndex, false, prevValue];\n          that.$element.triggerNative('change');\n        }\n\n        // remove selected styling if menu is open\n        if (that.$newElement.hasClass(classNames.SHOW)) {\n          if (that.options.liveSearch) {\n            that.$searchbox.trigger('focus');\n          }\n\n          that.createView(false);\n        }\n      }\n\n      this.$button.on('click.bs.dropdown.data-api', function (e) {\n        if (that.options.allowClear) {\n          var target = e.target,\n              clearButton = that.$clearButton[0];\n\n          // IE doesn't support event listeners on child elements of buttons\n          if (/MSIE|Trident/.test(window.navigator.userAgent)) {\n            target = document.elementFromPoint(e.clientX, e.clientY);\n          }\n\n          if (target === clearButton || target.parentElement === clearButton) {\n            e.stopImmediatePropagation();\n            clearSelection(e);\n          }\n        }\n\n        if (!that.$newElement.hasClass(classNames.SHOW)) {\n          that.setSize();\n        }\n      });\n\n      function setFocus () {\n        if (that.options.liveSearch) {\n          that.$searchbox.trigger('focus');\n        } else {\n          that.$menuInner.trigger('focus');\n        }\n      }\n\n      function checkPopperExists () {\n        if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state) {\n          setFocus();\n        } else {\n          requestAnimationFrame(checkPopperExists);\n        }\n      }\n\n      this.$element.on('shown' + EVENT_KEY, function () {\n        if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) {\n          that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop;\n        }\n\n        if (version.major > 3) {\n          requestAnimationFrame(checkPopperExists);\n        } else {\n          setFocus();\n        }\n      });\n\n      // ensure posinset and setsize are correct before selecting an option via a click\n      this.$menuInner.on('mouseenter', 'li a', function (e) {\n        var hoverLi = this.parentElement,\n            position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0,\n            index = Array.prototype.indexOf.call(hoverLi.parentElement.children, hoverLi),\n            hoverData = that.selectpicker.current.data[index + position0];\n\n        that.focusItem(hoverLi, hoverData, true);\n      });\n\n      this.$menuInner.on('click', 'li a', function (e, retainActive) {\n        var $this = $(this),\n            element = that.$element[0],\n            position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0,\n            clickedData = that.selectpicker.current.data[$this.parent().index() + position0],\n            clickedElement = clickedData.element,\n            prevValue = getSelectValues.call(that),\n            prevIndex = element.selectedIndex,\n            prevOption = element.options[prevIndex],\n            prevData = prevOption ? that.selectpicker.main.data[prevOption.liIndex] : false,\n            triggerChange = true;\n\n        // Don't close on multi choice menu\n        if (that.multiple && that.options.maxOptions !== 1) {\n          e.stopPropagation();\n        }\n\n        e.preventDefault();\n\n        // Don't run if the select is disabled\n        if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) {\n          var option = clickedData.option,\n              $option = $(option),\n              state = option.selected,\n              optgroupData = that.selectpicker.current.data.find(function (datum) {\n                return datum.optID === clickedData.optID && datum.type === 'optgroup-label';\n              }),\n              optgroup = optgroupData ? optgroupData.optgroup : undefined,\n              dataGetter = optgroup instanceof Element ? getOptionData.fromOption : getOptionData.fromDataSource,\n              optgroupOptions = optgroup && optgroup.children,\n              maxOptions = parseInt(that.options.maxOptions),\n              maxOptionsGrp = optgroup && parseInt(dataGetter(optgroup, 'maxOptions')) || false;\n\n          if (clickedElement === that.activeElement) retainActive = true;\n\n          if (!retainActive) {\n            that.prevActiveElement = that.activeElement;\n            that.activeElement = undefined;\n          }\n\n          if (!that.multiple || maxOptions === 1) { // Deselect previous option if not multi select\n            if (prevData) that.setSelected(prevData, false);\n            that.setSelected(clickedData, true);\n          } else { // Toggle the clicked option if multi select.\n            that.setSelected(clickedData, !state);\n            that.focusedParent.focus();\n\n            if (maxOptions !== false || maxOptionsGrp !== false) {\n              var maxReached = maxOptions < getSelectedOptions.call(that).length,\n                  selectedGroupOptions = 0;\n\n              if (optgroup && optgroup.children) {\n                for (var i = 0; i < optgroup.children.length; i++) {\n                  if (optgroup.children[i].selected) selectedGroupOptions++;\n                }\n              }\n\n              var maxReachedGrp = maxOptionsGrp < selectedGroupOptions;\n\n              if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {\n                if (maxOptions && maxOptions === 1) {\n                  element.selectedIndex = -1;\n                  that.setOptionStatus(true);\n                } else if (maxOptionsGrp && maxOptionsGrp === 1) {\n                  for (var i = 0; i < optgroupOptions.length; i++) {\n                    var _option = optgroupOptions[i];\n                    that.setSelected(that.selectpicker.current.data[_option.liIndex], false);\n                  }\n\n                  that.setSelected(clickedData, true);\n                } else {\n                  var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,\n                      maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,\n                      maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\n                      maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\n                      $notify = $('<div class=\"notify\"></div>');\n                  // If {var} is set in array, replace it\n                  /** @deprecated */\n                  if (maxOptionsArr[2]) {\n                    maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\n                    maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\n                  }\n\n                  that.$menu.append($notify);\n\n                  if (maxOptions && maxReached) {\n                    $notify.append($('<div>' + maxTxt + '</div>'));\n                    triggerChange = false;\n                    that.$element.trigger('maxReached' + EVENT_KEY);\n                  }\n\n                  if (maxOptionsGrp && maxReachedGrp) {\n                    $notify.append($('<div>' + maxTxtGrp + '</div>'));\n                    triggerChange = false;\n                    that.$element.trigger('maxReachedGrp' + EVENT_KEY);\n                  }\n\n                  setTimeout(function () {\n                    that.setSelected(clickedData, false);\n                  }, 10);\n\n                  $notify[0].classList.add('fadeOut');\n\n                  setTimeout(function () {\n                    $notify.remove();\n                  }, 1050);\n                }\n              }\n            }\n          }\n\n          if (that.options.source.data) that.$element[0].appendChild(that.selectpicker.main.optionQueue);\n\n          if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) {\n            that.$button.trigger('focus');\n          } else if (that.options.liveSearch) {\n            that.$searchbox.trigger('focus');\n          }\n\n          // Trigger select 'change'\n          if (triggerChange) {\n            if (that.multiple || prevIndex !== element.selectedIndex) {\n              // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed.\n              changedArguments = [option.index, $option.prop('selected'), prevValue];\n              that.$element\n                .triggerNative('change');\n            }\n          }\n        }\n      });\n\n      this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) {\n        if (e.currentTarget == this) {\n          e.preventDefault();\n          e.stopPropagation();\n          if (that.options.liveSearch && !$(e.target).hasClass('close')) {\n            that.$searchbox.trigger('focus');\n          } else {\n            that.$button.trigger('focus');\n          }\n        }\n      });\n\n      this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {\n        e.preventDefault();\n        e.stopPropagation();\n        if (that.options.liveSearch) {\n          that.$searchbox.trigger('focus');\n        } else {\n          that.$button.trigger('focus');\n        }\n      });\n\n      this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () {\n        that.$button.trigger('click');\n      });\n\n      this.$searchbox.on('click', function (e) {\n        e.stopPropagation();\n      });\n\n      this.$menu.on('click', '.actions-btn', function (e) {\n        if (that.options.liveSearch) {\n          that.$searchbox.trigger('focus');\n        } else {\n          that.$button.trigger('focus');\n        }\n\n        e.preventDefault();\n        e.stopPropagation();\n\n        if ($(this).hasClass('bs-select-all')) {\n          that.selectAll();\n        } else {\n          that.deselectAll();\n        }\n      });\n\n      this.$button\n        .on('focus' + EVENT_KEY, function (e) {\n          var tabindex = that.$element[0].getAttribute('tabindex');\n\n          // only change when button is actually focused\n          if (tabindex !== undefined && e.originalEvent && e.originalEvent.isTrusted) {\n            // apply select element's tabindex to ensure correct order is followed when tabbing to the next element\n            this.setAttribute('tabindex', tabindex);\n            // set element's tabindex to -1 to allow for reverse tabbing\n            that.$element[0].setAttribute('tabindex', -1);\n            that.selectpicker.view.tabindex = tabindex;\n          }\n        })\n        .on('blur' + EVENT_KEY, function (e) {\n          // revert everything to original tabindex\n          if (that.selectpicker.view.tabindex !== undefined && e.originalEvent && e.originalEvent.isTrusted) {\n            that.$element[0].setAttribute('tabindex', that.selectpicker.view.tabindex);\n            this.setAttribute('tabindex', -1);\n            that.selectpicker.view.tabindex = undefined;\n          }\n        });\n\n      this.$element\n        .on('change' + EVENT_KEY, function () {\n          that.render();\n          that.$element.trigger('changed' + EVENT_KEY, changedArguments);\n          changedArguments = null;\n        })\n        .on('focus' + EVENT_KEY, function () {\n          if (!that.options.mobile) that.$button[0].focus();\n        });\n    },\n\n    liveSearchListener: function () {\n      var that = this;\n\n      this.$button.on('click.bs.dropdown.data-api', function () {\n        if (!!that.$searchbox.val()) {\n          that.$searchbox.val('');\n          that.selectpicker.search.previousValue = undefined;\n        }\n      });\n\n      this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) {\n        e.stopPropagation();\n      });\n\n      this.$searchbox.on('input propertychange', function () {\n        var searchValue = that.$searchbox[0].value;\n\n        that.selectpicker.search.elements = [];\n        that.selectpicker.search.data = [];\n\n        if (searchValue) {\n          that.selectpicker.search.previousValue = searchValue;\n\n          if (that.options.source.search) {\n            that.fetchData(function (builtData) {\n              that.render();\n              that.buildList(undefined, true);\n              that.noScroll = true;\n              that.$menuInner.scrollTop(0);\n              that.createView(true);\n              showNoResults.call(that, builtData, searchValue);\n            }, 'search', 0, searchValue);\n          } else {\n            var i,\n                searchMatch = [],\n                q = searchValue.toUpperCase(),\n                cache = {},\n                cacheArr = [],\n                searchStyle = that._searchStyle(),\n                normalizeSearch = that.options.liveSearchNormalize;\n\n            if (normalizeSearch) q = normalizeToBase(q);\n\n            for (var i = 0; i < that.selectpicker.main.data.length; i++) {\n              var li = that.selectpicker.main.data[i];\n\n              if (!cache[i]) {\n                cache[i] = stringSearch(li, q, searchStyle, normalizeSearch);\n              }\n\n              if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) {\n                if (li.headerIndex > 0) {\n                  cache[li.headerIndex - 1] = true;\n                  cacheArr.push(li.headerIndex - 1);\n                }\n\n                cache[li.headerIndex] = true;\n                cacheArr.push(li.headerIndex);\n\n                cache[li.lastIndex + 1] = true;\n              }\n\n              if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i);\n            }\n\n            for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) {\n              var index = cacheArr[i],\n                  prevIndex = cacheArr[i - 1],\n                  li = that.selectpicker.main.data[index],\n                  liPrev = that.selectpicker.main.data[prevIndex];\n\n              if (li.type !== 'divider' || (li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i)) {\n                that.selectpicker.search.data.push(li);\n                searchMatch.push(that.selectpicker.main.elements[index]);\n              }\n            }\n\n            that.activeElement = undefined;\n            that.noScroll = true;\n            that.$menuInner.scrollTop(0);\n            that.selectpicker.search.elements = searchMatch;\n            that.createView(true);\n            showNoResults.call(that, searchMatch, searchValue);\n          }\n        } else if (that.selectpicker.search.previousValue) { // for IE11 (#2402)\n          that.$menuInner.scrollTop(0);\n          that.createView(false);\n        }\n      });\n    },\n\n    _searchStyle: function () {\n      return this.options.liveSearchStyle || 'contains';\n    },\n\n    val: function (value) {\n      var element = this.$element[0];\n\n      if (typeof value !== 'undefined') {\n        var selectedOptions = getSelectedOptions.call(this),\n            prevValue = getSelectValues.call(this, selectedOptions);\n\n        changedArguments = [null, null, prevValue];\n\n        if (!Array.isArray(value)) value = [ value ];\n\n        value.map(String);\n\n        for (var i = 0; i < selectedOptions.length; i++) {\n          var item = selectedOptions[i];\n\n          if (item && value.indexOf(String(item.value)) === -1) {\n            this.setSelected(item, false);\n          }\n        }\n\n        // only update selected value if it matches an existing option\n        this.selectpicker.main.data.filter(function (item) {\n          if (value.indexOf(String(item.value)) !== -1) {\n            this.setSelected(item, true);\n            return true;\n          }\n\n          return false;\n        }, this);\n\n        if (this.options.source.data) element.appendChild(this.selectpicker.main.optionQueue);\n\n        this.$element.trigger('changed' + EVENT_KEY, changedArguments);\n\n        if (this.$newElement.hasClass(classNames.SHOW)) {\n          if (this.multiple) {\n            this.setOptionStatus(true);\n          } else {\n            var liSelectedIndex = (element.options[element.selectedIndex] || {}).liIndex;\n\n            if (typeof liSelectedIndex === 'number') {\n              this.setSelected(this.selectpicker.current.data[liSelectedIndex], true);\n            }\n          }\n        }\n\n        this.render();\n\n        changedArguments = null;\n\n        return this.$element;\n      } else {\n        return this.$element.val();\n      }\n    },\n\n    changeAll: function (status) {\n      if (!this.multiple) return;\n      if (typeof status === 'undefined') status = true;\n\n      var element = this.$element[0],\n          previousSelected = 0,\n          currentSelected = 0,\n          prevValue = getSelectValues.call(this);\n\n      element.classList.add('bs-select-hidden');\n\n      for (var i = 0, data = this.selectpicker.current.data, len = data.length; i < len; i++) {\n        var liData = data[i],\n            option = liData.option;\n\n        if (option && !liData.disabled && liData.type !== 'divider') {\n          if (liData.selected) previousSelected++;\n          option.selected = status;\n          liData.selected = status;\n          if (status === true) currentSelected++;\n        }\n      }\n\n      element.classList.remove('bs-select-hidden');\n\n      if (previousSelected === currentSelected) return;\n\n      this.setOptionStatus();\n\n      changedArguments = [null, null, prevValue];\n\n      this.$element\n        .triggerNative('change');\n    },\n\n    selectAll: function () {\n      return this.changeAll(true);\n    },\n\n    deselectAll: function () {\n      return this.changeAll(false);\n    },\n\n    toggle: function (e, state) {\n      var isActive,\n          triggerClick = state === undefined;\n\n      e = e || window.event;\n\n      if (e) e.stopPropagation();\n\n      if (triggerClick === false) {\n        isActive = this.$newElement[0].classList.contains(classNames.SHOW);\n        triggerClick = state === true && isActive === false || state === false && isActive === true;\n      }\n\n      if (triggerClick) this.$button.trigger('click.bs.dropdown.data-api');\n    },\n\n    open: function (e) {\n      this.toggle(e, true);\n    },\n\n    close: function (e) {\n      this.toggle(e, false);\n    },\n\n    keydown: function (e) {\n      var $this = $(this),\n          isToggle = $this.hasClass('dropdown-toggle'),\n          $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU),\n          that = $parent.data('this'),\n          $items = that.findLis(),\n          index,\n          isActive,\n          liActive,\n          activeLi,\n          offset,\n          updateScroll = false,\n          downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab,\n          isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab,\n          scrollTop = that.$menuInner[0].scrollTop,\n          isVirtual = that.isVirtual(),\n          position0 = isVirtual === true ? that.selectpicker.view.position0 : 0;\n\n      // do nothing if a function key is pressed\n      if (e.which >= 112 && e.which <= 123) return;\n\n      isActive = that.$menu.hasClass(classNames.SHOW);\n\n      if (\n        !isActive &&\n        (\n          isArrowKey ||\n          (e.which >= 48 && e.which <= 57) ||\n          (e.which >= 96 && e.which <= 105) ||\n          (e.which >= 65 && e.which <= 90)\n        )\n      ) {\n        that.$button.trigger('click.bs.dropdown.data-api');\n\n        if (that.options.liveSearch) {\n          that.$searchbox.trigger('focus');\n          return;\n        }\n      }\n\n      if (e.which === keyCodes.ESCAPE && isActive) {\n        e.preventDefault();\n        that.$button.trigger('click.bs.dropdown.data-api').trigger('focus');\n      }\n\n      if (isArrowKey) { // if up or down\n        if (!$items.length) return;\n\n        liActive = that.activeElement;\n        index = liActive ? Array.prototype.indexOf.call(liActive.parentElement.children, liActive) : -1;\n\n        if (index !== -1) {\n          that.defocusItem(liActive);\n        }\n\n        if (e.which === keyCodes.ARROW_UP) { // up\n          if (index !== -1) index--;\n          if (index + position0 < 0) index += $items.length;\n\n          if (!that.selectpicker.view.canHighlight[index + position0]) {\n            index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0;\n            if (index === -1) index = $items.length - 1;\n          }\n        } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down\n          index++;\n          if (index + position0 >= that.selectpicker.view.canHighlight.length) index = that.selectpicker.view.firstHighlightIndex;\n\n          if (!that.selectpicker.view.canHighlight[index + position0]) {\n            index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true);\n          }\n        }\n\n        e.preventDefault();\n\n        var liActiveIndex = position0 + index;\n\n        if (e.which === keyCodes.ARROW_UP) { // up\n          // scroll to bottom and highlight last option\n          if (position0 === 0 && index === $items.length - 1) {\n            that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight;\n\n            liActiveIndex = that.selectpicker.current.elements.length - 1;\n          } else {\n            activeLi = that.selectpicker.current.data[liActiveIndex];\n\n            // could be undefined if no results exist\n            if (activeLi) {\n              offset = activeLi.position - activeLi.height;\n\n              updateScroll = offset < scrollTop;\n            }\n          }\n        } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down\n          // scroll to top and highlight first option\n          if (index === that.selectpicker.view.firstHighlightIndex) {\n            that.$menuInner[0].scrollTop = 0;\n\n            liActiveIndex = that.selectpicker.view.firstHighlightIndex;\n          } else {\n            activeLi = that.selectpicker.current.data[liActiveIndex];\n\n            // could be undefined if no results exist\n            if (activeLi) {\n              offset = activeLi.position - that.sizeInfo.menuInnerHeight;\n\n              updateScroll = offset > scrollTop;\n            }\n          }\n        }\n\n        liActive = that.selectpicker.current.elements[liActiveIndex];\n\n        that.activeElement = (that.selectpicker.current.data[liActiveIndex] || {}).element;\n\n        that.focusItem(liActive);\n\n        that.selectpicker.view.currentActive = liActive;\n\n        if (updateScroll) that.$menuInner[0].scrollTop = offset;\n\n        if (that.options.liveSearch) {\n          that.$searchbox.trigger('focus');\n        } else {\n          $this.trigger('focus');\n        }\n      } else if (\n        (!$this.is('input') && !REGEXP_TAB_OR_ESCAPE.test(e.which)) ||\n        (e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory)\n      ) {\n        var searchMatch,\n            matches = [],\n            keyHistory;\n\n        e.preventDefault();\n\n        that.selectpicker.keydown.keyHistory += keyCodeMap[e.which];\n\n        if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel);\n        that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start();\n\n        keyHistory = that.selectpicker.keydown.keyHistory;\n\n        // if all letters are the same, set keyHistory to just the first character when searching\n        if (/^(.)\\1+$/.test(keyHistory)) {\n          keyHistory = keyHistory.charAt(0);\n        }\n\n        // find matches\n        for (var i = 0; i < that.selectpicker.current.data.length; i++) {\n          var li = that.selectpicker.current.data[i],\n              hasMatch;\n\n          hasMatch = stringSearch(li, keyHistory, 'startsWith', true);\n\n          if (hasMatch && that.selectpicker.view.canHighlight[i]) {\n            matches.push(li.element);\n          }\n        }\n\n        if (matches.length) {\n          var matchIndex = 0;\n\n          $items.removeClass('active').find('a').removeClass('active');\n\n          // either only one key has been pressed or they are all the same key\n          if (keyHistory.length === 1) {\n            matchIndex = matches.indexOf(that.activeElement);\n\n            if (matchIndex === -1 || matchIndex === matches.length - 1) {\n              matchIndex = 0;\n            } else {\n              matchIndex++;\n            }\n          }\n\n          searchMatch = matches[matchIndex];\n\n          activeLi = that.selectpicker.main.data[searchMatch];\n\n          if (scrollTop - activeLi.position > 0) {\n            offset = activeLi.position - activeLi.height;\n            updateScroll = true;\n          } else {\n            offset = activeLi.position - that.sizeInfo.menuInnerHeight;\n            // if the option is already visible at the current scroll position, just keep it the same\n            updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight;\n          }\n\n          liActive = that.selectpicker.main.elements[searchMatch];\n\n          that.activeElement = liActive;\n\n          that.focusItem(liActive);\n\n          if (liActive) liActive.firstChild.focus();\n\n          if (updateScroll) that.$menuInner[0].scrollTop = offset;\n\n          $this.trigger('focus');\n        }\n      }\n\n      // Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\n      if (\n        isActive &&\n        (\n          (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory) ||\n          e.which === keyCodes.ENTER ||\n          (e.which === keyCodes.TAB && that.options.selectOnTab)\n        )\n      ) {\n        if (e.which !== keyCodes.SPACE) e.preventDefault();\n\n        if (!that.options.liveSearch || e.which !== keyCodes.SPACE) {\n          that.$menuInner.find('.active a').trigger('click', true); // retain active class\n          $this.trigger('focus');\n\n          if (!that.options.liveSearch) {\n            // Prevent screen from scrolling if the user hits the spacebar\n            e.preventDefault();\n            // Fixes spacebar selection of dropdown items in FF & IE\n            $(document).data('spaceSelect', true);\n          }\n        }\n      }\n    },\n\n    mobile: function () {\n      // ensure mobile is set to true if mobile function is called after init\n      this.options.mobile = true;\n      this.$element[0].classList.add('mobile-device');\n    },\n\n    refresh: function () {\n      var that = this;\n      // update options if data attributes have been changed\n      var config = $.extend({}, this.options, getAttributesObject(this.$element), this.$element.data()); // in this order on refresh, as user may change attributes on select, and options object is not passed on refresh\n      this.options = config;\n\n      if (this.options.source.data) {\n        this.render();\n        this.buildList();\n      } else {\n        this.fetchData(function () {\n          that.render();\n          that.buildList();\n        });\n      }\n\n      this.checkDisabled();\n      this.setStyle();\n      this.setWidth();\n\n      this.setSize(true);\n\n      this.$element.trigger('refreshed' + EVENT_KEY);\n    },\n\n    hide: function () {\n      this.$newElement.hide();\n    },\n\n    show: function () {\n      this.$newElement.show();\n    },\n\n    remove: function () {\n      this.$newElement.remove();\n      this.$element.remove();\n    },\n\n    destroy: function () {\n      this.$newElement.before(this.$element).remove();\n\n      if (this.$bsContainer) {\n        this.$bsContainer.remove();\n      } else {\n        this.$menu.remove();\n      }\n\n      if (this.selectpicker.view.titleOption && this.selectpicker.view.titleOption.parentNode) {\n        this.selectpicker.view.titleOption.parentNode.removeChild(this.selectpicker.view.titleOption);\n      }\n\n      this.$element\n        .off(EVENT_KEY)\n        .removeData('selectpicker')\n        .removeClass('bs-select-hidden selectpicker mobile-device');\n\n      $(window).off(EVENT_KEY + '.' + this.selectId);\n    }\n  };\n\n  // SELECTPICKER PLUGIN DEFINITION\n  // ==============================\n  function Plugin (option) {\n    // get the args of the outer function..\n    var args = arguments;\n    // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them\n    // to get lost/corrupted in android 2.3 and IE9 #715 #775\n    var _option = option;\n\n    [].shift.apply(args);\n\n    // if the version was not set successfully\n    if (!version.success) {\n      // try to retreive it again\n      try {\n        version.full = (getVersion() || '').split(' ')[0].split('.');\n      } catch (err) {\n        // fall back to use BootstrapVersion if set\n        if (Selectpicker.BootstrapVersion) {\n          version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.');\n        } else {\n          version.full = [version.major, '0', '0'];\n\n          console.warn(\n            'There was an issue retrieving Bootstrap\\'s version. ' +\n            'Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. ' +\n            'If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.',\n            err\n          );\n        }\n      }\n\n      version.major = version.full[0];\n      version.success = true;\n    }\n\n    if (version.major >= '4') {\n      // some defaults need to be changed if using Bootstrap 4\n      // check to see if they have already been manually changed before forcing them to update\n      var toUpdate = [];\n\n      if (Selectpicker.DEFAULTS.style === classNames.BUTTONCLASS) toUpdate.push({ name: 'style', className: 'BUTTONCLASS' });\n      if (Selectpicker.DEFAULTS.iconBase === classNames.ICONBASE) toUpdate.push({ name: 'iconBase', className: 'ICONBASE' });\n      if (Selectpicker.DEFAULTS.tickIcon === classNames.TICKICON) toUpdate.push({ name: 'tickIcon', className: 'TICKICON' });\n\n      classNames.DIVIDER = 'dropdown-divider';\n      classNames.SHOW = 'show';\n      classNames.BUTTONCLASS = 'btn-light';\n      classNames.POPOVERHEADER = 'popover-header';\n      classNames.ICONBASE = '';\n      classNames.TICKICON = 'bs-ok-default';\n\n      for (var i = 0; i < toUpdate.length; i++) {\n        var option = toUpdate[i];\n        Selectpicker.DEFAULTS[option.name] = classNames[option.className];\n      }\n    }\n\n    if (version.major > '4') {\n      Selector.DATA_TOGGLE = 'data-bs-toggle=\"dropdown\"';\n    }\n\n    var value;\n    var chain = this.each(function () {\n      var $this = $(this);\n      if ($this.is('select')) {\n        var data = $this.data('selectpicker'),\n            options = typeof _option == 'object' && _option;\n\n        // for backwards compatibility\n        // (using title as placeholder is deprecated - remove in v2.0.0)\n        if (options.title) options.placeholder = options.title;\n\n        if (!data) {\n          var dataAttributes = $this.data();\n\n          for (var dataAttr in dataAttributes) {\n            if (Object.prototype.hasOwnProperty.call(dataAttributes, dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n              delete dataAttributes[dataAttr];\n            }\n          }\n\n          var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, getAttributesObject($this), dataAttributes, options); // this is correct order on initial render\n          config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), dataAttributes.template, options.template);\n          config.source = $.extend({}, Selectpicker.DEFAULTS.source, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.source : {}), options.source);\n          $this.data('selectpicker', (data = new Selectpicker(this, config)));\n        } else if (options) {\n          for (var i in options) {\n            if (Object.prototype.hasOwnProperty.call(options, i)) {\n              data.options[i] = options[i];\n            }\n          }\n        }\n\n        if (typeof _option == 'string') {\n          if (data[_option] instanceof Function) {\n            value = data[_option].apply(data, args);\n          } else {\n            value = data.options[_option];\n          }\n        }\n      }\n    });\n\n    if (typeof value !== 'undefined') {\n      // noinspection JSUnusedAssignment\n      return value;\n    } else {\n      return chain;\n    }\n  }\n\n  var old = $.fn.selectpicker;\n  $.fn.selectpicker = Plugin;\n  $.fn.selectpicker.Constructor = Selectpicker;\n\n  // SELECTPICKER NO CONFLICT\n  // ========================\n  $.fn.selectpicker.noConflict = function () {\n    $.fn.selectpicker = old;\n    return this;\n  };\n\n  // get Bootstrap's keydown event handler for either Bootstrap 4 or Bootstrap 3\n  function keydownHandler () {\n    if (version.major < 5) {\n      if ($.fn.dropdown) {\n        // wait to define until function is called in case Bootstrap isn't loaded yet\n        var bootstrapKeydown = $.fn.dropdown.Constructor._dataApiKeydownHandler || $.fn.dropdown.Constructor.prototype.keydown;\n        return bootstrapKeydown.apply(this, arguments);\n      }\n    } else {\n      return Dropdown.dataApiKeydownHandler;\n    }\n  }\n\n  $(document)\n    .off('keydown.bs.dropdown.data-api')\n    .on('keydown.bs.dropdown.data-api', ':not(.bootstrap-select) > [' + Selector.DATA_TOGGLE + ']', keydownHandler)\n    .on('keydown.bs.dropdown.data-api', ':not(.bootstrap-select) > .dropdown-menu', keydownHandler)\n    .on('keydown' + EVENT_KEY, '.bootstrap-select [' + Selector.DATA_TOGGLE + '], .bootstrap-select [role=\"listbox\"], .bootstrap-select .bs-searchbox input', Selectpicker.prototype.keydown)\n    .on('focusin.modal', '.bootstrap-select [' + Selector.DATA_TOGGLE + '], .bootstrap-select [role=\"listbox\"], .bootstrap-select .bs-searchbox input', function (e) {\n      e.stopPropagation();\n    });\n\n  // SELECTPICKER DATA-API\n  // =====================\n  document.addEventListener('DOMContentLoaded', function () {\n    $('.selectpicker').each(function () {\n      var $selectpicker = $(this);\n      Plugin.call($selectpicker, $selectpicker.data());\n    });\n  });\n})(jQuery);\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n", "var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n", "var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n", "var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n", "var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n", "var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n", "var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n", "var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n", "var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n", "var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n", "var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n", "var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n", "var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n", "var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n", "var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n", "var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n", "var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n", "var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n", "var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n", "var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n", "var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n", "var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n", "var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n  return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n", "var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n", "var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n", "var baseHas = require('./_baseHas'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n  return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n", "var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n", "var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n", "var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n", "var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n", "var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignMergeValue;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n", "var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n", "var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n", "var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n", "var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n", "var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n", "var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n", "var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n", "var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n", "var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n", "var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n", "var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n", "var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n", "var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nmodule.exports = safeGet;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n", "var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n", "var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n", "var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n", "var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n", "var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n", "var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nmodule.exports = baseMerge;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n", "var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n", "var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n", "var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n", "var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n", "var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n", "var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n", "var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n", "var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n", "var baseFindIndex = require('./_baseFindIndex'),\n    baseIsNaN = require('./_baseIsNaN'),\n    strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n", "var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n", "var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n", "var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n", "var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n", "/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n", "var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n", "/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n", "var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n", "var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n", "var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n", "var toString = require('./toString'),\n    upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayReduce;\n", "/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = basePropertyOf;\n", "var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n", "var deburrLetter = require('./_deburrLetter'),\n    toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('d\u00E9j\u00E0 vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n", "/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n", "/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n", "var asciiWords = require('./_asciiWords'),\n    hasUnicodeWord = require('./_hasUnicodeWord'),\n    toString = require('./toString'),\n    unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n", "var arrayReduce = require('./_arrayReduce'),\n    deburr = require('./deburr'),\n    words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nmodule.exports = createCompounder;\n", "var capitalize = require('./capitalize'),\n    createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n  var result = '';\n  if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n    return result;\n  }\n  // Leverage the exponentiation by squaring algorithm for a faster repeat.\n  // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n  do {\n    if (n % 2) {\n      result += string;\n    }\n    n = nativeFloor(n / 2);\n    if (n) {\n      string += string;\n    }\n  } while (n);\n\n  return result;\n}\n\nmodule.exports = baseRepeat;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n", "var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n", "var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n", "var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n", "var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n", "var baseRepeat = require('./_baseRepeat'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toInteger = require('./toInteger'),\n    toString = require('./toString');\n\n/**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\nfunction repeat(string, n, guard) {\n  if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n    n = 1;\n  } else {\n    n = toInteger(n);\n  }\n  return baseRepeat(toString(string), n);\n}\n\nmodule.exports = repeat;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n", "var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n", "var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n", "var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n", "var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n", "var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n", "var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n", "var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n", "var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n", "var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n", "var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n", "var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n", "var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n", "var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n", "var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n", "var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n", "var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n", "var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n", "var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n", "var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n", "var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n", "var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n", "var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n", "var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n", "var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n", "var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n", "var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nmodule.exports = baseSortBy;\n", "var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nmodule.exports = compareAscending;\n", "var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n", "var arrayMap = require('./_arrayMap'),\n    baseGet = require('./_baseGet'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    baseSortBy = require('./_baseSortBy'),\n    baseUnary = require('./_baseUnary'),\n    compareMultiple = require('./_compareMultiple'),\n    identity = require('./identity'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        }\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nmodule.exports = baseOrderBy;\n", "var baseFlatten = require('./_baseFlatten'),\n    baseOrderBy = require('./_baseOrderBy'),\n    baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n", "/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n  var index = -1,\n      length = props.length,\n      valsLength = values.length,\n      result = {};\n\n  while (++index < length) {\n    var value = index < valsLength ? values[index] : undefined;\n    assignFunc(result, props[index], value);\n  }\n  return result;\n}\n\nmodule.exports = baseZipObject;\n", "var assignValue = require('./_assignValue'),\n    baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n  return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nmodule.exports = baseRange;\n", "var baseRange = require('./_baseRange'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nmodule.exports = createRange;\n", "var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n", "/*\nTrix 1.3.5\nCopyright \u00A9 2024 37signals, LLC\nhttp://trix-editor.org/\n */\n(function(){}).call(this),function(){var t;null==window.Set&&(window.Set=t=function(){function t(){this.clear()}return t.prototype.clear=function(){return this.values=[]},t.prototype.has=function(t){return-1!==this.values.indexOf(t)},t.prototype.add=function(t){return this.has(t)||this.values.push(t),this},t.prototype[\"delete\"]=function(t){var e;return-1===(e=this.values.indexOf(t))?!1:(this.values.splice(e,1),!0)},t.prototype.forEach=function(){var t;return(t=this.values).forEach.apply(t,arguments)},t}())}.call(this),function(t){function e(){}function n(t,e){return function(){t.apply(e,arguments)}}function i(t){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof t)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],c(t,this)}function o(t,e){for(;3===t._state;)t=t._value;return 0===t._state?void t._deferreds.push(e):(t._handled=!0,void h(function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null===n)return void(1===t._state?r:s)(e.promise,t._value);var i;try{i=n(t._value)}catch(o){return void s(e.promise,o)}r(e.promise,i)}))}function r(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var o=e.then;if(e instanceof i)return t._state=3,t._value=e,void a(t);if(\"function\"==typeof o)return void c(n(o,e),t)}t._state=1,t._value=e,a(t)}catch(r){s(t,r)}}function s(t,e){t._state=2,t._value=e,a(t)}function a(t){2===t._state&&0===t._deferreds.length&&setTimeout(function(){t._handled||p(t._value)},1);for(var e=0,n=t._deferreds.length;n>e;e++)o(t,t._deferreds[e]);t._deferreds=null}function u(t,e,n){this.onFulfilled=\"function\"==typeof t?t:null,this.onRejected=\"function\"==typeof e?e:null,this.promise=n}function c(t,e){var n=!1;try{t(function(t){n||(n=!0,r(e,t))},function(t){n||(n=!0,s(e,t))})}catch(i){if(n)return;n=!0,s(e,i)}}var l=setTimeout,h=\"function\"==typeof setImmediate&&setImmediate||function(t){l(t,1)},p=function(t){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",t)};i.prototype[\"catch\"]=function(t){return this.then(null,t)},i.prototype.then=function(t,n){var r=new i(e);return o(this,new u(t,n,r)),r},i.all=function(t){var e=Array.prototype.slice.call(t);return new i(function(t,n){function i(r,s){try{if(s&&(\"object\"==typeof s||\"function\"==typeof s)){var a=s.then;if(\"function\"==typeof a)return void a.call(s,function(t){i(r,t)},n)}e[r]=s,0===--o&&t(e)}catch(u){n(u)}}if(0===e.length)return t([]);for(var o=e.length,r=0;r<e.length;r++)i(r,e[r])})},i.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(t){return new i(function(e,n){n(t)})},i.race=function(t){return new i(function(e,n){for(var i=0,o=t.length;o>i;i++)t[i].then(e,n)})},i._setImmediateFn=function(t){h=t},i._setUnhandledRejectionFn=function(t){p=t},\"undefined\"!=typeof module&&module.exports?module.exports=i:t.Promise||(t.Promise=i)}(this),function(){var t=\"object\"==typeof window.customElements,e=\"function\"==typeof document.registerElement,n=t||e;n||(/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\"undefined\"==typeof WeakMap&&!function(){var t=Object.defineProperty,e=Date.now()%1e9,n=function(){this.name=\"__st\"+(1e9*Math.random()>>>0)+(e++ +\"__\")};n.prototype={set:function(e,n){var i=e[this.name];return i&&i[0]===e?i[1]=n:t(e,this.name,{value:[e,n],writable:!0}),this},get:function(t){var e;return(e=t[this.name])&&e[0]===t?e[1]:void 0},\"delete\":function(t){var e=t[this.name];return e&&e[0]===t?(e[0]=e[1]=void 0,!0):!1},has:function(t){var e=t[this.name];return e?e[0]===t:!1}},window.WeakMap=n}(),function(t){function e(t){A.push(t),b||(b=!0,g(i))}function n(t){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(t)||t}function i(){b=!1;var t=A;A=[],t.sort(function(t,e){return t.uid_-e.uid_});var e=!1;t.forEach(function(t){var n=t.takeRecords();o(t),n.length&&(t.callback_(n,t),e=!0)}),e&&i()}function o(t){t.nodes_.forEach(function(e){var n=m.get(e);n&&n.forEach(function(e){e.observer===t&&e.removeTransientObservers()})})}function r(t,e){for(var n=t;n;n=n.parentNode){var i=m.get(n);if(i)for(var o=0;o<i.length;o++){var r=i[o],s=r.options;if(n===t||s.subtree){var a=e(s);a&&r.enqueue(a)}}}}function s(t){this.callback_=t,this.nodes_=[],this.records_=[],this.uid_=++C}function a(t,e){this.type=t,this.target=e,this.addedNodes=[],this.removedNodes=[],this.previousSibling=null,this.nextSibling=null,this.attributeName=null,this.attributeNamespace=null,this.oldValue=null}function u(t){var e=new a(t.type,t.target);return e.addedNodes=t.addedNodes.slice(),e.removedNodes=t.removedNodes.slice(),e.previousSibling=t.previousSibling,e.nextSibling=t.nextSibling,e.attributeName=t.attributeName,e.attributeNamespace=t.attributeNamespace,e.oldValue=t.oldValue,e}function c(t,e){return x=new a(t,e)}function l(t){return w?w:(w=u(x),w.oldValue=t,w)}function h(){x=w=void 0}function p(t){return t===w||t===x}function d(t,e){return t===e?t:w&&p(t)?w:null}function f(t,e,n){this.observer=t,this.target=e,this.options=n,this.transientObservedNodes=[]}if(!t.JsMutationObserver){var g,m=new WeakMap;if(/Trident|Edge/.test(navigator.userAgent))g=setTimeout;else if(window.setImmediate)g=window.setImmediate;else{var v=[],y=String(Math.random());window.addEventListener(\"message\",function(t){if(t.data===y){var e=v;v=[],e.forEach(function(t){t()})}}),g=function(t){v.push(t),window.postMessage(y,\"*\")}}var b=!1,A=[],C=0;s.prototype={observe:function(t,e){if(t=n(t),!e.childList&&!e.attributes&&!e.characterData||e.attributeOldValue&&!e.attributes||e.attributeFilter&&e.attributeFilter.length&&!e.attributes||e.characterDataOldValue&&!e.characterData)throw new SyntaxError;var i=m.get(t);i||m.set(t,i=[]);for(var o,r=0;r<i.length;r++)if(i[r].observer===this){o=i[r],o.removeListeners(),o.options=e;break}o||(o=new f(this,t,e),i.push(o),this.nodes_.push(t)),o.addListeners()},disconnect:function(){this.nodes_.forEach(function(t){for(var e=m.get(t),n=0;n<e.length;n++){var i=e[n];if(i.observer===this){i.removeListeners(),e.splice(n,1);break}}},this),this.records_=[]},takeRecords:function(){var t=this.records_;return this.records_=[],t}};var x,w;f.prototype={enqueue:function(t){var n=this.observer.records_,i=n.length;if(n.length>0){var o=n[i-1],r=d(o,t);if(r)return void(n[i-1]=r)}else e(this.observer);n[i]=t},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(t){var e=this.options;e.attributes&&t.addEventListener(\"DOMAttrModified\",this,!0),e.characterData&&t.addEventListener(\"DOMCharacterDataModified\",this,!0),e.childList&&t.addEventListener(\"DOMNodeInserted\",this,!0),(e.childList||e.subtree)&&t.addEventListener(\"DOMNodeRemoved\",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(t){var e=this.options;e.attributes&&t.removeEventListener(\"DOMAttrModified\",this,!0),e.characterData&&t.removeEventListener(\"DOMCharacterDataModified\",this,!0),e.childList&&t.removeEventListener(\"DOMNodeInserted\",this,!0),(e.childList||e.subtree)&&t.removeEventListener(\"DOMNodeRemoved\",this,!0)},addTransientObserver:function(t){if(t!==this.target){this.addListeners_(t),this.transientObservedNodes.push(t);var e=m.get(t);e||m.set(t,e=[]),e.push(this)}},removeTransientObservers:function(){var t=this.transientObservedNodes;this.transientObservedNodes=[],t.forEach(function(t){this.removeListeners_(t);for(var e=m.get(t),n=0;n<e.length;n++)if(e[n]===this){e.splice(n,1);break}},this)},handleEvent:function(t){switch(t.stopImmediatePropagation(),t.type){case\"DOMAttrModified\":var e=t.attrName,n=t.relatedNode.namespaceURI,i=t.target,o=new c(\"attributes\",i);o.attributeName=e,o.attributeNamespace=n;var s=t.attrChange===MutationEvent.ADDITION?null:t.prevValue;r(i,function(t){return!t.attributes||t.attributeFilter&&t.attributeFilter.length&&-1===t.attributeFilter.indexOf(e)&&-1===t.attributeFilter.indexOf(n)?void 0:t.attributeOldValue?l(s):o});break;case\"DOMCharacterDataModified\":var i=t.target,o=c(\"characterData\",i),s=t.prevValue;r(i,function(t){return t.characterData?t.characterDataOldValue?l(s):o:void 0});break;case\"DOMNodeRemoved\":this.addTransientObserver(t.target);case\"DOMNodeInserted\":var a,u,p=t.target;\"DOMNodeInserted\"===t.type?(a=[p],u=[]):(a=[],u=[p]);var d=p.previousSibling,f=p.nextSibling,o=c(\"childList\",t.target.parentNode);o.addedNodes=a,o.removedNodes=u,o.previousSibling=d,o.nextSibling=f,r(t.relatedNode,function(t){return t.childList?o:void 0})}h()}},t.JsMutationObserver=s,t.MutationObserver||(t.MutationObserver=s,s._isPolyfilled=!0)}}(self),function(){\"use strict\";if(!window.performance||!window.performance.now){var t=Date.now();window.performance={now:function(){return Date.now()-t}}}window.requestAnimationFrame||(window.requestAnimationFrame=function(){var t=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return t?function(e){return t(function(){e(performance.now())})}:function(t){return window.setTimeout(t,1e3/60)}}()),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(){return window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(t){clearTimeout(t)}}());var e=function(){var t=document.createEvent(\"Event\");return t.initEvent(\"foo\",!0,!0),t.preventDefault(),t.defaultPrevented}();if(!e){var n=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(n.call(this),Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0},configurable:!0}))}}var i=/Trident/.test(navigator.userAgent);if((!window.CustomEvent||i&&\"function\"!=typeof window.CustomEvent)&&(window.CustomEvent=function(t,e){e=e||{};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(t,Boolean(e.bubbles),Boolean(e.cancelable),e.detail),n},window.CustomEvent.prototype=window.Event.prototype),!window.Event||i&&\"function\"!=typeof window.Event){var o=window.Event;window.Event=function(t,e){e=e||{};var n=document.createEvent(\"Event\");return n.initEvent(t,Boolean(e.bubbles),Boolean(e.cancelable)),n},window.Event.prototype=o.prototype}}(window.WebComponents),window.CustomElements=window.CustomElements||{flags:{}},function(t){var e=t.flags,n=[],i=function(t){n.push(t)},o=function(){n.forEach(function(e){e(t)})};t.addModule=i,t.initializeModules=o,t.hasNative=Boolean(document.registerElement),t.isIE=/Trident/.test(navigator.userAgent),t.useNative=!e.register&&t.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||window.HTMLImports.useNative)}(window.CustomElements),window.CustomElements.addModule(function(t){function e(t,e){n(t,function(t){return e(t)?!0:void i(t,e)}),i(t,e)}function n(t,e,i){var o=t.firstElementChild;if(!o)for(o=t.firstChild;o&&o.nodeType!==Node.ELEMENT_NODE;)o=o.nextSibling;for(;o;)e(o,i)!==!0&&n(o,e,i),o=o.nextElementSibling;return null}function i(t,n){for(var i=t.shadowRoot;i;)e(i,n),i=i.olderShadowRoot}function o(t,e){r(t,e,[])}function r(t,e,n){if(t=window.wrap(t),!(n.indexOf(t)>=0)){n.push(t);for(var i,o=t.querySelectorAll(\"link[rel=\"+s+\"]\"),a=0,u=o.length;u>a&&(i=o[a]);a++)i.import&&r(i.import,e,n);e(t)}}var s=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:\"none\";t.forDocumentTree=o,t.forSubtree=e}),window.CustomElements.addModule(function(t){function e(t,e){return n(t,e)||i(t,e)}function n(e,n){return t.upgrade(e,n)?!0:void(n&&s(e))}function i(t,e){b(t,function(t){return n(t,e)?!0:void 0})}function o(t){w.push(t),x||(x=!0,setTimeout(r))}function r(){x=!1;for(var t,e=w,n=0,i=e.length;i>n&&(t=e[n]);n++)t();w=[]}function s(t){C?o(function(){a(t)}):a(t)}function a(t){t.__upgraded__&&!t.__attached&&(t.__attached=!0,t.attachedCallback&&t.attachedCallback())}function u(t){c(t),b(t,function(t){c(t)})}function c(t){C?o(function(){l(t)}):l(t)}function l(t){t.__upgraded__&&t.__attached&&(t.__attached=!1,t.detachedCallback&&t.detachedCallback())}function h(t){for(var e=t,n=window.wrap(document);e;){if(e==n)return!0;e=e.parentNode||e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host}}function p(t){if(t.shadowRoot&&!t.shadowRoot.__watched){y.dom&&console.log(\"watching shadow-root for: \",t.localName);for(var e=t.shadowRoot;e;)g(e),e=e.olderShadowRoot}}function d(t,n){if(y.dom){var i=n[0];if(i&&\"childList\"===i.type&&i.addedNodes&&i.addedNodes){for(var o=i.addedNodes[0];o&&o!==document&&!o.host;)o=o.parentNode;var r=o&&(o.URL||o._URL||o.host&&o.host.localName)||\"\";r=r.split(\"/?\").shift().split(\"/\").pop()}console.group(\"mutations (%d) [%s]\",n.length,r||\"\")}var s=h(t);n.forEach(function(t){\"childList\"===t.type&&(E(t.addedNodes,function(t){t.localName&&e(t,s)}),E(t.removedNodes,function(t){t.localName&&u(t)}))}),y.dom&&console.groupEnd()}function f(t){for(t=window.wrap(t),t||(t=window.wrap(document));t.parentNode;)t=t.parentNode;var e=t.__observer;e&&(d(t,e.takeRecords()),r())}function g(t){if(!t.__observer){var e=new MutationObserver(d.bind(this,t));e.observe(t,{childList:!0,subtree:!0}),t.__observer=e}}function m(t){t=window.wrap(t),y.dom&&console.group(\"upgradeDocument: \",t.baseURI.split(\"/\").pop());var n=t===window.wrap(document);e(t,n),g(t),y.dom&&console.groupEnd()}function v(t){A(t,m)}var y=t.flags,b=t.forSubtree,A=t.forDocumentTree,C=window.MutationObserver._isPolyfilled&&y[\"throttle-attached\"];t.hasPolyfillMutations=C,t.hasThrottledAttached=C;var x=!1,w=[],E=Array.prototype.forEach.call.bind(Array.prototype.forEach),S=Element.prototype.createShadowRoot;S&&(Element.prototype.createShadowRoot=function(){var t=S.call(this);return window.CustomElements.watchShadow(this),t}),t.watchShadow=p,t.upgradeDocumentTree=v,t.upgradeDocument=m,t.upgradeSubtree=i,t.upgradeAll=e,t.attached=s,t.takeRecords=f}),window.CustomElements.addModule(function(t){function e(e,i){if(\"template\"===e.localName&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(e),!e.__upgraded__&&e.nodeType===Node.ELEMENT_NODE){var o=e.getAttribute(\"is\"),r=t.getRegisteredDefinition(e.localName)||t.getRegisteredDefinition(o);if(r&&(o&&r.tag==e.localName||!o&&!r.extends))return n(e,r,i)}}function n(e,n,o){return s.upgrade&&console.group(\"upgrade:\",e.localName),n.is&&e.setAttribute(\"is\",n.is),i(e,n),e.__upgraded__=!0,r(e),o&&t.attached(e),t.upgradeSubtree(e,o),s.upgrade&&console.groupEnd(),e}function i(t,e){Object.__proto__?t.__proto__=e.prototype:(o(t,e.prototype,e.native),t.__proto__=e.prototype)}function o(t,e,n){for(var i={},o=e;o!==n&&o!==HTMLElement.prototype;){for(var r,s=Object.getOwnPropertyNames(o),a=0;r=s[a];a++)i[r]||(Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(o,r)),i[r]=1);o=Object.getPrototypeOf(o)}}function r(t){t.createdCallback&&t.createdCallback()}var s=t.flags;t.upgrade=e,t.upgradeWithDefinition=n,t.implementPrototype=i}),window.CustomElements.addModule(function(t){function e(e,i){var u=i||{};if(!e)throw new Error(\"document.registerElement: first argument `name` must not be empty\");if(e.indexOf(\"-\")<0)throw new Error(\"document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '\"+String(e)+\"'.\");if(o(e))throw new Error(\"Failed to execute 'registerElement' on 'Document': Registration failed for type '\"+String(e)+\"'. The type name is invalid.\");if(c(e))throw new Error(\"DuplicateDefinitionError: a type with name '\"+String(e)+\"' is already registered\");return u.prototype||(u.prototype=Object.create(HTMLElement.prototype)),u.__name=e.toLowerCase(),u.extends&&(u.extends=u.extends.toLowerCase()),u.lifecycle=u.lifecycle||{},u.ancestry=r(u.extends),s(u),a(u),n(u.prototype),l(u.__name,u),u.ctor=h(u),u.ctor.prototype=u.prototype,u.prototype.constructor=u.ctor,t.ready&&m(document),u.ctor}function n(t){if(!t.setAttribute._polyfilled){var e=t.setAttribute;t.setAttribute=function(t,n){i.call(this,t,n,e)};var n=t.removeAttribute;t.removeAttribute=function(t){i.call(this,t,null,n)},t.setAttribute._polyfilled=!0}}function i(t,e,n){t=t.toLowerCase();var i=this.getAttribute(t);n.apply(this,arguments);var o=this.getAttribute(t);this.attributeChangedCallback&&o!==i&&this.attributeChangedCallback(t,i,o)}function o(t){for(var e=0;e<C.length;e++)if(t===C[e])return!0}function r(t){var e=c(t);return e?r(e.extends).concat([e]):[]}function s(t){for(var e,n=t.extends,i=0;e=t.ancestry[i];i++)n=e.is&&e.tag;t.tag=n||t.__name,n&&(t.is=t.__name)}function a(t){if(!Object.__proto__){var e=HTMLElement.prototype;if(t.is){var n=document.createElement(t.tag);e=Object.getPrototypeOf(n)}for(var i,o=t.prototype,r=!1;o;)o==e&&(r=!0),i=Object.getPrototypeOf(o),i&&(o.__proto__=i),o=i;r||console.warn(t.tag+\" prototype not found in prototype chain for \"+t.is),t.native=e}}function u(t){return y(E(t.tag),t)}function c(t){return t?x[t.toLowerCase()]:void 0}function l(t,e){x[t]=e}function h(t){return function(){return u(t)}}function p(t,e,n){return t===w?d(e,n):S(t,e)}function d(t,e){t&&(t=t.toLowerCase()),e&&(e=e.toLowerCase());var n=c(e||t);if(n){if(t==n.tag&&e==n.is)return new n.ctor;if(!e&&!n.is)return new n.ctor}var i;return e?(i=d(t),i.setAttribute(\"is\",e),i):(i=E(t),t.indexOf(\"-\")>=0&&b(i,HTMLElement),i)}function f(t,e){var n=t[e];t[e]=function(){var t=n.apply(this,arguments);return v(t),t}}var g,m=(t.isIE,t.upgradeDocumentTree),v=t.upgradeAll,y=t.upgradeWithDefinition,b=t.implementPrototype,A=t.useNative,C=[\"annotation-xml\",\"color-profile\",\"font-face\",\"font-face-src\",\"font-face-uri\",\"font-face-format\",\"font-face-name\",\"missing-glyph\"],x={},w=\"http://www.w3.org/1999/xhtml\",E=document.createElement.bind(document),S=document.createElementNS.bind(document);g=Object.__proto__||A?function(t,e){return t instanceof e}:function(t,e){if(t instanceof e)return!0;for(var n=t;n;){if(n===e.prototype)return!0;n=n.__proto__}return!1},f(Node.prototype,\"cloneNode\"),f(document,\"importNode\"),document.registerElement=e,document.createElement=d,document.createElementNS=p,t.registry=x,t.instanceof=g,t.reservedTagList=C,t.getRegisteredDefinition=c,document.register=document.registerElement}),function(t){function e(){r(window.wrap(document)),window.CustomElements.ready=!0;var t=window.requestAnimationFrame||function(t){setTimeout(t,16)};t(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent(\"WebComponentsReady\",{bubbles:!0}))})})}var n=t.useNative,i=t.initializeModules;if(t.isIE,n){var o=function(){};t.watchShadow=o,t.upgrade=o,t.upgradeAll=o,t.upgradeDocumentTree=o,t.upgradeSubtree=o,t.takeRecords=o,t.instanceof=function(t,e){return t instanceof e}}else i();var r=t.upgradeDocumentTree,s=t.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(t){return t}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(t){t.import&&s(wrap(t.import))}),\"complete\"===document.readyState||t.flags.eager)e();else if(\"interactive\"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var a=window.HTMLImports&&!window.HTMLImports.ready?\"HTMLImportsLoaded\":\"DOMContentLoaded\";window.addEventListener(a,e)}else e()}(window.CustomElements))}.call(this),function(){}.call(this),function(){var t=this;(function(){(function(){this.Trix={VERSION:\"1.3.5\",ZERO_WIDTH_SPACE:\"\\ufeff\",NON_BREAKING_SPACE:\"\\xa0\",OBJECT_REPLACEMENT_CHARACTER:\"\\ufffc\",browser:{composesExistingText:/Android.*Chrome/.test(navigator.userAgent),forcesObjectResizing:/Trident.*rv:11/.test(navigator.userAgent),supportsInputEvents:function(){var t,e,n,i;if(\"undefined\"==typeof InputEvent)return!1;for(i=[\"data\",\"getTargetRanges\",\"inputType\"],t=0,e=i.length;e>t;t++)if(n=i[t],!(n in InputEvent.prototype))return!1;return!0}()},config:{}}}).call(this)}).call(t);var e=t.Trix;(function(){(function(){e.BasicObject=function(){function t(){}var e,n,i;return t.proxyMethod=function(t){var i,o,r,s,a;return r=n(t),i=r.name,s=r.toMethod,a=r.toProperty,o=r.optional,this.prototype[i]=function(){var t,n;return t=null!=s?o?\"function\"==typeof this[s]?this[s]():void 0:this[s]():null!=a?this[a]:void 0,o?(n=null!=t?t[i]:void 0,null!=n?e.call(n,t,arguments):void 0):(n=t[i],e.call(n,t,arguments))}},n=function(t){var e,n;if(!(n=t.match(i)))throw new Error(\"can't parse @proxyMethod expression: \"+t);return e={name:n[4]},null!=n[2]?e.toMethod=n[1]:e.toProperty=n[1],null!=n[3]&&(e.optional=!0),e},e=Function.prototype.apply,i=/^(.+?)(\\(\\))?(\\?)?\\.(.+?)$/,t}()}).call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Object=function(n){function i(){this.id=++o}var o;return t(i,n),o=0,i.fromJSONString=function(t){return this.fromJSON(JSON.parse(t))},i.prototype.hasSameConstructorAs=function(t){return this.constructor===(null!=t?t.constructor:void 0)},i.prototype.isEqualTo=function(t){return this===t},i.prototype.inspect=function(){var t,e,n;return t=function(){var t,i,o;i=null!=(t=this.contentsForInspection())?t:{},o=[];for(e in i)n=i[e],o.push(e+\"=\"+n);return o}.call(this),\"#<\"+this.constructor.name+\":\"+this.id+(t.length?\" \"+t.join(\", \"):\"\")+\">\"},i.prototype.contentsForInspection=function(){},i.prototype.toJSONString=function(){return JSON.stringify(this)},i.prototype.toUTF16String=function(){return e.UTF16String.box(this)},i.prototype.getCacheKey=function(){return this.id.toString()},i}(e.BasicObject)}.call(this),function(){e.extend=function(t){var e,n;for(e in t)n=t[e],this[e]=n;return this}}.call(this),function(){e.extend({defer:function(t){return setTimeout(t,1)}})}.call(this),function(){var t,n;e.extend({normalizeSpaces:function(t){return t.replace(RegExp(\"\"+e.ZERO_WIDTH_SPACE,\"g\"),\"\").replace(RegExp(\"\"+e.NON_BREAKING_SPACE,\"g\"),\" \")},normalizeNewlines:function(t){return t.replace(/\\r\\n/g,\"\\n\")},breakableWhitespacePattern:RegExp(\"[^\\\\S\"+e.NON_BREAKING_SPACE+\"]\"),squishBreakableWhitespace:function(t){return t.replace(RegExp(\"\"+e.breakableWhitespacePattern.source,\"g\"),\" \").replace(/\\ {2,}/g,\" \")},summarizeStringChange:function(t,i){var o,r,s,a;return t=e.UTF16String.box(t),i=e.UTF16String.box(i),i.length<t.length?(r=n(t,i),a=r[0],o=r[1]):(s=n(i,t),o=s[0],a=s[1]),{added:o,removed:a}}}),n=function(n,i){var o,r,s,a,u;return n.isEqualTo(i)?[\"\",\"\"]:(r=t(n,i),a=r.utf16String.length,s=a?(u=r.offset,r,o=n.codepoints.slice(0,u).concat(n.codepoints.slice(u+a)),t(i,e.UTF16String.fromCodepoints(o))):t(i,n),[r.utf16String.toString(),s.utf16String.toString()])},t=function(t,e){var n,i,o;for(n=0,i=t.length,o=e.length;i>n&&t.charAt(n).isEqualTo(e.charAt(n));)n++;for(;i>n+1&&t.charAt(i-1).isEqualTo(e.charAt(o-1));)i--,o--;return{utf16String:t.slice(n,i),offset:n}}}.call(this),function(){e.extend({copyObject:function(t){var e,n,i;null==t&&(t={}),n={};for(e in t)i=t[e],n[e]=i;return n},objectsAreEqual:function(t,e){var n,i;if(null==t&&(t={}),null==e&&(e={}),Object.keys(t).length!==Object.keys(e).length)return!1;for(n in t)if(i=t[n],i!==e[n])return!1;return!0}})}.call(this),function(){var t=[].slice;e.extend({arraysAreEqual:function(t,e){var n,i,o,r;if(null==t&&(t=[]),null==e&&(e=[]),t.length!==e.length)return!1;for(i=n=0,o=t.length;o>n;i=++n)if(r=t[i],r!==e[i])return!1;return!0},arrayStartsWith:function(t,n){return null==t&&(t=[]),null==n&&(n=[]),e.arraysAreEqual(t.slice(0,n.length),n)},spliceArray:function(){var e,n,i;return n=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],i=n.slice(0),i.splice.apply(i,e),i},summarizeArrayChange:function(t,e){var n,i,o,r,s,a,u,c,l,h,p;for(null==t&&(t=[]),null==e&&(e=[]),n=[],h=[],o=new Set,r=0,u=t.length;u>r;r++)p=t[r],o.add(p);for(i=new Set,s=0,c=e.length;c>s;s++)p=e[s],i.add(p),o.has(p)||n.push(p);for(a=0,l=t.length;l>a;a++)p=t[a],i.has(p)||h.push(p);return{added:n,removed:h}}})}.call(this),function(){var t,n,i,o;t=null,n=null,o=null,i=null,e.extend({getAllAttributeNames:function(){return null!=t?t:t=e.getTextAttributeNames().concat(e.getBlockAttributeNames())},getBlockConfig:function(t){return e.config.blockAttributes[t]},getBlockAttributeNames:function(){return null!=n?n:n=Object.keys(e.config.blockAttributes)},getTextConfig:function(t){return e.config.textAttributes[t]},getTextAttributeNames:function(){return null!=o?o:o=Object.keys(e.config.textAttributes)},getListAttributeNames:function(){var t,n;return null!=i?i:i=function(){var i,o;i=e.config.blockAttributes,o=[];for(t in i)n=i[t].listAttribute,null!=n&&o.push(n);return o}()}})}.call(this),function(){var t,n,i,o,r,s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=document.documentElement,n=null!=(i=null!=(o=null!=(r=t.matchesSelector)?r:t.webkitMatchesSelector)?o:t.msMatchesSelector)?i:t.mozMatchesSelector,e.extend({handleEvent:function(n,i){var o,r,s,a,u,c,l,h,p,d,f,g;return h=null!=i?i:{},c=h.onElement,u=h.matchingSelector,g=h.withCallback,a=h.inPhase,l=h.preventDefault,d=h.times,r=null!=c?c:t,p=u,o=g,f=\"capturing\"===a,s=function(t){var n;return null!=d&&0===--d&&s.destroy(),n=e.findClosestElementFromNode(t.target,{matchingSelector:p}),null!=n&&(null!=g&&g.call(n,t,n),l)?t.preventDefault():void 0},s.destroy=function(){return r.removeEventListener(n,s,f)},r.addEventListener(n,s,f),s},handleEventOnce:function(t,n){return null==n&&(n={}),n.times=1,e.handleEvent(t,n)},triggerEvent:function(n,i){var o,r,s,a,u,c,l;return l=null!=i?i:{},c=l.onElement,r=l.bubbles,s=l.cancelable,o=l.attributes,a=null!=c?c:t,r=r!==!1,s=s!==!1,u=document.createEvent(\"Events\"),u.initEvent(n,r,s),null!=o&&e.extend.call(u,o),a.dispatchEvent(u)},elementMatchesSelector:function(t,e){return 1===(null!=t?t.nodeType:void 0)?n.call(t,e):void 0},findClosestElementFromNode:function(t,n){var i,o,r;for(o=null!=n?n:{},i=o.matchingSelector,r=o.untilNode;null!=t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.parentNode;if(null!=t){if(null==i)return t;if(t.closest&&null==r)return t.closest(i);for(;t&&t!==r;){if(e.elementMatchesSelector(t,i))return t;t=t.parentNode}}},findInnerElement:function(t){for(;null!=t?t.firstElementChild:void 0;)t=t.firstElementChild;return t},innerElementIsActive:function(t){return document.activeElement!==t&&e.elementContainsNode(t,document.activeElement)},elementContainsNode:function(t,e){if(t&&e)for(;e;){if(e===t)return!0;e=e.parentNode}},findNodeFromContainerAndOffset:function(t,e){var n;if(t)return t.nodeType===Node.TEXT_NODE?t:0===e?null!=(n=t.firstChild)?n:t:t.childNodes.item(e-1)},findElementFromContainerAndOffset:function(t,n){var i;return i=e.findNodeFromContainerAndOffset(t,n),e.findClosestElementFromNode(i)},findChildIndexOfNode:function(t){var e;if(null!=t?t.parentNode:void 0){for(e=0;t=t.previousSibling;)e++;return e}},removeNode:function(t){var e;return null!=t&&null!=(e=t.parentNode)?e.removeChild(t):void 0},walkTree:function(t,e){var n,i,o,r,s;return o=null!=e?e:{},i=o.onlyNodesOfType,r=o.usingFilter,n=o.expandEntityReferences,s=function(){switch(i){case\"element\":return NodeFilter.SHOW_ELEMENT;case\"text\":return NodeFilter.SHOW_TEXT;case\"comment\":return NodeFilter.SHOW_COMMENT;default:return NodeFilter.SHOW_ALL}}(),document.createTreeWalker(t,s,null!=r?r:null,n===!0)},tagName:function(t){var e;return null!=t&&null!=(e=t.tagName)?e.toLowerCase():void 0},makeElement:function(t,e){var n,i,o,r,s,a,u,c,l,h,p,d,f,g;if(null==e&&(e={}),\"object\"==typeof t?(e=t,t=e.tagName):e={attributes:e},o=document.createElement(t),null!=e.editable&&(null==e.attributes&&(e.attributes={}),e.attributes.contenteditable=e.editable),e.attributes){l=e.attributes;for(a in l)g=l[a],o.setAttribute(a,g)}if(e.style){h=e.style;for(a in h)g=h[a],o.style[a]=g}if(e.data){p=e.data;for(a in p)g=p[a],o.dataset[a]=g}if(e.className)for(d=e.className.split(\" \"),r=0,u=d.length;u>r;r++)i=d[r],o.classList.add(i);if(e.textContent&&(o.textContent=e.textContent),e.childNodes)for(f=[].concat(e.childNodes),s=0,c=f.length;c>s;s++)n=f[s],o.appendChild(n);return o},getBlockTagNames:function(){var t,n;return null!=e.blockTagNames?e.blockTagNames:e.blockTagNames=function(){var i,o;i=e.config.blockAttributes,o=[];for(t in i)n=i[t].tagName,n&&o.push(n);return o}()},nodeIsBlockContainer:function(t){return e.nodeIsBlockStartComment(null!=t?t.firstChild:void 0)},nodeProbablyIsBlockContainer:function(t){var n,i;return n=e.tagName(t),s.call(e.getBlockTagNames(),n)>=0&&(i=e.tagName(t.firstChild),s.call(e.getBlockTagNames(),i)<0)},nodeIsBlockStart:function(t,n){var i;return i=(null!=n?n:{strict:!0}).strict,i?e.nodeIsBlockStartComment(t):e.nodeIsBlockStartComment(t)||!e.nodeIsBlockStartComment(t.firstChild)&&e.nodeProbablyIsBlockContainer(t)},nodeIsBlockStartComment:function(t){return e.nodeIsCommentNode(t)&&\"block\"===(null!=t?t.data:void 0)},nodeIsCommentNode:function(t){return(null!=t?t.nodeType:void 0)===Node.COMMENT_NODE},nodeIsCursorTarget:function(t,n){var i;return i=(null!=n?n:{}).name,t?e.nodeIsTextNode(t)?t.data===e.ZERO_WIDTH_SPACE?i?t.parentNode.dataset.trixCursorTarget===i:!0:void 0:e.nodeIsCursorTarget(t.firstChild):void 0},nodeIsAttachmentElement:function(t){return e.elementMatchesSelector(t,e.AttachmentView.attachmentSelector)},nodeIsEmptyTextNode:function(t){return e.nodeIsTextNode(t)&&\"\"===(null!=t?t.data:void 0)},nodeIsTextNode:function(t){return(null!=t?t.nodeType:void 0)===Node.TEXT_NODE}})}.call(this),function(){var t,n,i,o,r;t=e.copyObject,o=e.objectsAreEqual,e.extend({normalizeRange:i=function(t){var e;if(null!=t)return Array.isArray(t)||(t=[t,t]),[n(t[0]),n(null!=(e=t[1])?e:t[0])]},rangeIsCollapsed:function(t){var e,n,o;if(null!=t)return n=i(t),o=n[0],e=n[1],r(o,e)},rangesAreEqual:function(t,e){var n,o,s,a,u,c;if(null!=t&&null!=e)return s=i(t),o=s[0],n=s[1],a=i(e),c=a[0],u=a[1],r(o,c)&&r(n,u)}}),n=function(e){return\"number\"==typeof e?e:t(e)},r=function(t,e){return\"number\"==typeof t?t===e:o(t,e)}}.call(this),function(){var t,n,i,o,r,s,a;e.registerElement=function(t,e){var n,i;return null==e&&(e={}),t=t.toLowerCase(),e=a(e),i=s(e),(n=i.defaultCSS)&&(delete i.defaultCSS,o(n,t)),r(t,i)},o=function(t,e){var n;return n=i(e),n.textContent=t.replace(/%t/g,e)},i=function(e){var n,i;return n=document.createElement(\"style\"),n.setAttribute(\"type\",\"text/css\"),n.setAttribute(\"data-tag-name\",e.toLowerCase()),(i=t())&&n.setAttribute(\"nonce\",i),document.head.insertBefore(n,document.head.firstChild),n},t=function(){var t;return(t=n(\"trix-csp-nonce\")||n(\"csp-nonce\"))?t.getAttribute(\"content\"):void 0},n=function(t){return document.head.querySelector(\"meta[name=\"+t+\"]\")},s=function(t){var e,n,i;n={};for(e in t)i=t[e],n[e]=\"function\"==typeof i?{value:i}:i;return n},a=function(){var t;return t=function(t){var e,n,i,o,r;for(e={},r=[\"initialize\",\"connect\",\"disconnect\"],n=0,o=r.length;o>n;n++)i=r[n],e[i]=t[i],delete t[i];return e},window.customElements?function(e){var n,i,o,r,s;return s=t(e),o=s.initialize,n=s.connect,i=s.disconnect,o&&(r=n,n=function(){return this.initialized||(this.initialized=!0,o.call(this)),null!=r?r.call(this):void 0}),n&&(e.connectedCallback=n),i&&(e.disconnectedCallback=i),e}:function(e){var n,i,o,r;return r=t(e),o=r.initialize,n=r.connect,i=r.disconnect,o&&(e.createdCallback=o),n&&(e.attachedCallback=n),i&&(e.detachedCallback=i),e}}(),r=function(){return window.customElements?function(t,e){var n;return n=function(){return\"object\"==typeof Reflect?Reflect.construct(HTMLElement,[],n):HTMLElement.apply(this)},Object.setPrototypeOf(n.prototype,HTMLElement.prototype),Object.setPrototypeOf(n,HTMLElement),Object.defineProperties(n.prototype,e),window.customElements.define(t,n),n}:function(t,e){var n,i;return i=Object.create(HTMLElement.prototype,e),n=document.registerElement(t,{prototype:i}),Object.defineProperty(i,\"constructor\",{value:n}),n}}()}.call(this),function(){var t,n;e.extend({getDOMSelection:function(){var t;return t=window.getSelection(),t.rangeCount>0?t:void 0},getDOMRange:function(){var n,i;return(n=null!=(i=e.getDOMSelection())?i.getRangeAt(0):void 0)&&!t(n)?n:void 0},setDOMRange:function(t){var n;return n=window.getSelection(),n.removeAllRanges(),n.addRange(t),e.selectionChangeObserver.update()}}),t=function(t){return n(t.startContainer)||n(t.endContainer)},n=function(t){return!Object.getPrototypeOf(t)}}.call(this),function(){var t;t={\"application/x-trix-feature-detection\":\"test\"},e.extend({dataTransferIsPlainText:function(t){var e,n,i;return i=t.getData(\"text/plain\"),n=t.getData(\"text/html\"),i&&n?(e=(new DOMParser).parseFromString(n,\"text/html\").body,e.textContent===i?!e.querySelector(\"*\"):void 0):null!=i?i.length:void 0},dataTransferIsWritable:function(e){var n,i;if(null!=(null!=e?e.setData:void 0)){for(n in t)if(i=t[n],!function(){try{return e.setData(n,i),e.getData(n)===i}catch(t){}}())return;return!0}},keyEventIsKeyboardCommand:function(){return/Mac|^iP/.test(navigator.platform)?function(t){return t.metaKey}:function(t){return t.ctrlKey}}()})}.call(this),function(){e.extend({RTL_PATTERN:/[\\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]/,getDirection:function(){var t,n,i,o;return n=e.makeElement(\"input\",{dir:\"auto\",name:\"x\",dirName:\"x.dir\"}),t=e.makeElement(\"form\"),t.appendChild(n),i=function(){try{return new FormData(t).has(n.dirName)}catch(e){}}(),o=function(){try{return n.matches(\":dir(ltr),:dir(rtl)\")}catch(t){}}(),i?function(e){return n.value=e,new FormData(t).get(n.dirName)}:o?function(t){return n.value=t,n.matches(\":dir(rtl)\")?\"rtl\":\"ltr\"}:function(t){var n;return n=t.trim().charAt(0),e.RTL_PATTERN.test(n)?\"rtl\":\"ltr\"}}()})}.call(this),function(){}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.arraysAreEqual,e.Hash=function(i){function o(t){null==t&&(t={}),this.values=s(t),o.__super__.constructor.apply(this,arguments)}var r,s,a,u,c;return n(o,i),o.fromCommonAttributesOfObjects=function(t){var e,n,i,o,s,a;if(null==t&&(t=[]),!t.length)return new this;for(e=r(t[0]),i=e.getKeys(),a=t.slice(1),n=0,o=a.length;o>n;n++)s=a[n],i=e.getKeysCommonToHash(r(s)),e=e.slice(i);return e},o.box=function(t){return r(t)},o.prototype.add=function(t,e){return this.merge(u(t,e))},o.prototype.remove=function(t){return new e.Hash(s(this.values,t))},o.prototype.get=function(t){return this.values[t]},o.prototype.has=function(t){return t in this.values},o.prototype.merge=function(t){return new e.Hash(a(this.values,c(t)))},o.prototype.slice=function(t){var n,i,o,r;for(r={},n=0,o=t.length;o>n;n++)i=t[n],this.has(i)&&(r[i]=this.values[i]);return new e.Hash(r)},o.prototype.getKeys=function(){return Object.keys(this.values)},o.prototype.getKeysCommonToHash=function(t){var e,n,i,o,s;for(t=r(t),o=this.getKeys(),s=[],e=0,i=o.length;i>e;e++)n=o[e],this.values[n]===t.values[n]&&s.push(n);return s},o.prototype.isEqualTo=function(e){return t(this.toArray(),r(e).toArray())},o.prototype.isEmpty=function(){return 0===this.getKeys().length},o.prototype.toArray=function(){var t,e,n;return(null!=this.array?this.array:this.array=function(){var i;e=[],i=this.values;for(t in i)n=i[t],e.push(t,n);return e}.call(this)).slice(0)},o.prototype.toObject=function(){return s(this.values)},o.prototype.toJSON=function(){return this.toObject()},o.prototype.contentsForInspection=function(){return{values:JSON.stringify(this.values)}},u=function(t,e){var n;return n={},n[t]=e,n},a=function(t,e){var n,i,o;i=s(t);for(n in e)o=e[n],i[n]=o;return i},s=function(t,e){var n,i,o,r,s;for(r={},s=Object.keys(t).sort(),n=0,o=s.length;o>n;n++)i=s[n],i!==e&&(r[i]=t[i]);return r},r=function(t){return t instanceof e.Hash?t:new e.Hash(t)},c=function(t){return t instanceof e.Hash?t.values:t\n},o}(e.Object)}.call(this),function(){e.ObjectGroup=function(){function t(t,e){var n,i;this.objects=null!=t?t:[],i=e.depth,n=e.asTree,n&&(this.depth=i,this.objects=this.constructor.groupObjects(this.objects,{asTree:n,depth:this.depth+1}))}return t.groupObjects=function(t,e){var n,i,o,r,s,a,u,c,l;for(null==t&&(t=[]),l=null!=e?e:{},o=l.depth,n=l.asTree,n&&null==o&&(o=0),c=[],s=0,a=t.length;a>s;s++){if(u=t[s],r){if((\"function\"==typeof u.canBeGrouped?u.canBeGrouped(o):void 0)&&(\"function\"==typeof(i=r[r.length-1]).canBeGroupedWith?i.canBeGroupedWith(u,o):void 0)){r.push(u);continue}c.push(new this(r,{depth:o,asTree:n})),r=null}(\"function\"==typeof u.canBeGrouped?u.canBeGrouped(o):void 0)?r=[u]:c.push(u)}return r&&c.push(new this(r,{depth:o,asTree:n})),c},t.prototype.getObjects=function(){return this.objects},t.prototype.getDepth=function(){return this.depth},t.prototype.getCacheKey=function(){var t,e,n,i,o;for(e=[\"objectGroup\"],o=this.getObjects(),t=0,n=o.length;n>t;t++)i=o[t],e.push(i.getCacheKey());return e.join(\"/\")},t}()}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ObjectMap=function(e){function n(t){var e,n,i,o,r;for(null==t&&(t=[]),this.objects={},i=0,o=t.length;o>i;i++)r=t[i],n=JSON.stringify(r),null==(e=this.objects)[n]&&(e[n]=r)}return t(n,e),n.prototype.find=function(t){var e;return e=JSON.stringify(t),this.objects[e]},n}(e.BasicObject)}.call(this),function(){e.ElementStore=function(){function t(t){this.reset(t)}var e;return t.prototype.add=function(t){var n;return n=e(t),this.elements[n]=t},t.prototype.remove=function(t){var n,i;return n=e(t),(i=this.elements[n])?(delete this.elements[n],i):void 0},t.prototype.reset=function(t){var e,n,i;for(null==t&&(t=[]),this.elements={},n=0,i=t.length;i>n;n++)e=t[n],this.add(e);return t},e=function(t){return t.dataset.trixStoreKey},t}()}.call(this),function(){}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Operation=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n.prototype.isPerforming=function(){return this.performing===!0},n.prototype.hasPerformed=function(){return this.performed===!0},n.prototype.hasSucceeded=function(){return this.performed&&this.succeeded},n.prototype.hasFailed=function(){return this.performed&&!this.succeeded},n.prototype.getPromise=function(){return null!=this.promise?this.promise:this.promise=new Promise(function(t){return function(e,n){return t.performing=!0,t.perform(function(i,o){return t.succeeded=i,t.performing=!1,t.performed=!0,t.succeeded?e(o):n(o)})}}(this))},n.prototype.perform=function(t){return t(!1)},n.prototype.release=function(){var t;return null!=(t=this.promise)&&\"function\"==typeof t.cancel&&t.cancel(),this.promise=null,this.performing=null,this.performed=null,this.succeeded=null},n.proxyMethod(\"getPromise().then\"),n.proxyMethod(\"getPromise().catch\"),n}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s=function(t,e){function n(){this.constructor=t}for(var i in e)a.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty;e.UTF16String=function(t){function e(t,e){this.ucs2String=t,this.codepoints=e,this.length=this.codepoints.length,this.ucs2Length=this.ucs2String.length}return s(e,t),e.box=function(t){return null==t&&(t=\"\"),t instanceof this?t:this.fromUCS2String(null!=t?t.toString():void 0)},e.fromUCS2String=function(t){return new this(t,o(t))},e.fromCodepoints=function(t){return new this(r(t),t)},e.prototype.offsetToUCS2Offset=function(t){return r(this.codepoints.slice(0,Math.max(0,t))).length},e.prototype.offsetFromUCS2Offset=function(t){return o(this.ucs2String.slice(0,Math.max(0,t))).length},e.prototype.slice=function(){var t;return this.constructor.fromCodepoints((t=this.codepoints).slice.apply(t,arguments))},e.prototype.charAt=function(t){return this.slice(t,t+1)},e.prototype.isEqualTo=function(t){return this.constructor.box(t).ucs2String===this.ucs2String},e.prototype.toJSON=function(){return this.ucs2String},e.prototype.getCacheKey=function(){return this.ucs2String},e.prototype.toString=function(){return this.ucs2String},e}(e.BasicObject),t=1===(\"function\"==typeof Array.from?Array.from(\"\\ud83d\\udc7c\").length:void 0),n=null!=(\"function\"==typeof\" \".codePointAt?\" \".codePointAt(0):void 0),i=\" \\ud83d\\udc7c\"===(\"function\"==typeof String.fromCodePoint?String.fromCodePoint(32,128124):void 0),o=t&&n?function(t){return Array.from(t).map(function(t){return t.codePointAt(0)})}:function(t){var e,n,i,o,r;for(o=[],e=0,i=t.length;i>e;)r=t.charCodeAt(e++),r>=55296&&56319>=r&&i>e&&(n=t.charCodeAt(e++),56320===(64512&n)?r=((1023&r)<<10)+(1023&n)+65536:e--),o.push(r);return o},r=i?function(t){return String.fromCodePoint.apply(String,t)}:function(t){var e,n,i;return e=function(){var e,o,r;for(r=[],e=0,o=t.length;o>e;e++)i=t[e],n=\"\",i>65535&&(i-=65536,n+=String.fromCharCode(i>>>10&1023|55296),i=56320|1023&i),r.push(n+String.fromCharCode(i));return r}(),e.join(\"\")}}.call(this),function(){}.call(this),function(){}.call(this),function(){e.config.lang={attachFiles:\"Attach Files\",bold:\"Bold\",bullets:\"Bullets\",\"byte\":\"Byte\",bytes:\"Bytes\",captionPlaceholder:\"Add a caption\\u2026\",code:\"Code\",heading1:\"Heading\",indent:\"Increase Level\",italic:\"Italic\",link:\"Link\",numbers:\"Numbers\",outdent:\"Decrease Level\",quote:\"Quote\",redo:\"Redo\",remove:\"Remove\",strike:\"Strikethrough\",undo:\"Undo\",unlink:\"Unlink\",url:\"URL\",urlPlaceholder:\"Enter a URL\\u2026\",GB:\"GB\",KB:\"KB\",MB:\"MB\",PB:\"PB\",TB:\"TB\"}}.call(this),function(){e.config.css={attachment:\"attachment\",attachmentCaption:\"attachment__caption\",attachmentCaptionEditor:\"attachment__caption-editor\",attachmentMetadata:\"attachment__metadata\",attachmentMetadataContainer:\"attachment__metadata-container\",attachmentName:\"attachment__name\",attachmentProgress:\"attachment__progress\",attachmentSize:\"attachment__size\",attachmentToolbar:\"attachment__toolbar\",attachmentGallery:\"attachment-gallery\"}}.call(this),function(){var t;e.config.blockAttributes=t={\"default\":{tagName:\"div\",parse:!1},quote:{tagName:\"blockquote\",nestable:!0},heading1:{tagName:\"h1\",terminal:!0,breakOnReturn:!0,group:!1},code:{tagName:\"pre\",terminal:!0,text:{plaintext:!0}},bulletList:{tagName:\"ul\",parse:!1},bullet:{tagName:\"li\",listAttribute:\"bulletList\",group:!1,nestable:!0,test:function(n){return e.tagName(n.parentNode)===t[this.listAttribute].tagName}},numberList:{tagName:\"ol\",parse:!1},number:{tagName:\"li\",listAttribute:\"numberList\",group:!1,nestable:!0,test:function(n){return e.tagName(n.parentNode)===t[this.listAttribute].tagName}},attachmentGallery:{tagName:\"div\",exclusive:!0,terminal:!0,parse:!1,group:!1}}}.call(this),function(){var t,n;t=e.config.lang,n=[t.bytes,t.KB,t.MB,t.GB,t.TB,t.PB],e.config.fileSize={prefix:\"IEC\",precision:2,formatter:function(e){var i,o,r,s,a;switch(e){case 0:return\"0 \"+t.bytes;case 1:return\"1 \"+t.byte;default:return i=function(){switch(this.prefix){case\"SI\":return 1e3;case\"IEC\":return 1024}}.call(this),o=Math.floor(Math.log(e)/Math.log(i)),r=e/Math.pow(i,o),s=r.toFixed(this.precision),a=s.replace(/0*$/,\"\").replace(/\\.$/,\"\"),a+\" \"+n[o]}}}}.call(this),function(){e.config.textAttributes={bold:{tagName:\"strong\",inheritable:!0,parser:function(t){var e;return e=window.getComputedStyle(t),\"bold\"===e.fontWeight||e.fontWeight>=600}},italic:{tagName:\"em\",inheritable:!0,parser:function(t){var e;return e=window.getComputedStyle(t),\"italic\"===e.fontStyle}},href:{groupTagName:\"a\",parser:function(t){var n,i,o;return n=e.AttachmentView.attachmentSelector,o=\"a:not(\"+n+\")\",(i=e.findClosestElementFromNode(t,{matchingSelector:o}))?i.getAttribute(\"href\"):void 0}},strike:{tagName:\"del\",inheritable:!0},frozen:{style:{backgroundColor:\"highlight\"}}}}.call(this),function(){var t,n,i,o,r;r=\"[data-trix-serialize=false]\",o=[\"contenteditable\",\"data-trix-id\",\"data-trix-store-key\",\"data-trix-mutable\",\"data-trix-placeholder\",\"tabindex\"],n=\"data-trix-serialized-attributes\",i=\"[\"+n+\"]\",t=new RegExp(\"<!--block-->\",\"g\"),e.extend({serializers:{\"application/json\":function(t){var n;if(t instanceof e.Document)n=t;else{if(!(t instanceof HTMLElement))throw new Error(\"unserializable object\");n=e.Document.fromHTML(t.innerHTML)}return n.toSerializableDocument().toJSONString()},\"text/html\":function(s){var a,u,c,l,h,p,d,f,g,m,v,y,b,A,C,x,w;if(s instanceof e.Document)l=e.DocumentView.render(s);else{if(!(s instanceof HTMLElement))throw new Error(\"unserializable object\");l=s.cloneNode(!0)}for(A=l.querySelectorAll(r),h=0,g=A.length;g>h;h++)c=A[h],e.removeNode(c);for(p=0,m=o.length;m>p;p++)for(a=o[p],C=l.querySelectorAll(\"[\"+a+\"]\"),d=0,v=C.length;v>d;d++)c=C[d],c.removeAttribute(a);for(x=l.querySelectorAll(i),f=0,y=x.length;y>f;f++){c=x[f];try{u=JSON.parse(c.getAttribute(n)),c.removeAttribute(n);for(b in u)w=u[b],c.setAttribute(b,w)}catch(E){}}return l.innerHTML.replace(t,\"\")}},deserializers:{\"application/json\":function(t){return e.Document.fromJSONString(t)},\"text/html\":function(t){return e.Document.fromHTML(t)}},serializeToContentType:function(t,n){var i;if(i=e.serializers[n])return i(t);throw new Error(\"unknown content type: \"+n)},deserializeFromContentType:function(t,n){var i;if(i=e.deserializers[n])return i(t);throw new Error(\"unknown content type: \"+n)}})}.call(this),function(){var t;t=e.config.lang,e.config.toolbar={getDefaultHTML:function(){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=\"'+t.bold+'\" tabindex=\"-1\">'+t.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=\"'+t.italic+'\" tabindex=\"-1\">'+t.italic+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"'+t.strike+'\" tabindex=\"-1\">'+t.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=\"'+t.link+'\" tabindex=\"-1\">'+t.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=\"'+t.heading1+'\" tabindex=\"-1\">'+t.heading1+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"'+t.quote+'\" tabindex=\"-1\">'+t.quote+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"'+t.code+'\" tabindex=\"-1\">'+t.code+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"'+t.bullets+'\" tabindex=\"-1\">'+t.bullets+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"'+t.numbers+'\" tabindex=\"-1\">'+t.numbers+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"'+t.outdent+'\" tabindex=\"-1\">'+t.outdent+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"'+t.indent+'\" tabindex=\"-1\">'+t.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=\"'+t.attachFiles+'\" tabindex=\"-1\">'+t.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=\"'+t.undo+'\" tabindex=\"-1\">'+t.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=\"'+t.redo+'\" tabindex=\"-1\">'+t.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=\"'+t.urlPlaceholder+'\" aria-label=\"'+t.url+'\" required data-trix-input>\\n      <div class=\"trix-button-group\">\\n        <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"'+t.link+'\" data-trix-method=\"setAttribute\">\\n        <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"'+t.unlink+'\" data-trix-method=\"removeAttribute\">\\n      </div>\\n    </div>\\n  </div>\\n</div>'}}}.call(this),function(){e.config.undoInterval=5e3}.call(this),function(){e.config.attachments={preview:{presentation:\"gallery\",caption:{name:!0,size:!0}},file:{caption:{size:!0}}}}.call(this),function(){e.config.keyNames={8:\"backspace\",9:\"tab\",13:\"return\",27:\"escape\",37:\"left\",39:\"right\",46:\"delete\",68:\"d\",72:\"h\",79:\"o\"}}.call(this),function(){e.config.input={level2Enabled:!0,getLevel:function(){return this.level2Enabled&&e.browser.supportsInputEvents?2:0},pickFiles:function(t){var n;return n=e.makeElement(\"input\",{type:\"file\",multiple:!0,hidden:!0,id:this.fileInputId}),n.addEventListener(\"change\",function(){return t(n.files),e.removeNode(n)}),e.removeNode(document.getElementById(this.fileInputId)),document.body.appendChild(n),n.click()},fileInputId:\"trix-file-input-\"+Date.now().toString(16)}}.call(this),function(){}.call(this),function(){e.registerElement(\"trix-toolbar\",{defaultCSS:\"%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}\",initialize:function(){return\"\"===this.innerHTML?this.innerHTML=e.config.toolbar.getDefaultHTML():void 0}})}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty,i=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};e.ObjectView=function(n){function o(t,e){this.object=t,this.options=null!=e?e:{},this.childViews=[],this.rootView=this}return t(o,n),o.prototype.getNodes=function(){var t,e,n,i,o;for(null==this.nodes&&(this.nodes=this.createNodes()),i=this.nodes,o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.cloneNode(!0));return o},o.prototype.invalidate=function(){var t;return this.nodes=null,this.childViews=[],null!=(t=this.parentView)?t.invalidate():void 0},o.prototype.invalidateViewForObject=function(t){var e;return null!=(e=this.findViewForObject(t))?e.invalidate():void 0},o.prototype.findOrCreateCachedChildView=function(t,e){var n;return(n=this.getCachedViewForObject(e))?this.recordChildView(n):(n=this.createChildView.apply(this,arguments),this.cacheViewForObject(n,e)),n},o.prototype.createChildView=function(t,n,i){var o;return null==i&&(i={}),n instanceof e.ObjectGroup&&(i.viewClass=t,t=e.ObjectGroupView),o=new t(n,i),this.recordChildView(o)},o.prototype.recordChildView=function(t){return t.parentView=this,t.rootView=this.rootView,this.childViews.push(t),t},o.prototype.getAllChildViews=function(){var t,e,n,i,o;for(o=[],i=this.childViews,e=0,n=i.length;n>e;e++)t=i[e],o.push(t),o=o.concat(t.getAllChildViews());return o},o.prototype.findElement=function(){return this.findElementForObject(this.object)},o.prototype.findElementForObject=function(t){var e;return(e=null!=t?t.id:void 0)?this.rootView.element.querySelector(\"[data-trix-id='\"+e+\"']\"):void 0},o.prototype.findViewForObject=function(t){var e,n,i,o;for(i=this.getAllChildViews(),e=0,n=i.length;n>e;e++)if(o=i[e],o.object===t)return o},o.prototype.getViewCache=function(){return this.rootView!==this?this.rootView.getViewCache():this.isViewCachingEnabled()?null!=this.viewCache?this.viewCache:this.viewCache={}:void 0},o.prototype.isViewCachingEnabled=function(){return this.shouldCacheViews!==!1},o.prototype.enableViewCaching=function(){return this.shouldCacheViews=!0},o.prototype.disableViewCaching=function(){return this.shouldCacheViews=!1},o.prototype.getCachedViewForObject=function(t){var e;return null!=(e=this.getViewCache())?e[t.getCacheKey()]:void 0},o.prototype.cacheViewForObject=function(t,e){var n;return null!=(n=this.getViewCache())?n[e.getCacheKey()]=t:void 0},o.prototype.garbageCollectCachedViews=function(){var t,e,n,o,r,s;if(t=this.getViewCache()){s=this.getAllChildViews().concat(this),n=function(){var t,e,n;for(n=[],t=0,e=s.length;e>t;t++)r=s[t],n.push(r.object.getCacheKey());return n}(),o=[];for(e in t)i.call(n,e)<0&&o.push(delete t[e]);return o}},o}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ObjectGroupView=function(e){function n(){n.__super__.constructor.apply(this,arguments),this.objectGroup=this.object,this.viewClass=this.options.viewClass,delete this.options.viewClass}return t(n,e),n.prototype.getChildViews=function(){var t,e,n,i;if(!this.childViews.length)for(i=this.objectGroup.getObjects(),t=0,e=i.length;e>t;t++)n=i[t],this.findOrCreateCachedChildView(this.viewClass,n,this.options);return this.childViews},n.prototype.createNodes=function(){var t,e,n,i,o,r,s,a,u;for(t=this.createContainerElement(),s=this.getChildViews(),e=0,i=s.length;i>e;e++)for(u=s[e],a=u.getNodes(),n=0,o=a.length;o>n;n++)r=a[n],t.appendChild(r);return[t]},n.prototype.createContainerElement=function(t){return null==t&&(t=this.objectGroup.getDepth()),this.getChildViews()[0].createContainerElement(t)},n}(e.ObjectView)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Controller=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a=function(t,e){return function(){return t.apply(e,arguments)}},u=function(t,e){function n(){this.constructor=t}for(var i in e)c.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},c={}.hasOwnProperty,l=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.findClosestElementFromNode,i=e.nodeIsEmptyTextNode,n=e.nodeIsBlockStartComment,o=e.normalizeSpaces,r=e.summarizeStringChange,s=e.tagName,e.MutationObserver=function(e){function c(t){this.element=t,this.didMutate=a(this.didMutate,this),this.observer=new window.MutationObserver(this.didMutate),this.start()}var h,p,d,f;return u(c,e),p=\"data-trix-mutable\",d=\"[\"+p+\"]\",f={attributes:!0,childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},c.prototype.start=function(){return this.reset(),this.observer.observe(this.element,f)},c.prototype.stop=function(){return this.observer.disconnect()},c.prototype.didMutate=function(t){var e,n;return(e=this.mutations).push.apply(e,this.findSignificantMutations(t)),this.mutations.length?(null!=(n=this.delegate)&&\"function\"==typeof n.elementDidMutate&&n.elementDidMutate(this.getMutationSummary()),this.reset()):void 0},c.prototype.reset=function(){return this.mutations=[]},c.prototype.findSignificantMutations=function(t){var e,n,i,o;for(o=[],e=0,n=t.length;n>e;e++)i=t[e],this.mutationIsSignificant(i)&&o.push(i);return o},c.prototype.mutationIsSignificant=function(t){var e,n,i,o;if(this.nodeIsMutable(t.target))return!1;for(o=this.nodesModifiedByMutation(t),e=0,n=o.length;n>e;e++)if(i=o[e],this.nodeIsSignificant(i))return!0;return!1},c.prototype.nodeIsSignificant=function(t){return t!==this.element&&!this.nodeIsMutable(t)&&!i(t)},c.prototype.nodeIsMutable=function(e){return t(e,{matchingSelector:d})},c.prototype.nodesModifiedByMutation=function(t){var e;switch(e=[],t.type){case\"attributes\":t.attributeName!==p&&e.push(t.target);break;case\"characterData\":e.push(t.target.parentNode),e.push(t.target);break;case\"childList\":e.push.apply(e,t.addedNodes),e.push.apply(e,t.removedNodes)}return e},c.prototype.getMutationSummary=function(){return this.getTextMutationSummary()},c.prototype.getTextMutationSummary=function(){var t,e,n,i,o,r,s,a,u,c,h;for(a=this.getTextChangesFromCharacterData(),n=a.additions,o=a.deletions,h=this.getTextChangesFromChildList(),u=h.additions,r=0,s=u.length;s>r;r++)e=u[r],l.call(n,e)<0&&n.push(e);return o.push.apply(o,h.deletions),c={},(t=n.join(\"\"))&&(c.textAdded=t),(i=o.join(\"\"))&&(c.textDeleted=i),c},c.prototype.getMutationsByType=function(t){var e,n,i,o,r;for(o=this.mutations,r=[],e=0,n=o.length;n>e;e++)i=o[e],i.type===t&&r.push(i);return r},c.prototype.getTextChangesFromChildList=function(){var t,e,i,r,s,a,u,c,l,p,d;for(t=[],u=[],a=this.getMutationsByType(\"childList\"),e=0,r=a.length;r>e;e++)s=a[e],t.push.apply(t,s.addedNodes),u.push.apply(u,s.removedNodes);return c=0===t.length&&1===u.length&&n(u[0]),c?(p=[],d=[\"\\n\"]):(p=h(t),d=h(u)),{additions:function(){var t,e,n;for(n=[],i=t=0,e=p.length;e>t;i=++t)l=p[i],l!==d[i]&&n.push(o(l));return n}(),deletions:function(){var t,e,n;for(n=[],i=t=0,e=d.length;e>t;i=++t)l=d[i],l!==p[i]&&n.push(o(l));return n}()}},c.prototype.getTextChangesFromCharacterData=function(){var t,e,n,i,s,a,u,c;return e=this.getMutationsByType(\"characterData\"),e.length&&(c=e[0],n=e[e.length-1],s=o(c.oldValue),i=o(n.target.data),a=r(s,i),t=a.added,u=a.removed),{additions:t?[t]:[],deletions:u?[u]:[]}},h=function(t){var e,n,i,o;for(null==t&&(t=[]),o=[],e=0,n=t.length;n>e;e++)switch(i=t[e],i.nodeType){case Node.TEXT_NODE:o.push(i.data);break;case Node.ELEMENT_NODE:\"br\"===s(i)?o.push(\"\\n\"):o.push.apply(o,h(i.childNodes))}return o},c}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.FileVerificationOperation=function(e){function n(t){this.file=t}return t(n,e),n.prototype.perform=function(t){var e;return e=new FileReader,e.onerror=function(){return t(!1)},e.onload=function(n){return function(){e.onerror=null;try{e.abort()}catch(i){}return t(!0,n.file)}}(this),e.readAsArrayBuffer(this.file)},n}(e.Operation)}.call(this),function(){var t,n,i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;t=e.handleEvent,n=e.innerElementIsActive,e.InputController=function(o){function r(n){var i;this.element=n,this.mutationObserver=new e.MutationObserver(this.element),this.mutationObserver.delegate=this;for(i in this.events)t(i,{onElement:this.element,withCallback:this.handlerFor(i)})}return i(r,o),r.prototype.events={},r.prototype.elementDidMutate=function(){},r.prototype.editorWillSyncDocumentView=function(){return this.mutationObserver.stop()},r.prototype.editorDidSyncDocumentView=function(){return this.mutationObserver.start()},r.prototype.requestRender=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidRequestRender?t.inputControllerDidRequestRender():void 0},r.prototype.requestReparse=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidRequestReparse&&t.inputControllerDidRequestReparse(),this.requestRender()},r.prototype.attachFiles=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(new e.FileVerificationOperation(n));return r}(),Promise.all(i).then(function(t){return function(e){return t.handleInput(function(){var t,n;return null!=(t=this.delegate)&&t.inputControllerWillAttachFiles(),null!=(n=this.responder)&&n.insertFiles(e),this.requestRender()})}}(this))},r.prototype.handlerFor=function(t){return function(e){return function(i){return i.defaultPrevented?void 0:e.handleInput(function(){return n(this.element)?void 0:(this.eventName=t,this.events[t].call(this,i))})}}(this)},r.prototype.handleInput=function(t){var e,n;try{return null!=(e=this.delegate)&&e.inputControllerWillHandleInput(),t.call(this)}finally{null!=(n=this.delegate)&&n.inputControllerDidHandleInput()}},r.prototype.createLinkHTML=function(t,e){var n;return n=document.createElement(\"a\"),n.href=t,n.textContent=null!=e?e:t,n.outerHTML},r}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h,p,d,f=function(t,e){function n(){this.constructor=t}for(var i in e)g.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},g={}.hasOwnProperty,m=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};c=e.makeElement,l=e.objectsAreEqual,d=e.tagName,n=e.browser,a=e.keyEventIsKeyboardCommand,o=e.dataTransferIsWritable,i=e.dataTransferIsPlainText,u=e.config.keyNames,e.Level0InputController=function(n){function s(){s.__super__.constructor.apply(this,arguments),this.resetInputSummary()}var d;return f(s,n),d=0,s.prototype.setInputSummary=function(t){var e,n;null==t&&(t={}),this.inputSummary.eventName=this.eventName;for(e in t)n=t[e],this.inputSummary[e]=n;return this.inputSummary},s.prototype.resetInputSummary=function(){return this.inputSummary={}},s.prototype.reset=function(){return this.resetInputSummary(),e.selectionChangeObserver.reset()},s.prototype.elementDidMutate=function(t){var e;return this.isComposing()?null!=(e=this.delegate)&&\"function\"==typeof e.inputControllerDidAllowUnhandledInput?e.inputControllerDidAllowUnhandledInput():void 0:this.handleInput(function(){return this.mutationIsSignificant(t)&&(this.mutationIsExpected(t)?this.requestRender():this.requestReparse()),this.reset()})},s.prototype.mutationIsExpected=function(t){var e,n,i,o,r,s,a,u,c,l;return a=t.textAdded,u=t.textDeleted,this.inputSummary.preferDocument?!0:(e=null!=a?a===this.inputSummary.textAdded:!this.inputSummary.textAdded,n=null!=u?this.inputSummary.didDelete:!this.inputSummary.didDelete,c=(\"\\n\"===a||\" \\n\"===a)&&!e,l=\"\\n\"===u&&!n,s=c&&!l||l&&!c,s&&(o=this.getSelectedRange())&&(i=c?a.replace(/\\n$/,\"\").length||-1:(null!=a?a.length:void 0)||1,null!=(r=this.responder)?r.positionIsBlockBreak(o[1]+i):void 0)?!0:e&&n)},s.prototype.mutationIsSignificant=function(t){var e,n,i;return i=Object.keys(t).length>0,e=\"\"===(null!=(n=this.compositionInput)?n.getEndData():void 0),i||!e},s.prototype.events={keydown:function(t){var n,i,o,r,s,c,l,h,p;if(this.isComposing()||this.resetInputSummary(),this.inputSummary.didInput=!0,r=u[t.keyCode]){for(i=this.keys,h=[\"ctrl\",\"alt\",\"shift\",\"meta\"],o=0,c=h.length;c>o;o++)l=h[o],t[l+\"Key\"]&&(\"ctrl\"===l&&(l=\"control\"),i=null!=i?i[l]:void 0);null!=(null!=i?i[r]:void 0)&&(this.setInputSummary({keyName:r}),e.selectionChangeObserver.reset(),i[r].call(this,t))}return a(t)&&(n=String.fromCharCode(t.keyCode).toLowerCase())&&(s=function(){var e,n,i,o;for(i=[\"alt\",\"shift\"],o=[],e=0,n=i.length;n>e;e++)l=i[e],t[l+\"Key\"]&&o.push(l);return o}(),s.push(n),null!=(p=this.delegate)?p.inputControllerDidReceiveKeyboardCommand(s):void 0)?t.preventDefault():void 0},keypress:function(t){var e,n,i;if(null==this.inputSummary.eventName&&!t.metaKey&&(!t.ctrlKey||t.altKey))return(i=p(t))?(null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(i),this.setInputSummary({textAdded:i,didDelete:this.selectionIsExpanded()})):void 0},textInput:function(t){var e,n,i,o;return e=t.data,o=this.inputSummary.textAdded,o&&o!==e&&o.toUpperCase()===e?(n=this.getSelectedRange(),this.setSelectedRange([n[0],n[1]+o.length]),null!=(i=this.responder)&&i.insertString(e),this.setInputSummary({textAdded:e}),this.setSelectedRange(n)):void 0},dragenter:function(t){return t.preventDefault()},dragstart:function(t){var e,n;return n=t.target,this.serializeSelectionToDataTransfer(t.dataTransfer),this.draggedRange=this.getSelectedRange(),null!=(e=this.delegate)&&\"function\"==typeof e.inputControllerDidStartDrag?e.inputControllerDidStartDrag():void 0},dragover:function(t){var e,n;return!this.draggedRange&&!this.canAcceptDataTransfer(t.dataTransfer)||(t.preventDefault(),e={x:t.clientX,y:t.clientY},l(e,this.draggingPoint))?void 0:(this.draggingPoint=e,null!=(n=this.delegate)&&\"function\"==typeof n.inputControllerDidReceiveDragOverPoint?n.inputControllerDidReceiveDragOverPoint(this.draggingPoint):void 0)},dragend:function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidCancelDrag&&t.inputControllerDidCancelDrag(),this.draggedRange=null,this.draggingPoint=null},drop:function(t){var n,i,o,r,s,a,u,c,l;return t.preventDefault(),o=null!=(s=t.dataTransfer)?s.files:void 0,r={x:t.clientX,y:t.clientY},null!=(a=this.responder)&&a.setLocationRangeFromPointRange(r),(null!=o?o.length:void 0)?this.attachFiles(o):this.draggedRange?(null!=(u=this.delegate)&&u.inputControllerWillMoveText(),null!=(c=this.responder)&&c.moveTextFromRange(this.draggedRange),this.draggedRange=null,this.requestRender()):(i=t.dataTransfer.getData(\"application/x-trix-document\"))&&(n=e.Document.fromJSONString(i),null!=(l=this.responder)&&l.insertDocument(n),this.requestRender()),this.draggedRange=null,this.draggingPoint=null},cut:function(t){var e,n;return(null!=(e=this.responder)?e.selectionIsExpanded():void 0)&&(this.serializeSelectionToDataTransfer(t.clipboardData)&&t.preventDefault(),null!=(n=this.delegate)&&n.inputControllerWillCutText(),this.deleteInDirection(\"backward\"),t.defaultPrevented)?this.requestRender():void 0},copy:function(t){var e;return(null!=(e=this.responder)?e.selectionIsExpanded():void 0)&&this.serializeSelectionToDataTransfer(t.clipboardData)?t.preventDefault():void 0},paste:function(t){var n,o,s,a,u,c,l,p,f,g,v,y,b,A,C,x,w,E,S,R,k,D,L;return n=null!=(p=t.clipboardData)?p:t.testClipboardData,l={clipboard:n},null==n||h(t)?void this.getPastedHTMLUsingHiddenElement(function(t){return function(e){var n,i,o;return l.type=\"text/html\",l.html=e,null!=(n=t.delegate)&&n.inputControllerWillPaste(l),null!=(i=t.responder)&&i.insertHTML(l.html),t.requestRender(),null!=(o=t.delegate)?o.inputControllerDidPaste(l):void 0}}(this)):((a=n.getData(\"URL\"))?(l.type=\"text/html\",L=(c=n.getData(\"public.url-name\"))?e.squishBreakableWhitespace(c).trim():a,l.html=this.createLinkHTML(a,L),null!=(f=this.delegate)&&f.inputControllerWillPaste(l),this.setInputSummary({textAdded:L,didDelete:this.selectionIsExpanded()}),null!=(C=this.responder)&&C.insertHTML(l.html),this.requestRender(),null!=(x=this.delegate)&&x.inputControllerDidPaste(l)):i(n)?(l.type=\"text/plain\",l.string=n.getData(\"text/plain\"),null!=(w=this.delegate)&&w.inputControllerWillPaste(l),this.setInputSummary({textAdded:l.string,didDelete:this.selectionIsExpanded()}),null!=(E=this.responder)&&E.insertString(l.string),this.requestRender(),null!=(S=this.delegate)&&S.inputControllerDidPaste(l)):(u=n.getData(\"text/html\"))?(l.type=\"text/html\",l.html=u,null!=(R=this.delegate)&&R.inputControllerWillPaste(l),null!=(k=this.responder)&&k.insertHTML(l.html),this.requestRender(),null!=(D=this.delegate)&&D.inputControllerDidPaste(l)):m.call(n.types,\"Files\")>=0&&(s=null!=(g=n.items)&&null!=(v=g[0])&&\"function\"==typeof v.getAsFile?v.getAsFile():void 0)&&(!s.name&&(o=r(s))&&(s.name=\"pasted-file-\"+ ++d+\".\"+o),l.type=\"File\",l.file=s,null!=(y=this.delegate)&&y.inputControllerWillAttachFiles(),null!=(b=this.responder)&&b.insertFile(l.file),this.requestRender(),null!=(A=this.delegate)&&A.inputControllerDidPaste(l)),t.preventDefault())},compositionstart:function(t){return this.getCompositionInput().start(t.data)},compositionupdate:function(t){return this.getCompositionInput().update(t.data)},compositionend:function(t){return this.getCompositionInput().end(t.data)},beforeinput:function(){return this.inputSummary.didInput=!0\n},input:function(t){return this.inputSummary.didInput=!0,t.stopPropagation()}},s.prototype.keys={backspace:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},\"delete\":function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},\"return\":function(){var t,e;return this.setInputSummary({preferDocument:!0}),null!=(t=this.delegate)&&t.inputControllerWillPerformTyping(),null!=(e=this.responder)?e.insertLineBreak():void 0},tab:function(t){var e,n;return(null!=(e=this.responder)?e.canIncreaseNestingLevel():void 0)?(null!=(n=this.responder)&&n.increaseNestingLevel(),this.requestRender(),t.preventDefault()):void 0},left:function(t){var e;return this.selectionIsInCursorTarget()?(t.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"backward\"):void 0):void 0},right:function(t){var e;return this.selectionIsInCursorTarget()?(t.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"forward\"):void 0):void 0},control:{d:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},h:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},o:function(t){var e,n;return t.preventDefault(),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(\"\\n\",{updatePosition:!1}),this.requestRender()}},shift:{\"return\":function(t){var e,n;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(\"\\n\"),this.requestRender(),t.preventDefault()},tab:function(t){var e,n;return(null!=(e=this.responder)?e.canDecreaseNestingLevel():void 0)?(null!=(n=this.responder)&&n.decreaseNestingLevel(),this.requestRender(),t.preventDefault()):void 0},left:function(t){return this.selectionIsInCursorTarget()?(t.preventDefault(),this.expandSelectionInDirection(\"backward\")):void 0},right:function(t){return this.selectionIsInCursorTarget()?(t.preventDefault(),this.expandSelectionInDirection(\"forward\")):void 0}},alt:{backspace:function(){var t;return this.setInputSummary({preferDocument:!1}),null!=(t=this.delegate)?t.inputControllerWillPerformTyping():void 0}},meta:{backspace:function(){var t;return this.setInputSummary({preferDocument:!1}),null!=(t=this.delegate)?t.inputControllerWillPerformTyping():void 0}}},s.prototype.getCompositionInput=function(){return this.isComposing()?this.compositionInput:this.compositionInput=new t(this)},s.prototype.isComposing=function(){return null!=this.compositionInput&&!this.compositionInput.isEnded()},s.prototype.deleteInDirection=function(t,e){var n;return(null!=(n=this.responder)?n.deleteInDirection(t):void 0)!==!1?this.setInputSummary({didDelete:!0}):e?(e.preventDefault(),this.requestRender()):void 0},s.prototype.serializeSelectionToDataTransfer=function(t){var n,i;if(o(t))return n=null!=(i=this.responder)?i.getSelectedDocument().toSerializableDocument():void 0,t.setData(\"application/x-trix-document\",JSON.stringify(n)),t.setData(\"text/html\",e.DocumentView.render(n).innerHTML),t.setData(\"text/plain\",n.toString().replace(/\\n$/,\"\")),!0},s.prototype.canAcceptDataTransfer=function(t){var e,n,i,o,r,s;for(s={},o=null!=(i=null!=t?t.types:void 0)?i:[],e=0,n=o.length;n>e;e++)r=o[e],s[r]=!0;return s.Files||s[\"application/x-trix-document\"]||s[\"text/html\"]||s[\"text/plain\"]},s.prototype.getPastedHTMLUsingHiddenElement=function(t){var n,i,o;return i=this.getSelectedRange(),o={position:\"absolute\",left:window.pageXOffset+\"px\",top:window.pageYOffset+\"px\",opacity:0},n=c({style:o,tagName:\"div\",editable:!0}),document.body.appendChild(n),n.focus(),requestAnimationFrame(function(o){return function(){var r;return r=n.innerHTML,e.removeNode(n),o.setSelectedRange(i),t(r)}}(this))},s.proxyMethod(\"responder?.getSelectedRange\"),s.proxyMethod(\"responder?.setSelectedRange\"),s.proxyMethod(\"responder?.expandSelectionInDirection\"),s.proxyMethod(\"responder?.selectionIsInCursorTarget\"),s.proxyMethod(\"responder?.selectionIsExpanded\"),s}(e.InputController),r=function(t){var e,n;return null!=(e=t.type)&&null!=(n=e.match(/\\/(\\w+)$/))?n[1]:void 0},s=null!=(\"function\"==typeof\" \".codePointAt?\" \".codePointAt(0):void 0),p=function(t){var n;return t.key&&s&&t.key.codePointAt(0)===t.keyCode?t.key:(null===t.which?n=t.keyCode:0!==t.which&&0!==t.charCode&&(n=t.charCode),null!=n&&\"escape\"!==u[n]?e.UTF16String.fromCodepoints([n]).toString():void 0)},h=function(t){var e,n,i,o,r,s,a,u,c,l;if(u=t.clipboardData){if(m.call(u.types,\"text/html\")>=0){for(c=u.types,i=0,s=c.length;s>i;i++)if(l=c[i],e=/^CorePasteboardFlavorType/.test(l),n=/^dyn\\./.test(l)&&u.getData(l),a=e||n)return!0;return!1}return o=m.call(u.types,\"com.apple.webarchive\")>=0,r=m.call(u.types,\"com.apple.flat-rtfd\")>=0,o||r}},t=function(t){function e(t){var e;this.inputController=t,e=this.inputController,this.responder=e.responder,this.delegate=e.delegate,this.inputSummary=e.inputSummary,this.data={}}return f(e,t),e.prototype.start=function(t){var e,n;return this.data.start=t,this.isSignificant()?(\"keypress\"===this.inputSummary.eventName&&this.inputSummary.textAdded&&null!=(e=this.responder)&&e.deleteInDirection(\"left\"),this.selectionIsExpanded()||(this.insertPlaceholder(),this.requestRender()),this.range=null!=(n=this.responder)?n.getSelectedRange():void 0):void 0},e.prototype.update=function(t){var e;return this.data.update=t,this.isSignificant()&&(e=this.selectPlaceholder())?(this.forgetPlaceholder(),this.range=e):void 0},e.prototype.end=function(t){var e,n,i,o;return this.data.end=t,this.isSignificant()?(this.forgetPlaceholder(),this.canApplyToDocument()?(this.setInputSummary({preferDocument:!0,didInput:!1}),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.setSelectedRange(this.range),null!=(i=this.responder)&&i.insertString(this.data.end),null!=(o=this.responder)?o.setSelectedRange(this.range[0]+this.data.end.length):void 0):null!=this.data.start||null!=this.data.update?(this.requestReparse(),this.inputController.reset()):void 0):this.inputController.reset()},e.prototype.getEndData=function(){return this.data.end},e.prototype.isEnded=function(){return null!=this.getEndData()},e.prototype.isSignificant=function(){return n.composesExistingText?this.inputSummary.didInput:!0},e.prototype.canApplyToDocument=function(){var t,e;return 0===(null!=(t=this.data.start)?t.length:void 0)&&(null!=(e=this.data.end)?e.length:void 0)>0&&null!=this.range},e.proxyMethod(\"inputController.setInputSummary\"),e.proxyMethod(\"inputController.requestRender\"),e.proxyMethod(\"inputController.requestReparse\"),e.proxyMethod(\"responder?.selectionIsExpanded\"),e.proxyMethod(\"responder?.insertPlaceholder\"),e.proxyMethod(\"responder?.selectPlaceholder\"),e.proxyMethod(\"responder?.forgetPlaceholder\"),e}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.dataTransferIsPlainText,n=e.keyEventIsKeyboardCommand,i=e.objectsAreEqual,e.Level2InputController=function(s){function u(){return this.render=o(this.render,this),u.__super__.constructor.apply(this,arguments)}var c,l,h,p,d,f;return r(u,s),u.prototype.elementDidMutate=function(){var t;return this.scheduledRender?this.composing&&null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidAllowUnhandledInput?t.inputControllerDidAllowUnhandledInput():void 0:this.reparse()},u.prototype.scheduleRender=function(){return null!=this.scheduledRender?this.scheduledRender:this.scheduledRender=requestAnimationFrame(this.render)},u.prototype.render=function(){var t;return cancelAnimationFrame(this.scheduledRender),this.scheduledRender=null,this.composing||null!=(t=this.delegate)&&t.render(),\"function\"==typeof this.afterRender&&this.afterRender(),this.afterRender=null},u.prototype.reparse=function(){var t;return null!=(t=this.delegate)?t.reparse():void 0},u.prototype.events={keydown:function(t){var e,i,o,r;if(n(t)){if(e=l(t),null!=(r=this.delegate)?r.inputControllerDidReceiveKeyboardCommand(e):void 0)return t.preventDefault()}else if(o=t.key,t.altKey&&(o+=\"+Alt\"),t.shiftKey&&(o+=\"+Shift\"),i=this.keys[o])return this.withEvent(t,i)},paste:function(t){var e,n,i,o,r,s,a,u,c;return h(t)?(t.preventDefault(),this.attachFiles(t.clipboardData.files)):p(t)?(t.preventDefault(),n={type:\"text/plain\",string:t.clipboardData.getData(\"text/plain\")},null!=(i=this.delegate)&&i.inputControllerWillPaste(n),null!=(o=this.responder)&&o.insertString(n.string),this.render(),null!=(r=this.delegate)?r.inputControllerDidPaste(n):void 0):(e=null!=(s=t.clipboardData)?s.getData(\"URL\"):void 0)?(t.preventDefault(),n={type:\"text/html\",html:this.createLinkHTML(e)},null!=(a=this.delegate)&&a.inputControllerWillPaste(n),null!=(u=this.responder)&&u.insertHTML(n.html),this.render(),null!=(c=this.delegate)?c.inputControllerDidPaste(n):void 0):void 0},beforeinput:function(t){var e;return(e=this.inputTypes[t.inputType])?(this.withEvent(t,e),this.scheduleRender()):void 0},input:function(){return e.selectionChangeObserver.reset()},dragstart:function(t){var e,n;return(null!=(e=this.responder)?e.selectionContainsAttachments():void 0)?(t.dataTransfer.setData(\"application/x-trix-dragging\",!0),this.dragging={range:null!=(n=this.responder)?n.getSelectedRange():void 0,point:d(t)}):void 0},dragenter:function(t){return c(t)?t.preventDefault():void 0},dragover:function(t){var e,n;if(this.dragging){if(t.preventDefault(),e=d(t),!i(e,this.dragging.point))return this.dragging.point=e,null!=(n=this.responder)?n.setLocationRangeFromPointRange(e):void 0}else if(c(t))return t.preventDefault()},drop:function(t){var e,n,i,o;return this.dragging?(t.preventDefault(),null!=(n=this.delegate)&&n.inputControllerWillMoveText(),null!=(i=this.responder)&&i.moveTextFromRange(this.dragging.range),this.dragging=null,this.scheduleRender()):c(t)?(t.preventDefault(),e=d(t),null!=(o=this.responder)&&o.setLocationRangeFromPointRange(e),this.attachFiles(t.dataTransfer.files)):void 0},dragend:function(){var t;return this.dragging?(null!=(t=this.responder)&&t.setSelectedRange(this.dragging.range),this.dragging=null):void 0},compositionend:function(){return this.composing?(this.composing=!1,this.scheduleRender()):void 0}},u.prototype.keys={ArrowLeft:function(){var t,e;return(null!=(t=this.responder)?t.shouldManageMovingCursorInDirection(\"backward\"):void 0)?(this.event.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"backward\"):void 0):void 0},ArrowRight:function(){var t,e;return(null!=(t=this.responder)?t.shouldManageMovingCursorInDirection(\"forward\"):void 0)?(this.event.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"forward\"):void 0):void 0},Backspace:function(){var t,e,n;return(null!=(t=this.responder)?t.shouldManageDeletingInDirection(\"backward\"):void 0)?(this.event.preventDefault(),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.deleteInDirection(\"backward\"),this.render()):void 0},Tab:function(){var t,e;return(null!=(t=this.responder)?t.canIncreaseNestingLevel():void 0)?(this.event.preventDefault(),null!=(e=this.responder)&&e.increaseNestingLevel(),this.render()):void 0},\"Tab+Shift\":function(){var t,e;return(null!=(t=this.responder)?t.canDecreaseNestingLevel():void 0)?(this.event.preventDefault(),null!=(e=this.responder)&&e.decreaseNestingLevel(),this.render()):void 0}},u.prototype.inputTypes={deleteByComposition:function(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteByCut:function(){return this.deleteInDirection(\"backward\")},deleteByDrag:function(){return this.event.preventDefault(),this.withTargetDOMRange(function(){var t;return this.deleteByDragRange=null!=(t=this.responder)?t.getSelectedRange():void 0})},deleteCompositionText:function(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteContent:function(){return this.deleteInDirection(\"backward\")},deleteContentBackward:function(){return this.deleteInDirection(\"backward\")},deleteContentForward:function(){return this.deleteInDirection(\"forward\")},deleteEntireSoftLine:function(){return this.deleteInDirection(\"forward\")},deleteHardLineBackward:function(){return this.deleteInDirection(\"backward\")},deleteHardLineForward:function(){return this.deleteInDirection(\"forward\")},deleteSoftLineBackward:function(){return this.deleteInDirection(\"backward\")},deleteSoftLineForward:function(){return this.deleteInDirection(\"forward\")},deleteWordBackward:function(){return this.deleteInDirection(\"backward\")},deleteWordForward:function(){return this.deleteInDirection(\"forward\")},formatBackColor:function(){return this.activateAttributeIfSupported(\"backgroundColor\",this.event.data)},formatBold:function(){return this.toggleAttributeIfSupported(\"bold\")},formatFontColor:function(){return this.activateAttributeIfSupported(\"color\",this.event.data)},formatFontName:function(){return this.activateAttributeIfSupported(\"font\",this.event.data)},formatIndent:function(){var t;return(null!=(t=this.responder)?t.canIncreaseNestingLevel():void 0)?this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.increaseNestingLevel():void 0}):void 0},formatItalic:function(){return this.toggleAttributeIfSupported(\"italic\")},formatJustifyCenter:function(){return this.toggleAttributeIfSupported(\"justifyCenter\")},formatJustifyFull:function(){return this.toggleAttributeIfSupported(\"justifyFull\")},formatJustifyLeft:function(){return this.toggleAttributeIfSupported(\"justifyLeft\")},formatJustifyRight:function(){return this.toggleAttributeIfSupported(\"justifyRight\")},formatOutdent:function(){var t;return(null!=(t=this.responder)?t.canDecreaseNestingLevel():void 0)?this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.decreaseNestingLevel():void 0}):void 0},formatRemove:function(){return this.withTargetDOMRange(function(){var t,e,n,i;i=[];for(t in null!=(e=this.responder)?e.getCurrentAttributes():void 0)i.push(null!=(n=this.responder)?n.removeCurrentAttribute(t):void 0);return i})},formatSetBlockTextDirection:function(){return this.activateAttributeIfSupported(\"blockDir\",this.event.data)},formatSetInlineTextDirection:function(){return this.activateAttributeIfSupported(\"textDir\",this.event.data)},formatStrikeThrough:function(){return this.toggleAttributeIfSupported(\"strike\")},formatSubscript:function(){return this.toggleAttributeIfSupported(\"sub\")},formatSuperscript:function(){return this.toggleAttributeIfSupported(\"sup\")},formatUnderline:function(){return this.toggleAttributeIfSupported(\"underline\")},historyRedo:function(){var t;return null!=(t=this.delegate)?t.inputControllerWillPerformRedo():void 0},historyUndo:function(){var t;return null!=(t=this.delegate)?t.inputControllerWillPerformUndo():void 0},insertCompositionText:function(){return this.composing=!0,this.insertString(this.event.data)},insertFromComposition:function(){return this.composing=!1,this.insertString(this.event.data)},insertFromDrop:function(){var t,e;return(t=this.deleteByDragRange)?(this.deleteByDragRange=null,null!=(e=this.delegate)&&e.inputControllerWillMoveText(),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.moveTextFromRange(t):void 0})):void 0},insertFromPaste:function(){var n,i,o,r,s,a,u,c,l,h,p;return n=this.event.dataTransfer,s={dataTransfer:n},(i=n.getData(\"URL\"))?(this.event.preventDefault(),s.type=\"text/html\",p=(r=n.getData(\"public.url-name\"))?e.squishBreakableWhitespace(r).trim():i,s.html=this.createLinkHTML(i,p),null!=(a=this.delegate)&&a.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertHTML(s.html):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):t(n)?(s.type=\"text/plain\",s.string=n.getData(\"text/plain\"),null!=(u=this.delegate)&&u.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertString(s.string):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):(o=n.getData(\"text/html\"))?(this.event.preventDefault(),s.type=\"text/html\",s.html=o,null!=(c=this.delegate)&&c.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertHTML(s.html):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):(null!=(l=n.files)?l.length:void 0)?(s.type=\"File\",s.file=n.files[0],null!=(h=this.delegate)&&h.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertFile(s.file):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):void 0},insertFromYank:function(){return this.insertString(this.event.data)},insertLineBreak:function(){return this.insertString(\"\\n\")},insertLink:function(){return this.activateAttributeIfSupported(\"href\",this.event.data)},insertOrderedList:function(){return this.toggleAttributeIfSupported(\"number\")},insertParagraph:function(){var t;return null!=(t=this.delegate)&&t.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertLineBreak():void 0})},insertReplacementText:function(){return this.insertString(this.event.dataTransfer.getData(\"text/plain\"),{updatePosition:!1})},insertText:function(){var t,e;return this.insertString(null!=(t=this.event.data)?t:null!=(e=this.event.dataTransfer)?e.getData(\"text/plain\"):void 0)},insertTranspose:function(){return this.insertString(this.event.data)},insertUnorderedList:function(){return this.toggleAttributeIfSupported(\"bullet\")}},u.prototype.insertString=function(t,e){var n;return null==t&&(t=\"\"),null!=(n=this.delegate)&&n.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var n;return null!=(n=this.responder)?n.insertString(t,e):void 0})},u.prototype.toggleAttributeIfSupported=function(t){var n;return a.call(e.getAllAttributeNames(),t)>=0?(null!=(n=this.delegate)&&n.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.toggleCurrentAttribute(t):void 0})):void 0},u.prototype.activateAttributeIfSupported=function(t,n){var i;return a.call(e.getAllAttributeNames(),t)>=0?(null!=(i=this.delegate)&&i.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.setCurrentAttribute(t,n):void 0})):void 0},u.prototype.deleteInDirection=function(t,e){var n,i,o,r;return o=(null!=e?e:{recordUndoEntry:!0}).recordUndoEntry,o&&null!=(r=this.delegate)&&r.inputControllerWillPerformTyping(),i=function(e){return function(){var n;return null!=(n=e.responder)?n.deleteInDirection(t):void 0}}(this),(n=this.getTargetDOMRange({minLength:2}))?this.withTargetDOMRange(n,i):i()},u.prototype.withTargetDOMRange=function(t,n){var i;return\"function\"==typeof t&&(n=t,t=this.getTargetDOMRange()),t?null!=(i=this.responder)?i.withTargetDOMRange(t,n.bind(this)):void 0:(e.selectionChangeObserver.reset(),n.call(this))},u.prototype.getTargetDOMRange=function(t){var e,n,i,o;return i=(null!=t?t:{minLength:0}).minLength,(o=\"function\"==typeof(e=this.event).getTargetRanges?e.getTargetRanges():void 0)&&o.length&&(n=f(o[0]),0===i||n.toString().length>=i)?n:void 0},f=function(t){var e;return e=document.createRange(),e.setStart(t.startContainer,t.startOffset),e.setEnd(t.endContainer,t.endOffset),e},u.prototype.withEvent=function(t,e){var n;this.event=t;try{n=e.call(this)}finally{this.event=null}return n},c=function(t){var e,n;return a.call(null!=(e=null!=(n=t.dataTransfer)?n.types:void 0)?e:[],\"Files\")>=0},h=function(t){var e;return(e=t.clipboardData)?a.call(e.types,\"Files\")>=0&&1===e.types.length&&e.files.length>=1:void 0},p=function(t){var e;return(e=t.clipboardData)?a.call(e.types,\"text/plain\")>=0&&1===e.types.length:void 0},l=function(t){var e;return e=[],t.altKey&&e.push(\"alt\"),t.shiftKey&&e.push(\"shift\"),e.push(t.key),e},d=function(t){return{x:t.clientX,y:t.clientY}},u}(e.InputController)}.call(this),function(){var t,n,i,o,r,s,a,u,c=function(t,e){return function(){return t.apply(e,arguments)}},l=function(t,e){function n(){this.constructor=t}for(var i in e)h.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty;n=e.defer,i=e.handleEvent,s=e.makeElement,u=e.tagName,a=e.config,r=a.lang,t=a.css,o=a.keyNames,e.AttachmentEditorController=function(a){function h(t,e,n,i){this.attachmentPiece=t,this.element=e,this.container=n,this.options=null!=i?i:{},this.didBlurCaption=c(this.didBlurCaption,this),this.didChangeCaption=c(this.didChangeCaption,this),this.didInputCaption=c(this.didInputCaption,this),this.didKeyDownCaption=c(this.didKeyDownCaption,this),this.didClickActionButton=c(this.didClickActionButton,this),this.didClickToolbar=c(this.didClickToolbar,this),this.attachment=this.attachmentPiece.attachment,\"a\"===u(this.element)&&(this.element=this.element.firstChild),this.install()}var p;return l(h,a),p=function(t){return function(){var e;return e=t.apply(this,arguments),e[\"do\"](),null==this.undos&&(this.undos=[]),this.undos.push(e.undo)}},h.prototype.install=function(){return this.makeElementMutable(),this.addToolbar(),this.attachment.isPreviewable()?this.installCaptionEditor():void 0},h.prototype.uninstall=function(){var t,e;for(this.savePendingCaption();e=this.undos.pop();)e();return null!=(t=this.delegate)?t.didUninstallAttachmentEditor(this):void 0},h.prototype.savePendingCaption=function(){var t,e,n;return null!=this.pendingCaption?(t=this.pendingCaption,this.pendingCaption=null,t?null!=(e=this.delegate)&&\"function\"==typeof e.attachmentEditorDidRequestUpdatingAttributesForAttachment?e.attachmentEditorDidRequestUpdatingAttributesForAttachment({caption:t},this.attachment):void 0:null!=(n=this.delegate)&&\"function\"==typeof n.attachmentEditorDidRequestRemovingAttributeForAttachment?n.attachmentEditorDidRequestRemovingAttributeForAttachment(\"caption\",this.attachment):void 0):void 0},h.prototype.makeElementMutable=p(function(){return{\"do\":function(t){return function(){return t.element.dataset.trixMutable=!0}}(this),undo:function(t){return function(){return delete t.element.dataset.trixMutable}}(this)}}),h.prototype.addToolbar=p(function(){var n;return n=s({tagName:\"div\",className:t.attachmentToolbar,data:{trixMutable:!0},childNodes:s({tagName:\"div\",className:\"trix-button-row\",childNodes:s({tagName:\"span\",className:\"trix-button-group trix-button-group--actions\",childNodes:s({tagName:\"button\",className:\"trix-button trix-button--remove\",textContent:r.remove,attributes:{title:r.remove},data:{trixAction:\"remove\"}})})})}),this.attachment.isPreviewable()&&n.appendChild(s({tagName:\"div\",className:t.attachmentMetadataContainer,childNodes:s({tagName:\"span\",className:t.attachmentMetadata,childNodes:[s({tagName:\"span\",className:t.attachmentName,textContent:this.attachment.getFilename(),attributes:{title:this.attachment.getFilename()}}),s({tagName:\"span\",className:t.attachmentSize,textContent:this.attachment.getFormattedFilesize()})]})})),i(\"click\",{onElement:n,withCallback:this.didClickToolbar}),i(\"click\",{onElement:n,matchingSelector:\"[data-trix-action]\",withCallback:this.didClickActionButton}),{\"do\":function(t){return function(){return t.element.appendChild(n)}}(this),undo:function(){return function(){return e.removeNode(n)}}(this)}}),h.prototype.installCaptionEditor=p(function(){var o,a,u,c,l;return c=s({tagName:\"textarea\",className:t.attachmentCaptionEditor,attributes:{placeholder:r.captionPlaceholder},data:{trixMutable:!0}}),c.value=this.attachmentPiece.getCaption(),l=c.cloneNode(),l.classList.add(\"trix-autoresize-clone\"),l.tabIndex=-1,o=function(){return l.value=c.value,c.style.height=l.scrollHeight+\"px\"},i(\"input\",{onElement:c,withCallback:o}),i(\"input\",{onElement:c,withCallback:this.didInputCaption}),i(\"keydown\",{onElement:c,withCallback:this.didKeyDownCaption}),i(\"change\",{onElement:c,withCallback:this.didChangeCaption}),i(\"blur\",{onElement:c,withCallback:this.didBlurCaption}),u=this.element.querySelector(\"figcaption\"),a=u.cloneNode(),{\"do\":function(e){return function(){return u.style.display=\"none\",a.appendChild(c),a.appendChild(l),a.classList.add(t.attachmentCaption+\"--editing\"),u.parentElement.insertBefore(a,u),o(),e.options.editCaption?n(function(){return c.focus()}):void 0}}(this),undo:function(){return e.removeNode(a),u.style.display=null}}}),h.prototype.didClickToolbar=function(t){return t.preventDefault(),t.stopPropagation()},h.prototype.didClickActionButton=function(t){var e,n;switch(e=t.target.getAttribute(\"data-trix-action\")){case\"remove\":return null!=(n=this.delegate)?n.attachmentEditorDidRequestRemovalOfAttachment(this.attachment):void 0}},h.prototype.didKeyDownCaption=function(t){var e;return\"return\"===o[t.keyCode]?(t.preventDefault(),this.savePendingCaption(),null!=(e=this.delegate)&&\"function\"==typeof e.attachmentEditorDidRequestDeselectingAttachment?e.attachmentEditorDidRequestDeselectingAttachment(this.attachment):void 0):void 0},h.prototype.didInputCaption=function(t){return this.pendingCaption=t.target.value.replace(/\\s/g,\" \").trim()},h.prototype.didChangeCaption=function(){return this.savePendingCaption()},h.prototype.didBlurCaption=function(){return this.savePendingCaption()},h}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,t=e.config.css,e.AttachmentView=function(r){function s(){s.__super__.constructor.apply(this,arguments),this.attachment=this.object,this.attachment.uploadProgressDelegate=this,this.attachmentPiece=this.options.piece}var a;return o(s,r),s.attachmentSelector=\"[data-trix-attachment]\",s.prototype.createContentNodes=function(){return[]},s.prototype.createNodes=function(){var n,o,r,s,u,c,l;if(n=s=i({tagName:\"figure\",className:this.getClassName(),data:this.getData(),editable:!1}),(o=this.getHref())&&(s=i({tagName:\"a\",editable:!1,attributes:{href:o,tabindex:-1}}),n.appendChild(s)),this.attachment.hasContent())e.HTMLSanitizer.setHTML(s,this.attachment.getContent());else for(l=this.createContentNodes(),r=0,u=l.length;u>r;r++)c=l[r],s.appendChild(c);return s.appendChild(this.createCaptionElement()),this.attachment.isPending()&&(this.progressElement=i({tagName:\"progress\",attributes:{\"class\":t.attachmentProgress,value:this.attachment.getUploadProgress(),max:100},data:{trixMutable:!0,trixStoreKey:[\"progressElement\",this.attachment.id].join(\"/\")}}),n.appendChild(this.progressElement)),[a(\"left\"),n,a(\"right\")]},s.prototype.createCaptionElement=function(){var e,n,o,r,s,a,u;return o=i({tagName:\"figcaption\",className:t.attachmentCaption}),(e=this.attachmentPiece.getCaption())?(o.classList.add(t.attachmentCaption+\"--edited\"),o.textContent=e):(n=this.getCaptionConfig(),n.name&&(r=this.attachment.getFilename()),n.size&&(a=this.attachment.getFormattedFilesize()),r&&(s=i({tagName:\"span\",className:t.attachmentName,textContent:r}),o.appendChild(s)),a&&(r&&o.appendChild(document.createTextNode(\" \")),u=i({tagName:\"span\",className:t.attachmentSize,textContent:a}),o.appendChild(u))),o},s.prototype.getClassName=function(){var e,n;return n=[t.attachment,t.attachment+\"--\"+this.attachment.getType()],(e=this.attachment.getExtension())&&n.push(t.attachment+\"--\"+e),n.join(\" \")},s.prototype.getData=function(){var t,e;return e={trixAttachment:JSON.stringify(this.attachment),trixContentType:this.attachment.getContentType(),trixId:this.attachment.id},t=this.attachmentPiece.attributes,t.isEmpty()||(e.trixAttributes=JSON.stringify(t)),this.attachment.isPending()&&(e.trixSerialize=!1),e},s.prototype.getHref=function(){return n(this.attachment.getContent(),\"a\")?void 0:this.attachment.getHref()},s.prototype.getCaptionConfig=function(){var t,n,i;return i=this.attachment.getType(),t=e.copyObject(null!=(n=e.config.attachments[i])?n.caption:void 0),\"file\"===i&&(t.name=!0),t},s.prototype.findProgressElement=function(){var t;return null!=(t=this.findElement())?t.querySelector(\"progress\"):void 0},a=function(t){return i({tagName:\"span\",textContent:e.ZERO_WIDTH_SPACE,data:{trixCursorTarget:t,trixSerialize:!1}})},s.prototype.attachmentDidChangeUploadProgress=function(){var t,e;return e=this.attachment.getUploadProgress(),null!=(t=this.findProgressElement())?t.value=e:void 0},s}(e.ObjectView),n=function(t,n){var o;return o=i(\"div\"),e.HTMLSanitizer.setHTML(o,t||\"\"),o.querySelector(n)}}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.makeElement,e.PreviewableAttachmentView=function(i){function o(){o.__super__.constructor.apply(this,arguments),this.attachment.previewDelegate=this}return n(o,i),o.prototype.createContentNodes=function(){return this.image=t({tagName:\"img\",attributes:{src:\"\"},data:{trixMutable:!0}}),this.refresh(this.image),[this.image]},o.prototype.createCaptionElement=function(){var t;return t=o.__super__.createCaptionElement.apply(this,arguments),t.textContent||t.setAttribute(\"data-trix-placeholder\",e.config.lang.captionPlaceholder),t},o.prototype.refresh=function(t){var e;return null==t&&(t=null!=(e=this.findElement())?e.querySelector(\"img\"):void 0),t?this.updateAttributesForImage(t):void 0},o.prototype.updateAttributesForImage=function(t){var e,n,i,o,r,s;return r=this.attachment.getURL(),n=this.attachment.getPreviewURL(),t.src=n||r,n===r?t.removeAttribute(\"data-trix-serialized-attributes\"):(i=JSON.stringify({src:r}),t.setAttribute(\"data-trix-serialized-attributes\",i)),s=this.attachment.getWidth(),e=this.attachment.getHeight(),null!=s&&(t.width=s),null!=e&&(t.height=e),o=[\"imageElement\",this.attachment.id,t.src,t.width,t.height].join(\"/\"),t.dataset.trixStoreKey=o},o.prototype.attachmentDidChangeAttributes=function(){return this.refresh(this.image),this.refresh()},o}(e.AttachmentView)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,t=e.findInnerElement,n=e.getTextConfig,e.PieceView=function(r){function s(){var t;s.__super__.constructor.apply(this,arguments),this.piece=this.object,this.attributes=this.piece.getAttributes(),t=this.options,this.textConfig=t.textConfig,this.context=t.context,this.piece.attachment?this.attachment=this.piece.attachment:this.string=this.piece.toString()}var a;return o(s,r),s.prototype.createNodes=function(){var e,n,i,o,r,s;if(s=this.attachment?this.createAttachmentNodes():this.createStringNodes(),e=this.createElement()){for(i=t(e),n=0,o=s.length;o>n;n++)r=s[n],i.appendChild(r);s=[e]}return s},s.prototype.createAttachmentNodes=function(){var t,n;return t=this.attachment.isPreviewable()?e.PreviewableAttachmentView:e.AttachmentView,n=this.createChildView(t,this.piece.attachment,{piece:this.piece}),n.getNodes()},s.prototype.createStringNodes=function(){var t,e,n,o,r,s,a,u,c,l;if(null!=(u=this.textConfig)?u.plaintext:void 0)return[document.createTextNode(this.string)];for(a=[],c=this.string.split(\"\\n\"),n=e=0,o=c.length;o>e;n=++e)l=c[n],n>0&&(t=i(\"br\"),a.push(t)),(r=l.length)&&(s=document.createTextNode(this.preserveSpaces(l)),a.push(s));return a},s.prototype.createElement=function(){var t,e,o,r,s,a,u,c,l;c={},a=this.attributes;for(r in a)if(l=a[r],(t=n(r))&&(t.tagName&&(s=i(t.tagName),o?(o.appendChild(s),o=s):e=o=s),t.styleProperty&&(c[t.styleProperty]=l),t.style)){u=t.style;for(r in u)l=u[r],c[r]=l}if(Object.keys(c).length){null==e&&(e=i(\"span\"));for(r in c)l=c[r],e.style[r]=l}return e},s.prototype.createContainerElement=function(){var t,e,o,r,s;r=this.attributes;for(o in r)if(s=r[o],(e=n(o))&&e.groupTagName)return t={},t[o]=s,i(e.groupTagName,t)},a=e.NON_BREAKING_SPACE,s.prototype.preserveSpaces=function(t){return this.context.isLast&&(t=t.replace(/\\ $/,a)),t=t.replace(/(\\S)\\ {3}(\\S)/g,\"$1 \"+a+\" $2\").replace(/\\ {2}/g,a+\" \").replace(/\\ {2}/g,\" \"+a),(this.context.isFirst||this.context.followsWhitespace)&&(t=t.replace(/^\\ /,a)),t},s}(e.ObjectView)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t\n}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.TextView=function(n){function i(){i.__super__.constructor.apply(this,arguments),this.text=this.object,this.textConfig=this.options.textConfig}var o;return t(i,n),i.prototype.createNodes=function(){var t,n,i,r,s,a,u,c,l,h;for(a=[],c=e.ObjectGroup.groupObjects(this.getPieces()),r=c.length-1,i=n=0,s=c.length;s>n;i=++n)u=c[i],t={},0===i&&(t.isFirst=!0),i===r&&(t.isLast=!0),o(l)&&(t.followsWhitespace=!0),h=this.findOrCreateCachedChildView(e.PieceView,u,{textConfig:this.textConfig,context:t}),a.push.apply(a,h.getNodes()),l=u;return a},i.prototype.getPieces=function(){var t,e,n,i,o;for(i=this.text.getPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],n.hasAttribute(\"blockBreak\")||o.push(n);return o},o=function(t){return/\\s$/.test(null!=t?t.toString():void 0)},i}(e.ObjectView)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,n=e.getBlockConfig,t=e.config.css,e.BlockView=function(r){function s(){s.__super__.constructor.apply(this,arguments),this.block=this.object,this.attributes=this.block.getAttributes()}return o(s,r),s.prototype.createNodes=function(){var t,o,r,s,a,u,c,l,h,p,d;if(o=document.createComment(\"block\"),c=[o],this.block.isEmpty()?c.push(i(\"br\")):(p=null!=(l=n(this.block.getLastAttribute()))?l.text:void 0,d=this.findOrCreateCachedChildView(e.TextView,this.block.text,{textConfig:p}),c.push.apply(c,d.getNodes()),this.shouldAddExtraNewlineElement()&&c.push(i(\"br\"))),this.attributes.length)return c;for(h=e.config.blockAttributes[\"default\"].tagName,this.block.isRTL()&&(t={dir:\"rtl\"}),r=i({tagName:h,attributes:t}),s=0,a=c.length;a>s;s++)u=c[s],r.appendChild(u);return[r]},s.prototype.createContainerElement=function(e){var o,r,s,a,u;return o=this.attributes[e],u=n(o).tagName,0===e&&this.block.isRTL()&&(r={dir:\"rtl\"}),\"attachmentGallery\"===o&&(a=this.block.getBlockBreakPosition(),s=t.attachmentGallery+\" \"+t.attachmentGallery+\"--\"+a),i({tagName:u,className:s,attributes:r})},s.prototype.shouldAddExtraNewlineElement=function(){return/\\n\\n$/.test(this.block.toString())},s}(e.ObjectView)}.call(this),function(){var t,n,i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;t=e.defer,n=e.makeElement,e.DocumentView=function(o){function r(){r.__super__.constructor.apply(this,arguments),this.element=this.options.element,this.elementStore=new e.ElementStore,this.setDocument(this.object)}var s,a,u;return i(r,o),r.render=function(t){var e,i;return e=n(\"div\"),i=new this(t,{element:e}),i.render(),i.sync(),e},r.prototype.setDocument=function(t){return t.isEqualTo(this.document)?void 0:this.document=this.object=t},r.prototype.render=function(){var t,i,o,r,s,a,u;if(this.childViews=[],this.shadowElement=n(\"div\"),!this.document.isEmpty()){for(s=e.ObjectGroup.groupObjects(this.document.getBlocks(),{asTree:!0}),a=[],t=0,i=s.length;i>t;t++)r=s[t],u=this.findOrCreateCachedChildView(e.BlockView,r),a.push(function(){var t,e,n,i;for(n=u.getNodes(),i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(this.shadowElement.appendChild(o));return i}.call(this));return a}},r.prototype.isSynced=function(){return s(this.shadowElement,this.element)},r.prototype.sync=function(){var t;for(t=this.createDocumentFragmentForSync();this.element.lastChild;)this.element.removeChild(this.element.lastChild);return this.element.appendChild(t),this.didSync()},r.prototype.didSync=function(){return this.elementStore.reset(a(this.element)),t(function(t){return function(){return t.garbageCollectCachedViews()}}(this))},r.prototype.createDocumentFragmentForSync=function(){var t,e,n,i,o,r,s,u,c,l;for(e=document.createDocumentFragment(),u=this.shadowElement.childNodes,n=0,o=u.length;o>n;n++)s=u[n],e.appendChild(s.cloneNode(!0));for(c=a(e),i=0,r=c.length;r>i;i++)t=c[i],(l=this.elementStore.remove(t))&&t.parentNode.replaceChild(l,t);return e},a=function(t){return t.querySelectorAll(\"[data-trix-store-key]\")},s=function(t,e){return u(t.innerHTML)===u(e.innerHTML)},u=function(t){return t.replace(/&nbsp;/g,\" \")},r}(e.ObjectView)}.call(this),function(){var t,n,i,o,r,s=function(t,e){return function(){return t.apply(e,arguments)}},a=function(t,e){function n(){this.constructor=t}for(var i in e)u.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},u={}.hasOwnProperty;i=e.findClosestElementFromNode,o=e.handleEvent,r=e.innerElementIsActive,n=e.defer,t=e.AttachmentView.attachmentSelector,e.CompositionController=function(u){function c(n,i){this.element=n,this.composition=i,this.didClickAttachment=s(this.didClickAttachment,this),this.didBlur=s(this.didBlur,this),this.didFocus=s(this.didFocus,this),this.documentView=new e.DocumentView(this.composition.document,{element:this.element}),o(\"focus\",{onElement:this.element,withCallback:this.didFocus}),o(\"blur\",{onElement:this.element,withCallback:this.didBlur}),o(\"click\",{onElement:this.element,matchingSelector:\"a[contenteditable=false]\",preventDefault:!0}),o(\"mousedown\",{onElement:this.element,matchingSelector:t,withCallback:this.didClickAttachment}),o(\"click\",{onElement:this.element,matchingSelector:\"a\"+t,preventDefault:!0})}return a(c,u),c.prototype.didFocus=function(){var t,e,n;return t=function(t){return function(){var e;return t.focused?void 0:(t.focused=!0,null!=(e=t.delegate)&&\"function\"==typeof e.compositionControllerDidFocus?e.compositionControllerDidFocus():void 0)}}(this),null!=(e=null!=(n=this.blurPromise)?n.then(t):void 0)?e:t()},c.prototype.didBlur=function(){return this.blurPromise=new Promise(function(t){return function(e){return n(function(){var n;return r(t.element)||(t.focused=null,null!=(n=t.delegate)&&\"function\"==typeof n.compositionControllerDidBlur&&n.compositionControllerDidBlur()),t.blurPromise=null,e()})}}(this))},c.prototype.didClickAttachment=function(t,e){var n,o,r;return n=this.findAttachmentForElement(e),o=null!=i(t.target,{matchingSelector:\"figcaption\"}),null!=(r=this.delegate)&&\"function\"==typeof r.compositionControllerDidSelectAttachment?r.compositionControllerDidSelectAttachment(n,{editCaption:o}):void 0},c.prototype.getSerializableElement=function(){return this.isEditingAttachment()?this.documentView.shadowElement:this.element},c.prototype.render=function(){var t,e,n;return this.revision!==this.composition.revision&&(this.documentView.setDocument(this.composition.document),this.documentView.render(),this.revision=this.composition.revision),this.canSyncDocumentView()&&!this.documentView.isSynced()&&(null!=(t=this.delegate)&&\"function\"==typeof t.compositionControllerWillSyncDocumentView&&t.compositionControllerWillSyncDocumentView(),this.documentView.sync(),null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidSyncDocumentView&&e.compositionControllerDidSyncDocumentView()),null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerDidRender?n.compositionControllerDidRender():void 0},c.prototype.rerenderViewForObject=function(t){return this.invalidateViewForObject(t),this.render()},c.prototype.invalidateViewForObject=function(t){return this.documentView.invalidateViewForObject(t)},c.prototype.isViewCachingEnabled=function(){return this.documentView.isViewCachingEnabled()},c.prototype.enableViewCaching=function(){return this.documentView.enableViewCaching()},c.prototype.disableViewCaching=function(){return this.documentView.disableViewCaching()},c.prototype.refreshViewCache=function(){return this.documentView.garbageCollectCachedViews()},c.prototype.isEditingAttachment=function(){return null!=this.attachmentEditor},c.prototype.installAttachmentEditorForAttachment=function(t,n){var i,o,r;if((null!=(r=this.attachmentEditor)?r.attachment:void 0)!==t&&(o=this.documentView.findElementForObject(t)))return this.uninstallAttachmentEditor(),i=this.composition.document.getAttachmentPieceForAttachment(t),this.attachmentEditor=new e.AttachmentEditorController(i,o,this.element,n),this.attachmentEditor.delegate=this},c.prototype.uninstallAttachmentEditor=function(){var t;return null!=(t=this.attachmentEditor)?t.uninstall():void 0},c.prototype.didUninstallAttachmentEditor=function(){return this.attachmentEditor=null,this.render()},c.prototype.attachmentEditorDidRequestUpdatingAttributesForAttachment=function(t,e){var n;return null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerWillUpdateAttachment&&n.compositionControllerWillUpdateAttachment(e),this.composition.updateAttributesForAttachment(t,e)},c.prototype.attachmentEditorDidRequestRemovingAttributeForAttachment=function(t,e){var n;return null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerWillUpdateAttachment&&n.compositionControllerWillUpdateAttachment(e),this.composition.removeAttributeForAttachment(t,e)},c.prototype.attachmentEditorDidRequestRemovalOfAttachment=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidRequestRemovalOfAttachment?e.compositionControllerDidRequestRemovalOfAttachment(t):void 0},c.prototype.attachmentEditorDidRequestDeselectingAttachment=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidRequestDeselectingAttachment?e.compositionControllerDidRequestDeselectingAttachment(t):void 0},c.prototype.canSyncDocumentView=function(){return!this.isEditingAttachment()},c.prototype.findAttachmentForElement=function(t){return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId,10))},c}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty;n=e.handleEvent,i=e.triggerEvent,t=e.findClosestElementFromNode,e.ToolbarController=function(e){function s(t){this.element=t,this.didKeyDownDialogInput=o(this.didKeyDownDialogInput,this),this.didClickDialogButton=o(this.didClickDialogButton,this),this.didClickAttributeButton=o(this.didClickAttributeButton,this),this.didClickActionButton=o(this.didClickActionButton,this),this.attributes={},this.actions={},this.resetDialogInputs(),n(\"mousedown\",{onElement:this.element,matchingSelector:a,withCallback:this.didClickActionButton}),n(\"mousedown\",{onElement:this.element,matchingSelector:c,withCallback:this.didClickAttributeButton}),n(\"click\",{onElement:this.element,matchingSelector:v,preventDefault:!0}),n(\"click\",{onElement:this.element,matchingSelector:l,withCallback:this.didClickDialogButton}),n(\"keydown\",{onElement:this.element,matchingSelector:h,withCallback:this.didKeyDownDialogInput})}var a,u,c,l,h,p,d,f,g,m,v;return r(s,e),c=\"[data-trix-attribute]\",a=\"[data-trix-action]\",v=c+\", \"+a,p=\"[data-trix-dialog]\",u=p+\"[data-trix-active]\",l=p+\" [data-trix-method]\",h=p+\" [data-trix-input]\",s.prototype.didClickActionButton=function(t,e){var n,i,o;return null!=(i=this.delegate)&&i.toolbarDidClickButton(),t.preventDefault(),n=d(e),this.getDialog(n)?this.toggleDialog(n):null!=(o=this.delegate)?o.toolbarDidInvokeAction(n):void 0},s.prototype.didClickAttributeButton=function(t,e){var n,i,o;return null!=(i=this.delegate)&&i.toolbarDidClickButton(),t.preventDefault(),n=f(e),this.getDialog(n)?this.toggleDialog(n):null!=(o=this.delegate)&&o.toolbarDidToggleAttribute(n),this.refreshAttributeButtons()},s.prototype.didClickDialogButton=function(e,n){var i,o;return i=t(n,{matchingSelector:p}),o=n.getAttribute(\"data-trix-method\"),this[o].call(this,i)},s.prototype.didKeyDownDialogInput=function(t,e){var n,i;return 13===t.keyCode&&(t.preventDefault(),n=e.getAttribute(\"name\"),i=this.getDialog(n),this.setAttribute(i)),27===t.keyCode?(t.preventDefault(),this.hideDialog()):void 0},s.prototype.updateActions=function(t){return this.actions=t,this.refreshActionButtons()},s.prototype.refreshActionButtons=function(){return this.eachActionButton(function(t){return function(e,n){return e.disabled=t.actions[n]===!1}}(this))},s.prototype.eachActionButton=function(t){var e,n,i,o,r;for(o=this.element.querySelectorAll(a),r=[],n=0,i=o.length;i>n;n++)e=o[n],r.push(t(e,d(e)));return r},s.prototype.updateAttributes=function(t){return this.attributes=t,this.refreshAttributeButtons()},s.prototype.refreshAttributeButtons=function(){return this.eachAttributeButton(function(t){return function(e,n){return e.disabled=t.attributes[n]===!1,t.attributes[n]||t.dialogIsVisible(n)?(e.setAttribute(\"data-trix-active\",\"\"),e.classList.add(\"trix-active\")):(e.removeAttribute(\"data-trix-active\"),e.classList.remove(\"trix-active\"))}}(this))},s.prototype.eachAttributeButton=function(t){var e,n,i,o,r;for(o=this.element.querySelectorAll(c),r=[],n=0,i=o.length;i>n;n++)e=o[n],r.push(t(e,f(e)));return r},s.prototype.applyKeyboardCommand=function(t){var e,n,o,r,s,a,u;for(s=JSON.stringify(t.sort()),u=this.element.querySelectorAll(\"[data-trix-key]\"),r=0,a=u.length;a>r;r++)if(e=u[r],o=e.getAttribute(\"data-trix-key\").split(\"+\"),n=JSON.stringify(o.sort()),n===s)return i(\"mousedown\",{onElement:e}),!0;return!1},s.prototype.dialogIsVisible=function(t){var e;return(e=this.getDialog(t))?e.hasAttribute(\"data-trix-active\"):void 0},s.prototype.toggleDialog=function(t){return this.dialogIsVisible(t)?this.hideDialog():this.showDialog(t)},s.prototype.showDialog=function(t){var e,n,i,o,r,s,a,u,c,l;for(this.hideDialog(),null!=(a=this.delegate)&&a.toolbarWillShowDialog(),i=this.getDialog(t),i.setAttribute(\"data-trix-active\",\"\"),i.classList.add(\"trix-active\"),u=i.querySelectorAll(\"input[disabled]\"),o=0,s=u.length;s>o;o++)n=u[o],n.removeAttribute(\"disabled\");return(e=f(i))&&(r=m(i,t))&&(r.value=null!=(c=this.attributes[e])?c:\"\",r.select()),null!=(l=this.delegate)?l.toolbarDidShowDialog(t):void 0},s.prototype.setAttribute=function(t){var e,n,i;return e=f(t),n=m(t,e),n.willValidate&&!n.checkValidity()?(n.setAttribute(\"data-trix-validate\",\"\"),n.classList.add(\"trix-validate\"),n.focus()):(null!=(i=this.delegate)&&i.toolbarDidUpdateAttribute(e,n.value),this.hideDialog())},s.prototype.removeAttribute=function(t){var e,n;return e=f(t),null!=(n=this.delegate)&&n.toolbarDidRemoveAttribute(e),this.hideDialog()},s.prototype.hideDialog=function(){var t,e;return(t=this.element.querySelector(u))?(t.removeAttribute(\"data-trix-active\"),t.classList.remove(\"trix-active\"),this.resetDialogInputs(),null!=(e=this.delegate)?e.toolbarDidHideDialog(g(t)):void 0):void 0},s.prototype.resetDialogInputs=function(){var t,e,n,i,o;for(i=this.element.querySelectorAll(h),o=[],t=0,n=i.length;n>t;t++)e=i[t],e.setAttribute(\"disabled\",\"disabled\"),e.removeAttribute(\"data-trix-validate\"),o.push(e.classList.remove(\"trix-validate\"));return o},s.prototype.getDialog=function(t){return this.element.querySelector(\"[data-trix-dialog=\"+t+\"]\")},m=function(t,e){return null==e&&(e=f(t)),t.querySelector(\"[data-trix-input][name='\"+e+\"']\")},d=function(t){return t.getAttribute(\"data-trix-action\")},f=function(t){var e;return null!=(e=t.getAttribute(\"data-trix-attribute\"))?e:t.getAttribute(\"data-trix-dialog-attribute\")},g=function(t){return t.getAttribute(\"data-trix-dialog\")},s}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ImagePreloadOperation=function(e){function n(t){this.url=t}return t(n,e),n.prototype.perform=function(t){var e;return e=new Image,e.onload=function(n){return function(){return e.width=n.width=e.naturalWidth,e.height=n.height=e.naturalHeight,t(!0,e)}}(this),e.onerror=function(){return t(!1)},e.src=this.url},n}(e.Operation)}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}},n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;e.Attachment=function(i){function o(n){null==n&&(n={}),this.releaseFile=t(this.releaseFile,this),o.__super__.constructor.apply(this,arguments),this.attributes=e.Hash.box(n),this.didChangeAttributes()}return n(o,i),o.previewablePattern=/^image(\\/(gif|png|jpe?g)|$)/,o.attachmentForFile=function(t){var e,n;return n=this.attributesForFile(t),e=new this(n),e.setFile(t),e},o.attributesForFile=function(t){return new e.Hash({filename:t.name,filesize:t.size,contentType:t.type})},o.fromJSON=function(t){return new this(t)},o.prototype.getAttribute=function(t){return this.attributes.get(t)},o.prototype.hasAttribute=function(t){return this.attributes.has(t)},o.prototype.getAttributes=function(){return this.attributes.toObject()},o.prototype.setAttributes=function(t){var e,n,i;return null==t&&(t={}),e=this.attributes.merge(t),this.attributes.isEqualTo(e)?void 0:(this.attributes=e,this.didChangeAttributes(),null!=(n=this.previewDelegate)&&\"function\"==typeof n.attachmentDidChangeAttributes&&n.attachmentDidChangeAttributes(this),null!=(i=this.delegate)&&\"function\"==typeof i.attachmentDidChangeAttributes?i.attachmentDidChangeAttributes(this):void 0)},o.prototype.didChangeAttributes=function(){return this.isPreviewable()?this.preloadURL():void 0},o.prototype.isPending=function(){return null!=this.file&&!(this.getURL()||this.getHref())},o.prototype.isPreviewable=function(){return this.attributes.has(\"previewable\")?this.attributes.get(\"previewable\"):this.constructor.previewablePattern.test(this.getContentType())},o.prototype.getType=function(){return this.hasContent()?\"content\":this.isPreviewable()?\"preview\":\"file\"},o.prototype.getURL=function(){return this.attributes.get(\"url\")},o.prototype.getHref=function(){return this.attributes.get(\"href\")},o.prototype.getFilename=function(){var t;return null!=(t=this.attributes.get(\"filename\"))?t:\"\"},o.prototype.getFilesize=function(){return this.attributes.get(\"filesize\")},o.prototype.getFormattedFilesize=function(){var t;return t=this.attributes.get(\"filesize\"),\"number\"==typeof t?e.config.fileSize.formatter(t):\"\"},o.prototype.getExtension=function(){var t;return null!=(t=this.getFilename().match(/\\.(\\w+)$/))?t[1].toLowerCase():void 0},o.prototype.getContentType=function(){return this.attributes.get(\"contentType\")},o.prototype.hasContent=function(){return this.attributes.has(\"content\")},o.prototype.getContent=function(){return this.attributes.get(\"content\")},o.prototype.getWidth=function(){return this.attributes.get(\"width\")},o.prototype.getHeight=function(){return this.attributes.get(\"height\")},o.prototype.getFile=function(){return this.file},o.prototype.setFile=function(t){return this.file=t,this.isPreviewable()?this.preloadFile():void 0},o.prototype.releaseFile=function(){return this.releasePreloadedFile(),this.file=null},o.prototype.getUploadProgress=function(){var t;return null!=(t=this.uploadProgress)?t:0},o.prototype.setUploadProgress=function(t){var e;return this.uploadProgress!==t?(this.uploadProgress=t,null!=(e=this.uploadProgressDelegate)&&\"function\"==typeof e.attachmentDidChangeUploadProgress?e.attachmentDidChangeUploadProgress(this):void 0):void 0},o.prototype.toJSON=function(){return this.getAttributes()},o.prototype.getCacheKey=function(){return[o.__super__.getCacheKey.apply(this,arguments),this.attributes.getCacheKey(),this.getPreviewURL()].join(\"/\")},o.prototype.getPreviewURL=function(){return this.previewURL||this.preloadingURL},o.prototype.setPreviewURL=function(t){var e,n;return t!==this.getPreviewURL()?(this.previewURL=t,null!=(e=this.previewDelegate)&&\"function\"==typeof e.attachmentDidChangeAttributes&&e.attachmentDidChangeAttributes(this),null!=(n=this.delegate)&&\"function\"==typeof n.attachmentDidChangePreviewURL?n.attachmentDidChangePreviewURL(this):void 0):void 0},o.prototype.preloadURL=function(){return this.preload(this.getURL(),this.releaseFile)},o.prototype.preloadFile=function(){return this.file?(this.fileObjectURL=URL.createObjectURL(this.file),this.preload(this.fileObjectURL)):void 0},o.prototype.releasePreloadedFile=function(){return this.fileObjectURL?(URL.revokeObjectURL(this.fileObjectURL),this.fileObjectURL=null):void 0},o.prototype.preload=function(t,n){var i;return t&&t!==this.getPreviewURL()?(this.preloadingURL=t,i=new e.ImagePreloadOperation(t),i.then(function(e){return function(i){var o,r;return r=i.width,o=i.height,e.getWidth()&&e.getHeight()||e.setAttributes({width:r,height:o}),e.preloadingURL=null,e.setPreviewURL(t),\"function\"==typeof n?n():void 0}}(this))[\"catch\"](function(t){return function(){return t.preloadingURL=null,\"function\"==typeof n?n():void 0}}(this))):void 0},o}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Piece=function(n){function i(t,n){null==n&&(n={}),i.__super__.constructor.apply(this,arguments),this.attributes=e.Hash.box(n)}return t(i,n),i.types={},i.registerType=function(t,e){return e.type=t,this.types[t]=e},i.fromJSON=function(t){var e;return(e=this.types[t.type])?e.fromJSON(t):void 0},i.prototype.copyWithAttributes=function(t){return new this.constructor(this.getValue(),t)},i.prototype.copyWithAdditionalAttributes=function(t){return this.copyWithAttributes(this.attributes.merge(t))},i.prototype.copyWithoutAttribute=function(t){return this.copyWithAttributes(this.attributes.remove(t))},i.prototype.copy=function(){return this.copyWithAttributes(this.attributes)},i.prototype.getAttribute=function(t){return this.attributes.get(t)},i.prototype.getAttributesHash=function(){return this.attributes},i.prototype.getAttributes=function(){return this.attributes.toObject()},i.prototype.getCommonAttributes=function(){var t,e,n;return(n=pieceList.getPieceAtIndex(0))?(t=n.attributes,e=t.getKeys(),pieceList.eachPiece(function(n){return e=t.getKeysCommonToHash(n.attributes),t=t.slice(e)}),t.toObject()):{}},i.prototype.hasAttribute=function(t){return this.attributes.has(t)},i.prototype.hasSameStringValueAsPiece=function(t){return null!=t&&this.toString()===t.toString()},i.prototype.hasSameAttributesAsPiece=function(t){return null!=t&&(this.attributes===t.attributes||this.attributes.isEqualTo(t.attributes))},i.prototype.isBlockBreak=function(){return!1},i.prototype.isEqualTo=function(t){return i.__super__.isEqualTo.apply(this,arguments)||this.hasSameConstructorAs(t)&&this.hasSameStringValueAsPiece(t)&&this.hasSameAttributesAsPiece(t)},i.prototype.isEmpty=function(){return 0===this.length},i.prototype.isSerializable=function(){return!0},i.prototype.toJSON=function(){return{type:this.constructor.type,attributes:this.getAttributes()}},i.prototype.contentsForInspection=function(){return{type:this.constructor.type,attributes:this.attributes.inspect()}},i.prototype.canBeGrouped=function(){return this.hasAttribute(\"href\")},i.prototype.canBeGroupedWith=function(t){return this.getAttribute(\"href\")===t.getAttribute(\"href\")},i.prototype.getLength=function(){return this.length},i.prototype.canBeConsolidatedWith=function(){return!1},i}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Piece.registerType(\"attachment\",e.AttachmentPiece=function(n){function i(t){this.attachment=t,i.__super__.constructor.apply(this,arguments),this.length=1,this.ensureAttachmentExclusivelyHasAttribute(\"href\"),this.attachment.hasContent()||this.removeProhibitedAttributes()}return t(i,n),i.fromJSON=function(t){return new this(e.Attachment.fromJSON(t.attachment),t.attributes)},i.permittedAttributes=[\"caption\",\"presentation\"],i.prototype.ensureAttachmentExclusivelyHasAttribute=function(t){return this.hasAttribute(t)?(this.attachment.hasAttribute(t)||this.attachment.setAttributes(this.attributes.slice(t)),this.attributes=this.attributes.remove(t)):void 0},i.prototype.removeProhibitedAttributes=function(){var t;return t=this.attributes.slice(this.constructor.permittedAttributes),t.isEqualTo(this.attributes)?void 0:this.attributes=t},i.prototype.getValue=function(){return this.attachment},i.prototype.isSerializable=function(){return!this.attachment.isPending()},i.prototype.getCaption=function(){var t;return null!=(t=this.attributes.get(\"caption\"))?t:\"\"},i.prototype.isEqualTo=function(t){var e;return i.__super__.isEqualTo.apply(this,arguments)&&this.attachment.id===(null!=t&&null!=(e=t.attachment)?e.id:void 0)},i.prototype.toString=function(){return e.OBJECT_REPLACEMENT_CHARACTER},i.prototype.toJSON=function(){var t;return t=i.__super__.toJSON.apply(this,arguments),t.attachment=this.attachment,t},i.prototype.getCacheKey=function(){return[i.__super__.getCacheKey.apply(this,arguments),this.attachment.getCacheKey()].join(\"/\")},i.prototype.toConsole=function(){return JSON.stringify(this.toString())},i}(e.Piece))}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.normalizeNewlines,e.Piece.registerType(\"string\",e.StringPiece=function(e){function i(e){i.__super__.constructor.apply(this,arguments),this.string=t(e),this.length=this.string.length}return n(i,e),i.fromJSON=function(t){return new this(t.string,t.attributes)},i.prototype.getValue=function(){return this.string},i.prototype.toString=function(){return this.string.toString()},i.prototype.isBlockBreak=function(){return\"\\n\"===this.toString()&&this.getAttribute(\"blockBreak\")===!0},i.prototype.toJSON=function(){var t;return t=i.__super__.toJSON.apply(this,arguments),t.string=this.string,t},i.prototype.canBeConsolidatedWith=function(t){return null!=t&&this.hasSameConstructorAs(t)&&this.hasSameAttributesAsPiece(t)},i.prototype.consolidateWith=function(t){return new this.constructor(this.toString()+t.toString(),this.attributes)},i.prototype.splitAtOffset=function(t){var e,n;return 0===t?(e=null,n=this):t===this.length?(e=this,n=null):(e=new this.constructor(this.string.slice(0,t),this.attributes),n=new this.constructor(this.string.slice(t),this.attributes)),[e,n]},i.prototype.toConsole=function(){var t;return t=this.string,t.length>15&&(t=t.slice(0,14)+\"\\u2026\"),JSON.stringify(t.toString())},i}(e.Piece))}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty,o=[].slice;t=e.spliceArray,e.SplittableList=function(e){function i(t){null==t&&(t=[]),i.__super__.constructor.apply(this,arguments),this.objects=t.slice(0),this.length=this.objects.length}var r,s,a;return n(i,e),i.box=function(t){return t instanceof this?t:new this(t)},i.prototype.indexOf=function(t){return this.objects.indexOf(t)},i.prototype.splice=function(){var e;return e=1<=arguments.length?o.call(arguments,0):[],new this.constructor(t.apply(null,[this.objects].concat(o.call(e))))},i.prototype.eachObject=function(t){var e,n,i,o,r,s;for(r=this.objects,s=[],n=e=0,i=r.length;i>e;n=++e)o=r[n],s.push(t(o,n));return s},i.prototype.insertObjectAtIndex=function(t,e){return this.splice(e,0,t)},i.prototype.insertSplittableListAtIndex=function(t,e){return this.splice.apply(this,[e,0].concat(o.call(t.objects)))},i.prototype.insertSplittableListAtPosition=function(t,e){var n,i,o;return o=this.splitObjectAtPosition(e),i=o[0],n=o[1],new this.constructor(i).insertSplittableListAtIndex(t,n)},i.prototype.editObjectAtIndex=function(t,e){return this.replaceObjectAtIndex(e(this.objects[t]),t)},i.prototype.replaceObjectAtIndex=function(t,e){return this.splice(e,1,t)},i.prototype.removeObjectAtIndex=function(t){return this.splice(t,1)},i.prototype.getObjectAtIndex=function(t){return this.objects[t]},i.prototype.getSplittableListInRange=function(t){var e,n,i,o;return i=this.splitObjectsAtRange(t),n=i[0],e=i[1],o=i[2],new this.constructor(n.slice(e,o+1))},i.prototype.selectSplittableList=function(t){var e,n;return n=function(){var n,i,o,r;for(o=this.objects,r=[],n=0,i=o.length;i>n;n++)e=o[n],t(e)&&r.push(e);return r}.call(this),new this.constructor(n)},i.prototype.removeObjectsInRange=function(t){var e,n,i,o;return i=this.splitObjectsAtRange(t),n=i[0],e=i[1],o=i[2],new this.constructor(n).splice(e,o-e+1)},i.prototype.transformObjectsInRange=function(t,e){var n,i,o,r,s,a,u;return s=this.splitObjectsAtRange(t),r=s[0],i=s[1],a=s[2],u=function(){var t,s,u;for(u=[],n=t=0,s=r.length;s>t;n=++t)o=r[n],u.push(n>=i&&a>=n?e(o):o);return u}(),new this.constructor(u)},i.prototype.splitObjectsAtRange=function(t){var e,n,i,o,s,u;return o=this.splitObjectAtPosition(a(t)),n=o[0],e=o[1],i=o[2],s=new this.constructor(n).splitObjectAtPosition(r(t)+i),n=s[0],u=s[1],[n,e,u-1]},i.prototype.getObjectAtPosition=function(t){var e,n,i;return i=this.findIndexAndOffsetAtPosition(t),e=i.index,n=i.offset,this.objects[e]},i.prototype.splitObjectAtPosition=function(t){var e,n,i,o,r,s,a,u,c,l;return s=this.findIndexAndOffsetAtPosition(t),e=s.index,r=s.offset,o=this.objects.slice(0),null!=e?0===r?(c=e,l=0):(i=this.getObjectAtIndex(e),a=i.splitAtOffset(r),n=a[0],u=a[1],o.splice(e,1,n,u),c=e+1,l=n.getLength()-r):(c=o.length,l=0),[o,c,l]},i.prototype.consolidate=function(){var t,e,n,i,o,r;for(i=[],o=this.objects[0],r=this.objects.slice(1),t=0,e=r.length;e>t;t++)n=r[t],(\"function\"==typeof o.canBeConsolidatedWith?o.canBeConsolidatedWith(n):void 0)?o=o.consolidateWith(n):(i.push(o),o=n);return null!=o&&i.push(o),new this.constructor(i)},i.prototype.consolidateFromIndexToIndex=function(t,e){var n,i,r;return i=this.objects.slice(0),r=i.slice(t,e+1),n=new this.constructor(r).consolidate().toArray(),this.splice.apply(this,[t,r.length].concat(o.call(n)))},i.prototype.findIndexAndOffsetAtPosition=function(t){var e,n,i,o,r,s,a;for(e=0,a=this.objects,i=n=0,o=a.length;o>n;i=++n){if(s=a[i],r=e+s.getLength(),t>=e&&r>t)return{index:i,offset:t-e};e=r}return{index:null,offset:null}},i.prototype.findPositionAtIndexAndOffset=function(t,e){var n,i,o,r,s,a;for(s=0,a=this.objects,n=i=0,o=a.length;o>i;n=++i)if(r=a[n],t>n)s+=r.getLength();else if(n===t){s+=e;break}return s},i.prototype.getEndPosition=function(){var t,e;return null!=this.endPosition?this.endPosition:this.endPosition=function(){var n,i,o;for(e=0,o=this.objects,n=0,i=o.length;i>n;n++)t=o[n],e+=t.getLength();return e}.call(this)},i.prototype.toString=function(){return this.objects.join(\"\")},i.prototype.toArray=function(){return this.objects.slice(0)},i.prototype.toJSON=function(){return this.toArray()},i.prototype.isEqualTo=function(t){return i.__super__.isEqualTo.apply(this,arguments)||s(this.objects,null!=t?t.objects:void 0)},s=function(t,e){var n,i,o,r,s;if(null==e&&(e=[]),t.length!==e.length)return!1;for(s=!0,i=n=0,o=t.length;o>n;i=++n)r=t[i],s&&!r.isEqualTo(e[i])&&(s=!1);return s},i.prototype.contentsForInspection=function(){var t;return{objects:\"[\"+function(){var e,n,i,o;for(i=this.objects,o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.inspect());return o}.call(this).join(\", \")+\"]\"}},a=function(t){return t[0]},r=function(t){return t[1]},i}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Text=function(n){function i(t){var n;null==t&&(t=[]),i.__super__.constructor.apply(this,arguments),this.pieceList=new e.SplittableList(function(){var e,i,o;for(o=[],e=0,i=t.length;i>e;e++)n=t[e],n.isEmpty()||o.push(n);return o}())}return t(i,n),i.textForAttachmentWithAttributes=function(t,n){var i;return i=new e.AttachmentPiece(t,n),new this([i])},i.textForStringWithAttributes=function(t,n){var i;return i=new e.StringPiece(t,n),new this([i])},i.fromJSON=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(e.Piece.fromJSON(n));return r}(),new this(i)},i.prototype.copy=function(){return this.copyWithPieceList(this.pieceList)},i.prototype.copyWithPieceList=function(t){return new this.constructor(t.consolidate().toArray())},i.prototype.copyUsingObjectMap=function(t){var e,n;return n=function(){var n,i,o,r,s;for(o=this.getPieces(),s=[],n=0,i=o.length;i>n;n++)e=o[n],s.push(null!=(r=t.find(e))?r:e);return s}.call(this),new this.constructor(n)},i.prototype.appendText=function(t){return this.insertTextAtPosition(t,this.getLength())},i.prototype.insertTextAtPosition=function(t,e){return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList,e))\n},i.prototype.removeTextAtRange=function(t){return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t))},i.prototype.replaceTextAtRange=function(t,e){return this.removeTextAtRange(e).insertTextAtPosition(t,e[0])},i.prototype.moveTextFromRangeToPosition=function(t,e){var n,i;if(!(t[0]<=e&&e<=t[1]))return i=this.getTextAtRange(t),n=i.getLength(),t[0]<e&&(e-=n),this.removeTextAtRange(t).insertTextAtPosition(i,e)},i.prototype.addAttributeAtRange=function(t,e,n){var i;return i={},i[t]=e,this.addAttributesAtRange(i,n)},i.prototype.addAttributesAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithAdditionalAttributes(t)}))},i.prototype.removeAttributeAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithoutAttribute(t)}))},i.prototype.setAttributesAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithAttributes(t)}))},i.prototype.getAttributesAtPosition=function(t){var e,n;return null!=(e=null!=(n=this.pieceList.getObjectAtPosition(t))?n.getAttributes():void 0)?e:{}},i.prototype.getCommonAttributes=function(){var t,n;return t=function(){var t,e,i,o;for(i=this.pieceList.toArray(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.getAttributes());return o}.call(this),e.Hash.fromCommonAttributesOfObjects(t).toObject()},i.prototype.getCommonAttributesAtRange=function(t){var e;return null!=(e=this.getTextAtRange(t).getCommonAttributes())?e:{}},i.prototype.getExpandedRangeForAttributeAtOffset=function(t,e){var n,i,o;for(n=o=e,i=this.getLength();n>0&&this.getCommonAttributesAtRange([n-1,o])[t];)n--;for(;i>o&&this.getCommonAttributesAtRange([e,o+1])[t];)o++;return[n,o]},i.prototype.getTextAtRange=function(t){return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t))},i.prototype.getStringAtRange=function(t){return this.pieceList.getSplittableListInRange(t).toString()},i.prototype.getStringAtPosition=function(t){return this.getStringAtRange([t,t+1])},i.prototype.startsWithString=function(t){return this.getStringAtRange([0,t.length])===t},i.prototype.endsWithString=function(t){var e;return e=this.getLength(),this.getStringAtRange([e-t.length,e])===t},i.prototype.getAttachmentPieces=function(){var t,e,n,i,o;for(i=this.pieceList.toArray(),o=[],t=0,e=i.length;e>t;t++)n=i[t],null!=n.attachment&&o.push(n);return o},i.prototype.getAttachments=function(){var t,e,n,i,o;for(i=this.getAttachmentPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.attachment);return o},i.prototype.getAttachmentAndPositionById=function(t){var e,n,i,o,r,s;for(o=0,r=this.pieceList.toArray(),e=0,n=r.length;n>e;e++){if(i=r[e],(null!=(s=i.attachment)?s.id:void 0)===t)return{attachment:i.attachment,position:o};o+=i.length}return{attachment:null,position:null}},i.prototype.getAttachmentById=function(t){var e,n,i;return i=this.getAttachmentAndPositionById(t),e=i.attachment,n=i.position,e},i.prototype.getRangeOfAttachment=function(t){var e,n;return n=this.getAttachmentAndPositionById(t.id),t=n.attachment,e=n.position,null!=t?[e,e+1]:void 0},i.prototype.updateAttributesForAttachment=function(t,e){var n;return(n=this.getRangeOfAttachment(e))?this.addAttributesAtRange(t,n):this},i.prototype.getLength=function(){return this.pieceList.getEndPosition()},i.prototype.isEmpty=function(){return 0===this.getLength()},i.prototype.isEqualTo=function(t){var e;return i.__super__.isEqualTo.apply(this,arguments)||(null!=t&&null!=(e=t.pieceList)?e.isEqualTo(this.pieceList):void 0)},i.prototype.isBlockBreak=function(){return 1===this.getLength()&&this.pieceList.getObjectAtIndex(0).isBlockBreak()},i.prototype.eachPiece=function(t){return this.pieceList.eachObject(t)},i.prototype.getPieces=function(){return this.pieceList.toArray()},i.prototype.getPieceAtPosition=function(t){return this.pieceList.getObjectAtPosition(t)},i.prototype.contentsForInspection=function(){return{pieceList:this.pieceList.inspect()}},i.prototype.toSerializableText=function(){var t;return t=this.pieceList.selectSplittableList(function(t){return t.isSerializable()}),this.copyWithPieceList(t)},i.prototype.toString=function(){return this.pieceList.toString()},i.prototype.toJSON=function(){return this.pieceList.toJSON()},i.prototype.toConsole=function(){var t;return JSON.stringify(function(){var e,n,i,o;for(i=this.pieceList.toArray(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(JSON.parse(t.toConsole()));return o}.call(this))},i.prototype.getDirection=function(){return e.getDirection(this.toString())},i.prototype.isRTL=function(){return\"rtl\"===this.getDirection()},i}(e.Object)}.call(this),function(){var t,n,i,o,r,s=function(t,e){function n(){this.constructor=t}for(var i in e)a.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},c=[].slice;t=e.arraysAreEqual,r=e.spliceArray,i=e.getBlockConfig,n=e.getBlockAttributeNames,o=e.getListAttributeNames,e.Block=function(n){function a(t,n){null==t&&(t=new e.Text),null==n&&(n=[]),a.__super__.constructor.apply(this,arguments),this.text=h(t),this.attributes=n}var l,h,p,d,f,g,m,v,y;return s(a,n),a.fromJSON=function(t){var n;return n=e.Text.fromJSON(t.text),new this(n,t.attributes)},a.prototype.isEmpty=function(){return this.text.isBlockBreak()},a.prototype.isEqualTo=function(e){return a.__super__.isEqualTo.apply(this,arguments)||this.text.isEqualTo(null!=e?e.text:void 0)&&t(this.attributes,null!=e?e.attributes:void 0)},a.prototype.copyWithText=function(t){return new this.constructor(t,this.attributes)},a.prototype.copyWithoutText=function(){return this.copyWithText(null)},a.prototype.copyWithAttributes=function(t){return new this.constructor(this.text,t)},a.prototype.copyWithoutAttributes=function(){return this.copyWithAttributes(null)},a.prototype.copyUsingObjectMap=function(t){var e;return this.copyWithText((e=t.find(this.text))?e:this.text.copyUsingObjectMap(t))},a.prototype.addAttribute=function(t){var e;return e=this.attributes.concat(d(t)),this.copyWithAttributes(e)},a.prototype.removeAttribute=function(t){var e,n;return n=i(t).listAttribute,e=g(g(this.attributes,t),n),this.copyWithAttributes(e)},a.prototype.removeLastAttribute=function(){return this.removeAttribute(this.getLastAttribute())},a.prototype.getLastAttribute=function(){return f(this.attributes)},a.prototype.getAttributes=function(){return this.attributes.slice(0)},a.prototype.getAttributeLevel=function(){return this.attributes.length},a.prototype.getAttributeAtLevel=function(t){return this.attributes[t-1]},a.prototype.hasAttribute=function(t){return u.call(this.attributes,t)>=0},a.prototype.hasAttributes=function(){return this.getAttributeLevel()>0},a.prototype.getLastNestableAttribute=function(){return f(this.getNestableAttributes())},a.prototype.getNestableAttributes=function(){var t,e,n,o,r;for(o=this.attributes,r=[],e=0,n=o.length;n>e;e++)t=o[e],i(t).nestable&&r.push(t);return r},a.prototype.getNestingLevel=function(){return this.getNestableAttributes().length},a.prototype.decreaseNestingLevel=function(){var t;return(t=this.getLastNestableAttribute())?this.removeAttribute(t):this},a.prototype.increaseNestingLevel=function(){var t,e,n;return(t=this.getLastNestableAttribute())?(n=this.attributes.lastIndexOf(t),e=r.apply(null,[this.attributes,n+1,0].concat(c.call(d(t)))),this.copyWithAttributes(e)):this},a.prototype.getListItemAttributes=function(){var t,e,n,o,r;for(o=this.attributes,r=[],e=0,n=o.length;n>e;e++)t=o[e],i(t).listAttribute&&r.push(t);return r},a.prototype.isListItem=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.listAttribute:void 0},a.prototype.isTerminalBlock=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.terminal:void 0},a.prototype.breaksOnReturn=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.breakOnReturn:void 0},a.prototype.findLineBreakInDirectionFromPosition=function(t,e){var n,i;return i=this.toString(),n=function(){switch(t){case\"forward\":return i.indexOf(\"\\n\",e);case\"backward\":return i.slice(0,e).lastIndexOf(\"\\n\")}}(),-1!==n?n:void 0},a.prototype.contentsForInspection=function(){return{text:this.text.inspect(),attributes:this.attributes}},a.prototype.toString=function(){return this.text.toString()},a.prototype.toJSON=function(){return{text:this.text,attributes:this.attributes}},a.prototype.getDirection=function(){return this.text.getDirection()},a.prototype.isRTL=function(){return this.text.isRTL()},a.prototype.getLength=function(){return this.text.getLength()},a.prototype.canBeConsolidatedWith=function(t){return!this.hasAttributes()&&!t.hasAttributes()&&this.getDirection()===t.getDirection()},a.prototype.consolidateWith=function(t){var n,i;return n=e.Text.textForStringWithAttributes(\"\\n\"),i=this.getTextWithoutBlockBreak().appendText(n),this.copyWithText(i.appendText(t.text))},a.prototype.splitAtOffset=function(t){var e,n;return 0===t?(e=null,n=this):t===this.getLength()?(e=this,n=null):(e=this.copyWithText(this.text.getTextAtRange([0,t])),n=this.copyWithText(this.text.getTextAtRange([t,this.getLength()]))),[e,n]},a.prototype.getBlockBreakPosition=function(){return this.text.getLength()-1},a.prototype.getTextWithoutBlockBreak=function(){return m(this.text)?this.text.getTextAtRange([0,this.getBlockBreakPosition()]):this.text.copy()},a.prototype.canBeGrouped=function(t){return this.attributes[t]},a.prototype.canBeGroupedWith=function(t,e){var n,r,s,a;return s=t.getAttributes(),r=s[e],n=this.attributes[e],!(n!==r||i(n).group===!1&&(a=s[e+1],u.call(o(),a)<0)||this.getDirection()!==t.getDirection()&&!t.isEmpty())},h=function(t){return t=y(t),t=l(t)},y=function(t){var n,i,o,r,s,a;return r=!1,a=t.getPieces(),i=2<=a.length?c.call(a,0,n=a.length-1):(n=0,[]),o=a[n++],null==o?t:(i=function(){var t,e,n;for(n=[],t=0,e=i.length;e>t;t++)s=i[t],s.isBlockBreak()?(r=!0,n.push(v(s))):n.push(s);return n}(),r?new e.Text(c.call(i).concat([o])):t)},p=e.Text.textForStringWithAttributes(\"\\n\",{blockBreak:!0}),l=function(t){return m(t)?t:t.appendText(p)},m=function(t){var e,n;return n=t.getLength(),0===n?!1:(e=t.getTextAtRange([n-1,n]),e.isBlockBreak())},v=function(t){return t.copyWithoutAttribute(\"blockBreak\")},d=function(t){var e;return e=i(t).listAttribute,null!=e?[e,t]:[t]},f=function(t){return t.slice(-1)[0]},g=function(t,e){var n;return n=t.lastIndexOf(e),-1===n?t:r(t,n,1)},a}(e.Object)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty,s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},a=[].slice;n=e.tagName,i=e.walkTree,t=e.nodeIsAttachmentElement,e.HTMLSanitizer=function(r){function u(t,e){var n;n=null!=e?e:{},this.allowedAttributes=n.allowedAttributes,this.forbiddenProtocols=n.forbiddenProtocols,this.forbiddenElements=n.forbiddenElements,null==this.allowedAttributes&&(this.allowedAttributes=c),null==this.forbiddenProtocols&&(this.forbiddenProtocols=h),null==this.forbiddenElements&&(this.forbiddenElements=l),this.body=p(t)}var c,l,h,p;return o(u,r),c=\"style href src width height class\".split(\" \"),h=\"javascript:\".split(\" \"),l=\"script iframe form noscript embed math\".split(\" \"),u.setHTML=function(t,e){var n,i,o;return o=new this(e),n=o.sanitize(),i=null!=n.getHTML?n.getHTML():n.outerHTML,t.innerHTML=i},u.sanitize=function(t,e){var n;return n=new this(t,e),n.sanitize(),n},u.prototype.sanitize=function(){return this.sanitizeElements(),this.normalizeListElementNesting()},u.prototype.getHTML=function(){return this.body.innerHTML},u.prototype.getBody=function(){return this.body},u.prototype.sanitizeElements=function(){var t,n,o,r,s;for(s=i(this.body),r=[];s.nextNode();)switch(o=s.currentNode,o.nodeType){case Node.ELEMENT_NODE:this.elementIsRemovable(o)?r.push(o):this.sanitizeElement(o);break;case Node.COMMENT_NODE:r.push(o)}for(t=0,n=r.length;n>t;t++)o=r[t],e.removeNode(o);return this.body},u.prototype.sanitizeElement=function(t){var e,n,i,o,r;for(t.hasAttribute(\"href\")&&(o=t.protocol,s.call(this.forbiddenProtocols,o)>=0&&t.removeAttribute(\"href\")),r=a.call(t.attributes),e=0,n=r.length;n>e;e++)i=r[e].name,s.call(this.allowedAttributes,i)>=0||0===i.indexOf(\"data-trix\")||t.removeAttribute(i);return t},u.prototype.normalizeListElementNesting=function(){var t,e,i,o,r;for(r=a.call(this.body.querySelectorAll(\"ul,ol\")),t=0,e=r.length;e>t;t++)i=r[t],(o=i.previousElementSibling)&&\"li\"===n(o)&&o.appendChild(i);return this.body},u.prototype.elementIsRemovable=function(t){return(null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE?this.elementIsForbidden(t)||this.elementIsntSerializable(t):void 0},u.prototype.elementIsForbidden=function(t){var e;return e=n(t),s.call(this.forbiddenElements,e)>=0},u.prototype.elementIsntSerializable=function(e){return\"false\"===e.getAttribute(\"data-trix-serialize\")&&!t(e)},p=function(t){var e,n,i,o,r;for(null==t&&(t=\"\"),t=t.replace(/<\\/html[^>]*>[^]*$/i,\"</html>\"),e=document.implementation.createHTMLDocument(\"\"),e.documentElement.innerHTML=t,r=e.head.querySelectorAll(\"style\"),i=0,o=r.length;o>i;i++)n=r[i],e.body.appendChild(n);return e.body},u}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h,p=function(t,e){function n(){this.constructor=t}for(var i in e)d.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},d={}.hasOwnProperty,f=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.arraysAreEqual,s=e.makeElement,l=e.tagName,r=e.getBlockTagNames,h=e.walkTree,o=e.findClosestElementFromNode,i=e.elementContainsNode,a=e.nodeIsAttachmentElement,u=e.normalizeSpaces,n=e.breakableWhitespacePattern,c=e.squishBreakableWhitespace,e.HTMLParser=function(d){function g(t,e){this.html=t,this.referenceElement=(null!=e?e:{}).referenceElement,this.blocks=[],this.blockElements=[],this.processedElements=[]}var m,v,y,b,A,C,x,w,E,S,R,k;return p(g,d),g.parse=function(t,e){var n;return n=new this(t,e),n.parse(),n},g.prototype.getDocument=function(){return e.Document.fromJSON(this.blocks)},g.prototype.parse=function(){var t;try{for(this.createHiddenContainer(),e.HTMLSanitizer.setHTML(this.containerElement,this.html),t=h(this.containerElement,{usingFilter:x});t.nextNode();)this.processNode(t.currentNode);return this.translateBlockElementMarginsToNewlines()}finally{this.removeHiddenContainer()}},g.prototype.createHiddenContainer=function(){return this.referenceElement?(this.containerElement=this.referenceElement.cloneNode(!1),this.containerElement.removeAttribute(\"id\"),this.containerElement.setAttribute(\"data-trix-internal\",\"\"),this.containerElement.style.display=\"none\",this.referenceElement.parentNode.insertBefore(this.containerElement,this.referenceElement.nextSibling)):(this.containerElement=s({tagName:\"div\",style:{display:\"none\"}}),document.body.appendChild(this.containerElement))},g.prototype.removeHiddenContainer=function(){return e.removeNode(this.containerElement)},x=function(t){return\"style\"===l(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},g.prototype.processNode=function(t){switch(t.nodeType){case Node.TEXT_NODE:if(!this.isInsignificantTextNode(t))return this.appendBlockForTextNode(t),this.processTextNode(t);break;case Node.ELEMENT_NODE:return this.appendBlockForElement(t),this.processElement(t)}},g.prototype.appendBlockForTextNode=function(e){var n,i,o;return i=e.parentNode,i===this.currentBlockElement&&this.isBlockElement(e.previousSibling)?this.appendStringWithAttributes(\"\\n\"):i!==this.containerElement&&!this.isBlockElement(i)||(n=this.getBlockAttributes(i),t(n,null!=(o=this.currentBlock)?o.attributes:void 0))?void 0:(this.currentBlock=this.appendBlockForAttributesWithElement(n,i),this.currentBlockElement=i)},g.prototype.appendBlockForElement=function(e){var n,o,r,s;if(r=this.isBlockElement(e),o=i(this.currentBlockElement,e),r&&!this.isBlockElement(e.firstChild)){if((!this.isInsignificantTextNode(e.firstChild)||!this.isBlockElement(e.firstElementChild))&&(n=this.getBlockAttributes(e),e.firstChild))return o&&t(n,this.currentBlock.attributes)?this.appendStringWithAttributes(\"\\n\"):(this.currentBlock=this.appendBlockForAttributesWithElement(n,e),this.currentBlockElement=e)}else if(this.currentBlockElement&&!o&&!r)return(s=this.findParentBlockElement(e))?this.appendBlockForElement(s):(this.currentBlock=this.appendEmptyBlock(),this.currentBlockElement=null)},g.prototype.findParentBlockElement=function(t){var e;for(e=t.parentElement;e&&e!==this.containerElement;){if(this.isBlockElement(e)&&f.call(this.blockElements,e)>=0)return e;e=e.parentElement}return null},g.prototype.processTextNode=function(t){var e,n;return n=t.data,v(t.parentNode)||(n=c(n),R(null!=(e=t.previousSibling)?e.textContent:void 0)&&(n=A(n))),this.appendStringWithAttributes(n,this.getTextAttributes(t.parentNode))},g.prototype.processElement=function(t){var e,n,i,o,r;if(a(t))return e=w(t,\"attachment\"),Object.keys(e).length&&(o=this.getTextAttributes(t),this.appendAttachmentWithAttributes(e,o),t.innerHTML=\"\"),this.processedElements.push(t);switch(l(t)){case\"br\":return this.isExtraBR(t)||this.isBlockElement(t.nextSibling)||this.appendStringWithAttributes(\"\\n\",this.getTextAttributes(t)),this.processedElements.push(t);case\"img\":e={url:t.getAttribute(\"src\"),contentType:\"image\"},i=b(t);for(n in i)r=i[n],e[n]=r;return this.appendAttachmentWithAttributes(e,this.getTextAttributes(t)),this.processedElements.push(t);case\"tr\":if(t.parentNode.firstChild!==t)return this.appendStringWithAttributes(\"\\n\");break;case\"td\":if(t.parentNode.firstChild!==t)return this.appendStringWithAttributes(\" | \")}},g.prototype.appendBlockForAttributesWithElement=function(t,e){var n;return this.blockElements.push(e),n=m(t),this.blocks.push(n),n},g.prototype.appendEmptyBlock=function(){return this.appendBlockForAttributesWithElement([],null)},g.prototype.appendStringWithAttributes=function(t,e){return this.appendPiece(S(t,e))},g.prototype.appendAttachmentWithAttributes=function(t,e){return this.appendPiece(E(t,e))},g.prototype.appendPiece=function(t){return 0===this.blocks.length&&this.appendEmptyBlock(),this.blocks[this.blocks.length-1].text.push(t)},g.prototype.appendStringToTextAtIndex=function(t,e){var n,i;return i=this.blocks[e].text,n=i[i.length-1],\"string\"===(null!=n?n.type:void 0)?n.string+=t:i.push(S(t))},g.prototype.prependStringToTextAtIndex=function(t,e){var n,i;return i=this.blocks[e].text,n=i[0],\"string\"===(null!=n?n.type:void 0)?n.string=t+n.string:i.unshift(S(t))},S=function(t,e){var n;return null==e&&(e={}),n=\"string\",t=u(t),{string:t,attributes:e,type:n}},E=function(t,e){var n;return null==e&&(e={}),n=\"attachment\",{attachment:t,attributes:e,type:n}},m=function(t){var e;return null==t&&(t={}),e=[],{text:e,attributes:t}},g.prototype.getTextAttributes=function(t){var n,i,r,s,u,c,l,h,p,d,f,g;r={},p=e.config.textAttributes;for(n in p)if(u=p[n],u.tagName&&o(t,{matchingSelector:u.tagName,untilNode:this.containerElement}))r[n]=!0;else if(u.parser){if(g=u.parser(t)){for(i=!1,d=this.findBlockElementAncestors(t),c=0,h=d.length;h>c;c++)if(s=d[c],u.parser(s)===g){i=!0;break}i||(r[n]=g)}}else u.styleProperty&&(g=t.style[u.styleProperty])&&(r[n]=g);if(a(t)){f=w(t,\"attributes\");for(l in f)g=f[l],r[l]=g}return r},g.prototype.getBlockAttributes=function(t){var n,i,o,r;for(i=[];t&&t!==this.containerElement;){r=e.config.blockAttributes;for(n in r)o=r[n],o.parse!==!1&&l(t)===o.tagName&&((\"function\"==typeof o.test?o.test(t):void 0)||!o.test)&&(i.push(n),o.listAttribute&&i.push(o.listAttribute));t=t.parentNode}return i.reverse()},g.prototype.findBlockElementAncestors=function(t){var e,n;for(e=[];t&&t!==this.containerElement;)n=l(t),f.call(r(),n)>=0&&e.push(t),t=t.parentNode;return e},w=function(t,e){try{return JSON.parse(t.getAttribute(\"data-trix-\"+e))}catch(n){return{}}},b=function(t){var e,n,i;return i=t.getAttribute(\"width\"),n=t.getAttribute(\"height\"),e={},i&&(e.width=parseInt(i,10)),n&&(e.height=parseInt(n,10)),e},g.prototype.isBlockElement=function(t){var e;if((null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE&&!a(t)&&!o(t,{matchingSelector:\"td\",untilNode:this.containerElement}))return e=l(t),f.call(r(),e)>=0||\"block\"===window.getComputedStyle(t).display},g.prototype.isInsignificantTextNode=function(t){var e,n,i;if((null!=t?t.nodeType:void 0)===Node.TEXT_NODE&&k(t.data)&&(n=t.parentNode,i=t.previousSibling,e=t.nextSibling,(!C(n.previousSibling)||this.isBlockElement(n.previousSibling))&&!v(n)))return!i||this.isBlockElement(i)||!e||this.isBlockElement(e)},g.prototype.isExtraBR=function(t){return\"br\"===l(t)&&this.isBlockElement(t.parentNode)&&t.parentNode.lastChild===t},v=function(t){var e;return e=window.getComputedStyle(t).whiteSpace,\"pre\"===e||\"pre-wrap\"===e||\"pre-line\"===e},C=function(t){return t&&!R(t.textContent)},g.prototype.translateBlockElementMarginsToNewlines=function(){var t,e,n,i,o,r,s,a;for(e=this.getMarginOfDefaultBlockElement(),s=this.blocks,a=[],i=n=0,o=s.length;o>n;i=++n)t=s[i],(r=this.getMarginOfBlockElementAtIndex(i))&&(r.top>2*e.top&&this.prependStringToTextAtIndex(\"\\n\",i),a.push(r.bottom>2*e.bottom?this.appendStringToTextAtIndex(\"\\n\",i):void 0));return a},g.prototype.getMarginOfBlockElementAtIndex=function(t){var e,n;return!(e=this.blockElements[t])||!e.textContent||(n=l(e),f.call(r(),n)>=0||f.call(this.processedElements,e)>=0)?void 0:y(e)},g.prototype.getMarginOfDefaultBlockElement=function(){var t;return t=s(e.config.blockAttributes[\"default\"].tagName),this.containerElement.appendChild(t),y(t)},y=function(t){var e;return e=window.getComputedStyle(t),\"block\"===e.display?{top:parseInt(e.marginTop),bottom:parseInt(e.marginBottom)}:void 0},A=function(t){return t.replace(RegExp(\"^\"+n.source+\"+\"),\"\")},k=function(t){return RegExp(\"^\"+n.source+\"*$\").test(t)},R=function(t){return/\\s$/.test(t)},g}(e.BasicObject)}.call(this),function(){var t,n,i,o,r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].slice,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.arraysAreEqual,i=e.normalizeRange,o=e.rangeIsCollapsed,n=e.getBlockConfig,e.Document=function(s){function c(t){null==t&&(t=[]),c.__super__.constructor.apply(this,arguments),0===t.length&&(t=[new e.Block]),this.blockList=e.SplittableList.box(t)}var l;return r(c,s),c.fromJSON=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(e.Block.fromJSON(n));return r}(),new this(i)},c.fromHTML=function(t,n){return e.HTMLParser.parse(t,n).getDocument()},c.fromString=function(t,n){var i;return i=e.Text.textForStringWithAttributes(t,n),new this([new e.Block(i)])},c.prototype.isEmpty=function(){var t;return 1===this.blockList.length&&(t=this.getBlockAtIndex(0),t.isEmpty()&&!t.hasAttributes())},c.prototype.copy=function(t){var e;return null==t&&(t={}),e=t.consolidateBlocks?this.blockList.consolidate().toArray():this.blockList.toArray(),new this.constructor(e)},c.prototype.copyUsingObjectsFromDocument=function(t){var n;return n=new e.ObjectMap(t.getObjects()),this.copyUsingObjectMap(n)},c.prototype.copyUsingObjectMap=function(t){var e,n,i;return n=function(){var n,o,r,s;for(r=this.getBlocks(),s=[],n=0,o=r.length;o>n;n++)e=r[n],s.push((i=t.find(e))?i:e.copyUsingObjectMap(t));return s}.call(this),new this.constructor(n)},c.prototype.copyWithBaseBlockAttributes=function(t){var e,n,i;return null==t&&(t=[]),i=function(){var i,o,r,s;for(r=this.getBlocks(),s=[],i=0,o=r.length;o>i;i++)n=r[i],e=t.concat(n.getAttributes()),s.push(n.copyWithAttributes(e));return s}.call(this),new this.constructor(i)},c.prototype.replaceBlock=function(t,e){var n;return n=this.blockList.indexOf(t),-1===n?this:new this.constructor(this.blockList.replaceObjectAtIndex(e,n))},c.prototype.insertDocumentAtRange=function(t,e){var n,r,s,a,u,c,l;return r=t.blockList,u=(e=i(e))[0],c=this.locationFromPosition(u),s=c.index,a=c.offset,l=this,n=this.getBlockAtPosition(u),o(e)&&n.isEmpty()&&!n.hasAttributes()?l=new this.constructor(l.blockList.removeObjectAtIndex(s)):n.getBlockBreakPosition()===a&&u++,l=l.removeTextAtRange(e),new this.constructor(l.blockList.insertSplittableListAtPosition(r,u))},c.prototype.mergeDocumentAtRange=function(e,n){var o,r,s,a,u,c,l,h,p,d,f,g;return f=(n=i(n))[0],d=this.locationFromPosition(f),r=this.getBlockAtIndex(d.index).getAttributes(),o=e.getBaseBlockAttributes(),g=r.slice(-o.length),t(o,g)?(l=r.slice(0,-o.length),c=e.copyWithBaseBlockAttributes(l)):c=e.copy({consolidateBlocks:!0}).copyWithBaseBlockAttributes(r),s=c.getBlockCount(),a=c.getBlockAtIndex(0),t(r,a.getAttributes())?(u=a.getTextWithoutBlockBreak(),p=this.insertTextAtRange(u,n),s>1&&(c=new this.constructor(c.getBlocks().slice(1)),h=f+u.getLength(),p=p.insertDocumentAtRange(c,h))):p=this.insertDocumentAtRange(c,n),p},c.prototype.insertTextAtRange=function(t,e){var n,o,r,s,a;return a=(e=i(e))[0],s=this.locationFromPosition(a),o=s.index,r=s.offset,n=this.removeTextAtRange(e),new this.constructor(n.blockList.editObjectAtIndex(o,function(e){return e.copyWithText(e.text.insertTextAtPosition(t,r))}))},c.prototype.removeTextAtRange=function(t){var e,n,r,s,a,u,c,l,h,p,d,f,g,m,v,y,b,A,C,x,w;return p=t=i(t),l=p[0],A=p[1],o(t)?this:(d=this.locationRangeFromRange(t),u=d[0],y=d[1],a=u.index,c=u.offset,s=this.getBlockAtIndex(a),v=y.index,b=y.offset,m=this.getBlockAtIndex(v),f=A-l===1&&s.getBlockBreakPosition()===c&&m.getBlockBreakPosition()!==b&&\"\\n\"===m.text.getStringAtPosition(b),f?r=this.blockList.editObjectAtIndex(v,function(t){return t.copyWithText(t.text.removeTextAtRange([b,b+1]))}):(h=s.text.getTextAtRange([0,c]),C=m.text.getTextAtRange([b,m.getLength()]),x=h.appendText(C),g=a!==v&&0===c,w=g&&s.getAttributeLevel()>=m.getAttributeLevel(),n=w?m.copyWithText(x):s.copyWithText(x),e=v+1-a,r=this.blockList.splice(a,e,n)),new this.constructor(r))},c.prototype.moveTextFromRangeToPosition=function(t,e){var n,o,r,s,u,c,l,h,p,d;return c=t=i(t),p=c[0],r=c[1],e>=p&&r>=e?this:(o=this.getDocumentAtRange(t),h=this.removeTextAtRange(t),u=e>p,u&&(e-=o.getLength()),l=o.getBlocks(),s=l[0],n=2<=l.length?a.call(l,1):[],0===n.length?(d=s.getTextWithoutBlockBreak(),u&&(e+=1)):d=s.text,h=h.insertTextAtRange(d,e),0===n.length?h:(o=new this.constructor(n),e+=d.getLength(),h.insertDocumentAtRange(o,e)))},c.prototype.addAttributeAtRange=function(t,e,i){var o;return o=this.blockList,this.eachBlockAtRange(i,function(i,r,s){return o=o.editObjectAtIndex(s,function(){return n(t)?i.addAttribute(t,e):r[0]===r[1]?i:i.copyWithText(i.text.addAttributeAtRange(t,e,r))})}),new this.constructor(o)},c.prototype.addAttribute=function(t,e){var n;return n=this.blockList,this.eachBlock(function(i,o){return n=n.editObjectAtIndex(o,function(){return i.addAttribute(t,e)})}),new this.constructor(n)},c.prototype.removeAttributeAtRange=function(t,e){var i;return i=this.blockList,this.eachBlockAtRange(e,function(e,o,r){return n(t)?i=i.editObjectAtIndex(r,function(){return e.removeAttribute(t)}):o[0]!==o[1]?i=i.editObjectAtIndex(r,function(){return e.copyWithText(e.text.removeAttributeAtRange(t,o))}):void 0}),new this.constructor(i)},c.prototype.updateAttributesForAttachment=function(t,e){var n,i,o,r;return o=(i=this.getRangeOfAttachment(e))[0],n=this.locationFromPosition(o).index,r=this.getTextAtIndex(n),new this.constructor(this.blockList.editObjectAtIndex(n,function(n){return n.copyWithText(r.updateAttributesForAttachment(t,e))}))},c.prototype.removeAttributeForAttachment=function(t,e){var n;return n=this.getRangeOfAttachment(e),this.removeAttributeAtRange(t,n)},c.prototype.insertBlockBreakAtRange=function(t){var n,o,r,s;return s=(t=i(t))[0],r=this.locationFromPosition(s).offset,o=this.removeTextAtRange(t),0===r&&(n=[new e.Block]),new this.constructor(o.blockList.insertSplittableListAtPosition(new e.SplittableList(n),s))},c.prototype.applyBlockAttributeAtRange=function(t,e,i){var o,r,s,a;return s=this.expandRangeToLineBreaksAndSplitBlocks(i),r=s.document,i=s.range,o=n(t),o.listAttribute?(r=r.removeLastListAttributeAtRange(i,{exceptAttributeName:t}),a=r.convertLineBreaksToBlockBreaksInRange(i),r=a.document,i=a.range):r=o.exclusive?r.removeBlockAttributesAtRange(i):o.terminal?r.removeLastTerminalAttributeAtRange(i):r.consolidateBlocksAtRange(i),r.addAttributeAtRange(t,e,i)},c.prototype.removeLastListAttributeAtRange=function(t,e){var i;return null==e&&(e={}),i=this.blockList,this.eachBlockAtRange(t,function(t,o,r){var s;if((s=t.getLastAttribute())&&n(s).listAttribute&&s!==e.exceptAttributeName)return i=i.editObjectAtIndex(r,function(){return t.removeAttribute(s)})}),new this.constructor(i)},c.prototype.removeLastTerminalAttributeAtRange=function(t){var e;return e=this.blockList,this.eachBlockAtRange(t,function(t,i,o){var r;if((r=t.getLastAttribute())&&n(r).terminal)return e=e.editObjectAtIndex(o,function(){return t.removeAttribute(r)})}),new this.constructor(e)},c.prototype.removeBlockAttributesAtRange=function(t){var e;return e=this.blockList,this.eachBlockAtRange(t,function(t,n,i){return t.hasAttributes()?e=e.editObjectAtIndex(i,function(){return t.copyWithoutAttributes()}):void 0}),new this.constructor(e)},c.prototype.expandRangeToLineBreaksAndSplitBlocks=function(t){var e,n,o,r,s,a,u,c,l;return a=t=i(t),l=a[0],r=a[1],c=this.locationFromPosition(l),o=this.locationFromPosition(r),e=this,u=e.getBlockAtIndex(c.index),null!=(c.offset=u.findLineBreakInDirectionFromPosition(\"backward\",c.offset))&&(s=e.positionFromLocation(c),e=e.insertBlockBreakAtRange([s,s+1]),o.index+=1,o.offset-=e.getBlockAtIndex(c.index).getLength(),c.index+=1),c.offset=0,0===o.offset&&o.index>c.index?(o.index-=1,o.offset=e.getBlockAtIndex(o.index).getBlockBreakPosition()):(n=e.getBlockAtIndex(o.index),\"\\n\"===n.text.getStringAtRange([o.offset-1,o.offset])?o.offset-=1:o.offset=n.findLineBreakInDirectionFromPosition(\"forward\",o.offset),o.offset!==n.getBlockBreakPosition()&&(s=e.positionFromLocation(o),e=e.insertBlockBreakAtRange([s,s+1]))),l=e.positionFromLocation(c),r=e.positionFromLocation(o),t=i([l,r]),{document:e,range:t}},c.prototype.convertLineBreaksToBlockBreaksInRange=function(t){var e,n,o;return n=(t=i(t))[0],o=this.getStringAtRange(t).slice(0,-1),e=this,o.replace(/.*?\\n/g,function(t){return n+=t.length,e=e.insertBlockBreakAtRange([n-1,n])}),{document:e,range:t}},c.prototype.consolidateBlocksAtRange=function(t){var e,n,o,r,s;return o=t=i(t),s=o[0],n=o[1],r=this.locationFromPosition(s).index,e=this.locationFromPosition(n).index,new this.constructor(this.blockList.consolidateFromIndexToIndex(r,e))},c.prototype.getDocumentAtRange=function(t){var e;return t=i(t),e=this.blockList.getSplittableListInRange(t).toArray(),new this.constructor(e)},c.prototype.getStringAtRange=function(t){var e,n,o;return o=t=i(t),n=o[o.length-1],n!==this.getLength()&&(e=-1),this.getDocumentAtRange(t).toString().slice(0,e)},c.prototype.getBlockAtIndex=function(t){return this.blockList.getObjectAtIndex(t)},c.prototype.getBlockAtPosition=function(t){var e;return e=this.locationFromPosition(t).index,this.getBlockAtIndex(e)},c.prototype.getTextAtIndex=function(t){var e;return null!=(e=this.getBlockAtIndex(t))?e.text:void 0},c.prototype.getTextAtPosition=function(t){var e;return e=this.locationFromPosition(t).index,this.getTextAtIndex(e)},c.prototype.getPieceAtPosition=function(t){var e,n,i;return i=this.locationFromPosition(t),e=i.index,n=i.offset,this.getTextAtIndex(e).getPieceAtPosition(n)},c.prototype.getCharacterAtPosition=function(t){var e,n,i;return i=this.locationFromPosition(t),e=i.index,n=i.offset,this.getTextAtIndex(e).getStringAtRange([n,n+1])},c.prototype.getLength=function(){return this.blockList.getEndPosition()},c.prototype.getBlocks=function(){return this.blockList.toArray()},c.prototype.getBlockCount=function(){return this.blockList.length},c.prototype.getEditCount=function(){return this.editCount},c.prototype.eachBlock=function(t){return this.blockList.eachObject(t)},c.prototype.eachBlockAtRange=function(t,e){var n,o,r,s,a,u,c,l,h,p,d,f;if(u=t=i(t),d=u[0],r=u[1],p=this.locationFromPosition(d),o=this.locationFromPosition(r),p.index===o.index)return n=this.getBlockAtIndex(p.index),f=[p.offset,o.offset],e(n,f,p.index);for(h=[],a=s=c=p.index,l=o.index;l>=c?l>=s:s>=l;a=l>=c?++s:--s)(n=this.getBlockAtIndex(a))?(f=function(){switch(a){case p.index:return[p.offset,n.text.getLength()];case o.index:return[0,o.offset];default:return[0,n.text.getLength()]}}(),h.push(e(n,f,a))):h.push(void 0);return h},c.prototype.getCommonAttributesAtRange=function(t){var n,r,s;\nreturn r=(t=i(t))[0],o(t)?this.getCommonAttributesAtPosition(r):(s=[],n=[],this.eachBlockAtRange(t,function(t,e){return e[0]!==e[1]?(s.push(t.text.getCommonAttributesAtRange(e)),n.push(l(t))):void 0}),e.Hash.fromCommonAttributesOfObjects(s).merge(e.Hash.fromCommonAttributesOfObjects(n)).toObject())},c.prototype.getCommonAttributesAtPosition=function(t){var n,i,o,r,s,a,c,h,p,d;if(p=this.locationFromPosition(t),s=p.index,h=p.offset,o=this.getBlockAtIndex(s),!o)return{};r=l(o),n=o.text.getAttributesAtPosition(h),i=o.text.getAttributesAtPosition(h-1),a=function(){var t,n;t=e.config.textAttributes,n=[];for(c in t)d=t[c],d.inheritable&&n.push(c);return n}();for(c in i)d=i[c],(d===n[c]||u.call(a,c)>=0)&&(r[c]=d);return r},c.prototype.getRangeOfCommonAttributeAtPosition=function(t,e){var n,o,r,s,a,u,c,l,h;return a=this.locationFromPosition(e),r=a.index,s=a.offset,h=this.getTextAtIndex(r),u=h.getExpandedRangeForAttributeAtOffset(t,s),l=u[0],o=u[1],c=this.positionFromLocation({index:r,offset:l}),n=this.positionFromLocation({index:r,offset:o}),i([c,n])},c.prototype.getBaseBlockAttributes=function(){var t,e,n,i,o,r,s;for(t=this.getBlockAtIndex(0).getAttributes(),n=i=1,s=this.getBlockCount();s>=1?s>i:i>s;n=s>=1?++i:--i)e=this.getBlockAtIndex(n).getAttributes(),r=Math.min(t.length,e.length),t=function(){var n,i,s;for(s=[],o=n=0,i=r;(i>=0?i>n:n>i)&&e[o]===t[o];o=i>=0?++n:--n)s.push(e[o]);return s}();return t},l=function(t){var e,n;return n={},(e=t.getLastAttribute())&&(n[e]=!0),n},c.prototype.getAttachmentById=function(t){var e,n,i,o;for(o=this.getAttachments(),n=0,i=o.length;i>n;n++)if(e=o[n],e.id===t)return e},c.prototype.getAttachmentPieces=function(){var t;return t=[],this.blockList.eachObject(function(e){var n;return n=e.text,t=t.concat(n.getAttachmentPieces())}),t},c.prototype.getAttachments=function(){var t,e,n,i,o;for(i=this.getAttachmentPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.attachment);return o},c.prototype.getRangeOfAttachment=function(t){var e,n,o,r,s,a,u;for(r=0,s=this.blockList.toArray(),n=e=0,o=s.length;o>e;n=++e){if(a=s[n].text,u=a.getRangeOfAttachment(t))return i([r+u[0],r+u[1]]);r+=a.getLength()}},c.prototype.getLocationRangeOfAttachment=function(t){var e;return e=this.getRangeOfAttachment(t),this.locationRangeFromRange(e)},c.prototype.getAttachmentPieceForAttachment=function(t){var e,n,i,o;for(o=this.getAttachmentPieces(),e=0,n=o.length;n>e;e++)if(i=o[e],i.attachment===t)return i},c.prototype.findRangesForBlockAttribute=function(t){var e,n,i,o,r,s,a;for(r=0,s=[],a=this.getBlocks(),n=0,i=a.length;i>n;n++)e=a[n],o=e.getLength(),e.hasAttribute(t)&&s.push([r,r+o]),r+=o;return s},c.prototype.findRangesForTextAttribute=function(t,e){var n,i,o,r,s,a,u,c,l,h;for(h=(null!=e?e:{}).withValue,a=0,u=[],c=[],r=function(e){return null!=h?e.getAttribute(t)===h:e.hasAttribute(t)},l=this.getPieces(),n=0,i=l.length;i>n;n++)s=l[n],o=s.getLength(),r(s)&&(u[1]===a?u[1]=a+o:c.push(u=[a,a+o])),a+=o;return c},c.prototype.locationFromPosition=function(t){var e,n;return n=this.blockList.findIndexAndOffsetAtPosition(Math.max(0,t)),null!=n.index?n:(e=this.getBlocks(),{index:e.length-1,offset:e[e.length-1].getLength()})},c.prototype.positionFromLocation=function(t){return this.blockList.findPositionAtIndexAndOffset(t.index,t.offset)},c.prototype.locationRangeFromPosition=function(t){return i(this.locationFromPosition(t))},c.prototype.locationRangeFromRange=function(t){var e,n,o,r;if(t=i(t))return r=t[0],n=t[1],o=this.locationFromPosition(r),e=this.locationFromPosition(n),i([o,e])},c.prototype.rangeFromLocationRange=function(t){var e,n;return t=i(t),e=this.positionFromLocation(t[0]),o(t)||(n=this.positionFromLocation(t[1])),i([e,n])},c.prototype.isEqualTo=function(t){return this.blockList.isEqualTo(null!=t?t.blockList:void 0)},c.prototype.getTexts=function(){var t,e,n,i,o;for(i=this.getBlocks(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.text);return o},c.prototype.getPieces=function(){var t,e,n,i,o;for(n=[],i=this.getTexts(),t=0,e=i.length;e>t;t++)o=i[t],n.push.apply(n,o.getPieces());return n},c.prototype.getObjects=function(){return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())},c.prototype.toSerializableDocument=function(){var t;return t=[],this.blockList.eachObject(function(e){return t.push(e.copyWithText(e.text.toSerializableText()))}),new this.constructor(t)},c.prototype.toString=function(){return this.blockList.toString()},c.prototype.toJSON=function(){return this.blockList.toJSON()},c.prototype.toConsole=function(){var t;return JSON.stringify(function(){var e,n,i,o;for(i=this.blockList.toArray(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(JSON.parse(t.text.toConsole()));return o}.call(this))},c}(e.Object)}.call(this),function(){e.LineBreakInsertion=function(){function t(t){var e;this.composition=t,this.document=this.composition.document,e=this.composition.getSelectedRange(),this.startPosition=e[0],this.endPosition=e[1],this.startLocation=this.document.locationFromPosition(this.startPosition),this.endLocation=this.document.locationFromPosition(this.endPosition),this.block=this.document.getBlockAtIndex(this.endLocation.index),this.breaksOnReturn=this.block.breaksOnReturn(),this.previousCharacter=this.block.text.getStringAtPosition(this.endLocation.offset-1),this.nextCharacter=this.block.text.getStringAtPosition(this.endLocation.offset)}return t.prototype.shouldInsertBlockBreak=function(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?0!==this.startLocation.offset:this.breaksOnReturn&&\"\\n\"!==this.nextCharacter},t.prototype.shouldBreakFormattedBlock=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&(this.breaksOnReturn&&\"\\n\"===this.nextCharacter||\"\\n\"===this.previousCharacter)},t.prototype.shouldDecreaseListLevel=function(){return this.block.hasAttributes()&&this.block.isListItem()&&this.block.isEmpty()},t.prototype.shouldPrependListItem=function(){return this.block.isListItem()&&0===this.startLocation.offset&&!this.block.isEmpty()},t.prototype.shouldRemoveLastBlockAttribute=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&this.block.isEmpty()},t}()}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h=function(t,e){function n(){this.constructor=t}for(var i in e)p.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},p={}.hasOwnProperty;s=e.normalizeRange,c=e.rangesAreEqual,u=e.rangeIsCollapsed,a=e.objectsAreEqual,t=e.arrayStartsWith,l=e.summarizeArrayChange,i=e.getAllAttributeNames,o=e.getBlockConfig,r=e.getTextConfig,n=e.extend,e.Composition=function(p){function d(){this.document=new e.Document,this.attachments=[],this.currentAttributes={},this.revision=0}var f;return h(d,p),d.prototype.setDocument=function(t){var e;return t.isEqualTo(this.document)?void 0:(this.document=t,this.refreshAttachments(),this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidChangeDocument?e.compositionDidChangeDocument(t):void 0)},d.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.getSelectedRange()}},d.prototype.loadSnapshot=function(t){var n,i,o,r;return n=t.document,r=t.selectedRange,null!=(i=this.delegate)&&\"function\"==typeof i.compositionWillLoadSnapshot&&i.compositionWillLoadSnapshot(),this.setDocument(null!=n?n:new e.Document),this.setSelection(null!=r?r:[0,0]),null!=(o=this.delegate)&&\"function\"==typeof o.compositionDidLoadSnapshot?o.compositionDidLoadSnapshot():void 0},d.prototype.insertText=function(t,e){var n,i,o,r;return r=(null!=e?e:{updatePosition:!0}).updatePosition,i=this.getSelectedRange(),this.setDocument(this.document.insertTextAtRange(t,i)),o=i[0],n=o+t.getLength(),r&&this.setSelection(n),this.notifyDelegateOfInsertionAtRange([o,n])},d.prototype.insertBlock=function(t){var n;return null==t&&(t=new e.Block),n=new e.Document([t]),this.insertDocument(n)},d.prototype.insertDocument=function(t){var n,i,o;return null==t&&(t=new e.Document),i=this.getSelectedRange(),this.setDocument(this.document.insertDocumentAtRange(t,i)),o=i[0],n=o+t.getLength(),this.setSelection(n),this.notifyDelegateOfInsertionAtRange([o,n])},d.prototype.insertString=function(t,n){var i,o;return i=this.getCurrentTextAttributes(),o=e.Text.textForStringWithAttributes(t,i),this.insertText(o,n)},d.prototype.insertBlockBreak=function(){var t,e,n;return e=this.getSelectedRange(),this.setDocument(this.document.insertBlockBreakAtRange(e)),n=e[0],t=n+1,this.setSelection(t),this.notifyDelegateOfInsertionAtRange([n,t])},d.prototype.insertLineBreak=function(){var t,n;return n=new e.LineBreakInsertion(this),n.shouldDecreaseListLevel()?(this.decreaseListLevel(),this.setSelection(n.startPosition)):n.shouldPrependListItem()?(t=new e.Document([n.block.copyWithoutText()]),this.insertDocument(t)):n.shouldInsertBlockBreak()?this.insertBlockBreak():n.shouldRemoveLastBlockAttribute()?this.removeLastBlockAttribute():n.shouldBreakFormattedBlock()?this.breakFormattedBlock(n):this.insertString(\"\\n\")},d.prototype.insertHTML=function(t){var n,i,o,r;return n=e.Document.fromHTML(t),o=this.getSelectedRange(),this.setDocument(this.document.mergeDocumentAtRange(n,o)),r=o[0],i=r+n.getLength()-1,this.setSelection(i),this.notifyDelegateOfInsertionAtRange([r,i])},d.prototype.replaceHTML=function(t){var n,i,o;return n=e.Document.fromHTML(t).copyUsingObjectsFromDocument(this.document),i=this.getLocationRange({strict:!1}),o=this.document.rangeFromLocationRange(i),this.setDocument(n),this.setSelection(o)},d.prototype.insertFile=function(t){return this.insertFiles([t])},d.prototype.insertFiles=function(t){var n,i,o,r,s,a;for(i=[],r=0,s=t.length;s>r;r++)o=t[r],(null!=(a=this.delegate)?a.compositionShouldAcceptFile(o):void 0)&&(n=e.Attachment.attachmentForFile(o),i.push(n));return this.insertAttachments(i)},d.prototype.insertAttachment=function(t){return this.insertAttachments([t])},d.prototype.insertAttachments=function(t){var n,i,o,r,s,a,u,c,l;for(c=new e.Text,r=0,s=t.length;s>r;r++)n=t[r],l=n.getType(),a=null!=(u=e.config.attachments[l])?u.presentation:void 0,o=this.getCurrentTextAttributes(),a&&(o.presentation=a),i=e.Text.textForAttachmentWithAttributes(n,o),c=c.appendText(i);return this.insertText(c)},d.prototype.shouldManageDeletingInDirection=function(t){var e;if(e=this.getLocationRange(),u(e)){if(\"backward\"===t&&0===e[0].offset)return!0;if(this.shouldManageMovingCursorInDirection(t))return!0}else if(e[0].index!==e[1].index)return!0;return!1},d.prototype.deleteInDirection=function(t,e){var n,i,o,r,s,a,c,l;return r=(null!=e?e:{}).length,s=this.getLocationRange(),a=this.getSelectedRange(),c=u(a),c?o=\"backward\"===t&&0===s[0].offset:l=s[0].index!==s[1].index,o&&this.canDecreaseBlockAttributeLevel()&&(i=this.getBlock(),i.isListItem()?this.decreaseListLevel():this.decreaseBlockAttributeLevel(),this.setSelection(a[0]),i.isEmpty())?!1:(c&&(a=this.getExpandedRangeInDirection(t,{length:r}),\"backward\"===t&&(n=this.getAttachmentAtRange(a))),n?(this.editAttachment(n),!1):(this.setDocument(this.document.removeTextAtRange(a)),this.setSelection(a[0]),o||l?!1:void 0))},d.prototype.moveTextFromRange=function(t){var e;return e=this.getSelectedRange()[0],this.setDocument(this.document.moveTextFromRangeToPosition(t,e)),this.setSelection(e)},d.prototype.removeAttachment=function(t){var e;return(e=this.document.getRangeOfAttachment(t))?(this.stopEditingAttachment(),this.setDocument(this.document.removeTextAtRange(e)),this.setSelection(e[0])):void 0},d.prototype.removeLastBlockAttribute=function(){var t,e,n,i;return n=this.getSelectedRange(),i=n[0],e=n[1],t=this.document.getBlockAtPosition(e),this.removeCurrentAttribute(t.getLastAttribute()),this.setSelection(i)},f=\" \",d.prototype.insertPlaceholder=function(){return this.placeholderPosition=this.getPosition(),this.insertString(f)},d.prototype.selectPlaceholder=function(){return null!=this.placeholderPosition?(this.setSelectedRange([this.placeholderPosition,this.placeholderPosition+f.length]),this.getSelectedRange()):void 0},d.prototype.forgetPlaceholder=function(){return this.placeholderPosition=null},d.prototype.hasCurrentAttribute=function(t){var e;return e=this.currentAttributes[t],null!=e&&e!==!1},d.prototype.toggleCurrentAttribute=function(t){var e;return(e=!this.currentAttributes[t])?this.setCurrentAttribute(t,e):this.removeCurrentAttribute(t)},d.prototype.canSetCurrentAttribute=function(t){return o(t)?this.canSetCurrentBlockAttribute(t):this.canSetCurrentTextAttribute(t)},d.prototype.canSetCurrentTextAttribute=function(){var t,e,n,i,o;if(e=this.getSelectedDocument()){for(o=e.getAttachments(),n=0,i=o.length;i>n;n++)if(t=o[n],!t.hasContent())return!1;return!0}},d.prototype.canSetCurrentBlockAttribute=function(){var t;if(t=this.getBlock())return!t.isTerminalBlock()},d.prototype.setCurrentAttribute=function(t,e){return o(t)?this.setBlockAttribute(t,e):(this.setTextAttribute(t,e),this.currentAttributes[t]=e,this.notifyDelegateOfCurrentAttributesChange())},d.prototype.setTextAttribute=function(t,n){var i,o,r,s;if(o=this.getSelectedRange())return r=o[0],i=o[1],r!==i?this.setDocument(this.document.addAttributeAtRange(t,n,o)):\"href\"===t?(s=e.Text.textForStringWithAttributes(n,{href:n}),this.insertText(s)):void 0},d.prototype.setBlockAttribute=function(t,e){var n,i;if(i=this.getSelectedRange())return this.canSetCurrentAttribute(t)?(n=this.getBlock(),this.setDocument(this.document.applyBlockAttributeAtRange(t,e,i)),this.setSelection(i)):void 0},d.prototype.removeCurrentAttribute=function(t){return o(t)?(this.removeBlockAttribute(t),this.updateCurrentAttributes()):(this.removeTextAttribute(t),delete this.currentAttributes[t],this.notifyDelegateOfCurrentAttributesChange())},d.prototype.removeTextAttribute=function(t){var e;if(e=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,e))},d.prototype.removeBlockAttribute=function(t){var e;if(e=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,e))},d.prototype.canDecreaseNestingLevel=function(){var t;return(null!=(t=this.getBlock())?t.getNestingLevel():void 0)>0},d.prototype.canIncreaseNestingLevel=function(){var e,n,i;if(e=this.getBlock())return(null!=(i=o(e.getLastNestableAttribute()))?i.listAttribute:0)?(n=this.getPreviousBlock())?t(n.getListItemAttributes(),e.getListItemAttributes()):void 0:e.getNestingLevel()>0},d.prototype.decreaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.decreaseNestingLevel()))},d.prototype.increaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.increaseNestingLevel()))},d.prototype.canDecreaseBlockAttributeLevel=function(){var t;return(null!=(t=this.getBlock())?t.getAttributeLevel():void 0)>0},d.prototype.decreaseBlockAttributeLevel=function(){var t,e;return(t=null!=(e=this.getBlock())?e.getLastAttribute():void 0)?this.removeCurrentAttribute(t):void 0},d.prototype.decreaseListLevel=function(){var t,e,n,i,o,r;for(r=this.getSelectedRange()[0],o=this.document.locationFromPosition(r).index,n=o,t=this.getBlock().getAttributeLevel();(e=this.document.getBlockAtIndex(n+1))&&e.isListItem()&&e.getAttributeLevel()>t;)n++;return r=this.document.positionFromLocation({index:o,offset:0}),i=this.document.positionFromLocation({index:n,offset:0}),this.setDocument(this.document.removeLastListAttributeAtRange([r,i]))},d.prototype.updateCurrentAttributes=function(){var t,e,n,o,r,s;if(s=this.getSelectedRange({ignoreLock:!0})){for(e=this.document.getCommonAttributesAtRange(s),r=i(),n=0,o=r.length;o>n;n++)t=r[n],e[t]||this.canSetCurrentAttribute(t)||(e[t]=!1);if(!a(e,this.currentAttributes))return this.currentAttributes=e,this.notifyDelegateOfCurrentAttributesChange()}},d.prototype.getCurrentAttributes=function(){return n.call({},this.currentAttributes)},d.prototype.getCurrentTextAttributes=function(){var t,e,n,i;t={},n=this.currentAttributes;for(e in n)i=n[e],i!==!1&&r(e)&&(t[e]=i);return t},d.prototype.freezeSelection=function(){return this.setCurrentAttribute(\"frozen\",!0)},d.prototype.thawSelection=function(){return this.removeCurrentAttribute(\"frozen\")},d.prototype.hasFrozenSelection=function(){return this.hasCurrentAttribute(\"frozen\")},d.proxyMethod(\"getSelectionManager().getPointRange\"),d.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"),d.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"),d.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"),d.proxyMethod(\"getSelectionManager().selectionIsExpanded\"),d.proxyMethod(\"delegate?.getSelectionManager\"),d.prototype.setSelection=function(t){var e,n;return e=this.document.locationRangeFromRange(t),null!=(n=this.delegate)?n.compositionDidRequestChangingSelectionToLocationRange(e):void 0},d.prototype.getSelectedRange=function(){var t;return(t=this.getLocationRange())?this.document.rangeFromLocationRange(t):void 0},d.prototype.setSelectedRange=function(t){var e;return e=this.document.locationRangeFromRange(t),this.getSelectionManager().setLocationRange(e)},d.prototype.getPosition=function(){var t;return(t=this.getLocationRange())?this.document.positionFromLocation(t[0]):void 0},d.prototype.getLocationRange=function(t){var e,n;return null!=(e=null!=(n=this.targetLocationRange)?n:this.getSelectionManager().getLocationRange(t))?e:s({index:0,offset:0})},d.prototype.withTargetLocationRange=function(t,e){var n;this.targetLocationRange=t;try{n=e()}finally{this.targetLocationRange=null}return n},d.prototype.withTargetRange=function(t,e){var n;return n=this.document.locationRangeFromRange(t),this.withTargetLocationRange(n,e)},d.prototype.withTargetDOMRange=function(t,e){var n;return n=this.createLocationRangeFromDOMRange(t,{strict:!1}),this.withTargetLocationRange(n,e)},d.prototype.getExpandedRangeInDirection=function(t,e){var n,i,o,r;return i=(null!=e?e:{}).length,o=this.getSelectedRange(),r=o[0],n=o[1],\"backward\"===t?i?r-=i:r=this.translateUTF16PositionFromOffset(r,-1):i?n+=i:n=this.translateUTF16PositionFromOffset(n,1),s([r,n])},d.prototype.shouldManageMovingCursorInDirection=function(t){var e;return this.editingAttachment?!0:(e=this.getExpandedRangeInDirection(t),null!=this.getAttachmentAtRange(e))},d.prototype.moveCursorInDirection=function(t){var e,n,i,o;return this.editingAttachment?i=this.document.getRangeOfAttachment(this.editingAttachment):(o=this.getSelectedRange(),i=this.getExpandedRangeInDirection(t),n=!c(o,i)),this.setSelectedRange(\"backward\"===t?i[0]:i[1]),n&&(e=this.getAttachmentAtRange(i))?this.editAttachment(e):void 0},d.prototype.expandSelectionInDirection=function(t,e){var n,i;return n=(null!=e?e:{}).length,i=this.getExpandedRangeInDirection(t,{length:n}),this.setSelectedRange(i)},d.prototype.expandSelectionForEditing=function(){return this.hasCurrentAttribute(\"href\")?this.expandSelectionAroundCommonAttribute(\"href\"):void 0},d.prototype.expandSelectionAroundCommonAttribute=function(t){var e,n;return e=this.getPosition(),n=this.document.getRangeOfCommonAttributeAtPosition(t,e),this.setSelectedRange(n)},d.prototype.selectionContainsAttachments=function(){var t;return(null!=(t=this.getSelectedAttachments())?t.length:void 0)>0},d.prototype.selectionIsInCursorTarget=function(){return this.editingAttachment||this.positionIsCursorTarget(this.getPosition())},d.prototype.positionIsCursorTarget=function(t){var e;return(e=this.document.locationFromPosition(t))?this.locationIsCursorTarget(e):void 0},d.prototype.positionIsBlockBreak=function(t){var e;return null!=(e=this.document.getPieceAtPosition(t))?e.isBlockBreak():void 0},d.prototype.getSelectedDocument=function(){var t;return(t=this.getSelectedRange())?this.document.getDocumentAtRange(t):void 0},d.prototype.getSelectedAttachments=function(){var t;return null!=(t=this.getSelectedDocument())?t.getAttachments():void 0},d.prototype.getAttachments=function(){return this.attachments.slice(0)},d.prototype.refreshAttachments=function(){var t,e,n,i,o,r,s,a,u,c,h,p;for(n=this.document.getAttachments(),a=l(this.attachments,n),t=a.added,h=a.removed,this.attachments=n,i=0,r=h.length;r>i;i++)e=h[i],e.delegate=null,null!=(u=this.delegate)&&\"function\"==typeof u.compositionDidRemoveAttachment&&u.compositionDidRemoveAttachment(e);for(p=[],o=0,s=t.length;s>o;o++)e=t[o],e.delegate=this,p.push(null!=(c=this.delegate)&&\"function\"==typeof c.compositionDidAddAttachment?c.compositionDidAddAttachment(e):void 0);return p},d.prototype.attachmentDidChangeAttributes=function(t){var e;return this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidEditAttachment?e.compositionDidEditAttachment(t):void 0},d.prototype.attachmentDidChangePreviewURL=function(t){var e;return this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidChangeAttachmentPreviewURL?e.compositionDidChangeAttachmentPreviewURL(t):void 0},d.prototype.editAttachment=function(t,e){var n;if(t!==this.editingAttachment)return this.stopEditingAttachment(),this.editingAttachment=t,null!=(n=this.delegate)&&\"function\"==typeof n.compositionDidStartEditingAttachment?n.compositionDidStartEditingAttachment(this.editingAttachment,e):void 0},d.prototype.stopEditingAttachment=function(){var t;if(this.editingAttachment)return null!=(t=this.delegate)&&\"function\"==typeof t.compositionDidStopEditingAttachment&&t.compositionDidStopEditingAttachment(this.editingAttachment),this.editingAttachment=null},d.prototype.updateAttributesForAttachment=function(t,e){return this.setDocument(this.document.updateAttributesForAttachment(t,e))},d.prototype.removeAttributeForAttachment=function(t,e){return this.setDocument(this.document.removeAttributeForAttachment(t,e))},d.prototype.breakFormattedBlock=function(t){var n,i,o,r,s;return i=t.document,n=t.block,r=t.startPosition,s=[r-1,r],n.getBlockBreakPosition()===t.startLocation.offset?(n.breaksOnReturn()&&\"\\n\"===t.nextCharacter?r+=1:i=i.removeTextAtRange(s),s=[r,r]):\"\\n\"===t.nextCharacter?\"\\n\"===t.previousCharacter?s=[r-1,r+1]:(s=[r,r+1],r+=1):t.startLocation.offset-1!==0&&(r+=1),o=new e.Document([n.removeLastAttribute().copyWithoutText()]),this.setDocument(i.insertDocumentAtRange(o,s)),this.setSelection(r)},d.prototype.getPreviousBlock=function(){var t,e;return(e=this.getLocationRange())&&(t=e[0].index,t>0)?this.document.getBlockAtIndex(t-1):void 0},d.prototype.getBlock=function(){var t;return(t=this.getLocationRange())?this.document.getBlockAtIndex(t[0].index):void 0},d.prototype.getAttachmentAtRange=function(t){var n;return n=this.document.getDocumentAtRange(t),n.toString()===e.OBJECT_REPLACEMENT_CHARACTER+\"\\n\"?n.getAttachments()[0]:void 0},d.prototype.notifyDelegateOfCurrentAttributesChange=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.compositionDidChangeCurrentAttributes?t.compositionDidChangeCurrentAttributes(this.currentAttributes):void 0},d.prototype.notifyDelegateOfInsertionAtRange=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidPerformInsertionAtRange?e.compositionDidPerformInsertionAtRange(t):void 0},d.prototype.translateUTF16PositionFromOffset=function(t,e){var n,i;return i=this.document.toUTF16String(),n=i.offsetFromUCS2Offset(t),i.offsetToUCS2Offset(n+e)},d}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.UndoManager=function(e){function n(t){this.composition=t,this.undoEntries=[],this.redoEntries=[]}var i;return t(n,e),n.prototype.recordUndoEntry=function(t,e){var n,o,r,s,a;return s=null!=e?e:{},o=s.context,n=s.consolidatable,r=this.undoEntries.slice(-1)[0],n&&i(r,t,o)?void 0:(a=this.createEntry({description:t,context:o}),this.undoEntries.push(a),this.redoEntries=[])},n.prototype.undo=function(){var t,e;return(e=this.undoEntries.pop())?(t=this.createEntry(e),this.redoEntries.push(t),this.composition.loadSnapshot(e.snapshot)):void 0},n.prototype.redo=function(){var t,e;return(t=this.redoEntries.pop())?(e=this.createEntry(t),this.undoEntries.push(e),this.composition.loadSnapshot(t.snapshot)):void 0},n.prototype.canUndo=function(){return this.undoEntries.length>0},n.prototype.canRedo=function(){return this.redoEntries.length>0},n.prototype.createEntry=function(t){var e,n,i;return i=null!=t?t:{},n=i.description,e=i.context,{description:null!=n?n.toString():void 0,context:JSON.stringify(e),snapshot:this.composition.getSnapshot()}},i=function(t,e,n){return(null!=t?t.description:void 0)===(null!=e?e.toString():void 0)&&(null!=t?t.context:void 0)===JSON.stringify(n)},n}(e.BasicObject)}.call(this),function(){var t;e.attachmentGalleryFilter=function(e){var n;return n=new t(e),n.perform(),n.getSnapshot()},t=function(){function t(t){this.document=t.document,this.selectedRange=t.selectedRange}var e,n,i;return e=\"attachmentGallery\",n=\"presentation\",i=\"gallery\",t.prototype.perform=function(){return this.removeBlockAttribute(),this.applyBlockAttribute()},t.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.selectedRange}},t.prototype.removeBlockAttribute=function(){var t,n,i,o,r;for(o=this.findRangesOfBlocks(),r=[],t=0,n=o.length;n>t;t++)i=o[t],r.push(this.document=this.document.removeAttributeAtRange(e,i));return r},t.prototype.applyBlockAttribute=function(){var t,n,i,o,r,s;for(i=0,r=this.findRangesOfPieces(),s=[],t=0,n=r.length;n>t;t++)o=r[t],o[1]-o[0]>1&&(o[0]+=i,o[1]+=i,\"\\n\"!==this.document.getCharacterAtPosition(o[1])&&(this.document=this.document.insertBlockBreakAtRange(o[1]),o[1]<this.selectedRange[1]&&this.moveSelectedRangeForward(),o[1]++,i++),0!==o[0]&&\"\\n\"!==this.document.getCharacterAtPosition(o[0]-1)&&(this.document=this.document.insertBlockBreakAtRange(o[0]),o[0]<this.selectedRange[0]&&this.moveSelectedRangeForward(),o[0]++,i++),s.push(this.document=this.document.applyBlockAttributeAtRange(e,!0,o)));return s},t.prototype.findRangesOfBlocks=function(){return this.document.findRangesForBlockAttribute(e)},t.prototype.findRangesOfPieces=function(){return this.document.findRangesForTextAttribute(n,{withValue:i})},t.prototype.moveSelectedRangeForward=function(){return this.selectedRange[0]+=1,this.selectedRange[1]+=1},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Editor=function(){function n(n,o,r){this.composition=n,this.selectionManager=o,this.element=r,this.insertFiles=t(this.insertFiles,this),this.undoManager=new e.UndoManager(this.composition),this.filters=i.slice(0)}var i;return i=[e.attachmentGalleryFilter],n.prototype.loadDocument=function(t){return this.loadSnapshot({document:t,selectedRange:[0,0]})},n.prototype.loadHTML=function(t){return null==t&&(t=\"\"),this.loadDocument(e.Document.fromHTML(t,{referenceElement:this.element}))},n.prototype.loadJSON=function(t){var n,i;return n=t.document,i=t.selectedRange,n=e.Document.fromJSON(n),this.loadSnapshot({document:n,selectedRange:i})},n.prototype.loadSnapshot=function(t){return this.undoManager=new e.UndoManager(this.composition),this.composition.loadSnapshot(t)},n.prototype.getDocument=function(){return this.composition.document},n.prototype.getSelectedDocument=function(){return this.composition.getSelectedDocument()},n.prototype.getSnapshot=function(){return this.composition.getSnapshot()},n.prototype.toJSON=function(){return this.getSnapshot()},n.prototype.deleteInDirection=function(t){return this.composition.deleteInDirection(t)},n.prototype.insertAttachment=function(t){return this.composition.insertAttachment(t)},n.prototype.insertAttachments=function(t){return this.composition.insertAttachments(t)},n.prototype.insertDocument=function(t){return this.composition.insertDocument(t)},n.prototype.insertFile=function(t){return this.composition.insertFile(t)},n.prototype.insertFiles=function(t){return this.composition.insertFiles(t)},n.prototype.insertHTML=function(t){return this.composition.insertHTML(t)},n.prototype.insertString=function(t){return this.composition.insertString(t)},n.prototype.insertText=function(t){return this.composition.insertText(t)},n.prototype.insertLineBreak=function(){return this.composition.insertLineBreak()},n.prototype.getSelectedRange=function(){return this.composition.getSelectedRange()},n.prototype.getPosition=function(){return this.composition.getPosition()},n.prototype.getClientRectAtPosition=function(t){var e;return e=this.getDocument().locationRangeFromRange([t,t+1]),this.selectionManager.getClientRectAtLocationRange(e)},n.prototype.expandSelectionInDirection=function(t){return this.composition.expandSelectionInDirection(t)},n.prototype.moveCursorInDirection=function(t){return this.composition.moveCursorInDirection(t)},n.prototype.setSelectedRange=function(t){return this.composition.setSelectedRange(t)},n.prototype.activateAttribute=function(t,e){return null==e&&(e=!0),this.composition.setCurrentAttribute(t,e)},n.prototype.attributeIsActive=function(t){return this.composition.hasCurrentAttribute(t)},n.prototype.canActivateAttribute=function(t){return this.composition.canSetCurrentAttribute(t)},n.prototype.deactivateAttribute=function(t){return this.composition.removeCurrentAttribute(t)},n.prototype.canDecreaseNestingLevel=function(){return this.composition.canDecreaseNestingLevel()},n.prototype.canIncreaseNestingLevel=function(){return this.composition.canIncreaseNestingLevel()},n.prototype.decreaseNestingLevel=function(){return this.canDecreaseNestingLevel()?this.composition.decreaseNestingLevel():void 0},n.prototype.increaseNestingLevel=function(){return this.canIncreaseNestingLevel()?this.composition.increaseNestingLevel():void 0},n.prototype.canRedo=function(){return this.undoManager.canRedo()},n.prototype.canUndo=function(){return this.undoManager.canUndo()},n.prototype.recordUndoEntry=function(t,e){var n,i,o;return o=null!=e?e:{},i=o.context,n=o.consolidatable,this.undoManager.recordUndoEntry(t,{context:i,consolidatable:n})},n.prototype.redo=function(){return this.canRedo()?this.undoManager.redo():void 0},n.prototype.undo=function(){return this.canUndo()?this.undoManager.undo():void 0},n}()}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ManagedAttachment=function(e){function n(t,e){var n;this.attachmentManager=t,this.attachment=e,n=this.attachment,this.id=n.id,this.file=n.file}return t(n,e),n.prototype.remove=function(){return this.attachmentManager.requestRemovalOfAttachment(this.attachment)},n.proxyMethod(\"attachment.getAttribute\"),n.proxyMethod(\"attachment.hasAttribute\"),n.proxyMethod(\"attachment.setAttribute\"),n.proxyMethod(\"attachment.getAttributes\"),n.proxyMethod(\"attachment.setAttributes\"),n.proxyMethod(\"attachment.isPending\"),n.proxyMethod(\"attachment.isPreviewable\"),n.proxyMethod(\"attachment.getURL\"),n.proxyMethod(\"attachment.getHref\"),n.proxyMethod(\"attachment.getFilename\"),n.proxyMethod(\"attachment.getFilesize\"),n.proxyMethod(\"attachment.getFormattedFilesize\"),n.proxyMethod(\"attachment.getExtension\"),n.proxyMethod(\"attachment.getContentType\"),n.proxyMethod(\"attachment.getFile\"),n.proxyMethod(\"attachment.setFile\"),n.proxyMethod(\"attachment.releaseFile\"),n.proxyMethod(\"attachment.getUploadProgress\"),n.proxyMethod(\"attachment.setUploadProgress\"),n}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.AttachmentManager=function(n){function i(t){var e,n,i;for(null==t&&(t=[]),this.managedAttachments={},n=0,i=t.length;i>n;n++)e=t[n],this.manageAttachment(e)}return t(i,n),i.prototype.getAttachments=function(){var t,e,n,i;n=this.managedAttachments,i=[];for(e in n)t=n[e],i.push(t);return i},i.prototype.manageAttachment=function(t){var n,i;return null!=(n=this.managedAttachments)[i=t.id]?n[i]:n[i]=new e.ManagedAttachment(this,t)},i.prototype.attachmentIsManaged=function(t){return t.id in this.managedAttachments},i.prototype.requestRemovalOfAttachment=function(t){var e;return this.attachmentIsManaged(t)&&null!=(e=this.delegate)&&\"function\"==typeof e.attachmentManagerDidRequestRemovalOfAttachment?e.attachmentManagerDidRequestRemovalOfAttachment(t):void 0},i.prototype.unmanageAttachment=function(t){var e;return e=this.managedAttachments[t.id],delete this.managedAttachments[t.id],e},i}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h;t=e.elementContainsNode,n=e.findChildIndexOfNode,r=e.nodeIsBlockStart,s=e.nodeIsBlockStartComment,o=e.nodeIsBlockContainer,a=e.nodeIsCursorTarget,u=e.nodeIsEmptyTextNode,c=e.nodeIsTextNode,i=e.nodeIsAttachmentElement,l=e.tagName,h=e.walkTree,e.LocationMapper=function(){function e(t){this.element=t\n}var p,d,f,g;return e.prototype.findLocationFromContainerAndOffset=function(e,i,o){var s,u,l,p,g,m,v;for(m=(null!=o?o:{strict:!0}).strict,u=0,l=!1,p={index:0,offset:0},(s=this.findAttachmentElementParentForNode(e))&&(e=s.parentNode,i=n(s)),v=h(this.element,{usingFilter:f});v.nextNode();){if(g=v.currentNode,g===e&&c(e)){a(g)||(p.offset+=i);break}if(g.parentNode===e){if(u++===i)break}else if(!t(e,g)&&u>0)break;r(g,{strict:m})?(l&&p.index++,p.offset=0,l=!0):p.offset+=d(g)}return p},e.prototype.findContainerAndOffsetFromLocation=function(t){var e,i,s,u,l;if(0===t.index&&0===t.offset){for(e=this.element,u=0;e.firstChild;)if(e=e.firstChild,o(e)){u=1;break}return[e,u]}if(l=this.findNodeAndOffsetFromLocation(t),i=l[0],s=l[1],i){if(c(i))0===d(i)?(e=i.parentNode.parentNode,u=n(i.parentNode),a(i,{name:\"right\"})&&u++):(e=i,u=t.offset-s);else{if(e=i.parentNode,!r(i.previousSibling)&&!o(e))for(;i===e.lastChild&&(i=e,e=e.parentNode,!o(e)););u=n(i),0!==t.offset&&u++}return[e,u]}},e.prototype.findNodeAndOffsetFromLocation=function(t){var e,n,i,o,r,s,u,l;for(u=0,l=this.getSignificantNodesForIndex(t.index),n=0,i=l.length;i>n;n++){if(e=l[n],o=d(e),t.offset<=u+o)if(c(e)){if(r=e,s=u,t.offset===s&&a(r))break}else r||(r=e,s=u);if(u+=o,u>t.offset)break}return[r,s]},e.prototype.findAttachmentElementParentForNode=function(t){for(;t&&t!==this.element;){if(i(t))return t;t=t.parentNode}},e.prototype.getSignificantNodesForIndex=function(t){var e,n,i,o,r;for(i=[],r=h(this.element,{usingFilter:p}),o=!1;r.nextNode();)if(n=r.currentNode,s(n)){if(\"undefined\"!=typeof e&&null!==e?e++:e=0,e===t)o=!0;else if(o)break}else o&&i.push(n);return i},d=function(t){var e;return t.nodeType===Node.TEXT_NODE?a(t)?0:(e=t.textContent,e.length):\"br\"===l(t)||i(t)?1:0},p=function(t){return g(t)===NodeFilter.FILTER_ACCEPT?f(t):NodeFilter.FILTER_REJECT},g=function(t){return u(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},f=function(t){return i(t.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},e}()}.call(this),function(){var t,n,i=[].slice;t=e.getDOMRange,n=e.setDOMRange,e.PointMapper=function(){function e(){}return e.prototype.createDOMRangeFromPoint=function(e){var i,o,r,s,a,u,c,l;if(c=e.x,l=e.y,document.caretPositionFromPoint)return a=document.caretPositionFromPoint(c,l),r=a.offsetNode,o=a.offset,i=document.createRange(),i.setStart(r,o),i;if(document.caretRangeFromPoint)return document.caretRangeFromPoint(c,l);if(document.body.createTextRange){s=t();try{u=document.body.createTextRange(),u.moveToPoint(c,l),u.select()}catch(h){}return i=t(),n(s),i}},e.prototype.getClientRectsForDOMRange=function(t){var e,n,o;return n=i.call(t.getClientRects()),o=n[0],e=n[n.length-1],[o,e]},e}()}.call(this),function(){var t,n=function(t,e){return function(){return t.apply(e,arguments)}},i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty,r=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.getDOMRange,e.SelectionChangeObserver=function(e){function o(){this.run=n(this.run,this),this.update=n(this.update,this),this.selectionManagers=[]}var s;return i(o,e),o.prototype.start=function(){return this.started?void 0:(this.started=!0,\"onselectionchange\"in document?document.addEventListener(\"selectionchange\",this.update,!0):this.run())},o.prototype.stop=function(){return this.started?(this.started=!1,document.removeEventListener(\"selectionchange\",this.update,!0)):void 0},o.prototype.registerSelectionManager=function(t){return r.call(this.selectionManagers,t)<0?(this.selectionManagers.push(t),this.start()):void 0},o.prototype.unregisterSelectionManager=function(t){var e;return this.selectionManagers=function(){var n,i,o,r;for(o=this.selectionManagers,r=[],n=0,i=o.length;i>n;n++)e=o[n],e!==t&&r.push(e);return r}.call(this),0===this.selectionManagers.length?this.stop():void 0},o.prototype.notifySelectionManagersOfSelectionChange=function(){var t,e,n,i,o;for(n=this.selectionManagers,i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(o.selectionDidChange());return i},o.prototype.update=function(){var e;return e=t(),s(e,this.domRange)?void 0:(this.domRange=e,this.notifySelectionManagersOfSelectionChange())},o.prototype.reset=function(){return this.domRange=null,this.update()},o.prototype.run=function(){return this.started?(this.update(),requestAnimationFrame(this.run)):void 0},s=function(t,e){return(null!=t?t.startContainer:void 0)===(null!=e?e.startContainer:void 0)&&(null!=t?t.startOffset:void 0)===(null!=e?e.startOffset:void 0)&&(null!=t?t.endContainer:void 0)===(null!=e?e.endContainer:void 0)&&(null!=t?t.endOffset:void 0)===(null!=e?e.endOffset:void 0)},o}(e.BasicObject),null==e.selectionChangeObserver&&(e.selectionChangeObserver=new e.SelectionChangeObserver)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h=function(t,e){return function(){return t.apply(e,arguments)}},p=function(t,e){function n(){this.constructor=t}for(var i in e)d.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},d={}.hasOwnProperty;i=e.getDOMSelection,n=e.getDOMRange,l=e.setDOMRange,t=e.elementContainsNode,s=e.nodeIsCursorTarget,r=e.innerElementIsActive,o=e.handleEvent,a=e.normalizeRange,u=e.rangeIsCollapsed,c=e.rangesAreEqual,e.SelectionManager=function(d){function f(t){this.element=t,this.selectionDidChange=h(this.selectionDidChange,this),this.didMouseDown=h(this.didMouseDown,this),this.locationMapper=new e.LocationMapper(this.element),this.pointMapper=new e.PointMapper,this.lockCount=0,o(\"mousedown\",{onElement:this.element,withCallback:this.didMouseDown})}return p(f,d),f.prototype.getLocationRange=function(t){var e,i;return null==t&&(t={}),e=t.strict===!1?this.createLocationRangeFromDOMRange(n(),{strict:!1}):t.ignoreLock?this.currentLocationRange:null!=(i=this.lockedLocationRange)?i:this.currentLocationRange},f.prototype.setLocationRange=function(t){var e;if(!this.lockedLocationRange)return t=a(t),(e=this.createDOMRangeFromLocationRange(t))?(l(e),this.updateCurrentLocationRange(t)):void 0},f.prototype.setLocationRangeFromPointRange=function(t){var e,n;return t=a(t),n=this.getLocationAtPoint(t[0]),e=this.getLocationAtPoint(t[1]),this.setLocationRange([n,e])},f.prototype.getClientRectAtLocationRange=function(t){var e;return(e=this.createDOMRangeFromLocationRange(t))?this.getClientRectsForDOMRange(e)[1]:void 0},f.prototype.locationIsCursorTarget=function(t){var e,n,i;return i=this.findNodeAndOffsetFromLocation(t),e=i[0],n=i[1],s(e)},f.prototype.lock=function(){return 0===this.lockCount++?(this.updateCurrentLocationRange(),this.lockedLocationRange=this.getLocationRange()):void 0},f.prototype.unlock=function(){var t;return 0===--this.lockCount&&(t=this.lockedLocationRange,this.lockedLocationRange=null,null!=t)?this.setLocationRange(t):void 0},f.prototype.clearSelection=function(){var t;return null!=(t=i())?t.removeAllRanges():void 0},f.prototype.selectionIsCollapsed=function(){var t;return(null!=(t=n())?t.collapsed:void 0)===!0},f.prototype.selectionIsExpanded=function(){return!this.selectionIsCollapsed()},f.prototype.createLocationRangeFromDOMRange=function(t,e){var n,i;if(null!=t&&this.domRangeWithinElement(t)&&(i=this.findLocationFromContainerAndOffset(t.startContainer,t.startOffset,e)))return t.collapsed||(n=this.findLocationFromContainerAndOffset(t.endContainer,t.endOffset,e)),a([i,n])},f.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"),f.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"),f.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"),f.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"),f.proxyMethod(\"pointMapper.getClientRectsForDOMRange\"),f.prototype.didMouseDown=function(){return this.pauseTemporarily()},f.prototype.pauseTemporarily=function(){var e,n,i,r;return this.paused=!0,n=function(e){return function(){var n,o,s;for(e.paused=!1,clearTimeout(r),o=0,s=i.length;s>o;o++)n=i[o],n.destroy();return t(document,e.element)?e.selectionDidChange():void 0}}(this),r=setTimeout(n,200),i=function(){var t,i,r,s;for(r=[\"mousemove\",\"keydown\"],s=[],t=0,i=r.length;i>t;t++)e=r[t],s.push(o(e,{onElement:document,withCallback:n}));return s}()},f.prototype.selectionDidChange=function(){return this.paused||r(this.element)?void 0:this.updateCurrentLocationRange()},f.prototype.updateCurrentLocationRange=function(t){var e;return(null!=t?t:t=this.createLocationRangeFromDOMRange(n()))&&!c(t,this.currentLocationRange)?(this.currentLocationRange=t,null!=(e=this.delegate)&&\"function\"==typeof e.locationRangeDidChange?e.locationRangeDidChange(this.currentLocationRange.slice(0)):void 0):void 0},f.prototype.createDOMRangeFromLocationRange=function(t){var e,n,i,o;return i=this.findContainerAndOffsetFromLocation(t[0]),n=u(t)?i:null!=(o=this.findContainerAndOffsetFromLocation(t[1]))?o:i,null!=i&&null!=n?(e=document.createRange(),e.setStart.apply(e,i),e.setEnd.apply(e,n),e):void 0},f.prototype.getLocationAtPoint=function(t){var e,n;return(e=this.createDOMRangeFromPoint(t))&&null!=(n=this.createLocationRangeFromDOMRange(e))?n[0]:void 0},f.prototype.domRangeWithinElement=function(e){return e.collapsed?t(this.element,e.startContainer):t(this.element,e.startContainer)&&t(this.element,e.endContainer)},f}(e.BasicObject)}.call(this),function(){var t,n,i,o,r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].slice;i=e.rangeIsCollapsed,o=e.rangesAreEqual,n=e.objectsAreEqual,t=e.getBlockConfig,e.EditorController=function(s){function u(t){var n,i;this.editorElement=t.editorElement,n=t.document,i=t.html,this.selectionManager=new e.SelectionManager(this.editorElement),this.selectionManager.delegate=this,this.composition=new e.Composition,this.composition.delegate=this,this.attachmentManager=new e.AttachmentManager(this.composition.getAttachments()),this.attachmentManager.delegate=this,this.inputController=new(e[\"Level\"+e.config.input.getLevel()+\"InputController\"])(this.editorElement),this.inputController.delegate=this,this.inputController.responder=this.composition,this.compositionController=new e.CompositionController(this.editorElement,this.composition),this.compositionController.delegate=this,this.toolbarController=new e.ToolbarController(this.editorElement.toolbarElement),this.toolbarController.delegate=this,this.editor=new e.Editor(this.composition,this.selectionManager,this.editorElement),null!=n?this.editor.loadDocument(n):this.editor.loadHTML(i)}var c;return r(u,s),u.prototype.registerSelectionManager=function(){return e.selectionChangeObserver.registerSelectionManager(this.selectionManager)},u.prototype.unregisterSelectionManager=function(){return e.selectionChangeObserver.unregisterSelectionManager(this.selectionManager)},u.prototype.render=function(){return this.compositionController.render()},u.prototype.reparse=function(){return this.composition.replaceHTML(this.editorElement.innerHTML)},u.prototype.compositionDidChangeDocument=function(){return this.notifyEditorElement(\"document-change\"),this.handlingInput?void 0:this.render()},u.prototype.compositionDidChangeCurrentAttributes=function(t){return this.currentAttributes=t,this.toolbarController.updateAttributes(this.currentAttributes),this.updateCurrentActions(),this.notifyEditorElement(\"attributes-change\",{attributes:this.currentAttributes})},u.prototype.compositionDidPerformInsertionAtRange=function(t){return this.pasting?this.pastedRange=t:void 0},u.prototype.compositionShouldAcceptFile=function(t){return this.notifyEditorElement(\"file-accept\",{file:t})},u.prototype.compositionDidAddAttachment=function(t){var e;return e=this.attachmentManager.manageAttachment(t),this.notifyEditorElement(\"attachment-add\",{attachment:e})},u.prototype.compositionDidEditAttachment=function(t){var e;return this.compositionController.rerenderViewForObject(t),e=this.attachmentManager.manageAttachment(t),this.notifyEditorElement(\"attachment-edit\",{attachment:e}),this.notifyEditorElement(\"change\")},u.prototype.compositionDidChangeAttachmentPreviewURL=function(t){return this.compositionController.invalidateViewForObject(t),this.notifyEditorElement(\"change\")},u.prototype.compositionDidRemoveAttachment=function(t){var e;return e=this.attachmentManager.unmanageAttachment(t),this.notifyEditorElement(\"attachment-remove\",{attachment:e})},u.prototype.compositionDidStartEditingAttachment=function(t,e){return this.attachmentLocationRange=this.composition.document.getLocationRangeOfAttachment(t),this.compositionController.installAttachmentEditorForAttachment(t,e),this.selectionManager.setLocationRange(this.attachmentLocationRange)},u.prototype.compositionDidStopEditingAttachment=function(){return this.compositionController.uninstallAttachmentEditor(),this.attachmentLocationRange=null},u.prototype.compositionDidRequestChangingSelectionToLocationRange=function(t){return!this.loadingSnapshot||this.isFocused()?(this.requestedLocationRange=t,this.compositionRevisionWhenLocationRangeRequested=this.composition.revision,this.handlingInput?void 0:this.render()):void 0},u.prototype.compositionWillLoadSnapshot=function(){return this.loadingSnapshot=!0},u.prototype.compositionDidLoadSnapshot=function(){return this.compositionController.refreshViewCache(),this.render(),this.loadingSnapshot=!1},u.prototype.getSelectionManager=function(){return this.selectionManager},u.proxyMethod(\"getSelectionManager().setLocationRange\"),u.proxyMethod(\"getSelectionManager().getLocationRange\"),u.prototype.attachmentManagerDidRequestRemovalOfAttachment=function(t){return this.removeAttachment(t)},u.prototype.compositionControllerWillSyncDocumentView=function(){return this.inputController.editorWillSyncDocumentView(),this.selectionManager.lock(),this.selectionManager.clearSelection()},u.prototype.compositionControllerDidSyncDocumentView=function(){return this.inputController.editorDidSyncDocumentView(),this.selectionManager.unlock(),this.updateCurrentActions(),this.notifyEditorElement(\"sync\")},u.prototype.compositionControllerDidRender=function(){return null!=this.requestedLocationRange&&(this.compositionRevisionWhenLocationRangeRequested===this.composition.revision&&this.selectionManager.setLocationRange(this.requestedLocationRange),this.requestedLocationRange=null,this.compositionRevisionWhenLocationRangeRequested=null),this.renderedCompositionRevision!==this.composition.revision&&(this.runEditorFilters(),this.composition.updateCurrentAttributes(),this.notifyEditorElement(\"render\")),this.renderedCompositionRevision=this.composition.revision},u.prototype.compositionControllerDidFocus=function(){return this.isFocusedInvisibly()&&this.setLocationRange({index:0,offset:0}),this.toolbarController.hideDialog(),this.notifyEditorElement(\"focus\")},u.prototype.compositionControllerDidBlur=function(){return this.notifyEditorElement(\"blur\")},u.prototype.compositionControllerDidSelectAttachment=function(t,e){return this.toolbarController.hideDialog(),this.composition.editAttachment(t,e)},u.prototype.compositionControllerDidRequestDeselectingAttachment=function(t){var e,n;return e=null!=(n=this.attachmentLocationRange)?n:this.composition.document.getLocationRangeOfAttachment(t),this.selectionManager.setLocationRange(e[1])},u.prototype.compositionControllerWillUpdateAttachment=function(t){return this.editor.recordUndoEntry(\"Edit Attachment\",{context:t.id,consolidatable:!0})},u.prototype.compositionControllerDidRequestRemovalOfAttachment=function(t){return this.removeAttachment(t)},u.prototype.inputControllerWillHandleInput=function(){return this.handlingInput=!0,this.requestedRender=!1},u.prototype.inputControllerDidRequestRender=function(){return this.requestedRender=!0},u.prototype.inputControllerDidHandleInput=function(){return this.handlingInput=!1,this.requestedRender?(this.requestedRender=!1,this.render()):void 0},u.prototype.inputControllerDidAllowUnhandledInput=function(){return this.notifyEditorElement(\"change\")},u.prototype.inputControllerDidRequestReparse=function(){return this.reparse()},u.prototype.inputControllerWillPerformTyping=function(){return this.recordTypingUndoEntry()},u.prototype.inputControllerWillPerformFormatting=function(t){return this.recordFormattingUndoEntry(t)},u.prototype.inputControllerWillCutText=function(){return this.editor.recordUndoEntry(\"Cut\")},u.prototype.inputControllerWillPaste=function(t){return this.editor.recordUndoEntry(\"Paste\"),this.pasting=!0,this.notifyEditorElement(\"before-paste\",{paste:t})},u.prototype.inputControllerDidPaste=function(t){return t.range=this.pastedRange,this.pastedRange=null,this.pasting=null,this.notifyEditorElement(\"paste\",{paste:t})},u.prototype.inputControllerWillMoveText=function(){return this.editor.recordUndoEntry(\"Move\")},u.prototype.inputControllerWillAttachFiles=function(){return this.editor.recordUndoEntry(\"Drop Files\")},u.prototype.inputControllerWillPerformUndo=function(){return this.editor.undo()},u.prototype.inputControllerWillPerformRedo=function(){return this.editor.redo()},u.prototype.inputControllerDidReceiveKeyboardCommand=function(t){return this.toolbarController.applyKeyboardCommand(t)},u.prototype.inputControllerDidStartDrag=function(){return this.locationRangeBeforeDrag=this.selectionManager.getLocationRange()},u.prototype.inputControllerDidReceiveDragOverPoint=function(t){return this.selectionManager.setLocationRangeFromPointRange(t)},u.prototype.inputControllerDidCancelDrag=function(){return this.selectionManager.setLocationRange(this.locationRangeBeforeDrag),this.locationRangeBeforeDrag=null},u.prototype.locationRangeDidChange=function(t){return this.composition.updateCurrentAttributes(),this.updateCurrentActions(),this.attachmentLocationRange&&!o(this.attachmentLocationRange,t)&&this.composition.stopEditingAttachment(),this.notifyEditorElement(\"selection-change\")},u.prototype.toolbarDidClickButton=function(){return this.getLocationRange()?void 0:this.setLocationRange({index:0,offset:0})},u.prototype.toolbarDidInvokeAction=function(t){return this.invokeAction(t)},u.prototype.toolbarDidToggleAttribute=function(t){return this.recordFormattingUndoEntry(t),this.composition.toggleCurrentAttribute(t),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarDidUpdateAttribute=function(t,e){return this.recordFormattingUndoEntry(t),this.composition.setCurrentAttribute(t,e),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarDidRemoveAttribute=function(t){return this.recordFormattingUndoEntry(t),this.composition.removeCurrentAttribute(t),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarWillShowDialog=function(){return this.composition.expandSelectionForEditing(),this.freezeSelection()},u.prototype.toolbarDidShowDialog=function(t){return this.notifyEditorElement(\"toolbar-dialog-show\",{dialogName:t})},u.prototype.toolbarDidHideDialog=function(t){return this.thawSelection(),this.editorElement.focus(),this.notifyEditorElement(\"toolbar-dialog-hide\",{dialogName:t})},u.prototype.freezeSelection=function(){return this.selectionFrozen?void 0:(this.selectionManager.lock(),this.composition.freezeSelection(),this.selectionFrozen=!0,this.render())},u.prototype.thawSelection=function(){return this.selectionFrozen?(this.composition.thawSelection(),this.selectionManager.unlock(),this.selectionFrozen=!1,this.render()):void 0},u.prototype.actions={undo:{test:function(){return this.editor.canUndo()},perform:function(){return this.editor.undo()}},redo:{test:function(){return this.editor.canRedo()},perform:function(){return this.editor.redo()}},link:{test:function(){return this.editor.canActivateAttribute(\"href\")}},increaseNestingLevel:{test:function(){return this.editor.canIncreaseNestingLevel()},perform:function(){return this.editor.increaseNestingLevel()&&this.render()}},decreaseNestingLevel:{test:function(){return this.editor.canDecreaseNestingLevel()},perform:function(){return this.editor.decreaseNestingLevel()&&this.render()}},attachFiles:{test:function(){return!0},perform:function(){return e.config.input.pickFiles(this.editor.insertFiles)}}},u.prototype.canInvokeAction=function(t){var e,n;return this.actionIsExternal(t)?!0:!!(null!=(e=this.actions[t])&&null!=(n=e.test)?n.call(this):void 0)},u.prototype.invokeAction=function(t){var e,n;return this.actionIsExternal(t)?this.notifyEditorElement(\"action-invoke\",{actionName:t}):null!=(e=this.actions[t])&&null!=(n=e.perform)?n.call(this):void 0},u.prototype.actionIsExternal=function(t){return/^x-./.test(t)},u.prototype.getCurrentActions=function(){var t,e;e={};for(t in this.actions)e[t]=this.canInvokeAction(t);return e},u.prototype.updateCurrentActions=function(){var t;return t=this.getCurrentActions(),n(t,this.currentActions)?void 0:(this.currentActions=t,this.toolbarController.updateActions(this.currentActions),this.notifyEditorElement(\"actions-change\",{actions:this.currentActions}))},u.prototype.runEditorFilters=function(){var t,e,n,i,o,r,s,a;for(a=this.composition.getSnapshot(),o=this.editor.filters,n=0,i=o.length;i>n;n++)e=o[n],t=a.document,s=a.selectedRange,a=null!=(r=e.call(this.editor,a))?r:{},null==a.document&&(a.document=t),null==a.selectedRange&&(a.selectedRange=s);return c(a,this.composition.getSnapshot())?void 0:this.composition.loadSnapshot(a)},c=function(t,e){return o(t.selectedRange,e.selectedRange)&&t.document.isEqualTo(e.document)},u.prototype.updateInputElement=function(){var t,n;return t=this.compositionController.getSerializableElement(),n=e.serializeToContentType(t,\"text/html\"),this.editorElement.setInputElementValue(n)},u.prototype.notifyEditorElement=function(t,e){switch(t){case\"document-change\":this.documentChangedSinceLastRender=!0;break;case\"render\":this.documentChangedSinceLastRender&&(this.documentChangedSinceLastRender=!1,this.notifyEditorElement(\"change\"));break;case\"change\":case\"attachment-add\":case\"attachment-edit\":case\"attachment-remove\":this.updateInputElement()}return this.editorElement.notify(t,e)},u.prototype.removeAttachment=function(t){return this.editor.recordUndoEntry(\"Delete Attachment\"),this.composition.removeAttachment(t),this.render()},u.prototype.recordFormattingUndoEntry=function(e){var n,o;return n=t(e),o=this.selectionManager.getLocationRange(),n||!i(o)?this.editor.recordUndoEntry(\"Formatting\",{context:this.getUndoContext(),consolidatable:!0}):void 0},u.prototype.recordTypingUndoEntry=function(){return this.editor.recordUndoEntry(\"Typing\",{context:this.getUndoContext(this.currentAttributes),consolidatable:!0})},u.prototype.getUndoContext=function(){var t;return t=1<=arguments.length?a.call(arguments,0):[],[this.getLocationContext(),this.getTimeContext()].concat(a.call(t))},u.prototype.getLocationContext=function(){var t;return t=this.selectionManager.getLocationRange(),i(t)?t[0].index:t},u.prototype.getTimeContext=function(){return e.config.undoInterval>0?Math.floor((new Date).getTime()/e.config.undoInterval):0},u.prototype.isFocused=function(){var t;return this.editorElement===(null!=(t=this.editorElement.ownerDocument)?t.activeElement:void 0)},u.prototype.isFocusedInvisibly=function(){return this.isFocused()&&!this.getLocationRange()},u}(e.Controller)}.call(this),function(){var t,n,i,o,r,s,a,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};n=e.browser,s=e.makeElement,a=e.triggerEvent,o=e.handleEvent,r=e.handleEventOnce,i=e.findClosestElementFromNode,t=e.AttachmentView.attachmentSelector,e.registerElement(\"trix-editor\",function(){var c,l,h,p,d,f,g,m,v;return g=0,l=function(t){return!document.querySelector(\":focus\")&&t.hasAttribute(\"autofocus\")&&document.querySelector(\"[autofocus]\")===t?t.focus():void 0},m=function(t){return t.hasAttribute(\"contenteditable\")?void 0:(t.setAttribute(\"contenteditable\",\"\"),r(\"focus\",{onElement:t,withCallback:function(){return h(t)}}))},h=function(t){return d(t),v(t)},d=function(t){return(\"function\"==typeof document.queryCommandSupported?document.queryCommandSupported(\"enableObjectResizing\"):void 0)?(document.execCommand(\"enableObjectResizing\",!1,!1),o(\"mscontrolselect\",{onElement:t,preventDefault:!0})):void 0},v=function(){var t;return(\"function\"==typeof document.queryCommandSupported?document.queryCommandSupported(\"DefaultParagraphSeparator\"):void 0)&&(t=e.config.blockAttributes[\"default\"].tagName,\"div\"===t||\"p\"===t)?document.execCommand(\"DefaultParagraphSeparator\",!1,t):void 0},c=function(t){return t.hasAttribute(\"role\")?void 0:t.setAttribute(\"role\",\"textbox\")},f=function(t){var e;if(!t.hasAttribute(\"aria-label\")&&!t.hasAttribute(\"aria-labelledby\"))return(e=function(){var e,n,i;return i=function(){var n,i,o,r;for(o=t.labels,r=[],n=0,i=o.length;i>n;n++)e=o[n],e.contains(t)||r.push(e.textContent);return r}(),(n=i.join(\" \"))?t.setAttribute(\"aria-label\",n):t.removeAttribute(\"aria-label\")})(),o(\"focus\",{onElement:t,withCallback:e})},p=function(){return n.forcesObjectResizing?{display:\"inline\",width:\"auto\"}:{display:\"inline-block\",width:\"1px\"}}(),{defaultCSS:\"%t {\\n  display: block;\\n}\\n\\n%t:empty:not(:focus)::before {\\n  content: attr(placeholder);\\n  color: graytext;\\n  cursor: text;\\n  pointer-events: none;\\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 \"+t+\" figcaption textarea {\\n  resize: none;\\n}\\n\\n%t \"+t+\" figcaption textarea.trix-autoresize-clone {\\n  position: absolute;\\n  left: -9999px;\\n  max-height: 0px;\\n}\\n\\n%t \"+t+\" 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: \"+p.display+\" !important;\\n  width: \"+p.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}\",trixId:{get:function(){return this.hasAttribute(\"trix-id\")?this.getAttribute(\"trix-id\"):(this.setAttribute(\"trix-id\",++g),this.trixId)}},labels:{get:function(){var t,e,n;return e=[],this.id&&this.ownerDocument&&e.push.apply(e,this.ownerDocument.querySelectorAll(\"label[for='\"+this.id+\"']\")),(t=i(this,{matchingSelector:\"label\"}))&&((n=t.control)===this||null===n)&&e.push(t),e}},toolbarElement:{get:function(){var t,e,n;return this.hasAttribute(\"toolbar\")?null!=(e=this.ownerDocument)?e.getElementById(this.getAttribute(\"toolbar\")):void 0:this.parentNode?(n=\"trix-toolbar-\"+this.trixId,this.setAttribute(\"toolbar\",n),t=s(\"trix-toolbar\",{id:n}),this.parentNode.insertBefore(t,this),t):void 0}},inputElement:{get:function(){var t,e,n;return this.hasAttribute(\"input\")?null!=(n=this.ownerDocument)?n.getElementById(this.getAttribute(\"input\")):void 0:this.parentNode?(e=\"trix-input-\"+this.trixId,this.setAttribute(\"input\",e),t=s(\"input\",{type:\"hidden\",id:e}),this.parentNode.insertBefore(t,this.nextElementSibling),t):void 0}},editor:{get:function(){var t;return null!=(t=this.editorController)?t.editor:void 0}},name:{get:function(){var t;return null!=(t=this.inputElement)?t.name:void 0}},value:{get:function(){var t;return null!=(t=this.inputElement)?t.value:void 0},set:function(t){var e;return this.defaultValue=t,null!=(e=this.editor)?e.loadHTML(this.defaultValue):void 0}},notify:function(t,e){return this.editorController?a(\"trix-\"+t,{onElement:this,attributes:e}):void 0},setInputElementValue:function(t){var e;return null!=(e=this.inputElement)?e.value=t:void 0},initialize:function(){return this.hasAttribute(\"data-trix-internal\")?void 0:(m(this),c(this),f(this))},connect:function(){return this.hasAttribute(\"data-trix-internal\")?void 0:(this.editorController||(a(\"trix-before-initialize\",{onElement:this}),this.editorController=new e.EditorController({editorElement:this,html:this.defaultValue=this.value}),requestAnimationFrame(function(t){return function(){return a(\"trix-initialize\",{onElement:t})}}(this))),this.editorController.registerSelectionManager(),this.registerResetListener(),this.registerClickListener(),l(this))},disconnect:function(){var t;return null!=(t=this.editorController)&&t.unregisterSelectionManager(),this.unregisterResetListener(),this.unregisterClickListener()},registerResetListener:function(){return this.resetListener=this.resetBubbled.bind(this),window.addEventListener(\"reset\",this.resetListener,!1)},unregisterResetListener:function(){return window.removeEventListener(\"reset\",this.resetListener,!1)},registerClickListener:function(){return this.clickListener=this.clickBubbled.bind(this),window.addEventListener(\"click\",this.clickListener,!1)},unregisterClickListener:function(){return window.removeEventListener(\"click\",this.clickListener,!1)},resetBubbled:function(t){var e;if(!t.defaultPrevented&&t.target===(null!=(e=this.inputElement)?e.form:void 0))return this.reset()},clickBubbled:function(t){var e;if(!(t.defaultPrevented||this.contains(t.target)||!(e=i(t.target,{matchingSelector:\"label\"}))||u.call(this.labels,e)<0))return this.focus()},reset:function(){return this.value=this.defaultValue}}}())}.call(this),function(){}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}.call(this);", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n  \"use strict\";\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n  var sparkMd5 = createCommonjsModule(function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })(function(undefined) {\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) {\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\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  });\n  var classCallCheck = function(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n  var createClass = function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  var FileChecksum = function() {\n    createClass(FileChecksum, null, [ {\n      key: \"create\",\n      value: function create(file, callback) {\n        var instance = new FileChecksum(file);\n        instance.create(callback);\n      }\n    } ]);\n    function FileChecksum(file) {\n      classCallCheck(this, FileChecksum);\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    createClass(FileChecksum, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        this.callback = callback;\n        this.md5Buffer = new sparkMd5.ArrayBuffer();\n        this.fileReader = new FileReader();\n        this.fileReader.addEventListener(\"load\", function(event) {\n          return _this.fileReaderDidLoad(event);\n        });\n        this.fileReader.addEventListener(\"error\", function(event) {\n          return _this.fileReaderDidError(event);\n        });\n        this.readNextChunk();\n      }\n    }, {\n      key: \"fileReaderDidLoad\",\n      value: function fileReaderDidLoad(event) {\n        this.md5Buffer.append(event.target.result);\n        if (!this.readNextChunk()) {\n          var binaryDigest = this.md5Buffer.end(true);\n          var base64digest = btoa(binaryDigest);\n          this.callback(null, base64digest);\n        }\n      }\n    }, {\n      key: \"fileReaderDidError\",\n      value: function fileReaderDidError(event) {\n        this.callback(\"Error reading \" + this.file.name);\n      }\n    }, {\n      key: \"readNextChunk\",\n      value: function readNextChunk() {\n        if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n          var start = this.chunkIndex * this.chunkSize;\n          var end = Math.min(start + this.chunkSize, this.file.size);\n          var 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    return FileChecksum;\n  }();\n  function getMetaValue(name) {\n    var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    var elements = root.querySelectorAll(selector);\n    return toArray$1(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type) {\n    var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var disabled = element.disabled;\n    var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n    var 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  function toArray$1(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  var BlobRecord = function() {\n    function BlobRecord(file, checksum, url) {\n      var _this = this;\n      classCallCheck(this, BlobRecord);\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      var csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobRecord, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(JSON.stringify({\n          blob: this.attributes\n        }));\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        if (this.status >= 200 && this.status < 300) {\n          var response = this.response;\n          var direct_upload = response.direct_upload;\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    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n      }\n    }, {\n      key: \"toJSON\",\n      value: function toJSON() {\n        var result = {};\n        for (var key in this.attributes) {\n          result[key] = this.attributes[key];\n        }\n        return result;\n      }\n    }, {\n      key: \"status\",\n      get: function get$$1() {\n        return this.xhr.status;\n      }\n    }, {\n      key: \"response\",\n      get: function get$$1() {\n        var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n        if (responseType == \"json\") {\n          return response;\n        } else {\n          return JSON.parse(response);\n        }\n      }\n    } ]);\n    return BlobRecord;\n  }();\n  var BlobUpload = function() {\n    function BlobUpload(blob) {\n      var _this = this;\n      classCallCheck(this, BlobUpload);\n      this.blob = blob;\n      this.file = blob.file;\n      var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (var key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(this.file.slice());\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n        if (status >= 200 && status < 300) {\n          this.callback(null, response);\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n      }\n    } ]);\n    return BlobUpload;\n  }();\n  var id = 0;\n  var DirectUpload = function() {\n    function DirectUpload(file, url, delegate) {\n      classCallCheck(this, DirectUpload);\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n    createClass(DirectUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        FileChecksum.create(this.file, function(error, checksum) {\n          if (error) {\n            callback(error);\n            return;\n          }\n          var blob = new BlobRecord(_this.file, checksum, _this.url);\n          notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n          blob.create(function(error) {\n            if (error) {\n              callback(error);\n            } else {\n              var upload = new BlobUpload(blob);\n              notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n              upload.create(function(error) {\n                if (error) {\n                  callback(error);\n                } else {\n                  callback(null, blob.toJSON());\n                }\n              });\n            }\n          });\n        });\n      }\n    } ]);\n    return DirectUpload;\n  }();\n  function notify(object, methodName) {\n    if (object && typeof object[methodName] == \"function\") {\n      for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        messages[_key - 2] = arguments[_key];\n      }\n      return object[methodName].apply(object, messages);\n    }\n  }\n  var DirectUploadController = function() {\n    function DirectUploadController(input, file) {\n      classCallCheck(this, DirectUploadController);\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    createClass(DirectUploadController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var 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(function(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    }, {\n      key: \"uploadRequestDidProgress\",\n      value: function uploadRequestDidProgress(event) {\n        var progress = event.loaded / event.total * 100;\n        if (progress) {\n          this.dispatch(\"progress\", {\n            progress: progress\n          });\n        }\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\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    }, {\n      key: \"dispatchError\",\n      value: function dispatchError(error) {\n        var event = this.dispatch(\"error\", {\n          error: error\n        });\n        if (!event.defaultPrevented) {\n          alert(error);\n        }\n      }\n    }, {\n      key: \"directUploadWillCreateBlobWithXHR\",\n      value: function directUploadWillCreateBlobWithXHR(xhr) {\n        this.dispatch(\"before-blob-request\", {\n          xhr: xhr\n        });\n      }\n    }, {\n      key: \"directUploadWillStoreFileWithXHR\",\n      value: function directUploadWillStoreFileWithXHR(xhr) {\n        var _this2 = this;\n        this.dispatch(\"before-storage-request\", {\n          xhr: xhr\n        });\n        xhr.upload.addEventListener(\"progress\", function(event) {\n          return _this2.uploadRequestDidProgress(event);\n        });\n      }\n    }, {\n      key: \"url\",\n      get: function get$$1() {\n        return this.input.getAttribute(\"data-direct-upload-url\");\n      }\n    } ]);\n    return DirectUploadController;\n  }();\n  var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  var DirectUploadsController = function() {\n    function DirectUploadsController(form) {\n      classCallCheck(this, DirectUploadsController);\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter(function(input) {\n        return input.files.length;\n      });\n    }\n    createClass(DirectUploadsController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var controllers = this.createDirectUploadControllers();\n        var startNextController = function startNextController() {\n          var controller = controllers.shift();\n          if (controller) {\n            controller.start(function(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    }, {\n      key: \"createDirectUploadControllers\",\n      value: function createDirectUploadControllers() {\n        var controllers = [];\n        this.inputs.forEach(function(input) {\n          toArray$1(input.files).forEach(function(file) {\n            var controller = new DirectUploadController(input, file);\n            controllers.push(controller);\n          });\n        });\n        return controllers;\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n          detail: detail\n        });\n      }\n    } ]);\n    return DirectUploadsController;\n  }();\n  var processingAttribute = \"data-direct-uploads-processing\";\n  var submitButtonsByForm = new WeakMap();\n  var started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    var target = event.target;\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    var form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    var controller = new DirectUploadsController(form);\n    var inputs = controller.inputs;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start(function(error) {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      });\n    }\n  }\n  function submitForm(form) {\n    var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      var _button = button, disabled = _button.disabled;\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  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.start = start;\n  exports.DirectUpload = DirectUpload;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});\n", "import { DirectUpload } from \"@rails/activestorage\"\n\nexport class 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\n  start() {\n    this.directUpload.create(this.directUploadDidComplete.bind(this))\n  }\n\n  directUploadWillStoreFileWithXHR(xhr) {\n    xhr.upload.addEventListener(\"progress\", event => {\n      const progress = event.loaded / event.total * 100\n      this.attachment.setUploadProgress(progress)\n    })\n  }\n\n  directUploadDidComplete(error, attributes) {\n    if (error) {\n      throw new Error(`Direct upload failed: ${error}`)\n    }\n\n    this.attachment.setAttributes({\n      sgid: attributes.attachable_sgid,\n      url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n    })\n  }\n\n  createBlobUrl(signedId, filename) {\n    return this.blobUrlTemplate\n      .replace(\":signed_id\", signedId)\n      .replace(\":filename\", encodeURIComponent(filename))\n  }\n\n  get directUploadUrl() {\n    return this.element.dataset.directUploadUrl\n  }\n\n  get blobUrlTemplate() {\n    return this.element.dataset.blobUrlTemplate\n  }\n}\n", "import { AttachmentUpload } from \"./attachment_upload\"\n\naddEventListener(\"trix-attachment-add\", event => {\n  const { attachment, target } = event\n\n  if (attachment.file) {\n    const upload = new AttachmentUpload(attachment, target)\n    upload.start()\n  }\n})\n", "/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id with a prefix.\n    // If an id already exists, it simply returns it with a prefix.\n\n    var select2Id = element.getAttribute('data-select2-id');\n\n    if (select2Id != null) {\n      return select2Id;\n    }\n\n    // If element has id, use it.\n    if (element.id) {\n      select2Id = 'select2-data-' + element.id;\n    } else {\n      select2Id = 'select2-data-' + (++id).toString() +\n        '-' + Utils.generateChars(4);\n    }\n\n    element.setAttribute('data-select2-id', select2Id);\n\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  Utils.copyNonInternalCssClasses = function (dest, src) {\n    var classes;\n\n    var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n    destinationClasses = destinationClasses.filter(function (clazz) {\n      // Save all Select2 classes\n      return clazz.indexOf('select2-') === 0;\n    });\n\n    var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n    sourceClasses = sourceClasses.filter(function (clazz) {\n      // Only copy non-Select2 classes\n      return clazz.indexOf('select2-') !== 0;\n    });\n\n    var replacements = destinationClasses.concat(sourceClasses);\n\n    dest.setAttribute('class', replacements.join(' '));\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option--selectable');\n\n    var $selected = $options.filter('.select2-results__option--selected');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = selected.map(function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option--selectable');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && selectedIds.indexOf(id) > -1)) {\n          this.classList.add('select2-results__option--selected');\n          $option.attr('aria-selected', 'true');\n        } else {\n          this.classList.remove('select2-results__option--selected');\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.classList.add('select2-results__option');\n    option.classList.add('select2-results__option--selectable');\n\n    var attrs = {\n      'role': 'option'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      attrs['aria-disabled'] = 'true';\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--disabled');\n    }\n\n    if (data.id == null) {\n      option.classList.remove('select2-results__option--selectable');\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--group');\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested',\n        'role': 'none'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.hasClass('select2-results__option--selected')) {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element[0].classList.add('select2-results__option--highlighted');\n      params.element[0].setAttribute('aria-selected', 'true');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option--selectable',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.hasClass('select2-results__option--selected')) {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option--selectable',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted')\n          .attr('aria-selected', 'false');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('.select2-results__option--selectable');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n    this.$selection.attr('aria-controls', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n    this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n\n    this.$selection.on(\n      'keydown',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        evt.stopPropagation();\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n        'tabindex=\"-1\">' +\n          '<span aria-hidden=\"true\">&times;</span>' +\n        '</button>' +\n        '<span class=\"select2-selection__choice__display\"></span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n      .attr('id') + '-choice-';\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n      if (selection.id) {\n        selectionId += selection.id;\n      } else {\n        selectionId += Utils.generateChars(4);\n      }\n\n      $selection.find('.select2-selection__choice__display')\n        .append(formatted)\n        .attr('id', selectionId);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      var removeItem = this.options.get('translations').get('removeItem');\n\n      var $remove = $selection.find('.select2-selection__choice__remove');\n\n      $remove.attr('title', removeItem());\n      $remove.attr('aria-label', removeItem());\n      $remove.attr('aria-describedby', selectionId);\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    $rendered.append($selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder[0].classList.add('select2-selection__placeholder');\n    $placeholder[0].classList.remove('select2-selection__choice');\n\n    var placeholderTitle = placeholder.title ||\n      placeholder.text ||\n      $placeholder.text();\n\n    this.$selection.find('.select2-selection__rendered').attr(\n      'title',\n      placeholderTitle\n    );\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__clear').remove();\n    this.$selection[0].classList.remove('select2-selection--clearable');\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var selectionId = this.$selection.find('.select2-selection__rendered')\n      .attr('id');\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n        '<span aria-hidden=\"true\">&times;</span>' +\n      '</button>'\n    );\n    $remove.attr('title', removeAll());\n    $remove.attr('aria-label', removeAll());\n    $remove.attr('aria-describedby', selectionId);\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.prepend($remove);\n    this.$selection[0].classList.add('select2-selection--clearable');\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var searchLabel = this.options.get('translations').get('search');\n    var $search = $(\n      '<span class=\"select2-search select2-search--inline\">' +\n        '<textarea class=\"select2-search__field\"'+\n        ' type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' +\n        '</textarea>' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('textarea');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n    this.$search.attr('aria-label', searchLabel());\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n    $rendered.append(this.$searchContainer);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n    var selectionId = container.id + '-container';\n\n    decorated.call(this, container, $container);\n\n    self.$search.attr('aria-describedby', selectionId);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.resizeSearch();\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$selection\n          .find('.select2-selection__choice').last();\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '100%';\n\n    if (this.$search.attr('placeholder') === '') {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n  '../utils'\n], function (Utils) {\n  function SelectionCSS () { }\n\n  SelectionCSS.prototype.render = function (decorated) {\n    var $selection = decorated.call(this);\n\n    var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n    if (selectionCssClass.indexOf(':all:') !== -1) {\n      selectionCssClass = selectionCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n    }\n\n    $selection.addClass(selectionCssClass);\n\n    return $selection;\n  };\n\n  return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if (relayEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if (preventableEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var self = this;\n\n    var data = Array.prototype.map.call(\n      this.$element[0].querySelectorAll(':checked'),\n      function (selectedElement) {\n        return self.item($(selectedElement));\n      }\n    );\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if (\n      data.element != null && data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if (val.indexOf(id) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if (\n      data.element != null &&\n      data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && val.indexOf(id) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      if (\n        this.tagName.toLowerCase() !== 'option' &&\n        this.tagName.toLowerCase() !== 'optgroup'\n      ) {\n        return;\n      }\n\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    this.$element.append($options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $(option);\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    var option = $option[0];\n\n    if (option.tagName.toLowerCase() === 'option') {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if (option.tagName.toLowerCase() === 'optgroup') {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if (existingIds.indexOf(item.id) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        $option.append($children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if (typeof this._request.abort === 'function') {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !Array.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if (Array.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', 'true');\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    if (params.term == null) {\n      return null;\n    }\n\n    var term = params.term.trim();\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if (separators.indexOf(termChar) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery'\n], function ($) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n    var searchLabel = this.options.get('translations').get('search');\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n    this.$search.attr('aria-label', searchLabel());\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer[0].classList.remove('select2-search--hide');\n        } else {\n          self.$searchContainer[0].classList.add('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown[0].classList.remove('select2');\n    $dropdown[0].classList.add('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown[0].classList\n      .contains('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown[0].classList\n      .contains('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown[0].classList.remove('select2-dropdown--below');\n      this.$dropdown[0].classList.remove('select2-dropdown--above');\n      this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n      this.$container[0].classList.remove('select2-container--below');\n      this.$container[0].classList.remove('select2-container--above');\n      this.$container[0].classList.add('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n  '../utils'\n], function (Utils) {\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n    }\n\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n  '../utils'\n], function (Utils) {\n  function TagsSearchHighlight () { }\n\n  TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n    var $options = this.$results\n    .find(\n      '.select2-results__option--selectable' +\n      ':not(.select2-results__option--selected)'\n    );\n\n    if ($options.length > 0) {\n      var $firstOption = $options.first();\n      var data = Utils.GetData($firstOption[0], 'data');\n      var firstElement = data.element;\n\n      if (firstElement && firstElement.getAttribute) {\n        if (firstElement.getAttribute('data-select2-tag') === 'true') {\n          $firstOption.trigger('mouseenter');\n\n          return;\n        }\n      }\n    }\n\n    decorated.call(this);\n  };\n\n  return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results\u2026';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching\u2026';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    },\n    removeItem: function () {\n      return 'Remove item';\n    },\n    search: function() {\n      return 'Search';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/selectionCss',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n  './dropdown/dropdownCss',\n  './dropdown/tagsSearchHighlight',\n\n  './i18n/en'\n], function ($,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, SelectionCSS, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n             DropdownCSS, TagsSearchHighlight,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n\n      if (options.tags) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          TagsSearchHighlight\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (options.dropdownCssClass != null) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (options.selectionCssClass != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if (params.term == null || params.term.trim() === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdLanguageBase: './i18n/',\n      autocomplete: 'off',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!Array.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'jquery',\n  './defaults',\n  './utils'\n], function ($, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n      this.options.autocomplete = $e.prop('autocomplete');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if (excludedData.indexOf(key) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element[0].classList.add('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    this._observer = new window.MutationObserver(function (mutations) {\n      self._syncA();\n      self._syncS(mutations);\n    });\n    this._observer.observe(this.$element[0], {\n      attributes: true,\n      childList: true,\n      subtree: false\n    });\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if (nonRelayEvents.indexOf(name) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container[0].classList.add('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container[0].classList.remove('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container[0].classList.remove('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container[0].classList.add('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container[0].classList.remove('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (mutations) {\n    var self = this;\n\n    if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          return true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      return true;\n    } else if (Array.isArray(mutations)) {\n      return mutations.some(function (mutation) {\n        return self._isChangeMutation(mutation);\n      });\n    }\n\n    return false;\n  };\n\n  Select2.prototype._syncSubtree = function (mutations) {\n    var changed = this._isChangeMutation(mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container[0].classList.contains('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container[0].classList.contains('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container[0].classList.add('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if (Array.isArray(newVal)) {\n      newVal = newVal.map(function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    Utils.RemoveData(this.$container[0]);\n    this.$container.remove();\n\n    this._observer.disconnect();\n    this._observer = null;\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element[0].classList.remove('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container[0].classList\n      .add('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n  'jquery'\n], function ($) {\n  // Used to shim jQuery.mousewheel for non-full builds.\n  return $;\n});\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if (thisMethods.indexOf(options) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n", "this.isMobile = function() {\n  var e\n  try {\n    document.createEvent(\"TouchEvent\")\n    return true\n  } catch (_error) {\n    e = _error\n    return false\n  }\n}\n\nthis.getDisplayWidthMargin = function() {\n  return $('footer').width()\n}\n\nthis.initMailTooltip = function() {\n  $('.mail_tooltip').tooltipster({\n    animation: 'fade',\n    delay: 200,\n    trigger: 'hover',\n    interactive: true,\n    theme: 'tooltipster_mail'\n  })\n}\n\nthis.initProfileTooltip = function() {\n  var trigger\n  trigger = ''\n  if (isMobile()) {\n    trigger = 'click'\n  } else {\n    trigger = 'hover'\n  }\n  $('.profile_points_tooltip').tooltipster({\n    animation: 'fade',\n    delay: 200,\n    trigger: trigger,\n    interactive: true,\n    theme: 'tooltip_profile'\n  })\n  $('.profile_settings_tooltip').tooltipster({\n    animation: 'fade',\n    delay: 200,\n    trigger: trigger,\n    interactive: true,\n    theme: 'tooltip_profile'\n  })\n}\n\nthis.toggleBurger = function() {\n  $('.burger').toggleClass('visible')\n}\n\nthis.updateBurger = function() {\n  if (!$('#burger_icon_container').is(':visible')) {\n    $('#burger').removeClass('visible')\n    $('#open_burger').addClass('visible')\n    $('#close_burger').removeClass('visible')\n  }\n}\n\nthis.closestEdge = function(x, y, w, h) {\n  var bottomEdgeDist, leftEdgeDist, min, rightEdgeDist, topEdgeDist\n  topEdgeDist = distMetric(x, y, w / 2, 0)\n  bottomEdgeDist = distMetric(x, y, w / 2, h)\n  leftEdgeDist = distMetric(x, y, 0, h / 2)\n  rightEdgeDist = distMetric(x, y, w, h / 2)\n  min = Math.min(topEdgeDist, bottomEdgeDist, leftEdgeDist, rightEdgeDist)\n  switch (min) {\n    case leftEdgeDist:\n      return 'left'\n    case rightEdgeDist:\n      return 'right'\n    case topEdgeDist:\n      return 'top'\n    case bottomEdgeDist:\n      return 'bottom'\n  }\n}\n\nthis.distMetric = function(x, y, x2, y2) {\n  var xDiff, yDiff\n  xDiff = x - x2\n  yDiff = y - y2\n  return xDiff * xDiff + yDiff * yDiff\n}\n\nthis.initAnonymousContainer = function() {\n  updateAnonymousContainer()\n}\n\nthis.updateAnonymousContainer = function() {\n  var footer, h, header, newHeight\n  header = $('#microsite_header').outerHeight()\n  footer = $('#microsite_footer').outerHeight()\n  h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)\n  newHeight = h - header - footer + 'px'\n  $('.anonymous_container').css('min-height', newHeight)\n}\n\n\n/*\n * top bar scrolling behavior\n */\n\nthis.initSmHeader = function() {\n  var $width_indicator, is_mobile, top_header_height\n  $width_indicator = $('#width_indicator .value')\n  is_mobile = $width_indicator.css(\"display\") === \"none\"\n  top_header_height = 80\n  if (is_mobile) {\n    top_header_height = 40\n    $('#page_container').addClass('mobile')\n  } else {\n    $('#page_container').removeClass('mobile')\n  }\n  $(window).scroll(function() {\n    if ($(this).scrollTop() > top_header_height) {\n      return $('#page_container').addClass('stick')\n    } else if ($(this).scrollTop() < top_header_height) {\n      return $('#page_container').removeClass('stick')\n    }\n  })\n}\n\n$(document).ready(function() {\n\n  /*\n   * Cocoon\n   */\n  addFormInitializationRoutine(function() {\n    return $('a.add_fields').each(function(i, el) {\n      return $(el).parent().on('cocoon:after-insert', function() {\n        return reinitializeForms()\n      }).on('cocoon:after-remove', function() {\n        return reinitializeForms()\n      })\n    })\n  })\n\n  /*\n   * General close button\n   */\n  $('#messages').on('click', '.close-button', function(event) {\n    var $button, $flash\n    $button = $(this)\n    $flash = $button.closest('.flash')\n    return $flash.hide()\n  })\n\n  /*\n   * See show_datetime helper\n   */\n  addFormInitializationRoutine(function(context) {\n    $(context).find('.datetimestring').each(function() {\n      return $(this).text(datetime.toLocal($(this).attr(\"data-value\")))\n    })\n    $(context).find('.datestring').each(function() {\n      return $(this).text(datetime.toLocalDate($(this).attr(\"data-value\")))\n    })\n    return $(context).find('.timestring').each(function() {\n      return $(this).text(datetime.toLocalTime($(this).attr(\"data-value\")))\n    })\n  })\n\n  /*\n   * INDEX FILTERS\n   */\n  $('.filtered-table').on('change', 'table.filtered .filter-select', function(event) {\n    var $form\n    $form = $('form.filter-form')\n    return $form.submit()\n  })\n\n  /*\n   * BOOKMARKS\n   */\n  addFormInitializationRoutine(function(context) {\n    return $(context).find(\".svg-bookmark\").each(function(i, el) {\n      var $el\n      $el = $(el)\n      if ($el.data(\"initializedBookmark\")) {\n        return\n      }\n      $el.data(\"initializedBookmark\", true)\n      return $el.click(function() {\n        return $.post($el.attr(\"data-path\"), function(data) {\n          if (data.bookmarked) {\n            $el.find('.active').removeClass('hidden')\n            return $el.find('.inactive').addClass('hidden')\n          } else {\n            $el.find('.active').addClass('hidden')\n            return $el.find('.inactive').removeClass('hidden')\n          }\n        })\n      })\n    })\n  })\n\n  /*\n   * MAPS\n   */\n  return mapsHelper.addInitializationRoutine(function(context) {\n    return $(context).find(\".map-canvas.auto-initialize\").each(function(i, el) {\n      var $el, infoWindow, mapApi, marker, placesServiceApi\n      $el = $(el)\n      if ($el.data(\"initializedMaps\")) {\n        return\n      }\n      $el.data(\"initializedMaps\", true)\n      mapApi = new google.maps.Map(el, mapsHelper.defaultConfiguration)\n      placesServiceApi = new google.maps.places.PlacesService(mapApi)\n      marker = new google.maps.Marker({\n        map: mapApi,\n        title: $el.attr(\"data-label\")\n      })\n      infoWindow = new google.maps.InfoWindow({\n        content: $el.attr(\"data-label\")\n      })\n      marker.addListener('click', function() {\n        return infoWindow.open(mapApi, marker)\n      })\n      if ($el.attr(\"data-place-id\")) {\n        return placesServiceApi.getDetails({\n          placeId: $el.attr(\"data-place-id\")\n        }, function(place, status) {\n          if (!(status === google.maps.places.PlacesServiceStatus.OK && place.geometry)) {\n            return\n          }\n          mapsHelper.updateMapWithPlace(mapApi, place, marker)\n          return infoWindow.open(mapApi, marker)\n        })\n      }\n    })\n  })\n})", "this.autoComplete = function() {\n  return $('.autocomplete').each(function() {\n    $(this).autocomplete({\n      source: $(this).data('source'),\n      minLength: 2\n    })\n    return $(this).autocomplete('instance')._renderItem = function(ul, item) {\n      return $('<li>').append(item.label).appendTo(ul)\n    }\n  })\n}\n\n$(document).ready(this.autoComplete)", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.default = {}));\n}(this, (function (exports) { 'use strict';\n\n  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  };\n\n  exports.default = english;\n  exports.english = english;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.de = {}));\n}(this, (function (exports) { 'use strict';\n\n  var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n      ? window.flatpickr\n      : {\n          l10ns: {},\n      };\n  var German = {\n      weekdays: {\n          shorthand: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n          longhand: [\n              \"Sonntag\",\n              \"Montag\",\n              \"Dienstag\",\n              \"Mittwoch\",\n              \"Donnerstag\",\n              \"Freitag\",\n              \"Samstag\",\n          ],\n      },\n      months: {\n          shorthand: [\n              \"Jan\",\n              \"Feb\",\n              \"M\u00E4r\",\n              \"Apr\",\n              \"Mai\",\n              \"Jun\",\n              \"Jul\",\n              \"Aug\",\n              \"Sep\",\n              \"Okt\",\n              \"Nov\",\n              \"Dez\",\n          ],\n          longhand: [\n              \"Januar\",\n              \"Februar\",\n              \"M\u00E4rz\",\n              \"April\",\n              \"Mai\",\n              \"Juni\",\n              \"Juli\",\n              \"August\",\n              \"September\",\n              \"Oktober\",\n              \"November\",\n              \"Dezember\",\n          ],\n      },\n      firstDayOfWeek: 1,\n      weekAbbreviation: \"KW\",\n      rangeSeparator: \" bis \",\n      scrollTitle: \"Zum \u00C4ndern scrollen\",\n      toggleTitle: \"Zum Umschalten klicken\",\n      time_24hr: true,\n  };\n  fp.l10ns.de = German;\n  var de = fp.l10ns;\n\n  exports.German = German;\n  exports.default = de;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar l0 = {\n  code: \"af\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Vorige\",\n    next: \"Volgende\",\n    today: \"Vandag\",\n    year: \"Jaar\",\n    month: \"Maand\",\n    week: \"Week\",\n    day: \"Dag\",\n    list: \"Agenda\"\n  },\n  allDayText: \"Heeldag\",\n  moreLinkText: \"Addisionele\",\n  noEventsText: \"Daar is geen gebeurtenisse nie\"\n};\n\nvar l1 = {\n  code: \"ar-dz\",\n  week: {\n    dow: 0,\n    doy: 4\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n    next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n    today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n    month: \"\\u0634\\u0647\\u0631\",\n    week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n    day: \"\\u064A\\u0648\\u0645\",\n    list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n  },\n  weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n  allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n  moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n  noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l2 = {\n  code: \"ar-kw\",\n  week: {\n    dow: 0,\n    doy: 12\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n    next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n    today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n    month: \"\\u0634\\u0647\\u0631\",\n    week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n    day: \"\\u064A\\u0648\\u0645\",\n    list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n  },\n  weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n  allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n  moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n  noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l3 = {\n  code: \"ar-ly\",\n  week: {\n    dow: 6,\n    doy: 12\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n    next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n    today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n    month: \"\\u0634\\u0647\\u0631\",\n    week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n    day: \"\\u064A\\u0648\\u0645\",\n    list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n  },\n  weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n  allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n  moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n  noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l4 = {\n  code: \"ar-ma\",\n  week: {\n    dow: 6,\n    doy: 12\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n    next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n    today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n    month: \"\\u0634\\u0647\\u0631\",\n    week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n    day: \"\\u064A\\u0648\\u0645\",\n    list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n  },\n  weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n  allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n  moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n  noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l5 = {\n  code: \"ar-sa\",\n  week: {\n    dow: 0,\n    doy: 6\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n    next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n    today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n    month: \"\\u0634\\u0647\\u0631\",\n    week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n    day: \"\\u064A\\u0648\\u0645\",\n    list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n  },\n  weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n  allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n  moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n  noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l6 = {\n  code: \"ar-tn\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n    next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n    today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n    month: \"\\u0634\\u0647\\u0631\",\n    week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n    day: \"\\u064A\\u0648\\u0645\",\n    list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n  },\n  weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n  allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n  moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n  noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l7 = {\n  code: \"ar\",\n  week: {\n    dow: 6,\n    doy: 12\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n    next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n    today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n    month: \"\\u0634\\u0647\\u0631\",\n    week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n    day: \"\\u064A\\u0648\\u0645\",\n    list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n  },\n  weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n  allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n  moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n  noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l8 = {\n  code: \"az\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u018Fvv\\u0259l\",\n    next: \"Sonra\",\n    today: \"Bu G\\xFCn\",\n    month: \"Ay\",\n    week: \"H\\u0259ft\\u0259\",\n    day: \"G\\xFCn\",\n    list: \"G\\xFCnd\\u0259m\"\n  },\n  weekText: \"H\\u0259ft\\u0259\",\n  allDayText: \"B\\xFCt\\xFCn G\\xFCn\",\n  moreLinkText: function(n) {\n    return \"+ daha \\xE7ox \" + n;\n  },\n  noEventsText: \"G\\xF6st\\u0259rm\\u0259k \\xFC\\xE7\\xFCn hadis\\u0259 yoxdur\"\n};\n\nvar l9 = {\n  code: \"bg\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"\\u043D\\u0430\\u0437\\u0430\\u0434\",\n    next: \"\\u043D\\u0430\\u043F\\u0440\\u0435\\u0434\",\n    today: \"\\u0434\\u043D\\u0435\\u0441\",\n    month: \"\\u041C\\u0435\\u0441\\u0435\\u0446\",\n    week: \"\\u0421\\u0435\\u0434\\u043C\\u0438\\u0446\\u0430\",\n    day: \"\\u0414\\u0435\\u043D\",\n    list: \"\\u0413\\u0440\\u0430\\u0444\\u0438\\u043A\"\n  },\n  allDayText: \"\\u0426\\u044F\\u043B \\u0434\\u0435\\u043D\",\n  moreLinkText: function(n) {\n    return \"+\\u043E\\u0449\\u0435 \" + n;\n  },\n  noEventsText: \"\\u041D\\u044F\\u043C\\u0430 \\u0441\\u044A\\u0431\\u0438\\u0442\\u0438\\u044F \\u0437\\u0430 \\u043F\\u043E\\u043A\\u0430\\u0437\\u0432\\u0430\\u043D\\u0435\"\n};\n\nvar l10 = {\n  code: \"bn\",\n  week: {\n    dow: 0,\n    doy: 6\n  },\n  buttonText: {\n    prev: \"\\u09AA\\u09C7\\u099B\\u09A8\\u09C7\",\n    next: \"\\u09B8\\u09BE\\u09AE\\u09A8\\u09C7\",\n    today: \"\\u0986\\u099C\",\n    month: \"\\u09AE\\u09BE\\u09B8\",\n    week: \"\\u09B8\\u09AA\\u09CD\\u09A4\\u09BE\\u09B9\",\n    day: \"\\u09A6\\u09BF\\u09A8\",\n    list: \"\\u09A4\\u09BE\\u09B2\\u09BF\\u0995\\u09BE\"\n  },\n  weekText: \"\\u09B8\\u09AA\\u09CD\\u09A4\\u09BE\\u09B9\",\n  allDayText: \"\\u09B8\\u09BE\\u09B0\\u09BE\\u09A6\\u09BF\\u09A8\",\n  moreLinkText: function(n) {\n    return \"+\\u0985\\u09A8\\u09CD\\u09AF\\u09BE\\u09A8\\u09CD\\u09AF \" + n;\n  },\n  noEventsText: \"\\u0995\\u09CB\\u09A8\\u09CB \\u0987\\u09AD\\u09C7\\u09A8\\u09CD\\u099F \\u09A8\\u09C7\\u0987\"\n};\n\nvar l11 = {\n  code: \"bs\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"Pro\\u0161li\",\n    next: \"Sljede\\u0107i\",\n    today: \"Danas\",\n    month: \"Mjesec\",\n    week: \"Sedmica\",\n    day: \"Dan\",\n    list: \"Raspored\"\n  },\n  weekText: \"Sed\",\n  allDayText: \"Cijeli dan\",\n  moreLinkText: function(n) {\n    return \"+ jo\\u0161 \" + n;\n  },\n  noEventsText: \"Nema doga\\u0111aja za prikazivanje\"\n};\n\nvar l12 = {\n  code: \"ca\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Anterior\",\n    next: \"Seg\\xFCent\",\n    today: \"Avui\",\n    month: \"Mes\",\n    week: \"Setmana\",\n    day: \"Dia\",\n    list: \"Agenda\"\n  },\n  weekText: \"Set\",\n  allDayText: \"Tot el dia\",\n  moreLinkText: \"m\\xE9s\",\n  noEventsText: \"No hi ha esdeveniments per mostrar\"\n};\n\nvar l13 = {\n  code: \"cs\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"D\\u0159\\xEDve\",\n    next: \"Pozd\\u011Bji\",\n    today: \"Nyn\\xED\",\n    month: \"M\\u011Bs\\xEDc\",\n    week: \"T\\xFDden\",\n    day: \"Den\",\n    list: \"Agenda\"\n  },\n  weekText: \"T\\xFDd\",\n  allDayText: \"Cel\\xFD den\",\n  moreLinkText: function(n) {\n    return \"+dal\\u0161\\xED: \" + n;\n  },\n  noEventsText: \"\\u017D\\xE1dn\\xE9 akce k zobrazen\\xED\"\n};\n\nvar l14 = {\n  code: \"cy\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Blaenorol\",\n    next: \"Nesaf\",\n    today: \"Heddiw\",\n    year: \"Blwyddyn\",\n    month: \"Mis\",\n    week: \"Wythnos\",\n    day: \"Dydd\",\n    list: \"Rhestr\"\n  },\n  weekText: \"Wythnos\",\n  allDayText: \"Trwy'r dydd\",\n  moreLinkText: \"Mwy\",\n  noEventsText: \"Dim digwyddiadau\"\n};\n\nvar l15 = {\n  code: \"da\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Forrige\",\n    next: \"N\\xE6ste\",\n    today: \"I dag\",\n    month: \"M\\xE5ned\",\n    week: \"Uge\",\n    day: \"Dag\",\n    list: \"Agenda\"\n  },\n  weekText: \"Uge\",\n  allDayText: \"Hele dagen\",\n  moreLinkText: \"flere\",\n  noEventsText: \"Ingen arrangementer at vise\"\n};\n\nfunction affix$1(buttonText) {\n  return buttonText === \"Tag\" || buttonText === \"Monat\" ? \"r\" : buttonText === \"Jahr\" ? \"s\" : \"\";\n}\nvar l16 = {\n  code: \"de-at\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Zur\\xFCck\",\n    next: \"Vor\",\n    today: \"Heute\",\n    year: \"Jahr\",\n    month: \"Monat\",\n    week: \"Woche\",\n    day: \"Tag\",\n    list: \"Termin\\xFCbersicht\"\n  },\n  weekText: \"KW\",\n  weekTextLong: \"Woche\",\n  allDayText: \"Ganzt\\xE4gig\",\n  moreLinkText: function(n) {\n    return \"+ weitere \" + n;\n  },\n  noEventsText: \"Keine Ereignisse anzuzeigen\",\n  buttonHints: {\n    prev: function(buttonText) {\n      return \"Vorherige\".concat(affix$1(buttonText), \" \").concat(buttonText);\n    },\n    next: function(buttonText) {\n      return \"N\\xE4chste\".concat(affix$1(buttonText), \" \").concat(buttonText);\n    },\n    today: function(buttonText) {\n      if (buttonText === \"Tag\") {\n        return \"Heute\";\n      }\n      return \"Diese\".concat(affix$1(buttonText), \" \").concat(buttonText);\n    }\n  },\n  viewHint: function(buttonText) {\n    var glue = buttonText === \"Woche\" ? \"n\" : buttonText === \"Monat\" ? \"s\" : \"es\";\n    return buttonText + glue + \"ansicht\";\n  },\n  navLinkHint: \"Gehe zu $0\",\n  moreLinkHint: function(eventCnt) {\n    return \"Zeige \" + (eventCnt === 1 ? \"ein weiteres Ereignis\" : eventCnt + \" weitere Ereignisse\");\n  },\n  closeHint: \"Schlie\\xDFen\",\n  timeHint: \"Uhrzeit\",\n  eventHint: \"Ereignis\"\n};\n\nfunction affix(buttonText) {\n  return buttonText === \"Tag\" || buttonText === \"Monat\" ? \"r\" : buttonText === \"Jahr\" ? \"s\" : \"\";\n}\nvar l17 = {\n  code: \"de\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Zur\\xFCck\",\n    next: \"Vor\",\n    today: \"Heute\",\n    year: \"Jahr\",\n    month: \"Monat\",\n    week: \"Woche\",\n    day: \"Tag\",\n    list: \"Termin\\xFCbersicht\"\n  },\n  weekText: \"KW\",\n  weekTextLong: \"Woche\",\n  allDayText: \"Ganzt\\xE4gig\",\n  moreLinkText: function(n) {\n    return \"+ weitere \" + n;\n  },\n  noEventsText: \"Keine Ereignisse anzuzeigen\",\n  buttonHints: {\n    prev: function(buttonText) {\n      return \"Vorherige\".concat(affix(buttonText), \" \").concat(buttonText);\n    },\n    next: function(buttonText) {\n      return \"N\\xE4chste\".concat(affix(buttonText), \" \").concat(buttonText);\n    },\n    today: function(buttonText) {\n      if (buttonText === \"Tag\") {\n        return \"Heute\";\n      }\n      return \"Diese\".concat(affix(buttonText), \" \").concat(buttonText);\n    }\n  },\n  viewHint: function(buttonText) {\n    var glue = buttonText === \"Woche\" ? \"n\" : buttonText === \"Monat\" ? \"s\" : \"es\";\n    return buttonText + glue + \"ansicht\";\n  },\n  navLinkHint: \"Gehe zu $0\",\n  moreLinkHint: function(eventCnt) {\n    return \"Zeige \" + (eventCnt === 1 ? \"ein weiteres Ereignis\" : eventCnt + \" weitere Ereignisse\");\n  },\n  closeHint: \"Schlie\\xDFen\",\n  timeHint: \"Uhrzeit\",\n  eventHint: \"Ereignis\"\n};\n\nvar l18 = {\n  code: \"el\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u03A0\\u03C1\\u03BF\\u03B7\\u03B3\\u03BF\\u03CD\\u03BC\\u03B5\\u03BD\\u03BF\\u03C2\",\n    next: \"\\u0395\\u03C0\\u03CC\\u03BC\\u03B5\\u03BD\\u03BF\\u03C2\",\n    today: \"\\u03A3\\u03AE\\u03BC\\u03B5\\u03C1\\u03B1\",\n    month: \"\\u039C\\u03AE\\u03BD\\u03B1\\u03C2\",\n    week: \"\\u0395\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B1\",\n    day: \"\\u0397\\u03BC\\u03AD\\u03C1\\u03B1\",\n    list: \"\\u0391\\u03C4\\u03B6\\u03AD\\u03BD\\u03C4\\u03B1\"\n  },\n  weekText: \"\\u0395\\u03B2\\u03B4\",\n  allDayText: \"\\u039F\\u03BB\\u03BF\\u03AE\\u03BC\\u03B5\\u03C1\\u03BF\",\n  moreLinkText: \"\\u03C0\\u03B5\\u03C1\\u03B9\\u03C3\\u03C3\\u03CC\\u03C4\\u03B5\\u03C1\\u03B1\",\n  noEventsText: \"\\u0394\\u03B5\\u03BD \\u03C5\\u03C0\\u03AC\\u03C1\\u03C7\\u03BF\\u03C5\\u03BD \\u03B3\\u03B5\\u03B3\\u03BF\\u03BD\\u03CC\\u03C4\\u03B1 \\u03C0\\u03C1\\u03BF\\u03C2 \\u03B5\\u03BC\\u03C6\\u03AC\\u03BD\\u03B9\\u03C3\\u03B7\"\n};\n\nvar l19 = {\n  code: \"en-au\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonHints: {\n    prev: \"Previous $0\",\n    next: \"Next $0\",\n    today: \"This $0\"\n  },\n  viewHint: \"$0 view\",\n  navLinkHint: \"Go to $0\",\n  moreLinkHint: function(eventCnt) {\n    return \"Show \".concat(eventCnt, \" more event\").concat(eventCnt === 1 ? \"\" : \"s\");\n  }\n};\n\nvar l20 = {\n  code: \"en-gb\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonHints: {\n    prev: \"Previous $0\",\n    next: \"Next $0\",\n    today: \"This $0\"\n  },\n  viewHint: \"$0 view\",\n  navLinkHint: \"Go to $0\",\n  moreLinkHint: function(eventCnt) {\n    return \"Show \".concat(eventCnt, \" more event\").concat(eventCnt === 1 ? \"\" : \"s\");\n  }\n};\n\nvar l21 = {\n  code: \"en-nz\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonHints: {\n    prev: \"Previous $0\",\n    next: \"Next $0\",\n    today: \"This $0\"\n  },\n  viewHint: \"$0 view\",\n  navLinkHint: \"Go to $0\",\n  moreLinkHint: function(eventCnt) {\n    return \"Show \".concat(eventCnt, \" more event\").concat(eventCnt === 1 ? \"\" : \"s\");\n  }\n};\n\nvar l22 = {\n  code: \"eo\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Anta\\u016Da\",\n    next: \"Sekva\",\n    today: \"Hodia\\u016D\",\n    month: \"Monato\",\n    week: \"Semajno\",\n    day: \"Tago\",\n    list: \"Tagordo\"\n  },\n  weekText: \"Sm\",\n  allDayText: \"Tuta tago\",\n  moreLinkText: \"pli\",\n  noEventsText: \"Neniuj eventoj por montri\"\n};\n\nvar l23 = {\n  code: \"es\",\n  week: {\n    dow: 0,\n    doy: 6\n  },\n  buttonText: {\n    prev: \"Ant\",\n    next: \"Sig\",\n    today: \"Hoy\",\n    month: \"Mes\",\n    week: \"Semana\",\n    day: \"D\\xEDa\",\n    list: \"Agenda\"\n  },\n  weekText: \"Sm\",\n  allDayText: \"Todo el d\\xEDa\",\n  moreLinkText: \"m\\xE1s\",\n  noEventsText: \"No hay eventos para mostrar\"\n};\n\nvar l24 = {\n  code: \"es\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Ant\",\n    next: \"Sig\",\n    today: \"Hoy\",\n    month: \"Mes\",\n    week: \"Semana\",\n    day: \"D\\xEDa\",\n    list: \"Agenda\"\n  },\n  buttonHints: {\n    prev: \"$0 antes\",\n    next: \"$0 siguiente\",\n    today: function(buttonText) {\n      return buttonText === \"D\\xEDa\" ? \"Hoy\" : (buttonText === \"Semana\" ? \"Esta\" : \"Este\") + \" \" + buttonText.toLocaleLowerCase();\n    }\n  },\n  viewHint: function(buttonText) {\n    return \"Vista \" + (buttonText === \"Semana\" ? \"de la\" : \"del\") + \" \" + buttonText.toLocaleLowerCase();\n  },\n  weekText: \"Sm\",\n  weekTextLong: \"Semana\",\n  allDayText: \"Todo el d\\xEDa\",\n  moreLinkText: \"m\\xE1s\",\n  moreLinkHint: function(eventCnt) {\n    return \"Mostrar \".concat(eventCnt, \" eventos m\\xE1s\");\n  },\n  noEventsText: \"No hay eventos para mostrar\",\n  navLinkHint: \"Ir al $0\",\n  closeHint: \"Cerrar\",\n  timeHint: \"La hora\",\n  eventHint: \"Evento\"\n};\n\nvar l25 = {\n  code: \"et\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Eelnev\",\n    next: \"J\\xE4rgnev\",\n    today: \"T\\xE4na\",\n    month: \"Kuu\",\n    week: \"N\\xE4dal\",\n    day: \"P\\xE4ev\",\n    list: \"P\\xE4evakord\"\n  },\n  weekText: \"n\\xE4d\",\n  allDayText: \"Kogu p\\xE4ev\",\n  moreLinkText: function(n) {\n    return \"+ veel \" + n;\n  },\n  noEventsText: \"Kuvamiseks puuduvad s\\xFCndmused\"\n};\n\nvar l26 = {\n  code: \"eu\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"Aur\",\n    next: \"Hur\",\n    today: \"Gaur\",\n    month: \"Hilabetea\",\n    week: \"Astea\",\n    day: \"Eguna\",\n    list: \"Agenda\"\n  },\n  weekText: \"As\",\n  allDayText: \"Egun osoa\",\n  moreLinkText: \"gehiago\",\n  noEventsText: \"Ez dago ekitaldirik erakusteko\"\n};\n\nvar l27 = {\n  code: \"fa\",\n  week: {\n    dow: 6,\n    doy: 12\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u0642\\u0628\\u0644\\u06CC\",\n    next: \"\\u0628\\u0639\\u062F\\u06CC\",\n    today: \"\\u0627\\u0645\\u0631\\u0648\\u0632\",\n    month: \"\\u0645\\u0627\\u0647\",\n    week: \"\\u0647\\u0641\\u062A\\u0647\",\n    day: \"\\u0631\\u0648\\u0632\",\n    list: \"\\u0628\\u0631\\u0646\\u0627\\u0645\\u0647\"\n  },\n  weekText: \"\\u0647\\u0641\",\n  allDayText: \"\\u062A\\u0645\\u0627\\u0645 \\u0631\\u0648\\u0632\",\n  moreLinkText: function(n) {\n    return \"\\u0628\\u06CC\\u0634 \\u0627\\u0632 \" + n;\n  },\n  noEventsText: \"\\u0647\\u06CC\\u0686 \\u0631\\u0648\\u06CC\\u062F\\u0627\\u062F\\u06CC \\u0628\\u0647 \\u0646\\u0645\\u0627\\u06CC\\u0634\"\n};\n\nvar l28 = {\n  code: \"fi\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Edellinen\",\n    next: \"Seuraava\",\n    today: \"T\\xE4n\\xE4\\xE4n\",\n    month: \"Kuukausi\",\n    week: \"Viikko\",\n    day: \"P\\xE4iv\\xE4\",\n    list: \"Tapahtumat\"\n  },\n  weekText: \"Vk\",\n  allDayText: \"Koko p\\xE4iv\\xE4\",\n  moreLinkText: \"lis\\xE4\\xE4\",\n  noEventsText: \"Ei n\\xE4ytett\\xE4vi\\xE4 tapahtumia\"\n};\n\nvar l29 = {\n  code: \"fr\",\n  buttonText: {\n    prev: \"Pr\\xE9c\\xE9dent\",\n    next: \"Suivant\",\n    today: \"Aujourd'hui\",\n    year: \"Ann\\xE9e\",\n    month: \"Mois\",\n    week: \"Semaine\",\n    day: \"Jour\",\n    list: \"Mon planning\"\n  },\n  weekText: \"Sem.\",\n  allDayText: \"Toute la journ\\xE9e\",\n  moreLinkText: \"en plus\",\n  noEventsText: \"Aucun \\xE9v\\xE9nement \\xE0 afficher\"\n};\n\nvar l30 = {\n  code: \"fr-ch\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Pr\\xE9c\\xE9dent\",\n    next: \"Suivant\",\n    today: \"Courant\",\n    year: \"Ann\\xE9e\",\n    month: \"Mois\",\n    week: \"Semaine\",\n    day: \"Jour\",\n    list: \"Mon planning\"\n  },\n  weekText: \"Sm\",\n  allDayText: \"Toute la journ\\xE9e\",\n  moreLinkText: \"en plus\",\n  noEventsText: \"Aucun \\xE9v\\xE9nement \\xE0 afficher\"\n};\n\nvar l31 = {\n  code: \"fr\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Pr\\xE9c\\xE9dent\",\n    next: \"Suivant\",\n    today: \"Aujourd'hui\",\n    year: \"Ann\\xE9e\",\n    month: \"Mois\",\n    week: \"Semaine\",\n    day: \"Jour\",\n    list: \"Planning\"\n  },\n  weekText: \"Sem.\",\n  allDayText: \"Toute la journ\\xE9e\",\n  moreLinkText: \"en plus\",\n  noEventsText: \"Aucun \\xE9v\\xE9nement \\xE0 afficher\"\n};\n\nvar l32 = {\n  code: \"gl\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Ant\",\n    next: \"Seg\",\n    today: \"Hoxe\",\n    month: \"Mes\",\n    week: \"Semana\",\n    day: \"D\\xEDa\",\n    list: \"Axenda\"\n  },\n  weekText: \"Sm\",\n  allDayText: \"Todo o d\\xEDa\",\n  moreLinkText: \"m\\xE1is\",\n  noEventsText: \"Non hai eventos para amosar\"\n};\n\nvar l33 = {\n  code: \"he\",\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u05D4\\u05E7\\u05D5\\u05D3\\u05DD\",\n    next: \"\\u05D4\\u05D1\\u05D0\",\n    today: \"\\u05D4\\u05D9\\u05D5\\u05DD\",\n    month: \"\\u05D7\\u05D5\\u05D3\\u05E9\",\n    week: \"\\u05E9\\u05D1\\u05D5\\u05E2\",\n    day: \"\\u05D9\\u05D5\\u05DD\",\n    list: \"\\u05E1\\u05D3\\u05E8 \\u05D9\\u05D5\\u05DD\"\n  },\n  allDayText: \"\\u05DB\\u05DC \\u05D4\\u05D9\\u05D5\\u05DD\",\n  moreLinkText: \"\\u05D0\\u05D7\\u05E8\",\n  noEventsText: \"\\u05D0\\u05D9\\u05DF \\u05D0\\u05D9\\u05E8\\u05D5\\u05E2\\u05D9\\u05DD \\u05DC\\u05D4\\u05E6\\u05D2\\u05D4\",\n  weekText: \"\\u05E9\\u05D1\\u05D5\\u05E2\"\n};\n\nvar l34 = {\n  code: \"hi\",\n  week: {\n    dow: 0,\n    doy: 6\n  },\n  buttonText: {\n    prev: \"\\u092A\\u093F\\u091B\\u0932\\u093E\",\n    next: \"\\u0905\\u0917\\u0932\\u093E\",\n    today: \"\\u0906\\u091C\",\n    month: \"\\u092E\\u0939\\u0940\\u0928\\u093E\",\n    week: \"\\u0938\\u092A\\u094D\\u0924\\u093E\\u0939\",\n    day: \"\\u0926\\u093F\\u0928\",\n    list: \"\\u0915\\u093E\\u0930\\u094D\\u092F\\u0938\\u0942\\u091A\\u0940\"\n  },\n  weekText: \"\\u0939\\u092B\\u094D\\u0924\\u093E\",\n  allDayText: \"\\u0938\\u092D\\u0940 \\u0926\\u093F\\u0928\",\n  moreLinkText: function(n) {\n    return \"+\\u0905\\u0927\\u093F\\u0915 \" + n;\n  },\n  noEventsText: \"\\u0915\\u094B\\u0908 \\u0918\\u091F\\u0928\\u093E\\u0913\\u0902 \\u0915\\u094B \\u092A\\u094D\\u0930\\u0926\\u0930\\u094D\\u0936\\u093F\\u0924 \\u0915\\u0930\\u0928\\u0947 \\u0915\\u0947 \\u0932\\u093F\\u090F\"\n};\n\nvar l35 = {\n  code: \"hr\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"Prija\\u0161nji\",\n    next: \"Sljede\\u0107i\",\n    today: \"Danas\",\n    month: \"Mjesec\",\n    week: \"Tjedan\",\n    day: \"Dan\",\n    list: \"Raspored\"\n  },\n  weekText: \"Tje\",\n  allDayText: \"Cijeli dan\",\n  moreLinkText: function(n) {\n    return \"+ jo\\u0161 \" + n;\n  },\n  noEventsText: \"Nema doga\\u0111aja za prikaz\"\n};\n\nvar l36 = {\n  code: \"hu\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"vissza\",\n    next: \"el\\u0151re\",\n    today: \"ma\",\n    month: \"H\\xF3nap\",\n    week: \"H\\xE9t\",\n    day: \"Nap\",\n    list: \"Lista\"\n  },\n  weekText: \"H\\xE9t\",\n  allDayText: \"Eg\\xE9sz nap\",\n  moreLinkText: \"tov\\xE1bbi\",\n  noEventsText: \"Nincs megjelen\\xEDthet\\u0151 esem\\xE9ny\"\n};\n\nvar l37 = {\n  code: \"hy-am\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u0546\\u0561\\u056D\\u0578\\u0580\\u0564\",\n    next: \"\\u0540\\u0561\\u057B\\u0578\\u0580\\u0564\",\n    today: \"\\u0531\\u0575\\u057D\\u0585\\u0580\",\n    month: \"\\u0531\\u0574\\u056B\\u057D\",\n    week: \"\\u0547\\u0561\\u0562\\u0561\\u0569\",\n    day: \"\\u0555\\u0580\",\n    list: \"\\u0555\\u0580\\u057E\\u0561 \\u0581\\u0578\\u0582\\u0581\\u0561\\u056F\"\n  },\n  weekText: \"\\u0547\\u0561\\u0562\",\n  allDayText: \"\\u0531\\u0574\\u0562\\u0578\\u0572\\u057B \\u0585\\u0580\",\n  moreLinkText: function(n) {\n    return \"+ \\u0587\\u057D \" + n;\n  },\n  noEventsText: \"\\u0532\\u0561\\u0581\\u0561\\u056F\\u0561\\u0575\\u0578\\u0582\\u0574 \\u0567 \\u056B\\u0580\\u0561\\u0564\\u0561\\u0580\\u0571\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0568 \\u0581\\u0578\\u0582\\u0581\\u0561\\u0564\\u0580\\u0565\\u056C\\u0578\\u0582\"\n};\n\nvar l38 = {\n  code: \"id\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"mundur\",\n    next: \"maju\",\n    today: \"hari ini\",\n    month: \"Bulan\",\n    week: \"Minggu\",\n    day: \"Hari\",\n    list: \"Agenda\"\n  },\n  weekText: \"Mg\",\n  allDayText: \"Sehari penuh\",\n  moreLinkText: \"lebih\",\n  noEventsText: \"Tidak ada acara untuk ditampilkan\"\n};\n\nvar l39 = {\n  code: \"is\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Fyrri\",\n    next: \"N\\xE6sti\",\n    today: \"\\xCD dag\",\n    month: \"M\\xE1nu\\xF0ur\",\n    week: \"Vika\",\n    day: \"Dagur\",\n    list: \"Dagskr\\xE1\"\n  },\n  weekText: \"Vika\",\n  allDayText: \"Allan daginn\",\n  moreLinkText: \"meira\",\n  noEventsText: \"Engir vi\\xF0bur\\xF0ir til a\\xF0 s\\xFDna\"\n};\n\nvar l40 = {\n  code: \"it\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Prec\",\n    next: \"Succ\",\n    today: \"Oggi\",\n    month: \"Mese\",\n    week: \"Settimana\",\n    day: \"Giorno\",\n    list: \"Agenda\"\n  },\n  weekText: \"Sm\",\n  allDayText: \"Tutto il giorno\",\n  moreLinkText: function(n) {\n    return \"+altri \" + n;\n  },\n  noEventsText: \"Non ci sono eventi da visualizzare\"\n};\n\nvar l41 = {\n  code: \"ja\",\n  buttonText: {\n    prev: \"\\u524D\",\n    next: \"\\u6B21\",\n    today: \"\\u4ECA\\u65E5\",\n    month: \"\\u6708\",\n    week: \"\\u9031\",\n    day: \"\\u65E5\",\n    list: \"\\u4E88\\u5B9A\\u30EA\\u30B9\\u30C8\"\n  },\n  weekText: \"\\u9031\",\n  allDayText: \"\\u7D42\\u65E5\",\n  moreLinkText: function(n) {\n    return \"\\u4ED6 \" + n + \" \\u4EF6\";\n  },\n  noEventsText: \"\\u8868\\u793A\\u3059\\u308B\\u4E88\\u5B9A\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\"\n};\n\nvar l42 = {\n  code: \"ka\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"\\u10EC\\u10D8\\u10DC\\u10D0\",\n    next: \"\\u10E8\\u10D4\\u10DB\\u10D3\\u10D4\\u10D2\\u10D8\",\n    today: \"\\u10D3\\u10E6\\u10D4\\u10E1\",\n    month: \"\\u10D7\\u10D5\\u10D4\",\n    week: \"\\u10D9\\u10D5\\u10D8\\u10E0\\u10D0\",\n    day: \"\\u10D3\\u10E6\\u10D4\",\n    list: \"\\u10D3\\u10E6\\u10D8\\u10E1 \\u10EC\\u10D4\\u10E1\\u10E0\\u10D8\\u10D2\\u10D8\"\n  },\n  weekText: \"\\u10D9\\u10D5\",\n  allDayText: \"\\u10DB\\u10D7\\u10D4\\u10DA\\u10D8 \\u10D3\\u10E6\\u10D4\",\n  moreLinkText: function(n) {\n    return \"+ \\u10D9\\u10D8\\u10D3\\u10D4\\u10D5 \" + n;\n  },\n  noEventsText: \"\\u10E6\\u10DD\\u10DC\\u10D8\\u10E1\\u10EB\\u10D8\\u10D4\\u10D1\\u10D4\\u10D1\\u10D8 \\u10D0\\u10E0 \\u10D0\\u10E0\\u10D8\\u10E1\"\n};\n\nvar l43 = {\n  code: \"kk\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"\\u0410\\u043B\\u0434\\u044B\\u04A3\\u0493\\u044B\",\n    next: \"\\u041A\\u0435\\u043B\\u0435\\u0441\\u0456\",\n    today: \"\\u0411\\u04AF\\u0433\\u0456\\u043D\",\n    month: \"\\u0410\\u0439\",\n    week: \"\\u0410\\u043F\\u0442\\u0430\",\n    day: \"\\u041A\\u04AF\\u043D\",\n    list: \"\\u041A\\u04AF\\u043D \\u0442\\u04D9\\u0440\\u0442\\u0456\\u0431\\u0456\"\n  },\n  weekText: \"\\u041D\\u0435\",\n  allDayText: \"\\u041A\\u04AF\\u043D\\u0456 \\u0431\\u043E\\u0439\\u044B\",\n  moreLinkText: function(n) {\n    return \"+ \\u0442\\u0430\\u0493\\u044B \" + n;\n  },\n  noEventsText: \"\\u041A\\u04E9\\u0440\\u0441\\u0435\\u0442\\u0443 \\u04AF\\u0448\\u0456\\u043D \\u043E\\u049B\\u0438\\u0493\\u0430\\u043B\\u0430\\u0440 \\u0436\\u043E\\u049B\"\n};\n\nvar l44 = {\n  code: \"km\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u1798\\u17BB\\u1793\",\n    next: \"\\u1794\\u1793\\u17D2\\u1791\\u17B6\\u1794\\u17CB\",\n    today: \"\\u1790\\u17D2\\u1784\\u17C3\\u1793\\u17C1\\u17C7\",\n    year: \"\\u1786\\u17D2\\u1793\\u17B6\\u17C6\",\n    month: \"\\u1781\\u17C2\",\n    week: \"\\u179F\\u1794\\u17D2\\u178F\\u17B6\\u17A0\\u17CD\",\n    day: \"\\u1790\\u17D2\\u1784\\u17C3\",\n    list: \"\\u1794\\u1789\\u17D2\\u1787\\u17B8\"\n  },\n  weekText: \"\\u179F\\u1794\\u17D2\\u178F\\u17B6\\u17A0\\u17CD\",\n  allDayText: \"\\u1796\\u17C1\\u1789\\u1798\\u17BD\\u1799\\u1790\\u17D2\\u1784\\u17C3\",\n  moreLinkText: \"\\u1785\\u17D2\\u179A\\u17BE\\u1793\\u1791\\u17C0\\u178F\",\n  noEventsText: \"\\u1782\\u17D2\\u1798\\u17B6\\u1793\\u1796\\u17D2\\u179A\\u17B9\\u178F\\u17D2\\u178F\\u17B7\\u1780\\u17B6\\u179A\\u178E\\u17CD\\u178F\\u17D2\\u179A\\u17BC\\u179C\\u1794\\u1784\\u17D2\\u17A0\\u17B6\\u1789\"\n};\n\nvar l45 = {\n  code: \"ko\",\n  buttonText: {\n    prev: \"\\uC774\\uC804\\uB2EC\",\n    next: \"\\uB2E4\\uC74C\\uB2EC\",\n    today: \"\\uC624\\uB298\",\n    month: \"\\uC6D4\",\n    week: \"\\uC8FC\",\n    day: \"\\uC77C\",\n    list: \"\\uC77C\\uC815\\uBAA9\\uB85D\"\n  },\n  weekText: \"\\uC8FC\",\n  allDayText: \"\\uC885\\uC77C\",\n  moreLinkText: \"\\uAC1C\",\n  noEventsText: \"\\uC77C\\uC815\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4\"\n};\n\nvar l46 = {\n  code: \"ku\",\n  week: {\n    dow: 6,\n    doy: 12\n  },\n  direction: \"rtl\",\n  buttonText: {\n    prev: \"\\u067E\\u06CE\\u0634\\u062A\\u0631\",\n    next: \"\\u062F\\u0648\\u0627\\u062A\\u0631\",\n    today: \"\\u0626\\u06D5\\u0645\\u0695\\u0648\",\n    month: \"\\u0645\\u0627\\u0646\\u06AF\",\n    week: \"\\u0647\\u06D5\\u0641\\u062A\\u06D5\",\n    day: \"\\u0695\\u06C6\\u0698\",\n    list: \"\\u0628\\u06D5\\u0631\\u0646\\u0627\\u0645\\u06D5\"\n  },\n  weekText: \"\\u0647\\u06D5\\u0641\\u062A\\u06D5\",\n  allDayText: \"\\u0647\\u06D5\\u0645\\u0648\\u0648 \\u0695\\u06C6\\u0698\\u06D5\\u06A9\\u06D5\",\n  moreLinkText: \"\\u0632\\u06CC\\u0627\\u062A\\u0631\",\n  noEventsText: \"\\u0647\\u06CC\\u0686 \\u0695\\u0648\\u0648\\u062F\\u0627\\u0648\\u06CE\\u0643 \\u0646\\u06CC\\u06D5\"\n};\n\nvar l47 = {\n  code: \"lb\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Zr\\xE9ck\",\n    next: \"Weider\",\n    today: \"Haut\",\n    month: \"Mount\",\n    week: \"Woch\",\n    day: \"Dag\",\n    list: \"Terminiwwersiicht\"\n  },\n  weekText: \"W\",\n  allDayText: \"Ganzen Dag\",\n  moreLinkText: \"m\\xE9i\",\n  noEventsText: \"Nee Evenementer ze affich\\xE9ieren\"\n};\n\nvar l48 = {\n  code: \"lt\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Atgal\",\n    next: \"Pirmyn\",\n    today: \"\\u0160iandien\",\n    month: \"M\\u0117nuo\",\n    week: \"Savait\\u0117\",\n    day: \"Diena\",\n    list: \"Darbotvark\\u0117\"\n  },\n  weekText: \"SAV\",\n  allDayText: \"Vis\\u0105 dien\\u0105\",\n  moreLinkText: \"daugiau\",\n  noEventsText: \"N\\u0117ra \\u012Fvyki\\u0173 rodyti\"\n};\n\nvar l49 = {\n  code: \"lv\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Iepr.\",\n    next: \"N\\u0101k.\",\n    today: \"\\u0160odien\",\n    month: \"M\\u0113nesis\",\n    week: \"Ned\\u0113\\u013Ca\",\n    day: \"Diena\",\n    list: \"Dienas k\\u0101rt\\u012Bba\"\n  },\n  weekText: \"Ned.\",\n  allDayText: \"Visu dienu\",\n  moreLinkText: function(n) {\n    return \"+v\\u0113l \" + n;\n  },\n  noEventsText: \"Nav notikumu\"\n};\n\nvar l50 = {\n  code: \"mk\",\n  buttonText: {\n    prev: \"\\u043F\\u0440\\u0435\\u0442\\u0445\\u043E\\u0434\\u043D\\u043E\",\n    next: \"\\u0441\\u043B\\u0435\\u0434\\u043D\\u043E\",\n    today: \"\\u0414\\u0435\\u043D\\u0435\\u0441\",\n    month: \"\\u041C\\u0435\\u0441\\u0435\\u0446\",\n    week: \"\\u041D\\u0435\\u0434\\u0435\\u043B\\u0430\",\n    day: \"\\u0414\\u0435\\u043D\",\n    list: \"\\u0413\\u0440\\u0430\\u0444\\u0438\\u043A\"\n  },\n  weekText: \"\\u0421\\u0435\\u0434\",\n  allDayText: \"\\u0426\\u0435\\u043B \\u0434\\u0435\\u043D\",\n  moreLinkText: function(n) {\n    return \"+\\u043F\\u043E\\u0432\\u0435\\u045C\\u0435 \" + n;\n  },\n  noEventsText: \"\\u041D\\u0435\\u043C\\u0430 \\u043D\\u0430\\u0441\\u0442\\u0430\\u043D\\u0438 \\u0437\\u0430 \\u043F\\u0440\\u0438\\u043A\\u0430\\u0436\\u0443\\u0432\\u0430\\u045A\\u0435\"\n};\n\nvar l51 = {\n  code: \"ms\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"Sebelum\",\n    next: \"Selepas\",\n    today: \"hari ini\",\n    month: \"Bulan\",\n    week: \"Minggu\",\n    day: \"Hari\",\n    list: \"Agenda\"\n  },\n  weekText: \"Mg\",\n  allDayText: \"Sepanjang hari\",\n  moreLinkText: function(n) {\n    return \"masih ada \" + n + \" acara\";\n  },\n  noEventsText: \"Tiada peristiwa untuk dipaparkan\"\n};\n\nvar l52 = {\n  code: \"nb\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Forrige\",\n    next: \"Neste\",\n    today: \"I dag\",\n    month: \"M\\xE5ned\",\n    week: \"Uke\",\n    day: \"Dag\",\n    list: \"Agenda\"\n  },\n  weekText: \"Uke\",\n  weekTextLong: \"Uke\",\n  allDayText: \"Hele dagen\",\n  moreLinkText: \"til\",\n  noEventsText: \"Ingen hendelser \\xE5 vise\",\n  buttonHints: {\n    prev: \"Forrige $0\",\n    next: \"Neste $0\",\n    today: \"N\\xE5v\\xE6rende $0\"\n  },\n  viewHint: \"$0 visning\",\n  navLinkHint: \"G\\xE5 til $0\",\n  moreLinkHint: function(eventCnt) {\n    return \"Vis \".concat(eventCnt, \" flere hendelse\").concat(eventCnt === 1 ? \"\" : \"r\");\n  }\n};\n\nvar l53 = {\n  code: \"ne\",\n  week: {\n    dow: 7,\n    doy: 1\n  },\n  buttonText: {\n    prev: \"\\u0905\\u0918\\u093F\\u0932\\u094D\\u0932\\u094B\",\n    next: \"\\u0905\\u0930\\u094D\\u0915\\u094B\",\n    today: \"\\u0906\\u091C\",\n    month: \"\\u092E\\u0939\\u093F\\u0928\\u093E\",\n    week: \"\\u0939\\u092A\\u094D\\u0924\\u093E\",\n    day: \"\\u0926\\u093F\\u0928\",\n    list: \"\\u0938\\u0942\\u091A\\u0940\"\n  },\n  weekText: \"\\u0939\\u092A\\u094D\\u0924\\u093E\",\n  allDayText: \"\\u0926\\u093F\\u0928\\u092D\\u0930\\u093F\",\n  moreLinkText: \"\\u0925\\u092A \\u0932\\u093F\\u0902\\u0915\",\n  noEventsText: \"\\u0926\\u0947\\u0916\\u093E\\u0909\\u0928\\u0915\\u094B \\u0932\\u093E\\u0917\\u093F \\u0915\\u0941\\u0928\\u0948 \\u0918\\u091F\\u0928\\u093E\\u0939\\u0930\\u0942 \\u091B\\u0948\\u0928\\u0928\\u094D\"\n};\n\nvar l54 = {\n  code: \"nl\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Vorige\",\n    next: \"Volgende\",\n    today: \"Vandaag\",\n    year: \"Jaar\",\n    month: \"Maand\",\n    week: \"Week\",\n    day: \"Dag\",\n    list: \"Agenda\"\n  },\n  allDayText: \"Hele dag\",\n  moreLinkText: \"extra\",\n  noEventsText: \"Geen evenementen om te laten zien\"\n};\n\nvar l55 = {\n  code: \"nn\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"F\\xF8rre\",\n    next: \"Neste\",\n    today: \"I dag\",\n    month: \"M\\xE5nad\",\n    week: \"Veke\",\n    day: \"Dag\",\n    list: \"Agenda\"\n  },\n  weekText: \"Veke\",\n  allDayText: \"Heile dagen\",\n  moreLinkText: \"til\",\n  noEventsText: \"Ingen hendelser \\xE5 vise\"\n};\n\nvar l56 = {\n  code: \"pl\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Poprzedni\",\n    next: \"Nast\\u0119pny\",\n    today: \"Dzi\\u015B\",\n    month: \"Miesi\\u0105c\",\n    week: \"Tydzie\\u0144\",\n    day: \"Dzie\\u0144\",\n    list: \"Plan dnia\"\n  },\n  weekText: \"Tydz\",\n  allDayText: \"Ca\\u0142y dzie\\u0144\",\n  moreLinkText: \"wi\\u0119cej\",\n  noEventsText: \"Brak wydarze\\u0144 do wy\\u015Bwietlenia\"\n};\n\nvar l57 = {\n  code: \"pt-br\",\n  buttonText: {\n    prev: \"Anterior\",\n    next: \"Pr\\xF3ximo\",\n    today: \"Hoje\",\n    month: \"M\\xEAs\",\n    week: \"Semana\",\n    day: \"Dia\",\n    list: \"Lista\"\n  },\n  weekText: \"Sm\",\n  allDayText: \"dia inteiro\",\n  moreLinkText: function(n) {\n    return \"mais +\" + n;\n  },\n  noEventsText: \"N\\xE3o h\\xE1 eventos para mostrar\"\n};\n\nvar l58 = {\n  code: \"pt\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Anterior\",\n    next: \"Seguinte\",\n    today: \"Hoje\",\n    month: \"M\\xEAs\",\n    week: \"Semana\",\n    day: \"Dia\",\n    list: \"Agenda\"\n  },\n  weekText: \"Sem\",\n  allDayText: \"Todo o dia\",\n  moreLinkText: \"mais\",\n  noEventsText: \"N\\xE3o h\\xE1 eventos para mostrar\"\n};\n\nvar l59 = {\n  code: \"ro\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"precedent\\u0103\",\n    next: \"urm\\u0103toare\",\n    today: \"Azi\",\n    month: \"Lun\\u0103\",\n    week: \"S\\u0103pt\\u0103m\\xE2n\\u0103\",\n    day: \"Zi\",\n    list: \"Agend\\u0103\"\n  },\n  weekText: \"S\\u0103pt\",\n  allDayText: \"Toat\\u0103 ziua\",\n  moreLinkText: function(n) {\n    return \"+alte \" + n;\n  },\n  noEventsText: \"Nu exist\\u0103 evenimente de afi\\u0219at\"\n};\n\nvar l60 = {\n  code: \"ru\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u041F\\u0440\\u0435\\u0434\",\n    next: \"\\u0421\\u043B\\u0435\\u0434\",\n    today: \"\\u0421\\u0435\\u0433\\u043E\\u0434\\u043D\\u044F\",\n    month: \"\\u041C\\u0435\\u0441\\u044F\\u0446\",\n    week: \"\\u041D\\u0435\\u0434\\u0435\\u043B\\u044F\",\n    day: \"\\u0414\\u0435\\u043D\\u044C\",\n    list: \"\\u041F\\u043E\\u0432\\u0435\\u0441\\u0442\\u043A\\u0430 \\u0434\\u043D\\u044F\"\n  },\n  weekText: \"\\u041D\\u0435\\u0434\",\n  allDayText: \"\\u0412\\u0435\\u0441\\u044C \\u0434\\u0435\\u043D\\u044C\",\n  moreLinkText: function(n) {\n    return \"+ \\u0435\\u0449\\u0451 \" + n;\n  },\n  noEventsText: \"\\u041D\\u0435\\u0442 \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0439 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F\"\n};\n\nvar l61 = {\n  code: \"si-lk\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u0DB4\\u0DD9\\u0DBB\",\n    next: \"\\u0DB4\\u0DC3\\u0DD4\",\n    today: \"\\u0D85\\u0DAF\",\n    month: \"\\u0DB8\\u0DCF\\u0DC3\\u0DBA\",\n    week: \"\\u0DC3\\u0DAD\\u0DD2\\u0DBA\",\n    day: \"\\u0DAF\\u0DC0\\u0DC3\",\n    list: \"\\u0DBD\\u0DD0\\u0DBA\\u0DD2\\u0DC3\\u0DCA\\u0DAD\\u0DD4\\u0DC0\"\n  },\n  weekText: \"\\u0DC3\\u0DAD\\u0DD2\",\n  allDayText: \"\\u0DC3\\u0DD2\\u0DBA\\u0DBD\\u0DD4\",\n  moreLinkText: \"\\u0DAD\\u0DC0\\u0DAD\\u0DCA\",\n  noEventsText: \"\\u0DB8\\u0DD4\\u0D9A\\u0DD4\\u0DAD\\u0DCA \\u0DB1\\u0DD0\\u0DAD\"\n};\n\nvar l62 = {\n  code: \"sk\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Predch\\xE1dzaj\\xFAci\",\n    next: \"Nasleduj\\xFAci\",\n    today: \"Dnes\",\n    month: \"Mesiac\",\n    week: \"T\\xFD\\u017Ede\\u0148\",\n    day: \"De\\u0148\",\n    list: \"Rozvrh\"\n  },\n  weekText: \"Ty\",\n  allDayText: \"Cel\\xFD de\\u0148\",\n  moreLinkText: function(n) {\n    return \"+\\u010Fal\\u0161ie: \" + n;\n  },\n  noEventsText: \"\\u017Diadne akcie na zobrazenie\"\n};\n\nvar l63 = {\n  code: \"sl\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"Prej\\u0161nji\",\n    next: \"Naslednji\",\n    today: \"Trenutni\",\n    month: \"Mesec\",\n    week: \"Teden\",\n    day: \"Dan\",\n    list: \"Dnevni red\"\n  },\n  weekText: \"Teden\",\n  allDayText: \"Ves dan\",\n  moreLinkText: \"ve\\u010D\",\n  noEventsText: \"Ni dogodkov za prikaz\"\n};\n\nvar l64 = {\n  code: \"sm\",\n  buttonText: {\n    prev: \"Talu ai\",\n    next: \"Mulimuli atu\",\n    today: \"Aso nei\",\n    month: \"Masina\",\n    week: \"Vaiaso\",\n    day: \"Aso\",\n    list: \"Faasologa\"\n  },\n  weekText: \"Vaiaso\",\n  allDayText: \"Aso atoa\",\n  moreLinkText: \"sili atu\",\n  noEventsText: \"Leai ni mea na tutupu\"\n};\n\nvar l65 = {\n  code: \"sq\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"mbrapa\",\n    next: \"P\\xEBrpara\",\n    today: \"sot\",\n    month: \"Muaj\",\n    week: \"Jav\\xEB\",\n    day: \"Dit\\xEB\",\n    list: \"List\\xEB\"\n  },\n  weekText: \"Ja\",\n  allDayText: \"Gjith\\xEB dit\\xEBn\",\n  moreLinkText: function(n) {\n    return \"+m\\xEB tep\\xEBr \" + n;\n  },\n  noEventsText: \"Nuk ka evente p\\xEBr t\\xEB shfaqur\"\n};\n\nvar l66 = {\n  code: \"sr-cyrl\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"\\u041F\\u0440\\u0435\\u0442\\u0445\\u043E\\u0434\\u043D\\u0430\",\n    next: \"\\u0441\\u043B\\u0435\\u0434\\u0435\\u045B\\u0438\",\n    today: \"\\u0414\\u0430\\u043D\\u0430\\u0441\",\n    month: \"\\u041C\\u0435\\u0441\\u0435\\u0446\",\n    week: \"\\u041D\\u0435\\u0434\\u0435\\u0459\\u0430\",\n    day: \"\\u0414\\u0430\\u043D\",\n    list: \"\\u041F\\u043B\\u0430\\u043D\\u0435\\u0440\"\n  },\n  weekText: \"\\u0421\\u0435\\u0434\",\n  allDayText: \"\\u0426\\u0435\\u043E \\u0434\\u0430\\u043D\",\n  moreLinkText: function(n) {\n    return \"+ \\u0458\\u043E\\u0448 \" + n;\n  },\n  noEventsText: \"\\u041D\\u0435\\u043C\\u0430 \\u0434\\u043E\\u0433\\u0430\\u0452\\u0430\\u0458\\u0430 \\u0437\\u0430 \\u043F\\u0440\\u0438\\u043A\\u0430\\u0437\"\n};\n\nvar l67 = {\n  code: \"sr\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"Prethodna\",\n    next: \"Sledec\\u0301i\",\n    today: \"Danas\",\n    month: \"M\\u0435s\\u0435c\",\n    week: \"N\\u0435d\\u0435lja\",\n    day: \"Dan\",\n    list: \"Plan\\u0435r\"\n  },\n  weekText: \"Sed\",\n  allDayText: \"C\\u0435o dan\",\n  moreLinkText: function(n) {\n    return \"+ jo\\u0161 \" + n;\n  },\n  noEventsText: \"N\\u0435ma doga\\u0111aja za prikaz\"\n};\n\nvar l68 = {\n  code: \"sv\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"F\\xF6rra\",\n    next: \"N\\xE4sta\",\n    today: \"Idag\",\n    month: \"M\\xE5nad\",\n    week: \"Vecka\",\n    day: \"Dag\",\n    list: \"Program\"\n  },\n  buttonHints: {\n    prev: function(buttonText) {\n      return \"F\\xF6reg\\xE5ende \".concat(buttonText.toLocaleLowerCase());\n    },\n    next: function(buttonText) {\n      return \"N\\xE4sta \".concat(buttonText.toLocaleLowerCase());\n    },\n    today: function(buttonText) {\n      return (buttonText === \"Program\" ? \"Detta\" : \"Denna\") + \" \" + buttonText.toLocaleLowerCase();\n    }\n  },\n  viewHint: \"$0 vy\",\n  navLinkHint: \"G\\xE5 till $0\",\n  moreLinkHint: function(eventCnt) {\n    return \"Visa ytterligare \".concat(eventCnt, \" h\\xE4ndelse\").concat(eventCnt === 1 ? \"\" : \"r\");\n  },\n  weekText: \"v.\",\n  weekTextLong: \"Vecka\",\n  allDayText: \"Heldag\",\n  moreLinkText: \"till\",\n  noEventsText: \"Inga h\\xE4ndelser att visa\",\n  closeHint: \"St\\xE4ng\",\n  timeHint: \"Klockan\",\n  eventHint: \"H\\xE4ndelse\"\n};\n\nvar l69 = {\n  code: \"ta-in\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u0BAE\\u0BC1\\u0BA8\\u0BCD\\u0BA4\\u0BC8\\u0BAF\",\n    next: \"\\u0B85\\u0B9F\\u0BC1\\u0BA4\\u0BCD\\u0BA4\\u0BA4\\u0BC1\",\n    today: \"\\u0B87\\u0BA9\\u0BCD\\u0BB1\\u0BC1\",\n    month: \"\\u0BAE\\u0BBE\\u0BA4\\u0BAE\\u0BCD\",\n    week: \"\\u0BB5\\u0BBE\\u0BB0\\u0BAE\\u0BCD\",\n    day: \"\\u0BA8\\u0BBE\\u0BB3\\u0BCD\",\n    list: \"\\u0BA4\\u0BBF\\u0BA9\\u0B9A\\u0BB0\\u0BBF \\u0B85\\u0B9F\\u0BCD\\u0B9F\\u0BB5\\u0BA3\\u0BC8\"\n  },\n  weekText: \"\\u0BB5\\u0BBE\\u0BB0\\u0BAE\\u0BCD\",\n  allDayText: \"\\u0BA8\\u0BBE\\u0BB3\\u0BCD \\u0BAE\\u0BC1\\u0BB4\\u0BC1\\u0BB5\\u0BA4\\u0BC1\\u0BAE\\u0BCD\",\n  moreLinkText: function(n) {\n    return \"+ \\u0BAE\\u0BC7\\u0BB2\\u0BC1\\u0BAE\\u0BCD \" + n;\n  },\n  noEventsText: \"\\u0B95\\u0BBE\\u0BA3\\u0BCD\\u0BAA\\u0BBF\\u0B95\\u0BCD\\u0B95 \\u0BA8\\u0BBF\\u0B95\\u0BB4\\u0BCD\\u0BB5\\u0BC1\\u0B95\\u0BB3\\u0BCD \\u0B87\\u0BB2\\u0BCD\\u0BB2\\u0BC8\"\n};\n\nvar l70 = {\n  code: \"th\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E2B\\u0E19\\u0E49\\u0E32\",\n    next: \"\\u0E16\\u0E31\\u0E14\\u0E44\\u0E1B\",\n    prevYear: \"\\u0E1B\\u0E35\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E2B\\u0E19\\u0E49\\u0E32\",\n    nextYear: \"\\u0E1B\\u0E35\\u0E16\\u0E31\\u0E14\\u0E44\\u0E1B\",\n    year: \"\\u0E1B\\u0E35\",\n    today: \"\\u0E27\\u0E31\\u0E19\\u0E19\\u0E35\\u0E49\",\n    month: \"\\u0E40\\u0E14\\u0E37\\u0E2D\\u0E19\",\n    week: \"\\u0E2A\\u0E31\\u0E1B\\u0E14\\u0E32\\u0E2B\\u0E4C\",\n    day: \"\\u0E27\\u0E31\\u0E19\",\n    list: \"\\u0E01\\u0E33\\u0E2B\\u0E19\\u0E14\\u0E01\\u0E32\\u0E23\"\n  },\n  weekText: \"\\u0E2A\\u0E31\\u0E1B\\u0E14\\u0E32\\u0E2B\\u0E4C\",\n  allDayText: \"\\u0E15\\u0E25\\u0E2D\\u0E14\\u0E27\\u0E31\\u0E19\",\n  moreLinkText: \"\\u0E40\\u0E1E\\u0E34\\u0E48\\u0E21\\u0E40\\u0E15\\u0E34\\u0E21\",\n  noEventsText: \"\\u0E44\\u0E21\\u0E48\\u0E21\\u0E35\\u0E01\\u0E34\\u0E08\\u0E01\\u0E23\\u0E23\\u0E21\\u0E17\\u0E35\\u0E48\\u0E08\\u0E30\\u0E41\\u0E2A\\u0E14\\u0E07\"\n};\n\nvar l71 = {\n  code: \"tr\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"geri\",\n    next: \"ileri\",\n    today: \"bug\\xFCn\",\n    month: \"Ay\",\n    week: \"Hafta\",\n    day: \"G\\xFCn\",\n    list: \"Ajanda\"\n  },\n  weekText: \"Hf\",\n  allDayText: \"T\\xFCm g\\xFCn\",\n  moreLinkText: \"daha fazla\",\n  noEventsText: \"G\\xF6sterilecek etkinlik yok\"\n};\n\nvar l72 = {\n  code: \"ug\",\n  buttonText: {\n    month: \"\\u0626\\u0627\\u064A\",\n    week: \"\\u06BE\\u06D5\\u067E\\u062A\\u06D5\",\n    day: \"\\u0643\\u06C8\\u0646\",\n    list: \"\\u0643\\u06C8\\u0646\\u062A\\u06D5\\u0631\\u062A\\u0649\\u067E\"\n  },\n  allDayText: \"\\u067E\\u06C8\\u062A\\u06C8\\u0646 \\u0643\\u06C8\\u0646\"\n};\n\nvar l73 = {\n  code: \"uk\",\n  week: {\n    dow: 1,\n    doy: 7\n  },\n  buttonText: {\n    prev: \"\\u041F\\u043E\\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0456\\u0439\",\n    next: \"\\u0434\\u0430\\u043B\\u0456\",\n    today: \"\\u0421\\u044C\\u043E\\u0433\\u043E\\u0434\\u043D\\u0456\",\n    month: \"\\u041C\\u0456\\u0441\\u044F\\u0446\\u044C\",\n    week: \"\\u0422\\u0438\\u0436\\u0434\\u0435\\u043D\\u044C\",\n    day: \"\\u0414\\u0435\\u043D\\u044C\",\n    list: \"\\u041F\\u043E\\u0440\\u044F\\u0434\\u043E\\u043A \\u0434\\u0435\\u043D\\u043D\\u0438\\u0439\"\n  },\n  weekText: \"\\u0422\\u0438\\u0436\",\n  allDayText: \"\\u0423\\u0432\\u0435\\u0441\\u044C \\u0434\\u0435\\u043D\\u044C\",\n  moreLinkText: function(n) {\n    return \"+\\u0449\\u0435 \" + n + \"...\";\n  },\n  noEventsText: \"\\u041D\\u0435\\u043C\\u0430\\u0454 \\u043F\\u043E\\u0434\\u0456\\u0439 \\u0434\\u043B\\u044F \\u0432\\u0456\\u0434\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u043D\\u044F\"\n};\n\nvar l74 = {\n  code: \"uz\",\n  buttonText: {\n    month: \"Oy\",\n    week: \"Xafta\",\n    day: \"Kun\",\n    list: \"Kun tartibi\"\n  },\n  allDayText: \"Kun bo'yi\",\n  moreLinkText: function(n) {\n    return \"+ yana \" + n;\n  },\n  noEventsText: \"Ko'rsatish uchun voqealar yo'q\"\n};\n\nvar l75 = {\n  code: \"vi\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"Tr\\u01B0\\u1EDBc\",\n    next: \"Ti\\u1EBFp\",\n    today: \"H\\xF4m nay\",\n    month: \"Th\\xE1ng\",\n    week: \"Tu\\xE2\\u0300n\",\n    day: \"Ng\\xE0y\",\n    list: \"L\\u1ECBch bi\\u1EC3u\"\n  },\n  weekText: \"Tu\",\n  allDayText: \"C\\u1EA3 ng\\xE0y\",\n  moreLinkText: function(n) {\n    return \"+ th\\xEAm \" + n;\n  },\n  noEventsText: \"Kh\\xF4ng c\\xF3 s\\u1EF1 ki\\u1EC7n \\u0111\\u1EC3 hi\\u1EC3n th\\u1ECB\"\n};\n\nvar l76 = {\n  code: \"zh-cn\",\n  week: {\n    dow: 1,\n    doy: 4\n  },\n  buttonText: {\n    prev: \"\\u4E0A\\u6708\",\n    next: \"\\u4E0B\\u6708\",\n    today: \"\\u4ECA\\u5929\",\n    month: \"\\u6708\",\n    week: \"\\u5468\",\n    day: \"\\u65E5\",\n    list: \"\\u65E5\\u7A0B\"\n  },\n  weekText: \"\\u5468\",\n  allDayText: \"\\u5168\\u5929\",\n  moreLinkText: function(n) {\n    return \"\\u53E6\\u5916 \" + n + \" \\u4E2A\";\n  },\n  noEventsText: \"\\u6CA1\\u6709\\u4E8B\\u4EF6\\u663E\\u793A\"\n};\n\nvar l77 = {\n  code: \"zh-tw\",\n  buttonText: {\n    prev: \"\\u4E0A\\u6708\",\n    next: \"\\u4E0B\\u6708\",\n    today: \"\\u4ECA\\u5929\",\n    month: \"\\u6708\",\n    week: \"\\u9031\",\n    day: \"\\u5929\",\n    list: \"\\u6D3B\\u52D5\\u5217\\u8868\"\n  },\n  weekText: \"\\u5468\",\n  allDayText: \"\\u6574\\u5929\",\n  moreLinkText: \"\\u986F\\u793A\\u66F4\\u591A\",\n  noEventsText: \"\\u6CA1\\u6709\\u4EFB\\u4F55\\u6D3B\\u52D5\"\n};\n\nvar localesAll = [\n  l0,\n  l1,\n  l2,\n  l3,\n  l4,\n  l5,\n  l6,\n  l7,\n  l8,\n  l9,\n  l10,\n  l11,\n  l12,\n  l13,\n  l14,\n  l15,\n  l16,\n  l17,\n  l18,\n  l19,\n  l20,\n  l21,\n  l22,\n  l23,\n  l24,\n  l25,\n  l26,\n  l27,\n  l28,\n  l29,\n  l30,\n  l31,\n  l32,\n  l33,\n  l34,\n  l35,\n  l36,\n  l37,\n  l38,\n  l39,\n  l40,\n  l41,\n  l42,\n  l43,\n  l44,\n  l45,\n  l46,\n  l47,\n  l48,\n  l49,\n  l50,\n  l51,\n  l52,\n  l53,\n  l54,\n  l55,\n  l56,\n  l57,\n  l58,\n  l59,\n  l60,\n  l61,\n  l62,\n  l63,\n  l64,\n  l65,\n  l66,\n  l67,\n  l68,\n  l69,\n  l70,\n  l71,\n  l72,\n  l73,\n  l74,\n  l75,\n  l76,\n  l77\n];\n\nexports.default = localesAll;\n", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n  \"use strict\";\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n  var sparkMd5 = createCommonjsModule(function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })(function(undefined) {\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) {\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\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  });\n  var classCallCheck = function(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n  var createClass = function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  var FileChecksum = function() {\n    createClass(FileChecksum, null, [ {\n      key: \"create\",\n      value: function create(file, callback) {\n        var instance = new FileChecksum(file);\n        instance.create(callback);\n      }\n    } ]);\n    function FileChecksum(file) {\n      classCallCheck(this, FileChecksum);\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    createClass(FileChecksum, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        this.callback = callback;\n        this.md5Buffer = new sparkMd5.ArrayBuffer();\n        this.fileReader = new FileReader();\n        this.fileReader.addEventListener(\"load\", function(event) {\n          return _this.fileReaderDidLoad(event);\n        });\n        this.fileReader.addEventListener(\"error\", function(event) {\n          return _this.fileReaderDidError(event);\n        });\n        this.readNextChunk();\n      }\n    }, {\n      key: \"fileReaderDidLoad\",\n      value: function fileReaderDidLoad(event) {\n        this.md5Buffer.append(event.target.result);\n        if (!this.readNextChunk()) {\n          var binaryDigest = this.md5Buffer.end(true);\n          var base64digest = btoa(binaryDigest);\n          this.callback(null, base64digest);\n        }\n      }\n    }, {\n      key: \"fileReaderDidError\",\n      value: function fileReaderDidError(event) {\n        this.callback(\"Error reading \" + this.file.name);\n      }\n    }, {\n      key: \"readNextChunk\",\n      value: function readNextChunk() {\n        if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n          var start = this.chunkIndex * this.chunkSize;\n          var end = Math.min(start + this.chunkSize, this.file.size);\n          var 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    return FileChecksum;\n  }();\n  function getMetaValue(name) {\n    var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    var elements = root.querySelectorAll(selector);\n    return toArray$1(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type) {\n    var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var disabled = element.disabled;\n    var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n    var 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  function toArray$1(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  var BlobRecord = function() {\n    function BlobRecord(file, checksum, url) {\n      var _this = this;\n      classCallCheck(this, BlobRecord);\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type,\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      this.xhr.setRequestHeader(\"X-CSRF-Token\", getMetaValue(\"csrf-token\"));\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobRecord, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(JSON.stringify({\n          blob: this.attributes\n        }));\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        if (this.status >= 200 && this.status < 300) {\n          var response = this.response;\n          var direct_upload = response.direct_upload;\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    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n      }\n    }, {\n      key: \"toJSON\",\n      value: function toJSON() {\n        var result = {};\n        for (var key in this.attributes) {\n          result[key] = this.attributes[key];\n        }\n        return result;\n      }\n    }, {\n      key: \"status\",\n      get: function get$$1() {\n        return this.xhr.status;\n      }\n    }, {\n      key: \"response\",\n      get: function get$$1() {\n        var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n        if (responseType == \"json\") {\n          return response;\n        } else {\n          return JSON.parse(response);\n        }\n      }\n    } ]);\n    return BlobRecord;\n  }();\n  var BlobUpload = function() {\n    function BlobUpload(blob) {\n      var _this = this;\n      classCallCheck(this, BlobUpload);\n      this.blob = blob;\n      this.file = blob.file;\n      var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (var key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(this.file.slice());\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n        if (status >= 200 && status < 300) {\n          this.callback(null, response);\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n      }\n    } ]);\n    return BlobUpload;\n  }();\n  var id = 0;\n  var DirectUpload = function() {\n    function DirectUpload(file, url, delegate) {\n      classCallCheck(this, DirectUpload);\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n    createClass(DirectUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        FileChecksum.create(this.file, function(error, checksum) {\n          if (error) {\n            callback(error);\n            return;\n          }\n          var blob = new BlobRecord(_this.file, checksum, _this.url);\n          notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n          blob.create(function(error) {\n            if (error) {\n              callback(error);\n            } else {\n              var upload = new BlobUpload(blob);\n              notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n              upload.create(function(error) {\n                if (error) {\n                  callback(error);\n                } else {\n                  callback(null, blob.toJSON());\n                }\n              });\n            }\n          });\n        });\n      }\n    } ]);\n    return DirectUpload;\n  }();\n  function notify(object, methodName) {\n    if (object && typeof object[methodName] == \"function\") {\n      for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        messages[_key - 2] = arguments[_key];\n      }\n      return object[methodName].apply(object, messages);\n    }\n  }\n  var DirectUploadController = function() {\n    function DirectUploadController(input, file) {\n      classCallCheck(this, DirectUploadController);\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    createClass(DirectUploadController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var 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(function(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    }, {\n      key: \"uploadRequestDidProgress\",\n      value: function uploadRequestDidProgress(event) {\n        var progress = event.loaded / event.total * 100;\n        if (progress) {\n          this.dispatch(\"progress\", {\n            progress: progress\n          });\n        }\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\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    }, {\n      key: \"dispatchError\",\n      value: function dispatchError(error) {\n        var event = this.dispatch(\"error\", {\n          error: error\n        });\n        if (!event.defaultPrevented) {\n          alert(error);\n        }\n      }\n    }, {\n      key: \"directUploadWillCreateBlobWithXHR\",\n      value: function directUploadWillCreateBlobWithXHR(xhr) {\n        this.dispatch(\"before-blob-request\", {\n          xhr: xhr\n        });\n      }\n    }, {\n      key: \"directUploadWillStoreFileWithXHR\",\n      value: function directUploadWillStoreFileWithXHR(xhr) {\n        var _this2 = this;\n        this.dispatch(\"before-storage-request\", {\n          xhr: xhr\n        });\n        xhr.upload.addEventListener(\"progress\", function(event) {\n          return _this2.uploadRequestDidProgress(event);\n        });\n      }\n    }, {\n      key: \"url\",\n      get: function get$$1() {\n        return this.input.getAttribute(\"data-direct-upload-url\");\n      }\n    } ]);\n    return DirectUploadController;\n  }();\n  var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  var DirectUploadsController = function() {\n    function DirectUploadsController(form) {\n      classCallCheck(this, DirectUploadsController);\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter(function(input) {\n        return input.files.length;\n      });\n    }\n    createClass(DirectUploadsController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var controllers = this.createDirectUploadControllers();\n        var startNextController = function startNextController() {\n          var controller = controllers.shift();\n          if (controller) {\n            controller.start(function(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    }, {\n      key: \"createDirectUploadControllers\",\n      value: function createDirectUploadControllers() {\n        var controllers = [];\n        this.inputs.forEach(function(input) {\n          toArray$1(input.files).forEach(function(file) {\n            var controller = new DirectUploadController(input, file);\n            controllers.push(controller);\n          });\n        });\n        return controllers;\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n          detail: detail\n        });\n      }\n    } ]);\n    return DirectUploadsController;\n  }();\n  var processingAttribute = \"data-direct-uploads-processing\";\n  var submitButtonsByForm = new WeakMap();\n  var started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    var target = event.target;\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    var form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    var controller = new DirectUploadsController(form);\n    var inputs = controller.inputs;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start(function(error) {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      });\n    }\n  }\n  function submitForm(form) {\n    var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      var _button = button, disabled = _button.disabled;\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  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.start = start;\n  exports.DirectUpload = DirectUpload;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});\n", " /*\n  * https://github.com/kraaden/autocomplete\n  * Copyright (c) 2016 Denys Krasnoshchok\n  * MIT License\n  */\n\nexport const enum EventTrigger {\n    Keyboard = 0,\n    Focus = 1\n}\n\nexport interface AutocompleteItem {\n    label?: string;\n    group?: string;\n}\n\nexport interface AutocompleteSettings<T extends AutocompleteItem> {\n    /**\n     * Autocomplete will be attached to this element.\n     */\n    input: HTMLInputElement | HTMLTextAreaElement;\n\n    /**\n     * Provide your own container for the widget.\n     * If not specified, a new DIV element will be created.\n     */\n    container?: HTMLDivElement;\n\n    /**\n     * This method allows you to override the default rendering function for items.\n     * It must return a DIV element or undefined to skip rendering.\n     */\n    render?: (item: T, currentValue: string) => HTMLDivElement | undefined;\n\n    /**\n     * This method allows you to override the default rendering function for item groups.\n     * It must return a DIV element or undefined to skip rendering.\n     */\n    renderGroup?: (name: string, currentValue: string) => HTMLDivElement | undefined;\n\n    /**\n     * If specified, the autocomplete DOM element will have this class assigned to it.\n     */\n    className?: string;\n\n    /**\n     * Specify the minimum text length required to show autocomplete.\n     */\n    minLength?: number;\n\n    /**\n     * The message that will be showed when there are no suggestions that match the entered value.\n     */\n    emptyMsg?: string;\n\n    /**\n     * This method will be called when user choose an item in autocomplete. The selected item will be passed as the first parameter.\n     */\n    onSelect: (item: T, input: HTMLInputElement | HTMLTextAreaElement) => void;\n\n    /**\n     * Show autocomplete on focus event. Focus event will ignore the `minLength` property and will always call `fetch`.\n     */\n    showOnFocus?: boolean;\n\n    /**\n     * This method will be called to prepare suggestions and then pass them to autocomplete.\n     * @param {string} text - text in the input field\n     * @param {(items: T[] | false) => void} update - a callback function that must be called after suggestions are prepared\n     * @param {EventTrigger} trigger - type of the event that triggered the fetch\n     * @param {number} cursorPos - position of the cursor in the input field\n     */\n    fetch: (text: string, update: (items: T[] | false) => void, trigger: EventTrigger, cursorPos: number) => void;\n\n    /**\n     * Enforces that the fetch function will only be called once within the specified time frame (in milliseconds) and\n     * delays execution. This prevents flooding your server with AJAX requests.\n     */\n    debounceWaitMs?: number;\n\n    /**\n     * Callback for additional autocomplete customization\n     * @param {HTMLInputElement | HTMLTextAreaElement} input - input box associated with autocomplete\n     * @param {ClientRect | DOMRect} inputRect - size of the input box and its position relative to the viewport\n     * @param {HTMLDivElement} container - container with suggestions\n     * @param {number} maxHeight - max height that can be used by autocomplete\n     */\n    customize?: (input: HTMLInputElement | HTMLTextAreaElement, inputRect: ClientRect | DOMRect, container: HTMLDivElement, maxHeight: number) => void;\n\n    /**\n     * Prevents automatic form submit when ENTER is pressed\n     */\n    preventSubmit?: boolean;\n    \n    /**\n     * Prevents the first item in the list from being selected automatically. This option allows you\n     * to submit a custom text by pressing ENTER even when autocomplete is displayed.\n     */\n    disableAutoSelect?: boolean;\n\n    /**\n     * Keys that will be ignored and not trigger the fetch callback.\n     */\n    keysToIgnore?: Keys[];\n}\n\nexport interface AutocompleteResult {\n    destroy: () => void;\n}\n\nexport const enum Keys {\n    Enter = 13,\n    Esc = 27,\n    Up = 38,\n    Down = 40,\n    Left = 37,\n    Right = 39,\n    Shift = 16,\n    Ctrl = 17,\n    Alt = 18,\n    CapsLock = 20,\n    WindowsKey = 91,\n    Tab = 9,\n    F1 = 112,\n    F12 = 123\n}\n\nexport default function autocomplete<T extends AutocompleteItem>(settings: AutocompleteSettings<T>): AutocompleteResult {\n\n    // just an alias to minimize JS file size\n    const doc = document;\n\n    const container: HTMLDivElement = settings.container || doc.createElement(\"div\");\n    const containerStyle = container.style;\n    const userAgent = navigator.userAgent;\n    const mobileFirefox = ~userAgent.indexOf(\"Firefox\") && ~userAgent.indexOf(\"Mobile\");\n    const debounceWaitMs = settings.debounceWaitMs || 0;\n    const preventSubmit = settings.preventSubmit || false;\n    const disableAutoSelect = settings.disableAutoSelect || false;\n    \n    // 'keyup' event will not be fired on Mobile Firefox, so we have to use 'input' event instead\n    const keyUpEventName = mobileFirefox ? \"input\" : \"keyup\";\n    \n    let items: T[] = [];\n    let inputValue = \"\";\n    let minLen = 2;\n    const showOnFocus = settings.showOnFocus;\n    let selected: T | undefined;\n    let keypressCounter = 0;\n    let debounceTimer : number | undefined;\n\n    if (settings.minLength !== undefined) {\n        minLen = settings.minLength;\n    }\n\n    if (!settings.input) {\n        throw new Error(\"input undefined\");\n    }\n\n    const input: HTMLInputElement | HTMLTextAreaElement = settings.input;\n\n    container.className = \"autocomplete \" + (settings.className || \"\");\n\n    // IOS implementation for fixed positioning has many bugs, so we will use absolute positioning\n    containerStyle.position = \"absolute\";\n\n    /**\n     * Detach the container from DOM\n     */\n    function detach(): void {\n        const parent = container.parentNode;\n        if (parent) {\n            parent.removeChild(container);\n        }\n    }\n\n    /**\n     * Clear debouncing timer if assigned\n     */\n    function clearDebounceTimer(): void {\n        if (debounceTimer) {\n            window.clearTimeout(debounceTimer);\n        }\n    }\n\n    /**\n     * Attach the container to DOM\n     */\n    function attach(): void {\n        if (!container.parentNode) {\n            doc.body.appendChild(container);\n        }\n    }\n\n    /**\n     * Check if container for autocomplete is displayed\n     */\n    function containerDisplayed(): boolean {\n        return !!container.parentNode;\n    }\n\n    /**\n     * Clear autocomplete state and hide container\n     */\n    function clear(): void {\n        // prevent the update call if there are pending AJAX requests\n        keypressCounter++;\n        \n        items = [];\n        inputValue = \"\";\n        selected = undefined;\n        detach();\n    }\n\n    /**\n     * Update autocomplete position\n     */\n    function updatePosition(): void {\n        if (!containerDisplayed()) {\n            return;\n        }\n\n        containerStyle.height = \"auto\";\n        containerStyle.width = input.offsetWidth + \"px\";\n\n        let maxHeight = 0;\n        let inputRect: ClientRect | DOMRect | undefined;\n\n        function calc() {\n            const docEl = doc.documentElement as HTMLElement;\n            const clientTop = docEl.clientTop || doc.body.clientTop || 0;\n            const clientLeft = docEl.clientLeft || doc.body.clientLeft || 0;\n            const scrollTop = window.pageYOffset || docEl.scrollTop;\n            const scrollLeft = window.pageXOffset || docEl.scrollLeft;\n\n            inputRect = input.getBoundingClientRect();\n        \n            const top = inputRect.top + input.offsetHeight + scrollTop - clientTop;\n            const left = inputRect.left + scrollLeft - clientLeft;\n    \n            containerStyle.top = top + \"px\";\n            containerStyle.left = left + \"px\";\n    \n            maxHeight = window.innerHeight - (inputRect.top + input.offsetHeight);\n    \n            if (maxHeight < 0) {\n                maxHeight = 0;\n            }\n    \n            containerStyle.top = top + \"px\";\n            containerStyle.bottom = \"\";\n            containerStyle.left = left + \"px\";\n            containerStyle.maxHeight = maxHeight + \"px\";\n        }\n\n        // the calc method must be called twice, otherwise the calculation may be wrong on resize event (chrome browser)\n        calc();\n        calc();\n\n        if (settings.customize && inputRect) {\n            settings.customize(input, inputRect, container, maxHeight);\n        }\n    }\n\n    /**\n     * Redraw the autocomplete div element with suggestions\n     */\n    function update(): void {\n        \n        // delete all children from autocomplete DOM container\n        while (container.firstChild) {\n            container.removeChild(container.firstChild);\n        }\n\n        // function for rendering autocomplete suggestions\n        let render = function(item: T, currentValue: string): HTMLDivElement | undefined {\n            const itemElement = doc.createElement(\"div\");\n            itemElement.textContent = item.label || \"\";\n            return itemElement;\n        };\n        if (settings.render) {\n            render = settings.render;\n        }\n\n        // function to render autocomplete groups\n        let renderGroup = function(groupName: string, currentValue: string): HTMLDivElement | undefined {\n            const groupDiv = doc.createElement(\"div\");\n            groupDiv.textContent = groupName;\n            return groupDiv;\n        };\n        if (settings.renderGroup) {\n            renderGroup = settings.renderGroup;\n        }\n\n        const fragment = doc.createDocumentFragment();\n        let prevGroup = \"#9?$\";\n\n        items.forEach(function(item: T): void {\n            if (item.group && item.group !== prevGroup) {\n                prevGroup = item.group;\n                const groupDiv = renderGroup(item.group, inputValue);\n                if (groupDiv) {\n                    groupDiv.className += \" group\";\n                    fragment.appendChild(groupDiv);\n                }\n            }\n            const div = render(item, inputValue);\n            if (div) {\n                div.addEventListener(\"click\", function(ev: MouseEvent): void {\n                    settings.onSelect(item, input);\n                    clear();\n                    ev.preventDefault();\n                    ev.stopPropagation();\n                });\n                if (item === selected) {\n                    div.className += \" selected\";\n                }\n                fragment.appendChild(div);\n            }\n        });\n        container.appendChild(fragment);\n        if (items.length < 1) {\n            if (settings.emptyMsg) {\n                const empty = doc.createElement(\"div\");\n                empty.className = \"empty\";\n                empty.textContent = settings.emptyMsg;\n                container.appendChild(empty);\n            } else {\n                clear();\n                return;\n            }\n        }\n\n        attach();\n        updatePosition();\n\n        updateScroll();\n    }\n\n    function updateIfDisplayed(): void {\n        if (containerDisplayed()) {\n            update();\n        }\n    }\n\n    function resizeEventHandler(): void {\n        updateIfDisplayed();\n    }\n\n    function scrollEventHandler(e: Event): void {\n        if (e.target !== container) {\n            updateIfDisplayed();\n        } else {\n            e.preventDefault();\n        }\n    }\n\n    function keyupEventHandler(ev: KeyboardEvent): void {\n        const keyCode = ev.which || ev.keyCode || 0;\n\n        const ignore = settings.keysToIgnore || [Keys.Up, Keys.Enter, Keys.Esc, Keys.Right, Keys.Left, Keys.Shift, Keys.Ctrl, Keys.Alt, Keys.CapsLock, Keys.WindowsKey, Keys.Tab];\n        for (const key of ignore) {\n            if (keyCode === key) {\n                return;\n            }\n        }\n\n        if (keyCode >= Keys.F1 && keyCode <= Keys.F12 && !settings.keysToIgnore) {\n            return;\n        }\n\n        // the down key is used to open autocomplete\n        if (keyCode === Keys.Down && containerDisplayed()) {\n            return;\n        }\n\n        startFetch(EventTrigger.Keyboard);\n    }\n\n    /**\n     * Automatically move scroll bar if selected item is not visible\n     */\n    function updateScroll(): void {\n        const elements = container.getElementsByClassName(\"selected\");\n        if (elements.length > 0) {\n            let element = elements[0] as HTMLDivElement;\n            \n            // make group visible\n            const previous = element.previousElementSibling as HTMLDivElement;\n            if (previous && previous.className.indexOf(\"group\") !== -1 && !previous.previousElementSibling) {\n                element = previous;\n            }\n\n            if (element.offsetTop < container.scrollTop) {\n                container.scrollTop = element.offsetTop;\n            } else {\n                const selectBottom = element.offsetTop + element.offsetHeight;\n                const containerBottom = container.scrollTop + container.offsetHeight;\n                if (selectBottom > containerBottom) {\n                    container.scrollTop += selectBottom - containerBottom;\n                }\n            }\n        }\n    }\n\n    /**\n     * Select the previous item in suggestions\n     */\n    function selectPrev(): void {\n        if (items.length < 1) {\n            selected = undefined;\n        } else {\n            if (selected === items[0]) {\n                selected = items[items.length - 1];\n            } else {\n                for (let i = items.length - 1; i > 0; i--) {\n                    if (selected === items[i] || i === 1) {\n                        selected = items[i - 1];\n                        break;\n                    }\n                }\n            }\n        }\n    }\n\n    /**\n     * Select the next item in suggestions\n     */\n    function selectNext(): void {\n        if (items.length < 1) {\n            selected = undefined;\n        }\n        if (!selected || selected === items[items.length - 1]) {\n            selected = items[0];\n            return;\n        }\n        for (let i = 0; i < (items.length - 1); i++) {\n            if (selected === items[i]) {\n                selected = items[i + 1];\n                break;\n            }\n        }\n    }\n\n    function keydownEventHandler(ev: KeyboardEvent): void {\n        const keyCode = ev.which || ev.keyCode || 0;\n\n        if (keyCode === Keys.Up || keyCode === Keys.Down || keyCode === Keys.Esc) {\n            const containerIsDisplayed = containerDisplayed();\n\n            if (keyCode === Keys.Esc) {\n                clear();\n            } else {\n                if (!containerIsDisplayed || items.length < 1) {\n                    return;\n                }\n                keyCode === Keys.Up\n                    ? selectPrev()\n                    : selectNext();\n                update();\n            }\n\n            ev.preventDefault();\n            if (containerIsDisplayed) {\n                ev.stopPropagation();\n            }\n\n            return;\n        }\n\n        if (keyCode === Keys.Enter) {\n            if (selected) {\n                settings.onSelect(selected, input);\n                clear();\n            }\n    \n            if (preventSubmit) {\n                ev.preventDefault();\n            }\n        }\n    }\n\n    function focusEventHandler(): void {\n        if (showOnFocus) {\n            startFetch(EventTrigger.Focus);\n        }\n    }\n\n    function startFetch(trigger: EventTrigger) {\n        // If multiple keys were pressed, before we get an update from server,\n        // this may cause redrawing autocomplete multiple times after the last key was pressed.\n        // To avoid this, the number of times keyboard was pressed will be saved and checked before redraw.\n        const savedKeypressCounter = ++keypressCounter;\n\n        const inputText = input.value;\n        const cursorPos = input.selectionStart || 0;\n\n        if (inputText.length >= minLen || trigger === EventTrigger.Focus) {\n            clearDebounceTimer();\n            debounceTimer = window.setTimeout(function(): void {\n                settings.fetch(inputText, function(elements: T[] | false): void {\n                    if (keypressCounter === savedKeypressCounter && elements) {\n                        items = elements;\n                        inputValue = inputText;\n                        selected = (items.length < 1 || disableAutoSelect) ? undefined : items[0];\n                        update();\n                    }\n                }, trigger, cursorPos);\n            }, trigger === EventTrigger.Keyboard ? debounceWaitMs : 0);\n        } else {\n            clear();\n        }\n    }\n\n    function blurEventHandler(): void {\n        // we need to delay clear, because when we click on an item, blur will be called before click and remove items from DOM\n        setTimeout(() => {\n            if (doc.activeElement !== input) {\n                clear();\n            }\n        }, 200);\n    }\n\n    /**\n     * Fixes #26: on long clicks focus will be lost and onSelect method will not be called\n     */\n    container.addEventListener(\"mousedown\", function(evt: Event) {\n        evt.stopPropagation();\n        evt.preventDefault();\n    });\n\n    /**\n     * Fixes #30: autocomplete closes when scrollbar is clicked in IE\n     * See: https://stackoverflow.com/a/9210267/13172349\n     */\n    container.addEventListener(\"focus\", () => input.focus());\n\n    /**\n     * This function will remove DOM elements and clear event handlers\n     */\n    function destroy(): void {\n        input.removeEventListener(\"focus\", focusEventHandler);\n        input.removeEventListener(\"keydown\", keydownEventHandler as EventListenerOrEventListenerObject);\n        input.removeEventListener(keyUpEventName, keyupEventHandler as EventListenerOrEventListenerObject);\n        input.removeEventListener(\"blur\", blurEventHandler);\n        window.removeEventListener(\"resize\", resizeEventHandler);\n        doc.removeEventListener(\"scroll\", scrollEventHandler, true);\n        clearDebounceTimer();\n        clear();\n    }\n\n    // setup event handlers\n    input.addEventListener(\"keydown\", keydownEventHandler as EventListenerOrEventListenerObject);\n    input.addEventListener(keyUpEventName, keyupEventHandler as EventListenerOrEventListenerObject);\n    input.addEventListener(\"blur\", blurEventHandler);\n    input.addEventListener(\"focus\", focusEventHandler);\n    window.addEventListener(\"resize\", resizeEventHandler);\n    doc.addEventListener(\"scroll\", scrollEventHandler, true);\n\n    return {\n        destroy\n    };\n}\n", "/*! js-cookie v3.0.5 | MIT */\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, (function () {\n    var current = global.Cookies;\n    var exports = global.Cookies = factory();\n    exports.noConflict = function () { global.Cookies = current; return exports; };\n  })());\n})(this, (function () { 'use strict';\n\n  /* eslint-disable no-var */\n  function assign (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        target[key] = source[key];\n      }\n    }\n    return target\n  }\n  /* eslint-enable no-var */\n\n  /* eslint-disable no-var */\n  var defaultConverter = {\n    read: function (value) {\n      if (value[0] === '\"') {\n        value = value.slice(1, -1);\n      }\n      return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n    },\n    write: function (value) {\n      return encodeURIComponent(value).replace(\n        /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n        decodeURIComponent\n      )\n    }\n  };\n  /* eslint-enable no-var */\n\n  /* eslint-disable no-var */\n\n  function init (converter, defaultAttributes) {\n    function set (name, value, attributes) {\n      if (typeof document === 'undefined') {\n        return\n      }\n\n      attributes = assign({}, defaultAttributes, attributes);\n\n      if (typeof attributes.expires === 'number') {\n        attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n      }\n      if (attributes.expires) {\n        attributes.expires = attributes.expires.toUTCString();\n      }\n\n      name = encodeURIComponent(name)\n        .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n        .replace(/[()]/g, escape);\n\n      var stringifiedAttributes = '';\n      for (var attributeName in attributes) {\n        if (!attributes[attributeName]) {\n          continue\n        }\n\n        stringifiedAttributes += '; ' + attributeName;\n\n        if (attributes[attributeName] === true) {\n          continue\n        }\n\n        // Considers RFC 6265 section 5.2:\n        // ...\n        // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n        //     character:\n        // Consume the characters of the unparsed-attributes up to,\n        // not including, the first %x3B (\";\") character.\n        // ...\n        stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n      }\n\n      return (document.cookie =\n        name + '=' + converter.write(value, name) + stringifiedAttributes)\n    }\n\n    function get (name) {\n      if (typeof document === 'undefined' || (arguments.length && !name)) {\n        return\n      }\n\n      // To prevent the for loop in the first place assign an empty array\n      // in case there are no cookies at all.\n      var cookies = document.cookie ? document.cookie.split('; ') : [];\n      var jar = {};\n      for (var i = 0; i < cookies.length; i++) {\n        var parts = cookies[i].split('=');\n        var value = parts.slice(1).join('=');\n\n        try {\n          var found = decodeURIComponent(parts[0]);\n          jar[found] = converter.read(value, found);\n\n          if (name === found) {\n            break\n          }\n        } catch (e) {}\n      }\n\n      return name ? jar[name] : jar\n    }\n\n    return Object.create(\n      {\n        set,\n        get,\n        remove: function (name, attributes) {\n          set(\n            name,\n            '',\n            assign({}, attributes, {\n              expires: -1\n            })\n          );\n        },\n        withAttributes: function (attributes) {\n          return init(this.converter, assign({}, this.attributes, attributes))\n        },\n        withConverter: function (converter) {\n          return init(assign({}, this.converter, converter), this.attributes)\n        }\n      },\n      {\n        attributes: { value: Object.freeze(defaultAttributes) },\n        converter: { value: Object.freeze(converter) }\n      }\n    )\n  }\n\n  var api = init(defaultConverter, { path: '/' });\n  /* eslint-enable no-var */\n\n  return api;\n\n}));\n", "/*!\r\n * ScrollMagic v2.0.8 (2020-08-14)\r\n * The javascript library for magical scroll interactions.\r\n * (c) 2020 Jan Paepke (@janpaepke)\r\n * Project Website: http://scrollmagic.io\r\n * \r\n * @version 2.0.8\r\n * @license Dual licensed under MIT license and GPL.\r\n * @author Jan Paepke - e-mail@janpaepke.de\r\n *\r\n * @file ScrollMagic main library.\r\n */\r\n/**\r\n * @namespace ScrollMagic\r\n */\r\n(function (root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\t// AMD. Register as an anonymous module.\r\n\t\tdefine(factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\t// CommonJS\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\t// Browser global\r\n\t\troot.ScrollMagic = factory();\r\n\t}\r\n}(this, function () {\r\n\t\"use strict\";\r\n\r\n\tvar ScrollMagic = function () {\r\n\t\t_util.log(2, '(COMPATIBILITY NOTICE) -> As of ScrollMagic 2.0.0 you need to use \\'new ScrollMagic.Controller()\\' to create a new controller instance. Use \\'new ScrollMagic.Scene()\\' to instance a scene.');\r\n\t};\r\n\r\n\tScrollMagic.version = \"2.0.8\";\r\n\r\n\t// TODO: temporary workaround for chrome's scroll jitter bug\r\n\tif (typeof (window) !== 'undefined') {\r\n\t\twindow.addEventListener(\"mousewheel\", void(0));\r\n\t}\r\n\r\n\t// global const\r\n\tvar PIN_SPACER_ATTRIBUTE = \"data-scrollmagic-pin-spacer\";\r\n\r\n\t/**\r\n\t * The main class that is needed once per scroll container.\r\n\t *\r\n\t * @class\r\n\t *\r\n\t * @example\r\n\t * // basic initialization\r\n\t * var controller = new ScrollMagic.Controller();\r\n\t *\r\n\t * // passing options\r\n\t * var controller = new ScrollMagic.Controller({container: \"#myContainer\", loglevel: 3});\r\n\t *\r\n\t * @param {object} [options] - An object containing one or more options for the controller.\r\n\t * @param {(string|object)} [options.container=window] - A selector, DOM object that references the main container for scrolling.\r\n\t * @param {boolean} [options.vertical=true] - Sets the scroll mode to vertical (`true`) or horizontal (`false`) scrolling.\r\n\t * @param {object} [options.globalSceneOptions={}] - These options will be passed to every Scene that is added to the controller using the addScene method. For more information on Scene options see {@link ScrollMagic.Scene}.\r\n\t * @param {number} [options.loglevel=2] Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic.\r\n\t\t\t\t\t\t\t\t\t\t\t ** `0` => silent\r\n\t\t\t\t\t\t\t\t\t\t\t ** `1` => errors\r\n\t\t\t\t\t\t\t\t\t\t\t ** `2` => errors, warnings\r\n\t\t\t\t\t\t\t\t\t\t\t ** `3` => errors, warnings, debuginfo\r\n\t * @param {boolean} [options.refreshInterval=100] - Some changes don't call events by default, like changing the container size or moving a scene trigger element.  \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t This interval polls these parameters to fire the necessary events.  \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t If you don't use custom containers, trigger elements or have static layouts, where the positions of the trigger elements don't change, you can set this to 0 disable interval checking and improve performance.\r\n\t *\r\n\t */\r\n\tScrollMagic.Controller = function (options) {\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * settings\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\t\tvar\r\n\t\t\tNAMESPACE = 'ScrollMagic.Controller',\r\n\t\t\tSCROLL_DIRECTION_FORWARD = 'FORWARD',\r\n\t\t\tSCROLL_DIRECTION_REVERSE = 'REVERSE',\r\n\t\t\tSCROLL_DIRECTION_PAUSED = 'PAUSED',\r\n\t\t\tDEFAULT_OPTIONS = CONTROLLER_OPTIONS.defaults;\r\n\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * private vars\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\t\tvar\r\n\t\t\tController = this,\r\n\t\t\t_options = _util.extend({}, DEFAULT_OPTIONS, options),\r\n\t\t\t_sceneObjects = [],\r\n\t\t\t_updateScenesOnNextCycle = false, // can be boolean (true => all scenes) or an array of scenes to be updated\r\n\t\t\t_scrollPos = 0,\r\n\t\t\t_scrollDirection = SCROLL_DIRECTION_PAUSED,\r\n\t\t\t_isDocument = true,\r\n\t\t\t_viewPortSize = 0,\r\n\t\t\t_enabled = true,\r\n\t\t\t_updateTimeout,\r\n\t\t\t_refreshTimeout;\r\n\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * private functions\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * Internal constructor function of the ScrollMagic Controller\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar construct = function () {\r\n\t\t\tfor (var key in _options) {\r\n\t\t\t\tif (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\r\n\t\t\t\t\tlog(2, \"WARNING: Unknown option \\\"\" + key + \"\\\"\");\r\n\t\t\t\t\tdelete _options[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t_options.container = _util.get.elements(_options.container)[0];\r\n\t\t\t// check ScrollContainer\r\n\t\t\tif (!_options.container) {\r\n\t\t\t\tlog(1, \"ERROR creating object \" + NAMESPACE + \": No valid scroll container supplied\");\r\n\t\t\t\tthrow NAMESPACE + \" init failed.\"; // cancel\r\n\t\t\t}\r\n\t\t\t_isDocument = _options.container === window || _options.container === document.body || !document.body.contains(_options.container);\r\n\t\t\t// normalize to window\r\n\t\t\tif (_isDocument) {\r\n\t\t\t\t_options.container = window;\r\n\t\t\t}\r\n\t\t\t// update container size immediately\r\n\t\t\t_viewPortSize = getViewportSize();\r\n\t\t\t// set event handlers\r\n\t\t\t_options.container.addEventListener(\"resize\", onChange);\r\n\t\t\t_options.container.addEventListener(\"scroll\", onChange);\r\n\r\n\t\t\tvar ri = parseInt(_options.refreshInterval, 10);\r\n\t\t\t_options.refreshInterval = _util.type.Number(ri) ? ri : DEFAULT_OPTIONS.refreshInterval;\r\n\t\t\tscheduleRefresh();\r\n\r\n\t\t\tlog(3, \"added new \" + NAMESPACE + \" controller (v\" + ScrollMagic.version + \")\");\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Schedule the next execution of the refresh function\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar scheduleRefresh = function () {\r\n\t\t\tif (_options.refreshInterval > 0) {\r\n\t\t\t\t_refreshTimeout = window.setTimeout(refresh, _options.refreshInterval);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Default function to get scroll pos - overwriteable using `Controller.scrollPos(newFunction)`\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar getScrollPos = function () {\r\n\t\t\treturn _options.vertical ? _util.get.scrollTop(_options.container) : _util.get.scrollLeft(_options.container);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Returns the current viewport Size (width vor horizontal, height for vertical)\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar getViewportSize = function () {\r\n\t\t\treturn _options.vertical ? _util.get.height(_options.container) : _util.get.width(_options.container);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Default function to set scroll pos - overwriteable using `Controller.scrollTo(newFunction)`\r\n\t\t * Make available publicly for pinned mousewheel workaround.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar setScrollPos = this._setScrollPos = function (pos) {\r\n\t\t\tif (_options.vertical) {\r\n\t\t\t\tif (_isDocument) {\r\n\t\t\t\t\twindow.scrollTo(_util.get.scrollLeft(), pos);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_options.container.scrollTop = pos;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (_isDocument) {\r\n\t\t\t\t\twindow.scrollTo(pos, _util.get.scrollTop());\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_options.container.scrollLeft = pos;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Handle updates in cycles instead of on scroll (performance)\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar updateScenes = function () {\r\n\t\t\tif (_enabled && _updateScenesOnNextCycle) {\r\n\t\t\t\t// determine scenes to update\r\n\t\t\t\tvar scenesToUpdate = _util.type.Array(_updateScenesOnNextCycle) ? _updateScenesOnNextCycle : _sceneObjects.slice(0);\r\n\t\t\t\t// reset scenes\r\n\t\t\t\t_updateScenesOnNextCycle = false;\r\n\t\t\t\tvar oldScrollPos = _scrollPos;\r\n\t\t\t\t// update scroll pos now instead of onChange, as it might have changed since scheduling (i.e. in-browser smooth scroll)\r\n\t\t\t\t_scrollPos = Controller.scrollPos();\r\n\t\t\t\tvar deltaScroll = _scrollPos - oldScrollPos;\r\n\t\t\t\tif (deltaScroll !== 0) { // scroll position changed?\r\n\t\t\t\t\t_scrollDirection = (deltaScroll > 0) ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_REVERSE;\r\n\t\t\t\t}\r\n\t\t\t\t// reverse order of scenes if scrolling reverse\r\n\t\t\t\tif (_scrollDirection === SCROLL_DIRECTION_REVERSE) {\r\n\t\t\t\t\tscenesToUpdate.reverse();\r\n\t\t\t\t}\r\n\t\t\t\t// update scenes\r\n\t\t\t\tscenesToUpdate.forEach(function (scene, index) {\r\n\t\t\t\t\tlog(3, \"updating Scene \" + (index + 1) + \"/\" + scenesToUpdate.length + \" (\" + _sceneObjects.length + \" total)\");\r\n\t\t\t\t\tscene.update(true);\r\n\t\t\t\t});\r\n\t\t\t\tif (scenesToUpdate.length === 0 && _options.loglevel >= 3) {\r\n\t\t\t\t\tlog(3, \"updating 0 Scenes (nothing added to controller)\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Initializes rAF callback\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar debounceUpdate = function () {\r\n\t\t\t_updateTimeout = _util.rAF(updateScenes);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Handles Container changes\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar onChange = function (e) {\r\n\t\t\tlog(3, \"event fired causing an update:\", e.type);\r\n\t\t\tif (e.type == \"resize\") {\r\n\t\t\t\t// resize\r\n\t\t\t\t_viewPortSize = getViewportSize();\r\n\t\t\t\t_scrollDirection = SCROLL_DIRECTION_PAUSED;\r\n\t\t\t}\r\n\t\t\t// schedule update\r\n\t\t\tif (_updateScenesOnNextCycle !== true) {\r\n\t\t\t\t_updateScenesOnNextCycle = true;\r\n\t\t\t\tdebounceUpdate();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar refresh = function () {\r\n\t\t\tif (!_isDocument) {\r\n\t\t\t\t// simulate resize event. Only works for viewport relevant param (performance)\r\n\t\t\t\tif (_viewPortSize != getViewportSize()) {\r\n\t\t\t\t\tvar resizeEvent;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tresizeEvent = new Event('resize', {\r\n\t\t\t\t\t\t\tbubbles: false,\r\n\t\t\t\t\t\t\tcancelable: false\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} catch (e) { // stupid IE\r\n\t\t\t\t\t\tresizeEvent = document.createEvent(\"Event\");\r\n\t\t\t\t\t\tresizeEvent.initEvent(\"resize\", false, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t_options.container.dispatchEvent(resizeEvent);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t_sceneObjects.forEach(function (scene, index) { // refresh all scenes\r\n\t\t\t\tscene.refresh();\r\n\t\t\t});\r\n\t\t\tscheduleRefresh();\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Send a debug message to the console.\r\n\t\t * provided publicly with _log for plugins\r\n\t\t * @private\r\n\t\t *\r\n\t\t * @param {number} loglevel - The loglevel required to initiate output for the message.\r\n\t\t * @param {...mixed} output - One or more variables that should be passed to the console.\r\n\t\t */\r\n\t\tvar log = this._log = function (loglevel, output) {\r\n\t\t\tif (_options.loglevel >= loglevel) {\r\n\t\t\t\tArray.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \") ->\");\r\n\t\t\t\t_util.log.apply(window, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\t// for scenes we have getters for each option, but for the controller we don't, so we need to make it available externally for plugins\r\n\t\tthis._options = _options;\r\n\r\n\t\t/**\r\n\t\t * Sort scenes in ascending order of their start offset.\r\n\t\t * @private\r\n\t\t *\r\n\t\t * @param {array} ScenesArray - an array of ScrollMagic Scenes that should be sorted\r\n\t\t * @return {array} The sorted array of Scenes.\r\n\t\t */\r\n\t\tvar sortScenes = function (ScenesArray) {\r\n\t\t\tif (ScenesArray.length <= 1) {\r\n\t\t\t\treturn ScenesArray;\r\n\t\t\t} else {\r\n\t\t\t\tvar scenes = ScenesArray.slice(0);\r\n\t\t\t\tscenes.sort(function (a, b) {\r\n\t\t\t\t\treturn a.scrollOffset() > b.scrollOffset() ? 1 : -1;\r\n\t\t\t\t});\r\n\t\t\t\treturn scenes;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * public functions\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * Add one ore more scene(s) to the controller.  \r\n\t\t * This is the equivalent to `Scene.addTo(controller)`.\r\n\t\t * @public\r\n\t\t * @example\r\n\t\t * // with a previously defined scene\r\n\t\t * controller.addScene(scene);\r\n\t\t *\r\n\t\t * // with a newly created scene.\r\n\t\t * controller.addScene(new ScrollMagic.Scene({duration : 0}));\r\n\t\t *\r\n\t\t * // adding multiple scenes\r\n\t\t * controller.addScene([scene, scene2, new ScrollMagic.Scene({duration : 0})]);\r\n\t\t *\r\n\t\t * @param {(ScrollMagic.Scene|array)} newScene - ScrollMagic Scene or Array of Scenes to be added to the controller.\r\n\t\t * @return {Controller} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.addScene = function (newScene) {\r\n\t\t\tif (_util.type.Array(newScene)) {\r\n\t\t\t\tnewScene.forEach(function (scene, index) {\r\n\t\t\t\t\tController.addScene(scene);\r\n\t\t\t\t});\r\n\t\t\t} else if (newScene instanceof ScrollMagic.Scene) {\r\n\t\t\t\tif (newScene.controller() !== Controller) {\r\n\t\t\t\t\tnewScene.addTo(Controller);\r\n\t\t\t\t} else if (_sceneObjects.indexOf(newScene) < 0) {\r\n\t\t\t\t\t// new scene\r\n\t\t\t\t\t_sceneObjects.push(newScene); // add to array\r\n\t\t\t\t\t_sceneObjects = sortScenes(_sceneObjects); // sort\r\n\t\t\t\t\tnewScene.on(\"shift.controller_sort\", function () { // resort whenever scene moves\r\n\t\t\t\t\t\t_sceneObjects = sortScenes(_sceneObjects);\r\n\t\t\t\t\t});\r\n\t\t\t\t\t// insert Global defaults.\r\n\t\t\t\t\tfor (var key in _options.globalSceneOptions) {\r\n\t\t\t\t\t\tif (newScene[key]) {\r\n\t\t\t\t\t\t\tnewScene[key].call(newScene, _options.globalSceneOptions[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlog(3, \"adding Scene (now \" + _sceneObjects.length + \" total)\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlog(1, \"ERROR: invalid argument supplied for '.addScene()'\");\r\n\t\t\t}\r\n\t\t\treturn Controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Remove one ore more scene(s) from the controller.  \r\n\t\t * This is the equivalent to `Scene.remove()`.\r\n\t\t * @public\r\n\t\t * @example\r\n\t\t * // remove a scene from the controller\r\n\t\t * controller.removeScene(scene);\r\n\t\t *\r\n\t\t * // remove multiple scenes from the controller\r\n\t\t * controller.removeScene([scene, scene2, scene3]);\r\n\t\t *\r\n\t\t * @param {(ScrollMagic.Scene|array)} Scene - ScrollMagic Scene or Array of Scenes to be removed from the controller.\r\n\t\t * @returns {Controller} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.removeScene = function (Scene) {\r\n\t\t\tif (_util.type.Array(Scene)) {\r\n\t\t\t\tScene.forEach(function (scene, index) {\r\n\t\t\t\t\tController.removeScene(scene);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tvar index = _sceneObjects.indexOf(Scene);\r\n\t\t\t\tif (index > -1) {\r\n\t\t\t\t\tScene.off(\"shift.controller_sort\");\r\n\t\t\t\t\t_sceneObjects.splice(index, 1);\r\n\t\t\t\t\tlog(3, \"removing Scene (now \" + _sceneObjects.length + \" left)\");\r\n\t\t\t\t\tScene.remove();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn Controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t * Update one ore more scene(s) according to the scroll position of the container.  \r\n\t * This is the equivalent to `Scene.update()`.  \r\n\t * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container.  \r\n\t * It then updates the current scene state accordingly (or does nothing, if the state is already correct) \u2013 Pins will be set to their correct position and tweens will be updated to their correct progress.  \r\n\t * _**Note:** This method gets called constantly whenever Controller detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._\r\n\t * @public\r\n\t * @example\r\n\t * // update a specific scene on next cycle\r\n \t * controller.updateScene(scene);\r\n \t *\r\n\t * // update a specific scene immediately\r\n\t * controller.updateScene(scene, true);\r\n \t *\r\n\t * // update multiple scenes scene on next cycle\r\n\t * controller.updateScene([scene1, scene2, scene3]);\r\n\t *\r\n\t * @param {ScrollMagic.Scene} Scene - ScrollMagic Scene or Array of Scenes that is/are supposed to be updated.\r\n\t * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle.  \r\n\t \t\t\t\t\t\t\t\t\t\t  This is useful when changing multiple properties of the scene - this way it will only be updated once all new properties are set (updateScenes).\r\n\t * @return {Controller} Parent object for chaining.\r\n\t */\r\n\t\tthis.updateScene = function (Scene, immediately) {\r\n\t\t\tif (_util.type.Array(Scene)) {\r\n\t\t\t\tScene.forEach(function (scene, index) {\r\n\t\t\t\t\tController.updateScene(scene, immediately);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (immediately) {\r\n\t\t\t\t\tScene.update(true);\r\n\t\t\t\t} else if (_updateScenesOnNextCycle !== true && Scene instanceof ScrollMagic.Scene) { // if _updateScenesOnNextCycle is true, all connected scenes are already scheduled for update\r\n\t\t\t\t\t// prep array for next update cycle\r\n\t\t\t\t\t_updateScenesOnNextCycle = _updateScenesOnNextCycle || [];\r\n\t\t\t\t\tif (_updateScenesOnNextCycle.indexOf(Scene) == -1) {\r\n\t\t\t\t\t\t_updateScenesOnNextCycle.push(Scene);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t_updateScenesOnNextCycle = sortScenes(_updateScenesOnNextCycle); // sort\r\n\t\t\t\t\tdebounceUpdate();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn Controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Updates the controller params and calls updateScene on every scene, that is attached to the controller.  \r\n\t\t * See `Controller.updateScene()` for more information about what this means.  \r\n\t\t * In most cases you will not need this function, as it is called constantly, whenever ScrollMagic detects a state change event, like resize or scroll.  \r\n\t\t * The only application for this method is when ScrollMagic fails to detect these events.  \r\n\t\t * One application is with some external scroll libraries (like iScroll) that move an internal container to a negative offset instead of actually scrolling. In this case the update on the controller needs to be called whenever the child container's position changes.\r\n\t\t * For this case there will also be the need to provide a custom function to calculate the correct scroll position. See `Controller.scrollPos()` for details.\r\n\t\t * @public\r\n\t\t * @example\r\n\t\t * // update the controller on next cycle (saves performance due to elimination of redundant updates)\r\n\t\t * controller.update();\r\n\t\t *\r\n\t\t * // update the controller immediately\r\n\t\t * controller.update(true);\r\n\t\t *\r\n\t\t * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance)\r\n\t\t * @return {Controller} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.update = function (immediately) {\r\n\t\t\tonChange({\r\n\t\t\t\ttype: \"resize\"\r\n\t\t\t}); // will update size and set _updateScenesOnNextCycle to true\r\n\t\t\tif (immediately) {\r\n\t\t\t\tupdateScenes();\r\n\t\t\t}\r\n\t\t\treturn Controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Scroll to a numeric scroll offset, a DOM element, the start of a scene or provide an alternate method for scrolling.  \r\n\t\t * For vertical controllers it will change the top scroll offset and for horizontal applications it will change the left offset.\r\n\t\t * @public\r\n\t\t *\r\n\t\t * @since 1.1.0\r\n\t\t * @example\r\n\t\t * // scroll to an offset of 100\r\n\t\t * controller.scrollTo(100);\r\n\t\t *\r\n\t\t * // scroll to a DOM element\r\n\t\t * controller.scrollTo(\"#anchor\");\r\n\t\t *\r\n\t\t * // scroll to the beginning of a scene\r\n\t\t * var scene = new ScrollMagic.Scene({offset: 200});\r\n\t\t * controller.scrollTo(scene);\r\n\t\t *\r\n\t\t * // define a new scroll position modification function (jQuery animate instead of jump)\r\n\t\t * controller.scrollTo(function (newScrollPos) {\r\n\t\t *\t$(\"html, body\").animate({scrollTop: newScrollPos});\r\n\t\t * });\r\n\t\t * controller.scrollTo(100); // call as usual, but the new function will be used instead\r\n\t\t *\r\n\t\t * // define a new scroll function with an additional parameter\r\n\t\t * controller.scrollTo(function (newScrollPos, message) {\r\n\t\t *  console.log(message);\r\n\t\t *\t$(this).animate({scrollTop: newScrollPos});\r\n\t\t * });\r\n\t\t * // call as usual, but supply an extra parameter to the defined custom function\r\n\t\t * controller.scrollTo(100, \"my message\");\r\n\t\t *\r\n\t\t * // define a new scroll function with an additional parameter containing multiple variables\r\n\t\t * controller.scrollTo(function (newScrollPos, options) {\r\n\t\t *  someGlobalVar = options.a + options.b;\r\n\t\t *\t$(this).animate({scrollTop: newScrollPos});\r\n\t\t * });\r\n\t\t * // call as usual, but supply an extra parameter containing multiple options\r\n\t\t * controller.scrollTo(100, {a: 1, b: 2});\r\n\t\t *\r\n\t\t * // define a new scroll function with a callback supplied as an additional parameter\r\n\t\t * controller.scrollTo(function (newScrollPos, callback) {\r\n\t\t *\t$(this).animate({scrollTop: newScrollPos}, 400, \"swing\", callback);\r\n\t\t * });\r\n\t\t * // call as usual, but supply an extra parameter, which is used as a callback in the previously defined custom scroll function\r\n\t\t * controller.scrollTo(100, function() {\r\n\t\t *\tconsole.log(\"scroll has finished.\");\r\n\t\t * });\r\n\t\t *\r\n\t\t * @param {mixed} scrollTarget - The supplied argument can be one of these types:\r\n\t\t * 1. `number` -> The container will scroll to this new scroll offset.\r\n\t\t * 2. `string` or `object` -> Can be a selector or a DOM object.  \r\n\t\t *  The container will scroll to the position of this element.\r\n\t\t * 3. `ScrollMagic Scene` -> The container will scroll to the start of this scene.\r\n\t\t * 4. `function` -> This function will be used for future scroll position modifications.  \r\n\t\t *  This provides a way for you to change the behaviour of scrolling and adding new behaviour like animation. The function receives the new scroll position as a parameter and a reference to the container element using `this`.  \r\n\t\t *  It may also optionally receive an optional additional parameter (see below)  \r\n\t\t *  _**NOTE:**  \r\n\t\t *  All other options will still work as expected, using the new function to scroll._\r\n\t\t * @param {mixed} [additionalParameter] - If a custom scroll function was defined (see above 4.), you may want to supply additional parameters to it, when calling it. You can do this using this parameter \u2013 see examples for details. Please note, that this parameter will have no effect, if you use the default scrolling function.\r\n\t\t * @returns {Controller} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.scrollTo = function (scrollTarget, additionalParameter) {\r\n\t\t\tif (_util.type.Number(scrollTarget)) { // excecute\r\n\t\t\t\tsetScrollPos.call(_options.container, scrollTarget, additionalParameter);\r\n\t\t\t} else if (scrollTarget instanceof ScrollMagic.Scene) { // scroll to scene\r\n\t\t\t\tif (scrollTarget.controller() === Controller) { // check if the controller is associated with this scene\r\n\t\t\t\t\tController.scrollTo(scrollTarget.scrollOffset(), additionalParameter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlog(2, \"scrollTo(): The supplied scene does not belong to this controller. Scroll cancelled.\", scrollTarget);\r\n\t\t\t\t}\r\n\t\t\t} else if (_util.type.Function(scrollTarget)) { // assign new scroll function\r\n\t\t\t\tsetScrollPos = scrollTarget;\r\n\t\t\t} else { // scroll to element\r\n\t\t\t\tvar elem = _util.get.elements(scrollTarget)[0];\r\n\t\t\t\tif (elem) {\r\n\t\t\t\t\t// if parent is pin spacer, use spacer position instead so correct start position is returned for pinned elements.\r\n\t\t\t\t\twhile (elem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {\r\n\t\t\t\t\t\telem = elem.parentNode;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar\r\n\t\t\t\t\t\tparam = _options.vertical ? \"top\" : \"left\", // which param is of interest ?\r\n\t\t\t\t\t\tcontainerOffset = _util.get.offset(_options.container), // container position is needed because element offset is returned in relation to document, not in relation to container.\r\n\t\t\t\t\t\telementOffset = _util.get.offset(elem);\r\n\r\n\t\t\t\t\tif (!_isDocument) { // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent\r\n\t\t\t\t\t\tcontainerOffset[param] -= Controller.scrollPos();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tController.scrollTo(elementOffset[param] - containerOffset[param], additionalParameter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlog(2, \"scrollTo(): The supplied argument is invalid. Scroll cancelled.\", scrollTarget);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn Controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** the current scrollPosition or **Set** a new method to calculate it.  \r\n\t\t * -> **GET**:\r\n\t\t * When used as a getter this function will return the current scroll position.  \r\n\t\t * To get a cached value use Controller.info(\"scrollPos\"), which will be updated in the update cycle.  \r\n\t\t * For vertical controllers it will return the top scroll offset and for horizontal applications it will return the left offset.\r\n\t\t *\r\n\t\t * -> **SET**:\r\n\t\t * When used as a setter this method prodes a way to permanently overwrite the controller's scroll position calculation.  \r\n\t\t * A typical usecase is when the scroll position is not reflected by the containers scrollTop or scrollLeft values, but for example by the inner offset of a child container.  \r\n\t\t * Moving a child container inside a parent is a commonly used method for several scrolling frameworks, including iScroll.  \r\n\t\t * By providing an alternate calculation function you can make sure ScrollMagic receives the correct scroll position.  \r\n\t\t * Please also bear in mind that your function should return y values for vertical scrolls an x for horizontals.\r\n\t\t *\r\n\t\t * To change the current scroll position please use `Controller.scrollTo()`.\r\n\t\t * @public\r\n\t\t *\r\n\t\t * @example\r\n\t\t * // get the current scroll Position\r\n\t\t * var scrollPos = controller.scrollPos();\r\n\t\t *\r\n\t\t * // set a new scroll position calculation method\r\n\t\t * controller.scrollPos(function () {\r\n\t\t *\treturn this.info(\"vertical\") ? -mychildcontainer.y : -mychildcontainer.x\r\n\t\t * });\r\n\t\t *\r\n\t\t * @param {function} [scrollPosMethod] - The function to be used for the scroll position calculation of the container.\r\n\t\t * @returns {(number|Controller)} Current scroll position or parent object for chaining.\r\n\t\t */\r\n\t\tthis.scrollPos = function (scrollPosMethod) {\r\n\t\t\tif (!arguments.length) { // get\r\n\t\t\t\treturn getScrollPos.call(Controller);\r\n\t\t\t} else { // set\r\n\t\t\t\tif (_util.type.Function(scrollPosMethod)) {\r\n\t\t\t\t\tgetScrollPos = scrollPosMethod;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlog(2, \"Provided value for method 'scrollPos' is not a function. To change the current scroll position use 'scrollTo()'.\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn Controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** all infos or one in particular about the controller.\r\n\t\t * @public\r\n\t\t * @example\r\n\t\t * // returns the current scroll position (number)\r\n\t\t * var scrollPos = controller.info(\"scrollPos\");\r\n\t\t *\r\n\t\t * // returns all infos as an object\r\n\t\t * var infos = controller.info();\r\n\t\t *\r\n\t\t * @param {string} [about] - If passed only this info will be returned instead of an object containing all.  \r\n\t\t \t\t\t\t\t\t\t Valid options are:\r\n\t\t \t\t\t\t\t\t\t ** `\"size\"` => the current viewport size of the container\r\n\t\t \t\t\t\t\t\t\t ** `\"vertical\"` => true if vertical scrolling, otherwise false\r\n\t\t \t\t\t\t\t\t\t ** `\"scrollPos\"` => the current scroll position\r\n\t\t \t\t\t\t\t\t\t ** `\"scrollDirection\"` => the last known direction of the scroll\r\n\t\t \t\t\t\t\t\t\t ** `\"container\"` => the container element\r\n\t\t \t\t\t\t\t\t\t ** `\"isDocument\"` => true if container element is the document.\r\n\t\t * @returns {(mixed|object)} The requested info(s).\r\n\t\t */\r\n\t\tthis.info = function (about) {\r\n\t\t\tvar values = {\r\n\t\t\t\tsize: _viewPortSize, // contains height or width (in regard to orientation);\r\n\t\t\t\tvertical: _options.vertical,\r\n\t\t\t\tscrollPos: _scrollPos,\r\n\t\t\t\tscrollDirection: _scrollDirection,\r\n\t\t\t\tcontainer: _options.container,\r\n\t\t\t\tisDocument: _isDocument\r\n\t\t\t};\r\n\t\t\tif (!arguments.length) { // get all as an object\r\n\t\t\t\treturn values;\r\n\t\t\t} else if (values[about] !== undefined) {\r\n\t\t\t\treturn values[about];\r\n\t\t\t} else {\r\n\t\t\t\tlog(1, \"ERROR: option \\\"\" + about + \"\\\" is not available\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the current loglevel option value.\r\n\t\t * @public\r\n\t\t *\r\n\t\t * @example\r\n\t\t * // get the current value\r\n\t\t * var loglevel = controller.loglevel();\r\n\t\t *\r\n\t\t * // set a new value\r\n\t\t * controller.loglevel(3);\r\n\t\t *\r\n\t\t * @param {number} [newLoglevel] - The new loglevel setting of the Controller. `[0-3]`\r\n\t\t * @returns {(number|Controller)} Current loglevel or parent object for chaining.\r\n\t\t */\r\n\t\tthis.loglevel = function (newLoglevel) {\r\n\t\t\tif (!arguments.length) { // get\r\n\t\t\t\treturn _options.loglevel;\r\n\t\t\t} else if (_options.loglevel != newLoglevel) { // set\r\n\t\t\t\t_options.loglevel = newLoglevel;\r\n\t\t\t}\r\n\t\t\treturn Controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the current enabled state of the controller.  \r\n\t\t * This can be used to disable all Scenes connected to the controller without destroying or removing them.\r\n\t\t * @public\r\n\t\t *\r\n\t\t * @example\r\n\t\t * // get the current value\r\n\t\t * var enabled = controller.enabled();\r\n\t\t *\r\n\t\t * // disable the controller\r\n\t\t * controller.enabled(false);\r\n\t\t *\r\n\t\t * @param {boolean} [newState] - The new enabled state of the controller `true` or `false`.\r\n\t\t * @returns {(boolean|Controller)} Current enabled state or parent object for chaining.\r\n\t\t */\r\n\t\tthis.enabled = function (newState) {\r\n\t\t\tif (!arguments.length) { // get\r\n\t\t\t\treturn _enabled;\r\n\t\t\t} else if (_enabled != newState) { // set\r\n\t\t\t\t_enabled = !!newState;\r\n\t\t\t\tController.updateScene(_sceneObjects, true);\r\n\t\t\t}\r\n\t\t\treturn Controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Destroy the Controller, all Scenes and everything.\r\n\t\t * @public\r\n\t\t *\r\n\t\t * @example\r\n\t\t * // without resetting the scenes\r\n\t\t * controller = controller.destroy();\r\n\t\t *\r\n\t\t * // with scene reset\r\n\t\t * controller = controller.destroy(true);\r\n\t\t *\r\n\t\t * @param {boolean} [resetScenes=false] - If `true` the pins and tweens (if existent) of all scenes will be reset.\r\n\t\t * @returns {null} Null to unset handler variables.\r\n\t\t */\r\n\t\tthis.destroy = function (resetScenes) {\r\n\t\t\twindow.clearTimeout(_refreshTimeout);\r\n\t\t\tvar i = _sceneObjects.length;\r\n\t\t\twhile (i--) {\r\n\t\t\t\t_sceneObjects[i].destroy(resetScenes);\r\n\t\t\t}\r\n\t\t\t_options.container.removeEventListener(\"resize\", onChange);\r\n\t\t\t_options.container.removeEventListener(\"scroll\", onChange);\r\n\t\t\t_util.cAF(_updateTimeout);\r\n\t\t\tlog(3, \"destroyed \" + NAMESPACE + \" (reset: \" + (resetScenes ? \"true\" : \"false\") + \")\");\r\n\t\t\treturn null;\r\n\t\t};\r\n\r\n\t\t// INIT\r\n\t\tconstruct();\r\n\t\treturn Controller;\r\n\t};\r\n\r\n\t// store pagewide controller options\r\n\tvar CONTROLLER_OPTIONS = {\r\n\t\tdefaults: {\r\n\t\t\tcontainer: window,\r\n\t\t\tvertical: true,\r\n\t\t\tglobalSceneOptions: {},\r\n\t\t\tloglevel: 2,\r\n\t\t\trefreshInterval: 100\r\n\t\t}\r\n\t};\r\n\t/*\r\n\t * method used to add an option to ScrollMagic Scenes.\r\n\t */\r\n\tScrollMagic.Controller.addOption = function (name, defaultValue) {\r\n\t\tCONTROLLER_OPTIONS.defaults[name] = defaultValue;\r\n\t};\r\n\t// instance extension function for plugins\r\n\tScrollMagic.Controller.extend = function (extension) {\r\n\t\tvar oldClass = this;\r\n\t\tScrollMagic.Controller = function () {\r\n\t\t\toldClass.apply(this, arguments);\r\n\t\t\tthis.$super = _util.extend({}, this); // copy parent state\r\n\t\t\treturn extension.apply(this, arguments) || this;\r\n\t\t};\r\n\t\t_util.extend(ScrollMagic.Controller, oldClass); // copy properties\r\n\t\tScrollMagic.Controller.prototype = oldClass.prototype; // copy prototype\r\n\t\tScrollMagic.Controller.prototype.constructor = ScrollMagic.Controller; // restore constructor\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * A Scene defines where the controller should react and how.\r\n\t *\r\n\t * @class\r\n\t *\r\n\t * @example\r\n\t * // create a standard scene and add it to a controller\r\n\t * new ScrollMagic.Scene()\r\n\t *\t\t.addTo(controller);\r\n\t *\r\n\t * // create a scene with custom options and assign a handler to it.\r\n\t * var scene = new ScrollMagic.Scene({\r\n\t * \t\tduration: 100,\r\n\t *\t\toffset: 200,\r\n\t *\t\ttriggerHook: \"onEnter\",\r\n\t *\t\treverse: false\r\n\t * });\r\n\t *\r\n\t * @param {object} [options] - Options for the Scene. The options can be updated at any time.  \r\n\t \t\t\t\t\t\t\t   Instead of setting the options for each scene individually you can also set them globally in the controller as the controllers `globalSceneOptions` option. The object accepts the same properties as the ones below.  \r\n\t \t\t\t\t\t\t\t   When a scene is added to the controller the options defined using the Scene constructor will be overwritten by those set in `globalSceneOptions`.\r\n\t * @param {(number|string|function)} [options.duration=0] - The duration of the scene. \r\n\t \t\t\t\t\tPlease see `Scene.duration()` for details.\r\n\t * @param {number} [options.offset=0] - Offset Value for the Trigger Position. If no triggerElement is defined this will be the scroll distance from the start of the page, after which the scene will start.\r\n\t * @param {(string|object)} [options.triggerElement=null] - Selector or DOM object that defines the start of the scene. If undefined the scene will start right at the start of the page (unless an offset is set).\r\n\t * @param {(number|string)} [options.triggerHook=\"onCenter\"] - Can be a number between 0 and 1 defining the position of the trigger Hook in relation to the viewport.  \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  Can also be defined using a string:\r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  ** `\"onEnter\"` => `1`\r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  ** `\"onCenter\"` => `0.5`\r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  ** `\"onLeave\"` => `0`\r\n\t * @param {boolean} [options.reverse=true] - Should the scene reverse, when scrolling up?\r\n\t * @param {number} [options.loglevel=2] - Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic.\r\n\t \t\t\t\t\t\t\t\t\t\t  ** `0` => silent\r\n\t \t\t\t\t\t\t\t\t\t\t  ** `1` => errors\r\n\t \t\t\t\t\t\t\t\t\t\t  ** `2` => errors, warnings\r\n\t \t\t\t\t\t\t\t\t\t\t  ** `3` => errors, warnings, debuginfo\r\n\t * \r\n\t */\r\n\tScrollMagic.Scene = function (options) {\r\n\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * settings\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\tvar\r\n\t\t\tNAMESPACE = 'ScrollMagic.Scene',\r\n\t\t\tSCENE_STATE_BEFORE = 'BEFORE',\r\n\t\t\tSCENE_STATE_DURING = 'DURING',\r\n\t\t\tSCENE_STATE_AFTER = 'AFTER',\r\n\t\t\tDEFAULT_OPTIONS = SCENE_OPTIONS.defaults;\r\n\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * private vars\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\tvar\r\n\t\t\tScene = this,\r\n\t\t\t_options = _util.extend({}, DEFAULT_OPTIONS, options),\r\n\t\t\t_state = SCENE_STATE_BEFORE,\r\n\t\t\t_progress = 0,\r\n\t\t\t_scrollOffset = {\r\n\t\t\t\tstart: 0,\r\n\t\t\t\tend: 0\r\n\t\t\t}, // reflects the controllers's scroll position for the start and end of the scene respectively\r\n\t\t\t_triggerPos = 0,\r\n\t\t\t_enabled = true,\r\n\t\t\t_durationUpdateMethod,\r\n\t\t\t_controller;\r\n\r\n\t\t/**\r\n\t\t * Internal constructor function of the ScrollMagic Scene\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar construct = function () {\r\n\t\t\tfor (var key in _options) { // check supplied options\r\n\t\t\t\tif (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\r\n\t\t\t\t\tlog(2, \"WARNING: Unknown option \\\"\" + key + \"\\\"\");\r\n\t\t\t\t\tdelete _options[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// add getters/setters for all possible options\r\n\t\t\tfor (var optionName in DEFAULT_OPTIONS) {\r\n\t\t\t\taddSceneOption(optionName);\r\n\t\t\t}\r\n\t\t\t// validate all options\r\n\t\t\tvalidateOption();\r\n\t\t};\r\n\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * Event Management\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\tvar _listeners = {};\r\n\t\t/**\r\n\t\t * Scene start event.  \r\n\t\t * Fires whenever the scroll position its the starting point of the scene.  \r\n\t\t * It will also fire when scrolling back up going over the start position of the scene. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback.\r\n\t\t *\r\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#start\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"start\", function (event) {\r\n\t\t * \tconsole.log(\"Hit start point of scene.\");\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\r\n\t\t * @property {string} event.state - The current state of the scene `\"BEFORE\"` or `\"DURING\"`\r\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene end event.  \r\n\t\t * Fires whenever the scroll position its the ending point of the scene.  \r\n\t\t * It will also fire when scrolling back up from after the scene and going over its end position. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback.\r\n\t\t *\r\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#end\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"end\", function (event) {\r\n\t\t * \tconsole.log(\"Hit end point of scene.\");\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\r\n\t\t * @property {string} event.state - The current state of the scene `\"DURING\"` or `\"AFTER\"`\r\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene enter event.  \r\n\t\t * Fires whenever the scene enters the \"DURING\" state.  \r\n\t\t * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene enters its active scroll timeframe, regardless of the scroll-direction.\r\n\t\t *\r\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#enter\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"enter\", function (event) {\r\n\t\t * \tconsole.log(\"Scene entered.\");\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\r\n\t\t * @property {string} event.state - The current state of the scene - always `\"DURING\"`\r\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene leave event.  \r\n\t\t * Fires whenever the scene's state goes from \"DURING\" to either \"BEFORE\" or \"AFTER\".  \r\n\t\t * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene leaves its active scroll timeframe, regardless of the scroll-direction.\r\n\t\t *\r\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#leave\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"leave\", function (event) {\r\n\t\t * \tconsole.log(\"Scene left.\");\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\r\n\t\t * @property {string} event.state - The current state of the scene `\"BEFORE\"` or `\"AFTER\"`\r\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene update event.  \r\n\t\t * Fires whenever the scene is updated (but not necessarily changes the progress).\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#update\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"update\", function (event) {\r\n\t\t * \tconsole.log(\"Scene updated.\");\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {number} event.startPos - The starting position of the scene (in relation to the conainer)\r\n\t\t * @property {number} event.endPos - The ending position of the scene (in relation to the conainer)\r\n\t\t * @property {number} event.scrollPos - The current scroll position of the container\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene progress event.  \r\n\t\t * Fires whenever the progress of the scene changes.\r\n\t\t *\r\n\t\t * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#progress\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"progress\", function (event) {\r\n\t\t * \tconsole.log(\"Scene progress changed to \" + event.progress);\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {number} event.progress - Reflects the current progress of the scene\r\n\t\t * @property {string} event.state - The current state of the scene `\"BEFORE\"`, `\"DURING\"` or `\"AFTER\"`\r\n\t\t * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene change event.  \r\n\t\t * Fires whenvever a property of the scene is changed.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#change\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"change\", function (event) {\r\n\t\t * \tconsole.log(\"Scene Property \\\"\" + event.what + \"\\\" changed to \" + event.newval);\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {string} event.what - Indicates what value has been changed\r\n\t\t * @property {mixed} event.newval - The new value of the changed property\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene shift event.  \r\n\t\t * Fires whenvever the start or end **scroll offset** of the scene change.\r\n\t\t * This happens explicitely, when one of these values change: `offset`, `duration` or `triggerHook`.\r\n\t\t * It will fire implicitly when the `triggerElement` changes, if the new element has a different position (most cases).\r\n\t\t * It will also fire implicitly when the size of the container changes and the triggerHook is anything other than `onLeave`.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#shift\r\n\t\t * @since 1.1.0\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"shift\", function (event) {\r\n\t\t * \tconsole.log(\"Scene moved, because the \" + event.reason + \" has changed.)\");\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {string} event.reason - Indicates why the scene has shifted\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene destroy event.  \r\n\t\t * Fires whenvever the scene is destroyed.\r\n\t\t * This can be used to tidy up custom behaviour used in events.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#destroy\r\n\t\t * @since 1.1.0\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"enter\", function (event) {\r\n\t\t *        // add custom action\r\n\t\t *        $(\"#my-elem\").left(\"200\");\r\n\t\t *      })\r\n\t\t *      .on(\"destroy\", function (event) {\r\n\t\t *        // reset my element to start position\r\n\t\t *        if (event.reset) {\r\n\t\t *          $(\"#my-elem\").left(\"0\");\r\n\t\t *        }\r\n\t\t *      });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {boolean} event.reset - Indicates if the destroy method was called with reset `true` or `false`.\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene add event.  \r\n\t\t * Fires when the scene is added to a controller.\r\n\t\t * This is mostly used by plugins to know that change might be due.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#add\r\n\t\t * @since 2.0.0\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"add\", function (event) {\r\n\t\t * \tconsole.log('Scene was added to a new controller.');\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t * @property {boolean} event.controller - The controller object the scene was added to.\r\n\t\t */\r\n\t\t/**\r\n\t\t * Scene remove event.  \r\n\t\t * Fires when the scene is removed from a controller.\r\n\t\t * This is mostly used by plugins to know that change might be due.\r\n\t\t *\r\n\t\t * @event ScrollMagic.Scene#remove\r\n\t\t * @since 2.0.0\r\n\t\t *\r\n\t\t * @example\r\n\t\t * scene.on(\"remove\", function (event) {\r\n\t\t * \tconsole.log('Scene was removed from its controller.');\r\n\t\t * });\r\n\t\t *\r\n\t\t * @property {object} event - The event Object passed to each callback\r\n\t\t * @property {string} event.type - The name of the event\r\n\t\t * @property {Scene} event.target - The Scene object that triggered this event\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * Add one ore more event listener.  \r\n\t\t * The callback function will be fired at the respective event, and an object containing relevant data will be passed to the callback.\r\n\t\t * @method ScrollMagic.Scene#on\r\n\t\t *\r\n\t\t * @example\r\n\t\t * function callback (event) {\r\n\t\t * \t\tconsole.log(\"Event fired! (\" + event.type + \")\");\r\n\t\t * }\r\n\t\t * // add listeners\r\n\t\t * scene.on(\"change update progress start end enter leave\", callback);\r\n\t\t *\r\n\t\t * @param {string} names - The name or names of the event the callback should be attached to.\r\n\t\t * @param {function} callback - A function that should be executed, when the event is dispatched. An event object will be passed to the callback.\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.on = function (names, callback) {\r\n\t\t\tif (_util.type.Function(callback)) {\r\n\t\t\t\tnames = names.trim().split(' ');\r\n\t\t\t\tnames.forEach(function (fullname) {\r\n\t\t\t\t\tvar\r\n\t\t\t\t\t\tnameparts = fullname.split('.'),\r\n\t\t\t\t\t\teventname = nameparts[0],\r\n\t\t\t\t\t\tnamespace = nameparts[1];\r\n\t\t\t\t\tif (eventname != \"*\") { // disallow wildcards\r\n\t\t\t\t\t\tif (!_listeners[eventname]) {\r\n\t\t\t\t\t\t\t_listeners[eventname] = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t_listeners[eventname].push({\r\n\t\t\t\t\t\t\tnamespace: namespace || '',\r\n\t\t\t\t\t\t\tcallback: callback\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tlog(1, \"ERROR when calling '.on()': Supplied callback for '\" + names + \"' is not a valid function!\");\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Remove one or more event listener.\r\n\t\t * @method ScrollMagic.Scene#off\r\n\t\t *\r\n\t\t * @example\r\n\t\t * function callback (event) {\r\n\t\t * \t\tconsole.log(\"Event fired! (\" + event.type + \")\");\r\n\t\t * }\r\n\t\t * // add listeners\r\n\t\t * scene.on(\"change update\", callback);\r\n\t\t * // remove listeners\r\n\t\t * scene.off(\"change update\", callback);\r\n\t\t *\r\n\t\t * @param {string} names - The name or names of the event that should be removed.\r\n\t\t * @param {function} [callback] - A specific callback function that should be removed. If none is passed all callbacks to the event listener will be removed.\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.off = function (names, callback) {\r\n\t\t\tif (!names) {\r\n\t\t\t\tlog(1, \"ERROR: Invalid event name supplied.\");\r\n\t\t\t\treturn Scene;\r\n\t\t\t}\r\n\t\t\tnames = names.trim().split(' ');\r\n\t\t\tnames.forEach(function (fullname, key) {\r\n\t\t\t\tvar\r\n\t\t\t\t\tnameparts = fullname.split('.'),\r\n\t\t\t\t\teventname = nameparts[0],\r\n\t\t\t\t\tnamespace = nameparts[1] || '',\r\n\t\t\t\t\tremoveList = eventname === '*' ? Object.keys(_listeners) : [eventname];\r\n\t\t\t\tremoveList.forEach(function (remove) {\r\n\t\t\t\t\tvar\r\n\t\t\t\t\t\tlist = _listeners[remove] || [],\r\n\t\t\t\t\t\ti = list.length;\r\n\t\t\t\t\twhile (i--) {\r\n\t\t\t\t\t\tvar listener = list[i];\r\n\t\t\t\t\t\tif (listener && (namespace === listener.namespace || namespace === '*') && (!callback || callback == listener.callback)) {\r\n\t\t\t\t\t\t\tlist.splice(i, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!list.length) {\r\n\t\t\t\t\t\tdelete _listeners[remove];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Trigger an event.\r\n\t\t * @method ScrollMagic.Scene#trigger\r\n\t\t *\r\n\t\t * @example\r\n\t\t * this.trigger(\"change\");\r\n\t\t *\r\n\t\t * @param {string} name - The name of the event that should be triggered.\r\n\t\t * @param {object} [vars] - An object containing info that should be passed to the callback.\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.trigger = function (name, vars) {\r\n\t\t\tif (name) {\r\n\t\t\t\tvar\r\n\t\t\t\t\tnameparts = name.trim().split('.'),\r\n\t\t\t\t\teventname = nameparts[0],\r\n\t\t\t\t\tnamespace = nameparts[1],\r\n\t\t\t\t\tlisteners = _listeners[eventname];\r\n\t\t\t\tlog(3, 'event fired:', eventname, vars ? \"->\" : '', vars || '');\r\n\t\t\t\tif (listeners) {\r\n\t\t\t\t\tlisteners.forEach(function (listener, key) {\r\n\t\t\t\t\t\tif (!namespace || namespace === listener.namespace) {\r\n\t\t\t\t\t\t\tlistener.callback.call(Scene, new ScrollMagic.Event(eventname, listener.namespace, Scene, vars));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlog(1, \"ERROR: Invalid event name supplied.\");\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t// set event listeners\r\n\t\tScene\r\n\t\t\t.on(\"change.internal\", function (e) {\r\n\t\t\t\tif (e.what !== \"loglevel\" && e.what !== \"tweenChanges\") { // no need for a scene update scene with these options...\r\n\t\t\t\t\tif (e.what === \"triggerElement\") {\r\n\t\t\t\t\t\tupdateTriggerElementPosition();\r\n\t\t\t\t\t} else if (e.what === \"reverse\") { // the only property left that may have an impact on the current scene state. Everything else is handled by the shift event.\r\n\t\t\t\t\t\tScene.update();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on(\"shift.internal\", function (e) {\r\n\t\t\t\tupdateScrollOffset();\r\n\t\t\t\tScene.update(); // update scene to reflect new position\r\n\t\t\t});\r\n\r\n\t\t/**\r\n\t\t * Send a debug message to the console.\r\n\t\t * @private\r\n\t\t * but provided publicly with _log for plugins\r\n\t\t *\r\n\t\t * @param {number} loglevel - The loglevel required to initiate output for the message.\r\n\t\t * @param {...mixed} output - One or more variables that should be passed to the console.\r\n\t\t */\r\n\t\tvar log = this._log = function (loglevel, output) {\r\n\t\t\tif (_options.loglevel >= loglevel) {\r\n\t\t\t\tArray.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \") ->\");\r\n\t\t\t\t_util.log.apply(window, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Add the scene to a controller.  \r\n\t\t * This is the equivalent to `Controller.addScene(scene)`.\r\n\t\t * @method ScrollMagic.Scene#addTo\r\n\t\t *\r\n\t\t * @example\r\n\t\t * // add a scene to a ScrollMagic Controller\r\n\t\t * scene.addTo(controller);\r\n\t\t *\r\n\t\t * @param {ScrollMagic.Controller} controller - The controller to which the scene should be added.\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.addTo = function (controller) {\r\n\t\t\tif (!(controller instanceof ScrollMagic.Controller)) {\r\n\t\t\t\tlog(1, \"ERROR: supplied argument of 'addTo()' is not a valid ScrollMagic Controller\");\r\n\t\t\t} else if (_controller != controller) {\r\n\t\t\t\t// new controller\r\n\t\t\t\tif (_controller) { // was associated to a different controller before, so remove it...\r\n\t\t\t\t\t_controller.removeScene(Scene);\r\n\t\t\t\t}\r\n\t\t\t\t_controller = controller;\r\n\t\t\t\tvalidateOption();\r\n\t\t\t\tupdateDuration(true);\r\n\t\t\t\tupdateTriggerElementPosition(true);\r\n\t\t\t\tupdateScrollOffset();\r\n\t\t\t\t_controller.info(\"container\").addEventListener('resize', onContainerResize);\r\n\t\t\t\tcontroller.addScene(Scene);\r\n\t\t\t\tScene.trigger(\"add\", {\r\n\t\t\t\t\tcontroller: _controller\r\n\t\t\t\t});\r\n\t\t\t\tlog(3, \"added \" + NAMESPACE + \" to controller\");\r\n\t\t\t\tScene.update();\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the current enabled state of the scene.  \r\n\t\t * This can be used to disable this scene without removing or destroying it.\r\n\t\t * @method ScrollMagic.Scene#enabled\r\n\t\t *\r\n\t\t * @example\r\n\t\t * // get the current value\r\n\t\t * var enabled = scene.enabled();\r\n\t\t *\r\n\t\t * // disable the scene\r\n\t\t * scene.enabled(false);\r\n\t\t *\r\n\t\t * @param {boolean} [newState] - The new enabled state of the scene `true` or `false`.\r\n\t\t * @returns {(boolean|Scene)} Current enabled state or parent object for chaining.\r\n\t\t */\r\n\t\tthis.enabled = function (newState) {\r\n\t\t\tif (!arguments.length) { // get\r\n\t\t\t\treturn _enabled;\r\n\t\t\t} else if (_enabled != newState) { // set\r\n\t\t\t\t_enabled = !!newState;\r\n\t\t\t\tScene.update(true);\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Remove the scene from the controller.  \r\n\t\t * This is the equivalent to `Controller.removeScene(scene)`.\r\n\t\t * The scene will not be updated anymore until you readd it to a controller.\r\n\t\t * To remove the pin or the tween you need to call removeTween() or removePin() respectively.\r\n\t\t * @method ScrollMagic.Scene#remove\r\n\t\t * @example\r\n\t\t * // remove the scene from its controller\r\n\t\t * scene.remove();\r\n\t\t *\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.remove = function () {\r\n\t\t\tif (_controller) {\r\n\t\t\t\t_controller.info(\"container\").removeEventListener('resize', onContainerResize);\r\n\t\t\t\tvar tmpParent = _controller;\r\n\t\t\t\t_controller = undefined;\r\n\t\t\t\ttmpParent.removeScene(Scene);\r\n\t\t\t\tScene.trigger(\"remove\");\r\n\t\t\t\tlog(3, \"removed \" + NAMESPACE + \" from controller\");\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Destroy the scene and everything.\r\n\t\t * @method ScrollMagic.Scene#destroy\r\n\t\t * @example\r\n\t\t * // destroy the scene without resetting the pin and tween to their initial positions\r\n\t\t * scene = scene.destroy();\r\n\t\t *\r\n\t\t * // destroy the scene and reset the pin and tween\r\n\t\t * scene = scene.destroy(true);\r\n\t\t *\r\n\t\t * @param {boolean} [reset=false] - If `true` the pin and tween (if existent) will be reset.\r\n\t\t * @returns {null} Null to unset handler variables.\r\n\t\t */\r\n\t\tthis.destroy = function (reset) {\r\n\t\t\tScene.trigger(\"destroy\", {\r\n\t\t\t\treset: reset\r\n\t\t\t});\r\n\t\t\tScene.remove();\r\n\t\t\tScene.off(\"*.*\");\r\n\t\t\tlog(3, \"destroyed \" + NAMESPACE + \" (reset: \" + (reset ? \"true\" : \"false\") + \")\");\r\n\t\t\treturn null;\r\n\t\t};\r\n\r\n\r\n\t\t/**\r\n\t\t * Updates the Scene to reflect the current state.  \r\n\t\t * This is the equivalent to `Controller.updateScene(scene, immediately)`.  \r\n\t\t * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container.  \r\n\t\t * It then updates the current scene state accordingly (or does nothing, if the state is already correct) \u2013 Pins will be set to their correct position and tweens will be updated to their correct progress.\r\n\t\t * This means an update doesn't necessarily result in a progress change. The `progress` event will be fired if the progress has indeed changed between this update and the last.  \r\n\t\t * _**NOTE:** This method gets called constantly whenever ScrollMagic detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._\r\n\t\t * @method ScrollMagic.Scene#update\r\n\t\t * @example\r\n\t\t * // update the scene on next tick\r\n\t\t * scene.update();\r\n\t\t *\r\n\t\t * // update the scene immediately\r\n\t\t * scene.update(true);\r\n\t\t *\r\n\t\t * @fires Scene.update\r\n\t\t *\r\n\t\t * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance).\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.update = function (immediately) {\r\n\t\t\tif (_controller) {\r\n\t\t\t\tif (immediately) {\r\n\t\t\t\t\tif (_controller.enabled() && _enabled) {\r\n\t\t\t\t\t\tvar\r\n\t\t\t\t\t\t\tscrollPos = _controller.info(\"scrollPos\"),\r\n\t\t\t\t\t\t\tnewProgress;\r\n\r\n\t\t\t\t\t\tif (_options.duration > 0) {\r\n\t\t\t\t\t\t\tnewProgress = (scrollPos - _scrollOffset.start) / (_scrollOffset.end - _scrollOffset.start);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tnewProgress = scrollPos >= _scrollOffset.start ? 1 : 0;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tScene.trigger(\"update\", {\r\n\t\t\t\t\t\t\tstartPos: _scrollOffset.start,\r\n\t\t\t\t\t\t\tendPos: _scrollOffset.end,\r\n\t\t\t\t\t\t\tscrollPos: scrollPos\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tScene.progress(newProgress);\r\n\t\t\t\t\t} else if (_pin && _state === SCENE_STATE_DURING) {\r\n\t\t\t\t\t\tupdatePinState(true); // unpin in position\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_controller.updateScene(Scene, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Updates dynamic scene variables like the trigger element position or the duration.\r\n\t\t * This method is automatically called in regular intervals from the controller. See {@link ScrollMagic.Controller} option `refreshInterval`.\r\n\t\t * \r\n\t\t * You can call it to minimize lag, for example when you intentionally change the position of the triggerElement.\r\n\t\t * If you don't it will simply be updated in the next refresh interval of the container, which is usually sufficient.\r\n\t\t *\r\n\t\t * @method ScrollMagic.Scene#refresh\r\n\t\t * @since 1.1.0\r\n\t\t * @example\r\n\t\t * scene = new ScrollMagic.Scene({triggerElement: \"#trigger\"});\r\n\t\t * \r\n\t\t * // change the position of the trigger\r\n\t\t * $(\"#trigger\").css(\"top\", 500);\r\n\t\t * // immediately let the scene know of this change\r\n\t\t * scene.refresh();\r\n\t\t *\r\n\t\t * @fires {@link Scene.shift}, if the trigger element position or the duration changed\r\n\t\t * @fires {@link Scene.change}, if the duration changed\r\n\t\t *\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.refresh = function () {\r\n\t\t\tupdateDuration();\r\n\t\t\tupdateTriggerElementPosition();\r\n\t\t\t// update trigger element position\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the scene's progress.  \r\n\t\t * Usually it shouldn't be necessary to use this as a setter, as it is set automatically by scene.update().  \r\n\t\t * The order in which the events are fired depends on the duration of the scene:\r\n\t\t *  1. Scenes with `duration == 0`:  \r\n\t\t *  Scenes that have no duration by definition have no ending. Thus the `end` event will never be fired.  \r\n\t\t *  When the trigger position of the scene is passed the events are always fired in this order:  \r\n\t\t *  `enter`, `start`, `progress` when scrolling forward  \r\n\t\t *  and  \r\n\t\t *  `progress`, `start`, `leave` when scrolling in reverse\r\n\t\t *  2. Scenes with `duration > 0`:  \r\n\t\t *  Scenes with a set duration have a defined start and end point.  \r\n\t\t *  When scrolling past the start position of the scene it will fire these events in this order:  \r\n\t\t *  `enter`, `start`, `progress`  \r\n\t\t *  When continuing to scroll and passing the end point it will fire these events:  \r\n\t\t *  `progress`, `end`, `leave`  \r\n\t\t *  When reversing through the end point these events are fired:  \r\n\t\t *  `enter`, `end`, `progress`  \r\n\t\t *  And when continuing to scroll past the start position in reverse it will fire:  \r\n\t\t *  `progress`, `start`, `leave`  \r\n\t\t *  In between start and end the `progress` event will be called constantly, whenever the progress changes.\r\n\t\t * \r\n\t\t * In short:  \r\n\t\t * `enter` events will always trigger **before** the progress update and `leave` envents will trigger **after** the progress update.  \r\n\t\t * `start` and `end` will always trigger at their respective position.\r\n\t\t * \r\n\t\t * Please review the event descriptions for details on the events and the event object that is passed to the callback.\r\n\t\t * \r\n\t\t * @method ScrollMagic.Scene#progress\r\n\t\t * @example\r\n\t\t * // get the current scene progress\r\n\t\t * var progress = scene.progress();\r\n\t\t *\r\n\t\t * // set new scene progress\r\n\t\t * scene.progress(0.3);\r\n\t\t *\r\n\t\t * @fires {@link Scene.enter}, when used as setter\r\n\t\t * @fires {@link Scene.start}, when used as setter\r\n\t\t * @fires {@link Scene.progress}, when used as setter\r\n\t\t * @fires {@link Scene.end}, when used as setter\r\n\t\t * @fires {@link Scene.leave}, when used as setter\r\n\t\t *\r\n\t\t * @param {number} [progress] - The new progress value of the scene `[0-1]`.\r\n\t\t * @returns {number} `get` -  Current scene progress.\r\n\t\t * @returns {Scene} `set` -  Parent object for chaining.\r\n\t\t */\r\n\t\tthis.progress = function (progress) {\r\n\t\t\tif (!arguments.length) { // get\r\n\t\t\t\treturn _progress;\r\n\t\t\t} else { // set\r\n\t\t\t\tvar\r\n\t\t\t\t\tdoUpdate = false,\r\n\t\t\t\t\toldState = _state,\r\n\t\t\t\t\tscrollDirection = _controller ? _controller.info(\"scrollDirection\") : 'PAUSED',\r\n\t\t\t\t\treverseOrForward = _options.reverse || progress >= _progress;\r\n\t\t\t\tif (_options.duration === 0) {\r\n\t\t\t\t\t// zero duration scenes\r\n\t\t\t\t\tdoUpdate = _progress != progress;\r\n\t\t\t\t\t_progress = progress < 1 && reverseOrForward ? 0 : 1;\r\n\t\t\t\t\t_state = _progress === 0 ? SCENE_STATE_BEFORE : SCENE_STATE_DURING;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// scenes with start and end\r\n\t\t\t\t\tif (progress < 0 && _state !== SCENE_STATE_BEFORE && reverseOrForward) {\r\n\t\t\t\t\t\t// go back to initial state\r\n\t\t\t\t\t\t_progress = 0;\r\n\t\t\t\t\t\t_state = SCENE_STATE_BEFORE;\r\n\t\t\t\t\t\tdoUpdate = true;\r\n\t\t\t\t\t} else if (progress >= 0 && progress < 1 && reverseOrForward) {\r\n\t\t\t\t\t\t_progress = progress;\r\n\t\t\t\t\t\t_state = SCENE_STATE_DURING;\r\n\t\t\t\t\t\tdoUpdate = true;\r\n\t\t\t\t\t} else if (progress >= 1 && _state !== SCENE_STATE_AFTER) {\r\n\t\t\t\t\t\t_progress = 1;\r\n\t\t\t\t\t\t_state = SCENE_STATE_AFTER;\r\n\t\t\t\t\t\tdoUpdate = true;\r\n\t\t\t\t\t} else if (_state === SCENE_STATE_DURING && !reverseOrForward) {\r\n\t\t\t\t\t\tupdatePinState(); // in case we scrolled backwards mid-scene and reverse is disabled => update the pin position, so it doesn't move back as well.\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (doUpdate) {\r\n\t\t\t\t\t// fire events\r\n\t\t\t\t\tvar\r\n\t\t\t\t\t\teventVars = {\r\n\t\t\t\t\t\t\tprogress: _progress,\r\n\t\t\t\t\t\t\tstate: _state,\r\n\t\t\t\t\t\t\tscrollDirection: scrollDirection\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstateChanged = _state != oldState;\r\n\r\n\t\t\t\t\tvar trigger = function (eventName) { // tmp helper to simplify code\r\n\t\t\t\t\t\tScene.trigger(eventName, eventVars);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (stateChanged) { // enter events\r\n\t\t\t\t\t\tif (oldState !== SCENE_STATE_DURING) {\r\n\t\t\t\t\t\t\ttrigger(\"enter\");\r\n\t\t\t\t\t\t\ttrigger(oldState === SCENE_STATE_BEFORE ? \"start\" : \"end\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttrigger(\"progress\");\r\n\t\t\t\t\tif (stateChanged) { // leave events\r\n\t\t\t\t\t\tif (_state !== SCENE_STATE_DURING) {\r\n\t\t\t\t\t\t\ttrigger(_state === SCENE_STATE_BEFORE ? \"start\" : \"end\");\r\n\t\t\t\t\t\t\ttrigger(\"leave\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Scene;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\t/**\r\n\t\t * Update the start and end scrollOffset of the container.\r\n\t\t * The positions reflect what the controller's scroll position will be at the start and end respectively.\r\n\t\t * Is called, when:\r\n\t\t *   - Scene event \"change\" is called with: offset, triggerHook, duration \r\n\t\t *   - scroll container event \"resize\" is called\r\n\t\t *   - the position of the triggerElement changes\r\n\t\t *   - the controller changes -> addTo()\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar updateScrollOffset = function () {\r\n\t\t\t_scrollOffset = {\r\n\t\t\t\tstart: _triggerPos + _options.offset\r\n\t\t\t};\r\n\t\t\tif (_controller && _options.triggerElement) {\r\n\t\t\t\t// take away triggerHook portion to get relative to top\r\n\t\t\t\t_scrollOffset.start -= _controller.info(\"size\") * _options.triggerHook;\r\n\t\t\t}\r\n\t\t\t_scrollOffset.end = _scrollOffset.start + _options.duration;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Updates the duration if set to a dynamic function.\r\n\t\t * This method is called when the scene is added to a controller and in regular intervals from the controller through scene.refresh().\r\n\t\t * \r\n\t\t * @fires {@link Scene.change}, if the duration changed\r\n\t\t * @fires {@link Scene.shift}, if the duration changed\r\n\t\t *\r\n\t\t * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar updateDuration = function (suppressEvents) {\r\n\t\t\t// update duration\r\n\t\t\tif (_durationUpdateMethod) {\r\n\t\t\t\tvar varname = \"duration\";\r\n\t\t\t\tif (changeOption(varname, _durationUpdateMethod.call(Scene)) && !suppressEvents) { // set\r\n\t\t\t\t\tScene.trigger(\"change\", {\r\n\t\t\t\t\t\twhat: varname,\r\n\t\t\t\t\t\tnewval: _options[varname]\r\n\t\t\t\t\t});\r\n\t\t\t\t\tScene.trigger(\"shift\", {\r\n\t\t\t\t\t\treason: varname\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Updates the position of the triggerElement, if present.\r\n\t\t * This method is called ...\r\n\t\t *  - ... when the triggerElement is changed\r\n\t\t *  - ... when the scene is added to a (new) controller\r\n\t\t *  - ... in regular intervals from the controller through scene.refresh().\r\n\t\t * \r\n\t\t * @fires {@link Scene.shift}, if the position changed\r\n\t\t *\r\n\t\t * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar updateTriggerElementPosition = function (suppressEvents) {\r\n\t\t\tvar\r\n\t\t\t\telementPos = 0,\r\n\t\t\t\ttelem = _options.triggerElement;\r\n\t\t\tif (_controller && (telem || _triggerPos > 0)) { // either an element exists or was removed and the triggerPos is still > 0\r\n\t\t\t\tif (telem) { // there currently a triggerElement set\r\n\t\t\t\t\tif (telem.parentNode) { // check if element is still attached to DOM\r\n\t\t\t\t\t\tvar\r\n\t\t\t\t\t\t\tcontrollerInfo = _controller.info(),\r\n\t\t\t\t\t\t\tcontainerOffset = _util.get.offset(controllerInfo.container), // container position is needed because element offset is returned in relation to document, not in relation to container.\r\n\t\t\t\t\t\t\tparam = controllerInfo.vertical ? \"top\" : \"left\"; // which param is of interest ?\r\n\r\n\t\t\t\t\t\t// if parent is spacer, use spacer position instead so correct start position is returned for pinned elements.\r\n\t\t\t\t\t\twhile (telem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {\r\n\t\t\t\t\t\t\ttelem = telem.parentNode;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar elementOffset = _util.get.offset(telem);\r\n\r\n\t\t\t\t\t\tif (!controllerInfo.isDocument) { // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent\r\n\t\t\t\t\t\t\tcontainerOffset[param] -= _controller.scrollPos();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\telementPos = elementOffset[param] - containerOffset[param];\r\n\r\n\t\t\t\t\t} else { // there was an element, but it was removed from DOM\r\n\t\t\t\t\t\tlog(2, \"WARNING: triggerElement was removed from DOM and will be reset to\", undefined);\r\n\t\t\t\t\t\tScene.triggerElement(undefined); // unset, so a change event is triggered\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar changed = elementPos != _triggerPos;\r\n\t\t\t\t_triggerPos = elementPos;\r\n\t\t\t\tif (changed && !suppressEvents) {\r\n\t\t\t\t\tScene.trigger(\"shift\", {\r\n\t\t\t\t\t\treason: \"triggerElementPosition\"\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Trigger a shift event, when the container is resized and the triggerHook is > 1.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar onContainerResize = function (e) {\r\n\t\t\tif (_options.triggerHook > 0) {\r\n\t\t\t\tScene.trigger(\"shift\", {\r\n\t\t\t\t\treason: \"containerResize\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tvar _validate = _util.extend(SCENE_OPTIONS.validate, {\r\n\t\t\t// validation for duration handled internally for reference to private var _durationMethod\r\n\t\t\tduration: function (val) {\r\n\t\t\t\tif (_util.type.String(val) && val.match(/^(\\.|\\d)*\\d+%$/)) {\r\n\t\t\t\t\t// percentage value\r\n\t\t\t\t\tvar perc = parseFloat(val) / 100;\r\n\t\t\t\t\tval = function () {\r\n\t\t\t\t\t\treturn _controller ? _controller.info(\"size\") * perc : 0;\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\tif (_util.type.Function(val)) {\r\n\t\t\t\t\t// function\r\n\t\t\t\t\t_durationUpdateMethod = val;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tval = parseFloat(_durationUpdateMethod.call(Scene));\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tval = -1; // will cause error below\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// val has to be float\r\n\t\t\t\tval = parseFloat(val);\r\n\t\t\t\tif (!_util.type.Number(val) || val < 0) {\r\n\t\t\t\t\tif (_durationUpdateMethod) {\r\n\t\t\t\t\t\t_durationUpdateMethod = undefined;\r\n\t\t\t\t\t\tthrow [\"Invalid return value of supplied function for option \\\"duration\\\":\", val];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow [\"Invalid value for option \\\"duration\\\":\", val];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * Checks the validity of a specific or all options and reset to default if neccessary.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar validateOption = function (check) {\r\n\t\t\tcheck = arguments.length ? [check] : Object.keys(_validate);\r\n\t\t\tcheck.forEach(function (optionName, key) {\r\n\t\t\t\tvar value;\r\n\t\t\t\tif (_validate[optionName]) { // there is a validation method for this option\r\n\t\t\t\t\ttry { // validate value\r\n\t\t\t\t\t\tvalue = _validate[optionName](_options[optionName]);\r\n\t\t\t\t\t} catch (e) { // validation failed -> reset to default\r\n\t\t\t\t\t\tvalue = DEFAULT_OPTIONS[optionName];\r\n\t\t\t\t\t\tvar logMSG = _util.type.String(e) ? [e] : e;\r\n\t\t\t\t\t\tif (_util.type.Array(logMSG)) {\r\n\t\t\t\t\t\t\tlogMSG[0] = \"ERROR: \" + logMSG[0];\r\n\t\t\t\t\t\t\tlogMSG.unshift(1); // loglevel 1 for error msg\r\n\t\t\t\t\t\t\tlog.apply(this, logMSG);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlog(1, \"ERROR: Problem executing validation callback for option '\" + optionName + \"':\", e.message);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\t_options[optionName] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Helper used by the setter/getters for scene options\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar changeOption = function (varname, newval) {\r\n\t\t\tvar\r\n\t\t\t\tchanged = false,\r\n\t\t\t\toldval = _options[varname];\r\n\t\t\tif (_options[varname] != newval) {\r\n\t\t\t\t_options[varname] = newval;\r\n\t\t\t\tvalidateOption(varname); // resets to default if necessary\r\n\t\t\t\tchanged = oldval != _options[varname];\r\n\t\t\t}\r\n\t\t\treturn changed;\r\n\t\t};\r\n\r\n\t\t// generate getters/setters for all options\r\n\t\tvar addSceneOption = function (optionName) {\r\n\t\t\tif (!Scene[optionName]) {\r\n\t\t\t\tScene[optionName] = function (newVal) {\r\n\t\t\t\t\tif (!arguments.length) { // get\r\n\t\t\t\t\t\treturn _options[optionName];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (optionName === \"duration\") { // new duration is set, so any previously set function must be unset\r\n\t\t\t\t\t\t\t_durationUpdateMethod = undefined;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (changeOption(optionName, newVal)) { // set\r\n\t\t\t\t\t\t\tScene.trigger(\"change\", {\r\n\t\t\t\t\t\t\t\twhat: optionName,\r\n\t\t\t\t\t\t\t\tnewval: _options[optionName]\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tif (SCENE_OPTIONS.shifts.indexOf(optionName) > -1) {\r\n\t\t\t\t\t\t\t\tScene.trigger(\"shift\", {\r\n\t\t\t\t\t\t\t\t\treason: optionName\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn Scene;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the duration option value.\r\n\t\t *\r\n\t\t * As a **setter** it accepts three types of parameters:\r\n\t\t * 1. `number`: Sets the duration of the scene to exactly this amount of pixels.  \r\n\t\t *   This means the scene will last for exactly this amount of pixels scrolled. Sub-Pixels are also valid.\r\n\t\t *   A value of `0` means that the scene is 'open end' and no end will be triggered. Pins will never unpin and animations will play independently of scroll progress.\r\n\t\t * 2. `string`: Always updates the duration relative to parent scroll container.  \r\n\t\t *   For example `\"100%\"` will keep the duration always exactly at the inner height of the scroll container.\r\n\t\t *   When scrolling vertically the width is used for reference respectively.\r\n\t\t * 3. `function`: The supplied function will be called to return the scene duration.\r\n\t\t *   This is useful in setups where the duration depends on other elements who might change size. By supplying a function you can return a value instead of updating potentially multiple scene durations.  \r\n\t\t *   The scene can be referenced inside the callback using `this`.\r\n\t\t *   _**WARNING:** This is an easy way to kill performance, as the callback will be executed every time `Scene.refresh()` is called, which happens a lot. The interval is defined by the controller (see ScrollMagic.Controller option `refreshInterval`).  \r\n\t\t *   It's recomended to avoid calculations within the function and use cached variables as return values.  \r\n\t\t *   This counts double if you use the same function for multiple scenes._\r\n\t\t *\r\n\t\t * @method ScrollMagic.Scene#duration\r\n\t\t * @example\r\n\t\t * // get the current duration value\r\n\t\t * var duration = scene.duration();\r\n\t\t *\r\n\t\t * // set a new duration\r\n\t\t * scene.duration(300);\r\n\t\t *\r\n\t\t * // set duration responsively to container size\r\n\t\t * scene.duration(\"100%\");\r\n\t\t *\r\n\t\t * // use a function to randomize the duration for some reason.\r\n\t\t * var durationValueCache;\r\n\t\t * function durationCallback () {\r\n\t\t *   return durationValueCache;\r\n\t\t * }\r\n\t\t * function updateDuration () {\r\n\t\t *   durationValueCache = Math.random() * 100;\r\n\t\t * }\r\n\t\t * updateDuration(); // set to initial value\r\n\t\t * scene.duration(durationCallback); // set duration callback\r\n\t\t *\r\n\t\t * @fires {@link Scene.change}, when used as setter\r\n\t\t * @fires {@link Scene.shift}, when used as setter\r\n\t\t * @param {(number|string|function)} [newDuration] - The new duration setting for the scene.\r\n\t\t * @returns {number} `get` -  Current scene duration.\r\n\t\t * @returns {Scene} `set` -  Parent object for chaining.\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the offset option value.\r\n\t\t * @method ScrollMagic.Scene#offset\r\n\t\t * @example\r\n\t\t * // get the current offset\r\n\t\t * var offset = scene.offset();\r\n\t\t *\r\n\t\t * // set a new offset\r\n\t\t * scene.offset(100);\r\n\t\t *\r\n\t\t * @fires {@link Scene.change}, when used as setter\r\n\t\t * @fires {@link Scene.shift}, when used as setter\r\n\t\t * @param {number} [newOffset] - The new offset of the scene.\r\n\t\t * @returns {number} `get` -  Current scene offset.\r\n\t\t * @returns {Scene} `set` -  Parent object for chaining.\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the triggerElement option value.\r\n\t\t * Does **not** fire `Scene.shift`, because changing the trigger Element doesn't necessarily mean the start position changes. This will be determined in `Scene.refresh()`, which is automatically triggered.\r\n\t\t * @method ScrollMagic.Scene#triggerElement\r\n\t\t * @example\r\n\t\t * // get the current triggerElement\r\n\t\t * var triggerElement = scene.triggerElement();\r\n\t\t *\r\n\t\t * // set a new triggerElement using a selector\r\n\t\t * scene.triggerElement(\"#trigger\");\r\n\t\t * // set a new triggerElement using a DOM object\r\n\t\t * scene.triggerElement(document.getElementById(\"trigger\"));\r\n\t\t *\r\n\t\t * @fires {@link Scene.change}, when used as setter\r\n\t\t * @param {(string|object)} [newTriggerElement] - The new trigger element for the scene.\r\n\t\t * @returns {(string|object)} `get` -  Current triggerElement.\r\n\t\t * @returns {Scene} `set` -  Parent object for chaining.\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the triggerHook option value.\r\n\t\t * @method ScrollMagic.Scene#triggerHook\r\n\t\t * @example\r\n\t\t * // get the current triggerHook value\r\n\t\t * var triggerHook = scene.triggerHook();\r\n\t\t *\r\n\t\t * // set a new triggerHook using a string\r\n\t\t * scene.triggerHook(\"onLeave\");\r\n\t\t * // set a new triggerHook using a number\r\n\t\t * scene.triggerHook(0.7);\r\n\t\t *\r\n\t\t * @fires {@link Scene.change}, when used as setter\r\n\t\t * @fires {@link Scene.shift}, when used as setter\r\n\t\t * @param {(number|string)} [newTriggerHook] - The new triggerHook of the scene. See {@link Scene} parameter description for value options.\r\n\t\t * @returns {number} `get` -  Current triggerHook (ALWAYS numerical).\r\n\t\t * @returns {Scene} `set` -  Parent object for chaining.\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the reverse option value.\r\n\t\t * @method ScrollMagic.Scene#reverse\r\n\t\t * @example\r\n\t\t * // get the current reverse option\r\n\t\t * var reverse = scene.reverse();\r\n\t\t *\r\n\t\t * // set new reverse option\r\n\t\t * scene.reverse(false);\r\n\t\t *\r\n\t\t * @fires {@link Scene.change}, when used as setter\r\n\t\t * @param {boolean} [newReverse] - The new reverse setting of the scene.\r\n\t\t * @returns {boolean} `get` -  Current reverse option value.\r\n\t\t * @returns {Scene} `set` -  Parent object for chaining.\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * **Get** or **Set** the loglevel option value.\r\n\t\t * @method ScrollMagic.Scene#loglevel\r\n\t\t * @example\r\n\t\t * // get the current loglevel\r\n\t\t * var loglevel = scene.loglevel();\r\n\t\t *\r\n\t\t * // set new loglevel\r\n\t\t * scene.loglevel(3);\r\n\t\t *\r\n\t\t * @fires {@link Scene.change}, when used as setter\r\n\t\t * @param {number} [newLoglevel] - The new loglevel setting of the scene. `[0-3]`\r\n\t\t * @returns {number} `get` -  Current loglevel.\r\n\t\t * @returns {Scene} `set` -  Parent object for chaining.\r\n\t\t */\r\n\r\n\t\t/**\r\n\t\t * **Get** the associated controller.\r\n\t\t * @method ScrollMagic.Scene#controller\r\n\t\t * @example\r\n\t\t * // get the controller of a scene\r\n\t\t * var controller = scene.controller();\r\n\t\t *\r\n\t\t * @returns {ScrollMagic.Controller} Parent controller or `undefined`\r\n\t\t */\r\n\t\tthis.controller = function () {\r\n\t\t\treturn _controller;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** the current state.\r\n\t\t * @method ScrollMagic.Scene#state\r\n\t\t * @example\r\n\t\t * // get the current state\r\n\t\t * var state = scene.state();\r\n\t\t *\r\n\t\t * @returns {string} `\"BEFORE\"`, `\"DURING\"` or `\"AFTER\"`\r\n\t\t */\r\n\t\tthis.state = function () {\r\n\t\t\treturn _state;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** the current scroll offset for the start of the scene.  \r\n\t\t * Mind, that the scrollOffset is related to the size of the container, if `triggerHook` is bigger than `0` (or `\"onLeave\"`).  \r\n\t\t * This means, that resizing the container or changing the `triggerHook` will influence the scene's start offset.\r\n\t\t * @method ScrollMagic.Scene#scrollOffset\r\n\t\t * @example\r\n\t\t * // get the current scroll offset for the start and end of the scene.\r\n\t\t * var start = scene.scrollOffset();\r\n\t\t * var end = scene.scrollOffset() + scene.duration();\r\n\t\t * console.log(\"the scene starts at\", start, \"and ends at\", end);\r\n\t\t *\r\n\t\t * @returns {number} The scroll offset (of the container) at which the scene will trigger. Y value for vertical and X value for horizontal scrolls.\r\n\t\t */\r\n\t\tthis.scrollOffset = function () {\r\n\t\t\treturn _scrollOffset.start;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * **Get** the trigger position of the scene (including the value of the `offset` option).  \r\n\t\t * @method ScrollMagic.Scene#triggerPosition\r\n\t\t * @example\r\n\t\t * // get the scene's trigger position\r\n\t\t * var triggerPosition = scene.triggerPosition();\r\n\t\t *\r\n\t\t * @returns {number} Start position of the scene. Top position value for vertical and left position value for horizontal scrolls.\r\n\t\t */\r\n\t\tthis.triggerPosition = function () {\r\n\t\t\tvar pos = _options.offset; // the offset is the basis\r\n\t\t\tif (_controller) {\r\n\t\t\t\t// get the trigger position\r\n\t\t\t\tif (_options.triggerElement) {\r\n\t\t\t\t\t// Element as trigger\r\n\t\t\t\t\tpos += _triggerPos;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// return the height of the triggerHook to start at the beginning\r\n\t\t\t\t\tpos += _controller.info(\"size\") * Scene.triggerHook();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn pos;\r\n\t\t};\r\n\r\n\r\n\t\tvar\r\n\t\t\t_pin,\r\n\t\t\t_pinOptions;\r\n\r\n\t\tScene\r\n\t\t\t.on(\"shift.internal\", function (e) {\r\n\t\t\t\tvar durationChanged = e.reason === \"duration\";\r\n\t\t\t\tif ((_state === SCENE_STATE_AFTER && durationChanged) || (_state === SCENE_STATE_DURING && _options.duration === 0)) {\r\n\t\t\t\t\t// if [duration changed after a scene (inside scene progress updates pin position)] or [duration is 0, we are in pin phase and some other value changed].\r\n\t\t\t\t\tupdatePinState();\r\n\t\t\t\t}\r\n\t\t\t\tif (durationChanged) {\r\n\t\t\t\t\tupdatePinDimensions();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on(\"progress.internal\", function (e) {\r\n\t\t\t\tupdatePinState();\r\n\t\t\t})\r\n\t\t\t.on(\"add.internal\", function (e) {\r\n\t\t\t\tupdatePinDimensions();\r\n\t\t\t})\r\n\t\t\t.on(\"destroy.internal\", function (e) {\r\n\t\t\t\tScene.removePin(e.reset);\r\n\t\t\t});\r\n\t\t/**\r\n\t\t * Update the pin state.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar updatePinState = function (forceUnpin) {\r\n\t\t\tif (_pin && _controller) {\r\n\t\t\t\tvar\r\n\t\t\t\t\tcontainerInfo = _controller.info(),\r\n\t\t\t\t\tpinTarget = _pinOptions.spacer.firstChild; // may be pin element or another spacer, if cascading pins\r\n\r\n\t\t\t\tif (!forceUnpin && _state === SCENE_STATE_DURING) { // during scene or if duration is 0 and we are past the trigger\r\n\t\t\t\t\t// pinned state\r\n\t\t\t\t\tif (_util.css(pinTarget, \"position\") != \"fixed\") {\r\n\t\t\t\t\t\t// change state before updating pin spacer (position changes due to fixed collapsing might occur.)\r\n\t\t\t\t\t\t_util.css(pinTarget, {\r\n\t\t\t\t\t\t\t\"position\": \"fixed\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t// update pin spacer\r\n\t\t\t\t\t\tupdatePinDimensions();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar\r\n\t\t\t\t\t\tfixedPos = _util.get.offset(_pinOptions.spacer, true), // get viewport position of spacer\r\n\t\t\t\t\t\tscrollDistance = _options.reverse || _options.duration === 0 ?\r\n\t\t\t\t\t\tcontainerInfo.scrollPos - _scrollOffset.start // quicker\r\n\t\t\t\t\t\t:\r\n\t\t\t\t\t\tMath.round(_progress * _options.duration * 10) / 10; // if no reverse and during pin the position needs to be recalculated using the progress\r\n\r\n\t\t\t\t\t// add scrollDistance\r\n\t\t\t\t\tfixedPos[containerInfo.vertical ? \"top\" : \"left\"] += scrollDistance;\r\n\r\n\t\t\t\t\t// set new values\r\n\t\t\t\t\t_util.css(_pinOptions.spacer.firstChild, {\r\n\t\t\t\t\t\ttop: fixedPos.top,\r\n\t\t\t\t\t\tleft: fixedPos.left\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// unpinned state\r\n\t\t\t\t\tvar\r\n\t\t\t\t\t\tnewCSS = {\r\n\t\t\t\t\t\t\tposition: _pinOptions.inFlow ? \"relative\" : \"absolute\",\r\n\t\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tchange = _util.css(pinTarget, \"position\") != newCSS.position;\r\n\r\n\t\t\t\t\tif (!_pinOptions.pushFollowers) {\r\n\t\t\t\t\t\tnewCSS[containerInfo.vertical ? \"top\" : \"left\"] = _options.duration * _progress;\r\n\t\t\t\t\t} else if (_options.duration > 0) { // only concerns scenes with duration\r\n\t\t\t\t\t\tif (_state === SCENE_STATE_AFTER && parseFloat(_util.css(_pinOptions.spacer, \"padding-top\")) === 0) {\r\n\t\t\t\t\t\t\tchange = true; // if in after state but havent updated spacer yet (jumped past pin)\r\n\t\t\t\t\t\t} else if (_state === SCENE_STATE_BEFORE && parseFloat(_util.css(_pinOptions.spacer, \"padding-bottom\")) === 0) { // before\r\n\t\t\t\t\t\t\tchange = true; // jumped past fixed state upward direction\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// set new values\r\n\t\t\t\t\t_util.css(pinTarget, newCSS);\r\n\t\t\t\t\tif (change) {\r\n\t\t\t\t\t\t// update pin spacer if state changed\r\n\t\t\t\t\t\tupdatePinDimensions();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Update the pin spacer and/or element size.\r\n\t\t * The size of the spacer needs to be updated whenever the duration of the scene changes, if it is to push down following elements.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar updatePinDimensions = function () {\r\n\t\t\tif (_pin && _controller && _pinOptions.inFlow) { // no spacerresize, if original position is absolute\r\n\t\t\t\tvar\r\n\t\t\t\t\tafter = (_state === SCENE_STATE_AFTER),\r\n\t\t\t\t\tbefore = (_state === SCENE_STATE_BEFORE),\r\n\t\t\t\t\tduring = (_state === SCENE_STATE_DURING),\r\n\t\t\t\t\tvertical = _controller.info(\"vertical\"),\r\n\t\t\t\t\tpinTarget = _pinOptions.spacer.firstChild, // usually the pined element but can also be another spacer (cascaded pins)\r\n\t\t\t\t\tmarginCollapse = _util.isMarginCollapseType(_util.css(_pinOptions.spacer, \"display\")),\r\n\t\t\t\t\tcss = {};\r\n\r\n\t\t\t\t// set new size\r\n\t\t\t\t// if relsize: spacer -> pin | else: pin -> spacer\r\n\t\t\t\tif (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) {\r\n\t\t\t\t\tif (during) {\r\n\t\t\t\t\t\t_util.css(_pin, {\r\n\t\t\t\t\t\t\t\"width\": _util.get.width(_pinOptions.spacer)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_util.css(_pin, {\r\n\t\t\t\t\t\t\t\"width\": \"100%\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// minwidth is needed for cascaded pins.\r\n\t\t\t\t\tcss[\"min-width\"] = _util.get.width(vertical ? _pin : pinTarget, true, true);\r\n\t\t\t\t\tcss.width = during ? css[\"min-width\"] : \"auto\";\r\n\t\t\t\t}\r\n\t\t\t\tif (_pinOptions.relSize.height) {\r\n\t\t\t\t\tif (during) {\r\n\t\t\t\t\t\t// the only padding the spacer should ever include is the duration (if pushFollowers = true), so we need to substract that.\r\n\t\t\t\t\t\t_util.css(_pin, {\r\n\t\t\t\t\t\t\t\"height\": _util.get.height(_pinOptions.spacer) - (_pinOptions.pushFollowers ? _options.duration : 0)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_util.css(_pin, {\r\n\t\t\t\t\t\t\t\"height\": \"100%\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// margin is only included if it's a cascaded pin to resolve an IE9 bug\r\n\t\t\t\t\tcss[\"min-height\"] = _util.get.height(vertical ? pinTarget : _pin, true, !marginCollapse); // needed for cascading pins\r\n\t\t\t\t\tcss.height = during ? css[\"min-height\"] : \"auto\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// add space for duration if pushFollowers is true\r\n\t\t\t\tif (_pinOptions.pushFollowers) {\r\n\t\t\t\t\tcss[\"padding\" + (vertical ? \"Top\" : \"Left\")] = _options.duration * _progress;\r\n\t\t\t\t\tcss[\"padding\" + (vertical ? \"Bottom\" : \"Right\")] = _options.duration * (1 - _progress);\r\n\t\t\t\t}\r\n\t\t\t\t_util.css(_pinOptions.spacer, css);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Updates the Pin state (in certain scenarios)\r\n\t\t * If the controller container is not the document and we are mid-pin-phase scrolling or resizing the main document can result to wrong pin positions.\r\n\t\t * So this function is called on resize and scroll of the document.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar updatePinInContainer = function () {\r\n\t\t\tif (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info(\"isDocument\")) {\r\n\t\t\t\tupdatePinState();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Updates the Pin spacer size state (in certain scenarios)\r\n\t\t * If container is resized during pin and relatively sized the size of the pin might need to be updated...\r\n\t\t * So this function is called on resize of the container.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar updateRelativePinSpacer = function () {\r\n\t\t\tif (_controller && _pin && // well, duh\r\n\t\t\t\t_state === SCENE_STATE_DURING && // element in pinned state?\r\n\t\t\t\t( // is width or height relatively sized, but not in relation to body? then we need to recalc.\r\n\t\t\t\t\t((_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) && _util.get.width(window) != _util.get.width(_pinOptions.spacer.parentNode)) ||\r\n\t\t\t\t\t(_pinOptions.relSize.height && _util.get.height(window) != _util.get.height(_pinOptions.spacer.parentNode))\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\tupdatePinDimensions();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Is called, when the mousewhel is used while over a pinned element inside a div container.\r\n\t\t * If the scene is in fixed state scroll events would be counted towards the body. This forwards the event to the scroll container.\r\n\t\t * @private\r\n\t\t */\r\n\t\tvar onMousewheelOverPin = function (e) {\r\n\t\t\tif (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info(\"isDocument\")) { // in pin state\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t_controller._setScrollPos(_controller.info(\"scrollPos\") - ((e.wheelDelta || e[_controller.info(\"vertical\") ? \"wheelDeltaY\" : \"wheelDeltaX\"]) / 3 || -e.detail * 30));\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Pin an element for the duration of the scene.\r\n\t\t * If the scene duration is 0 the element will only be unpinned, if the user scrolls back past the start position.  \r\n\t\t * Make sure only one pin is applied to an element at the same time.\r\n\t\t * An element can be pinned multiple times, but only successively.\r\n\t\t * _**NOTE:** The option `pushFollowers` has no effect, when the scene duration is 0._\r\n\t\t * @method ScrollMagic.Scene#setPin\r\n\t\t * @example\r\n\t\t * // pin element and push all following elements down by the amount of the pin duration.\r\n\t\t * scene.setPin(\"#pin\");\r\n\t\t *\r\n\t\t * // pin element and keeping all following elements in their place. The pinned element will move past them.\r\n\t\t * scene.setPin(\"#pin\", {pushFollowers: false});\r\n\t\t *\r\n\t\t * @param {(string|object)} element - A Selector targeting an element or a DOM object that is supposed to be pinned.\r\n\t\t * @param {object} [settings] - settings for the pin\r\n\t\t * @param {boolean} [settings.pushFollowers=true] - If `true` following elements will be \"pushed\" down for the duration of the pin, if `false` the pinned element will just scroll past them.  \r\n\t\t \t\t\t\t\t\t\t\t\t\t\t\t   Ignored, when duration is `0`.\r\n\t\t * @param {string} [settings.spacerClass=\"scrollmagic-pin-spacer\"] - Classname of the pin spacer element, which is used to replace the element.\r\n\t\t *\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.setPin = function (element, settings) {\r\n\t\t\tvar\r\n\t\t\t\tdefaultSettings = {\r\n\t\t\t\t\tpushFollowers: true,\r\n\t\t\t\t\tspacerClass: \"scrollmagic-pin-spacer\"\r\n\t\t\t\t};\r\n\t\t\tvar pushFollowersActivelySet = settings && settings.hasOwnProperty('pushFollowers');\r\n\t\t\tsettings = _util.extend({}, defaultSettings, settings);\r\n\r\n\t\t\t// validate Element\r\n\t\t\telement = _util.get.elements(element)[0];\r\n\t\t\tif (!element) {\r\n\t\t\t\tlog(1, \"ERROR calling method 'setPin()': Invalid pin element supplied.\");\r\n\t\t\t\treturn Scene; // cancel\r\n\t\t\t} else if (_util.css(element, \"position\") === \"fixed\") {\r\n\t\t\t\tlog(1, \"ERROR calling method 'setPin()': Pin does not work with elements that are positioned 'fixed'.\");\r\n\t\t\t\treturn Scene; // cancel\r\n\t\t\t}\r\n\r\n\t\t\tif (_pin) { // preexisting pin?\r\n\t\t\t\tif (_pin === element) {\r\n\t\t\t\t\t// same pin we already have -> do nothing\r\n\t\t\t\t\treturn Scene; // cancel\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// kill old pin\r\n\t\t\t\t\tScene.removePin();\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\t_pin = element;\r\n\r\n\t\t\tvar\r\n\t\t\t\tparentDisplay = _pin.parentNode.style.display,\r\n\t\t\t\tboundsParams = [\"top\", \"left\", \"bottom\", \"right\", \"margin\", \"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"];\r\n\r\n\t\t\t_pin.parentNode.style.display = 'none'; // hack start to force css to return stylesheet values instead of calculated px values.\r\n\t\t\tvar\r\n\t\t\t\tinFlow = _util.css(_pin, \"position\") != \"absolute\",\r\n\t\t\t\tpinCSS = _util.css(_pin, boundsParams.concat([\"display\"])),\r\n\t\t\t\tsizeCSS = _util.css(_pin, [\"width\", \"height\"]);\r\n\t\t\t_pin.parentNode.style.display = parentDisplay; // hack end.\r\n\r\n\t\t\tif (!inFlow && settings.pushFollowers) {\r\n\t\t\t\tlog(2, \"WARNING: If the pinned element is positioned absolutely pushFollowers will be disabled.\");\r\n\t\t\t\tsettings.pushFollowers = false;\r\n\t\t\t}\r\n\t\t\twindow.setTimeout(function () { // wait until all finished, because with responsive duration it will only be set after scene is added to controller\r\n\t\t\t\tif (_pin && _options.duration === 0 && pushFollowersActivelySet && settings.pushFollowers) {\r\n\t\t\t\t\tlog(2, \"WARNING: pushFollowers =\", true, \"has no effect, when scene duration is 0.\");\r\n\t\t\t\t}\r\n\t\t\t}, 0);\r\n\r\n\t\t\t// create spacer and insert\r\n\t\t\tvar\r\n\t\t\t\tspacer = _pin.parentNode.insertBefore(document.createElement('div'), _pin),\r\n\t\t\t\tspacerCSS = _util.extend(pinCSS, {\r\n\t\t\t\t\tposition: inFlow ? \"relative\" : \"absolute\",\r\n\t\t\t\t\tboxSizing: \"content-box\",\r\n\t\t\t\t\tmozBoxSizing: \"content-box\",\r\n\t\t\t\t\twebkitBoxSizing: \"content-box\"\r\n\t\t\t\t});\r\n\r\n\t\t\tif (!inFlow) { // copy size if positioned absolutely, to work for bottom/right positioned elements.\r\n\t\t\t\t_util.extend(spacerCSS, _util.css(_pin, [\"width\", \"height\"]));\r\n\t\t\t}\r\n\r\n\t\t\t_util.css(spacer, spacerCSS);\r\n\t\t\tspacer.setAttribute(PIN_SPACER_ATTRIBUTE, \"\");\r\n\t\t\t_util.addClass(spacer, settings.spacerClass);\r\n\r\n\t\t\t// set the pin Options\r\n\t\t\t_pinOptions = {\r\n\t\t\t\tspacer: spacer,\r\n\t\t\t\trelSize: { // save if size is defined using % values. if so, handle spacer resize differently...\r\n\t\t\t\t\twidth: sizeCSS.width.slice(-1) === \"%\",\r\n\t\t\t\t\theight: sizeCSS.height.slice(-1) === \"%\",\r\n\t\t\t\t\tautoFullWidth: sizeCSS.width === \"auto\" && inFlow && _util.isMarginCollapseType(pinCSS.display)\r\n\t\t\t\t},\r\n\t\t\t\tpushFollowers: settings.pushFollowers,\r\n\t\t\t\tinFlow: inFlow, // stores if the element takes up space in the document flow\r\n\t\t\t};\r\n\r\n\t\t\tif (!_pin.___origStyle) {\r\n\t\t\t\t_pin.___origStyle = {};\r\n\t\t\t\tvar\r\n\t\t\t\t\tpinInlineCSS = _pin.style,\r\n\t\t\t\t\tcopyStyles = boundsParams.concat([\"width\", \"height\", \"position\", \"boxSizing\", \"mozBoxSizing\", \"webkitBoxSizing\"]);\r\n\t\t\t\tcopyStyles.forEach(function (val) {\r\n\t\t\t\t\t_pin.___origStyle[val] = pinInlineCSS[val] || \"\";\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// if relative size, transfer it to spacer and make pin calculate it...\r\n\t\t\tif (_pinOptions.relSize.width) {\r\n\t\t\t\t_util.css(spacer, {\r\n\t\t\t\t\twidth: sizeCSS.width\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (_pinOptions.relSize.height) {\r\n\t\t\t\t_util.css(spacer, {\r\n\t\t\t\t\theight: sizeCSS.height\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// now place the pin element inside the spacer\t\r\n\t\t\tspacer.appendChild(_pin);\r\n\t\t\t// and set new css\r\n\t\t\t_util.css(_pin, {\r\n\t\t\t\tposition: inFlow ? \"relative\" : \"absolute\",\r\n\t\t\t\tmargin: \"auto\",\r\n\t\t\t\ttop: \"auto\",\r\n\t\t\t\tleft: \"auto\",\r\n\t\t\t\tbottom: \"auto\",\r\n\t\t\t\tright: \"auto\"\r\n\t\t\t});\r\n\r\n\t\t\tif (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) {\r\n\t\t\t\t_util.css(_pin, {\r\n\t\t\t\t\tboxSizing: \"border-box\",\r\n\t\t\t\t\tmozBoxSizing: \"border-box\",\r\n\t\t\t\t\twebkitBoxSizing: \"border-box\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// add listener to document to update pin position in case controller is not the document.\r\n\t\t\twindow.addEventListener('scroll', updatePinInContainer);\r\n\t\t\twindow.addEventListener('resize', updatePinInContainer);\r\n\t\t\twindow.addEventListener('resize', updateRelativePinSpacer);\r\n\t\t\t// add mousewheel listener to catch scrolls over fixed elements\r\n\t\t\t_pin.addEventListener(\"mousewheel\", onMousewheelOverPin);\r\n\t\t\t_pin.addEventListener(\"DOMMouseScroll\", onMousewheelOverPin);\r\n\r\n\t\t\tlog(3, \"added pin\");\r\n\r\n\t\t\t// finally update the pin to init\r\n\t\t\tupdatePinState();\r\n\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Remove the pin from the scene.\r\n\t\t * @method ScrollMagic.Scene#removePin\r\n\t\t * @example\r\n\t\t * // remove the pin from the scene without resetting it (the spacer is not removed)\r\n\t\t * scene.removePin();\r\n\t\t *\r\n\t\t * // remove the pin from the scene and reset the pin element to its initial position (spacer is removed)\r\n\t\t * scene.removePin(true);\r\n\t\t *\r\n\t\t * @param {boolean} [reset=false] - If `false` the spacer will not be removed and the element's position will not be reset.\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.removePin = function (reset) {\r\n\t\t\tif (_pin) {\r\n\t\t\t\tif (_state === SCENE_STATE_DURING) {\r\n\t\t\t\t\tupdatePinState(true); // force unpin at position\r\n\t\t\t\t}\r\n\t\t\t\tif (reset || !_controller) { // if there's no controller no progress was made anyway...\r\n\t\t\t\t\tvar pinTarget = _pinOptions.spacer.firstChild; // usually the pin element, but may be another spacer (cascaded pins)...\r\n\t\t\t\t\tif (pinTarget.hasAttribute(PIN_SPACER_ATTRIBUTE)) { // copy margins to child spacer\r\n\t\t\t\t\t\tvar\r\n\t\t\t\t\t\t\tstyle = _pinOptions.spacer.style,\r\n\t\t\t\t\t\t\tvalues = [\"margin\", \"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"],\r\n\t\t\t\t\t\t\tmargins = {};\r\n\t\t\t\t\t\tvalues.forEach(function (val) {\r\n\t\t\t\t\t\t\tmargins[val] = style[val] || \"\";\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t_util.css(pinTarget, margins);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t_pinOptions.spacer.parentNode.insertBefore(pinTarget, _pinOptions.spacer);\r\n\t\t\t\t\t_pinOptions.spacer.parentNode.removeChild(_pinOptions.spacer);\r\n\t\t\t\t\tif (!_pin.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) { // if it's the last pin for this element -> restore inline styles\r\n\t\t\t\t\t\t// TODO: only correctly set for first pin (when cascading) - how to fix?\r\n\t\t\t\t\t\t_util.css(_pin, _pin.___origStyle);\r\n\t\t\t\t\t\tdelete _pin.___origStyle;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\twindow.removeEventListener('scroll', updatePinInContainer);\r\n\t\t\t\twindow.removeEventListener('resize', updatePinInContainer);\r\n\t\t\t\twindow.removeEventListener('resize', updateRelativePinSpacer);\r\n\t\t\t\t_pin.removeEventListener(\"mousewheel\", onMousewheelOverPin);\r\n\t\t\t\t_pin.removeEventListener(\"DOMMouseScroll\", onMousewheelOverPin);\r\n\t\t\t\t_pin = undefined;\r\n\t\t\t\tlog(3, \"removed pin (reset: \" + (reset ? \"true\" : \"false\") + \")\");\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\r\n\t\tvar\r\n\t\t\t_cssClasses,\r\n\t\t\t_cssClassElems = [];\r\n\r\n\t\tScene\r\n\t\t\t.on(\"destroy.internal\", function (e) {\r\n\t\t\t\tScene.removeClassToggle(e.reset);\r\n\t\t\t});\r\n\t\t/**\r\n\t\t * Define a css class modification while the scene is active.  \r\n\t\t * When the scene triggers the classes will be added to the supplied element and removed, when the scene is over.\r\n\t\t * If the scene duration is 0 the classes will only be removed if the user scrolls back past the start position.\r\n\t\t * @method ScrollMagic.Scene#setClassToggle\r\n\t\t * @example\r\n\t\t * // add the class 'myclass' to the element with the id 'my-elem' for the duration of the scene\r\n\t\t * scene.setClassToggle(\"#my-elem\", \"myclass\");\r\n\t\t *\r\n\t\t * // add multiple classes to multiple elements defined by the selector '.classChange'\r\n\t\t * scene.setClassToggle(\".classChange\", \"class1 class2 class3\");\r\n\t\t *\r\n\t\t * @param {(string|object)} element - A Selector targeting one or more elements or a DOM object that is supposed to be modified.\r\n\t\t * @param {string} classes - One or more Classnames (separated by space) that should be added to the element during the scene.\r\n\t\t *\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.setClassToggle = function (element, classes) {\r\n\t\t\tvar elems = _util.get.elements(element);\r\n\t\t\tif (elems.length === 0 || !_util.type.String(classes)) {\r\n\t\t\t\tlog(1, \"ERROR calling method 'setClassToggle()': Invalid \" + (elems.length === 0 ? \"element\" : \"classes\") + \" supplied.\");\r\n\t\t\t\treturn Scene;\r\n\t\t\t}\r\n\t\t\tif (_cssClassElems.length > 0) {\r\n\t\t\t\t// remove old ones\r\n\t\t\t\tScene.removeClassToggle();\r\n\t\t\t}\r\n\t\t\t_cssClasses = classes;\r\n\t\t\t_cssClassElems = elems;\r\n\t\t\tScene.on(\"enter.internal_class leave.internal_class\", function (e) {\r\n\t\t\t\tvar toggle = e.type === \"enter\" ? _util.addClass : _util.removeClass;\r\n\t\t\t\t_cssClassElems.forEach(function (elem, key) {\r\n\t\t\t\t\ttoggle(elem, _cssClasses);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Remove the class binding from the scene.\r\n\t\t * @method ScrollMagic.Scene#removeClassToggle\r\n\t\t * @example\r\n\t\t * // remove class binding from the scene without reset\r\n\t\t * scene.removeClassToggle();\r\n\t\t *\r\n\t\t * // remove class binding and remove the changes it caused\r\n\t\t * scene.removeClassToggle(true);\r\n\t\t *\r\n\t\t * @param {boolean} [reset=false] - If `false` and the classes are currently active, they will remain on the element. If `true` they will be removed.\r\n\t\t * @returns {Scene} Parent object for chaining.\r\n\t\t */\r\n\t\tthis.removeClassToggle = function (reset) {\r\n\t\t\tif (reset) {\r\n\t\t\t\t_cssClassElems.forEach(function (elem, key) {\r\n\t\t\t\t\t_util.removeClass(elem, _cssClasses);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tScene.off(\"start.internal_class end.internal_class\");\r\n\t\t\t_cssClasses = undefined;\r\n\t\t\t_cssClassElems = [];\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t// INIT\r\n\t\tconstruct();\r\n\t\treturn Scene;\r\n\t};\r\n\r\n\t// store pagewide scene options\r\n\tvar SCENE_OPTIONS = {\r\n\t\tdefaults: {\r\n\t\t\tduration: 0,\r\n\t\t\toffset: 0,\r\n\t\t\ttriggerElement: undefined,\r\n\t\t\ttriggerHook: 0.5,\r\n\t\t\treverse: true,\r\n\t\t\tloglevel: 2\r\n\t\t},\r\n\t\tvalidate: {\r\n\t\t\toffset: function (val) {\r\n\t\t\t\tval = parseFloat(val);\r\n\t\t\t\tif (!_util.type.Number(val)) {\r\n\t\t\t\t\tthrow [\"Invalid value for option \\\"offset\\\":\", val];\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t},\r\n\t\t\ttriggerElement: function (val) {\r\n\t\t\t\tval = val || undefined;\r\n\t\t\t\tif (val) {\r\n\t\t\t\t\tvar elem = _util.get.elements(val)[0];\r\n\t\t\t\t\tif (elem && elem.parentNode) {\r\n\t\t\t\t\t\tval = elem;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow [\"Element defined in option \\\"triggerElement\\\" was not found:\", val];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t},\r\n\t\t\ttriggerHook: function (val) {\r\n\t\t\t\tvar translate = {\r\n\t\t\t\t\t\"onCenter\": 0.5,\r\n\t\t\t\t\t\"onEnter\": 1,\r\n\t\t\t\t\t\"onLeave\": 0\r\n\t\t\t\t};\r\n\t\t\t\tif (_util.type.Number(val)) {\r\n\t\t\t\t\tval = Math.max(0, Math.min(parseFloat(val), 1)); //  make sure its betweeen 0 and 1\r\n\t\t\t\t} else if (val in translate) {\r\n\t\t\t\t\tval = translate[val];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow [\"Invalid value for option \\\"triggerHook\\\": \", val];\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t},\r\n\t\t\treverse: function (val) {\r\n\t\t\t\treturn !!val; // force boolean\r\n\t\t\t},\r\n\t\t\tloglevel: function (val) {\r\n\t\t\t\tval = parseInt(val);\r\n\t\t\t\tif (!_util.type.Number(val) || val < 0 || val > 3) {\r\n\t\t\t\t\tthrow [\"Invalid value for option \\\"loglevel\\\":\", val];\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t}\r\n\t\t}, // holder for  validation methods. duration validation is handled in 'getters-setters.js'\r\n\t\tshifts: [\"duration\", \"offset\", \"triggerHook\"], // list of options that trigger a `shift` event\r\n\t};\r\n\t/*\r\n\t * method used to add an option to ScrollMagic Scenes.\r\n\t * TODO: DOC (private for dev)\r\n\t */\r\n\tScrollMagic.Scene.addOption = function (name, defaultValue, validationCallback, shifts) {\r\n\t\tif (!(name in SCENE_OPTIONS.defaults)) {\r\n\t\t\tSCENE_OPTIONS.defaults[name] = defaultValue;\r\n\t\t\tSCENE_OPTIONS.validate[name] = validationCallback;\r\n\t\t\tif (shifts) {\r\n\t\t\t\tSCENE_OPTIONS.shifts.push(name);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tScrollMagic._util.log(1, \"[static] ScrollMagic.Scene -> Cannot add Scene option '\" + name + \"', because it already exists.\");\r\n\t\t}\r\n\t};\r\n\t// instance extension function for plugins\r\n\t// TODO: DOC (private for dev)\r\n\tScrollMagic.Scene.extend = function (extension) {\r\n\t\tvar oldClass = this;\r\n\t\tScrollMagic.Scene = function () {\r\n\t\t\toldClass.apply(this, arguments);\r\n\t\t\tthis.$super = _util.extend({}, this); // copy parent state\r\n\t\t\treturn extension.apply(this, arguments) || this;\r\n\t\t};\r\n\t\t_util.extend(ScrollMagic.Scene, oldClass); // copy properties\r\n\t\tScrollMagic.Scene.prototype = oldClass.prototype; // copy prototype\r\n\t\tScrollMagic.Scene.prototype.constructor = ScrollMagic.Scene; // restore constructor\r\n\t};\r\n\r\n\r\n\r\n\t/**\r\n\t * TODO: DOCS (private for dev)\r\n\t * @class\r\n\t * @private\r\n\t */\r\n\r\n\tScrollMagic.Event = function (type, namespace, target, vars) {\r\n\t\tvars = vars || {};\r\n\t\tfor (var key in vars) {\r\n\t\t\tthis[key] = vars[key];\r\n\t\t}\r\n\t\tthis.type = type;\r\n\t\tthis.target = this.currentTarget = target;\r\n\t\tthis.namespace = namespace || '';\r\n\t\tthis.timeStamp = this.timestamp = Date.now();\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/*\r\n\t * TODO: DOCS (private for dev)\r\n\t */\r\n\r\n\tvar _util = ScrollMagic._util = (function (window) {\r\n\t\tvar U = {},\r\n\t\t\ti;\r\n\r\n\t\t/**\r\n\t\t * ------------------------------\r\n\t\t * internal helpers\r\n\t\t * ------------------------------\r\n\t\t */\r\n\r\n\t\t// parse float and fall back to 0.\r\n\t\tvar floatval = function (number) {\r\n\t\t\treturn parseFloat(number) || 0;\r\n\t\t};\r\n\t\t// get current style IE safe (otherwise IE would return calculated values for 'auto')\r\n\t\tvar _getComputedStyle = function (elem) {\r\n\t\t\treturn elem.currentStyle ? elem.currentStyle : window.getComputedStyle(elem);\r\n\t\t};\r\n\r\n\t\t// get element dimension (width or height)\r\n\t\tvar _dimension = function (which, elem, outer, includeMargin) {\r\n\t\t\telem = (elem === document) ? window : elem;\r\n\t\t\tif (elem === window) {\r\n\t\t\t\tincludeMargin = false;\r\n\t\t\t} else if (!_type.DomElement(elem)) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t\twhich = which.charAt(0).toUpperCase() + which.substr(1).toLowerCase();\r\n\t\t\tvar dimension = (outer ? elem['offset' + which] || elem['outer' + which] : elem['client' + which] || elem['inner' + which]) || 0;\r\n\t\t\tif (outer && includeMargin) {\r\n\t\t\t\tvar style = _getComputedStyle(elem);\r\n\t\t\t\tdimension += which === 'Height' ? floatval(style.marginTop) + floatval(style.marginBottom) : floatval(style.marginLeft) + floatval(style.marginRight);\r\n\t\t\t}\r\n\t\t\treturn dimension;\r\n\t\t};\r\n\t\t// converts 'margin-top' into 'marginTop'\r\n\t\tvar _camelCase = function (str) {\r\n\t\t\treturn str.replace(/^[^a-z]+([a-z])/g, '$1').replace(/-([a-z])/g, function (g) {\r\n\t\t\t\treturn g[1].toUpperCase();\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * ------------------------------\r\n\t\t * external helpers\r\n\t\t * ------------------------------\r\n\t\t */\r\n\r\n\t\t// extend obj \u2013 same as jQuery.extend({}, objA, objB)\r\n\t\tU.extend = function (obj) {\r\n\t\t\tobj = obj || {};\r\n\t\t\tfor (i = 1; i < arguments.length; i++) {\r\n\t\t\t\tif (!arguments[i]) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tfor (var key in arguments[i]) {\r\n\t\t\t\t\tif (arguments[i].hasOwnProperty(key)) {\r\n\t\t\t\t\t\tobj[key] = arguments[i][key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn obj;\r\n\t\t};\r\n\r\n\t\t// check if a css display type results in margin-collapse or not\r\n\t\tU.isMarginCollapseType = function (str) {\r\n\t\t\treturn [\"block\", \"flex\", \"list-item\", \"table\", \"-webkit-box\"].indexOf(str) > -1;\r\n\t\t};\r\n\r\n\t\t// implementation of requestAnimationFrame\r\n\t\t// based on https://gist.github.com/paulirish/1579671\r\n\t\tvar\r\n\t\t\tlastTime = 0,\r\n\t\t\tvendors = ['ms', 'moz', 'webkit', 'o'];\r\n\t\tvar _requestAnimationFrame = window.requestAnimationFrame;\r\n\t\tvar _cancelAnimationFrame = window.cancelAnimationFrame;\r\n\t\t// try vendor prefixes if the above doesn't work\r\n\t\tfor (i = 0; !_requestAnimationFrame && i < vendors.length; ++i) {\r\n\t\t\t_requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame'];\r\n\t\t\t_cancelAnimationFrame = window[vendors[i] + 'CancelAnimationFrame'] || window[vendors[i] + 'CancelRequestAnimationFrame'];\r\n\t\t}\r\n\r\n\t\t// fallbacks\r\n\t\tif (!_requestAnimationFrame) {\r\n\t\t\t_requestAnimationFrame = function (callback) {\r\n\t\t\t\tvar\r\n\t\t\t\t\tcurrTime = new Date().getTime(),\r\n\t\t\t\t\ttimeToCall = Math.max(0, 16 - (currTime - lastTime)),\r\n\t\t\t\t\tid = window.setTimeout(function () {\r\n\t\t\t\t\t\tcallback(currTime + timeToCall);\r\n\t\t\t\t\t}, timeToCall);\r\n\t\t\t\tlastTime = currTime + timeToCall;\r\n\t\t\t\treturn id;\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!_cancelAnimationFrame) {\r\n\t\t\t_cancelAnimationFrame = function (id) {\r\n\t\t\t\twindow.clearTimeout(id);\r\n\t\t\t};\r\n\t\t}\r\n\t\tU.rAF = _requestAnimationFrame.bind(window);\r\n\t\tU.cAF = _cancelAnimationFrame.bind(window);\r\n\r\n\t\tvar\r\n\t\t\tloglevels = [\"error\", \"warn\", \"log\"],\r\n\t\t\tconsole = window.console || {};\r\n\r\n\t\tconsole.log = console.log || function () {}; // no console log, well - do nothing then...\r\n\t\t// make sure methods for all levels exist.\r\n\t\tfor (i = 0; i < loglevels.length; i++) {\r\n\t\t\tvar method = loglevels[i];\r\n\t\t\tif (!console[method]) {\r\n\t\t\t\tconsole[method] = console.log; // prefer .log over nothing\r\n\t\t\t}\r\n\t\t}\r\n\t\tU.log = function (loglevel) {\r\n\t\t\tif (loglevel > loglevels.length || loglevel <= 0) loglevel = loglevels.length;\r\n\t\t\tvar now = new Date(),\r\n\t\t\t\ttime = (\"0\" + now.getHours()).slice(-2) + \":\" + (\"0\" + now.getMinutes()).slice(-2) + \":\" + (\"0\" + now.getSeconds()).slice(-2) + \":\" + (\"00\" + now.getMilliseconds()).slice(-3),\r\n\t\t\t\tmethod = loglevels[loglevel - 1],\r\n\t\t\t\targs = Array.prototype.splice.call(arguments, 1),\r\n\t\t\t\tfunc = Function.prototype.bind.call(console[method], console);\r\n\t\t\targs.unshift(time);\r\n\t\t\tfunc.apply(console, args);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * ------------------------------\r\n\t\t * type testing\r\n\t\t * ------------------------------\r\n\t\t */\r\n\r\n\t\tvar _type = U.type = function (v) {\r\n\t\t\treturn Object.prototype.toString.call(v).replace(/^\\[object (.+)\\]$/, \"$1\").toLowerCase();\r\n\t\t};\r\n\t\t_type.String = function (v) {\r\n\t\t\treturn _type(v) === 'string';\r\n\t\t};\r\n\t\t_type.Function = function (v) {\r\n\t\t\treturn _type(v) === 'function';\r\n\t\t};\r\n\t\t_type.Array = function (v) {\r\n\t\t\treturn Array.isArray(v);\r\n\t\t};\r\n\t\t_type.Number = function (v) {\r\n\t\t\treturn !_type.Array(v) && (v - parseFloat(v) + 1) >= 0;\r\n\t\t};\r\n\t\t_type.DomElement = function (o) {\r\n\t\t\treturn (\r\n\t\t\t\ttypeof HTMLElement === \"object\" || typeof HTMLElement === \"function\" ? o instanceof HTMLElement || o instanceof SVGElement : //DOM2\r\n\t\t\t\to && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\"\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * ------------------------------\r\n\t\t * DOM Element info\r\n\t\t * ------------------------------\r\n\t\t */\r\n\t\t// always returns a list of matching DOM elements, from a selector, a DOM element or an list of elements or even an array of selectors\r\n\t\tvar _get = U.get = {};\r\n\t\t_get.elements = function (selector) {\r\n\t\t\tvar arr = [];\r\n\t\t\tif (_type.String(selector)) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tselector = document.querySelectorAll(selector);\r\n\t\t\t\t} catch (e) { // invalid selector\r\n\t\t\t\t\treturn arr;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (_type(selector) === 'nodelist' || _type.Array(selector) || selector instanceof NodeList) {\r\n\t\t\t\tfor (var i = 0, ref = arr.length = selector.length; i < ref; i++) { // list of elements\r\n\t\t\t\t\tvar elem = selector[i];\r\n\t\t\t\t\tarr[i] = _type.DomElement(elem) ? elem : _get.elements(elem); // if not an element, try to resolve recursively\r\n\t\t\t\t}\r\n\t\t\t} else if (_type.DomElement(selector) || selector === document || selector === window) {\r\n\t\t\t\tarr = [selector]; // only the element\r\n\t\t\t}\r\n\t\t\treturn arr;\r\n\t\t};\r\n\t\t// get scroll top value\r\n\t\t_get.scrollTop = function (elem) {\r\n\t\t\treturn (elem && typeof elem.scrollTop === 'number') ? elem.scrollTop : window.pageYOffset || 0;\r\n\t\t};\r\n\t\t// get scroll left value\r\n\t\t_get.scrollLeft = function (elem) {\r\n\t\t\treturn (elem && typeof elem.scrollLeft === 'number') ? elem.scrollLeft : window.pageXOffset || 0;\r\n\t\t};\r\n\t\t// get element height\r\n\t\t_get.width = function (elem, outer, includeMargin) {\r\n\t\t\treturn _dimension('width', elem, outer, includeMargin);\r\n\t\t};\r\n\t\t// get element width\r\n\t\t_get.height = function (elem, outer, includeMargin) {\r\n\t\t\treturn _dimension('height', elem, outer, includeMargin);\r\n\t\t};\r\n\r\n\t\t// get element position (optionally relative to viewport)\r\n\t\t_get.offset = function (elem, relativeToViewport) {\r\n\t\t\tvar offset = {\r\n\t\t\t\ttop: 0,\r\n\t\t\t\tleft: 0\r\n\t\t\t};\r\n\t\t\tif (elem && elem.getBoundingClientRect) { // check if available\r\n\t\t\t\tvar rect = elem.getBoundingClientRect();\r\n\t\t\t\toffset.top = rect.top;\r\n\t\t\t\toffset.left = rect.left;\r\n\t\t\t\tif (!relativeToViewport) { // clientRect is by default relative to viewport...\r\n\t\t\t\t\toffset.top += _get.scrollTop();\r\n\t\t\t\t\toffset.left += _get.scrollLeft();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn offset;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * ------------------------------\r\n\t\t * DOM Element manipulation\r\n\t\t * ------------------------------\r\n\t\t */\r\n\r\n\t\tU.addClass = function (elem, classname) {\r\n\t\t\tif (classname) {\r\n\t\t\t\tif (elem.classList)\r\n\t\t\t\t\telem.classList.add(classname);\r\n\t\t\t\telse\r\n\t\t\t\t\telem.className += ' ' + classname;\r\n\t\t\t}\r\n\t\t};\r\n\t\tU.removeClass = function (elem, classname) {\r\n\t\t\tif (classname) {\r\n\t\t\t\tif (elem.classList)\r\n\t\t\t\t\telem.classList.remove(classname);\r\n\t\t\t\telse\r\n\t\t\t\t\telem.className = elem.className.replace(new RegExp('(^|\\\\b)' + classname.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n\t\t\t}\r\n\t\t};\r\n\t\t// if options is string -> returns css value\r\n\t\t// if options is array -> returns object with css value pairs\r\n\t\t// if options is object -> set new css values\r\n\t\tU.css = function (elem, options) {\r\n\t\t\tif (_type.String(options)) {\r\n\t\t\t\treturn _getComputedStyle(elem)[_camelCase(options)];\r\n\t\t\t} else if (_type.Array(options)) {\r\n\t\t\t\tvar\r\n\t\t\t\t\tobj = {},\r\n\t\t\t\t\tstyle = _getComputedStyle(elem);\r\n\t\t\t\toptions.forEach(function (option, key) {\r\n\t\t\t\t\tobj[option] = style[_camelCase(option)];\r\n\t\t\t\t});\r\n\t\t\t\treturn obj;\r\n\t\t\t} else {\r\n\t\t\t\tfor (var option in options) {\r\n\t\t\t\t\tvar val = options[option];\r\n\t\t\t\t\tif (val == parseFloat(val)) { // assume pixel for seemingly numerical values\r\n\t\t\t\t\t\tval += 'px';\r\n\t\t\t\t\t}\r\n\t\t\t\t\telem.style[_camelCase(option)] = val;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn U;\r\n\t}(window || {}));\r\n\r\n\r\n\tScrollMagic.Scene.prototype.addIndicators = function () {\r\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling addIndicators() due to missing Plugin \\'debug.addIndicators\\'. Please make sure to include plugins/debug.addIndicators.js');\r\n\t\treturn this;\r\n\t}\r\n\tScrollMagic.Scene.prototype.removeIndicators = function () {\r\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeIndicators() due to missing Plugin \\'debug.addIndicators\\'. Please make sure to include plugins/debug.addIndicators.js');\r\n\t\treturn this;\r\n\t}\r\n\tScrollMagic.Scene.prototype.setTween = function () {\r\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setTween() due to missing Plugin \\'animation.gsap\\'. Please make sure to include plugins/animation.gsap.js');\r\n\t\treturn this;\r\n\t}\r\n\tScrollMagic.Scene.prototype.removeTween = function () {\r\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeTween() due to missing Plugin \\'animation.gsap\\'. Please make sure to include plugins/animation.gsap.js');\r\n\t\treturn this;\r\n\t}\r\n\tScrollMagic.Scene.prototype.setVelocity = function () {\r\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setVelocity() due to missing Plugin \\'animation.velocity\\'. Please make sure to include plugins/animation.velocity.js');\r\n\t\treturn this;\r\n\t}\r\n\tScrollMagic.Scene.prototype.removeVelocity = function () {\r\n\t\tScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeVelocity() due to missing Plugin \\'animation.velocity\\'. Please make sure to include plugins/animation.velocity.js');\r\n\t\treturn this;\r\n\t}\r\n\r\n\treturn ScrollMagic;\r\n}));", "/*!\r\n * ScrollMagic v2.0.8 (2020-08-14)\r\n * The javascript library for magical scroll interactions.\r\n * (c) 2020 Jan Paepke (@janpaepke)\r\n * Project Website: http://scrollmagic.io\r\n * \r\n * @version 2.0.8\r\n * @license Dual licensed under MIT license and GPL.\r\n * @author Jan Paepke - e-mail@janpaepke.de\r\n *\r\n * @file Debug Extension for ScrollMagic.\r\n */\r\n/**\r\n * This plugin was formerly known as the ScrollMagic debug extension.\r\n *\r\n * It enables you to add visual indicators to your page, to be able to see exactly when a scene is triggered.\r\n *\r\n * To have access to this extension, please include `plugins/debug.addIndicators.js`.\r\n * @mixin debug.addIndicators\r\n */\r\n(function (root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\t// AMD. Register as an anonymous module.\r\n\t\tdefine(['ScrollMagic'], factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\t// CommonJS\r\n\t\tfactory(require('scrollmagic'));\r\n\t} else {\r\n\t\t// no browser global export needed, just execute\r\n\t\tfactory(root.ScrollMagic || (root.jQuery && root.jQuery.ScrollMagic));\r\n\t}\r\n}(this, function (ScrollMagic) {\r\n\t\"use strict\";\r\n\tvar NAMESPACE = \"debug.addIndicators\";\r\n\r\n\tvar\r\n\t\tconsole = window.console || {},\r\n\t\terr = Function.prototype.bind.call(console.error || console.log || function () {}, console);\r\n\tif (!ScrollMagic) {\r\n\t\terr(\"(\" + NAMESPACE + \") -> ERROR: The ScrollMagic main module could not be found. Please make sure it's loaded before this plugin or use an asynchronous loader like requirejs.\");\r\n\t}\r\n\r\n\t// plugin settings\r\n\tvar\r\n\t\tFONT_SIZE = \"0.85em\",\r\n\t\tZINDEX = \"9999\",\r\n\t\tEDGE_OFFSET = 15; // minimum edge distance, added to indentation\r\n\r\n\t// overall vars\r\n\tvar\r\n\t\t_util = ScrollMagic._util,\r\n\t\t_autoindex = 0;\r\n\r\n\r\n\r\n\tScrollMagic.Scene.extend(function () {\r\n\t\tvar\r\n\t\t\tScene = this,\r\n\t\t\t_indicator;\r\n\r\n\t\tvar log = function () {\r\n\t\t\tif (Scene._log) { // not available, when main source minified\r\n\t\t\t\tArray.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \")\", \"->\");\r\n\t\t\t\tScene._log.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Add visual indicators for a ScrollMagic.Scene.  \r\n\t\t * @memberof! debug.addIndicators#\r\n\t\t *\r\n\t\t * @example\r\n\t\t * // add basic indicators\r\n\t\t * scene.addIndicators()\r\n\t\t *\r\n\t\t * // passing options\r\n\t\t * scene.addIndicators({name: \"pin scene\", colorEnd: \"#FFFFFF\"});\r\n\t\t *\r\n\t\t * @param {object} [options] - An object containing one or more options for the indicators.\r\n\t\t * @param {(string|object)} [options.parent] - A selector, DOM Object or a jQuery object that the indicators should be added to.  \r\n\t\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t If undefined, the controller's container will be used.\r\n\t\t * @param {number} [options.name=\"\"] - This string will be displayed at the start and end indicators of the scene for identification purposes. If no name is supplied an automatic index will be used.\r\n\t\t * @param {number} [options.indent=0] - Additional position offset for the indicators (useful, when having multiple scenes starting at the same position).\r\n\t\t * @param {string} [options.colorStart=green] - CSS color definition for the start indicator.\r\n\t\t * @param {string} [options.colorEnd=red] - CSS color definition for the end indicator.\r\n\t\t * @param {string} [options.colorTrigger=blue] - CSS color definition for the trigger indicator.\r\n\t\t */\r\n\t\tScene.addIndicators = function (options) {\r\n\t\t\tif (!_indicator) {\r\n\t\t\t\tvar\r\n\t\t\t\t\tDEFAULT_OPTIONS = {\r\n\t\t\t\t\t\tname: \"\",\r\n\t\t\t\t\t\tindent: 0,\r\n\t\t\t\t\t\tparent: undefined,\r\n\t\t\t\t\t\tcolorStart: \"green\",\r\n\t\t\t\t\t\tcolorEnd: \"red\",\r\n\t\t\t\t\t\tcolorTrigger: \"blue\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\toptions = _util.extend({}, DEFAULT_OPTIONS, options);\r\n\r\n\t\t\t\t_autoindex++;\r\n\t\t\t\t_indicator = new Indicator(Scene, options);\r\n\r\n\t\t\t\tScene.on(\"add.plugin_addIndicators\", _indicator.add);\r\n\t\t\t\tScene.on(\"remove.plugin_addIndicators\", _indicator.remove);\r\n\t\t\t\tScene.on(\"destroy.plugin_addIndicators\", Scene.removeIndicators);\r\n\r\n\t\t\t\t// it the scene already has a controller we can start right away.\r\n\t\t\t\tif (Scene.controller()) {\r\n\t\t\t\t\t_indicator.add();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Removes visual indicators from a ScrollMagic.Scene.\r\n\t\t * @memberof! debug.addIndicators#\r\n\t\t *\r\n\t\t * @example\r\n\t\t * // remove previously added indicators\r\n\t\t * scene.removeIndicators()\r\n\t\t *\r\n\t\t */\r\n\t\tScene.removeIndicators = function () {\r\n\t\t\tif (_indicator) {\r\n\t\t\t\t_indicator.remove();\r\n\t\t\t\tthis.off(\"*.plugin_addIndicators\");\r\n\t\t\t\t_indicator = undefined;\r\n\t\t\t}\r\n\t\t\treturn Scene;\r\n\t\t};\r\n\r\n\t});\r\n\r\n\r\n\t/*\r\n\t * ----------------------------------------------------------------\r\n\t * Extension for controller to store and update related indicators\r\n\t * ----------------------------------------------------------------\r\n\t */\r\n\t// add option to globally auto-add indicators to scenes\r\n\t/**\r\n\t * Every ScrollMagic.Controller instance now accepts an additional option.  \r\n\t * See {@link ScrollMagic.Controller} for a complete list of the standard options.\r\n\t * @memberof! debug.addIndicators#\r\n\t * @method new ScrollMagic.Controller(options)\r\n\t * @example\r\n\t * // make a controller and add indicators to all scenes attached\r\n\t * var controller = new ScrollMagic.Controller({addIndicators: true});\r\n\t * // this scene will automatically have indicators added to it\r\n\t * new ScrollMagic.Scene()\r\n\t *                .addTo(controller);\r\n\t *\r\n\t * @param {object} [options] - Options for the Controller.\r\n\t * @param {boolean} [options.addIndicators=false] - If set to `true` every scene that is added to the controller will automatically get indicators added to it.\r\n\t */\r\n\tScrollMagic.Controller.addOption(\"addIndicators\", false);\r\n\t// extend Controller\r\n\tScrollMagic.Controller.extend(function () {\r\n\t\tvar\r\n\t\t\tController = this,\r\n\t\t\t_info = Controller.info(),\r\n\t\t\t_container = _info.container,\r\n\t\t\t_isDocument = _info.isDocument,\r\n\t\t\t_vertical = _info.vertical,\r\n\t\t\t_indicators = { // container for all indicators and methods\r\n\t\t\t\tgroups: []\r\n\t\t\t};\r\n\r\n\t\tvar log = function () {\r\n\t\t\tif (Controller._log) { // not available, when main source minified\r\n\t\t\t\tArray.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \")\", \"->\");\r\n\t\t\t\tController._log.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\tif (Controller._indicators) {\r\n\t\t\tlog(2, \"WARNING: Scene already has a property '_indicators', which will be overwritten by plugin.\");\r\n\t\t}\r\n\r\n\t\t// add indicators container\r\n\t\tthis._indicators = _indicators;\r\n\t\t/*\r\n\t\t\tneeded updates:\r\n\t\t\t+++++++++++++++\r\n\t\t\tstart/end position on scene shift (handled in Indicator class)\r\n\t\t\ttrigger parameters on triggerHook value change (handled in Indicator class)\r\n\t\t\tbounds position on container scroll or resize (to keep alignment to bottom/right)\r\n\t\t\ttrigger position on container resize, window resize (if container isn't document) and window scroll (if container isn't document)\r\n\t\t*/\r\n\r\n\t\t// event handler for when associated bounds markers need to be repositioned\r\n\t\tvar handleBoundsPositionChange = function () {\r\n\t\t\t_indicators.updateBoundsPositions();\r\n\t\t};\r\n\r\n\t\t// event handler for when associated trigger groups need to be repositioned\r\n\t\tvar handleTriggerPositionChange = function () {\r\n\t\t\t_indicators.updateTriggerGroupPositions();\r\n\t\t};\r\n\r\n\t\t_container.addEventListener(\"resize\", handleTriggerPositionChange);\r\n\t\tif (!_isDocument) {\r\n\t\t\twindow.addEventListener(\"resize\", handleTriggerPositionChange);\r\n\t\t\twindow.addEventListener(\"scroll\", handleTriggerPositionChange);\r\n\t\t}\r\n\t\t// update all related bounds containers\r\n\t\t_container.addEventListener(\"resize\", handleBoundsPositionChange);\r\n\t\t_container.addEventListener(\"scroll\", handleBoundsPositionChange);\r\n\r\n\r\n\t\t// updates the position of the bounds container to aligned to the right for vertical containers and to the bottom for horizontal\r\n\t\tthis._indicators.updateBoundsPositions = function (specificIndicator) {\r\n\t\t\tvar // constant for all bounds\r\n\t\t\t\tgroups = specificIndicator ? [_util.extend({}, specificIndicator.triggerGroup, {\r\n\t\t\t\t\tmembers: [specificIndicator]\r\n\t\t\t\t})] : // create a group with only one element\r\n\t\t\t\t_indicators.groups, // use all\r\n\t\t\t\tg = groups.length,\r\n\t\t\t\tcss = {},\r\n\t\t\t\tparamPos = _vertical ? \"left\" : \"top\",\r\n\t\t\t\tparamDimension = _vertical ? \"width\" : \"height\",\r\n\t\t\t\tedge = _vertical ?\r\n\t\t\t\t_util.get.scrollLeft(_container) + _util.get.width(_container) - EDGE_OFFSET :\r\n\t\t\t\t_util.get.scrollTop(_container) + _util.get.height(_container) - EDGE_OFFSET,\r\n\t\t\t\tb, triggerSize, group;\r\n\t\t\twhile (g--) { // group loop\r\n\t\t\t\tgroup = groups[g];\r\n\t\t\t\tb = group.members.length;\r\n\t\t\t\ttriggerSize = _util.get[paramDimension](group.element.firstChild);\r\n\t\t\t\twhile (b--) { // indicators loop\r\n\t\t\t\t\tcss[paramPos] = edge - triggerSize;\r\n\t\t\t\t\t_util.css(group.members[b].bounds, css);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// updates the positions of all trigger groups attached to a controller or a specific one, if provided\r\n\t\tthis._indicators.updateTriggerGroupPositions = function (specificGroup) {\r\n\t\t\tvar // constant vars\r\n\t\t\t\tgroups = specificGroup ? [specificGroup] : _indicators.groups,\r\n\t\t\t\ti = groups.length,\r\n\t\t\t\tcontainer = _isDocument ? document.body : _container,\r\n\t\t\t\tcontainerOffset = _isDocument ? {\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tleft: 0\r\n\t\t\t\t} : _util.get.offset(container, true),\r\n\t\t\t\tedge = _vertical ?\r\n\t\t\t\t_util.get.width(_container) - EDGE_OFFSET :\r\n\t\t\t\t_util.get.height(_container) - EDGE_OFFSET,\r\n\t\t\t\tparamDimension = _vertical ? \"width\" : \"height\",\r\n\t\t\t\tparamTransform = _vertical ? \"Y\" : \"X\";\r\n\t\t\tvar // changing vars\r\n\t\t\t\tgroup,\r\n\t\t\t\telem,\r\n\t\t\t\tpos,\r\n\t\t\t\telemSize,\r\n\t\t\t\ttransform;\r\n\t\t\twhile (i--) {\r\n\t\t\t\tgroup = groups[i];\r\n\t\t\t\telem = group.element;\r\n\t\t\t\tpos = group.triggerHook * Controller.info(\"size\");\r\n\t\t\t\telemSize = _util.get[paramDimension](elem.firstChild.firstChild);\r\n\t\t\t\ttransform = pos > elemSize ? \"translate\" + paramTransform + \"(-100%)\" : \"\";\r\n\r\n\t\t\t\t_util.css(elem, {\r\n\t\t\t\t\ttop: containerOffset.top + (_vertical ? pos : edge - group.members[0].options.indent),\r\n\t\t\t\t\tleft: containerOffset.left + (_vertical ? edge - group.members[0].options.indent : pos)\r\n\t\t\t\t});\r\n\t\t\t\t_util.css(elem.firstChild.firstChild, {\r\n\t\t\t\t\t\"-ms-transform\": transform,\r\n\t\t\t\t\t\"-webkit-transform\": transform,\r\n\t\t\t\t\t\"transform\": transform\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// updates the label for the group to contain the name, if it only has one member\r\n\t\tthis._indicators.updateTriggerGroupLabel = function (group) {\r\n\t\t\tvar\r\n\t\t\t\ttext = \"trigger\" + (group.members.length > 1 ? \"\" : \" \" + group.members[0].options.name),\r\n\t\t\t\telem = group.element.firstChild.firstChild,\r\n\t\t\t\tdoUpdate = elem.textContent !== text;\r\n\t\t\tif (doUpdate) {\r\n\t\t\t\telem.textContent = text;\r\n\t\t\t\tif (_vertical) { // bounds position is dependent on text length, so update\r\n\t\t\t\t\t_indicators.updateBoundsPositions();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// add indicators if global option is set\r\n\t\tthis.addScene = function (newScene) {\r\n\r\n\t\t\tif (this._options.addIndicators && newScene instanceof ScrollMagic.Scene && newScene.controller() === Controller) {\r\n\t\t\t\tnewScene.addIndicators();\r\n\t\t\t}\r\n\t\t\t// call original destroy method\r\n\t\t\tthis.$super.addScene.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\t// remove all previously set listeners on destroy\r\n\t\tthis.destroy = function () {\r\n\t\t\t_container.removeEventListener(\"resize\", handleTriggerPositionChange);\r\n\t\t\tif (!_isDocument) {\r\n\t\t\t\twindow.removeEventListener(\"resize\", handleTriggerPositionChange);\r\n\t\t\t\twindow.removeEventListener(\"scroll\", handleTriggerPositionChange);\r\n\t\t\t}\r\n\t\t\t_container.removeEventListener(\"resize\", handleBoundsPositionChange);\r\n\t\t\t_container.removeEventListener(\"scroll\", handleBoundsPositionChange);\r\n\t\t\t// call original destroy method\r\n\t\t\tthis.$super.destroy.apply(this, arguments);\r\n\t\t};\r\n\t\treturn Controller;\r\n\r\n\t});\r\n\r\n\t/*\r\n\t * ----------------------------------------------------------------\r\n\t * Internal class for the construction of Indicators\r\n\t * ----------------------------------------------------------------\r\n\t */\r\n\tvar Indicator = function (Scene, options) {\r\n\t\tvar\r\n\t\t\tIndicator = this,\r\n\t\t\t_elemBounds = TPL.bounds(),\r\n\t\t\t_elemStart = TPL.start(options.colorStart),\r\n\t\t\t_elemEnd = TPL.end(options.colorEnd),\r\n\t\t\t_boundsContainer = options.parent && _util.get.elements(options.parent)[0],\r\n\t\t\t_vertical,\r\n\t\t\t_ctrl;\r\n\r\n\t\tvar log = function () {\r\n\t\t\tif (Scene._log) { // not available, when main source minified\r\n\t\t\t\tArray.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \")\", \"->\");\r\n\t\t\t\tScene._log.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\toptions.name = options.name || _autoindex;\r\n\r\n\t\t// prepare bounds elements\r\n\t\t_elemStart.firstChild.textContent += \" \" + options.name;\r\n\t\t_elemEnd.textContent += \" \" + options.name;\r\n\t\t_elemBounds.appendChild(_elemStart);\r\n\t\t_elemBounds.appendChild(_elemEnd);\r\n\r\n\t\t// set public variables\r\n\t\tIndicator.options = options;\r\n\t\tIndicator.bounds = _elemBounds;\r\n\t\t// will be set later\r\n\t\tIndicator.triggerGroup = undefined;\r\n\r\n\t\t// add indicators to DOM\r\n\t\tthis.add = function () {\r\n\t\t\t_ctrl = Scene.controller();\r\n\t\t\t_vertical = _ctrl.info(\"vertical\");\r\n\r\n\t\t\tvar isDocument = _ctrl.info(\"isDocument\");\r\n\r\n\t\t\tif (!_boundsContainer) {\r\n\t\t\t\t// no parent supplied or doesnt exist\r\n\t\t\t\t_boundsContainer = isDocument ? document.body : _ctrl.info(\"container\"); // check if window/document (then use body)\r\n\t\t\t}\r\n\t\t\tif (!isDocument && _util.css(_boundsContainer, \"position\") === 'static') {\r\n\t\t\t\t// position mode needed for correct positioning of indicators\r\n\t\t\t\t_util.css(_boundsContainer, {\r\n\t\t\t\t\tposition: \"relative\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// add listeners for updates\r\n\t\t\tScene.on(\"change.plugin_addIndicators\", handleTriggerParamsChange);\r\n\t\t\tScene.on(\"shift.plugin_addIndicators\", handleBoundsParamsChange);\r\n\r\n\t\t\t// updates trigger & bounds (will add elements if needed)\r\n\t\t\tupdateTriggerGroup();\r\n\t\t\tupdateBounds();\r\n\r\n\t\t\tsetTimeout(function () { // do after all execution is finished otherwise sometimes size calculations are off\r\n\t\t\t\t_ctrl._indicators.updateBoundsPositions(Indicator);\r\n\t\t\t}, 0);\r\n\r\n\t\t\tlog(3, \"added indicators\");\r\n\t\t};\r\n\r\n\t\t// remove indicators from DOM\r\n\t\tthis.remove = function () {\r\n\t\t\tif (Indicator.triggerGroup) { // if not set there's nothing to remove\r\n\t\t\t\tScene.off(\"change.plugin_addIndicators\", handleTriggerParamsChange);\r\n\t\t\t\tScene.off(\"shift.plugin_addIndicators\", handleBoundsParamsChange);\r\n\r\n\t\t\t\tif (Indicator.triggerGroup.members.length > 1) {\r\n\t\t\t\t\t// just remove from memberlist of old group\r\n\t\t\t\t\tvar group = Indicator.triggerGroup;\r\n\t\t\t\t\tgroup.members.splice(group.members.indexOf(Indicator), 1);\r\n\t\t\t\t\t_ctrl._indicators.updateTriggerGroupLabel(group);\r\n\t\t\t\t\t_ctrl._indicators.updateTriggerGroupPositions(group);\r\n\t\t\t\t\tIndicator.triggerGroup = undefined;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// remove complete group\r\n\t\t\t\t\tremoveTriggerGroup();\r\n\t\t\t\t}\r\n\t\t\t\tremoveBounds();\r\n\r\n\t\t\t\tlog(3, \"removed indicators\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * internal Event Handlers\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\t// event handler for when bounds params change\r\n\t\tvar handleBoundsParamsChange = function () {\r\n\t\t\tupdateBounds();\r\n\t\t};\r\n\r\n\t\t// event handler for when trigger params change\r\n\t\tvar handleTriggerParamsChange = function (e) {\r\n\t\t\tif (e.what === \"triggerHook\") {\r\n\t\t\t\tupdateTriggerGroup();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * Bounds (start / stop) management\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\t// adds an new bounds elements to the array and to the DOM\r\n\t\tvar addBounds = function () {\r\n\t\t\tvar v = _ctrl.info(\"vertical\");\r\n\t\t\t// apply stuff we didn't know before...\r\n\t\t\t_util.css(_elemStart.firstChild, {\r\n\t\t\t\t\"border-bottom-width\": v ? 1 : 0,\r\n\t\t\t\t\"border-right-width\": v ? 0 : 1,\r\n\t\t\t\t\"bottom\": v ? -1 : options.indent,\r\n\t\t\t\t\"right\": v ? options.indent : -1,\r\n\t\t\t\t\"padding\": v ? \"0 8px\" : \"2px 4px\",\r\n\t\t\t});\r\n\t\t\t_util.css(_elemEnd, {\r\n\t\t\t\t\"border-top-width\": v ? 1 : 0,\r\n\t\t\t\t\"border-left-width\": v ? 0 : 1,\r\n\t\t\t\t\"top\": v ? \"100%\" : \"\",\r\n\t\t\t\t\"right\": v ? options.indent : \"\",\r\n\t\t\t\t\"bottom\": v ? \"\" : options.indent,\r\n\t\t\t\t\"left\": v ? \"\" : \"100%\",\r\n\t\t\t\t\"padding\": v ? \"0 8px\" : \"2px 4px\"\r\n\t\t\t});\r\n\t\t\t// append\r\n\t\t\t_boundsContainer.appendChild(_elemBounds);\r\n\t\t};\r\n\r\n\t\t// remove bounds from list and DOM\r\n\t\tvar removeBounds = function () {\r\n\t\t\t_elemBounds.parentNode.removeChild(_elemBounds);\r\n\t\t};\r\n\r\n\t\t// update the start and end positions of the scene\r\n\t\tvar updateBounds = function () {\r\n\t\t\tif (_elemBounds.parentNode !== _boundsContainer) {\r\n\t\t\t\taddBounds(); // Add Bounds elements (start/end)\r\n\t\t\t}\r\n\t\t\tvar css = {};\r\n\t\t\tcss[_vertical ? \"top\" : \"left\"] = Scene.triggerPosition();\r\n\t\t\tcss[_vertical ? \"height\" : \"width\"] = Scene.duration();\r\n\t\t\t_util.css(_elemBounds, css);\r\n\t\t\t_util.css(_elemEnd, {\r\n\t\t\t\tdisplay: Scene.duration() > 0 ? \"\" : \"none\"\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t/*\r\n\t\t * ----------------------------------------------------------------\r\n\t\t * trigger and trigger group management\r\n\t\t * ----------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\t// adds an new trigger group to the array and to the DOM\r\n\t\tvar addTriggerGroup = function () {\r\n\t\t\tvar triggerElem = TPL.trigger(options.colorTrigger); // new trigger element\r\n\t\t\tvar css = {};\r\n\t\t\tcss[_vertical ? \"right\" : \"bottom\"] = 0;\r\n\t\t\tcss[_vertical ? \"border-top-width\" : \"border-left-width\"] = 1;\r\n\t\t\t_util.css(triggerElem.firstChild, css);\r\n\t\t\t_util.css(triggerElem.firstChild.firstChild, {\r\n\t\t\t\tpadding: _vertical ? \"0 8px 3px 8px\" : \"3px 4px\"\r\n\t\t\t});\r\n\t\t\tdocument.body.appendChild(triggerElem); // directly add to body\r\n\t\t\tvar newGroup = {\r\n\t\t\t\ttriggerHook: Scene.triggerHook(),\r\n\t\t\t\telement: triggerElem,\r\n\t\t\t\tmembers: [Indicator]\r\n\t\t\t};\r\n\t\t\t_ctrl._indicators.groups.push(newGroup);\r\n\t\t\tIndicator.triggerGroup = newGroup;\r\n\t\t\t// update right away\r\n\t\t\t_ctrl._indicators.updateTriggerGroupLabel(newGroup);\r\n\t\t\t_ctrl._indicators.updateTriggerGroupPositions(newGroup);\r\n\t\t};\r\n\r\n\t\tvar removeTriggerGroup = function () {\r\n\t\t\t_ctrl._indicators.groups.splice(_ctrl._indicators.groups.indexOf(Indicator.triggerGroup), 1);\r\n\t\t\tIndicator.triggerGroup.element.parentNode.removeChild(Indicator.triggerGroup.element);\r\n\t\t\tIndicator.triggerGroup = undefined;\r\n\t\t};\r\n\r\n\t\t// updates the trigger group -> either join existing or add new one\r\n\t\t/*\t\r\n\t\t * Logic:\r\n\t\t * 1 if a trigger group exist, check if it's in sync with Scene settings \u2013 if so, nothing else needs to happen\r\n\t\t * 2 try to find an existing one that matches Scene parameters\r\n\t\t * \t 2.1 If a match is found check if already assigned to an existing group\r\n\t\t *\t\t\t If so:\r\n\t\t *       A: it was the last member of existing group -> kill whole group\r\n\t\t *       B: the existing group has other members -> just remove from member list\r\n\t\t *\t 2.2 Assign to matching group\r\n\t\t * 3 if no new match could be found, check if assigned to existing group\r\n\t\t *   A: yes, and it's the only member -> just update parameters and positions and keep using this group\r\n\t\t *   B: yes but there are other members -> remove from member list and create a new one\r\n\t\t *   C: no, so create a new one\r\n\t\t */\r\n\t\tvar updateTriggerGroup = function () {\r\n\t\t\tvar\r\n\t\t\t\ttriggerHook = Scene.triggerHook(),\r\n\t\t\t\tcloseEnough = 0.0001;\r\n\r\n\t\t\t// Have a group, check if it still matches\r\n\t\t\tif (Indicator.triggerGroup) {\r\n\t\t\t\tif (Math.abs(Indicator.triggerGroup.triggerHook - triggerHook) < closeEnough) {\r\n\t\t\t\t\t// _util.log(0, \"trigger\", options.name, \"->\", \"no need to change, still in sync\");\r\n\t\t\t\t\treturn; // all good\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Don't have a group, check if a matching one exists\r\n\t\t\t// _util.log(0, \"trigger\", options.name, \"->\", \"out of sync!\");\r\n\t\t\tvar\r\n\t\t\t\tgroups = _ctrl._indicators.groups,\r\n\t\t\t\tgroup,\r\n\t\t\t\ti = groups.length;\r\n\t\t\twhile (i--) {\r\n\t\t\t\tgroup = groups[i];\r\n\t\t\t\tif (Math.abs(group.triggerHook - triggerHook) < closeEnough) {\r\n\t\t\t\t\t// found a match!\r\n\t\t\t\t\t// _util.log(0, \"trigger\", options.name, \"->\", \"found match\");\r\n\t\t\t\t\tif (Indicator.triggerGroup) { // do I have an old group that is out of sync?\r\n\t\t\t\t\t\tif (Indicator.triggerGroup.members.length === 1) { // is it the only remaining group?\r\n\t\t\t\t\t\t\t// _util.log(0, \"trigger\", options.name, \"->\", \"kill\");\r\n\t\t\t\t\t\t\t// was the last member, remove the whole group\r\n\t\t\t\t\t\t\tremoveTriggerGroup();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tIndicator.triggerGroup.members.splice(Indicator.triggerGroup.members.indexOf(Indicator), 1); // just remove from memberlist of old group\r\n\t\t\t\t\t\t\t_ctrl._indicators.updateTriggerGroupLabel(Indicator.triggerGroup);\r\n\t\t\t\t\t\t\t_ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup);\r\n\t\t\t\t\t\t\t// _util.log(0, \"trigger\", options.name, \"->\", \"removing from previous member list\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// join new group\r\n\t\t\t\t\tgroup.members.push(Indicator);\r\n\t\t\t\t\tIndicator.triggerGroup = group;\r\n\t\t\t\t\t_ctrl._indicators.updateTriggerGroupLabel(group);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// at this point I am obviously out of sync and don't match any other group\r\n\t\t\tif (Indicator.triggerGroup) {\r\n\t\t\t\tif (Indicator.triggerGroup.members.length === 1) {\r\n\t\t\t\t\t// _util.log(0, \"trigger\", options.name, \"->\", \"updating existing\");\r\n\t\t\t\t\t// out of sync but i'm the only member => just change and update\r\n\t\t\t\t\tIndicator.triggerGroup.triggerHook = triggerHook;\r\n\t\t\t\t\t_ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// _util.log(0, \"trigger\", options.name, \"->\", \"removing from previous member list\");\r\n\t\t\t\t\tIndicator.triggerGroup.members.splice(Indicator.triggerGroup.members.indexOf(Indicator), 1); // just remove from memberlist of old group\r\n\t\t\t\t\t_ctrl._indicators.updateTriggerGroupLabel(Indicator.triggerGroup);\r\n\t\t\t\t\t_ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup);\r\n\t\t\t\t\tIndicator.triggerGroup = undefined; // need a brand new group...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// _util.log(0, \"trigger\", options.name, \"->\", \"add a new one\");\r\n\t\t\t// did not find any match, make new trigger group\r\n\t\t\taddTriggerGroup();\r\n\t\t};\r\n\t};\r\n\r\n\t/*\r\n\t * ----------------------------------------------------------------\r\n\t * Templates for the indicators\r\n\t * ----------------------------------------------------------------\r\n\t */\r\n\tvar TPL = {\r\n\t\tstart: function (color) {\r\n\t\t\t// inner element (for bottom offset -1, while keeping top position 0)\r\n\t\t\tvar inner = document.createElement(\"div\");\r\n\t\t\tinner.textContent = \"start\";\r\n\t\t\t_util.css(inner, {\r\n\t\t\t\tposition: \"absolute\",\r\n\t\t\t\toverflow: \"visible\",\r\n\t\t\t\t\"border-width\": 0,\r\n\t\t\t\t\"border-style\": \"solid\",\r\n\t\t\t\tcolor: color,\r\n\t\t\t\t\"border-color\": color\r\n\t\t\t});\r\n\t\t\tvar e = document.createElement('div');\r\n\t\t\t// wrapper\r\n\t\t\t_util.css(e, {\r\n\t\t\t\tposition: \"absolute\",\r\n\t\t\t\toverflow: \"visible\",\r\n\t\t\t\twidth: 0,\r\n\t\t\t\theight: 0\r\n\t\t\t});\r\n\t\t\te.appendChild(inner);\r\n\t\t\treturn e;\r\n\t\t},\r\n\t\tend: function (color) {\r\n\t\t\tvar e = document.createElement('div');\r\n\t\t\te.textContent = \"end\";\r\n\t\t\t_util.css(e, {\r\n\t\t\t\tposition: \"absolute\",\r\n\t\t\t\toverflow: \"visible\",\r\n\t\t\t\t\"border-width\": 0,\r\n\t\t\t\t\"border-style\": \"solid\",\r\n\t\t\t\tcolor: color,\r\n\t\t\t\t\"border-color\": color\r\n\t\t\t});\r\n\t\t\treturn e;\r\n\t\t},\r\n\t\tbounds: function () {\r\n\t\t\tvar e = document.createElement('div');\r\n\t\t\t_util.css(e, {\r\n\t\t\t\tposition: \"absolute\",\r\n\t\t\t\toverflow: \"visible\",\r\n\t\t\t\t\"white-space\": \"nowrap\",\r\n\t\t\t\t\"pointer-events\": \"none\",\r\n\t\t\t\t\"font-size\": FONT_SIZE\r\n\t\t\t});\r\n\t\t\te.style.zIndex = ZINDEX;\r\n\t\t\treturn e;\r\n\t\t},\r\n\t\ttrigger: function (color) {\r\n\t\t\t// inner to be above or below line but keep position\r\n\t\t\tvar inner = document.createElement('div');\r\n\t\t\tinner.textContent = \"trigger\";\r\n\t\t\t_util.css(inner, {\r\n\t\t\t\tposition: \"relative\",\r\n\t\t\t});\r\n\t\t\t// inner wrapper for right: 0 and main element has no size\r\n\t\t\tvar w = document.createElement('div');\r\n\t\t\t_util.css(w, {\r\n\t\t\t\tposition: \"absolute\",\r\n\t\t\t\toverflow: \"visible\",\r\n\t\t\t\t\"border-width\": 0,\r\n\t\t\t\t\"border-style\": \"solid\",\r\n\t\t\t\tcolor: color,\r\n\t\t\t\t\"border-color\": color\r\n\t\t\t});\r\n\t\t\tw.appendChild(inner);\r\n\t\t\t// wrapper\r\n\t\t\tvar e = document.createElement('div');\r\n\t\t\t_util.css(e, {\r\n\t\t\t\tposition: \"fixed\",\r\n\t\t\t\toverflow: \"visible\",\r\n\t\t\t\t\"white-space\": \"nowrap\",\r\n\t\t\t\t\"pointer-events\": \"none\",\r\n\t\t\t\t\"font-size\": FONT_SIZE\r\n\t\t\t});\r\n\t\t\te.style.zIndex = ZINDEX;\r\n\t\t\te.appendChild(w);\r\n\t\t\treturn e;\r\n\t\t},\r\n\t};\r\n\r\n}));", " \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 479);\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\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\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n  function createClass(ctor, superClass) {\n    if (superClass) {\n      ctor.prototype = Object.create(superClass.prototype);\n    }\n    ctor.prototype.constructor = ctor;\n  }\n\n  function Iterable(value) {\n      return isIterable(value) ? value : Seq(value);\n    }\n\n\n  createClass(KeyedIterable, Iterable);\n    function KeyedIterable(value) {\n      return isKeyed(value) ? value : KeyedSeq(value);\n    }\n\n\n  createClass(IndexedIterable, Iterable);\n    function IndexedIterable(value) {\n      return isIndexed(value) ? value : IndexedSeq(value);\n    }\n\n\n  createClass(SetIterable, Iterable);\n    function SetIterable(value) {\n      return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n    }\n\n\n\n  function isIterable(maybeIterable) {\n    return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n  }\n\n  function isKeyed(maybeKeyed) {\n    return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n  }\n\n  function isIndexed(maybeIndexed) {\n    return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n  }\n\n  function isAssociative(maybeAssociative) {\n    return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n  }\n\n  function isOrdered(maybeOrdered) {\n    return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n  }\n\n  Iterable.isIterable = isIterable;\n  Iterable.isKeyed = isKeyed;\n  Iterable.isIndexed = isIndexed;\n  Iterable.isAssociative = isAssociative;\n  Iterable.isOrdered = isOrdered;\n\n  Iterable.Keyed = KeyedIterable;\n  Iterable.Indexed = IndexedIterable;\n  Iterable.Set = SetIterable;\n\n\n  var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n  var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n  var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n  var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n  // Used for setting prototype methods that IE8 chokes on.\n  var DELETE = 'delete';\n\n  // Constants describing the size of trie nodes.\n  var SHIFT = 5; // Resulted in best performance after ______?\n  var SIZE = 1 << SHIFT;\n  var MASK = SIZE - 1;\n\n  // A consistent shared value representing \"not set\" which equals nothing other\n  // than itself, and nothing that could be provided externally.\n  var NOT_SET = {};\n\n  // Boolean references, Rough equivalent of `bool &`.\n  var CHANGE_LENGTH = { value: false };\n  var DID_ALTER = { value: false };\n\n  function MakeRef(ref) {\n    ref.value = false;\n    return ref;\n  }\n\n  function SetRef(ref) {\n    ref && (ref.value = true);\n  }\n\n  // A function which returns a value representing an \"owner\" for transient writes\n  // to tries. The return value will only ever equal itself, and will not equal\n  // the return of any subsequent call of this function.\n  function OwnerID() {}\n\n  // http://jsperf.com/copy-array-inline\n  function arrCopy(arr, offset) {\n    offset = offset || 0;\n    var len = Math.max(0, arr.length - offset);\n    var newArr = new Array(len);\n    for (var ii = 0; ii < len; ii++) {\n      newArr[ii] = arr[ii + offset];\n    }\n    return newArr;\n  }\n\n  function ensureSize(iter) {\n    if (iter.size === undefined) {\n      iter.size = iter.__iterate(returnTrue);\n    }\n    return iter.size;\n  }\n\n  function wrapIndex(iter, index) {\n    // This implements \"is array index\" which the ECMAString spec defines as:\n    //\n    //     A String property name P is an array index if and only if\n    //     ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n    //     to 2^32−1.\n    //\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n    if (typeof index !== 'number') {\n      var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n      if ('' + uint32Index !== index || uint32Index === 4294967295) {\n        return NaN;\n      }\n      index = uint32Index;\n    }\n    return index < 0 ? ensureSize(iter) + index : index;\n  }\n\n  function returnTrue() {\n    return true;\n  }\n\n  function wholeSlice(begin, end, size) {\n    return (begin === 0 || (size !== undefined && begin <= -size)) &&\n      (end === undefined || (size !== undefined && end >= size));\n  }\n\n  function resolveBegin(begin, size) {\n    return resolveIndex(begin, size, 0);\n  }\n\n  function resolveEnd(end, size) {\n    return resolveIndex(end, size, size);\n  }\n\n  function resolveIndex(index, size, defaultIndex) {\n    return index === undefined ?\n      defaultIndex :\n      index < 0 ?\n        Math.max(0, size + index) :\n        size === undefined ?\n          index :\n          Math.min(size, index);\n  }\n\n  /* global Symbol */\n\n  var ITERATE_KEYS = 0;\n  var ITERATE_VALUES = 1;\n  var ITERATE_ENTRIES = 2;\n\n  var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n  var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n  function Iterator(next) {\n      this.next = next;\n    }\n\n    Iterator.prototype.toString = function() {\n      return '[Iterator]';\n    };\n\n\n  Iterator.KEYS = ITERATE_KEYS;\n  Iterator.VALUES = ITERATE_VALUES;\n  Iterator.ENTRIES = ITERATE_ENTRIES;\n\n  Iterator.prototype.inspect =\n  Iterator.prototype.toSource = function () { return this.toString(); }\n  Iterator.prototype[ITERATOR_SYMBOL] = function () {\n    return this;\n  };\n\n\n  function iteratorValue(type, k, v, iteratorResult) {\n    var value = type === 0 ? k : type === 1 ? v : [k, v];\n    iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n      value: value, done: false\n    });\n    return iteratorResult;\n  }\n\n  function iteratorDone() {\n    return { value: undefined, done: true };\n  }\n\n  function hasIterator(maybeIterable) {\n    return !!getIteratorFn(maybeIterable);\n  }\n\n  function isIterator(maybeIterator) {\n    return maybeIterator && typeof maybeIterator.next === 'function';\n  }\n\n  function getIterator(iterable) {\n    var iteratorFn = getIteratorFn(iterable);\n    return iteratorFn && iteratorFn.call(iterable);\n  }\n\n  function getIteratorFn(iterable) {\n    var iteratorFn = iterable && (\n      (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n      iterable[FAUX_ITERATOR_SYMBOL]\n    );\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  function isArrayLike(value) {\n    return value && typeof value.length === 'number';\n  }\n\n  createClass(Seq, Iterable);\n    function Seq(value) {\n      return value === null || value === undefined ? emptySequence() :\n        isIterable(value) ? value.toSeq() : seqFromValue(value);\n    }\n\n    Seq.of = function(/*...values*/) {\n      return Seq(arguments);\n    };\n\n    Seq.prototype.toSeq = function() {\n      return this;\n    };\n\n    Seq.prototype.toString = function() {\n      return this.__toString('Seq {', '}');\n    };\n\n    Seq.prototype.cacheResult = function() {\n      if (!this._cache && this.__iterateUncached) {\n        this._cache = this.entrySeq().toArray();\n        this.size = this._cache.length;\n      }\n      return this;\n    };\n\n    // abstract __iterateUncached(fn, reverse)\n\n    Seq.prototype.__iterate = function(fn, reverse) {\n      return seqIterate(this, fn, reverse, true);\n    };\n\n    // abstract __iteratorUncached(type, reverse)\n\n    Seq.prototype.__iterator = function(type, reverse) {\n      return seqIterator(this, type, reverse, true);\n    };\n\n\n\n  createClass(KeyedSeq, Seq);\n    function KeyedSeq(value) {\n      return value === null || value === undefined ?\n        emptySequence().toKeyedSeq() :\n        isIterable(value) ?\n          (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n          keyedSeqFromValue(value);\n    }\n\n    KeyedSeq.prototype.toKeyedSeq = function() {\n      return this;\n    };\n\n\n\n  createClass(IndexedSeq, Seq);\n    function IndexedSeq(value) {\n      return value === null || value === undefined ? emptySequence() :\n        !isIterable(value) ? indexedSeqFromValue(value) :\n        isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n    }\n\n    IndexedSeq.of = function(/*...values*/) {\n      return IndexedSeq(arguments);\n    };\n\n    IndexedSeq.prototype.toIndexedSeq = function() {\n      return this;\n    };\n\n    IndexedSeq.prototype.toString = function() {\n      return this.__toString('Seq [', ']');\n    };\n\n    IndexedSeq.prototype.__iterate = function(fn, reverse) {\n      return seqIterate(this, fn, reverse, false);\n    };\n\n    IndexedSeq.prototype.__iterator = function(type, reverse) {\n      return seqIterator(this, type, reverse, false);\n    };\n\n\n\n  createClass(SetSeq, Seq);\n    function SetSeq(value) {\n      return (\n        value === null || value === undefined ? emptySequence() :\n        !isIterable(value) ? indexedSeqFromValue(value) :\n        isKeyed(value) ? value.entrySeq() : value\n      ).toSetSeq();\n    }\n\n    SetSeq.of = function(/*...values*/) {\n      return SetSeq(arguments);\n    };\n\n    SetSeq.prototype.toSetSeq = function() {\n      return this;\n    };\n\n\n\n  Seq.isSeq = isSeq;\n  Seq.Keyed = KeyedSeq;\n  Seq.Set = SetSeq;\n  Seq.Indexed = IndexedSeq;\n\n  var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n  Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n  createClass(ArraySeq, IndexedSeq);\n    function ArraySeq(array) {\n      this._array = array;\n      this.size = array.length;\n    }\n\n    ArraySeq.prototype.get = function(index, notSetValue) {\n      return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n    };\n\n    ArraySeq.prototype.__iterate = function(fn, reverse) {\n      var array = this._array;\n      var maxIndex = array.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    ArraySeq.prototype.__iterator = function(type, reverse) {\n      var array = this._array;\n      var maxIndex = array.length - 1;\n      var ii = 0;\n      return new Iterator(function() \n        {return ii > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n      );\n    };\n\n\n\n  createClass(ObjectSeq, KeyedSeq);\n    function ObjectSeq(object) {\n      var keys = Object.keys(object);\n      this._object = object;\n      this._keys = keys;\n      this.size = keys.length;\n    }\n\n    ObjectSeq.prototype.get = function(key, notSetValue) {\n      if (notSetValue !== undefined && !this.has(key)) {\n        return notSetValue;\n      }\n      return this._object[key];\n    };\n\n    ObjectSeq.prototype.has = function(key) {\n      return this._object.hasOwnProperty(key);\n    };\n\n    ObjectSeq.prototype.__iterate = function(fn, reverse) {\n      var object = this._object;\n      var keys = this._keys;\n      var maxIndex = keys.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        var key = keys[reverse ? maxIndex - ii : ii];\n        if (fn(object[key], key, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    ObjectSeq.prototype.__iterator = function(type, reverse) {\n      var object = this._object;\n      var keys = this._keys;\n      var maxIndex = keys.length - 1;\n      var ii = 0;\n      return new Iterator(function()  {\n        var key = keys[reverse ? maxIndex - ii : ii];\n        return ii++ > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, key, object[key]);\n      });\n    };\n\n  ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n  createClass(IterableSeq, IndexedSeq);\n    function IterableSeq(iterable) {\n      this._iterable = iterable;\n      this.size = iterable.length || iterable.size;\n    }\n\n    IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterable = this._iterable;\n      var iterator = getIterator(iterable);\n      var iterations = 0;\n      if (isIterator(iterator)) {\n        var step;\n        while (!(step = iterator.next()).done) {\n          if (fn(step.value, iterations++, this) === false) {\n            break;\n          }\n        }\n      }\n      return iterations;\n    };\n\n    IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterable = this._iterable;\n      var iterator = getIterator(iterable);\n      if (!isIterator(iterator)) {\n        return new Iterator(iteratorDone);\n      }\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step : iteratorValue(type, iterations++, step.value);\n      });\n    };\n\n\n\n  createClass(IteratorSeq, IndexedSeq);\n    function IteratorSeq(iterator) {\n      this._iterator = iterator;\n      this._iteratorCache = [];\n    }\n\n    IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterator = this._iterator;\n      var cache = this._iteratorCache;\n      var iterations = 0;\n      while (iterations < cache.length) {\n        if (fn(cache[iterations], iterations++, this) === false) {\n          return iterations;\n        }\n      }\n      var step;\n      while (!(step = iterator.next()).done) {\n        var val = step.value;\n        cache[iterations] = val;\n        if (fn(val, iterations++, this) === false) {\n          break;\n        }\n      }\n      return iterations;\n    };\n\n    IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = this._iterator;\n      var cache = this._iteratorCache;\n      var iterations = 0;\n      return new Iterator(function()  {\n        if (iterations >= cache.length) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          cache[iterations] = step.value;\n        }\n        return iteratorValue(type, iterations, cache[iterations++]);\n      });\n    };\n\n\n\n\n  // # pragma Helper functions\n\n  function isSeq(maybeSeq) {\n    return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n  }\n\n  var EMPTY_SEQ;\n\n  function emptySequence() {\n    return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n  }\n\n  function keyedSeqFromValue(value) {\n    var seq =\n      Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n      isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n      hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n      typeof value === 'object' ? new ObjectSeq(value) :\n      undefined;\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of [k, v] entries, '+\n        'or keyed object: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function indexedSeqFromValue(value) {\n    var seq = maybeIndexedSeqFromValue(value);\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of values: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function seqFromValue(value) {\n    var seq = maybeIndexedSeqFromValue(value) ||\n      (typeof value === 'object' && new ObjectSeq(value));\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of values, or keyed object: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function maybeIndexedSeqFromValue(value) {\n    return (\n      isArrayLike(value) ? new ArraySeq(value) :\n      isIterator(value) ? new IteratorSeq(value) :\n      hasIterator(value) ? new IterableSeq(value) :\n      undefined\n    );\n  }\n\n  function seqIterate(seq, fn, reverse, useKeys) {\n    var cache = seq._cache;\n    if (cache) {\n      var maxIndex = cache.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        var entry = cache[reverse ? maxIndex - ii : ii];\n        if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    }\n    return seq.__iterateUncached(fn, reverse);\n  }\n\n  function seqIterator(seq, type, reverse, useKeys) {\n    var cache = seq._cache;\n    if (cache) {\n      var maxIndex = cache.length - 1;\n      var ii = 0;\n      return new Iterator(function()  {\n        var entry = cache[reverse ? maxIndex - ii : ii];\n        return ii++ > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n      });\n    }\n    return seq.__iteratorUncached(type, reverse);\n  }\n\n  function fromJS(json, converter) {\n    return converter ?\n      fromJSWith(converter, json, '', {'': json}) :\n      fromJSDefault(json);\n  }\n\n  function fromJSWith(converter, json, key, parentJSON) {\n    if (Array.isArray(json)) {\n      return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k)  {return fromJSWith(converter, v, k, json)}));\n    }\n    if (isPlainObj(json)) {\n      return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k)  {return fromJSWith(converter, v, k, json)}));\n    }\n    return json;\n  }\n\n  function fromJSDefault(json) {\n    if (Array.isArray(json)) {\n      return IndexedSeq(json).map(fromJSDefault).toList();\n    }\n    if (isPlainObj(json)) {\n      return KeyedSeq(json).map(fromJSDefault).toMap();\n    }\n    return json;\n  }\n\n  function isPlainObj(value) {\n    return value && (value.constructor === Object || value.constructor === undefined);\n  }\n\n  /**\n   * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n   * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n   *\n   * NaN is considered the same as NaN, however -0 and 0 are considered the same\n   * value, which is different from the algorithm described by\n   * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n   *\n   * This is extended further to allow Objects to describe the values they\n   * represent, by way of `valueOf` or `equals` (and `hashCode`).\n   *\n   * Note: because of this extension, the key equality of Immutable.Map and the\n   * value equality of Immutable.Set will differ from ES6 Map and Set.\n   *\n   * ### Defining custom values\n   *\n   * The easiest way to describe the value an object represents is by implementing\n   * `valueOf`. For example, `Date` represents a value by returning a unix\n   * timestamp for `valueOf`:\n   *\n   *     var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n   *     var date2 = new Date(1234567890000);\n   *     date1.valueOf(); // 1234567890000\n   *     assert( date1 !== date2 );\n   *     assert( Immutable.is( date1, date2 ) );\n   *\n   * Note: overriding `valueOf` may have other implications if you use this object\n   * where JavaScript expects a primitive, such as implicit string coercion.\n   *\n   * For more complex types, especially collections, implementing `valueOf` may\n   * not be performant. An alternative is to implement `equals` and `hashCode`.\n   *\n   * `equals` takes another object, presumably of similar type, and returns true\n   * if the it is equal. Equality is symmetrical, so the same result should be\n   * returned if this and the argument are flipped.\n   *\n   *     assert( a.equals(b) === b.equals(a) );\n   *\n   * `hashCode` returns a 32bit integer number representing the object which will\n   * be used to determine how to store the value object in a Map or Set. You must\n   * provide both or neither methods, one must not exist without the other.\n   *\n   * Also, an important relationship between these methods must be upheld: if two\n   * values are equal, they *must* return the same hashCode. If the values are not\n   * equal, they might have the same hashCode; this is called a hash collision,\n   * and while undesirable for performance reasons, it is acceptable.\n   *\n   *     if (a.equals(b)) {\n   *       assert( a.hashCode() === b.hashCode() );\n   *     }\n   *\n   * All Immutable collections implement `equals` and `hashCode`.\n   *\n   */\n  function is(valueA, valueB) {\n    if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n      return true;\n    }\n    if (!valueA || !valueB) {\n      return false;\n    }\n    if (typeof valueA.valueOf === 'function' &&\n        typeof valueB.valueOf === 'function') {\n      valueA = valueA.valueOf();\n      valueB = valueB.valueOf();\n      if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n        return true;\n      }\n      if (!valueA || !valueB) {\n        return false;\n      }\n    }\n    if (typeof valueA.equals === 'function' &&\n        typeof valueB.equals === 'function' &&\n        valueA.equals(valueB)) {\n      return true;\n    }\n    return false;\n  }\n\n  function deepEqual(a, b) {\n    if (a === b) {\n      return true;\n    }\n\n    if (\n      !isIterable(b) ||\n      a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n      a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n      isKeyed(a) !== isKeyed(b) ||\n      isIndexed(a) !== isIndexed(b) ||\n      isOrdered(a) !== isOrdered(b)\n    ) {\n      return false;\n    }\n\n    if (a.size === 0 && b.size === 0) {\n      return true;\n    }\n\n    var notAssociative = !isAssociative(a);\n\n    if (isOrdered(a)) {\n      var entries = a.entries();\n      return b.every(function(v, k)  {\n        var entry = entries.next().value;\n        return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n      }) && entries.next().done;\n    }\n\n    var flipped = false;\n\n    if (a.size === undefined) {\n      if (b.size === undefined) {\n        if (typeof a.cacheResult === 'function') {\n          a.cacheResult();\n        }\n      } else {\n        flipped = true;\n        var _ = a;\n        a = b;\n        b = _;\n      }\n    }\n\n    var allEqual = true;\n    var bSize = b.__iterate(function(v, k)  {\n      if (notAssociative ? !a.has(v) :\n          flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n        allEqual = false;\n        return false;\n      }\n    });\n\n    return allEqual && a.size === bSize;\n  }\n\n  createClass(Repeat, IndexedSeq);\n\n    function Repeat(value, times) {\n      if (!(this instanceof Repeat)) {\n        return new Repeat(value, times);\n      }\n      this._value = value;\n      this.size = times === undefined ? Infinity : Math.max(0, times);\n      if (this.size === 0) {\n        if (EMPTY_REPEAT) {\n          return EMPTY_REPEAT;\n        }\n        EMPTY_REPEAT = this;\n      }\n    }\n\n    Repeat.prototype.toString = function() {\n      if (this.size === 0) {\n        return 'Repeat []';\n      }\n      return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n    };\n\n    Repeat.prototype.get = function(index, notSetValue) {\n      return this.has(index) ? this._value : notSetValue;\n    };\n\n    Repeat.prototype.includes = function(searchValue) {\n      return is(this._value, searchValue);\n    };\n\n    Repeat.prototype.slice = function(begin, end) {\n      var size = this.size;\n      return wholeSlice(begin, end, size) ? this :\n        new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n    };\n\n    Repeat.prototype.reverse = function() {\n      return this;\n    };\n\n    Repeat.prototype.indexOf = function(searchValue) {\n      if (is(this._value, searchValue)) {\n        return 0;\n      }\n      return -1;\n    };\n\n    Repeat.prototype.lastIndexOf = function(searchValue) {\n      if (is(this._value, searchValue)) {\n        return this.size;\n      }\n      return -1;\n    };\n\n    Repeat.prototype.__iterate = function(fn, reverse) {\n      for (var ii = 0; ii < this.size; ii++) {\n        if (fn(this._value, ii, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n      var ii = 0;\n      return new Iterator(function() \n        {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n      );\n    };\n\n    Repeat.prototype.equals = function(other) {\n      return other instanceof Repeat ?\n        is(this._value, other._value) :\n        deepEqual(other);\n    };\n\n\n  var EMPTY_REPEAT;\n\n  function invariant(condition, error) {\n    if (!condition) throw new Error(error);\n  }\n\n  createClass(Range, IndexedSeq);\n\n    function Range(start, end, step) {\n      if (!(this instanceof Range)) {\n        return new Range(start, end, step);\n      }\n      invariant(step !== 0, 'Cannot step a Range by 0');\n      start = start || 0;\n      if (end === undefined) {\n        end = Infinity;\n      }\n      step = step === undefined ? 1 : Math.abs(step);\n      if (end < start) {\n        step = -step;\n      }\n      this._start = start;\n      this._end = end;\n      this._step = step;\n      this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n      if (this.size === 0) {\n        if (EMPTY_RANGE) {\n          return EMPTY_RANGE;\n        }\n        EMPTY_RANGE = this;\n      }\n    }\n\n    Range.prototype.toString = function() {\n      if (this.size === 0) {\n        return 'Range []';\n      }\n      return 'Range [ ' +\n        this._start + '...' + this._end +\n        (this._step !== 1 ? ' by ' + this._step : '') +\n      ' ]';\n    };\n\n    Range.prototype.get = function(index, notSetValue) {\n      return this.has(index) ?\n        this._start + wrapIndex(this, index) * this._step :\n        notSetValue;\n    };\n\n    Range.prototype.includes = function(searchValue) {\n      var possibleIndex = (searchValue - this._start) / this._step;\n      return possibleIndex >= 0 &&\n        possibleIndex < this.size &&\n        possibleIndex === Math.floor(possibleIndex);\n    };\n\n    Range.prototype.slice = function(begin, end) {\n      if (wholeSlice(begin, end, this.size)) {\n        return this;\n      }\n      begin = resolveBegin(begin, this.size);\n      end = resolveEnd(end, this.size);\n      if (end <= begin) {\n        return new Range(0, 0);\n      }\n      return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n    };\n\n    Range.prototype.indexOf = function(searchValue) {\n      var offsetValue = searchValue - this._start;\n      if (offsetValue % this._step === 0) {\n        var index = offsetValue / this._step;\n        if (index >= 0 && index < this.size) {\n          return index\n        }\n      }\n      return -1;\n    };\n\n    Range.prototype.lastIndexOf = function(searchValue) {\n      return this.indexOf(searchValue);\n    };\n\n    Range.prototype.__iterate = function(fn, reverse) {\n      var maxIndex = this.size - 1;\n      var step = this._step;\n      var value = reverse ? this._start + maxIndex * step : this._start;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        if (fn(value, ii, this) === false) {\n          return ii + 1;\n        }\n        value += reverse ? -step : step;\n      }\n      return ii;\n    };\n\n    Range.prototype.__iterator = function(type, reverse) {\n      var maxIndex = this.size - 1;\n      var step = this._step;\n      var value = reverse ? this._start + maxIndex * step : this._start;\n      var ii = 0;\n      return new Iterator(function()  {\n        var v = value;\n        value += reverse ? -step : step;\n        return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n      });\n    };\n\n    Range.prototype.equals = function(other) {\n      return other instanceof Range ?\n        this._start === other._start &&\n        this._end === other._end &&\n        this._step === other._step :\n        deepEqual(this, other);\n    };\n\n\n  var EMPTY_RANGE;\n\n  createClass(Collection, Iterable);\n    function Collection() {\n      throw TypeError('Abstract');\n    }\n\n\n  createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n  createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n  createClass(SetCollection, Collection);function SetCollection() {}\n\n\n  Collection.Keyed = KeyedCollection;\n  Collection.Indexed = IndexedCollection;\n  Collection.Set = SetCollection;\n\n  var imul =\n    typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n    Math.imul :\n    function imul(a, b) {\n      a = a | 0; // int\n      b = b | 0; // int\n      var c = a & 0xffff;\n      var d = b & 0xffff;\n      // Shift by 0 fixes the sign on the high part.\n      return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n    };\n\n  // v8 has an optimization for storing 31-bit signed numbers.\n  // Values which have either 00 or 11 as the high order bits qualify.\n  // This function drops the highest order bit in a signed number, maintaining\n  // the sign bit.\n  function smi(i32) {\n    return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n  }\n\n  function hash(o) {\n    if (o === false || o === null || o === undefined) {\n      return 0;\n    }\n    if (typeof o.valueOf === 'function') {\n      o = o.valueOf();\n      if (o === false || o === null || o === undefined) {\n        return 0;\n      }\n    }\n    if (o === true) {\n      return 1;\n    }\n    var type = typeof o;\n    if (type === 'number') {\n      if (o !== o || o === Infinity) {\n        return 0;\n      }\n      var h = o | 0;\n      if (h !== o) {\n        h ^= o * 0xFFFFFFFF;\n      }\n      while (o > 0xFFFFFFFF) {\n        o /= 0xFFFFFFFF;\n        h ^= o;\n      }\n      return smi(h);\n    }\n    if (type === 'string') {\n      return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n    }\n    if (typeof o.hashCode === 'function') {\n      return o.hashCode();\n    }\n    if (type === 'object') {\n      return hashJSObj(o);\n    }\n    if (typeof o.toString === 'function') {\n      return hashString(o.toString());\n    }\n    throw new Error('Value type ' + type + ' cannot be hashed.');\n  }\n\n  function cachedHashString(string) {\n    var hash = stringHashCache[string];\n    if (hash === undefined) {\n      hash = hashString(string);\n      if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n        STRING_HASH_CACHE_SIZE = 0;\n        stringHashCache = {};\n      }\n      STRING_HASH_CACHE_SIZE++;\n      stringHashCache[string] = hash;\n    }\n    return hash;\n  }\n\n  // http://jsperf.com/hashing-strings\n  function hashString(string) {\n    // This is the hash from JVM\n    // The hash code for a string is computed as\n    // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n    // where s[i] is the ith character of the string and n is the length of\n    // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n    // (exclusive) by dropping high bits.\n    var hash = 0;\n    for (var ii = 0; ii < string.length; ii++) {\n      hash = 31 * hash + string.charCodeAt(ii) | 0;\n    }\n    return smi(hash);\n  }\n\n  function hashJSObj(obj) {\n    var hash;\n    if (usingWeakMap) {\n      hash = weakMap.get(obj);\n      if (hash !== undefined) {\n        return hash;\n      }\n    }\n\n    hash = obj[UID_HASH_KEY];\n    if (hash !== undefined) {\n      return hash;\n    }\n\n    if (!canDefineProperty) {\n      hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n      if (hash !== undefined) {\n        return hash;\n      }\n\n      hash = getIENodeHash(obj);\n      if (hash !== undefined) {\n        return hash;\n      }\n    }\n\n    hash = ++objHashUID;\n    if (objHashUID & 0x40000000) {\n      objHashUID = 0;\n    }\n\n    if (usingWeakMap) {\n      weakMap.set(obj, hash);\n    } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n      throw new Error('Non-extensible objects are not allowed as keys.');\n    } else if (canDefineProperty) {\n      Object.defineProperty(obj, UID_HASH_KEY, {\n        'enumerable': false,\n        'configurable': false,\n        'writable': false,\n        'value': hash\n      });\n    } else if (obj.propertyIsEnumerable !== undefined &&\n               obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n      // Since we can't define a non-enumerable property on the object\n      // we'll hijack one of the less-used non-enumerable properties to\n      // save our hash on it. Since this is a function it will not show up in\n      // `JSON.stringify` which is what we want.\n      obj.propertyIsEnumerable = function() {\n        return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n      };\n      obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n    } else if (obj.nodeType !== undefined) {\n      // At this point we couldn't get the IE `uniqueID` to use as a hash\n      // and we couldn't use a non-enumerable property to exploit the\n      // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n      // itself.\n      obj[UID_HASH_KEY] = hash;\n    } else {\n      throw new Error('Unable to set a non-enumerable property on object.');\n    }\n\n    return hash;\n  }\n\n  // Get references to ES5 object methods.\n  var isExtensible = Object.isExtensible;\n\n  // True if Object.defineProperty works as expected. IE8 fails this test.\n  var canDefineProperty = (function() {\n    try {\n      Object.defineProperty({}, '@', {});\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }());\n\n  // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n  // and avoid memory leaks from the IE cloneNode bug.\n  function getIENodeHash(node) {\n    if (node && node.nodeType > 0) {\n      switch (node.nodeType) {\n        case 1: // Element\n          return node.uniqueID;\n        case 9: // Document\n          return node.documentElement && node.documentElement.uniqueID;\n      }\n    }\n  }\n\n  // If possible, use a WeakMap.\n  var usingWeakMap = typeof WeakMap === 'function';\n  var weakMap;\n  if (usingWeakMap) {\n    weakMap = new WeakMap();\n  }\n\n  var objHashUID = 0;\n\n  var UID_HASH_KEY = '__immutablehash__';\n  if (typeof Symbol === 'function') {\n    UID_HASH_KEY = Symbol(UID_HASH_KEY);\n  }\n\n  var STRING_HASH_CACHE_MIN_STRLEN = 16;\n  var STRING_HASH_CACHE_MAX_SIZE = 255;\n  var STRING_HASH_CACHE_SIZE = 0;\n  var stringHashCache = {};\n\n  function assertNotInfinite(size) {\n    invariant(\n      size !== Infinity,\n      'Cannot perform this action with an infinite size.'\n    );\n  }\n\n  createClass(Map, KeyedCollection);\n\n    // @pragma Construction\n\n    function Map(value) {\n      return value === null || value === undefined ? emptyMap() :\n        isMap(value) && !isOrdered(value) ? value :\n        emptyMap().withMutations(function(map ) {\n          var iter = KeyedIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v, k)  {return map.set(k, v)});\n        });\n    }\n\n    Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n      return emptyMap().withMutations(function(map ) {\n        for (var i = 0; i < keyValues.length; i += 2) {\n          if (i + 1 >= keyValues.length) {\n            throw new Error('Missing value for key: ' + keyValues[i]);\n          }\n          map.set(keyValues[i], keyValues[i + 1]);\n        }\n      });\n    };\n\n    Map.prototype.toString = function() {\n      return this.__toString('Map {', '}');\n    };\n\n    // @pragma Access\n\n    Map.prototype.get = function(k, notSetValue) {\n      return this._root ?\n        this._root.get(0, undefined, k, notSetValue) :\n        notSetValue;\n    };\n\n    // @pragma Modification\n\n    Map.prototype.set = function(k, v) {\n      return updateMap(this, k, v);\n    };\n\n    Map.prototype.setIn = function(keyPath, v) {\n      return this.updateIn(keyPath, NOT_SET, function()  {return v});\n    };\n\n    Map.prototype.remove = function(k) {\n      return updateMap(this, k, NOT_SET);\n    };\n\n    Map.prototype.deleteIn = function(keyPath) {\n      return this.updateIn(keyPath, function()  {return NOT_SET});\n    };\n\n    Map.prototype.update = function(k, notSetValue, updater) {\n      return arguments.length === 1 ?\n        k(this) :\n        this.updateIn([k], notSetValue, updater);\n    };\n\n    Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n      if (!updater) {\n        updater = notSetValue;\n        notSetValue = undefined;\n      }\n      var updatedValue = updateInDeepMap(\n        this,\n        forceIterator(keyPath),\n        notSetValue,\n        updater\n      );\n      return updatedValue === NOT_SET ? undefined : updatedValue;\n    };\n\n    Map.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._root = null;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyMap();\n    };\n\n    // @pragma Composition\n\n    Map.prototype.merge = function(/*...iters*/) {\n      return mergeIntoMapWith(this, undefined, arguments);\n    };\n\n    Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoMapWith(this, merger, iters);\n    };\n\n    Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n      return this.updateIn(\n        keyPath,\n        emptyMap(),\n        function(m ) {return typeof m.merge === 'function' ?\n          m.merge.apply(m, iters) :\n          iters[iters.length - 1]}\n      );\n    };\n\n    Map.prototype.mergeDeep = function(/*...iters*/) {\n      return mergeIntoMapWith(this, deepMerger, arguments);\n    };\n\n    Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n    };\n\n    Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n      return this.updateIn(\n        keyPath,\n        emptyMap(),\n        function(m ) {return typeof m.mergeDeep === 'function' ?\n          m.mergeDeep.apply(m, iters) :\n          iters[iters.length - 1]}\n      );\n    };\n\n    Map.prototype.sort = function(comparator) {\n      // Late binding\n      return OrderedMap(sortFactory(this, comparator));\n    };\n\n    Map.prototype.sortBy = function(mapper, comparator) {\n      // Late binding\n      return OrderedMap(sortFactory(this, comparator, mapper));\n    };\n\n    // @pragma Mutability\n\n    Map.prototype.withMutations = function(fn) {\n      var mutable = this.asMutable();\n      fn(mutable);\n      return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n    };\n\n    Map.prototype.asMutable = function() {\n      return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n    };\n\n    Map.prototype.asImmutable = function() {\n      return this.__ensureOwner();\n    };\n\n    Map.prototype.wasAltered = function() {\n      return this.__altered;\n    };\n\n    Map.prototype.__iterator = function(type, reverse) {\n      return new MapIterator(this, type, reverse);\n    };\n\n    Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      this._root && this._root.iterate(function(entry ) {\n        iterations++;\n        return fn(entry[1], entry[0], this$0);\n      }, reverse);\n      return iterations;\n    };\n\n    Map.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this.__altered = false;\n        return this;\n      }\n      return makeMap(this.size, this._root, ownerID, this.__hash);\n    };\n\n\n  function isMap(maybeMap) {\n    return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n  }\n\n  Map.isMap = isMap;\n\n  var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n  var MapPrototype = Map.prototype;\n  MapPrototype[IS_MAP_SENTINEL] = true;\n  MapPrototype[DELETE] = MapPrototype.remove;\n  MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n  // #pragma Trie Nodes\n\n\n\n    function ArrayMapNode(ownerID, entries) {\n      this.ownerID = ownerID;\n      this.entries = entries;\n    }\n\n    ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      var entries = this.entries;\n      for (var ii = 0, len = entries.length; ii < len; ii++) {\n        if (is(key, entries[ii][0])) {\n          return entries[ii][1];\n        }\n      }\n      return notSetValue;\n    };\n\n    ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      var removed = value === NOT_SET;\n\n      var entries = this.entries;\n      var idx = 0;\n      for (var len = entries.length; idx < len; idx++) {\n        if (is(key, entries[idx][0])) {\n          break;\n        }\n      }\n      var exists = idx < len;\n\n      if (exists ? entries[idx][1] === value : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n      (removed || !exists) && SetRef(didChangeSize);\n\n      if (removed && entries.length === 1) {\n        return; // undefined\n      }\n\n      if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n        return createNodes(ownerID, entries, key, value);\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newEntries = isEditable ? entries : arrCopy(entries);\n\n      if (exists) {\n        if (removed) {\n          idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n        } else {\n          newEntries[idx] = [key, value];\n        }\n      } else {\n        newEntries.push([key, value]);\n      }\n\n      if (isEditable) {\n        this.entries = newEntries;\n        return this;\n      }\n\n      return new ArrayMapNode(ownerID, newEntries);\n    };\n\n\n\n\n    function BitmapIndexedNode(ownerID, bitmap, nodes) {\n      this.ownerID = ownerID;\n      this.bitmap = bitmap;\n      this.nodes = nodes;\n    }\n\n    BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n      var bitmap = this.bitmap;\n      return (bitmap & bit) === 0 ? notSetValue :\n        this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n    };\n\n    BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var bit = 1 << keyHashFrag;\n      var bitmap = this.bitmap;\n      var exists = (bitmap & bit) !== 0;\n\n      if (!exists && value === NOT_SET) {\n        return this;\n      }\n\n      var idx = popCount(bitmap & (bit - 1));\n      var nodes = this.nodes;\n      var node = exists ? nodes[idx] : undefined;\n      var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n      if (newNode === node) {\n        return this;\n      }\n\n      if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n        return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n      }\n\n      if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n        return nodes[idx ^ 1];\n      }\n\n      if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n        return newNode;\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n      var newNodes = exists ? newNode ?\n        setIn(nodes, idx, newNode, isEditable) :\n        spliceOut(nodes, idx, isEditable) :\n        spliceIn(nodes, idx, newNode, isEditable);\n\n      if (isEditable) {\n        this.bitmap = newBitmap;\n        this.nodes = newNodes;\n        return this;\n      }\n\n      return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n    };\n\n\n\n\n    function HashArrayMapNode(ownerID, count, nodes) {\n      this.ownerID = ownerID;\n      this.count = count;\n      this.nodes = nodes;\n    }\n\n    HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var node = this.nodes[idx];\n      return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n    };\n\n    HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var removed = value === NOT_SET;\n      var nodes = this.nodes;\n      var node = nodes[idx];\n\n      if (removed && !node) {\n        return this;\n      }\n\n      var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n      if (newNode === node) {\n        return this;\n      }\n\n      var newCount = this.count;\n      if (!node) {\n        newCount++;\n      } else if (!newNode) {\n        newCount--;\n        if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n          return packNodes(ownerID, nodes, newCount, idx);\n        }\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n      if (isEditable) {\n        this.count = newCount;\n        this.nodes = newNodes;\n        return this;\n      }\n\n      return new HashArrayMapNode(ownerID, newCount, newNodes);\n    };\n\n\n\n\n    function HashCollisionNode(ownerID, keyHash, entries) {\n      this.ownerID = ownerID;\n      this.keyHash = keyHash;\n      this.entries = entries;\n    }\n\n    HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      var entries = this.entries;\n      for (var ii = 0, len = entries.length; ii < len; ii++) {\n        if (is(key, entries[ii][0])) {\n          return entries[ii][1];\n        }\n      }\n      return notSetValue;\n    };\n\n    HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n\n      var removed = value === NOT_SET;\n\n      if (keyHash !== this.keyHash) {\n        if (removed) {\n          return this;\n        }\n        SetRef(didAlter);\n        SetRef(didChangeSize);\n        return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n      }\n\n      var entries = this.entries;\n      var idx = 0;\n      for (var len = entries.length; idx < len; idx++) {\n        if (is(key, entries[idx][0])) {\n          break;\n        }\n      }\n      var exists = idx < len;\n\n      if (exists ? entries[idx][1] === value : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n      (removed || !exists) && SetRef(didChangeSize);\n\n      if (removed && len === 2) {\n        return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newEntries = isEditable ? entries : arrCopy(entries);\n\n      if (exists) {\n        if (removed) {\n          idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n        } else {\n          newEntries[idx] = [key, value];\n        }\n      } else {\n        newEntries.push([key, value]);\n      }\n\n      if (isEditable) {\n        this.entries = newEntries;\n        return this;\n      }\n\n      return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n    };\n\n\n\n\n    function ValueNode(ownerID, keyHash, entry) {\n      this.ownerID = ownerID;\n      this.keyHash = keyHash;\n      this.entry = entry;\n    }\n\n    ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n    };\n\n    ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      var removed = value === NOT_SET;\n      var keyMatch = is(key, this.entry[0]);\n      if (keyMatch ? value === this.entry[1] : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n\n      if (removed) {\n        SetRef(didChangeSize);\n        return; // undefined\n      }\n\n      if (keyMatch) {\n        if (ownerID && ownerID === this.ownerID) {\n          this.entry[1] = value;\n          return this;\n        }\n        return new ValueNode(ownerID, this.keyHash, [key, value]);\n      }\n\n      SetRef(didChangeSize);\n      return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n    };\n\n\n\n  // #pragma Iterators\n\n  ArrayMapNode.prototype.iterate =\n  HashCollisionNode.prototype.iterate = function (fn, reverse) {\n    var entries = this.entries;\n    for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n      if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n        return false;\n      }\n    }\n  }\n\n  BitmapIndexedNode.prototype.iterate =\n  HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n    var nodes = this.nodes;\n    for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n      var node = nodes[reverse ? maxIndex - ii : ii];\n      if (node && node.iterate(fn, reverse) === false) {\n        return false;\n      }\n    }\n  }\n\n  ValueNode.prototype.iterate = function (fn, reverse) {\n    return fn(this.entry);\n  }\n\n  createClass(MapIterator, Iterator);\n\n    function MapIterator(map, type, reverse) {\n      this._type = type;\n      this._reverse = reverse;\n      this._stack = map._root && mapIteratorFrame(map._root);\n    }\n\n    MapIterator.prototype.next = function() {\n      var type = this._type;\n      var stack = this._stack;\n      while (stack) {\n        var node = stack.node;\n        var index = stack.index++;\n        var maxIndex;\n        if (node.entry) {\n          if (index === 0) {\n            return mapIteratorValue(type, node.entry);\n          }\n        } else if (node.entries) {\n          maxIndex = node.entries.length - 1;\n          if (index <= maxIndex) {\n            return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n          }\n        } else {\n          maxIndex = node.nodes.length - 1;\n          if (index <= maxIndex) {\n            var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n            if (subNode) {\n              if (subNode.entry) {\n                return mapIteratorValue(type, subNode.entry);\n              }\n              stack = this._stack = mapIteratorFrame(subNode, stack);\n            }\n            continue;\n          }\n        }\n        stack = this._stack = this._stack.__prev;\n      }\n      return iteratorDone();\n    };\n\n\n  function mapIteratorValue(type, entry) {\n    return iteratorValue(type, entry[0], entry[1]);\n  }\n\n  function mapIteratorFrame(node, prev) {\n    return {\n      node: node,\n      index: 0,\n      __prev: prev\n    };\n  }\n\n  function makeMap(size, root, ownerID, hash) {\n    var map = Object.create(MapPrototype);\n    map.size = size;\n    map._root = root;\n    map.__ownerID = ownerID;\n    map.__hash = hash;\n    map.__altered = false;\n    return map;\n  }\n\n  var EMPTY_MAP;\n  function emptyMap() {\n    return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n  }\n\n  function updateMap(map, k, v) {\n    var newRoot;\n    var newSize;\n    if (!map._root) {\n      if (v === NOT_SET) {\n        return map;\n      }\n      newSize = 1;\n      newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n    } else {\n      var didChangeSize = MakeRef(CHANGE_LENGTH);\n      var didAlter = MakeRef(DID_ALTER);\n      newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n      if (!didAlter.value) {\n        return map;\n      }\n      newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n    }\n    if (map.__ownerID) {\n      map.size = newSize;\n      map._root = newRoot;\n      map.__hash = undefined;\n      map.__altered = true;\n      return map;\n    }\n    return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n  }\n\n  function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n    if (!node) {\n      if (value === NOT_SET) {\n        return node;\n      }\n      SetRef(didAlter);\n      SetRef(didChangeSize);\n      return new ValueNode(ownerID, keyHash, [key, value]);\n    }\n    return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n  }\n\n  function isLeafNode(node) {\n    return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n  }\n\n  function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n    if (node.keyHash === keyHash) {\n      return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n    }\n\n    var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n    var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n    var newNode;\n    var nodes = idx1 === idx2 ?\n      [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n      ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n    return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n  }\n\n  function createNodes(ownerID, entries, key, value) {\n    if (!ownerID) {\n      ownerID = new OwnerID();\n    }\n    var node = new ValueNode(ownerID, hash(key), [key, value]);\n    for (var ii = 0; ii < entries.length; ii++) {\n      var entry = entries[ii];\n      node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n    }\n    return node;\n  }\n\n  function packNodes(ownerID, nodes, count, excluding) {\n    var bitmap = 0;\n    var packedII = 0;\n    var packedNodes = new Array(count);\n    for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n      var node = nodes[ii];\n      if (node !== undefined && ii !== excluding) {\n        bitmap |= bit;\n        packedNodes[packedII++] = node;\n      }\n    }\n    return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n  }\n\n  function expandNodes(ownerID, nodes, bitmap, including, node) {\n    var count = 0;\n    var expandedNodes = new Array(SIZE);\n    for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n      expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n    }\n    expandedNodes[including] = node;\n    return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n  }\n\n  function mergeIntoMapWith(map, merger, iterables) {\n    var iters = [];\n    for (var ii = 0; ii < iterables.length; ii++) {\n      var value = iterables[ii];\n      var iter = KeyedIterable(value);\n      if (!isIterable(value)) {\n        iter = iter.map(function(v ) {return fromJS(v)});\n      }\n      iters.push(iter);\n    }\n    return mergeIntoCollectionWith(map, merger, iters);\n  }\n\n  function deepMerger(existing, value, key) {\n    return existing && existing.mergeDeep && isIterable(value) ?\n      existing.mergeDeep(value) :\n      is(existing, value) ? existing : value;\n  }\n\n  function deepMergerWith(merger) {\n    return function(existing, value, key)  {\n      if (existing && existing.mergeDeepWith && isIterable(value)) {\n        return existing.mergeDeepWith(merger, value);\n      }\n      var nextValue = merger(existing, value, key);\n      return is(existing, nextValue) ? existing : nextValue;\n    };\n  }\n\n  function mergeIntoCollectionWith(collection, merger, iters) {\n    iters = iters.filter(function(x ) {return x.size !== 0});\n    if (iters.length === 0) {\n      return collection;\n    }\n    if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n      return collection.constructor(iters[0]);\n    }\n    return collection.withMutations(function(collection ) {\n      var mergeIntoMap = merger ?\n        function(value, key)  {\n          collection.update(key, NOT_SET, function(existing )\n            {return existing === NOT_SET ? value : merger(existing, value, key)}\n          );\n        } :\n        function(value, key)  {\n          collection.set(key, value);\n        }\n      for (var ii = 0; ii < iters.length; ii++) {\n        iters[ii].forEach(mergeIntoMap);\n      }\n    });\n  }\n\n  function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n    var isNotSet = existing === NOT_SET;\n    var step = keyPathIter.next();\n    if (step.done) {\n      var existingValue = isNotSet ? notSetValue : existing;\n      var newValue = updater(existingValue);\n      return newValue === existingValue ? existing : newValue;\n    }\n    invariant(\n      isNotSet || (existing && existing.set),\n      'invalid keyPath'\n    );\n    var key = step.value;\n    var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n    var nextUpdated = updateInDeepMap(\n      nextExisting,\n      keyPathIter,\n      notSetValue,\n      updater\n    );\n    return nextUpdated === nextExisting ? existing :\n      nextUpdated === NOT_SET ? existing.remove(key) :\n      (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n  }\n\n  function popCount(x) {\n    x = x - ((x >> 1) & 0x55555555);\n    x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n    x = (x + (x >> 4)) & 0x0f0f0f0f;\n    x = x + (x >> 8);\n    x = x + (x >> 16);\n    return x & 0x7f;\n  }\n\n  function setIn(array, idx, val, canEdit) {\n    var newArray = canEdit ? array : arrCopy(array);\n    newArray[idx] = val;\n    return newArray;\n  }\n\n  function spliceIn(array, idx, val, canEdit) {\n    var newLen = array.length + 1;\n    if (canEdit && idx + 1 === newLen) {\n      array[idx] = val;\n      return array;\n    }\n    var newArray = new Array(newLen);\n    var after = 0;\n    for (var ii = 0; ii < newLen; ii++) {\n      if (ii === idx) {\n        newArray[ii] = val;\n        after = -1;\n      } else {\n        newArray[ii] = array[ii + after];\n      }\n    }\n    return newArray;\n  }\n\n  function spliceOut(array, idx, canEdit) {\n    var newLen = array.length - 1;\n    if (canEdit && idx === newLen) {\n      array.pop();\n      return array;\n    }\n    var newArray = new Array(newLen);\n    var after = 0;\n    for (var ii = 0; ii < newLen; ii++) {\n      if (ii === idx) {\n        after = 1;\n      }\n      newArray[ii] = array[ii + after];\n    }\n    return newArray;\n  }\n\n  var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n  var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n  var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n  createClass(List, IndexedCollection);\n\n    // @pragma Construction\n\n    function List(value) {\n      var empty = emptyList();\n      if (value === null || value === undefined) {\n        return empty;\n      }\n      if (isList(value)) {\n        return value;\n      }\n      var iter = IndexedIterable(value);\n      var size = iter.size;\n      if (size === 0) {\n        return empty;\n      }\n      assertNotInfinite(size);\n      if (size > 0 && size < SIZE) {\n        return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n      }\n      return empty.withMutations(function(list ) {\n        list.setSize(size);\n        iter.forEach(function(v, i)  {return list.set(i, v)});\n      });\n    }\n\n    List.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    List.prototype.toString = function() {\n      return this.__toString('List [', ']');\n    };\n\n    // @pragma Access\n\n    List.prototype.get = function(index, notSetValue) {\n      index = wrapIndex(this, index);\n      if (index >= 0 && index < this.size) {\n        index += this._origin;\n        var node = listNodeFor(this, index);\n        return node && node.array[index & MASK];\n      }\n      return notSetValue;\n    };\n\n    // @pragma Modification\n\n    List.prototype.set = function(index, value) {\n      return updateList(this, index, value);\n    };\n\n    List.prototype.remove = function(index) {\n      return !this.has(index) ? this :\n        index === 0 ? this.shift() :\n        index === this.size - 1 ? this.pop() :\n        this.splice(index, 1);\n    };\n\n    List.prototype.insert = function(index, value) {\n      return this.splice(index, 0, value);\n    };\n\n    List.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = this._origin = this._capacity = 0;\n        this._level = SHIFT;\n        this._root = this._tail = null;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyList();\n    };\n\n    List.prototype.push = function(/*...values*/) {\n      var values = arguments;\n      var oldSize = this.size;\n      return this.withMutations(function(list ) {\n        setListBounds(list, 0, oldSize + values.length);\n        for (var ii = 0; ii < values.length; ii++) {\n          list.set(oldSize + ii, values[ii]);\n        }\n      });\n    };\n\n    List.prototype.pop = function() {\n      return setListBounds(this, 0, -1);\n    };\n\n    List.prototype.unshift = function(/*...values*/) {\n      var values = arguments;\n      return this.withMutations(function(list ) {\n        setListBounds(list, -values.length);\n        for (var ii = 0; ii < values.length; ii++) {\n          list.set(ii, values[ii]);\n        }\n      });\n    };\n\n    List.prototype.shift = function() {\n      return setListBounds(this, 1);\n    };\n\n    // @pragma Composition\n\n    List.prototype.merge = function(/*...iters*/) {\n      return mergeIntoListWith(this, undefined, arguments);\n    };\n\n    List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoListWith(this, merger, iters);\n    };\n\n    List.prototype.mergeDeep = function(/*...iters*/) {\n      return mergeIntoListWith(this, deepMerger, arguments);\n    };\n\n    List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoListWith(this, deepMergerWith(merger), iters);\n    };\n\n    List.prototype.setSize = function(size) {\n      return setListBounds(this, 0, size);\n    };\n\n    // @pragma Iteration\n\n    List.prototype.slice = function(begin, end) {\n      var size = this.size;\n      if (wholeSlice(begin, end, size)) {\n        return this;\n      }\n      return setListBounds(\n        this,\n        resolveBegin(begin, size),\n        resolveEnd(end, size)\n      );\n    };\n\n    List.prototype.__iterator = function(type, reverse) {\n      var index = 0;\n      var values = iterateList(this, reverse);\n      return new Iterator(function()  {\n        var value = values();\n        return value === DONE ?\n          iteratorDone() :\n          iteratorValue(type, index++, value);\n      });\n    };\n\n    List.prototype.__iterate = function(fn, reverse) {\n      var index = 0;\n      var values = iterateList(this, reverse);\n      var value;\n      while ((value = values()) !== DONE) {\n        if (fn(value, index++, this) === false) {\n          break;\n        }\n      }\n      return index;\n    };\n\n    List.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        return this;\n      }\n      return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n    };\n\n\n  function isList(maybeList) {\n    return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n  }\n\n  List.isList = isList;\n\n  var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n  var ListPrototype = List.prototype;\n  ListPrototype[IS_LIST_SENTINEL] = true;\n  ListPrototype[DELETE] = ListPrototype.remove;\n  ListPrototype.setIn = MapPrototype.setIn;\n  ListPrototype.deleteIn =\n  ListPrototype.removeIn = MapPrototype.removeIn;\n  ListPrototype.update = MapPrototype.update;\n  ListPrototype.updateIn = MapPrototype.updateIn;\n  ListPrototype.mergeIn = MapPrototype.mergeIn;\n  ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n  ListPrototype.withMutations = MapPrototype.withMutations;\n  ListPrototype.asMutable = MapPrototype.asMutable;\n  ListPrototype.asImmutable = MapPrototype.asImmutable;\n  ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n    function VNode(array, ownerID) {\n      this.array = array;\n      this.ownerID = ownerID;\n    }\n\n    // TODO: seems like these methods are very similar\n\n    VNode.prototype.removeBefore = function(ownerID, level, index) {\n      if (index === level ? 1 << level : 0 || this.array.length === 0) {\n        return this;\n      }\n      var originIndex = (index >>> level) & MASK;\n      if (originIndex >= this.array.length) {\n        return new VNode([], ownerID);\n      }\n      var removingFirst = originIndex === 0;\n      var newChild;\n      if (level > 0) {\n        var oldChild = this.array[originIndex];\n        newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n        if (newChild === oldChild && removingFirst) {\n          return this;\n        }\n      }\n      if (removingFirst && !newChild) {\n        return this;\n      }\n      var editable = editableVNode(this, ownerID);\n      if (!removingFirst) {\n        for (var ii = 0; ii < originIndex; ii++) {\n          editable.array[ii] = undefined;\n        }\n      }\n      if (newChild) {\n        editable.array[originIndex] = newChild;\n      }\n      return editable;\n    };\n\n    VNode.prototype.removeAfter = function(ownerID, level, index) {\n      if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n        return this;\n      }\n      var sizeIndex = ((index - 1) >>> level) & MASK;\n      if (sizeIndex >= this.array.length) {\n        return this;\n      }\n\n      var newChild;\n      if (level > 0) {\n        var oldChild = this.array[sizeIndex];\n        newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n        if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n          return this;\n        }\n      }\n\n      var editable = editableVNode(this, ownerID);\n      editable.array.splice(sizeIndex + 1);\n      if (newChild) {\n        editable.array[sizeIndex] = newChild;\n      }\n      return editable;\n    };\n\n\n\n  var DONE = {};\n\n  function iterateList(list, reverse) {\n    var left = list._origin;\n    var right = list._capacity;\n    var tailPos = getTailOffset(right);\n    var tail = list._tail;\n\n    return iterateNodeOrLeaf(list._root, list._level, 0);\n\n    function iterateNodeOrLeaf(node, level, offset) {\n      return level === 0 ?\n        iterateLeaf(node, offset) :\n        iterateNode(node, level, offset);\n    }\n\n    function iterateLeaf(node, offset) {\n      var array = offset === tailPos ? tail && tail.array : node && node.array;\n      var from = offset > left ? 0 : left - offset;\n      var to = right - offset;\n      if (to > SIZE) {\n        to = SIZE;\n      }\n      return function()  {\n        if (from === to) {\n          return DONE;\n        }\n        var idx = reverse ? --to : from++;\n        return array && array[idx];\n      };\n    }\n\n    function iterateNode(node, level, offset) {\n      var values;\n      var array = node && node.array;\n      var from = offset > left ? 0 : (left - offset) >> level;\n      var to = ((right - offset) >> level) + 1;\n      if (to > SIZE) {\n        to = SIZE;\n      }\n      return function()  {\n        do {\n          if (values) {\n            var value = values();\n            if (value !== DONE) {\n              return value;\n            }\n            values = null;\n          }\n          if (from === to) {\n            return DONE;\n          }\n          var idx = reverse ? --to : from++;\n          values = iterateNodeOrLeaf(\n            array && array[idx], level - SHIFT, offset + (idx << level)\n          );\n        } while (true);\n      };\n    }\n  }\n\n  function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n    var list = Object.create(ListPrototype);\n    list.size = capacity - origin;\n    list._origin = origin;\n    list._capacity = capacity;\n    list._level = level;\n    list._root = root;\n    list._tail = tail;\n    list.__ownerID = ownerID;\n    list.__hash = hash;\n    list.__altered = false;\n    return list;\n  }\n\n  var EMPTY_LIST;\n  function emptyList() {\n    return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n  }\n\n  function updateList(list, index, value) {\n    index = wrapIndex(list, index);\n\n    if (index !== index) {\n      return list;\n    }\n\n    if (index >= list.size || index < 0) {\n      return list.withMutations(function(list ) {\n        index < 0 ?\n          setListBounds(list, index).set(0, value) :\n          setListBounds(list, 0, index + 1).set(index, value)\n      });\n    }\n\n    index += list._origin;\n\n    var newTail = list._tail;\n    var newRoot = list._root;\n    var didAlter = MakeRef(DID_ALTER);\n    if (index >= getTailOffset(list._capacity)) {\n      newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n    } else {\n      newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n    }\n\n    if (!didAlter.value) {\n      return list;\n    }\n\n    if (list.__ownerID) {\n      list._root = newRoot;\n      list._tail = newTail;\n      list.__hash = undefined;\n      list.__altered = true;\n      return list;\n    }\n    return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n  }\n\n  function updateVNode(node, ownerID, level, index, value, didAlter) {\n    var idx = (index >>> level) & MASK;\n    var nodeHas = node && idx < node.array.length;\n    if (!nodeHas && value === undefined) {\n      return node;\n    }\n\n    var newNode;\n\n    if (level > 0) {\n      var lowerNode = node && node.array[idx];\n      var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n      if (newLowerNode === lowerNode) {\n        return node;\n      }\n      newNode = editableVNode(node, ownerID);\n      newNode.array[idx] = newLowerNode;\n      return newNode;\n    }\n\n    if (nodeHas && node.array[idx] === value) {\n      return node;\n    }\n\n    SetRef(didAlter);\n\n    newNode = editableVNode(node, ownerID);\n    if (value === undefined && idx === newNode.array.length - 1) {\n      newNode.array.pop();\n    } else {\n      newNode.array[idx] = value;\n    }\n    return newNode;\n  }\n\n  function editableVNode(node, ownerID) {\n    if (ownerID && node && ownerID === node.ownerID) {\n      return node;\n    }\n    return new VNode(node ? node.array.slice() : [], ownerID);\n  }\n\n  function listNodeFor(list, rawIndex) {\n    if (rawIndex >= getTailOffset(list._capacity)) {\n      return list._tail;\n    }\n    if (rawIndex < 1 << (list._level + SHIFT)) {\n      var node = list._root;\n      var level = list._level;\n      while (node && level > 0) {\n        node = node.array[(rawIndex >>> level) & MASK];\n        level -= SHIFT;\n      }\n      return node;\n    }\n  }\n\n  function setListBounds(list, begin, end) {\n    // Sanitize begin & end using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    if (begin !== undefined) {\n      begin = begin | 0;\n    }\n    if (end !== undefined) {\n      end = end | 0;\n    }\n    var owner = list.__ownerID || new OwnerID();\n    var oldOrigin = list._origin;\n    var oldCapacity = list._capacity;\n    var newOrigin = oldOrigin + begin;\n    var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n    if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n      return list;\n    }\n\n    // If it's going to end after it starts, it's empty.\n    if (newOrigin >= newCapacity) {\n      return list.clear();\n    }\n\n    var newLevel = list._level;\n    var newRoot = list._root;\n\n    // New origin might need creating a higher root.\n    var offsetShift = 0;\n    while (newOrigin + offsetShift < 0) {\n      newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n      newLevel += SHIFT;\n      offsetShift += 1 << newLevel;\n    }\n    if (offsetShift) {\n      newOrigin += offsetShift;\n      oldOrigin += offsetShift;\n      newCapacity += offsetShift;\n      oldCapacity += offsetShift;\n    }\n\n    var oldTailOffset = getTailOffset(oldCapacity);\n    var newTailOffset = getTailOffset(newCapacity);\n\n    // New size might need creating a higher root.\n    while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n      newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n      newLevel += SHIFT;\n    }\n\n    // Locate or create the new tail.\n    var oldTail = list._tail;\n    var newTail = newTailOffset < oldTailOffset ?\n      listNodeFor(list, newCapacity - 1) :\n      newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n    // Merge Tail into tree.\n    if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n      newRoot = editableVNode(newRoot, owner);\n      var node = newRoot;\n      for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n        var idx = (oldTailOffset >>> level) & MASK;\n        node = node.array[idx] = editableVNode(node.array[idx], owner);\n      }\n      node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n    }\n\n    // If the size has been reduced, there's a chance the tail needs to be trimmed.\n    if (newCapacity < oldCapacity) {\n      newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n    }\n\n    // If the new origin is within the tail, then we do not need a root.\n    if (newOrigin >= newTailOffset) {\n      newOrigin -= newTailOffset;\n      newCapacity -= newTailOffset;\n      newLevel = SHIFT;\n      newRoot = null;\n      newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n    // Otherwise, if the root has been trimmed, garbage collect.\n    } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n      offsetShift = 0;\n\n      // Identify the new top root node of the subtree of the old root.\n      while (newRoot) {\n        var beginIndex = (newOrigin >>> newLevel) & MASK;\n        if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n          break;\n        }\n        if (beginIndex) {\n          offsetShift += (1 << newLevel) * beginIndex;\n        }\n        newLevel -= SHIFT;\n        newRoot = newRoot.array[beginIndex];\n      }\n\n      // Trim the new sides of the new root.\n      if (newRoot && newOrigin > oldOrigin) {\n        newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n      }\n      if (newRoot && newTailOffset < oldTailOffset) {\n        newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n      }\n      if (offsetShift) {\n        newOrigin -= offsetShift;\n        newCapacity -= offsetShift;\n      }\n    }\n\n    if (list.__ownerID) {\n      list.size = newCapacity - newOrigin;\n      list._origin = newOrigin;\n      list._capacity = newCapacity;\n      list._level = newLevel;\n      list._root = newRoot;\n      list._tail = newTail;\n      list.__hash = undefined;\n      list.__altered = true;\n      return list;\n    }\n    return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n  }\n\n  function mergeIntoListWith(list, merger, iterables) {\n    var iters = [];\n    var maxSize = 0;\n    for (var ii = 0; ii < iterables.length; ii++) {\n      var value = iterables[ii];\n      var iter = IndexedIterable(value);\n      if (iter.size > maxSize) {\n        maxSize = iter.size;\n      }\n      if (!isIterable(value)) {\n        iter = iter.map(function(v ) {return fromJS(v)});\n      }\n      iters.push(iter);\n    }\n    if (maxSize > list.size) {\n      list = list.setSize(maxSize);\n    }\n    return mergeIntoCollectionWith(list, merger, iters);\n  }\n\n  function getTailOffset(size) {\n    return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n  }\n\n  createClass(OrderedMap, Map);\n\n    // @pragma Construction\n\n    function OrderedMap(value) {\n      return value === null || value === undefined ? emptyOrderedMap() :\n        isOrderedMap(value) ? value :\n        emptyOrderedMap().withMutations(function(map ) {\n          var iter = KeyedIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v, k)  {return map.set(k, v)});\n        });\n    }\n\n    OrderedMap.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    OrderedMap.prototype.toString = function() {\n      return this.__toString('OrderedMap {', '}');\n    };\n\n    // @pragma Access\n\n    OrderedMap.prototype.get = function(k, notSetValue) {\n      var index = this._map.get(k);\n      return index !== undefined ? this._list.get(index)[1] : notSetValue;\n    };\n\n    // @pragma Modification\n\n    OrderedMap.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._map.clear();\n        this._list.clear();\n        return this;\n      }\n      return emptyOrderedMap();\n    };\n\n    OrderedMap.prototype.set = function(k, v) {\n      return updateOrderedMap(this, k, v);\n    };\n\n    OrderedMap.prototype.remove = function(k) {\n      return updateOrderedMap(this, k, NOT_SET);\n    };\n\n    OrderedMap.prototype.wasAltered = function() {\n      return this._map.wasAltered() || this._list.wasAltered();\n    };\n\n    OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._list.__iterate(\n        function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n        reverse\n      );\n    };\n\n    OrderedMap.prototype.__iterator = function(type, reverse) {\n      return this._list.fromEntrySeq().__iterator(type, reverse);\n    };\n\n    OrderedMap.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map.__ensureOwner(ownerID);\n      var newList = this._list.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        this._list = newList;\n        return this;\n      }\n      return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n    };\n\n\n  function isOrderedMap(maybeOrderedMap) {\n    return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n  }\n\n  OrderedMap.isOrderedMap = isOrderedMap;\n\n  OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n  OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n  function makeOrderedMap(map, list, ownerID, hash) {\n    var omap = Object.create(OrderedMap.prototype);\n    omap.size = map ? map.size : 0;\n    omap._map = map;\n    omap._list = list;\n    omap.__ownerID = ownerID;\n    omap.__hash = hash;\n    return omap;\n  }\n\n  var EMPTY_ORDERED_MAP;\n  function emptyOrderedMap() {\n    return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n  }\n\n  function updateOrderedMap(omap, k, v) {\n    var map = omap._map;\n    var list = omap._list;\n    var i = map.get(k);\n    var has = i !== undefined;\n    var newMap;\n    var newList;\n    if (v === NOT_SET) { // removed\n      if (!has) {\n        return omap;\n      }\n      if (list.size >= SIZE && list.size >= map.size * 2) {\n        newList = list.filter(function(entry, idx)  {return entry !== undefined && i !== idx});\n        newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n        if (omap.__ownerID) {\n          newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n        }\n      } else {\n        newMap = map.remove(k);\n        newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n      }\n    } else {\n      if (has) {\n        if (v === list.get(i)[1]) {\n          return omap;\n        }\n        newMap = map;\n        newList = list.set(i, [k, v]);\n      } else {\n        newMap = map.set(k, list.size);\n        newList = list.set(list.size, [k, v]);\n      }\n    }\n    if (omap.__ownerID) {\n      omap.size = newMap.size;\n      omap._map = newMap;\n      omap._list = newList;\n      omap.__hash = undefined;\n      return omap;\n    }\n    return makeOrderedMap(newMap, newList);\n  }\n\n  createClass(ToKeyedSequence, KeyedSeq);\n    function ToKeyedSequence(indexed, useKeys) {\n      this._iter = indexed;\n      this._useKeys = useKeys;\n      this.size = indexed.size;\n    }\n\n    ToKeyedSequence.prototype.get = function(key, notSetValue) {\n      return this._iter.get(key, notSetValue);\n    };\n\n    ToKeyedSequence.prototype.has = function(key) {\n      return this._iter.has(key);\n    };\n\n    ToKeyedSequence.prototype.valueSeq = function() {\n      return this._iter.valueSeq();\n    };\n\n    ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n      var reversedSequence = reverseFactory(this, true);\n      if (!this._useKeys) {\n        reversedSequence.valueSeq = function()  {return this$0._iter.toSeq().reverse()};\n      }\n      return reversedSequence;\n    };\n\n    ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n      var mappedSequence = mapFactory(this, mapper, context);\n      if (!this._useKeys) {\n        mappedSequence.valueSeq = function()  {return this$0._iter.toSeq().map(mapper, context)};\n      }\n      return mappedSequence;\n    };\n\n    ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var ii;\n      return this._iter.__iterate(\n        this._useKeys ?\n          function(v, k)  {return fn(v, k, this$0)} :\n          ((ii = reverse ? resolveSize(this) : 0),\n            function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n        reverse\n      );\n    };\n\n    ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n      if (this._useKeys) {\n        return this._iter.__iterator(type, reverse);\n      }\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      var ii = reverse ? resolveSize(this) : 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n      });\n    };\n\n  ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n  createClass(ToIndexedSequence, IndexedSeq);\n    function ToIndexedSequence(iter) {\n      this._iter = iter;\n      this.size = iter.size;\n    }\n\n    ToIndexedSequence.prototype.includes = function(value) {\n      return this._iter.includes(value);\n    };\n\n    ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n    };\n\n    ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, iterations++, step.value, step)\n      });\n    };\n\n\n\n  createClass(ToSetSequence, SetSeq);\n    function ToSetSequence(iter) {\n      this._iter = iter;\n      this.size = iter.size;\n    }\n\n    ToSetSequence.prototype.has = function(key) {\n      return this._iter.includes(key);\n    };\n\n    ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n    };\n\n    ToSetSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, step.value, step.value, step);\n      });\n    };\n\n\n\n  createClass(FromEntriesSequence, KeyedSeq);\n    function FromEntriesSequence(entries) {\n      this._iter = entries;\n      this.size = entries.size;\n    }\n\n    FromEntriesSequence.prototype.entrySeq = function() {\n      return this._iter.toSeq();\n    };\n\n    FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._iter.__iterate(function(entry ) {\n        // Check if entry exists first so array access doesn't throw for holes\n        // in the parent iteration.\n        if (entry) {\n          validateEntry(entry);\n          var indexedIterable = isIterable(entry);\n          return fn(\n            indexedIterable ? entry.get(1) : entry[1],\n            indexedIterable ? entry.get(0) : entry[0],\n            this$0\n          );\n        }\n      }, reverse);\n    };\n\n    FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      return new Iterator(function()  {\n        while (true) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          var entry = step.value;\n          // Check if entry exists first so array access doesn't throw for holes\n          // in the parent iteration.\n          if (entry) {\n            validateEntry(entry);\n            var indexedIterable = isIterable(entry);\n            return iteratorValue(\n              type,\n              indexedIterable ? entry.get(0) : entry[0],\n              indexedIterable ? entry.get(1) : entry[1],\n              step\n            );\n          }\n        }\n      });\n    };\n\n\n  ToIndexedSequence.prototype.cacheResult =\n  ToKeyedSequence.prototype.cacheResult =\n  ToSetSequence.prototype.cacheResult =\n  FromEntriesSequence.prototype.cacheResult =\n    cacheResultThrough;\n\n\n  function flipFactory(iterable) {\n    var flipSequence = makeSequence(iterable);\n    flipSequence._iter = iterable;\n    flipSequence.size = iterable.size;\n    flipSequence.flip = function()  {return iterable};\n    flipSequence.reverse = function () {\n      var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n      reversedSequence.flip = function()  {return iterable.reverse()};\n      return reversedSequence;\n    };\n    flipSequence.has = function(key ) {return iterable.includes(key)};\n    flipSequence.includes = function(key ) {return iterable.has(key)};\n    flipSequence.cacheResult = cacheResultThrough;\n    flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(function(v, k)  {return fn(k, v, this$0) !== false}, reverse);\n    }\n    flipSequence.__iteratorUncached = function(type, reverse) {\n      if (type === ITERATE_ENTRIES) {\n        var iterator = iterable.__iterator(type, reverse);\n        return new Iterator(function()  {\n          var step = iterator.next();\n          if (!step.done) {\n            var k = step.value[0];\n            step.value[0] = step.value[1];\n            step.value[1] = k;\n          }\n          return step;\n        });\n      }\n      return iterable.__iterator(\n        type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n        reverse\n      );\n    }\n    return flipSequence;\n  }\n\n\n  function mapFactory(iterable, mapper, context) {\n    var mappedSequence = makeSequence(iterable);\n    mappedSequence.size = iterable.size;\n    mappedSequence.has = function(key ) {return iterable.has(key)};\n    mappedSequence.get = function(key, notSetValue)  {\n      var v = iterable.get(key, NOT_SET);\n      return v === NOT_SET ?\n        notSetValue :\n        mapper.call(context, v, key, iterable);\n    };\n    mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(\n        function(v, k, c)  {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n        reverse\n      );\n    }\n    mappedSequence.__iteratorUncached = function (type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      return new Iterator(function()  {\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var key = entry[0];\n        return iteratorValue(\n          type,\n          key,\n          mapper.call(context, entry[1], key, iterable),\n          step\n        );\n      });\n    }\n    return mappedSequence;\n  }\n\n\n  function reverseFactory(iterable, useKeys) {\n    var reversedSequence = makeSequence(iterable);\n    reversedSequence._iter = iterable;\n    reversedSequence.size = iterable.size;\n    reversedSequence.reverse = function()  {return iterable};\n    if (iterable.flip) {\n      reversedSequence.flip = function () {\n        var flipSequence = flipFactory(iterable);\n        flipSequence.reverse = function()  {return iterable.flip()};\n        return flipSequence;\n      };\n    }\n    reversedSequence.get = function(key, notSetValue) \n      {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n    reversedSequence.has = function(key )\n      {return iterable.has(useKeys ? key : -1 - key)};\n    reversedSequence.includes = function(value ) {return iterable.includes(value)};\n    reversedSequence.cacheResult = cacheResultThrough;\n    reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(function(v, k)  {return fn(v, k, this$0)}, !reverse);\n    };\n    reversedSequence.__iterator =\n      function(type, reverse)  {return iterable.__iterator(type, !reverse)};\n    return reversedSequence;\n  }\n\n\n  function filterFactory(iterable, predicate, context, useKeys) {\n    var filterSequence = makeSequence(iterable);\n    if (useKeys) {\n      filterSequence.has = function(key ) {\n        var v = iterable.get(key, NOT_SET);\n        return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n      };\n      filterSequence.get = function(key, notSetValue)  {\n        var v = iterable.get(key, NOT_SET);\n        return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n          v : notSetValue;\n      };\n    }\n    filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c)  {\n        if (predicate.call(context, v, k, c)) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0);\n        }\n      }, reverse);\n      return iterations;\n    };\n    filterSequence.__iteratorUncached = function (type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (true) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          var entry = step.value;\n          var key = entry[0];\n          var value = entry[1];\n          if (predicate.call(context, value, key, iterable)) {\n            return iteratorValue(type, useKeys ? key : iterations++, value, step);\n          }\n        }\n      });\n    }\n    return filterSequence;\n  }\n\n\n  function countByFactory(iterable, grouper, context) {\n    var groups = Map().asMutable();\n    iterable.__iterate(function(v, k)  {\n      groups.update(\n        grouper.call(context, v, k, iterable),\n        0,\n        function(a ) {return a + 1}\n      );\n    });\n    return groups.asImmutable();\n  }\n\n\n  function groupByFactory(iterable, grouper, context) {\n    var isKeyedIter = isKeyed(iterable);\n    var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n    iterable.__iterate(function(v, k)  {\n      groups.update(\n        grouper.call(context, v, k, iterable),\n        function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n      );\n    });\n    var coerce = iterableClass(iterable);\n    return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n  }\n\n\n  function sliceFactory(iterable, begin, end, useKeys) {\n    var originalSize = iterable.size;\n\n    // Sanitize begin & end using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    if (begin !== undefined) {\n      begin = begin | 0;\n    }\n    if (end !== undefined) {\n      if (end === Infinity) {\n        end = originalSize;\n      } else {\n        end = end | 0;\n      }\n    }\n\n    if (wholeSlice(begin, end, originalSize)) {\n      return iterable;\n    }\n\n    var resolvedBegin = resolveBegin(begin, originalSize);\n    var resolvedEnd = resolveEnd(end, originalSize);\n\n    // begin or end will be NaN if they were provided as negative numbers and\n    // this iterable's size is unknown. In that case, cache first so there is\n    // a known size and these do not resolve to NaN.\n    if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n      return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n    }\n\n    // Note: resolvedEnd is undefined when the original sequence's length is\n    // unknown and this slice did not supply an end and should contain all\n    // elements after resolvedBegin.\n    // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n    var resolvedSize = resolvedEnd - resolvedBegin;\n    var sliceSize;\n    if (resolvedSize === resolvedSize) {\n      sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n    }\n\n    var sliceSeq = makeSequence(iterable);\n\n    // If iterable.size is undefined, the size of the realized sliceSeq is\n    // unknown at this point unless the number of items to slice is 0\n    sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n    if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n      sliceSeq.get = function (index, notSetValue) {\n        index = wrapIndex(this, index);\n        return index >= 0 && index < sliceSize ?\n          iterable.get(index + resolvedBegin, notSetValue) :\n          notSetValue;\n      }\n    }\n\n    sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      if (sliceSize === 0) {\n        return 0;\n      }\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var skipped = 0;\n      var isSkipping = true;\n      var iterations = 0;\n      iterable.__iterate(function(v, k)  {\n        if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n                 iterations !== sliceSize;\n        }\n      });\n      return iterations;\n    };\n\n    sliceSeq.__iteratorUncached = function(type, reverse) {\n      if (sliceSize !== 0 && reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      // Don't bother instantiating parent iterator if taking 0.\n      var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n      var skipped = 0;\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (skipped++ < resolvedBegin) {\n          iterator.next();\n        }\n        if (++iterations > sliceSize) {\n          return iteratorDone();\n        }\n        var step = iterator.next();\n        if (useKeys || type === ITERATE_VALUES) {\n          return step;\n        } else if (type === ITERATE_KEYS) {\n          return iteratorValue(type, iterations - 1, undefined, step);\n        } else {\n          return iteratorValue(type, iterations - 1, step.value[1], step);\n        }\n      });\n    }\n\n    return sliceSeq;\n  }\n\n\n  function takeWhileFactory(iterable, predicate, context) {\n    var takeSequence = makeSequence(iterable);\n    takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c) \n        {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n      );\n      return iterations;\n    };\n    takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var iterating = true;\n      return new Iterator(function()  {\n        if (!iterating) {\n          return iteratorDone();\n        }\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var k = entry[0];\n        var v = entry[1];\n        if (!predicate.call(context, v, k, this$0)) {\n          iterating = false;\n          return iteratorDone();\n        }\n        return type === ITERATE_ENTRIES ? step :\n          iteratorValue(type, k, v, step);\n      });\n    };\n    return takeSequence;\n  }\n\n\n  function skipWhileFactory(iterable, predicate, context, useKeys) {\n    var skipSequence = makeSequence(iterable);\n    skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var isSkipping = true;\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c)  {\n        if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0);\n        }\n      });\n      return iterations;\n    };\n    skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var skipping = true;\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step, k, v;\n        do {\n          step = iterator.next();\n          if (step.done) {\n            if (useKeys || type === ITERATE_VALUES) {\n              return step;\n            } else if (type === ITERATE_KEYS) {\n              return iteratorValue(type, iterations++, undefined, step);\n            } else {\n              return iteratorValue(type, iterations++, step.value[1], step);\n            }\n          }\n          var entry = step.value;\n          k = entry[0];\n          v = entry[1];\n          skipping && (skipping = predicate.call(context, v, k, this$0));\n        } while (skipping);\n        return type === ITERATE_ENTRIES ? step :\n          iteratorValue(type, k, v, step);\n      });\n    };\n    return skipSequence;\n  }\n\n\n  function concatFactory(iterable, values) {\n    var isKeyedIterable = isKeyed(iterable);\n    var iters = [iterable].concat(values).map(function(v ) {\n      if (!isIterable(v)) {\n        v = isKeyedIterable ?\n          keyedSeqFromValue(v) :\n          indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n      } else if (isKeyedIterable) {\n        v = KeyedIterable(v);\n      }\n      return v;\n    }).filter(function(v ) {return v.size !== 0});\n\n    if (iters.length === 0) {\n      return iterable;\n    }\n\n    if (iters.length === 1) {\n      var singleton = iters[0];\n      if (singleton === iterable ||\n          isKeyedIterable && isKeyed(singleton) ||\n          isIndexed(iterable) && isIndexed(singleton)) {\n        return singleton;\n      }\n    }\n\n    var concatSeq = new ArraySeq(iters);\n    if (isKeyedIterable) {\n      concatSeq = concatSeq.toKeyedSeq();\n    } else if (!isIndexed(iterable)) {\n      concatSeq = concatSeq.toSetSeq();\n    }\n    concatSeq = concatSeq.flatten(true);\n    concatSeq.size = iters.reduce(\n      function(sum, seq)  {\n        if (sum !== undefined) {\n          var size = seq.size;\n          if (size !== undefined) {\n            return sum + size;\n          }\n        }\n      },\n      0\n    );\n    return concatSeq;\n  }\n\n\n  function flattenFactory(iterable, depth, useKeys) {\n    var flatSequence = makeSequence(iterable);\n    flatSequence.__iterateUncached = function(fn, reverse) {\n      var iterations = 0;\n      var stopped = false;\n      function flatDeep(iter, currentDepth) {var this$0 = this;\n        iter.__iterate(function(v, k)  {\n          if ((!depth || currentDepth < depth) && isIterable(v)) {\n            flatDeep(v, currentDepth + 1);\n          } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n            stopped = true;\n          }\n          return !stopped;\n        }, reverse);\n      }\n      flatDeep(iterable, 0);\n      return iterations;\n    }\n    flatSequence.__iteratorUncached = function(type, reverse) {\n      var iterator = iterable.__iterator(type, reverse);\n      var stack = [];\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (iterator) {\n          var step = iterator.next();\n          if (step.done !== false) {\n            iterator = stack.pop();\n            continue;\n          }\n          var v = step.value;\n          if (type === ITERATE_ENTRIES) {\n            v = v[1];\n          }\n          if ((!depth || stack.length < depth) && isIterable(v)) {\n            stack.push(iterator);\n            iterator = v.__iterator(type, reverse);\n          } else {\n            return useKeys ? step : iteratorValue(type, iterations++, v, step);\n          }\n        }\n        return iteratorDone();\n      });\n    }\n    return flatSequence;\n  }\n\n\n  function flatMapFactory(iterable, mapper, context) {\n    var coerce = iterableClass(iterable);\n    return iterable.toSeq().map(\n      function(v, k)  {return coerce(mapper.call(context, v, k, iterable))}\n    ).flatten(true);\n  }\n\n\n  function interposeFactory(iterable, separator) {\n    var interposedSequence = makeSequence(iterable);\n    interposedSequence.size = iterable.size && iterable.size * 2 -1;\n    interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      iterable.__iterate(function(v, k) \n        {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n        fn(v, iterations++, this$0) !== false},\n        reverse\n      );\n      return iterations;\n    };\n    interposedSequence.__iteratorUncached = function(type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n      var iterations = 0;\n      var step;\n      return new Iterator(function()  {\n        if (!step || iterations % 2) {\n          step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n        }\n        return iterations % 2 ?\n          iteratorValue(type, iterations++, separator) :\n          iteratorValue(type, iterations++, step.value, step);\n      });\n    };\n    return interposedSequence;\n  }\n\n\n  function sortFactory(iterable, comparator, mapper) {\n    if (!comparator) {\n      comparator = defaultComparator;\n    }\n    var isKeyedIterable = isKeyed(iterable);\n    var index = 0;\n    var entries = iterable.toSeq().map(\n      function(v, k)  {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n    ).toArray();\n    entries.sort(function(a, b)  {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n      isKeyedIterable ?\n      function(v, i)  { entries[i].length = 2; } :\n      function(v, i)  { entries[i] = v[1]; }\n    );\n    return isKeyedIterable ? KeyedSeq(entries) :\n      isIndexed(iterable) ? IndexedSeq(entries) :\n      SetSeq(entries);\n  }\n\n\n  function maxFactory(iterable, comparator, mapper) {\n    if (!comparator) {\n      comparator = defaultComparator;\n    }\n    if (mapper) {\n      var entry = iterable.toSeq()\n        .map(function(v, k)  {return [v, mapper(v, k, iterable)]})\n        .reduce(function(a, b)  {return maxCompare(comparator, a[1], b[1]) ? b : a});\n      return entry && entry[0];\n    } else {\n      return iterable.reduce(function(a, b)  {return maxCompare(comparator, a, b) ? b : a});\n    }\n  }\n\n  function maxCompare(comparator, a, b) {\n    var comp = comparator(b, a);\n    // b is considered the new max if the comparator declares them equal, but\n    // they are not equal and b is in fact a nullish value.\n    return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n  }\n\n\n  function zipWithFactory(keyIter, zipper, iters) {\n    var zipSequence = makeSequence(keyIter);\n    zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n    // Note: this a generic base implementation of __iterate in terms of\n    // __iterator which may be more generically useful in the future.\n    zipSequence.__iterate = function(fn, reverse) {\n      /* generic:\n      var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n      var step;\n      var iterations = 0;\n      while (!(step = iterator.next()).done) {\n        iterations++;\n        if (fn(step.value[1], step.value[0], this) === false) {\n          break;\n        }\n      }\n      return iterations;\n      */\n      // indexed:\n      var iterator = this.__iterator(ITERATE_VALUES, reverse);\n      var step;\n      var iterations = 0;\n      while (!(step = iterator.next()).done) {\n        if (fn(step.value, iterations++, this) === false) {\n          break;\n        }\n      }\n      return iterations;\n    };\n    zipSequence.__iteratorUncached = function(type, reverse) {\n      var iterators = iters.map(function(i )\n        {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n      );\n      var iterations = 0;\n      var isDone = false;\n      return new Iterator(function()  {\n        var steps;\n        if (!isDone) {\n          steps = iterators.map(function(i ) {return i.next()});\n          isDone = steps.some(function(s ) {return s.done});\n        }\n        if (isDone) {\n          return iteratorDone();\n        }\n        return iteratorValue(\n          type,\n          iterations++,\n          zipper.apply(null, steps.map(function(s ) {return s.value}))\n        );\n      });\n    };\n    return zipSequence\n  }\n\n\n  // #pragma Helper Functions\n\n  function reify(iter, seq) {\n    return isSeq(iter) ? seq : iter.constructor(seq);\n  }\n\n  function validateEntry(entry) {\n    if (entry !== Object(entry)) {\n      throw new TypeError('Expected [K, V] tuple: ' + entry);\n    }\n  }\n\n  function resolveSize(iter) {\n    assertNotInfinite(iter.size);\n    return ensureSize(iter);\n  }\n\n  function iterableClass(iterable) {\n    return isKeyed(iterable) ? KeyedIterable :\n      isIndexed(iterable) ? IndexedIterable :\n      SetIterable;\n  }\n\n  function makeSequence(iterable) {\n    return Object.create(\n      (\n        isKeyed(iterable) ? KeyedSeq :\n        isIndexed(iterable) ? IndexedSeq :\n        SetSeq\n      ).prototype\n    );\n  }\n\n  function cacheResultThrough() {\n    if (this._iter.cacheResult) {\n      this._iter.cacheResult();\n      this.size = this._iter.size;\n      return this;\n    } else {\n      return Seq.prototype.cacheResult.call(this);\n    }\n  }\n\n  function defaultComparator(a, b) {\n    return a > b ? 1 : a < b ? -1 : 0;\n  }\n\n  function forceIterator(keyPath) {\n    var iter = getIterator(keyPath);\n    if (!iter) {\n      // Array might not be iterable in this environment, so we need a fallback\n      // to our wrapped type.\n      if (!isArrayLike(keyPath)) {\n        throw new TypeError('Expected iterable or array-like: ' + keyPath);\n      }\n      iter = getIterator(Iterable(keyPath));\n    }\n    return iter;\n  }\n\n  createClass(Record, KeyedCollection);\n\n    function Record(defaultValues, name) {\n      var hasInitialized;\n\n      var RecordType = function Record(values) {\n        if (values instanceof RecordType) {\n          return values;\n        }\n        if (!(this instanceof RecordType)) {\n          return new RecordType(values);\n        }\n        if (!hasInitialized) {\n          hasInitialized = true;\n          var keys = Object.keys(defaultValues);\n          setProps(RecordTypePrototype, keys);\n          RecordTypePrototype.size = keys.length;\n          RecordTypePrototype._name = name;\n          RecordTypePrototype._keys = keys;\n          RecordTypePrototype._defaultValues = defaultValues;\n        }\n        this._map = Map(values);\n      };\n\n      var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n      RecordTypePrototype.constructor = RecordType;\n\n      return RecordType;\n    }\n\n    Record.prototype.toString = function() {\n      return this.__toString(recordName(this) + ' {', '}');\n    };\n\n    // @pragma Access\n\n    Record.prototype.has = function(k) {\n      return this._defaultValues.hasOwnProperty(k);\n    };\n\n    Record.prototype.get = function(k, notSetValue) {\n      if (!this.has(k)) {\n        return notSetValue;\n      }\n      var defaultVal = this._defaultValues[k];\n      return this._map ? this._map.get(k, defaultVal) : defaultVal;\n    };\n\n    // @pragma Modification\n\n    Record.prototype.clear = function() {\n      if (this.__ownerID) {\n        this._map && this._map.clear();\n        return this;\n      }\n      var RecordType = this.constructor;\n      return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n    };\n\n    Record.prototype.set = function(k, v) {\n      if (!this.has(k)) {\n        throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n      }\n      if (this._map && !this._map.has(k)) {\n        var defaultVal = this._defaultValues[k];\n        if (v === defaultVal) {\n          return this;\n        }\n      }\n      var newMap = this._map && this._map.set(k, v);\n      if (this.__ownerID || newMap === this._map) {\n        return this;\n      }\n      return makeRecord(this, newMap);\n    };\n\n    Record.prototype.remove = function(k) {\n      if (!this.has(k)) {\n        return this;\n      }\n      var newMap = this._map && this._map.remove(k);\n      if (this.__ownerID || newMap === this._map) {\n        return this;\n      }\n      return makeRecord(this, newMap);\n    };\n\n    Record.prototype.wasAltered = function() {\n      return this._map.wasAltered();\n    };\n\n    Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n      return KeyedIterable(this._defaultValues).map(function(_, k)  {return this$0.get(k)}).__iterator(type, reverse);\n    };\n\n    Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return KeyedIterable(this._defaultValues).map(function(_, k)  {return this$0.get(k)}).__iterate(fn, reverse);\n    };\n\n    Record.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map && this._map.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        return this;\n      }\n      return makeRecord(this, newMap, ownerID);\n    };\n\n\n  var RecordPrototype = Record.prototype;\n  RecordPrototype[DELETE] = RecordPrototype.remove;\n  RecordPrototype.deleteIn =\n  RecordPrototype.removeIn = MapPrototype.removeIn;\n  RecordPrototype.merge = MapPrototype.merge;\n  RecordPrototype.mergeWith = MapPrototype.mergeWith;\n  RecordPrototype.mergeIn = MapPrototype.mergeIn;\n  RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n  RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n  RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n  RecordPrototype.setIn = MapPrototype.setIn;\n  RecordPrototype.update = MapPrototype.update;\n  RecordPrototype.updateIn = MapPrototype.updateIn;\n  RecordPrototype.withMutations = MapPrototype.withMutations;\n  RecordPrototype.asMutable = MapPrototype.asMutable;\n  RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n  function makeRecord(likeRecord, map, ownerID) {\n    var record = Object.create(Object.getPrototypeOf(likeRecord));\n    record._map = map;\n    record.__ownerID = ownerID;\n    return record;\n  }\n\n  function recordName(record) {\n    return record._name || record.constructor.name || 'Record';\n  }\n\n  function setProps(prototype, names) {\n    try {\n      names.forEach(setProp.bind(undefined, prototype));\n    } catch (error) {\n      // Object.defineProperty failed. Probably IE8.\n    }\n  }\n\n  function setProp(prototype, name) {\n    Object.defineProperty(prototype, name, {\n      get: function() {\n        return this.get(name);\n      },\n      set: function(value) {\n        invariant(this.__ownerID, 'Cannot set on an immutable record.');\n        this.set(name, value);\n      }\n    });\n  }\n\n  createClass(Set, SetCollection);\n\n    // @pragma Construction\n\n    function Set(value) {\n      return value === null || value === undefined ? emptySet() :\n        isSet(value) && !isOrdered(value) ? value :\n        emptySet().withMutations(function(set ) {\n          var iter = SetIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v ) {return set.add(v)});\n        });\n    }\n\n    Set.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    Set.fromKeys = function(value) {\n      return this(KeyedIterable(value).keySeq());\n    };\n\n    Set.prototype.toString = function() {\n      return this.__toString('Set {', '}');\n    };\n\n    // @pragma Access\n\n    Set.prototype.has = function(value) {\n      return this._map.has(value);\n    };\n\n    // @pragma Modification\n\n    Set.prototype.add = function(value) {\n      return updateSet(this, this._map.set(value, true));\n    };\n\n    Set.prototype.remove = function(value) {\n      return updateSet(this, this._map.remove(value));\n    };\n\n    Set.prototype.clear = function() {\n      return updateSet(this, this._map.clear());\n    };\n\n    // @pragma Composition\n\n    Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n      iters = iters.filter(function(x ) {return x.size !== 0});\n      if (iters.length === 0) {\n        return this;\n      }\n      if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n        return this.constructor(iters[0]);\n      }\n      return this.withMutations(function(set ) {\n        for (var ii = 0; ii < iters.length; ii++) {\n          SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n        }\n      });\n    };\n\n    Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n      if (iters.length === 0) {\n        return this;\n      }\n      iters = iters.map(function(iter ) {return SetIterable(iter)});\n      var originalSet = this;\n      return this.withMutations(function(set ) {\n        originalSet.forEach(function(value ) {\n          if (!iters.every(function(iter ) {return iter.includes(value)})) {\n            set.remove(value);\n          }\n        });\n      });\n    };\n\n    Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n      if (iters.length === 0) {\n        return this;\n      }\n      iters = iters.map(function(iter ) {return SetIterable(iter)});\n      var originalSet = this;\n      return this.withMutations(function(set ) {\n        originalSet.forEach(function(value ) {\n          if (iters.some(function(iter ) {return iter.includes(value)})) {\n            set.remove(value);\n          }\n        });\n      });\n    };\n\n    Set.prototype.merge = function() {\n      return this.union.apply(this, arguments);\n    };\n\n    Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return this.union.apply(this, iters);\n    };\n\n    Set.prototype.sort = function(comparator) {\n      // Late binding\n      return OrderedSet(sortFactory(this, comparator));\n    };\n\n    Set.prototype.sortBy = function(mapper, comparator) {\n      // Late binding\n      return OrderedSet(sortFactory(this, comparator, mapper));\n    };\n\n    Set.prototype.wasAltered = function() {\n      return this._map.wasAltered();\n    };\n\n    Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._map.__iterate(function(_, k)  {return fn(k, k, this$0)}, reverse);\n    };\n\n    Set.prototype.__iterator = function(type, reverse) {\n      return this._map.map(function(_, k)  {return k}).__iterator(type, reverse);\n    };\n\n    Set.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        return this;\n      }\n      return this.__make(newMap, ownerID);\n    };\n\n\n  function isSet(maybeSet) {\n    return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n  }\n\n  Set.isSet = isSet;\n\n  var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n  var SetPrototype = Set.prototype;\n  SetPrototype[IS_SET_SENTINEL] = true;\n  SetPrototype[DELETE] = SetPrototype.remove;\n  SetPrototype.mergeDeep = SetPrototype.merge;\n  SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n  SetPrototype.withMutations = MapPrototype.withMutations;\n  SetPrototype.asMutable = MapPrototype.asMutable;\n  SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n  SetPrototype.__empty = emptySet;\n  SetPrototype.__make = makeSet;\n\n  function updateSet(set, newMap) {\n    if (set.__ownerID) {\n      set.size = newMap.size;\n      set._map = newMap;\n      return set;\n    }\n    return newMap === set._map ? set :\n      newMap.size === 0 ? set.__empty() :\n      set.__make(newMap);\n  }\n\n  function makeSet(map, ownerID) {\n    var set = Object.create(SetPrototype);\n    set.size = map ? map.size : 0;\n    set._map = map;\n    set.__ownerID = ownerID;\n    return set;\n  }\n\n  var EMPTY_SET;\n  function emptySet() {\n    return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n  }\n\n  createClass(OrderedSet, Set);\n\n    // @pragma Construction\n\n    function OrderedSet(value) {\n      return value === null || value === undefined ? emptyOrderedSet() :\n        isOrderedSet(value) ? value :\n        emptyOrderedSet().withMutations(function(set ) {\n          var iter = SetIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v ) {return set.add(v)});\n        });\n    }\n\n    OrderedSet.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    OrderedSet.fromKeys = function(value) {\n      return this(KeyedIterable(value).keySeq());\n    };\n\n    OrderedSet.prototype.toString = function() {\n      return this.__toString('OrderedSet {', '}');\n    };\n\n\n  function isOrderedSet(maybeOrderedSet) {\n    return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n  }\n\n  OrderedSet.isOrderedSet = isOrderedSet;\n\n  var OrderedSetPrototype = OrderedSet.prototype;\n  OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n  OrderedSetPrototype.__empty = emptyOrderedSet;\n  OrderedSetPrototype.__make = makeOrderedSet;\n\n  function makeOrderedSet(map, ownerID) {\n    var set = Object.create(OrderedSetPrototype);\n    set.size = map ? map.size : 0;\n    set._map = map;\n    set.__ownerID = ownerID;\n    return set;\n  }\n\n  var EMPTY_ORDERED_SET;\n  function emptyOrderedSet() {\n    return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n  }\n\n  createClass(Stack, IndexedCollection);\n\n    // @pragma Construction\n\n    function Stack(value) {\n      return value === null || value === undefined ? emptyStack() :\n        isStack(value) ? value :\n        emptyStack().unshiftAll(value);\n    }\n\n    Stack.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    Stack.prototype.toString = function() {\n      return this.__toString('Stack [', ']');\n    };\n\n    // @pragma Access\n\n    Stack.prototype.get = function(index, notSetValue) {\n      var head = this._head;\n      index = wrapIndex(this, index);\n      while (head && index--) {\n        head = head.next;\n      }\n      return head ? head.value : notSetValue;\n    };\n\n    Stack.prototype.peek = function() {\n      return this._head && this._head.value;\n    };\n\n    // @pragma Modification\n\n    Stack.prototype.push = function(/*...values*/) {\n      if (arguments.length === 0) {\n        return this;\n      }\n      var newSize = this.size + arguments.length;\n      var head = this._head;\n      for (var ii = arguments.length - 1; ii >= 0; ii--) {\n        head = {\n          value: arguments[ii],\n          next: head\n        };\n      }\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    Stack.prototype.pushAll = function(iter) {\n      iter = IndexedIterable(iter);\n      if (iter.size === 0) {\n        return this;\n      }\n      assertNotInfinite(iter.size);\n      var newSize = this.size;\n      var head = this._head;\n      iter.reverse().forEach(function(value ) {\n        newSize++;\n        head = {\n          value: value,\n          next: head\n        };\n      });\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    Stack.prototype.pop = function() {\n      return this.slice(1);\n    };\n\n    Stack.prototype.unshift = function(/*...values*/) {\n      return this.push.apply(this, arguments);\n    };\n\n    Stack.prototype.unshiftAll = function(iter) {\n      return this.pushAll(iter);\n    };\n\n    Stack.prototype.shift = function() {\n      return this.pop.apply(this, arguments);\n    };\n\n    Stack.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._head = undefined;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyStack();\n    };\n\n    Stack.prototype.slice = function(begin, end) {\n      if (wholeSlice(begin, end, this.size)) {\n        return this;\n      }\n      var resolvedBegin = resolveBegin(begin, this.size);\n      var resolvedEnd = resolveEnd(end, this.size);\n      if (resolvedEnd !== this.size) {\n        // super.slice(begin, end);\n        return IndexedCollection.prototype.slice.call(this, begin, end);\n      }\n      var newSize = this.size - resolvedBegin;\n      var head = this._head;\n      while (resolvedBegin--) {\n        head = head.next;\n      }\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    // @pragma Mutability\n\n    Stack.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this.__altered = false;\n        return this;\n      }\n      return makeStack(this.size, this._head, ownerID, this.__hash);\n    };\n\n    // @pragma Iteration\n\n    Stack.prototype.__iterate = function(fn, reverse) {\n      if (reverse) {\n        return this.reverse().__iterate(fn);\n      }\n      var iterations = 0;\n      var node = this._head;\n      while (node) {\n        if (fn(node.value, iterations++, this) === false) {\n          break;\n        }\n        node = node.next;\n      }\n      return iterations;\n    };\n\n    Stack.prototype.__iterator = function(type, reverse) {\n      if (reverse) {\n        return this.reverse().__iterator(type);\n      }\n      var iterations = 0;\n      var node = this._head;\n      return new Iterator(function()  {\n        if (node) {\n          var value = node.value;\n          node = node.next;\n          return iteratorValue(type, iterations++, value);\n        }\n        return iteratorDone();\n      });\n    };\n\n\n  function isStack(maybeStack) {\n    return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n  }\n\n  Stack.isStack = isStack;\n\n  var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n  var StackPrototype = Stack.prototype;\n  StackPrototype[IS_STACK_SENTINEL] = true;\n  StackPrototype.withMutations = MapPrototype.withMutations;\n  StackPrototype.asMutable = MapPrototype.asMutable;\n  StackPrototype.asImmutable = MapPrototype.asImmutable;\n  StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n  function makeStack(size, head, ownerID, hash) {\n    var map = Object.create(StackPrototype);\n    map.size = size;\n    map._head = head;\n    map.__ownerID = ownerID;\n    map.__hash = hash;\n    map.__altered = false;\n    return map;\n  }\n\n  var EMPTY_STACK;\n  function emptyStack() {\n    return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n  }\n\n  /**\n   * Contributes additional methods to a constructor\n   */\n  function mixin(ctor, methods) {\n    var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n    Object.keys(methods).forEach(keyCopier);\n    Object.getOwnPropertySymbols &&\n      Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n    return ctor;\n  }\n\n  Iterable.Iterator = Iterator;\n\n  mixin(Iterable, {\n\n    // ### Conversion to other types\n\n    toArray: function() {\n      assertNotInfinite(this.size);\n      var array = new Array(this.size || 0);\n      this.valueSeq().__iterate(function(v, i)  { array[i] = v; });\n      return array;\n    },\n\n    toIndexedSeq: function() {\n      return new ToIndexedSequence(this);\n    },\n\n    toJS: function() {\n      return this.toSeq().map(\n        function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n      ).__toJS();\n    },\n\n    toJSON: function() {\n      return this.toSeq().map(\n        function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n      ).__toJS();\n    },\n\n    toKeyedSeq: function() {\n      return new ToKeyedSequence(this, true);\n    },\n\n    toMap: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Map(this.toKeyedSeq());\n    },\n\n    toObject: function() {\n      assertNotInfinite(this.size);\n      var object = {};\n      this.__iterate(function(v, k)  { object[k] = v; });\n      return object;\n    },\n\n    toOrderedMap: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return OrderedMap(this.toKeyedSeq());\n    },\n\n    toOrderedSet: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toSet: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Set(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toSetSeq: function() {\n      return new ToSetSequence(this);\n    },\n\n    toSeq: function() {\n      return isIndexed(this) ? this.toIndexedSeq() :\n        isKeyed(this) ? this.toKeyedSeq() :\n        this.toSetSeq();\n    },\n\n    toStack: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Stack(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toList: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return List(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n\n    // ### Common JavaScript methods and properties\n\n    toString: function() {\n      return '[Iterable]';\n    },\n\n    __toString: function(head, tail) {\n      if (this.size === 0) {\n        return head + tail;\n      }\n      return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n    },\n\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    concat: function() {var values = SLICE$0.call(arguments, 0);\n      return reify(this, concatFactory(this, values));\n    },\n\n    includes: function(searchValue) {\n      return this.some(function(value ) {return is(value, searchValue)});\n    },\n\n    entries: function() {\n      return this.__iterator(ITERATE_ENTRIES);\n    },\n\n    every: function(predicate, context) {\n      assertNotInfinite(this.size);\n      var returnValue = true;\n      this.__iterate(function(v, k, c)  {\n        if (!predicate.call(context, v, k, c)) {\n          returnValue = false;\n          return false;\n        }\n      });\n      return returnValue;\n    },\n\n    filter: function(predicate, context) {\n      return reify(this, filterFactory(this, predicate, context, true));\n    },\n\n    find: function(predicate, context, notSetValue) {\n      var entry = this.findEntry(predicate, context);\n      return entry ? entry[1] : notSetValue;\n    },\n\n    forEach: function(sideEffect, context) {\n      assertNotInfinite(this.size);\n      return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n    },\n\n    join: function(separator) {\n      assertNotInfinite(this.size);\n      separator = separator !== undefined ? '' + separator : ',';\n      var joined = '';\n      var isFirst = true;\n      this.__iterate(function(v ) {\n        isFirst ? (isFirst = false) : (joined += separator);\n        joined += v !== null && v !== undefined ? v.toString() : '';\n      });\n      return joined;\n    },\n\n    keys: function() {\n      return this.__iterator(ITERATE_KEYS);\n    },\n\n    map: function(mapper, context) {\n      return reify(this, mapFactory(this, mapper, context));\n    },\n\n    reduce: function(reducer, initialReduction, context) {\n      assertNotInfinite(this.size);\n      var reduction;\n      var useFirst;\n      if (arguments.length < 2) {\n        useFirst = true;\n      } else {\n        reduction = initialReduction;\n      }\n      this.__iterate(function(v, k, c)  {\n        if (useFirst) {\n          useFirst = false;\n          reduction = v;\n        } else {\n          reduction = reducer.call(context, reduction, v, k, c);\n        }\n      });\n      return reduction;\n    },\n\n    reduceRight: function(reducer, initialReduction, context) {\n      var reversed = this.toKeyedSeq().reverse();\n      return reversed.reduce.apply(reversed, arguments);\n    },\n\n    reverse: function() {\n      return reify(this, reverseFactory(this, true));\n    },\n\n    slice: function(begin, end) {\n      return reify(this, sliceFactory(this, begin, end, true));\n    },\n\n    some: function(predicate, context) {\n      return !this.every(not(predicate), context);\n    },\n\n    sort: function(comparator) {\n      return reify(this, sortFactory(this, comparator));\n    },\n\n    values: function() {\n      return this.__iterator(ITERATE_VALUES);\n    },\n\n\n    // ### More sequential methods\n\n    butLast: function() {\n      return this.slice(0, -1);\n    },\n\n    isEmpty: function() {\n      return this.size !== undefined ? this.size === 0 : !this.some(function()  {return true});\n    },\n\n    count: function(predicate, context) {\n      return ensureSize(\n        predicate ? this.toSeq().filter(predicate, context) : this\n      );\n    },\n\n    countBy: function(grouper, context) {\n      return countByFactory(this, grouper, context);\n    },\n\n    equals: function(other) {\n      return deepEqual(this, other);\n    },\n\n    entrySeq: function() {\n      var iterable = this;\n      if (iterable._cache) {\n        // We cache as an entries array, so we can just return the cache!\n        return new ArraySeq(iterable._cache);\n      }\n      var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n      entriesSequence.fromEntrySeq = function()  {return iterable.toSeq()};\n      return entriesSequence;\n    },\n\n    filterNot: function(predicate, context) {\n      return this.filter(not(predicate), context);\n    },\n\n    findEntry: function(predicate, context, notSetValue) {\n      var found = notSetValue;\n      this.__iterate(function(v, k, c)  {\n        if (predicate.call(context, v, k, c)) {\n          found = [k, v];\n          return false;\n        }\n      });\n      return found;\n    },\n\n    findKey: function(predicate, context) {\n      var entry = this.findEntry(predicate, context);\n      return entry && entry[0];\n    },\n\n    findLast: function(predicate, context, notSetValue) {\n      return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n    },\n\n    findLastEntry: function(predicate, context, notSetValue) {\n      return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n    },\n\n    findLastKey: function(predicate, context) {\n      return this.toKeyedSeq().reverse().findKey(predicate, context);\n    },\n\n    first: function() {\n      return this.find(returnTrue);\n    },\n\n    flatMap: function(mapper, context) {\n      return reify(this, flatMapFactory(this, mapper, context));\n    },\n\n    flatten: function(depth) {\n      return reify(this, flattenFactory(this, depth, true));\n    },\n\n    fromEntrySeq: function() {\n      return new FromEntriesSequence(this);\n    },\n\n    get: function(searchKey, notSetValue) {\n      return this.find(function(_, key)  {return is(key, searchKey)}, undefined, notSetValue);\n    },\n\n    getIn: function(searchKeyPath, notSetValue) {\n      var nested = this;\n      // Note: in an ES6 environment, we would prefer:\n      // for (var key of searchKeyPath) {\n      var iter = forceIterator(searchKeyPath);\n      var step;\n      while (!(step = iter.next()).done) {\n        var key = step.value;\n        nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n        if (nested === NOT_SET) {\n          return notSetValue;\n        }\n      }\n      return nested;\n    },\n\n    groupBy: function(grouper, context) {\n      return groupByFactory(this, grouper, context);\n    },\n\n    has: function(searchKey) {\n      return this.get(searchKey, NOT_SET) !== NOT_SET;\n    },\n\n    hasIn: function(searchKeyPath) {\n      return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n    },\n\n    isSubset: function(iter) {\n      iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n      return this.every(function(value ) {return iter.includes(value)});\n    },\n\n    isSuperset: function(iter) {\n      iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n      return iter.isSubset(this);\n    },\n\n    keyOf: function(searchValue) {\n      return this.findKey(function(value ) {return is(value, searchValue)});\n    },\n\n    keySeq: function() {\n      return this.toSeq().map(keyMapper).toIndexedSeq();\n    },\n\n    last: function() {\n      return this.toSeq().reverse().first();\n    },\n\n    lastKeyOf: function(searchValue) {\n      return this.toKeyedSeq().reverse().keyOf(searchValue);\n    },\n\n    max: function(comparator) {\n      return maxFactory(this, comparator);\n    },\n\n    maxBy: function(mapper, comparator) {\n      return maxFactory(this, comparator, mapper);\n    },\n\n    min: function(comparator) {\n      return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n    },\n\n    minBy: function(mapper, comparator) {\n      return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n    },\n\n    rest: function() {\n      return this.slice(1);\n    },\n\n    skip: function(amount) {\n      return this.slice(Math.max(0, amount));\n    },\n\n    skipLast: function(amount) {\n      return reify(this, this.toSeq().reverse().skip(amount).reverse());\n    },\n\n    skipWhile: function(predicate, context) {\n      return reify(this, skipWhileFactory(this, predicate, context, true));\n    },\n\n    skipUntil: function(predicate, context) {\n      return this.skipWhile(not(predicate), context);\n    },\n\n    sortBy: function(mapper, comparator) {\n      return reify(this, sortFactory(this, comparator, mapper));\n    },\n\n    take: function(amount) {\n      return this.slice(0, Math.max(0, amount));\n    },\n\n    takeLast: function(amount) {\n      return reify(this, this.toSeq().reverse().take(amount).reverse());\n    },\n\n    takeWhile: function(predicate, context) {\n      return reify(this, takeWhileFactory(this, predicate, context));\n    },\n\n    takeUntil: function(predicate, context) {\n      return this.takeWhile(not(predicate), context);\n    },\n\n    valueSeq: function() {\n      return this.toIndexedSeq();\n    },\n\n\n    // ### Hashable Object\n\n    hashCode: function() {\n      return this.__hash || (this.__hash = hashIterable(this));\n    }\n\n\n    // ### Internal\n\n    // abstract __iterate(fn, reverse)\n\n    // abstract __iterator(type, reverse)\n  });\n\n  // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n  // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n  // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n  // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n  var IterablePrototype = Iterable.prototype;\n  IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n  IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n  IterablePrototype.__toJS = IterablePrototype.toArray;\n  IterablePrototype.__toStringMapper = quoteString;\n  IterablePrototype.inspect =\n  IterablePrototype.toSource = function() { return this.toString(); };\n  IterablePrototype.chain = IterablePrototype.flatMap;\n  IterablePrototype.contains = IterablePrototype.includes;\n\n  mixin(KeyedIterable, {\n\n    // ### More sequential methods\n\n    flip: function() {\n      return reify(this, flipFactory(this));\n    },\n\n    mapEntries: function(mapper, context) {var this$0 = this;\n      var iterations = 0;\n      return reify(this,\n        this.toSeq().map(\n          function(v, k)  {return mapper.call(context, [k, v], iterations++, this$0)}\n        ).fromEntrySeq()\n      );\n    },\n\n    mapKeys: function(mapper, context) {var this$0 = this;\n      return reify(this,\n        this.toSeq().flip().map(\n          function(k, v)  {return mapper.call(context, k, v, this$0)}\n        ).flip()\n      );\n    }\n\n  });\n\n  var KeyedIterablePrototype = KeyedIterable.prototype;\n  KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n  KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n  KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n  KeyedIterablePrototype.__toStringMapper = function(v, k)  {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n  mixin(IndexedIterable, {\n\n    // ### Conversion to other types\n\n    toKeyedSeq: function() {\n      return new ToKeyedSequence(this, false);\n    },\n\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    filter: function(predicate, context) {\n      return reify(this, filterFactory(this, predicate, context, false));\n    },\n\n    findIndex: function(predicate, context) {\n      var entry = this.findEntry(predicate, context);\n      return entry ? entry[0] : -1;\n    },\n\n    indexOf: function(searchValue) {\n      var key = this.keyOf(searchValue);\n      return key === undefined ? -1 : key;\n    },\n\n    lastIndexOf: function(searchValue) {\n      var key = this.lastKeyOf(searchValue);\n      return key === undefined ? -1 : key;\n    },\n\n    reverse: function() {\n      return reify(this, reverseFactory(this, false));\n    },\n\n    slice: function(begin, end) {\n      return reify(this, sliceFactory(this, begin, end, false));\n    },\n\n    splice: function(index, removeNum /*, ...values*/) {\n      var numArgs = arguments.length;\n      removeNum = Math.max(removeNum | 0, 0);\n      if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n        return this;\n      }\n      // If index is negative, it should resolve relative to the size of the\n      // collection. However size may be expensive to compute if not cached, so\n      // only call count() if the number is in fact negative.\n      index = resolveBegin(index, index < 0 ? this.count() : this.size);\n      var spliced = this.slice(0, index);\n      return reify(\n        this,\n        numArgs === 1 ?\n          spliced :\n          spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n      );\n    },\n\n\n    // ### More collection methods\n\n    findLastIndex: function(predicate, context) {\n      var entry = this.findLastEntry(predicate, context);\n      return entry ? entry[0] : -1;\n    },\n\n    first: function() {\n      return this.get(0);\n    },\n\n    flatten: function(depth) {\n      return reify(this, flattenFactory(this, depth, false));\n    },\n\n    get: function(index, notSetValue) {\n      index = wrapIndex(this, index);\n      return (index < 0 || (this.size === Infinity ||\n          (this.size !== undefined && index > this.size))) ?\n        notSetValue :\n        this.find(function(_, key)  {return key === index}, undefined, notSetValue);\n    },\n\n    has: function(index) {\n      index = wrapIndex(this, index);\n      return index >= 0 && (this.size !== undefined ?\n        this.size === Infinity || index < this.size :\n        this.indexOf(index) !== -1\n      );\n    },\n\n    interpose: function(separator) {\n      return reify(this, interposeFactory(this, separator));\n    },\n\n    interleave: function(/*...iterables*/) {\n      var iterables = [this].concat(arrCopy(arguments));\n      var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n      var interleaved = zipped.flatten(true);\n      if (zipped.size) {\n        interleaved.size = zipped.size * iterables.length;\n      }\n      return reify(this, interleaved);\n    },\n\n    keySeq: function() {\n      return Range(0, this.size);\n    },\n\n    last: function() {\n      return this.get(-1);\n    },\n\n    skipWhile: function(predicate, context) {\n      return reify(this, skipWhileFactory(this, predicate, context, false));\n    },\n\n    zip: function(/*, ...iterables */) {\n      var iterables = [this].concat(arrCopy(arguments));\n      return reify(this, zipWithFactory(this, defaultZipper, iterables));\n    },\n\n    zipWith: function(zipper/*, ...iterables */) {\n      var iterables = arrCopy(arguments);\n      iterables[0] = this;\n      return reify(this, zipWithFactory(this, zipper, iterables));\n    }\n\n  });\n\n  IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n  IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n  mixin(SetIterable, {\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    get: function(value, notSetValue) {\n      return this.has(value) ? value : notSetValue;\n    },\n\n    includes: function(value) {\n      return this.has(value);\n    },\n\n\n    // ### More sequential methods\n\n    keySeq: function() {\n      return this.valueSeq();\n    }\n\n  });\n\n  SetIterable.prototype.has = IterablePrototype.includes;\n  SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n  // Mixin subclasses\n\n  mixin(KeyedSeq, KeyedIterable.prototype);\n  mixin(IndexedSeq, IndexedIterable.prototype);\n  mixin(SetSeq, SetIterable.prototype);\n\n  mixin(KeyedCollection, KeyedIterable.prototype);\n  mixin(IndexedCollection, IndexedIterable.prototype);\n  mixin(SetCollection, SetIterable.prototype);\n\n\n  // #pragma Helper functions\n\n  function keyMapper(v, k) {\n    return k;\n  }\n\n  function entryMapper(v, k) {\n    return [k, v];\n  }\n\n  function not(predicate) {\n    return function() {\n      return !predicate.apply(this, arguments);\n    }\n  }\n\n  function neg(predicate) {\n    return function() {\n      return -predicate.apply(this, arguments);\n    }\n  }\n\n  function quoteString(value) {\n    return typeof value === 'string' ? JSON.stringify(value) : String(value);\n  }\n\n  function defaultZipper() {\n    return arrCopy(arguments);\n  }\n\n  function defaultNegComparator(a, b) {\n    return a < b ? 1 : a > b ? -1 : 0;\n  }\n\n  function hashIterable(iterable) {\n    if (iterable.size === Infinity) {\n      return 0;\n    }\n    var ordered = isOrdered(iterable);\n    var keyed = isKeyed(iterable);\n    var h = ordered ? 1 : 0;\n    var size = iterable.__iterate(\n      keyed ?\n        ordered ?\n          function(v, k)  { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n          function(v, k)  { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n        ordered ?\n          function(v ) { h = 31 * h + hash(v) | 0; } :\n          function(v ) { h = h + hash(v) | 0; }\n    );\n    return murmurHashOfSize(size, h);\n  }\n\n  function murmurHashOfSize(size, h) {\n    h = imul(h, 0xCC9E2D51);\n    h = imul(h << 15 | h >>> -15, 0x1B873593);\n    h = imul(h << 13 | h >>> -13, 5);\n    h = (h + 0xE6546B64 | 0) ^ size;\n    h = imul(h ^ h >>> 16, 0x85EBCA6B);\n    h = imul(h ^ h >>> 13, 0xC2B2AE35);\n    h = smi(h ^ h >>> 16);\n    return h;\n  }\n\n  function hashMerge(a, b) {\n    return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n  }\n\n  var Immutable = {\n\n    Iterable: Iterable,\n\n    Seq: Seq,\n    Collection: Collection,\n    Map: Map,\n    OrderedMap: OrderedMap,\n    List: List,\n    Stack: Stack,\n    Set: Set,\n    OrderedSet: OrderedSet,\n\n    Record: Record,\n    Range: Range,\n    Repeat: Repeat,\n\n    is: is,\n    fromJS: fromJS\n\n  };\n\n  return Immutable;\n\n}));", "module.exports = require(\"core-js-pure/stable/instance/concat\");", "var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\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\n  return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/stable/instance/map\");", "function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n\n    _Object$defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n\n  _Object$defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n\n  return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "/*\n  ATTENTION! This file (but not the functions within) is deprecated.\n\n  You should probably add a new file to `./helpers/` instead of adding a new\n  function here.\n\n  One-function-per-file is a better pattern than what we have here.\n\n  If you're refactoring something in here, feel free to break it out to a file\n  in `./helpers` if you have the time.\n*/\n\nimport Im, { fromJS, Set } from \"immutable\"\nimport { sanitizeUrl as braintreeSanitizeUrl } from \"@braintree/sanitize-url\"\nimport camelCase from \"lodash/camelCase\"\nimport upperFirst from \"lodash/upperFirst\"\nimport _memoize from \"lodash/memoize\"\nimport find from \"lodash/find\"\nimport some from \"lodash/some\"\nimport eq from \"lodash/eq\"\nimport isFunction from \"lodash/isFunction\"\nimport { memoizedSampleFromSchema, memoizedCreateXMLExample } from \"core/plugins/samples/fn\"\nimport win from \"./window\"\nimport cssEscape from \"css.escape\"\nimport getParameterSchema from \"../helpers/get-parameter-schema\"\nimport randomBytes from \"randombytes\"\nimport shaJs from \"sha.js\"\nimport YAML from \"js-yaml\"\n\n\nconst DEFAULT_RESPONSE_KEY = \"default\"\n\nexport const isImmutable = (maybe) => Im.Iterable.isIterable(maybe)\n\nexport function objectify (thing) {\n  if(!isObject(thing))\n    return {}\n  if(isImmutable(thing))\n    return thing.toJS()\n  return thing\n}\n\nexport function arrayify (thing) {\n  if(!thing)\n    return []\n\n  if(thing.toArray)\n    return thing.toArray()\n\n  return normalizeArray(thing)\n}\n\nexport function fromJSOrdered(js) {\n  if (isImmutable(js)) {\n    return js // Can't do much here\n  }\n  if (js instanceof win.File) {\n    return js\n  }\n  if (!isObject(js)) {\n    return js\n  }\n  if (Array.isArray(js)) {\n    return Im.Seq(js).map(fromJSOrdered).toList()\n  }\n  if (isFunction(js.entries)) {\n    // handle multipart/form-data\n    const objWithHashedKeys = createObjWithHashedKeys(js)\n    return Im.OrderedMap(objWithHashedKeys).map(fromJSOrdered)\n  }\n  return Im.OrderedMap(js).map(fromJSOrdered)\n}\n\n/**\n * Convert a FormData object into plain object\n * Append a hashIdx and counter to the key name, if multiple exists\n * if single, key name = <original>\n * if multiple, key name = <original><hashIdx><count>\n * @example <caption>single entry for vegetable</caption>\n * fdObj.entries.vegtables: \"carrot\"\n * // returns newObj.vegetables : \"carrot\"\n * @example <caption>multiple entries for fruits[]</caption>\n * fdObj.entries.fruits[]: \"apple\"\n * // returns newObj.fruits[]_**[]1 : \"apple\"\n * fdObj.entries.fruits[]: \"banana\"\n * // returns newObj.fruits[]_**[]2 : \"banana\"\n * fdObj.entries.fruits[]: \"grape\"\n * // returns newObj.fruits[]_**[]3 : \"grape\"\n * @param {FormData} fdObj - a FormData object\n * @return {Object} - a plain object\n */\nexport function createObjWithHashedKeys (fdObj) {\n  if (!isFunction(fdObj.entries)) {\n    return fdObj // not a FormData object with iterable\n  }\n  const newObj = {}\n  const hashIdx = \"_**[]\" // our internal identifier\n  const trackKeys = {}\n  for (let pair of fdObj.entries()) {\n    if (!newObj[pair[0]] && !(trackKeys[pair[0]] && trackKeys[pair[0]].containsMultiple)) {\n      newObj[pair[0]] = pair[1] // first key name: no hash required\n    } else {\n      if (!trackKeys[pair[0]]) {\n        // initiate tracking key for multiple\n        trackKeys[pair[0]] = {\n          containsMultiple: true,\n          length: 1\n        }\n        // \"reassign\" first pair to matching hashed format for multiple\n        let hashedKeyFirst = `${pair[0]}${hashIdx}${trackKeys[pair[0]].length}`\n        newObj[hashedKeyFirst] = newObj[pair[0]]\n        // remove non-hashed key of multiple\n        delete newObj[pair[0]] // first\n      }\n      trackKeys[pair[0]].length += 1\n      let hashedKeyCurrent = `${pair[0]}${hashIdx}${trackKeys[pair[0]].length}`\n      newObj[hashedKeyCurrent] = pair[1]\n    }\n  }\n  return newObj\n}\n\nexport function bindToState(obj, state) {\n\tvar newObj = {}\n\tObject.keys(obj)\n  .filter(key => typeof obj[key] === \"function\")\n  .forEach(key => newObj[key] = obj[key].bind(null, state))\n\treturn newObj\n}\n\nexport function normalizeArray(arr) {\n  if(Array.isArray(arr))\n    return arr\n  return [arr]\n}\n\nexport function isFn(fn) {\n  return typeof fn === \"function\"\n}\n\nexport function isObject(obj) {\n  return !!obj && typeof obj === \"object\"\n}\n\nexport function isFunc(thing) {\n  return typeof(thing) === \"function\"\n}\n\nexport function isArray(thing) {\n  return Array.isArray(thing)\n}\n\n// I've changed memoize libs more than once, so I'm using this a way to make that simpler\nexport const memoize = _memoize\n\nexport function objMap(obj, fn) {\n  return Object.keys(obj).reduce((newObj, key) => {\n    newObj[key] = fn(obj[key], key)\n    return newObj\n  }, {})\n}\n\nexport function objReduce(obj, fn) {\n  return Object.keys(obj).reduce((newObj, key) => {\n    let res = fn(obj[key], key)\n    if(res && typeof res === \"object\")\n      Object.assign(newObj, res)\n    return newObj\n  }, {})\n}\n\n// Redux middleware that exposes the system to async actions (like redux-thunk, but with out system instead of (dispatch, getState)\nexport function systemThunkMiddleware(getSystem) {\n  return ({ dispatch, getState }) => { // eslint-disable-line no-unused-vars\n    return next => action => {\n      if (typeof action === \"function\") {\n        return action(getSystem())\n      }\n\n      return next(action)\n    }\n  }\n}\n\nexport function defaultStatusCode ( responses ) {\n  let codes = responses.keySeq()\n  return codes.contains(DEFAULT_RESPONSE_KEY) ? DEFAULT_RESPONSE_KEY : codes.filter( key => (key+\"\")[0] === \"2\").sort().first()\n}\n\n\n/**\n * Returns an Immutable List, safely\n * @param {Immutable.Iterable} iterable the iterable to get the key from\n * @param {String|[String]} key either an array of keys, or a single key\n * @returns {Immutable.List} either iterable.get(keys) or an empty Immutable.List\n */\nexport function getList(iterable, keys) {\n  if(!Im.Iterable.isIterable(iterable)) {\n    return Im.List()\n  }\n  let val = iterable.getIn(Array.isArray(keys) ? keys : [keys])\n  return Im.List.isList(val) ? val : Im.List()\n}\n\n/**\n * Take an immutable map, and convert to a list.\n * Where the keys are merged with the value objects\n * @param {Immutable.Map} map, the map to convert\n * @param {String} key the key to use, when merging the `key`\n * @returns {Immutable.List}\n */\nexport function mapToList(map, keyNames=\"key\", collectedKeys=Im.Map()) {\n  if(!Im.Map.isMap(map) || !map.size) {\n    return Im.List()\n  }\n\n  if(!Array.isArray(keyNames)) {\n    keyNames = [ keyNames ]\n  }\n\n  if(keyNames.length < 1) {\n    return map.merge(collectedKeys)\n  }\n\n  // I need to avoid `flatMap` from merging in the Maps, as well as the lists\n  let list = Im.List()\n  let keyName = keyNames[0]\n  for(let entry of map.entries()) {\n    let [key, val] = entry\n    let nextList = mapToList(val, keyNames.slice(1), collectedKeys.set(keyName, key))\n    if(Im.List.isList(nextList)) {\n      list = list.concat(nextList)\n    } else {\n      list = list.push(nextList)\n    }\n  }\n\n  return list\n}\n\nexport function extractFileNameFromContentDispositionHeader(value){\n  let patterns = [\n    /filename\\*=[^']+'\\w*'\"([^\"]+)\";?/i,\n    /filename\\*=[^']+'\\w*'([^;]+);?/i,\n    /filename=\"([^;]*);?\"/i,\n    /filename=([^;]*);?/i\n  ]\n\n  let responseFilename\n  patterns.some(regex => {\n    responseFilename = regex.exec(value)\n    return responseFilename !== null\n  })\n\n  if (responseFilename !== null && responseFilename.length > 1) {\n    try {\n      return decodeURIComponent(responseFilename[1])\n    } catch(e) {\n      console.error(e)\n    }\n  }\n\n  return null\n}\n\n// PascalCase, aka UpperCamelCase\nexport function pascalCase(str) {\n  return upperFirst(camelCase(str))\n}\n\n// Remove the ext of a filename, and pascalCase it\nexport function pascalCaseFilename(filename) {\n  return pascalCase(filename.replace(/\\.[^./]*$/, \"\"))\n}\n\n// Check if ...\n// - new props\n// - If immutable, use .is()\n// - if in explicit objectList, then compare using _.eq\n// - else use ===\nexport const propChecker = (props, nextProps, objectList=[], ignoreList=[]) => {\n\n  if(Object.keys(props).length !== Object.keys(nextProps).length) {\n    return true\n  }\n\n  return (\n    some(props, (a, name) => {\n      if(ignoreList.includes(name)) {\n        return false\n      }\n      let b = nextProps[name]\n\n      if(Im.Iterable.isIterable(a)) {\n        return !Im.is(a,b)\n      }\n\n      // Not going to compare objects\n      if(typeof a === \"object\" && typeof b === \"object\") {\n        return false\n      }\n\n      return a !== b\n    })\n    || objectList.some( objectPropName => !eq(props[objectPropName], nextProps[objectPropName])))\n}\n\nexport const validateMaximum = ( val, max ) => {\n  if (val > max) {\n    return `Value must be less than ${max}`\n  }\n}\n\nexport const validateMinimum = ( val, min ) => {\n  if (val < min) {\n    return `Value must be greater than ${min}`\n  }\n}\n\nexport const validateNumber = ( val ) => {\n  if (!/^-?\\d+(\\.?\\d+)?$/.test(val)) {\n    return \"Value must be a number\"\n  }\n}\n\nexport const validateInteger = ( val ) => {\n  if (!/^-?\\d+$/.test(val)) {\n    return \"Value must be an integer\"\n  }\n}\n\nexport const validateFile = ( val ) => {\n  if ( val && !(val instanceof win.File) ) {\n    return \"Value must be a file\"\n  }\n}\n\nexport const validateBoolean = ( val ) => {\n  if ( !(val === \"true\" || val === \"false\" || val === true || val === false) ) {\n    return \"Value must be a boolean\"\n  }\n}\n\nexport const validateString = ( val ) => {\n  if ( val && typeof val !== \"string\" ) {\n    return \"Value must be a string\"\n  }\n}\n\nexport const validateDateTime = (val) => {\n    if (isNaN(Date.parse(val))) {\n        return \"Value must be a DateTime\"\n    }\n}\n\nexport const validateGuid = (val) => {\n    val = val.toString().toLowerCase()\n    if (!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(val)) {\n        return \"Value must be a Guid\"\n    }\n}\n\nexport const validateMaxLength = (val, max) => {\n  if (val.length > max) {\n      return `Value must be no longer than ${max} character${max !== 1 ? \"s\" : \"\"}`\n  }\n}\n\nexport const validateUniqueItems = (val, uniqueItems) => {\n  if (!val) {\n    return\n  }\n  if (uniqueItems === \"true\" || uniqueItems === true) {\n    const list = fromJS(val)\n    const set = list.toSet()\n    const hasDuplicates = val.length > set.size\n    if(hasDuplicates) {\n      let errorsPerIndex = Set()\n      list.forEach((item, i) => {\n        if(list.filter(v => isFunc(v.equals) ? v.equals(item) : v === item).size > 1) {\n          errorsPerIndex = errorsPerIndex.add(i)\n        }\n      })\n      if(errorsPerIndex.size !== 0) {\n        return errorsPerIndex.map(i => ({index: i, error: \"No duplicates allowed.\"})).toArray()\n      }\n    }\n  }\n}\n\nexport const validateMinItems = (val, min) => {\n  if (!val && min >= 1 || val && val.length < min) {\n      return `Array must contain at least ${min} item${min === 1 ? \"\" : \"s\"}`\n  }\n}\n\nexport const validateMaxItems = (val, max) => {\n  if (val && val.length > max) {\n    return `Array must not contain more then ${max} item${max === 1 ? \"\" : \"s\"}`\n  }\n}\n\nexport const validateMinLength = (val, min) => {\n  if (val.length < min) {\n      return `Value must be at least ${min} character${min !== 1 ? \"s\" : \"\"}`\n  }\n}\n\nexport const validatePattern = (val, rxPattern) => {\n  var patt = new RegExp(rxPattern)\n  if (!patt.test(val)) {\n      return \"Value must follow pattern \" + rxPattern\n  }\n}\n\nfunction validateValueBySchema(value, schema, requiredByParam, bypassRequiredCheck, parameterContentMediaType) {\n  if(!schema) return []\n  let errors = []\n  let nullable = schema.get(\"nullable\")\n  let requiredBySchema = schema.get(\"required\")\n  let maximum = schema.get(\"maximum\")\n  let minimum = schema.get(\"minimum\")\n  let type = schema.get(\"type\")\n  let format = schema.get(\"format\")\n  let maxLength = schema.get(\"maxLength\")\n  let minLength = schema.get(\"minLength\")\n  let uniqueItems = schema.get(\"uniqueItems\")\n  let maxItems = schema.get(\"maxItems\")\n  let minItems = schema.get(\"minItems\")\n  let pattern = schema.get(\"pattern\")\n\n  const schemaRequiresValue = requiredByParam || requiredBySchema === true\n  const hasValue = value !== undefined && value !== null\n  const isValidEmpty = !schemaRequiresValue && !hasValue\n\n  const needsExplicitConstraintValidation = hasValue && type === \"array\"\n\n  const requiresFurtherValidation =\n    schemaRequiresValue\n    || needsExplicitConstraintValidation\n    || !isValidEmpty\n\n  const isValidNullable = nullable && value === null\n\n  // will not be included in the request or [schema / value] does not [allow / require] further analysis.\n  const noFurtherValidationNeeded =\n    isValidNullable\n    || !type\n    || !requiresFurtherValidation\n\n  if(noFurtherValidationNeeded) {\n    return []\n  }\n\n  // Further this point the parameter is considered worth to validate\n  let stringCheck = type === \"string\" && value\n  let arrayCheck = type === \"array\" && Array.isArray(value) && value.length\n  let arrayListCheck = type === \"array\" && Im.List.isList(value) && value.count()\n  let arrayStringCheck = type === \"array\" && typeof value === \"string\" && value\n  let fileCheck = type === \"file\" && value instanceof win.File\n  let booleanCheck = type === \"boolean\" && (value || value === false)\n  let numberCheck = type === \"number\" && (value || value === 0)\n  let integerCheck = type === \"integer\" && (value || value === 0)\n  let objectCheck = type === \"object\" && typeof value === \"object\" && value !== null\n  let objectStringCheck = type === \"object\" && typeof value === \"string\" && value\n\n  const allChecks = [\n    stringCheck, arrayCheck, arrayListCheck, arrayStringCheck, fileCheck,\n    booleanCheck, numberCheck, integerCheck, objectCheck, objectStringCheck,\n  ]\n\n  const passedAnyCheck = allChecks.some(v => !!v)\n\n  if (schemaRequiresValue && !passedAnyCheck && !bypassRequiredCheck) {\n    errors.push(\"Required field is not provided\")\n    return errors\n  }\n  if (\n    type === \"object\" &&\n    (parameterContentMediaType === null ||\n      parameterContentMediaType === \"application/json\")\n  ) {\n    let objectVal = value\n    if(typeof value === \"string\") {\n      try {\n        objectVal = JSON.parse(value)\n      } catch (e) {\n        errors.push(\"Parameter string value must be valid JSON\")\n        return errors\n      }\n    }\n    if(schema && schema.has(\"required\") && isFunc(requiredBySchema.isList) && requiredBySchema.isList()) {\n      requiredBySchema.forEach(key => {\n        if(objectVal[key] === undefined) {\n          errors.push({ propKey: key, error: \"Required property not found\" })\n        }\n      })\n    }\n    if(schema && schema.has(\"properties\")) {\n      schema.get(\"properties\").forEach((val, key) => {\n        const errs = validateValueBySchema(objectVal[key], val, false, bypassRequiredCheck, parameterContentMediaType)\n        errors.push(...errs\n          .map((error) => ({ propKey: key, error })))\n      })\n    }\n  }\n\n  if (pattern) {\n    let err = validatePattern(value, pattern)\n    if (err) errors.push(err)\n  }\n\n  if (minItems) {\n    if (type === \"array\") {\n      let err = validateMinItems(value, minItems)\n      if (err) errors.push(err)\n    }\n  }\n\n  if (maxItems) {\n    if (type === \"array\") {\n      let err = validateMaxItems(value, maxItems)\n      if (err) errors.push({ needRemove: true, error: err })\n    }\n  }\n\n  if (uniqueItems) {\n    if (type === \"array\") {\n      let errorPerItem = validateUniqueItems(value, uniqueItems)\n      if (errorPerItem) errors.push(...errorPerItem)\n    }\n  }\n\n  if (maxLength || maxLength === 0) {\n    let err = validateMaxLength(value, maxLength)\n    if (err) errors.push(err)\n  }\n\n  if (minLength) {\n    let err = validateMinLength(value, minLength)\n    if (err) errors.push(err)\n  }\n\n  if (maximum || maximum === 0) {\n    let err = validateMaximum(value, maximum)\n    if (err) errors.push(err)\n  }\n\n  if (minimum || minimum === 0) {\n    let err = validateMinimum(value, minimum)\n    if (err) errors.push(err)\n  }\n\n  if (type === \"string\") {\n    let err\n    if (format === \"date-time\") {\n      err = validateDateTime(value)\n    } else if (format === \"uuid\") {\n      err = validateGuid(value)\n    } else {\n      err = validateString(value)\n    }\n    if (!err) return errors\n    errors.push(err)\n  } else if (type === \"boolean\") {\n    let err = validateBoolean(value)\n    if (!err) return errors\n    errors.push(err)\n  } else if (type === \"number\") {\n    let err = validateNumber(value)\n    if (!err) return errors\n    errors.push(err)\n  } else if (type === \"integer\") {\n    let err = validateInteger(value)\n    if (!err) return errors\n    errors.push(err)\n  } else if (type === \"array\") {\n    if (!(arrayCheck || arrayListCheck)) {\n      return errors\n    }\n    if(value) {\n      value.forEach((item, i) => {\n        const errs = validateValueBySchema(item, schema.get(\"items\"), false, bypassRequiredCheck, parameterContentMediaType)\n        errors.push(...errs\n          .map((err) => ({ index: i, error: err })))\n      })\n    }\n  } else if (type === \"file\") {\n    let err = validateFile(value)\n    if (!err) return errors\n    errors.push(err)\n  }\n\n  return errors\n}\n\n// validation of parameters before execute\nexport const validateParam = (param, value, { isOAS3 = false, bypassRequiredCheck = false } = {}) => {\n\n  let paramRequired = param.get(\"required\")\n\n  let { schema: paramDetails, parameterContentMediaType } = getParameterSchema(param, { isOAS3 })\n\n  return validateValueBySchema(value, paramDetails, paramRequired, bypassRequiredCheck, parameterContentMediaType)\n}\n\nconst getXmlSampleSchema = (schema, config, exampleOverride) => {\n  if (schema && (!schema.xml || !schema.xml.name)) {\n    schema.xml = schema.xml || {}\n\n    if (schema.$$ref) {\n      let match = schema.$$ref.match(/\\S*\\/(\\S+)$/)\n      schema.xml.name = match[1]\n    } else if (schema.type || schema.items || schema.properties || schema.additionalProperties) {\n      return \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<!-- XML example cannot be generated; root element name is undefined -->\"\n    } else {\n      return null\n    }\n  }\n  return memoizedCreateXMLExample(schema, config, exampleOverride)\n}\n\nconst shouldStringifyTypesConfig = [\n  {\n    when: /json/,\n    shouldStringifyTypes: [\"string\"]\n  }\n]\n\nconst defaultStringifyTypes = [\"object\"]\n\nconst getStringifiedSampleForSchema = (schema, config, contentType, exampleOverride) => {\n  const res = memoizedSampleFromSchema(schema, config, exampleOverride)\n  const resType = typeof res\n\n  const typesToStringify = shouldStringifyTypesConfig.reduce(\n    (types, nextConfig) => nextConfig.when.test(contentType)\n      ? [...types, ...nextConfig.shouldStringifyTypes]\n      : types,\n    defaultStringifyTypes)\n\n  return some(typesToStringify, x => x === resType)\n    ? JSON.stringify(res, null, 2)\n    : res\n}\n\nconst getYamlSampleSchema = (schema, config, contentType, exampleOverride) => {\n  const jsonExample = getStringifiedSampleForSchema(schema, config, contentType, exampleOverride)\n  let yamlString\n  try {\n    yamlString = YAML.dump(YAML.load(jsonExample), {\n\n      lineWidth: -1 // don't generate line folds\n    })\n    if(yamlString[yamlString.length - 1] === \"\\n\") {\n      yamlString = yamlString.slice(0, yamlString.length - 1)\n    }\n  } catch (e) {\n    console.error(e)\n    return \"error: could not generate yaml example\"\n  }\n  return yamlString\n    .replace(/\\t/g, \"  \")\n}\n\nexport const getSampleSchema = (schema, contentType=\"\", config={}, exampleOverride = undefined) => {\n  if(schema && isFunc(schema.toJS))\n    schema = schema.toJS()\n  if(exampleOverride && isFunc(exampleOverride.toJS))\n    exampleOverride = exampleOverride.toJS()\n\n  if (/xml/.test(contentType)) {\n    return getXmlSampleSchema(schema, config, exampleOverride)\n  }\n  if (/(yaml|yml)/.test(contentType)) {\n    return getYamlSampleSchema(schema, config, contentType, exampleOverride)\n  }\n  return getStringifiedSampleForSchema(schema, config, contentType, exampleOverride)\n}\n\nexport const parseSearch = () => {\n  let map = {}\n  let search = win.location.search\n\n  if(!search)\n    return {}\n\n  if ( search != \"\" ) {\n    let params = search.substr(1).split(\"&\")\n\n    for (let i in params) {\n      if (!Object.prototype.hasOwnProperty.call(params, i)) {\n        continue\n      }\n      i = params[i].split(\"=\")\n      map[decodeURIComponent(i[0])] = (i[1] && decodeURIComponent(i[1])) || \"\"\n    }\n  }\n\n  return map\n}\n\nexport const serializeSearch = (searchMap) => {\n  return Object.keys(searchMap).map(k => {\n    return encodeURIComponent(k) + \"=\" + encodeURIComponent(searchMap[k])\n  }).join(\"&\")\n}\n\nexport const btoa = (str) => {\n  let buffer\n\n  if (str instanceof Buffer) {\n    buffer = str\n  } else {\n    buffer = Buffer.from(str.toString(), \"utf-8\")\n  }\n\n  return buffer.toString(\"base64\")\n}\n\nexport const sorters = {\n  operationsSorter: {\n    alpha: (a, b) => a.get(\"path\").localeCompare(b.get(\"path\")),\n    method: (a, b) => a.get(\"method\").localeCompare(b.get(\"method\"))\n  },\n  tagsSorter: {\n    alpha: (a, b) => a.localeCompare(b)\n  }\n}\n\nexport const buildFormData = (data) => {\n  let formArr = []\n\n  for (let name in data) {\n    let val = data[name]\n    if (val !== undefined && val !== \"\") {\n      formArr.push([name, \"=\", encodeURIComponent(val).replace(/%20/g,\"+\")].join(\"\"))\n    }\n  }\n  return formArr.join(\"&\")\n}\n\n// Is this really required as a helper? Perhaps. TODO: expose the system of presets.apis in docs, so we know what is supported\nexport const shallowEqualKeys = (a,b, keys) => {\n  return !!find(keys, (key) => {\n    return eq(a[key], b[key])\n  })\n}\n\nexport function sanitizeUrl(url) {\n  if(typeof url !== \"string\" || url === \"\") {\n    return \"\"\n  }\n\n  return braintreeSanitizeUrl(url)\n}\n\nexport function requiresValidationURL(uri) {\n  if (!uri || uri.indexOf(\"localhost\") >= 0 || uri.indexOf(\"127.0.0.1\") >= 0 || uri === \"none\") {\n    return false\n  }\n  return true\n}\n\n\nexport function getAcceptControllingResponse(responses) {\n  if(!Im.OrderedMap.isOrderedMap(responses)) {\n    // wrong type!\n    return null\n  }\n\n  if(!responses.size) {\n    // responses is empty\n    return null\n  }\n\n  const suitable2xxResponse = responses.find((res, k) => {\n    return k.startsWith(\"2\") && Object.keys(res.get(\"content\") || {}).length > 0\n  })\n\n  // try to find a suitable `default` responses\n  const defaultResponse = responses.get(\"default\") || Im.OrderedMap()\n  const defaultResponseMediaTypes = (defaultResponse.get(\"content\") || Im.OrderedMap()).keySeq().toJS()\n  const suitableDefaultResponse = defaultResponseMediaTypes.length ? defaultResponse : null\n\n  return suitable2xxResponse || suitableDefaultResponse\n}\n\n// suitable for use in URL fragments\nexport const createDeepLinkPath = (str) => typeof str == \"string\" || str instanceof String ? str.trim().replace(/\\s/g, \"%20\") : \"\"\n// suitable for use in CSS classes and ids\nexport const escapeDeepLinkPath = (str) => cssEscape( createDeepLinkPath(str).replace(/%20/g, \"_\") )\n\nexport const getExtensions = (defObj) => defObj.filter((v, k) => /^x-/.test(k))\nexport const getCommonExtensions = (defObj) => defObj.filter((v, k) => /^pattern|maxLength|minLength|maximum|minimum/.test(k))\n\n// Deeply strips a specific key from an object.\n//\n// `predicate` can be used to discriminate the stripping further,\n// by preserving the key's place in the object based on its value.\nexport function deeplyStripKey(input, keyToStrip, predicate = () => true) {\n  if(typeof input !== \"object\" || Array.isArray(input) || input === null || !keyToStrip) {\n    return input\n  }\n\n  const obj = Object.assign({}, input)\n\n  Object.keys(obj).forEach(k => {\n    if(k === keyToStrip && predicate(obj[k], k)) {\n      delete obj[k]\n      return\n    }\n    obj[k] = deeplyStripKey(obj[k], keyToStrip, predicate)\n  })\n\n  return obj\n}\n\nexport function stringify(thing) {\n  if (typeof thing === \"string\") {\n    return thing\n  }\n\n  if (thing && thing.toJS) {\n    thing = thing.toJS()\n  }\n\n  if (typeof thing === \"object\" && thing !== null) {\n    try {\n      return JSON.stringify(thing, null, 2)\n    }\n    catch (e) {\n      return String(thing)\n    }\n  }\n\n  if(thing === null || thing === undefined) {\n    return \"\"\n  }\n\n  return thing.toString()\n}\n\nexport function numberToString(thing) {\n  if(typeof thing === \"number\") {\n    return thing.toString()\n  }\n\n  return thing\n}\n\nexport function paramToIdentifier(param, { returnAll = false, allowHashes = true } = {}) {\n  if(!Im.Map.isMap(param)) {\n    throw new Error(\"paramToIdentifier: received a non-Im.Map parameter as input\")\n  }\n  const paramName = param.get(\"name\")\n  const paramIn = param.get(\"in\")\n\n  let generatedIdentifiers = []\n\n  // Generate identifiers in order of most to least specificity\n\n  if (param && param.hashCode && paramIn && paramName && allowHashes) {\n    generatedIdentifiers.push(`${paramIn}.${paramName}.hash-${param.hashCode()}`)\n  }\n\n  if(paramIn && paramName) {\n    generatedIdentifiers.push(`${paramIn}.${paramName}`)\n  }\n\n  generatedIdentifiers.push(paramName)\n\n  // Return the most preferred identifier, or all if requested\n\n  return returnAll ? generatedIdentifiers : (generatedIdentifiers[0] || \"\")\n}\n\nexport function paramToValue(param, paramValues) {\n  const allIdentifiers = paramToIdentifier(param, { returnAll: true })\n\n  // Map identifiers to values in the provided value hash, filter undefined values,\n  // and return the first value found\n  const values = allIdentifiers\n    .map(id => {\n      return paramValues[id]\n    })\n    .filter(value => value !== undefined)\n\n  return values[0]\n}\n\n// adapted from https://auth0.com/docs/flows/guides/auth-code-pkce/includes/create-code-verifier\nexport function generateCodeVerifier() {\n  return b64toB64UrlEncoded(\n    randomBytes(32).toString(\"base64\")\n  )\n}\n\nexport function createCodeChallenge(codeVerifier) {\n  return b64toB64UrlEncoded(\n      shaJs(\"sha256\")\n      .update(codeVerifier)\n      .digest(\"base64\")\n    )\n}\n\nfunction b64toB64UrlEncoded(str) {\n  return str\n    .replace(/\\+/g, \"-\")\n    .replace(/\\//g, \"_\")\n    .replace(/=/g, \"\")\n}\n\nexport const isEmptyValue = (value) => {\n  if (!value) {\n    return true\n  }\n\n  if (isImmutable(value) && value.isEmpty()) {\n    return true\n  }\n\n  return false\n}\n", "var _Object$create = require(\"@babel/runtime-corejs3/core-js/object/create\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = _Object$create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n\n  _Object$defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _Reflect$construct = require(\"@babel/runtime-corejs3/core-js/reflect/construct\");\n\nvar getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = _Reflect$construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return possibleConstructorReturn(this, result);\n  };\n}\n\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "/**\n * Copyright (c) 2013-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\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "module.exports = require(\"core-js-pure/stable/instance/filter\");", "var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/stable/object/keys\");", "'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n  var Wrapper = function (a, b, c) {\n    if (this instanceof Wrapper) {\n      switch (arguments.length) {\n        case 0: return new NativeConstructor();\n        case 1: return new NativeConstructor(a);\n        case 2: return new NativeConstructor(a, b);\n      } return new NativeConstructor(a, b, c);\n    } return apply(NativeConstructor, this, arguments);\n  };\n  Wrapper.prototype = NativeConstructor.prototype;\n  return Wrapper;\n};\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.noTargetGet - 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 PROTO = options.proto;\n\n  var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n  var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n  var targetPrototype = target.prototype;\n\n  var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n  var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n  for (key in source) {\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contains in native\n    USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n    targetProperty = target[key];\n\n    if (USE_NATIVE) if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(nativeSource, key);\n      nativeProperty = descriptor && descriptor.value;\n    } else nativeProperty = nativeSource[key];\n\n    // export native or implementation\n    sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n    if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n    // bind timers to global for call from export context\n    if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n    // wrap global constructors for prevent changs in this version\n    else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n    // make static versions for prototype methods\n    else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n    // default case\n    else resultProperty = sourceProperty;\n\n    // add a flag to not completely full polyfills\n    if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(resultProperty, 'sham', true);\n    }\n\n    createNonEnumerableProperty(target, key, resultProperty);\n\n    if (PROTO) {\n      VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n      if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n        createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n      }\n      // export virtual prototype methods\n      createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n      // export real prototype methods\n      if (options.real && targetPrototype && !targetPrototype[key]) {\n        createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n      }\n    }\n  }\n};\n", "var 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  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n", "// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n  var entry;\n  return {\n    get: function get(key) {\n      if (entry && equals(entry.key, key)) {\n        return entry.value;\n      }\n\n      return NOT_FOUND;\n    },\n    put: function put(key, value) {\n      entry = {\n        key: key,\n        value: value\n      };\n    },\n    getEntries: function getEntries() {\n      return entry ? [entry] : [];\n    },\n    clear: function clear() {\n      entry = undefined;\n    }\n  };\n}\n\nfunction createLruCache(maxSize, equals) {\n  var entries = [];\n\n  function get(key) {\n    var cacheIndex = entries.findIndex(function (entry) {\n      return equals(key, entry.key);\n    }); // We found a cached entry\n\n    if (cacheIndex > -1) {\n      var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n      if (cacheIndex > 0) {\n        entries.splice(cacheIndex, 1);\n        entries.unshift(entry);\n      }\n\n      return entry.value;\n    } // No entry found in cache, return sentinel\n\n\n    return NOT_FOUND;\n  }\n\n  function put(key, value) {\n    if (get(key) === NOT_FOUND) {\n      // TODO Is unshift slow?\n      entries.unshift({\n        key: key,\n        value: value\n      });\n\n      if (entries.length > maxSize) {\n        entries.pop();\n      }\n    }\n  }\n\n  function getEntries() {\n    return entries;\n  }\n\n  function clear() {\n    entries = [];\n  }\n\n  return {\n    get: get,\n    put: put,\n    getEntries: getEntries,\n    clear: clear\n  };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n  return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n  return function areArgumentsShallowlyEqual(prev, next) {\n    if (prev === null || next === null || prev.length !== next.length) {\n      return false;\n    } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n    var length = prev.length;\n\n    for (var i = 0; i < length; i++) {\n      if (!equalityCheck(prev[i], next[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n  var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n    equalityCheck: equalityCheckOrOptions\n  };\n  var _providedOptions$equa = providedOptions.equalityCheck,\n      equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n      _providedOptions$maxS = providedOptions.maxSize,\n      maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n      resultEqualityCheck = providedOptions.resultEqualityCheck;\n  var comparator = createCacheKeyComparator(equalityCheck);\n  var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n  function memoized() {\n    var value = cache.get(arguments);\n\n    if (value === NOT_FOUND) {\n      // @ts-ignore\n      value = func.apply(null, arguments);\n\n      if (resultEqualityCheck) {\n        var entries = cache.getEntries();\n        var matchingEntry = entries.find(function (entry) {\n          return resultEqualityCheck(entry.value, value);\n        });\n\n        if (matchingEntry) {\n          value = matchingEntry.value;\n        }\n      }\n\n      cache.put(arguments, value);\n    }\n\n    return value;\n  }\n\n  memoized.clearCache = function () {\n    return cache.clear();\n  };\n\n  return memoized;\n}", "import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n    }).join(', ');\n    throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n  }\n\n  return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n  }\n\n  var createSelector = function createSelector() {\n    for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var _recomputations = 0;\n\n    var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n    // So, start by declaring the default value here.\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n    var directlyPassedOptions = {\n      memoizeOptions: undefined\n    }; // Normally, the result func or \"output selector\" is the last arg\n\n    var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n    if (typeof resultFunc === 'object') {\n      directlyPassedOptions = resultFunc; // and pop the real result func off\n\n      resultFunc = funcs.pop();\n    }\n\n    if (typeof resultFunc !== 'function') {\n      throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n    } // Determine which set of options we're using. Prefer options passed directly,\n    // but fall back to options given to createSelectorCreator.\n\n\n    var _directlyPassedOption = directlyPassedOptions,\n        _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n        memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n    // is an array. In most libs I've looked at, it's an equality function or options object.\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n    // we wrap it in an array so we can apply it.\n\n    var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n    var dependencies = getDependencies(funcs);\n    var memoizedResultFunc = memoize.apply(void 0, [function () {\n      _recomputations++; // apply arguments instead of spreading for performance.\n\n      return resultFunc.apply(null, arguments);\n    }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n    var selector = memoize(function () {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        // @ts-ignore\n        params.push(dependencies[i].apply(null, arguments));\n      } // apply arguments instead of spreading for performance.\n\n\n      _lastResult = memoizedResultFunc.apply(null, params);\n      return _lastResult;\n    });\n    Object.assign(selector, {\n      resultFunc: resultFunc,\n      memoizedResultFunc: memoizedResultFunc,\n      dependencies: dependencies,\n      lastResult: function lastResult() {\n        return _lastResult;\n      },\n      recomputations: function recomputations() {\n        return _recomputations;\n      },\n      resetRecomputations: function resetRecomputations() {\n        return _recomputations = 0;\n      }\n    });\n    return selector;\n  }; // @ts-ignore\n\n\n  return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n  if (selectorCreator === void 0) {\n    selectorCreator = createSelector;\n  }\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n  }\n\n  var objectKeys = Object.keys(selectors);\n  var resultSelector = selectorCreator( // @ts-ignore\n  objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n  return resultSelector;\n};", "var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _Symbol$iterator = require(\"@babel/runtime-corejs3/core-js/symbol/iterator\");\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof _Symbol && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/stable/instance/index-of\");", "module.exports = require(\"core-js-pure/stable/instance/slice\");", "module.exports = require(\"core-js-pure/stable/array/is-array\");", "module.exports = require(\"core-js-pure/stable/instance/for-each\");", "module.exports = require(\"core-js-pure/stable/object/assign\");", "var _Object$keys = require(\"@babel/runtime-corejs3/core-js/object/keys\");\n\nvar _Object$getOwnPropertySymbols = require(\"@babel/runtime-corejs3/core-js/object/get-own-property-symbols\");\n\nvar _filterInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/filter\");\n\nvar _Object$getOwnPropertyDescriptor = require(\"@babel/runtime-corejs3/core-js/object/get-own-property-descriptor\");\n\nvar _forEachInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/for-each\");\n\nvar _Object$getOwnPropertyDescriptors = require(\"@babel/runtime-corejs3/core-js/object/get-own-property-descriptors\");\n\nvar _Object$defineProperties = require(\"@babel/runtime-corejs3/core-js/object/define-properties\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nvar defineProperty = require(\"./defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = _Object$keys(object);\n\n  if (_Object$getOwnPropertySymbols) {\n    var symbols = _Object$getOwnPropertySymbols(object);\n\n    enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) {\n      return _Object$getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var _context, _context2;\n\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) {\n      defineProperty(target, key, source[key]);\n    }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) {\n      _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}\n\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _Object$assign = require(\"@babel/runtime-corejs3/core-js/object/assign\");\n\nfunction _extends() {\n  module.exports = _extends = _Object$assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function makeWindow() {\n  var win = {\n    location: {},\n    history: {},\n    open: () => {},\n    close: () => {},\n    File: function() {}\n  }\n\n  if(typeof window === \"undefined\") {\n    return win\n  }\n\n  try {\n    win = window\n    var props = [\"File\", \"Blob\", \"FormData\"]\n    for (var prop of props) {\n      if (prop in window) {\n        win[prop] = window[prop]\n      }\n    }\n  } catch( e ) {\n    console.error(e)\n  }\n\n  return win\n}\n\nexport default makeWindow()\n", "var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n  return fn && uncurryThis(fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n", "/**\n * This is a straight rip-off of the React.js ReactPropTypes.js proptype validators,\n * modified to make it possible to validate Immutable.js data.\n *     ImmutableTypes.listOf is patterned after React.PropTypes.arrayOf, but for Immutable.List\n *     ImmutableTypes.shape  is based on React.PropTypes.shape, but for any Immutable.Iterable\n */\n\"use strict\";\n\nvar Immutable = require(\"immutable\");\n\nvar ANONYMOUS = \"<<anonymous>>\";\n\nvar ImmutablePropTypes;\n\nif (process.env.NODE_ENV !== \"production\") {\n  ImmutablePropTypes = {\n    listOf: createListOfTypeChecker,\n    mapOf: createMapOfTypeChecker,\n    orderedMapOf: createOrderedMapOfTypeChecker,\n    setOf: createSetOfTypeChecker,\n    orderedSetOf: createOrderedSetOfTypeChecker,\n    stackOf: createStackOfTypeChecker,\n    iterableOf: createIterableOfTypeChecker,\n    recordOf: createRecordOfTypeChecker,\n    shape: createShapeChecker,\n    contains: createShapeChecker,\n    mapContains: createMapContainsChecker,\n    orderedMapContains: createOrderedMapContainsChecker,\n    // Primitive Types\n    list: createImmutableTypeChecker(\"List\", Immutable.List.isList),\n    map: createImmutableTypeChecker(\"Map\", Immutable.Map.isMap),\n    orderedMap: createImmutableTypeChecker(\"OrderedMap\", Immutable.OrderedMap.isOrderedMap),\n    set: createImmutableTypeChecker(\"Set\", Immutable.Set.isSet),\n    orderedSet: createImmutableTypeChecker(\"OrderedSet\", Immutable.OrderedSet.isOrderedSet),\n    stack: createImmutableTypeChecker(\"Stack\", Immutable.Stack.isStack),\n    seq: createImmutableTypeChecker(\"Seq\", Immutable.Seq.isSeq),\n    record: createImmutableTypeChecker(\"Record\", function (isRecord) {\n      return isRecord instanceof Immutable.Record;\n    }),\n    iterable: createImmutableTypeChecker(\"Iterable\", Immutable.Iterable.isIterable)\n  };\n} else {\n  var productionTypeChecker = function productionTypeChecker() {\n    invariant(false, \"ImmutablePropTypes type checking code is stripped in production.\");\n  };\n  productionTypeChecker.isRequired = productionTypeChecker;\n  var getProductionTypeChecker = function getProductionTypeChecker() {\n    return productionTypeChecker;\n  };\n\n  ImmutablePropTypes = {\n    listOf: getProductionTypeChecker,\n    mapOf: getProductionTypeChecker,\n    orderedMapOf: getProductionTypeChecker,\n    setOf: getProductionTypeChecker,\n    orderedSetOf: getProductionTypeChecker,\n    stackOf: getProductionTypeChecker,\n    iterableOf: getProductionTypeChecker,\n    recordOf: getProductionTypeChecker,\n    shape: getProductionTypeChecker,\n    contains: getProductionTypeChecker,\n    mapContains: getProductionTypeChecker,\n    orderedMapContains: getProductionTypeChecker,\n    // Primitive Types\n    list: productionTypeChecker,\n    map: productionTypeChecker,\n    orderedMap: productionTypeChecker,\n    set: productionTypeChecker,\n    orderedSet: productionTypeChecker,\n    stack: productionTypeChecker,\n    seq: productionTypeChecker,\n    record: productionTypeChecker,\n    iterable: productionTypeChecker\n  };\n}\n\nImmutablePropTypes.iterable.indexed = createIterableSubclassTypeChecker(\"Indexed\", Immutable.Iterable.isIndexed);\nImmutablePropTypes.iterable.keyed = createIterableSubclassTypeChecker(\"Keyed\", Immutable.Iterable.isKeyed);\n\nfunction getPropType(propValue) {\n  var propType = typeof propValue;\n  if (Array.isArray(propValue)) {\n    return \"array\";\n  }\n  if (propValue instanceof RegExp) {\n    // Old webkits (at least until Android 4.0) return 'function' rather than\n    // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n    // passes PropTypes.object.\n    return \"object\";\n  }\n  if (propValue instanceof Immutable.Iterable) {\n    return \"Immutable.\" + propValue.toSource().split(\" \")[0];\n  }\n  return propType;\n}\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    for (var _len = arguments.length, rest = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      rest[_key - 6] = arguments[_key];\n    }\n\n    propFullName = propFullName || propName;\n    componentName = componentName || ANONYMOUS;\n    if (props[propName] == null) {\n      var locationName = location;\n      if (isRequired) {\n        return new Error(\"Required \" + locationName + \" `\" + propFullName + \"` was not specified in \" + (\"`\" + componentName + \"`.\"));\n      }\n    } else {\n      return validate.apply(undefined, [props, propName, componentName, location, propFullName].concat(rest));\n    }\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n\n  return chainedCheckType;\n}\n\nfunction createImmutableTypeChecker(immutableClassName, immutableClassTypeValidator) {\n  function validate(props, propName, componentName, location, propFullName) {\n    var propValue = props[propName];\n    if (!immutableClassTypeValidator(propValue)) {\n      var propType = getPropType(propValue);\n      return new Error(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `\" + immutableClassName + \"`.\"));\n    }\n    return null;\n  }\n  return createChainableTypeChecker(validate);\n}\n\nfunction createIterableSubclassTypeChecker(subclassName, validator) {\n  return createImmutableTypeChecker(\"Iterable.\" + subclassName, function (propValue) {\n    return Immutable.Iterable.isIterable(propValue) && validator(propValue);\n  });\n}\n\nfunction createIterableTypeChecker(typeChecker, immutableClassName, immutableClassTypeValidator) {\n\n  function validate(props, propName, componentName, location, propFullName) {\n    for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      rest[_key - 5] = arguments[_key];\n    }\n\n    var propValue = props[propName];\n    if (!immutableClassTypeValidator(propValue)) {\n      var locationName = location;\n      var propType = getPropType(propValue);\n      return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n    }\n\n    if (typeof typeChecker !== \"function\") {\n      return new Error(\"Invalid typeChecker supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n    }\n\n    var propValues = propValue.valueSeq().toArray();\n    for (var i = 0, len = propValues.length; i < len; i++) {\n      var error = typeChecker.apply(undefined, [propValues, i, componentName, location, \"\" + propFullName + \"[\" + i + \"]\"].concat(rest));\n      if (error instanceof Error) {\n        return error;\n      }\n    }\n  }\n  return createChainableTypeChecker(validate);\n}\n\nfunction createKeysTypeChecker(typeChecker) {\n\n  function validate(props, propName, componentName, location, propFullName) {\n    for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      rest[_key - 5] = arguments[_key];\n    }\n\n    var propValue = props[propName];\n    if (typeof typeChecker !== \"function\") {\n      return new Error(\"Invalid keysTypeChecker (optional second argument) supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n    }\n\n    var keys = propValue.keySeq().toArray();\n    for (var i = 0, len = keys.length; i < len; i++) {\n      var error = typeChecker.apply(undefined, [keys, i, componentName, location, \"\" + propFullName + \" -> key(\" + keys[i] + \")\"].concat(rest));\n      if (error instanceof Error) {\n        return error;\n      }\n    }\n  }\n  return createChainableTypeChecker(validate);\n}\n\nfunction createListOfTypeChecker(typeChecker) {\n  return createIterableTypeChecker(typeChecker, \"List\", Immutable.List.isList);\n}\n\nfunction createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, immutableClassName, immutableClassTypeValidator) {\n  function validate() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return createIterableTypeChecker(valuesTypeChecker, immutableClassName, immutableClassTypeValidator).apply(undefined, args) || keysTypeChecker && createKeysTypeChecker(keysTypeChecker).apply(undefined, args);\n  }\n\n  return createChainableTypeChecker(validate);\n}\n\nfunction createMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n  return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"Map\", Immutable.Map.isMap);\n}\n\nfunction createOrderedMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n  return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"OrderedMap\", Immutable.OrderedMap.isOrderedMap);\n}\n\nfunction createSetOfTypeChecker(typeChecker) {\n  return createIterableTypeChecker(typeChecker, \"Set\", Immutable.Set.isSet);\n}\n\nfunction createOrderedSetOfTypeChecker(typeChecker) {\n  return createIterableTypeChecker(typeChecker, \"OrderedSet\", Immutable.OrderedSet.isOrderedSet);\n}\n\nfunction createStackOfTypeChecker(typeChecker) {\n  return createIterableTypeChecker(typeChecker, \"Stack\", Immutable.Stack.isStack);\n}\n\nfunction createIterableOfTypeChecker(typeChecker) {\n  return createIterableTypeChecker(typeChecker, \"Iterable\", Immutable.Iterable.isIterable);\n}\n\nfunction createRecordOfTypeChecker(recordKeys) {\n  function validate(props, propName, componentName, location, propFullName) {\n    for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      rest[_key - 5] = arguments[_key];\n    }\n\n    var propValue = props[propName];\n    if (!(propValue instanceof Immutable.Record)) {\n      var propType = getPropType(propValue);\n      var locationName = location;\n      return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js Record.\"));\n    }\n    for (var key in recordKeys) {\n      var checker = recordKeys[key];\n      if (!checker) {\n        continue;\n      }\n      var mutablePropValue = propValue.toObject();\n      var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n      if (error) {\n        return error;\n      }\n    }\n  }\n  return createChainableTypeChecker(validate);\n}\n\n// there is some irony in the fact that shapeTypes is a standard hash and not an immutable collection\nfunction createShapeTypeChecker(shapeTypes) {\n  var immutableClassName = arguments[1] === undefined ? \"Iterable\" : arguments[1];\n  var immutableClassTypeValidator = arguments[2] === undefined ? Immutable.Iterable.isIterable : arguments[2];\n\n  function validate(props, propName, componentName, location, propFullName) {\n    for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      rest[_key - 5] = arguments[_key];\n    }\n\n    var propValue = props[propName];\n    if (!immutableClassTypeValidator(propValue)) {\n      var propType = getPropType(propValue);\n      var locationName = location;\n      return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n    }\n    var mutablePropValue = propValue.toObject();\n    for (var key in shapeTypes) {\n      var checker = shapeTypes[key];\n      if (!checker) {\n        continue;\n      }\n      var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n      if (error) {\n        return error;\n      }\n    }\n  }\n  return createChainableTypeChecker(validate);\n}\n\nfunction createShapeChecker(shapeTypes) {\n  return createShapeTypeChecker(shapeTypes);\n}\n\nfunction createMapContainsChecker(shapeTypes) {\n  return createShapeTypeChecker(shapeTypes, \"Map\", Immutable.Map.isMap);\n}\n\nfunction createOrderedMapContainsChecker(shapeTypes) {\n  return createShapeTypeChecker(shapeTypes, \"OrderedMap\", Immutable.OrderedMap.isOrderedMap);\n}\n\nmodule.exports = ImmutablePropTypes;", "module.exports = require(\"core-js-pure/stable/json/stringify\");", "module.exports = require(\"core-js-pure/stable/instance/reduce\");", "module.exports = require(\"core-js-pure/stable/instance/includes\");", "var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n", "module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "module.exports = {};\n", "var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n", "var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n", "module.exports = true;\n", "import React from \"react\"\n\nexport function isOAS3(jsSpec) {\n  const oasVersion = jsSpec.get(\"openapi\")\n  if(typeof oasVersion !== \"string\") {\n    return false\n  }\n\n  // we gate against `3.1` becasue we want to explicitly opt into supporting it\n  // at some point in the future -- KS, 7/2018\n\n  // starts with, but is not `3.0.` exactly\n  return oasVersion.startsWith(\"3.0.\") && oasVersion.length > 4\n}\n\nexport function isSwagger2(jsSpec) {\n  const swaggerVersion = jsSpec.get(\"swagger\")\n  if(typeof swaggerVersion !== \"string\") {\n    return false\n  }\n\n  return swaggerVersion.startsWith(\"2.0\")\n}\n\nexport function OAS3ComponentWrapFactory(Component) {\n  return (Ori, system) => (props) => {\n    if(system && system.specSelectors && system.specSelectors.specJson) {\n      const spec = system.specSelectors.specJson()\n\n      if(isOAS3(spec)) {\n        return <Component {...props} {...system} Ori={Ori}></Component>\n      } else {\n        return <Ori {...props}></Ori>\n      }\n    } else {\n      console.warn(\"OAS3 wrapper: couldn't get spec\")\n      return null\n    }\n  }\n}\n", "var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n", "var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n  return path[CONSTRUCTOR + 'Prototype'];\n};\n", "// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n", "var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n", "module.exports = require(\"regenerator-runtime\");\n", "var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n", "var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n", "var 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\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n", "var 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", "var global = require('../internals/global');\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 = global.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_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_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw 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 = 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", "module.exports = require(\"core-js-pure/stable/instance/bind\");", "var 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", "module.exports = require(\"core-js-pure/stable/instance/find\");", "import YAML from \"js-yaml\"\nimport { Map } from \"immutable\"\nimport parseUrl from \"url-parse\"\nimport { serializeError } from \"serialize-error\"\nimport isString from \"lodash/isString\"\nimport debounce from \"lodash/debounce\"\nimport set from \"lodash/set\"\nimport { paramToValue, isEmptyValue } from \"core/utils\"\n\n// Actions conform to FSA (flux-standard-actions)\n// {type: string,payload: Any|Error, meta: obj, error: bool}\n\nexport const UPDATE_SPEC = \"spec_update_spec\"\nexport const UPDATE_URL = \"spec_update_url\"\nexport const UPDATE_JSON = \"spec_update_json\"\nexport const UPDATE_PARAM = \"spec_update_param\"\nexport const UPDATE_EMPTY_PARAM_INCLUSION = \"spec_update_empty_param_inclusion\"\nexport const VALIDATE_PARAMS = \"spec_validate_param\"\nexport const SET_RESPONSE = \"spec_set_response\"\nexport const SET_REQUEST = \"spec_set_request\"\nexport const SET_MUTATED_REQUEST = \"spec_set_mutated_request\"\nexport const LOG_REQUEST = \"spec_log_request\"\nexport const CLEAR_RESPONSE = \"spec_clear_response\"\nexport const CLEAR_REQUEST = \"spec_clear_request\"\nexport const CLEAR_VALIDATE_PARAMS = \"spec_clear_validate_param\"\nexport const UPDATE_OPERATION_META_VALUE = \"spec_update_operation_meta_value\"\nexport const UPDATE_RESOLVED = \"spec_update_resolved\"\nexport const UPDATE_RESOLVED_SUBTREE = \"spec_update_resolved_subtree\"\nexport const SET_SCHEME = \"set_scheme\"\n\nconst toStr = (str) => isString(str) ? str : \"\"\n\nexport function updateSpec(spec) {\n  const cleanSpec = (toStr(spec)).replace(/\\t/g, \"  \")\n  if(typeof spec === \"string\") {\n    return {\n      type: UPDATE_SPEC,\n      payload: cleanSpec\n    }\n  }\n}\n\nexport function updateResolved(spec) {\n  return {\n    type: UPDATE_RESOLVED,\n    payload: spec\n  }\n}\n\nexport function updateUrl(url) {\n  return {type: UPDATE_URL, payload: url}\n}\n\nexport function updateJsonSpec(json) {\n  return {type: UPDATE_JSON, payload: json}\n}\n\nexport const parseToJson = (str) => ({specActions, specSelectors, errActions}) => {\n  let { specStr } = specSelectors\n\n  let json = null\n  try {\n    str = str || specStr()\n    errActions.clear({ source: \"parser\" })\n    json = YAML.load(str)\n  } catch(e) {\n    // TODO: push error to state\n    console.error(e)\n    return errActions.newSpecErr({\n      source: \"parser\",\n      level: \"error\",\n      message: e.reason,\n      line: e.mark && e.mark.line ? e.mark.line + 1 : undefined\n    })\n  }\n  if(json && typeof json === \"object\") {\n    return specActions.updateJsonSpec(json)\n  }\n  return {}\n}\n\nlet hasWarnedAboutResolveSpecDeprecation = false\n\nexport const resolveSpec = (json, url) => ({specActions, specSelectors, errActions, fn: { fetch, resolve, AST = {} }, getConfigs}) => {\n  if(!hasWarnedAboutResolveSpecDeprecation) {\n    console.warn(`specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!`)\n    hasWarnedAboutResolveSpecDeprecation = true\n  }\n\n  const {\n    modelPropertyMacro,\n    parameterMacro,\n    requestInterceptor,\n    responseInterceptor\n  } = getConfigs()\n\n  if(typeof(json) === \"undefined\") {\n    json = specSelectors.specJson()\n  }\n  if(typeof(url) === \"undefined\") {\n    url = specSelectors.url()\n  }\n\n  let getLineNumberForPath = AST.getLineNumberForPath ? AST.getLineNumberForPath : () => undefined\n\n  let specStr = specSelectors.specStr()\n\n  return resolve({\n    fetch,\n    spec: json,\n    baseDoc: url,\n    modelPropertyMacro,\n    parameterMacro,\n    requestInterceptor,\n    responseInterceptor\n  }).then( ({spec, errors}) => {\n      errActions.clear({\n        type: \"thrown\"\n      })\n      if(Array.isArray(errors) && errors.length > 0) {\n        let preparedErrors = errors\n          .map(err => {\n            console.error(err)\n            err.line = err.fullPath ? getLineNumberForPath(specStr, err.fullPath) : null\n            err.path = err.fullPath ? err.fullPath.join(\".\") : null\n            err.level = \"error\"\n            err.type = \"thrown\"\n            err.source = \"resolver\"\n            Object.defineProperty(err, \"message\", { enumerable: true, value: err.message })\n            return err\n          })\n        errActions.newThrownErrBatch(preparedErrors)\n      }\n\n      return specActions.updateResolved(spec)\n    })\n}\n\nlet requestBatch = []\n\nconst debResolveSubtrees = debounce(async () => {\n  const system = requestBatch.system // Just a reference to the \"latest\" system\n\n  if(!system) {\n    console.error(\"debResolveSubtrees: don't have a system to operate on, aborting.\")\n    return\n  }\n    const {\n      errActions,\n      errSelectors,\n      fn: {\n        resolveSubtree,\n        fetch,\n        AST = {}\n      },\n      specSelectors,\n      specActions,\n    } = system\n\n  if(!resolveSubtree) {\n    console.error(\"Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.\")\n    return\n  }\n\n  let getLineNumberForPath = AST.getLineNumberForPath ? AST.getLineNumberForPath : () => undefined\n\n  const specStr = specSelectors.specStr()\n\n  const {\n    modelPropertyMacro,\n    parameterMacro,\n    requestInterceptor,\n    responseInterceptor\n  } = system.getConfigs()\n\n  try {\n    var batchResult = await requestBatch.reduce(async (prev, path) => {\n      const { resultMap, specWithCurrentSubtrees } = await prev\n      const { errors, spec } = await resolveSubtree(specWithCurrentSubtrees, path, {\n        baseDoc: specSelectors.url(),\n        modelPropertyMacro,\n        parameterMacro,\n        requestInterceptor,\n        responseInterceptor\n      })\n\n      if(errSelectors.allErrors().size) {\n        errActions.clearBy(err => {\n          // keep if...\n          return err.get(\"type\") !== \"thrown\" // it's not a thrown error\n            || err.get(\"source\") !== \"resolver\" // it's not a resolver error\n            || !err.get(\"fullPath\").every((key, i) => key === path[i] || path[i] === undefined) // it's not within the path we're resolving\n        })\n      }\n\n      if(Array.isArray(errors) && errors.length > 0) {\n        let preparedErrors = errors\n          .map(err => {\n            err.line = err.fullPath ? getLineNumberForPath(specStr, err.fullPath) : null\n            err.path = err.fullPath ? err.fullPath.join(\".\") : null\n            err.level = \"error\"\n            err.type = \"thrown\"\n            err.source = \"resolver\"\n            Object.defineProperty(err, \"message\", { enumerable: true, value: err.message })\n            return err\n          })\n        errActions.newThrownErrBatch(preparedErrors)\n      }\n\n      if (spec && specSelectors.isOAS3() && path[0] === \"components\" && path[1] === \"securitySchemes\") {\n        // Resolve OIDC URLs if present\n        await Promise.all(Object.values(spec)\n          .filter((scheme) => scheme.type === \"openIdConnect\")\n          .map(async (oidcScheme) => {\n            const req = {\n              url: oidcScheme.openIdConnectUrl,\n              requestInterceptor: requestInterceptor,\n              responseInterceptor: responseInterceptor\n            }\n            try {\n              const res = await fetch(req)\n              if (res instanceof Error || res.status >= 400) {\n                console.error(res.statusText + \" \" + req.url)\n              } else {\n                oidcScheme.openIdConnectData = JSON.parse(res.text)\n              }\n            } catch (e) {\n              console.error(e)\n            }\n          }))\n      }\n      set(resultMap, path, spec)\n      set(specWithCurrentSubtrees, path, spec)\n\n      return {\n        resultMap,\n        specWithCurrentSubtrees\n      }\n    }, Promise.resolve({\n      resultMap: (specSelectors.specResolvedSubtree([]) || Map()).toJS(),\n      specWithCurrentSubtrees: specSelectors.specJson().toJS()\n    }))\n\n    delete requestBatch.system\n    requestBatch = [] // Clear stack\n  } catch(e) {\n    console.error(e)\n  }\n\n  specActions.updateResolvedSubtree([], batchResult.resultMap)\n}, 35)\n\nexport const requestResolvedSubtree = path => system => {\n  // poor-man's array comparison\n  // if this ever inadequate, this should be rewritten to use Im.List\n  const isPathAlreadyBatched = requestBatch\n    .map(arr => arr.join(\"@@\"))\n    .indexOf(path.join(\"@@\")) > -1\n\n  if(isPathAlreadyBatched) {\n    return\n  }\n\n  requestBatch.push(path)\n  requestBatch.system = system\n  debResolveSubtrees()\n}\n\nexport function changeParam( path, paramName, paramIn, value, isXml ){\n  return {\n    type: UPDATE_PARAM,\n    payload:{ path, value, paramName, paramIn, isXml }\n  }\n}\n\nexport function changeParamByIdentity( pathMethod, param, value, isXml ){\n  return {\n    type: UPDATE_PARAM,\n    payload:{ path: pathMethod, param, value, isXml }\n  }\n}\n\nexport const updateResolvedSubtree = (path, value) => {\n  return {\n    type: UPDATE_RESOLVED_SUBTREE,\n    payload: { path, value }\n  }\n}\n\nexport const invalidateResolvedSubtreeCache = () => {\n  return {\n    type: UPDATE_RESOLVED_SUBTREE,\n    payload: {\n      path: [],\n      value: Map()\n    }\n  }\n}\n\nexport const validateParams = ( payload, isOAS3 ) =>{\n  return {\n    type: VALIDATE_PARAMS,\n    payload:{\n      pathMethod: payload,\n      isOAS3\n    }\n  }\n}\n\nexport const updateEmptyParamInclusion = ( pathMethod, paramName, paramIn, includeEmptyValue ) =>{\n  return {\n    type: UPDATE_EMPTY_PARAM_INCLUSION,\n    payload:{\n      pathMethod,\n      paramName,\n      paramIn,\n      includeEmptyValue\n    }\n  }\n}\n\nexport function clearValidateParams( payload ){\n  return {\n    type: CLEAR_VALIDATE_PARAMS,\n    payload:{ pathMethod: payload }\n  }\n}\n\nexport function changeConsumesValue(path, value) {\n  return {\n    type: UPDATE_OPERATION_META_VALUE,\n    payload:{ path, value, key: \"consumes_value\" }\n  }\n}\n\nexport function changeProducesValue(path, value) {\n  return {\n    type: UPDATE_OPERATION_META_VALUE,\n    payload:{ path, value, key: \"produces_value\" }\n  }\n}\n\nexport const setResponse = ( path, method, res ) => {\n  return {\n    payload: { path, method, res },\n    type: SET_RESPONSE\n  }\n}\n\nexport const setRequest = ( path, method, req ) => {\n  return {\n    payload: { path, method, req },\n    type: SET_REQUEST\n  }\n}\n\nexport const setMutatedRequest = ( path, method, req ) => {\n  return {\n    payload: { path, method, req },\n    type: SET_MUTATED_REQUEST\n  }\n}\n\n// This is for debugging, remove this comment if you depend on this action\nexport const logRequest = (req) => {\n  return {\n    payload: req,\n    type: LOG_REQUEST\n  }\n}\n\n// Actually fire the request via fn.execute\n// (For debugging) and ease of testing\nexport const executeRequest = (req) =>\n  ({fn, specActions, specSelectors, getConfigs, oas3Selectors}) => {\n    let { pathName, method, operation } = req\n    let { requestInterceptor, responseInterceptor } = getConfigs()\n\n\n    let op = operation.toJS()\n\n    // ensure that explicitly-included params are in the request\n\n    if (operation && operation.get(\"parameters\")) {\n      operation.get(\"parameters\")\n        .filter(param => param && param.get(\"allowEmptyValue\") === true)\n        .forEach(param => {\n          if (specSelectors.parameterInclusionSettingFor([pathName, method], param.get(\"name\"), param.get(\"in\"))) {\n            req.parameters = req.parameters || {}\n            const paramValue = paramToValue(param, req.parameters)\n\n            // if the value is falsy or an empty Immutable iterable...\n            if(!paramValue || (paramValue && paramValue.size === 0)) {\n              // set it to empty string, so Swagger Client will treat it as\n              // present but empty.\n              req.parameters[param.get(\"name\")] = \"\"\n            }\n          }\n        })\n    }\n\n    // if url is relative, parseUrl makes it absolute by inferring from `window.location`\n    req.contextUrl = parseUrl(specSelectors.url()).toString()\n\n    if(op && op.operationId) {\n      req.operationId = op.operationId\n    } else if(op && pathName && method) {\n      req.operationId = fn.opId(op, pathName, method)\n    }\n\n    if(specSelectors.isOAS3()) {\n      const namespace = `${pathName}:${method}`\n\n      req.server = oas3Selectors.selectedServer(namespace) || oas3Selectors.selectedServer()\n\n      const namespaceVariables = oas3Selectors.serverVariables({\n        server: req.server,\n        namespace\n      }).toJS()\n      const globalVariables = oas3Selectors.serverVariables({ server: req.server }).toJS()\n\n      req.serverVariables = Object.keys(namespaceVariables).length ? namespaceVariables : globalVariables\n\n      req.requestContentType = oas3Selectors.requestContentType(pathName, method)\n      req.responseContentType = oas3Selectors.responseContentType(pathName, method) || \"*/*\"\n      const requestBody = oas3Selectors.requestBodyValue(pathName, method)\n      const requestBodyInclusionSetting = oas3Selectors.requestBodyInclusionSetting(pathName, method)\n\n      if(requestBody && requestBody.toJS) {\n        req.requestBody = requestBody\n          .map(\n            (val) => {\n              if (Map.isMap(val)) {\n                return val.get(\"value\")\n              }\n              return val\n            }\n          )\n          .filter(\n            (value, key) => (Array.isArray(value)\n              ? value.length !== 0\n              : !isEmptyValue(value)\n            ) || requestBodyInclusionSetting.get(key)\n          )\n          .toJS()\n      } else {\n        req.requestBody = requestBody\n      }\n    }\n\n    let parsedRequest = Object.assign({}, req)\n    parsedRequest = fn.buildRequest(parsedRequest)\n\n    specActions.setRequest(req.pathName, req.method, parsedRequest)\n\n    let requestInterceptorWrapper = async (r) => {\n      let mutatedRequest = await requestInterceptor.apply(this, [r])\n      let parsedMutatedRequest = Object.assign({}, mutatedRequest)\n      specActions.setMutatedRequest(req.pathName, req.method, parsedMutatedRequest)\n      return mutatedRequest\n    }\n\n    req.requestInterceptor = requestInterceptorWrapper\n    req.responseInterceptor = responseInterceptor\n\n    // track duration of request\n    const startTime = Date.now()\n\n\n    return fn.execute(req)\n    .then( res => {\n      res.duration = Date.now() - startTime\n      specActions.setResponse(req.pathName, req.method, res)\n    } )\n    .catch(\n      err => {\n        // console.error(err)\n        if(err.message === \"Failed to fetch\") {\n          err.name = \"\"\n          err.message = \"**Failed to fetch.**  \\n**Possible Reasons:** \\n  - CORS \\n  - Network Failure \\n  - URL scheme must be \\\"http\\\" or \\\"https\\\" for CORS request.\"\n        }\n        specActions.setResponse(req.pathName, req.method, {\n          error: true, err: serializeError(err)\n        })\n      }\n    )\n  }\n\n\n// I'm using extras as a way to inject properties into the final, `execute` method - It's not great. Anyone have a better idea? @ponelat\nexport const execute = ( { path, method, ...extras }={} ) => (system) => {\n  let { fn:{fetch}, specSelectors, specActions } = system\n  let spec = specSelectors.specJsonWithResolvedSubtrees().toJS()\n  let scheme = specSelectors.operationScheme(path, method)\n  let { requestContentType, responseContentType } = specSelectors.contentTypeValues([path, method]).toJS()\n  let isXml = /xml/i.test(requestContentType)\n  let parameters = specSelectors.parameterValues([path, method], isXml).toJS()\n\n  return specActions.executeRequest({\n    ...extras,\n    fetch,\n    spec,\n    pathName: path,\n    method, parameters,\n    requestContentType,\n    scheme,\n    responseContentType\n  })\n}\n\nexport function clearResponse (path, method) {\n  return {\n    type: CLEAR_RESPONSE,\n    payload:{ path, method }\n  }\n}\n\nexport function clearRequest (path, method) {\n  return {\n    type: CLEAR_REQUEST,\n    payload:{ path, method }\n  }\n}\n\nexport function setScheme (scheme, path, method) {\n  return {\n    type: SET_SCHEME,\n    payload: { scheme, path, method }\n  }\n}\n", "/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n", "var uncurryThis = require('../internals/function-uncurry-this');\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", "var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nvar _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"];\n\n  if (!it) {\n    if (_Array$isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n\n      var F = function F() {};\n\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function s() {\n      it = it.call(o);\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}\n\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n  return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n", "var _Object$getOwnPropertySymbols = require(\"@babel/runtime-corejs3/core-js/object/get-own-property-symbols\");\n\nvar _indexOfInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/index-of\");\n\nvar objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (_Object$getOwnPropertySymbols) {\n    var sourceSymbolKeys = _Object$getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "// Actions conform to FSA (flux-standard-actions)\n// {type: string,payload: Any|Error, meta: obj, error: bool}\n\nexport const UPDATE_SELECTED_SERVER = \"oas3_set_servers\"\nexport const UPDATE_REQUEST_BODY_VALUE = \"oas3_set_request_body_value\"\nexport const UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG = \"oas3_set_request_body_retain_flag\"\nexport const UPDATE_REQUEST_BODY_INCLUSION = \"oas3_set_request_body_inclusion\"\nexport const UPDATE_ACTIVE_EXAMPLES_MEMBER = \"oas3_set_active_examples_member\"\nexport const UPDATE_REQUEST_CONTENT_TYPE = \"oas3_set_request_content_type\"\nexport const UPDATE_RESPONSE_CONTENT_TYPE = \"oas3_set_response_content_type\"\nexport const UPDATE_SERVER_VARIABLE_VALUE = \"oas3_set_server_variable_value\"\nexport const SET_REQUEST_BODY_VALIDATE_ERROR = \"oas3_set_request_body_validate_error\"\nexport const CLEAR_REQUEST_BODY_VALIDATE_ERROR = \"oas3_clear_request_body_validate_error\"\nexport const CLEAR_REQUEST_BODY_VALUE = \"oas3_clear_request_body_value\"\n\nexport function setSelectedServer (selectedServerUrl, namespace) {\n  return {\n    type: UPDATE_SELECTED_SERVER,\n    payload: {selectedServerUrl, namespace}\n  }\n}\n\nexport function setRequestBodyValue ({ value, pathMethod }) {\n  return {\n    type: UPDATE_REQUEST_BODY_VALUE,\n    payload: { value, pathMethod }\n  }\n}\n\nexport const setRetainRequestBodyValueFlag = ({ value, pathMethod }) => {\n  return {\n    type: UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG,\n    payload: { value, pathMethod }\n  }\n}\n\n\nexport function setRequestBodyInclusion ({ value, pathMethod, name }) {\n  return {\n    type: UPDATE_REQUEST_BODY_INCLUSION,\n    payload: { value, pathMethod, name }\n  }\n}\n\nexport function setActiveExamplesMember ({ name, pathMethod, contextType, contextName }) {\n  return {\n    type: UPDATE_ACTIVE_EXAMPLES_MEMBER,\n    payload: { name, pathMethod, contextType, contextName }\n  }\n}\n\nexport function setRequestContentType ({ value, pathMethod }) {\n  return {\n    type: UPDATE_REQUEST_CONTENT_TYPE,\n    payload: { value, pathMethod }\n  }\n}\n\nexport function setResponseContentType ({ value, path, method }) {\n  return {\n    type: UPDATE_RESPONSE_CONTENT_TYPE,\n    payload: { value, path, method }\n  }\n}\n\nexport function setServerVariableValue ({ server, namespace, key, val }) {\n  return {\n    type: UPDATE_SERVER_VARIABLE_VALUE,\n    payload: { server, namespace, key, val }\n  }\n}\n\nexport const setRequestBodyValidateError = ({ path, method, validationErrors }) => {\n  return {\n    type: SET_REQUEST_BODY_VALIDATE_ERROR,\n    payload: { path, method, validationErrors }\n  }\n}\n\nexport const clearRequestBodyValidateError = ({ path, method }) => {\n  return {\n    type: CLEAR_REQUEST_BODY_VALIDATE_ERROR,\n    payload: { path, method }\n  }\n}\n\nexport const initRequestBodyValidateError = ({ pathMethod } ) => {\n  return {\n    type: CLEAR_REQUEST_BODY_VALIDATE_ERROR,\n    payload: { path: pathMethod[0], method: pathMethod[1] }\n  }\n}\n\nexport const clearRequestBodyValue = ({ pathMethod }) => {\n  return {\n    type:  CLEAR_REQUEST_BODY_VALUE,\n    payload: { pathMethod }\n  }\n}\n", "var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n", "var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n", "var global = require('../internals/global');\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 = global.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 TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "import _createForOfIteratorHelper from \"@babel/runtime-corejs3/helpers/createForOfIteratorHelper\";\nimport _typeof from \"@babel/runtime-corejs3/helpers/typeof\";\nimport _startsWithInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/starts-with\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport _includesInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/includes\";\n\nvar toLower = function toLower(str) {\n  return String.prototype.toLowerCase.call(str);\n};\n\nvar escapeString = function escapeString(str) {\n  return str.replace(/[^\\w]/gi, '_');\n}; // Spec version detection\n\n\nexport function isOAS3(spec) {\n  var oasVersion = spec.openapi;\n\n  if (!oasVersion) {\n    return false;\n  }\n\n  return _startsWithInstanceProperty(oasVersion).call(oasVersion, '3');\n}\nexport function isSwagger2(spec) {\n  var swaggerVersion = spec.swagger;\n\n  if (!swaggerVersion) {\n    return false;\n  }\n\n  return _startsWithInstanceProperty(swaggerVersion).call(swaggerVersion, '2');\n} // Strategy for determining operationId\n\nexport function opId(operation, pathName) {\n  var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n  var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n      v2OperationIdCompatibilityMode = _ref.v2OperationIdCompatibilityMode;\n\n  if (!operation || _typeof(operation) !== 'object') {\n    return null;\n  }\n\n  var idWithoutWhitespace = (operation.operationId || '').replace(/\\s/g, '');\n\n  if (idWithoutWhitespace.length) {\n    return escapeString(operation.operationId);\n  }\n\n  return idFromPathMethod(pathName, method, {\n    v2OperationIdCompatibilityMode: v2OperationIdCompatibilityMode\n  });\n} // Create a generated operationId from pathName + method\n\nexport function idFromPathMethod(pathName, method) {\n  var _context3;\n\n  var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      v2OperationIdCompatibilityMode = _ref2.v2OperationIdCompatibilityMode;\n\n  if (v2OperationIdCompatibilityMode) {\n    var _context, _context2;\n\n    var res = _concatInstanceProperty(_context = \"\".concat(method.toLowerCase(), \"_\")).call(_context, pathName).replace(/[\\s!@#$%^&*()_+=[{\\]};:<>|./?,\\\\'\"\"-]/g, '_');\n\n    res = res || _concatInstanceProperty(_context2 = \"\".concat(pathName.substring(1), \"_\")).call(_context2, method);\n    return res.replace(/((_){2,})/g, '_').replace(/^(_)*/g, '').replace(/([_])*$/g, '');\n  }\n\n  return _concatInstanceProperty(_context3 = \"\".concat(toLower(method))).call(_context3, escapeString(pathName));\n}\nexport function legacyIdFromPathMethod(pathName, method) {\n  var _context4;\n\n  return _concatInstanceProperty(_context4 = \"\".concat(toLower(method), \"-\")).call(_context4, pathName);\n} // Get the operation, based on operationId ( just return the object, no inheritence )\n\nexport function getOperationRaw(spec, id) {\n  if (!spec || !spec.paths) {\n    return null;\n  }\n\n  return findOperation(spec, function (_ref3) {\n    var pathName = _ref3.pathName,\n        method = _ref3.method,\n        operation = _ref3.operation;\n\n    if (!operation || _typeof(operation) !== 'object') {\n      return false;\n    }\n\n    var rawOperationId = operation.operationId; // straight from the source\n\n    var operationId = opId(operation, pathName, method);\n    var legacyOperationId = legacyIdFromPathMethod(pathName, method);\n    return [operationId, legacyOperationId, rawOperationId].some(function (val) {\n      return val && val === id;\n    });\n  });\n} // Will stop iterating over the operations and return the operationObj\n// as soon as predicate returns true\n\nexport function findOperation(spec, predicate) {\n  return eachOperation(spec, predicate, true) || null;\n} // iterate over each operation, and fire a callback with details\n// `find=true` will stop iterating, when the cb returns truthy\n\nexport function eachOperation(spec, cb, find) {\n  if (!spec || _typeof(spec) !== 'object' || !spec.paths || _typeof(spec.paths) !== 'object') {\n    return null;\n  }\n\n  var paths = spec.paths; // Iterate over the spec, collecting operations\n  // eslint-disable-next-line no-restricted-syntax, guard-for-in\n\n  for (var pathName in paths) {\n    // eslint-disable-next-line no-restricted-syntax, guard-for-in\n    for (var method in paths[pathName]) {\n      if (method.toUpperCase() === 'PARAMETERS') {\n        continue; // eslint-disable-line no-continue\n      }\n\n      var operation = paths[pathName][method];\n\n      if (!operation || _typeof(operation) !== 'object') {\n        continue; // eslint-disable-line no-continue\n      }\n\n      var operationObj = {\n        spec: spec,\n        pathName: pathName,\n        method: method.toUpperCase(),\n        operation: operation\n      };\n      var cbValue = cb(operationObj);\n\n      if (find && cbValue) {\n        return operationObj;\n      }\n    }\n  }\n\n  return undefined;\n} // REVIEW: OAS3: identify normalization steps that need changes\n// ...maybe create `normalizeOAS3`?\n\nexport function normalizeSwagger(parsedSpec) {\n  var spec = parsedSpec.spec;\n  var paths = spec.paths;\n  var map = {};\n\n  if (!paths || spec.$$normalized) {\n    return parsedSpec;\n  } // eslint-disable-next-line no-restricted-syntax, guard-for-in\n\n\n  for (var pathName in paths) {\n    var _context5;\n\n    var path = paths[pathName];\n\n    if (path == null || !_includesInstanceProperty(_context5 = ['object', 'function']).call(_context5, _typeof(path))) {\n      continue; // eslint-disable-line no-continue\n    }\n\n    var pathParameters = path.parameters; // eslint-disable-next-line no-restricted-syntax, guard-for-in\n\n    var _loop = function _loop(method) {\n      var _context6;\n\n      var operation = path[method];\n\n      if (operation == null || !_includesInstanceProperty(_context6 = ['object', 'function']).call(_context6, _typeof(operation))) {\n        return \"continue\"; // eslint-disable-line no-continue\n      }\n\n      var oid = opId(operation, pathName, method);\n\n      if (oid) {\n        if (map[oid]) {\n          map[oid].push(operation);\n        } else {\n          map[oid] = [operation];\n        }\n\n        var opList = map[oid];\n\n        if (opList.length > 1) {\n          opList.forEach(function (o, i) {\n            var _context7;\n\n            // eslint-disable-next-line no-underscore-dangle\n            o.__originalOperationId = o.__originalOperationId || o.operationId;\n            o.operationId = _concatInstanceProperty(_context7 = \"\".concat(oid)).call(_context7, i + 1);\n          });\n        } else if (typeof operation.operationId !== 'undefined') {\n          // Ensure we always add the normalized operation ID if one already exists\n          // ( potentially different, given that we normalize our IDs)\n          // ... _back_ to the spec. Otherwise, they might not line up\n          var obj = opList[0]; // eslint-disable-next-line no-underscore-dangle\n\n          obj.__originalOperationId = obj.__originalOperationId || operation.operationId;\n          obj.operationId = oid;\n        }\n      }\n\n      if (method !== 'parameters') {\n        // Add inherited consumes, produces, parameters, securities\n        var inheritsList = [];\n        var toBeInherit = {}; // Global-levels\n        // eslint-disable-next-line no-restricted-syntax\n\n        for (var key in spec) {\n          if (key === 'produces' || key === 'consumes' || key === 'security') {\n            toBeInherit[key] = spec[key];\n            inheritsList.push(toBeInherit);\n          }\n        } // Path-levels\n\n\n        if (pathParameters) {\n          toBeInherit.parameters = pathParameters;\n          inheritsList.push(toBeInherit);\n        }\n\n        if (inheritsList.length) {\n          // eslint-disable-next-line no-restricted-syntax\n          var _iterator = _createForOfIteratorHelper(inheritsList),\n              _step;\n\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              var inherits = _step.value;\n\n              // eslint-disable-next-line no-restricted-syntax\n              for (var inheritName in inherits) {\n                if (!operation[inheritName]) {\n                  operation[inheritName] = inherits[inheritName];\n                } else if (inheritName === 'parameters') {\n                  // eslint-disable-next-line no-restricted-syntax\n                  var _iterator2 = _createForOfIteratorHelper(inherits[inheritName]),\n                      _step2;\n\n                  try {\n                    var _loop2 = function _loop2() {\n                      var param = _step2.value;\n                      var exists = operation[inheritName].some(function (opParam) {\n                        return opParam.name && opParam.name === param.name || opParam.$ref && opParam.$ref === param.$ref || opParam.$$ref && opParam.$$ref === param.$$ref || opParam === param;\n                      });\n\n                      if (!exists) {\n                        operation[inheritName].push(param);\n                      }\n                    };\n\n                    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n                      _loop2();\n                    }\n                  } catch (err) {\n                    _iterator2.e(err);\n                  } finally {\n                    _iterator2.f();\n                  }\n                }\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n        }\n      }\n    };\n\n    for (var method in path) {\n      var _ret = _loop(method);\n\n      if (_ret === \"continue\") continue;\n    }\n  }\n\n  spec.$$normalized = true;\n  return parsedSpec;\n}", "import { serializeError } from \"serialize-error\"\n\nexport const NEW_THROWN_ERR = \"err_new_thrown_err\"\nexport const NEW_THROWN_ERR_BATCH = \"err_new_thrown_err_batch\"\nexport const NEW_SPEC_ERR = \"err_new_spec_err\"\nexport const NEW_SPEC_ERR_BATCH = \"err_new_spec_err_batch\"\nexport const NEW_AUTH_ERR = \"err_new_auth_err\"\nexport const CLEAR = \"err_clear\"\nexport const CLEAR_BY = \"err_clear_by\"\n\nexport function newThrownErr(err) {\n  return {\n      type: NEW_THROWN_ERR,\n      payload: serializeError(err)\n  }\n}\n\nexport function newThrownErrBatch(errors) {\n  return {\n      type: NEW_THROWN_ERR_BATCH,\n      payload: errors\n  }\n}\n\nexport function newSpecErr(err) {\n  return {\n      type: NEW_SPEC_ERR,\n      payload: err\n  }\n}\n\nexport function newSpecErrBatch(errArray) {\n  return {\n      type: NEW_SPEC_ERR_BATCH,\n      payload: errArray\n  }\n}\n\nexport function newAuthErr(err) {\n  return {\n    type: NEW_AUTH_ERR,\n    payload: err\n  }\n}\n\nexport function clear(filter = {}) {\n  // filter looks like: {type: 'spec'}, {source: 'parser'}\n  return {\n    type: CLEAR,\n    payload: filter\n  }\n}\n\nexport function clearBy(filter = () => true) {\n  // filter is a function\n  return {\n    type: CLEAR_BY,\n    payload: filter\n  }\n}\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", "var 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", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n", "if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n", "/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n", "module.exports = require(\"core-js-pure/stable/array/from\");", "module.exports = require(\"core-js-pure/stable/promise\");", "var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return String(argument);\n};\n", "require('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n    createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n  }\n  Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "\n/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n  return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n  return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n  if (Array.isArray(sequence)) return sequence;\n  else if (isNothing(sequence)) return [];\n\n  return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n  var index, length, key, sourceKeys;\n\n  if (source) {\n    sourceKeys = Object.keys(source);\n\n    for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n      key = sourceKeys[index];\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\n\nfunction repeat(string, count) {\n  var result = '', cycle;\n\n  for (cycle = 0; cycle < count; cycle += 1) {\n    result += string;\n  }\n\n  return result;\n}\n\n\nfunction isNegativeZero(number) {\n  return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nvar isNothing_1      = isNothing;\nvar isObject_1       = isObject;\nvar toArray_1        = toArray;\nvar repeat_1         = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1         = extend;\n\nvar common = {\n\tisNothing: isNothing_1,\n\tisObject: isObject_1,\n\ttoArray: toArray_1,\n\trepeat: repeat_1,\n\tisNegativeZero: isNegativeZero_1,\n\textend: extend_1\n};\n\n// YAML error class. http://stackoverflow.com/questions/8458984\n\n\nfunction formatError(exception, compact) {\n  var where = '', message = exception.reason || '(unknown reason)';\n\n  if (!exception.mark) return message;\n\n  if (exception.mark.name) {\n    where += 'in \"' + exception.mark.name + '\" ';\n  }\n\n  where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n  if (!compact && exception.mark.snippet) {\n    where += '\\n\\n' + exception.mark.snippet;\n  }\n\n  return message + ' ' + where;\n}\n\n\nfunction YAMLException$1(reason, mark) {\n  // Super constructor\n  Error.call(this);\n\n  this.name = 'YAMLException';\n  this.reason = reason;\n  this.mark = mark;\n  this.message = formatError(this, false);\n\n  // Include stack trace in error object\n  if (Error.captureStackTrace) {\n    // Chrome and NodeJS\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    // FF, IE 10+ and Safari 6+. Fallback for others\n    this.stack = (new Error()).stack || '';\n  }\n}\n\n\n// Inherit from Error\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\n\n\nYAMLException$1.prototype.toString = function toString(compact) {\n  return this.name + ': ' + formatError(this, compact);\n};\n\n\nvar exception = YAMLException$1;\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n  var head = '';\n  var tail = '';\n  var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n  if (position - lineStart > maxHalfLength) {\n    head = ' ... ';\n    lineStart = position - maxHalfLength + head.length;\n  }\n\n  if (lineEnd - position > maxHalfLength) {\n    tail = ' ...';\n    lineEnd = position + maxHalfLength - tail.length;\n  }\n\n  return {\n    str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n    pos: position - lineStart + head.length // relative position\n  };\n}\n\n\nfunction padStart(string, max) {\n  return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n  options = Object.create(options || null);\n\n  if (!mark.buffer) return null;\n\n  if (!options.maxLength) options.maxLength = 79;\n  if (typeof options.indent      !== 'number') options.indent      = 1;\n  if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n  if (typeof options.linesAfter  !== 'number') options.linesAfter  = 2;\n\n  var re = /\\r?\\n|\\r|\\0/g;\n  var lineStarts = [ 0 ];\n  var lineEnds = [];\n  var match;\n  var foundLineNo = -1;\n\n  while ((match = re.exec(mark.buffer))) {\n    lineEnds.push(match.index);\n    lineStarts.push(match.index + match[0].length);\n\n    if (mark.position <= match.index && foundLineNo < 0) {\n      foundLineNo = lineStarts.length - 2;\n    }\n  }\n\n  if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n  var result = '', i, line;\n  var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n  var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n  for (i = 1; i <= options.linesBefore; i++) {\n    if (foundLineNo - i < 0) break;\n    line = getLine(\n      mark.buffer,\n      lineStarts[foundLineNo - i],\n      lineEnds[foundLineNo - i],\n      mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n      maxLineLength\n    );\n    result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n      ' | ' + line.str + '\\n' + result;\n  }\n\n  line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n  result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n    ' | ' + line.str + '\\n';\n  result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n  for (i = 1; i <= options.linesAfter; i++) {\n    if (foundLineNo + i >= lineEnds.length) break;\n    line = getLine(\n      mark.buffer,\n      lineStarts[foundLineNo + i],\n      lineEnds[foundLineNo + i],\n      mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n      maxLineLength\n    );\n    result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n      ' | ' + line.str + '\\n';\n  }\n\n  return result.replace(/\\n$/, '');\n}\n\n\nvar snippet = makeSnippet;\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n  'kind',\n  'multi',\n  'resolve',\n  'construct',\n  'instanceOf',\n  'predicate',\n  'represent',\n  'representName',\n  'defaultStyle',\n  'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n  'scalar',\n  'sequence',\n  'mapping'\n];\n\nfunction compileStyleAliases(map) {\n  var result = {};\n\n  if (map !== null) {\n    Object.keys(map).forEach(function (style) {\n      map[style].forEach(function (alias) {\n        result[String(alias)] = style;\n      });\n    });\n  }\n\n  return result;\n}\n\nfunction Type$1(tag, options) {\n  options = options || {};\n\n  Object.keys(options).forEach(function (name) {\n    if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n      throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n    }\n  });\n\n  // TODO: Add tag format check.\n  this.options       = options; // keep original options in case user wants to extend this type later\n  this.tag           = tag;\n  this.kind          = options['kind']          || null;\n  this.resolve       = options['resolve']       || function () { return true; };\n  this.construct     = options['construct']     || function (data) { return data; };\n  this.instanceOf    = options['instanceOf']    || null;\n  this.predicate     = options['predicate']     || null;\n  this.represent     = options['represent']     || null;\n  this.representName = options['representName'] || null;\n  this.defaultStyle  = options['defaultStyle']  || null;\n  this.multi         = options['multi']         || false;\n  this.styleAliases  = compileStyleAliases(options['styleAliases'] || null);\n\n  if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n    throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n  }\n}\n\nvar type = Type$1;\n\n/*eslint-disable max-len*/\n\n\n\n\n\nfunction compileList(schema, name) {\n  var result = [];\n\n  schema[name].forEach(function (currentType) {\n    var newIndex = result.length;\n\n    result.forEach(function (previousType, previousIndex) {\n      if (previousType.tag === currentType.tag &&\n          previousType.kind === currentType.kind &&\n          previousType.multi === currentType.multi) {\n\n        newIndex = previousIndex;\n      }\n    });\n\n    result[newIndex] = currentType;\n  });\n\n  return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n  var result = {\n        scalar: {},\n        sequence: {},\n        mapping: {},\n        fallback: {},\n        multi: {\n          scalar: [],\n          sequence: [],\n          mapping: [],\n          fallback: []\n        }\n      }, index, length;\n\n  function collectType(type) {\n    if (type.multi) {\n      result.multi[type.kind].push(type);\n      result.multi['fallback'].push(type);\n    } else {\n      result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n    }\n  }\n\n  for (index = 0, length = arguments.length; index < length; index += 1) {\n    arguments[index].forEach(collectType);\n  }\n  return result;\n}\n\n\nfunction Schema$1(definition) {\n  return this.extend(definition);\n}\n\n\nSchema$1.prototype.extend = function extend(definition) {\n  var implicit = [];\n  var explicit = [];\n\n  if (definition instanceof type) {\n    // Schema.extend(type)\n    explicit.push(definition);\n\n  } else if (Array.isArray(definition)) {\n    // Schema.extend([ type1, type2, ... ])\n    explicit = explicit.concat(definition);\n\n  } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n    // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n    if (definition.implicit) implicit = implicit.concat(definition.implicit);\n    if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n  } else {\n    throw new exception('Schema.extend argument should be a Type, [ Type ], ' +\n      'or a schema definition ({ implicit: [...], explicit: [...] })');\n  }\n\n  implicit.forEach(function (type$1) {\n    if (!(type$1 instanceof type)) {\n      throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n    }\n\n    if (type$1.loadKind && type$1.loadKind !== 'scalar') {\n      throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n    }\n\n    if (type$1.multi) {\n      throw new exception('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n    }\n  });\n\n  explicit.forEach(function (type$1) {\n    if (!(type$1 instanceof type)) {\n      throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n    }\n  });\n\n  var result = Object.create(Schema$1.prototype);\n\n  result.implicit = (this.implicit || []).concat(implicit);\n  result.explicit = (this.explicit || []).concat(explicit);\n\n  result.compiledImplicit = compileList(result, 'implicit');\n  result.compiledExplicit = compileList(result, 'explicit');\n  result.compiledTypeMap  = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n  return result;\n};\n\n\nvar schema = Schema$1;\n\nvar str = new type('tag:yaml.org,2002:str', {\n  kind: 'scalar',\n  construct: function (data) { return data !== null ? data : ''; }\n});\n\nvar seq = new type('tag:yaml.org,2002:seq', {\n  kind: 'sequence',\n  construct: function (data) { return data !== null ? data : []; }\n});\n\nvar map = new type('tag:yaml.org,2002:map', {\n  kind: 'mapping',\n  construct: function (data) { return data !== null ? data : {}; }\n});\n\nvar failsafe = new schema({\n  explicit: [\n    str,\n    seq,\n    map\n  ]\n});\n\nfunction resolveYamlNull(data) {\n  if (data === null) return true;\n\n  var max = data.length;\n\n  return (max === 1 && data === '~') ||\n         (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n  return null;\n}\n\nfunction isNull(object) {\n  return object === null;\n}\n\nvar _null = new type('tag:yaml.org,2002:null', {\n  kind: 'scalar',\n  resolve: resolveYamlNull,\n  construct: constructYamlNull,\n  predicate: isNull,\n  represent: {\n    canonical: function () { return '~';    },\n    lowercase: function () { return 'null'; },\n    uppercase: function () { return 'NULL'; },\n    camelcase: function () { return 'Null'; },\n    empty:     function () { return '';     }\n  },\n  defaultStyle: 'lowercase'\n});\n\nfunction resolveYamlBoolean(data) {\n  if (data === null) return false;\n\n  var max = data.length;\n\n  return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n         (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n  return data === 'true' ||\n         data === 'True' ||\n         data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n  return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nvar bool = new type('tag:yaml.org,2002:bool', {\n  kind: 'scalar',\n  resolve: resolveYamlBoolean,\n  construct: constructYamlBoolean,\n  predicate: isBoolean,\n  represent: {\n    lowercase: function (object) { return object ? 'true' : 'false'; },\n    uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n    camelcase: function (object) { return object ? 'True' : 'False'; }\n  },\n  defaultStyle: 'lowercase'\n});\n\nfunction isHexCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n         ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n         ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n  if (data === null) return false;\n\n  var max = data.length,\n      index = 0,\n      hasDigits = false,\n      ch;\n\n  if (!max) return false;\n\n  ch = data[index];\n\n  // sign\n  if (ch === '-' || ch === '+') {\n    ch = data[++index];\n  }\n\n  if (ch === '0') {\n    // 0\n    if (index + 1 === max) return true;\n    ch = data[++index];\n\n    // base 2, base 8, base 16\n\n    if (ch === 'b') {\n      // base 2\n      index++;\n\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === '_') continue;\n        if (ch !== '0' && ch !== '1') return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== '_';\n    }\n\n\n    if (ch === 'x') {\n      // base 16\n      index++;\n\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === '_') continue;\n        if (!isHexCode(data.charCodeAt(index))) return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== '_';\n    }\n\n\n    if (ch === 'o') {\n      // base 8\n      index++;\n\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === '_') continue;\n        if (!isOctCode(data.charCodeAt(index))) return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== '_';\n    }\n  }\n\n  // base 10 (except 0)\n\n  // value should not start with `_`;\n  if (ch === '_') return false;\n\n  for (; index < max; index++) {\n    ch = data[index];\n    if (ch === '_') continue;\n    if (!isDecCode(data.charCodeAt(index))) {\n      return false;\n    }\n    hasDigits = true;\n  }\n\n  // Should have digits and should not end with `_`\n  if (!hasDigits || ch === '_') return false;\n\n  return true;\n}\n\nfunction constructYamlInteger(data) {\n  var value = data, sign = 1, ch;\n\n  if (value.indexOf('_') !== -1) {\n    value = value.replace(/_/g, '');\n  }\n\n  ch = value[0];\n\n  if (ch === '-' || ch === '+') {\n    if (ch === '-') sign = -1;\n    value = value.slice(1);\n    ch = value[0];\n  }\n\n  if (value === '0') return 0;\n\n  if (ch === '0') {\n    if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n    if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n    if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n  }\n\n  return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n  return (Object.prototype.toString.call(object)) === '[object Number]' &&\n         (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nvar int = new type('tag:yaml.org,2002:int', {\n  kind: 'scalar',\n  resolve: resolveYamlInteger,\n  construct: constructYamlInteger,\n  predicate: isInteger,\n  represent: {\n    binary:      function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n    octal:       function (obj) { return obj >= 0 ? '0o'  + obj.toString(8) : '-0o'  + obj.toString(8).slice(1); },\n    decimal:     function (obj) { return obj.toString(10); },\n    /* eslint-disable max-len */\n    hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() :  '-0x' + obj.toString(16).toUpperCase().slice(1); }\n  },\n  defaultStyle: 'decimal',\n  styleAliases: {\n    binary:      [ 2,  'bin' ],\n    octal:       [ 8,  'oct' ],\n    decimal:     [ 10, 'dec' ],\n    hexadecimal: [ 16, 'hex' ]\n  }\n});\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n  // 2.5e4, 2.5 and integers\n  '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n  // .2e4, .2\n  // special case, seems not from spec\n  '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n  // .inf\n  '|[-+]?\\\\.(?:inf|Inf|INF)' +\n  // .nan\n  '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n  if (data === null) return false;\n\n  if (!YAML_FLOAT_PATTERN.test(data) ||\n      // Quick hack to not allow integers end with `_`\n      // Probably should update regexp & check speed\n      data[data.length - 1] === '_') {\n    return false;\n  }\n\n  return true;\n}\n\nfunction constructYamlFloat(data) {\n  var value, sign;\n\n  value  = data.replace(/_/g, '').toLowerCase();\n  sign   = value[0] === '-' ? -1 : 1;\n\n  if ('+-'.indexOf(value[0]) >= 0) {\n    value = value.slice(1);\n  }\n\n  if (value === '.inf') {\n    return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n  } else if (value === '.nan') {\n    return NaN;\n  }\n  return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n  var res;\n\n  if (isNaN(object)) {\n    switch (style) {\n      case 'lowercase': return '.nan';\n      case 'uppercase': return '.NAN';\n      case 'camelcase': return '.NaN';\n    }\n  } else if (Number.POSITIVE_INFINITY === object) {\n    switch (style) {\n      case 'lowercase': return '.inf';\n      case 'uppercase': return '.INF';\n      case 'camelcase': return '.Inf';\n    }\n  } else if (Number.NEGATIVE_INFINITY === object) {\n    switch (style) {\n      case 'lowercase': return '-.inf';\n      case 'uppercase': return '-.INF';\n      case 'camelcase': return '-.Inf';\n    }\n  } else if (common.isNegativeZero(object)) {\n    return '-0.0';\n  }\n\n  res = object.toString(10);\n\n  // JS stringifier can build scientific format without dots: 5e-100,\n  // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n  return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n  return (Object.prototype.toString.call(object) === '[object Number]') &&\n         (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nvar float = new type('tag:yaml.org,2002:float', {\n  kind: 'scalar',\n  resolve: resolveYamlFloat,\n  construct: constructYamlFloat,\n  predicate: isFloat,\n  represent: representYamlFloat,\n  defaultStyle: 'lowercase'\n});\n\nvar json = failsafe.extend({\n  implicit: [\n    _null,\n    bool,\n    int,\n    float\n  ]\n});\n\nvar core = json;\n\nvar YAML_DATE_REGEXP = new RegExp(\n  '^([0-9][0-9][0-9][0-9])'          + // [1] year\n  '-([0-9][0-9])'                    + // [2] month\n  '-([0-9][0-9])$');                   // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n  '^([0-9][0-9][0-9][0-9])'          + // [1] year\n  '-([0-9][0-9]?)'                   + // [2] month\n  '-([0-9][0-9]?)'                   + // [3] day\n  '(?:[Tt]|[ \\\\t]+)'                 + // ...\n  '([0-9][0-9]?)'                    + // [4] hour\n  ':([0-9][0-9])'                    + // [5] minute\n  ':([0-9][0-9])'                    + // [6] second\n  '(?:\\\\.([0-9]*))?'                 + // [7] fraction\n  '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n  '(?::([0-9][0-9]))?))?$');           // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n  if (data === null) return false;\n  if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n  if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n  return false;\n}\n\nfunction constructYamlTimestamp(data) {\n  var match, year, month, day, hour, minute, second, fraction = 0,\n      delta = null, tz_hour, tz_minute, date;\n\n  match = YAML_DATE_REGEXP.exec(data);\n  if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n  if (match === null) throw new Error('Date resolve error');\n\n  // match: [1] year [2] month [3] day\n\n  year = +(match[1]);\n  month = +(match[2]) - 1; // JS month starts with 0\n  day = +(match[3]);\n\n  if (!match[4]) { // no hour\n    return new Date(Date.UTC(year, month, day));\n  }\n\n  // match: [4] hour [5] minute [6] second [7] fraction\n\n  hour = +(match[4]);\n  minute = +(match[5]);\n  second = +(match[6]);\n\n  if (match[7]) {\n    fraction = match[7].slice(0, 3);\n    while (fraction.length < 3) { // milli-seconds\n      fraction += '0';\n    }\n    fraction = +fraction;\n  }\n\n  // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n  if (match[9]) {\n    tz_hour = +(match[10]);\n    tz_minute = +(match[11] || 0);\n    delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n    if (match[9] === '-') delta = -delta;\n  }\n\n  date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n  if (delta) date.setTime(date.getTime() - delta);\n\n  return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n  return object.toISOString();\n}\n\nvar timestamp = new type('tag:yaml.org,2002:timestamp', {\n  kind: 'scalar',\n  resolve: resolveYamlTimestamp,\n  construct: constructYamlTimestamp,\n  instanceOf: Date,\n  represent: representYamlTimestamp\n});\n\nfunction resolveYamlMerge(data) {\n  return data === '<<' || data === null;\n}\n\nvar merge = new type('tag:yaml.org,2002:merge', {\n  kind: 'scalar',\n  resolve: resolveYamlMerge\n});\n\n/*eslint-disable no-bitwise*/\n\n\n\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n  if (data === null) return false;\n\n  var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n  // Convert one by one.\n  for (idx = 0; idx < max; idx++) {\n    code = map.indexOf(data.charAt(idx));\n\n    // Skip CR/LF\n    if (code > 64) continue;\n\n    // Fail on illegal characters\n    if (code < 0) return false;\n\n    bitlen += 6;\n  }\n\n  // If there are any bits left, source was corrupted\n  return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n  var idx, tailbits,\n      input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n      max = input.length,\n      map = BASE64_MAP,\n      bits = 0,\n      result = [];\n\n  // Collect by 6*4 bits (3 bytes)\n\n  for (idx = 0; idx < max; idx++) {\n    if ((idx % 4 === 0) && idx) {\n      result.push((bits >> 16) & 0xFF);\n      result.push((bits >> 8) & 0xFF);\n      result.push(bits & 0xFF);\n    }\n\n    bits = (bits << 6) | map.indexOf(input.charAt(idx));\n  }\n\n  // Dump tail\n\n  tailbits = (max % 4) * 6;\n\n  if (tailbits === 0) {\n    result.push((bits >> 16) & 0xFF);\n    result.push((bits >> 8) & 0xFF);\n    result.push(bits & 0xFF);\n  } else if (tailbits === 18) {\n    result.push((bits >> 10) & 0xFF);\n    result.push((bits >> 2) & 0xFF);\n  } else if (tailbits === 12) {\n    result.push((bits >> 4) & 0xFF);\n  }\n\n  return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n  var result = '', bits = 0, idx, tail,\n      max = object.length,\n      map = BASE64_MAP;\n\n  // Convert every three bytes to 4 ASCII characters.\n\n  for (idx = 0; idx < max; idx++) {\n    if ((idx % 3 === 0) && idx) {\n      result += map[(bits >> 18) & 0x3F];\n      result += map[(bits >> 12) & 0x3F];\n      result += map[(bits >> 6) & 0x3F];\n      result += map[bits & 0x3F];\n    }\n\n    bits = (bits << 8) + object[idx];\n  }\n\n  // Dump tail\n\n  tail = max % 3;\n\n  if (tail === 0) {\n    result += map[(bits >> 18) & 0x3F];\n    result += map[(bits >> 12) & 0x3F];\n    result += map[(bits >> 6) & 0x3F];\n    result += map[bits & 0x3F];\n  } else if (tail === 2) {\n    result += map[(bits >> 10) & 0x3F];\n    result += map[(bits >> 4) & 0x3F];\n    result += map[(bits << 2) & 0x3F];\n    result += map[64];\n  } else if (tail === 1) {\n    result += map[(bits >> 2) & 0x3F];\n    result += map[(bits << 4) & 0x3F];\n    result += map[64];\n    result += map[64];\n  }\n\n  return result;\n}\n\nfunction isBinary(obj) {\n  return Object.prototype.toString.call(obj) ===  '[object Uint8Array]';\n}\n\nvar binary = new type('tag:yaml.org,2002:binary', {\n  kind: 'scalar',\n  resolve: resolveYamlBinary,\n  construct: constructYamlBinary,\n  predicate: isBinary,\n  represent: representYamlBinary\n});\n\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2       = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n  if (data === null) return true;\n\n  var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n      object = data;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n    pairHasKey = false;\n\n    if (_toString$2.call(pair) !== '[object Object]') return false;\n\n    for (pairKey in pair) {\n      if (_hasOwnProperty$3.call(pair, pairKey)) {\n        if (!pairHasKey) pairHasKey = true;\n        else return false;\n      }\n    }\n\n    if (!pairHasKey) return false;\n\n    if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n    else return false;\n  }\n\n  return true;\n}\n\nfunction constructYamlOmap(data) {\n  return data !== null ? data : [];\n}\n\nvar omap = new type('tag:yaml.org,2002:omap', {\n  kind: 'sequence',\n  resolve: resolveYamlOmap,\n  construct: constructYamlOmap\n});\n\nvar _toString$1 = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n  if (data === null) return true;\n\n  var index, length, pair, keys, result,\n      object = data;\n\n  result = new Array(object.length);\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n\n    if (_toString$1.call(pair) !== '[object Object]') return false;\n\n    keys = Object.keys(pair);\n\n    if (keys.length !== 1) return false;\n\n    result[index] = [ keys[0], pair[keys[0]] ];\n  }\n\n  return true;\n}\n\nfunction constructYamlPairs(data) {\n  if (data === null) return [];\n\n  var index, length, pair, keys, result,\n      object = data;\n\n  result = new Array(object.length);\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n\n    keys = Object.keys(pair);\n\n    result[index] = [ keys[0], pair[keys[0]] ];\n  }\n\n  return result;\n}\n\nvar pairs = new type('tag:yaml.org,2002:pairs', {\n  kind: 'sequence',\n  resolve: resolveYamlPairs,\n  construct: constructYamlPairs\n});\n\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n  if (data === null) return true;\n\n  var key, object = data;\n\n  for (key in object) {\n    if (_hasOwnProperty$2.call(object, key)) {\n      if (object[key] !== null) return false;\n    }\n  }\n\n  return true;\n}\n\nfunction constructYamlSet(data) {\n  return data !== null ? data : {};\n}\n\nvar set = new type('tag:yaml.org,2002:set', {\n  kind: 'mapping',\n  resolve: resolveYamlSet,\n  construct: constructYamlSet\n});\n\nvar _default = core.extend({\n  implicit: [\n    timestamp,\n    merge\n  ],\n  explicit: [\n    binary,\n    omap,\n    pairs,\n    set\n  ]\n});\n\n/*eslint-disable max-len,no-use-before-define*/\n\n\n\n\n\n\n\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN   = 1;\nvar CONTEXT_FLOW_OUT  = 2;\nvar CONTEXT_BLOCK_IN  = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP  = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP  = 3;\n\n\nvar PATTERN_NON_PRINTABLE         = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS       = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE            = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI               = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n  return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n  return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n  return (c === 0x09/* Tab */) ||\n         (c === 0x20/* Space */) ||\n         (c === 0x0A/* LF */) ||\n         (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n  return c === 0x2C/* , */ ||\n         c === 0x5B/* [ */ ||\n         c === 0x5D/* ] */ ||\n         c === 0x7B/* { */ ||\n         c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n  var lc;\n\n  if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n    return c - 0x30;\n  }\n\n  /*eslint-disable no-bitwise*/\n  lc = c | 0x20;\n\n  if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n    return lc - 0x61 + 10;\n  }\n\n  return -1;\n}\n\nfunction escapedHexLen(c) {\n  if (c === 0x78/* x */) { return 2; }\n  if (c === 0x75/* u */) { return 4; }\n  if (c === 0x55/* U */) { return 8; }\n  return 0;\n}\n\nfunction fromDecimalCode(c) {\n  if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n    return c - 0x30;\n  }\n\n  return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n  /* eslint-disable indent */\n  return (c === 0x30/* 0 */) ? '\\x00' :\n        (c === 0x61/* a */) ? '\\x07' :\n        (c === 0x62/* b */) ? '\\x08' :\n        (c === 0x74/* t */) ? '\\x09' :\n        (c === 0x09/* Tab */) ? '\\x09' :\n        (c === 0x6E/* n */) ? '\\x0A' :\n        (c === 0x76/* v */) ? '\\x0B' :\n        (c === 0x66/* f */) ? '\\x0C' :\n        (c === 0x72/* r */) ? '\\x0D' :\n        (c === 0x65/* e */) ? '\\x1B' :\n        (c === 0x20/* Space */) ? ' ' :\n        (c === 0x22/* \" */) ? '\\x22' :\n        (c === 0x2F/* / */) ? '/' :\n        (c === 0x5C/* \\ */) ? '\\x5C' :\n        (c === 0x4E/* N */) ? '\\x85' :\n        (c === 0x5F/* _ */) ? '\\xA0' :\n        (c === 0x4C/* L */) ? '\\u2028' :\n        (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n  if (c <= 0xFFFF) {\n    return String.fromCharCode(c);\n  }\n  // Encode UTF-16 surrogate pair\n  // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n  return String.fromCharCode(\n    ((c - 0x010000) >> 10) + 0xD800,\n    ((c - 0x010000) & 0x03FF) + 0xDC00\n  );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n  simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n  simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State$1(input, options) {\n  this.input = input;\n\n  this.filename  = options['filename']  || null;\n  this.schema    = options['schema']    || _default;\n  this.onWarning = options['onWarning'] || null;\n  // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n  // if such documents have no explicit %YAML directive\n  this.legacy    = options['legacy']    || false;\n\n  this.json      = options['json']      || false;\n  this.listener  = options['listener']  || null;\n\n  this.implicitTypes = this.schema.compiledImplicit;\n  this.typeMap       = this.schema.compiledTypeMap;\n\n  this.length     = input.length;\n  this.position   = 0;\n  this.line       = 0;\n  this.lineStart  = 0;\n  this.lineIndent = 0;\n\n  // position of first leading tab in the current line,\n  // used to make sure there are no tabs in the indentation\n  this.firstTabInLine = -1;\n\n  this.documents = [];\n\n  /*\n  this.version;\n  this.checkLineBreaks;\n  this.tagMap;\n  this.anchorMap;\n  this.tag;\n  this.anchor;\n  this.kind;\n  this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n  var mark = {\n    name:     state.filename,\n    buffer:   state.input.slice(0, -1), // omit trailing \\0\n    position: state.position,\n    line:     state.line,\n    column:   state.position - state.lineStart\n  };\n\n  mark.snippet = snippet(mark);\n\n  return new exception(message, mark);\n}\n\nfunction throwError(state, message) {\n  throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n  if (state.onWarning) {\n    state.onWarning.call(null, generateError(state, message));\n  }\n}\n\n\nvar directiveHandlers = {\n\n  YAML: function handleYamlDirective(state, name, args) {\n\n    var match, major, minor;\n\n    if (state.version !== null) {\n      throwError(state, 'duplication of %YAML directive');\n    }\n\n    if (args.length !== 1) {\n      throwError(state, 'YAML directive accepts exactly one argument');\n    }\n\n    match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n    if (match === null) {\n      throwError(state, 'ill-formed argument of the YAML directive');\n    }\n\n    major = parseInt(match[1], 10);\n    minor = parseInt(match[2], 10);\n\n    if (major !== 1) {\n      throwError(state, 'unacceptable YAML version of the document');\n    }\n\n    state.version = args[0];\n    state.checkLineBreaks = (minor < 2);\n\n    if (minor !== 1 && minor !== 2) {\n      throwWarning(state, 'unsupported YAML version of the document');\n    }\n  },\n\n  TAG: function handleTagDirective(state, name, args) {\n\n    var handle, prefix;\n\n    if (args.length !== 2) {\n      throwError(state, 'TAG directive accepts exactly two arguments');\n    }\n\n    handle = args[0];\n    prefix = args[1];\n\n    if (!PATTERN_TAG_HANDLE.test(handle)) {\n      throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n    }\n\n    if (_hasOwnProperty$1.call(state.tagMap, handle)) {\n      throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n    }\n\n    if (!PATTERN_TAG_URI.test(prefix)) {\n      throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n    }\n\n    try {\n      prefix = decodeURIComponent(prefix);\n    } catch (err) {\n      throwError(state, 'tag prefix is malformed: ' + prefix);\n    }\n\n    state.tagMap[handle] = prefix;\n  }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n  var _position, _length, _character, _result;\n\n  if (start < end) {\n    _result = state.input.slice(start, end);\n\n    if (checkJson) {\n      for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n        _character = _result.charCodeAt(_position);\n        if (!(_character === 0x09 ||\n              (0x20 <= _character && _character <= 0x10FFFF))) {\n          throwError(state, 'expected valid JSON character');\n        }\n      }\n    } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n      throwError(state, 'the stream contains non-printable characters');\n    }\n\n    state.result += _result;\n  }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n  var sourceKeys, key, index, quantity;\n\n  if (!common.isObject(source)) {\n    throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n  }\n\n  sourceKeys = Object.keys(source);\n\n  for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n    key = sourceKeys[index];\n\n    if (!_hasOwnProperty$1.call(destination, key)) {\n      destination[key] = source[key];\n      overridableKeys[key] = true;\n    }\n  }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n  startLine, startLineStart, startPos) {\n\n  var index, quantity;\n\n  // The output is a plain object here, so keys can only be strings.\n  // We need to convert keyNode to a string, but doing so can hang the process\n  // (deeply nested arrays that explode exponentially using aliases).\n  if (Array.isArray(keyNode)) {\n    keyNode = Array.prototype.slice.call(keyNode);\n\n    for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n      if (Array.isArray(keyNode[index])) {\n        throwError(state, 'nested arrays are not supported inside keys');\n      }\n\n      if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n        keyNode[index] = '[object Object]';\n      }\n    }\n  }\n\n  // Avoid code execution in load() via toString property\n  // (still use its own toString for arrays, timestamps,\n  // and whatever user schema extensions happen to have @@toStringTag)\n  if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n    keyNode = '[object Object]';\n  }\n\n\n  keyNode = String(keyNode);\n\n  if (_result === null) {\n    _result = {};\n  }\n\n  if (keyTag === 'tag:yaml.org,2002:merge') {\n    if (Array.isArray(valueNode)) {\n      for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n        mergeMappings(state, _result, valueNode[index], overridableKeys);\n      }\n    } else {\n      mergeMappings(state, _result, valueNode, overridableKeys);\n    }\n  } else {\n    if (!state.json &&\n        !_hasOwnProperty$1.call(overridableKeys, keyNode) &&\n        _hasOwnProperty$1.call(_result, keyNode)) {\n      state.line = startLine || state.line;\n      state.lineStart = startLineStart || state.lineStart;\n      state.position = startPos || state.position;\n      throwError(state, 'duplicated mapping key');\n    }\n\n    // used for this specific key only because Object.defineProperty is slow\n    if (keyNode === '__proto__') {\n      Object.defineProperty(_result, keyNode, {\n        configurable: true,\n        enumerable: true,\n        writable: true,\n        value: valueNode\n      });\n    } else {\n      _result[keyNode] = valueNode;\n    }\n    delete overridableKeys[keyNode];\n  }\n\n  return _result;\n}\n\nfunction readLineBreak(state) {\n  var ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x0A/* LF */) {\n    state.position++;\n  } else if (ch === 0x0D/* CR */) {\n    state.position++;\n    if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n      state.position++;\n    }\n  } else {\n    throwError(state, 'a line break is expected');\n  }\n\n  state.line += 1;\n  state.lineStart = state.position;\n  state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n  var lineBreaks = 0,\n      ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n    while (is_WHITE_SPACE(ch)) {\n      if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n        state.firstTabInLine = state.position;\n      }\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    if (allowComments && ch === 0x23/* # */) {\n      do {\n        ch = state.input.charCodeAt(++state.position);\n      } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n    }\n\n    if (is_EOL(ch)) {\n      readLineBreak(state);\n\n      ch = state.input.charCodeAt(state.position);\n      lineBreaks++;\n      state.lineIndent = 0;\n\n      while (ch === 0x20/* Space */) {\n        state.lineIndent++;\n        ch = state.input.charCodeAt(++state.position);\n      }\n    } else {\n      break;\n    }\n  }\n\n  if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n    throwWarning(state, 'deficient indentation');\n  }\n\n  return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n  var _position = state.position,\n      ch;\n\n  ch = state.input.charCodeAt(_position);\n\n  // Condition state.position === state.lineStart is tested\n  // in parent on each call, for efficiency. No needs to test here again.\n  if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n      ch === state.input.charCodeAt(_position + 1) &&\n      ch === state.input.charCodeAt(_position + 2)) {\n\n    _position += 3;\n\n    ch = state.input.charCodeAt(_position);\n\n    if (ch === 0 || is_WS_OR_EOL(ch)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction writeFoldedLines(state, count) {\n  if (count === 1) {\n    state.result += ' ';\n  } else if (count > 1) {\n    state.result += common.repeat('\\n', count - 1);\n  }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n  var preceding,\n      following,\n      captureStart,\n      captureEnd,\n      hasPendingContent,\n      _line,\n      _lineStart,\n      _lineIndent,\n      _kind = state.kind,\n      _result = state.result,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (is_WS_OR_EOL(ch)      ||\n      is_FLOW_INDICATOR(ch) ||\n      ch === 0x23/* # */    ||\n      ch === 0x26/* & */    ||\n      ch === 0x2A/* * */    ||\n      ch === 0x21/* ! */    ||\n      ch === 0x7C/* | */    ||\n      ch === 0x3E/* > */    ||\n      ch === 0x27/* ' */    ||\n      ch === 0x22/* \" */    ||\n      ch === 0x25/* % */    ||\n      ch === 0x40/* @ */    ||\n      ch === 0x60/* ` */) {\n    return false;\n  }\n\n  if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n    following = state.input.charCodeAt(state.position + 1);\n\n    if (is_WS_OR_EOL(following) ||\n        withinFlowCollection && is_FLOW_INDICATOR(following)) {\n      return false;\n    }\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  captureStart = captureEnd = state.position;\n  hasPendingContent = false;\n\n  while (ch !== 0) {\n    if (ch === 0x3A/* : */) {\n      following = state.input.charCodeAt(state.position + 1);\n\n      if (is_WS_OR_EOL(following) ||\n          withinFlowCollection && is_FLOW_INDICATOR(following)) {\n        break;\n      }\n\n    } else if (ch === 0x23/* # */) {\n      preceding = state.input.charCodeAt(state.position - 1);\n\n      if (is_WS_OR_EOL(preceding)) {\n        break;\n      }\n\n    } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n               withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n      break;\n\n    } else if (is_EOL(ch)) {\n      _line = state.line;\n      _lineStart = state.lineStart;\n      _lineIndent = state.lineIndent;\n      skipSeparationSpace(state, false, -1);\n\n      if (state.lineIndent >= nodeIndent) {\n        hasPendingContent = true;\n        ch = state.input.charCodeAt(state.position);\n        continue;\n      } else {\n        state.position = captureEnd;\n        state.line = _line;\n        state.lineStart = _lineStart;\n        state.lineIndent = _lineIndent;\n        break;\n      }\n    }\n\n    if (hasPendingContent) {\n      captureSegment(state, captureStart, captureEnd, false);\n      writeFoldedLines(state, state.line - _line);\n      captureStart = captureEnd = state.position;\n      hasPendingContent = false;\n    }\n\n    if (!is_WHITE_SPACE(ch)) {\n      captureEnd = state.position + 1;\n    }\n\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  captureSegment(state, captureStart, captureEnd, false);\n\n  if (state.result) {\n    return true;\n  }\n\n  state.kind = _kind;\n  state.result = _result;\n  return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n  var ch,\n      captureStart, captureEnd;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x27/* ' */) {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  state.position++;\n  captureStart = captureEnd = state.position;\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    if (ch === 0x27/* ' */) {\n      captureSegment(state, captureStart, state.position, true);\n      ch = state.input.charCodeAt(++state.position);\n\n      if (ch === 0x27/* ' */) {\n        captureStart = state.position;\n        state.position++;\n        captureEnd = state.position;\n      } else {\n        return true;\n      }\n\n    } else if (is_EOL(ch)) {\n      captureSegment(state, captureStart, captureEnd, true);\n      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n      captureStart = captureEnd = state.position;\n\n    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n    } else {\n      state.position++;\n      captureEnd = state.position;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n  var captureStart,\n      captureEnd,\n      hexLength,\n      hexResult,\n      tmp,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x22/* \" */) {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  state.position++;\n  captureStart = captureEnd = state.position;\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    if (ch === 0x22/* \" */) {\n      captureSegment(state, captureStart, state.position, true);\n      state.position++;\n      return true;\n\n    } else if (ch === 0x5C/* \\ */) {\n      captureSegment(state, captureStart, state.position, true);\n      ch = state.input.charCodeAt(++state.position);\n\n      if (is_EOL(ch)) {\n        skipSeparationSpace(state, false, nodeIndent);\n\n        // TODO: rework to inline fn with no type cast?\n      } else if (ch < 256 && simpleEscapeCheck[ch]) {\n        state.result += simpleEscapeMap[ch];\n        state.position++;\n\n      } else if ((tmp = escapedHexLen(ch)) > 0) {\n        hexLength = tmp;\n        hexResult = 0;\n\n        for (; hexLength > 0; hexLength--) {\n          ch = state.input.charCodeAt(++state.position);\n\n          if ((tmp = fromHexCode(ch)) >= 0) {\n            hexResult = (hexResult << 4) + tmp;\n\n          } else {\n            throwError(state, 'expected hexadecimal character');\n          }\n        }\n\n        state.result += charFromCodepoint(hexResult);\n\n        state.position++;\n\n      } else {\n        throwError(state, 'unknown escape sequence');\n      }\n\n      captureStart = captureEnd = state.position;\n\n    } else if (is_EOL(ch)) {\n      captureSegment(state, captureStart, captureEnd, true);\n      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n      captureStart = captureEnd = state.position;\n\n    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n    } else {\n      state.position++;\n      captureEnd = state.position;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n  var readNext = true,\n      _line,\n      _lineStart,\n      _pos,\n      _tag     = state.tag,\n      _result,\n      _anchor  = state.anchor,\n      following,\n      terminator,\n      isPair,\n      isExplicitPair,\n      isMapping,\n      overridableKeys = Object.create(null),\n      keyNode,\n      keyTag,\n      valueNode,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x5B/* [ */) {\n    terminator = 0x5D;/* ] */\n    isMapping = false;\n    _result = [];\n  } else if (ch === 0x7B/* { */) {\n    terminator = 0x7D;/* } */\n    isMapping = true;\n    _result = {};\n  } else {\n    return false;\n  }\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n\n  while (ch !== 0) {\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (ch === terminator) {\n      state.position++;\n      state.tag = _tag;\n      state.anchor = _anchor;\n      state.kind = isMapping ? 'mapping' : 'sequence';\n      state.result = _result;\n      return true;\n    } else if (!readNext) {\n      throwError(state, 'missed comma between flow collection entries');\n    } else if (ch === 0x2C/* , */) {\n      // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n      throwError(state, \"expected the node content, but found ','\");\n    }\n\n    keyTag = keyNode = valueNode = null;\n    isPair = isExplicitPair = false;\n\n    if (ch === 0x3F/* ? */) {\n      following = state.input.charCodeAt(state.position + 1);\n\n      if (is_WS_OR_EOL(following)) {\n        isPair = isExplicitPair = true;\n        state.position++;\n        skipSeparationSpace(state, true, nodeIndent);\n      }\n    }\n\n    _line = state.line; // Save the current line.\n    _lineStart = state.lineStart;\n    _pos = state.position;\n    composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n    keyTag = state.tag;\n    keyNode = state.result;\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n      isPair = true;\n      ch = state.input.charCodeAt(++state.position);\n      skipSeparationSpace(state, true, nodeIndent);\n      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n      valueNode = state.result;\n    }\n\n    if (isMapping) {\n      storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n    } else if (isPair) {\n      _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n    } else {\n      _result.push(keyNode);\n    }\n\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (ch === 0x2C/* , */) {\n      readNext = true;\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      readNext = false;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n  var captureStart,\n      folding,\n      chomping       = CHOMPING_CLIP,\n      didReadContent = false,\n      detectedIndent = false,\n      textIndent     = nodeIndent,\n      emptyLines     = 0,\n      atMoreIndented = false,\n      tmp,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x7C/* | */) {\n    folding = false;\n  } else if (ch === 0x3E/* > */) {\n    folding = true;\n  } else {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n\n  while (ch !== 0) {\n    ch = state.input.charCodeAt(++state.position);\n\n    if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n      if (CHOMPING_CLIP === chomping) {\n        chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n      } else {\n        throwError(state, 'repeat of a chomping mode identifier');\n      }\n\n    } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n      if (tmp === 0) {\n        throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n      } else if (!detectedIndent) {\n        textIndent = nodeIndent + tmp - 1;\n        detectedIndent = true;\n      } else {\n        throwError(state, 'repeat of an indentation width identifier');\n      }\n\n    } else {\n      break;\n    }\n  }\n\n  if (is_WHITE_SPACE(ch)) {\n    do { ch = state.input.charCodeAt(++state.position); }\n    while (is_WHITE_SPACE(ch));\n\n    if (ch === 0x23/* # */) {\n      do { ch = state.input.charCodeAt(++state.position); }\n      while (!is_EOL(ch) && (ch !== 0));\n    }\n  }\n\n  while (ch !== 0) {\n    readLineBreak(state);\n    state.lineIndent = 0;\n\n    ch = state.input.charCodeAt(state.position);\n\n    while ((!detectedIndent || state.lineIndent < textIndent) &&\n           (ch === 0x20/* Space */)) {\n      state.lineIndent++;\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    if (!detectedIndent && state.lineIndent > textIndent) {\n      textIndent = state.lineIndent;\n    }\n\n    if (is_EOL(ch)) {\n      emptyLines++;\n      continue;\n    }\n\n    // End of the scalar.\n    if (state.lineIndent < textIndent) {\n\n      // Perform the chomping.\n      if (chomping === CHOMPING_KEEP) {\n        state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n      } else if (chomping === CHOMPING_CLIP) {\n        if (didReadContent) { // i.e. only if the scalar is not empty.\n          state.result += '\\n';\n        }\n      }\n\n      // Break this `while` cycle and go to the funciton's epilogue.\n      break;\n    }\n\n    // Folded style: use fancy rules to handle line breaks.\n    if (folding) {\n\n      // Lines starting with white space characters (more-indented lines) are not folded.\n      if (is_WHITE_SPACE(ch)) {\n        atMoreIndented = true;\n        // except for the first content line (cf. Example 8.1)\n        state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n      // End of more-indented block.\n      } else if (atMoreIndented) {\n        atMoreIndented = false;\n        state.result += common.repeat('\\n', emptyLines + 1);\n\n      // Just one line break - perceive as the same line.\n      } else if (emptyLines === 0) {\n        if (didReadContent) { // i.e. only if we have already read some scalar content.\n          state.result += ' ';\n        }\n\n      // Several line breaks - perceive as different lines.\n      } else {\n        state.result += common.repeat('\\n', emptyLines);\n      }\n\n    // Literal style: just add exact number of line breaks between content lines.\n    } else {\n      // Keep all line breaks except the header line break.\n      state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n    }\n\n    didReadContent = true;\n    detectedIndent = true;\n    emptyLines = 0;\n    captureStart = state.position;\n\n    while (!is_EOL(ch) && (ch !== 0)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    captureSegment(state, captureStart, state.position, false);\n  }\n\n  return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n  var _line,\n      _tag      = state.tag,\n      _anchor   = state.anchor,\n      _result   = [],\n      following,\n      detected  = false,\n      ch;\n\n  // there is a leading tab before this token, so it can't be a block sequence/mapping;\n  // it can still be flow sequence/mapping or a scalar\n  if (state.firstTabInLine !== -1) return false;\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n    if (state.firstTabInLine !== -1) {\n      state.position = state.firstTabInLine;\n      throwError(state, 'tab characters must not be used in indentation');\n    }\n\n    if (ch !== 0x2D/* - */) {\n      break;\n    }\n\n    following = state.input.charCodeAt(state.position + 1);\n\n    if (!is_WS_OR_EOL(following)) {\n      break;\n    }\n\n    detected = true;\n    state.position++;\n\n    if (skipSeparationSpace(state, true, -1)) {\n      if (state.lineIndent <= nodeIndent) {\n        _result.push(null);\n        ch = state.input.charCodeAt(state.position);\n        continue;\n      }\n    }\n\n    _line = state.line;\n    composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n    _result.push(state.result);\n    skipSeparationSpace(state, true, -1);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n      throwError(state, 'bad indentation of a sequence entry');\n    } else if (state.lineIndent < nodeIndent) {\n      break;\n    }\n  }\n\n  if (detected) {\n    state.tag = _tag;\n    state.anchor = _anchor;\n    state.kind = 'sequence';\n    state.result = _result;\n    return true;\n  }\n  return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n  var following,\n      allowCompact,\n      _line,\n      _keyLine,\n      _keyLineStart,\n      _keyPos,\n      _tag          = state.tag,\n      _anchor       = state.anchor,\n      _result       = {},\n      overridableKeys = Object.create(null),\n      keyTag        = null,\n      keyNode       = null,\n      valueNode     = null,\n      atExplicitKey = false,\n      detected      = false,\n      ch;\n\n  // there is a leading tab before this token, so it can't be a block sequence/mapping;\n  // it can still be flow sequence/mapping or a scalar\n  if (state.firstTabInLine !== -1) return false;\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n    if (!atExplicitKey && state.firstTabInLine !== -1) {\n      state.position = state.firstTabInLine;\n      throwError(state, 'tab characters must not be used in indentation');\n    }\n\n    following = state.input.charCodeAt(state.position + 1);\n    _line = state.line; // Save the current line.\n\n    //\n    // Explicit notation case. There are two separate blocks:\n    // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n    //\n    if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n      if (ch === 0x3F/* ? */) {\n        if (atExplicitKey) {\n          storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n          keyTag = keyNode = valueNode = null;\n        }\n\n        detected = true;\n        atExplicitKey = true;\n        allowCompact = true;\n\n      } else if (atExplicitKey) {\n        // i.e. 0x3A/* : */ === character after the explicit key.\n        atExplicitKey = false;\n        allowCompact = true;\n\n      } else {\n        throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n      }\n\n      state.position += 1;\n      ch = following;\n\n    //\n    // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n    //\n    } else {\n      _keyLine = state.line;\n      _keyLineStart = state.lineStart;\n      _keyPos = state.position;\n\n      if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n        // Neither implicit nor explicit notation.\n        // Reading is done. Go to the epilogue.\n        break;\n      }\n\n      if (state.line === _line) {\n        ch = state.input.charCodeAt(state.position);\n\n        while (is_WHITE_SPACE(ch)) {\n          ch = state.input.charCodeAt(++state.position);\n        }\n\n        if (ch === 0x3A/* : */) {\n          ch = state.input.charCodeAt(++state.position);\n\n          if (!is_WS_OR_EOL(ch)) {\n            throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n          }\n\n          if (atExplicitKey) {\n            storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n            keyTag = keyNode = valueNode = null;\n          }\n\n          detected = true;\n          atExplicitKey = false;\n          allowCompact = false;\n          keyTag = state.tag;\n          keyNode = state.result;\n\n        } else if (detected) {\n          throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n        } else {\n          state.tag = _tag;\n          state.anchor = _anchor;\n          return true; // Keep the result of `composeNode`.\n        }\n\n      } else if (detected) {\n        throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n      } else {\n        state.tag = _tag;\n        state.anchor = _anchor;\n        return true; // Keep the result of `composeNode`.\n      }\n    }\n\n    //\n    // Common reading code for both explicit and implicit notations.\n    //\n    if (state.line === _line || state.lineIndent > nodeIndent) {\n      if (atExplicitKey) {\n        _keyLine = state.line;\n        _keyLineStart = state.lineStart;\n        _keyPos = state.position;\n      }\n\n      if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n        if (atExplicitKey) {\n          keyNode = state.result;\n        } else {\n          valueNode = state.result;\n        }\n      }\n\n      if (!atExplicitKey) {\n        storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n        keyTag = keyNode = valueNode = null;\n      }\n\n      skipSeparationSpace(state, true, -1);\n      ch = state.input.charCodeAt(state.position);\n    }\n\n    if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n      throwError(state, 'bad indentation of a mapping entry');\n    } else if (state.lineIndent < nodeIndent) {\n      break;\n    }\n  }\n\n  //\n  // Epilogue.\n  //\n\n  // Special case: last mapping's node contains only the key in explicit notation.\n  if (atExplicitKey) {\n    storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n  }\n\n  // Expose the resulting mapping.\n  if (detected) {\n    state.tag = _tag;\n    state.anchor = _anchor;\n    state.kind = 'mapping';\n    state.result = _result;\n  }\n\n  return detected;\n}\n\nfunction readTagProperty(state) {\n  var _position,\n      isVerbatim = false,\n      isNamed    = false,\n      tagHandle,\n      tagName,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x21/* ! */) return false;\n\n  if (state.tag !== null) {\n    throwError(state, 'duplication of a tag property');\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n\n  if (ch === 0x3C/* < */) {\n    isVerbatim = true;\n    ch = state.input.charCodeAt(++state.position);\n\n  } else if (ch === 0x21/* ! */) {\n    isNamed = true;\n    tagHandle = '!!';\n    ch = state.input.charCodeAt(++state.position);\n\n  } else {\n    tagHandle = '!';\n  }\n\n  _position = state.position;\n\n  if (isVerbatim) {\n    do { ch = state.input.charCodeAt(++state.position); }\n    while (ch !== 0 && ch !== 0x3E/* > */);\n\n    if (state.position < state.length) {\n      tagName = state.input.slice(_position, state.position);\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      throwError(state, 'unexpected end of the stream within a verbatim tag');\n    }\n  } else {\n    while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n      if (ch === 0x21/* ! */) {\n        if (!isNamed) {\n          tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n          if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n            throwError(state, 'named tag handle cannot contain such characters');\n          }\n\n          isNamed = true;\n          _position = state.position + 1;\n        } else {\n          throwError(state, 'tag suffix cannot contain exclamation marks');\n        }\n      }\n\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    tagName = state.input.slice(_position, state.position);\n\n    if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n      throwError(state, 'tag suffix cannot contain flow indicator characters');\n    }\n  }\n\n  if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n    throwError(state, 'tag name cannot contain such characters: ' + tagName);\n  }\n\n  try {\n    tagName = decodeURIComponent(tagName);\n  } catch (err) {\n    throwError(state, 'tag name is malformed: ' + tagName);\n  }\n\n  if (isVerbatim) {\n    state.tag = tagName;\n\n  } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) {\n    state.tag = state.tagMap[tagHandle] + tagName;\n\n  } else if (tagHandle === '!') {\n    state.tag = '!' + tagName;\n\n  } else if (tagHandle === '!!') {\n    state.tag = 'tag:yaml.org,2002:' + tagName;\n\n  } else {\n    throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n  }\n\n  return true;\n}\n\nfunction readAnchorProperty(state) {\n  var _position,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x26/* & */) return false;\n\n  if (state.anchor !== null) {\n    throwError(state, 'duplication of an anchor property');\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n  _position = state.position;\n\n  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  if (state.position === _position) {\n    throwError(state, 'name of an anchor node must contain at least one character');\n  }\n\n  state.anchor = state.input.slice(_position, state.position);\n  return true;\n}\n\nfunction readAlias(state) {\n  var _position, alias,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x2A/* * */) return false;\n\n  ch = state.input.charCodeAt(++state.position);\n  _position = state.position;\n\n  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  if (state.position === _position) {\n    throwError(state, 'name of an alias node must contain at least one character');\n  }\n\n  alias = state.input.slice(_position, state.position);\n\n  if (!_hasOwnProperty$1.call(state.anchorMap, alias)) {\n    throwError(state, 'unidentified alias \"' + alias + '\"');\n  }\n\n  state.result = state.anchorMap[alias];\n  skipSeparationSpace(state, true, -1);\n  return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n  var allowBlockStyles,\n      allowBlockScalars,\n      allowBlockCollections,\n      indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n      atNewLine  = false,\n      hasContent = false,\n      typeIndex,\n      typeQuantity,\n      typeList,\n      type,\n      flowIndent,\n      blockIndent;\n\n  if (state.listener !== null) {\n    state.listener('open', state);\n  }\n\n  state.tag    = null;\n  state.anchor = null;\n  state.kind   = null;\n  state.result = null;\n\n  allowBlockStyles = allowBlockScalars = allowBlockCollections =\n    CONTEXT_BLOCK_OUT === nodeContext ||\n    CONTEXT_BLOCK_IN  === nodeContext;\n\n  if (allowToSeek) {\n    if (skipSeparationSpace(state, true, -1)) {\n      atNewLine = true;\n\n      if (state.lineIndent > parentIndent) {\n        indentStatus = 1;\n      } else if (state.lineIndent === parentIndent) {\n        indentStatus = 0;\n      } else if (state.lineIndent < parentIndent) {\n        indentStatus = -1;\n      }\n    }\n  }\n\n  if (indentStatus === 1) {\n    while (readTagProperty(state) || readAnchorProperty(state)) {\n      if (skipSeparationSpace(state, true, -1)) {\n        atNewLine = true;\n        allowBlockCollections = allowBlockStyles;\n\n        if (state.lineIndent > parentIndent) {\n          indentStatus = 1;\n        } else if (state.lineIndent === parentIndent) {\n          indentStatus = 0;\n        } else if (state.lineIndent < parentIndent) {\n          indentStatus = -1;\n        }\n      } else {\n        allowBlockCollections = false;\n      }\n    }\n  }\n\n  if (allowBlockCollections) {\n    allowBlockCollections = atNewLine || allowCompact;\n  }\n\n  if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n    if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n      flowIndent = parentIndent;\n    } else {\n      flowIndent = parentIndent + 1;\n    }\n\n    blockIndent = state.position - state.lineStart;\n\n    if (indentStatus === 1) {\n      if (allowBlockCollections &&\n          (readBlockSequence(state, blockIndent) ||\n           readBlockMapping(state, blockIndent, flowIndent)) ||\n          readFlowCollection(state, flowIndent)) {\n        hasContent = true;\n      } else {\n        if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n            readSingleQuotedScalar(state, flowIndent) ||\n            readDoubleQuotedScalar(state, flowIndent)) {\n          hasContent = true;\n\n        } else if (readAlias(state)) {\n          hasContent = true;\n\n          if (state.tag !== null || state.anchor !== null) {\n            throwError(state, 'alias node should not have any properties');\n          }\n\n        } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n          hasContent = true;\n\n          if (state.tag === null) {\n            state.tag = '?';\n          }\n        }\n\n        if (state.anchor !== null) {\n          state.anchorMap[state.anchor] = state.result;\n        }\n      }\n    } else if (indentStatus === 0) {\n      // Special case: block sequences are allowed to have same indentation level as the parent.\n      // http://www.yaml.org/spec/1.2/spec.html#id2799784\n      hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n    }\n  }\n\n  if (state.tag === null) {\n    if (state.anchor !== null) {\n      state.anchorMap[state.anchor] = state.result;\n    }\n\n  } else if (state.tag === '?') {\n    // Implicit resolving is not allowed for non-scalar types, and '?'\n    // non-specific tag is only automatically assigned to plain scalars.\n    //\n    // We only need to check kind conformity in case user explicitly assigns '?'\n    // tag, for example like this: \"!<?> [0]\"\n    //\n    if (state.result !== null && state.kind !== 'scalar') {\n      throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n    }\n\n    for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n      type = state.implicitTypes[typeIndex];\n\n      if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n        state.result = type.construct(state.result);\n        state.tag = type.tag;\n        if (state.anchor !== null) {\n          state.anchorMap[state.anchor] = state.result;\n        }\n        break;\n      }\n    }\n  } else if (state.tag !== '!') {\n    if (_hasOwnProperty$1.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n      type = state.typeMap[state.kind || 'fallback'][state.tag];\n    } else {\n      // looking for multi type\n      type = null;\n      typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n      for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n        if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n          type = typeList[typeIndex];\n          break;\n        }\n      }\n    }\n\n    if (!type) {\n      throwError(state, 'unknown tag !<' + state.tag + '>');\n    }\n\n    if (state.result !== null && type.kind !== state.kind) {\n      throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n    }\n\n    if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n      throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n    } else {\n      state.result = type.construct(state.result, state.tag);\n      if (state.anchor !== null) {\n        state.anchorMap[state.anchor] = state.result;\n      }\n    }\n  }\n\n  if (state.listener !== null) {\n    state.listener('close', state);\n  }\n  return state.tag !== null ||  state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n  var documentStart = state.position,\n      _position,\n      directiveName,\n      directiveArgs,\n      hasDirectives = false,\n      ch;\n\n  state.version = null;\n  state.checkLineBreaks = state.legacy;\n  state.tagMap = Object.create(null);\n  state.anchorMap = Object.create(null);\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    skipSeparationSpace(state, true, -1);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n      break;\n    }\n\n    hasDirectives = true;\n    ch = state.input.charCodeAt(++state.position);\n    _position = state.position;\n\n    while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    directiveName = state.input.slice(_position, state.position);\n    directiveArgs = [];\n\n    if (directiveName.length < 1) {\n      throwError(state, 'directive name must not be less than one character in length');\n    }\n\n    while (ch !== 0) {\n      while (is_WHITE_SPACE(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n\n      if (ch === 0x23/* # */) {\n        do { ch = state.input.charCodeAt(++state.position); }\n        while (ch !== 0 && !is_EOL(ch));\n        break;\n      }\n\n      if (is_EOL(ch)) break;\n\n      _position = state.position;\n\n      while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n\n      directiveArgs.push(state.input.slice(_position, state.position));\n    }\n\n    if (ch !== 0) readLineBreak(state);\n\n    if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n      directiveHandlers[directiveName](state, directiveName, directiveArgs);\n    } else {\n      throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n    }\n  }\n\n  skipSeparationSpace(state, true, -1);\n\n  if (state.lineIndent === 0 &&\n      state.input.charCodeAt(state.position)     === 0x2D/* - */ &&\n      state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n      state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n    state.position += 3;\n    skipSeparationSpace(state, true, -1);\n\n  } else if (hasDirectives) {\n    throwError(state, 'directives end mark is expected');\n  }\n\n  composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n  skipSeparationSpace(state, true, -1);\n\n  if (state.checkLineBreaks &&\n      PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n    throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n  }\n\n  state.documents.push(state.result);\n\n  if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n    if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n      state.position += 3;\n      skipSeparationSpace(state, true, -1);\n    }\n    return;\n  }\n\n  if (state.position < (state.length - 1)) {\n    throwError(state, 'end of the stream or a document separator is expected');\n  } else {\n    return;\n  }\n}\n\n\nfunction loadDocuments(input, options) {\n  input = String(input);\n  options = options || {};\n\n  if (input.length !== 0) {\n\n    // Add tailing `\\n` if not exists\n    if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n        input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n      input += '\\n';\n    }\n\n    // Strip BOM\n    if (input.charCodeAt(0) === 0xFEFF) {\n      input = input.slice(1);\n    }\n  }\n\n  var state = new State$1(input, options);\n\n  var nullpos = input.indexOf('\\0');\n\n  if (nullpos !== -1) {\n    state.position = nullpos;\n    throwError(state, 'null byte is not allowed in input');\n  }\n\n  // Use 0 as string terminator. That significantly simplifies bounds check.\n  state.input += '\\0';\n\n  while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n    state.lineIndent += 1;\n    state.position += 1;\n  }\n\n  while (state.position < (state.length - 1)) {\n    readDocument(state);\n  }\n\n  return state.documents;\n}\n\n\nfunction loadAll$1(input, iterator, options) {\n  if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n    options = iterator;\n    iterator = null;\n  }\n\n  var documents = loadDocuments(input, options);\n\n  if (typeof iterator !== 'function') {\n    return documents;\n  }\n\n  for (var index = 0, length = documents.length; index < length; index += 1) {\n    iterator(documents[index]);\n  }\n}\n\n\nfunction load$1(input, options) {\n  var documents = loadDocuments(input, options);\n\n  if (documents.length === 0) {\n    /*eslint-disable no-undefined*/\n    return undefined;\n  } else if (documents.length === 1) {\n    return documents[0];\n  }\n  throw new exception('expected a single document in the stream, but found more');\n}\n\n\nvar loadAll_1 = loadAll$1;\nvar load_1    = load$1;\n\nvar loader = {\n\tloadAll: loadAll_1,\n\tload: load_1\n};\n\n/*eslint-disable no-use-before-define*/\n\n\n\n\n\nvar _toString       = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM                  = 0xFEFF;\nvar CHAR_TAB                  = 0x09; /* Tab */\nvar CHAR_LINE_FEED            = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN      = 0x0D; /* CR */\nvar CHAR_SPACE                = 0x20; /* Space */\nvar CHAR_EXCLAMATION          = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE         = 0x22; /* \" */\nvar CHAR_SHARP                = 0x23; /* # */\nvar CHAR_PERCENT              = 0x25; /* % */\nvar CHAR_AMPERSAND            = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE         = 0x27; /* ' */\nvar CHAR_ASTERISK             = 0x2A; /* * */\nvar CHAR_COMMA                = 0x2C; /* , */\nvar CHAR_MINUS                = 0x2D; /* - */\nvar CHAR_COLON                = 0x3A; /* : */\nvar CHAR_EQUALS               = 0x3D; /* = */\nvar CHAR_GREATER_THAN         = 0x3E; /* > */\nvar CHAR_QUESTION             = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT        = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET  = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT         = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET   = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE        = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET  = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00]   = '\\\\0';\nESCAPE_SEQUENCES[0x07]   = '\\\\a';\nESCAPE_SEQUENCES[0x08]   = '\\\\b';\nESCAPE_SEQUENCES[0x09]   = '\\\\t';\nESCAPE_SEQUENCES[0x0A]   = '\\\\n';\nESCAPE_SEQUENCES[0x0B]   = '\\\\v';\nESCAPE_SEQUENCES[0x0C]   = '\\\\f';\nESCAPE_SEQUENCES[0x0D]   = '\\\\r';\nESCAPE_SEQUENCES[0x1B]   = '\\\\e';\nESCAPE_SEQUENCES[0x22]   = '\\\\\"';\nESCAPE_SEQUENCES[0x5C]   = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85]   = '\\\\N';\nESCAPE_SEQUENCES[0xA0]   = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n  'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n  'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n  var result, keys, index, length, tag, style, type;\n\n  if (map === null) return {};\n\n  result = {};\n  keys = Object.keys(map);\n\n  for (index = 0, length = keys.length; index < length; index += 1) {\n    tag = keys[index];\n    style = String(map[tag]);\n\n    if (tag.slice(0, 2) === '!!') {\n      tag = 'tag:yaml.org,2002:' + tag.slice(2);\n    }\n    type = schema.compiledTypeMap['fallback'][tag];\n\n    if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n      style = type.styleAliases[style];\n    }\n\n    result[tag] = style;\n  }\n\n  return result;\n}\n\nfunction encodeHex(character) {\n  var string, handle, length;\n\n  string = character.toString(16).toUpperCase();\n\n  if (character <= 0xFF) {\n    handle = 'x';\n    length = 2;\n  } else if (character <= 0xFFFF) {\n    handle = 'u';\n    length = 4;\n  } else if (character <= 0xFFFFFFFF) {\n    handle = 'U';\n    length = 8;\n  } else {\n    throw new exception('code point within a string may not be greater than 0xFFFFFFFF');\n  }\n\n  return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n    QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n  this.schema        = options['schema'] || _default;\n  this.indent        = Math.max(1, (options['indent'] || 2));\n  this.noArrayIndent = options['noArrayIndent'] || false;\n  this.skipInvalid   = options['skipInvalid'] || false;\n  this.flowLevel     = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n  this.styleMap      = compileStyleMap(this.schema, options['styles'] || null);\n  this.sortKeys      = options['sortKeys'] || false;\n  this.lineWidth     = options['lineWidth'] || 80;\n  this.noRefs        = options['noRefs'] || false;\n  this.noCompatMode  = options['noCompatMode'] || false;\n  this.condenseFlow  = options['condenseFlow'] || false;\n  this.quotingType   = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n  this.forceQuotes   = options['forceQuotes'] || false;\n  this.replacer      = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n  this.implicitTypes = this.schema.compiledImplicit;\n  this.explicitTypes = this.schema.compiledExplicit;\n\n  this.tag = null;\n  this.result = '';\n\n  this.duplicates = [];\n  this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n  var ind = common.repeat(' ', spaces),\n      position = 0,\n      next = -1,\n      result = '',\n      line,\n      length = string.length;\n\n  while (position < length) {\n    next = string.indexOf('\\n', position);\n    if (next === -1) {\n      line = string.slice(position);\n      position = length;\n    } else {\n      line = string.slice(position, next + 1);\n      position = next + 1;\n    }\n\n    if (line.length && line !== '\\n') result += ind;\n\n    result += line;\n  }\n\n  return result;\n}\n\nfunction generateNextLine(state, level) {\n  return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n  var index, length, type;\n\n  for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n    type = state.implicitTypes[index];\n\n    if (type.resolve(str)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n  return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n  return  (0x00020 <= c && c <= 0x00007E)\n      || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n      || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n      ||  (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char  ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n  return isPrintable(c)\n    && c !== CHAR_BOM\n    // - b-char\n    && c !== CHAR_CARRIAGE_RETURN\n    && c !== CHAR_LINE_FEED;\n}\n\n// [127]  ns-plain-safe(c) ::= c = flow-out  ⇒ ns-plain-safe-out\n//                             c = flow-in   ⇒ ns-plain-safe-in\n//                             c = block-key ⇒ ns-plain-safe-out\n//                             c = flow-key  ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129]  ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130]  ns-plain-char(c) ::=  ( ns-plain-safe(c) - “:” - “#” )\n//                            | ( /* An ns-char preceding */ “#” )\n//                            | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n  var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n  var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n  return (\n    // ns-plain-safe\n    inblock ? // c = flow-in\n      cIsNsCharOrWhitespace\n      : cIsNsCharOrWhitespace\n        // - c-flow-indicator\n        && c !== CHAR_COMMA\n        && c !== CHAR_LEFT_SQUARE_BRACKET\n        && c !== CHAR_RIGHT_SQUARE_BRACKET\n        && c !== CHAR_LEFT_CURLY_BRACKET\n        && c !== CHAR_RIGHT_CURLY_BRACKET\n  )\n    // ns-plain-char\n    && c !== CHAR_SHARP // false on '#'\n    && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n    || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n    || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n  // Uses a subset of ns-char - c-indicator\n  // where ns-char = nb-char - s-white.\n  // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n  return isPrintable(c) && c !== CHAR_BOM\n    && !isWhitespace(c) // - s-white\n    // - (c-indicator ::=\n    // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n    && c !== CHAR_MINUS\n    && c !== CHAR_QUESTION\n    && c !== CHAR_COLON\n    && c !== CHAR_COMMA\n    && c !== CHAR_LEFT_SQUARE_BRACKET\n    && c !== CHAR_RIGHT_SQUARE_BRACKET\n    && c !== CHAR_LEFT_CURLY_BRACKET\n    && c !== CHAR_RIGHT_CURLY_BRACKET\n    // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n    && c !== CHAR_SHARP\n    && c !== CHAR_AMPERSAND\n    && c !== CHAR_ASTERISK\n    && c !== CHAR_EXCLAMATION\n    && c !== CHAR_VERTICAL_LINE\n    && c !== CHAR_EQUALS\n    && c !== CHAR_GREATER_THAN\n    && c !== CHAR_SINGLE_QUOTE\n    && c !== CHAR_DOUBLE_QUOTE\n    // | “%” | “@” | “`”)\n    && c !== CHAR_PERCENT\n    && c !== CHAR_COMMERCIAL_AT\n    && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n  // just not whitespace or colon, it will be checked to be plain character later\n  return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n  var first = string.charCodeAt(pos), second;\n  if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n    second = string.charCodeAt(pos + 1);\n    if (second >= 0xDC00 && second <= 0xDFFF) {\n      // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n      return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n    }\n  }\n  return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n  var leadingSpaceRe = /^\\n* /;\n  return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN   = 1,\n    STYLE_SINGLE  = 2,\n    STYLE_LITERAL = 3,\n    STYLE_FOLDED  = 4,\n    STYLE_DOUBLE  = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n//    STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n//    STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n//    STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n  testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n  var i;\n  var char = 0;\n  var prevChar = null;\n  var hasLineBreak = false;\n  var hasFoldableLine = false; // only checked if shouldTrackWidth\n  var shouldTrackWidth = lineWidth !== -1;\n  var previousLineBreak = -1; // count the first line correctly\n  var plain = isPlainSafeFirst(codePointAt(string, 0))\n          && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n  if (singleLineOnly || forceQuotes) {\n    // Case: no block styles.\n    // Check for disallowed characters to rule out plain and single.\n    for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n      char = codePointAt(string, i);\n      if (!isPrintable(char)) {\n        return STYLE_DOUBLE;\n      }\n      plain = plain && isPlainSafe(char, prevChar, inblock);\n      prevChar = char;\n    }\n  } else {\n    // Case: block styles permitted.\n    for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n      char = codePointAt(string, i);\n      if (char === CHAR_LINE_FEED) {\n        hasLineBreak = true;\n        // Check if any line can be folded.\n        if (shouldTrackWidth) {\n          hasFoldableLine = hasFoldableLine ||\n            // Foldable line = too long, and not more-indented.\n            (i - previousLineBreak - 1 > lineWidth &&\n             string[previousLineBreak + 1] !== ' ');\n          previousLineBreak = i;\n        }\n      } else if (!isPrintable(char)) {\n        return STYLE_DOUBLE;\n      }\n      plain = plain && isPlainSafe(char, prevChar, inblock);\n      prevChar = char;\n    }\n    // in case the end is missing a \\n\n    hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n      (i - previousLineBreak - 1 > lineWidth &&\n       string[previousLineBreak + 1] !== ' '));\n  }\n  // Although every style can represent \\n without escaping, prefer block styles\n  // for multiline, since they're more readable and they don't add empty lines.\n  // Also prefer folding a super-long line.\n  if (!hasLineBreak && !hasFoldableLine) {\n    // Strings interpretable as another type have to be quoted;\n    // e.g. the string 'true' vs. the boolean true.\n    if (plain && !forceQuotes && !testAmbiguousType(string)) {\n      return STYLE_PLAIN;\n    }\n    return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n  }\n  // Edge case: block indentation indicator can only have one digit.\n  if (indentPerLevel > 9 && needIndentIndicator(string)) {\n    return STYLE_DOUBLE;\n  }\n  // At this point we know block styles are valid.\n  // Prefer literal style unless we want to fold.\n  if (!forceQuotes) {\n    return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n  }\n  return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n//  since the dumper adds its own newline. This always works:\n//    • No ending newline => unaffected; already using strip \"-\" chomping.\n//    • Ending newline    => removed then restored.\n//  Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n  state.dump = (function () {\n    if (string.length === 0) {\n      return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n    }\n    if (!state.noCompatMode) {\n      if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n        return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n      }\n    }\n\n    var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n    // As indentation gets deeper, let the width decrease monotonically\n    // to the lower bound min(state.lineWidth, 40).\n    // Note that this implies\n    //  state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n    //  state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n    // This behaves better than a constant minimum width which disallows narrower options,\n    // or an indent threshold which causes the width to suddenly increase.\n    var lineWidth = state.lineWidth === -1\n      ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n    // Without knowing if keys are implicit/explicit, assume implicit for safety.\n    var singleLineOnly = iskey\n      // No block styles in flow mode.\n      || (state.flowLevel > -1 && level >= state.flowLevel);\n    function testAmbiguity(string) {\n      return testImplicitResolving(state, string);\n    }\n\n    switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n      testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n      case STYLE_PLAIN:\n        return string;\n      case STYLE_SINGLE:\n        return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n      case STYLE_LITERAL:\n        return '|' + blockHeader(string, state.indent)\n          + dropEndingNewline(indentString(string, indent));\n      case STYLE_FOLDED:\n        return '>' + blockHeader(string, state.indent)\n          + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n      case STYLE_DOUBLE:\n        return '\"' + escapeString(string) + '\"';\n      default:\n        throw new exception('impossible error: invalid scalar style');\n    }\n  }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n  var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n  // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n  var clip =          string[string.length - 1] === '\\n';\n  var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n  var chomp = keep ? '+' : (clip ? '' : '-');\n\n  return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n  return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n  // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n  // unless they're before or after a more-indented line, or at the very\n  // beginning or end, in which case $k$ maps to $k$.\n  // Therefore, parse each chunk as newline(s) followed by a content line.\n  var lineRe = /(\\n+)([^\\n]*)/g;\n\n  // first line (possibly an empty line)\n  var result = (function () {\n    var nextLF = string.indexOf('\\n');\n    nextLF = nextLF !== -1 ? nextLF : string.length;\n    lineRe.lastIndex = nextLF;\n    return foldLine(string.slice(0, nextLF), width);\n  }());\n  // If we haven't reached the first content line yet, don't add an extra \\n.\n  var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n  var moreIndented;\n\n  // rest of the lines\n  var match;\n  while ((match = lineRe.exec(string))) {\n    var prefix = match[1], line = match[2];\n    moreIndented = (line[0] === ' ');\n    result += prefix\n      + (!prevMoreIndented && !moreIndented && line !== ''\n        ? '\\n' : '')\n      + foldLine(line, width);\n    prevMoreIndented = moreIndented;\n  }\n\n  return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n  if (line === '' || line[0] === ' ') return line;\n\n  // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n  var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n  var match;\n  // start is an inclusive index. end, curr, and next are exclusive.\n  var start = 0, end, curr = 0, next = 0;\n  var result = '';\n\n  // Invariants: 0 <= start <= length-1.\n  //   0 <= curr <= next <= max(0, length-2). curr - start <= width.\n  // Inside the loop:\n  //   A match implies length >= 2, so curr and next are <= length-2.\n  while ((match = breakRe.exec(line))) {\n    next = match.index;\n    // maintain invariant: curr - start <= width\n    if (next - start > width) {\n      end = (curr > start) ? curr : next; // derive end <= length-2\n      result += '\\n' + line.slice(start, end);\n      // skip the space that was output as \\n\n      start = end + 1;                    // derive start <= length-1\n    }\n    curr = next;\n  }\n\n  // By the invariants, start <= length-1, so there is something left over.\n  // It is either the whole string or a part starting from non-whitespace.\n  result += '\\n';\n  // Insert a break if the remainder is too long and there is a break available.\n  if (line.length - start > width && curr > start) {\n    result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n  } else {\n    result += line.slice(start);\n  }\n\n  return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n  var result = '';\n  var char = 0;\n  var escapeSeq;\n\n  for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n    char = codePointAt(string, i);\n    escapeSeq = ESCAPE_SEQUENCES[char];\n\n    if (!escapeSeq && isPrintable(char)) {\n      result += string[i];\n      if (char >= 0x10000) result += string[i + 1];\n    } else {\n      result += escapeSeq || encodeHex(char);\n    }\n  }\n\n  return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n  var _result = '',\n      _tag    = state.tag,\n      index,\n      length,\n      value;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    value = object[index];\n\n    if (state.replacer) {\n      value = state.replacer.call(object, String(index), value);\n    }\n\n    // Write only valid elements, put null instead of invalid elements.\n    if (writeNode(state, level, value, false, false) ||\n        (typeof value === 'undefined' &&\n         writeNode(state, level, null, false, false))) {\n\n      if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n      _result += state.dump;\n    }\n  }\n\n  state.tag = _tag;\n  state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n  var _result = '',\n      _tag    = state.tag,\n      index,\n      length,\n      value;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    value = object[index];\n\n    if (state.replacer) {\n      value = state.replacer.call(object, String(index), value);\n    }\n\n    // Write only valid elements, put null instead of invalid elements.\n    if (writeNode(state, level + 1, value, true, true, false, true) ||\n        (typeof value === 'undefined' &&\n         writeNode(state, level + 1, null, true, true, false, true))) {\n\n      if (!compact || _result !== '') {\n        _result += generateNextLine(state, level);\n      }\n\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        _result += '-';\n      } else {\n        _result += '- ';\n      }\n\n      _result += state.dump;\n    }\n  }\n\n  state.tag = _tag;\n  state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n  var _result       = '',\n      _tag          = state.tag,\n      objectKeyList = Object.keys(object),\n      index,\n      length,\n      objectKey,\n      objectValue,\n      pairBuffer;\n\n  for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n    pairBuffer = '';\n    if (_result !== '') pairBuffer += ', ';\n\n    if (state.condenseFlow) pairBuffer += '\"';\n\n    objectKey = objectKeyList[index];\n    objectValue = object[objectKey];\n\n    if (state.replacer) {\n      objectValue = state.replacer.call(object, objectKey, objectValue);\n    }\n\n    if (!writeNode(state, level, objectKey, false, false)) {\n      continue; // Skip this pair because of invalid key;\n    }\n\n    if (state.dump.length > 1024) pairBuffer += '? ';\n\n    pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n    if (!writeNode(state, level, objectValue, false, false)) {\n      continue; // Skip this pair because of invalid value.\n    }\n\n    pairBuffer += state.dump;\n\n    // Both key and value are valid.\n    _result += pairBuffer;\n  }\n\n  state.tag = _tag;\n  state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n  var _result       = '',\n      _tag          = state.tag,\n      objectKeyList = Object.keys(object),\n      index,\n      length,\n      objectKey,\n      objectValue,\n      explicitPair,\n      pairBuffer;\n\n  // Allow sorting keys so that the output file is deterministic\n  if (state.sortKeys === true) {\n    // Default sorting\n    objectKeyList.sort();\n  } else if (typeof state.sortKeys === 'function') {\n    // Custom sort function\n    objectKeyList.sort(state.sortKeys);\n  } else if (state.sortKeys) {\n    // Something is wrong\n    throw new exception('sortKeys must be a boolean or a function');\n  }\n\n  for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n    pairBuffer = '';\n\n    if (!compact || _result !== '') {\n      pairBuffer += generateNextLine(state, level);\n    }\n\n    objectKey = objectKeyList[index];\n    objectValue = object[objectKey];\n\n    if (state.replacer) {\n      objectValue = state.replacer.call(object, objectKey, objectValue);\n    }\n\n    if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n      continue; // Skip this pair because of invalid key.\n    }\n\n    explicitPair = (state.tag !== null && state.tag !== '?') ||\n                   (state.dump && state.dump.length > 1024);\n\n    if (explicitPair) {\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        pairBuffer += '?';\n      } else {\n        pairBuffer += '? ';\n      }\n    }\n\n    pairBuffer += state.dump;\n\n    if (explicitPair) {\n      pairBuffer += generateNextLine(state, level);\n    }\n\n    if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n      continue; // Skip this pair because of invalid value.\n    }\n\n    if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n      pairBuffer += ':';\n    } else {\n      pairBuffer += ': ';\n    }\n\n    pairBuffer += state.dump;\n\n    // Both key and value are valid.\n    _result += pairBuffer;\n  }\n\n  state.tag = _tag;\n  state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n  var _result, typeList, index, length, type, style;\n\n  typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n  for (index = 0, length = typeList.length; index < length; index += 1) {\n    type = typeList[index];\n\n    if ((type.instanceOf  || type.predicate) &&\n        (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n        (!type.predicate  || type.predicate(object))) {\n\n      if (explicit) {\n        if (type.multi && type.representName) {\n          state.tag = type.representName(object);\n        } else {\n          state.tag = type.tag;\n        }\n      } else {\n        state.tag = '?';\n      }\n\n      if (type.represent) {\n        style = state.styleMap[type.tag] || type.defaultStyle;\n\n        if (_toString.call(type.represent) === '[object Function]') {\n          _result = type.represent(object, style);\n        } else if (_hasOwnProperty.call(type.represent, style)) {\n          _result = type.represent[style](object, style);\n        } else {\n          throw new exception('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n        }\n\n        state.dump = _result;\n      }\n\n      return true;\n    }\n  }\n\n  return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n  state.tag = null;\n  state.dump = object;\n\n  if (!detectType(state, object, false)) {\n    detectType(state, object, true);\n  }\n\n  var type = _toString.call(state.dump);\n  var inblock = block;\n  var tagStr;\n\n  if (block) {\n    block = (state.flowLevel < 0 || state.flowLevel > level);\n  }\n\n  var objectOrArray = type === '[object Object]' || type === '[object Array]',\n      duplicateIndex,\n      duplicate;\n\n  if (objectOrArray) {\n    duplicateIndex = state.duplicates.indexOf(object);\n    duplicate = duplicateIndex !== -1;\n  }\n\n  if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n    compact = false;\n  }\n\n  if (duplicate && state.usedDuplicates[duplicateIndex]) {\n    state.dump = '*ref_' + duplicateIndex;\n  } else {\n    if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n      state.usedDuplicates[duplicateIndex] = true;\n    }\n    if (type === '[object Object]') {\n      if (block && (Object.keys(state.dump).length !== 0)) {\n        writeBlockMapping(state, level, state.dump, compact);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + state.dump;\n        }\n      } else {\n        writeFlowMapping(state, level, state.dump);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n        }\n      }\n    } else if (type === '[object Array]') {\n      if (block && (state.dump.length !== 0)) {\n        if (state.noArrayIndent && !isblockseq && level > 0) {\n          writeBlockSequence(state, level - 1, state.dump, compact);\n        } else {\n          writeBlockSequence(state, level, state.dump, compact);\n        }\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + state.dump;\n        }\n      } else {\n        writeFlowSequence(state, level, state.dump);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n        }\n      }\n    } else if (type === '[object String]') {\n      if (state.tag !== '?') {\n        writeScalar(state, state.dump, level, iskey, inblock);\n      }\n    } else if (type === '[object Undefined]') {\n      return false;\n    } else {\n      if (state.skipInvalid) return false;\n      throw new exception('unacceptable kind of an object to dump ' + type);\n    }\n\n    if (state.tag !== null && state.tag !== '?') {\n      // Need to encode all characters except those allowed by the spec:\n      //\n      // [35] ns-dec-digit    ::=  [#x30-#x39] /* 0-9 */\n      // [36] ns-hex-digit    ::=  ns-dec-digit\n      //                         | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n      // [37] ns-ascii-letter ::=  [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n      // [38] ns-word-char    ::=  ns-dec-digit | ns-ascii-letter | “-”\n      // [39] ns-uri-char     ::=  “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n      //                         | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n      //                         | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n      //\n      // Also need to encode '!' because it has special meaning (end of tag prefix).\n      //\n      tagStr = encodeURI(\n        state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n      ).replace(/!/g, '%21');\n\n      if (state.tag[0] === '!') {\n        tagStr = '!' + tagStr;\n      } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n        tagStr = '!!' + tagStr.slice(18);\n      } else {\n        tagStr = '!<' + tagStr + '>';\n      }\n\n      state.dump = tagStr + ' ' + state.dump;\n    }\n  }\n\n  return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n  var objects = [],\n      duplicatesIndexes = [],\n      index,\n      length;\n\n  inspectNode(object, objects, duplicatesIndexes);\n\n  for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n    state.duplicates.push(objects[duplicatesIndexes[index]]);\n  }\n  state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n  var objectKeyList,\n      index,\n      length;\n\n  if (object !== null && typeof object === 'object') {\n    index = objects.indexOf(object);\n    if (index !== -1) {\n      if (duplicatesIndexes.indexOf(index) === -1) {\n        duplicatesIndexes.push(index);\n      }\n    } else {\n      objects.push(object);\n\n      if (Array.isArray(object)) {\n        for (index = 0, length = object.length; index < length; index += 1) {\n          inspectNode(object[index], objects, duplicatesIndexes);\n        }\n      } else {\n        objectKeyList = Object.keys(object);\n\n        for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n          inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n        }\n      }\n    }\n  }\n}\n\nfunction dump$1(input, options) {\n  options = options || {};\n\n  var state = new State(options);\n\n  if (!state.noRefs) getDuplicateReferences(input, state);\n\n  var value = input;\n\n  if (state.replacer) {\n    value = state.replacer.call({ '': value }, '', value);\n  }\n\n  if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n  return '';\n}\n\nvar dump_1 = dump$1;\n\nvar dumper = {\n\tdump: dump_1\n};\n\nfunction renamed(from, to) {\n  return function () {\n    throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n      'Use yaml.' + to + ' instead, which is now safe by default.');\n  };\n}\n\n\nvar Type                = type;\nvar Schema              = schema;\nvar FAILSAFE_SCHEMA     = failsafe;\nvar JSON_SCHEMA         = json;\nvar CORE_SCHEMA         = core;\nvar DEFAULT_SCHEMA      = _default;\nvar load                = loader.load;\nvar loadAll             = loader.loadAll;\nvar dump                = dumper.dump;\nvar YAMLException       = exception;\n\n// Re-export all types in case user wants to create custom schema\nvar types = {\n  binary:    binary,\n  float:     float,\n  map:       map,\n  null:      _null,\n  pairs:     pairs,\n  set:       set,\n  timestamp: timestamp,\n  bool:      bool,\n  int:       int,\n  merge:     merge,\n  omap:      omap,\n  seq:       seq,\n  str:       str\n};\n\n// Removed functions from JS-YAML 3.0.x\nvar safeLoad            = renamed('safeLoad', 'load');\nvar safeLoadAll         = renamed('safeLoadAll', 'loadAll');\nvar safeDump            = renamed('safeDump', 'dump');\n\nvar jsYaml = {\n\tType: Type,\n\tSchema: Schema,\n\tFAILSAFE_SCHEMA: FAILSAFE_SCHEMA,\n\tJSON_SCHEMA: JSON_SCHEMA,\n\tCORE_SCHEMA: CORE_SCHEMA,\n\tDEFAULT_SCHEMA: DEFAULT_SCHEMA,\n\tload: load,\n\tloadAll: loadAll,\n\tdump: dump,\n\tYAMLException: YAMLException,\n\ttypes: types,\n\tsafeLoad: safeLoad,\n\tsafeLoadAll: safeLoadAll,\n\tsafeDump: safeDump\n};\n\nexport default jsYaml;\nexport { CORE_SCHEMA, DEFAULT_SCHEMA, FAILSAFE_SCHEMA, JSON_SCHEMA, Schema, Type, YAMLException, dump, load, loadAll, safeDump, safeLoad, safeLoadAll, types };\n", "module.exports = require(\"core-js-pure/stable/instance/some\");", "module.exports = require(\"core-js-pure/stable/instance/keys\");", "var _Promise = require(\"@babel/runtime-corejs3/core-js/promise\");\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    _Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new _Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var global = require('../internals/global');\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 = global.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", "var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-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 = global.TypeError;\nvar WeakMap = global.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 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  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, 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", "var 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 boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\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 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/define-iterator');\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 kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: 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", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var getIterator = require('../internals/get-iterator');\n\nmodule.exports = getIterator;\n", "module.exports = require(\"core-js-pure/stable/instance/entries\");", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n    portPattern = /:[0-9]*$/,\n\n    // Special case for a simple path URL\n    simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n    // RFC 2396: characters reserved for delimiting URLs.\n    // We actually just auto-escape these.\n    delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n    // RFC 2396: characters not allowed for various reasons.\n    unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n    autoEscape = ['\\''].concat(unwise),\n    // Characters that are never ever allowed in a hostname.\n    // Note that any invalid chars are also handled, but these\n    // are the ones that are *expected* to be seen, so we fast-path\n    // them.\n    nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n    hostEndingChars = ['/', '?', '#'],\n    hostnameMaxLen = 255,\n    hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n    hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n    // protocols that can allow \"unsafe\" and \"unwise\" chars.\n    unsafeProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that never have a hostname.\n    hostlessProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that always contain a // bit.\n    slashedProtocol = {\n      'http': true,\n      'https': true,\n      'ftp': true,\n      'gopher': true,\n      'file': true,\n      'http:': true,\n      'https:': true,\n      'ftp:': true,\n      'gopher:': true,\n      'file:': true\n    },\n    querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && util.isObject(url) && url instanceof Url) return url;\n\n  var u = new Url;\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n  if (!util.isString(url)) {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  // Copy chrome, IE, opera backslash-handling behavior.\n  // Back slashes before the query string get converted to forward slashes\n  // See: https://code.google.com/p/chromium/issues/detail?id=25916\n  var queryIndex = url.indexOf('?'),\n      splitter =\n          (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n      uSplit = url.split(splitter),\n      slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  // trim before proceeding.\n  // This is to support parse stuff like \"  http://foo.com  \\n\"\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  // figure out if it's got a host\n  // user@server is *always* interpreted as a hostname, and url\n  // resolution will treat //foo/bar as host=foo,path=bar because that's\n  // how the browser resolves relative URLs.\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] &&\n      (slashes || (proto && !slashedProtocol[proto]))) {\n\n    // there's a hostname.\n    // the first instance of /, ?, ;, or # ends the host.\n    //\n    // If there is an @ in the hostname, then non-host chars *are* allowed\n    // to the left of the last @ sign, unless some host-ending character\n    // comes *before* the @-sign.\n    // URLs are obnoxious.\n    //\n    // ex:\n    // http://a@b@c/ => user:a@b host:c\n    // http://a@b?@c => user:a host:c path:/?@c\n\n    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n    // Review our test case against browsers more comprehensively.\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n\n    // at this point, either we have an explicit point where the\n    // auth portion cannot go past, or the last @ char is the decider.\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      // atSign must be in auth portion.\n      // http://a@b/c@d => host:b auth:a path:/c@d\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    // Now we have a portion which is definitely the auth.\n    // Pull that off.\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1)\n      hostEnd = rest.length;\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    // we've indicated that there is a hostname,\n    // so even if it's empty, it has to be present.\n    this.hostname = this.hostname || '';\n\n    // if hostname begins with [ and ends with ]\n    // assume that it's an IPv6 address.\n    var ipv6Hostname = this.hostname[0] === '[' &&\n        this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) continue;\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              // we replace non-ASCII char with a temporary placeholder\n              // we need this to make sure size of hostname is not\n              // broken by replacing non-ASCII by nothing\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      // IDNA Support: Returns a punycoded representation of \"domain\".\n      // It only converts parts of the domain name that\n      // have non-ASCII characters, i.e. it doesn't matter if\n      // you call it with a domain that already is ASCII-only.\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    // strip [ and ] from the hostname\n    // the host field still retains them, though\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  // now rest is set to the post-host stuff.\n  // chop off any delim chars.\n  if (!unsafeProtocol[lowerProto]) {\n\n    // First, make 100% sure that any \"autoEscape\" chars get\n    // escaped, even if encodeURIComponent doesn't think they\n    // need to be.\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1)\n        continue;\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) this.pathname = rest;\n  if (slashedProtocol[lowerProto] &&\n      this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  //to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  // ensure it's an object, and not a string url.\n  // If it's an obj, this is a no-op.\n  // this way, you can call url_format() on strings\n  // to clean up potentially wonky urls.\n  if (util.isString(obj)) obj = urlParse(obj);\n  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n  return obj.format();\n}\n\nUrl.prototype.format = function() {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n      pathname = this.pathname || '',\n      hash = this.hash || '',\n      host = false,\n      query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ?\n        this.hostname :\n        '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query &&\n      util.isObject(this.query) &&\n      Object.keys(this.query).length) {\n    query = querystring.stringify(this.query);\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n  // unless they had them to begin with.\n  if (this.slashes ||\n      (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n  if (search && search.charAt(0) !== '?') search = '?' + search;\n\n  pathname = pathname.replace(/[?#]/g, function(match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) return relative;\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n  if (util.isString(relative)) {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  // hash is always overridden, no matter what.\n  // even href=\"\" will remove it.\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol')\n        result[rkey] = relative[rkey];\n    }\n\n    //urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] &&\n        result.hostname && !result.pathname) {\n      result.path = result.pathname = '/';\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    // if it's a known url protocol, then changing\n    // the protocol does weird things\n    // first, if it's not file:, then we MUST have a host,\n    // and if there was a path\n    // to begin with, then we MUST have a path.\n    // if it is file:, then the host is dropped,\n    // because that's known to be hostless.\n    // anything else is assumed to be absolute.\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift()));\n      if (!relative.host) relative.host = '';\n      if (!relative.hostname) relative.hostname = '';\n      if (relPath[0] !== '') relPath.unshift('');\n      if (relPath.length < 2) relPath.unshift('');\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n      isRelAbs = (\n          relative.host ||\n          relative.pathname && relative.pathname.charAt(0) === '/'\n      ),\n      mustEndAbs = (isRelAbs || isSourceAbs ||\n                    (result.host && relative.pathname)),\n      removeAllDots = mustEndAbs,\n      srcPath = result.pathname && result.pathname.split('/') || [],\n      relPath = relative.pathname && relative.pathname.split('/') || [],\n      psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  // if the url is a non-slashed url, then relative\n  // links like ../.. should be able\n  // to crawl up to the hostname, as well.  This is strange.\n  // result.protocol has already been set by now.\n  // Later on, put the first path part into the host field.\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') srcPath[0] = result.host;\n      else srcPath.unshift(result.host);\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') relPath[0] = relative.host;\n        else relPath.unshift(relative.host);\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = (relative.host || relative.host === '') ?\n                  relative.host : result.host;\n    result.hostname = (relative.hostname || relative.hostname === '') ?\n                      relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    // it's relative\n    // throw away the existing file, and take the new path instead.\n    if (!srcPath) srcPath = [];\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (!util.isNullOrUndefined(relative.search)) {\n    // just pull out the search.\n    // like href='?foo'.\n    // Put this after the other two cases because it simplifies the booleans\n    if (psychotic) {\n      result.hostname = result.host = srcPath.shift();\n      //occationaly the auth can get stuck only in host\n      //this especially happens in cases like\n      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n      var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                       result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.host = result.hostname = authInHost.shift();\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    //to support http.request\n    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n      result.path = (result.pathname ? result.pathname : '') +\n                    (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    // no path at all.  easy.\n    // we've already handled the other stuff above.\n    result.pathname = null;\n    //to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  // if a url ENDs in . or .., then it must get a trailing slash.\n  // however, if it ends in anything else non-slashy,\n  // then it must NOT get a trailing slash.\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (\n      (result.host || relative.host || srcPath.length > 1) &&\n      (last === '.' || last === '..') || last === '');\n\n  // strip single dots, resolve double dots to parent dir\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' &&\n      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' ||\n      (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = result.host = isAbsolute ? '' :\n                                    srcPath.length ? srcPath.shift() : '';\n    //occationaly the auth can get stuck only in host\n    //this especially happens in cases like\n    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n    var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                     result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.host = result.hostname = authInHost.shift();\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (!srcPath.length) {\n    result.pathname = null;\n    result.path = null;\n  } else {\n    result.pathname = srcPath.join('/');\n  }\n\n  //to support request.http\n  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n    result.path = (result.pathname ? result.pathname : '') +\n                  (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function() {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) this.hostname = host;\n};\n", "import parseUrl from \"url-parse\"\nimport win from \"core/window\"\nimport { btoa, buildFormData } from \"core/utils\"\n\nexport const SHOW_AUTH_POPUP = \"show_popup\"\nexport const AUTHORIZE = \"authorize\"\nexport const LOGOUT = \"logout\"\nexport const PRE_AUTHORIZE_OAUTH2 = \"pre_authorize_oauth2\"\nexport const AUTHORIZE_OAUTH2 = \"authorize_oauth2\"\nexport const VALIDATE = \"validate\"\nexport const CONFIGURE_AUTH = \"configure_auth\"\nexport const RESTORE_AUTHORIZATION = \"restore_authorization\"\n\nconst scopeSeparator = \" \"\n\nexport function showDefinitions(payload) {\n  return {\n    type: SHOW_AUTH_POPUP,\n    payload: payload\n  }\n}\n\nexport function authorize(payload) {\n  return {\n    type: AUTHORIZE,\n    payload: payload\n  }\n}\n\nexport const authorizeWithPersistOption = (payload) => ( { authActions } ) => {\n  authActions.authorize(payload)\n  authActions.persistAuthorizationIfNeeded()  \n}\n\nexport function logout(payload) {\n  return {\n    type: LOGOUT,\n    payload: payload\n  }\n}\n\nexport const logoutWithPersistOption = (payload) => ( { authActions } ) => {\n  authActions.logout(payload)\n  authActions.persistAuthorizationIfNeeded()  \n}\n\nexport const preAuthorizeImplicit = (payload) => ( { authActions, errActions } ) => {\n  let { auth , token, isValid } = payload\n  let { schema, name } = auth\n  let flow = schema.get(\"flow\")\n\n  // remove oauth2 property from window after redirect from authentication\n  delete win.swaggerUIRedirectOauth2\n\n  if ( flow !== \"accessCode\" && !isValid ) {\n    errActions.newAuthErr( {\n      authId: name,\n      source: \"auth\",\n      level: \"warning\",\n      message: \"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server\"\n    })\n  }\n\n  if ( token.error ) {\n    errActions.newAuthErr({\n      authId: name,\n      source: \"auth\",\n      level: \"error\",\n      message: JSON.stringify(token)\n    })\n    return\n  }\n\n  authActions.authorizeOauth2WithPersistOption({ auth, token })\n}\n\n\nexport function authorizeOauth2(payload) {\n  return {\n    type: AUTHORIZE_OAUTH2,\n    payload: payload\n  }\n}\n\n\nexport const authorizeOauth2WithPersistOption = (payload) => ( { authActions } ) => {\n  authActions.authorizeOauth2(payload)\n  authActions.persistAuthorizationIfNeeded()  \n}\n\nexport const authorizePassword = ( auth ) => ( { authActions } ) => {\n  let { schema, name, username, password, passwordType, clientId, clientSecret } = auth\n  let form = {\n    grant_type: \"password\",\n    scope: auth.scopes.join(scopeSeparator),\n    username,\n    password\n  }\n  let query = {}\n  let headers = {}\n\n  switch (passwordType) {\n    case \"request-body\":\n      setClientIdAndSecret(form, clientId, clientSecret)\n      break\n\n    case \"basic\":\n      headers.Authorization = \"Basic \" + btoa(clientId + \":\" + clientSecret)\n      break\n    default:\n      console.warn(`Warning: invalid passwordType ${passwordType} was passed, not including client id and secret`)\n  }\n\n  return authActions.authorizeRequest({ body: buildFormData(form), url: schema.get(\"tokenUrl\"), name, headers, query, auth})\n}\n\nfunction setClientIdAndSecret(target, clientId, clientSecret) {\n  if ( clientId ) {\n    Object.assign(target, {client_id: clientId})\n  }\n\n  if ( clientSecret ) {\n    Object.assign(target, {client_secret: clientSecret})\n  }\n}\n\nexport const authorizeApplication = ( auth ) => ( { authActions } ) => {\n  let { schema, scopes, name, clientId, clientSecret } = auth\n  let headers = {\n    Authorization: \"Basic \" + btoa(clientId + \":\" + clientSecret)\n  }\n  let form = {\n    grant_type: \"client_credentials\",\n    scope: scopes.join(scopeSeparator)\n  }\n\n  return authActions.authorizeRequest({body: buildFormData(form), name, url: schema.get(\"tokenUrl\"), auth, headers })\n}\n\nexport const authorizeAccessCodeWithFormParams = ( { auth, redirectUrl } ) => ( { authActions } ) => {\n  let { schema, name, clientId, clientSecret, codeVerifier } = auth\n  let form = {\n    grant_type: \"authorization_code\",\n    code: auth.code,\n    client_id: clientId,\n    client_secret: clientSecret,\n    redirect_uri: redirectUrl,\n    code_verifier: codeVerifier\n  }\n\n  return authActions.authorizeRequest({body: buildFormData(form), name, url: schema.get(\"tokenUrl\"), auth})\n}\n\nexport const authorizeAccessCodeWithBasicAuthentication = ( { auth, redirectUrl } ) => ( { authActions } ) => {\n  let { schema, name, clientId, clientSecret, codeVerifier } = auth\n  let headers = {\n    Authorization: \"Basic \" + btoa(clientId + \":\" + clientSecret)\n  }\n  let form = {\n    grant_type: \"authorization_code\",\n    code: auth.code,\n    client_id: clientId,\n    redirect_uri: redirectUrl,\n    code_verifier: codeVerifier\n  }\n\n  return authActions.authorizeRequest({body: buildFormData(form), name, url: schema.get(\"tokenUrl\"), auth, headers})\n}\n\nexport const authorizeRequest = ( data ) => ( { fn, getConfigs, authActions, errActions, oas3Selectors, specSelectors, authSelectors } ) => {\n  let { body, query={}, headers={}, name, url, auth } = data\n\n  let { additionalQueryStringParams } = authSelectors.getConfigs() || {}\n\n  let parsedUrl\n\n  if (specSelectors.isOAS3()) {\n    let finalServerUrl = oas3Selectors.serverEffectiveValue(oas3Selectors.selectedServer())\n    parsedUrl = parseUrl(url, finalServerUrl, true)\n  } else {\n    parsedUrl = parseUrl(url, specSelectors.url(), true)\n  }\n\n  if(typeof additionalQueryStringParams === \"object\") {\n    parsedUrl.query = Object.assign({}, parsedUrl.query, additionalQueryStringParams)\n  }\n\n  const fetchUrl = parsedUrl.toString()\n\n  let _headers = Object.assign({\n    \"Accept\":\"application/json, text/plain, */*\",\n    \"Content-Type\": \"application/x-www-form-urlencoded\",\n    \"X-Requested-With\": \"XMLHttpRequest\"\n  }, headers)\n\n  fn.fetch({\n    url: fetchUrl,\n    method: \"post\",\n    headers: _headers,\n    query: query,\n    body: body,\n    requestInterceptor: getConfigs().requestInterceptor,\n    responseInterceptor: getConfigs().responseInterceptor\n  })\n  .then(function (response) {\n    let token = JSON.parse(response.data)\n    let error = token && ( token.error || \"\" )\n    let parseError = token && ( token.parseError || \"\" )\n\n    if ( !response.ok ) {\n      errActions.newAuthErr( {\n        authId: name,\n        level: \"error\",\n        source: \"auth\",\n        message: response.statusText\n      } )\n      return\n    }\n\n    if ( error || parseError ) {\n      errActions.newAuthErr({\n        authId: name,\n        level: \"error\",\n        source: \"auth\",\n        message: JSON.stringify(token)\n      })\n      return\n    }\n\n    authActions.authorizeOauth2WithPersistOption({ auth, token})\n  })\n  .catch(e => {\n    let err = new Error(e)\n    let message = err.message\n    // swagger-js wraps the response (if available) into the e.response property;\n    // investigate to check whether there are more details on why the authorization\n    // request failed (according to RFC 6479).\n    // See also https://github.com/swagger-api/swagger-ui/issues/4048\n    if (e.response && e.response.data) {\n      const errData = e.response.data\n      try {\n        const jsonResponse = typeof errData === \"string\" ? JSON.parse(errData) : errData\n        if (jsonResponse.error)\n          message += `, error: ${jsonResponse.error}`\n        if (jsonResponse.error_description)\n          message += `, description: ${jsonResponse.error_description}`\n      } catch (jsonError) {\n        // Ignore\n      }\n    }\n    errActions.newAuthErr( {\n      authId: name,\n      level: \"error\",\n      source: \"auth\",\n      message: message\n    } )\n  })\n}\n\nexport function configureAuth(payload) {\n  return {\n    type: CONFIGURE_AUTH,\n    payload: payload\n  }\n}\n\nexport function restoreAuthorization(payload) {\n  return {\n    type: RESTORE_AUTHORIZATION,\n    payload: payload\n  }\n}\n\nexport const persistAuthorizationIfNeeded = () => ( { authSelectors, getConfigs } ) => {\n  const configs = getConfigs()\n  if (configs.persistAuthorization)\n  {\n    const authorized = authSelectors.authorized()\n    localStorage.setItem(\"authorized\", JSON.stringify(authorized.toJS()))\n  }\n}\n", "var defineProperty = require(\"./defineProperty.js\");\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? Object(arguments[i]) : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}\n\nmodule.exports = _objectSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var 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", "import { createSelector } from \"reselect\"\nimport { sorters } from \"core/utils\"\nimport { fromJS, Set, Map, OrderedMap, List } from \"immutable\"\nimport { paramToIdentifier } from \"../../utils\"\n\nconst DEFAULT_TAG = \"default\"\n\nconst OPERATION_METHODS = [\n  \"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\", \"trace\"\n]\n\nconst state = state => {\n  return state || Map()\n}\n\nexport const lastError = createSelector(\n  state,\n  spec => spec.get(\"lastError\")\n)\n\nexport const url = createSelector(\n  state,\n  spec => spec.get(\"url\")\n)\n\nexport const specStr = createSelector(\n  state,\n  spec => spec.get(\"spec\") || \"\"\n)\n\nexport const specSource = createSelector(\n  state,\n  spec => spec.get(\"specSource\") || \"not-editor\"\n)\n\nexport const specJson = createSelector(\n  state,\n  spec => spec.get(\"json\", Map())\n)\n\nexport const specResolved = createSelector(\n  state,\n  spec => spec.get(\"resolved\", Map())\n)\n\nexport const specResolvedSubtree = (state, path) => {\n  return state.getIn([\"resolvedSubtrees\", ...path], undefined)\n}\n\nconst mergerFn = (oldVal, newVal) => {\n  if(Map.isMap(oldVal) && Map.isMap(newVal)) {\n    if(newVal.get(\"$$ref\")) {\n      // resolver artifacts indicated that this key was directly resolved\n      // so we should drop the old value entirely\n      return newVal\n    }\n\n    return OrderedMap().mergeWith(\n      mergerFn,\n      oldVal,\n      newVal\n    )\n  }\n\n  return newVal\n}\n\nexport const specJsonWithResolvedSubtrees = createSelector(\n  state,\n  spec => OrderedMap().mergeWith(\n    mergerFn,\n    spec.get(\"json\"),\n    spec.get(\"resolvedSubtrees\")\n  )\n)\n\n// Default Spec ( as an object )\nexport const spec = state => {\n  let res = specJson(state)\n  return res\n}\n\nexport const isOAS3 = createSelector(\n  // isOAS3 is stubbed out here to work around an issue with injecting more selectors\n  // in the OAS3 plugin, and to ensure that the function is always available.\n  // It's not perfect, but our hybrid (core+plugin code) implementation for OAS3\n  // needs this. //KS\n  spec,\n\t() => false\n)\n\nexport const info = createSelector(\n  spec,\n\tspec => returnSelfOrNewMap(spec && spec.get(\"info\"))\n)\n\nexport const externalDocs = createSelector(\n  spec,\n\tspec => returnSelfOrNewMap(spec && spec.get(\"externalDocs\"))\n)\n\nexport const version = createSelector(\n\tinfo,\n\tinfo => info && info.get(\"version\")\n)\n\nexport const semver = createSelector(\n\tversion,\n\tversion => /v?([0-9]*)\\.([0-9]*)\\.([0-9]*)/i.exec(version).slice(1)\n)\n\nexport const paths = createSelector(\n\tspecJsonWithResolvedSubtrees,\n\tspec => spec.get(\"paths\")\n)\n\nexport const operations = createSelector(\n  paths,\n  paths => {\n    if(!paths || paths.size < 1)\n      return List()\n\n    let list = List()\n\n    if(!paths || !paths.forEach) {\n      return List()\n    }\n\n    paths.forEach((path, pathName) => {\n      if(!path || !path.forEach) {\n        return {}\n      }\n      path.forEach((operation, method) => {\n        if(OPERATION_METHODS.indexOf(method) < 0) {\n          return\n        }\n        list = list.push(fromJS({\n          path: pathName,\n          method,\n          operation,\n          id: `${method}-${pathName}`\n        }))\n      })\n    })\n\n    return list\n  }\n)\n\nexport const consumes = createSelector(\n  spec,\n  spec => Set(spec.get(\"consumes\"))\n)\n\nexport const produces = createSelector(\n  spec,\n  spec => Set(spec.get(\"produces\"))\n)\n\nexport const security = createSelector(\n    spec,\n    spec => spec.get(\"security\", List())\n)\n\nexport const securityDefinitions = createSelector(\n    spec,\n    spec => spec.get(\"securityDefinitions\")\n)\n\n\nexport const findDefinition = ( state, name ) => {\n  const resolvedRes = state.getIn([\"resolvedSubtrees\", \"definitions\", name], null)\n  const unresolvedRes = state.getIn([\"json\", \"definitions\", name], null)\n  return resolvedRes || unresolvedRes || null\n}\n\nexport const definitions = createSelector(\n  spec,\n  spec => {\n    const res = spec.get(\"definitions\")\n    return Map.isMap(res) ? res : Map()\n  }\n)\n\nexport const basePath = createSelector(\n    spec,\n    spec => spec.get(\"basePath\")\n)\n\nexport const host = createSelector(\n    spec,\n    spec => spec.get(\"host\")\n)\n\nexport const schemes = createSelector(\n    spec,\n    spec => spec.get(\"schemes\", Map())\n)\n\nexport const operationsWithRootInherited = createSelector(\n  operations,\n  consumes,\n  produces,\n  (operations, consumes, produces) => {\n    return operations.map( ops => ops.update(\"operation\", op => {\n      if(op) {\n        if(!Map.isMap(op)) { return }\n        return op.withMutations( op => {\n          if ( !op.get(\"consumes\") ) {\n            op.update(\"consumes\", a => Set(a).merge(consumes))\n          }\n          if ( !op.get(\"produces\") ) {\n            op.update(\"produces\", a => Set(a).merge(produces))\n          }\n          return op\n        })\n      } else {\n        // return something with Immutable methods\n        return Map()\n      }\n\n    }))\n  }\n)\n\nexport const tags = createSelector(\n  spec,\n  json => {\n    const tags = json.get(\"tags\", List())\n    return List.isList(tags) ? tags.filter(tag => Map.isMap(tag)) : List()\n  }\n)\n\nexport const tagDetails = (state, tag) => {\n  let currentTags = tags(state) || List()\n  return currentTags.filter(Map.isMap).find(t => t.get(\"name\") === tag, Map())\n}\n\nexport const operationsWithTags = createSelector(\n  operationsWithRootInherited,\n  tags,\n  (operations, tags) => {\n    return operations.reduce( (taggedMap, op) => {\n      let tags = Set(op.getIn([\"operation\",\"tags\"]))\n      if(tags.count() < 1)\n        return taggedMap.update(DEFAULT_TAG, List(), ar => ar.push(op))\n      return tags.reduce( (res, tag) => res.update(tag, List(), (ar) => ar.push(op)), taggedMap )\n    }, tags.reduce( (taggedMap, tag) => {\n      return taggedMap.set(tag.get(\"name\"), List())\n    } , OrderedMap()))\n  }\n)\n\nexport const taggedOperations = (state) => ({ getConfigs }) => {\n  let { tagsSorter, operationsSorter } = getConfigs()\n  return operationsWithTags(state)\n    .sortBy(\n      (val, key) => key, // get the name of the tag to be passed to the sorter\n      (tagA, tagB) => {\n        let sortFn = (typeof tagsSorter === \"function\" ? tagsSorter : sorters.tagsSorter[ tagsSorter ])\n        return (!sortFn ? null : sortFn(tagA, tagB))\n      }\n    )\n    .map((ops, tag) => {\n      let sortFn = (typeof operationsSorter === \"function\" ? operationsSorter : sorters.operationsSorter[ operationsSorter ])\n      let operations = (!sortFn ? ops : ops.sort(sortFn))\n\n      return Map({ tagDetails: tagDetails(state, tag), operations: operations })\n    })\n}\n\nexport const responses = createSelector(\n  state,\n  state => state.get( \"responses\", Map() )\n)\n\nexport const requests = createSelector(\n    state,\n    state => state.get( \"requests\", Map() )\n)\n\nexport const mutatedRequests = createSelector(\n    state,\n    state => state.get( \"mutatedRequests\", Map() )\n)\n\nexport const responseFor = (state, path, method) => {\n  return responses(state).getIn([path, method], null)\n}\n\nexport const requestFor = (state, path, method) => {\n  return requests(state).getIn([path, method], null)\n}\n\nexport const mutatedRequestFor = (state, path, method) => {\n  return mutatedRequests(state).getIn([path, method], null)\n}\n\nexport const allowTryItOutFor = () => {\n  // This is just a hook for now.\n  return true\n}\n\nexport const parameterWithMetaByIdentity = (state, pathMethod, param) => {\n  const opParams = specJsonWithResolvedSubtrees(state).getIn([\"paths\", ...pathMethod, \"parameters\"], OrderedMap())\n  const metaParams = state.getIn([\"meta\", \"paths\", ...pathMethod, \"parameters\"], OrderedMap())\n\n  const mergedParams = opParams.map((currentParam) => {\n    const inNameKeyedMeta = metaParams.get(`${param.get(\"in\")}.${param.get(\"name\")}`)\n    const hashKeyedMeta = metaParams.get(`${param.get(\"in\")}.${param.get(\"name\")}.hash-${param.hashCode()}`)\n    return OrderedMap().merge(\n      currentParam,\n      inNameKeyedMeta,\n      hashKeyedMeta\n    )\n  })\n  return mergedParams.find(curr => curr.get(\"in\") === param.get(\"in\") && curr.get(\"name\") === param.get(\"name\"), OrderedMap())\n}\n\nexport const parameterInclusionSettingFor = (state, pathMethod, paramName, paramIn) => {\n  const paramKey = `${paramIn}.${paramName}`\n  return state.getIn([\"meta\", \"paths\", ...pathMethod, \"parameter_inclusions\", paramKey], false)\n}\n\n\nexport const parameterWithMeta = (state, pathMethod, paramName, paramIn) => {\n  const opParams = specJsonWithResolvedSubtrees(state).getIn([\"paths\", ...pathMethod, \"parameters\"], OrderedMap())\n  const currentParam = opParams.find(param => param.get(\"in\") === paramIn && param.get(\"name\") === paramName, OrderedMap())\n  return parameterWithMetaByIdentity(state, pathMethod, currentParam)\n}\n\nexport const operationWithMeta = (state, path, method) => {\n  const op = specJsonWithResolvedSubtrees(state).getIn([\"paths\", path, method], OrderedMap())\n  const meta = state.getIn([\"meta\", \"paths\", path, method], OrderedMap())\n\n  const mergedParams = op.get(\"parameters\", List()).map((param) => {\n    return parameterWithMetaByIdentity(state, [path, method], param)\n  })\n\n  return OrderedMap()\n    .merge(op, meta)\n    .set(\"parameters\", mergedParams)\n}\n\n// Get the parameter value by parameter name\nexport function getParameter(state, pathMethod, name, inType) {\n  pathMethod = pathMethod || []\n  let params = state.getIn([\"meta\", \"paths\", ...pathMethod, \"parameters\"], fromJS([]))\n  return params.find( (p) => {\n    return Map.isMap(p) && p.get(\"name\") === name && p.get(\"in\") === inType\n  }) || Map() // Always return a map\n}\n\nexport const hasHost = createSelector(\n  spec,\n  spec => {\n    const host = spec.get(\"host\")\n    return typeof host === \"string\" && host.length > 0 && host[0] !== \"/\"\n  }\n)\n\n// Get the parameter values, that the user filled out\nexport function parameterValues(state, pathMethod, isXml) {\n  pathMethod = pathMethod || []\n  let paramValues = operationWithMeta(state, ...pathMethod).get(\"parameters\", List())\n  return paramValues.reduce( (hash, p) => {\n    let value = isXml && p.get(\"in\") === \"body\" ? p.get(\"value_xml\") : p.get(\"value\")\n    return hash.set(paramToIdentifier(p, { allowHashes: false }), value)\n  }, fromJS({}))\n}\n\n// True if any parameter includes `in: ?`\nexport function parametersIncludeIn(parameters, inValue=\"\") {\n  if(List.isList(parameters)) {\n    return parameters.some( p => Map.isMap(p) && p.get(\"in\") === inValue )\n  }\n}\n\n// True if any parameter includes `type: ?`\nexport function parametersIncludeType(parameters, typeValue=\"\") {\n  if(List.isList(parameters)) {\n    return parameters.some( p => Map.isMap(p) && p.get(\"type\") === typeValue )\n  }\n}\n\n// Get the consumes/produces value that the user selected\nexport function contentTypeValues(state, pathMethod) {\n  pathMethod = pathMethod || []\n  let op = specJsonWithResolvedSubtrees(state).getIn([\"paths\", ...pathMethod], fromJS({}))\n  let meta = state.getIn([\"meta\", \"paths\", ...pathMethod], fromJS({}))\n  let producesValue = currentProducesFor(state, pathMethod)\n\n  const parameters = op.get(\"parameters\") || new List()\n\n  const requestContentType = (\n    meta.get(\"consumes_value\") ? meta.get(\"consumes_value\")\n      : parametersIncludeType(parameters, \"file\") ? \"multipart/form-data\"\n      : parametersIncludeType(parameters, \"formData\") ? \"application/x-www-form-urlencoded\"\n      : undefined\n  )\n\n  return fromJS({\n    requestContentType,\n    responseContentType: producesValue\n  })\n}\n\n// Get the currently selected produces value for an operation\nexport function currentProducesFor(state, pathMethod) {\n  pathMethod = pathMethod || []\n\n  const operation = specJsonWithResolvedSubtrees(state).getIn([ \"paths\", ...pathMethod], null)\n\n  if(operation === null) {\n    // return nothing if the operation does not exist\n    return\n  }\n\n  const currentProducesValue = state.getIn([\"meta\", \"paths\", ...pathMethod, \"produces_value\"], null)\n  const firstProducesArrayItem = operation.getIn([\"produces\", 0], null)\n\n  return currentProducesValue || firstProducesArrayItem || \"application/json\"\n\n}\n\n// Get the produces options for an operation\nexport function producesOptionsFor(state, pathMethod) {\n  pathMethod = pathMethod || []\n\n  const spec = specJsonWithResolvedSubtrees(state)\n  const operation = spec.getIn([ \"paths\", ...pathMethod], null)\n\n  if(operation === null) {\n    // return nothing if the operation does not exist\n    return\n  }\n\n  const [path] = pathMethod\n\n  const operationProduces = operation.get(\"produces\", null)\n  const pathItemProduces = spec.getIn([\"paths\", path, \"produces\"], null)\n  const globalProduces = spec.getIn([\"produces\"], null)\n\n  return operationProduces || pathItemProduces || globalProduces\n}\n\n// Get the consumes options for an operation\nexport function consumesOptionsFor(state, pathMethod) {\n  pathMethod = pathMethod || []\n\n  const spec = specJsonWithResolvedSubtrees(state)\n  const operation = spec.getIn([\"paths\", ...pathMethod], null)\n\n  if (operation === null) {\n    // return nothing if the operation does not exist\n    return\n  }\n\n  const [path] = pathMethod\n\n  const operationConsumes = operation.get(\"consumes\", null)\n  const pathItemConsumes = spec.getIn([\"paths\", path, \"consumes\"], null)\n  const globalConsumes = spec.getIn([\"consumes\"], null)\n\n  return operationConsumes || pathItemConsumes || globalConsumes\n}\n\nexport const operationScheme = ( state, path, method ) => {\n  let url = state.get(\"url\")\n  let matchResult = url.match(/^([a-z][a-z0-9+\\-.]*):/)\n  let urlScheme = Array.isArray(matchResult) ? matchResult[1] : null\n\n  return state.getIn([\"scheme\", path, method]) || state.getIn([\"scheme\", \"_defaultScheme\"]) || urlScheme || \"\"\n}\n\nexport const canExecuteScheme = ( state, path, method ) => {\n  return [\"http\", \"https\"].indexOf(operationScheme(state, path, method)) > -1\n}\n\nexport const validateBeforeExecute = ( state, pathMethod ) => {\n  pathMethod = pathMethod || []\n  let paramValues = state.getIn([\"meta\", \"paths\", ...pathMethod, \"parameters\"], fromJS([]))\n  let isValid = true\n\n  paramValues.forEach( (p) => {\n    let errors = p.get(\"errors\")\n    if ( errors && errors.count() ) {\n      isValid = false\n    }\n  })\n\n  return isValid\n}\n\nexport const getOAS3RequiredRequestBodyContentType = (state, pathMethod) => {\n  let requiredObj = {\n    requestBody: false,\n    requestContentType: {}\n  }\n  let requestBody = state.getIn([\"resolvedSubtrees\", \"paths\", ...pathMethod, \"requestBody\"], fromJS([]))\n  if (requestBody.size < 1) {\n    return requiredObj\n  }\n  if (requestBody.getIn([\"required\"])) {\n    requiredObj.requestBody = requestBody.getIn([\"required\"])\n  }\n  requestBody.getIn([\"content\"]).entrySeq().forEach((contentType) => { // e.g application/json\n    const key = contentType[0]\n    if (contentType[1].getIn([\"schema\", \"required\"])) {\n      const val = contentType[1].getIn([\"schema\", \"required\"]).toJS()\n      requiredObj.requestContentType[key] = val\n    }\n  })\n  return requiredObj\n}\n\nexport const isMediaTypeSchemaPropertiesEqual = ( state, pathMethod, currentMediaType, targetMediaType) => {\n  if((currentMediaType || targetMediaType) && currentMediaType === targetMediaType ) {\n    return true\n  }\n  let requestBodyContent = state.getIn([\"resolvedSubtrees\", \"paths\", ...pathMethod, \"requestBody\", \"content\"], fromJS([]))\n  if (requestBodyContent.size < 2 || !currentMediaType || !targetMediaType) {\n    // nothing to compare\n    return false\n  }\n  let currentMediaTypeSchemaProperties = requestBodyContent.getIn([currentMediaType, \"schema\", \"properties\"], fromJS([]))\n  let targetMediaTypeSchemaProperties = requestBodyContent.getIn([targetMediaType, \"schema\", \"properties\"], fromJS([]))\n  return !!currentMediaTypeSchemaProperties.equals(targetMediaTypeSchemaProperties)\n}\n\nfunction returnSelfOrNewMap(obj) {\n  // returns obj if obj is an Immutable map, else returns a new Map\n  return Map.isMap(obj) ? obj : new Map()\n}\n", "'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/\n  , whitespace = '[\\\\x09\\\\x0A\\\\x0B\\\\x0C\\\\x0D\\\\x20\\\\xA0\\\\u1680\\\\u180E\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200A\\\\u202F\\\\u205F\\\\u3000\\\\u2028\\\\u2029\\\\uFEFF]'\n  , left = new RegExp('^'+ whitespace +'+');\n\n/**\n * Trim a given string.\n *\n * @param {String} str String to trim.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(left, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d+)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      if (~(index = address.indexOf(parse))) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n  if (url.auth) {\n    instruction = url.auth.split(':');\n    url.username = instruction[0] || '';\n    url.password = instruction[1] || '';\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (/:\\d+$/.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    default:\n      url[part] = value;\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result = protocol + (url.slashes || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  }\n\n  result += url.host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n", "module.exports = require(\"core-js-pure/stable/url\");", "import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread\";\nimport React from 'react'; // Get all possible permutations of all power sets\n//\n// Super simple, non-algorithmic solution since the\n// number of class names will not be greater than 4\n\nfunction powerSetPermutations(arr) {\n  var arrLength = arr.length;\n  if (arrLength === 0 || arrLength === 1) return arr;\n\n  if (arrLength === 2) {\n    // prettier-ignore\n    return [arr[0], arr[1], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0])];\n  }\n\n  if (arrLength === 3) {\n    return [arr[0], arr[1], arr[2], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0])];\n  }\n\n  if (arrLength >= 4) {\n    // Currently does not support more than 4 extra\n    // class names (after `.token` has been removed)\n    return [arr[0], arr[1], arr[2], arr[3], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0])];\n  }\n}\n\nvar classNameCombinations = {};\n\nfunction getClassNameCombinations(classNames) {\n  if (classNames.length === 0 || classNames.length === 1) return classNames;\n  var key = classNames.join('.');\n\n  if (!classNameCombinations[key]) {\n    classNameCombinations[key] = powerSetPermutations(classNames);\n  }\n\n  return classNameCombinations[key];\n}\n\nexport function createStyleObject(classNames) {\n  var elementStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var stylesheet = arguments.length > 2 ? arguments[2] : undefined;\n  var nonTokenClassNames = classNames.filter(function (className) {\n    return className !== 'token';\n  });\n  var classNamesCombinations = getClassNameCombinations(nonTokenClassNames);\n  return classNamesCombinations.reduce(function (styleObject, className) {\n    return _objectSpread({}, styleObject, stylesheet[className]);\n  }, elementStyle);\n}\nexport function createClassNameString(classNames) {\n  return classNames.join(' ');\n}\nexport function createChildren(stylesheet, useInlineStyles) {\n  var childrenCount = 0;\n  return function (children) {\n    childrenCount += 1;\n    return children.map(function (child, i) {\n      return createElement({\n        node: child,\n        stylesheet: stylesheet,\n        useInlineStyles: useInlineStyles,\n        key: \"code-segment-\".concat(childrenCount, \"-\").concat(i)\n      });\n    });\n  };\n}\nexport default function createElement(_ref) {\n  var node = _ref.node,\n      stylesheet = _ref.stylesheet,\n      _ref$style = _ref.style,\n      style = _ref$style === void 0 ? {} : _ref$style,\n      useInlineStyles = _ref.useInlineStyles,\n      key = _ref.key;\n  var properties = node.properties,\n      type = node.type,\n      TagName = node.tagName,\n      value = node.value;\n\n  if (type === 'text') {\n    return value;\n  } else if (TagName) {\n    var childrenCreator = createChildren(stylesheet, useInlineStyles);\n    var props;\n\n    if (!useInlineStyles) {\n      props = _objectSpread({}, properties, {\n        className: createClassNameString(properties.className)\n      });\n    } else {\n      var allStylesheetSelectors = Object.keys(stylesheet).reduce(function (classes, selector) {\n        selector.split('.').forEach(function (className) {\n          if (!classes.includes(className)) classes.push(className);\n        });\n        return classes;\n      }, []); // For compatibility with older versions of react-syntax-highlighter\n\n      var startingClassName = properties.className && properties.className.includes('token') ? ['token'] : [];\n      var className = properties.className && startingClassName.concat(properties.className.filter(function (className) {\n        return !allStylesheetSelectors.includes(className);\n      }));\n      props = _objectSpread({}, properties, {\n        className: createClassNameString(className) || undefined,\n        style: createStyleObject(properties.className, Object.assign({}, properties.style, style), stylesheet)\n      });\n    }\n\n    var children = childrenCreator(node.children);\n    return React.createElement(TagName, _extends({\n      key: key\n    }, props), children);\n  }\n}", "export default (function (astGenerator, language) {\n  var langs = astGenerator.listLanguages();\n  return langs.indexOf(language) !== -1;\n});", "import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread\";\nimport React from 'react';\nimport createElement from './create-element';\nimport checkForListedLanguage from './checkForListedLanguage';\nvar newLineRegex = /\\n/g;\n\nfunction getNewLines(str) {\n  return str.match(newLineRegex);\n}\n\nfunction getAllLineNumbers(_ref) {\n  var lines = _ref.lines,\n      startingLineNumber = _ref.startingLineNumber,\n      style = _ref.style;\n  return lines.map(function (_, i) {\n    var number = i + startingLineNumber;\n    return React.createElement(\"span\", {\n      key: \"line-\".concat(i),\n      className: \"react-syntax-highlighter-line-number\",\n      style: typeof style === 'function' ? style(number) : style\n    }, \"\".concat(number, \"\\n\"));\n  });\n}\n\nfunction AllLineNumbers(_ref2) {\n  var codeString = _ref2.codeString,\n      codeStyle = _ref2.codeStyle,\n      _ref2$containerStyle = _ref2.containerStyle,\n      containerStyle = _ref2$containerStyle === void 0 ? {\n    float: 'left',\n    paddingRight: '10px'\n  } : _ref2$containerStyle,\n      _ref2$numberStyle = _ref2.numberStyle,\n      numberStyle = _ref2$numberStyle === void 0 ? {} : _ref2$numberStyle,\n      startingLineNumber = _ref2.startingLineNumber;\n  return React.createElement(\"code\", {\n    style: Object.assign({}, codeStyle, containerStyle)\n  }, getAllLineNumbers({\n    lines: codeString.replace(/\\n$/, '').split('\\n'),\n    style: numberStyle,\n    startingLineNumber: startingLineNumber\n  }));\n}\n\nfunction getEmWidthOfNumber(num) {\n  return \"\".concat(num.toString().length, \".25em\");\n}\n\nfunction getInlineLineNumber(lineNumber, inlineLineNumberStyle) {\n  return {\n    type: 'element',\n    tagName: 'span',\n    properties: {\n      key: \"line-number--\".concat(lineNumber),\n      className: ['comment', 'linenumber', 'react-syntax-highlighter-line-number'],\n      style: inlineLineNumberStyle\n    },\n    children: [{\n      type: 'text',\n      value: lineNumber\n    }]\n  };\n}\n\nfunction assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber) {\n  // minimally necessary styling for line numbers\n  var defaultLineNumberStyle = {\n    display: 'inline-block',\n    minWidth: getEmWidthOfNumber(largestLineNumber),\n    paddingRight: '1em',\n    textAlign: 'right',\n    userSelect: 'none'\n  }; // prep custom styling\n\n  var customLineNumberStyle = typeof lineNumberStyle === 'function' ? lineNumberStyle(lineNumber) : lineNumberStyle; // combine\n\n  var assembledStyle = _objectSpread({}, defaultLineNumberStyle, customLineNumberStyle);\n\n  return assembledStyle;\n}\n\nfunction createLineElement(_ref3) {\n  var children = _ref3.children,\n      lineNumber = _ref3.lineNumber,\n      lineNumberStyle = _ref3.lineNumberStyle,\n      largestLineNumber = _ref3.largestLineNumber,\n      showInlineLineNumbers = _ref3.showInlineLineNumbers,\n      _ref3$lineProps = _ref3.lineProps,\n      lineProps = _ref3$lineProps === void 0 ? {} : _ref3$lineProps,\n      _ref3$className = _ref3.className,\n      className = _ref3$className === void 0 ? [] : _ref3$className,\n      showLineNumbers = _ref3.showLineNumbers,\n      wrapLongLines = _ref3.wrapLongLines;\n  var properties = typeof lineProps === 'function' ? lineProps(lineNumber) : lineProps;\n  properties['className'] = className;\n\n  if (lineNumber && showInlineLineNumbers) {\n    var inlineLineNumberStyle = assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber);\n    children.unshift(getInlineLineNumber(lineNumber, inlineLineNumberStyle));\n  }\n\n  if (wrapLongLines & showLineNumbers) {\n    properties.style = _objectSpread({}, properties.style, {\n      display: 'flex'\n    });\n  }\n\n  return {\n    type: 'element',\n    tagName: 'span',\n    properties: properties,\n    children: children\n  };\n}\n\nfunction flattenCodeTree(tree) {\n  var className = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var newTree = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n  for (var i = 0; i < tree.length; i++) {\n    var node = tree[i];\n\n    if (node.type === 'text') {\n      newTree.push(createLineElement({\n        children: [node],\n        className: _toConsumableArray(new Set(className))\n      }));\n    } else if (node.children) {\n      var classNames = className.concat(node.properties.className);\n      newTree = newTree.concat(flattenCodeTree(node.children, classNames));\n    }\n  }\n\n  return newTree;\n}\n\nfunction processLines(codeTree, wrapLines, lineProps, showLineNumbers, showInlineLineNumbers, startingLineNumber, largestLineNumber, lineNumberStyle, wrapLongLines) {\n  var _ref4;\n\n  var tree = flattenCodeTree(codeTree.value);\n  var newTree = [];\n  var lastLineBreakIndex = -1;\n  var index = 0;\n\n  function createWrappedLine(children, lineNumber) {\n    var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n    return createLineElement({\n      children: children,\n      lineNumber: lineNumber,\n      lineNumberStyle: lineNumberStyle,\n      largestLineNumber: largestLineNumber,\n      showInlineLineNumbers: showInlineLineNumbers,\n      lineProps: lineProps,\n      className: className,\n      showLineNumbers: showLineNumbers,\n      wrapLongLines: wrapLongLines\n    });\n  }\n\n  function createUnwrappedLine(children, lineNumber) {\n    if (showLineNumbers && lineNumber && showInlineLineNumbers) {\n      var inlineLineNumberStyle = assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber);\n      children.unshift(getInlineLineNumber(lineNumber, inlineLineNumberStyle));\n    }\n\n    return children;\n  }\n\n  function createLine(children, lineNumber) {\n    var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n    return wrapLines || className.length > 0 ? createWrappedLine(children, lineNumber, className) : createUnwrappedLine(children, lineNumber);\n  }\n\n  var _loop = function _loop() {\n    var node = tree[index];\n    var value = node.children[0].value;\n    var newLines = getNewLines(value);\n\n    if (newLines) {\n      var splitValue = value.split('\\n');\n      splitValue.forEach(function (text, i) {\n        var lineNumber = showLineNumbers && newTree.length + startingLineNumber;\n        var newChild = {\n          type: 'text',\n          value: \"\".concat(text, \"\\n\")\n        }; // if it's the first line\n\n        if (i === 0) {\n          var _children = tree.slice(lastLineBreakIndex + 1, index).concat(createLineElement({\n            children: [newChild],\n            className: node.properties.className\n          }));\n\n          var _line = createLine(_children, lineNumber);\n\n          newTree.push(_line); // if it's the last line\n        } else if (i === splitValue.length - 1) {\n          var stringChild = tree[index + 1] && tree[index + 1].children && tree[index + 1].children[0];\n\n          if (stringChild) {\n            var lastLineInPreviousSpan = {\n              type: 'text',\n              value: \"\".concat(text)\n            };\n            var newElem = createLineElement({\n              children: [lastLineInPreviousSpan],\n              className: node.properties.className\n            });\n            tree.splice(index + 1, 0, newElem);\n          } else {\n            var _children2 = [newChild];\n\n            var _line2 = createLine(_children2, lineNumber, node.properties.className);\n\n            newTree.push(_line2);\n          } // if it's neither the first nor the last line\n\n        } else {\n          var _children3 = [newChild];\n\n          var _line3 = createLine(_children3, lineNumber, node.properties.className);\n\n          newTree.push(_line3);\n        }\n      });\n      lastLineBreakIndex = index;\n    }\n\n    index++;\n  };\n\n  while (index < tree.length) {\n    _loop();\n  }\n\n  if (lastLineBreakIndex !== tree.length - 1) {\n    var children = tree.slice(lastLineBreakIndex + 1, tree.length);\n\n    if (children && children.length) {\n      var lineNumber = showLineNumbers && newTree.length + startingLineNumber;\n      var line = createLine(children, lineNumber);\n      newTree.push(line);\n    }\n  }\n\n  return wrapLines ? newTree : (_ref4 = []).concat.apply(_ref4, newTree);\n}\n\nfunction defaultRenderer(_ref5) {\n  var rows = _ref5.rows,\n      stylesheet = _ref5.stylesheet,\n      useInlineStyles = _ref5.useInlineStyles;\n  return rows.map(function (node, i) {\n    return createElement({\n      node: node,\n      stylesheet: stylesheet,\n      useInlineStyles: useInlineStyles,\n      key: \"code-segement\".concat(i)\n    });\n  });\n} // only highlight.js has the highlightAuto method\n\n\nfunction isHighlightJs(astGenerator) {\n  return astGenerator && typeof astGenerator.highlightAuto !== 'undefined';\n}\n\nfunction getCodeTree(_ref6) {\n  var astGenerator = _ref6.astGenerator,\n      language = _ref6.language,\n      code = _ref6.code,\n      defaultCodeValue = _ref6.defaultCodeValue;\n\n  // figure out whether we're using lowlight/highlight or refractor/prism\n  // then attempt highlighting accordingly\n  // lowlight/highlight?\n  if (isHighlightJs(astGenerator)) {\n    var hasLanguage = checkForListedLanguage(astGenerator, language);\n\n    if (language === 'text') {\n      return {\n        value: defaultCodeValue,\n        language: 'text'\n      };\n    } else if (hasLanguage) {\n      return astGenerator.highlight(language, code);\n    } else {\n      return astGenerator.highlightAuto(code);\n    }\n  } // must be refractor/prism, then\n\n\n  try {\n    return language && language !== 'text' ? {\n      value: astGenerator.highlight(code, language)\n    } : {\n      value: defaultCodeValue\n    };\n  } catch (e) {\n    return {\n      value: defaultCodeValue\n    };\n  }\n}\n\nexport default function (defaultAstGenerator, defaultStyle) {\n  return function SyntaxHighlighter(_ref7) {\n    var language = _ref7.language,\n        children = _ref7.children,\n        _ref7$style = _ref7.style,\n        style = _ref7$style === void 0 ? defaultStyle : _ref7$style,\n        _ref7$customStyle = _ref7.customStyle,\n        customStyle = _ref7$customStyle === void 0 ? {} : _ref7$customStyle,\n        _ref7$codeTagProps = _ref7.codeTagProps,\n        codeTagProps = _ref7$codeTagProps === void 0 ? {\n      className: language ? \"language-\".concat(language) : undefined,\n      style: _objectSpread({}, style['code[class*=\"language-\"]'], style[\"code[class*=\\\"language-\".concat(language, \"\\\"]\")])\n    } : _ref7$codeTagProps,\n        _ref7$useInlineStyles = _ref7.useInlineStyles,\n        useInlineStyles = _ref7$useInlineStyles === void 0 ? true : _ref7$useInlineStyles,\n        _ref7$showLineNumbers = _ref7.showLineNumbers,\n        showLineNumbers = _ref7$showLineNumbers === void 0 ? false : _ref7$showLineNumbers,\n        _ref7$showInlineLineN = _ref7.showInlineLineNumbers,\n        showInlineLineNumbers = _ref7$showInlineLineN === void 0 ? true : _ref7$showInlineLineN,\n        _ref7$startingLineNum = _ref7.startingLineNumber,\n        startingLineNumber = _ref7$startingLineNum === void 0 ? 1 : _ref7$startingLineNum,\n        lineNumberContainerStyle = _ref7.lineNumberContainerStyle,\n        _ref7$lineNumberStyle = _ref7.lineNumberStyle,\n        lineNumberStyle = _ref7$lineNumberStyle === void 0 ? {} : _ref7$lineNumberStyle,\n        wrapLines = _ref7.wrapLines,\n        _ref7$wrapLongLines = _ref7.wrapLongLines,\n        wrapLongLines = _ref7$wrapLongLines === void 0 ? false : _ref7$wrapLongLines,\n        _ref7$lineProps = _ref7.lineProps,\n        lineProps = _ref7$lineProps === void 0 ? {} : _ref7$lineProps,\n        renderer = _ref7.renderer,\n        _ref7$PreTag = _ref7.PreTag,\n        PreTag = _ref7$PreTag === void 0 ? 'pre' : _ref7$PreTag,\n        _ref7$CodeTag = _ref7.CodeTag,\n        CodeTag = _ref7$CodeTag === void 0 ? 'code' : _ref7$CodeTag,\n        _ref7$code = _ref7.code,\n        code = _ref7$code === void 0 ? Array.isArray(children) ? children[0] : children : _ref7$code,\n        astGenerator = _ref7.astGenerator,\n        rest = _objectWithoutProperties(_ref7, [\"language\", \"children\", \"style\", \"customStyle\", \"codeTagProps\", \"useInlineStyles\", \"showLineNumbers\", \"showInlineLineNumbers\", \"startingLineNumber\", \"lineNumberContainerStyle\", \"lineNumberStyle\", \"wrapLines\", \"wrapLongLines\", \"lineProps\", \"renderer\", \"PreTag\", \"CodeTag\", \"code\", \"astGenerator\"]);\n\n    astGenerator = astGenerator || defaultAstGenerator;\n    var allLineNumbers = showLineNumbers ? React.createElement(AllLineNumbers, {\n      containerStyle: lineNumberContainerStyle,\n      codeStyle: codeTagProps.style || {},\n      numberStyle: lineNumberStyle,\n      startingLineNumber: startingLineNumber,\n      codeString: code\n    }) : null;\n    var defaultPreStyle = style.hljs || style['pre[class*=\"language-\"]'] || {\n      backgroundColor: '#fff'\n    };\n    var generatorClassName = isHighlightJs(astGenerator) ? 'hljs' : 'prismjs';\n    var preProps = useInlineStyles ? Object.assign({}, rest, {\n      style: Object.assign({}, defaultPreStyle, customStyle)\n    }) : Object.assign({}, rest, {\n      className: rest.className ? \"\".concat(generatorClassName, \" \").concat(rest.className) : generatorClassName,\n      style: Object.assign({}, customStyle)\n    });\n\n    if (!astGenerator) {\n      return React.createElement(PreTag, preProps, allLineNumbers, React.createElement(CodeTag, codeTagProps, code));\n    }\n    /*\n     * Some custom renderers rely on individual row elements so we need to turn wrapLines on\n     * if renderer is provided and wrapLines is undefined.\n     */\n\n\n    if (wrapLines === undefined && renderer || wrapLongLines) wrapLines = true;\n    renderer = renderer || defaultRenderer;\n    var defaultCodeValue = [{\n      type: 'text',\n      value: code\n    }];\n    var codeTree = getCodeTree({\n      astGenerator: astGenerator,\n      language: language,\n      code: code,\n      defaultCodeValue: defaultCodeValue\n    });\n\n    if (codeTree.language === null) {\n      codeTree.value = defaultCodeValue;\n    } // determine largest line number so that we can force minWidth on all linenumber elements\n\n\n    var largestLineNumber = codeTree.value.length + startingLineNumber;\n    var rows = processLines(codeTree, wrapLines, lineProps, showLineNumbers, showInlineLineNumbers, startingLineNumber, largestLineNumber, lineNumberStyle, wrapLongLines);\n\n    if (wrapLongLines) {\n      codeTagProps.style = _objectSpread({}, codeTagProps.style, {\n        whiteSpace: 'pre-wrap'\n      });\n    } else {\n      codeTagProps.style = _objectSpread({}, codeTagProps.style, {\n        whiteSpace: 'pre'\n      });\n    }\n\n    return React.createElement(PreTag, preProps, React.createElement(CodeTag, codeTagProps, !showInlineLineNumbers && allLineNumbers, renderer({\n      rows: rows,\n      stylesheet: style,\n      useInlineStyles: useInlineStyles\n    })));\n  };\n}", "import highlight from './highlight';\nimport lowlight from 'lowlight/lib/core';\nvar SyntaxHighlighter = highlight(lowlight, {});\nSyntaxHighlighter.registerLanguage = lowlight.registerLanguage;\nexport default SyntaxHighlighter;", "import javascript from \"highlight.js/lib/languages/javascript\";\nexport default javascript;", "import json from \"highlight.js/lib/languages/json\";\nexport default json;", "import xml from \"highlight.js/lib/languages/xml\";\nexport default xml;", "import bash from \"highlight.js/lib/languages/bash\";\nexport default bash;", "import yaml from \"highlight.js/lib/languages/yaml\";\nexport default yaml;", "import http from \"highlight.js/lib/languages/http\";\nexport default http;", "import powershell from \"highlight.js/lib/languages/powershell\";\nexport default powershell;", "export default {\n  \"hljs\": {\n    \"display\": \"block\",\n    \"overflowX\": \"auto\",\n    \"padding\": \"0.5em\",\n    \"background\": \"#333\",\n    \"color\": \"white\"\n  },\n  \"hljs-name\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-strong\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-code\": {\n    \"fontStyle\": \"italic\",\n    \"color\": \"#888\"\n  },\n  \"hljs-emphasis\": {\n    \"fontStyle\": \"italic\"\n  },\n  \"hljs-tag\": {\n    \"color\": \"#62c8f3\"\n  },\n  \"hljs-variable\": {\n    \"color\": \"#ade5fc\"\n  },\n  \"hljs-template-variable\": {\n    \"color\": \"#ade5fc\"\n  },\n  \"hljs-selector-id\": {\n    \"color\": \"#ade5fc\"\n  },\n  \"hljs-selector-class\": {\n    \"color\": \"#ade5fc\"\n  },\n  \"hljs-string\": {\n    \"color\": \"#a2fca2\"\n  },\n  \"hljs-bullet\": {\n    \"color\": \"#d36363\"\n  },\n  \"hljs-type\": {\n    \"color\": \"#ffa\"\n  },\n  \"hljs-title\": {\n    \"color\": \"#ffa\"\n  },\n  \"hljs-section\": {\n    \"color\": \"#ffa\"\n  },\n  \"hljs-attribute\": {\n    \"color\": \"#ffa\"\n  },\n  \"hljs-quote\": {\n    \"color\": \"#ffa\"\n  },\n  \"hljs-built_in\": {\n    \"color\": \"#ffa\"\n  },\n  \"hljs-builtin-name\": {\n    \"color\": \"#ffa\"\n  },\n  \"hljs-number\": {\n    \"color\": \"#d36363\"\n  },\n  \"hljs-symbol\": {\n    \"color\": \"#d36363\"\n  },\n  \"hljs-keyword\": {\n    \"color\": \"#fcc28c\"\n  },\n  \"hljs-selector-tag\": {\n    \"color\": \"#fcc28c\"\n  },\n  \"hljs-literal\": {\n    \"color\": \"#fcc28c\"\n  },\n  \"hljs-comment\": {\n    \"color\": \"#888\"\n  },\n  \"hljs-deletion\": {\n    \"color\": \"#333\",\n    \"backgroundColor\": \"#fc9b9b\"\n  },\n  \"hljs-regexp\": {\n    \"color\": \"#c6b4f0\"\n  },\n  \"hljs-link\": {\n    \"color\": \"#c6b4f0\"\n  },\n  \"hljs-meta\": {\n    \"color\": \"#fc9b9b\"\n  },\n  \"hljs-addition\": {\n    \"backgroundColor\": \"#a2fca2\",\n    \"color\": \"#333\"\n  }\n};", "import { Light as SyntaxHighlighter } from \"react-syntax-highlighter\"\n\nimport js from \"react-syntax-highlighter/dist/esm/languages/hljs/javascript\"\nimport json from \"react-syntax-highlighter/dist/esm/languages/hljs/json\"\nimport xml from \"react-syntax-highlighter/dist/esm/languages/hljs/xml\"\nimport bash from \"react-syntax-highlighter/dist/esm/languages/hljs/bash\"\nimport yaml from \"react-syntax-highlighter/dist/esm/languages/hljs/yaml\"\nimport http from \"react-syntax-highlighter/dist/esm/languages/hljs/http\"\nimport powershell from \"react-syntax-highlighter/dist/esm/languages/hljs/powershell\"\nimport javascript from \"react-syntax-highlighter/dist/esm/languages/hljs/javascript\"\n\nimport agate from \"react-syntax-highlighter/dist/esm/styles/hljs/agate\"\nimport arta from \"react-syntax-highlighter/dist/esm/styles/hljs/arta\"\nimport monokai from \"react-syntax-highlighter/dist/esm/styles/hljs/monokai\"\nimport nord from \"react-syntax-highlighter/dist/esm/styles/hljs/nord\"\nimport obsidian from \"react-syntax-highlighter/dist/esm/styles/hljs/obsidian\"\nimport tomorrowNight from \"react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night\"\n\nSyntaxHighlighter.registerLanguage(\"json\", json)\nSyntaxHighlighter.registerLanguage(\"js\", js)\nSyntaxHighlighter.registerLanguage(\"xml\", xml)\nSyntaxHighlighter.registerLanguage(\"yaml\", yaml)\nSyntaxHighlighter.registerLanguage(\"http\", http)\nSyntaxHighlighter.registerLanguage(\"bash\", bash)\nSyntaxHighlighter.registerLanguage(\"powershell\", powershell)\nSyntaxHighlighter.registerLanguage(\"javascript\", javascript)\n\nconst styles = {agate, arta, monokai, nord, obsidian, \"tomorrow-night\": tomorrowNight}\nexport const availableStyles = Object.keys(styles)\n\nexport const getStyle = name => {\n    if (!availableStyles.includes(name)) {\n        console.warn(`Request style '${name}' is not available, returning default instead`)\n        return agate\n    }\n    return styles[name]\n}\n\nexport {SyntaxHighlighter, styles}\n", "export default {\n  \"hljs\": {\n    \"display\": \"block\",\n    \"overflowX\": \"auto\",\n    \"padding\": \"0.5em\",\n    \"background\": \"#222\",\n    \"color\": \"#aaa\"\n  },\n  \"hljs-subst\": {\n    \"color\": \"#aaa\"\n  },\n  \"hljs-section\": {\n    \"color\": \"#fff\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-comment\": {\n    \"color\": \"#444\"\n  },\n  \"hljs-quote\": {\n    \"color\": \"#444\"\n  },\n  \"hljs-meta\": {\n    \"color\": \"#444\"\n  },\n  \"hljs-string\": {\n    \"color\": \"#ffcc33\"\n  },\n  \"hljs-symbol\": {\n    \"color\": \"#ffcc33\"\n  },\n  \"hljs-bullet\": {\n    \"color\": \"#ffcc33\"\n  },\n  \"hljs-regexp\": {\n    \"color\": \"#ffcc33\"\n  },\n  \"hljs-number\": {\n    \"color\": \"#00cc66\"\n  },\n  \"hljs-addition\": {\n    \"color\": \"#00cc66\"\n  },\n  \"hljs-built_in\": {\n    \"color\": \"#32aaee\"\n  },\n  \"hljs-builtin-name\": {\n    \"color\": \"#32aaee\"\n  },\n  \"hljs-literal\": {\n    \"color\": \"#32aaee\"\n  },\n  \"hljs-type\": {\n    \"color\": \"#32aaee\"\n  },\n  \"hljs-template-variable\": {\n    \"color\": \"#32aaee\"\n  },\n  \"hljs-attribute\": {\n    \"color\": \"#32aaee\"\n  },\n  \"hljs-link\": {\n    \"color\": \"#32aaee\"\n  },\n  \"hljs-keyword\": {\n    \"color\": \"#6644aa\"\n  },\n  \"hljs-selector-tag\": {\n    \"color\": \"#6644aa\"\n  },\n  \"hljs-name\": {\n    \"color\": \"#6644aa\"\n  },\n  \"hljs-selector-id\": {\n    \"color\": \"#6644aa\"\n  },\n  \"hljs-selector-class\": {\n    \"color\": \"#6644aa\"\n  },\n  \"hljs-title\": {\n    \"color\": \"#bb1166\"\n  },\n  \"hljs-variable\": {\n    \"color\": \"#bb1166\"\n  },\n  \"hljs-deletion\": {\n    \"color\": \"#bb1166\"\n  },\n  \"hljs-template-tag\": {\n    \"color\": \"#bb1166\"\n  },\n  \"hljs-doctag\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-strong\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-emphasis\": {\n    \"fontStyle\": \"italic\"\n  }\n};", "export default {\n  \"hljs\": {\n    \"display\": \"block\",\n    \"overflowX\": \"auto\",\n    \"padding\": \"0.5em\",\n    \"background\": \"#272822\",\n    \"color\": \"#ddd\"\n  },\n  \"hljs-tag\": {\n    \"color\": \"#f92672\"\n  },\n  \"hljs-keyword\": {\n    \"color\": \"#f92672\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-selector-tag\": {\n    \"color\": \"#f92672\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-literal\": {\n    \"color\": \"#f92672\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-strong\": {\n    \"color\": \"#f92672\"\n  },\n  \"hljs-name\": {\n    \"color\": \"#f92672\"\n  },\n  \"hljs-code\": {\n    \"color\": \"#66d9ef\"\n  },\n  \"hljs-class .hljs-title\": {\n    \"color\": \"white\"\n  },\n  \"hljs-attribute\": {\n    \"color\": \"#bf79db\"\n  },\n  \"hljs-symbol\": {\n    \"color\": \"#bf79db\"\n  },\n  \"hljs-regexp\": {\n    \"color\": \"#bf79db\"\n  },\n  \"hljs-link\": {\n    \"color\": \"#bf79db\"\n  },\n  \"hljs-string\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-bullet\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-subst\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-title\": {\n    \"color\": \"#a6e22e\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-section\": {\n    \"color\": \"#a6e22e\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-emphasis\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-type\": {\n    \"color\": \"#a6e22e\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-built_in\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-builtin-name\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-selector-attr\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-selector-pseudo\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-addition\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-variable\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-template-tag\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-template-variable\": {\n    \"color\": \"#a6e22e\"\n  },\n  \"hljs-comment\": {\n    \"color\": \"#75715e\"\n  },\n  \"hljs-quote\": {\n    \"color\": \"#75715e\"\n  },\n  \"hljs-deletion\": {\n    \"color\": \"#75715e\"\n  },\n  \"hljs-meta\": {\n    \"color\": \"#75715e\"\n  },\n  \"hljs-doctag\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-selector-id\": {\n    \"fontWeight\": \"bold\"\n  }\n};", "export default {\n  \"hljs\": {\n    \"display\": \"block\",\n    \"overflowX\": \"auto\",\n    \"padding\": \"0.5em\",\n    \"background\": \"#2E3440\",\n    \"color\": \"#D8DEE9\"\n  },\n  \"hljs-subst\": {\n    \"color\": \"#D8DEE9\"\n  },\n  \"hljs-selector-tag\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"hljs-selector-id\": {\n    \"color\": \"#8FBCBB\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-selector-class\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-selector-attr\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-selector-pseudo\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"hljs-addition\": {\n    \"backgroundColor\": \"rgba(163, 190, 140, 0.5)\"\n  },\n  \"hljs-deletion\": {\n    \"backgroundColor\": \"rgba(191, 97, 106, 0.5)\"\n  },\n  \"hljs-built_in\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-type\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-class\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-function\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"hljs-function > .hljs-title\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"hljs-keyword\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"hljs-literal\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"hljs-symbol\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"hljs-number\": {\n    \"color\": \"#B48EAD\"\n  },\n  \"hljs-regexp\": {\n    \"color\": \"#EBCB8B\"\n  },\n  \"hljs-string\": {\n    \"color\": \"#A3BE8C\"\n  },\n  \"hljs-title\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-params\": {\n    \"color\": \"#D8DEE9\"\n  },\n  \"hljs-bullet\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"hljs-code\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-emphasis\": {\n    \"fontStyle\": \"italic\"\n  },\n  \"hljs-formula\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-strong\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-link:hover\": {\n    \"textDecoration\": \"underline\"\n  },\n  \"hljs-quote\": {\n    \"color\": \"#4C566A\"\n  },\n  \"hljs-comment\": {\n    \"color\": \"#4C566A\"\n  },\n  \"hljs-doctag\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-meta\": {\n    \"color\": \"#5E81AC\"\n  },\n  \"hljs-meta-keyword\": {\n    \"color\": \"#5E81AC\"\n  },\n  \"hljs-meta-string\": {\n    \"color\": \"#A3BE8C\"\n  },\n  \"hljs-attr\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"hljs-attribute\": {\n    \"color\": \"#D8DEE9\"\n  },\n  \"hljs-builtin-name\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"hljs-name\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"hljs-section\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"hljs-tag\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"hljs-variable\": {\n    \"color\": \"#D8DEE9\"\n  },\n  \"hljs-template-variable\": {\n    \"color\": \"#D8DEE9\"\n  },\n  \"hljs-template-tag\": {\n    \"color\": \"#5E81AC\"\n  },\n  \"abnf .hljs-attribute\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"abnf .hljs-symbol\": {\n    \"color\": \"#EBCB8B\"\n  },\n  \"apache .hljs-attribute\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"apache .hljs-section\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"arduino .hljs-built_in\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"aspectj .hljs-meta\": {\n    \"color\": \"#D08770\"\n  },\n  \"aspectj > .hljs-title\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"bnf .hljs-attribute\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"clojure .hljs-name\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"clojure .hljs-symbol\": {\n    \"color\": \"#EBCB8B\"\n  },\n  \"coq .hljs-built_in\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"cpp .hljs-meta-string\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"css .hljs-built_in\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"css .hljs-keyword\": {\n    \"color\": \"#D08770\"\n  },\n  \"diff .hljs-meta\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"ebnf .hljs-attribute\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"glsl .hljs-built_in\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"groovy .hljs-meta:not(:first-child)\": {\n    \"color\": \"#D08770\"\n  },\n  \"haxe .hljs-meta\": {\n    \"color\": \"#D08770\"\n  },\n  \"java .hljs-meta\": {\n    \"color\": \"#D08770\"\n  },\n  \"ldif .hljs-attribute\": {\n    \"color\": \"#8FBCBB\"\n  },\n  \"lisp .hljs-name\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"lua .hljs-built_in\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"moonscript .hljs-built_in\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"nginx .hljs-attribute\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"nginx .hljs-section\": {\n    \"color\": \"#5E81AC\"\n  },\n  \"pf .hljs-built_in\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"processing .hljs-built_in\": {\n    \"color\": \"#88C0D0\"\n  },\n  \"scss .hljs-keyword\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"stylus .hljs-keyword\": {\n    \"color\": \"#81A1C1\"\n  },\n  \"swift .hljs-meta\": {\n    \"color\": \"#D08770\"\n  },\n  \"vim .hljs-built_in\": {\n    \"color\": \"#88C0D0\",\n    \"fontStyle\": \"italic\"\n  },\n  \"yaml .hljs-meta\": {\n    \"color\": \"#D08770\"\n  }\n};", "export default {\n  \"hljs\": {\n    \"display\": \"block\",\n    \"overflowX\": \"auto\",\n    \"padding\": \"0.5em\",\n    \"background\": \"#282b2e\",\n    \"color\": \"#e0e2e4\"\n  },\n  \"hljs-keyword\": {\n    \"color\": \"#93c763\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-selector-tag\": {\n    \"color\": \"#93c763\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-literal\": {\n    \"color\": \"#93c763\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-selector-id\": {\n    \"color\": \"#93c763\"\n  },\n  \"hljs-number\": {\n    \"color\": \"#ffcd22\"\n  },\n  \"hljs-attribute\": {\n    \"color\": \"#668bb0\"\n  },\n  \"hljs-code\": {\n    \"color\": \"white\"\n  },\n  \"hljs-class .hljs-title\": {\n    \"color\": \"white\"\n  },\n  \"hljs-section\": {\n    \"color\": \"white\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-regexp\": {\n    \"color\": \"#d39745\"\n  },\n  \"hljs-link\": {\n    \"color\": \"#d39745\"\n  },\n  \"hljs-meta\": {\n    \"color\": \"#557182\"\n  },\n  \"hljs-tag\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-name\": {\n    \"color\": \"#8cbbad\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-bullet\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-subst\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-emphasis\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-type\": {\n    \"color\": \"#8cbbad\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-built_in\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-selector-attr\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-selector-pseudo\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-addition\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-variable\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-template-tag\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-template-variable\": {\n    \"color\": \"#8cbbad\"\n  },\n  \"hljs-string\": {\n    \"color\": \"#ec7600\"\n  },\n  \"hljs-symbol\": {\n    \"color\": \"#ec7600\"\n  },\n  \"hljs-comment\": {\n    \"color\": \"#818e96\"\n  },\n  \"hljs-quote\": {\n    \"color\": \"#818e96\"\n  },\n  \"hljs-deletion\": {\n    \"color\": \"#818e96\"\n  },\n  \"hljs-selector-class\": {\n    \"color\": \"#A082BD\"\n  },\n  \"hljs-doctag\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-title\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-strong\": {\n    \"fontWeight\": \"bold\"\n  }\n};", "export default {\n  \"hljs-comment\": {\n    \"color\": \"#969896\"\n  },\n  \"hljs-quote\": {\n    \"color\": \"#969896\"\n  },\n  \"hljs-variable\": {\n    \"color\": \"#cc6666\"\n  },\n  \"hljs-template-variable\": {\n    \"color\": \"#cc6666\"\n  },\n  \"hljs-tag\": {\n    \"color\": \"#cc6666\"\n  },\n  \"hljs-name\": {\n    \"color\": \"#cc6666\"\n  },\n  \"hljs-selector-id\": {\n    \"color\": \"#cc6666\"\n  },\n  \"hljs-selector-class\": {\n    \"color\": \"#cc6666\"\n  },\n  \"hljs-regexp\": {\n    \"color\": \"#cc6666\"\n  },\n  \"hljs-deletion\": {\n    \"color\": \"#cc6666\"\n  },\n  \"hljs-number\": {\n    \"color\": \"#de935f\"\n  },\n  \"hljs-built_in\": {\n    \"color\": \"#de935f\"\n  },\n  \"hljs-builtin-name\": {\n    \"color\": \"#de935f\"\n  },\n  \"hljs-literal\": {\n    \"color\": \"#de935f\"\n  },\n  \"hljs-type\": {\n    \"color\": \"#de935f\"\n  },\n  \"hljs-params\": {\n    \"color\": \"#de935f\"\n  },\n  \"hljs-meta\": {\n    \"color\": \"#de935f\"\n  },\n  \"hljs-link\": {\n    \"color\": \"#de935f\"\n  },\n  \"hljs-attribute\": {\n    \"color\": \"#f0c674\"\n  },\n  \"hljs-string\": {\n    \"color\": \"#b5bd68\"\n  },\n  \"hljs-symbol\": {\n    \"color\": \"#b5bd68\"\n  },\n  \"hljs-bullet\": {\n    \"color\": \"#b5bd68\"\n  },\n  \"hljs-addition\": {\n    \"color\": \"#b5bd68\"\n  },\n  \"hljs-title\": {\n    \"color\": \"#81a2be\"\n  },\n  \"hljs-section\": {\n    \"color\": \"#81a2be\"\n  },\n  \"hljs-keyword\": {\n    \"color\": \"#b294bb\"\n  },\n  \"hljs-selector-tag\": {\n    \"color\": \"#b294bb\"\n  },\n  \"hljs\": {\n    \"display\": \"block\",\n    \"overflowX\": \"auto\",\n    \"background\": \"#1d1f21\",\n    \"color\": \"#c5c8c6\",\n    \"padding\": \"0.5em\"\n  },\n  \"hljs-emphasis\": {\n    \"fontStyle\": \"italic\"\n  },\n  \"hljs-strong\": {\n    \"fontWeight\": \"bold\"\n  }\n};", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.File = exports.Blob = exports.FormData = void 0;\nconst globalObject = (function () {\n    if (typeof globalThis !== \"undefined\") {\n        return globalThis;\n    }\n    if (typeof self !== \"undefined\") {\n        return self;\n    }\n    return window;\n}());\nexports.FormData = globalObject.FormData, exports.Blob = globalObject.Blob, exports.File = globalObject.File;\n", "var 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-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n", "var 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", "module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\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  activeXDocument = null; // avoid memory leak\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\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", "var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n  if (options && options.enumerable) target[key] = value;\n  else createNonEnumerableProperty(target, key, value);\n};\n", "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n  if (it) {\n    var target = STATIC ? it : it.prototype;\n    if (!hasOwn(target, TO_STRING_TAG)) {\n      defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n    }\n    if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n      createNonEnumerableProperty(target, 'toString', toString);\n    }\n  }\n};\n", "var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n", "module.exports = require(\"core-js-pure/stable/instance/trim\");", "export function canJsonParse(str) {\n  try {\n    let testValueForJson = JSON.parse(str)\n    return testValueForJson ? true : false\n  } catch (e) {\n    // exception: string is not valid json\n    return null\n  }\n}\n\nexport function getKnownSyntaxHighlighterLanguage(val) {\n  // to start, only check for json. can expand as needed in future\n  const isValidJson = canJsonParse(val)\n  return isValidJson ? \"json\" : null\n}\n", "module.exports = require(\"core-js-pure/stable/instance/starts-with\");", "var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n", "import { normalizeArray } from \"core/utils\"\n\nexport const UPDATE_LAYOUT = \"layout_update_layout\"\nexport const UPDATE_FILTER = \"layout_update_filter\"\nexport const UPDATE_MODE = \"layout_update_mode\"\nexport const SHOW = \"layout_show\"\n\n// export const ONLY_SHOW = \"layout_only_show\"\n\nexport function updateLayout(layout) {\n  return {\n    type: UPDATE_LAYOUT,\n    payload: layout\n  }\n}\n\nexport function updateFilter(filter) {\n  return {\n    type: UPDATE_FILTER,\n    payload: filter\n  }\n}\n\nexport function show(thing, shown=true) {\n  thing = normalizeArray(thing)\n  return {\n    type: SHOW,\n    payload: {thing, shown}\n  }\n}\n\n// Simple string key-store, used for\nexport function changeMode(thing, mode=\"\") {\n  thing = normalizeArray(thing)\n  return {\n    type: UPDATE_MODE,\n    payload: {thing, mode}\n  }\n}\n", "/*!\n * @description Recursive object extending\n * @author Viacheslav Lotsmanov <lotsmanov89@gmail.com>\n * @license MIT\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2013-2018 Viacheslav Lotsmanov\n *\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.\n */\n\n'use strict';\n\nfunction isSpecificValue(val) {\n\treturn (\n\t\tval instanceof Buffer\n\t\t|| val instanceof Date\n\t\t|| val instanceof RegExp\n\t) ? true : false;\n}\n\nfunction cloneSpecificValue(val) {\n\tif (val instanceof Buffer) {\n\t\tvar x = Buffer.alloc\n\t\t\t? Buffer.alloc(val.length)\n\t\t\t: new Buffer(val.length);\n\t\tval.copy(x);\n\t\treturn x;\n\t} else if (val instanceof Date) {\n\t\treturn new Date(val.getTime());\n\t} else if (val instanceof RegExp) {\n\t\treturn new RegExp(val);\n\t} else {\n\t\tthrow new Error('Unexpected situation');\n\t}\n}\n\n/**\n * Recursive cloning array.\n */\nfunction deepCloneArray(arr) {\n\tvar clone = [];\n\tarr.forEach(function (item, index) {\n\t\tif (typeof item === 'object' && item !== null) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tclone[index] = deepCloneArray(item);\n\t\t\t} else if (isSpecificValue(item)) {\n\t\t\t\tclone[index] = cloneSpecificValue(item);\n\t\t\t} else {\n\t\t\t\tclone[index] = deepExtend({}, item);\n\t\t\t}\n\t\t} else {\n\t\t\tclone[index] = item;\n\t\t}\n\t});\n\treturn clone;\n}\n\nfunction safeGetProperty(object, property) {\n\treturn property === '__proto__' ? undefined : object[property];\n}\n\n/**\n * Extening object that entered in first argument.\n *\n * Returns extended object or false if have no target object or incorrect type.\n *\n * If you wish to clone source object (without modify it), just use empty new\n * object as first argument, like this:\n *   deepExtend({}, yourObj_1, [yourObj_N]);\n */\nvar deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) {\n\tif (arguments.length < 1 || typeof arguments[0] !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (arguments.length < 2) {\n\t\treturn arguments[0];\n\t}\n\n\tvar target = arguments[0];\n\n\t// convert arguments to array and cut off target object\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\tvar val, src, clone;\n\n\targs.forEach(function (obj) {\n\t\t// skip argument if isn't an object, is null, or is an array\n\t\tif (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(obj).forEach(function (key) {\n\t\t\tsrc = safeGetProperty(target, key); // source value\n\t\t\tval = safeGetProperty(obj, key); // new value\n\n\t\t\t// recursion prevention\n\t\t\tif (val === target) {\n\t\t\t\treturn;\n\n\t\t\t/**\n\t\t\t * if new value isn't object then just overwrite by new value\n\t\t\t * instead of extending.\n\t\t\t */\n\t\t\t} else if (typeof val !== 'object' || val === null) {\n\t\t\t\ttarget[key] = val;\n\t\t\t\treturn;\n\n\t\t\t// just clone arrays (and recursive clone objects inside)\n\t\t\t} else if (Array.isArray(val)) {\n\t\t\t\ttarget[key] = deepCloneArray(val);\n\t\t\t\treturn;\n\n\t\t\t// custom cloning and overwrite for specific objects\n\t\t\t} else if (isSpecificValue(val)) {\n\t\t\t\ttarget[key] = cloneSpecificValue(val);\n\t\t\t\treturn;\n\n\t\t\t// overwrite by new value if source isn't object or array\n\t\t\t} else if (typeof src !== 'object' || src === null || Array.isArray(src)) {\n\t\t\t\ttarget[key] = deepExtend({}, val);\n\t\t\t\treturn;\n\n\t\t\t// source value and new value is objects both, extending...\n\t\t\t} else {\n\t\t\t\ttarget[key] = deepExtend(src, val);\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t});\n\n\treturn target;\n};\n", "var 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", "var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\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,no-throw-literal -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n", "var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n", "var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    keys.push(key);\n  }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n  // avoid scope creep, the keys array can then be collected\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n\n  Readable.call(this, options);\n  Writable.call(this, options);\n\n  if (options && options.readable === false) this.readable = false;\n\n  if (options && options.writable === false) this.writable = false;\n\n  this.allowHalfOpen = true;\n  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n  this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // if we allow half-open state, or if the writable side ended,\n  // then we're ok.\n  if (this.allowHalfOpen || this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n  this.push(null);\n  this.end();\n\n  pna.nextTick(cb, err);\n};", "'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n  throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n  module.exports = randomBytes\n} else {\n  module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n  // phantomjs needs to throw\n  if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n  var bytes = Buffer.allocUnsafe(size)\n\n  if (size > 0) {  // getRandomValues fails on IE if size == 0\n    if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n      // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n      for (var generated = 0; generated < size; generated += MAX_BYTES) {\n        // buffer.slice automatically checks if the end is past the end of\n        // the buffer so we don't have to here\n        crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n      }\n    } else {\n      crypto.getRandomValues(bytes)\n    }\n  }\n\n  if (typeof cb === 'function') {\n    return process.nextTick(function () {\n      cb(null, bytes)\n    })\n  }\n\n  return bytes\n}\n", "import reduce from \"lodash/reduce\"\nimport * as NotOfType from \"./transformers/not-of-type\"\nimport * as ParameterOneOf from \"./transformers/parameter-oneof\"\n\nconst errorTransformers = [\n  NotOfType,\n  ParameterOneOf\n]\n\nexport default function transformErrors (errors) {\n  // Dev note: unimplemented artifact where\n  // jsSpec: system.specSelectors.specJson().toJS()\n  // regardless, to be compliant with redux@4, instead of calling the store method here,\n  // jsSpec should be pass down as an argument,\n  let inputs = {\n    jsSpec: {}\n  }\n\n  let transformedErrors = reduce(errorTransformers, (result, transformer) => {\n    try {\n      let newlyTransformedErrors = transformer.transform(result, inputs)\n      return newlyTransformedErrors.filter(err => !!err) // filter removed errors\n    } catch(e) {\n      console.error(\"Transformer error:\", e)\n      return result\n    }\n  }, errors)\n\n  return transformedErrors\n    .filter(err => !!err) // filter removed errors\n    .map(err => {\n      if(!err.get(\"line\") && err.get(\"path\")) {\n        // TODO: re-resolve line number if we've transformed it away\n      }\n      return err\n    })\n\n}\n", "export default function _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\n  return obj;\n}", "import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\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\n  return target;\n}", "import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n", "var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.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", "var ceil = Math.ceil;\nvar floor = Math.floor;\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 -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n", "'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n", "module.exports = {};\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/define-iterator');\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 { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n", "var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw TypeError('Incorrect invocation');\n};\n", "var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n  this._block = Buffer.alloc(blockSize)\n  this._finalSize = finalSize\n  this._blockSize = blockSize\n  this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n  if (typeof data === 'string') {\n    enc = enc || 'utf8'\n    data = Buffer.from(data, enc)\n  }\n\n  var block = this._block\n  var blockSize = this._blockSize\n  var length = data.length\n  var accum = this._len\n\n  for (var offset = 0; offset < length;) {\n    var assigned = accum % blockSize\n    var remainder = Math.min(length - offset, blockSize - assigned)\n\n    for (var i = 0; i < remainder; i++) {\n      block[assigned + i] = data[offset + i]\n    }\n\n    accum += remainder\n    offset += remainder\n\n    if ((accum % blockSize) === 0) {\n      this._update(block)\n    }\n  }\n\n  this._len += length\n  return this\n}\n\nHash.prototype.digest = function (enc) {\n  var rem = this._len % this._blockSize\n\n  this._block[rem] = 0x80\n\n  // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n  // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n  this._block.fill(0, rem + 1)\n\n  if (rem >= this._finalSize) {\n    this._update(this._block)\n    this._block.fill(0)\n  }\n\n  var bits = this._len * 8\n\n  // uint32\n  if (bits <= 0xffffffff) {\n    this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n  // uint64\n  } else {\n    var lowBits = (bits & 0xffffffff) >>> 0\n    var highBits = (bits - lowBits) / 0x100000000\n\n    this._block.writeUInt32BE(highBits, this._blockSize - 8)\n    this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n  }\n\n  this._update(this._block)\n  var hash = this._hash()\n\n  return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n  throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n", "var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nvar _Object$getPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/get-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || _Object$getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "'use strict';\n\nclass NonError extends Error {\n\tconstructor(message) {\n\t\tsuper(NonError._prepareSuperMessage(message));\n\t\tObject.defineProperty(this, 'name', {\n\t\t\tvalue: 'NonError',\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t});\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, NonError);\n\t\t}\n\t}\n\n\tstatic _prepareSuperMessage(message) {\n\t\ttry {\n\t\t\treturn JSON.stringify(message);\n\t\t} catch {\n\t\t\treturn String(message);\n\t\t}\n\t}\n}\n\nconst commonProperties = [\n\t{property: 'name', enumerable: false},\n\t{property: 'message', enumerable: false},\n\t{property: 'stack', enumerable: false},\n\t{property: 'code', enumerable: true}\n];\n\nconst isCalled = Symbol('.toJSON called');\n\nconst toJSON = from => {\n\tfrom[isCalled] = true;\n\tconst json = from.toJSON();\n\tdelete from[isCalled];\n\treturn json;\n};\n\nconst destroyCircular = ({\n\tfrom,\n\tseen,\n\tto_,\n\tforceEnumerable,\n\tmaxDepth,\n\tdepth\n}) => {\n\tconst to = to_ || (Array.isArray(from) ? [] : {});\n\n\tseen.push(from);\n\n\tif (depth >= maxDepth) {\n\t\treturn to;\n\t}\n\n\tif (typeof from.toJSON === 'function' && from[isCalled] !== true) {\n\t\treturn toJSON(from);\n\t}\n\n\tfor (const [key, value] of Object.entries(from)) {\n\t\tif (typeof Buffer === 'function' && Buffer.isBuffer(value)) {\n\t\t\tto[key] = '[object Buffer]';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (typeof value === 'function') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!value || typeof value !== 'object') {\n\t\t\tto[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!seen.includes(from[key])) {\n\t\t\tdepth++;\n\n\t\t\tto[key] = destroyCircular({\n\t\t\t\tfrom: from[key],\n\t\t\t\tseen: seen.slice(),\n\t\t\t\tforceEnumerable,\n\t\t\t\tmaxDepth,\n\t\t\t\tdepth\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tto[key] = '[Circular]';\n\t}\n\n\tfor (const {property, enumerable} of commonProperties) {\n\t\tif (typeof from[property] === 'string') {\n\t\t\tObject.defineProperty(to, property, {\n\t\t\t\tvalue: from[property],\n\t\t\t\tenumerable: forceEnumerable ? true : enumerable,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t}\n\n\treturn to;\n};\n\nconst serializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (typeof value === 'object' && value !== null) {\n\t\treturn destroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tforceEnumerable: true,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t}\n\n\t// People sometimes throw things besides Error objects…\n\tif (typeof value === 'function') {\n\t\t// `JSON.stringify()` discards functions. We do too, unless a function is thrown directly.\n\t\treturn `[Function: ${(value.name || 'anonymous')}]`;\n\t}\n\n\treturn value;\n};\n\nconst deserializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (value instanceof Error) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n\t\tconst newError = new Error(); // eslint-disable-line unicorn/error-message\n\t\tdestroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tto_: newError,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t\treturn newError;\n\t}\n\n\treturn new NonError(value);\n};\n\nmodule.exports = {\n\tserializeError,\n\tdeserializeError\n};\n", "import XML from \"xml\"\nimport isEmpty from \"lodash/isEmpty\"\nimport { objectify, isFunc, normalizeArray, deeplyStripKey } from \"core/utils\"\n\nimport memoizeN from \"../../../helpers/memoizeN\"\n\nconst primitives = {\n  \"string\": () => \"string\",\n  \"string_email\": () => \"user@example.com\",\n  \"string_date-time\": () => new Date().toISOString(),\n  \"string_date\": () => new Date().toISOString().substring(0, 10),\n  \"string_uuid\": () => \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  \"string_hostname\": () => \"example.com\",\n  \"string_ipv4\": () => \"198.51.100.42\",\n  \"string_ipv6\": () => \"2001:0db8:5b96:0000:0000:426f:8e17:642a\",\n  \"number\": () => 0,\n  \"number_float\": () => 0.0,\n  \"integer\": () => 0,\n  \"boolean\": (schema) => typeof schema.default === \"boolean\" ? schema.default : true\n}\n\nconst primitive = (schema) => {\n  schema = objectify(schema)\n  let { type, format } = schema\n\n  let fn = primitives[`${type}_${format}`] || primitives[type]\n\n  if(isFunc(fn))\n    return fn(schema)\n\n  return \"Unknown Type: \" + schema.type\n}\n\n// do a couple of quick sanity tests to ensure the value\n// looks like a $$ref that swagger-client generates.\nconst sanitizeRef = (value) => deeplyStripKey(value, \"$$ref\", (val) =>\n  typeof val === \"string\" && val.indexOf(\"#\") > -1)\n\nconst objectContracts = [\"maxProperties\", \"minProperties\"]\nconst arrayContracts = [\"minItems\", \"maxItems\"]\nconst numberContracts = [\n  \"minimum\",\n  \"maximum\",\n  \"exclusiveMinimum\",\n  \"exclusiveMaximum\"\n]\nconst stringContracts = [\"minLength\", \"maxLength\"]\n\nconst liftSampleHelper = (oldSchema, target, config = {}) => {\n  const setIfNotDefinedInTarget = (key) => {\n    if(target[key] === undefined && oldSchema[key] !== undefined) {\n      target[key] = oldSchema[key]\n    }\n  }\n\n  [\n    \"example\",\n    \"default\",\n    \"enum\",\n    \"xml\",\n    \"type\",\n    ...objectContracts,\n    ...arrayContracts,\n    ...numberContracts,\n    ...stringContracts,\n  ].forEach(key => setIfNotDefinedInTarget(key))\n\n  if(oldSchema.required !== undefined && Array.isArray(oldSchema.required)) {\n    if(target.required === undefined || !target.required.length) {\n      target.required = []\n    }\n    oldSchema.required.forEach(key => {\n      if(target.required.includes(key)) {\n        return\n      }\n      target.required.push(key)\n    })\n  }\n  if(oldSchema.properties) {\n    if(!target.properties) {\n      target.properties = {}\n    }\n    let props = objectify(oldSchema.properties)\n    for (let propName in props) {\n      if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n        continue\n      }\n      if ( props[propName] && props[propName].deprecated ) {\n        continue\n      }\n      if ( props[propName] && props[propName].readOnly && !config.includeReadOnly ) {\n        continue\n      }\n      if ( props[propName] && props[propName].writeOnly && !config.includeWriteOnly ) {\n        continue\n      }\n      if(!target.properties[propName]) {\n        target.properties[propName] = props[propName]\n        if(!oldSchema.required && Array.isArray(oldSchema.required) && oldSchema.required.indexOf(propName) !== -1) {\n          if(!target.required) {\n            target.required = [propName]\n          } else {\n            target.required.push(propName)\n          }\n        }\n      }\n    }\n  }\n  if(oldSchema.items) {\n    if(!target.items) {\n      target.items = {}\n    }\n    target.items = liftSampleHelper(oldSchema.items, target.items, config)\n  }\n\n  return target\n}\n\nexport const sampleFromSchemaGeneric = (schema, config={}, exampleOverride = undefined, respectXML = false) => {\n  if(schema && isFunc(schema.toJS))\n    schema = schema.toJS()\n  let usePlainValue = exampleOverride !== undefined || schema && schema.example !== undefined || schema && schema.default !== undefined\n  // first check if there is the need of combining this schema with others required by allOf\n  const hasOneOf = !usePlainValue && schema && schema.oneOf && schema.oneOf.length > 0\n  const hasAnyOf = !usePlainValue && schema && schema.anyOf && schema.anyOf.length > 0\n  if(!usePlainValue && (hasOneOf || hasAnyOf)) {\n    const schemaToAdd = objectify(hasOneOf\n      ? schema.oneOf[0]\n      : schema.anyOf[0]\n    )\n    liftSampleHelper(schemaToAdd, schema, config)\n    if(!schema.xml && schemaToAdd.xml) {\n      schema.xml = schemaToAdd.xml\n    }\n    if(schema.example !== undefined && schemaToAdd.example !== undefined) {\n      usePlainValue = true\n    } else if(schemaToAdd.properties) {\n      if(!schema.properties) {\n        schema.properties = {}\n      }\n      let props = objectify(schemaToAdd.properties)\n      for (let propName in props) {\n        if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n          continue\n        }\n        if ( props[propName] && props[propName].deprecated ) {\n          continue\n        }\n        if ( props[propName] && props[propName].readOnly && !config.includeReadOnly ) {\n          continue\n        }\n        if ( props[propName] && props[propName].writeOnly && !config.includeWriteOnly ) {\n          continue\n        }\n        if(!schema.properties[propName]) {\n          schema.properties[propName] = props[propName]\n          if(!schemaToAdd.required && Array.isArray(schemaToAdd.required) && schemaToAdd.required.indexOf(propName) !== -1) {\n            if(!schema.required) {\n              schema.required = [propName]\n            } else {\n              schema.required.push(propName)\n            }\n          }\n        }\n      }\n    }\n  }\n  const _attr = {}\n  let { xml, type, example, properties, additionalProperties, items } = schema || {}\n  let { includeReadOnly, includeWriteOnly } = config\n  xml = xml || {}\n  let { name, prefix, namespace } = xml\n  let displayName\n  let res = {}\n\n  // set xml naming and attributes\n  if(respectXML) {\n    name = name || \"notagname\"\n    // add prefix to name if exists\n    displayName = (prefix ? prefix + \":\" : \"\") + name\n    if ( namespace ) {\n      //add prefix to namespace if exists\n      let namespacePrefix = prefix ? ( \"xmlns:\" + prefix ) : \"xmlns\"\n      _attr[namespacePrefix] = namespace\n    }\n  }\n\n  // init xml default response sample obj\n  if(respectXML) {\n    res[displayName] = []\n  }\n\n  const schemaHasAny = (keys) => keys.some(key => Object.prototype.hasOwnProperty.call(schema, key))\n  // try recover missing type\n  if(schema && !type) {\n    if(properties || additionalProperties || schemaHasAny(objectContracts)) {\n      type = \"object\"\n    } else if(items || schemaHasAny(arrayContracts)) {\n      type = \"array\"\n    } else if(schemaHasAny(numberContracts)) {\n      type = \"number\"\n      schema.type = \"number\"\n    } else if(!usePlainValue && !schema.enum){\n      // implicit cover schemaHasAny(stringContracts) or A schema without a type matches any data type is:\n      // components:\n      //   schemas:\n      //     AnyValue:\n      //       anyOf:\n      //         - type: string\n      //         - type: number\n      //         - type: integer\n      //         - type: boolean\n      //         - type: array\n      //           items: {}\n      //         - type: object\n      //\n      // which would resolve to type: string\n      type = \"string\"\n      schema.type = \"string\"\n    }\n  }\n\n  const handleMinMaxItems = (sampleArray) => {\n    if (schema?.maxItems !== null && schema?.maxItems !== undefined) {\n      sampleArray = sampleArray.slice(0, schema?.maxItems)\n    }\n    if (schema?.minItems !== null && schema?.minItems !== undefined) {\n      let i = 0\n      while (sampleArray.length < schema?.minItems) {\n        sampleArray.push(sampleArray[i++ % sampleArray.length])\n      }\n    }\n    return sampleArray\n  }\n\n  // add to result helper init for xml or json\n  const props = objectify(properties)\n  let addPropertyToResult\n  let propertyAddedCounter = 0\n\n  const hasExceededMaxProperties = () => schema\n    && schema.maxProperties !== null && schema.maxProperties !== undefined\n    && propertyAddedCounter >= schema.maxProperties\n\n  const requiredPropertiesToAdd = () => {\n    if(!schema || !schema.required) {\n      return 0\n    }\n    let addedCount = 0\n    if(respectXML) {\n      schema.required.forEach(key => addedCount +=\n        res[key] === undefined\n          ? 0\n          : 1\n      )\n    } else {\n      schema.required.forEach(key => addedCount +=\n        res[displayName]?.find(x => x[key] !== undefined) === undefined\n          ? 0\n          : 1\n      )\n    }\n    return schema.required.length - addedCount\n  }\n\n  const isOptionalProperty = (propName) => {\n    if(!schema || !schema.required || !schema.required.length) {\n      return true\n    }\n    return !schema.required.includes(propName)\n  }\n\n  const canAddProperty = (propName) => {\n    if(!schema || schema.maxProperties === null || schema.maxProperties === undefined) {\n      return true\n    }\n    if(hasExceededMaxProperties()) {\n      return false\n    }\n    if(!isOptionalProperty(propName)) {\n      return true\n    }\n    return (schema.maxProperties - propertyAddedCounter - requiredPropertiesToAdd()) > 0\n  }\n\n  if(respectXML) {\n    addPropertyToResult = (propName, overrideE = undefined) => {\n      if(schema && props[propName]) {\n        // case it is an xml attribute\n        props[propName].xml = props[propName].xml || {}\n\n        if (props[propName].xml.attribute) {\n          const enumAttrVal = Array.isArray(props[propName].enum)\n            ? props[propName].enum[0]\n            : undefined\n          const attrExample = props[propName].example\n          const attrDefault = props[propName].default\n\n          if(attrExample !== undefined) {\n            _attr[props[propName].xml.name || propName] = attrExample\n          } else if(attrDefault !== undefined) {\n            _attr[props[propName].xml.name || propName] = attrDefault\n          } else if(enumAttrVal !== undefined) {\n            _attr[props[propName].xml.name || propName] = enumAttrVal\n          } else {\n            _attr[props[propName].xml.name || propName] = primitive(props[propName])\n          }\n\n          return\n        }\n        props[propName].xml.name = props[propName].xml.name || propName\n      } else if(!props[propName] && additionalProperties !== false) {\n        // case only additionalProperty that is not defined in schema\n        props[propName] = {\n          xml: {\n            name: propName\n          }\n        }\n      }\n\n      let t = sampleFromSchemaGeneric(schema && props[propName] || undefined, config, overrideE, respectXML)\n      if(!canAddProperty(propName)) {\n        return\n      }\n\n      propertyAddedCounter++\n      if (Array.isArray(t)) {\n        res[displayName] = res[displayName].concat(t)\n      } else {\n        res[displayName].push(t)\n      }\n    }\n  } else {\n    addPropertyToResult = (propName, overrideE) => {\n      if(!canAddProperty(propName)) {\n        return\n      }\n      res[propName] = sampleFromSchemaGeneric(props[propName], config, overrideE, respectXML)\n      propertyAddedCounter++\n    }\n  }\n\n  // check for plain value and if found use it to generate sample from it\n  if(usePlainValue) {\n    let sample\n    if(exampleOverride !== undefined) {\n      sample = sanitizeRef(exampleOverride)\n    } else if(example !== undefined) {\n      sample = sanitizeRef(example)\n    } else {\n      sample = sanitizeRef(schema.default)\n    }\n\n    // if json just return\n    if(!respectXML) {\n      // spacial case yaml parser can not know about\n      if(typeof sample === \"number\" && type === \"string\") {\n        return `${sample}`\n      }\n      // return if sample does not need any parsing\n      if(typeof sample !== \"string\" || type === \"string\") {\n        return sample\n      }\n      // check if sample is parsable or just a plain string\n      try {\n        return JSON.parse(sample)\n      } catch(e) {\n        // sample is just plain string return it\n        return sample\n      }\n    }\n\n    // recover missing type\n    if(!schema) {\n      type = Array.isArray(sample) ? \"array\" : typeof sample\n    }\n\n    // generate xml sample recursively for array case\n    if(type === \"array\") {\n      if (!Array.isArray(sample)) {\n        if(typeof sample === \"string\") {\n          return sample\n        }\n        sample = [sample]\n      }\n      const itemSchema = schema\n        ? schema.items\n        : undefined\n      if(itemSchema) {\n        itemSchema.xml = itemSchema.xml || xml || {}\n        itemSchema.xml.name = itemSchema.xml.name || xml.name\n      }\n      let itemSamples = sample\n        .map(s => sampleFromSchemaGeneric(itemSchema, config, s, respectXML))\n      itemSamples = handleMinMaxItems(itemSamples)\n      if(xml.wrapped) {\n        res[displayName] = itemSamples\n        if (!isEmpty(_attr)) {\n          res[displayName].push({_attr: _attr})\n        }\n      }\n      else {\n        res = itemSamples\n      }\n      return res\n    }\n\n    // generate xml sample recursively for object case\n    if(type === \"object\") {\n      // case literal example\n      if(typeof sample === \"string\") {\n        return sample\n      }\n      for (let propName in sample) {\n        if (!Object.prototype.hasOwnProperty.call(sample, propName)) {\n          continue\n        }\n        if (schema && props[propName] && props[propName].readOnly && !includeReadOnly) {\n          continue\n        }\n        if (schema && props[propName] && props[propName].writeOnly && !includeWriteOnly) {\n          continue\n        }\n        if (schema && props[propName] && props[propName].xml && props[propName].xml.attribute) {\n          _attr[props[propName].xml.name || propName] = sample[propName]\n          continue\n        }\n        addPropertyToResult(propName, sample[propName])\n      }\n      if (!isEmpty(_attr)) {\n        res[displayName].push({_attr: _attr})\n      }\n\n      return res\n    }\n\n    res[displayName] = !isEmpty(_attr) ? [{_attr: _attr}, sample] : sample\n    return res\n  }\n\n  // use schema to generate sample\n\n  if(type === \"object\") {\n    for (let propName in props) {\n      if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n        continue\n      }\n      if ( props[propName] && props[propName].deprecated ) {\n        continue\n      }\n      if ( props[propName] && props[propName].readOnly && !includeReadOnly ) {\n        continue\n      }\n      if ( props[propName] && props[propName].writeOnly && !includeWriteOnly ) {\n        continue\n      }\n      addPropertyToResult(propName)\n    }\n    if (respectXML && _attr) {\n      res[displayName].push({_attr: _attr})\n    }\n\n    if(hasExceededMaxProperties()) {\n      return res\n    }\n\n    if ( additionalProperties === true ) {\n      if(respectXML) {\n        res[displayName].push({additionalProp: \"Anything can be here\"})\n      } else {\n        res.additionalProp1 = {}\n      }\n      propertyAddedCounter++\n    } else if ( additionalProperties ) {\n      const additionalProps = objectify(additionalProperties)\n      const additionalPropSample = sampleFromSchemaGeneric(additionalProps, config, undefined, respectXML)\n\n      if(respectXML && additionalProps.xml && additionalProps.xml.name && additionalProps.xml.name !== \"notagname\")\n      {\n        res[displayName].push(additionalPropSample)\n      } else {\n        const toGenerateCount = schema.minProperties !== null && schema.minProperties !== undefined && propertyAddedCounter < schema.minProperties\n          ? schema.minProperties - propertyAddedCounter\n          : 3\n        for (let i = 1; i <= toGenerateCount; i++) {\n          if(hasExceededMaxProperties()) {\n            return res\n          }\n          if(respectXML) {\n            const temp = {}\n            temp[\"additionalProp\" + i] = additionalPropSample[\"notagname\"]\n            res[displayName].push(temp)\n          } else {\n            res[\"additionalProp\" + i] = additionalPropSample\n          }\n          propertyAddedCounter++\n        }\n      }\n    }\n    return res\n  }\n\n  if(type === \"array\") {\n    if (!items) {\n      return\n    }\n\n    let sampleArray\n    if(respectXML) {\n      items.xml = items.xml || schema?.xml || {}\n      items.xml.name = items.xml.name || xml.name\n    }\n\n    if(Array.isArray(items.anyOf)) {\n      sampleArray = items.anyOf.map(i => sampleFromSchemaGeneric(liftSampleHelper(items, i, config), config, undefined, respectXML))\n    } else if(Array.isArray(items.oneOf)) {\n      sampleArray = items.oneOf.map(i => sampleFromSchemaGeneric(liftSampleHelper(items, i, config), config, undefined, respectXML))\n    } else if(!respectXML || respectXML && xml.wrapped) {\n      sampleArray = [sampleFromSchemaGeneric(items, config, undefined, respectXML)]\n    } else {\n      return sampleFromSchemaGeneric(items, config, undefined, respectXML)\n    }\n    sampleArray = handleMinMaxItems(sampleArray)\n    if(respectXML && xml.wrapped) {\n      res[displayName] = sampleArray\n      if (!isEmpty(_attr)) {\n        res[displayName].push({_attr: _attr})\n      }\n      return res\n    }\n    return sampleArray\n  }\n\n  let value\n  if (schema && Array.isArray(schema.enum)) {\n    //display enum first value\n    value = normalizeArray(schema.enum)[0]\n  } else if(schema) {\n    // display schema default\n    value = primitive(schema)\n    if(typeof value === \"number\") {\n      let min = schema.minimum\n      if(min !== undefined && min !== null) {\n        if(schema.exclusiveMinimum) {\n          min++\n        }\n        value = min\n      }\n      let max = schema.maximum\n      if(max !== undefined && max !== null) {\n        if(schema.exclusiveMaximum) {\n          max--\n        }\n        value = max\n      }\n    }\n    if(typeof value === \"string\") {\n      if (schema.maxLength !== null && schema.maxLength !== undefined) {\n        value = value.slice(0, schema.maxLength)\n      }\n      if (schema.minLength !== null && schema.minLength !== undefined) {\n        let i = 0\n        while (value.length < schema.minLength) {\n          value += value[i++ % value.length]\n        }\n      }\n    }\n  } else {\n    return\n  }\n  if (type === \"file\") {\n    return\n  }\n\n  if(respectXML) {\n    res[displayName] = !isEmpty(_attr) ? [{_attr: _attr}, value] : value\n    return res\n  }\n\n  return value\n}\n\nexport const inferSchema = (thing) => {\n  if(thing.schema)\n    thing = thing.schema\n\n  if(thing.properties) {\n    thing.type = \"object\"\n  }\n\n  return thing // Hopefully this will have something schema like in it... `type` for example\n}\n\nexport const createXMLExample = (schema, config, o) => {\n  const json = sampleFromSchemaGeneric(schema, config, o, true)\n  if (!json) { return }\n  if(typeof json === \"string\") {\n    return json\n  }\n  return XML(json, { declaration: true, indent: \"\\t\" })\n}\n\nexport const sampleFromSchema = (schema, config, o) =>\n  sampleFromSchemaGeneric(schema, config, o, false)\n\nconst resolver = (arg1, arg2, arg3) => [arg1, JSON.stringify(arg2), JSON.stringify(arg3)]\n\nexport const memoizedCreateXMLExample = memoizeN(createXMLExample, resolver)\n\nexport const memoizedSampleFromSchema = memoizeN(sampleFromSchema, resolver)\n", "module.exports = require(\"core-js-pure/stable/instance/every\");", "\"use strict\";\n\nvar _require = require('./Component'),\n    CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;", "export const UPDATE_CONFIGS = \"configs_update\"\nexport const TOGGLE_CONFIGS = \"configs_toggle\"\n\n// Update the configs, with a merge ( not deep )\nexport function update(configName, configValue) {\n  return {\n    type: UPDATE_CONFIGS,\n    payload: {\n      [configName]: configValue\n    },\n  }\n}\n\n// Toggle's the config, by name\nexport function toggle(configName) {\n  return {\n    type: TOGGLE_CONFIGS,\n    payload: configName,\n  }\n}\n\n\n// Hook\nexport const loaded = () => ({getConfigs, authActions}) => {\n  // check if we should restore authorization data from localStorage\n  const configs = getConfigs()\n  if (configs.persistAuthorization)\n  { \n    const authorized = localStorage.getItem(\"authorized\")                \n    if(authorized)\n    {      \n      authActions.restoreAuthorization({      \n        authorized: JSON.parse(authorized)\n      })                \n    }\n  }\n}\n", "import React, { Component } from \"react\"\n\nexport const componentDidCatch = console.error\n\nconst isClassComponent = component => component.prototype && component.prototype.isReactComponent\n\nexport const withErrorBoundary = (getSystem) => (WrappedComponent) => {\n  const { getComponent, fn } = getSystem()\n  const ErrorBoundary = getComponent(\"ErrorBoundary\")\n  const targetName = fn.getDisplayName(WrappedComponent)\n\n  class WithErrorBoundary extends Component {\n    render() {\n      return (\n        <ErrorBoundary targetName={targetName} getComponent={getComponent} fn={fn}>\n          <WrappedComponent {...this.props} {...this.context} />\n        </ErrorBoundary>\n      )\n    }\n  }\n  WithErrorBoundary.displayName = `WithErrorBoundary(${targetName})`\n  if (isClassComponent(WrappedComponent)) {\n    /**\n     * We need to handle case of class components defining a `mapStateToProps` public method.\n     * Components with `mapStateToProps` public method cannot be wrapped.\n     */\n    WithErrorBoundary.prototype.mapStateToProps = WrappedComponent.prototype.mapStateToProps\n  }\n\n  return WithErrorBoundary\n}\n\n", "/**\n * @prettier\n */\n\nimport Im from \"immutable\"\n\nconst swagger2SchemaKeys = Im.Set.of(\n  \"type\",\n  \"format\",\n  \"items\",\n  \"default\",\n  \"maximum\",\n  \"exclusiveMaximum\",\n  \"minimum\",\n  \"exclusiveMinimum\",\n  \"maxLength\",\n  \"minLength\",\n  \"pattern\",\n  \"maxItems\",\n  \"minItems\",\n  \"uniqueItems\",\n  \"enum\",\n  \"multipleOf\"\n)\n\n/**\n * @typedef {Object} ParameterSchemaDescriptor\n * @property {Immutable.Map} schema - the parameter schema\n * @property {string|null} parameterContentMediaType - the effective media type, for `content`-based OpenAPI 3.0 Parameters, or `null` otherwise\n */\n\n/**\n * Get the effective schema value for a parameter, or an empty Immutable.Map if\n * no suitable schema can be found.\n *\n * Supports OpenAPI 3.0 `Parameter.content` priority -- since a Parameter Object\n * cannot have both `schema` and `content`, this function ignores `schema` when\n * `content` is present.\n *\n * @param {Immutable.Map} parameter The parameter to identify a schema for\n * @param {object} config\n * @param {boolean} config.isOAS3 Whether the parameter is from an OpenAPI 2.0\n * or OpenAPI 3.0 definition\n * @return {ParameterSchemaDescriptor} Information about the parameter schema\n */\nexport default function getParameterSchema(parameter, { isOAS3 } = {}) {\n  // Return empty Map if `parameter` isn't a Map\n  if (!Im.Map.isMap(parameter)) {\n    return {\n      schema: Im.Map(),\n      parameterContentMediaType: null,\n    }\n  }\n\n  if (!isOAS3) {\n    // Swagger 2.0\n    if (parameter.get(\"in\") === \"body\") {\n      return {\n        schema: parameter.get(\"schema\", Im.Map()),\n        parameterContentMediaType: null,\n      }\n    } else {\n      return {\n        schema: parameter.filter((v, k) => swagger2SchemaKeys.includes(k)),\n        parameterContentMediaType: null,\n      }\n    }\n  }\n\n  // If we've reached here, the parameter is OpenAPI 3.0\n\n  if (parameter.get(\"content\")) {\n    const parameterContentMediaTypes = parameter\n      .get(\"content\", Im.Map({}))\n      .keySeq()\n\n    const parameterContentMediaType = parameterContentMediaTypes.first()\n\n    return {\n      schema: parameter.getIn(\n        [\"content\", parameterContentMediaType, \"schema\"],\n        Im.Map()\n      ),\n      parameterContentMediaType,\n    }\n  }\n\n  return {\n    schema: parameter.get(\"schema\", Im.Map()),\n    parameterContentMediaType: null,\n  }\n}\n", "import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;", "// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};", "import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar nullListeners = {\n  notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar Subscription = /*#__PURE__*/function () {\n  function Subscription(store, parentSub) {\n    this.store = store;\n    this.parentSub = parentSub;\n    this.unsubscribe = null;\n    this.listeners = nullListeners;\n    this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n  }\n\n  var _proto = Subscription.prototype;\n\n  _proto.addNestedSub = function addNestedSub(listener) {\n    this.trySubscribe();\n    return this.listeners.subscribe(listener);\n  };\n\n  _proto.notifyNestedSubs = function notifyNestedSubs() {\n    this.listeners.notify();\n  };\n\n  _proto.handleChangeWrapper = function handleChangeWrapper() {\n    if (this.onStateChange) {\n      this.onStateChange();\n    }\n  };\n\n  _proto.isSubscribed = function isSubscribed() {\n    return Boolean(this.unsubscribe);\n  };\n\n  _proto.trySubscribe = function trySubscribe() {\n    if (!this.unsubscribe) {\n      this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n      this.listeners = createListenerCollection();\n    }\n  };\n\n  _proto.tryUnsubscribe = function tryUnsubscribe() {\n    if (this.unsubscribe) {\n      this.unsubscribe();\n      this.unsubscribe = null;\n      this.listeners.clear();\n      this.listeners = nullListeners;\n    }\n  };\n\n  return Subscription;\n}();\n\nexport { Subscription as default };", "import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;", "import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = new Subscription(store);\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useIsomorphicLayoutEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;", "export default function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}", "export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\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\n  return target;\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n  selectorFactory is a func that is responsible for returning the selector function used to\r\n  compute new props from state, props, and dispatch. For example:\r\n      export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n      thing: state.things[props.thingId],\r\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n    }))(YourComponent)\r\n    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n  selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, [\"reactReduxForwardedRef\"]);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}", "function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}", "import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}", "import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];", "export default function bindActionCreators(actionCreators, dispatch) {\n  var boundActionCreators = {};\n\n  var _loop = function _loop(key) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = function () {\n        return dispatch(actionCreator.apply(void 0, arguments));\n      };\n    }\n  };\n\n  for (var key in actionCreators) {\n    _loop(key);\n  }\n\n  return boundActionCreators;\n}", "import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n  connect is a facade over connectAdvanced. It turns its args into a compatible\r\n  selectorFactory, which has the signature:\r\n\r\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n  \r\n  connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n  selectorFactory returns a final props selector from its mapStateToProps,\r\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n  mergePropsFactories, and pure args.\r\n\r\n  The resulting final props selector is called by the Connect component instance whenever\r\n  it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();", "import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return new Subscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n        selectedState = newSelectedState;\n      } else {\n        selectedState = latestSelectedState.current;\n      }\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newStoreState = store.getState();\n\n        var _newSelectedState = latestSelector.current(newStoreState);\n\n        if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = _newSelectedState;\n        latestStoreState.current = newStoreState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(\"You must pass a selector to useSelector\");\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(\"You must pass a function as a selector to useSelector\");\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(\"You must pass a function as an equality function to useSelector\");\n      }\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();", "import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };", "import React, { Component } from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { compose } from \"redux\"\nimport { connect, Provider } from \"react-redux\"\nimport omit from \"lodash/omit\"\nimport identity from \"lodash/identity\"\n\nconst withSystem = (getSystem) => (WrappedComponent) => {\n  const { fn } = getSystem()\n\n  class WithSystem extends Component {\n    render() {\n      return <WrappedComponent {...getSystem()} {...this.props} {...this.context} />\n    }\n  }\n  WithSystem.displayName = `WithSystem(${fn.getDisplayName(WrappedComponent)})`\n  return WithSystem\n}\n\nconst withRoot = (getSystem, reduxStore) => (WrappedComponent) => {\n  const { fn } = getSystem()\n\n  class WithRoot extends Component {\n    render() {\n      return (\n        <Provider store={reduxStore}>\n          <WrappedComponent {...this.props} {...this.context} />\n        </Provider>\n      )\n    }\n  }\n  WithRoot.displayName = `WithRoot(${fn.getDisplayName(WrappedComponent)})`\n  return WithRoot\n}\n\nconst withConnect = (getSystem, WrappedComponent, reduxStore) => {\n  const mapStateToProps = (state, ownProps) => {\n    const props = {...ownProps, ...getSystem()}\n    const customMapStateToProps = WrappedComponent.prototype?.mapStateToProps || (state => ({state}))\n    return customMapStateToProps(state, props)\n  }\n\n  return compose(\n    reduxStore ? withRoot(getSystem, reduxStore) : identity,\n    connect(mapStateToProps),\n    withSystem(getSystem),\n  )(WrappedComponent)\n}\n\nconst handleProps = (getSystem, mapping, props, oldProps) => {\n  for (const prop in mapping) {\n    const fn = mapping[prop]\n\n    if (typeof fn === \"function\") {\n      fn(props[prop], oldProps[prop], getSystem())\n    }\n  }\n}\n\nexport const withMappedContainer = (getSystem, getStore, memGetComponent) => (componentName, mapping) => {\n  const { fn } = getSystem()\n  const WrappedComponent = memGetComponent(componentName, \"root\")\n\n  class WithMappedContainer extends Component {\n    constructor(props, context) {\n      super(props, context)\n      handleProps(getSystem, mapping, props, {})\n    }\n\n    UNSAFE_componentWillReceiveProps(nextProps) {\n      handleProps(getSystem, mapping, nextProps, this.props)\n    }\n\n    render() {\n      const cleanProps = omit(this.props, mapping ? Object.keys(mapping) : [])\n      return <WrappedComponent {...cleanProps} />\n    }\n  }\n  WithMappedContainer.displayName = `WithMappedContainer(${fn.getDisplayName(WrappedComponent)})`\n  return WithMappedContainer\n}\n\nexport const render = (getSystem, getStore, getComponent, getComponents) => (domNode) => {\n  const App = getComponent(getSystem, getStore, getComponents)(\"App\", \"root\")\n  ReactDOM.render(<App/>, domNode)\n}\n\nexport const getComponent = (getSystem, getStore, getComponents) => (componentName, container, config = {}) => {\n\n  if (typeof componentName !== \"string\")\n    throw new TypeError(\"Need a string, to fetch a component. Was given a \" + typeof componentName)\n\n    // getComponent has a config object as a third, optional parameter\n    // using the config object requires the presence of the second parameter, container\n    // e.g. getComponent(\"JsonSchema_string_whatever\", false, { failSilently: true })\n  const component = getComponents(componentName)\n\n  if (!component) {\n    if (!config.failSilently) {\n      getSystem().log.warn(\"Could not find component:\", componentName)\n    }\n    return null\n  }\n\n  if(!container) {\n    return component\n  }\n\n  if(container === \"root\") {\n    return withConnect(getSystem, component, getStore())\n  }\n\n  // container == truthy\n  return withConnect(getSystem, component)\n}\n", "var baseKeys = require('./_baseKeys'),\n    getTag = require('./_getTag'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLike = require('./isArrayLike'),\n    isBuffer = require('./isBuffer'),\n    isPrototype = require('./_isPrototype'),\n    isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nmodule.exports = isEmpty;\n", "var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\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", "var 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", "var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-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", "var 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", "var 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", "module.exports = {};\n", "module.exports = function () { /* empty */ };\n", "var global = require('../internals/global');\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 = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\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", "var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n", "var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n", "var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n", "var global = require('../internals/global');\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 = global.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 TypeError(tryToString(argument) + ' is not iterable');\n};\n", "var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n", "var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n  if (Array.isArray) {\n    return Array.isArray(arg);\n  }\n  return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n", "var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) {\n    if (options && options.unsafe && target[key]) target[key] = src[key];\n    else redefine(target, key, src[key], options);\n  } return target;\n};\n", "var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\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 || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw 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", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n", "import win from \"../../window\"\nimport { Map } from \"immutable\"\n\n/**\n * if duplicate key name existed from FormData entries,\n * we mutated the key name by appending a hashIdx\n * @param {String} k - possibly mutated key name\n * @return {String} - src key name\n */\nconst extractKey = (k) => {\n  const hashIdx = \"_**[]\"\n  if (k.indexOf(hashIdx) < 0) {\n    return k\n  }\n  return k.split(hashIdx)[0].trim()\n}\n\nconst escapeShell = (str) => {\n  if (str === \"-d \") {\n    return str\n  }\n  // eslint-disable-next-line no-useless-escape\n  if (!/^[_\\/-]/g.test(str))\n    return (\"'\" + str\n      .replace(/'/g, \"'\\\\''\") + \"'\")\n  else\n    return str\n}\n\nconst escapeCMD = (str) => {\n  str = str\n    .replace(/\\^/g, \"^^\")\n    .replace(/\\\\\"/g, \"\\\\\\\\\\\"\")\n    .replace(/\"/g, \"\\\"\\\"\")\n    .replace(/\\n/g, \"^\\n\")\n  if (str === \"-d \") {\n    return str\n      .replace(/-d /g, \"-d ^\\n\")\n  }\n  // eslint-disable-next-line no-useless-escape\n  if (!/^[_\\/-]/g.test(str))\n    return \"\\\"\" + str + \"\\\"\"\n  else\n    return str\n}\n\nconst escapePowershell = (str) => {\n  if (str === \"-d \") {\n    return str\n  }\n  if (/\\n/.test(str)) {\n    return \"@\\\"\\n\" + str.replace(/\"/g, \"\\\\\\\"\").replace(/`/g, \"``\").replace(/\\$/, \"`$\") + \"\\n\\\"@\"\n  }\n  // eslint-disable-next-line no-useless-escape\n  if (!/^[_\\/-]/g.test(str))\n    return \"'\" + str\n      .replace(/\"/g, \"\\\"\\\"\")\n      .replace(/'/g, \"''\") + \"'\"\n  else\n    return str\n}\n\nfunction getStringBodyOfMap(request) {\n  let curlifyToJoin = []\n  for (let [k, v] of request.get(\"body\").entrySeq()) {\n    let extractedKey = extractKey(k)\n    if (v instanceof win.File) {\n      curlifyToJoin.push(`  \"${extractedKey}\": {\\n    \"name\": \"${v.name}\"${v.type ? `,\\n    \"type\": \"${v.type}\"` : \"\"}\\n  }`)\n    } else {\n      curlifyToJoin.push(`  \"${extractedKey}\": ${JSON.stringify(v, null, 2).replace(/(\\r\\n|\\r|\\n)/g, \"\\n  \")}`)\n    }\n  }\n  return `{\\n${curlifyToJoin.join(\",\\n\")}\\n}`\n}\n\nconst curlify = (request, escape, newLine, ext = \"\") => {\n  let isMultipartFormDataRequest = false\n  let curlified = \"\"\n  const addWords = (...args) => curlified += \" \" + args.map(escape).join(\" \")\n  const addWordsWithoutLeadingSpace = (...args) => curlified += args.map(escape).join(\" \")\n  const addNewLine = () => curlified += ` ${newLine}`\n  const addIndent = (level = 1) => curlified += \"  \".repeat(level)\n  let headers = request.get(\"headers\")\n  curlified += \"curl\" + ext\n\n  if (request.has(\"curlOptions\")) {\n    addWords(...request.get(\"curlOptions\"))\n  }\n\n  addWords(\"-X\", request.get(\"method\"))\n\n  addNewLine()\n  addIndent()\n  addWordsWithoutLeadingSpace(`${request.get(\"url\")}`)\n\n  if (headers && headers.size) {\n    for (let p of request.get(\"headers\").entries()) {\n      addNewLine()\n      addIndent()\n      let [h, v] = p\n      addWordsWithoutLeadingSpace(\"-H\", `${h}: ${v}`)\n      isMultipartFormDataRequest = isMultipartFormDataRequest || /^content-type$/i.test(h) && /^multipart\\/form-data$/i.test(v)\n    }\n  }\n\n  const body = request.get(\"body\")\n  if (body) {\n    if (isMultipartFormDataRequest && [\"POST\", \"PUT\", \"PATCH\"].includes(request.get(\"method\"))) {\n      for (let [k, v] of body.entrySeq()) {\n        let extractedKey = extractKey(k)\n        addNewLine()\n        addIndent()\n        addWordsWithoutLeadingSpace(\"-F\")\n        if (v instanceof win.File) {\n          addWords(`${extractedKey}=@${v.name}${v.type ? `;type=${v.type}` : \"\"}`)\n        } else {\n          addWords(`${extractedKey}=${v}`)\n        }\n      }\n    } else if(body instanceof win.File) {\n      addNewLine()\n      addIndent()\n      addWordsWithoutLeadingSpace(`--data-binary '@${body.name}'`)\n    } else {\n      addNewLine()\n      addIndent()\n      addWordsWithoutLeadingSpace(\"-d \")\n      let reqBody = body\n      if (!Map.isMap(reqBody)) {\n        if (typeof reqBody !== \"string\") {\n          reqBody = JSON.stringify(reqBody)\n        }\n        addWordsWithoutLeadingSpace(reqBody)\n      } else {\n        addWordsWithoutLeadingSpace(getStringBodyOfMap(request))\n      }\n    }\n  } else if (!body && request.get(\"method\") === \"POST\") {\n    addNewLine()\n    addIndent()\n    addWordsWithoutLeadingSpace(\"-d ''\")\n  }\n\n  return curlified\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_powershell = (request) => {\n  return curlify(request, escapePowershell, \"`\\n\", \".exe\")\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_bash = (request) => {\n  return curlify(request, escapeShell, \"\\\\\\n\")\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_cmd = (request) => {\n  return curlify(request, escapeCMD, \"^\\n\")\n}\n", "import YAML from \"js-yaml\"\n\nexport const parseYamlConfig = (yaml, system) => {\n  try {\n    return YAML.load(yaml)\n  } catch(e) {\n    if (system) {\n      system.errActions.newThrownErr( new Error(e) )\n    }\n    return {}\n  }\n}\n", "import zipObject from \"lodash/zipObject\"\n\nimport ErrorBoundary from \"./components/error-boundary\"\nimport Fallback from \"./components/fallback\"\nimport { componentDidCatch, withErrorBoundary } from \"./fn\"\n\nconst safeRenderPlugin = ({componentList = [], fullOverride = false} = {}) => ({ getSystem }) => {\n  const defaultComponentList = [\n    \"App\",\n    \"BaseLayout\",\n    \"VersionPragmaFilter\",\n    \"InfoContainer\",\n    \"ServersContainer\",\n    \"SchemesContainer\",\n    \"AuthorizeBtnContainer\",\n    \"FilterContainer\",\n    \"Operations\",\n    \"OperationContainer\",\n    \"parameters\",\n    \"responses\",\n    \"OperationServers\",\n    \"Models\",\n    \"ModelWrapper\",\n  ]\n  const mergedComponentList = fullOverride ? componentList : [...defaultComponentList, ...componentList]\n  const wrapFactory = (Original, { fn }) => fn.withErrorBoundary(Original)\n  const wrapComponents = zipObject(mergedComponentList, Array(mergedComponentList.length).fill(wrapFactory))\n\n  return {\n    fn: {\n      componentDidCatch,\n      withErrorBoundary: withErrorBoundary(getSystem),\n    },\n    components: {\n      ErrorBoundary,\n      Fallback,\n    },\n    wrapComponents,\n  }\n}\n\nexport default safeRenderPlugin\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Fallback = ({ name }) => (\n  <div className=\"fallback\">\n    😱 <i>Could not render { name === \"t\" ? \"this component\" : name }, see the console.</i>\n  </div>\n)\nFallback.propTypes = {\n  name: PropTypes.string.isRequired,\n}\n\nexport default Fallback\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { Map, OrderedMap, List } from \"immutable\"\nimport { getCommonExtensions, getSampleSchema, stringify, isEmptyValue } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\n\nexport const getDefaultRequestBodyValue = (requestBody, mediaType, activeExamplesKey) => {\n  const mediaTypeValue = requestBody.getIn([\"content\", mediaType])\n  const schema = mediaTypeValue.get(\"schema\").toJS()\n\n  const hasExamplesKey = mediaTypeValue.get(\"examples\") !== undefined\n  const exampleSchema = mediaTypeValue.get(\"example\")\n  const mediaTypeExample = hasExamplesKey\n    ? mediaTypeValue.getIn([\n      \"examples\",\n      activeExamplesKey,\n      \"value\"\n    ])\n    : exampleSchema\n\n  const exampleValue = getSampleSchema(\n    schema,\n    mediaType,\n    {\n      includeWriteOnly: true\n    },\n    mediaTypeExample\n  )\n  return stringify(exampleValue)\n}\n\n\n\nconst RequestBody = ({\n  userHasEditedBody,\n  requestBody,\n  requestBodyValue,\n  requestBodyInclusionSetting,\n  requestBodyErrors,\n  getComponent,\n  getConfigs,\n  specSelectors,\n  fn,\n  contentType,\n  isExecute,\n  specPath,\n  onChange,\n  onChangeIncludeEmpty,\n  activeExamplesKey,\n  updateActiveExamplesKey,\n  setRetainRequestBodyValueFlag\n}) => {\n  const handleFile = (e) => {\n    onChange(e.target.files[0])\n  }\n  const setIsIncludedOptions = (key) => {\n    let options = {\n      key,\n      shouldDispatchInit: false,\n      defaultValue: true\n    }\n    let currentInclusion = requestBodyInclusionSetting.get(key, \"no value\")\n    if (currentInclusion === \"no value\") {\n      options.shouldDispatchInit = true\n      // future: can get/set defaultValue from a config setting\n    }\n    return options\n  }\n\n  const Markdown = getComponent(\"Markdown\", true)\n  const ModelExample = getComponent(\"modelExample\")\n  const RequestBodyEditor = getComponent(\"RequestBodyEditor\")\n  const HighlightCode = getComponent(\"highlightCode\")\n  const ExamplesSelectValueRetainer = getComponent(\"ExamplesSelectValueRetainer\")\n  const Example = getComponent(\"Example\")\n  const ParameterIncludeEmpty = getComponent(\"ParameterIncludeEmpty\")\n\n  const { showCommonExtensions } = getConfigs()\n\n  const requestBodyDescription = (requestBody && requestBody.get(\"description\")) || null\n  const requestBodyContent = (requestBody && requestBody.get(\"content\")) || new OrderedMap()\n  contentType = contentType || requestBodyContent.keySeq().first() || \"\"\n\n  const mediaTypeValue = requestBodyContent.get(contentType, OrderedMap())\n  const schemaForMediaType = mediaTypeValue.get(\"schema\", OrderedMap())\n  const rawExamplesOfMediaType = mediaTypeValue.get(\"examples\", null)\n  const sampleForMediaType = rawExamplesOfMediaType?.map((container, key) => {\n    const val = container?.get(\"value\", null)\n    if(val) {\n      container = container.set(\"value\", getDefaultRequestBodyValue(\n        requestBody,\n        contentType,\n        key,\n      ), val)\n    }\n    return container\n  })\n\n  const handleExamplesSelect = (key /*, { isSyntheticChange } */) => {\n    updateActiveExamplesKey(key)\n  }\n  requestBodyErrors = List.isList(requestBodyErrors) ? requestBodyErrors : List()\n\n  if(!mediaTypeValue.size) {\n    return null\n  }\n\n  const isObjectContent = mediaTypeValue.getIn([\"schema\", \"type\"]) === \"object\"\n  const isBinaryFormat = mediaTypeValue.getIn([\"schema\", \"format\"]) === \"binary\"\n  const isBase64Format = mediaTypeValue.getIn([\"schema\", \"format\"]) === \"base64\"\n\n  if(\n    contentType === \"application/octet-stream\"\n    || contentType.indexOf(\"image/\") === 0\n    || contentType.indexOf(\"audio/\") === 0\n    || contentType.indexOf(\"video/\") === 0\n    || isBinaryFormat\n    || isBase64Format\n  ) {\n    const Input = getComponent(\"Input\")\n\n    if(!isExecute) {\n      return <i>\n        Example values are not available for <code>{contentType}</code> media types.\n      </i>\n    }\n\n    return <Input type={\"file\"} onChange={handleFile} />\n  }\n\n  if (\n    isObjectContent &&\n    (\n      contentType === \"application/x-www-form-urlencoded\" ||\n      contentType.indexOf(\"multipart/\") === 0\n    ) &&\n    schemaForMediaType.get(\"properties\", OrderedMap()).size > 0\n  ) {\n    const JsonSchemaForm = getComponent(\"JsonSchemaForm\")\n    const ParameterExt = getComponent(\"ParameterExt\")\n    const bodyProperties = schemaForMediaType.get(\"properties\", OrderedMap())\n    requestBodyValue = Map.isMap(requestBodyValue) ? requestBodyValue : OrderedMap()\n\n    return <div className=\"table-container\">\n      { requestBodyDescription &&\n        <Markdown source={requestBodyDescription} />\n      }\n      <table>\n        <tbody>\n          {\n            Map.isMap(bodyProperties) && bodyProperties.entrySeq().map(([key, prop]) => {\n              if (prop.get(\"readOnly\")) return\n\n              let commonExt = showCommonExtensions ? getCommonExtensions(prop) : null\n              const required = schemaForMediaType.get(\"required\", List()).includes(key)\n              const type = prop.get(\"type\")\n              const format = prop.get(\"format\")\n              const description = prop.get(\"description\")\n              const currentValue = requestBodyValue.getIn([key, \"value\"])\n              const currentErrors = requestBodyValue.getIn([key, \"errors\"]) || requestBodyErrors\n              const included = requestBodyInclusionSetting.get(key) || false\n\n              const useInitialValFromSchemaSamples = prop.has(\"default\")\n                || prop.has(\"example\")\n                || prop.hasIn([\"items\", \"example\"])\n                || prop.hasIn([\"items\", \"default\"])\n              const useInitialValFromEnum = prop.has(\"enum\") && (prop.get(\"enum\").size === 1 || required)\n              const useInitialValue = useInitialValFromSchemaSamples || useInitialValFromEnum\n\n              let initialValue = \"\"\n              if (type === \"array\" && !useInitialValue) {\n                initialValue = []\n              }\n              if (type === \"object\" || useInitialValue) {\n                // TODO: what about example or examples from requestBody could be passed as exampleOverride\n                initialValue = getSampleSchema(prop, false, {\n                  includeWriteOnly: true\n                })\n              }\n\n              if (typeof initialValue !== \"string\" && type === \"object\") {\n               initialValue = stringify(initialValue)\n              }\n              if (typeof initialValue === \"string\" && type === \"array\") {\n                initialValue = JSON.parse(initialValue)\n              }\n\n              const isFile = type === \"string\" && (format === \"binary\" || format === \"base64\")\n\n              return <tr key={key} className=\"parameters\" data-property-name={key}>\n              <td className=\"parameters-col_name\">\n                <div className={required ? \"parameter__name required\" : \"parameter__name\"}>\n                  { key }\n                  { !required ? null : <span>&nbsp;*</span> }\n                </div>\n                <div className=\"parameter__type\">\n                  { type }\n                  { format && <span className=\"prop-format\">(${format})</span>}\n                  {!showCommonExtensions || !commonExt.size ? null : commonExt.entrySeq().map(([key, v]) => <ParameterExt key={`${key}-${v}`} xKey={key} xVal={v} />)}\n                </div>\n                <div className=\"parameter__deprecated\">\n                  { prop.get(\"deprecated\") ? \"deprecated\": null }\n                </div>\n              </td>\n              <td className=\"parameters-col_description\">\n                <Markdown source={ description }></Markdown>\n                {isExecute ? <div>\n                  <JsonSchemaForm\n                    fn={fn}\n                    dispatchInitialValue={!isFile}\n                    schema={prop}\n                    description={key}\n                    getComponent={getComponent}\n                    value={currentValue === undefined ? initialValue : currentValue}\n                    required = { required }\n                    errors = { currentErrors }\n                    onChange={(value) => {\n                      onChange(value, [key])\n                    }}\n                  />\n                  {required ? null : (\n                    <ParameterIncludeEmpty\n                      onChange={(value) => onChangeIncludeEmpty(key, value)}\n                      isIncluded={included}\n                      isIncludedOptions={setIsIncludedOptions(key)}\n                      isDisabled={Array.isArray(currentValue) ? currentValue.length !== 0 : !isEmptyValue(currentValue)}\n                    />\n                  )}\n                </div> : null }\n              </td>\n              </tr>\n            })\n          }\n        </tbody>\n      </table>\n    </div>\n  }\n\n  const sampleRequestBody = getDefaultRequestBodyValue(\n    requestBody,\n    contentType,\n    activeExamplesKey,\n  )\n  let language = null\n  let testValueForJson = getKnownSyntaxHighlighterLanguage(sampleRequestBody)\n  if (testValueForJson) {\n    language = \"json\"\n  }\n\n  return <div>\n    { requestBodyDescription &&\n      <Markdown source={requestBodyDescription} />\n    }\n    {\n      sampleForMediaType ? (\n        <ExamplesSelectValueRetainer\n            userHasEditedBody={userHasEditedBody}\n            examples={sampleForMediaType}\n            currentKey={activeExamplesKey}\n            currentUserInputValue={requestBodyValue}\n            onSelect={handleExamplesSelect}\n            updateValue={onChange}\n            defaultToFirstExample={true}\n            getComponent={getComponent}\n            setRetainRequestBodyValueFlag={setRetainRequestBodyValueFlag}\n          />\n      ) : null\n    }\n    {\n      isExecute ? (\n        <div>\n          <RequestBodyEditor\n            value={requestBodyValue}\n            errors={requestBodyErrors}\n            defaultValue={sampleRequestBody}\n            onChange={onChange}\n            getComponent={getComponent}\n          />\n        </div>\n      ) : (\n        <ModelExample\n          getComponent={ getComponent }\n          getConfigs={ getConfigs }\n          specSelectors={ specSelectors }\n          expandDepth={1}\n          isExecute={isExecute}\n          schema={mediaTypeValue.get(\"schema\")}\n          specPath={specPath.push(\"content\", contentType)}\n          example={\n            <HighlightCode\n              className=\"body-param__example\"\n              getConfigs={getConfigs}\n              language={language}\n              value={stringify(requestBodyValue) || sampleRequestBody}\n            />\n          }\n          includeWriteOnly={true}\n        />\n      )\n    }\n    {\n      sampleForMediaType ? (\n        <Example\n          example={sampleForMediaType.get(activeExamplesKey)}\n          getComponent={getComponent}\n          getConfigs={getConfigs}\n        />\n      ) : null\n    }\n  </div>\n}\n\nRequestBody.propTypes = {\n  userHasEditedBody: PropTypes.bool.isRequired,\n  requestBody: ImPropTypes.orderedMap.isRequired,\n  requestBodyValue: ImPropTypes.orderedMap.isRequired,\n  requestBodyInclusionSetting: ImPropTypes.Map.isRequired,\n  requestBodyErrors: ImPropTypes.list.isRequired,\n  getComponent: PropTypes.func.isRequired,\n  getConfigs: PropTypes.func.isRequired,\n  fn: PropTypes.object.isRequired,\n  specSelectors: PropTypes.object.isRequired,\n  contentType: PropTypes.string,\n  isExecute: PropTypes.bool.isRequired,\n  onChange: PropTypes.func.isRequired,\n  onChangeIncludeEmpty: PropTypes.func.isRequired,\n  specPath: PropTypes.array.isRequired,\n  activeExamplesKey: PropTypes.string,\n  updateActiveExamplesKey: PropTypes.func,\n  setRetainRequestBodyValueFlag: PropTypes.func,\n  oas3Actions: PropTypes.object.isRequired\n}\n\nexport default RequestBody\n", "import memoize from \"lodash/memoize\"\n\n/**\n * This function is extension on top of lodash.memoize.\n * It uses all the arguments of the `fn` as the cache key instead of just the first one.\n * If resolver is provided, it determines the cache key for\n * storing the result based on the arguments provided to the memoized function.\n */\n\nconst shallowArrayEquals = (a) => (b) => {\n  return Array.isArray(a) && Array.isArray(b)\n    && a.length === b.length\n    && a.every((val, index) => val === b[index])\n}\n\nconst list = (...args) => args\n\nclass Cache extends Map {\n  delete(key) {\n    const keys = Array.from(this.keys())\n    const foundKey = keys.find(shallowArrayEquals(key))\n    return super.delete(foundKey)\n  }\n\n  get(key) {\n    const keys = Array.from(this.keys())\n    const foundKey = keys.find(shallowArrayEquals(key))\n    return super.get(foundKey)\n  }\n\n  has(key) {\n    const keys = Array.from(this.keys())\n    return keys.findIndex(shallowArrayEquals(key)) !== -1\n  }\n}\n\nconst memoizeN = (fn, resolver = list) => {\n  const { Cache: OriginalCache } = memoize\n  memoize.Cache = Cache\n\n  const memoized = memoize(fn, resolver)\n\n  memoize.Cache = OriginalCache\n\n  return memoized\n}\n\nexport default memoizeN\n", "export const setHash = (value) => {\n  if(value) {\n    return history.pushState(null, null, `#${value}`)\n  } else {\n    return window.location.hash = \"\"\n  }\n}\n", "module.exports = require(\"core-js-pure/features/symbol\");", "'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", "var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.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", "var 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", "var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n", "var 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", "var 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 empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, 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", "var 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", "var 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", "var 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", "/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\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    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "module.exports = require(\"core-js-pure/features/object/define-property\");", "var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n", "var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n", "var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n", "var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n", "var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n", "var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n", "module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n", "var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n", "var _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  var _context;\n\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n  var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\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}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n", "var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n", "'use strict';\n\nif (typeof process === 'undefined' ||\n    !process.version ||\n    process.version.indexOf('v0.') === 0 ||\n    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n  module.exports = { nextTick: nextTick };\n} else {\n  module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('\"callback\" argument must be a function');\n  }\n  var len = arguments.length;\n  var args, i;\n  switch (len) {\n  case 0:\n  case 1:\n    return process.nextTick(fn);\n  case 2:\n    return process.nextTick(function afterTickOne() {\n      fn.call(null, arg1);\n    });\n  case 3:\n    return process.nextTick(function afterTickTwo() {\n      fn.call(null, arg1, arg2);\n    });\n  case 4:\n    return process.nextTick(function afterTickThree() {\n      fn.call(null, arg1, arg2, arg3);\n    });\n  default:\n    args = new Array(len - 1);\n    i = 0;\n    while (i < args.length) {\n      args[i++] = arguments[i];\n    }\n    return process.nextTick(function afterTick() {\n      fn.apply(null, args);\n    });\n  }\n}\n\n", "var $ = 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", "module.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';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n", "module.exports = require(\"core-js-pure/stable/instance/last-index-of\");", "module.exports = require(\"core-js-pure/stable/instance/sort\");", "module.exports = require(\"core-js-pure/stable/map\");", "module.exports = require(\"core-js-pure/stable/object/values\");", "module.exports = require(\"core-js-pure/stable/object/entries\");", "module.exports = require(\"core-js-pure/stable/instance/splice\");", "(function () {\n  \"use strict\";\n\n  function btoa(str) {\n    var buffer;\n\n    if (str instanceof Buffer) {\n      buffer = str;\n    } else {\n      buffer = Buffer.from(str.toString(), 'binary');\n    }\n\n    return buffer.toString('base64');\n  }\n\n  module.exports = btoa;\n}());\n", "module.exports = require(\"core-js-pure/stable/set-timeout\");", "import React from \"react\"\nimport URL from \"url-parse\"\n\nimport PropTypes from \"prop-types\"\nimport { sanitizeUrl, requiresValidationURL } from \"core/utils\"\nimport win from \"core/window\"\n\nexport default class OnlineValidatorBadge extends React.Component {\n    static propTypes = {\n      getComponent: PropTypes.func.isRequired,\n      getConfigs: PropTypes.func.isRequired,\n      specSelectors: PropTypes.object.isRequired\n    }\n\n    constructor(props, context) {\n        super(props, context)\n        let { getConfigs } = props\n        let { validatorUrl } = getConfigs()\n        this.state = {\n            url: this.getDefinitionUrl(),\n            validatorUrl: validatorUrl === undefined ? \"https://validator.swagger.io/validator\" : validatorUrl\n        }\n    }\n\n    getDefinitionUrl = () => {\n      // TODO: test this behavior by stubbing `window.location` in an Enzyme/JSDom env\n      let { specSelectors } = this.props\n\n      const urlObject = new URL(specSelectors.url(), win.location)\n      return urlObject.toString()\n    }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n        let { getConfigs } = nextProps\n        let { validatorUrl } = getConfigs()\n\n        this.setState({\n            url: this.getDefinitionUrl(),\n            validatorUrl: validatorUrl === undefined ? \"https://validator.swagger.io/validator\" : validatorUrl\n        })\n    }\n\n    render() {\n        let { getConfigs } = this.props\n        let { spec } = getConfigs()\n\n        let sanitizedValidatorUrl = sanitizeUrl(this.state.validatorUrl)\n\n        if ( typeof spec === \"object\" && Object.keys(spec).length) return null\n\n        if (!this.state.url || !requiresValidationURL(this.state.validatorUrl)\n                            || !requiresValidationURL(this.state.url)) {\n          return null\n        }\n\n        return (<span className=\"float-right\">\n                <a target=\"_blank\" rel=\"noopener noreferrer\" href={`${ sanitizedValidatorUrl }/debug?url=${ encodeURIComponent(this.state.url) }`}>\n                    <ValidatorImage src={`${ sanitizedValidatorUrl }?url=${ encodeURIComponent(this.state.url) }`} alt=\"Online validator badge\"/>\n                </a>\n            </span>)\n    }\n}\n\n\nclass ValidatorImage extends React.Component {\n  static propTypes = {\n    src: PropTypes.string,\n    alt: PropTypes.string\n  }\n\n  constructor(props) {\n    super(props)\n    this.state = {\n      loaded: false,\n      error: false\n    }\n  }\n\n  componentDidMount() {\n    const img = new Image()\n    img.onload = () => {\n      this.setState({\n        loaded: true\n      })\n    }\n    img.onerror = () => {\n      this.setState({\n        error: true\n      })\n    }\n    img.src = this.props.src\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    if (nextProps.src !== this.props.src) {\n      const img = new Image()\n      img.onload = () => {\n        this.setState({\n          loaded: true\n        })\n      }\n      img.onerror = () => {\n        this.setState({\n          error: true\n        })\n      }\n      img.src = nextProps.src\n    }\n  }\n\n  render() {\n    if (this.state.error) {\n      return <img alt={\"Error\"} />\n    } else if (!this.state.loaded) {\n      return null\n    }\n    return <img src={this.props.src} alt={this.props.alt} />\n  }\n}\n", "var textarea;\n\nfunction decodeEntity(name) {\n  textarea = textarea || document.createElement('textarea');\n  textarea.innerHTML = '&' + name + ';';\n  return textarea.value;\n}\n\n/**\n * Utility functions\n */\n\nfunction typeOf(obj) {\n  return Object.prototype.toString.call(obj);\n}\n\nfunction isString(obj) {\n  return typeOf(obj) === '[object String]';\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n  return object\n    ? hasOwn.call(object, key)\n    : false;\n}\n\n// Extend objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n  var sources = [].slice.call(arguments, 1);\n\n  sources.forEach(function (source) {\n    if (!source) { return; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be object');\n    }\n\n    Object.keys(source).forEach(function (key) {\n      obj[key] = source[key];\n    });\n  });\n\n  return obj;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar UNESCAPE_MD_RE = /\\\\([\\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\nfunction unescapeMd(str) {\n  if (str.indexOf('\\\\') < 0) { return str; }\n  return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isValidEntityCode(c) {\n  /*eslint no-bitwise:0*/\n  // broken sequence\n  if (c >= 0xD800 && c <= 0xDFFF) { return false; }\n  // never used\n  if (c >= 0xFDD0 && c <= 0xFDEF) { return false; }\n  if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; }\n  // control codes\n  if (c >= 0x00 && c <= 0x08) { return false; }\n  if (c === 0x0B) { return false; }\n  if (c >= 0x0E && c <= 0x1F) { return false; }\n  if (c >= 0x7F && c <= 0x9F) { return false; }\n  // out of range\n  if (c > 0x10FFFF) { return false; }\n  return true;\n}\n\nfunction fromCodePoint(c) {\n  /*eslint no-bitwise:0*/\n  if (c > 0xffff) {\n    c -= 0x10000;\n    var surrogate1 = 0xd800 + (c >> 10),\n        surrogate2 = 0xdc00 + (c & 0x3ff);\n\n    return String.fromCharCode(surrogate1, surrogate2);\n  }\n  return String.fromCharCode(c);\n}\n\nvar NAMED_ENTITY_RE   = /&([a-z#][a-z0-9]{1,31});/gi;\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\nfunction replaceEntityPattern(match, name) {\n  var code = 0;\n  var decoded = decodeEntity(name);\n\n  if (name !== decoded) {\n    return decoded;\n  } else if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n    code = name[1].toLowerCase() === 'x' ?\n      parseInt(name.slice(2), 16)\n    :\n      parseInt(name.slice(1), 10);\n    if (isValidEntityCode(code)) {\n      return fromCodePoint(code);\n    }\n  }\n  return match;\n}\n\nfunction replaceEntities(str) {\n  if (str.indexOf('&') < 0) { return str; }\n\n  return str.replace(NAMED_ENTITY_RE, replaceEntityPattern);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;'\n};\n\nfunction replaceUnsafeChar(ch) {\n  return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n  if (HTML_ESCAPE_TEST_RE.test(str)) {\n    return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n  }\n  return str;\n}\n\nvar utils = /*#__PURE__*/Object.freeze({\n  isString: isString,\n  has: has,\n  assign: assign,\n  unescapeMd: unescapeMd,\n  isValidEntityCode: isValidEntityCode,\n  fromCodePoint: fromCodePoint,\n  replaceEntities: replaceEntities,\n  escapeHtml: escapeHtml\n});\n\n/**\n * Renderer rules cache\n */\n\nvar rules = {};\n\n/**\n * Blockquotes\n */\n\nrules.blockquote_open = function(/* tokens, idx, options, env */) {\n  return '<blockquote>\\n';\n};\n\nrules.blockquote_close = function(tokens, idx /*, options, env */) {\n  return '</blockquote>' + getBreak(tokens, idx);\n};\n\n/**\n * Code\n */\n\nrules.code = function(tokens, idx /*, options, env */) {\n  if (tokens[idx].block) {\n    return '<pre><code>' + escapeHtml(tokens[idx].content) + '</code></pre>' + getBreak(tokens, idx);\n  }\n  return '<code>' + escapeHtml(tokens[idx].content) + '</code>';\n};\n\n/**\n * Fenced code blocks\n */\n\nrules.fence = function(tokens, idx, options, env, instance) {\n  var token = tokens[idx];\n  var langClass = '';\n  var langPrefix = options.langPrefix;\n  var langName = '', fences, fenceName;\n  var highlighted;\n\n  if (token.params) {\n\n    //\n    // ```foo bar\n    //\n    // Try custom renderer \"foo\" first. That will simplify overwrite\n    // for diagrams, latex, and any other fenced block with custom look\n    //\n\n    fences = token.params.split(/\\s+/g);\n    fenceName = fences.join(' ');\n\n    if (has(instance.rules.fence_custom, fences[0])) {\n      return instance.rules.fence_custom[fences[0]](tokens, idx, options, env, instance);\n    }\n\n    langName = escapeHtml(replaceEntities(unescapeMd(fenceName)));\n    langClass = ' class=\"' + langPrefix + langName + '\"';\n  }\n\n  if (options.highlight) {\n    highlighted = options.highlight.apply(options.highlight, [ token.content ].concat(fences))\n      || escapeHtml(token.content);\n  } else {\n    highlighted = escapeHtml(token.content);\n  }\n\n  return '<pre><code' + langClass + '>'\n        + highlighted\n        + '</code></pre>'\n        + getBreak(tokens, idx);\n};\n\nrules.fence_custom = {};\n\n/**\n * Headings\n */\n\nrules.heading_open = function(tokens, idx /*, options, env */) {\n  return '<h' + tokens[idx].hLevel + '>';\n};\nrules.heading_close = function(tokens, idx /*, options, env */) {\n  return '</h' + tokens[idx].hLevel + '>\\n';\n};\n\n/**\n * Horizontal rules\n */\n\nrules.hr = function(tokens, idx, options /*, env */) {\n  return (options.xhtmlOut ? '<hr />' : '<hr>') + getBreak(tokens, idx);\n};\n\n/**\n * Bullets\n */\n\nrules.bullet_list_open = function(/* tokens, idx, options, env */) {\n  return '<ul>\\n';\n};\nrules.bullet_list_close = function(tokens, idx /*, options, env */) {\n  return '</ul>' + getBreak(tokens, idx);\n};\n\n/**\n * List items\n */\n\nrules.list_item_open = function(/* tokens, idx, options, env */) {\n  return '<li>';\n};\nrules.list_item_close = function(/* tokens, idx, options, env */) {\n  return '</li>\\n';\n};\n\n/**\n * Ordered list items\n */\n\nrules.ordered_list_open = function(tokens, idx /*, options, env */) {\n  var token = tokens[idx];\n  var order = token.order > 1 ? ' start=\"' + token.order + '\"' : '';\n  return '<ol' + order + '>\\n';\n};\nrules.ordered_list_close = function(tokens, idx /*, options, env */) {\n  return '</ol>' + getBreak(tokens, idx);\n};\n\n/**\n * Paragraphs\n */\n\nrules.paragraph_open = function(tokens, idx /*, options, env */) {\n  return tokens[idx].tight ? '' : '<p>';\n};\nrules.paragraph_close = function(tokens, idx /*, options, env */) {\n  var addBreak = !(tokens[idx].tight && idx && tokens[idx - 1].type === 'inline' && !tokens[idx - 1].content);\n  return (tokens[idx].tight ? '' : '</p>') + (addBreak ? getBreak(tokens, idx) : '');\n};\n\n/**\n * Links\n */\n\nrules.link_open = function(tokens, idx, options /* env */) {\n  var title = tokens[idx].title ? (' title=\"' + escapeHtml(replaceEntities(tokens[idx].title)) + '\"') : '';\n  var target = options.linkTarget ? (' target=\"' + options.linkTarget + '\"') : '';\n  return '<a href=\"' + escapeHtml(tokens[idx].href) + '\"' + title + target + '>';\n};\nrules.link_close = function(/* tokens, idx, options, env */) {\n  return '</a>';\n};\n\n/**\n * Images\n */\n\nrules.image = function(tokens, idx, options /*, env */) {\n  var src = ' src=\"' + escapeHtml(tokens[idx].src) + '\"';\n  var title = tokens[idx].title ? (' title=\"' + escapeHtml(replaceEntities(tokens[idx].title)) + '\"') : '';\n  var alt = ' alt=\"' + (tokens[idx].alt ? escapeHtml(replaceEntities(unescapeMd(tokens[idx].alt))) : '') + '\"';\n  var suffix = options.xhtmlOut ? ' /' : '';\n  return '<img' + src + alt + title + suffix + '>';\n};\n\n/**\n * Tables\n */\n\nrules.table_open = function(/* tokens, idx, options, env */) {\n  return '<table>\\n';\n};\nrules.table_close = function(/* tokens, idx, options, env */) {\n  return '</table>\\n';\n};\nrules.thead_open = function(/* tokens, idx, options, env */) {\n  return '<thead>\\n';\n};\nrules.thead_close = function(/* tokens, idx, options, env */) {\n  return '</thead>\\n';\n};\nrules.tbody_open = function(/* tokens, idx, options, env */) {\n  return '<tbody>\\n';\n};\nrules.tbody_close = function(/* tokens, idx, options, env */) {\n  return '</tbody>\\n';\n};\nrules.tr_open = function(/* tokens, idx, options, env */) {\n  return '<tr>';\n};\nrules.tr_close = function(/* tokens, idx, options, env */) {\n  return '</tr>\\n';\n};\nrules.th_open = function(tokens, idx /*, options, env */) {\n  var token = tokens[idx];\n  return '<th'\n    + (token.align ? ' style=\"text-align:' + token.align + '\"' : '')\n    + '>';\n};\nrules.th_close = function(/* tokens, idx, options, env */) {\n  return '</th>';\n};\nrules.td_open = function(tokens, idx /*, options, env */) {\n  var token = tokens[idx];\n  return '<td'\n    + (token.align ? ' style=\"text-align:' + token.align + '\"' : '')\n    + '>';\n};\nrules.td_close = function(/* tokens, idx, options, env */) {\n  return '</td>';\n};\n\n/**\n * Bold\n */\n\nrules.strong_open = function(/* tokens, idx, options, env */) {\n  return '<strong>';\n};\nrules.strong_close = function(/* tokens, idx, options, env */) {\n  return '</strong>';\n};\n\n/**\n * Italicize\n */\n\nrules.em_open = function(/* tokens, idx, options, env */) {\n  return '<em>';\n};\nrules.em_close = function(/* tokens, idx, options, env */) {\n  return '</em>';\n};\n\n/**\n * Strikethrough\n */\n\nrules.del_open = function(/* tokens, idx, options, env */) {\n  return '<del>';\n};\nrules.del_close = function(/* tokens, idx, options, env */) {\n  return '</del>';\n};\n\n/**\n * Insert\n */\n\nrules.ins_open = function(/* tokens, idx, options, env */) {\n  return '<ins>';\n};\nrules.ins_close = function(/* tokens, idx, options, env */) {\n  return '</ins>';\n};\n\n/**\n * Highlight\n */\n\nrules.mark_open = function(/* tokens, idx, options, env */) {\n  return '<mark>';\n};\nrules.mark_close = function(/* tokens, idx, options, env */) {\n  return '</mark>';\n};\n\n/**\n * Super- and sub-script\n */\n\nrules.sub = function(tokens, idx /*, options, env */) {\n  return '<sub>' + escapeHtml(tokens[idx].content) + '</sub>';\n};\nrules.sup = function(tokens, idx /*, options, env */) {\n  return '<sup>' + escapeHtml(tokens[idx].content) + '</sup>';\n};\n\n/**\n * Breaks\n */\n\nrules.hardbreak = function(tokens, idx, options /*, env */) {\n  return options.xhtmlOut ? '<br />\\n' : '<br>\\n';\n};\nrules.softbreak = function(tokens, idx, options /*, env */) {\n  return options.breaks ? (options.xhtmlOut ? '<br />\\n' : '<br>\\n') : '\\n';\n};\n\n/**\n * Text\n */\n\nrules.text = function(tokens, idx /*, options, env */) {\n  return escapeHtml(tokens[idx].content);\n};\n\n/**\n * Content\n */\n\nrules.htmlblock = function(tokens, idx /*, options, env */) {\n  return tokens[idx].content;\n};\nrules.htmltag = function(tokens, idx /*, options, env */) {\n  return tokens[idx].content;\n};\n\n/**\n * Abbreviations, initialism\n */\n\nrules.abbr_open = function(tokens, idx /*, options, env */) {\n  return '<abbr title=\"' + escapeHtml(replaceEntities(tokens[idx].title)) + '\">';\n};\nrules.abbr_close = function(/* tokens, idx, options, env */) {\n  return '</abbr>';\n};\n\n/**\n * Footnotes\n */\n\nrules.footnote_ref = function(tokens, idx) {\n  var n = Number(tokens[idx].id + 1).toString();\n  var id = 'fnref' + n;\n  if (tokens[idx].subId > 0) {\n    id += ':' + tokens[idx].subId;\n  }\n  return '<sup class=\"footnote-ref\"><a href=\"#fn' + n + '\" id=\"' + id + '\">[' + n + ']</a></sup>';\n};\nrules.footnote_block_open = function(tokens, idx, options) {\n  var hr = options.xhtmlOut\n    ? '<hr class=\"footnotes-sep\" />\\n'\n    : '<hr class=\"footnotes-sep\">\\n';\n  return hr + '<section class=\"footnotes\">\\n<ol class=\"footnotes-list\">\\n';\n};\nrules.footnote_block_close = function() {\n  return '</ol>\\n</section>\\n';\n};\nrules.footnote_open = function(tokens, idx) {\n  var id = Number(tokens[idx].id + 1).toString();\n  return '<li id=\"fn' + id + '\"  class=\"footnote-item\">';\n};\nrules.footnote_close = function() {\n  return '</li>\\n';\n};\nrules.footnote_anchor = function(tokens, idx) {\n  var n = Number(tokens[idx].id + 1).toString();\n  var id = 'fnref' + n;\n  if (tokens[idx].subId > 0) {\n    id += ':' + tokens[idx].subId;\n  }\n  return ' <a href=\"#' + id + '\" class=\"footnote-backref\">↩</a>';\n};\n\n/**\n * Definition lists\n */\n\nrules.dl_open = function() {\n  return '<dl>\\n';\n};\nrules.dt_open = function() {\n  return '<dt>';\n};\nrules.dd_open = function() {\n  return '<dd>';\n};\nrules.dl_close = function() {\n  return '</dl>\\n';\n};\nrules.dt_close = function() {\n  return '</dt>\\n';\n};\nrules.dd_close = function() {\n  return '</dd>\\n';\n};\n\n/**\n * Helper functions\n */\n\nfunction nextToken(tokens, idx) {\n  if (++idx >= tokens.length - 2) {\n    return idx;\n  }\n  if ((tokens[idx].type === 'paragraph_open' && tokens[idx].tight) &&\n      (tokens[idx + 1].type === 'inline' && tokens[idx + 1].content.length === 0) &&\n      (tokens[idx + 2].type === 'paragraph_close' && tokens[idx + 2].tight)) {\n    return nextToken(tokens, idx + 2);\n  }\n  return idx;\n}\n\n/**\n * Check to see if `\\n` is needed before the next token.\n *\n * @param  {Array} `tokens`\n * @param  {Number} `idx`\n * @return {String} Empty string or newline\n * @api private\n */\n\nvar getBreak = rules.getBreak = function getBreak(tokens, idx) {\n  idx = nextToken(tokens, idx);\n  if (idx < tokens.length && tokens[idx].type === 'list_item_close') {\n    return '';\n  }\n  return '\\n';\n};\n\n/**\n * Renderer class. Renders HTML and exposes `rules` to allow\n * local modifications.\n */\n\nfunction Renderer() {\n  this.rules = assign({}, rules);\n\n  // exported helper, for custom rules only\n  this.getBreak = rules.getBreak;\n}\n\n/**\n * Render a string of inline HTML with the given `tokens` and\n * `options`.\n *\n * @param  {Array} `tokens`\n * @param  {Object} `options`\n * @param  {Object} `env`\n * @return {String}\n * @api public\n */\n\nRenderer.prototype.renderInline = function (tokens, options, env) {\n  var _rules = this.rules;\n  var len = tokens.length, i = 0;\n  var result = '';\n\n  while (len--) {\n    result += _rules[tokens[i].type](tokens, i++, options, env, this);\n  }\n\n  return result;\n};\n\n/**\n * Render a string of HTML with the given `tokens` and\n * `options`.\n *\n * @param  {Array} `tokens`\n * @param  {Object} `options`\n * @param  {Object} `env`\n * @return {String}\n * @api public\n */\n\nRenderer.prototype.render = function (tokens, options, env) {\n  var _rules = this.rules;\n  var len = tokens.length, i = -1;\n  var result = '';\n\n  while (++i < len) {\n    if (tokens[i].type === 'inline') {\n      result += this.renderInline(tokens[i].children, options, env);\n    } else {\n      result += _rules[tokens[i].type](tokens, i, options, env, this);\n    }\n  }\n  return result;\n};\n\n/**\n * Ruler is a helper class for building responsibility chains from\n * parse rules. It allows:\n *\n *   - easy stack rules chains\n *   - getting main chain and named chains content (as arrays of functions)\n *\n * Helper methods, should not be used directly.\n * @api private\n */\n\nfunction Ruler() {\n  // List of added rules. Each element is:\n  //\n  // { name: XXX,\n  //   enabled: Boolean,\n  //   fn: Function(),\n  //   alt: [ name2, name3 ] }\n  //\n  this.__rules__ = [];\n\n  // Cached rule chains.\n  //\n  // First level - chain name, '' for default.\n  // Second level - digital anchor for fast filtering by charcodes.\n  //\n  this.__cache__ = null;\n}\n\n/**\n * Find the index of a rule by `name`.\n *\n * @param  {String} `name`\n * @return {Number} Index of the given `name`\n * @api private\n */\n\nRuler.prototype.__find__ = function (name) {\n  var len = this.__rules__.length;\n  var i = -1;\n\n  while (len--) {\n    if (this.__rules__[++i].name === name) {\n      return i;\n    }\n  }\n  return -1;\n};\n\n/**\n * Build the rules lookup cache\n *\n * @api private\n */\n\nRuler.prototype.__compile__ = function () {\n  var self = this;\n  var chains = [ '' ];\n\n  // collect unique names\n  self.__rules__.forEach(function (rule) {\n    if (!rule.enabled) {\n      return;\n    }\n\n    rule.alt.forEach(function (altName) {\n      if (chains.indexOf(altName) < 0) {\n        chains.push(altName);\n      }\n    });\n  });\n\n  self.__cache__ = {};\n\n  chains.forEach(function (chain) {\n    self.__cache__[chain] = [];\n    self.__rules__.forEach(function (rule) {\n      if (!rule.enabled) {\n        return;\n      }\n\n      if (chain && rule.alt.indexOf(chain) < 0) {\n        return;\n      }\n      self.__cache__[chain].push(rule.fn);\n    });\n  });\n};\n\n/**\n * Ruler public methods\n * ------------------------------------------------\n */\n\n/**\n * Replace rule function\n *\n * @param  {String} `name` Rule name\n * @param  {Function `fn`\n * @param  {Object} `options`\n * @api private\n */\n\nRuler.prototype.at = function (name, fn, options) {\n  var idx = this.__find__(name);\n  var opt = options || {};\n\n  if (idx === -1) {\n    throw new Error('Parser rule not found: ' + name);\n  }\n\n  this.__rules__[idx].fn = fn;\n  this.__rules__[idx].alt = opt.alt || [];\n  this.__cache__ = null;\n};\n\n/**\n * Add a rule to the chain before given the `ruleName`.\n *\n * @param  {String}   `beforeName`\n * @param  {String}   `ruleName`\n * @param  {Function} `fn`\n * @param  {Object}   `options`\n * @api private\n */\n\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n  var idx = this.__find__(beforeName);\n  var opt = options || {};\n\n  if (idx === -1) {\n    throw new Error('Parser rule not found: ' + beforeName);\n  }\n\n  this.__rules__.splice(idx, 0, {\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n\n  this.__cache__ = null;\n};\n\n/**\n * Add a rule to the chain after the given `ruleName`.\n *\n * @param  {String}   `afterName`\n * @param  {String}   `ruleName`\n * @param  {Function} `fn`\n * @param  {Object}   `options`\n * @api private\n */\n\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n  var idx = this.__find__(afterName);\n  var opt = options || {};\n\n  if (idx === -1) {\n    throw new Error('Parser rule not found: ' + afterName);\n  }\n\n  this.__rules__.splice(idx + 1, 0, {\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n\n  this.__cache__ = null;\n};\n\n/**\n * Add a rule to the end of chain.\n *\n * @param  {String}   `ruleName`\n * @param  {Function} `fn`\n * @param  {Object}   `options`\n * @return {String}\n */\n\nRuler.prototype.push = function (ruleName, fn, options) {\n  var opt = options || {};\n\n  this.__rules__.push({\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n\n  this.__cache__ = null;\n};\n\n/**\n * Enable a rule or list of rules.\n *\n * @param  {String|Array} `list` Name or array of rule names to enable\n * @param  {Boolean} `strict` If `true`, all non listed rules will be disabled.\n * @api private\n */\n\nRuler.prototype.enable = function (list, strict) {\n  list = !Array.isArray(list)\n    ? [ list ]\n    : list;\n\n  // In strict mode disable all existing rules first\n  if (strict) {\n    this.__rules__.forEach(function (rule) {\n      rule.enabled = false;\n    });\n  }\n\n  // Search by name and enable\n  list.forEach(function (name) {\n    var idx = this.__find__(name);\n    if (idx < 0) {\n      throw new Error('Rules manager: invalid rule name ' + name);\n    }\n    this.__rules__[idx].enabled = true;\n  }, this);\n\n  this.__cache__ = null;\n};\n\n\n/**\n * Disable a rule or list of rules.\n *\n * @param  {String|Array} `list` Name or array of rule names to disable\n * @api private\n */\n\nRuler.prototype.disable = function (list) {\n  list = !Array.isArray(list)\n    ? [ list ]\n    : list;\n\n  // Search by name and disable\n  list.forEach(function (name) {\n    var idx = this.__find__(name);\n    if (idx < 0) {\n      throw new Error('Rules manager: invalid rule name ' + name);\n    }\n    this.__rules__[idx].enabled = false;\n  }, this);\n\n  this.__cache__ = null;\n};\n\n/**\n * Get a rules list as an array of functions.\n *\n * @param  {String} `chainName`\n * @return {Object}\n * @api private\n */\n\nRuler.prototype.getRules = function (chainName) {\n  if (this.__cache__ === null) {\n    this.__compile__();\n  }\n  return this.__cache__[chainName] || [];\n};\n\nfunction block(state) {\n\n  if (state.inlineMode) {\n    state.tokens.push({\n      type: 'inline',\n      content: state.src.replace(/\\n/g, ' ').trim(),\n      level: 0,\n      lines: [ 0, 1 ],\n      children: []\n    });\n\n  } else {\n    state.block.parse(state.src, state.options, state.env, state.tokens);\n  }\n}\n\n// Inline parser state\n\nfunction StateInline(src, parserInline, options, env, outTokens) {\n  this.src = src;\n  this.env = env;\n  this.options = options;\n  this.parser = parserInline;\n  this.tokens = outTokens;\n  this.pos = 0;\n  this.posMax = this.src.length;\n  this.level = 0;\n  this.pending = '';\n  this.pendingLevel = 0;\n\n  this.cache = [];        // Stores { start: end } pairs. Useful for backtrack\n                          // optimization of pairs parse (emphasis, strikes).\n\n  // Link parser state vars\n\n  this.isInLabel = false; // Set true when seek link label - we should disable\n                          // \"paired\" rules (emphasis, strikes) to not skip\n                          // tailing `]`\n\n  this.linkLevel = 0;     // Increment for each nesting link. Used to prevent\n                          // nesting in definitions\n\n  this.linkContent = '';  // Temporary storage for link url\n\n  this.labelUnmatchedScopes = 0; // Track unpaired `[` for link labels\n                                 // (backtrack optimization)\n}\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n  this.tokens.push({\n    type: 'text',\n    content: this.pending,\n    level: this.pendingLevel\n  });\n  this.pending = '';\n};\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (token) {\n  if (this.pending) {\n    this.pushPending();\n  }\n\n  this.tokens.push(token);\n  this.pendingLevel = this.level;\n};\n\n// Store value to cache.\n// !!! Implementation has parser-specific optimizations\n// !!! keys MUST be integer, >= 0; values MUST be integer, > 0\n//\nStateInline.prototype.cacheSet = function (key, val) {\n  for (var i = this.cache.length; i <= key; i++) {\n    this.cache.push(0);\n  }\n\n  this.cache[key] = val;\n};\n\n// Get cache value\n//\nStateInline.prototype.cacheGet = function (key) {\n  return key < this.cache.length ? this.cache[key] : 0;\n};\n\n/**\n * Parse link labels\n *\n * This function assumes that first character (`[`) already matches;\n * returns the end of the label.\n *\n * @param  {Object} state\n * @param  {Number} start\n * @api private\n */\n\nfunction parseLinkLabel(state, start) {\n  var level, found, marker,\n      labelEnd = -1,\n      max = state.posMax,\n      oldPos = state.pos,\n      oldFlag = state.isInLabel;\n\n  if (state.isInLabel) { return -1; }\n\n  if (state.labelUnmatchedScopes) {\n    state.labelUnmatchedScopes--;\n    return -1;\n  }\n\n  state.pos = start + 1;\n  state.isInLabel = true;\n  level = 1;\n\n  while (state.pos < max) {\n    marker = state.src.charCodeAt(state.pos);\n    if (marker === 0x5B /* [ */) {\n      level++;\n    } else if (marker === 0x5D /* ] */) {\n      level--;\n      if (level === 0) {\n        found = true;\n        break;\n      }\n    }\n\n    state.parser.skipToken(state);\n  }\n\n  if (found) {\n    labelEnd = state.pos;\n    state.labelUnmatchedScopes = 0;\n  } else {\n    state.labelUnmatchedScopes = level - 1;\n  }\n\n  // restore old state\n  state.pos = oldPos;\n  state.isInLabel = oldFlag;\n\n  return labelEnd;\n}\n\n// Parse abbreviation definitions, i.e. `*[abbr]: description`\n\n\nfunction parseAbbr(str, parserInline, options, env) {\n  var state, labelEnd, pos, max, label, title;\n\n  if (str.charCodeAt(0) !== 0x2A/* * */) { return -1; }\n  if (str.charCodeAt(1) !== 0x5B/* [ */) { return -1; }\n\n  if (str.indexOf(']:') === -1) { return -1; }\n\n  state = new StateInline(str, parserInline, options, env, []);\n  labelEnd = parseLinkLabel(state, 1);\n\n  if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; }\n\n  max = state.posMax;\n\n  // abbr title is always one line, so looking for ending \"\\n\" here\n  for (pos = labelEnd + 2; pos < max; pos++) {\n    if (state.src.charCodeAt(pos) === 0x0A) { break; }\n  }\n\n  label = str.slice(2, labelEnd);\n  title = str.slice(labelEnd + 2, pos).trim();\n  if (title.length === 0) { return -1; }\n  if (!env.abbreviations) { env.abbreviations = {}; }\n  // prepend ':' to avoid conflict with Object.prototype members\n  if (typeof env.abbreviations[':' + label] === 'undefined') {\n    env.abbreviations[':' + label] = title;\n  }\n\n  return pos;\n}\n\nfunction abbr(state) {\n  var tokens = state.tokens, i, l, content, pos;\n\n  if (state.inlineMode) {\n    return;\n  }\n\n  // Parse inlines\n  for (i = 1, l = tokens.length - 1; i < l; i++) {\n    if (tokens[i - 1].type === 'paragraph_open' &&\n        tokens[i].type === 'inline' &&\n        tokens[i + 1].type === 'paragraph_close') {\n\n      content = tokens[i].content;\n      while (content.length) {\n        pos = parseAbbr(content, state.inline, state.options, state.env);\n        if (pos < 0) { break; }\n        content = content.slice(pos).trim();\n      }\n\n      tokens[i].content = content;\n      if (!content.length) {\n        tokens[i - 1].tight = true;\n        tokens[i + 1].tight = true;\n      }\n    }\n  }\n}\n\nfunction normalizeLink(url) {\n  var normalized = replaceEntities(url);\n  // We shouldn't care about the result of malformed URIs,\n  // and should not throw an exception.\n  try {\n    normalized = decodeURI(normalized);\n  } catch (err) {}\n  return encodeURI(normalized);\n}\n\n/**\n * Parse link destination\n *\n *   - on success it returns a string and updates state.pos;\n *   - on failure it returns null\n *\n * @param  {Object} state\n * @param  {Number} pos\n * @api private\n */\n\nfunction parseLinkDestination(state, pos) {\n  var code, level, link,\n      start = pos,\n      max = state.posMax;\n\n  if (state.src.charCodeAt(pos) === 0x3C /* < */) {\n    pos++;\n    while (pos < max) {\n      code = state.src.charCodeAt(pos);\n      if (code === 0x0A /* \\n */) { return false; }\n      if (code === 0x3E /* > */) {\n        link = normalizeLink(unescapeMd(state.src.slice(start + 1, pos)));\n        if (!state.parser.validateLink(link)) { return false; }\n        state.pos = pos + 1;\n        state.linkContent = link;\n        return true;\n      }\n      if (code === 0x5C /* \\ */ && pos + 1 < max) {\n        pos += 2;\n        continue;\n      }\n\n      pos++;\n    }\n\n    // no closing '>'\n    return false;\n  }\n\n  // this should be ... } else { ... branch\n\n  level = 0;\n  while (pos < max) {\n    code = state.src.charCodeAt(pos);\n\n    if (code === 0x20) { break; }\n\n    // ascii control chars\n    if (code < 0x20 || code === 0x7F) { break; }\n\n    if (code === 0x5C /* \\ */ && pos + 1 < max) {\n      pos += 2;\n      continue;\n    }\n\n    if (code === 0x28 /* ( */) {\n      level++;\n      if (level > 1) { break; }\n    }\n\n    if (code === 0x29 /* ) */) {\n      level--;\n      if (level < 0) { break; }\n    }\n\n    pos++;\n  }\n\n  if (start === pos) { return false; }\n\n  link = unescapeMd(state.src.slice(start, pos));\n  if (!state.parser.validateLink(link)) { return false; }\n\n  state.linkContent = link;\n  state.pos = pos;\n  return true;\n}\n\n/**\n * Parse link title\n *\n *   - on success it returns a string and updates state.pos;\n *   - on failure it returns null\n *\n * @param  {Object} state\n * @param  {Number} pos\n * @api private\n */\n\nfunction parseLinkTitle(state, pos) {\n  var code,\n      start = pos,\n      max = state.posMax,\n      marker = state.src.charCodeAt(pos);\n\n  if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return false; }\n\n  pos++;\n\n  // if opening marker is \"(\", switch it to closing marker \")\"\n  if (marker === 0x28) { marker = 0x29; }\n\n  while (pos < max) {\n    code = state.src.charCodeAt(pos);\n    if (code === marker) {\n      state.pos = pos + 1;\n      state.linkContent = unescapeMd(state.src.slice(start + 1, pos));\n      return true;\n    }\n    if (code === 0x5C /* \\ */ && pos + 1 < max) {\n      pos += 2;\n      continue;\n    }\n\n    pos++;\n  }\n\n  return false;\n}\n\nfunction normalizeReference(str) {\n  // use .toUpperCase() instead of .toLowerCase()\n  // here to avoid a conflict with Object.prototype\n  // members (most notably, `__proto__`)\n  return str.trim().replace(/\\s+/g, ' ').toUpperCase();\n}\n\nfunction parseReference(str, parser, options, env) {\n  var state, labelEnd, pos, max, code, start, href, title, label;\n\n  if (str.charCodeAt(0) !== 0x5B/* [ */) { return -1; }\n\n  if (str.indexOf(']:') === -1) { return -1; }\n\n  state = new StateInline(str, parser, options, env, []);\n  labelEnd = parseLinkLabel(state, 0);\n\n  if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; }\n\n  max = state.posMax;\n\n  // [label]:   destination   'title'\n  //         ^^^ skip optional whitespace here\n  for (pos = labelEnd + 2; pos < max; pos++) {\n    code = state.src.charCodeAt(pos);\n    if (code !== 0x20 && code !== 0x0A) { break; }\n  }\n\n  // [label]:   destination   'title'\n  //            ^^^^^^^^^^^ parse this\n  if (!parseLinkDestination(state, pos)) { return -1; }\n  href = state.linkContent;\n  pos = state.pos;\n\n  // [label]:   destination   'title'\n  //                       ^^^ skipping those spaces\n  start = pos;\n  for (pos = pos + 1; pos < max; pos++) {\n    code = state.src.charCodeAt(pos);\n    if (code !== 0x20 && code !== 0x0A) { break; }\n  }\n\n  // [label]:   destination   'title'\n  //                          ^^^^^^^ parse this\n  if (pos < max && start !== pos && parseLinkTitle(state, pos)) {\n    title = state.linkContent;\n    pos = state.pos;\n  } else {\n    title = '';\n    pos = start;\n  }\n\n  // ensure that the end of the line is empty\n  while (pos < max && state.src.charCodeAt(pos) === 0x20/* space */) { pos++; }\n  if (pos < max && state.src.charCodeAt(pos) !== 0x0A) { return -1; }\n\n  label = normalizeReference(str.slice(1, labelEnd));\n  if (typeof env.references[label] === 'undefined') {\n    env.references[label] = { title: title, href: href };\n  }\n\n  return pos;\n}\n\n\nfunction references(state) {\n  var tokens = state.tokens, i, l, content, pos;\n\n  state.env.references = state.env.references || {};\n\n  if (state.inlineMode) {\n    return;\n  }\n\n  // Scan definitions in paragraph inlines\n  for (i = 1, l = tokens.length - 1; i < l; i++) {\n    if (tokens[i].type === 'inline' &&\n        tokens[i - 1].type === 'paragraph_open' &&\n        tokens[i + 1].type === 'paragraph_close') {\n\n      content = tokens[i].content;\n      while (content.length) {\n        pos = parseReference(content, state.inline, state.options, state.env);\n        if (pos < 0) { break; }\n        content = content.slice(pos).trim();\n      }\n\n      tokens[i].content = content;\n      if (!content.length) {\n        tokens[i - 1].tight = true;\n        tokens[i + 1].tight = true;\n      }\n    }\n  }\n}\n\nfunction inline(state) {\n  var tokens = state.tokens, tok, i, l;\n\n  // Parse inlines\n  for (i = 0, l = tokens.length; i < l; i++) {\n    tok = tokens[i];\n    if (tok.type === 'inline') {\n      state.inline.parse(tok.content, state.options, state.env, tok.children);\n    }\n  }\n}\n\nfunction footnote_block(state) {\n  var i, l, j, t, lastParagraph, list, tokens, current, currentLabel,\n      level = 0,\n      insideRef = false,\n      refTokens = {};\n\n  if (!state.env.footnotes) { return; }\n\n  state.tokens = state.tokens.filter(function(tok) {\n    if (tok.type === 'footnote_reference_open') {\n      insideRef = true;\n      current = [];\n      currentLabel = tok.label;\n      return false;\n    }\n    if (tok.type === 'footnote_reference_close') {\n      insideRef = false;\n      // prepend ':' to avoid conflict with Object.prototype members\n      refTokens[':' + currentLabel] = current;\n      return false;\n    }\n    if (insideRef) { current.push(tok); }\n    return !insideRef;\n  });\n\n  if (!state.env.footnotes.list) { return; }\n  list = state.env.footnotes.list;\n\n  state.tokens.push({\n    type: 'footnote_block_open',\n    level: level++\n  });\n  for (i = 0, l = list.length; i < l; i++) {\n    state.tokens.push({\n      type: 'footnote_open',\n      id: i,\n      level: level++\n    });\n\n    if (list[i].tokens) {\n      tokens = [];\n      tokens.push({\n        type: 'paragraph_open',\n        tight: false,\n        level: level++\n      });\n      tokens.push({\n        type: 'inline',\n        content: '',\n        level: level,\n        children: list[i].tokens\n      });\n      tokens.push({\n        type: 'paragraph_close',\n        tight: false,\n        level: --level\n      });\n    } else if (list[i].label) {\n      tokens = refTokens[':' + list[i].label];\n    }\n\n    state.tokens = state.tokens.concat(tokens);\n    if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') {\n      lastParagraph = state.tokens.pop();\n    } else {\n      lastParagraph = null;\n    }\n\n    t = list[i].count > 0 ? list[i].count : 1;\n    for (j = 0; j < t; j++) {\n      state.tokens.push({\n        type: 'footnote_anchor',\n        id: i,\n        subId: j,\n        level: level\n      });\n    }\n\n    if (lastParagraph) {\n      state.tokens.push(lastParagraph);\n    }\n\n    state.tokens.push({\n      type: 'footnote_close',\n      level: --level\n    });\n  }\n  state.tokens.push({\n    type: 'footnote_block_close',\n    level: --level\n  });\n}\n\n// Enclose abbreviations in <abbr> tags\n//\n\nvar PUNCT_CHARS = ' \\n()[]\\'\".,!?-';\n\n\n// from Google closure library\n// http://closure-library.googlecode.com/git-history/docs/local_closure_goog_string_string.js.source.html#line1021\nfunction regEscape(s) {\n  return s.replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g, '\\\\$1');\n}\n\n\nfunction abbr2(state) {\n  var i, j, l, tokens, token, text, nodes, pos, level, reg, m, regText,\n      blockTokens = state.tokens;\n\n  if (!state.env.abbreviations) { return; }\n  if (!state.env.abbrRegExp) {\n    regText = '(^|[' + PUNCT_CHARS.split('').map(regEscape).join('') + '])'\n            + '(' + Object.keys(state.env.abbreviations).map(function (x) {\n                      return x.substr(1);\n                    }).sort(function (a, b) {\n                      return b.length - a.length;\n                    }).map(regEscape).join('|') + ')'\n            + '($|[' + PUNCT_CHARS.split('').map(regEscape).join('') + '])';\n    state.env.abbrRegExp = new RegExp(regText, 'g');\n  }\n  reg = state.env.abbrRegExp;\n\n  for (j = 0, l = blockTokens.length; j < l; j++) {\n    if (blockTokens[j].type !== 'inline') { continue; }\n    tokens = blockTokens[j].children;\n\n    // We scan from the end, to keep position when new tags added.\n    for (i = tokens.length - 1; i >= 0; i--) {\n      token = tokens[i];\n      if (token.type !== 'text') { continue; }\n\n      pos = 0;\n      text = token.content;\n      reg.lastIndex = 0;\n      level = token.level;\n      nodes = [];\n\n      while ((m = reg.exec(text))) {\n        if (reg.lastIndex > pos) {\n          nodes.push({\n            type: 'text',\n            content: text.slice(pos, m.index + m[1].length),\n            level: level\n          });\n        }\n\n        nodes.push({\n          type: 'abbr_open',\n          title: state.env.abbreviations[':' + m[2]],\n          level: level++\n        });\n        nodes.push({\n          type: 'text',\n          content: m[2],\n          level: level\n        });\n        nodes.push({\n          type: 'abbr_close',\n          level: --level\n        });\n        pos = reg.lastIndex - m[3].length;\n      }\n\n      if (!nodes.length) { continue; }\n\n      if (pos < text.length) {\n        nodes.push({\n          type: 'text',\n          content: text.slice(pos),\n          level: level\n        });\n      }\n\n      // replace current node\n      blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1));\n    }\n  }\n}\n\n// Simple typographical replacements\n//\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - miltiplication 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\n\nvar SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/ig;\nvar SCOPED_ABBR = {\n  'c': '©',\n  'r': '®',\n  'p': '§',\n  'tm': '™'\n};\n\nfunction replaceScopedAbbr(str) {\n  if (str.indexOf('(') < 0) { return str; }\n\n  return str.replace(SCOPED_ABBR_RE, function(match, name) {\n    return SCOPED_ABBR[name.toLowerCase()];\n  });\n}\n\n\nfunction replace(state) {\n  var i, token, text, inlineTokens, blkIdx;\n\n  if (!state.options.typographer) { return; }\n\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n    if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n    inlineTokens = state.tokens[blkIdx].children;\n\n    for (i = inlineTokens.length - 1; i >= 0; i--) {\n      token = inlineTokens[i];\n      if (token.type === 'text') {\n        text = token.content;\n\n        text = replaceScopedAbbr(text);\n\n        if (RARE_RE.test(text)) {\n          text = text\n            .replace(/\\+-/g, '±')\n            // .., ..., ....... -> …\n            // but ?..... & !..... -> ?.. & !..\n            .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n            .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n            // em-dash\n            .replace(/(^|[^-])---([^-]|$)/mg, '$1\\u2014$2')\n            // en-dash\n            .replace(/(^|\\s)--(\\s|$)/mg, '$1\\u2013$2')\n            .replace(/(^|[^-\\s])--([^-\\s]|$)/mg, '$1\\u2013$2');\n        }\n\n        token.content = text;\n      }\n    }\n  }\n}\n\n// Convert straight quotation marks to typographic ones\n//\n\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar PUNCT_RE = /[-\\s()\\[\\]]/;\nvar APOSTROPHE = '’';\n\n// This function returns true if the character at `pos`\n// could be inside a word.\nfunction isLetter(str, pos) {\n  if (pos < 0 || pos >= str.length) { return false; }\n  return !PUNCT_RE.test(str[pos]);\n}\n\n\nfunction replaceAt(str, index, ch) {\n  return str.substr(0, index) + ch + str.substr(index + 1);\n}\n\n\nfunction smartquotes(state) {\n  /*eslint max-depth:0*/\n  var i, token, text, t, pos, max, thisLevel, lastSpace, nextSpace, item,\n      canOpen, canClose, j, isSingle, blkIdx, tokens,\n      stack;\n\n  if (!state.options.typographer) { return; }\n\n  stack = [];\n\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n    if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n    tokens = state.tokens[blkIdx].children;\n    stack.length = 0;\n\n    for (i = 0; i < tokens.length; i++) {\n      token = tokens[i];\n\n      if (token.type !== 'text' || QUOTE_TEST_RE.test(token.text)) { continue; }\n\n      thisLevel = tokens[i].level;\n\n      for (j = stack.length - 1; j >= 0; j--) {\n        if (stack[j].level <= thisLevel) { break; }\n      }\n      stack.length = j + 1;\n\n      text = token.content;\n      pos = 0;\n      max = text.length;\n\n      /*eslint no-labels:0,block-scoped-var:0*/\n      OUTER:\n      while (pos < max) {\n        QUOTE_RE.lastIndex = pos;\n        t = QUOTE_RE.exec(text);\n        if (!t) { break; }\n\n        lastSpace = !isLetter(text, t.index - 1);\n        pos = t.index + 1;\n        isSingle = (t[0] === \"'\");\n        nextSpace = !isLetter(text, pos);\n\n        if (!nextSpace && !lastSpace) {\n          // middle of word\n          if (isSingle) {\n            token.content = replaceAt(token.content, t.index, APOSTROPHE);\n          }\n          continue;\n        }\n\n        canOpen = !nextSpace;\n        canClose = !lastSpace;\n\n        if (canClose) {\n          // this could be a closing quote, rewind the stack to get a match\n          for (j = stack.length - 1; j >= 0; j--) {\n            item = stack[j];\n            if (stack[j].level < thisLevel) { break; }\n            if (item.single === isSingle && stack[j].level === thisLevel) {\n              item = stack[j];\n              if (isSingle) {\n                tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[2]);\n                token.content = replaceAt(token.content, t.index, state.options.quotes[3]);\n              } else {\n                tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[0]);\n                token.content = replaceAt(token.content, t.index, state.options.quotes[1]);\n              }\n              stack.length = j;\n              continue OUTER;\n            }\n          }\n        }\n\n        if (canOpen) {\n          stack.push({\n            token: i,\n            pos: t.index,\n            single: isSingle,\n            level: thisLevel\n          });\n        } else if (canClose && isSingle) {\n          token.content = replaceAt(token.content, t.index, APOSTROPHE);\n        }\n      }\n    }\n  }\n}\n\n/**\n * Core parser `rules`\n */\n\nvar _rules = [\n  [ 'block',          block          ],\n  [ 'abbr',           abbr           ],\n  [ 'references',     references     ],\n  [ 'inline',         inline         ],\n  [ 'footnote_tail',  footnote_block  ],\n  [ 'abbr2',          abbr2          ],\n  [ 'replacements',   replace   ],\n  [ 'smartquotes',    smartquotes    ],\n];\n\n/**\n * Class for top level (`core`) parser rules\n *\n * @api private\n */\n\nfunction Core() {\n  this.options = {};\n  this.ruler = new Ruler();\n  for (var i = 0; i < _rules.length; i++) {\n    this.ruler.push(_rules[i][0], _rules[i][1]);\n  }\n}\n\n/**\n * Process rules with the given `state`\n *\n * @param  {Object} `state`\n * @api private\n */\n\nCore.prototype.process = function (state) {\n  var i, l, rules;\n  rules = this.ruler.getRules('');\n  for (i = 0, l = rules.length; i < l; i++) {\n    rules[i](state);\n  }\n};\n\n// Parser state class\n\nfunction StateBlock(src, parser, options, env, tokens) {\n  var ch, s, start, pos, len, indent, indent_found;\n\n  this.src = src;\n\n  // Shortcuts to simplify nested calls\n  this.parser = parser;\n\n  this.options = options;\n\n  this.env = env;\n\n  //\n  // Internal state vartiables\n  //\n\n  this.tokens = tokens;\n\n  this.bMarks = [];  // line begin offsets for fast jumps\n  this.eMarks = [];  // line end offsets for fast jumps\n  this.tShift = [];  // indent for each line\n\n  // block parser variables\n  this.blkIndent  = 0; // required block content indent\n                       // (for example, if we are in list)\n  this.line       = 0; // line index in src\n  this.lineMax    = 0; // lines count\n  this.tight      = false;  // loose/tight mode for lists\n  this.parentType = 'root'; // if `list`, block parser stops on two newlines\n  this.ddIndent   = -1; // indent of the current dd block (-1 if there isn't any)\n\n  this.level = 0;\n\n  // renderer\n  this.result = '';\n\n  // Create caches\n  // Generate markers.\n  s = this.src;\n  indent = 0;\n  indent_found = false;\n\n  for (start = pos = indent = 0, len = s.length; pos < len; pos++) {\n    ch = s.charCodeAt(pos);\n\n    if (!indent_found) {\n      if (ch === 0x20/* space */) {\n        indent++;\n        continue;\n      } else {\n        indent_found = true;\n      }\n    }\n\n    if (ch === 0x0A || pos === len - 1) {\n      if (ch !== 0x0A) { pos++; }\n      this.bMarks.push(start);\n      this.eMarks.push(pos);\n      this.tShift.push(indent);\n\n      indent_found = false;\n      indent = 0;\n      start = pos + 1;\n    }\n  }\n\n  // Push fake entry to simplify cache bounds checks\n  this.bMarks.push(s.length);\n  this.eMarks.push(s.length);\n  this.tShift.push(0);\n\n  this.lineMax = this.bMarks.length - 1; // don't count last fake line\n}\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n  return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n  for (var max = this.lineMax; from < max; from++) {\n    if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n      break;\n    }\n  }\n  return from;\n};\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n  for (var max = this.src.length; pos < max; pos++) {\n    if (this.src.charCodeAt(pos) !== 0x20/* space */) { break; }\n  }\n  return pos;\n};\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n  for (var max = this.src.length; pos < max; pos++) {\n    if (this.src.charCodeAt(pos) !== code) { break; }\n  }\n  return pos;\n};\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n  if (pos <= min) { return pos; }\n\n  while (pos > min) {\n    if (code !== this.src.charCodeAt(--pos)) { return pos + 1; }\n  }\n  return pos;\n};\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n  var i, first, last, queue, shift,\n      line = begin;\n\n  if (begin >= end) {\n    return '';\n  }\n\n  // Opt: don't use push queue for single line;\n  if (line + 1 === end) {\n    first = this.bMarks[line] + Math.min(this.tShift[line], indent);\n    last = keepLastLF ? this.eMarks[line] + 1 : this.eMarks[line];\n    return this.src.slice(first, last);\n  }\n\n  queue = new Array(end - begin);\n\n  for (i = 0; line < end; line++, i++) {\n    shift = this.tShift[line];\n    if (shift > indent) { shift = indent; }\n    if (shift < 0) { shift = 0; }\n\n    first = this.bMarks[line] + shift;\n\n    if (line + 1 < end || keepLastLF) {\n      // No need for bounds check because we have fake entry on tail.\n      last = this.eMarks[line] + 1;\n    } else {\n      last = this.eMarks[line];\n    }\n\n    queue[i] = this.src.slice(first, last);\n  }\n\n  return queue.join('');\n};\n\n// Code block (4 spaces padded)\n\nfunction code(state, startLine, endLine/*, silent*/) {\n  var nextLine, last;\n\n  if (state.tShift[startLine] - state.blkIndent < 4) { return false; }\n\n  last = nextLine = startLine + 1;\n\n  while (nextLine < endLine) {\n    if (state.isEmpty(nextLine)) {\n      nextLine++;\n      continue;\n    }\n    if (state.tShift[nextLine] - state.blkIndent >= 4) {\n      nextLine++;\n      last = nextLine;\n      continue;\n    }\n    break;\n  }\n\n  state.line = nextLine;\n  state.tokens.push({\n    type: 'code',\n    content: state.getLines(startLine, last, 4 + state.blkIndent, true),\n    block: true,\n    lines: [ startLine, state.line ],\n    level: state.level\n  });\n\n  return true;\n}\n\n// fences (``` lang, ~~~ lang)\n\nfunction fences(state, startLine, endLine, silent) {\n  var marker, len, params, nextLine, mem,\n      haveEndMarker = false,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  if (pos + 3 > max) { return false; }\n\n  marker = state.src.charCodeAt(pos);\n\n  if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n    return false;\n  }\n\n  // scan marker length\n  mem = pos;\n  pos = state.skipChars(pos, marker);\n\n  len = pos - mem;\n\n  if (len < 3) { return false; }\n\n  params = state.src.slice(pos, max).trim();\n\n  if (params.indexOf('`') >= 0) { return false; }\n\n  // Since start is found, we can report success here in validation mode\n  if (silent) { return true; }\n\n  // search end of block\n  nextLine = startLine;\n\n  for (;;) {\n    nextLine++;\n    if (nextLine >= endLine) {\n      // unclosed block should be autoclosed by end of document.\n      // also block seems to be autoclosed by end of parent\n      break;\n    }\n\n    pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n    max = state.eMarks[nextLine];\n\n    if (pos < max && state.tShift[nextLine] < state.blkIndent) {\n      // non-empty line with negative indent should stop the list:\n      // - ```\n      //  test\n      break;\n    }\n\n    if (state.src.charCodeAt(pos) !== marker) { continue; }\n\n    if (state.tShift[nextLine] - state.blkIndent >= 4) {\n      // closing fence should be indented less than 4 spaces\n      continue;\n    }\n\n    pos = state.skipChars(pos, marker);\n\n    // closing code fence must be at least as long as the opening one\n    if (pos - mem < len) { continue; }\n\n    // make sure tail has spaces only\n    pos = state.skipSpaces(pos);\n\n    if (pos < max) { continue; }\n\n    haveEndMarker = true;\n    // found!\n    break;\n  }\n\n  // If a fence has heading spaces, they should be removed from its inner block\n  len = state.tShift[startLine];\n\n  state.line = nextLine + (haveEndMarker ? 1 : 0);\n  state.tokens.push({\n    type: 'fence',\n    params: params,\n    content: state.getLines(startLine + 1, nextLine, len, true),\n    lines: [ startLine, state.line ],\n    level: state.level\n  });\n\n  return true;\n}\n\n// Block quotes\n\nfunction blockquote(state, startLine, endLine, silent) {\n  var nextLine, lastLineEmpty, oldTShift, oldBMarks, oldIndent, oldParentType, lines,\n      terminatorRules,\n      i, l, terminate,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  if (pos > max) { return false; }\n\n  // check the block quote marker\n  if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; }\n\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  // we know that it's going to be a valid blockquote,\n  // so no point trying to find the end of it in silent mode\n  if (silent) { return true; }\n\n  // skip one optional space after '>'\n  if (state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n  oldIndent = state.blkIndent;\n  state.blkIndent = 0;\n\n  oldBMarks = [ state.bMarks[startLine] ];\n  state.bMarks[startLine] = pos;\n\n  // check if we have an empty blockquote\n  pos = pos < max ? state.skipSpaces(pos) : pos;\n  lastLineEmpty = pos >= max;\n\n  oldTShift = [ state.tShift[startLine] ];\n  state.tShift[startLine] = pos - state.bMarks[startLine];\n\n  terminatorRules = state.parser.ruler.getRules('blockquote');\n\n  // Search the end of the block\n  //\n  // Block ends with either:\n  //  1. an empty line outside:\n  //     ```\n  //     > test\n  //\n  //     ```\n  //  2. an empty line inside:\n  //     ```\n  //     >\n  //     test\n  //     ```\n  //  3. another tag\n  //     ```\n  //     > test\n  //      - - -\n  //     ```\n  for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n    pos = state.bMarks[nextLine] + state.tShift[nextLine];\n    max = state.eMarks[nextLine];\n\n    if (pos >= max) {\n      // Case 1: line is not inside the blockquote, and this line is empty.\n      break;\n    }\n\n    if (state.src.charCodeAt(pos++) === 0x3E/* > */) {\n      // This line is inside the blockquote.\n\n      // skip one optional space after '>'\n      if (state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n      oldBMarks.push(state.bMarks[nextLine]);\n      state.bMarks[nextLine] = pos;\n\n      pos = pos < max ? state.skipSpaces(pos) : pos;\n      lastLineEmpty = pos >= max;\n\n      oldTShift.push(state.tShift[nextLine]);\n      state.tShift[nextLine] = pos - state.bMarks[nextLine];\n      continue;\n    }\n\n    // Case 2: line is not inside the blockquote, and the last line was empty.\n    if (lastLineEmpty) { break; }\n\n    // Case 3: another tag found.\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) { break; }\n\n    oldBMarks.push(state.bMarks[nextLine]);\n    oldTShift.push(state.tShift[nextLine]);\n\n    // A negative number means that this is a paragraph continuation;\n    //\n    // Any negative number will do the job here, but it's better for it\n    // to be large enough to make any bugs obvious.\n    state.tShift[nextLine] = -1337;\n  }\n\n  oldParentType = state.parentType;\n  state.parentType = 'blockquote';\n  state.tokens.push({\n    type: 'blockquote_open',\n    lines: lines = [ startLine, 0 ],\n    level: state.level++\n  });\n  state.parser.tokenize(state, startLine, nextLine);\n  state.tokens.push({\n    type: 'blockquote_close',\n    level: --state.level\n  });\n  state.parentType = oldParentType;\n  lines[1] = state.line;\n\n  // Restore original tShift; this might not be necessary since the parser\n  // has already been here, but just to make sure we can do that.\n  for (i = 0; i < oldTShift.length; i++) {\n    state.bMarks[i + startLine] = oldBMarks[i];\n    state.tShift[i + startLine] = oldTShift[i];\n  }\n  state.blkIndent = oldIndent;\n\n  return true;\n}\n\n// Horizontal rule\n\nfunction hr(state, startLine, endLine, silent) {\n  var marker, cnt, ch,\n      pos = state.bMarks[startLine],\n      max = state.eMarks[startLine];\n\n  pos += state.tShift[startLine];\n\n  if (pos > max) { return false; }\n\n  marker = state.src.charCodeAt(pos++);\n\n  // Check hr marker\n  if (marker !== 0x2A/* * */ &&\n      marker !== 0x2D/* - */ &&\n      marker !== 0x5F/* _ */) {\n    return false;\n  }\n\n  // markers can be mixed with spaces, but there should be at least 3 one\n\n  cnt = 1;\n  while (pos < max) {\n    ch = state.src.charCodeAt(pos++);\n    if (ch !== marker && ch !== 0x20/* space */) { return false; }\n    if (ch === marker) { cnt++; }\n  }\n\n  if (cnt < 3) { return false; }\n\n  if (silent) { return true; }\n\n  state.line = startLine + 1;\n  state.tokens.push({\n    type: 'hr',\n    lines: [ startLine, state.line ],\n    level: state.level\n  });\n\n  return true;\n}\n\n// Lists\n\n// Search `[-+*][\\n ]`, returns next pos arter marker on success\n// or -1 on fail.\nfunction skipBulletListMarker(state, startLine) {\n  var marker, pos, max;\n\n  pos = state.bMarks[startLine] + state.tShift[startLine];\n  max = state.eMarks[startLine];\n\n  if (pos >= max) { return -1; }\n\n  marker = state.src.charCodeAt(pos++);\n  // Check bullet\n  if (marker !== 0x2A/* * */ &&\n      marker !== 0x2D/* - */ &&\n      marker !== 0x2B/* + */) {\n    return -1;\n  }\n\n  if (pos < max && state.src.charCodeAt(pos) !== 0x20) {\n    // \" 1.test \" - is not a list item\n    return -1;\n  }\n\n  return pos;\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos arter marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker(state, startLine) {\n  var ch,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  if (pos + 1 >= max) { return -1; }\n\n  ch = state.src.charCodeAt(pos++);\n\n  if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; }\n\n  for (;;) {\n    // EOL -> fail\n    if (pos >= max) { return -1; }\n\n    ch = state.src.charCodeAt(pos++);\n\n    if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n      continue;\n    }\n\n    // found valid marker\n    if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n      break;\n    }\n\n    return -1;\n  }\n\n\n  if (pos < max && state.src.charCodeAt(pos) !== 0x20/* space */) {\n    // \" 1.test \" - is not a list item\n    return -1;\n  }\n  return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n  var i, l,\n      level = state.level + 2;\n\n  for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n    if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n      state.tokens[i + 2].tight = true;\n      state.tokens[i].tight = true;\n      i += 2;\n    }\n  }\n}\n\n\nfunction list(state, startLine, endLine, silent) {\n  var nextLine,\n      indent,\n      oldTShift,\n      oldIndent,\n      oldTight,\n      oldParentType,\n      start,\n      posAfterMarker,\n      max,\n      indentAfterMarker,\n      markerValue,\n      markerCharCode,\n      isOrdered,\n      contentStart,\n      listTokIdx,\n      prevEmptyEnd,\n      listLines,\n      itemLines,\n      tight = true,\n      terminatorRules,\n      i, l, terminate;\n\n  // Detect list type and position after marker\n  if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n    isOrdered = true;\n  } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n    isOrdered = false;\n  } else {\n    return false;\n  }\n\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  // We should terminate list on style change. Remember first one to compare.\n  markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\n  // For validation mode we can terminate immediately\n  if (silent) { return true; }\n\n  // Start list\n  listTokIdx = state.tokens.length;\n\n  if (isOrdered) {\n    start = state.bMarks[startLine] + state.tShift[startLine];\n    markerValue = Number(state.src.substr(start, posAfterMarker - start - 1));\n\n    state.tokens.push({\n      type: 'ordered_list_open',\n      order: markerValue,\n      lines: listLines = [ startLine, 0 ],\n      level: state.level++\n    });\n\n  } else {\n    state.tokens.push({\n      type: 'bullet_list_open',\n      lines: listLines = [ startLine, 0 ],\n      level: state.level++\n    });\n  }\n\n  //\n  // Iterate list items\n  //\n\n  nextLine = startLine;\n  prevEmptyEnd = false;\n  terminatorRules = state.parser.ruler.getRules('list');\n\n  while (nextLine < endLine) {\n    contentStart = state.skipSpaces(posAfterMarker);\n    max = state.eMarks[nextLine];\n\n    if (contentStart >= max) {\n      // trimming space in \"-    \\n  3\" case, indent is 1 here\n      indentAfterMarker = 1;\n    } else {\n      indentAfterMarker = contentStart - posAfterMarker;\n    }\n\n    // If we have more than 4 spaces, the indent is 1\n    // (the rest is just indented code block)\n    if (indentAfterMarker > 4) { indentAfterMarker = 1; }\n\n    // If indent is less than 1, assume that it's one, example:\n    //  \"-\\n  test\"\n    if (indentAfterMarker < 1) { indentAfterMarker = 1; }\n\n    // \"  -  test\"\n    //  ^^^^^ - calculating total length of this thing\n    indent = (posAfterMarker - state.bMarks[nextLine]) + indentAfterMarker;\n\n    // Run subparser & write tokens\n    state.tokens.push({\n      type: 'list_item_open',\n      lines: itemLines = [ startLine, 0 ],\n      level: state.level++\n    });\n\n    oldIndent = state.blkIndent;\n    oldTight = state.tight;\n    oldTShift = state.tShift[startLine];\n    oldParentType = state.parentType;\n    state.tShift[startLine] = contentStart - state.bMarks[startLine];\n    state.blkIndent = indent;\n    state.tight = true;\n    state.parentType = 'list';\n\n    state.parser.tokenize(state, startLine, endLine, true);\n\n    // If any of list item is tight, mark list as tight\n    if (!state.tight || prevEmptyEnd) {\n      tight = false;\n    }\n    // Item become loose if finish with empty line,\n    // but we should filter last element, because it means list finish\n    prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1);\n\n    state.blkIndent = oldIndent;\n    state.tShift[startLine] = oldTShift;\n    state.tight = oldTight;\n    state.parentType = oldParentType;\n\n    state.tokens.push({\n      type: 'list_item_close',\n      level: --state.level\n    });\n\n    nextLine = startLine = state.line;\n    itemLines[1] = nextLine;\n    contentStart = state.bMarks[startLine];\n\n    if (nextLine >= endLine) { break; }\n\n    if (state.isEmpty(nextLine)) {\n      break;\n    }\n\n    //\n    // Try to check if list is terminated or continued.\n    //\n    if (state.tShift[nextLine] < state.blkIndent) { break; }\n\n    // fail if terminating block found\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) { break; }\n\n    // fail if list has another type\n    if (isOrdered) {\n      posAfterMarker = skipOrderedListMarker(state, nextLine);\n      if (posAfterMarker < 0) { break; }\n    } else {\n      posAfterMarker = skipBulletListMarker(state, nextLine);\n      if (posAfterMarker < 0) { break; }\n    }\n\n    if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; }\n  }\n\n  // Finilize list\n  state.tokens.push({\n    type: isOrdered ? 'ordered_list_close' : 'bullet_list_close',\n    level: --state.level\n  });\n  listLines[1] = nextLine;\n\n  state.line = nextLine;\n\n  // mark paragraphs tight if needed\n  if (tight) {\n    markTightParagraphs(state, listTokIdx);\n  }\n\n  return true;\n}\n\n// Process footnote reference list\n\nfunction footnote(state, startLine, endLine, silent) {\n  var oldBMark, oldTShift, oldParentType, pos, label,\n      start = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  // line should be at least 5 chars - \"[^x]:\"\n  if (start + 4 > max) { return false; }\n\n  if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; }\n  if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  for (pos = start + 2; pos < max; pos++) {\n    if (state.src.charCodeAt(pos) === 0x20) { return false; }\n    if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n      break;\n    }\n  }\n\n  if (pos === start + 2) { return false; } // no empty footnote labels\n  if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) { return false; }\n  if (silent) { return true; }\n  pos++;\n\n  if (!state.env.footnotes) { state.env.footnotes = {}; }\n  if (!state.env.footnotes.refs) { state.env.footnotes.refs = {}; }\n  label = state.src.slice(start + 2, pos - 2);\n  state.env.footnotes.refs[':' + label] = -1;\n\n  state.tokens.push({\n    type: 'footnote_reference_open',\n    label: label,\n    level: state.level++\n  });\n\n  oldBMark = state.bMarks[startLine];\n  oldTShift = state.tShift[startLine];\n  oldParentType = state.parentType;\n  state.tShift[startLine] = state.skipSpaces(pos) - pos;\n  state.bMarks[startLine] = pos;\n  state.blkIndent += 4;\n  state.parentType = 'footnote';\n\n  if (state.tShift[startLine] < state.blkIndent) {\n    state.tShift[startLine] += state.blkIndent;\n    state.bMarks[startLine] -= state.blkIndent;\n  }\n\n  state.parser.tokenize(state, startLine, endLine, true);\n\n  state.parentType = oldParentType;\n  state.blkIndent -= 4;\n  state.tShift[startLine] = oldTShift;\n  state.bMarks[startLine] = oldBMark;\n\n  state.tokens.push({\n    type: 'footnote_reference_close',\n    level: --state.level\n  });\n\n  return true;\n}\n\n// heading (#, ##, ...)\n\nfunction heading(state, startLine, endLine, silent) {\n  var ch, level, tmp,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  if (pos >= max) { return false; }\n\n  ch  = state.src.charCodeAt(pos);\n\n  if (ch !== 0x23/* # */ || pos >= max) { return false; }\n\n  // count heading level\n  level = 1;\n  ch = state.src.charCodeAt(++pos);\n  while (ch === 0x23/* # */ && pos < max && level <= 6) {\n    level++;\n    ch = state.src.charCodeAt(++pos);\n  }\n\n  if (level > 6 || (pos < max && ch !== 0x20/* space */)) { return false; }\n\n  if (silent) { return true; }\n\n  // Let's cut tails like '    ###  ' from the end of string\n\n  max = state.skipCharsBack(max, 0x20, pos); // space\n  tmp = state.skipCharsBack(max, 0x23, pos); // #\n  if (tmp > pos && state.src.charCodeAt(tmp - 1) === 0x20/* space */) {\n    max = tmp;\n  }\n\n  state.line = startLine + 1;\n\n  state.tokens.push({ type: 'heading_open',\n    hLevel: level,\n    lines: [ startLine, state.line ],\n    level: state.level\n  });\n\n  // only if header is not empty\n  if (pos < max) {\n    state.tokens.push({\n      type: 'inline',\n      content: state.src.slice(pos, max).trim(),\n      level: state.level + 1,\n      lines: [ startLine, state.line ],\n      children: []\n    });\n  }\n  state.tokens.push({ type: 'heading_close', hLevel: level, level: state.level });\n\n  return true;\n}\n\n// lheading (---, ===)\n\nfunction lheading(state, startLine, endLine/*, silent*/) {\n  var marker, pos, max,\n      next = startLine + 1;\n\n  if (next >= endLine) { return false; }\n  if (state.tShift[next] < state.blkIndent) { return false; }\n\n  // Scan next line\n\n  if (state.tShift[next] - state.blkIndent > 3) { return false; }\n\n  pos = state.bMarks[next] + state.tShift[next];\n  max = state.eMarks[next];\n\n  if (pos >= max) { return false; }\n\n  marker = state.src.charCodeAt(pos);\n\n  if (marker !== 0x2D/* - */ && marker !== 0x3D/* = */) { return false; }\n\n  pos = state.skipChars(pos, marker);\n\n  pos = state.skipSpaces(pos);\n\n  if (pos < max) { return false; }\n\n  pos = state.bMarks[startLine] + state.tShift[startLine];\n\n  state.line = next + 1;\n  state.tokens.push({\n    type: 'heading_open',\n    hLevel: marker === 0x3D/* = */ ? 1 : 2,\n    lines: [ startLine, state.line ],\n    level: state.level\n  });\n  state.tokens.push({\n    type: 'inline',\n    content: state.src.slice(pos, state.eMarks[startLine]).trim(),\n    level: state.level + 1,\n    lines: [ startLine, state.line - 1 ],\n    children: []\n  });\n  state.tokens.push({\n    type: 'heading_close',\n    hLevel: marker === 0x3D/* = */ ? 1 : 2,\n    level: state.level\n  });\n\n  return true;\n}\n\n// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n\nvar html_blocks = {};\n\n[\n  'article',\n  'aside',\n  'button',\n  'blockquote',\n  'body',\n  'canvas',\n  'caption',\n  'col',\n  'colgroup',\n  'dd',\n  'div',\n  'dl',\n  'dt',\n  'embed',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'header',\n  'hgroup',\n  'hr',\n  'iframe',\n  'li',\n  'map',\n  'object',\n  'ol',\n  'output',\n  'p',\n  'pre',\n  'progress',\n  'script',\n  'section',\n  'style',\n  'table',\n  'tbody',\n  'td',\n  'textarea',\n  'tfoot',\n  'th',\n  'tr',\n  'thead',\n  'ul',\n  'video'\n].forEach(function (name) { html_blocks[name] = true; });\n\n// HTML block\n\n\nvar HTML_TAG_OPEN_RE = /^<([a-zA-Z]{1,15})[\\s\\/>]/;\nvar HTML_TAG_CLOSE_RE = /^<\\/([a-zA-Z]{1,15})[\\s>]/;\n\nfunction isLetter$1(ch) {\n  /*eslint no-bitwise:0*/\n  var lc = ch | 0x20; // to lower case\n  return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\nfunction htmlblock(state, startLine, endLine, silent) {\n  var ch, match, nextLine,\n      pos = state.bMarks[startLine],\n      max = state.eMarks[startLine],\n      shift = state.tShift[startLine];\n\n  pos += shift;\n\n  if (!state.options.html) { return false; }\n\n  if (shift > 3 || pos + 2 >= max) { return false; }\n\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n  ch = state.src.charCodeAt(pos + 1);\n\n  if (ch === 0x21/* ! */ || ch === 0x3F/* ? */) {\n    // Directive start / comment start / processing instruction start\n    if (silent) { return true; }\n\n  } else if (ch === 0x2F/* / */ || isLetter$1(ch)) {\n\n    // Probably start or end of tag\n    if (ch === 0x2F/* \\ */) {\n      // closing tag\n      match = state.src.slice(pos, max).match(HTML_TAG_CLOSE_RE);\n      if (!match) { return false; }\n    } else {\n      // opening tag\n      match = state.src.slice(pos, max).match(HTML_TAG_OPEN_RE);\n      if (!match) { return false; }\n    }\n    // Make sure tag name is valid\n    if (html_blocks[match[1].toLowerCase()] !== true) { return false; }\n    if (silent) { return true; }\n\n  } else {\n    return false;\n  }\n\n  // If we are here - we detected HTML block.\n  // Let's roll down till empty line (block end).\n  nextLine = startLine + 1;\n  while (nextLine < state.lineMax && !state.isEmpty(nextLine)) {\n    nextLine++;\n  }\n\n  state.line = nextLine;\n  state.tokens.push({\n    type: 'htmlblock',\n    level: state.level,\n    lines: [ startLine, state.line ],\n    content: state.getLines(startLine, nextLine, 0, true)\n  });\n\n  return true;\n}\n\n// GFM table, non-standard\n\nfunction getLine(state, line) {\n  var pos = state.bMarks[line] + state.blkIndent,\n      max = state.eMarks[line];\n\n  return state.src.substr(pos, max - pos);\n}\n\nfunction table(state, startLine, endLine, silent) {\n  var ch, lineText, pos, i, nextLine, rows, cell,\n      aligns, t, tableLines, tbodyLines;\n\n  // should have at least three lines\n  if (startLine + 2 > endLine) { return false; }\n\n  nextLine = startLine + 1;\n\n  if (state.tShift[nextLine] < state.blkIndent) { return false; }\n\n  // first character of the second line should be '|' or '-'\n\n  pos = state.bMarks[nextLine] + state.tShift[nextLine];\n  if (pos >= state.eMarks[nextLine]) { return false; }\n\n  ch = state.src.charCodeAt(pos);\n  if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; }\n\n  lineText = getLine(state, startLine + 1);\n  if (!/^[-:| ]+$/.test(lineText)) { return false; }\n\n  rows = lineText.split('|');\n  if (rows <= 2) { return false; }\n  aligns = [];\n  for (i = 0; i < rows.length; i++) {\n    t = rows[i].trim();\n    if (!t) {\n      // allow empty columns before and after table, but not in between columns;\n      // e.g. allow ` |---| `, disallow ` ---||--- `\n      if (i === 0 || i === rows.length - 1) {\n        continue;\n      } else {\n        return false;\n      }\n    }\n\n    if (!/^:?-+:?$/.test(t)) { return false; }\n    if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n      aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right');\n    } else if (t.charCodeAt(0) === 0x3A/* : */) {\n      aligns.push('left');\n    } else {\n      aligns.push('');\n    }\n  }\n\n  lineText = getLine(state, startLine).trim();\n  if (lineText.indexOf('|') === -1) { return false; }\n  rows = lineText.replace(/^\\||\\|$/g, '').split('|');\n  if (aligns.length !== rows.length) { return false; }\n  if (silent) { return true; }\n\n  state.tokens.push({\n    type: 'table_open',\n    lines: tableLines = [ startLine, 0 ],\n    level: state.level++\n  });\n  state.tokens.push({\n    type: 'thead_open',\n    lines: [ startLine, startLine + 1 ],\n    level: state.level++\n  });\n\n  state.tokens.push({\n    type: 'tr_open',\n    lines: [ startLine, startLine + 1 ],\n    level: state.level++\n  });\n  for (i = 0; i < rows.length; i++) {\n    state.tokens.push({\n      type: 'th_open',\n      align: aligns[i],\n      lines: [ startLine, startLine + 1 ],\n      level: state.level++\n    });\n    state.tokens.push({\n      type: 'inline',\n      content: rows[i].trim(),\n      lines: [ startLine, startLine + 1 ],\n      level: state.level,\n      children: []\n    });\n    state.tokens.push({ type: 'th_close', level: --state.level });\n  }\n  state.tokens.push({ type: 'tr_close', level: --state.level });\n  state.tokens.push({ type: 'thead_close', level: --state.level });\n\n  state.tokens.push({\n    type: 'tbody_open',\n    lines: tbodyLines = [ startLine + 2, 0 ],\n    level: state.level++\n  });\n\n  for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n    if (state.tShift[nextLine] < state.blkIndent) { break; }\n\n    lineText = getLine(state, nextLine).trim();\n    if (lineText.indexOf('|') === -1) { break; }\n    rows = lineText.replace(/^\\||\\|$/g, '').split('|');\n\n    state.tokens.push({ type: 'tr_open', level: state.level++ });\n    for (i = 0; i < rows.length; i++) {\n      state.tokens.push({ type: 'td_open', align: aligns[i], level: state.level++ });\n      // 0x7c === '|'\n      cell = rows[i].substring(\n          rows[i].charCodeAt(0) === 0x7c ? 1 : 0,\n          rows[i].charCodeAt(rows[i].length - 1) === 0x7c ? rows[i].length - 1 : rows[i].length\n      ).trim();\n      state.tokens.push({\n        type: 'inline',\n        content: cell,\n        level: state.level,\n        children: []\n      });\n      state.tokens.push({ type: 'td_close', level: --state.level });\n    }\n    state.tokens.push({ type: 'tr_close', level: --state.level });\n  }\n  state.tokens.push({ type: 'tbody_close', level: --state.level });\n  state.tokens.push({ type: 'table_close', level: --state.level });\n\n  tableLines[1] = tbodyLines[1] = nextLine;\n  state.line = nextLine;\n  return true;\n}\n\n// Definition lists\n\n// Search `[:~][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipMarker(state, line) {\n  var pos, marker,\n      start = state.bMarks[line] + state.tShift[line],\n      max = state.eMarks[line];\n\n  if (start >= max) { return -1; }\n\n  // Check bullet\n  marker = state.src.charCodeAt(start++);\n  if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; }\n\n  pos = state.skipSpaces(start);\n\n  // require space after \":\"\n  if (start === pos) { return -1; }\n\n  // no empty definitions, e.g. \"  : \"\n  if (pos >= max) { return -1; }\n\n  return pos;\n}\n\nfunction markTightParagraphs$1(state, idx) {\n  var i, l,\n      level = state.level + 2;\n\n  for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n    if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n      state.tokens[i + 2].tight = true;\n      state.tokens[i].tight = true;\n      i += 2;\n    }\n  }\n}\n\nfunction deflist(state, startLine, endLine, silent) {\n  var contentStart,\n      ddLine,\n      dtLine,\n      itemLines,\n      listLines,\n      listTokIdx,\n      nextLine,\n      oldIndent,\n      oldDDIndent,\n      oldParentType,\n      oldTShift,\n      oldTight,\n      prevEmptyEnd,\n      tight;\n\n  if (silent) {\n    // quirk: validation mode validates a dd block only, not a whole deflist\n    if (state.ddIndent < 0) { return false; }\n    return skipMarker(state, startLine) >= 0;\n  }\n\n  nextLine = startLine + 1;\n  if (state.isEmpty(nextLine)) {\n    if (++nextLine > endLine) { return false; }\n  }\n\n  if (state.tShift[nextLine] < state.blkIndent) { return false; }\n  contentStart = skipMarker(state, nextLine);\n  if (contentStart < 0) { return false; }\n\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  // Start list\n  listTokIdx = state.tokens.length;\n\n  state.tokens.push({\n    type: 'dl_open',\n    lines: listLines = [ startLine, 0 ],\n    level: state.level++\n  });\n\n  //\n  // Iterate list items\n  //\n\n  dtLine = startLine;\n  ddLine = nextLine;\n\n  // One definition list can contain multiple DTs,\n  // and one DT can be followed by multiple DDs.\n  //\n  // Thus, there is two loops here, and label is\n  // needed to break out of the second one\n  //\n  /*eslint no-labels:0,block-scoped-var:0*/\n  OUTER:\n  for (;;) {\n    tight = true;\n    prevEmptyEnd = false;\n\n    state.tokens.push({\n      type: 'dt_open',\n      lines: [ dtLine, dtLine ],\n      level: state.level++\n    });\n    state.tokens.push({\n      type: 'inline',\n      content: state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim(),\n      level: state.level + 1,\n      lines: [ dtLine, dtLine ],\n      children: []\n    });\n    state.tokens.push({\n      type: 'dt_close',\n      level: --state.level\n    });\n\n    for (;;) {\n      state.tokens.push({\n        type: 'dd_open',\n        lines: itemLines = [ nextLine, 0 ],\n        level: state.level++\n      });\n\n      oldTight = state.tight;\n      oldDDIndent = state.ddIndent;\n      oldIndent = state.blkIndent;\n      oldTShift = state.tShift[ddLine];\n      oldParentType = state.parentType;\n      state.blkIndent = state.ddIndent = state.tShift[ddLine] + 2;\n      state.tShift[ddLine] = contentStart - state.bMarks[ddLine];\n      state.tight = true;\n      state.parentType = 'deflist';\n\n      state.parser.tokenize(state, ddLine, endLine, true);\n\n      // If any of list item is tight, mark list as tight\n      if (!state.tight || prevEmptyEnd) {\n        tight = false;\n      }\n      // Item become loose if finish with empty line,\n      // but we should filter last element, because it means list finish\n      prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1);\n\n      state.tShift[ddLine] = oldTShift;\n      state.tight = oldTight;\n      state.parentType = oldParentType;\n      state.blkIndent = oldIndent;\n      state.ddIndent = oldDDIndent;\n\n      state.tokens.push({\n        type: 'dd_close',\n        level: --state.level\n      });\n\n      itemLines[1] = nextLine = state.line;\n\n      if (nextLine >= endLine) { break OUTER; }\n\n      if (state.tShift[nextLine] < state.blkIndent) { break OUTER; }\n      contentStart = skipMarker(state, nextLine);\n      if (contentStart < 0) { break; }\n\n      ddLine = nextLine;\n\n      // go to the next loop iteration:\n      // insert DD tag and repeat checking\n    }\n\n    if (nextLine >= endLine) { break; }\n    dtLine = nextLine;\n\n    if (state.isEmpty(dtLine)) { break; }\n    if (state.tShift[dtLine] < state.blkIndent) { break; }\n\n    ddLine = dtLine + 1;\n    if (ddLine >= endLine) { break; }\n    if (state.isEmpty(ddLine)) { ddLine++; }\n    if (ddLine >= endLine) { break; }\n\n    if (state.tShift[ddLine] < state.blkIndent) { break; }\n    contentStart = skipMarker(state, ddLine);\n    if (contentStart < 0) { break; }\n\n    // go to the next loop iteration:\n    // insert DT and DD tags and repeat checking\n  }\n\n  // Finilize list\n  state.tokens.push({\n    type: 'dl_close',\n    level: --state.level\n  });\n  listLines[1] = nextLine;\n\n  state.line = nextLine;\n\n  // mark paragraphs tight if needed\n  if (tight) {\n    markTightParagraphs$1(state, listTokIdx);\n  }\n\n  return true;\n}\n\n// Paragraph\n\nfunction paragraph(state, startLine/*, endLine*/) {\n  var endLine, content, terminate, i, l,\n      nextLine = startLine + 1,\n      terminatorRules;\n\n  endLine = state.lineMax;\n\n  // jump line-by-line until empty one or EOF\n  if (nextLine < endLine && !state.isEmpty(nextLine)) {\n    terminatorRules = state.parser.ruler.getRules('paragraph');\n\n    for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n      // this would be a code block normally, but after paragraph\n      // it's considered a lazy continuation regardless of what's there\n      if (state.tShift[nextLine] - state.blkIndent > 3) { continue; }\n\n      // Some tags can terminate paragraph without empty line.\n      terminate = false;\n      for (i = 0, l = terminatorRules.length; i < l; i++) {\n        if (terminatorRules[i](state, nextLine, endLine, true)) {\n          terminate = true;\n          break;\n        }\n      }\n      if (terminate) { break; }\n    }\n  }\n\n  content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n  state.line = nextLine;\n  if (content.length) {\n    state.tokens.push({\n      type: 'paragraph_open',\n      tight: false,\n      lines: [ startLine, state.line ],\n      level: state.level\n    });\n    state.tokens.push({\n      type: 'inline',\n      content: content,\n      level: state.level + 1,\n      lines: [ startLine, state.line ],\n      children: []\n    });\n    state.tokens.push({\n      type: 'paragraph_close',\n      tight: false,\n      level: state.level\n    });\n  }\n\n  return true;\n}\n\n/**\n * Parser rules\n */\n\nvar _rules$1 = [\n  [ 'code',       code ],\n  [ 'fences',     fences,     [ 'paragraph', 'blockquote', 'list' ] ],\n  [ 'blockquote', blockquote, [ 'paragraph', 'blockquote', 'list' ] ],\n  [ 'hr',         hr,         [ 'paragraph', 'blockquote', 'list' ] ],\n  [ 'list',       list,       [ 'paragraph', 'blockquote' ] ],\n  [ 'footnote',   footnote,   [ 'paragraph' ] ],\n  [ 'heading',    heading,    [ 'paragraph', 'blockquote' ] ],\n  [ 'lheading',   lheading ],\n  [ 'htmlblock',  htmlblock,  [ 'paragraph', 'blockquote' ] ],\n  [ 'table',      table,      [ 'paragraph' ] ],\n  [ 'deflist',    deflist,    [ 'paragraph' ] ],\n  [ 'paragraph',  paragraph ]\n];\n\n/**\n * Block Parser class\n *\n * @api private\n */\n\nfunction ParserBlock() {\n  this.ruler = new Ruler();\n  for (var i = 0; i < _rules$1.length; i++) {\n    this.ruler.push(_rules$1[i][0], _rules$1[i][1], {\n      alt: (_rules$1[i][2] || []).slice()\n    });\n  }\n}\n\n/**\n * Generate tokens for the given input range.\n *\n * @param  {Object} `state` Has properties like `src`, `parser`, `options` etc\n * @param  {Number} `startLine`\n * @param  {Number} `endLine`\n * @api private\n */\n\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n  var rules = this.ruler.getRules('');\n  var len = rules.length;\n  var line = startLine;\n  var hasEmptyLines = false;\n  var ok, i;\n\n  while (line < endLine) {\n    state.line = line = state.skipEmptyLines(line);\n    if (line >= endLine) {\n      break;\n    }\n\n    // Termination condition for nested calls.\n    // Nested calls currently used for blockquotes & lists\n    if (state.tShift[line] < state.blkIndent) {\n      break;\n    }\n\n    // Try all possible rules.\n    // On success, rule should:\n    //\n    // - update `state.line`\n    // - update `state.tokens`\n    // - return true\n\n    for (i = 0; i < len; i++) {\n      ok = rules[i](state, line, endLine, false);\n      if (ok) {\n        break;\n      }\n    }\n\n    // set state.tight iff we had an empty line before current tag\n    // i.e. latest empty line should not count\n    state.tight = !hasEmptyLines;\n\n    // paragraph might \"eat\" one newline after it in nested lists\n    if (state.isEmpty(state.line - 1)) {\n      hasEmptyLines = true;\n    }\n\n    line = state.line;\n\n    if (line < endLine && state.isEmpty(line)) {\n      hasEmptyLines = true;\n      line++;\n\n      // two empty lines should stop the parser in list mode\n      if (line < endLine && state.parentType === 'list' && state.isEmpty(line)) { break; }\n      state.line = line;\n    }\n  }\n};\n\nvar TABS_SCAN_RE = /[\\n\\t]/g;\nvar NEWLINES_RE  = /\\r[\\n\\u0085]|[\\u2424\\u2028\\u0085]/g;\nvar SPACES_RE    = /\\u00a0/g;\n\n/**\n * Tokenize the given `str`.\n *\n * @param  {String} `str` Source string\n * @param  {Object} `options`\n * @param  {Object} `env`\n * @param  {Array} `outTokens`\n * @api private\n */\n\nParserBlock.prototype.parse = function (str, options, env, outTokens) {\n  var state, lineStart = 0, lastTabPos = 0;\n  if (!str) { return []; }\n\n  // Normalize spaces\n  str = str.replace(SPACES_RE, ' ');\n\n  // Normalize newlines\n  str = str.replace(NEWLINES_RE, '\\n');\n\n  // Replace tabs with proper number of spaces (1..4)\n  if (str.indexOf('\\t') >= 0) {\n    str = str.replace(TABS_SCAN_RE, function (match, offset) {\n      var result;\n      if (str.charCodeAt(offset) === 0x0A) {\n        lineStart = offset + 1;\n        lastTabPos = 0;\n        return match;\n      }\n      result = '    '.slice((offset - lineStart - lastTabPos) % 4);\n      lastTabPos = offset - lineStart + 1;\n      return result;\n    });\n  }\n\n  state = new StateBlock(str, this, options, env, outTokens);\n  this.tokenize(state, state.line, state.lineMax);\n};\n\n// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\nfunction isTerminatorChar(ch) {\n  switch (ch) {\n    case 0x0A/* \\n */:\n    case 0x5C/* \\ */:\n    case 0x60/* ` */:\n    case 0x2A/* * */:\n    case 0x5F/* _ */:\n    case 0x5E/* ^ */:\n    case 0x5B/* [ */:\n    case 0x5D/* ] */:\n    case 0x21/* ! */:\n    case 0x26/* & */:\n    case 0x3C/* < */:\n    case 0x3E/* > */:\n    case 0x7B/* { */:\n    case 0x7D/* } */:\n    case 0x24/* $ */:\n    case 0x25/* % */:\n    case 0x40/* @ */:\n    case 0x7E/* ~ */:\n    case 0x2B/* + */:\n    case 0x3D/* = */:\n    case 0x3A/* : */:\n      return true;\n    default:\n      return false;\n  }\n}\n\nfunction text(state, silent) {\n  var pos = state.pos;\n\n  while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n    pos++;\n  }\n\n  if (pos === state.pos) { return false; }\n\n  if (!silent) { state.pending += state.src.slice(state.pos, pos); }\n\n  state.pos = pos;\n\n  return true;\n}\n\n// Proceess '\\n'\n\nfunction newline(state, silent) {\n  var pmax, max, pos = state.pos;\n\n  if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false; }\n\n  pmax = state.pending.length - 1;\n  max = state.posMax;\n\n  // '  \\n' -> hardbreak\n  // Lookup in pending chars is bad practice! Don't copy to other rules!\n  // Pending string is stored in concat mode, indexed lookups will cause\n  // convertion to flat mode.\n  if (!silent) {\n    if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n      if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n        // Strip out all trailing spaces on this line.\n        for (var i = pmax - 2; i >= 0; i--) {\n          if (state.pending.charCodeAt(i) !== 0x20) {\n            state.pending = state.pending.substring(0, i + 1);\n            break;\n          }\n        }\n        state.push({\n          type: 'hardbreak',\n          level: state.level\n        });\n      } else {\n        state.pending = state.pending.slice(0, -1);\n        state.push({\n          type: 'softbreak',\n          level: state.level\n        });\n      }\n\n    } else {\n      state.push({\n        type: 'softbreak',\n        level: state.level\n      });\n    }\n  }\n\n  pos++;\n\n  // skip heading spaces for next line\n  while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n  state.pos = pos;\n  return true;\n}\n\n// Proceess escaped chars and hardbreaks\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) { ESCAPED.push(0); }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n  .split('').forEach(function(ch) { ESCAPED[ch.charCodeAt(0)] = 1; });\n\n\nfunction escape(state, silent) {\n  var ch, pos = state.pos, max = state.posMax;\n\n  if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) { return false; }\n\n  pos++;\n\n  if (pos < max) {\n    ch = state.src.charCodeAt(pos);\n\n    if (ch < 256 && ESCAPED[ch] !== 0) {\n      if (!silent) { state.pending += state.src[pos]; }\n      state.pos += 2;\n      return true;\n    }\n\n    if (ch === 0x0A) {\n      if (!silent) {\n        state.push({\n          type: 'hardbreak',\n          level: state.level\n        });\n      }\n\n      pos++;\n      // skip leading whitespaces from next line\n      while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n      state.pos = pos;\n      return true;\n    }\n  }\n\n  if (!silent) { state.pending += '\\\\'; }\n  state.pos++;\n  return true;\n}\n\n// Parse backticks\n\nfunction backticks(state, silent) {\n  var start, max, marker, matchStart, matchEnd,\n      pos = state.pos,\n      ch = state.src.charCodeAt(pos);\n\n  if (ch !== 0x60/* ` */) { return false; }\n\n  start = pos;\n  pos++;\n  max = state.posMax;\n\n  while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; }\n\n  marker = state.src.slice(start, pos);\n\n  matchStart = matchEnd = pos;\n\n  while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n    matchEnd = matchStart + 1;\n\n    while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; }\n\n    if (matchEnd - matchStart === marker.length) {\n      if (!silent) {\n        state.push({\n          type: 'code',\n          content: state.src.slice(pos, matchStart)\n                              .replace(/[ \\n]+/g, ' ')\n                              .trim(),\n          block: false,\n          level: state.level\n        });\n      }\n      state.pos = matchEnd;\n      return true;\n    }\n  }\n\n  if (!silent) { state.pending += marker; }\n  state.pos += marker.length;\n  return true;\n}\n\n// Process ~~deleted text~~\n\nfunction del(state, silent) {\n  var found,\n      pos,\n      stack,\n      max = state.posMax,\n      start = state.pos,\n      lastChar,\n      nextChar;\n\n  if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; }\n  if (silent) { return false; } // don't run any pairs in validation mode\n  if (start + 4 >= max) { return false; }\n  if (state.src.charCodeAt(start + 1) !== 0x7E/* ~ */) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n  nextChar = state.src.charCodeAt(start + 2);\n\n  if (lastChar === 0x7E/* ~ */) { return false; }\n  if (nextChar === 0x7E/* ~ */) { return false; }\n  if (nextChar === 0x20 || nextChar === 0x0A) { return false; }\n\n  pos = start + 2;\n  while (pos < max && state.src.charCodeAt(pos) === 0x7E/* ~ */) { pos++; }\n  if (pos > start + 3) {\n    // sequence of 4+ markers taking as literal, same as in a emphasis\n    state.pos += pos - start;\n    if (!silent) { state.pending += state.src.slice(start, pos); }\n    return true;\n  }\n\n  state.pos = start + 2;\n  stack = 1;\n\n  while (state.pos + 1 < max) {\n    if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) {\n      if (state.src.charCodeAt(state.pos + 1) === 0x7E/* ~ */) {\n        lastChar = state.src.charCodeAt(state.pos - 1);\n        nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1;\n        if (nextChar !== 0x7E/* ~ */ && lastChar !== 0x7E/* ~ */) {\n          if (lastChar !== 0x20 && lastChar !== 0x0A) {\n            // closing '~~'\n            stack--;\n          } else if (nextChar !== 0x20 && nextChar !== 0x0A) {\n            // opening '~~'\n            stack++;\n          } // else {\n            //  // standalone ' ~~ ' indented with spaces\n            // }\n          if (stack <= 0) {\n            found = true;\n            break;\n          }\n        }\n      }\n    }\n\n    state.parser.skipToken(state);\n  }\n\n  if (!found) {\n    // parser failed to find ending tag, so it's not valid emphasis\n    state.pos = start;\n    return false;\n  }\n\n  // found!\n  state.posMax = state.pos;\n  state.pos = start + 2;\n\n  if (!silent) {\n    state.push({ type: 'del_open', level: state.level++ });\n    state.parser.tokenize(state);\n    state.push({ type: 'del_close', level: --state.level });\n  }\n\n  state.pos = state.posMax + 2;\n  state.posMax = max;\n  return true;\n}\n\n// Process ++inserted text++\n\nfunction ins(state, silent) {\n  var found,\n      pos,\n      stack,\n      max = state.posMax,\n      start = state.pos,\n      lastChar,\n      nextChar;\n\n  if (state.src.charCodeAt(start) !== 0x2B/* + */) { return false; }\n  if (silent) { return false; } // don't run any pairs in validation mode\n  if (start + 4 >= max) { return false; }\n  if (state.src.charCodeAt(start + 1) !== 0x2B/* + */) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n  nextChar = state.src.charCodeAt(start + 2);\n\n  if (lastChar === 0x2B/* + */) { return false; }\n  if (nextChar === 0x2B/* + */) { return false; }\n  if (nextChar === 0x20 || nextChar === 0x0A) { return false; }\n\n  pos = start + 2;\n  while (pos < max && state.src.charCodeAt(pos) === 0x2B/* + */) { pos++; }\n  if (pos !== start + 2) {\n    // sequence of 3+ markers taking as literal, same as in a emphasis\n    state.pos += pos - start;\n    if (!silent) { state.pending += state.src.slice(start, pos); }\n    return true;\n  }\n\n  state.pos = start + 2;\n  stack = 1;\n\n  while (state.pos + 1 < max) {\n    if (state.src.charCodeAt(state.pos) === 0x2B/* + */) {\n      if (state.src.charCodeAt(state.pos + 1) === 0x2B/* + */) {\n        lastChar = state.src.charCodeAt(state.pos - 1);\n        nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1;\n        if (nextChar !== 0x2B/* + */ && lastChar !== 0x2B/* + */) {\n          if (lastChar !== 0x20 && lastChar !== 0x0A) {\n            // closing '++'\n            stack--;\n          } else if (nextChar !== 0x20 && nextChar !== 0x0A) {\n            // opening '++'\n            stack++;\n          } // else {\n            //  // standalone ' ++ ' indented with spaces\n            // }\n          if (stack <= 0) {\n            found = true;\n            break;\n          }\n        }\n      }\n    }\n\n    state.parser.skipToken(state);\n  }\n\n  if (!found) {\n    // parser failed to find ending tag, so it's not valid emphasis\n    state.pos = start;\n    return false;\n  }\n\n  // found!\n  state.posMax = state.pos;\n  state.pos = start + 2;\n\n  if (!silent) {\n    state.push({ type: 'ins_open', level: state.level++ });\n    state.parser.tokenize(state);\n    state.push({ type: 'ins_close', level: --state.level });\n  }\n\n  state.pos = state.posMax + 2;\n  state.posMax = max;\n  return true;\n}\n\n// Process ==highlighted text==\n\nfunction mark(state, silent) {\n  var found,\n      pos,\n      stack,\n      max = state.posMax,\n      start = state.pos,\n      lastChar,\n      nextChar;\n\n  if (state.src.charCodeAt(start) !== 0x3D/* = */) { return false; }\n  if (silent) { return false; } // don't run any pairs in validation mode\n  if (start + 4 >= max) { return false; }\n  if (state.src.charCodeAt(start + 1) !== 0x3D/* = */) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n  nextChar = state.src.charCodeAt(start + 2);\n\n  if (lastChar === 0x3D/* = */) { return false; }\n  if (nextChar === 0x3D/* = */) { return false; }\n  if (nextChar === 0x20 || nextChar === 0x0A) { return false; }\n\n  pos = start + 2;\n  while (pos < max && state.src.charCodeAt(pos) === 0x3D/* = */) { pos++; }\n  if (pos !== start + 2) {\n    // sequence of 3+ markers taking as literal, same as in a emphasis\n    state.pos += pos - start;\n    if (!silent) { state.pending += state.src.slice(start, pos); }\n    return true;\n  }\n\n  state.pos = start + 2;\n  stack = 1;\n\n  while (state.pos + 1 < max) {\n    if (state.src.charCodeAt(state.pos) === 0x3D/* = */) {\n      if (state.src.charCodeAt(state.pos + 1) === 0x3D/* = */) {\n        lastChar = state.src.charCodeAt(state.pos - 1);\n        nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1;\n        if (nextChar !== 0x3D/* = */ && lastChar !== 0x3D/* = */) {\n          if (lastChar !== 0x20 && lastChar !== 0x0A) {\n            // closing '=='\n            stack--;\n          } else if (nextChar !== 0x20 && nextChar !== 0x0A) {\n            // opening '=='\n            stack++;\n          } // else {\n            //  // standalone ' == ' indented with spaces\n            // }\n          if (stack <= 0) {\n            found = true;\n            break;\n          }\n        }\n      }\n    }\n\n    state.parser.skipToken(state);\n  }\n\n  if (!found) {\n    // parser failed to find ending tag, so it's not valid emphasis\n    state.pos = start;\n    return false;\n  }\n\n  // found!\n  state.posMax = state.pos;\n  state.pos = start + 2;\n\n  if (!silent) {\n    state.push({ type: 'mark_open', level: state.level++ });\n    state.parser.tokenize(state);\n    state.push({ type: 'mark_close', level: --state.level });\n  }\n\n  state.pos = state.posMax + 2;\n  state.posMax = max;\n  return true;\n}\n\n// Process *this* and _that_\n\nfunction isAlphaNum(code) {\n  return (code >= 0x30 /* 0 */ && code <= 0x39 /* 9 */) ||\n         (code >= 0x41 /* A */ && code <= 0x5A /* Z */) ||\n         (code >= 0x61 /* a */ && code <= 0x7A /* z */);\n}\n\n// parse sequence of emphasis markers,\n// \"start\" should point at a valid marker\nfunction scanDelims(state, start) {\n  var pos = start, lastChar, nextChar, count,\n      can_open = true,\n      can_close = true,\n      max = state.posMax,\n      marker = state.src.charCodeAt(start);\n\n  lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n\n  while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; }\n  if (pos >= max) { can_open = false; }\n  count = pos - start;\n\n  if (count >= 4) {\n    // sequence of four or more unescaped markers can't start/end an emphasis\n    can_open = can_close = false;\n  } else {\n    nextChar = pos < max ? state.src.charCodeAt(pos) : -1;\n\n    // check whitespace conditions\n    if (nextChar === 0x20 || nextChar === 0x0A) { can_open = false; }\n    if (lastChar === 0x20 || lastChar === 0x0A) { can_close = false; }\n\n    if (marker === 0x5F /* _ */) {\n      // check if we aren't inside the word\n      if (isAlphaNum(lastChar)) { can_open = false; }\n      if (isAlphaNum(nextChar)) { can_close = false; }\n    }\n  }\n\n  return {\n    can_open: can_open,\n    can_close: can_close,\n    delims: count\n  };\n}\n\nfunction emphasis(state, silent) {\n  var startCount,\n      count,\n      found,\n      oldCount,\n      newCount,\n      stack,\n      res,\n      max = state.posMax,\n      start = state.pos,\n      marker = state.src.charCodeAt(start);\n\n  if (marker !== 0x5F/* _ */ && marker !== 0x2A /* * */) { return false; }\n  if (silent) { return false; } // don't run any pairs in validation mode\n\n  res = scanDelims(state, start);\n  startCount = res.delims;\n  if (!res.can_open) {\n    state.pos += startCount;\n    if (!silent) { state.pending += state.src.slice(start, state.pos); }\n    return true;\n  }\n\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  state.pos = start + startCount;\n  stack = [ startCount ];\n\n  while (state.pos < max) {\n    if (state.src.charCodeAt(state.pos) === marker) {\n      res = scanDelims(state, state.pos);\n      count = res.delims;\n      if (res.can_close) {\n        oldCount = stack.pop();\n        newCount = count;\n\n        while (oldCount !== newCount) {\n          if (newCount < oldCount) {\n            stack.push(oldCount - newCount);\n            break;\n          }\n\n          // assert(newCount > oldCount)\n          newCount -= oldCount;\n\n          if (stack.length === 0) { break; }\n          state.pos += oldCount;\n          oldCount = stack.pop();\n        }\n\n        if (stack.length === 0) {\n          startCount = oldCount;\n          found = true;\n          break;\n        }\n        state.pos += count;\n        continue;\n      }\n\n      if (res.can_open) { stack.push(count); }\n      state.pos += count;\n      continue;\n    }\n\n    state.parser.skipToken(state);\n  }\n\n  if (!found) {\n    // parser failed to find ending tag, so it's not valid emphasis\n    state.pos = start;\n    return false;\n  }\n\n  // found!\n  state.posMax = state.pos;\n  state.pos = start + startCount;\n\n  if (!silent) {\n    if (startCount === 2 || startCount === 3) {\n      state.push({ type: 'strong_open', level: state.level++ });\n    }\n    if (startCount === 1 || startCount === 3) {\n      state.push({ type: 'em_open', level: state.level++ });\n    }\n\n    state.parser.tokenize(state);\n\n    if (startCount === 1 || startCount === 3) {\n      state.push({ type: 'em_close', level: --state.level });\n    }\n    if (startCount === 2 || startCount === 3) {\n      state.push({ type: 'strong_close', level: --state.level });\n    }\n  }\n\n  state.pos = state.posMax + startCount;\n  state.posMax = max;\n  return true;\n}\n\n// Process ~subscript~\n\n// same as UNESCAPE_MD_RE plus a space\nvar UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\nfunction sub(state, silent) {\n  var found,\n      content,\n      max = state.posMax,\n      start = state.pos;\n\n  if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; }\n  if (silent) { return false; } // don't run any pairs in validation mode\n  if (start + 2 >= max) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  state.pos = start + 1;\n\n  while (state.pos < max) {\n    if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) {\n      found = true;\n      break;\n    }\n\n    state.parser.skipToken(state);\n  }\n\n  if (!found || start + 1 === state.pos) {\n    state.pos = start;\n    return false;\n  }\n\n  content = state.src.slice(start + 1, state.pos);\n\n  // don't allow unescaped spaces/newlines inside\n  if (content.match(/(^|[^\\\\])(\\\\\\\\)*\\s/)) {\n    state.pos = start;\n    return false;\n  }\n\n  // found!\n  state.posMax = state.pos;\n  state.pos = start + 1;\n\n  if (!silent) {\n    state.push({\n      type: 'sub',\n      level: state.level,\n      content: content.replace(UNESCAPE_RE, '$1')\n    });\n  }\n\n  state.pos = state.posMax + 1;\n  state.posMax = max;\n  return true;\n}\n\n// Process ^superscript^\n\n// same as UNESCAPE_MD_RE plus a space\nvar UNESCAPE_RE$1 = /\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\nfunction sup(state, silent) {\n  var found,\n      content,\n      max = state.posMax,\n      start = state.pos;\n\n  if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }\n  if (silent) { return false; } // don't run any pairs in validation mode\n  if (start + 2 >= max) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  state.pos = start + 1;\n\n  while (state.pos < max) {\n    if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) {\n      found = true;\n      break;\n    }\n\n    state.parser.skipToken(state);\n  }\n\n  if (!found || start + 1 === state.pos) {\n    state.pos = start;\n    return false;\n  }\n\n  content = state.src.slice(start + 1, state.pos);\n\n  // don't allow unescaped spaces/newlines inside\n  if (content.match(/(^|[^\\\\])(\\\\\\\\)*\\s/)) {\n    state.pos = start;\n    return false;\n  }\n\n  // found!\n  state.posMax = state.pos;\n  state.pos = start + 1;\n\n  if (!silent) {\n    state.push({\n      type: 'sup',\n      level: state.level,\n      content: content.replace(UNESCAPE_RE$1, '$1')\n    });\n  }\n\n  state.pos = state.posMax + 1;\n  state.posMax = max;\n  return true;\n}\n\n// Process [links](<to> \"stuff\")\n\n\nfunction links(state, silent) {\n  var labelStart,\n      labelEnd,\n      label,\n      href,\n      title,\n      pos,\n      ref,\n      code,\n      isImage = false,\n      oldPos = state.pos,\n      max = state.posMax,\n      start = state.pos,\n      marker = state.src.charCodeAt(start);\n\n  if (marker === 0x21/* ! */) {\n    isImage = true;\n    marker = state.src.charCodeAt(++start);\n  }\n\n  if (marker !== 0x5B/* [ */) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  labelStart = start + 1;\n  labelEnd = parseLinkLabel(state, start);\n\n  // parser failed to find ']', so it's not a valid link\n  if (labelEnd < 0) { return false; }\n\n  pos = labelEnd + 1;\n  if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n    //\n    // Inline link\n    //\n\n    // [link](  <href>  \"title\"  )\n    //        ^^ skipping these spaces\n    pos++;\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (code !== 0x20 && code !== 0x0A) { break; }\n    }\n    if (pos >= max) { return false; }\n\n    // [link](  <href>  \"title\"  )\n    //          ^^^^^^ parsing link destination\n    start = pos;\n    if (parseLinkDestination(state, pos)) {\n      href = state.linkContent;\n      pos = state.pos;\n    } else {\n      href = '';\n    }\n\n    // [link](  <href>  \"title\"  )\n    //                ^^ skipping these spaces\n    start = pos;\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (code !== 0x20 && code !== 0x0A) { break; }\n    }\n\n    // [link](  <href>  \"title\"  )\n    //                  ^^^^^^^ parsing link title\n    if (pos < max && start !== pos && parseLinkTitle(state, pos)) {\n      title = state.linkContent;\n      pos = state.pos;\n\n      // [link](  <href>  \"title\"  )\n      //                         ^^ skipping these spaces\n      for (; pos < max; pos++) {\n        code = state.src.charCodeAt(pos);\n        if (code !== 0x20 && code !== 0x0A) { break; }\n      }\n    } else {\n      title = '';\n    }\n\n    if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n      state.pos = oldPos;\n      return false;\n    }\n    pos++;\n  } else {\n    //\n    // Link reference\n    //\n\n    // do not allow nested reference links\n    if (state.linkLevel > 0) { return false; }\n\n    // [foo]  [bar]\n    //      ^^ optional whitespace (can include newlines)\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (code !== 0x20 && code !== 0x0A) { break; }\n    }\n\n    if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n      start = pos + 1;\n      pos = parseLinkLabel(state, pos);\n      if (pos >= 0) {\n        label = state.src.slice(start, pos++);\n      } else {\n        pos = start - 1;\n      }\n    }\n\n    // covers label === '' and label === undefined\n    // (collapsed reference link and shortcut reference link respectively)\n    if (!label) {\n      if (typeof label === 'undefined') {\n        pos = labelEnd + 1;\n      }\n      label = state.src.slice(labelStart, labelEnd);\n    }\n\n    ref = state.env.references[normalizeReference(label)];\n    if (!ref) {\n      state.pos = oldPos;\n      return false;\n    }\n    href = ref.href;\n    title = ref.title;\n  }\n\n  //\n  // We found the end of the link, and know for a fact it's a valid link;\n  // so all that's left to do is to call tokenizer.\n  //\n  if (!silent) {\n    state.pos = labelStart;\n    state.posMax = labelEnd;\n\n    if (isImage) {\n      state.push({\n        type: 'image',\n        src: href,\n        title: title,\n        alt: state.src.substr(labelStart, labelEnd - labelStart),\n        level: state.level\n      });\n    } else {\n      state.push({\n        type: 'link_open',\n        href: href,\n        title: title,\n        level: state.level++\n      });\n      state.linkLevel++;\n      state.parser.tokenize(state);\n      state.linkLevel--;\n      state.push({ type: 'link_close', level: --state.level });\n    }\n  }\n\n  state.pos = pos;\n  state.posMax = max;\n  return true;\n}\n\n// Process inline footnotes (^[...])\n\n\nfunction footnote_inline(state, silent) {\n  var labelStart,\n      labelEnd,\n      footnoteId,\n      oldLength,\n      max = state.posMax,\n      start = state.pos;\n\n  if (start + 2 >= max) { return false; }\n  if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }\n  if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  labelStart = start + 2;\n  labelEnd = parseLinkLabel(state, start + 1);\n\n  // parser failed to find ']', so it's not a valid note\n  if (labelEnd < 0) { return false; }\n\n  // We found the end of the link, and know for a fact it's a valid link;\n  // so all that's left to do is to call tokenizer.\n  //\n  if (!silent) {\n    if (!state.env.footnotes) { state.env.footnotes = {}; }\n    if (!state.env.footnotes.list) { state.env.footnotes.list = []; }\n    footnoteId = state.env.footnotes.list.length;\n\n    state.pos = labelStart;\n    state.posMax = labelEnd;\n\n    state.push({\n      type: 'footnote_ref',\n      id: footnoteId,\n      level: state.level\n    });\n    state.linkLevel++;\n    oldLength = state.tokens.length;\n    state.parser.tokenize(state);\n    state.env.footnotes.list[footnoteId] = { tokens: state.tokens.splice(oldLength) };\n    state.linkLevel--;\n  }\n\n  state.pos = labelEnd + 1;\n  state.posMax = max;\n  return true;\n}\n\n// Process footnote references ([^...])\n\nfunction footnote_ref(state, silent) {\n  var label,\n      pos,\n      footnoteId,\n      footnoteSubId,\n      max = state.posMax,\n      start = state.pos;\n\n  // should be at least 4 chars - \"[^x]\"\n  if (start + 3 > max) { return false; }\n\n  if (!state.env.footnotes || !state.env.footnotes.refs) { return false; }\n  if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; }\n  if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; }\n  if (state.level >= state.options.maxNesting) { return false; }\n\n  for (pos = start + 2; pos < max; pos++) {\n    if (state.src.charCodeAt(pos) === 0x20) { return false; }\n    if (state.src.charCodeAt(pos) === 0x0A) { return false; }\n    if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n      break;\n    }\n  }\n\n  if (pos === start + 2) { return false; } // no empty footnote labels\n  if (pos >= max) { return false; }\n  pos++;\n\n  label = state.src.slice(start + 2, pos - 1);\n  if (typeof state.env.footnotes.refs[':' + label] === 'undefined') { return false; }\n\n  if (!silent) {\n    if (!state.env.footnotes.list) { state.env.footnotes.list = []; }\n\n    if (state.env.footnotes.refs[':' + label] < 0) {\n      footnoteId = state.env.footnotes.list.length;\n      state.env.footnotes.list[footnoteId] = { label: label, count: 0 };\n      state.env.footnotes.refs[':' + label] = footnoteId;\n    } else {\n      footnoteId = state.env.footnotes.refs[':' + label];\n    }\n\n    footnoteSubId = state.env.footnotes.list[footnoteId].count;\n    state.env.footnotes.list[footnoteId].count++;\n\n    state.push({\n      type: 'footnote_ref',\n      id: footnoteId,\n      subId: footnoteSubId,\n      level: state.level\n    });\n  }\n\n  state.pos = pos;\n  state.posMax = max;\n  return true;\n}\n\n// List of valid url schemas, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#autolinks\n\nvar url_schemas = [\n  'coap',\n  'doi',\n  'javascript',\n  'aaa',\n  'aaas',\n  'about',\n  'acap',\n  'cap',\n  'cid',\n  'crid',\n  'data',\n  'dav',\n  'dict',\n  'dns',\n  'file',\n  'ftp',\n  'geo',\n  'go',\n  'gopher',\n  'h323',\n  'http',\n  'https',\n  'iax',\n  'icap',\n  'im',\n  'imap',\n  'info',\n  'ipp',\n  'iris',\n  'iris.beep',\n  'iris.xpc',\n  'iris.xpcs',\n  'iris.lwz',\n  'ldap',\n  'mailto',\n  'mid',\n  'msrp',\n  'msrps',\n  'mtqp',\n  'mupdate',\n  'news',\n  'nfs',\n  'ni',\n  'nih',\n  'nntp',\n  'opaquelocktoken',\n  'pop',\n  'pres',\n  'rtsp',\n  'service',\n  'session',\n  'shttp',\n  'sieve',\n  'sip',\n  'sips',\n  'sms',\n  'snmp',\n  'soap.beep',\n  'soap.beeps',\n  'tag',\n  'tel',\n  'telnet',\n  'tftp',\n  'thismessage',\n  'tn3270',\n  'tip',\n  'tv',\n  'urn',\n  'vemmi',\n  'ws',\n  'wss',\n  'xcon',\n  'xcon-userid',\n  'xmlrpc.beep',\n  'xmlrpc.beeps',\n  'xmpp',\n  'z39.50r',\n  'z39.50s',\n  'adiumxtra',\n  'afp',\n  'afs',\n  'aim',\n  'apt',\n  'attachment',\n  'aw',\n  'beshare',\n  'bitcoin',\n  'bolo',\n  'callto',\n  'chrome',\n  'chrome-extension',\n  'com-eventbrite-attendee',\n  'content',\n  'cvs',\n  'dlna-playsingle',\n  'dlna-playcontainer',\n  'dtn',\n  'dvb',\n  'ed2k',\n  'facetime',\n  'feed',\n  'finger',\n  'fish',\n  'gg',\n  'git',\n  'gizmoproject',\n  'gtalk',\n  'hcp',\n  'icon',\n  'ipn',\n  'irc',\n  'irc6',\n  'ircs',\n  'itms',\n  'jar',\n  'jms',\n  'keyparc',\n  'lastfm',\n  'ldaps',\n  'magnet',\n  'maps',\n  'market',\n  'message',\n  'mms',\n  'ms-help',\n  'msnim',\n  'mumble',\n  'mvn',\n  'notes',\n  'oid',\n  'palm',\n  'paparazzi',\n  'platform',\n  'proxy',\n  'psyc',\n  'query',\n  'res',\n  'resource',\n  'rmi',\n  'rsync',\n  'rtmp',\n  'secondlife',\n  'sftp',\n  'sgn',\n  'skype',\n  'smb',\n  'soldat',\n  'spotify',\n  'ssh',\n  'steam',\n  'svn',\n  'teamspeak',\n  'things',\n  'udp',\n  'unreal',\n  'ut2004',\n  'ventrilo',\n  'view-source',\n  'webcal',\n  'wtai',\n  'wyciwyg',\n  'xfire',\n  'xri',\n  'ymsgr'\n];\n\n// Process autolinks '<protocol:...>'\n\n\n/*eslint max-len:0*/\nvar EMAIL_RE    = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\nvar AUTOLINK_RE = /^<([a-zA-Z.\\-]{1,25}):([^<>\\x00-\\x20]*)>/;\n\n\nfunction autolink(state, silent) {\n  var tail, linkMatch, emailMatch, url, fullUrl, pos = state.pos;\n\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n  tail = state.src.slice(pos);\n\n  if (tail.indexOf('>') < 0) { return false; }\n\n  linkMatch = tail.match(AUTOLINK_RE);\n\n  if (linkMatch) {\n    if (url_schemas.indexOf(linkMatch[1].toLowerCase()) < 0) { return false; }\n\n    url = linkMatch[0].slice(1, -1);\n    fullUrl = normalizeLink(url);\n    if (!state.parser.validateLink(url)) { return false; }\n\n    if (!silent) {\n      state.push({\n        type: 'link_open',\n        href: fullUrl,\n        level: state.level\n      });\n      state.push({\n        type: 'text',\n        content: url,\n        level: state.level + 1\n      });\n      state.push({ type: 'link_close', level: state.level });\n    }\n\n    state.pos += linkMatch[0].length;\n    return true;\n  }\n\n  emailMatch = tail.match(EMAIL_RE);\n\n  if (emailMatch) {\n\n    url = emailMatch[0].slice(1, -1);\n\n    fullUrl = normalizeLink('mailto:' + url);\n    if (!state.parser.validateLink(fullUrl)) { return false; }\n\n    if (!silent) {\n      state.push({\n        type: 'link_open',\n        href: fullUrl,\n        level: state.level\n      });\n      state.push({\n        type: 'text',\n        content: url,\n        level: state.level + 1\n      });\n      state.push({ type: 'link_close', level: state.level });\n    }\n\n    state.pos += emailMatch[0].length;\n    return true;\n  }\n\n  return false;\n}\n\n// Regexps to match html elements\n\nfunction replace$1(regex, options) {\n  regex = regex.source;\n  options = options || '';\n\n  return function self(name, val) {\n    if (!name) {\n      return new RegExp(regex, options);\n    }\n    val = val.source || val;\n    regex = regex.replace(name, val);\n    return self;\n  };\n}\n\n\nvar attr_name     = /[a-zA-Z_:][a-zA-Z0-9:._-]*/;\n\nvar unquoted      = /[^\"'=<>`\\x00-\\x20]+/;\nvar single_quoted = /'[^']*'/;\nvar double_quoted = /\"[^\"]*\"/;\n\n/*eslint no-spaced-func:0*/\nvar attr_value  = replace$1(/(?:unquoted|single_quoted|double_quoted)/)\n                    ('unquoted', unquoted)\n                    ('single_quoted', single_quoted)\n                    ('double_quoted', double_quoted)\n                    ();\n\nvar attribute   = replace$1(/(?:\\s+attr_name(?:\\s*=\\s*attr_value)?)/)\n                    ('attr_name', attr_name)\n                    ('attr_value', attr_value)\n                    ();\n\nvar open_tag    = replace$1(/<[A-Za-z][A-Za-z0-9]*attribute*\\s*\\/?>/)\n                    ('attribute', attribute)\n                    ();\n\nvar close_tag   = /<\\/[A-Za-z][A-Za-z0-9]*\\s*>/;\nvar comment     = /<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->/;\nvar processing  = /<[?].*?[?]>/;\nvar declaration = /<![A-Z]+\\s+[^>]*>/;\nvar cdata       = /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/;\n\nvar HTML_TAG_RE = replace$1(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)\n  ('open_tag', open_tag)\n  ('close_tag', close_tag)\n  ('comment', comment)\n  ('processing', processing)\n  ('declaration', declaration)\n  ('cdata', cdata)\n  ();\n\n// Process html tags\n\n\nfunction isLetter$2(ch) {\n  /*eslint no-bitwise:0*/\n  var lc = ch | 0x20; // to lower case\n  return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\n\nfunction htmltag(state, silent) {\n  var ch, match, max, pos = state.pos;\n\n  if (!state.options.html) { return false; }\n\n  // Check start\n  max = state.posMax;\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n      pos + 2 >= max) {\n    return false;\n  }\n\n  // Quick fail on second char\n  ch = state.src.charCodeAt(pos + 1);\n  if (ch !== 0x21/* ! */ &&\n      ch !== 0x3F/* ? */ &&\n      ch !== 0x2F/* / */ &&\n      !isLetter$2(ch)) {\n    return false;\n  }\n\n  match = state.src.slice(pos).match(HTML_TAG_RE);\n  if (!match) { return false; }\n\n  if (!silent) {\n    state.push({\n      type: 'htmltag',\n      content: state.src.slice(pos, pos + match[0].length),\n      level: state.level\n    });\n  }\n  state.pos += match[0].length;\n  return true;\n}\n\n// Process html entity - &#123;, &#xAF;, &quot;, ...\n\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i;\nvar NAMED_RE   = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nfunction entity(state, silent) {\n  var ch, code, match, pos = state.pos, max = state.posMax;\n\n  if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; }\n\n  if (pos + 1 < max) {\n    ch = state.src.charCodeAt(pos + 1);\n\n    if (ch === 0x23 /* # */) {\n      match = state.src.slice(pos).match(DIGITAL_RE);\n      if (match) {\n        if (!silent) {\n          code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n          state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n        }\n        state.pos += match[0].length;\n        return true;\n      }\n    } else {\n      match = state.src.slice(pos).match(NAMED_RE);\n      if (match) {\n        var decoded = decodeEntity(match[1]);\n        if (match[1] !== decoded) {\n          if (!silent) { state.pending += decoded; }\n          state.pos += match[0].length;\n          return true;\n        }\n      }\n    }\n  }\n\n  if (!silent) { state.pending += '&'; }\n  state.pos++;\n  return true;\n}\n\n/**\n * Inline Parser `rules`\n */\n\nvar _rules$2 = [\n  [ 'text',            text ],\n  [ 'newline',         newline ],\n  [ 'escape',          escape ],\n  [ 'backticks',       backticks ],\n  [ 'del',             del ],\n  [ 'ins',             ins ],\n  [ 'mark',            mark ],\n  [ 'emphasis',        emphasis ],\n  [ 'sub',             sub ],\n  [ 'sup',             sup ],\n  [ 'links',           links ],\n  [ 'footnote_inline', footnote_inline ],\n  [ 'footnote_ref',    footnote_ref ],\n  [ 'autolink',        autolink ],\n  [ 'htmltag',         htmltag ],\n  [ 'entity',          entity ]\n];\n\n/**\n * Inline Parser class. Note that link validation is stricter\n * in Remarkable than what is specified by CommonMark. If you\n * want to change this you can use a custom validator.\n *\n * @api private\n */\n\nfunction ParserInline() {\n  this.ruler = new Ruler();\n  for (var i = 0; i < _rules$2.length; i++) {\n    this.ruler.push(_rules$2[i][0], _rules$2[i][1]);\n  }\n\n  // Can be overridden with a custom validator\n  this.validateLink = validateLink;\n}\n\n/**\n * Skip a single token by running all rules in validation mode.\n * Returns `true` if any rule reports success.\n *\n * @param  {Object} `state`\n * @api privage\n */\n\nParserInline.prototype.skipToken = function (state) {\n  var rules = this.ruler.getRules('');\n  var len = rules.length;\n  var pos = state.pos;\n  var i, cached_pos;\n\n  if ((cached_pos = state.cacheGet(pos)) > 0) {\n    state.pos = cached_pos;\n    return;\n  }\n\n  for (i = 0; i < len; i++) {\n    if (rules[i](state, true)) {\n      state.cacheSet(pos, state.pos);\n      return;\n    }\n  }\n\n  state.pos++;\n  state.cacheSet(pos, state.pos);\n};\n\n/**\n * Generate tokens for the given input range.\n *\n * @param  {Object} `state`\n * @api private\n */\n\nParserInline.prototype.tokenize = function (state) {\n  var rules = this.ruler.getRules('');\n  var len = rules.length;\n  var end = state.posMax;\n  var ok, i;\n\n  while (state.pos < end) {\n\n    // Try all possible rules.\n    // On success, the rule should:\n    //\n    // - update `state.pos`\n    // - update `state.tokens`\n    // - return true\n    for (i = 0; i < len; i++) {\n      ok = rules[i](state, false);\n\n      if (ok) {\n        break;\n      }\n    }\n\n    if (ok) {\n      if (state.pos >= end) { break; }\n      continue;\n    }\n\n    state.pending += state.src[state.pos++];\n  }\n\n  if (state.pending) {\n    state.pushPending();\n  }\n};\n\n/**\n * Parse the given input string.\n *\n * @param  {String} `str`\n * @param  {Object} `options`\n * @param  {Object} `env`\n * @param  {Array} `outTokens`\n * @api private\n */\n\nParserInline.prototype.parse = function (str, options, env, outTokens) {\n  var state = new StateInline(str, this, options, env, outTokens);\n  this.tokenize(state);\n};\n\n/**\n * Validate the given `url` by checking for bad protocols.\n *\n * @param  {String} `url`\n * @return {Boolean}\n */\n\nfunction validateLink(url) {\n  var BAD_PROTOCOLS = [ 'vbscript', 'javascript', 'file', 'data' ];\n  var str = url.trim().toLowerCase();\n  // Care about digital entities \"javascript&#x3A;alert(1)\"\n  str = replaceEntities(str);\n  if (str.indexOf(':') !== -1 && BAD_PROTOCOLS.indexOf(str.split(':')[0]) !== -1) {\n    return false;\n  }\n  return true;\n}\n\n// Remarkable default options\n\nvar defaultConfig = {\n  options: {\n    html:         false,        // Enable HTML tags in source\n    xhtmlOut:     false,        // Use '/' to close single tags (<br />)\n    breaks:       false,        // Convert '\\n' in paragraphs into <br>\n    langPrefix:   'language-',  // CSS language prefix for fenced blocks\n    linkTarget:   '',           // set target to open link in\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer:  false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.\n    quotes: '“”‘’',\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if input not changed\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n\n    maxNesting:   20            // Internal protection, recursion limit\n  },\n\n  components: {\n\n    core: {\n      rules: [\n        'block',\n        'inline',\n        'references',\n        'replacements',\n        'smartquotes',\n        'references',\n        'abbr2',\n        'footnote_tail'\n      ]\n    },\n\n    block: {\n      rules: [\n        'blockquote',\n        'code',\n        'fences',\n        'footnote',\n        'heading',\n        'hr',\n        'htmlblock',\n        'lheading',\n        'list',\n        'paragraph',\n        'table'\n      ]\n    },\n\n    inline: {\n      rules: [\n        'autolink',\n        'backticks',\n        'del',\n        'emphasis',\n        'entity',\n        'escape',\n        'footnote_ref',\n        'htmltag',\n        'links',\n        'newline',\n        'text'\n      ]\n    }\n  }\n};\n\n// Remarkable default options\n\nvar fullConfig = {\n  options: {\n    html:         false,        // Enable HTML tags in source\n    xhtmlOut:     false,        // Use '/' to close single tags (<br />)\n    breaks:       false,        // Convert '\\n' in paragraphs into <br>\n    langPrefix:   'language-',  // CSS language prefix for fenced blocks\n    linkTarget:   '',           // set target to open link in\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer:  false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.\n    quotes:       '“”‘’',\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if input not changed\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight:     null,\n\n    maxNesting:    20            // Internal protection, recursion limit\n  },\n\n  components: {\n    // Don't restrict core/block/inline rules\n    core: {},\n    block: {},\n    inline: {}\n  }\n};\n\n// Commonmark default options\n\nvar commonmarkConfig = {\n  options: {\n    html:         true,         // Enable HTML tags in source\n    xhtmlOut:     true,         // Use '/' to close single tags (<br />)\n    breaks:       false,        // Convert '\\n' in paragraphs into <br>\n    langPrefix:   'language-',  // CSS language prefix for fenced blocks\n    linkTarget:   '',           // set target to open link in\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer:  false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.\n    quotes: '“”‘’',\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if input not changed\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n\n    maxNesting:   20            // Internal protection, recursion limit\n  },\n\n  components: {\n\n    core: {\n      rules: [\n        'block',\n        'inline',\n        'references',\n        'abbr2'\n      ]\n    },\n\n    block: {\n      rules: [\n        'blockquote',\n        'code',\n        'fences',\n        'heading',\n        'hr',\n        'htmlblock',\n        'lheading',\n        'list',\n        'paragraph'\n      ]\n    },\n\n    inline: {\n      rules: [\n        'autolink',\n        'backticks',\n        'emphasis',\n        'entity',\n        'escape',\n        'htmltag',\n        'links',\n        'newline',\n        'text'\n      ]\n    }\n  }\n};\n\n/**\n * Preset configs\n */\n\nvar config = {\n  'default': defaultConfig,\n  'full': fullConfig,\n  'commonmark': commonmarkConfig\n};\n\n/**\n * The `StateCore` class manages state.\n *\n * @param {Object} `instance` Remarkable instance\n * @param {String} `str` Markdown string\n * @param {Object} `env`\n */\n\nfunction StateCore(instance, str, env) {\n  this.src = str;\n  this.env = env;\n  this.options = instance.options;\n  this.tokens = [];\n  this.inlineMode = false;\n\n  this.inline = instance.inline;\n  this.block = instance.block;\n  this.renderer = instance.renderer;\n  this.typographer = instance.typographer;\n}\n\n/**\n * The main `Remarkable` class. Create an instance of\n * `Remarkable` with a `preset` and/or `options`.\n *\n * @param {String} `preset` If no preset is given, `default` is used.\n * @param {Object} `options`\n */\n\nfunction Remarkable(preset, options) {\n  if (typeof preset !== 'string') {\n    options = preset;\n    preset = 'default';\n  }\n\n  if (options && options.linkify != null) {\n    console.warn(\n      'linkify option is removed. Use linkify plugin instead:\\n\\n' +\n      'import Remarkable from \\'remarkable\\';\\n' +\n      'import linkify from \\'remarkable/linkify\\';\\n' +\n      'new Remarkable().use(linkify)\\n'\n    );\n  }\n\n  this.inline   = new ParserInline();\n  this.block    = new ParserBlock();\n  this.core     = new Core();\n  this.renderer = new Renderer();\n  this.ruler    = new Ruler();\n\n  this.options  = {};\n  this.configure(config[preset]);\n  this.set(options || {});\n}\n\n/**\n * Set options as an alternative to passing them\n * to the constructor.\n *\n * ```js\n * md.set({typographer: true});\n * ```\n * @param {Object} `options`\n * @api public\n */\n\nRemarkable.prototype.set = function (options) {\n  assign(this.options, options);\n};\n\n/**\n * Batch loader for components rules states, and options\n *\n * @param  {Object} `presets`\n */\n\nRemarkable.prototype.configure = function (presets) {\n  var self = this;\n\n  if (!presets) { throw new Error('Wrong `remarkable` preset, check name/content'); }\n  if (presets.options) { self.set(presets.options); }\n  if (presets.components) {\n    Object.keys(presets.components).forEach(function (name) {\n      if (presets.components[name].rules) {\n        self[name].ruler.enable(presets.components[name].rules, true);\n      }\n    });\n  }\n};\n\n/**\n * Use a plugin.\n *\n * ```js\n * var md = new Remarkable();\n *\n * md.use(plugin1)\n *   .use(plugin2, opts)\n *   .use(plugin3);\n * ```\n *\n * @param  {Function} `plugin`\n * @param  {Object} `options`\n * @return {Object} `Remarkable` for chaining\n */\n\nRemarkable.prototype.use = function (plugin, options) {\n  plugin(this, options);\n  return this;\n};\n\n\n/**\n * Parse the input `string` and return a tokens array.\n * Modifies `env` with definitions data.\n *\n * @param  {String} `string`\n * @param  {Object} `env`\n * @return {Array} Array of tokens\n */\n\nRemarkable.prototype.parse = function (str, env) {\n  var state = new StateCore(this, str, env);\n  this.core.process(state);\n  return state.tokens;\n};\n\n/**\n * The main `.render()` method that does all the magic :)\n *\n * @param  {String} `string`\n * @param  {Object} `env`\n * @return {String} Rendered HTML.\n */\n\nRemarkable.prototype.render = function (str, env) {\n  env = env || {};\n  return this.renderer.render(this.parse(str, env), this.options, env);\n};\n\n/**\n * Parse the given content `string` as a single string.\n *\n * @param  {String} `string`\n * @param  {Object} `env`\n * @return {Array} Array of tokens\n */\n\nRemarkable.prototype.parseInline = function (str, env) {\n  var state = new StateCore(this, str, env);\n  state.inlineMode = true;\n  this.core.process(state);\n  return state.tokens;\n};\n\n/**\n * Render a single content `string`, without wrapping it\n * to paragraphs\n *\n * @param  {String} `str`\n * @param  {Object} `env`\n * @return {String}\n */\n\nRemarkable.prototype.renderInline = function (str, env) {\n  env = env || {};\n  return this.renderer.render(this.parseInline(str, env), this.options, env);\n};\n\nexport { Remarkable, utils };\n", "/**\n * Assigns (shallow copies) the properties of `src` onto `dest`, if the\n * corresponding property on `dest` === `undefined`.\n *\n * @param {Object} dest The destination object.\n * @param {Object} src The source object.\n * @return {Object} The destination object (`dest`)\n */\nexport function defaults(dest, src) {\n    for (var prop in src) {\n        if (src.hasOwnProperty(prop) && dest[prop] === undefined) {\n            dest[prop] = src[prop];\n        }\n    }\n    return dest;\n}\n/**\n * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the\n * end of the string (by default, two periods: '..'). If the `str` length does not exceed\n * `len`, the string will be returned unchanged.\n *\n * @param {String} str The string to truncate and add an ellipsis to.\n * @param {Number} truncateLen The length to truncate the string at.\n * @param {String} [ellipsisChars=...] The ellipsis character(s) to add to the end of `str`\n *   when truncated. Defaults to '...'\n */\nexport function ellipsis(str, truncateLen, ellipsisChars) {\n    var ellipsisLength;\n    if (str.length > truncateLen) {\n        if (ellipsisChars == null) {\n            ellipsisChars = '&hellip;';\n            ellipsisLength = 3;\n        }\n        else {\n            ellipsisLength = ellipsisChars.length;\n        }\n        str = str.substring(0, truncateLen - ellipsisLength) + ellipsisChars;\n    }\n    return str;\n}\n/**\n * Supports `Array.prototype.indexOf()` functionality for old IE (IE8 and below).\n *\n * @param {Array} arr The array to find an element of.\n * @param {*} element The element to find in the array, and return the index of.\n * @return {Number} The index of the `element`, or -1 if it was not found.\n */\nexport function indexOf(arr, element) {\n    // @ts-ignore - As far as TypeScript is concerned, this method will always\n    // exist (lowest \"lib\" in TS is \"ES5\"). Hence we need to ignore this error\n    // to support IE8 which only implements ES3 and doesn't have this method\n    if (Array.prototype.indexOf) {\n        return arr.indexOf(element);\n    }\n    else {\n        for (var i = 0, len = arr.length; i < len; i++) {\n            if (arr[i] === element)\n                return i;\n        }\n        return -1;\n    }\n}\n/**\n * Removes array elements based on a filtering function. Mutates the input\n * array.\n *\n * Using this instead of the ES5 Array.prototype.filter() function, to allow\n * Autolinker compatibility with IE8, and also to prevent creating many new\n * arrays in memory for filtering.\n *\n * @param {Array} arr The array to remove elements from. This array is\n *   mutated.\n * @param {Function} fn A function which should return `true` to\n *   remove an element.\n * @return {Array} The mutated input `arr`.\n */\nexport function remove(arr, fn) {\n    for (var i = arr.length - 1; i >= 0; i--) {\n        if (fn(arr[i]) === true) {\n            arr.splice(i, 1);\n        }\n    }\n}\n/**\n * Performs the functionality of what modern browsers do when `String.prototype.split()` is called\n * with a regular expression that contains capturing parenthesis.\n *\n * For example:\n *\n *     // Modern browsers:\n *     \"a,b,c\".split( /(,)/ );  // --> [ 'a', ',', 'b', ',', 'c' ]\n *\n *     // Old IE (including IE8):\n *     \"a,b,c\".split( /(,)/ );  // --> [ 'a', 'b', 'c' ]\n *\n * This method emulates the functionality of modern browsers for the old IE case.\n *\n * @param {String} str The string to split.\n * @param {RegExp} splitRegex The regular expression to split the input `str` on. The splitting\n *   character(s) will be spliced into the array, as in the \"modern browsers\" example in the\n *   description of this method.\n *   Note #1: the supplied regular expression **must** have the 'g' flag specified.\n *   Note #2: for simplicity's sake, the regular expression does not need\n *   to contain capturing parenthesis - it will be assumed that any match has them.\n * @return {String[]} The split array of strings, with the splitting character(s) included.\n */\nexport function splitAndCapture(str, splitRegex) {\n    if (!splitRegex.global)\n        throw new Error(\"`splitRegex` must have the 'g' flag set\");\n    var result = [], lastIdx = 0, match;\n    while (match = splitRegex.exec(str)) {\n        result.push(str.substring(lastIdx, match.index));\n        result.push(match[0]); // push the splitting char(s)\n        lastIdx = match.index + match[0].length;\n    }\n    result.push(str.substring(lastIdx));\n    return result;\n}\n/**\n * Function that should never be called but is used to check that every\n * enum value is handled using TypeScript's 'never' type.\n */\nexport function throwUnhandledCaseError(theValue) {\n    throw new Error(\"Unhandled case for value: '\" + theValue + \"'\");\n}\n\n//# sourceMappingURL=utils.js.map\n", "import { indexOf } from \"./utils\";\n/**\n * @class Autolinker.HtmlTag\n * @extends Object\n *\n * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically.\n *\n * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use\n * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}.\n *\n * ## Examples\n *\n * Example instantiation:\n *\n *     var tag = new Autolinker.HtmlTag( {\n *         tagName : 'a',\n *         attrs   : { 'href': 'http://google.com', 'class': 'external-link' },\n *         innerHtml : 'Google'\n *     } );\n *\n *     tag.toAnchorString();  // <a href=\"http://google.com\" class=\"external-link\">Google</a>\n *\n *     // Individual accessor methods\n *     tag.getTagName();                 // 'a'\n *     tag.getAttr( 'href' );            // 'http://google.com'\n *     tag.hasClass( 'external-link' );  // true\n *\n *\n * Using mutator methods (which may be used in combination with instantiation config properties):\n *\n *     var tag = new Autolinker.HtmlTag();\n *     tag.setTagName( 'a' );\n *     tag.setAttr( 'href', 'http://google.com' );\n *     tag.addClass( 'external-link' );\n *     tag.setInnerHtml( 'Google' );\n *\n *     tag.getTagName();                 // 'a'\n *     tag.getAttr( 'href' );            // 'http://google.com'\n *     tag.hasClass( 'external-link' );  // true\n *\n *     tag.toAnchorString();  // <a href=\"http://google.com\" class=\"external-link\">Google</a>\n *\n *\n * ## Example use within a {@link Autolinker#replaceFn replaceFn}\n *\n *     var html = Autolinker.link( \"Test google.com\", {\n *         replaceFn : function( match ) {\n *             var tag = match.buildTag();  // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text\n *             tag.setAttr( 'rel', 'nofollow' );\n *\n *             return tag;\n *         }\n *     } );\n *\n *     // generated html:\n *     //   Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n *\n *\n * ## Example use with a new tag for the replacement\n *\n *     var html = Autolinker.link( \"Test google.com\", {\n *         replaceFn : function( match ) {\n *             var tag = new Autolinker.HtmlTag( {\n *                 tagName : 'button',\n *                 attrs   : { 'title': 'Load URL: ' + match.getAnchorHref() },\n *                 innerHtml : 'Load URL: ' + match.getAnchorText()\n *             } );\n *\n *             return tag;\n *         }\n *     } );\n *\n *     // generated html:\n *     //   Test <button title=\"Load URL: http://google.com\">Load URL: google.com</button>\n */\nvar HtmlTag = /** @class */ (function () {\n    /**\n     * @method constructor\n     * @param {Object} [cfg] The configuration properties for this class, in an Object (map)\n     */\n    function HtmlTag(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        /**\n         * @cfg {String} tagName\n         *\n         * The tag name. Ex: 'a', 'button', etc.\n         *\n         * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toAnchorString}\n         * is executed.\n         */\n        this.tagName = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Object.<String, String>} attrs\n         *\n         * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the\n         * values are the attribute values.\n         */\n        this.attrs = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} innerHTML\n         *\n         * The inner HTML for the tag.\n         */\n        this.innerHTML = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @protected\n         * @property {RegExp} whitespaceRegex\n         *\n         * Regular expression used to match whitespace in a string of CSS classes.\n         */\n        this.whitespaceRegex = /\\s+/; // default value just to get the above doc comment in the ES5 output and documentation generator\n        this.tagName = cfg.tagName || '';\n        this.attrs = cfg.attrs || {};\n        this.innerHTML = cfg.innerHtml || cfg.innerHTML || ''; // accept either the camelCased form or the fully capitalized acronym as in the DOM\n    }\n    /**\n     * Sets the tag name that will be used to generate the tag with.\n     *\n     * @param {String} tagName\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setTagName = function (tagName) {\n        this.tagName = tagName;\n        return this;\n    };\n    /**\n     * Retrieves the tag name.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.getTagName = function () {\n        return this.tagName || '';\n    };\n    /**\n     * Sets an attribute on the HtmlTag.\n     *\n     * @param {String} attrName The attribute name to set.\n     * @param {String} attrValue The attribute value to set.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setAttr = function (attrName, attrValue) {\n        var tagAttrs = this.getAttrs();\n        tagAttrs[attrName] = attrValue;\n        return this;\n    };\n    /**\n     * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`.\n     *\n     * @param {String} attrName The attribute name to retrieve.\n     * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag.\n     */\n    HtmlTag.prototype.getAttr = function (attrName) {\n        return this.getAttrs()[attrName];\n    };\n    /**\n     * Sets one or more attributes on the HtmlTag.\n     *\n     * @param {Object.<String, String>} attrs A key/value Object (map) of the attributes to set.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setAttrs = function (attrs) {\n        Object.assign(this.getAttrs(), attrs);\n        return this;\n    };\n    /**\n     * Retrieves the attributes Object (map) for the HtmlTag.\n     *\n     * @return {Object.<String, String>} A key/value object of the attributes for the HtmlTag.\n     */\n    HtmlTag.prototype.getAttrs = function () {\n        return this.attrs || (this.attrs = {});\n    };\n    /**\n     * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag.\n     *\n     * @param {String} cssClass One or more space-separated CSS classes to set (overwrite).\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setClass = function (cssClass) {\n        return this.setAttr('class', cssClass);\n    };\n    /**\n     * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes.\n     *\n     * @param {String} cssClass One or more space-separated CSS classes to add.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.addClass = function (cssClass) {\n        var classAttr = this.getClass(), whitespaceRegex = this.whitespaceRegex, classes = (!classAttr) ? [] : classAttr.split(whitespaceRegex), newClasses = cssClass.split(whitespaceRegex), newClass;\n        while (newClass = newClasses.shift()) {\n            if (indexOf(classes, newClass) === -1) {\n                classes.push(newClass);\n            }\n        }\n        this.getAttrs()['class'] = classes.join(\" \");\n        return this;\n    };\n    /**\n     * Convenience method to remove one or more CSS classes from the HtmlTag.\n     *\n     * @param {String} cssClass One or more space-separated CSS classes to remove.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.removeClass = function (cssClass) {\n        var classAttr = this.getClass(), whitespaceRegex = this.whitespaceRegex, classes = (!classAttr) ? [] : classAttr.split(whitespaceRegex), removeClasses = cssClass.split(whitespaceRegex), removeClass;\n        while (classes.length && (removeClass = removeClasses.shift())) {\n            var idx = indexOf(classes, removeClass);\n            if (idx !== -1) {\n                classes.splice(idx, 1);\n            }\n        }\n        this.getAttrs()['class'] = classes.join(\" \");\n        return this;\n    };\n    /**\n     * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when\n     * there are multiple.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.getClass = function () {\n        return this.getAttrs()['class'] || \"\";\n    };\n    /**\n     * Convenience method to check if the tag has a CSS class or not.\n     *\n     * @param {String} cssClass The CSS class to check for.\n     * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise.\n     */\n    HtmlTag.prototype.hasClass = function (cssClass) {\n        return (' ' + this.getClass() + ' ').indexOf(' ' + cssClass + ' ') !== -1;\n    };\n    /**\n     * Sets the inner HTML for the tag.\n     *\n     * @param {String} html The inner HTML to set.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setInnerHTML = function (html) {\n        this.innerHTML = html;\n        return this;\n    };\n    /**\n     * Backwards compatibility method name.\n     *\n     * @param {String} html The inner HTML to set.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setInnerHtml = function (html) {\n        return this.setInnerHTML(html);\n    };\n    /**\n     * Retrieves the inner HTML for the tag.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.getInnerHTML = function () {\n        return this.innerHTML || \"\";\n    };\n    /**\n     * Backward compatibility method name.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.getInnerHtml = function () {\n        return this.getInnerHTML();\n    };\n    /**\n     * Override of superclass method used to generate the HTML string for the tag.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.toAnchorString = function () {\n        var tagName = this.getTagName(), attrsStr = this.buildAttrsStr();\n        attrsStr = (attrsStr) ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes\n        return ['<', tagName, attrsStr, '>', this.getInnerHtml(), '</', tagName, '>'].join(\"\");\n    };\n    /**\n     * Support method for {@link #toAnchorString}, returns the string space-separated key=\"value\" pairs, used to populate\n     * the stringified HtmlTag.\n     *\n     * @protected\n     * @return {String} Example return: `attr1=\"value1\" attr2=\"value2\"`\n     */\n    HtmlTag.prototype.buildAttrsStr = function () {\n        if (!this.attrs)\n            return \"\"; // no `attrs` Object (map) has been set, return empty string\n        var attrs = this.getAttrs(), attrsArr = [];\n        for (var prop in attrs) {\n            if (attrs.hasOwnProperty(prop)) {\n                attrsArr.push(prop + '=\"' + attrs[prop] + '\"');\n            }\n        }\n        return attrsArr.join(\" \");\n    };\n    return HtmlTag;\n}());\nexport { HtmlTag };\n\n//# sourceMappingURL=html-tag.js.map\n", "import { HtmlTag } from \"./html-tag\";\nimport { truncateSmart } from \"./truncate/truncate-smart\";\nimport { truncateMiddle } from \"./truncate/truncate-middle\";\nimport { truncateEnd } from \"./truncate/truncate-end\";\n/**\n * @protected\n * @class Autolinker.AnchorTagBuilder\n * @extends Object\n *\n * Builds anchor (&lt;a&gt;) tags for the Autolinker utility when a match is\n * found.\n *\n * Normally this class is instantiated, configured, and used internally by an\n * {@link Autolinker} instance, but may actually be used indirectly in a\n * {@link Autolinker#replaceFn replaceFn} to create {@link Autolinker.HtmlTag HtmlTag}\n * instances which may be modified before returning from the\n * {@link Autolinker#replaceFn replaceFn}. For example:\n *\n *     var html = Autolinker.link( \"Test google.com\", {\n *         replaceFn : function( match ) {\n *             var tag = match.buildTag();  // returns an {@link Autolinker.HtmlTag} instance\n *             tag.setAttr( 'rel', 'nofollow' );\n *\n *             return tag;\n *         }\n *     } );\n *\n *     // generated html:\n *     //   Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n */\nvar AnchorTagBuilder = /** @class */ (function () {\n    /**\n     * @method constructor\n     * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map).\n     */\n    function AnchorTagBuilder(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        /**\n         * @cfg {Boolean} newWindow\n         * @inheritdoc Autolinker#newWindow\n         */\n        this.newWindow = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Object} truncate\n         * @inheritdoc Autolinker#truncate\n         */\n        this.truncate = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} className\n         * @inheritdoc Autolinker#className\n         */\n        this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        this.newWindow = cfg.newWindow || false;\n        this.truncate = cfg.truncate || {};\n        this.className = cfg.className || '';\n    }\n    /**\n     * Generates the actual anchor (&lt;a&gt;) tag to use in place of the\n     * matched text, via its `match` object.\n     *\n     * @param {Autolinker.match.Match} match The Match instance to generate an\n     *   anchor tag from.\n     * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag.\n     */\n    AnchorTagBuilder.prototype.build = function (match) {\n        return new HtmlTag({\n            tagName: 'a',\n            attrs: this.createAttrs(match),\n            innerHtml: this.processAnchorText(match.getAnchorText())\n        });\n    };\n    /**\n     * Creates the Object (map) of the HTML attributes for the anchor (&lt;a&gt;)\n     *   tag being generated.\n     *\n     * @protected\n     * @param {Autolinker.match.Match} match The Match instance to generate an\n     *   anchor tag from.\n     * @return {Object} A key/value Object (map) of the anchor tag's attributes.\n     */\n    AnchorTagBuilder.prototype.createAttrs = function (match) {\n        var attrs = {\n            'href': match.getAnchorHref() // we'll always have the `href` attribute\n        };\n        var cssClass = this.createCssClass(match);\n        if (cssClass) {\n            attrs['class'] = cssClass;\n        }\n        if (this.newWindow) {\n            attrs['target'] = \"_blank\";\n            attrs['rel'] = \"noopener noreferrer\"; // Issue #149. See https://mathiasbynens.github.io/rel-noopener/\n        }\n        if (this.truncate) {\n            if (this.truncate.length && this.truncate.length < match.getAnchorText().length) {\n                attrs['title'] = match.getAnchorHref();\n            }\n        }\n        return attrs;\n    };\n    /**\n     * Creates the CSS class that will be used for a given anchor tag, based on\n     * the `matchType` and the {@link #className} config.\n     *\n     * Example returns:\n     *\n     * - \"\"                                      // no {@link #className}\n     * - \"myLink myLink-url\"                     // url match\n     * - \"myLink myLink-email\"                   // email match\n     * - \"myLink myLink-phone\"                   // phone match\n     * - \"myLink myLink-hashtag\"                 // hashtag match\n     * - \"myLink myLink-mention myLink-twitter\"  // mention match with Twitter service\n     *\n     * @protected\n     * @param {Autolinker.match.Match} match The Match instance to generate an\n     *   anchor tag from.\n     * @return {String} The CSS class string for the link. Example return:\n     *   \"myLink myLink-url\". If no {@link #className} was configured, returns\n     *   an empty string.\n     */\n    AnchorTagBuilder.prototype.createCssClass = function (match) {\n        var className = this.className;\n        if (!className) {\n            return \"\";\n        }\n        else {\n            var returnClasses = [className], cssClassSuffixes = match.getCssClassSuffixes();\n            for (var i = 0, len = cssClassSuffixes.length; i < len; i++) {\n                returnClasses.push(className + '-' + cssClassSuffixes[i]);\n            }\n            return returnClasses.join(' ');\n        }\n    };\n    /**\n     * Processes the `anchorText` by truncating the text according to the\n     * {@link #truncate} config.\n     *\n     * @private\n     * @param {String} anchorText The anchor tag's text (i.e. what will be\n     *   displayed).\n     * @return {String} The processed `anchorText`.\n     */\n    AnchorTagBuilder.prototype.processAnchorText = function (anchorText) {\n        anchorText = this.doTruncate(anchorText);\n        return anchorText;\n    };\n    /**\n     * Performs the truncation of the `anchorText` based on the {@link #truncate}\n     * option. If the `anchorText` is longer than the length specified by the\n     * {@link #truncate} option, the truncation is performed based on the\n     * `location` property. See {@link #truncate} for details.\n     *\n     * @private\n     * @param {String} anchorText The anchor tag's text (i.e. what will be\n     *   displayed).\n     * @return {String} The truncated anchor text.\n     */\n    AnchorTagBuilder.prototype.doTruncate = function (anchorText) {\n        var truncate = this.truncate;\n        if (!truncate || !truncate.length)\n            return anchorText;\n        var truncateLength = truncate.length, truncateLocation = truncate.location;\n        if (truncateLocation === 'smart') {\n            return truncateSmart(anchorText, truncateLength);\n        }\n        else if (truncateLocation === 'middle') {\n            return truncateMiddle(anchorText, truncateLength);\n        }\n        else {\n            return truncateEnd(anchorText, truncateLength);\n        }\n    };\n    return AnchorTagBuilder;\n}());\nexport { AnchorTagBuilder };\n\n//# sourceMappingURL=anchor-tag-builder.js.map\n", "/**\n * Date: 2015-10-05\n * Author: Kasper Søfren <soefritz@gmail.com> (https://github.com/kafoso)\n *\n * A truncation feature, where the ellipsis will be placed at a section within\n * the URL making it still somewhat human readable.\n *\n * @param {String} url\t\t\t\t\t\t A URL.\n * @param {Number} truncateLen\t\t The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars\t The characters to place within the url, e.g. \"...\".\n * @return {String} The truncated URL.\n */\nexport function truncateSmart(url, truncateLen, ellipsisChars) {\n    var ellipsisLengthBeforeParsing;\n    var ellipsisLength;\n    if (ellipsisChars == null) {\n        ellipsisChars = '&hellip;';\n        ellipsisLength = 3;\n        ellipsisLengthBeforeParsing = 8;\n    }\n    else {\n        ellipsisLength = ellipsisChars.length;\n        ellipsisLengthBeforeParsing = ellipsisChars.length;\n    }\n    var parse_url = function (url) {\n        var urlObj = {};\n        var urlSub = url;\n        var match = urlSub.match(/^([a-z]+):\\/\\//i);\n        if (match) {\n            urlObj.scheme = match[1];\n            urlSub = urlSub.substr(match[0].length);\n        }\n        match = urlSub.match(/^(.*?)(?=(\\?|#|\\/|$))/i);\n        if (match) {\n            urlObj.host = match[1];\n            urlSub = urlSub.substr(match[0].length);\n        }\n        match = urlSub.match(/^\\/(.*?)(?=(\\?|#|$))/i);\n        if (match) {\n            urlObj.path = match[1];\n            urlSub = urlSub.substr(match[0].length);\n        }\n        match = urlSub.match(/^\\?(.*?)(?=(#|$))/i);\n        if (match) {\n            urlObj.query = match[1];\n            urlSub = urlSub.substr(match[0].length);\n        }\n        match = urlSub.match(/^#(.*?)$/i);\n        if (match) {\n            urlObj.fragment = match[1];\n            //urlSub = urlSub.substr(match[0].length);  -- not used. Uncomment if adding another block.\n        }\n        return urlObj;\n    };\n    var buildUrl = function (urlObj) {\n        var url = \"\";\n        if (urlObj.scheme && urlObj.host) {\n            url += urlObj.scheme + \"://\";\n        }\n        if (urlObj.host) {\n            url += urlObj.host;\n        }\n        if (urlObj.path) {\n            url += \"/\" + urlObj.path;\n        }\n        if (urlObj.query) {\n            url += \"?\" + urlObj.query;\n        }\n        if (urlObj.fragment) {\n            url += \"#\" + urlObj.fragment;\n        }\n        return url;\n    };\n    var buildSegment = function (segment, remainingAvailableLength) {\n        var remainingAvailableLengthHalf = remainingAvailableLength / 2, startOffset = Math.ceil(remainingAvailableLengthHalf), endOffset = (-1) * Math.floor(remainingAvailableLengthHalf), end = \"\";\n        if (endOffset < 0) {\n            end = segment.substr(endOffset);\n        }\n        return segment.substr(0, startOffset) + ellipsisChars + end;\n    };\n    if (url.length <= truncateLen) {\n        return url;\n    }\n    var availableLength = truncateLen - ellipsisLength;\n    var urlObj = parse_url(url);\n    // Clean up the URL\n    if (urlObj.query) {\n        var matchQuery = urlObj.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);\n        if (matchQuery) {\n            // Malformed URL; two or more \"?\". Removed any content behind the 2nd.\n            urlObj.query = urlObj.query.substr(0, matchQuery[1].length);\n            url = buildUrl(urlObj);\n        }\n    }\n    if (url.length <= truncateLen) {\n        return url;\n    }\n    if (urlObj.host) {\n        urlObj.host = urlObj.host.replace(/^www\\./, \"\");\n        url = buildUrl(urlObj);\n    }\n    if (url.length <= truncateLen) {\n        return url;\n    }\n    // Process and build the URL\n    var str = \"\";\n    if (urlObj.host) {\n        str += urlObj.host;\n    }\n    if (str.length >= availableLength) {\n        if (urlObj.host.length == truncateLen) {\n            return (urlObj.host.substr(0, (truncateLen - ellipsisLength)) + ellipsisChars).substr(0, availableLength + ellipsisLengthBeforeParsing);\n        }\n        return buildSegment(str, availableLength).substr(0, availableLength + ellipsisLengthBeforeParsing);\n    }\n    var pathAndQuery = \"\";\n    if (urlObj.path) {\n        pathAndQuery += \"/\" + urlObj.path;\n    }\n    if (urlObj.query) {\n        pathAndQuery += \"?\" + urlObj.query;\n    }\n    if (pathAndQuery) {\n        if ((str + pathAndQuery).length >= availableLength) {\n            if ((str + pathAndQuery).length == truncateLen) {\n                return (str + pathAndQuery).substr(0, truncateLen);\n            }\n            var remainingAvailableLength = availableLength - str.length;\n            return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n        }\n        else {\n            str += pathAndQuery;\n        }\n    }\n    if (urlObj.fragment) {\n        var fragment = \"#\" + urlObj.fragment;\n        if ((str + fragment).length >= availableLength) {\n            if ((str + fragment).length == truncateLen) {\n                return (str + fragment).substr(0, truncateLen);\n            }\n            var remainingAvailableLength2 = availableLength - str.length;\n            return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n        }\n        else {\n            str += fragment;\n        }\n    }\n    if (urlObj.scheme && urlObj.host) {\n        var scheme = urlObj.scheme + \"://\";\n        if ((str + scheme).length < availableLength) {\n            return (scheme + str).substr(0, truncateLen);\n        }\n    }\n    if (str.length <= truncateLen) {\n        return str;\n    }\n    var end = \"\";\n    if (availableLength > 0) {\n        end = str.substr((-1) * Math.floor(availableLength / 2));\n    }\n    return (str.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\n\n//# sourceMappingURL=truncate-smart.js.map\n", "/**\n * Date: 2015-10-05\n * Author: Kasper Søfren <soefritz@gmail.com> (https://github.com/kafoso)\n *\n * A truncation feature, where the ellipsis will be placed in the dead-center of the URL.\n *\n * @param {String} url             A URL.\n * @param {Number} truncateLen     The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars   The characters to place within the url, e.g. \"..\".\n * @return {String} The truncated URL.\n */\nexport function truncateMiddle(url, truncateLen, ellipsisChars) {\n    if (url.length <= truncateLen) {\n        return url;\n    }\n    var ellipsisLengthBeforeParsing;\n    var ellipsisLength;\n    if (ellipsisChars == null) {\n        ellipsisChars = '&hellip;';\n        ellipsisLengthBeforeParsing = 8;\n        ellipsisLength = 3;\n    }\n    else {\n        ellipsisLengthBeforeParsing = ellipsisChars.length;\n        ellipsisLength = ellipsisChars.length;\n    }\n    var availableLength = truncateLen - ellipsisLength;\n    var end = \"\";\n    if (availableLength > 0) {\n        end = url.substr((-1) * Math.floor(availableLength / 2));\n    }\n    return (url.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\n\n//# sourceMappingURL=truncate-middle.js.map\n", "import { ellipsis } from \"../utils\";\n/**\n * A truncation feature where the ellipsis will be placed at the end of the URL.\n *\n * @param {String} anchorText\n * @param {Number} truncateLen The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars The characters to place within the url, e.g. \"..\".\n * @return {String} The truncated URL.\n */\nexport function truncateEnd(anchorText, truncateLen, ellipsisChars) {\n    return ellipsis(anchorText, truncateLen, ellipsisChars);\n}\n\n//# sourceMappingURL=truncate-end.js.map\n", "/**\n * @abstract\n * @class Autolinker.match.Match\n *\n * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a\n * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match.\n *\n * For example:\n *\n *     var input = \"...\";  // string with URLs, Email Addresses, and Mentions (Twitter, Instagram, Soundcloud)\n *\n *     var linkedText = Autolinker.link( input, {\n *         replaceFn : function( match ) {\n *             console.log( \"href = \", match.getAnchorHref() );\n *             console.log( \"text = \", match.getAnchorText() );\n *\n *             switch( match.getType() ) {\n *                 case 'url' :\n *                     console.log( \"url: \", match.getUrl() );\n *\n *                 case 'email' :\n *                     console.log( \"email: \", match.getEmail() );\n *\n *                 case 'mention' :\n *                     console.log( \"mention: \", match.getMention() );\n *             }\n *         }\n *     } );\n *\n * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}.\n */\nvar Match = /** @class */ (function () {\n    /**\n     * @member Autolinker.match.Match\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function Match(cfg) {\n        /**\n         * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\n         *\n         * Reference to the AnchorTagBuilder instance to use to generate an anchor\n         * tag for the Match.\n         */\n        this.__jsduckDummyDocProp = null; // property used just to get the above doc comment into the ES5 output and documentation generator\n        /**\n         * @cfg {String} matchedText (required)\n         *\n         * The original text that was matched by the {@link Autolinker.matcher.Matcher}.\n         */\n        this.matchedText = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Number} offset (required)\n         *\n         * The offset of where the match was made in the input string.\n         */\n        this.offset = 0; // default value just to get the above doc comment in the ES5 output and documentation generator\n        this.tagBuilder = cfg.tagBuilder;\n        this.matchedText = cfg.matchedText;\n        this.offset = cfg.offset;\n    }\n    /**\n     * Returns the original text that was matched.\n     *\n     * @return {String}\n     */\n    Match.prototype.getMatchedText = function () {\n        return this.matchedText;\n    };\n    /**\n     * Sets the {@link #offset} of where the match was made in the input string.\n     *\n     * A {@link Autolinker.matcher.Matcher} will be fed only HTML text nodes,\n     * and will therefore set an original offset that is relative to the HTML\n     * text node itself. However, we want this offset to be relative to the full\n     * HTML input string, and thus if using {@link Autolinker#parse} (rather\n     * than calling a {@link Autolinker.matcher.Matcher} directly), then this\n     * offset is corrected after the Matcher itself has done its job.\n     *\n     * @param {Number} offset\n     */\n    Match.prototype.setOffset = function (offset) {\n        this.offset = offset;\n    };\n    /**\n     * Returns the offset of where the match was made in the input string. This\n     * is the 0-based index of the match.\n     *\n     * @return {Number}\n     */\n    Match.prototype.getOffset = function () {\n        return this.offset;\n    };\n    /**\n     * Returns the CSS class suffix(es) for this match.\n     *\n     * A CSS class suffix is appended to the {@link Autolinker#className} in\n     * the {@link Autolinker.AnchorTagBuilder} when a match is translated into\n     * an anchor tag.\n     *\n     * For example, if {@link Autolinker#className} was configured as 'myLink',\n     * and this method returns `[ 'url' ]`, the final class name of the element\n     * will become: 'myLink myLink-url'.\n     *\n     * The match may provide multiple CSS class suffixes to be appended to the\n     * {@link Autolinker#className} in order to facilitate better styling\n     * options for different match criteria. See {@link Autolinker.match.Mention}\n     * for an example.\n     *\n     * By default, this method returns a single array with the match's\n     * {@link #getType type} name, but may be overridden by subclasses.\n     *\n     * @return {String[]}\n     */\n    Match.prototype.getCssClassSuffixes = function () {\n        return [this.getType()];\n    };\n    /**\n     * Builds and returns an {@link Autolinker.HtmlTag} instance based on the\n     * Match.\n     *\n     * This can be used to easily generate anchor tags from matches, and either\n     * return their HTML string, or modify them before doing so.\n     *\n     * Example Usage:\n     *\n     *     var tag = match.buildTag();\n     *     tag.addClass( 'cordova-link' );\n     *     tag.setAttr( 'target', '_system' );\n     *\n     *     tag.toAnchorString();  // <a href=\"http://google.com\" class=\"cordova-link\" target=\"_system\">Google</a>\n     *\n     * Example Usage in {@link Autolinker#replaceFn}:\n     *\n     *     var html = Autolinker.link( \"Test google.com\", {\n     *         replaceFn : function( match ) {\n     *             var tag = match.buildTag();  // returns an {@link Autolinker.HtmlTag} instance\n     *             tag.setAttr( 'rel', 'nofollow' );\n     *\n     *             return tag;\n     *         }\n     *     } );\n     *\n     *     // generated html:\n     *     //   Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n     */\n    Match.prototype.buildTag = function () {\n        return this.tagBuilder.build(this);\n    };\n    return Match;\n}());\nexport { Match };\n\n//# sourceMappingURL=match.js.map\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport 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}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport 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};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n", "import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Email\n * @extends Autolinker.match.Match\n *\n * Represents a Email match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar EmailMatch = /** @class */ (function (_super) {\n    __extends(EmailMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function EmailMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} email (required)\n         *\n         * The email address that was matched.\n         */\n        _this.email = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        _this.email = cfg.email;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of EmailMatch, returns 'email'.\n     *\n     * @return {String}\n     */\n    EmailMatch.prototype.getType = function () {\n        return 'email';\n    };\n    /**\n     * Returns the email address that was matched.\n     *\n     * @return {String}\n     */\n    EmailMatch.prototype.getEmail = function () {\n        return this.email;\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    EmailMatch.prototype.getAnchorHref = function () {\n        return 'mailto:' + this.email;\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    EmailMatch.prototype.getAnchorText = function () {\n        return this.email;\n    };\n    return EmailMatch;\n}(Match));\nexport { EmailMatch };\n\n//# sourceMappingURL=email-match.js.map\n", "import { __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericCharsStr, alphaNumericAndMarksCharsStr, getDomainNameStr } from \"../regex-lib\";\nimport { tldRegex } from \"./tld-regex\";\nimport { UrlMatch } from \"../match/url-match\";\nimport { UrlMatchValidator } from \"./url-match-validator\";\n// RegExp objects which are shared by all instances of UrlMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating UrlMatcher and its RegExp \n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314). \n// See descriptions of the properties where they are used for details about them\nvar matcherRegex = (function () {\n    var schemeRegex = /(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\\/\\/)(?!\\d+\\/?)(?:\\/\\/)?)/, // match protocol, allow in format \"http://\" or \"mailto:\". However, do not match the first part of something like 'link:http://www.google.com' (i.e. don't match \"link:\"). Also, make sure we don't interpret 'google.com:8000' as if 'google.com' was a protocol here (i.e. ignore a trailing port number in this regex)\n    wwwRegex = /(?:www\\.)/, // starting with 'www.'\n    // Allow optional path, query string, and hash anchor, not ending in the following characters: \"?!:,.;\"\n    // http://blog.codinghorror.com/the-problem-with-urls/\n    urlSuffixRegex = new RegExp('[/?#](?:[' + alphaNumericAndMarksCharsStr + '\\\\-+&@#/%=~_()|\\'$*\\\\[\\\\]{}?!:,.;^\\u2713]*[' + alphaNumericAndMarksCharsStr + '\\\\-+&@#/%=~_()|\\'$*\\\\[\\\\]{}\\u2713])?');\n    return new RegExp([\n        '(?:',\n        '(',\n        schemeRegex.source,\n        getDomainNameStr(2),\n        ')',\n        '|',\n        '(',\n        '(//)?',\n        wwwRegex.source,\n        getDomainNameStr(6),\n        ')',\n        '|',\n        '(',\n        '(//)?',\n        getDomainNameStr(10) + '\\\\.',\n        tldRegex.source,\n        '(?![-' + alphaNumericCharsStr + '])',\n        ')',\n        ')',\n        '(?::[0-9]+)?',\n        '(?:' + urlSuffixRegex.source + ')?' // match for path, query string, and/or hash anchor - optional\n    ].join(\"\"), 'gi');\n})();\nvar wordCharRegExp = new RegExp('[' + alphaNumericAndMarksCharsStr + ']');\n/**\n * @class Autolinker.matcher.Url\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find URL matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details.\n */\nvar UrlMatcher = /** @class */ (function (_super) {\n    __extends(UrlMatcher, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match instance,\n     *   specified in an Object (map).\n     */\n    function UrlMatcher(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {Object} stripPrefix (required)\n         *\n         * The Object form of {@link Autolinker#cfg-stripPrefix}.\n         */\n        _this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} stripTrailingSlash (required)\n         * @inheritdoc Autolinker#stripTrailingSlash\n         */\n        _this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} decodePercentEncoding (required)\n         * @inheritdoc Autolinker#decodePercentEncoding\n         */\n        _this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @protected\n         * @property {RegExp} matcherRegex\n         *\n         * The regular expression to match URLs with an optional scheme, port\n         * number, path, query string, and hash anchor.\n         *\n         * Example matches:\n         *\n         *     http://google.com\n         *     www.google.com\n         *     google.com/path/to/file?q1=1&q2=2#myAnchor\n         *\n         *\n         * This regular expression will have the following capturing groups:\n         *\n         * 1.  Group that matches a scheme-prefixed URL (i.e. 'http://google.com').\n         *     This is used to match scheme URLs with just a single word, such as\n         *     'http://localhost', where we won't double check that the domain name\n         *     has at least one dot ('.') in it.\n         * 2.  Group that matches a 'www.' prefixed URL. This is only matched if the\n         *     'www.' text was not prefixed by a scheme (i.e.: not prefixed by\n         *     'http://', 'ftp:', etc.)\n         * 3.  A protocol-relative ('//') match for the case of a 'www.' prefixed\n         *     URL. Will be an empty string if it is not a protocol-relative match.\n         *     We need to know the character before the '//' in order to determine\n         *     if it is a valid match or the // was in a string we don't want to\n         *     auto-link.\n         * 4.  Group that matches a known TLD (top level domain), when a scheme\n         *     or 'www.'-prefixed domain is not matched.\n         * 5.  A protocol-relative ('//') match for the case of a known TLD prefixed\n         *     URL. Will be an empty string if it is not a protocol-relative match.\n         *     See #3 for more info.\n         */\n        _this.matcherRegex = matcherRegex;\n        /**\n         * A regular expression to use to check the character before a protocol-relative\n         * URL match. We don't want to match a protocol-relative URL if it is part\n         * of another word.\n         *\n         * For example, we want to match something like \"Go to: //google.com\",\n         * but we don't want to match something like \"abc//google.com\"\n         *\n         * This regular expression is used to test the character before the '//'.\n         *\n         * @protected\n         * @type {RegExp} wordCharRegExp\n         */\n        _this.wordCharRegExp = wordCharRegExp;\n        _this.stripPrefix = cfg.stripPrefix;\n        _this.stripTrailingSlash = cfg.stripTrailingSlash;\n        _this.decodePercentEncoding = cfg.decodePercentEncoding;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    UrlMatcher.prototype.parseMatches = function (text) {\n        var matcherRegex = this.matcherRegex, stripPrefix = this.stripPrefix, stripTrailingSlash = this.stripTrailingSlash, decodePercentEncoding = this.decodePercentEncoding, tagBuilder = this.tagBuilder, matches = [], match;\n        var _loop_1 = function () {\n            var matchStr = match[0], schemeUrlMatch = match[1], wwwUrlMatch = match[4], wwwProtocolRelativeMatch = match[5], \n            //tldUrlMatch = match[ 8 ],  -- not needed at the moment\n            tldProtocolRelativeMatch = match[9], offset = match.index, protocolRelativeMatch = wwwProtocolRelativeMatch || tldProtocolRelativeMatch, prevChar = text.charAt(offset - 1);\n            if (!UrlMatchValidator.isValid(matchStr, schemeUrlMatch)) {\n                return \"continue\";\n            }\n            // If the match is preceded by an '@' character, then it is either\n            // an email address or a username. Skip these types of matches.\n            if (offset > 0 && prevChar === '@') {\n                return \"continue\";\n            }\n            // If it's a protocol-relative '//' match, but the character before the '//'\n            // was a word character (i.e. a letter/number), then we found the '//' in the\n            // middle of another word (such as \"asdf//asdf.com\"). In this case, skip the\n            // match.\n            if (offset > 0 && protocolRelativeMatch && this_1.wordCharRegExp.test(prevChar)) {\n                return \"continue\";\n            }\n            // If the URL ends with a question mark, don't include the question\n            // mark as part of the URL. We'll assume the question mark was the\n            // end of a sentence, such as: \"Going to google.com?\"\n            if (/\\?$/.test(matchStr)) {\n                matchStr = matchStr.substr(0, matchStr.length - 1);\n            }\n            // Handle a closing parenthesis or square bracket at the end of the \n            // match, and exclude it if there is not a matching open parenthesis \n            // or square bracket in the match itself.\n            if (this_1.matchHasUnbalancedClosingParen(matchStr)) {\n                matchStr = matchStr.substr(0, matchStr.length - 1); // remove the trailing \")\"\n            }\n            else {\n                // Handle an invalid character after the TLD\n                var pos = this_1.matchHasInvalidCharAfterTld(matchStr, schemeUrlMatch);\n                if (pos > -1) {\n                    matchStr = matchStr.substr(0, pos); // remove the trailing invalid chars\n                }\n            }\n            // The autolinker accepts many characters in a url's scheme (like `fake://test.com`).\n            // However, in cases where a URL is missing whitespace before an obvious link,\n            // (for example: `nowhitespacehttp://www.test.com`), we only want the match to start\n            // at the http:// part. We will check if the match contains a common scheme and then \n            // shift the match to start from there. \t\t\n            var foundCommonScheme = ['http://', 'https://'].find(function (commonScheme) { return !!schemeUrlMatch && schemeUrlMatch.indexOf(commonScheme) !== -1; });\n            if (foundCommonScheme) {\n                // If we found an overmatched URL, we want to find the index\n                // of where the match should start and shift the match to\n                // start from the beginning of the common scheme\n                var indexOfSchemeStart = matchStr.indexOf(foundCommonScheme);\n                matchStr = matchStr.substr(indexOfSchemeStart);\n                schemeUrlMatch = schemeUrlMatch.substr(indexOfSchemeStart);\n                offset = offset + indexOfSchemeStart;\n            }\n            var urlMatchType = schemeUrlMatch ? 'scheme' : (wwwUrlMatch ? 'www' : 'tld'), protocolUrlMatch = !!schemeUrlMatch;\n            matches.push(new UrlMatch({\n                tagBuilder: tagBuilder,\n                matchedText: matchStr,\n                offset: offset,\n                urlMatchType: urlMatchType,\n                url: matchStr,\n                protocolUrlMatch: protocolUrlMatch,\n                protocolRelativeMatch: !!protocolRelativeMatch,\n                stripPrefix: stripPrefix,\n                stripTrailingSlash: stripTrailingSlash,\n                decodePercentEncoding: decodePercentEncoding,\n            }));\n        };\n        var this_1 = this;\n        while ((match = matcherRegex.exec(text)) !== null) {\n            _loop_1();\n        }\n        return matches;\n    };\n    /**\n     * Determines if a match found has an unmatched closing parenthesis,\n     * square bracket or curly bracket. If so, the symbol will be removed\n     * from the match itself, and appended after the generated anchor tag.\n     *\n     * A match may have an extra closing parenthesis at the end of the match\n     * because the regular expression must include parenthesis for URLs such as\n     * \"wikipedia.com/something_(disambiguation)\", which should be auto-linked.\n     *\n     * However, an extra parenthesis *will* be included when the URL itself is\n     * wrapped in parenthesis, such as in the case of:\n     *     \"(wikipedia.com/something_(disambiguation))\"\n     * In this case, the last closing parenthesis should *not* be part of the\n     * URL itself, and this method will return `true`.\n     *\n     * For square brackets in URLs such as in PHP arrays, the same behavior as\n     * parenthesis discussed above should happen:\n     *     \"[http://www.example.com/foo.php?bar[]=1&bar[]=2&bar[]=3]\"\n     * The closing square bracket should not be part of the URL itself, and this\n     * method will return `true`.\n     *\n     * @protected\n     * @param {String} matchStr The full match string from the {@link #matcherRegex}.\n     * @return {Boolean} `true` if there is an unbalanced closing parenthesis or\n     *   square bracket at the end of the `matchStr`, `false` otherwise.\n     */\n    UrlMatcher.prototype.matchHasUnbalancedClosingParen = function (matchStr) {\n        var endChar = matchStr.charAt(matchStr.length - 1);\n        var startChar;\n        if (endChar === ')') {\n            startChar = '(';\n        }\n        else if (endChar === ']') {\n            startChar = '[';\n        }\n        else if (endChar === '}') {\n            startChar = '{';\n        }\n        else {\n            return false; // not a close parenthesis or square bracket\n        }\n        // Find if there are the same number of open braces as close braces in\n        // the URL string, minus the last character (which we have already \n        // determined to be either ')', ']' or '}'\n        var numOpenBraces = 0;\n        for (var i = 0, len = matchStr.length - 1; i < len; i++) {\n            var char = matchStr.charAt(i);\n            if (char === startChar) {\n                numOpenBraces++;\n            }\n            else if (char === endChar) {\n                numOpenBraces = Math.max(numOpenBraces - 1, 0);\n            }\n        }\n        // If the number of open braces matches the number of close braces in\n        // the URL minus the last character, then the match has *unbalanced*\n        // braces because of the last character. Example of unbalanced braces\n        // from the regex match:\n        //     \"http://example.com?a[]=1]\"\n        if (numOpenBraces === 0) {\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Determine if there's an invalid character after the TLD in a URL. Valid\n     * characters after TLD are ':/?#'. Exclude scheme matched URLs from this\n     * check.\n     *\n     * @protected\n     * @param {String} urlMatch The matched URL, if there was one. Will be an\n     *   empty string if the match is not a URL match.\n     * @param {String} schemeUrlMatch The match URL string for a scheme\n     *   match. Ex: 'http://yahoo.com'. This is used to match something like\n     *   'http://localhost', where we won't double check that the domain name\n     *   has at least one '.' in it.\n     * @return {Number} the position where the invalid character was found. If\n     *   no such character was found, returns -1\n     */\n    UrlMatcher.prototype.matchHasInvalidCharAfterTld = function (urlMatch, schemeUrlMatch) {\n        if (!urlMatch) {\n            return -1;\n        }\n        var offset = 0;\n        if (schemeUrlMatch) {\n            offset = urlMatch.indexOf(':');\n            urlMatch = urlMatch.slice(offset);\n        }\n        var re = new RegExp(\"^((.?\\/\\/)?[-.\" + alphaNumericAndMarksCharsStr + \"]*[-\" + alphaNumericAndMarksCharsStr + \"]\\\\.[-\" + alphaNumericAndMarksCharsStr + \"]+)\");\n        var res = re.exec(urlMatch);\n        if (res === null) {\n            return -1;\n        }\n        offset += res[1].length;\n        urlMatch = urlMatch.slice(res[1].length);\n        if (/^[^-.A-Za-z0-9:\\/?#]/.test(urlMatch)) {\n            return offset;\n        }\n        return -1;\n    };\n    return UrlMatcher;\n}(Matcher));\nexport { UrlMatcher };\n\n//# sourceMappingURL=url-matcher.js.map\n", "import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Hashtag\n * @extends Autolinker.match.Match\n *\n * Represents a Hashtag match found in an input string which should be\n * Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more\n * details.\n */\nvar HashtagMatch = /** @class */ (function (_super) {\n    __extends(HashtagMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function HashtagMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} serviceName\n         *\n         * The service to point hashtag matches to. See {@link Autolinker#hashtag}\n         * for available values.\n         */\n        _this.serviceName = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} hashtag (required)\n         *\n         * The HashtagMatch that was matched, without the '#'.\n         */\n        _this.hashtag = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        _this.serviceName = cfg.serviceName;\n        _this.hashtag = cfg.hashtag;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of HashtagMatch, returns 'hashtag'.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getType = function () {\n        return 'hashtag';\n    };\n    /**\n     * Returns the configured {@link #serviceName} to point the HashtagMatch to.\n     * Ex: 'facebook', 'twitter'.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getServiceName = function () {\n        return this.serviceName;\n    };\n    /**\n     * Returns the matched hashtag, without the '#' character.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getHashtag = function () {\n        return this.hashtag;\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getAnchorHref = function () {\n        var serviceName = this.serviceName, hashtag = this.hashtag;\n        switch (serviceName) {\n            case 'twitter':\n                return 'https://twitter.com/hashtag/' + hashtag;\n            case 'facebook':\n                return 'https://www.facebook.com/hashtag/' + hashtag;\n            case 'instagram':\n                return 'https://instagram.com/explore/tags/' + hashtag;\n            default: // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case.\n                throw new Error('Unknown service name to point hashtag to: ' + serviceName);\n        }\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getAnchorText = function () {\n        return '#' + this.hashtag;\n    };\n    return HashtagMatch;\n}(Match));\nexport { HashtagMatch };\n\n//# sourceMappingURL=hashtag-match.js.map\n", "import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Mention\n * @extends Autolinker.match.Match\n *\n * Represents a Mention match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar MentionMatch = /** @class */ (function (_super) {\n    __extends(MentionMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function MentionMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} serviceName\n         *\n         * The service to point mention matches to. See {@link Autolinker#mention}\n         * for available values.\n         */\n        _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} mention (required)\n         *\n         * The Mention that was matched, without the '@' character.\n         */\n        _this.mention = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        _this.mention = cfg.mention;\n        _this.serviceName = cfg.serviceName;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of MentionMatch, returns 'mention'.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getType = function () {\n        return 'mention';\n    };\n    /**\n     * Returns the mention, without the '@' character.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getMention = function () {\n        return this.mention;\n    };\n    /**\n     * Returns the configured {@link #serviceName} to point the mention to.\n     * Ex: 'instagram', 'twitter', 'soundcloud'.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getServiceName = function () {\n        return this.serviceName;\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getAnchorHref = function () {\n        switch (this.serviceName) {\n            case 'twitter':\n                return 'https://twitter.com/' + this.mention;\n            case 'instagram':\n                return 'https://instagram.com/' + this.mention;\n            case 'soundcloud':\n                return 'https://soundcloud.com/' + this.mention;\n            default: // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case.\n                throw new Error('Unknown service name to point mention to: ' + this.serviceName);\n        }\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getAnchorText = function () {\n        return '@' + this.mention;\n    };\n    /**\n     * Returns the CSS class suffixes that should be used on a tag built with\n     * the match. See {@link Autolinker.match.Match#getCssClassSuffixes} for\n     * details.\n     *\n     * @return {String[]}\n     */\n    MentionMatch.prototype.getCssClassSuffixes = function () {\n        var cssClassSuffixes = _super.prototype.getCssClassSuffixes.call(this), serviceName = this.getServiceName();\n        if (serviceName) {\n            cssClassSuffixes.push(serviceName);\n        }\n        return cssClassSuffixes;\n    };\n    return MentionMatch;\n}(Match));\nexport { MentionMatch };\n\n//# sourceMappingURL=mention-match.js.map\n", "import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Phone\n * @extends Autolinker.match.Match\n *\n * Represents a Phone number match found in an input string which should be\n * Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more\n * details.\n */\nvar PhoneMatch = /** @class */ (function (_super) {\n    __extends(PhoneMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function PhoneMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @protected\n         * @property {String} number (required)\n         *\n         * The phone number that was matched, without any delimiter characters.\n         *\n         * Note: This is a string to allow for prefixed 0's.\n         */\n        _this.number = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @protected\n         * @property  {Boolean} plusSign (required)\n         *\n         * `true` if the matched phone number started with a '+' sign. We'll include\n         * it in the `tel:` URL if so, as this is needed for international numbers.\n         *\n         * Ex: '+1 (123) 456 7879'\n         */\n        _this.plusSign = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        _this.number = cfg.number;\n        _this.plusSign = cfg.plusSign;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of PhoneMatch, returns 'phone'.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getType = function () {\n        return 'phone';\n    };\n    /**\n     * Returns the phone number that was matched as a string, without any\n     * delimiter characters.\n     *\n     * Note: This is a string to allow for prefixed 0's.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getPhoneNumber = function () {\n        return this.number;\n    };\n    /**\n     * Alias of {@link #getPhoneNumber}, returns the phone number that was\n     * matched as a string, without any delimiter characters.\n     *\n     * Note: This is a string to allow for prefixed 0's.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getNumber = function () {\n        return this.getPhoneNumber();\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getAnchorHref = function () {\n        return 'tel:' + (this.plusSign ? '+' : '') + this.number;\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getAnchorText = function () {\n        return this.matchedText;\n    };\n    return PhoneMatch;\n}(Match));\nexport { PhoneMatch };\n\n//# sourceMappingURL=phone-match.js.map\n", "import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Url\n * @extends Autolinker.match.Match\n *\n * Represents a Url match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar UrlMatch = /** @class */ (function (_super) {\n    __extends(UrlMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function UrlMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} url (required)\n         *\n         * The url that was matched.\n         */\n        _this.url = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {\"scheme\"/\"www\"/\"tld\"} urlMatchType (required)\n         *\n         * The type of URL match that this class represents. This helps to determine\n         * if the match was made in the original text with a prefixed scheme (ex:\n         * 'http://www.google.com'), a prefixed 'www' (ex: 'www.google.com'), or\n         * was matched by a known top-level domain (ex: 'google.com').\n         */\n        _this.urlMatchType = 'scheme'; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} protocolUrlMatch (required)\n         *\n         * `true` if the URL is a match which already has a protocol (i.e.\n         * 'http://'), `false` if the match was from a 'www' or known TLD match.\n         */\n        _this.protocolUrlMatch = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} protocolRelativeMatch (required)\n         *\n         * `true` if the URL is a protocol-relative match. A protocol-relative match\n         * is a URL that starts with '//', and will be either http:// or https://\n         * based on the protocol that the site is loaded under.\n         */\n        _this.protocolRelativeMatch = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Object} stripPrefix (required)\n         *\n         * The Object form of {@link Autolinker#cfg-stripPrefix}.\n         */\n        _this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} stripTrailingSlash (required)\n         * @inheritdoc Autolinker#cfg-stripTrailingSlash\n         */\n        _this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} decodePercentEncoding (required)\n         * @inheritdoc Autolinker#cfg-decodePercentEncoding\n         */\n        _this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @private\n         * @property {RegExp} schemePrefixRegex\n         *\n         * A regular expression used to remove the 'http://' or 'https://' from\n         * URLs.\n         */\n        _this.schemePrefixRegex = /^(https?:\\/\\/)?/i;\n        /**\n         * @private\n         * @property {RegExp} wwwPrefixRegex\n         *\n         * A regular expression used to remove the 'www.' from URLs.\n         */\n        _this.wwwPrefixRegex = /^(https?:\\/\\/)?(www\\.)?/i;\n        /**\n         * @private\n         * @property {RegExp} protocolRelativeRegex\n         *\n         * The regular expression used to remove the protocol-relative '//' from the {@link #url} string, for purposes\n         * of {@link #getAnchorText}. A protocol-relative URL is, for example, \"//yahoo.com\"\n         */\n        _this.protocolRelativeRegex = /^\\/\\//;\n        /**\n         * @private\n         * @property {Boolean} protocolPrepended\n         *\n         * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the\n         * {@link #url} did not have a protocol)\n         */\n        _this.protocolPrepended = false;\n        _this.urlMatchType = cfg.urlMatchType;\n        _this.url = cfg.url;\n        _this.protocolUrlMatch = cfg.protocolUrlMatch;\n        _this.protocolRelativeMatch = cfg.protocolRelativeMatch;\n        _this.stripPrefix = cfg.stripPrefix;\n        _this.stripTrailingSlash = cfg.stripTrailingSlash;\n        _this.decodePercentEncoding = cfg.decodePercentEncoding;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of UrlMatch, returns 'url'.\n     *\n     * @return {String}\n     */\n    UrlMatch.prototype.getType = function () {\n        return 'url';\n    };\n    /**\n     * Returns a string name for the type of URL match that this class\n     * represents.\n     *\n     * This helps to determine if the match was made in the original text with a\n     * prefixed scheme (ex: 'http://www.google.com'), a prefixed 'www' (ex:\n     * 'www.google.com'), or was matched by a known top-level domain (ex:\n     * 'google.com').\n     *\n     * @return {\"scheme\"/\"www\"/\"tld\"}\n     */\n    UrlMatch.prototype.getUrlMatchType = function () {\n        return this.urlMatchType;\n    };\n    /**\n     * Returns the url that was matched, assuming the protocol to be 'http://' if the original\n     * match was missing a protocol.\n     *\n     * @return {String}\n     */\n    UrlMatch.prototype.getUrl = function () {\n        var url = this.url;\n        // if the url string doesn't begin with a protocol, assume 'http://'\n        if (!this.protocolRelativeMatch && !this.protocolUrlMatch && !this.protocolPrepended) {\n            url = this.url = 'http://' + url;\n            this.protocolPrepended = true;\n        }\n        return url;\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    UrlMatch.prototype.getAnchorHref = function () {\n        var url = this.getUrl();\n        return url.replace(/&amp;/g, '&'); // any &amp;'s in the URL should be converted back to '&' if they were displayed as &amp; in the source html\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    UrlMatch.prototype.getAnchorText = function () {\n        var anchorText = this.getMatchedText();\n        if (this.protocolRelativeMatch) {\n            // Strip off any protocol-relative '//' from the anchor text\n            anchorText = this.stripProtocolRelativePrefix(anchorText);\n        }\n        if (this.stripPrefix.scheme) {\n            anchorText = this.stripSchemePrefix(anchorText);\n        }\n        if (this.stripPrefix.www) {\n            anchorText = this.stripWwwPrefix(anchorText);\n        }\n        if (this.stripTrailingSlash) {\n            anchorText = this.removeTrailingSlash(anchorText); // remove trailing slash, if there is one\n        }\n        if (this.decodePercentEncoding) {\n            anchorText = this.removePercentEncoding(anchorText);\n        }\n        return anchorText;\n    };\n    // ---------------------------------------\n    // Utility Functionality\n    /**\n     * Strips the scheme prefix (such as \"http://\" or \"https://\") from the given\n     * `url`.\n     *\n     * @private\n     * @param {String} url The text of the anchor that is being generated, for\n     *   which to strip off the url scheme.\n     * @return {String} The `url`, with the scheme stripped.\n     */\n    UrlMatch.prototype.stripSchemePrefix = function (url) {\n        return url.replace(this.schemePrefixRegex, '');\n    };\n    /**\n     * Strips the 'www' prefix from the given `url`.\n     *\n     * @private\n     * @param {String} url The text of the anchor that is being generated, for\n     *   which to strip off the 'www' if it exists.\n     * @return {String} The `url`, with the 'www' stripped.\n     */\n    UrlMatch.prototype.stripWwwPrefix = function (url) {\n        return url.replace(this.wwwPrefixRegex, '$1'); // leave any scheme ($1), it one exists\n    };\n    /**\n     * Strips any protocol-relative '//' from the anchor text.\n     *\n     * @private\n     * @param {String} text The text of the anchor that is being generated, for which to strip off the\n     *   protocol-relative prefix (such as stripping off \"//\")\n     * @return {String} The `anchorText`, with the protocol-relative prefix stripped.\n     */\n    UrlMatch.prototype.stripProtocolRelativePrefix = function (text) {\n        return text.replace(this.protocolRelativeRegex, '');\n    };\n    /**\n     * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed.\n     *\n     * @private\n     * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing\n     *   slash ('/') that may exist.\n     * @return {String} The `anchorText`, with the trailing slash removed.\n     */\n    UrlMatch.prototype.removeTrailingSlash = function (anchorText) {\n        if (anchorText.charAt(anchorText.length - 1) === '/') {\n            anchorText = anchorText.slice(0, -1);\n        }\n        return anchorText;\n    };\n    /**\n     * Decodes percent-encoded characters from the given `anchorText`, in\n     * preparation for the text to be displayed.\n     *\n     * @private\n     * @param {String} anchorText The text of the anchor that is being\n     *   generated, for which to decode any percent-encoded characters.\n     * @return {String} The `anchorText`, with the percent-encoded characters\n     *   decoded.\n     */\n    UrlMatch.prototype.removePercentEncoding = function (anchorText) {\n        // First, convert a few of the known % encodings to the corresponding\n        // HTML entities that could accidentally be interpretted as special\n        // HTML characters\n        var preProcessedEntityAnchorText = anchorText\n            .replace(/%22/gi, '&quot;') // \" char\n            .replace(/%26/gi, '&amp;') // & char\n            .replace(/%27/gi, '&#39;') // ' char\n            .replace(/%3C/gi, '&lt;') // < char\n            .replace(/%3E/gi, '&gt;'); // > char\n        try {\n            // Now attempt to decode the rest of the anchor text\n            return decodeURIComponent(preProcessedEntityAnchorText);\n        }\n        catch (e) { // Invalid % escape sequence in the anchor text\n            return preProcessedEntityAnchorText;\n        }\n    };\n    return UrlMatch;\n}(Match));\nexport { UrlMatch };\n\n//# sourceMappingURL=url-match.js.map\n", "/**\n * @abstract\n * @class Autolinker.matcher.Matcher\n *\n * An abstract class and interface for individual matchers to find matches in\n * an input string with linkified versions of them.\n *\n * Note that Matchers do not take HTML into account - they must be fed the text\n * nodes of any HTML string, which is handled by {@link Autolinker#parse}.\n */\nvar Matcher = /** @class */ (function () {\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Matcher\n     *   instance, specified in an Object (map).\n     */\n    function Matcher(cfg) {\n        /**\n         * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\n         *\n         * Reference to the AnchorTagBuilder instance to use to generate HTML tags\n         * for {@link Autolinker.match.Match Matches}.\n         */\n        this.__jsduckDummyDocProp = null; // property used just to get the above doc comment into the ES5 output and documentation generator\n        this.tagBuilder = cfg.tagBuilder;\n    }\n    return Matcher;\n}());\nexport { Matcher };\n\n//# sourceMappingURL=matcher.js.map\n", "/*\n * This file builds and stores a library of the common regular expressions used\n * by the Autolinker utility.\n *\n * Other regular expressions may exist ad-hoc, but these are generally the\n * regular expressions that are shared between source files.\n */\n/**\n * Regular expression to match upper and lowercase ASCII letters\n */\nexport var letterRe = /[A-Za-z]/;\n/**\n * Regular expression to match ASCII digits\n */\nexport var digitRe = /[\\d]/;\n/**\n * Regular expression to match everything *except* ASCII digits\n */\nexport var nonDigitRe = /[\\D]/;\n/**\n * Regular expression to match whitespace\n */\nexport var whitespaceRe = /\\s/;\n/**\n * Regular expression to match quote characters\n */\nexport var quoteRe = /['\"]/;\n/**\n * Regular expression to match the range of ASCII control characters (0-31), and\n * the backspace char (127)\n */\nexport var controlCharsRe = /[\\x00-\\x1F\\x7F]/;\n/**\n * The string form of a regular expression that would match all of the\n * alphabetic (\"letter\") chars in the unicode character set when placed in a\n * RegExp character class (`[]`). This includes all international alphabetic\n * characters.\n *\n * These would be the characters matched by unicode regex engines `\\p{L}`\n * escape (\"all letters\").\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'\n *   regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n *   Expression literal rather than a string literal to prevent UglifyJS from\n *   compressing the unicode escape sequences into their actual unicode\n *   characters. If Uglify compresses these into the unicode characters\n *   themselves, this results in the error \"Range out of order in character\n *   class\" when these characters are used inside of a Regular Expression\n *   character class (`[]`). See usages of this const. Alternatively, we can set\n *   the UglifyJS option `ascii_only` to true for the build, but that doesn't\n *   help others who are pulling in Autolinker into their own build and running\n *   UglifyJS themselves.\n */\nexport var alphaCharsStr = /A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC/\n    .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all emoji characters\n * Based on the emoji regex defined in this article: https://thekevinscott.com/emojis-in-javascript/\n */\nexport var emojiStr = /\\u2700-\\u27bf\\udde6-\\uddff\\ud800-\\udbff\\udc00-\\udfff\\ufe0e\\ufe0f\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ud83c\\udffb-\\udfff\\u200d\\u3299\\u3297\\u303d\\u3030\\u24c2\\ud83c\\udd70-\\udd71\\udd7e-\\udd7f\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01-\\ude02\\ude1a\\ude2f\\ude32-\\ude3a\\ude50-\\ude51\\u203c\\u2049\\u25aa-\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u00a9\\u00ae\\u2122\\u2139\\udc04\\u2600-\\u26FF\\u2b05\\u2b06\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u231a\\u231b\\u2328\\u23cf\\u23e9-\\u23f3\\u23f8-\\u23fa\\udccf\\u2935\\u2934\\u2190-\\u21ff/\n    .source;\n/**\n * The string form of a regular expression that would match all of the\n * combining mark characters in the unicode character set when placed in a\n * RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines `\\p{M}`\n * escape (\"all marks\").\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'\n *   regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n *   Expression literal rather than a string literal to prevent UglifyJS from\n *   compressing the unicode escape sequences into their actual unicode\n *   characters. If Uglify compresses these into the unicode characters\n *   themselves, this results in the error \"Range out of order in character\n *   class\" when these characters are used inside of a Regular Expression\n *   character class (`[]`). See usages of this const. Alternatively, we can set\n *   the UglifyJS option `ascii_only` to true for the build, but that doesn't\n *   help others who are pulling in Autolinker into their own build and running\n *   UglifyJS themselves.\n */\nexport var marksStr = /\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F/\n    .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all of the\n * alphabetic (\"letter\") chars, emoji, and combining marks in the unicode character set\n * when placed in a RegExp character class (`[]`). This includes all\n * international alphabetic characters.\n *\n * These would be the characters matched by unicode regex engines `\\p{L}\\p{M}`\n * escapes and emoji characters.\n */\nexport var alphaCharsAndMarksStr = alphaCharsStr + emojiStr + marksStr;\n/**\n * The string form of a regular expression that would match all of the\n * decimal number chars in the unicode character set when placed in a RegExp\n * character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines `\\p{Nd}`\n * escape (\"all decimal numbers\")\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'\n *   regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n *   Expression literal rather than a string literal to prevent UglifyJS from\n *   compressing the unicode escape sequences into their actual unicode\n *   characters. If Uglify compresses these into the unicode characters\n *   themselves, this results in the error \"Range out of order in character\n *   class\" when these characters are used inside of a Regular Expression\n *   character class (`[]`). See usages of this const. Alternatively, we can set\n *   the UglifyJS option `ascii_only` to true for the build, but that doesn't\n *   help others who are pulling in Autolinker into their own build and running\n *   UglifyJS themselves.\n */\nexport var decimalNumbersStr = /0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19/\n    .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all of the\n * letters and decimal number chars in the unicode character set when placed in\n * a RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines\n * `[\\p{L}\\p{Nd}]` escape (\"all letters and decimal numbers\")\n */\nexport var alphaNumericCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;\n/**\n * The string form of a regular expression that would match all of the\n * letters, combining marks, and decimal number chars in the unicode character\n * set when placed in a RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines\n * `[\\p{L}\\p{M}\\p{Nd}]` escape (\"all letters, combining marks, and decimal\n * numbers\")\n */\nexport var alphaNumericAndMarksCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;\n// Simplified IP regular expression\nvar ipStr = '(?:[' + decimalNumbersStr + ']{1,3}\\\\.){3}[' + decimalNumbersStr + ']{1,3}';\n// Protected domain label which do not allow \"-\" character on the beginning and the end of a single label\nvar domainLabelStr = '[' + alphaNumericAndMarksCharsStr + '](?:[' + alphaNumericAndMarksCharsStr + '\\\\-]{0,61}[' + alphaNumericAndMarksCharsStr + '])?';\nvar getDomainLabelStr = function (group) {\n    return '(?=(' + domainLabelStr + '))\\\\' + group;\n};\n/**\n * A function to match domain names of a URL or email address.\n * Ex: 'google', 'yahoo', 'some-other-company', etc.\n */\nexport var getDomainNameStr = function (group) {\n    return '(?:' + getDomainLabelStr(group) + '(?:\\\\.' + getDomainLabelStr(group + 1) + '){0,126}|' + ipStr + ')';\n};\n/**\n * A regular expression to match domain names of a URL or email address.\n * Ex: 'google', 'yahoo', 'some-other-company', etc.\n */\nexport var domainNameRegex = new RegExp('[' + alphaNumericAndMarksCharsStr + '.\\\\-]*[' + alphaNumericAndMarksCharsStr + '\\\\-]');\n/**\n * A regular expression that is simply the character class of the characters\n * that may be used in a domain name, minus the '-' or '.'\n */\nexport var domainNameCharRegex = new RegExp(\"[\" + alphaNumericAndMarksCharsStr + \"]\");\n\n//# sourceMappingURL=regex-lib.js.map\n", "// NOTE: THIS IS A GENERATED FILE\n// To update with the latest TLD list, run `npm run update-tld-regex` or `yarn update-tld-regex` (depending on which you have installed)\nexport var tldRegex = /(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|الجزائر|العليان|پاکستان|كاثوليك|موبايلي|இந்தியா|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ストア|セール|みんな|中文网|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/;\n\n//# sourceMappingURL=tld-regex.js.map\n", "import { __assign, __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr, domainNameCharRegex } from \"../regex-lib\";\nimport { EmailMatch } from \"../match/email-match\";\nimport { throwUnhandledCaseError } from '../utils';\nimport { tldRegex } from \"./tld-regex\";\n// For debugging: search for other \"For debugging\" lines\n// import CliTable from 'cli-table';\n// RegExp objects which are shared by all instances of EmailMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating EmailMatcher and its RegExp \n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314). \n// See descriptions of the properties where they are used for details about them\nvar localPartCharRegex = new RegExp(\"[\" + alphaNumericAndMarksCharsStr + \"!#$%&'*+/=?^_`{|}~-]\");\nvar strictTldRegex = new RegExp(\"^\" + tldRegex.source + \"$\");\n/**\n * @class Autolinker.matcher.Email\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find email matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details.\n */\nvar EmailMatcher = /** @class */ (function (_super) {\n    __extends(EmailMatcher, _super);\n    function EmailMatcher() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * Valid characters that can be used in the \"local\" part of an email address,\n         * i.e. the \"name\" part of \"name@site.com\"\n         */\n        _this.localPartCharRegex = localPartCharRegex;\n        /**\n         * Stricter TLD regex which adds a beginning and end check to ensure\n         * the string is a valid TLD\n         */\n        _this.strictTldRegex = strictTldRegex;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    EmailMatcher.prototype.parseMatches = function (text) {\n        var tagBuilder = this.tagBuilder, localPartCharRegex = this.localPartCharRegex, strictTldRegex = this.strictTldRegex, matches = [], len = text.length, noCurrentEmailMatch = new CurrentEmailMatch();\n        // for matching a 'mailto:' prefix\n        var mailtoTransitions = {\n            'm': 'a',\n            'a': 'i',\n            'i': 'l',\n            'l': 't',\n            't': 'o',\n            'o': ':',\n        };\n        var charIdx = 0, state = 0 /* NonEmailMatch */, currentEmailMatch = noCurrentEmailMatch;\n        // For debugging: search for other \"For debugging\" lines\n        // const table = new CliTable( {\n        // \thead: [ 'charIdx', 'char', 'state', 'charIdx', 'currentEmailAddress.idx', 'hasDomainDot' ]\n        // } );\n        while (charIdx < len) {\n            var char = text.charAt(charIdx);\n            // For debugging: search for other \"For debugging\" lines\n            // table.push( \n            // \t[ charIdx, char, State[ state ], charIdx, currentEmailAddress.idx, currentEmailAddress.hasDomainDot ] \n            // );\n            switch (state) {\n                case 0 /* NonEmailMatch */:\n                    stateNonEmailAddress(char);\n                    break;\n                case 1 /* Mailto */:\n                    stateMailTo(text.charAt(charIdx - 1), char);\n                    break;\n                case 2 /* LocalPart */:\n                    stateLocalPart(char);\n                    break;\n                case 3 /* LocalPartDot */:\n                    stateLocalPartDot(char);\n                    break;\n                case 4 /* AtSign */:\n                    stateAtSign(char);\n                    break;\n                case 5 /* DomainChar */:\n                    stateDomainChar(char);\n                    break;\n                case 6 /* DomainHyphen */:\n                    stateDomainHyphen(char);\n                    break;\n                case 7 /* DomainDot */:\n                    stateDomainDot(char);\n                    break;\n                default:\n                    throwUnhandledCaseError(state);\n            }\n            // For debugging: search for other \"For debugging\" lines\n            // table.push( \n            // \t[ charIdx, char, State[ state ], charIdx, currentEmailAddress.idx, currentEmailAddress.hasDomainDot ] \n            // );\n            charIdx++;\n        }\n        // Capture any valid match at the end of the string\n        captureMatchIfValidAndReset();\n        // For debugging: search for other \"For debugging\" lines\n        //console.log( '\\n' + table.toString() );\n        return matches;\n        // Handles the state when we're not in an email address\n        function stateNonEmailAddress(char) {\n            if (char === 'm') {\n                beginEmailMatch(1 /* Mailto */);\n            }\n            else if (localPartCharRegex.test(char)) {\n                beginEmailMatch();\n            }\n            else {\n                // not an email address character, continue\n            }\n        }\n        // Handles if we're reading a 'mailto:' prefix on the string\n        function stateMailTo(prevChar, char) {\n            if (prevChar === ':') {\n                // We've reached the end of the 'mailto:' prefix\n                if (localPartCharRegex.test(char)) {\n                    state = 2 /* LocalPart */;\n                    currentEmailMatch = new CurrentEmailMatch(__assign(__assign({}, currentEmailMatch), { hasMailtoPrefix: true }));\n                }\n                else {\n                    // we've matched 'mailto:' but didn't get anything meaningful\n                    // immediately afterwards (for example, we encountered a \n                    // space character, or an '@' character which formed 'mailto:@'\n                    resetToNonEmailMatchState();\n                }\n            }\n            else if (mailtoTransitions[prevChar] === char) {\n                // We're currently reading the 'mailto:' prefix, stay in\n                // Mailto state\n            }\n            else if (localPartCharRegex.test(char)) {\n                // We we're reading a prefix of 'mailto:', but encountered a\n                // different character that didn't continue the prefix\n                state = 2 /* LocalPart */;\n            }\n            else if (char === '.') {\n                // We we're reading a prefix of 'mailto:', but encountered a\n                // dot character\n                state = 3 /* LocalPartDot */;\n            }\n            else if (char === '@') {\n                // We we're reading a prefix of 'mailto:', but encountered a\n                // an @ character\n                state = 4 /* AtSign */;\n            }\n            else {\n                // not an email address character, return to \"NonEmailAddress\" state\n                resetToNonEmailMatchState();\n            }\n        }\n        // Handles the state when we're currently in the \"local part\" of an \n        // email address (as opposed to the \"domain part\")\n        function stateLocalPart(char) {\n            if (char === '.') {\n                state = 3 /* LocalPartDot */;\n            }\n            else if (char === '@') {\n                state = 4 /* AtSign */;\n            }\n            else if (localPartCharRegex.test(char)) {\n                // stay in the \"local part\" of the email address\n            }\n            else {\n                // not an email address character, return to \"NonEmailAddress\" state\n                resetToNonEmailMatchState();\n            }\n        }\n        // Handles the state where we've read \n        function stateLocalPartDot(char) {\n            if (char === '.') {\n                // We read a second '.' in a row, not a valid email address \n                // local part\n                resetToNonEmailMatchState();\n            }\n            else if (char === '@') {\n                // We read the '@' character immediately after a dot ('.'), not \n                // an email address\n                resetToNonEmailMatchState();\n            }\n            else if (localPartCharRegex.test(char)) {\n                state = 2 /* LocalPart */;\n            }\n            else {\n                // Anything else, not an email address\n                resetToNonEmailMatchState();\n            }\n        }\n        function stateAtSign(char) {\n            if (domainNameCharRegex.test(char)) {\n                state = 5 /* DomainChar */;\n            }\n            else {\n                // Anything else, not an email address\n                resetToNonEmailMatchState();\n            }\n        }\n        function stateDomainChar(char) {\n            if (char === '.') {\n                state = 7 /* DomainDot */;\n            }\n            else if (char === '-') {\n                state = 6 /* DomainHyphen */;\n            }\n            else if (domainNameCharRegex.test(char)) {\n                // Stay in the DomainChar state\n            }\n            else {\n                // Anything else, we potentially matched if the criteria has\n                // been met\n                captureMatchIfValidAndReset();\n            }\n        }\n        function stateDomainHyphen(char) {\n            if (char === '-' || char === '.') {\n                // Not valid to have two hyphens (\"--\") or hypen+dot (\"-.\")\n                captureMatchIfValidAndReset();\n            }\n            else if (domainNameCharRegex.test(char)) {\n                state = 5 /* DomainChar */;\n            }\n            else {\n                // Anything else\n                captureMatchIfValidAndReset();\n            }\n        }\n        function stateDomainDot(char) {\n            if (char === '.' || char === '-') {\n                // not valid to have two dots (\"..\") or dot+hypen (\".-\")\n                captureMatchIfValidAndReset();\n            }\n            else if (domainNameCharRegex.test(char)) {\n                state = 5 /* DomainChar */;\n                // After having read a '.' and then a valid domain character,\n                // we now know that the domain part of the email is valid, and\n                // we have found at least a partial EmailMatch (however, the\n                // email address may have additional characters from this point)\n                currentEmailMatch = new CurrentEmailMatch(__assign(__assign({}, currentEmailMatch), { hasDomainDot: true }));\n            }\n            else {\n                // Anything else\n                captureMatchIfValidAndReset();\n            }\n        }\n        function beginEmailMatch(newState) {\n            if (newState === void 0) { newState = 2 /* LocalPart */; }\n            state = newState;\n            currentEmailMatch = new CurrentEmailMatch({ idx: charIdx });\n        }\n        function resetToNonEmailMatchState() {\n            state = 0 /* NonEmailMatch */;\n            currentEmailMatch = noCurrentEmailMatch;\n        }\n        /*\n         * Captures the current email address as an EmailMatch if it's valid,\n         * and resets the state to read another email address.\n         */\n        function captureMatchIfValidAndReset() {\n            if (currentEmailMatch.hasDomainDot) { // we need at least one dot in the domain to be considered a valid email address\n                var matchedText = text.slice(currentEmailMatch.idx, charIdx);\n                // If we read a '.' or '-' char that ended the email address\n                // (valid domain name characters, but only valid email address\n                // characters if they are followed by something else), strip \n                // it off now\n                if (/[-.]$/.test(matchedText)) {\n                    matchedText = matchedText.slice(0, -1);\n                }\n                var emailAddress = currentEmailMatch.hasMailtoPrefix\n                    ? matchedText.slice('mailto:'.length)\n                    : matchedText;\n                // if the email address has a valid TLD, add it to the list of matches\n                if (doesEmailHaveValidTld(emailAddress)) {\n                    matches.push(new EmailMatch({\n                        tagBuilder: tagBuilder,\n                        matchedText: matchedText,\n                        offset: currentEmailMatch.idx,\n                        email: emailAddress\n                    }));\n                }\n            }\n            resetToNonEmailMatchState();\n            /**\n             * Determines if the given email address has a valid TLD or not\n             * @param {string} emailAddress - email address\n             * @return {Boolean} - true is email have valid TLD, false otherwise\n             */\n            function doesEmailHaveValidTld(emailAddress) {\n                var emailAddressTld = emailAddress.split('.').pop() || '';\n                var emailAddressNormalized = emailAddressTld.toLowerCase();\n                var isValidTld = strictTldRegex.test(emailAddressNormalized);\n                return isValidTld;\n            }\n        }\n    };\n    return EmailMatcher;\n}(Matcher));\nexport { EmailMatcher };\nvar CurrentEmailMatch = /** @class */ (function () {\n    function CurrentEmailMatch(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        this.idx = cfg.idx !== undefined ? cfg.idx : -1;\n        this.hasMailtoPrefix = !!cfg.hasMailtoPrefix;\n        this.hasDomainDot = !!cfg.hasDomainDot;\n    }\n    return CurrentEmailMatch;\n}());\n\n//# sourceMappingURL=email-matcher.js.map\n", "import { alphaCharsStr } from \"../regex-lib\";\n/**\n * @private\n * @class Autolinker.matcher.UrlMatchValidator\n * @singleton\n *\n * Used by Autolinker to filter out false URL positives from the\n * {@link Autolinker.matcher.Url UrlMatcher}.\n *\n * Due to the limitations of regular expressions (including the missing feature\n * of look-behinds in JS regular expressions), we cannot always determine the\n * validity of a given match. This class applies a bit of additional logic to\n * filter out any false positives that have been matched by the\n * {@link Autolinker.matcher.Url UrlMatcher}.\n */\nvar UrlMatchValidator = /** @class */ (function () {\n    function UrlMatchValidator() {\n    }\n    /**\n     * Determines if a given URL match found by the {@link Autolinker.matcher.Url UrlMatcher}\n     * is valid. Will return `false` for:\n     *\n     * 1) URL matches which do not have at least have one period ('.') in the\n     *    domain name (effectively skipping over matches like \"abc:def\").\n     *    However, URL matches with a protocol will be allowed (ex: 'http://localhost')\n     * 2) URL matches which do not have at least one word character in the\n     *    domain name (effectively skipping over matches like \"git:1.0\").\n     *    However, URL matches with a protocol will be allowed (ex: 'intra-net://271219.76')\n     * 3) A protocol-relative url match (a URL beginning with '//') whose\n     *    previous character is a word character (effectively skipping over\n     *    strings like \"abc//google.com\")\n     *\n     * Otherwise, returns `true`.\n     *\n     * @param {String} urlMatch The matched URL, if there was one. Will be an\n     *   empty string if the match is not a URL match.\n     * @param {String} protocolUrlMatch The match URL string for a protocol\n     *   match. Ex: 'http://yahoo.com'. This is used to match something like\n     *   'http://localhost', where we won't double check that the domain name\n     *   has at least one '.' in it.\n     * @return {Boolean} `true` if the match given is valid and should be\n     *   processed, or `false` if the match is invalid and/or should just not be\n     *   processed.\n     */\n    UrlMatchValidator.isValid = function (urlMatch, protocolUrlMatch) {\n        if ((protocolUrlMatch && !this.isValidUriScheme(protocolUrlMatch)) ||\n            this.urlMatchDoesNotHaveProtocolOrDot(urlMatch, protocolUrlMatch) || // At least one period ('.') must exist in the URL match for us to consider it an actual URL, *unless* it was a full protocol match (like 'http://localhost')\n            (this.urlMatchDoesNotHaveAtLeastOneWordChar(urlMatch, protocolUrlMatch) && // At least one letter character must exist in the domain name after a protocol match. Ex: skip over something like \"git:1.0\"\n                !this.isValidIpAddress(urlMatch)) || // Except if it's an IP address\n            this.containsMultipleDots(urlMatch)) {\n            return false;\n        }\n        return true;\n    };\n    UrlMatchValidator.isValidIpAddress = function (uriSchemeMatch) {\n        var newRegex = new RegExp(this.hasFullProtocolRegex.source + this.ipRegex.source);\n        var uriScheme = uriSchemeMatch.match(newRegex);\n        return uriScheme !== null;\n    };\n    UrlMatchValidator.containsMultipleDots = function (urlMatch) {\n        var stringBeforeSlash = urlMatch;\n        if (this.hasFullProtocolRegex.test(urlMatch)) {\n            stringBeforeSlash = urlMatch.split('://')[1];\n        }\n        return stringBeforeSlash.split('/')[0].indexOf(\"..\") > -1;\n    };\n    /**\n     * Determines if the URI scheme is a valid scheme to be autolinked. Returns\n     * `false` if the scheme is 'javascript:' or 'vbscript:'\n     *\n     * @private\n     * @param {String} uriSchemeMatch The match URL string for a full URI scheme\n     *   match. Ex: 'http://yahoo.com' or 'mailto:a@a.com'.\n     * @return {Boolean} `true` if the scheme is a valid one, `false` otherwise.\n     */\n    UrlMatchValidator.isValidUriScheme = function (uriSchemeMatch) {\n        var uriSchemeMatchArr = uriSchemeMatch.match(this.uriSchemeRegex), uriScheme = uriSchemeMatchArr && uriSchemeMatchArr[0].toLowerCase();\n        return (uriScheme !== 'javascript:' && uriScheme !== 'vbscript:');\n    };\n    /**\n     * Determines if a URL match does not have either:\n     *\n     * a) a full protocol (i.e. 'http://'), or\n     * b) at least one dot ('.') in the domain name (for a non-full-protocol\n     *    match).\n     *\n     * Either situation is considered an invalid URL (ex: 'git:d' does not have\n     * either the '://' part, or at least one dot in the domain name. If the\n     * match was 'git:abc.com', we would consider this valid.)\n     *\n     * @private\n     * @param {String} urlMatch The matched URL, if there was one. Will be an\n     *   empty string if the match is not a URL match.\n     * @param {String} protocolUrlMatch The match URL string for a protocol\n     *   match. Ex: 'http://yahoo.com'. This is used to match something like\n     *   'http://localhost', where we won't double check that the domain name\n     *   has at least one '.' in it.\n     * @return {Boolean} `true` if the URL match does not have a full protocol,\n     *   or at least one dot ('.') in a non-full-protocol match.\n     */\n    UrlMatchValidator.urlMatchDoesNotHaveProtocolOrDot = function (urlMatch, protocolUrlMatch) {\n        return (!!urlMatch && (!protocolUrlMatch || !this.hasFullProtocolRegex.test(protocolUrlMatch)) && urlMatch.indexOf('.') === -1);\n    };\n    /**\n     * Determines if a URL match does not have either:\n     *\n     * a) a full protocol (i.e. 'http://'), or\n     * b) at least one word character after the protocol (i.e. in the domain name)\n     *\n     * At least one letter character must exist in the domain name after a\n     * protocol match. Ex: skip over something like \"git:1.0\"\n     *\n     * @private\n     * @param {String} urlMatch The matched URL, if there was one. Will be an\n     *   empty string if the match is not a URL match.\n     * @param {String} protocolUrlMatch The match URL string for a protocol\n     *   match. Ex: 'http://yahoo.com'. This is used to know whether or not we\n     *   have a protocol in the URL string, in order to check for a word\n     *   character after the protocol separator (':').\n     * @return {Boolean} `true` if the URL match does not have a full protocol, or\n     * at least one word character in it, `false` otherwise.\n     */\n    UrlMatchValidator.urlMatchDoesNotHaveAtLeastOneWordChar = function (urlMatch, protocolUrlMatch) {\n        if (urlMatch && protocolUrlMatch) {\n            return !this.hasFullProtocolRegex.test(protocolUrlMatch) && !this.hasWordCharAfterProtocolRegex.test(urlMatch);\n        }\n        else {\n            return false;\n        }\n    };\n    /**\n     * Regex to test for a full protocol, with the two trailing slashes. Ex: 'http://'\n     *\n     * @private\n     * @property {RegExp} hasFullProtocolRegex\n     */\n    UrlMatchValidator.hasFullProtocolRegex = /^[A-Za-z][-.+A-Za-z0-9]*:\\/\\//;\n    /**\n     * Regex to find the URI scheme, such as 'mailto:'.\n     *\n     * This is used to filter out 'javascript:' and 'vbscript:' schemes.\n     *\n     * @private\n     * @property {RegExp} uriSchemeRegex\n     */\n    UrlMatchValidator.uriSchemeRegex = /^[A-Za-z][-.+A-Za-z0-9]*:/;\n    /**\n     * Regex to determine if at least one word char exists after the protocol (i.e. after the ':')\n     *\n     * @private\n     * @property {RegExp} hasWordCharAfterProtocolRegex\n     */\n    UrlMatchValidator.hasWordCharAfterProtocolRegex = new RegExp(\":[^\\\\s]*?[\" + alphaCharsStr + \"]\");\n    /**\n     * Regex to determine if the string is a valid IP address\n     *\n     * @private\n     * @property {RegExp} ipRegex\n     */\n    UrlMatchValidator.ipRegex = /[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\/?$/;\n    return UrlMatchValidator;\n}());\nexport { UrlMatchValidator };\n\n//# sourceMappingURL=url-match-validator.js.map\n", "import { __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr } from \"../regex-lib\";\nimport { HashtagMatch } from \"../match/hashtag-match\";\n// RegExp objects which are shared by all instances of HashtagMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating HashtagMatcher and its RegExp \n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314). \n// See descriptions of the properties where they are used for details about them\nvar matcherRegex = new RegExp(\"#[_\" + alphaNumericAndMarksCharsStr + \"]{1,139}(?![_\" + alphaNumericAndMarksCharsStr + \"])\", 'g'); // lookahead used to make sure we don't match something above 139 characters\nvar nonWordCharRegex = new RegExp('[^' + alphaNumericAndMarksCharsStr + ']');\n/**\n * @class Autolinker.matcher.Hashtag\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find HashtagMatch matches in an input string.\n */\nvar HashtagMatcher = /** @class */ (function (_super) {\n    __extends(HashtagMatcher, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match instance,\n     *   specified in an Object (map).\n     */\n    function HashtagMatcher(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} serviceName\n         *\n         * The service to point hashtag matches to. See {@link Autolinker#hashtag}\n         * for available values.\n         */\n        _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * The regular expression to match Hashtags. Example match:\n         *\n         *     #asdf\n         *\n         * @protected\n         * @property {RegExp} matcherRegex\n         */\n        _this.matcherRegex = matcherRegex;\n        /**\n         * The regular expression to use to check the character before a username match to\n         * make sure we didn't accidentally match an email address.\n         *\n         * For example, the string \"asdf@asdf.com\" should not match \"@asdf\" as a username.\n         *\n         * @protected\n         * @property {RegExp} nonWordCharRegex\n         */\n        _this.nonWordCharRegex = nonWordCharRegex;\n        _this.serviceName = cfg.serviceName;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    HashtagMatcher.prototype.parseMatches = function (text) {\n        var matcherRegex = this.matcherRegex, nonWordCharRegex = this.nonWordCharRegex, serviceName = this.serviceName, tagBuilder = this.tagBuilder, matches = [], match;\n        while ((match = matcherRegex.exec(text)) !== null) {\n            var offset = match.index, prevChar = text.charAt(offset - 1);\n            // If we found the match at the beginning of the string, or we found the match\n            // and there is a whitespace char in front of it (meaning it is not a '#' char\n            // in the middle of a word), then it is a hashtag match.\n            if (offset === 0 || nonWordCharRegex.test(prevChar)) {\n                var matchedText = match[0], hashtag = match[0].slice(1); // strip off the '#' character at the beginning\n                matches.push(new HashtagMatch({\n                    tagBuilder: tagBuilder,\n                    matchedText: matchedText,\n                    offset: offset,\n                    serviceName: serviceName,\n                    hashtag: hashtag\n                }));\n            }\n        }\n        return matches;\n    };\n    return HashtagMatcher;\n}(Matcher));\nexport { HashtagMatcher };\n\n//# sourceMappingURL=hashtag-matcher.js.map\n", "import { __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { PhoneMatch } from \"../match/phone-match\";\nimport { nonDigitRe } from '../regex-lib';\n// RegExp objects which are shared by all instances of PhoneMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating PhoneMatcher and its RegExp\n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314).\n// See descriptions of the properties where they are used for details about them\n// Over the years, many people have added to this regex, but it should have been\n// split up by country. Maybe one day we can break this down.\nvar mostPhoneNumbers = /(?:(?:(?:(\\+)?\\d{1,3}[-\\040.]?)?\\(?\\d{3}\\)?[-\\040.]?\\d{3}[-\\040.]?\\d{4})|(?:(\\+)(?:9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\\040.]?(?:\\d[-\\040.]?){6,12}\\d+))([,;]+[0-9]+#?)*/;\n// Regex for Japanese phone numbers\nvar japanesePhoneRe = /(0([1-9]{1}-?[1-9]\\d{3}|[1-9]{2}-?\\d{3}|[1-9]{2}\\d{1}-?\\d{2}|[1-9]{2}\\d{2}-?\\d{1})-?\\d{4}|0[789]0-?\\d{4}-?\\d{4}|050-?\\d{4}-?\\d{4})/;\n// Combined regex\nvar phoneMatcherRegex = new RegExp(mostPhoneNumbers.source + \"|\" + japanesePhoneRe.source, 'g');\n/**\n * @class Autolinker.matcher.Phone\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find Phone number matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more\n * details.\n */\nvar PhoneMatcher = /** @class */ (function (_super) {\n    __extends(PhoneMatcher, _super);\n    function PhoneMatcher() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * The regular expression to match Phone numbers. Example matches:\n         *\n         *     (123) 456-7890\n         *     123 456 7890\n         *     123-456-7890\n         *     +18004441234,,;,10226420346#\n         *     +1 (800) 444 1234\n         *     10226420346#\n         *     1-800-444-1234,1022,64,20346#\n         *\n         * This regular expression has the following capturing groups:\n         *\n         * 1 or 2. The prefixed '+' sign, if there is one.\n         *\n         * @protected\n         * @property {RegExp} matcherRegex\n         */\n        _this.matcherRegex = phoneMatcherRegex;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    PhoneMatcher.prototype.parseMatches = function (text) {\n        var matcherRegex = this.matcherRegex, tagBuilder = this.tagBuilder, matches = [], match;\n        while ((match = matcherRegex.exec(text)) !== null) {\n            // Remove non-numeric values from phone number string\n            var matchedText = match[0], cleanNumber = matchedText.replace(/[^0-9,;#]/g, ''), // strip out non-digit characters exclude comma semicolon and #\n            plusSign = !!(match[1] || match[2]), // match[ 1 ] or match[ 2 ] is the prefixed plus sign, if there is one\n            before = match.index == 0 ? '' : text.substr(match.index - 1, 1), after = text.substr(match.index + matchedText.length, 1), contextClear = !before.match(/\\d/) && !after.match(/\\d/);\n            if (this.testMatch(match[3]) && this.testMatch(matchedText) && contextClear) {\n                matches.push(new PhoneMatch({\n                    tagBuilder: tagBuilder,\n                    matchedText: matchedText,\n                    offset: match.index,\n                    number: cleanNumber,\n                    plusSign: plusSign\n                }));\n            }\n        }\n        return matches;\n    };\n    PhoneMatcher.prototype.testMatch = function (text) {\n        return nonDigitRe.test(text);\n    };\n    return PhoneMatcher;\n}(Matcher));\nexport { PhoneMatcher };\n\n//# sourceMappingURL=phone-matcher.js.map\n", "import { __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr } from \"../regex-lib\";\nimport { MentionMatch } from \"../match/mention-match\";\n// RegExp objects which are shared by all instances of MentionMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating MentionMatcher and its RegExp \n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314). \n// See descriptions of the properties where they are used for details about them\nvar twitterRegex = new RegExp(\"@[_\" + alphaNumericAndMarksCharsStr + \"]{1,50}(?![_\" + alphaNumericAndMarksCharsStr + \"])\", 'g'); // lookahead used to make sure we don't match something above 50 characters\nvar instagramRegex = new RegExp(\"@[_.\" + alphaNumericAndMarksCharsStr + \"]{1,30}(?![_\" + alphaNumericAndMarksCharsStr + \"])\", 'g'); // lookahead used to make sure we don't match something above 30 characters\nvar soundcloudRegex = new RegExp(\"@[-_.\" + alphaNumericAndMarksCharsStr + \"]{1,50}(?![-_\" + alphaNumericAndMarksCharsStr + \"])\", 'g'); // lookahead used to make sure we don't match something above 50 characters\nvar nonWordCharRegex = new RegExp('[^' + alphaNumericAndMarksCharsStr + ']');\n/**\n * @class Autolinker.matcher.Mention\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find/replace username matches in an input string.\n */\nvar MentionMatcher = /** @class */ (function (_super) {\n    __extends(MentionMatcher, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match instance,\n     *   specified in an Object (map).\n     */\n    function MentionMatcher(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {'twitter'/'instagram'/'soundcloud'} protected\n         *\n         * The name of service to link @mentions to.\n         *\n         * Valid values are: 'twitter', 'instagram', or 'soundcloud'\n         */\n        _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * Hash of regular expression to match username handles. Example match:\n         *\n         *     @asdf\n         *\n         * @private\n         * @property {Object} matcherRegexes\n         */\n        _this.matcherRegexes = {\n            'twitter': twitterRegex,\n            'instagram': instagramRegex,\n            'soundcloud': soundcloudRegex\n        };\n        /**\n         * The regular expression to use to check the character before a username match to\n         * make sure we didn't accidentally match an email address.\n         *\n         * For example, the string \"asdf@asdf.com\" should not match \"@asdf\" as a username.\n         *\n         * @private\n         * @property {RegExp} nonWordCharRegex\n         */\n        _this.nonWordCharRegex = nonWordCharRegex;\n        _this.serviceName = cfg.serviceName;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    MentionMatcher.prototype.parseMatches = function (text) {\n        var serviceName = this.serviceName, matcherRegex = this.matcherRegexes[this.serviceName], nonWordCharRegex = this.nonWordCharRegex, tagBuilder = this.tagBuilder, matches = [], match;\n        if (!matcherRegex) {\n            return matches;\n        }\n        while ((match = matcherRegex.exec(text)) !== null) {\n            var offset = match.index, prevChar = text.charAt(offset - 1);\n            // If we found the match at the beginning of the string, or we found the match\n            // and there is a whitespace char in front of it (meaning it is not an email\n            // address), then it is a username match.\n            if (offset === 0 || nonWordCharRegex.test(prevChar)) {\n                var matchedText = match[0].replace(/\\.+$/g, ''), // strip off trailing .\n                mention = matchedText.slice(1); // strip off the '@' character at the beginning\n                matches.push(new MentionMatch({\n                    tagBuilder: tagBuilder,\n                    matchedText: matchedText,\n                    offset: offset,\n                    serviceName: serviceName,\n                    mention: mention\n                }));\n            }\n        }\n        return matches;\n    };\n    return MentionMatcher;\n}(Matcher));\nexport { MentionMatcher };\n\n//# sourceMappingURL=mention-matcher.js.map\n", "import { __assign } from \"tslib\";\nimport { letterRe, digitRe, whitespaceRe, quoteRe, controlCharsRe } from '../regex-lib';\nimport { throwUnhandledCaseError } from '../utils';\n// For debugging: search for other \"For debugging\" lines\n// import CliTable from 'cli-table';\n/**\n * Parses an HTML string, calling the callbacks to notify of tags and text.\n *\n * ## History\n *\n * This file previously used a regular expression to find html tags in the input\n * text. Unfortunately, we ran into a bunch of catastrophic backtracking issues\n * with certain input text, causing Autolinker to either hang or just take a\n * really long time to parse the string.\n *\n * The current code is intended to be a O(n) algorithm that walks through\n * the string in one pass, and tries to be as cheap as possible. We don't need\n * to implement the full HTML spec, but rather simply determine where the string\n * looks like an HTML tag, and where it looks like text (so that we can autolink\n * that).\n *\n * This state machine parser is intended just to be a simple but performant\n * parser of HTML for the subset of requirements we have. We simply need to:\n *\n * 1. Determine where HTML tags are\n * 2. Determine the tag name (Autolinker specifically only cares about <a>,\n *    <script>, and <style> tags, so as not to link any text within them)\n *\n * We don't need to:\n *\n * 1. Create a parse tree\n * 2. Auto-close tags with invalid markup\n * 3. etc.\n *\n * The other intention behind this is that we didn't want to add external\n * dependencies on the Autolinker utility which would increase its size. For\n * instance, adding htmlparser2 adds 125kb to the minified output file,\n * increasing its final size from 47kb to 172kb (at the time of writing). It\n * also doesn't work exactly correctly, treating the string \"<3 blah blah blah\"\n * as an HTML tag.\n *\n * Reference for HTML spec:\n *\n *     https://www.w3.org/TR/html51/syntax.html#sec-tokenization\n *\n * @param {String} html The HTML to parse\n * @param {Object} callbacks\n * @param {Function} callbacks.onOpenTag Callback function to call when an open\n *   tag is parsed. Called with the tagName as its argument.\n * @param {Function} callbacks.onCloseTag Callback function to call when a close\n *   tag is parsed. Called with the tagName as its argument. If a self-closing\n *   tag is found, `onCloseTag` is called immediately after `onOpenTag`.\n * @param {Function} callbacks.onText Callback function to call when text (i.e\n *   not an HTML tag) is parsed. Called with the text (string) as its first\n *   argument, and offset (number) into the string as its second.\n */\nexport function parseHtml(html, _a) {\n    var onOpenTag = _a.onOpenTag, onCloseTag = _a.onCloseTag, onText = _a.onText, onComment = _a.onComment, onDoctype = _a.onDoctype;\n    var noCurrentTag = new CurrentTag();\n    var charIdx = 0, len = html.length, state = 0 /* Data */, currentDataIdx = 0, // where the current data start index is\n    currentTag = noCurrentTag; // describes the current tag that is being read\n    // For debugging: search for other \"For debugging\" lines\n    // const table = new CliTable( {\n    // \thead: [ 'charIdx', 'char', 'state', 'currentDataIdx', 'currentOpenTagIdx', 'tag.type' ]\n    // } );\n    while (charIdx < len) {\n        var char = html.charAt(charIdx);\n        // For debugging: search for other \"For debugging\" lines\n        // ALSO: Temporarily remove the 'const' keyword on the State enum\n        // table.push( \n        // \t[ charIdx, char, State[ state ], currentDataIdx, currentTag.idx, currentTag.idx === -1 ? '' : currentTag.type ] \n        // );\n        switch (state) {\n            case 0 /* Data */:\n                stateData(char);\n                break;\n            case 1 /* TagOpen */:\n                stateTagOpen(char);\n                break;\n            case 2 /* EndTagOpen */:\n                stateEndTagOpen(char);\n                break;\n            case 3 /* TagName */:\n                stateTagName(char);\n                break;\n            case 4 /* BeforeAttributeName */:\n                stateBeforeAttributeName(char);\n                break;\n            case 5 /* AttributeName */:\n                stateAttributeName(char);\n                break;\n            case 6 /* AfterAttributeName */:\n                stateAfterAttributeName(char);\n                break;\n            case 7 /* BeforeAttributeValue */:\n                stateBeforeAttributeValue(char);\n                break;\n            case 8 /* AttributeValueDoubleQuoted */:\n                stateAttributeValueDoubleQuoted(char);\n                break;\n            case 9 /* AttributeValueSingleQuoted */:\n                stateAttributeValueSingleQuoted(char);\n                break;\n            case 10 /* AttributeValueUnquoted */:\n                stateAttributeValueUnquoted(char);\n                break;\n            case 11 /* AfterAttributeValueQuoted */:\n                stateAfterAttributeValueQuoted(char);\n                break;\n            case 12 /* SelfClosingStartTag */:\n                stateSelfClosingStartTag(char);\n                break;\n            case 13 /* MarkupDeclarationOpenState */:\n                stateMarkupDeclarationOpen(char);\n                break;\n            case 14 /* CommentStart */:\n                stateCommentStart(char);\n                break;\n            case 15 /* CommentStartDash */:\n                stateCommentStartDash(char);\n                break;\n            case 16 /* Comment */:\n                stateComment(char);\n                break;\n            case 17 /* CommentEndDash */:\n                stateCommentEndDash(char);\n                break;\n            case 18 /* CommentEnd */:\n                stateCommentEnd(char);\n                break;\n            case 19 /* CommentEndBang */:\n                stateCommentEndBang(char);\n                break;\n            case 20 /* Doctype */:\n                stateDoctype(char);\n                break;\n            default:\n                throwUnhandledCaseError(state);\n        }\n        // For debugging: search for other \"For debugging\" lines\n        // ALSO: Temporarily remove the 'const' keyword on the State enum\n        // table.push( \n        // \t[ charIdx, char, State[ state ], currentDataIdx, currentTag.idx, currentTag.idx === -1 ? '' : currentTag.type ] \n        // );\n        charIdx++;\n    }\n    if (currentDataIdx < charIdx) {\n        emitText();\n    }\n    // For debugging: search for other \"For debugging\" lines\n    // console.log( '\\n' + table.toString() );\n    // Called when non-tags are being read (i.e. the text around HTML †ags)\n    // https://www.w3.org/TR/html51/syntax.html#data-state\n    function stateData(char) {\n        if (char === '<') {\n            startNewTag();\n        }\n    }\n    // Called after a '<' is read from the Data state\n    // https://www.w3.org/TR/html51/syntax.html#tag-open-state\n    function stateTagOpen(char) {\n        if (char === '!') {\n            state = 13 /* MarkupDeclarationOpenState */;\n        }\n        else if (char === '/') {\n            state = 2 /* EndTagOpen */;\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isClosing: true }));\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (letterRe.test(char)) {\n            // tag name start (and no '/' read)\n            state = 3 /* TagName */;\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isOpening: true }));\n        }\n        else {\n            // Any other \n            state = 0 /* Data */;\n            currentTag = noCurrentTag;\n        }\n    }\n    // After a '<x', '</x' sequence is read (where 'x' is a letter character), \n    // this is to continue reading the tag name\n    // https://www.w3.org/TR/html51/syntax.html#tag-name-state\n    function stateTagName(char) {\n        if (whitespaceRe.test(char)) {\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n            state = 4 /* BeforeAttributeName */;\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (char === '/') {\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '>') {\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n            emitTagAndPreviousTextNode(); // resets to Data state as well\n        }\n        else if (!letterRe.test(char) && !digitRe.test(char) && char !== ':') {\n            // Anything else that does not form an html tag. Note: the colon \n            // character is accepted for XML namespaced tags\n            resetToDataState();\n        }\n        else {\n            // continue reading tag name\n        }\n    }\n    // Called after the '/' is read from a '</' sequence\n    // https://www.w3.org/TR/html51/syntax.html#end-tag-open-state\n    function stateEndTagOpen(char) {\n        if (char === '>') { // parse error. Encountered \"</>\". Skip it without treating as a tag\n            resetToDataState();\n        }\n        else if (letterRe.test(char)) {\n            state = 3 /* TagName */;\n        }\n        else {\n            // some other non-tag-like character, don't treat this as a tag\n            resetToDataState();\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#before-attribute-name-state\n    function stateBeforeAttributeName(char) {\n        if (whitespaceRe.test(char)) {\n            // stay in BeforeAttributeName state - continue reading chars\n        }\n        else if (char === '/') {\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode(); // resets to Data state as well\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (char === \"=\" || quoteRe.test(char) || controlCharsRe.test(char)) {\n            // \"Parse error\" characters that, according to the spec, should be\n            // appended to the attribute name, but we'll treat these characters\n            // as not forming a real HTML tag\n            resetToDataState();\n        }\n        else {\n            // Any other char, start of a new attribute name\n            state = 5 /* AttributeName */;\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#attribute-name-state\n    function stateAttributeName(char) {\n        if (whitespaceRe.test(char)) {\n            state = 6 /* AfterAttributeName */;\n        }\n        else if (char === '/') {\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '=') {\n            state = 7 /* BeforeAttributeValue */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode(); // resets to Data state as well\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (quoteRe.test(char)) {\n            // \"Parse error\" characters that, according to the spec, should be\n            // appended to the attribute name, but we'll treat these characters\n            // as not forming a real HTML tag\n            resetToDataState();\n        }\n        else {\n            // anything else: continue reading attribute name\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#after-attribute-name-state\n    function stateAfterAttributeName(char) {\n        if (whitespaceRe.test(char)) {\n            // ignore the character - continue reading\n        }\n        else if (char === '/') {\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '=') {\n            state = 7 /* BeforeAttributeValue */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (quoteRe.test(char)) {\n            // \"Parse error\" characters that, according to the spec, should be\n            // appended to the attribute name, but we'll treat these characters\n            // as not forming a real HTML tag\n            resetToDataState();\n        }\n        else {\n            // Any other character, start a new attribute in the current tag\n            state = 5 /* AttributeName */;\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#before-attribute-value-state\n    function stateBeforeAttributeValue(char) {\n        if (whitespaceRe.test(char)) {\n            // ignore the character - continue reading\n        }\n        else if (char === \"\\\"\") {\n            state = 8 /* AttributeValueDoubleQuoted */;\n        }\n        else if (char === \"'\") {\n            state = 9 /* AttributeValueSingleQuoted */;\n        }\n        else if (/[>=`]/.test(char)) {\n            // Invalid chars after an '=' for an attribute value, don't count \n            // the current tag as an HTML tag\n            resetToDataState();\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else {\n            // Any other character, consider it an unquoted attribute value\n            state = 10 /* AttributeValueUnquoted */;\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#attribute-value-double-quoted-state\n    function stateAttributeValueDoubleQuoted(char) {\n        if (char === \"\\\"\") { // end the current double-quoted attribute\n            state = 11 /* AfterAttributeValueQuoted */;\n        }\n        else {\n            // consume the character as part of the double-quoted attribute value\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#attribute-value-single-quoted-state\n    function stateAttributeValueSingleQuoted(char) {\n        if (char === \"'\") { // end the current single-quoted attribute\n            state = 11 /* AfterAttributeValueQuoted */;\n        }\n        else {\n            // consume the character as part of the double-quoted attribute value\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#attribute-value-unquoted-state\n    function stateAttributeValueUnquoted(char) {\n        if (whitespaceRe.test(char)) {\n            state = 4 /* BeforeAttributeName */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else {\n            // Any other character, treat it as part of the attribute value\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#after-attribute-value-quoted-state\n    function stateAfterAttributeValueQuoted(char) {\n        if (whitespaceRe.test(char)) {\n            state = 4 /* BeforeAttributeName */;\n        }\n        else if (char === '/') {\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else {\n            // Any other character, \"parse error\". Spec says to switch to the\n            // BeforeAttributeState and re-consume the character, as it may be\n            // the start of a new attribute name\n            state = 4 /* BeforeAttributeName */;\n            reconsumeCurrentCharacter();\n        }\n    }\n    // A '/' has just been read in the current tag (presumably for '/>'), and \n    // this handles the next character\n    // https://www.w3.org/TR/html51/syntax.html#self-closing-start-tag-state\n    function stateSelfClosingStartTag(char) {\n        if (char === '>') {\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isClosing: true }));\n            emitTagAndPreviousTextNode(); // resets to Data state as well\n        }\n        else {\n            state = 4 /* BeforeAttributeName */;\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#markup-declaration-open-state\n    // (HTML Comments or !DOCTYPE)\n    function stateMarkupDeclarationOpen(char) {\n        if (html.substr(charIdx, 2) === '--') { // html comment\n            charIdx += 2; // \"consume\" characters\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { type: 'comment' }));\n            state = 14 /* CommentStart */;\n        }\n        else if (html.substr(charIdx, 7).toUpperCase() === 'DOCTYPE') {\n            charIdx += 7; // \"consume\" characters\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { type: 'doctype' }));\n            state = 20 /* Doctype */;\n        }\n        else {\n            // At this point, the spec specifies that the state machine should\n            // enter the \"bogus comment\" state, in which case any character(s) \n            // after the '<!' that were read should become an HTML comment up\n            // until the first '>' that is read (or EOF). Instead, we'll assume\n            // that a user just typed '<!' as part of text data\n            resetToDataState();\n        }\n    }\n    // Handles after the sequence '<!--' has been read\n    // https://www.w3.org/TR/html51/syntax.html#comment-start-state\n    function stateCommentStart(char) {\n        if (char === '-') {\n            // We've read the sequence '<!---' at this point (3 dashes)\n            state = 15 /* CommentStartDash */;\n        }\n        else if (char === '>') {\n            // At this point, we'll assume the comment wasn't a real comment\n            // so we'll just emit it as data. We basically read the sequence \n            // '<!-->'\n            resetToDataState();\n        }\n        else {\n            // Any other char, take it as part of the comment\n            state = 16 /* Comment */;\n        }\n    }\n    // We've read the sequence '<!---' at this point (3 dashes)\n    // https://www.w3.org/TR/html51/syntax.html#comment-start-dash-state\n    function stateCommentStartDash(char) {\n        if (char === '-') {\n            // We've read '<!----' (4 dashes) at this point\n            state = 18 /* CommentEnd */;\n        }\n        else if (char === '>') {\n            // At this point, we'll assume the comment wasn't a real comment\n            // so we'll just emit it as data. We basically read the sequence \n            // '<!--->'\n            resetToDataState();\n        }\n        else {\n            // Anything else, take it as a valid comment\n            state = 16 /* Comment */;\n        }\n    }\n    // Currently reading the comment's text (data)\n    // https://www.w3.org/TR/html51/syntax.html#comment-state\n    function stateComment(char) {\n        if (char === '-') {\n            state = 17 /* CommentEndDash */;\n        }\n        else {\n            // Any other character, stay in the Comment state\n        }\n    }\n    // When we we've read the first dash inside a comment, it may signal the\n    // end of the comment if we read another dash\n    // https://www.w3.org/TR/html51/syntax.html#comment-end-dash-state\n    function stateCommentEndDash(char) {\n        if (char === '-') {\n            state = 18 /* CommentEnd */;\n        }\n        else {\n            // Wasn't a dash, must still be part of the comment\n            state = 16 /* Comment */;\n        }\n    }\n    // After we've read two dashes inside a comment, it may signal the end of \n    // the comment if we then read a '>' char\n    // https://www.w3.org/TR/html51/syntax.html#comment-end-state\n    function stateCommentEnd(char) {\n        if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '!') {\n            state = 19 /* CommentEndBang */;\n        }\n        else if (char === '-') {\n            // A 3rd '-' has been read: stay in the CommentEnd state\n        }\n        else {\n            // Anything else, switch back to the comment state since we didn't\n            // read the full \"end comment\" sequence (i.e. '-->')\n            state = 16 /* Comment */;\n        }\n    }\n    // We've read the sequence '--!' inside of a comment\n    // https://www.w3.org/TR/html51/syntax.html#comment-end-bang-state\n    function stateCommentEndBang(char) {\n        if (char === '-') {\n            // We read the sequence '--!-' inside of a comment. The last dash\n            // could signify that the comment is going to close\n            state = 17 /* CommentEndDash */;\n        }\n        else if (char === '>') {\n            // End of comment with the sequence '--!>'\n            emitTagAndPreviousTextNode();\n        }\n        else {\n            // The '--!' was not followed by a '>', continue reading the \n            // comment's text\n            state = 16 /* Comment */;\n        }\n    }\n    /**\n     * For DOCTYPES in particular, we don't care about the attributes. Just\n     * advance to the '>' character and emit the tag, unless we find a '<'\n     * character in which case we'll start a new tag.\n     *\n     * Example doctype tag:\n     *    <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n     *\n     * Actual spec: https://www.w3.org/TR/html51/syntax.html#doctype-state\n     */\n    function stateDoctype(char) {\n        if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '<') {\n            startNewTag();\n        }\n        else {\n            // stay in the Doctype state\n        }\n    }\n    /**\n     * Resets the state back to the Data state, and removes the current tag.\n     *\n     * We'll generally run this function whenever a \"parse error\" is\n     * encountered, where the current tag that is being read no longer looks\n     * like a real HTML tag.\n     */\n    function resetToDataState() {\n        state = 0 /* Data */;\n        currentTag = noCurrentTag;\n    }\n    /**\n     * Starts a new HTML tag at the current index, ignoring any previous HTML\n     * tag that was being read.\n     *\n     * We'll generally run this function whenever we read a new '<' character,\n     * including when we read a '<' character inside of an HTML tag that we were\n     * previously reading.\n     */\n    function startNewTag() {\n        state = 1 /* TagOpen */;\n        currentTag = new CurrentTag({ idx: charIdx });\n    }\n    /**\n     * Once we've decided to emit an open tag, that means we can also emit the\n     * text node before it.\n     */\n    function emitTagAndPreviousTextNode() {\n        var textBeforeTag = html.slice(currentDataIdx, currentTag.idx);\n        if (textBeforeTag) {\n            // the html tag was the first element in the html string, or two \n            // tags next to each other, in which case we should not emit a text \n            // node\n            onText(textBeforeTag, currentDataIdx);\n        }\n        if (currentTag.type === 'comment') {\n            onComment(currentTag.idx);\n        }\n        else if (currentTag.type === 'doctype') {\n            onDoctype(currentTag.idx);\n        }\n        else {\n            if (currentTag.isOpening) {\n                onOpenTag(currentTag.name, currentTag.idx);\n            }\n            if (currentTag.isClosing) { // note: self-closing tags will emit both opening and closing\n                onCloseTag(currentTag.name, currentTag.idx);\n            }\n        }\n        // Since we just emitted a tag, reset to the data state for the next char\n        resetToDataState();\n        currentDataIdx = charIdx + 1;\n    }\n    function emitText() {\n        var text = html.slice(currentDataIdx, charIdx);\n        onText(text, currentDataIdx);\n        currentDataIdx = charIdx + 1;\n    }\n    /**\n     * Captures the tag name from the start of the tag to the current character\n     * index, and converts it to lower case\n     */\n    function captureTagName() {\n        var startIdx = currentTag.idx + (currentTag.isClosing ? 2 : 1);\n        return html.slice(startIdx, charIdx).toLowerCase();\n    }\n    /**\n     * Causes the main loop to re-consume the current character, such as after\n     * encountering a \"parse error\" that changed state and needs to reconsume\n     * the same character in that new state.\n     */\n    function reconsumeCurrentCharacter() {\n        charIdx--;\n    }\n}\nvar CurrentTag = /** @class */ (function () {\n    function CurrentTag(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        this.idx = cfg.idx !== undefined ? cfg.idx : -1;\n        this.type = cfg.type || 'tag';\n        this.name = cfg.name || '';\n        this.isOpening = !!cfg.isOpening;\n        this.isClosing = !!cfg.isClosing;\n    }\n    return CurrentTag;\n}());\n\n//# sourceMappingURL=parse-html.js.map\n", "// WARNING: This file is modified a bit when it is compiled into index.js in \n// order to support nodejs interoperability with require('autolinker') directly. \n// This is done by the buildSrcFixCommonJsIndexTask() function in the gulpfile. \n// See that function for more details.\nimport Autolinker from './autolinker';\nexport default Autolinker;\nexport { Autolinker };\nexport * from './autolinker';\nexport * from './anchor-tag-builder';\nexport * from './html-tag';\nexport * from './match/index';\nexport * from './matcher/index';\n\n//# sourceMappingURL=index.js.map\n", "import { defaults, remove, splitAndCapture } from \"./utils\";\nimport { AnchorTagBuilder } from \"./anchor-tag-builder\";\nimport { Match } from \"./match/match\";\nimport { EmailMatch } from \"./match/email-match\";\nimport { HashtagMatch } from \"./match/hashtag-match\";\nimport { MentionMatch } from \"./match/mention-match\";\nimport { PhoneMatch } from \"./match/phone-match\";\nimport { UrlMatch } from \"./match/url-match\";\nimport { Matcher } from \"./matcher/matcher\";\nimport { HtmlTag } from \"./html-tag\";\nimport { EmailMatcher } from \"./matcher/email-matcher\";\nimport { UrlMatcher } from \"./matcher/url-matcher\";\nimport { HashtagMatcher } from \"./matcher/hashtag-matcher\";\nimport { PhoneMatcher } from \"./matcher/phone-matcher\";\nimport { MentionMatcher } from \"./matcher/mention-matcher\";\nimport { parseHtml } from './htmlParser/parse-html';\n/**\n * @class Autolinker\n * @extends Object\n *\n * Utility class used to process a given string of text, and wrap the matches in\n * the appropriate anchor (&lt;a&gt;) tags to turn them into links.\n *\n * Any of the configuration options may be provided in an Object provided\n * to the Autolinker constructor, which will configure how the {@link #link link()}\n * method will process the links.\n *\n * For example:\n *\n *     var autolinker = new Autolinker( {\n *         newWindow : false,\n *         truncate  : 30\n *     } );\n *\n *     var html = autolinker.link( \"Joe went to www.yahoo.com\" );\n *     // produces: 'Joe went to <a href=\"http://www.yahoo.com\">yahoo.com</a>'\n *\n *\n * The {@link #static-link static link()} method may also be used to inline\n * options into a single call, which may be more convenient for one-off uses.\n * For example:\n *\n *     var html = Autolinker.link( \"Joe went to www.yahoo.com\", {\n *         newWindow : false,\n *         truncate  : 30\n *     } );\n *     // produces: 'Joe went to <a href=\"http://www.yahoo.com\">yahoo.com</a>'\n *\n *\n * ## Custom Replacements of Links\n *\n * If the configuration options do not provide enough flexibility, a {@link #replaceFn}\n * may be provided to fully customize the output of Autolinker. This function is\n * called once for each URL/Email/Phone#/Hashtag/Mention (Twitter, Instagram, Soundcloud)\n * match that is encountered.\n *\n * For example:\n *\n *     var input = \"...\";  // string with URLs, Email Addresses, Phone #s, Hashtags, and Mentions (Twitter, Instagram, Soundcloud)\n *\n *     var linkedText = Autolinker.link( input, {\n *         replaceFn : function( match ) {\n *             console.log( \"href = \", match.getAnchorHref() );\n *             console.log( \"text = \", match.getAnchorText() );\n *\n *             switch( match.getType() ) {\n *                 case 'url' :\n *                     console.log( \"url: \", match.getUrl() );\n *\n *                     if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) {\n *                         var tag = match.buildTag();  // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes\n *                         tag.setAttr( 'rel', 'nofollow' );\n *                         tag.addClass( 'external-link' );\n *\n *                         return tag;\n *\n *                     } else {\n *                         return true;  // let Autolinker perform its normal anchor tag replacement\n *                     }\n *\n *                 case 'email' :\n *                     var email = match.getEmail();\n *                     console.log( \"email: \", email );\n *\n *                     if( email === \"my@own.address\" ) {\n *                         return false;  // don't auto-link this particular email address; leave as-is\n *                     } else {\n *                         return;  // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`)\n *                     }\n *\n *                 case 'phone' :\n *                     var phoneNumber = match.getPhoneNumber();\n *                     console.log( phoneNumber );\n *\n *                     return '<a href=\"http://newplace.to.link.phone.numbers.to/\">' + phoneNumber + '</a>';\n *\n *                 case 'hashtag' :\n *                     var hashtag = match.getHashtag();\n *                     console.log( hashtag );\n *\n *                     return '<a href=\"http://newplace.to.link.hashtag.handles.to/\">' + hashtag + '</a>';\n *\n *                 case 'mention' :\n *                     var mention = match.getMention();\n *                     console.log( mention );\n *\n *                     return '<a href=\"http://newplace.to.link.mention.to/\">' + mention + '</a>';\n *             }\n *         }\n *     } );\n *\n *\n * The function may return the following values:\n *\n * - `true` (Boolean): Allow Autolinker to replace the match as it normally\n *   would.\n * - `false` (Boolean): Do not replace the current match at all - leave as-is.\n * - Any String: If a string is returned from the function, the string will be\n *   used directly as the replacement HTML for the match.\n * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify\n *   an HTML tag before writing out its HTML text.\n */\nvar Autolinker = /** @class */ (function () {\n    /**\n     * @method constructor\n     * @param {Object} [cfg] The configuration options for the Autolinker instance,\n     *   specified in an Object (map).\n     */\n    function Autolinker(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        /**\n         * The Autolinker version number exposed on the instance itself.\n         *\n         * Ex: 0.25.1\n         */\n        this.version = Autolinker.version;\n        /**\n         * @cfg {Boolean/Object} [urls]\n         *\n         * `true` if URLs should be automatically linked, `false` if they should not\n         * be. Defaults to `true`.\n         *\n         * Examples:\n         *\n         *     urls: true\n         *\n         *     // or\n         *\n         *     urls: {\n         *         schemeMatches : true,\n         *         wwwMatches    : true,\n         *         tldMatches    : true\n         *     }\n         *\n         * As shown above, this option also accepts an Object form with 3 properties\n         * to allow for more customization of what exactly gets linked. All default\n         * to `true`:\n         *\n         * @cfg {Boolean} [urls.schemeMatches] `true` to match URLs found prefixed\n         *   with a scheme, i.e. `http://google.com`, or `other+scheme://google.com`,\n         *   `false` to prevent these types of matches.\n         * @cfg {Boolean} [urls.wwwMatches] `true` to match urls found prefixed with\n         *   `'www.'`, i.e. `www.google.com`. `false` to prevent these types of\n         *   matches. Note that if the URL had a prefixed scheme, and\n         *   `schemeMatches` is true, it will still be linked.\n         * @cfg {Boolean} [urls.tldMatches] `true` to match URLs with known top\n         *   level domains (.com, .net, etc.) that are not prefixed with a scheme or\n         *   `'www.'`. This option attempts to match anything that looks like a URL\n         *   in the given text. Ex: `google.com`, `asdf.org/?page=1`, etc. `false`\n         *   to prevent these types of matches.\n         */\n        this.urls = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [email=true]\n         *\n         * `true` if email addresses should be automatically linked, `false` if they\n         * should not be.\n         */\n        this.email = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [phone=true]\n         *\n         * `true` if Phone numbers (\"(555)555-5555\") should be automatically linked,\n         * `false` if they should not be.\n         */\n        this.phone = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean/String} [hashtag=false]\n         *\n         * A string for the service name to have hashtags (ex: \"#myHashtag\")\n         * auto-linked to. The currently-supported values are:\n         *\n         * - 'twitter'\n         * - 'facebook'\n         * - 'instagram'\n         *\n         * Pass `false` to skip auto-linking of hashtags.\n         */\n        this.hashtag = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String/Boolean} [mention=false]\n         *\n         * A string for the service name to have mentions (ex: \"@myuser\")\n         * auto-linked to. The currently supported values are:\n         *\n         * - 'twitter'\n         * - 'instagram'\n         * - 'soundcloud'\n         *\n         * Defaults to `false` to skip auto-linking of mentions.\n         */\n        this.mention = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [newWindow=true]\n         *\n         * `true` if the links should open in a new window, `false` otherwise.\n         */\n        this.newWindow = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean/Object} [stripPrefix=true]\n         *\n         * `true` if 'http://' (or 'https://') and/or the 'www.' should be stripped\n         * from the beginning of URL links' text, `false` otherwise. Defaults to\n         * `true`.\n         *\n         * Examples:\n         *\n         *     stripPrefix: true\n         *\n         *     // or\n         *\n         *     stripPrefix: {\n         *         scheme : true,\n         *         www    : true\n         *     }\n         *\n         * As shown above, this option also accepts an Object form with 2 properties\n         * to allow for more customization of what exactly is prevented from being\n         * displayed. Both default to `true`:\n         *\n         * @cfg {Boolean} [stripPrefix.scheme] `true` to prevent the scheme part of\n         *   a URL match from being displayed to the user. Example:\n         *   `'http://google.com'` will be displayed as `'google.com'`. `false` to\n         *   not strip the scheme. NOTE: Only an `'http://'` or `'https://'` scheme\n         *   will be removed, so as not to remove a potentially dangerous scheme\n         *   (such as `'file://'` or `'javascript:'`)\n         * @cfg {Boolean} [stripPrefix.www] www (Boolean): `true` to prevent the\n         *   `'www.'` part of a URL match from being displayed to the user. Ex:\n         *   `'www.google.com'` will be displayed as `'google.com'`. `false` to not\n         *   strip the `'www'`.\n         */\n        this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [stripTrailingSlash=true]\n         *\n         * `true` to remove the trailing slash from URL matches, `false` to keep\n         *  the trailing slash.\n         *\n         *  Example when `true`: `http://google.com/` will be displayed as\n         *  `http://google.com`.\n         */\n        this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [decodePercentEncoding=true]\n         *\n         * `true` to decode percent-encoded characters in URL matches, `false` to keep\n         *  the percent-encoded characters.\n         *\n         *  Example when `true`: `https://en.wikipedia.org/wiki/San_Jos%C3%A9` will\n         *  be displayed as `https://en.wikipedia.org/wiki/San_José`.\n         */\n        this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Number/Object} [truncate=0]\n         *\n         * ## Number Form\n         *\n         * A number for how many characters matched text should be truncated to\n         * inside the text of a link. If the matched text is over this number of\n         * characters, it will be truncated to this length by adding a two period\n         * ellipsis ('..') to the end of the string.\n         *\n         * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file'\n         * truncated to 25 characters might look something like this:\n         * 'yahoo.com/some/long/pat..'\n         *\n         * Example Usage:\n         *\n         *     truncate: 25\n         *\n         *\n         *  Defaults to `0` for \"no truncation.\"\n         *\n         *\n         * ## Object Form\n         *\n         * An Object may also be provided with two properties: `length` (Number) and\n         * `location` (String). `location` may be one of the following: 'end'\n         * (default), 'middle', or 'smart'.\n         *\n         * Example Usage:\n         *\n         *     truncate: { length: 25, location: 'middle' }\n         *\n         * @cfg {Number} [truncate.length=0] How many characters to allow before\n         *   truncation will occur. Defaults to `0` for \"no truncation.\"\n         * @cfg {\"end\"/\"middle\"/\"smart\"} [truncate.location=\"end\"]\n         *\n         * - 'end' (default): will truncate up to the number of characters, and then\n         *   add an ellipsis at the end. Ex: 'yahoo.com/some/long/pat..'\n         * - 'middle': will truncate and add the ellipsis in the middle. Ex:\n         *   'yahoo.com/s..th/to/a/file'\n         * - 'smart': for URLs where the algorithm attempts to strip out unnecessary\n         *   parts first (such as the 'www.', then URL scheme, hash, etc.),\n         *   attempting to make the URL human-readable before looking for a good\n         *   point to insert the ellipsis if it is still too long. Ex:\n         *   'yahoo.com/some..to/a/file'. For more details, see\n         *   {@link Autolinker.truncate.TruncateSmart}.\n         */\n        this.truncate = { length: 0, location: 'end' }; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} className\n         *\n         * A CSS class name to add to the generated links. This class will be added\n         * to all links, as well as this class plus match suffixes for styling\n         * url/email/phone/hashtag/mention links differently.\n         *\n         * For example, if this config is provided as \"myLink\", then:\n         *\n         * - URL links will have the CSS classes: \"myLink myLink-url\"\n         * - Email links will have the CSS classes: \"myLink myLink-email\", and\n         * - Phone links will have the CSS classes: \"myLink myLink-phone\"\n         * - Hashtag links will have the CSS classes: \"myLink myLink-hashtag\"\n         * - Mention links will have the CSS classes: \"myLink myLink-mention myLink-[type]\"\n         *   where [type] is either \"instagram\", \"twitter\" or \"soundcloud\"\n         */\n        this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Function} replaceFn\n         *\n         * A function to individually process each match found in the input string.\n         *\n         * See the class's description for usage.\n         *\n         * The `replaceFn` can be called with a different context object (`this`\n         * reference) using the {@link #context} cfg.\n         *\n         * This function is called with the following parameter:\n         *\n         * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which\n         *   can be used to retrieve information about the match that the `replaceFn`\n         *   is currently processing. See {@link Autolinker.match.Match} subclasses\n         *   for details.\n         */\n        this.replaceFn = null; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Object} context\n         *\n         * The context object (`this` reference) to call the `replaceFn` with.\n         *\n         * Defaults to this Autolinker instance.\n         */\n        this.context = undefined; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [sanitizeHtml=false]\n         *\n         * `true` to HTML-encode the start and end brackets of existing HTML tags found\n         * in the input string. This will escape `<` and `>` characters to `&lt;` and\n         * `&gt;`, respectively.\n         *\n         * Setting this to `true` will prevent XSS (Cross-site Scripting) attacks,\n         * but will remove the significance of existing HTML tags in the input string. If\n         * you would like to maintain the significance of existing HTML tags while also\n         * making the output HTML string safe, leave this option as `false` and use a\n         * tool like https://github.com/cure53/DOMPurify (or others) on the input string\n         * before running Autolinker.\n         */\n        this.sanitizeHtml = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @private\n         * @property {Autolinker.matcher.Matcher[]} matchers\n         *\n         * The {@link Autolinker.matcher.Matcher} instances for this Autolinker\n         * instance.\n         *\n         * This is lazily created in {@link #getMatchers}.\n         */\n        this.matchers = null;\n        /**\n         * @private\n         * @property {Autolinker.AnchorTagBuilder} tagBuilder\n         *\n         * The AnchorTagBuilder instance used to build match replacement anchor tags.\n         * Note: this is lazily instantiated in the {@link #getTagBuilder} method.\n         */\n        this.tagBuilder = null;\n        // Note: when `this.something` is used in the rhs of these assignments,\n        //       it refers to the default values set above the constructor\n        this.urls = this.normalizeUrlsCfg(cfg.urls);\n        this.email = typeof cfg.email === 'boolean' ? cfg.email : this.email;\n        this.phone = typeof cfg.phone === 'boolean' ? cfg.phone : this.phone;\n        this.hashtag = cfg.hashtag || this.hashtag;\n        this.mention = cfg.mention || this.mention;\n        this.newWindow = typeof cfg.newWindow === 'boolean' ? cfg.newWindow : this.newWindow;\n        this.stripPrefix = this.normalizeStripPrefixCfg(cfg.stripPrefix);\n        this.stripTrailingSlash = typeof cfg.stripTrailingSlash === 'boolean' ? cfg.stripTrailingSlash : this.stripTrailingSlash;\n        this.decodePercentEncoding = typeof cfg.decodePercentEncoding === 'boolean' ? cfg.decodePercentEncoding : this.decodePercentEncoding;\n        this.sanitizeHtml = cfg.sanitizeHtml || false;\n        // Validate the value of the `mention` cfg\n        var mention = this.mention;\n        if (mention !== false && mention !== 'twitter' && mention !== 'instagram' && mention !== 'soundcloud') {\n            throw new Error(\"invalid `mention` cfg - see docs\");\n        }\n        // Validate the value of the `hashtag` cfg\n        var hashtag = this.hashtag;\n        if (hashtag !== false && hashtag !== 'twitter' && hashtag !== 'facebook' && hashtag !== 'instagram') {\n            throw new Error(\"invalid `hashtag` cfg - see docs\");\n        }\n        this.truncate = this.normalizeTruncateCfg(cfg.truncate);\n        this.className = cfg.className || this.className;\n        this.replaceFn = cfg.replaceFn || this.replaceFn;\n        this.context = cfg.context || this;\n    }\n    /**\n     * Automatically links URLs, Email addresses, Phone Numbers, Twitter handles,\n     * Hashtags, and Mentions found in the given chunk of HTML. Does not link URLs\n     * found within HTML tags.\n     *\n     * For instance, if given the text: `You should go to http://www.yahoo.com`,\n     * then the result will be `You should go to &lt;a href=\"http://www.yahoo.com\"&gt;http://www.yahoo.com&lt;/a&gt;`\n     *\n     * Example:\n     *\n     *     var linkedText = Autolinker.link( \"Go to google.com\", { newWindow: false } );\n     *     // Produces: \"Go to <a href=\"http://google.com\">google.com</a>\"\n     *\n     * @static\n     * @param {String} textOrHtml The HTML or text to find matches within (depending\n     *   on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #mention},\n     *   {@link #hashtag}, and {@link #mention} options are enabled).\n     * @param {Object} [options] Any of the configuration options for the Autolinker\n     *   class, specified in an Object (map). See the class description for an\n     *   example call.\n     * @return {String} The HTML text, with matches automatically linked.\n     */\n    Autolinker.link = function (textOrHtml, options) {\n        var autolinker = new Autolinker(options);\n        return autolinker.link(textOrHtml);\n    };\n    /**\n     * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n     * numbers, username handles, and hashtags (depending on the configuration\n     * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n     * objects describing those matches (without making any replacements).\n     *\n     * Note that if parsing multiple pieces of text, it is slightly more efficient\n     * to create an Autolinker instance, and use the instance-level {@link #parse}\n     * method.\n     *\n     * Example:\n     *\n     *     var matches = Autolinker.parse( \"Hello google.com, I am asdf@asdf.com\", {\n     *         urls: true,\n     *         email: true\n     *     } );\n     *\n     *     console.log( matches.length );           // 2\n     *     console.log( matches[ 0 ].getType() );   // 'url'\n     *     console.log( matches[ 0 ].getUrl() );    // 'google.com'\n     *     console.log( matches[ 1 ].getType() );   // 'email'\n     *     console.log( matches[ 1 ].getEmail() );  // 'asdf@asdf.com'\n     *\n     * @static\n     * @param {String} textOrHtml The HTML or text to find matches within\n     *   (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n     *   {@link #hashtag}, and {@link #mention} options are enabled).\n     * @param {Object} [options] Any of the configuration options for the Autolinker\n     *   class, specified in an Object (map). See the class description for an\n     *   example call.\n     * @return {Autolinker.match.Match[]} The array of Matches found in the\n     *   given input `textOrHtml`.\n     */\n    Autolinker.parse = function (textOrHtml, options) {\n        var autolinker = new Autolinker(options);\n        return autolinker.parse(textOrHtml);\n    };\n    /**\n     * Normalizes the {@link #urls} config into an Object with 3 properties:\n     * `schemeMatches`, `wwwMatches`, and `tldMatches`, all Booleans.\n     *\n     * See {@link #urls} config for details.\n     *\n     * @private\n     * @param {Boolean/Object} urls\n     * @return {Object}\n     */\n    Autolinker.prototype.normalizeUrlsCfg = function (urls) {\n        if (urls == null)\n            urls = true; // default to `true`\n        if (typeof urls === 'boolean') {\n            return { schemeMatches: urls, wwwMatches: urls, tldMatches: urls };\n        }\n        else { // object form\n            return {\n                schemeMatches: typeof urls.schemeMatches === 'boolean' ? urls.schemeMatches : true,\n                wwwMatches: typeof urls.wwwMatches === 'boolean' ? urls.wwwMatches : true,\n                tldMatches: typeof urls.tldMatches === 'boolean' ? urls.tldMatches : true\n            };\n        }\n    };\n    /**\n     * Normalizes the {@link #stripPrefix} config into an Object with 2\n     * properties: `scheme`, and `www` - both Booleans.\n     *\n     * See {@link #stripPrefix} config for details.\n     *\n     * @private\n     * @param {Boolean/Object} stripPrefix\n     * @return {Object}\n     */\n    Autolinker.prototype.normalizeStripPrefixCfg = function (stripPrefix) {\n        if (stripPrefix == null)\n            stripPrefix = true; // default to `true`\n        if (typeof stripPrefix === 'boolean') {\n            return { scheme: stripPrefix, www: stripPrefix };\n        }\n        else { // object form\n            return {\n                scheme: typeof stripPrefix.scheme === 'boolean' ? stripPrefix.scheme : true,\n                www: typeof stripPrefix.www === 'boolean' ? stripPrefix.www : true\n            };\n        }\n    };\n    /**\n     * Normalizes the {@link #truncate} config into an Object with 2 properties:\n     * `length` (Number), and `location` (String).\n     *\n     * See {@link #truncate} config for details.\n     *\n     * @private\n     * @param {Number/Object} truncate\n     * @return {Object}\n     */\n    Autolinker.prototype.normalizeTruncateCfg = function (truncate) {\n        if (typeof truncate === 'number') {\n            return { length: truncate, location: 'end' };\n        }\n        else { // object, or undefined/null\n            return defaults(truncate || {}, {\n                length: Number.POSITIVE_INFINITY,\n                location: 'end'\n            });\n        }\n    };\n    /**\n     * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n     * numbers, username handles, and hashtags (depending on the configuration\n     * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n     * objects describing those matches (without making any replacements).\n     *\n     * This method is used by the {@link #link} method, but can also be used to\n     * simply do parsing of the input in order to discover what kinds of links\n     * there are and how many.\n     *\n     * Example usage:\n     *\n     *     var autolinker = new Autolinker( {\n     *         urls: true,\n     *         email: true\n     *     } );\n     *\n     *     var matches = autolinker.parse( \"Hello google.com, I am asdf@asdf.com\" );\n     *\n     *     console.log( matches.length );           // 2\n     *     console.log( matches[ 0 ].getType() );   // 'url'\n     *     console.log( matches[ 0 ].getUrl() );    // 'google.com'\n     *     console.log( matches[ 1 ].getType() );   // 'email'\n     *     console.log( matches[ 1 ].getEmail() );  // 'asdf@asdf.com'\n     *\n     * @param {String} textOrHtml The HTML or text to find matches within\n     *   (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n     *   {@link #hashtag}, and {@link #mention} options are enabled).\n     * @return {Autolinker.match.Match[]} The array of Matches found in the\n     *   given input `textOrHtml`.\n     */\n    Autolinker.prototype.parse = function (textOrHtml) {\n        var _this = this;\n        var skipTagNames = ['a', 'style', 'script'], skipTagsStackCount = 0, // used to only Autolink text outside of anchor/script/style tags. We don't want to autolink something that is already linked inside of an <a> tag, for instance\n        matches = [];\n        // Find all matches within the `textOrHtml` (but not matches that are\n        // already nested within <a>, <style> and <script> tags)\n        parseHtml(textOrHtml, {\n            onOpenTag: function (tagName) {\n                if (skipTagNames.indexOf(tagName) >= 0) {\n                    skipTagsStackCount++;\n                }\n            },\n            onText: function (text, offset) {\n                // Only process text nodes that are not within an <a>, <style> or <script> tag\n                if (skipTagsStackCount === 0) {\n                    // \"Walk around\" common HTML entities. An '&nbsp;' (for example)\n                    // could be at the end of a URL, but we don't want to \n                    // include the trailing '&' in the URL. See issue #76\n                    // TODO: Handle HTML entities separately in parseHtml() and\n                    // don't emit them as \"text\" except for &amp; entities\n                    var htmlCharacterEntitiesRegex = /(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi;\n                    var textSplit = splitAndCapture(text, htmlCharacterEntitiesRegex);\n                    var currentOffset_1 = offset;\n                    textSplit.forEach(function (splitText, i) {\n                        // even number matches are text, odd numbers are html entities\n                        if (i % 2 === 0) {\n                            var textNodeMatches = _this.parseText(splitText, currentOffset_1);\n                            matches.push.apply(matches, textNodeMatches);\n                        }\n                        currentOffset_1 += splitText.length;\n                    });\n                }\n            },\n            onCloseTag: function (tagName) {\n                if (skipTagNames.indexOf(tagName) >= 0) {\n                    skipTagsStackCount = Math.max(skipTagsStackCount - 1, 0); // attempt to handle extraneous </a> tags by making sure the stack count never goes below 0\n                }\n            },\n            onComment: function (offset) { },\n            onDoctype: function (offset) { }, // no need to process doctype nodes\n        });\n        // After we have found all matches, remove subsequent matches that\n        // overlap with a previous match. This can happen for instance with URLs,\n        // where the url 'google.com/#link' would match '#link' as a hashtag.\n        matches = this.compactMatches(matches);\n        // And finally, remove matches for match types that have been turned\n        // off. We needed to have all match types turned on initially so that\n        // things like hashtags could be filtered out if they were really just\n        // part of a URL match (for instance, as a named anchor).\n        matches = this.removeUnwantedMatches(matches);\n        return matches;\n    };\n    /**\n     * After we have found all matches, we need to remove matches that overlap\n     * with a previous match. This can happen for instance with URLs, where the\n     * url 'google.com/#link' would match '#link' as a hashtag. Because the\n     * '#link' part is contained in a larger match that comes before the HashTag\n     * match, we'll remove the HashTag match.\n     *\n     * @private\n     * @param {Autolinker.match.Match[]} matches\n     * @return {Autolinker.match.Match[]}\n     */\n    Autolinker.prototype.compactMatches = function (matches) {\n        // First, the matches need to be sorted in order of offset\n        matches.sort(function (a, b) { return a.getOffset() - b.getOffset(); });\n        for (var i = 0; i < matches.length - 1; i++) {\n            var match = matches[i], offset = match.getOffset(), matchedTextLength = match.getMatchedText().length, endIdx = offset + matchedTextLength;\n            if (i + 1 < matches.length) {\n                // Remove subsequent matches that equal offset with current match\n                if (matches[i + 1].getOffset() === offset) {\n                    var removeIdx = matches[i + 1].getMatchedText().length > matchedTextLength ? i : i + 1;\n                    matches.splice(removeIdx, 1);\n                    continue;\n                }\n                // Remove subsequent matches that overlap with the current match\n                if (matches[i + 1].getOffset() < endIdx) {\n                    matches.splice(i + 1, 1);\n                }\n            }\n        }\n        return matches;\n    };\n    /**\n     * Removes matches for matchers that were turned off in the options. For\n     * example, if {@link #hashtag hashtags} were not to be matched, we'll\n     * remove them from the `matches` array here.\n     *\n     * Note: we *must* use all Matchers on the input string, and then filter\n     * them out later. For example, if the options were `{ url: false, hashtag: true }`,\n     * we wouldn't want to match the text '#link' as a HashTag inside of the text\n     * 'google.com/#link'. The way the algorithm works is that we match the full\n     * URL first (which prevents the accidental HashTag match), and then we'll\n     * simply throw away the URL match.\n     *\n     * @private\n     * @param {Autolinker.match.Match[]} matches The array of matches to remove\n     *   the unwanted matches from. Note: this array is mutated for the\n     *   removals.\n     * @return {Autolinker.match.Match[]} The mutated input `matches` array.\n     */\n    Autolinker.prototype.removeUnwantedMatches = function (matches) {\n        if (!this.hashtag)\n            remove(matches, function (match) { return match.getType() === 'hashtag'; });\n        if (!this.email)\n            remove(matches, function (match) { return match.getType() === 'email'; });\n        if (!this.phone)\n            remove(matches, function (match) { return match.getType() === 'phone'; });\n        if (!this.mention)\n            remove(matches, function (match) { return match.getType() === 'mention'; });\n        if (!this.urls.schemeMatches) {\n            remove(matches, function (m) { return m.getType() === 'url' && m.getUrlMatchType() === 'scheme'; });\n        }\n        if (!this.urls.wwwMatches) {\n            remove(matches, function (m) { return m.getType() === 'url' && m.getUrlMatchType() === 'www'; });\n        }\n        if (!this.urls.tldMatches) {\n            remove(matches, function (m) { return m.getType() === 'url' && m.getUrlMatchType() === 'tld'; });\n        }\n        return matches;\n    };\n    /**\n     * Parses the input `text` looking for URLs, email addresses, phone\n     * numbers, username handles, and hashtags (depending on the configuration\n     * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n     * objects describing those matches.\n     *\n     * This method processes a **non-HTML string**, and is used to parse and\n     * match within the text nodes of an HTML string. This method is used\n     * internally by {@link #parse}.\n     *\n     * @private\n     * @param {String} text The text to find matches within (depending on if the\n     *   {@link #urls}, {@link #email}, {@link #phone},\n     *   {@link #hashtag}, and {@link #mention} options are enabled). This must be a non-HTML string.\n     * @param {Number} [offset=0] The offset of the text node within the\n     *   original string. This is used when parsing with the {@link #parse}\n     *   method to generate correct offsets within the {@link Autolinker.match.Match}\n     *   instances, but may be omitted if calling this method publicly.\n     * @return {Autolinker.match.Match[]} The array of Matches found in the\n     *   given input `text`.\n     */\n    Autolinker.prototype.parseText = function (text, offset) {\n        if (offset === void 0) { offset = 0; }\n        offset = offset || 0;\n        var matchers = this.getMatchers(), matches = [];\n        for (var i = 0, numMatchers = matchers.length; i < numMatchers; i++) {\n            var textMatches = matchers[i].parseMatches(text);\n            // Correct the offset of each of the matches. They are originally\n            // the offset of the match within the provided text node, but we\n            // need to correct them to be relative to the original HTML input\n            // string (i.e. the one provided to #parse).\n            for (var j = 0, numTextMatches = textMatches.length; j < numTextMatches; j++) {\n                textMatches[j].setOffset(offset + textMatches[j].getOffset());\n            }\n            matches.push.apply(matches, textMatches);\n        }\n        return matches;\n    };\n    /**\n     * Automatically links URLs, Email addresses, Phone numbers, Hashtags,\n     * and Mentions (Twitter, Instagram, Soundcloud) found in the given chunk of HTML. Does not link\n     * URLs found within HTML tags.\n     *\n     * For instance, if given the text: `You should go to http://www.yahoo.com`,\n     * then the result will be `You should go to\n     * &lt;a href=\"http://www.yahoo.com\"&gt;http://www.yahoo.com&lt;/a&gt;`\n     *\n     * This method finds the text around any HTML elements in the input\n     * `textOrHtml`, which will be the text that is processed. Any original HTML\n     * elements will be left as-is, as well as the text that is already wrapped\n     * in anchor (&lt;a&gt;) tags.\n     *\n     * @param {String} textOrHtml The HTML or text to autolink matches within\n     *   (depending on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #hashtag}, and {@link #mention} options are enabled).\n     * @return {String} The HTML, with matches automatically linked.\n     */\n    Autolinker.prototype.link = function (textOrHtml) {\n        if (!textOrHtml) {\n            return \"\";\n        } // handle `null` and `undefined` (for JavaScript users that don't have TypeScript support)\n        /* We would want to sanitize the start and end characters of a tag\n         * before processing the string in order to avoid an XSS scenario.\n         * This behaviour can be changed by toggling the sanitizeHtml option.\n         */\n        if (this.sanitizeHtml) {\n            textOrHtml = textOrHtml\n                .replace(/</g, '&lt;')\n                .replace(/>/g, '&gt;');\n        }\n        var matches = this.parse(textOrHtml), newHtml = [], lastIndex = 0;\n        for (var i = 0, len = matches.length; i < len; i++) {\n            var match = matches[i];\n            newHtml.push(textOrHtml.substring(lastIndex, match.getOffset()));\n            newHtml.push(this.createMatchReturnVal(match));\n            lastIndex = match.getOffset() + match.getMatchedText().length;\n        }\n        newHtml.push(textOrHtml.substring(lastIndex)); // handle the text after the last match\n        return newHtml.join('');\n    };\n    /**\n     * Creates the return string value for a given match in the input string.\n     *\n     * This method handles the {@link #replaceFn}, if one was provided.\n     *\n     * @private\n     * @param {Autolinker.match.Match} match The Match object that represents\n     *   the match.\n     * @return {String} The string that the `match` should be replaced with.\n     *   This is usually the anchor tag string, but may be the `matchStr` itself\n     *   if the match is not to be replaced.\n     */\n    Autolinker.prototype.createMatchReturnVal = function (match) {\n        // Handle a custom `replaceFn` being provided\n        var replaceFnResult;\n        if (this.replaceFn) {\n            replaceFnResult = this.replaceFn.call(this.context, match); // Autolinker instance is the context\n        }\n        if (typeof replaceFnResult === 'string') {\n            return replaceFnResult; // `replaceFn` returned a string, use that\n        }\n        else if (replaceFnResult === false) {\n            return match.getMatchedText(); // no replacement for the match\n        }\n        else if (replaceFnResult instanceof HtmlTag) {\n            return replaceFnResult.toAnchorString();\n        }\n        else { // replaceFnResult === true, or no/unknown return value from function\n            // Perform Autolinker's default anchor tag generation\n            var anchorTag = match.buildTag(); // returns an Autolinker.HtmlTag instance\n            return anchorTag.toAnchorString();\n        }\n    };\n    /**\n     * Lazily instantiates and returns the {@link Autolinker.matcher.Matcher}\n     * instances for this Autolinker instance.\n     *\n     * @private\n     * @return {Autolinker.matcher.Matcher[]}\n     */\n    Autolinker.prototype.getMatchers = function () {\n        if (!this.matchers) {\n            var tagBuilder = this.getTagBuilder();\n            var matchers = [\n                new HashtagMatcher({ tagBuilder: tagBuilder, serviceName: this.hashtag }),\n                new EmailMatcher({ tagBuilder: tagBuilder }),\n                new PhoneMatcher({ tagBuilder: tagBuilder }),\n                new MentionMatcher({ tagBuilder: tagBuilder, serviceName: this.mention }),\n                new UrlMatcher({ tagBuilder: tagBuilder, stripPrefix: this.stripPrefix, stripTrailingSlash: this.stripTrailingSlash, decodePercentEncoding: this.decodePercentEncoding })\n            ];\n            return (this.matchers = matchers);\n        }\n        else {\n            return this.matchers;\n        }\n    };\n    /**\n     * Returns the {@link #tagBuilder} instance for this Autolinker instance,\n     * lazily instantiating it if it does not yet exist.\n     *\n     * @private\n     * @return {Autolinker.AnchorTagBuilder}\n     */\n    Autolinker.prototype.getTagBuilder = function () {\n        var tagBuilder = this.tagBuilder;\n        if (!tagBuilder) {\n            tagBuilder = this.tagBuilder = new AnchorTagBuilder({\n                newWindow: this.newWindow,\n                truncate: this.truncate,\n                className: this.className\n            });\n        }\n        return tagBuilder;\n    };\n    /**\n     * @static\n     * @property {String} version\n     *\n     * The Autolinker version number in the form major.minor.patch\n     *\n     * Ex: 0.25.1\n     */\n    Autolinker.version = '3.14.3';\n    /**\n     * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder\n     * class is provided as a static on the Autolinker class.\n     */\n    Autolinker.AnchorTagBuilder = AnchorTagBuilder;\n    /**\n     * For backwards compatibility with Autolinker 1.x, the HtmlTag class is\n     * provided as a static on the Autolinker class.\n     */\n    Autolinker.HtmlTag = HtmlTag;\n    /**\n     * For backwards compatibility with Autolinker 1.x, the Matcher classes are\n     * provided as statics on the Autolinker class.\n     */\n    Autolinker.matcher = {\n        Email: EmailMatcher,\n        Hashtag: HashtagMatcher,\n        Matcher: Matcher,\n        Mention: MentionMatcher,\n        Phone: PhoneMatcher,\n        Url: UrlMatcher\n    };\n    /**\n     * For backwards compatibility with Autolinker 1.x, the Match classes are\n     * provided as statics on the Autolinker class.\n     */\n    Autolinker.match = {\n        Email: EmailMatch,\n        Hashtag: HashtagMatch,\n        Match: Match,\n        Mention: MentionMatch,\n        Phone: PhoneMatch,\n        Url: UrlMatch\n    };\n    return Autolinker;\n}());\nexport default Autolinker;\n\n//# sourceMappingURL=autolinker.js.map\n", "import Autolinker from 'autolinker';\n\n// Autoconvert URL-like texts to links\n\n\nvar LINK_SCAN_RE = /www|@|\\:\\/\\//;\n\n\nfunction isLinkOpen(str) {\n  return /^<a[>\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n  return /^<\\/a\\s*>/i.test(str);\n}\n\n// Stupid fabric to avoid singletons, for thread safety.\n// Required for engines like Nashorn.\n//\nfunction createLinkifier() {\n  var links = [];\n  var autolinker = new Autolinker({\n    stripPrefix: false,\n    url: true,\n    email: true,\n    replaceFn: function (match) {\n      // Only collect matched strings but don't change anything.\n      switch (match.getType()) {\n        /*eslint default-case:0*/\n        case 'url':\n          links.push({\n            text: match.matchedText,\n            url: match.getUrl()\n          });\n          break;\n        case 'email':\n          links.push({\n            text: match.matchedText,\n            // normalize email protocol\n            url: 'mailto:' + match.getEmail().replace(/^mailto:/i, '')\n          });\n          break;\n      }\n      return false;\n    }\n  });\n\n  return {\n    links: links,\n    autolinker: autolinker\n  };\n}\n\n\nfunction parseTokens(state) {\n  var i, j, l, tokens, token, text, nodes, ln, pos, level, htmlLinkLevel,\n      blockTokens = state.tokens,\n      linkifier = null, links, autolinker;\n\n  for (j = 0, l = blockTokens.length; j < l; j++) {\n    if (blockTokens[j].type !== 'inline') { continue; }\n    tokens = blockTokens[j].children;\n\n    htmlLinkLevel = 0;\n\n    // We scan from the end, to keep position when new tags added.\n    // Use reversed logic in links start/end match\n    for (i = tokens.length - 1; i >= 0; i--) {\n      token = tokens[i];\n\n      // Skip content of markdown links\n      if (token.type === 'link_close') {\n        i--;\n        while (tokens[i].level !== token.level && tokens[i].type !== 'link_open') {\n          i--;\n        }\n        continue;\n      }\n\n      // Skip content of html tag links\n      if (token.type === 'htmltag') {\n        if (isLinkOpen(token.content) && htmlLinkLevel > 0) {\n          htmlLinkLevel--;\n        }\n        if (isLinkClose(token.content)) {\n          htmlLinkLevel++;\n        }\n      }\n      if (htmlLinkLevel > 0) { continue; }\n\n      if (token.type === 'text' && LINK_SCAN_RE.test(token.content)) {\n\n        // Init linkifier in lazy manner, only if required.\n        if (!linkifier) {\n          linkifier = createLinkifier();\n          links = linkifier.links;\n          autolinker = linkifier.autolinker;\n        }\n\n        text = token.content;\n        links.length = 0;\n        autolinker.link(text);\n\n        if (!links.length) { continue; }\n\n        // Now split string to nodes\n        nodes = [];\n        level = token.level;\n\n        for (ln = 0; ln < links.length; ln++) {\n\n          if (!state.inline.validateLink(links[ln].url)) { continue; }\n\n          pos = text.indexOf(links[ln].text);\n\n          if (pos) {\n            nodes.push({\n              type: 'text',\n              content: text.slice(0, pos),\n              level: level\n            });\n          }\n          nodes.push({\n            type: 'link_open',\n            href: links[ln].url,\n            title: '',\n            level: level++\n          });\n          nodes.push({\n            type: 'text',\n            content: links[ln].text,\n            level: level\n          });\n          nodes.push({\n            type: 'link_close',\n            level: --level\n          });\n          text = text.slice(pos + links[ln].text.length);\n        }\n        if (text.length) {\n          nodes.push({\n            type: 'text',\n            content: text,\n            level: level\n          });\n        }\n\n        // replace current node\n        blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1));\n      }\n    }\n  }\n}\nfunction linkify(md) {\n  md.core.ruler.push('linkify', parseTokens);\n}\n\nexport { linkify };\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Remarkable } from \"remarkable\"\nimport { linkify } from \"remarkable/linkify\"\nimport DomPurify from \"dompurify\"\nimport cx from \"classnames\"\n\nif (DomPurify.addHook) {\n  DomPurify.addHook(\"beforeSanitizeElements\", function (current, ) {\n    // Attach safe `rel` values to all elements that contain an `href`,\n    // i.e. all anchors that are links.\n    // We _could_ just look for elements that have a non-self target,\n    // but applying it more broadly shouldn't hurt anything, and is safer.\n    if (current.href) {\n      current.setAttribute(\"rel\", \"noopener noreferrer\")\n    }\n    return current\n  })\n}\n\nfunction Markdown({ source, className = \"\", getConfigs }) {\n  if (typeof source !== \"string\") {\n    return null\n  }\n\n  const md = new Remarkable({\n    html: true,\n    typographer: true,\n    breaks: true,\n    linkTarget: \"_blank\"\n  }).use(linkify)\n\n  md.core.ruler.disable([\"replacements\", \"smartquotes\"])\n\n  const { useUnsafeMarkdown } = getConfigs()\n  const html = md.render(source)\n  const sanitized = sanitizer(html, { useUnsafeMarkdown })\n\n  if (!source || !html || !sanitized) {\n    return null\n  }\n\n  return (\n    <div className={cx(className, \"markdown\")} dangerouslySetInnerHTML={{ __html: sanitized }}></div>\n  )\n}\n\nMarkdown.propTypes = {\n  source: PropTypes.string.isRequired,\n  className: PropTypes.string,\n  getConfigs: PropTypes.func,\n}\n\nMarkdown.defaultProps = {\n  getConfigs: () => ({ useUnsafeMarkdown: false }),\n}\n\nexport default Markdown\n\nexport function sanitizer(str, { useUnsafeMarkdown = false } = {}) {\n  const ALLOW_DATA_ATTR = useUnsafeMarkdown\n  const FORBID_ATTR = useUnsafeMarkdown ? [] : [\"style\", \"class\"]\n\n  if (useUnsafeMarkdown && !sanitizer.hasWarnedAboutDeprecation) {\n    console.warn(`useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0.`)\n    sanitizer.hasWarnedAboutDeprecation = true\n  }\n\n  return DomPurify.sanitize(str, {\n    ADD_ATTR: [\"target\"],\n    FORBID_TAGS: [\"style\", \"form\"],\n    ALLOW_DATA_ATTR,\n    FORBID_ATTR,\n  })\n}\nsanitizer.hasWarnedAboutDeprecation = false\n", "import React from 'react';\nimport { is } from 'immutable';\n\nfunction _typeof(obj) {\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\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\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\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(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(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nvar NOT_SET = {};\nfunction isMapLike(collection) {\n  return collection !== null && _typeof(collection) === 'object' && typeof collection.get === 'function' && typeof collection.has === 'function';\n}\n\nfunction isInvalid(collection) {\n  return collection === null || collection === undefined;\n}\n\nfunction get(collection, key, notSetValue) {\n  if (isInvalid(collection)) {\n    return notSetValue;\n  }\n\n  if (isMapLike(collection)) {\n    return collection.has(key) ? collection.get(key) : notSetValue;\n  }\n\n  return hasOwnProperty.call(collection, key) ? collection[key] : notSetValue;\n}\nfunction getIn(collection, keyPath, notSetValue) {\n  var i = 0;\n\n  while (i !== keyPath.length) {\n    collection = get(collection, keyPath[i++], NOT_SET);\n\n    if (collection === NOT_SET) {\n      return notSetValue;\n    }\n  }\n\n  return collection;\n}\n\nfunction check(config) {\n  var prev = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var checkItem = createChecker(prev, next);\n  var checklist = config || Object.keys(_objectSpread2({}, next, {}, prev));\n  return checklist.every(checkItem);\n}\n\nfunction createChecker(prev, next) {\n  return function (name) {\n    if (typeof name === 'string') {\n      return is(next[name], prev[name]);\n    } else if (Array.isArray(name)) {\n      return is(getIn(next, name), getIn(prev, name));\n    }\n\n    throw new TypeError('Invalid key: expected Array or string: ' + name);\n  };\n}\n\nvar ImmutablePureComponent =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inherits(ImmutablePureComponent, _React$Component);\n\n  function ImmutablePureComponent() {\n    _classCallCheck(this, ImmutablePureComponent);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(ImmutablePureComponent).apply(this, arguments));\n  }\n\n  _createClass(ImmutablePureComponent, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      var nextState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return !check(this.updateOnProps, this.props, nextProps, 'updateOnProps') || !check(this.updateOnStates, this.state, nextState, 'updateOnStates');\n    }\n  }]);\n\n  return ImmutablePureComponent;\n}(React.Component);\n\nfunction immutableMemo(Component, updateOnProps) {\n  return React.memo(Component, function (prev, next) {\n    return check(updateOnProps, prev, next, 'immutableMemo');\n  });\n}\n\nexport default ImmutablePureComponent;\nexport { ImmutablePureComponent, immutableMemo };\n", "import React from \"react\"\nimport ImmutablePureComponent from \"react-immutable-pure-component\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport PropTypes from \"prop-types\"\n\nexport default class Model extends ImmutablePureComponent {\n  static propTypes = {\n    schema: ImPropTypes.map.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    name: PropTypes.string,\n    displayName: PropTypes.string,\n    isRef: PropTypes.bool,\n    required: PropTypes.bool,\n    expandDepth: PropTypes.number,\n    depth: PropTypes.number,\n    specPath: ImPropTypes.list.isRequired,\n    includeReadOnly: PropTypes.bool,\n    includeWriteOnly: PropTypes.bool,\n  }\n\n  getModelName =( ref )=> {\n    if ( ref.indexOf(\"#/definitions/\") !== -1 ) {\n      return ref.replace(/^.*#\\/definitions\\//, \"\")\n    }\n    if ( ref.indexOf(\"#/components/schemas/\") !== -1 ) {\n      return ref.replace(/^.*#\\/components\\/schemas\\//, \"\")\n    }\n  }\n\n  getRefSchema =( model )=> {\n    let { specSelectors } = this.props\n\n    return specSelectors.findDefinition(model)\n  }\n\n  render () {\n    let { getComponent, getConfigs, specSelectors, schema, required, name, isRef, specPath, displayName,\n      includeReadOnly, includeWriteOnly} = this.props\n    const ObjectModel = getComponent(\"ObjectModel\")\n    const ArrayModel = getComponent(\"ArrayModel\")\n    const PrimitiveModel = getComponent(\"PrimitiveModel\")\n    let type = \"object\"\n    let $$ref = schema && schema.get(\"$$ref\")\n\n    // If we weren't passed a `name` but have a ref, grab the name from the ref\n    if ( !name && $$ref ) {\n      name = this.getModelName( $$ref )\n    }\n    // If we weren't passed a `schema` but have a ref, grab the schema from the ref\n    if ( !schema && $$ref ) {\n      schema = this.getRefSchema( name )\n    }\n\n    if(!schema) {\n      return <span className=\"model model-title\">\n              <span className=\"model-title__text\">{ displayName || name }</span>\n              <img src={require(\"core/../img/rolling-load.svg\")} height={\"20px\"} width={\"20px\"} />\n            </span>\n    }\n\n    const deprecated = specSelectors.isOAS3() && schema.get(\"deprecated\")\n    isRef = isRef !== undefined ? isRef : !!$$ref\n    type = schema && schema.get(\"type\") || type\n\n    switch(type) {\n      case \"object\":\n        return <ObjectModel\n          className=\"object\" { ...this.props }\n          specPath={specPath}\n          getConfigs={ getConfigs }\n          schema={ schema }\n          name={ name }\n          deprecated={deprecated}\n          isRef={ isRef }\n          includeReadOnly = {includeReadOnly}\n          includeWriteOnly = {includeWriteOnly}/>\n      case \"array\":\n        return <ArrayModel\n          className=\"array\" { ...this.props }\n          getConfigs={ getConfigs }\n          schema={ schema }\n          name={ name }\n          deprecated={deprecated}\n          required={ required }\n          includeReadOnly = {includeReadOnly}\n          includeWriteOnly = {includeWriteOnly}/>\n      case \"string\":\n      case \"number\":\n      case \"integer\":\n      case \"boolean\":\n      default:\n        return <PrimitiveModel\n          { ...this.props }\n          getComponent={ getComponent }\n          getConfigs={ getConfigs }\n          schema={ schema }\n          name={ name }\n          deprecated={deprecated}\n          required={ required }/>\n    }\n  }\n}\n", "'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n", "/*! @license DOMPurify 2.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.3/LICENSE */\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 = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n  var hasOwnProperty = Object.hasOwnProperty,\n      setPrototypeOf = Object.setPrototypeOf,\n      isFrozen = Object.isFrozen,\n      getPrototypeOf = Object.getPrototypeOf,\n      getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n  var freeze = Object.freeze,\n      seal = Object.seal,\n      create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n  var _ref = typeof Reflect !== 'undefined' && Reflect,\n      apply = _ref.apply,\n      construct = _ref.construct;\n\n  if (!apply) {\n    apply = function apply(fun, thisValue, args) {\n      return fun.apply(thisValue, args);\n    };\n  }\n\n  if (!freeze) {\n    freeze = function freeze(x) {\n      return x;\n    };\n  }\n\n  if (!seal) {\n    seal = function seal(x) {\n      return x;\n    };\n  }\n\n  if (!construct) {\n    construct = function construct(Func, args) {\n      return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n    };\n  }\n\n  var arrayForEach = unapply(Array.prototype.forEach);\n  var arrayPop = unapply(Array.prototype.pop);\n  var arrayPush = unapply(Array.prototype.push);\n\n  var stringToLowerCase = unapply(String.prototype.toLowerCase);\n  var stringMatch = unapply(String.prototype.match);\n  var stringReplace = unapply(String.prototype.replace);\n  var stringIndexOf = unapply(String.prototype.indexOf);\n  var stringTrim = unapply(String.prototype.trim);\n\n  var regExpTest = unapply(RegExp.prototype.test);\n\n  var typeErrorCreate = unconstruct(TypeError);\n\n  function unapply(func) {\n    return function (thisArg) {\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      return apply(func, thisArg, args);\n    };\n  }\n\n  function unconstruct(func) {\n    return function () {\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return construct(func, args);\n    };\n  }\n\n  /* Add properties to a lookup table */\n  function addToSet(set, array) {\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\n    var l = array.length;\n    while (l--) {\n      var element = array[l];\n      if (typeof element === 'string') {\n        var lcElement = stringToLowerCase(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\n          element = lcElement;\n        }\n      }\n\n      set[element] = true;\n    }\n\n    return set;\n  }\n\n  /* Shallow clone an object */\n  function clone(object) {\n    var newObject = create(null);\n\n    var property = void 0;\n    for (property in object) {\n      if (apply(hasOwnProperty, object, [property])) {\n        newObject[property] = object[property];\n      }\n    }\n\n    return newObject;\n  }\n\n  /* IE10 doesn't support __lookupGetter__ so lets'\n   * simulate it. It also automatically checks\n   * if the prop is function or getter and behaves\n   * accordingly. */\n  function lookupGetter(object, prop) {\n    while (object !== null) {\n      var desc = getOwnPropertyDescriptor(object, prop);\n      if (desc) {\n        if (desc.get) {\n          return unapply(desc.get);\n        }\n\n        if (typeof desc.value === 'function') {\n          return unapply(desc.value);\n        }\n      }\n\n      object = getPrototypeOf(object);\n    }\n\n    function fallbackValue(element) {\n      console.warn('fallback value for', element);\n      return null;\n    }\n\n    return fallbackValue;\n  }\n\n  var html = 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']);\n\n  // SVG\n  var svg = 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']);\n\n  var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\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.\n  var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', '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']);\n\n  var mathMl = 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']);\n\n  // Similarly to SVG, we want to know all MathML elements,\n  // even those that we disallow by default.\n  var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n  var text = freeze(['#text']);\n\n  var html$1 = 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', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', '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', 'xmlns', 'slot']);\n\n  var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', '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', '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', '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', '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', 'targetx', 'targety', 'transform', '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']);\n\n  var mathMl$1 = 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']);\n\n  var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n  // eslint-disable-next-line unicorn/better-regex\n  var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n  var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n  var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n  var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n  var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n  );\n  var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n  var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n  );\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n  function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n  var getGlobal = function getGlobal() {\n    return typeof window === 'undefined' ? null : window;\n  };\n\n  /**\n   * Creates a no-op policy for internal use only.\n   * Don't export this function outside this module!\n   * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n   * @param {Document} document The document object (to determine policy name suffix)\n   * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n   * are not supported).\n   */\n  var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n    if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n      return null;\n    }\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    var suffix = null;\n    var ATTR_NAME = 'data-tt-policy-suffix';\n    if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n      suffix = document.currentScript.getAttribute(ATTR_NAME);\n    }\n\n    var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n    try {\n      return trustedTypes.createPolicy(policyName, {\n        createHTML: function createHTML(html$$1) {\n          return html$$1;\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  };\n\n  function createDOMPurify() {\n    var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n    var DOMPurify = function DOMPurify(root) {\n      return createDOMPurify(root);\n    };\n\n    /**\n     * Version label, exposed for easier checks\n     * if DOMPurify is up to date or not\n     */\n    DOMPurify.version = '2.3.3';\n\n    /**\n     * Array of elements that DOMPurify removed during sanitation.\n     * Empty if nothing was removed.\n     */\n    DOMPurify.removed = [];\n\n    if (!window || !window.document || window.document.nodeType !== 9) {\n      // Not running in a browser, provide a factory function\n      // so that you can pass your own Window\n      DOMPurify.isSupported = false;\n\n      return DOMPurify;\n    }\n\n    var originalDocument = window.document;\n\n    var document = window.document;\n    var DocumentFragment = window.DocumentFragment,\n        HTMLTemplateElement = window.HTMLTemplateElement,\n        Node = window.Node,\n        Element = window.Element,\n        NodeFilter = window.NodeFilter,\n        _window$NamedNodeMap = window.NamedNodeMap,\n        NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n        Text = window.Text,\n        Comment = window.Comment,\n        DOMParser = window.DOMParser,\n        trustedTypes = window.trustedTypes;\n\n\n    var ElementPrototype = Element.prototype;\n\n    var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n    var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n    var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n    var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\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      var template = document.createElement('template');\n      if (template.content && template.content.ownerDocument) {\n        document = template.content.ownerDocument;\n      }\n    }\n\n    var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n    var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n    var _document = document,\n        implementation = _document.implementation,\n        createNodeIterator = _document.createNodeIterator,\n        createDocumentFragment = _document.createDocumentFragment,\n        getElementsByTagName = _document.getElementsByTagName;\n    var importNode = originalDocument.importNode;\n\n\n    var documentMode = {};\n    try {\n      documentMode = clone(document).documentMode ? document.documentMode : {};\n    } catch (_) {}\n\n    var hooks = {};\n\n    /**\n     * Expose whether this browser supports running the full DOMPurify.\n     */\n    DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n    var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n        ERB_EXPR$$1 = ERB_EXPR,\n        DATA_ATTR$$1 = DATA_ATTR,\n        ARIA_ATTR$$1 = ARIA_ATTR,\n        IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n        ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n    var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\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\n    /* allowed element names */\n\n    var ALLOWED_TAGS = null;\n    var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n    /* Allowed attribute names */\n    var ALLOWED_ATTR = null;\n    var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n    /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n    var FORBID_TAGS = null;\n\n    /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n    var FORBID_ATTR = null;\n\n    /* Decide if ARIA attributes are okay */\n    var ALLOW_ARIA_ATTR = true;\n\n    /* Decide if custom data attributes are okay */\n    var ALLOW_DATA_ATTR = true;\n\n    /* Decide if unknown protocols are okay */\n    var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n    /* Output should be safe for common template engines.\n     * This means, DOMPurify removes data attributes, mustaches and ERB\n     */\n    var SAFE_FOR_TEMPLATES = false;\n\n    /* Decide if document with <html>... should be returned */\n    var WHOLE_DOCUMENT = false;\n\n    /* Track whether config is already set on this instance of DOMPurify. */\n    var SET_CONFIG = false;\n\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    var FORCE_BODY = false;\n\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    var RETURN_DOM = false;\n\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    var RETURN_DOM_FRAGMENT = false;\n\n    /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n     * `Node` is imported into the current `Document`. If this flag is not enabled the\n     * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n     * DOMPurify.\n     *\n     * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n     * might cause XSS from attacks hidden in closed shadowroots in case the browser\n     * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n     */\n    var RETURN_DOM_IMPORT = true;\n\n    /* Try to return a Trusted Type object instead of a string, return a string in\n     * case Trusted Types are not supported  */\n    var RETURN_TRUSTED_TYPE = false;\n\n    /* Output should be free from DOM clobbering attacks? */\n    var SANITIZE_DOM = true;\n\n    /* Keep element content when removing element? */\n    var KEEP_CONTENT = true;\n\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    var IN_PLACE = false;\n\n    /* Allow usage of profiles like html, svg and mathMl */\n    var USE_PROFILES = {};\n\n    /* Tags to ignore content of when KEEP_CONTENT is true */\n    var FORBID_CONTENTS = null;\n    var 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\n    /* Tags that are safe for data: URIs */\n    var DATA_URI_TAGS = null;\n    var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n    /* Attributes safe for values like \"javascript:\" */\n    var URI_SAFE_ATTRIBUTES = null;\n    var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n    var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n    var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n    var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n    /* Document namespace */\n    var NAMESPACE = HTML_NAMESPACE;\n    var IS_EMPTY_INPUT = false;\n\n    /* Parsing of strict XHTML documents */\n    var PARSER_MEDIA_TYPE = void 0;\n    var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n    var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n    var transformCaseFunc = void 0;\n\n    /* Keep a reference to config to pass to hooks */\n    var CONFIG = null;\n\n    /* Ideally, do not touch anything below this line */\n    /* ______________________________________________ */\n\n    var formElement = document.createElement('form');\n\n    /**\n     * _parseConfig\n     *\n     * @param  {Object} cfg optional config literal\n     */\n    // eslint-disable-next-line complexity\n    var _parseConfig = function _parseConfig(cfg) {\n      if (CONFIG && CONFIG === cfg) {\n        return;\n      }\n\n      /* Shield configuration object from tampering */\n      if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n        cfg = {};\n      }\n\n      /* Shield configuration object from prototype pollution */\n      cfg = clone(cfg);\n\n      /* Set configuration parameters */\n      ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n      ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n      URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n      DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n      FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n      FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n      FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n      USE_PROFILES = 'USE_PROFILES' in cfg ? 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      SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\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_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\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      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$$1;\n      NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n      PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n      // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n      transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n        return x;\n      } : stringToLowerCase;\n\n      if (SAFE_FOR_TEMPLATES) {\n        ALLOW_DATA_ATTR = false;\n      }\n\n      if (RETURN_DOM_FRAGMENT) {\n        RETURN_DOM = true;\n      }\n\n      /* Parse profile info */\n      if (USE_PROFILES) {\n        ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n        ALLOWED_ATTR = [];\n        if (USE_PROFILES.html === true) {\n          addToSet(ALLOWED_TAGS, html);\n          addToSet(ALLOWED_ATTR, html$1);\n        }\n\n        if (USE_PROFILES.svg === true) {\n          addToSet(ALLOWED_TAGS, svg);\n          addToSet(ALLOWED_ATTR, svg$1);\n          addToSet(ALLOWED_ATTR, xml);\n        }\n\n        if (USE_PROFILES.svgFilters === true) {\n          addToSet(ALLOWED_TAGS, svgFilters);\n          addToSet(ALLOWED_ATTR, svg$1);\n          addToSet(ALLOWED_ATTR, xml);\n        }\n\n        if (USE_PROFILES.mathMl === true) {\n          addToSet(ALLOWED_TAGS, mathMl);\n          addToSet(ALLOWED_ATTR, mathMl$1);\n          addToSet(ALLOWED_ATTR, xml);\n        }\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\n        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n      }\n\n      if (cfg.ADD_ATTR) {\n        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n          ALLOWED_ATTR = clone(ALLOWED_ATTR);\n        }\n\n        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n      }\n\n      if (cfg.ADD_URI_SAFE_ATTR) {\n        addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n      }\n\n      if (cfg.FORBID_CONTENTS) {\n        if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n          FORBID_CONTENTS = clone(FORBID_CONTENTS);\n        }\n\n        addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n      }\n\n      /* Add #text in case KEEP_CONTENT is set to true */\n      if (KEEP_CONTENT) {\n        ALLOWED_TAGS['#text'] = true;\n      }\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\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\n      // Prevent further manipulation of configuration.\n      // Not available in IE8, Safari 5, etc.\n      if (freeze) {\n        freeze(cfg);\n      }\n\n      CONFIG = cfg;\n    };\n\n    var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n    var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n    /* Keep track of all possible SVG and MathML tags\n     * so that we can perform the namespace checks\n     * correctly. */\n    var ALL_SVG_TAGS = addToSet({}, svg);\n    addToSet(ALL_SVG_TAGS, svgFilters);\n    addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n    var ALL_MATHML_TAGS = addToSet({}, mathMl);\n    addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n    /**\n     *\n     *\n     * @param  {Element} element a DOM element whose namespace is being checked\n     * @returns {boolean} Return false if the element has a\n     *  namespace that a spec-compliant parser would never\n     *  return. Return true otherwise.\n     */\n    var _checkValidNamespace = function _checkValidNamespace(element) {\n      var parent = getParentNode(element);\n\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: HTML_NAMESPACE,\n          tagName: 'template'\n        };\n      }\n\n      var tagName = stringToLowerCase(element.tagName);\n      var parentTagName = stringToLowerCase(parent.tagName);\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\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\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\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\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\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\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\n        if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n          return false;\n        }\n\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 erronously deleted from\n        // HTML namespace.\n        var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\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] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n      }\n\n      // The code should never reach this place (this means\n      // that the element somehow got namespace that is not\n      // HTML, SVG or MathML). Return false just in case.\n      return false;\n    };\n\n    /**\n     * _forceRemove\n     *\n     * @param  {Node} node a DOM node\n     */\n    var _forceRemove = function _forceRemove(node) {\n      arrayPush(DOMPurify.removed, { element: node });\n      try {\n        // eslint-disable-next-line unicorn/prefer-dom-node-remove\n        node.parentNode.removeChild(node);\n      } catch (_) {\n        try {\n          node.outerHTML = emptyHTML;\n        } catch (_) {\n          node.remove();\n        }\n      }\n    };\n\n    /**\n     * _removeAttribute\n     *\n     * @param  {String} name an Attribute name\n     * @param  {Node} node a DOM node\n     */\n    var _removeAttribute = function _removeAttribute(name, node) {\n      try {\n        arrayPush(DOMPurify.removed, {\n          attribute: node.getAttributeNode(name),\n          from: node\n        });\n      } catch (_) {\n        arrayPush(DOMPurify.removed, {\n          attribute: null,\n          from: node\n        });\n      }\n\n      node.removeAttribute(name);\n\n      // We void attribute values for unremovable \"is\"\" attributes\n      if (name === 'is' && !ALLOWED_ATTR[name]) {\n        if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n          try {\n            _forceRemove(node);\n          } catch (_) {}\n        } else {\n          try {\n            node.setAttribute(name, '');\n          } catch (_) {}\n        }\n      }\n    };\n\n    /**\n     * _initDocument\n     *\n     * @param  {String} dirty a string of dirty markup\n     * @return {Document} a DOM, filled with the dirty markup\n     */\n    var _initDocument = function _initDocument(dirty) {\n      /* Create a HTML document */\n      var doc = void 0;\n      var leadingWhitespace = void 0;\n\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        var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n        leadingWhitespace = matches && matches[0];\n      }\n\n      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\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\n      var 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\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 ? '' : dirtyPayload;\n        } catch (_) {\n          // Syntax error if dirtyPayload is invalid xml\n        }\n      }\n\n      var body = doc.body || doc.documentElement;\n\n      if (dirty && leadingWhitespace) {\n        body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n      }\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\n      return WHOLE_DOCUMENT ? doc.documentElement : body;\n    };\n\n    /**\n     * _createIterator\n     *\n     * @param  {Document} root document/fragment to create iterator for\n     * @return {Iterator} iterator instance\n     */\n    var _createIterator = function _createIterator(root) {\n      return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n    };\n\n    /**\n     * _isClobbered\n     *\n     * @param  {Node} elm element to check for clobbering attacks\n     * @return {Boolean} true if clobbered, false if safe\n     */\n    var _isClobbered = function _isClobbered(elm) {\n      if (elm instanceof Text || elm instanceof Comment) {\n        return false;\n      }\n\n      if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n        return true;\n      }\n\n      return false;\n    };\n\n    /**\n     * _isNode\n     *\n     * @param  {Node} obj object to check whether it's a DOM node\n     * @return {Boolean} true is object is a DOM node\n     */\n    var _isNode = function _isNode(object) {\n      return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n    };\n\n    /**\n     * _executeHook\n     * Execute user configurable hooks\n     *\n     * @param  {String} entryPoint  Name of the hook's entry point\n     * @param  {Node} currentNode node to work on with the hook\n     * @param  {Object} data additional hook parameters\n     */\n    var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n      if (!hooks[entryPoint]) {\n        return;\n      }\n\n      arrayForEach(hooks[entryPoint], function (hook) {\n        hook.call(DOMPurify, currentNode, data, CONFIG);\n      });\n    };\n\n    /**\n     * _sanitizeElements\n     *\n     * @protect nodeName\n     * @protect textContent\n     * @protect removeChild\n     *\n     * @param   {Node} currentNode to check for permission to exist\n     * @return  {Boolean} true if node was killed, false if left alive\n     */\n    var _sanitizeElements = function _sanitizeElements(currentNode) {\n      var content = void 0;\n\n      /* Execute a hook if present */\n      _executeHook('beforeSanitizeElements', currentNode, null);\n\n      /* Check if element is clobbered or can clobber */\n      if (_isClobbered(currentNode)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Check if tagname contains Unicode */\n      if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Now let's check the element's type and name */\n      var tagName = transformCaseFunc(currentNode.nodeName);\n\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeElement', currentNode, {\n        tagName: tagName,\n        allowedTags: ALLOWED_TAGS\n      });\n\n      /* Detect mXSS attempts abusing namespace confusion */\n      if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Mitigate a problem with templates inside select */\n      if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Remove element if anything forbids its presence */\n      if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n        /* Keep content except for bad-listed elements */\n        if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n          var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n          var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n          if (childNodes && parentNode) {\n            var childCount = childNodes.length;\n\n            for (var i = childCount - 1; i >= 0; --i) {\n              parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n            }\n          }\n        }\n\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Check whether element has a valid namespace */\n      if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Sanitize element content to be template-safe */\n      if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n        /* Get the element's text content */\n        content = currentNode.textContent;\n        content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n        content = stringReplace(content, ERB_EXPR$$1, ' ');\n        if (currentNode.textContent !== content) {\n          arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n          currentNode.textContent = content;\n        }\n      }\n\n      /* Execute a hook if present */\n      _executeHook('afterSanitizeElements', currentNode, null);\n\n      return false;\n    };\n\n    /**\n     * _isValidAttribute\n     *\n     * @param  {string} lcTag Lowercase tag name of containing element.\n     * @param  {string} lcName Lowercase attribute name.\n     * @param  {string} value Attribute value.\n     * @return {Boolean} Returns true if `value` is valid, otherwise false.\n     */\n    // eslint-disable-next-line complexity\n    var _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\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$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\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$$1, ''))) ; 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$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n        return false;\n      }\n\n      return true;\n    };\n\n    /**\n     * _sanitizeAttributes\n     *\n     * @protect attributes\n     * @protect nodeName\n     * @protect removeAttribute\n     * @protect setAttribute\n     *\n     * @param  {Node} currentNode to sanitize\n     */\n    var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n      var attr = void 0;\n      var value = void 0;\n      var lcName = void 0;\n      var l = void 0;\n      /* Execute a hook if present */\n      _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n      var attributes = currentNode.attributes;\n\n      /* Check if we have attributes; if not we might have a text node */\n\n      if (!attributes) {\n        return;\n      }\n\n      var hookEvent = {\n        attrName: '',\n        attrValue: '',\n        keepAttr: true,\n        allowedAttributes: ALLOWED_ATTR\n      };\n      l = attributes.length;\n\n      /* Go backwards over all attributes; safely remove bad ones */\n      while (l--) {\n        attr = attributes[l];\n        var _attr = attr,\n            name = _attr.name,\n            namespaceURI = _attr.namespaceURI;\n\n        value = stringTrim(attr.value);\n        lcName = transformCaseFunc(name);\n\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        _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n        value = hookEvent.attrValue;\n        /* Did the hooks approve of the attribute? */\n        if (hookEvent.forceKeepAttr) {\n          continue;\n        }\n\n        /* Remove attribute */\n        _removeAttribute(name, currentNode);\n\n        /* Did the hooks approve of the attribute? */\n        if (!hookEvent.keepAttr) {\n          continue;\n        }\n\n        /* Work around a security issue in jQuery 3.0 */\n        if (regExpTest(/\\/>/i, value)) {\n          _removeAttribute(name, currentNode);\n          continue;\n        }\n\n        /* Sanitize attribute content to be template-safe */\n        if (SAFE_FOR_TEMPLATES) {\n          value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n          value = stringReplace(value, ERB_EXPR$$1, ' ');\n        }\n\n        /* Is `value` valid for this attribute? */\n        var lcTag = transformCaseFunc(currentNode.nodeName);\n        if (!_isValidAttribute(lcTag, lcName, value)) {\n          continue;\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\n          arrayPop(DOMPurify.removed);\n        } catch (_) {}\n      }\n\n      /* Execute a hook if present */\n      _executeHook('afterSanitizeAttributes', currentNode, null);\n    };\n\n    /**\n     * _sanitizeShadowDOM\n     *\n     * @param  {DocumentFragment} fragment to iterate over recursively\n     */\n    var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n      var shadowNode = void 0;\n      var shadowIterator = _createIterator(fragment);\n\n      /* Execute a hook if present */\n      _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n      while (shadowNode = shadowIterator.nextNode()) {\n        /* Execute a hook if present */\n        _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n        /* Sanitize tags and elements */\n        if (_sanitizeElements(shadowNode)) {\n          continue;\n        }\n\n        /* Deep shadow DOM detected */\n        if (shadowNode.content instanceof DocumentFragment) {\n          _sanitizeShadowDOM(shadowNode.content);\n        }\n\n        /* Check attributes, sanitize if necessary */\n        _sanitizeAttributes(shadowNode);\n      }\n\n      /* Execute a hook if present */\n      _executeHook('afterSanitizeShadowDOM', fragment, null);\n    };\n\n    /**\n     * Sanitize\n     * Public method providing core sanitation functionality\n     *\n     * @param {String|Node} dirty string or DOM node\n     * @param {Object} configuration object\n     */\n    // eslint-disable-next-line complexity\n    DOMPurify.sanitize = function (dirty, cfg) {\n      var body = void 0;\n      var importedNode = void 0;\n      var currentNode = void 0;\n      var oldNode = void 0;\n      var returnNode = void 0;\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\n      /* Stringify, in case dirty is an object */\n      if (typeof dirty !== 'string' && !_isNode(dirty)) {\n        // eslint-disable-next-line no-negated-condition\n        if (typeof dirty.toString !== 'function') {\n          throw typeErrorCreate('toString is not a function');\n        } else {\n          dirty = dirty.toString();\n          if (typeof dirty !== 'string') {\n            throw typeErrorCreate('dirty is not a string, aborting');\n          }\n        }\n      }\n\n      /* Check we can run. Otherwise fall back or ignore */\n      if (!DOMPurify.isSupported) {\n        if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n          if (typeof dirty === 'string') {\n            return window.toStaticHTML(dirty);\n          }\n\n          if (_isNode(dirty)) {\n            return window.toStaticHTML(dirty.outerHTML);\n          }\n        }\n\n        return dirty;\n      }\n\n      /* Assign config vars */\n      if (!SET_CONFIG) {\n        _parseConfig(cfg);\n      }\n\n      /* Clean up removed elements */\n      DOMPurify.removed = [];\n\n      /* Check if dirty is correctly typed for IN_PLACE */\n      if (typeof dirty === 'string') {\n        IN_PLACE = false;\n      }\n\n      if (IN_PLACE) ; 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 === 1 && 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\n        /* Initialize the document to work on */\n        body = _initDocument(dirty);\n\n        /* Check we have a DOM node from the data */\n        if (!body) {\n          return RETURN_DOM ? null : emptyHTML;\n        }\n      }\n\n      /* Remove first element node (ours) if FORCE_BODY is set */\n      if (body && FORCE_BODY) {\n        _forceRemove(body.firstChild);\n      }\n\n      /* Get node iterator */\n      var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n      /* Now start iterating over the created document */\n      while (currentNode = nodeIterator.nextNode()) {\n        /* Fix IE's strange behavior with manipulated textNodes #89 */\n        if (currentNode.nodeType === 3 && currentNode === oldNode) {\n          continue;\n        }\n\n        /* Sanitize tags and elements */\n        if (_sanitizeElements(currentNode)) {\n          continue;\n        }\n\n        /* Shadow DOM detected, sanitize it */\n        if (currentNode.content instanceof DocumentFragment) {\n          _sanitizeShadowDOM(currentNode.content);\n        }\n\n        /* Check attributes, sanitize if necessary */\n        _sanitizeAttributes(currentNode);\n\n        oldNode = currentNode;\n      }\n\n      oldNode = null;\n\n      /* If we sanitized `dirty` in-place, return it. */\n      if (IN_PLACE) {\n        return dirty;\n      }\n\n      /* Return sanitized string or DOM */\n      if (RETURN_DOM) {\n        if (RETURN_DOM_FRAGMENT) {\n          returnNode = createDocumentFragment.call(body.ownerDocument);\n\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\n        if (RETURN_DOM_IMPORT) {\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\n        return returnNode;\n      }\n\n      var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n      /* Sanitize final string template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n        serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n      }\n\n      return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n    };\n\n    /**\n     * Public method to set the configuration once\n     * setConfig\n     *\n     * @param {Object} cfg configuration object\n     */\n    DOMPurify.setConfig = function (cfg) {\n      _parseConfig(cfg);\n      SET_CONFIG = true;\n    };\n\n    /**\n     * Public method to remove the configuration\n     * clearConfig\n     *\n     */\n    DOMPurify.clearConfig = function () {\n      CONFIG = null;\n      SET_CONFIG = false;\n    };\n\n    /**\n     * Public method to check if an attribute value is valid.\n     * Uses last set config, if any. Otherwise, uses config defaults.\n     * isValidAttribute\n     *\n     * @param  {string} tag Tag name of containing element.\n     * @param  {string} attr Attribute name.\n     * @param  {string} value Attribute value.\n     * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n     */\n    DOMPurify.isValidAttribute = function (tag, attr, value) {\n      /* Initialize shared config vars if necessary. */\n      if (!CONFIG) {\n        _parseConfig({});\n      }\n\n      var lcTag = transformCaseFunc(tag);\n      var lcName = transformCaseFunc(attr);\n      return _isValidAttribute(lcTag, lcName, value);\n    };\n\n    /**\n     * AddHook\n     * Public method to add DOMPurify hooks\n     *\n     * @param {String} entryPoint entry point for the hook to add\n     * @param {Function} hookFunction function to execute\n     */\n    DOMPurify.addHook = function (entryPoint, hookFunction) {\n      if (typeof hookFunction !== 'function') {\n        return;\n      }\n\n      hooks[entryPoint] = hooks[entryPoint] || [];\n      arrayPush(hooks[entryPoint], hookFunction);\n    };\n\n    /**\n     * RemoveHook\n     * Public method to remove a DOMPurify hook at a given entryPoint\n     * (pops it from the stack of hooks if more are present)\n     *\n     * @param {String} entryPoint entry point for the hook to remove\n     */\n    DOMPurify.removeHook = function (entryPoint) {\n      if (hooks[entryPoint]) {\n        arrayPop(hooks[entryPoint]);\n      }\n    };\n\n    /**\n     * RemoveHooks\n     * Public method to remove all DOMPurify hooks at a given entryPoint\n     *\n     * @param  {String} entryPoint entry point for the hooks to remove\n     */\n    DOMPurify.removeHooks = function (entryPoint) {\n      if (hooks[entryPoint]) {\n        hooks[entryPoint] = [];\n      }\n    };\n\n    /**\n     * RemoveAllHooks\n     * Public method to remove all DOMPurify hooks\n     *\n     */\n    DOMPurify.removeAllHooks = function () {\n      hooks = {};\n    };\n\n    return DOMPurify;\n  }\n\n  var purify = createDOMPurify();\n\n  return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n", "var global = require('../internals/global');\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 = global.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", "/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\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", "var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n", "var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.20.3',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.20.3/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n", "var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n", "var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.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", "var 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", "var 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", "var 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", "var 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    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", "// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = Array(max(fin - k, 0));\n  for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n", "// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\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/create-iterator-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 redefine = require('../internals/redefine');\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 in IterablePrototype) return IterablePrototype[KIND];\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    } 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          redefine(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        redefine(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    redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n", "var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n", "var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n", "var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n", "var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n", "module.exports = require(\"core-js-pure/features/array/is-array\");", "module.exports = require(\"core-js-pure/features/get-iterator-method\");", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n", "var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n", "var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n", "var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n", "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  var hwm = options.highWaterMark;\n  var writableHwm = options.writableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function () {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function (object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function (object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n    return new Writable(options);\n  }\n\n  this._writableState = new WritableState(options, this);\n\n  // legacy.\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n\n    if (typeof options.writev === 'function') this._writev = options.writev;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new Error('write after end');\n  // TODO: defer error events consistently everywhere, not just the cb\n  stream.emit('error', er);\n  pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  if (er) {\n    stream.emit('error', er);\n    pna.nextTick(cb, er);\n    valid = false;\n  }\n  return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n  if (typeof cb !== 'function') cb = nop;\n\n  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  var state = this._writableState;\n\n  state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n\n    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n\n  state.length += len;\n\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    pna.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    pna.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n\n  onwriteStateUpdate(state);\n\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state);\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      /*<replacement>*/\n      asyncWrite(afterWrite, stream, state, finished, cb);\n      /*</replacement>*/\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      stream.emit('error', err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function') {\n      state.pendingcb++;\n      state.finalCalled = true;\n      pna.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n    }\n  }\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n  if (state.corkedRequestsFree) {\n    state.corkedRequestsFree.next = corkReq;\n  } else {\n    state.corkedRequestsFree = corkReq;\n  }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  get: function () {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  this.end();\n  cb(err);\n};", "var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nfunction _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/features/reflect/construct\");", "var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n", "module.exports = require(\"core-js-pure/features/instance/index-of\");", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\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');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-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 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 n$Fetch = getBuiltIn('fetch');\nvar N$Request = getBuiltIn('Request');\nvar Headers = getBuiltIn('Headers');\nvar RequestPrototype = N$Request && N$Request.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\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);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = replace(it, plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = replace(result, percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\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    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\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 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 TypeError('Expected sequence with length 2');\n        push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n      }\n    } else for (var key in object) if (hasOwn(object, key)) {\n      push(this.entries, { key: key, value: $toString(object[key]) });\n    }\n  },\n  parseQuery: function (query) {\n    if (query) {\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(this.entries, {\n            key: deserialize(shift(entry)),\n            value: deserialize(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  setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    validateArgumentsLength(arguments.length, 2);\n    var state = getInternalParamsState(this);\n    push(state.entries, { key: $toString(name), value: $toString(value) });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index].key === key) splice(entries, index, 1);\n      else index++;\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\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    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\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) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index++].key === key) 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    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\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    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\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n  return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: 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(n$Fetch)) {\n    $({ global: true, enumerable: true, forced: true }, {\n      fetch: function fetch(input /* , init */) {\n        return n$Fetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n      }\n    });\n  }\n\n  if (isCallable(N$Request)) {\n    var RequestConstructor = function Request(input /* , init */) {\n      anInstance(this, RequestPrototype);\n      return new N$Request(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n    };\n\n    RequestPrototype.constructor = RequestConstructor;\n    RequestConstructor.prototype = RequestPrototype;\n\n    $({ global: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n", "var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n", "import makeReducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\n\nexport default function(system) {\n  return {\n    statePlugins: {\n      err: {\n        reducers: makeReducers(system),\n        actions,\n        selectors\n      }\n    }\n  }\n}\n", "import {\n  NEW_THROWN_ERR,\n  NEW_THROWN_ERR_BATCH,\n  NEW_SPEC_ERR,\n  NEW_SPEC_ERR_BATCH,\n  NEW_AUTH_ERR,\n  CLEAR,\n  CLEAR_BY,\n} from \"./actions\"\n\nimport { fromJS, List } from \"immutable\"\n\nimport transformErrors from \"./error-transformers/hook\"\n\nlet DEFAULT_ERROR_STRUCTURE = {\n  // defaults\n  line: 0,\n  level: \"error\",\n  message: \"Unknown error\"\n}\n\nexport default function() {\n  return {\n    [NEW_THROWN_ERR]: (state, { payload }) => {\n      let error = Object.assign(DEFAULT_ERROR_STRUCTURE, payload, {type: \"thrown\"})\n      return state\n        .update(\"errors\", errors => (errors || List()).push( fromJS( error )) )\n        .update(\"errors\", errors => transformErrors(errors))\n    },\n\n    [NEW_THROWN_ERR_BATCH]: (state, { payload }) => {\n      payload = payload.map(err => {\n        return fromJS(Object.assign(DEFAULT_ERROR_STRUCTURE, err, { type: \"thrown\" }))\n      })\n      return state\n        .update(\"errors\", errors => (errors || List()).concat( fromJS( payload )) )\n        .update(\"errors\", errors => transformErrors(errors))\n    },\n\n    [NEW_SPEC_ERR]: (state, { payload }) => {\n      let error = fromJS(payload)\n      error = error.set(\"type\", \"spec\")\n      return state\n        .update(\"errors\", errors => (errors || List()).push( fromJS(error)).sortBy(err => err.get(\"line\")) )\n        .update(\"errors\", errors => transformErrors(errors))\n    },\n\n    [NEW_SPEC_ERR_BATCH]: (state, { payload }) => {\n      payload = payload.map(err => {\n        return fromJS(Object.assign(DEFAULT_ERROR_STRUCTURE, err, { type: \"spec\" }))\n      })\n      return state\n        .update(\"errors\", errors => (errors || List()).concat(fromJS(payload)))\n        .update(\"errors\", errors => transformErrors(errors))\n    },\n\n    [NEW_AUTH_ERR]: (state, { payload }) => {\n      let error = fromJS(Object.assign({}, payload))\n\n      error = error.set(\"type\", \"auth\")\n      return state\n        .update(\"errors\", errors => (errors || List()).push( fromJS(error)) )\n        .update(\"errors\", errors => transformErrors(errors))\n    },\n\n    [CLEAR]: (state, { payload }) => {\n      if(!payload || !state.get(\"errors\")) {\n        return state\n      }\n\n      let newErrors = state.get(\"errors\")\n        .filter(err => {\n          return err.keySeq().every(k => {\n            const errValue = err.get(k)\n            const filterValue = payload[k]\n\n            if(!filterValue) return true\n\n            return errValue !== filterValue\n          })\n        })\n      return state.merge({\n        errors: newErrors\n      })\n    },\n\n    [CLEAR_BY]: (state, { payload }) => {\n      if(!payload || typeof payload !== \"function\") {\n        return state\n      }\n      let newErrors = state.get(\"errors\")\n        .filter(err => {\n          return payload(err)\n        })\n      return state.merge({\n        errors: newErrors\n      })\n    }\n  }\n}\n", "export function transform(errors) {\n  // JSONSchema refers to the current object being validated\n  // as 'instance'. This isn't helpful to users, so we remove it.\n  return errors\n    .map(err => {\n      let seekStr = \"is not of a type(s)\"\n      let i = err.get(\"message\").indexOf(seekStr)\n      if(i > -1) {\n        let types = err.get(\"message\").slice(i + seekStr.length).split(\",\")\n        return err.set(\"message\", err.get(\"message\").slice(0, i) + makeNewMessage(types))\n      } else {\n        return err\n      }\n    })\n}\n\nfunction makeNewMessage(types) {\n  return types.reduce((p, c, i, arr) => {\n    if(i === arr.length - 1 && arr.length > 1) {\n      return p + \"or \" + c\n    } else if(arr[i+1] && arr.length > 2) {\n      return p + c + \", \"\n    } else if(arr[i+1]) {\n      return p + c + \" \"\n    } else {\n      return p + c\n    }\n  }, \"should be a\")\n}\n", "import get from \"lodash/get\"\nimport { fromJS } from \"immutable\"\n\nexport function transform(errors, { jsSpec }) {\n  // LOOK HERE THIS TRANSFORMER IS CURRENTLY DISABLED 😃\n  // TODO: finish implementing, fix flattening problem\n  /* eslint-disable no-unreachable */\n  return errors\n\n\n  // JSONSchema gives us very little to go on\n  let searchStr = \"is not exactly one from <#/definitions/parameter>,<#/definitions/jsonReference>\"\n  return errors\n    .map(err => {\n      let message = err.get(\"message\")\n      let isParameterOneOfError = message.indexOf(searchStr) > -1\n      if(isParameterOneOfError) {\n        // try to find what's wrong\n        return createTailoredParameterError(err, jsSpec)\n      } else {\n        return err\n      }\n    })\n    .flatten(true) // shallow Immutable flatten\n}\n\nconst VALID_IN_VALUES = [\"path\", \"query\", \"header\", \"body\", \"formData\"]\nconst VALID_COLLECTIONFORMAT_VALUES = [\"csv\", \"ssv\", \"tsv\", \"pipes\", \"multi\"]\n\nfunction createTailoredParameterError(err, jsSpec) {\n  let newErrs = []\n  let parameter = get(jsSpec, err.get(\"path\"))\n\n  // find addressable cases\n  if(parameter.in && VALID_IN_VALUES.indexOf(parameter.in) === -1) {\n    let message = `Wrong value for the \"in\" keyword. Expected one of: ${VALID_IN_VALUES.join(\", \")}.`\n    newErrs.push({\n      message,\n      path: err.get(\"path\") + \".in\",\n      type: \"spec\",\n      source: \"structural\",\n      level: \"error\"\n    })\n  }\n\n  if(parameter.collectionFormat && VALID_COLLECTIONFORMAT_VALUES.indexOf(parameter.collectionFormat) === -1) {\n    let message = `Wrong value for the \"collectionFormat\" keyword. Expected one of: ${VALID_COLLECTIONFORMAT_VALUES.join(\", \")}.`\n    newErrs.push({\n      message,\n      path: err.get(\"path\") + \".collectionFormat\",\n      type: \"spec\",\n      source: \"structural\",\n      level: \"error\"\n    })\n  }\n\n  return newErrs.length ? fromJS(newErrs) : err // fall back to making no changes\n\n}\n", "import { List } from \"immutable\"\nimport { createSelector } from \"reselect\"\n\nconst state = state => state\n\nexport const allErrors = createSelector(\n  state,\n  err => err.get(\"errors\", List())\n)\n\nexport const lastError = createSelector(\n  allErrors,\n  all => all.last()\n)\n\n", "import reducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport * as wrapSelectors from \"./spec-extensions/wrap-selector\"\n\nexport default function() {\n  return {\n    statePlugins: {\n      layout: {\n        reducers,\n        actions,\n        selectors\n      },\n      spec: {\n        wrapSelectors\n      }\n    }\n  }\n}\n", "import { fromJS } from \"immutable\"\nimport {\n  UPDATE_LAYOUT,\n  UPDATE_FILTER,\n  UPDATE_MODE,\n  SHOW\n} from \"./actions\"\n\nexport default {\n\n  [UPDATE_LAYOUT]: (state, action) => state.set(\"layout\", action.payload),\n\n  [UPDATE_FILTER]: (state, action) => state.set(\"filter\", action.payload),\n\n  [SHOW]: (state, action) => {\n    const isShown = action.payload.shown\n    // This is one way to serialize an array, another (preferred) is to convert to json-pointer\n    // TODO: use json-pointer serilization instead of fromJS(...), for performance\n    const thingToShow = fromJS(action.payload.thing)\n    // This is a map of paths to bools\n    // eg: [one, two] => true\n    // eg: [one] => false\n    return state.update(\"shown\", fromJS({}), a => a.set(thingToShow, isShown))\n  },\n\n  [UPDATE_MODE]: (state, action) => {\n    let thing = action.payload.thing\n    let mode = action.payload.mode\n    return state.setIn([\"modes\"].concat(thing), (mode || \"\") + \"\")\n  }\n\n}\n", "import { createSelector } from \"reselect\"\nimport { normalizeArray } from \"core/utils\"\nimport { fromJS } from \"immutable\"\n\nconst state = state => state\n\nexport const current = state => state.get(\"layout\")\n\nexport const currentFilter = state => state.get(\"filter\")\n\nexport const isShown = (state, thing, def) => {\n  thing = normalizeArray(thing)\n  return state.get(\"shown\", fromJS({})).get(fromJS(thing), def)\n}\n\nexport const whatMode = (state, thing, def=\"\") => {\n  thing = normalizeArray(thing)\n  return state.getIn([\"modes\", ...thing], def)\n}\n\nexport const showSummary = createSelector(\n  state,\n  state => !isShown(state, \"editor\")\n)\n", "\nexport const taggedOperations = (oriSelector, system) => (state, ...args) => {\n  let taggedOps = oriSelector(state, ...args)\n\n  const { fn, layoutSelectors, getConfigs } = system.getSystem()\n  const configs = getConfigs()\n  const { maxDisplayedTags } = configs\n\n  // Filter, if requested\n  let filter = layoutSelectors.currentFilter()\n  if (filter) {\n    if (filter !== true && filter !== \"true\" && filter !== \"false\") {\n      taggedOps = fn.opsFilter(taggedOps, filter)\n    }\n  }\n  // Limit to [max] items, if specified\n  if (maxDisplayedTags && !isNaN(maxDisplayedTags) && maxDisplayedTags >= 0) {\n    taggedOps = taggedOps.slice(0, maxDisplayedTags)\n  }\n\n  return taggedOps\n}\n", "import reducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport * as wrapActions from \"./wrap-actions\"\n\nexport default function() {\n  return {\n    statePlugins: {\n      spec: {\n        wrapActions,\n        reducers,\n        actions,\n        selectors\n      }\n    }\n  }\n}\n", "import { fromJS, List } from \"immutable\"\nimport { fromJSOrdered, validateParam, paramToValue } from \"core/utils\"\nimport win from \"../../window\"\n\n// selector-in-reducer is suboptimal, but `operationWithMeta` is more of a helper\nimport {\n  specJsonWithResolvedSubtrees,\n  parameterValues,\n  parameterInclusionSettingFor,\n} from \"./selectors\"\n\nimport {\n  UPDATE_SPEC,\n  UPDATE_URL,\n  UPDATE_JSON,\n  UPDATE_PARAM,\n  UPDATE_EMPTY_PARAM_INCLUSION,\n  VALIDATE_PARAMS,\n  SET_RESPONSE,\n  SET_REQUEST,\n  SET_MUTATED_REQUEST,\n  UPDATE_RESOLVED,\n  UPDATE_RESOLVED_SUBTREE,\n  UPDATE_OPERATION_META_VALUE,\n  CLEAR_RESPONSE,\n  CLEAR_REQUEST,\n  CLEAR_VALIDATE_PARAMS,\n  SET_SCHEME\n} from \"./actions\"\nimport { paramToIdentifier } from \"../../utils\"\n\nexport default {\n\n  [UPDATE_SPEC]: (state, action) => {\n    return (typeof action.payload === \"string\")\n      ? state.set(\"spec\", action.payload)\n      : state\n  },\n\n  [UPDATE_URL]: (state, action) => {\n    return state.set(\"url\", action.payload+\"\")\n  },\n\n  [UPDATE_JSON]: (state, action) => {\n    return state.set(\"json\", fromJSOrdered(action.payload))\n  },\n\n  [UPDATE_RESOLVED]: (state, action) => {\n    return state.setIn([\"resolved\"], fromJSOrdered(action.payload))\n  },\n\n  [UPDATE_RESOLVED_SUBTREE]: (state, action) => {\n    const { value, path } = action.payload\n    return state.setIn([\"resolvedSubtrees\", ...path], fromJSOrdered(value))\n  },\n\n  [UPDATE_PARAM]: ( state, {payload} ) => {\n    let { path: pathMethod, paramName, paramIn, param, value, isXml } = payload\n\n    let paramKey = param ? paramToIdentifier(param) : `${paramIn}.${paramName}`\n\n    const valueKey = isXml ? \"value_xml\" : \"value\"\n\n    return state.setIn(\n      [\"meta\", \"paths\", ...pathMethod, \"parameters\", paramKey, valueKey],\n      value\n    )\n  },\n\n  [UPDATE_EMPTY_PARAM_INCLUSION]: ( state, {payload} ) => {\n    let { pathMethod, paramName, paramIn, includeEmptyValue } = payload\n\n    if(!paramName || !paramIn) {\n      console.warn(\"Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey.\")\n      return state\n    }\n\n    const paramKey = `${paramIn}.${paramName}`\n\n    return state.setIn(\n      [\"meta\", \"paths\", ...pathMethod, \"parameter_inclusions\", paramKey],\n      includeEmptyValue\n    )\n  },\n\n  [VALIDATE_PARAMS]: ( state, { payload: { pathMethod, isOAS3 } } ) => {\n    const op = specJsonWithResolvedSubtrees(state).getIn([\"paths\", ...pathMethod])\n    const paramValues = parameterValues(state, pathMethod).toJS()\n\n    return state.updateIn([\"meta\", \"paths\", ...pathMethod, \"parameters\"], fromJS({}), paramMeta => {\n      return op.get(\"parameters\", List()).reduce((res, param) => {\n        const value = paramToValue(param, paramValues)\n        const isEmptyValueIncluded = parameterInclusionSettingFor(state, pathMethod, param.get(\"name\"), param.get(\"in\"))\n        const errors = validateParam(param, value, {\n          bypassRequiredCheck: isEmptyValueIncluded,\n          isOAS3,\n        })\n        return res.setIn([paramToIdentifier(param), \"errors\"], fromJS(errors))\n      }, paramMeta)\n    })\n  },\n  [CLEAR_VALIDATE_PARAMS]: ( state, { payload:  { pathMethod } } ) => {\n    return state.updateIn( [ \"meta\", \"paths\", ...pathMethod, \"parameters\" ], fromJS([]), parameters => {\n      return parameters.map(param => param.set(\"errors\", fromJS([])))\n    })\n  },\n\n  [SET_RESPONSE]: (state, { payload: { res, path, method } } ) =>{\n    let result\n    if ( res.error ) {\n      result = Object.assign({\n        error: true,\n        name: res.err.name,\n        message: res.err.message,\n        statusCode: res.err.statusCode\n      }, res.err.response)\n    } else {\n      result = res\n    }\n\n    // Ensure headers\n    result.headers = result.headers || {}\n\n    let newState = state.setIn( [ \"responses\", path, method ], fromJSOrdered(result) )\n\n    // ImmutableJS messes up Blob. Needs to reset its value.\n    if (win.Blob && res.data instanceof win.Blob) {\n      newState = newState.setIn( [ \"responses\", path, method, \"text\" ], res.data)\n    }\n    return newState\n  },\n\n  [SET_REQUEST]: (state, { payload: { req, path, method } } ) =>{\n    return state.setIn( [ \"requests\", path, method ], fromJSOrdered(req))\n  },\n\n  [SET_MUTATED_REQUEST]: (state, { payload: { req, path, method } } ) =>{\n    return state.setIn( [ \"mutatedRequests\", path, method ], fromJSOrdered(req))\n  },\n\n  [UPDATE_OPERATION_META_VALUE]: (state, { payload: { path, value, key } }) => {\n    // path is a pathMethod tuple... can't change the name now.\n    let operationPath = [\"paths\", ...path]\n    let metaPath = [\"meta\", \"paths\", ...path]\n\n    if(\n      !state.getIn([\"json\", ...operationPath])\n      && !state.getIn([\"resolved\", ...operationPath])\n      && !state.getIn([\"resolvedSubtrees\", ...operationPath])\n    ) {\n      // do nothing if the operation does not exist\n      return state\n    }\n\n    return state.setIn([...metaPath, key], fromJS(value))\n  },\n\n  [CLEAR_RESPONSE]: (state, { payload: { path, method } } ) =>{\n    return state.deleteIn( [ \"responses\", path, method ])\n  },\n\n  [CLEAR_REQUEST]: (state, { payload: { path, method } } ) =>{\n    return state.deleteIn( [ \"requests\", path, method ])\n  },\n\n  [SET_SCHEME]: (state, { payload: { scheme, path, method } } ) =>{\n    if ( path && method ) {\n      return state.setIn( [ \"scheme\", path, method ], scheme)\n    }\n\n    if (!path && !method) {\n      return state.setIn( [ \"scheme\", \"_defaultScheme\" ], scheme)\n    }\n\n  }\n\n}\n", "import get from \"lodash/get\"\n\nexport const updateSpec = (ori, {specActions}) => (...args) => {\n  ori(...args)\n  specActions.parseToJson(...args)\n}\n\nexport const updateJsonSpec = (ori, {specActions}) => (...args) => {\n  ori(...args)\n\n  specActions.invalidateResolvedSubtreeCache()\n\n  // Trigger resolution of any path-level $refs.\n  const [json] = args\n  const pathItems = get(json, [\"paths\"]) || {}\n  const pathItemKeys = Object.keys(pathItems)\n\n  pathItemKeys.forEach(k => {\n    const val = get(pathItems, [k])\n\n    if(val.$ref) {\n      specActions.requestResolvedSubtree([\"paths\", k])\n    }\n  })\n\n  // Trigger resolution of any securitySchemes-level $refs.\n  specActions.requestResolvedSubtree([\"components\", \"securitySchemes\"])\n}\n\n// Log the request ( just for debugging, shouldn't affect prod )\nexport const executeRequest = (ori, { specActions }) => (req) => {\n  specActions.logRequest(req)\n  return ori(req)\n}\n\nexport const validateParams = (ori, { specSelectors }) => (req) => {\n  return ori(req, specSelectors.isOAS3())\n}\n", "import { memoize } from \"core/utils\"\n\nimport { getComponent, render, withMappedContainer } from \"./root-injects\"\nimport { getDisplayName } from \"./fn\"\nimport memoizeN from \"../../../helpers/memoizeN\"\n\nconst memoizeForGetComponent = (fn) => {\n  const resolver = (...args) => JSON.stringify(args)\n  return memoize(fn, resolver)\n}\n\nconst memoizeForWithMappedContainer = (fn) => {\n  const resolver = (...args) => args\n  return memoizeN(fn, resolver)\n}\n\nconst viewPlugin = ({getComponents, getStore, getSystem}) => {\n  // getComponent should be passed into makeMappedContainer, _already_ memoized... otherwise we have a big performance hit ( think, really big )\n  const memGetComponent = memoizeForGetComponent(getComponent(getSystem, getStore, getComponents))\n  const memMakeMappedContainer = memoizeForWithMappedContainer(withMappedContainer(getSystem, getStore, memGetComponent))\n\n  return {\n    rootInjects: {\n      getComponent: memGetComponent,\n      makeMappedContainer: memMakeMappedContainer,\n      render: render(getSystem, getStore, getComponent, getComponents),\n    },\n    fn: {\n      getDisplayName,\n    },\n  }\n}\n\nexport default viewPlugin\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n", "export const getDisplayName = (WrappedComponent) => WrappedComponent.displayName || WrappedComponent.name || \"Component\"\n", "import * as fn from \"./fn\"\n\nexport default function () {\n  return { fn }\n}\n", "import * as fn from \"./fn\"\nimport * as selectors from \"./selectors\"\nimport { RequestSnippets } from \"./request-snippets\"\nexport default () => {\n  return {\n    components: {\n      RequestSnippets\n    },\n    fn,\n    statePlugins: {\n      requestSnippets: {\n        selectors\n      }\n    }\n  }\n}\n", "import { createSelector } from \"reselect\"\nimport { Map } from \"immutable\"\n\nconst state = state => state || Map()\n\nexport const getGenerators = createSelector(\n  state,\n  state => {\n    const languageKeys = state\n      .get(\"languages\")\n    const generators = state\n      .get(\"generators\", Map())\n    if(!languageKeys || languageKeys.isEmpty()) {\n      return generators\n    }\n    return generators\n      .filter((v, key) => languageKeys.includes(key))\n  }\n)\n\nexport const getSnippetGenerators = (state) => ({ fn }) => {\n  const getGenFn = (key) => fn[`requestSnippetGenerator_${key}`]\n  return getGenerators(state)\n    .map((gen, key) => {\n      const genFn = getGenFn(key)\n      if(typeof genFn !== \"function\") {\n        return null\n      }\n\n      return gen.set(\"fn\", genFn)\n    })\n    .filter(v => v)\n}\n\nexport const getActiveLanguage = createSelector(\n  state,\n  state => state\n    .get(\"activeLanguage\")\n)\n\nexport const getDefaultExpanded = createSelector(\n  state,\n  state => state\n    .get(\"defaultExpanded\")\n)\n", "import React from \"react\"\nimport { CopyToClipboard } from \"react-copy-to-clipboard\"\nimport PropTypes from \"prop-types\"\nimport get from \"lodash/get\"\nimport {SyntaxHighlighter, getStyle} from \"core/syntax-highlighting\"\n\nexport class RequestSnippets extends React.Component {\n  constructor() {\n    super()\n    this.state = {\n      activeLanguage: this.props?.requestSnippetsSelectors?.getSnippetGenerators()?.keySeq().first(),\n      expanded: this.props?.requestSnippetsSelectors?.getDefaultExpanded(),\n    }\n  }\n\n  static propTypes = {\n    request: PropTypes.object.isRequired,\n    requestSnippetsSelectors: PropTypes.object.isRequired,\n    getConfigs: PropTypes.object.isRequired,\n    requestSnippetsActions: PropTypes.object.isRequired,\n  }\n  render() {\n      const {request, getConfigs, requestSnippetsSelectors } = this.props\n      const snippetGenerators = requestSnippetsSelectors.getSnippetGenerators()\n      const activeLanguage = this.state.activeLanguage || snippetGenerators.keySeq().first()\n      const activeGenerator = snippetGenerators.get(activeLanguage)\n      const snippet = activeGenerator.get(\"fn\")(request)\n      const onGenChange = (key) => {\n        const needsChange = activeLanguage !== key\n        if(needsChange) {\n          this.setState({\n            activeLanguage: key\n          })\n        }\n      }\n      const style = {\n        cursor: \"pointer\",\n        lineHeight: 1,\n        display: \"inline-flex\",\n        backgroundColor: \"rgb(250, 250, 250)\",\n        paddingBottom: \"0\",\n        paddingTop: \"0\",\n        border: \"1px solid rgb(51, 51, 51)\",\n        borderRadius: \"4px 4px 0 0\",\n        boxShadow: \"none\",\n        borderBottom: \"none\"\n      }\n      const activeStyle = {\n        cursor: \"pointer\",\n        lineHeight: 1,\n        display: \"inline-flex\",\n        backgroundColor: \"rgb(51, 51, 51)\",\n        boxShadow: \"none\",\n        border: \"1px solid rgb(51, 51, 51)\",\n        paddingBottom: \"0\",\n        paddingTop: \"0\",\n        borderRadius: \"4px 4px 0 0\",\n        marginTop: \"-5px\",\n        marginRight: \"-5px\",\n        marginLeft: \"-5px\",\n        zIndex: \"9999\",\n        borderBottom: \"none\"\n      }\n      const getBtnStyle = (key) => {\n        if (key === activeLanguage) {\n          return activeStyle\n        }\n        return style\n      }\n      const config = getConfigs()\n\n      const SnippetComponent = config?.syntaxHighlight?.activated\n        ? <SyntaxHighlighter\n          language={activeGenerator.get(\"syntax\")}\n          className=\"curl microlight\"\n          onWheel={function(e) {return this.preventYScrollingBeyondElement(e)}}\n          style={getStyle(get(config, \"syntaxHighlight.theme\"))}\n        >\n          {snippet}\n        </SyntaxHighlighter>\n        :\n        <textarea readOnly={true} className=\"curl\" value={snippet}></textarea>\n\n    const expanded = this.state.expanded === undefined ? this.props?.requestSnippetsSelectors?.getDefaultExpanded() : this.state.expanded\n    return (\n        <div>\n          <div style={{width: \"100%\", display: \"flex\", justifyContent: \"flex-start\", alignItems: \"center\", marginBottom: \"15px\"}}>\n            <h4\n              style={{ cursor: \"pointer\" }}\n              onClick={() => this.setState({expanded: !expanded})}\n            >Snippets</h4>\n            <button\n              onClick={() => this.setState({expanded: !expanded})}\n              style={{ border: \"none\", background: \"none\" }}\n              title={expanded ? \"Collapse operation\": \"Expand operation\"}\n            >\n              <svg className=\"arrow\" width=\"10\" height=\"10\">\n                <use href={expanded ? \"#large-arrow-down\" : \"#large-arrow\"} xlinkHref={expanded ? \"#large-arrow-down\" : \"#large-arrow\"} />\n              </svg>\n            </button>\n          </div>\n          {\n            expanded && <div className=\"curl-command\">\n              <div style={{paddingLeft: \"15px\", paddingRight: \"10px\", width: \"100%\", display: \"flex\"}}>\n                {\n                  snippetGenerators.entrySeq().map(([key, gen]) => {\n                    return (<div style={getBtnStyle(key)} className=\"btn\" key={key} onClick={() => onGenChange(key)}>\n                      <h4 style={key === activeLanguage ? {color: \"white\",} : {}}>{gen.get(\"title\")}</h4>\n                    </div>)\n                  })\n                }\n              </div>\n              <div className=\"copy-to-clipboard\">\n                <CopyToClipboard text={snippet}>\n                  <button />\n                </CopyToClipboard>\n              </div>\n              <div>\n                {SnippetComponent}\n              </div>\n            </div>\n          }\n        </div>\n\n      )\n  }\n}\n", "export default function ({configs}) {\n\n  const levels = {\n    \"debug\": 0,\n    \"info\": 1,\n    \"log\": 2,\n    \"warn\": 3,\n    \"error\": 4\n  }\n\n  const getLevel = (level) => levels[level] || -1\n\n  let { logLevel } = configs\n  let logLevelInt = getLevel(logLevel)\n\n  function log(level, ...args) {\n    if(getLevel(level) >= logLevelInt)\n    // eslint-disable-next-line no-console\n      console[level](...args)\n  }\n\n  log.warn = log.bind(null, \"warn\")\n  log.error = log.bind(null, \"error\")\n  log.info = log.bind(null, \"info\")\n  log.debug = log.bind(null, \"debug\")\n\n  return { rootInjects: { log } }\n}\n", "export const loaded = (ori, system) => (...args) => {\n  ori(...args)\n  const value = system.getConfigs().withCredentials\n  \n  if(value !== undefined) {\n    system.fn.fetch.withCredentials = typeof value === \"string\" ? (value === \"true\") : !!value\n  }\n}\n", "import reducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport * as specWrapActionReplacements from \"./spec-wrap-actions\"\n\nexport default function() {\n  return {\n    afterLoad(system) {\n      this.rootInjects = this.rootInjects || {}\n      this.rootInjects.initOAuth = system.authActions.configureAuth\n      this.rootInjects.preauthorizeApiKey = preauthorizeApiKey.bind(null, system)\n      this.rootInjects.preauthorizeBasic = preauthorizeBasic.bind(null, system)\n    },\n    statePlugins: {\n      auth: {\n        reducers,\n        actions,\n        selectors\n      },\n      spec: {\n        wrapActions: specWrapActionReplacements\n      }\n    }\n  }\n}\n\nexport function preauthorizeBasic(system, key, username, password) {\n  const {\n    authActions: { authorize },\n    specSelectors: { specJson, isOAS3 }\n  } = system\n\n  const definitionBase = isOAS3() ? [\"components\", \"securitySchemes\"] : [\"securityDefinitions\"]\n\n  const schema = specJson().getIn([...definitionBase, key])\n\n  if(!schema) {\n    return null\n  }\n\n  return authorize({\n    [key]: {\n      value: {\n        username,\n        password,\n      },\n      schema: schema.toJS()\n    }\n  })\n}\n\nexport function preauthorizeApiKey(system, key, value) {\n  const {\n    authActions: { authorize },\n    specSelectors: { specJson, isOAS3 }\n  } = system\n\n  const definitionBase = isOAS3() ? [\"components\", \"securitySchemes\"] : [\"securityDefinitions\"]\n\n  const schema = specJson().getIn([...definitionBase, key])\n\n  if(!schema) {\n    return null\n  }\n\n  return authorize({\n    [key]: {\n      value,\n      schema: schema.toJS()\n    }\n  })\n}\n", "import { fromJS, Map } from \"immutable\"\nimport { btoa, isFunc } from \"core/utils\"\n\nimport {\n  SHOW_AUTH_POPUP,\n  AUTHORIZE,\n  AUTHORIZE_OAUTH2,\n  LOGOUT,\n  CONFIGURE_AUTH,\n  RESTORE_AUTHORIZATION\n} from \"./actions\"\n\nexport default {\n  [SHOW_AUTH_POPUP]: (state, { payload } ) =>{\n    return state.set( \"showDefinitions\", payload )\n  },\n\n  [AUTHORIZE]: (state, { payload } ) =>{\n    let securities = fromJS(payload)\n    let map = state.get(\"authorized\") || Map()\n\n    // refactor withMutations\n    securities.entrySeq().forEach( ([ key, security ]) => {\n      if (!isFunc(security.getIn)) {\n        return state.set(\"authorized\", map)\n      }\n      let type = security.getIn([\"schema\", \"type\"])\n\n      if ( type === \"apiKey\" || type === \"http\" ) {\n        map = map.set(key, security)\n      } else if ( type === \"basic\" ) {\n        let username = security.getIn([\"value\", \"username\"])\n        let password = security.getIn([\"value\", \"password\"])\n\n        map = map.setIn([key, \"value\"], {\n          username: username,\n          header: \"Basic \" + btoa(username + \":\" + password)\n        })\n\n        map = map.setIn([key, \"schema\"], security.get(\"schema\"))\n      }\n    })\n\n    return state.set( \"authorized\", map )\n  },\n\n  [AUTHORIZE_OAUTH2]: (state, { payload } ) =>{\n    let { auth, token } = payload\n    let parsedAuth\n\n    auth.token = Object.assign({}, token)\n    parsedAuth = fromJS(auth)\n\n    let map = state.get(\"authorized\") || Map()\n    map = map.set(parsedAuth.get(\"name\"), parsedAuth)\n    \n    return state.set( \"authorized\", map )\n  },\n\n  [LOGOUT]: (state, { payload } ) =>{\n    let result = state.get(\"authorized\").withMutations((authorized) => {\n        payload.forEach((auth) => {\n          authorized.delete(auth)\n        })\n      })\n\n    return state.set(\"authorized\", result)\n  },\n\n  [CONFIGURE_AUTH]: (state, { payload } ) =>{\n    return state.set(\"configs\", payload)\n  },\n\n  [RESTORE_AUTHORIZATION]: (state, { payload } ) =>{    \n    return state.set(\"authorized\", fromJS(payload.authorized))\n  },\n}\n", "import { createSelector } from \"reselect\"\nimport { List, Map } from \"immutable\"\n\nconst state = state => state\n\nexport const shownDefinitions = createSelector(\n    state,\n    auth => auth.get( \"showDefinitions\" )\n)\n\nexport const definitionsToAuthorize = createSelector(\n    state,\n    () => ( { specSelectors } ) => {\n      let definitions = specSelectors.securityDefinitions() || Map({})\n      let list = List()\n\n      //todo refactor\n      definitions.entrySeq().forEach( ([ key, val ]) => {\n        let map = Map()\n\n        map = map.set(key, val)\n        list = list.push(map)\n      })\n\n      return list\n    }\n)\n\n\nexport const getDefinitionsByNames = ( state, securities ) => ( { specSelectors } ) => {\n  console.warn(\"WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.\")\n  let securityDefinitions = specSelectors.securityDefinitions()\n  let result = List()\n\n  securities.valueSeq().forEach( (names) => {\n    let map = Map()\n    names.entrySeq().forEach( ([name, scopes]) => {\n      let definition = securityDefinitions.get(name)\n      let allowedScopes\n\n      if ( definition.get(\"type\") === \"oauth2\" && scopes.size ) {\n        allowedScopes = definition.get(\"scopes\")\n\n        allowedScopes.keySeq().forEach( (key) => {\n          if ( !scopes.contains(key) ) {\n            allowedScopes = allowedScopes.delete(key)\n          }\n        })\n\n        definition = definition.set(\"allowedScopes\", allowedScopes)\n      }\n\n      map = map.set(name, definition)\n    })\n\n    result = result.push(map)\n  })\n\n  return result\n}\n\nexport const definitionsForRequirements = (state, securities = List()) => ({ authSelectors }) => {\n  const allDefinitions = authSelectors.definitionsToAuthorize() || List()\n  return allDefinitions.filter((def) => {\n    return securities.some(sec => sec.get(def.keySeq().first()))\n  })\n}\n\nexport const authorized = createSelector(\n    state,\n    auth => auth.get(\"authorized\") || Map()\n)\n\n\nexport const isAuthorized = ( state, securities ) => ( { authSelectors } ) => {\n  let authorized = authSelectors.authorized()\n\n  if(!List.isList(securities)) {\n    return null\n  }\n\n  return !!securities.toJS().filter( ( security ) => {\n      let isAuthorized = true\n\n      return Object.keys(security).map((key) => {\n        return !isAuthorized || !!authorized.get(key)\n      }).indexOf(false) === -1\n    }).length\n}\n\nexport const getConfigs = createSelector(\n    state,\n    auth => auth.get( \"configs\" )\n)\n", "// Add security to the final `execute` call ( via `extras` )\nexport const execute = ( oriAction, { authSelectors, specSelectors }) => ({ path, method, operation, extras }) => {\n  let securities = {\n    authorized: authSelectors.authorized() && authSelectors.authorized().toJS(),\n    definitions: specSelectors.securityDefinitions() && specSelectors.securityDefinitions().toJS(),\n    specSecurity:  specSelectors.security() && specSelectors.security().toJS()\n  }\n\n  return oriAction({ path, method, operation, securities, ...extras })\n}\n", "import { shallowEqualKeys } from \"core/utils\"\n\nexport default function() {\n  return {\n    fn: { shallowEqualKeys }\n  }\n}\n", "import { createSelector } from \"reselect\"\nimport { Map } from \"immutable\"\nimport win from \"../window\"\n\nexport default function downloadUrlPlugin (toolbox) {\n  let { fn } = toolbox\n\n  const actions = {\n    download: (url)=> ({ errActions, specSelectors, specActions, getConfigs }) => {\n      let { fetch } = fn\n      const config = getConfigs()\n      url = url || specSelectors.url()\n      specActions.updateLoadingStatus(\"loading\")\n      errActions.clear({source: \"fetch\"})\n      fetch({\n        url,\n        loadSpec: true,\n        requestInterceptor: config.requestInterceptor || (a => a),\n        responseInterceptor: config.responseInterceptor || (a => a),\n        credentials: \"same-origin\",\n        headers: {\n          \"Accept\": \"application/json,*/*\"\n        }\n      }).then(next,next)\n\n      function next(res) {\n        if(res instanceof Error || res.status >= 400) {\n          specActions.updateLoadingStatus(\"failed\")\n          errActions.newThrownErr(Object.assign( new Error((res.message || res.statusText) + \" \" + url), {source: \"fetch\"}))\n          // Check if the failure was possibly due to CORS or mixed content\n          if (!res.status && res instanceof Error) checkPossibleFailReasons()\n          return\n        }\n        specActions.updateLoadingStatus(\"success\")\n        specActions.updateSpec(res.text)\n        if(specSelectors.url() !== url) {\n          specActions.updateUrl(url)\n        }\n      }\n\n      function checkPossibleFailReasons() {\n        try {\n          let specUrl\n\n          if(\"URL\" in win ) {\n            specUrl = new URL(url)\n          } else {\n            // legacy browser, use <a href> to parse the URL\n            specUrl = document.createElement(\"a\")\n            specUrl.href = url\n          }\n\n          if(specUrl.protocol !== \"https:\" && win.location.protocol === \"https:\") {\n            const error = Object.assign(\n              new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${specUrl.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),\n              {source: \"fetch\"}\n            )\n            errActions.newThrownErr(error)\n            return\n          }\n          if(specUrl.origin !== win.location.origin) {\n            const error = Object.assign(\n              new Error(`Possible cross-origin (CORS) issue? The URL origin (${specUrl.origin}) does not match the page (${win.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),\n              {source: \"fetch\"}\n            )\n            errActions.newThrownErr(error)\n          }\n        } catch (e) {\n          return\n        }\n      }\n\n    },\n\n    updateLoadingStatus: (status) => {\n      let enums = [null, \"loading\", \"failed\", \"success\", \"failedConfig\"]\n      if(enums.indexOf(status) === -1) {\n        console.error(`Error: ${status} is not one of ${JSON.stringify(enums)}`)\n      }\n\n      return {\n        type: \"spec_update_loading_status\",\n        payload: status\n      }\n    }\n  }\n\n  let reducers = {\n    \"spec_update_loading_status\": (state, action) => {\n      return (typeof action.payload === \"string\")\n        ? state.set(\"loadingStatus\", action.payload)\n        : state\n    }\n  }\n\n  let selectors = {\n    loadingStatus: createSelector(\n      state => {\n        return state || Map()\n      },\n      spec => spec.get(\"loadingStatus\") || null\n    )\n  }\n\n  return {\n    statePlugins: {\n      spec: { actions, reducers, selectors }\n    }\n  }\n}\n", "import { parseYamlConfig } from \"./helpers\"\n\nexport const downloadConfig = (req) => (system) => {\n  const {fn: { fetch }} = system\n\n  return fetch(req)\n}\n\nexport const getConfigByUrl = (req, cb)=> ({ specActions }) => {\n  if (req) {\n    return specActions.downloadConfig(req).then(next, next)\n  }\n\n  function next(res) {\n    if (res instanceof Error || res.status >= 400) {\n      specActions.updateLoadingStatus(\"failedConfig\")\n      specActions.updateLoadingStatus(\"failedConfig\")\n      specActions.updateUrl(\"\")\n      console.error(res.statusText + \" \" + req.url)\n      cb(null)\n    } else {\n      cb(parseYamlConfig(res.text))\n    }\n  }\n}\n", "// Just get the config value ( it can possibly be an immutable object)\nexport const get = (state, path) => {\n  return state.getIn(Array.isArray(path) ? path : [path])\n}\n", "import { fromJS } from \"immutable\"\n\nimport {\n\tUPDATE_CONFIGS,\n\tTOGGLE_CONFIGS,\n} from \"./actions\"\n\nexport default {\n\n  [UPDATE_CONFIGS]: (state, action) => {\n    return state.merge(fromJS(action.payload))\n  },\n\n  [TOGGLE_CONFIGS]: (state, action) => {\n    const configName = action.payload\n    const oriVal = state.get(configName)\n    return state.set(configName, !oriVal)\n  },\n\n}\n", "import layout from \"./layout\"\nimport OperationWrapper from \"./operation-wrapper\"\nimport OperationTagWrapper from \"./operation-tag-wrapper\"\n\nexport default function() {\n  return [layout, {\n    statePlugins: {\n      configs: {\n        wrapActions: {\n          loaded: (ori, system) => (...args) => {\n            ori(...args)\n            // location.hash was an UTF-16 String, here is required UTF-8\n            const hash = decodeURIComponent(window.location.hash)\n            system.layoutActions.parseDeepLinkHash(hash)\n          }\n        }\n      }\n    },\n    wrapComponents: {\n      operation: OperationWrapper,\n      OperationTag: OperationTagWrapper,\n    },\n  }]\n}\n", "import { setHash } from \"./helpers\"\nimport zenscroll from \"zenscroll\"\nimport { createDeepLinkPath } from \"core/utils\"\nimport Im, { fromJS } from \"immutable\"\n\nconst SCROLL_TO = \"layout_scroll_to\"\nconst CLEAR_SCROLL_TO = \"layout_clear_scroll\"\n\nexport const show = (ori, { getConfigs, layoutSelectors }) => (...args) => {\n  ori(...args)\n\n  if(!getConfigs().deepLinking) {\n    return\n  }\n\n  try {\n    let [tokenArray, shown] = args\n    //Coerce in to array\n    tokenArray = Array.isArray(tokenArray) ? tokenArray : [tokenArray]\n    // Convert into something we can put in the URL hash\n    // Or return empty, if we cannot\n    const urlHashArray = layoutSelectors.urlHashArrayFromIsShownKey(tokenArray) // Will convert\n\n    // No hash friendly list?\n    if(!urlHashArray.length)\n      return\n\n    const [type, assetName] = urlHashArray\n\n    if (!shown) {\n      return setHash(\"/\")\n    }\n\n    if (urlHashArray.length === 2) {\n      setHash(createDeepLinkPath(`/${encodeURIComponent(type)}/${encodeURIComponent(assetName)}`))\n    } else if (urlHashArray.length === 1) {\n      setHash(createDeepLinkPath(`/${encodeURIComponent(type)}`))\n    }\n\n  } catch (e) {\n    // This functionality is not mission critical, so if something goes wrong\n    // we'll just move on\n    console.error(e) // eslint-disable-line no-console\n  }\n}\n\nexport const scrollTo = (path) => {\n  return {\n    type: SCROLL_TO,\n    payload: Array.isArray(path) ? path : [path]\n  }\n}\n\nexport const parseDeepLinkHash = (rawHash) => ({ layoutActions, layoutSelectors, getConfigs }) => {\n\n  if(!getConfigs().deepLinking) {\n    return\n  }\n\n  if(rawHash) {\n    let hash = rawHash.slice(1) // # is first character\n\n\n    if(hash[0] === \"!\") {\n      // Parse UI 2.x shebangs\n      hash = hash.slice(1)\n    }\n\n    if(hash[0] === \"/\") {\n      // \"/pet/addPet\" => \"pet/addPet\"\n      // makes the split result cleaner\n      // also handles forgotten leading slash\n      hash = hash.slice(1)\n    }\n\n    const hashArray = hash.split(\"/\").map(val => (val || \"\"))\n\n    const isShownKey = layoutSelectors.isShownKeyFromUrlHashArray(hashArray)\n\n    const [type, tagId = \"\", maybeOperationId = \"\"] = isShownKey\n\n    if(type === \"operations\") {\n      // we're going to show an operation, so we need to expand the tag as well\n      const tagIsShownKey = layoutSelectors.isShownKeyFromUrlHashArray([tagId])\n\n      // If an `_` is present, trigger the legacy escaping behavior to be safe\n      // TODO: remove this in v4.0, it is deprecated\n      if(tagId.indexOf(\"_\") > -1) {\n        console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\")\n        layoutActions.show(tagIsShownKey.map(val => val.replace(/_/g, \" \")), true)\n      }\n\n      layoutActions.show(tagIsShownKey, true)\n    }\n\n    // If an `_` is present, trigger the legacy escaping behavior to be safe\n    // TODO: remove this in v4.0, it is deprecated\n    if (tagId.indexOf(\"_\") > -1 || maybeOperationId.indexOf(\"_\") > -1) {\n      console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\")\n      layoutActions.show(isShownKey.map(val => val.replace(/_/g, \" \")), true)\n    }\n\n    layoutActions.show(isShownKey, true)\n\n    // Scroll to the newly expanded entity\n    layoutActions.scrollTo(isShownKey)\n  }\n}\n\nexport const readyToScroll = (isShownKey, ref) => (system) => {\n  const scrollToKey = system.layoutSelectors.getScrollToKey()\n\n  if(Im.is(scrollToKey, fromJS(isShownKey))) {\n    system.layoutActions.scrollToElement(ref)\n    system.layoutActions.clearScrollTo()\n  }\n}\n\n// Scroll to \"ref\" (dom node) with the scrollbar on \"container\" or the nearest parent\nexport const scrollToElement = (ref, container) => (system) => {\n  try {\n    container = container || system.fn.getScrollParent(ref)\n    let myScroller = zenscroll.createScroller(container)\n    myScroller.to(ref)\n  } catch(e) {\n    console.error(e) // eslint-disable-line no-console\n  }\n}\n\nexport const clearScrollTo = () => {\n  return {\n    type: CLEAR_SCROLL_TO,\n  }\n}\n\n// From: https://stackoverflow.com/a/42543908/3933724\n// Modified to return html instead of body element as last resort\nfunction getScrollParent(element, includeHidden) {\n  const LAST_RESORT = document.documentElement\n  let style = getComputedStyle(element)\n  const excludeStaticParent = style.position === \"absolute\"\n  const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n\n  if (style.position === \"fixed\")\n    return LAST_RESORT\n  for (let parent = element; (parent = parent.parentElement);) {\n    style = getComputedStyle(parent)\n    if (excludeStaticParent && style.position === \"static\") {\n      continue\n    }\n    if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX))\n      return parent\n  }\n\n  return LAST_RESORT\n}\n\nexport default {\n  fn: {\n    getScrollParent,\n  },\n  statePlugins: {\n    layout: {\n      actions: {\n        scrollToElement,\n        scrollTo,\n        clearScrollTo,\n        readyToScroll,\n        parseDeepLinkHash\n      },\n      selectors: {\n        getScrollToKey(state) {\n          return state.get(\"scrollToKey\")\n        },\n        isShownKeyFromUrlHashArray(state, urlHashArray) {\n          const [tag, operationId] = urlHashArray\n          // We only put operations in the URL\n          if(operationId) {\n            return [\"operations\", tag, operationId]\n          } else if (tag) {\n            return [\"operations-tag\", tag]\n          }\n          return []\n        },\n        urlHashArrayFromIsShownKey(state, isShownKey) {\n          let [type, tag, operationId] = isShownKey\n          // We only put operations in the URL\n          if(type == \"operations\") {\n            return [tag, operationId]\n          } else if (type == \"operations-tag\") {\n            return [tag]\n          }\n          return []\n        },\n      },\n      reducers: {\n        [SCROLL_TO](state, action) {\n          return state.set(\"scrollToKey\", Im.fromJS(action.payload))\n        },\n        [CLEAR_SCROLL_TO](state) {\n          return state.delete(\"scrollToKey\")\n        }\n      },\n      wrapActions: {\n        show\n      }\n    }\n  }\n}\n", "import React from \"react\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst Wrapper = (Ori, system) => class OperationWrapper extends React.Component {\n\n  static propTypes = {\n    operation: ImPropTypes.map.isRequired,\n  }\n\n  onLoad = (ref) => {\n    const { operation } = this.props\n    const { tag, operationId } = operation.toObject()\n    let { isShownKey } = operation.toObject()\n    isShownKey = isShownKey || [\"operations\", tag, operationId]\n    system.layoutActions.readyToScroll(isShownKey, ref)\n  }\n\n  render() {\n    return (\n      <span ref={this.onLoad}>\n        <Ori {...this.props} />\n      </span>\n    )\n  }\n}\n\nexport default Wrapper\n", "import React from \"react\"\nimport { PropTypes } from \"prop-types\"\n\nconst Wrapper = (Ori, system) => class OperationTagWrapper extends React.Component {\n\n  static propTypes = {\n    tag: PropTypes.object.isRequired,\n  }\n\n  onLoad = (ref) => {\n    const { tag } = this.props\n    const isShownKey = [\"operations-tag\", tag]\n    system.layoutActions.readyToScroll(isShownKey, ref)\n  }\n\n  render() {\n    return (\n      <span ref={this.onLoad}>\n        <Ori {...this.props} />\n      </span>\n    )\n  }\n}\n\nexport default Wrapper\n", "import opsFilter from \"./opsFilter\"\n\nexport default function() {\n  return {\n    fn: {\n      opsFilter\n    }\n  }\n}\n", "export default function(taggedOps, phrase) {\n  return taggedOps.filter((tagObj, tag) => tag.indexOf(phrase) !== -1)\n}\n", "let engaged = false\n\nexport default function() {\n\n  return {\n    statePlugins: {\n      spec: {\n        wrapActions: {\n          updateSpec: (ori) => (...args) => {\n            engaged = true\n            return ori(...args)\n          },\n          updateJsonSpec: (ori, system) => (...args) => {\n            const cb = system.getConfigs().onComplete\n            if(engaged && typeof cb === \"function\") {\n              // call `onComplete` on next tick, which allows React to\n              // reconcile the DOM before we notify the user\n              setTimeout(cb, 0)\n              engaged = false\n            }\n\n            return ori(...args)\n          }\n        }\n      }\n    }\n  }\n}\n", "import PropTypes from \"prop-types\"\nimport React, { Component } from \"react\"\n\nimport { componentDidCatch } from \"../fn\"\nimport Fallback from \"./fallback\"\n\nexport class ErrorBoundary extends Component {\n  static getDerivedStateFromError(error) {\n    return { hasError: true, error }\n  }\n\n  constructor(...args) {\n    super(...args)\n    this.state = { hasError: false, error: null }\n  }\n\n  componentDidCatch(error, errorInfo) {\n    this.props.fn.componentDidCatch(error, errorInfo)\n  }\n\n  render() {\n    const { getComponent, targetName, children } = this.props\n\n    if (this.state.hasError) {\n      const FallbackComponent = getComponent(\"Fallback\")\n      return <FallbackComponent name={targetName} />\n    }\n\n    return children\n  }\n}\nErrorBoundary.propTypes = {\n  targetName: PropTypes.string,\n  getComponent: PropTypes.func,\n  fn: PropTypes.object,\n  children: PropTypes.oneOfType([\n    PropTypes.arrayOf(PropTypes.node),\n    PropTypes.node,\n  ])\n}\nErrorBoundary.defaultProps = {\n  targetName: \"this component\",\n  getComponent: () => Fallback,\n  fn: {\n    componentDidCatch,\n  },\n  children: null,\n}\n\nexport default ErrorBoundary\n", "// import reducers from \"./reducers\"\n// import * as actions from \"./actions\"\nimport * as specWrapSelectors from \"./spec-extensions/wrap-selectors\"\nimport * as authWrapSelectors from \"./auth-extensions/wrap-selectors\"\nimport * as specSelectors from \"./spec-extensions/selectors\"\nimport components from \"./components\"\nimport wrapComponents from \"./wrap-components\"\nimport * as oas3Actions from \"./actions\"\nimport * as oas3Selectors from \"./selectors\"\nimport oas3Reducers from \"./reducers\"\n\nexport default function() {\n  return {\n    components,\n    wrapComponents,\n    statePlugins: {\n      spec: {\n        wrapSelectors: specWrapSelectors,\n        selectors: specSelectors\n      },\n      auth: {\n        wrapSelectors: authWrapSelectors\n      },\n      oas3: {\n        actions: oas3Actions,\n        reducers: oas3Reducers,\n        selectors: oas3Selectors,\n      }\n    }\n  }\n}\n", "import { createSelector } from \"reselect\"\nimport { specJsonWithResolvedSubtrees } from \"../../spec/selectors\"\nimport { Map } from \"immutable\"\nimport { isOAS3 as isOAS3Helper, isSwagger2 as isSwagger2Helper } from \"../helpers\"\n\n\n// Helpers\n\nfunction onlyOAS3(selector) {\n  return (ori, system) => (...args) => {\n    const spec = system.getSystem().specSelectors.specJson()\n    if(isOAS3Helper(spec)) {\n      return selector(...args)\n    } else {\n      return ori(...args)\n    }\n  }\n}\n\nconst state = state => {\n  return state || Map()\n}\n\nconst nullSelector = createSelector(() => null)\n\nconst OAS3NullSelector = onlyOAS3(nullSelector)\n\nconst specJson = createSelector(\n  state,\n  spec => spec.get(\"json\", Map())\n)\n\nconst specResolved = createSelector(\n  state,\n  spec => spec.get(\"resolved\", Map())\n)\n\nconst spec = state => {\n  let res = specResolved(state)\n  if(res.count() < 1)\n    res = specJson(state)\n  return res\n}\n\n// Wrappers\n\nexport const definitions = onlyOAS3(createSelector(\n  spec,\n  spec => {\n    const res = spec.getIn([\"components\", \"schemas\"])\n    return Map.isMap(res) ? res : Map()\n  }\n))\n\nexport const hasHost = onlyOAS3((state) => {\n  return spec(state).hasIn([\"servers\", 0])\n})\n\nexport const securityDefinitions = onlyOAS3(createSelector(\n  specJsonWithResolvedSubtrees,\n  spec => spec.getIn([\"components\", \"securitySchemes\"]) || null\n))\n\nexport const host = OAS3NullSelector\nexport const basePath = OAS3NullSelector\nexport const consumes = OAS3NullSelector\nexport const produces = OAS3NullSelector\nexport const schemes = OAS3NullSelector\n\n// New selectors\n\nexport const servers = onlyOAS3(createSelector(\n  spec,\n  spec => spec.getIn([\"servers\"]) || Map()\n))\n\nexport const isOAS3 = (ori, system) => () => {\n  const spec = system.getSystem().specSelectors.specJson()\n  return isOAS3Helper(Map.isMap(spec) ? spec : Map())\n}\n\nexport const isSwagger2 = (ori, system) => () => {\n  const spec = system.getSystem().specSelectors.specJson()\n  return isSwagger2Helper(Map.isMap(spec) ? spec : Map())\n}\n", "import { createSelector } from \"reselect\"\nimport { List, Map, fromJS } from \"immutable\"\nimport { isOAS3 as isOAS3Helper } from \"../helpers\"\n\n\n// Helpers\n\nconst state = state => state\n\nfunction onlyOAS3(selector) {\n  return (ori, system) => (...args) => {\n    const spec = system.getSystem().specSelectors.specJson()\n    if(isOAS3Helper(spec)) {\n      // Pass the spec plugin state to Reselect to trigger on securityDefinitions update\n      let resolvedSchemes = system.getState().getIn([\"spec\", \"resolvedSubtrees\",\n        \"components\", \"securitySchemes\"])\n      return selector(system, resolvedSchemes, ...args)\n    } else {\n      return ori(...args)\n    }\n  }\n}\n\nexport const definitionsToAuthorize = onlyOAS3(createSelector(\n    state,\n    ({specSelectors}) => specSelectors.securityDefinitions(),\n    (system, definitions) => {\n      // Coerce our OpenAPI 3.0 definitions into monoflow definitions\n      // that look like Swagger2 definitions.\n      let list = List()\n\n      if(!definitions) {\n        return list\n      }\n\n      definitions.entrySeq().forEach( ([ defName, definition ]) => {\n        const type = definition.get(\"type\")\n\n        if(type === \"oauth2\") {\n          definition.get(\"flows\").entrySeq().forEach(([flowKey, flowVal]) => {\n            let translatedDef = fromJS({\n              flow: flowKey,\n              authorizationUrl: flowVal.get(\"authorizationUrl\"),\n              tokenUrl: flowVal.get(\"tokenUrl\"),\n              scopes: flowVal.get(\"scopes\"),\n              type: definition.get(\"type\"),\n              description: definition.get(\"description\")\n            })\n\n            list = list.push(new Map({\n              [defName]: translatedDef.filter((v) => {\n                // filter out unset values, sometimes `authorizationUrl`\n                // and `tokenUrl` come out as `undefined` in the data\n                return v !== undefined\n              })\n            }))\n          })\n        }\n        if(type === \"http\" || type === \"apiKey\") {\n          list = list.push(new Map({\n            [defName]: definition\n          }))\n        }\n        if(type === \"openIdConnect\" && definition.get(\"openIdConnectData\")) {\n          let oidcData = definition.get(\"openIdConnectData\")\n          let grants = oidcData.get(\"grant_types_supported\") || [\"authorization_code\", \"implicit\"]\n          grants.forEach((grant) => {\n            // Convert from OIDC list of scopes to the OAS-style map with empty descriptions\n            let translatedScopes = oidcData.get(\"scopes_supported\") &&\n              oidcData.get(\"scopes_supported\").reduce((acc, cur) => acc.set(cur, \"\"), new Map())\n\n            let translatedDef = fromJS({\n              flow: grant,\n              authorizationUrl: oidcData.get(\"authorization_endpoint\"),\n              tokenUrl: oidcData.get(\"token_endpoint\"),\n              scopes: translatedScopes,\n              type: \"oauth2\",\n              openIdConnectUrl: definition.get(\"openIdConnectUrl\")\n            })\n\n            list = list.push(new Map({\n              [defName]: translatedDef.filter((v) => {\n                // filter out unset values, sometimes `authorizationUrl`\n                // and `tokenUrl` come out as `undefined` in the data\n                return v !== undefined\n              })\n            }))\n          })\n        }\n      })\n\n      return list\n    }\n))\n", "import { createSelector } from \"reselect\"\nimport { Map } from \"immutable\"\nimport { isOAS3 as isOAS3Helper, isSwagger2 as isSwagger2Helper } from \"../helpers\"\n\n\n// Helpers\n\nfunction onlyOAS3(selector) {\n  return () => (system, ...args) => {\n    const spec = system.getSystem().specSelectors.specJson()\n    if(isOAS3Helper(spec)) {\n      return selector(...args)\n    } else {\n      return null\n    }\n  }\n}\n\nconst state = state => {\n  return state || Map()\n}\n\nconst specJson = createSelector(\n  state,\n  spec => spec.get(\"json\", Map())\n)\n\nconst specResolved = createSelector(\n  state,\n  spec => spec.get(\"resolved\", Map())\n)\n\nconst spec = state => {\n  let res = specResolved(state)\n  if(res.count() < 1)\n    res = specJson(state)\n  return res\n}\n\n// New selectors\n\nexport const servers = onlyOAS3(createSelector(\n  spec,\n  spec => spec.getIn([\"servers\"]) || Map()\n))\n\nexport const isSwagger2 = (ori, system) => () => {\n  const spec = system.getSystem().specSelectors.specJson()\n  return isSwagger2Helper(spec)\n}\n", "import Callbacks from \"./callbacks\"\nimport RequestBody from \"./request-body\"\nimport OperationLink from \"./operation-link\"\nimport Servers from \"./servers\"\nimport ServersContainer from \"./servers-container\"\nimport RequestBodyEditor from \"./request-body-editor\"\nimport HttpAuth from \"./http-auth\"\nimport OperationServers from \"./operation-servers\"\n\nexport default {\n  Callbacks,\n  HttpAuth,\n  RequestBody,\n  Servers,\n  ServersContainer,\n  RequestBodyEditor,\n  OperationServers,\n  operationLink: OperationLink\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { fromJS } from \"immutable\"\n\nconst Callbacks = (props) => {\n  let { callbacks, getComponent, specPath } = props\n  // const Markdown = getComponent(\"Markdown\", true)\n  const OperationContainer = getComponent(\"OperationContainer\", true)\n\n  if(!callbacks) {\n    return <span>No callbacks</span>\n  }\n\n  let callbackElements = callbacks.entrySeq().map(([callbackName, callback]) => {\n    return <div key={callbackName}>\n      <h2>{callbackName}</h2>\n      { callback.entrySeq().map(([pathItemName, pathItem]) => {\n        if(pathItemName === \"$$ref\") {\n          return null\n        }\n        return <div key={pathItemName}>\n          { pathItem.entrySeq().map(([method, operation]) => {\n            if(method === \"$$ref\") {\n              return null\n            }\n            let op = fromJS({\n              operation\n            })\n            return <OperationContainer\n              {...props}\n              op={op}\n              key={method}\n              tag={\"\"}\n              method={method}\n              path={pathItemName}\n              specPath={specPath.push(callbackName, pathItemName, method)}\n              allowTryItOut={false}\n              />\n          }) }\n        </div>\n      }) }\n    </div>\n  })\n  return <div>\n    {callbackElements}\n  </div>\n}\n\nCallbacks.propTypes = {\n  getComponent: PropTypes.func.isRequired,\n  callbacks: ImPropTypes.iterable.isRequired,\n  specPath: ImPropTypes.list.isRequired,\n}\n\nexport default Callbacks\n", "import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nclass OperationLink extends Component {\n  render() {\n    const { link, name, getComponent } = this.props\n\n    const Markdown = getComponent(\"Markdown\", true)\n\n    let targetOp = link.get(\"operationId\") || link.get(\"operationRef\")\n    let parameters = link.get(\"parameters\") && link.get(\"parameters\").toJS()\n    let description = link.get(\"description\")\n\n    return <div className=\"operation-link\">\n      <div className=\"description\">\n        <b><code>{name}</code></b>\n        { description ? <Markdown source={description}></Markdown> : null }\n      </div>\n      <pre>\n        Operation `{targetOp}`<br /><br />\n        Parameters {padString(0, JSON.stringify(parameters, null, 2)) || \"{}\"}<br />\n      </pre>\n    </div>\n  }\n\n}\n\nfunction padString(n, string) {\n  if(typeof string !== \"string\") { return \"\" }\n  return string\n    .split(\"\\n\")\n    .map((line, i) => i > 0 ? Array(n + 1).join(\" \") + line : line)\n    .join(\"\\n\")\n}\n\nOperationLink.propTypes = {\n  getComponent: PropTypes.func.isRequired,\n  link: ImPropTypes.orderedMap.isRequired,\n  name: PropTypes.String\n}\n\nexport default OperationLink\n", "import React from \"react\"\nimport { OrderedMap } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class Servers extends React.Component {\n\n  static propTypes = {\n    servers: ImPropTypes.list.isRequired,\n    currentServer: PropTypes.string.isRequired,\n    setSelectedServer: PropTypes.func.isRequired,\n    setServerVariableValue: PropTypes.func.isRequired,\n    getServerVariable: PropTypes.func.isRequired,\n    getEffectiveServerValue: PropTypes.func.isRequired\n  }\n\n  componentDidMount() {\n    let { servers, currentServer } = this.props\n\n    if(currentServer) {\n      return\n    }\n\n    // fire 'change' event to set default 'value' of select\n    this.setServer(servers.first()?.get(\"url\"))\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    let {\n      servers,\n      setServerVariableValue,\n      getServerVariable\n    } = nextProps\n    if (this.props.currentServer !== nextProps.currentServer || this.props.servers !== nextProps.servers) {\n      // Server has changed, we may need to set default values\n      let currentServerDefinition = servers\n        .find(v => v.get(\"url\") === nextProps.currentServer)\n      let prevServerDefinition = this.props.servers\n        .find(v => v.get(\"url\") === this.props.currentServer) || OrderedMap()\n      \n      if(!currentServerDefinition) {\n        return this.setServer(servers.first().get(\"url\"))\n      }\n      \n      let prevServerVariableDefs = prevServerDefinition.get(\"variables\") || OrderedMap()\n      let prevServerVariableDefaultKey = prevServerVariableDefs.find(v => v.get(\"default\")) || OrderedMap()\n      let prevServerVariableDefaultValue = prevServerVariableDefaultKey.get(\"default\")\n      \n      let currentServerVariableDefs = currentServerDefinition.get(\"variables\") || OrderedMap()\n      let currentServerVariableDefaultKey = currentServerVariableDefs.find(v => v.get(\"default\")) || OrderedMap()\n      let currentServerVariableDefaultValue = currentServerVariableDefaultKey.get(\"default\")\n      \n      currentServerVariableDefs.map((val, key) => {\n        let currentValue = getServerVariable(nextProps.currentServer, key)\n        \n        // note: it is possible for both key/val to be the same across definitions,\n        // but we will try to detect a change in default values between definitions\n        // only set the default value if the user hasn't set one yet\n        // or if the definition appears to have changed\n        if (!currentValue || prevServerVariableDefaultValue !== currentServerVariableDefaultValue) {\n          setServerVariableValue({\n            server: nextProps.currentServer,\n            key,\n            val: val.get(\"default\") || \"\"\n          })\n        }\n      })\n    }\n  }\n\n  onServerChange =( e ) => {\n    this.setServer( e.target.value )\n\n    // set default variable values\n  }\n\n  onServerVariableValueChange = ( e ) => {\n    let {\n      setServerVariableValue,\n      currentServer\n    } = this.props\n\n    let variableName = e.target.getAttribute(\"data-variable\")\n    let newVariableValue = e.target.value\n\n    if(typeof setServerVariableValue === \"function\") {\n      setServerVariableValue({\n        server: currentServer,\n        key: variableName,\n        val: newVariableValue\n      })\n    }\n  }\n\n  setServer = ( value ) => {\n    let { setSelectedServer } = this.props\n\n    setSelectedServer(value)\n  }\n\n  render() {\n    let { servers,\n      currentServer,\n      getServerVariable,\n      getEffectiveServerValue\n    } = this.props\n\n\n    let currentServerDefinition = servers.find(s => s.get(\"url\") === currentServer) || OrderedMap()\n\n    let currentServerVariableDefs = currentServerDefinition.get(\"variables\") || OrderedMap()\n\n    let shouldShowVariableUI = currentServerVariableDefs.size !== 0\n\n    return (\n      <div className=\"servers\">\n        <label htmlFor=\"servers\">\n          <select onChange={ this.onServerChange } value={currentServer}>\n            { servers.valueSeq().map(\n              ( server ) =>\n              <option\n                value={ server.get(\"url\") }\n                key={ server.get(\"url\") }>\n                { server.get(\"url\") }\n                { server.get(\"description\") && ` - ${server.get(\"description\")}` }\n              </option>\n            ).toArray()}\n          </select>\n        </label>\n        { shouldShowVariableUI ?\n          <div>\n\n            <div className={\"computed-url\"}>\n              Computed URL:\n              <code>\n                {getEffectiveServerValue(currentServer)}\n              </code>\n            </div>\n            <h4>Server variables</h4>\n            <table>\n              <tbody>\n                {\n                  currentServerVariableDefs.entrySeq().map(([name, val]) => {\n                    return <tr key={name}>\n                      <td>{name}</td>\n                      <td>\n                        { val.get(\"enum\") ?\n                          <select data-variable={name} onChange={this.onServerVariableValueChange}>\n                            {val.get(\"enum\").map(enumValue => {\n                              return <option\n                                selected={enumValue === getServerVariable(currentServer, name)}\n                                key={enumValue}\n                                value={enumValue}>\n                                {enumValue}\n                              </option>\n                            })}\n                          </select> :\n                          <input\n                            type={\"text\"}\n                            value={getServerVariable(currentServer, name) || \"\"}\n                            onChange={this.onServerVariableValueChange}\n                            data-variable={name}\n                            ></input>\n                        }\n                      </td>\n                    </tr>\n                  })\n                }\n              </tbody>\n            </table>\n          </div>: null\n        }\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class ServersContainer extends React.Component {\n\n  static propTypes = {\n    specSelectors: PropTypes.object.isRequired,\n    oas3Selectors: PropTypes.object.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n  }\n\n  render () {\n    const {specSelectors, oas3Selectors, oas3Actions, getComponent} = this.props\n\n    const servers = specSelectors.servers()\n\n    const Servers = getComponent(\"Servers\")\n\n    return servers && servers.size ? (\n      <div>\n        <span className=\"servers-title\">Servers</span>\n        <Servers\n          servers={servers}\n          currentServer={oas3Selectors.selectedServer()}\n          setSelectedServer={oas3Actions.setSelectedServer}\n          setServerVariableValue={oas3Actions.setServerVariableValue}\n          getServerVariable={oas3Selectors.serverVariableValue}\n          getEffectiveServerValue={oas3Selectors.serverEffectiveValue}\n        />\n      </div> ) : null\n  }\n}", "import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport cx from \"classnames\"\nimport { stringify } from \"core/utils\"\n\nconst NOOP = Function.prototype\n\nexport default class RequestBodyEditor extends PureComponent {\n\n  static propTypes = {\n    onChange: PropTypes.func,\n    getComponent: PropTypes.func.isRequired,\n    value: PropTypes.string,\n    defaultValue: PropTypes.string,\n    errors: PropTypes.array,\n  };\n\n  static defaultProps = {\n    onChange: NOOP,\n    userHasEditedBody: false,\n  };\n\n  constructor(props, context) {\n    super(props, context)\n\n    this.state = {\n      value: stringify(props.value) || props.defaultValue\n    }\n\n    // this is the glue that makes sure our initial value gets set as the\n    // current request body value\n    // TODO: achieve this in a selector instead\n    props.onChange(props.value)\n  }\n\n  applyDefaultValue = (nextProps) => {\n    const { onChange, defaultValue } = (nextProps ? nextProps : this.props)\n\n    this.setState({\n      value: defaultValue\n    })\n\n    return onChange(defaultValue)\n  }\n\n  onChange = (value) => {\n    this.props.onChange(stringify(value))\n  }\n\n  onDomChange = e => {\n    const inputValue = e.target.value\n\n    this.setState({\n      value: inputValue,\n    }, () => this.onChange(inputValue))\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    if(\n      this.props.value !== nextProps.value &&\n      nextProps.value !== this.state.value\n    ) {\n\n      this.setState({\n        value: stringify(nextProps.value)\n      })\n    }\n\n\n\n    if(!nextProps.value && nextProps.defaultValue && !!this.state.value) {\n      // if new value is falsy, we have a default, AND the falsy value didn't\n      // come from us originally\n      this.applyDefaultValue(nextProps)\n    }\n  }\n\n  render() {\n    let {\n      getComponent,\n      errors,\n    } = this.props\n\n    let {\n      value\n    } = this.state\n\n    let isInvalid = errors.size > 0 ? true : false\n    const TextArea = getComponent(\"TextArea\")\n\n    return (\n      <div className=\"body-param\">\n        <TextArea\n          className={cx(\"body-param__text\", { invalid: isInvalid } )}\n          title={errors.size ? errors.join(\", \") : \"\"}\n          value={value}\n          onChange={ this.onDomChange }\n        />\n      </div>\n    )\n\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class HttpAuth extends React.Component {\n  static propTypes = {\n    authorized: PropTypes.object,\n    getComponent: PropTypes.func.isRequired,\n    errSelectors: PropTypes.object.isRequired,\n    schema: PropTypes.object.isRequired,\n    name: PropTypes.string.isRequired,\n    onChange: PropTypes.func\n  }\n\n  constructor(props, context) {\n    super(props, context)\n    let { name, schema } = this.props\n    let value = this.getValue()\n\n    this.state = {\n      name: name,\n      schema: schema,\n      value: value\n    }\n  }\n\n  getValue () {\n    let { name, authorized } = this.props\n\n    return authorized && authorized.getIn([name, \"value\"])\n  }\n\n  onChange =(e) => {\n    let { onChange } = this.props\n    let { value, name } = e.target\n\n    let newValue = Object.assign({}, this.state.value)\n\n    if(name) {\n      newValue[name] = value\n    } else {\n      newValue = value\n    }\n\n    this.setState({ value: newValue }, () => onChange(this.state))\n\n  }\n\n  render() {\n    let { schema, getComponent, errSelectors, name } = this.props\n    const Input = getComponent(\"Input\")\n    const Row = getComponent(\"Row\")\n    const Col = getComponent(\"Col\")\n    const AuthError = getComponent(\"authError\")\n    const Markdown = getComponent(\"Markdown\", true)\n    const JumpToPath = getComponent(\"JumpToPath\", true)\n\n    const scheme = (schema.get(\"scheme\") || \"\").toLowerCase()\n    let value = this.getValue()\n    let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n\n    if(scheme === \"basic\") {\n      let username = value ? value.get(\"username\") : null\n      return <div>\n        <h4>\n          <code>{ name || schema.get(\"name\") }</code>&nbsp;\n            (http, Basic)\n            <JumpToPath path={[ \"securityDefinitions\", name ]} />\n          </h4>\n        { username && <h6>Authorized</h6> }\n        <Row>\n          <Markdown source={ schema.get(\"description\") } />\n        </Row>\n        <Row>\n          <label>Username:</label>\n          {\n            username ? <code> { username } </code>\n                     : <Col><Input type=\"text\" required=\"required\" name=\"username\" onChange={ this.onChange } autoFocus/></Col>\n          }\n        </Row>\n        <Row>\n          <label>Password:</label>\n            {\n              username ? <code> ****** </code>\n                       : <Col><Input autoComplete=\"new-password\"\n                                     name=\"password\"\n                                     type=\"password\"\n                                     onChange={ this.onChange }/></Col>\n            }\n        </Row>\n        {\n          errors.valueSeq().map( (error, key) => {\n            return <AuthError error={ error }\n                              key={ key }/>\n          } )\n        }\n      </div>\n    }\n\n    if(scheme === \"bearer\") {\n      return (\n        <div>\n          <h4>\n            <code>{ name || schema.get(\"name\") }</code>&nbsp;\n              (http, Bearer)\n              <JumpToPath path={[ \"securityDefinitions\", name ]} />\n            </h4>\n            { value && <h6>Authorized</h6>}\n            <Row>\n              <Markdown source={ schema.get(\"description\") } />\n            </Row>\n            <Row>\n              <label>Value:</label>\n              {\n                value ? <code> ****** </code>\n              : <Col><Input type=\"text\" onChange={ this.onChange } autoFocus/></Col>\n          }\n        </Row>\n        {\n          errors.valueSeq().map( (error, key) => {\n            return <AuthError error={ error }\n              key={ key }/>\n          } )\n        }\n      </div>\n    )\n    }\n  return <div>\n    <em><b>{name}</b> HTTP authentication: unsupported scheme {`'${scheme}'`}</em>\n  </div>\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class OperationServers extends React.Component {\n  static propTypes = {\n    // for self\n    path: PropTypes.string.isRequired,\n    method: PropTypes.string.isRequired,\n    operationServers: ImPropTypes.list,\n    pathServers: ImPropTypes.list,\n    setSelectedServer: PropTypes.func.isRequired,\n    setServerVariableValue: PropTypes.func.isRequired,\n    getSelectedServer: PropTypes.func.isRequired,\n    getServerVariable: PropTypes.func.isRequired,\n    getEffectiveServerValue: PropTypes.func.isRequired,\n\n    // utils\n    getComponent: PropTypes.func.isRequired\n  }\n\n  setSelectedServer = (server) => {\n    const { path, method } = this.props\n    // FIXME: we should be keeping up with this in props/state upstream of us\n    // instead of cheating™ with `forceUpdate`\n    this.forceUpdate()\n    return this.props.setSelectedServer(server, `${path}:${method}`)\n  }\n\n  setServerVariableValue = (obj) => {\n    const { path, method } = this.props\n    // FIXME: we should be keeping up with this in props/state upstream of us\n    // instead of cheating™ with `forceUpdate`\n    this.forceUpdate()\n    return this.props.setServerVariableValue({\n      ...obj,\n      namespace: `${path}:${method}`\n    })\n  }\n\n  getSelectedServer = () => {\n    const { path, method } = this.props\n    return this.props.getSelectedServer(`${path}:${method}`)\n  }\n\n  getServerVariable = (server, key) => {\n    const { path, method } = this.props\n    return this.props.getServerVariable({\n      namespace: `${path}:${method}`,\n      server\n    }, key)\n  }\n\n  getEffectiveServerValue = (server) => {\n    const { path, method } = this.props\n    return this.props.getEffectiveServerValue({\n      server,\n      namespace: `${path}:${method}`\n    })\n  }\n\n  render() {\n    const {\n      // for self\n      operationServers,\n      pathServers,\n\n      // util\n      getComponent\n    } = this.props\n\n    if(!operationServers && !pathServers) {\n      return null\n    }\n\n    const Servers = getComponent(\"Servers\")\n\n    const serversToDisplay = operationServers || pathServers\n    const displaying = operationServers ? \"operation\" : \"path\"\n\n    return <div className=\"opblock-section operation-servers\">\n      <div className=\"opblock-section-header\">\n        <div className=\"tab-header\">\n          <h4 className=\"opblock-title\">Servers</h4>\n        </div>\n      </div>\n      <div className=\"opblock-description-wrapper\">\n        <h4 className=\"message\">\n          These {displaying}-level options override the global server options.\n        </h4>\n        <Servers\n          servers={serversToDisplay}\n          currentServer={this.getSelectedServer()}\n          setSelectedServer={this.setSelectedServer}\n          setServerVariableValue={this.setServerVariableValue}\n          getServerVariable={this.getServerVariable}\n          getEffectiveServerValue={this.getEffectiveServerValue}\n          />\n      </div>\n    </div>\n  }\n}\n", "import Markdown from \"./markdown\"\nimport AuthItem from \"./auth-item\"\nimport VersionStamp from \"./version-stamp\"\nimport OnlineValidatorBadge from \"./online-validator-badge\"\nimport Model from \"./model\"\nimport JsonSchema_string from \"./json-schema-string\"\n\nexport default {\n  Markdown,\n  AuthItem,\n  JsonSchema_string,\n  VersionStamp,\n  model: Model,\n  onlineValidatorBadge: OnlineValidatorBadge,\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport cx from \"classnames\"\nimport { Remarkable } from \"remarkable\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\nimport { sanitizer } from \"core/components/providers/markdown\"\n\nconst parser = new Remarkable(\"commonmark\")\nparser.block.ruler.enable([\"table\"])\nparser.set({ linkTarget: \"_blank\" })\n\nexport const Markdown = ({ source, className = \"\", getConfigs }) => {\n  if(typeof source !== \"string\") {\n    return null\n  }\n\n  if ( source ) {\n    const { useUnsafeMarkdown } = getConfigs()\n    const html = parser.render(source)\n    const sanitized = sanitizer(html, { useUnsafeMarkdown })\n\n    let trimmed\n\n    if(typeof sanitized === \"string\") {\n      trimmed = sanitized.trim()\n    }\n\n    return (\n      <div\n        dangerouslySetInnerHTML={{\n          __html: trimmed\n        }}\n        className={cx(className, \"renderedMarkdown\")}\n      />\n    )\n  }\n  return null\n}\nMarkdown.propTypes = {\n  source: PropTypes.string,\n  className: PropTypes.string,\n  getConfigs: PropTypes.func,\n}\n\nMarkdown.defaultProps = {\n  getConfigs: () => ({ useUnsafeMarkdown: false }),\n}\n\nexport default OAS3ComponentWrapFactory(Markdown)\n", "import React from \"react\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\n\nexport default OAS3ComponentWrapFactory(({ Ori, ...props }) => {\n  const {\n    schema, getComponent, errSelectors, authorized, onAuthChange, name\n  } = props\n\n  const HttpAuth = getComponent(\"HttpAuth\")\n  const type = schema.get(\"type\")\n\n  if(type === \"http\") {\n    return <HttpAuth key={ name }\n              schema={ schema }\n              name={ name }\n              errSelectors={ errSelectors }\n              authorized={ authorized }\n              getComponent={ getComponent }\n              onChange={ onAuthChange }/>\n  } else {\n    return <Ori {...props} />\n  }\n})\n", "import React from \"react\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\n\nexport default OAS3ComponentWrapFactory((props) => {\n  const { Ori } = props\n\n  return <span>\n    <Ori {...props} />\n    <small className=\"version-stamp\">\n      <pre className=\"version\">OAS3</pre>\n    </small>\n  </span>\n})\n", "import { OAS3ComponentWrapFactory } from \"../helpers\"\nimport OnlineValidatorBadge from \"core/components/online-validator-badge\"\n\n// OAS3 spec is now supported by the online validator.\nexport default OAS3ComponentWrapFactory(OnlineValidatorBadge)\n", "import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\nimport Model from \"core/components/model\"\n\nclass ModelComponent extends Component {\n  static propTypes = {\n    schema: PropTypes.object.isRequired,\n    name: PropTypes.string,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    expandDepth: PropTypes.number,\n    includeReadOnly: PropTypes.bool,\n    includeWriteOnly: PropTypes.bool,\n  }\n\n  render(){\n    let { getConfigs, schema } = this.props\n    let classes = [\"model-box\"]\n    let isDeprecated = schema.get(\"deprecated\") === true\n    let message = null\n\n    if(isDeprecated) {\n      classes.push(\"deprecated\")\n      message = <span className=\"model-deprecated-warning\">Deprecated:</span>\n    }\n\n    return <div className={classes.join(\" \")}>\n      {message}\n      <Model { ...this.props }\n        getConfigs={ getConfigs }\n        depth={ 1 }\n        expandDepth={ this.props.expandDepth || 0 }\n        />\n    </div>\n  }\n}\n\nexport default OAS3ComponentWrapFactory(ModelComponent)\n", "import React from \"react\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\n\nexport default OAS3ComponentWrapFactory(({ Ori, ...props }) => {\n  const {\n    schema,\n    getComponent,\n    errors,\n    onChange\n  } = props\n\n  const format = schema && schema.get ? schema.get(\"format\") : null\n  const type = schema && schema.get ? schema.get(\"type\") : null\n  const Input = getComponent(\"Input\")\n\n  if(type && type === \"string\" && (format && (format === \"binary\" || format === \"base64\"))) {\n    return <Input type=\"file\"\n                   className={ errors.length ? \"invalid\" : \"\"}\n                   title={ errors.length ? errors : \"\"}\n                   onChange={(e) => {\n                     onChange(e.target.files[0])\n                   }}\n                   disabled={Ori.isDisabled}/>\n  } else {\n    return <Ori {...props} />\n  }\n})\n", "import { OrderedMap, Map, List } from \"immutable\"\nimport { isOAS3 as isOAS3Helper } from \"./helpers\"\nimport { getDefaultRequestBodyValue } from \"./components/request-body\"\nimport { stringify } from \"../../utils\"\n\n// Helpers\n\nfunction onlyOAS3(selector) {\n  return (...args) => (system) => {\n    const spec = system.getSystem().specSelectors.specJson()\n    if(isOAS3Helper(spec)) {\n      return selector(...args)\n    } else {\n      return null\n    }\n  }\n}\n\nfunction validateRequestBodyIsRequired(selector) {\n  return (...args) => (system) => {\n    const specJson = system.getSystem().specSelectors.specJson()\n    const argsList = [...args]\n    // expect argsList[0] = state\n    let pathMethod = argsList[1] || []\n    let isOas3RequestBodyRequired = specJson.getIn([\"paths\", ...pathMethod, \"requestBody\", \"required\"])\n\n    if (isOas3RequestBodyRequired) {\n      return selector(...args)\n    } else {\n      // validation pass b/c not required\n      return true\n    }\n  }\n}\n\nconst validateRequestBodyValueExists = (state, pathMethod) => {\n  pathMethod = pathMethod || []\n  let oas3RequestBodyValue = state.getIn([\"requestData\", ...pathMethod, \"bodyValue\"])\n  // context: bodyValue can be a String, or a Map\n  if (!oas3RequestBodyValue) {\n    return false\n  }\n  // validation pass if String is not empty, or if Map exists\n  return true\n}\n\n\nexport const selectedServer = onlyOAS3((state, namespace) => {\n    const path = namespace ? [namespace, \"selectedServer\"] : [\"selectedServer\"]\n    return state.getIn(path) || \"\"\n  }\n)\n\nexport const requestBodyValue = onlyOAS3((state, path, method) => {\n    return state.getIn([\"requestData\", path, method, \"bodyValue\"]) || null\n  }\n)\n\nexport const shouldRetainRequestBodyValue = onlyOAS3((state, path, method) => {\n    return state.getIn([\"requestData\", path, method, \"retainBodyValue\"]) || false\n  }\n)\n\nexport const hasUserEditedBody = (state, path, method) => (system) => {\n  const {oas3Selectors, specSelectors} = system.getSystem()\n  const spec = specSelectors.specJson()\n  if(isOAS3Helper(spec)) {\n    let userHasEditedBody = false\n    const currentMediaType = oas3Selectors.requestContentType(path, method)\n    let userEditedRequestBody = oas3Selectors.requestBodyValue(path, method)\n    if (Map.isMap(userEditedRequestBody)) {\n      // context is not application/json media-type\n      userEditedRequestBody = stringify(userEditedRequestBody.mapEntries((kv) => Map.isMap(kv[1]) ? [kv[0], kv[1].get(\"value\")] : kv).toJS())\n    }\n    if(List.isList(userEditedRequestBody)) {\n      userEditedRequestBody = stringify(userEditedRequestBody)\n    }\n    if (currentMediaType) {\n      const currentMediaTypeDefaultBodyValue = getDefaultRequestBodyValue(\n        specSelectors.specResolvedSubtree([\"paths\", path, method, \"requestBody\"]),\n        currentMediaType,\n        oas3Selectors.activeExamplesMember(\n          path, method,\n          \"requestBody\",\n          \"requestBody\",\n        )\n      )\n      userHasEditedBody = !!userEditedRequestBody && userEditedRequestBody !== currentMediaTypeDefaultBodyValue\n    }\n    return userHasEditedBody\n  } else {\n    return null\n  }\n}\n\nexport const requestBodyInclusionSetting = onlyOAS3((state, path, method) => {\n    return state.getIn([\"requestData\", path, method, \"bodyInclusion\"]) || Map()\n  }\n)\n\nexport const requestBodyErrors = onlyOAS3((state, path, method) => {\n    return state.getIn([\"requestData\", path, method, \"errors\"]) || null\n  }\n)\n\nexport const activeExamplesMember = onlyOAS3((state, path, method, type, name) => {\n    return state.getIn([\"examples\", path, method, type, name, \"activeExample\"]) || null\n  }\n)\n\nexport const requestContentType = onlyOAS3((state, path, method) => {\n    return state.getIn([\"requestData\", path, method, \"requestContentType\"]) || null\n  }\n)\n\nexport const responseContentType = onlyOAS3((state, path, method) => {\n    return state.getIn([\"requestData\", path, method, \"responseContentType\"]) || null\n  }\n)\n\nexport const serverVariableValue = onlyOAS3((state, locationData, key) => {\n    let path\n\n    // locationData may take one of two forms, for backwards compatibility\n    // Object: ({server, namespace?}) or String:(server)\n    if(typeof locationData !== \"string\") {\n      const { server, namespace } = locationData\n      if(namespace) {\n        path = [namespace, \"serverVariableValues\", server, key]\n      } else {\n        path = [\"serverVariableValues\", server, key]\n      }\n    } else {\n      const server = locationData\n      path = [\"serverVariableValues\", server, key]\n    }\n\n    return state.getIn(path) || null\n  }\n)\n\nexport const serverVariables = onlyOAS3((state, locationData) => {\n    let path\n\n    // locationData may take one of two forms, for backwards compatibility\n    // Object: ({server, namespace?}) or String:(server)\n    if(typeof locationData !== \"string\") {\n      const { server, namespace } = locationData\n      if(namespace) {\n        path = [namespace, \"serverVariableValues\", server]\n      } else {\n        path = [\"serverVariableValues\", server]\n      }\n    } else {\n      const server = locationData\n      path = [\"serverVariableValues\", server]\n    }\n\n    return state.getIn(path) || OrderedMap()\n  }\n)\n\nexport const serverEffectiveValue = onlyOAS3((state, locationData) => {\n    var varValues, serverValue\n\n    // locationData may take one of two forms, for backwards compatibility\n    // Object: ({server, namespace?}) or String:(server)\n    if(typeof locationData !== \"string\") {\n      const { server, namespace } = locationData\n      serverValue = server\n      if(namespace) {\n        varValues = state.getIn([namespace, \"serverVariableValues\", serverValue])\n      } else {\n        varValues = state.getIn([\"serverVariableValues\", serverValue])\n      }\n    } else {\n      serverValue = locationData\n      varValues = state.getIn([\"serverVariableValues\", serverValue])\n    }\n\n    varValues = varValues || OrderedMap()\n    let str = serverValue\n\n    varValues.map((val, key) => {\n      str = str.replace(new RegExp(`{${key}}`, \"g\"), val)\n    })\n\n    return str\n  }\n)\n\nexport const validateBeforeExecute = validateRequestBodyIsRequired(\n  (state, pathMethod) => validateRequestBodyValueExists(state, pathMethod)\n)\n\nexport const validateShallowRequired = (state, { oas3RequiredRequestBodyContentType, oas3RequestContentType, oas3RequestBodyValue} ) => {\n  let missingRequiredKeys = []\n  // context: json => String; urlencoded, form-data => Map\n  if (!Map.isMap(oas3RequestBodyValue)) {\n    return missingRequiredKeys\n  }\n  let requiredKeys = []\n  // Cycle through list of possible contentTypes for matching contentType and defined requiredKeys\n  Object.keys(oas3RequiredRequestBodyContentType.requestContentType).forEach((contentType) => {\n    if (contentType === oas3RequestContentType) {\n      let contentTypeVal = oas3RequiredRequestBodyContentType.requestContentType[contentType]\n      contentTypeVal.forEach((requiredKey) => {\n        if (requiredKeys.indexOf(requiredKey) < 0 ) {\n          requiredKeys.push(requiredKey)\n        }\n      })\n    }\n  })\n  requiredKeys.forEach((key) => {\n    let requiredKeyValue = oas3RequestBodyValue.getIn([key, \"value\"])\n    if (!requiredKeyValue) {\n      missingRequiredKeys.push(key)\n    }\n  })\n  return missingRequiredKeys\n}\n", "import { fromJS, Map } from \"immutable\"\n\nimport {\n  UPDATE_SELECTED_SERVER,\n  UPDATE_REQUEST_BODY_VALUE,\n  UPDATE_REQUEST_BODY_INCLUSION,\n  UPDATE_ACTIVE_EXAMPLES_MEMBER,\n  UPDATE_REQUEST_CONTENT_TYPE,\n  UPDATE_SERVER_VARIABLE_VALUE,\n  UPDATE_RESPONSE_CONTENT_TYPE,\n  SET_REQUEST_BODY_VALIDATE_ERROR,\n  CLEAR_REQUEST_BODY_VALIDATE_ERROR,\n  CLEAR_REQUEST_BODY_VALUE, UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG,\n} from \"./actions\"\n\nexport default {\n  [UPDATE_SELECTED_SERVER]: (state, { payload: { selectedServerUrl, namespace } } ) =>{\n    const path = namespace ? [ namespace, \"selectedServer\"] : [ \"selectedServer\"]\n    return state.setIn( path, selectedServerUrl)\n  },\n  [UPDATE_REQUEST_BODY_VALUE]: (state, { payload: { value, pathMethod } } ) =>{\n    let [path, method] = pathMethod\n    if (!Map.isMap(value)) {\n      // context: application/json is always a String (instead of Map)\n      return state.setIn( [ \"requestData\", path, method, \"bodyValue\" ], value)\n    }\n    let currentVal = state.getIn([\"requestData\", path, method, \"bodyValue\"]) || Map()\n    if (!Map.isMap(currentVal)) {\n      // context: user switch from application/json to application/x-www-form-urlencoded\n      currentVal = Map()\n    }\n    let newVal\n    const [...valueKeys] = value.keys()\n    valueKeys.forEach((valueKey) => {\n      let valueKeyVal = value.getIn([valueKey])\n      if (!currentVal.has(valueKey)) {\n        newVal = currentVal.setIn([valueKey, \"value\"], valueKeyVal)\n      } else if (!Map.isMap(valueKeyVal)) {\n        // context: user input will be received as String\n        newVal = currentVal.setIn([valueKey, \"value\"], valueKeyVal)\n      }\n    })\n    return state.setIn([\"requestData\", path, method, \"bodyValue\"], newVal)\n  },\n  [UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG]: (state, { payload: { value, pathMethod } } ) =>{\n    let [path, method] = pathMethod\n    return state.setIn([\"requestData\", path, method, \"retainBodyValue\"], value)\n  },\n  [UPDATE_REQUEST_BODY_INCLUSION]: (state, { payload: { value, pathMethod, name } } ) =>{\n    let [path, method] = pathMethod\n    return state.setIn( [ \"requestData\", path, method, \"bodyInclusion\", name ], value)\n  },\n  [UPDATE_ACTIVE_EXAMPLES_MEMBER]: (state, { payload: { name, pathMethod, contextType, contextName } } ) =>{\n    let [path, method] = pathMethod\n    return state.setIn( [ \"examples\", path, method, contextType, contextName, \"activeExample\" ], name)\n  },\n  [UPDATE_REQUEST_CONTENT_TYPE]: (state, { payload: { value, pathMethod } } ) =>{\n    let [path, method] = pathMethod\n    return state.setIn( [ \"requestData\", path, method, \"requestContentType\" ], value)\n  },\n  [UPDATE_RESPONSE_CONTENT_TYPE]: (state, { payload: { value, path, method } } ) =>{\n    return state.setIn( [ \"requestData\", path, method, \"responseContentType\" ], value)\n  },\n  [UPDATE_SERVER_VARIABLE_VALUE]: (state, { payload: { server, namespace, key, val } } ) =>{\n    const path = namespace ? [ namespace, \"serverVariableValues\", server, key ] : [ \"serverVariableValues\", server, key ]\n    return state.setIn(path, val)\n  },\n  [SET_REQUEST_BODY_VALIDATE_ERROR]: (state, { payload: { path, method, validationErrors } } ) => {\n    let errors = []\n    errors.push(\"Required field is not provided\")\n    if (validationErrors.missingBodyValue) {\n      // context: is application/json or application/xml, where typeof (missing) bodyValue = String\n      return state.setIn([\"requestData\", path, method, \"errors\"], fromJS(errors))\n    }\n    if (validationErrors.missingRequiredKeys && validationErrors.missingRequiredKeys.length > 0) {\n      // context: is application/x-www-form-urlencoded, with list of missing keys\n      const { missingRequiredKeys } = validationErrors\n      return state.updateIn([\"requestData\", path, method, \"bodyValue\"], fromJS({}), missingKeyValues => {\n        return missingRequiredKeys.reduce((bodyValue, currentMissingKey) => {\n          return bodyValue.setIn([currentMissingKey, \"errors\"], fromJS(errors))\n        }, missingKeyValues)\n      })\n    }\n    console.warn(\"unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR\")\n    return state\n  },\n  [CLEAR_REQUEST_BODY_VALIDATE_ERROR]: (state, { payload: { path, method } }) => {\n    const requestBodyValue = state.getIn([\"requestData\", path, method, \"bodyValue\"])\n    if (!Map.isMap(requestBodyValue)) {\n      return state.setIn([\"requestData\", path, method, \"errors\"], fromJS([]))\n    }\n    const [...valueKeys] = requestBodyValue.keys()\n    if (!valueKeys) {\n      return state\n    }\n    return state.updateIn([\"requestData\", path, method, \"bodyValue\"], fromJS({}), bodyValues => {\n      return valueKeys.reduce((bodyValue, curr) => {\n        return bodyValue.setIn([curr, \"errors\"], fromJS([]))\n      }, bodyValues)\n    })\n  },\n  [CLEAR_REQUEST_BODY_VALUE]: (state, { payload: { pathMethod }}) => {\n    let [path, method] = pathMethod\n    const requestBodyValue = state.getIn([\"requestData\", path, method, \"bodyValue\"])\n    if (!requestBodyValue) {\n      return state\n    }\n    if (!Map.isMap(requestBodyValue)) {\n      return state.setIn([\"requestData\", path, method, \"bodyValue\"], \"\")\n    }\n    return state.setIn([\"requestData\", path, method, \"bodyValue\"], Map())\n  }\n}\n", "import { pascalCaseFilename } from \"core/utils\"\nimport SafeRender from \"core/plugins/safe-render\"\n\nconst request = require.context(\".\", true, /\\.jsx?$/)\n\nconst allPlugins = {}\n\nrequest.keys().forEach( function( key ){\n  if( key === \"./index.js\" ) {\n    return\n  }\n\n  // if( key.slice(2).indexOf(\"/\") > -1) {\n  //   // skip files in subdirs\n  //   return\n  // }\n\n  let mod = request(key)\n  allPlugins[pascalCaseFilename(key)] = mod.default ? mod.default : mod\n})\n\nallPlugins.SafeRender = SafeRender\n\nexport default allPlugins\n", "import _typeof from \"@babel/runtime-corejs3/helpers/typeof\";\nimport _toConsumableArray from \"@babel/runtime-corejs3/helpers/toConsumableArray\";\nimport _mapInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/map\";\nimport _Array$from from \"@babel/runtime-corejs3/core-js-stable/array/from\";\nimport _sliceInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/slice\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\n\nvar isRfc3986Reserved = function isRfc3986Reserved(char) {\n  return \":/?#[]@!$&'()*+,;=\".indexOf(char) > -1;\n};\n\nvar isRrc3986Unreserved = function isRrc3986Unreserved(char) {\n  return /^[a-z0-9\\-._~]+$/i.test(char);\n}; // eslint-disable-next-line default-param-last\n\n\nexport function encodeDisallowedCharacters(str) {\n  var _context;\n\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      escape = _ref.escape;\n\n  var parse = arguments.length > 2 ? arguments[2] : undefined;\n\n  if (typeof str === 'number') {\n    str = str.toString();\n  }\n\n  if (typeof str !== 'string' || !str.length) {\n    return str;\n  }\n\n  if (!escape) {\n    return str;\n  }\n\n  if (parse) {\n    return JSON.parse(str);\n  } // In ES6 you can do this quite easily by using the new ... spread operator.\n  // This causes the string iterator (another new ES6 feature) to be used internally,\n  // and because that iterator is designed to deal with\n  // code points rather than UCS-2/UTF-16 code units.\n\n\n  return _mapInstanceProperty(_context = _toConsumableArray(str)).call(_context, function (char) {\n    var _context2, _context3;\n\n    if (isRrc3986Unreserved(char)) {\n      return char;\n    }\n\n    if (isRfc3986Reserved(char) && escape === 'unsafe') {\n      return char;\n    }\n\n    var encoder = new TextEncoder();\n\n    var encoded = _mapInstanceProperty(_context2 = _mapInstanceProperty(_context3 = _Array$from(encoder.encode(char))).call(_context3, function (byte) {\n      var _context4;\n\n      return _sliceInstanceProperty(_context4 = \"0\".concat(byte.toString(16).toUpperCase())).call(_context4, -2);\n    })).call(_context2, function (encodedByte) {\n      return \"%\".concat(encodedByte);\n    }).join('');\n\n    return encoded;\n  }).join('');\n}\nexport default function stylize(config) {\n  var value = config.value;\n\n  if (Array.isArray(value)) {\n    return encodeArray(config);\n  }\n\n  if (_typeof(value) === 'object') {\n    return encodeObject(config);\n  }\n\n  return encodePrimitive(config);\n}\n\nfunction encodeArray(_ref2) {\n  var key = _ref2.key,\n      value = _ref2.value,\n      style = _ref2.style,\n      explode = _ref2.explode,\n      escape = _ref2.escape;\n\n  var valueEncoder = function valueEncoder(str) {\n    return encodeDisallowedCharacters(str, {\n      escape: escape\n    });\n  };\n\n  if (style === 'simple') {\n    return _mapInstanceProperty(value).call(value, function (val) {\n      return valueEncoder(val);\n    }).join(',');\n  }\n\n  if (style === 'label') {\n    return \".\".concat(_mapInstanceProperty(value).call(value, function (val) {\n      return valueEncoder(val);\n    }).join('.'));\n  }\n\n  if (style === 'matrix') {\n    return _mapInstanceProperty(value).call(value, function (val) {\n      return valueEncoder(val);\n    }).reduce(function (prev, curr) {\n      var _context7;\n\n      if (!prev || explode) {\n        var _context5, _context6;\n\n        return _concatInstanceProperty(_context5 = _concatInstanceProperty(_context6 = \"\".concat(prev || '', \";\")).call(_context6, key, \"=\")).call(_context5, curr);\n      }\n\n      return _concatInstanceProperty(_context7 = \"\".concat(prev, \",\")).call(_context7, curr);\n    }, '');\n  }\n\n  if (style === 'form') {\n    var after = explode ? \"&\".concat(key, \"=\") : ',';\n    return _mapInstanceProperty(value).call(value, function (val) {\n      return valueEncoder(val);\n    }).join(after);\n  }\n\n  if (style === 'spaceDelimited') {\n    var _after = explode ? \"\".concat(key, \"=\") : '';\n\n    return _mapInstanceProperty(value).call(value, function (val) {\n      return valueEncoder(val);\n    }).join(\" \".concat(_after));\n  }\n\n  if (style === 'pipeDelimited') {\n    var _after2 = explode ? \"\".concat(key, \"=\") : '';\n\n    return _mapInstanceProperty(value).call(value, function (val) {\n      return valueEncoder(val);\n    }).join(\"|\".concat(_after2));\n  }\n\n  return undefined;\n}\n\nfunction encodeObject(_ref3) {\n  var key = _ref3.key,\n      value = _ref3.value,\n      style = _ref3.style,\n      explode = _ref3.explode,\n      escape = _ref3.escape;\n\n  var valueEncoder = function valueEncoder(str) {\n    return encodeDisallowedCharacters(str, {\n      escape: escape\n    });\n  };\n\n  var valueKeys = _Object$keys(value);\n\n  if (style === 'simple') {\n    return valueKeys.reduce(function (prev, curr) {\n      var _context8, _context9, _context10;\n\n      var val = valueEncoder(value[curr]);\n      var middleChar = explode ? '=' : ',';\n      var prefix = prev ? \"\".concat(prev, \",\") : '';\n      return _concatInstanceProperty(_context8 = _concatInstanceProperty(_context9 = _concatInstanceProperty(_context10 = \"\".concat(prefix)).call(_context10, curr)).call(_context9, middleChar)).call(_context8, val);\n    }, '');\n  }\n\n  if (style === 'label') {\n    return valueKeys.reduce(function (prev, curr) {\n      var _context11, _context12, _context13;\n\n      var val = valueEncoder(value[curr]);\n      var middleChar = explode ? '=' : '.';\n      var prefix = prev ? \"\".concat(prev, \".\") : '.';\n      return _concatInstanceProperty(_context11 = _concatInstanceProperty(_context12 = _concatInstanceProperty(_context13 = \"\".concat(prefix)).call(_context13, curr)).call(_context12, middleChar)).call(_context11, val);\n    }, '');\n  }\n\n  if (style === 'matrix' && explode) {\n    return valueKeys.reduce(function (prev, curr) {\n      var _context14, _context15;\n\n      var val = valueEncoder(value[curr]);\n      var prefix = prev ? \"\".concat(prev, \";\") : ';';\n      return _concatInstanceProperty(_context14 = _concatInstanceProperty(_context15 = \"\".concat(prefix)).call(_context15, curr, \"=\")).call(_context14, val);\n    }, '');\n  }\n\n  if (style === 'matrix') {\n    // no explode\n    return valueKeys.reduce(function (prev, curr) {\n      var _context16, _context17;\n\n      var val = valueEncoder(value[curr]);\n      var prefix = prev ? \"\".concat(prev, \",\") : \";\".concat(key, \"=\");\n      return _concatInstanceProperty(_context16 = _concatInstanceProperty(_context17 = \"\".concat(prefix)).call(_context17, curr, \",\")).call(_context16, val);\n    }, '');\n  }\n\n  if (style === 'form') {\n    return valueKeys.reduce(function (prev, curr) {\n      var _context18, _context19, _context20, _context21;\n\n      var val = valueEncoder(value[curr]);\n      var prefix = prev ? _concatInstanceProperty(_context18 = \"\".concat(prev)).call(_context18, explode ? '&' : ',') : '';\n      var separator = explode ? '=' : ',';\n      return _concatInstanceProperty(_context19 = _concatInstanceProperty(_context20 = _concatInstanceProperty(_context21 = \"\".concat(prefix)).call(_context21, curr)).call(_context20, separator)).call(_context19, val);\n    }, '');\n  }\n\n  return undefined;\n}\n\nfunction encodePrimitive(_ref4) {\n  var key = _ref4.key,\n      value = _ref4.value,\n      style = _ref4.style,\n      escape = _ref4.escape;\n\n  var valueEncoder = function valueEncoder(str) {\n    return encodeDisallowedCharacters(str, {\n      escape: escape\n    });\n  };\n\n  if (style === 'simple') {\n    return valueEncoder(value);\n  }\n\n  if (style === 'label') {\n    return \".\".concat(valueEncoder(value));\n  }\n\n  if (style === 'matrix') {\n    var _context22;\n\n    return _concatInstanceProperty(_context22 = \";\".concat(key, \"=\")).call(_context22, valueEncoder(value));\n  }\n\n  if (style === 'form') {\n    return valueEncoder(value);\n  }\n\n  if (style === 'deepObject') {\n    return valueEncoder(value, {}, true);\n  }\n\n  return undefined;\n}", "var foldFormDataToRequest = function foldFormDataToRequest(formdata, request) {\n  request.body = formdata;\n};\n\nexport default foldFormDataToRequest;", "import _createForOfIteratorHelper from \"@babel/runtime-corejs3/helpers/createForOfIteratorHelper\";\nimport _typeof from \"@babel/runtime-corejs3/helpers/typeof\";\nimport _slicedToArray from \"@babel/runtime-corejs3/helpers/slicedToArray\";\nimport _asyncToGenerator from \"@babel/runtime-corejs3/helpers/asyncToGenerator\";\nimport _regeneratorRuntime from \"@babel/runtime-corejs3/regenerator\";\nimport _includesInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/includes\";\nimport _entriesInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/entries\";\nimport _Array$from from \"@babel/runtime-corejs3/core-js-stable/array/from\";\nimport _JSON$stringify from \"@babel/runtime-corejs3/core-js-stable/json/stringify\";\nimport _mapInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/map\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport _Object$entries from \"@babel/runtime-corejs3/core-js-stable/object/entries\";\nimport _filterInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/filter\";\nimport 'cross-fetch/polyfill';\n/* global fetch */\n\nimport qs from 'qs';\nimport jsYaml from 'js-yaml';\nimport { FormData, File, Blob } from 'formdata-node';\nimport { encodeDisallowedCharacters } from '../execute/oas3/style-serializer.js';\nimport foldFormDataToRequest from './fold-formdata-to-request.node.js'; // For testing\n\nexport var self = {\n  serializeRes: serializeRes,\n  mergeInQueryOrForm: mergeInQueryOrForm\n}; // Handles fetch-like syntax and the case where there is only one object passed-in\n// (which will have the URL as a property). Also serilizes the response.\n\nexport default function http(_x) {\n  return _http.apply(this, arguments);\n} // exported for testing\n\nfunction _http() {\n  _http = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url) {\n    var request,\n        contentType,\n        res,\n        error,\n        _error,\n        _args = arguments;\n\n    return _regeneratorRuntime.wrap(function _callee$(_context6) {\n      while (1) {\n        switch (_context6.prev = _context6.next) {\n          case 0:\n            request = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};\n\n            if (_typeof(url) === 'object') {\n              request = url;\n              url = request.url;\n            }\n\n            request.headers = request.headers || {}; // Serializes query, for convenience\n            // Should be the last thing we do, as its hard to mutate the URL with\n            // the search string, but much easier to manipulate the req.query object\n\n            self.mergeInQueryOrForm(request); // Newlines in header values cause weird error messages from `window.fetch`,\n            // so let's massage them out.\n            // Context: https://stackoverflow.com/a/50709178\n\n            if (request.headers) {\n              _Object$keys(request.headers).forEach(function (headerName) {\n                var value = request.headers[headerName];\n\n                if (typeof value === 'string') {\n                  request.headers[headerName] = value.replace(/\\n+/g, ' ');\n                }\n              });\n            } // Wait for the request interceptor, if it was provided\n            // WARNING: don't put anything between this and the request firing unless\n            // you have a good reason!\n\n\n            if (!request.requestInterceptor) {\n              _context6.next = 12;\n              break;\n            }\n\n            _context6.next = 8;\n            return request.requestInterceptor(request);\n\n          case 8:\n            _context6.t0 = _context6.sent;\n\n            if (_context6.t0) {\n              _context6.next = 11;\n              break;\n            }\n\n            _context6.t0 = request;\n\n          case 11:\n            request = _context6.t0;\n\n          case 12:\n            // for content-type=multipart\\/form-data remove content-type from request before fetch\n            // so that correct one with `boundary` is set when request body is different than boundary encoded string\n            contentType = request.headers['content-type'] || request.headers['Content-Type']; // TODO(vladimir.gorej@gmail.com): assertion of FormData instance can be removed when migrated to node-fetch@2.x\n\n            if (/multipart\\/form-data/i.test(contentType) && request.body instanceof FormData) {\n              delete request.headers['content-type'];\n              delete request.headers['Content-Type'];\n            } // eslint-disable-next-line no-undef\n\n\n            _context6.prev = 14;\n            _context6.next = 17;\n            return (request.userFetch || fetch)(request.url, request);\n\n          case 17:\n            res = _context6.sent;\n            _context6.next = 20;\n            return self.serializeRes(res, url, request);\n\n          case 20:\n            res = _context6.sent;\n\n            if (!request.responseInterceptor) {\n              _context6.next = 28;\n              break;\n            }\n\n            _context6.next = 24;\n            return request.responseInterceptor(res);\n\n          case 24:\n            _context6.t1 = _context6.sent;\n\n            if (_context6.t1) {\n              _context6.next = 27;\n              break;\n            }\n\n            _context6.t1 = res;\n\n          case 27:\n            res = _context6.t1;\n\n          case 28:\n            _context6.next = 39;\n            break;\n\n          case 30:\n            _context6.prev = 30;\n            _context6.t2 = _context6[\"catch\"](14);\n\n            if (res) {\n              _context6.next = 34;\n              break;\n            }\n\n            throw _context6.t2;\n\n          case 34:\n            error = new Error(res.statusText || \"response status is \".concat(res.status));\n            error.status = res.status;\n            error.statusCode = res.status;\n            error.responseError = _context6.t2;\n            throw error;\n\n          case 39:\n            if (res.ok) {\n              _context6.next = 45;\n              break;\n            }\n\n            _error = new Error(res.statusText || \"response status is \".concat(res.status));\n            _error.status = res.status;\n            _error.statusCode = res.status;\n            _error.response = res;\n            throw _error;\n\n          case 45:\n            return _context6.abrupt(\"return\", res);\n\n          case 46:\n          case \"end\":\n            return _context6.stop();\n        }\n      }\n    }, _callee, null, [[14, 30]]);\n  }));\n  return _http.apply(this, arguments);\n}\n\nexport var shouldDownloadAsText = function shouldDownloadAsText() {\n  var contentType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return /(json|xml|yaml|text)\\b/.test(contentType);\n};\n\nfunction parseBody(body, contentType) {\n  if (contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('+json') > 0)) {\n    return JSON.parse(body);\n  }\n\n  return jsYaml.load(body);\n} // Serialize the response, returns a promise with headers and the body part of the hash\n\n\nexport function serializeRes(oriRes, url) {\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      _ref$loadSpec = _ref.loadSpec,\n      loadSpec = _ref$loadSpec === void 0 ? false : _ref$loadSpec;\n\n  var res = {\n    ok: oriRes.ok,\n    url: oriRes.url || url,\n    status: oriRes.status,\n    statusText: oriRes.statusText,\n    headers: serializeHeaders(oriRes.headers)\n  };\n  var contentType = res.headers['content-type'];\n  var useText = loadSpec || shouldDownloadAsText(contentType);\n  var getBody = useText ? oriRes.text : oriRes.blob || oriRes.buffer;\n  return getBody.call(oriRes).then(function (body) {\n    res.text = body;\n    res.data = body;\n\n    if (useText) {\n      try {\n        var obj = parseBody(body, contentType);\n        res.body = obj;\n        res.obj = obj;\n      } catch (e) {\n        res.parseError = e;\n      }\n    }\n\n    return res;\n  });\n}\n\nfunction serializeHeaderValue(value) {\n  var isMulti = _includesInstanceProperty(value).call(value, ', ');\n\n  return isMulti ? value.split(', ') : value;\n} // Serialize headers into a hash, where mutliple-headers result in an array.\n//\n// eg: Cookie: one\n//     Cookie: two\n//  =  { Cookie: [ \"one\", \"two\" ]\n\n\nexport function serializeHeaders() {\n  var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  if (typeof _entriesInstanceProperty(headers) !== 'function') return {};\n  return _Array$from(_entriesInstanceProperty(headers).call(headers)).reduce(function (acc, _ref2) {\n    var _ref3 = _slicedToArray(_ref2, 2),\n        header = _ref3[0],\n        value = _ref3[1];\n\n    acc[header] = serializeHeaderValue(value);\n    return acc;\n  }, {});\n}\nexport function isFile(obj, navigatorObj) {\n  if (!navigatorObj && typeof navigator !== 'undefined') {\n    // eslint-disable-next-line no-undef\n    navigatorObj = navigator;\n  }\n\n  if (navigatorObj && navigatorObj.product === 'ReactNative') {\n    if (obj && _typeof(obj) === 'object' && typeof obj.uri === 'string') {\n      return true;\n    }\n\n    return false;\n  }\n\n  if (typeof File !== 'undefined' && obj instanceof File) {\n    return true;\n  }\n\n  if (typeof Blob !== 'undefined' && obj instanceof Blob) {\n    return true;\n  }\n\n  if (ArrayBuffer.isView(obj)) {\n    return true;\n  }\n\n  return obj !== null && _typeof(obj) === 'object' && typeof obj.pipe === 'function';\n}\n\nfunction isArrayOfFile(obj, navigatorObj) {\n  return Array.isArray(obj) && obj.some(function (v) {\n    return isFile(v, navigatorObj);\n  });\n}\n\nvar STYLE_SEPARATORS = {\n  form: ',',\n  spaceDelimited: '%20',\n  pipeDelimited: '|'\n};\nvar SEPARATORS = {\n  csv: ',',\n  ssv: '%20',\n  tsv: '%09',\n  pipes: '|'\n}; // Formats a key-value and returns an array of key-value pairs.\n//\n// Return value example 1: [['color', 'blue']]\n// Return value example 2: [['color', 'blue,black,brown']]\n// Return value example 3: [['color', ['blue', 'black', 'brown']]]\n// Return value example 4: [['color', 'R,100,G,200,B,150']]\n// Return value example 5: [['R', '100'], ['G', '200'], ['B', '150']]\n// Return value example 6: [['color[R]', '100'], ['color[G]', '200'], ['color[B]', '150']]\n\nfunction formatKeyValue(key, input) {\n  var skipEncoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var collectionFormat = input.collectionFormat,\n      allowEmptyValue = input.allowEmptyValue,\n      serializationOption = input.serializationOption,\n      encoding = input.encoding; // `input` can be string\n\n  var value = _typeof(input) === 'object' && !Array.isArray(input) ? input.value : input;\n  var encodeFn = skipEncoding ? function (k) {\n    return k.toString();\n  } : function (k) {\n    return encodeURIComponent(k);\n  };\n  var encodedKey = encodeFn(key);\n\n  if (typeof value === 'undefined' && allowEmptyValue) {\n    return [[encodedKey, '']];\n  } // file\n\n\n  if (isFile(value) || isArrayOfFile(value)) {\n    return [[encodedKey, value]];\n  } // for OAS 3 Parameter Object for serialization\n\n\n  if (serializationOption) {\n    return formatKeyValueBySerializationOption(key, value, skipEncoding, serializationOption);\n  } // for OAS 3 Encoding Object\n\n\n  if (encoding) {\n    if ([_typeof(encoding.style), _typeof(encoding.explode), _typeof(encoding.allowReserved)].some(function (type) {\n      return type !== 'undefined';\n    })) {\n      var style = encoding.style,\n          explode = encoding.explode,\n          allowReserved = encoding.allowReserved;\n      return formatKeyValueBySerializationOption(key, value, skipEncoding, {\n        style: style,\n        explode: explode,\n        allowReserved: allowReserved\n      });\n    }\n\n    if (encoding.contentType) {\n      if (encoding.contentType === 'application/json') {\n        // If value is a string, assume value is already a JSON string\n        var json = typeof value === 'string' ? value : _JSON$stringify(value);\n        return [[encodedKey, encodeFn(json)]];\n      }\n\n      return [[encodedKey, encodeFn(value.toString())]];\n    } // Primitive\n\n\n    if (_typeof(value) !== 'object') {\n      return [[encodedKey, encodeFn(value)]];\n    } // Array of primitives\n\n\n    if (Array.isArray(value) && value.every(function (v) {\n      return _typeof(v) !== 'object';\n    })) {\n      return [[encodedKey, _mapInstanceProperty(value).call(value, encodeFn).join(',')]];\n    } // Array or object\n\n\n    return [[encodedKey, encodeFn(_JSON$stringify(value))]];\n  } // for OAS 2 Parameter Object\n  // Primitive\n\n\n  if (_typeof(value) !== 'object') {\n    return [[encodedKey, encodeFn(value)]];\n  } // Array\n\n\n  if (Array.isArray(value)) {\n    if (collectionFormat === 'multi') {\n      // In case of multipart/formdata, it is used as array.\n      // Otherwise, the caller will convert it to a query by qs.stringify.\n      return [[encodedKey, _mapInstanceProperty(value).call(value, encodeFn)]];\n    }\n\n    return [[encodedKey, _mapInstanceProperty(value).call(value, encodeFn).join(SEPARATORS[collectionFormat || 'csv'])]];\n  } // Object\n\n\n  return [[encodedKey, '']];\n}\n\nfunction formatKeyValueBySerializationOption(key, value, skipEncoding, serializationOption) {\n  var _context4;\n\n  var style = serializationOption.style || 'form';\n  var explode = typeof serializationOption.explode === 'undefined' ? style === 'form' : serializationOption.explode; // eslint-disable-next-line no-nested-ternary\n\n  var escape = skipEncoding ? false : serializationOption && serializationOption.allowReserved ? 'unsafe' : 'reserved';\n\n  var encodeFn = function encodeFn(v) {\n    return encodeDisallowedCharacters(v, {\n      escape: escape\n    });\n  };\n\n  var encodeKeyFn = skipEncoding ? function (k) {\n    return k;\n  } : function (k) {\n    return encodeDisallowedCharacters(k, {\n      escape: escape\n    });\n  }; // Primitive\n\n  if (_typeof(value) !== 'object') {\n    return [[encodeKeyFn(key), encodeFn(value)]];\n  } // Array\n\n\n  if (Array.isArray(value)) {\n    if (explode) {\n      // In case of multipart/formdata, it is used as array.\n      // Otherwise, the caller will convert it to a query by qs.stringify.\n      return [[encodeKeyFn(key), _mapInstanceProperty(value).call(value, encodeFn)]];\n    }\n\n    return [[encodeKeyFn(key), _mapInstanceProperty(value).call(value, encodeFn).join(STYLE_SEPARATORS[style])]];\n  } // Object\n\n\n  if (style === 'deepObject') {\n    var _context;\n\n    return _mapInstanceProperty(_context = _Object$keys(value)).call(_context, function (valueKey) {\n      var _context2;\n\n      return [encodeKeyFn(_concatInstanceProperty(_context2 = \"\".concat(key, \"[\")).call(_context2, valueKey, \"]\")), encodeFn(value[valueKey])];\n    });\n  }\n\n  if (explode) {\n    var _context3;\n\n    return _mapInstanceProperty(_context3 = _Object$keys(value)).call(_context3, function (valueKey) {\n      return [encodeKeyFn(valueKey), encodeFn(value[valueKey])];\n    });\n  }\n\n  return [[encodeKeyFn(key), _mapInstanceProperty(_context4 = _Object$keys(value)).call(_context4, function (valueKey) {\n    var _context5;\n\n    return [_concatInstanceProperty(_context5 = \"\".concat(encodeKeyFn(valueKey), \",\")).call(_context5, encodeFn(value[valueKey]))];\n  }).join(',')]];\n}\n\nfunction buildFormData(reqForm) {\n  /**\n   * Build a new FormData instance, support array as field value\n   * OAS2.0 - when collectionFormat is multi\n   * OAS3.0 - when explode of Encoding Object is true\n   *\n   * This function explicitly handles Buffers (for backward compatibility)\n   * if provided as a values to FormData. FormData can only handle USVString\n   * or Blob.\n   *\n   * @param {Object} reqForm - ori req.form\n   * @return {FormData} - new FormData instance\n   */\n  return _Object$entries(reqForm).reduce(function (formData, _ref4) {\n    var _ref5 = _slicedToArray(_ref4, 2),\n        name = _ref5[0],\n        input = _ref5[1];\n\n    // eslint-disable-next-line no-restricted-syntax\n    var _iterator = _createForOfIteratorHelper(formatKeyValue(name, input, true)),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var _step$value = _slicedToArray(_step.value, 2),\n            key = _step$value[0],\n            value = _step$value[1];\n\n        if (Array.isArray(value)) {\n          // eslint-disable-next-line no-restricted-syntax\n          var _iterator2 = _createForOfIteratorHelper(value),\n              _step2;\n\n          try {\n            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n              var v = _step2.value;\n\n              if (ArrayBuffer.isView(v)) {\n                var blob = new Blob([v]);\n                formData.append(key, blob);\n              } else {\n                formData.append(key, v);\n              }\n            }\n          } catch (err) {\n            _iterator2.e(err);\n          } finally {\n            _iterator2.f();\n          }\n        } else if (ArrayBuffer.isView(value)) {\n          var _blob = new Blob([value]);\n\n          formData.append(key, _blob);\n        } else {\n          formData.append(key, value);\n        }\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    return formData;\n  }, new FormData());\n} // Encodes an object using appropriate serializer.\n\n\nexport function encodeFormOrQuery(data) {\n  /**\n   * Encode parameter names and values\n   * @param {Object} result - parameter names and values\n   * @param {string} parameterName - Parameter name\n   * @return {object} encoded parameter names and values\n   */\n  var encodedQuery = _Object$keys(data).reduce(function (result, parameterName) {\n    // eslint-disable-next-line no-restricted-syntax\n    var _iterator3 = _createForOfIteratorHelper(formatKeyValue(parameterName, data[parameterName])),\n        _step3;\n\n    try {\n      for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n        var _step3$value = _slicedToArray(_step3.value, 2),\n            key = _step3$value[0],\n            value = _step3$value[1];\n\n        result[key] = value;\n      }\n    } catch (err) {\n      _iterator3.e(err);\n    } finally {\n      _iterator3.f();\n    }\n\n    return result;\n  }, {});\n\n  return qs.stringify(encodedQuery, {\n    encode: false,\n    indices: false\n  }) || '';\n} // If the request has a `query` object, merge it into the request.url, and delete the object\n// If file and/or multipart, also create FormData instance\n\nexport function mergeInQueryOrForm() {\n  var req = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _req$url = req.url,\n      url = _req$url === void 0 ? '' : _req$url,\n      query = req.query,\n      form = req.form;\n\n  var joinSearch = function joinSearch() {\n    for (var _len = arguments.length, strs = new Array(_len), _key = 0; _key < _len; _key++) {\n      strs[_key] = arguments[_key];\n    }\n\n    var search = _filterInstanceProperty(strs).call(strs, function (a) {\n      return a;\n    }).join('&'); // Only truthy value\n\n\n    return search ? \"?\".concat(search) : ''; // Only add '?' if there is a str\n  };\n\n  if (form) {\n    var hasFile = _Object$keys(form).some(function (key) {\n      var value = form[key].value;\n      return isFile(value) || isArrayOfFile(value);\n    });\n\n    var contentType = req.headers['content-type'] || req.headers['Content-Type'];\n\n    if (hasFile || /multipart\\/form-data/i.test(contentType)) {\n      var formdata = buildFormData(req.form);\n      foldFormDataToRequest(formdata, req);\n    } else {\n      req.body = encodeFormOrQuery(form);\n    }\n\n    delete req.form;\n  }\n\n  if (query) {\n    var _url$split = url.split('?'),\n        _url$split2 = _slicedToArray(_url$split, 2),\n        baseUrl = _url$split2[0],\n        oriSearch = _url$split2[1];\n\n    var newStr = '';\n\n    if (oriSearch) {\n      var oriQuery = qs.parse(oriSearch);\n\n      var keysToRemove = _Object$keys(query);\n\n      keysToRemove.forEach(function (key) {\n        return delete oriQuery[key];\n      });\n      newStr = qs.stringify(oriQuery, {\n        encode: true\n      });\n    }\n\n    var finalStr = joinSearch(newStr, encodeFormOrQuery(query));\n    req.url = baseUrl + finalStr;\n    delete req.query;\n  }\n\n  return req;\n} // Wrap a http function ( there are otherways to do this, consider this deprecated )\n\nexport function makeHttp(httpFn, preFetch, postFetch) {\n  postFetch = postFetch || function (a) {\n    return a;\n  };\n\n  preFetch = preFetch || function (a) {\n    return a;\n  };\n\n  return function (req) {\n    if (typeof req === 'string') {\n      req = {\n        url: req\n      };\n    }\n\n    self.mergeInQueryOrForm(req);\n    req = preFetch(req);\n    return postFetch(httpFn(req));\n  };\n}", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n    return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n    if (Array.isArray(obj)) {\n        var keys = new Array(obj.length);\n        for (var k = 0; k < keys.length; k++) {\n            keys[k] = \"\" + k;\n        }\n        return keys;\n    }\n    if (Object.keys) {\n        return Object.keys(obj);\n    }\n    var keys = [];\n    for (var i in obj) {\n        if (hasOwnProperty(obj, i)) {\n            keys.push(i);\n        }\n    }\n    return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param  {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n    switch (typeof obj) {\n        case \"object\":\n            return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n        case \"undefined\":\n            return null; //this is how JSON.stringify behaves for array items\n        default:\n            return obj; //no need to clone primitives\n    }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n    var i = 0;\n    var len = str.length;\n    var charCode;\n    while (i < len) {\n        charCode = str.charCodeAt(i);\n        if (charCode >= 48 && charCode <= 57) {\n            i++;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n    if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n        return path;\n    return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n    return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n    var found;\n    for (var key in root) {\n        if (hasOwnProperty(root, key)) {\n            if (root[key] === obj) {\n                return escapePathComponent(key) + '/';\n            }\n            else if (typeof root[key] === 'object') {\n                found = _getPathRecursive(root[key], obj);\n                if (found != '') {\n                    return escapePathComponent(key) + '/' + found;\n                }\n            }\n        }\n    }\n    return '';\n}\nexport function getPath(root, obj) {\n    if (root === obj) {\n        return '/';\n    }\n    var path = _getPathRecursive(root, obj);\n    if (path === '') {\n        throw new Error(\"Object not found in root\");\n    }\n    return '/' + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n    if (obj === undefined) {\n        return true;\n    }\n    if (obj) {\n        if (Array.isArray(obj)) {\n            for (var i = 0, len = obj.length; i < len; i++) {\n                if (hasUndefined(obj[i])) {\n                    return true;\n                }\n            }\n        }\n        else if (typeof obj === \"object\") {\n            var objKeys = _objectKeys(obj);\n            var objKeysLength = objKeys.length;\n            for (var i = 0; i < objKeysLength; i++) {\n                if (hasUndefined(obj[objKeys[i]])) {\n                    return true;\n                }\n            }\n        }\n    }\n    return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n    var messageParts = [message];\n    for (var key in args) {\n        var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n        if (typeof value !== 'undefined') {\n            messageParts.push(key + \": \" + value);\n        }\n    }\n    return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n    __extends(PatchError, _super);\n    function PatchError(message, name, index, operation, tree) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n        _this.name = name;\n        _this.index = index;\n        _this.operation = operation;\n        _this.tree = tree;\n        Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n        _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n        return _this;\n    }\n    return PatchError;\n}(Error));\nexport { PatchError };\n", "import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n    add: function (obj, key, document) {\n        obj[key] = this.value;\n        return { newDocument: document };\n    },\n    remove: function (obj, key, document) {\n        var removed = obj[key];\n        delete obj[key];\n        return { newDocument: document, removed: removed };\n    },\n    replace: function (obj, key, document) {\n        var removed = obj[key];\n        obj[key] = this.value;\n        return { newDocument: document, removed: removed };\n    },\n    move: function (obj, key, document) {\n        /* in case move target overwrites an existing value,\n        return the removed value, this can be taxing performance-wise,\n        and is potentially unneeded */\n        var removed = getValueByPointer(document, this.path);\n        if (removed) {\n            removed = _deepClone(removed);\n        }\n        var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n        applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n        return { newDocument: document, removed: removed };\n    },\n    copy: function (obj, key, document) {\n        var valueToCopy = getValueByPointer(document, this.from);\n        // enforce copy by value so further operations don't affect source (see issue #177)\n        applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n        return { newDocument: document };\n    },\n    test: function (obj, key, document) {\n        return { newDocument: document, test: _areEquals(obj[key], this.value) };\n    },\n    _get: function (obj, key, document) {\n        this.value = obj[key];\n        return { newDocument: document };\n    }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n    add: function (arr, i, document) {\n        if (isInteger(i)) {\n            arr.splice(i, 0, this.value);\n        }\n        else { // array props\n            arr[i] = this.value;\n        }\n        // this may be needed when using '-' in an array\n        return { newDocument: document, index: i };\n    },\n    remove: function (arr, i, document) {\n        var removedList = arr.splice(i, 1);\n        return { newDocument: document, removed: removedList[0] };\n    },\n    replace: function (arr, i, document) {\n        var removed = arr[i];\n        arr[i] = this.value;\n        return { newDocument: document, removed: removed };\n    },\n    move: objOps.move,\n    copy: objOps.copy,\n    test: objOps.test,\n    _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n    if (pointer == '') {\n        return document;\n    }\n    var getOriginalDestination = { op: \"_get\", path: pointer };\n    applyOperation(document, getOriginalDestination);\n    return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n    if (validateOperation === void 0) { validateOperation = false; }\n    if (mutateDocument === void 0) { mutateDocument = true; }\n    if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n    if (index === void 0) { index = 0; }\n    if (validateOperation) {\n        if (typeof validateOperation == 'function') {\n            validateOperation(operation, 0, document, operation.path);\n        }\n        else {\n            validator(operation, 0);\n        }\n    }\n    /* ROOT OPERATIONS */\n    if (operation.path === \"\") {\n        var returnValue = { newDocument: document };\n        if (operation.op === 'add') {\n            returnValue.newDocument = operation.value;\n            return returnValue;\n        }\n        else if (operation.op === 'replace') {\n            returnValue.newDocument = operation.value;\n            returnValue.removed = document; //document we removed\n            return returnValue;\n        }\n        else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n            returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n            if (operation.op === 'move') { // report removed item\n                returnValue.removed = document;\n            }\n            return returnValue;\n        }\n        else if (operation.op === 'test') {\n            returnValue.test = _areEquals(document, operation.value);\n            if (returnValue.test === false) {\n                throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n            }\n            returnValue.newDocument = document;\n            return returnValue;\n        }\n        else if (operation.op === 'remove') { // a remove on root\n            returnValue.removed = document;\n            returnValue.newDocument = null;\n            return returnValue;\n        }\n        else if (operation.op === '_get') {\n            operation.value = document;\n            return returnValue;\n        }\n        else { /* bad operation */\n            if (validateOperation) {\n                throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n            }\n            else {\n                return returnValue;\n            }\n        }\n    } /* END ROOT OPERATIONS */\n    else {\n        if (!mutateDocument) {\n            document = _deepClone(document);\n        }\n        var path = operation.path || \"\";\n        var keys = path.split('/');\n        var obj = document;\n        var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n        var len = keys.length;\n        var existingPathFragment = undefined;\n        var key = void 0;\n        var validateFunction = void 0;\n        if (typeof validateOperation == 'function') {\n            validateFunction = validateOperation;\n        }\n        else {\n            validateFunction = validator;\n        }\n        while (true) {\n            key = keys[t];\n            if (key && key.indexOf('~') != -1) {\n                key = unescapePathComponent(key);\n            }\n            if (banPrototypeModifications && key == '__proto__') {\n                throw new TypeError('JSON-Patch: modifying `__proto__` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n            }\n            if (validateOperation) {\n                if (existingPathFragment === undefined) {\n                    if (obj[key] === undefined) {\n                        existingPathFragment = keys.slice(0, t).join('/');\n                    }\n                    else if (t == len - 1) {\n                        existingPathFragment = operation.path;\n                    }\n                    if (existingPathFragment !== undefined) {\n                        validateFunction(operation, 0, document, existingPathFragment);\n                    }\n                }\n            }\n            t++;\n            if (Array.isArray(obj)) {\n                if (key === '-') {\n                    key = obj.length;\n                }\n                else {\n                    if (validateOperation && !isInteger(key)) {\n                        throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n                    } // only parse key when it's an integer for `arr.prop` to work\n                    else if (isInteger(key)) {\n                        key = ~~key;\n                    }\n                }\n                if (t >= len) {\n                    if (validateOperation && operation.op === \"add\" && key > obj.length) {\n                        throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n                    }\n                    var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n                    if (returnValue.test === false) {\n                        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n                    }\n                    return returnValue;\n                }\n            }\n            else {\n                if (t >= len) {\n                    var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n                    if (returnValue.test === false) {\n                        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n                    }\n                    return returnValue;\n                }\n            }\n            obj = obj[key];\n            // If we have more keys in the path, but the next value isn't a non-null object,\n            // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n            if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n                throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n            }\n        }\n    }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n    if (mutateDocument === void 0) { mutateDocument = true; }\n    if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n    if (validateOperation) {\n        if (!Array.isArray(patch)) {\n            throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n        }\n    }\n    if (!mutateDocument) {\n        document = _deepClone(document);\n    }\n    var results = new Array(patch.length);\n    for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n        // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n        results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n        document = results[i].newDocument; // in case root was replaced\n    }\n    results.newDocument = document;\n    return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n    var operationResult = applyOperation(document, operation);\n    if (operationResult.test === false) { // failed test\n        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n    }\n    return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n    if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n        throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n    }\n    else if (!objOps[operation.op]) {\n        throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n    }\n    else if (typeof operation.path !== 'string') {\n        throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n    }\n    else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n        // paths that aren't empty string should start with \"/\"\n        throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n    }\n    else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n        throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n    }\n    else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n        throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n    }\n    else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n        throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n    }\n    else if (document) {\n        if (operation.op == \"add\") {\n            var pathLen = operation.path.split(\"/\").length;\n            var existingPathLen = existingPathFragment.split(\"/\").length;\n            if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n                throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n            }\n        }\n        else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n            if (operation.path !== existingPathFragment) {\n                throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n            }\n        }\n        else if (operation.op === 'move' || operation.op === 'copy') {\n            var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n            var error = validate([existingValue], document);\n            if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n                throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n            }\n        }\n    }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n    try {\n        if (!Array.isArray(sequence)) {\n            throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n        }\n        if (document) {\n            //clone document and sequence so that we can safely try applying operations\n            applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n        }\n        else {\n            externalValidator = externalValidator || validator;\n            for (var i = 0; i < sequence.length; i++) {\n                externalValidator(sequence[i], i, document, undefined);\n            }\n        }\n    }\n    catch (e) {\n        if (e instanceof JsonPatchError) {\n            return e;\n        }\n        else {\n            throw e;\n        }\n    }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\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// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\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 THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n    if (a === b)\n        return true;\n    if (a && b && typeof a == 'object' && typeof b == 'object') {\n        var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n        if (arrA && arrB) {\n            length = a.length;\n            if (length != b.length)\n                return false;\n            for (i = length; i-- !== 0;)\n                if (!_areEquals(a[i], b[i]))\n                    return false;\n            return true;\n        }\n        if (arrA != arrB)\n            return false;\n        var keys = Object.keys(a);\n        length = keys.length;\n        if (length !== Object.keys(b).length)\n            return false;\n        for (i = length; i-- !== 0;)\n            if (!b.hasOwnProperty(keys[i]))\n                return false;\n        for (i = length; i-- !== 0;) {\n            key = keys[i];\n            if (!_areEquals(a[key], b[key]))\n                return false;\n        }\n        return true;\n    }\n    return a !== a && b !== b;\n}\n;\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n    function Mirror(obj) {\n        this.observers = new Map();\n        this.obj = obj;\n    }\n    return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n    function ObserverInfo(callback, observer) {\n        this.callback = callback;\n        this.observer = observer;\n    }\n    return ObserverInfo;\n}());\nfunction getMirror(obj) {\n    return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n    return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n    mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n    observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n    var patches = [];\n    var observer;\n    var mirror = getMirror(obj);\n    if (!mirror) {\n        mirror = new Mirror(obj);\n        beforeDict.set(obj, mirror);\n    }\n    else {\n        var observerInfo = getObserverFromMirror(mirror, callback);\n        observer = observerInfo && observerInfo.observer;\n    }\n    if (observer) {\n        return observer;\n    }\n    observer = {};\n    mirror.value = _deepClone(obj);\n    if (callback) {\n        observer.callback = callback;\n        observer.next = null;\n        var dirtyCheck = function () {\n            generate(observer);\n        };\n        var fastCheck = function () {\n            clearTimeout(observer.next);\n            observer.next = setTimeout(dirtyCheck);\n        };\n        if (typeof window !== 'undefined') { //not Node\n            window.addEventListener('mouseup', fastCheck);\n            window.addEventListener('keyup', fastCheck);\n            window.addEventListener('mousedown', fastCheck);\n            window.addEventListener('keydown', fastCheck);\n            window.addEventListener('change', fastCheck);\n        }\n    }\n    observer.patches = patches;\n    observer.object = obj;\n    observer.unobserve = function () {\n        generate(observer);\n        clearTimeout(observer.next);\n        removeObserverFromMirror(mirror, observer);\n        if (typeof window !== 'undefined') {\n            window.removeEventListener('mouseup', fastCheck);\n            window.removeEventListener('keyup', fastCheck);\n            window.removeEventListener('mousedown', fastCheck);\n            window.removeEventListener('keydown', fastCheck);\n            window.removeEventListener('change', fastCheck);\n        }\n    };\n    mirror.observers.set(callback, new ObserverInfo(callback, observer));\n    return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n    if (invertible === void 0) { invertible = false; }\n    var mirror = beforeDict.get(observer.object);\n    _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n    if (observer.patches.length) {\n        applyPatch(mirror.value, observer.patches);\n    }\n    var temp = observer.patches;\n    if (temp.length > 0) {\n        observer.patches = [];\n        if (observer.callback) {\n            observer.callback(temp);\n        }\n    }\n    return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n    if (obj === mirror) {\n        return;\n    }\n    if (typeof obj.toJSON === \"function\") {\n        obj = obj.toJSON();\n    }\n    var newKeys = _objectKeys(obj);\n    var oldKeys = _objectKeys(mirror);\n    var changed = false;\n    var deleted = false;\n    //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n    for (var t = oldKeys.length - 1; t >= 0; t--) {\n        var key = oldKeys[t];\n        var oldVal = mirror[key];\n        if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n            var newVal = obj[key];\n            if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n                _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n            }\n            else {\n                if (oldVal !== newVal) {\n                    changed = true;\n                    if (invertible) {\n                        patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n                    }\n                    patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n                }\n            }\n        }\n        else if (Array.isArray(mirror) === Array.isArray(obj)) {\n            if (invertible) {\n                patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n            }\n            patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n            deleted = true; // property has been deleted\n        }\n        else {\n            if (invertible) {\n                patches.push({ op: \"test\", path: path, value: mirror });\n            }\n            patches.push({ op: \"replace\", path: path, value: obj });\n            changed = true;\n        }\n    }\n    if (!deleted && newKeys.length == oldKeys.length) {\n        return;\n    }\n    for (var t = 0; t < newKeys.length; t++) {\n        var key = newKeys[t];\n        if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n            patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n        }\n    }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n    if (invertible === void 0) { invertible = false; }\n    var patches = [];\n    _generate(tree1, tree2, patches, '', invertible);\n    return patches;\n}\n", "export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n    PatchError as JsonPatchError,\n    _deepClone as deepClone,\n    escapePathComponent,\n    unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n    PatchError as JsonPatchError,\n    _deepClone as deepClone,\n    escapePathComponent,\n    unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n    JsonPatchError,\n    deepClone,\n    escapePathComponent,\n    unescapePathComponent\n});", "import _typeof from \"@babel/runtime-corejs3/helpers/typeof\";\nimport _toConsumableArray from \"@babel/runtime-corejs3/helpers/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _Object$assign from \"@babel/runtime-corejs3/core-js-stable/object/assign\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _mapInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/map\";\nimport _filterInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/filter\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport * as jsonPatch from 'fast-json-patch';\nimport deepmerge from 'deepmerge';\nexport default {\n  add: add,\n  replace: replace,\n  remove: remove,\n  merge: merge,\n  mergeDeep: mergeDeep,\n  context: context,\n  getIn: getIn,\n  applyPatch: applyPatch,\n  parentPathMatch: parentPathMatch,\n  flatten: flatten,\n  fullyNormalizeArray: fullyNormalizeArray,\n  normalizeArray: normalizeArray,\n  isPromise: isPromise,\n  forEachNew: forEachNew,\n  forEachNewPrimitive: forEachNewPrimitive,\n  isJsonPatch: isJsonPatch,\n  isContextPatch: isContextPatch,\n  isPatch: isPatch,\n  isMutation: isMutation,\n  isAdditiveMutation: isAdditiveMutation,\n  isGenerator: isGenerator,\n  isFunction: isFunction,\n  isObject: isObject,\n  isError: isError\n};\n\nfunction applyPatch(obj, patch, opts) {\n  opts = opts || {};\n  patch = _objectSpread(_objectSpread({}, patch), {}, {\n    path: patch.path && normalizeJSONPath(patch.path)\n  });\n\n  if (patch.op === 'merge') {\n    var newValue = getInByJsonPath(obj, patch.path);\n\n    _Object$assign(newValue, patch.value);\n\n    jsonPatch.applyPatch(obj, [replace(patch.path, newValue)]);\n  } else if (patch.op === 'mergeDeep') {\n    var currentValue = getInByJsonPath(obj, patch.path);\n\n    var _newValue = deepmerge(currentValue, patch.value);\n\n    obj = jsonPatch.applyPatch(obj, [replace(patch.path, _newValue)]).newDocument;\n  } else if (patch.op === 'add' && patch.path === '' && isObject(patch.value)) {\n    // { op: 'add', path: '', value: { a: 1, b: 2 }}\n    // has no effect: json patch refuses to do anything.\n    // so let's break that patch down into a set of patches,\n    // one for each key in the intended root value.\n    var patches = _Object$keys(patch.value).reduce(function (arr, key) {\n      arr.push({\n        op: 'add',\n        path: \"/\".concat(normalizeJSONPath(key)),\n        value: patch.value[key]\n      });\n      return arr;\n    }, []);\n\n    jsonPatch.applyPatch(obj, patches);\n  } else if (patch.op === 'replace' && patch.path === '') {\n    var _patch = patch,\n        value = _patch.value;\n\n    if (opts.allowMetaPatches && patch.meta && isAdditiveMutation(patch) && (Array.isArray(patch.value) || isObject(patch.value))) {\n      value = _objectSpread(_objectSpread({}, value), patch.meta);\n    }\n\n    obj = value;\n  } else {\n    jsonPatch.applyPatch(obj, [patch]); // Attach metadata to the resulting value.\n\n    if (opts.allowMetaPatches && patch.meta && isAdditiveMutation(patch) && (Array.isArray(patch.value) || isObject(patch.value))) {\n      var _currentValue = getInByJsonPath(obj, patch.path);\n\n      var _newValue2 = _objectSpread(_objectSpread({}, _currentValue), patch.meta);\n\n      jsonPatch.applyPatch(obj, [replace(patch.path, _newValue2)]);\n    }\n  }\n\n  return obj;\n}\n\nfunction normalizeJSONPath(path) {\n  if (Array.isArray(path)) {\n    if (path.length < 1) {\n      return '';\n    }\n\n    return \"/\".concat(_mapInstanceProperty(path).call(path, function (item) {\n      return (// eslint-disable-line prefer-template\n        (item + '').replace(/~/g, '~0').replace(/\\//g, '~1')\n      );\n    } // eslint-disable-line prefer-template\n    ).join('/'));\n  }\n\n  return path;\n} // =========================\n// JSON-Patch Wrappers\n// =========================\n\n\nfunction add(path, value) {\n  return {\n    op: 'add',\n    path: path,\n    value: value\n  };\n} // function _get(path) {\n//   return { op: '_get', path };\n// }\n\n\nfunction replace(path, value, meta) {\n  return {\n    op: 'replace',\n    path: path,\n    value: value,\n    meta: meta\n  };\n}\n\nfunction remove(path) {\n  return {\n    op: 'remove',\n    path: path\n  };\n} // Custom wrappers\n\n\nfunction merge(path, value) {\n  return {\n    type: 'mutation',\n    op: 'merge',\n    path: path,\n    value: value\n  };\n} // Custom wrappers\n\n\nfunction mergeDeep(path, value) {\n  return {\n    type: 'mutation',\n    op: 'mergeDeep',\n    path: path,\n    value: value\n  };\n}\n\nfunction context(path, value) {\n  return {\n    type: 'context',\n    path: path,\n    value: value\n  };\n} // =========================\n// Iterators\n// =========================\n\n\nfunction forEachNew(mutations, fn) {\n  try {\n    return forEachNewPatch(mutations, forEach, fn);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction forEachNewPrimitive(mutations, fn) {\n  try {\n    return forEachNewPatch(mutations, forEachPrimitive, fn);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction forEachNewPatch(mutations, fn, callback) {\n  var _context;\n\n  var res = _mapInstanceProperty(_context = _filterInstanceProperty(mutations).call(mutations, isAdditiveMutation)).call(_context, function (mutation) {\n    return fn(mutation.value, callback, mutation.path);\n  }) || [];\n  var flat = flatten(res);\n  var clean = cleanArray(flat);\n  return clean;\n}\n\nfunction forEachPrimitive(obj, fn, basePath) {\n  basePath = basePath || [];\n\n  if (Array.isArray(obj)) {\n    return _mapInstanceProperty(obj).call(obj, function (val, key) {\n      return forEachPrimitive(val, fn, _concatInstanceProperty(basePath).call(basePath, key));\n    });\n  }\n\n  if (isObject(obj)) {\n    var _context2;\n\n    return _mapInstanceProperty(_context2 = _Object$keys(obj)).call(_context2, function (key) {\n      return forEachPrimitive(obj[key], fn, _concatInstanceProperty(basePath).call(basePath, key));\n    });\n  }\n\n  return fn(obj, basePath[basePath.length - 1], basePath);\n}\n\nfunction forEach(obj, fn, basePath) {\n  basePath = basePath || [];\n  var results = [];\n\n  if (basePath.length > 0) {\n    var newResults = fn(obj, basePath[basePath.length - 1], basePath);\n\n    if (newResults) {\n      results = _concatInstanceProperty(results).call(results, newResults);\n    }\n  }\n\n  if (Array.isArray(obj)) {\n    var arrayResults = _mapInstanceProperty(obj).call(obj, function (val, key) {\n      return forEach(val, fn, _concatInstanceProperty(basePath).call(basePath, key));\n    });\n\n    if (arrayResults) {\n      results = _concatInstanceProperty(results).call(results, arrayResults);\n    }\n  } else if (isObject(obj)) {\n    var _context3;\n\n    var moreResults = _mapInstanceProperty(_context3 = _Object$keys(obj)).call(_context3, function (key) {\n      return forEach(obj[key], fn, _concatInstanceProperty(basePath).call(basePath, key));\n    });\n\n    if (moreResults) {\n      results = _concatInstanceProperty(results).call(results, moreResults);\n    }\n  }\n\n  results = flatten(results);\n  return results;\n} // =========================\n// Paths\n// =========================\n\n\nfunction parentPathMatch(path, arr) {\n  if (!Array.isArray(arr)) {\n    return false;\n  }\n\n  for (var i = 0, len = arr.length; i < len; i += 1) {\n    if (arr[i] !== path[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction getIn(obj, path) {\n  return path.reduce(function (val, token) {\n    if (typeof token !== 'undefined' && val) {\n      return val[token];\n    }\n\n    return val;\n  }, obj);\n} // =========================\n// Array\n// =========================\n\n\nfunction fullyNormalizeArray(arr) {\n  return cleanArray(flatten(normalizeArray(arr)));\n}\n\nfunction normalizeArray(arr) {\n  return Array.isArray(arr) ? arr : [arr];\n}\n\nfunction flatten(arr) {\n  var _ref;\n\n  return _concatInstanceProperty(_ref = []).apply(_ref, _toConsumableArray(_mapInstanceProperty(arr).call(arr, function (val) {\n    return Array.isArray(val) ? flatten(val) : val;\n  })));\n}\n\nfunction cleanArray(arr) {\n  return _filterInstanceProperty(arr).call(arr, function (elm) {\n    return typeof elm !== 'undefined';\n  });\n} // =========================\n// Is-Thing.\n// =========================\n\n\nfunction isObject(val) {\n  return val && _typeof(val) === 'object';\n}\n\nfunction isPromise(val) {\n  return isObject(val) && isFunction(val.then);\n}\n\nfunction isFunction(val) {\n  return val && typeof val === 'function';\n}\n\nfunction isError(patch) {\n  return patch instanceof Error;\n}\n\nfunction isJsonPatch(patch) {\n  if (isPatch(patch)) {\n    var op = patch.op;\n    return op === 'add' || op === 'remove' || op === 'replace';\n  }\n\n  return false;\n}\n\nfunction isGenerator(thing) {\n  return Object.prototype.toString.call(thing) === '[object GeneratorFunction]';\n}\n\nfunction isMutation(patch) {\n  return isJsonPatch(patch) || isPatch(patch) && patch.type === 'mutation';\n}\n\nfunction isAdditiveMutation(patch) {\n  return isMutation(patch) && (patch.op === 'add' || patch.op === 'replace' || patch.op === 'merge' || patch.op === 'mergeDeep');\n}\n\nfunction isContextPatch(patch) {\n  return isPatch(patch) && patch.type === 'context';\n}\n\nfunction isPatch(patch) {\n  return patch && _typeof(patch) === 'object';\n}\n\nfunction getInByJsonPath(obj, jsonPath) {\n  try {\n    return jsonPatch.getValueByPointer(obj, jsonPath);\n  } catch (e) {\n    console.error(e); // eslint-disable-line no-console\n\n    return {};\n  }\n}", "export default function createErrorType(name, init) {\n  function E() {\n    if (!Error.captureStackTrace) {\n      this.stack = new Error().stack;\n    } else {\n      Error.captureStackTrace(this, this.constructor);\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    this.message = args[0];\n\n    if (init) {\n      init.apply(this, args);\n    }\n  }\n\n  E.prototype = new Error();\n  E.prototype.name = name;\n  E.prototype.constructor = E;\n  return E;\n}", "import _slicedToArray from \"@babel/runtime-corejs3/helpers/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime-corejs3/helpers/toConsumableArray\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport _includesInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/includes\";\nimport traverse from 'traverse';\nimport URL from 'url'; // This will match if the direct parent's key exactly matches an item.\n\nvar freelyNamedKeyParents = ['properties']; // This will match if the grandparent's key exactly matches an item.\n// NOTE that this is for finding non-free paths!\n\nvar nonFreelyNamedKeyGrandparents = ['properties']; // This will match if the joined parent path exactly matches an item.\n//\n// This is mostly useful for filtering out root-level reusable item names,\n// for example `[\"definitions\", \"$ref\"]`\n\nvar freelyNamedPaths = [// Swagger 2.0\n'definitions', 'parameters', 'responses', 'securityDefinitions', // OpenAPI 3.0\n'components/schemas', 'components/responses', 'components/parameters', 'components/securitySchemes']; // This will match if any of these items are substrings of the joined\n// parent path.\n//\n// Warning! These are powerful. Beware of edge cases.\n\nvar freelyNamedAncestors = ['schema/example', 'items/example'];\nexport function isFreelyNamed(parentPath) {\n  var parentKey = parentPath[parentPath.length - 1];\n  var grandparentKey = parentPath[parentPath.length - 2];\n  var parentStr = parentPath.join('/');\n  return (// eslint-disable-next-line max-len\n    freelyNamedKeyParents.indexOf(parentKey) > -1 && nonFreelyNamedKeyGrandparents.indexOf(grandparentKey) === -1 || freelyNamedPaths.indexOf(parentStr) > -1 || freelyNamedAncestors.some(function (el) {\n      return parentStr.indexOf(el) > -1;\n    })\n  );\n}\nexport function generateAbsoluteRefPatches(obj, basePath) {\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      specmap = _ref.specmap,\n      _ref$getBaseUrlForNod = _ref.getBaseUrlForNodePath,\n      getBaseUrlForNodePath = _ref$getBaseUrlForNod === void 0 ? function (path) {\n    var _context;\n\n    return specmap.getContext(_concatInstanceProperty(_context = []).call(_context, _toConsumableArray(basePath), _toConsumableArray(path))).baseDoc;\n  } : _ref$getBaseUrlForNod,\n      _ref$targetKeys = _ref.targetKeys,\n      targetKeys = _ref$targetKeys === void 0 ? ['$ref', '$$ref'] : _ref$targetKeys;\n\n  var patches = [];\n  traverse(obj).forEach(function callback() {\n    if (_includesInstanceProperty(targetKeys).call(targetKeys, this.key) && typeof this.node === 'string') {\n      var nodePath = this.path; // this node's path, relative to `obj`\n\n      var fullPath = _concatInstanceProperty(basePath).call(basePath, this.path);\n\n      var absolutifiedRefValue = absolutifyPointer(this.node, getBaseUrlForNodePath(nodePath));\n      patches.push(specmap.replace(fullPath, absolutifiedRefValue));\n    }\n  });\n  return patches;\n}\nexport function absolutifyPointer(pointer, baseUrl) {\n  var _context2;\n\n  var _pointer$split = pointer.split('#'),\n      _pointer$split2 = _slicedToArray(_pointer$split, 2),\n      urlPart = _pointer$split2[0],\n      fragmentPart = _pointer$split2[1];\n\n  var newRefUrlPart = URL.resolve(urlPart || '', baseUrl || '');\n  return fragmentPart ? _concatInstanceProperty(_context2 = \"\".concat(newRefUrlPart, \"#\")).call(_context2, fragmentPart) : newRefUrlPart;\n}", "// eslint-disable-next-line import/prefer-default-export\nexport var ACCEPT_HEADER_VALUE_FOR_DOCUMENTS = 'application/json, application/yaml';", "import _typeof from \"@babel/runtime-corejs3/helpers/typeof\";\nimport _Object$assign from \"@babel/runtime-corejs3/core-js-stable/object/assign\";\nimport _WeakMap from \"@babel/runtime-corejs3/core-js-stable/weak-map\";\nimport _sliceInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/slice\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport _Promise from \"@babel/runtime-corejs3/core-js-stable/promise\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _mapInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/map\";\nimport _URLSearchParams from \"@babel/runtime-corejs3/core-js-stable/url-search-params\";\nimport 'cross-fetch/polyfill';\n/* global fetch */\n\nimport jsYaml from 'js-yaml';\nimport url from 'url';\nimport lib from './index.js';\nimport createError from './create-error.js';\nimport { isFreelyNamed, absolutifyPointer } from '../helpers.js';\nimport { ACCEPT_HEADER_VALUE_FOR_DOCUMENTS } from '../../constants.js';\nvar ABSOLUTE_URL_REGEXP = /^([a-z]+:\\/\\/|\\/\\/)/i;\nvar JSONRefError = createError('JSONRefError', function cb(message, extra, oriError) {\n  this.originalError = oriError;\n\n  _Object$assign(this, extra || {});\n});\nvar docCache = {};\nvar specmapRefs = new _WeakMap();\nvar skipResolutionTestFns = [// OpenAPI 2.0 response examples\nfunction (path) {\n  return (// [\"paths\", *, *, \"responses\", *, \"examples\"]\n    path[0] === 'paths' && path[3] === 'responses' && path[5] === 'examples'\n  );\n}, // OpenAPI 3.0 Response Media Type Examples\nfunction (path) {\n  return (// [\"paths\", *, *, \"responses\", *, \"content\", *, \"example\"]\n    path[0] === 'paths' && path[3] === 'responses' && path[5] === 'content' && path[7] === 'example'\n  );\n}, function (path) {\n  return (// [\"paths\", *, *, \"responses\", *, \"content\", *, \"examples\", *, \"value\"]\n    path[0] === 'paths' && path[3] === 'responses' && path[5] === 'content' && path[7] === 'examples' && path[9] === 'value'\n  );\n}, // OpenAPI 3.0 Request Body Media Type Examples\nfunction (path) {\n  return (// [\"paths\", *, *, \"requestBody\", \"content\", *, \"example\"]\n    path[0] === 'paths' && path[3] === 'requestBody' && path[4] === 'content' && path[6] === 'example'\n  );\n}, function (path) {\n  return (// [\"paths\", *, *, \"requestBody\", \"content\", *, \"examples\", *, \"value\"]\n    path[0] === 'paths' && path[3] === 'requestBody' && path[4] === 'content' && path[6] === 'examples' && path[8] === 'value'\n  );\n}, // OAS 3.0 Parameter Examples\nfunction (path) {\n  return (// [\"paths\", *, \"parameters\", *, \"example\"]\n    path[0] === 'paths' && path[2] === 'parameters' && path[4] === 'example'\n  );\n}, function (path) {\n  return (// [\"paths\", *, *, \"parameters\", *, \"example\"]\n    path[0] === 'paths' && path[3] === 'parameters' && path[5] === 'example'\n  );\n}, function (path) {\n  return (// [\"paths\", *, \"parameters\", *, \"examples\", *, \"value\"]\n    path[0] === 'paths' && path[2] === 'parameters' && path[4] === 'examples' && path[6] === 'value'\n  );\n}, function (path) {\n  return (// [\"paths\", *, *, \"parameters\", *, \"examples\", *, \"value\"]\n    path[0] === 'paths' && path[3] === 'parameters' && path[5] === 'examples' && path[7] === 'value'\n  );\n}, function (path) {\n  return (// [\"paths\", *, \"parameters\", *, \"content\", *, \"example\"]\n    path[0] === 'paths' && path[2] === 'parameters' && path[4] === 'content' && path[6] === 'example'\n  );\n}, function (path) {\n  return (// [\"paths\", *, \"parameters\", *, \"content\", *, \"examples\", *, \"value\"]\n    path[0] === 'paths' && path[2] === 'parameters' && path[4] === 'content' && path[6] === 'examples' && path[8] === 'value'\n  );\n}, function (path) {\n  return (// [\"paths\", *, *, \"parameters\", *, \"content\", *, \"example\"]\n    path[0] === 'paths' && path[3] === 'parameters' && path[4] === 'content' && path[7] === 'example'\n  );\n}, function (path) {\n  return (// [\"paths\", *, *, \"parameters\", *, \"content\", *, \"examples\", *, \"value\"]\n    path[0] === 'paths' && path[3] === 'parameters' && path[5] === 'content' && path[7] === 'examples' && path[9] === 'value'\n  );\n}];\n\nvar shouldSkipResolution = function shouldSkipResolution(path) {\n  return skipResolutionTestFns.some(function (fn) {\n    return fn(path);\n  });\n}; // =========================\n// Core\n// =========================\n\n/**\n * This plugin resolves the JSON pointers.\n * A major part of this plugin deals with cyclic references via 2 mechanisms.\n * 1. If a pointer was already resolved before in this path, halt.\n * 2. If the patch value points to one of the ancestors in this path, halt.\n *\n * Note that either one of these mechanism is sufficient, both must be in place.\n * For examples:\n *\n * Given the following spec, #1 alone is insufficient because after the 2nd\n * application, there will be a cyclic object reference.\n *   a.b.c: $ref-d\n *   d.e.f: $ref-a (per #1, safe to return patch as no immediate cycle)\n *\n * Given the following spec, #2 alone is insufficient because although there will\n * never be any cyclic object reference, the plugin will keep producing patches.\n *   a: $ref-b\n *   b: $ref-a\n */\n\n\nvar plugin = {\n  key: '$ref',\n  plugin: function plugin(ref, key, fullPath, specmap) {\n    var specmapInstance = specmap.getInstance();\n\n    var parent = _sliceInstanceProperty(fullPath).call(fullPath, 0, -1);\n\n    if (isFreelyNamed(parent) || shouldSkipResolution(parent)) {\n      return undefined;\n    }\n\n    var _specmap$getContext = specmap.getContext(fullPath),\n        baseDoc = _specmap$getContext.baseDoc;\n\n    if (typeof ref !== 'string') {\n      return new JSONRefError('$ref: must be a string (JSON-Ref)', {\n        $ref: ref,\n        baseDoc: baseDoc,\n        fullPath: fullPath\n      });\n    }\n\n    var splitString = split(ref);\n    var refPath = splitString[0];\n    var pointer = splitString[1] || '';\n    var basePath;\n\n    try {\n      basePath = baseDoc || refPath ? absoluteify(refPath, baseDoc) : null;\n    } catch (e) {\n      return wrapError(e, {\n        pointer: pointer,\n        $ref: ref,\n        basePath: basePath,\n        fullPath: fullPath\n      });\n    }\n\n    var promOrVal;\n    var tokens;\n\n    if (pointerAlreadyInPath(pointer, basePath, parent, specmap)) {\n      // Cyclic reference!\n      // if `useCircularStructures` is not set, just leave the reference\n      // unresolved, but absolutify it so that we don't leave an invalid $ref\n      // path in the content\n      if (!specmapInstance.useCircularStructures) {\n        var _absolutifiedRef = absolutifyPointer(ref, basePath);\n\n        if (ref === _absolutifiedRef) {\n          // avoids endless looping\n          // without this, the ref plugin never stops seeing this $ref\n          return null;\n        }\n\n        return lib.replace(fullPath, _absolutifiedRef);\n      }\n    }\n\n    if (basePath == null) {\n      tokens = jsonPointerToArray(pointer);\n      promOrVal = specmap.get(tokens);\n\n      if (typeof promOrVal === 'undefined') {\n        promOrVal = new JSONRefError(\"Could not resolve reference: \".concat(ref), {\n          pointer: pointer,\n          $ref: ref,\n          baseDoc: baseDoc,\n          fullPath: fullPath\n        });\n      }\n    } else {\n      promOrVal = extractFromDoc(basePath, pointer); // eslint-disable-next-line no-underscore-dangle\n\n      if (promOrVal.__value != null) {\n        promOrVal = promOrVal.__value; // eslint-disable-line no-underscore-dangle\n      } else {\n        promOrVal = promOrVal.catch(function (e) {\n          throw wrapError(e, {\n            pointer: pointer,\n            $ref: ref,\n            baseDoc: baseDoc,\n            fullPath: fullPath\n          });\n        });\n      }\n    }\n\n    if (promOrVal instanceof Error) {\n      return [lib.remove(fullPath), promOrVal];\n    }\n\n    var absolutifiedRef = absolutifyPointer(ref, basePath);\n    var patch = lib.replace(parent, promOrVal, {\n      $$ref: absolutifiedRef\n    });\n\n    if (basePath && basePath !== baseDoc) {\n      return [patch, lib.context(parent, {\n        baseDoc: basePath\n      })];\n    }\n\n    try {\n      // prevents circular values from being constructed, unless we specifically\n      // want that to happen\n      if (!patchValueAlreadyInPath(specmap.state, patch) || specmapInstance.useCircularStructures) {\n        return patch;\n      }\n    } catch (e) {\n      // if we're catching here, path traversal failed, so we should\n      // ditch without sending any patches back up.\n      //\n      // this is a narrow fix for the larger problem of patches being queued\n      // and then having the state they were generated against be modified\n      // before they are applied.\n      //\n      // TODO: re-engineer specmap patch/state management to avoid this\n      return null;\n    }\n\n    return undefined;\n  }\n};\n\nvar mod = _Object$assign(plugin, {\n  docCache: docCache,\n  absoluteify: absoluteify,\n  clearCache: clearCache,\n  JSONRefError: JSONRefError,\n  wrapError: wrapError,\n  getDoc: getDoc,\n  split: split,\n  extractFromDoc: extractFromDoc,\n  fetchJSON: fetchJSON,\n  extract: extract,\n  jsonPointerToArray: jsonPointerToArray,\n  unescapeJsonPointerToken: unescapeJsonPointerToken\n});\n\nexport default mod; // =========================\n// Utilities\n// =========================\n\n/**\n * Resolves a path and its base to an abolute URL.\n * @api public\n */\n\nfunction absoluteify(path, basePath) {\n  if (!ABSOLUTE_URL_REGEXP.test(path)) {\n    if (!basePath) {\n      var _context;\n\n      throw new JSONRefError(_concatInstanceProperty(_context = \"Tried to resolve a relative URL, without having a basePath. path: '\".concat(path, \"' basePath: '\")).call(_context, basePath, \"'\"));\n    }\n\n    return url.resolve(basePath, path);\n  }\n\n  return path;\n}\n/**\n * Wraps an error as JSONRefError.\n * @param  {Error} e      the error.\n * @param  {Object} extra (optional) optional data.\n * @return {Error}        an instance of JSONRefError.\n * @api public\n */\n\n\nfunction wrapError(e, extra) {\n  var message;\n\n  if (e && e.response && e.response.body) {\n    var _context2;\n\n    message = _concatInstanceProperty(_context2 = \"\".concat(e.response.body.code, \" \")).call(_context2, e.response.body.message);\n  } else {\n    message = e.message;\n  }\n\n  return new JSONRefError(\"Could not resolve reference: \".concat(message), extra, e);\n}\n/**\n * Splits a pointer by the hash delimiter.\n * @api public\n */\n\n\nfunction split(ref) {\n  return (ref + '').split('#'); // eslint-disable-line prefer-template\n}\n/**\n * Extracts a pointer from its document.\n * @param  {String} docPath the absolute document URL.\n * @param  {String} pointer the pointer whose value is to be extracted.\n * @return {Promise}        a promise of the pointer value.\n * @api public\n */\n\n\nfunction extractFromDoc(docPath, pointer) {\n  var doc = docCache[docPath];\n\n  if (doc && !lib.isPromise(doc)) {\n    // If doc is already available, return __value together with the promise.\n    // __value is for special handling in cycle check:\n    // pointerAlreadyInPath() won't work if patch.value is a promise,\n    // thus when that promise is finally resolved, cycle might happen (because\n    // `spec` and `docCache[basePath]` refer to the exact same object).\n    // See test \"should resolve a cyclic spec when baseDoc is specified\".\n    try {\n      var v = extract(pointer, doc);\n      return _Object$assign(_Promise.resolve(v), {\n        __value: v\n      });\n    } catch (e) {\n      return _Promise.reject(e);\n    }\n  }\n\n  return getDoc(docPath).then(function (_doc) {\n    return extract(pointer, _doc);\n  });\n}\n/**\n * Clears all document caches.\n * @param  {String} item (optional) the name of the cache item to be cleared.\n * @api public\n */\n\n\nfunction clearCache(item) {\n  if (typeof item !== 'undefined') {\n    delete docCache[item];\n  } else {\n    _Object$keys(docCache).forEach(function (key) {\n      delete docCache[key];\n    });\n  }\n}\n/**\n * Fetches and caches a document.\n * @param  {String} docPath the absolute URL of the document.\n * @return {Promise}        a promise of the document content.\n * @api public\n */\n\n\nfunction getDoc(docPath) {\n  var val = docCache[docPath];\n\n  if (val) {\n    return lib.isPromise(val) ? val : _Promise.resolve(val);\n  } // NOTE: we need to use `mod.fetchJSON` in order to be able to overwrite it.\n  // Any tips on how to make this cleaner, please ping!\n\n\n  docCache[docPath] = mod.fetchJSON(docPath).then(function (doc) {\n    docCache[docPath] = doc;\n    return doc;\n  });\n  return docCache[docPath];\n}\n/**\n * Fetches a document.\n * @param  {String} docPath the absolute URL of the document.\n * @return {Promise}        a promise of the document content.\n * @api public\n */\n\n\nfunction fetchJSON(docPath) {\n  return fetch(docPath, {\n    headers: {\n      Accept: ACCEPT_HEADER_VALUE_FOR_DOCUMENTS\n    },\n    loadSpec: true\n  }).then(function (res) {\n    return res.text();\n  }).then(function (text) {\n    return jsYaml.load(text);\n  });\n}\n/**\n * Extracts a pointer from an object.\n * @param  {String[]} pointer the JSON pointer.\n * @param  {Object} obj       an object whose value is to be extracted.\n * @return {Object}           the value to be extracted.\n * @api public\n */\n\n\nfunction extract(pointer, obj) {\n  var tokens = jsonPointerToArray(pointer);\n\n  if (tokens.length < 1) {\n    return obj;\n  }\n\n  var val = lib.getIn(obj, tokens);\n\n  if (typeof val === 'undefined') {\n    throw new JSONRefError(\"Could not resolve pointer: \".concat(pointer, \" does not exist in document\"), {\n      pointer: pointer\n    });\n  }\n\n  return val;\n}\n/**\n * Converts a JSON pointer to array.\n * @api public\n */\n\n\nfunction jsonPointerToArray(pointer) {\n  var _context3;\n\n  if (typeof pointer !== 'string') {\n    throw new TypeError(\"Expected a string, got a \".concat(_typeof(pointer)));\n  }\n\n  if (pointer[0] === '/') {\n    pointer = pointer.substr(1);\n  }\n\n  if (pointer === '') {\n    return [];\n  }\n\n  return _mapInstanceProperty(_context3 = pointer.split('/')).call(_context3, unescapeJsonPointerToken);\n}\n/**\n * Unescapes a JSON pointer.\n * @api public\n */\n\n\nfunction unescapeJsonPointerToken(token) {\n  if (typeof token !== 'string') {\n    return token;\n  }\n\n  var params = new _URLSearchParams(\"=\".concat(token.replace(/~1/g, '/').replace(/~0/g, '~')));\n  return params.get('');\n}\n/**\n * Escapes a JSON pointer.\n * @api public\n */\n\n\nfunction escapeJsonPointerToken(token) {\n  var _context4;\n\n  var params = new _URLSearchParams([['', token.replace(/~/g, '~0').replace(/\\//g, '~1')]]);\n  return _sliceInstanceProperty(_context4 = params.toString()).call(_context4, 1);\n}\n\nfunction arrayToJsonPointer(arr) {\n  if (arr.length === 0) {\n    return '';\n  }\n\n  return \"/\".concat(_mapInstanceProperty(arr).call(arr, escapeJsonPointerToken).join('/'));\n}\n\nvar pointerBoundaryChar = function pointerBoundaryChar(c) {\n  return !c || c === '/' || c === '#';\n};\n\nfunction pointerIsAParent(pointer, parentPointer) {\n  if (pointerBoundaryChar(parentPointer)) {\n    // This is the root of the document, so its naturally a parent\n    return true;\n  }\n\n  var nextChar = pointer.charAt(parentPointer.length);\n\n  var lastParentChar = _sliceInstanceProperty(parentPointer).call(parentPointer, -1);\n\n  return pointer.indexOf(parentPointer) === 0 && (!nextChar || nextChar === '/' || nextChar === '#') && lastParentChar !== '#';\n} // =========================\n// Private\n// =========================\n\n/**\n * Checks if this pointer points back to one or more pointers along the path.\n */\n\n\nfunction pointerAlreadyInPath(pointer, basePath, parent, specmap) {\n  var _context5, _context7;\n\n  var refs = specmapRefs.get(specmap);\n\n  if (!refs) {\n    // Stores all resolved references of a specmap instance.\n    // Schema: path -> pointer (path's $ref value).\n    refs = {};\n    specmapRefs.set(specmap, refs);\n  }\n\n  var parentPointer = arrayToJsonPointer(parent);\n\n  var fullyQualifiedPointer = _concatInstanceProperty(_context5 = \"\".concat(basePath || '<specmap-base>', \"#\")).call(_context5, pointer); // dirty hack to strip `allof/[index]` from the path, in order to avoid cases\n  // where we get false negatives because:\n  // - we resolve a path, then\n  // - allOf plugin collapsed `allOf/[index]` out of the path, then\n  // - we try to work on a child $ref within that collapsed path.\n  //\n  // because of the path collapse, we lose track of it in our specmapRefs hash\n  // solution: always throw the allOf constructs out of paths we store\n  // TODO: solve this with a global register, or by writing more metadata in\n  // either allOf or refs plugin\n\n\n  var safeParentPointer = parentPointer.replace(/allOf\\/\\d+\\/?/g, ''); // Case 1: direct cycle, e.g. a.b.c.$ref: '/a.b'\n  // Detect by checking that the parent path doesn't start with pointer.\n  // This only applies if the pointer is internal, i.e. basePath === rootPath (could be null)\n\n  var rootDoc = specmap.contextTree.get([]).baseDoc;\n\n  if (basePath === rootDoc && pointerIsAParent(safeParentPointer, pointer)) {\n    // eslint-disable-line\n    return true;\n  } // Case 2: indirect cycle\n  //  ex1: a.$ref: '/b'  &  b.c.$ref: '/b/c'\n  //  ex2: a.$ref: '/b/c'  &  b.c.$ref: '/b'\n  // Detect by retrieving all the $refs along the path of parent\n  // and checking if any starts with pointer or vice versa.\n\n\n  var currPath = '';\n  var hasIndirectCycle = parent.some(function (token) {\n    var _context6;\n\n    currPath = _concatInstanceProperty(_context6 = \"\".concat(currPath, \"/\")).call(_context6, escapeJsonPointerToken(token));\n    return refs[currPath] && refs[currPath].some(function (ref) {\n      return pointerIsAParent(ref, fullyQualifiedPointer) || pointerIsAParent(fullyQualifiedPointer, ref);\n    });\n  });\n\n  if (hasIndirectCycle) {\n    return true;\n  } // No cycle, this ref will be resolved, so stores it now for future detection.\n  // No need to store if has cycle, as parent path is a dead-end and won't be checked again.\n\n\n  refs[safeParentPointer] = _concatInstanceProperty(_context7 = refs[safeParentPointer] || []).call(_context7, fullyQualifiedPointer);\n  return undefined;\n}\n/**\n * Checks if the value of this patch ends up pointing to an ancestor along the path.\n */\n\n\nfunction patchValueAlreadyInPath(root, patch) {\n  var ancestors = [root];\n  patch.path.reduce(function (parent, p) {\n    ancestors.push(parent[p]);\n    return parent[p];\n  }, root);\n  return pointToAncestor(patch.value);\n\n  function pointToAncestor(obj) {\n    return lib.isObject(obj) && (ancestors.indexOf(obj) >= 0 || _Object$keys(obj).some(function (k) {\n      return pointToAncestor(obj[k]);\n    }));\n  }\n}", "import _toConsumableArray from \"@babel/runtime-corejs3/helpers/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _sliceInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/slice\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport { isFreelyNamed, generateAbsoluteRefPatches } from '../helpers.js';\nexport default {\n  key: 'allOf',\n  plugin: function plugin(val, key, fullPath, specmap, patch) {\n    // Ignore replace patches created by $ref because the changes will\n    // occur in the original \"add\" patch and we don't want this plugin\n    // to redundantly processes those \"relace\" patches.\n    if (patch.meta && patch.meta.$$ref) {\n      return undefined;\n    }\n\n    var parent = _sliceInstanceProperty(fullPath).call(fullPath, 0, -1);\n\n    if (isFreelyNamed(parent)) {\n      return undefined;\n    }\n\n    if (!Array.isArray(val)) {\n      var err = new TypeError('allOf must be an array');\n      err.fullPath = fullPath; // This is an array\n\n      return err;\n    }\n\n    var alreadyAddError = false; // Find the original definition from the `patch.value` object\n    // Remove the `allOf` property so it doesn't get added to the result of the `allOf` plugin\n\n    var originalDefinitionObj = patch.value;\n    parent.forEach(function (part) {\n      if (!originalDefinitionObj) return; // bail out if we've lost sight of our target\n\n      originalDefinitionObj = originalDefinitionObj[part];\n    });\n    originalDefinitionObj = _objectSpread({}, originalDefinitionObj); // when we've lost sight, interrupt prematurely\n\n    if (_Object$keys(originalDefinitionObj).length === 0) {\n      return undefined;\n    }\n\n    delete originalDefinitionObj.allOf;\n    var patches = []; // remove existing content\n\n    patches.push(specmap.replace(parent, {}));\n    val.forEach(function (toMerge, i) {\n      if (!specmap.isObject(toMerge)) {\n        if (alreadyAddError) {\n          return null;\n        }\n\n        alreadyAddError = true;\n\n        var _err = new TypeError('Elements in allOf must be objects');\n\n        _err.fullPath = fullPath; // This is an array\n\n        return patches.push(_err);\n      } // Deeply merge the member's contents onto the parent location\n\n\n      patches.push(specmap.mergeDeep(parent, toMerge)); // Generate patches that migrate $ref values based on ContextTree information\n      // remove [\"allOf\"], which will not be present when these patches are applied\n\n      var collapsedFullPath = _sliceInstanceProperty(fullPath).call(fullPath, 0, -1);\n\n      var absoluteRefPatches = generateAbsoluteRefPatches(toMerge, collapsedFullPath, {\n        getBaseUrlForNodePath: function getBaseUrlForNodePath(nodePath) {\n          var _context;\n\n          return specmap.getContext(_concatInstanceProperty(_context = []).call(_context, _toConsumableArray(fullPath), [i], _toConsumableArray(nodePath))).baseDoc;\n        },\n        specmap: specmap\n      });\n      patches.push.apply(patches, _toConsumableArray(absoluteRefPatches));\n      return undefined;\n    }); // If there was an example in the original definition,\n    // keep it instead of merging with examples from other schema\n\n    if (originalDefinitionObj.example) {\n      var _context2;\n\n      // Delete other schema examples\n      patches.push(specmap.remove(_concatInstanceProperty(_context2 = []).call(_context2, parent, 'example')));\n    } // Merge back the values from the original definition\n\n\n    patches.push(specmap.mergeDeep(parent, originalDefinitionObj)); // If there was not an original $$ref value, make sure to remove\n    // any $$ref value that may exist from the result of `allOf` merges\n\n    if (!originalDefinitionObj.$$ref) {\n      var _context3;\n\n      patches.push(specmap.remove(_concatInstanceProperty(_context3 = []).call(_context3, parent, '$$ref')));\n    }\n\n    return patches;\n  }\n};", "import _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _Object$assign from \"@babel/runtime-corejs3/core-js-stable/object/assign\";\nimport _sliceInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/slice\";\nimport lib from './index.js';\nexport default {\n  key: 'parameters',\n  plugin: function plugin(parameters, key, fullPath, specmap) {\n    if (Array.isArray(parameters) && parameters.length) {\n      var val = _Object$assign([], parameters);\n\n      var opPath = _sliceInstanceProperty(fullPath).call(fullPath, 0, -1);\n\n      var op = _objectSpread({}, lib.getIn(specmap.spec, opPath));\n\n      parameters.forEach(function (param, i) {\n        try {\n          val[i].default = specmap.parameterMacro(op, param);\n        } catch (e) {\n          var err = new Error(e);\n          err.fullPath = fullPath;\n          return err;\n        }\n\n        return undefined;\n      });\n      return lib.replace(fullPath, val);\n    }\n\n    return lib.replace(fullPath, parameters);\n  }\n};", "import _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport lib from './index.js';\nexport default {\n  key: 'properties',\n  plugin: function plugin(properties, key, fullPath, specmap) {\n    var val = _objectSpread({}, properties); // eslint-disable-next-line no-restricted-syntax, guard-for-in\n\n\n    for (var k in properties) {\n      try {\n        val[k].default = specmap.modelPropertyMacro(val[k]);\n      } catch (e) {\n        var err = new Error(e);\n        err.fullPath = fullPath; // This is an array\n\n        return err;\n      }\n    }\n\n    var patch = lib.replace(fullPath, val);\n    return patch;\n  }\n};", "import _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime-corejs3/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime-corejs3/helpers/createClass\";\nimport _sliceInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/slice\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\n\nvar ContextTree = /*#__PURE__*/function () {\n  function ContextTree(value) {\n    _classCallCheck(this, ContextTree);\n\n    this.root = createNode(value || {});\n  }\n\n  _createClass(ContextTree, [{\n    key: \"set\",\n    value: function set(path, value) {\n      var parent = this.getParent(path, true);\n\n      if (!parent) {\n        updateNode(this.root, value, null);\n        return;\n      }\n\n      var key = path[path.length - 1];\n      var children = parent.children;\n\n      if (children[key]) {\n        updateNode(children[key], value, parent);\n        return;\n      }\n\n      children[key] = createNode(value, parent);\n    } // Get the \"best\" node (node or nearest parent) and return its value.\n\n  }, {\n    key: \"get\",\n    value: function get(path) {\n      path = path || [];\n\n      if (path.length < 1) {\n        return this.root.value;\n      }\n\n      var branch = this.root;\n      var child;\n      var token;\n\n      for (var i = 0; i < path.length; i += 1) {\n        token = path[i];\n        child = branch.children;\n\n        if (!child[token]) {\n          break;\n        }\n\n        branch = child[token];\n      }\n\n      return branch && branch.protoValue;\n    }\n  }, {\n    key: \"getParent\",\n    value: function getParent(path, ensureExists) {\n      if (!path || path.length < 1) {\n        return null;\n      }\n\n      if (path.length < 2) {\n        return this.root;\n      }\n\n      return _sliceInstanceProperty(path).call(path, 0, -1).reduce(function (branch, token) {\n        if (!branch) {\n          return branch;\n        }\n\n        var children = branch.children;\n\n        if (!children[token] && ensureExists) {\n          children[token] = createNode(null, branch);\n        }\n\n        return children[token];\n      }, this.root);\n    }\n  }]);\n\n  return ContextTree;\n}(); // =========================\n// Utilities\n// =========================\n\n\nexport { ContextTree as default };\n\nfunction createNode(value, parent) {\n  return updateNode({\n    children: {}\n  }, value, parent);\n}\n\nfunction updateNode(node, value, parent) {\n  node.value = value || {};\n  node.protoValue = parent ? _objectSpread(_objectSpread({}, parent.protoValue), node.value) : node.value;\n\n  _Object$keys(node.children).forEach(function (prop) {\n    var child = node.children[prop];\n    node.children[prop] = updateNode(child, child.value, node);\n  });\n\n  return node;\n}", "import _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _typeof from \"@babel/runtime-corejs3/helpers/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime-corejs3/helpers/createForOfIteratorHelper\";\nimport _classCallCheck from \"@babel/runtime-corejs3/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime-corejs3/helpers/createClass\";\nimport _regeneratorRuntime from \"@babel/runtime-corejs3/regenerator\";\nimport _Object$assign from \"@babel/runtime-corejs3/core-js-stable/object/assign\";\nimport _filterInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/filter\";\nimport _mapInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/map\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport _Object$keys2 from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _findInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/find\";\nimport _Promise from \"@babel/runtime-corejs3/core-js-stable/promise\";\nimport _spliceInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/splice\";\nimport _sliceInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/slice\";\nimport lib from './lib/index.js';\nimport refs from './lib/refs.js';\nimport allOf from './lib/all-of.js';\nimport parameters from './lib/parameters.js';\nimport properties from './lib/properties.js';\nimport ContextTree from './lib/context-tree.js';\nvar HARD_LIMIT = 100;\n\nvar noop = function noop() {};\n\nvar SpecMap = /*#__PURE__*/function () {\n  function SpecMap(opts) {\n    var _this = this,\n        _context,\n        _context2;\n\n    _classCallCheck(this, SpecMap);\n\n    _Object$assign(this, {\n      spec: '',\n      debugLevel: 'info',\n      plugins: [],\n      pluginHistory: {},\n      errors: [],\n      mutations: [],\n      promisedPatches: [],\n      state: {},\n      patches: [],\n      context: {},\n      contextTree: new ContextTree(),\n      showDebug: false,\n      allPatches: [],\n      // only populated if showDebug is true\n      pluginProp: 'specMap',\n      libMethods: _Object$assign(Object.create(this), lib, {\n        getInstance: function getInstance() {\n          return _this;\n        }\n      }),\n      allowMetaPatches: false\n    }, opts); // Lib methods bound\n\n\n    this.get = this._get.bind(this); // eslint-disable-line no-underscore-dangle\n\n    this.getContext = this._getContext.bind(this); // eslint-disable-line no-underscore-dangle\n\n    this.hasRun = this._hasRun.bind(this); // eslint-disable-line no-underscore-dangle\n\n    this.wrappedPlugins = _filterInstanceProperty(_context = _mapInstanceProperty(_context2 = this.plugins).call(_context2, this.wrapPlugin.bind(this))).call(_context, lib.isFunction); // Initial patch(s)\n\n    this.patches.push(lib.add([], this.spec));\n    this.patches.push(lib.context([], this.context));\n    this.updatePatches(this.patches);\n  }\n\n  _createClass(SpecMap, [{\n    key: \"debug\",\n    value: function debug(level) {\n      if (this.debugLevel === level) {\n        var _console;\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\n        (_console = console).log.apply(_console, args); // eslint-disable-line no-console\n\n      }\n    }\n  }, {\n    key: \"verbose\",\n    value: function verbose(header) {\n      if (this.debugLevel === 'verbose') {\n        var _console2, _context3;\n\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n\n        (_console2 = console).log.apply(_console2, _concatInstanceProperty(_context3 = [\"[\".concat(header, \"]   \")]).call(_context3, args)); // eslint-disable-line no-console\n\n      }\n    }\n  }, {\n    key: \"wrapPlugin\",\n    value: function wrapPlugin(plugin, name) {\n      var pathDiscriminator = this.pathDiscriminator;\n      var ctx = null;\n      var fn;\n\n      if (plugin[this.pluginProp]) {\n        ctx = plugin;\n        fn = plugin[this.pluginProp];\n      } else if (lib.isFunction(plugin)) {\n        fn = plugin;\n      } else if (lib.isObject(plugin)) {\n        fn = createKeyBasedPlugin(plugin);\n      }\n\n      return _Object$assign(fn.bind(ctx), {\n        pluginName: plugin.name || name,\n        isGenerator: lib.isGenerator(fn)\n      }); // Expected plugin interface: {key: string, plugin: fn*}\n      // This traverses depth-first and immediately applies yielded patches.\n      // This strategy should work well for most plugins (including the built-ins).\n      // We might consider making this (traversing & application) configurable later.\n\n      function createKeyBasedPlugin(pluginObj) {\n        var isSubPath = function isSubPath(path, tested) {\n          if (!Array.isArray(path)) {\n            return true;\n          }\n\n          return path.every(function (val, i) {\n            return val === tested[i];\n          });\n        };\n\n        return /*#__PURE__*/_regeneratorRuntime.mark(function generator(patches, specmap) {\n          var _marked, refCache, _iterator, _step, patch, traverse;\n\n          return _regeneratorRuntime.wrap(function generator$(_context5) {\n            while (1) {\n              switch (_context5.prev = _context5.next) {\n                case 0:\n                  traverse = function _traverse(obj, path, patch) {\n                    var parentIndex, parent, indexOfFirstProperties, isRootProperties, traversed, _i, _Object$keys, key, val, updatedPath, isObj, objRef, isWithinPathDiscriminator;\n\n                    return _regeneratorRuntime.wrap(function traverse$(_context4) {\n                      while (1) {\n                        switch (_context4.prev = _context4.next) {\n                          case 0:\n                            if (lib.isObject(obj)) {\n                              _context4.next = 6;\n                              break;\n                            }\n\n                            if (!(pluginObj.key === path[path.length - 1])) {\n                              _context4.next = 4;\n                              break;\n                            }\n\n                            _context4.next = 4;\n                            return pluginObj.plugin(obj, pluginObj.key, path, specmap);\n\n                          case 4:\n                            _context4.next = 30;\n                            break;\n\n                          case 6:\n                            parentIndex = path.length - 1;\n                            parent = path[parentIndex];\n                            indexOfFirstProperties = path.indexOf('properties');\n                            isRootProperties = parent === 'properties' && parentIndex === indexOfFirstProperties;\n                            traversed = specmap.allowMetaPatches && refCache[obj.$$ref]; // eslint-disable-next-line no-restricted-syntax\n\n                            _i = 0, _Object$keys = _Object$keys2(obj);\n\n                          case 12:\n                            if (!(_i < _Object$keys.length)) {\n                              _context4.next = 30;\n                              break;\n                            }\n\n                            key = _Object$keys[_i];\n                            val = obj[key];\n                            updatedPath = _concatInstanceProperty(path).call(path, key);\n                            isObj = lib.isObject(val);\n                            objRef = obj.$$ref;\n\n                            if (traversed) {\n                              _context4.next = 22;\n                              break;\n                            }\n\n                            if (!isObj) {\n                              _context4.next = 22;\n                              break;\n                            }\n\n                            // Only store the ref if it exists\n                            if (specmap.allowMetaPatches && objRef) {\n                              refCache[objRef] = true;\n                            }\n\n                            return _context4.delegateYield(traverse(val, updatedPath, patch), \"t0\", 22);\n\n                          case 22:\n                            if (!(!isRootProperties && key === pluginObj.key)) {\n                              _context4.next = 27;\n                              break;\n                            }\n\n                            isWithinPathDiscriminator = isSubPath(pathDiscriminator, path);\n\n                            if (!(!pathDiscriminator || isWithinPathDiscriminator)) {\n                              _context4.next = 27;\n                              break;\n                            }\n\n                            _context4.next = 27;\n                            return pluginObj.plugin(val, key, updatedPath, specmap, patch);\n\n                          case 27:\n                            _i++;\n                            _context4.next = 12;\n                            break;\n\n                          case 30:\n                          case \"end\":\n                            return _context4.stop();\n                        }\n                      }\n                    }, _marked);\n                  };\n\n                  _marked = /*#__PURE__*/_regeneratorRuntime.mark(traverse);\n                  refCache = {}; // eslint-disable-next-line no-restricted-syntax\n\n                  _iterator = _createForOfIteratorHelper(_filterInstanceProperty(patches).call(patches, lib.isAdditiveMutation));\n                  _context5.prev = 4;\n\n                  _iterator.s();\n\n                case 6:\n                  if ((_step = _iterator.n()).done) {\n                    _context5.next = 11;\n                    break;\n                  }\n\n                  patch = _step.value;\n                  return _context5.delegateYield(traverse(patch.value, patch.path, patch), \"t0\", 9);\n\n                case 9:\n                  _context5.next = 6;\n                  break;\n\n                case 11:\n                  _context5.next = 16;\n                  break;\n\n                case 13:\n                  _context5.prev = 13;\n                  _context5.t1 = _context5[\"catch\"](4);\n\n                  _iterator.e(_context5.t1);\n\n                case 16:\n                  _context5.prev = 16;\n\n                  _iterator.f();\n\n                  return _context5.finish(16);\n\n                case 19:\n                case \"end\":\n                  return _context5.stop();\n              }\n            }\n          }, generator, null, [[4, 13, 16, 19]]);\n        });\n      }\n    }\n  }, {\n    key: \"nextPlugin\",\n    value: function nextPlugin() {\n      var _context6,\n          _this2 = this;\n\n      return _findInstanceProperty(_context6 = this.wrappedPlugins).call(_context6, function (plugin) {\n        var mutations = _this2.getMutationsForPlugin(plugin);\n\n        return mutations.length > 0;\n      });\n    }\n  }, {\n    key: \"nextPromisedPatch\",\n    value: function nextPromisedPatch() {\n      if (this.promisedPatches.length > 0) {\n        var _context7;\n\n        return _Promise.race(_mapInstanceProperty(_context7 = this.promisedPatches).call(_context7, function (patch) {\n          return patch.value;\n        }));\n      }\n\n      return undefined;\n    }\n  }, {\n    key: \"getPluginHistory\",\n    value: function getPluginHistory(plugin) {\n      var name = this.constructor.getPluginName(plugin);\n      return this.pluginHistory[name] || [];\n    }\n  }, {\n    key: \"getPluginRunCount\",\n    value: function getPluginRunCount(plugin) {\n      return this.getPluginHistory(plugin).length;\n    }\n  }, {\n    key: \"getPluginHistoryTip\",\n    value: function getPluginHistoryTip(plugin) {\n      var history = this.getPluginHistory(plugin);\n      var val = history && history[history.length - 1];\n      return val || {};\n    }\n  }, {\n    key: \"getPluginMutationIndex\",\n    value: function getPluginMutationIndex(plugin) {\n      var mi = this.getPluginHistoryTip(plugin).mutationIndex;\n      return typeof mi !== 'number' ? -1 : mi;\n    }\n  }, {\n    key: \"updatePluginHistory\",\n    value: function updatePluginHistory(plugin, val) {\n      var name = this.constructor.getPluginName(plugin);\n      this.pluginHistory[name] = this.pluginHistory[name] || [];\n      this.pluginHistory[name].push(val);\n    }\n  }, {\n    key: \"updatePatches\",\n    value: function updatePatches(patches) {\n      var _this3 = this;\n\n      lib.normalizeArray(patches).forEach(function (patch) {\n        if (patch instanceof Error) {\n          _this3.errors.push(patch);\n\n          return;\n        }\n\n        try {\n          if (!lib.isObject(patch)) {\n            _this3.debug('updatePatches', 'Got a non-object patch', patch);\n\n            return;\n          }\n\n          if (_this3.showDebug) {\n            _this3.allPatches.push(patch);\n          }\n\n          if (lib.isPromise(patch.value)) {\n            _this3.promisedPatches.push(patch);\n\n            _this3.promisedPatchThen(patch);\n\n            return;\n          }\n\n          if (lib.isContextPatch(patch)) {\n            _this3.setContext(patch.path, patch.value);\n\n            return;\n          }\n\n          if (lib.isMutation(patch)) {\n            _this3.updateMutations(patch);\n\n            return;\n          }\n        } catch (e) {\n          console.error(e); // eslint-disable-line no-console\n\n          _this3.errors.push(e);\n        }\n      });\n    }\n  }, {\n    key: \"updateMutations\",\n    value: function updateMutations(patch) {\n      if (_typeof(patch.value) === 'object' && !Array.isArray(patch.value) && this.allowMetaPatches) {\n        patch.value = _objectSpread({}, patch.value);\n      }\n\n      var result = lib.applyPatch(this.state, patch, {\n        allowMetaPatches: this.allowMetaPatches\n      });\n\n      if (result) {\n        this.mutations.push(patch);\n        this.state = result;\n      }\n    }\n  }, {\n    key: \"removePromisedPatch\",\n    value: function removePromisedPatch(patch) {\n      var _context8;\n\n      var index = this.promisedPatches.indexOf(patch);\n\n      if (index < 0) {\n        this.debug(\"Tried to remove a promisedPatch that isn't there!\");\n        return;\n      }\n\n      _spliceInstanceProperty(_context8 = this.promisedPatches).call(_context8, index, 1);\n    }\n  }, {\n    key: \"promisedPatchThen\",\n    value: function promisedPatchThen(patch) {\n      var _this4 = this;\n\n      patch.value = patch.value.then(function (val) {\n        var promisedPatch = _objectSpread(_objectSpread({}, patch), {}, {\n          value: val\n        });\n\n        _this4.removePromisedPatch(patch);\n\n        _this4.updatePatches(promisedPatch);\n      }).catch(function (e) {\n        _this4.removePromisedPatch(patch);\n\n        _this4.updatePatches(e);\n      });\n      return patch.value;\n    }\n  }, {\n    key: \"getMutations\",\n    value: function getMutations(from, to) {\n      var _context9;\n\n      from = from || 0;\n\n      if (typeof to !== 'number') {\n        to = this.mutations.length;\n      }\n\n      return _sliceInstanceProperty(_context9 = this.mutations).call(_context9, from, to);\n    }\n  }, {\n    key: \"getCurrentMutations\",\n    value: function getCurrentMutations() {\n      return this.getMutationsForPlugin(this.getCurrentPlugin());\n    }\n  }, {\n    key: \"getMutationsForPlugin\",\n    value: function getMutationsForPlugin(plugin) {\n      var tip = this.getPluginMutationIndex(plugin);\n      return this.getMutations(tip + 1);\n    }\n  }, {\n    key: \"getCurrentPlugin\",\n    value: function getCurrentPlugin() {\n      return this.currentPlugin;\n    }\n  }, {\n    key: \"getLib\",\n    value: function getLib() {\n      return this.libMethods;\n    } // eslint-disable-next-line no-underscore-dangle\n\n  }, {\n    key: \"_get\",\n    value: function _get(path) {\n      return lib.getIn(this.state, path);\n    } // eslint-disable-next-line no-underscore-dangle\n\n  }, {\n    key: \"_getContext\",\n    value: function _getContext(path) {\n      return this.contextTree.get(path);\n    }\n  }, {\n    key: \"setContext\",\n    value: function setContext(path, value) {\n      return this.contextTree.set(path, value);\n    } // eslint-disable-next-line no-underscore-dangle\n\n  }, {\n    key: \"_hasRun\",\n    value: function _hasRun(count) {\n      var times = this.getPluginRunCount(this.getCurrentPlugin());\n      return times > (count || 0);\n    }\n  }, {\n    key: \"dispatch\",\n    value: function dispatch() {\n      var _this5 = this;\n\n      var that = this;\n      var plugin = this.nextPlugin();\n\n      if (!plugin) {\n        var nextPromise = this.nextPromisedPatch();\n\n        if (nextPromise) {\n          return nextPromise.then(function () {\n            return _this5.dispatch();\n          }).catch(function () {\n            return _this5.dispatch();\n          });\n        } // We're done!\n\n\n        var result = {\n          spec: this.state,\n          errors: this.errors\n        };\n\n        if (this.showDebug) {\n          result.patches = this.allPatches;\n        }\n\n        return _Promise.resolve(result);\n      } // Makes sure plugin isn't running an endless loop\n\n\n      that.pluginCount = that.pluginCount || {};\n      that.pluginCount[plugin] = (that.pluginCount[plugin] || 0) + 1;\n\n      if (that.pluginCount[plugin] > HARD_LIMIT) {\n        var _context10;\n\n        return _Promise.resolve({\n          spec: that.state,\n          errors: _concatInstanceProperty(_context10 = that.errors).call(_context10, new Error(\"We've reached a hard limit of \".concat(HARD_LIMIT, \" plugin runs\")))\n        });\n      } // A different plugin runs, wait for all promises to resolve, then retry\n\n\n      if (plugin !== this.currentPlugin && this.promisedPatches.length) {\n        var _context11;\n\n        var promises = _mapInstanceProperty(_context11 = this.promisedPatches).call(_context11, function (p) {\n          return p.value;\n        }); // Waits for all to settle instead of Promise.all which stops on rejection\n\n\n        return _Promise.all(_mapInstanceProperty(promises).call(promises, function (promise) {\n          return promise.then(noop, noop);\n        })).then(function () {\n          return _this5.dispatch();\n        });\n      } // Ok, run the plugin\n\n\n      return executePlugin();\n\n      function executePlugin() {\n        that.currentPlugin = plugin;\n        var mutations = that.getCurrentMutations();\n        var lastMutationIndex = that.mutations.length - 1;\n\n        try {\n          if (plugin.isGenerator) {\n            // eslint-disable-next-line no-restricted-syntax\n            var _iterator2 = _createForOfIteratorHelper(plugin(mutations, that.getLib())),\n                _step2;\n\n            try {\n              for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n                var yieldedPatches = _step2.value;\n                updatePatches(yieldedPatches);\n              }\n            } catch (err) {\n              _iterator2.e(err);\n            } finally {\n              _iterator2.f();\n            }\n          } else {\n            var newPatches = plugin(mutations, that.getLib());\n            updatePatches(newPatches);\n          }\n        } catch (e) {\n          console.error(e); // eslint-disable-line no-console\n\n          updatePatches([_Object$assign(Object.create(e), {\n            plugin: plugin\n          })]);\n        } finally {\n          that.updatePluginHistory(plugin, {\n            mutationIndex: lastMutationIndex\n          });\n        }\n\n        return that.dispatch();\n      }\n\n      function updatePatches(patches) {\n        if (patches) {\n          patches = lib.fullyNormalizeArray(patches);\n          that.updatePatches(patches, plugin);\n        }\n      }\n    }\n  }], [{\n    key: \"getPluginName\",\n    value: function getPluginName(plugin) {\n      return plugin.pluginName;\n    }\n  }, {\n    key: \"getPatchesOfType\",\n    value: function getPatchesOfType(patches, fn) {\n      return _filterInstanceProperty(patches).call(patches, fn);\n    }\n  }]);\n\n  return SpecMap;\n}();\n\nexport default function mapSpec(opts) {\n  return new SpecMap(opts).dispatch();\n}\nvar plugins = {\n  refs: refs,\n  allOf: allOf,\n  parameters: parameters,\n  properties: properties\n};\nexport { SpecMap, plugins };", "import _asyncToGenerator from \"@babel/runtime-corejs3/helpers/asyncToGenerator\";\nimport _regeneratorRuntime from \"@babel/runtime-corejs3/regenerator\";\nimport Http from './http/index.js';\nimport mapSpec, { plugins } from './specmap/index.js';\nimport { normalizeSwagger } from './helpers.js';\nimport { ACCEPT_HEADER_VALUE_FOR_DOCUMENTS } from './constants.js';\nexport function makeFetchJSON(http) {\n  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var requestInterceptor = opts.requestInterceptor,\n      responseInterceptor = opts.responseInterceptor; // Set credentials with 'http.withCredentials' value\n\n  var credentials = http.withCredentials ? 'include' : 'same-origin';\n  return function (docPath) {\n    return http({\n      url: docPath,\n      loadSpec: true,\n      requestInterceptor: requestInterceptor,\n      responseInterceptor: responseInterceptor,\n      headers: {\n        Accept: ACCEPT_HEADER_VALUE_FOR_DOCUMENTS\n      },\n      credentials: credentials\n    }).then(function (res) {\n      return res.body;\n    });\n  };\n} // Wipe out the http cache\n\nexport function clearCache() {\n  plugins.refs.clearCache();\n}\nexport default function resolve(obj) {\n  var fetch = obj.fetch,\n      spec = obj.spec,\n      url = obj.url,\n      mode = obj.mode,\n      _obj$allowMetaPatches = obj.allowMetaPatches,\n      allowMetaPatches = _obj$allowMetaPatches === void 0 ? true : _obj$allowMetaPatches,\n      pathDiscriminator = obj.pathDiscriminator,\n      modelPropertyMacro = obj.modelPropertyMacro,\n      parameterMacro = obj.parameterMacro,\n      requestInterceptor = obj.requestInterceptor,\n      responseInterceptor = obj.responseInterceptor,\n      skipNormalization = obj.skipNormalization,\n      useCircularStructures = obj.useCircularStructures;\n  var http = obj.http,\n      baseDoc = obj.baseDoc; // @TODO Swagger-UI uses baseDoc instead of url, this is to allow both\n  // need to fix and pick one.\n\n  baseDoc = baseDoc || url; // Provide a default fetch implementation\n  // TODO fetch should be removed, and http used instead\n\n  http = fetch || http || Http;\n\n  if (!spec) {\n    return makeFetchJSON(http, {\n      requestInterceptor: requestInterceptor,\n      responseInterceptor: responseInterceptor\n    })(baseDoc).then(doResolve);\n  }\n\n  return doResolve(spec);\n\n  function doResolve(_spec) {\n    if (baseDoc) {\n      plugins.refs.docCache[baseDoc] = _spec;\n    } // Build a json-fetcher ( ie: give it a URL and get json out )\n\n\n    plugins.refs.fetchJSON = makeFetchJSON(http, {\n      requestInterceptor: requestInterceptor,\n      responseInterceptor: responseInterceptor\n    });\n    var plugs = [plugins.refs];\n\n    if (typeof parameterMacro === 'function') {\n      plugs.push(plugins.parameters);\n    }\n\n    if (typeof modelPropertyMacro === 'function') {\n      plugs.push(plugins.properties);\n    }\n\n    if (mode !== 'strict') {\n      plugs.push(plugins.allOf);\n    } // mapSpec is where the hard work happens\n\n\n    return mapSpec({\n      spec: _spec,\n      context: {\n        baseDoc: baseDoc\n      },\n      plugins: plugs,\n      allowMetaPatches: allowMetaPatches,\n      // allows adding .meta patches, which include adding `$$ref`s to the spec\n      pathDiscriminator: pathDiscriminator,\n      // for lazy resolution\n      parameterMacro: parameterMacro,\n      modelPropertyMacro: modelPropertyMacro,\n      useCircularStructures: useCircularStructures\n    }).then(skipNormalization ? /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(a) {\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                return _context.abrupt(\"return\", a);\n\n              case 1:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n\n      return function (_x) {\n        return _ref.apply(this, arguments);\n      };\n    }() : normalizeSwagger);\n  }\n}", "/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (ctor === undefined) return true;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n}\n\nexport { isPlainObject };\n", "// These functions will update the request.\n// They'll be given {req, value, paramter, spec, operation}.\nexport default {\n  body: bodyBuilder,\n  header: headerBuilder,\n  query: queryBuilder,\n  path: pathBuilder,\n  formData: formDataBuilder\n}; // Add the body to the request\n\nfunction bodyBuilder(_ref) {\n  var req = _ref.req,\n      value = _ref.value;\n  req.body = value;\n} // Add a form data object.\n\n\nfunction formDataBuilder(_ref2) {\n  var req = _ref2.req,\n      value = _ref2.value,\n      parameter = _ref2.parameter;\n\n  if (value || parameter.allowEmptyValue) {\n    req.form = req.form || {};\n    req.form[parameter.name] = {\n      value: value,\n      allowEmptyValue: parameter.allowEmptyValue,\n      collectionFormat: parameter.collectionFormat\n    };\n  }\n} // Add a header to the request\n\n\nfunction headerBuilder(_ref3) {\n  var req = _ref3.req,\n      parameter = _ref3.parameter,\n      value = _ref3.value;\n  req.headers = req.headers || {};\n\n  if (typeof value !== 'undefined') {\n    req.headers[parameter.name] = value;\n  }\n} // Replace path paramters, with values ( ie: the URL )\n\n\nfunction pathBuilder(_ref4) {\n  var req = _ref4.req,\n      value = _ref4.value,\n      parameter = _ref4.parameter;\n  req.url = req.url.split(\"{\".concat(parameter.name, \"}\")).join(encodeURIComponent(value));\n} // Add a query to the `query` object, which will later be stringified into the URL's search\n\n\nfunction queryBuilder(_ref5) {\n  var req = _ref5.req,\n      value = _ref5.value,\n      parameter = _ref5.parameter;\n  req.query = req.query || {};\n\n  if (value === false && parameter.type === 'boolean') {\n    value = 'false';\n  }\n\n  if (value === 0 && ['number', 'integer'].indexOf(parameter.type) > -1) {\n    value = '0';\n  }\n\n  if (value) {\n    req.query[parameter.name] = {\n      collectionFormat: parameter.collectionFormat,\n      value: value\n    };\n  } else if (parameter.allowEmptyValue && value !== undefined) {\n    var paramName = parameter.name;\n    req.query[paramName] = req.query[paramName] || {};\n    req.query[paramName].allowEmptyValue = true;\n  }\n}", "import _includesInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/includes\";\nimport _JSON$stringify from \"@babel/runtime-corejs3/core-js-stable/json/stringify\";\n\n/*\n  Serializer that serializes according to a media type instead of OpenAPI's\n  `style` + `explode` constructs.\n*/\nexport default function serialize(value, mediaType) {\n  if (_includesInstanceProperty(mediaType).call(mediaType, 'application/json')) {\n    if (typeof value === 'string') {\n      // Assume the user has a JSON string\n      return value;\n    }\n\n    return _JSON$stringify(value);\n  }\n\n  return value.toString();\n}", "import _typeof from \"@babel/runtime-corejs3/helpers/typeof\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport stylize, { encodeDisallowedCharacters } from './style-serializer.js';\nimport serialize from './content-serializer.js';\nexport function path(_ref) {\n  var req = _ref.req,\n      value = _ref.value,\n      parameter = _ref.parameter;\n  var name = parameter.name,\n      style = parameter.style,\n      explode = parameter.explode,\n      content = parameter.content;\n\n  if (content) {\n    var effectiveMediaType = _Object$keys(content)[0];\n\n    req.url = req.url.split(\"{\".concat(name, \"}\")).join(encodeDisallowedCharacters(serialize(value, effectiveMediaType), {\n      escape: true\n    }));\n    return;\n  }\n\n  var styledValue = stylize({\n    key: parameter.name,\n    value: value,\n    style: style || 'simple',\n    explode: explode || false,\n    escape: true\n  });\n  req.url = req.url.split(\"{\".concat(name, \"}\")).join(styledValue);\n}\nexport function query(_ref2) {\n  var req = _ref2.req,\n      value = _ref2.value,\n      parameter = _ref2.parameter;\n  req.query = req.query || {};\n\n  if (parameter.content) {\n    var effectiveMediaType = _Object$keys(parameter.content)[0];\n\n    req.query[parameter.name] = serialize(value, effectiveMediaType);\n    return;\n  }\n\n  if (value === false) {\n    value = 'false';\n  }\n\n  if (value === 0) {\n    value = '0';\n  }\n\n  if (value) {\n    var style = parameter.style,\n        explode = parameter.explode,\n        allowReserved = parameter.allowReserved;\n    req.query[parameter.name] = {\n      value: value,\n      serializationOption: {\n        style: style,\n        explode: explode,\n        allowReserved: allowReserved\n      }\n    };\n  } else if (parameter.allowEmptyValue && value !== undefined) {\n    var paramName = parameter.name;\n    req.query[paramName] = req.query[paramName] || {};\n    req.query[paramName].allowEmptyValue = true;\n  }\n}\nvar PARAMETER_HEADER_BLACKLIST = ['accept', 'authorization', 'content-type'];\nexport function header(_ref3) {\n  var req = _ref3.req,\n      parameter = _ref3.parameter,\n      value = _ref3.value;\n  req.headers = req.headers || {};\n\n  if (PARAMETER_HEADER_BLACKLIST.indexOf(parameter.name.toLowerCase()) > -1) {\n    return;\n  }\n\n  if (parameter.content) {\n    var effectiveMediaType = _Object$keys(parameter.content)[0];\n\n    req.headers[parameter.name] = serialize(value, effectiveMediaType);\n    return;\n  }\n\n  if (typeof value !== 'undefined') {\n    req.headers[parameter.name] = stylize({\n      key: parameter.name,\n      value: value,\n      style: parameter.style || 'simple',\n      explode: typeof parameter.explode === 'undefined' ? false : parameter.explode,\n      escape: false\n    });\n  }\n}\nexport function cookie(_ref4) {\n  var req = _ref4.req,\n      parameter = _ref4.parameter,\n      value = _ref4.value;\n  req.headers = req.headers || {};\n\n  var type = _typeof(value);\n\n  if (parameter.content) {\n    var _context;\n\n    var effectiveMediaType = _Object$keys(parameter.content)[0];\n\n    req.headers.Cookie = _concatInstanceProperty(_context = \"\".concat(parameter.name, \"=\")).call(_context, serialize(value, effectiveMediaType));\n    return;\n  }\n\n  if (type !== 'undefined') {\n    var prefix = type === 'object' && !Array.isArray(value) && parameter.explode ? '' : \"\".concat(parameter.name, \"=\");\n    req.headers.Cookie = prefix + stylize({\n      key: parameter.name,\n      value: value,\n      escape: false,\n      style: parameter.style || 'form',\n      explode: typeof parameter.explode === 'undefined' ? false : parameter.explode\n    });\n  }\n}", "import _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _typeof from \"@babel/runtime-corejs3/helpers/typeof\";\nimport _slicedToArray from \"@babel/runtime-corejs3/helpers/slicedToArray\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _filterInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/filter\";\nimport _Object$entries from \"@babel/runtime-corejs3/core-js-stable/object/entries\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\n// This function runs after the common function,\n// `src/execute/index.js#buildRequest`\nimport { isPlainObject } from 'is-plain-object';\nimport get from 'lodash/get';\nimport btoa from 'btoa';\nexport default function buildRequest(options, req) {\n  var operation = options.operation,\n      requestBody = options.requestBody,\n      securities = options.securities,\n      spec = options.spec,\n      attachContentTypeForEmptyPayload = options.attachContentTypeForEmptyPayload;\n  var requestContentType = options.requestContentType;\n  req = applySecurities({\n    request: req,\n    securities: securities,\n    operation: operation,\n    spec: spec\n  });\n  var requestBodyDef = operation.requestBody || {};\n\n  var requestBodyMediaTypes = _Object$keys(requestBodyDef.content || {});\n\n  var isExplicitContentTypeValid = requestContentType && requestBodyMediaTypes.indexOf(requestContentType) > -1; // for OAS3: set the Content-Type\n\n  if (requestBody || attachContentTypeForEmptyPayload) {\n    // does the passed requestContentType appear in the requestBody definition?\n    if (requestContentType && isExplicitContentTypeValid) {\n      req.headers['Content-Type'] = requestContentType;\n    } else if (!requestContentType) {\n      var firstMediaType = requestBodyMediaTypes[0];\n\n      if (firstMediaType) {\n        req.headers['Content-Type'] = firstMediaType;\n        requestContentType = firstMediaType;\n      }\n    }\n  } else if (requestContentType && isExplicitContentTypeValid) {\n    req.headers['Content-Type'] = requestContentType;\n  }\n\n  if (!options.responseContentType && operation.responses) {\n    var _context;\n\n    var mediaTypes = _filterInstanceProperty(_context = _Object$entries(operation.responses)).call(_context, function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          key = _ref2[0],\n          value = _ref2[1];\n\n      var code = parseInt(key, 10);\n      return code >= 200 && code < 300 && isPlainObject(value.content);\n    }).reduce(function (acc, _ref3) {\n      var _ref4 = _slicedToArray(_ref3, 2),\n          value = _ref4[1];\n\n      return _concatInstanceProperty(acc).call(acc, _Object$keys(value.content));\n    }, []);\n\n    if (mediaTypes.length > 0) {\n      req.headers.accept = mediaTypes.join(', ');\n    }\n  } // for OAS3: add requestBody to request\n\n\n  if (requestBody) {\n    if (requestContentType) {\n      if (requestBodyMediaTypes.indexOf(requestContentType) > -1) {\n        // only attach body if the requestBody has a definition for the\n        // contentType that has been explicitly set\n        if (requestContentType === 'application/x-www-form-urlencoded' || requestContentType === 'multipart/form-data') {\n          if (_typeof(requestBody) === 'object') {\n            var encoding = (requestBodyDef.content[requestContentType] || {}).encoding || {};\n            req.form = {};\n\n            _Object$keys(requestBody).forEach(function (k) {\n              req.form[k] = {\n                value: requestBody[k],\n                encoding: encoding[k] || {}\n              };\n            });\n          } else {\n            req.form = requestBody;\n          }\n        } else {\n          req.body = requestBody;\n        }\n      }\n    } else {\n      req.body = requestBody;\n    }\n  }\n\n  return req;\n} // Add security values, to operations - that declare their need on them\n// Adapted from the Swagger2 implementation\n\nexport function applySecurities(_ref5) {\n  var request = _ref5.request,\n      _ref5$securities = _ref5.securities,\n      securities = _ref5$securities === void 0 ? {} : _ref5$securities,\n      _ref5$operation = _ref5.operation,\n      operation = _ref5$operation === void 0 ? {} : _ref5$operation,\n      spec = _ref5.spec;\n\n  var result = _objectSpread({}, request);\n\n  var _securities$authorize = securities.authorized,\n      authorized = _securities$authorize === void 0 ? {} : _securities$authorize;\n  var security = operation.security || spec.security || [];\n  var isAuthorized = authorized && !!_Object$keys(authorized).length;\n  var securityDef = get(spec, ['components', 'securitySchemes']) || {};\n  result.headers = result.headers || {};\n  result.query = result.query || {};\n\n  if (!_Object$keys(securities).length || !isAuthorized || !security || Array.isArray(operation.security) && !operation.security.length) {\n    return request;\n  }\n\n  security.forEach(function (securityObj) {\n    _Object$keys(securityObj).forEach(function (key) {\n      var auth = authorized[key];\n      var schema = securityDef[key];\n\n      if (!auth) {\n        return;\n      }\n\n      var value = auth.value || auth;\n      var type = schema.type;\n\n      if (auth) {\n        if (type === 'apiKey') {\n          if (schema.in === 'query') {\n            result.query[schema.name] = value;\n          }\n\n          if (schema.in === 'header') {\n            result.headers[schema.name] = value;\n          }\n\n          if (schema.in === 'cookie') {\n            result.cookies[schema.name] = value;\n          }\n        } else if (type === 'http') {\n          if (/^basic$/i.test(schema.scheme)) {\n            var _context2;\n\n            var username = value.username || '';\n            var password = value.password || '';\n            var encoded = btoa(_concatInstanceProperty(_context2 = \"\".concat(username, \":\")).call(_context2, password));\n            result.headers.Authorization = \"Basic \".concat(encoded);\n          }\n\n          if (/^bearer$/i.test(schema.scheme)) {\n            result.headers.Authorization = \"Bearer \".concat(value);\n          }\n        } else if (type === 'oauth2' || type === 'openIdConnect') {\n          var _context3;\n\n          var token = auth.token || {};\n          var tokenName = schema['x-tokenName'] || 'access_token';\n          var tokenValue = token[tokenName];\n          var tokenType = token.token_type;\n\n          if (!tokenType || tokenType.toLowerCase() === 'bearer') {\n            tokenType = 'Bearer';\n          }\n\n          result.headers.Authorization = _concatInstanceProperty(_context3 = \"\".concat(tokenType, \" \")).call(_context3, tokenValue);\n        }\n      }\n    });\n  });\n  return result;\n}", "import _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime-corejs3/helpers/slicedToArray\";\nimport _filterInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/filter\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport btoa from 'btoa'; // This function runs after the common function,\n// `src/execute/index.js#buildRequest`\n\nexport default function buildRequest(options, req) {\n  var spec = options.spec,\n      operation = options.operation,\n      securities = options.securities,\n      requestContentType = options.requestContentType,\n      responseContentType = options.responseContentType,\n      attachContentTypeForEmptyPayload = options.attachContentTypeForEmptyPayload; // Add securities, which are applicable\n\n  req = applySecurities({\n    request: req,\n    securities: securities,\n    operation: operation,\n    spec: spec\n  });\n\n  if (req.body || req.form || attachContentTypeForEmptyPayload) {\n    var _context, _context2;\n\n    // all following conditionals are Swagger2 only\n    if (requestContentType) {\n      req.headers['Content-Type'] = requestContentType;\n    } else if (Array.isArray(operation.consumes)) {\n      var _operation$consumes = _slicedToArray(operation.consumes, 1);\n\n      req.headers['Content-Type'] = _operation$consumes[0];\n    } else if (Array.isArray(spec.consumes)) {\n      var _spec$consumes = _slicedToArray(spec.consumes, 1);\n\n      req.headers['Content-Type'] = _spec$consumes[0];\n    } else if (operation.parameters && _filterInstanceProperty(_context = operation.parameters).call(_context, function (p) {\n      return p.type === 'file';\n    }).length) {\n      req.headers['Content-Type'] = 'multipart/form-data';\n    } else if (operation.parameters && _filterInstanceProperty(_context2 = operation.parameters).call(_context2, function (p) {\n      return p.in === 'formData';\n    }).length) {\n      req.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n    }\n  } else if (requestContentType) {\n    var _context3, _context4;\n\n    var isBodyParamPresent = operation.parameters && _filterInstanceProperty(_context3 = operation.parameters).call(_context3, function (p) {\n      return p.in === 'body';\n    }).length > 0;\n    var isFormDataParamPresent = operation.parameters && _filterInstanceProperty(_context4 = operation.parameters).call(_context4, function (p) {\n      return p.in === 'formData';\n    }).length > 0;\n\n    if (isBodyParamPresent || isFormDataParamPresent) {\n      req.headers['Content-Type'] = requestContentType;\n    }\n  }\n\n  if (!responseContentType && Array.isArray(operation.produces) && operation.produces.length > 0) {\n    req.headers.accept = operation.produces.join(', ');\n  }\n\n  return req;\n} // Add security values, to operations - that declare their need on them\n\nexport function applySecurities(_ref) {\n  var request = _ref.request,\n      _ref$securities = _ref.securities,\n      securities = _ref$securities === void 0 ? {} : _ref$securities,\n      _ref$operation = _ref.operation,\n      operation = _ref$operation === void 0 ? {} : _ref$operation,\n      spec = _ref.spec;\n\n  var result = _objectSpread({}, request);\n\n  var _securities$authorize = securities.authorized,\n      authorized = _securities$authorize === void 0 ? {} : _securities$authorize,\n      _securities$specSecur = securities.specSecurity,\n      specSecurity = _securities$specSecur === void 0 ? [] : _securities$specSecur;\n  var security = operation.security || specSecurity;\n  var isAuthorized = authorized && !!_Object$keys(authorized).length;\n  var securityDef = spec.securityDefinitions;\n  result.headers = result.headers || {};\n  result.query = result.query || {};\n\n  if (!_Object$keys(securities).length || !isAuthorized || !security || Array.isArray(operation.security) && !operation.security.length) {\n    return request;\n  }\n\n  security.forEach(function (securityObj) {\n    _Object$keys(securityObj).forEach(function (key) {\n      var auth = authorized[key];\n\n      if (!auth) {\n        return;\n      }\n\n      var token = auth.token;\n      var value = auth.value || auth;\n      var schema = securityDef[key];\n      var type = schema.type;\n      var tokenName = schema['x-tokenName'] || 'access_token';\n      var oauthToken = token && token[tokenName];\n      var tokenType = token && token.token_type;\n\n      if (auth) {\n        if (type === 'apiKey') {\n          var inType = schema.in === 'query' ? 'query' : 'headers';\n          result[inType] = result[inType] || {};\n          result[inType][schema.name] = value;\n        } else if (type === 'basic') {\n          if (value.header) {\n            result.headers.authorization = value.header;\n          } else {\n            var _context5;\n\n            var username = value.username || '';\n            var password = value.password || '';\n            value.base64 = btoa(_concatInstanceProperty(_context5 = \"\".concat(username, \":\")).call(_context5, password));\n            result.headers.authorization = \"Basic \".concat(value.base64);\n          }\n        } else if (type === 'oauth2' && oauthToken) {\n          var _context6;\n\n          tokenType = !tokenType || tokenType.toLowerCase() === 'bearer' ? 'Bearer' : tokenType;\n          result.headers.authorization = _concatInstanceProperty(_context6 = \"\".concat(tokenType, \" \")).call(_context6, oauthToken);\n        }\n      }\n    });\n  });\n  return result;\n}", "import _slicedToArray from \"@babel/runtime-corejs3/helpers/slicedToArray\";\nimport _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime-corejs3/helpers/objectWithoutProperties\";\nvar _excluded = [\"http\", \"fetch\", \"spec\", \"operationId\", \"pathName\", \"method\", \"parameters\", \"securities\"];\nimport _Object$assign from \"@babel/runtime-corejs3/core-js-stable/object/assign\";\nimport _filterInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/filter\";\nimport _Object$keys from \"@babel/runtime-corejs3/core-js-stable/object/keys\";\nimport _JSON$stringify from \"@babel/runtime-corejs3/core-js-stable/json/stringify\";\nimport _concatInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/concat\";\nimport _mapInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/map\";\nimport _sliceInstanceProperty from \"@babel/runtime-corejs3/core-js-stable/instance/slice\";\nimport getIn from 'lodash/get';\nimport url from 'url';\nimport cookie from 'cookie';\nimport { isPlainObject } from 'is-plain-object';\nimport stockHttp, { mergeInQueryOrForm } from '../http/index.js';\nimport createError from '../specmap/lib/create-error.js';\nimport SWAGGER2_PARAMETER_BUILDERS from './swagger2/parameter-builders.js';\nimport * as OAS3_PARAMETER_BUILDERS from './oas3/parameter-builders.js';\nimport oas3BuildRequest from './oas3/build-request.js';\nimport swagger2BuildRequest from './swagger2/build-request.js';\nimport { getOperationRaw, legacyIdFromPathMethod, isOAS3 } from '../helpers.js';\n\nvar arrayOrEmpty = function arrayOrEmpty(ar) {\n  return Array.isArray(ar) ? ar : [];\n};\n\nvar OperationNotFoundError = createError('OperationNotFoundError', function cb(message, extra, oriError) {\n  this.originalError = oriError;\n\n  _Object$assign(this, extra || {});\n});\n\nvar findParametersWithName = function findParametersWithName(name, parameters) {\n  return _filterInstanceProperty(parameters).call(parameters, function (p) {\n    return p.name === name;\n  });\n}; // removes parameters that have duplicate 'in' and 'name' properties\n\n\nvar deduplicateParameters = function deduplicateParameters(parameters) {\n  var paramsMap = {};\n  parameters.forEach(function (p) {\n    if (!paramsMap[p.in]) {\n      paramsMap[p.in] = {};\n    }\n\n    paramsMap[p.in][p.name] = p;\n  });\n  var dedupedParameters = [];\n\n  _Object$keys(paramsMap).forEach(function (i) {\n    _Object$keys(paramsMap[i]).forEach(function (p) {\n      dedupedParameters.push(paramsMap[i][p]);\n    });\n  });\n\n  return dedupedParameters;\n}; // For stubbing in tests\n\n\nexport var self = {\n  buildRequest: buildRequest\n}; // Execute request, with the given operationId and parameters\n// pathName/method or operationId is optional\n\nexport function execute(_ref) {\n  var userHttp = _ref.http,\n      fetch = _ref.fetch,\n      spec = _ref.spec,\n      operationId = _ref.operationId,\n      pathName = _ref.pathName,\n      method = _ref.method,\n      parameters = _ref.parameters,\n      securities = _ref.securities,\n      extras = _objectWithoutProperties(_ref, _excluded);\n\n  // Provide default fetch implementation\n  var http = userHttp || fetch || stockHttp; // Default to _our_ http\n\n  if (pathName && method && !operationId) {\n    operationId = legacyIdFromPathMethod(pathName, method);\n  }\n\n  var request = self.buildRequest(_objectSpread({\n    spec: spec,\n    operationId: operationId,\n    parameters: parameters,\n    securities: securities,\n    http: http\n  }, extras));\n\n  if (request.body && (isPlainObject(request.body) || Array.isArray(request.body))) {\n    request.body = _JSON$stringify(request.body);\n  } // Build request and execute it\n\n\n  return http(request);\n} // Build a request, which can be handled by the `http.js` implementation.\n\nexport function buildRequest(options) {\n  var _context, _context2;\n\n  var spec = options.spec,\n      operationId = options.operationId,\n      responseContentType = options.responseContentType,\n      scheme = options.scheme,\n      requestInterceptor = options.requestInterceptor,\n      responseInterceptor = options.responseInterceptor,\n      contextUrl = options.contextUrl,\n      userFetch = options.userFetch,\n      server = options.server,\n      serverVariables = options.serverVariables,\n      http = options.http,\n      signal = options.signal;\n  var parameters = options.parameters,\n      parameterBuilders = options.parameterBuilders;\n  var specIsOAS3 = isOAS3(spec);\n\n  if (!parameterBuilders) {\n    // user did not provide custom parameter builders\n    if (specIsOAS3) {\n      parameterBuilders = OAS3_PARAMETER_BUILDERS;\n    } else {\n      parameterBuilders = SWAGGER2_PARAMETER_BUILDERS;\n    }\n  } // Set credentials with 'http.withCredentials' value\n\n\n  var credentials = http && http.withCredentials ? 'include' : 'same-origin'; // Base Template\n\n  var req = {\n    url: '',\n    credentials: credentials,\n    headers: {},\n    cookies: {}\n  };\n\n  if (signal) {\n    req.signal = signal;\n  }\n\n  if (requestInterceptor) {\n    req.requestInterceptor = requestInterceptor;\n  }\n\n  if (responseInterceptor) {\n    req.responseInterceptor = responseInterceptor;\n  }\n\n  if (userFetch) {\n    req.userFetch = userFetch;\n  }\n\n  var operationRaw = getOperationRaw(spec, operationId);\n\n  if (!operationRaw) {\n    throw new OperationNotFoundError(\"Operation \".concat(operationId, \" not found\"));\n  }\n\n  var _operationRaw$operati = operationRaw.operation,\n      operation = _operationRaw$operati === void 0 ? {} : _operationRaw$operati,\n      method = operationRaw.method,\n      pathName = operationRaw.pathName;\n  req.url += baseUrl({\n    spec: spec,\n    scheme: scheme,\n    contextUrl: contextUrl,\n    server: server,\n    serverVariables: serverVariables,\n    pathName: pathName,\n    method: method\n  }); // Mostly for testing\n\n  if (!operationId) {\n    // Not removing req.cookies causes testing issues and would\n    // change our interface, so we're always sure to remove it.\n    // See the same statement lower down in this function for\n    // more context.\n    delete req.cookies;\n    return req;\n  }\n\n  req.url += pathName; // Have not yet replaced the path parameters\n\n  req.method = \"\".concat(method).toUpperCase();\n  parameters = parameters || {};\n  var path = spec.paths[pathName] || {};\n\n  if (responseContentType) {\n    req.headers.accept = responseContentType;\n  }\n\n  var combinedParameters = deduplicateParameters(_concatInstanceProperty(_context = _concatInstanceProperty(_context2 = []).call(_context2, arrayOrEmpty(operation.parameters)) // operation parameters\n  ).call(_context, arrayOrEmpty(path.parameters))); // path parameters\n  // REVIEW: OAS3: have any key names or parameter shapes changed?\n  // Any new features that need to be plugged in here?\n  // Add values to request\n\n  combinedParameters.forEach(function (parameter) {\n    var builder = parameterBuilders[parameter.in];\n    var value;\n\n    if (parameter.in === 'body' && parameter.schema && parameter.schema.properties) {\n      value = parameters;\n    }\n\n    value = parameter && parameter.name && parameters[parameter.name];\n\n    if (typeof value === 'undefined') {\n      var _context3;\n\n      // check for `name-in` formatted key\n      value = parameter && parameter.name && parameters[_concatInstanceProperty(_context3 = \"\".concat(parameter.in, \".\")).call(_context3, parameter.name)];\n    } else if (findParametersWithName(parameter.name, combinedParameters).length > 1) {\n      var _context4;\n\n      // value came from `parameters[parameter.name]`\n      // check to see if this is an ambiguous parameter\n      // eslint-disable-next-line no-console\n      console.warn(_concatInstanceProperty(_context4 = \"Parameter '\".concat(parameter.name, \"' is ambiguous because the defined spec has more than one parameter with the name: '\")).call(_context4, parameter.name, \"' and the passed-in parameter values did not define an 'in' value.\"));\n    }\n\n    if (value === null) {\n      return;\n    }\n\n    if (typeof parameter.default !== 'undefined' && typeof value === 'undefined') {\n      value = parameter.default;\n    }\n\n    if (typeof value === 'undefined' && parameter.required && !parameter.allowEmptyValue) {\n      throw new Error(\"Required parameter \".concat(parameter.name, \" is not provided\"));\n    }\n\n    if (specIsOAS3 && parameter.schema && parameter.schema.type === 'object' && typeof value === 'string') {\n      try {\n        value = JSON.parse(value);\n      } catch (e) {\n        throw new Error('Could not parse object parameter value string as JSON');\n      }\n    }\n\n    if (builder) {\n      builder({\n        req: req,\n        parameter: parameter,\n        value: value,\n        operation: operation,\n        spec: spec\n      });\n    }\n  }); // Do version-specific tasks, then return those results.\n\n  var versionSpecificOptions = _objectSpread(_objectSpread({}, options), {}, {\n    operation: operation\n  });\n\n  if (specIsOAS3) {\n    req = oas3BuildRequest(versionSpecificOptions, req);\n  } else {\n    // If not OAS3, then treat as Swagger2.\n    req = swagger2BuildRequest(versionSpecificOptions, req);\n  } // If the cookie convenience object exists in our request,\n  // serialize its content and then delete the cookie object.\n\n\n  if (req.cookies && _Object$keys(req.cookies).length) {\n    var cookieString = _Object$keys(req.cookies).reduce(function (prev, cookieName) {\n      var cookieValue = req.cookies[cookieName];\n      var prefix = prev ? '&' : '';\n      var stringified = cookie.serialize(cookieName, cookieValue);\n      return prev + prefix + stringified;\n    }, '');\n\n    req.headers.Cookie = cookieString;\n  }\n\n  if (req.cookies) {\n    // even if no cookies were defined, we need to remove\n    // the cookies key from our request, or many many legacy\n    // tests will break.\n    delete req.cookies;\n  } // Will add the query object into the URL, if it exists\n  // ... will also create a FormData instance, if multipart/form-data (eg: a file)\n\n\n  mergeInQueryOrForm(req);\n  return req;\n}\n\nvar stripNonAlpha = function stripNonAlpha(str) {\n  return str ? str.replace(/\\W/g, '') : null;\n}; // be careful when modifying this! it is a publicly-exposed method.\n\n\nexport function baseUrl(obj) {\n  var specIsOAS3 = isOAS3(obj.spec);\n  return specIsOAS3 ? oas3BaseUrl(obj) : swagger2BaseUrl(obj);\n}\n\nfunction oas3BaseUrl(_ref2) {\n  var spec = _ref2.spec,\n      pathName = _ref2.pathName,\n      method = _ref2.method,\n      server = _ref2.server,\n      contextUrl = _ref2.contextUrl,\n      _ref2$serverVariables = _ref2.serverVariables,\n      serverVariables = _ref2$serverVariables === void 0 ? {} : _ref2$serverVariables;\n  var servers = getIn(spec, ['paths', pathName, (method || '').toLowerCase(), 'servers']) || getIn(spec, ['paths', pathName, 'servers']) || getIn(spec, ['servers']);\n  var selectedServerUrl = '';\n  var selectedServerObj = null;\n\n  if (server && servers && servers.length) {\n    var serverUrls = _mapInstanceProperty(servers).call(servers, function (srv) {\n      return srv.url;\n    });\n\n    if (serverUrls.indexOf(server) > -1) {\n      selectedServerUrl = server;\n      selectedServerObj = servers[serverUrls.indexOf(server)];\n    }\n  }\n\n  if (!selectedServerUrl && servers && servers.length) {\n    // default to the first server if we don't have one by now\n    selectedServerUrl = servers[0].url; // eslint-disable-line semi\n\n    var _servers = _slicedToArray(servers, 1);\n\n    selectedServerObj = _servers[0];\n  }\n\n  if (selectedServerUrl.indexOf('{') > -1) {\n    // do variable substitution\n    var varNames = getVariableTemplateNames(selectedServerUrl);\n    varNames.forEach(function (vari) {\n      if (selectedServerObj.variables && selectedServerObj.variables[vari]) {\n        // variable is defined in server\n        var variableDefinition = selectedServerObj.variables[vari];\n        var variableValue = serverVariables[vari] || variableDefinition.default;\n        var re = new RegExp(\"{\".concat(vari, \"}\"), 'g');\n        selectedServerUrl = selectedServerUrl.replace(re, variableValue);\n      }\n    });\n  }\n\n  return buildOas3UrlWithContext(selectedServerUrl, contextUrl);\n}\n\nfunction buildOas3UrlWithContext() {\n  var ourUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var contextUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  // relative server url should be resolved against contextUrl\n  var parsedUrl = ourUrl && contextUrl ? url.parse(url.resolve(contextUrl, ourUrl)) : url.parse(ourUrl);\n  var parsedContextUrl = url.parse(contextUrl);\n  var computedScheme = stripNonAlpha(parsedUrl.protocol) || stripNonAlpha(parsedContextUrl.protocol) || '';\n  var computedHost = parsedUrl.host || parsedContextUrl.host;\n  var computedPath = parsedUrl.pathname || '';\n  var res;\n\n  if (computedScheme && computedHost) {\n    var _context5;\n\n    res = _concatInstanceProperty(_context5 = \"\".concat(computedScheme, \"://\")).call(_context5, computedHost + computedPath); // If last character is '/', trim it off\n  } else {\n    res = computedPath;\n  }\n\n  return res[res.length - 1] === '/' ? _sliceInstanceProperty(res).call(res, 0, -1) : res;\n}\n\nfunction getVariableTemplateNames(str) {\n  var results = [];\n  var re = /{([^}]+)}/g;\n  var text; // eslint-disable-next-line no-cond-assign\n\n  while (text = re.exec(str)) {\n    results.push(text[1]);\n  }\n\n  return results;\n} // Compose the baseUrl ( scheme + host + basePath )\n\n\nfunction swagger2BaseUrl(_ref3) {\n  var spec = _ref3.spec,\n      scheme = _ref3.scheme,\n      _ref3$contextUrl = _ref3.contextUrl,\n      contextUrl = _ref3$contextUrl === void 0 ? '' : _ref3$contextUrl;\n  var parsedContextUrl = url.parse(contextUrl);\n  var firstSchemeInSpec = Array.isArray(spec.schemes) ? spec.schemes[0] : null;\n  var computedScheme = scheme || firstSchemeInSpec || stripNonAlpha(parsedContextUrl.protocol) || 'http';\n  var computedHost = spec.host || parsedContextUrl.host || '';\n  var computedPath = spec.basePath || '';\n  var res;\n\n  if (computedScheme && computedHost) {\n    var _context6;\n\n    // we have what we need for an absolute URL\n    res = _concatInstanceProperty(_context6 = \"\".concat(computedScheme, \"://\")).call(_context6, computedHost + computedPath);\n  } else {\n    // if not, a relative URL will have to do\n    res = computedPath;\n  } // If last character is '/', trim it off\n\n\n  return res[res.length - 1] === '/' ? _sliceInstanceProperty(res).call(res, 0, -1) : res;\n}", "import _objectSpread from \"@babel/runtime-corejs3/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime-corejs3/helpers/asyncToGenerator\";\nimport _regeneratorRuntime from \"@babel/runtime-corejs3/regenerator\";\n// The subtree resolver is a higher-level interface that allows you to\n// get the same result that you would from `Swagger.resolve`, but focuses on\n// a subtree of your object.\n//\n// It makes several assumptions that allow you to think less about what resolve,\n// specmap, and normalizeSwagger are doing: if this is not suitable for you,\n// you can emulate `resolveSubtree`'s behavior by talking to the traditional\n// resolver directly.\n//\n// By providing a top-level `obj` and a `path` to resolve within, the subtree\n// at `path` will be resolved and normalized in the context of your top-level\n// `obj`. You'll get the resolved subtree you're interest in as a return value\n// (or, you can use `returnEntireTree` to get everything back).\n//\n// This is useful for cases where resolving your entire object is unnecessary\n// and/or non-performant; we use this interface for lazily resolving operations\n// and models in Swagger-UI, which allows us to handle larger definitions.\n//\n// It's likely that Swagger-Client will rely entirely on lazy resolving in\n// future versions.\n//\n// TODO: move the remarks above into project documentation\nimport get from 'lodash/get';\nimport resolve from '../resolver.js';\nimport { normalizeSwagger } from '../helpers.js';\nexport default function resolveSubtree(_x, _x2) {\n  return _resolveSubtree.apply(this, arguments);\n}\n\nfunction _resolveSubtree() {\n  _resolveSubtree = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(obj, path) {\n    var opts,\n        returnEntireTree,\n        baseDoc,\n        requestInterceptor,\n        responseInterceptor,\n        parameterMacro,\n        modelPropertyMacro,\n        useCircularStructures,\n        resolveOptions,\n        _normalizeSwagger,\n        normalized,\n        result,\n        _args = arguments;\n\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            opts = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};\n            returnEntireTree = opts.returnEntireTree, baseDoc = opts.baseDoc, requestInterceptor = opts.requestInterceptor, responseInterceptor = opts.responseInterceptor, parameterMacro = opts.parameterMacro, modelPropertyMacro = opts.modelPropertyMacro, useCircularStructures = opts.useCircularStructures;\n            resolveOptions = {\n              pathDiscriminator: path,\n              baseDoc: baseDoc,\n              requestInterceptor: requestInterceptor,\n              responseInterceptor: responseInterceptor,\n              parameterMacro: parameterMacro,\n              modelPropertyMacro: modelPropertyMacro,\n              useCircularStructures: useCircularStructures\n            };\n            _normalizeSwagger = normalizeSwagger({\n              spec: obj\n            }), normalized = _normalizeSwagger.spec;\n            _context.next = 6;\n            return resolve(_objectSpread(_objectSpread({}, resolveOptions), {}, {\n              spec: normalized,\n              allowMetaPatches: true,\n              skipNormalization: true\n            }));\n\n          case 6:\n            result = _context.sent;\n\n            if (!returnEntireTree && Array.isArray(path) && path.length) {\n              result.spec = get(result.spec, path) || null;\n            }\n\n            return _context.abrupt(\"return\", result);\n\n          case 9:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return _resolveSubtree.apply(this, arguments);\n}", "import resolve from \"swagger-client/es/resolver\"\nimport { execute, buildRequest } from \"swagger-client/es/execute\"\nimport Http, { makeHttp, serializeRes } from \"swagger-client/es/http\"\nimport resolveSubtree from \"swagger-client/es/subtree-resolver\"\nimport { opId } from \"swagger-client/es/helpers\"\nimport { loaded } from \"./configs-wrap-actions\"\n\nexport default function({ configs, getConfigs }) {\n  return {\n    fn: {\n      fetch: makeHttp(Http, configs.preFetch, configs.postFetch),\n      buildRequest,\n      execute,\n      resolve,\n      resolveSubtree: (obj, path, opts, ...rest) => {\n        if(opts === undefined) {\n          const freshConfigs = getConfigs()\n          opts = {\n            modelPropertyMacro: freshConfigs.modelPropertyMacro,\n            parameterMacro: freshConfigs.parameterMacro,\n            requestInterceptor: freshConfigs.requestInterceptor,\n            responseInterceptor: freshConfigs.responseInterceptor\n          }\n        }\n\n        return resolveSubtree(obj, path, opts, ...rest)\n      },\n      serializeRes,\n      opId\n    },\n    statePlugins: {\n      configs: {\n        wrapActions: {\n          loaded,\n        }\n      }\n    },\n  }\n}\n", "export default \"---\\nurl: \\\"https://petstore.swagger.io/v2/swagger.json\\\"\\ndom_id: \\\"#swagger-ui\\\"\\nvalidatorUrl: \\\"https://validator.swagger.io/validator\\\"\\n\";", "import yamlConfig from \"root/swagger-config.yaml\"\nimport { parseYamlConfig } from \"./helpers\"\nimport * as actions from \"./actions\"\nimport * as specActions from \"./spec-actions\"\nimport * as selectors from \"./selectors\"\nimport reducers from \"./reducers\"\n\nconst specSelectors = {\n  getLocalConfig: () => {\n    return parseYamlConfig(yamlConfig)\n  }\n}\n\n\nexport default function configsPlugin() {\n\n  return {\n    statePlugins: {\n      spec: {\n        actions: specActions,\n        selectors: specSelectors,\n      },\n      configs: {\n        reducers,\n        actions,\n        selectors,\n      }\n    }\n  }\n}\n", "var arraySome = require('./_arraySome'),\n    baseIteratee = require('./_baseIteratee'),\n    baseSome = require('./_baseSome'),\n    isArray = require('./isArray'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n *   { 'user': 'barney', 'active': true },\n *   { 'user': 'fred',   'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n  var func = isArray(collection) ? arraySome : baseSome;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n", "var _Reflect$get = require(\"@babel/runtime-corejs3/core-js/reflect/get\");\n\nvar _Object$getOwnPropertyDescriptor = require(\"@babel/runtime-corejs3/core-js/object/get-own-property-descriptor\");\n\nvar superPropBase = require(\"./superPropBase.js\");\n\nfunction _get() {\n  if (typeof Reflect !== \"undefined\" && _Reflect$get) {\n    module.exports = _get = _Reflect$get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  } else {\n    module.exports = _get = function _get(target, property, receiver) {\n      var base = superPropBase(target, property);\n      if (!base) return;\n\n      var desc = _Object$getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(arguments.length < 3 ? target : receiver);\n      }\n\n      return desc.value;\n    }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  }\n\n  return _get.apply(this, arguments);\n}\n\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/stable/object/define-property\");", "module.exports = require(\"core-js-pure/stable/date/now\");", "var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n  return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n", "'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n", "'use strict'\n\nvar high = require('highlight.js/lib/core')\nvar fault = require('fault')\n\nexports.highlight = highlight\nexports.highlightAuto = highlightAuto\nexports.registerLanguage = registerLanguage\nexports.listLanguages = listLanguages\nexports.registerAlias = registerAlias\n\nEmitter.prototype.addText = text\nEmitter.prototype.addKeyword = addKeyword\nEmitter.prototype.addSublanguage = addSublanguage\nEmitter.prototype.openNode = open\nEmitter.prototype.closeNode = close\nEmitter.prototype.closeAllNodes = noop\nEmitter.prototype.finalize = noop\nEmitter.prototype.toHTML = toHtmlNoop\n\nvar defaultPrefix = 'hljs-'\n\n// Highlighting `value` in the language `name`.\nfunction highlight(name, value, options) {\n  var before = high.configure({})\n  var settings = options || {}\n  var prefix = settings.prefix\n  var result\n\n  if (typeof name !== 'string') {\n    throw fault('Expected `string` for name, got `%s`', name)\n  }\n\n  if (!high.getLanguage(name)) {\n    throw fault('Unknown language: `%s` is not registered', name)\n  }\n\n  if (typeof value !== 'string') {\n    throw fault('Expected `string` for value, got `%s`', value)\n  }\n\n  if (prefix === null || prefix === undefined) {\n    prefix = defaultPrefix\n  }\n\n  high.configure({__emitter: Emitter, classPrefix: prefix})\n\n  result = high.highlight(value, {language: name, ignoreIllegals: true})\n\n  high.configure(before || {})\n\n  /* istanbul ignore if - Highlight.js seems to use this (currently) for broken\n   * grammars, so let’s keep it in there just to be sure. */\n  if (result.errorRaised) {\n    throw result.errorRaised\n  }\n\n  return {\n    relevance: result.relevance,\n    language: result.language,\n    value: result.emitter.rootNode.children\n  }\n}\n\nfunction highlightAuto(value, options) {\n  var settings = options || {}\n  var subset = settings.subset || high.listLanguages()\n  var prefix = settings.prefix\n  var length = subset.length\n  var index = -1\n  var result\n  var secondBest\n  var current\n  var name\n\n  if (prefix === null || prefix === undefined) {\n    prefix = defaultPrefix\n  }\n\n  if (typeof value !== 'string') {\n    throw fault('Expected `string` for value, got `%s`', value)\n  }\n\n  secondBest = {relevance: 0, language: null, value: []}\n  result = {relevance: 0, language: null, value: []}\n\n  while (++index < length) {\n    name = subset[index]\n\n    if (!high.getLanguage(name)) {\n      continue\n    }\n\n    current = highlight(name, value, options)\n    current.language = name\n\n    if (current.relevance > secondBest.relevance) {\n      secondBest = current\n    }\n\n    if (current.relevance > result.relevance) {\n      secondBest = result\n      result = current\n    }\n  }\n\n  if (secondBest.language) {\n    result.secondBest = secondBest\n  }\n\n  return result\n}\n\n// Register a language.\nfunction registerLanguage(name, syntax) {\n  high.registerLanguage(name, syntax)\n}\n\n// Get a list of all registered languages.\nfunction listLanguages() {\n  return high.listLanguages()\n}\n\n// Register more aliases for an already registered language.\nfunction registerAlias(name, alias) {\n  var map = name\n  var key\n\n  if (alias) {\n    map = {}\n    map[name] = alias\n  }\n\n  for (key in map) {\n    high.registerAliases(map[key], {languageName: key})\n  }\n}\n\nfunction Emitter(options) {\n  this.options = options\n  this.rootNode = {children: []}\n  this.stack = [this.rootNode]\n}\n\nfunction addKeyword(value, name) {\n  this.openNode(name)\n  this.addText(value)\n  this.closeNode()\n}\n\nfunction addSublanguage(other, name) {\n  var stack = this.stack\n  var current = stack[stack.length - 1]\n  var results = other.rootNode.children\n  var node = name\n    ? {\n        type: 'element',\n        tagName: 'span',\n        properties: {className: [name]},\n        children: results\n      }\n    : results\n\n  current.children = current.children.concat(node)\n}\n\nfunction text(value) {\n  var stack = this.stack\n  var current\n  var tail\n\n  if (value === '') return\n\n  current = stack[stack.length - 1]\n  tail = current.children[current.children.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += value\n  } else {\n    current.children.push({type: 'text', value: value})\n  }\n}\n\nfunction open(name) {\n  var stack = this.stack\n  var className = this.options.classPrefix + name\n  var current = stack[stack.length - 1]\n  var child = {\n    type: 'element',\n    tagName: 'span',\n    properties: {className: [className]},\n    children: []\n  }\n\n  current.children.push(child)\n  stack.push(child)\n}\n\nfunction close() {\n  this.stack.pop()\n}\n\nfunction toHtmlNoop() {\n  return ''\n}\n\nfunction noop() {}\n", "module.exports = require(\"core-js-pure/stable/url-search-params\");", "var toString = require('./toString');\n\n/**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\nfunction toLower(value) {\n  return toString(value).toLowerCase();\n}\n\nmodule.exports = toLower;\n", "\"use strict\";\n\nvar _require = require('./Component'),\n    DebounceInput = _require.DebounceInput;\n\nDebounceInput.DebounceInput = DebounceInput;\nmodule.exports = DebounceInput;", "var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _toArray(arr) {\n  return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\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 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/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\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 SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\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 || !SPECIES_SUPPORT;\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, 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        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n", "var 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", "var 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", "var 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", "var 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  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\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 IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-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 arraySlice = require('../internals/array-slice');\nvar redefine = require('../internals/redefine');\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/define-well-known-symbol');\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';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar $stringify = getBuiltIn('JSON', 'stringify');\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 StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\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 setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? 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} : 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, {}));\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 getOwnPropertySymbols(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 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      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\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  redefine(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($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    nativeDefineProperty(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: 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  // `Symbol.for` method\n  // https://tc39.es/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = $toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.es/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\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  // `Object.getOwnPropertySymbols` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\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  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\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 $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (isCallable($replacer)) value = call($replacer, this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return apply($stringify, null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!SymbolPrototype[TO_PRIMITIVE]) {\n  var valueOf = SymbolPrototype.valueOf;\n  // eslint-disable-next-line no-unused-vars -- required for .length\n  redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n    // TODO: improve hint logic\n    return call(valueOf, this);\n  });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n", "var 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", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\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-simple');\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", "var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n", "var 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 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 fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\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 = IteratorPrototype == undefined || 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  redefine(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "var 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", "var 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", "var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n", "var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n", "var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n", "var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n", "var parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n", "'use strict';\nvar global = require('../internals/global');\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 = global.Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    for (var list = [], i = 0; 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\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", "var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\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();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\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", "var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n", "var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n", "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (action) {\n  return action && action.type === '@@redux/INIT' ? 'initialState argument passed to createStore' : 'previous state received by the reducer';\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=getStateName.js.map", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignMergeValue;\n", "var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n", "var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n", "var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n", "var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n", "var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n", "var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nmodule.exports = safeGet;\n", "var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n", "var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n", "var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n", "var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n", "function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nfunction _iterableToArray(iter) {\n  if (typeof _Symbol !== \"undefined\" && _getIteratorMethod(iter) != null || iter[\"@@iterator\"] != null) return _Array$from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/features/array/from\");", "var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n", "'use strict';\nvar global = require('../internals/global');\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 = global.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    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\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", "var 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", "var 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", "var 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  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\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", "var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n  if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "require('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/for-each');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.forEach;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n", "var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\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  } return array;\n};\n\nvar merge = function (array, left, right, 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  } return array;\n};\n\nmodule.exports = mergeSort;\n", "var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n", "var 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", "var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\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", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n", "/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayReduce;\n", "var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n", "var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n", "var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n", "var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n", "var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n", "var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n", "var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n", "var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  var hwm = options.highWaterMark;\n  var readableHwm = options.readableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  this._readableState = new ReadableState(options, this);\n\n  // legacy\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  this.push(null);\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      stream.emit('error', er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        stream.emit('error', new Error('stream.push() after EOF'));\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n    }\n  }\n\n  return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    stream.emit('data', chunk);\n    stream.read(0);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes.  This is to work around cases where hwm=0,\n// such as the repl.  Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  this._readableState.decoder = new StringDecoder(enc);\n  this._readableState.encoding = enc;\n  return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = true;\n    n = 0;\n  } else {\n    state.length -= n;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n\n  // emit 'readable' now to make sure it gets picked up.\n  emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  debug('emit readable');\n  stream.emit('readable');\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    pna.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  var len = state.length;\n  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;else len = state.length;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  // If the user pushes more data while we're writing to dest then we'll end up\n  // in ondata again. However, we only want to increase awaitDrain once because\n  // dest will only emit one 'drain' event for the multiple writes.\n  // => Introduce a guard on increasing awaitDrain.\n  var increasedAwaitDrain = false;\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    increasedAwaitDrain = false;\n    var ret = dest.write(chunk);\n    if (false === ret && !increasedAwaitDrain) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', src._readableState.awaitDrain);\n        src._readableState.awaitDrain++;\n        increasedAwaitDrain = true;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function () {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = { hasUnpiped: false };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, unpipeInfo);\n    }return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this, unpipeInfo);\n\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n\n  if (ev === 'data') {\n    // Start flowing on next tick if stream isn't explicitly paused\n    if (this._readableState.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    var state = this._readableState;\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.emittedReadable = false;\n      if (!state.reading) {\n        pna.nextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this);\n      }\n    }\n  }\n\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    state.flowing = true;\n    resume(this, state);\n  }\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    pna.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  if (!state.reading) {\n    debug('resume read 0');\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  state.awaitDrain = 0;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (false !== this._readableState.flowing) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function (method) {\n        return function () {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._readableState.highWaterMark;\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = fromListPartial(n, state.buffer, state.decoder);\n  }\n\n  return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n  var ret;\n  if (n < list.head.data.length) {\n    // slice is the same for buffers and strings\n    ret = list.head.data.slice(0, n);\n    list.head.data = list.head.data.slice(n);\n  } else if (n === list.head.data.length) {\n    // first chunk is a perfect match\n    ret = list.shift();\n  } else {\n    // result spans more than one buffer\n    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n  }\n  return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n  var p = list.head;\n  var c = 1;\n  var ret = p.data;\n  n -= ret.length;\n  while (p = p.next) {\n    var str = p.data;\n    var nb = n > str.length ? str.length : n;\n    if (nb === str.length) ret += str;else ret += str.slice(0, n);\n    n -= nb;\n    if (n === 0) {\n      if (nb === str.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = str.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n  var ret = Buffer.allocUnsafe(n);\n  var p = list.head;\n  var c = 1;\n  p.data.copy(ret);\n  n -= p.data.length;\n  while (p = p.next) {\n    var buf = p.data;\n    var nb = n > buf.length ? buf.length : n;\n    buf.copy(ret, ret.length - n, 0, nb);\n    n -= nb;\n    if (n === 0) {\n      if (nb === buf.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = buf.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n\n  // If we get here before consuming all the bytes, then that is a\n  // bug in node.  Should never happen.\n  if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    pna.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n  }\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}", "module.exports = require('events').EventEmitter;\n", "'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n      pna.nextTick(emitErrorNT, this, err);\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      pna.nextTick(emitErrorNT, _this, err);\n      if (_this._writableState) {\n        _this._writableState.errorEmitted = true;\n      }\n    } else if (cb) {\n      cb(err);\n    }\n  });\n\n  return this;\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) {\n    return this.emit('error', new Error('write callback called multiple times'));\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n\n  cb(er);\n\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n\n  Duplex.call(this, options);\n\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function') {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  var _this2 = this;\n\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n    _this2.emit('close');\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}", "module.exports = require(\"core-js-pure/features/object/get-own-property-descriptor\");", "module.exports = require(\"core-js-pure/features/object/set-prototype-of\");", "module.exports = require(\"core-js-pure/features/object/create\");", "var _Reflect$construct = require(\"@babel/runtime-corejs3/core-js/reflect/construct\");\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n  if (_Reflect$construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var parent = require('../../es/map');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar fails = require('../internals/fails');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar defineProperty = require('../internals/object-define-property').f;\nvar forEach = require('../internals/array-iteration').forEach;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\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 = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var exported = {};\n  var Constructor;\n\n  if (!DESCRIPTORS || !isCallable(NativeConstructor)\n    || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))\n  ) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else {\n    Constructor = wrapper(function (target, iterable) {\n      setInternalState(anInstance(target, Prototype), {\n        type: CONSTRUCTOR_NAME,\n        collection: new NativeConstructor()\n      });\n      if (iterable != undefined) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {\n      var IS_ADDER = KEY == 'add' || KEY == 'set';\n      if (KEY in NativePrototype && !(IS_WEAK && KEY == 'clear')) {\n        createNonEnumerableProperty(Prototype, KEY, function (a, b) {\n          var collection = getInternalState(this).collection;\n          if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n          var result = collection[KEY](a === 0 ? 0 : a, b);\n          return IS_ADDER ? this : result;\n        });\n      }\n    });\n\n    IS_WEAK || defineProperty(Prototype, 'size', {\n      configurable: true,\n      get: function () {\n        return getInternalState(this).collection.size;\n      }\n    });\n  }\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, forced: true }, exported);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n", "var 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 getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\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  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar anObject = require('../internals/an-object');\n\nvar TypeError = global.TypeError;\n\n// `Map.prototype.upsert` method\n// https://github.com/thumbsupep/proposal-upsert\nmodule.exports = function upsert(key, updateFn /* , insertFn */) {\n  var map = anObject(this);\n  var get = aCallable(map.get);\n  var has = aCallable(map.has);\n  var set = aCallable(map.set);\n  var insertFn = arguments.length > 2 ? arguments[2] : undefined;\n  var value;\n  if (!isCallable(updateFn) && !isCallable(insertFn)) {\n    throw TypeError('At least one callback required');\n  }\n  if (call(has, map, key)) {\n    value = call(get, map, key);\n    if (isCallable(updateFn)) {\n      value = updateFn(value);\n      call(set, map, key, value);\n    }\n  } else if (isCallable(insertFn)) {\n    value = insertFn();\n    call(set, map, key, value);\n  } return value;\n};\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n  0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n  0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n  0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n  0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n  0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n  0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n  0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n  0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n  0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n  0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n  0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n  0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n  0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n  0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n  0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n  this._a = 0x6a09e667\n  this._b = 0xbb67ae85\n  this._c = 0x3c6ef372\n  this._d = 0xa54ff53a\n  this._e = 0x510e527f\n  this._f = 0x9b05688c\n  this._g = 0x1f83d9ab\n  this._h = 0x5be0cd19\n\n  return this\n}\n\nfunction ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n  return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n  return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n  return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n  return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n  var f = this._f | 0\n  var g = this._g | 0\n  var h = this._h | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n  for (var j = 0; j < 64; ++j) {\n    var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n    var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n    h = g\n    g = f\n    f = e\n    e = (d + T1) | 0\n    d = c\n    c = b\n    b = a\n    a = (T1 + T2) | 0\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n  this._f = (f + this._f) | 0\n  this._g = (g + this._g) | 0\n  this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(32)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n  H.writeInt32BE(this._h, 28)\n\n  return H\n}\n\nmodule.exports = Sha256\n", "var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n  this._ah = 0x6a09e667\n  this._bh = 0xbb67ae85\n  this._ch = 0x3c6ef372\n  this._dh = 0xa54ff53a\n  this._eh = 0x510e527f\n  this._fh = 0x9b05688c\n  this._gh = 0x1f83d9ab\n  this._hh = 0x5be0cd19\n\n  this._al = 0xf3bcc908\n  this._bl = 0x84caa73b\n  this._cl = 0xfe94f82b\n  this._dl = 0x5f1d36f1\n  this._el = 0xade682d1\n  this._fl = 0x2b3e6c1f\n  this._gl = 0xfb41bd6b\n  this._hl = 0x137e2179\n\n  return this\n}\n\nfunction Ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n  return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n  return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n  return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n  var W = this._w\n\n  var ah = this._ah | 0\n  var bh = this._bh | 0\n  var ch = this._ch | 0\n  var dh = this._dh | 0\n  var eh = this._eh | 0\n  var fh = this._fh | 0\n  var gh = this._gh | 0\n  var hh = this._hh | 0\n\n  var al = this._al | 0\n  var bl = this._bl | 0\n  var cl = this._cl | 0\n  var dl = this._dl | 0\n  var el = this._el | 0\n  var fl = this._fl | 0\n  var gl = this._gl | 0\n  var hl = this._hl | 0\n\n  for (var i = 0; i < 32; i += 2) {\n    W[i] = M.readInt32BE(i * 4)\n    W[i + 1] = M.readInt32BE(i * 4 + 4)\n  }\n  for (; i < 160; i += 2) {\n    var xh = W[i - 15 * 2]\n    var xl = W[i - 15 * 2 + 1]\n    var gamma0 = Gamma0(xh, xl)\n    var gamma0l = Gamma0l(xl, xh)\n\n    xh = W[i - 2 * 2]\n    xl = W[i - 2 * 2 + 1]\n    var gamma1 = Gamma1(xh, xl)\n    var gamma1l = Gamma1l(xl, xh)\n\n    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n    var Wi7h = W[i - 7 * 2]\n    var Wi7l = W[i - 7 * 2 + 1]\n\n    var Wi16h = W[i - 16 * 2]\n    var Wi16l = W[i - 16 * 2 + 1]\n\n    var Wil = (gamma0l + Wi7l) | 0\n    var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n    Wil = (Wil + gamma1l) | 0\n    Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n    Wil = (Wil + Wi16l) | 0\n    Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n    W[i] = Wih\n    W[i + 1] = Wil\n  }\n\n  for (var j = 0; j < 160; j += 2) {\n    Wih = W[j]\n    Wil = W[j + 1]\n\n    var majh = maj(ah, bh, ch)\n    var majl = maj(al, bl, cl)\n\n    var sigma0h = sigma0(ah, al)\n    var sigma0l = sigma0(al, ah)\n    var sigma1h = sigma1(eh, el)\n    var sigma1l = sigma1(el, eh)\n\n    // t1 = h + sigma1 + ch + K[j] + W[j]\n    var Kih = K[j]\n    var Kil = K[j + 1]\n\n    var chh = Ch(eh, fh, gh)\n    var chl = Ch(el, fl, gl)\n\n    var t1l = (hl + sigma1l) | 0\n    var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n    t1l = (t1l + chl) | 0\n    t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n    t1l = (t1l + Kil) | 0\n    t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n    t1l = (t1l + Wil) | 0\n    t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n    // t2 = sigma0 + maj\n    var t2l = (sigma0l + majl) | 0\n    var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n    hh = gh\n    hl = gl\n    gh = fh\n    gl = fl\n    fh = eh\n    fl = el\n    el = (dl + t1l) | 0\n    eh = (dh + t1h + getCarry(el, dl)) | 0\n    dh = ch\n    dl = cl\n    ch = bh\n    cl = bl\n    bh = ah\n    bl = al\n    al = (t1l + t2l) | 0\n    ah = (t1h + t2h + getCarry(al, t1l)) | 0\n  }\n\n  this._al = (this._al + al) | 0\n  this._bl = (this._bl + bl) | 0\n  this._cl = (this._cl + cl) | 0\n  this._dl = (this._dl + dl) | 0\n  this._el = (this._el + el) | 0\n  this._fl = (this._fl + fl) | 0\n  this._gl = (this._gl + gl) | 0\n  this._hl = (this._hl + hl) | 0\n\n  this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n  this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n  this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n  this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n  this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n  this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n  this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n  this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(64)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n  writeInt64BE(this._gh, this._gl, 48)\n  writeInt64BE(this._hh, this._hl, 56)\n\n  return H\n}\n\nmodule.exports = Sha512\n", "module.exports = require(\"core-js-pure/features/object/keys\");", "module.exports = require(\"core-js-pure/features/object/get-own-property-symbols\");", "var 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", "var parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\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 clearErrorStack = require('../internals/clear-error-stack');\nvar installErrorCause = require('../internals/install-error-cause');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Error = global.Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n  var options = arguments.length > 2 ? arguments[2] : undefined;\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  if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n  installErrorCause(that, options);\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 }, {\n  AggregateError: $AggregateError\n});\n", "var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n", "var global = require('../internals/global');\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 IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  location = global.location;\n} catch (error) { /* empty */ }\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 listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.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(fn) {\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(isCallable(fn) ? fn : Function(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 = listener;\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    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    location && location.protocol !== 'file:' &&\n    !fails(post)\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, 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", "var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n", "var 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 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');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\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 aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\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 }, {\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", "var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\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// `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 length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || 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", "var arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n", "var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n", "function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':');\n      var key = parts.shift().trim();\n      if (key) {\n        var value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = 'statusText' in options ? options.statusText : 'OK';\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        resolve(new Response(body, options));\n      };\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.onabort = function() {\n        reject(new exports.DOMException('Aborted', 'AbortError'));\n      };\n\n      xhr.open(request.method, request.url, true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob';\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value);\n      });\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!self.fetch) {\n    self.fetch = fetch;\n    self.Headers = Headers;\n    self.Request = Request;\n    self.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n", "'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var i = 0; i < string.length; ++i) {\n        var c = string.charCodeAt(i);\n\n        if (\n            c === 0x2D // -\n            || c === 0x2E // .\n            || c === 0x5F // _\n            || c === 0x7E // ~\n            || (c >= 0x30 && c <= 0x39) // 0-9\n            || (c >= 0x41 && c <= 0x5A) // a-z\n            || (c >= 0x61 && c <= 0x7A) // A-Z\n            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n\n        if (c < 0x80) {\n            out = out + hexTable[c];\n            continue;\n        }\n\n        if (c < 0x800) {\n            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        i += 1;\n        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n        /* eslint operator-linebreak: [2, \"before\"] */\n        out += hexTable[0xF0 | (c >> 18)]\n            + hexTable[0x80 | ((c >> 12) & 0x3F)]\n            + hexTable[0x80 | ((c >> 6) & 0x3F)]\n            + hexTable[0x80 | (c & 0x3F)];\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n", "var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\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', 'http://a');\n  var searchParams = url.searchParams;\n  var result = '';\n  url.pathname = 'c%20d';\n  searchParams.forEach(function (value, key) {\n    searchParams['delete']('b');\n    result += key + value;\n  });\n  return (IS_PURE && !url.toJSON)\n    || !searchParams.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || searchParams.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !searchParams[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('http://тест').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#б').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n", "module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwcHgiICBoZWlnaHQ9IjIwMHB4IiAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGNsYXNzPSJsZHMtcm9sbGluZyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IGJhY2tncm91bmQtcG9zaXRpb246IGluaXRpYWwgaW5pdGlhbDsgYmFja2dyb3VuZC1yZXBlYXQ6IGluaXRpYWwgaW5pdGlhbDsiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIGZpbGw9Im5vbmUiIG5nLWF0dHItc3Ryb2tlPSJ7e2NvbmZpZy5jb2xvcn19IiBuZy1hdHRyLXN0cm9rZS13aWR0aD0ie3tjb25maWcud2lkdGh9fSIgbmctYXR0ci1yPSJ7e2NvbmZpZy5yYWRpdXN9fSIgbmctYXR0ci1zdHJva2UtZGFzaGFycmF5PSJ7e2NvbmZpZy5kYXNoYXJyYXl9fSIgc3Ryb2tlPSIjNTU1NTU1IiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgY2FsY01vZGU9ImxpbmVhciIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxcyIgYmVnaW49IjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvY2lyY2xlPjwvc3ZnPgo=\"", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.combineReducers = undefined;\n\nvar _combineReducers2 = require('./combineReducers');\n\nvar _combineReducers3 = _interopRequireDefault(_combineReducers2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.combineReducers = _combineReducers3.default;\n//# sourceMappingURL=index.js.map", "var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^([^:]+):/gm;\nvar relativeFirstCharacters = [\".\", \"/\"];\nfunction isRelativeUrlWithoutProtocol(url) {\n    return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\nfunction sanitizeUrl(url) {\n    if (!url) {\n        return \"about:blank\";\n    }\n    var sanitizedUrl = url.replace(ctrlCharactersRegex, \"\").trim();\n    if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n        return sanitizedUrl;\n    }\n    var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n    if (!urlSchemeParseResults) {\n        return sanitizedUrl;\n    }\n    var urlScheme = urlSchemeParseResults[0];\n    if (invalidProtocolRegex.test(urlScheme)) {\n        return \"about:blank\";\n    }\n    return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n", "var capitalize = require('./capitalize'),\n    createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n", "var createFind = require('./_createFind'),\n    findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': true },\n *   { 'user': 'fred',    'age': 40, 'active': false },\n *   { 'user': 'pebbles', 'age': 1,  'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n", "var escapeForXML = require('./escapeForXML');\nvar Stream = require('stream').Stream;\n\nvar DEFAULT_INDENT = '    ';\n\nfunction xml(input, options) {\n\n    if (typeof options !== 'object') {\n        options = {\n            indent: options\n        };\n    }\n\n    var stream      = options.stream ? new Stream() : null,\n        output      = \"\",\n        interrupted = false,\n        indent      = !options.indent ? ''\n                        : options.indent === true ? DEFAULT_INDENT\n                            : options.indent,\n        instant     = true;\n\n\n    function delay (func) {\n        if (!instant) {\n            func();\n        } else {\n            process.nextTick(func);\n        }\n    }\n\n    function append (interrupt, out) {\n        if (out !== undefined) {\n            output += out;\n        }\n        if (interrupt && !interrupted) {\n            stream = stream || new Stream();\n            interrupted = true;\n        }\n        if (interrupt && interrupted) {\n            var data = output;\n            delay(function () { stream.emit('data', data) });\n            output = \"\";\n        }\n    }\n\n    function add (value, last) {\n        format(append, resolve(value, indent, indent ? 1 : 0), last);\n    }\n\n    function end() {\n        if (stream) {\n            var data = output;\n            delay(function () {\n              stream.emit('data', data);\n              stream.emit('end');\n              stream.readable = false;\n              stream.emit('close');\n            });\n        }\n    }\n\n    function addXmlDeclaration(declaration) {\n        var encoding = declaration.encoding || 'UTF-8',\n            attr =  { version: '1.0', encoding: encoding };\n\n        if (declaration.standalone) {\n            attr.standalone = declaration.standalone\n        }\n\n        add({'?xml': { _attr: attr } });\n        output = output.replace('/>', '?>');\n    }\n\n    // disable delay delayed\n    delay(function () { instant = false });\n\n    if (options.declaration) {\n        addXmlDeclaration(options.declaration);\n    }\n\n    if (input && input.forEach) {\n        input.forEach(function (value, i) {\n            var last;\n            if (i + 1 === input.length)\n                last = end;\n            add(value, last);\n        });\n    } else {\n        add(input, end);\n    }\n\n    if (stream) {\n        stream.readable = true;\n        return stream;\n    }\n    return output;\n}\n\nfunction element (/*input, …*/) {\n    var input = Array.prototype.slice.call(arguments),\n        self = {\n            _elem:  resolve(input)\n        };\n\n    self.push = function (input) {\n        if (!this.append) {\n            throw new Error(\"not assigned to a parent!\");\n        }\n        var that = this;\n        var indent = this._elem.indent;\n        format(this.append, resolve(\n            input, indent, this._elem.icount + (indent ? 1 : 0)),\n            function () { that.append(true) });\n    };\n\n    self.close = function (input) {\n        if (input !== undefined) {\n            this.push(input);\n        }\n        if (this.end) {\n            this.end();\n        }\n    };\n\n    return self;\n}\n\nfunction create_indent(character, count) {\n    return (new Array(count || 0).join(character || ''))\n}\n\nfunction resolve(data, indent, indent_count) {\n    indent_count = indent_count || 0;\n    var indent_spaces = create_indent(indent, indent_count);\n    var name;\n    var values = data;\n    var interrupt = false;\n\n    if (typeof data === 'object') {\n        var keys = Object.keys(data);\n        name = keys[0];\n        values = data[name];\n\n        if (values && values._elem) {\n            values._elem.name = name;\n            values._elem.icount = indent_count;\n            values._elem.indent = indent;\n            values._elem.indents = indent_spaces;\n            values._elem.interrupt = values;\n            return values._elem;\n        }\n    }\n\n    var attributes = [],\n        content = [];\n\n    var isStringContent;\n\n    function get_attributes(obj){\n        var keys = Object.keys(obj);\n        keys.forEach(function(key){\n            attributes.push(attribute(key, obj[key]));\n        });\n    }\n\n    switch(typeof values) {\n        case 'object':\n            if (values === null) break;\n\n            if (values._attr) {\n                get_attributes(values._attr);\n            }\n\n            if (values._cdata) {\n                content.push(\n                    ('<![CDATA[' + values._cdata).replace(/\\]\\]>/g, ']]]]><![CDATA[>') + ']]>'\n                );\n            }\n\n            if (values.forEach) {\n                isStringContent = false;\n                content.push('');\n                values.forEach(function(value) {\n                    if (typeof value == 'object') {\n                        var _name = Object.keys(value)[0];\n\n                        if (_name == '_attr') {\n                            get_attributes(value._attr);\n                        } else {\n                            content.push(resolve(\n                                value, indent, indent_count + 1));\n                        }\n                    } else {\n                        //string\n                        content.pop();\n                        isStringContent=true;\n                        content.push(escapeForXML(value));\n                    }\n\n                });\n                if (!isStringContent) {\n                    content.push('');\n                }\n            }\n        break;\n\n        default:\n            //string\n            content.push(escapeForXML(values));\n\n    }\n\n    return {\n        name:       name,\n        interrupt:  interrupt,\n        attributes: attributes,\n        content:    content,\n        icount:     indent_count,\n        indents:    indent_spaces,\n        indent:     indent\n    };\n}\n\nfunction format(append, elem, end) {\n\n    if (typeof elem != 'object') {\n        return append(false, elem);\n    }\n\n    var len = elem.interrupt ? 1 : elem.content.length;\n\n    function proceed () {\n        while (elem.content.length) {\n            var value = elem.content.shift();\n\n            if (value === undefined) continue;\n            if (interrupt(value)) return;\n\n            format(append, value);\n        }\n\n        append(false, (len > 1 ? elem.indents : '')\n            + (elem.name ? '</' + elem.name + '>' : '')\n            + (elem.indent && !end ? '\\n' : ''));\n\n        if (end) {\n            end();\n        }\n    }\n\n    function interrupt(value) {\n       if (value.interrupt) {\n           value.interrupt.append = append;\n           value.interrupt.end = proceed;\n           value.interrupt = false;\n           append(true);\n           return true;\n       }\n       return false;\n    }\n\n    append(false, elem.indents\n        + (elem.name ? '<' + elem.name : '')\n        + (elem.attributes.length ? ' ' + elem.attributes.join(' ') : '')\n        + (len ? (elem.name ? '>' : '') : (elem.name ? '/>' : ''))\n        + (elem.indent && len > 1 ? '\\n' : ''));\n\n    if (!len) {\n        return append(false, elem.indent ? '\\n' : '');\n    }\n\n    if (!interrupt(elem)) {\n        proceed();\n    }\n}\n\nfunction attribute(key, value) {\n    return key + '=' + '\"' + escapeForXML(value) + '\"';\n}\n\nmodule.exports = xml;\nmodule.exports.element = module.exports.Element = element;\n", "var _Map = require(\"@babel/runtime-corejs3/core-js/map\");\n\nvar _Object$create = require(\"@babel/runtime-corejs3/core-js/object/create\");\n\nvar getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof _Map === \"function\" ? new _Map() : undefined;\n\n  module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return construct(Class, arguments, getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = _Object$create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return setPrototypeOf(Wrapper, Class);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/stable/instance/find-index\");", "/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n;(function(root, factory) {\n\t// https://github.com/umdjs/umd/blob/master/returnExports.js\n\tif (typeof exports == 'object') {\n\t\t// For Node.js.\n\t\tmodule.exports = factory(root);\n\t} else if (typeof define == 'function' && define.amd) {\n\t\t// For AMD. Register as an anonymous module.\n\t\tdefine([], factory.bind(root, root));\n\t} else {\n\t\t// For browser globals (not exposing the function separately).\n\t\tfactory(root);\n\t}\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn root.CSS.escape;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\treturn cssEscape;\n\n}));\n", "var exports = module.exports = function SHA (algorithm) {\n  algorithm = algorithm.toLowerCase()\n\n  var Algorithm = exports[algorithm]\n  if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n  return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n", "var arrayReduce = require('./_arrayReduce'),\n    baseEach = require('./_baseEach'),\n    baseIteratee = require('./_baseIteratee'),\n    baseReduce = require('./_baseReduce'),\n    isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n *   return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n *   (result[value] || (result[value] = [])).push(key);\n *   return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n  var func = isArray(collection) ? arrayReduce : baseReduce,\n      initAccum = arguments.length < 3;\n\n  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n", "var baseGetTag = require('./_baseGetTag'),\n    isArray = require('./isArray'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n", "var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n", "var arrayMap = require('./_arrayMap'),\n    baseClone = require('./_baseClone'),\n    baseUnset = require('./_baseUnset'),\n    castPath = require('./_castPath'),\n    copyObject = require('./_copyObject'),\n    customOmitClone = require('./_customOmitClone'),\n    flatRest = require('./_flatRest'),\n    getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nmodule.exports = omit;\n", "module.exports = require(\"core-js-pure/stable/instance/repeat\");", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://www.json.org\nCategory: common, protocols\n*/\n\nfunction json(hljs) {\n  const LITERALS = {\n    literal: 'true false null'\n  };\n  const ALLOWED_COMMENTS = [\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE\n  ];\n  const TYPES = [\n    hljs.QUOTE_STRING_MODE,\n    hljs.C_NUMBER_MODE\n  ];\n  const VALUE_CONTAINER = {\n    end: ',',\n    endsWithParent: true,\n    excludeEnd: true,\n    contains: TYPES,\n    keywords: LITERALS\n  };\n  const OBJECT = {\n    begin: /\\{/,\n    end: /\\}/,\n    contains: [\n      {\n        className: 'attr',\n        begin: /\"/,\n        end: /\"/,\n        contains: [hljs.BACKSLASH_ESCAPE],\n        illegal: '\\\\n'\n      },\n      hljs.inherit(VALUE_CONTAINER, {\n        begin: /:/\n      })\n    ].concat(ALLOWED_COMMENTS),\n    illegal: '\\\\S'\n  };\n  const ARRAY = {\n    begin: '\\\\[',\n    end: '\\\\]',\n    contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\n    illegal: '\\\\S'\n  };\n  TYPES.push(OBJECT, ARRAY);\n  ALLOWED_COMMENTS.forEach(function(rule) {\n    TYPES.push(rule);\n  });\n  return {\n    name: 'JSON',\n    contains: TYPES,\n    keywords: LITERALS,\n    illegal: '\\\\S'\n  };\n}\n\nmodule.exports = json;\n", "const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n  \"as\", // for exports\n  \"in\",\n  \"of\",\n  \"if\",\n  \"for\",\n  \"while\",\n  \"finally\",\n  \"var\",\n  \"new\",\n  \"function\",\n  \"do\",\n  \"return\",\n  \"void\",\n  \"else\",\n  \"break\",\n  \"catch\",\n  \"instanceof\",\n  \"with\",\n  \"throw\",\n  \"case\",\n  \"default\",\n  \"try\",\n  \"switch\",\n  \"continue\",\n  \"typeof\",\n  \"delete\",\n  \"let\",\n  \"yield\",\n  \"const\",\n  \"class\",\n  // JS handles these with a special rule\n  // \"get\",\n  // \"set\",\n  \"debugger\",\n  \"async\",\n  \"await\",\n  \"static\",\n  \"import\",\n  \"from\",\n  \"export\",\n  \"extends\"\n];\nconst LITERALS = [\n  \"true\",\n  \"false\",\n  \"null\",\n  \"undefined\",\n  \"NaN\",\n  \"Infinity\"\n];\n\nconst TYPES = [\n  \"Intl\",\n  \"DataView\",\n  \"Number\",\n  \"Math\",\n  \"Date\",\n  \"String\",\n  \"RegExp\",\n  \"Object\",\n  \"Function\",\n  \"Boolean\",\n  \"Error\",\n  \"Symbol\",\n  \"Set\",\n  \"Map\",\n  \"WeakSet\",\n  \"WeakMap\",\n  \"Proxy\",\n  \"Reflect\",\n  \"JSON\",\n  \"Promise\",\n  \"Float64Array\",\n  \"Int16Array\",\n  \"Int32Array\",\n  \"Int8Array\",\n  \"Uint16Array\",\n  \"Uint32Array\",\n  \"Float32Array\",\n  \"Array\",\n  \"Uint8Array\",\n  \"Uint8ClampedArray\",\n  \"ArrayBuffer\",\n  \"BigInt64Array\",\n  \"BigUint64Array\",\n  \"BigInt\"\n];\n\nconst ERROR_TYPES = [\n  \"EvalError\",\n  \"InternalError\",\n  \"RangeError\",\n  \"ReferenceError\",\n  \"SyntaxError\",\n  \"TypeError\",\n  \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n  \"setInterval\",\n  \"setTimeout\",\n  \"clearInterval\",\n  \"clearTimeout\",\n\n  \"require\",\n  \"exports\",\n\n  \"eval\",\n  \"isFinite\",\n  \"isNaN\",\n  \"parseFloat\",\n  \"parseInt\",\n  \"decodeURI\",\n  \"decodeURIComponent\",\n  \"encodeURI\",\n  \"encodeURIComponent\",\n  \"escape\",\n  \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n  \"arguments\",\n  \"this\",\n  \"super\",\n  \"console\",\n  \"window\",\n  \"document\",\n  \"localStorage\",\n  \"module\",\n  \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n  BUILT_IN_GLOBALS,\n  BUILT_IN_VARIABLES,\n  TYPES,\n  ERROR_TYPES\n);\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n  return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n  /**\n   * Takes a string like \"<Booger\" and checks to see\n   * if we can find a matching \"</Booger\" later in the\n   * content.\n   * @param {RegExpMatchArray} match\n   * @param {{after:number}} param1\n   */\n  const hasClosingTag = (match, { after }) => {\n    const tag = \"</\" + match[0].slice(1);\n    const pos = match.input.indexOf(tag, after);\n    return pos !== -1;\n  };\n\n  const IDENT_RE$1 = IDENT_RE;\n  const FRAGMENT = {\n    begin: '<>',\n    end: '</>'\n  };\n  const XML_TAG = {\n    begin: /<[A-Za-z0-9\\\\._:-]+/,\n    end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n    /**\n     * @param {RegExpMatchArray} match\n     * @param {CallbackResponse} response\n     */\n    isTrulyOpeningTag: (match, response) => {\n      const afterMatchIndex = match[0].length + match.index;\n      const nextChar = match.input[afterMatchIndex];\n      // nested type?\n      // HTML should not include another raw `<` inside a tag\n      // But a type might: `<Array<Array<number>>`, etc.\n      if (nextChar === \"<\") {\n        response.ignoreMatch();\n        return;\n      }\n      // <something>\n      // This is now either a tag or a type.\n      if (nextChar === \">\") {\n        // if we cannot find a matching closing tag, then we\n        // will ignore it\n        if (!hasClosingTag(match, { after: afterMatchIndex })) {\n          response.ignoreMatch();\n        }\n      }\n    }\n  };\n  const KEYWORDS$1 = {\n    $pattern: IDENT_RE,\n    keyword: KEYWORDS,\n    literal: LITERALS,\n    built_in: BUILT_INS\n  };\n\n  // https://tc39.es/ecma262/#sec-literals-numeric-literals\n  const decimalDigits = '[0-9](_?[0-9])*';\n  const frac = `\\\\.(${decimalDigits})`;\n  // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n  // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n  const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n  const NUMBER = {\n    className: 'number',\n    variants: [\n      // DecimalLiteral\n      { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n        `[eE][+-]?(${decimalDigits})\\\\b` },\n      { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n      // DecimalBigIntegerLiteral\n      { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n      // NonDecimalIntegerLiteral\n      { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n      { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n      { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n      // LegacyOctalIntegerLiteral (does not include underscore separators)\n      // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n      { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n    ],\n    relevance: 0\n  };\n\n  const SUBST = {\n    className: 'subst',\n    begin: '\\\\$\\\\{',\n    end: '\\\\}',\n    keywords: KEYWORDS$1,\n    contains: [] // defined later\n  };\n  const HTML_TEMPLATE = {\n    begin: 'html`',\n    end: '',\n    starts: {\n      end: '`',\n      returnEnd: false,\n      contains: [\n        hljs.BACKSLASH_ESCAPE,\n        SUBST\n      ],\n      subLanguage: 'xml'\n    }\n  };\n  const CSS_TEMPLATE = {\n    begin: 'css`',\n    end: '',\n    starts: {\n      end: '`',\n      returnEnd: false,\n      contains: [\n        hljs.BACKSLASH_ESCAPE,\n        SUBST\n      ],\n      subLanguage: 'css'\n    }\n  };\n  const TEMPLATE_STRING = {\n    className: 'string',\n    begin: '`',\n    end: '`',\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      SUBST\n    ]\n  };\n  const JSDOC_COMMENT = hljs.COMMENT(\n    /\\/\\*\\*(?!\\/)/,\n    '\\\\*/',\n    {\n      relevance: 0,\n      contains: [\n        {\n          className: 'doctag',\n          begin: '@[A-Za-z]+',\n          contains: [\n            {\n              className: 'type',\n              begin: '\\\\{',\n              end: '\\\\}',\n              relevance: 0\n            },\n            {\n              className: 'variable',\n              begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n              endsParent: true,\n              relevance: 0\n            },\n            // eat spaces (not newlines) so we can find\n            // types or variables\n            {\n              begin: /(?=[^\\n])\\s/,\n              relevance: 0\n            }\n          ]\n        }\n      ]\n    }\n  );\n  const COMMENT = {\n    className: \"comment\",\n    variants: [\n      JSDOC_COMMENT,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.C_LINE_COMMENT_MODE\n    ]\n  };\n  const SUBST_INTERNALS = [\n    hljs.APOS_STRING_MODE,\n    hljs.QUOTE_STRING_MODE,\n    HTML_TEMPLATE,\n    CSS_TEMPLATE,\n    TEMPLATE_STRING,\n    NUMBER,\n    hljs.REGEXP_MODE\n  ];\n  SUBST.contains = SUBST_INTERNALS\n    .concat({\n      // we need to pair up {} inside our subst to prevent\n      // it from ending too early by matching another }\n      begin: /\\{/,\n      end: /\\}/,\n      keywords: KEYWORDS$1,\n      contains: [\n        \"self\"\n      ].concat(SUBST_INTERNALS)\n    });\n  const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n  const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n    // eat recursive parens in sub expressions\n    {\n      begin: /\\(/,\n      end: /\\)/,\n      keywords: KEYWORDS$1,\n      contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n    }\n  ]);\n  const PARAMS = {\n    className: 'params',\n    begin: /\\(/,\n    end: /\\)/,\n    excludeBegin: true,\n    excludeEnd: true,\n    keywords: KEYWORDS$1,\n    contains: PARAMS_CONTAINS\n  };\n\n  return {\n    name: 'Javascript',\n    aliases: ['js', 'jsx', 'mjs', 'cjs'],\n    keywords: KEYWORDS$1,\n    // this will be extended by TypeScript\n    exports: { PARAMS_CONTAINS },\n    illegal: /#(?![$_A-z])/,\n    contains: [\n      hljs.SHEBANG({\n        label: \"shebang\",\n        binary: \"node\",\n        relevance: 5\n      }),\n      {\n        label: \"use_strict\",\n        className: 'meta',\n        relevance: 10,\n        begin: /^\\s*['\"]use (strict|asm)['\"]/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      HTML_TEMPLATE,\n      CSS_TEMPLATE,\n      TEMPLATE_STRING,\n      COMMENT,\n      NUMBER,\n      { // object attr container\n        begin: concat(/[{,\\n]\\s*/,\n          // we need to look ahead to make sure that we actually have an\n          // attribute coming up so we don't steal a comma from a potential\n          // \"value\" container\n          //\n          // NOTE: this might not work how you think.  We don't actually always\n          // enter this mode and stay.  Instead it might merely match `,\n          // <comments up next>` and then immediately end after the , because it\n          // fails to find any actual attrs. But this still does the job because\n          // it prevents the value contain rule from grabbing this instead and\n          // prevening this rule from firing when we actually DO have keys.\n          lookahead(concat(\n            // we also need to allow for multiple possible comments inbetween\n            // the first key:value pairing\n            /(((\\/\\/.*$)|(\\/\\*(\\*[^/]|[^*])*\\*\\/))\\s*)*/,\n            IDENT_RE$1 + '\\\\s*:'))),\n        relevance: 0,\n        contains: [\n          {\n            className: 'attr',\n            begin: IDENT_RE$1 + lookahead('\\\\s*:'),\n            relevance: 0\n          }\n        ]\n      },\n      { // \"value\" container\n        begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n        keywords: 'return throw case',\n        contains: [\n          COMMENT,\n          hljs.REGEXP_MODE,\n          {\n            className: 'function',\n            // we have to count the parens to make sure we actually have the\n            // correct bounding ( ) before the =>.  There could be any number of\n            // sub-expressions inside also surrounded by parens.\n            begin: '(\\\\(' +\n            '[^()]*(\\\\(' +\n            '[^()]*(\\\\(' +\n            '[^()]*' +\n            '\\\\)[^()]*)*' +\n            '\\\\)[^()]*)*' +\n            '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>',\n            returnBegin: true,\n            end: '\\\\s*=>',\n            contains: [\n              {\n                className: 'params',\n                variants: [\n                  {\n                    begin: hljs.UNDERSCORE_IDENT_RE,\n                    relevance: 0\n                  },\n                  {\n                    className: null,\n                    begin: /\\(\\s*\\)/,\n                    skip: true\n                  },\n                  {\n                    begin: /\\(/,\n                    end: /\\)/,\n                    excludeBegin: true,\n                    excludeEnd: true,\n                    keywords: KEYWORDS$1,\n                    contains: PARAMS_CONTAINS\n                  }\n                ]\n              }\n            ]\n          },\n          { // could be a comma delimited list of params to a function call\n            begin: /,/, relevance: 0\n          },\n          {\n            className: '',\n            begin: /\\s/,\n            end: /\\s*/,\n            skip: true\n          },\n          { // JSX\n            variants: [\n              { begin: FRAGMENT.begin, end: FRAGMENT.end },\n              {\n                begin: XML_TAG.begin,\n                // we carefully check the opening tag to see if it truly\n                // is a tag and not a false positive\n                'on:begin': XML_TAG.isTrulyOpeningTag,\n                end: XML_TAG.end\n              }\n            ],\n            subLanguage: 'xml',\n            contains: [\n              {\n                begin: XML_TAG.begin,\n                end: XML_TAG.end,\n                skip: true,\n                contains: ['self']\n              }\n            ]\n          }\n        ],\n        relevance: 0\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function',\n        end: /[{;]/,\n        excludeEnd: true,\n        keywords: KEYWORDS$1,\n        contains: [\n          'self',\n          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n          PARAMS\n        ],\n        illegal: /%/\n      },\n      {\n        // prevent this from getting swallowed up by function\n        // since they appear \"function like\"\n        beginKeywords: \"while if switch catch for\"\n      },\n      {\n        className: 'function',\n        // we have to count the parens to make sure we actually have the correct\n        // bounding ( ).  There could be any number of sub-expressions inside\n        // also surrounded by parens.\n        begin: hljs.UNDERSCORE_IDENT_RE +\n          '\\\\(' + // first parens\n          '[^()]*(\\\\(' +\n            '[^()]*(\\\\(' +\n              '[^()]*' +\n            '\\\\)[^()]*)*' +\n          '\\\\)[^()]*)*' +\n          '\\\\)\\\\s*\\\\{', // end parens\n        returnBegin:true,\n        contains: [\n          PARAMS,\n          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n        ]\n      },\n      // hack: prevents detection of keywords in some circumstances\n      // .keyword()\n      // $keyword = x\n      {\n        variants: [\n          { begin: '\\\\.' + IDENT_RE$1 },\n          { begin: '\\\\$' + IDENT_RE$1 }\n        ],\n        relevance: 0\n      },\n      { // ES6 class\n        className: 'class',\n        beginKeywords: 'class',\n        end: /[{;=]/,\n        excludeEnd: true,\n        illegal: /[:\"[\\]]/,\n        contains: [\n          { beginKeywords: 'extends' },\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        begin: /\\b(?=constructor)/,\n        end: /[{;]/,\n        excludeEnd: true,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n          'self',\n          PARAMS\n        ]\n      },\n      {\n        begin: '(get|set)\\\\s+(?=' + IDENT_RE$1 + '\\\\()',\n        end: /\\{/,\n        keywords: \"get set\",\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n          { begin: /\\(\\)/ }, // eat to avoid empty params\n          PARAMS\n        ]\n      },\n      {\n        begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n      }\n    ]\n  };\n}\n\nmodule.exports = javascript;\n", "/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n  return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n  return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n  const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n  return joined;\n}\n\n/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n  // Element names can contain letters, digits, hyphens, underscores, and periods\n  const TAG_NAME_RE = concat(/[A-Z_]/, optional(/[A-Z0-9_.-]*:/), /[A-Z0-9_.-]*/);\n  const XML_IDENT_RE = /[A-Za-z0-9._:-]+/;\n  const XML_ENTITIES = {\n    className: 'symbol',\n    begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n  };\n  const XML_META_KEYWORDS = {\n    begin: /\\s/,\n    contains: [\n      {\n        className: 'meta-keyword',\n        begin: /#?[a-z_][a-z1-9_-]+/,\n        illegal: /\\n/\n      }\n    ]\n  };\n  const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n    begin: /\\(/,\n    end: /\\)/\n  });\n  const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, {\n    className: 'meta-string'\n  });\n  const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n    className: 'meta-string'\n  });\n  const TAG_INTERNALS = {\n    endsWithParent: true,\n    illegal: /</,\n    relevance: 0,\n    contains: [\n      {\n        className: 'attr',\n        begin: XML_IDENT_RE,\n        relevance: 0\n      },\n      {\n        begin: /=\\s*/,\n        relevance: 0,\n        contains: [\n          {\n            className: 'string',\n            endsParent: true,\n            variants: [\n              {\n                begin: /\"/,\n                end: /\"/,\n                contains: [ XML_ENTITIES ]\n              },\n              {\n                begin: /'/,\n                end: /'/,\n                contains: [ XML_ENTITIES ]\n              },\n              {\n                begin: /[^\\s\"'=<>`]+/\n              }\n            ]\n          }\n        ]\n      }\n    ]\n  };\n  return {\n    name: 'HTML, XML',\n    aliases: [\n      'html',\n      'xhtml',\n      'rss',\n      'atom',\n      'xjb',\n      'xsd',\n      'xsl',\n      'plist',\n      'wsf',\n      'svg'\n    ],\n    case_insensitive: true,\n    contains: [\n      {\n        className: 'meta',\n        begin: /<![a-z]/,\n        end: />/,\n        relevance: 10,\n        contains: [\n          XML_META_KEYWORDS,\n          QUOTE_META_STRING_MODE,\n          APOS_META_STRING_MODE,\n          XML_META_PAR_KEYWORDS,\n          {\n            begin: /\\[/,\n            end: /\\]/,\n            contains: [\n              {\n                className: 'meta',\n                begin: /<![a-z]/,\n                end: />/,\n                contains: [\n                  XML_META_KEYWORDS,\n                  XML_META_PAR_KEYWORDS,\n                  QUOTE_META_STRING_MODE,\n                  APOS_META_STRING_MODE\n                ]\n              }\n            ]\n          }\n        ]\n      },\n      hljs.COMMENT(\n        /<!--/,\n        /-->/,\n        {\n          relevance: 10\n        }\n      ),\n      {\n        begin: /<!\\[CDATA\\[/,\n        end: /\\]\\]>/,\n        relevance: 10\n      },\n      XML_ENTITIES,\n      {\n        className: 'meta',\n        begin: /<\\?xml/,\n        end: /\\?>/,\n        relevance: 10\n      },\n      {\n        className: 'tag',\n        /*\n        The lookahead pattern (?=...) ensures that 'begin' only matches\n        '<style' as a single word, followed by a whitespace or an\n        ending braket. The '$' is needed for the lexeme to be recognized\n        by hljs.subMode() that tests lexemes outside the stream.\n        */\n        begin: /<style(?=\\s|>)/,\n        end: />/,\n        keywords: {\n          name: 'style'\n        },\n        contains: [ TAG_INTERNALS ],\n        starts: {\n          end: /<\\/style>/,\n          returnEnd: true,\n          subLanguage: [\n            'css',\n            'xml'\n          ]\n        }\n      },\n      {\n        className: 'tag',\n        // See the comment in the <style tag about the lookahead pattern\n        begin: /<script(?=\\s|>)/,\n        end: />/,\n        keywords: {\n          name: 'script'\n        },\n        contains: [ TAG_INTERNALS ],\n        starts: {\n          end: /<\\/script>/,\n          returnEnd: true,\n          subLanguage: [\n            'javascript',\n            'handlebars',\n            'xml'\n          ]\n        }\n      },\n      // we need this for now for jSX\n      {\n        className: 'tag',\n        begin: /<>|<\\/>/\n      },\n      // open tag\n      {\n        className: 'tag',\n        begin: concat(\n          /</,\n          lookahead(concat(\n            TAG_NAME_RE,\n            // <tag/>\n            // <tag>\n            // <tag ...\n            either(/\\/>/, />/, /\\s/)\n          ))\n        ),\n        end: /\\/?>/,\n        contains: [\n          {\n            className: 'name',\n            begin: TAG_NAME_RE,\n            relevance: 0,\n            starts: TAG_INTERNALS\n          }\n        ]\n      },\n      // close tag\n      {\n        className: 'tag',\n        begin: concat(\n          /<\\//,\n          lookahead(concat(\n            TAG_NAME_RE, />/\n          ))\n        ),\n        contains: [\n          {\n            className: 'name',\n            begin: TAG_NAME_RE,\n            relevance: 0\n          },\n          {\n            begin: />/,\n            relevance: 0,\n            endsParent: true\n          }\n        ]\n      }\n    ]\n  };\n}\n\nmodule.exports = xml;\n", "/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/\nfunction yaml(hljs) {\n  var LITERALS = 'true false yes no null';\n\n  // YAML spec allows non-reserved URI characters in tags.\n  var URI_CHARACTERS = '[\\\\w#;/?:@&=+$,.~*\\'()[\\\\]]+';\n\n  // Define keys as starting with a word character\n  // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n  // ...and ending with a colon followed immediately by a space, tab or newline.\n  // The YAML spec allows for much more than this, but this covers most use-cases.\n  var KEY = {\n    className: 'attr',\n    variants: [\n      { begin: '\\\\w[\\\\w :\\\\/.-]*:(?=[ \\t]|$)' },\n      { begin: '\"\\\\w[\\\\w :\\\\/.-]*\":(?=[ \\t]|$)' }, // double quoted keys\n      { begin: '\\'\\\\w[\\\\w :\\\\/.-]*\\':(?=[ \\t]|$)' } // single quoted keys\n    ]\n  };\n\n  var TEMPLATE_VARIABLES = {\n    className: 'template-variable',\n    variants: [\n      { begin: /\\{\\{/, end: /\\}\\}/ }, // jinja templates Ansible\n      { begin: /%\\{/, end: /\\}/ } // Ruby i18n\n    ]\n  };\n  var STRING = {\n    className: 'string',\n    relevance: 0,\n    variants: [\n      { begin: /'/, end: /'/ },\n      { begin: /\"/, end: /\"/ },\n      { begin: /\\S+/ }\n    ],\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      TEMPLATE_VARIABLES\n    ]\n  };\n\n  // Strings inside of value containers (objects) can't contain braces,\n  // brackets, or commas\n  var CONTAINER_STRING = hljs.inherit(STRING, {\n    variants: [\n      { begin: /'/, end: /'/ },\n      { begin: /\"/, end: /\"/ },\n      { begin: /[^\\s,{}[\\]]+/ }\n    ]\n  });\n\n  var DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';\n  var TIME_RE = '([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?';\n  var FRACTION_RE = '(\\\\.[0-9]*)?';\n  var ZONE_RE = '([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';\n  var TIMESTAMP = {\n    className: 'number',\n    begin: '\\\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\\\b'\n  };\n\n  var VALUE_CONTAINER = {\n    end: ',',\n    endsWithParent: true,\n    excludeEnd: true,\n    keywords: LITERALS,\n    relevance: 0\n  };\n  var OBJECT = {\n    begin: /\\{/,\n    end: /\\}/,\n    contains: [VALUE_CONTAINER],\n    illegal: '\\\\n',\n    relevance: 0\n  };\n  var ARRAY = {\n    begin: '\\\\[',\n    end: '\\\\]',\n    contains: [VALUE_CONTAINER],\n    illegal: '\\\\n',\n    relevance: 0\n  };\n\n  var MODES = [\n    KEY,\n    {\n      className: 'meta',\n      begin: '^---\\\\s*$',\n      relevance: 10\n    },\n    { // multi line string\n      // Blocks start with a | or > followed by a newline\n      //\n      // Indentation of subsequent lines must be the same to\n      // be considered part of the block\n      className: 'string',\n      begin: '[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*'\n    },\n    { // Ruby/Rails erb\n      begin: '<%[%=-]?',\n      end: '[%-]?%>',\n      subLanguage: 'ruby',\n      excludeBegin: true,\n      excludeEnd: true,\n      relevance: 0\n    },\n    { // named tags\n      className: 'type',\n      begin: '!\\\\w+!' + URI_CHARACTERS\n    },\n    // https://yaml.org/spec/1.2/spec.html#id2784064\n    { // verbatim tags\n      className: 'type',\n      begin: '!<' + URI_CHARACTERS + \">\"\n    },\n    { // primary tags\n      className: 'type',\n      begin: '!' + URI_CHARACTERS\n    },\n    { // secondary tags\n      className: 'type',\n      begin: '!!' + URI_CHARACTERS\n    },\n    { // fragment id &ref\n      className: 'meta',\n      begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$'\n    },\n    { // fragment reference *ref\n      className: 'meta',\n      begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n    },\n    { // array listing\n      className: 'bullet',\n      // TODO: remove |$ hack when we have proper look-ahead support\n      begin: '-(?=[ ]|$)',\n      relevance: 0\n    },\n    hljs.HASH_COMMENT_MODE,\n    {\n      beginKeywords: LITERALS,\n      keywords: { literal: LITERALS }\n    },\n    TIMESTAMP,\n    // numbers are any valid C-style number that\n    // sit isolated from other words\n    {\n      className: 'number',\n      begin: hljs.C_NUMBER_RE + '\\\\b',\n      relevance: 0\n    },\n    OBJECT,\n    ARRAY,\n    STRING\n  ];\n\n  var VALUE_MODES = [...MODES];\n  VALUE_MODES.pop();\n  VALUE_MODES.push(CONTAINER_STRING);\n  VALUE_CONTAINER.contains = VALUE_MODES;\n\n  return {\n    name: 'YAML',\n    case_insensitive: true,\n    aliases: [ 'yml' ],\n    contains: MODES\n  };\n}\n\nmodule.exports = yaml;\n", "/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/*\nLanguage: HTTP\nDescription: HTTP request and response headers with automatic body highlighting\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nCategory: common, protocols\nWebsite: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview\n*/\n\nfunction http(hljs) {\n  const VERSION = 'HTTP/(2|1\\\\.[01])';\n  const HEADER_NAME = /[A-Za-z][A-Za-z0-9-]*/;\n  const HEADER = {\n    className: 'attribute',\n    begin: concat('^', HEADER_NAME, '(?=\\\\:\\\\s)'),\n    starts: {\n      contains: [\n        {\n          className: \"punctuation\",\n          begin: /: /,\n          relevance: 0,\n          starts: {\n            end: '$',\n            relevance: 0\n          }\n        }\n      ]\n    }\n  };\n  const HEADERS_AND_BODY = [\n    HEADER,\n    {\n      begin: '\\\\n\\\\n',\n      starts: { subLanguage: [], endsWithParent: true }\n    }\n  ];\n\n  return {\n    name: 'HTTP',\n    aliases: ['https'],\n    illegal: /\\S/,\n    contains: [\n      // response\n      {\n        begin: '^(?=' + VERSION + \" \\\\d{3})\",\n        end: /$/,\n        contains: [\n          {\n            className: \"meta\",\n            begin: VERSION\n          },\n          {\n            className: 'number', begin: '\\\\b\\\\d{3}\\\\b'\n          }\n        ],\n        starts: {\n          end: /\\b\\B/,\n          illegal: /\\S/,\n          contains: HEADERS_AND_BODY\n        }\n      },\n      // request\n      {\n        begin: '(?=^[A-Z]+ (.*?) ' + VERSION + '$)',\n        end: /$/,\n        contains: [\n          {\n            className: 'string',\n            begin: ' ',\n            end: ' ',\n            excludeBegin: true,\n            excludeEnd: true\n          },\n          {\n            className: \"meta\",\n            begin: VERSION\n          },\n          {\n            className: 'keyword',\n            begin: '[A-Z]+'\n          }\n        ],\n        starts: {\n          end: /\\b\\B/,\n          illegal: /\\S/,\n          contains: HEADERS_AND_BODY\n        }\n      },\n      // to allow headers to work even without a preamble\n      hljs.inherit(HEADER, {\n        relevance: 0\n      })\n    ]\n  };\n}\n\nmodule.exports = http;\n", "/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nWebsite: https://www.gnu.org/software/bash/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction bash(hljs) {\n  const VAR = {};\n  const BRACED_VAR = {\n    begin: /\\$\\{/,\n    end:/\\}/,\n    contains: [\n      \"self\",\n      {\n        begin: /:-/,\n        contains: [ VAR ]\n      } // default values\n    ]\n  };\n  Object.assign(VAR,{\n    className: 'variable',\n    variants: [\n      {begin: concat(/\\$[\\w\\d#@][\\w\\d_]*/,\n        // negative look-ahead tries to avoid matching patterns that are not\n        // Perl at all like $ident$, @ident@, etc.\n        `(?![\\\\w\\\\d])(?![$])`) },\n      BRACED_VAR\n    ]\n  });\n\n  const SUBST = {\n    className: 'subst',\n    begin: /\\$\\(/, end: /\\)/,\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n  const HERE_DOC = {\n    begin: /<<-?\\s*(?=\\w+)/,\n    starts: {\n      contains: [\n        hljs.END_SAME_AS_BEGIN({\n          begin: /(\\w+)/,\n          end: /(\\w+)/,\n          className: 'string'\n        })\n      ]\n    }\n  };\n  const QUOTE_STRING = {\n    className: 'string',\n    begin: /\"/, end: /\"/,\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      VAR,\n      SUBST\n    ]\n  };\n  SUBST.contains.push(QUOTE_STRING);\n  const ESCAPED_QUOTE = {\n    className: '',\n    begin: /\\\\\"/\n\n  };\n  const APOS_STRING = {\n    className: 'string',\n    begin: /'/, end: /'/\n  };\n  const ARITHMETIC = {\n    begin: /\\$\\(\\(/,\n    end: /\\)\\)/,\n    contains: [\n      { begin: /\\d+#[0-9a-f]+/, className: \"number\" },\n      hljs.NUMBER_MODE,\n      VAR\n    ]\n  };\n  const SH_LIKE_SHELLS = [\n    \"fish\",\n    \"bash\",\n    \"zsh\",\n    \"sh\",\n    \"csh\",\n    \"ksh\",\n    \"tcsh\",\n    \"dash\",\n    \"scsh\",\n  ];\n  const KNOWN_SHEBANG = hljs.SHEBANG({\n    binary: `(${SH_LIKE_SHELLS.join(\"|\")})`,\n    relevance: 10\n  });\n  const FUNCTION = {\n    className: 'function',\n    begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n    returnBegin: true,\n    contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\\w[\\w\\d_]*/})],\n    relevance: 0\n  };\n\n  return {\n    name: 'Bash',\n    aliases: ['sh', 'zsh'],\n    keywords: {\n      $pattern: /\\b[a-z._-]+\\b/,\n      keyword:\n        'if then else elif fi for while in do done case esac function',\n      literal:\n        'true false',\n      built_in:\n        // Shell built-ins\n        // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n        'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +\n        'trap umask unset ' +\n        // Bash built-ins\n        'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +\n        'read readarray source type typeset ulimit unalias ' +\n        // Shell modifiers\n        'set shopt ' +\n        // Zsh built-ins\n        'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +\n        'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +\n        'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +\n        'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +\n        'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +\n        'zpty zregexparse zsocket zstyle ztcp'\n    },\n    contains: [\n      KNOWN_SHEBANG, // to catch known shells and boost relevancy\n      hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang\n      FUNCTION,\n      ARITHMETIC,\n      hljs.HASH_COMMENT_MODE,\n      HERE_DOC,\n      QUOTE_STRING,\n      ESCAPED_QUOTE,\n      APOS_STRING,\n      VAR\n    ]\n  };\n}\n\nmodule.exports = bash;\n", "/*\nLanguage: PowerShell\nDescription: PowerShell is a task-based command-line shell and scripting language built on .NET.\nAuthor: David Mohundro <david@mohundro.com>\nContributors: Nicholas Blumhardt <nblumhardt@nblumhardt.com>, Victor Zhou <OiCMudkips@users.noreply.github.com>, Nicolas Le Gall <contact@nlegall.fr>\nWebsite: https://docs.microsoft.com/en-us/powershell/\n*/\n\nfunction powershell(hljs) {\n  const TYPES = [\n    \"string\",\n    \"char\",\n    \"byte\",\n    \"int\",\n    \"long\",\n    \"bool\",\n    \"decimal\",\n    \"single\",\n    \"double\",\n    \"DateTime\",\n    \"xml\",\n    \"array\",\n    \"hashtable\",\n    \"void\"\n  ];\n\n  // https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands\n  const VALID_VERBS =\n    'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|' +\n    'Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|' +\n    'Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|' +\n    'Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|' +\n    'ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|' +\n    'Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|' +\n    'Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|' +\n    'Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|' +\n    'Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|' +\n    'Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|' +\n    'Unprotect|Use|ForEach|Sort|Tee|Where';\n\n  const COMPARISON_OPERATORS =\n    '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|' +\n    '-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|' +\n    '-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|' +\n    '-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|' +\n    '-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|' +\n    '-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|' +\n    '-split|-wildcard|-xor';\n\n  const KEYWORDS = {\n    $pattern: /-?[A-z\\.\\-]+\\b/,\n    keyword:\n      'if else foreach return do while until elseif begin for trap data dynamicparam ' +\n      'end break throw param continue finally in switch exit filter try process catch ' +\n      'hidden static parameter',\n    // \"echo\" relevance has been set to 0 to avoid auto-detect conflicts with shell transcripts\n    built_in:\n      'ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp ' +\n      'cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx ' +\n      'fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group ' +\n      'gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi ' +\n      'iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh ' +\n      'popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp ' +\n      'rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp ' +\n      'spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write'\n    // TODO: 'validate[A-Z]+' can't work in keywords\n  };\n\n  const TITLE_NAME_RE = /\\w[\\w\\d]*((-)[\\w\\d]+)*/;\n\n  const BACKTICK_ESCAPE = {\n    begin: '`[\\\\s\\\\S]',\n    relevance: 0\n  };\n\n  const VAR = {\n    className: 'variable',\n    variants: [\n      {\n        begin: /\\$\\B/\n      },\n      {\n        className: 'keyword',\n        begin: /\\$this/\n      },\n      {\n        begin: /\\$[\\w\\d][\\w\\d_:]*/\n      }\n    ]\n  };\n\n  const LITERAL = {\n    className: 'literal',\n    begin: /\\$(null|true|false)\\b/\n  };\n\n  const QUOTE_STRING = {\n    className: \"string\",\n    variants: [\n      {\n        begin: /\"/,\n        end: /\"/\n      },\n      {\n        begin: /@\"/,\n        end: /^\"@/\n      }\n    ],\n    contains: [\n      BACKTICK_ESCAPE,\n      VAR,\n      {\n        className: 'variable',\n        begin: /\\$[A-z]/,\n        end: /[^A-z]/\n      }\n    ]\n  };\n\n  const APOS_STRING = {\n    className: 'string',\n    variants: [\n      {\n        begin: /'/,\n        end: /'/\n      },\n      {\n        begin: /@'/,\n        end: /^'@/\n      }\n    ]\n  };\n\n  const PS_HELPTAGS = {\n    className: \"doctag\",\n    variants: [\n      /* no paramater help tags */\n      {\n        begin: /\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/\n      },\n      /* one parameter help tags */\n      {\n        begin: /\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/\n      }\n    ]\n  };\n\n  const PS_COMMENT = hljs.inherit(\n    hljs.COMMENT(null, null),\n    {\n      variants: [\n        /* single-line comment */\n        {\n          begin: /#/,\n          end: /$/\n        },\n        /* multi-line comment */\n        {\n          begin: /<#/,\n          end: /#>/\n        }\n      ],\n      contains: [ PS_HELPTAGS ]\n    }\n  );\n\n  const CMDLETS = {\n    className: 'built_in',\n    variants: [\n      {\n        begin: '('.concat(VALID_VERBS, ')+(-)[\\\\w\\\\d]+')\n      }\n    ]\n  };\n\n  const PS_CLASS = {\n    className: 'class',\n    beginKeywords: 'class enum',\n    end: /\\s*[{]/,\n    excludeEnd: true,\n    relevance: 0,\n    contains: [ hljs.TITLE_MODE ]\n  };\n\n  const PS_FUNCTION = {\n    className: 'function',\n    begin: /function\\s+/,\n    end: /\\s*\\{|$/,\n    excludeEnd: true,\n    returnBegin: true,\n    relevance: 0,\n    contains: [\n      {\n        begin: \"function\",\n        relevance: 0,\n        className: \"keyword\"\n      },\n      {\n        className: \"title\",\n        begin: TITLE_NAME_RE,\n        relevance: 0\n      },\n      {\n        begin: /\\(/,\n        end: /\\)/,\n        className: \"params\",\n        relevance: 0,\n        contains: [ VAR ]\n      }\n      // CMDLETS\n    ]\n  };\n\n  // Using statment, plus type, plus assembly name.\n  const PS_USING = {\n    begin: /using\\s/,\n    end: /$/,\n    returnBegin: true,\n    contains: [\n      QUOTE_STRING,\n      APOS_STRING,\n      {\n        className: 'keyword',\n        begin: /(using|assembly|command|module|namespace|type)/\n      }\n    ]\n  };\n\n  // Comperison operators & function named parameters.\n  const PS_ARGUMENTS = {\n    variants: [\n      // PS literals are pretty verbose so it's a good idea to accent them a bit.\n      {\n        className: 'operator',\n        begin: '('.concat(COMPARISON_OPERATORS, ')\\\\b')\n      },\n      {\n        className: 'literal',\n        begin: /(-)[\\w\\d]+/,\n        relevance: 0\n      }\n    ]\n  };\n\n  const HASH_SIGNS = {\n    className: 'selector-tag',\n    begin: /@\\B/,\n    relevance: 0\n  };\n\n  // It's a very general rule so I'll narrow it a bit with some strict boundaries\n  // to avoid any possible false-positive collisions!\n  const PS_METHODS = {\n    className: 'function',\n    begin: /\\[.*\\]\\s*[\\w]+[ ]??\\(/,\n    end: /$/,\n    returnBegin: true,\n    relevance: 0,\n    contains: [\n      {\n        className: 'keyword',\n        begin: '('.concat(\n          KEYWORDS.keyword.toString().replace(/\\s/g, '|'\n          ), ')\\\\b'),\n        endsParent: true,\n        relevance: 0\n      },\n      hljs.inherit(hljs.TITLE_MODE, {\n        endsParent: true\n      })\n    ]\n  };\n\n  const GENTLEMANS_SET = [\n    // STATIC_MEMBER,\n    PS_METHODS,\n    PS_COMMENT,\n    BACKTICK_ESCAPE,\n    hljs.NUMBER_MODE,\n    QUOTE_STRING,\n    APOS_STRING,\n    // PS_NEW_OBJECT_TYPE,\n    CMDLETS,\n    VAR,\n    LITERAL,\n    HASH_SIGNS\n  ];\n\n  const PS_TYPE = {\n    begin: /\\[/,\n    end: /\\]/,\n    excludeBegin: true,\n    excludeEnd: true,\n    relevance: 0,\n    contains: [].concat(\n      'self',\n      GENTLEMANS_SET,\n      {\n        begin: \"(\" + TYPES.join(\"|\") + \")\",\n        className: \"built_in\",\n        relevance: 0\n      },\n      {\n        className: 'type',\n        begin: /[\\.\\w\\d]+/,\n        relevance: 0\n      }\n    )\n  };\n\n  PS_METHODS.contains.unshift(PS_TYPE);\n\n  return {\n    name: 'PowerShell',\n    aliases: [\n      \"ps\",\n      \"ps1\"\n    ],\n    case_insensitive: true,\n    keywords: KEYWORDS,\n    contains: GENTLEMANS_SET.concat(\n      PS_CLASS,\n      PS_FUNCTION,\n      PS_USING,\n      PS_ARGUMENTS,\n      PS_TYPE\n    )\n  };\n}\n\nmodule.exports = powershell;\n", "'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n", "module.exports = require(\"core-js-pure/stable/weak-map\");", "var traverse = module.exports = function (obj) {\n    return new Traverse(obj);\n};\n\nfunction Traverse (obj) {\n    this.value = obj;\n}\n\nTraverse.prototype.get = function (ps) {\n    var node = this.value;\n    for (var i = 0; i < ps.length; i ++) {\n        var key = ps[i];\n        if (!node || !hasOwnProperty.call(node, key)) {\n            node = undefined;\n            break;\n        }\n        node = node[key];\n    }\n    return node;\n};\n\nTraverse.prototype.has = function (ps) {\n    var node = this.value;\n    for (var i = 0; i < ps.length; i ++) {\n        var key = ps[i];\n        if (!node || !hasOwnProperty.call(node, key)) {\n            return false;\n        }\n        node = node[key];\n    }\n    return true;\n};\n\nTraverse.prototype.set = function (ps, value) {\n    var node = this.value;\n    for (var i = 0; i < ps.length - 1; i ++) {\n        var key = ps[i];\n        if (!hasOwnProperty.call(node, key)) node[key] = {};\n        node = node[key];\n    }\n    node[ps[i]] = value;\n    return value;\n};\n\nTraverse.prototype.map = function (cb) {\n    return walk(this.value, cb, true);\n};\n\nTraverse.prototype.forEach = function (cb) {\n    this.value = walk(this.value, cb, false);\n    return this.value;\n};\n\nTraverse.prototype.reduce = function (cb, init) {\n    var skip = arguments.length === 1;\n    var acc = skip ? this.value : init;\n    this.forEach(function (x) {\n        if (!this.isRoot || !skip) {\n            acc = cb.call(this, acc, x);\n        }\n    });\n    return acc;\n};\n\nTraverse.prototype.paths = function () {\n    var acc = [];\n    this.forEach(function (x) {\n        acc.push(this.path); \n    });\n    return acc;\n};\n\nTraverse.prototype.nodes = function () {\n    var acc = [];\n    this.forEach(function (x) {\n        acc.push(this.node);\n    });\n    return acc;\n};\n\nTraverse.prototype.clone = function () {\n    var parents = [], nodes = [];\n    \n    return (function clone (src) {\n        for (var i = 0; i < parents.length; i++) {\n            if (parents[i] === src) {\n                return nodes[i];\n            }\n        }\n        \n        if (typeof src === 'object' && src !== null) {\n            var dst = copy(src);\n            \n            parents.push(src);\n            nodes.push(dst);\n            \n            forEach(objectKeys(src), function (key) {\n                dst[key] = clone(src[key]);\n            });\n            \n            parents.pop();\n            nodes.pop();\n            return dst;\n        }\n        else {\n            return src;\n        }\n    })(this.value);\n};\n\nfunction walk (root, cb, immutable) {\n    var path = [];\n    var parents = [];\n    var alive = true;\n    \n    return (function walker (node_) {\n        var node = immutable ? copy(node_) : node_;\n        var modifiers = {};\n        \n        var keepGoing = true;\n        \n        var state = {\n            node : node,\n            node_ : node_,\n            path : [].concat(path),\n            parent : parents[parents.length - 1],\n            parents : parents,\n            key : path.slice(-1)[0],\n            isRoot : path.length === 0,\n            level : path.length,\n            circular : null,\n            update : function (x, stopHere) {\n                if (!state.isRoot) {\n                    state.parent.node[state.key] = x;\n                }\n                state.node = x;\n                if (stopHere) keepGoing = false;\n            },\n            'delete' : function (stopHere) {\n                delete state.parent.node[state.key];\n                if (stopHere) keepGoing = false;\n            },\n            remove : function (stopHere) {\n                if (isArray(state.parent.node)) {\n                    state.parent.node.splice(state.key, 1);\n                }\n                else {\n                    delete state.parent.node[state.key];\n                }\n                if (stopHere) keepGoing = false;\n            },\n            keys : null,\n            before : function (f) { modifiers.before = f },\n            after : function (f) { modifiers.after = f },\n            pre : function (f) { modifiers.pre = f },\n            post : function (f) { modifiers.post = f },\n            stop : function () { alive = false },\n            block : function () { keepGoing = false }\n        };\n        \n        if (!alive) return state;\n        \n        function updateState() {\n            if (typeof state.node === 'object' && state.node !== null) {\n                if (!state.keys || state.node_ !== state.node) {\n                    state.keys = objectKeys(state.node)\n                }\n                \n                state.isLeaf = state.keys.length == 0;\n                \n                for (var i = 0; i < parents.length; i++) {\n                    if (parents[i].node_ === node_) {\n                        state.circular = parents[i];\n                        break;\n                    }\n                }\n            }\n            else {\n                state.isLeaf = true;\n                state.keys = null;\n            }\n            \n            state.notLeaf = !state.isLeaf;\n            state.notRoot = !state.isRoot;\n        }\n        \n        updateState();\n        \n        // use return values to update if defined\n        var ret = cb.call(state, state.node);\n        if (ret !== undefined && state.update) state.update(ret);\n        \n        if (modifiers.before) modifiers.before.call(state, state.node);\n        \n        if (!keepGoing) return state;\n        \n        if (typeof state.node == 'object'\n        && state.node !== null && !state.circular) {\n            parents.push(state);\n            \n            updateState();\n            \n            forEach(state.keys, function (key, i) {\n                path.push(key);\n                \n                if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);\n                \n                var child = walker(state.node[key]);\n                if (immutable && hasOwnProperty.call(state.node, key)) {\n                    state.node[key] = child.node;\n                }\n                \n                child.isLast = i == state.keys.length - 1;\n                child.isFirst = i == 0;\n                \n                if (modifiers.post) modifiers.post.call(state, child);\n                \n                path.pop();\n            });\n            parents.pop();\n        }\n        \n        if (modifiers.after) modifiers.after.call(state, state.node);\n        \n        return state;\n    })(root).node;\n}\n\nfunction copy (src) {\n    if (typeof src === 'object' && src !== null) {\n        var dst;\n        \n        if (isArray(src)) {\n            dst = [];\n        }\n        else if (isDate(src)) {\n            dst = new Date(src.getTime ? src.getTime() : src);\n        }\n        else if (isRegExp(src)) {\n            dst = new RegExp(src);\n        }\n        else if (isError(src)) {\n            dst = { message: src.message };\n        }\n        else if (isBoolean(src)) {\n            dst = new Boolean(src);\n        }\n        else if (isNumber(src)) {\n            dst = new Number(src);\n        }\n        else if (isString(src)) {\n            dst = new String(src);\n        }\n        else if (Object.create && Object.getPrototypeOf) {\n            dst = Object.create(Object.getPrototypeOf(src));\n        }\n        else if (src.constructor === Object) {\n            dst = {};\n        }\n        else {\n            var proto =\n                (src.constructor && src.constructor.prototype)\n                || src.__proto__\n                || {}\n            ;\n            var T = function () {};\n            T.prototype = proto;\n            dst = new T;\n        }\n        \n        forEach(objectKeys(src), function (key) {\n            dst[key] = src[key];\n        });\n        return dst;\n    }\n    else return src;\n}\n\nvar objectKeys = Object.keys || function keys (obj) {\n    var res = [];\n    for (var key in obj) res.push(key)\n    return res;\n};\n\nfunction toS (obj) { return Object.prototype.toString.call(obj) }\nfunction isDate (obj) { return toS(obj) === '[object Date]' }\nfunction isRegExp (obj) { return toS(obj) === '[object RegExp]' }\nfunction isError (obj) { return toS(obj) === '[object Error]' }\nfunction isBoolean (obj) { return toS(obj) === '[object Boolean]' }\nfunction isNumber (obj) { return toS(obj) === '[object Number]' }\nfunction isString (obj) { return toS(obj) === '[object String]' }\n\nvar isArray = Array.isArray || function isArray (xs) {\n    return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nvar forEach = function (xs, fn) {\n    if (xs.forEach) return xs.forEach(fn)\n    else for (var i = 0; i < xs.length; i++) {\n        fn(xs[i], i, xs);\n    }\n};\n\nforEach(objectKeys(Traverse.prototype), function (key) {\n    traverse[key] = function (obj) {\n        var args = [].slice.call(arguments, 1);\n        var t = new Traverse(obj);\n        return t[key].apply(t, args);\n    };\n});\n\nvar hasOwnProperty = Object.hasOwnProperty || function (obj, key) {\n    return key in obj;\n};\n", "/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar   = VCHAR / obs-text\n * obs-text      = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n  if (typeof str !== 'string') {\n    throw new TypeError('argument str must be a string');\n  }\n\n  var obj = {}\n  var opt = options || {};\n  var pairs = str.split(';')\n  var dec = opt.decode || decode;\n\n  for (var i = 0; i < pairs.length; i++) {\n    var pair = pairs[i];\n    var index = pair.indexOf('=')\n\n    // skip things that don't look like key=value\n    if (index < 0) {\n      continue;\n    }\n\n    var key = pair.substring(0, index).trim()\n\n    // only assign once\n    if (undefined == obj[key]) {\n      var val = pair.substring(index + 1, pair.length).trim()\n\n      // quoted values\n      if (val[0] === '\"') {\n        val = val.slice(1, -1)\n      }\n\n      obj[key] = tryDecode(val, dec);\n    }\n  }\n\n  return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n  var opt = options || {};\n  var enc = opt.encode || encode;\n\n  if (typeof enc !== 'function') {\n    throw new TypeError('option encode is invalid');\n  }\n\n  if (!fieldContentRegExp.test(name)) {\n    throw new TypeError('argument name is invalid');\n  }\n\n  var value = enc(val);\n\n  if (value && !fieldContentRegExp.test(value)) {\n    throw new TypeError('argument val is invalid');\n  }\n\n  var str = name + '=' + value;\n\n  if (null != opt.maxAge) {\n    var maxAge = opt.maxAge - 0;\n\n    if (isNaN(maxAge) || !isFinite(maxAge)) {\n      throw new TypeError('option maxAge is invalid')\n    }\n\n    str += '; Max-Age=' + Math.floor(maxAge);\n  }\n\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n\n    str += '; Domain=' + opt.domain;\n  }\n\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n\n    str += '; Path=' + opt.path;\n  }\n\n  if (opt.expires) {\n    if (typeof opt.expires.toUTCString !== 'function') {\n      throw new TypeError('option expires is invalid');\n    }\n\n    str += '; Expires=' + opt.expires.toUTCString();\n  }\n\n  if (opt.httpOnly) {\n    str += '; HttpOnly';\n  }\n\n  if (opt.secure) {\n    str += '; Secure';\n  }\n\n  if (opt.sameSite) {\n    var sameSite = typeof opt.sameSite === 'string'\n      ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n\n  return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n  try {\n    return decode(str);\n  } catch (e) {\n    return str;\n  }\n}\n", "/**\n * Zenscroll 4.0.2\n * https://github.com/zengabor/zenscroll/\n *\n * Copyright 2015–2018 Gabor Lenard\n *\n * This is free and unencumbered software released into the public domain.\n * \n * Anyone is free to copy, modify, publish, use, compile, sell, or\n * distribute this software, either in source code form or as a compiled\n * binary, for any purpose, commercial or non-commercial, and by any\n * means.\n * \n * In jurisdictions that recognize copyright laws, the author or authors\n * of this software dedicate any and all copyright interest in the\n * software to the public domain. We make this dedication for the benefit\n * of the public at large and to the detriment of our heirs and\n * successors. We intend this dedication to be an overt act of\n * relinquishment in perpetuity of all present and future rights to this\n * software under copyright law.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\n * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n * \n * For more information, please refer to <http://unlicense.org>\n * \n */\n\n/*jshint devel:true, asi:true */\n\n/*global define, module */\n\n\n(function (root, factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine([], factory())\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory()\n\t} else {\n\t\t(function install() {\n\t\t\t// To make sure Zenscroll can be referenced from the header, before `body` is available\n\t\t\tif (document && document.body) {\n\t\t\t\troot.zenscroll = factory()\n\t\t\t} else {\n\t\t\t\t// retry 9ms later\n\t\t\t\tsetTimeout(install, 9)\n\t\t\t}\n\t\t})()\n\t}\n}(this, function () {\n\t\"use strict\"\n\n\n\t// Detect if the browser already supports native smooth scrolling (e.g., Firefox 36+ and Chrome 49+) and it is enabled:\n\tvar isNativeSmoothScrollEnabledOn = function (elem) {\n\t\treturn elem && \"getComputedStyle\" in window &&\n\t\t\twindow.getComputedStyle(elem)[\"scroll-behavior\"] === \"smooth\"\n\t}\n\n\n\t// Exit if it’s not a browser environment:\n\tif (typeof window === \"undefined\" || !(\"document\" in window)) {\n\t\treturn {}\n\t}\n\n\n\tvar makeScroller = function (container, defaultDuration, edgeOffset) {\n\n\t\t// Use defaults if not provided\n\t\tdefaultDuration = defaultDuration || 999 //ms\n\t\tif (!edgeOffset && edgeOffset !== 0) {\n\t\t\t// When scrolling, this amount of distance is kept from the edges of the container:\n\t\t\tedgeOffset = 9 //px\n\t\t}\n\n\t\t// Handling the life-cycle of the scroller\n\t\tvar scrollTimeoutId\n\t\tvar setScrollTimeoutId = function (newValue) {\n\t\t\tscrollTimeoutId = newValue\n\t\t}\n\n\t\t/**\n\t\t * Stop the current smooth scroll operation immediately\n\t\t */\n\t\tvar stopScroll = function () {\n\t\t\tclearTimeout(scrollTimeoutId)\n\t\t\tsetScrollTimeoutId(0)\n\t\t}\n\n\t\tvar getTopWithEdgeOffset = function (elem) {\n\t\t\treturn Math.max(0, container.getTopOf(elem) - edgeOffset)\n\t\t}\n\n\t\t/**\n\t\t * Scrolls to a specific vertical position in the document.\n\t\t *\n\t\t * @param {targetY} The vertical position within the document.\n\t\t * @param {duration} Optionally the duration of the scroll operation.\n\t\t *        If not provided the default duration is used.\n\t\t * @param {onDone} An optional callback function to be invoked once the scroll finished.\n\t\t */\n\t\tvar scrollToY = function (targetY, duration, onDone) {\n\t\t\tstopScroll()\n\t\t\tif (duration === 0 || (duration && duration < 0) || isNativeSmoothScrollEnabledOn(container.body)) {\n\t\t\t\tcontainer.toY(targetY)\n\t\t\t\tif (onDone) {\n\t\t\t\t\tonDone()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar startY = container.getY()\n\t\t\t\tvar distance = Math.max(0, targetY) - startY\n\t\t\t\tvar startTime = new Date().getTime()\n\t\t\t\tduration = duration || Math.min(Math.abs(distance), defaultDuration);\n\t\t\t\t(function loopScroll() {\n\t\t\t\t\tsetScrollTimeoutId(setTimeout(function () {\n\t\t\t\t\t\t// Calculate percentage:\n\t\t\t\t\t\tvar p = Math.min(1, (new Date().getTime() - startTime) / duration)\n\t\t\t\t\t\t// Calculate the absolute vertical position:\n\t\t\t\t\t\tvar y = Math.max(0, Math.floor(startY + distance*(p < 0.5 ? 2*p*p : p*(4 - p*2)-1)))\n\t\t\t\t\t\tcontainer.toY(y)\n\t\t\t\t\t\tif (p < 1 && (container.getHeight() + y) < container.body.scrollHeight) {\n\t\t\t\t\t\t\tloopScroll()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetTimeout(stopScroll, 99) // with cooldown time\n\t\t\t\t\t\t\tif (onDone) {\n\t\t\t\t\t\t\t\tonDone()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9))\n\t\t\t\t})()\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Scrolls to the top of a specific element.\n\t\t *\n\t\t * @param {elem} The element to scroll to.\n\t\t * @param {duration} Optionally the duration of the scroll operation.\n\t\t * @param {onDone} An optional callback function to be invoked once the scroll finished.\n\t\t */\n\t\tvar scrollToElem = function (elem, duration, onDone) {\n\t\t\tscrollToY(getTopWithEdgeOffset(elem), duration, onDone)\n\t\t}\n\n\t\t/**\n\t\t * Scrolls an element into view if necessary.\n\t\t *\n\t\t * @param {elem} The element.\n\t\t * @param {duration} Optionally the duration of the scroll operation.\n\t\t * @param {onDone} An optional callback function to be invoked once the scroll finished.\n\t\t */\n\t\tvar scrollIntoView = function (elem, duration, onDone) {\n\t\t\tvar elemHeight = elem.getBoundingClientRect().height\n\t\t\tvar elemBottom = container.getTopOf(elem) + elemHeight\n\t\t\tvar containerHeight = container.getHeight()\n\t\t\tvar y = container.getY()\n\t\t\tvar containerBottom = y + containerHeight\n\t\t\tif (getTopWithEdgeOffset(elem) < y || (elemHeight + edgeOffset) > containerHeight) {\n\t\t\t\t// Element is clipped at top or is higher than screen.\n\t\t\t\tscrollToElem(elem, duration, onDone)\n\t\t\t} else if ((elemBottom + edgeOffset) > containerBottom) {\n\t\t\t\t// Element is clipped at the bottom.\n\t\t\t\tscrollToY(elemBottom - containerHeight + edgeOffset, duration, onDone)\n\t\t\t} else if (onDone) {\n\t\t\t\tonDone()\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Scrolls to the center of an element.\n\t\t *\n\t\t * @param {elem} The element.\n\t\t * @param {duration} Optionally the duration of the scroll operation.\n\t\t * @param {offset} Optionally the offset of the top of the element from the center of the screen.\n\t\t *        A value of 0 is ignored.\n\t\t * @param {onDone} An optional callback function to be invoked once the scroll finished.\n\t\t */\n\t\tvar scrollToCenterOf = function (elem, duration, offset, onDone) {\n\t\t\tscrollToY(Math.max(0, container.getTopOf(elem) - container.getHeight()/2 + (offset || elem.getBoundingClientRect().height/2)), duration, onDone)\n\t\t}\n\n\t\t/**\n\t\t * Changes default settings for this scroller.\n\t\t *\n\t\t * @param {newDefaultDuration} Optionally a new value for default duration, used for each scroll method by default.\n\t\t *        Ignored if null or undefined.\n\t\t * @param {newEdgeOffset} Optionally a new value for the edge offset, used by each scroll method by default. Ignored if null or undefined.\n\t\t * @returns An object with the current values.\n\t\t */\n\t\tvar setup = function (newDefaultDuration, newEdgeOffset) {\n\t\t\tif (newDefaultDuration === 0 || newDefaultDuration) {\n\t\t\t\tdefaultDuration = newDefaultDuration\n\t\t\t}\n\t\t\tif (newEdgeOffset === 0 || newEdgeOffset) {\n\t\t\t\tedgeOffset = newEdgeOffset\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tdefaultDuration: defaultDuration,\n\t\t\t\tedgeOffset: edgeOffset\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsetup: setup,\n\t\t\tto: scrollToElem,\n\t\t\ttoY: scrollToY,\n\t\t\tintoView: scrollIntoView,\n\t\t\tcenter: scrollToCenterOf,\n\t\t\tstop: stopScroll,\n\t\t\tmoving: function () { return !!scrollTimeoutId },\n\t\t\tgetY: container.getY,\n\t\t\tgetTopOf: container.getTopOf\n\t\t}\n\n\t}\n\n\n\tvar docElem = document.documentElement\n\tvar getDocY = function () { return window.scrollY || docElem.scrollTop }\n\n\t// Create a scroller for the document:\n\tvar zenscroll = makeScroller({\n\t\tbody: document.scrollingElement || document.body,\n\t\ttoY: function (y) { window.scrollTo(0, y) },\n\t\tgetY: getDocY,\n\t\tgetHeight: function () { return window.innerHeight || docElem.clientHeight },\n\t\tgetTopOf: function (elem) { return elem.getBoundingClientRect().top + getDocY() - docElem.offsetTop }\n\t})\n\n\n\t/**\n\t * Creates a scroller from the provided container element (e.g., a DIV)\n\t *\n\t * @param {scrollContainer} The vertical position within the document.\n\t * @param {defaultDuration} Optionally a value for default duration, used for each scroll method by default.\n\t *        Ignored if 0 or null or undefined.\n\t * @param {edgeOffset} Optionally a value for the edge offset, used by each scroll method by default. \n\t *        Ignored if null or undefined.\n\t * @returns A scroller object, similar to `zenscroll` but controlling the provided element.\n\t */\n\tzenscroll.createScroller = function (scrollContainer, defaultDuration, edgeOffset) {\n\t\treturn makeScroller({\n\t\t\tbody: scrollContainer,\n\t\t\ttoY: function (y) { scrollContainer.scrollTop = y },\n\t\t\tgetY: function () { return scrollContainer.scrollTop },\n\t\t\tgetHeight: function () { return Math.min(scrollContainer.clientHeight, window.innerHeight || docElem.clientHeight) },\n\t\t\tgetTopOf: function (elem) { return elem.offsetTop }\n\t\t}, defaultDuration, edgeOffset)\n\t}\n\n\n\t// Automatic link-smoothing on achors\n\t// Exclude IE8- or when native is enabled or Zenscroll auto- is disabled\n\tif (\"addEventListener\" in window && !window.noZensmooth && !isNativeSmoothScrollEnabledOn(document.body)) {\n\n\t\tvar isHistorySupported = \"history\" in window && \"pushState\" in history\n\t\tvar isScrollRestorationSupported = isHistorySupported && \"scrollRestoration\" in history\n\n\t\t// On first load & refresh make sure the browser restores the position first\n\t\tif (isScrollRestorationSupported) {\n\t\t\thistory.scrollRestoration = \"auto\"\n\t\t}\n\n\t\twindow.addEventListener(\"load\", function () {\n\n\t\t\tif (isScrollRestorationSupported) {\n\t\t\t\t// Set it to manual\n\t\t\t\tsetTimeout(function () { history.scrollRestoration = \"manual\" }, 9)\n\t\t\t\twindow.addEventListener(\"popstate\", function (event) {\n\t\t\t\t\tif (event.state && \"zenscrollY\" in event.state) {\n\t\t\t\t\t\tzenscroll.toY(event.state.zenscrollY)\n\t\t\t\t\t}\n\t\t\t\t}, false)\n\t\t\t}\n\n\t\t\t// Add edge offset on first load if necessary\n\t\t\t// This may not work on IE (or older computer?) as it requires more timeout, around 100 ms\n\t\t\tif (window.location.hash) {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t// Adjustment is only needed if there is an edge offset:\n\t\t\t\t\tvar edgeOffset = zenscroll.setup().edgeOffset\n\t\t\t\t\tif (edgeOffset) {\n\t\t\t\t\t\tvar targetElem = document.getElementById(window.location.href.split(\"#\")[1])\n\t\t\t\t\t\tif (targetElem) {\n\t\t\t\t\t\t\tvar targetY = Math.max(0, zenscroll.getTopOf(targetElem) - edgeOffset)\n\t\t\t\t\t\t\tvar diff = zenscroll.getY() - targetY\n\t\t\t\t\t\t\t// Only do the adjustment if the browser is very close to the element:\n\t\t\t\t\t\t\tif (0 <= diff && diff < 9 ) {\n\t\t\t\t\t\t\t\twindow.scrollTo(0, targetY)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 9)\n\t\t\t}\n\n\t\t}, false)\n\n\t\t// Handling clicks on anchors\n\t\tvar RE_noZensmooth = new RegExp(\"(^|\\\\s)noZensmooth(\\\\s|$)\")\n\t\twindow.addEventListener(\"click\", function (event) {\n\t\t\tvar anchor = event.target\n\t\t\twhile (anchor && anchor.tagName !== \"A\") {\n\t\t\t\tanchor = anchor.parentNode\n\t\t\t}\n\t\t\t// Let the browser handle the click if it wasn't with the primary button, or with some modifier keys:\n\t\t\tif (!anchor || event.which !== 1 || event.shiftKey || event.metaKey || event.ctrlKey || event.altKey) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Save the current scrolling position so it can be used for scroll restoration:\n\t\t\tif (isScrollRestorationSupported) {\n\t\t\t\tvar historyState = history.state && typeof history.state === \"object\" ? history.state : {}\n\t\t\t\thistoryState.zenscrollY = zenscroll.getY()\n\t\t\t\ttry {\n\t\t\t\t\thistory.replaceState(historyState, \"\")\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Avoid the Chrome Security exception on file protocol, e.g., file://index.html\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Find the referenced ID:\n\t\t\tvar href = anchor.getAttribute(\"href\") || \"\"\n\t\t\tif (href.indexOf(\"#\") === 0 && !RE_noZensmooth.test(anchor.className)) {\n\t\t\t\tvar targetY = 0\n\t\t\t\tvar targetElem = document.getElementById(href.substring(1))\n\t\t\t\tif (href !== \"#\") {\n\t\t\t\t\tif (!targetElem) {\n\t\t\t\t\t\t// Let the browser handle the click if the target ID is not found.\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\ttargetY = zenscroll.getTopOf(targetElem)\n\t\t\t\t}\n\t\t\t\tevent.preventDefault()\n\t\t\t\t// By default trigger the browser's `hashchange` event...\n\t\t\t\tvar onDone = function () { window.location = href }\n\t\t\t\t// ...unless there is an edge offset specified\n\t\t\t\tvar edgeOffset = zenscroll.setup().edgeOffset\n\t\t\t\tif (edgeOffset) {\n\t\t\t\t\ttargetY = Math.max(0, targetY - edgeOffset)\n\t\t\t\t\tif (isHistorySupported) {\n\t\t\t\t\t\tonDone = function () { history.pushState({}, \"\", href) }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tzenscroll.toY(targetY, null, onDone)\n\t\t\t}\n\t\t}, false)\n\n\t}\n\n\n\treturn zenscroll\n\n\n}));\n", "module.exports = require(\"core-js-pure/stable/instance/fill\");", "var assignValue = require('./_assignValue'),\n    baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n  return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n", "module.exports = function(data, filename, mime, bom) {\n    var blobData = (typeof bom !== 'undefined') ? [bom, data] : [data]\n    var blob = new Blob(blobData, {type: mime || 'application/octet-stream'});\n    if (typeof window.navigator.msSaveBlob !== 'undefined') {\n        // IE workaround for \"HTML7007: One or more blob URLs were\n        // revoked by closing the blob for which they were created.\n        // These URLs will no longer resolve as the data backing\n        // the URL has been freed.\"\n        window.navigator.msSaveBlob(blob, filename);\n    }\n    else {\n        var blobURL = (window.URL && window.URL.createObjectURL) ? window.URL.createObjectURL(blob) : window.webkitURL.createObjectURL(blob);\n        var tempLink = document.createElement('a');\n        tempLink.style.display = 'none';\n        tempLink.href = blobURL;\n        tempLink.setAttribute('download', filename);\n\n        // Safari thinks _blank anchor are pop ups. We only want to set _blank\n        // target if the browser does not support the HTML5 download attribute.\n        // This allows you to download files in desktop safari if pop up blocking\n        // is enabled.\n        if (typeof tempLink.download === 'undefined') {\n            tempLink.setAttribute('target', '_blank');\n        }\n\n        document.body.appendChild(tempLink);\n        tempLink.click();\n\n        // Fixes \"webkit blob resource error 1\"\n        setTimeout(function() {\n            document.body.removeChild(tempLink);\n            window.URL.revokeObjectURL(blobURL);\n        }, 200)\n    }\n}\n", "module.exports = require(\"core-js-pure/stable/instance/values\");", "'use strict';\n\nvar repeat = require('repeat-string');\n\nvar splitOnTags = function splitOnTags(str) {\n  return str.split(/(<\\/?[^>]+>)/g).filter(function (line) {\n    return line.trim() !== '';\n  });\n};\nvar isTag = function isTag(str) {\n  return (/<[^>!]+>/.test(str)\n  );\n};\nvar isClosingTag = function isClosingTag(str) {\n  return (/<\\/+[^>]+>/.test(str)\n  );\n};\nvar isSelfClosingTag = function isSelfClosingTag(str) {\n  return (/<[^>]+\\/>/.test(str)\n  );\n};\nvar isOpeningTag = function isOpeningTag(str) {\n  return isTag(str) && !isClosingTag(str) && !isSelfClosingTag(str);\n};\n\nmodule.exports = function (xml) {\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var indentor = config.indentor,\n      textNodesOnSameLine = config.textNodesOnSameLine;\n\n  var depth = 0;\n  var indicesToRemove = [];\n  indentor = indentor || '    ';\n\n  var rawResult = lexer(xml).map(function (element, i, arr) {\n    var value = element.value,\n        type = element.type;\n\n    if (type === 'ClosingTag') {\n      depth--;\n    }\n\n    var indentation = repeat(indentor, depth);\n    var line = indentation + value;\n\n    if (type === 'OpeningTag') {\n      depth++;\n    }\n\n    if (textNodesOnSameLine) {\n      // Lookbehind for [OpeningTag][Text][ClosingTag]\n      var oneBefore = arr[i - 1];\n      var twoBefore = arr[i - 2];\n\n      if (type === \"ClosingTag\" && oneBefore.type === \"Text\" && twoBefore.type === \"OpeningTag\") {\n        // collapse into a single line\n        line = '' + indentation + twoBefore.value + oneBefore.value + value;\n        indicesToRemove.push(i - 2, i - 1);\n      }\n    }\n\n    return line;\n  });\n\n  indicesToRemove.forEach(function (idx) {\n    return rawResult[idx] = null;\n  });\n\n  return rawResult.filter(function (val) {\n    return !!val;\n  }).join('\\n');\n};\n\nfunction lexer(xmlStr) {\n  var values = splitOnTags(xmlStr);\n  return values.map(function (value) {\n    return {\n      value: value,\n      type: getType(value)\n    };\n  });\n}\n\n// Helpers\n\nfunction getType(str) {\n  if (isClosingTag(str)) {\n    return 'ClosingTag';\n  }\n\n  if (isOpeningTag(str)) {\n    return 'OpeningTag';\n  }\n\n  if (isSelfClosingTag(str)) {\n    return 'SelfClosingTag';\n  }\n\n  return 'Text';\n}", "var parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.pattern-match');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/symbol');\n\nmodule.exports = parent;\n", "var parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n", "require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\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.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n", "var global = require('../internals/global');\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 = global.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 TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n", "var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.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 TypeError(\"Can't convert object to primitive value\");\n};\n", "var global = require('../internals/global');\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(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n", "var global = require('../internals/global');\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 = global.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 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", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n", "var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n", "var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\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", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n", "// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n", "// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n", "module.exports = require(\"core-js-pure/features/symbol/iterator\");", "var parent = require('../../actual/symbol/iterator');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n", "var parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n", "require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n", "var parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.concat;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n", "require('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n", "var parent = require('../../es/instance/last-index-of');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/last-index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.lastIndexOf;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.lastIndexOf) ? method : own;\n};\n", "require('../../../modules/es.array.last-index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').lastIndexOf;\n", "var $ = 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';\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  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", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.filter;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n", "require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\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", "require('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n", "var $ = 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", "var parent = require('../../es/json/stringify');\n\nmodule.exports = parent;\n", "require('../../modules/es.json.stringify');\nvar path = require('../../internals/path');\nvar apply = require('../../internals/function-apply');\n\n// eslint-disable-next-line es/no-json -- safe\nif (!path.JSON) path.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n  return apply(path.JSON.stringify, null, arguments);\n};\n", "var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar Array = global.Array;\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 fix = 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\nvar FORCED = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  // https://github.com/tc39/proposal-well-formed-stringify\n  $({ target: 'JSON', stat: true, forced: FORCED }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      for (var i = 0, l = arguments.length, args = Array(l); i < l; i++) args[i] = arguments[i];\n      var result = apply($stringify, null, args);\n      return typeof result == 'string' ? replace(result, tester, fix) : result;\n    }\n  });\n}\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n", "var parent = require('../../actual/object/define-property');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/define-property');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n  return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n", "var $ = 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", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n  var own = it.bind;\n  return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;\n};\n", "require('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n", "var $ = 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$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n", "require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n", "var $ = 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, forced: Object.assign !== assign }, {\n  assign: assign\n});\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.slice;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n", "require('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\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 un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.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 un$Slice(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", "require('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n", "var $ = 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", "var parent = require('../../es/instance/reduce');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/reduce');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.reduce;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reduce) ? method : own;\n};\n", "require('../../../modules/es.array.reduce');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').reduce;\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/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\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;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\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", "var global = require('../internals/global');\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 = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\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 TypeError('Reduce of empty array with no initial value');\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", "var parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.map;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;\n};\n", "require('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\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", "/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _immutable = require('immutable');\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _utilities = require('./utilities');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (reducers) {\n  var getDefaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _immutable2.default.Map;\n\n  var reducerKeys = Object.keys(reducers);\n\n  // eslint-disable-next-line space-infix-ops\n  return function () {\n    var inputState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getDefaultState();\n    var action = arguments[1];\n\n    // eslint-disable-next-line no-process-env\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = (0, _utilities.getUnexpectedInvocationParameterMessage)(inputState, reducers, action);\n\n      if (warningMessage) {\n        // eslint-disable-next-line no-console\n        console.error(warningMessage);\n      }\n    }\n\n    return inputState.withMutations(function (temporaryState) {\n      reducerKeys.forEach(function (reducerName) {\n        var reducer = reducers[reducerName];\n        var currentDomainState = temporaryState.get(reducerName);\n        var nextDomainState = reducer(currentDomainState, action);\n\n        (0, _utilities.validateNextState)(nextDomainState, reducerName, action);\n\n        temporaryState.set(reducerName, nextDomainState);\n      });\n    });\n  };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=combineReducers.js.map", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.validateNextState = exports.getUnexpectedInvocationParameterMessage = exports.getStateName = undefined;\n\nvar _getStateName2 = require('./getStateName');\n\nvar _getStateName3 = _interopRequireDefault(_getStateName2);\n\nvar _getUnexpectedInvocationParameterMessage2 = require('./getUnexpectedInvocationParameterMessage');\n\nvar _getUnexpectedInvocationParameterMessage3 = _interopRequireDefault(_getUnexpectedInvocationParameterMessage2);\n\nvar _validateNextState2 = require('./validateNextState');\n\nvar _validateNextState3 = _interopRequireDefault(_validateNextState2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.getStateName = _getStateName3.default;\nexports.getUnexpectedInvocationParameterMessage = _getUnexpectedInvocationParameterMessage3.default;\nexports.validateNextState = _validateNextState3.default;\n//# sourceMappingURL=index.js.map", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _immutable = require('immutable');\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _getStateName = require('./getStateName');\n\nvar _getStateName2 = _interopRequireDefault(_getStateName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (state, reducers, action) {\n  var reducerNames = Object.keys(reducers);\n\n  if (!reducerNames.length) {\n    return 'Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.';\n  }\n\n  var stateName = (0, _getStateName2.default)(action);\n\n  if (_immutable2.default.isImmutable ? !_immutable2.default.isImmutable(state) : !_immutable2.default.Iterable.isIterable(state)) {\n    return 'The ' + stateName + ' is of unexpected type. Expected argument to be an instance of Immutable.Collection or Immutable.Record with the following properties: \"' + reducerNames.join('\", \"') + '\".';\n  }\n\n  var unexpectedStatePropertyNames = state.toSeq().keySeq().toArray().filter(function (name) {\n    return !reducers.hasOwnProperty(name);\n  });\n\n  if (unexpectedStatePropertyNames.length > 0) {\n    return 'Unexpected ' + (unexpectedStatePropertyNames.length === 1 ? 'property' : 'properties') + ' \"' + unexpectedStatePropertyNames.join('\", \"') + '\" found in ' + stateName + '. Expected to find one of the known reducer property names instead: \"' + reducerNames.join('\", \"') + '\". Unexpected properties will be ignored.';\n  }\n\n  return null;\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=getUnexpectedInvocationParameterMessage.js.map", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (nextState, reducerName, action) {\n  // eslint-disable-next-line no-undefined\n  if (nextState === undefined) {\n    throw new Error('Reducer \"' + reducerName + '\" returned undefined when handling \"' + action.type + '\" action. To ignore an action, you must explicitly return the previous state.');\n  }\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=validateNextState.js.map", "var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nmodule.exports = baseMerge;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n", "var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n", "var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n", "var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n", "var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n", "var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n", "var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n", "var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n", "var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n", "var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n", "var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n", "var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n", "var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n", "var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n", "var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n", "var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n", "var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n", "var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n", "var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (_Array$isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var parent = require('../../actual/array/is-array');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/array/is-array');\n\nmodule.exports = parent;\n", "var parent = require('../actual/get-iterator-method');\n\nmodule.exports = parent;\n", "var parent = require('../stable/get-iterator-method');\n\nmodule.exports = parent;\n", "var parent = require('../es/get-iterator-method');\nrequire('../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n", "require('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n", "var parent = require('../../actual/array/from');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/array/from');\n\nmodule.exports = parent;\n", "require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n", "var $ = 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", "var 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", "module.exports = require(\"core-js-pure/features/instance/slice\");", "var parent = require('../../actual/instance/slice');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/instance/slice');\n\nmodule.exports = parent;\n", "function _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\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "require('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/entries');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.entries;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.entries)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n", "var parent = require('../../../es/array/virtual/entries');\n\nmodule.exports = parent;\n", "require('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').entries;\n", "var parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n", "require('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').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 $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", "var parent = require('../../es/instance/sort');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/sort');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.sort;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.sort) ? method : own;\n};\n", "require('../../../modules/es.array.sort');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').sort;\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 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/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = 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 ? un$Sort(array) : un$Sort(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 = items.length;\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) delete array[index++];\n\n    return array;\n  }\n});\n", "var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n", "var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n", "var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n", "var parent = require('../../es/instance/some');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/some');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.some;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.some) ? method : own;\n};\n", "require('../../../modules/es.array.some');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').some;\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", "var parent = require('../../es/instance/includes');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar arrayMethod = require('../array/virtual/includes');\nvar stringMethod = require('../string/virtual/includes');\n\nvar ArrayPrototype = Array.prototype;\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n  var own = it.includes;\n  if (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.includes)) return arrayMethod;\n  if (typeof it == 'string' || it === StringPrototype || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.includes)) {\n    return stringMethod;\n  } return own;\n};\n", "require('../../../modules/es.array.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').includes;\n", "'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\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", "require('../../../modules/es.string.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').includes;\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", "var 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", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.indexOf;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n", "require('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\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');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\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      ? un$IndexOf(this, searchElement, fromIndex) || 0\n      : $IndexOf(this, searchElement, fromIndex);\n  }\n});\n", "var parent = require('../../es/instance/find');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/find');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.find;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own;\n};\n", "require('../../../modules/es.array.find');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').find;\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\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", "var parent = require('../../es/instance/starts-with');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../string/virtual/starts-with');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n  var own = it.startsWith;\n  return typeof it == 'string' || it === StringPrototype\n    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.startsWith) ? method : own;\n};\n", "require('../../../modules/es.string.starts-with');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').startsWith;\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\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\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar un$StartsWith = uncurryThis(''.startsWith);\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 un$StartsWith\n      ? un$StartsWith(that, search, index)\n      : stringSlice(that, index, index + search.length) === search;\n  }\n});\n", "var parent = require('../../es/instance/trim');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../string/virtual/trim');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n  var own = it.trim;\n  return typeof it == 'string' || it === StringPrototype\n    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.trim) ? method : own;\n};\n", "require('../../../modules/es.string.trim');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').trim;\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", "var 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 whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\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, '');\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", "var 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", "var toString = require('./toString'),\n    upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n", "var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n", "var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n", "var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n", "var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n", "/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n", "var arrayReduce = require('./_arrayReduce'),\n    deburr = require('./deburr'),\n    words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nmodule.exports = createCompounder;\n", "var deburrLetter = require('./_deburrLetter'),\n    toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n", "var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n", "/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = basePropertyOf;\n", "var asciiWords = require('./_asciiWords'),\n    hasUnicodeWord = require('./_hasUnicodeWord'),\n    toString = require('./toString'),\n    unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n", "/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n", "/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n", "var baseIteratee = require('./_baseIteratee'),\n    isArrayLike = require('./isArrayLike'),\n    keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n  return function(collection, predicate, fromIndex) {\n    var iterable = Object(collection);\n    if (!isArrayLike(collection)) {\n      var iteratee = baseIteratee(predicate, 3);\n      collection = keys(collection);\n      predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n    }\n    var index = findIndexFunc(collection, predicate, fromIndex);\n    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n  };\n}\n\nmodule.exports = createFind;\n", "var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n", "var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n", "var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n", "var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n", "var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n", "var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n", "var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n", "var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n", "var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n", "var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n", "var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n", "var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n", "var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n", "var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n", "var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n", "var baseFindIndex = require('./_baseFindIndex'),\n    baseIteratee = require('./_baseIteratee'),\n    toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n", "var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n", "var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n", "var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n", "var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction baseSome(collection, predicate) {\n  var result;\n\n  baseEach(collection, function(value, index, collection) {\n    result = predicate(value, index, collection);\n    return !result;\n  });\n  return !!result;\n}\n\nmodule.exports = baseSome;\n", "var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n", "var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n", "\nvar XML_CHARACTER_MAP = {\n    '&': '&amp;',\n    '\"': '&quot;',\n    \"'\": '&apos;',\n    '<': '&lt;',\n    '>': '&gt;'\n};\n\nfunction escapeForXML(string) {\n    return string && string.replace\n        ? string.replace(/([&\"<>'])/g, function(str, item) {\n            return XML_CHARACTER_MAP[item];\n          })\n        : string;\n}\n\nmodule.exports = escapeForXML;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n", "'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n  src.copy(target, offset);\n}\n\nmodule.exports = function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  BufferList.prototype.push = function push(v) {\n    var entry = { data: v, next: null };\n    if (this.length > 0) this.tail.next = entry;else this.head = entry;\n    this.tail = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.unshift = function unshift(v) {\n    var entry = { data: v, next: this.head };\n    if (this.length === 0) this.tail = entry;\n    this.head = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.shift = function shift() {\n    if (this.length === 0) return;\n    var ret = this.head.data;\n    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n    --this.length;\n    return ret;\n  };\n\n  BufferList.prototype.clear = function clear() {\n    this.head = this.tail = null;\n    this.length = 0;\n  };\n\n  BufferList.prototype.join = function join(s) {\n    if (this.length === 0) return '';\n    var p = this.head;\n    var ret = '' + p.data;\n    while (p = p.next) {\n      ret += s + p.data;\n    }return ret;\n  };\n\n  BufferList.prototype.concat = function concat(n) {\n    if (this.length === 0) return Buffer.alloc(0);\n    if (this.length === 1) return this.head.data;\n    var ret = Buffer.allocUnsafe(n >>> 0);\n    var p = this.head;\n    var i = 0;\n    while (p) {\n      copyBuffer(p.data, ret, i);\n      i += p.data.length;\n      p = p.next;\n    }\n    return ret;\n  };\n\n  return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n  module.exports.prototype[util.inspect.custom] = function () {\n    var obj = util.inspect({ length: this.length });\n    return this.constructor.name + ' ' + obj;\n  };\n}", "var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n", "(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "module.exports = require('./lib/_stream_writable.js');\n", "module.exports = require('./lib/_stream_duplex.js');\n", "module.exports = require('./readable').Transform\n", "module.exports = require('./readable').PassThrough\n", "module.exports = require(\"core-js-pure/features/reflect/get\");", "var parent = require('../../actual/reflect/get');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/reflect/get');\n\nmodule.exports = parent;\n", "var parent = require('../../es/reflect/get');\n\nmodule.exports = parent;\n", "require('../../modules/es.reflect.get');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.get;\n", "var $ = 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", "var hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n  return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\n};\n", "var parent = require('../../actual/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n", "var parent = require('../../es/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.get-own-property-descriptor');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n  return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n", "var $ = 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 FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\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", "var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}\n\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var parent = require('../../actual/object/set-prototype-of');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/set-prototype-of');\n\nmodule.exports = parent;\n", "var parent = require('../../es/object/set-prototype-of');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n", "var $ = 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", "module.exports = require(\"core-js-pure/features/object/get-prototype-of\");", "var parent = require('../../actual/object/get-prototype-of');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/get-prototype-of');\n\nmodule.exports = parent;\n", "var parent = require('../../es/object/get-prototype-of');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.get-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getPrototypeOf;\n", "var $ = 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", "var parent = require('../../actual/object/create');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/create');\n\nmodule.exports = parent;\n", "var parent = require('../../es/object/create');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n  return Object.create(P, D);\n};\n", "var $ = 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", "var parent = require('../../actual/reflect/construct');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/reflect/construct');\n\nmodule.exports = parent;\n", "var parent = require('../../es/reflect/construct');\n\nmodule.exports = parent;\n", "require('../../modules/es.reflect.construct');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.construct;\n", "var $ = 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", "var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/features/map\");", "var parent = require('../../actual/map');\nrequire('../../modules/esnext.map.from');\nrequire('../../modules/esnext.map.of');\nrequire('../../modules/esnext.map.delete-all');\nrequire('../../modules/esnext.map.emplace');\nrequire('../../modules/esnext.map.every');\nrequire('../../modules/esnext.map.filter');\nrequire('../../modules/esnext.map.find');\nrequire('../../modules/esnext.map.find-key');\nrequire('../../modules/esnext.map.group-by');\nrequire('../../modules/esnext.map.includes');\nrequire('../../modules/esnext.map.key-by');\nrequire('../../modules/esnext.map.key-of');\nrequire('../../modules/esnext.map.map-keys');\nrequire('../../modules/esnext.map.map-values');\nrequire('../../modules/esnext.map.merge');\nrequire('../../modules/esnext.map.reduce');\nrequire('../../modules/esnext.map.some');\nrequire('../../modules/esnext.map.update');\n// TODO: remove from `core-js@4`\nrequire('../../modules/esnext.map.upsert');\n// TODO: remove from `core-js@4`\nrequire('../../modules/esnext.map.update-or-insert');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/map');\n\nmodule.exports = parent;\n", "require('../../modules/es.array.iterator');\nrequire('../../modules/es.map');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Map;\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", "// 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", "var 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 defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\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: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (iterable != undefined) 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: undefined,\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    redefineAll(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 data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\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    redefineAll(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) defineProperty(Prototype, 'size', {\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: undefined\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 = undefined;\n        return { value: undefined, done: true };\n      }\n      // return step by kind\n      if (kind == 'keys') return { value: entry.key, done: false };\n      if (kind == 'values') return { value: entry.value, done: false };\n      return { value: [entry.key, entry.value], done: 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", "var $ = require('../internals/export');\nvar from = require('../internals/collection-from');\n\n// `Map.from` method\n// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\n$({ target: 'Map', stat: true }, {\n  from: from\n});\n", "'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar aConstructor = require('../internals/a-constructor');\nvar iterate = require('../internals/iterate');\n\nvar push = [].push;\n\nmodule.exports = function from(source /* , mapFn, thisArg */) {\n  var length = arguments.length;\n  var mapFn = length > 1 ? arguments[1] : undefined;\n  var mapping, array, n, boundFunction;\n  aConstructor(this);\n  mapping = mapFn !== undefined;\n  if (mapping) aCallable(mapFn);\n  if (source == undefined) return new this();\n  array = [];\n  if (mapping) {\n    n = 0;\n    boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined);\n    iterate(source, function (nextItem) {\n      call(push, array, boundFunction(nextItem, n++));\n    });\n  } else {\n    iterate(source, push, { that: array });\n  }\n  return new this(array);\n};\n", "var $ = require('../internals/export');\nvar of = require('../internals/collection-of');\n\n// `Map.of` method\n// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\n$({ target: 'Map', stat: true }, {\n  of: of\n});\n", "'use strict';\nvar arraySlice = require('../internals/array-slice');\n\n// https://tc39.github.io/proposal-setmap-offrom/\nmodule.exports = function of() {\n  return new this(arraySlice(arguments));\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar deleteAll = require('../internals/collection-delete-all');\n\n// `Map.prototype.deleteAll` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  deleteAll: deleteAll\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\n\n// https://github.com/tc39/collection-methods\nmodule.exports = function deleteAll(/* ...elements */) {\n  var collection = anObject(this);\n  var remover = aCallable(collection['delete']);\n  var allDeleted = true;\n  var wasDeleted;\n  for (var k = 0, len = arguments.length; k < len; k++) {\n    wasDeleted = call(remover, collection, arguments[k]);\n    allDeleted = allDeleted && wasDeleted;\n  }\n  return !!allDeleted;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar emplace = require('../internals/map-emplace');\n\n// `Map.prototype.emplace` method\n// https://github.com/thumbsupep/proposal-upsert\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  emplace: emplace\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\n\n// `Map.prototype.emplace` method\n// https://github.com/thumbsupep/proposal-upsert\nmodule.exports = function emplace(key, handler) {\n  var map = anObject(this);\n  var get = aCallable(map.get);\n  var has = aCallable(map.has);\n  var set = aCallable(map.set);\n  var value = (call(has, map, key) && 'update' in handler)\n    ? handler.update(call(get, map, key), key, map)\n    : handler.insert(key, map);\n  call(set, map, key, value);\n  return value;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar anObject = require('../internals/an-object');\nvar bind = require('../internals/function-bind-context');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.every` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  every: function every(callbackfn /* , thisArg */) {\n    var map = anObject(this);\n    var iterator = getMapIterator(map);\n    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return !iterate(iterator, function (key, value, stop) {\n      if (!boundFunction(value, key, map)) return stop();\n    }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).stopped;\n  }\n});\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar speciesConstructor = require('../internals/species-constructor');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.filter` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    var map = anObject(this);\n    var iterator = getMapIterator(map);\n    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();\n    var setter = aCallable(newMap.set);\n    iterate(iterator, function (key, value) {\n      if (boundFunction(value, key, map)) call(setter, newMap, key, value);\n    }, { AS_ENTRIES: true, IS_ITERATOR: true });\n    return newMap;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar anObject = require('../internals/an-object');\nvar bind = require('../internals/function-bind-context');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.find` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  find: function find(callbackfn /* , thisArg */) {\n    var map = anObject(this);\n    var iterator = getMapIterator(map);\n    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return iterate(iterator, function (key, value, stop) {\n      if (boundFunction(value, key, map)) return stop(value);\n    }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar anObject = require('../internals/an-object');\nvar bind = require('../internals/function-bind-context');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.findKey` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  findKey: function findKey(callbackfn /* , thisArg */) {\n    var map = anObject(this);\n    var iterator = getMapIterator(map);\n    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return iterate(iterator, function (key, value, stop) {\n      if (boundFunction(value, key, map)) return stop(key);\n    }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar getIterator = require('../internals/get-iterator');\nvar iterate = require('../internals/iterate');\n\nvar push = uncurryThis([].push);\n\n// `Map.groupBy` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', stat: true }, {\n  groupBy: function groupBy(iterable, keyDerivative) {\n    aCallable(keyDerivative);\n    var iterator = getIterator(iterable);\n    var newMap = new this();\n    var has = aCallable(newMap.has);\n    var get = aCallable(newMap.get);\n    var set = aCallable(newMap.set);\n    iterate(iterator, function (element) {\n      var derivedKey = keyDerivative(element);\n      if (!call(has, newMap, derivedKey)) call(set, newMap, derivedKey, [element]);\n      else push(call(get, newMap, derivedKey), element);\n    }, { IS_ITERATOR: true });\n    return newMap;\n  }\n});\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar sameValueZero = require('../internals/same-value-zero');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.includes` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  includes: function includes(searchElement) {\n    return iterate(getMapIterator(anObject(this)), function (key, value, stop) {\n      if (sameValueZero(value, searchElement)) return stop();\n    }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).stopped;\n  }\n});\n", "// `SameValueZero` abstract operation\n// https://tc39.es/ecma262/#sec-samevaluezero\nmodule.exports = function (x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y || x != x && y != y;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\n\n// `Map.keyBy` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', stat: true }, {\n  keyBy: function keyBy(iterable, keyDerivative) {\n    var newMap = new this();\n    aCallable(keyDerivative);\n    var setter = aCallable(newMap.set);\n    iterate(iterable, function (element) {\n      call(setter, newMap, keyDerivative(element), element);\n    });\n    return newMap;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar anObject = require('../internals/an-object');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.keyOf` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  keyOf: function keyOf(searchElement) {\n    return iterate(getMapIterator(anObject(this)), function (key, value, stop) {\n      if (value === searchElement) return stop(key);\n    }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).result;\n  }\n});\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar speciesConstructor = require('../internals/species-constructor');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.mapKeys` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  mapKeys: function mapKeys(callbackfn /* , thisArg */) {\n    var map = anObject(this);\n    var iterator = getMapIterator(map);\n    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();\n    var setter = aCallable(newMap.set);\n    iterate(iterator, function (key, value) {\n      call(setter, newMap, boundFunction(value, key, map), value);\n    }, { AS_ENTRIES: true, IS_ITERATOR: true });\n    return newMap;\n  }\n});\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar speciesConstructor = require('../internals/species-constructor');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.mapValues` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  mapValues: function mapValues(callbackfn /* , thisArg */) {\n    var map = anObject(this);\n    var iterator = getMapIterator(map);\n    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();\n    var setter = aCallable(newMap.set);\n    iterate(iterator, function (key, value) {\n      call(setter, newMap, key, boundFunction(value, key, map));\n    }, { AS_ENTRIES: true, IS_ITERATOR: true });\n    return newMap;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar iterate = require('../internals/iterate');\n\n// `Map.prototype.merge` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  merge: function merge(iterable /* ...iterables */) {\n    var map = anObject(this);\n    var setter = aCallable(map.set);\n    var argumentsLength = arguments.length;\n    var i = 0;\n    while (i < argumentsLength) {\n      iterate(arguments[i++], setter, { that: map, AS_ENTRIES: true });\n    }\n    return map;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar anObject = require('../internals/an-object');\nvar aCallable = require('../internals/a-callable');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\nvar TypeError = global.TypeError;\n\n// `Map.prototype.reduce` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var map = anObject(this);\n    var iterator = getMapIterator(map);\n    var noInitial = arguments.length < 2;\n    var accumulator = noInitial ? undefined : arguments[1];\n    aCallable(callbackfn);\n    iterate(iterator, function (key, value) {\n      if (noInitial) {\n        noInitial = false;\n        accumulator = value;\n      } else {\n        accumulator = callbackfn(accumulator, value, key, map);\n      }\n    }, { AS_ENTRIES: true, IS_ITERATOR: true });\n    if (noInitial) throw TypeError('Reduce of empty map with no initial value');\n    return accumulator;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar anObject = require('../internals/an-object');\nvar bind = require('../internals/function-bind-context');\nvar getMapIterator = require('../internals/get-map-iterator');\nvar iterate = require('../internals/iterate');\n\n// `Set.prototype.some` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  some: function some(callbackfn /* , thisArg */) {\n    var map = anObject(this);\n    var iterator = getMapIterator(map);\n    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return iterate(iterator, function (key, value, stop) {\n      if (boundFunction(value, key, map)) return stop();\n    }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).stopped;\n  }\n});\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar aCallable = require('../internals/a-callable');\n\nvar TypeError = global.TypeError;\n\n// `Set.prototype.update` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  update: function update(key, callback /* , thunk */) {\n    var map = anObject(this);\n    var get = aCallable(map.get);\n    var has = aCallable(map.has);\n    var set = aCallable(map.set);\n    var length = arguments.length;\n    aCallable(callback);\n    var isPresentInMap = call(has, map, key);\n    if (!isPresentInMap && length < 3) {\n      throw TypeError('Updating absent value');\n    }\n    var value = isPresentInMap ? call(get, map, key) : aCallable(length > 2 ? arguments[2] : undefined)(key, map);\n    call(set, map, key, callback(value, key, map));\n    return map;\n  }\n});\n", "'use strict';\n// TODO: remove from `core-js@4`\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar upsert = require('../internals/map-upsert');\n\n// `Map.prototype.upsert` method (replaced by `Map.prototype.emplace`)\n// https://github.com/thumbsupep/proposal-upsert\n$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {\n  upsert: upsert\n});\n", "'use strict';\n// TODO: remove from `core-js@4`\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar upsert = require('../internals/map-upsert');\n\n// `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.emplace`)\n// https://github.com/thumbsupep/proposal-upsert\n$({ target: 'Map', proto: true, real: true, name: 'upsert', forced: IS_PURE }, {\n  updateOrInsert: upsert\n});\n", "var _indexOfInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/index-of\");\n\nfunction _isNativeFunction(fn) {\n  var _context;\n\n  return _indexOfInstanceProperty(_context = Function.toString.call(fn)).call(_context, \"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var parent = require('../../actual/instance/index-of');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/instance/index-of');\n\nmodule.exports = parent;\n", "var _Reflect$construct = require(\"@babel/runtime-corejs3/core-js/reflect/construct\");\n\nvar _bindInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/bind\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    module.exports = _construct = _Reflect$construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  } else {\n    module.exports = _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n\n      var Constructor = _bindInstanceProperty(Function).apply(Parent, a);\n\n      var instance = new Constructor();\n      if (Class) setPrototypeOf(instance, Class.prototype);\n      return instance;\n    }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  }\n\n  return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/features/instance/bind\");", "var parent = require('../../actual/instance/bind');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/instance/bind');\n\nmodule.exports = parent;\n", "var parent = require('../../es/instance/every');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/every');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.every;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.every) ? method : own;\n};\n", "require('../../../modules/es.array.every');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').every;\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", "require('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/keys');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.keys;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n", "var parent = require('../../../es/array/virtual/keys');\n\nmodule.exports = parent;\n", "require('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').keys;\n", "var parent = require('../../es/instance/find-index');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/find-index');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.findIndex;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.findIndex) ? method : own;\n};\n", "require('../../../modules/es.array.find-index');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').findIndex;\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\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", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl1 (num) {\n  return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha1\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n  this._a = 0xc1059ed8\n  this._b = 0x367cd507\n  this._c = 0x3070dd17\n  this._d = 0xf70e5939\n  this._e = 0xffc00b31\n  this._f = 0x68581511\n  this._g = 0x64f98fa7\n  this._h = 0xbefa4fa4\n\n  return this\n}\n\nSha224.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(28)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n\n  return H\n}\n\nmodule.exports = Sha224\n", "var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n  this._ah = 0xcbbb9d5d\n  this._bh = 0x629a292a\n  this._ch = 0x9159015a\n  this._dh = 0x152fecd8\n  this._eh = 0x67332667\n  this._fh = 0x8eb44a87\n  this._gh = 0xdb0c2e0d\n  this._hh = 0x47b5481d\n\n  this._al = 0xc1059ed8\n  this._bl = 0x367cd507\n  this._cl = 0x3070dd17\n  this._dl = 0xf70e5939\n  this._el = 0xffc00b31\n  this._fl = 0x68581511\n  this._gl = 0x64f98fa7\n  this._hl = 0xbefa4fa4\n\n  return this\n}\n\nSha384.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(48)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n\n  return H\n}\n\nmodule.exports = Sha384\n", "/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n *  `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n  eachFunc(collection, function(value, index, collection) {\n    accumulator = initAccum\n      ? (initAccum = false, value)\n      : iteratee(accumulator, value, index, collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseReduce;\n", "var parent = require('../../actual/object/keys');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/keys');\n\nmodule.exports = parent;\n", "var parent = require('../../actual/object/get-own-property-symbols');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/get-own-property-symbols');\n\nmodule.exports = parent;\n", "var parent = require('../../es/object/get-own-property-symbols');\n\nmodule.exports = parent;\n", "require('../../modules/es.symbol');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertySymbols;\n", "module.exports = require(\"core-js-pure/features/instance/filter\");", "var parent = require('../../actual/instance/filter');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/instance/filter');\n\nmodule.exports = parent;\n", "module.exports = require(\"core-js-pure/features/instance/for-each\");", "var parent = require('../../actual/instance/for-each');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/instance/for-each');\n\nmodule.exports = parent;\n", "module.exports = require(\"core-js-pure/features/object/get-own-property-descriptors\");", "var parent = require('../../actual/object/get-own-property-descriptors');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/get-own-property-descriptors');\n\nmodule.exports = parent;\n", "var parent = require('../../es/object/get-own-property-descriptors');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.get-own-property-descriptors');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertyDescriptors;\n", "var $ = 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", "module.exports = require(\"core-js-pure/features/object/define-properties\");", "var parent = require('../../actual/object/define-properties');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/define-properties');\n\nmodule.exports = parent;\n", "var parent = require('../../es/object/define-properties');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.define-properties');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperties = module.exports = function defineProperties(T, D) {\n  return Object.defineProperties(T, D);\n};\n\nif (Object.defineProperties.sham) defineProperties.sham = true;\n", "var $ = 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", "var _Object$keys = require(\"@babel/runtime-corejs3/core-js/object/keys\");\n\nvar _indexOfInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/index-of\");\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n\n  var sourceKeys = _Object$keys(source);\n\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "module.exports = require(\"core-js-pure/features/promise\");", "var parent = require('../../actual/promise');\nrequire('../../modules/esnext.aggregate-error');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.promise.all-settled');\nrequire('../../modules/esnext.promise.try');\nrequire('../../modules/esnext.promise.any');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/promise');\n\nmodule.exports = parent;\n", "require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n", "var 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", "var uncurryThis = require('../internals/function-uncurry-this');\n\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');\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') {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n", "var 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", "var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n", "var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = 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 $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\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 inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\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#finally in the pure version for preventing prototype pollution\n  if (IS_PURE && !PromisePrototype['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 >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = new PromiseConstructor(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 && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\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(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    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, global, 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, global, 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 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) {\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 = getInternalState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n  PromisePrototype = PromiseConstructor.prototype;\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: undefined\n    });\n  };\n  Internal.prototype = redefineAll(PromisePrototype, {\n    // `Promise.prototype.then` method\n    // https://tc39.es/ecma262/#sec-promise.prototype.then\n    // eslint-disable-next-line unicorn/no-thenable -- safe\n    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    // `Promise.prototype.catch` method\n    // https://tc39.es/ecma262/#sec-promise.prototype.catch\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\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(NativePromise) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      redefine(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      // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n      redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { 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$({ global: true, wrap: true, forced: FORCED }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n  // `Promise.reject` method\n  // https://tc39.es/ecma262/#sec-promise.reject\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    call(capability.reject, undefined, r);\n    return capability.promise;\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n  // `Promise.resolve` method\n  // https://tc39.es/ecma262/#sec-promise.resolve\n  resolve: function resolve(x) {\n    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n  // `Promise.all` method\n  // https://tc39.es/ecma262/#sec-promise.all\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(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  // `Promise.race` method\n  // https://tc39.es/ecma262/#sec-promise.race\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(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", "var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\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.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // strange IE + webpack dev server bug - use .bind(global)\n    macrotask = bind(macrotask, global);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n", "var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n", "var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n", "var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length == 1 ? console.error(a) : console.error(a, b);\n  }\n};\n", "var 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    if (this.head) this.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      this.head = entry.next;\n      if (this.tail === entry) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n", "module.exports = typeof window == 'object';\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-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 redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n  // eslint-disable-next-line unicorn/no-thenable -- required for testing\n  NativePromise.prototype['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(NativePromise)) {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromise.prototype['finally'] !== method) {\n    redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n  }\n}\n", "// TODO: Remove from `core-js@4`\nrequire('../modules/es.aggregate-error');\n", "// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.all-settled.js');\n", "'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\n\n// `Promise.try` method\n// https://github.com/tc39/proposal-promise-try\n$({ target: 'Promise', stat: true }, {\n  'try': function (callbackfn) {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    var result = perform(callbackfn);\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n    return promiseCapability.promise;\n  }\n});\n", "// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.any');\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 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    generator._invoke = 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  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\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    this._invoke = 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 method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (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\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' 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(object) {\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", "var parent = require('../../es/object/values');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n", "var $ = 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", "var parent = require('../../es/date/now');\n\nmodule.exports = parent;\n", "require('../../modules/es.date.now');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Date.now;\n", "var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Date = global.Date;\nvar getTime = 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 getTime(new Date());\n  }\n});\n", "'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n", "var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n", "var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nmodule.exports = baseSet;\n", "module.exports = require(\"core-js-pure/features/object/assign\");", "var parent = require('../../actual/object/assign');\n\nmodule.exports = parent;\n", "var parent = require('../../stable/object/assign');\n\nmodule.exports = parent;\n", "/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n", "/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n", "/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n", "var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n", "/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n", "var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n", "var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n", "var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n", "var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n", "var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n", "var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n", "/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n", "var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n", "var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n", "var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n", "var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n", "var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n", "var castPath = require('./_castPath'),\n    last = require('./last'),\n    parent = require('./_parent'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n", "var baseGet = require('./_baseGet'),\n    baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n", "var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n", "var flatten = require('./flatten'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n", "var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n", "var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n", "var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n", "var parent = require('../../es/instance/repeat');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../string/virtual/repeat');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n  var own = it.repeat;\n  return typeof it == 'string' || it === StringPrototype\n    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.repeat) ? method : own;\n};\n", "require('../../../modules/es.string.repeat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').repeat;\n", "var $ = 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 global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.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 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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(CopyToClipboard, _React$PureComponent);\n\n  function CopyToClipboard() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, CopyToClipboard);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CopyToClipboard)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n      var _this$props = _this.props,\n          text = _this$props.text,\n          onCopy = _this$props.onCopy,\n          children = _this$props.children,\n          options = _this$props.options;\n\n      var elem = _react[\"default\"].Children.only(children);\n\n      var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n      if (onCopy) {\n        onCopy(text, result);\n      } // Bypass onClick if it was present\n\n\n      if (elem && elem.props && typeof elem.props.onClick === 'function') {\n        elem.props.onClick(event);\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(CopyToClipboard, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          _text = _this$props2.text,\n          _onCopy = _this$props2.onCopy,\n          _options = _this$props2.options,\n          children = _this$props2.children,\n          props = _objectWithoutProperties(_this$props2, [\"text\", \"onCopy\", \"options\", \"children\"]);\n\n      var elem = _react[\"default\"].Children.only(children);\n\n      return _react[\"default\"].cloneElement(elem, _objectSpread({}, props, {\n        onClick: this.onClick\n      }));\n    }\n  }]);\n\n  return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n  onCopy: undefined,\n  options: undefined\n});", "\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n  \"text/plain\": \"Text\",\n  \"text/html\": \"Url\",\n  \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug,\n    message,\n    reselectPrevious,\n    range,\n    selection,\n    mark,\n    success = false;\n  if (!options) {\n    options = {};\n  }\n  debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement(\"span\");\n    mark.textContent = text;\n    // reset user styles for span element\n    mark.style.all = \"unset\";\n    // prevents scrolling to the end of the page\n    mark.style.position = \"fixed\";\n    mark.style.top = 0;\n    mark.style.clip = \"rect(0, 0, 0, 0)\";\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = \"pre\";\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = \"text\";\n    mark.style.MozUserSelect = \"text\";\n    mark.style.msUserSelect = \"text\";\n    mark.style.userSelect = \"text\";\n    mark.addEventListener(\"copy\", function(e) {\n      e.stopPropagation();\n      if (options.format) {\n        e.preventDefault();\n        if (typeof e.clipboardData === \"undefined\") { // IE 11\n          debug && console.warn(\"unable to use e.clipboardData\");\n          debug && console.warn(\"trying IE specific stuff\");\n          window.clipboardData.clearData();\n          var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n          window.clipboardData.setData(format, text);\n        } else { // all other browsers\n          e.clipboardData.clearData();\n          e.clipboardData.setData(options.format, text);\n        }\n      }\n      if (options.onCopy) {\n        e.preventDefault();\n        options.onCopy(e.clipboardData);\n      }\n    });\n\n    document.body.appendChild(mark);\n\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n\n    var successful = document.execCommand(\"copy\");\n    if (!successful) {\n      throw new Error(\"copy command was unsuccessful\");\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error(\"unable to copy using execCommand: \", err);\n    debug && console.warn(\"trying IE specific stuff\");\n    try {\n      window.clipboardData.setData(options.format || \"text\", text);\n      options.onCopy && options.onCopy(window.clipboardData);\n      success = true;\n    } catch (err) {\n      debug && console.error(\"unable to copy using clipboardData: \", err);\n      debug && console.error(\"falling back to prompt\");\n      message = format(\"message\" in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == \"function\") {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;\n", "\nmodule.exports = function () {\n  var selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  var active = document.activeElement;\n\n  var ranges = [];\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' &&\n    selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function(range) {\n        selection.addRange(range);\n      });\n    }\n\n    active &&\n    active.focus();\n  };\n};\n", "function deepFreeze(obj) {\n    if (obj instanceof Map) {\n        obj.clear = obj.delete = obj.set = function () {\n            throw new Error('map is read-only');\n        };\n    } else if (obj instanceof Set) {\n        obj.add = obj.clear = obj.delete = function () {\n            throw new Error('set is read-only');\n        };\n    }\n\n    // Freeze self\n    Object.freeze(obj);\n\n    Object.getOwnPropertyNames(obj).forEach(function (name) {\n        var prop = obj[name];\n\n        // Freeze prop if it is an object\n        if (typeof prop == 'object' && !Object.isFrozen(prop)) {\n            deepFreeze(prop);\n        }\n    });\n\n    return obj;\n}\n\nvar deepFreezeEs6 = deepFreeze;\nvar _default = deepFreeze;\ndeepFreezeEs6.default = _default;\n\n/** @implements CallbackResponse */\nclass Response {\n  /**\n   * @param {CompiledMode} mode\n   */\n  constructor(mode) {\n    // eslint-disable-next-line no-undefined\n    if (mode.data === undefined) mode.data = {};\n\n    this.data = mode.data;\n    this.isMatchIgnored = false;\n  }\n\n  ignoreMatch() {\n    this.isMatchIgnored = true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n  return value\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#x27;');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit(original, ...objects) {\n  /** @type Record<string,any> */\n  const result = Object.create(null);\n\n  for (const key in original) {\n    result[key] = original[key];\n  }\n  objects.forEach(function(obj) {\n    for (const key in obj) {\n      result[key] = obj[key];\n    }\n  });\n  return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{kind?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n  return !!node.kind;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n  /**\n   * Creates a new HTMLRenderer\n   *\n   * @param {Tree} parseTree - the parse tree (must support `walk` API)\n   * @param {{classPrefix: string}} options\n   */\n  constructor(parseTree, options) {\n    this.buffer = \"\";\n    this.classPrefix = options.classPrefix;\n    parseTree.walk(this);\n  }\n\n  /**\n   * Adds texts to the output stream\n   *\n   * @param {string} text */\n  addText(text) {\n    this.buffer += escapeHTML(text);\n  }\n\n  /**\n   * Adds a node open to the output stream (if needed)\n   *\n   * @param {Node} node */\n  openNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    let className = node.kind;\n    if (!node.sublanguage) {\n      className = `${this.classPrefix}${className}`;\n    }\n    this.span(className);\n  }\n\n  /**\n   * Adds a node close to the output stream (if needed)\n   *\n   * @param {Node} node */\n  closeNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    this.buffer += SPAN_CLOSE;\n  }\n\n  /**\n   * returns the accumulated buffer\n  */\n  value() {\n    return this.buffer;\n  }\n\n  // helpers\n\n  /**\n   * Builds a span element\n   *\n   * @param {string} className */\n  span(className) {\n    this.buffer += `<span class=\"${className}\">`;\n  }\n}\n\n/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} | string} Node */\n/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} } DataNode */\n/**  */\n\nclass TokenTree {\n  constructor() {\n    /** @type DataNode */\n    this.rootNode = { children: [] };\n    this.stack = [this.rootNode];\n  }\n\n  get top() {\n    return this.stack[this.stack.length - 1];\n  }\n\n  get root() { return this.rootNode; }\n\n  /** @param {Node} node */\n  add(node) {\n    this.top.children.push(node);\n  }\n\n  /** @param {string} kind */\n  openNode(kind) {\n    /** @type Node */\n    const node = { kind, children: [] };\n    this.add(node);\n    this.stack.push(node);\n  }\n\n  closeNode() {\n    if (this.stack.length > 1) {\n      return this.stack.pop();\n    }\n    // eslint-disable-next-line no-undefined\n    return undefined;\n  }\n\n  closeAllNodes() {\n    while (this.closeNode());\n  }\n\n  toJSON() {\n    return JSON.stringify(this.rootNode, null, 4);\n  }\n\n  /**\n   * @typedef { import(\"./html_renderer\").Renderer } Renderer\n   * @param {Renderer} builder\n   */\n  walk(builder) {\n    // this does not\n    return this.constructor._walk(builder, this.rootNode);\n    // this works\n    // return TokenTree._walk(builder, this.rootNode);\n  }\n\n  /**\n   * @param {Renderer} builder\n   * @param {Node} node\n   */\n  static _walk(builder, node) {\n    if (typeof node === \"string\") {\n      builder.addText(node);\n    } else if (node.children) {\n      builder.openNode(node);\n      node.children.forEach((child) => this._walk(builder, child));\n      builder.closeNode(node);\n    }\n    return builder;\n  }\n\n  /**\n   * @param {Node} node\n   */\n  static _collapse(node) {\n    if (typeof node === \"string\") return;\n    if (!node.children) return;\n\n    if (node.children.every(el => typeof el === \"string\")) {\n      // node.text = node.children.join(\"\");\n      // delete node.children;\n      node.children = [node.children.join(\"\")];\n    } else {\n      node.children.forEach((child) => {\n        TokenTree._collapse(child);\n      });\n    }\n  }\n}\n\n/**\n  Currently this is all private API, but this is the minimal API necessary\n  that an Emitter must implement to fully support the parser.\n\n  Minimal interface:\n\n  - addKeyword(text, kind)\n  - addText(text)\n  - addSublanguage(emitter, subLanguageName)\n  - finalize()\n  - openNode(kind)\n  - closeNode()\n  - closeAllNodes()\n  - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n  /**\n   * @param {*} options\n   */\n  constructor(options) {\n    super();\n    this.options = options;\n  }\n\n  /**\n   * @param {string} text\n   * @param {string} kind\n   */\n  addKeyword(text, kind) {\n    if (text === \"\") { return; }\n\n    this.openNode(kind);\n    this.addText(text);\n    this.closeNode();\n  }\n\n  /**\n   * @param {string} text\n   */\n  addText(text) {\n    if (text === \"\") { return; }\n\n    this.add(text);\n  }\n\n  /**\n   * @param {Emitter & {root: DataNode}} emitter\n   * @param {string} name\n   */\n  addSublanguage(emitter, name) {\n    /** @type DataNode */\n    const node = emitter.root;\n    node.kind = name;\n    node.sublanguage = true;\n    this.add(node);\n  }\n\n  toHTML() {\n    const renderer = new HTMLRenderer(this, this.options);\n    return renderer.value();\n  }\n\n  finalize() {\n    return true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\nfunction escape(value) {\n  return new RegExp(value.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'm');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n  const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n  return joined;\n}\n\n/**\n * @param {RegExp} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n  return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n  const match = re && re.exec(lexeme);\n  return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n//   interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n//   follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {string} separator\n * @returns {string}\n */\nfunction join(regexps, separator = \"|\") {\n  let numCaptures = 0;\n\n  return regexps.map((regex) => {\n    numCaptures += 1;\n    const offset = numCaptures;\n    let re = source(regex);\n    let out = '';\n\n    while (re.length > 0) {\n      const match = BACKREF_RE.exec(re);\n      if (!match) {\n        out += re;\n        break;\n      }\n      out += re.substring(0, match.index);\n      re = re.substring(match.index + match[0].length);\n      if (match[0][0] === '\\\\' && match[1]) {\n        // Adjust the backreference.\n        out += '\\\\' + String(Number(match[1]) + offset);\n      } else {\n        out += match[0];\n        if (match[0] === '(') {\n          numCaptures++;\n        }\n      }\n    }\n    return out;\n  }).map(re => `(${re})`).join(separator);\n}\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n  const beginShebang = /^#![ ]*\\//;\n  if (opts.binary) {\n    opts.begin = concat(\n      beginShebang,\n      /.*\\b/,\n      opts.binary,\n      /\\b.*/);\n  }\n  return inherit({\n    className: 'meta',\n    begin: beginShebang,\n    end: /$/,\n    relevance: 0,\n    /** @type {ModeCallback} */\n    \"on:begin\": (m, resp) => {\n      if (m.index !== 0) resp.ignoreMatch();\n    }\n  }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n  begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n  className: 'string',\n  begin: '\\'',\n  end: '\\'',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n  className: 'string',\n  begin: '\"',\n  end: '\"',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n  begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n  const mode = inherit(\n    {\n      className: 'comment',\n      begin,\n      end,\n      contains: []\n    },\n    modeOptions\n  );\n  mode.contains.push(PHRASAL_WORDS_MODE);\n  mode.contains.push({\n    className: 'doctag',\n    begin: '(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',\n    relevance: 0\n  });\n  return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n  className: 'number',\n  begin: NUMBER_RE,\n  relevance: 0\n};\nconst C_NUMBER_MODE = {\n  className: 'number',\n  begin: C_NUMBER_RE,\n  relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n  className: 'number',\n  begin: BINARY_NUMBER_RE,\n  relevance: 0\n};\nconst CSS_NUMBER_MODE = {\n  className: 'number',\n  begin: NUMBER_RE + '(' +\n    '%|em|ex|ch|rem' +\n    '|vw|vh|vmin|vmax' +\n    '|cm|mm|in|pt|pc|px' +\n    '|deg|grad|rad|turn' +\n    '|s|ms' +\n    '|Hz|kHz' +\n    '|dpi|dpcm|dppx' +\n    ')?',\n  relevance: 0\n};\nconst REGEXP_MODE = {\n  // this outer rule makes sure we actually have a WHOLE regex and not simply\n  // an expression such as:\n  //\n  //     3 / something\n  //\n  // (which will then blow up when regex's `illegal` sees the newline)\n  begin: /(?=\\/[^/\\n]*\\/)/,\n  contains: [{\n    className: 'regexp',\n    begin: /\\//,\n    end: /\\/[gimuy]*/,\n    illegal: /\\n/,\n    contains: [\n      BACKSLASH_ESCAPE,\n      {\n        begin: /\\[/,\n        end: /\\]/,\n        relevance: 0,\n        contains: [BACKSLASH_ESCAPE]\n      }\n    ]\n  }]\n};\nconst TITLE_MODE = {\n  className: 'title',\n  begin: IDENT_RE,\n  relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n  className: 'title',\n  begin: UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\nconst METHOD_GUARD = {\n  // excludes method names from keyword processing\n  begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n  return Object.assign(mode,\n    {\n      /** @type {ModeCallback} */\n      'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n      /** @type {ModeCallback} */\n      'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n    });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n    IDENT_RE: IDENT_RE,\n    UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n    NUMBER_RE: NUMBER_RE,\n    C_NUMBER_RE: C_NUMBER_RE,\n    BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n    RE_STARTERS_RE: RE_STARTERS_RE,\n    SHEBANG: SHEBANG,\n    BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n    APOS_STRING_MODE: APOS_STRING_MODE,\n    QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n    PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n    COMMENT: COMMENT,\n    C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n    C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n    HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n    NUMBER_MODE: NUMBER_MODE,\n    C_NUMBER_MODE: C_NUMBER_MODE,\n    BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n    CSS_NUMBER_MODE: CSS_NUMBER_MODE,\n    REGEXP_MODE: REGEXP_MODE,\n    TITLE_MODE: TITLE_MODE,\n    UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE,\n    METHOD_GUARD: METHOD_GUARD,\n    END_SAME_AS_BEGIN: END_SAME_AS_BEGIN\n});\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`.  The extension then just moves `match` into\n// `begin` when it runs.  Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfhasPrecedingDot(match, response) {\n  const before = match.input[match.index - 1];\n  if (before === \".\") {\n    response.ignoreMatch();\n  }\n}\n\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n  if (!parent) return;\n  if (!mode.beginKeywords) return;\n\n  // for languages with keywords that include non-word characters checking for\n  // a word boundary is not sufficient, so instead we check for a word boundary\n  // or whitespace - this does no harm in any case since our keyword engine\n  // doesn't allow spaces in keywords anyways and we still check for the boundary\n  // first\n  mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n  mode.__beforeBegin = skipIfhasPrecedingDot;\n  mode.keywords = mode.keywords || mode.beginKeywords;\n  delete mode.beginKeywords;\n\n  // prevents double relevance, the keywords themselves provide\n  // relevance, the mode doesn't need to double it\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n  if (!Array.isArray(mode.illegal)) return;\n\n  mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n  if (!mode.match) return;\n  if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n  mode.begin = mode.match;\n  delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n  'of',\n  'and',\n  'for',\n  'in',\n  'not',\n  'or',\n  'if',\n  'then',\n  'parent', // common variable name\n  'list', // common variable name\n  'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_CLASSNAME = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, className = DEFAULT_KEYWORD_CLASSNAME) {\n  /** @type KeywordDict */\n  const compiledKeywords = {};\n\n  // input can be a string of keywords, an array of keywords, or a object with\n  // named keys representing className (which can then point to a string or array)\n  if (typeof rawKeywords === 'string') {\n    compileList(className, rawKeywords.split(\" \"));\n  } else if (Array.isArray(rawKeywords)) {\n    compileList(className, rawKeywords);\n  } else {\n    Object.keys(rawKeywords).forEach(function(className) {\n      // collapse all our objects back into the parent object\n      Object.assign(\n        compiledKeywords,\n        compileKeywords(rawKeywords[className], caseInsensitive, className)\n      );\n    });\n  }\n  return compiledKeywords;\n\n  // ---\n\n  /**\n   * Compiles an individual list of keywords\n   *\n   * Ex: \"for if when while|5\"\n   *\n   * @param {string} className\n   * @param {Array<string>} keywordList\n   */\n  function compileList(className, keywordList) {\n    if (caseInsensitive) {\n      keywordList = keywordList.map(x => x.toLowerCase());\n    }\n    keywordList.forEach(function(keyword) {\n      const pair = keyword.split('|');\n      compiledKeywords[pair[0]] = [className, scoreForKeyword(pair[0], pair[1])];\n    });\n  }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n  // manual scores always win over common keywords\n  // so you can force a score of 1 if you really insist\n  if (providedScore) {\n    return Number(providedScore);\n  }\n\n  return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n  return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @param {{plugins: HLJSPlugin[]}} opts\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language, { plugins }) {\n  /**\n   * Builds a regex with the case sensativility of the current language\n   *\n   * @param {RegExp | string} value\n   * @param {boolean} [global]\n   */\n  function langRe(value, global) {\n    return new RegExp(\n      source(value),\n      'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n    );\n  }\n\n  /**\n    Stores multiple regular expressions and allows you to quickly search for\n    them all in a string simultaneously - returning the first match.  It does\n    this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n    and joined by `|` - using match groups to track position.  When a match is\n    found checking which position in the array has content allows us to figure\n    out which of the original regexes / match groups triggered the match.\n\n    The match object itself (the result of `Regex.exec`) is returned but also\n    enhanced by merging in any meta-data that was registered with the regex.\n    This is how we keep track of which mode matched, and what type of rule\n    (`illegal`, `begin`, end, etc).\n  */\n  class MultiRegex {\n    constructor() {\n      this.matchIndexes = {};\n      // @ts-ignore\n      this.regexes = [];\n      this.matchAt = 1;\n      this.position = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      opts.position = this.position++;\n      // @ts-ignore\n      this.matchIndexes[this.matchAt] = opts;\n      this.regexes.push([opts, re]);\n      this.matchAt += countMatchGroups(re) + 1;\n    }\n\n    compile() {\n      if (this.regexes.length === 0) {\n        // avoids the need to check length every time exec is called\n        // @ts-ignore\n        this.exec = () => null;\n      }\n      const terminators = this.regexes.map(el => el[1]);\n      this.matcherRe = langRe(join(terminators), true);\n      this.lastIndex = 0;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      this.matcherRe.lastIndex = this.lastIndex;\n      const match = this.matcherRe.exec(s);\n      if (!match) { return null; }\n\n      // eslint-disable-next-line no-undefined\n      const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n      // @ts-ignore\n      const matchData = this.matchIndexes[i];\n      // trim off any earlier non-relevant match groups (ie, the other regex\n      // match groups that make up the multi-matcher)\n      match.splice(0, i);\n\n      return Object.assign(match, matchData);\n    }\n  }\n\n  /*\n    Created to solve the key deficiently with MultiRegex - there is no way to\n    test for multiple matches at a single location.  Why would we need to do\n    that?  In the future a more dynamic engine will allow certain matches to be\n    ignored.  An example: if we matched say the 3rd regex in a large group but\n    decided to ignore it - we'd need to started testing again at the 4th\n    regex... but MultiRegex itself gives us no real way to do that.\n\n    So what this class creates MultiRegexs on the fly for whatever search\n    position they are needed.\n\n    NOTE: These additional MultiRegex objects are created dynamically.  For most\n    grammars most of the time we will never actually need anything more than the\n    first MultiRegex - so this shouldn't have too much overhead.\n\n    Say this is our search group, and we match regex3, but wish to ignore it.\n\n      regex1 | regex2 | regex3 | regex4 | regex5    ' ie, startAt = 0\n\n    What we need is a new MultiRegex that only includes the remaining\n    possibilities:\n\n      regex4 | regex5                               ' ie, startAt = 3\n\n    This class wraps all that complexity up in a simple API... `startAt` decides\n    where in the array of expressions to start doing the matching. It\n    auto-increments, so if a match is found at position 2, then startAt will be\n    set to 3.  If the end is reached startAt will return to 0.\n\n    MOST of the time the parser will be setting startAt manually to 0.\n  */\n  class ResumableMultiRegex {\n    constructor() {\n      // @ts-ignore\n      this.rules = [];\n      // @ts-ignore\n      this.multiRegexes = [];\n      this.count = 0;\n\n      this.lastIndex = 0;\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    getMatcher(index) {\n      if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n      const matcher = new MultiRegex();\n      this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n      matcher.compile();\n      this.multiRegexes[index] = matcher;\n      return matcher;\n    }\n\n    resumingScanAtSamePosition() {\n      return this.regexIndex !== 0;\n    }\n\n    considerAll() {\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      this.rules.push([re, opts]);\n      if (opts.type === \"begin\") this.count++;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      const m = this.getMatcher(this.regexIndex);\n      m.lastIndex = this.lastIndex;\n      let result = m.exec(s);\n\n      // The following is because we have no easy way to say \"resume scanning at the\n      // existing position but also skip the current rule ONLY\". What happens is\n      // all prior rules are also skipped which can result in matching the wrong\n      // thing. Example of matching \"booger\":\n\n      // our matcher is [string, \"booger\", number]\n      //\n      // ....booger....\n\n      // if \"booger\" is ignored then we'd really need a regex to scan from the\n      // SAME position for only: [string, number] but ignoring \"booger\" (if it\n      // was the first match), a simple resume would scan ahead who knows how\n      // far looking only for \"number\", ignoring potential string matches (or\n      // future \"booger\" matches that might be valid.)\n\n      // So what we do: We execute two matchers, one resuming at the same\n      // position, but the second full matcher starting at the position after:\n\n      //     /--- resume first regex match here (for [number])\n      //     |/---- full match here for [string, \"booger\", number]\n      //     vv\n      // ....booger....\n\n      // Which ever results in a match first is then used. So this 3-4 step\n      // process essentially allows us to say \"match at this position, excluding\n      // a prior rule that was ignored\".\n      //\n      // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n      // 2. Resume matching for [number]\n      // 3. Match at index + 1 for [string, \"booger\", number]\n      // 4. If #2 and #3 result in matches, which came first?\n      if (this.resumingScanAtSamePosition()) {\n        if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n          const m2 = this.getMatcher(0);\n          m2.lastIndex = this.lastIndex + 1;\n          result = m2.exec(s);\n        }\n      }\n\n      if (result) {\n        this.regexIndex += result.position + 1;\n        if (this.regexIndex === this.count) {\n          // wrap-around to considering all matches again\n          this.considerAll();\n        }\n      }\n\n      return result;\n    }\n  }\n\n  /**\n   * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n   * the content and find matches.\n   *\n   * @param {CompiledMode} mode\n   * @returns {ResumableMultiRegex}\n   */\n  function buildModeRegex(mode) {\n    const mm = new ResumableMultiRegex();\n\n    mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n    if (mode.terminatorEnd) {\n      mm.addRule(mode.terminatorEnd, { type: \"end\" });\n    }\n    if (mode.illegal) {\n      mm.addRule(mode.illegal, { type: \"illegal\" });\n    }\n\n    return mm;\n  }\n\n  /** skip vs abort vs ignore\n   *\n   * @skip   - The mode is still entered and exited normally (and contains rules apply),\n   *           but all content is held and added to the parent buffer rather than being\n   *           output when the mode ends.  Mostly used with `sublanguage` to build up\n   *           a single large buffer than can be parsed by sublanguage.\n   *\n   *             - The mode begin ands ends normally.\n   *             - Content matched is added to the parent mode buffer.\n   *             - The parser cursor is moved forward normally.\n   *\n   * @abort  - A hack placeholder until we have ignore.  Aborts the mode (as if it\n   *           never matched) but DOES NOT continue to match subsequent `contains`\n   *           modes.  Abort is bad/suboptimal because it can result in modes\n   *           farther down not getting applied because an earlier rule eats the\n   *           content but then aborts.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is added to the mode buffer.\n   *             - The parser cursor is moved forward accordingly.\n   *\n   * @ignore - Ignores the mode (as if it never matched) and continues to match any\n   *           subsequent `contains` modes.  Ignore isn't technically possible with\n   *           the current parser implementation.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is ignored.\n   *             - The parser cursor is not moved forward.\n   */\n\n  /**\n   * Compiles an individual mode\n   *\n   * This can raise an error if the mode contains certain detectable known logic\n   * issues.\n   * @param {Mode} mode\n   * @param {CompiledMode | null} [parent]\n   * @returns {CompiledMode | never}\n   */\n  function compileMode(mode, parent) {\n    const cmode = /** @type CompiledMode */ (mode);\n    if (mode.isCompiled) return cmode;\n\n    [\n      // do this early so compiler extensions generally don't have to worry about\n      // the distinction between match/begin\n      compileMatch\n    ].forEach(ext => ext(mode, parent));\n\n    language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n    // __beforeBegin is considered private API, internal use only\n    mode.__beforeBegin = null;\n\n    [\n      beginKeywords,\n      // do this later so compiler extensions that come earlier have access to the\n      // raw array if they wanted to perhaps manipulate it, etc.\n      compileIllegal,\n      // default to 1 relevance if not specified\n      compileRelevance\n    ].forEach(ext => ext(mode, parent));\n\n    mode.isCompiled = true;\n\n    let keywordPattern = null;\n    if (typeof mode.keywords === \"object\") {\n      keywordPattern = mode.keywords.$pattern;\n      delete mode.keywords.$pattern;\n    }\n\n    if (mode.keywords) {\n      mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n    }\n\n    // both are not allowed\n    if (mode.lexemes && keywordPattern) {\n      throw new Error(\"ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) \");\n    }\n\n    // `mode.lexemes` was the old standard before we added and now recommend\n    // using `keywords.$pattern` to pass the keyword pattern\n    keywordPattern = keywordPattern || mode.lexemes || /\\w+/;\n    cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n    if (parent) {\n      if (!mode.begin) mode.begin = /\\B|\\b/;\n      cmode.beginRe = langRe(mode.begin);\n      if (mode.endSameAsBegin) mode.end = mode.begin;\n      if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n      if (mode.end) cmode.endRe = langRe(mode.end);\n      cmode.terminatorEnd = source(mode.end) || '';\n      if (mode.endsWithParent && parent.terminatorEnd) {\n        cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n      }\n    }\n    if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n    if (!mode.contains) mode.contains = [];\n\n    mode.contains = [].concat(...mode.contains.map(function(c) {\n      return expandOrCloneMode(c === 'self' ? mode : c);\n    }));\n    mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n    if (mode.starts) {\n      compileMode(mode.starts, parent);\n    }\n\n    cmode.matcher = buildModeRegex(cmode);\n    return cmode;\n  }\n\n  if (!language.compilerExtensions) language.compilerExtensions = [];\n\n  // self is not valid at the top-level\n  if (language.contains && language.contains.includes('self')) {\n    throw new Error(\"ERR: contains `self` is not supported at the top-level of a language.  See documentation.\");\n  }\n\n  // we need a null object, which inherit will guarantee\n  language.classNameAliases = inherit(language.classNameAliases || {});\n\n  return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n  if (!mode) return false;\n\n  return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n  if (mode.variants && !mode.cachedVariants) {\n    mode.cachedVariants = mode.variants.map(function(variant) {\n      return inherit(mode, { variants: null }, variant);\n    });\n  }\n\n  // EXPAND\n  // if we have variants then essentially \"replace\" the mode with the variants\n  // this happens in compileMode, where this function is called from\n  if (mode.cachedVariants) {\n    return mode.cachedVariants;\n  }\n\n  // CLONE\n  // if we have dependencies on parents then we need a unique\n  // instance of ourselves, so we can be reused with many\n  // different parents without issue\n  if (dependencyOnParent(mode)) {\n    return inherit(mode, { starts: mode.starts ? inherit(mode.starts) : null });\n  }\n\n  if (Object.isFrozen(mode)) {\n    return inherit(mode);\n  }\n\n  // no special dependency issues, just return ourselves\n  return mode;\n}\n\nvar version = \"10.7.3\";\n\n// @ts-nocheck\n\nfunction hasValueOrEmptyAttribute(value) {\n  return Boolean(value || value === \"\");\n}\n\nfunction BuildVuePlugin(hljs) {\n  const Component = {\n    props: [\"language\", \"code\", \"autodetect\"],\n    data: function() {\n      return {\n        detectedLanguage: \"\",\n        unknownLanguage: false\n      };\n    },\n    computed: {\n      className() {\n        if (this.unknownLanguage) return \"\";\n\n        return \"hljs \" + this.detectedLanguage;\n      },\n      highlighted() {\n        // no idea what language to use, return raw code\n        if (!this.autoDetect && !hljs.getLanguage(this.language)) {\n          console.warn(`The language \"${this.language}\" you specified could not be found.`);\n          this.unknownLanguage = true;\n          return escapeHTML(this.code);\n        }\n\n        let result = {};\n        if (this.autoDetect) {\n          result = hljs.highlightAuto(this.code);\n          this.detectedLanguage = result.language;\n        } else {\n          result = hljs.highlight(this.language, this.code, this.ignoreIllegals);\n          this.detectedLanguage = this.language;\n        }\n        return result.value;\n      },\n      autoDetect() {\n        return !this.language || hasValueOrEmptyAttribute(this.autodetect);\n      },\n      ignoreIllegals() {\n        return true;\n      }\n    },\n    // this avoids needing to use a whole Vue compilation pipeline just\n    // to build Highlight.js\n    render(createElement) {\n      return createElement(\"pre\", {}, [\n        createElement(\"code\", {\n          class: this.className,\n          domProps: { innerHTML: this.highlighted }\n        })\n      ]);\n    }\n    // template: `<pre><code :class=\"className\" v-html=\"highlighted\"></code></pre>`\n  };\n\n  const VuePlugin = {\n    install(Vue) {\n      Vue.component('highlightjs', Component);\n    }\n  };\n\n  return { Component, VuePlugin };\n}\n\n/* plugin itself */\n\n/** @type {HLJSPlugin} */\nconst mergeHTMLPlugin = {\n  \"after:highlightElement\": ({ el, result, text }) => {\n    const originalStream = nodeStream(el);\n    if (!originalStream.length) return;\n\n    const resultNode = document.createElement('div');\n    resultNode.innerHTML = result.value;\n    result.value = mergeStreams(originalStream, nodeStream(resultNode), text);\n  }\n};\n\n/* Stream merging support functions */\n\n/**\n * @typedef Event\n * @property {'start'|'stop'} event\n * @property {number} offset\n * @property {Node} node\n */\n\n/**\n * @param {Node} node\n */\nfunction tag(node) {\n  return node.nodeName.toLowerCase();\n}\n\n/**\n * @param {Node} node\n */\nfunction nodeStream(node) {\n  /** @type Event[] */\n  const result = [];\n  (function _nodeStream(node, offset) {\n    for (let child = node.firstChild; child; child = child.nextSibling) {\n      if (child.nodeType === 3) {\n        offset += child.nodeValue.length;\n      } else if (child.nodeType === 1) {\n        result.push({\n          event: 'start',\n          offset: offset,\n          node: child\n        });\n        offset = _nodeStream(child, offset);\n        // Prevent void elements from having an end tag that would actually\n        // double them in the output. There are more void elements in HTML\n        // but we list only those realistically expected in code display.\n        if (!tag(child).match(/br|hr|img|input/)) {\n          result.push({\n            event: 'stop',\n            offset: offset,\n            node: child\n          });\n        }\n      }\n    }\n    return offset;\n  })(node, 0);\n  return result;\n}\n\n/**\n * @param {any} original - the original stream\n * @param {any} highlighted - stream of the highlighted source\n * @param {string} value - the original source itself\n */\nfunction mergeStreams(original, highlighted, value) {\n  let processed = 0;\n  let result = '';\n  const nodeStack = [];\n\n  function selectStream() {\n    if (!original.length || !highlighted.length) {\n      return original.length ? original : highlighted;\n    }\n    if (original[0].offset !== highlighted[0].offset) {\n      return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n    }\n\n    /*\n    To avoid starting the stream just before it should stop the order is\n    ensured that original always starts first and closes last:\n\n    if (event1 == 'start' && event2 == 'start')\n      return original;\n    if (event1 == 'start' && event2 == 'stop')\n      return highlighted;\n    if (event1 == 'stop' && event2 == 'start')\n      return original;\n    if (event1 == 'stop' && event2 == 'stop')\n      return highlighted;\n\n    ... which is collapsed to:\n    */\n    return highlighted[0].event === 'start' ? original : highlighted;\n  }\n\n  /**\n   * @param {Node} node\n   */\n  function open(node) {\n    /** @param {Attr} attr */\n    function attributeString(attr) {\n      return ' ' + attr.nodeName + '=\"' + escapeHTML(attr.value) + '\"';\n    }\n    // @ts-ignore\n    result += '<' + tag(node) + [].map.call(node.attributes, attributeString).join('') + '>';\n  }\n\n  /**\n   * @param {Node} node\n   */\n  function close(node) {\n    result += '</' + tag(node) + '>';\n  }\n\n  /**\n   * @param {Event} event\n   */\n  function render(event) {\n    (event.event === 'start' ? open : close)(event.node);\n  }\n\n  while (original.length || highlighted.length) {\n    let stream = selectStream();\n    result += escapeHTML(value.substring(processed, stream[0].offset));\n    processed = stream[0].offset;\n    if (stream === original) {\n      /*\n      On any opening or closing tag of the original markup we first close\n      the entire highlighted node stack, then render the original tag along\n      with all the following original tags at the same offset and then\n      reopen all the tags on the highlighted stack.\n      */\n      nodeStack.reverse().forEach(close);\n      do {\n        render(stream.splice(0, 1)[0]);\n        stream = selectStream();\n      } while (stream === original && stream.length && stream[0].offset === processed);\n      nodeStack.reverse().forEach(open);\n    } else {\n      if (stream[0].event === 'start') {\n        nodeStack.push(stream[0].node);\n      } else {\n        nodeStack.pop();\n      }\n      render(stream.splice(0, 1)[0]);\n    }\n  }\n  return result + escapeHTML(value.substr(processed));\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n  console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n  console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n  if (seenDeprecations[`${version}/${message}`]) return;\n\n  console.log(`Deprecated as of ${version}. ${message}`);\n  seenDeprecations[`${version}/${message}`] = true;\n};\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\nconst escape$1 = escapeHTML;\nconst inherit$1 = inherit;\nconst NO_MATCH = Symbol(\"nomatch\");\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n  // Global internal variables used within the highlight.js library.\n  /** @type {Record<string, Language>} */\n  const languages = Object.create(null);\n  /** @type {Record<string, string>} */\n  const aliases = Object.create(null);\n  /** @type {HLJSPlugin[]} */\n  const plugins = [];\n\n  // safe/production mode - swallows more errors, tries to keep running\n  // even if a single syntax or parse hits a fatal error\n  let SAFE_MODE = true;\n  const fixMarkupRe = /(^(<[^>]+>|\\t|)+|\\n)/gm;\n  const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n  /** @type {Language} */\n  const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n  // Global options used when within external APIs. This is modified when\n  // calling the `hljs.configure` function.\n  /** @type HLJSOptions */\n  let options = {\n    noHighlightRe: /^(no-?highlight)$/i,\n    languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n    classPrefix: 'hljs-',\n    tabReplace: null,\n    useBR: false,\n    languages: null,\n    // beta configuration options, subject to change, welcome to discuss\n    // https://github.com/highlightjs/highlight.js/issues/1086\n    __emitter: TokenTreeEmitter\n  };\n\n  /* Utility functions */\n\n  /**\n   * Tests a language name to see if highlighting should be skipped\n   * @param {string} languageName\n   */\n  function shouldNotHighlight(languageName) {\n    return options.noHighlightRe.test(languageName);\n  }\n\n  /**\n   * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n   */\n  function blockLanguage(block) {\n    let classes = block.className + ' ';\n\n    classes += block.parentNode ? block.parentNode.className : '';\n\n    // language-* takes precedence over non-prefixed class names.\n    const match = options.languageDetectRe.exec(classes);\n    if (match) {\n      const language = getLanguage(match[1]);\n      if (!language) {\n        warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n        warn(\"Falling back to no-highlight mode for this block.\", block);\n      }\n      return language ? match[1] : 'no-highlight';\n    }\n\n    return classes\n      .split(/\\s+/)\n      .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n  }\n\n  /**\n   * Core highlighting function.\n   *\n   * OLD API\n   * highlight(lang, code, ignoreIllegals, continuation)\n   *\n   * NEW API\n   * highlight(code, {lang, ignoreIllegals})\n   *\n   * @param {string} codeOrlanguageName - the language to use for highlighting\n   * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n   * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   * @param {CompiledMode} [continuation] - current continuation mode, if any\n   *\n   * @returns {HighlightResult} Result - an object that represents the result\n   * @property {string} language - the language name\n   * @property {number} relevance - the relevance score\n   * @property {string} value - the highlighted HTML code\n   * @property {string} code - the original raw code\n   * @property {CompiledMode} top - top of the current mode stack\n   * @property {boolean} illegal - indicates whether any illegal matches were found\n  */\n  function highlight(codeOrlanguageName, optionsOrCode, ignoreIllegals, continuation) {\n    let code = \"\";\n    let languageName = \"\";\n    if (typeof optionsOrCode === \"object\") {\n      code = codeOrlanguageName;\n      ignoreIllegals = optionsOrCode.ignoreIllegals;\n      languageName = optionsOrCode.language;\n      // continuation not supported at all via the new API\n      // eslint-disable-next-line no-undefined\n      continuation = undefined;\n    } else {\n      // old API\n      deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n      deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n      languageName = codeOrlanguageName;\n      code = optionsOrCode;\n    }\n\n    /** @type {BeforeHighlightContext} */\n    const context = {\n      code,\n      language: languageName\n    };\n    // the plugin can change the desired language or the code to be highlighted\n    // just be changing the object it was passed\n    fire(\"before:highlight\", context);\n\n    // a before plugin can usurp the result completely by providing it's own\n    // in which case we don't even need to call highlight\n    const result = context.result\n      ? context.result\n      : _highlight(context.language, context.code, ignoreIllegals, continuation);\n\n    result.code = context.code;\n    // the plugin can change anything in result to suite it\n    fire(\"after:highlight\", result);\n\n    return result;\n  }\n\n  /**\n   * private highlight that's used internally and does not fire callbacks\n   *\n   * @param {string} languageName - the language to use for highlighting\n   * @param {string} codeToHighlight - the code to highlight\n   * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   * @param {CompiledMode?} [continuation] - current continuation mode, if any\n   * @returns {HighlightResult} - result of the highlight operation\n  */\n  function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n    /**\n     * Return keyword data if a match is a keyword\n     * @param {CompiledMode} mode - current mode\n     * @param {RegExpMatchArray} match - regexp match data\n     * @returns {KeywordData | false}\n     */\n    function keywordData(mode, match) {\n      const matchText = language.case_insensitive ? match[0].toLowerCase() : match[0];\n      return Object.prototype.hasOwnProperty.call(mode.keywords, matchText) && mode.keywords[matchText];\n    }\n\n    function processKeywords() {\n      if (!top.keywords) {\n        emitter.addText(modeBuffer);\n        return;\n      }\n\n      let lastIndex = 0;\n      top.keywordPatternRe.lastIndex = 0;\n      let match = top.keywordPatternRe.exec(modeBuffer);\n      let buf = \"\";\n\n      while (match) {\n        buf += modeBuffer.substring(lastIndex, match.index);\n        const data = keywordData(top, match);\n        if (data) {\n          const [kind, keywordRelevance] = data;\n          emitter.addText(buf);\n          buf = \"\";\n\n          relevance += keywordRelevance;\n          if (kind.startsWith(\"_\")) {\n            // _ implied for relevance only, do not highlight\n            // by applying a class name\n            buf += match[0];\n          } else {\n            const cssClass = language.classNameAliases[kind] || kind;\n            emitter.addKeyword(match[0], cssClass);\n          }\n        } else {\n          buf += match[0];\n        }\n        lastIndex = top.keywordPatternRe.lastIndex;\n        match = top.keywordPatternRe.exec(modeBuffer);\n      }\n      buf += modeBuffer.substr(lastIndex);\n      emitter.addText(buf);\n    }\n\n    function processSubLanguage() {\n      if (modeBuffer === \"\") return;\n      /** @type HighlightResult */\n      let result = null;\n\n      if (typeof top.subLanguage === 'string') {\n        if (!languages[top.subLanguage]) {\n          emitter.addText(modeBuffer);\n          return;\n        }\n        result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n        continuations[top.subLanguage] = /** @type {CompiledMode} */ (result.top);\n      } else {\n        result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n      }\n\n      // Counting embedded language score towards the host language may be disabled\n      // with zeroing the containing mode relevance. Use case in point is Markdown that\n      // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n      // score.\n      if (top.relevance > 0) {\n        relevance += result.relevance;\n      }\n      emitter.addSublanguage(result.emitter, result.language);\n    }\n\n    function processBuffer() {\n      if (top.subLanguage != null) {\n        processSubLanguage();\n      } else {\n        processKeywords();\n      }\n      modeBuffer = '';\n    }\n\n    /**\n     * @param {Mode} mode - new mode to start\n     */\n    function startNewMode(mode) {\n      if (mode.className) {\n        emitter.openNode(language.classNameAliases[mode.className] || mode.className);\n      }\n      top = Object.create(mode, { parent: { value: top } });\n      return top;\n    }\n\n    /**\n     * @param {CompiledMode } mode - the mode to potentially end\n     * @param {RegExpMatchArray} match - the latest match\n     * @param {string} matchPlusRemainder - match plus remainder of content\n     * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n     */\n    function endOfMode(mode, match, matchPlusRemainder) {\n      let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n      if (matched) {\n        if (mode[\"on:end\"]) {\n          const resp = new Response(mode);\n          mode[\"on:end\"](match, resp);\n          if (resp.isMatchIgnored) matched = false;\n        }\n\n        if (matched) {\n          while (mode.endsParent && mode.parent) {\n            mode = mode.parent;\n          }\n          return mode;\n        }\n      }\n      // even if on:end fires an `ignore` it's still possible\n      // that we might trigger the end node because of a parent mode\n      if (mode.endsWithParent) {\n        return endOfMode(mode.parent, match, matchPlusRemainder);\n      }\n    }\n\n    /**\n     * Handle matching but then ignoring a sequence of text\n     *\n     * @param {string} lexeme - string containing full match text\n     */\n    function doIgnore(lexeme) {\n      if (top.matcher.regexIndex === 0) {\n        // no more regexs to potentially match here, so we move the cursor forward one\n        // space\n        modeBuffer += lexeme[0];\n        return 1;\n      } else {\n        // no need to move the cursor, we still have additional regexes to try and\n        // match at this very spot\n        resumeScanAtSamePosition = true;\n        return 0;\n      }\n    }\n\n    /**\n     * Handle the start of a new potential mode match\n     *\n     * @param {EnhancedMatch} match - the current match\n     * @returns {number} how far to advance the parse cursor\n     */\n    function doBeginMatch(match) {\n      const lexeme = match[0];\n      const newMode = match.rule;\n\n      const resp = new Response(newMode);\n      // first internal before callbacks, then the public ones\n      const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n      for (const cb of beforeCallbacks) {\n        if (!cb) continue;\n        cb(match, resp);\n        if (resp.isMatchIgnored) return doIgnore(lexeme);\n      }\n\n      if (newMode && newMode.endSameAsBegin) {\n        newMode.endRe = escape(lexeme);\n      }\n\n      if (newMode.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (newMode.excludeBegin) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (!newMode.returnBegin && !newMode.excludeBegin) {\n          modeBuffer = lexeme;\n        }\n      }\n      startNewMode(newMode);\n      // if (mode[\"after:begin\"]) {\n      //   let resp = new Response(mode);\n      //   mode[\"after:begin\"](match, resp);\n      // }\n      return newMode.returnBegin ? 0 : lexeme.length;\n    }\n\n    /**\n     * Handle the potential end of mode\n     *\n     * @param {RegExpMatchArray} match - the current match\n     */\n    function doEndMatch(match) {\n      const lexeme = match[0];\n      const matchPlusRemainder = codeToHighlight.substr(match.index);\n\n      const endMode = endOfMode(top, match, matchPlusRemainder);\n      if (!endMode) { return NO_MATCH; }\n\n      const origin = top;\n      if (origin.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (!(origin.returnEnd || origin.excludeEnd)) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (origin.excludeEnd) {\n          modeBuffer = lexeme;\n        }\n      }\n      do {\n        if (top.className) {\n          emitter.closeNode();\n        }\n        if (!top.skip && !top.subLanguage) {\n          relevance += top.relevance;\n        }\n        top = top.parent;\n      } while (top !== endMode.parent);\n      if (endMode.starts) {\n        if (endMode.endSameAsBegin) {\n          endMode.starts.endRe = endMode.endRe;\n        }\n        startNewMode(endMode.starts);\n      }\n      return origin.returnEnd ? 0 : lexeme.length;\n    }\n\n    function processContinuations() {\n      const list = [];\n      for (let current = top; current !== language; current = current.parent) {\n        if (current.className) {\n          list.unshift(current.className);\n        }\n      }\n      list.forEach(item => emitter.openNode(item));\n    }\n\n    /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n    let lastMatch = {};\n\n    /**\n     *  Process an individual match\n     *\n     * @param {string} textBeforeMatch - text preceeding the match (since the last match)\n     * @param {EnhancedMatch} [match] - the match itself\n     */\n    function processLexeme(textBeforeMatch, match) {\n      const lexeme = match && match[0];\n\n      // add non-matched text to the current mode buffer\n      modeBuffer += textBeforeMatch;\n\n      if (lexeme == null) {\n        processBuffer();\n        return 0;\n      }\n\n      // we've found a 0 width match and we're stuck, so we need to advance\n      // this happens when we have badly behaved rules that have optional matchers to the degree that\n      // sometimes they can end up matching nothing at all\n      // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n      if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n        // spit the \"skipped\" character that our regex choked on back into the output sequence\n        modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n        if (!SAFE_MODE) {\n          /** @type {AnnotatedError} */\n          const err = new Error('0 width match regex');\n          err.languageName = languageName;\n          err.badRule = lastMatch.rule;\n          throw err;\n        }\n        return 1;\n      }\n      lastMatch = match;\n\n      if (match.type === \"begin\") {\n        return doBeginMatch(match);\n      } else if (match.type === \"illegal\" && !ignoreIllegals) {\n        // illegal match, we do not continue processing\n        /** @type {AnnotatedError} */\n        const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '<unnamed>') + '\"');\n        err.mode = top;\n        throw err;\n      } else if (match.type === \"end\") {\n        const processed = doEndMatch(match);\n        if (processed !== NO_MATCH) {\n          return processed;\n        }\n      }\n\n      // edge case for when illegal matches $ (end of line) which is technically\n      // a 0 width match but not a begin/end match so it's not caught by the\n      // first handler (when ignoreIllegals is true)\n      if (match.type === \"illegal\" && lexeme === \"\") {\n        // advance so we aren't stuck in an infinite loop\n        return 1;\n      }\n\n      // infinite loops are BAD, this is a last ditch catch all. if we have a\n      // decent number of iterations yet our index (cursor position in our\n      // parsing) still 3x behind our index then something is very wrong\n      // so we bail\n      if (iterations > 100000 && iterations > match.index * 3) {\n        const err = new Error('potential infinite loop, way more iterations than matches');\n        throw err;\n      }\n\n      /*\n      Why might be find ourselves here?  Only one occasion now.  An end match that was\n      triggered but could not be completed.  When might this happen?  When an `endSameasBegin`\n      rule sets the end rule to a specific match.  Since the overall mode termination rule that's\n      being used to scan the text isn't recompiled that means that any match that LOOKS like\n      the end (but is not, because it is not an exact match to the beginning) will\n      end up here.  A definite end match, but when `doEndMatch` tries to \"reapply\"\n      the end rule and fails to match, we wind up here, and just silently ignore the end.\n\n      This causes no real harm other than stopping a few times too many.\n      */\n\n      modeBuffer += lexeme;\n      return lexeme.length;\n    }\n\n    const language = getLanguage(languageName);\n    if (!language) {\n      error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n      throw new Error('Unknown language: \"' + languageName + '\"');\n    }\n\n    const md = compileLanguage(language, { plugins });\n    let result = '';\n    /** @type {CompiledMode} */\n    let top = continuation || md;\n    /** @type Record<string,CompiledMode> */\n    const continuations = {}; // keep continuations for sub-languages\n    const emitter = new options.__emitter(options);\n    processContinuations();\n    let modeBuffer = '';\n    let relevance = 0;\n    let index = 0;\n    let iterations = 0;\n    let resumeScanAtSamePosition = false;\n\n    try {\n      top.matcher.considerAll();\n\n      for (;;) {\n        iterations++;\n        if (resumeScanAtSamePosition) {\n          // only regexes not matched previously will now be\n          // considered for a potential match\n          resumeScanAtSamePosition = false;\n        } else {\n          top.matcher.considerAll();\n        }\n        top.matcher.lastIndex = index;\n\n        const match = top.matcher.exec(codeToHighlight);\n        // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n        if (!match) break;\n\n        const beforeMatch = codeToHighlight.substring(index, match.index);\n        const processedCount = processLexeme(beforeMatch, match);\n        index = match.index + processedCount;\n      }\n      processLexeme(codeToHighlight.substr(index));\n      emitter.closeAllNodes();\n      emitter.finalize();\n      result = emitter.toHTML();\n\n      return {\n        // avoid possible breakage with v10 clients expecting\n        // this to always be an integer\n        relevance: Math.floor(relevance),\n        value: result,\n        language: languageName,\n        illegal: false,\n        emitter: emitter,\n        top: top\n      };\n    } catch (err) {\n      if (err.message && err.message.includes('Illegal')) {\n        return {\n          illegal: true,\n          illegalBy: {\n            msg: err.message,\n            context: codeToHighlight.slice(index - 100, index + 100),\n            mode: err.mode\n          },\n          sofar: result,\n          relevance: 0,\n          value: escape$1(codeToHighlight),\n          emitter: emitter\n        };\n      } else if (SAFE_MODE) {\n        return {\n          illegal: false,\n          relevance: 0,\n          value: escape$1(codeToHighlight),\n          emitter: emitter,\n          language: languageName,\n          top: top,\n          errorRaised: err\n        };\n      } else {\n        throw err;\n      }\n    }\n  }\n\n  /**\n   * returns a valid highlight result, without actually doing any actual work,\n   * auto highlight starts with this and it's possible for small snippets that\n   * auto-detection may not find a better match\n   * @param {string} code\n   * @returns {HighlightResult}\n   */\n  function justTextHighlightResult(code) {\n    const result = {\n      relevance: 0,\n      emitter: new options.__emitter(options),\n      value: escape$1(code),\n      illegal: false,\n      top: PLAINTEXT_LANGUAGE\n    };\n    result.emitter.addText(code);\n    return result;\n  }\n\n  /**\n  Highlighting with language detection. Accepts a string with the code to\n  highlight. Returns an object with the following properties:\n\n  - language (detected language)\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n  - second_best (object with the same structure for second-best heuristically\n    detected language, may be absent)\n\n    @param {string} code\n    @param {Array<string>} [languageSubset]\n    @returns {AutoHighlightResult}\n  */\n  function highlightAuto(code, languageSubset) {\n    languageSubset = languageSubset || options.languages || Object.keys(languages);\n    const plaintext = justTextHighlightResult(code);\n\n    const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n      _highlight(name, code, false)\n    );\n    results.unshift(plaintext); // plaintext is always an option\n\n    const sorted = results.sort((a, b) => {\n      // sort base on relevance\n      if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n      // always award the tie to the base language\n      // ie if C++ and Arduino are tied, it's more likely to be C++\n      if (a.language && b.language) {\n        if (getLanguage(a.language).supersetOf === b.language) {\n          return 1;\n        } else if (getLanguage(b.language).supersetOf === a.language) {\n          return -1;\n        }\n      }\n\n      // otherwise say they are equal, which has the effect of sorting on\n      // relevance while preserving the original ordering - which is how ties\n      // have historically been settled, ie the language that comes first always\n      // wins in the case of a tie\n      return 0;\n    });\n\n    const [best, secondBest] = sorted;\n\n    /** @type {AutoHighlightResult} */\n    const result = best;\n    result.second_best = secondBest;\n\n    return result;\n  }\n\n  /**\n  Post-processing of the highlighted markup:\n\n  - replace TABs with something more useful\n  - replace real line-breaks with '<br>' for non-pre containers\n\n    @param {string} html\n    @returns {string}\n  */\n  function fixMarkup(html) {\n    if (!(options.tabReplace || options.useBR)) {\n      return html;\n    }\n\n    return html.replace(fixMarkupRe, match => {\n      if (match === '\\n') {\n        return options.useBR ? '<br>' : match;\n      } else if (options.tabReplace) {\n        return match.replace(/\\t/g, options.tabReplace);\n      }\n      return match;\n    });\n  }\n\n  /**\n   * Builds new class name for block given the language name\n   *\n   * @param {HTMLElement} element\n   * @param {string} [currentLang]\n   * @param {string} [resultLang]\n   */\n  function updateClassName(element, currentLang, resultLang) {\n    const language = currentLang ? aliases[currentLang] : resultLang;\n\n    element.classList.add(\"hljs\");\n    if (language) element.classList.add(language);\n  }\n\n  /** @type {HLJSPlugin} */\n  const brPlugin = {\n    \"before:highlightElement\": ({ el }) => {\n      if (options.useBR) {\n        el.innerHTML = el.innerHTML.replace(/\\n/g, '').replace(/<br[ /]*>/g, '\\n');\n      }\n    },\n    \"after:highlightElement\": ({ result }) => {\n      if (options.useBR) {\n        result.value = result.value.replace(/\\n/g, \"<br>\");\n      }\n    }\n  };\n\n  const TAB_REPLACE_RE = /^(<[^>]+>|\\t)+/gm;\n  /** @type {HLJSPlugin} */\n  const tabReplacePlugin = {\n    \"after:highlightElement\": ({ result }) => {\n      if (options.tabReplace) {\n        result.value = result.value.replace(TAB_REPLACE_RE, (m) =>\n          m.replace(/\\t/g, options.tabReplace)\n        );\n      }\n    }\n  };\n\n  /**\n   * Applies highlighting to a DOM node containing code. Accepts a DOM node and\n   * two optional parameters for fixMarkup.\n   *\n   * @param {HighlightedHTMLElement} element - the HTML element to highlight\n  */\n  function highlightElement(element) {\n    /** @type HTMLElement */\n    let node = null;\n    const language = blockLanguage(element);\n\n    if (shouldNotHighlight(language)) return;\n\n    // support for v10 API\n    fire(\"before:highlightElement\",\n      { el: element, language: language });\n\n    node = element;\n    const text = node.textContent;\n    const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n    // support for v10 API\n    fire(\"after:highlightElement\", { el: element, result, text });\n\n    element.innerHTML = result.value;\n    updateClassName(element, language, result.language);\n    element.result = {\n      language: result.language,\n      // TODO: remove with version 11.0\n      re: result.relevance,\n      relavance: result.relevance\n    };\n    if (result.second_best) {\n      element.second_best = {\n        language: result.second_best.language,\n        // TODO: remove with version 11.0\n        re: result.second_best.relevance,\n        relavance: result.second_best.relevance\n      };\n    }\n  }\n\n  /**\n   * Updates highlight.js global options with the passed options\n   *\n   * @param {Partial<HLJSOptions>} userOptions\n   */\n  function configure(userOptions) {\n    if (userOptions.useBR) {\n      deprecated(\"10.3.0\", \"'useBR' will be removed entirely in v11.0\");\n      deprecated(\"10.3.0\", \"Please see https://github.com/highlightjs/highlight.js/issues/2559\");\n    }\n    options = inherit$1(options, userOptions);\n  }\n\n  /**\n   * Highlights to all <pre><code> blocks on a page\n   *\n   * @type {Function & {called?: boolean}}\n   */\n  // TODO: remove v12, deprecated\n  const initHighlighting = () => {\n    if (initHighlighting.called) return;\n    initHighlighting.called = true;\n\n    deprecated(\"10.6.0\", \"initHighlighting() is deprecated.  Use highlightAll() instead.\");\n\n    const blocks = document.querySelectorAll('pre code');\n    blocks.forEach(highlightElement);\n  };\n\n  // Higlights all when DOMContentLoaded fires\n  // TODO: remove v12, deprecated\n  function initHighlightingOnLoad() {\n    deprecated(\"10.6.0\", \"initHighlightingOnLoad() is deprecated.  Use highlightAll() instead.\");\n    wantsHighlight = true;\n  }\n\n  let wantsHighlight = false;\n\n  /**\n   * auto-highlights all pre>code elements on the page\n   */\n  function highlightAll() {\n    // if we are called too early in the loading process\n    if (document.readyState === \"loading\") {\n      wantsHighlight = true;\n      return;\n    }\n\n    const blocks = document.querySelectorAll('pre code');\n    blocks.forEach(highlightElement);\n  }\n\n  function boot() {\n    // if a highlight was requested before DOM was loaded, do now\n    if (wantsHighlight) highlightAll();\n  }\n\n  // make sure we are in the browser environment\n  if (typeof window !== 'undefined' && window.addEventListener) {\n    window.addEventListener('DOMContentLoaded', boot, false);\n  }\n\n  /**\n   * Register a language grammar module\n   *\n   * @param {string} languageName\n   * @param {LanguageFn} languageDefinition\n   */\n  function registerLanguage(languageName, languageDefinition) {\n    let lang = null;\n    try {\n      lang = languageDefinition(hljs);\n    } catch (error$1) {\n      error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n      // hard or soft error\n      if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n      // languages that have serious errors are replaced with essentially a\n      // \"plaintext\" stand-in so that the code blocks will still get normal\n      // css classes applied to them - and one bad language won't break the\n      // entire highlighter\n      lang = PLAINTEXT_LANGUAGE;\n    }\n    // give it a temporary name if it doesn't have one in the meta-data\n    if (!lang.name) lang.name = languageName;\n    languages[languageName] = lang;\n    lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n    if (lang.aliases) {\n      registerAliases(lang.aliases, { languageName });\n    }\n  }\n\n  /**\n   * Remove a language grammar module\n   *\n   * @param {string} languageName\n   */\n  function unregisterLanguage(languageName) {\n    delete languages[languageName];\n    for (const alias of Object.keys(aliases)) {\n      if (aliases[alias] === languageName) {\n        delete aliases[alias];\n      }\n    }\n  }\n\n  /**\n   * @returns {string[]} List of language internal names\n   */\n  function listLanguages() {\n    return Object.keys(languages);\n  }\n\n  /**\n    intended usage: When one language truly requires another\n\n    Unlike `getLanguage`, this will throw when the requested language\n    is not available.\n\n    @param {string} name - name of the language to fetch/require\n    @returns {Language | never}\n  */\n  function requireLanguage(name) {\n    deprecated(\"10.4.0\", \"requireLanguage will be removed entirely in v11.\");\n    deprecated(\"10.4.0\", \"Please see https://github.com/highlightjs/highlight.js/pull/2844\");\n\n    const lang = getLanguage(name);\n    if (lang) { return lang; }\n\n    const err = new Error('The \\'{}\\' language is required, but not loaded.'.replace('{}', name));\n    throw err;\n  }\n\n  /**\n   * @param {string} name - name of the language to retrieve\n   * @returns {Language | undefined}\n   */\n  function getLanguage(name) {\n    name = (name || '').toLowerCase();\n    return languages[name] || languages[aliases[name]];\n  }\n\n  /**\n   *\n   * @param {string|string[]} aliasList - single alias or list of aliases\n   * @param {{languageName: string}} opts\n   */\n  function registerAliases(aliasList, { languageName }) {\n    if (typeof aliasList === 'string') {\n      aliasList = [aliasList];\n    }\n    aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n  }\n\n  /**\n   * Determines if a given language has auto-detection enabled\n   * @param {string} name - name of the language\n   */\n  function autoDetection(name) {\n    const lang = getLanguage(name);\n    return lang && !lang.disableAutodetect;\n  }\n\n  /**\n   * Upgrades the old highlightBlock plugins to the new\n   * highlightElement API\n   * @param {HLJSPlugin} plugin\n   */\n  function upgradePluginAPI(plugin) {\n    // TODO: remove with v12\n    if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n      plugin[\"before:highlightElement\"] = (data) => {\n        plugin[\"before:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n    if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n      plugin[\"after:highlightElement\"] = (data) => {\n        plugin[\"after:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function addPlugin(plugin) {\n    upgradePluginAPI(plugin);\n    plugins.push(plugin);\n  }\n\n  /**\n   *\n   * @param {PluginEvent} event\n   * @param {any} args\n   */\n  function fire(event, args) {\n    const cb = event;\n    plugins.forEach(function(plugin) {\n      if (plugin[cb]) {\n        plugin[cb](args);\n      }\n    });\n  }\n\n  /**\n  Note: fixMarkup is deprecated and will be removed entirely in v11\n\n  @param {string} arg\n  @returns {string}\n  */\n  function deprecateFixMarkup(arg) {\n    deprecated(\"10.2.0\", \"fixMarkup will be removed entirely in v11.0\");\n    deprecated(\"10.2.0\", \"Please see https://github.com/highlightjs/highlight.js/issues/2534\");\n\n    return fixMarkup(arg);\n  }\n\n  /**\n   *\n   * @param {HighlightedHTMLElement} el\n   */\n  function deprecateHighlightBlock(el) {\n    deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n    deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n    return highlightElement(el);\n  }\n\n  /* Interface definition */\n  Object.assign(hljs, {\n    highlight,\n    highlightAuto,\n    highlightAll,\n    fixMarkup: deprecateFixMarkup,\n    highlightElement,\n    // TODO: Remove with v12 API\n    highlightBlock: deprecateHighlightBlock,\n    configure,\n    initHighlighting,\n    initHighlightingOnLoad,\n    registerLanguage,\n    unregisterLanguage,\n    listLanguages,\n    getLanguage,\n    registerAliases,\n    requireLanguage,\n    autoDetection,\n    inherit: inherit$1,\n    addPlugin,\n    // plugins for frameworks\n    vuePlugin: BuildVuePlugin(hljs).VuePlugin\n  });\n\n  hljs.debugMode = function() { SAFE_MODE = false; };\n  hljs.safeMode = function() { SAFE_MODE = true; };\n  hljs.versionString = version;\n\n  for (const key in MODES) {\n    // @ts-ignore\n    if (typeof MODES[key] === \"object\") {\n      // @ts-ignore\n      deepFreezeEs6(MODES[key]);\n    }\n  }\n\n  // merge all the modes/regexs into our main object\n  Object.assign(hljs, MODES);\n\n  // built-in plugins, likely to be moved out of core in the future\n  hljs.addPlugin(brPlugin); // slated to be removed in v11\n  hljs.addPlugin(mergeHTMLPlugin);\n  hljs.addPlugin(tabReplacePlugin);\n  return hljs;\n};\n\n// export an \"instance\" of the highlighter\nvar highlight = HLJS({});\n\nmodule.exports = highlight;\n", "'use strict'\n\nvar formatter = require('format')\n\nvar fault = create(Error)\n\nmodule.exports = fault\n\nfault.eval = create(EvalError)\nfault.range = create(RangeError)\nfault.reference = create(ReferenceError)\nfault.syntax = create(SyntaxError)\nfault.type = create(TypeError)\nfault.uri = create(URIError)\n\nfault.create = create\n\n// Create a new `EConstructor`, with the formatted `format` as a first argument.\nfunction create(EConstructor) {\n  FormattedError.displayName = EConstructor.displayName || EConstructor.name\n\n  return FormattedError\n\n  function FormattedError(format) {\n    if (format) {\n      format = formatter.apply(null, arguments)\n    }\n\n    return new EConstructor(format)\n  }\n}\n", "//\n// format - printf-like string formatting for JavaScript\n// github.com/samsonjs/format\n// @_sjs\n//\n// Copyright 2010 - 2013 Sami Samhuri <sami@samhuri.net>\n//\n// MIT License\n// http://sjs.mit-license.org\n//\n\n;(function() {\n\n  //// Export the API\n  var namespace;\n\n  // CommonJS / Node module\n  if (typeof module !== 'undefined') {\n    namespace = module.exports = format;\n  }\n\n  // Browsers and other environments\n  else {\n    // Get the global object. Works in ES3, ES5, and ES5 strict mode.\n    namespace = (function(){ return this || (1,eval)('this') }());\n  }\n\n  namespace.format = format;\n  namespace.vsprintf = vsprintf;\n\n  if (typeof console !== 'undefined' && typeof console.log === 'function') {\n    namespace.printf = printf;\n  }\n\n  function printf(/* ... */) {\n    console.log(format.apply(null, arguments));\n  }\n\n  function vsprintf(fmt, replacements) {\n    return format.apply(null, [fmt].concat(replacements));\n  }\n\n  function format(fmt) {\n    var argIndex = 1 // skip initial format argument\n      , args = [].slice.call(arguments)\n      , i = 0\n      , n = fmt.length\n      , result = ''\n      , c\n      , escaped = false\n      , arg\n      , tmp\n      , leadingZero = false\n      , precision\n      , nextArg = function() { return args[argIndex++]; }\n      , slurpNumber = function() {\n          var digits = '';\n          while (/\\d/.test(fmt[i])) {\n            digits += fmt[i++];\n            c = fmt[i];\n          }\n          return digits.length > 0 ? parseInt(digits) : null;\n        }\n      ;\n    for (; i < n; ++i) {\n      c = fmt[i];\n      if (escaped) {\n        escaped = false;\n        if (c == '.') {\n          leadingZero = false;\n          c = fmt[++i];\n        }\n        else if (c == '0' && fmt[i + 1] == '.') {\n          leadingZero = true;\n          i += 2;\n          c = fmt[i];\n        }\n        else {\n          leadingZero = true;\n        }\n        precision = slurpNumber();\n        switch (c) {\n        case 'b': // number in binary\n          result += parseInt(nextArg(), 10).toString(2);\n          break;\n        case 'c': // character\n          arg = nextArg();\n          if (typeof arg === 'string' || arg instanceof String)\n            result += arg;\n          else\n            result += String.fromCharCode(parseInt(arg, 10));\n          break;\n        case 'd': // number in decimal\n          result += parseInt(nextArg(), 10);\n          break;\n        case 'f': // floating point number\n          tmp = String(parseFloat(nextArg()).toFixed(precision || 6));\n          result += leadingZero ? tmp : tmp.replace(/^0/, '');\n          break;\n        case 'j': // JSON\n          result += JSON.stringify(nextArg());\n          break;\n        case 'o': // number in octal\n          result += '0' + parseInt(nextArg(), 10).toString(8);\n          break;\n        case 's': // string\n          result += nextArg();\n          break;\n        case 'x': // lowercase hexadecimal\n          result += '0x' + parseInt(nextArg(), 10).toString(16);\n          break;\n        case 'X': // uppercase hexadecimal\n          result += '0x' + parseInt(nextArg(), 10).toString(16).toUpperCase();\n          break;\n        default:\n          result += c;\n          break;\n        }\n      } else if (c === '%') {\n        escaped = true;\n      } else {\n        result += c;\n      }\n    }\n    return result;\n  }\n\n}());\n", "function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\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\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _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\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "function _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\n  return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;", "var parent = require('../../es/object/entries');\n\nmodule.exports = parent;\n", "require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n", "var $ = 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';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    delimiter: '&',\n    encode: true,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    strictNullHandling,\n    skipNulls,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n                var valuesArray = split.call(String(obj), ',');\n                var valuesJoined = '';\n                for (var i = 0; i < valuesArray.length; ++i) {\n                    valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n                }\n                return [formatter(keyValue) + '=' + valuesJoined];\n            }\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n            : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            strictNullHandling,\n            skipNulls,\n            encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var arrayFormat;\n    if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if (opts && 'indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = 'indices';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (options.skipNulls && obj[key] === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            obj[key],\n            key,\n            generateArrayPrefix,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        return String(obj);\n    }\n    if (typeof obj === 'bigint') {\n        return String(obj) + 'n';\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = seen.slice();\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function') {\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + String(obj.nodeName).toLowerCase();\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + String(obj.nodeName).toLowerCase() + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + xs.join(', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n            return obj[inspectSymbol]();\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        mapForEach.call(obj, function (value, key) {\n            mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n        });\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        setForEach.call(obj, function (value) {\n            setParts.push(inspect(value, obj));\n        });\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + ys.join(', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return String(s).replace(/\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n    }\n    // eslint-disable-next-line no-control-regex\n    var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = Array(opts.indent + 1).join(' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: Array(depth + 1).join(baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ((/[^\\w$]/).test(key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n", "'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = {};\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n            val = utils.maybeMap(\n                parseArrayValue(part.slice(pos + 1), options),\n                function (encodedVal) {\n                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                }\n            );\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(val);\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (has.call(obj, key)) {\n            obj[key] = utils.combine(obj[key], val);\n        } else {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            obj = [].concat(leaf);\n        } else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var index = parseInt(cleanRoot, 10);\n            if (!options.parseArrays && cleanRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== cleanRoot\n                && String(index) === cleanRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (cleanRoot !== '__proto__') {\n                obj[cleanRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, just add whatever is left\n\n    if (segment) {\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    return {\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? Object.create(null) : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n", "var parent = require('../../es/instance/splice');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/splice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.splice;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.splice) ? method : own;\n};\n", "require('../../../modules/es.array.splice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').splice;\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\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    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\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 delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete 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 delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n", "var parent = require('../../es/weak-map');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n", "require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.weak-map');\nvar path = require('../../internals/path');\n\nmodule.exports = path.WeakMap;\n", "'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar isExtensible = require('../internals/object-is-extensible');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\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);\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 && IS_IE11) {\n  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n  InternalMetadataModule.enable();\n  var WeakMapPrototype = $WeakMap.prototype;\n  var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n  var nativeHas = uncurryThis(WeakMapPrototype.has);\n  var nativeGet = uncurryThis(WeakMapPrototype.get);\n  var nativeSet = uncurryThis(WeakMapPrototype.set);\n  redefineAll(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}\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\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 (store) {\n  return store.frozen || (store.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: undefined\n      });\n      if (iterable != undefined) 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    redefineAll(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    redefineAll(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          return data ? data[state.id] : undefined;\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", "var parent = require('../../web/url-search-params');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n", "require('../modules/web.url-search-params');\nvar path = require('../internals/path');\n\nmodule.exports = path.URLSearchParams;\n", "var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw TypeError('Not enough arguments');\n  return passed;\n};\n", "/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n", "'use strict';\n\nmodule.exports = {\n  isString: function(arg) {\n    return typeof(arg) === 'string';\n  },\n  isObject: function(arg) {\n    return typeof(arg) === 'object' && arg !== null;\n  },\n  isNull: function(arg) {\n    return arg === null;\n  },\n  isNullOrUndefined: function(arg) {\n    return arg == null;\n  }\n};\n", "'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n  sep = sep || '&';\n  eq = eq || '=';\n  var obj = {};\n\n  if (typeof qs !== 'string' || qs.length === 0) {\n    return obj;\n  }\n\n  var regexp = /\\+/g;\n  qs = qs.split(sep);\n\n  var maxKeys = 1000;\n  if (options && typeof options.maxKeys === 'number') {\n    maxKeys = options.maxKeys;\n  }\n\n  var len = qs.length;\n  // maxKeys <= 0 means that we should not limit keys count\n  if (maxKeys > 0 && len > maxKeys) {\n    len = maxKeys;\n  }\n\n  for (var i = 0; i < len; ++i) {\n    var x = qs[i].replace(regexp, '%20'),\n        idx = x.indexOf(eq),\n        kstr, vstr, k, v;\n\n    if (idx >= 0) {\n      kstr = x.substr(0, idx);\n      vstr = x.substr(idx + 1);\n    } else {\n      kstr = x;\n      vstr = '';\n    }\n\n    k = decodeURIComponent(kstr);\n    v = decodeURIComponent(vstr);\n\n    if (!hasOwnProperty(obj, k)) {\n      obj[k] = v;\n    } else if (isArray(obj[k])) {\n      obj[k].push(v);\n    } else {\n      obj[k] = [obj[k], v];\n    }\n  }\n\n  return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n  switch (typeof v) {\n    case 'string':\n      return v;\n\n    case 'boolean':\n      return v ? 'true' : 'false';\n\n    case 'number':\n      return isFinite(v) ? v : '';\n\n    default:\n      return '';\n  }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n  sep = sep || '&';\n  eq = eq || '=';\n  if (obj === null) {\n    obj = undefined;\n  }\n\n  if (typeof obj === 'object') {\n    return map(objectKeys(obj), function(k) {\n      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n      if (isArray(obj[k])) {\n        return map(obj[k], function(v) {\n          return ks + encodeURIComponent(stringifyPrimitive(v));\n        }).join(sep);\n      } else {\n        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n      }\n    }).join(sep);\n\n  }\n\n  if (!name) return '';\n  return encodeURIComponent(stringifyPrimitive(name)) + eq +\n         encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n  if (xs.map) return xs.map(f);\n  var res = [];\n  for (var i = 0; i < xs.length; i++) {\n    res.push(f(xs[i], i));\n  }\n  return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n  var res = [];\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n  }\n  return res;\n};\n", "var parent = require('../../web/url');\n\nmodule.exports = parent;\n", "require('../modules/web.url');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nvar path = require('../internals/path');\n\nmodule.exports = path.URL;\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/native-url');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperties = require('../internals/object-define-properties').f;\nvar redefine = require('../internals/redefine');\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-simple');\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 URLSearchParamsModule = require('../modules/web.url-search-params');\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 = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.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_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\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  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\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    } return join(result, '.');\n  // ipv6\n  } else 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  } 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 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 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_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\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            if (chr == EOF) {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n            } else if (chr == '?') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n              url.fragment = '';\n              state = FRAGMENT;\n            } else {\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 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 = arguments.length > 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  defineProperties(URLPrototype, {\n    // `URL.prototype.href` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-href\n    href: accessorDescriptor('serialize', 'setHref'),\n    // `URL.prototype.origin` getter\n    // https://url.spec.whatwg.org/#dom-url-origin\n    origin: accessorDescriptor('getOrigin'),\n    // `URL.prototype.protocol` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-protocol\n    protocol: accessorDescriptor('getProtocol', 'setProtocol'),\n    // `URL.prototype.username` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-username\n    username: accessorDescriptor('getUsername', 'setUsername'),\n    // `URL.prototype.password` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-password\n    password: accessorDescriptor('getPassword', 'setPassword'),\n    // `URL.prototype.host` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-host\n    host: accessorDescriptor('getHost', 'setHost'),\n    // `URL.prototype.hostname` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-hostname\n    hostname: accessorDescriptor('getHostname', 'setHostname'),\n    // `URL.prototype.port` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-port\n    port: accessorDescriptor('getPort', 'setPort'),\n    // `URL.prototype.pathname` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-pathname\n    pathname: accessorDescriptor('getPathname', 'setPathname'),\n    // `URL.prototype.search` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-search\n    search: accessorDescriptor('getSearch', 'setSearch'),\n    // `URL.prototype.searchParams` getter\n    // https://url.spec.whatwg.org/#dom-url-searchparams\n    searchParams: accessorDescriptor('getSearchParams'),\n    // `URL.prototype.hash` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-hash\n    hash: accessorDescriptor('getHash', 'setHash')\n  });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(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\nredefine(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) redefine(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n", "'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar global = require('../internals/global');\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 = global.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 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 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", "require('../modules/web.timers');\nvar path = require('../internals/path');\n\nmodule.exports = path.setTimeout;\n", "var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar userAgent = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\n\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar Function = global.Function;\n\nvar wrap = function (scheduler) {\n  return function (handler, timeout /* , ...arguments */) {\n    var boundArgs = arguments.length > 2;\n    var args = boundArgs ? arraySlice(arguments, 2) : undefined;\n    return scheduler(boundArgs ? function () {\n      apply(isCallable(handler) ? handler : Function(handler), this, args);\n    } : handler, timeout);\n  };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n  // `setTimeout` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n  setTimeout: wrap(global.setTimeout),\n  // `setInterval` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n  setInterval: wrap(global.setInterval)\n});\n", "var parent = require('../../es/instance/fill');\n\nmodule.exports = parent;\n", "var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/fill');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.fill;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.fill) ? method : own;\n};\n", "require('../../../modules/es.array.fill');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').fill;\n", "var $ = 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 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", "/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n  var index = -1,\n      length = props.length,\n      valsLength = values.length,\n      result = {};\n\n  while (++index < length) {\n    var value = index < valsLength ? values[index] : undefined;\n    assignFunc(result, props[index], value);\n  }\n  return result;\n}\n\nmodule.exports = baseZipObject;\n", "require('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/values');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.values;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.values)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n", "var parent = require('../../../es/array/virtual/values');\n\nmodule.exports = parent;\n", "require('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').values;\n", "/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n  if (typeof str !== 'string') {\n    throw new TypeError('expected a string');\n  }\n\n  // cover common, quick use cases\n  if (num === 1) return str;\n  if (num === 2) return str + str;\n\n  var max = str.length * num;\n  if (cache !== str || typeof cache === 'undefined') {\n    cache = str;\n    res = '';\n  } else if (res.length >= max) {\n    return res.substr(0, max);\n  }\n\n  while (max > res.length && num > 1) {\n    if (num & 1) {\n      res += str;\n    }\n\n    num >>= 1;\n    str += str;\n  }\n\n  res += str;\n  res = res.substr(0, max);\n  return res;\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DebounceInput = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DebounceInput = /*#__PURE__*/function (_React$PureComponent) {\n  _inherits(DebounceInput, _React$PureComponent);\n\n  var _super = _createSuper(DebounceInput);\n\n  function DebounceInput(props) {\n    var _this;\n\n    _classCallCheck(this, DebounceInput);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"onChange\", function (event) {\n      event.persist();\n      var oldValue = _this.state.value;\n      var minLength = _this.props.minLength;\n\n      _this.setState({\n        value: event.target.value\n      }, function () {\n        var value = _this.state.value;\n\n        if (value.length >= minLength) {\n          _this.notify(event);\n\n          return;\n        } // If user hits backspace and goes below minLength consider it cleaning the value\n\n\n        if (oldValue.length > value.length) {\n          _this.notify(_objectSpread(_objectSpread({}, event), {}, {\n            target: _objectSpread(_objectSpread({}, event.target), {}, {\n              value: ''\n            })\n          }));\n        }\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n      if (event.key === 'Enter') {\n        _this.forceNotify(event);\n      } // Invoke original onKeyDown if present\n\n\n      var onKeyDown = _this.props.onKeyDown;\n\n      if (onKeyDown) {\n        event.persist();\n        onKeyDown(event);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (event) {\n      _this.forceNotify(event); // Invoke original onBlur if present\n\n\n      var onBlur = _this.props.onBlur;\n\n      if (onBlur) {\n        event.persist();\n        onBlur(event);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"createNotifier\", function (debounceTimeout) {\n      if (debounceTimeout < 0) {\n        _this.notify = function () {\n          return null;\n        };\n      } else if (debounceTimeout === 0) {\n        _this.notify = _this.doNotify;\n      } else {\n        var debouncedChangeFunc = (0, _lodash[\"default\"])(function (event) {\n          _this.isDebouncing = false;\n\n          _this.doNotify(event);\n        }, debounceTimeout);\n\n        _this.notify = function (event) {\n          _this.isDebouncing = true;\n          debouncedChangeFunc(event);\n        };\n\n        _this.flush = function () {\n          return debouncedChangeFunc.flush();\n        };\n\n        _this.cancel = function () {\n          _this.isDebouncing = false;\n          debouncedChangeFunc.cancel();\n        };\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"doNotify\", function () {\n      var onChange = _this.props.onChange;\n      onChange.apply(void 0, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"forceNotify\", function (event) {\n      var debounceTimeout = _this.props.debounceTimeout;\n\n      if (!_this.isDebouncing && debounceTimeout > 0) {\n        return;\n      }\n\n      if (_this.cancel) {\n        _this.cancel();\n      }\n\n      var value = _this.state.value;\n      var minLength = _this.props.minLength;\n\n      if (value.length >= minLength) {\n        _this.doNotify(event);\n      } else {\n        _this.doNotify(_objectSpread(_objectSpread({}, event), {}, {\n          target: _objectSpread(_objectSpread({}, event.target), {}, {\n            value: value\n          })\n        }));\n      }\n    });\n\n    _this.isDebouncing = false;\n    _this.state = {\n      value: typeof props.value === 'undefined' || props.value === null ? '' : props.value\n    };\n    var _debounceTimeout2 = _this.props.debounceTimeout;\n\n    _this.createNotifier(_debounceTimeout2);\n\n    return _this;\n  }\n\n  _createClass(DebounceInput, [{\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (this.isDebouncing) {\n        return;\n      }\n\n      var _this$props = this.props,\n          value = _this$props.value,\n          debounceTimeout = _this$props.debounceTimeout;\n      var oldTimeout = prevProps.debounceTimeout,\n          oldValue = prevProps.value;\n      var stateValue = this.state.value;\n\n      if (typeof value !== 'undefined' && oldValue !== value && stateValue !== value) {\n        // Update state.value if new value passed via props, yep re-render should happen\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({\n          value: value\n        });\n      }\n\n      if (debounceTimeout !== oldTimeout) {\n        this.createNotifier(debounceTimeout);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.flush) {\n        this.flush();\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          element = _this$props2.element,\n          _onChange = _this$props2.onChange,\n          _value = _this$props2.value,\n          _minLength = _this$props2.minLength,\n          _debounceTimeout = _this$props2.debounceTimeout,\n          forceNotifyByEnter = _this$props2.forceNotifyByEnter,\n          forceNotifyOnBlur = _this$props2.forceNotifyOnBlur,\n          onKeyDown = _this$props2.onKeyDown,\n          onBlur = _this$props2.onBlur,\n          inputRef = _this$props2.inputRef,\n          props = _objectWithoutProperties(_this$props2, [\"element\", \"onChange\", \"value\", \"minLength\", \"debounceTimeout\", \"forceNotifyByEnter\", \"forceNotifyOnBlur\", \"onKeyDown\", \"onBlur\", \"inputRef\"]);\n\n      var value = this.state.value;\n      var maybeOnKeyDown;\n\n      if (forceNotifyByEnter) {\n        maybeOnKeyDown = {\n          onKeyDown: this.onKeyDown\n        };\n      } else if (onKeyDown) {\n        maybeOnKeyDown = {\n          onKeyDown: onKeyDown\n        };\n      } else {\n        maybeOnKeyDown = {};\n      }\n\n      var maybeOnBlur;\n\n      if (forceNotifyOnBlur) {\n        maybeOnBlur = {\n          onBlur: this.onBlur\n        };\n      } else if (onBlur) {\n        maybeOnBlur = {\n          onBlur: onBlur\n        };\n      } else {\n        maybeOnBlur = {};\n      }\n\n      var maybeRef = inputRef ? {\n        ref: inputRef\n      } : {};\n      return /*#__PURE__*/_react[\"default\"].createElement(element, _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), {}, {\n        onChange: this.onChange,\n        value: value\n      }, maybeOnKeyDown), maybeOnBlur), maybeRef));\n    }\n  }]);\n\n  return DebounceInput;\n}(_react[\"default\"].PureComponent);\n\nexports.DebounceInput = DebounceInput;\n\n_defineProperty(DebounceInput, \"defaultProps\", {\n  element: 'input',\n  type: 'text',\n  onKeyDown: undefined,\n  onBlur: undefined,\n  value: undefined,\n  minLength: 0,\n  debounceTimeout: 100,\n  forceNotifyByEnter: true,\n  forceNotifyOnBlur: true,\n  inputRef: undefined\n});", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n", "var map = {\n\t\"./all.js\": 318,\n\t\"./auth/actions.js\": 88,\n\t\"./auth/index.js\": 280,\n\t\"./auth/reducers.js\": 281,\n\t\"./auth/selectors.js\": 282,\n\t\"./auth/spec-wrap-actions.js\": 283,\n\t\"./configs/actions.js\": 142,\n\t\"./configs/helpers.js\": 168,\n\t\"./configs/index.js\": 320,\n\t\"./configs/reducers.js\": 288,\n\t\"./configs/selectors.js\": 287,\n\t\"./configs/spec-actions.js\": 286,\n\t\"./deep-linking/helpers.js\": 173,\n\t\"./deep-linking/index.js\": 289,\n\t\"./deep-linking/layout.js\": 290,\n\t\"./deep-linking/operation-tag-wrapper.jsx\": 292,\n\t\"./deep-linking/operation-wrapper.jsx\": 291,\n\t\"./download-url.js\": 285,\n\t\"./err/actions.js\": 65,\n\t\"./err/error-transformers/hook.js\": 121,\n\t\"./err/error-transformers/transformers/not-of-type.js\": 261,\n\t\"./err/error-transformers/transformers/parameter-oneof.js\": 262,\n\t\"./err/index.js\": 259,\n\t\"./err/reducers.js\": 260,\n\t\"./err/selectors.js\": 263,\n\t\"./filter/index.js\": 293,\n\t\"./filter/opsFilter.js\": 294,\n\t\"./layout/actions.js\": 111,\n\t\"./layout/index.js\": 264,\n\t\"./layout/reducers.js\": 265,\n\t\"./layout/selectors.js\": 266,\n\t\"./layout/spec-extensions/wrap-selector.js\": 267,\n\t\"./logs/index.js\": 278,\n\t\"./oas3/actions.js\": 60,\n\t\"./oas3/auth-extensions/wrap-selectors.js\": 299,\n\t\"./oas3/components/callbacks.jsx\": 302,\n\t\"./oas3/components/http-auth.jsx\": 307,\n\t\"./oas3/components/index.js\": 301,\n\t\"./oas3/components/operation-link.jsx\": 303,\n\t\"./oas3/components/operation-servers.jsx\": 308,\n\t\"./oas3/components/request-body-editor.jsx\": 306,\n\t\"./oas3/components/request-body.jsx\": 171,\n\t\"./oas3/components/servers-container.jsx\": 305,\n\t\"./oas3/components/servers.jsx\": 304,\n\t\"./oas3/helpers.jsx\": 39,\n\t\"./oas3/index.js\": 297,\n\t\"./oas3/reducers.js\": 317,\n\t\"./oas3/selectors.js\": 316,\n\t\"./oas3/spec-extensions/selectors.js\": 300,\n\t\"./oas3/spec-extensions/wrap-selectors.js\": 298,\n\t\"./oas3/wrap-components/auth-item.jsx\": 311,\n\t\"./oas3/wrap-components/index.js\": 309,\n\t\"./oas3/wrap-components/json-schema-string.jsx\": 315,\n\t\"./oas3/wrap-components/markdown.jsx\": 310,\n\t\"./oas3/wrap-components/model.jsx\": 314,\n\t\"./oas3/wrap-components/online-validator-badge.js\": 313,\n\t\"./oas3/wrap-components/version-stamp.jsx\": 312,\n\t\"./on-complete/index.js\": 295,\n\t\"./request-snippets/fn.js\": 167,\n\t\"./request-snippets/index.js\": 275,\n\t\"./request-snippets/request-snippets.jsx\": 277,\n\t\"./request-snippets/selectors.js\": 276,\n\t\"./safe-render/components/error-boundary.jsx\": 296,\n\t\"./safe-render/components/fallback.jsx\": 170,\n\t\"./safe-render/fn.jsx\": 143,\n\t\"./safe-render/index.js\": 169,\n\t\"./samples/fn.js\": 139,\n\t\"./samples/index.js\": 274,\n\t\"./spec/actions.js\": 53,\n\t\"./spec/index.js\": 268,\n\t\"./spec/reducers.js\": 269,\n\t\"./spec/selectors.js\": 91,\n\t\"./spec/wrap-actions.js\": 270,\n\t\"./swagger-js/configs-wrap-actions.js\": 279,\n\t\"./swagger-js/index.js\": 319,\n\t\"./util/index.js\": 284,\n\t\"./view/fn.js\": 273,\n\t\"./view/index.js\": 271,\n\t\"./view/root-injects.jsx\": 145\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 981;", "import React from \"react\"\nimport { createStore, applyMiddleware, bindActionCreators, compose } from \"redux\"\nimport Im, { fromJS, Map } from \"immutable\"\nimport deepExtend from \"deep-extend\"\nimport { combineReducers } from \"redux-immutable\"\nimport { serializeError } from \"serialize-error\"\nimport merge from \"lodash/merge\"\nimport { NEW_THROWN_ERR } from \"corePlugins/err/actions\"\nimport win from \"core/window\"\n\nimport { systemThunkMiddleware, isFn, objMap, objReduce, isObject, isArray, isFunc } from \"core/utils\"\n\nconst idFn = a => a\n\n// Apply middleware that gets sandwitched between `dispatch` and the reducer function(s)\nfunction createStoreWithMiddleware(rootReducer, initialState, getSystem) {\n\n  let middlwares = [\n    // createLogger( {\n    //   stateTransformer: state => state && state.toJS()\n    // } ),\n    systemThunkMiddleware( getSystem )\n  ]\n\n  const composeEnhancers = win.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\n  return createStore(rootReducer, initialState, composeEnhancers(\n    applyMiddleware( ...middlwares )\n  ))\n}\n\nexport default class Store {\n\n  constructor(opts={}) {\n    deepExtend(this, {\n      state: {},\n      plugins: [],\n      pluginsOptions: {},\n      system: {\n        configs: {},\n        fn: {},\n        components: {},\n        rootInjects: {},\n        statePlugins: {}\n      },\n      boundSystem: {},\n      toolbox: {}\n    }, opts)\n\n    this.getSystem = this._getSystem.bind(this)\n\n    // Bare system (nothing in it, besides the state)\n    this.store = configureStore(idFn, fromJS(this.state), this.getSystem )\n\n    // will be the system + Im, we can add more tools when we need to\n    this.buildSystem(false)\n\n    // Bootstrap plugins\n    this.register(this.plugins)\n  }\n\n  getStore() {\n    return this.store\n  }\n\n  register(plugins, rebuild=true) {\n    var pluginSystem = combinePlugins(plugins, this.getSystem(), this.pluginsOptions)\n    systemExtend(this.system, pluginSystem)\n    if(rebuild) {\n      this.buildSystem()\n    }\n\n    const needAnotherRebuild = callAfterLoad.call(this.system, plugins, this.getSystem())\n\n    if(needAnotherRebuild) {\n      this.buildSystem()\n    }\n  }\n\n  buildSystem(buildReducer=true) {\n    let dispatch = this.getStore().dispatch\n    let getState = this.getStore().getState\n\n    this.boundSystem = Object.assign({},\n        this.getRootInjects(),\n        this.getWrappedAndBoundActions(dispatch),\n        this.getWrappedAndBoundSelectors(getState, this.getSystem),\n        this.getStateThunks(getState),\n        this.getFn(),\n        this.getConfigs()\n     )\n\n    if(buildReducer)\n      this.rebuildReducer()\n  }\n\n  _getSystem() {\n    return this.boundSystem\n  }\n\n  getRootInjects() {\n    return Object.assign({\n      getSystem: this.getSystem,\n      getStore: this.getStore.bind(this),\n      getComponents: this.getComponents.bind(this),\n      getState: this.getStore().getState,\n      getConfigs: this._getConfigs.bind(this),\n      Im,\n      React\n    }, this.system.rootInjects || {})\n  }\n\n  _getConfigs(){\n    return this.system.configs\n  }\n\n  getConfigs() {\n    return {\n      configs: this.system.configs\n    }\n  }\n\n  setConfigs(configs) {\n    this.system.configs = configs\n  }\n\n  rebuildReducer() {\n    this.store.replaceReducer(buildReducer(this.system.statePlugins))\n  }\n\n  /**\n   * Generic getter from system.statePlugins\n   *\n   */\n  getType(name) {\n    let upName = name[0].toUpperCase() + name.slice(1)\n    return objReduce(this.system.statePlugins, (val, namespace) => {\n        let thing = val[name]\n        if(thing)\n        return {[namespace+upName]:  thing}\n      })\n  }\n\n  getSelectors() {\n    return this.getType(\"selectors\")\n  }\n\n  getActions() {\n    let actionHolders = this.getType(\"actions\")\n\n    return objMap(actionHolders, (actions) => {\n      return objReduce(actions, (action, actionName) => {\n        if(isFn(action))\n          return {[actionName]: action}\n      })\n    })\n  }\n\n  getWrappedAndBoundActions(dispatch) {\n    let actionGroups = this.getBoundActions(dispatch)\n      return objMap(actionGroups, (actions, actionGroupName) => {\n        let wrappers = this.system.statePlugins[actionGroupName.slice(0,-7)].wrapActions\n          if(wrappers) {\n            return objMap(actions, (action, actionName) => {\n              let wrap = wrappers[actionName]\n              if(!wrap) {\n                return action\n              }\n\n              if(!Array.isArray(wrap)) {\n                wrap = [wrap]\n              }\n              return wrap.reduce((acc, fn) => {\n                let newAction = (...args) => {\n                  return fn(acc, this.getSystem())(...args)\n                }\n                if(!isFn(newAction)) {\n                  throw new TypeError(\"wrapActions needs to return a function that returns a new function (ie the wrapped action)\")\n                }\n                return wrapWithTryCatch(newAction)\n              }, action || Function.prototype)\n            })\n          }\n        return actions\n      })\n  }\n\n  getWrappedAndBoundSelectors(getState, getSystem) {\n    let selectorGroups = this.getBoundSelectors(getState, getSystem)\n      return objMap(selectorGroups, (selectors, selectorGroupName) => {\n        let stateName = [selectorGroupName.slice(0, -9)] // selectors = 9 chars\n        let wrappers = this.system.statePlugins[stateName].wrapSelectors\n          if(wrappers) {\n            return objMap(selectors, (selector, selectorName) => {\n              let wrap = wrappers[selectorName]\n              if(!wrap) {\n                return selector\n              }\n\n              if(!Array.isArray(wrap)) {\n                wrap = [wrap]\n              }\n              return wrap.reduce((acc, fn) => {\n                let wrappedSelector = (...args) => {\n                  return fn(acc, this.getSystem())(getState().getIn(stateName), ...args)\n                }\n                if(!isFn(wrappedSelector)) {\n                  throw new TypeError(\"wrapSelector needs to return a function that returns a new function (ie the wrapped action)\")\n                }\n                return wrappedSelector\n              }, selector || Function.prototype)\n            })\n          }\n        return selectors\n      })\n  }\n\n  getStates(state) {\n    return Object.keys(this.system.statePlugins).reduce((obj, key) => {\n      obj[key] = state.get(key)\n      return obj\n    }, {})\n  }\n\n  getStateThunks(getState) {\n    return Object.keys(this.system.statePlugins).reduce((obj, key) => {\n        obj[key] = ()=> getState().get(key)\n    return obj\n  }, {})\n  }\n\n  getFn() {\n    return {\n      fn: this.system.fn\n    }\n  }\n\n  getComponents(component) {\n    const res = this.system.components[component]\n\n    if(Array.isArray(res)) {\n      return res.reduce((ori, wrapper) => {\n        return wrapper(ori, this.getSystem())\n      })\n    }\n    if(typeof component !== \"undefined\") {\n      return this.system.components[component]\n    }\n\n    return this.system.components\n  }\n\n  getBoundSelectors(getState, getSystem) {\n    return objMap(this.getSelectors(), (obj, key) => {\n      let stateName = [key.slice(0, -9)] // selectors = 9 chars\n      const getNestedState = ()=> getState().getIn(stateName)\n\n      return objMap(obj, (fn) => {\n        return (...args) => {\n          let res = wrapWithTryCatch(fn).apply(null, [getNestedState(), ...args])\n\n          //  If a selector returns a function, give it the system - for advanced usage\n          if(typeof(res) === \"function\")\n            res = wrapWithTryCatch(res)(getSystem())\n\n          return res\n        }\n      })\n    })\n  }\n\n  getBoundActions(dispatch) {\n\n    dispatch = dispatch || this.getStore().dispatch\n\n    const actions = this.getActions()\n\n    const process = creator =>{\n      if( typeof( creator ) !== \"function\" ) {\n        return objMap(creator, prop => process(prop))\n      }\n\n      return ( ...args )=>{\n        var action = null\n        try{\n          action = creator( ...args )\n        }\n        catch( e ){\n          action = {type: NEW_THROWN_ERR, error: true, payload: serializeError(e) }\n        }\n        finally{\n          return action // eslint-disable-line no-unsafe-finally\n        }\n      }\n\n    }\n    return objMap(actions, actionCreator => bindActionCreators( process( actionCreator ), dispatch ) )\n  }\n\n  getMapStateToProps() {\n    return () => {\n      return Object.assign({}, this.getSystem())\n    }\n  }\n\n  getMapDispatchToProps(extras) {\n    return (dispatch) => {\n      return deepExtend({}, this.getWrappedAndBoundActions(dispatch), this.getFn(), extras)\n    }\n  }\n\n}\n\nfunction combinePlugins(plugins, toolbox, pluginOptions) {\n  if(isObject(plugins) && !isArray(plugins)) {\n    return merge({}, plugins)\n  }\n\n  if(isFunc(plugins)) {\n    return combinePlugins(plugins(toolbox), toolbox, pluginOptions)\n  }\n\n  if(isArray(plugins)) {\n    const dest = pluginOptions.pluginLoadType === \"chain\" ? toolbox.getComponents() : {}\n\n    return plugins\n    .map(plugin => combinePlugins(plugin, toolbox, pluginOptions))\n    .reduce(systemExtend, dest)\n  }\n\n  return {}\n}\n\nfunction callAfterLoad(plugins, system, { hasLoaded } = {}) {\n  let calledSomething = hasLoaded\n  if(isObject(plugins) && !isArray(plugins)) {\n    if(typeof plugins.afterLoad === \"function\") {\n      calledSomething = true\n      wrapWithTryCatch(plugins.afterLoad).call(this, system)\n    }\n  }\n\n  if(isFunc(plugins))\n    return callAfterLoad.call(this, plugins(system), system, { hasLoaded: calledSomething })\n\n  if(isArray(plugins)) {\n    return plugins.map(plugin => callAfterLoad.call(this, plugin, system, { hasLoaded: calledSomething }))\n  }\n\n  return calledSomething\n}\n\n// Wraps deepExtend, to account for certain fields, being wrappers.\n// Ie: we need to convert some fields into arrays, and append to them.\n// Rather than overwrite\nfunction systemExtend(dest={}, src={}) {\n\n  if(!isObject(dest)) {\n    return {}\n  }\n  if(!isObject(src)) {\n    return dest\n  }\n\n  // Wrap components\n  // Parses existing components in the system, and prepares them for wrapping via getComponents\n  if(src.wrapComponents) {\n    objMap(src.wrapComponents, (wrapperFn, key) => {\n      const ori = dest.components && dest.components[key]\n      if(ori && Array.isArray(ori)) {\n        dest.components[key] = ori.concat([wrapperFn])\n        delete src.wrapComponents[key]\n      } else if(ori) {\n        dest.components[key] = [ori, wrapperFn]\n        delete src.wrapComponents[key]\n      }\n    })\n\n    if(!Object.keys(src.wrapComponents).length) {\n      // only delete wrapComponents if we've matched all of our wrappers to components\n      // this handles cases where the component to wrap may be out of our scope,\n      // but a higher recursive `combinePlugins` call will be able to handle it.\n      delete src.wrapComponents\n    }\n  }\n\n\n  // Account for wrapActions, make it an array and append to it\n  // Modifies `src`\n  // 80% of this code is just safe traversal. We need to address that ( ie: use a lib )\n  const { statePlugins } = dest\n  if(isObject(statePlugins)) {\n    for(let namespace in statePlugins) {\n      const namespaceObj = statePlugins[namespace]\n      if(!isObject(namespaceObj)) {\n        continue\n      }\n\n      const { wrapActions, wrapSelectors } = namespaceObj\n\n      // process action wrapping\n      if (isObject(wrapActions)) {\n        for(let actionName in wrapActions) {\n          let action = wrapActions[actionName]\n\n          // This should only happen if dest is the first plugin, since invocations after that will ensure its an array\n          if(!Array.isArray(action)) {\n            action = [action]\n            wrapActions[actionName] = action // Put the value inside an array\n          }\n\n          if(src && src.statePlugins && src.statePlugins[namespace] && src.statePlugins[namespace].wrapActions && src.statePlugins[namespace].wrapActions[actionName]) {\n            src.statePlugins[namespace].wrapActions[actionName] = wrapActions[actionName].concat(src.statePlugins[namespace].wrapActions[actionName])\n          }\n\n        }\n      }\n\n      // process selector wrapping\n      if (isObject(wrapSelectors)) {\n        for(let selectorName in wrapSelectors) {\n          let selector = wrapSelectors[selectorName]\n\n          // This should only happen if dest is the first plugin, since invocations after that will ensure its an array\n          if(!Array.isArray(selector)) {\n            selector = [selector]\n            wrapSelectors[selectorName] = selector // Put the value inside an array\n          }\n\n          if(src && src.statePlugins && src.statePlugins[namespace] && src.statePlugins[namespace].wrapSelectors && src.statePlugins[namespace].wrapSelectors[selectorName]) {\n            src.statePlugins[namespace].wrapSelectors[selectorName] = wrapSelectors[selectorName].concat(src.statePlugins[namespace].wrapSelectors[selectorName])\n          }\n\n        }\n      }\n    }\n  }\n\n  return deepExtend(dest, src)\n}\n\nfunction buildReducer(states) {\n  let reducerObj = objMap(states, (val) => {\n    return val.reducers\n  })\n  return allReducers(reducerObj)\n}\n\nfunction allReducers(reducerSystem) {\n  let reducers = Object.keys(reducerSystem).reduce((obj, key) => {\n    obj[key] = makeReducer(reducerSystem[key])\n    return obj\n  },{})\n\n  if(!Object.keys(reducers).length) {\n    return idFn\n  }\n\n  return combineReducers(reducers)\n}\n\nfunction makeReducer(reducerObj) {\n  return (state = new Map(), action) => {\n    if(!reducerObj)\n      return state\n\n    let redFn = (reducerObj[action.type])\n    if(redFn) {\n      const res = wrapWithTryCatch(redFn)(state, action)\n      // If the try/catch wrapper kicks in, we'll get null back...\n      // in that case, we want to avoid making any changes to state\n      return res === null ? state : res\n    }\n    return state\n  }\n}\n\nfunction wrapWithTryCatch(fn, {\n  logErrors = true\n} = {}) {\n  if(typeof fn !== \"function\") {\n    return fn\n  }\n\n  return function(...args) {\n    try {\n      return fn.call(this, ...args)\n    } catch(e) {\n      if(logErrors) {\n        console.error(e)\n      }\n      return null\n    }\n  }\n}\n\nfunction configureStore(rootReducer, initialState, getSystem) {\n  const store = createStoreWithMiddleware(rootReducer, initialState, getSystem)\n\n  // if (module.hot) {\n  //   // Enable Webpack hot module replacement for reducers\n  //   module.hot.accept(\"reducers/index\", () => {\n  //     const nextRootReducer = require(\"reducers/index\")\n  //     store.replaceReducer(nextRootReducer)\n  //   })\n  // }\n\n  return store\n}\n", "import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { opId } from \"swagger-client/es/helpers\"\nimport { Iterable, fromJS, Map } from \"immutable\"\n\nexport default class OperationContainer extends PureComponent {\n  constructor(props, context) {\n    super(props, context)\n\n    const { tryItOutEnabled } = props.getConfigs()\n\n    this.state = {\n      tryItOutEnabled: tryItOutEnabled === true || tryItOutEnabled === \"true\",\n      executeInProgress: false\n    }\n  }\n\n  static propTypes = {\n    op: PropTypes.instanceOf(Iterable).isRequired,\n    tag: PropTypes.string.isRequired,\n    path: PropTypes.string.isRequired,\n    method: PropTypes.string.isRequired,\n    operationId: PropTypes.string.isRequired,\n    showSummary: PropTypes.bool.isRequired,\n    isShown: PropTypes.bool.isRequired,\n    jumpToKey: PropTypes.string.isRequired,\n    allowTryItOut: PropTypes.bool,\n    displayOperationId: PropTypes.bool,\n    isAuthorized: PropTypes.bool,\n    displayRequestDuration: PropTypes.bool,\n    response: PropTypes.instanceOf(Iterable),\n    request: PropTypes.instanceOf(Iterable),\n    security: PropTypes.instanceOf(Iterable),\n    isDeepLinkingEnabled: PropTypes.bool.isRequired,\n    specPath: ImPropTypes.list.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    authActions: PropTypes.object,\n    oas3Actions: PropTypes.object,\n    oas3Selectors: PropTypes.object,\n    authSelectors: PropTypes.object,\n    specActions: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    layoutActions: PropTypes.object.isRequired,\n    layoutSelectors: PropTypes.object.isRequired,\n    fn: PropTypes.object.isRequired,\n    getConfigs: PropTypes.func.isRequired\n  }\n\n  static defaultProps = {\n    showSummary: true,\n    response: null,\n    allowTryItOut: true,\n    displayOperationId: false,\n    displayRequestDuration: false\n  }\n\n  mapStateToProps(nextState, props) {\n    const { op, layoutSelectors, getConfigs } = props\n    const { docExpansion, deepLinking, displayOperationId, displayRequestDuration, supportedSubmitMethods } = getConfigs()\n    const showSummary = layoutSelectors.showSummary()\n    const operationId = op.getIn([\"operation\", \"__originalOperationId\"]) || op.getIn([\"operation\", \"operationId\"]) || opId(op.get(\"operation\"), props.path, props.method) || op.get(\"id\")\n    const isShownKey = [\"operations\", props.tag, operationId]\n    const isDeepLinkingEnabled = deepLinking && deepLinking !== \"false\"\n    const allowTryItOut = supportedSubmitMethods.indexOf(props.method) >= 0 && (typeof props.allowTryItOut === \"undefined\" ?\n      props.specSelectors.allowTryItOutFor(props.path, props.method) : props.allowTryItOut)\n    const security = op.getIn([\"operation\", \"security\"]) || props.specSelectors.security()\n\n    return {\n      operationId,\n      isDeepLinkingEnabled,\n      showSummary,\n      displayOperationId,\n      displayRequestDuration,\n      allowTryItOut,\n      security,\n      isAuthorized: props.authSelectors.isAuthorized(security),\n      isShown: layoutSelectors.isShown(isShownKey, docExpansion === \"full\" ),\n      jumpToKey: `paths.${props.path}.${props.method}`,\n      response: props.specSelectors.responseFor(props.path, props.method),\n      request: props.specSelectors.requestFor(props.path, props.method)\n    }\n  }\n\n  componentDidMount() {\n    const { isShown } = this.props\n    const resolvedSubtree = this.getResolvedSubtree()\n\n    if(isShown && resolvedSubtree === undefined) {\n      this.requestResolvedSubtree()\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    const { response, isShown } = nextProps\n    const resolvedSubtree = this.getResolvedSubtree()\n\n    if(response !== this.props.response) {\n      this.setState({ executeInProgress: false })\n    }\n\n    if(isShown && resolvedSubtree === undefined) {\n      this.requestResolvedSubtree()\n    }\n  }\n\n  toggleShown =() => {\n    let { layoutActions, tag, operationId, isShown } = this.props\n    const resolvedSubtree = this.getResolvedSubtree()\n    if(!isShown && resolvedSubtree === undefined) {\n      // transitioning from collapsed to expanded\n      this.requestResolvedSubtree()\n    }\n    layoutActions.show([\"operations\", tag, operationId], !isShown)\n  }\n\n  onCancelClick=() => {\n    this.setState({tryItOutEnabled: !this.state.tryItOutEnabled})\n  }\n\n  onTryoutClick =() => {\n    this.setState({tryItOutEnabled: !this.state.tryItOutEnabled})\n  }\n\n  onExecute = () => {\n    this.setState({ executeInProgress: true })\n  }\n\n  getResolvedSubtree = () => {\n    const {\n      specSelectors,\n      path,\n      method,\n      specPath\n    } = this.props\n\n    if(specPath) {\n      return specSelectors.specResolvedSubtree(specPath.toJS())\n    }\n\n    return specSelectors.specResolvedSubtree([\"paths\", path, method])\n  }\n\n  requestResolvedSubtree = () => {\n    const {\n      specActions,\n      path,\n      method,\n      specPath\n    } = this.props\n\n\n    if(specPath) {\n      return specActions.requestResolvedSubtree(specPath.toJS())\n    }\n\n    return specActions.requestResolvedSubtree([\"paths\", path, method])\n  }\n\n  render() {\n    let {\n      op: unresolvedOp,\n      tag,\n      path,\n      method,\n      security,\n      isAuthorized,\n      operationId,\n      showSummary,\n      isShown,\n      jumpToKey,\n      allowTryItOut,\n      response,\n      request,\n      displayOperationId,\n      displayRequestDuration,\n      isDeepLinkingEnabled,\n      specPath,\n      specSelectors,\n      specActions,\n      getComponent,\n      getConfigs,\n      layoutSelectors,\n      layoutActions,\n      authActions,\n      authSelectors,\n      oas3Actions,\n      oas3Selectors,\n      fn\n    } = this.props\n\n    const Operation = getComponent( \"operation\" )\n\n    const resolvedSubtree = this.getResolvedSubtree() || Map()\n\n    const operationProps = fromJS({\n      op: resolvedSubtree,\n      tag,\n      path,\n      summary: unresolvedOp.getIn([\"operation\", \"summary\"]) || \"\",\n      deprecated: resolvedSubtree.get(\"deprecated\") || unresolvedOp.getIn([\"operation\", \"deprecated\"]) || false,\n      method,\n      security,\n      isAuthorized,\n      operationId,\n      originalOperationId: resolvedSubtree.getIn([\"operation\", \"__originalOperationId\"]),\n      showSummary,\n      isShown,\n      jumpToKey,\n      allowTryItOut,\n      request,\n      displayOperationId,\n      displayRequestDuration,\n      isDeepLinkingEnabled,\n      executeInProgress: this.state.executeInProgress,\n      tryItOutEnabled: this.state.tryItOutEnabled\n    })\n\n    return (\n      <Operation\n        operation={operationProps}\n        response={response}\n        request={request}\n        isShown={isShown}\n\n        toggleShown={this.toggleShown}\n        onTryoutClick={this.onTryoutClick}\n        onCancelClick={this.onCancelClick}\n        onExecute={this.onExecute}\n        specPath={specPath}\n\n        specActions={ specActions }\n        specSelectors={ specSelectors }\n        oas3Actions={oas3Actions}\n        oas3Selectors={oas3Selectors}\n        layoutActions={ layoutActions }\n        layoutSelectors={ layoutSelectors }\n        authActions={ authActions }\n        authSelectors={ authSelectors }\n        getComponent={ getComponent }\n        getConfigs={ getConfigs }\n        fn={fn}\n      />\n    )\n  }\n\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class App extends React.Component {\n\n  getLayout() {\n    let { getComponent, layoutSelectors } = this.props\n    const layoutName = layoutSelectors.current()\n    const Component = getComponent(layoutName, true)\n    return Component ? Component : ()=> <h1> No layout defined for &quot;{layoutName}&quot; </h1>\n  }\n\n  render() {\n    const Layout = this.getLayout()\n\n    return (\n      <Layout/>\n    )\n  }\n}\n\nApp.propTypes = {\n  getComponent: PropTypes.func.isRequired,\n  layoutSelectors: PropTypes.object.isRequired,\n}\n\nApp.defaultProps = {\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthorizationPopup extends React.Component {\n  close =() => {\n    let { authActions } = this.props\n\n    authActions.showDefinitions(false)\n  }\n\n  render() {\n    let { authSelectors, authActions, getComponent, errSelectors, specSelectors, fn: { AST = {} } } = this.props\n    let definitions = authSelectors.shownDefinitions()\n    const Auths = getComponent(\"auths\")\n\n    return (\n      <div className=\"dialog-ux\">\n        <div className=\"backdrop-ux\"></div>\n        <div className=\"modal-ux\">\n          <div className=\"modal-dialog-ux\">\n            <div className=\"modal-ux-inner\">\n              <div className=\"modal-ux-header\">\n                <h3>Available authorizations</h3>\n                <button type=\"button\" className=\"close-modal\" onClick={ this.close }>\n                  <svg width=\"20\" height=\"20\">\n                    <use href=\"#close\" xlinkHref=\"#close\" />\n                  </svg>\n                </button>\n              </div>\n              <div className=\"modal-ux-content\">\n\n                {\n                  definitions.valueSeq().map(( definition, key ) => {\n                    return <Auths key={ key }\n                                  AST={AST}\n                                  definitions={ definition }\n                                  getComponent={ getComponent }\n                                  errSelectors={ errSelectors }\n                                  authSelectors={ authSelectors }\n                                  authActions={ authActions }\n                                  specSelectors={ specSelectors }/>\n                  })\n                }\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    )\n  }\n\n  static propTypes = {\n    fn: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    authSelectors: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    errSelectors: PropTypes.object.isRequired,\n    authActions: PropTypes.object.isRequired,\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthorizeBtn extends React.Component {\n  static propTypes = {\n    onClick: PropTypes.func,\n    isAuthorized: PropTypes.bool,\n    showPopup: PropTypes.bool,\n    getComponent: PropTypes.func.isRequired\n  }\n\n  render() {\n    let { isAuthorized, showPopup, onClick, getComponent } = this.props\n\n    //must be moved out of button component\n    const AuthorizationPopup = getComponent(\"authorizationPopup\", true)\n\n    return (\n      <div className=\"auth-wrapper\">\n        <button className={isAuthorized ? \"btn authorize locked\" : \"btn authorize unlocked\"} onClick={onClick}>\n          <span>Authorize</span>\n          <svg width=\"20\" height=\"20\">\n            <use href={ isAuthorized ? \"#locked\" : \"#unlocked\" } xlinkHref={ isAuthorized ? \"#locked\" : \"#unlocked\" } />\n          </svg>\n        </button>\n      { showPopup && <AuthorizationPopup /> }\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthorizeBtnContainer extends React.Component {\n\n  static propTypes = {\n    specActions: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    authActions: PropTypes.object.isRequired,\n    authSelectors: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired\n  }\n\n  render () {\n    const { authActions, authSelectors, specSelectors, getComponent} = this.props\n    \n    const securityDefinitions = specSelectors.securityDefinitions()\n    const authorizableDefinitions = authSelectors.definitionsToAuthorize()\n\n    const AuthorizeBtn = getComponent(\"authorizeBtn\")\n\n    return securityDefinitions ? (\n      <AuthorizeBtn\n        onClick={() => authActions.showDefinitions(authorizableDefinitions)}\n        isAuthorized={!!authSelectors.authorized().size}\n        showPopup={!!authSelectors.shownDefinitions()}\n        getComponent={getComponent}\n      />\n    ) : null\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthorizeOperationBtn extends React.Component {\n    static propTypes = {\n      isAuthorized: PropTypes.bool.isRequired,\n      onClick: PropTypes.func\n    }\n\n  onClick =(e) => {\n    e.stopPropagation()\n    let { onClick } = this.props\n\n    if(onClick) {\n      onClick()\n    }\n  }\n\n  render() {\n    let { isAuthorized } = this.props\n\n    return (\n      <button className={isAuthorized ? \"authorization__btn locked\" : \"authorization__btn unlocked\"}\n        aria-label={isAuthorized ? \"authorization button locked\" : \"authorization button unlocked\"}\n        onClick={this.onClick}>\n        <svg width=\"20\" height=\"20\">\n          <use href={ isAuthorized ? \"#locked\" : \"#unlocked\" } xlinkHref={ isAuthorized ? \"#locked\" : \"#unlocked\" } />\n        </svg>\n      </button>\n\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class Auths extends React.Component {\n  static propTypes = {\n    definitions: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    authSelectors: PropTypes.object.isRequired,\n    authActions: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired\n  }\n\n  constructor(props, context) {\n    super(props, context)\n\n    this.state = {}\n  }\n\n  onAuthChange =(auth) => {\n    let { name } = auth\n\n    this.setState({ [name]: auth })\n  }\n\n  submitAuth =(e) => {\n    e.preventDefault()\n\n    let { authActions } = this.props\n    authActions.authorizeWithPersistOption(this.state)\n  }\n\n  logoutClick =(e) => {\n    e.preventDefault()\n\n    let { authActions, definitions } = this.props\n    let auths = definitions.map( (val, key) => {\n      return key\n    }).toArray()\n\n    this.setState(auths.reduce((prev, auth) => {\n      prev[auth] = \"\"\n      return prev\n    }, {}))\n\n    authActions.logoutWithPersistOption(auths)\n  }\n\n  close =(e) => {\n    e.preventDefault()\n    let { authActions } = this.props\n\n    authActions.showDefinitions(false)\n  }\n\n  render() {\n    let { definitions, getComponent, authSelectors, errSelectors } = this.props\n    const AuthItem = getComponent(\"AuthItem\")\n    const Oauth2 = getComponent(\"oauth2\", true)\n    const Button = getComponent(\"Button\")\n\n    let authorized = authSelectors.authorized()\n\n    let authorizedAuth = definitions.filter( (definition, key) => {\n      return !!authorized.get(key)\n    })\n\n    let nonOauthDefinitions = definitions.filter( schema => schema.get(\"type\") !== \"oauth2\")\n    let oauthDefinitions = definitions.filter( schema => schema.get(\"type\") === \"oauth2\")\n\n    return (\n      <div className=\"auth-container\">\n        {\n          !!nonOauthDefinitions.size && <form onSubmit={ this.submitAuth }>\n            {\n              nonOauthDefinitions.map( (schema, name) => {\n                return <AuthItem\n                  key={name}\n                  schema={schema}\n                  name={name}\n                  getComponent={getComponent}\n                  onAuthChange={this.onAuthChange}\n                  authorized={authorized}\n                  errSelectors={errSelectors}\n                  />\n              }).toArray()\n            }\n            <div className=\"auth-btn-wrapper\">\n              {\n                nonOauthDefinitions.size === authorizedAuth.size ? <Button className=\"btn modal-btn auth\" onClick={ this.logoutClick }>Logout</Button>\n              : <Button type=\"submit\" className=\"btn modal-btn auth authorize\">Authorize</Button>\n              }\n              <Button className=\"btn modal-btn auth btn-done\" onClick={ this.close }>Close</Button>\n            </div>\n          </form>\n        }\n\n        {\n          oauthDefinitions && oauthDefinitions.size ? <div>\n          <div className=\"scope-def\">\n            <p>Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.</p>\n            <p>API requires the following scopes. Select which ones you want to grant to Swagger UI.</p>\n          </div>\n            {\n              definitions.filter( schema => schema.get(\"type\") === \"oauth2\")\n                .map( (schema, name) =>{\n                  return (<div key={ name }>\n                    <Oauth2 authorized={ authorized }\n                            schema={ schema }\n                            name={ name } />\n                  </div>)\n                }\n                ).toArray()\n            }\n          </div> : null\n        }\n\n      </div>\n    )\n  }\n\n  static propTypes = {\n    errSelectors: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    authSelectors: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    authActions: PropTypes.object.isRequired,\n    definitions: ImPropTypes.iterable.isRequired\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class Auths extends React.Component {\n  static propTypes = {\n    schema: ImPropTypes.orderedMap.isRequired,\n    name: PropTypes.string.isRequired,\n    onAuthChange: PropTypes.func.isRequired,\n    authorized: ImPropTypes.orderedMap.isRequired\n  }\n\n  render() {\n    let {\n      schema,\n      name,\n      getComponent,\n      onAuthChange,\n      authorized,\n      errSelectors\n    } = this.props\n    const ApiKeyAuth = getComponent(\"apiKeyAuth\")\n    const BasicAuth = getComponent(\"basicAuth\")\n\n    let authEl\n\n    const type = schema.get(\"type\")\n\n    switch(type) {\n      case \"apiKey\": authEl = <ApiKeyAuth key={ name }\n                                        schema={ schema }\n                                        name={ name }\n                                        errSelectors={ errSelectors }\n                                        authorized={ authorized }\n                                        getComponent={ getComponent }\n                                        onChange={ onAuthChange } />\n        break\n      case \"basic\": authEl = <BasicAuth key={ name }\n                                      schema={ schema }\n                                      name={ name }\n                                      errSelectors={ errSelectors }\n                                      authorized={ authorized }\n                                      getComponent={ getComponent }\n                                      onChange={ onAuthChange } />\n        break\n      default: authEl = <div key={ name }>Unknown security definition type { type }</div>\n    }\n\n    return (<div key={`${name}-jump`}>\n      { authEl }\n    </div>)\n  }\n\n  static propTypes = {\n    errSelectors: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    authSelectors: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    authActions: PropTypes.object.isRequired,\n    definitions: ImPropTypes.iterable.isRequired\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthError extends React.Component {\n\n  static propTypes = {\n    error: PropTypes.object.isRequired\n  }\n\n  render() {\n    let { error } = this.props\n\n    let level = error.get(\"level\")\n    let message = error.get(\"message\")\n    let source = error.get(\"source\")\n\n    return (\n      <div className=\"errors\">\n        <b>{ source } { level }</b>\n        <span>{ message }</span>\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class ApiKeyAuth extends React.Component {\n  static propTypes = {\n    authorized: PropTypes.object,\n    getComponent: PropTypes.func.isRequired,\n    errSelectors: PropTypes.object.isRequired,\n    schema: PropTypes.object.isRequired,\n    name: PropTypes.string.isRequired,\n    onChange: PropTypes.func\n  }\n\n  constructor(props, context) {\n    super(props, context)\n    let { name, schema } = this.props\n    let value = this.getValue()\n\n    this.state = {\n      name: name,\n      schema: schema,\n      value: value\n    }\n  }\n\n  getValue () {\n    let { name, authorized } = this.props\n\n    return authorized && authorized.getIn([name, \"value\"])\n  }\n\n  onChange =(e) => {\n    let { onChange } = this.props\n    let value = e.target.value\n    let newState = Object.assign({}, this.state, { value: value })\n\n    this.setState(newState)\n    onChange(newState)\n  }\n\n  render() {\n    let { schema, getComponent, errSelectors, name } = this.props\n    const Input = getComponent(\"Input\")\n    const Row = getComponent(\"Row\")\n    const Col = getComponent(\"Col\")\n    const AuthError = getComponent(\"authError\")\n    const Markdown = getComponent(\"Markdown\", true)\n    const JumpToPath = getComponent(\"JumpToPath\", true)\n    let value = this.getValue()\n    let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n\n    return (\n      <div>\n        <h4>\n          <code>{ name || schema.get(\"name\") }</code>&nbsp;(apiKey)\n          <JumpToPath path={[ \"securityDefinitions\", name ]} />\n        </h4>\n        { value && <h6>Authorized</h6>}\n        <Row>\n          <Markdown source={ schema.get(\"description\") } />\n        </Row>\n        <Row>\n          <p>Name: <code>{ schema.get(\"name\") }</code></p>\n        </Row>\n        <Row>\n          <p>In: <code>{ schema.get(\"in\") }</code></p>\n        </Row>\n        <Row>\n          <label>Value:</label>\n          {\n            value ? <code> ****** </code>\n                  : <Col><Input type=\"text\" onChange={ this.onChange } autoFocus/></Col>\n          }\n        </Row>\n        {\n          errors.valueSeq().map( (error, key) => {\n            return <AuthError error={ error }\n                              key={ key }/>\n          } )\n        }\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class BasicAuth extends React.Component {\n  static propTypes = {\n    authorized: PropTypes.object,\n    getComponent: PropTypes.func.isRequired,\n    schema: PropTypes.object.isRequired,\n    onChange: PropTypes.func.isRequired\n  }\n\n  constructor(props, context) {\n    super(props, context)\n    let { schema, name } = this.props\n\n    let value = this.getValue()\n    let username = value.username\n\n    this.state = {\n      name: name,\n      schema: schema,\n      value: !username ? {} : {\n        username: username\n      }\n    }\n  }\n\n  getValue () {\n    let { authorized, name } = this.props\n\n    return authorized && authorized.getIn([name, \"value\"]) || {}\n  }\n\n  onChange =(e) => {\n    let { onChange } = this.props\n    let { value, name } = e.target\n\n    let newValue = this.state.value\n    newValue[name] = value\n\n    this.setState({ value: newValue })\n\n    onChange(this.state)\n  }\n\n  render() {\n    let { schema, getComponent, name, errSelectors } = this.props\n    const Input = getComponent(\"Input\")\n    const Row = getComponent(\"Row\")\n    const Col = getComponent(\"Col\")\n    const AuthError = getComponent(\"authError\")\n    const JumpToPath = getComponent(\"JumpToPath\", true)\n    const Markdown = getComponent(\"Markdown\", true)\n    let username = this.getValue().username\n    let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n\n    return (\n      <div>\n        <h4>Basic authorization<JumpToPath path={[ \"securityDefinitions\", name ]} /></h4>\n        { username && <h6>Authorized</h6> }\n        <Row>\n          <Markdown source={ schema.get(\"description\") } />\n        </Row>\n        <Row>\n          <label>Username:</label>\n          {\n            username ? <code> { username } </code>\n                     : <Col><Input type=\"text\" required=\"required\" name=\"username\" onChange={ this.onChange } autoFocus/></Col>\n          }\n        </Row>\n        <Row>\n          <label>Password:</label>\n            {\n              username ? <code> ****** </code>\n                       : <Col><Input autoComplete=\"new-password\"\n                                     name=\"password\"\n                                     type=\"password\"\n                                     onChange={ this.onChange }/></Col>\n            }\n        </Row>\n        {\n          errors.valueSeq().map( (error, key) => {\n            return <AuthError error={ error }\n                              key={ key }/>\n          } )\n        }\n      </div>\n    )\n  }\n\n  static propTypes = {\n    name: PropTypes.string.isRequired,\n    errSelectors: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    onChange: PropTypes.func,\n    schema: ImPropTypes.map,\n    authorized: ImPropTypes.map\n  }\n}\n", "/**\n * @prettier\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { stringify } from \"core/utils\"\n\nexport default function Example(props) {\n  const { example, showValue, getComponent, getConfigs } = props\n\n  const Markdown = getComponent(\"Markdown\", true)\n  const HighlightCode = getComponent(\"highlightCode\")\n\n  if(!example) return null\n\n  return (\n    <div className=\"example\">\n      {example.get(\"description\") ? (\n        <section className=\"example__section\">\n          <div className=\"example__section-header\">Example Description</div>\n          <p>\n            <Markdown source={example.get(\"description\")} />\n          </p>\n        </section>\n      ) : null}\n      {showValue && example.has(\"value\") ? (\n        <section className=\"example__section\">\n          <div className=\"example__section-header\">Example Value</div>\n          <HighlightCode getConfigs={ getConfigs } value={stringify(example.get(\"value\"))} />\n        </section>\n      ) : null}\n    </div>\n  )\n}\n\nExample.propTypes = {\n  example: ImPropTypes.map.isRequired,\n  showValue: PropTypes.bool,\n  getComponent: PropTypes.func.isRequired,\n  getConfigs: PropTypes.func.getConfigs,\n}\n", "/**\n * @prettier\n */\n\nimport React from \"react\"\nimport Im from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class ExamplesSelect extends React.PureComponent {\n  static propTypes = {\n    examples: ImPropTypes.map.isRequired,\n    onSelect: PropTypes.func,\n    currentExampleKey: PropTypes.string,\n    isModifiedValueAvailable: PropTypes.bool,\n    isValueModified: PropTypes.bool,\n    showLabels: PropTypes.bool,\n  }\n\n  static defaultProps = {\n    examples: Im.Map({}),\n    onSelect: (...args) =>\n      console.log( // eslint-disable-line no-console\n        // FIXME: remove before merging to master...\n        `DEBUG: ExamplesSelect was not given an onSelect callback`,\n        ...args\n      ),\n    currentExampleKey: null,\n    showLabels: true,\n  }\n\n  _onSelect = (key, { isSyntheticChange = false } = {}) => {\n    if (typeof this.props.onSelect === \"function\") {\n      this.props.onSelect(key, {\n        isSyntheticChange,\n      })\n    }\n  }\n\n  _onDomSelect = e => {\n    if (typeof this.props.onSelect === \"function\") {\n      const element = e.target.selectedOptions[0]\n      const key = element.getAttribute(\"value\")\n\n      this._onSelect(key, {\n        isSyntheticChange: false,\n      })\n    }\n  }\n\n  getCurrentExample = () => {\n    const { examples, currentExampleKey } = this.props\n\n    const currentExamplePerProps = examples.get(currentExampleKey)\n\n    const firstExamplesKey = examples.keySeq().first()\n    const firstExample = examples.get(firstExamplesKey)\n\n    return currentExamplePerProps || firstExample || Map({})\n  }\n\n  componentDidMount() {\n    // this is the not-so-great part of ExamplesSelect... here we're\n    // artificially kicking off an onSelect event in order to set a default\n    // value in state. the consumer has the option to avoid this by checking\n    // `isSyntheticEvent`, but we should really be doing this in a selector.\n    // TODO: clean this up\n    // FIXME: should this only trigger if `currentExamplesKey` is nullish?\n    const { onSelect, examples } = this.props\n\n    if (typeof onSelect === \"function\") {\n      const firstExample = examples.first()\n      const firstExampleKey = examples.keyOf(firstExample)\n\n      this._onSelect(firstExampleKey, {\n        isSyntheticChange: true,\n      })\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    const { currentExampleKey, examples } = nextProps\n    if (examples !== this.props.examples && !examples.has(currentExampleKey)) {\n      // examples have changed from under us, and the currentExampleKey is no longer\n      // valid.\n      const firstExample = examples.first()\n      const firstExampleKey = examples.keyOf(firstExample)\n\n      this._onSelect(firstExampleKey, {\n        isSyntheticChange: true,\n      })\n    }\n  }\n\n  render() {\n    const {\n      examples,\n      currentExampleKey,\n      isValueModified,\n      isModifiedValueAvailable,\n      showLabels,\n    } = this.props\n\n    return (\n      <div className=\"examples-select\">\n        {\n          showLabels ? (\n            <span className=\"examples-select__section-label\">Examples: </span>\n          ) : null\n        }\n        <select\n          className=\"examples-select-element\"\n          onChange={this._onDomSelect}\n          value={\n            isModifiedValueAvailable && isValueModified\n              ? \"__MODIFIED__VALUE__\"\n              : (currentExampleKey || \"\")\n          }\n        >\n          {isModifiedValueAvailable ? (\n            <option value=\"__MODIFIED__VALUE__\">[Modified value]</option>\n          ) : null}\n          {examples\n            .map((example, exampleName) => {\n              return (\n                <option\n                  key={exampleName} // for React\n                  value={exampleName} // for matching to select's `value`\n                >\n                  {example.get(\"summary\") || exampleName}\n                </option>\n              )\n            })\n            .valueSeq()}\n        </select>\n      </div>\n    )\n  }\n}\n", "/**\n * @prettier\n */\nimport React from \"react\"\nimport { Map, List } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nimport { stringify } from \"core/utils\"\n\n// This stateful component lets us avoid writing competing values (user\n// modifications vs example values) into global state, and the mess that comes\n// with that: tracking which of the two values are currently used for\n// Try-It-Out, which example a modified value came from, etc...\n//\n// The solution here is to retain the last user-modified value in\n// ExamplesSelectValueRetainer's component state, so that our global state can stay\n// clean, always simply being the source of truth for what value should be both\n// displayed to the user and used as a value during request execution.\n//\n// This approach/tradeoff was chosen in order to encapsulate the particular\n// logic of Examples within the Examples component tree, and to avoid\n// regressions within our current implementation elsewhere (non-Examples\n// definitions, OpenAPI 2.0, etc). A future refactor to global state might make\n// this component unnecessary.\n//\n// TL;DR: this is not our usual approach, but the choice was made consciously.\n\n// Note that `currentNamespace` isn't currently used anywhere!\n\nconst stringifyUnlessList = input =>\n  List.isList(input) ? input : stringify(input)\n\nexport default class ExamplesSelectValueRetainer extends React.PureComponent {\n  static propTypes = {\n    examples: ImPropTypes.map,\n    onSelect: PropTypes.func,\n    updateValue: PropTypes.func, // mechanism to update upstream value\n    userHasEditedBody: PropTypes.bool,\n    getComponent: PropTypes.func.isRequired,\n    currentUserInputValue: PropTypes.any,\n    currentKey: PropTypes.string,\n    currentNamespace: PropTypes.string,\n    setRetainRequestBodyValueFlag: PropTypes.func.isRequired,\n    // (also proxies props for Examples)\n  }\n\n  static defaultProps = {\n    userHasEditedBody: false,\n    examples: Map({}),\n    currentNamespace: \"__DEFAULT__NAMESPACE__\",\n    setRetainRequestBodyValueFlag: () => {\n      // NOOP\n    },\n    onSelect: (...args) =>\n      console.log( // eslint-disable-line no-console\n        \"ExamplesSelectValueRetainer: no `onSelect` function was provided\",\n        ...args\n      ),\n    updateValue: (...args) =>\n      console.log( // eslint-disable-line no-console\n        \"ExamplesSelectValueRetainer: no `updateValue` function was provided\",\n        ...args\n      ),\n  }\n\n  constructor(props) {\n    super(props)\n\n    const valueFromExample = this._getCurrentExampleValue()\n\n    this.state = {\n      // user edited: last value that came from the world around us, and didn't\n      // match the current example's value\n      // internal: last value that came from user selecting an Example\n      [props.currentNamespace]: Map({\n        lastUserEditedValue: this.props.currentUserInputValue,\n        lastDownstreamValue: valueFromExample,\n        isModifiedValueSelected:\n          // valueFromExample !== undefined &&\n          this.props.userHasEditedBody ||\n          this.props.currentUserInputValue !== valueFromExample,\n      }),\n    }\n  }\n\n  componentWillUnmount() {\n    this.props.setRetainRequestBodyValueFlag(false)\n  }\n\n  _getStateForCurrentNamespace = () => {\n    const { currentNamespace } = this.props\n\n    return (this.state[currentNamespace] || Map()).toObject()\n  }\n\n  _setStateForCurrentNamespace = obj => {\n    const { currentNamespace } = this.props\n\n    return this._setStateForNamespace(currentNamespace, obj)\n  }\n\n  _setStateForNamespace = (namespace, obj) => {\n    const oldStateForNamespace = this.state[namespace] || Map()\n    const newStateForNamespace = oldStateForNamespace.mergeDeep(obj)\n    return this.setState({\n      [namespace]: newStateForNamespace,\n    })\n  }\n\n  _isCurrentUserInputSameAsExampleValue = () => {\n    const { currentUserInputValue } = this.props\n\n    const valueFromExample = this._getCurrentExampleValue()\n\n    return valueFromExample === currentUserInputValue\n  }\n\n  _getValueForExample = (exampleKey, props) => {\n    // props are accepted so that this can be used in UNSAFE_componentWillReceiveProps,\n    // which has access to `nextProps`\n    const { examples } = props || this.props\n    return stringifyUnlessList(\n      (examples || Map({})).getIn([exampleKey, \"value\"])\n    )\n  }\n\n  _getCurrentExampleValue = props => {\n    // props are accepted so that this can be used in UNSAFE_componentWillReceiveProps,\n    // which has access to `nextProps`\n    const { currentKey } = props || this.props\n    return this._getValueForExample(currentKey, props || this.props)\n  }\n\n  _onExamplesSelect = (key, { isSyntheticChange } = {}, ...otherArgs) => {\n    const {\n      onSelect,\n      updateValue,\n      currentUserInputValue,\n      userHasEditedBody,\n    } = this.props\n    const { lastUserEditedValue } = this._getStateForCurrentNamespace()\n\n    const valueFromExample = this._getValueForExample(key)\n\n    if (key === \"__MODIFIED__VALUE__\") {\n      updateValue(stringifyUnlessList(lastUserEditedValue))\n      return this._setStateForCurrentNamespace({\n        isModifiedValueSelected: true,\n      })\n    }\n\n    if (typeof onSelect === \"function\") {\n      onSelect(key, { isSyntheticChange }, ...otherArgs)\n    }\n\n    this._setStateForCurrentNamespace({\n      lastDownstreamValue: valueFromExample,\n      isModifiedValueSelected:\n        (isSyntheticChange && userHasEditedBody) ||\n        (!!currentUserInputValue && currentUserInputValue !== valueFromExample),\n    })\n\n    // we never want to send up value updates from synthetic changes\n    if (isSyntheticChange) return\n\n    if (typeof updateValue === \"function\") {\n      updateValue(stringifyUnlessList(valueFromExample))\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    // update `lastUserEditedValue` as new currentUserInput values come in\n\n    const {\n      currentUserInputValue: newValue,\n      examples,\n      onSelect,\n      userHasEditedBody,\n    } = nextProps\n\n    const {\n      lastUserEditedValue,\n      lastDownstreamValue,\n    } = this._getStateForCurrentNamespace()\n\n    const valueFromCurrentExample = this._getValueForExample(\n      nextProps.currentKey,\n      nextProps\n    )\n\n    const examplesMatchingNewValue = examples.filter(\n      (example) =>\n        example.get(\"value\") === newValue ||\n        // sometimes data is stored as a string (e.g. in Request Bodies), so\n        // let's check against a stringified version of our example too\n        stringify(example.get(\"value\")) === newValue\n    )\n\n    if (examplesMatchingNewValue.size) {\n      let key\n      if(examplesMatchingNewValue.has(nextProps.currentKey))\n      {\n        key = nextProps.currentKey\n      } else {\n        key = examplesMatchingNewValue.keySeq().first()\n      }\n      onSelect(key, {\n        isSyntheticChange: true,\n      })\n    } else if (\n      newValue !== this.props.currentUserInputValue && // value has changed\n      newValue !== lastUserEditedValue && // value isn't already tracked\n      newValue !== lastDownstreamValue // value isn't what we've seen on the other side\n    ) {\n      this.props.setRetainRequestBodyValueFlag(true)\n      this._setStateForNamespace(nextProps.currentNamespace, {\n        lastUserEditedValue: nextProps.currentUserInputValue,\n        isModifiedValueSelected:\n          userHasEditedBody || newValue !== valueFromCurrentExample,\n      })\n    }\n  }\n\n  render() {\n    const {\n      currentUserInputValue,\n      examples,\n      currentKey,\n      getComponent,\n      userHasEditedBody,\n    } = this.props\n    const {\n      lastDownstreamValue,\n      lastUserEditedValue,\n      isModifiedValueSelected,\n    } = this._getStateForCurrentNamespace()\n\n    const ExamplesSelect = getComponent(\"ExamplesSelect\")\n\n    return (\n      <ExamplesSelect\n        examples={examples}\n        currentExampleKey={currentKey}\n        onSelect={this._onExamplesSelect}\n        isModifiedValueAvailable={\n          !!lastUserEditedValue && lastUserEditedValue !== lastDownstreamValue\n        }\n        isValueModified={\n          (currentUserInputValue !== undefined &&\n            isModifiedValueSelected &&\n            currentUserInputValue !== this._getCurrentExampleValue()) ||\n          userHasEditedBody\n        }\n      />\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport oauth2Authorize from \"core/oauth2-authorize\"\n\nexport default class Oauth2 extends React.Component {\n  static propTypes = {\n    name: PropTypes.string,\n    authorized: PropTypes.object,\n    getComponent: PropTypes.func.isRequired,\n    schema: PropTypes.object.isRequired,\n    authSelectors: PropTypes.object.isRequired,\n    authActions: PropTypes.object.isRequired,\n    errSelectors: PropTypes.object.isRequired,\n    oas3Selectors: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    errActions: PropTypes.object.isRequired,\n    getConfigs: PropTypes.any\n  }\n\n  constructor(props, context) {\n    super(props, context)\n    let { name, schema, authorized, authSelectors } = this.props\n    let auth = authorized && authorized.get(name)\n    let authConfigs = authSelectors.getConfigs() || {}\n    let username = auth && auth.get(\"username\") || \"\"\n    let clientId = auth && auth.get(\"clientId\") || authConfigs.clientId || \"\"\n    let clientSecret = auth && auth.get(\"clientSecret\") || authConfigs.clientSecret || \"\"\n    let passwordType = auth && auth.get(\"passwordType\") || \"basic\"\n    let scopes = auth && auth.get(\"scopes\") || authConfigs.scopes || []\n    if (typeof scopes === \"string\") {\n      scopes = scopes.split(authConfigs.scopeSeparator || \" \")\n    }\n\n    this.state = {\n      appName: authConfigs.appName,\n      name: name,\n      schema: schema,\n      scopes: scopes,\n      clientId: clientId,\n      clientSecret: clientSecret,\n      username: username,\n      password: \"\",\n      passwordType: passwordType\n    }\n  }\n\n  close = (e) => {\n    e.preventDefault()\n    let { authActions } = this.props\n\n    authActions.showDefinitions(false)\n  }\n\n  authorize =() => {\n    let { authActions, errActions, getConfigs, authSelectors, oas3Selectors } = this.props\n    let configs = getConfigs()\n    let authConfigs = authSelectors.getConfigs()\n\n    errActions.clear({authId: name,type: \"auth\", source: \"auth\"})\n    oauth2Authorize({\n      auth: this.state,\n      currentServer: oas3Selectors.serverEffectiveValue(oas3Selectors.selectedServer()),\n      authActions,\n      errActions,\n      configs,\n      authConfigs\n    })\n  }\n\n  onScopeChange =(e) => {\n    let { target } = e\n    let { checked } = target\n    let scope = target.dataset.value\n\n    if ( checked && this.state.scopes.indexOf(scope) === -1 ) {\n      let newScopes = this.state.scopes.concat([scope])\n      this.setState({ scopes: newScopes })\n    } else if ( !checked && this.state.scopes.indexOf(scope) > -1) {\n      this.setState({ scopes: this.state.scopes.filter((val) => val !== scope) })\n    }\n  }\n\n  onInputChange =(e) => {\n    let { target : { dataset : { name }, value } } = e\n    let state = {\n      [name]: value\n    }\n\n    this.setState(state)\n  }\n\n  selectScopes =(e) => {\n    if (e.target.dataset.all) {\n      this.setState({\n        scopes: Array.from((this.props.schema.get(\"allowedScopes\") || this.props.schema.get(\"scopes\")).keys())\n      })\n    } else {\n      this.setState({ scopes: [] })\n    }\n  }\n\n  logout =(e) => {\n    e.preventDefault()\n    let { authActions, errActions, name } = this.props\n\n    errActions.clear({authId: name, type: \"auth\", source: \"auth\"})\n    authActions.logoutWithPersistOption([ name ])\n  }\n\n  render() {\n    let {\n      schema, getComponent, authSelectors, errSelectors, name, specSelectors\n    } = this.props\n    const Input = getComponent(\"Input\")\n    const Row = getComponent(\"Row\")\n    const Col = getComponent(\"Col\")\n    const Button = getComponent(\"Button\")\n    const AuthError = getComponent(\"authError\")\n    const JumpToPath = getComponent(\"JumpToPath\", true)\n    const Markdown = getComponent(\"Markdown\", true)\n    const InitializedInput = getComponent(\"InitializedInput\")\n\n    const { isOAS3 } = specSelectors\n\n    let oidcUrl = isOAS3() ? schema.get(\"openIdConnectUrl\") : null\n\n    // Auth type consts\n    const AUTH_FLOW_IMPLICIT = \"implicit\"\n    const AUTH_FLOW_PASSWORD = \"password\"\n    const AUTH_FLOW_ACCESS_CODE = isOAS3() ? (oidcUrl ? \"authorization_code\" : \"authorizationCode\") : \"accessCode\"\n    const AUTH_FLOW_APPLICATION = isOAS3() ? (oidcUrl ? \"client_credentials\" : \"clientCredentials\") : \"application\"\n\n    let authConfigs = authSelectors.getConfigs() || {}\n    let isPkceCodeGrant = !!authConfigs.usePkceWithAuthorizationCodeGrant\n\n    let flow = schema.get(\"flow\")\n    let flowToDisplay = flow === AUTH_FLOW_ACCESS_CODE && isPkceCodeGrant ? flow + \" with PKCE\" : flow\n    let scopes = schema.get(\"allowedScopes\") || schema.get(\"scopes\")\n    let authorizedAuth = authSelectors.authorized().get(name)\n    let isAuthorized = !!authorizedAuth\n    let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n    let isValid = !errors.filter( err => err.get(\"source\") === \"validation\").size\n    let description = schema.get(\"description\")\n\n    return (\n      <div>\n        <h4>{name} (OAuth2, { flowToDisplay }) <JumpToPath path={[ \"securityDefinitions\", name ]} /></h4>\n        { !this.state.appName ? null : <h5>Application: { this.state.appName } </h5> }\n        { description && <Markdown source={ schema.get(\"description\") } /> }\n\n        { isAuthorized && <h6>Authorized</h6> }\n\n        { oidcUrl && <p>OpenID Connect URL: <code>{ oidcUrl }</code></p> }\n        { ( flow === AUTH_FLOW_IMPLICIT || flow === AUTH_FLOW_ACCESS_CODE ) && <p>Authorization URL: <code>{ schema.get(\"authorizationUrl\") }</code></p> }\n        { ( flow === AUTH_FLOW_PASSWORD || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_APPLICATION ) && <p>Token URL:<code> { schema.get(\"tokenUrl\") }</code></p> }\n        <p className=\"flow\">Flow: <code>{ flowToDisplay }</code></p>\n\n        {\n          flow !== AUTH_FLOW_PASSWORD ? null\n            : <Row>\n              <Row>\n                <label htmlFor=\"oauth_username\">username:</label>\n                {\n                  isAuthorized ? <code> { this.state.username } </code>\n                    : <Col tablet={10} desktop={10}>\n                      <input id=\"oauth_username\" type=\"text\" data-name=\"username\" onChange={ this.onInputChange } autoFocus/>\n                    </Col>\n                }\n              </Row>\n              {\n\n              }\n              <Row>\n                <label htmlFor=\"oauth_password\">password:</label>\n                {\n                  isAuthorized ? <code> ****** </code>\n                    : <Col tablet={10} desktop={10}>\n                      <input id=\"oauth_password\" type=\"password\" data-name=\"password\" onChange={ this.onInputChange }/>\n                    </Col>\n                }\n              </Row>\n              <Row>\n                <label htmlFor=\"password_type\">Client credentials location:</label>\n                {\n                  isAuthorized ? <code> { this.state.passwordType } </code>\n                    : <Col tablet={10} desktop={10}>\n                      <select id=\"password_type\" data-name=\"passwordType\" onChange={ this.onInputChange }>\n                        <option value=\"basic\">Authorization header</option>\n                        <option value=\"request-body\">Request body</option>\n                      </select>\n                    </Col>\n                }\n              </Row>\n            </Row>\n        }\n        {\n          ( flow === AUTH_FLOW_APPLICATION || flow === AUTH_FLOW_IMPLICIT || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_PASSWORD ) &&\n          ( !isAuthorized || isAuthorized && this.state.clientId) && <Row>\n            <label htmlFor=\"client_id\">client_id:</label>\n            {\n              isAuthorized ? <code> ****** </code>\n                           : <Col tablet={10} desktop={10}>\n                               <InitializedInput id=\"client_id\"\n                                      type=\"text\"\n                                      required={ flow === AUTH_FLOW_PASSWORD }\n                                      initialValue={ this.state.clientId }\n                                      data-name=\"clientId\"\n                                      onChange={ this.onInputChange }/>\n                             </Col>\n            }\n          </Row>\n        }\n\n        {\n          ( (flow === AUTH_FLOW_APPLICATION || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_PASSWORD) && !isPkceCodeGrant && <Row>\n            <label htmlFor=\"client_secret\">client_secret:</label>\n            {\n              isAuthorized ? <code> ****** </code>\n                           : <Col tablet={10} desktop={10}>\n                               <InitializedInput id=\"client_secret\"\n                                      initialValue={ this.state.clientSecret }\n                                      type=\"password\"\n                                      data-name=\"clientSecret\"\n                                      onChange={ this.onInputChange }/>\n                             </Col>\n            }\n\n          </Row>\n        )}\n\n        {\n          !isAuthorized && scopes && scopes.size ? <div className=\"scopes\">\n            <h2>\n              Scopes:\n              <a onClick={this.selectScopes} data-all={true}>select all</a>\n              <a onClick={this.selectScopes}>select none</a>\n            </h2>\n            { scopes.map((description, name) => {\n              return (\n                <Row key={ name }>\n                  <div className=\"checkbox\">\n                    <Input data-value={ name }\n                          id={`${name}-${flow}-checkbox-${this.state.name}`}\n                           disabled={ isAuthorized }\n                           checked={ this.state.scopes.includes(name) }\n                           type=\"checkbox\"\n                           onChange={ this.onScopeChange }/>\n                         <label htmlFor={`${name}-${flow}-checkbox-${this.state.name}`}>\n                           <span className=\"item\"></span>\n                           <div className=\"text\">\n                             <p className=\"name\">{name}</p>\n                             <p className=\"description\">{description}</p>\n                           </div>\n                         </label>\n                  </div>\n                </Row>\n              )\n              }).toArray()\n            }\n          </div> : null\n        }\n\n        {\n          errors.valueSeq().map( (error, key) => {\n            return <AuthError error={ error }\n                              key={ key }/>\n          } )\n        }\n        <div className=\"auth-btn-wrapper\">\n        { isValid &&\n          ( isAuthorized ? <Button className=\"btn modal-btn auth authorize\" onClick={ this.logout }>Logout</Button>\n        : <Button className=\"btn modal-btn auth authorize\" onClick={ this.authorize }>Authorize</Button>\n          )\n        }\n          <Button className=\"btn modal-btn auth btn-done\" onClick={ this.close }>Close</Button>\n        </div>\n\n      </div>\n    )\n  }\n}\n", "import parseUrl from \"url-parse\"\nimport win from \"core/window\"\nimport Im from \"immutable\"\nimport { btoa, sanitizeUrl, generateCodeVerifier, createCodeChallenge } from \"core/utils\"\n\nexport default function authorize ( { auth, authActions, errActions, configs, authConfigs={}, currentServer } ) {\n  let { schema, scopes, name, clientId } = auth\n  let flow = schema.get(\"flow\")\n  let query = []\n\n  switch (flow) {\n    case \"password\":\n      authActions.authorizePassword(auth)\n      return\n\n    case \"application\":\n      authActions.authorizeApplication(auth)\n      return\n\n    case \"accessCode\":\n      query.push(\"response_type=code\")\n      break\n\n    case \"implicit\":\n      query.push(\"response_type=token\")\n      break\n\n    case \"clientCredentials\":\n    case \"client_credentials\":\n      // OAS3\n      authActions.authorizeApplication(auth)\n      return\n\n    case \"authorizationCode\":\n    case \"authorization_code\":\n      // OAS3\n      query.push(\"response_type=code\")\n      break\n  }\n\n  if (typeof clientId === \"string\") {\n    query.push(\"client_id=\" + encodeURIComponent(clientId))\n  }\n\n  let redirectUrl = configs.oauth2RedirectUrl\n\n  // todo move to parser\n  if (typeof redirectUrl === \"undefined\") {\n    errActions.newAuthErr( {\n      authId: name,\n      source: \"validation\",\n      level: \"error\",\n      message: \"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed.\"\n    })\n    return\n  }\n  query.push(\"redirect_uri=\" + encodeURIComponent(redirectUrl))\n\n  let scopesArray = []\n  if (Array.isArray(scopes)) {\n    scopesArray = scopes\n  } else if (Im.List.isList(scopes)) {\n    scopesArray = scopes.toArray()\n  }\n\n  if (scopesArray.length > 0) {\n    let scopeSeparator = authConfigs.scopeSeparator || \" \"\n\n    query.push(\"scope=\" + encodeURIComponent(scopesArray.join(scopeSeparator)))\n  }\n\n  let state = btoa(new Date())\n\n  query.push(\"state=\" + encodeURIComponent(state))\n\n  if (typeof authConfigs.realm !== \"undefined\") {\n    query.push(\"realm=\" + encodeURIComponent(authConfigs.realm))\n  }\n\n  if ((flow === \"authorizationCode\" || flow === \"authorization_code\" || flow === \"accessCode\") && authConfigs.usePkceWithAuthorizationCodeGrant) {\n      const codeVerifier = generateCodeVerifier()\n      const codeChallenge = createCodeChallenge(codeVerifier)\n\n      query.push(\"code_challenge=\" + codeChallenge)\n      query.push(\"code_challenge_method=S256\")\n\n      // storing the Code Verifier so it can be sent to the token endpoint\n      // when exchanging the Authorization Code for an Access Token\n      auth.codeVerifier = codeVerifier\n  }\n\n  let { additionalQueryStringParams } = authConfigs\n\n  for (let key in additionalQueryStringParams) {\n    if (typeof additionalQueryStringParams[key] !== \"undefined\") {\n      query.push([key, additionalQueryStringParams[key]].map(encodeURIComponent).join(\"=\"))\n    }\n  }\n\n  const authorizationUrl = schema.get(\"authorizationUrl\")\n  let sanitizedAuthorizationUrl\n  if (currentServer) {\n    // OpenAPI 3\n    sanitizedAuthorizationUrl = parseUrl(\n      sanitizeUrl(authorizationUrl),\n      currentServer,\n      true\n    ).toString()\n  } else {\n    sanitizedAuthorizationUrl = sanitizeUrl(authorizationUrl)\n  }\n  let url = [sanitizedAuthorizationUrl, query.join(\"&\")].join(authorizationUrl.indexOf(\"?\") === -1 ? \"?\" : \"&\")\n\n  // pass action authorizeOauth2 and authentication data through window\n  // to authorize with oauth2\n\n  let callback\n  if (flow === \"implicit\") {\n    callback = authActions.preAuthorizeImplicit\n  } else if (authConfigs.useBasicAuthenticationWithAccessCodeGrant) {\n    callback = authActions.authorizeAccessCodeWithBasicAuthentication\n  } else {\n    callback = authActions.authorizeAccessCodeWithFormParams\n  }\n\n  win.swaggerUIRedirectOauth2 = {\n    auth: auth,\n    state: state,\n    redirectUrl: redirectUrl,\n    callback: callback,\n    errCb: errActions.newAuthErr\n  }\n\n  win.open(url)\n}\n", "import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Clear extends Component {\n\n  onClick =() => {\n    let { specActions, path, method } = this.props\n    specActions.clearResponse( path, method )\n    specActions.clearRequest( path, method )\n  }\n\n  render(){\n    return (\n      <button className=\"btn btn-clear opblock-control__btn\" onClick={ this.onClick }>\n        Clear\n      </button>\n    )\n  }\n\n  static propTypes = {\n    specActions: PropTypes.object.isRequired,\n    path: PropTypes.string.isRequired,\n    method: PropTypes.string.isRequired,\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { Iterable } from \"immutable\"\n\nconst Headers = ( { headers } )=>{\n  return (\n    <div>\n      <h5>Response headers</h5>\n      <pre className=\"microlight\">{headers}</pre>\n    </div>)\n}\nHeaders.propTypes = {\n  headers: PropTypes.array.isRequired\n}\n\nconst Duration = ( { duration } ) => {\n  return (\n    <div>\n      <h5>Request duration</h5>\n      <pre className=\"microlight\">{duration} ms</pre>\n    </div>\n  )\n}\nDuration.propTypes = {\n  duration: PropTypes.number.isRequired\n}\n\n\nexport default class LiveResponse extends React.Component {\n  static propTypes = {\n    response: PropTypes.instanceOf(Iterable).isRequired,\n    path: PropTypes.string.isRequired,\n    method: PropTypes.string.isRequired,\n    displayRequestDuration: PropTypes.bool.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired\n  }\n\n  shouldComponentUpdate(nextProps) {\n    // BUG: props.response is always coming back as a new Immutable instance\n    // same issue as responses.jsx (tryItOutResponse)\n    return this.props.response !== nextProps.response\n      || this.props.path !== nextProps.path\n      || this.props.method !== nextProps.method\n      || this.props.displayRequestDuration !== nextProps.displayRequestDuration\n  }\n\n  render() {\n    const { response, getComponent, getConfigs, displayRequestDuration, specSelectors, path, method } = this.props\n    const { showMutatedRequest, requestSnippetsEnabled } = getConfigs()\n\n    const curlRequest = showMutatedRequest ? specSelectors.mutatedRequestFor(path, method) : specSelectors.requestFor(path, method)\n    const status = response.get(\"status\")\n    const url = curlRequest.get(\"url\")\n    const headers = response.get(\"headers\").toJS()\n    const notDocumented = response.get(\"notDocumented\")\n    const isError = response.get(\"error\")\n    const body = response.get(\"text\")\n    const duration = response.get(\"duration\")\n    const headersKeys = Object.keys(headers)\n    const contentType = headers[\"content-type\"] || headers[\"Content-Type\"]\n\n    const ResponseBody = getComponent(\"responseBody\")\n    const returnObject = headersKeys.map(key => {\n      var joinedHeaders = Array.isArray(headers[key]) ? headers[key].join() : headers[key]\n      return <span className=\"headerline\" key={key}> {key}: {joinedHeaders} </span>\n    })\n    const hasHeaders = returnObject.length !== 0\n    const Markdown = getComponent(\"Markdown\", true)\n    const RequestSnippets = getComponent(\"RequestSnippets\", true)\n    const Curl = getComponent(\"curl\")\n\n    return (\n      <div>\n        { curlRequest && (requestSnippetsEnabled === true || requestSnippetsEnabled === \"true\"\n          ? <RequestSnippets request={ curlRequest }/>\n          : <Curl request={ curlRequest } getConfigs={ getConfigs } />) }\n        { url && <div>\n            <h4>Request URL</h4>\n            <div className=\"request-url\">\n              <pre className=\"microlight\">{url}</pre>\n            </div>\n          </div>\n        }\n        <h4>Server response</h4>\n        <table className=\"responses-table live-responses-table\">\n          <thead>\n          <tr className=\"responses-header\">\n            <td className=\"col_header response-col_status\">Code</td>\n            <td className=\"col_header response-col_description\">Details</td>\n          </tr>\n          </thead>\n          <tbody>\n            <tr className=\"response\">\n              <td className=\"response-col_status\">\n                { status }\n                {\n                  notDocumented ? <div className=\"response-undocumented\">\n                                    <i> Undocumented </i>\n                                  </div>\n                                : null\n                }\n              </td>\n              <td className=\"response-col_description\">\n                {\n                  isError ? <Markdown source={`${response.get(\"name\") !== \"\" ? `${response.get(\"name\")}: ` : \"\"}${response.get(\"message\")}`}/>\n                          : null\n                }\n                {\n                  body ? <ResponseBody content={ body }\n                                       contentType={ contentType }\n                                       url={ url }\n                                       headers={ headers }\n                                       getConfigs={ getConfigs }\n                                       getComponent={ getComponent }/>\n                       : null\n                }\n                {\n                  hasHeaders ? <Headers headers={ returnObject }/> : null\n                }\n                {\n                  displayRequestDuration && duration ? <Duration duration={ duration } /> : null\n                }\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    )\n  }\n\n  static propTypes = {\n    getComponent: PropTypes.func.isRequired,\n    response: ImPropTypes.map\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Im from \"immutable\"\n\nconst SWAGGER2_OPERATION_METHODS = [\n  \"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\"\n]\n\nconst OAS3_OPERATION_METHODS = SWAGGER2_OPERATION_METHODS.concat([\"trace\"])\n\n\nexport default class Operations extends React.Component {\n\n  static propTypes = {\n    specSelectors: PropTypes.object.isRequired,\n    specActions: PropTypes.object.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    oas3Selectors: PropTypes.func.isRequired,\n    layoutSelectors: PropTypes.object.isRequired,\n    layoutActions: PropTypes.object.isRequired,\n    authActions: PropTypes.object.isRequired,\n    authSelectors: PropTypes.object.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    fn: PropTypes.func.isRequired\n  };\n\n  render() {\n    let {\n      specSelectors,\n    } = this.props\n\n    const taggedOps = specSelectors.taggedOperations()\n\n    if(taggedOps.size === 0) {\n      return <h3> No operations defined in spec!</h3>\n    }\n\n    return (\n      <div>\n        { taggedOps.map(this.renderOperationTag).toArray() }\n        { taggedOps.size < 1 ? <h3> No operations defined in spec! </h3> : null }\n      </div>\n    )\n  }\n\n  renderOperationTag = (tagObj, tag) => {\n    const {\n      specSelectors,\n      getComponent,\n      oas3Selectors,\n      layoutSelectors,\n      layoutActions,\n      getConfigs,\n    } = this.props\n    const OperationContainer = getComponent(\"OperationContainer\", true)\n    const OperationTag = getComponent(\"OperationTag\")\n    const operations = tagObj.get(\"operations\")\n    return (\n      <OperationTag\n        key={\"operation-\" + tag}\n        tagObj={tagObj}\n        tag={tag}\n        oas3Selectors={oas3Selectors}\n        layoutSelectors={layoutSelectors}\n        layoutActions={layoutActions}\n        getConfigs={getConfigs}\n        getComponent={getComponent}\n        specUrl={specSelectors.url()}>\n        <div className=\"operation-tag-content\">\n          {\n            operations.map(op => {\n              const path = op.get(\"path\")\n              const method = op.get(\"method\")\n              const specPath = Im.List([\"paths\", path, method])\n\n\n              // FIXME: (someday) this logic should probably be in a selector,\n              // but doing so would require further opening up\n              // selectors to the plugin system, to allow for dynamic\n              // overriding of low-level selectors that other selectors\n              // rely on. --KS, 12/17\n              const validMethods = specSelectors.isOAS3() ?\n                OAS3_OPERATION_METHODS : SWAGGER2_OPERATION_METHODS\n\n              if (validMethods.indexOf(method) === -1) {\n                return null\n              }\n\n              return (\n                <OperationContainer\n                  key={`${path}-${method}`}\n                  specPath={specPath}\n                  op={op}\n                  path={path}\n                  method={method}\n                  tag={tag} />\n              )\n            }).toArray()\n          }\n        </div>\n      </OperationTag>\n    )\n  }\n\n}\n\nOperations.propTypes = {\n  layoutActions: PropTypes.object.isRequired,\n  specSelectors: PropTypes.object.isRequired,\n  specActions: PropTypes.object.isRequired,\n  layoutSelectors: PropTypes.object.isRequired,\n  getComponent: PropTypes.func.isRequired,\n  fn: PropTypes.object.isRequired\n}\n", "export function isAbsoluteUrl(url) {\n  return url.match(/^(?:[a-z]+:)?\\/\\//i) // Matches http://, HTTP://, https://, ftp://, //example.com,\n}\n\nexport function addProtocol(url) {\n  if (!url.match(/^\\/\\//i)) return url // Checks if protocol is missing e.g. //example.com\n\n  return `${window.location.protocol}${url}`\n}\n\nexport function buildBaseUrl(selectedServer, specUrl) {\n  if (!selectedServer) return specUrl\n  if (isAbsoluteUrl(selectedServer)) return addProtocol(selectedServer)\n\n  return new URL(selectedServer, specUrl).href\n}\n\nexport function buildUrl(url, specUrl, { selectedServer=\"\" } = {}) {\n  if (!url) return undefined\n  if (isAbsoluteUrl(url)) return url\n\n  const baseUrl = buildBaseUrl(selectedServer, specUrl)\n  if (!isAbsoluteUrl(baseUrl)) {\n    return new URL(url, window.location.href).href\n  }\n  return new URL(url, baseUrl).href\n}\n\n/**\n * Safe version of buildUrl function. `selectedServer` can contain server variables\n * which can fail the URL resolution.\n */\nexport function safeBuildUrl(url, specUrl, { selectedServer=\"\" } = {}) {\n  try {\n    return buildUrl(url, specUrl, { selectedServer })\n  } catch {\n    return undefined\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport Im from \"immutable\"\nimport { createDeepLinkPath, escapeDeepLinkPath, sanitizeUrl } from \"core/utils\"\nimport { safeBuildUrl } from \"core/utils/url\"\nimport { isFunc } from \"core/utils\"\n\nexport default class OperationTag extends React.Component {\n\n  static defaultProps = {\n    tagObj: Im.fromJS({}),\n    tag: \"\",\n  }\n\n  static propTypes = {\n    tagObj: ImPropTypes.map.isRequired,\n    tag: PropTypes.string.isRequired,\n\n    oas3Selectors: PropTypes.func.isRequired,\n    layoutSelectors: PropTypes.object.isRequired,\n    layoutActions: PropTypes.object.isRequired,\n\n    getConfigs: PropTypes.func.isRequired,\n    getComponent: PropTypes.func.isRequired,\n\n    specUrl: PropTypes.string.isRequired,\n\n    children: PropTypes.element,\n  }\n\n  render() {\n    const {\n      tagObj,\n      tag,\n      children,\n      oas3Selectors,\n      layoutSelectors,\n      layoutActions,\n      getConfigs,\n      getComponent,\n      specUrl,\n    } = this.props\n\n    let {\n      docExpansion,\n      deepLinking,\n    } = getConfigs()\n\n    const isDeepLinkingEnabled = deepLinking && deepLinking !== \"false\"\n\n    const Collapse = getComponent(\"Collapse\")\n    const Markdown = getComponent(\"Markdown\", true)\n    const DeepLink = getComponent(\"DeepLink\")\n    const Link = getComponent(\"Link\")\n\n    let tagDescription = tagObj.getIn([\"tagDetails\", \"description\"], null)\n    let tagExternalDocsDescription = tagObj.getIn([\"tagDetails\", \"externalDocs\", \"description\"])\n    let rawTagExternalDocsUrl = tagObj.getIn([\"tagDetails\", \"externalDocs\", \"url\"])\n    let tagExternalDocsUrl\n    if (isFunc(oas3Selectors) && isFunc(oas3Selectors.selectedServer)) {\n      tagExternalDocsUrl = safeBuildUrl( rawTagExternalDocsUrl, specUrl, { selectedServer: oas3Selectors.selectedServer() } )\n    } else {\n      tagExternalDocsUrl = rawTagExternalDocsUrl\n    }\n\n    let isShownKey = [\"operations-tag\", tag]\n    let showTag = layoutSelectors.isShown(isShownKey, docExpansion === \"full\" || docExpansion === \"list\")\n\n    return (\n      <div className={showTag ? \"opblock-tag-section is-open\" : \"opblock-tag-section\"} >\n\n        <h3\n          onClick={() => layoutActions.show(isShownKey, !showTag)}\n          className={!tagDescription ? \"opblock-tag no-desc\" : \"opblock-tag\" }\n          id={isShownKey.map(v => escapeDeepLinkPath(v)).join(\"-\")}\n          data-tag={tag}\n          data-is-open={showTag}\n          >\n          <DeepLink\n            enabled={isDeepLinkingEnabled}\n            isShown={showTag}\n            path={createDeepLinkPath(tag)}\n            text={tag} />\n          { !tagDescription ? <small></small> :\n            <small>\n                <Markdown source={tagDescription} />\n              </small>\n            }\n\n            <div>\n              { !tagExternalDocsDescription ? null :\n                <small>\n                    { tagExternalDocsDescription }\n                      { tagExternalDocsUrl ? \": \" : null }\n                      { tagExternalDocsUrl ?\n                        <Link\n                            href={sanitizeUrl(tagExternalDocsUrl)}\n                            onClick={(e) => e.stopPropagation()}\n                            target=\"_blank\"\n                            >{tagExternalDocsUrl}</Link> : null\n                          }\n                  </small>\n                }\n            </div>\n\n            <button\n              aria-expanded={showTag}\n              className=\"expand-operation\"\n              title={showTag ? \"Collapse operation\": \"Expand operation\"}\n              onClick={() => layoutActions.show(isShownKey, !showTag)}>\n\n              <svg className=\"arrow\" width=\"20\" height=\"20\" aria-hidden=\"true\" focusable=\"false\">\n                <use href={showTag ? \"#large-arrow-up\" : \"#large-arrow-down\"} xlinkHref={showTag ? \"#large-arrow-up\" : \"#large-arrow-down\"} />\n              </svg>\n            </button>\n        </h3>\n\n        <Collapse isOpened={showTag}>\n          {children}\n        </Collapse>\n      </div>\n    )\n  }\n}\n", "import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { getList } from \"core/utils\"\nimport { getExtensions, sanitizeUrl, escapeDeepLinkPath } from \"core/utils\"\nimport { safeBuildUrl } from \"core/utils/url\"\nimport { Iterable, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\n\nexport default class Operation extends PureComponent {\n  static propTypes = {\n    specPath: ImPropTypes.list.isRequired,\n    operation: PropTypes.instanceOf(Iterable).isRequired,\n    summary: PropTypes.string,\n    response: PropTypes.instanceOf(Iterable),\n    request: PropTypes.instanceOf(Iterable),\n\n    toggleShown: PropTypes.func.isRequired,\n    onTryoutClick: PropTypes.func.isRequired,\n    onCancelClick: PropTypes.func.isRequired,\n    onExecute: PropTypes.func.isRequired,\n\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    authActions: PropTypes.object,\n    authSelectors: PropTypes.object,\n    specActions: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    oas3Selectors: PropTypes.object.isRequired,\n    layoutActions: PropTypes.object.isRequired,\n    layoutSelectors: PropTypes.object.isRequired,\n    fn: PropTypes.object.isRequired\n  }\n\n  static defaultProps = {\n    operation: null,\n    response: null,\n    request: null,\n    specPath: List(),\n    summary: \"\"\n  }\n\n  render() {\n    let {\n      specPath,\n      response,\n      request,\n      toggleShown,\n      onTryoutClick,\n      onCancelClick,\n      onExecute,\n      fn,\n      getComponent,\n      getConfigs,\n      specActions,\n      specSelectors,\n      authActions,\n      authSelectors,\n      oas3Actions,\n      oas3Selectors\n    } = this.props\n    let operationProps = this.props.operation\n\n    let {\n      deprecated,\n      isShown,\n      path,\n      method,\n      op,\n      tag,\n      operationId,\n      allowTryItOut,\n      displayRequestDuration,\n      tryItOutEnabled,\n      executeInProgress\n    } = operationProps.toJS()\n\n    let {\n      description,\n      externalDocs,\n      schemes\n    } = op\n\n    const externalDocsUrl = externalDocs ? safeBuildUrl(externalDocs.url, specSelectors.url(), { selectedServer: oas3Selectors.selectedServer() }) : \"\"\n    let operation = operationProps.getIn([\"op\"])\n    let responses = operation.get(\"responses\")\n    let parameters = getList(operation, [\"parameters\"])\n    let operationScheme = specSelectors.operationScheme(path, method)\n    let isShownKey = [\"operations\", tag, operationId]\n    let extensions = getExtensions(operation)\n\n    const Responses = getComponent(\"responses\")\n    const Parameters = getComponent( \"parameters\" )\n    const Execute = getComponent( \"execute\" )\n    const Clear = getComponent( \"clear\" )\n    const Collapse = getComponent( \"Collapse\" )\n    const Markdown = getComponent(\"Markdown\", true)\n    const Schemes = getComponent( \"schemes\" )\n    const OperationServers = getComponent( \"OperationServers\" )\n    const OperationExt = getComponent( \"OperationExt\" )\n    const OperationSummary = getComponent( \"OperationSummary\" )\n    const Link = getComponent( \"Link\" )\n\n    const { showExtensions } = getConfigs()\n\n    // Merge in Live Response\n    if(responses && response && response.size > 0) {\n      let notDocumented = !responses.get(String(response.get(\"status\"))) && !responses.get(\"default\")\n      response = response.set(\"notDocumented\", notDocumented)\n    }\n\n    let onChangeKey = [ path, method ] // Used to add values to _this_ operation ( indexed by path and method )\n\n    return (\n        <div className={deprecated ? \"opblock opblock-deprecated\" : isShown ? `opblock opblock-${method} is-open` : `opblock opblock-${method}`} id={escapeDeepLinkPath(isShownKey.join(\"-\"))} >\n          <OperationSummary operationProps={operationProps} isShown={isShown} toggleShown={toggleShown} getComponent={getComponent} authActions={authActions} authSelectors={authSelectors} specPath={specPath} />\n          <Collapse isOpened={isShown}>\n            <div className=\"opblock-body\">\n              { (operation && operation.size) || operation === null ? null :\n                <img height={\"32px\"} width={\"32px\"} src={require(\"core/../img/rolling-load.svg\")} className=\"opblock-loading-animation\" />\n              }\n              { deprecated && <h4 className=\"opblock-title_normal\"> Warning: Deprecated</h4>}\n              { description &&\n                <div className=\"opblock-description-wrapper\">\n                  <div className=\"opblock-description\">\n                    <Markdown source={ description } />\n                  </div>\n                </div>\n              }\n              {\n                externalDocsUrl ?\n                <div className=\"opblock-external-docs-wrapper\">\n                  <h4 className=\"opblock-title_normal\">Find more details</h4>\n                  <div className=\"opblock-external-docs\">\n                    <span className=\"opblock-external-docs__description\">\n                      <Markdown source={ externalDocs.description } />\n                    </span>\n                    <Link target=\"_blank\" className=\"opblock-external-docs__link\" href={sanitizeUrl(externalDocsUrl)}>{externalDocsUrl}</Link>\n                  </div>\n                </div> : null\n              }\n\n              { !operation || !operation.size ? null :\n                <Parameters\n                  parameters={parameters}\n                  specPath={specPath.push(\"parameters\")}\n                  operation={operation}\n                  onChangeKey={onChangeKey}\n                  onTryoutClick = { onTryoutClick }\n                  onCancelClick = { onCancelClick }\n                  tryItOutEnabled = { tryItOutEnabled }\n                  allowTryItOut={allowTryItOut}\n\n                  fn={fn}\n                  getComponent={ getComponent }\n                  specActions={ specActions }\n                  specSelectors={ specSelectors }\n                  pathMethod={ [path, method] }\n                  getConfigs={ getConfigs }\n                  oas3Actions={ oas3Actions }\n                  oas3Selectors={ oas3Selectors }\n                />\n              }\n\n              { !tryItOutEnabled ? null :\n                <OperationServers\n                  getComponent={getComponent}\n                  path={path}\n                  method={method}\n                  operationServers={operation.get(\"servers\")}\n                  pathServers={specSelectors.paths().getIn([path, \"servers\"])}\n                  getSelectedServer={oas3Selectors.selectedServer}\n                  setSelectedServer={oas3Actions.setSelectedServer}\n                  setServerVariableValue={oas3Actions.setServerVariableValue}\n                  getServerVariable={oas3Selectors.serverVariableValue}\n                  getEffectiveServerValue={oas3Selectors.serverEffectiveValue}\n                />\n              }\n\n              {!tryItOutEnabled || !allowTryItOut ? null : schemes && schemes.size ? <div className=\"opblock-schemes\">\n                    <Schemes schemes={ schemes }\n                             path={ path }\n                             method={ method }\n                             specActions={ specActions }\n                             currentScheme={ operationScheme } />\n                  </div> : null\n              }\n\n            <div className={(!tryItOutEnabled || !response || !allowTryItOut) ? \"execute-wrapper\" : \"btn-group\"}>\n              { !tryItOutEnabled || !allowTryItOut ? null :\n\n                  <Execute\n                    operation={ operation }\n                    specActions={ specActions }\n                    specSelectors={ specSelectors }\n                    oas3Selectors={ oas3Selectors }\n                    oas3Actions={ oas3Actions }\n                    path={ path }\n                    method={ method }\n                    onExecute={ onExecute }\n                    disabled={executeInProgress}/>\n              }\n\n              { (!tryItOutEnabled || !response || !allowTryItOut) ? null :\n                  <Clear\n                    specActions={ specActions }\n                    path={ path }\n                    method={ method }/>\n              }\n            </div>\n\n            {executeInProgress ? <div className=\"loading-container\"><div className=\"loading\"></div></div> : null}\n\n              { !responses ? null :\n                  <Responses\n                    responses={ responses }\n                    request={ request }\n                    tryItOutResponse={ response }\n                    getComponent={ getComponent }\n                    getConfigs={ getConfigs }\n                    specSelectors={ specSelectors }\n                    oas3Actions={oas3Actions}\n                    oas3Selectors={oas3Selectors}\n                    specActions={ specActions }\n                    produces={specSelectors.producesOptionsFor([path, method]) }\n                    producesValue={ specSelectors.currentProducesFor([path, method]) }\n                    specPath={specPath.push(\"responses\")}\n                    path={ path }\n                    method={ method }\n                    displayRequestDuration={ displayRequestDuration }\n                    fn={fn} />\n              }\n\n              { !showExtensions || !extensions.size ? null :\n                <OperationExt extensions={ extensions } getComponent={ getComponent } />\n              }\n            </div>\n          </Collapse>\n        </div>\n    )\n  }\n\n}\n", "import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport toString from \"lodash/toString\"\n\n\nexport default class OperationSummary extends PureComponent {\n\n  static propTypes = {\n    specPath: ImPropTypes.list.isRequired,\n    operationProps: PropTypes.instanceOf(Iterable).isRequired,\n    isShown: PropTypes.bool.isRequired,\n    toggleShown: PropTypes.func.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    authActions: PropTypes.object,\n    authSelectors: PropTypes.object,\n  }\n\n  static defaultProps = {\n    operationProps: null,\n    specPath: List(),\n    summary: \"\"\n  }\n\n  render() {\n\n    let {\n      isShown,\n      toggleShown,\n      getComponent,\n      authActions,\n      authSelectors,\n      operationProps,\n      specPath,\n    } = this.props\n\n    let {\n      summary,\n      isAuthorized,\n      method,\n      op,\n      showSummary,\n      path,\n      operationId,\n      originalOperationId,\n      displayOperationId,\n    } = operationProps.toJS()\n\n    let {\n      summary: resolvedSummary,\n    } = op\n\n    let security = operationProps.get(\"security\")\n\n    const AuthorizeOperationBtn = getComponent(\"authorizeOperationBtn\")\n    const OperationSummaryMethod = getComponent(\"OperationSummaryMethod\")\n    const OperationSummaryPath = getComponent(\"OperationSummaryPath\")\n    const JumpToPath = getComponent(\"JumpToPath\", true)\n\n    const hasSecurity = security && !!security.count()\n    const securityIsOptional = hasSecurity && security.size === 1 && security.first().isEmpty()\n    const allowAnonymous = !hasSecurity || securityIsOptional\n    return (\n      <div className={`opblock-summary opblock-summary-${method}`} >\n        <button\n          aria-label={`${method} ${path.replace(/\\//g, \"\\u200b/\")}`}\n          aria-expanded={isShown}\n          className=\"opblock-summary-control\"\n          onClick={toggleShown}\n        >\n          <OperationSummaryMethod method={method} />\n          <OperationSummaryPath getComponent={getComponent} operationProps={operationProps} specPath={specPath} />\n\n          {!showSummary ? null :\n            <div className=\"opblock-summary-description\">\n              {toString(resolvedSummary || summary)}\n            </div>\n          }\n\n          {displayOperationId && (originalOperationId || operationId) ? <span className=\"opblock-summary-operation-id\">{originalOperationId || operationId}</span> : null}\n\n          <svg className=\"arrow\" width=\"20\" height=\"20\" aria-hidden=\"true\" focusable=\"false\">\n            <use href={isShown ? \"#large-arrow-up\" : \"#large-arrow-down\"} xlinkHref={isShown ? \"#large-arrow-up\" : \"#large-arrow-down\"} />\n          </svg>\n        </button>\n\n        {\n          allowAnonymous ? null :\n            <AuthorizeOperationBtn\n              isAuthorized={isAuthorized}\n              onClick={() => {\n                const applicableDefinitions = authSelectors.definitionsForRequirements(security)\n                authActions.showDefinitions(applicableDefinitions)\n              }}\n            />\n        }\n        <JumpToPath path={specPath} />{/* TODO: use wrapComponents here, swagger-ui doesn't care about jumpToPath */}\n      </div>\n    )\n\n  }\n}\n", "import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable } from \"immutable\"\n\nexport default class OperationSummaryMethod extends PureComponent {\n\n  static propTypes = {\n    operationProps: PropTypes.instanceOf(Iterable).isRequired,\n    method: PropTypes.string.isRequired,\n  }\n\n  static defaultProps = {\n    operationProps: null,\n  }\n  render() {\n\n    let {\n      method,\n    } = this.props\n\n    return (\n      <span className=\"opblock-summary-method\">{method.toUpperCase()}</span>\n    )\n  }\n}\n", "import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable } from \"immutable\"\nimport { createDeepLinkPath } from \"core/utils\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class OperationSummaryPath extends PureComponent{\n\n  static propTypes = {\n    specPath: ImPropTypes.list.isRequired,\n    operationProps: PropTypes.instanceOf(Iterable).isRequired,\n    getComponent: PropTypes.func.isRequired,\n  }\n\n  render(){\n    let {\n      getComponent,\n      operationProps,\n    } = this.props\n\n\n    let {\n      deprecated,\n      isShown,\n      path,\n      tag,\n      operationId,\n      isDeepLinkingEnabled,\n    } = operationProps.toJS()\n\n    /**\n     * Add <wbr> word-break elements between each segment, before the slash\n     * to allow browsers an opportunity to break long paths into sensible segments.\n     */\n    const pathParts = path.split(/(?=\\/)/g)\n    for (let i = 1; i < pathParts.length; i += 2) {\n      pathParts.splice(i, 0, <wbr key={i} />)\n    }\n\n    const DeepLink = getComponent( \"DeepLink\" )\n\n    return(\n      <span className={ deprecated ? \"opblock-summary-path__deprecated\" : \"opblock-summary-path\" }\n        data-path={path}>\n        <DeepLink\n            enabled={isDeepLinkingEnabled}\n            isShown={isShown}\n            path={createDeepLinkPath(`${tag}/${operationId}`)}\n            text={pathParts} />\n      </span>\n\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const OperationExt = ({ extensions, getComponent }) => {\n    let OperationExtRow = getComponent(\"OperationExtRow\")\n    return (\n      <div className=\"opblock-section\">\n        <div className=\"opblock-section-header\">\n          <h4>Extensions</h4>\n        </div>\n        <div className=\"table-container\">\n\n          <table>\n            <thead>\n              <tr>\n                <td className=\"col_header\">Field</td>\n                <td className=\"col_header\">Value</td>\n              </tr>\n            </thead>\n            <tbody>\n                {\n                    extensions.entrySeq().map(([k, v]) => <OperationExtRow key={`${k}-${v}`} xKey={k} xVal={v} />)\n                }\n            </tbody>\n          </table>\n        </div>\n      </div>\n    )\n}\nOperationExt.propTypes = {\n  extensions: PropTypes.object.isRequired,\n  getComponent: PropTypes.func.isRequired\n}\n\nexport default OperationExt\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const OperationExtRow = ({ xKey, xVal }) => {\n  const xNormalizedValue = !xVal ? null : xVal.toJS ? xVal.toJS() : xVal\n\n    return (<tr>\n        <td>{ xKey }</td>\n        <td>{ JSON.stringify(xNormalizedValue) }</td>\n    </tr>)\n}\nOperationExtRow.propTypes = {\n  xKey: PropTypes.string,\n  xVal: PropTypes.any\n}\n\nexport default OperationExtRow\n", "import React, { useRef, useEffect } from \"react\"\nimport PropTypes from \"prop-types\"\nimport cx from \"classnames\"\nimport {SyntaxHighlighter, getStyle} from \"core/syntax-highlighting\"\nimport get from \"lodash/get\"\nimport isFunction from \"lodash/isFunction\"\nimport saveAs from \"js-file-download\"\nimport { CopyToClipboard } from \"react-copy-to-clipboard\"\n\nconst HighlightCode = ({value, fileName, className, downloadable, getConfigs, canCopy, language}) => {\n  const config = isFunction(getConfigs) ? getConfigs() : null\n  const canSyntaxHighlight = get(config, \"syntaxHighlight\") !== false && get(config, \"syntaxHighlight.activated\", true)\n  const rootRef = useRef(null)\n\n  useEffect(() => {\n    const childNodes = Array\n      .from(rootRef.current.childNodes)\n      .filter(node => !!node.nodeType && node.classList.contains(\"microlight\"))\n\n    // eslint-disable-next-line no-use-before-define\n    childNodes.forEach(node => node.addEventListener(\"mousewheel\", handlePreventYScrollingBeyondElement, { passive: false }))\n\n    return () => {\n      // eslint-disable-next-line no-use-before-define\n      childNodes.forEach(node => node.removeEventListener(\"mousewheel\", handlePreventYScrollingBeyondElement))\n    }\n  }, [value, className, language])\n\n  const handleDownload = () => {\n    saveAs(value, fileName)\n  }\n\n  const handlePreventYScrollingBeyondElement = (e) => {\n    const { target, deltaY } = e\n    const { scrollHeight: contentHeight, offsetHeight: visibleHeight, scrollTop } = target\n    const scrollOffset = visibleHeight + scrollTop\n    const isElementScrollable = contentHeight > visibleHeight\n    const isScrollingPastTop = scrollTop === 0 && deltaY < 0\n    const isScrollingPastBottom = scrollOffset >= contentHeight && deltaY > 0\n\n    if (isElementScrollable && (isScrollingPastTop || isScrollingPastBottom)) {\n      e.preventDefault()\n    }\n  }\n\n  return (\n    <div className=\"highlight-code\" ref={rootRef}>\n      {!downloadable ? null :\n        <div className=\"download-contents\" onClick={handleDownload}>\n          Download\n        </div>\n      }\n\n      {canCopy && (\n        <div className=\"copy-to-clipboard\">\n          <CopyToClipboard text={value}><button/></CopyToClipboard>\n        </div>\n      )}\n\n      {canSyntaxHighlight\n        ? <SyntaxHighlighter\n          language={language}\n          className={cx(className, \"microlight\")}\n          style={getStyle(get(config, \"syntaxHighlight.theme\", \"agate\"))}\n        >\n          {value}\n        </SyntaxHighlighter>\n        : <pre className={cx(className, \"microlight\")}>{value}</pre>\n      }\n\n    </div>\n  )\n}\n\nHighlightCode.propTypes = {\n  value: PropTypes.string.isRequired,\n  getConfigs: PropTypes.func.isRequired,\n  className: PropTypes.string,\n  downloadable: PropTypes.bool,\n  fileName: PropTypes.string,\n  language: PropTypes.string,\n  canCopy: PropTypes.bool\n}\n\nHighlightCode.defaultProps = {\n  fileName: \"response.txt\"\n}\n\nexport default HighlightCode\n", "import React from \"react\"\nimport { fromJS, Iterable } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { defaultStatusCode, getAcceptControllingResponse } from \"core/utils\"\nimport createHtmlReadyId from \"../../helpers/create-html-ready-id\"\n\nexport default class Responses extends React.Component {\n  static propTypes = {\n    tryItOutResponse: PropTypes.instanceOf(Iterable),\n    responses: PropTypes.instanceOf(Iterable).isRequired,\n    produces: PropTypes.instanceOf(Iterable),\n    producesValue: PropTypes.any,\n    displayRequestDuration: PropTypes.bool.isRequired,\n    path: PropTypes.string.isRequired,\n    method: PropTypes.string.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    specActions: PropTypes.object.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    oas3Selectors: PropTypes.object.isRequired,\n    specPath: ImPropTypes.list.isRequired,\n    fn: PropTypes.object.isRequired\n  }\n\n  static defaultProps = {\n    tryItOutResponse: null,\n    produces: fromJS([\"application/json\"]),\n    displayRequestDuration: false\n  }\n\n  // These performance-enhancing checks were disabled as part of Multiple Examples\n  // because they were causing data-consistency issues\n  //\n  // shouldComponentUpdate(nextProps) {\n  //   // BUG: props.tryItOutResponse is always coming back as a new Immutable instance\n  //   let render = this.props.tryItOutResponse !== nextProps.tryItOutResponse\n  //   || this.props.responses !== nextProps.responses\n  //   || this.props.produces !== nextProps.produces\n  //   || this.props.producesValue !== nextProps.producesValue\n  //   || this.props.displayRequestDuration !== nextProps.displayRequestDuration\n  //   || this.props.path !== nextProps.path\n  //   || this.props.method !== nextProps.method\n  //   return render\n  // }\n\n\tonChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)\n\n  onResponseContentTypeChange = ({ controlsAcceptHeader, value }) => {\n    const { oas3Actions, path, method } = this.props\n    if(controlsAcceptHeader) {\n      oas3Actions.setResponseContentType({\n        value,\n        path,\n        method\n      })\n    }\n  }\n\n  render() {\n    let {\n      responses,\n      tryItOutResponse,\n      getComponent,\n      getConfigs,\n      specSelectors,\n      fn,\n      producesValue,\n      displayRequestDuration,\n      specPath,\n      path,\n      method,\n      oas3Selectors,\n      oas3Actions,\n    } = this.props\n    let defaultCode = defaultStatusCode( responses )\n\n    const ContentType = getComponent( \"contentType\" )\n    const LiveResponse = getComponent( \"liveResponse\" )\n    const Response = getComponent( \"response\" )\n\n    let produces = this.props.produces && this.props.produces.size ? this.props.produces : Responses.defaultProps.produces\n\n    const isSpecOAS3 = specSelectors.isOAS3()\n\n    const acceptControllingResponse = isSpecOAS3 ?\n      getAcceptControllingResponse(responses) : null\n\n    const regionId = createHtmlReadyId(`${method}${path}_responses`)\n    const controlId = `${regionId}_select`\n\n    return (\n      <div className=\"responses-wrapper\">\n        <div className=\"opblock-section-header\">\n          <h4>Responses</h4>\n            { specSelectors.isOAS3() ? null : <label htmlFor={controlId}>\n              <span>Response content type</span>\n              <ContentType value={producesValue}\n                         ariaControls={regionId}\n                         ariaLabel=\"Response content type\"\n                         className=\"execute-content-type\"\n                         contentTypes={produces}\n                         controlId={controlId}\n                         onChange={this.onChangeProducesWrapper} />\n                     </label> }\n        </div>\n        <div className=\"responses-inner\">\n          {\n            !tryItOutResponse ? null\n                              : <div>\n                                  <LiveResponse response={ tryItOutResponse }\n                                                getComponent={ getComponent }\n                                                getConfigs={ getConfigs }\n                                                specSelectors={ specSelectors }\n                                                path={ this.props.path }\n                                                method={ this.props.method }\n                                                displayRequestDuration={ displayRequestDuration } />\n                                  <h4>Responses</h4>\n                                </div>\n\n          }\n\n          <table aria-live=\"polite\" className=\"responses-table\" id={regionId} role=\"region\">\n            <thead>\n              <tr className=\"responses-header\">\n                <td className=\"col_header response-col_status\">Code</td>\n                <td className=\"col_header response-col_description\">Description</td>\n                { specSelectors.isOAS3() ? <td className=\"col col_header response-col_links\">Links</td> : null }\n              </tr>\n            </thead>\n            <tbody>\n              {\n                responses.entrySeq().map( ([code, response]) => {\n\n                  let className = tryItOutResponse && tryItOutResponse.get(\"status\") == code ? \"response_current\" : \"\"\n                  return (\n                    <Response key={ code }\n                              path={path}\n                              method={method}\n                              specPath={specPath.push(code)}\n                              isDefault={defaultCode === code}\n                              fn={fn}\n                              className={ className }\n                              code={ code }\n                              response={ response }\n                              specSelectors={ specSelectors }\n                              controlsAcceptHeader={response === acceptControllingResponse}\n                              onContentTypeChange={this.onResponseContentTypeChange}\n                              contentType={ producesValue }\n                              getConfigs={ getConfigs }\n                              activeExamplesKey={oas3Selectors.activeExamplesMember(\n                                path,\n                                method,\n                                \"responses\",\n                                code\n                              )}\n                              oas3Actions={oas3Actions}\n                              getComponent={ getComponent }/>\n                    )\n                }).toArray()\n              }\n            </tbody>\n          </table>\n        </div>\n      </div>\n    )\n  }\n}\n", "/**\n * Replace invalid characters from a string to create an html-ready ID\n *\n * @param {string} id A string that may contain invalid characters for the HTML ID attribute\n * @param {string} [replacement=_] The string to replace invalid characters with; \"_\" by default\n * @return {string} Information about the parameter schema\n */\nexport default function createHtmlReadyId(id, replacement = \"_\") {\n  return id.replace(/[^\\w-]/g, replacement)\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport cx from \"classnames\"\nimport { fromJS, Seq, Iterable, List, Map } from \"immutable\"\nimport { getExtensions, getSampleSchema, fromJSOrdered, stringify } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\n\n\nconst getExampleComponent = ( sampleResponse, HighlightCode, getConfigs ) => {\n  if (\n    sampleResponse !== undefined &&\n    sampleResponse !== null\n  ) {\n    let language = null\n    let testValueForJson = getKnownSyntaxHighlighterLanguage(sampleResponse)\n    if (testValueForJson) {\n      language = \"json\"\n    }\n    return <div>\n      <HighlightCode className=\"example\" getConfigs={ getConfigs } language={ language } value={ stringify(sampleResponse) } />\n    </div>\n  }\n  return null\n}\n\nexport default class Response extends React.Component {\n  constructor(props, context) {\n    super(props, context)\n\n    this.state = {\n      responseContentType: \"\",\n    }\n  }\n\n  static propTypes = {\n    path: PropTypes.string.isRequired,\n    method: PropTypes.string.isRequired,\n    code: PropTypes.string.isRequired,\n    response: PropTypes.instanceOf(Iterable),\n    className: PropTypes.string,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    specPath: ImPropTypes.list.isRequired,\n    fn: PropTypes.object.isRequired,\n    contentType: PropTypes.string,\n    activeExamplesKey: PropTypes.string,\n    controlsAcceptHeader: PropTypes.bool,\n    onContentTypeChange: PropTypes.func\n  }\n\n  static defaultProps = {\n    response: fromJS({}),\n    onContentTypeChange: () => {}\n  };\n\n  _onContentTypeChange = (value) => {\n    const { onContentTypeChange, controlsAcceptHeader } = this.props\n    this.setState({ responseContentType: value })\n    onContentTypeChange({\n      value: value,\n      controlsAcceptHeader\n    })\n  }\n\n  getTargetExamplesKey = () => {\n    const { response, contentType, activeExamplesKey } = this.props\n\n    const activeContentType = this.state.responseContentType || contentType\n    const activeMediaType = response.getIn([\"content\", activeContentType], Map({}))\n    const examplesForMediaType = activeMediaType.get(\"examples\", null)\n\n    const firstExamplesKey = examplesForMediaType.keySeq().first()\n    return activeExamplesKey || firstExamplesKey\n  }\n\n  render() {\n    let {\n      path,\n      method,\n      code,\n      response,\n      className,\n      specPath,\n      fn,\n      getComponent,\n      getConfigs,\n      specSelectors,\n      contentType,\n      controlsAcceptHeader,\n      oas3Actions,\n    } = this.props\n\n    let { inferSchema } = fn\n    let isOAS3 = specSelectors.isOAS3()\n    const { showExtensions } = getConfigs()\n\n    let extensions = showExtensions ? getExtensions(response) : null\n    let headers = response.get(\"headers\")\n    let links = response.get(\"links\")\n    const ResponseExtension = getComponent(\"ResponseExtension\")\n    const Headers = getComponent(\"headers\")\n    const HighlightCode = getComponent(\"highlightCode\")\n    const ModelExample = getComponent(\"modelExample\")\n    const Markdown = getComponent(\"Markdown\", true)\n    const OperationLink = getComponent(\"operationLink\")\n    const ContentType = getComponent(\"contentType\")\n    const ExamplesSelect = getComponent(\"ExamplesSelect\")\n    const Example = getComponent(\"Example\")\n\n\n    var schema, specPathWithPossibleSchema\n\n    const activeContentType = this.state.responseContentType || contentType\n    const activeMediaType = response.getIn([\"content\", activeContentType], Map({}))\n    const examplesForMediaType = activeMediaType.get(\"examples\", null)\n\n    // Goal: find a schema value for `schema`\n    if(isOAS3) {\n      const oas3SchemaForContentType = activeMediaType.get(\"schema\")\n\n      schema = oas3SchemaForContentType ? inferSchema(oas3SchemaForContentType.toJS()) : null\n      specPathWithPossibleSchema = oas3SchemaForContentType ? List([\"content\", this.state.responseContentType, \"schema\"]) : specPath\n    } else {\n      schema = response.get(\"schema\")\n      specPathWithPossibleSchema = response.has(\"schema\") ? specPath.push(\"schema\") : specPath\n    }\n\n    let mediaTypeExample\n    let shouldOverrideSchemaExample = false\n    let sampleSchema\n    let sampleGenConfig = {\n      includeReadOnly: true\n    }\n\n    // Goal: find an example value for `sampleResponse`\n    if(isOAS3) {\n      sampleSchema = activeMediaType.get(\"schema\")?.toJS()\n      if(examplesForMediaType) {\n        const targetExamplesKey = this.getTargetExamplesKey()\n        const targetExample = examplesForMediaType\n          .get(targetExamplesKey, Map({}))\n        const getMediaTypeExample = (targetExample) =>\n          targetExample.get(\"value\")\n        mediaTypeExample = getMediaTypeExample(targetExample)\n        if(mediaTypeExample === undefined) {\n          mediaTypeExample = getMediaTypeExample(examplesForMediaType.values().next().value)\n        }\n        shouldOverrideSchemaExample = true\n      } else if(activeMediaType.get(\"example\") !== undefined) {\n        // use the example key's value\n        mediaTypeExample = activeMediaType.get(\"example\")\n        shouldOverrideSchemaExample = true\n      }\n    } else {\n      sampleSchema = schema\n      sampleGenConfig = {...sampleGenConfig, includeWriteOnly: true}\n      const oldOASMediaTypeExample = response.getIn([\"examples\", activeContentType])\n      if(oldOASMediaTypeExample) {\n        mediaTypeExample = oldOASMediaTypeExample\n        shouldOverrideSchemaExample = true\n      }\n    }\n\n    const sampleResponse = getSampleSchema(\n      sampleSchema,\n      activeContentType,\n      sampleGenConfig,\n      shouldOverrideSchemaExample ? mediaTypeExample : undefined\n    )\n\n    let example = getExampleComponent( sampleResponse, HighlightCode, getConfigs )\n\n    return (\n      <tr className={ \"response \" + ( className || \"\") } data-code={code}>\n        <td className=\"response-col_status\">\n          { code }\n        </td>\n        <td className=\"response-col_description\">\n\n          <div className=\"response-col_description__inner\">\n            <Markdown source={ response.get( \"description\" ) } />\n          </div>\n\n          { !showExtensions || !extensions.size ? null : extensions.entrySeq().map(([key, v]) => <ResponseExtension key={`${key}-${v}`} xKey={key} xVal={v} /> )}\n\n          {isOAS3 && response.get(\"content\") ? (\n            <section className=\"response-controls\">\n              <div\n                className={cx(\"response-control-media-type\", {\n                  \"response-control-media-type--accept-controller\": controlsAcceptHeader\n                })}\n              >\n                <small className=\"response-control-media-type__title\">\n                  Media type\n                </small>\n                <ContentType\n                  value={this.state.responseContentType}\n                  contentTypes={\n                    response.get(\"content\")\n                      ? response.get(\"content\").keySeq()\n                      : Seq()\n                  }\n                  onChange={this._onContentTypeChange}\n                  ariaLabel=\"Media Type\"\n                />\n                {controlsAcceptHeader ? (\n                  <small className=\"response-control-media-type__accept-message\">\n                    Controls <code>Accept</code> header.\n                  </small>\n                ) : null}\n              </div>\n              {examplesForMediaType ? (\n                <div className=\"response-control-examples\">\n                  <small className=\"response-control-examples__title\">\n                    Examples\n                  </small>\n                  <ExamplesSelect\n                    examples={examplesForMediaType}\n                    currentExampleKey={this.getTargetExamplesKey()}\n                    onSelect={key =>\n                      oas3Actions.setActiveExamplesMember({\n                        name: key,\n                        pathMethod: [path, method],\n                        contextType: \"responses\",\n                        contextName: code\n                      })\n                    }\n                    showLabels={false}\n                  />\n                </div>\n              ) : null}\n            </section>\n          ) : null}\n\n          { example || schema ? (\n            <ModelExample\n              specPath={specPathWithPossibleSchema}\n              getComponent={ getComponent }\n              getConfigs={ getConfigs }\n              specSelectors={ specSelectors }\n              schema={ fromJSOrdered(schema) }\n              example={ example }\n              includeReadOnly={ true }/>\n          ) : null }\n\n          { isOAS3 && examplesForMediaType ? (\n              <Example\n                example={examplesForMediaType.get(this.getTargetExamplesKey(), Map({}))}\n                getComponent={getComponent}\n                getConfigs={getConfigs}\n                omitValue={true}\n              />\n          ) : null}\n\n          { headers ? (\n            <Headers\n              headers={ headers }\n              getComponent={ getComponent }\n            />\n          ) : null}\n\n        </td>\n        {isOAS3 ? <td className=\"response-col_links\">\n          { links ?\n            links.toSeq().entrySeq().map(([key, link]) => {\n              return <OperationLink key={key} name={key} link={ link } getComponent={getComponent}/>\n            })\n          : <i>No links</i>}\n        </td> : null}\n      </tr>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const ResponseExtension = ({ xKey, xVal }) => {\n    return <div className=\"response__extension\">{ xKey }: { String(xVal) }</div>\n}\nResponseExtension.propTypes = {\n  xKey: PropTypes.string,\n  xVal: PropTypes.any\n}\n\nexport default ResponseExtension\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport formatXml from \"xml-but-prettier\"\nimport toLower from \"lodash/toLower\"\nimport { extractFileNameFromContentDispositionHeader } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\nimport win from \"core/window\"\n\nexport default class ResponseBody extends React.PureComponent {\n  state = {\n    parsedContent: null\n  }\n\n  static propTypes = {\n    content: PropTypes.any.isRequired,\n    contentType: PropTypes.string,\n    getConfigs: PropTypes.func.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    headers: PropTypes.object,\n    url: PropTypes.string\n  }\n\n  updateParsedContent = (prevContent) => {\n    const { content } = this.props\n\n    if(prevContent === content) {\n      return\n    }\n\n    if(content && content instanceof Blob) {\n      var reader = new FileReader()\n      reader.onload = () => {\n        this.setState({\n          parsedContent: reader.result\n        })\n      }\n      reader.readAsText(content)\n    } else {\n      this.setState({\n        parsedContent: content.toString()\n      })\n    }\n  }\n\n  componentDidMount() {\n    this.updateParsedContent(null)\n  }\n\n  componentDidUpdate(prevProps) {\n    this.updateParsedContent(prevProps.content)\n  }\n\n  render() {\n    let { content, contentType, url, headers={}, getConfigs, getComponent } = this.props\n    const { parsedContent } = this.state\n    const HighlightCode = getComponent(\"highlightCode\")\n    const downloadName = \"response_\" + new Date().getTime()\n    let body, bodyEl\n    url = url || \"\"\n\n    if (\n      /^application\\/octet-stream/i.test(contentType) ||\n      (headers[\"Content-Disposition\"] && (/attachment/i).test(headers[\"Content-Disposition\"])) ||\n      (headers[\"content-disposition\"] && (/attachment/i).test(headers[\"content-disposition\"])) ||\n      (headers[\"Content-Description\"] && (/File Transfer/i).test(headers[\"Content-Description\"])) ||\n      (headers[\"content-description\"] && (/File Transfer/i).test(headers[\"content-description\"]))) {\n      // Download\n\n      if (\"Blob\" in window) {\n        let type = contentType || \"text/html\"\n        let blob = (content instanceof Blob) ? content : new Blob([content], {type: type})\n        let href = window.URL.createObjectURL(blob)\n        let fileName = url.substr(url.lastIndexOf(\"/\") + 1)\n        let download = [type, fileName, href].join(\":\")\n\n        // Use filename from response header,\n        // First check if filename is quoted (e.g. contains space), if no, fallback to not quoted check\n        let disposition = headers[\"content-disposition\"] || headers[\"Content-Disposition\"]\n        if (typeof disposition !== \"undefined\") {\n          let responseFilename = extractFileNameFromContentDispositionHeader(disposition)\n          if (responseFilename !== null) {\n            download = responseFilename\n          }\n        }\n\n        if(win.navigator && win.navigator.msSaveOrOpenBlob) {\n            bodyEl = <div><a href={ href } onClick={() => win.navigator.msSaveOrOpenBlob(blob, download)}>{ \"Download file\" }</a></div>\n        } else {\n            bodyEl = <div><a href={ href } download={ download }>{ \"Download file\" }</a></div>\n        }\n      } else {\n        bodyEl = <pre className=\"microlight\">Download headers detected but your browser does not support downloading binary via XHR (Blob).</pre>\n      }\n\n      // Anything else (CORS)\n    } else if (/json/i.test(contentType)) {\n      // JSON\n      let language = null\n      let testValueForJson = getKnownSyntaxHighlighterLanguage(content)\n      if (testValueForJson) {\n        language = \"json\"\n      }\n      try {\n        body = JSON.stringify(JSON.parse(content), null, \"  \")\n      } catch (error) {\n        body = \"can't parse JSON.  Raw result:\\n\\n\" + content\n      }\n\n      bodyEl = <HighlightCode language={language} downloadable fileName={`${downloadName}.json`} value={ body } getConfigs={ getConfigs } canCopy />\n\n      // XML\n    } else if (/xml/i.test(contentType)) {\n      body = formatXml(content, {\n        textNodesOnSameLine: true,\n        indentor: \"  \"\n      })\n      bodyEl = <HighlightCode downloadable fileName={`${downloadName}.xml`} value={ body } getConfigs={ getConfigs } canCopy />\n\n      // HTML or Plain Text\n    } else if (toLower(contentType) === \"text/html\" || /text\\/plain/.test(contentType)) {\n      bodyEl = <HighlightCode downloadable fileName={`${downloadName}.html`} value={ content } getConfigs={ getConfigs } canCopy />\n\n      // CSV\n    } else if (toLower(contentType) === \"text/csv\" || /text\\/csv/.test(contentType)) {\n      bodyEl = <HighlightCode downloadable fileName={`${downloadName}.csv`} value={ content } getConfigs={ getConfigs } canCopy />\n\n      // Image\n    } else if (/^image\\//i.test(contentType)) {\n      if(contentType.includes(\"svg\")) {\n        bodyEl = <div> { content } </div>\n      } else {\n        bodyEl = <img src={ window.URL.createObjectURL(content) } />\n      }\n\n      // Audio\n    } else if (/^audio\\//i.test(contentType)) {\n      bodyEl = <pre className=\"microlight\"><audio controls><source src={ url } type={ contentType } /></audio></pre>\n    } else if (typeof content === \"string\") {\n      bodyEl = <HighlightCode downloadable fileName={`${downloadName}.txt`} value={ content } getConfigs={ getConfigs } canCopy />\n    } else if ( content.size > 0 ) {\n      // We don't know the contentType, but there was some content returned\n      if(parsedContent) {\n        // We were able to squeeze something out of content\n        // in `updateParsedContent`, so let's display it\n        bodyEl = <div>\n          <p className=\"i\">\n            Unrecognized response type; displaying content as text.\n          </p>\n          <HighlightCode downloadable fileName={`${downloadName}.txt`} value={ parsedContent } getConfigs={ getConfigs } canCopy />\n        </div>\n\n      } else {\n        // Give up\n        bodyEl = <p className=\"i\">\n          Unrecognized response type; unable to display.\n        </p>\n      }\n    } else {\n      // We don't know the contentType and there was no content returned\n      bodyEl = null\n    }\n\n    return ( !bodyEl ? null : <div>\n        <h5>Response body</h5>\n        { bodyEl }\n      </div>\n    )\n  }\n}\n", "import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class Parameters extends Component {\n\n  constructor(props) {\n    super(props)\n    this.state = {\n      callbackVisible: false,\n      parametersVisible: true,\n    }\n  }\n\n  static propTypes = {\n    parameters: ImPropTypes.list.isRequired,\n    operation: PropTypes.object.isRequired,\n    specActions: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    oas3Selectors: PropTypes.object.isRequired,\n    fn: PropTypes.object.isRequired,\n    tryItOutEnabled: PropTypes.bool,\n    allowTryItOut: PropTypes.bool,\n    onTryoutClick: PropTypes.func,\n    onCancelClick: PropTypes.func,\n    onChangeKey: PropTypes.array,\n    pathMethod: PropTypes.array.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    specPath: ImPropTypes.list.isRequired,\n  }\n\n\n  static defaultProps = {\n    onTryoutClick: Function.prototype,\n    onCancelClick: Function.prototype,\n    tryItOutEnabled: false,\n    allowTryItOut: true,\n    onChangeKey: [],\n    specPath: [],\n  }\n\n  onChange = (param, value, isXml) => {\n    let {\n      specActions: { changeParamByIdentity },\n      onChangeKey,\n    } = this.props\n\n    changeParamByIdentity(onChangeKey, param, value, isXml)\n  }\n\n  onChangeConsumesWrapper = (val) => {\n    let {\n      specActions: { changeConsumesValue },\n      onChangeKey,\n    } = this.props\n\n    changeConsumesValue(onChangeKey, val)\n  }\n\n  toggleTab = (tab) => {\n    if (tab === \"parameters\") {\n      return this.setState({\n        parametersVisible: true,\n        callbackVisible: false,\n      })\n    } else if (tab === \"callbacks\") {\n      return this.setState({\n        callbackVisible: true,\n        parametersVisible: false,\n      })\n    }\n  }\n\n  onChangeMediaType = ({ value, pathMethod }) => {\n    let { specActions, oas3Selectors, oas3Actions } = this.props\n    const userHasEditedBody = oas3Selectors.hasUserEditedBody(...pathMethod)\n    const shouldRetainRequestBodyValue = oas3Selectors.shouldRetainRequestBodyValue(...pathMethod)\n    oas3Actions.setRequestContentType({ value, pathMethod })\n    oas3Actions.initRequestBodyValidateError({ pathMethod })\n    if (!userHasEditedBody) {\n      if(!shouldRetainRequestBodyValue) {\n        oas3Actions.setRequestBodyValue({ value: undefined, pathMethod })\n      }\n      specActions.clearResponse(...pathMethod)\n      specActions.clearRequest(...pathMethod)\n      specActions.clearValidateParams(pathMethod)\n    }\n  }\n\n  render() {\n\n    let {\n      onTryoutClick,\n      parameters,\n      allowTryItOut,\n      tryItOutEnabled,\n      specPath,\n      fn,\n      getComponent,\n      getConfigs,\n      specSelectors,\n      specActions,\n      pathMethod,\n      oas3Actions,\n      oas3Selectors,\n      operation,\n    } = this.props\n\n    const ParameterRow = getComponent(\"parameterRow\")\n    const TryItOutButton = getComponent(\"TryItOutButton\")\n    const ContentType = getComponent(\"contentType\")\n    const Callbacks = getComponent(\"Callbacks\", true)\n    const RequestBody = getComponent(\"RequestBody\", true)\n\n    const isExecute = tryItOutEnabled && allowTryItOut\n    const isOAS3 = specSelectors.isOAS3()\n\n\n    const requestBody = operation.get(\"requestBody\")\n\n    const groupedParametersArr = Object.values(parameters\n      .reduce((acc, x) => {\n        const key = x.get(\"in\")\n        acc[key] ??= []\n        acc[key].push(x)\n        return acc\n      }, {}))\n      .reduce((acc, x) => acc.concat(x), [])\n\n    const retainRequestBodyValueFlagForOperation = (f) => oas3Actions.setRetainRequestBodyValueFlag({ value: f, pathMethod })\n    return (\n      <div className=\"opblock-section\">\n        <div className=\"opblock-section-header\">\n          {isOAS3 ? (\n            <div className=\"tab-header\">\n              <div onClick={() => this.toggleTab(\"parameters\")}\n                   className={`tab-item ${this.state.parametersVisible && \"active\"}`}>\n                <h4 className=\"opblock-title\"><span>Parameters</span></h4>\n              </div>\n              {operation.get(\"callbacks\") ?\n                (\n                  <div onClick={() => this.toggleTab(\"callbacks\")}\n                       className={`tab-item ${this.state.callbackVisible && \"active\"}`}>\n                    <h4 className=\"opblock-title\"><span>Callbacks</span></h4>\n                  </div>\n                ) : null\n              }\n            </div>\n          ) : (\n            <div className=\"tab-header\">\n              <h4 className=\"opblock-title\">Parameters</h4>\n            </div>\n          )}\n          {allowTryItOut ? (\n            <TryItOutButton\n              isOAS3={specSelectors.isOAS3()}\n              hasUserEditedBody={oas3Selectors.hasUserEditedBody(...pathMethod)}\n              enabled={tryItOutEnabled}\n              onCancelClick={this.props.onCancelClick}\n              onTryoutClick={onTryoutClick}\n              onResetClick={() => oas3Actions.setRequestBodyValue({ value: undefined, pathMethod })}/>\n          ) : null}\n        </div>\n        {this.state.parametersVisible ? <div className=\"parameters-container\">\n          {!groupedParametersArr.length ? <div className=\"opblock-description-wrapper\"><p>No parameters</p></div> :\n            <div className=\"table-container\">\n              <table className=\"parameters\">\n                <thead>\n                <tr>\n                  <th className=\"col_header parameters-col_name\">Name</th>\n                  <th className=\"col_header parameters-col_description\">Description</th>\n                </tr>\n                </thead>\n                <tbody>\n                {\n                  groupedParametersArr.map((parameter, i) => (\n                    <ParameterRow\n                      fn={fn}\n                      specPath={specPath.push(i.toString())}\n                      getComponent={getComponent}\n                      getConfigs={getConfigs}\n                      rawParam={parameter}\n                      param={specSelectors.parameterWithMetaByIdentity(pathMethod, parameter)}\n                      key={`${parameter.get(\"in\")}.${parameter.get(\"name\")}`}\n                      onChange={this.onChange}\n                      onChangeConsumes={this.onChangeConsumesWrapper}\n                      specSelectors={specSelectors}\n                      specActions={specActions}\n                      oas3Actions={oas3Actions}\n                      oas3Selectors={oas3Selectors}\n                      pathMethod={pathMethod}\n                      isExecute={isExecute} />\n                  ))\n                }\n                </tbody>\n              </table>\n            </div>\n          }\n        </div> : null}\n\n        {this.state.callbackVisible ? <div className=\"callbacks-container opblock-description-wrapper\">\n          <Callbacks\n            callbacks={Map(operation.get(\"callbacks\"))}\n            specPath={specPath.slice(0, -1).push(\"callbacks\")}\n          />\n        </div> : null}\n        {\n          isOAS3 && requestBody && this.state.parametersVisible &&\n          <div className=\"opblock-section opblock-section-request-body\">\n            <div className=\"opblock-section-header\">\n              <h4 className={`opblock-title parameter__name ${requestBody.get(\"required\") && \"required\"}`}>Request\n                body</h4>\n              <label>\n                <ContentType\n                  value={oas3Selectors.requestContentType(...pathMethod)}\n                  contentTypes={requestBody.get(\"content\", List()).keySeq()}\n                  onChange={(value) => {\n                    this.onChangeMediaType({ value, pathMethod })\n                  }}\n                  className=\"body-param-content-type\" \n                  ariaLabel=\"Request content type\" />\n              </label>\n            </div>\n            <div className=\"opblock-description-wrapper\">\n              <RequestBody\n                setRetainRequestBodyValueFlag={retainRequestBodyValueFlagForOperation}\n                userHasEditedBody={oas3Selectors.hasUserEditedBody(...pathMethod)}\n                specPath={specPath.slice(0, -1).push(\"requestBody\")}\n                requestBody={requestBody}\n                requestBodyValue={oas3Selectors.requestBodyValue(...pathMethod)}\n                requestBodyInclusionSetting={oas3Selectors.requestBodyInclusionSetting(...pathMethod)}\n                requestBodyErrors={oas3Selectors.requestBodyErrors(...pathMethod)}\n                isExecute={isExecute}\n                getConfigs={getConfigs}\n                activeExamplesKey={oas3Selectors.activeExamplesMember(\n                  ...pathMethod,\n                  \"requestBody\",\n                  \"requestBody\", // RBs are currently not stored per-mediaType\n                )}\n                updateActiveExamplesKey={key => {\n                  this.props.oas3Actions.setActiveExamplesMember({\n                    name: key,\n                    pathMethod: this.props.pathMethod,\n                    contextType: \"requestBody\",\n                    contextName: \"requestBody\", // RBs are currently not stored per-mediaType\n                  })\n                }\n                }\n                onChange={(value, path) => {\n                  if (path) {\n                    const lastValue = oas3Selectors.requestBodyValue(...pathMethod)\n                    const usableValue = Map.isMap(lastValue) ? lastValue : Map()\n                    return oas3Actions.setRequestBodyValue({\n                      pathMethod,\n                      value: usableValue.setIn(path, value),\n                    })\n                  }\n                  oas3Actions.setRequestBodyValue({ value, pathMethod })\n                }}\n                onChangeIncludeEmpty={(name, value) => {\n                  oas3Actions.setRequestBodyInclusion({\n                    pathMethod,\n                    value,\n                    name,\n                  })\n                }}\n                contentType={oas3Selectors.requestContentType(...pathMethod)} />\n            </div>\n          </div>\n        }\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const ParameterExt = ({ xKey, xVal }) => {\n    return <div className=\"parameter__extension\">{ xKey }: { String(xVal) }</div>\n}\nParameterExt.propTypes = {\n  xKey: PropTypes.string,\n  xVal: PropTypes.any\n}\n\nexport default ParameterExt\n", "import React, { Component } from \"react\"\nimport cx from \"classnames\"\nimport PropTypes from \"prop-types\"\n\n\nconst noop = () => { }\n\nconst ParameterIncludeEmptyPropTypes = {\n  isIncluded: PropTypes.bool.isRequired,\n  isDisabled: PropTypes.bool.isRequired,\n  isIncludedOptions: PropTypes.object,\n  onChange: PropTypes.func.isRequired,\n}\n\nconst ParameterIncludeEmptyDefaultProps = {\n  onChange: noop,\n  isIncludedOptions: {},\n}\nexport default class ParameterIncludeEmpty extends Component {\n  static propTypes = ParameterIncludeEmptyPropTypes\n  static defaultProps = ParameterIncludeEmptyDefaultProps\n\n  componentDidMount() {\n    const { isIncludedOptions, onChange } = this.props\n    const { shouldDispatchInit, defaultValue } = isIncludedOptions\n    if (shouldDispatchInit) {\n      onChange(defaultValue)\n    }\n  }\n\n  onCheckboxChange = e => {\n    const { onChange } = this.props\n    onChange(e.target.checked)\n  }\n\n  render() {\n    let { isIncluded, isDisabled } = this.props\n\n    return (\n      <div>\n        <label className={cx(\"parameter__empty_value_toggle\", {\n          \"disabled\": isDisabled\n        })}>\n          <input type=\"checkbox\" \n            disabled={isDisabled}\n            checked={!isDisabled && isIncluded}\n            onChange={this.onCheckboxChange} />\n          Send empty value\n        </label>\n      </div>\n    )\n  }\n}\n", "import React, { Component } from \"react\"\nimport { Map, List } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport win from \"core/window\"\nimport { getSampleSchema, getExtensions, getCommonExtensions, numberToString, stringify, isEmptyValue } from \"core/utils\"\nimport getParameterSchema from \"../../helpers/get-parameter-schema.js\"\n\nexport default class ParameterRow extends Component {\n  static propTypes = {\n    onChange: PropTypes.func.isRequired,\n    param: PropTypes.object.isRequired,\n    rawParam: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    fn: PropTypes.object.isRequired,\n    isExecute: PropTypes.bool,\n    onChangeConsumes: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    specActions: PropTypes.object.isRequired,\n    pathMethod: PropTypes.array.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    specPath: ImPropTypes.list.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    oas3Selectors: PropTypes.object.isRequired,\n  }\n\n  constructor(props, context) {\n    super(props, context)\n\n    this.setDefaultValue()\n  }\n\n  UNSAFE_componentWillReceiveProps(props) {\n    let { specSelectors, pathMethod, rawParam } = props\n    let isOAS3 = specSelectors.isOAS3()\n\n    let parameterWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || new Map()\n    // fallback, if the meta lookup fails\n    parameterWithMeta = parameterWithMeta.isEmpty() ? rawParam : parameterWithMeta\n\n    let enumValue\n\n    if(isOAS3) {\n      let { schema } = getParameterSchema(parameterWithMeta, { isOAS3 })\n      enumValue = schema ? schema.get(\"enum\") : undefined\n    } else {\n      enumValue = parameterWithMeta ? parameterWithMeta.get(\"enum\") : undefined\n    }\n    let paramValue = parameterWithMeta ? parameterWithMeta.get(\"value\") : undefined\n\n    let value\n\n    if ( paramValue !== undefined ) {\n      value = paramValue\n    } else if ( rawParam.get(\"required\") && enumValue && enumValue.size ) {\n      value = enumValue.first()\n    }\n\n    if ( value !== undefined && value !== paramValue ) {\n      this.onChangeWrapper(numberToString(value))\n    }\n    // todo: could check if schema here; if not, do not call. impact?\n    this.setDefaultValue()\n  }\n\n  onChangeWrapper = (value, isXml = false) => {\n    let { onChange, rawParam } = this.props\n    let valueForUpstream\n\n    // Coerce empty strings and empty Immutable objects to null\n    if(value === \"\" || (value && value.size === 0)) {\n      valueForUpstream = null\n    } else {\n      valueForUpstream = value\n    }\n\n    return onChange(rawParam, valueForUpstream, isXml)\n  }\n\n  _onExampleSelect = (key, /* { isSyntheticChange } = {} */) => {\n    this.props.oas3Actions.setActiveExamplesMember({\n      name: key,\n      pathMethod: this.props.pathMethod,\n      contextType: \"parameters\",\n      contextName: this.getParamKey()\n    })\n  }\n\n  onChangeIncludeEmpty = (newValue) => {\n    let { specActions, param, pathMethod } = this.props\n    const paramName = param.get(\"name\")\n    const paramIn = param.get(\"in\")\n    return specActions.updateEmptyParamInclusion(pathMethod, paramName, paramIn, newValue)\n  }\n\n  setDefaultValue = () => {\n    let { specSelectors, pathMethod, rawParam, oas3Selectors } = this.props\n\n    const paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n    const { schema } = getParameterSchema(paramWithMeta, { isOAS3: specSelectors.isOAS3() })\n    const parameterMediaType = paramWithMeta\n      .get(\"content\", Map())\n      .keySeq()\n      .first()\n\n    // getSampleSchema could return null\n    const generatedSampleValue = schema ? getSampleSchema(schema.toJS(), parameterMediaType, {\n\n      includeWriteOnly: true\n    }) : null\n\n    if (!paramWithMeta || paramWithMeta.get(\"value\") !== undefined) {\n      return\n    }\n\n    if( paramWithMeta.get(\"in\") !== \"body\" ) {\n      let initialValue\n\n      //// Find an initial value\n\n      if (specSelectors.isSwagger2()) {\n        initialValue =\n          paramWithMeta.get(\"x-example\") !== undefined\n          ? paramWithMeta.get(\"x-example\")\n          : paramWithMeta.getIn([\"schema\", \"example\"]) !== undefined\n          ? paramWithMeta.getIn([\"schema\", \"example\"])\n          : (schema && schema.getIn([\"default\"]))\n      } else if (specSelectors.isOAS3()) {\n        const currentExampleKey = oas3Selectors.activeExamplesMember(...pathMethod, \"parameters\", this.getParamKey())\n        initialValue =\n          paramWithMeta.getIn([\"examples\", currentExampleKey, \"value\"]) !== undefined\n          ? paramWithMeta.getIn([\"examples\", currentExampleKey, \"value\"])\n          : paramWithMeta.getIn([\"content\", parameterMediaType, \"example\"]) !== undefined\n          ? paramWithMeta.getIn([\"content\", parameterMediaType, \"example\"])\n          : paramWithMeta.get(\"example\") !== undefined\n          ? paramWithMeta.get(\"example\")\n          : (schema && schema.get(\"example\")) !== undefined\n          ? (schema && schema.get(\"example\"))\n          : (schema && schema.get(\"default\")) !== undefined\n          ? (schema && schema.get(\"default\"))\n          : paramWithMeta.get(\"default\") // ensures support for `parameterMacro`\n      }\n\n      //// Process the initial value\n\n      if(initialValue !== undefined && !List.isList(initialValue)) {\n        // Stringify if it isn't a List\n        initialValue = stringify(initialValue)\n      }\n\n      //// Dispatch the initial value\n\n      if(initialValue !== undefined) {\n        this.onChangeWrapper(initialValue)\n      } else if(\n        schema && schema.get(\"type\") === \"object\"\n        && generatedSampleValue\n        && !paramWithMeta.get(\"examples\")\n      ) {\n        // Object parameters get special treatment.. if the user doesn't set any\n        // default or example values, we'll provide initial values generated from\n        // the schema.\n        // However, if `examples` exist for the parameter, we won't do anything,\n        // so that the appropriate `examples` logic can take over.\n        this.onChangeWrapper(\n          List.isList(generatedSampleValue) ? (\n            generatedSampleValue\n          ) : (\n            stringify(generatedSampleValue)\n          )\n        )\n      }\n    }\n  }\n\n  getParamKey() {\n    const { param } = this.props\n\n    if(!param) return null\n\n    return `${param.get(\"name\")}-${param.get(\"in\")}`\n  }\n\n  render() {\n    let {param, rawParam, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod, specPath, oas3Selectors} = this.props\n\n    let isOAS3 = specSelectors.isOAS3()\n\n    const { showExtensions, showCommonExtensions } = getConfigs()\n\n    if(!param) {\n      param = rawParam\n    }\n\n    if(!rawParam) return null\n\n    // const onChangeWrapper = (value) => onChange(param, value)\n    const JsonSchemaForm = getComponent(\"JsonSchemaForm\")\n    const ParamBody = getComponent(\"ParamBody\")\n    let inType = param.get(\"in\")\n    let bodyParam = inType !== \"body\" ? null\n      : <ParamBody getComponent={getComponent}\n                   getConfigs={ getConfigs }\n                   fn={fn}\n                   param={param}\n                   consumes={ specSelectors.consumesOptionsFor(pathMethod) }\n                   consumesValue={ specSelectors.contentTypeValues(pathMethod).get(\"requestContentType\") }\n                   onChange={this.onChangeWrapper}\n                   onChangeConsumes={onChangeConsumes}\n                   isExecute={ isExecute }\n                   specSelectors={ specSelectors }\n                   pathMethod={ pathMethod }\n      />\n\n    const ModelExample = getComponent(\"modelExample\")\n    const Markdown = getComponent(\"Markdown\", true)\n    const ParameterExt = getComponent(\"ParameterExt\")\n    const ParameterIncludeEmpty = getComponent(\"ParameterIncludeEmpty\")\n    const ExamplesSelectValueRetainer = getComponent(\"ExamplesSelectValueRetainer\")\n    const Example = getComponent(\"Example\")\n\n    let { schema } = getParameterSchema(param, { isOAS3 })\n    let paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n\n    let format = schema ? schema.get(\"format\") : null\n    let type = schema ? schema.get(\"type\") : null\n    let itemType = schema ? schema.getIn([\"items\", \"type\"]) : null\n    let isFormData = inType === \"formData\"\n    let isFormDataSupported = \"FormData\" in win\n    let required = param.get(\"required\")\n\n    let value = paramWithMeta ? paramWithMeta.get(\"value\") : \"\"\n    let commonExt = showCommonExtensions ? getCommonExtensions(schema) : null\n    let extensions = showExtensions ? getExtensions(param) : null\n\n    let paramItems // undefined\n    let paramEnum // undefined\n    let paramDefaultValue // undefined\n    let paramExample // undefined\n    let isDisplayParamEnum = false\n\n    if ( param !== undefined && schema ) {\n      paramItems = schema.get(\"items\")\n    }\n\n    if (paramItems !== undefined) {\n      paramEnum = paramItems.get(\"enum\")\n      paramDefaultValue = paramItems.get(\"default\")\n    } else if (schema) {\n      paramEnum = schema.get(\"enum\")\n    }\n\n    if ( paramEnum && paramEnum.size && paramEnum.size > 0) {\n      isDisplayParamEnum = true\n    }\n\n    // Default and Example Value for readonly doc\n    if ( param !== undefined ) {\n      if (schema) {\n        paramDefaultValue = schema.get(\"default\")\n      }\n      if (paramDefaultValue === undefined) {\n        paramDefaultValue = param.get(\"default\")\n      }\n      paramExample = param.get(\"example\")\n      if (paramExample === undefined) {\n        paramExample = param.get(\"x-example\")\n      }\n    }\n\n    return (\n      <tr data-param-name={param.get(\"name\")} data-param-in={param.get(\"in\")}>\n        <td className=\"parameters-col_name\">\n          <div className={required ? \"parameter__name required\" : \"parameter__name\"}>\n            { param.get(\"name\") }\n            { !required ? null : <span>&nbsp;*</span> }\n          </div>\n          <div className=\"parameter__type\">\n            { type }\n            { itemType && `[${itemType}]` }\n            { format && <span className=\"prop-format\">(${format})</span>}\n          </div>\n          <div className=\"parameter__deprecated\">\n            { isOAS3 && param.get(\"deprecated\") ? \"deprecated\": null }\n          </div>\n          <div className=\"parameter__in\">({ param.get(\"in\") })</div>\n          { !showCommonExtensions || !commonExt.size ? null : commonExt.entrySeq().map(([key, v]) => <ParameterExt key={`${key}-${v}`} xKey={key} xVal={v} /> )}\n          { !showExtensions || !extensions.size ? null : extensions.entrySeq().map(([key, v]) => <ParameterExt key={`${key}-${v}`} xKey={key} xVal={v} /> )}\n        </td>\n\n        <td className=\"parameters-col_description\">\n          { param.get(\"description\") ? <Markdown source={ param.get(\"description\") }/> : null }\n\n          { (bodyParam || !isExecute) && isDisplayParamEnum ?\n            <Markdown className=\"parameter__enum\" source={\n                \"<i>Available values</i> : \" + paramEnum.map(function(item) {\n                    return item\n                  }).toArray().join(\", \")}/>\n            : null\n          }\n\n          { (bodyParam || !isExecute) && paramDefaultValue !== undefined ?\n            <Markdown className=\"parameter__default\" source={\"<i>Default value</i> : \" + paramDefaultValue}/>\n            : null\n          }\n\n          { (bodyParam || !isExecute) && paramExample !== undefined ?\n            <Markdown source={\"<i>Example</i> : \" + paramExample}/>\n            : null\n          }\n\n          {(isFormData && !isFormDataSupported) && <div>Error: your browser does not support FormData</div>}\n\n          {\n            isOAS3 && param.get(\"examples\") ? (\n              <section className=\"parameter-controls\">\n                <ExamplesSelectValueRetainer\n                  examples={param.get(\"examples\")}\n                  onSelect={this._onExampleSelect}\n                  updateValue={this.onChangeWrapper}\n                  getComponent={getComponent}\n                  defaultToFirstExample={true}\n                  currentKey={oas3Selectors.activeExamplesMember(...pathMethod, \"parameters\", this.getParamKey())}\n                  currentUserInputValue={value}\n                />\n              </section>\n            ) : null\n          }\n\n          { bodyParam ? null\n            : <JsonSchemaForm fn={fn}\n                              getComponent={getComponent}\n                              value={ value }\n                              required={ required }\n                              disabled={!isExecute}\n                              description={param.get(\"name\")}\n                              onChange={ this.onChangeWrapper }\n                              errors={ paramWithMeta.get(\"errors\") }\n                              schema={ schema }/>\n          }\n\n\n          {\n            bodyParam && schema ? <ModelExample getComponent={ getComponent }\n                                                specPath={specPath.push(\"schema\")}\n                                                getConfigs={ getConfigs }\n                                                isExecute={ isExecute }\n                                                specSelectors={ specSelectors }\n                                                schema={ schema }\n                                                example={ bodyParam }\n                                                includeWriteOnly={ true }/>\n              : null\n          }\n\n          {\n            !bodyParam && isExecute && param.get(\"allowEmptyValue\") ?\n            <ParameterIncludeEmpty\n              onChange={this.onChangeIncludeEmpty}\n              isIncluded={specSelectors.parameterInclusionSettingFor(pathMethod, param.get(\"name\"), param.get(\"in\"))}\n              isDisabled={!isEmptyValue(value)} />\n            : null\n          }\n\n          {\n            isOAS3 && param.get(\"examples\") ? (\n              <Example\n                example={param.getIn([\n                  \"examples\",\n                  oas3Selectors.activeExamplesMember(...pathMethod, \"parameters\", this.getParamKey())\n                ])}\n                getComponent={getComponent}\n                getConfigs={getConfigs}\n              />\n            ) : null\n          }\n\n        </td>\n\n      </tr>\n    )\n\n  }\n\n}\n", "import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Execute extends Component {\n\n  static propTypes = {\n    specSelectors: PropTypes.object.isRequired,\n    specActions: PropTypes.object.isRequired,\n    operation: PropTypes.object.isRequired,\n    path: PropTypes.string.isRequired,\n    method: PropTypes.string.isRequired,\n    oas3Selectors: PropTypes.object.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    onExecute: PropTypes.func,\n    disabled: PropTypes.bool\n  }\n\n  handleValidateParameters = () => {\n    let { specSelectors, specActions, path, method } = this.props\n    specActions.validateParams([path, method])\n    return specSelectors.validateBeforeExecute([path, method])\n  }\n\n  handleValidateRequestBody = () => {\n    let { path, method, specSelectors, oas3Selectors, oas3Actions } = this.props\n    let validationErrors = {\n      missingBodyValue: false,\n      missingRequiredKeys: []\n    }\n    // context: reset errors, then (re)validate\n    oas3Actions.clearRequestBodyValidateError({ path, method })\n    let oas3RequiredRequestBodyContentType = specSelectors.getOAS3RequiredRequestBodyContentType([path, method])\n    let oas3RequestBodyValue = oas3Selectors.requestBodyValue(path, method)\n    let oas3ValidateBeforeExecuteSuccess = oas3Selectors.validateBeforeExecute([path, method])\n    let oas3RequestContentType = oas3Selectors.requestContentType(path, method)\n\n    if (!oas3ValidateBeforeExecuteSuccess) {\n      validationErrors.missingBodyValue = true\n      oas3Actions.setRequestBodyValidateError({ path, method, validationErrors })\n      return false\n    }\n    if (!oas3RequiredRequestBodyContentType) {\n      return true\n    }\n    let missingRequiredKeys = oas3Selectors.validateShallowRequired({\n      oas3RequiredRequestBodyContentType,\n      oas3RequestContentType,\n      oas3RequestBodyValue\n    })\n    if (!missingRequiredKeys || missingRequiredKeys.length < 1) {\n      return true\n    }\n    missingRequiredKeys.forEach((missingKey) => {\n      validationErrors.missingRequiredKeys.push(missingKey)\n    })\n    oas3Actions.setRequestBodyValidateError({ path, method, validationErrors })\n    return false\n  }\n\n  handleValidationResultPass = () => {\n    let { specActions, operation, path, method } = this.props\n    if (this.props.onExecute) {\n      // loading spinner\n      this.props.onExecute()\n    }\n    specActions.execute({ operation, path, method })\n  }\n\n  handleValidationResultFail = () => {\n    let { specActions, path, method } = this.props\n    // deferred by 40ms, to give element class change time to settle.\n    specActions.clearValidateParams([path, method])\n    setTimeout(() => {\n      specActions.validateParams([path, method])\n    }, 40)\n  }\n\n  handleValidationResult = (isPass) => {\n    if (isPass) {\n      this.handleValidationResultPass()\n    } else {\n      this.handleValidationResultFail()\n    }\n  }\n\n  onClick = () => {\n    let paramsResult = this.handleValidateParameters()\n    let requestBodyResult = this.handleValidateRequestBody()\n    let isPass = paramsResult && requestBodyResult\n    this.handleValidationResult(isPass)\n  }\n\n  onChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)\n\n  render(){\n    const { disabled } = this.props\n    return (\n        <button className=\"btn execute opblock-control__btn\" onClick={ this.onClick } disabled={disabled}>\n          Execute\n        </button>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Im from \"immutable\"\n\nconst propClass = \"header-example\"\n\nexport default class Headers extends React.Component {\n  static propTypes = {\n    headers: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired\n  };\n\n  render() {\n    let { headers, getComponent } = this.props\n\n    const Property = getComponent(\"Property\")\n    const Markdown = getComponent(\"Markdown\", true)\n\n    if ( !headers || !headers.size )\n      return null\n\n      return (\n      <div className=\"headers-wrapper\">\n        <h4 className=\"headers__title\">Headers:</h4>\n        <table className=\"headers\">\n          <thead>\n            <tr className=\"header-row\">\n              <th className=\"header-col\">Name</th>\n              <th className=\"header-col\">Description</th>\n              <th className=\"header-col\">Type</th>\n            </tr>\n          </thead>\n          <tbody>\n          {\n            headers.entrySeq().map( ([ key, header ]) => {\n              if(!Im.Map.isMap(header)) {\n                return null\n              }\n\n              const description = header.get(\"description\")\n              const type = header.getIn([\"schema\"]) ? header.getIn([\"schema\", \"type\"]) : header.getIn([\"type\"])\n              const schemaExample = header.getIn([\"schema\", \"example\"])\n\n              return (<tr key={ key }>\n                <td className=\"header-col\">{ key }</td>\n                <td className=\"header-col\">{\n                  !description ? null : <Markdown source={ description } />\n                }</td>\n                <td className=\"header-col\">{ type } { schemaExample ? <Property propKey={ \"Example\" } propVal={ schemaExample } propClass={ propClass } /> : null }</td>\n              </tr>)\n            }).toArray()\n          }\n          </tbody>\n        </table>\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\n\nexport default class Errors extends React.Component {\n\n  static propTypes = {\n    editorActions: PropTypes.object,\n    errSelectors: PropTypes.object.isRequired,\n    layoutSelectors: PropTypes.object.isRequired,\n    layoutActions: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n  }\n\n  render() {\n    let { editorActions, errSelectors, layoutSelectors, layoutActions, getComponent } = this.props\n\n    const Collapse = getComponent(\"Collapse\")\n\n    if(editorActions && editorActions.jumpToLine) {\n      var jumpToLine = editorActions.jumpToLine\n    }\n\n    let errors = errSelectors.allErrors()\n\n    // all thrown errors, plus error-level everything else\n    let allErrorsToDisplay = errors.filter(err => err.get(\"type\") === \"thrown\" ? true :err.get(\"level\") === \"error\")\n\n    if(!allErrorsToDisplay || allErrorsToDisplay.count() < 1) {\n      return null\n    }\n\n    let isVisible = layoutSelectors.isShown([\"errorPane\"], true)\n    let toggleVisibility = () => layoutActions.show([\"errorPane\"], !isVisible)\n\n    let sortedJSErrors = allErrorsToDisplay.sortBy(err => err.get(\"line\"))\n\n    return (\n      <pre className=\"errors-wrapper\">\n        <hgroup className=\"error\">\n          <h4 className=\"errors__title\">Errors</h4>\n          <button className=\"btn errors__clear-btn\" onClick={ toggleVisibility }>{ isVisible ? \"Hide\" : \"Show\" }</button>\n        </hgroup>\n        <Collapse isOpened={ isVisible } animated >\n          <div className=\"errors\">\n            { sortedJSErrors.map((err, i) => {\n              let type = err.get(\"type\")\n              if(type === \"thrown\" || type === \"auth\") {\n                return <ThrownErrorItem key={ i } error={ err.get(\"error\") || err } jumpToLine={jumpToLine} />\n              }\n              if(type === \"spec\") {\n                return <SpecErrorItem key={ i } error={ err } jumpToLine={jumpToLine} />\n              }\n            }) }\n          </div>\n        </Collapse>\n      </pre>\n      )\n    }\n}\n\nconst ThrownErrorItem = ( { error, jumpToLine } ) => {\n  if(!error) {\n    return null\n  }\n  let errorLine = error.get(\"line\")\n\n  return (\n    <div className=\"error-wrapper\">\n      { !error ? null :\n        <div>\n          <h4>{ (error.get(\"source\") && error.get(\"level\")) ?\n            toTitleCase(error.get(\"source\")) + \" \" + error.get(\"level\") : \"\" }\n          { error.get(\"path\") ? <small> at {error.get(\"path\")}</small>: null }</h4>\n          <span className=\"message thrown\">\n            { error.get(\"message\") }\n          </span>\n          <div className=\"error-line\">\n            { errorLine && jumpToLine ? <a onClick={jumpToLine.bind(null, errorLine)}>Jump to line { errorLine }</a> : null }\n          </div>\n        </div>\n      }\n    </div>\n    )\n  }\n\nconst SpecErrorItem = ( { error, jumpToLine } ) => {\n  let locationMessage = null\n\n  if(error.get(\"path\")) {\n    if(List.isList(error.get(\"path\"))) {\n      locationMessage = <small>at { error.get(\"path\").join(\".\") }</small>\n    } else {\n      locationMessage = <small>at { error.get(\"path\") }</small>\n    }\n  } else if(error.get(\"line\") && !jumpToLine) {\n    locationMessage = <small>on line { error.get(\"line\") }</small>\n  }\n\n  return (\n    <div className=\"error-wrapper\">\n      { !error ? null :\n        <div>\n          <h4>{ toTitleCase(error.get(\"source\")) + \" \" + error.get(\"level\") }&nbsp;{ locationMessage }</h4>\n          <span className=\"message\">{ error.get(\"message\") }</span>\n          <div className=\"error-line\">\n            { jumpToLine ? (\n              <a onClick={jumpToLine.bind(null, error.get(\"line\"))}>Jump to line { error.get(\"line\") }</a>\n            ) : null }\n          </div>\n        </div>\n      }\n    </div>\n    )\n  }\n\nfunction toTitleCase(str) {\n  return (str || \"\")\n    .split(\" \")\n    .map(substr => substr[0].toUpperCase() + substr.slice(1))\n    .join(\" \")\n}\n\nThrownErrorItem.propTypes = {\n  error: PropTypes.object.isRequired,\n  jumpToLine: PropTypes.func\n}\n\nThrownErrorItem.defaultProps = {\n  jumpToLine: null\n}\n\nSpecErrorItem.propTypes = {\n  error: PropTypes.object.isRequired,\n  jumpToLine: PropTypes.func\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { fromJS } from \"immutable\"\n\nconst noop = ()=>{}\n\nexport default class ContentType extends React.Component {\n\n  static propTypes = {\n    ariaControls: PropTypes.string,\n    contentTypes: PropTypes.oneOfType([ImPropTypes.list, ImPropTypes.set, ImPropTypes.seq]),\n    controlId: PropTypes.string,\n    value: PropTypes.string,\n    onChange: PropTypes.func,\n    className: PropTypes.string,\n    ariaLabel: PropTypes.string\n  }\n\n  static defaultProps = {\n    onChange: noop,\n    value: null,\n    contentTypes: fromJS([\"application/json\"]),\n  }\n\n  componentDidMount() {\n    // Needed to populate the form, initially\n    if(this.props.contentTypes) {\n      this.props.onChange(this.props.contentTypes.first())\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    if(!nextProps.contentTypes || !nextProps.contentTypes.size) {\n      return\n    }\n\n    if(!nextProps.contentTypes.includes(nextProps.value)) {\n      nextProps.onChange(nextProps.contentTypes.first())\n    }\n  }\n\n  onChangeWrapper = e => this.props.onChange(e.target.value)\n\n  render() {\n    let { ariaControls, ariaLabel, className, contentTypes, controlId, value } = this.props\n\n    if ( !contentTypes || !contentTypes.size )\n      return null\n\n    return (\n      <div className={ \"content-type-wrapper \" + ( className || \"\" ) }>\n        <select aria-controls={ariaControls} aria-label={ariaLabel} className=\"content-type\" id={controlId} onChange={this.onChangeWrapper} value={value || \"\"} >\n          { contentTypes.map( (val) => {\n            return <option key={ val } value={ val }>{ val }</option>\n          }).toArray()}\n        </select>\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nfunction xclass(...args) {\n  return args.filter(a => !!a).join(\" \").trim()\n}\n\nexport class Container extends React.Component {\n  render() {\n    let { fullscreen, full, ...rest } = this.props\n    // Normal element\n\n    if(fullscreen)\n      return <section {...rest}/>\n\n    let containerClass = \"swagger-container\" + (full ? \"-full\" : \"\")\n    return (\n      <section {...rest} className={xclass(rest.className, containerClass)}/>\n    )\n  }\n}\n\nContainer.propTypes = {\n  fullscreen: PropTypes.bool,\n  full: PropTypes.bool,\n  className: PropTypes.string\n}\n\nconst DEVICES = {\n  \"mobile\": \"\",\n  \"tablet\": \"-tablet\",\n  \"desktop\": \"-desktop\",\n  \"large\": \"-hd\"\n}\n\nexport class Col extends React.Component {\n\n  render() {\n    const {\n      hide,\n      keepContents,\n      /* we don't want these in the `rest` object that passes to the final component,\n         since React now complains. So we extract them */\n      /* eslint-disable no-unused-vars */\n      mobile,\n      tablet,\n      desktop,\n      large,\n      /* eslint-enable no-unused-vars */\n      ...rest\n    } = this.props\n\n    if(hide && !keepContents)\n      return <span/>\n\n    let classesAr = []\n\n    for (let device in DEVICES) {\n      if (!Object.prototype.hasOwnProperty.call(DEVICES, device)) {\n        continue\n      }\n      let deviceClass = DEVICES[device]\n      if(device in this.props) {\n        let val = this.props[device]\n\n        if(val < 1) {\n          classesAr.push(\"none\" + deviceClass)\n          continue\n        }\n\n        classesAr.push(\"block\" + deviceClass)\n        classesAr.push(\"col-\" + val + deviceClass)\n      }\n    }\n\n    if (hide) {\n      classesAr.push(\"hidden\")\n    }\n\n    let classes = xclass(rest.className, ...classesAr)\n\n    return (\n      <section {...rest} className={classes}/>\n    )\n  }\n\n}\n\nCol.propTypes = {\n  hide: PropTypes.bool,\n  keepContents: PropTypes.bool,\n  mobile: PropTypes.number,\n  tablet: PropTypes.number,\n  desktop: PropTypes.number,\n  large: PropTypes.number,\n  className: PropTypes.string\n}\n\nexport class Row extends React.Component {\n\n  render() {\n    return <div {...this.props} className={xclass(this.props.className, \"wrapper\")} />\n  }\n\n}\n\nRow.propTypes = {\n  className: PropTypes.string\n}\n\nexport class Button extends React.Component {\n\n  static propTypes = {\n    className: PropTypes.string\n  }\n\n  static defaultProps = {\n    className: \"\"\n  }\n\n  render() {\n    return <button {...this.props} className={xclass(this.props.className, \"button\")} />\n  }\n\n}\n\n\nexport const TextArea = (props) => <textarea {...props} />\n\nexport const Input = (props) => <input {...props} />\n\nexport class Select extends React.Component {\n  static propTypes = {\n    allowedValues: PropTypes.array,\n    value: PropTypes.any,\n    onChange: PropTypes.func,\n    multiple: PropTypes.bool,\n    allowEmptyValue: PropTypes.bool,\n    className: PropTypes.string,\n    disabled: PropTypes.bool,\n  }\n\n  static defaultProps = {\n    multiple: false,\n    allowEmptyValue: true\n  }\n\n  constructor(props, context) {\n    super(props, context)\n\n    let value\n\n    if (props.value) {\n      value = props.value\n    } else {\n      value = props.multiple ? [\"\"] : \"\"\n    }\n\n    this.state = { value: value }\n  }\n\n  onChange = (e) => {\n    let { onChange, multiple } = this.props\n    let options = [].slice.call(e.target.options)\n    let value\n\n\n    if (multiple) {\n      value = options.filter(function (option) {\n          return option.selected\n        })\n        .map(function (option){\n          return option.value\n        })\n    } else {\n      value = e.target.value\n    }\n\n    this.setState({value: value})\n\n    onChange && onChange(value)\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    // TODO: this puts us in a weird area btwn un/controlled selection... review\n    if(nextProps.value !== this.props.value) {\n      this.setState({ value: nextProps.value })\n    }\n  }\n\n  render(){\n    let { allowedValues, multiple, allowEmptyValue, disabled } = this.props\n    let value = this.state.value?.toJS?.() || this.state.value\n\n    return (\n      <select className={this.props.className} multiple={ multiple } value={value} onChange={ this.onChange } disabled={disabled} >\n        { allowEmptyValue ? <option value=\"\">--</option> : null }\n        {\n          allowedValues.map(function (item, key) {\n            return <option key={ key } value={ String(item) }>{ String(item) }</option>\n          })\n        }\n      </select>\n    )\n  }\n}\n\nexport class Link extends React.Component {\n\n  render() {\n    return <a {...this.props} rel=\"noopener noreferrer\" className={xclass(this.props.className, \"link\")}/>\n  }\n\n}\n\nLink.propTypes = {\n  className: PropTypes.string\n}\n\nconst NoMargin = ({children}) => <div className=\"no-margin\"> {children} </div>\n\nNoMargin.propTypes = {\n  children: PropTypes.node\n}\n\nexport class Collapse extends React.Component {\n\n  static propTypes = {\n    isOpened: PropTypes.bool,\n    children: PropTypes.node.isRequired,\n    animated: PropTypes.bool\n  }\n\n  static defaultProps = {\n    isOpened: false,\n    animated: false\n  }\n\n  renderNotAnimated() {\n    if(!this.props.isOpened)\n      return <noscript/>\n    return (\n      <NoMargin>\n        {this.props.children}\n      </NoMargin>\n    )\n  }\n\n  render() {\n    let { animated, isOpened, children } = this.props\n\n    if(!animated)\n      return this.renderNotAnimated()\n\n    children = isOpened ? children : null\n    return (\n      <NoMargin>\n        {children}\n      </NoMargin>\n    )\n  }\n\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link } from \"core/components/layout-utils\"\n\nexport default class Overview extends React.Component {\n\n  constructor(...args) {\n    super(...args)\n    this.setTagShown = this._setTagShown.bind(this)\n  }\n\n  _setTagShown(showTagId, shown) {\n    this.props.layoutActions.show(showTagId, shown)\n  }\n\n  showOp(key, shown) {\n    let { layoutActions } = this.props\n    layoutActions.show(key, shown)\n  }\n\n  render() {\n    let { specSelectors, layoutSelectors, layoutActions, getComponent } = this.props\n    let taggedOps = specSelectors.taggedOperations()\n\n    const Collapse = getComponent(\"Collapse\")\n\n    return (\n        <div>\n          <h4 className=\"overview-title\">Overview</h4>\n\n          {\n            taggedOps.map( (tagObj, tag) => {\n              let operations = tagObj.get(\"operations\")\n\n              let showTagId = [\"overview-tags\", tag]\n              let showTag = layoutSelectors.isShown(showTagId, true)\n              let toggleShow = ()=> layoutActions.show(showTagId, !showTag)\n\n              return (\n                <div key={\"overview-\"+tag}>\n\n\n                  <h4 onClick={toggleShow} className=\"link overview-tag\"> {showTag ? \"-\" : \"+\"}{tag}</h4>\n\n                  <Collapse isOpened={showTag} animated>\n                    {\n                      operations.map( op => {\n                        let { path, method, id } = op.toObject() // toObject is shallow\n                        let showOpIdPrefix = \"operations\"\n                        let showOpId = id\n                        let shown = layoutSelectors.isShown([showOpIdPrefix, showOpId])\n                        return <OperationLink key={id}\n                                              path={path}\n                                              method={method}\n                                              id={path + \"-\" + method}\n                                              shown={shown}\n                                              showOpId={showOpId}\n                                              showOpIdPrefix={showOpIdPrefix}\n                                              href={`#operation-${showOpId}`}\n                                              onClick={layoutActions.show} />\n                      }).toArray()\n                    }\n                  </Collapse>\n\n                </div>\n                )\n            }).toArray()\n          }\n\n          { taggedOps.size < 1 && <h3> No operations defined in spec! </h3> }\n        </div>\n    )\n  }\n\n}\n\nOverview.propTypes = {\n  layoutSelectors: PropTypes.object.isRequired,\n  specSelectors: PropTypes.object.isRequired,\n  layoutActions: PropTypes.object.isRequired,\n  getComponent: PropTypes.func.isRequired\n}\n\nexport class OperationLink extends React.Component {\n\n  constructor(props) {\n    super(props)\n    this.onClick = this._onClick.bind(this)\n  }\n\n  _onClick() {\n    let { showOpId, showOpIdPrefix, onClick, shown } = this.props\n    onClick([showOpIdPrefix, showOpId], !shown)\n  }\n\n  render() {\n    let { id, method, shown, href } = this.props\n\n    return (\n      <Link href={ href } onClick={this.onClick} className={`block opblock-link ${shown ? \"shown\" : \"\"}`}>\n        <div>\n          <small className={`bold-label-${method}`}>{method.toUpperCase()}</small>\n          <span className=\"bold-label\" >{id}</span>\n        </div>\n      </Link>\n    )\n  }\n\n}\n\nOperationLink.propTypes = {\n  href: PropTypes.string,\n  onClick: PropTypes.func,\n  id: PropTypes.string.isRequired,\n  method: PropTypes.string.isRequired,\n  shown: PropTypes.bool.isRequired,\n  showOpId: PropTypes.string.isRequired,\n  showOpIdPrefix: PropTypes.string.isRequired\n}\n", "// This component provides an interface that feels like an uncontrolled input\n// to consumers, while providing a `defaultValue` interface that initializes\n// the input's value using JavaScript value property APIs instead of React's \n// vanilla[0] implementation that uses HTML value attributes.\n//\n// This is useful in situations where we don't want to surface an input's value\n// into the HTML/CSS-exposed side of the DOM, for example to avoid sequential\n// input chaining attacks[1].\n// \n// [0]: https://github.com/facebook/react/blob/baff5cc2f69d30589a5dc65b089e47765437294b/fixtures/dom/src/components/fixtures/text-inputs/README.md\n// [1]: https://github.com/d0nutptr/sic\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class InitializedInput extends React.Component {\n  componentDidMount() {\n    // Set the element's `value` property (*not* the `value` attribute)\n    // once, on mount, if an `initialValue` is provided.\n    if(this.props.initialValue) {\n      this.inputRef.value = this.props.initialValue\n    }\n  }\n\n  render() {\n    // Filter out `value` and `defaultValue`, since we have our own\n    // `initialValue` interface that we provide.\n    // eslint-disable-next-line no-unused-vars, react/prop-types\n    const { value, defaultValue, initialValue, ...otherProps } = this.props\n    return <input {...otherProps} ref={c => this.inputRef = c} />\n  }\n}\n\nInitializedInput.propTypes = {\n  initialValue: PropTypes.string\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { sanitizeUrl } from \"core/utils\"\nimport { safeBuildUrl } from \"core/utils/url\"\n\n\nexport class InfoBasePath extends React.Component {\n  static propTypes = {\n    host: PropTypes.string,\n    basePath: PropTypes.string\n  }\n\n  render() {\n    let { host, basePath } = this.props\n\n    return (\n      <pre className=\"base-url\">\n        [ Base URL: {host}{basePath} ]\n      </pre>\n    )\n  }\n}\n\n\nclass Contact extends React.Component {\n  static propTypes = {\n    data: PropTypes.object,\n    getComponent: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    selectedServer: PropTypes.string,\n    url: PropTypes.string.isRequired,\n  }\n\n  render(){\n    let { data, getComponent, selectedServer, url: specUrl} = this.props\n    let name = data.get(\"name\") || \"the developer\"\n    let url = safeBuildUrl(data.get(\"url\"), specUrl, {selectedServer})\n    let email = data.get(\"email\")\n\n    const Link = getComponent(\"Link\")\n\n    return (\n      <div className=\"info__contact\">\n        { url && <div><Link href={ sanitizeUrl(url) } target=\"_blank\">{ name } - Website</Link></div> }\n        { email &&\n          <Link href={sanitizeUrl(`mailto:${email}`)}>\n            { url ? `Send email to ${name}` : `Contact ${name}`}\n          </Link>\n        }\n      </div>\n    )\n  }\n}\n\nclass License extends React.Component {\n  static propTypes = {\n    license: PropTypes.object,\n    getComponent: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    selectedServer: PropTypes.string,\n    url: PropTypes.string.isRequired,\n  }\n\n  render(){\n    let { license, getComponent, selectedServer, url: specUrl } = this.props\n\n    const Link = getComponent(\"Link\")\n    let name = license.get(\"name\") || \"License\"\n    let url = safeBuildUrl(license.get(\"url\"), specUrl, {selectedServer})\n\n    return (\n      <div className=\"info__license\">\n        {\n          url ? <Link target=\"_blank\" href={ sanitizeUrl(url) }>{ name }</Link>\n        : <span>{ name }</span>\n        }\n      </div>\n    )\n  }\n}\n\nexport class InfoUrl extends React.PureComponent {\n  static propTypes = {\n    url: PropTypes.string.isRequired,\n    getComponent: PropTypes.func.isRequired\n  }\n\n\n  render() {\n    const { url, getComponent } = this.props\n\n    const Link = getComponent(\"Link\")\n\n    return <Link target=\"_blank\" href={ sanitizeUrl(url) }><span className=\"url\"> { url }</span></Link>\n  }\n}\n\nexport default class Info extends React.Component {\n  static propTypes = {\n    info: PropTypes.object,\n    url: PropTypes.string,\n    host: PropTypes.string,\n    basePath: PropTypes.string,\n    externalDocs: ImPropTypes.map,\n    getComponent: PropTypes.func.isRequired,\n    oas3selectors: PropTypes.func,\n    selectedServer: PropTypes.string,\n  }\n\n  render() {\n    let { info, url, host, basePath, getComponent, externalDocs, selectedServer, url: specUrl } = this.props\n    let version = info.get(\"version\")\n    let description = info.get(\"description\")\n    let title = info.get(\"title\")\n    let termsOfServiceUrl = safeBuildUrl(info.get(\"termsOfService\"), specUrl, {selectedServer})\n    let contact = info.get(\"contact\")\n    let license = info.get(\"license\")\n    let rawExternalDocsUrl = externalDocs && externalDocs.get(\"url\")\n    let externalDocsUrl = safeBuildUrl(rawExternalDocsUrl, specUrl, {selectedServer})\n    let externalDocsDescription = externalDocs && externalDocs.get(\"description\")\n\n    const Markdown = getComponent(\"Markdown\", true)\n    const Link = getComponent(\"Link\")\n    const VersionStamp = getComponent(\"VersionStamp\")\n    const InfoUrl = getComponent(\"InfoUrl\")\n    const InfoBasePath = getComponent(\"InfoBasePath\")\n\n    return (\n      <div className=\"info\">\n        <hgroup className=\"main\">\n          <h2 className=\"title\" >{ title }\n            { version && <VersionStamp version={version}></VersionStamp> }\n          </h2>\n          { host || basePath ? <InfoBasePath host={ host } basePath={ basePath } /> : null }\n          { url && <InfoUrl getComponent={getComponent} url={url} /> }\n        </hgroup>\n\n        <div className=\"description\">\n          <Markdown source={ description } />\n        </div>\n\n        {\n          termsOfServiceUrl && <div className=\"info__tos\">\n            <Link target=\"_blank\" href={ sanitizeUrl(termsOfServiceUrl) }>Terms of service</Link>\n          </div>\n        }\n\n        {contact && contact.size ? <Contact getComponent={getComponent} data={ contact } selectedServer={selectedServer} url={url} /> : null }\n        {license && license.size ? <License getComponent={getComponent} license={ license } selectedServer={selectedServer} url={url}/> : null }\n        { externalDocsUrl ?\n            <Link className=\"info__extdocs\" target=\"_blank\" href={sanitizeUrl(externalDocsUrl)}>{externalDocsDescription || externalDocsUrl}</Link>\n        : null }\n\n      </div>\n    )\n  }\n\n}\n\nInfo.propTypes = {\n  title: PropTypes.any,\n  description: PropTypes.any,\n  version: PropTypes.any,\n  url: PropTypes.string\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class InfoContainer extends React.Component {\n\n  static propTypes = {\n    specActions: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    oas3Selectors: PropTypes.func.isRequired,\n  }\n\n  render () {\n    const {specSelectors, getComponent, oas3Selectors} = this.props\n\n    const info = specSelectors.info()\n    const url = specSelectors.url()\n    const basePath = specSelectors.basePath()\n    const host = specSelectors.host()\n    const externalDocs = specSelectors.externalDocs()\n    const selectedServer = oas3Selectors.selectedServer()\n\n    const Info = getComponent(\"info\")\n\n    return (\n      <div>\n        {info && info.count() ? (\n          <Info info={info} url={url} host={host} basePath={basePath} externalDocs={externalDocs}\n                getComponent={getComponent} selectedServer={selectedServer} />\n        ) : null}\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\n\n// Nothing by default- component can be overridden by another plugin.\n\nexport default class JumpToPath extends React.Component {\n  render() {\n    return null\n  }\n}\n", "import React from \"react\"\n\nexport default class Footer extends React.Component {\n  render() {\n    return (\n      <div className=\"footer\"></div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class FilterContainer extends React.Component {\n\n  static propTypes = {\n    specSelectors: PropTypes.object.isRequired,\n    layoutSelectors: PropTypes.object.isRequired,\n    layoutActions: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n  }\n\n  onFilterChange = (e) => {\n    const {target: {value}} = e\n    this.props.layoutActions.updateFilter(value)\n  }\n\n  render () {\n    const {specSelectors, layoutSelectors, getComponent} = this.props\n    const Col = getComponent(\"Col\")\n\n    const isLoading = specSelectors.loadingStatus() === \"loading\"\n    const isFailed = specSelectors.loadingStatus() === \"failed\"\n    const filter = layoutSelectors.currentFilter()\n\n    const classNames = [\"operation-filter-input\"]\n    if (isFailed) classNames.push(\"failed\")\n    if (isLoading) classNames.push(\"loading\")\n\n    return (\n      <div>\n        {filter === null || filter === false || filter === \"false\" ? null :\n          <div className=\"filter-container\">\n            <Col className=\"filter wrapper\" mobile={12}>\n              <input className={classNames.join(\" \")} placeholder=\"Filter by tag\" type=\"text\"\n                     onChange={this.onFilterChange} value={filter === true || filter === \"true\" ? \"\" : filter}\n                     disabled={isLoading}/>\n            </Col>\n          </div>\n        }\n      </div>\n    )\n  }\n}\n", "import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { fromJS, List } from \"immutable\"\nimport { getSampleSchema } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\n\nconst NOOP = Function.prototype\n\nexport default class ParamBody extends PureComponent {\n\n  static propTypes = {\n    param: PropTypes.object,\n    onChange: PropTypes.func,\n    onChangeConsumes: PropTypes.func,\n    consumes: PropTypes.object,\n    consumesValue: PropTypes.string,\n    fn: PropTypes.object.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    isExecute: PropTypes.bool,\n    specSelectors: PropTypes.object.isRequired,\n    pathMethod: PropTypes.array.isRequired\n  };\n\n  static defaultProp = {\n    consumes: fromJS([\"application/json\"]),\n    param: fromJS({}),\n    onChange: NOOP,\n    onChangeConsumes: NOOP,\n  };\n\n  constructor(props, context) {\n    super(props, context)\n\n    this.state = {\n      isEditBox: false,\n      value: \"\"\n    }\n\n  }\n\n  componentDidMount() {\n    this.updateValues.call(this, this.props)\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    this.updateValues.call(this, nextProps)\n  }\n\n  updateValues = (props) => {\n    let { param, isExecute, consumesValue=\"\" } = props\n    let isXml = /xml/i.test(consumesValue)\n    let isJson = /json/i.test(consumesValue)\n    let paramValue = isXml ? param.get(\"value_xml\") : param.get(\"value\")\n\n    if ( paramValue !== undefined ) {\n      let val = !paramValue && isJson ? \"{}\" : paramValue\n      this.setState({ value: val })\n      this.onChange(val, {isXml: isXml, isEditBox: isExecute})\n    } else {\n      if (isXml) {\n        this.onChange(this.sample(\"xml\"), {isXml: isXml, isEditBox: isExecute})\n      } else {\n        this.onChange(this.sample(), {isEditBox: isExecute})\n      }\n    }\n  }\n\n  sample = (xml) => {\n    let { param, fn:{inferSchema} } = this.props\n    let schema = inferSchema(param.toJS())\n\n    return getSampleSchema(schema, xml, {\n      includeWriteOnly: true\n    })\n  }\n\n  onChange = (value, { isEditBox, isXml }) => {\n    this.setState({value, isEditBox})\n    this._onChange(value, isXml)\n  }\n\n  _onChange = (val, isXml) => { (this.props.onChange || NOOP)(val, isXml) }\n\n  handleOnChange = e => {\n    const {consumesValue} = this.props\n    const isXml = /xml/i.test(consumesValue)\n    const inputValue = e.target.value\n    this.onChange(inputValue, {isXml, isEditBox: this.state.isEditBox})\n  }\n\n  toggleIsEditBox = () => this.setState( state => ({isEditBox: !state.isEditBox}))\n\n  render() {\n    let {\n      onChangeConsumes,\n      param,\n      isExecute,\n      specSelectors,\n      pathMethod,\n      getConfigs,\n      getComponent,\n    } = this.props\n\n    const Button = getComponent(\"Button\")\n    const TextArea = getComponent(\"TextArea\")\n    const HighlightCode = getComponent(\"highlightCode\")\n    const ContentType = getComponent(\"contentType\")\n    // for domains where specSelectors not passed\n    let parameter = specSelectors ? specSelectors.parameterWithMetaByIdentity(pathMethod, param) : param\n    let errors = parameter.get(\"errors\", List())\n    let consumesValue = specSelectors.contentTypeValues(pathMethod).get(\"requestContentType\")\n    let consumes = this.props.consumes && this.props.consumes.size ? this.props.consumes : ParamBody.defaultProp.consumes\n\n    let { value, isEditBox } = this.state\n    let language = null\n    let testValueForJson = getKnownSyntaxHighlighterLanguage(value)\n    if (testValueForJson) {\n      language = \"json\"\n    }\n\n    return (\n      <div className=\"body-param\" data-param-name={param.get(\"name\")} data-param-in={param.get(\"in\")}>\n        {\n          isEditBox && isExecute\n            ? <TextArea className={ \"body-param__text\" + ( errors.count() ? \" invalid\" : \"\")} value={value} onChange={ this.handleOnChange }/>\n            : (value && <HighlightCode className=\"body-param__example\"\n                          language={ language }\n                          getConfigs={ getConfigs }\n                          value={ value }/>)\n        }\n        <div className=\"body-param-options\">\n          {\n            !isExecute ? null\n                       : <div className=\"body-param-edit\">\n                        <Button className={isEditBox ? \"btn cancel body-param__example-edit\" : \"btn edit body-param__example-edit\"}\n                                 onClick={this.toggleIsEditBox}>{ isEditBox ? \"Cancel\" : \"Edit\"}\n                         </Button>\n                         </div>\n          }\n          <label htmlFor=\"\">\n            <span>Parameter content type</span>\n            <ContentType\n              value={ consumesValue }\n              contentTypes={ consumes }\n              onChange={onChangeConsumes}\n              className=\"body-param-content-type\"\n              ariaLabel=\"Parameter content type\" />\n          </label>\n        </div>\n\n      </div>\n    )\n\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { CopyToClipboard } from \"react-copy-to-clipboard\"\nimport {SyntaxHighlighter, getStyle} from \"core/syntax-highlighting\"\nimport get from \"lodash/get\"\nimport { requestSnippetGenerator_curl_bash } from \"../plugins/request-snippets/fn\"\n\nexport default class Curl extends React.Component {\n  static propTypes = {\n    getConfigs: PropTypes.func.isRequired,\n    request: PropTypes.object.isRequired\n  }\n\n  render() {\n    let { request, getConfigs } = this.props\n    let curl = requestSnippetGenerator_curl_bash(request)\n\n    const config = getConfigs()\n\n    const curlBlock = get(config, \"syntaxHighlight.activated\")\n      ? <SyntaxHighlighter\n          language=\"bash\"\n          className=\"curl microlight\"\n          onWheel={this.preventYScrollingBeyondElement}\n          style={getStyle(get(config, \"syntaxHighlight.theme\"))}\n          >\n          {curl}\n        </SyntaxHighlighter>\n      :\n      <textarea readOnly={true} className=\"curl\" value={curl}></textarea>\n\n    return (\n      <div className=\"curl-command\">\n        <h4>Curl</h4>\n        <div className=\"copy-to-clipboard\">\n            <CopyToClipboard text={curl}><button/></CopyToClipboard>\n        </div>\n        <div>\n          {curlBlock}\n        </div>\n      </div>\n    )\n  }\n\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Schemes extends React.Component {\n\n  static propTypes = {\n    specActions: PropTypes.object.isRequired,\n    schemes: PropTypes.object.isRequired,\n    currentScheme: PropTypes.string.isRequired,\n    path: PropTypes.string,\n    method: PropTypes.string,\n  }\n\n  UNSAFE_componentWillMount() {\n    let { schemes } = this.props\n\n    //fire 'change' event to set default 'value' of select\n    this.setScheme(schemes.first())\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    if ( !this.props.currentScheme || !nextProps.schemes.includes(this.props.currentScheme) ) {\n      // if we don't have a selected currentScheme or if our selected scheme is no longer an option,\n      // then fire 'change' event and select the first scheme in the list of options\n      this.setScheme(nextProps.schemes.first())\n    }\n  }\n\n  onChange =( e ) => {\n    this.setScheme( e.target.value )\n  }\n\n  setScheme = ( value ) => {\n    let { path, method, specActions } = this.props\n\n    specActions.setScheme( value, path, method )\n  }\n\n  render() {\n    let { schemes, currentScheme } = this.props\n\n    return (\n      <label htmlFor=\"schemes\">\n        <span className=\"schemes-title\">Schemes</span>\n        <select onChange={ this.onChange } value={currentScheme}>\n          { schemes.valueSeq().map(\n            ( scheme ) => <option value={ scheme } key={ scheme }>{ scheme }</option>\n          ).toArray()}\n        </select>\n      </label>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class SchemesContainer extends React.Component {\n\n  static propTypes = {\n    specActions: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired\n  }\n\n  render () {\n    const {specActions, specSelectors, getComponent} = this.props\n\n    const currentScheme = specSelectors.operationScheme()\n    const schemes = specSelectors.schemes()\n\n    const Schemes = getComponent(\"schemes\")\n\n    const schemesArePresent = schemes && schemes.size\n\n    return schemesArePresent ? (\n        <Schemes\n          currentScheme={currentScheme}\n          schemes={schemes}\n          specActions={specActions}\n        />\n      ) : null\n  }\n}\n", "import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport Im from \"immutable\"\n\nexport default class ModelCollapse extends Component {\n  static propTypes = {\n    collapsedContent: PropTypes.any,\n    expanded: PropTypes.bool,\n    children: PropTypes.any,\n    title: PropTypes.element,\n    modelName: PropTypes.string,\n    classes: PropTypes.string,\n    onToggle: PropTypes.func,\n    hideSelfOnExpand: PropTypes.bool,\n    layoutActions: PropTypes.object,\n    layoutSelectors: PropTypes.object.isRequired,\n    specPath: ImPropTypes.list.isRequired,\n  }\n\n  static defaultProps = {\n    collapsedContent: \"{...}\",\n    expanded: false,\n    title: null,\n    onToggle: () => {},\n    hideSelfOnExpand: false,\n    specPath: Im.List([]),\n  }\n\n  constructor(props, context) {\n    super(props, context)\n\n    let { expanded, collapsedContent } = this.props\n\n    this.state = {\n      expanded : expanded,\n      collapsedContent: collapsedContent || ModelCollapse.defaultProps.collapsedContent\n    }\n  }\n\n  componentDidMount() {\n    const { hideSelfOnExpand, expanded, modelName } = this.props\n    if(hideSelfOnExpand && expanded) {\n      // We just mounted pre-expanded, and we won't be going back..\n      // So let's give our parent an `onToggle` call..\n      // Since otherwise it will never be called.\n      this.props.onToggle(modelName, expanded)\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps){\n    if(this.props.expanded !== nextProps.expanded){\n        this.setState({expanded: nextProps.expanded})\n    }\n  }\n\n  toggleCollapsed=()=>{\n    if(this.props.onToggle){\n      this.props.onToggle(this.props.modelName,!this.state.expanded)\n    }\n\n    this.setState({\n      expanded: !this.state.expanded\n    })\n  }\n\n  onLoad = (ref) => {\n    if (ref && this.props.layoutSelectors) {\n      const scrollToKey = this.props.layoutSelectors.getScrollToKey()\n\n      if( Im.is(scrollToKey, this.props.specPath) ) this.toggleCollapsed()\n      this.props.layoutActions.readyToScroll(this.props.specPath, ref.parentElement)\n    }\n  }\n\n  render () {\n    const { title, classes } = this.props\n\n    if(this.state.expanded ) {\n      if(this.props.hideSelfOnExpand) {\n        return <span className={classes || \"\"}>\n          {this.props.children}\n        </span>\n      }\n    }\n\n    return (\n      <span className={classes || \"\"} ref={this.onLoad}>\n        <button aria-expanded={this.state.expanded} className=\"model-box-control\" onClick={this.toggleCollapsed}>\n          { title && <span className=\"pointer\">{title}</span> }\n          <span className={ \"model-toggle\" + ( this.state.expanded ? \"\" : \" collapsed\" ) }></span>\n          { !this.state.expanded && <span>{this.state.collapsedContent}</span> }\n        </button>\n\n        { this.state.expanded && this.props.children }\n      </span>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport cx from \"classnames\"\nimport randomBytes from \"randombytes\"\n\nexport default class ModelExample extends React.Component {\n  static propTypes = {\n    getComponent: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    schema: PropTypes.object.isRequired,\n    example: PropTypes.any.isRequired,\n    isExecute: PropTypes.bool,\n    getConfigs: PropTypes.func.isRequired,\n    specPath: ImPropTypes.list.isRequired,\n    includeReadOnly: PropTypes.bool,\n    includeWriteOnly: PropTypes.bool,\n  }\n\n  constructor(props, context) {\n    super(props, context)\n    let { getConfigs, isExecute } = this.props\n    let { defaultModelRendering } = getConfigs()\n\n    let activeTab = defaultModelRendering\n\n    if (defaultModelRendering !== \"example\" && defaultModelRendering !== \"model\") {\n      activeTab = \"example\"\n    }\n\n    if(isExecute) {\n      activeTab = \"example\"\n    }\n\n    this.state = {\n      activeTab,\n    }\n  }\n\n  activeTab = ( e ) => {\n    let { target : { dataset : { name } } } = e\n\n    this.setState({\n      activeTab: name\n    })\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    if (\n      nextProps.isExecute &&\n      !this.props.isExecute &&\n      this.props.example\n    ) {\n      this.setState({ activeTab: \"example\" })\n    }\n  }\n\n  render() {\n    let { getComponent, specSelectors, schema, example, isExecute, getConfigs, specPath, includeReadOnly, includeWriteOnly } = this.props\n    let { defaultModelExpandDepth } = getConfigs()\n    const ModelWrapper = getComponent(\"ModelWrapper\")\n    const HighlightCode = getComponent(\"highlightCode\")\n    const exampleTabId = randomBytes(5).toString(\"base64\")\n    const examplePanelId = randomBytes(5).toString(\"base64\")\n    const modelTabId = randomBytes(5).toString(\"base64\")\n    const modelPanelId = randomBytes(5).toString(\"base64\")\n\n    let isOAS3 = specSelectors.isOAS3()\n\n    return (\n      <div className=\"model-example\">\n        <ul className=\"tab\" role=\"tablist\">\n          <li className={cx(\"tabitem\", { active: this.state.activeTab === \"example\" })} role=\"presentation\">\n            <button\n              aria-controls={examplePanelId}\n              aria-selected={this.state.activeTab === \"example\"}\n              className=\"tablinks\"\n              data-name=\"example\"\n              id={exampleTabId}\n              onClick={ this.activeTab }\n              role=\"tab\"\n            >\n              {isExecute ? \"Edit Value\" : \"Example Value\"}\n            </button>\n          </li>\n          { schema && (\n            <li className={cx(\"tabitem\", { active: this.state.activeTab === \"model\" })} role=\"presentation\">\n              <button\n                aria-controls={modelPanelId}\n                aria-selected={this.state.activeTab === \"model\"}\n                className={cx(\"tablinks\", { inactive: isExecute })}\n                data-name=\"model\"\n                id={modelTabId}\n                onClick={ this.activeTab }\n                role=\"tab\"\n              >\n                {isOAS3 ? \"Schema\" : \"Model\" }\n              </button>\n            </li>\n          )}\n        </ul>\n        {this.state.activeTab === \"example\" && (\n          <div\n            aria-hidden={this.state.activeTab !== \"example\"}\n            aria-labelledby={exampleTabId}\n            data-name=\"examplePanel\"\n            id={examplePanelId}\n            role=\"tabpanel\"\n            tabIndex=\"0\"\n          >\n            {example ? example : (\n              <HighlightCode value=\"(no example available)\" getConfigs={ getConfigs } />\n            )}\n          </div>\n        )}\n\n        {this.state.activeTab === \"model\" && (\n          <div\n            aria-hidden={this.state.activeTab === \"example\"}\n            aria-labelledby={modelTabId}\n            data-name=\"modelPanel\"\n            id={modelPanelId}\n            role=\"tabpanel\"\n            tabIndex=\"0\"\n          >\n            <ModelWrapper\n              schema={ schema }\n              getComponent={ getComponent }\n              getConfigs={ getConfigs }\n              specSelectors={ specSelectors }\n              expandDepth={ defaultModelExpandDepth }\n              specPath={specPath}\n              includeReadOnly = {includeReadOnly}\n              includeWriteOnly = {includeWriteOnly}\n            />\n          </div>\n        )}\n      </div>\n    )\n  }\n\n}\n", "import React, { Component, } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class ModelWrapper extends Component {\n\n  static propTypes = {\n    schema: PropTypes.object.isRequired,\n    name: PropTypes.string,\n    displayName: PropTypes.string,\n    fullPath: PropTypes.array.isRequired,\n    specPath: ImPropTypes.list.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    expandDepth: PropTypes.number,\n    layoutActions: PropTypes.object,\n    layoutSelectors: PropTypes.object.isRequired,\n    includeReadOnly: PropTypes.bool,\n    includeWriteOnly: PropTypes.bool,\n  }\n\n  onToggle = (name,isShown) => {\n    // If this prop is present, we'll have deepLinking for it\n    if(this.props.layoutActions) {\n      this.props.layoutActions.show(this.props.fullPath, isShown)\n    }\n  }\n\n  render(){\n    let { getComponent, getConfigs } = this.props\n    const Model = getComponent(\"Model\")\n\n    let expanded\n    if(this.props.layoutSelectors) {\n      // If this is prop is present, we'll have deepLinking for it\n      expanded = this.props.layoutSelectors.isShown(this.props.fullPath)\n    }\n\n    return <div className=\"model-box\">\n      <Model { ...this.props } getConfigs={ getConfigs } expanded={expanded} depth={ 1 } onToggle={ this.onToggle } expandDepth={ this.props.expandDepth || 0 }/>\n    </div>\n  }\n}\n", "import React, { Component } from \"react\"\nimport Im, { Map } from \"immutable\"\nimport PropTypes from \"prop-types\"\n\nexport default class Models extends Component {\n  static propTypes = {\n    getComponent: PropTypes.func,\n    specSelectors: PropTypes.object,\n    specActions: PropTypes.object.isRequired,\n    layoutSelectors: PropTypes.object,\n    layoutActions: PropTypes.object,\n    getConfigs: PropTypes.func.isRequired\n  }\n\n  getSchemaBasePath = () => {\n    const isOAS3 = this.props.specSelectors.isOAS3()\n    return isOAS3 ? [\"components\", \"schemas\"] : [\"definitions\"]\n  }\n\n  getCollapsedContent = () => {\n    return \" \"\n  }\n\n  handleToggle = (name, isExpanded) => {\n    const { layoutActions } = this.props\n    layoutActions.show([...this.getSchemaBasePath(), name], isExpanded)\n    if(isExpanded) {\n      this.props.specActions.requestResolvedSubtree([...this.getSchemaBasePath(), name])\n    }\n  }\n\n  onLoadModels = (ref) => {\n    if (ref) {\n      this.props.layoutActions.readyToScroll(this.getSchemaBasePath(), ref)\n    }\n  }\n\n  onLoadModel = (ref) => {\n    if (ref) {\n      const name = ref.getAttribute(\"data-name\")\n      this.props.layoutActions.readyToScroll([...this.getSchemaBasePath(), name], ref)\n    }\n  }\n\n  render(){\n    let { specSelectors, getComponent, layoutSelectors, layoutActions, getConfigs } = this.props\n    let definitions = specSelectors.definitions()\n    let { docExpansion, defaultModelsExpandDepth } = getConfigs()\n    if (!definitions.size || defaultModelsExpandDepth < 0) return null\n\n    const specPathBase = this.getSchemaBasePath()\n    let showModels = layoutSelectors.isShown(specPathBase, defaultModelsExpandDepth > 0 && docExpansion !== \"none\")\n    const isOAS3 = specSelectors.isOAS3()\n\n    const ModelWrapper = getComponent(\"ModelWrapper\")\n    const Collapse = getComponent(\"Collapse\")\n    const ModelCollapse = getComponent(\"ModelCollapse\")\n    const JumpToPath = getComponent(\"JumpToPath\", true)\n\n    return <section className={ showModels ? \"models is-open\" : \"models\"} ref={this.onLoadModels}>\n      <h4>\n        <button\n          aria-expanded={showModels}\n          className=\"models-control\"\n          onClick={() => layoutActions.show(specPathBase, !showModels)}\n        >\n          <span>{isOAS3 ? \"Schemas\" : \"Models\"}</span>\n          <svg width=\"20\" height=\"20\" aria-hidden=\"true\" focusable=\"false\">\n            <use xlinkHref={showModels ? \"#large-arrow-up\" : \"#large-arrow-down\"} />\n          </svg>\n        </button>\n      </h4>\n      <Collapse isOpened={showModels}>\n        {\n          definitions.entrySeq().map(([name])=>{\n\n            const fullPath = [...specPathBase, name]\n            const specPath = Im.List(fullPath)\n\n            const schemaValue = specSelectors.specResolvedSubtree(fullPath)\n            const rawSchemaValue = specSelectors.specJson().getIn(fullPath)\n\n            const schema = Map.isMap(schemaValue) ? schemaValue : Im.Map()\n            const rawSchema = Map.isMap(rawSchemaValue) ? rawSchemaValue : Im.Map()\n\n            const displayName = schema.get(\"title\") || rawSchema.get(\"title\") || name\n            const isShown = layoutSelectors.isShown(fullPath, false)\n\n            if( isShown && (schema.size === 0 && rawSchema.size > 0) ) {\n              // Firing an action in a container render is not great,\n              // but it works for now.\n              this.props.specActions.requestResolvedSubtree(fullPath)\n            }\n\n            const content = <ModelWrapper name={ name }\n              expandDepth={ defaultModelsExpandDepth }\n              schema={ schema || Im.Map() }\n              displayName={displayName}\n              fullPath={fullPath}\n              specPath={specPath}\n              getComponent={ getComponent }\n              specSelectors={ specSelectors }\n              getConfigs = {getConfigs}\n              layoutSelectors = {layoutSelectors}\n              layoutActions = {layoutActions}\n              includeReadOnly = {true}\n              includeWriteOnly = {true}/>\n\n            const title = <span className=\"model-box\">\n              <span className=\"model model-title\">\n                {displayName}\n              </span>\n            </span>\n\n            return <div id={ `model-${name}` } className=\"model-container\" key={ `models-section-${name}` }\n                    data-name={name} ref={this.onLoadModel} >\n              <span className=\"models-jump-to-path\"><JumpToPath specPath={specPath} /></span>\n              <ModelCollapse\n                classes=\"model-box\"\n                collapsedContent={this.getCollapsedContent(name)}\n                onToggle={this.handleToggle}\n                title={title}\n                displayName={displayName}\n                modelName={name}\n                specPath={specPath}\n                layoutSelectors={layoutSelectors}\n                layoutActions={layoutActions}\n                hideSelfOnExpand={true}\n                expanded={ defaultModelsExpandDepth > 0 && isShown }\n                >{content}</ModelCollapse>\n              </div>\n          }).toArray()\n        }\n      </Collapse>\n    </section>\n  }\n}\n", "import React from \"react\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst EnumModel = ({ value, getComponent }) => {\n  let ModelCollapse = getComponent(\"ModelCollapse\")\n  let collapsedContent = <span>Array [ { value.count() } ]</span>\n  return <span className=\"prop-enum\">\n    Enum:<br />\n    <ModelCollapse collapsedContent={ collapsedContent }>\n      [ { value.join(\", \") } ]\n    </ModelCollapse>\n  </span>\n}\nEnumModel.propTypes = {\n  value: ImPropTypes.iterable,\n  getComponent: ImPropTypes.func\n}\n\nexport default EnumModel", "import React, { Component, } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst braceOpen = \"{\"\nconst braceClose = \"}\"\nconst propClass = \"property\"\n\nexport default class ObjectModel extends Component {\n  static propTypes = {\n    schema: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    expanded: PropTypes.bool,\n    onToggle: PropTypes.func,\n    specSelectors: PropTypes.object.isRequired,\n    name: PropTypes.string,\n    displayName: PropTypes.string,\n    isRef: PropTypes.bool,\n    expandDepth: PropTypes.number,\n    depth: PropTypes.number,\n    specPath: ImPropTypes.list.isRequired,\n    includeReadOnly: PropTypes.bool,\n    includeWriteOnly: PropTypes.bool,\n  }\n\n  render(){\n    let { schema, name, displayName, isRef, getComponent, getConfigs, depth, onToggle, expanded, specPath, ...otherProps } = this.props\n    let { specSelectors,expandDepth, includeReadOnly, includeWriteOnly} = otherProps\n    const { isOAS3 } = specSelectors\n\n    if(!schema) {\n      return null\n    }\n\n    const { showExtensions } = getConfigs()\n\n    let description = schema.get(\"description\")\n    let properties = schema.get(\"properties\")\n    let additionalProperties = schema.get(\"additionalProperties\")\n    let title = schema.get(\"title\") || displayName || name\n    let requiredProperties = schema.get(\"required\")\n    let infoProperties = schema\n      .filter( ( v, key) => [\"maxProperties\", \"minProperties\", \"nullable\", \"example\"].indexOf(key) !== -1 )\n    let deprecated = schema.get(\"deprecated\")\n\n    const JumpToPath = getComponent(\"JumpToPath\", true)\n    const Markdown = getComponent(\"Markdown\", true)\n    const Model = getComponent(\"Model\")\n    const ModelCollapse = getComponent(\"ModelCollapse\")\n    const Property = getComponent(\"Property\")\n\n    const JumpToPathSection = () => {\n      return <span className=\"model-jump-to-path\"><JumpToPath specPath={specPath} /></span>\n    }\n    const collapsedContent = (<span>\n        <span>{ braceOpen }</span>...<span>{ braceClose }</span>\n        {\n          isRef ? <JumpToPathSection /> : \"\"\n        }\n    </span>)\n\n    const anyOf = specSelectors.isOAS3() ? schema.get(\"anyOf\") : null\n    const oneOf = specSelectors.isOAS3() ? schema.get(\"oneOf\") : null\n    const not = specSelectors.isOAS3() ? schema.get(\"not\") : null\n\n    const titleEl = title && <span className=\"model-title\">\n      { isRef && schema.get(\"$$ref\") && <span className=\"model-hint\">{ schema.get(\"$$ref\") }</span> }\n      <span className=\"model-title__text\">{ title }</span>\n    </span>\n\n    return <span className=\"model\">\n      <ModelCollapse\n        modelName={name}\n        title={titleEl}\n        onToggle = {onToggle}\n        expanded={ expanded ? true : depth <= expandDepth }\n        collapsedContent={ collapsedContent }>\n\n         <span className=\"brace-open object\">{ braceOpen }</span>\n          {\n            !isRef ? null : <JumpToPathSection />\n          }\n          <span className=\"inner-object\">\n            {\n              <table className=\"model\"><tbody>\n              {\n                !description ? null : <tr className=\"description\">\n                    <td>description:</td>\n                    <td>\n                      <Markdown source={ description } />\n                    </td>\n                  </tr>\n              }\n              {\n                !deprecated ? null :\n                  <tr className={\"property\"}>\n                    <td>\n                      deprecated:\n                    </td>\n                    <td>\n                      true\n                    </td>\n                  </tr>\n               \n              }\n              {\n                !(properties && properties.size) ? null : properties.entrySeq().filter(\n                    ([, value]) => {\n                      return (!value.get(\"readOnly\") || includeReadOnly) &&\n                        (!value.get(\"writeOnly\") || includeWriteOnly)\n                    }\n                ).map(\n                    ([key, value]) => {\n                      let isDeprecated = isOAS3() && value.get(\"deprecated\")\n                      let isRequired = List.isList(requiredProperties) && requiredProperties.contains(key)\n\n                      let classNames = [\"property-row\"]\n\n                      if (isDeprecated) {\n                        classNames.push(\"deprecated\")\n                      }\n\n                      if (isRequired) {\n                        classNames.push(\"required\")\n                      }\n\n                      return (<tr key={key} className={classNames.join(\" \")}>\n                        <td>\n                          { key }{ isRequired && <span className=\"star\">*</span> }\n                        </td>\n                        <td>\n                          <Model key={ `object-${name}-${key}_${value}` } { ...otherProps }\n                                 required={ isRequired }\n                                 getComponent={ getComponent }\n                                 specPath={specPath.push(\"properties\", key)}\n                                 getConfigs={ getConfigs }\n                                 schema={ value }\n                                 depth={ depth + 1 } />\n                        </td>\n                      </tr>)\n                    }).toArray()\n              }\n              {\n                // empty row befor extensions...\n                !showExtensions ? null : <tr><td>&nbsp;</td></tr>\n              }\n              {\n                !showExtensions ? null :\n                  schema.entrySeq().map(\n                    ([key, value]) => {\n                      if(key.slice(0,2) !== \"x-\") {\n                        return\n                      }\n\n                      const normalizedValue = !value ? null : value.toJS ? value.toJS() : value\n\n                      return (<tr key={key} className=\"extension\">\n                        <td>\n                          { key }\n                        </td>\n                        <td>\n                          { JSON.stringify(normalizedValue) }\n                        </td>\n                      </tr>)\n                    }).toArray()\n              }\n              {\n                !additionalProperties || !additionalProperties.size ? null\n                  : <tr>\n                    <td>{ \"< * >:\" }</td>\n                    <td>\n                      <Model { ...otherProps } required={ false }\n                             getComponent={ getComponent }\n                             specPath={specPath.push(\"additionalProperties\")}\n                             getConfigs={ getConfigs }\n                             schema={ additionalProperties }\n                             depth={ depth + 1 } />\n                    </td>\n                  </tr>\n              }\n              {\n                !anyOf ? null\n                  : <tr>\n                    <td>{ \"anyOf ->\" }</td>\n                    <td>\n                      {anyOf.map((schema, k) => {\n                        return <div key={k}><Model { ...otherProps } required={ false }\n                                 getComponent={ getComponent }\n                                 specPath={specPath.push(\"anyOf\", k)}\n                                 getConfigs={ getConfigs }\n                                 schema={ schema }\n                                 depth={ depth + 1 } /></div>\n                      })}\n                    </td>\n                  </tr>\n              }\n              {\n                !oneOf ? null\n                  : <tr>\n                    <td>{ \"oneOf ->\" }</td>\n                    <td>\n                      {oneOf.map((schema, k) => {\n                        return <div key={k}><Model { ...otherProps } required={ false }\n                                 getComponent={ getComponent }\n                                 specPath={specPath.push(\"oneOf\", k)}\n                                 getConfigs={ getConfigs }\n                                 schema={ schema }\n                                 depth={ depth + 1 } /></div>\n                      })}\n                    </td>\n                  </tr>\n              }\n              {\n                !not ? null\n                  : <tr>\n                    <td>{ \"not ->\" }</td>\n                    <td>\n                      <div>\n                        <Model { ...otherProps }\n                               required={ false }\n                               getComponent={ getComponent }\n                               specPath={specPath.push(\"not\")}\n                               getConfigs={ getConfigs }\n                               schema={ not }\n                               depth={ depth + 1 } />\n                      </div>\n                    </td>\n                  </tr>\n              }\n              </tbody></table>\n          }\n        </span>\n        <span className=\"brace-close\">{ braceClose }</span>\n      </ModelCollapse>\n      {\n        infoProperties.size ? infoProperties.entrySeq().map( ( [ key, v ] ) => <Property key={`${key}-${v}`} propKey={ key } propVal={ v } propClass={ propClass } />) : null\n      }\n    </span>\n  }\n}\n", "import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst propClass = \"property\"\n\nexport default class ArrayModel extends Component {\n  static propTypes = {\n    schema: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    name: PropTypes.string,\n    displayName: PropTypes.string,\n    required: PropTypes.bool,\n    expandDepth: PropTypes.number,\n    specPath: ImPropTypes.list.isRequired,\n    depth: PropTypes.number,\n    includeReadOnly: PropTypes.bool,\n    includeWriteOnly: PropTypes.bool,\n  }\n\n  render(){\n    let { getComponent, getConfigs, schema, depth, expandDepth, name, displayName, specPath } = this.props\n    let description = schema.get(\"description\")\n    let items = schema.get(\"items\")\n    let title = schema.get(\"title\") || displayName || name\n    let properties = schema.filter( ( v, key) => [\"type\", \"items\", \"description\", \"$$ref\"].indexOf(key) === -1 )\n\n    const Markdown = getComponent(\"Markdown\", true)\n    const ModelCollapse = getComponent(\"ModelCollapse\")\n    const Model = getComponent(\"Model\")\n    const Property = getComponent(\"Property\")\n\n    const titleEl = title &&\n      <span className=\"model-title\">\n        <span className=\"model-title__text\">{ title }</span>\n      </span>\n\n    /*\n    Note: we set `name={null}` in <Model> below because we don't want\n    the name of the current Model passed (and displayed) as the name of the array element Model\n    */\n\n    return <span className=\"model\">\n      <ModelCollapse title={titleEl} expanded={ depth <= expandDepth } collapsedContent=\"[...]\">\n        [\n          {\n            properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <Property key={`${key}-${v}`} propKey={ key } propVal={ v } propClass={ propClass } />) : null\n          }\n          {\n            !description ? (properties.size ? <div className=\"markdown\"></div> : null) :\n              <Markdown source={ description } />\n          }\n          <span>\n            <Model\n              { ...this.props }\n              getConfigs={ getConfigs }\n              specPath={specPath.push(\"items\")}\n              name={null}\n              schema={ items }\n              required={ false }\n              depth={ depth + 1 }\n            />\n          </span>\n        ]\n      </ModelCollapse>\n    </span>\n  }\n}\n", "import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { getExtensions } from \"core/utils\"\n\nconst propClass = \"property primitive\"\n\nexport default class Primitive extends Component {\n  static propTypes = {\n    schema: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired,\n    getConfigs: PropTypes.func.isRequired,\n    name: PropTypes.string,\n    displayName: PropTypes.string,\n    depth: PropTypes.number\n  }\n\n  render(){\n    let { schema, getComponent, getConfigs, name, displayName, depth } = this.props\n\n    const { showExtensions } = getConfigs()\n\n    if(!schema || !schema.get) {\n      // don't render if schema isn't correctly formed\n      return <div></div>\n    }\n\n    let type = schema.get(\"type\")\n    let format = schema.get(\"format\")\n    let xml = schema.get(\"xml\")\n    let enumArray = schema.get(\"enum\")\n    let title = schema.get(\"title\") || displayName || name\n    let description = schema.get(\"description\")\n    let extensions = getExtensions(schema)\n    let properties = schema\n      .filter( ( v, key) => [\"enum\", \"type\", \"format\", \"description\", \"$$ref\"].indexOf(key) === -1 )\n      .filterNot( (v, key) => extensions.has(key) )\n    const Markdown = getComponent(\"Markdown\", true)\n    const EnumModel = getComponent(\"EnumModel\")\n    const Property = getComponent(\"Property\")\n\n    return <span className=\"model\">\n      <span className=\"prop\">\n        { name && <span className={`${depth === 1 && \"model-title\"} prop-name`}>{ title }</span> }\n        <span className=\"prop-type\">{ type }</span>\n        { format && <span className=\"prop-format\">(${format})</span>}\n        {\n          properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <Property key={`${key}-${v}`} propKey={ key } propVal={ v } propClass={ propClass } />) : null\n        }\n        {\n          showExtensions && extensions.size ? extensions.entrySeq().map( ( [ key, v ] ) => <Property key={`${key}-${v}`} propKey={ key } propVal={ v } propClass={ propClass } />) : null\n        }\n        {\n          !description ? null :\n            <Markdown source={ description } />\n        }\n        {\n          xml && xml.size ? (<span><br /><span className={ propClass }>xml:</span>\n            {\n              xml.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} className={ propClass }><br/>&nbsp;&nbsp;&nbsp;{key}: { String(v) }</span>).toArray()\n            }\n          </span>): null\n        }\n        {\n          enumArray && <EnumModel value={ enumArray } getComponent={ getComponent } />\n        }\n      </span>\n    </span>\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const Property = ({ propKey, propVal, propClass }) => {\n    return (\n        <span className={ propClass }>\n          <br />{ propKey }: { String(propVal) }</span>\n    )\n}\nProperty.propTypes = {\n  propKey: PropTypes.string,\n  propVal: PropTypes.any,\n  propClass: PropTypes.string\n}\n\nexport default Property\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class TryItOutButton extends React.Component {\n\n  static propTypes = {\n    onTryoutClick: PropTypes.func,\n    onResetClick: PropTypes.func,\n    onCancelClick: PropTypes.func,\n    enabled: PropTypes.bool, // Try it out is enabled, ie: the user has access to the form\n    hasUserEditedBody: PropTypes.bool, // Try it out is enabled, ie: the user has access to the form\n    isOAS3: PropTypes.bool, // Try it out is enabled, ie: the user has access to the form\n  };\n\n  static defaultProps = {\n    onTryoutClick: Function.prototype,\n    onCancelClick: Function.prototype,\n    onResetClick: Function.prototype,\n    enabled: false,\n    hasUserEditedBody: false,\n    isOAS3: false,\n  };\n\n  render() {\n    const { onTryoutClick, onCancelClick, onResetClick, enabled, hasUserEditedBody, isOAS3 } = this.props\n\n    const showReset = isOAS3 && hasUserEditedBody\n    return (\n      <div className={showReset ? \"try-out btn-group\" : \"try-out\"}>\n        {\n          enabled ? <button className=\"btn try-out__btn cancel\" onClick={ onCancelClick }>Cancel</button>\n                  : <button className=\"btn try-out__btn\" onClick={ onTryoutClick }>Try it out </button>\n\n        }\n        {\n          showReset && <button className=\"btn try-out__btn reset\" onClick={ onResetClick }>Reset</button>\n        }\n      </div>\n    )\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class VersionPragmaFilter extends React.PureComponent {\n  static propTypes = {\n    isSwagger2: PropTypes.bool.isRequired,\n    isOAS3: PropTypes.bool.isRequired,\n    bypass: PropTypes.bool,\n    alsoShow: PropTypes.element,\n    children: PropTypes.any,\n  }\n\n  static defaultProps = {\n    alsoShow: null,\n    children: null,\n    bypass: false,\n  }\n\n  render() {\n    const { bypass, isSwagger2, isOAS3, alsoShow } = this.props\n\n    if(bypass) {\n      return <div>{ this.props.children }</div>\n    }\n\n    if(isSwagger2 && isOAS3) {\n      return <div className=\"version-pragma\">\n        {alsoShow}\n        <div className=\"version-pragma__message version-pragma__message--ambiguous\">\n          <div>\n            <h3>Unable to render this definition</h3>\n            <p><code>swagger</code> and <code>openapi</code> fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.</p>\n            <p>Supported version fields are <code>swagger: {\"\\\"2.0\\\"\"}</code> and those that match <code>openapi: 3.0.n</code> (for example, <code>openapi: 3.0.0</code>).</p>\n          </div>\n        </div>\n      </div>\n    }\n\n    if(!isSwagger2 && !isOAS3) {\n      return <div className=\"version-pragma\">\n        {alsoShow}\n        <div className=\"version-pragma__message version-pragma__message--missing\">\n          <div>\n            <h3>Unable to render this definition</h3>\n            <p>The provided definition does not specify a valid version field.</p>\n            <p>Please indicate a valid Swagger or OpenAPI version field. Supported version fields are <code>swagger: {\"\\\"2.0\\\"\"}</code> and those that match <code>openapi: 3.0.n</code> (for example, <code>openapi: 3.0.0</code>).</p>\n          </div>\n        </div>\n      </div>\n    }\n\n    return <div>{ this.props.children }</div>\n  }\n}\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst VersionStamp = ({ version }) => {\n  return <small><pre className=\"version\"> { version } </pre></small>\n}\n\nVersionStamp.propTypes = {\n  version: PropTypes.string.isRequired\n}\n\nexport default VersionStamp\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const DeepLink = ({ enabled, path, text }) => {\n    return (\n        <a className=\"nostyle\"\n          onClick={enabled ? (e) => e.preventDefault() : null}\n          href={enabled ? `#/${path}` : null}>\n          <span>{text}</span>\n        </a>\n    )\n}\nDeepLink.propTypes = {\n  enabled: PropTypes.bool,\n  isShown: PropTypes.bool,\n  path: PropTypes.string,\n  text: PropTypes.node\n}\n\nexport default DeepLink\n", "import React from \"react\"\nconst SvgAssets = () =>\n  <div>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" className=\"svg-assets\">\n      <defs>\n        <symbol viewBox=\"0 0 20 20\" id=\"unlocked\">\n          <path d=\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"></path>\n        </symbol>\n\n        <symbol viewBox=\"0 0 20 20\" id=\"locked\">\n          <path d=\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"/>\n        </symbol>\n\n        <symbol viewBox=\"0 0 20 20\" id=\"close\">\n          <path d=\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"/>\n        </symbol>\n\n        <symbol viewBox=\"0 0 20 20\" id=\"large-arrow\">\n          <path d=\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"/>\n        </symbol>\n\n        <symbol viewBox=\"0 0 20 20\" id=\"large-arrow-down\">\n          <path d=\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"/>\n        </symbol>\n\n        <symbol viewBox=\"0 0 20 20\" id=\"large-arrow-up\">\n          <path d=\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"/>\n        </symbol>\n\n        <symbol viewBox=\"0 0 24 24\" id=\"jump-to\">\n          <path d=\"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z\"/>\n        </symbol>\n\n        <symbol viewBox=\"0 0 24 24\" id=\"expand\">\n          <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"/>\n        </symbol>\n\n      </defs>\n    </svg>\n  </div>\n\nexport default SvgAssets\n", "import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class BaseLayout extends React.Component {\n\n  static propTypes = {\n    errSelectors: PropTypes.object.isRequired,\n    errActions: PropTypes.object.isRequired,\n    specSelectors: PropTypes.object.isRequired,\n    oas3Selectors: PropTypes.object.isRequired,\n    oas3Actions: PropTypes.object.isRequired,\n    getComponent: PropTypes.func.isRequired\n  }\n\n  render() {\n    let {errSelectors, specSelectors, getComponent} = this.props\n\n    let SvgAssets = getComponent(\"SvgAssets\")\n    let InfoContainer = getComponent(\"InfoContainer\", true)\n    let VersionPragmaFilter = getComponent(\"VersionPragmaFilter\")\n    let Operations = getComponent(\"operations\", true)\n    let Models = getComponent(\"Models\", true)\n    let Row = getComponent(\"Row\")\n    let Col = getComponent(\"Col\")\n    let Errors = getComponent(\"errors\", true)\n\n    const ServersContainer = getComponent(\"ServersContainer\", true)\n    const SchemesContainer = getComponent(\"SchemesContainer\", true)\n    const AuthorizeBtnContainer = getComponent(\"AuthorizeBtnContainer\", true)\n    const FilterContainer = getComponent(\"FilterContainer\", true)\n    let isSwagger2 = specSelectors.isSwagger2()\n    let isOAS3 = specSelectors.isOAS3()\n\n    const isSpecEmpty = !specSelectors.specStr()\n\n    const loadingStatus = specSelectors.loadingStatus()\n\n    let loadingMessage = null\n\n    if(loadingStatus === \"loading\") {\n      loadingMessage = <div className=\"info\">\n        <div className=\"loading-container\">\n          <div className=\"loading\"></div>\n        </div>\n      </div>\n    }\n\n    if(loadingStatus === \"failed\") {\n      loadingMessage = <div className=\"info\">\n        <div className=\"loading-container\">\n          <h4 className=\"title\">Failed to load API definition.</h4>\n          <Errors />\n        </div>\n      </div>\n    }\n\n    if (loadingStatus === \"failedConfig\") {\n      const lastErr = errSelectors.lastError()\n      const lastErrMsg = lastErr ? lastErr.get(\"message\") : \"\"\n      loadingMessage = <div className=\"info failed-config\">\n        <div className=\"loading-container\">\n          <h4 className=\"title\">Failed to load remote configuration.</h4>\n          <p>{lastErrMsg}</p>\n        </div>\n      </div>\n    }\n\n    if(!loadingMessage && isSpecEmpty) {\n      loadingMessage = <h4>No API definition provided.</h4>\n    }\n\n    if(loadingMessage) {\n      return <div className=\"swagger-ui\">\n        <div className=\"loading-container\">\n          {loadingMessage}\n        </div>\n      </div>\n    }\n\n    const servers = specSelectors.servers()\n    const schemes = specSelectors.schemes()\n\n    const hasServers = servers && servers.size\n    const hasSchemes = schemes && schemes.size\n    const hasSecurityDefinitions = !!specSelectors.securityDefinitions()\n\n    return (\n      <div className='swagger-ui'>\n        <SvgAssets />\n        <VersionPragmaFilter isSwagger2={isSwagger2} isOAS3={isOAS3} alsoShow={<Errors/>}>\n          <Errors/>\n          <Row className=\"information-container\">\n            <Col mobile={12}>\n              <InfoContainer/>\n            </Col>\n          </Row>\n\n          {hasServers || hasSchemes || hasSecurityDefinitions ? (\n            <div className=\"scheme-container\">\n              <Col className=\"schemes wrapper\" mobile={12}>\n                {hasServers ? (<ServersContainer />) : null}\n                {hasSchemes ? (<SchemesContainer />) : null}\n                {hasSecurityDefinitions ? (<AuthorizeBtnContainer />) : null}\n              </Col>\n            </div>\n          ) : null}\n\n          <FilterContainer/>\n\n          <Row>\n            <Col mobile={12} desktop={12} >\n              <Operations/>\n            </Col>\n          </Row>\n          <Row>\n            <Col mobile={12} desktop={12} >\n              <Models/>\n            </Col>\n          </Row>\n        </VersionPragmaFilter>\n      </div>\n    )\n  }\n}\n", "import React, { PureComponent, Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List, fromJS } from \"immutable\"\nimport cx from \"classnames\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport DebounceInput from \"react-debounce-input\"\nimport { stringify, getSampleSchema } from \"core/utils\"\n//import \"less/json-schema-form\"\n\nconst noop = ()=> {}\nconst JsonSchemaPropShape = {\n  getComponent: PropTypes.func.isRequired,\n  value: PropTypes.any,\n  onChange: PropTypes.func,\n  keyName: PropTypes.any,\n  fn: PropTypes.object.isRequired,\n  schema: PropTypes.object,\n  errors: ImPropTypes.list,\n  required: PropTypes.bool,\n  dispatchInitialValue: PropTypes.bool,\n  description: PropTypes.any,\n  disabled: PropTypes.bool,\n}\n\nconst JsonSchemaDefaultProps = {\n  value: \"\",\n  onChange: noop,\n  schema: {},\n  keyName: \"\",\n  required: false,\n  errors: List()\n}\n\nexport class JsonSchemaForm extends Component {\n\n  static propTypes = JsonSchemaPropShape\n  static defaultProps = JsonSchemaDefaultProps\n\n  componentDidMount() {\n    const { dispatchInitialValue, value, onChange } = this.props\n    if(dispatchInitialValue) {\n      onChange(value)\n    } else if(dispatchInitialValue === false) {\n      onChange(\"\")\n    }\n  }\n\n  render() {\n    let { schema, errors, value, onChange, getComponent, fn, disabled } = this.props\n    const format = schema && schema.get ? schema.get(\"format\") : null\n    const type = schema && schema.get ? schema.get(\"type\") : null\n\n    let getComponentSilently = (name) => getComponent(name, false, { failSilently: true })\n    let Comp = type ? format ?\n      getComponentSilently(`JsonSchema_${type}_${format}`) :\n      getComponentSilently(`JsonSchema_${type}`) :\n      getComponent(\"JsonSchema_string\")\n    if (!Comp) {\n      Comp = getComponent(\"JsonSchema_string\")\n    }\n    return <Comp { ...this.props } errors={errors} fn={fn} getComponent={getComponent} value={value} onChange={onChange} schema={schema} disabled={disabled}/>\n  }\n}\n\nexport class JsonSchema_string extends Component {\n  static propTypes = JsonSchemaPropShape\n  static defaultProps = JsonSchemaDefaultProps\n  onChange = (e) => {\n    const value = this.props.schema && this.props.schema.get(\"type\") === \"file\" ? e.target.files[0] : e.target.value\n    this.props.onChange(value, this.props.keyName)\n  }\n  onEnumChange = (val) => this.props.onChange(val)\n  render() {\n    let { getComponent, value, schema, errors, required, description, disabled } = this.props\n    const enumValue = schema && schema.get ? schema.get(\"enum\") : null\n    const format = schema && schema.get ? schema.get(\"format\") : null\n    const type = schema && schema.get ? schema.get(\"type\") : null\n    const schemaIn = schema && schema.get ? schema.get(\"in\") : null\n    if (!value) {\n      value = \"\" // value should not be null; this fixes a Debounce error\n    }\n    errors = errors.toJS ? errors.toJS() : []\n\n    if ( enumValue ) {\n      const Select = getComponent(\"Select\")\n      return (<Select className={ errors.length ? \"invalid\" : \"\"}\n                      title={ errors.length ? errors : \"\"}\n                      allowedValues={ enumValue }\n                      value={ value }\n                      allowEmptyValue={ !required }\n                      disabled={disabled}\n                      onChange={ this.onEnumChange }/>)\n    }\n\n    const isDisabled = disabled || (schemaIn && schemaIn === \"formData\" && !(\"FormData\" in window))\n    const Input = getComponent(\"Input\")\n    if (type && type === \"file\") {\n      return (\n        <Input type=\"file\"\n          className={errors.length ? \"invalid\" : \"\"}\n          title={errors.length ? errors : \"\"}\n          onChange={this.onChange}\n          disabled={isDisabled} />\n      )\n    }\n    else {\n      return (\n        <DebounceInput\n          type={format && format === \"password\" ? \"password\" : \"text\"}\n          className={errors.length ? \"invalid\" : \"\"}\n          title={errors.length ? errors : \"\"}\n          value={value}\n          minLength={0}\n          debounceTimeout={350}\n          placeholder={description}\n          onChange={this.onChange}\n          disabled={isDisabled} />\n      )\n    }\n  }\n}\n\nexport class JsonSchema_array extends PureComponent {\n\n  static propTypes = JsonSchemaPropShape\n  static defaultProps = JsonSchemaDefaultProps\n\n  constructor(props, context) {\n    super(props, context)\n    this.state = { value: valueOrEmptyList(props.value), schema: props.schema}\n  }\n\n  UNSAFE_componentWillReceiveProps(props) {\n    const value = valueOrEmptyList(props.value)\n    if(value !== this.state.value)\n      this.setState({ value })\n\n    if(props.schema !== this.state.schema)\n      this.setState({ schema: props.schema })\n  }\n\n  onChange = () => {\n    this.props.onChange(this.state.value)\n  }\n\n  onItemChange = (itemVal, i) => {\n    this.setState(({ value }) => ({\n      value: value.set(i, itemVal)\n    }), this.onChange)\n  }\n\n  removeItem = (i) => {\n    this.setState(({ value }) => ({\n      value: value.delete(i)\n    }), this.onChange)\n  }\n\n  addItem = () => {\n    let newValue = valueOrEmptyList(this.state.value)\n    this.setState(() => ({\n      value: newValue.push(getSampleSchema(this.state.schema.get(\"items\"), false, {\n        includeWriteOnly: true\n      }))\n    }), this.onChange)\n  }\n\n  onEnumChange = (value) => {\n    this.setState(() => ({\n      value: value\n    }), this.onChange)\n  }\n\n  render() {\n    let { getComponent, required, schema, errors, fn, disabled } = this.props\n\n    errors = errors.toJS ? errors.toJS() : Array.isArray(errors) ? errors : []\n    const arrayErrors = errors.filter(e => typeof e === \"string\")\n    const needsRemoveError = errors.filter(e => e.needRemove !== undefined)\n      .map(e => e.error)\n    const value = this.state.value // expect Im List\n    const shouldRenderValue =\n      value && value.count && value.count() > 0 ? true : false\n    const schemaItemsEnum = schema.getIn([\"items\", \"enum\"])\n    const schemaItemsType = schema.getIn([\"items\", \"type\"])\n    const schemaItemsFormat = schema.getIn([\"items\", \"format\"])\n    const schemaItemsSchema = schema.get(\"items\")\n    let ArrayItemsComponent\n    let isArrayItemText = false\n    let isArrayItemFile = (schemaItemsType === \"file\" || (schemaItemsType === \"string\" && schemaItemsFormat === \"binary\")) ? true : false\n    if (schemaItemsType && schemaItemsFormat) {\n      ArrayItemsComponent = getComponent(`JsonSchema_${schemaItemsType}_${schemaItemsFormat}`)\n    } else if (schemaItemsType === \"boolean\" || schemaItemsType === \"array\" || schemaItemsType === \"object\") {\n      ArrayItemsComponent = getComponent(`JsonSchema_${schemaItemsType}`)\n    }\n    // if ArrayItemsComponent not assigned or does not exist,\n    // use default schemaItemsType === \"string\" & JsonSchemaArrayItemText component\n    if (!ArrayItemsComponent && !isArrayItemFile) {\n      isArrayItemText = true\n    }\n\n    if ( schemaItemsEnum ) {\n      const Select = getComponent(\"Select\")\n      return (<Select className={ errors.length ? \"invalid\" : \"\"}\n                      title={ errors.length ? errors : \"\"}\n                      multiple={ true }\n                      value={ value }\n                      disabled={disabled}\n                      allowedValues={ schemaItemsEnum }\n                      allowEmptyValue={ !required }\n                      onChange={ this.onEnumChange }/>)\n    }\n\n    const Button = getComponent(\"Button\")\n    return (\n      <div className=\"json-schema-array\">\n        {shouldRenderValue ?\n          (value.map((item, i) => {\n            const itemErrors = fromJS([\n              ...errors.filter((err) => err.index === i)\n              .map(e => e.error)\n            ])\n            return (\n              <div key={i} className=\"json-schema-form-item\">\n                {\n                  isArrayItemFile ?\n                    <JsonSchemaArrayItemFile\n                    value={item}\n                    onChange={(val)=> this.onItemChange(val, i)}\n                    disabled={disabled}\n                    errors={itemErrors}\n                    getComponent={getComponent}\n                    />\n                    : isArrayItemText ?\n                      <JsonSchemaArrayItemText\n                        value={item}\n                        onChange={(val) => this.onItemChange(val, i)}\n                        disabled={disabled}\n                        errors={itemErrors}\n                      />\n                      : <ArrayItemsComponent {...this.props}\n                        value={item}\n                        onChange={(val) => this.onItemChange(val, i)}\n                        disabled={disabled}\n                        errors={itemErrors}\n                        schema={schemaItemsSchema}\n                        getComponent={getComponent}\n                        fn={fn}\n                      />\n                }\n                {!disabled ? (\n                  <Button\n                    className={`btn btn-sm json-schema-form-item-remove ${needsRemoveError.length ? \"invalid\" : null}`}\n                    title={needsRemoveError.length ? needsRemoveError : \"\"}\n\n                    onClick={() => this.removeItem(i)}\n                  > - </Button>\n                ) : null}\n              </div>\n            )\n          })\n          ) : null\n        }\n        {!disabled ? (\n          <Button\n            className={`btn btn-sm json-schema-form-item-add ${arrayErrors.length ? \"invalid\" : null}`}\n            title={arrayErrors.length ? arrayErrors : \"\"}\n            onClick={this.addItem}\n          >\n            Add {schemaItemsType ? `${schemaItemsType} ` : \"\"}item\n          </Button>\n        ) : null}\n      </div>\n    )\n  }\n}\n\nexport class JsonSchemaArrayItemText extends Component {\n  static propTypes = JsonSchemaPropShape\n  static defaultProps = JsonSchemaDefaultProps\n\n  onChange = (e) => {\n    const value = e.target.value\n    this.props.onChange(value, this.props.keyName)\n  }\n\n  render() {\n    let { value, errors, description, disabled } = this.props\n    if (!value) {\n      value = \"\" // value should not be null\n    }\n    errors = errors.toJS ? errors.toJS() : []\n\n    return (<DebounceInput\n      type={\"text\"}\n      className={errors.length ? \"invalid\" : \"\"}\n      title={errors.length ? errors : \"\"}\n      value={value}\n      minLength={0}\n      debounceTimeout={350}\n      placeholder={description}\n      onChange={this.onChange}\n      disabled={disabled} />)\n  }\n}\n\nexport class JsonSchemaArrayItemFile extends Component {\n  static propTypes = JsonSchemaPropShape\n  static defaultProps = JsonSchemaDefaultProps\n\n  onFileChange = (e) => {\n    const value = e.target.files[0]\n    this.props.onChange(value, this.props.keyName)\n  }\n\n  render() {\n    let { getComponent, errors, disabled } = this.props\n    const Input = getComponent(\"Input\")\n    const isDisabled = disabled || !(\"FormData\" in window)\n\n    return (<Input type=\"file\"\n      className={errors.length ? \"invalid\" : \"\"}\n      title={errors.length ? errors : \"\"}\n      onChange={this.onFileChange}\n      disabled={isDisabled} />)\n  }\n}\n\nexport class JsonSchema_boolean extends Component {\n  static propTypes = JsonSchemaPropShape\n  static defaultProps = JsonSchemaDefaultProps\n\n  onEnumChange = (val) => this.props.onChange(val)\n  render() {\n    let { getComponent, value, errors, schema, required, disabled } = this.props\n    errors = errors.toJS ? errors.toJS() : []\n    let enumValue = schema && schema.get ? schema.get(\"enum\") : null\n    let allowEmptyValue = !enumValue || !required\n    let booleanValue = !enumValue && fromJS([\"true\", \"false\"])\n    const Select = getComponent(\"Select\")\n\n    return (<Select className={ errors.length ? \"invalid\" : \"\"}\n                    title={ errors.length ? errors : \"\"}\n                    value={ String(value) }\n                    disabled={ disabled }\n                    allowedValues={ enumValue || booleanValue }\n                    allowEmptyValue={ allowEmptyValue }\n                    onChange={ this.onEnumChange }/>)\n  }\n}\n\nconst stringifyObjectErrors = (errors) => {\n  return errors.map(err => {\n    const meta = err.propKey !== undefined ? err.propKey : err.index\n    let stringError = typeof err === \"string\" ? err : typeof err.error === \"string\" ? err.error : null\n\n    if(!meta && stringError) {\n      return stringError\n    }\n    let currentError = err.error\n    let path = `/${err.propKey}`\n    while(typeof currentError === \"object\") {\n      const part = currentError.propKey !== undefined ? currentError.propKey : currentError.index\n      if(part === undefined) {\n        break\n      }\n      path += `/${part}`\n      if (!currentError.error) {\n        break\n      }\n      currentError = currentError.error\n    }\n    return `${path}: ${currentError}`\n  })\n}\n\nexport class JsonSchema_object extends PureComponent {\n  constructor() {\n    super()\n  }\n\n  static propTypes = JsonSchemaPropShape\n  static defaultProps = JsonSchemaDefaultProps\n\n  onChange = (value) => {\n    this.props.onChange(value)\n  }\n\n  handleOnChange = e => {\n    const inputValue = e.target.value\n\n    this.onChange(inputValue)\n  }\n\n  render() {\n    let {\n      getComponent,\n      value,\n      errors,\n      disabled\n    } = this.props\n\n    const TextArea = getComponent(\"TextArea\")\n    errors = errors.toJS ? errors.toJS() : Array.isArray(errors) ? errors : []\n\n    return (\n      <div>\n        <TextArea\n          className={cx({ invalid: errors.length })}\n          title={ errors.length ? stringifyObjectErrors(errors).join(\", \") : \"\"}\n          value={stringify(value)}\n          disabled={disabled}\n          onChange={ this.handleOnChange }/>\n      </div>\n    )\n  }\n}\n\nfunction valueOrEmptyList(value) {\n  return List.isList(value) ? value : Array.isArray(value) ? fromJS(value) : List()\n}\n", "import err from \"core/plugins/err\"\nimport layout from \"core/plugins/layout\"\nimport spec from \"core/plugins/spec\"\nimport view from \"core/plugins/view\"\nimport samples from \"core/plugins/samples\"\nimport requestSnippets from \"core/plugins/request-snippets\"\nimport logs from \"core/plugins/logs\"\nimport swaggerJs from \"core/plugins/swagger-js\"\nimport auth from \"core/plugins/auth\"\nimport util from \"core/plugins/util\"\nimport downloadUrlPlugin from \"core/plugins/download-url\"\nimport configsPlugin from \"core/plugins/configs\"\nimport deepLinkingPlugin from \"core/plugins/deep-linking\"\nimport filter from \"core/plugins/filter\"\nimport onComplete from \"core/plugins/on-complete\"\nimport safeRender from \"core/plugins/safe-render\"\n\nimport OperationContainer from \"core/containers/OperationContainer\"\n\nimport App from \"core/components/app\"\nimport AuthorizationPopup from \"core/components/auth/authorization-popup\"\nimport AuthorizeBtn from \"core/components/auth/authorize-btn\"\nimport AuthorizeBtnContainer from \"core/containers/authorize-btn\"\nimport AuthorizeOperationBtn from \"core/components/auth/authorize-operation-btn\"\nimport Auths from \"core/components/auth/auths\"\nimport AuthItem from \"core/components/auth/auth-item\"\nimport AuthError from \"core/components/auth/error\"\nimport ApiKeyAuth from \"core/components/auth/api-key-auth\"\nimport BasicAuth from \"core/components/auth/basic-auth\"\nimport Example from \"core/components/example\"\nimport ExamplesSelect from \"core/components/examples-select\"\nimport ExamplesSelectValueRetainer from \"core/components/examples-select-value-retainer\"\nimport Oauth2 from \"core/components/auth/oauth2\"\nimport Clear from \"core/components/clear\"\nimport LiveResponse from \"core/components/live-response\"\nimport OnlineValidatorBadge from \"core/components/online-validator-badge\"\nimport Operations from \"core/components/operations\"\nimport OperationTag from \"core/components/operation-tag\"\nimport Operation from \"core/components/operation\"\nimport OperationSummary from \"core/components/operation-summary\"\nimport OperationSummaryMethod from \"core/components/operation-summary-method\"\nimport OperationSummaryPath from \"core/components/operation-summary-path\"\nimport OperationExt from \"core/components/operation-extensions\"\nimport OperationExtRow from \"core/components/operation-extension-row\"\nimport HighlightCode from \"core/components/highlight-code\"\nimport Responses from \"core/components/responses\"\nimport Response from \"core/components/response\"\nimport ResponseExtension from \"core/components/response-extension\"\nimport ResponseBody from \"core/components/response-body\"\nimport { Parameters } from \"core/components/parameters\"\nimport ParameterExt from \"core/components/parameter-extension\"\nimport ParameterIncludeEmpty from \"core/components/parameter-include-empty\"\nimport ParameterRow from \"core/components/parameter-row\"\nimport Execute from \"core/components/execute\"\nimport Headers from \"core/components/headers\"\nimport Errors from \"core/components/errors\"\nimport ContentType from \"core/components/content-type\"\nimport Overview from \"core/components/overview\"\nimport InitializedInput from \"core/components/initialized-input\"\nimport Info, {\n  InfoUrl,\n  InfoBasePath\n} from \"core/components/info\"\nimport InfoContainer from \"core/containers/info\"\nimport JumpToPath from \"core/components/jump-to-path\"\nimport Footer from \"core/components/footer\"\nimport FilterContainer from \"core/containers/filter\"\nimport ParamBody from \"core/components/param-body\"\nimport Curl from \"core/components/curl\"\nimport Schemes from \"core/components/schemes\"\nimport SchemesContainer from \"core/containers/schemes\"\nimport ModelCollapse from \"core/components/model-collapse\"\nimport ModelExample from \"core/components/model-example\"\nimport ModelWrapper from \"core/components/model-wrapper\"\nimport Model from \"core/components/model\"\nimport Models from \"core/components/models\"\nimport EnumModel from \"core/components/enum-model\"\nimport ObjectModel from \"core/components/object-model\"\nimport ArrayModel from \"core/components/array-model\"\nimport PrimitiveModel from \"core/components/primitive-model\"\nimport Property from \"core/components/property\"\nimport TryItOutButton from \"core/components/try-it-out-button\"\nimport VersionPragmaFilter from \"core/components/version-pragma-filter\"\nimport VersionStamp from \"core/components/version-stamp\"\nimport DeepLink from \"core/components/deep-link\"\nimport SvgAssets from \"core/components/svg-assets\"\n\nimport Markdown from \"core/components/providers/markdown\"\n\nimport BaseLayout from \"core/components/layouts/base\"\n\nimport * as LayoutUtils from \"core/components/layout-utils\"\nimport * as JsonSchemaComponents from \"core/json-schema-components\"\n\nexport default function() {\n\n  let coreComponents = {\n    components: {\n      App,\n      authorizationPopup: AuthorizationPopup,\n      authorizeBtn: AuthorizeBtn,\n      AuthorizeBtnContainer,\n      authorizeOperationBtn: AuthorizeOperationBtn,\n      auths: Auths,\n      AuthItem: AuthItem,\n      authError: AuthError,\n      oauth2: Oauth2,\n      apiKeyAuth: ApiKeyAuth,\n      basicAuth: BasicAuth,\n      clear: Clear,\n      liveResponse: LiveResponse,\n      InitializedInput,\n      info: Info,\n      InfoContainer,\n      JumpToPath,\n      onlineValidatorBadge: OnlineValidatorBadge,\n      operations: Operations,\n      operation: Operation,\n      OperationSummary,\n      OperationSummaryMethod,\n      OperationSummaryPath,\n      highlightCode: HighlightCode,\n      responses: Responses,\n      response: Response,\n      ResponseExtension: ResponseExtension,\n      responseBody: ResponseBody,\n      parameters: Parameters,\n      parameterRow: ParameterRow,\n      execute: Execute,\n      headers: Headers,\n      errors: Errors,\n      contentType: ContentType,\n      overview: Overview,\n      footer: Footer,\n      FilterContainer,\n      ParamBody: ParamBody,\n      curl: Curl,\n      schemes: Schemes,\n      SchemesContainer,\n      modelExample: ModelExample,\n      ModelWrapper,\n      ModelCollapse,\n      Model,\n      Models,\n      EnumModel,\n      ObjectModel,\n      ArrayModel,\n      PrimitiveModel,\n      Property,\n      TryItOutButton,\n      Markdown,\n      BaseLayout,\n      VersionPragmaFilter,\n      VersionStamp,\n      OperationExt,\n      OperationExtRow,\n      ParameterExt,\n      ParameterIncludeEmpty,\n      OperationTag,\n      OperationContainer,\n      DeepLink,\n      InfoUrl,\n      InfoBasePath,\n      SvgAssets,\n      Example,\n      ExamplesSelect,\n      ExamplesSelectValueRetainer,\n    }\n  }\n\n  let formComponents = {\n    components: LayoutUtils\n  }\n\n  let jsonSchemaComponents = {\n    components: JsonSchemaComponents\n  }\n\n  return [\n    configsPlugin,\n    util,\n    logs,\n    view,\n    spec,\n    err,\n    layout,\n    samples,\n    coreComponents,\n    formComponents,\n    swaggerJs,\n    jsonSchemaComponents,\n    auth,\n    downloadUrlPlugin,\n    deepLinkingPlugin,\n    filter,\n    onComplete,\n    requestSnippets,\n    safeRender(),\n  ]\n}\n", "import BasePreset from \"./base\"\nimport OAS3Plugin from \"../plugins/oas3\"\n\n// Just the base, for now.\n\nexport default function PresetApis() {\n\n  return [\n    BasePreset,\n    OAS3Plugin\n  ]\n}\n", "import deepExtend from \"deep-extend\"\n\nimport System from \"./system\"\nimport ApisPreset from \"./presets/apis\"\nimport AllPlugins from \"./plugins/all\"\nimport { parseSearch } from \"./utils\"\nimport win from \"./window\"\n\n// eslint-disable-next-line no-undef\nconst { GIT_DIRTY, GIT_COMMIT, PACKAGE_VERSION, BUILD_TIME } = buildInfo\n\nexport default function SwaggerUI(opts) {\n\n  win.versions = win.versions || {}\n  win.versions.swaggerUi = {\n    version: PACKAGE_VERSION,\n    gitRevision: GIT_COMMIT,\n    gitDirty: GIT_DIRTY,\n    buildTimestamp: BUILD_TIME,\n  }\n\n  const defaults = {\n    // Some general settings, that we floated to the top\n    dom_id: null, // eslint-disable-line camelcase\n    domNode: null,\n    spec: {},\n    url: \"\",\n    urls: null,\n    layout: \"BaseLayout\",\n    docExpansion: \"list\",\n    maxDisplayedTags: null,\n    filter: null,\n    validatorUrl: \"https://validator.swagger.io/validator\",\n    oauth2RedirectUrl: `${window.location.protocol}//${window.location.host}${window.location.pathname.substring(0, window.location.pathname.lastIndexOf(\"/\"))}/oauth2-redirect.html`,\n    persistAuthorization: false,\n    configs: {},\n    custom: {},\n    displayOperationId: false,\n    displayRequestDuration: false,\n    deepLinking: false,\n    tryItOutEnabled: false,\n    requestInterceptor: (a => a),\n    responseInterceptor: (a => a),\n    showMutatedRequest: true,\n    defaultModelRendering: \"example\",\n    defaultModelExpandDepth: 1,\n    defaultModelsExpandDepth: 1,\n    showExtensions: false,\n    showCommonExtensions: false,\n    withCredentials: undefined,\n    requestSnippetsEnabled: false,\n    requestSnippets: {\n      generators: {\n        \"curl_bash\": {\n          title: \"cURL (bash)\",\n          syntax: \"bash\"\n        },\n        \"curl_powershell\": {\n          title: \"cURL (PowerShell)\",\n          syntax: \"powershell\"\n        },\n        \"curl_cmd\": {\n          title: \"cURL (CMD)\",\n          syntax: \"bash\"\n        },\n      },\n      defaultExpanded: true,\n      languages: null, // e.g. only show curl bash = [\"curl_bash\"]\n    },\n    supportedSubmitMethods: [\n      \"get\",\n      \"put\",\n      \"post\",\n      \"delete\",\n      \"options\",\n      \"head\",\n      \"patch\",\n      \"trace\"\n    ],\n    queryConfigEnabled: false,\n\n    // Initial set of plugins ( TODO rename this, or refactor - we don't need presets _and_ plugins. Its just there for performance.\n    // Instead, we can compile the first plugin ( it can be a collection of plugins ), then batch the rest.\n    presets: [\n      ApisPreset\n    ],\n\n    // Plugins; ( loaded after presets )\n    plugins: [\n    ],\n\n    pluginsOptions: {\n      // Behavior during plugin registration. Can be :\n      // - legacy (default) : the current behavior for backward compatibility – last plugin takes precedence over the others\n      // - chain : chain wrapComponents when targeting the same core component\n      pluginLoadType: \"legacy\"\n    },\n\n    // Initial state\n    initialState: { },\n\n    // Inline Plugin\n    fn: { },\n    components: { },\n\n    syntaxHighlight: {\n      activated: true,\n      theme: \"agate\"\n    }\n  }\n\n  let queryConfig = opts.queryConfigEnabled ? parseSearch() : {}\n\n  const domNode = opts.domNode\n  delete opts.domNode\n\n  const constructorConfig = deepExtend({}, defaults, opts, queryConfig)\n\n  const storeConfigs = {\n    system: {\n      configs: constructorConfig.configs\n    },\n    plugins: constructorConfig.presets,\n    pluginsOptions: constructorConfig.pluginsOptions,\n    state: deepExtend({\n      layout: {\n        layout: constructorConfig.layout,\n        filter: constructorConfig.filter\n      },\n      spec: {\n        spec: \"\",\n        url: constructorConfig.url\n      },\n      requestSnippets: constructorConfig.requestSnippets\n    }, constructorConfig.initialState)\n  }\n\n  if(constructorConfig.initialState) {\n    // if the user sets a key as `undefined`, that signals to us that we\n    // should delete the key entirely.\n    // known usage: Swagger-Editor validate plugin tests\n    for (var key in constructorConfig.initialState) {\n      if(\n        Object.prototype.hasOwnProperty.call(constructorConfig.initialState, key)\n        && constructorConfig.initialState[key] === undefined\n      ) {\n        delete storeConfigs.state[key]\n      }\n    }\n  }\n\n  let inlinePlugin = ()=> {\n    return {\n      fn: constructorConfig.fn,\n      components: constructorConfig.components,\n      state: constructorConfig.state,\n    }\n  }\n\n  var store = new System(storeConfigs)\n  store.register([constructorConfig.plugins, inlinePlugin])\n\n  var system = store.getSystem()\n\n  const downloadSpec = (fetchedConfig) => {\n    let localConfig = system.specSelectors.getLocalConfig ? system.specSelectors.getLocalConfig() : {}\n    let mergedConfig = deepExtend({}, localConfig, constructorConfig, fetchedConfig || {}, queryConfig)\n\n    // deep extend mangles domNode, we need to set it manually\n    if(domNode) {\n      mergedConfig.domNode = domNode\n    }\n\n    store.setConfigs(mergedConfig)\n    system.configsActions.loaded()\n\n    if (fetchedConfig !== null) {\n      if (!queryConfig.url && typeof mergedConfig.spec === \"object\" && Object.keys(mergedConfig.spec).length) {\n        system.specActions.updateUrl(\"\")\n        system.specActions.updateLoadingStatus(\"success\")\n        system.specActions.updateSpec(JSON.stringify(mergedConfig.spec))\n      } else if (system.specActions.download && mergedConfig.url && !mergedConfig.urls) {\n        system.specActions.updateUrl(mergedConfig.url)\n        system.specActions.download(mergedConfig.url)\n      }\n    }\n\n    if(mergedConfig.domNode) {\n      system.render(mergedConfig.domNode, \"App\")\n    } else if(mergedConfig.dom_id) {\n      let domNode = document.querySelector(mergedConfig.dom_id)\n      system.render(domNode, \"App\")\n    } else if(mergedConfig.dom_id === null || mergedConfig.domNode === null) {\n      // do nothing\n      // this is useful for testing that does not need to do any rendering\n    } else {\n      console.error(\"Skipped rendering: no `dom_id` or `domNode` was specified\")\n    }\n\n    return system\n  }\n\n  const configUrl = queryConfig.config || constructorConfig.configUrl\n\n  if (configUrl && system.specActions && system.specActions.getConfigByUrl) {\n    system.specActions.getConfigByUrl({\n      url: configUrl,\n      loadRemoteConfig: true,\n      requestInterceptor: constructorConfig.requestInterceptor,\n      responseInterceptor: constructorConfig.responseInterceptor,\n    }, downloadSpec)\n  } else {\n    return downloadSpec()\n  }\n\n  return system\n}\n\n// Add presets\nSwaggerUI.presets = {\n  apis: ApisPreset,\n}\n\n// All Plugins\nSwaggerUI.plugins = AllPlugins\n", "import SwaggerUI from \"./core\"\n\nexport default SwaggerUI\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n", "module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '\u00A9 2020 Denis Pushkarev (zloirock.ru)'\n});\n", "module.exports = require('./_shared')('native-function-to-string', Function.toString);\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\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 NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "require('../../modules/es6.array.find');\nmodule.exports = require('../../modules/_core').Array.find;\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "require('../../modules/es6.array.find-index');\nmodule.exports = require('../../modules/_core').Array.findIndex;\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  require('./_redefine')(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n", "module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n", "var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) redefine(target, key, src[key], safe);\n  return target;\n};\n", "module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n", "var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n", "'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\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    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\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    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n", "'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n  // fast case\n  var index = fastKey(key);\n  var entry;\n  if (index !== 'F') return that._i[index];\n  // frozen object case\n  for (entry = that._f; entry; entry = entry.n) {\n    if (entry.k == key) return entry;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;         // collection type\n      that._i = create(null); // index\n      that._f = undefined;    // first entry\n      that._l = undefined;    // last entry\n      that[SIZE] = 0;         // size\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.1.3.1 Map.prototype.clear()\n      // 23.2.3.2 Set.prototype.clear()\n      clear: function clear() {\n        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n          entry.r = true;\n          if (entry.p) entry.p = entry.p.n = undefined;\n          delete data[entry.i];\n        }\n        that._f = that._l = undefined;\n        that[SIZE] = 0;\n      },\n      // 23.1.3.3 Map.prototype.delete(key)\n      // 23.2.3.4 Set.prototype.delete(value)\n      'delete': function (key) {\n        var that = validate(this, NAME);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.n;\n          var prev = entry.p;\n          delete that._i[entry.i];\n          entry.r = true;\n          if (prev) prev.n = next;\n          if (next) next.p = prev;\n          if (that._f == entry) that._f = next;\n          if (that._l == entry) that._l = prev;\n          that[SIZE]--;\n        } return !!entry;\n      },\n      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        validate(this, NAME);\n        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.n : this._f) {\n          f(entry.v, entry.k, this);\n          // revert to the last existing entry\n          while (entry && entry.r) entry = entry.p;\n        }\n      },\n      // 23.1.3.7 Map.prototype.has(key)\n      // 23.2.3.7 Set.prototype.has(value)\n      has: function has(key) {\n        return !!getEntry(validate(this, NAME), key);\n      }\n    });\n    if (DESCRIPTORS) dP(C.prototype, 'size', {\n      get: function () {\n        return validate(this, NAME)[SIZE];\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var entry = getEntry(that, key);\n    var prev, index;\n    // change existing entry\n    if (entry) {\n      entry.v = value;\n    // create new entry\n    } else {\n      that._l = entry = {\n        i: index = fastKey(key, true), // <- index\n        k: key,                        // <- key\n        v: value,                      // <- value\n        p: prev = that._l,             // <- previous entry\n        n: undefined,                  // <- next entry\n        r: false                       // <- removed\n      };\n      if (!that._f) that._f = entry;\n      if (prev) prev.n = entry;\n      that[SIZE]++;\n      // add to index\n      if (index !== 'F') that._i[index] = entry;\n    } return that;\n  },\n  getEntry: getEntry,\n  setStrong: function (C, NAME, IS_MAP) {\n    // add .keys, .values, .entries, [@@iterator]\n    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n    $iterDefine(C, NAME, function (iterated, kind) {\n      this._t = validate(iterated, NAME); // target\n      this._k = kind;                     // kind\n      this._l = undefined;                // previous\n    }, function () {\n      var that = this;\n      var kind = that._k;\n      var entry = that._l;\n      // revert to the last existing entry\n      while (entry && entry.r) entry = entry.p;\n      // get next entry\n      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n        // or finish the iteration\n        that._t = undefined;\n        return step(1);\n      }\n      // return step by kind\n      if (kind == 'keys') return step(0, entry.k);\n      if (kind == 'values') return step(0, entry.v);\n      return step(0, [entry.k, entry.v]);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // add [@@species], 23.1.2.2, 23.2.2.2\n    setSpecies(NAME);\n  }\n};\n", "exports.f = {}.propertyIsEnumerable;\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n", "var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n", "'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  var fixMethod = function (KEY) {\n    var fn = proto[KEY];\n    redefine(proto, KEY,\n      KEY == 'delete' ? function (a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'has' ? function has(a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'get' ? function get(a) {\n        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n    );\n  };\n  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    // create collection constructor\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    var instance = new C();\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    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\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 C();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n    if (!ACCEPT_ITERABLES) {\n      C = wrapper(function (target, iterable) {\n        anInstance(target, C, NAME);\n        var that = inheritIfRequired(new Base(), target, C);\n        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n        return that;\n      });\n      C.prototype = proto;\n      proto.constructor = C;\n    }\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n    // weak collections should not contains .clear method\n    if (IS_WEAK && proto.clear) delete proto.clear;\n  }\n\n  setToStringTag(C, NAME);\n\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F * (C != Base), O);\n\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n  return C;\n};\n", "'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.1.3.6 Map.prototype.get(key)\n  get: function get(key) {\n    var entry = strong.getEntry(validate(this, MAP), key);\n    return entry && entry.v;\n  },\n  // 23.1.3.9 Map.prototype.set(key, value)\n  set: function set(key, value) {\n    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n  }\n}, strong, true);\n", "var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n  var result = [];\n  forOf(iter, false, result.push, result, ITERATOR);\n  return result;\n};\n", "// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n  return function toJSON() {\n    if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n    return from(this);\n  };\n};\n", "// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n", "'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { of: function of() {\n    var length = arguments.length;\n    var A = new Array(length);\n    while (length--) A[length] = arguments[length];\n    return new this(A);\n  } });\n};\n", "// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n", "'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n    var mapFn = arguments[1];\n    var mapping, A, n, cb;\n    aFunction(this);\n    mapping = mapFn !== undefined;\n    if (mapping) aFunction(mapFn);\n    if (source == undefined) return new this();\n    A = [];\n    if (mapping) {\n      n = 0;\n      cb = ctx(mapFn, arguments[2], 2);\n      forOf(source, false, function (nextItem) {\n        A.push(cb(nextItem, n++));\n      });\n    } else {\n      forOf(source, false, A.push, A);\n    }\n    return new this(A);\n  } });\n};\n", "// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n", "require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n", "exports.f = Object.getOwnPropertySymbols;\n", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n", "var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n", "var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n", "'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n", "module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n", "var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n", "var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_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 LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\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      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\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 (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(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.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n", "// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.Promise);\n  var isFunction = typeof onFinally == 'function';\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", "'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n  var promiseCapability = newPromiseCapability.f(this);\n  var result = perform(callbackfn);\n  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n  return promiseCapability.promise;\n} });\n", "require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n", "'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.2.3.1 Set.prototype.add(value)\n  add: function add(value) {\n    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n  }\n}, strong);\n", "// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n", "// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n", "// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n", "require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n", "/**\n * tooltipster http://calebjacob.github.io/tooltipster/\n * A rockin' custom tooltip jQuery plugin\n * Developed by Caleb Jacob and Louis Ameline\n * MIT license\n */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module unless amdModuleId is set\n    define([\"jquery\"], function (a0) {\n      return (factory(a0));\n    });\n  } else if (typeof exports === 'object') {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory(require(\"jquery\"));\n  } else {\n    factory(jQuery);\n  }\n}(this, function ($) {\n\n// This file will be UMDified by a build task.\n\nvar defaults = {\n\t\tanimation: 'fade',\n\t\tanimationDuration: 350,\n\t\tcontent: null,\n\t\tcontentAsHTML: false,\n\t\tcontentCloning: false,\n\t\tdebug: true,\n\t\tdelay: 300,\n\t\tdelayTouch: [300, 500],\n\t\tfunctionInit: null,\n\t\tfunctionBefore: null,\n\t\tfunctionReady: null,\n\t\tfunctionAfter: null,\n\t\tfunctionFormat: null,\n\t\tIEmin: 6,\n\t\tinteractive: false,\n\t\tmultiple: false,\n\t\t// will default to document.body, or must be an element positioned at (0, 0)\n\t\t// in the document, typically like the very top views of an app.\n\t\tparent: null,\n\t\tplugins: ['sideTip'],\n\t\trepositionOnScroll: false,\n\t\trestoration: 'none',\n\t\tselfDestruction: true,\n\t\ttheme: [],\n\t\ttimer: 0,\n\t\ttrackerInterval: 500,\n\t\ttrackOrigin: false,\n\t\ttrackTooltip: false,\n\t\ttrigger: 'hover',\n\t\ttriggerClose: {\n\t\t\tclick: false,\n\t\t\tmouseleave: false,\n\t\t\toriginClick: false,\n\t\t\tscroll: false,\n\t\t\ttap: false,\n\t\t\ttouchleave: false\n\t\t},\n\t\ttriggerOpen: {\n\t\t\tclick: false,\n\t\t\tmouseenter: false,\n\t\t\ttap: false,\n\t\t\ttouchstart: false\n\t\t},\n\t\tupdateAnimation: 'rotate',\n\t\tzIndex: 9999999\n\t},\n\t// we'll avoid using the 'window' global as a good practice but npm's\n\t// jquery@<2.1.0 package actually requires a 'window' global, so not sure\n\t// it's useful at all\n\twin = (typeof window != 'undefined') ? window : null,\n\t// env will be proxied by the core for plugins to have access its properties\n\tenv = {\n\t\t// detect if this device can trigger touch events. Better have a false\n\t\t// positive (unused listeners, that's ok) than a false negative.\n\t\t// https://github.com/Modernizr/Modernizr/blob/master/feature-detects/touchevents.js\n\t\t// http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript\n\t\thasTouchCapability: !!(\n\t\t\twin\n\t\t\t&&\t(\t'ontouchstart' in win\n\t\t\t\t||\t(win.DocumentTouch && win.document instanceof win.DocumentTouch)\n\t\t\t\t||\twin.navigator.maxTouchPoints\n\t\t\t)\n\t\t),\n\t\thasTransitions: transitionSupport(),\n\t\tIE: false,\n\t\t// don't set manually, it will be updated by a build task after the manifest\n\t\tsemVer: '4.2.8',\n\t\twindow: win\n\t},\n\tcore = function() {\n\t\t\n\t\t// core variables\n\t\t\n\t\t// the core emitters\n\t\tthis.__$emitterPrivate = $({});\n\t\tthis.__$emitterPublic = $({});\n\t\tthis.__instancesLatestArr = [];\n\t\t// collects plugin constructors\n\t\tthis.__plugins = {};\n\t\t// proxy env variables for plugins who might use them\n\t\tthis._env = env;\n\t};\n\n// core methods\ncore.prototype = {\n\t\n\t/**\n\t * A function to proxy the public methods of an object onto another\n\t *\n\t * @param {object} constructor The constructor to bridge\n\t * @param {object} obj The object that will get new methods (an instance or the core)\n\t * @param {string} pluginName A plugin name for the console log message\n\t * @return {core}\n\t * @private\n\t */\n\t__bridge: function(constructor, obj, pluginName) {\n\t\t\n\t\t// if it's not already bridged\n\t\tif (!obj[pluginName]) {\n\t\t\t\n\t\t\tvar fn = function() {};\n\t\t\tfn.prototype = constructor;\n\t\t\t\n\t\t\tvar pluginInstance = new fn();\n\t\t\t\n\t\t\t// the _init method has to exist in instance constructors but might be missing\n\t\t\t// in core constructors\n\t\t\tif (pluginInstance.__init) {\n\t\t\t\tpluginInstance.__init(obj);\n\t\t\t}\n\t\t\t\n\t\t\t$.each(constructor, function(methodName, fn) {\n\t\t\t\t\n\t\t\t\t// don't proxy \"private\" methods, only \"protected\" and public ones\n\t\t\t\tif (methodName.indexOf('__') != 0) {\n\t\t\t\t\t\n\t\t\t\t\t// if the method does not exist yet\n\t\t\t\t\tif (!obj[methodName]) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tobj[methodName] = function() {\n\t\t\t\t\t\t\treturn pluginInstance[methodName].apply(pluginInstance, Array.prototype.slice.apply(arguments));\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\t// remember to which plugin this method corresponds (several plugins may\n\t\t\t\t\t\t// have methods of the same name, we need to be sure)\n\t\t\t\t\t\tobj[methodName].bridged = pluginInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if (defaults.debug) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tconsole.log('The '+ methodName +' method of the '+ pluginName\n\t\t\t\t\t\t\t+' plugin conflicts with another plugin or native methods');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tobj[pluginName] = pluginInstance;\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For mockup in Node env if need be, for testing purposes\n\t *\n\t * @return {core}\n\t * @private\n\t */\n\t__setWindow: function(window) {\n\t\tenv.window = window;\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Returns a ruler, a tool to help measure the size of a tooltip under\n\t * various settings. Meant for plugins\n\t * \n\t * @see Ruler\n\t * @return {object} A Ruler instance\n\t * @protected\n\t */\n\t_getRuler: function($tooltip) {\n\t\treturn new Ruler($tooltip);\n\t},\n\t\n\t/**\n\t * For internal use by plugins, if needed\n\t *\n\t * @return {core}\n\t * @protected\n\t */\n\t_off: function() {\n\t\tthis.__$emitterPrivate.off.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For internal use by plugins, if needed\n\t *\n\t * @return {core}\n\t * @protected\n\t */\n\t_on: function() {\n\t\tthis.__$emitterPrivate.on.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For internal use by plugins, if needed\n\t *\n\t * @return {core}\n\t * @protected\n\t */\n\t_one: function() {\n\t\tthis.__$emitterPrivate.one.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Returns (getter) or adds (setter) a plugin\n\t *\n\t * @param {string|object} plugin Provide a string (in the full form\n\t * \"namespace.name\") to use as as getter, an object to use as a setter\n\t * @return {object|core}\n\t * @protected\n\t */\n\t_plugin: function(plugin) {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\t// getter\n\t\tif (typeof plugin == 'string') {\n\t\t\t\n\t\t\tvar pluginName = plugin,\n\t\t\t\tp = null;\n\t\t\t\n\t\t\t// if the namespace is provided, it's easy to search\n\t\t\tif (pluginName.indexOf('.') > 0) {\n\t\t\t\tp = self.__plugins[pluginName];\n\t\t\t}\n\t\t\t// otherwise, return the first name that matches\n\t\t\telse {\n\t\t\t\t$.each(self.__plugins, function(i, plugin) {\n\t\t\t\t\t\n\t\t\t\t\tif (plugin.name.substring(plugin.name.length - pluginName.length - 1) == '.'+ pluginName) {\n\t\t\t\t\t\tp = plugin;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\treturn p;\n\t\t}\n\t\t// setter\n\t\telse {\n\t\t\t\n\t\t\t// force namespaces\n\t\t\tif (plugin.name.indexOf('.') < 0) {\n\t\t\t\tthrow new Error('Plugins must be namespaced');\n\t\t\t}\n\t\t\t\n\t\t\tself.__plugins[plugin.name] = plugin;\n\t\t\t\n\t\t\t// if the plugin has core features\n\t\t\tif (plugin.core) {\n\t\t\t\t\n\t\t\t\t// bridge non-private methods onto the core to allow new core methods\n\t\t\t\tself.__bridge(plugin.core, self, plugin.name);\n\t\t\t}\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t},\n\t\n\t/**\n\t * Trigger events on the core emitters\n\t * \n\t * @returns {core}\n\t * @protected\n\t */\n\t_trigger: function() {\n\t\t\n\t\tvar args = Array.prototype.slice.apply(arguments);\n\t\t\n\t\tif (typeof args[0] == 'string') {\n\t\t\targs[0] = { type: args[0] };\n\t\t}\n\t\t\n\t\t// note: the order of emitters matters\n\t\tthis.__$emitterPrivate.trigger.apply(this.__$emitterPrivate, args);\n\t\tthis.__$emitterPublic.trigger.apply(this.__$emitterPublic, args);\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Returns instances of all tooltips in the page or an a given element\n\t *\n\t * @param {string|HTML object collection} selector optional Use this\n\t * parameter to restrict the set of objects that will be inspected\n\t * for the retrieval of instances. By default, all instances in the\n\t * page are returned.\n\t * @return {array} An array of instance objects\n\t * @public\n\t */\n\tinstances: function(selector) {\n\t\t\n\t\tvar instances = [],\n\t\t\tsel = selector || '.tooltipstered';\n\t\t\n\t\t$(sel).each(function() {\n\t\t\t\n\t\t\tvar $this = $(this),\n\t\t\t\tns = $this.data('tooltipster-ns');\n\t\t\t\n\t\t\tif (ns) {\n\t\t\t\t\n\t\t\t\t$.each(ns, function(i, namespace) {\n\t\t\t\t\tinstances.push($this.data(namespace));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn instances;\n\t},\n\t\n\t/**\n\t * Returns the Tooltipster objects generated by the last initializing call\n\t *\n\t * @return {array} An array of instance objects\n\t * @public\n\t */\n\tinstancesLatest: function() {\n\t\treturn this.__instancesLatestArr;\n\t},\n\t\n\t/**\n\t * For public use only, not to be used by plugins (use ::_off() instead)\n\t *\n\t * @return {core}\n\t * @public\n\t */\n\toff: function() {\n\t\tthis.__$emitterPublic.off.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For public use only, not to be used by plugins (use ::_on() instead)\n\t *\n\t * @return {core}\n\t * @public\n\t */\n\ton: function() {\n\t\tthis.__$emitterPublic.on.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For public use only, not to be used by plugins (use ::_one() instead)\n\t * \n\t * @return {core}\n\t * @public\n\t */\n\tone: function() {\n\t\tthis.__$emitterPublic.one.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Returns all HTML elements which have one or more tooltips\n\t *\n\t * @param {string} selector optional Use this to restrict the results\n\t * to the descendants of an element\n\t * @return {array} An array of HTML elements\n\t * @public\n\t */\n\torigins: function(selector) {\n\t\t\n\t\tvar sel = selector ?\n\t\t\tselector +' ' :\n\t\t\t'';\n\t\t\n\t\treturn $(sel +'.tooltipstered').toArray();\n\t},\n\t\n\t/**\n\t * Change default options for all future instances\n\t *\n\t * @param {object} d The options that should be made defaults\n\t * @return {core}\n\t * @public\n\t */\n\tsetDefaults: function(d) {\n\t\t$.extend(defaults, d);\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For users to trigger their handlers on the public emitter\n\t * \n\t * @returns {core}\n\t * @public\n\t */\n\ttriggerHandler: function() {\n\t\tthis.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t}\n};\n\n// $.tooltipster will be used to call core methods\n$.tooltipster = new core();\n\n// the Tooltipster instance class (mind the capital T)\n$.Tooltipster = function(element, options) {\n\t\n\t// list of instance variables\n\t\n\t// stack of custom callbacks provided as parameters to API methods\n\tthis.__callbacks = {\n\t\tclose: [],\n\t\topen: []\n\t};\n\t// the schedule time of DOM removal\n\tthis.__closingTime;\n\t// this will be the user content shown in the tooltip. A capital \"C\" is used\n\t// because there is also a method called content()\n\tthis.__Content;\n\t// for the size tracker\n\tthis.__contentBcr;\n\t// to disable the tooltip after destruction\n\tthis.__destroyed = false;\n\t// we can't emit directly on the instance because if a method with the same\n\t// name as the event exists, it will be called by jQuery. Se we use a plain\n\t// object as emitter. This emitter is for internal use by plugins,\n\t// if needed.\n\tthis.__$emitterPrivate = $({});\n\t// this emitter is for the user to listen to events without risking to mess\n\t// with our internal listeners\n\tthis.__$emitterPublic = $({});\n\tthis.__enabled = true;\n\t// the reference to the gc interval\n\tthis.__garbageCollector;\n\t// various position and size data recomputed before each repositioning\n\tthis.__Geometry;\n\t// the tooltip position, saved after each repositioning by a plugin\n\tthis.__lastPosition;\n\t// a unique namespace per instance\n\tthis.__namespace = 'tooltipster-'+ Math.round(Math.random()*1000000);\n\tthis.__options;\n\t// will be used to support origins in scrollable areas\n\tthis.__$originParents;\n\tthis.__pointerIsOverOrigin = false;\n\t// to remove themes if needed\n\tthis.__previousThemes = [];\n\t// the state can be either: appearing, stable, disappearing, closed\n\tthis.__state = 'closed';\n\t// timeout references\n\tthis.__timeouts = {\n\t\tclose: [],\n\t\topen: null\n\t};\n\t// store touch events to be able to detect emulated mouse events\n\tthis.__touchEvents = [];\n\t// the reference to the tracker interval\n\tthis.__tracker = null;\n\t// the element to which this tooltip is associated\n\tthis._$origin;\n\t// this will be the tooltip element (jQuery wrapped HTML element).\n\t// It's the job of a plugin to create it and append it to the DOM\n\tthis._$tooltip;\n\t\n\t// launch\n\tthis.__init(element, options);\n};\n\n$.Tooltipster.prototype = {\n\t\n\t/**\n\t * @param origin\n\t * @param options\n\t * @private\n\t */\n\t__init: function(origin, options) {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\tself._$origin = $(origin);\n\t\tself.__options = $.extend(true, {}, defaults, options);\n\t\t\n\t\t// some options may need to be reformatted\n\t\tself.__optionsFormat();\n\t\t\n\t\t// don't run on old IE if asked no to\n\t\tif (\t!env.IE\n\t\t\t||\tenv.IE >= self.__options.IEmin\n\t\t) {\n\t\t\t\n\t\t\t// note: the content is null (empty) by default and can stay that\n\t\t\t// way if the plugin remains initialized but not fed any content. The\n\t\t\t// tooltip will just not appear.\n\t\t\t\n\t\t\t// let's save the initial value of the title attribute for later\n\t\t\t// restoration if need be.\n\t\t\tvar initialTitle = null;\n\t\t\t\n\t\t\t// it will already have been saved in case of multiple tooltips\n\t\t\tif (self._$origin.data('tooltipster-initialTitle') === undefined) {\n\t\t\t\t\n\t\t\t\tinitialTitle = self._$origin.attr('title');\n\t\t\t\t\n\t\t\t\t// we do not want initialTitle to be \"undefined\" because\n\t\t\t\t// of how jQuery's .data() method works\n\t\t\t\tif (initialTitle === undefined) initialTitle = null;\n\t\t\t\t\n\t\t\t\tself._$origin.data('tooltipster-initialTitle', initialTitle);\n\t\t\t}\n\t\t\t\n\t\t\t// If content is provided in the options, it has precedence over the\n\t\t\t// title attribute.\n\t\t\t// Note: an empty string is considered content, only 'null' represents\n\t\t\t// the absence of content.\n\t\t\t// Also, an existing title=\"\" attribute will result in an empty string\n\t\t\t// content\n\t\t\tif (self.__options.content !== null) {\n\t\t\t\tself.__contentSet(self.__options.content);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t\n\t\t\t\tvar selector = self._$origin.attr('data-tooltip-content'),\n\t\t\t\t\t$el;\n\t\t\t\t\n\t\t\t\tif (selector){\n\t\t\t\t\t$el = $(selector);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ($el && $el[0]) {\n\t\t\t\t\tself.__contentSet($el.first());\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tself.__contentSet(initialTitle);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself._$origin\n\t\t\t\t// strip the title off of the element to prevent the default tooltips\n\t\t\t\t// from popping up\n\t\t\t\t.removeAttr('title')\n\t\t\t\t// to be able to find all instances on the page later (upon window\n\t\t\t\t// events in particular)\n\t\t\t\t.addClass('tooltipstered');\n\t\t\t\n\t\t\t// set listeners on the origin\n\t\t\tself.__prepareOrigin();\n\t\t\t\n\t\t\t// set the garbage collector\n\t\t\tself.__prepareGC();\n\t\t\t\n\t\t\t// init plugins\n\t\t\t$.each(self.__options.plugins, function(i, pluginName) {\n\t\t\t\tself._plug(pluginName);\n\t\t\t});\n\t\t\t\n\t\t\t// to detect swiping\n\t\t\tif (env.hasTouchCapability) {\n\t\t\t\t$(env.window.document.body).on('touchmove.'+ self.__namespace +'-triggerOpen', function(event) {\n\t\t\t\t\tself._touchRecordEvent(event);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tself\n\t\t\t\t// prepare the tooltip when it gets created. This event must\n\t\t\t\t// be fired by a plugin\n\t\t\t\t._on('created', function() {\n\t\t\t\t\tself.__prepareTooltip();\n\t\t\t\t})\n\t\t\t\t// save position information when it's sent by a plugin\n\t\t\t\t._on('repositioned', function(e) {\n\t\t\t\t\tself.__lastPosition = e.position;\n\t\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tself.__options.disabled = true;\n\t\t}\n\t},\n\t\n\t/**\n\t * Insert the content into the appropriate HTML element of the tooltip\n\t * \n\t * @returns {self}\n\t * @private\n\t */\n\t__contentInsert: function() {\n\t\t\n\t\tvar self = this,\n\t\t\t$el = self._$tooltip.find('.tooltipster-content'),\n\t\t\tformattedContent = self.__Content,\n\t\t\tformat = function(content) {\n\t\t\t\tformattedContent = content;\n\t\t\t};\n\t\t\n\t\tself._trigger({\n\t\t\ttype: 'format',\n\t\t\tcontent: self.__Content,\n\t\t\tformat: format\n\t\t});\n\t\t\n\t\tif (self.__options.functionFormat) {\n\t\t\t\n\t\t\tformattedContent = self.__options.functionFormat.call(\n\t\t\t\tself,\n\t\t\t\tself,\n\t\t\t\t{ origin: self._$origin[0] },\n\t\t\t\tself.__Content\n\t\t\t);\n\t\t}\n\t\t\n\t\tif (typeof formattedContent === 'string' && !self.__options.contentAsHTML) {\n\t\t\t$el.text(formattedContent);\n\t\t}\n\t\telse {\n\t\t\t$el\n\t\t\t\t.empty()\n\t\t\t\t.append(formattedContent);\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Save the content, cloning it beforehand if need be\n\t * \n\t * @param content\n\t * @returns {self}\n\t * @private\n\t */\n\t__contentSet: function(content) {\n\t\t\n\t\t// clone if asked. Cloning the object makes sure that each instance has its\n\t\t// own version of the content (in case a same object were provided for several\n\t\t// instances)\n\t\t// reminder: typeof null === object\n\t\tif (content instanceof $ && this.__options.contentCloning) {\n\t\t\tcontent = content.clone(true);\n\t\t}\n\t\t\n\t\tthis.__Content = content;\n\t\t\n\t\tthis._trigger({\n\t\t\ttype: 'updated',\n\t\t\tcontent: content\n\t\t});\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Error message about a method call made after destruction\n\t * \n\t * @private\n\t */\n\t__destroyError: function() {\n\t\tthrow new Error('This tooltip has been destroyed and cannot execute your method call.');\n\t},\n\t\n\t/**\n\t * Gather all information about dimensions and available space,\n\t * called before every repositioning\n\t * \n\t * @private\n\t * @returns {object}\n\t */\n\t__geometry: function() {\n\t\t\n\t\tvar\tself = this,\n\t\t\t$target = self._$origin,\n\t\t\toriginIsArea = self._$origin.is('area');\n\t\t\n\t\t// if this._$origin is a map area, the target we'll need\n\t\t// the dimensions of is actually the image using the map,\n\t\t// not the area itself\n\t\tif (originIsArea) {\n\t\t\t\n\t\t\tvar mapName = self._$origin.parent().attr('name');\n\t\t\t\n\t\t\t$target = $('img[usemap=\"#'+ mapName +'\"]');\n\t\t}\n\t\t\n\t\tvar bcr = $target[0].getBoundingClientRect(),\n\t\t\t$document = $(env.window.document),\n\t\t\t$window = $(env.window),\n\t\t\t$parent = $target,\n\t\t\t// some useful properties of important elements\n\t\t\tgeo = {\n\t\t\t\t// available space for the tooltip, see down below\n\t\t\t\tavailable: {\n\t\t\t\t\tdocument: null,\n\t\t\t\t\twindow: null\n\t\t\t\t},\n\t\t\t\tdocument: {\n\t\t\t\t\tsize: {\n\t\t\t\t\t\theight: $document.height(),\n\t\t\t\t\t\twidth: $document.width()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\twindow: {\n\t\t\t\t\tscroll: {\n\t\t\t\t\t\t// the second ones are for IE compatibility\n\t\t\t\t\t\tleft: env.window.scrollX || env.window.document.documentElement.scrollLeft,\n\t\t\t\t\t\ttop: env.window.scrollY || env.window.document.documentElement.scrollTop\n\t\t\t\t\t},\n\t\t\t\t\tsize: {\n\t\t\t\t\t\theight: $window.height(),\n\t\t\t\t\t\twidth: $window.width()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\torigin: {\n\t\t\t\t\t// the origin has a fixed lineage if itself or one of its\n\t\t\t\t\t// ancestors has a fixed position\n\t\t\t\t\tfixedLineage: false,\n\t\t\t\t\t// relative to the document\n\t\t\t\t\toffset: {},\n\t\t\t\t\tsize: {\n\t\t\t\t\t\theight: bcr.bottom - bcr.top,\n\t\t\t\t\t\twidth: bcr.right - bcr.left\n\t\t\t\t\t},\n\t\t\t\t\tusemapImage: originIsArea ? $target[0] : null,\n\t\t\t\t\t// relative to the window\n\t\t\t\t\twindowOffset: {\n\t\t\t\t\t\tbottom: bcr.bottom,\n\t\t\t\t\t\tleft: bcr.left,\n\t\t\t\t\t\tright: bcr.right,\n\t\t\t\t\t\ttop: bcr.top\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tgeoFixed = false;\n\t\t\n\t\t// if the element is a map area, some properties may need\n\t\t// to be recalculated\n\t\tif (originIsArea) {\n\t\t\t\n\t\t\tvar shape = self._$origin.attr('shape'),\n\t\t\t\tcoords = self._$origin.attr('coords');\n\t\t\t\n\t\t\tif (coords) {\n\t\t\t\t\n\t\t\t\tcoords = coords.split(',');\n\t\t\t\t\n\t\t\t\t$.map(coords, function(val, i) {\n\t\t\t\t\tcoords[i] = parseInt(val);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t// if the image itself is the area, nothing more to do\n\t\t\tif (shape != 'default') {\n\t\t\t\t\n\t\t\t\tswitch(shape) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'circle':\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar circleCenterLeft = coords[0],\n\t\t\t\t\t\t\tcircleCenterTop = coords[1],\n\t\t\t\t\t\t\tcircleRadius = coords[2],\n\t\t\t\t\t\t\tareaTopOffset = circleCenterTop - circleRadius,\n\t\t\t\t\t\t\tareaLeftOffset = circleCenterLeft - circleRadius;\n\t\t\t\t\t\t\n\t\t\t\t\t\tgeo.origin.size.height = circleRadius * 2;\n\t\t\t\t\t\tgeo.origin.size.width = geo.origin.size.height;\n\t\t\t\t\t\t\n\t\t\t\t\t\tgeo.origin.windowOffset.left += areaLeftOffset;\n\t\t\t\t\t\tgeo.origin.windowOffset.top += areaTopOffset;\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase 'rect':\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar areaLeft = coords[0],\n\t\t\t\t\t\t\tareaTop = coords[1],\n\t\t\t\t\t\t\tareaRight = coords[2],\n\t\t\t\t\t\t\tareaBottom = coords[3];\n\t\t\t\t\t\t\n\t\t\t\t\t\tgeo.origin.size.height = areaBottom - areaTop;\n\t\t\t\t\t\tgeo.origin.size.width = areaRight - areaLeft;\n\t\t\t\t\t\t\n\t\t\t\t\t\tgeo.origin.windowOffset.left += areaLeft;\n\t\t\t\t\t\tgeo.origin.windowOffset.top += areaTop;\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase 'poly':\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar areaSmallestX = 0,\n\t\t\t\t\t\t\tareaSmallestY = 0,\n\t\t\t\t\t\t\tareaGreatestX = 0,\n\t\t\t\t\t\t\tareaGreatestY = 0,\n\t\t\t\t\t\t\tarrayAlternate = 'even';\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < coords.length; i++) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar areaNumber = coords[i];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (arrayAlternate == 'even') {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (areaNumber > areaGreatestX) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tareaGreatestX = areaNumber;\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\t\t\t\tareaSmallestX = areaGreatestX;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (areaNumber < areaSmallestX) {\n\t\t\t\t\t\t\t\t\tareaSmallestX = areaNumber;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tarrayAlternate = 'odd';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (areaNumber > areaGreatestY) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tareaGreatestY = areaNumber;\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (i == 1) {\n\t\t\t\t\t\t\t\t\t\tareaSmallestY = areaGreatestY;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (areaNumber < areaSmallestY) {\n\t\t\t\t\t\t\t\t\tareaSmallestY = areaNumber;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tarrayAlternate = 'even';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tgeo.origin.size.height = areaGreatestY - areaSmallestY;\n\t\t\t\t\t\tgeo.origin.size.width = areaGreatestX - areaSmallestX;\n\t\t\t\t\t\t\n\t\t\t\t\t\tgeo.origin.windowOffset.left += areaSmallestX;\n\t\t\t\t\t\tgeo.origin.windowOffset.top += areaSmallestY;\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// user callback through an event\n\t\tvar edit = function(r) {\n\t\t\tgeo.origin.size.height = r.height,\n\t\t\t\tgeo.origin.windowOffset.left = r.left,\n\t\t\t\tgeo.origin.windowOffset.top = r.top,\n\t\t\t\tgeo.origin.size.width = r.width\n\t\t};\n\t\t\n\t\tself._trigger({\n\t\t\ttype: 'geometry',\n\t\t\tedit: edit,\n\t\t\tgeometry: {\n\t\t\t\theight: geo.origin.size.height,\n\t\t\t\tleft: geo.origin.windowOffset.left,\n\t\t\t\ttop: geo.origin.windowOffset.top,\n\t\t\t\twidth: geo.origin.size.width\n\t\t\t}\n\t\t});\n\t\t\n\t\t// calculate the remaining properties with what we got\n\t\t\n\t\tgeo.origin.windowOffset.right = geo.origin.windowOffset.left + geo.origin.size.width;\n\t\tgeo.origin.windowOffset.bottom = geo.origin.windowOffset.top + geo.origin.size.height;\n\t\t\n\t\tgeo.origin.offset.left = geo.origin.windowOffset.left + geo.window.scroll.left;\n\t\tgeo.origin.offset.top = geo.origin.windowOffset.top + geo.window.scroll.top;\n\t\tgeo.origin.offset.bottom = geo.origin.offset.top + geo.origin.size.height;\n\t\tgeo.origin.offset.right = geo.origin.offset.left + geo.origin.size.width;\n\t\t\n\t\t// the space that is available to display the tooltip relatively to the document\n\t\tgeo.available.document = {\n\t\t\tbottom: {\n\t\t\t\theight: geo.document.size.height - geo.origin.offset.bottom,\n\t\t\t\twidth: geo.document.size.width\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\theight: geo.document.size.height,\n\t\t\t\twidth: geo.origin.offset.left\n\t\t\t},\n\t\t\tright: {\n\t\t\t\theight: geo.document.size.height,\n\t\t\t\twidth: geo.document.size.width - geo.origin.offset.right\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\theight: geo.origin.offset.top,\n\t\t\t\twidth: geo.document.size.width\n\t\t\t}\n\t\t};\n\t\t\n\t\t// the space that is available to display the tooltip relatively to the viewport\n\t\t// (the resulting values may be negative if the origin overflows the viewport)\n\t\tgeo.available.window = {\n\t\t\tbottom: {\n\t\t\t\t// the inner max is here to make sure the available height is no bigger\n\t\t\t\t// than the viewport height (when the origin is off screen at the top).\n\t\t\t\t// The outer max just makes sure that the height is not negative (when\n\t\t\t\t// the origin overflows at the bottom).\n\t\t\t\theight: Math.max(geo.window.size.height - Math.max(geo.origin.windowOffset.bottom, 0), 0),\n\t\t\t\twidth: geo.window.size.width\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\theight: geo.window.size.height,\n\t\t\t\twidth: Math.max(geo.origin.windowOffset.left, 0)\n\t\t\t},\n\t\t\tright: {\n\t\t\t\theight: geo.window.size.height,\n\t\t\t\twidth: Math.max(geo.window.size.width - Math.max(geo.origin.windowOffset.right, 0), 0)\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\theight: Math.max(geo.origin.windowOffset.top, 0),\n\t\t\t\twidth: geo.window.size.width\n\t\t\t}\n\t\t};\n\t\t\n\t\twhile ($parent[0].tagName.toLowerCase() != 'html') {\n\t\t\t\n\t\t\tif ($parent.css('position') == 'fixed') {\n\t\t\t\tgeo.origin.fixedLineage = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\t$parent = $parent.parent();\n\t\t}\n\t\t\n\t\treturn geo;\n\t},\n\t\n\t/**\n\t * Some options may need to be formated before being used\n\t * \n\t * @returns {self}\n\t * @private\n\t */\n\t__optionsFormat: function() {\n\t\t\n\t\tif (typeof this.__options.animationDuration == 'number') {\n\t\t\tthis.__options.animationDuration = [this.__options.animationDuration, this.__options.animationDuration];\n\t\t}\n\t\t\n\t\tif (typeof this.__options.delay == 'number') {\n\t\t\tthis.__options.delay = [this.__options.delay, this.__options.delay];\n\t\t}\n\t\t\n\t\tif (typeof this.__options.delayTouch == 'number') {\n\t\t\tthis.__options.delayTouch = [this.__options.delayTouch, this.__options.delayTouch];\n\t\t}\n\t\t\n\t\tif (typeof this.__options.theme == 'string') {\n\t\t\tthis.__options.theme = [this.__options.theme];\n\t\t}\n\t\t\n\t\t// determine the future parent\n\t\tif (this.__options.parent === null) {\n\t\t\tthis.__options.parent = $(env.window.document.body);\n\t\t}\n\t\telse if (typeof this.__options.parent == 'string') {\n\t\t\tthis.__options.parent = $(this.__options.parent);\n\t\t}\n\t\t\n\t\tif (this.__options.trigger == 'hover') {\n\t\t\t\n\t\t\tthis.__options.triggerOpen = {\n\t\t\t\tmouseenter: true,\n\t\t\t\ttouchstart: true\n\t\t\t};\n\t\t\t\n\t\t\tthis.__options.triggerClose = {\n\t\t\t\tmouseleave: true,\n\t\t\t\toriginClick: true,\n\t\t\t\ttouchleave: true\n\t\t\t};\n\t\t}\n\t\telse if (this.__options.trigger == 'click') {\n\t\t\t\n\t\t\tthis.__options.triggerOpen = {\n\t\t\t\tclick: true,\n\t\t\t\ttap: true\n\t\t\t};\n\t\t\t\n\t\t\tthis.__options.triggerClose = {\n\t\t\t\tclick: true,\n\t\t\t\ttap: true\n\t\t\t};\n\t\t}\n\t\t\n\t\t// for the plugins\n\t\tthis._trigger('options');\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Schedules or cancels the garbage collector task\n\t *\n\t * @returns {self}\n\t * @private\n\t */\n\t__prepareGC: function() {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\t// in case the selfDestruction option has been changed by a method call\n\t\tif (self.__options.selfDestruction) {\n\t\t\t\n\t\t\t// the GC task\n\t\t\tself.__garbageCollector = setInterval(function() {\n\t\t\t\t\n\t\t\t\tvar now = new Date().getTime();\n\t\t\t\t\n\t\t\t\t// forget the old events\n\t\t\t\tself.__touchEvents = $.grep(self.__touchEvents, function(event, i) {\n\t\t\t\t\t// 1 minute\n\t\t\t\t\treturn now - event.time > 60000;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// auto-destruct if the origin is gone\n\t\t\t\tif (!bodyContains(self._$origin)) {\n\t\t\t\t\t\n\t\t\t\t\tself.close(function(){\n\t\t\t\t\t\tself.destroy();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 20000);\n\t\t}\n\t\telse {\n\t\t\tclearInterval(self.__garbageCollector);\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Sets listeners on the origin if the open triggers require them.\n\t * Unlike the listeners set at opening time, these ones\n\t * remain even when the tooltip is closed. It has been made a\n\t * separate method so it can be called when the triggers are\n\t * changed in the options. Closing is handled in _open()\n\t * because of the bindings that may be needed on the tooltip\n\t * itself\n\t *\n\t * @returns {self}\n\t * @private\n\t */\n\t__prepareOrigin: function() {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\t// in case we're resetting the triggers\n\t\tself._$origin.off('.'+ self.__namespace +'-triggerOpen');\n\t\t\n\t\t// if the device is touch capable, even if only mouse triggers\n\t\t// are asked, we need to listen to touch events to know if the mouse\n\t\t// events are actually emulated (so we can ignore them)\n\t\tif (env.hasTouchCapability) {\n\t\t\t\n\t\t\tself._$origin.on(\n\t\t\t\t'touchstart.'+ self.__namespace +'-triggerOpen ' +\n\t\t\t\t'touchend.'+ self.__namespace +'-triggerOpen ' +\n\t\t\t\t'touchcancel.'+ self.__namespace +'-triggerOpen',\n\t\t\t\tfunction(event){\n\t\t\t\t\tself._touchRecordEvent(event);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\t\n\t\t// mouse click and touch tap work the same way\n\t\tif (\tself.__options.triggerOpen.click\n\t\t\t||\t(self.__options.triggerOpen.tap && env.hasTouchCapability)\n\t\t) {\n\t\t\t\n\t\t\tvar eventNames = '';\n\t\t\tif (self.__options.triggerOpen.click) {\n\t\t\t\teventNames += 'click.'+ self.__namespace +'-triggerOpen ';\n\t\t\t}\n\t\t\tif (self.__options.triggerOpen.tap && env.hasTouchCapability) {\n\t\t\t\teventNames += 'touchend.'+ self.__namespace +'-triggerOpen';\n\t\t\t}\n\t\t\t\n\t\t\tself._$origin.on(eventNames, function(event) {\n\t\t\t\tif (self._touchIsMeaningfulEvent(event)) {\n\t\t\t\t\tself._open(event);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\t// mouseenter and touch start work the same way\n\t\tif (\tself.__options.triggerOpen.mouseenter\n\t\t\t||\t(self.__options.triggerOpen.touchstart && env.hasTouchCapability)\n\t\t) {\n\t\t\t\n\t\t\tvar eventNames = '';\n\t\t\tif (self.__options.triggerOpen.mouseenter) {\n\t\t\t\teventNames += 'mouseenter.'+ self.__namespace +'-triggerOpen ';\n\t\t\t}\n\t\t\tif (self.__options.triggerOpen.touchstart && env.hasTouchCapability) {\n\t\t\t\teventNames += 'touchstart.'+ self.__namespace +'-triggerOpen';\n\t\t\t}\n\t\t\t\n\t\t\tself._$origin.on(eventNames, function(event) {\n\t\t\t\tif (\tself._touchIsTouchEvent(event)\n\t\t\t\t\t||\t!self._touchIsEmulatedEvent(event)\n\t\t\t\t) {\n\t\t\t\t\tself.__pointerIsOverOrigin = true;\n\t\t\t\t\tself._openShortly(event);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\t// info for the mouseleave/touchleave close triggers when they use a delay\n\t\tif (\tself.__options.triggerClose.mouseleave\n\t\t\t||\t(self.__options.triggerClose.touchleave && env.hasTouchCapability)\n\t\t) {\n\t\t\t\n\t\t\tvar eventNames = '';\n\t\t\tif (self.__options.triggerClose.mouseleave) {\n\t\t\t\teventNames += 'mouseleave.'+ self.__namespace +'-triggerOpen ';\n\t\t\t}\n\t\t\tif (self.__options.triggerClose.touchleave && env.hasTouchCapability) {\n\t\t\t\teventNames += 'touchend.'+ self.__namespace +'-triggerOpen touchcancel.'+ self.__namespace +'-triggerOpen';\n\t\t\t}\n\t\t\t\n\t\t\tself._$origin.on(eventNames, function(event) {\n\t\t\t\t\n\t\t\t\tif (self._touchIsMeaningfulEvent(event)) {\n\t\t\t\t\tself.__pointerIsOverOrigin = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Do the things that need to be done only once after the tooltip\n\t * HTML element it has been created. It has been made a separate\n\t * method so it can be called when options are changed. Remember\n\t * that the tooltip may actually exist in the DOM before it is\n\t * opened, and present after it has been closed: it's the display\n\t * plugin that takes care of handling it.\n\t * \n\t * @returns {self}\n\t * @private\n\t */\n\t__prepareTooltip: function() {\n\t\t\n\t\tvar self = this,\n\t\t\tp = self.__options.interactive ? 'auto' : '';\n\t\t\n\t\t// this will be useful to know quickly if the tooltip is in\n\t\t// the DOM or not \n\t\tself._$tooltip\n\t\t\t.attr('id', self.__namespace)\n\t\t\t.css({\n\t\t\t\t// pointer events\n\t\t\t\t'pointer-events': p,\n\t\t\t\tzIndex: self.__options.zIndex\n\t\t\t});\n\t\t\n\t\t// themes\n\t\t// remove the old ones and add the new ones\n\t\t$.each(self.__previousThemes, function(i, theme) {\n\t\t\tself._$tooltip.removeClass(theme);\n\t\t});\n\t\t$.each(self.__options.theme, function(i, theme) {\n\t\t\tself._$tooltip.addClass(theme);\n\t\t});\n\t\t\n\t\tself.__previousThemes = $.merge([], self.__options.theme);\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Handles the scroll on any of the parents of the origin (when the\n\t * tooltip is open)\n\t *\n\t * @param {object} event\n\t * @returns {self}\n\t * @private\n\t */\n\t__scrollHandler: function(event) {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\tif (self.__options.triggerClose.scroll) {\n\t\t\tself._close(event);\n\t\t}\n\t\telse {\n\t\t\t\n\t\t\t// if the origin or tooltip have been removed: do nothing, the tracker will\n\t\t\t// take care of it later\n\t\t\tif (bodyContains(self._$origin) && bodyContains(self._$tooltip)) {\n\t\t\t\t\n\t\t\t\tvar geo = null;\n\t\t\t\t\n\t\t\t\t// if the scroll happened on the window\n\t\t\t\tif (event.target === env.window.document) {\n\t\t\t\t\t\n\t\t\t\t\t// if the origin has a fixed lineage, window scroll will have no\n\t\t\t\t\t// effect on its position nor on the position of the tooltip\n\t\t\t\t\tif (!self.__Geometry.origin.fixedLineage) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// we don't need to do anything unless repositionOnScroll is true\n\t\t\t\t\t\t// because the tooltip will already have moved with the window\n\t\t\t\t\t\t// (and of course with the origin)\n\t\t\t\t\t\tif (self.__options.repositionOnScroll) {\n\t\t\t\t\t\t\tself.reposition(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// if the scroll happened on another parent of the tooltip, it means\n\t\t\t\t// that it's in a scrollable area and now needs to have its position\n\t\t\t\t// adjusted or recomputed, depending ont the repositionOnScroll\n\t\t\t\t// option. Also, if the origin is partly hidden due to a parent that\n\t\t\t\t// hides its overflow, we'll just hide (not close) the tooltip.\n\t\t\t\telse {\n\t\t\t\t\t\n\t\t\t\t\tgeo = self.__geometry();\n\t\t\t\t\t\n\t\t\t\t\tvar overflows = false;\n\t\t\t\t\t\n\t\t\t\t\t// a fixed position origin is not affected by the overflow hiding\n\t\t\t\t\t// of a parent\n\t\t\t\t\tif (self._$origin.css('position') != 'fixed') {\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.__$originParents.each(function(i, el) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar $el = $(el),\n\t\t\t\t\t\t\t\toverflowX = $el.css('overflow-x'),\n\t\t\t\t\t\t\t\toverflowY = $el.css('overflow-y');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (overflowX != 'visible' || overflowY != 'visible') {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tvar bcr = el.getBoundingClientRect();\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (overflowX != 'visible') {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (\tgeo.origin.windowOffset.left < bcr.left\n\t\t\t\t\t\t\t\t\t\t||\tgeo.origin.windowOffset.right > bcr.right\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\toverflows = true;\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (overflowY != 'visible') {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (\tgeo.origin.windowOffset.top < bcr.top\n\t\t\t\t\t\t\t\t\t\t||\tgeo.origin.windowOffset.bottom > bcr.bottom\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\toverflows = true;\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// no need to go further if fixed, for the same reason as above\n\t\t\t\t\t\t\tif ($el.css('position') == 'fixed') {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (overflows) {\n\t\t\t\t\t\tself._$tooltip.css('visibility', 'hidden');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._$tooltip.css('visibility', 'visible');\n\t\t\t\t\t\t\n\t\t\t\t\t\t// reposition\n\t\t\t\t\t\tif (self.__options.repositionOnScroll) {\n\t\t\t\t\t\t\tself.reposition(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// or just adjust offset\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// we have to use offset and not windowOffset because this way,\n\t\t\t\t\t\t\t// only the scroll distance of the scrollable areas are taken into\n\t\t\t\t\t\t\t// account (the scrolltop value of the main window must be\n\t\t\t\t\t\t\t// ignored since the tooltip already moves with it)\n\t\t\t\t\t\t\tvar offsetLeft = geo.origin.offset.left - self.__Geometry.origin.offset.left,\n\t\t\t\t\t\t\t\toffsetTop = geo.origin.offset.top - self.__Geometry.origin.offset.top;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// add the offset to the position initially computed by the display plugin\n\t\t\t\t\t\t\tself._$tooltip.css({\n\t\t\t\t\t\t\t\tleft: self.__lastPosition.coord.left + offsetLeft,\n\t\t\t\t\t\t\t\ttop: self.__lastPosition.coord.top + offsetTop\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tself._trigger({\n\t\t\t\t\ttype: 'scroll',\n\t\t\t\t\tevent: event,\n\t\t\t\t\tgeo: geo\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Changes the state of the tooltip\n\t *\n\t * @param {string} state\n\t * @returns {self}\n\t * @private\n\t */\n\t__stateSet: function(state) {\n\t\t\n\t\tthis.__state = state;\n\t\t\n\t\tthis._trigger({\n\t\t\ttype: 'state',\n\t\t\tstate: state\n\t\t});\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Clear appearance timeouts\n\t *\n\t * @returns {self}\n\t * @private\n\t */\n\t__timeoutsClear: function() {\n\t\t\n\t\t// there is only one possible open timeout: the delayed opening\n\t\t// when the mouseenter/touchstart open triggers are used\n\t\tclearTimeout(this.__timeouts.open);\n\t\tthis.__timeouts.open = null;\n\t\t\n\t\t// ... but several close timeouts: the delayed closing when the\n\t\t// mouseleave close trigger is used and the timer option\n\t\t$.each(this.__timeouts.close, function(i, timeout) {\n\t\t\tclearTimeout(timeout);\n\t\t});\n\t\tthis.__timeouts.close = [];\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Start the tracker that will make checks at regular intervals\n\t * \n\t * @returns {self}\n\t * @private\n\t */\n\t__trackerStart: function() {\n\t\t\n\t\tvar self = this,\n\t\t\t$content = self._$tooltip.find('.tooltipster-content');\n\t\t\n\t\t// get the initial content size\n\t\tif (self.__options.trackTooltip) {\n\t\t\tself.__contentBcr = $content[0].getBoundingClientRect();\n\t\t}\n\t\t\n\t\tself.__tracker = setInterval(function() {\n\t\t\t\n\t\t\t// if the origin or tooltip elements have been removed.\n\t\t\t// Note: we could destroy the instance now if the origin has\n\t\t\t// been removed but we'll leave that task to our garbage collector\n\t\t\tif (!bodyContains(self._$origin) || !bodyContains(self._$tooltip)) {\n\t\t\t\tself._close();\n\t\t\t}\n\t\t\t// if everything is alright\n\t\t\telse {\n\t\t\t\t\n\t\t\t\t// compare the former and current positions of the origin to reposition\n\t\t\t\t// the tooltip if need be\n\t\t\t\tif (self.__options.trackOrigin) {\n\t\t\t\t\t\n\t\t\t\t\tvar g = self.__geometry(),\n\t\t\t\t\t\tidentical = false;\n\t\t\t\t\t\n\t\t\t\t\t// compare size first (a change requires repositioning too)\n\t\t\t\t\tif (areEqual(g.origin.size, self.__Geometry.origin.size)) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// for elements that have a fixed lineage (see __geometry()), we track the\n\t\t\t\t\t\t// top and left properties (relative to window)\n\t\t\t\t\t\tif (self.__Geometry.origin.fixedLineage) {\n\t\t\t\t\t\t\tif (areEqual(g.origin.windowOffset, self.__Geometry.origin.windowOffset)) {\n\t\t\t\t\t\t\t\tidentical = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// otherwise, track total offset (relative to document)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (areEqual(g.origin.offset, self.__Geometry.origin.offset)) {\n\t\t\t\t\t\t\t\tidentical = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!identical) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// close the tooltip when using the mouseleave close trigger\n\t\t\t\t\t\t// (see https://github.com/calebjacob/tooltipster/pull/253)\n\t\t\t\t\t\tif (self.__options.triggerClose.mouseleave) {\n\t\t\t\t\t\t\tself._close();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tself.reposition();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (self.__options.trackTooltip) {\n\t\t\t\t\t\n\t\t\t\t\tvar currentBcr = $content[0].getBoundingClientRect();\n\t\t\t\t\t\n\t\t\t\t\tif (\tcurrentBcr.height !== self.__contentBcr.height\n\t\t\t\t\t\t||\tcurrentBcr.width !== self.__contentBcr.width\n\t\t\t\t\t) {\n\t\t\t\t\t\tself.reposition();\n\t\t\t\t\t\tself.__contentBcr = currentBcr;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, self.__options.trackerInterval);\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Closes the tooltip (after the closing delay)\n\t * \n\t * @param event\n\t * @param callback\n\t * @param force Set to true to override a potential refusal of the user's function\n\t * @returns {self}\n\t * @protected\n\t */\n\t_close: function(event, callback, force) {\n\t\t\n\t\tvar self = this,\n\t\t\tok = true;\n\t\t\n\t\tself._trigger({\n\t\t\ttype: 'close',\n\t\t\tevent: event,\n\t\t\tstop: function() {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\t// a destroying tooltip (force == true) may not refuse to close\n\t\tif (ok || force) {\n\t\t\t\n\t\t\t// save the method custom callback and cancel any open method custom callbacks\n\t\t\tif (callback) self.__callbacks.close.push(callback);\n\t\t\tself.__callbacks.open = [];\n\t\t\t\n\t\t\t// clear open/close timeouts\n\t\t\tself.__timeoutsClear();\n\t\t\t\n\t\t\tvar finishCallbacks = function() {\n\t\t\t\t\n\t\t\t\t// trigger any close method custom callbacks and reset them\n\t\t\t\t$.each(self.__callbacks.close, function(i,c) {\n\t\t\t\t\tc.call(self, self, {\n\t\t\t\t\t\tevent: event,\n\t\t\t\t\t\torigin: self._$origin[0]\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tself.__callbacks.close = [];\n\t\t\t};\n\t\t\t\n\t\t\tif (self.__state != 'closed') {\n\t\t\t\t\n\t\t\t\tvar necessary = true,\n\t\t\t\t\td = new Date(),\n\t\t\t\t\tnow = d.getTime(),\n\t\t\t\t\tnewClosingTime = now + self.__options.animationDuration[1];\n\t\t\t\t\n\t\t\t\t// the tooltip may already already be disappearing, but if a new\n\t\t\t\t// call to close() is made after the animationDuration was changed\n\t\t\t\t// to 0 (for example), we ought to actually close it sooner than\n\t\t\t\t// previously scheduled. In that case it should be noted that the\n\t\t\t\t// browser will not adapt the animation duration to the new\n\t\t\t\t// animationDuration that was set after the start of the closing\n\t\t\t\t// animation.\n\t\t\t\t// Note: the same thing could be considered at opening, but is not\n\t\t\t\t// really useful since the tooltip is actually opened immediately\n\t\t\t\t// upon a call to _open(). Since it would not make the opening\n\t\t\t\t// animation finish sooner, its sole impact would be to trigger the\n\t\t\t\t// state event and the open callbacks sooner than the actual end of\n\t\t\t\t// the opening animation, which is not great.\n\t\t\t\tif (self.__state == 'disappearing') {\n\t\t\t\t\t\n\t\t\t\t\tif (\tnewClosingTime > self.__closingTime\n\t\t\t\t\t\t// in case closing is actually overdue because the script\n\t\t\t\t\t\t// execution was suspended. See #679\n\t\t\t\t\t\t&&\tself.__options.animationDuration[1] > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tnecessary = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (necessary) {\n\t\t\t\t\t\n\t\t\t\t\tself.__closingTime = newClosingTime;\n\t\t\t\t\t\n\t\t\t\t\tif (self.__state != 'disappearing') {\n\t\t\t\t\t\tself.__stateSet('disappearing');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar finish = function() {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// stop the tracker\n\t\t\t\t\t\tclearInterval(self.__tracker);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// a \"beforeClose\" option has been asked several times but would\n\t\t\t\t\t\t// probably useless since the content element is still accessible\n\t\t\t\t\t\t// via ::content(), and because people can always use listeners\n\t\t\t\t\t\t// inside their content to track what's going on. For the sake of\n\t\t\t\t\t\t// simplicity, this has been denied. Bur for the rare people who\n\t\t\t\t\t\t// really need the option (for old browsers or for the case where\n\t\t\t\t\t\t// detaching the content is actually destructive, for file or\n\t\t\t\t\t\t// password inputs for example), this event will do the work.\n\t\t\t\t\t\tself._trigger({\n\t\t\t\t\t\t\ttype: 'closing',\n\t\t\t\t\t\t\tevent: event\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t// unbind listeners which are no longer needed\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._$tooltip\n\t\t\t\t\t\t\t.off('.'+ self.__namespace +'-triggerClose')\n\t\t\t\t\t\t\t.removeClass('tooltipster-dying');\n\t\t\t\t\t\t\n\t\t\t\t\t\t// orientationchange, scroll and resize listeners\n\t\t\t\t\t\t$(env.window).off('.'+ self.__namespace +'-triggerClose');\n\t\t\t\t\t\t\n\t\t\t\t\t\t// scroll listeners\n\t\t\t\t\t\tself.__$originParents.each(function(i, el) {\n\t\t\t\t\t\t\t$(el).off('scroll.'+ self.__namespace +'-triggerClose');\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// clear the array to prevent memory leaks\n\t\t\t\t\t\tself.__$originParents = null;\n\t\t\t\t\t\t\n\t\t\t\t\t\t$(env.window.document.body).off('.'+ self.__namespace +'-triggerClose');\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._$origin.off('.'+ self.__namespace +'-triggerClose');\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._off('dismissable');\n\t\t\t\t\t\t\n\t\t\t\t\t\t// a plugin that would like to remove the tooltip from the\n\t\t\t\t\t\t// DOM when closed should bind on this\n\t\t\t\t\t\tself.__stateSet('closed');\n\t\t\t\t\t\t\n\t\t\t\t\t\t// trigger event\n\t\t\t\t\t\tself._trigger({\n\t\t\t\t\t\t\ttype: 'after',\n\t\t\t\t\t\t\tevent: event\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t// call our constructor custom callback function\n\t\t\t\t\t\tif (self.__options.functionAfter) {\n\t\t\t\t\t\t\tself.__options.functionAfter.call(self, self, {\n\t\t\t\t\t\t\t\tevent: event,\n\t\t\t\t\t\t\t\torigin: self._$origin[0]\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// call our method custom callbacks functions\n\t\t\t\t\t\tfinishCallbacks();\n\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\tif (env.hasTransitions) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._$tooltip.css({\n\t\t\t\t\t\t\t'-moz-animation-duration': self.__options.animationDuration[1] + 'ms',\n\t\t\t\t\t\t\t'-ms-animation-duration': self.__options.animationDuration[1] + 'ms',\n\t\t\t\t\t\t\t'-o-animation-duration': self.__options.animationDuration[1] + 'ms',\n\t\t\t\t\t\t\t'-webkit-animation-duration': self.__options.animationDuration[1] + 'ms',\n\t\t\t\t\t\t\t'animation-duration': self.__options.animationDuration[1] + 'ms',\n\t\t\t\t\t\t\t'transition-duration': self.__options.animationDuration[1] + 'ms'\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._$tooltip\n\t\t\t\t\t\t\t// clear both potential open and close tasks\n\t\t\t\t\t\t\t.clearQueue()\n\t\t\t\t\t\t\t.removeClass('tooltipster-show')\n\t\t\t\t\t\t\t// for transitions only\n\t\t\t\t\t\t\t.addClass('tooltipster-dying');\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (self.__options.animationDuration[1] > 0) {\n\t\t\t\t\t\t\tself._$tooltip.delay(self.__options.animationDuration[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._$tooltip.queue(finish);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._$tooltip\n\t\t\t\t\t\t\t.stop()\n\t\t\t\t\t\t\t.fadeOut(self.__options.animationDuration[1], finish);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// if the tooltip is already closed, we still need to trigger\n\t\t\t// the method custom callbacks\n\t\t\telse {\n\t\t\t\tfinishCallbacks();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * For internal use by plugins, if needed\n\t * \n\t * @returns {self}\n\t * @protected\n\t */\n\t_off: function() {\n\t\tthis.__$emitterPrivate.off.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For internal use by plugins, if needed\n\t *\n\t * @returns {self}\n\t * @protected\n\t */\n\t_on: function() {\n\t\tthis.__$emitterPrivate.on.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For internal use by plugins, if needed\n\t *\n\t * @returns {self}\n\t * @protected\n\t */\n\t_one: function() {\n\t\tthis.__$emitterPrivate.one.apply(this.__$emitterPrivate, Array.prototype.slice.apply(arguments));\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Opens the tooltip right away.\n\t *\n\t * @param event\n\t * @param callback Will be called when the opening animation is over\n\t * @returns {self}\n\t * @protected\n\t */\n\t_open: function(event, callback) {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\t// if the destruction process has not begun and if this was not\n\t\t// triggered by an unwanted emulated click event\n\t\tif (!self.__destroying) {\n\t\t\t\n\t\t\t// check that the origin is still in the DOM\n\t\t\tif (\tbodyContains(self._$origin)\n\t\t\t\t// if the tooltip is enabled\n\t\t\t\t&&\tself.__enabled\n\t\t\t) {\n\t\t\t\t\n\t\t\t\tvar ok = true;\n\t\t\t\t\n\t\t\t\t// if the tooltip is not open yet, we need to call functionBefore.\n\t\t\t\t// otherwise we can jst go on\n\t\t\t\tif (self.__state == 'closed') {\n\t\t\t\t\t\n\t\t\t\t\t// trigger an event. The event.stop function allows the callback\n\t\t\t\t\t// to prevent the opening of the tooltip\n\t\t\t\t\tself._trigger({\n\t\t\t\t\t\ttype: 'before',\n\t\t\t\t\t\tevent: event,\n\t\t\t\t\t\tstop: function() {\n\t\t\t\t\t\t\tok = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif (ok && self.__options.functionBefore) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// call our custom function before continuing\n\t\t\t\t\t\tok = self.__options.functionBefore.call(self, self, {\n\t\t\t\t\t\t\tevent: event,\n\t\t\t\t\t\t\torigin: self._$origin[0]\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (ok !== false) {\n\t\t\t\t\t\n\t\t\t\t\t// if there is some content\n\t\t\t\t\tif (self.__Content !== null) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// save the method callback and cancel close method callbacks\n\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\tself.__callbacks.open.push(callback);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.__callbacks.close = [];\n\t\t\t\t\t\t\n\t\t\t\t\t\t// get rid of any appearance timeouts\n\t\t\t\t\t\tself.__timeoutsClear();\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar extraTime,\n\t\t\t\t\t\t\tfinish = function() {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (self.__state != 'stable') {\n\t\t\t\t\t\t\t\t\tself.__stateSet('stable');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// trigger any open method custom callbacks and reset them\n\t\t\t\t\t\t\t\t$.each(self.__callbacks.open, function(i,c) {\n\t\t\t\t\t\t\t\t\tc.call(self, self, {\n\t\t\t\t\t\t\t\t\t\torigin: self._$origin[0],\n\t\t\t\t\t\t\t\t\t\ttooltip: self._$tooltip[0]\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tself.__callbacks.open = [];\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\t// if the tooltip is already open\n\t\t\t\t\t\tif (self.__state !== 'closed') {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// the timer (if any) will start (or restart) right now\n\t\t\t\t\t\t\textraTime = 0;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// if it was disappearing, cancel that\n\t\t\t\t\t\t\tif (self.__state === 'disappearing') {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tself.__stateSet('appearing');\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (env.hasTransitions) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tself._$tooltip\n\t\t\t\t\t\t\t\t\t\t.clearQueue()\n\t\t\t\t\t\t\t\t\t\t.removeClass('tooltipster-dying')\n\t\t\t\t\t\t\t\t\t\t.addClass('tooltipster-show');\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (self.__options.animationDuration[0] > 0) {\n\t\t\t\t\t\t\t\t\t\tself._$tooltip.delay(self.__options.animationDuration[0]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tself._$tooltip.queue(finish);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t// in case the tooltip was currently fading out, bring it back\n\t\t\t\t\t\t\t\t\t// to life\n\t\t\t\t\t\t\t\t\tself._$tooltip\n\t\t\t\t\t\t\t\t\t\t.stop()\n\t\t\t\t\t\t\t\t\t\t.fadeIn(finish);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// if the tooltip is already open, we still need to trigger the method\n\t\t\t\t\t\t\t// custom callback\n\t\t\t\t\t\t\telse if (self.__state == 'stable') {\n\t\t\t\t\t\t\t\tfinish();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// if the tooltip isn't already open, open it\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// a plugin must bind on this and store the tooltip in this._$tooltip\n\t\t\t\t\t\t\tself.__stateSet('appearing');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// the timer (if any) will start when the tooltip has fully appeared\n\t\t\t\t\t\t\t// after its transition\n\t\t\t\t\t\t\textraTime = self.__options.animationDuration[0];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// insert the content inside the tooltip\n\t\t\t\t\t\t\tself.__contentInsert();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// reposition the tooltip and attach to the DOM\n\t\t\t\t\t\t\tself.reposition(event, true);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// animate in the tooltip. If the display plugin wants no css\n\t\t\t\t\t\t\t// animations, it may override the animation option with a\n\t\t\t\t\t\t\t// dummy value that will produce no effect\n\t\t\t\t\t\t\tif (env.hasTransitions) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// note: there seems to be an issue with start animations which\n\t\t\t\t\t\t\t\t// are randomly not played on fast devices in both Chrome and FF,\n\t\t\t\t\t\t\t\t// couldn't find a way to solve it yet. It seems that applying\n\t\t\t\t\t\t\t\t// the classes before appending to the DOM helps a little, but\n\t\t\t\t\t\t\t\t// it messes up some CSS transitions. The issue almost never\n\t\t\t\t\t\t\t\t// happens when delay[0]==0 though\n\t\t\t\t\t\t\t\tself._$tooltip\n\t\t\t\t\t\t\t\t\t.addClass('tooltipster-'+ self.__options.animation)\n\t\t\t\t\t\t\t\t\t.addClass('tooltipster-initial')\n\t\t\t\t\t\t\t\t\t.css({\n\t\t\t\t\t\t\t\t\t\t'-moz-animation-duration': self.__options.animationDuration[0] + 'ms',\n\t\t\t\t\t\t\t\t\t\t'-ms-animation-duration': self.__options.animationDuration[0] + 'ms',\n\t\t\t\t\t\t\t\t\t\t'-o-animation-duration': self.__options.animationDuration[0] + 'ms',\n\t\t\t\t\t\t\t\t\t\t'-webkit-animation-duration': self.__options.animationDuration[0] + 'ms',\n\t\t\t\t\t\t\t\t\t\t'animation-duration': self.__options.animationDuration[0] + 'ms',\n\t\t\t\t\t\t\t\t\t\t'transition-duration': self.__options.animationDuration[0] + 'ms'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// a quick hover may have already triggered a mouseleave\n\t\t\t\t\t\t\t\t\t\tif (self.__state != 'closed') {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tself._$tooltip\n\t\t\t\t\t\t\t\t\t\t\t\t.addClass('tooltipster-show')\n\t\t\t\t\t\t\t\t\t\t\t\t.removeClass('tooltipster-initial');\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tif (self.__options.animationDuration[0] > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tself._$tooltip.delay(self.__options.animationDuration[0]);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tself._$tooltip.queue(finish);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// old browsers will have to live with this\n\t\t\t\t\t\t\t\tself._$tooltip\n\t\t\t\t\t\t\t\t\t.css('display', 'none')\n\t\t\t\t\t\t\t\t\t.fadeIn(self.__options.animationDuration[0], finish);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// checks if the origin is removed while the tooltip is open\n\t\t\t\t\t\t\tself.__trackerStart();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// NOTE: the listeners below have a '-triggerClose' namespace\n\t\t\t\t\t\t\t// because we'll remove them when the tooltip closes (unlike\n\t\t\t\t\t\t\t// the '-triggerOpen' listeners). So some of them are actually\n\t\t\t\t\t\t\t// not about close triggers, rather about positioning.\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t$(env.window)\n\t\t\t\t\t\t\t\t// reposition on resize\n\t\t\t\t\t\t\t\t.on('resize.'+ self.__namespace +'-triggerClose', function(e) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tvar $ae = $(document.activeElement);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t// reposition only if the resize event was not triggered upon the opening\n\t\t\t\t\t\t\t\t\t// of a virtual keyboard due to an input field being focused within the tooltip\n\t\t\t\t\t\t\t\t\t// (otherwise the repositioning would lose the focus)\n\t\t\t\t\t\t\t\t\tif (\t(!$ae.is('input') && !$ae.is('textarea'))\n\t\t\t\t\t\t\t\t\t\t||\t!$.contains(self._$tooltip[0], $ae[0])\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tself.reposition(e);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t// same as below for parents\n\t\t\t\t\t\t\t\t.on('scroll.'+ self.__namespace +'-triggerClose', function(e) {\n\t\t\t\t\t\t\t\t\tself.__scrollHandler(e);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.__$originParents = self._$origin.parents();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// scrolling may require the tooltip to be moved or even\n\t\t\t\t\t\t\t// repositioned in some cases\n\t\t\t\t\t\t\tself.__$originParents.each(function(i, parent) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t$(parent).on('scroll.'+ self.__namespace +'-triggerClose', function(e) {\n\t\t\t\t\t\t\t\t\tself.__scrollHandler(e);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (\tself.__options.triggerClose.mouseleave\n\t\t\t\t\t\t\t\t||\t(self.__options.triggerClose.touchleave && env.hasTouchCapability)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// we use an event to allow users/plugins to control when the mouseleave/touchleave\n\t\t\t\t\t\t\t\t// close triggers will come to action. It allows to have more triggering elements\n\t\t\t\t\t\t\t\t// than just the origin and the tooltip for example, or to cancel/delay the closing,\n\t\t\t\t\t\t\t\t// or to make the tooltip interactive even if it wasn't when it was open, etc.\n\t\t\t\t\t\t\t\tself._on('dismissable', function(event) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (event.dismissable) {\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tif (event.delay) {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\ttimeout = setTimeout(function() {\n\t\t\t\t\t\t\t\t\t\t\t\t// event.event may be undefined\n\t\t\t\t\t\t\t\t\t\t\t\tself._close(event.event);\n\t\t\t\t\t\t\t\t\t\t\t}, event.delay);\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tself.__timeouts.close.push(timeout);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tself._close(event);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// now set the listeners that will trigger 'dismissable' events\n\t\t\t\t\t\t\t\tvar $elements = self._$origin,\n\t\t\t\t\t\t\t\t\teventNamesIn = '',\n\t\t\t\t\t\t\t\t\teventNamesOut = '',\n\t\t\t\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// if we have to allow interaction, bind on the tooltip too\n\t\t\t\t\t\t\t\tif (self.__options.interactive) {\n\t\t\t\t\t\t\t\t\t$elements = $elements.add(self._$tooltip);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (self.__options.triggerClose.mouseleave) {\n\t\t\t\t\t\t\t\t\teventNamesIn += 'mouseenter.'+ self.__namespace +'-triggerClose ';\n\t\t\t\t\t\t\t\t\teventNamesOut += 'mouseleave.'+ self.__namespace +'-triggerClose ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (self.__options.triggerClose.touchleave && env.hasTouchCapability) {\n\t\t\t\t\t\t\t\t\teventNamesIn += 'touchstart.'+ self.__namespace +'-triggerClose';\n\t\t\t\t\t\t\t\t\teventNamesOut += 'touchend.'+ self.__namespace +'-triggerClose touchcancel.'+ self.__namespace +'-triggerClose';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t$elements\n\t\t\t\t\t\t\t\t\t// close after some time spent outside of the elements\n\t\t\t\t\t\t\t\t\t.on(eventNamesOut, function(event) {\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// it's ok if the touch gesture ended up to be a swipe,\n\t\t\t\t\t\t\t\t\t\t// it's still a \"touch leave\" situation\n\t\t\t\t\t\t\t\t\t\tif (\tself._touchIsTouchEvent(event)\n\t\t\t\t\t\t\t\t\t\t\t||\t!self._touchIsEmulatedEvent(event)\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tvar delay = (event.type == 'mouseleave') ?\n\t\t\t\t\t\t\t\t\t\t\t\tself.__options.delay :\n\t\t\t\t\t\t\t\t\t\t\t\tself.__options.delayTouch;\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tself._trigger({\n\t\t\t\t\t\t\t\t\t\t\t\tdelay: delay[1],\n\t\t\t\t\t\t\t\t\t\t\t\tdismissable: true,\n\t\t\t\t\t\t\t\t\t\t\t\tevent: event,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'dismissable'\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t// suspend the mouseleave timeout when the pointer comes back\n\t\t\t\t\t\t\t\t\t// over the elements\n\t\t\t\t\t\t\t\t\t.on(eventNamesIn, function(event) {\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// it's also ok if the touch event is a swipe gesture\n\t\t\t\t\t\t\t\t\t\tif (\tself._touchIsTouchEvent(event)\n\t\t\t\t\t\t\t\t\t\t\t||\t!self._touchIsEmulatedEvent(event)\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tself._trigger({\n\t\t\t\t\t\t\t\t\t\t\t\tdismissable: false,\n\t\t\t\t\t\t\t\t\t\t\t\tevent: event,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'dismissable'\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// close the tooltip when the origin gets a mouse click (common behavior of\n\t\t\t\t\t\t\t// native tooltips)\n\t\t\t\t\t\t\tif (self.__options.triggerClose.originClick) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tself._$origin.on('click.'+ self.__namespace + '-triggerClose', function(event) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t// we could actually let a tap trigger this but this feature just\n\t\t\t\t\t\t\t\t\t// does not make sense on touch devices\n\t\t\t\t\t\t\t\t\tif (\t!self._touchIsTouchEvent(event)\n\t\t\t\t\t\t\t\t\t\t&&\t!self._touchIsEmulatedEvent(event)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tself._close(event);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// set the same bindings for click and touch on the body to close the tooltip\n\t\t\t\t\t\t\tif (\tself.__options.triggerClose.click\n\t\t\t\t\t\t\t\t||\t(self.__options.triggerClose.tap && env.hasTouchCapability)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// don't set right away since the click/tap event which triggered this method\n\t\t\t\t\t\t\t\t// (if it was a click/tap) is going to bubble up to the body, we don't want it\n\t\t\t\t\t\t\t\t// to close the tooltip immediately after it opened\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (self.__state != 'closed') {\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tvar eventNames = '',\n\t\t\t\t\t\t\t\t\t\t\t$body = $(env.window.document.body);\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tif (self.__options.triggerClose.click) {\n\t\t\t\t\t\t\t\t\t\t\teventNames += 'click.'+ self.__namespace +'-triggerClose ';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (self.__options.triggerClose.tap && env.hasTouchCapability) {\n\t\t\t\t\t\t\t\t\t\t\teventNames += 'touchend.'+ self.__namespace +'-triggerClose';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t$body.on(eventNames, function(event) {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tif (self._touchIsMeaningfulEvent(event)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tself._touchRecordEvent(event);\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tif (!self.__options.interactive || !$.contains(self._$tooltip[0], event.target)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tself._close(event);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// needed to detect and ignore swiping\n\t\t\t\t\t\t\t\t\t\tif (self.__options.triggerClose.tap && env.hasTouchCapability) {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t$body.on('touchstart.'+ self.__namespace +'-triggerClose', function(event) {\n\t\t\t\t\t\t\t\t\t\t\t\tself._touchRecordEvent(event);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself._trigger('ready');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// call our custom callback\n\t\t\t\t\t\t\tif (self.__options.functionReady) {\n\t\t\t\t\t\t\t\tself.__options.functionReady.call(self, self, {\n\t\t\t\t\t\t\t\t\torigin: self._$origin[0],\n\t\t\t\t\t\t\t\t\ttooltip: self._$tooltip[0]\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// if we have a timer set, let the countdown begin\n\t\t\t\t\t\tif (self.__options.timer > 0) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar timeout = setTimeout(function() {\n\t\t\t\t\t\t\t\tself._close();\n\t\t\t\t\t\t\t}, self.__options.timer + extraTime);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.__timeouts.close.push(timeout);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * When using the mouseenter/touchstart open triggers, this function will\n\t * schedule the opening of the tooltip after the delay, if there is one\n\t *\n\t * @param event\n\t * @returns {self}\n\t * @protected\n \t */\n\t_openShortly: function(event) {\n\t\t\n\t\tvar self = this,\n\t\t\tok = true;\n\t\t\n\t\tif (self.__state != 'stable' && self.__state != 'appearing') {\n\t\t\t\n\t\t\t// if a timeout is not already running\n\t\t\tif (!self.__timeouts.open) {\n\t\t\t\t\n\t\t\t\tself._trigger({\n\t\t\t\t\ttype: 'start',\n\t\t\t\t\tevent: event,\n\t\t\t\t\tstop: function() {\n\t\t\t\t\t\tok = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif (ok) {\n\t\t\t\t\t\n\t\t\t\t\tvar delay = (event.type.indexOf('touch') == 0) ?\n\t\t\t\t\t\tself.__options.delayTouch :\n\t\t\t\t\t\tself.__options.delay;\n\t\t\t\t\t\n\t\t\t\t\tif (delay[0]) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.__timeouts.open = setTimeout(function() {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.__timeouts.open = null;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// open only if the pointer (mouse or touch) is still over the origin.\n\t\t\t\t\t\t\t// The check on the \"meaningful event\" can only be made here, after some\n\t\t\t\t\t\t\t// time has passed (to know if the touch was a swipe or not)\n\t\t\t\t\t\t\tif (self.__pointerIsOverOrigin && self._touchIsMeaningfulEvent(event)) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// signal that we go on\n\t\t\t\t\t\t\t\tself._trigger('startend');\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tself._open(event);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t// signal that we cancel\n\t\t\t\t\t\t\t\tself._trigger('startcancel');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, delay[0]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// signal that we go on\n\t\t\t\t\t\tself._trigger('startend');\n\t\t\t\t\t\t\n\t\t\t\t\t\tself._open(event);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Meant for plugins to get their options\n\t * \n\t * @param {string} pluginName The name of the plugin that asks for its options\n\t * @param {object} defaultOptions The default options of the plugin\n\t * @returns {object} The options\n\t * @protected\n\t */\n\t_optionsExtract: function(pluginName, defaultOptions) {\n\t\t\n\t\tvar self = this,\n\t\t\toptions = $.extend(true, {}, defaultOptions);\n\t\t\n\t\t// if the plugin options were isolated in a property named after the\n\t\t// plugin, use them (prevents conflicts with other plugins)\n\t\tvar pluginOptions = self.__options[pluginName];\n\t\t\n\t\t// if not, try to get them as regular options\n\t\tif (!pluginOptions){\n\t\t\t\n\t\t\tpluginOptions = {};\n\t\t\t\n\t\t\t$.each(defaultOptions, function(optionName, value) {\n\t\t\t\t\n\t\t\t\tvar o = self.__options[optionName];\n\t\t\t\t\n\t\t\t\tif (o !== undefined) {\n\t\t\t\t\tpluginOptions[optionName] = o;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\t// let's merge the default options and the ones that were provided. We'd want\n\t\t// to do a deep copy but not let jQuery merge arrays, so we'll do a shallow\n\t\t// extend on two levels, that will be enough if options are not more than 1\n\t\t// level deep\n\t\t$.each(options, function(optionName, value) {\n\t\t\t\n\t\t\tif (pluginOptions[optionName] !== undefined) {\n\t\t\t\t\n\t\t\t\tif ((\t\ttypeof value == 'object'\n\t\t\t\t\t\t&&\t!(value instanceof Array)\n\t\t\t\t\t\t&&\tvalue != null\n\t\t\t\t\t)\n\t\t\t\t\t&&\n\t\t\t\t\t(\t\ttypeof pluginOptions[optionName] == 'object'\n\t\t\t\t\t\t&&\t!(pluginOptions[optionName] instanceof Array)\n\t\t\t\t\t\t&&\tpluginOptions[optionName] != null\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t$.extend(options[optionName], pluginOptions[optionName]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\toptions[optionName] = pluginOptions[optionName];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn options;\n\t},\n\t\n\t/**\n\t * Used at instantiation of the plugin, or afterwards by plugins that activate themselves\n\t * on existing instances\n\t * \n\t * @param {object} pluginName\n\t * @returns {self}\n\t * @protected\n\t */\n\t_plug: function(pluginName) {\n\t\t\n\t\tvar plugin = $.tooltipster._plugin(pluginName);\n\t\t\n\t\tif (plugin) {\n\t\t\t\n\t\t\t// if there is a constructor for instances\n\t\t\tif (plugin.instance) {\n\t\t\t\t\n\t\t\t\t// proxy non-private methods on the instance to allow new instance methods\n\t\t\t\t$.tooltipster.__bridge(plugin.instance, this, plugin.name);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthrow new Error('The \"'+ pluginName +'\" plugin is not defined');\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * This will return true if the event is a mouse event which was\n\t * emulated by the browser after a touch event. This allows us to\n\t * really dissociate mouse and touch triggers.\n\t * \n\t * There is a margin of error if a real mouse event is fired right\n\t * after (within the delay shown below) a touch event on the same\n\t * element, but hopefully it should not happen often.\n\t * \n\t * @returns {boolean}\n\t * @protected\n\t */\n\t_touchIsEmulatedEvent: function(event) {\n\t\t\n\t\tvar isEmulated = false,\n\t\t\tnow = new Date().getTime();\n\t\t\n\t\tfor (var i = this.__touchEvents.length - 1; i >= 0; i--) {\n\t\t\t\n\t\t\tvar e = this.__touchEvents[i];\n\t\t\t\n\t\t\t// delay, in milliseconds. It's supposed to be 300ms in\n\t\t\t// most browsers (350ms on iOS) to allow a double tap but\n\t\t\t// can be less (check out FastClick for more info)\n\t\t\tif (now - e.time < 500) {\n\t\t\t\t\n\t\t\t\tif (e.target === event.target) {\n\t\t\t\t\tisEmulated = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn isEmulated;\n\t},\n\t\n\t/**\n\t * Returns false if the event was an emulated mouse event or\n\t * a touch event involved in a swipe gesture.\n\t * \n\t * @param {object} event\n\t * @returns {boolean}\n\t * @protected\n\t */\n\t_touchIsMeaningfulEvent: function(event) {\n\t\treturn (\n\t\t\t\t(this._touchIsTouchEvent(event) && !this._touchSwiped(event.target))\n\t\t\t||\t(!this._touchIsTouchEvent(event) && !this._touchIsEmulatedEvent(event))\n\t\t);\n\t},\n\t\n\t/**\n\t * Checks if an event is a touch event\n\t * \n\t * @param {object} event\n\t * @returns {boolean}\n\t * @protected\n\t */\n\t_touchIsTouchEvent: function(event){\n\t\treturn event.type.indexOf('touch') == 0;\n\t},\n\t\n\t/**\n\t * Store touch events for a while to detect swiping and emulated mouse events\n\t * \n\t * @param {object} event\n\t * @returns {self}\n\t * @protected\n\t */\n\t_touchRecordEvent: function(event) {\n\t\t\n\t\tif (this._touchIsTouchEvent(event)) {\n\t\t\tevent.time = new Date().getTime();\n\t\t\tthis.__touchEvents.push(event);\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Returns true if a swipe happened after the last touchstart event fired on\n\t * event.target.\n\t * \n\t * We need to differentiate a swipe from a tap before we let the event open\n\t * or close the tooltip. A swipe is when a touchmove (scroll) event happens\n\t * on the body between the touchstart and the touchend events of an element.\n\t * \n\t * @param {object} target The HTML element that may have triggered the swipe\n\t * @returns {boolean}\n\t * @protected\n\t */\n\t_touchSwiped: function(target) {\n\t\t\n\t\tvar swiped = false;\n\t\t\n\t\tfor (var i = this.__touchEvents.length - 1; i >= 0; i--) {\n\t\t\t\n\t\t\tvar e = this.__touchEvents[i];\n\t\t\t\n\t\t\tif (e.type == 'touchmove') {\n\t\t\t\tswiped = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (\n\t\t\t\te.type == 'touchstart'\n\t\t\t\t&&\ttarget === e.target\n\t\t\t) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn swiped;\n\t},\n\t\n\t/**\n\t * Triggers an event on the instance emitters\n\t * \n\t * @returns {self}\n\t * @protected\n\t */\n\t_trigger: function() {\n\t\t\n\t\tvar args = Array.prototype.slice.apply(arguments);\n\t\t\n\t\tif (typeof args[0] == 'string') {\n\t\t\targs[0] = { type: args[0] };\n\t\t}\n\t\t\n\t\t// add properties to the event\n\t\targs[0].instance = this;\n\t\targs[0].origin = this._$origin ? this._$origin[0] : null;\n\t\targs[0].tooltip = this._$tooltip ? this._$tooltip[0] : null;\n\t\t\n\t\t// note: the order of emitters matters\n\t\tthis.__$emitterPrivate.trigger.apply(this.__$emitterPrivate, args);\n\t\t$.tooltipster._trigger.apply($.tooltipster, args);\n\t\tthis.__$emitterPublic.trigger.apply(this.__$emitterPublic, args);\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Deactivate a plugin on this instance\n\t * \n\t * @returns {self}\n\t * @protected\n\t */\n\t_unplug: function(pluginName) {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\t// if the plugin has been activated on this instance\n\t\tif (self[pluginName]) {\n\t\t\t\n\t\t\tvar plugin = $.tooltipster._plugin(pluginName);\n\t\t\t\n\t\t\t// if there is a constructor for instances\n\t\t\tif (plugin.instance) {\n\t\t\t\t\n\t\t\t\t// unbridge\n\t\t\t\t$.each(plugin.instance, function(methodName, fn) {\n\t\t\t\t\t\n\t\t\t\t\t// if the method exists (privates methods do not) and comes indeed from\n\t\t\t\t\t// this plugin (may be missing or come from a conflicting plugin).\n\t\t\t\t\tif (\tself[methodName]\n\t\t\t\t\t\t&&\tself[methodName].bridged === self[pluginName]\n\t\t\t\t\t) {\n\t\t\t\t\t\tdelete self[methodName];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t// destroy the plugin\n\t\t\tif (self[pluginName].__destroy) {\n\t\t\t\tself[pluginName].__destroy();\n\t\t\t}\n\t\t\t\n\t\t\t// remove the reference to the plugin instance\n\t\t\tdelete self[pluginName];\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * @see self::_close\n\t * @returns {self}\n\t * @public\n\t */\n\tclose: function(callback) {\n\t\t\n\t\tif (!this.__destroyed) {\n\t\t\tthis._close(null, callback);\n\t\t}\n\t\telse {\n\t\t\tthis.__destroyError();\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Sets or gets the content of the tooltip\n\t * \n\t * @returns {mixed|self}\n\t * @public\n\t */\n\tcontent: function(content) {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\t// getter method\n\t\tif (content === undefined) {\n\t\t\treturn self.__Content;\n\t\t}\n\t\t// setter method\n\t\telse {\n\t\t\t\n\t\t\tif (!self.__destroyed) {\n\t\t\t\t\n\t\t\t\t// change the content\n\t\t\t\tself.__contentSet(content);\n\t\t\t\t\n\t\t\t\tif (self.__Content !== null) {\n\t\t\t\t\t\n\t\t\t\t\t// update the tooltip if it is open\n\t\t\t\t\tif (self.__state !== 'closed') {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// reset the content in the tooltip\n\t\t\t\t\t\tself.__contentInsert();\n\t\t\t\t\t\t\n\t\t\t\t\t\t// reposition and resize the tooltip\n\t\t\t\t\t\tself.reposition();\n\t\t\t\t\t\t\n\t\t\t\t\t\t// if we want to play a little animation showing the content changed\n\t\t\t\t\t\tif (self.__options.updateAnimation) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (env.hasTransitions) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// keep the reference in the local scope\n\t\t\t\t\t\t\t\tvar animation = self.__options.updateAnimation;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tself._$tooltip.addClass('tooltipster-update-'+ animation);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// remove the class after a while. The actual duration of the\n\t\t\t\t\t\t\t\t// update animation may be shorter, it's set in the CSS rules\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (self.__state != 'closed') {\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tself._$tooltip.removeClass('tooltipster-update-'+ animation);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tself._$tooltip.fadeTo(200, 0.5, function() {\n\t\t\t\t\t\t\t\t\tif (self.__state != 'closed') {\n\t\t\t\t\t\t\t\t\t\tself._$tooltip.fadeTo(200, 1);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tself._close();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tself.__destroyError();\n\t\t\t}\n\t\t\t\n\t\t\treturn self;\n\t\t}\n\t},\n\t\n\t/**\n\t * Destroys the tooltip\n\t * \n\t * @returns {self}\n\t * @public\n\t */\n\tdestroy: function() {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\tif (!self.__destroyed) {\n\t\t\t\n\t\t\tif(self.__state != 'closed'){\n\t\t\t\t\n\t\t\t\t// no closing delay\n\t\t\t\tself.option('animationDuration', 0)\n\t\t\t\t\t// force closing\n\t\t\t\t\t._close(null, null, true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// there might be an open timeout still running\n\t\t\t\tself.__timeoutsClear();\n\t\t\t}\n\t\t\t\n\t\t\t// send event\n\t\t\tself._trigger('destroy');\n\t\t\t\n\t\t\tself.__destroyed = true;\n\t\t\t\n\t\t\tself._$origin\n\t\t\t\t.removeData(self.__namespace)\n\t\t\t\t// remove the open trigger listeners\n\t\t\t\t.off('.'+ self.__namespace +'-triggerOpen');\n\t\t\t\n\t\t\t// remove the touch listener\n\t\t\t$(env.window.document.body).off('.' + self.__namespace +'-triggerOpen');\n\t\t\t\n\t\t\tvar ns = self._$origin.data('tooltipster-ns');\n\t\t\t\n\t\t\t// if the origin has been removed from DOM, its data may\n\t\t\t// well have been destroyed in the process and there would\n\t\t\t// be nothing to clean up or restore\n\t\t\tif (ns) {\n\t\t\t\t\n\t\t\t\t// if there are no more tooltips on this element\n\t\t\t\tif (ns.length === 1) {\n\t\t\t\t\t\n\t\t\t\t\t// optional restoration of a title attribute\n\t\t\t\t\tvar title = null;\n\t\t\t\t\tif (self.__options.restoration == 'previous') {\n\t\t\t\t\t\ttitle = self._$origin.data('tooltipster-initialTitle');\n\t\t\t\t\t}\n\t\t\t\t\telse if (self.__options.restoration == 'current') {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// old school technique to stringify when outerHTML is not supported\n\t\t\t\t\t\ttitle = (typeof self.__Content == 'string') ?\n\t\t\t\t\t\t\tself.__Content :\n\t\t\t\t\t\t\t$('<div></div>').append(self.__Content).html();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (title) {\n\t\t\t\t\t\tself._$origin.attr('title', title);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// final cleaning\n\t\t\t\t\t\n\t\t\t\t\tself._$origin.removeClass('tooltipstered');\n\t\t\t\t\t\n\t\t\t\t\tself._$origin\n\t\t\t\t\t\t.removeData('tooltipster-ns')\n\t\t\t\t\t\t.removeData('tooltipster-initialTitle');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// remove the instance namespace from the list of namespaces of\n\t\t\t\t\t// tooltips present on the element\n\t\t\t\t\tns = $.grep(ns, function(el, i) {\n\t\t\t\t\t\treturn el !== self.__namespace;\n\t\t\t\t\t});\n\t\t\t\t\tself._$origin.data('tooltipster-ns', ns);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// last event\n\t\t\tself._trigger('destroyed');\n\t\t\t\n\t\t\t// unbind private and public event listeners\n\t\t\tself._off();\n\t\t\tself.off();\n\t\t\t\n\t\t\t// remove external references, just in case\n\t\t\tself.__Content = null;\n\t\t\tself.__$emitterPrivate = null;\n\t\t\tself.__$emitterPublic = null;\n\t\t\tself.__options.parent = null;\n\t\t\tself._$origin = null;\n\t\t\tself._$tooltip = null;\n\t\t\t\n\t\t\t// make sure the object is no longer referenced in there to prevent\n\t\t\t// memory leaks\n\t\t\t$.tooltipster.__instancesLatestArr = $.grep($.tooltipster.__instancesLatestArr, function(el, i) {\n\t\t\t\treturn self !== el;\n\t\t\t});\n\t\t\t\n\t\t\tclearInterval(self.__garbageCollector);\n\t\t}\n\t\telse {\n\t\t\tself.__destroyError();\n\t\t}\n\t\t\n\t\t// we return the scope rather than true so that the call to\n\t\t// .tooltipster('destroy') actually returns the matched elements\n\t\t// and applies to all of them\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Disables the tooltip\n\t * \n\t * @returns {self}\n\t * @public\n\t */\n\tdisable: function() {\n\t\t\n\t\tif (!this.__destroyed) {\n\t\t\t\n\t\t\t// close first, in case the tooltip would not disappear on\n\t\t\t// its own (no close trigger)\n\t\t\tthis._close();\n\t\t\tthis.__enabled = false;\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t\telse {\n\t\t\tthis.__destroyError();\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Returns the HTML element of the origin\n\t *\n\t * @returns {self}\n\t * @public\n\t */\n\telementOrigin: function() {\n\t\t\n\t\tif (!this.__destroyed) {\n\t\t\treturn this._$origin[0];\n\t\t}\n\t\telse {\n\t\t\tthis.__destroyError();\n\t\t}\n\t},\n\t\n\t/**\n\t * Returns the HTML element of the tooltip\n\t *\n\t * @returns {self}\n\t * @public\n\t */\n\telementTooltip: function() {\n\t\treturn this._$tooltip ? this._$tooltip[0] : null;\n\t},\n\t\n\t/**\n\t * Enables the tooltip\n\t * \n\t * @returns {self}\n\t * @public\n\t */\n\tenable: function() {\n\t\tthis.__enabled = true;\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Alias, deprecated in 4.0.0\n\t * \n\t * @param {function} callback\n\t * @returns {self}\n\t * @public\n\t */\n\thide: function(callback) {\n\t\treturn this.close(callback);\n\t},\n\t\n\t/**\n\t * Returns the instance\n\t * \n\t * @returns {self}\n\t * @public\n\t */\n\tinstance: function() {\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For public use only, not to be used by plugins (use ::_off() instead)\n\t * \n\t * @returns {self}\n\t * @public\n\t */\n\toff: function() {\n\t\t\n\t\tif (!this.__destroyed) {\n\t\t\tthis.__$emitterPublic.off.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments));\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For public use only, not to be used by plugins (use ::_on() instead)\n\t *\n\t * @returns {self}\n\t * @public\n\t */\n\ton: function() {\n\t\t\n\t\tif (!this.__destroyed) {\n\t\t\tthis.__$emitterPublic.on.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments));\n\t\t}\n\t\telse {\n\t\t\tthis.__destroyError();\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * For public use only, not to be used by plugins\n\t *\n\t * @returns {self}\n\t * @public\n\t */\n\tone: function() {\n\t\t\n\t\tif (!this.__destroyed) {\n\t\t\tthis.__$emitterPublic.one.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments));\n\t\t}\n\t\telse {\n\t\t\tthis.__destroyError();\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * @see self::_open\n\t * @returns {self}\n\t * @public\n\t */\n\topen: function(callback) {\n\t\t\n\t\tif (!this.__destroyed) {\n\t\t\tthis._open(null, callback);\n\t\t}\n\t\telse {\n\t\t\tthis.__destroyError();\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Get or set options. For internal use and advanced users only.\n\t * \n\t * @param {string} o Option name\n\t * @param {mixed} val optional A new value for the option\n\t * @return {mixed|self} If val is omitted, the value of the option\n\t * is returned, otherwise the instance itself is returned\n\t * @public\n\t */ \n\toption: function(o, val) {\n\t\t\n\t\t// getter\n\t\tif (val === undefined) {\n\t\t\treturn this.__options[o];\n\t\t}\n\t\t// setter\n\t\telse {\n\t\t\t\n\t\t\tif (!this.__destroyed) {\n\t\t\t\t\n\t\t\t\t// change value\n\t\t\t\tthis.__options[o] = val;\n\t\t\t\t\n\t\t\t\t// format\n\t\t\t\tthis.__optionsFormat();\n\t\t\t\t\n\t\t\t\t// re-prepare the triggers if needed\n\t\t\t\tif ($.inArray(o, ['trigger', 'triggerClose', 'triggerOpen']) >= 0) {\n\t\t\t\t\tthis.__prepareOrigin();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (o === 'selfDestruction') {\n\t\t\t\t\tthis.__prepareGC();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.__destroyError();\n\t\t\t}\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t},\n\t\n\t/**\n\t * This method is in charge of setting the position and size properties of the tooltip.\n\t * All the hard work is delegated to the display plugin.\n\t * Note: The tooltip may be detached from the DOM at the moment the method is called \n\t * but must be attached by the end of the method call.\n\t * \n\t * @param {object} event For internal use only. Defined if an event such as\n\t * window resizing triggered the repositioning\n\t * @param {boolean} tooltipIsDetached For internal use only. Set this to true if you\n\t * know that the tooltip not being in the DOM is not an issue (typically when the\n\t * tooltip element has just been created but has not been added to the DOM yet).\n\t * @returns {self}\n\t * @public\n\t */\n\treposition: function(event, tooltipIsDetached) {\n\t\t\n\t\tvar self = this;\n\t\t\n\t\tif (!self.__destroyed) {\n\t\t\t\n\t\t\t// if the tooltip is still open and the origin is still in the DOM\n\t\t\tif (self.__state != 'closed' && bodyContains(self._$origin)) {\n\t\t\t\t\n\t\t\t\t// if the tooltip has not been removed from DOM manually (or if it\n\t\t\t\t// has been detached on purpose)\n\t\t\t\tif (tooltipIsDetached || bodyContains(self._$tooltip)) {\n\t\t\t\t\t\n\t\t\t\t\tif (!tooltipIsDetached) {\n\t\t\t\t\t\t// detach in case the tooltip overflows the window and adds\n\t\t\t\t\t\t// scrollbars to it, so __geometry can be accurate\n\t\t\t\t\t\tself._$tooltip.detach();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// refresh the geometry object before passing it as a helper\n\t\t\t\t\tself.__Geometry = self.__geometry();\n\t\t\t\t\t\n\t\t\t\t\t// let a plugin fo the rest\n\t\t\t\t\tself._trigger({\n\t\t\t\t\t\ttype: 'reposition',\n\t\t\t\t\t\tevent: event,\n\t\t\t\t\t\thelper: {\n\t\t\t\t\t\t\tgeo: self.__Geometry\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tself.__destroyError();\n\t\t}\n\t\t\n\t\treturn self;\n\t},\n\t\n\t/**\n\t * Alias, deprecated in 4.0.0\n\t *\n\t * @param callback\n\t * @returns {self}\n\t * @public\n\t */\n\tshow: function(callback) {\n\t\treturn this.open(callback);\n\t},\n\t\n\t/**\n\t * Returns some properties about the instance\n\t * \n\t * @returns {object}\n\t * @public\n\t */\n\tstatus: function() {\n\t\t\n\t\treturn {\n\t\t\tdestroyed: this.__destroyed,\n\t\t\tenabled: this.__enabled,\n\t\t\topen: this.__state !== 'closed',\n\t\t\tstate: this.__state\n\t\t};\n\t},\n\t\n\t/**\n\t * For public use only, not to be used by plugins\n\t *\n\t * @returns {self}\n\t * @public\n\t */\n\ttriggerHandler: function() {\n\t\t\n\t\tif (!this.__destroyed) {\n\t\t\tthis.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic, Array.prototype.slice.apply(arguments));\n\t\t}\n\t\telse {\n\t\t\tthis.__destroyError();\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n};\n\n$.fn.tooltipster = function() {\n\t\n\t// for using in closures\n\tvar args = Array.prototype.slice.apply(arguments),\n\t\t// common mistake: an HTML element can't be in several tooltips at the same time\n\t\tcontentCloningWarning = 'You are using a single HTML element as content for several tooltips. You probably want to set the contentCloning option to TRUE.';\n\t\n\t// this happens with $(sel).tooltipster(...) when $(sel) does not match anything\n\tif (this.length === 0) {\n\t\t\n\t\t// still chainable\n\t\treturn this;\n\t}\n\t// this happens when calling $(sel).tooltipster('methodName or options')\n\t// where $(sel) matches one or more elements\n\telse {\n\t\t\n\t\t// method calls\n\t\tif (typeof args[0] === 'string') {\n\t\t\t\n\t\t\tvar v = '#*$~&';\n\t\t\t\n\t\t\tthis.each(function() {\n\t\t\t\t\n\t\t\t\t// retrieve the namepaces of the tooltip(s) that exist on that element.\n\t\t\t\t// We will interact with the first tooltip only.\n\t\t\t\tvar ns = $(this).data('tooltipster-ns'),\n\t\t\t\t\t// self represents the instance of the first tooltipster plugin\n\t\t\t\t\t// associated to the current HTML object of the loop\n\t\t\t\t\tself = ns ? $(this).data(ns[0]) : null;\n\t\t\t\t\n\t\t\t\t// if the current element holds a tooltipster instance\n\t\t\t\tif (self) {\n\t\t\t\t\t\n\t\t\t\t\tif (typeof self[args[0]] === 'function') {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (\tthis.length > 1\n\t\t\t\t\t\t\t&&\targs[0] == 'content'\n\t\t\t\t\t\t\t&&\t(\targs[1] instanceof $\n\t\t\t\t\t\t\t\t|| (typeof args[1] == 'object' && args[1] != null && args[1].tagName)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t&&\t!self.__options.contentCloning\n\t\t\t\t\t\t\t&&\tself.__options.debug\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconsole.log(contentCloningWarning);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// note : args[1] and args[2] may not be defined\n\t\t\t\t\t\tvar resp = self[args[0]](args[1], args[2]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Unknown method \"'+ args[0] +'\"');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// if the function returned anything other than the instance\n\t\t\t\t\t// itself (which implies chaining, except for the `instance` method)\n\t\t\t\t\tif (resp !== self || args[0] === 'instance') {\n\t\t\t\t\t\t\n\t\t\t\t\t\tv = resp;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// return false to stop .each iteration on the first element\n\t\t\t\t\t\t// matched by the selector\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('You called Tooltipster\\'s \"'+ args[0] +'\" method on an uninitialized element');\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\treturn (v !== '#*$~&') ? v : this;\n\t\t}\n\t\t// first argument is undefined or an object: the tooltip is initializing\n\t\telse {\n\t\t\t\n\t\t\t// reset the array of last initialized objects\n\t\t\t$.tooltipster.__instancesLatestArr = [];\n\t\t\t\n\t\t\t// is there a defined value for the multiple option in the options object ?\n\t\t\tvar\tmultipleIsSet = args[0] && args[0].multiple !== undefined,\n\t\t\t\t// if the multiple option is set to true, or if it's not defined but\n\t\t\t\t// set to true in the defaults\n\t\t\t\tmultiple = (multipleIsSet && args[0].multiple) || (!multipleIsSet && defaults.multiple),\n\t\t\t\t// same for content\n\t\t\t\tcontentIsSet = args[0] && args[0].content !== undefined,\n\t\t\t\tcontent = (contentIsSet && args[0].content) || (!contentIsSet && defaults.content),\n\t\t\t\t// same for contentCloning\n\t\t\t\tcontentCloningIsSet = args[0] && args[0].contentCloning !== undefined,\n\t\t\t\tcontentCloning =\n\t\t\t\t\t\t(contentCloningIsSet && args[0].contentCloning)\n\t\t\t\t\t||\t(!contentCloningIsSet && defaults.contentCloning),\n\t\t\t\t// same for debug\n\t\t\t\tdebugIsSet = args[0] && args[0].debug !== undefined,\n\t\t\t\tdebug = (debugIsSet && args[0].debug) || (!debugIsSet && defaults.debug);\n\t\t\t\n\t\t\tif (\tthis.length > 1\n\t\t\t\t&&\t(\tcontent instanceof $\n\t\t\t\t\t|| (typeof content == 'object' && content != null && content.tagName)\n\t\t\t\t)\n\t\t\t\t&&\t!contentCloning\n\t\t\t\t&&\tdebug\n\t\t\t) {\n\t\t\t\tconsole.log(contentCloningWarning);\n\t\t\t}\n\t\t\t\n\t\t\t// create a tooltipster instance for each element if it doesn't\n\t\t\t// already have one or if the multiple option is set, and attach the\n\t\t\t// object to it\n\t\t\tthis.each(function() {\n\t\t\t\t\n\t\t\t\tvar go = false,\n\t\t\t\t\t$this = $(this),\n\t\t\t\t\tns = $this.data('tooltipster-ns'),\n\t\t\t\t\tobj = null;\n\t\t\t\t\n\t\t\t\tif (!ns) {\n\t\t\t\t\tgo = true;\n\t\t\t\t}\n\t\t\t\telse if (multiple) {\n\t\t\t\t\tgo = true;\n\t\t\t\t}\n\t\t\t\telse if (debug) {\n\t\t\t\t\tconsole.log('Tooltipster: one or more tooltips are already attached to the element below. Ignoring.');\n\t\t\t\t\tconsole.log(this);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (go) {\n\t\t\t\t\tobj = new $.Tooltipster(this, args[0]);\n\t\t\t\t\t\n\t\t\t\t\t// save the reference of the new instance\n\t\t\t\t\tif (!ns) ns = [];\n\t\t\t\t\tns.push(obj.__namespace);\n\t\t\t\t\t$this.data('tooltipster-ns', ns);\n\t\t\t\t\t\n\t\t\t\t\t// save the instance itself\n\t\t\t\t\t$this.data(obj.__namespace, obj);\n\t\t\t\t\t\n\t\t\t\t\t// call our constructor custom function.\n\t\t\t\t\t// we do this here and not in ::init() because we wanted\n\t\t\t\t\t// the object to be saved in $this.data before triggering\n\t\t\t\t\t// it\n\t\t\t\t\tif (obj.__options.functionInit) {\n\t\t\t\t\t\tobj.__options.functionInit.call(obj, obj, {\n\t\t\t\t\t\t\torigin: this\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// and now the event, for the plugins and core emitter\n\t\t\t\t\tobj._trigger('init');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$.tooltipster.__instancesLatestArr.push(obj);\n\t\t\t});\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t}\n};\n\n// Utilities\n\n/**\n * A class to check if a tooltip can fit in given dimensions\n * \n * @param {object} $tooltip The jQuery wrapped tooltip element, or a clone of it\n */\nfunction Ruler($tooltip) {\n\t\n\t// list of instance variables\n\t\n\tthis.$container;\n\tthis.constraints = null;\n\tthis.__$tooltip;\n\t\n\tthis.__init($tooltip);\n}\n\nRuler.prototype = {\n\t\n\t/**\n\t * Move the tooltip into an invisible div that does not allow overflow to make\n\t * size tests. Note: the tooltip may or may not be attached to the DOM at the\n\t * moment this method is called, it does not matter.\n\t * \n\t * @param {object} $tooltip The object to test. May be just a clone of the\n\t * actual tooltip.\n\t * @private\n\t */\n\t__init: function($tooltip) {\n\t\t\n\t\tthis.__$tooltip = $tooltip;\n\t\t\n\t\tthis.__$tooltip\n\t\t\t.css({\n\t\t\t\t// for some reason we have to specify top and left 0\n\t\t\t\tleft: 0,\n\t\t\t\t// any overflow will be ignored while measuring\n\t\t\t\toverflow: 'hidden',\n\t\t\t\t// positions at (0,0) without the div using 100% of the available width\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: 0\n\t\t\t})\n\t\t\t// overflow must be auto during the test. We re-set this in case\n\t\t\t// it were modified by the user\n\t\t\t.find('.tooltipster-content')\n\t\t\t\t.css('overflow', 'auto');\n\t\t\n\t\tthis.$container = $('<div class=\"tooltipster-ruler\"></div>')\n\t\t\t.append(this.__$tooltip)\n\t\t\t.appendTo(env.window.document.body);\n\t},\n\t\n\t/**\n\t * Force the browser to redraw (re-render) the tooltip immediately. This is required\n\t * when you changed some CSS properties and need to make something with it\n\t * immediately, without waiting for the browser to redraw at the end of instructions.\n\t *\n\t * @see http://stackoverflow.com/questions/3485365/how-can-i-force-webkit-to-redraw-repaint-to-propagate-style-changes\n\t * @private\n\t */\n\t__forceRedraw: function() {\n\t\t\n\t\t// note: this would work but for Webkit only\n\t\t//this.__$tooltip.close();\n\t\t//this.__$tooltip[0].offsetHeight;\n\t\t//this.__$tooltip.open();\n\t\t\n\t\t// works in FF too\n\t\tvar $p = this.__$tooltip.parent();\n\t\tthis.__$tooltip.detach();\n\t\tthis.__$tooltip.appendTo($p);\n\t},\n\t\n\t/**\n\t * Set maximum dimensions for the tooltip. A call to ::measure afterwards\n\t * will tell us if the content overflows or if it's ok\n\t *\n\t * @param {int} width\n\t * @param {int} height\n\t * @return {Ruler}\n\t * @public\n\t */\n\tconstrain: function(width, height) {\n\t\t\n\t\tthis.constraints = {\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t\t\n\t\tthis.__$tooltip.css({\n\t\t\t// we disable display:flex, otherwise the content would overflow without\n\t\t\t// creating horizontal scrolling (which we need to detect).\n\t\t\tdisplay: 'block',\n\t\t\t// reset any previous height\n\t\t\theight: '',\n\t\t\t// we'll check if horizontal scrolling occurs\n\t\t\toverflow: 'auto',\n\t\t\t// we'll set the width and see what height is generated and if there\n\t\t\t// is horizontal overflow\n\t\t\twidth: width\n\t\t});\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Reset the tooltip content overflow and remove the test container\n\t * \n\t * @returns {Ruler}\n\t * @public\n\t */\n\tdestroy: function() {\n\t\t\n\t\t// in case the element was not a clone\n\t\tthis.__$tooltip\n\t\t\t.detach()\n\t\t\t.find('.tooltipster-content')\n\t\t\t\t.css({\n\t\t\t\t\t// reset to CSS value\n\t\t\t\t\tdisplay: '',\n\t\t\t\t\toverflow: ''\n\t\t\t\t});\n\t\t\n\t\tthis.$container.remove();\n\t},\n\t\n\t/**\n\t * Removes any constraints\n\t * \n\t * @returns {Ruler}\n\t * @public\n\t */\n\tfree: function() {\n\t\t\n\t\tthis.constraints = null;\n\t\t\n\t\t// reset to natural size\n\t\tthis.__$tooltip.css({\n\t\t\tdisplay: '',\n\t\t\theight: '',\n\t\t\toverflow: 'visible',\n\t\t\twidth: ''\n\t\t});\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Returns the size of the tooltip. When constraints are applied, also returns\n\t * whether the tooltip fits in the provided dimensions.\n\t * The idea is to see if the new height is small enough and if the content does\n\t * not overflow horizontally.\n\t *\n\t * @param {int} width\n\t * @param {int} height\n\t * @returns {object} An object with a bool `fits` property and a `size` property\n\t * @public\n\t */\n\tmeasure: function() {\n\t\t\n\t\tthis.__forceRedraw();\n\t\t\n\t\tvar tooltipBcr = this.__$tooltip[0].getBoundingClientRect(),\n\t\t\tresult = { size: {\n\t\t\t\t// bcr.width/height are not defined in IE8- but in this\n\t\t\t\t// case, bcr.right/bottom will have the same value\n\t\t\t\t// except in iOS 8+ where tooltipBcr.bottom/right are wrong\n\t\t\t\t// after scrolling for reasons yet to be determined.\n\t\t\t\t// tooltipBcr.top/left might not be 0, see issue #514\n\t\t\t\theight: tooltipBcr.height || (tooltipBcr.bottom - tooltipBcr.top),\n\t\t\t\twidth: tooltipBcr.width || (tooltipBcr.right - tooltipBcr.left)\n\t\t\t}};\n\t\t\n\t\tif (this.constraints) {\n\t\t\t\n\t\t\t// note: we used to use offsetWidth instead of boundingRectClient but\n\t\t\t// it returned rounded values, causing issues with sub-pixel layouts.\n\t\t\t\n\t\t\t// note2: noticed that the bcrWidth of text content of a div was once\n\t\t\t// greater than the bcrWidth of its container by 1px, causing the final\n\t\t\t// tooltip box to be too small for its content. However, evaluating\n\t\t\t// their widths one against the other (below) surprisingly returned\n\t\t\t// equality. Happened only once in Chrome 48, was not able to reproduce\n\t\t\t// => just having fun with float position values...\n\t\t\t\n\t\t\tvar $content = this.__$tooltip.find('.tooltipster-content'),\n\t\t\t\theight = this.__$tooltip.outerHeight(),\n\t\t\t\tcontentBcr = $content[0].getBoundingClientRect(),\n\t\t\t\tfits = {\n\t\t\t\t\theight: height <= this.constraints.height,\n\t\t\t\t\twidth: (\n\t\t\t\t\t\t// this condition accounts for min-width property that\n\t\t\t\t\t\t// may apply\n\t\t\t\t\t\ttooltipBcr.width <= this.constraints.width\n\t\t\t\t\t\t\t// the -1 is here because scrollWidth actually returns\n\t\t\t\t\t\t\t// a rounded value, and may be greater than bcr.width if\n\t\t\t\t\t\t\t// it was rounded up. This may cause an issue for contents\n\t\t\t\t\t\t\t// which actually really overflow  by 1px or so, but that\n\t\t\t\t\t\t\t// should be rare. Not sure how to solve this efficiently.\n\t\t\t\t\t\t\t// See http://blogs.msdn.com/b/ie/archive/2012/02/17/sub-pixel-rendering-and-the-css-object-model.aspx\n\t\t\t\t\t\t&&\tcontentBcr.width >= $content[0].scrollWidth - 1\n\t\t\t\t\t)\n\t\t\t\t};\n\t\t\t\n\t\t\tresult.fits = fits.height && fits.width;\n\t\t}\n\t\t\n\t\t// old versions of IE get the width wrong for some reason and it causes\n\t\t// the text to be broken to a new line, so we round it up. If the width\n\t\t// is the width of the screen though, we can assume it is accurate.\n\t\tif (\tenv.IE\n\t\t\t&&\tenv.IE <= 11\n\t\t\t&&\tresult.size.width !== env.window.document.documentElement.clientWidth\n\t\t) {\n\t\t\tresult.size.width = Math.ceil(result.size.width) + 1;\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n};\n\n// quick & dirty compare function, not bijective nor multidimensional\nfunction areEqual(a,b) {\n\tvar same = true;\n\t$.each(a, function(i, _) {\n\t\tif (b[i] === undefined || a[i] !== b[i]) {\n\t\t\tsame = false;\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn same;\n}\n\n/**\n * A fast function to check if an element is still in the DOM. It\n * tries to use an id as ids are indexed by the browser, or falls\n * back to jQuery's `contains` method. May fail if two elements\n * have the same id, but so be it\n *\n * @param {object} $obj A jQuery-wrapped HTML element\n * @return {boolean}\n */\nfunction bodyContains($obj) {\n\tvar id = $obj.attr('id'),\n\t\tel = id ? env.window.document.getElementById(id) : null;\n\t// must also check that the element with the id is the one we want\n\treturn el ? el === $obj[0] : $.contains(env.window.document.body, $obj[0]);\n}\n\n// detect IE versions for dirty fixes\nvar uA = navigator.userAgent.toLowerCase();\nif (uA.indexOf('msie') != -1) env.IE = parseInt(uA.split('msie')[1]);\nelse if (uA.toLowerCase().indexOf('trident') !== -1 && uA.indexOf(' rv:11') !== -1) env.IE = 11;\nelse if (uA.toLowerCase().indexOf('edge/') != -1) env.IE = parseInt(uA.toLowerCase().split('edge/')[1]);\n\n// detecting support for CSS transitions\nfunction transitionSupport() {\n\t\n\t// env.window is not defined yet when this is called\n\tif (!win) return false;\n\t\n\tvar b = win.document.body || win.document.documentElement,\n\t\ts = b.style,\n\t\tp = 'transition',\n\t\tv = ['Moz', 'Webkit', 'Khtml', 'O', 'ms'];\n\t\n\tif (typeof s[p] == 'string') { return true; }\n\t\n\tp = p.charAt(0).toUpperCase() + p.substr(1);\n\tfor (var i=0; i<v.length; i++) {\n\t\tif (typeof s[v[i] + p] == 'string') { return true; }\n\t}\n\treturn false;\n}\n\n// we'll return jQuery for plugins not to have to declare it as a dependency,\n// but it's done by a build task since it should be included only once at the\n// end when we concatenate the main file with a plugin\n// sideTip is Tooltipster's default plugin.\n// This file will be UMDified by a build task.\n\nvar pluginName = 'tooltipster.sideTip';\n\n$.tooltipster._plugin({\n\tname: pluginName,\n\tinstance: {\n\t\t/**\n\t\t * Defaults are provided as a function for an easy override by inheritance\n\t\t *\n\t\t * @return {object} An object with the defaults options\n\t\t * @private\n\t\t */\n\t\t__defaults: function() {\n\t\t\t\n\t\t\treturn {\n\t\t\t\t// if the tooltip should display an arrow that points to the origin\n\t\t\t\tarrow: true,\n\t\t\t\t// the distance in pixels between the tooltip and the origin\n\t\t\t\tdistance: 6,\n\t\t\t\t// allows to easily change the position of the tooltip\n\t\t\t\tfunctionPosition: null,\n\t\t\t\tmaxWidth: null,\n\t\t\t\t// used to accomodate the arrow of tooltip if there is one.\n\t\t\t\t// First to make sure that the arrow target is not too close\n\t\t\t\t// to the edge of the tooltip, so the arrow does not overflow\n\t\t\t\t// the tooltip. Secondly when we reposition the tooltip to\n\t\t\t\t// make sure that it's positioned in such a way that the arrow is\n\t\t\t\t// still pointing at the target (and not a few pixels beyond it).\n\t\t\t\t// It should be equal to or greater than half the width of\n\t\t\t\t// the arrow (by width we mean the size of the side which touches\n\t\t\t\t// the side of the tooltip).\n\t\t\t\tminIntersection: 16,\n\t\t\t\tminWidth: 0,\n\t\t\t\t// deprecated in 4.0.0. Listed for _optionsExtract to pick it up\n\t\t\t\tposition: null,\n\t\t\t\tside: 'top',\n\t\t\t\t// set to false to position the tooltip relatively to the document rather\n\t\t\t\t// than the window when we open it\n\t\t\t\tviewportAware: true\n\t\t\t};\n\t\t},\n\t\t\n\t\t/**\n\t\t * Run once: at instantiation of the plugin\n\t\t *\n\t\t * @param {object} instance The tooltipster object that instantiated this plugin\n\t\t * @private\n\t\t */\n\t\t__init: function(instance) {\n\t\t\t\n\t\t\tvar self = this;\n\t\t\t\n\t\t\t// list of instance variables\n\t\t\t\n\t\t\tself.__instance = instance;\n\t\t\tself.__namespace = 'tooltipster-sideTip-'+ Math.round(Math.random()*1000000);\n\t\t\tself.__previousState = 'closed';\n\t\t\tself.__options;\n\t\t\t\n\t\t\t// initial formatting\n\t\t\tself.__optionsFormat();\n\t\t\t\n\t\t\tself.__instance._on('state.'+ self.__namespace, function(event) {\n\t\t\t\t\n\t\t\t\tif (event.state == 'closed') {\n\t\t\t\t\tself.__close();\n\t\t\t\t}\n\t\t\t\telse if (event.state == 'appearing' && self.__previousState == 'closed') {\n\t\t\t\t\tself.__create();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tself.__previousState = event.state;\n\t\t\t});\n\t\t\t\n\t\t\t// reformat every time the options are changed\n\t\t\tself.__instance._on('options.'+ self.__namespace, function() {\n\t\t\t\tself.__optionsFormat();\n\t\t\t});\n\t\t\t\n\t\t\tself.__instance._on('reposition.'+ self.__namespace, function(e) {\n\t\t\t\tself.__reposition(e.event, e.helper);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Called when the tooltip has closed\n\t\t * \n\t\t * @private\n\t\t */\n\t\t__close: function() {\n\t\t\t\n\t\t\t// detach our content object first, so the next jQuery's remove()\n\t\t\t// call does not unbind its event handlers\n\t\t\tif (this.__instance.content() instanceof $) {\n\t\t\t\tthis.__instance.content().detach();\n\t\t\t}\n\t\t\t\n\t\t\t// remove the tooltip from the DOM\n\t\t\tthis.__instance._$tooltip.remove();\n\t\t\tthis.__instance._$tooltip = null;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Creates the HTML element of the tooltip.\n\t\t * \n\t\t * @private\n\t\t */\n\t\t__create: function() {\n\t\t\t\n\t\t\t// note: we wrap with a .tooltipster-box div to be able to set a margin on it\n\t\t\t// (.tooltipster-base must not have one)\n\t\t\tvar $html = $(\n\t\t\t\t'<div class=\"tooltipster-base tooltipster-sidetip\">' +\n\t\t\t\t\t'<div class=\"tooltipster-box\">' +\n\t\t\t\t\t\t'<div class=\"tooltipster-content\"></div>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'<div class=\"tooltipster-arrow\">' +\n\t\t\t\t\t\t'<div class=\"tooltipster-arrow-uncropped\">' +\n\t\t\t\t\t\t\t'<div class=\"tooltipster-arrow-border\"></div>' +\n\t\t\t\t\t\t\t'<div class=\"tooltipster-arrow-background\"></div>' +\n\t\t\t\t\t\t'</div>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t\t\n\t\t\t// hide arrow if asked\n\t\t\tif (!this.__options.arrow) {\n\t\t\t\t$html\n\t\t\t\t\t.find('.tooltipster-box')\n\t\t\t\t\t\t.css('margin', 0)\n\t\t\t\t\t\t.end()\n\t\t\t\t\t.find('.tooltipster-arrow')\n\t\t\t\t\t\t.hide();\n\t\t\t}\n\t\t\t\n\t\t\t// apply min/max width if asked\n\t\t\tif (this.__options.minWidth) {\n\t\t\t\t$html.css('min-width', this.__options.minWidth + 'px');\n\t\t\t}\n\t\t\tif (this.__options.maxWidth) {\n\t\t\t\t$html.css('max-width', this.__options.maxWidth + 'px');\n\t\t\t}\n\t\t\t\n\t\t\tthis.__instance._$tooltip = $html;\n\t\t\t\n\t\t\t// tell the instance that the tooltip element has been created\n\t\t\tthis.__instance._trigger('created');\n\t\t},\n\t\t\n\t\t/**\n\t\t * Used when the plugin is to be unplugged\n\t\t *\n\t\t * @private\n\t\t */\n\t\t__destroy: function() {\n\t\t\tthis.__instance._off('.'+ self.__namespace);\n\t\t},\n\t\t\n\t\t/**\n\t\t * (Re)compute this.__options from the options declared to the instance\n\t\t *\n\t\t * @private\n\t\t */\n\t\t__optionsFormat: function() {\n\t\t\t\n\t\t\tvar self = this;\n\t\t\t\n\t\t\t// get the options\n\t\t\tself.__options = self.__instance._optionsExtract(pluginName, self.__defaults());\n\t\t\t\n\t\t\t// for backward compatibility, deprecated in v4.0.0\n\t\t\tif (self.__options.position) {\n\t\t\t\tself.__options.side = self.__options.position;\n\t\t\t}\n\t\t\t\n\t\t\t// options formatting\n\t\t\t\n\t\t\t// format distance as a four-cell array if it ain't one yet and then make\n\t\t\t// it an object with top/bottom/left/right properties\n\t\t\tif (typeof self.__options.distance != 'object') {\n\t\t\t\tself.__options.distance = [self.__options.distance];\n\t\t\t}\n\t\t\tif (self.__options.distance.length < 4) {\n\t\t\t\tif (self.__options.distance[1] === undefined) self.__options.distance[1] = self.__options.distance[0];\n\t\t\t\tif (self.__options.distance[2] === undefined) self.__options.distance[2] = self.__options.distance[0];\n\t\t\t\tif (self.__options.distance[3] === undefined) self.__options.distance[3] = self.__options.distance[1];\n\t\t\t}\n\t\t\t\n\t\t\tself.__options.distance = {\n\t\t\t\ttop: self.__options.distance[0],\n\t\t\t\tright: self.__options.distance[1],\n\t\t\t\tbottom: self.__options.distance[2],\n\t\t\t\tleft: self.__options.distance[3]\n\t\t\t};\n\t\t\t\n\t\t\t// let's transform:\n\t\t\t// 'top' into ['top', 'bottom', 'right', 'left']\n\t\t\t// 'right' into ['right', 'left', 'top', 'bottom']\n\t\t\t// 'bottom' into ['bottom', 'top', 'right', 'left']\n\t\t\t// 'left' into ['left', 'right', 'top', 'bottom']\n\t\t\tif (typeof self.__options.side == 'string') {\n\t\t\t\t\n\t\t\t\tvar opposites = {\n\t\t\t\t\t'top': 'bottom',\n\t\t\t\t\t'right': 'left',\n\t\t\t\t\t'bottom': 'top',\n\t\t\t\t\t'left': 'right'\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tself.__options.side = [self.__options.side, opposites[self.__options.side]];\n\t\t\t\t\n\t\t\t\tif (self.__options.side[0] == 'left' || self.__options.side[0] == 'right') {\n\t\t\t\t\tself.__options.side.push('top', 'bottom');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tself.__options.side.push('right', 'left');\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// misc\n\t\t\t// disable the arrow in IE6 unless the arrow option was explicitly set to true\n\t\t\tif (\t$.tooltipster._env.IE === 6\n\t\t\t\t&&\tself.__options.arrow !== true\n\t\t\t) {\n\t\t\t\tself.__options.arrow = false;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * This method must compute and set the positioning properties of the\n\t\t * tooltip (left, top, width, height, etc.). It must also make sure the\n\t\t * tooltip is eventually appended to its parent (since the element may be\n\t\t * detached from the DOM at the moment the method is called).\n\t\t *\n\t\t * We'll evaluate positioning scenarios to find which side can contain the\n\t\t * tooltip in the best way. We'll consider things relatively to the window\n\t\t * (unless the user asks not to), then to the document (if need be, or if the\n\t\t * user explicitly requires the tests to run on the document). For each\n\t\t * scenario, measures are taken, allowing us to know how well the tooltip\n\t\t * is going to fit. After that, a sorting function will let us know what\n\t\t * the best scenario is (we also allow the user to choose his favorite\n\t\t * scenario by using an event).\n\t\t * \n\t\t * @param {object} helper An object that contains variables that plugin\n\t\t * creators may find useful (see below)\n\t\t * @param {object} helper.geo An object with many layout properties\n\t\t * about objects of interest (window, document, origin). This should help\n\t\t * plugin users compute the optimal position of the tooltip\n\t\t * @private\n\t\t */\n\t\t__reposition: function(event, helper) {\n\t\t\t\n\t\t\tvar self = this,\n\t\t\t\tfinalResult,\n\t\t\t\t// to know where to put the tooltip, we need to know on which point\n\t\t\t\t// of the x or y axis we should center it. That coordinate is the target\n\t\t\t\ttargets = self.__targetFind(helper),\n\t\t\t\ttestResults = [];\n\t\t\t\n\t\t\t// make sure the tooltip is detached while we make tests on a clone\n\t\t\tself.__instance._$tooltip.detach();\n\t\t\t\n\t\t\t// we could actually provide the original element to the Ruler and\n\t\t\t// not a clone, but it just feels right to keep it out of the\n\t\t\t// machinery.\n\t\t\tvar $clone = self.__instance._$tooltip.clone(),\n\t\t\t\t// start position tests session\n\t\t\t\truler = $.tooltipster._getRuler($clone),\n\t\t\t\tsatisfied = false,\n\t\t\t\tanimation = self.__instance.option('animation');\n\t\t\t\n\t\t\t// an animation class could contain properties that distort the size\n\t\t\tif (animation) {\n\t\t\t\t$clone.removeClass('tooltipster-'+ animation);\n\t\t\t}\n\t\t\t\n\t\t\t// start evaluating scenarios\n\t\t\t$.each(['window', 'document'], function(i, container) {\n\t\t\t\t\n\t\t\t\tvar takeTest = null;\n\t\t\t\t\n\t\t\t\t// let the user decide to keep on testing or not\n\t\t\t\tself.__instance._trigger({\n\t\t\t\t\tcontainer: container,\n\t\t\t\t\thelper: helper,\n\t\t\t\t\tsatisfied: satisfied,\n\t\t\t\t\ttakeTest: function(bool) {\n\t\t\t\t\t\ttakeTest = bool;\n\t\t\t\t\t},\n\t\t\t\t\tresults: testResults,\n\t\t\t\t\ttype: 'positionTest'\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif (\ttakeTest == true\n\t\t\t\t\t||\t(\ttakeTest != false\n\t\t\t\t\t\t&&\tsatisfied == false\n\t\t\t\t\t\t\t// skip the window scenarios if asked. If they are reintegrated by\n\t\t\t\t\t\t\t// the callback of the positionTest event, they will have to be\n\t\t\t\t\t\t\t// excluded using the callback of positionTested\n\t\t\t\t\t\t&&\t(container != 'window' || self.__options.viewportAware)\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t\n\t\t\t\t\t// for each allowed side\n\t\t\t\t\tfor (var i=0; i < self.__options.side.length; i++) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar distance = {\n\t\t\t\t\t\t\t\thorizontal: 0,\n\t\t\t\t\t\t\t\tvertical: 0\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tside = self.__options.side[i];\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (side == 'top' || side == 'bottom') {\n\t\t\t\t\t\t\tdistance.vertical = self.__options.distance[side];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tdistance.horizontal = self.__options.distance[side];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// this may have an effect on the size of the tooltip if there are css\n\t\t\t\t\t\t// rules for the arrow or something else\n\t\t\t\t\t\tself.__sideChange($clone, side);\n\t\t\t\t\t\t\n\t\t\t\t\t\t$.each(['natural', 'constrained'], function(i, mode) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttakeTest = null;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// emit an event on the instance\n\t\t\t\t\t\t\tself.__instance._trigger({\n\t\t\t\t\t\t\t\tcontainer: container,\n\t\t\t\t\t\t\t\tevent: event,\n\t\t\t\t\t\t\t\thelper: helper,\n\t\t\t\t\t\t\t\tmode: mode,\n\t\t\t\t\t\t\t\tresults: testResults,\n\t\t\t\t\t\t\t\tsatisfied: satisfied,\n\t\t\t\t\t\t\t\tside: side,\n\t\t\t\t\t\t\t\ttakeTest: function(bool) {\n\t\t\t\t\t\t\t\t\ttakeTest = bool;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttype: 'positionTest'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (\ttakeTest == true\n\t\t\t\t\t\t\t\t||\t(\ttakeTest != false\n\t\t\t\t\t\t\t\t\t&&\tsatisfied == false\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tvar testResult = {\n\t\t\t\t\t\t\t\t\tcontainer: container,\n\t\t\t\t\t\t\t\t\t// we let the distance as an object here, it can make things a little easier\n\t\t\t\t\t\t\t\t\t// during the user's calculations at positionTest/positionTested\n\t\t\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t\t\t// whether the tooltip can fit in the size of the viewport (does not mean\n\t\t\t\t\t\t\t\t\t// that we'll be able to make it initially entirely visible, see 'whole')\n\t\t\t\t\t\t\t\t\tfits: null,\n\t\t\t\t\t\t\t\t\tmode: mode,\n\t\t\t\t\t\t\t\t\touterSize: null,\n\t\t\t\t\t\t\t\t\tside: side,\n\t\t\t\t\t\t\t\t\tsize: null,\n\t\t\t\t\t\t\t\t\ttarget: targets[side],\n\t\t\t\t\t\t\t\t\t// check if the origin has enough surface on screen for the tooltip to\n\t\t\t\t\t\t\t\t\t// aim at it without overflowing the viewport (this is due to the thickness\n\t\t\t\t\t\t\t\t\t// of the arrow represented by the minIntersection length).\n\t\t\t\t\t\t\t\t\t// If not, the tooltip will have to be partly or entirely off screen in\n\t\t\t\t\t\t\t\t\t// order to stay docked to the origin. This value will stay null when the\n\t\t\t\t\t\t\t\t\t// container is the document, as it is not relevant\n\t\t\t\t\t\t\t\t\twhole: null\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// get the size of the tooltip with or without size constraints\n\t\t\t\t\t\t\t\tvar rulerConfigured = (mode == 'natural') ?\n\t\t\t\t\t\t\t\t\t\truler.free() :\n\t\t\t\t\t\t\t\t\t\truler.constrain(\n\t\t\t\t\t\t\t\t\t\t\thelper.geo.available[container][side].width - distance.horizontal,\n\t\t\t\t\t\t\t\t\t\t\thelper.geo.available[container][side].height - distance.vertical\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\trulerResults = rulerConfigured.measure();\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\ttestResult.size = rulerResults.size;\n\t\t\t\t\t\t\t\ttestResult.outerSize = {\n\t\t\t\t\t\t\t\t\theight: rulerResults.size.height + distance.vertical,\n\t\t\t\t\t\t\t\t\twidth: rulerResults.size.width + distance.horizontal\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (mode == 'natural') {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif(\t\thelper.geo.available[container][side].width >= testResult.outerSize.width\n\t\t\t\t\t\t\t\t\t\t&&\thelper.geo.available[container][side].height >= testResult.outerSize.height\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\ttestResult.fits = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\ttestResult.fits = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\ttestResult.fits = rulerResults.fits;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (container == 'window') {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (!testResult.fits) {\n\t\t\t\t\t\t\t\t\t\ttestResult.whole = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (side == 'top' || side == 'bottom') {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\ttestResult.whole = (\n\t\t\t\t\t\t\t\t\t\t\t\t\thelper.geo.origin.windowOffset.right >= self.__options.minIntersection\n\t\t\t\t\t\t\t\t\t\t\t\t&&\thelper.geo.window.size.width - helper.geo.origin.windowOffset.left >= self.__options.minIntersection\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\ttestResult.whole = (\n\t\t\t\t\t\t\t\t\t\t\t\t\thelper.geo.origin.windowOffset.bottom >= self.__options.minIntersection\n\t\t\t\t\t\t\t\t\t\t\t\t&&\thelper.geo.window.size.height - helper.geo.origin.windowOffset.top >= self.__options.minIntersection\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\ttestResults.push(testResult);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// we don't need to compute more positions if we have one fully on screen\n\t\t\t\t\t\t\t\tif (testResult.whole) {\n\t\t\t\t\t\t\t\t\tsatisfied = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t// don't run the constrained test unless the natural width was greater\n\t\t\t\t\t\t\t\t\t// than the available width, otherwise it's pointless as we know it\n\t\t\t\t\t\t\t\t\t// wouldn't fit either\n\t\t\t\t\t\t\t\t\tif (\ttestResult.mode == 'natural'\n\t\t\t\t\t\t\t\t\t\t&&\t(\ttestResult.fits\n\t\t\t\t\t\t\t\t\t\t\t||\ttestResult.size.width <= helper.geo.available[container][side].width\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// the user may eliminate the unwanted scenarios from testResults, but he's\n\t\t\t// not supposed to alter them at this point. functionPosition and the\n\t\t\t// position event serve that purpose.\n\t\t\tself.__instance._trigger({\n\t\t\t\tedit: function(r) {\n\t\t\t\t\ttestResults = r;\n\t\t\t\t},\n\t\t\t\tevent: event,\n\t\t\t\thelper: helper,\n\t\t\t\tresults: testResults,\n\t\t\t\ttype: 'positionTested'\n\t\t\t});\n\t\t\t\n\t\t\t/**\n\t\t\t * Sort the scenarios to find the favorite one.\n\t\t\t * \n\t\t\t * The favorite scenario is when we can fully display the tooltip on screen,\n\t\t\t * even if it means that the middle of the tooltip is no longer centered on\n\t\t\t * the middle of the origin (when the origin is near the edge of the screen\n\t\t\t * or even partly off screen). We want the tooltip on the preferred side,\n\t\t\t * even if it means that we have to use a constrained size rather than a\n\t\t\t * natural one (as long as it fits). When the origin is off screen at the top\n\t\t\t * the tooltip will be positioned at the bottom (if allowed), if the origin\n\t\t\t * is off screen on the right, it will be positioned on the left, etc.\n\t\t\t * If there are no scenarios where the tooltip can fit on screen, or if the\n\t\t\t * user does not want the tooltip to fit on screen (viewportAware == false),\n\t\t\t * we fall back to the scenarios relative to the document.\n\t\t\t * \n\t\t\t * When the tooltip is bigger than the viewport in either dimension, we stop\n\t\t\t * looking at the window scenarios and consider the document scenarios only,\n\t\t\t * with the same logic to find on which side it would fit best.\n\t\t\t * \n\t\t\t * If the tooltip cannot fit the document on any side, we force it at the\n\t\t\t * bottom, so at least the user can scroll to see it.\n \t\t\t */\n\t\t\ttestResults.sort(function(a, b) {\n\t\t\t\t\n\t\t\t\t// best if it's whole (the tooltip fits and adapts to the viewport)\n\t\t\t\tif (a.whole && !b.whole) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\telse if (!a.whole && b.whole) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\telse if (a.whole && b.whole) {\n\t\t\t\t\t\n\t\t\t\t\tvar ai = self.__options.side.indexOf(a.side),\n\t\t\t\t\t\tbi = self.__options.side.indexOf(b.side);\n\t\t\t\t\t\n\t\t\t\t\t// use the user's sides fallback array\n\t\t\t\t\tif (ai < bi) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\telse if (ai > bi) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// will be used if the user forced the tests to continue\n\t\t\t\t\t\treturn a.mode == 'natural' ? -1 : 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t\n\t\t\t\t\t// better if it fits\n\t\t\t\t\tif (a.fits && !b.fits) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!a.fits && b.fits) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\telse if (a.fits && b.fits) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar ai = self.__options.side.indexOf(a.side),\n\t\t\t\t\t\t\tbi = self.__options.side.indexOf(b.side);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// use the user's sides fallback array\n\t\t\t\t\t\tif (ai < bi) {\n\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (ai > bi) {\n\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// will be used if the user forced the tests to continue\n\t\t\t\t\t\t\treturn a.mode == 'natural' ? -1 : 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// if everything failed, this will give a preference to the case where\n\t\t\t\t\t\t// the tooltip overflows the document at the bottom\n\t\t\t\t\t\tif (\ta.container == 'document'\n\t\t\t\t\t\t\t&&\ta.side == 'bottom'\n\t\t\t\t\t\t\t&&\ta.mode == 'natural'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tfinalResult = testResults[0];\n\t\t\t\n\t\t\t\n\t\t\t// now let's find the coordinates of the tooltip relatively to the window\n\t\t\tfinalResult.coord = {};\n\t\t\t\n\t\t\tswitch (finalResult.side) {\n\t\t\t\t\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'right':\n\t\t\t\t\tfinalResult.coord.top = Math.floor(finalResult.target - finalResult.size.height / 2);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase 'bottom':\n\t\t\t\tcase 'top':\n\t\t\t\t\tfinalResult.coord.left = Math.floor(finalResult.target - finalResult.size.width / 2);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch (finalResult.side) {\n\t\t\t\t\n\t\t\t\tcase 'left':\n\t\t\t\t\tfinalResult.coord.left = helper.geo.origin.windowOffset.left - finalResult.outerSize.width;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase 'right':\n\t\t\t\t\tfinalResult.coord.left = helper.geo.origin.windowOffset.right + finalResult.distance.horizontal;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase 'top':\n\t\t\t\t\tfinalResult.coord.top = helper.geo.origin.windowOffset.top - finalResult.outerSize.height;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase 'bottom':\n\t\t\t\t\tfinalResult.coord.top = helper.geo.origin.windowOffset.bottom + finalResult.distance.vertical;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\t// if the tooltip can potentially be contained within the viewport dimensions\n\t\t\t// and that we are asked to make it fit on screen\n\t\t\tif (finalResult.container == 'window') {\n\t\t\t\t\n\t\t\t\t// if the tooltip overflows the viewport, we'll move it accordingly (then it will\n\t\t\t\t// not be centered on the middle of the origin anymore). We only move horizontally\n\t\t\t\t// for top and bottom tooltips and vice versa.\n\t\t\t\tif (finalResult.side == 'top' || finalResult.side == 'bottom') {\n\t\t\t\t\t\n\t\t\t\t\t// if there is an overflow on the left\n\t\t\t\t\tif (finalResult.coord.left < 0) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t// prevent the overflow unless the origin itself gets off screen (minus the\n\t\t\t\t\t\t// margin needed to keep the arrow pointing at the target)\n\t\t\t\t\t\tif (helper.geo.origin.windowOffset.right - this.__options.minIntersection >= 0) {\n\t\t\t\t\t\t\tfinalResult.coord.left = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tfinalResult.coord.left = helper.geo.origin.windowOffset.right - this.__options.minIntersection - 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// or an overflow on the right\n\t\t\t\t\telse if (finalResult.coord.left > helper.geo.window.size.width - finalResult.size.width) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (helper.geo.origin.windowOffset.left + this.__options.minIntersection <= helper.geo.window.size.width) {\n\t\t\t\t\t\t\tfinalResult.coord.left = helper.geo.window.size.width - finalResult.size.width;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tfinalResult.coord.left = helper.geo.origin.windowOffset.left + this.__options.minIntersection + 1 - finalResult.size.width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t\n\t\t\t\t\t// overflow at the top\n\t\t\t\t\tif (finalResult.coord.top < 0) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (helper.geo.origin.windowOffset.bottom - this.__options.minIntersection >= 0) {\n\t\t\t\t\t\t\tfinalResult.coord.top = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tfinalResult.coord.top = helper.geo.origin.windowOffset.bottom - this.__options.minIntersection - 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// or at the bottom\n\t\t\t\t\telse if (finalResult.coord.top > helper.geo.window.size.height - finalResult.size.height) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (helper.geo.origin.windowOffset.top + this.__options.minIntersection <= helper.geo.window.size.height) {\n\t\t\t\t\t\t\tfinalResult.coord.top = helper.geo.window.size.height - finalResult.size.height;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tfinalResult.coord.top = helper.geo.origin.windowOffset.top + this.__options.minIntersection + 1 - finalResult.size.height;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t\n\t\t\t\t// there might be overflow here too but it's easier to handle. If there has\n\t\t\t\t// to be an overflow, we'll make sure it's on the right side of the screen\n\t\t\t\t// (because the browser will extend the document size if there is an overflow\n\t\t\t\t// on the right, but not on the left). The sort function above has already\n\t\t\t\t// made sure that a bottom document overflow is preferred to a top overflow,\n\t\t\t\t// so we don't have to care about it.\n\t\t\t\t\n\t\t\t\t// if there is an overflow on the right\n\t\t\t\tif (finalResult.coord.left > helper.geo.window.size.width - finalResult.size.width) {\n\t\t\t\t\t\n\t\t\t\t\t// this may actually create on overflow on the left but we'll fix it in a sec\n\t\t\t\t\tfinalResult.coord.left = helper.geo.window.size.width - finalResult.size.width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// if there is an overflow on the left\n\t\t\t\tif (finalResult.coord.left < 0) {\n\t\t\t\t\t\n\t\t\t\t\t// don't care if it overflows the right after that, we made our best\n\t\t\t\t\tfinalResult.coord.left = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t// submit the positioning proposal to the user function which may choose to change\n\t\t\t// the side, size and/or the coordinates\n\t\t\t\n\t\t\t// first, set the rules that corresponds to the proposed side: it may change\n\t\t\t// the size of the tooltip, and the custom functionPosition may want to detect the\n\t\t\t// size of something before making a decision. So let's make things easier for the\n\t\t\t// implementor\n\t\t\tself.__sideChange($clone, finalResult.side);\n\t\t\t\n\t\t\t// add some variables to the helper\n\t\t\thelper.tooltipClone = $clone[0];\n\t\t\thelper.tooltipParent = self.__instance.option('parent').parent[0];\n\t\t\t// move informative values to the helper\n\t\t\thelper.mode = finalResult.mode;\n\t\t\thelper.whole = finalResult.whole;\n\t\t\t// add some variables to the helper for the functionPosition callback (these\n\t\t\t// will also be added to the event fired by self.__instance._trigger but that's\n\t\t\t// ok, we're just being consistent)\n\t\t\thelper.origin = self.__instance._$origin[0];\n\t\t\thelper.tooltip = self.__instance._$tooltip[0];\n\t\t\t\n\t\t\t// leave only the actionable values in there for functionPosition\n\t\t\tdelete finalResult.container;\n\t\t\tdelete finalResult.fits;\n\t\t\tdelete finalResult.mode;\n\t\t\tdelete finalResult.outerSize;\n\t\t\tdelete finalResult.whole;\n\t\t\t\n\t\t\t// keep only the distance on the relevant side, for clarity\n\t\t\tfinalResult.distance = finalResult.distance.horizontal || finalResult.distance.vertical;\n\t\t\t\n\t\t\t// beginners may not be comfortable with the concept of editing the object\n\t\t\t//  passed by reference, so we provide an edit function and pass a clone\n\t\t\tvar finalResultClone = $.extend(true, {}, finalResult);\n\t\t\t\n\t\t\t// emit an event on the instance\n\t\t\tself.__instance._trigger({\n\t\t\t\tedit: function(result) {\n\t\t\t\t\tfinalResult = result;\n\t\t\t\t},\n\t\t\t\tevent: event,\n\t\t\t\thelper: helper,\n\t\t\t\tposition: finalResultClone,\n\t\t\t\ttype: 'position'\n\t\t\t});\n\t\t\t\n\t\t\tif (self.__options.functionPosition) {\n\t\t\t\t\n\t\t\t\tvar result = self.__options.functionPosition.call(self, self.__instance, helper, finalResultClone);\n\t\t\t\t\n\t\t\t\tif (result) finalResult = result;\n\t\t\t}\n\t\t\t\n\t\t\t// end the positioning tests session (the user might have had a\n\t\t\t// use for it during the position event, now it's over)\n\t\t\truler.destroy();\n\t\t\t\n\t\t\t// compute the position of the target relatively to the tooltip root\n\t\t\t// element so we can place the arrow and make the needed adjustments\n\t\t\tvar arrowCoord,\n\t\t\t\tmaxVal;\n\t\t\t\n\t\t\tif (finalResult.side == 'top' || finalResult.side == 'bottom') {\n\t\t\t\t\n\t\t\t\tarrowCoord = {\n\t\t\t\t\tprop: 'left',\n\t\t\t\t\tval: finalResult.target - finalResult.coord.left\n\t\t\t\t};\n\t\t\t\tmaxVal = finalResult.size.width - this.__options.minIntersection;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t\n\t\t\t\tarrowCoord = {\n\t\t\t\t\tprop: 'top',\n\t\t\t\t\tval: finalResult.target - finalResult.coord.top\n\t\t\t\t};\n\t\t\t\tmaxVal = finalResult.size.height - this.__options.minIntersection;\n\t\t\t}\n\t\t\t\n\t\t\t// cannot lie beyond the boundaries of the tooltip, minus the\n\t\t\t// arrow margin\n\t\t\tif (arrowCoord.val < this.__options.minIntersection) {\n\t\t\t\tarrowCoord.val = this.__options.minIntersection;\n\t\t\t}\n\t\t\telse if (arrowCoord.val > maxVal) {\n\t\t\t\tarrowCoord.val = maxVal;\n\t\t\t}\n\t\t\t\n\t\t\tvar originParentOffset;\n\t\t\t\n\t\t\t// let's convert the window-relative coordinates into coordinates relative to the\n\t\t\t// future positioned parent that the tooltip will be appended to\n\t\t\tif (helper.geo.origin.fixedLineage) {\n\t\t\t\t\n\t\t\t\t// same as windowOffset when the position is fixed\n\t\t\t\toriginParentOffset = helper.geo.origin.windowOffset;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t\n\t\t\t\t// this assumes that the parent of the tooltip is located at\n\t\t\t\t// (0, 0) in the document, typically like when the parent is\n\t\t\t\t// <body>.\n\t\t\t\t// If we ever allow other types of parent, .tooltipster-ruler\n\t\t\t\t// will have to be appended to the parent to inherit css style\n\t\t\t\t// values that affect the display of the text and such.\n\t\t\t\toriginParentOffset = {\n\t\t\t\t\tleft: helper.geo.origin.windowOffset.left + helper.geo.window.scroll.left,\n\t\t\t\t\ttop: helper.geo.origin.windowOffset.top + helper.geo.window.scroll.top\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tfinalResult.coord = {\n\t\t\t\tleft: originParentOffset.left + (finalResult.coord.left - helper.geo.origin.windowOffset.left),\n\t\t\t\ttop: originParentOffset.top + (finalResult.coord.top - helper.geo.origin.windowOffset.top)\n\t\t\t};\n\t\t\t\n\t\t\t// set position values on the original tooltip element\n\t\t\t\n\t\t\tself.__sideChange(self.__instance._$tooltip, finalResult.side);\n\t\t\t\n\t\t\tif (helper.geo.origin.fixedLineage) {\n\t\t\t\tself.__instance._$tooltip\n\t\t\t\t\t.css('position', 'fixed');\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// CSS default\n\t\t\t\tself.__instance._$tooltip\n\t\t\t\t\t.css('position', '');\n\t\t\t}\n\t\t\t\n\t\t\tself.__instance._$tooltip\n\t\t\t\t.css({\n\t\t\t\t\tleft: finalResult.coord.left,\n\t\t\t\t\ttop: finalResult.coord.top,\n\t\t\t\t\t// we need to set a size even if the tooltip is in its natural size\n\t\t\t\t\t// because when the tooltip is positioned beyond the width of the body\n\t\t\t\t\t// (which is by default the width of the window; it will happen when\n\t\t\t\t\t// you scroll the window horizontally to get to the origin), its text\n\t\t\t\t\t// content will otherwise break lines at each word to keep up with the\n\t\t\t\t\t// body overflow strategy.\n\t\t\t\t\theight: finalResult.size.height,\n\t\t\t\t\twidth: finalResult.size.width\n\t\t\t\t})\n\t\t\t\t.find('.tooltipster-arrow')\n\t\t\t\t\t.css({\n\t\t\t\t\t\t'left': '',\n\t\t\t\t\t\t'top': ''\n\t\t\t\t\t})\n\t\t\t\t\t.css(arrowCoord.prop, arrowCoord.val);\n\t\t\t\n\t\t\t// append the tooltip HTML element to its parent\n\t\t\tself.__instance._$tooltip.appendTo(self.__instance.option('parent'));\n\t\t\t\n\t\t\tself.__instance._trigger({\n\t\t\t\ttype: 'repositioned',\n\t\t\t\tevent: event,\n\t\t\t\tposition: finalResult\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Make whatever modifications are needed when the side is changed. This has\n\t\t * been made an independant method for easy inheritance in custom plugins based\n\t\t * on this default plugin.\n\t\t *\n\t\t * @param {object} $obj\n\t\t * @param {string} side\n\t\t * @private\n\t\t */\n\t\t__sideChange: function($obj, side) {\n\t\t\t\n\t\t\t$obj\n\t\t\t\t.removeClass('tooltipster-bottom')\n\t\t\t\t.removeClass('tooltipster-left')\n\t\t\t\t.removeClass('tooltipster-right')\n\t\t\t\t.removeClass('tooltipster-top')\n\t\t\t\t.addClass('tooltipster-'+ side);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns the target that the tooltip should aim at for a given side.\n\t\t * The calculated value is a distance from the edge of the window\n\t\t * (left edge for top/bottom sides, top edge for left/right side). The\n\t\t * tooltip will be centered on that position and the arrow will be\n\t\t * positioned there (as much as possible).\n\t\t *\n\t\t * @param {object} helper\n\t\t * @return {integer}\n\t\t * @private\n\t\t */\n\t\t__targetFind: function(helper) {\n\t\t\t\n\t\t\tvar target = {},\n\t\t\t\trects = this.__instance._$origin[0].getClientRects();\n\t\t\t\n\t\t\t// these lines fix a Chrome bug (issue #491)\n\t\t\tif (rects.length > 1) {\n\t\t\t\tvar opacity = this.__instance._$origin.css('opacity');\n\t\t\t\tif(opacity == 1) {\n\t\t\t\t\tthis.__instance._$origin.css('opacity', 0.99);\n\t\t\t\t\trects = this.__instance._$origin[0].getClientRects();\n\t\t\t\t\tthis.__instance._$origin.css('opacity', 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// by default, the target will be the middle of the origin\n\t\t\tif (rects.length < 2) {\n\t\t\t\t\n\t\t\t\ttarget.top = Math.floor(helper.geo.origin.windowOffset.left + (helper.geo.origin.size.width / 2));\n\t\t\t\ttarget.bottom = target.top;\n\t\t\t\t\n\t\t\t\ttarget.left = Math.floor(helper.geo.origin.windowOffset.top + (helper.geo.origin.size.height / 2));\n\t\t\t\ttarget.right = target.left;\n\t\t\t}\n\t\t\t// if multiple client rects exist, the element may be text split\n\t\t\t// up into multiple lines and the middle of the origin may not be\n\t\t\t// best option anymore. We need to choose the best target client rect\n\t\t\telse {\n\t\t\t\t\n\t\t\t\t// top: the first\n\t\t\t\tvar targetRect = rects[0];\n\t\t\t\ttarget.top = Math.floor(targetRect.left + (targetRect.right - targetRect.left) / 2);\n\t\t\n\t\t\t\t// right: the middle line, rounded down in case there is an even\n\t\t\t\t// number of lines (looks more centered => check out the\n\t\t\t\t// demo with 4 split lines)\n\t\t\t\tif (rects.length > 2) {\n\t\t\t\t\ttargetRect = rects[Math.ceil(rects.length / 2) - 1];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttargetRect = rects[0];\n\t\t\t\t}\n\t\t\t\ttarget.right = Math.floor(targetRect.top + (targetRect.bottom - targetRect.top) / 2);\n\t\t\n\t\t\t\t// bottom: the last\n\t\t\t\ttargetRect = rects[rects.length - 1];\n\t\t\t\ttarget.bottom = Math.floor(targetRect.left + (targetRect.right - targetRect.left) / 2);\n\t\t\n\t\t\t\t// left: the middle line, rounded up\n\t\t\t\tif (rects.length > 2) {\n\t\t\t\t\ttargetRect = rects[Math.ceil((rects.length + 1) / 2) - 1];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttargetRect = rects[rects.length - 1];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttarget.left = Math.floor(targetRect.top + (targetRect.bottom - targetRect.top) / 2);\n\t\t\t}\n\t\t\t\n\t\t\treturn target;\n\t\t}\n\t}\n});\n\n/* a build task will add \"return $;\" here */\nreturn $;\n\n}));\n", "/*************************\r\n * Croppie\r\n * Copyright 2019\r\n * Foliotek\r\n * Version: 2.6.5\r\n *************************/\r\n(function (root, factory) {\r\n    if (typeof define === 'function' && define.amd) {\r\n        // AMD. Register as an anonymous module.\r\n        define(factory);\r\n    } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {\r\n        // CommonJS\r\n        module.exports = factory();\r\n    } else {\r\n        // Browser globals\r\n        root.Croppie = factory();\r\n    }\r\n}(typeof self !== 'undefined' ? self : this, function () {\r\n\r\n    /* Polyfills */\r\n    if (typeof Promise !== 'function') {\r\n        /*! promise-polyfill 3.1.0 */\r\n        !function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if(\"object\"!==typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!==typeof a)throw new TypeError(\"not a function\");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void k(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError(\"A promise cannot be resolved with itself.\");if(a&&(\"object\"===typeof a||\"function\"===typeof a)){var c=a.then;if(\"function\"===typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled=\"function\"===typeof a?a:null,this.onRejected=\"function\"===typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=setTimeout,k=\"function\"===typeof setImmediate&&setImmediate||function(a){j(a,1)},l=Array.isArray||function(a){return\"[object Array]\"===Object.prototype.toString.call(a)};c.prototype[\"catch\"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&l(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&(\"object\"===typeof g||\"function\"===typeof g)){var h=g.then;if(\"function\"===typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;f<a.length;f++)d(f,a[f])})},c.resolve=function(a){return a&&\"object\"===typeof a&&a.constructor===c?a:new c(function(b){b(a)})},c.reject=function(a){return new c(function(b,c){c(a)})},c.race=function(a){return new c(function(b,c){for(var d=0,e=a.length;e>d;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){k=a},\"undefined\"!==typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)}(this);\r\n    }\r\n\r\n    if (typeof window !== 'undefined' && typeof window.CustomEvent !== \"function\") {\r\n        (function(){\r\n            function CustomEvent ( event, params ) {\r\n                params = params || { bubbles: false, cancelable: false, detail: undefined };\r\n                var evt = document.createEvent( 'CustomEvent' );\r\n                evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\r\n                return evt;\r\n            }\r\n            CustomEvent.prototype = window.Event.prototype;\r\n            window.CustomEvent = CustomEvent;\r\n        }());\r\n    }\r\n\r\n    if (typeof HTMLCanvasElement !== 'undefined' && !HTMLCanvasElement.prototype.toBlob) {\r\n        Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\r\n            value: function (callback, type, quality) {\r\n                var binStr = atob( this.toDataURL(type, quality).split(',')[1] ),\r\n                len = binStr.length,\r\n                arr = new Uint8Array(len);\r\n\r\n                for (var i=0; i<len; i++ ) {\r\n                    arr[i] = binStr.charCodeAt(i);\r\n                }\r\n\r\n                callback( new Blob( [arr], {type: type || 'image/png'} ) );\r\n            }\r\n        });\r\n    }\r\n    /* End Polyfills */\r\n\r\n    var cssPrefixes = ['Webkit', 'Moz', 'ms'],\r\n        emptyStyles = typeof document !== 'undefined' ? document.createElement('div').style : {},\r\n        EXIF_NORM = [1,8,3,6],\r\n        EXIF_FLIP = [2,7,4,5],\r\n        CSS_TRANS_ORG,\r\n        CSS_TRANSFORM,\r\n        CSS_USERSELECT;\r\n\r\n    function vendorPrefix(prop) {\r\n        if (prop in emptyStyles) {\r\n            return prop;\r\n        }\r\n\r\n        var capProp = prop[0].toUpperCase() + prop.slice(1),\r\n            i = cssPrefixes.length;\r\n\r\n        while (i--) {\r\n            prop = cssPrefixes[i] + capProp;\r\n            if (prop in emptyStyles) {\r\n                return prop;\r\n            }\r\n        }\r\n    }\r\n\r\n    CSS_TRANSFORM = vendorPrefix('transform');\r\n    CSS_TRANS_ORG = vendorPrefix('transformOrigin');\r\n    CSS_USERSELECT = vendorPrefix('userSelect');\r\n\r\n    function getExifOffset(ornt, rotate) {\r\n        var arr = EXIF_NORM.indexOf(ornt) > -1 ? EXIF_NORM : EXIF_FLIP,\r\n            index = arr.indexOf(ornt),\r\n            offset = (rotate / 90) % arr.length;// 180 = 2%4 = 2 shift exif by 2 indexes\r\n\r\n        return arr[(arr.length + index + (offset % arr.length)) % arr.length];\r\n    }\r\n\r\n    // Credits to : Andrew Dupont - http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/\r\n    function deepExtend(destination, source) {\r\n        destination = destination || {};\r\n        for (var property in source) {\r\n            if (source[property] && source[property].constructor && source[property].constructor === Object) {\r\n                destination[property] = destination[property] || {};\r\n                deepExtend(destination[property], source[property]);\r\n            } else {\r\n                destination[property] = source[property];\r\n            }\r\n        }\r\n        return destination;\r\n    }\r\n\r\n    function clone(object) {\r\n        return deepExtend({}, object);\r\n    }\r\n\r\n    function debounce(func, wait, immediate) {\r\n        var timeout;\r\n        return function () {\r\n            var context = this, args = arguments;\r\n            var later = function () {\r\n                timeout = null;\r\n                if (!immediate) func.apply(context, args);\r\n            };\r\n            var callNow = immediate && !timeout;\r\n            clearTimeout(timeout);\r\n            timeout = setTimeout(later, wait);\r\n            if (callNow) func.apply(context, args);\r\n        };\r\n    }\r\n\r\n    function dispatchChange(element) {\r\n        if (\"createEvent\" in document) {\r\n            var evt = document.createEvent(\"HTMLEvents\");\r\n            evt.initEvent(\"change\", false, true);\r\n            element.dispatchEvent(evt);\r\n        }\r\n        else {\r\n            element.fireEvent(\"onchange\");\r\n        }\r\n    }\r\n\r\n    //http://jsperf.com/vanilla-css\r\n    function css(el, styles, val) {\r\n        if (typeof (styles) === 'string') {\r\n            var tmp = styles;\r\n            styles = {};\r\n            styles[tmp] = val;\r\n        }\r\n\r\n        for (var prop in styles) {\r\n            el.style[prop] = styles[prop];\r\n        }\r\n    }\r\n\r\n    function addClass(el, c) {\r\n        if (el.classList) {\r\n            el.classList.add(c);\r\n        }\r\n        else {\r\n            el.className += ' ' + c;\r\n        }\r\n    }\r\n\r\n    function removeClass(el, c) {\r\n        if (el.classList) {\r\n            el.classList.remove(c);\r\n        }\r\n        else {\r\n            el.className = el.className.replace(c, '');\r\n        }\r\n    }\r\n\r\n    function setAttributes(el, attrs) {\r\n        for (var key in attrs) {\r\n            el.setAttribute(key, attrs[key]);\r\n        }\r\n    }\r\n\r\n    function num(v) {\r\n        return parseInt(v, 10);\r\n    }\r\n\r\n    /* Utilities */\r\n    function loadImage(src, doExif) {\r\n        if (!src) { throw 'Source image missing'; }\r\n        \r\n        var img = new Image();\r\n        img.style.opacity = '0';\r\n        return new Promise(function (resolve, reject) {\r\n            function _resolve() {\r\n                img.style.opacity = '1';\r\n                setTimeout(function () {\r\n                    resolve(img);\r\n                }, 1);\r\n            }\r\n\r\n            img.removeAttribute('crossOrigin');\r\n            if (src.match(/^https?:\\/\\/|^\\/\\//)) {\r\n                img.setAttribute('crossOrigin', 'anonymous');\r\n            }\r\n\r\n            img.onload = function () {\r\n                if (doExif) {\r\n                    EXIF.getData(img, function () {\r\n                        _resolve();\r\n                    });\r\n                }\r\n                else {\r\n                    _resolve();\r\n                }\r\n            };\r\n            img.onerror = function (ev) {\r\n                img.style.opacity = 1;\r\n                setTimeout(function () {\r\n                    reject(ev);\r\n                }, 1);\r\n            };\r\n            img.src = src;\r\n        });\r\n    }\r\n\r\n    function naturalImageDimensions(img, ornt) {\r\n        var w = img.naturalWidth;\r\n        var h = img.naturalHeight;\r\n        var orient = ornt || getExifOrientation(img);\r\n        if (orient && orient >= 5) {\r\n            var x= w;\r\n            w = h;\r\n            h = x;\r\n        }\r\n        return { width: w, height: h };\r\n    }\r\n\r\n    /* CSS Transform Prototype */\r\n    var TRANSLATE_OPTS = {\r\n        'translate3d': {\r\n            suffix: ', 0px'\r\n        },\r\n        'translate': {\r\n            suffix: ''\r\n        }\r\n    };\r\n    var Transform = function (x, y, scale) {\r\n        this.x = parseFloat(x);\r\n        this.y = parseFloat(y);\r\n        this.scale = parseFloat(scale);\r\n    };\r\n\r\n    Transform.parse = function (v) {\r\n        if (v.style) {\r\n            return Transform.parse(v.style[CSS_TRANSFORM]);\r\n        }\r\n        else if (v.indexOf('matrix') > -1 || v.indexOf('none') > -1) {\r\n            return Transform.fromMatrix(v);\r\n        }\r\n        else {\r\n            return Transform.fromString(v);\r\n        }\r\n    };\r\n\r\n    Transform.fromMatrix = function (v) {\r\n        var vals = v.substring(7).split(',');\r\n        if (!vals.length || v === 'none') {\r\n            vals = [1, 0, 0, 1, 0, 0];\r\n        }\r\n\r\n        return new Transform(num(vals[4]), num(vals[5]), parseFloat(vals[0]));\r\n    };\r\n\r\n    Transform.fromString = function (v) {\r\n        var values = v.split(') '),\r\n            translate = values[0].substring(Croppie.globals.translate.length + 1).split(','),\r\n            scale = values.length > 1 ? values[1].substring(6) : 1,\r\n            x = translate.length > 1 ? translate[0] : 0,\r\n            y = translate.length > 1 ? translate[1] : 0;\r\n\r\n        return new Transform(x, y, scale);\r\n    };\r\n\r\n    Transform.prototype.toString = function () {\r\n        var suffix = TRANSLATE_OPTS[Croppie.globals.translate].suffix || '';\r\n        return Croppie.globals.translate + '(' + this.x + 'px, ' + this.y + 'px' + suffix + ') scale(' + this.scale + ')';\r\n    };\r\n\r\n    var TransformOrigin = function (el) {\r\n        if (!el || !el.style[CSS_TRANS_ORG]) {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            return;\r\n        }\r\n        var css = el.style[CSS_TRANS_ORG].split(' ');\r\n        this.x = parseFloat(css[0]);\r\n        this.y = parseFloat(css[1]);\r\n    };\r\n\r\n    TransformOrigin.prototype.toString = function () {\r\n        return this.x + 'px ' + this.y + 'px';\r\n    };\r\n\r\n    function getExifOrientation (img) {\r\n        return img.exifdata && img.exifdata.Orientation ? num(img.exifdata.Orientation) : 1;\r\n    }\r\n\r\n    function drawCanvas(canvas, img, orientation) {\r\n        var width = img.width,\r\n            height = img.height,\r\n            ctx = canvas.getContext('2d');\r\n\r\n        canvas.width = img.width;\r\n        canvas.height = img.height;\r\n\r\n        ctx.save();\r\n        switch (orientation) {\r\n          case 2:\r\n             ctx.translate(width, 0);\r\n             ctx.scale(-1, 1);\r\n             break;\r\n\r\n          case 3:\r\n              ctx.translate(width, height);\r\n              ctx.rotate(180*Math.PI/180);\r\n              break;\r\n\r\n          case 4:\r\n              ctx.translate(0, height);\r\n              ctx.scale(1, -1);\r\n              break;\r\n\r\n          case 5:\r\n              canvas.width = height;\r\n              canvas.height = width;\r\n              ctx.rotate(90*Math.PI/180);\r\n              ctx.scale(1, -1);\r\n              break;\r\n\r\n          case 6:\r\n              canvas.width = height;\r\n              canvas.height = width;\r\n              ctx.rotate(90*Math.PI/180);\r\n              ctx.translate(0, -height);\r\n              break;\r\n\r\n          case 7:\r\n              canvas.width = height;\r\n              canvas.height = width;\r\n              ctx.rotate(-90*Math.PI/180);\r\n              ctx.translate(-width, height);\r\n              ctx.scale(1, -1);\r\n              break;\r\n\r\n          case 8:\r\n              canvas.width = height;\r\n              canvas.height = width;\r\n              ctx.translate(0, width);\r\n              ctx.rotate(-90*Math.PI/180);\r\n              break;\r\n        }\r\n        ctx.drawImage(img, 0,0, width, height);\r\n        ctx.restore();\r\n    }\r\n\r\n    /* Private Methods */\r\n    function _create() {\r\n        var self = this,\r\n            contClass = 'croppie-container',\r\n            customViewportClass = self.options.viewport.type ? 'cr-vp-' + self.options.viewport.type : null,\r\n            boundary, img, viewport, overlay, bw, bh;\r\n\r\n        self.options.useCanvas = self.options.enableOrientation || _hasExif.call(self);\r\n        // Properties on class\r\n        self.data = {};\r\n        self.elements = {};\r\n\r\n        boundary = self.elements.boundary = document.createElement('div');\r\n        viewport = self.elements.viewport = document.createElement('div');\r\n        img = self.elements.img = document.createElement('img');\r\n        overlay = self.elements.overlay = document.createElement('div');\r\n\r\n        if (self.options.useCanvas) {\r\n            self.elements.canvas = document.createElement('canvas');\r\n            self.elements.preview = self.elements.canvas;\r\n        }\r\n        else {\r\n            self.elements.preview = img;\r\n        }\r\n\r\n        addClass(boundary, 'cr-boundary');\r\n        boundary.setAttribute('aria-dropeffect', 'none');\r\n        bw = self.options.boundary.width;\r\n        bh = self.options.boundary.height;\r\n        css(boundary, {\r\n            width: (bw + (isNaN(bw) ? '' : 'px')),\r\n            height: (bh + (isNaN(bh) ? '' : 'px'))\r\n        });\r\n\r\n        addClass(viewport, 'cr-viewport');\r\n        if (customViewportClass) {\r\n            addClass(viewport, customViewportClass);\r\n        }\r\n        css(viewport, {\r\n            width: self.options.viewport.width + 'px',\r\n            height: self.options.viewport.height + 'px'\r\n        });\r\n        viewport.setAttribute('tabindex', 0);\r\n\r\n        addClass(self.elements.preview, 'cr-image');\r\n        setAttributes(self.elements.preview, { 'alt': 'preview', 'aria-grabbed': 'false' });\r\n        addClass(overlay, 'cr-overlay');\r\n\r\n        self.element.appendChild(boundary);\r\n        boundary.appendChild(self.elements.preview);\r\n        boundary.appendChild(viewport);\r\n        boundary.appendChild(overlay);\r\n\r\n        addClass(self.element, contClass);\r\n        if (self.options.customClass) {\r\n            addClass(self.element, self.options.customClass);\r\n        }\r\n\r\n        _initDraggable.call(this);\r\n\r\n        if (self.options.enableZoom) {\r\n            _initializeZoom.call(self);\r\n        }\r\n\r\n        // if (self.options.enableOrientation) {\r\n        //     _initRotationControls.call(self);\r\n        // }\r\n\r\n        if (self.options.enableResize) {\r\n            _initializeResize.call(self);\r\n        }\r\n    }\r\n\r\n    // function _initRotationControls () {\r\n    //     var self = this,\r\n    //         wrap, btnLeft, btnRight, iLeft, iRight;\r\n\r\n    //     wrap = document.createElement('div');\r\n    //     self.elements.orientationBtnLeft = btnLeft = document.createElement('button');\r\n    //     self.elements.orientationBtnRight = btnRight = document.createElement('button');\r\n\r\n    //     wrap.appendChild(btnLeft);\r\n    //     wrap.appendChild(btnRight);\r\n\r\n    //     iLeft = document.createElement('i');\r\n    //     iRight = document.createElement('i');\r\n    //     btnLeft.appendChild(iLeft);\r\n    //     btnRight.appendChild(iRight);\r\n\r\n    //     addClass(wrap, 'cr-rotate-controls');\r\n    //     addClass(btnLeft, 'cr-rotate-l');\r\n    //     addClass(btnRight, 'cr-rotate-r');\r\n\r\n    //     self.elements.boundary.appendChild(wrap);\r\n\r\n    //     btnLeft.addEventListener('click', function () {\r\n    //         self.rotate(-90);\r\n    //     });\r\n    //     btnRight.addEventListener('click', function () {\r\n    //         self.rotate(90);\r\n    //     });\r\n    // }\r\n\r\n    function _hasExif() {\r\n        return this.options.enableExif && window.EXIF;\r\n    }\r\n\r\n    function _initializeResize () {\r\n        var self = this;\r\n        var wrap = document.createElement('div');\r\n        var isDragging = false;\r\n        var direction;\r\n        var originalX;\r\n        var originalY;\r\n        var minSize = 50;\r\n        var maxWidth;\r\n        var maxHeight;\r\n        var vr;\r\n        var hr;\r\n\r\n        addClass(wrap, 'cr-resizer');\r\n        css(wrap, {\r\n            width: this.options.viewport.width + 'px',\r\n            height: this.options.viewport.height + 'px'\r\n        });\r\n\r\n        if (this.options.resizeControls.height) {\r\n            vr = document.createElement('div');\r\n            addClass(vr, 'cr-resizer-vertical');\r\n            wrap.appendChild(vr);\r\n        }\r\n\r\n        if (this.options.resizeControls.width) {\r\n            hr = document.createElement('div');\r\n            addClass(hr, 'cr-resizer-horisontal');\r\n            wrap.appendChild(hr);\r\n        }\r\n\r\n        function mouseDown(ev) {\r\n            if (ev.button !== undefined && ev.button !== 0) return;\r\n\r\n            ev.preventDefault();\r\n            if (isDragging) {\r\n                return;\r\n            }\r\n\r\n            var overlayRect = self.elements.overlay.getBoundingClientRect();\r\n\r\n            isDragging = true;\r\n            originalX = ev.pageX;\r\n            originalY = ev.pageY;\r\n            direction = ev.currentTarget.className.indexOf('vertical') !== -1 ? 'v' : 'h';\r\n            maxWidth = overlayRect.width;\r\n            maxHeight = overlayRect.height;\r\n\r\n            if (ev.touches) {\r\n                var touches = ev.touches[0];\r\n                originalX = touches.pageX;\r\n                originalY = touches.pageY;\r\n            }\r\n\r\n            window.addEventListener('mousemove', mouseMove);\r\n            window.addEventListener('touchmove', mouseMove);\r\n            window.addEventListener('mouseup', mouseUp);\r\n            window.addEventListener('touchend', mouseUp);\r\n            document.body.style[CSS_USERSELECT] = 'none';\r\n        }\r\n\r\n        function mouseMove(ev) {\r\n            var pageX = ev.pageX;\r\n            var pageY = ev.pageY;\r\n\r\n            ev.preventDefault();\r\n\r\n            if (ev.touches) {\r\n                var touches = ev.touches[0];\r\n                pageX = touches.pageX;\r\n                pageY = touches.pageY;\r\n            }\r\n\r\n            var deltaX = pageX - originalX;\r\n            var deltaY = pageY - originalY;\r\n            var newHeight = self.options.viewport.height + deltaY;\r\n            var newWidth = self.options.viewport.width + deltaX;\r\n\r\n            if (direction === 'v' && newHeight >= minSize && newHeight <= maxHeight) {\r\n                css(wrap, {\r\n                    height: newHeight + 'px'\r\n                });\r\n\r\n                self.options.boundary.height += deltaY;\r\n                css(self.elements.boundary, {\r\n                    height: self.options.boundary.height + 'px'\r\n                });\r\n\r\n                self.options.viewport.height += deltaY;\r\n                css(self.elements.viewport, {\r\n                    height: self.options.viewport.height + 'px'\r\n                });\r\n            }\r\n            else if (direction === 'h' && newWidth >= minSize && newWidth <= maxWidth) {\r\n                css(wrap, {\r\n                    width: newWidth + 'px'\r\n                });\r\n\r\n                self.options.boundary.width += deltaX;\r\n                css(self.elements.boundary, {\r\n                    width: self.options.boundary.width + 'px'\r\n                });\r\n\r\n                self.options.viewport.width += deltaX;\r\n                css(self.elements.viewport, {\r\n                    width: self.options.viewport.width + 'px'\r\n                });\r\n            }\r\n\r\n            _updateOverlay.call(self);\r\n            _updateZoomLimits.call(self);\r\n            _updateCenterPoint.call(self);\r\n            _triggerUpdate.call(self);\r\n            originalY = pageY;\r\n            originalX = pageX;\r\n        }\r\n\r\n        function mouseUp() {\r\n            isDragging = false;\r\n            window.removeEventListener('mousemove', mouseMove);\r\n            window.removeEventListener('touchmove', mouseMove);\r\n            window.removeEventListener('mouseup', mouseUp);\r\n            window.removeEventListener('touchend', mouseUp);\r\n            document.body.style[CSS_USERSELECT] = '';\r\n        }\r\n\r\n        if (vr) {\r\n            vr.addEventListener('mousedown', mouseDown);\r\n            vr.addEventListener('touchstart', mouseDown);\r\n        }\r\n\r\n        if (hr) {\r\n            hr.addEventListener('mousedown', mouseDown);\r\n            hr.addEventListener('touchstart', mouseDown);\r\n        }\r\n\r\n        this.elements.boundary.appendChild(wrap);\r\n    }\r\n\r\n    function _setZoomerVal(v) {\r\n        if (this.options.enableZoom) {\r\n            var z = this.elements.zoomer,\r\n                val = fix(v, 4);\r\n\r\n            z.value = Math.max(parseFloat(z.min), Math.min(parseFloat(z.max), val)).toString();\r\n        }\r\n    }\r\n\r\n    function _initializeZoom() {\r\n        var self = this,\r\n            wrap = self.elements.zoomerWrap = document.createElement('div'),\r\n            zoomer = self.elements.zoomer = document.createElement('input');\r\n\r\n        addClass(wrap, 'cr-slider-wrap');\r\n        addClass(zoomer, 'cr-slider');\r\n        zoomer.type = 'range';\r\n        zoomer.step = '0.0001';\r\n        zoomer.value = '1';\r\n        zoomer.style.display = self.options.showZoomer ? '' : 'none';\r\n        zoomer.setAttribute('aria-label', 'zoom');\r\n\r\n        self.element.appendChild(wrap);\r\n        wrap.appendChild(zoomer);\r\n\r\n        self._currentZoom = 1;\r\n\r\n        function change() {\r\n            _onZoom.call(self, {\r\n                value: parseFloat(zoomer.value),\r\n                origin: new TransformOrigin(self.elements.preview),\r\n                viewportRect: self.elements.viewport.getBoundingClientRect(),\r\n                transform: Transform.parse(self.elements.preview)\r\n            });\r\n        }\r\n\r\n        function scroll(ev) {\r\n            var delta, targetZoom;\r\n\r\n            if(self.options.mouseWheelZoom === 'ctrl' && ev.ctrlKey !== true){\r\n              return 0;\r\n            } else if (ev.wheelDelta) {\r\n                delta = ev.wheelDelta / 1200; //wheelDelta min: -120 max: 120 // max x 10 x 2\r\n            } else if (ev.deltaY) {\r\n                delta = ev.deltaY / 1060; //deltaY min: -53 max: 53 // max x 10 x 2\r\n            } else if (ev.detail) {\r\n                delta = ev.detail / -60; //delta min: -3 max: 3 // max x 10 x 2\r\n            } else {\r\n                delta = 0;\r\n            }\r\n\r\n            targetZoom = self._currentZoom + (delta * self._currentZoom);\r\n\r\n            ev.preventDefault();\r\n            _setZoomerVal.call(self, targetZoom);\r\n            change.call(self);\r\n        }\r\n\r\n        self.elements.zoomer.addEventListener('input', change);// this is being fired twice on keypress\r\n        self.elements.zoomer.addEventListener('change', change);\r\n\r\n        if (self.options.mouseWheelZoom) {\r\n            self.elements.boundary.addEventListener('mousewheel', scroll);\r\n            self.elements.boundary.addEventListener('DOMMouseScroll', scroll);\r\n        }\r\n    }\r\n\r\n    function _onZoom(ui) {\r\n        var self = this,\r\n            transform = ui ? ui.transform : Transform.parse(self.elements.preview),\r\n            vpRect = ui ? ui.viewportRect : self.elements.viewport.getBoundingClientRect(),\r\n            origin = ui ? ui.origin : new TransformOrigin(self.elements.preview);\r\n\r\n        function applyCss() {\r\n            var transCss = {};\r\n            transCss[CSS_TRANSFORM] = transform.toString();\r\n            transCss[CSS_TRANS_ORG] = origin.toString();\r\n            css(self.elements.preview, transCss);\r\n        }\r\n\r\n        self._currentZoom = ui ? ui.value : self._currentZoom;\r\n        transform.scale = self._currentZoom;\r\n        self.elements.zoomer.setAttribute('aria-valuenow', self._currentZoom);\r\n        applyCss();\r\n\r\n        if (self.options.enforceBoundary) {\r\n            var boundaries = _getVirtualBoundaries.call(self, vpRect),\r\n                transBoundaries = boundaries.translate,\r\n                oBoundaries = boundaries.origin;\r\n\r\n            if (transform.x >= transBoundaries.maxX) {\r\n                origin.x = oBoundaries.minX;\r\n                transform.x = transBoundaries.maxX;\r\n            }\r\n\r\n            if (transform.x <= transBoundaries.minX) {\r\n                origin.x = oBoundaries.maxX;\r\n                transform.x = transBoundaries.minX;\r\n            }\r\n\r\n            if (transform.y >= transBoundaries.maxY) {\r\n                origin.y = oBoundaries.minY;\r\n                transform.y = transBoundaries.maxY;\r\n            }\r\n\r\n            if (transform.y <= transBoundaries.minY) {\r\n                origin.y = oBoundaries.maxY;\r\n                transform.y = transBoundaries.minY;\r\n            }\r\n        }\r\n        applyCss();\r\n        _debouncedOverlay.call(self);\r\n        _triggerUpdate.call(self);\r\n    }\r\n\r\n    function _getVirtualBoundaries(viewport) {\r\n        var self = this,\r\n            scale = self._currentZoom,\r\n            vpWidth = viewport.width,\r\n            vpHeight = viewport.height,\r\n            centerFromBoundaryX = self.elements.boundary.clientWidth / 2,\r\n            centerFromBoundaryY = self.elements.boundary.clientHeight / 2,\r\n            imgRect = self.elements.preview.getBoundingClientRect(),\r\n            curImgWidth = imgRect.width,\r\n            curImgHeight = imgRect.height,\r\n            halfWidth = vpWidth / 2,\r\n            halfHeight = vpHeight / 2;\r\n\r\n        var maxX = ((halfWidth / scale) - centerFromBoundaryX) * -1;\r\n        var minX = maxX - ((curImgWidth * (1 / scale)) - (vpWidth * (1 / scale)));\r\n\r\n        var maxY = ((halfHeight / scale) - centerFromBoundaryY) * -1;\r\n        var minY = maxY - ((curImgHeight * (1 / scale)) - (vpHeight * (1 / scale)));\r\n\r\n        var originMinX = (1 / scale) * halfWidth;\r\n        var originMaxX = (curImgWidth * (1 / scale)) - originMinX;\r\n\r\n        var originMinY = (1 / scale) * halfHeight;\r\n        var originMaxY = (curImgHeight * (1 / scale)) - originMinY;\r\n\r\n        return {\r\n            translate: {\r\n                maxX: maxX,\r\n                minX: minX,\r\n                maxY: maxY,\r\n                minY: minY\r\n            },\r\n            origin: {\r\n                maxX: originMaxX,\r\n                minX: originMinX,\r\n                maxY: originMaxY,\r\n                minY: originMinY\r\n            }\r\n        };\r\n    }\r\n\r\n    function _updateCenterPoint(rotate) {\r\n        var self = this,\r\n            scale = self._currentZoom,\r\n            data = self.elements.preview.getBoundingClientRect(),\r\n            vpData = self.elements.viewport.getBoundingClientRect(),\r\n            transform = Transform.parse(self.elements.preview.style[CSS_TRANSFORM]),\r\n            pc = new TransformOrigin(self.elements.preview),\r\n            top = (vpData.top - data.top) + (vpData.height / 2),\r\n            left = (vpData.left - data.left) + (vpData.width / 2),\r\n            center = {},\r\n            adj = {};\r\n\r\n        if (rotate) {\r\n            var cx = pc.x;\r\n            var cy = pc.y;\r\n            var tx = transform.x;\r\n            var ty = transform.y;\r\n\r\n            center.y = cx;\r\n            center.x = cy;\r\n            transform.y = tx;\r\n            transform.x = ty;\r\n        }\r\n        else {\r\n            center.y = top / scale;\r\n            center.x = left / scale;\r\n\r\n            adj.y = (center.y - pc.y) * (1 - scale);\r\n            adj.x = (center.x - pc.x) * (1 - scale);\r\n\r\n            transform.x -= adj.x;\r\n            transform.y -= adj.y;\r\n        }\r\n\r\n        var newCss = {};\r\n        newCss[CSS_TRANS_ORG] = center.x + 'px ' + center.y + 'px';\r\n        newCss[CSS_TRANSFORM] = transform.toString();\r\n        css(self.elements.preview, newCss);\r\n    }\r\n\r\n    function _initDraggable() {\r\n        var self = this,\r\n            isDragging = false,\r\n            originalX,\r\n            originalY,\r\n            originalDistance,\r\n            vpRect,\r\n            transform;\r\n\r\n        function assignTransformCoordinates(deltaX, deltaY) {\r\n            var imgRect = self.elements.preview.getBoundingClientRect(),\r\n                top = transform.y + deltaY,\r\n                left = transform.x + deltaX;\r\n\r\n            if (self.options.enforceBoundary) {\r\n                if (vpRect.top > imgRect.top + deltaY && vpRect.bottom < imgRect.bottom + deltaY) {\r\n                    transform.y = top;\r\n                }\r\n\r\n                if (vpRect.left > imgRect.left + deltaX && vpRect.right < imgRect.right + deltaX) {\r\n                    transform.x = left;\r\n                }\r\n            }\r\n            else {\r\n                transform.y = top;\r\n                transform.x = left;\r\n            }\r\n        }\r\n\r\n        function toggleGrabState(isDragging) {\r\n          self.elements.preview.setAttribute('aria-grabbed', isDragging);\r\n          self.elements.boundary.setAttribute('aria-dropeffect', isDragging? 'move': 'none');\r\n        }\r\n\r\n        function keyDown(ev) {\r\n            var LEFT_ARROW  = 37,\r\n                UP_ARROW    = 38,\r\n                RIGHT_ARROW = 39,\r\n                DOWN_ARROW  = 40;\r\n\r\n            if (ev.shiftKey && (ev.keyCode === UP_ARROW || ev.keyCode === DOWN_ARROW)) {\r\n                var zoom;\r\n                if (ev.keyCode === UP_ARROW) {\r\n                    zoom = parseFloat(self.elements.zoomer.value) + parseFloat(self.elements.zoomer.step)\r\n                }\r\n                else {\r\n                    zoom = parseFloat(self.elements.zoomer.value) - parseFloat(self.elements.zoomer.step)\r\n                }\r\n                self.setZoom(zoom);\r\n            }\r\n            else if (self.options.enableKeyMovement && (ev.keyCode >= 37 && ev.keyCode <= 40)) {\r\n                ev.preventDefault();\r\n                var movement = parseKeyDown(ev.keyCode);\r\n\r\n                transform = Transform.parse(self.elements.preview);\r\n                document.body.style[CSS_USERSELECT] = 'none';\r\n                vpRect = self.elements.viewport.getBoundingClientRect();\r\n                keyMove(movement);\r\n            }\r\n\r\n            function parseKeyDown(key) {\r\n                switch (key) {\r\n                    case LEFT_ARROW:\r\n                        return [1, 0];\r\n                    case UP_ARROW:\r\n                        return [0, 1];\r\n                    case RIGHT_ARROW:\r\n                        return [-1, 0];\r\n                    case DOWN_ARROW:\r\n                        return [0, -1];\r\n                }\r\n            }\r\n        }\r\n\r\n        function keyMove(movement) {\r\n            var deltaX = movement[0],\r\n                deltaY = movement[1],\r\n                newCss = {};\r\n\r\n            assignTransformCoordinates(deltaX, deltaY);\r\n\r\n            newCss[CSS_TRANSFORM] = transform.toString();\r\n            css(self.elements.preview, newCss);\r\n            _updateOverlay.call(self);\r\n            document.body.style[CSS_USERSELECT] = '';\r\n            _updateCenterPoint.call(self);\r\n            _triggerUpdate.call(self);\r\n            originalDistance = 0;\r\n        }\r\n\r\n        function mouseDown(ev) {\r\n            if (ev.button !== undefined && ev.button !== 0) return;\r\n\r\n            ev.preventDefault();\r\n            if (isDragging) return;\r\n            isDragging = true;\r\n            originalX = ev.pageX;\r\n            originalY = ev.pageY;\r\n\r\n            if (ev.touches) {\r\n                var touches = ev.touches[0];\r\n                originalX = touches.pageX;\r\n                originalY = touches.pageY;\r\n            }\r\n            toggleGrabState(isDragging);\r\n            transform = Transform.parse(self.elements.preview);\r\n            window.addEventListener('mousemove', mouseMove);\r\n            window.addEventListener('touchmove', mouseMove);\r\n            window.addEventListener('mouseup', mouseUp);\r\n            window.addEventListener('touchend', mouseUp);\r\n            document.body.style[CSS_USERSELECT] = 'none';\r\n            vpRect = self.elements.viewport.getBoundingClientRect();\r\n        }\r\n\r\n        function mouseMove(ev) {\r\n            ev.preventDefault();\r\n            var pageX = ev.pageX,\r\n                pageY = ev.pageY;\r\n\r\n            if (ev.touches) {\r\n                var touches = ev.touches[0];\r\n                pageX = touches.pageX;\r\n                pageY = touches.pageY;\r\n            }\r\n\r\n            var deltaX = pageX - originalX,\r\n                deltaY = pageY - originalY,\r\n                newCss = {};\r\n\r\n            if (ev.type === 'touchmove') {\r\n                if (ev.touches.length > 1) {\r\n                    var touch1 = ev.touches[0];\r\n                    var touch2 = ev.touches[1];\r\n                    var dist = Math.sqrt((touch1.pageX - touch2.pageX) * (touch1.pageX - touch2.pageX) + (touch1.pageY - touch2.pageY) * (touch1.pageY - touch2.pageY));\r\n\r\n                    if (!originalDistance) {\r\n                        originalDistance = dist / self._currentZoom;\r\n                    }\r\n\r\n                    var scale = dist / originalDistance;\r\n\r\n                    _setZoomerVal.call(self, scale);\r\n                    dispatchChange(self.elements.zoomer);\r\n                    return;\r\n                }\r\n            }\r\n\r\n            assignTransformCoordinates(deltaX, deltaY);\r\n\r\n            newCss[CSS_TRANSFORM] = transform.toString();\r\n            css(self.elements.preview, newCss);\r\n            _updateOverlay.call(self);\r\n            originalY = pageY;\r\n            originalX = pageX;\r\n        }\r\n\r\n        function mouseUp() {\r\n            isDragging = false;\r\n            toggleGrabState(isDragging);\r\n            window.removeEventListener('mousemove', mouseMove);\r\n            window.removeEventListener('touchmove', mouseMove);\r\n            window.removeEventListener('mouseup', mouseUp);\r\n            window.removeEventListener('touchend', mouseUp);\r\n            document.body.style[CSS_USERSELECT] = '';\r\n            _updateCenterPoint.call(self);\r\n            _triggerUpdate.call(self);\r\n            originalDistance = 0;\r\n        }\r\n\r\n        self.elements.overlay.addEventListener('mousedown', mouseDown);\r\n        self.elements.viewport.addEventListener('keydown', keyDown);\r\n        self.elements.overlay.addEventListener('touchstart', mouseDown);\r\n    }\r\n\r\n    function _updateOverlay() {\r\n        if (!this.elements) return; // since this is debounced, it can be fired after destroy\r\n        var self = this,\r\n            boundRect = self.elements.boundary.getBoundingClientRect(),\r\n            imgData = self.elements.preview.getBoundingClientRect();\r\n\r\n        css(self.elements.overlay, {\r\n            width: imgData.width + 'px',\r\n            height: imgData.height + 'px',\r\n            top: (imgData.top - boundRect.top) + 'px',\r\n            left: (imgData.left - boundRect.left) + 'px'\r\n        });\r\n    }\r\n    var _debouncedOverlay = debounce(_updateOverlay, 500);\r\n\r\n    function _triggerUpdate() {\r\n        var self = this,\r\n            data = self.get();\r\n\r\n        if (!_isVisible.call(self)) {\r\n            return;\r\n        }\r\n\r\n        self.options.update.call(self, data);\r\n        if (self.$ && typeof Prototype === 'undefined') {\r\n            self.$(self.element).trigger('update.croppie', data);\r\n        }\r\n        else {\r\n            var ev;\r\n            if (window.CustomEvent) {\r\n                ev = new CustomEvent('update', { detail: data });\r\n            } else {\r\n                ev = document.createEvent('CustomEvent');\r\n                ev.initCustomEvent('update', true, true, data);\r\n            }\r\n\r\n            self.element.dispatchEvent(ev);\r\n        }\r\n    }\r\n\r\n    function _isVisible() {\r\n        return this.elements.preview.offsetHeight > 0 && this.elements.preview.offsetWidth > 0;\r\n    }\r\n\r\n    function _updatePropertiesFromImage() {\r\n        var self = this,\r\n            initialZoom = 1,\r\n            cssReset = {},\r\n            img = self.elements.preview,\r\n            imgData,\r\n            transformReset = new Transform(0, 0, initialZoom),\r\n            originReset = new TransformOrigin(),\r\n            isVisible = _isVisible.call(self);\r\n\r\n        if (!isVisible || self.data.bound) {// if the croppie isn't visible or it doesn't need binding\r\n            return;\r\n        }\r\n\r\n        self.data.bound = true;\r\n        cssReset[CSS_TRANSFORM] = transformReset.toString();\r\n        cssReset[CSS_TRANS_ORG] = originReset.toString();\r\n        cssReset['opacity'] = 1;\r\n        css(img, cssReset);\r\n\r\n        imgData = self.elements.preview.getBoundingClientRect();\r\n\r\n        self._originalImageWidth = imgData.width;\r\n        self._originalImageHeight = imgData.height;\r\n        self.data.orientation = _hasExif.call(self) ? getExifOrientation(self.elements.img) : self.data.orientation;\r\n\r\n        if (self.options.enableZoom) {\r\n            _updateZoomLimits.call(self, true);\r\n        }\r\n        else {\r\n            self._currentZoom = initialZoom;\r\n        }\r\n\r\n        transformReset.scale = self._currentZoom;\r\n        cssReset[CSS_TRANSFORM] = transformReset.toString();\r\n        css(img, cssReset);\r\n\r\n        if (self.data.points.length) {\r\n            _bindPoints.call(self, self.data.points);\r\n        }\r\n        else {\r\n            _centerImage.call(self);\r\n        }\r\n\r\n        _updateCenterPoint.call(self);\r\n        _updateOverlay.call(self);\r\n    }\r\n\r\n    function _updateZoomLimits (initial) {\r\n        var self = this,\r\n            minZoom = Math.max(self.options.minZoom, 0) || 0,\r\n            maxZoom = self.options.maxZoom || 1.5,\r\n            initialZoom,\r\n            defaultInitialZoom,\r\n            zoomer = self.elements.zoomer,\r\n            scale = parseFloat(zoomer.value),\r\n            boundaryData = self.elements.boundary.getBoundingClientRect(),\r\n            imgData = naturalImageDimensions(self.elements.img, self.data.orientation),\r\n            vpData = self.elements.viewport.getBoundingClientRect(),\r\n            minW,\r\n            minH;\r\n        if (self.options.enforceBoundary) {\r\n            minW = vpData.width / imgData.width;\r\n            minH = vpData.height / imgData.height;\r\n            minZoom = Math.max(minW, minH);\r\n        }\r\n\r\n        if (minZoom >= maxZoom) {\r\n            maxZoom = minZoom + 1;\r\n        }\r\n\r\n        zoomer.min = fix(minZoom, 4);\r\n        zoomer.max = fix(maxZoom, 4);\r\n\r\n        if (!initial && (scale < zoomer.min || scale > zoomer.max)) {\r\n            _setZoomerVal.call(self, scale < zoomer.min ? zoomer.min : zoomer.max);\r\n        }\r\n        else if (initial) {\r\n            defaultInitialZoom = Math.max((boundaryData.width / imgData.width), (boundaryData.height / imgData.height));\r\n            initialZoom = self.data.boundZoom !== null ? self.data.boundZoom : defaultInitialZoom;\r\n            _setZoomerVal.call(self, initialZoom);\r\n        }\r\n\r\n        dispatchChange(zoomer);\r\n    }\r\n\r\n    function _bindPoints(points) {\r\n        if (points.length !== 4) {\r\n            throw \"Croppie - Invalid number of points supplied: \" + points;\r\n        }\r\n        var self = this,\r\n            pointsWidth = points[2] - points[0],\r\n            // pointsHeight = points[3] - points[1],\r\n            vpData = self.elements.viewport.getBoundingClientRect(),\r\n            boundRect = self.elements.boundary.getBoundingClientRect(),\r\n            vpOffset = {\r\n                left: vpData.left - boundRect.left,\r\n                top: vpData.top - boundRect.top\r\n            },\r\n            scale = vpData.width / pointsWidth,\r\n            originTop = points[1],\r\n            originLeft = points[0],\r\n            transformTop = (-1 * points[1]) + vpOffset.top,\r\n            transformLeft = (-1 * points[0]) + vpOffset.left,\r\n            newCss = {};\r\n\r\n        newCss[CSS_TRANS_ORG] = originLeft + 'px ' + originTop + 'px';\r\n        newCss[CSS_TRANSFORM] = new Transform(transformLeft, transformTop, scale).toString();\r\n        css(self.elements.preview, newCss);\r\n\r\n        _setZoomerVal.call(self, scale);\r\n        self._currentZoom = scale;\r\n    }\r\n\r\n    function _centerImage() {\r\n        var self = this,\r\n            imgDim = self.elements.preview.getBoundingClientRect(),\r\n            vpDim = self.elements.viewport.getBoundingClientRect(),\r\n            boundDim = self.elements.boundary.getBoundingClientRect(),\r\n            vpLeft = vpDim.left - boundDim.left,\r\n            vpTop = vpDim.top - boundDim.top,\r\n            w = vpLeft - ((imgDim.width - vpDim.width) / 2),\r\n            h = vpTop - ((imgDim.height - vpDim.height) / 2),\r\n            transform = new Transform(w, h, self._currentZoom);\r\n\r\n        css(self.elements.preview, CSS_TRANSFORM, transform.toString());\r\n    }\r\n\r\n    function _transferImageToCanvas(customOrientation) {\r\n        var self = this,\r\n            canvas = self.elements.canvas,\r\n            img = self.elements.img,\r\n            ctx = canvas.getContext('2d');\r\n\r\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n        canvas.width = img.width;\r\n        canvas.height = img.height;\r\n\r\n        var orientation = self.options.enableOrientation && customOrientation || getExifOrientation(img);\r\n        drawCanvas(canvas, img, orientation);\r\n    }\r\n\r\n    function _getCanvas(data) {\r\n        var self = this,\r\n            points = data.points,\r\n            left = num(points[0]),\r\n            top = num(points[1]),\r\n            right = num(points[2]),\r\n            bottom = num(points[3]),\r\n            width = right-left,\r\n            height = bottom-top,\r\n            circle = data.circle,\r\n            canvas = document.createElement('canvas'),\r\n            ctx = canvas.getContext('2d'),\r\n            startX = 0,\r\n            startY = 0,\r\n            canvasWidth = data.outputWidth || width,\r\n            canvasHeight = data.outputHeight || height;\r\n\r\n        canvas.width = canvasWidth;\r\n        canvas.height = canvasHeight;\r\n\r\n        if (data.backgroundColor) {\r\n            ctx.fillStyle = data.backgroundColor;\r\n            ctx.fillRect(0, 0, canvasWidth, canvasHeight);\r\n        }\r\n\r\n        // By default assume we're going to draw the entire\r\n        // source image onto the destination canvas.\r\n        var sx = left,\r\n            sy = top,\r\n            sWidth = width,\r\n            sHeight = height,\r\n            dx = 0,\r\n            dy = 0,\r\n            dWidth = canvasWidth,\r\n            dHeight = canvasHeight;\r\n\r\n        //\r\n        // Do not go outside of the original image's bounds along the x-axis.\r\n        // Handle translations when projecting onto the destination canvas.\r\n        //\r\n\r\n        // The smallest possible source x-position is 0.\r\n        if (left < 0) {\r\n            sx = 0;\r\n            dx = (Math.abs(left) / width) * canvasWidth;\r\n        }\r\n\r\n        // The largest possible source width is the original image's width.\r\n        if (sWidth + sx > self._originalImageWidth) {\r\n            sWidth = self._originalImageWidth - sx;\r\n            dWidth =  (sWidth / width) * canvasWidth;\r\n        }\r\n\r\n        //\r\n        // Do not go outside of the original image's bounds along the y-axis.\r\n        //\r\n\r\n        // The smallest possible source y-position is 0.\r\n        if (top < 0) {\r\n            sy = 0;\r\n            dy = (Math.abs(top) / height) * canvasHeight;\r\n        }\r\n\r\n        // The largest possible source height is the original image's height.\r\n        if (sHeight + sy > self._originalImageHeight) {\r\n            sHeight = self._originalImageHeight - sy;\r\n            dHeight = (sHeight / height) * canvasHeight;\r\n        }\r\n\r\n        // console.table({ left, right, top, bottom, canvasWidth, canvasHeight, width, height, startX, startY, circle, sx, sy, dx, dy, sWidth, sHeight, dWidth, dHeight });\r\n\r\n        ctx.drawImage(this.elements.preview, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\r\n        if (circle) {\r\n            ctx.fillStyle = '#fff';\r\n            ctx.globalCompositeOperation = 'destination-in';\r\n            ctx.beginPath();\r\n            ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2, true);\r\n            ctx.closePath();\r\n            ctx.fill();\r\n        }\r\n        return canvas;\r\n    }\r\n\r\n    function _getHtmlResult(data) {\r\n        var points = data.points,\r\n            div = document.createElement('div'),\r\n            img = document.createElement('img'),\r\n            width = points[2] - points[0],\r\n            height = points[3] - points[1];\r\n\r\n        addClass(div, 'croppie-result');\r\n        div.appendChild(img);\r\n        css(img, {\r\n            left: (-1 * points[0]) + 'px',\r\n            top: (-1 * points[1]) + 'px'\r\n        });\r\n        img.src = data.url;\r\n        css(div, {\r\n            width: width + 'px',\r\n            height: height + 'px'\r\n        });\r\n\r\n        return div;\r\n    }\r\n\r\n    function _getBase64Result(data) {\r\n        return _getCanvas.call(this, data).toDataURL(data.format, data.quality);\r\n    }\r\n\r\n    function _getBlobResult(data) {\r\n        var self = this;\r\n        return new Promise(function (resolve) {\r\n            _getCanvas.call(self, data).toBlob(function (blob) {\r\n                resolve(blob);\r\n            }, data.format, data.quality);\r\n        });\r\n    }\r\n\r\n    function _replaceImage(img) {\r\n        if (this.elements.img.parentNode) {\r\n            Array.prototype.forEach.call(this.elements.img.classList, function(c) { img.classList.add(c); });\r\n            this.elements.img.parentNode.replaceChild(img, this.elements.img);\r\n            this.elements.preview = img; // if the img is attached to the DOM, they're not using the canvas\r\n        }\r\n        this.elements.img = img;\r\n    }\r\n\r\n    function _bind(options, cb) {\r\n        var self = this,\r\n            url,\r\n            points = [],\r\n            zoom = null,\r\n            hasExif = _hasExif.call(self);\r\n\r\n        if (typeof (options) === 'string') {\r\n            url = options;\r\n            options = {};\r\n        }\r\n        else if (Array.isArray(options)) {\r\n            points = options.slice();\r\n        }\r\n        else if (typeof (options) === 'undefined' && self.data.url) { //refreshing\r\n            _updatePropertiesFromImage.call(self);\r\n            _triggerUpdate.call(self);\r\n            return null;\r\n        }\r\n        else {\r\n            url = options.url;\r\n            points = options.points || [];\r\n            zoom = typeof(options.zoom) === 'undefined' ? null : options.zoom;\r\n        }\r\n\r\n        self.data.bound = false;\r\n        self.data.url = url || self.data.url;\r\n        self.data.boundZoom = zoom;\r\n\r\n        return loadImage(url, hasExif).then(function (img) {\r\n            _replaceImage.call(self, img);\r\n            if (!points.length) {\r\n                var natDim = naturalImageDimensions(img);\r\n                var rect = self.elements.viewport.getBoundingClientRect();\r\n                var aspectRatio = rect.width / rect.height;\r\n                var imgAspectRatio = natDim.width / natDim.height;\r\n                var width, height;\r\n\r\n                if (imgAspectRatio > aspectRatio) {\r\n                    height = natDim.height;\r\n                    width = height * aspectRatio;\r\n                }\r\n                else {\r\n                    width = natDim.width;\r\n                    height = natDim.height / aspectRatio;\r\n                }\r\n\r\n                var x0 = (natDim.width - width) / 2;\r\n                var y0 = (natDim.height - height) / 2;\r\n                var x1 = x0 + width;\r\n                var y1 = y0 + height;\r\n                self.data.points = [x0, y0, x1, y1];\r\n            }\r\n            else if (self.options.relative) {\r\n                points = [\r\n                    points[0] * img.naturalWidth / 100,\r\n                    points[1] * img.naturalHeight / 100,\r\n                    points[2] * img.naturalWidth / 100,\r\n                    points[3] * img.naturalHeight / 100\r\n                ];\r\n            }\r\n\r\n            self.data.orientation = options.orientation || 1;\r\n            self.data.points = points.map(function (p) {\r\n                return parseFloat(p);\r\n            });\r\n            if (self.options.useCanvas) {\r\n                _transferImageToCanvas.call(self, self.data.orientation);\r\n            }\r\n            _updatePropertiesFromImage.call(self);\r\n            _triggerUpdate.call(self);\r\n            cb && cb();\r\n        });\r\n    }\r\n\r\n    function fix(v, decimalPoints) {\r\n        return parseFloat(v).toFixed(decimalPoints || 0);\r\n    }\r\n\r\n    function _get() {\r\n        var self = this,\r\n            imgData = self.elements.preview.getBoundingClientRect(),\r\n            vpData = self.elements.viewport.getBoundingClientRect(),\r\n            x1 = vpData.left - imgData.left,\r\n            y1 = vpData.top - imgData.top,\r\n            widthDiff = (vpData.width - self.elements.viewport.offsetWidth) / 2, //border\r\n            heightDiff = (vpData.height - self.elements.viewport.offsetHeight) / 2,\r\n            x2 = x1 + self.elements.viewport.offsetWidth + widthDiff,\r\n            y2 = y1 + self.elements.viewport.offsetHeight + heightDiff,\r\n            scale = self._currentZoom;\r\n\r\n        if (scale === Infinity || isNaN(scale)) {\r\n            scale = 1;\r\n        }\r\n\r\n        var max = self.options.enforceBoundary ? 0 : Number.NEGATIVE_INFINITY;\r\n        x1 = Math.max(max, x1 / scale);\r\n        y1 = Math.max(max, y1 / scale);\r\n        x2 = Math.max(max, x2 / scale);\r\n        y2 = Math.max(max, y2 / scale);\r\n\r\n        return {\r\n            points: [fix(x1), fix(y1), fix(x2), fix(y2)],\r\n            zoom: scale,\r\n            orientation: self.data.orientation\r\n        };\r\n    }\r\n\r\n    var RESULT_DEFAULTS = {\r\n            type: 'canvas',\r\n            format: 'png',\r\n            quality: 1\r\n        },\r\n        RESULT_FORMATS = ['jpeg', 'webp', 'png'];\r\n\r\n    function _result(options) {\r\n        var self = this,\r\n            data = _get.call(self),\r\n            opts = deepExtend(clone(RESULT_DEFAULTS), clone(options)),\r\n            resultType = (typeof (options) === 'string' ? options : (opts.type || 'base64')),\r\n            size = opts.size || 'viewport',\r\n            format = opts.format,\r\n            quality = opts.quality,\r\n            backgroundColor = opts.backgroundColor,\r\n            circle = typeof opts.circle === 'boolean' ? opts.circle : (self.options.viewport.type === 'circle'),\r\n            vpRect = self.elements.viewport.getBoundingClientRect(),\r\n            ratio = vpRect.width / vpRect.height,\r\n            prom;\r\n\r\n        if (size === 'viewport') {\r\n            data.outputWidth = vpRect.width;\r\n            data.outputHeight = vpRect.height;\r\n        } else if (typeof size === 'object') {\r\n            if (size.width && size.height) {\r\n                data.outputWidth = size.width;\r\n                data.outputHeight = size.height;\r\n            } else if (size.width) {\r\n                data.outputWidth = size.width;\r\n                data.outputHeight = size.width / ratio;\r\n            } else if (size.height) {\r\n                data.outputWidth = size.height * ratio;\r\n                data.outputHeight = size.height;\r\n            }\r\n        }\r\n\r\n        if (RESULT_FORMATS.indexOf(format) > -1) {\r\n            data.format = 'image/' + format;\r\n            data.quality = quality;\r\n        }\r\n\r\n        data.circle = circle;\r\n        data.url = self.data.url;\r\n        data.backgroundColor = backgroundColor;\r\n\r\n        prom = new Promise(function (resolve) {\r\n            switch(resultType.toLowerCase())\r\n            {\r\n                case 'rawcanvas':\r\n                    resolve(_getCanvas.call(self, data));\r\n                    break;\r\n                case 'canvas':\r\n                case 'base64':\r\n                    resolve(_getBase64Result.call(self, data));\r\n                    break;\r\n                case 'blob':\r\n                    _getBlobResult.call(self, data).then(resolve);\r\n                    break;\r\n                default:\r\n                    resolve(_getHtmlResult.call(self, data));\r\n                    break;\r\n            }\r\n        });\r\n        return prom;\r\n    }\r\n\r\n    function _refresh() {\r\n        _updatePropertiesFromImage.call(this);\r\n    }\r\n\r\n    function _rotate(deg) {\r\n        if (!this.options.useCanvas || !this.options.enableOrientation) {\r\n            throw 'Croppie: Cannot rotate without enableOrientation && EXIF.js included';\r\n        }\r\n\r\n        var self = this,\r\n            canvas = self.elements.canvas;\r\n\r\n        self.data.orientation = getExifOffset(self.data.orientation, deg);\r\n        drawCanvas(canvas, self.elements.img, self.data.orientation);\r\n        _updateCenterPoint.call(self, true);\r\n        _updateZoomLimits.call(self);\r\n\r\n        // Reverses image dimensions if the degrees of rotation is not divisible by 180.\r\n        if ((Math.abs(deg) / 90) % 2 === 1) {\r\n            var oldHeight = self._originalImageHeight;\r\n            var oldWidth = self._originalImageWidth;\r\n            self._originalImageWidth = oldHeight;\r\n            self._originalImageHeight = oldWidth;\r\n        }\r\n    }\r\n\r\n    function _destroy() {\r\n        var self = this;\r\n        self.element.removeChild(self.elements.boundary);\r\n        removeClass(self.element, 'croppie-container');\r\n        if (self.options.enableZoom) {\r\n            self.element.removeChild(self.elements.zoomerWrap);\r\n        }\r\n        delete self.elements;\r\n    }\r\n\r\n    if (typeof window !== 'undefined' && window.jQuery) {\r\n        var $ = window.jQuery;\r\n        $.fn.croppie = function (opts) {\r\n            var ot = typeof opts;\r\n\r\n            if (ot === 'string') {\r\n                var args = Array.prototype.slice.call(arguments, 1);\r\n                var singleInst = $(this).data('croppie');\r\n\r\n                if (opts === 'get') {\r\n                    return singleInst.get();\r\n                }\r\n                else if (opts === 'result') {\r\n                    return singleInst.result.apply(singleInst, args);\r\n                }\r\n                else if (opts === 'bind') {\r\n                    return singleInst.bind.apply(singleInst, args);\r\n                }\r\n\r\n                return this.each(function () {\r\n                    var i = $(this).data('croppie');\r\n                    if (!i) return;\r\n\r\n                    var method = i[opts];\r\n                    if ($.isFunction(method)) {\r\n                        method.apply(i, args);\r\n                        if (opts === 'destroy') {\r\n                            $(this).removeData('croppie');\r\n                        }\r\n                    }\r\n                    else {\r\n                        throw 'Croppie ' + opts + ' method not found';\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                return this.each(function () {\r\n                    var i = new Croppie(this, opts);\r\n                    i.$ = $;\r\n                    $(this).data('croppie', i);\r\n                });\r\n            }\r\n        };\r\n    }\r\n\r\n    function Croppie(element, opts) {\r\n        if (element.className.indexOf('croppie-container') > -1) {\r\n            throw new Error(\"Croppie: Can't initialize croppie more than once\");\r\n        }\r\n        this.element = element;\r\n        this.options = deepExtend(clone(Croppie.defaults), opts);\r\n\r\n        if (this.element.tagName.toLowerCase() === 'img') {\r\n            var origImage = this.element;\r\n            addClass(origImage, 'cr-original-image');\r\n            setAttributes(origImage, {'aria-hidden' : 'true', 'alt' : '' });\r\n            var replacementDiv = document.createElement('div');\r\n            this.element.parentNode.appendChild(replacementDiv);\r\n            replacementDiv.appendChild(origImage);\r\n            this.element = replacementDiv;\r\n            this.options.url = this.options.url || origImage.src;\r\n        }\r\n\r\n        _create.call(this);\r\n        if (this.options.url) {\r\n            var bindOpts = {\r\n                url: this.options.url,\r\n                points: this.options.points\r\n            };\r\n            delete this.options['url'];\r\n            delete this.options['points'];\r\n            _bind.call(this, bindOpts);\r\n        }\r\n    }\r\n\r\n    Croppie.defaults = {\r\n        viewport: {\r\n            width: 100,\r\n            height: 100,\r\n            type: 'square'\r\n        },\r\n        boundary: { },\r\n        orientationControls: {\r\n            enabled: true,\r\n            leftClass: '',\r\n            rightClass: ''\r\n        },\r\n        resizeControls: {\r\n            width: true,\r\n            height: true\r\n        },\r\n        customClass: '',\r\n        showZoomer: true,\r\n        enableZoom: true,\r\n        enableResize: false,\r\n        mouseWheelZoom: true,\r\n        enableExif: false,\r\n        enforceBoundary: true,\r\n        enableOrientation: false,\r\n        enableKeyMovement: true,\r\n        update: function () { }\r\n    };\r\n\r\n    Croppie.globals = {\r\n        translate: 'translate3d'\r\n    };\r\n\r\n    deepExtend(Croppie.prototype, {\r\n        bind: function (options, cb) {\r\n            return _bind.call(this, options, cb);\r\n        },\r\n        get: function () {\r\n            var data = _get.call(this);\r\n            var points = data.points;\r\n            if (this.options.relative) {\r\n                points[0] /= this.elements.img.naturalWidth / 100;\r\n                points[1] /= this.elements.img.naturalHeight / 100;\r\n                points[2] /= this.elements.img.naturalWidth / 100;\r\n                points[3] /= this.elements.img.naturalHeight / 100;\r\n            }\r\n            return data;\r\n        },\r\n        result: function (type) {\r\n            return _result.call(this, type);\r\n        },\r\n        refresh: function () {\r\n            return _refresh.call(this);\r\n        },\r\n        setZoom: function (v) {\r\n            _setZoomerVal.call(this, v);\r\n            dispatchChange(this.elements.zoomer);\r\n        },\r\n        rotate: function (deg) {\r\n            _rotate.call(this, deg);\r\n        },\r\n        destroy: function () {\r\n            return _destroy.call(this);\r\n        }\r\n    });\r\n    return Croppie;\r\n}));\r\n", "import jquery from \"jquery\"\nwindow.jQuery = jquery\nwindow.$ = jquery", "require(\"@rails/ujs\").start()", "import 'tooltipster'", "/*\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 { Turbo } from \"@hotwired/turbo-rails\"\nTurbo.session.drive = false", "import 'jquery-bar-rating';", "/*! jQuery UI - v1.11.4 - 2022-10-14\n* http://jqueryui.com\n* Includes: core.js, widget.js, mouse.js, position.js, sortable.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n!function(t){\"function\"==typeof define&&define.amd?define([\"jquery\"],t):t(jQuery)}(function(N){var t,e,i,s;function o(t,e){var i,s,o=t.nodeName.toLowerCase();return\"area\"===o?(s=(i=t.parentNode).name,!(!t.href||!s||\"map\"!==i.nodeName.toLowerCase())&&(!!(s=N(\"img[usemap='#\"+s+\"']\")[0])&&n(s))):(/^(input|select|textarea|button|object)$/.test(o)?!t.disabled:\"a\"===o&&t.href||e)&&n(t)}function n(t){return N.expr.filters.visible(t)&&!N(t).parents().addBack().filter(function(){return\"hidden\"===N.css(this,\"visibility\")}).length}N.ui=N.ui||{},N.extend(N.ui,{version:\"1.11.4\",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),N.fn.extend({scrollParent:function(t){var e=this.css(\"position\"),i=\"absolute\"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=N(this);return(!i||\"static\"!==t.css(\"position\"))&&s.test(t.css(\"overflow\")+t.css(\"overflow-y\")+t.css(\"overflow-x\"))}).eq(0);return\"fixed\"!==e&&t.length?t:N(this[0].ownerDocument||document)},uniqueId:(t=0,function(){return this.each(function(){this.id||(this.id=\"ui-id-\"+ ++t)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\\d+$/.test(this.id)&&N(this).removeAttr(\"id\")})}}),N.extend(N.expr[\":\"],{data:N.expr.createPseudo?N.expr.createPseudo(function(e){return function(t){return!!N.data(t,e)}}):function(t,e,i){return!!N.data(t,i[3])},focusable:function(t){return o(t,!isNaN(N.attr(t,\"tabindex\")))},tabbable:function(t){var e=N.attr(t,\"tabindex\"),i=isNaN(e);return(i||0<=e)&&o(t,!i)}}),N(\"<a>\").outerWidth(1).jquery||N.each([\"Width\",\"Height\"],function(t,i){var o=\"Width\"===i?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],s=i.toLowerCase(),n={innerWidth:N.fn.innerWidth,innerHeight:N.fn.innerHeight,outerWidth:N.fn.outerWidth,outerHeight:N.fn.outerHeight};function r(t,e,i,s){return N.each(o,function(){e-=parseFloat(N.css(t,\"padding\"+this))||0,i&&(e-=parseFloat(N.css(t,\"border\"+this+\"Width\"))||0),s&&(e-=parseFloat(N.css(t,\"margin\"+this))||0)}),e}N.fn[\"inner\"+i]=function(t){return void 0===t?n[\"inner\"+i].call(this):this.each(function(){N(this).css(s,r(this,t)+\"px\")})},N.fn[\"outer\"+i]=function(t,e){return\"number\"!=typeof t?n[\"outer\"+i].call(this,t):this.each(function(){N(this).css(s,r(this,t,!0,e)+\"px\")})}}),N.fn.addBack||(N.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),N(\"<a>\").data(\"a-b\",\"a\").removeData(\"a-b\").data(\"a-b\")&&(N.fn.removeData=(e=N.fn.removeData,function(t){return arguments.length?e.call(this,N.camelCase(t)):e.call(this)})),N.ui.ie=!!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase()),N.fn.extend({focus:(s=N.fn.focus,function(e,i){return\"number\"==typeof e?this.each(function(){var t=this;setTimeout(function(){N(t).focus(),i&&i.call(t)},e)}):s.apply(this,arguments)}),disableSelection:(i=\"onselectstart\"in document.createElement(\"div\")?\"selectstart\":\"mousedown\",function(){return this.bind(i+\".ui-disableSelection\",function(t){t.preventDefault()})}),enableSelection:function(){return this.unbind(\".ui-disableSelection\")},zIndex:function(t){if(void 0!==t)return this.css(\"zIndex\",t);if(this.length)for(var e,i,s=N(this[0]);s.length&&s[0]!==document;){if((\"absolute\"===(e=s.css(\"position\"))||\"relative\"===e||\"fixed\"===e)&&(i=parseInt(s.css(\"zIndex\"),10),!isNaN(i)&&0!==i))return i;s=s.parent()}return 0}}),N.ui.plugin={add:function(t,e,i){var s,o=N.ui[t].prototype;for(s in i)o.plugins[s]=o.plugins[s]||[],o.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var o,n=t.plugins[e];if(n&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(o=0;o<n.length;o++)t.options[n[o][0]]&&n[o][1].apply(t.element,i)}};var r,h=0,a=Array.prototype.slice;N.cleanData=(r=N.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)try{(e=N._data(i,\"events\"))&&e.remove&&N(i).triggerHandler(\"remove\")}catch(t){}r(t)}),N.widget=function(t,i,e){var s,o,n,r,h={},a=t.split(\".\")[0];return t=t.split(\".\")[1],s=a+\"-\"+t,e||(e=i,i=N.Widget),N.expr[\":\"][s.toLowerCase()]=function(t){return!!N.data(t,s)},N[a]=N[a]||{},o=N[a][t],n=N[a][t]=function(t,e){if(!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},N.extend(n,o,{version:e.version,_proto:N.extend({},e),_childConstructors:[]}),(r=new i).options=N.widget.extend({},r.options),N.each(e,function(e,s){function o(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}N.isFunction(s)?h[e]=function(){var t,e=this._super,i=this._superApply;return this._super=o,this._superApply=n,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:h[e]=s}),n.prototype=N.widget.extend(r,{widgetEventPrefix:o&&r.widgetEventPrefix||t},h,{constructor:n,namespace:a,widgetName:t,widgetFullName:s}),o?(N.each(o._childConstructors,function(t,e){var i=e.prototype;N.widget(i.namespace+\".\"+i.widgetName,n,e._proto)}),delete o._childConstructors):i._childConstructors.push(n),N.widget.bridge(t,n),n},N.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),o=0,n=s.length;o<n;o++)for(e in s[o])i=s[o][e],s[o].hasOwnProperty(e)&&void 0!==i&&(N.isPlainObject(i)?t[e]=N.isPlainObject(t[e])?N.widget.extend({},t[e],i):N.widget.extend({},i):t[e]=i);return t},N.widget.bridge=function(n,e){var r=e.prototype.widgetFullName||n;N.fn[n]=function(i){var t=\"string\"==typeof i,s=a.call(arguments,1),o=this;return t?this.each(function(){var t,e=N.data(this,r);return\"instance\"===i?(o=e,!1):e?N.isFunction(e[i])&&\"_\"!==i.charAt(0)?(t=e[i].apply(e,s))!==e&&void 0!==t?(o=t&&t.jquery?o.pushStack(t.get()):t,!1):void 0:N.error(\"no such method '\"+i+\"' for \"+n+\" widget instance\"):N.error(\"cannot call methods on \"+n+\" prior to initialization; attempted to call method '\"+i+\"'\")}):(s.length&&(i=N.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=N.data(this,r);t?(t.option(i||{}),t._init&&t._init()):N.data(this,r,new e(i,this))})),o}},N.Widget=function(){},N.Widget._childConstructors=[],N.Widget.prototype={widgetName:\"widget\",widgetEventPrefix:\"\",defaultElement:\"<div>\",options:{disabled:!1,create:null},_createWidget:function(t,e){e=N(e||this.defaultElement||this)[0],this.element=N(e),this.uuid=h++,this.eventNamespace=\".\"+this.widgetName+this.uuid,this.bindings=N(),this.hoverable=N(),this.focusable=N(),e!==this&&(N.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=N(e.style?e.ownerDocument:e.document||e),this.window=N(this.document[0].defaultView||this.document[0].parentWindow)),this.options=N.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger(\"create\",null,this._getCreateEventData()),this._init()},_getCreateOptions:N.noop,_getCreateEventData:N.noop,_create:N.noop,_init:N.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(N.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr(\"aria-disabled\").removeClass(this.widgetFullName+\"-disabled ui-state-disabled\"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\")},_destroy:N.noop,widget:function(){return this.element},option:function(t,e){var i,s,o,n=t;if(0===arguments.length)return N.widget.extend({},this.options);if(\"string\"==typeof t)if(n={},t=(i=t.split(\".\")).shift(),i.length){for(s=n[t]=N.widget.extend({},this.options[t]),o=0;o<i.length-1;o++)s[i[o]]=s[i[o]]||{},s=s[i[o]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];n[t]=e}return this._setOptions(n),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,\"disabled\"===t&&(this.widget().toggleClass(this.widgetFullName+\"-disabled\",!!e),e&&(this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(o,n,t){var r,h=this;\"boolean\"!=typeof o&&(t=n,n=o,o=!1),t?(n=r=N(n),this.bindings=this.bindings.add(n)):(t=n,n=this.element,r=this.widget()),N.each(t,function(t,e){function i(){if(o||!0!==h.options.disabled&&!N(this).hasClass(\"ui-state-disabled\"))return(\"string\"==typeof e?h[e]:e).apply(h,arguments)}\"string\"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||N.guid++);var s=t.match(/^([\\w:-]*)\\s*(.*)$/),t=s[1]+h.eventNamespace,s=s[2];s?r.delegate(s,t,i):n.bind(t,i)})},_off:function(t,e){e=(e||\"\").split(\" \").join(this.eventNamespace+\" \")+this.eventNamespace,t.unbind(e).undelegate(e),this.bindings=N(this.bindings.not(t).get()),this.focusable=N(this.focusable.not(t).get()),this.hoverable=N(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return(\"string\"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){N(t.currentTarget).addClass(\"ui-state-hover\")},mouseleave:function(t){N(t.currentTarget).removeClass(\"ui-state-hover\")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){N(t.currentTarget).addClass(\"ui-state-focus\")},focusout:function(t){N(t.currentTarget).removeClass(\"ui-state-focus\")}})},_trigger:function(t,e,i){var s,o,n=this.options[t];if(i=i||{},(e=N.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],o=e.originalEvent)for(s in o)s in e||(e[s]=o[s]);return this.element.trigger(e,i),!(N.isFunction(n)&&!1===n.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},N.each({show:\"fadeIn\",hide:\"fadeOut\"},function(n,r){N.Widget.prototype[\"_\"+n]=function(e,t,i){var s=(t=\"string\"==typeof t?{effect:t}:t)?!0!==t&&\"number\"!=typeof t&&t.effect||r:n,o=!N.isEmptyObject(t=\"number\"==typeof(t=t||{})?{duration:t}:t);t.complete=i,t.delay&&e.delay(t.delay),o&&N.effects&&N.effects.effect[s]?e[n](t):s!==n&&e[s]?e[s](t.duration,t.easing,i):e.queue(function(t){N(this)[n](),i&&i.call(e[0]),t()})}});N.widget;var l=!1;N(document).mouseup(function(){l=!1});N.widget(\"ui.mouse\",{version:\"1.11.4\",options:{cancel:\"input,textarea,button,select,option\",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind(\"mousedown.\"+this.widgetName,function(t){return e._mouseDown(t)}).bind(\"click.\"+this.widgetName,function(t){if(!0===N.data(t.target,e.widgetName+\".preventClickEvent\"))return N.removeData(t.target,e.widgetName+\".preventClickEvent\"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind(\".\"+this.widgetName),this._mouseMoveDelegate&&this.document.unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!l){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!(\"string\"!=typeof this.options.cancel||!t.target.nodeName)&&N(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===N.data(t.target,this.widgetName+\".preventClickEvent\")&&N.removeData(t.target,this.widgetName+\".preventClickEvent\"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.bind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).bind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),t.preventDefault(),l=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(N.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&N.data(t.target,this.widgetName+\".preventClickEvent\",!0),this._mouseStop(t)),l=!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}});!function(){N.ui=N.ui||{};var s,P,C=Math.max,I=Math.abs,x=Math.round,o=/left|center|right/,n=/top|center|bottom/,r=/[\\+\\-]\\d+(\\.[\\d]+)?%?/,h=/^\\w+/,a=/%$/,i=N.fn.position;function W(t,e,i){return[parseFloat(t[0])*(a.test(t[0])?e/100:1),parseFloat(t[1])*(a.test(t[1])?i/100:1)]}function H(t,e){return parseInt(N.css(t,e),10)||0}N.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=N(\"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\"),i=e.children()[0];return N(\"body\").append(e),t=i.offsetWidth,e.css(\"overflow\",\"scroll\"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?\"\":t.element.css(\"overflow-x\"),i=t.isWindow||t.isDocument?\"\":t.element.css(\"overflow-y\"),e=\"scroll\"===e||\"auto\"===e&&t.width<t.element[0].scrollWidth;return{width:\"scroll\"===i||\"auto\"===i&&t.height<t.element[0].scrollHeight?N.position.scrollbarWidth():0,height:e?N.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=N(t||window),i=N.isWindow(e[0]),t=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:t,offset:e.offset()||{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:i||t?e.width():e.outerWidth(),height:i||t?e.height():e.outerHeight()}}},N.fn.position=function(u){if(!u||!u.of)return i.apply(this,arguments);u=N.extend({},u);var f,p,d,m,g,t,v=N(u.of),_=N.position.getWithinInfo(u.within),w=N.position.getScrollInfo(_),b=(u.collision||\"flip\").split(\" \"),y={},e=9===(t=(e=v)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:N.isWindow(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return v[0].preventDefault&&(u.at=\"left top\"),p=e.width,d=e.height,g=N.extend({},m=e.offset),N.each([\"my\",\"at\"],function(){var t,e,i=(u[this]||\"\").split(\" \");(i=1===i.length?o.test(i[0])?i.concat([\"center\"]):n.test(i[0])?[\"center\"].concat(i):[\"center\",\"center\"]:i)[0]=o.test(i[0])?i[0]:\"center\",i[1]=n.test(i[1])?i[1]:\"center\",t=r.exec(i[0]),e=r.exec(i[1]),y[this]=[t?t[0]:0,e?e[0]:0],u[this]=[h.exec(i[0])[0],h.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),\"right\"===u.at[0]?g.left+=p:\"center\"===u.at[0]&&(g.left+=p/2),\"bottom\"===u.at[1]?g.top+=d:\"center\"===u.at[1]&&(g.top+=d/2),f=W(y.at,p,d),g.left+=f[0],g.top+=f[1],this.each(function(){var i,t,r=N(this),h=r.outerWidth(),a=r.outerHeight(),e=H(this,\"marginLeft\"),s=H(this,\"marginTop\"),o=h+e+H(this,\"marginRight\")+w.width,n=a+s+H(this,\"marginBottom\")+w.height,l=N.extend({},g),c=W(y.my,r.outerWidth(),r.outerHeight());\"right\"===u.my[0]?l.left-=h:\"center\"===u.my[0]&&(l.left-=h/2),\"bottom\"===u.my[1]?l.top-=a:\"center\"===u.my[1]&&(l.top-=a/2),l.left+=c[0],l.top+=c[1],P||(l.left=x(l.left),l.top=x(l.top)),i={marginLeft:e,marginTop:s},N.each([\"left\",\"top\"],function(t,e){N.ui.position[b[t]]&&N.ui.position[b[t]][e](l,{targetWidth:p,targetHeight:d,elemWidth:h,elemHeight:a,collisionPosition:i,collisionWidth:o,collisionHeight:n,offset:[f[0]+c[0],f[1]+c[1]],my:u.my,at:u.at,within:_,elem:r})}),u.using&&(t=function(t){var e=m.left-l.left,i=e+p-h,s=m.top-l.top,o=s+d-a,n={target:{element:v,left:m.left,top:m.top,width:p,height:d},element:{element:r,left:l.left,top:l.top,width:h,height:a},horizontal:i<0?\"left\":0<e?\"right\":\"center\",vertical:o<0?\"top\":0<s?\"bottom\":\"middle\"};p<h&&I(e+i)<p&&(n.horizontal=\"center\"),d<a&&I(s+o)<d&&(n.vertical=\"middle\"),C(I(e),I(i))>C(I(s),I(o))?n.important=\"horizontal\":n.important=\"vertical\",u.using.call(this,t,n)}),r.offset(N.extend(l,{using:t}))})},N.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,o=i.width,n=t.left-e.collisionPosition.marginLeft,r=s-n,h=n+e.collisionWidth-o-s;e.collisionWidth>o?0<r&&h<=0?(i=t.left+r+e.collisionWidth-o-s,t.left+=r-i):t.left=!(0<h&&r<=0)&&h<r?s+o-e.collisionWidth:s:0<r?t.left+=r:0<h?t.left-=h:t.left=C(t.left-n,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,o=e.within.height,n=t.top-e.collisionPosition.marginTop,r=s-n,h=n+e.collisionHeight-o-s;e.collisionHeight>o?0<r&&h<=0?(i=t.top+r+e.collisionHeight-o-s,t.top+=r-i):t.top=!(0<h&&r<=0)&&h<r?s+o-e.collisionHeight:s:0<r?t.top+=r:0<h?t.top-=h:t.top=C(t.top-n,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,o=i.width,n=i.isWindow?i.scrollLeft:i.offset.left,r=t.left-e.collisionPosition.marginLeft,h=r-n,a=r+e.collisionWidth-o-n,l=\"left\"===e.my[0]?-e.elemWidth:\"right\"===e.my[0]?e.elemWidth:0,i=\"left\"===e.at[0]?e.targetWidth:\"right\"===e.at[0]?-e.targetWidth:0,r=-2*e.offset[0];h<0?((s=t.left+l+i+r+e.collisionWidth-o-s)<0||s<I(h))&&(t.left+=l+i+r):0<a&&(0<(n=t.left-e.collisionPosition.marginLeft+l+i+r-n)||I(n)<a)&&(t.left+=l+i+r)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,o=i.height,n=i.isWindow?i.scrollTop:i.offset.top,r=t.top-e.collisionPosition.marginTop,h=r-n,a=r+e.collisionHeight-o-n,l=\"top\"===e.my[1]?-e.elemHeight:\"bottom\"===e.my[1]?e.elemHeight:0,i=\"top\"===e.at[1]?e.targetHeight:\"bottom\"===e.at[1]?-e.targetHeight:0,r=-2*e.offset[1];h<0?((s=t.top+l+i+r+e.collisionHeight-o-s)<0||s<I(h))&&(t.top+=l+i+r):0<a&&(0<(n=t.top-e.collisionPosition.marginTop+l+i+r-n)||I(n)<a)&&(t.top+=l+i+r)}},flipfit:{left:function(){N.ui.position.flip.left.apply(this,arguments),N.ui.position.fit.left.apply(this,arguments)},top:function(){N.ui.position.flip.top.apply(this,arguments),N.ui.position.fit.top.apply(this,arguments)}}},function(){var t,e=document.getElementsByTagName(\"body\")[0],i=document.createElement(\"div\"),s=document.createElement(e?\"div\":\"body\"),o={visibility:\"hidden\",width:0,height:0,border:0,margin:0,background:\"none\"};for(t in e&&N.extend(o,{position:\"absolute\",left:\"-1000px\",top:\"-1000px\"}),o)s.style[t]=o[t];s.appendChild(i),(e=e||document.documentElement).insertBefore(s,e.firstChild),i.style.cssText=\"position: absolute; left: 10.7432222px;\",i=N(i).offset().left,P=10<i&&i<11,s.innerHTML=\"\",e.removeChild(s)}()}();N.ui.position,N.widget(\"ui.sortable\",N.ui.mouse,{version:\"1.11.4\",widgetEventPrefix:\"sort\",ready:!1,options:{appendTo:\"parent\",axis:!1,connectWith:!1,containment:!1,cursor:\"auto\",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:\"original\",items:\"> *\",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:\"default\",tolerance:\"intersect\",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css(\"float\"))||/inline|table-cell/.test(t.css(\"display\"))},_create:function(){this.containerCache={},this.element.addClass(\"ui-sortable\"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),\"handle\"===t&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(\".ui-sortable-handle\").removeClass(\"ui-sortable-handle\"),N.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass(\"ui-sortable-handle\")})},_destroy:function(){this.element.removeClass(\"ui-sortable ui-sortable-disabled\").find(\".ui-sortable-handle\").removeClass(\"ui-sortable-handle\"),this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+\"-item\");return this},_mouseCapture:function(t,e){var i=null,s=!1,o=this;return!this.reverting&&(!this.options.disabled&&\"static\"!==this.options.type&&(this._refreshItems(t),N(t.target).parents().each(function(){if(N.data(this,o.widgetName+\"-item\")===o)return i=N(this),!1}),!!(i=N.data(t.target,o.widgetName+\"-item\")===o?N(t.target):i)&&(!(this.options.handle&&!e&&(N(this.options.handle,i).find(\"*\").addBack().each(function(){this===t.target&&(s=!0)}),!s))&&(this.currentItem=i,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(t,e,i){var s,o,n=this.options;if((this.currentContainer=this).refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},N.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css(\"position\",\"absolute\"),this.cssPosition=this.helper.css(\"position\"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),n.containment&&this._setContainment(),n.cursor&&\"auto\"!==n.cursor&&(o=this.document.find(\"body\"),this.storedCursor=o.css(\"cursor\"),o.css(\"cursor\",n.cursor),this.storedStylesheet=N(\"<style>*{ cursor: \"+n.cursor+\" !important; }</style>\").appendTo(o)),n.opacity&&(this.helper.css(\"opacity\")&&(this._storedOpacity=this.helper.css(\"opacity\")),this.helper.css(\"opacity\",n.opacity)),n.zIndex&&(this.helper.css(\"zIndex\")&&(this._storedZIndex=this.helper.css(\"zIndex\")),this.helper.css(\"zIndex\",n.zIndex)),this.scrollParent[0]!==this.document[0]&&\"HTML\"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger(\"start\",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger(\"activate\",t,this._uiHash(this));return N.ui.ddmanager&&(N.ui.ddmanager.current=this),N.ui.ddmanager&&!n.dropBehaviour&&N.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass(\"ui-sortable-helper\"),this._mouseDrag(t),!0},_mouseDrag:function(t){var e,i,s,o,n=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo(\"absolute\"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&\"HTML\"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-this.document.scrollTop()<n.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-n.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<n.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+n.scrollSpeed)),t.pageX-this.document.scrollLeft()<n.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-n.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<n.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+n.scrollSpeed))),!1!==r&&N.ui.ddmanager&&!n.dropBehaviour&&N.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo(\"absolute\"),this.options.axis&&\"y\"===this.options.axis||(this.helper[0].style.left=this.position.left+\"px\"),this.options.axis&&\"x\"===this.options.axis||(this.helper[0].style.top=this.position.top+\"px\"),e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(o=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===o?\"next\":\"prev\"]()[0]===s||N.contains(this.placeholder[0],s)||\"semi-dynamic\"===this.options.type&&N.contains(this.element[0],s))){if(this.direction=1===o?\"down\":\"up\",\"pointer\"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger(\"change\",t,this._uiHash());break}return this._contactContainers(t),N.ui.ddmanager&&N.ui.ddmanager.drag(this,t),this._trigger(\"sort\",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,o,n;if(t)return N.ui.ddmanager&&!this.options.dropBehaviour&&N.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),n={},(o=this.options.axis)&&\"x\"!==o||(n.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&\"y\"!==o||(n.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,N(this.helper).animate(n,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),\"original\"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\"):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger(\"deactivate\",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger(\"out\",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),\"original\"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),N.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?N(this.domPosition.prev).after(this.currentItem):N(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},N(t).each(function(){var t=(N(e.item||this).attr(e.attribute||\"id\")||\"\").match(e.expression||/(.+)[\\-=_](.+)/);t&&i.push((e.key||t[1]+\"[]\")+\"=\"+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+\"=\"),i.join(\"&\")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(N(t.item||this).attr(t.attribute||\"id\")||\"\")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,o=s+this.helperProportions.height,n=t.left,r=n+t.width,h=t.top,a=h+t.height,l=this.offset.click.top,c=this.offset.click.left,l=\"x\"===this.options.axis||h<s+l&&s+l<a,c=\"y\"===this.options.axis||n<e+c&&e+c<r;return\"pointer\"===this.options.tolerance||this.options.forcePointerForContainers||\"pointer\"!==this.options.tolerance&&this.helperProportions[this.floating?\"width\":\"height\"]>t[this.floating?\"width\":\"height\"]?l&&c:n<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<r&&h<s+this.helperProportions.height/2&&o-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var e=\"x\"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),i=\"y\"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),t=e&&i,e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection();return!!t&&(this.floating?i&&\"right\"===i||\"down\"===e?2:1:e&&(\"down\"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),t=this._getDragHorizontalDirection();return this.floating&&t?\"right\"===t&&i||\"left\"===t&&!i:s&&(\"down\"===s&&e||\"up\"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?\"down\":\"up\")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?\"right\":\"left\")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,o,n=[],r=[],h=this._connectWith();if(h&&t)for(e=h.length-1;0<=e;e--)for(i=(s=N(h[e],this.document[0])).length-1;0<=i;i--)(o=N.data(s[i],this.widgetFullName))&&o!==this&&!o.options.disabled&&r.push([N.isFunction(o.options.items)?o.options.items.call(o.element):N(o.options.items,o.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"),o]);function a(){n.push(this)}for(r.push([N.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):N(this.options.items,this.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"),this]),e=r.length-1;0<=e;e--)r[e][0].each(a);return N(n)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(\":data(\"+this.widgetName+\"-item)\");this.items=N.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,o,n,r,h,a,l=this.items,c=[[N.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):N(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=N(u[e],this.document[0])).length-1;0<=i;i--)(o=N.data(s[i],this.widgetFullName))&&o!==this&&!o.options.disabled&&(c.push([N.isFunction(o.options.items)?o.options.items.call(o.element[0],t,{item:this.currentItem}):N(o.options.items,o.element),o]),this.containers.push(o));for(e=c.length-1;0<=e;e--)for(n=c[e][1],a=(r=c[e][i=0]).length;i<a;i++)(h=N(r[i])).data(this.widgetName+\"-item\",n),l.push({item:h,instance:n,width:0,height:0,left:0,top:0})},refreshPositions:function(t){var e,i,s,o;for(this.floating=!!this.items.length&&(\"x\"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),e=this.items.length-1;0<=e;e--)(i=this.items[e]).instance!==this.currentContainer&&this.currentContainer&&i.item[0]!==this.currentItem[0]||(s=this.options.toleranceElement?N(this.options.toleranceElement,i.item):i.item,t||(i.width=s.outerWidth(),i.height=s.outerHeight()),o=s.offset(),i.left=o.left,i.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)o=this.containers[e].element.offset(),this.containers[e].containerCache.left=o.left,this.containers[e].containerCache.top=o.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,o=(i=i||this).options;o.placeholder&&o.placeholder.constructor!==String||(s=o.placeholder,o.placeholder={element:function(){var t=i.currentItem[0].nodeName.toLowerCase(),e=N(\"<\"+t+\">\",i.document[0]).addClass(s||i.currentItem[0].className+\" ui-sortable-placeholder\").removeClass(\"ui-sortable-helper\");return\"tbody\"===t?i._createTrPlaceholder(i.currentItem.find(\"tr\").eq(0),N(\"<tr>\",i.document[0]).appendTo(e)):\"tr\"===t?i._createTrPlaceholder(i.currentItem,e):\"img\"===t&&e.attr(\"src\",i.currentItem.attr(\"src\")),s||e.css(\"visibility\",\"hidden\"),e},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css(\"paddingTop\")||0,10)-parseInt(i.currentItem.css(\"paddingBottom\")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css(\"paddingLeft\")||0,10)-parseInt(i.currentItem.css(\"paddingRight\")||0,10)))}}),i.placeholder=N(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){N(\"<td>&#160;</td>\",i.document[0]).attr(\"colspan\",N(this).attr(\"colspan\")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,o,n,r,h,a,l,c=null,u=null,f=this.containers.length-1;0<=f;f--)N.contains(this.currentItem[0],this.containers[f].element[0])||(this._intersectsWith(this.containers[f].containerCache)?c&&N.contains(this.containers[f].element[0],c.element[0])||(c=this.containers[f],u=f):this.containers[f].containerCache.over&&(this.containers[f]._trigger(\"out\",t,this._uiHash(this)),this.containers[f].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger(\"over\",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,o=(a=c.floating||this._isFloating(this.currentItem))?\"left\":\"top\",n=a?\"width\":\"height\",l=a?\"clientX\":\"clientY\",e=this.items.length-1;0<=e;e--)N.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(r=this.items[e].item.offset()[o],h=!1,t[l]-r>this.items[e][n]/2&&(h=!0),Math.abs(t[l]-r)<i&&(i=Math.abs(t[l]-r),s=this.items[e],this.direction=h?\"up\":\"down\"));(s||this.options.dropOnEmpty)&&(this.currentContainer!==this.containers[u]?(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger(\"change\",t,this._uiHash()),this.containers[u]._trigger(\"change\",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[u]._trigger(\"over\",t,this._uiHash(this)),this.containers[u].containerCache.over=1):this.currentContainer.containerCache.over||(this.containers[u]._trigger(\"over\",t,this._uiHash()),this.currentContainer.containerCache.over=1))}},_createHelper:function(t){var e=this.options,t=N.isFunction(e.helper)?N(e.helper.apply(this.element[0],[t,this.currentItem])):\"clone\"===e.helper?this.currentItem.clone():this.currentItem;return t.parents(\"body\").length||N(\"parent\"!==e.appendTo?e.appendTo:this.currentItem[0].parentNode)[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css(\"position\"),top:this.currentItem.css(\"top\"),left:this.currentItem.css(\"left\")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){\"string\"==typeof t&&(t=t.split(\" \")),\"left\"in(t=N.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),\"right\"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),\"top\"in t&&(this.offset.click.top=t.top+this.margins.top),\"bottom\"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return\"absolute\"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&N.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&\"html\"===this.offsetParent[0].tagName.toLowerCase()&&N.ui.ie?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css(\"borderTopWidth\"),10)||0),left:t.left+(parseInt(this.offsetParent.css(\"borderLeftWidth\"),10)||0)}},_getRelativeOffset:function(){if(\"relative\"!==this.cssPosition)return{top:0,left:0};var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css(\"top\"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css(\"left\"),10)||0)+this.scrollParent.scrollLeft()}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css(\"marginLeft\"),10)||0,top:parseInt(this.currentItem.css(\"marginTop\"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;\"parent\"===i.containment&&(i.containment=this.helper[0].parentNode),\"document\"!==i.containment&&\"window\"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,\"document\"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,(\"document\"===i.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=N(i.containment)[0],e=N(i.containment).offset(),i=\"hidden\"!==N(t).css(\"overflow\"),this.containment=[e.left+(parseInt(N(t).css(\"borderLeftWidth\"),10)||0)+(parseInt(N(t).css(\"paddingLeft\"),10)||0)-this.margins.left,e.top+(parseInt(N(t).css(\"borderTopWidth\"),10)||0)+(parseInt(N(t).css(\"paddingTop\"),10)||0)-this.margins.top,e.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(N(t).css(\"borderLeftWidth\"),10)||0)-(parseInt(N(t).css(\"paddingRight\"),10)||0)-this.helperProportions.width-this.margins.left,e.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(N(t).css(\"borderTopWidth\"),10)||0)-(parseInt(N(t).css(\"paddingBottom\"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var i=\"absolute\"===t?1:-1,s=\"absolute\"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&N.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,t=/(html|body)/i.test(s[0].tagName);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-(\"fixed\"===this.cssPosition?-this.scrollParent.scrollTop():t?0:s.scrollTop())*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-(\"fixed\"===this.cssPosition?-this.scrollParent.scrollLeft():t?0:s.scrollLeft())*i}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,o=\"absolute\"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&N.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,n=/(html|body)/i.test(o[0].tagName);return\"relative\"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(\"fixed\"===this.cssPosition?-this.scrollParent.scrollTop():n?0:o.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(\"fixed\"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:o.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],\"down\"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var o=this.counter;this._delay(function(){o===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)\"auto\"!==this._storedCSS[i]&&\"static\"!==this._storedCSS[i]||(this._storedCSS[i]=\"\");this.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\")}else this.currentItem.show();function o(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger(\"receive\",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(\".ui-sortable-helper\")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger(\"update\",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger(\"remove\",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger(\"receive\",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger(\"update\",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(o(\"deactivate\",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(o(\"out\",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find(\"body\").css(\"cursor\",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css(\"opacity\",this._storedOpacity),this._storedZIndex&&this.helper.css(\"zIndex\",\"auto\"===this._storedZIndex?\"\":this._storedZIndex),this.dragging=!1,e||this._trigger(\"beforeStop\",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger(\"stop\",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===N.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||N([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}})});", "/*\n * jQuery UI Nested Sortable\n * v 2.1a / 2016-02-04\n * https://github.com/ilikenwf/nestedSortable\n *\n * Depends on:\n *\t jquery.ui.sortable.js 1.10+\n *\n * Copyright (c) 2010-2016 Manuele J Sarfatti and contributors\n * Licensed under the MIT License\n * http://www.opensource.org/licenses/mit-license.php\n */\n(function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([\n\t\t\t\"jquery\",\n\t\t\t// \"jquery-ui/sortable\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( window.jQuery );\n\t}\n}(function($) {\n\t\"use strict\";\n\n\tfunction isOverAxis( x, reference, size ) {\n\t\treturn ( x > reference ) && ( x < ( reference + size ) );\n\t}\n\n\t$.widget(\"mjs.nestedSortable\", $.extend({}, $.ui.sortable.prototype, {\n\n\t\toptions: {\n\t\t\tdisableParentChange: false,\n\t\t\tdoNotClear: false,\n\t\t\texpandOnHover: 700,\n\t\t\tisAllowed: function() { return true; },\n\t\t\tisTree: false,\n\t\t\tlistType: \"ol\",\n\t\t\tmaxLevels: 0,\n\t\t\tprotectRoot: false,\n\t\t\trootID: null,\n\t\t\trtl: false,\n\t\t\tstartCollapsed: false,\n\t\t\ttabSize: 20,\n\n\t\t\tbranchClass: \"mjs-nestedSortable-branch\",\n\t\t\tcollapsedClass: \"mjs-nestedSortable-collapsed\",\n\t\t\tdisableNestingClass: \"mjs-nestedSortable-no-nesting\",\n\t\t\terrorClass: \"mjs-nestedSortable-error\",\n\t\t\texpandedClass: \"mjs-nestedSortable-expanded\",\n\t\t\thoveringClass: \"mjs-nestedSortable-hovering\",\n\t\t\tleafClass: \"mjs-nestedSortable-leaf\",\n\t\t\tdisabledClass: \"mjs-nestedSortable-disabled\"\n\t\t},\n\n\t\t_create: function() {\n\t\t\tvar self = this,\n\t\t\t\terr;\n\n\t\t\tthis.element.data(\"ui-sortable\", this.element.data(\"mjs-nestedSortable\"));\n\n\t\t\t// mjs - prevent browser from freezing if the HTML is not correct\n\t\t\tif (!this.element.is(this.options.listType)) {\n\t\t\t\terr = \"nestedSortable: \" +\n\t\t\t\t\t\"Please check that the listType option is set to your actual list type\";\n\n\t\t\t\tthrow new Error(err);\n\t\t\t}\n\n\t\t\t// if we have a tree with expanding/collapsing functionality,\n\t\t\t// force 'intersect' tolerance method\n\t\t\tif (this.options.isTree && this.options.expandOnHover) {\n\t\t\t\tthis.options.tolerance = \"intersect\";\n\t\t\t}\n\n\t\t\t$.ui.sortable.prototype._create.apply(this, arguments);\n\n\t\t\t// prepare the tree by applying the right classes\n\t\t\t// (the CSS is responsible for actual hide/show functionality)\n\t\t\tif (this.options.isTree) {\n\t\t\t\t$(this.items).each(function() {\n\t\t\t\t\tvar $li = this.item,\n\t\t\t\t\t\thasCollapsedClass = $li.hasClass(self.options.collapsedClass),\n\t\t\t\t\t\thasExpandedClass = $li.hasClass(self.options.expandedClass);\n\n\t\t\t\t\tif ($li.children(self.options.listType).length) {\n\t\t\t\t\t\t$li.addClass(self.options.branchClass);\n\t\t\t\t\t\t// expand/collapse class only if they have children\n\n\t\t\t\t\t\tif ( !hasCollapsedClass && !hasExpandedClass ) {\n\t\t\t\t\t\t\tif (self.options.startCollapsed) {\n\t\t\t\t\t\t\t\t$li.addClass(self.options.collapsedClass);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$li.addClass(self.options.expandedClass);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$li.addClass(self.options.leafClass);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t_destroy: function() {\n\t\t\tthis.element\n\t\t\t\t.removeData(\"mjs-nestedSortable\")\n\t\t\t\t.removeData(\"ui-sortable\");\n\t\t\treturn $.ui.sortable.prototype._destroy.apply(this, arguments);\n\t\t},\n\n\t\t_mouseDrag: function(event) {\n\t\t\tvar i,\n\t\t\t\titem,\n\t\t\t\titemElement,\n\t\t\t\tintersection,\n\t\t\t\tself = this,\n\t\t\t\to = this.options,\n\t\t\t\tscrolled = false,\n\t\t\t\t$document = $(document),\n\t\t\t\tpreviousTopOffset,\n\t\t\t\tparentItem,\n\t\t\t\tlevel,\n\t\t\t\tchildLevels,\n\t\t\t\titemAfter,\n\t\t\t\titemBefore,\n\t\t\t\tnewList,\n\t\t\t\tmethod,\n\t\t\t\ta,\n\t\t\t\tpreviousItem,\n\t\t\t\tnextItem,\n\t\t\t\thelperIsNotSibling;\n\n\t\t\t//Compute the helpers position\n\t\t\tthis.position = this._generatePosition(event);\n\t\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t\tif (!this.lastPositionAbs) {\n\t\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t\t}\n\n\t\t\t//Do scrolling\n\t\t\tif (this.options.scroll) {\n\t\t\t\tif (this.scrollParent[0] !== document && this.scrollParent[0].tagName !== \"HTML\") {\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tthis.overflowOffset.top +\n\t\t\t\t\t\t\tthis.scrollParent[0].offsetHeight\n\t\t\t\t\t\t) -\n\t\t\t\t\t\tevent.pageY <\n\t\t\t\t\t\to.scrollSensitivity\n\t\t\t\t\t) {\n\t\t\t\t\t\tscrolled = this.scrollParent.scrollTop() + o.scrollSpeed;\n\t\t\t\t\t\tthis.scrollParent.scrollTop(scrolled);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tevent.pageY -\n\t\t\t\t\t\tthis.overflowOffset.top <\n\t\t\t\t\t\to.scrollSensitivity\n\t\t\t\t\t) {\n\t\t\t\t\t\tscrolled = this.scrollParent.scrollTop() - o.scrollSpeed;\n\t\t\t\t\t\tthis.scrollParent.scrollTop(scrolled);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tthis.overflowOffset.left +\n\t\t\t\t\t\t\tthis.scrollParent[0].offsetWidth\n\t\t\t\t\t\t) -\n\t\t\t\t\t\tevent.pageX <\n\t\t\t\t\t\to.scrollSensitivity\n\t\t\t\t\t) {\n\t\t\t\t\t\tscrolled = this.scrollParent.scrollLeft() + o.scrollSpeed;\n\t\t\t\t\t\tthis.scrollParent.scrollLeft(scrolled);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tevent.pageX -\n\t\t\t\t\t\tthis.overflowOffset.left <\n\t\t\t\t\t\to.scrollSensitivity\n\t\t\t\t\t) {\n\t\t\t\t\t\tscrolled = this.scrollParent.scrollLeft() - o.scrollSpeed;\n\t\t\t\t\t\tthis.scrollParent.scrollLeft(scrolled);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tevent.pageY -\n\t\t\t\t\t\t$document.scrollTop() <\n\t\t\t\t\t\to.scrollSensitivity\n\t\t\t\t\t) {\n\t\t\t\t\t\tscrolled = $document.scrollTop() - o.scrollSpeed;\n\t\t\t\t\t\t$document.scrollTop(scrolled);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t$(window).height() -\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tevent.pageY -\n\t\t\t\t\t\t\t$document.scrollTop()\n\t\t\t\t\t\t) <\n\t\t\t\t\t\to.scrollSensitivity\n\t\t\t\t\t) {\n\t\t\t\t\t\tscrolled = $document.scrollTop() + o.scrollSpeed;\n\t\t\t\t\t\t$document.scrollTop(scrolled);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tevent.pageX -\n\t\t\t\t\t\t$document.scrollLeft() <\n\t\t\t\t\t\to.scrollSensitivity\n\t\t\t\t\t) {\n\t\t\t\t\t\tscrolled = $document.scrollLeft() - o.scrollSpeed;\n\t\t\t\t\t\t$document.scrollLeft(scrolled);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t$(window).width() -\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tevent.pageX -\n\t\t\t\t\t\t\t$document.scrollLeft()\n\t\t\t\t\t\t) <\n\t\t\t\t\t\to.scrollSensitivity\n\t\t\t\t\t) {\n\t\t\t\t\t\tscrolled = $document.scrollLeft() + o.scrollSpeed;\n\t\t\t\t\t\t$document.scrollLeft(scrolled);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Regenerate the absolute position used for position checks\n\t\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t\t// mjs - find the top offset before rearrangement,\n\t\t\tpreviousTopOffset = this.placeholder.offset().top;\n\n\t\t\t//Set the helper position\n\t\t\tif (!this.options.axis || this.options.axis !== \"y\") {\n\t\t\t\tthis.helper[0].style.left = this.position.left + \"px\";\n\t\t\t}\n\t\t\tif (!this.options.axis || this.options.axis !== \"x\") {\n\t\t\t\tthis.helper[0].style.top = (this.position.top) + \"px\";\n\t\t\t}\n\n\t\t\t// mjs - check and reset hovering state at each cycle\n\t\t\tthis.hovering = this.hovering ? this.hovering : null;\n\t\t\tthis.mouseentered = this.mouseentered ? this.mouseentered : false;\n\n\t\t\t// mjs - let's start caching some variables\n\t\t\t(function() {\n\t\t\t\tvar _parentItem = this.placeholder.parent().parent();\n\t\t\t\tif (_parentItem && _parentItem.closest(\".ui-sortable\").length) {\n\t\t\t\t\tparentItem = _parentItem;\n\t\t\t\t}\n\t\t\t}.call(this));\n\n\t\t\tlevel = this._getLevel(this.placeholder);\n\t\t\tchildLevels = this._getChildLevels(this.helper);\n\t\t\tnewList = document.createElement(o.listType);\n\n\t\t\t//Rearrange\n\t\t\tfor (i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\t\titem = this.items[i];\n\t\t\t\titemElement = item.item[0];\n\t\t\t\tintersection = this._intersectsWithPointer(item);\n\t\t\t\tif (!intersection) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t\t// items form other containers. This works because when moving\n\t\t\t\t// an item from one container to another the\n\t\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t\t//\n\t\t\t\t// Without this moving items in \"sub-sortables\" can cause the placeholder to jitter\n\t\t\t\t// beetween the outer and inner container.\n\t\t\t\tif (item.instance !== this.currentContainer) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// No action if intersected item is disabled\n\t\t\t\t// and the element above or below in the direction we're going is also disabled\n\t\t\t\tif (itemElement.className.indexOf(o.disabledClass) !== -1) {\n\t\t\t\t\t// Note: intersection hardcoded direction values from\n\t\t\t\t\t// jquery.ui.sortable.js:_intersectsWithPointer\n\t\t\t\t\tif (intersection === 2) {\n\t\t\t\t\t\t// Going down\n\t\t\t\t\t\titemAfter = this.items[i + 1];\n\t\t\t\t\t\tif (itemAfter && itemAfter.item.hasClass(o.disabledClass)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (intersection === 1) {\n\t\t\t\t\t\t// Going up\n\t\t\t\t\t\titemBefore = this.items[i - 1];\n\t\t\t\t\t\tif (itemBefore && itemBefore.item.hasClass(o.disabledClass)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmethod = intersection === 1 ? \"next\" : \"prev\";\n\n\t\t\t\t// cannot intersect with itself\n\t\t\t\t// no useless actions that have been done before\n\t\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\t\tif (itemElement !== this.currentItem[0] &&\n\t\t\t\t\tthis.placeholder[method]()[0] !== itemElement &&\n\t\t\t\t\t!$.contains(this.placeholder[0], itemElement) &&\n\t\t\t\t\t(\n\t\t\t\t\t\tthis.options.type === \"semi-dynamic\" ?\n\t\t\t\t\t\t\t!$.contains(this.element[0], itemElement) :\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t) {\n\n\t\t\t\t\t// mjs - we are intersecting an element:\n\t\t\t\t\t// trigger the mouseenter event and store this state\n\t\t\t\t\tif (!this.mouseentered) {\n\t\t\t\t\t\t$(itemElement).mouseenter();\n\t\t\t\t\t\tthis.mouseentered = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// mjs - if the element has children and they are hidden,\n\t\t\t\t\t// show them after a delay (CSS responsible)\n\t\t\t\t\tif (o.isTree && $(itemElement).hasClass(o.collapsedClass) && o.expandOnHover) {\n\t\t\t\t\t\tif (!this.hovering) {\n\t\t\t\t\t\t\t$(itemElement).addClass(o.hoveringClass);\n\t\t\t\t\t\t\tthis.hovering = window.setTimeout(function() {\n\t\t\t\t\t\t\t\t$(itemElement)\n\t\t\t\t\t\t\t\t\t.removeClass(o.collapsedClass)\n\t\t\t\t\t\t\t\t\t.addClass(o.expandedClass);\n\n\t\t\t\t\t\t\t\tself.refreshPositions();\n\t\t\t\t\t\t\t\tself._trigger(\"expand\", event, self._uiHash());\n\t\t\t\t\t\t\t}, o.expandOnHover);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\t\t// mjs - rearrange the elements and reset timeouts and hovering state\n\t\t\t\t\tif (this.options.tolerance === \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\t\t$(itemElement).mouseleave();\n\t\t\t\t\t\tthis.mouseentered = false;\n\t\t\t\t\t\t$(itemElement).removeClass(o.hoveringClass);\n\t\t\t\t\t\tif (this.hovering) {\n\t\t\t\t\t\t\twindow.clearTimeout(this.hovering);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.hovering = null;\n\n\t\t\t\t\t\t// mjs - do not switch container if\n\t\t\t\t\t\t// it's a root item and 'protectRoot' is true\n\t\t\t\t\t\t// or if it's not a root item but we are trying to make it root\n\t\t\t\t\t\tif (o.protectRoot &&\n\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\tthis.currentItem[0].parentNode === this.element[0] &&\n\t\t\t\t\t\t\t\t// it's a root item\n\t\t\t\t\t\t\t\titemElement.parentNode !== this.element[0]\n\t\t\t\t\t\t\t\t// it's intersecting a non-root item\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (this.currentItem[0].parentNode !== this.element[0] &&\n\t\t\t\t\t\t\t\titemElement.parentNode === this.element[0]\n\t\t\t\t\t\t\t) {\n\n\t\t\t\t\t\t\t\tif ( !$(itemElement).children(o.listType).length) {\n\t\t\t\t\t\t\t\t\titemElement.appendChild(newList);\n\t\t\t\t\t\t\t\t\tif (o.isTree) {\n\t\t\t\t\t\t\t\t\t\t$(itemElement)\n\t\t\t\t\t\t\t\t\t\t\t.removeClass(o.leafClass)\n\t\t\t\t\t\t\t\t\t\t\t.addClass(o.branchClass + \" \" + o.expandedClass);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (this.direction === \"down\") {\n\t\t\t\t\t\t\t\t\ta = $(itemElement).prev().children(o.listType);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ta = $(itemElement).children(o.listType);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (a[0] !== undefined) {\n\t\t\t\t\t\t\t\t\tthis._rearrange(event, null, a);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!o.protectRoot) {\n\t\t\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Clear emtpy ul's/ol's\n\t\t\t\t\tthis._clearEmpty(itemElement);\n\n\t\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// mjs - to find the previous sibling in the list,\n\t\t\t// keep backtracking until we hit a valid list item.\n\t\t\t(function() {\n\t\t\t\tvar _previousItem = this.placeholder.prev();\n\t\t\t\tif (_previousItem.length) {\n\t\t\t\t\tpreviousItem = _previousItem;\n\t\t\t\t} else {\n\t\t\t\t\tpreviousItem = null;\n\t\t\t\t}\n\t\t\t}.call(this));\n\n\t\t\tif (previousItem != null) {\n\t\t\t\twhile (\n\t\t\t\t\tpreviousItem[0].nodeName.toLowerCase() !== \"li\" ||\n\t\t\t\t\tpreviousItem[0].className.indexOf(o.disabledClass) !== -1 ||\n\t\t\t\t\tpreviousItem[0] === this.currentItem[0] ||\n\t\t\t\t\tpreviousItem[0] === this.helper[0]\n\t\t\t\t) {\n\t\t\t\t\tif (previousItem[0].previousSibling) {\n\t\t\t\t\t\tpreviousItem = $(previousItem[0].previousSibling);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpreviousItem = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// mjs - to find the next sibling in the list,\n\t\t\t// keep stepping forward until we hit a valid list item.\n\t\t\t(function() {\n\t\t\t\tvar _nextItem = this.placeholder.next();\n\t\t\t\tif (_nextItem.length) {\n\t\t\t\t\tnextItem = _nextItem;\n\t\t\t\t} else {\n\t\t\t\t\tnextItem = null;\n\t\t\t\t}\n\t\t\t}.call(this));\n\n\t\t\tif (nextItem != null) {\n\t\t\t\twhile (\n\t\t\t\t\tnextItem[0].nodeName.toLowerCase() !== \"li\" ||\n\t\t\t\t\tnextItem[0].className.indexOf(o.disabledClass) !== -1 ||\n\t\t\t\t\tnextItem[0] === this.currentItem[0] ||\n\t\t\t\t\tnextItem[0] === this.helper[0]\n\t\t\t\t) {\n\t\t\t\t\tif (nextItem[0].nextSibling) {\n\t\t\t\t\t\tnextItem = $(nextItem[0].nextSibling);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnextItem = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.beyondMaxLevels = 0;\n\n\t\t\t// mjs - if the item is moved to the left, send it one level up\n\t\t\t// but only if it's at the bottom of the list\n\t\t\tif (parentItem != null &&\n\t\t\t\tnextItem == null &&\n\t\t\t\t!(o.protectRoot && parentItem[0].parentNode == this.element[0]) &&\n\t\t\t\t(\n\t\t\t\t\to.rtl &&\n\t\t\t\t\t(\n\t\t\t\t\t\tthis.positionAbs.left +\n\t\t\t\t\t\tthis.helper.outerWidth() > parentItem.offset().left +\n\t\t\t\t\t\tparentItem.outerWidth()\n\t\t\t\t\t) ||\n\t\t\t\t\t!o.rtl && (this.positionAbs.left < parentItem.offset().left)\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tparentItem.after(this.placeholder[0]);\n\t\t\t\thelperIsNotSibling = !parentItem\n\t\t\t\t\t\t\t\t\t\t\t.children(o.listItem)\n\t\t\t\t\t\t\t\t\t\t\t.children(\"li:visible:not(.ui-sortable-helper)\")\n\t\t\t\t\t\t\t\t\t\t\t.length;\n\t\t\t\tif (o.isTree && helperIsNotSibling) {\n\t\t\t\t\tparentItem\n\t\t\t\t\t\t.removeClass(this.options.branchClass + \" \" + this.options.expandedClass)\n\t\t\t\t\t\t.addClass(this.options.leafClass);\n\t\t\t\t}\n        if(typeof parentItem !== 'undefined') {\n          this._clearEmpty(parentItem[0]);\n        }\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\t// mjs - if the item is below a sibling and is moved to the right,\n\t\t\t\t// make it a child of that sibling\n\t\t\t} else if (previousItem != null &&\n\t\t\t\t!previousItem.hasClass(o.disableNestingClass) &&\n\t\t\t\t(\n\t\t\t\t\tpreviousItem.children(o.listType).length &&\n\t\t\t\t\tpreviousItem.children(o.listType).is(\":visible\") ||\n\t\t\t\t\t!previousItem.children(o.listType).length\n\t\t\t\t) &&\n\t\t\t\t!(o.protectRoot && this.currentItem[0].parentNode === this.element[0]) &&\n\t\t\t\t(\n\t\t\t\t\to.rtl &&\n\t\t\t\t\t(\n\t\t\t\t\t\tthis.positionAbs.left +\n\t\t\t\t\t\tthis.helper.outerWidth() <\n\t\t\t\t\t\tpreviousItem.offset().left +\n\t\t\t\t\t\tpreviousItem.outerWidth() -\n\t\t\t\t\t\to.tabSize\n\t\t\t\t\t) ||\n\t\t\t\t\t!o.rtl &&\n\t\t\t\t\t(this.positionAbs.left > previousItem.offset().left + o.tabSize)\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tthis._isAllowed(previousItem, level, level + childLevels + 1);\n\n\t\t\t\tif (!previousItem.children(o.listType).length) {\n\t\t\t\t\tpreviousItem[0].appendChild(newList);\n\t\t\t\t\tif (o.isTree) {\n\t\t\t\t\t\tpreviousItem\n\t\t\t\t\t\t\t.removeClass(o.leafClass)\n\t\t\t\t\t\t\t.addClass(o.branchClass + \" \" + o.expandedClass);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// mjs - if this item is being moved from the top, add it to the top of the list.\n\t\t\t\tif (previousTopOffset && (previousTopOffset <= previousItem.offset().top)) {\n\t\t\t\t\tpreviousItem.children(o.listType).prepend(this.placeholder);\n\t\t\t\t} else {\n\t\t\t\t\t// mjs - otherwise, add it to the bottom of the list.\n\t\t\t\t\tpreviousItem.children(o.listType)[0].appendChild(this.placeholder[0]);\n\t\t\t\t}\n        if(typeof parentItem !== 'undefined') {\n          this._clearEmpty(parentItem[0]);\n        }\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t} else {\n\t\t\t\tthis._isAllowed(parentItem, level, level + childLevels);\n\t\t\t}\n\n\t\t\t//Post events to containers\n\t\t\tthis._contactContainers(event);\n\n\t\t\t//Interconnect with droppables\n\t\t\tif ($.ui.ddmanager) {\n\t\t\t\t$.ui.ddmanager.drag(this, event);\n\t\t\t}\n\n\t\t\t//Call callbacks\n\t\t\tthis._trigger(\"sort\", event, this._uiHash());\n\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t\treturn false;\n\n\t\t},\n\n\t\t_mouseStop: function(event) {\n\t\t\t// mjs - if the item is in a position not allowed, send it back\n\t\t\tif (this.beyondMaxLevels) {\n\n\t\t\t\tthis.placeholder.removeClass(this.options.errorClass);\n\n\t\t\t\tif (this.domPosition.prev) {\n\t\t\t\t\t$(this.domPosition.prev).after(this.placeholder);\n\t\t\t\t} else {\n\t\t\t\t\t$(this.domPosition.parent).prepend(this.placeholder);\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"revert\", event, this._uiHash());\n\n\t\t\t}\n\n\t\t\t// mjs - clear the hovering timeout, just to be sure\n\t\t\t$(\".\" + this.options.hoveringClass)\n\t\t\t\t.mouseleave()\n\t\t\t\t.removeClass(this.options.hoveringClass);\n\n\t\t\tthis.mouseentered = false;\n\t\t\tif (this.hovering) {\n\t\t\t\twindow.clearTimeout(this.hovering);\n\t\t\t}\n\t\t\tthis.hovering = null;\n\n\t\t\tthis._relocate_event = event;\n\t\t\tthis._pid_current = $(this.domPosition.parent).parent().attr(\"id\");\n\t\t\tthis._sort_current = this.domPosition.prev ? $(this.domPosition.prev).next().index() : 0;\n\t\t\t$.ui.sortable.prototype._mouseStop.apply(this, arguments); //asybnchronous execution, @see _clear for the relocate event.\n\t\t},\n\n\t\t// mjs - this function is slightly modified\n\t\t// to make it easier to hover over a collapsed element and have it expand\n\t\t_intersectsWithSides: function(item) {\n\n\t\t\tvar half = this.options.isTree ? .8 : .5,\n\t\t\t\tisOverBottomHalf = isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top,\n\t\t\t\t\titem.top + (item.height * half),\n\t\t\t\t\titem.height\n\t\t\t\t),\n\t\t\t\tisOverTopHalf = isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top,\n\t\t\t\t\titem.top - (item.height * half),\n\t\t\t\t\titem.height\n\t\t\t\t),\n\t\t\t\tisOverRightHalf = isOverAxis(\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left,\n\t\t\t\t\titem.left + (item.width / 2),\n\t\t\t\t\titem.width\n\t\t\t\t),\n\t\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\t\tif (this.floating && horizontalDirection) {\n\t\t\t\treturn (\n\t\t\t\t\t(horizontalDirection === \"right\" && isOverRightHalf) ||\n\t\t\t\t\t(horizontalDirection === \"left\" && !isOverRightHalf)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn verticalDirection && (\n\t\t\t\t\t(verticalDirection === \"down\" && isOverBottomHalf) ||\n\t\t\t\t\t(verticalDirection === \"up\" && isOverTopHalf)\n\t\t\t\t);\n\t\t\t}\n\n\t\t},\n\n\t\t_contactContainers: function() {\n\n\t\t\tif (this.options.protectRoot && this.currentItem[0].parentNode === this.element[0] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$.ui.sortable.prototype._contactContainers.apply(this, arguments);\n\n\t\t},\n\n\t\t_clear: function() {\n\t\t\tvar i,\n\t\t\t\titem;\n\n\t\t\t$.ui.sortable.prototype._clear.apply(this, arguments);\n\n\t\t\t//relocate event\n\t\t\tif (!(this._pid_current === this._uiHash().item.parent().parent().attr(\"id\") &&\n\t\t\t\tthis._sort_current === this._uiHash().item.index())) {\n\t\t\t\tthis._trigger(\"relocate\", this._relocate_event, this._uiHash());\n\t\t\t}\n\n\t\t\t// mjs - clean last empty ul/ol\n\t\t\tfor (i = this.items.length - 1; i >= 0; i--) {\n\t\t\t\titem = this.items[i].item[0];\n\t\t\t\tthis._clearEmpty(item);\n\t\t\t}\n\n\t\t},\n\n\t\tserialize: function(options) {\n\n\t\t\tvar o = $.extend({}, this.options, options),\n\t\t\t\titems = this._getItemsAsjQuery(o && o.connected),\n\t\t\t\tstr = [];\n\n\t\t\t$(items).each(function() {\n\t\t\t\tvar res = ($(o.item || this).attr(o.attribute || \"id\") || \"\")\n\t\t\t\t\t\t.match(o.expression || (/(.+)[-=_](.+)/)),\n\t\t\t\t\tpid = ($(o.item || this).parent(o.listType)\n\t\t\t\t\t\t.parent(o.items)\n\t\t\t\t\t\t.attr(o.attribute || \"id\") || \"\")\n\t\t\t\t\t\t.match(o.expression || (/(.+)[-=_](.+)/));\n\n\t\t\t\tif (res) {\n\t\t\t\t\tstr.push(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(o.key || res[1]) +\n\t\t\t\t\t\t\t\"[\" +\n\t\t\t\t\t\t\t(o.key && o.expression ? res[1] : res[2]) + \"]\"\n\t\t\t\t\t\t) +\n\t\t\t\t\t\t\"=\" +\n\t\t\t\t\t\t(pid ? (o.key && o.expression ? pid[1] : pid[2]) : o.rootID));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!str.length && o.key) {\n\t\t\t\tstr.push(o.key + \"=\");\n\t\t\t}\n\n\t\t\treturn str.join(\"&\");\n\n\t\t},\n\n\t\ttoHierarchy: function(options) {\n\n\t\t\tvar o = $.extend({}, this.options, options),\n\t\t\t\tret = [];\n\n\t\t\t$(this.element).children(o.items).each(function() {\n\t\t\t\tvar level = _recursiveItems(this);\n\t\t\t\tret.push(level);\n\t\t\t});\n\n\t\t\treturn ret;\n\n\t\t\tfunction _recursiveItems(item) {\n\t\t\t\tvar id = ($(item).attr(o.attribute || \"id\") || \"\").match(o.expression || (/(.+)[-=_](.+)/)),\n\t\t\t\t\tcurrentItem;\n\n\t\t\t\tvar data = $(item).data();\n\t\t\t\tif (data.nestedSortableItem) {\n\t\t\t\t\tdelete data.nestedSortableItem; // Remove the nestedSortableItem object from the data\n\t\t\t\t}\n\n\t\t\t\tif (id) {\n\t\t\t\t\tcurrentItem = {\n\t\t\t\t\t\t\"id\": id[2]\n\t\t\t\t\t};\n\n\t\t\t\t\tcurrentItem = $.extend({}, currentItem, data); // Combine the two objects\n\n\t\t\t\t\tif ($(item).children(o.listType).children(o.items).length > 0) {\n\t\t\t\t\t\tcurrentItem.children = [];\n\t\t\t\t\t\t$(item).children(o.listType).children(o.items).each(function() {\n\t\t\t\t\t\t\tvar level = _recursiveItems(this);\n\t\t\t\t\t\t\tcurrentItem.children.push(level);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn currentItem;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttoArray: function(options) {\n\n\t\t\tvar o = $.extend({}, this.options, options),\n\t\t\t\tsDepth = o.startDepthCount || 0,\n\t\t\t\tret = [],\n\t\t\t\tleft = 1;\n\n\t\t\tif (!o.excludeRoot) {\n\t\t\t\tret.push({\n\t\t\t\t\t\"item_id\": o.rootID,\n\t\t\t\t\t\"parent_id\": null,\n\t\t\t\t\t\"depth\": sDepth,\n\t\t\t\t\t\"left\": left,\n\t\t\t\t\t\"right\": ($(o.items, this.element).length + 1) * 2\n\t\t\t\t});\n\t\t\t\tleft++;\n\t\t\t}\n\n\t\t\t$(this.element).children(o.items).each(function() {\n\t\t\t\tleft = _recursiveArray(this, sDepth, left);\n\t\t\t});\n\n\t\t\tret = ret.sort(function(a, b) { return (a.left - b.left); });\n\n\t\t\treturn ret;\n\n\t\t\tfunction _recursiveArray(item, depth, _left) {\n\n\t\t\t\tvar right = _left + 1,\n\t\t\t\t\tid,\n\t\t\t\t\tpid,\n\t\t\t\t\tparentItem;\n\n\t\t\t\tif ($(item).children(o.listType).children(o.items).length > 0) {\n\t\t\t\t\tdepth++;\n\t\t\t\t\t$(item).children(o.listType).children(o.items).each(function() {\n\t\t\t\t\t\tright = _recursiveArray($(this), depth, right);\n\t\t\t\t\t});\n\t\t\t\t\tdepth--;\n\t\t\t\t}\n\n\t\t\t\tid = ($(item).attr(o.attribute || \"id\")).match(o.expression || (/(.+)[-=_](.+)/));\n\n\t\t\t\tif (depth === sDepth) {\n\t\t\t\t\tpid = o.rootID;\n\t\t\t\t} else {\n\t\t\t\t\tparentItem = ($(item).parent(o.listType)\n\t\t\t\t\t\t\t\t\t\t\t.parent(o.items)\n\t\t\t\t\t\t\t\t\t\t\t.attr(o.attribute || \"id\"))\n\t\t\t\t\t\t\t\t\t\t\t.match(o.expression || (/(.+)[-=_](.+)/));\n\t\t\t\t\tpid = parentItem[2];\n\t\t\t\t}\n\n\t\t\t\tif (id) {\n\t\t\t\t\tvar name = $(item).data(\"name\");\n          ret.push({\n            \"id\": id[2],\n            \"parent_id\": pid,\n            \"depth\": depth,\n            \"left\": _left,\n            \"right\": right,\n            \"name\":name\n          });\n\t\t\t\t}\n\n\t\t\t\t_left = right + 1;\n\t\t\t\treturn _left;\n\t\t\t}\n\n\t\t},\n\n\t\t_clearEmpty: function (item) {\n\t\t\tfunction replaceClass(elem, search, replace, swap) {\n\t\t\t\tif (swap) {\n\t\t\t\t\tsearch = [replace, replace = search][0];\n\t\t\t\t}\n\n\t\t\t\t$(elem).removeClass(search).addClass(replace);\n\t\t\t}\n\n\t\t\tvar o = this.options,\n\t\t\t\tchildrenList = $(item).children(o.listType),\n\t\t\t\thasChildren = childrenList.is(':not(:empty)');\n\n\t\t\tvar doNotClear =\n\t\t\t\to.doNotClear ||\n\t\t\t\thasChildren ||\n\t\t\t\to.protectRoot && $(item)[0] === this.element[0];\n\n\t\t\tif (o.isTree) {\n\t\t\t\treplaceClass(item, o.branchClass, o.leafClass, doNotClear);\n\n\t\t\t\tif (doNotClear && hasChildren) {\n\t\t\t\t\treplaceClass(item, o.collapsedClass, o.expandedClass);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!doNotClear) {\n\t\t\t\tchildrenList.remove();\n\t\t\t}\n\t\t},\n\n\t\t_getLevel: function(item) {\n\n\t\t\tvar level = 1,\n\t\t\t\tlist;\n\n\t\t\tif (this.options.listType) {\n\t\t\t\tlist = item.closest(this.options.listType);\n\t\t\t\twhile (list && list.length > 0 && !list.is(\".ui-sortable\")) {\n\t\t\t\t\tlevel++;\n\t\t\t\t\tlist = list.parent().closest(this.options.listType);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn level;\n\t\t},\n\n\t\t_getChildLevels: function(parent, depth) {\n\t\t\tvar self = this,\n\t\t\t\to = this.options,\n\t\t\t\tresult = 0;\n\t\t\tdepth = depth || 0;\n\n\t\t\t$(parent).children(o.listType).children(o.items).each(function(index, child) {\n\t\t\t\tresult = Math.max(self._getChildLevels(child, depth + 1), result);\n\t\t\t});\n\n\t\t\treturn depth ? result + 1 : result;\n\t\t},\n\n\t\t_isAllowed: function(parentItem, level, levels) {\n\t\t\tvar o = this.options,\n\t\t\t\t// this takes into account the maxLevels set to the recipient list\n\t\t\t\tmaxLevels = this\n\t\t\t\t\t.placeholder\n\t\t\t\t\t.closest(\".ui-sortable\")\n\t\t\t\t\t.nestedSortable(\"option\", \"maxLevels\"),\n\n\t\t\t\t// Check if the parent has changed to prevent it, when o.disableParentChange is true\n\t\t\t\toldParent = this.currentItem.parent().parent(),\n\t\t\t\tdisabledByParentchange = o.disableParentChange && (\n\t\t\t\t\t//From somewhere to somewhere else, except the root\n\t\t\t\t\ttypeof parentItem !== 'undefined' && !oldParent.is(parentItem) ||\n\t\t\t\t\ttypeof parentItem === 'undefined' && oldParent.is(\"li\")\t//From somewhere to the root\n\t\t\t\t);\n\t\t\t// mjs - is the root protected?\n\t\t\t// mjs - are we nesting too deep?\n\t\t\tif (\n\t\t\t\tdisabledByParentchange ||\n\t\t\t\t!o.isAllowed(this.placeholder, parentItem, this.currentItem)\n\t\t\t) {\n\t\t\t\tthis.placeholder.addClass(o.errorClass);\n\t\t\t\tif (maxLevels < levels && maxLevels !== 0) {\n\t\t\t\t\tthis.beyondMaxLevels = levels - maxLevels;\n\t\t\t\t} else {\n\t\t\t\t\tthis.beyondMaxLevels = 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (maxLevels < levels && maxLevels !== 0) {\n\t\t\t\t\tthis.placeholder.addClass(o.errorClass);\n\t\t\t\t\tthis.beyondMaxLevels = levels - maxLevels;\n\t\t\t\t} else {\n\t\t\t\t\tthis.placeholder.removeClass(o.errorClass);\n\t\t\t\t\tthis.beyondMaxLevels = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}));\n\n\t$.mjs.nestedSortable.prototype.options = $.extend(\n\t\t{},\n\t\t$.ui.sortable.prototype.options,\n\t\t$.mjs.nestedSortable.prototype.options\n\t);\n}));\n", "import moment from 'moment'\nwindow.moment = moment", "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 || 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\n/**\n * Verifies that attempting to coerce n to string or number won't throw a TypeError.\n */\nfunction isNonPrimitive(n: unknown) {\n  return typeof n === 'symbol' || (typeof n === 'object' && n !== null && !(Symbol.toPrimitive in n || 'toString' in n || 'valueOf' in n));\n}\n\nexport function isNumber(n: unknown): n is number {\n  return !isNonPrimitive(n) && !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';\nimport {isNullOrUndef} from './helpers.core.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, vScale, _parsed} = meta;\n    const spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n    if (minDefined) {\n      start = 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      if (spanGaps) {\n        const distanceToDefinedLo = (_parsed\n          .slice(0, start + 1)\n          .reverse()\n          .findIndex(\n            point => !isNullOrUndef(point[vScale.axis])));\n        start -= Math.max(0, distanceToDefinedLo);\n      }\n      start = _limitValue(start, 0, pointCount - 1);\n    }\n    if (maxDefined) {\n      let end = 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      if (spanGaps) {\n        const distanceToDefinedHi = (_parsed\n          .slice(end - 1)\n          .findIndex(\n            point => !isNullOrUndef(point[vScale.axis])));\n        end += Math.max(0, distanceToDefinedHi);\n      }\n      count = _limitValue(end, 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  if (!ctx && !canvas) {\n    return;\n  }\n\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) || prop === 'constructor') {\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 PrivateChart from '../core/core.controller.js';\nimport type {Chart, ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\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 | PrivateChart\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 = canvas && _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 | PrivateChart,\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 as PrivateChart).height = Math.floor(chart.height);\n  (chart as PrivateChart).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 as PrivateChart).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  let found = false;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      found = true;\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\n  if (!found && !options.all) {\n    return 0;\n  }\n\n  return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n  const {iScale, vScale} = meta;\n  const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n  const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\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      [iAxisKey]: key,\n      [vAxisKey]: 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      const meta = this._cachedMeta;\n      this._data = convertObjectDataToArray(data, meta);\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      meta._stacked = isStacked(meta.vScale, meta);\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    const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n    const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n    const skipNull = (meta) => {\n      const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\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 && !rects[i].hidden) {\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<TimeUnit | 'datetime', 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?: string): 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: string): 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 | boolean): 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): 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<TimeUnit | 'datetime', 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 as {\n    new (options?: AnyObject): DateAdapter;\n    override<T extends AnyObject = AnyObject>(\n      members: Partial<Omit<DateAdapter<T>, 'options'>>\n    ): void;\n  }\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, isNullOrUndef} 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  const spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null;\n\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      const result = lookupMethod(data, axis, value);\n      if (spanGaps) {\n        const {vScale} = controller._cachedMeta;\n        const {_parsed} = metaset;\n\n        const distanceToDefinedLo = (_parsed\n          .slice(0, result.lo + 1)\n          .reverse()\n          .findIndex(\n            point => !isNullOrUndef(point[vScale.axis])));\n        result.lo -= Math.max(0, distanceToDefinedLo);\n\n        const distanceToDefinedHi = (_parsed\n          .slice(result.hi)\n          .findIndex(\n            point => !isNullOrUndef(point[vScale.axis])));\n        result.hi += Math.max(0, distanceToDefinedHi);\n      }\n      return result;\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] && 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 = canvas && _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    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      // Unset pending resize request now to avoid possible recursion within _resize\n      this._resizeBeforeDraw = null;\n      this._resize(width, height);\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 event 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 nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n    const betweenAngles = _circumference >= TAU || nonZeroBetween;\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, defaults} 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\nfunction containsDefaultColorsDefenitions() {\n  return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';\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    const containsColorDefenition = (\n      containsColorsDefinitions(datasets) ||\n      containsColorsDefinition(chartOptions) ||\n      (elements && containsColorsDefinitions(elements)) ||\n      containsDefaultColorsDefenitions());\n\n    if (!options.forceOverride && containsColorDefenition) {\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    // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n    if (count === 0 || xSet.size === 0) {\n      return false;\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.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, 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", "import \"chartkick/chart.js\";\n\n//// Setup Chartkick \nrequire(\"chartkick\")\n// require(\"chart.js\")\nimport Chartkick from 'chartkick'\n\nwindow.Chartkick = Chartkick", "export * from \"./enums.js\";\nexport * from \"./modifiers/index.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { popperGenerator, detectOverflow, createPopper as createPopperBase } from \"./createPopper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper } from \"./popper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\";", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}", "export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}", "import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}", "import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}", "export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}", "export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};", "export default function getVariation(placement) {\n  return placement.split('-')[1];\n}", "import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};", "var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}", "var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}", "export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}", "import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases \u2013 research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};", "export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};", "export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}", "export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}", "export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update \u2013 it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update \u2013 it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  if (typeof object.jquery !== 'undefined') {\n    object = object[0]\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  // it's a jQuery object or a node element\n  if (isElement(object)) {\n    return object.jquery ? object[0] : object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(object)\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return window.jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getElementFromSelector,\n  getjQuery,\n  getNextActiveElement,\n  getSelectorFromElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  // todo: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const handlerKey of Object.keys(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const keyHandlers of Object.keys(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n\n    let jQueryEvent = null\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    let evt = new Event(event, { bubbles, cancelable: true })\n    evt = hydrateObj(evt, args)\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && jQueryEvent) {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta) {\n  for (const [key, value] of Object.entries(meta || {})) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index'\nimport Manipulator from '../dom/manipulator'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const property of Object.keys(configTypes)) {\n      const expectedTypes = configTypes[property]\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport { executeAfterTransition, getElement } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Config from './util/config'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.2.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config'\nimport EventHandler from '../dom/event-handler'\nimport { execute } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)', // TODO:v6 remove boolean support\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // FIXME TODO use `document.visibilityState`\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      // todo: change tests that use empty divs to avoid this check\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Carousel.getOrCreateInstance(this, config)\n\n      if (typeof config === 'number') {\n        data.to(config)\n        return\n      }\n\n      if (typeof config === 'string') {\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getSelectorFromElement,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    const _config = {}\n    if (typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false\n    }\n\n    return this.each(function () {\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  for (const element of selectorElements) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  display: 'string',\n  offset: '(array|string|function)',\n  popperConfig: '(null|object|function)',\n  reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._popper = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._createPopper()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper() {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._parent\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n      return PLACEMENT_TOPCENTER\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n      return PLACEMENT_BOTTOMCENTER\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(SELECTOR_NAVBAR) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display or Dropdown is in Navbar\n    if (this._inNavbar || this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not an UP | DOWN | ESCAPE key => not a dropdown command\n    // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n    if (!isUpOrDownEvent && !isEscapeEvent) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    event.preventDefault()\n\n    // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (isUpOrDownEvent) {\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (instance._isShown()) { // else is escape and we check if it is shown\n      event.stopPropagation()\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow } from './index'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, isRTL, isVisible, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n  backdrop: true,\n  focus: true,\n  keyboard: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  focus: 'boolean',\n  keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._isTransitioning = true\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._backdrop.show(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    this._isTransitioning = true\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    for (const htmlElement of [window, this._dialog]) {\n      EventHandler.off(htmlElement, EVENT_KEY)\n    }\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _showElement(relatedTarget) {\n    // try to append dynamic modal\n    if (!document.body.contains(this._element)) {\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        event.preventDefault()\n        this.hide()\n        return\n      }\n\n      this._triggerBackdropTransition()\n    })\n\n    EventHandler.on(window, EVENT_RESIZE, () => {\n      if (this._isShown && !this._isTransitioning) {\n        this._adjustDialog()\n      }\n    })\n\n    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n        if (this._element !== event.target || this._element !== event2.target) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n          return\n        }\n\n        if (this._config.backdrop) {\n          this.hide()\n        }\n      })\n    })\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const initialOverflowY = this._element.style.overflowY\n    // return if the following background transition hasn't yet completed\n    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      this._queueCallback(() => {\n        this._element.style.overflowY = initialOverflowY\n      }, this._dialog)\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  /**\n   * The following methods are used to handle overflowing modals\n   */\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if (isBodyOverflowing && !isModalOverflowing) {\n      const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n\n    if (!isBodyOverflowing && isModalOverflowing) {\n      const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // avoid conflict when clicking modal toggler while another one is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen) {\n    Modal.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (!this._config.keyboard) {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    })\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer'\nimport { getElement, isElement } from '../util/index'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return typeof arg === 'function' ? arg(this) : arg\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport { defineJQueryPlugin, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport TemplateFactory from './util/template-factory'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 0],\n  placement: 'top',\n  popperConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  popperConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._popper = null\n    this._templateFactory = null\n    this._newContent = null\n\n    // Protected\n    this.tip = null\n\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    this._activeTrigger.click = !this._activeTrigger.click\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposePopper()\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    // todo v6 remove this OR make it optional\n    this._disposePopper()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    this._popper = this._createPopper(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposePopper()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    // todo: remove this check on v6\n    if (!tip) {\n      return null\n    }\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    // todo: on v6 the following can be achieved with CSS only\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposePopper()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createPopper(tip) {\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n    const attachment = AttachmentMap[placement.toUpperCase()]\n    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return typeof arg === 'function' ? arg.call(this._element) : arg\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'preSetPlacement',\n          enabled: true,\n          phase: 'beforeMain',\n          fn: data => {\n            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n            this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n          }\n        }\n      ]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n    config.target = getElement(config.target) || document.body\n\n    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(anchor.hash, this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(anchor.hash, anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, getNextActiveElement, isDisabled } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // todo: should Throw exception on v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n    const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true)\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n", "import * as bootstrap from \"bootstrap\"\nwindow.bootstrap = bootstrap\n", "import \"bootstrap-select\"", "/*\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", "var adapters = {\n  logger: typeof console !== \"undefined\" ? console : undefined,\n  WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined\n};\n\nvar logger = {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now());\n      adapters.logger.log(\"[ActionCable]\", ...messages);\n    }\n  }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this);\n    this.connection = connection;\n    this.reconnectAttempts = 0;\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  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  isRunning() {\n    return this.startedAt && !this.stoppedAt;\n  }\n  recordMessage() {\n    this.pingedAt = now();\n  }\n  recordConnect() {\n    this.reconnectAttempts = 0;\n    delete this.disconnectedAt;\n    logger.log(\"ConnectionMonitor recorded connect\");\n  }\n  recordDisconnect() {\n    this.disconnectedAt = now();\n    logger.log(\"ConnectionMonitor recorded disconnect\");\n  }\n  startPolling() {\n    this.stopPolling();\n    this.poll();\n  }\n  stopPolling() {\n    clearTimeout(this.pollTimeout);\n  }\n  poll() {\n    this.pollTimeout = setTimeout((() => {\n      this.reconnectIfStale();\n      this.poll();\n    }), this.getPollInterval());\n  }\n  getPollInterval() {\n    const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n    const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n    const jitter = jitterMax * Math.random();\n    return staleThreshold * 1e3 * backoff * (1 + jitter);\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  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt;\n  }\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n  }\n  disconnectedRecently() {\n    return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\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      }), 200);\n    }\n  }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\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: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\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  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data));\n      return true;\n    } else {\n      return false;\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) {\n        this.uninstallEventHandlers();\n      }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols);\n      this.installEventHandlers();\n      this.monitor.start();\n      return true;\n    }\n  }\n  close({allowReconnect: allowReconnect} = {\n    allowReconnect: true\n  }) {\n    if (!allowReconnect) {\n      this.monitor.stop();\n    }\n    if (this.isOpen()) {\n      return this.webSocket.close();\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      } 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  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol;\n    }\n  }\n  isOpen() {\n    return this.isState(\"open\");\n  }\n  isActive() {\n    return this.isState(\"open\", \"connecting\");\n  }\n  triedToReconnect() {\n    return this.monitor.reconnectAttempts > 0;\n  }\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n  }\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0;\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  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  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {};\n    }\n  }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) {\n      return;\n    }\n    const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: 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\n     case message_types.disconnect:\n      logger.log(`Disconnecting. Reason: ${reason}`);\n      return this.close({\n        allowReconnect: reconnect\n      });\n\n     case message_types.ping:\n      return null;\n\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\", {\n          reconnected: true\n        });\n      } else {\n        return this.subscriptions.notify(identifier, \"connected\", {\n          reconnected: false\n        });\n      }\n\n     case message_types.rejection:\n      return this.subscriptions.reject(identifier);\n\n     default:\n      return this.subscriptions.notify(identifier, \"received\", message);\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({\n        allowReconnect: false\n      });\n    }\n  },\n  close(event) {\n    logger.log(\"WebSocket onclose event\");\n    if (this.disconnected) {\n      return;\n    }\n    this.disconnected = true;\n    this.monitor.recordDisconnect();\n    return this.subscriptions.notifyAll(\"disconnected\", {\n      willAttemptReconnect: this.monitor.isRunning()\n    });\n  },\n  error() {\n    logger.log(\"WebSocket onerror event\");\n  }\n};\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\nclass Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer;\n    this.identifier = JSON.stringify(params);\n    extend(this, mixin);\n  }\n  perform(action, data = {}) {\n    data.action = action;\n    return this.send(data);\n  }\n  send(data) {\n    return this.consumer.send({\n      command: \"message\",\n      identifier: this.identifier,\n      data: JSON.stringify(data)\n    });\n  }\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this);\n  }\n}\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions;\n    this.pendingSubscriptions = [];\n  }\n  guarantee(subscription) {\n    if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n      this.pendingSubscriptions.push(subscription);\n    } else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n    }\n    this.startGuaranteeing();\n  }\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n    this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n  }\n  startGuaranteeing() {\n    this.stopGuaranteeing();\n    this.retrySubscribing();\n  }\n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout);\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    }), 500);\n  }\n}\n\nclass Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer;\n    this.guarantor = new SubscriptionGuarantor(this);\n    this.subscriptions = [];\n  }\n  create(channelName, mixin) {\n    const channel = channelName;\n    const params = typeof channel === \"object\" ? channel : {\n      channel: channel\n    };\n    const subscription = new Subscription(this.consumer, params, mixin);\n    return this.add(subscription);\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  remove(subscription) {\n    this.forget(subscription);\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\");\n    }\n    return subscription;\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  forget(subscription) {\n    this.guarantor.forget(subscription);\n    this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n    return subscription;\n  }\n  findAll(identifier) {\n    return this.subscriptions.filter((s => s.identifier === identifier));\n  }\n  reload() {\n    return this.subscriptions.map((subscription => this.subscribe(subscription)));\n  }\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\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    return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n  }\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription);\n    }\n  }\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`);\n    this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n  }\n  sendCommand(subscription, command) {\n    const {identifier: identifier} = subscription;\n    return this.consumer.send({\n      command: command,\n      identifier: identifier\n    });\n  }\n}\n\nclass 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  get url() {\n    return createWebSocketURL(this._url);\n  }\n  send(data) {\n    return this.connection.send(data);\n  }\n  connect() {\n    return this.connection.open();\n  }\n  disconnect() {\n    return this.connection.close({\n      allowReconnect: false\n    });\n  }\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open();\n    }\n  }\n  addSubProtocol(subprotocol) {\n    this.subprotocols = [ ...this.subprotocols, subprotocol ];\n  }\n}\n\nfunction createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url();\n  }\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\");\n    a.href = url;\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\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url);\n}\n\nfunction getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n  if (element) {\n    return element.getAttribute(\"content\");\n  }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n", "import { createConsumer } from \"@rails/actioncable\"\nexport default createConsumer()", "import { Application } from \"@hotwired/stimulus\"\nimport consumer from '../channels/consumer'\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = true\napplication.consumer = consumer\n\nwindow.Stimulus   = application\n\nexport { application }", "var DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n    var toNodeAttrs = toNode.attributes;\n    var attr;\n    var attrName;\n    var attrNamespaceURI;\n    var attrValue;\n    var fromValue;\n\n    // document-fragments dont have attributes so lets not do anything\n    if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n      return;\n    }\n\n    // update attributes on original DOM element\n    for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n        attr = toNodeAttrs[i];\n        attrName = attr.name;\n        attrNamespaceURI = attr.namespaceURI;\n        attrValue = attr.value;\n\n        if (attrNamespaceURI) {\n            attrName = attr.localName || attrName;\n            fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n            if (fromValue !== attrValue) {\n                if (attr.prefix === 'xmlns'){\n                    attrName = attr.name; // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n                }\n                fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n            }\n        } else {\n            fromValue = fromNode.getAttribute(attrName);\n\n            if (fromValue !== attrValue) {\n                fromNode.setAttribute(attrName, attrValue);\n            }\n        }\n    }\n\n    // Remove any extra attributes found on the original DOM element that\n    // weren't found on the target element.\n    var fromNodeAttrs = fromNode.attributes;\n\n    for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n        attr = fromNodeAttrs[d];\n        attrName = attr.name;\n        attrNamespaceURI = attr.namespaceURI;\n\n        if (attrNamespaceURI) {\n            attrName = attr.localName || attrName;\n\n            if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n                fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n            }\n        } else {\n            if (!toNode.hasAttribute(attrName)) {\n                fromNode.removeAttribute(attrName);\n            }\n        }\n    }\n}\n\nvar range; // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\n\nvar doc = typeof document === 'undefined' ? undefined : document;\nvar HAS_TEMPLATE_SUPPORT = !!doc && 'content' in doc.createElement('template');\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && 'createContextualFragment' in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n    var template = doc.createElement('template');\n    template.innerHTML = str;\n    return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n    if (!range) {\n        range = doc.createRange();\n        range.selectNode(doc.body);\n    }\n\n    var fragment = range.createContextualFragment(str);\n    return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n    var fragment = doc.createElement('body');\n    fragment.innerHTML = str;\n    return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\nfunction toElement(str) {\n    str = str.trim();\n    if (HAS_TEMPLATE_SUPPORT) {\n      // avoid restrictions on content for things like `<tr><th>Hi</th></tr>` which\n      // createContextualFragment doesn't support\n      // <template> support not available in IE\n      return createFragmentFromTemplate(str);\n    } else if (HAS_RANGE_SUPPORT) {\n      return createFragmentFromRange(str);\n    }\n\n    return createFragmentFromWrap(str);\n}\n\n/**\n * Returns true if two node's names are the same.\n *\n * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same\n *       nodeName and different namespace URIs.\n *\n * @param {Element} a\n * @param {Element} b The target element\n * @return {boolean}\n */\nfunction compareNodeNames(fromEl, toEl) {\n    var fromNodeName = fromEl.nodeName;\n    var toNodeName = toEl.nodeName;\n    var fromCodeStart, toCodeStart;\n\n    if (fromNodeName === toNodeName) {\n        return true;\n    }\n\n    fromCodeStart = fromNodeName.charCodeAt(0);\n    toCodeStart = toNodeName.charCodeAt(0);\n\n    // If the target element is a virtual DOM node or SVG node then we may\n    // need to normalize the tag name before comparing. Normal HTML elements that are\n    // in the \"http://www.w3.org/1999/xhtml\"\n    // are converted to upper case\n    if (fromCodeStart <= 90 && toCodeStart >= 97) { // from is upper and to is lower\n        return fromNodeName === toNodeName.toUpperCase();\n    } else if (toCodeStart <= 90 && fromCodeStart >= 97) { // to is upper and from is lower\n        return toNodeName === fromNodeName.toUpperCase();\n    } else {\n        return false;\n    }\n}\n\n/**\n * Create an element, optionally with a known namespace URI.\n *\n * @param {string} name the element name, e.g. 'div' or 'svg'\n * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of\n * its `xmlns` attribute or its inferred namespace.\n *\n * @return {Element}\n */\nfunction createElementNS(name, namespaceURI) {\n    return !namespaceURI || namespaceURI === NS_XHTML ?\n        doc.createElement(name) :\n        doc.createElementNS(namespaceURI, name);\n}\n\n/**\n * Copies the children of one DOM element to another DOM element\n */\nfunction moveChildren(fromEl, toEl) {\n    var curChild = fromEl.firstChild;\n    while (curChild) {\n        var nextChild = curChild.nextSibling;\n        toEl.appendChild(curChild);\n        curChild = nextChild;\n    }\n    return toEl;\n}\n\nfunction syncBooleanAttrProp(fromEl, toEl, name) {\n    if (fromEl[name] !== toEl[name]) {\n        fromEl[name] = toEl[name];\n        if (fromEl[name]) {\n            fromEl.setAttribute(name, '');\n        } else {\n            fromEl.removeAttribute(name);\n        }\n    }\n}\n\nvar specialElHandlers = {\n    OPTION: function(fromEl, toEl) {\n        var parentNode = fromEl.parentNode;\n        if (parentNode) {\n            var parentName = parentNode.nodeName.toUpperCase();\n            if (parentName === 'OPTGROUP') {\n                parentNode = parentNode.parentNode;\n                parentName = parentNode && parentNode.nodeName.toUpperCase();\n            }\n            if (parentName === 'SELECT' && !parentNode.hasAttribute('multiple')) {\n                if (fromEl.hasAttribute('selected') && !toEl.selected) {\n                    // Workaround for MS Edge bug where the 'selected' attribute can only be\n                    // removed if set to a non-empty value:\n                    // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/\n                    fromEl.setAttribute('selected', 'selected');\n                    fromEl.removeAttribute('selected');\n                }\n                // We have to reset select element's selectedIndex to -1, otherwise setting\n                // fromEl.selected using the syncBooleanAttrProp below has no effect.\n                // The correct selectedIndex will be set in the SELECT special handler below.\n                parentNode.selectedIndex = -1;\n            }\n        }\n        syncBooleanAttrProp(fromEl, toEl, 'selected');\n    },\n    /**\n     * The \"value\" attribute is special for the <input> element since it sets\n     * the initial value. Changing the \"value\" attribute without changing the\n     * \"value\" property will have no effect since it is only used to the set the\n     * initial value.  Similar for the \"checked\" attribute, and \"disabled\".\n     */\n    INPUT: function(fromEl, toEl) {\n        syncBooleanAttrProp(fromEl, toEl, 'checked');\n        syncBooleanAttrProp(fromEl, toEl, 'disabled');\n\n        if (fromEl.value !== toEl.value) {\n            fromEl.value = toEl.value;\n        }\n\n        if (!toEl.hasAttribute('value')) {\n            fromEl.removeAttribute('value');\n        }\n    },\n\n    TEXTAREA: function(fromEl, toEl) {\n        var newValue = toEl.value;\n        if (fromEl.value !== newValue) {\n            fromEl.value = newValue;\n        }\n\n        var firstChild = fromEl.firstChild;\n        if (firstChild) {\n            // Needed for IE. Apparently IE sets the placeholder as the\n            // node value and vise versa. This ignores an empty update.\n            var oldValue = firstChild.nodeValue;\n\n            if (oldValue == newValue || (!newValue && oldValue == fromEl.placeholder)) {\n                return;\n            }\n\n            firstChild.nodeValue = newValue;\n        }\n    },\n    SELECT: function(fromEl, toEl) {\n        if (!toEl.hasAttribute('multiple')) {\n            var selectedIndex = -1;\n            var i = 0;\n            // We have to loop through children of fromEl, not toEl since nodes can be moved\n            // from toEl to fromEl directly when morphing.\n            // At the time this special handler is invoked, all children have already been morphed\n            // and appended to / removed from fromEl, so using fromEl here is safe and correct.\n            var curChild = fromEl.firstChild;\n            var optgroup;\n            var nodeName;\n            while(curChild) {\n                nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();\n                if (nodeName === 'OPTGROUP') {\n                    optgroup = curChild;\n                    curChild = optgroup.firstChild;\n                } else {\n                    if (nodeName === 'OPTION') {\n                        if (curChild.hasAttribute('selected')) {\n                            selectedIndex = i;\n                            break;\n                        }\n                        i++;\n                    }\n                    curChild = curChild.nextSibling;\n                    if (!curChild && optgroup) {\n                        curChild = optgroup.nextSibling;\n                        optgroup = null;\n                    }\n                }\n            }\n\n            fromEl.selectedIndex = selectedIndex;\n        }\n    }\n};\n\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_FRAGMENT_NODE$1 = 11;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\n\nfunction noop() {}\n\nfunction defaultGetNodeKey(node) {\n  if (node) {\n      return (node.getAttribute && node.getAttribute('id')) || node.id;\n  }\n}\n\nfunction morphdomFactory(morphAttrs) {\n\n    return function morphdom(fromNode, toNode, options) {\n        if (!options) {\n            options = {};\n        }\n\n        if (typeof toNode === 'string') {\n            if (fromNode.nodeName === '#document' || fromNode.nodeName === 'HTML' || fromNode.nodeName === 'BODY') {\n                var toNodeHtml = toNode;\n                toNode = doc.createElement('html');\n                toNode.innerHTML = toNodeHtml;\n            } else {\n                toNode = toElement(toNode);\n            }\n        }\n\n        var getNodeKey = options.getNodeKey || defaultGetNodeKey;\n        var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;\n        var onNodeAdded = options.onNodeAdded || noop;\n        var onBeforeElUpdated = options.onBeforeElUpdated || noop;\n        var onElUpdated = options.onElUpdated || noop;\n        var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;\n        var onNodeDiscarded = options.onNodeDiscarded || noop;\n        var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;\n        var childrenOnly = options.childrenOnly === true;\n\n        // This object is used as a lookup to quickly find all keyed elements in the original DOM tree.\n        var fromNodesLookup = Object.create(null);\n        var keyedRemovalList = [];\n\n        function addKeyedRemoval(key) {\n            keyedRemovalList.push(key);\n        }\n\n        function walkDiscardedChildNodes(node, skipKeyedNodes) {\n            if (node.nodeType === ELEMENT_NODE) {\n                var curChild = node.firstChild;\n                while (curChild) {\n\n                    var key = undefined;\n\n                    if (skipKeyedNodes && (key = getNodeKey(curChild))) {\n                        // If we are skipping keyed nodes then we add the key\n                        // to a list so that it can be handled at the very end.\n                        addKeyedRemoval(key);\n                    } else {\n                        // Only report the node as discarded if it is not keyed. We do this because\n                        // at the end we loop through all keyed elements that were unmatched\n                        // and then discard them in one final pass.\n                        onNodeDiscarded(curChild);\n                        if (curChild.firstChild) {\n                            walkDiscardedChildNodes(curChild, skipKeyedNodes);\n                        }\n                    }\n\n                    curChild = curChild.nextSibling;\n                }\n            }\n        }\n\n        /**\n         * Removes a DOM node out of the original DOM\n         *\n         * @param  {Node} node The node to remove\n         * @param  {Node} parentNode The nodes parent\n         * @param  {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.\n         * @return {undefined}\n         */\n        function removeNode(node, parentNode, skipKeyedNodes) {\n            if (onBeforeNodeDiscarded(node) === false) {\n                return;\n            }\n\n            if (parentNode) {\n                parentNode.removeChild(node);\n            }\n\n            onNodeDiscarded(node);\n            walkDiscardedChildNodes(node, skipKeyedNodes);\n        }\n\n        // // TreeWalker implementation is no faster, but keeping this around in case this changes in the future\n        // function indexTree(root) {\n        //     var treeWalker = document.createTreeWalker(\n        //         root,\n        //         NodeFilter.SHOW_ELEMENT);\n        //\n        //     var el;\n        //     while((el = treeWalker.nextNode())) {\n        //         var key = getNodeKey(el);\n        //         if (key) {\n        //             fromNodesLookup[key] = el;\n        //         }\n        //     }\n        // }\n\n        // // NodeIterator implementation is no faster, but keeping this around in case this changes in the future\n        //\n        // function indexTree(node) {\n        //     var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT);\n        //     var el;\n        //     while((el = nodeIterator.nextNode())) {\n        //         var key = getNodeKey(el);\n        //         if (key) {\n        //             fromNodesLookup[key] = el;\n        //         }\n        //     }\n        // }\n\n        function indexTree(node) {\n            if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n                var curChild = node.firstChild;\n                while (curChild) {\n                    var key = getNodeKey(curChild);\n                    if (key) {\n                        fromNodesLookup[key] = curChild;\n                    }\n\n                    // Walk recursively\n                    indexTree(curChild);\n\n                    curChild = curChild.nextSibling;\n                }\n            }\n        }\n\n        indexTree(fromNode);\n\n        function handleNodeAdded(el) {\n            onNodeAdded(el);\n\n            var curChild = el.firstChild;\n            while (curChild) {\n                var nextSibling = curChild.nextSibling;\n\n                var key = getNodeKey(curChild);\n                if (key) {\n                    var unmatchedFromEl = fromNodesLookup[key];\n                    // if we find a duplicate #id node in cache, replace `el` with cache value\n                    // and morph it to the child node.\n                    if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {\n                        curChild.parentNode.replaceChild(unmatchedFromEl, curChild);\n                        morphEl(unmatchedFromEl, curChild);\n                    } else {\n                      handleNodeAdded(curChild);\n                    }\n                } else {\n                  // recursively call for curChild and it's children to see if we find something in\n                  // fromNodesLookup\n                  handleNodeAdded(curChild);\n                }\n\n                curChild = nextSibling;\n            }\n        }\n\n        function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {\n            // We have processed all of the \"to nodes\". If curFromNodeChild is\n            // non-null then we still have some from nodes left over that need\n            // to be removed\n            while (curFromNodeChild) {\n                var fromNextSibling = curFromNodeChild.nextSibling;\n                if ((curFromNodeKey = getNodeKey(curFromNodeChild))) {\n                    // Since the node is keyed it might be matched up later so we defer\n                    // the actual removal to later\n                    addKeyedRemoval(curFromNodeKey);\n                } else {\n                    // NOTE: we skip nested keyed nodes from being removed since there is\n                    //       still a chance they will be matched up later\n                    removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n                }\n                curFromNodeChild = fromNextSibling;\n            }\n        }\n\n        function morphEl(fromEl, toEl, childrenOnly) {\n            var toElKey = getNodeKey(toEl);\n\n            if (toElKey) {\n                // If an element with an ID is being morphed then it will be in the final\n                // DOM so clear it out of the saved elements collection\n                delete fromNodesLookup[toElKey];\n            }\n\n            if (!childrenOnly) {\n                // optional\n                if (onBeforeElUpdated(fromEl, toEl) === false) {\n                    return;\n                }\n\n                // update attributes on original DOM element first\n                morphAttrs(fromEl, toEl);\n                // optional\n                onElUpdated(fromEl);\n\n                if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {\n                    return;\n                }\n            }\n\n            if (fromEl.nodeName !== 'TEXTAREA') {\n              morphChildren(fromEl, toEl);\n            } else {\n              specialElHandlers.TEXTAREA(fromEl, toEl);\n            }\n        }\n\n        function morphChildren(fromEl, toEl) {\n            var curToNodeChild = toEl.firstChild;\n            var curFromNodeChild = fromEl.firstChild;\n            var curToNodeKey;\n            var curFromNodeKey;\n\n            var fromNextSibling;\n            var toNextSibling;\n            var matchingFromEl;\n\n            // walk the children\n            outer: while (curToNodeChild) {\n                toNextSibling = curToNodeChild.nextSibling;\n                curToNodeKey = getNodeKey(curToNodeChild);\n\n                // walk the fromNode children all the way through\n                while (curFromNodeChild) {\n                    fromNextSibling = curFromNodeChild.nextSibling;\n\n                    if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {\n                        curToNodeChild = toNextSibling;\n                        curFromNodeChild = fromNextSibling;\n                        continue outer;\n                    }\n\n                    curFromNodeKey = getNodeKey(curFromNodeChild);\n\n                    var curFromNodeType = curFromNodeChild.nodeType;\n\n                    // this means if the curFromNodeChild doesnt have a match with the curToNodeChild\n                    var isCompatible = undefined;\n\n                    if (curFromNodeType === curToNodeChild.nodeType) {\n                        if (curFromNodeType === ELEMENT_NODE) {\n                            // Both nodes being compared are Element nodes\n\n                            if (curToNodeKey) {\n                                // The target node has a key so we want to match it up with the correct element\n                                // in the original DOM tree\n                                if (curToNodeKey !== curFromNodeKey) {\n                                    // The current element in the original DOM tree does not have a matching key so\n                                    // let's check our lookup to see if there is a matching element in the original\n                                    // DOM tree\n                                    if ((matchingFromEl = fromNodesLookup[curToNodeKey])) {\n                                        if (fromNextSibling === matchingFromEl) {\n                                            // Special case for single element removals. To avoid removing the original\n                                            // DOM node out of the tree (since that can break CSS transitions, etc.),\n                                            // we will instead discard the current node and wait until the next\n                                            // iteration to properly match up the keyed target element with its matching\n                                            // element in the original tree\n                                            isCompatible = false;\n                                        } else {\n                                            // We found a matching keyed element somewhere in the original DOM tree.\n                                            // Let's move the original DOM node into the current position and morph\n                                            // it.\n\n                                            // NOTE: We use insertBefore instead of replaceChild because we want to go through\n                                            // the `removeNode()` function for the node that is being discarded so that\n                                            // all lifecycle hooks are correctly invoked\n                                            fromEl.insertBefore(matchingFromEl, curFromNodeChild);\n\n                                            // fromNextSibling = curFromNodeChild.nextSibling;\n\n                                            if (curFromNodeKey) {\n                                                // Since the node is keyed it might be matched up later so we defer\n                                                // the actual removal to later\n                                                addKeyedRemoval(curFromNodeKey);\n                                            } else {\n                                                // NOTE: we skip nested keyed nodes from being removed since there is\n                                                //       still a chance they will be matched up later\n                                                removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n                                            }\n\n                                            curFromNodeChild = matchingFromEl;\n                                        }\n                                    } else {\n                                        // The nodes are not compatible since the \"to\" node has a key and there\n                                        // is no matching keyed node in the source tree\n                                        isCompatible = false;\n                                    }\n                                }\n                            } else if (curFromNodeKey) {\n                                // The original has a key\n                                isCompatible = false;\n                            }\n\n                            isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);\n                            if (isCompatible) {\n                                // We found compatible DOM elements so transform\n                                // the current \"from\" node to match the current\n                                // target DOM node.\n                                // MORPH\n                                morphEl(curFromNodeChild, curToNodeChild);\n                            }\n\n                        } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {\n                            // Both nodes being compared are Text or Comment nodes\n                            isCompatible = true;\n                            // Simply update nodeValue on the original node to\n                            // change the text value\n                            if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {\n                                curFromNodeChild.nodeValue = curToNodeChild.nodeValue;\n                            }\n\n                        }\n                    }\n\n                    if (isCompatible) {\n                        // Advance both the \"to\" child and the \"from\" child since we found a match\n                        // Nothing else to do as we already recursively called morphChildren above\n                        curToNodeChild = toNextSibling;\n                        curFromNodeChild = fromNextSibling;\n                        continue outer;\n                    }\n\n                    // No compatible match so remove the old node from the DOM and continue trying to find a\n                    // match in the original DOM. However, we only do this if the from node is not keyed\n                    // since it is possible that a keyed node might match up with a node somewhere else in the\n                    // target tree and we don't want to discard it just yet since it still might find a\n                    // home in the final DOM tree. After everything is done we will remove any keyed nodes\n                    // that didn't find a home\n                    if (curFromNodeKey) {\n                        // Since the node is keyed it might be matched up later so we defer\n                        // the actual removal to later\n                        addKeyedRemoval(curFromNodeKey);\n                    } else {\n                        // NOTE: we skip nested keyed nodes from being removed since there is\n                        //       still a chance they will be matched up later\n                        removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n                    }\n\n                    curFromNodeChild = fromNextSibling;\n                } // END: while(curFromNodeChild) {}\n\n                // If we got this far then we did not find a candidate match for\n                // our \"to node\" and we exhausted all of the children \"from\"\n                // nodes. Therefore, we will just append the current \"to\" node\n                // to the end\n                if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {\n                    fromEl.appendChild(matchingFromEl);\n                    // MORPH\n                    morphEl(matchingFromEl, curToNodeChild);\n                } else {\n                    var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);\n                    if (onBeforeNodeAddedResult !== false) {\n                        if (onBeforeNodeAddedResult) {\n                            curToNodeChild = onBeforeNodeAddedResult;\n                        }\n\n                        if (curToNodeChild.actualize) {\n                            curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);\n                        }\n                        fromEl.appendChild(curToNodeChild);\n                        handleNodeAdded(curToNodeChild);\n                    }\n                }\n\n                curToNodeChild = toNextSibling;\n                curFromNodeChild = fromNextSibling;\n            }\n\n            cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);\n\n            var specialElHandler = specialElHandlers[fromEl.nodeName];\n            if (specialElHandler) {\n                specialElHandler(fromEl, toEl);\n            }\n        } // END: morphChildren(...)\n\n        var morphedNode = fromNode;\n        var morphedNodeType = morphedNode.nodeType;\n        var toNodeType = toNode.nodeType;\n\n        if (!childrenOnly) {\n            // Handle the case where we are given two DOM nodes that are not\n            // compatible (e.g. <div> --> <span> or <div> --> TEXT)\n            if (morphedNodeType === ELEMENT_NODE) {\n                if (toNodeType === ELEMENT_NODE) {\n                    if (!compareNodeNames(fromNode, toNode)) {\n                        onNodeDiscarded(fromNode);\n                        morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));\n                    }\n                } else {\n                    // Going from an element node to a text node\n                    morphedNode = toNode;\n                }\n            } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) { // Text or comment node\n                if (toNodeType === morphedNodeType) {\n                    if (morphedNode.nodeValue !== toNode.nodeValue) {\n                        morphedNode.nodeValue = toNode.nodeValue;\n                    }\n\n                    return morphedNode;\n                } else {\n                    // Text node to something else\n                    morphedNode = toNode;\n                }\n            }\n        }\n\n        if (morphedNode === toNode) {\n            // The \"to node\" was not compatible with the \"from node\" so we had to\n            // toss out the \"from node\" and use the \"to node\"\n            onNodeDiscarded(fromNode);\n        } else {\n            if (toNode.isSameNode && toNode.isSameNode(morphedNode)) {\n                return;\n            }\n\n            morphEl(morphedNode, toNode, childrenOnly);\n\n            // We now need to loop over any keyed nodes that might need to be\n            // removed. We only do the removal if we know that the keyed node\n            // never found a match. When a keyed node is matched up we remove\n            // it out of fromNodesLookup and we use fromNodesLookup to determine\n            // if a keyed node has been matched up or not\n            if (keyedRemovalList) {\n                for (var i=0, len=keyedRemovalList.length; i<len; i++) {\n                    var elToRemove = fromNodesLookup[keyedRemovalList[i]];\n                    if (elToRemove) {\n                        removeNode(elToRemove, elToRemove.parentNode, false);\n                    }\n                }\n            }\n        }\n\n        if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {\n            if (morphedNode.actualize) {\n                morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);\n            }\n            // If we had to swap out the from node with a new node because the old\n            // node was not compatible with the target node then we need to\n            // replace the old DOM node in the original DOM tree. This is only\n            // possible if the original DOM node was part of a DOM tree which\n            // we know is the case if it has a parent node.\n            fromNode.parentNode.replaceChild(morphedNode, fromNode);\n        }\n\n        return morphedNode;\n    };\n}\n\nvar morphdom = morphdomFactory(morphAttrs);\n\nexport default morphdom;\n", "import morphdom from \"morphdom\";\n\nvar name = \"cable_ready\";\n\nvar version = \"5.0.6\";\n\nvar description = \"CableReady helps you create great real-time user experiences by making it simple to trigger client-side DOM changes from server-side Ruby.\";\n\nvar keywords = [ \"ruby\", \"rails\", \"websockets\", \"actioncable\", \"cable\", \"ssr\", \"stimulus_reflex\", \"client-side\", \"dom\" ];\n\nvar homepage = \"https://cableready.stimulusreflex.com\";\n\nvar bugs = \"https://github.com/stimulusreflex/cable_ready/issues\";\n\nvar repository = \"https://github.com/stimulusreflex/cable_ready\";\n\nvar license = \"MIT\";\n\nvar author = \"Nathan Hopkins <natehop@gmail.com>\";\n\nvar contributors = [ \"Andrew Mason <andrewmcodes@protonmail.com>\", \"Julian Rubisch <julian@julianrubisch.at>\", \"Marco Roth <marco.roth@intergga.ch>\", \"Nathan Hopkins <natehop@gmail.com>\" ];\n\nvar main = \"./dist/cable_ready.js\";\n\nvar module = \"./dist/cable_ready.js\";\n\nvar browser = \"./dist/cable_ready.js\";\n\nvar unpkg = \"./dist/cable_ready.umd.js\";\n\nvar umd = \"./dist/cable_ready.umd.js\";\n\nvar files = [ \"dist/*\", \"javascript/*\" ];\n\nvar scripts = {\n  lint: \"yarn run format --check\",\n  format: \"yarn run prettier-standard ./javascript/**/*.js rollup.config.mjs\",\n  build: \"yarn rollup -c\",\n  watch: \"yarn rollup -wc\",\n  test: \"web-test-runner javascript/test/**/*.test.js\",\n  \"docs:dev\": \"vitepress dev docs\",\n  \"docs:build\": \"vitepress build docs && cp ./docs/_redirects ./docs/.vitepress/dist\",\n  \"docs:preview\": \"vitepress preview docs\"\n};\n\nvar dependencies = {\n  morphdom: \"2.6.1\"\n};\n\nvar devDependencies = {\n  \"@open-wc/testing\": \"^4.0.0\",\n  \"@rollup/plugin-json\": \"^6.1.0\",\n  \"@rollup/plugin-node-resolve\": \"^15.3.0\",\n  \"@rollup/plugin-terser\": \"^0.4.4\",\n  \"@web/dev-server-esbuild\": \"^1.0.3\",\n  \"@web/dev-server-rollup\": \"^0.6.4\",\n  \"@web/test-runner\": \"^0.19.0\",\n  \"prettier-standard\": \"^16.4.1\",\n  rollup: \"^4.25.0\",\n  sinon: \"^19.0.2\",\n  vite: \"^5.4.10\",\n  vitepress: \"^1.5.0\",\n  \"vitepress-plugin-search\": \"^1.0.4-alpha.22\"\n};\n\nvar packageInfo = {\n  name: name,\n  version: version,\n  description: description,\n  keywords: keywords,\n  homepage: homepage,\n  bugs: bugs,\n  repository: repository,\n  license: license,\n  author: author,\n  contributors: contributors,\n  main: main,\n  module: module,\n  browser: browser,\n  import: \"./dist/cable_ready.js\",\n  unpkg: unpkg,\n  umd: umd,\n  files: files,\n  scripts: scripts,\n  dependencies: dependencies,\n  devDependencies: devDependencies\n};\n\nconst inputTags = {\n  INPUT: true,\n  TEXTAREA: true,\n  SELECT: true\n};\n\nconst mutableTags = {\n  INPUT: true,\n  TEXTAREA: true,\n  OPTION: true\n};\n\nconst textInputTypes = {\n  \"datetime-local\": true,\n  \"select-multiple\": true,\n  \"select-one\": true,\n  color: true,\n  date: true,\n  datetime: true,\n  email: true,\n  month: true,\n  number: true,\n  password: true,\n  range: true,\n  search: true,\n  tel: true,\n  text: true,\n  textarea: true,\n  time: true,\n  url: true,\n  week: true\n};\n\nlet activeElement;\n\nvar ActiveElement = {\n  get element() {\n    return activeElement;\n  },\n  set(element) {\n    activeElement = element;\n  }\n};\n\n// Indicates if the passed element is considered a text input.\n\nconst isTextInput = element => inputTags[element.tagName] && textInputTypes[element.type];\n\n// Assigns focus to the appropriate element... preferring the explicitly passed selector\n\n// * selector - a CSS selector for the element that should have focus\n\nconst assignFocus = selector => {\n  const element = selector && selector.nodeType === Node.ELEMENT_NODE ? selector : document.querySelector(selector);\n  const focusElement = element || ActiveElement.element;\n  if (focusElement && focusElement.focus) focusElement.focus();\n};\n\n// Dispatches an event on the passed element\n\n// * element - the element\n// * name - the name of the event\n// * detail - the event detail\n\nconst dispatch = (element, name, detail = {}) => {\n  const init = {\n    bubbles: true,\n    cancelable: true,\n    detail: detail\n  };\n  const event = new CustomEvent(name, init);\n  element.dispatchEvent(event);\n  if (window.jQuery) window.jQuery(element).trigger(name, detail);\n};\n\n// Accepts an xPath query and returns the element found at that position in the DOM\n\nconst xpathToElement = xpath => document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n\n// Accepts an xPath query and returns all matching elements in the DOM\n\nconst xpathToElementArray = (xpath, reverse = false) => {\n  const snapshotList = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\n  const snapshots = [];\n  for (let i = 0; i < snapshotList.snapshotLength; i++) {\n    snapshots.push(snapshotList.snapshotItem(i));\n  }\n  return reverse ? snapshots.reverse() : snapshots;\n};\n\n// Return an array with the class names to be used\n\n// * names - could be a string or an array of strings for multiple classes.\n\nconst getClassNames = names => Array.from(names).flat()\n// Perform operation for either the first or all of the elements returned by CSS selector\n\n// * operation - the instruction payload from perform\n// * callback - the operation function to run for each element\n\n;\n\nconst processElements = (operation, callback) => {\n  Array.from(operation.selectAll ? operation.element : [ operation.element ]).forEach(callback);\n};\n\n// convert string to kebab-case\n// most other implementations (lodash) are focused on camelCase to kebab-case\n// instead, this uses word token boundaries to produce readable URL slugs and keys\n// this implementation will not support Emoji or other non-ASCII characters\n\nconst kebabize = createCompounder((function(result, word, index) {\n  return result + (index ? \"-\" : \"\") + word.toLowerCase();\n}));\n\nfunction createCompounder(callback) {\n  return function(str) {\n    return words(str).reduce(callback, \"\");\n  };\n}\n\nconst words = str => {\n  str = str == null ? \"\" : str;\n  return str.match(/([A-Z]{2,}|[0-9]+|[A-Z]?[a-z]+|[A-Z])/g) || [];\n};\n\n// Provide a standardized pipeline of checks and modifications to all operations based on provided options\n// Currently skips execution if cancelled and implements an optional delay\n\nconst operate = (operation, callback) => {\n  if (!operation.cancel) {\n    operation.delay ? setTimeout(callback, operation.delay) : callback();\n    return true;\n  }\n  return false;\n};\n\n// Dispatch life-cycle events with standardized naming\nconst before = (target, operation) => dispatch(target, `cable-ready:before-${kebabize(operation.operation)}`, operation);\n\nconst after = (target, operation) => dispatch(target, `cable-ready:after-${kebabize(operation.operation)}`, operation);\n\nfunction debounce(fn, delay = 250) {\n  let timer;\n  return (...args) => {\n    const callback = () => fn.apply(this, args);\n    if (timer) clearTimeout(timer);\n    timer = setTimeout(callback, delay);\n  };\n}\n\nfunction handleErrors(response) {\n  if (!response.ok) throw Error(response.statusText);\n  return response;\n}\n\nfunction safeScalar(val) {\n  if (val !== undefined && ![ \"string\", \"number\", \"boolean\" ].includes(typeof val)) console.warn(`Operation expects a string, number or boolean, but got ${val} (${typeof val})`);\n  return val != null ? val : \"\";\n}\n\nfunction safeString(str) {\n  if (str !== undefined && typeof str !== \"string\") console.warn(`Operation expects a string, but got ${str} (${typeof str})`);\n  return str != null ? String(str) : \"\";\n}\n\nfunction safeArray(arr) {\n  if (arr !== undefined && !Array.isArray(arr)) console.warn(`Operation expects an array, but got ${arr} (${typeof arr})`);\n  return arr != null ? Array.from(arr) : [];\n}\n\nfunction safeObject(obj) {\n  if (obj !== undefined && typeof obj !== \"object\") console.warn(`Operation expects an object, but got ${obj} (${typeof obj})`);\n  return obj != null ? Object(obj) : {};\n}\n\nfunction safeStringOrArray(elem) {\n  if (elem !== undefined && !Array.isArray(elem) && typeof elem !== \"string\") console.warn(`Operation expects an Array or a String, but got ${elem} (${typeof elem})`);\n  return elem == null ? \"\" : Array.isArray(elem) ? Array.from(elem) : String(elem);\n}\n\nfunction fragmentToString(fragment) {\n  return (new XMLSerializer).serializeToString(fragment);\n}\n\n// A proxy method to wrap a fetch call in error handling\n\n// * url - the URL to fetch\n// * additionalHeaders - an object of additional headers passed to fetch\n\nasync function graciouslyFetch(url, additionalHeaders) {\n  try {\n    const response = await fetch(url, {\n      headers: {\n        \"X-REQUESTED-WITH\": \"XmlHttpRequest\",\n        ...additionalHeaders\n      }\n    });\n    if (response == undefined) return;\n    handleErrors(response);\n    return response;\n  } catch (e) {\n    console.error(`Could not fetch ${url}`);\n  }\n}\n\nclass BoundedQueue {\n  constructor(maxSize) {\n    this.maxSize = maxSize;\n    this.queue = [];\n  }\n  push(item) {\n    if (this.isFull()) {\n      // Remove the oldest item to make space for the new one\n      this.shift();\n    }\n    this.queue.push(item);\n  }\n  shift() {\n    return this.queue.shift();\n  }\n  isFull() {\n    return this.queue.length === this.maxSize;\n  }\n}\n\nvar utils =  Object.freeze({\n  __proto__: null,\n  BoundedQueue: BoundedQueue,\n  after: after,\n  assignFocus: assignFocus,\n  before: before,\n  debounce: debounce,\n  dispatch: dispatch,\n  fragmentToString: fragmentToString,\n  getClassNames: getClassNames,\n  graciouslyFetch: graciouslyFetch,\n  handleErrors: handleErrors,\n  isTextInput: isTextInput,\n  kebabize: kebabize,\n  operate: operate,\n  processElements: processElements,\n  safeArray: safeArray,\n  safeObject: safeObject,\n  safeScalar: safeScalar,\n  safeString: safeString,\n  safeStringOrArray: safeStringOrArray,\n  xpathToElement: xpathToElement,\n  xpathToElementArray: xpathToElementArray\n});\n\n// Indicates whether or not we should morph an element via onBeforeElUpdated callback\n// SEE: https://github.com/patrick-steele-idem/morphdom#morphdomfromnode-tonode-options--node\n\nconst shouldMorph = operation => (fromEl, toEl) => !shouldMorphCallbacks.map((callback => typeof callback === \"function\" ? callback(operation, fromEl, toEl) : true)).includes(false)\n// Execute any pluggable functions that modify elements after morphing via onElUpdated callback\n\n;\n\nconst didMorph = operation => el => {\n  didMorphCallbacks.forEach((callback => {\n    if (typeof callback === \"function\") callback(operation, el);\n  }));\n};\n\nconst verifyNotMutable = (detail, fromEl, toEl) => {\n  // Skip nodes that are equal:\n  // https://github.com/patrick-steele-idem/morphdom#can-i-make-morphdom-blaze-through-the-dom-tree-even-faster-yes\n  if (!mutableTags[fromEl.tagName] && fromEl.isEqualNode(toEl)) return false;\n  return true;\n};\n\nconst verifyNotContentEditable = (detail, fromEl, toEl) => {\n  if (fromEl === ActiveElement.element && fromEl.isContentEditable) return false;\n  return true;\n};\n\nconst verifyNotPermanent = (detail, fromEl, toEl) => {\n  const {permanentAttributeName: permanentAttributeName} = detail;\n  if (!permanentAttributeName) return true;\n  const permanent = fromEl.closest(`[${permanentAttributeName}]`);\n  // only morph attributes on the active non-permanent text input\n    if (!permanent && fromEl === ActiveElement.element && isTextInput(fromEl)) {\n    const ignore = {\n      value: true\n    };\n    Array.from(toEl.attributes).forEach((attribute => {\n      if (!ignore[attribute.name]) fromEl.setAttribute(attribute.name, attribute.value);\n    }));\n    return false;\n  }\n  return !permanent;\n};\n\nconst shouldMorphCallbacks = [ verifyNotMutable, verifyNotPermanent, verifyNotContentEditable ];\n\nconst didMorphCallbacks = [];\n\nvar morph_callbacks =  Object.freeze({\n  __proto__: null,\n  didMorph: didMorph,\n  didMorphCallbacks: didMorphCallbacks,\n  shouldMorph: shouldMorph,\n  shouldMorphCallbacks: shouldMorphCallbacks,\n  verifyNotContentEditable: verifyNotContentEditable,\n  verifyNotMutable: verifyNotMutable,\n  verifyNotPermanent: verifyNotPermanent\n});\n\nvar Operations = {\n  // DOM Mutations\n  append: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {html: html, focusSelector: focusSelector} = operation;\n        element.insertAdjacentHTML(\"beforeend\", safeScalar(html));\n        assignFocus(focusSelector);\n      }));\n      after(element, operation);\n    }));\n  },\n  graft: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {parent: parent, focusSelector: focusSelector} = operation;\n        const parentElement = document.querySelector(parent);\n        if (parentElement) {\n          parentElement.appendChild(element);\n          assignFocus(focusSelector);\n        }\n      }));\n      after(element, operation);\n    }));\n  },\n  innerHtml: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {html: html, focusSelector: focusSelector} = operation;\n        element.innerHTML = safeScalar(html);\n        assignFocus(focusSelector);\n      }));\n      after(element, operation);\n    }));\n  },\n  insertAdjacentHtml: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {html: html, position: position, focusSelector: focusSelector} = operation;\n        element.insertAdjacentHTML(position || \"beforeend\", safeScalar(html));\n        assignFocus(focusSelector);\n      }));\n      after(element, operation);\n    }));\n  },\n  insertAdjacentText: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {text: text, position: position, focusSelector: focusSelector} = operation;\n        element.insertAdjacentText(position || \"beforeend\", safeScalar(text));\n        assignFocus(focusSelector);\n      }));\n      after(element, operation);\n    }));\n  },\n  outerHtml: operation => {\n    processElements(operation, (element => {\n      const parent = element.parentElement;\n      const idx = parent && Array.from(parent.children).indexOf(element);\n      before(element, operation);\n      operate(operation, (() => {\n        const {html: html, focusSelector: focusSelector} = operation;\n        element.outerHTML = safeScalar(html);\n        assignFocus(focusSelector);\n      }));\n      after(parent ? parent.children[idx] : document.documentElement, operation);\n    }));\n  },\n  prepend: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {html: html, focusSelector: focusSelector} = operation;\n        element.insertAdjacentHTML(\"afterbegin\", safeScalar(html));\n        assignFocus(focusSelector);\n      }));\n      after(element, operation);\n    }));\n  },\n  remove: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {focusSelector: focusSelector} = operation;\n        element.remove();\n        assignFocus(focusSelector);\n      }));\n      after(document, operation);\n    }));\n  },\n  replace: operation => {\n    processElements(operation, (element => {\n      const parent = element.parentElement;\n      const idx = parent && Array.from(parent.children).indexOf(element);\n      before(element, operation);\n      operate(operation, (() => {\n        const {html: html, focusSelector: focusSelector} = operation;\n        element.outerHTML = safeScalar(html);\n        assignFocus(focusSelector);\n      }));\n      after(parent ? parent.children[idx] : document.documentElement, operation);\n    }));\n  },\n  textContent: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {text: text, focusSelector: focusSelector} = operation;\n        element.textContent = safeScalar(text);\n        assignFocus(focusSelector);\n      }));\n      after(element, operation);\n    }));\n  },\n  // Element Property Mutations\n  addCssClass: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {name: name} = operation;\n        element.classList.add(...getClassNames([ safeStringOrArray(name) ]));\n      }));\n      after(element, operation);\n    }));\n  },\n  removeAttribute: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {name: name} = operation;\n        element.removeAttribute(safeString(name));\n      }));\n      after(element, operation);\n    }));\n  },\n  removeCssClass: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {name: name} = operation;\n        element.classList.remove(...getClassNames([ safeStringOrArray(name) ]));\n        if (element.classList.length === 0) element.removeAttribute(\"class\");\n      }));\n      after(element, operation);\n    }));\n  },\n  setAttribute: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {name: name, value: value} = operation;\n        element.setAttribute(safeString(name), safeScalar(value));\n      }));\n      after(element, operation);\n    }));\n  },\n  setDatasetProperty: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {name: name, value: value} = operation;\n        element.dataset[safeString(name)] = safeScalar(value);\n      }));\n      after(element, operation);\n    }));\n  },\n  setProperty: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {name: name, value: value} = operation;\n        if (name in element) element[safeString(name)] = safeScalar(value);\n      }));\n      after(element, operation);\n    }));\n  },\n  setStyle: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {name: name, value: value} = operation;\n        element.style[safeString(name)] = safeScalar(value);\n      }));\n      after(element, operation);\n    }));\n  },\n  setStyles: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {styles: styles} = operation;\n        for (let [name, value] of Object.entries(styles)) element.style[safeString(name)] = safeScalar(value);\n      }));\n      after(element, operation);\n    }));\n  },\n  setValue: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {value: value} = operation;\n        element.value = safeScalar(value);\n      }));\n      after(element, operation);\n    }));\n  },\n  // DOM Events and Meta-Operations\n  dispatchEvent: operation => {\n    processElements(operation, (element => {\n      before(element, operation);\n      operate(operation, (() => {\n        const {name: name, detail: detail} = operation;\n        dispatch(element, safeString(name), safeObject(detail));\n      }));\n      after(element, operation);\n    }));\n  },\n  setMeta: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {name: name, content: content} = operation;\n      let meta = document.head.querySelector(`meta[name='${name}']`);\n      if (!meta) {\n        meta = document.createElement(\"meta\");\n        meta.name = safeString(name);\n        document.head.appendChild(meta);\n      }\n      meta.content = safeScalar(content);\n    }));\n    after(document, operation);\n  },\n  setTitle: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {title: title} = operation;\n      document.title = safeScalar(title);\n    }));\n    after(document, operation);\n  },\n  // Browser Manipulations\n  clearStorage: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {type: type} = operation;\n      const storage = type === \"session\" ? sessionStorage : localStorage;\n      storage.clear();\n    }));\n    after(document, operation);\n  },\n  go: operation => {\n    before(window, operation);\n    operate(operation, (() => {\n      const {delta: delta} = operation;\n      history.go(delta);\n    }));\n    after(window, operation);\n  },\n  pushState: operation => {\n    before(window, operation);\n    operate(operation, (() => {\n      const {state: state, title: title, url: url} = operation;\n      history.pushState(safeObject(state), safeString(title), safeString(url));\n    }));\n    after(window, operation);\n  },\n  redirectTo: operation => {\n    before(window, operation);\n    operate(operation, (() => {\n      let {url: url, action: action, turbo: turbo} = operation;\n      action = action || \"advance\";\n      url = safeString(url);\n      if (turbo === undefined) turbo = true;\n      if (turbo) {\n        if (window.Turbo) window.Turbo.visit(url, {\n          action: action\n        });\n        if (window.Turbolinks) window.Turbolinks.visit(url, {\n          action: action\n        });\n        if (!window.Turbo && !window.Turbolinks) window.location.href = url;\n      } else {\n        window.location.href = url;\n      }\n    }));\n    after(window, operation);\n  },\n  reload: operation => {\n    before(window, operation);\n    operate(operation, (() => {\n      window.location.reload();\n    }));\n    after(window, operation);\n  },\n  removeStorageItem: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {key: key, type: type} = operation;\n      const storage = type === \"session\" ? sessionStorage : localStorage;\n      storage.removeItem(safeString(key));\n    }));\n    after(document, operation);\n  },\n  replaceState: operation => {\n    before(window, operation);\n    operate(operation, (() => {\n      const {state: state, title: title, url: url} = operation;\n      history.replaceState(safeObject(state), safeString(title), safeString(url));\n    }));\n    after(window, operation);\n  },\n  scrollIntoView: operation => {\n    const {element: element} = operation;\n    before(element, operation);\n    operate(operation, (() => {\n      element.scrollIntoView(operation);\n    }));\n    after(element, operation);\n  },\n  setCookie: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {cookie: cookie} = operation;\n      document.cookie = safeScalar(cookie);\n    }));\n    after(document, operation);\n  },\n  setFocus: operation => {\n    const {element: element} = operation;\n    before(element, operation);\n    operate(operation, (() => {\n      assignFocus(element);\n    }));\n    after(element, operation);\n  },\n  setStorageItem: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {key: key, value: value, type: type} = operation;\n      const storage = type === \"session\" ? sessionStorage : localStorage;\n      storage.setItem(safeString(key), safeScalar(value));\n    }));\n    after(document, operation);\n  },\n  // Notifications\n  consoleLog: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {message: message, level: level} = operation;\n      level && [ \"warn\", \"info\", \"error\" ].includes(level) ? console[level](message) : console.log(message);\n    }));\n    after(document, operation);\n  },\n  consoleTable: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {data: data, columns: columns} = operation;\n      console.table(data, safeArray(columns));\n    }));\n    after(document, operation);\n  },\n  notification: operation => {\n    before(document, operation);\n    operate(operation, (() => {\n      const {title: title, options: options} = operation;\n      Notification.requestPermission().then((result => {\n        operation.permission = result;\n        if (result === \"granted\") new Notification(safeString(title), safeObject(options));\n      }));\n    }));\n    after(document, operation);\n  },\n  // Morph operations\n  morph: operation => {\n    processElements(operation, (element => {\n      const {html: html} = operation;\n      const template = document.createElement(\"template\");\n      template.innerHTML = String(safeScalar(html)).trim();\n      operation.content = template.content;\n      const parent = element.parentElement;\n      const idx = parent && Array.from(parent.children).indexOf(element);\n      before(element, operation);\n      operate(operation, (() => {\n        const {childrenOnly: childrenOnly, focusSelector: focusSelector} = operation;\n        morphdom(element, childrenOnly ? template.content : template.innerHTML, {\n          childrenOnly: !!childrenOnly,\n          onBeforeElUpdated: shouldMorph(operation),\n          onElUpdated: didMorph(operation)\n        });\n        assignFocus(focusSelector);\n      }));\n      after(parent ? parent.children[idx] : document.documentElement, operation);\n    }));\n  }\n};\n\nlet operations = Operations;\n\nconst add = newOperations => {\n  operations = {\n    ...operations,\n    ...newOperations\n  };\n};\n\nconst addOperations = operations => {\n  add(operations);\n};\n\nconst addOperation = (name, operation) => {\n  const operations = {};\n  operations[name] = operation;\n  add(operations);\n};\n\nvar OperationStore = {\n  get all() {\n    return operations;\n  }\n};\n\nlet missingElement = \"warn\";\n\nvar MissingElement = {\n  get behavior() {\n    return missingElement;\n  },\n  set(value) {\n    if ([ \"warn\", \"ignore\", \"event\", \"exception\" ].includes(value)) missingElement = value; else console.warn(\"Invalid 'onMissingElement' option. Defaulting to 'warn'.\");\n  }\n};\n\nconst perform = (operations, options = {\n  onMissingElement: MissingElement.behavior\n}) => {\n  const batches = {};\n  operations.forEach((operation => {\n    if (!!operation.batch) batches[operation.batch] = batches[operation.batch] ? ++batches[operation.batch] : 1;\n  }));\n  operations.forEach((operation => {\n    const name = operation.operation;\n    try {\n      if (operation.selector) {\n        if (operation.xpath) {\n          operation.element = operation.selectAll ? xpathToElementArray(operation.selector) : xpathToElement(operation.selector);\n        } else {\n          operation.element = operation.selectAll ? document.querySelectorAll(operation.selector) : document.querySelector(operation.selector);\n        }\n      } else {\n        operation.element = document;\n      }\n      if (operation.element || options.onMissingElement !== \"ignore\") {\n        ActiveElement.set(document.activeElement);\n        const cableReadyOperation = OperationStore.all[name];\n        if (cableReadyOperation) {\n          cableReadyOperation(operation);\n          if (!!operation.batch && --batches[operation.batch] === 0) dispatch(document, \"cable-ready:batch-complete\", {\n            batch: operation.batch\n          });\n        } else {\n          console.error(`CableReady couldn't find the \"${name}\" operation. Make sure you use the camelized form when calling an operation method.`);\n        }\n      }\n    } catch (e) {\n      if (operation.element) {\n        console.error(`CableReady detected an error in ${name || \"operation\"}: ${e.message}. If you need to support older browsers make sure you've included the corresponding polyfills. https://docs.stimulusreflex.com/setup#polyfills-for-ie11.`);\n        console.error(e);\n      } else {\n        const warning = `CableReady ${name || \"\"} operation failed due to missing DOM element for selector: '${operation.selector}'`;\n        switch (options.onMissingElement) {\n         case \"ignore\":\n          break;\n\n         case \"event\":\n          dispatch(document, \"cable-ready:missing-element\", {\n            warning: warning,\n            operation: operation\n          });\n          break;\n\n         case \"exception\":\n          throw warning;\n\n         default:\n          console.warn(warning);\n        }\n      }\n    }\n  }));\n};\n\nconst performAsync = (operations, options = {\n  onMissingElement: MissingElement.behavior\n}) => new Promise(((resolve, reject) => {\n  try {\n    resolve(perform(operations, options));\n  } catch (err) {\n    reject(err);\n  }\n}));\n\nclass SubscribingElement extends HTMLElement {\n  static get tagName() {\n    throw new Error(\"Implement the tagName() getter in the inheriting class\");\n  }\n  static define() {\n    if (!customElements.get(this.tagName)) {\n      customElements.define(this.tagName, this);\n    }\n  }\n  disconnectedCallback() {\n    if (this.channel) this.channel.unsubscribe();\n  }\n  createSubscription(consumer, channel, receivedCallback) {\n    this.channel = consumer.subscriptions.create({\n      channel: channel,\n      identifier: this.identifier\n    }, {\n      received: receivedCallback\n    });\n  }\n  get preview() {\n    return document.documentElement.hasAttribute(\"data-turbolinks-preview\") || document.documentElement.hasAttribute(\"data-turbo-preview\");\n  }\n  get identifier() {\n    return this.getAttribute(\"identifier\");\n  }\n}\n\nlet consumer;\n\nconst BACKOFF = [ 25, 50, 75, 100, 200, 250, 500, 800, 1e3, 2e3 ];\n\nconst wait = ms => new Promise((resolve => setTimeout(resolve, ms)));\n\nconst getConsumerWithRetry = async (retry = 0) => {\n  if (consumer) return consumer;\n  if (retry >= BACKOFF.length) {\n    throw new Error(\"Couldn't obtain a Action Cable consumer within 5s\");\n  }\n  await wait(BACKOFF[retry]);\n  return await getConsumerWithRetry(retry + 1);\n};\n\nvar CableConsumer = {\n  setConsumer(value) {\n    consumer = value;\n  },\n  get consumer() {\n    return consumer;\n  },\n  async getConsumer() {\n    return await getConsumerWithRetry();\n  }\n};\n\nclass StreamFromElement extends SubscribingElement {\n  static get tagName() {\n    return \"cable-ready-stream-from\";\n  }\n  async connectedCallback() {\n    if (this.preview) return;\n    const consumer = await CableConsumer.getConsumer();\n    if (consumer) {\n      this.createSubscription(consumer, \"CableReady::Stream\", this.performOperations.bind(this));\n    } else {\n      console.error(\"The `cable_ready_stream_from` helper cannot connect. You must initialize CableReady with an Action Cable consumer.\");\n    }\n  }\n  performOperations(data) {\n    if (data.cableReady) perform(data.operations, {\n      onMissingElement: this.onMissingElement\n    });\n  }\n  get onMissingElement() {\n    const value = this.getAttribute(\"missing\") || MissingElement.behavior;\n    // stream_from does not support raising exceptions on missing elements because there's no way to catch them\n        if ([ \"warn\", \"ignore\", \"event\" ].includes(value)) return value; else {\n      console.warn(\"Invalid 'missing' attribute. Defaulting to 'warn'.\");\n      return \"warn\";\n    }\n  }\n}\n\nlet debugging = false;\n\nvar Debug = {\n  get enabled() {\n    return debugging;\n  },\n  get disabled() {\n    return !debugging;\n  },\n  get value() {\n    return debugging;\n  },\n  set(value) {\n    debugging = !!value;\n  },\n  set debug(value) {\n    debugging = !!value;\n  }\n};\n\nconst request = (data, blocks) => {\n  if (Debug.disabled) return;\n  const message = `\u2191 Updatable request affecting ${blocks.length} element(s): `;\n  console.log(message, {\n    elements: blocks.map((b => b.element)),\n    identifiers: blocks.map((b => b.element.getAttribute(\"identifier\"))),\n    data: data\n  });\n  return message;\n};\n\nconst cancel = (timestamp, reason) => {\n  if (Debug.disabled) return;\n  const duration = new Date - timestamp;\n  const message = `\u274C Updatable request canceled after ${duration}ms: ${reason}`;\n  console.log(message);\n  return message;\n};\n\nconst response = (timestamp, element, urls) => {\n  if (Debug.disabled) return;\n  const duration = new Date - timestamp;\n  const message = `\u2193 Updatable response: All URLs fetched in ${duration}ms`;\n  console.log(message, {\n    element: element,\n    urls: urls\n  });\n  return message;\n};\n\nconst morphStart = (timestamp, element) => {\n  if (Debug.disabled) return;\n  const duration = new Date - timestamp;\n  const message = `\u21BB Updatable morph: starting after ${duration}ms`;\n  console.log(message, {\n    element: element\n  });\n  return message;\n};\n\nconst morphEnd = (timestamp, element) => {\n  if (Debug.disabled) return;\n  const duration = new Date - timestamp;\n  const message = `\u21BA Updatable morph: completed after ${duration}ms`;\n  console.log(message, {\n    element: element\n  });\n  return message;\n};\n\nvar Log = {\n  request: request,\n  cancel: cancel,\n  response: response,\n  morphStart: morphStart,\n  morphEnd: morphEnd\n};\n\nclass AppearanceObserver {\n  constructor(delegate, element = null) {\n    this.delegate = delegate;\n    this.element = element || delegate;\n    this.started = false;\n    this.intersecting = false;\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      this.observeVisibility();\n    }\n  }\n  stop() {\n    if (this.started) {\n      this.started = false;\n      this.intersectionObserver.unobserve(this.element);\n      this.unobserveVisibility();\n    }\n  }\n  observeVisibility=() => {\n    document.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n  };\n  unobserveVisibility=() => {\n    document.removeEventListener(\"visibilitychange\", this.handleVisibilityChange);\n  };\n  intersect=entries => {\n    entries.forEach((entry => {\n      if (entry.target === this.element) {\n        if (entry.isIntersecting && document.visibilityState === \"visible\") {\n          this.intersecting = true;\n          this.delegate.appearedInViewport();\n        } else {\n          this.intersecting = false;\n          this.delegate.disappearedFromViewport();\n        }\n      }\n    }));\n  };\n  handleVisibilityChange=event => {\n    if (document.visibilityState === \"visible\" && this.intersecting) {\n      this.delegate.appearedInViewport();\n    } else {\n      this.delegate.disappearedFromViewport();\n    }\n  };\n}\n\nconst template = `\\n<style>\\n  :host {\\n    display: block;\\n  }\\n</style>\\n<slot></slot>\\n`;\n\nclass UpdatesForElement extends SubscribingElement {\n  static get tagName() {\n    return \"cable-ready-updates-for\";\n  }\n  constructor() {\n    super();\n    const shadowRoot = this.attachShadow({\n      mode: \"open\"\n    });\n    shadowRoot.innerHTML = template;\n    this.triggerElementLog = new BoundedQueue(10);\n    this.targetElementLog = new BoundedQueue(10);\n    this.appearanceObserver = new AppearanceObserver(this);\n    this.visible = false;\n    this.didTransitionToVisible = false;\n  }\n  async connectedCallback() {\n    if (this.preview) return;\n    this.update = debounce(this.update.bind(this), this.debounce);\n    const consumer = await CableConsumer.getConsumer();\n    if (consumer) {\n      this.createSubscription(consumer, \"CableReady::Stream\", this.update);\n    } else {\n      console.error(\"The `cable_ready_updates_for` helper cannot connect. You must initialize CableReady with an Action Cable consumer.\");\n    }\n    if (this.observeAppearance) {\n      this.appearanceObserver.start();\n    }\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    if (this.observeAppearance) {\n      this.appearanceObserver.stop();\n    }\n  }\n  async update(data) {\n    this.lastUpdateTimestamp = new Date;\n    const blocks = Array.from(document.querySelectorAll(this.query), (element => new Block(element))).filter((block => block.shouldUpdate(data)));\n    this.triggerElementLog.push(`${(new Date).toLocaleString()}: ${Log.request(data, blocks)}`);\n    if (blocks.length === 0) {\n      this.triggerElementLog.push(`${(new Date).toLocaleString()}: ${Log.cancel(this.lastUpdateTimestamp, \"All elements filtered out\")}`);\n      return;\n    }\n    // first <cable-ready-updates-for> element in the DOM *at any given moment* updates all of the others\n    // if the element becomes visible though, we have to overrule and load it\n        if (blocks[0].element !== this && !this.didTransitionToVisible) {\n      this.triggerElementLog.push(`${(new Date).toLocaleString()}: ${Log.cancel(this.lastUpdateTimestamp, \"Update already requested\")}`);\n      return;\n    }\n    // hold a reference to the active element so that it can be restored after the morph\n        ActiveElement.set(document.activeElement);\n    // store all retrieved HTML in an object keyed by URL to minimize fetch calls\n        this.html = {};\n    const uniqueUrls = [ ...new Set(blocks.map((block => block.url))) ];\n    await Promise.all(uniqueUrls.map((async url => {\n      if (!this.html.hasOwnProperty(url)) {\n        const response = await graciouslyFetch(url, {\n          \"X-Cable-Ready\": \"update\"\n        });\n        this.html[url] = await response.text();\n      }\n    })));\n    this.triggerElementLog.push(`${(new Date).toLocaleString()}: ${Log.response(this.lastUpdateTimestamp, this, uniqueUrls)}`);\n    // track current block index for each URL; referred to as fragments\n        this.index = {};\n    blocks.forEach((block => {\n      // if the block's URL is not in the index, initialize it to 0; otherwise, increment it\n      this.index.hasOwnProperty(block.url) ? this.index[block.url]++ : this.index[block.url] = 0;\n      block.process(data, this.html, this.index, this.lastUpdateTimestamp);\n    }));\n  }\n  appearedInViewport() {\n    if (!this.visible) {\n      // transition from invisible to visible forces update\n      this.didTransitionToVisible = true;\n      this.update({});\n    }\n    this.visible = true;\n  }\n  disappearedFromViewport() {\n    this.visible = false;\n  }\n  get query() {\n    return `${this.tagName}[identifier=\"${this.identifier}\"]`;\n  }\n  get identifier() {\n    return this.getAttribute(\"identifier\");\n  }\n  get debounce() {\n    return this.hasAttribute(\"debounce\") ? parseInt(this.getAttribute(\"debounce\")) : 20;\n  }\n  get observeAppearance() {\n    return this.hasAttribute(\"observe-appearance\");\n  }\n}\n\nclass Block {\n  constructor(element) {\n    this.element = element;\n  }\n  async process(data, html, fragmentsIndex, startTimestamp) {\n    const blockIndex = fragmentsIndex[this.url];\n    const template = document.createElement(\"template\");\n    this.element.setAttribute(\"updating\", \"updating\");\n    template.innerHTML = String(html[this.url]).trim();\n    await this.resolveTurboFrames(template.content);\n    const fragments = template.content.querySelectorAll(this.query);\n    if (fragments.length <= blockIndex) {\n      console.warn(`Update aborted due to insufficient number of elements. The offending url is ${this.url}, the offending element is:`, this.element);\n      return;\n    }\n    const operation = {\n      element: this.element,\n      html: fragments[blockIndex],\n      permanentAttributeName: \"data-ignore-updates\"\n    };\n    dispatch(this.element, \"cable-ready:before-update\", operation);\n    this.element.targetElementLog.push(`${(new Date).toLocaleString()}: ${Log.morphStart(startTimestamp, this.element)}`);\n    morphdom(this.element, fragments[blockIndex], {\n      childrenOnly: true,\n      onBeforeElUpdated: shouldMorph(operation),\n      onElUpdated: _ => {\n        this.element.removeAttribute(\"updating\");\n        this.element.didTransitionToVisible = false;\n        dispatch(this.element, \"cable-ready:after-update\", operation);\n        assignFocus(operation.focusSelector);\n      }\n    });\n    this.element.targetElementLog.push(`${(new Date).toLocaleString()}: ${Log.morphEnd(startTimestamp, this.element)}`);\n  }\n  async resolveTurboFrames(documentFragment) {\n    const reloadingTurboFrames = [ ...documentFragment.querySelectorAll('turbo-frame[src]:not([loading=\"lazy\"])') ];\n    return Promise.all(reloadingTurboFrames.map((frame => new Promise((async resolve => {\n      const frameResponse = await graciouslyFetch(frame.getAttribute(\"src\"), {\n        \"Turbo-Frame\": frame.id,\n        \"X-Cable-Ready\": \"update\"\n      });\n      const frameTemplate = document.createElement(\"template\");\n      frameTemplate.innerHTML = await frameResponse.text();\n      // recurse here to get all nested eager loaded frames\n            await this.resolveTurboFrames(frameTemplate.content);\n      const selector = `turbo-frame#${frame.id}`;\n      const frameContent = frameTemplate.content.querySelector(selector);\n      const content = frameContent ? frameContent.innerHTML.trim() : \"\";\n      documentFragment.querySelector(selector).innerHTML = content;\n      resolve();\n    })))));\n  }\n  shouldUpdate(data) {\n    // if everything that could prevent an update is false, update this block\n    return !this.ignoresInnerUpdates && this.hasChangesSelectedForUpdate(data) && (!this.observeAppearance || this.visible);\n  }\n  hasChangesSelectedForUpdate(data) {\n    // if there's an only attribute, only update if at least one of the attributes changed is in the allow list\n    const only = this.element.getAttribute(\"only\");\n    return !(only && data.changed && !only.split(\" \").some((attribute => data.changed.includes(attribute))));\n  }\n  get ignoresInnerUpdates() {\n    // don't update during a Reflex or Turbolinks redraw\n    return this.element.hasAttribute(\"ignore-inner-updates\") && this.element.hasAttribute(\"performing-inner-update\");\n  }\n  get url() {\n    return this.element.hasAttribute(\"url\") ? this.element.getAttribute(\"url\") : location.href;\n  }\n  get identifier() {\n    return this.element.identifier;\n  }\n  get query() {\n    return this.element.query;\n  }\n  get visible() {\n    return this.element.visible;\n  }\n  get observeAppearance() {\n    return this.element.observeAppearance;\n  }\n}\n\nconst registerInnerUpdates = () => {\n  document.addEventListener(\"stimulus-reflex:before\", (event => {\n    recursiveMarkUpdatesForElements(event.detail.element);\n  }));\n  document.addEventListener(\"stimulus-reflex:after\", (event => {\n    setTimeout((() => {\n      recursiveUnmarkUpdatesForElements(event.detail.element);\n    }));\n  }));\n  document.addEventListener(\"turbo:submit-start\", (event => {\n    recursiveMarkUpdatesForElements(event.target);\n  }));\n  document.addEventListener(\"turbo:submit-end\", (event => {\n    setTimeout((() => {\n      recursiveUnmarkUpdatesForElements(event.target);\n    }));\n  }));\n  document.addEventListener(\"turbo-boost:command:start\", (event => {\n    recursiveMarkUpdatesForElements(event.target);\n  }));\n  document.addEventListener(\"turbo-boost:command:finish\", (event => {\n    setTimeout((() => {\n      recursiveUnmarkUpdatesForElements(event.target);\n    }));\n  }));\n  document.addEventListener(\"turbo-boost:command:error\", (event => {\n    setTimeout((() => {\n      recursiveUnmarkUpdatesForElements(event.target);\n    }));\n  }));\n};\n\nconst recursiveMarkUpdatesForElements = leaf => {\n  const closestUpdatesFor = leaf && leaf.parentElement && leaf.parentElement.closest(\"cable-ready-updates-for\");\n  if (closestUpdatesFor) {\n    closestUpdatesFor.setAttribute(\"performing-inner-update\", \"\");\n    recursiveMarkUpdatesForElements(closestUpdatesFor);\n  }\n};\n\nconst recursiveUnmarkUpdatesForElements = leaf => {\n  const closestUpdatesFor = leaf && leaf.parentElement && leaf.parentElement.closest(\"cable-ready-updates-for\");\n  if (closestUpdatesFor) {\n    closestUpdatesFor.removeAttribute(\"performing-inner-update\");\n    recursiveUnmarkUpdatesForElements(closestUpdatesFor);\n  }\n};\n\nconst defineElements = () => {\n  registerInnerUpdates();\n  StreamFromElement.define();\n  UpdatesForElement.define();\n};\n\nconst initialize = (initializeOptions = {}) => {\n  const {consumer: consumer, onMissingElement: onMissingElement, debug: debug} = initializeOptions;\n  Debug.set(!!debug);\n  if (consumer) {\n    CableConsumer.setConsumer(consumer);\n  } else {\n    console.error(\"CableReady requires a reference to your Action Cable `consumer` for its helpers to function.\\nEnsure that you have imported the `CableReady` package as well as `consumer` from your `channels` folder, then call `CableReady.initialize({ consumer })`.\");\n  }\n  if (onMissingElement) {\n    MissingElement.set(onMissingElement);\n  }\n  defineElements();\n};\n\nconst global = {\n  perform: perform,\n  performAsync: performAsync,\n  shouldMorphCallbacks: shouldMorphCallbacks,\n  didMorphCallbacks: didMorphCallbacks,\n  initialize: initialize,\n  addOperation: addOperation,\n  addOperations: addOperations,\n  version: packageInfo.version,\n  cable: CableConsumer,\n  get DOMOperations() {\n    console.warn(\"DEPRECATED: Please use `CableReady.operations` instead of `CableReady.DOMOperations`\");\n    return OperationStore.all;\n  },\n  get operations() {\n    return OperationStore.all;\n  },\n  get consumer() {\n    return CableConsumer.consumer;\n  }\n};\n\nwindow.CableReady = global;\n\nexport { morph_callbacks as MorphCallbacks, StreamFromElement, SubscribingElement, UpdatesForElement, utils as Utils, global as default };\n", "import { Controller } from \"@hotwired/stimulus\";\n\nimport CableReady, { Utils } from \"cable_ready\";\n\nimport { createConsumer } from \"@rails/actioncable\";\n\n/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */ class Toastify {\n  defaults={\n    oldestFirst: true,\n    text: \"Toastify is awesome!\",\n    node: undefined,\n    duration: 3e3,\n    selector: undefined,\n    callback: function() {},\n    destination: undefined,\n    newWindow: false,\n    close: false,\n    gravity: \"toastify-top\",\n    positionLeft: false,\n    position: \"\",\n    backgroundColor: \"\",\n    avatar: \"\",\n    className: \"\",\n    stopOnFocus: true,\n    onClick: function() {},\n    offset: {\n      x: 0,\n      y: 0\n    },\n    escapeMarkup: true,\n    ariaLive: \"polite\",\n    style: {\n      background: \"\"\n    }\n  };\n  constructor(options) {\n    this.version = \"1.12.0\";\n    this.options = {};\n    this.toastElement = null;\n    this._rootElement = document.body;\n    this._init(options);\n  }\n  showToast() {\n    this.toastElement = this._buildToast();\n    if (typeof this.options.selector === \"string\") {\n      this._rootElement = document.getElementById(this.options.selector);\n    } else if (this.options.selector instanceof HTMLElement || this.options.selector instanceof ShadowRoot) {\n      this._rootElement = this.options.selector;\n    } else {\n      this._rootElement = document.body;\n    }\n    if (!this._rootElement) {\n      throw \"Root element is not defined\";\n    }\n    this._rootElement.insertBefore(this.toastElement, this._rootElement.firstChild);\n    this._reposition();\n    if (this.options.duration > 0) {\n      this.toastElement.timeOutValue = window.setTimeout((() => {\n        this._removeElement(this.toastElement);\n      }), this.options.duration);\n    }\n    return this;\n  }\n  hideToast() {\n    if (this.toastElement.timeOutValue) {\n      clearTimeout(this.toastElement.timeOutValue);\n    }\n    this._removeElement(this.toastElement);\n  }\n  _init(options) {\n    this.options = Object.assign(this.defaults, options);\n    if (this.options.backgroundColor) {\n      console.warn('DEPRECATION NOTICE: \"backgroundColor\" is being deprecated. Please use the \"style.background\" property.');\n    }\n    this.toastElement = null;\n    this.options.gravity = options.gravity === \"bottom\" ? \"toastify-bottom\" : \"toastify-top\";\n    this.options.stopOnFocus = options.stopOnFocus === undefined ? true : options.stopOnFocus;\n    if (options.backgroundColor) {\n      this.options.style.background = options.backgroundColor;\n    }\n  }\n  _buildToast() {\n    if (!this.options) {\n      throw \"Toastify is not initialized\";\n    }\n    let divElement = document.createElement(\"div\");\n    divElement.className = `toastify on ${this.options.className}`;\n    divElement.className += ` toastify-${this.options.position}`;\n    divElement.className += ` ${this.options.gravity}`;\n    for (const property in this.options.style) {\n      divElement.style[property] = this.options.style[property];\n    }\n    if (this.options.ariaLive) {\n      divElement.setAttribute(\"aria-live\", this.options.ariaLive);\n    }\n    if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) {\n      divElement.appendChild(this.options.node);\n    } else {\n      if (this.options.escapeMarkup) {\n        divElement.innerText = this.options.text;\n      } else {\n        divElement.innerHTML = this.options.text;\n      }\n      if (this.options.avatar !== \"\") {\n        let avatarElement = document.createElement(\"img\");\n        avatarElement.src = this.options.avatar;\n        avatarElement.className = \"toastify-avatar\";\n        if (this.options.position == \"left\") {\n          divElement.appendChild(avatarElement);\n        } else {\n          divElement.insertAdjacentElement(\"afterbegin\", avatarElement);\n        }\n      }\n    }\n    if (this.options.close === true) {\n      let closeElement = document.createElement(\"button\");\n      closeElement.type = \"button\";\n      closeElement.setAttribute(\"aria-label\", \"Close\");\n      closeElement.className = \"toast-close\";\n      closeElement.innerHTML = \"&#10006;\";\n      closeElement.addEventListener(\"click\", (event => {\n        event.stopPropagation();\n        this._removeElement(this.toastElement);\n        window.clearTimeout(this.toastElement.timeOutValue);\n      }));\n      const width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n      if (this.options.position == \"left\" && width > 360) {\n        divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n      } else {\n        divElement.appendChild(closeElement);\n      }\n    }\n    if (this.options.stopOnFocus && this.options.duration > 0) {\n      divElement.addEventListener(\"mouseover\", (event => {\n        window.clearTimeout(divElement.timeOutValue);\n      }));\n      divElement.addEventListener(\"mouseleave\", (() => {\n        divElement.timeOutValue = window.setTimeout((() => {\n          this._removeElement(divElement);\n        }), this.options.duration);\n      }));\n    }\n    if (typeof this.options.destination !== \"undefined\") {\n      divElement.addEventListener(\"click\", (event => {\n        event.stopPropagation();\n        if (this.options.newWindow === true) {\n          window.open(this.options.destination, \"_blank\");\n        } else {\n          window.location = this.options.destination;\n        }\n      }));\n    }\n    if (typeof this.options.onClick === \"function\" && typeof this.options.destination === \"undefined\") {\n      divElement.addEventListener(\"click\", (event => {\n        event.stopPropagation();\n        this.options.onClick();\n      }));\n    }\n    if (typeof this.options.offset === \"object\") {\n      const x = this._getAxisOffsetAValue(\"x\", this.options);\n      const y = this._getAxisOffsetAValue(\"y\", this.options);\n      const xOffset = this.options.position == \"left\" ? x : `-${x}`;\n      const yOffset = this.options.gravity == \"toastify-top\" ? y : `-${y}`;\n      divElement.style.transform = `translate(${xOffset},${yOffset})`;\n    }\n    return divElement;\n  }\n  _removeElement(toastElement) {\n    toastElement.className = toastElement.className.replace(\" on\", \"\");\n    window.setTimeout((() => {\n      if (this.options.node && this.options.node.parentNode) {\n        this.options.node.parentNode.removeChild(this.options.node);\n      }\n      if (toastElement.parentNode) {\n        toastElement.parentNode.removeChild(toastElement);\n      }\n      this.options.callback.call(toastElement);\n      this._reposition();\n    }), 400);\n  }\n  _reposition() {\n    let topLeftOffsetSize = {\n      top: 15,\n      bottom: 15\n    };\n    let topRightOffsetSize = {\n      top: 15,\n      bottom: 15\n    };\n    let offsetSize = {\n      top: 15,\n      bottom: 15\n    };\n    let allToasts = this._rootElement.querySelectorAll(\".toastify\");\n    let classUsed;\n    for (let i = 0; i < allToasts.length; i++) {\n      if (allToasts[i].classList.contains(\"toastify-top\") === true) {\n        classUsed = \"toastify-top\";\n      } else {\n        classUsed = \"toastify-bottom\";\n      }\n      let height = allToasts[i].offsetHeight;\n      classUsed = classUsed.substr(9, classUsed.length - 1);\n      let offset = 15;\n      let width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n      if (width <= 360) {\n        allToasts[i].style[classUsed] = `${offsetSize[classUsed]}px`;\n        offsetSize[classUsed] += height + offset;\n      } else {\n        if (allToasts[i].classList.contains(\"toastify-left\") === true) {\n          allToasts[i].style[classUsed] = `${topLeftOffsetSize[classUsed]}px`;\n          topLeftOffsetSize[classUsed] += height + offset;\n        } else {\n          allToasts[i].style[classUsed] = `${topRightOffsetSize[classUsed]}px`;\n          topRightOffsetSize[classUsed] += height + offset;\n        }\n      }\n    }\n  }\n  _getAxisOffsetAValue(axis, options) {\n    if (options.offset[axis]) {\n      if (isNaN(options.offset[axis])) {\n        return options.offset[axis];\n      } else {\n        return `${options.offset[axis]}px`;\n      }\n    }\n    return \"0px\";\n  }\n}\n\nfunction StartToastifyInstance(options) {\n  return new Toastify(options);\n}\n\nCableReady.operations.stimulusReflexVersionMismatch = operation => {\n  const levels = {\n    info: {},\n    success: {\n      background: \"#198754\",\n      color: \"white\"\n    },\n    warn: {\n      background: \"#ffc107\",\n      color: \"black\"\n    },\n    error: {\n      background: \"#dc3545\",\n      color: \"white\"\n    }\n  };\n  const defaults = {\n    selector: setupToastify(),\n    close: true,\n    duration: 30 * 1e3,\n    gravity: \"bottom\",\n    position: \"right\",\n    newWindow: true,\n    style: levels[operation.level || \"info\"]\n  };\n  StartToastifyInstance({\n    ...defaults,\n    ...operation\n  }).showToast();\n};\n\nfunction setupToastify() {\n  const id = \"stimulus-reflex-toast-element\";\n  let element = document.querySelector(`#${id}`);\n  if (!element) {\n    element = document.createElement(\"div\");\n    element.id = id;\n    document.documentElement.appendChild(element);\n    const styles = document.createElement(\"style\");\n    styles.innerHTML = `\\n      #${id} .toastify {\\n         padding: 12px 20px;\\n         color: #ffffff;\\n         display: inline-block;\\n         background: -webkit-linear-gradient(315deg, #73a5ff, #5477f5);\\n         background: linear-gradient(135deg, #73a5ff, #5477f5);\\n         position: fixed;\\n         opacity: 0;\\n         transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\\n         border-radius: 2px;\\n         cursor: pointer;\\n         text-decoration: none;\\n         max-width: calc(50% - 20px);\\n         z-index: 2147483647;\\n         bottom: -150px;\\n         right: 15px;\\n      }\\n\\n      #${id} .toastify.on {\\n        opacity: 1;\\n      }\\n\\n      #${id} .toast-close {\\n        background: transparent;\\n        border: 0;\\n        color: white;\\n        cursor: pointer;\\n        font-family: inherit;\\n        font-size: 1em;\\n        opacity: 0.4;\\n        padding: 0 5px;\\n      }\\n    `;\n    document.head.appendChild(styles);\n  }\n  return element;\n}\n\nlet deprecationWarnings = true;\n\nvar Deprecate = {\n  get enabled() {\n    return deprecationWarnings;\n  },\n  get disabled() {\n    return !deprecationWarnings;\n  },\n  get value() {\n    return deprecationWarnings;\n  },\n  set(value) {\n    deprecationWarnings = !!value;\n  },\n  set deprecate(value) {\n    deprecationWarnings = !!value;\n  }\n};\n\nlet debugging = false;\n\nvar Debug$1 = {\n  get enabled() {\n    return debugging;\n  },\n  get disabled() {\n    return !debugging;\n  },\n  get value() {\n    return debugging;\n  },\n  set(value) {\n    debugging = !!value;\n  },\n  set debug(value) {\n    debugging = !!value;\n  }\n};\n\nconst defaultSchema = {\n  reflexAttribute: \"data-reflex\",\n  reflexPermanentAttribute: \"data-reflex-permanent\",\n  reflexRootAttribute: \"data-reflex-root\",\n  reflexSuppressLoggingAttribute: \"data-reflex-suppress-logging\",\n  reflexDatasetAttribute: \"data-reflex-dataset\",\n  reflexDatasetAllAttribute: \"data-reflex-dataset-all\",\n  reflexSerializeFormAttribute: \"data-reflex-serialize-form\",\n  reflexFormSelectorAttribute: \"data-reflex-form-selector\",\n  reflexIncludeInnerHtmlAttribute: \"data-reflex-include-inner-html\",\n  reflexIncludeTextContentAttribute: \"data-reflex-include-text-content\"\n};\n\nlet schema = {};\n\nvar Schema = {\n  set(application) {\n    schema = {\n      ...defaultSchema,\n      ...application.schema\n    };\n    for (const attribute in schema) {\n      const attributeName = attribute.slice(0, -9);\n      Object.defineProperty(this, attributeName, {\n        get: () => schema[attribute],\n        configurable: true\n      });\n    }\n  }\n};\n\nconst {debounce: debounce, dispatch: dispatch, xpathToElement: xpathToElement, xpathToElementArray: xpathToElementArray} = Utils;\n\nconst uuidv4 = () => {\n  const crypto = window.crypto || window.msCrypto;\n  return ([ 1e7 ] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)));\n};\n\nconst serializeForm = (form, options = {}) => {\n  if (!form) return \"\";\n  const w = options.w || window;\n  const {element: element} = options;\n  const formData = new w.FormData(form);\n  const data = Array.from(formData, (e => e.map(encodeURIComponent).join(\"=\")));\n  const submitButton = form.querySelector(\"input[type=submit]\");\n  if (element && element.name && element.nodeName === \"INPUT\" && element.type === \"submit\") {\n    data.push(`${encodeURIComponent(element.name)}=${encodeURIComponent(element.value)}`);\n  } else if (submitButton && submitButton.name) {\n    data.push(`${encodeURIComponent(submitButton.name)}=${encodeURIComponent(submitButton.value)}`);\n  }\n  return Array.from(data).join(\"&\");\n};\n\nconst camelize = (value, uppercaseFirstLetter = true) => {\n  if (typeof value !== \"string\") return \"\";\n  value = value.replace(/[\\s_](.)/g, ($1 => $1.toUpperCase())).replace(/[\\s_]/g, \"\").replace(/^(.)/, ($1 => $1.toLowerCase()));\n  if (uppercaseFirstLetter) value = value.substr(0, 1).toUpperCase() + value.substr(1);\n  return value;\n};\n\nconst XPathToElement = xpathToElement;\n\nconst XPathToArray = xpathToElementArray;\n\nconst emitEvent = (name, detail = {}) => dispatch(document, name, detail);\n\nconst extractReflexName = reflexString => {\n  const match = reflexString.match(/(?:.*->)?(.*?)(?:Reflex)?#/);\n  return match ? match[1] : \"\";\n};\n\nconst elementToXPath = element => {\n  if (element.id !== \"\") return \"//*[@id='\" + element.id + \"']\";\n  if (element === document.body) return \"/html/body\";\n  if (element.nodeName === \"HTML\") return \"/html\";\n  let ix = 0;\n  const siblings = element && element.parentNode ? element.parentNode.childNodes : [];\n  for (var i = 0; i < siblings.length; i++) {\n    const sibling = siblings[i];\n    if (sibling === element) {\n      const computedPath = elementToXPath(element.parentNode);\n      const tagName = element.tagName.toLowerCase();\n      const ixInc = ix + 1;\n      return `${computedPath}/${tagName}[${ixInc}]`;\n    }\n    if (sibling.nodeType === 1 && sibling.tagName === element.tagName) {\n      ix++;\n    }\n  }\n};\n\nconst elementInvalid = element => element.type === \"number\" && element.validity && element.validity.badInput;\n\nconst getReflexElement = (args, element) => args[0] && args[0].nodeType === Node.ELEMENT_NODE ? args.shift() : element;\n\nconst getReflexOptions = args => {\n  const options = {};\n  if (args[0] && typeof args[0] === \"object\" && Object.keys(args[0]).filter((key => [ \"id\", \"attrs\", \"selectors\", \"reflexId\", \"resolveLate\", \"serializeForm\", \"suppressLogging\", \"includeInnerHTML\", \"includeTextContent\" ].includes(key))).length) {\n    const opts = args.shift();\n    Object.keys(opts).forEach((o => {\n      if (o === \"reflexId\") {\n        if (Deprecate.enabled) console.warn(\"reflexId option will be removed in v4. Use id instead.\");\n        options[\"id\"] = opts[\"reflexId\"];\n      } else options[o] = opts[o];\n    }));\n  }\n  return options;\n};\n\nconst getReflexRoots = element => {\n  let list = [];\n  while (list.length === 0 && element) {\n    let reflexRoot = element.getAttribute(Schema.reflexRoot);\n    if (reflexRoot) {\n      if (reflexRoot.length === 0 && element.id) reflexRoot = `#${element.id}`;\n      const selectors = reflexRoot.split(\",\").filter((s => s.trim().length));\n      if (Debug$1.enabled && selectors.length === 0) {\n        console.error(`No value found for ${Schema.reflexRoot}. Add an #id to the element or provide a value for ${Schema.reflexRoot}.`, element);\n      }\n      list = list.concat(selectors.filter((s => document.querySelector(s))));\n    }\n    element = element.parentElement ? element.parentElement.closest(`[${Schema.reflexRoot}]`) : null;\n  }\n  return list;\n};\n\nconst reflexNameToControllerIdentifier = reflexName => reflexName.replace(/([a-z0\u20139])([A-Z])/g, \"$1-$2\").replace(/(::)/g, \"--\").replace(/-reflex$/gi, \"\").toLowerCase();\n\nconst stages = [ \"created\", \"before\", \"delivered\", \"queued\", \"after\", \"finalized\", \"success\", \"error\", \"halted\", \"forbidden\" ];\n\nlet lastReflex;\n\nconst reflexes = new Proxy({}, {\n  get: function(target, prop) {\n    if (stages.includes(prop)) return Object.fromEntries(Object.entries(target).filter((([_, reflex]) => reflex.stage === prop))); else if (prop === \"last\") return lastReflex; else if (prop === \"all\") return target;\n    return Reflect.get(...arguments);\n  },\n  set: function(target, prop, value) {\n    target[prop] = value;\n    lastReflex = value;\n    return true;\n  }\n});\n\nconst invokeLifecycleMethod = (reflex, stage) => {\n  const specificLifecycleMethod = reflex.controller[[ \"before\", \"after\", \"finalize\" ].includes(stage) ? `${stage}${camelize(reflex.action)}` : `${camelize(reflex.action, false)}${camelize(stage)}`];\n  const genericLifecycleMethod = reflex.controller[[ \"before\", \"after\", \"finalize\" ].includes(stage) ? `${stage}Reflex` : `reflex${camelize(stage)}`];\n  if (typeof specificLifecycleMethod === \"function\") {\n    specificLifecycleMethod.call(reflex.controller, reflex.element, reflex.target, reflex.error, reflex.id, reflex.payload);\n  }\n  if (typeof genericLifecycleMethod === \"function\") {\n    genericLifecycleMethod.call(reflex.controller, reflex.element, reflex.target, reflex.error, reflex.id, reflex.payload);\n  }\n};\n\nconst dispatchLifecycleEvent = (reflex, stage) => {\n  if (!reflex.controller.element.parentElement) {\n    if (Debug$1.enabled && !reflex.warned) {\n      console.warn(`StimulusReflex was not able execute callbacks or emit events for \"${stage}\" or later life-cycle stages for this Reflex. The StimulusReflex Controller Element is no longer present in the DOM. Could you move the StimulusReflex Controller to an element higher in your DOM?`);\n      reflex.warned = true;\n    }\n    return;\n  }\n  reflex.stage = stage;\n  reflex.lifecycle.push(stage);\n  const event = `stimulus-reflex:${stage}`;\n  const action = `${event}:${reflex.action}`;\n  const detail = {\n    reflex: reflex.target,\n    controller: reflex.controller,\n    id: reflex.id,\n    element: reflex.element,\n    payload: reflex.payload\n  };\n  const options = {\n    bubbles: true,\n    cancelable: false,\n    detail: detail\n  };\n  reflex.controller.element.dispatchEvent(new CustomEvent(event, options));\n  reflex.controller.element.dispatchEvent(new CustomEvent(action, options));\n  if (window.jQuery) {\n    window.jQuery(reflex.controller.element).trigger(event, detail);\n    window.jQuery(reflex.controller.element).trigger(action, detail);\n  }\n};\n\ndocument.addEventListener(\"stimulus-reflex:before\", (event => invokeLifecycleMethod(reflexes[event.detail.id], \"before\")), true);\n\ndocument.addEventListener(\"stimulus-reflex:queued\", (event => invokeLifecycleMethod(reflexes[event.detail.id], \"queued\")), true);\n\ndocument.addEventListener(\"stimulus-reflex:delivered\", (event => invokeLifecycleMethod(reflexes[event.detail.id], \"delivered\")), true);\n\ndocument.addEventListener(\"stimulus-reflex:success\", (event => {\n  const reflex = reflexes[event.detail.id];\n  invokeLifecycleMethod(reflex, \"success\");\n  dispatchLifecycleEvent(reflex, \"after\");\n}), true);\n\ndocument.addEventListener(\"stimulus-reflex:nothing\", (event => dispatchLifecycleEvent(reflexes[event.detail.id], \"success\")), true);\n\ndocument.addEventListener(\"stimulus-reflex:error\", (event => {\n  const reflex = reflexes[event.detail.id];\n  invokeLifecycleMethod(reflex, \"error\");\n  dispatchLifecycleEvent(reflex, \"after\");\n}), true);\n\ndocument.addEventListener(\"stimulus-reflex:halted\", (event => invokeLifecycleMethod(reflexes[event.detail.id], \"halted\")), true);\n\ndocument.addEventListener(\"stimulus-reflex:forbidden\", (event => invokeLifecycleMethod(reflexes[event.detail.id], \"forbidden\")), true);\n\ndocument.addEventListener(\"stimulus-reflex:after\", (event => invokeLifecycleMethod(reflexes[event.detail.id], \"after\")), true);\n\ndocument.addEventListener(\"stimulus-reflex:finalize\", (event => invokeLifecycleMethod(reflexes[event.detail.id], \"finalize\")), true);\n\nlet app = {};\n\nvar App = {\n  get app() {\n    return app;\n  },\n  set(application) {\n    app = application;\n  }\n};\n\nlet isolationMode = false;\n\nvar IsolationMode = {\n  get disabled() {\n    return !isolationMode;\n  },\n  set(value) {\n    isolationMode = value;\n    if (Deprecate.enabled && !isolationMode) {\n      document.addEventListener(\"DOMContentLoaded\", (() => console.warn(\"Deprecation warning: the next version of StimulusReflex will standardize isolation mode, and the isolate option will be removed.\\nPlease update your applications to assume that every tab will be isolated. Use CableReady operations to broadcast updates to other tabs and users.\")), {\n        once: true\n      });\n    }\n  }\n};\n\nclass Reflex {\n  constructor(data, controller) {\n    this.data = data.valueOf();\n    this.controller = controller;\n    this.element = data.reflexElement;\n    this.id = data.id;\n    this.error = null;\n    this.payload = null;\n    this.stage = \"created\";\n    this.lifecycle = [ \"created\" ];\n    this.warned = false;\n    this.target = data.target;\n    this.action = data.target.split(\"#\")[1];\n    this.selector = null;\n    this.morph = null;\n    this.operation = null;\n    this.timestamp = new Date;\n    this.cloned = false;\n  }\n  get getPromise() {\n    const promise = new Promise(((resolve, reject) => {\n      this.promise = {\n        resolve: resolve,\n        reject: reject,\n        data: this.data\n      };\n    }));\n    promise.id = this.id;\n    Object.defineProperty(promise, \"reflexId\", {\n      get() {\n        if (Deprecate.enabled) console.warn(\"reflexId is deprecated and will be removed from v4. Use id instead.\");\n        return this.id;\n      }\n    });\n    promise.reflex = this;\n    if (Debug$1.enabled) promise.catch((() => {}));\n    return promise;\n  }\n}\n\nconst received = data => {\n  if (!data.cableReady) return;\n  if (data.version.replace(\".pre\", \"-pre\").replace(\".rc\", \"-rc\") !== CableReady.version) {\n    const mismatch = `CableReady failed to execute your reflex action due to a version mismatch between your gem and JavaScript version. Package versions must match exactly.\\n\\ncable_ready gem: ${data.version}\\ncable_ready npm: ${CableReady.version}`;\n    console.error(mismatch);\n    if (Debug$1.enabled) {\n      CableReady.operations.stimulusReflexVersionMismatch({\n        text: mismatch,\n        level: \"error\"\n      });\n    }\n    return;\n  }\n  let reflexOperations = [];\n  for (let i = data.operations.length - 1; i >= 0; i--) {\n    if (data.operations[i].stimulusReflex) {\n      reflexOperations.push(data.operations[i]);\n      data.operations.splice(i, 1);\n    }\n  }\n  if (reflexOperations.some((operation => operation.stimulusReflex.url !== location.href))) {\n    if (Debug$1.enabled) {\n      console.error(\"Reflex failed due to mismatched URL.\");\n      return;\n    }\n  }\n  let reflexData;\n  if (reflexOperations.length) {\n    reflexData = reflexOperations[0].stimulusReflex;\n    reflexData.payload = reflexOperations[0].payload;\n  }\n  if (reflexData) {\n    const {id: id, payload: payload} = reflexData;\n    let reflex;\n    if (!reflexes[id] && IsolationMode.disabled) {\n      const controllerElement = XPathToElement(reflexData.xpathController);\n      const reflexElement = XPathToElement(reflexData.xpathElement);\n      controllerElement.reflexController = controllerElement.reflexController || {};\n      controllerElement.reflexData = controllerElement.reflexData || {};\n      controllerElement.reflexError = controllerElement.reflexError || {};\n      const controller = App.app.getControllerForElementAndIdentifier(controllerElement, reflexData.reflexController);\n      controllerElement.reflexController[id] = controller;\n      controllerElement.reflexData[id] = reflexData;\n      reflex = new Reflex(reflexData, controller);\n      reflexes[id] = reflex;\n      reflex.cloned = true;\n      reflex.element = reflexElement;\n      controller.lastReflex = reflex;\n      dispatchLifecycleEvent(reflex, \"before\");\n      reflex.getPromise;\n    } else {\n      reflex = reflexes[id];\n    }\n    if (reflex) {\n      reflex.payload = payload;\n      reflex.totalOperations = reflexOperations.length;\n      reflex.pendingOperations = reflexOperations.length;\n      reflex.completedOperations = 0;\n      reflex.piggybackOperations = data.operations;\n      CableReady.perform(reflexOperations);\n    }\n  } else {\n    if (data.operations.length && reflexes[data.operations[0].reflexId]) {\n      CableReady.perform(data.operations);\n    }\n  }\n};\n\nlet consumer;\n\nlet params;\n\nlet subscription;\n\nlet active;\n\nconst initialize$1 = (consumerValue, paramsValue) => {\n  consumer = consumerValue;\n  params = paramsValue;\n  document.addEventListener(\"DOMContentLoaded\", (() => {\n    active = false;\n    connectionStatusClass();\n    if (Deprecate.enabled && consumerValue) console.warn(\"Deprecation warning: the next version of StimulusReflex will obtain a reference to consumer via the Stimulus application object.\\nPlease add 'application.consumer = consumer' to your index.js after your Stimulus application has been established, and remove the consumer key from your StimulusReflex initialize() options object.\");\n  }));\n  document.addEventListener(\"turbolinks:load\", connectionStatusClass);\n  document.addEventListener(\"turbo:load\", connectionStatusClass);\n};\n\nconst subscribe = controller => {\n  if (subscription) return;\n  consumer = consumer || controller.application.consumer || createConsumer();\n  const {channel: channel} = controller.StimulusReflex;\n  const request = {\n    channel: channel,\n    ...params\n  };\n  const identifier = JSON.stringify(request);\n  subscription = consumer.subscriptions.findAll(identifier)[0] || consumer.subscriptions.create(request, {\n    received: received,\n    connected: connected,\n    rejected: rejected,\n    disconnected: disconnected\n  });\n};\n\nconst connected = () => {\n  active = true;\n  connectionStatusClass();\n  emitEvent(\"stimulus-reflex:connected\");\n  Object.values(reflexes.queued).forEach((reflex => {\n    subscription.send(reflex.data);\n    dispatchLifecycleEvent(reflex, \"delivered\");\n  }));\n};\n\nconst rejected = () => {\n  active = false;\n  connectionStatusClass();\n  emitEvent(\"stimulus-reflex:rejected\");\n  if (Debug.enabled) console.warn(\"Channel subscription was rejected.\");\n};\n\nconst disconnected = willAttemptReconnect => {\n  active = false;\n  connectionStatusClass();\n  emitEvent(\"stimulus-reflex:disconnected\", willAttemptReconnect);\n};\n\nconst deliver = reflex => {\n  if (active) {\n    subscription.send(reflex.data);\n    dispatchLifecycleEvent(reflex, \"delivered\");\n  } else dispatchLifecycleEvent(reflex, \"queued\");\n};\n\nconst connectionStatusClass = () => {\n  const list = document.body.classList;\n  if (!(list.contains(\"stimulus-reflex-connected\") || list.contains(\"stimulus-reflex-disconnected\"))) {\n    list.add(active ? \"stimulus-reflex-connected\" : \"stimulus-reflex-disconnected\");\n    return;\n  }\n  if (active) {\n    list.replace(\"stimulus-reflex-disconnected\", \"stimulus-reflex-connected\");\n  } else {\n    list.replace(\"stimulus-reflex-connected\", \"stimulus-reflex-disconnected\");\n  }\n};\n\nvar ActionCableTransport = {\n  subscribe: subscribe,\n  deliver: deliver,\n  initialize: initialize$1\n};\n\nconst request = reflex => {\n  if (Debug$1.disabled || reflex.data.suppressLogging) return;\n  console.log(`\u2191 stimulus \u2191 ${reflex.target}`, {\n    id: reflex.id,\n    args: reflex.data.args,\n    controller: reflex.controller.identifier,\n    element: reflex.element,\n    controllerElement: reflex.controller.element\n  });\n};\n\nconst success = reflex => {\n  if (Debug$1.disabled || reflex.data.suppressLogging) return;\n  const output = {\n    id: reflex.id,\n    morph: reflex.morph,\n    payload: reflex.payload\n  };\n  if (reflex.operation !== \"dispatch_event\") output.operation = reflex.operation;\n  console.log(`\u2193 reflex \u2193 ${reflex.target} \u2192 ${reflex.selector || \"\u221E\"}${progress(reflex)} ${duration(reflex)}`, output);\n};\n\nconst halted$1 = reflex => {\n  if (Debug$1.disabled || reflex.data.suppressLogging) return;\n  console.log(`\u2193 reflex \u2193 ${reflex.target} ${duration(reflex)} %cHALTED`, \"color: #ffa500;\", {\n    id: reflex.id,\n    payload: reflex.payload\n  });\n};\n\nconst forbidden$1 = reflex => {\n  if (Debug$1.disabled || reflex.data.suppressLogging) return;\n  console.log(`\u2193 reflex \u2193 ${reflex.target} ${duration(reflex)} %cFORBIDDEN`, \"color: #BF40BF;\", {\n    id: reflex.id,\n    payload: reflex.payload\n  });\n};\n\nconst error$1 = reflex => {\n  if (Debug$1.disabled || reflex.data.suppressLogging) return;\n  console.log(`\u2193 reflex \u2193 ${reflex.target} ${duration(reflex)} %cERROR: ${reflex.error}`, \"color: #f00;\", {\n    id: reflex.id,\n    payload: reflex.payload\n  });\n};\n\nconst duration = reflex => !reflex.cloned ? `in ${new Date - reflex.timestamp}ms` : \"CLONED\";\n\nconst progress = reflex => reflex.totalOperations > 1 ? ` ${reflex.completedOperations}/${reflex.totalOperations}` : \"\";\n\nvar Log = {\n  request: request,\n  success: success,\n  halted: halted$1,\n  forbidden: forbidden$1,\n  error: error$1\n};\n\nconst multipleInstances = element => {\n  if ([ \"checkbox\", \"radio\" ].includes(element.type)) {\n    return document.querySelectorAll(`input[type=\"${element.type}\"][name=\"${element.name}\"]`).length > 1;\n  }\n  return false;\n};\n\nconst collectCheckedOptions = element => Array.from(element.querySelectorAll(\"option:checked\")).concat(Array.from(document.querySelectorAll(`input[type=\"${element.type}\"][name=\"${element.name}\"]`)).filter((elem => elem.checked))).map((o => o.value));\n\nconst attributeValue = (values = []) => {\n  const value = Array.from(new Set(values.filter((v => v && String(v).length)).map((v => v.trim())))).join(\" \").trim();\n  return value.length > 0 ? value : null;\n};\n\nconst attributeValues = value => {\n  if (!value) return [];\n  if (!value.length) return [];\n  return value.split(\" \").filter((v => v.trim().length));\n};\n\nconst extractElementAttributes = element => {\n  let attrs = Array.from(element.attributes).reduce(((memo, attr) => {\n    memo[attr.name] = attr.value;\n    return memo;\n  }), {});\n  attrs.checked = !!element.checked;\n  attrs.selected = !!element.selected;\n  attrs.tag_name = element.tagName;\n  if (element.tagName.match(/select/i) || multipleInstances(element)) {\n    const collectedOptions = collectCheckedOptions(element);\n    attrs.values = collectedOptions;\n    attrs.value = collectedOptions.join(\",\");\n  } else {\n    attrs.value = element.value;\n  }\n  return attrs;\n};\n\nconst getElementsFromTokens = (element, tokens) => {\n  if (!tokens || tokens.length === 0) return [];\n  let elements = [ element ];\n  const xPath = elementToXPath(element);\n  tokens.forEach((token => {\n    try {\n      switch (token) {\n       case \"combined\":\n        if (Deprecate.enabled) console.warn(\"In the next version of StimulusReflex, the 'combined' option to data-reflex-dataset will become 'ancestors'.\");\n        elements = [ ...elements, ...XPathToArray(`${xPath}/ancestor::*`, true) ];\n        break;\n\n       case \"ancestors\":\n        elements = [ ...elements, ...XPathToArray(`${xPath}/ancestor::*`, true) ];\n        break;\n\n       case \"parent\":\n        elements = [ ...elements, ...XPathToArray(`${xPath}/parent::*`) ];\n        break;\n\n       case \"siblings\":\n        elements = [ ...elements, ...XPathToArray(`${xPath}/preceding-sibling::*|${xPath}/following-sibling::*`) ];\n        break;\n\n       case \"children\":\n        elements = [ ...elements, ...XPathToArray(`${xPath}/child::*`) ];\n        break;\n\n       case \"descendants\":\n        elements = [ ...elements, ...XPathToArray(`${xPath}/descendant::*`) ];\n        break;\n\n       default:\n        elements = [ ...elements, ...document.querySelectorAll(token) ];\n      }\n    } catch (error) {\n      if (Debug$1.enabled) console.error(error);\n    }\n  }));\n  return elements;\n};\n\nconst extractElementDataset = element => {\n  const dataset = element.attributes[Schema.reflexDataset];\n  const allDataset = element.attributes[Schema.reflexDatasetAll];\n  const tokens = dataset && dataset.value.split(\" \") || [];\n  const allTokens = allDataset && allDataset.value.split(\" \") || [];\n  const datasetElements = getElementsFromTokens(element, tokens);\n  const datasetAllElements = getElementsFromTokens(element, allTokens);\n  const datasetAttributes = datasetElements.reduce(((acc, ele) => ({\n    ...extractDataAttributes(ele),\n    ...acc\n  })), {});\n  const reflexElementAttributes = extractDataAttributes(element);\n  const elementDataset = {\n    dataset: {\n      ...reflexElementAttributes,\n      ...datasetAttributes\n    },\n    datasetAll: {}\n  };\n  datasetAllElements.forEach((element => {\n    const elementAttributes = extractDataAttributes(element);\n    Object.keys(elementAttributes).forEach((key => {\n      const value = elementAttributes[key];\n      if (elementDataset.datasetAll[key] && Array.isArray(elementDataset.datasetAll[key])) {\n        elementDataset.datasetAll[key].push(value);\n      } else {\n        elementDataset.datasetAll[key] = [ value ];\n      }\n    }));\n  }));\n  return elementDataset;\n};\n\nconst extractDataAttributes = element => {\n  let attrs = {};\n  if (element && element.attributes) {\n    Array.from(element.attributes).forEach((attr => {\n      if (attr.name.startsWith(\"data-\")) {\n        attrs[attr.name] = attr.value;\n      }\n    }));\n  }\n  return attrs;\n};\n\nvar name = \"stimulus_reflex\";\n\nvar version = \"3.5.3\";\n\nvar description = \"Build reactive applications with the Rails tooling you already know and love.\";\n\nvar keywords = [ \"ruby\", \"rails\", \"websockets\", \"actioncable\", \"turbolinks\", \"reactive\", \"cable\", \"ujs\", \"ssr\", \"stimulus\", \"reflex\", \"stimulus_reflex\", \"dom\", \"morphdom\" ];\n\nvar homepage = \"https://docs.stimulusreflex.com\";\n\nvar bugs = \"https://github.com/stimulusreflex/stimulus_reflex/issues\";\n\nvar repository = \"https://github.com/stimulusreflex/stimulus_reflex\";\n\nvar license = \"MIT\";\n\nvar author = \"Nathan Hopkins <natehop@gmail.com>\";\n\nvar contributors = [ \"Andrew Mason <andrewmcodes@protonmail.com>\", \"Julian Rubisch <julian@julianrubisch.at>\", \"Marco Roth <marco.roth@intergga.ch>\", \"Nathan Hopkins <natehop@gmail.com>\" ];\n\nvar main = \"./dist/stimulus_reflex.js\";\n\nvar module = \"./dist/stimulus_reflex.js\";\n\nvar browser = \"./dist/stimulus_reflex.js\";\n\nvar unpkg = \"./dist/stimulus_reflex.umd.js\";\n\nvar umd = \"./dist/stimulus_reflex.umd.js\";\n\nvar files = [ \"dist/*\", \"javascript/*\" ];\n\nvar scripts = {\n  lint: \"yarn run format --check\",\n  format: \"yarn run prettier-standard ./javascript/**/*.js rollup.config.mjs\",\n  build: \"yarn rollup -c\",\n  \"build:watch\": \"yarn rollup -wc\",\n  watch: \"yarn build:watch\",\n  test: \"web-test-runner javascript/test/**/*.test.js\",\n  \"test:watch\": \"yarn test --watch\",\n  \"docs:dev\": \"vitepress dev docs\",\n  \"docs:build\": \"vitepress build docs && cp docs/_redirects docs/.vitepress/dist\",\n  \"docs:preview\": \"vitepress preview docs\"\n};\n\nvar peerDependencies = {\n  \"@hotwired/stimulus\": \">= 3.0\"\n};\n\nvar dependencies = {\n  \"@hotwired/stimulus\": \"^3\",\n  \"@rails/actioncable\": \"^6 || ^7\",\n  cable_ready: \"^5.0.6\"\n};\n\nvar devDependencies = {\n  \"@open-wc/testing\": \"^4.0.0\",\n  \"@rollup/plugin-json\": \"^6.1.0\",\n  \"@rollup/plugin-node-resolve\": \"^15.3.0\",\n  \"@rollup/plugin-terser\": \"^0.4.4\",\n  \"@web/dev-server-esbuild\": \"^1.0.2\",\n  \"@web/dev-server-rollup\": \"^0.6.4\",\n  \"@web/test-runner\": \"^0.19.0\",\n  \"prettier-standard\": \"^16.4.1\",\n  rollup: \"^4.22.4\",\n  \"toastify-js\": \"^1.12.0\",\n  vitepress: \"^1.0.0-beta.1\"\n};\n\nvar packageInfo = {\n  name: name,\n  version: version,\n  description: description,\n  keywords: keywords,\n  homepage: homepage,\n  bugs: bugs,\n  repository: repository,\n  license: license,\n  author: author,\n  contributors: contributors,\n  main: main,\n  module: module,\n  browser: browser,\n  import: \"./dist/stimulus_reflex.js\",\n  unpkg: unpkg,\n  umd: umd,\n  files: files,\n  scripts: scripts,\n  peerDependencies: peerDependencies,\n  dependencies: dependencies,\n  devDependencies: devDependencies\n};\n\nclass ReflexData {\n  constructor(options, reflexElement, controllerElement, reflexController, permanentAttributeName, target, args, url, tabId) {\n    this.options = options;\n    this.reflexElement = reflexElement;\n    this.controllerElement = controllerElement;\n    this.reflexController = reflexController;\n    this.permanentAttributeName = permanentAttributeName;\n    this.target = target;\n    this.args = args;\n    this.url = url;\n    this.tabId = tabId;\n  }\n  get attrs() {\n    this._attrs = this._attrs || this.options[\"attrs\"] || extractElementAttributes(this.reflexElement);\n    return this._attrs;\n  }\n  get id() {\n    this._id = this._id || this.options[\"id\"] || uuidv4();\n    return this._id;\n  }\n  get selectors() {\n    this._selectors = this._selectors || this.options[\"selectors\"] || getReflexRoots(this.reflexElement);\n    return typeof this._selectors === \"string\" ? [ this._selectors ] : this._selectors;\n  }\n  get resolveLate() {\n    return this.options[\"resolveLate\"] || false;\n  }\n  get dataset() {\n    this._dataset = this._dataset || extractElementDataset(this.reflexElement);\n    return this._dataset;\n  }\n  get innerHTML() {\n    return this.includeInnerHtml ? this.reflexElement.innerHTML : \"\";\n  }\n  get textContent() {\n    return this.includeTextContent ? this.reflexElement.textContent : \"\";\n  }\n  get xpathController() {\n    return elementToXPath(this.controllerElement);\n  }\n  get xpathElement() {\n    return elementToXPath(this.reflexElement);\n  }\n  get formSelector() {\n    const attr = this.reflexElement.attributes[Schema.reflexFormSelector] ? this.reflexElement.attributes[Schema.reflexFormSelector].value : undefined;\n    return this.options[\"formSelector\"] || attr;\n  }\n  get includeInnerHtml() {\n    const attr = this.reflexElement.attributes[Schema.reflexIncludeInnerHtml] || false;\n    return this.options[\"includeInnerHTML\"] || attr ? attr.value !== \"false\" : false;\n  }\n  get includeTextContent() {\n    const attr = this.reflexElement.attributes[Schema.reflexIncludeTextContent] || false;\n    return this.options[\"includeTextContent\"] || attr ? attr.value !== \"false\" : false;\n  }\n  get suppressLogging() {\n    return this.options[\"suppressLogging\"] || this.reflexElement.attributes[Schema.reflexSuppressLogging] || false;\n  }\n  valueOf() {\n    return {\n      attrs: this.attrs,\n      dataset: this.dataset,\n      selectors: this.selectors,\n      id: this.id,\n      resolveLate: this.resolveLate,\n      suppressLogging: this.suppressLogging,\n      xpathController: this.xpathController,\n      xpathElement: this.xpathElement,\n      inner_html: this.innerHTML,\n      text_content: this.textContent,\n      formSelector: this.formSelector,\n      reflexController: this.reflexController,\n      permanentAttributeName: this.permanentAttributeName,\n      target: this.target,\n      args: this.args,\n      url: this.url,\n      tabId: this.tabId,\n      version: packageInfo.version\n    };\n  }\n}\n\nlet transport = {};\n\nvar Transport = {\n  get plugin() {\n    return transport;\n  },\n  set(newTransport) {\n    transport = newTransport;\n  }\n};\n\nconst beforeDOMUpdate = event => {\n  const {stimulusReflex: stimulusReflex} = event.detail || {};\n  if (!stimulusReflex) return;\n  const reflex = reflexes[stimulusReflex.id];\n  reflex.pendingOperations--;\n  if (reflex.pendingOperations > 0) return;\n  if (!stimulusReflex.resolveLate) setTimeout((() => reflex.promise.resolve({\n    element: reflex.element,\n    event: event,\n    data: reflex.data,\n    payload: reflex.payload,\n    id: reflex.id,\n    toString: () => \"\"\n  })));\n  setTimeout((() => dispatchLifecycleEvent(reflex, \"success\")));\n};\n\nconst afterDOMUpdate = event => {\n  const {stimulusReflex: stimulusReflex} = event.detail || {};\n  if (!stimulusReflex) return;\n  const reflex = reflexes[stimulusReflex.id];\n  reflex.completedOperations++;\n  reflex.selector = event.detail.selector;\n  reflex.morph = event.detail.stimulusReflex.morph;\n  reflex.operation = event.type.split(\":\")[1].split(\"-\").slice(1).join(\"_\");\n  Log.success(reflex);\n  if (reflex.completedOperations < reflex.totalOperations) return;\n  if (stimulusReflex.resolveLate) setTimeout((() => reflex.promise.resolve({\n    element: reflex.element,\n    event: event,\n    data: reflex.data,\n    payload: reflex.payload,\n    id: reflex.id,\n    toString: () => \"\"\n  })));\n  setTimeout((() => dispatchLifecycleEvent(reflex, \"finalize\")));\n  if (reflex.piggybackOperations.length) CableReady.perform(reflex.piggybackOperations);\n};\n\nconst routeReflexEvent = event => {\n  const {stimulusReflex: stimulusReflex, name: name} = event.detail || {};\n  const eventType = name.split(\"-\")[2];\n  const eventTypes = {\n    nothing: nothing,\n    halted: halted,\n    forbidden: forbidden,\n    error: error\n  };\n  if (!stimulusReflex || !Object.keys(eventTypes).includes(eventType)) return;\n  const reflex = reflexes[stimulusReflex.id];\n  reflex.completedOperations++;\n  reflex.pendingOperations--;\n  reflex.selector = event.detail.selector;\n  reflex.morph = event.detail.stimulusReflex.morph;\n  reflex.operation = event.type.split(\":\")[1].split(\"-\").slice(1).join(\"_\");\n  if (eventType === \"error\") reflex.error = event.detail.error;\n  eventTypes[eventType](reflex, event);\n  setTimeout((() => dispatchLifecycleEvent(reflex, eventType)));\n  if (reflex.piggybackOperations.length) CableReady.perform(reflex.piggybackOperations);\n};\n\nconst nothing = (reflex, event) => {\n  Log.success(reflex);\n  setTimeout((() => reflex.promise.resolve({\n    data: reflex.data,\n    element: reflex.element,\n    event: event,\n    payload: reflex.payload,\n    id: reflex.id,\n    toString: () => \"\"\n  })));\n};\n\nconst halted = (reflex, event) => {\n  Log.halted(reflex, event);\n  setTimeout((() => reflex.promise.resolve({\n    data: reflex.data,\n    element: reflex.element,\n    event: event,\n    payload: reflex.payload,\n    id: reflex.id,\n    toString: () => \"\"\n  })));\n};\n\nconst forbidden = (reflex, event) => {\n  Log.forbidden(reflex, event);\n  setTimeout((() => reflex.promise.resolve({\n    data: reflex.data,\n    element: reflex.element,\n    event: event,\n    payload: reflex.payload,\n    id: reflex.id,\n    toString: () => \"\"\n  })));\n};\n\nconst error = (reflex, event) => {\n  Log.error(reflex, event);\n  setTimeout((() => reflex.promise.reject({\n    data: reflex.data,\n    element: reflex.element,\n    event: event,\n    payload: reflex.payload,\n    id: reflex.id,\n    error: reflex.error,\n    toString: () => reflex.error\n  })));\n};\n\nconst localReflexControllers = element => {\n  const potentialIdentifiers = attributeValues(element.getAttribute(Schema.controller));\n  const potentialControllers = potentialIdentifiers.map((identifier => App.app.getControllerForElementAndIdentifier(element, identifier)));\n  return potentialControllers.filter((controller => controller && controller.StimulusReflex));\n};\n\nconst allReflexControllers = element => {\n  let controllers = [];\n  while (element) {\n    controllers = controllers.concat(localReflexControllers(element));\n    element = element.parentElement;\n  }\n  return controllers;\n};\n\nconst findControllerByReflexName = (reflexName, controllers) => {\n  const controller = controllers.find((controller => {\n    if (!controller || !controller.identifier) return;\n    const identifier = reflexNameToControllerIdentifier(extractReflexName(reflexName));\n    return identifier === controller.identifier;\n  }));\n  return controller;\n};\n\nconst scanForReflexes = debounce((() => {\n  const reflexElements = document.querySelectorAll(`[${Schema.reflex}]`);\n  reflexElements.forEach((element => scanForReflexesOnElement(element)));\n}), 20);\n\nconst scanForReflexesOnElement = (element, controller = null) => {\n  const controllerAttribute = element.getAttribute(Schema.controller);\n  const controllers = attributeValues(controllerAttribute).filter((controller => controller !== \"stimulus-reflex\"));\n  const reflexAttribute = element.getAttribute(Schema.reflex);\n  const reflexAttributeNames = attributeValues(reflexAttribute);\n  const actionAttribute = element.getAttribute(Schema.action);\n  const actions = attributeValues(actionAttribute).filter((action => !action.includes(\"#__perform\")));\n  reflexAttributeNames.forEach((reflexName => {\n    const potentialControllers = [ controller ].concat(allReflexControllers(element));\n    controller = findControllerByReflexName(reflexName, potentialControllers);\n    const controllerName = controller ? controller.identifier : \"stimulus-reflex\";\n    actions.push(`${reflexName.split(\"->\")[0]}->${controllerName}#__perform`);\n    const parentControllerElement = element.closest(`[data-controller~=${controllerName}]`);\n    const elementPreviouslyHadStimulusReflexController = element === parentControllerElement && controllerName === \"stimulus-reflex\";\n    if (!parentControllerElement || elementPreviouslyHadStimulusReflexController) {\n      controllers.push(controllerName);\n    }\n  }));\n  const controllerValue = attributeValue(controllers);\n  const actionValue = attributeValue(actions);\n  let emitReadyEvent = false;\n  if (controllerValue && element.getAttribute(Schema.controller) != controllerValue) {\n    element.setAttribute(Schema.controller, controllerValue);\n    emitReadyEvent = true;\n  }\n  if (actionValue && element.getAttribute(Schema.action) != actionValue) {\n    element.setAttribute(Schema.action, actionValue);\n    emitReadyEvent = true;\n  }\n  if (emitReadyEvent) {\n    dispatch(element, \"stimulus-reflex:ready\", {\n      reflex: reflexAttribute,\n      controller: controllerValue,\n      action: actionValue,\n      element: element\n    });\n  }\n};\n\nclass StimulusReflexController extends Controller {\n  constructor(...args) {\n    super(...args);\n    register(this);\n  }\n}\n\nconst tabId = uuidv4();\n\nconst initialize = (application, {controller: controller, consumer: consumer, debug: debug, params: params, isolate: isolate, deprecate: deprecate, transport: transport} = {}) => {\n  Transport.set(transport || ActionCableTransport);\n  Transport.plugin.initialize(consumer, params);\n  IsolationMode.set(!!isolate);\n  App.set(application);\n  Schema.set(application);\n  App.app.register(\"stimulus-reflex\", controller || StimulusReflexController);\n  Debug$1.set(!!debug);\n  if (typeof deprecate !== \"undefined\") Deprecate.set(deprecate);\n  const observer = new MutationObserver(scanForReflexes);\n  observer.observe(document.documentElement, {\n    attributeFilter: [ Schema.reflex, Schema.action ],\n    childList: true,\n    subtree: true\n  });\n  emitEvent(\"stimulus-reflex:initialized\");\n};\n\nconst register = (controller, options = {}) => {\n  const channel = \"StimulusReflex::Channel\";\n  controller.StimulusReflex = {\n    ...options,\n    channel: channel\n  };\n  Transport.plugin.subscribe(controller);\n  Object.assign(controller, {\n    stimulate() {\n      const url = location.href;\n      const controllerElement = this.element;\n      const args = Array.from(arguments);\n      const target = args.shift() || \"StimulusReflex::Reflex#default_reflex\";\n      const reflexElement = getReflexElement(args, controllerElement);\n      if (elementInvalid(reflexElement)) {\n        if (Debug$1.enabled) console.warn(\"Reflex aborted: invalid numeric input\");\n        return;\n      }\n      const options = getReflexOptions(args);\n      const reflexData = new ReflexData(options, reflexElement, controllerElement, this.identifier, Schema.reflexPermanent, target, args, url, tabId);\n      const id = reflexData.id;\n      controllerElement.reflexController = controllerElement.reflexController || {};\n      controllerElement.reflexData = controllerElement.reflexData || {};\n      controllerElement.reflexError = controllerElement.reflexError || {};\n      controllerElement.reflexController[id] = this;\n      controllerElement.reflexData[id] = reflexData.valueOf();\n      const reflex = new Reflex(reflexData, this);\n      reflexes[id] = reflex;\n      this.lastReflex = reflex;\n      dispatchLifecycleEvent(reflex, \"before\");\n      setTimeout((() => {\n        const {params: params} = controllerElement.reflexData[id] || {};\n        const check = reflexElement.attributes[Schema.reflexSerializeForm];\n        if (check) {\n          options[\"serializeForm\"] = check.value !== \"false\";\n        }\n        const form = reflexElement.closest(reflexData.formSelector) || document.querySelector(reflexData.formSelector) || reflexElement.closest(\"form\");\n        if (Deprecate.enabled && options[\"serializeForm\"] === undefined && form) console.warn(`Deprecation warning: the next version of StimulusReflex will not serialize forms by default.\\nPlease set ${Schema.reflexSerializeForm}=\"true\" on your Reflex Controller Element or pass { serializeForm: true } as an option to stimulate.`);\n        const formData = options[\"serializeForm\"] === false ? \"\" : serializeForm(form, {\n          element: reflexElement\n        });\n        reflex.data = {\n          ...reflexData.valueOf(),\n          params: params,\n          formData: formData\n        };\n        controllerElement.reflexData[id] = reflex.data;\n        Transport.plugin.deliver(reflex);\n      }));\n      Log.request(reflex);\n      return reflex.getPromise;\n    },\n    __perform(event) {\n      let element = event.target;\n      let reflex;\n      while (element && !reflex) {\n        reflex = element.getAttribute(Schema.reflex);\n        if (!reflex || !reflex.trim().length) element = element.parentElement;\n      }\n      const match = attributeValues(reflex).find((reflex => reflex.split(\"->\")[0] === event.type));\n      if (match) {\n        event.preventDefault();\n        event.stopPropagation();\n        this.stimulate(match.split(\"->\")[1], element);\n      }\n    }\n  });\n  if (!controller.reflexes) Object.defineProperty(controller, \"reflexes\", {\n    get() {\n      return new Proxy(reflexes, {\n        get: function(target, prop) {\n          if (prop === \"last\") return this.lastReflex;\n          return Object.fromEntries(Object.entries(target[prop]).filter((([_, reflex]) => reflex.controller === this)));\n        }.bind(this)\n      });\n    }\n  });\n  scanForReflexesOnElement(controller.element, controller);\n  emitEvent(\"stimulus-reflex:controller-registered\", {\n    detail: {\n      controller: controller\n    }\n  });\n};\n\nconst useReflex = (controller, options = {}) => {\n  register(controller, options);\n};\n\ndocument.addEventListener(\"cable-ready:after-dispatch-event\", routeReflexEvent);\n\ndocument.addEventListener(\"cable-ready:before-inner-html\", beforeDOMUpdate);\n\ndocument.addEventListener(\"cable-ready:before-morph\", beforeDOMUpdate);\n\ndocument.addEventListener(\"cable-ready:after-inner-html\", afterDOMUpdate);\n\ndocument.addEventListener(\"cable-ready:after-morph\", afterDOMUpdate);\n\ndocument.addEventListener(\"readystatechange\", (() => {\n  if (document.readyState === \"complete\") {\n    scanForReflexes();\n  }\n}));\n\nvar StimulusReflex = Object.freeze({\n  __proto__: null,\n  StimulusReflexController: StimulusReflexController,\n  initialize: initialize,\n  reflexes: reflexes,\n  register: register,\n  scanForReflexes: scanForReflexes,\n  scanForReflexesOnElement: scanForReflexesOnElement,\n  useReflex: useReflex\n});\n\nconst global = {\n  version: packageInfo.version,\n  ...StimulusReflex,\n  get debug() {\n    return Debug$1.value;\n  },\n  set debug(value) {\n    Debug$1.set(!!value);\n  },\n  get deprecate() {\n    return Deprecate.value;\n  },\n  set deprecate(value) {\n    Deprecate.set(!!value);\n  }\n};\n\nwindow.StimulusReflex = global;\n\nexport { StimulusReflexController, global as default, initialize, reflexes, register, scanForReflexes, scanForReflexesOnElement, useReflex };\n", "import { Controller } from '@hotwired/stimulus'\nimport StimulusReflex from 'stimulus_reflex'\nimport { getMetaValue } from '../packs/global_functions'\nimport Logger from '../packs/logger'\n\nexport default class ApplicationController extends Controller {\n\n\n  logger = new Logger()\n\n  ///\n  // set this.useReflex = false, if the controller has non need for Reflex\n  ///\n  initialize() {\n    this.useReflex = true\n    // this.logInfo(\"initialized\")\n  }\n\n  connect() {\n    // this.logInfo(\"connected\")\n    if(this.useReflex) {\n      StimulusReflex.register(this)\n    }\n  }\n\n  disconnect() {\n    this.logInfo(\"disconnected\")\n  }\n\n  logInfo(message) {\n    this.logger.info(this.identifier, message)\n  }\n\n  logWarning(message) {\n    this.logger.warn(this.identifier, message)\n  }\n\n  logError(message) {\n    this.logger.error(this.identifier, message)\n  }\n\n  logMessage(message, title = null, severity = 'info') {\n    message = `${title != null ? title + ': ' : ''}${message}`\n\n    switch(severity) {\n      case 'warning':\n        this.logWarning(message)\n        break; \n      case 'error': \n        this.logError(message)\n        break;\n      default:\n        this.logInfo(message)\n    }\n  }\n\n  // shows the rotating spinner\n  startLoading() {\n    $(\"#loading\").addClass('loading')\n  }\n\n  // hides the rotating spinner\n  stopLoading() {\n    $(\"#loading\").removeClass('loading')\n  }\n\n  getBaseUrl() {\n    return window.location.protocol + \"//\" + window.location.host + window.location.pathname;\n  }\n\n  ///\n  // takes csrf token from head and resets the hidden input field to this value in the form\n  // this is needed for example when the form is rerendered by a reflex\n  ///\n  reset_csrf_token() {\n    $(\"[name=authenticity_token]\").val(getMetaValue(\"csrf-token\"));\n  }\n\n  create_authenticy_token_for(name) {\n    if($(name).find(\"[name=authenticity_token]\").length <= 0) {\n      $(\"<input type='hidden' name='authenticity_token'></input>\").appendTo($(name))\n    }\n  }\n\n  ///\n  // can be called in :connect to call different initializers, which are defined by the init-value\n  // this functionality needs this.initializers to be set to an appropriate hash like { simple: this.initClickListeners, in_page: this.initInPage} \n  ///\n  callInitializers() {\n    const self = this\n    let initMethods = this.initValue.split(\" \")\n    if(initMethods[0] == \"\") {\n      initMethods = [] \n    }\n    // console.log(\"initMethods: \", initMethods)\n    initMethods.forEach(function (initializer, index) {\n      self.initializers[initializer].bind(self)()\n    })\n\n  }\n\n  /// returns the value of parameter with given name\n  getParam(paramName) {\n    return new URLSearchParams(window.location.search).get(paramName)\n  }\n\n  /**\n   * @returns the journey id from the data attribute of the journey_builder div\n   * or the journey_edit_form_wrapper div\n   */\n  find_journey_id() {\n    const journeyId = $('#journey_builder').data('journey-id') || $('#journey_edit_form_wrapper').data('journey-id');\n    return journeyId\n  }\n\n}", "export function getMetaValue(name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n  return element.getAttribute(\"content\")\n}\n\nexport function split(value, separator = /,/) {\n  if (value) {\n    let array = value.split(separator);\n    return array.filter(function (v) {\n      return v !== \"\";\n    });\n  } else {\n    return new Array();\n  }\n}\n\nexport function findElement(root, selector) {\n  if (typeof root == \"string\") {\n    selector = root\n    root = document\n  }\n  return root.querySelector(selector)\n}\n\nexport function removeElement(el) {\n  if (el && el.parentNode) {\n    el.parentNode.removeChild(el);\n  }\n}\n\nexport function insertAfter(el, referenceNode) {\n    return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\n}", "export default class Logger {\n\n  static LOG_LEVEL_VERBOSE = 0\n  static LOG_LEVEL_WARNING = 1\n  static LOG_LEVEL_ERROR = 2\n\n  // logLevel 0 will log everything\n  constructor(logLevel = Logger.LOG_LEVEL_VERBOSE) {\n    this.logLevel = logLevel\n  }\n\n  info(tag, message) {\n    this.#logMessage(tag, message, Logger.LOG_LEVEL_VERBOSE)\n  }\n\n  warn(tag, message) {\n    this.#logMessage(tag, message, Logger.LOG_LEVEL_WARNING)\n  }\n\n  error(tag, message) {\n    this.#logMessage(tag, message, Logger.LOG_LEVEL_ERROR)\n  }\n\n  #logMessage(tag, message, level) {\n    if(level < this.logLevel) {\n      return\n    }\n    switch(level) {\n      case 0:\n        this.#infoMessage(`[${tag}] ${message}`)\n        break\n      case 1:\n        this.#warnMessage(`[${tag}] ${message}`)\n        break\n      case 2:\n        this.#errorMessage(`[${tag}] ${message}`)\n        break\n      default:\n        break\n    }\n  }\n\n  #warnMessage(message) {\n    this.#colorTrace(message, \"#F37100\")\n  }\n\n  #infoMessage(message) {\n    this.#colorTrace(message, \"#00CCF2\")\n  }\n\n  #errorMessage(message) {\n    this.#colorTrace(message, \"#FF1000\")\n  }\n\n  #colorTrace(message, color) {\n    console.log(`%c${message}`, `color:${color};`)\n  }\n}", "import { application } from \"../controllers/application\"\n\nimport StimulusReflex from 'stimulus_reflex'\nimport controller from '../controllers/application_controller'\n\nStimulusReflex.initialize(application, { controller, isolate: true })", "/* eslint-disable class-methods-use-this, no-underscore-dangle */\n\nimport get from \"lodash/get\";\nimport has from \"lodash/has\";\nimport merge from \"lodash/merge\";\n\nimport {\n  DateTime,\n  Dict,\n  FormatNumberOptions,\n  I18nOptions,\n  MissingPlaceholderHandler,\n  NullPlaceholderHandler,\n  NumberToCurrencyOptions,\n  NumberToDelimitedOptions,\n  NumberToHumanOptions,\n  NumberToHumanSizeOptions,\n  NumberToPercentageOptions,\n  NumberToRoundedOptions,\n  Numeric,\n  OnChangeHandler,\n  Scope,\n  StrftimeOptions,\n  TimeAgoInWordsOptions,\n  ToSentenceOptions,\n  TranslateOptions,\n} from \"./typing\";\nimport { Locales } from \"./Locales\";\nimport { Pluralization } from \"./Pluralization\";\nimport { MissingTranslation } from \"./MissingTranslation\";\nimport {\n  camelCaseKeys,\n  createTranslationOptions,\n  formatNumber,\n  getFullScope,\n  inferType,\n  interpolate,\n  isSet,\n  lookup,\n  numberToDelimited,\n  numberToHuman,\n  numberToHumanSize,\n  parseDate,\n  pluralize,\n  strftime,\n  timeAgoInWords,\n} from \"./helpers\";\n\nconst DEFAULT_I18N_OPTIONS: I18nOptions = {\n  defaultLocale: \"en\",\n  locale: \"en\",\n  defaultSeparator: \".\",\n  placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm,\n  enableFallback: false,\n  missingBehavior: \"message\",\n  missingTranslationPrefix: \"\",\n\n  missingPlaceholder: (_i18n: I18n, placeholder: string): string =>\n    `[missing \"${placeholder}\" value]`,\n\n  nullPlaceholder: (\n    i18n: I18n,\n    placeholder,\n    message: string,\n    options: Dict,\n  ): string => i18n.missingPlaceholder(i18n, placeholder, message, options),\n\n  transformKey: (key: string): string => key,\n};\n\nexport class I18n {\n  private _locale: string = DEFAULT_I18N_OPTIONS.locale;\n  private _defaultLocale: string = DEFAULT_I18N_OPTIONS.defaultLocale;\n  private _version = 0;\n\n  /**\n   * List of all onChange handlers.\n   *\n   * @type {OnChangeHandler[]}\n   */\n  public onChangeHandlers: OnChangeHandler[] = [];\n\n  /**\n   * Set the default string separator. Defaults to `.`, as in\n   * `scope.translation`.\n   *\n   * @type {string}\n   */\n  public defaultSeparator: string;\n\n  /**\n   * Set if engine should fallback to the default locale when a translation is\n   * missing. Defaults to `false`.\n   *\n   * When enabled, missing translations will first be looked for in less\n   * specific versions of the requested locale and if that fails by taking them\n   * from your `I18n#defaultLocale`.\n   *\n   * @type {boolean}\n   */\n  public enableFallback: boolean;\n\n  /**\n   * The locale resolver registry.\n   *\n   * @see {@link Locales}\n   *\n   * @type {Locales}\n   */\n  public locales: Locales;\n\n  /**\n   * The pluralization behavior registry.\n   *\n   * @see {@link Pluralization}\n   *\n   * @type {Pluralization}\n   */\n  public pluralization: Pluralization;\n\n  /**\n   * Set missing translation behavior.\n   *\n   * - `message` will display a message that the translation is missing.\n   * - `guess` will try to guess the string.\n   * - `error` will raise an exception whenever a translation is not defined.\n   *\n   * See {@link MissingTranslation.register} for instructions on how to define\n   * your own behavior.\n   *\n   * @type {MissingBehavior}\n   */\n  public missingBehavior: string;\n\n  /**\n   * Return a missing placeholder message for given parameters.\n   *\n   * @type {MissingPlaceholderHandler}\n   */\n  public missingPlaceholder: MissingPlaceholderHandler;\n\n  /**\n   * If you use missingBehavior with 'message', but want to know that the string\n   * is actually missing for testing purposes, you can prefix the guessed string\n   * by setting the value here. By default, no prefix is used.\n   *\n   * @type {string}\n   */\n  public missingTranslationPrefix: string;\n\n  /**\n   * Return a placeholder message for null values. Defaults to the same behavior\n   * as `I18n.missingPlaceholder`.\n   *\n   * @type {NullPlaceholderHandler}\n   */\n  public nullPlaceholder: NullPlaceholderHandler;\n\n  /**\n   * The missing translation behavior registry.\n   *\n   * @see {@link MissingTranslation}\n   *\n   * @type {MissingTranslation}\n   */\n  public missingTranslation: MissingTranslation;\n\n  /**\n   * Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.\n   *\n   * @type {RegExp}\n   */\n  public placeholder: RegExp;\n\n  /**\n   * Set the registered translations. The root key must always be the locale\n   * (and its variations with region).\n   *\n   * Remember that no events will be triggered if you change this object\n   * directly. To trigger `onchange` events, you must perform updates either\n   * using `I18n#store` or `I18n#update`.\n   *\n   * @type {Dict}\n   */\n  public translations: Dict = {};\n\n  /**\n   * Transform keys. By default, it returns the key as it is, but allows for\n   * overriding. For instance, you can set a function to receive the camelcase\n   * key, and convert it to snake case.\n   *\n   * @type {(key: string) => string}\n   */\n  public transformKey: (key: string) => string;\n\n  /**\n   * Override the interpolation function. For the default implementation, see\n   * <https://github.com/fnando/i18n/tree/main/src/helpers/interpolate.ts>\n   * @type {(i18n: I18n, message: string, options: TranslateOptions) => string}\n   */\n  public interpolate: typeof interpolate;\n\n  constructor(translations: Dict = {}, options: Partial<I18nOptions> = {}) {\n    const {\n      locale,\n      enableFallback,\n      missingBehavior,\n      missingTranslationPrefix,\n      missingPlaceholder,\n      nullPlaceholder,\n      defaultLocale,\n      defaultSeparator,\n      placeholder,\n      transformKey,\n    }: I18nOptions = {\n      ...DEFAULT_I18N_OPTIONS,\n      ...options,\n    };\n\n    this.locale = locale;\n    this.defaultLocale = defaultLocale;\n    this.defaultSeparator = defaultSeparator;\n    this.enableFallback = enableFallback;\n    this.locale = locale;\n    this.missingBehavior = missingBehavior;\n    this.missingTranslationPrefix = missingTranslationPrefix;\n    this.missingPlaceholder = missingPlaceholder;\n    this.nullPlaceholder = nullPlaceholder;\n    this.placeholder = placeholder;\n    this.pluralization = new Pluralization(this);\n    this.locales = new Locales(this);\n    this.missingTranslation = new MissingTranslation(this);\n    this.transformKey = transformKey;\n    this.interpolate = interpolate;\n\n    this.store(translations);\n  }\n\n  /**\n   * Update translations by merging them. Newest translations will override\n   * existing ones.\n   *\n   * @param {Dict} translations An object containing the translations that will\n   * be merged into existing translations.\n   *\n   * @returns {void}\n   */\n  public store(translations: Dict): void {\n    merge(this.translations, translations);\n    this.hasChanged();\n  }\n\n  /**\n   * Return the current locale, using a explicit locale set using\n   * `i18n.locale = newLocale`, the default locale set using\n   * `i18n.defaultLocale` or the fallback, which is `en`.\n   *\n   * @returns {string} The current locale.\n   */\n  public get locale(): string {\n    return this._locale || this.defaultLocale || \"en\";\n  }\n\n  /**\n   * Set the current locale explicitly.\n   *\n   * @param {string} newLocale The new locale.\n   */\n  public set locale(newLocale: string) {\n    if (typeof newLocale !== \"string\") {\n      throw new Error(\n        `Expected newLocale to be a string; got ${inferType(newLocale)}`,\n      );\n    }\n\n    const changed = this._locale !== newLocale;\n\n    this._locale = newLocale;\n\n    if (changed) {\n      this.hasChanged();\n    }\n  }\n\n  /**\n   * Return the default locale, using a explicit locale set using\n   * `i18n.defaultLocale = locale`, the default locale set using\n   * `i18n.defaultLocale` or the fallback, which is `en`.\n   *\n   * @returns {string} The current locale.\n   */\n  public get defaultLocale(): string {\n    return this._defaultLocale || \"en\";\n  }\n\n  /**\n   * Set the default locale explicitly.\n   *\n   * @param {string} newLocale The new locale.\n   */\n  public set defaultLocale(newLocale: string) {\n    if (typeof newLocale !== \"string\") {\n      throw new Error(\n        `Expected newLocale to be a string; got ${inferType(newLocale)}`,\n      );\n    }\n\n    const changed = this._defaultLocale !== newLocale;\n\n    this._defaultLocale = newLocale;\n\n    if (changed) {\n      this.hasChanged();\n    }\n  }\n\n  /**\n   * Translate the given scope with the provided options.\n   *\n   * @param {string|array} scope The scope that will be used.\n   *\n   * @param {TranslateOptions} options The options that will be used on the\n   * translation. Can include some special options like `defaultValue`, `count`,\n   * and `scope`. Everything else will be treated as replacement values.\n   *\n   * @param {number} options.count Enable pluralization. The returned\n   * translation will depend on the detected pluralizer.\n   *\n   * @param {any} options.defaultValue The default value that will used in case\n   * the translation defined by `scope` cannot be found. Can be a function that\n   * returns a string; the signature is\n   * `(i18n:I18n, options: TranslateOptions): string`.\n   *\n   * @param {MissingBehavior|string} options.missingBehavior The missing\n   * behavior that will be used instead of the default one.\n   *\n   * @param {Dict[]} options.defaults  An array of hashs where the key is the\n   * type of translation desired, a `scope` or a `message`. The translation\n   * returned will be either the first scope recognized, or the first message\n   * defined.\n   *\n   * @returns {T | string} The translated string.\n   */\n  public translate<T = string>(\n    scope: Scope,\n    options?: TranslateOptions,\n  ): string | T {\n    options = { ...options };\n\n    const translationOptions: TranslateOptions[] = createTranslationOptions(\n      this,\n      scope,\n      options,\n    ) as TranslateOptions[];\n\n    let translation: string | Dict | undefined;\n\n    // Iterate through the translation options until a translation\n    // or message is found.\n    const hasFoundTranslation = translationOptions.some(\n      (translationOption: TranslateOptions) => {\n        if (isSet(translationOption.scope)) {\n          translation = lookup(this, translationOption.scope as Scope, options);\n        } else if (isSet(translationOption.message)) {\n          translation = translationOption.message;\n        }\n\n        return translation !== undefined && translation !== null;\n      },\n    );\n\n    if (!hasFoundTranslation) {\n      return this.missingTranslation.get(scope, options);\n    }\n\n    if (typeof translation === \"string\") {\n      translation = this.interpolate(this, translation, options);\n    } else if (\n      typeof translation === \"object\" &&\n      translation &&\n      isSet(options.count)\n    ) {\n      translation = pluralize({\n        i18n: this,\n        count: options.count || 0,\n        scope: translation as unknown as string,\n        options,\n        baseScope: getFullScope(this, scope, options),\n      });\n    }\n\n    if (options && translation instanceof Array) {\n      translation = translation.map((entry) =>\n        typeof entry === \"string\"\n          ? interpolate(this, entry, options as TranslateOptions)\n          : entry,\n      );\n    }\n\n    return translation as string | T;\n  }\n\n  /**\n   * @alias {@link translate}\n   */\n  public t = this.translate;\n\n  /**\n   * Pluralize the given scope using the `count` value. The pluralized\n   * translation may have other placeholders, which will be retrieved from\n   * `options`.\n   *\n   * @param {number} count The counting number.\n   *\n   * @param {Scope} scope The translation scope.\n   *\n   * @param {TranslateOptions} options The translation options.\n   *\n   * @returns {string} The translated string.\n   */\n  public pluralize(\n    count: number,\n    scope: Scope,\n    options?: TranslateOptions,\n  ): string {\n    return pluralize({\n      i18n: this,\n      count,\n      scope,\n      options: { ...options },\n      baseScope: getFullScope(this, scope, options ?? {}),\n    });\n  }\n\n  /**\n   * @alias {@link pluralize}\n   */\n  public p = this.pluralize;\n\n  /**\n   * Localize several values.\n   *\n   * You can provide the following scopes: `currency`, `number`, or\n   * `percentage`. If you provide a scope that matches the `/^(date|time)/`\n   * regular expression then the `value` will be converted by using the\n   * `I18n.toTime` function. It will default to the value's `toString` function.\n   *\n   * If value is either `null` or `undefined` then an empty string will be\n   * returned, regardless of what localization type has been used.\n   *\n   * @param {string} type The localization type.\n   *\n   * @param {string|number|Date} value The value that must be localized.\n   *\n   * @param {Dict} options The localization options.\n   *\n   * @returns {string} The localized string.\n   */\n  public localize(\n    type: string,\n    value: string | number | Date | null | undefined,\n    options?: Dict,\n  ): string {\n    options = { ...options };\n\n    if (value === undefined || value === null) {\n      return \"\";\n    }\n\n    switch (type) {\n      case \"currency\":\n        return this.numberToCurrency(value as number);\n\n      case \"number\":\n        return formatNumber(value as number, {\n          delimiter: \",\",\n          precision: 3,\n          separator: \".\",\n          significant: false,\n          stripInsignificantZeros: false,\n          ...lookup(this, \"number.format\"),\n        });\n\n      case \"percentage\":\n        return this.numberToPercentage(value as number);\n\n      default: {\n        let localizedValue: string;\n\n        if (type.match(/^(date|time)/)) {\n          localizedValue = this.toTime(type, value as DateTime);\n        } else {\n          localizedValue = (value as string | number | Date).toString();\n        }\n\n        return interpolate(this, localizedValue, options);\n      }\n    }\n  }\n\n  /**\n   * @alias {@link localize}\n   */\n  public l = this.localize;\n\n  /**\n   * Convert the given dateString into a formatted date.\n   *\n   * @param {scope} scope The formatting scope.\n   *\n   * @param {DateTime} input The string that must be parsed into a Date object.\n   *\n   * @returns {string} The formatted date.\n   */\n  public toTime(scope: Scope, input: DateTime): string {\n    const date = parseDate(input);\n    const format: string = lookup(this, scope);\n\n    if (date.toString().match(/invalid/i)) {\n      return date.toString();\n    }\n\n    if (!format) {\n      return date.toString();\n    }\n\n    return this.strftime(date, format);\n  }\n\n  /**\n   * Formats a `number` into a currency string (e.g., $13.65). You can customize\n   * the format in the using an `options` object.\n   *\n   * The currency unit and number formatting of the current locale will be used\n   * unless otherwise specified in the provided options. No currency conversion\n   * is performed. If the user is given a way to change their locale, they will\n   * also be able to change the relative value of the currency displayed with\n   * this helper.\n   *\n   * @example\n   * ```js\n   * i18n.numberToCurrency(1234567890.5);\n   * // => \"$1,234,567,890.50\"\n   *\n   * i18n.numberToCurrency(1234567890.506);\n   * // => \"$1,234,567,890.51\"\n   *\n   * i18n.numberToCurrency(1234567890.506, { precision: 3 });\n   * // => \"$1,234,567,890.506\"\n   *\n   * i18n.numberToCurrency(\"123a456\");\n   * // => \"$123a456\"\n   *\n   * i18n.numberToCurrency(\"123a456\", { raise: true });\n   * // => raises exception (\"123a456\" is not a valid numeric value)\n   *\n   * i18n.numberToCurrency(-0.456789, { precision: 0 });\n   * // => \"$0\"\n   *\n   * i18n.numberToCurrency(-1234567890.5, { negativeFormat: \"(%u%n)\" });\n   * // => \"($1,234,567,890.50)\"\n   *\n   * i18n.numberToCurrency(1234567890.5, {\n   *   unit: \"&pound;\",\n   *   separator: \",\",\n   *   delimiter: \"\",\n   * });\n   * // => \"&pound;1234567890,50\"\n   *\n   * i18n.numberToCurrency(1234567890.5, {\n   *   unit: \"&pound;\",\n   *   separator: \",\",\n   *   delimiter: \"\",\n   *   format: \"%n %u\",\n   * });\n   * // => \"1234567890,50 &pound;\"\n   *\n   * i18n.numberToCurrency(1234567890.5, { stripInsignificantZeros: true });\n   * // => \"$1,234,567,890.5\"\n   *\n   * i18n.numberToCurrency(1234567890.5, { precision: 0, roundMode: \"up\" });\n   * // => \"$1,234,567,891\"\n   * ```\n   *\n   * @param {Numeric} input  The number to be formatted.\n   *\n   * @param {NumberToCurrencyOptions} options The formatting options. When\n   * defined, supersedes the default options defined by `number.format` and\n   * `number.currency.*`.\n   *\n   * @param {number} options.precision Sets the level of precision (defaults to\n   * 2).\n   *\n   * @param {RoundingMode} options.roundMode Determine how rounding is performed\n   * (defaults to `default`.)\n   *\n   * @param {string} options.unit Sets the denomination of the currency\n   * (defaults to \"$\").\n   *\n   * @param {string} options.separator Sets the separator between the units\n   * (defaults to \".\").\n   *\n   * @param {string} options.delimiter Sets the thousands delimiter\n   * (defaults to \",\").\n   *\n   * @param {string} options.format Sets the format for non-negative numbers\n   * (defaults to \"%u%n\"). Fields are `%u` for the currency, and `%n` for the\n   * number.\n   *\n   * @param {string} options.negativeFormat Sets the format for negative numbers\n   * (defaults to prepending a hyphen to the formatted number given by\n   * `format`). Accepts the same fields than `format`, except `%n` is here the\n   * absolute value of the number.\n   *\n   * @param {boolean} options.stripInsignificantZeros If `true` removes\n   * insignificant zeros after the decimal separator (defaults to `false`).\n   *\n   * @param {boolean} options.raise If `true`, raises exception for non-numeric\n   * values like `NaN` and infinite values.\n   *\n   * @returns {string} The formatted number.\n   */\n  public numberToCurrency(\n    input: Numeric,\n    options: Partial<NumberToCurrencyOptions> = {},\n  ): string {\n    return formatNumber(input, {\n      delimiter: \",\",\n      format: \"%u%n\",\n      precision: 2,\n      separator: \".\",\n      significant: false,\n      stripInsignificantZeros: false,\n      unit: \"$\",\n      ...camelCaseKeys<Partial<FormatNumberOptions>>(this.get(\"number.format\")),\n      ...camelCaseKeys<Partial<NumberToCurrencyOptions>>(\n        this.get(\"number.currency.format\"),\n      ),\n      ...options,\n    } as FormatNumberOptions);\n  }\n\n  /**\n   * Convert a number into a formatted percentage value.\n   *\n   * @example\n   * ```js\n   * i18n.numberToPercentage(100);\n   * // => \"100.000%\"\n   *\n   * i18n.numberToPercentage(\"98\");\n   * // => \"98.000%\"\n   *\n   * i18n.numberToPercentage(100, { precision: 0 });\n   * // => \"100%\"\n   *\n   * i18n.numberToPercentage(1000, { delimiter: \".\", separator: \",\" });\n   * // => \"1.000,000%\"\n   *\n   * i18n.numberToPercentage(302.24398923423, { precision: 5 });\n   * // => \"302.24399%\"\n   *\n   * i18n.numberToPercentage(1000, { precision: null });\n   * // => \"1000%\"\n   *\n   * i18n.numberToPercentage(\"98a\");\n   * // => \"98a%\"\n   *\n   * i18n.numberToPercentage(100, { format: \"%n  %\" });\n   * // => \"100.000  %\"\n   *\n   * i18n.numberToPercentage(302.24398923423, { precision: 5, roundMode: \"down\" });\n   * // => \"302.24398%\"\n   * ```\n   *\n   * @param {Numeric} input The number to be formatted.\n   *\n   * @param {NumberToPercentageOptions} options The formatting options. When\n   * defined, supersedes the default options stored at `number.format` and\n   * `number.percentage.*`.\n   *\n   * @param {number} options.precision Sets the level of precision (defaults to\n   * 3).\n   *\n   * @param {RoundingMode} options.roundMode Determine how rounding is performed\n   * (defaults to `default`.)\n   *\n   * @param {string} options.separator Sets the separator between the units\n   * (defaults to \".\").\n   *\n   * @param {string} options.delimiter Sets the thousands delimiter (defaults to\n   * \"\").\n   *\n   * @param {string} options.format Sets the format for non-negative numbers\n   * (defaults to \"%n%\"). The number field is represented by `%n`.\n   *\n   * @param {string} options.negativeFormat Sets the format for negative numbers\n   * (defaults to prepending a hyphen to the formatted number given by\n   * `format`). Accepts the same fields than `format`, except `%n` is here the\n   * absolute value of the number.\n   *\n   * @param {boolean} options.stripInsignificantZeros If `true` removes\n   * insignificant zeros after the decimal separator (defaults to `false`).\n   *\n   * @returns {string} The formatted number.\n   */\n  public numberToPercentage(\n    input: Numeric,\n    options: Partial<NumberToPercentageOptions> = {},\n  ): string {\n    return formatNumber(input, {\n      delimiter: \"\",\n      format: \"%n%\",\n      precision: 3,\n      stripInsignificantZeros: false,\n      separator: \".\",\n      significant: false,\n      ...camelCaseKeys<Partial<FormatNumberOptions>>(this.get(\"number.format\")),\n      ...camelCaseKeys<Partial<NumberToPercentageOptions>>(\n        this.get(\"number.percentage.format\"),\n      ),\n      ...options,\n    } as FormatNumberOptions);\n  }\n\n  /**\n   * Convert a number into a readable size representation.\n   *\n   * @example\n   * ```js\n   * i18n.numberToHumanSize(123)\n   * // => \"123 Bytes\"\n   *\n   * i18n.numberToHumanSize(1234)\n   * // => \"1.21 KB\"\n   *\n   * i18n.numberToHumanSize(12345)\n   * // => \"12.1 KB\"\n   *\n   * i18n.numberToHumanSize(1234567)\n   * // => \"1.18 MB\"\n   *\n   * i18n.numberToHumanSize(1234567890)\n   * // => \"1.15 GB\"\n   *\n   * i18n.numberToHumanSize(1234567890123)\n   * // => \"1.12 TB\"\n   *\n   * i18n.numberToHumanSize(1234567890123456)\n   * // => \"1.1 PB\"\n   *\n   * i18n.numberToHumanSize(1234567890123456789)\n   * // => \"1.07 EB\"\n   *\n   * i18n.numberToHumanSize(1234567, {precision: 2})\n   * // => \"1.2 MB\"\n   *\n   * i18n.numberToHumanSize(483989, precision: 2)\n   * // => \"470 KB\"\n   *\n   * i18n.numberToHumanSize(483989, {precision: 2, roundMode: \"up\"})\n   * // => \"480 KB\"\n   *\n   * i18n.numberToHumanSize(1234567, {precision: 2, separator: \",\"})\n   * // => \"1,2 MB\"\n   *\n   * i18n.numberToHumanSize(1234567890123, {precision: 5})\n   * // => \"1.1228 TB\"\n   *\n   * i18n.numberToHumanSize(524288000, {precision: 5})\n   * // => \"500 MB\"\n   * ```\n   *\n   * @param {Numeric} input The number that will be formatted.\n   *\n   * @param {NumberToHumanSizeOptions} options The formatting options. When\n   * defined, supersedes the default options stored at\n   * `number.human.storage_units.*` and `number.human.format`.\n   *\n   * @param {number} options.precision Sets the precision of the number\n   * (defaults to 3).\n   *\n   * @param {RoundingMode} options.roundMode Determine how rounding is performed\n   * (defaults to `default`)\n   *\n   * @param {boolean} options.significant If `true`, precision will be the\n   * number of significant digits. If `false`, the number of fractional digits\n   * (defaults to `true`).\n   *\n   * @param {string} options.separator Sets the separator between the fractional\n   * and integer digits (defaults to \".\").\n   *\n   * @param {string} options.delimiter Sets the thousands delimiter (defaults\n   * to \"\").\n   *\n   * @param {boolean} options.stripInsignificantZeros If `true` removes\n   * insignificant zeros after the decimal separator (defaults to `true`).\n   *\n   * @returns {string} The formatted number.\n   */\n  public numberToHumanSize(\n    input: Numeric,\n    options: Partial<NumberToHumanSizeOptions> = {},\n  ): string {\n    return numberToHumanSize(this, input, {\n      delimiter: \"\",\n      precision: 3,\n      significant: true,\n      stripInsignificantZeros: true,\n      units: {\n        billion: \"Billion\",\n        million: \"Million\",\n        quadrillion: \"Quadrillion\",\n        thousand: \"Thousand\",\n        trillion: \"Trillion\",\n        unit: \"\",\n      },\n      ...camelCaseKeys<Partial<NumberToHumanSizeOptions>>(\n        this.get(\"number.human.format\"),\n      ),\n      ...camelCaseKeys<Partial<NumberToHumanSizeOptions>>(\n        this.get(\"number.human.storage_units\"),\n      ),\n      ...options,\n    } as NumberToHumanSizeOptions);\n  }\n\n  /**\n   * Convert a number into a readable representation.\n   *\n   * @example\n   * ```js\n   * i18n.numberToHuman(123);\n   * // => \"123\"\n   *\n   * i18n.numberToHuman(1234);\n   * // => \"1.23 Thousand\"\n   *\n   * i18n.numberToHuman(12345);\n   * // => \"12.3 Thousand\"\n   *\n   * i18n.numberToHuman(1234567);\n   * // => \"1.23 Million\"\n   *\n   * i18n.numberToHuman(1234567890);\n   * // => \"1.23 Billion\"\n   *\n   * i18n.numberToHuman(1234567890123);\n   * // => \"1.23 Trillion\"\n   *\n   * i18n.numberToHuman(1234567890123456);\n   * // => \"1.23 Quadrillion\"\n   *\n   * i18n.numberToHuman(1234567890123456789);\n   * // => \"1230 Quadrillion\"\n   *\n   * i18n.numberToHuman(489939, { precision: 2 });\n   * // => \"490 Thousand\"\n   *\n   * i18n.numberToHuman(489939, { precision: 4 });\n   * // => \"489.9 Thousand\"\n   *\n   * i18n.numberToHuman(489939, { precision: 2, roundMode: \"down\" });\n   * // => \"480 Thousand\"\n   *\n   * i18n.numberToHuman(1234567, { precision: 4, significant: false });\n   * // => \"1.2346 Million\"\n   *\n   * i18n.numberToHuman(1234567, {\n   *   precision: 1,\n   *   separator: \",\",\n   *   significant: false,\n   * });\n   * // => \"1,2 Million\"\n   *\n   * i18n.numberToHuman(500000000, { precision: 5 });\n   * // => \"500 Million\"\n   *\n   * i18n.numberToHuman(12345012345, { significant: false });\n   * // => \"12.345 Billion\"\n   * ```\n   *\n   * Non-significant zeros after the decimal separator are stripped out by default\n   * (set `stripInsignificantZeros` to `false` to change that):\n   *\n   * ```js\n   * i18n.numberToHuman(12.00001);\n   * // => \"12\"\n   *\n   * i18n.numberToHuman(12.00001, { stripInsignificantZeros: false });\n   * // => \"12.0\"\n   * ```\n   *\n   * You can also use your own custom unit quantifiers:\n   *\n   * ```js\n   * i18n.numberToHuman(500000, units: { unit: \"ml\", thousand: \"lt\" });\n   * // => \"500 lt\"\n   * ```\n   *\n   * If in your I18n locale you have:\n   *\n   * ```yaml\n   * ---\n   * en:\n   *   distance:\n   *     centi:\n   *       one: \"centimeter\"\n   *       other: \"centimeters\"\n   *     unit:\n   *       one: \"meter\"\n   *       other: \"meters\"\n   *     thousand:\n   *       one: \"kilometer\"\n   *       other: \"kilometers\"\n   *     billion: \"gazillion-distance\"\n   * ```\n   *\n   * Then you could do:\n   *\n   * ```js\n   * i18n.numberToHuman(543934, { units: \"distance\" });\n   * // => \"544 kilometers\"\n   *\n   * i18n.numberToHuman(54393498, { units: \"distance\" });\n   * // => \"54400 kilometers\"\n   *\n   * i18n.numberToHuman(54393498000, { units: \"distance\" });\n   * // => \"54.4 gazillion-distance\"\n   *\n   * i18n.numberToHuman(343, { units: \"distance\", precision: 1 });\n   * // => \"300 meters\"\n   *\n   * i18n.numberToHuman(1, { units: \"distance\" });\n   * // => \"1 meter\"\n   *\n   * i18n.numberToHuman(0.34, { units: \"distance\" });\n   * // => \"34 centimeters\"\n   * ```\n   *\n   * @param  {Numeric} input The number that will be formatted.\n   *\n   * @param  {NumberToHumanOptions} options The formatting options. When\n   * defined, supersedes the default options stored at `number.human.format.*`\n   * and `number.human.storage_units.*`.\n   *\n   * @param {number} options.precision Sets the precision of the number\n   * (defaults to 3).\n   *\n   * @param {RoundingMode} options.roundMode Determine how rounding is performed\n   * (defaults to `default`).\n   *\n   * @param {boolean} options.significant If `true`, precision will be the\n   * number of significant_digits. If `false`, the number of fractional digits\n   * (defaults to `true`)\n   *\n   * @param {string} options.separator Sets the separator between the fractional\n   * and integer digits (defaults to \".\").\n   *\n   * @param {string} options.delimiter Sets the thousands delimiter\n   * (defaults to \"\").\n   *\n   * @param {boolean} options.stripInsignificantZeros If `true` removes\n   * insignificant zeros after the decimal separator (defaults to `true`).\n   *\n   * @param {Dict} options.units A Hash of unit quantifier names. Or a string\n   * containing an I18n scope where to find this object. It might have the\n   * following keys:\n   *\n   * - _integers_: `unit`, `ten`, `hundred`, `thousand`, `million`, `billion`,\n   *   `trillion`, `quadrillion`\n   * - _fractionals_: `deci`, `centi`, `mili`, `micro`, `nano`, `pico`, `femto`\n   *\n   * @param {string} options.format Sets the format of the output string\n   * (defaults to \"%n %u\"). The field types are:\n   *\n   * - `%u` - The quantifier (ex.: 'thousand')\n   * - `%n` - The number\n   *\n   * @returns {string} The formatted number.\n   */\n  public numberToHuman(\n    input: Numeric,\n    options: Partial<NumberToHumanOptions> = {},\n  ): string {\n    return numberToHuman(this, input, {\n      delimiter: \"\",\n      separator: \".\",\n      precision: 3,\n      significant: true,\n      stripInsignificantZeros: true,\n      format: \"%n %u\",\n      roundMode: \"default\",\n      units: {\n        billion: \"Billion\",\n        million: \"Million\",\n        quadrillion: \"Quadrillion\",\n        thousand: \"Thousand\",\n        trillion: \"Trillion\",\n        unit: \"\",\n      },\n      ...camelCaseKeys<Partial<NumberToHumanOptions>>(\n        this.get(\"number.human.format\"),\n      ),\n      ...camelCaseKeys<Partial<NumberToHumanOptions>>(\n        this.get(\"number.human.decimal_units\"),\n      ),\n      ...options,\n    } as NumberToHumanOptions);\n  }\n\n  /**\n   * Convert number to a formatted rounded value.\n   *\n   * @example\n   * ```js\n   * i18n.numberToRounded(111.2345);\n   * // => \"111.235\"\n   *\n   * i18n.numberToRounded(111.2345, { precision: 2 });\n   * // => \"111.23\"\n   *\n   * i18n.numberToRounded(13, { precision: 5 });\n   * // => \"13.00000\"\n   *\n   * i18n.numberToRounded(389.32314, { precision: 0 });\n   * // => \"389\"\n   *\n   * i18n.numberToRounded(111.2345, { significant: true });\n   * // => \"111\"\n   *\n   * i18n.numberToRounded(111.2345, { precision: 1, significant: true });\n   * // => \"100\"\n   *\n   * i18n.numberToRounded(13, { precision: 5, significant: true });\n   * // => \"13.000\"\n   *\n   * i18n.numberToRounded(13, { precision: null });\n   * // => \"13\"\n   *\n   * i18n.numberToRounded(389.32314, { precision: 0, roundMode: \"up\" });\n   * // => \"390\"\n   *\n   * i18n.numberToRounded(13, {\n   *   precision: 5,\n   *   significant: true,\n   *   stripInsignificantZeros: true,\n   * });\n   * // => \"13\"\n   *\n   * i18n.numberToRounded(389.32314, { precision: 4, significant: true });\n   * // => \"389.3\"\n   *\n   * i18n.numberToRounded(1111.2345, {\n   *   precision: 2,\n   *   separator: \",\",\n   *   delimiter: \".\",\n   * });\n   * // => \"1.111,23\"\n   * ```\n   *\n   * @param {Numeric} input The number to be formatted.\n   *\n   * @param {NumberToRoundedOptions} options The formatting options.\n   *\n   * @param {number} options.precision  Sets the precision of the number\n   * (defaults to 3).\n   *\n   * @param {string} options.separator  Sets the separator between the\n   * fractional and integer digits (defaults to \".\").\n   *\n   * @param {RoundingMode} options.roundMode  Determine how rounding is\n   * performed.\n   *\n   * @param {boolean} options.significant  If `true`, precision will be the\n   * number of significant_digits. If `false`, the number of fractional digits\n   * (defaults to `false`).\n   *\n   * @param {boolean} options.stripInsignificantZeros If `true` removes\n   * insignificant zeros after the decimal separator (defaults to `false`).\n   *\n   * @returns {string} The formatted number.\n   */\n  public numberToRounded(\n    input: Numeric,\n    options?: Partial<NumberToRoundedOptions>,\n  ): string {\n    return formatNumber(input, {\n      unit: \"\",\n      precision: 3,\n      significant: false,\n      separator: \".\",\n      delimiter: \"\",\n      stripInsignificantZeros: false,\n      ...options,\n    } as FormatNumberOptions);\n  }\n\n  /**\n   * Formats a +number+ with grouped thousands using `delimiter` (e.g., 12,324).\n   * You can customize the format in the `options` parameter.\n   *\n   * @example\n   * ```js\n   * i18n.numberToDelimited(12345678);\n   * // => \"12,345,678\"\n   *\n   * i18n.numberToDelimited(\"123456\");\n   * // => \"123,456\"\n   *\n   * i18n.numberToDelimited(12345678.05);\n   * // => \"12,345,678.05\"\n   *\n   * i18n.numberToDelimited(12345678, { delimiter: \".\" });\n   * // => \"12.345.678\"\n   *\n   * i18n.numberToDelimited(12345678, { delimiter: \",\" });\n   * // => \"12,345,678\"\n   *\n   * i18n.numberToDelimited(12345678.05, { separator: \" \" });\n   * // => \"12,345,678 05\"\n   *\n   * i18n.numberToDelimited(\"112a\");\n   * // => \"112a\"\n   *\n   * i18n.numberToDelimited(98765432.98, { delimiter: \" \", separator: \",\" });\n   * // => \"98 765 432,98\"\n   *\n   * i18n.numberToDelimited(\"123456.78\", {\n   *   delimiterPattern: /(\\d+?)(?=(\\d\\d)+(\\d)(?!\\d))/g,\n   * });\n   * // => \"1,23,456.78\"\n   * ```\n   *\n   * @param {Numeric} input The numeric value that will be formatted.\n   *\n   * @param {NumberToDelimitedOptions} options The formatting options.\n   *\n   * @param {string} options.delimiter Sets the thousands delimiter (defaults to\n   * \",\").\n   *\n   * @param {string} options.separator Sets the separator between the fractional\n   * and integer digits (defaults to \".\").\n   *\n   * @param {RegExp} options.delimiterPattern Sets a custom regular expression\n   * used for deriving the placement of delimiter. Helpful when using currency\n   * formats like INR.\n   *\n   * @return {string} The formatted number.\n   */\n  public numberToDelimited(\n    input: Numeric,\n    options: Partial<NumberToDelimitedOptions> = {},\n  ): string {\n    return numberToDelimited(input, {\n      delimiterPattern: /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g,\n      delimiter: \",\",\n      separator: \".\",\n      ...options,\n    } as NumberToDelimitedOptions);\n  }\n\n  /**\n   * Executes function with given locale set. The locale will be changed only\n   * during the `callback`'s execution, switching back to the previous value\n   * once it finishes (with or without errors).\n   *\n   * This is an asynchronous call, which means you must use `await` or you may\n   * end up with a race condition.\n   *\n   * @example\n   * ```js\n   * await i18n.withLocale(\"pt\", () => {\n   *   console.log(i18n.t(\"hello\"));\n   * });\n   * ```\n   *\n   * @param {string} locale The temporary locale that will be set during the\n   * function's execution.\n   *\n   * @param {Function} callback The function that will be executed with a\n   * temporary locale set.\n   *\n   * @returns {void}\n   */\n  public async withLocale(locale: string, callback: () => void): Promise<void> {\n    const originalLocale = this.locale;\n\n    try {\n      this.locale = locale;\n      await callback();\n    } finally {\n      this.locale = originalLocale;\n    }\n  }\n\n  /**\n   * Formats time according to the directives in the given format string.\n   * The directives begins with a percent (`%`) character. Any text not listed\n   * as a directive will be passed through to the output string.\n   *\n   * @see strftime\n   *\n   * @param {Date} date The date that will be formatted.\n   *\n   * @param {string} format The formatting string.\n   *\n   * @param {StrftimeOptions} options The formatting options.\n   *\n   * @returns {string}        The formatted date.\n   */\n  public strftime(\n    date: Date,\n    format: string,\n    options: Partial<StrftimeOptions> = {},\n  ): string {\n    return strftime(date, format, {\n      ...camelCaseKeys(lookup(this, \"date\")),\n      meridian: {\n        am: lookup(this, \"time.am\") || \"AM\",\n        pm: lookup(this, \"time.pm\") || \"PM\",\n      },\n      ...options,\n    });\n  }\n\n  /**\n   * You may want to update a part of your translations. This is a public\n   * interface for doing it so.\n   *\n   * If the provided path exists, it'll be replaced. Otherwise, a new node will\n   * be created. When running in strict mode, paths that doesn't already exist\n   * will raise an exception.\n   *\n   * Strict mode will also raise an exception if the override type differs from\n   * previous node type.\n   *\n   * @example\n   * ```js\n   * i18n.update(\"en.number.format\", {unit: \"%n %u\"});\n   * i18n.update(\"en.number.format\", {unit: \"%n %u\"}, true);\n   * ```\n   *\n   * @param {string} path The path that's going to be updated. It must\n   * include the language, as in `en.messages`.\n   *\n   * @param {Dict} override The new translation node.\n   *\n   * @param {boolean} options Set options.\n   *\n   * @param {boolean} options.strict Raise an exception if path doesn't already\n   * exist, or if previous node's type differs from new node's type.\n   *\n   * @returns {void}\n   */\n  public update(\n    path: string,\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    override: any,\n    options: { strict: boolean } = { strict: false },\n  ): void {\n    if (options.strict && !has(this.translations, path)) {\n      throw new Error(`The path \"${path}\" is not currently defined`);\n    }\n\n    const currentNode = get(this.translations, path);\n    const currentType = inferType(currentNode);\n    const overrideType = inferType(override);\n\n    if (options.strict && currentType !== overrideType) {\n      throw new Error(\n        `The current type for \"${path}\" is \"${currentType}\", but you're trying to override it with \"${overrideType}\"`,\n      );\n    }\n\n    let newNode: unknown;\n\n    if (overrideType === \"object\") {\n      newNode = { ...currentNode, ...override };\n    } else {\n      newNode = override;\n    }\n\n    const components = path.split(this.defaultSeparator);\n    const prop = components.pop();\n    let buffer = this.translations;\n\n    for (const component of components) {\n      if (!buffer[component]) {\n        buffer[component] = {};\n      }\n\n      buffer = buffer[component];\n    }\n\n    buffer[prop as keyof typeof buffer] = newNode;\n\n    this.hasChanged();\n  }\n\n  /**\n   * Converts the array to a comma-separated sentence where the last element is\n   * joined by the connector word.\n   *\n   * @example\n   * ```js\n   * i18n.toSentence([\"apple\", \"banana\", \"pineapple\"]);\n   * //=> apple, banana, and pineapple.\n   * ```\n   *\n   * @param {any[]} items The list of items that will be joined.\n   *\n   * @param {ToSentenceOptions} options The options.\n   *\n   * @param {string} options.wordsConnector The sign or word used to join the\n   * elements in arrays with two or more elements (default: \", \").\n   *\n   * @param {string} options.twoWordsConnector The sign or word used to join the\n   * elements in arrays with two elements (default: \" and \").\n   *\n   * @param {string} options.lastWordConnector The sign or word used to join the\n   * last element in arrays with three or more elements (default: \", and \").\n   *\n   * @returns {string} The joined string.\n   */\n  public toSentence(\n    items: any[],\n    options: Partial<ToSentenceOptions> = {},\n  ): string {\n    const { wordsConnector, twoWordsConnector, lastWordConnector } = {\n      wordsConnector: \", \",\n      twoWordsConnector: \" and \",\n      lastWordConnector: \", and \",\n      ...camelCaseKeys<Partial<ToSentenceOptions>>(\n        lookup(this, \"support.array\"),\n      ),\n      ...options,\n    } as ToSentenceOptions;\n\n    const size = items.length;\n\n    switch (size) {\n      case 0:\n        return \"\";\n\n      case 1:\n        return `${items[0]}`;\n\n      case 2:\n        return items.join(twoWordsConnector);\n\n      default:\n        return [\n          items.slice(0, size - 1).join(wordsConnector),\n          lastWordConnector,\n          items[size - 1],\n        ].join(\"\");\n    }\n  }\n\n  /**\n   * Reports the approximate distance in time between two time representations.\n   *\n   * @param {DateTime} fromTime The initial time.\n   *\n   * @param {DateTime} toTime The ending time. Defaults to `Date.now()`.\n   *\n   * @param {TimeAgoInWordsOptions} options The options.\n   *\n   * @param {boolean} options.includeSeconds Pass `{includeSeconds: true}` if\n   * you want more detailed approximations when distance < 1 min, 29 secs.\n   *\n   * @param {Scope} options.scope With the scope option, you can define a custom\n   * scope to look up the translation.\n   *\n   * @returns {string} The distance in time representation.\n   */\n  public timeAgoInWords(\n    fromTime: DateTime,\n    toTime: DateTime,\n    options: TimeAgoInWordsOptions = {},\n  ): string {\n    return timeAgoInWords(this, fromTime, toTime, options);\n  }\n\n  /**\n   * @alias {@link timeAgoInWords}\n   */\n  public distanceOfTimeInWords = this.timeAgoInWords;\n\n  /**\n   * Add a callback that will be executed whenever locale/defaultLocale changes,\n   * or `I18n#store` / `I18n#update` is called.\n   *\n   * @param {OnChangeHandler} callback The callback that will be executed.\n   *\n   * @returns {Function} Return a function that can be used to unsubscribe the\n   *                     event handler.\n   *\n   */\n  public onChange(callback: OnChangeHandler): () => void {\n    this.onChangeHandlers.push(callback);\n\n    return () => {\n      this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(callback), 1);\n    };\n  }\n\n  /**\n   * Return the change version. This value is incremented whenever `I18n#store`\n   * or `I18n#update` is called, or when `I18n#locale`/`I18n#defaultLocale` is\n   * set.\n   */\n  public get version(): number {\n    return this._version;\n  }\n\n  /**\n   * Formats a number.\n   *\n   * @param {Numeric}             input   The numeric value that will be\n   *                                      formatted.\n   * @param {FormatNumberOptions} options The formatting options. Defaults to:\n   *                                      `{\n   *                                        delimiter: \",\",\n   *                                        precision: 3,\n   *                                        separator: \".\",\n   *                                        unit: \"\",\n   *                                        format: \"%u%n\",\n   *                                        significant: false,\n   *                                        stripInsignificantZeros: false,\n   *                                      }`\n   * @return {string}                     The formatted number.\n   */\n  public formatNumber(\n    input: Numeric,\n    options: Partial<FormatNumberOptions> = {},\n  ): string {\n    options = {\n      delimiter: \",\",\n      precision: 3,\n      separator: \".\",\n      unit: \"\",\n      format: \"%u%n\",\n      significant: false,\n      stripInsignificantZeros: false,\n      ...camelCaseKeys<Partial<FormatNumberOptions>>(this.get(\"number.format\")),\n      ...options,\n    };\n\n    return formatNumber(input, options as FormatNumberOptions);\n  }\n\n  /**\n   * @param {Scope} scope The scope lookup path.\n   *\n   * @returns {any} The found scope.\n   */\n  public get(scope: Scope): any {\n    return lookup(this, scope);\n  }\n\n  /**\n   * @private\n   *\n   * @returns {void}\n   */\n  private runCallbacks(): void {\n    this.onChangeHandlers.forEach((callback) => callback(this));\n  }\n\n  /**\n   * @private\n   *\n   * @returns {void}\n   */\n  private hasChanged(): void {\n    this._version += 1;\n\n    this.runCallbacks();\n  }\n}\n", "import uniq from \"lodash/uniq\";\n\nimport { Dict, LocaleResolver } from \"./typing\";\nimport { I18n } from \"./I18n\";\n\n/**\n * The default locale resolver.\n *\n * This resolver will add `options.locale` if provided (this function receives\n * it inlined). In case nothing is set, then `i18n.locale` will be used.\n * Additionally, adds the default locale to the list if `i18n.enableFallback` is\n * set.\n *\n * Every locale added to the list will then be split apart; if `pt-BR` is the\n * locale, then the list will be returned as `[\"pt-BR\", \"pt\"]`.\n *\n * The default in case nothing is defined is `[\"en\"]`.\n *\n * @type {LocaleResolver}\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {string} locale The locale that being analysed.\n *\n * @returns {string[]} The resolved locales.\n */\nexport const defaultLocaleResolver: LocaleResolver = (\n  i18n: I18n,\n  locale: string,\n): string[] => {\n  const locales = [];\n  const list: string[] = [];\n\n  // Handle the inline locale option that can be provided to\n  // the `I18n.t` options.\n  locales.push(locale);\n\n  // Add the current locale to the list.\n  if (!locale) {\n    locales.push(i18n.locale);\n  }\n\n  // Add the default locale if fallback strategy is enabled.\n  if (i18n.enableFallback) {\n    locales.push(i18n.defaultLocale);\n  }\n\n  // Compute each locale with its country code.\n  // So this will return an array containing both\n  // `de-DE` and `de` locales.\n  //\n  // We also need to support locales with region code (e.g. zh-Hant-TW).\n  // In that case, the list should be `[\"zh-hant-tw\", \"zh-hant\", \"zh\"]`.\n  locales\n    .filter(Boolean)\n    .map((entry) => entry.toString())\n    .forEach(function (currentLocale: string) {\n      if (!list.includes(currentLocale)) {\n        list.push(currentLocale);\n      }\n\n      if (!i18n.enableFallback) {\n        return;\n      }\n\n      const codes = currentLocale.split(\"-\");\n\n      if (codes.length === 3) {\n        list.push(`${codes[0]}-${codes[1]}`);\n      }\n\n      list.push(codes[0]);\n    });\n\n  return uniq(list);\n};\n\nexport class Locales {\n  private i18n: I18n;\n  private registry: Dict;\n\n  constructor(i18n: I18n) {\n    this.i18n = i18n;\n    this.registry = {};\n\n    this.register(\"default\", defaultLocaleResolver);\n  }\n\n  /**\n   * You can define custom rules for any locale. Just make sure you return an\n   * array containing all locales.\n   *\n   * ```js\n   * // Default the Wookie locale to English.\n   * i18n.locales.register(\"wk\",  (_i18n, locale) => {\n   *   return [\"en\"];\n   * });\n   * ```\n   *\n   * @param {string} locale The locale's name.\n   *\n   * @param {LocaleResolver|string|string[]} localeResolver The locale resolver\n   * strategy.\n   *\n   * @returns {void}\n   */\n  public register(\n    locale: string,\n    localeResolver: LocaleResolver | string | string[],\n  ): void {\n    if (typeof localeResolver !== \"function\") {\n      const result = localeResolver;\n      localeResolver = (() => result) as LocaleResolver;\n    }\n\n    this.registry[locale] = localeResolver;\n  }\n\n  /**\n   * Return a list of all locales that must be tried before returning the\n   * missing translation message. By default, this will consider the inline\n   * option, current locale and fallback locale.\n   *\n   * ```js\n   * i18n.locales.get(\"de-DE\");\n   * // [\"de-DE\", \"de\", \"en\"]\n   * ```\n   *\n   * @param {string} locale The locale query.\n   *\n   * @returns {string[]} The list of locales.\n   */\n  public get(locale: string): string[] {\n    let locales =\n      this.registry[locale] ||\n      this.registry[this.i18n.locale] ||\n      this.registry.default;\n\n    if (typeof locales === \"function\") {\n      locales = locales(this.i18n, locale);\n    }\n\n    if (!(locales instanceof Array)) {\n      locales = [locales];\n    }\n    return locales;\n  }\n}\n", "const a = (n, ord) => {\n  if (ord) return 'other';\n  return n == 1 ? 'one' : 'other';\n};\nconst b = (n, ord) => {\n  if (ord) return 'other';\n  return (n == 0 || n == 1) ? 'one' : 'other';\n};\nconst c = (n, ord) => {\n  if (ord) return 'other';\n  return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nconst d = (n, ord) => {\n  const s = String(n).split('.'), v0 = !s[1];\n  if (ord) return 'other';\n  return n == 1 && v0 ? 'one' : 'other';\n};\nconst e = (n, ord) => 'other';\nconst f = (n, ord) => {\n  if (ord) return 'other';\n  return n == 1 ? 'one'\n    : n == 2 ? 'two'\n    : 'other';\n};\n\nexport const af = a;\nexport const ak = b;\nexport const am = c;\nexport const an = a;\nexport const ar = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n  if (ord) return 'other';\n  return n == 0 ? 'zero'\n    : n == 1 ? 'one'\n    : n == 2 ? 'two'\n    : (n100 >= 3 && n100 <= 10) ? 'few'\n    : (n100 >= 11 && n100 <= 99) ? 'many'\n    : 'other';\n};\nexport const ars = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n  if (ord) return 'other';\n  return n == 0 ? 'zero'\n    : n == 1 ? 'one'\n    : n == 2 ? 'two'\n    : (n100 >= 3 && n100 <= 10) ? 'few'\n    : (n100 >= 11 && n100 <= 99) ? 'many'\n    : 'other';\n};\nexport const as = (n, ord) => {\n  if (ord) return (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) ? 'one'\n    : (n == 2 || n == 3) ? 'two'\n    : n == 4 ? 'few'\n    : n == 6 ? 'many'\n    : 'other';\n  return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const asa = a;\nexport const ast = d;\nexport const az = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], i10 = i.slice(-1), i100 = i.slice(-2), i1000 = i.slice(-3);\n  if (ord) return (i10 == 1 || i10 == 2 || i10 == 5 || i10 == 7 || i10 == 8) || (i100 == 20 || i100 == 50 || i100 == 70 || i100 == 80) ? 'one'\n    : (i10 == 3 || i10 == 4) || (i1000 == 100 || i1000 == 200 || i1000 == 300 || i1000 == 400 || i1000 == 500 || i1000 == 600 || i1000 == 700 || i1000 == 800 || i1000 == 900) ? 'few'\n    : i == 0 || i10 == 6 || (i100 == 40 || i100 == 60 || i100 == 90) ? 'many'\n    : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const bal = (n, ord) => n == 1 ? 'one' : 'other';\nexport const be = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n  if (ord) return (n10 == 2 || n10 == 3) && n100 != 12 && n100 != 13 ? 'few' : 'other';\n  return n10 == 1 && n100 != 11 ? 'one'\n    : (n10 >= 2 && n10 <= 4) && (n100 < 12 || n100 > 14) ? 'few'\n    : t0 && n10 == 0 || (n10 >= 5 && n10 <= 9) || (n100 >= 11 && n100 <= 14) ? 'many'\n    : 'other';\n};\nexport const bem = a;\nexport const bez = a;\nexport const bg = a;\nexport const bho = b;\nexport const blo = (n, ord) => {\n  const s = String(n).split('.'), i = s[0];\n  if (ord) return i == 0 ? 'zero'\n    : i == 1 ? 'one'\n    : (i == 2 || i == 3 || i == 4 || i == 5 || i == 6) ? 'few'\n    : 'other';\n  return n == 0 ? 'zero'\n    : n == 1 ? 'one'\n    : 'other';\n};\nexport const bm = e;\nexport const bn = (n, ord) => {\n  if (ord) return (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) ? 'one'\n    : (n == 2 || n == 3) ? 'two'\n    : n == 4 ? 'few'\n    : n == 6 ? 'many'\n    : 'other';\n  return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const bo = e;\nexport const br = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), n1000000 = t0 && s[0].slice(-6);\n  if (ord) return 'other';\n  return n10 == 1 && n100 != 11 && n100 != 71 && n100 != 91 ? 'one'\n    : n10 == 2 && n100 != 12 && n100 != 72 && n100 != 92 ? 'two'\n    : ((n10 == 3 || n10 == 4) || n10 == 9) && (n100 < 10 || n100 > 19) && (n100 < 70 || n100 > 79) && (n100 < 90 || n100 > 99) ? 'few'\n    : n != 0 && t0 && n1000000 == 0 ? 'many'\n    : 'other';\n};\nexport const brx = a;\nexport const bs = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n  if (ord) return 'other';\n  return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n    : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n    : 'other';\n};\nexport const ca = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n  if (ord) return (n == 1 || n == 3) ? 'one'\n    : n == 2 ? 'two'\n    : n == 4 ? 'few'\n    : 'other';\n  return n == 1 && v0 ? 'one'\n    : i != 0 && i1000000 == 0 && v0 ? 'many'\n    : 'other';\n};\nexport const ce = a;\nexport const ceb = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n  if (ord) return 'other';\n  return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const cgg = a;\nexport const chr = a;\nexport const ckb = a;\nexport const cs = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1];\n  if (ord) return 'other';\n  return n == 1 && v0 ? 'one'\n    : (i >= 2 && i <= 4) && v0 ? 'few'\n    : !v0 ? 'many'\n    : 'other';\n};\nexport const cy = (n, ord) => {\n  if (ord) return (n == 0 || n == 7 || n == 8 || n == 9) ? 'zero'\n    : n == 1 ? 'one'\n    : n == 2 ? 'two'\n    : (n == 3 || n == 4) ? 'few'\n    : (n == 5 || n == 6) ? 'many'\n    : 'other';\n  return n == 0 ? 'zero'\n    : n == 1 ? 'one'\n    : n == 2 ? 'two'\n    : n == 3 ? 'few'\n    : n == 6 ? 'many'\n    : 'other';\n};\nexport const da = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], t0 = Number(s[0]) == n;\n  if (ord) return 'other';\n  return n == 1 || !t0 && (i == 0 || i == 1) ? 'one' : 'other';\n};\nexport const de = d;\nexport const doi = c;\nexport const dsb = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);\n  if (ord) return 'other';\n  return v0 && i100 == 1 || f100 == 1 ? 'one'\n    : v0 && i100 == 2 || f100 == 2 ? 'two'\n    : v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'\n    : 'other';\n};\nexport const dv = a;\nexport const dz = e;\nexport const ee = a;\nexport const el = a;\nexport const en = (n, ord) => {\n  const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n  if (ord) return n10 == 1 && n100 != 11 ? 'one'\n    : n10 == 2 && n100 != 12 ? 'two'\n    : n10 == 3 && n100 != 13 ? 'few'\n    : 'other';\n  return n == 1 && v0 ? 'one' : 'other';\n};\nexport const eo = a;\nexport const es = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n  if (ord) return 'other';\n  return n == 1 ? 'one'\n    : i != 0 && i1000000 == 0 && v0 ? 'many'\n    : 'other';\n};\nexport const et = d;\nexport const eu = a;\nexport const fa = c;\nexport const ff = (n, ord) => {\n  if (ord) return 'other';\n  return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const fi = d;\nexport const fil = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n  if (ord) return n == 1 ? 'one' : 'other';\n  return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const fo = a;\nexport const fr = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n  if (ord) return n == 1 ? 'one' : 'other';\n  return n >= 0 && n < 2 ? 'one'\n    : i != 0 && i1000000 == 0 && v0 ? 'many'\n    : 'other';\n};\nexport const fur = a;\nexport const fy = d;\nexport const ga = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n;\n  if (ord) return n == 1 ? 'one' : 'other';\n  return n == 1 ? 'one'\n    : n == 2 ? 'two'\n    : (t0 && n >= 3 && n <= 6) ? 'few'\n    : (t0 && n >= 7 && n <= 10) ? 'many'\n    : 'other';\n};\nexport const gd = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n;\n  if (ord) return (n == 1 || n == 11) ? 'one'\n    : (n == 2 || n == 12) ? 'two'\n    : (n == 3 || n == 13) ? 'few'\n    : 'other';\n  return (n == 1 || n == 11) ? 'one'\n    : (n == 2 || n == 12) ? 'two'\n    : ((t0 && n >= 3 && n <= 10) || (t0 && n >= 13 && n <= 19)) ? 'few'\n    : 'other';\n};\nexport const gl = d;\nexport const gsw = a;\nexport const gu = (n, ord) => {\n  if (ord) return n == 1 ? 'one'\n    : (n == 2 || n == 3) ? 'two'\n    : n == 4 ? 'few'\n    : n == 6 ? 'many'\n    : 'other';\n  return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const guw = b;\nexport const gv = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n  if (ord) return 'other';\n  return v0 && i10 == 1 ? 'one'\n    : v0 && i10 == 2 ? 'two'\n    : v0 && (i100 == 0 || i100 == 20 || i100 == 40 || i100 == 60 || i100 == 80) ? 'few'\n    : !v0 ? 'many'\n    : 'other';\n};\nexport const ha = a;\nexport const haw = a;\nexport const he = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1];\n  if (ord) return 'other';\n  return i == 1 && v0 || i == 0 && !v0 ? 'one'\n    : i == 2 && v0 ? 'two'\n    : 'other';\n};\nexport const hi = (n, ord) => {\n  if (ord) return n == 1 ? 'one'\n    : (n == 2 || n == 3) ? 'two'\n    : n == 4 ? 'few'\n    : n == 6 ? 'many'\n    : 'other';\n  return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const hnj = e;\nexport const hr = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n  if (ord) return 'other';\n  return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n    : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n    : 'other';\n};\nexport const hsb = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);\n  if (ord) return 'other';\n  return v0 && i100 == 1 || f100 == 1 ? 'one'\n    : v0 && i100 == 2 || f100 == 2 ? 'two'\n    : v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'\n    : 'other';\n};\nexport const hu = (n, ord) => {\n  if (ord) return (n == 1 || n == 5) ? 'one' : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const hy = (n, ord) => {\n  if (ord) return n == 1 ? 'one' : 'other';\n  return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const ia = d;\nexport const id = e;\nexport const ig = e;\nexport const ii = e;\nexport const io = d;\nexport const is = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], t = (s[1] || '').replace(/0+$/, ''), t0 = Number(s[0]) == n, i10 = i.slice(-1), i100 = i.slice(-2);\n  if (ord) return 'other';\n  return t0 && i10 == 1 && i100 != 11 || t % 10 == 1 && t % 100 != 11 ? 'one' : 'other';\n};\nexport const it = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n  if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n  return n == 1 && v0 ? 'one'\n    : i != 0 && i1000000 == 0 && v0 ? 'many'\n    : 'other';\n};\nexport const iu = f;\nexport const ja = e;\nexport const jbo = e;\nexport const jgo = a;\nexport const jmc = a;\nexport const jv = e;\nexport const jw = e;\nexport const ka = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], i100 = i.slice(-2);\n  if (ord) return i == 1 ? 'one'\n    : i == 0 || ((i100 >= 2 && i100 <= 20) || i100 == 40 || i100 == 60 || i100 == 80) ? 'many'\n    : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const kab = (n, ord) => {\n  if (ord) return 'other';\n  return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const kaj = a;\nexport const kcg = a;\nexport const kde = e;\nexport const kea = e;\nexport const kk = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1);\n  if (ord) return n10 == 6 || n10 == 9 || t0 && n10 == 0 && n != 0 ? 'many' : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const kkj = a;\nexport const kl = a;\nexport const km = e;\nexport const kn = c;\nexport const ko = e;\nexport const ks = a;\nexport const ksb = a;\nexport const ksh = (n, ord) => {\n  if (ord) return 'other';\n  return n == 0 ? 'zero'\n    : n == 1 ? 'one'\n    : 'other';\n};\nexport const ku = a;\nexport const kw = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2), n1000 = t0 && s[0].slice(-3), n100000 = t0 && s[0].slice(-5), n1000000 = t0 && s[0].slice(-6);\n  if (ord) return (t0 && n >= 1 && n <= 4) || ((n100 >= 1 && n100 <= 4) || (n100 >= 21 && n100 <= 24) || (n100 >= 41 && n100 <= 44) || (n100 >= 61 && n100 <= 64) || (n100 >= 81 && n100 <= 84)) ? 'one'\n    : n == 5 || n100 == 5 ? 'many'\n    : 'other';\n  return n == 0 ? 'zero'\n    : n == 1 ? 'one'\n    : (n100 == 2 || n100 == 22 || n100 == 42 || n100 == 62 || n100 == 82) || t0 && n1000 == 0 && ((n100000 >= 1000 && n100000 <= 20000) || n100000 == 40000 || n100000 == 60000 || n100000 == 80000) || n != 0 && n1000000 == 100000 ? 'two'\n    : (n100 == 3 || n100 == 23 || n100 == 43 || n100 == 63 || n100 == 83) ? 'few'\n    : n != 1 && (n100 == 1 || n100 == 21 || n100 == 41 || n100 == 61 || n100 == 81) ? 'many'\n    : 'other';\n};\nexport const ky = a;\nexport const lag = (n, ord) => {\n  const s = String(n).split('.'), i = s[0];\n  if (ord) return 'other';\n  return n == 0 ? 'zero'\n    : (i == 0 || i == 1) && n != 0 ? 'one'\n    : 'other';\n};\nexport const lb = a;\nexport const lg = a;\nexport const lij = (n, ord) => {\n  const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n;\n  if (ord) return (n == 11 || n == 8 || (t0 && n >= 80 && n <= 89) || (t0 && n >= 800 && n <= 899)) ? 'many' : 'other';\n  return n == 1 && v0 ? 'one' : 'other';\n};\nexport const lkt = e;\nexport const ln = b;\nexport const lo = (n, ord) => {\n  if (ord) return n == 1 ? 'one' : 'other';\n  return 'other';\n};\nexport const lt = (n, ord) => {\n  const s = String(n).split('.'), f = s[1] || '', t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n  if (ord) return 'other';\n  return n10 == 1 && (n100 < 11 || n100 > 19) ? 'one'\n    : (n10 >= 2 && n10 <= 9) && (n100 < 11 || n100 > 19) ? 'few'\n    : f != 0 ? 'many'\n    : 'other';\n};\nexport const lv = (n, ord) => {\n  const s = String(n).split('.'), f = s[1] || '', v = f.length, t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);\n  if (ord) return 'other';\n  return t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'\n    : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'\n    : 'other';\n};\nexport const mas = a;\nexport const mg = b;\nexport const mgo = a;\nexport const mk = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n  if (ord) return i10 == 1 && i100 != 11 ? 'one'\n    : i10 == 2 && i100 != 12 ? 'two'\n    : (i10 == 7 || i10 == 8) && i100 != 17 && i100 != 18 ? 'many'\n    : 'other';\n  return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : 'other';\n};\nexport const ml = a;\nexport const mn = a;\nexport const mo = (n, ord) => {\n  const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n  if (ord) return n == 1 ? 'one' : 'other';\n  return n == 1 && v0 ? 'one'\n    : !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'\n    : 'other';\n};\nexport const mr = (n, ord) => {\n  if (ord) return n == 1 ? 'one'\n    : (n == 2 || n == 3) ? 'two'\n    : n == 4 ? 'few'\n    : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const ms = (n, ord) => {\n  if (ord) return n == 1 ? 'one' : 'other';\n  return 'other';\n};\nexport const mt = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n  if (ord) return 'other';\n  return n == 1 ? 'one'\n    : n == 2 ? 'two'\n    : n == 0 || (n100 >= 3 && n100 <= 10) ? 'few'\n    : (n100 >= 11 && n100 <= 19) ? 'many'\n    : 'other';\n};\nexport const my = e;\nexport const nah = a;\nexport const naq = f;\nexport const nb = a;\nexport const nd = a;\nexport const ne = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n;\n  if (ord) return (t0 && n >= 1 && n <= 4) ? 'one' : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const nl = d;\nexport const nn = a;\nexport const nnh = a;\nexport const no = a;\nexport const nqo = e;\nexport const nr = a;\nexport const nso = b;\nexport const ny = a;\nexport const nyn = a;\nexport const om = a;\nexport const or = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n;\n  if (ord) return (n == 1 || n == 5 || (t0 && n >= 7 && n <= 9)) ? 'one'\n    : (n == 2 || n == 3) ? 'two'\n    : n == 4 ? 'few'\n    : n == 6 ? 'many'\n    : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const os = a;\nexport const osa = e;\nexport const pa = b;\nexport const pap = a;\nexport const pcm = c;\nexport const pl = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n  if (ord) return 'other';\n  return n == 1 && v0 ? 'one'\n    : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n    : v0 && i != 1 && (i10 == 0 || i10 == 1) || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 12 && i100 <= 14) ? 'many'\n    : 'other';\n};\nexport const prg = (n, ord) => {\n  const s = String(n).split('.'), f = s[1] || '', v = f.length, t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);\n  if (ord) return 'other';\n  return t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'\n    : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'\n    : 'other';\n};\nexport const ps = a;\nexport const pt = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n  if (ord) return 'other';\n  return (i == 0 || i == 1) ? 'one'\n    : i != 0 && i1000000 == 0 && v0 ? 'many'\n    : 'other';\n};\nexport const pt_PT = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n  if (ord) return 'other';\n  return n == 1 && v0 ? 'one'\n    : i != 0 && i1000000 == 0 && v0 ? 'many'\n    : 'other';\n};\nexport const rm = a;\nexport const ro = (n, ord) => {\n  const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n  if (ord) return n == 1 ? 'one' : 'other';\n  return n == 1 && v0 ? 'one'\n    : !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'\n    : 'other';\n};\nexport const rof = a;\nexport const ru = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n  if (ord) return 'other';\n  return v0 && i10 == 1 && i100 != 11 ? 'one'\n    : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n    : v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'\n    : 'other';\n};\nexport const rwk = a;\nexport const sah = e;\nexport const saq = a;\nexport const sat = f;\nexport const sc = (n, ord) => {\n  const s = String(n).split('.'), v0 = !s[1];\n  if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n  return n == 1 && v0 ? 'one' : 'other';\n};\nexport const scn = (n, ord) => {\n  const s = String(n).split('.'), v0 = !s[1];\n  if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n  return n == 1 && v0 ? 'one' : 'other';\n};\nexport const sd = a;\nexport const sdh = a;\nexport const se = f;\nexport const seh = a;\nexport const ses = e;\nexport const sg = e;\nexport const sh = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n  if (ord) return 'other';\n  return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n    : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n    : 'other';\n};\nexport const shi = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n;\n  if (ord) return 'other';\n  return n >= 0 && n <= 1 ? 'one'\n    : (t0 && n >= 2 && n <= 10) ? 'few'\n    : 'other';\n};\nexport const si = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '';\n  if (ord) return 'other';\n  return (n == 0 || n == 1) || i == 0 && f == 1 ? 'one' : 'other';\n};\nexport const sk = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1];\n  if (ord) return 'other';\n  return n == 1 && v0 ? 'one'\n    : (i >= 2 && i <= 4) && v0 ? 'few'\n    : !v0 ? 'many'\n    : 'other';\n};\nexport const sl = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i100 = i.slice(-2);\n  if (ord) return 'other';\n  return v0 && i100 == 1 ? 'one'\n    : v0 && i100 == 2 ? 'two'\n    : v0 && (i100 == 3 || i100 == 4) || !v0 ? 'few'\n    : 'other';\n};\nexport const sma = f;\nexport const smi = f;\nexport const smj = f;\nexport const smn = f;\nexport const sms = f;\nexport const sn = a;\nexport const so = a;\nexport const sq = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n  if (ord) return n == 1 ? 'one'\n    : n10 == 4 && n100 != 14 ? 'many'\n    : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const sr = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n  if (ord) return 'other';\n  return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n    : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n    : 'other';\n};\nexport const ss = a;\nexport const ssy = a;\nexport const st = a;\nexport const su = e;\nexport const sv = (n, ord) => {\n  const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n  if (ord) return (n10 == 1 || n10 == 2) && n100 != 11 && n100 != 12 ? 'one' : 'other';\n  return n == 1 && v0 ? 'one' : 'other';\n};\nexport const sw = d;\nexport const syr = a;\nexport const ta = a;\nexport const te = a;\nexport const teo = a;\nexport const th = e;\nexport const ti = b;\nexport const tig = a;\nexport const tk = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1);\n  if (ord) return (n10 == 6 || n10 == 9) || n == 10 ? 'few' : 'other';\n  return n == 1 ? 'one' : 'other';\n};\nexport const tl = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n  if (ord) return n == 1 ? 'one' : 'other';\n  return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const tn = a;\nexport const to = e;\nexport const tpi = e;\nexport const tr = a;\nexport const ts = a;\nexport const tzm = (n, ord) => {\n  const s = String(n).split('.'), t0 = Number(s[0]) == n;\n  if (ord) return 'other';\n  return (n == 0 || n == 1) || (t0 && n >= 11 && n <= 99) ? 'one' : 'other';\n};\nexport const ug = a;\nexport const uk = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), i10 = i.slice(-1), i100 = i.slice(-2);\n  if (ord) return n10 == 3 && n100 != 13 ? 'few' : 'other';\n  return v0 && i10 == 1 && i100 != 11 ? 'one'\n    : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n    : v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'\n    : 'other';\n};\nexport const und = e;\nexport const ur = d;\nexport const uz = a;\nexport const ve = a;\nexport const vec = (n, ord) => {\n  const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n  if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n  return n == 1 && v0 ? 'one'\n    : i != 0 && i1000000 == 0 && v0 ? 'many'\n    : 'other';\n};\nexport const vi = (n, ord) => {\n  if (ord) return n == 1 ? 'one' : 'other';\n  return 'other';\n};\nexport const vo = a;\nexport const vun = a;\nexport const wa = b;\nexport const wae = a;\nexport const wo = e;\nexport const xh = a;\nexport const xog = a;\nexport const yi = d;\nexport const yo = e;\nexport const yue = e;\nexport const zh = e;\nexport const zu = c;\n", "import { en } from \"make-plural\";\n\nimport { Dict, Pluralizer, MakePlural } from \"./typing\";\nimport { I18n } from \"./I18n\";\n\n/**\n * Creates a new pluralizer function based on [make-plural](https://github.com/eemeli/make-plural/tree/master/packages/plurals).\n *\n * @param  {boolean} options.includeZero When `true`, will return `zero` as the\n *                                       first key for `0` pluralization.\n * @param  {boolean} options.ordinal When `true`, will return the scope based on\n *                                   make-plural's ordinal category.\n * @param {MakePlural} options.pluralizer The make-plural function that will be\n *                                        wrapped.\n * @return {Pluralizer}    Returns a pluralizer that can be used by I18n.\n */\nexport function useMakePlural({\n  pluralizer,\n  includeZero = true,\n  ordinal = false,\n}: {\n  pluralizer: MakePlural;\n  includeZero?: boolean;\n  ordinal?: boolean;\n}): Pluralizer {\n  return function (_i18n: I18n, count: number) {\n    return [\n      includeZero && count === 0 ? \"zero\" : \"\",\n      pluralizer(count, ordinal),\n    ].filter(Boolean);\n  };\n}\n\n/**\n * The default pluralizer.\n *\n * It's pretty straightforward:\n *\n * - when count is `0`, then the possible keys are\n * either `zero` for `other`; this allows having translations like\n * \"You have no messages\", defaulting to \"You have 0 messages\".\n * - when count is `1`, then the key is `one`.\n * - when greater than `1`, then the key is `other`.\n *\n * @type {Pluralizer}\n *\n * @param {I18n} _i18n The I18n's instance.\n *\n * @param {number} count The number that's being analyzed.\n *\n * @returns {string[]} The list of possible translation scopes.\n */\nexport const defaultPluralizer: Pluralizer = useMakePlural({\n  pluralizer: en,\n  includeZero: true,\n});\n\n/**\n * This class enables registering different strategies for pluralization, as\n * well as getting a pluralized translation.\n *\n * The default pluralization strategy is based on three counters:\n *\n * - `one`: returned when count is equal to absolute `1`.\n * - `zero`: returned when count is equal to `0`. If this translation is not\n * set, then it defaults to `other`.\n * - `other`: returned when count is different than absolute `1`.\n *\n * When calling `i18n.translate` (or its alias), pluralization rules will be\n * triggered whenever the translation options contain `count`.\n *\n * @example\n * A JSON describing the pluralization rules.\n *\n * ```json\n * {\n *   \"en\": {\n *     \"inbox\": {\n *       \"zero\": \"You have no messages\",\n *       \"one\": \"You have one message\",\n *       \"other\": \"You have %{count} messages\"\n *     }\n *   }\n * }\n * ```\n *\n * @example\n * How to get pluralized translations.\n *\n * ```js\n * i18n.t(\"inbox\", {count: 0}); // returns \"You have no messages\"\n * i18n.t(\"inbox\", {count: 1}); // returns \"You have on message\"\n * i18n.t(\"inbox\", {count: 2}); // returns \"You have 2 messages\"\n * ```\n */\nexport class Pluralization {\n  private i18n: I18n;\n  private registry: Dict;\n\n  constructor(i18n: I18n) {\n    this.i18n = i18n;\n    this.registry = {};\n\n    this.register(\"default\", defaultPluralizer);\n  }\n\n  /**\n   * Register a new pluralizer strategy.\n   *\n   * You may want to support different pluralization rules based on the locales\n   * you have to support. If you do, make sure you submit a pull request at\n   * <https://github.com/fnando/i18n> so we can distribute it. For now only\n   * Russian is distributed.\n   *\n   * The pluralizer will receive the `I18n` instance, together with `count`.\n   * Is up to the pluralizer to return a list of possible keys given that count.\n   * The Russian pluralizer, for instance, returns `one`, `few`, `many`, `other`\n   * as possible pluralization keys.\n   *\n   * You can view a complete list of pluralization rules at\n   * [unicode.org](http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html).\n   *\n   * You can also leverage\n   * [make-plural](https://github.com/eemeli/make-plural/), rather than writing\n   * all your pluralization functions. For this, you must wrap make-plural's\n   * function by using `useMakePlural({ pluralizer, includeZero, ordinal })`:\n   *\n   * @example\n   * ```js\n   * import { ru } from \"make-plural\";\n   * import { useMakePlural } from \"i18n-js\";\n   *\n   * i18n.pluralization.register(\"ru\", useMakePlural({ pluralizer: ru }));\n   * ```\n   *\n   * @param {string} locale The locale.\n   *\n   * @param {Pluralizer} pluralizer The pluralizer function.\n   *\n   * @returns {void}\n   */\n  public register(locale: string, pluralizer: Pluralizer): void {\n    this.registry[locale] = pluralizer;\n  }\n\n  /**\n   * Returns a list of possible pluralization keys.\n   * This is defined by a chain of pluralizers, going from locale set\n   * explicitly, then the locale set through `i18n.locale`, defaulting to\n   * `defaultPluralizer`.\n   *\n   * @param  {string} locale The locale.\n   *\n   * @returns {Pluralizer} The pluralizer function.\n   */\n  public get(locale: string): Pluralizer {\n    return (\n      this.registry[locale] ||\n      this.registry[this.i18n.locale] ||\n      this.registry[\"default\"]\n    );\n  }\n}\n", "import camelCase from \"lodash/camelCase\";\n\nimport { Dict } from \"../typing\";\n\n/**\n * Shallow transform an object's keys from snake case (that's assumption) to\n * camel case.\n *\n * @private\n *\n * @param  {object} target The object that will be transformed.\n *\n * @returns {object} A new transformed object.\n */\nexport function camelCaseKeys<T = Dict>(target: unknown): T {\n  if (!target) {\n    return {} as T;\n  }\n\n  return Object.keys(target as Dict).reduce((buffer, key) => {\n    (buffer as Dict)[camelCase(key)] = (target as Dict)[key];\n    return buffer;\n  }, {} as T);\n}\n", "/**\n * Check if value is different than undefined and null.\n *\n * @private\n *\n * @param {unknown} value The inspecting value.\n *\n * @returns {boolean} Whether the value is set or not.\n */\nexport function isSet(value: unknown): boolean {\n  return value !== undefined && value !== null;\n}\n", "import { Dict, Scope, TranslateOptions } from \"../typing\";\nimport { I18n } from \"../I18n\";\nimport { isSet } from \"./isSet\";\n\n/**\n * Generate a list of translation options for default fallback.\n * `defaultValue` is also deleted from options as it is returned as part of\n * the translationOptions array.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {string|array} scope The translation scope.\n *\n * @param {object} options The translation options.\n *\n * @returns {array} Translation options\n */\nexport function createTranslationOptions(\n  i18n: I18n,\n  scope: Scope,\n  options: Dict,\n): TranslateOptions[] {\n  let translationOptions: Dict[] = [{ scope }];\n\n  // Defaults should be an array of hashes containing either\n  // fallback scopes or messages\n  if (isSet(options.defaults)) {\n    translationOptions = translationOptions.concat(options.defaults);\n  }\n\n  // Maintain support for defaultValue. Since it is always a message\n  // insert it in to the translation options as such.\n  if (isSet(options.defaultValue)) {\n    const message =\n      typeof options.defaultValue === \"function\"\n        ? options.defaultValue(i18n, scope, options)\n        : options.defaultValue;\n\n    translationOptions.push({ message });\n    delete options.defaultValue;\n  }\n\n  return translationOptions as unknown as TranslateOptions[];\n}\n", "/*\r\n *      bignumber.js v9.1.2\r\n *      A JavaScript library for arbitrary-precision arithmetic.\r\n *      https://github.com/MikeMcl/bignumber.js\r\n *      Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com>\r\n *      MIT Licensed.\r\n *\r\n *      BigNumber.prototype methods     |  BigNumber methods\r\n *                                      |\r\n *      absoluteValue            abs    |  clone\r\n *      comparedTo                      |  config               set\r\n *      decimalPlaces            dp     |      DECIMAL_PLACES\r\n *      dividedBy                div    |      ROUNDING_MODE\r\n *      dividedToIntegerBy       idiv   |      EXPONENTIAL_AT\r\n *      exponentiatedBy          pow    |      RANGE\r\n *      integerValue                    |      CRYPTO\r\n *      isEqualTo                eq     |      MODULO_MODE\r\n *      isFinite                        |      POW_PRECISION\r\n *      isGreaterThan            gt     |      FORMAT\r\n *      isGreaterThanOrEqualTo   gte    |      ALPHABET\r\n *      isInteger                       |  isBigNumber\r\n *      isLessThan               lt     |  maximum              max\r\n *      isLessThanOrEqualTo      lte    |  minimum              min\r\n *      isNaN                           |  random\r\n *      isNegative                      |  sum\r\n *      isPositive                      |\r\n *      isZero                          |\r\n *      minus                           |\r\n *      modulo                   mod    |\r\n *      multipliedBy             times  |\r\n *      negated                         |\r\n *      plus                            |\r\n *      precision                sd     |\r\n *      shiftedBy                       |\r\n *      squareRoot               sqrt   |\r\n *      toExponential                   |\r\n *      toFixed                         |\r\n *      toFormat                        |\r\n *      toFraction                      |\r\n *      toJSON                          |\r\n *      toNumber                        |\r\n *      toPrecision                     |\r\n *      toString                        |\r\n *      valueOf                         |\r\n *\r\n */\r\n\r\n\r\nvar\r\n  isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n  mathceil = Math.ceil,\r\n  mathfloor = Math.floor,\r\n\r\n  bignumberError = '[BigNumber Error] ',\r\n  tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n  BASE = 1e14,\r\n  LOG_BASE = 14,\r\n  MAX_SAFE_INTEGER = 0x1fffffffffffff,         // 2^53 - 1\r\n  // MAX_INT32 = 0x7fffffff,                   // 2^31 - 1\r\n  POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n  SQRT_BASE = 1e7,\r\n\r\n  // EDITABLE\r\n  // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n  // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n  MAX = 1E9;                                   // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n  var div, convertBase, parseNumeric,\r\n    P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n    ONE = new BigNumber(1),\r\n\r\n\r\n    //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n    // The default values below must be integers within the inclusive ranges stated.\r\n    // The values can also be changed at run-time using BigNumber.set.\r\n\r\n    // The maximum number of decimal places for operations involving division.\r\n    DECIMAL_PLACES = 20,                     // 0 to MAX\r\n\r\n    // The rounding mode used when rounding to the above decimal places, and when using\r\n    // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n    // UP         0 Away from zero.\r\n    // DOWN       1 Towards zero.\r\n    // CEIL       2 Towards +Infinity.\r\n    // FLOOR      3 Towards -Infinity.\r\n    // HALF_UP    4 Towards nearest neighbour. If equidistant, up.\r\n    // HALF_DOWN  5 Towards nearest neighbour. If equidistant, down.\r\n    // HALF_EVEN  6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n    // HALF_CEIL  7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n    // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n    ROUNDING_MODE = 4,                       // 0 to 8\r\n\r\n    // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n    // The exponent value at and beneath which toString returns exponential notation.\r\n    // Number type: -7\r\n    TO_EXP_NEG = -7,                         // 0 to -MAX\r\n\r\n    // The exponent value at and above which toString returns exponential notation.\r\n    // Number type: 21\r\n    TO_EXP_POS = 21,                         // 0 to MAX\r\n\r\n    // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n    // The minimum exponent value, beneath which underflow to zero occurs.\r\n    // Number type: -324  (5e-324)\r\n    MIN_EXP = -1e7,                          // -1 to -MAX\r\n\r\n    // The maximum exponent value, above which overflow to Infinity occurs.\r\n    // Number type:  308  (1.7976931348623157e+308)\r\n    // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n    MAX_EXP = 1e7,                           // 1 to MAX\r\n\r\n    // Whether to use cryptographically-secure random number generation, if available.\r\n    CRYPTO = false,                          // true or false\r\n\r\n    // The modulo mode used when calculating the modulus: a mod n.\r\n    // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n    // The remainder (r) is calculated as: r = a - n * q.\r\n    //\r\n    // UP        0 The remainder is positive if the dividend is negative, else is negative.\r\n    // DOWN      1 The remainder has the same sign as the dividend.\r\n    //             This modulo mode is commonly known as 'truncated division' and is\r\n    //             equivalent to (a % n) in JavaScript.\r\n    // FLOOR     3 The remainder has the same sign as the divisor (Python %).\r\n    // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n    // EUCLID    9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n    //             The remainder is always positive.\r\n    //\r\n    // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n    // modes are commonly used for the modulus operation.\r\n    // Although the other rounding modes can also be used, they may not give useful results.\r\n    MODULO_MODE = 1,                         // 0 to 9\r\n\r\n    // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n    // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n    POW_PRECISION = 0,                       // 0 to MAX\r\n\r\n    // The format specification used by the BigNumber.prototype.toFormat method.\r\n    FORMAT = {\r\n      prefix: '',\r\n      groupSize: 3,\r\n      secondaryGroupSize: 0,\r\n      groupSeparator: ',',\r\n      decimalSeparator: '.',\r\n      fractionGroupSize: 0,\r\n      fractionGroupSeparator: '\\xA0',        // non-breaking space\r\n      suffix: ''\r\n    },\r\n\r\n    // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n    // '-', '.', whitespace, or repeated character.\r\n    // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n    ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n    alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n  //------------------------------------------------------------------------------------------\r\n\r\n\r\n  // CONSTRUCTOR\r\n\r\n\r\n  /*\r\n   * The BigNumber constructor and exported function.\r\n   * Create and return a new instance of a BigNumber object.\r\n   *\r\n   * v {number|string|BigNumber} A numeric value.\r\n   * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n   */\r\n  function BigNumber(v, b) {\r\n    var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n      x = this;\r\n\r\n    // Enable constructor call without `new`.\r\n    if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n    if (b == null) {\r\n\r\n      if (v && v._isBigNumber === true) {\r\n        x.s = v.s;\r\n\r\n        if (!v.c || v.e > MAX_EXP) {\r\n          x.c = x.e = null;\r\n        } else if (v.e < MIN_EXP) {\r\n          x.c = [x.e = 0];\r\n        } else {\r\n          x.e = v.e;\r\n          x.c = v.c.slice();\r\n        }\r\n\r\n        return;\r\n      }\r\n\r\n      if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n        // Use `1 / n` to handle minus zero also.\r\n        x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n        // Fast path for integers, where n < 2147483648 (2**31).\r\n        if (v === ~~v) {\r\n          for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n          if (e > MAX_EXP) {\r\n            x.c = x.e = null;\r\n          } else {\r\n            x.e = e;\r\n            x.c = [v];\r\n          }\r\n\r\n          return;\r\n        }\r\n\r\n        str = String(v);\r\n      } else {\r\n\r\n        if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n        x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n      }\r\n\r\n      // Decimal point?\r\n      if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n      // Exponential form?\r\n      if ((i = str.search(/e/i)) > 0) {\r\n\r\n        // Determine exponent.\r\n        if (e < 0) e = i;\r\n        e += +str.slice(i + 1);\r\n        str = str.substring(0, i);\r\n      } else if (e < 0) {\r\n\r\n        // Integer.\r\n        e = str.length;\r\n      }\r\n\r\n    } else {\r\n\r\n      // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n      intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n      // Allow exponential notation to be used with base 10 argument, while\r\n      // also rounding to DECIMAL_PLACES as with other bases.\r\n      if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n        x = new BigNumber(v);\r\n        return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n      }\r\n\r\n      str = String(v);\r\n\r\n      if (isNum = typeof v == 'number') {\r\n\r\n        // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n        if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n        x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n        // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n        if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n          throw Error\r\n           (tooManyDigits + v);\r\n        }\r\n      } else {\r\n        x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n      }\r\n\r\n      alphabet = ALPHABET.slice(0, b);\r\n      e = i = 0;\r\n\r\n      // Check that str is a valid base b number.\r\n      // Don't use RegExp, so alphabet can contain special characters.\r\n      for (len = str.length; i < len; i++) {\r\n        if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n          if (c == '.') {\r\n\r\n            // If '.' is not the first character and it has not be found before.\r\n            if (i > e) {\r\n              e = len;\r\n              continue;\r\n            }\r\n          } else if (!caseChanged) {\r\n\r\n            // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n            if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n                str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n              caseChanged = true;\r\n              i = -1;\r\n              e = 0;\r\n              continue;\r\n            }\r\n          }\r\n\r\n          return parseNumeric(x, String(v), isNum, b);\r\n        }\r\n      }\r\n\r\n      // Prevent later check for length on converted number.\r\n      isNum = false;\r\n      str = convertBase(str, b, 10, x.s);\r\n\r\n      // Decimal point?\r\n      if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n      else e = str.length;\r\n    }\r\n\r\n    // Determine leading zeros.\r\n    for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n    // Determine trailing zeros.\r\n    for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n    if (str = str.slice(i, ++len)) {\r\n      len -= i;\r\n\r\n      // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n      if (isNum && BigNumber.DEBUG &&\r\n        len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n          throw Error\r\n           (tooManyDigits + (x.s * v));\r\n      }\r\n\r\n       // Overflow?\r\n      if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n        // Infinity.\r\n        x.c = x.e = null;\r\n\r\n      // Underflow?\r\n      } else if (e < MIN_EXP) {\r\n\r\n        // Zero.\r\n        x.c = [x.e = 0];\r\n      } else {\r\n        x.e = e;\r\n        x.c = [];\r\n\r\n        // Transform base\r\n\r\n        // e is the base 10 exponent.\r\n        // i is where to slice str to get the first element of the coefficient array.\r\n        i = (e + 1) % LOG_BASE;\r\n        if (e < 0) i += LOG_BASE;  // i < 1\r\n\r\n        if (i < len) {\r\n          if (i) x.c.push(+str.slice(0, i));\r\n\r\n          for (len -= LOG_BASE; i < len;) {\r\n            x.c.push(+str.slice(i, i += LOG_BASE));\r\n          }\r\n\r\n          i = LOG_BASE - (str = str.slice(i)).length;\r\n        } else {\r\n          i -= len;\r\n        }\r\n\r\n        for (; i--; str += '0');\r\n        x.c.push(+str);\r\n      }\r\n    } else {\r\n\r\n      // Zero.\r\n      x.c = [x.e = 0];\r\n    }\r\n  }\r\n\r\n\r\n  // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n  BigNumber.clone = clone;\r\n\r\n  BigNumber.ROUND_UP = 0;\r\n  BigNumber.ROUND_DOWN = 1;\r\n  BigNumber.ROUND_CEIL = 2;\r\n  BigNumber.ROUND_FLOOR = 3;\r\n  BigNumber.ROUND_HALF_UP = 4;\r\n  BigNumber.ROUND_HALF_DOWN = 5;\r\n  BigNumber.ROUND_HALF_EVEN = 6;\r\n  BigNumber.ROUND_HALF_CEIL = 7;\r\n  BigNumber.ROUND_HALF_FLOOR = 8;\r\n  BigNumber.EUCLID = 9;\r\n\r\n\r\n  /*\r\n   * Configure infrequently-changing library-wide settings.\r\n   *\r\n   * Accept an object with the following optional properties (if the value of a property is\r\n   * a number, it must be an integer within the inclusive range stated):\r\n   *\r\n   *   DECIMAL_PLACES   {number}           0 to MAX\r\n   *   ROUNDING_MODE    {number}           0 to 8\r\n   *   EXPONENTIAL_AT   {number|number[]}  -MAX to MAX  or  [-MAX to 0, 0 to MAX]\r\n   *   RANGE            {number|number[]}  -MAX to MAX (not zero)  or  [-MAX to -1, 1 to MAX]\r\n   *   CRYPTO           {boolean}          true or false\r\n   *   MODULO_MODE      {number}           0 to 9\r\n   *   POW_PRECISION       {number}           0 to MAX\r\n   *   ALPHABET         {string}           A string of two or more unique characters which does\r\n   *                                       not contain '.'.\r\n   *   FORMAT           {object}           An object with some of the following properties:\r\n   *     prefix                 {string}\r\n   *     groupSize              {number}\r\n   *     secondaryGroupSize     {number}\r\n   *     groupSeparator         {string}\r\n   *     decimalSeparator       {string}\r\n   *     fractionGroupSize      {number}\r\n   *     fractionGroupSeparator {string}\r\n   *     suffix                 {string}\r\n   *\r\n   * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n   *\r\n   * E.g.\r\n   * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n   *\r\n   * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n   *\r\n   * Return an object with the properties current values.\r\n   */\r\n  BigNumber.config = BigNumber.set = function (obj) {\r\n    var p, v;\r\n\r\n    if (obj != null) {\r\n\r\n      if (typeof obj == 'object') {\r\n\r\n        // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n        // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n          v = obj[p];\r\n          intCheck(v, 0, MAX, p);\r\n          DECIMAL_PLACES = v;\r\n        }\r\n\r\n        // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n        // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n          v = obj[p];\r\n          intCheck(v, 0, 8, p);\r\n          ROUNDING_MODE = v;\r\n        }\r\n\r\n        // EXPONENTIAL_AT {number|number[]}\r\n        // Integer, -MAX to MAX inclusive or\r\n        // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n        // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n          v = obj[p];\r\n          if (v && v.pop) {\r\n            intCheck(v[0], -MAX, 0, p);\r\n            intCheck(v[1], 0, MAX, p);\r\n            TO_EXP_NEG = v[0];\r\n            TO_EXP_POS = v[1];\r\n          } else {\r\n            intCheck(v, -MAX, MAX, p);\r\n            TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n          }\r\n        }\r\n\r\n        // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n        // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n        // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n        if (obj.hasOwnProperty(p = 'RANGE')) {\r\n          v = obj[p];\r\n          if (v && v.pop) {\r\n            intCheck(v[0], -MAX, -1, p);\r\n            intCheck(v[1], 1, MAX, p);\r\n            MIN_EXP = v[0];\r\n            MAX_EXP = v[1];\r\n          } else {\r\n            intCheck(v, -MAX, MAX, p);\r\n            if (v) {\r\n              MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n            } else {\r\n              throw Error\r\n               (bignumberError + p + ' cannot be zero: ' + v);\r\n            }\r\n          }\r\n        }\r\n\r\n        // CRYPTO {boolean} true or false.\r\n        // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n        // '[BigNumber Error] crypto unavailable'\r\n        if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n          v = obj[p];\r\n          if (v === !!v) {\r\n            if (v) {\r\n              if (typeof crypto != 'undefined' && crypto &&\r\n               (crypto.getRandomValues || crypto.randomBytes)) {\r\n                CRYPTO = v;\r\n              } else {\r\n                CRYPTO = !v;\r\n                throw Error\r\n                 (bignumberError + 'crypto unavailable');\r\n              }\r\n            } else {\r\n              CRYPTO = v;\r\n            }\r\n          } else {\r\n            throw Error\r\n             (bignumberError + p + ' not true or false: ' + v);\r\n          }\r\n        }\r\n\r\n        // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n        // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n          v = obj[p];\r\n          intCheck(v, 0, 9, p);\r\n          MODULO_MODE = v;\r\n        }\r\n\r\n        // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n        // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n        if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n          v = obj[p];\r\n          intCheck(v, 0, MAX, p);\r\n          POW_PRECISION = v;\r\n        }\r\n\r\n        // FORMAT {object}\r\n        // '[BigNumber Error] FORMAT not an object: {v}'\r\n        if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n          v = obj[p];\r\n          if (typeof v == 'object') FORMAT = v;\r\n          else throw Error\r\n           (bignumberError + p + ' not an object: ' + v);\r\n        }\r\n\r\n        // ALPHABET {string}\r\n        // '[BigNumber Error] ALPHABET invalid: {v}'\r\n        if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n          v = obj[p];\r\n\r\n          // Disallow if less than two characters,\r\n          // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n          if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n            alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n            ALPHABET = v;\r\n          } else {\r\n            throw Error\r\n             (bignumberError + p + ' invalid: ' + v);\r\n          }\r\n        }\r\n\r\n      } else {\r\n\r\n        // '[BigNumber Error] Object expected: {v}'\r\n        throw Error\r\n         (bignumberError + 'Object expected: ' + obj);\r\n      }\r\n    }\r\n\r\n    return {\r\n      DECIMAL_PLACES: DECIMAL_PLACES,\r\n      ROUNDING_MODE: ROUNDING_MODE,\r\n      EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n      RANGE: [MIN_EXP, MAX_EXP],\r\n      CRYPTO: CRYPTO,\r\n      MODULO_MODE: MODULO_MODE,\r\n      POW_PRECISION: POW_PRECISION,\r\n      FORMAT: FORMAT,\r\n      ALPHABET: ALPHABET\r\n    };\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if v is a BigNumber instance, otherwise return false.\r\n   *\r\n   * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n   *\r\n   * v {any}\r\n   *\r\n   * '[BigNumber Error] Invalid BigNumber: {v}'\r\n   */\r\n  BigNumber.isBigNumber = function (v) {\r\n    if (!v || v._isBigNumber !== true) return false;\r\n    if (!BigNumber.DEBUG) return true;\r\n\r\n    var i, n,\r\n      c = v.c,\r\n      e = v.e,\r\n      s = v.s;\r\n\r\n    out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n      if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n        // If the first element is zero, the BigNumber value must be zero.\r\n        if (c[0] === 0) {\r\n          if (e === 0 && c.length === 1) return true;\r\n          break out;\r\n        }\r\n\r\n        // Calculate number of digits that c[0] should have, based on the exponent.\r\n        i = (e + 1) % LOG_BASE;\r\n        if (i < 1) i += LOG_BASE;\r\n\r\n        // Calculate number of digits of c[0].\r\n        //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n        if (String(c[0]).length == i) {\r\n\r\n          for (i = 0; i < c.length; i++) {\r\n            n = c[i];\r\n            if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n          }\r\n\r\n          // Last element cannot be zero, unless it is the only element.\r\n          if (n !== 0) return true;\r\n        }\r\n      }\r\n\r\n    // Infinity/NaN\r\n    } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n      return true;\r\n    }\r\n\r\n    throw Error\r\n      (bignumberError + 'Invalid BigNumber: ' + v);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the maximum of the arguments.\r\n   *\r\n   * arguments {number|string|BigNumber}\r\n   */\r\n  BigNumber.maximum = BigNumber.max = function () {\r\n    return maxOrMin(arguments, -1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the minimum of the arguments.\r\n   *\r\n   * arguments {number|string|BigNumber}\r\n   */\r\n  BigNumber.minimum = BigNumber.min = function () {\r\n    return maxOrMin(arguments, 1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n   * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n   * zeros are produced).\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n   * '[BigNumber Error] crypto unavailable'\r\n   */\r\n  BigNumber.random = (function () {\r\n    var pow2_53 = 0x20000000000000;\r\n\r\n    // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n    // Check if Math.random() produces more than 32 bits of randomness.\r\n    // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n    // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n    var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n     ? function () { return mathfloor(Math.random() * pow2_53); }\r\n     : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n       (Math.random() * 0x800000 | 0); };\r\n\r\n    return function (dp) {\r\n      var a, b, e, k, v,\r\n        i = 0,\r\n        c = [],\r\n        rand = new BigNumber(ONE);\r\n\r\n      if (dp == null) dp = DECIMAL_PLACES;\r\n      else intCheck(dp, 0, MAX);\r\n\r\n      k = mathceil(dp / LOG_BASE);\r\n\r\n      if (CRYPTO) {\r\n\r\n        // Browsers supporting crypto.getRandomValues.\r\n        if (crypto.getRandomValues) {\r\n\r\n          a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n          for (; i < k;) {\r\n\r\n            // 53 bits:\r\n            // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n            // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n            // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n            //                                     11111 11111111 11111111\r\n            // 0x20000 is 2^21.\r\n            v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n            // Rejection sampling:\r\n            // 0 <= v < 9007199254740992\r\n            // Probability that v >= 9e15, is\r\n            // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n            if (v >= 9e15) {\r\n              b = crypto.getRandomValues(new Uint32Array(2));\r\n              a[i] = b[0];\r\n              a[i + 1] = b[1];\r\n            } else {\r\n\r\n              // 0 <= v <= 8999999999999999\r\n              // 0 <= (v % 1e14) <= 99999999999999\r\n              c.push(v % 1e14);\r\n              i += 2;\r\n            }\r\n          }\r\n          i = k / 2;\r\n\r\n        // Node.js supporting crypto.randomBytes.\r\n        } else if (crypto.randomBytes) {\r\n\r\n          // buffer\r\n          a = crypto.randomBytes(k *= 7);\r\n\r\n          for (; i < k;) {\r\n\r\n            // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n            // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n            // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n            // 0 <= v < 9007199254740992\r\n            v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n               (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n               (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n            if (v >= 9e15) {\r\n              crypto.randomBytes(7).copy(a, i);\r\n            } else {\r\n\r\n              // 0 <= (v % 1e14) <= 99999999999999\r\n              c.push(v % 1e14);\r\n              i += 7;\r\n            }\r\n          }\r\n          i = k / 7;\r\n        } else {\r\n          CRYPTO = false;\r\n          throw Error\r\n           (bignumberError + 'crypto unavailable');\r\n        }\r\n      }\r\n\r\n      // Use Math.random.\r\n      if (!CRYPTO) {\r\n\r\n        for (; i < k;) {\r\n          v = random53bitInt();\r\n          if (v < 9e15) c[i++] = v % 1e14;\r\n        }\r\n      }\r\n\r\n      k = c[--i];\r\n      dp %= LOG_BASE;\r\n\r\n      // Convert trailing digits to zeros according to dp.\r\n      if (k && dp) {\r\n        v = POWS_TEN[LOG_BASE - dp];\r\n        c[i] = mathfloor(k / v) * v;\r\n      }\r\n\r\n      // Remove trailing elements which are zero.\r\n      for (; c[i] === 0; c.pop(), i--);\r\n\r\n      // Zero?\r\n      if (i < 0) {\r\n        c = [e = 0];\r\n      } else {\r\n\r\n        // Remove leading elements which are zero and adjust exponent accordingly.\r\n        for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n        // Count the digits of the first element of c to determine leading zeros, and...\r\n        for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n        // adjust the exponent accordingly.\r\n        if (i < LOG_BASE) e -= LOG_BASE - i;\r\n      }\r\n\r\n      rand.e = e;\r\n      rand.c = c;\r\n      return rand;\r\n    };\r\n  })();\r\n\r\n\r\n   /*\r\n   * Return a BigNumber whose value is the sum of the arguments.\r\n   *\r\n   * arguments {number|string|BigNumber}\r\n   */\r\n  BigNumber.sum = function () {\r\n    var i = 1,\r\n      args = arguments,\r\n      sum = new BigNumber(args[0]);\r\n    for (; i < args.length;) sum = sum.plus(args[i++]);\r\n    return sum;\r\n  };\r\n\r\n\r\n  // PRIVATE FUNCTIONS\r\n\r\n\r\n  // Called by BigNumber and BigNumber.prototype.toString.\r\n  convertBase = (function () {\r\n    var decimal = '0123456789';\r\n\r\n    /*\r\n     * Convert string of baseIn to an array of numbers of baseOut.\r\n     * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n     * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n     */\r\n    function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n      var j,\r\n        arr = [0],\r\n        arrL,\r\n        i = 0,\r\n        len = str.length;\r\n\r\n      for (; i < len;) {\r\n        for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n        arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n        for (j = 0; j < arr.length; j++) {\r\n\r\n          if (arr[j] > baseOut - 1) {\r\n            if (arr[j + 1] == null) arr[j + 1] = 0;\r\n            arr[j + 1] += arr[j] / baseOut | 0;\r\n            arr[j] %= baseOut;\r\n          }\r\n        }\r\n      }\r\n\r\n      return arr.reverse();\r\n    }\r\n\r\n    // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n    // If the caller is toString, we are converting from base 10 to baseOut.\r\n    // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n    return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n      var alphabet, d, e, k, r, x, xc, y,\r\n        i = str.indexOf('.'),\r\n        dp = DECIMAL_PLACES,\r\n        rm = ROUNDING_MODE;\r\n\r\n      // Non-integer.\r\n      if (i >= 0) {\r\n        k = POW_PRECISION;\r\n\r\n        // Unlimited precision.\r\n        POW_PRECISION = 0;\r\n        str = str.replace('.', '');\r\n        y = new BigNumber(baseIn);\r\n        x = y.pow(str.length - i);\r\n        POW_PRECISION = k;\r\n\r\n        // Convert str as if an integer, then restore the fraction part by dividing the\r\n        // result by its base raised to a power.\r\n\r\n        y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n         10, baseOut, decimal);\r\n        y.e = y.c.length;\r\n      }\r\n\r\n      // Convert the number as integer.\r\n\r\n      xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n       ? (alphabet = ALPHABET, decimal)\r\n       : (alphabet = decimal, ALPHABET));\r\n\r\n      // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n      e = k = xc.length;\r\n\r\n      // Remove trailing zeros.\r\n      for (; xc[--k] == 0; xc.pop());\r\n\r\n      // Zero?\r\n      if (!xc[0]) return alphabet.charAt(0);\r\n\r\n      // Does str represent an integer? If so, no need for the division.\r\n      if (i < 0) {\r\n        --e;\r\n      } else {\r\n        x.c = xc;\r\n        x.e = e;\r\n\r\n        // The sign is needed for correct rounding.\r\n        x.s = sign;\r\n        x = div(x, y, dp, rm, baseOut);\r\n        xc = x.c;\r\n        r = x.r;\r\n        e = x.e;\r\n      }\r\n\r\n      // xc now represents str converted to baseOut.\r\n\r\n      // THe index of the rounding digit.\r\n      d = e + dp + 1;\r\n\r\n      // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n      i = xc[d];\r\n\r\n      // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n      k = baseOut / 2;\r\n      r = r || d < 0 || xc[d + 1] != null;\r\n\r\n      r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n            : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n             rm == (x.s < 0 ? 8 : 7));\r\n\r\n      // If the index of the rounding digit is not greater than zero, or xc represents\r\n      // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n      // such as 0.00001.\r\n      if (d < 1 || !xc[0]) {\r\n\r\n        // 1^-dp or 0\r\n        str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n      } else {\r\n\r\n        // Truncate xc to the required number of decimal places.\r\n        xc.length = d;\r\n\r\n        // Round up?\r\n        if (r) {\r\n\r\n          // Rounding up may mean the previous digit has to be rounded up and so on.\r\n          for (--baseOut; ++xc[--d] > baseOut;) {\r\n            xc[d] = 0;\r\n\r\n            if (!d) {\r\n              ++e;\r\n              xc = [1].concat(xc);\r\n            }\r\n          }\r\n        }\r\n\r\n        // Determine trailing zeros.\r\n        for (k = xc.length; !xc[--k];);\r\n\r\n        // E.g. [4, 11, 15] becomes 4bf.\r\n        for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n        // Add leading zeros, decimal point and trailing zeros as required.\r\n        str = toFixedPoint(str, e, alphabet.charAt(0));\r\n      }\r\n\r\n      // The caller will add the sign.\r\n      return str;\r\n    };\r\n  })();\r\n\r\n\r\n  // Perform division in the specified base. Called by div and convertBase.\r\n  div = (function () {\r\n\r\n    // Assume non-zero x and k.\r\n    function multiply(x, k, base) {\r\n      var m, temp, xlo, xhi,\r\n        carry = 0,\r\n        i = x.length,\r\n        klo = k % SQRT_BASE,\r\n        khi = k / SQRT_BASE | 0;\r\n\r\n      for (x = x.slice(); i--;) {\r\n        xlo = x[i] % SQRT_BASE;\r\n        xhi = x[i] / SQRT_BASE | 0;\r\n        m = khi * xlo + xhi * klo;\r\n        temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n        carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n        x[i] = temp % base;\r\n      }\r\n\r\n      if (carry) x = [carry].concat(x);\r\n\r\n      return x;\r\n    }\r\n\r\n    function compare(a, b, aL, bL) {\r\n      var i, cmp;\r\n\r\n      if (aL != bL) {\r\n        cmp = aL > bL ? 1 : -1;\r\n      } else {\r\n\r\n        for (i = cmp = 0; i < aL; i++) {\r\n\r\n          if (a[i] != b[i]) {\r\n            cmp = a[i] > b[i] ? 1 : -1;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n\r\n      return cmp;\r\n    }\r\n\r\n    function subtract(a, b, aL, base) {\r\n      var i = 0;\r\n\r\n      // Subtract b from a.\r\n      for (; aL--;) {\r\n        a[aL] -= i;\r\n        i = a[aL] < b[aL] ? 1 : 0;\r\n        a[aL] = i * base + a[aL] - b[aL];\r\n      }\r\n\r\n      // Remove leading zeros.\r\n      for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n    }\r\n\r\n    // x: dividend, y: divisor.\r\n    return function (x, y, dp, rm, base) {\r\n      var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n        yL, yz,\r\n        s = x.s == y.s ? 1 : -1,\r\n        xc = x.c,\r\n        yc = y.c;\r\n\r\n      // Either NaN, Infinity or 0?\r\n      if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n        return new BigNumber(\r\n\r\n         // Return NaN if either NaN, or both Infinity or 0.\r\n         !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n          // Return \u00B10 if x is \u00B10 or y is \u00B1Infinity, or return \u00B1Infinity as y is \u00B10.\r\n          xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n       );\r\n      }\r\n\r\n      q = new BigNumber(s);\r\n      qc = q.c = [];\r\n      e = x.e - y.e;\r\n      s = dp + e + 1;\r\n\r\n      if (!base) {\r\n        base = BASE;\r\n        e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n        s = s / LOG_BASE | 0;\r\n      }\r\n\r\n      // Result exponent may be one less then the current value of e.\r\n      // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n      for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n      if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n      if (s < 0) {\r\n        qc.push(1);\r\n        more = true;\r\n      } else {\r\n        xL = xc.length;\r\n        yL = yc.length;\r\n        i = 0;\r\n        s += 2;\r\n\r\n        // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n        n = mathfloor(base / (yc[0] + 1));\r\n\r\n        // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n        // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n        if (n > 1) {\r\n          yc = multiply(yc, n, base);\r\n          xc = multiply(xc, n, base);\r\n          yL = yc.length;\r\n          xL = xc.length;\r\n        }\r\n\r\n        xi = yL;\r\n        rem = xc.slice(0, yL);\r\n        remL = rem.length;\r\n\r\n        // Add zeros to make remainder as long as divisor.\r\n        for (; remL < yL; rem[remL++] = 0);\r\n        yz = yc.slice();\r\n        yz = [0].concat(yz);\r\n        yc0 = yc[0];\r\n        if (yc[1] >= base / 2) yc0++;\r\n        // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n        // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n        do {\r\n          n = 0;\r\n\r\n          // Compare divisor and remainder.\r\n          cmp = compare(yc, rem, yL, remL);\r\n\r\n          // If divisor < remainder.\r\n          if (cmp < 0) {\r\n\r\n            // Calculate trial digit, n.\r\n\r\n            rem0 = rem[0];\r\n            if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n            // n is how many times the divisor goes into the current remainder.\r\n            n = mathfloor(rem0 / yc0);\r\n\r\n            //  Algorithm:\r\n            //  product = divisor multiplied by trial digit (n).\r\n            //  Compare product and remainder.\r\n            //  If product is greater than remainder:\r\n            //    Subtract divisor from product, decrement trial digit.\r\n            //  Subtract product from remainder.\r\n            //  If product was less than remainder at the last compare:\r\n            //    Compare new remainder and divisor.\r\n            //    If remainder is greater than divisor:\r\n            //      Subtract divisor from remainder, increment trial digit.\r\n\r\n            if (n > 1) {\r\n\r\n              // n may be > base only when base is 3.\r\n              if (n >= base) n = base - 1;\r\n\r\n              // product = divisor * trial digit.\r\n              prod = multiply(yc, n, base);\r\n              prodL = prod.length;\r\n              remL = rem.length;\r\n\r\n              // Compare product and remainder.\r\n              // If product > remainder then trial digit n too high.\r\n              // n is 1 too high about 5% of the time, and is not known to have\r\n              // ever been more than 1 too high.\r\n              while (compare(prod, rem, prodL, remL) == 1) {\r\n                n--;\r\n\r\n                // Subtract divisor from product.\r\n                subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n                prodL = prod.length;\r\n                cmp = 1;\r\n              }\r\n            } else {\r\n\r\n              // n is 0 or 1, cmp is -1.\r\n              // If n is 0, there is no need to compare yc and rem again below,\r\n              // so change cmp to 1 to avoid it.\r\n              // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n              if (n == 0) {\r\n\r\n                // divisor < remainder, so n must be at least 1.\r\n                cmp = n = 1;\r\n              }\r\n\r\n              // product = divisor\r\n              prod = yc.slice();\r\n              prodL = prod.length;\r\n            }\r\n\r\n            if (prodL < remL) prod = [0].concat(prod);\r\n\r\n            // Subtract product from remainder.\r\n            subtract(rem, prod, remL, base);\r\n            remL = rem.length;\r\n\r\n             // If product was < remainder.\r\n            if (cmp == -1) {\r\n\r\n              // Compare divisor and new remainder.\r\n              // If divisor < new remainder, subtract divisor from remainder.\r\n              // Trial digit n too low.\r\n              // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n              while (compare(yc, rem, yL, remL) < 1) {\r\n                n++;\r\n\r\n                // Subtract divisor from remainder.\r\n                subtract(rem, yL < remL ? yz : yc, remL, base);\r\n                remL = rem.length;\r\n              }\r\n            }\r\n          } else if (cmp === 0) {\r\n            n++;\r\n            rem = [0];\r\n          } // else cmp === 1 and n will be 0\r\n\r\n          // Add the next digit, n, to the result array.\r\n          qc[i++] = n;\r\n\r\n          // Update the remainder.\r\n          if (rem[0]) {\r\n            rem[remL++] = xc[xi] || 0;\r\n          } else {\r\n            rem = [xc[xi]];\r\n            remL = 1;\r\n          }\r\n        } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n        more = rem[0] != null;\r\n\r\n        // Leading zero?\r\n        if (!qc[0]) qc.splice(0, 1);\r\n      }\r\n\r\n      if (base == BASE) {\r\n\r\n        // To calculate q.e, first get the number of digits of qc[0].\r\n        for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n        round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n      // Caller is convertBase.\r\n      } else {\r\n        q.e = e;\r\n        q.r = +more;\r\n      }\r\n\r\n      return q;\r\n    };\r\n  })();\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n   * notation rounded to the specified decimal places or significant digits.\r\n   *\r\n   * n: a BigNumber.\r\n   * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n   * rm: the rounding mode.\r\n   * id: 1 (toExponential) or 2 (toPrecision).\r\n   */\r\n  function format(n, i, rm, id) {\r\n    var c0, e, ne, len, str;\r\n\r\n    if (rm == null) rm = ROUNDING_MODE;\r\n    else intCheck(rm, 0, 8);\r\n\r\n    if (!n.c) return n.toString();\r\n\r\n    c0 = n.c[0];\r\n    ne = n.e;\r\n\r\n    if (i == null) {\r\n      str = coeffToString(n.c);\r\n      str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n       ? toExponential(str, ne)\r\n       : toFixedPoint(str, ne, '0');\r\n    } else {\r\n      n = round(new BigNumber(n), i, rm);\r\n\r\n      // n.e may have changed if the value was rounded up.\r\n      e = n.e;\r\n\r\n      str = coeffToString(n.c);\r\n      len = str.length;\r\n\r\n      // toPrecision returns exponential notation if the number of significant digits\r\n      // specified is less than the number of digits necessary to represent the integer\r\n      // part of the value in fixed-point notation.\r\n\r\n      // Exponential notation.\r\n      if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n        // Append zeros?\r\n        for (; len < i; str += '0', len++);\r\n        str = toExponential(str, e);\r\n\r\n      // Fixed-point notation.\r\n      } else {\r\n        i -= ne;\r\n        str = toFixedPoint(str, e, '0');\r\n\r\n        // Append zeros?\r\n        if (e + 1 > len) {\r\n          if (--i > 0) for (str += '.'; i--; str += '0');\r\n        } else {\r\n          i += e - len;\r\n          if (i > 0) {\r\n            if (e + 1 == len) str += '.';\r\n            for (; i--; str += '0');\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    return n.s < 0 && c0 ? '-' + str : str;\r\n  }\r\n\r\n\r\n  // Handle BigNumber.max and BigNumber.min.\r\n  // If any number is NaN, return NaN.\r\n  function maxOrMin(args, n) {\r\n    var k, y,\r\n      i = 1,\r\n      x = new BigNumber(args[0]);\r\n\r\n    for (; i < args.length; i++) {\r\n      y = new BigNumber(args[i]);\r\n      if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n        x = y;\r\n      }\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  /*\r\n   * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n   * Called by minus, plus and times.\r\n   */\r\n  function normalise(n, c, e) {\r\n    var i = 1,\r\n      j = c.length;\r\n\r\n     // Remove trailing zeros.\r\n    for (; !c[--j]; c.pop());\r\n\r\n    // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n    for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n    // Overflow?\r\n    if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n      // Infinity.\r\n      n.c = n.e = null;\r\n\r\n    // Underflow?\r\n    } else if (e < MIN_EXP) {\r\n\r\n      // Zero.\r\n      n.c = [n.e = 0];\r\n    } else {\r\n      n.e = e;\r\n      n.c = c;\r\n    }\r\n\r\n    return n;\r\n  }\r\n\r\n\r\n  // Handle values that fail the validity test in BigNumber.\r\n  parseNumeric = (function () {\r\n    var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n      dotAfter = /^([^.]+)\\.$/,\r\n      dotBefore = /^\\.([^.]+)$/,\r\n      isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n      whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n    return function (x, str, isNum, b) {\r\n      var base,\r\n        s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n      // No exception on \u00B1Infinity or NaN.\r\n      if (isInfinityOrNaN.test(s)) {\r\n        x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n      } else {\r\n        if (!isNum) {\r\n\r\n          // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n          s = s.replace(basePrefix, function (m, p1, p2) {\r\n            base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n            return !b || b == base ? p1 : m;\r\n          });\r\n\r\n          if (b) {\r\n            base = b;\r\n\r\n            // E.g. '1.' to '1', '.1' to '0.1'\r\n            s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n          }\r\n\r\n          if (str != s) return new BigNumber(s, base);\r\n        }\r\n\r\n        // '[BigNumber Error] Not a number: {n}'\r\n        // '[BigNumber Error] Not a base {b} number: {n}'\r\n        if (BigNumber.DEBUG) {\r\n          throw Error\r\n            (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n        }\r\n\r\n        // NaN\r\n        x.s = null;\r\n      }\r\n\r\n      x.c = x.e = null;\r\n    }\r\n  })();\r\n\r\n\r\n  /*\r\n   * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n   * If r is truthy, it is known that there are more digits after the rounding digit.\r\n   */\r\n  function round(x, sd, rm, r) {\r\n    var d, i, j, k, n, ni, rd,\r\n      xc = x.c,\r\n      pows10 = POWS_TEN;\r\n\r\n    // if x is not Infinity or NaN...\r\n    if (xc) {\r\n\r\n      // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n      // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n      // ni is the index of n within x.c.\r\n      // d is the number of digits of n.\r\n      // i is the index of rd within n including leading zeros.\r\n      // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n      out: {\r\n\r\n        // Get the number of digits of the first element of xc.\r\n        for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n        i = sd - d;\r\n\r\n        // If the rounding digit is in the first element of xc...\r\n        if (i < 0) {\r\n          i += LOG_BASE;\r\n          j = sd;\r\n          n = xc[ni = 0];\r\n\r\n          // Get the rounding digit at index j of n.\r\n          rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n        } else {\r\n          ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n          if (ni >= xc.length) {\r\n\r\n            if (r) {\r\n\r\n              // Needed by sqrt.\r\n              for (; xc.length <= ni; xc.push(0));\r\n              n = rd = 0;\r\n              d = 1;\r\n              i %= LOG_BASE;\r\n              j = i - LOG_BASE + 1;\r\n            } else {\r\n              break out;\r\n            }\r\n          } else {\r\n            n = k = xc[ni];\r\n\r\n            // Get the number of digits of n.\r\n            for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n            // Get the index of rd within n.\r\n            i %= LOG_BASE;\r\n\r\n            // Get the index of rd within n, adjusted for leading zeros.\r\n            // The number of leading zeros of n is given by LOG_BASE - d.\r\n            j = i - LOG_BASE + d;\r\n\r\n            // Get the rounding digit at index j of n.\r\n            rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n          }\r\n        }\r\n\r\n        r = r || sd < 0 ||\r\n\r\n        // Are there any non-zero digits after the rounding digit?\r\n        // The expression  n % pows10[d - j - 1]  returns all digits of n to the right\r\n        // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n         xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n        r = rm < 4\r\n         ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n         : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n          // Check whether the digit to the left of the rounding digit is odd.\r\n          ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n           rm == (x.s < 0 ? 8 : 7));\r\n\r\n        if (sd < 1 || !xc[0]) {\r\n          xc.length = 0;\r\n\r\n          if (r) {\r\n\r\n            // Convert sd to decimal places.\r\n            sd -= x.e + 1;\r\n\r\n            // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n            xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n            x.e = -sd || 0;\r\n          } else {\r\n\r\n            // Zero.\r\n            xc[0] = x.e = 0;\r\n          }\r\n\r\n          return x;\r\n        }\r\n\r\n        // Remove excess digits.\r\n        if (i == 0) {\r\n          xc.length = ni;\r\n          k = 1;\r\n          ni--;\r\n        } else {\r\n          xc.length = ni + 1;\r\n          k = pows10[LOG_BASE - i];\r\n\r\n          // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n          // j > 0 means i > number of leading zeros of n.\r\n          xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n        }\r\n\r\n        // Round up?\r\n        if (r) {\r\n\r\n          for (; ;) {\r\n\r\n            // If the digit to be rounded up is in the first element of xc...\r\n            if (ni == 0) {\r\n\r\n              // i will be the length of xc[0] before k is added.\r\n              for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n              j = xc[0] += k;\r\n              for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n              // if i != k the length has increased.\r\n              if (i != k) {\r\n                x.e++;\r\n                if (xc[0] == BASE) xc[0] = 1;\r\n              }\r\n\r\n              break;\r\n            } else {\r\n              xc[ni] += k;\r\n              if (xc[ni] != BASE) break;\r\n              xc[ni--] = 0;\r\n              k = 1;\r\n            }\r\n          }\r\n        }\r\n\r\n        // Remove trailing zeros.\r\n        for (i = xc.length; xc[--i] === 0; xc.pop());\r\n      }\r\n\r\n      // Overflow? Infinity.\r\n      if (x.e > MAX_EXP) {\r\n        x.c = x.e = null;\r\n\r\n      // Underflow? Zero.\r\n      } else if (x.e < MIN_EXP) {\r\n        x.c = [x.e = 0];\r\n      }\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  function valueOf(n) {\r\n    var str,\r\n      e = n.e;\r\n\r\n    if (e === null) return n.toString();\r\n\r\n    str = coeffToString(n.c);\r\n\r\n    str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n      ? toExponential(str, e)\r\n      : toFixedPoint(str, e, '0');\r\n\r\n    return n.s < 0 ? '-' + str : str;\r\n  }\r\n\r\n\r\n  // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n   */\r\n  P.absoluteValue = P.abs = function () {\r\n    var x = new BigNumber(this);\r\n    if (x.s < 0) x.s = 1;\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return\r\n   *   1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n   *   -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n   *   0 if they have the same value,\r\n   *   or null if the value of either is NaN.\r\n   */\r\n  P.comparedTo = function (y, b) {\r\n    return compare(this, new BigNumber(y, b));\r\n  };\r\n\r\n\r\n  /*\r\n   * If dp is undefined or null or true or false, return the number of decimal places of the\r\n   * value of this BigNumber, or null if the value of this BigNumber is \u00B1Infinity or NaN.\r\n   *\r\n   * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n   * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n   * ROUNDING_MODE if rm is omitted.\r\n   *\r\n   * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n   */\r\n  P.decimalPlaces = P.dp = function (dp, rm) {\r\n    var c, n, v,\r\n      x = this;\r\n\r\n    if (dp != null) {\r\n      intCheck(dp, 0, MAX);\r\n      if (rm == null) rm = ROUNDING_MODE;\r\n      else intCheck(rm, 0, 8);\r\n\r\n      return round(new BigNumber(x), dp + x.e + 1, rm);\r\n    }\r\n\r\n    if (!(c = x.c)) return null;\r\n    n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n    // Subtract the number of trailing zeros of the last number.\r\n    if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n    if (n < 0) n = 0;\r\n\r\n    return n;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n / 0 = I\r\n   *  n / N = N\r\n   *  n / I = 0\r\n   *  0 / n = 0\r\n   *  0 / 0 = N\r\n   *  0 / N = N\r\n   *  0 / I = 0\r\n   *  N / n = N\r\n   *  N / 0 = N\r\n   *  N / N = N\r\n   *  N / I = N\r\n   *  I / n = I\r\n   *  I / 0 = I\r\n   *  I / N = N\r\n   *  I / I = N\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n   * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n   */\r\n  P.dividedBy = P.div = function (y, b) {\r\n    return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n   * BigNumber by the value of BigNumber(y, b).\r\n   */\r\n  P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n    return div(this, new BigNumber(y, b), 0, 1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n   *\r\n   * If m is present, return the result modulo m.\r\n   * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n   * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n   *\r\n   * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n   * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n   *\r\n   * n {number|string|BigNumber} The exponent. An integer.\r\n   * [m] {number|string|BigNumber} The modulus.\r\n   *\r\n   * '[BigNumber Error] Exponent not an integer: {n}'\r\n   */\r\n  P.exponentiatedBy = P.pow = function (n, m) {\r\n    var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n      x = this;\r\n\r\n    n = new BigNumber(n);\r\n\r\n    // Allow NaN and \u00B1Infinity, but not other non-integers.\r\n    if (n.c && !n.isInteger()) {\r\n      throw Error\r\n        (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n    }\r\n\r\n    if (m != null) m = new BigNumber(m);\r\n\r\n    // Exponent of MAX_SAFE_INTEGER is 15.\r\n    nIsBig = n.e > 14;\r\n\r\n    // If x is NaN, \u00B1Infinity, \u00B10 or \u00B11, or n is \u00B1Infinity, NaN or \u00B10.\r\n    if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n      // The sign of the result of pow when x is negative depends on the evenness of n.\r\n      // If +n overflows to \u00B1Infinity, the evenness of n would be not be known.\r\n      y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n      return m ? y.mod(m) : y;\r\n    }\r\n\r\n    nIsNeg = n.s < 0;\r\n\r\n    if (m) {\r\n\r\n      // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n      if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n      isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n      if (isModExp) x = x.mod(m);\r\n\r\n    // Overflow to \u00B1Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n    // Underflow to \u00B10: <=0.79**1e10 or <=0.9999975**1e15.\r\n    } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n      // [1, 240000000]\r\n      ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n      // [80000000000000]  [99999750000000]\r\n      : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n      // If x is negative and n is odd, k = -0, else k = 0.\r\n      k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n      // If x >= 1, k = \u00B1Infinity.\r\n      if (x.e > -1) k = 1 / k;\r\n\r\n      // If n is negative return \u00B10, else return \u00B1Infinity.\r\n      return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n    } else if (POW_PRECISION) {\r\n\r\n      // Truncating each coefficient array to a length of k after each multiplication\r\n      // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n      // i.e. there will be a minimum of 28 guard digits retained.\r\n      k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n    }\r\n\r\n    if (nIsBig) {\r\n      half = new BigNumber(0.5);\r\n      if (nIsNeg) n.s = 1;\r\n      nIsOdd = isOdd(n);\r\n    } else {\r\n      i = Math.abs(+valueOf(n));\r\n      nIsOdd = i % 2;\r\n    }\r\n\r\n    y = new BigNumber(ONE);\r\n\r\n    // Performs 54 loop iterations for n of 9007199254740991.\r\n    for (; ;) {\r\n\r\n      if (nIsOdd) {\r\n        y = y.times(x);\r\n        if (!y.c) break;\r\n\r\n        if (k) {\r\n          if (y.c.length > k) y.c.length = k;\r\n        } else if (isModExp) {\r\n          y = y.mod(m);    //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n        }\r\n      }\r\n\r\n      if (i) {\r\n        i = mathfloor(i / 2);\r\n        if (i === 0) break;\r\n        nIsOdd = i % 2;\r\n      } else {\r\n        n = n.times(half);\r\n        round(n, n.e + 1, 1);\r\n\r\n        if (n.e > 14) {\r\n          nIsOdd = isOdd(n);\r\n        } else {\r\n          i = +valueOf(n);\r\n          if (i === 0) break;\r\n          nIsOdd = i % 2;\r\n        }\r\n      }\r\n\r\n      x = x.times(x);\r\n\r\n      if (k) {\r\n        if (x.c && x.c.length > k) x.c.length = k;\r\n      } else if (isModExp) {\r\n        x = x.mod(m);    //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n      }\r\n    }\r\n\r\n    if (isModExp) return y;\r\n    if (nIsNeg) y = ONE.div(y);\r\n\r\n    return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n   * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n   *\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n   */\r\n  P.integerValue = function (rm) {\r\n    var n = new BigNumber(this);\r\n    if (rm == null) rm = ROUNDING_MODE;\r\n    else intCheck(rm, 0, 8);\r\n    return round(n, n.e + 1, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n   * otherwise return false.\r\n   */\r\n  P.isEqualTo = P.eq = function (y, b) {\r\n    return compare(this, new BigNumber(y, b)) === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n   */\r\n  P.isFinite = function () {\r\n    return !!this.c;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n   * otherwise return false.\r\n   */\r\n  P.isGreaterThan = P.gt = function (y, b) {\r\n    return compare(this, new BigNumber(y, b)) > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is greater than or equal to the value of\r\n   * BigNumber(y, b), otherwise return false.\r\n   */\r\n  P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n    return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n   */\r\n  P.isInteger = function () {\r\n    return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n   * otherwise return false.\r\n   */\r\n  P.isLessThan = P.lt = function (y, b) {\r\n    return compare(this, new BigNumber(y, b)) < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is less than or equal to the value of\r\n   * BigNumber(y, b), otherwise return false.\r\n   */\r\n  P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n    return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n   */\r\n  P.isNaN = function () {\r\n    return !this.s;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is negative, otherwise return false.\r\n   */\r\n  P.isNegative = function () {\r\n    return this.s < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is positive, otherwise return false.\r\n   */\r\n  P.isPositive = function () {\r\n    return this.s > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n   */\r\n  P.isZero = function () {\r\n    return !!this.c && this.c[0] == 0;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n - 0 = n\r\n   *  n - N = N\r\n   *  n - I = -I\r\n   *  0 - n = -n\r\n   *  0 - 0 = 0\r\n   *  0 - N = N\r\n   *  0 - I = -I\r\n   *  N - n = N\r\n   *  N - 0 = N\r\n   *  N - N = N\r\n   *  N - I = N\r\n   *  I - n = I\r\n   *  I - 0 = I\r\n   *  I - N = N\r\n   *  I - I = N\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n   * BigNumber(y, b).\r\n   */\r\n  P.minus = function (y, b) {\r\n    var i, j, t, xLTy,\r\n      x = this,\r\n      a = x.s;\r\n\r\n    y = new BigNumber(y, b);\r\n    b = y.s;\r\n\r\n    // Either NaN?\r\n    if (!a || !b) return new BigNumber(NaN);\r\n\r\n    // Signs differ?\r\n    if (a != b) {\r\n      y.s = -b;\r\n      return x.plus(y);\r\n    }\r\n\r\n    var xe = x.e / LOG_BASE,\r\n      ye = y.e / LOG_BASE,\r\n      xc = x.c,\r\n      yc = y.c;\r\n\r\n    if (!xe || !ye) {\r\n\r\n      // Either Infinity?\r\n      if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n      // Either zero?\r\n      if (!xc[0] || !yc[0]) {\r\n\r\n        // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n        return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n         // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n         ROUNDING_MODE == 3 ? -0 : 0);\r\n      }\r\n    }\r\n\r\n    xe = bitFloor(xe);\r\n    ye = bitFloor(ye);\r\n    xc = xc.slice();\r\n\r\n    // Determine which is the bigger number.\r\n    if (a = xe - ye) {\r\n\r\n      if (xLTy = a < 0) {\r\n        a = -a;\r\n        t = xc;\r\n      } else {\r\n        ye = xe;\r\n        t = yc;\r\n      }\r\n\r\n      t.reverse();\r\n\r\n      // Prepend zeros to equalise exponents.\r\n      for (b = a; b--; t.push(0));\r\n      t.reverse();\r\n    } else {\r\n\r\n      // Exponents equal. Check digit by digit.\r\n      j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n      for (a = b = 0; b < j; b++) {\r\n\r\n        if (xc[b] != yc[b]) {\r\n          xLTy = xc[b] < yc[b];\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    // x < y? Point xc to the array of the bigger number.\r\n    if (xLTy) {\r\n      t = xc;\r\n      xc = yc;\r\n      yc = t;\r\n      y.s = -y.s;\r\n    }\r\n\r\n    b = (j = yc.length) - (i = xc.length);\r\n\r\n    // Append zeros to xc if shorter.\r\n    // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n    if (b > 0) for (; b--; xc[i++] = 0);\r\n    b = BASE - 1;\r\n\r\n    // Subtract yc from xc.\r\n    for (; j > a;) {\r\n\r\n      if (xc[--j] < yc[j]) {\r\n        for (i = j; i && !xc[--i]; xc[i] = b);\r\n        --xc[i];\r\n        xc[j] += BASE;\r\n      }\r\n\r\n      xc[j] -= yc[j];\r\n    }\r\n\r\n    // Remove leading zeros and adjust exponent accordingly.\r\n    for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n    // Zero?\r\n    if (!xc[0]) {\r\n\r\n      // Following IEEE 754 (2008) 6.3,\r\n      // n - n = +0  but  n - n = -0  when rounding towards -Infinity.\r\n      y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n      y.c = [y.e = 0];\r\n      return y;\r\n    }\r\n\r\n    // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n    // for finite x and y.\r\n    return normalise(y, xc, ye);\r\n  };\r\n\r\n\r\n  /*\r\n   *   n % 0 =  N\r\n   *   n % N =  N\r\n   *   n % I =  n\r\n   *   0 % n =  0\r\n   *  -0 % n = -0\r\n   *   0 % 0 =  N\r\n   *   0 % N =  N\r\n   *   0 % I =  0\r\n   *   N % n =  N\r\n   *   N % 0 =  N\r\n   *   N % N =  N\r\n   *   N % I =  N\r\n   *   I % n =  N\r\n   *   I % 0 =  N\r\n   *   I % N =  N\r\n   *   I % I =  N\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n   * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n   */\r\n  P.modulo = P.mod = function (y, b) {\r\n    var q, s,\r\n      x = this;\r\n\r\n    y = new BigNumber(y, b);\r\n\r\n    // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n    if (!x.c || !y.s || y.c && !y.c[0]) {\r\n      return new BigNumber(NaN);\r\n\r\n    // Return x if y is Infinity or x is zero.\r\n    } else if (!y.c || x.c && !x.c[0]) {\r\n      return new BigNumber(x);\r\n    }\r\n\r\n    if (MODULO_MODE == 9) {\r\n\r\n      // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n      // r = x - qy    where  0 <= r < abs(y)\r\n      s = y.s;\r\n      y.s = 1;\r\n      q = div(x, y, 0, 3);\r\n      y.s = s;\r\n      q.s *= s;\r\n    } else {\r\n      q = div(x, y, 0, MODULO_MODE);\r\n    }\r\n\r\n    y = x.minus(q.times(y));\r\n\r\n    // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n    if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n    return y;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n * 0 = 0\r\n   *  n * N = N\r\n   *  n * I = I\r\n   *  0 * n = 0\r\n   *  0 * 0 = 0\r\n   *  0 * N = N\r\n   *  0 * I = N\r\n   *  N * n = N\r\n   *  N * 0 = N\r\n   *  N * N = N\r\n   *  N * I = N\r\n   *  I * n = I\r\n   *  I * 0 = N\r\n   *  I * N = N\r\n   *  I * I = I\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n   * of BigNumber(y, b).\r\n   */\r\n  P.multipliedBy = P.times = function (y, b) {\r\n    var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n      base, sqrtBase,\r\n      x = this,\r\n      xc = x.c,\r\n      yc = (y = new BigNumber(y, b)).c;\r\n\r\n    // Either NaN, \u00B1Infinity or \u00B10?\r\n    if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n      // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n      if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n        y.c = y.e = y.s = null;\r\n      } else {\r\n        y.s *= x.s;\r\n\r\n        // Return \u00B1Infinity if either is \u00B1Infinity.\r\n        if (!xc || !yc) {\r\n          y.c = y.e = null;\r\n\r\n        // Return \u00B10 if either is \u00B10.\r\n        } else {\r\n          y.c = [0];\r\n          y.e = 0;\r\n        }\r\n      }\r\n\r\n      return y;\r\n    }\r\n\r\n    e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n    y.s *= x.s;\r\n    xcL = xc.length;\r\n    ycL = yc.length;\r\n\r\n    // Ensure xc points to longer array and xcL to its length.\r\n    if (xcL < ycL) {\r\n      zc = xc;\r\n      xc = yc;\r\n      yc = zc;\r\n      i = xcL;\r\n      xcL = ycL;\r\n      ycL = i;\r\n    }\r\n\r\n    // Initialise the result array with zeros.\r\n    for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n    base = BASE;\r\n    sqrtBase = SQRT_BASE;\r\n\r\n    for (i = ycL; --i >= 0;) {\r\n      c = 0;\r\n      ylo = yc[i] % sqrtBase;\r\n      yhi = yc[i] / sqrtBase | 0;\r\n\r\n      for (k = xcL, j = i + k; j > i;) {\r\n        xlo = xc[--k] % sqrtBase;\r\n        xhi = xc[k] / sqrtBase | 0;\r\n        m = yhi * xlo + xhi * ylo;\r\n        xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n        c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n        zc[j--] = xlo % base;\r\n      }\r\n\r\n      zc[j] = c;\r\n    }\r\n\r\n    if (c) {\r\n      ++e;\r\n    } else {\r\n      zc.splice(0, 1);\r\n    }\r\n\r\n    return normalise(y, zc, e);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n   * i.e. multiplied by -1.\r\n   */\r\n  P.negated = function () {\r\n    var x = new BigNumber(this);\r\n    x.s = -x.s || null;\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n + 0 = n\r\n   *  n + N = N\r\n   *  n + I = I\r\n   *  0 + n = n\r\n   *  0 + 0 = 0\r\n   *  0 + N = N\r\n   *  0 + I = I\r\n   *  N + n = N\r\n   *  N + 0 = N\r\n   *  N + N = N\r\n   *  N + I = N\r\n   *  I + n = I\r\n   *  I + 0 = I\r\n   *  I + N = N\r\n   *  I + I = I\r\n   *\r\n   * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n   * BigNumber(y, b).\r\n   */\r\n  P.plus = function (y, b) {\r\n    var t,\r\n      x = this,\r\n      a = x.s;\r\n\r\n    y = new BigNumber(y, b);\r\n    b = y.s;\r\n\r\n    // Either NaN?\r\n    if (!a || !b) return new BigNumber(NaN);\r\n\r\n    // Signs differ?\r\n     if (a != b) {\r\n      y.s = -b;\r\n      return x.minus(y);\r\n    }\r\n\r\n    var xe = x.e / LOG_BASE,\r\n      ye = y.e / LOG_BASE,\r\n      xc = x.c,\r\n      yc = y.c;\r\n\r\n    if (!xe || !ye) {\r\n\r\n      // Return \u00B1Infinity if either \u00B1Infinity.\r\n      if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n      // Either zero?\r\n      // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n      if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n    }\r\n\r\n    xe = bitFloor(xe);\r\n    ye = bitFloor(ye);\r\n    xc = xc.slice();\r\n\r\n    // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n    if (a = xe - ye) {\r\n      if (a > 0) {\r\n        ye = xe;\r\n        t = yc;\r\n      } else {\r\n        a = -a;\r\n        t = xc;\r\n      }\r\n\r\n      t.reverse();\r\n      for (; a--; t.push(0));\r\n      t.reverse();\r\n    }\r\n\r\n    a = xc.length;\r\n    b = yc.length;\r\n\r\n    // Point xc to the longer array, and b to the shorter length.\r\n    if (a - b < 0) {\r\n      t = yc;\r\n      yc = xc;\r\n      xc = t;\r\n      b = a;\r\n    }\r\n\r\n    // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n    for (a = 0; b;) {\r\n      a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n      xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n    }\r\n\r\n    if (a) {\r\n      xc = [a].concat(xc);\r\n      ++ye;\r\n    }\r\n\r\n    // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n    // ye = MAX_EXP + 1 possible\r\n    return normalise(y, xc, ye);\r\n  };\r\n\r\n\r\n  /*\r\n   * If sd is undefined or null or true or false, return the number of significant digits of\r\n   * the value of this BigNumber, or null if the value of this BigNumber is \u00B1Infinity or NaN.\r\n   * If sd is true include integer-part trailing zeros in the count.\r\n   *\r\n   * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n   * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n   * ROUNDING_MODE if rm is omitted.\r\n   *\r\n   * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n   *                     boolean: whether to count integer-part trailing zeros: true or false.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n   */\r\n  P.precision = P.sd = function (sd, rm) {\r\n    var c, n, v,\r\n      x = this;\r\n\r\n    if (sd != null && sd !== !!sd) {\r\n      intCheck(sd, 1, MAX);\r\n      if (rm == null) rm = ROUNDING_MODE;\r\n      else intCheck(rm, 0, 8);\r\n\r\n      return round(new BigNumber(x), sd, rm);\r\n    }\r\n\r\n    if (!(c = x.c)) return null;\r\n    v = c.length - 1;\r\n    n = v * LOG_BASE + 1;\r\n\r\n    if (v = c[v]) {\r\n\r\n      // Subtract the number of trailing zeros of the last element.\r\n      for (; v % 10 == 0; v /= 10, n--);\r\n\r\n      // Add the number of digits of the first element.\r\n      for (v = c[0]; v >= 10; v /= 10, n++);\r\n    }\r\n\r\n    if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n    return n;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n   * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n   *\r\n   * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n   */\r\n  P.shiftedBy = function (k) {\r\n    intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n    return this.times('1e' + k);\r\n  };\r\n\r\n\r\n  /*\r\n   *  sqrt(-n) =  N\r\n   *  sqrt(N) =  N\r\n   *  sqrt(-I) =  N\r\n   *  sqrt(I) =  I\r\n   *  sqrt(0) =  0\r\n   *  sqrt(-0) = -0\r\n   *\r\n   * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n   * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n   */\r\n  P.squareRoot = P.sqrt = function () {\r\n    var m, n, r, rep, t,\r\n      x = this,\r\n      c = x.c,\r\n      s = x.s,\r\n      e = x.e,\r\n      dp = DECIMAL_PLACES + 4,\r\n      half = new BigNumber('0.5');\r\n\r\n    // Negative/NaN/Infinity/zero?\r\n    if (s !== 1 || !c || !c[0]) {\r\n      return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n    }\r\n\r\n    // Initial estimate.\r\n    s = Math.sqrt(+valueOf(x));\r\n\r\n    // Math.sqrt underflow/overflow?\r\n    // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n    if (s == 0 || s == 1 / 0) {\r\n      n = coeffToString(c);\r\n      if ((n.length + e) % 2 == 0) n += '0';\r\n      s = Math.sqrt(+n);\r\n      e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n      if (s == 1 / 0) {\r\n        n = '5e' + e;\r\n      } else {\r\n        n = s.toExponential();\r\n        n = n.slice(0, n.indexOf('e') + 1) + e;\r\n      }\r\n\r\n      r = new BigNumber(n);\r\n    } else {\r\n      r = new BigNumber(s + '');\r\n    }\r\n\r\n    // Check for zero.\r\n    // r could be zero if MIN_EXP is changed after the this value was created.\r\n    // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n    // coeffToString to throw.\r\n    if (r.c[0]) {\r\n      e = r.e;\r\n      s = e + dp;\r\n      if (s < 3) s = 0;\r\n\r\n      // Newton-Raphson iteration.\r\n      for (; ;) {\r\n        t = r;\r\n        r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n        if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n          // The exponent of r may here be one less than the final result exponent,\r\n          // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n          // are indexed correctly.\r\n          if (r.e < e) --s;\r\n          n = n.slice(s - 3, s + 1);\r\n\r\n          // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n          // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n          // iteration.\r\n          if (n == '9999' || !rep && n == '4999') {\r\n\r\n            // On the first iteration only, check to see if rounding up gives the\r\n            // exact result as the nines may infinitely repeat.\r\n            if (!rep) {\r\n              round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n              if (t.times(t).eq(x)) {\r\n                r = t;\r\n                break;\r\n              }\r\n            }\r\n\r\n            dp += 4;\r\n            s += 4;\r\n            rep = 1;\r\n          } else {\r\n\r\n            // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n            // result. If not, then there are further digits and m will be truthy.\r\n            if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n              // Truncate to the first rounding digit.\r\n              round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n              m = !r.times(r).eq(x);\r\n            }\r\n\r\n            break;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber in exponential notation and\r\n   * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n   */\r\n  P.toExponential = function (dp, rm) {\r\n    if (dp != null) {\r\n      intCheck(dp, 0, MAX);\r\n      dp++;\r\n    }\r\n    return format(this, dp, rm, 1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n   * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n   *\r\n   * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n   * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n   */\r\n  P.toFixed = function (dp, rm) {\r\n    if (dp != null) {\r\n      intCheck(dp, 0, MAX);\r\n      dp = dp + this.e + 1;\r\n    }\r\n    return format(this, dp, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n   * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n   * of the format or FORMAT object (see BigNumber.set).\r\n   *\r\n   * The formatting object may contain some or all of the properties shown below.\r\n   *\r\n   * FORMAT = {\r\n   *   prefix: '',\r\n   *   groupSize: 3,\r\n   *   secondaryGroupSize: 0,\r\n   *   groupSeparator: ',',\r\n   *   decimalSeparator: '.',\r\n   *   fractionGroupSize: 0,\r\n   *   fractionGroupSeparator: '\\xA0',      // non-breaking space\r\n   *   suffix: ''\r\n   * };\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   * [format] {object} Formatting options. See FORMAT pbject above.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n   * '[BigNumber Error] Argument not an object: {format}'\r\n   */\r\n  P.toFormat = function (dp, rm, format) {\r\n    var str,\r\n      x = this;\r\n\r\n    if (format == null) {\r\n      if (dp != null && rm && typeof rm == 'object') {\r\n        format = rm;\r\n        rm = null;\r\n      } else if (dp && typeof dp == 'object') {\r\n        format = dp;\r\n        dp = rm = null;\r\n      } else {\r\n        format = FORMAT;\r\n      }\r\n    } else if (typeof format != 'object') {\r\n      throw Error\r\n        (bignumberError + 'Argument not an object: ' + format);\r\n    }\r\n\r\n    str = x.toFixed(dp, rm);\r\n\r\n    if (x.c) {\r\n      var i,\r\n        arr = str.split('.'),\r\n        g1 = +format.groupSize,\r\n        g2 = +format.secondaryGroupSize,\r\n        groupSeparator = format.groupSeparator || '',\r\n        intPart = arr[0],\r\n        fractionPart = arr[1],\r\n        isNeg = x.s < 0,\r\n        intDigits = isNeg ? intPart.slice(1) : intPart,\r\n        len = intDigits.length;\r\n\r\n      if (g2) {\r\n        i = g1;\r\n        g1 = g2;\r\n        g2 = i;\r\n        len -= i;\r\n      }\r\n\r\n      if (g1 > 0 && len > 0) {\r\n        i = len % g1 || g1;\r\n        intPart = intDigits.substr(0, i);\r\n        for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n        if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n        if (isNeg) intPart = '-' + intPart;\r\n      }\r\n\r\n      str = fractionPart\r\n       ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n        ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n         '$&' + (format.fractionGroupSeparator || ''))\r\n        : fractionPart)\r\n       : intPart;\r\n    }\r\n\r\n    return (format.prefix || '') + str + (format.suffix || '');\r\n  };\r\n\r\n\r\n  /*\r\n   * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n   * fraction with an integer numerator and an integer denominator.\r\n   * The denominator will be a positive non-zero value less than or equal to the specified\r\n   * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n   * the lowest value necessary to represent the number exactly.\r\n   *\r\n   * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n   *\r\n   * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n   */\r\n  P.toFraction = function (md) {\r\n    var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n      x = this,\r\n      xc = x.c;\r\n\r\n    if (md != null) {\r\n      n = new BigNumber(md);\r\n\r\n      // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n      if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n        throw Error\r\n          (bignumberError + 'Argument ' +\r\n            (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n      }\r\n    }\r\n\r\n    if (!xc) return new BigNumber(x);\r\n\r\n    d = new BigNumber(ONE);\r\n    n1 = d0 = new BigNumber(ONE);\r\n    d1 = n0 = new BigNumber(ONE);\r\n    s = coeffToString(xc);\r\n\r\n    // Determine initial denominator.\r\n    // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n    e = d.e = s.length - x.e - 1;\r\n    d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n    md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n    exp = MAX_EXP;\r\n    MAX_EXP = 1 / 0;\r\n    n = new BigNumber(s);\r\n\r\n    // n0 = d1 = 0\r\n    n0.c[0] = 0;\r\n\r\n    for (; ;)  {\r\n      q = div(n, d, 0, 1);\r\n      d2 = d0.plus(q.times(d1));\r\n      if (d2.comparedTo(md) == 1) break;\r\n      d0 = d1;\r\n      d1 = d2;\r\n      n1 = n0.plus(q.times(d2 = n1));\r\n      n0 = d2;\r\n      d = n.minus(q.times(d2 = d));\r\n      n = d2;\r\n    }\r\n\r\n    d2 = div(md.minus(d0), d1, 0, 1);\r\n    n0 = n0.plus(d2.times(n1));\r\n    d0 = d0.plus(d2.times(d1));\r\n    n0.s = n1.s = x.s;\r\n    e = e * 2;\r\n\r\n    // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n    r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n        div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n    MAX_EXP = exp;\r\n\r\n    return r;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the value of this BigNumber converted to a number primitive.\r\n   */\r\n  P.toNumber = function () {\r\n    return +valueOf(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n   * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n   * necessary to represent the integer part of the value in fixed-point notation, then use\r\n   * exponential notation.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n   */\r\n  P.toPrecision = function (sd, rm) {\r\n    if (sd != null) intCheck(sd, 1, MAX);\r\n    return format(this, sd, rm, 2);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n   * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n   * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n   * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n   * TO_EXP_NEG, return exponential notation.\r\n   *\r\n   * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n   *\r\n   * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n   */\r\n  P.toString = function (b) {\r\n    var str,\r\n      n = this,\r\n      s = n.s,\r\n      e = n.e;\r\n\r\n    // Infinity or NaN?\r\n    if (e === null) {\r\n      if (s) {\r\n        str = 'Infinity';\r\n        if (s < 0) str = '-' + str;\r\n      } else {\r\n        str = 'NaN';\r\n      }\r\n    } else {\r\n      if (b == null) {\r\n        str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n         ? toExponential(coeffToString(n.c), e)\r\n         : toFixedPoint(coeffToString(n.c), e, '0');\r\n      } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n        n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n        str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n      } else {\r\n        intCheck(b, 2, ALPHABET.length, 'Base');\r\n        str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n      }\r\n\r\n      if (s < 0 && n.c[0]) str = '-' + str;\r\n    }\r\n\r\n    return str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return as toString, but do not accept a base argument, and include the minus sign for\r\n   * negative zero.\r\n   */\r\n  P.valueOf = P.toJSON = function () {\r\n    return valueOf(this);\r\n  };\r\n\r\n\r\n  P._isBigNumber = true;\r\n\r\n  P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n  // Node.js v10.12.0+\r\n  P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n  if (configObject != null) BigNumber.set(configObject);\r\n\r\n  return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n  var i = n | 0;\r\n  return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n  var s, z,\r\n    i = 1,\r\n    j = a.length,\r\n    r = a[0] + '';\r\n\r\n  for (; i < j;) {\r\n    s = a[i++] + '';\r\n    z = LOG_BASE - s.length;\r\n    for (; z--; s = '0' + s);\r\n    r += s;\r\n  }\r\n\r\n  // Determine trailing zeros.\r\n  for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n  return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n  var a, b,\r\n    xc = x.c,\r\n    yc = y.c,\r\n    i = x.s,\r\n    j = y.s,\r\n    k = x.e,\r\n    l = y.e;\r\n\r\n  // Either NaN?\r\n  if (!i || !j) return null;\r\n\r\n  a = xc && !xc[0];\r\n  b = yc && !yc[0];\r\n\r\n  // Either zero?\r\n  if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n  // Signs differ?\r\n  if (i != j) return i;\r\n\r\n  a = i < 0;\r\n  b = k == l;\r\n\r\n  // Either Infinity?\r\n  if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n  // Compare exponents.\r\n  if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n  j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n  // Compare digit by digit.\r\n  for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n  // Compare lengths.\r\n  return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n  if (n < min || n > max || n !== mathfloor(n)) {\r\n    throw Error\r\n     (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n       ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n       : ' not a primitive number: ') + String(n));\r\n  }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n  var k = n.c.length - 1;\r\n  return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n  return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n   (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n  var len, zs;\r\n\r\n  // Negative exponent?\r\n  if (e < 0) {\r\n\r\n    // Prepend zeros.\r\n    for (zs = z + '.'; ++e; zs += z);\r\n    str = zs + str;\r\n\r\n  // Positive exponent\r\n  } else {\r\n    len = str.length;\r\n\r\n    // Append zeros.\r\n    if (++e > len) {\r\n      for (zs = z, e -= len; --e; zs += z);\r\n      str += zs;\r\n    } else if (e < len) {\r\n      str = str.slice(0, e) + '.' + str.slice(e);\r\n    }\r\n  }\r\n\r\n  return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n", "import { BigNumber } from \"bignumber.js\";\nimport { RoundingMode } from \"../typing\";\n\nenum RoundingModeMap {\n  \"up\" = BigNumber.ROUND_UP,\n  \"down\" = BigNumber.ROUND_DOWN,\n  \"truncate\" = BigNumber.ROUND_DOWN,\n  \"halfUp\" = BigNumber.ROUND_HALF_UP,\n  \"default\" = BigNumber.ROUND_HALF_UP,\n  \"halfDown\" = BigNumber.ROUND_HALF_DOWN,\n  \"halfEven\" = BigNumber.ROUND_HALF_EVEN,\n  \"banker\" = BigNumber.ROUND_HALF_EVEN,\n  \"ceiling\" = BigNumber.ROUND_CEIL,\n  \"ceil\" = BigNumber.ROUND_CEIL,\n  \"floor\" = BigNumber.ROUND_FLOOR,\n}\n\n/**\n * @param {RoundingMode} roundMode BigNumber's rounding mode shortcut.\n *\n * @return {BigNumber.RoundingMode} The related BigNumber rounding mode.\n */\nexport function expandRoundMode(\n  roundMode: RoundingMode,\n): BigNumber.RoundingMode {\n  return (RoundingModeMap[roundMode] ??\n    RoundingModeMap.default) as BigNumber.RoundingMode;\n}\n", "import { BigNumber } from \"bignumber.js\";\nimport repeat from \"lodash/repeat\";\n\nimport { FormatNumberOptions, Numeric } from \"../typing\";\nimport { roundNumber } from \"./roundNumber\";\n\nfunction replaceInFormat(\n  format: string,\n  { formattedNumber, unit }: { formattedNumber: string; unit: string },\n): string {\n  return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\n\nfunction computeSignificand({\n  significand,\n  whole,\n  precision,\n}: {\n  significand: string;\n  whole: string;\n  precision: number | null;\n}) {\n  if (whole === \"0\" || precision === null) {\n    return significand;\n  }\n\n  const limit = Math.max(0, precision - whole.length);\n\n  return (significand ?? \"\").substr(0, limit);\n}\n\n/**\n * Formats a number.\n *\n * @param {Numeric} input The numeric value that will be formatted.\n *\n * @param {FormatNumberOptions} options The formatting options.\n *\n * @return {string}                      [description]\n */\nexport function formatNumber(\n  input: Numeric,\n  options: FormatNumberOptions,\n): string {\n  const originalNumber = new BigNumber(input);\n\n  if (options.raise && !originalNumber.isFinite()) {\n    throw new Error(`\"${input}\" is not a valid numeric value`);\n  }\n\n  const roundedNumber = roundNumber(originalNumber, options);\n  const numeric = new BigNumber(roundedNumber);\n  const isNegative = numeric.lt(0);\n  const isZero = numeric.isZero();\n  let [whole, significand] = roundedNumber.split(\".\");\n  const buffer: string[] = [];\n  let formattedNumber: string;\n  const positiveFormat = options.format ?? \"%n\";\n  const negativeFormat = options.negativeFormat ?? `-${positiveFormat}`;\n  const format = isNegative && !isZero ? negativeFormat : positiveFormat;\n\n  whole = whole.replace(\"-\", \"\");\n\n  while (whole.length > 0) {\n    buffer.unshift(whole.substr(Math.max(0, whole.length - 3), 3));\n    whole = whole.substr(0, whole.length - 3);\n  }\n\n  whole = buffer.join(\"\");\n  formattedNumber = buffer.join(options.delimiter);\n\n  if (options.significant) {\n    significand = computeSignificand({\n      whole,\n      significand,\n      precision: options.precision,\n    });\n  } else {\n    significand = significand ?? repeat(\"0\", options.precision ?? 0);\n  }\n\n  if (options.stripInsignificantZeros && significand) {\n    significand = significand.replace(/0+$/, \"\");\n  }\n\n  if (originalNumber.isNaN()) {\n    formattedNumber = input.toString();\n  }\n\n  if (significand && originalNumber.isFinite()) {\n    formattedNumber += (options.separator || \".\") + significand;\n  }\n\n  return replaceInFormat(format, {\n    formattedNumber,\n    unit: options.unit,\n  });\n}\n", "import { BigNumber } from \"bignumber.js\";\n\nimport { RoundingMode } from \"../typing\";\nimport { expandRoundMode } from \"./expandRoundMode\";\n\ntype RoundingOptions = {\n  roundMode: RoundingMode;\n  precision: number | null;\n  significant: boolean;\n};\n\nfunction digitCount(numeric: BigNumber): number {\n  if (numeric.isZero()) {\n    return 1;\n  }\n\n  return Math.floor(Math.log10(numeric.abs().toNumber()) + 1);\n}\n\nfunction getAbsolutePrecision(\n  numeric: BigNumber,\n  { precision, significant }: RoundingOptions,\n): number | null {\n  if (significant && precision !== null && precision > 0) {\n    return precision - digitCount(numeric);\n  }\n\n  return precision;\n}\n\n/**\n * Round a number.\n *\n * @private\n *\n * @param {BigNumber} numeric The number that will be rounded.\n *\n * @param {RoundingOptions} options The rounding options.\n *\n * @return {string} The rounded number.\n */\nexport function roundNumber(\n  numeric: BigNumber,\n  options: RoundingOptions,\n): string {\n  const precision = getAbsolutePrecision(numeric, options);\n\n  if (precision === null) {\n    return numeric.toString();\n  }\n\n  const roundMode = expandRoundMode(options.roundMode);\n\n  if (precision >= 0) {\n    return numeric.toFixed(precision, roundMode);\n  }\n\n  // Ruby's BigDecimal support negative precision calculation, but JS'\n  // BigNumber doesn't. This will ensure we'll match Ruby's behavior.\n  const rounder = 10 ** Math.abs(precision);\n\n  numeric = new BigNumber(numeric.div(rounder).toFixed(0, roundMode)).times(\n    rounder,\n  );\n\n  return numeric.toString();\n}\n", "import { Dict, Scope } from \"../typing\";\nimport { I18n } from \"../I18n\";\n\n/**\n * Get the full scope.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n * @param {Scope} scope The scope object.\n * @param {object} options  Options containing the base scope to be prepended.\n * @returns {string} The full scope joined by the default separator.\n */\nexport function getFullScope(i18n: I18n, scope: Scope, options: Dict): string {\n  let result = \"\";\n\n  // Deal with string scopes.\n  if (scope instanceof String || typeof scope === \"string\") {\n    result = scope as string;\n  }\n\n  // Deal with the scope as an array.\n  if (scope instanceof Array) {\n    result = (scope as string[]).join(i18n.defaultSeparator);\n  }\n\n  // Deal with the scope option provided through the second argument.\n  //\n  //    I18n.t('hello', {scope: 'greetings'});\n  //\n  if (options.scope) {\n    result = [options.scope, result].join(i18n.defaultSeparator);\n  }\n\n  return result;\n}\n", "/**\n * Return object type.\n *\n * @private\n *\n * @param {unknown} instance The object that will be inspected.\n *\n * @returns {string} The object's type.\n */\nexport function inferType(instance: unknown): string {\n  if (instance === null) {\n    return \"null\";\n  }\n\n  const type = typeof instance;\n\n  if (type !== \"object\") {\n    return type;\n  }\n\n  return (instance as any)?.constructor?.name?.toLowerCase() || \"object\";\n}\n", "import { TranslateOptions } from \"../typing\";\nimport { I18n } from \"../I18n\";\nimport { isSet } from \"./isSet\";\n\n/**\n * This function interpolates the all variables in the given message.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {string} message The string containing the placeholders.\n *\n * @param {object} options The source object that will be used as the\n * placeholders' source.\n *\n * @returns {string} The interpolated string.\n */\nexport function interpolate(\n  i18n: I18n,\n  message: string,\n  options: TranslateOptions,\n): string {\n  options = Object.keys(options).reduce((buffer, key) => {\n    buffer[i18n.transformKey(key)] = options[key];\n    return buffer;\n  }, {} as TranslateOptions);\n  const matches = message.match(i18n.placeholder);\n\n  if (!matches) {\n    return message;\n  }\n\n  while (matches.length) {\n    let value: string;\n    const placeholder = matches.shift() as string;\n    const name = placeholder.replace(i18n.placeholder, \"$1\");\n\n    if (isSet(options[name])) {\n      value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n    } else if (name in options) {\n      value = i18n.nullPlaceholder(i18n, placeholder, message, options);\n    } else {\n      value = i18n.missingPlaceholder(i18n, placeholder, message, options);\n    }\n\n    const regex = new RegExp(\n      placeholder.replace(/\\{/gm, \"\\\\{\").replace(/\\}/gm, \"\\\\}\"),\n      \"g\",\n    );\n\n    message = message.replace(regex, value);\n  }\n\n  return message.replace(/_#\\$#_/g, \"$\");\n}\n", "import { Dict, Scope } from \"../typing\";\nimport { I18n } from \"../I18n\";\nimport { isSet } from \"./isSet\";\nimport { getFullScope } from \"./getFullScope\";\nimport { inferType } from \"./inferType\";\n\n/**\n * Find and process the translation using the provided scope and options.\n * This is used internally by some functions and should not be used as a\n * public API.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {Dict|undefined} options The lookup options.\n *\n * @returns {any} The resolved translation.\n */\nexport function lookup(i18n: I18n, scope: Scope, options: Dict = {}): any {\n  options = { ...options };\n\n  const locale = \"locale\" in options ? options.locale : i18n.locale;\n  const localeType = inferType(locale);\n\n  const locales = i18n.locales\n    .get(localeType === \"string\" ? locale : typeof locale)\n    .slice();\n\n  const keys = getFullScope(i18n, scope, options)\n    .split(i18n.defaultSeparator)\n    .map((component) => i18n.transformKey(component));\n\n  const entries = locales.map((locale) =>\n    keys.reduce((path, key) => path && path[key], i18n.translations[locale]),\n  );\n\n  entries.push(options.defaultValue);\n\n  return entries.find((entry) => isSet(entry));\n}\n", "import { BigNumber } from \"bignumber.js\";\n\nimport { Numeric, NumberToDelimitedOptions } from \"../typing\";\n\n/**\n * Formats a number with grouped thousands using delimiter (e.g., 12,324).\n *\n * @private\n *\n * @param {Numeric} input The number that will be formatted.\n *\n * @param {NumberToDelimitedOptions} options The formatting options.\n *\n * @return {string} The formatted number.\n */\nexport function numberToDelimited(\n  input: Numeric,\n  options: NumberToDelimitedOptions,\n): string {\n  const numeric = new BigNumber(input);\n\n  if (!numeric.isFinite()) {\n    return input.toString();\n  }\n\n  if (!options.delimiterPattern.global) {\n    throw new Error(\n      `options.delimiterPattern must be a global regular expression; received ${options.delimiterPattern}`,\n    );\n  }\n\n  // eslint-disable-next-line prefer-const\n  let [left, right] = numeric.toString().split(\".\");\n\n  left = left.replace(\n    options.delimiterPattern,\n    (digitToDelimiter) => `${digitToDelimiter}${options.delimiter}`,\n  );\n\n  return [left, right].filter(Boolean).join(options.separator);\n}\n", "import { BigNumber } from \"bignumber.js\";\nimport sortBy from \"lodash/sortBy\";\nimport zipObject from \"lodash/zipObject\";\n\nimport { I18n } from \"../I18n\";\nimport { Numeric, NumberToHumanOptions, NumberToHumanUnits } from \"../typing\";\nimport { getFullScope } from \"./getFullScope\";\nimport { lookup } from \"./lookup\";\nimport { roundNumber } from \"./roundNumber\";\nimport { inferType } from \"./inferType\";\n\n/**\n * Set decimal units used to calculate number to human formatting.\n */\nconst DECIMAL_UNITS = {\n  \"0\": \"unit\",\n  \"1\": \"ten\",\n  \"2\": \"hundred\",\n  \"3\": \"thousand\",\n  \"6\": \"million\",\n  \"9\": \"billion\",\n  \"12\": \"trillion\",\n  \"15\": \"quadrillion\",\n  \"-1\": \"deci\",\n  \"-2\": \"centi\",\n  \"-3\": \"mili\",\n  \"-6\": \"micro\",\n  \"-9\": \"nano\",\n  \"-12\": \"pico\",\n  \"-15\": \"femto\",\n};\n\nconst INVERTED_DECIMAL_UNITS = zipObject(\n  Object.values(DECIMAL_UNITS),\n  Object.keys(DECIMAL_UNITS).map((key) => parseInt(key, 10)),\n);\n\n/**\n * Pretty prints (formats and approximates) a number in a way it is more\n * readable by humans.\n *\n * @private\n *\n * @param {I18n} i18n The `I18n` instance.\n *\n * @param {Numeric} input The numeric value that will be represented.\n *\n * @param {NumberToHumanOptions} options The formatting options.\n *\n * @return {string} The formatted number.\n */\nexport function numberToHuman(\n  i18n: I18n,\n  input: Numeric,\n  options: NumberToHumanOptions,\n): string {\n  const roundOptions = {\n    roundMode: options.roundMode,\n    precision: options.precision,\n    significant: options.significant,\n  };\n\n  let units: NumberToHumanUnits;\n\n  if (inferType(options.units) === \"string\") {\n    const scope = options.units as string;\n    units = lookup(i18n, scope);\n\n    if (!units) {\n      throw new Error(\n        `The scope \"${i18n.locale}${i18n.defaultSeparator}${getFullScope(\n          i18n,\n          scope,\n          {},\n        )}\" couldn't be found`,\n      );\n    }\n  } else {\n    units = options.units as NumberToHumanUnits;\n  }\n\n  let formattedNumber = roundNumber(new BigNumber(input), roundOptions);\n\n  const unitExponents = (units: NumberToHumanUnits) =>\n    sortBy(\n      Object.keys(units).map((name) => INVERTED_DECIMAL_UNITS[name]),\n      (numeric) => numeric * -1,\n    );\n\n  const calculateExponent = (num: BigNumber, units: NumberToHumanUnits) => {\n    const exponent = num.isZero()\n      ? 0\n      : Math.floor(Math.log10(num.abs().toNumber()));\n\n    return unitExponents(units).find((exp) => exponent >= exp) || 0;\n  };\n\n  const determineUnit = (units: NumberToHumanUnits, exponent: number) => {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    const expName = DECIMAL_UNITS[exponent.toString()];\n\n    return units[expName] || \"\";\n  };\n\n  const exponent = calculateExponent(new BigNumber(formattedNumber), units);\n  const unit = determineUnit(units, exponent);\n\n  formattedNumber = roundNumber(\n    new BigNumber(formattedNumber).div(10 ** exponent),\n    roundOptions,\n  );\n\n  if (options.stripInsignificantZeros) {\n    // eslint-disable-next-line prefer-const\n    let [whole, significand] = formattedNumber.split(\".\");\n    significand = (significand || \"\").replace(/0+$/, \"\");\n\n    formattedNumber = whole;\n\n    if (significand) {\n      formattedNumber += `${options.separator}${significand}`;\n    }\n  }\n\n  return options.format\n    .replace(\"%n\", formattedNumber || \"0\")\n    .replace(\"%u\", unit)\n    .trim();\n}\n", "import { BigNumber } from \"bignumber.js\";\n\nimport { I18n } from \"../I18n\";\nimport { Numeric, NumberToHumanSizeOptions } from \"../typing\";\nimport { roundNumber } from \"./roundNumber\";\nimport { expandRoundMode } from \"./expandRoundMode\";\n\n/**\n * Set default size units.\n */\nconst STORAGE_UNITS = [\"byte\", \"kb\", \"mb\", \"gb\", \"tb\", \"pb\", \"eb\"];\n\n/**\n * Formats the bytes in number into a more understandable representation.\n *\n * @param {I18n} i18n The `I18n` instance.\n *\n * @param {Numeric} input The number that will be represented.\n\n * @param {NumberToHumanSizeOptions} options The formatting options.\n\n * @return {string} The formatted number.\n */\nexport function numberToHumanSize(\n  i18n: I18n,\n  input: Numeric,\n  options: NumberToHumanSizeOptions,\n): string {\n  const roundMode = expandRoundMode(options.roundMode);\n  const base = 1024;\n  const num = new BigNumber(input).abs();\n  const smallerThanBase = num.lt(base);\n  let numberToBeFormatted;\n\n  const computeExponent = (numeric: BigNumber, units: string[]) => {\n    const max = units.length - 1;\n    const exp = new BigNumber(Math.log(numeric.toNumber()))\n      .div(Math.log(base))\n      .integerValue(BigNumber.ROUND_DOWN)\n      .toNumber();\n\n    return Math.min(max, exp);\n  };\n\n  const storageUnitKey = (units: string[]) => {\n    const keyEnd = smallerThanBase ? \"byte\" : units[exponent];\n    return `number.human.storage_units.units.${keyEnd}`;\n  };\n\n  const exponent = computeExponent(num, STORAGE_UNITS);\n\n  if (smallerThanBase) {\n    numberToBeFormatted = num.integerValue();\n  } else {\n    numberToBeFormatted = new BigNumber(\n      roundNumber(num.div(base ** exponent), {\n        significant: options.significant,\n        precision: options.precision,\n        roundMode: options.roundMode,\n      }),\n    );\n  }\n\n  const format = i18n.translate(\"number.human.storage_units.format\", {\n    defaultValue: \"%n %u\",\n  });\n\n  const unit = i18n.translate(storageUnitKey(STORAGE_UNITS), {\n    count: num.integerValue().toNumber(),\n  });\n\n  let formattedNumber = numberToBeFormatted.toFixed(\n    options.precision as number,\n    roundMode,\n  );\n\n  if (options.stripInsignificantZeros) {\n    formattedNumber = formattedNumber\n      .replace(/(\\..*?)0+$/, \"$1\")\n      .replace(/\\.$/, \"\");\n  }\n\n  return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\n", "import { DateTime } from \"../typing\";\n\n/**\n * Parse a given `input` string into a JavaScript Date object.\n * This function is time zone aware.\n *\n * The following string formats are recognized:\n *\n * ```\n * yyyy-mm-dd\n * yyyy-mm-dd[ T]hh:mm::ss\n * yyyy-mm-dd[ T]hh:mm::ss\n * yyyy-mm-dd[ T]hh:mm::ssZ\n * yyyy-mm-dd[ T]hh:mm::ss+0000\n * yyyy-mm-dd[ T]hh:mm::ss+00:00\n * yyyy-mm-dd[ T]hh:mm::ss.123Z\n * ```\n *\n * If any other pattern is provided, then it'll be parsed by `Date.parse`, which\n * may or may not bring the expected result.\n *\n * @private\n *\n * @example\n * ```js\n * parseDate(\"2019-12-09\");\n * ```\n *\n * @param {DateTime} input The date string or number timestamp that must be\n * parsed into a Date object. If a Date object is provided, then that's what\n * it'll be returned.\n *\n * @returns {Date} The parsed date.\n */\nexport function parseDate(input: DateTime): Date {\n  // we have a date, so just return it.\n  if (input instanceof Date) {\n    return input;\n  }\n\n  if (typeof input === \"number\") {\n    // UNIX timestamp\n    const date = new Date();\n    date.setTime(input as unknown as number);\n    return date;\n  }\n\n  const matches = new String(input).match(\n    /(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})(?:[.,](\\d{1,3}))?)?(Z|\\+00:?00)?/,\n  );\n\n  if (matches) {\n    const parts = matches.slice(1, 8).map((match) => parseInt(match, 10) || 0);\n\n    // month starts on 0\n    parts[1] -= 1;\n\n    const [year, month, day, hour, minute, second, milliseconds] = parts;\n    const timezone = matches[8];\n\n    if (timezone) {\n      return new Date(\n        Date.UTC(year, month, day, hour, minute, second, milliseconds),\n      );\n    } else {\n      return new Date(year, month, day, hour, minute, second, milliseconds);\n    }\n  }\n\n  if (\n    input.match(\n      /([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/,\n    )\n  ) {\n    // This format `Wed Jul 20 13:03:39 +0000 2011` is parsed by\n    // webkit/firefox, but not by IE, so we must parse it manually.\n    const date = new Date();\n    date.setTime(\n      Date.parse(\n        [RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5].join(\n          \" \",\n        ),\n      ),\n    );\n  }\n\n  // an arbitrary javascript string\n  const date = new Date();\n  date.setTime(Date.parse(input));\n\n  return date;\n}\n", "import { Scope, TranslateOptions } from \"../typing\";\nimport { I18n } from \"../I18n\";\n\nimport { isSet } from \"./isSet\";\nimport { lookup } from \"./lookup\";\n\n/**\n * Pluralize the given scope using the `count` value.\n * The pluralized translation may have other placeholders,\n * which will be retrieved from `options`.\n *\n * @private\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {number} count The counting number.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {object} options The translation options.\n *\n * @returns {string} The translated string.\n */\nexport function pluralize({\n  i18n,\n  count,\n  scope,\n  options,\n  baseScope,\n}: {\n  i18n: I18n;\n  count: number;\n  scope: Scope;\n  options: TranslateOptions;\n  baseScope: string;\n}): string {\n  options = { ...options };\n  let translations;\n  let message;\n\n  if (typeof scope === \"object\" && scope) {\n    translations = scope;\n  } else {\n    translations = lookup(i18n, scope, options);\n  }\n\n  if (!translations) {\n    return i18n.missingTranslation.get(scope, options);\n  }\n\n  const pluralizer = i18n.pluralization.get(options.locale);\n  const keys = pluralizer(i18n, count);\n  const missingKeys: typeof keys = [];\n\n  while (keys.length) {\n    const key = keys.shift() as string;\n\n    if (isSet(translations[key])) {\n      message = translations[key];\n      break;\n    }\n\n    missingKeys.push(key);\n  }\n\n  if (!isSet(message)) {\n    return i18n.missingTranslation.get(\n      baseScope.split(i18n.defaultSeparator).concat([missingKeys[0]]),\n      options,\n    );\n  }\n\n  options.count = count;\n\n  return i18n.interpolate(i18n, message, options);\n}\n", "import { StrftimeOptions } from \"../typing\";\n\nconst DEFAULT_OPTIONS: StrftimeOptions = {\n  meridian: { am: \"AM\", pm: \"PM\" },\n  dayNames: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n  abbrDayNames: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  monthNames: [\n    null,\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  abbrMonthNames: [\n    null,\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\n/**\n * Formats time according to the directives in the given format string.\n * The directives begins with a percent (`%`) character. Any text not listed\n * as a directive will be passed through to the output string.\n *\n * The accepted formats are:\n *\n * ```\n * %a  - The abbreviated weekday name (Sun)\n * %A  - The full weekday name (Sunday)\n * %b  - The abbreviated month name (Jan)\n * %B  - The full month name (January)\n * %c  - The preferred local date and time representation\n * %d  - Day of the month (01..31)\n * %-d - Day of the month (1..31)\n * %H  - Hour of the day, 24-hour clock (00..23)\n * %-H - Hour of the day, 24-hour clock (0..23)\n * %k  - Hour of the day, 24-hour clock (0..23)\n * %I  - Hour of the day, 12-hour clock (01..12)\n * %-I - Hour of the day, 12-hour clock (1..12)\n * %l  - Hour of the day, 12-hour clock (1..12)\n * %m  - Month of the year (01..12)\n * %-m - Month of the year (1..12)\n * %M  - Minute of the hour (00..59)\n * %-M - Minute of the hour (0..59)\n * %p  - Meridian indicator (AM  or  PM)\n * %P  - Meridian indicator (am  or  pm)\n * %S  - Second of the minute (00..60)\n * %-S - Second of the minute (0..60)\n * %w  - Day of the week (Sunday is 0, 0..6)\n * %y  - Year without a century (00..99)\n * %-y - Year without a century (0..99)\n * %Y  - Year with century\n * %z  - Timezone offset (+0545)\n * %Z  - Timezone offset (+0545)\n * ```\n *\n * @private\n *\n * @param {date} date  The date that must be formatted.\n *\n * @param {string} format The formatting string.\n *\n * @param {StrftimeOptions} options The options that will be used to generate a\n * formatted date string.\n *\n * @returns {string} The formatted date string.\n */\nexport function strftime(\n  date: Date,\n  format: string,\n  options: Partial<StrftimeOptions> = {},\n): string {\n  const {\n    abbrDayNames,\n    dayNames,\n    abbrMonthNames,\n    monthNames,\n    meridian: AM_PM,\n    utc,\n  } = { ...DEFAULT_OPTIONS, ...options };\n\n  if (isNaN(date.getTime())) {\n    throw new Error(\n      \"strftime() requires a valid date object, but received an invalid date.\",\n    );\n  }\n\n  const weekDay = utc ? date.getUTCDay() : date.getDay();\n  const day = utc ? date.getUTCDate() : date.getDate();\n  const year = utc ? date.getUTCFullYear() : date.getFullYear();\n  const month = (utc ? date.getUTCMonth() : date.getMonth()) + 1;\n  const hour = utc ? date.getUTCHours() : date.getHours();\n  let hour12 = hour;\n  const meridian = hour > 11 ? \"pm\" : \"am\";\n  const secs = utc ? date.getUTCSeconds() : date.getSeconds();\n  const mins = utc ? date.getUTCMinutes() : date.getMinutes();\n  const offset = utc ? 0 : date.getTimezoneOffset();\n  const absOffsetHours = Math.floor(Math.abs(offset / 60));\n  const absOffsetMinutes = Math.abs(offset) - absOffsetHours * 60;\n  const timezoneoffset =\n    (offset > 0 ? \"-\" : \"+\") +\n    (absOffsetHours.toString().length < 2\n      ? \"0\" + absOffsetHours\n      : absOffsetHours) +\n    (absOffsetMinutes.toString().length < 2\n      ? \"0\" + absOffsetMinutes\n      : absOffsetMinutes);\n\n  if (hour12 > 12) {\n    hour12 = hour12 - 12;\n  } else if (hour12 === 0) {\n    hour12 = 12;\n  }\n\n  format = format.replace(\"%a\", abbrDayNames[weekDay]);\n  format = format.replace(\"%A\", dayNames[weekDay]);\n  format = format.replace(\"%b\", abbrMonthNames[month] as string);\n  format = format.replace(\"%B\", monthNames[month] as string);\n  format = format.replace(\"%d\", day.toString().padStart(2, \"0\"));\n  format = format.replace(\"%e\", day.toString());\n  format = format.replace(\"%-d\", day.toString());\n  format = format.replace(\"%H\", hour.toString().padStart(2, \"0\"));\n  format = format.replace(\"%-H\", hour.toString());\n  format = format.replace(\"%k\", hour.toString());\n  format = format.replace(\"%I\", hour12.toString().padStart(2, \"0\"));\n  format = format.replace(\"%-I\", hour12.toString());\n  format = format.replace(\"%l\", hour12.toString());\n  format = format.replace(\"%m\", month.toString().padStart(2, \"0\"));\n  format = format.replace(\"%-m\", month.toString());\n  format = format.replace(\"%M\", mins.toString().padStart(2, \"0\"));\n  format = format.replace(\"%-M\", mins.toString());\n  format = format.replace(\"%p\", AM_PM[meridian]);\n  format = format.replace(\"%P\", AM_PM[meridian].toLowerCase());\n  format = format.replace(\"%S\", secs.toString().padStart(2, \"0\"));\n  format = format.replace(\"%-S\", secs.toString());\n  format = format.replace(\"%w\", weekDay.toString());\n  format = format.replace(\"%y\", year.toString().padStart(2, \"0\").substr(-2));\n  format = format.replace(\n    \"%-y\",\n    year.toString().padStart(2, \"0\").substr(-2).replace(/^0+/, \"\"),\n  );\n  format = format.replace(\"%Y\", year.toString());\n  format = format.replace(/%z/i, timezoneoffset);\n\n  return format;\n}\n", "import range from \"lodash/range\";\n\nimport { I18n } from \"../I18n\";\nimport { DateTime, TimeAgoInWordsOptions } from \"../typing\";\nimport { parseDate } from \"./parseDate\";\n\nconst within = (start: number, end: number, actual: number): boolean =>\n  actual >= start && actual <= end;\n\n/**\n * Reports the approximate distance in time between two dates.\n *\n * @private\n *\n * @param {I18n} i18n The `I18n` instance.\n *\n * @param {DateTime} fromTime The initial date.\n *\n * @param {DateTime} toTime The end date.\n\n * @param {TimeAgoInWordsOptions} options Options.\n\n * @return {string} The approximate distance between the dates.\n */\nexport function timeAgoInWords(\n  i18n: I18n,\n  fromTime: DateTime,\n  toTime: DateTime,\n  options: TimeAgoInWordsOptions = {},\n): string {\n  const scope = options.scope || \"datetime.distance_in_words\";\n  const t = (name: string, count = 0): string => i18n.t(name, { count, scope });\n\n  fromTime = parseDate(fromTime);\n  toTime = parseDate(toTime);\n\n  let fromInSeconds = fromTime.getTime() / 1000;\n  let toInSeconds = toTime.getTime() / 1000;\n\n  if (fromInSeconds > toInSeconds) {\n    [fromTime, toTime, fromInSeconds, toInSeconds] = [\n      toTime,\n      fromTime,\n      toInSeconds,\n      fromInSeconds,\n    ];\n  }\n\n  const distanceInSeconds = Math.round(toInSeconds - fromInSeconds);\n  const distanceInMinutes = Math.round((toInSeconds - fromInSeconds) / 60);\n  const distanceInHours = distanceInMinutes / 60;\n  const distanceInDays = distanceInHours / 24;\n\n  const distanceInHoursRounded = Math.round(distanceInMinutes / 60);\n  const distanceInDaysRounded = Math.round(distanceInDays);\n  const distanceInMonthsRounded = Math.round(distanceInDaysRounded / 30);\n\n  if (within(0, 1, distanceInMinutes)) {\n    if (!options.includeSeconds) {\n      return distanceInMinutes === 0\n        ? t(\"less_than_x_minutes\", 1)\n        : t(\"x_minutes\", distanceInMinutes);\n    }\n\n    if (within(0, 4, distanceInSeconds)) {\n      return t(\"less_than_x_seconds\", 5);\n    }\n\n    if (within(5, 9, distanceInSeconds)) {\n      return t(\"less_than_x_seconds\", 10);\n    }\n\n    if (within(10, 19, distanceInSeconds)) {\n      return t(\"less_than_x_seconds\", 20);\n    }\n\n    if (within(20, 39, distanceInSeconds)) {\n      return t(\"half_a_minute\");\n    }\n\n    if (within(40, 59, distanceInSeconds)) {\n      return t(\"less_than_x_minutes\", 1);\n    }\n\n    return t(\"x_minutes\", 1);\n  }\n\n  if (within(2, 44, distanceInMinutes)) {\n    return t(\"x_minutes\", distanceInMinutes);\n  }\n\n  if (within(45, 89, distanceInMinutes)) {\n    return t(\"about_x_hours\", 1);\n  }\n\n  if (within(90, 1439, distanceInMinutes)) {\n    return t(\"about_x_hours\", distanceInHoursRounded);\n  }\n\n  if (within(1440, 2519, distanceInMinutes)) {\n    return t(\"x_days\", 1);\n  }\n\n  if (within(2520, 43_199, distanceInMinutes)) {\n    return t(\"x_days\", distanceInDaysRounded);\n  }\n\n  if (within(43_200, 86_399, distanceInMinutes)) {\n    return t(\"about_x_months\", Math.round(distanceInMinutes / 43200));\n  }\n\n  if (within(86_400, 525_599, distanceInMinutes)) {\n    return t(\"x_months\", distanceInMonthsRounded);\n  }\n\n  let fromYear = fromTime.getFullYear();\n\n  if (fromTime.getMonth() + 1 >= 3) {\n    fromYear += 1;\n  }\n\n  let toYear = toTime.getFullYear();\n\n  if (toTime.getMonth() + 1 < 3) {\n    toYear -= 1;\n  }\n\n  const leapYears =\n    fromYear > toYear\n      ? 0\n      : range(fromYear, toYear).filter(\n          (year) => new Date(year, 1, 29).getMonth() == 1,\n        ).length;\n\n  const minutesInYear = 525_600;\n  const minuteOffsetForLeapYear = leapYears * 1440;\n  const minutesWithOffset = distanceInMinutes - minuteOffsetForLeapYear;\n  const distanceInYears = Math.trunc(minutesWithOffset / minutesInYear);\n\n  const diff = parseFloat(\n    (minutesWithOffset / minutesInYear - distanceInYears).toPrecision(3),\n  );\n\n  if (diff < 0.25) {\n    return t(\"about_x_years\", distanceInYears);\n  }\n\n  if (diff < 0.75) {\n    return t(\"over_x_years\", distanceInYears);\n  }\n\n  return t(\"almost_x_years\", distanceInYears + 1);\n}\n", "import { Dict, MissingTranslationStrategy, Scope } from \"./typing\";\nimport { getFullScope, inferType } from \"./helpers\";\nimport { I18n } from \"./I18n\";\n\n/**\n * Generate a human readable version of the scope as the missing translation.\n * To use it, you have to set `i18n.missingBehavior` to `\"guess\"`.\n *\n * @type {MissingTranslationStrategy}\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {Scope} scope The translation scope.\n *\n * @returns {string} The missing translation string.\n */\nexport const guessStrategy: MissingTranslationStrategy = function (\n  i18n,\n  scope,\n) {\n  if (scope instanceof Array) {\n    scope = scope.join(i18n.defaultSeparator);\n  }\n\n  // Get only the last portion of the scope.\n  const message = scope.split(i18n.defaultSeparator).slice(-1)[0];\n\n  // Replace underscore with space and camelcase with space and\n  // lowercase letter.\n  return (\n    i18n.missingTranslationPrefix +\n    message\n      .replace(\"_\", \" \")\n      .replace(\n        /([a-z])([A-Z])/g,\n        (_match: string, p1: string, p2: string) => `${p1} ${p2.toLowerCase()}`,\n      )\n  );\n};\n\n/**\n * Generate the missing translation message, which includes the full scope.\n * To use it, you have to set `i18n.missingBehavior` to `\"message\"`.\n * This is the default behavior.\n *\n * @type {MissingTranslationStrategy}\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {Dict} options The translations' options.\n *\n * @returns {string} The missing translation string.\n */\nexport const messageStrategy: MissingTranslationStrategy = (\n  i18n,\n  scope,\n  options,\n) => {\n  const fullScope = getFullScope(i18n, scope, options);\n  const locale = \"locale\" in options ? options.locale : i18n.locale;\n  const localeType = inferType(locale);\n\n  const fullScopeWithLocale = [\n    localeType == \"string\" ? locale : localeType,\n    fullScope,\n  ].join(i18n.defaultSeparator);\n\n  return `[missing \"${fullScopeWithLocale}\" translation]`;\n};\n\n/**\n * Throw an error whenever a translation cannot be found. The message will\n * includes the full scope.\n * To use it, you have to set `i18n.missingBehavior` to `\"error\"`.\n *\n * @type {MissingTranslationStrategy}\n *\n * @param {I18n} i18n The I18n instance.\n *\n * @param {Scope} scope The translation scope.\n *\n * @param {Dict} options The translations' options.\n *\n * @returns {void}\n */\nexport const errorStrategy: MissingTranslationStrategy = (\n  i18n,\n  scope,\n  options,\n) => {\n  const fullScope = getFullScope(i18n, scope, options);\n  const fullScopeWithLocale = [i18n.locale, fullScope].join(\n    i18n.defaultSeparator,\n  );\n\n  throw new Error(`Missing translation: ${fullScopeWithLocale}`);\n};\n\nexport class MissingTranslation {\n  private i18n: I18n;\n  private registry: Dict;\n\n  constructor(i18n: I18n) {\n    this.i18n = i18n;\n    this.registry = {};\n\n    this.register(\"guess\", guessStrategy);\n    this.register(\"message\", messageStrategy);\n    this.register(\"error\", errorStrategy);\n  }\n\n  /**\n   * Registers a new missing translation strategy. This is how messages are\n   * defined when a translation cannot be found.\n   *\n   * The follow example registers a strategy that always return the phrase\n   * \"Oops! Missing translation.\".\n   *\n   * @example\n   * ```js\n   * i18n.missingTranslation.register(\n   *   \"oops\",\n   *   (i18n, scope, options) => \"Oops! Missing translation.\"\n   * );\n   *\n   * i18n.missingBehavior = \"oops\";\n   * ```\n   *\n   * @param {string} name The strategy name.\n   *\n   * @param {MissingTranslationStrategy} strategy A function that returns a\n   * string the result of a missing translation scope.\n   *\n   * @returns {void}\n   */\n  public register(name: string, strategy: MissingTranslationStrategy): void {\n    this.registry[name] = strategy;\n  }\n\n  /**\n   * Return a missing translation message for the given parameters.\n   *\n   * @param {Scope} scope The translations' scope.\n   *\n   * @param {Dict} options The translations' options.\n   *\n   * @returns {string} The missing translation.\n   */\n  public get(scope: Scope, options: Dict): string {\n    return this.registry[options.missingBehavior ?? this.i18n.missingBehavior](\n      this.i18n,\n      scope,\n      options,\n    );\n  }\n}\n", "{\n  \"de\": {\n    \"date\": {\n      \"abbr_day_names\": [\n        \"So\",\n        \"Mo\",\n        \"Di\",\n        \"Mi\",\n        \"Do\",\n        \"Fr\",\n        \"Sa\"\n      ],\n      \"abbr_month_names\": [\n        null,\n        \"Jan\",\n        \"Feb\",\n        \"M\u00E4r\",\n        \"Apr\",\n        \"Mai\",\n        \"Jun\",\n        \"Jul\",\n        \"Aug\",\n        \"Sep\",\n        \"Okt\",\n        \"Nov\",\n        \"Dez\"\n      ],\n      \"day_names\": [\n        \"Sonntag\",\n        \"Montag\",\n        \"Dienstag\",\n        \"Mittwoch\",\n        \"Donnerstag\",\n        \"Freitag\",\n        \"Samstag\"\n      ],\n      \"formats\": {\n        \"default\": \"%d.%m.%Y\",\n        \"long\": \"%e. %B %Y\",\n        \"short\": \"%e. %b\"\n      },\n      \"month_names\": [\n        null,\n        \"Januar\",\n        \"Februar\",\n        \"M\u00E4rz\",\n        \"April\",\n        \"Mai\",\n        \"Juni\",\n        \"Juli\",\n        \"August\",\n        \"September\",\n        \"Oktober\",\n        \"November\",\n        \"Dezember\"\n      ],\n      \"order\": [\n        \"day\",\n        \"month\",\n        \"year\"\n      ]\n    },\n    \"dict\": {\n      \"action\": \"Aktion\",\n      \"active\": \"aktiv\",\n      \"adapt\": \"anpassen\",\n      \"address\": \"Adresse\",\n      \"agreements\": \"Vereinbarungen\",\n      \"all\": \"Alle\",\n      \"answer\": {\n        \"one\": \"Antwort\",\n        \"other\": \"Antworten\"\n      },\n      \"appointment\": {\n        \"one\": \"Termin\",\n        \"other\": \"Termine\"\n      },\n      \"available_elements\": \"Verf\u00FCgbare Elemente\",\n      \"back\": \"zur\u00FCck\",\n      \"blog_entries\": \"Lern-Module\",\n      \"can_reset\": \"Zur\u00FCcksetzbar\",\n      \"cancel\": \"abbrechen\",\n      \"certificate\": {\n        \"one\": \"Zertifikat\",\n        \"other\": \"Zertifikate\"\n      },\n      \"change\": \"\u00C4ndern\",\n      \"clear_filters\": \"Filter zur\u00FCcksetzen\",\n      \"clone\": \"Kopieren\",\n      \"close\": \"Schlie\u00DFen\",\n      \"color\": \"Farbe\",\n      \"company\": {\n        \"one\": \"Firma\",\n        \"other\": \"Firmen\"\n      },\n      \"confirm\": \"best\u00E4tigen\",\n      \"contact_people\": \"Kontaktpersonen\",\n      \"container\": {\n        \"one\": \"Container\",\n        \"other\": \"Container\"\n      },\n      \"continue\": \"weiter\",\n      \"copy\": \"Kopie\",\n      \"correct\": \"korrekt\",\n      \"create\": \"Anlegen\",\n      \"current\": \"Aktuell\",\n      \"day\": \"Tag\",\n      \"de\": \"Deutsch\",\n      \"delete\": \"L\u00F6schen\",\n      \"delete_selected\": \"Ausgew\u00E4hltes l\u00F6schen\",\n      \"description\": \"Beschreibung\",\n      \"development_path\": \"Entwicklungs-Pfad\",\n      \"direct_unit\": {\n        \"one\": \"direkte Unit\",\n        \"other\": \"direkte Units\"\n      },\n      \"edit\": \"Bearbeiten\",\n      \"email\": \"E-Mail\",\n      \"empty\": \"keine Eintr\u00E4ge vorhanden\",\n      \"en\": \"Englisch\",\n      \"es\": \"Spanisch\",\n      \"event\": {\n        \"one\": \"Veranstaltung\",\n        \"other\": \"Veranstaltungen\"\n      },\n      \"folder\": {\n        \"one\": \"Ordner\",\n        \"other\": \"Ordner\"\n      },\n      \"font_family\": \"Schriftart\",\n      \"font_size\": \"Schriftgr\u00F6\u00DFe\",\n      \"font_weight\": \"Schriftst\u00E4rke\",\n      \"font_weight_options\": {\n        \"bold\": \"Fett\",\n        \"bolder\": \"Dicker\",\n        \"lighter\": \"D\u00FCnner\",\n        \"normal\": \"Normal\"\n      },\n      \"fr\": \"Franz\u00F6sisch\",\n      \"full_name\": \"Name\",\n      \"group\": {\n        \"one\": \"Gruppe\",\n        \"other\": \"Gruppen\"\n      },\n      \"gtc\": \"Allgemeine Gesch\u00E4ftsbedingungen\",\n      \"hero_slider_elements\": \"Banner\",\n      \"hide\": \"Verbergen\",\n      \"hour\": \"Stunden\",\n      \"hu\": \"Ungarisch\",\n      \"in_timezone\": \"Zeitzone %{timezone}\",\n      \"in_use\": \"in Verwendung\",\n      \"inactive\": \"inaktiv\",\n      \"index\": \"Reihenfolge\",\n      \"interaction_needed\": \"Aktion erforderlich\",\n      \"invoice\": \"Rechnung\",\n      \"issued_on\": \"ausgestellt am\",\n      \"issuer\": \"Aussteller\",\n      \"ja\": \"Japanisch\",\n      \"journey\": {\n        \"one\": \"Journey\",\n        \"other\": \"Journeys\"\n      },\n      \"journey_container\": {\n        \"one\": \"Container\",\n        \"other\": \"Container\"\n      },\n      \"landscape_image\": \"Querformat-Bild\",\n      \"language\": {\n        \"one\": \"Sprache\",\n        \"other\": \"Sprachen\"\n      },\n      \"learn_card\": {\n        \"index\": \"Lernkarte Nr. %{index}\"\n      },\n      \"learn_path\": \"Unit\",\n      \"learn_paths\": \"Units\",\n      \"learn_unit\": {\n        \"one\": \"Lerneinheit\",\n        \"other\": \"Lerneinheiten\"\n      },\n      \"learnpath\": {\n        \"one\": \"Unit\",\n        \"other\": \"Units\"\n      },\n      \"locations\": \"Lokationen\",\n      \"mandatory_field\": \"Pflichtfeld\",\n      \"manual_adapted\": \"Manuell angepasst\",\n      \"messages\": {\n        \"confirm_remove_journey_from_container\": \"Sind Sie sicher, dass Sie diesen Unit aus dem Container entfernen m\u00F6chten?\",\n        \"container_created_successfully\": \"Container wurde erfolgreich erstellt.\",\n        \"container_delete_failed\": \"Container konnte nicht gel\u00F6scht werden.\",\n        \"container_deleted_successfully\": \"Container wurde erfolgreich gel\u00F6scht.\",\n        \"container_updated_successfully\": \"Container wurde erfolgreich aktualisiert.\",\n        \"drop_here_to_remove_journey\": \"Hier ablegen, um Unit zu entfernen\",\n        \"journey_add_failed\": \"Fehler beim Hinzuf\u00FCgen der Unit\",\n        \"journey_added_successfully\": \"Unit erfolgreich hinzugef\u00FCgt\",\n        \"journey_added_to_container_successfully\": \"Unit wurde erfolgreich zum Container hinzugef\u00FCgt.\",\n        \"journey_assignment_failed\": \"Unit konnte nicht zugewiesen werden.\",\n        \"journey_publish_failed\": \"Fehler beim Ver\u00F6ffentlichen der Unit\",\n        \"journey_published_successfully\": \"Unit erfolgreich ver\u00F6ffentlicht\",\n        \"journey_remove_failed\": \"Fehler beim Entfernen der Unit\",\n        \"journey_removed_from_container_successfully\": \"Unit wurde erfolgreich aus dem Container entfernt.\",\n        \"journey_removed_successfully\": \"Unit erfolgreich entfernt\",\n        \"journey_reorder_failed\": \"Unit-Reihenfolge konnte nicht ge\u00E4ndert werden\",\n        \"journey_reordered_successfully\": \"Unit-Reihenfolge erfolgreich ge\u00E4ndert\",\n        \"no_available_journeys\": \"Keine verf\u00FCgbaren Units\",\n        \"no_further_learn_units_on_modules\": \"Es k\u00F6nnen keine weiteren Lerneinheiten hinzugef\u00FCgt werden, wenn die Phase ein Modul enth\u00E4lt.\",\n        \"no_module_on_non_empty_phases\": \"Es k\u00F6nnen keine Module hinzugef\u00FCgt werden, wenn die Phase nicht leer ist.\",\n        \"publish\": \"Ver\u00F6ffentlichen\",\n        \"read\": \"gelesen\",\n        \"show_after_publish\": \"Ansehen nach Ver\u00F6ffentlichung\",\n        \"unread\": \"ungelesen\"\n      },\n      \"minute\": \"Minute\",\n      \"module\": {\n        \"one\": \"Modul\",\n        \"other\": \"Module\"\n      },\n      \"month\": \"Monat\",\n      \"name\": {\n        \"one\": \"Name\",\n        \"other\": \"Namen\"\n      },\n      \"nano_certificate\": \"Nano-Zertifikat\",\n      \"nano_certificates\": \"Nano-Zertifikate\",\n      \"no_action\": \"Keine Aktion\",\n      \"no_content\": \"keine Inhalte vorhanden\",\n      \"no_data\": \"keine Daten vorhanden\",\n      \"no_template\": \"Kein Template\",\n      \"no_term\": \"Nein\",\n      \"open\": \"\u00D6ffnen\",\n      \"order\": \"Reihenfolge\",\n      \"orientation\": {\n        \"one\": \"Ausrichtung\",\n        \"other\": \"Ausrichtungen\"\n      },\n      \"outdated\": \"Veraltet\",\n      \"parent\": \"Elter\",\n      \"participants\": \"Teilnehmer\",\n      \"pdf_certificate_template\": {\n        \"one\": \"PDF-Zertifikat-Vorlage\",\n        \"other\": \"PDF-Zertifikat-Vorlagen\"\n      },\n      \"permission\": {\n        \"one\": \"Berechtigung\",\n        \"other\": \"Berechtigungen\"\n      },\n      \"phase\": {\n        \"one\": \"Lernphase\",\n        \"other\": \"Lernphasen\"\n      },\n      \"phone_number\": \"Telefonnummer\",\n      \"point\": {\n        \"one\": \"Punkt\",\n        \"other\": \"Punkte\"\n      },\n      \"portrait_image\": \"Hochformat-Bild\",\n      \"primary\": \"Prim\u00E4r\",\n      \"private\": \"Privat\",\n      \"product\": \"Produkt\",\n      \"products\": \"Produkte\",\n      \"profile\": {\n        \"one\": \"Profil\",\n        \"other\": \"Profile\"\n      },\n      \"project_experience\": \"Projekterfahrung\",\n      \"question\": {\n        \"one\": \"Frage\",\n        \"other\": \"Fragen\"\n      },\n      \"reminders\": \"Erinnerungen\",\n      \"remove\": \"Entfernen\",\n      \"reset\": \"zur\u00FCcksetzen\",\n      \"reset_to_default\": \"Auf Standard zur\u00FCcksetzen\",\n      \"restart\": \"neu starten\",\n      \"result\": {\n        \"one\": \"Ergebnis\",\n        \"other\": \"Ergebnisse\"\n      },\n      \"salutations\": {\n        \"company\": \"Firma\",\n        \"madame\": \"Frau\",\n        \"sir\": \"Herr\"\n      },\n      \"save\": \"Speichern\",\n      \"scope_tag\": {\n        \"one\": \"Bereichs-Tag\",\n        \"other\": \"Bereichs-Tags\"\n      },\n      \"search\": \"Suche\",\n      \"search_profile\": \"Such-Profil\",\n      \"second\": \"Sekunde\",\n      \"secondary\": \"Sekund\u00E4r\",\n      \"send\": \"abschicken\",\n      \"settings\": \"Einstellungen\",\n      \"show\": \"Anzeigen\",\n      \"shown_from_short\": \"ab\",\n      \"shown_until_short\": \"bis\",\n      \"silent\": \"deaktiviert\",\n      \"skill\": {\n        \"one\": \"Skill\",\n        \"other\": \"Skills\"\n      },\n      \"skill_category\": {\n        \"one\": \"Skill-Kategorie\",\n        \"other\": \"Skill-Kategorien\"\n      },\n      \"skill_rating\": {\n        \"one\": \"Skill-Bewertung\",\n        \"other\": \"Skill-Bewertungen\"\n      },\n      \"slide\": {\n        \"index\": \"Slide Nr. %{index}\"\n      },\n      \"start\": \"Start\",\n      \"statistics\": \"Statistiken\",\n      \"stop\": \"stoppen\",\n      \"style_properties\": \"Stil-Eigenschaften\",\n      \"supervised_people\": \"Zugeordnete Personen\",\n      \"supervised_person\": \"Zugeordnete Person\",\n      \"tag\": {\n        \"one\": \"Tag\",\n        \"other\": \"Tags\"\n      },\n      \"take\": \"\u00FCbernehmen\",\n      \"template_new\": \"Vorlage anlegen\",\n      \"template_version\": \"Template-Version\",\n      \"tenant\": {\n        \"one\": \"Mandant\",\n        \"other\": \"Mandanten\"\n      },\n      \"tenant_scope\": {\n        \"one\": \"Mandanten-Scope\",\n        \"other\": \"Mandanten-Scopes\"\n      },\n      \"text_align\": \"Text-Ausrichtung\",\n      \"text_align_options\": {\n        \"center\": \"Zentriert\",\n        \"justify\": \"Blocksatz\",\n        \"left\": \"Links\",\n        \"right\": \"Rechts\"\n      },\n      \"themes\": \"Units\",\n      \"translations\": \"\u00DCbersetzungen\",\n      \"unit\": {\n        \"one\": \"Unit\",\n        \"other\": \"Units\"\n      },\n      \"users\": \"Benutzer\",\n      \"valid_until\": \"g\u00FCltig bis\",\n      \"vat\": \"USt.-ID\",\n      \"vertical_align\": \"Vertikale Ausrichtung\",\n      \"vertical_align_options\": {\n        \"bottom\": \"Unten\",\n        \"middle\": \"Mitte\",\n        \"top\": \"Oben\"\n      },\n      \"view_all\": \"Alle sehen\",\n      \"week\": \"Woche\",\n      \"withdrawal\": \"R\u00FCcktritt\",\n      \"year\": \"Jahr\",\n      \"yes_term\": \"Ja\"\n    },\n    \"javascript\": {\n      \"format\": {\n        \"both\": \"DD.MM.YYYY HH:mm\",\n        \"date\": \"DD.MM.YYYY\",\n        \"time\": \"HH:mm\"\n      }\n    },\n    \"shared\": {\n      \"certificate_fixed_texts\": {\n        \"achievement\": \"Auszeichnung\",\n        \"certificate\": \"Zertifikat\",\n        \"completion_certificate\": \"Abschlusszertifikat\",\n        \"diploma\": \"Diplom\",\n        \"recognition\": \"Anerkennung\"\n      },\n      \"choose_category\": \"Kategorie w\u00E4hlen...\",\n      \"choose_subcategory\": \"Sub-Kategorie w\u00E4hlen...\",\n      \"confirm_batch_delete\": {\n        \"plural\": \"M\u00F6chten Sie wirklich %{count} Elemente entfernen?\",\n        \"singular\": \"M\u00F6chten Sie wirklich 1 Element entfernen?\"\n      },\n      \"delete_group_definitions_confirm\": \"Du bist dabei, die Gruppen-Definition zu l\u00F6schen. Bist du sicher, dass du das tun m\u00F6chtest?\",\n      \"done\": \"erledigt\",\n      \"email\": \"E-Mail\",\n      \"fixed_text_content\": \"Text Inhalt\",\n      \"fixed_text_properties\": \"Festtext Eigenschaften\",\n      \"i18n_key\": \"I18n Schl\u00FCssel\",\n      \"i18n_properties\": \"I18n Eigenschaften\",\n      \"media_library_modal\": {\n        \"delete_all_description\": \"Du bist dabei alle Datein zu l\u00F6schen, die derzeit nirgends zugeordnet sind. Bist du dir sicher, dass du das tun m\u00F6chtest?\",\n        \"delete_description\": \"Du bist dabei die Media Datei zu l\u00F6schen. Bist du dir sicher, dass du das tun m\u00F6chtest?\"\n      },\n      \"pdf_certificate_elements\": {\n        \"certificate_text\": \"Zertifikat Text\",\n        \"certificate_title\": \"Zertifikat Titel\",\n        \"creation_date\": \"Ausstellungsdatum\",\n        \"creation_date_text\": \"Ausstellungsdatum-Text\",\n        \"fixed_text\": \"Festtext\",\n        \"i18n_text\": \"I18n Text\",\n        \"issuer_name\": \"Aussteller\",\n        \"issuer_text\": \"Aussteller-Text\",\n        \"journey_name\": \"Unit Name\",\n        \"phase_certificates_summary\": \"Geb\u00FCndelte Zertifikate\",\n        \"phase_certificates_summary_label\": \"Enthaltene Zertifikate\",\n        \"recipient_name\": \"Empf\u00E4nger Name\",\n        \"tenant_logo\": \"Logo\",\n        \"valid_until\": \"G\u00FCltig bis\",\n        \"valid_until_text\": \"G\u00FCltig-Text\",\n        \"verification_qr\": \"Verifikations-QR-Code\",\n        \"verification_qr_hint\": \"Online verifizieren\",\n        \"verification_url\": \"Verifikations-ID\"\n      },\n      \"reusable_element_tooltip\": \"Wiederverwendbares Element - kann mehrfach hinzugef\u00FCgt werden\",\n      \"show_divider\": \"Trennlinie anzeigen\",\n      \"single_use_element_tooltip\": \"Einmaliges Element - kann nur einmal verwendet werden\",\n      \"verification_url_properties\": \"Verifikations-ID Eigenschaften\",\n      \"verification_url_show_label\": \"Label anzeigen\",\n      \"version_correction\": {\n        \"confirm_button\": \"Die bestehende Version wird vor der Korrektur als eigener Unit (Namenszusatz 'Recreated') gespeichert. Nach der Korrektur muss dann eine neue Version publiziert werden.\",\n        \"title\": \"Korrektur der Versions-Struktur\"\n      },\n      \"week\": \"Woche\"\n    }\n  }\n}", "{\n  \"en\": {\n    \"date\": {\n      \"abbr_day_names\": [\n        \"Sun\",\n        \"Mon\",\n        \"Tue\",\n        \"Wed\",\n        \"Thu\",\n        \"Fri\",\n        \"Sat\"\n      ],\n      \"abbr_month_names\": [\n        null,\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      \"day_names\": [\n        \"Sunday\",\n        \"Monday\",\n        \"Tuesday\",\n        \"Wednesday\",\n        \"Thursday\",\n        \"Friday\",\n        \"Saturday\"\n      ],\n      \"formats\": {\n        \"default\": \"%Y-%m-%d\",\n        \"long\": \"%B %d, %Y\",\n        \"short\": \"%b %d\"\n      },\n      \"month_names\": [\n        null,\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      \"order\": [\n        \"year\",\n        \"month\",\n        \"day\"\n      ]\n    },\n    \"dict\": {\n      \"action\": \"Action\",\n      \"active\": \"active\",\n      \"adapt\": \"adapt\",\n      \"address\": \"address\",\n      \"agreements\": \"Agreements\",\n      \"all\": \"all\",\n      \"answer\": {\n        \"one\": \"answer\",\n        \"other\": \"answers\"\n      },\n      \"appointment\": {\n        \"one\": \"appointment\",\n        \"other\": \"appointments\"\n      },\n      \"available_elements\": \"Available Elements\",\n      \"back\": \"back\",\n      \"blog_entries\": \"learn modules\",\n      \"can_reset\": \"Resettable\",\n      \"cancel\": \"cancel\",\n      \"certificate\": {\n        \"one\": \"certificate\",\n        \"other\": \"certificates\"\n      },\n      \"change\": \"Change\",\n      \"clear_filters\": \"Clear Filters\",\n      \"clone\": \"Clone\",\n      \"close\": \"Close\",\n      \"color\": \"Color\",\n      \"company\": {\n        \"one\": \"Company\",\n        \"other\": \"Companies\"\n      },\n      \"confirm\": \"confirm\",\n      \"contact_people\": \"contact people\",\n      \"container\": {\n        \"one\": \"Container\",\n        \"other\": \"Containers\"\n      },\n      \"continue\": \"continue\",\n      \"copy\": \"Copy\",\n      \"correct\": \"correct\",\n      \"create\": \"Create\",\n      \"current\": \"current\",\n      \"day\": \"day\",\n      \"de\": \"German\",\n      \"delete\": \"delete\",\n      \"delete_selected\": \"delete selected\",\n      \"description\": \"Description\",\n      \"development_path\": \"Development Path\",\n      \"direct_unit\": {\n        \"one\": \"direct unit\",\n        \"other\": \"direct units\"\n      },\n      \"edit\": \"Edit\",\n      \"email\": \"email\",\n      \"empty\": \"No entries present\",\n      \"en\": \"English\",\n      \"es\": \"Spanish\",\n      \"event\": {\n        \"one\": \"event\",\n        \"other\": \"events\"\n      },\n      \"folder\": {\n        \"one\": \"Folder\",\n        \"other\": \"Folders\"\n      },\n      \"font_family\": \"Font Family\",\n      \"font_size\": \"Font Size\",\n      \"font_weight\": \"Font Weight\",\n      \"font_weight_options\": {\n        \"bold\": \"Bold\",\n        \"bolder\": \"Bolder\",\n        \"lighter\": \"Lighter\",\n        \"normal\": \"Normal\"\n      },\n      \"fr\": \"French\",\n      \"full_name\": \"name\",\n      \"group\": {\n        \"one\": \"Group\",\n        \"other\": \"Groups\"\n      },\n      \"gtc\": \"General terms and conditions\",\n      \"hero_slider_elements\": \"banner\",\n      \"hide\": \"Hide\",\n      \"hour\": \"hour\",\n      \"hu\": \"Hungarian\",\n      \"in_timezone\": \"Timezone %{timezone}\",\n      \"in_use\": \"in use\",\n      \"inactive\": \"inactive\",\n      \"index\": \"index\",\n      \"interaction_needed\": \"action needed\",\n      \"invoice\": \"invoice\",\n      \"issued_on\": \"issued on\",\n      \"issuer\": \"Issuer\",\n      \"ja\": \"Japanese\",\n      \"journey\": {\n        \"one\": \"Journey\",\n        \"other\": \"Journeys\"\n      },\n      \"journey_container\": {\n        \"one\": \"Container\",\n        \"other\": \"Containers\"\n      },\n      \"landscape_image\": \"Landscape Image\",\n      \"language\": {\n        \"one\": \"Language\",\n        \"other\": \"Languages\"\n      },\n      \"learn_card\": {\n        \"index\": \"Learn Card No. %{index}\"\n      },\n      \"learn_path\": \"unit\",\n      \"learn_paths\": \"units\",\n      \"learn_unit\": {\n        \"one\": \"Learning Unit\",\n        \"other\": \"Learning Units\"\n      },\n      \"learnpath\": {\n        \"one\": \"Unit\",\n        \"other\": \"Units\"\n      },\n      \"locations\": \"locations\",\n      \"mandatory_field\": \"Mandatory field\",\n      \"manual_adapted\": \"Manually Adapted\",\n      \"messages\": {\n        \"confirm_remove_journey_from_container\": \"Are you sure you want to remove this unit from the container?\",\n        \"container_created_successfully\": \"Container was created successfully.\",\n        \"container_delete_failed\": \"Container could not be deleted.\",\n        \"container_deleted_successfully\": \"Container was deleted successfully.\",\n        \"container_updated_successfully\": \"Container was updated successfully.\",\n        \"drop_here_to_remove_journey\": \"Drop here to remove unit\",\n        \"journey_add_failed\": \"Failed to add unit\",\n        \"journey_added_successfully\": \"Unit added successfully\",\n        \"journey_added_to_container_successfully\": \"Unit was successfully added to container.\",\n        \"journey_assignment_failed\": \"Unit could not be assigned.\",\n        \"journey_publish_failed\": \"Failed to publish unit\",\n        \"journey_published_successfully\": \"Unit published successfully\",\n        \"journey_remove_failed\": \"Failed to remove unit\",\n        \"journey_removed_from_container_successfully\": \"Unit was successfully removed from container.\",\n        \"journey_removed_successfully\": \"Unit removed successfully\",\n        \"journey_reorder_failed\": \"Unit order could not be changed\",\n        \"journey_reordered_successfully\": \"Unit order changed successfully\",\n        \"no_available_journeys\": \"No available units\",\n        \"no_further_learn_units_on_modules\": \"No further learning units can be added if the phase contains a module.\",\n        \"no_module_on_non_empty_phases\": \"No modules can be added if the phase is not empty.\",\n        \"publish\": \"Publish\",\n        \"read\": \"read\",\n        \"show_after_publish\": \"Show after publish\",\n        \"unread\": \"unread\"\n      },\n      \"minute\": \"minute\",\n      \"module\": {\n        \"one\": \"Module\",\n        \"other\": \"Modules\"\n      },\n      \"month\": \"month\",\n      \"name\": {\n        \"one\": \"name\",\n        \"other\": \"names\"\n      },\n      \"nano_certificate\": \"nano certificate\",\n      \"nano_certificates\": \"nano certificates\",\n      \"no_action\": \"No Action\",\n      \"no_content\": \"no content present\",\n      \"no_data\": \"no data available\",\n      \"no_template\": \"No Template\",\n      \"no_term\": false,\n      \"open\": \"Open\",\n      \"order\": \"order\",\n      \"orientation\": {\n        \"one\": \"Orientation\",\n        \"other\": \"Orientations\"\n      },\n      \"outdated\": \"Outdated\",\n      \"parent\": \"parent\",\n      \"participants\": \"participants\",\n      \"pdf_certificate_template\": {\n        \"one\": \"PDF Certificate Template\",\n        \"other\": \"PDF Certificate Templates\"\n      },\n      \"permission\": {\n        \"one\": \"permission\",\n        \"other\": \"permissions\"\n      },\n      \"phase\": {\n        \"one\": \"Learning Phase\",\n        \"other\": \"Learning Phases\"\n      },\n      \"phone_number\": \"phone number\",\n      \"point\": {\n        \"one\": \"point\",\n        \"other\": \"points\"\n      },\n      \"portrait_image\": \"Portrait Image\",\n      \"primary\": \"Primary\",\n      \"private\": \"Private\",\n      \"product\": \"product\",\n      \"products\": \"products\",\n      \"profile\": {\n        \"one\": \"profile\",\n        \"other\": \"profiles\"\n      },\n      \"project_experience\": \"Project Experience\",\n      \"question\": {\n        \"one\": \"question\",\n        \"other\": \"questions\"\n      },\n      \"reminders\": \"Reminders\",\n      \"remove\": \"Remove\",\n      \"reset\": \"reset\",\n      \"reset_to_default\": \"Reset to Default\",\n      \"restart\": \"restart\",\n      \"result\": {\n        \"one\": \"result\",\n        \"other\": \"results\"\n      },\n      \"salutations\": {\n        \"company\": \"Company\",\n        \"madame\": \"Misses\",\n        \"sir\": \"Mister\"\n      },\n      \"save\": \"Save\",\n      \"scope_tag\": {\n        \"one\": \"scope tag\",\n        \"other\": \"scope tags\"\n      },\n      \"search\": \"Search\",\n      \"search_profile\": \"search profile\",\n      \"second\": \"second\",\n      \"secondary\": \"Secondary\",\n      \"send\": \"send\",\n      \"settings\": \"Settings\",\n      \"show\": \"Show\",\n      \"shown_from_short\": \"from\",\n      \"shown_until_short\": \"until\",\n      \"silent\": \"deactivated\",\n      \"skill\": {\n        \"one\": \"skill\",\n        \"other\": \"skills\"\n      },\n      \"skill_category\": {\n        \"one\": \"skill category\",\n        \"other\": \"skill categories\"\n      },\n      \"skill_rating\": {\n        \"one\": \"skill rating\",\n        \"other\": \"skill ratings\"\n      },\n      \"slide\": {\n        \"index\": \"Slide No. %{index}\"\n      },\n      \"start\": \"Start\",\n      \"statistics\": \"statistics\",\n      \"stop\": \"stop\",\n      \"style_properties\": \"Style Properties\",\n      \"supervised_people\": \"supervised people\",\n      \"supervised_person\": \"supervised person\",\n      \"tag\": {\n        \"one\": \"Tag\",\n        \"other\": \"Tags\"\n      },\n      \"take\": \"take\",\n      \"template_new\": \"Create Template\",\n      \"template_version\": \"Template-Version\",\n      \"tenant\": {\n        \"one\": \"Tenant\",\n        \"other\": \"tenants\"\n      },\n      \"tenant_scope\": {\n        \"one\": \"tenant scope\",\n        \"other\": \"tenant scopes\"\n      },\n      \"text_align\": \"Text Alignment\",\n      \"text_align_options\": {\n        \"center\": \"Center\",\n        \"justify\": \"Justify\",\n        \"left\": \"Left\",\n        \"right\": \"Right\"\n      },\n      \"themes\": \"units\",\n      \"translations\": \"translations\",\n      \"unit\": {\n        \"one\": \"Unit\",\n        \"other\": \"Units\"\n      },\n      \"users\": \"users\",\n      \"valid_until\": \"valid until\",\n      \"vat\": \"VAT\",\n      \"vertical_align\": \"Vertical Alignment\",\n      \"vertical_align_options\": {\n        \"bottom\": \"Bottom\",\n        \"middle\": \"Middle\",\n        \"top\": \"Top\"\n      },\n      \"view_all\": \"view all\",\n      \"week\": \"week\",\n      \"withdrawal\": \"Withdrawal\",\n      \"year\": \"year\",\n      \"yes_term\": true\n    },\n    \"javascript\": {\n      \"format\": {\n        \"both\": \"DD. MMM YYYY HH:mm\",\n        \"date\": \"DD. MMM YYYY\",\n        \"time\": \"HH:mm\"\n      }\n    },\n    \"shared\": {\n      \"certificate_fixed_texts\": {\n        \"achievement\": \"Achievement\",\n        \"certificate\": \"Certificate\",\n        \"completion_certificate\": \"Certificate of Completion\",\n        \"diploma\": \"Diploma\",\n        \"recognition\": \"Recognition\"\n      },\n      \"choose_category\": \"Choose category...\",\n      \"choose_subcategory\": \"Choose sub-category...\",\n      \"confirm_batch_delete\": {\n        \"plural\": \"Are you sure you want to remove %{count} elements?\",\n        \"singular\": \"Are you sure you want to remove 1 element?\"\n      },\n      \"delete_group_definitions_confirm\": \"You are about to delete the group definition. Are you sure you want to do this?\",\n      \"done\": \"done\",\n      \"email\": \"Email\",\n      \"fixed_text_content\": \"Text Content\",\n      \"fixed_text_properties\": \"Fixed Text Properties\",\n      \"i18n_key\": \"I18n Key\",\n      \"i18n_properties\": \"I18n Properties\",\n      \"media_library_modal\": {\n        \"delete_all_description\": \"You are about to delete all files that are not currently assigned anywhere. Are you sure you want to do this?\",\n        \"delete_description\": \"You are about to delete the media file. Are you sure you want to do this?\"\n      },\n      \"pdf_certificate_elements\": {\n        \"certificate_text\": \"Certificate Text\",\n        \"certificate_title\": \"Certificate Title\",\n        \"creation_date\": \"Creation Date\",\n        \"creation_date_text\": \"Creation Date Text\",\n        \"fixed_text\": \"Fixed Text\",\n        \"i18n_text\": \"I18n Text\",\n        \"issuer_name\": \"Issuer\",\n        \"issuer_text\": \"Issuer Text\",\n        \"phase_certificates_summary\": \"Bundled certificates\",\n        \"phase_certificates_summary_label\": \"Included certificates\",\n        \"recipient_name\": \"Recipient Name\",\n        \"tenant_logo\": \"Logo\",\n        \"valid_until\": \"Valid Until\",\n        \"valid_until_text\": \"Valid Until Text\",\n        \"verification_qr\": \"Verification QR code\",\n        \"verification_qr_hint\": \"Verify online\",\n        \"verification_url\": \"Verification ID\"\n      },\n      \"reusable_element_tooltip\": \"Reusable element - can be added multiple times\",\n      \"show_divider\": \"Show divider line\",\n      \"single_use_element_tooltip\": \"Single-use element - can only be used once\",\n      \"verification_url_properties\": \"Verification ID Properties\",\n      \"verification_url_show_label\": \"Show label\",\n      \"version_correction\": {\n        \"confirm_button\": \"The existing version is saved as a separate learning path (name suffix 'Recreated') before the correction. A new version must then be published after the correction.\",\n        \"title\": \"correction of the version structure\"\n      },\n      \"week\": \"Week\"\n    }\n  }\n}", "import { I18n } from \"i18n-js\"\n\nimport de from \"../js_locales/de.json\"\nimport en from \"../js_locales/en.json\"\n\nconst i18n = new I18n()\nwindow.I18n = i18n;\nwindow.I18nLocales = {\n  de: de,\n  en: en\n}", "class ClassEventsES6 {\n  constructor() {\n    this.listeners = new Map();\n    this.onceListeners = new Map();\n    this.triggerdLabels = new Map();\n  }\n\n  // help-function for onReady and onceReady\n  // the callbackfunction will execute,\n  // if the label has already been triggerd with the last called parameters\n  _fCheckPast(label, callback) {\n    if (this.triggerdLabels.has(label)) {\n      callback(this.triggerdLabels.get(label));\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  // execute the callback everytime the label is trigger\n  on(label, callback, checkPast = false) {\n    this.listeners.has(label) || this.listeners.set(label, []);\n    this.listeners.get(label).push(callback);\n    if (checkPast)\n      this._fCheckPast(label, callback);\n  }\n\n  // execute the callback everytime the label is trigger\n  // check if the label had been already called\n  // and if so excute the callback immediately\n  onReady(label, callback) {\n    this.on(label, callback, true);\n  }\n\n  // execute the callback onetime the label is trigger\n  once(label, callback, checkPast = false) {\n    this.onceListeners.has(label) || this.onceListeners.set(label, []);\n    if (!(checkPast && this._fCheckPast(label, callback))) {\n      // label wurde nocht nicht aufgerufen und\n      // der callback in _fCheckPast nicht ausgef\u00FChrt\n      this.onceListeners.get(label).push(callback);\n    }\n  }\n  // execute the callback onetime the label is trigger\n  // or execute the callback if the label had been called already\n  onceReady(label, callback) {\n    this.once(label, callback, true);\n  }\n\n  // remove the callback for a label\n  off(label, callback = true) {\n    if (callback === true) {\n      // remove listeners for all callbackfunctions\n      this.listeners.delete(label);\n      this.onceListeners.delete(label);\n    } else {\n      // remove listeners only with match callbackfunctions\n      let _off = (inListener) => {\n        let listeners = inListener.get(label);\n        if (listeners) {\n          inListener.set(label, listeners.filter((value) => !(value === callback)));\n        }\n      };\n      _off(this.listeners);\n      _off(this.onceListeners);\n    }\n  }\n\n  // trigger the event with the label\n  trigger(label, ...args) {\n    let res = false;\n    this.triggerdLabels.set(label, ...args); // save all triggerd labels for onready and onceready\n    let _trigger = (inListener, label, ...args) => {\n      let listeners = inListener.get(label);\n      if (listeners && listeners.length) {\n        listeners.forEach((listener) => {\n          listener(...args);\n        });\n        res = true;\n      }\n    };\n    _trigger(this.onceListeners, label, ...args);\n    _trigger(this.listeners, label, ...args);\n    this.onceListeners.delete(label); // callback for once executed, so delete it.\n    return res;\n  }\n}\n\nexport default class VideoPlayer extends ClassEventsES6 {\n\n  static async init({init_youtube= true, init_vimeo= true} = {}) {\n    // let firstScriptTag = document.getElementsByTagName('script')[0];\n\n    // if(init_youtube) {\n    //   let tag = document.createElement('script');\n    //   tag.src = 'https://www.youtube.com/iframe_api';\n    //   firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n    // }\n\n    // if(init_vimeo) {\n    //   let tag = document.createElement('script');\n    //   tag.src = 'https://player.vimeo.com/api/player.js';\n    //   firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n    // }\n  }\n\n  constructor({id, url, type} = {}) {\n    super();\n    this.id = id;\n    this.url = url;\n    this.type = type;\n  }\n\n  isVimeo() {\n    return /vimeo/.test(this.url);\n  }\n\n  createPlayer() {\n    let self = this;\n    if(this.type == \"vimeo\") {\n      console.log(\"generating Vimeo Video\");\n      this.player = new Vimeo.Player(this.id, {\n        url: this.url,\n        responsive: true,\n      });\n      this.player.on('ended', function() {\n        self.trigger('ended');\n      })\n    } else {\n      console.log(\"generating Youtube Video\");\n      this.player = new YT.Player(this.id, { events: { 'onReady': (event) => { self.onVideoReady(event, self) }, 'onStateChange': (event) => { self.playerStateChange(event, self) } } })\n      // this.player = new YT.Player(this.id, { videoId: cutYoutubeId(self.url), playerVars: {autoplay: 0, showinfo: 0, controls: 2, start: 0}, events: { 'onReady': (event) => { self.onVideoReady(event, self) }, 'onStateChange': (event) => { self.playerStateChange(event, self) } } })\n    }\n  }\n\n  stopVideo() {\n    if(this.type == \"vimeo\") {\n      this.player.pause();\n    } else {\n      this.player.pauseVideo();\n    }\n  }\n\n  startVideo() {\n    if(this.type == \"vimeo\") {\n      this.player.play();\n    } else {\n      this.player.playVideo();\n    }\n  }\n\n  onVideoReady(event, self) {\n    let player = event.target;\n    let youtubeId = cutYoutubeId(self.url);\n    player.loadVideoById(youtubeId);\n    console.log(\"video ready event: \", event)\n    const video_id = player.getIframe().id.replace('video_player_', '');\n\n    const myEvent = new CustomEvent(\"YTVideo.ready\", {\n      detail: {video_id: video_id, player: player},\n      bubbles: true,\n      cancelable: true,\n      composed: false,\n    });\n    // console.log(\"myEvent: \", myEvent)\n    document.dispatchEvent(myEvent);\n    // window.onAcademyPlayerReady(event)\n  }\n\n  playerStateChange(event, self) {\n    let state = event.data\n    // console.log(\"state changed to: \", state)\n    switch(state) {\n      case YT.PlayerState.ENDED:\n        self.trigger('ended');\n        break;\n    }\n  }\n}\nfunction cutYoutubeId(url) {\n  let regex = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/;\n  let match = url.match(regex);\n  return match[1];\n}", "import VideoPlayer from '../packs/video_player.js'\n\nwindow.VideoPlayer = VideoPlayer\nVideoPlayer.init()", "import Trix from \"trix\"\nimport Rails from \"@rails/ujs\"\n\nTrix.config.blockAttributes.heading2 = {\n  tagName: 'h2',\n  terminal: true,\n  breakOnReturn: true,\n  group: false\n}\n\nTrix.config.blockAttributes.heading3 = {\n  tagName: 'h3',\n  terminal: true,\n  breakOnReturn: true,\n  group: false\n}\n\nTrix.config.blockAttributes.custom_trix_flex = {\n  tagName: 'custom_trix_flex',\n  parse: false,\n};\n\nTrix.config.blockAttributes.custom_trix_element = {\n  tagName: 'custom_trix_element',\n  listAttribute: 'custom_trix_flex',\n  group: false,\n  nestable: true,\n  parser: function (element) {\n      return Trix.tagName(element.parentNode) === Trix.config.blockAttributes[this.listAttribute].tagName\n  }\n};\n\nTrix.config.blockAttributes.custom_media_library_element = {\n  tagName: 'custom_media_library_element',\n  parse: false,\n  group: false,\n};\n\n// Farbe als benutzerdefiniertes Attribut registrieren\nif (!Trix.config.textAttributes.color) {\n  Trix.config.textAttributes.color = {\n    styleProperty: \"color\", // CSS-Eigenschaft, die gesetzt wird\n    inheritable: true\n  };\n}\n\n// Schriftgr\u00F6\u00DFe als benutzerdefiniertes Attribut registrieren\nif (!Trix.config.textAttributes.fontSize) {\n  Trix.config.textAttributes.fontSize = {\n    styleProperty: \"font-size\", // CSS-Eigenschaft, die gesetzt wird\n    inheritable: true\n  };\n}\n\ndocument.addEventListener(\"trix-initialize\", event => {\n  const { toolbarElement } = event.target\n  // console.log('trix-initialize event')\n  // console.log('toolbarElement: ', toolbarElement)\n  const h1Button = $(\"[data-trix-attribute=heading1]\", toolbarElement)\n  h1Button.removeClass(\"trix-button--icon trix-button--icon-heading-1\")\n  h1Button.text(\"H1\")\n  h1Button[0].insertAdjacentHTML(\"afterend\", `\n    <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"heading2\" title=\"Heading 2\" tabindex=\"-1\" data-trix-active=\"\">H2</button>\n    <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"heading3\" title=\"Heading 3\" tabindex=\"-1\" data-trix-active=\"\">H3</button>\n  `)\n  const trixDialogs = $(\".trix-dialogs .trix-dialog--link\", toolbarElement);\n  // console.log(`trix Dialogs `, trixDialogs);\n  trixDialogs[0].insertAdjacentHTML(\"beforeend\", \n        '<div data-behavior=\"embed_container\">\\\n          <div class=\"link_to_embed link_to_embed--new\">\\\n            Would you like to embed media from this site?\\\n            <input class=\"btn btn-tertiary outline btn-small ms-3\" type=\"button\" data-behavior=\"embed_url\" value=\"Yes, embed it\">\\\n          </div>\\\n        </div>\\\n  ')\n  var ec = new EmbedController(event.target)\n  const cc = new ColumnController(event)\n  // console.log('initialize Trix with: ', ec)\n  const tac = new TextAttributesController(event)\n\n})\n\n/***\n * behandelt alle Textattribute-Erweiterungen des Trix-Editors\n ***/\nclass TextAttributesController {\n\n  constructor(trixInitializeEvent) {\n    this.trixEditorElement = trixInitializeEvent.target;\n    this.trixEditor = this.trixEditorElement.editor;\n    // console.log('trixEditor: ', this.trixEditor)\n    this.trixToolbar = this.trixEditorElement.toolbarElement;\n    // console.log('trixToolbar: ', this.trixToolbar)\n    this.createButtons();\n    this.establishEventHandlers();\n  }\n\n  createButtons() {\n    const textButtonGroup = $(\".trix-button-group--text-tools\", this.trixToolbar);\n    const fontSizes = [10, 12, 14, 16, 20, 22, 24, 30, 44];\n    const fontSizeOptions = fontSizes.map(size => `<option value=\"${size}px\" ${size === 12 ? 'selected' : ''}>${size} px</option>`).join('');\n\n    textButtonGroup[0].insertAdjacentHTML(\"beforeend\", \n      `<button type=\"button\" data-action=\"toggle-color-picker\" class=\"color-button trix-button\">\uD83C\uDFA8<input type=\"color\" class=\"color-picker\"></button>\\\n      <select class=\"font-size-picker trix-button\">\\\n        ${fontSizeOptions}\\\n      </select>`\n    );\n  }\n\n  establishEventHandlers() {\n    // Verwenden Sie bind, um den Kontext von 'this' zu binden\n    document.addEventListener(\"trix-selection-change\", this.handleSelectionChange.bind(this));\n    this.trixToolbar.addEventListener(\"input\", this.handleInput.bind(this));\n  }\n  \n  handleSelectionChange(event) {\n    let dropdown = this.trixToolbar.querySelector(\".font-size-picker\");\n\n    if (this.trixEditor && dropdown) {\n      let selection = window.getSelection();\n      if (selection.rangeCount > 0) {\n        let range = selection.getRangeAt(0);\n        let selectedNode = range.startContainer.parentElement; // Holt das umschlie\u00DFende Element\n        \n        let computedFontSize = window.getComputedStyle(selectedNode).fontSize; // Extrahiert die Schriftgr\u00F6\u00DFe\n        dropdown.value = computedFontSize || \"12\"; // Setzt den Wert im Dropdown\n      }\n    }\n  }\n  \n  handleInput(event) {\n    let target = event.target;\n\n    // Farb-Picker\n    if (target.matches(\".color-picker\")) {\n      if (this.trixEditor) {\n        this.trixEditor.activateAttribute(\"color\", target.value); // Neue Farbe setzen\n      }\n    }\n\n    // Schriftgr\u00F6\u00DFe-Dropdown\n    if (target.matches(\".font-size-picker\")) {\n      if (this.trixEditor) {\n        this.trixEditor.activateAttribute(\"fontSize\", target.value); // Neue Schriftgr\u00F6\u00DFe setzen\n      }\n    }\n  }\n\n}\n\n/*\n * Column Controller\n  *   This controller is responsible for handling the column dialog and fetching the column code\n*/\nclass ColumnController {\n  constructor(trixInitializeEvent) {\n    this.trixEditor = trixInitializeEvent.target;\n    this.createButtons();\n  }\n  \n  createButtons() {\n    this.getTrixContainer().find('.trix-button-group.trix-button-group--file-tools').append(this.generateTagButton('custom_trix_element', `<svg width=\"14\" height=\"14\"><use xlink:href=\"#trix_table_icon\"></use></svg>`));\n    this.getTrixContainer().find('.trix-button-group.trix-button-group--file-tools').append(this.generateActionButton('trix_media_library_element', `<svg width=\"14\" height=\"14\"><use xlink:href=\"#trix_media_library_element\"></use></svg>`, 'form--trix-editor#openMediaLibrary', 'trix-media-library-button visually-hidden'));\n  }\n\n  generateTagButton(name, content){\n      return `<button type=\"button\" class=\"trix-button\" data-trix-attribute=\"${name}\" data-trix-key=\"${name}\" tabindex=\"-1\">${content}</button>`;\n  }\n\n  generateActionButton(name, content, action, extra_class = ''){\n    const classes = `trix-button ${extra_class}`;\n      return `<button type=\"button\" class=\"${classes}\" data-action=\"${action}\" tabindex=\"-1\">${content}</button>`;\n      // return `<button type=\"button\" class=\"trix-button\" data-trix-attribute=\"${name}\" data-action=\"${action}\" data-trix-key=\"${name}\" tabindex=\"-1\">${content}</button>`;\n  }\n\n  getEditor() {\n    return this.trixEditor.editor;\n  }\n\n  getTrixElement() {\n    return $(this.trixEditor);\n  }\n\n  getTrixContainer() {\n    return this.getTrixElement().parent();\n  }\n\n}\n\n/*\n  * Custom Embed Controller\n  * \n  * This controller is responsible for handling the embed dialog and fetching the embed code\n  */\nclass EmbedController {\n  constructor(element) {\n    this.pattern = /^https:\\/\\/([^\\.]+\\.)?youtube\\.com\\/watch\\?v=(.*)/\n\n    this.element = element\n    this.editor = element.editor\n    this.toolbar = element.toolbarElement\n    this.hrefElement = this.toolbar.querySelector(\"[data-trix-input][name='href']\")\n    this.embedContainerElement = this.toolbar.querySelector(\"[data-behavior='embed_container']\")\n    this.embedElement = this.toolbar.querySelector(\"[data-behavior='embed_url']\")\n\n    this.reset()\n    this.installEventHandlers()\n  }\n\n  installEventHandlers() {\n    this.hrefElement.addEventListener(\"input\", this.didInput.bind(this))\n    this.hrefElement.addEventListener(\"focusin\", this.didInput.bind(this))\n    this.embedElement.addEventListener(\"click\", this.embed.bind(this))\n  }\n\n  didInput(event) {\n    let value = event.target.value.trim()\n    let matches = value.match(this.pattern)\n    // console.log(value,matches)\n\n    // When patterns are loaded, we can just fetch the embed code\n    if (matches != null) {\n      this.fetch(matches[2])\n\n    // No embed code, just reset the form\n    } else {\n      this.reset()\n    }\n  }\n\n  fetch(value) {\n    $.ajax({\n      url: `/trix_videos/${encodeURIComponent(value)}`,\n      type: 'get',\n      error: this.reset.bind(this),\n      success: this.showEmbed.bind(this)\n    })\n  }\n\n  embed(event) {\n    if (this.currentEmbed == null) { return }\n\n    let attachment = new Trix.Attachment(this.currentEmbed)\n    this.editor.insertAttachment(attachment)\n    this.element.focus()\n  }\n\n  showEmbed(embed) {\n    this.currentEmbed = embed\n    this.embedContainerElement.style.display = \"block\"\n  }\n\n  reset() {\n    this.embedContainerElement.style.display = \"none\"\n    this.currentEmbed = null\n  }\n}\n", "require(\"trix\")\nrequire(\"@rails/actiontext\")\nimport \"../packs/trix.js\"", "window.dispatchMapsEvent = function(...args) {\n  const event = document.createEvent(\"Events\")\n  event.initEvent(\"google-maps-callback\", true, true)\n  event.args = args\n  window.dispatchEvent(event)\n}\n\nwindow.mapsHelper = {\n  defaultConfiguration: {\n    center: { lat: 51.165693, lng: 10.451528 },\n    zoom: 5\n  },\n  updateMapWithPlace: (mapApi, place, marker) => {\n    if(place.geometry.viewport) {\n      mapApi.fitBounds(place.geometry.viewport)\n    }\n    else {\n      mapApi.setZoom(11)\n    }\n    mapApi.setCenter(place.geometry.location)\n\n    if(marker) {\n      marker.setPlace({ placeId: place.place_id, location: place.geometry.location })\n      marker.setVisible(true)\n    }\n  }\n}", "import $ from 'jquery'\nimport select2 from \"select2\"\n\nselect2($)", "window.formInitializationRoutines = [];\n\nwindow.addFormInitializationRoutine = function(routine) {\n  formInitializationRoutines.push(routine);\n  return routine(document.body);\n};\n\nwindow.reinitializeForms = function(context) {\n  var i, len, results, routine;\n  console.log(\"form is reinitialized\");\n  i = void 0;\n  len = void 0;\n  routine = void 0;\n  i = 0;\n  len = formInitializationRoutines.length;\n  results = [];\n  while (i < len) {\n    routine = formInitializationRoutines[i];\n    routine(context);\n    results.push(i++);\n  }\n  return results;\n};\n\n\n/*\n * Google Maps\n */\n\nwindow.mapsHelper = {\n  initialized: false,\n  initializationRoutines: [],\n  defaultConfiguration: {\n    center: {\n      lat: 51.165693,\n      lng: 10.451528\n    },\n    zoom: 5\n  },\n  addInitializationRoutine: function(routine) {\n    this.initializationRoutines.push(routine);\n    if (this.initialized) {\n      return $(function() {\n        return routine(document.body);\n      });\n    }\n  },\n  updateMapWithPlace: function(mapApi, place, marker) {\n    if (place.geometry.viewport) {\n      mapApi.fitBounds(place.geometry.viewport);\n    } else {\n      mapApi.setZoom(11);\n    }\n    mapApi.setCenter(place.geometry.location);\n    if (marker) {\n      marker.setPlace({\n        placeId: place.place_id,\n        location: place.geometry.location\n      });\n      return marker.setVisible(true);\n    }\n  }\n};\n\nwindow.initializeGoogleMaps = function() {\n  mapsHelper.initialized = true;\n  return $(function() {\n    var j, len1, ref, results, routine;\n    ref = mapsHelper.initializationRoutines;\n    results = [];\n    for (j = 0, len1 = ref.length; j < len1; j++) {\n      routine = ref[j];\n      results.push(routine(document.body));\n    }\n    return results;\n  });\n};\n\naddFormInitializationRoutine(function(context) {\n  if (mapsHelper.initialized) {\n    return $(function() {\n      var j, len1, ref, results, routine;\n      ref = mapsHelper.initializationRoutines;\n      results = [];\n      for (j = 0, len1 = ref.length; j < len1; j++) {\n        routine = ref[j];\n        results.push(routine(context));\n      }\n      return results;\n    });\n  }\n});", "import './calendar'\nimport './form_initialization'\nimport './general'\nimport './product_events'\nimport './inputs/index.js'\n", "$(function() {\n  var $index, $modal, $modalContent, id, showModal\n  $index = $('#product-events-index')\n  $modal = $('#product-events-modal')\n  $modalContent = $modal.find('.modal-body-outer')\n  showModal = function(html) {\n    $modalContent.html(html)\n    $modal.modal()\n    return reinitializeForms($modalContent)\n  }\n  $('.nested-association-new-link').on('ajax:success', function(event, data, status, xhr) {\n    return showModal(data)\n  })\n  $modal.on('ajax:success', '.nested-association-form', function(event, data, status, xhr) {\n    $index.html(data)\n    return $modal.modal('hide')\n  })\n  $modal.on('ajax:error', '.nested-association-form', function(event, xhr, status, error) {\n    return showModal(xhr.responseText)\n  })\n  $index.on('ajax:success', '.nested-association-show-link', function(event, data, status, xhr) {\n    return showModal(data)\n  })\n  $index.on('ajax:success', '.nested-association-edit-link', function(event, data, status, xhr) {\n    return showModal(data)\n  })\n  $index.on('ajax:success', '[data-method=\"delete\"]', function(event, data, status, xhr) {\n    return $index.html(data)\n  })\n  if (location.hash.match(\"^#event_id=\")) {\n    id = location.hash.substr(\"#event_id=\".length, location.hash.length)\n    $index.find(\"tr[data-id='\" + id + \"']\").find(\".nested-association-show-link\").click()\n    location.hash = \"\"\n  }\n  $(\"#consumables\").on(\"click\", \".consumption-link\", function(event) {\n    var action_type, url\n    url = $(this).data(\"url\")\n    action_type = $(this).data(\"actiontype\")\n    return $.post(url, {\n      action_type: action_type\n    })\n  })\n  return $(\"#share\").on(\"click\", \"#portal-share\", function(event) {\n    var $form, $url, email, message, name\n    $form = $('#share-form')\n    $url = $form.data('url')\n    message = $form.find(\"textarea[name='message']\").val()\n    name = $form.find(\"input[name='name']\").val()\n    email = $form.find(\"input[name='email']\").val()\n    id = $form.find(\"[name='id']\").val()\n    return $.post($url, {\n      id: id,\n      message: message,\n      email: email,\n      name: name\n    })\n  })\n})", "import './autocomplete'\nimport './jquery.tokeninput'\nimport './association_autocomplete_input'", "/*\n * jQuery Plugin: Tokenizing Autocomplete Text Entry\n * Version 1.6.0\n *\n * Copyright (c) 2009 James Smith (http://loopj.com)\n * Licensed jointly under the GPL and MIT licenses,\n * choose which one suits your project best!\n *\n */\n\n(function ($) {\n// Default settings\nvar DEFAULT_SETTINGS = {\n\t// Search settings\n    method: \"GET\",\n    contentType: \"json\",\n    queryParam: \"q\",\n    searchDelay: 300,\n    minChars: 1,\n    propertyToSearch: \"name\",\n    jsonContainer: null,\n\n\t// Display settings\n    hintText: \"Type in a search term\",\n    noResultsText: \"No results\",\n    searchingText: \"Searching...\",\n    deleteText: \"&times;\",\n    animateDropdown: true,\n\n\t// Tokenization settings\n    tokenLimit: null,\n    tokenDelimiter: \",\",\n    preventDuplicates: false,\n\n\t// Output settings\n    tokenValue: \"id\",\n\n\t// Prepopulation settings\n    prePopulate: null,\n    processPrePopulate: false,\n\n\t// Manipulation settings\n    idPrefix: \"token-input-\",\n\n\t// Formatters\n    resultsFormatter: function(item){ return \"<li>\" + item[this.propertyToSearch]+ \"</li>\" },\n    tokenFormatter: function(item) { return \"<li><p>\" + item[this.propertyToSearch] + \"</p></li>\" },\n\n\t// Callbacks\n    onResult: null,\n    onAdd: null,\n    onDelete: null,\n    onReady: null\n};\n\n// Default classes to use when theming\nvar DEFAULT_CLASSES = {\n    tokenList: \"token-input-list\",\n    token: \"token-input-token\",\n    tokenDelete: \"token-input-delete-token\",\n    selectedToken: \"token-input-selected-token\",\n    highlightedToken: \"token-input-highlighted-token\",\n    dropdown: \"token-input-dropdown\",\n    dropdownItem: \"token-input-dropdown-item\",\n    dropdownItem2: \"token-input-dropdown-item2\",\n    selectedDropdownItem: \"token-input-selected-dropdown-item\",\n    inputToken: \"token-input-input-token\"\n};\n\n// Input box position \"enum\"\nvar POSITION = {\n    BEFORE: 0,\n    AFTER: 1,\n    END: 2\n};\n\n// Keys \"enum\"\nvar KEY = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    ESCAPE: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    NUMPAD_ENTER: 108,\n    COMMA: 188\n};\n\n// Additional public (exposed) methods\nvar methods = {\n    init: function(url_or_data_or_function, options) {\n        var settings = $.extend({}, DEFAULT_SETTINGS, options || {});\n\n        return this.each(function () {\n            $(this).data(\"tokenInputObject\", new $.TokenList(this, url_or_data_or_function, settings));\n        });\n    },\n    clear: function() {\n        this.data(\"tokenInputObject\").clear();\n        return this;\n    },\n    add: function(item) {\n        this.data(\"tokenInputObject\").add(item);\n        return this;\n    },\n    remove: function(item) {\n        this.data(\"tokenInputObject\").remove(item);\n        return this;\n    },\n    get: function() {\n    \treturn this.data(\"tokenInputObject\").getTokens();\n   \t}\n}\n\n// Expose the .tokenInput function to jQuery as a plugin\n$.fn.tokenInput = function (method) {\n    // Method calling and initialization logic\n    if(methods[method]) {\n        return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n    } else {\n        return methods.init.apply(this, arguments);\n    }\n};\n\n// TokenList class for each input\n$.TokenList = function (input, url_or_data, settings) {\n    //\n    // Initialization\n    //\n\n    // Configure the data source\n    if($.type(url_or_data) === \"string\" || $.type(url_or_data) === \"function\") {\n        // Set the url to query against\n        settings.url = url_or_data;\n\n        // If the URL is a function, evaluate it here to do our initalization work\n        var url = computeURL();\n\n        // Make a smart guess about cross-domain if it wasn't explicitly specified\n        if(settings.crossDomain === undefined) {\n            if(url.indexOf(\"://\") === -1) {\n                settings.crossDomain = false;\n            } else {\n                settings.crossDomain = (location.href.split(/\\/+/g)[1] !== url.split(/\\/+/g)[1]);\n            }\n        }\n    } else if(typeof(url_or_data) === \"object\") {\n        // Set the local data to search through\n        settings.local_data = url_or_data;\n    }\n\n    // Build class names\n    if(settings.classes) {\n        // Use custom class names\n        settings.classes = $.extend({}, DEFAULT_CLASSES, settings.classes);\n    } else if(settings.theme) {\n        // Use theme-suffixed default class names\n        settings.classes = {};\n        $.each(DEFAULT_CLASSES, function(key, value) {\n            settings.classes[key] = value + \"-\" + settings.theme;\n        });\n    } else {\n        settings.classes = DEFAULT_CLASSES;\n    }\n\n\n    // Save the tokens\n    var saved_tokens = [];\n\n    // Keep track of the number of tokens in the list\n    var token_count = 0;\n\n    // Basic cache to save on db hits\n    var cache = new $.TokenList.Cache();\n\n    // Keep track of the timeout, old vals\n    var timeout;\n    var input_val;\n\n    // Create a new text input an attach keyup events\n    var input_box = $(\"<input type=\\\"text\\\"  autocomplete=\\\"off\\\">\")\n        .css({\n            outline: \"none\"\n        })\n        .attr(\"id\", settings.idPrefix + input.id)\n        .focus(function () {\n            if (settings.tokenLimit === null || settings.tokenLimit !== token_count) {\n                show_dropdown_hint();\n            }\n        })\n        .blur(function () {\n            hide_dropdown();\n            $(this).val(\"\");\n        })\n        .bind(\"keyup keydown blur update\", resize_input)\n        .keydown(function (event) {\n            var previous_token;\n            var next_token;\n\n            switch(event.keyCode) {\n                case KEY.LEFT:\n                case KEY.RIGHT:\n                case KEY.UP:\n                case KEY.DOWN:\n                    if(!$(this).val()) {\n                        previous_token = input_token.prev();\n                        next_token = input_token.next();\n\n                        if((previous_token.length && previous_token.get(0) === selected_token) || (next_token.length && next_token.get(0) === selected_token)) {\n                            // Check if there is a previous/next token and it is selected\n                            if(event.keyCode === KEY.LEFT || event.keyCode === KEY.UP) {\n                                deselect_token($(selected_token), POSITION.BEFORE);\n                            } else {\n                                deselect_token($(selected_token), POSITION.AFTER);\n                            }\n                        } else if((event.keyCode === KEY.LEFT || event.keyCode === KEY.UP) && previous_token.length) {\n                            // We are moving left, select the previous token if it exists\n                            select_token($(previous_token.get(0)));\n                        } else if((event.keyCode === KEY.RIGHT || event.keyCode === KEY.DOWN) && next_token.length) {\n                            // We are moving right, select the next token if it exists\n                            select_token($(next_token.get(0)));\n                        }\n                    } else {\n                        var dropdown_item = null;\n\n                        if(event.keyCode === KEY.DOWN || event.keyCode === KEY.RIGHT) {\n                            dropdown_item = $(selected_dropdown_item).next();\n                        } else {\n                            dropdown_item = $(selected_dropdown_item).prev();\n                        }\n\n                        if(dropdown_item.length) {\n                            select_dropdown_item(dropdown_item);\n                        }\n                        return false;\n                    }\n                    break;\n\n                case KEY.BACKSPACE:\n                    previous_token = input_token.prev();\n\n                    if(!$(this).val().length) {\n                        if(selected_token) {\n                            delete_token($(selected_token));\n                            hidden_input.change();\n                        } else if(previous_token.length) {\n                            select_token($(previous_token.get(0)));\n                        }\n\n                        return false;\n                    } else if($(this).val().length === 1) {\n                        hide_dropdown();\n                    } else {\n                        // set a timeout just long enough to let this function finish.\n                        setTimeout(function(){do_search();}, 5);\n                    }\n                    break;\n\n                case KEY.TAB:\n                case KEY.ENTER:\n                case KEY.NUMPAD_ENTER:\n                case KEY.COMMA:\n                  if(selected_dropdown_item) {\n                    add_token($(selected_dropdown_item).data(\"tokeninput\"));\n                    hidden_input.change();\n                    return false;\n                  }\n                  break;\n\n                case KEY.ESCAPE:\n                  hide_dropdown();\n                  return true;\n\n                default:\n                    if(String.fromCharCode(event.which)) {\n                        // set a timeout just long enough to let this function finish.\n                        setTimeout(function(){do_search();}, 5);\n                    }\n                    break;\n            }\n        });\n\n    // Keep a reference to the original input box\n    var hidden_input = $(input)\n                           .hide()\n                           .val(\"\")\n                           .focus(function () {\n                               input_box.focus();\n                           })\n                           .blur(function () {\n                               input_box.blur();\n                           });\n\n    // Keep a reference to the selected token and dropdown item\n    var selected_token = null;\n    var selected_token_index = 0;\n    var selected_dropdown_item = null;\n\n    // The list to store the token items in\n    var token_list = $(\"<ul />\")\n        .addClass(settings.classes.tokenList)\n        .click(function (event) {\n            var li = $(event.target).closest(\"li\");\n            if(li && li.get(0) && $.data(li.get(0), \"tokeninput\")) {\n                toggle_select_token(li);\n            } else {\n                // Deselect selected token\n                if(selected_token) {\n                    deselect_token($(selected_token), POSITION.END);\n                }\n\n                // Focus input box\n                input_box.focus();\n            }\n        })\n        .mouseover(function (event) {\n            var li = $(event.target).closest(\"li\");\n            if(li && selected_token !== this) {\n                li.addClass(settings.classes.highlightedToken);\n            }\n        })\n        .mouseout(function (event) {\n            var li = $(event.target).closest(\"li\");\n            if(li && selected_token !== this) {\n                li.removeClass(settings.classes.highlightedToken);\n            }\n        })\n        .insertBefore(hidden_input);\n\n    // The token holding the input box\n    var input_token = $(\"<li />\")\n        .addClass(settings.classes.inputToken)\n        .appendTo(token_list)\n        .append(input_box);\n\n    // The list to store the dropdown items in\n    var dropdown = $(\"<div>\")\n        .addClass(settings.classes.dropdown)\n        .appendTo(\"body\")\n        .hide();\n\n    // Magic element to help us resize the text input\n    var input_resizer = $(\"<tester/>\")\n        .insertAfter(input_box)\n        .css({\n            position: \"absolute\",\n            top: -9999,\n            left: -9999,\n            width: \"auto\",\n            fontSize: input_box.css(\"fontSize\"),\n            fontFamily: input_box.css(\"fontFamily\"),\n            fontWeight: input_box.css(\"fontWeight\"),\n            letterSpacing: input_box.css(\"letterSpacing\"),\n            whiteSpace: \"nowrap\"\n        });\n\n    // Pre-populate list if items exist\n    hidden_input.val(\"\");\n    var li_data = settings.prePopulate || hidden_input.data(\"pre\");\n    if(settings.processPrePopulate && $.isFunction(settings.onResult)) {\n        li_data = settings.onResult.call(hidden_input, li_data);\n    }\n    if(li_data && li_data.length) {\n        $.each(li_data, function (index, value) {\n            insert_token(value);\n            checkTokenLimit();\n        });\n    }\n\n    // Initialization is done\n    if($.isFunction(settings.onReady)) {\n        settings.onReady.call();\n    }\n\n    //\n    // Public functions\n    //\n\n    this.clear = function() {\n        token_list.children(\"li\").each(function() {\n            if ($(this).children(\"input\").length === 0) {\n                delete_token($(this));\n            }\n        });\n    }\n\n    this.add = function(item) {\n        add_token(item);\n    }\n\n    this.remove = function(item) {\n        token_list.children(\"li\").each(function() {\n            if ($(this).children(\"input\").length === 0) {\n                var currToken = $(this).data(\"tokeninput\");\n                var match = true;\n                for (var prop in item) {\n                    if (item[prop] !== currToken[prop]) {\n                        match = false;\n                        break;\n                    }\n                }\n                if (match) {\n                    delete_token($(this));\n                }\n            }\n        });\n    }\n    \n    this.getTokens = function() {\n   \t\treturn saved_tokens;\n   \t}\n\n    //\n    // Private functions\n    //\n\n    function checkTokenLimit() {\n        if(settings.tokenLimit !== null && token_count >= settings.tokenLimit) {\n            input_box.hide();\n            hide_dropdown();\n            return;\n        }\n    }\n\n    function resize_input() {\n        if(input_val === (input_val = input_box.val())) {return;}\n\n        // Enter new content into resizer and resize input accordingly\n        var escaped = input_val.replace(/&/g, '&amp;').replace(/\\s/g,' ').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n        input_resizer.html(escaped);\n        input_box.width(input_resizer.width() + 30);\n    }\n\n    function is_printable_character(keycode) {\n        return ((keycode >= 48 && keycode <= 90) ||     // 0-1a-z\n                (keycode >= 96 && keycode <= 111) ||    // numpad 0-9 + - / * .\n                (keycode >= 186 && keycode <= 192) ||   // ; = , - . / ^\n                (keycode >= 219 && keycode <= 222));    // ( \\ ) '\n    }\n\n    // Inner function to a token to the list\n    function insert_token(item) {\n        var this_token = settings.tokenFormatter(item);\n        this_token = $(this_token)\n          .addClass(settings.classes.token)\n          .insertBefore(input_token);\n\n        // The 'delete token' button\n        $(\"<span>\" + settings.deleteText + \"</span>\")\n            .addClass(settings.classes.tokenDelete)\n            .appendTo(this_token)\n            .click(function () {\n                delete_token($(this).parent());\n                hidden_input.change();\n                return false;\n            });\n\n        // Store data on the token\n        var token_data = {\"id\": item.id};\n        token_data[settings.propertyToSearch] = item[settings.propertyToSearch];\n        $.data(this_token.get(0), \"tokeninput\", item);\n\n        // Save this token for duplicate checking\n        saved_tokens = saved_tokens.slice(0,selected_token_index).concat([token_data]).concat(saved_tokens.slice(selected_token_index));\n        selected_token_index++;\n\n        // Update the hidden input\n        update_hidden_input(saved_tokens, hidden_input);\n\n        token_count += 1;\n\n        // Check the token limit\n        if(settings.tokenLimit !== null && token_count >= settings.tokenLimit) {\n            input_box.hide();\n            hide_dropdown();\n        }\n\n        return this_token;\n    }\n\n    // Add a token to the token list based on user input\n    function add_token (item) {\n        var callback = settings.onAdd;\n\n        // See if the token already exists and select it if we don't want duplicates\n        if(token_count > 0 && settings.preventDuplicates) {\n            var found_existing_token = null;\n            token_list.children().each(function () {\n                var existing_token = $(this);\n                var existing_data = $.data(existing_token.get(0), \"tokeninput\");\n                if(existing_data && existing_data.id === item.id) {\n                    found_existing_token = existing_token;\n                    return false;\n                }\n            });\n\n            if(found_existing_token) {\n                select_token(found_existing_token);\n                input_token.insertAfter(found_existing_token);\n                input_box.focus();\n                return;\n            }\n        }\n\n        // Insert the new tokens\n        if(settings.tokenLimit == null || token_count < settings.tokenLimit) {\n            insert_token(item);\n            checkTokenLimit();\n        }\n\n        // Clear input box\n        input_box.val(\"\");\n\n        // Don't show the help dropdown, they've got the idea\n        hide_dropdown();\n\n        // Execute the onAdd callback if defined\n        if($.isFunction(callback)) {\n            callback.call(hidden_input,item);\n        }\n    }\n\n    // Select a token in the token list\n    function select_token (token) {\n        token.addClass(settings.classes.selectedToken);\n        selected_token = token.get(0);\n\n        // Hide input box\n        input_box.val(\"\");\n\n        // Hide dropdown if it is visible (eg if we clicked to select token)\n        hide_dropdown();\n    }\n\n    // Deselect a token in the token list\n    function deselect_token (token, position) {\n        token.removeClass(settings.classes.selectedToken);\n        selected_token = null;\n\n        if(position === POSITION.BEFORE) {\n            input_token.insertBefore(token);\n            selected_token_index--;\n        } else if(position === POSITION.AFTER) {\n            input_token.insertAfter(token);\n            selected_token_index++;\n        } else {\n            input_token.appendTo(token_list);\n            selected_token_index = token_count;\n        }\n\n        // Show the input box and give it focus again\n        input_box.focus();\n    }\n\n    // Toggle selection of a token in the token list\n    function toggle_select_token(token) {\n        var previous_selected_token = selected_token;\n\n        if(selected_token) {\n            deselect_token($(selected_token), POSITION.END);\n        }\n\n        if(previous_selected_token === token.get(0)) {\n            deselect_token(token, POSITION.END);\n        } else {\n            select_token(token);\n        }\n    }\n\n    // Delete a token from the token list\n    function delete_token (token) {\n        // Remove the id from the saved list\n        var token_data = $.data(token.get(0), \"tokeninput\");\n        var callback = settings.onDelete;\n\n        var index = token.prevAll().length;\n        if(index > selected_token_index) index--;\n\n        // Delete the token\n        token.remove();\n        selected_token = null;\n\n        // Show the input box and give it focus again\n        input_box.focus();\n\n        // Remove this token from the saved list\n        saved_tokens = saved_tokens.slice(0,index).concat(saved_tokens.slice(index+1));\n        if(index < selected_token_index) selected_token_index--;\n\n        // Update the hidden input\n        update_hidden_input(saved_tokens, hidden_input);\n\n        token_count -= 1;\n\n        if(settings.tokenLimit !== null) {\n            input_box\n                .show()\n                .val(\"\")\n                .focus();\n        }\n\n        // Execute the onDelete callback if defined\n        if($.isFunction(callback)) {\n            callback.call(hidden_input,token_data);\n        }\n    }\n\n    // Update the hidden input box value\n    function update_hidden_input(saved_tokens, hidden_input) {\n        var token_values = $.map(saved_tokens, function (el) {\n            return el[settings.tokenValue];\n        });\n        hidden_input.val(token_values.join(settings.tokenDelimiter));\n\n    }\n\n    // Hide and clear the results dropdown\n    function hide_dropdown () {\n        dropdown.hide().empty();\n        selected_dropdown_item = null;\n    }\n\n    function show_dropdown() {\n        dropdown\n            .css({\n                position: \"absolute\",\n                top: $(token_list).offset().top + $(token_list).outerHeight(),\n                left: $(token_list).offset().left,\n                zindex: 999\n            })\n            .show();\n    }\n\n    function show_dropdown_searching () {\n        if(settings.searchingText) {\n            dropdown.html(\"<p>\"+settings.searchingText+\"</p>\");\n            show_dropdown();\n        }\n    }\n\n    function show_dropdown_hint () {\n        if(settings.hintText) {\n            dropdown.html(\"<p>\"+settings.hintText+\"</p>\");\n            show_dropdown();\n        }\n    }\n\n    // Highlight the query part of the search term\n    function highlight_term(value, term) {\n        return value.replace(new RegExp(\"(?![^&;]+;)(?!<[^<>]*)(\" + term + \")(?![^<>]*>)(?![^&;]+;)\", \"gi\"), \"<b>$1</b>\");\n    }\n    \n    function find_value_and_highlight_term(template, value, term) {\n        return template.replace(new RegExp(\"(?![^&;]+;)(?!<[^<>]*)(\" + value + \")(?![^<>]*>)(?![^&;]+;)\", \"g\"), highlight_term(value, term));\n    }\n\n    // Populate the results dropdown with some results\n    function populate_dropdown (query, results) {\n        if(results && results.length) {\n            dropdown.empty();\n            var dropdown_ul = $(\"<ul>\")\n                .appendTo(dropdown)\n                .mouseover(function (event) {\n                    select_dropdown_item($(event.target).closest(\"li\"));\n                })\n                .mousedown(function (event) {\n                    add_token($(event.target).closest(\"li\").data(\"tokeninput\"));\n                    hidden_input.change();\n                    return false;\n                })\n                .hide();\n\n            $.each(results, function(index, value) {\n                var this_li = settings.resultsFormatter(value);\n                \n                this_li = find_value_and_highlight_term(this_li ,value[settings.propertyToSearch], query);            \n                \n                this_li = $(this_li).appendTo(dropdown_ul);\n                \n                if(index % 2) {\n                    this_li.addClass(settings.classes.dropdownItem);\n                } else {\n                    this_li.addClass(settings.classes.dropdownItem2);\n                }\n\n                if(index === 0) {\n                    select_dropdown_item(this_li);\n                }\n\n                $.data(this_li.get(0), \"tokeninput\", value);\n            });\n\n            show_dropdown();\n\n            if(settings.animateDropdown) {\n                dropdown_ul.slideDown(\"fast\");\n            } else {\n                dropdown_ul.show();\n            }\n        } else {\n            if(settings.noResultsText) {\n                dropdown.html(\"<p>\"+settings.noResultsText+\"</p>\");\n                show_dropdown();\n            }\n        }\n    }\n\n    // Highlight an item in the results dropdown\n    function select_dropdown_item (item) {\n        if(item) {\n            if(selected_dropdown_item) {\n                deselect_dropdown_item($(selected_dropdown_item));\n            }\n\n            item.addClass(settings.classes.selectedDropdownItem);\n            selected_dropdown_item = item.get(0);\n        }\n    }\n\n    // Remove highlighting from an item in the results dropdown\n    function deselect_dropdown_item (item) {\n        item.removeClass(settings.classes.selectedDropdownItem);\n        selected_dropdown_item = null;\n    }\n\n    // Do a search and show the \"searching\" dropdown if the input is longer\n    // than settings.minChars\n    function do_search() {\n        var query = input_box.val().toLowerCase();\n\n        if(query && query.length) {\n            if(selected_token) {\n                deselect_token($(selected_token), POSITION.AFTER);\n            }\n\n            if(query.length >= settings.minChars) {\n                show_dropdown_searching();\n                clearTimeout(timeout);\n\n                timeout = setTimeout(function(){\n                    run_search(query);\n                }, settings.searchDelay);\n            } else {\n                hide_dropdown();\n            }\n        }\n    }\n\n    // Do the actual search\n    function run_search(query) {\n        var cache_key = query + computeURL();\n        var cached_results = cache.get(cache_key);\n        if(cached_results) {\n            populate_dropdown(query, cached_results);\n        } else {\n            // Are we doing an ajax search or local data search?\n            if(settings.url) {\n                var url = computeURL();\n                // Extract exisiting get params\n                var ajax_params = {};\n                ajax_params.data = {};\n                if(url.indexOf(\"?\") > -1) {\n                    var parts = url.split(\"?\");\n                    ajax_params.url = parts[0];\n\n                    var param_array = parts[1].split(\"&\");\n                    $.each(param_array, function (index, value) {\n                        var kv = value.split(\"=\");\n                        ajax_params.data[kv[0]] = kv[1];\n                    });\n                } else {\n                    ajax_params.url = url;\n                }\n\n                // Prepare the request\n                ajax_params.data[settings.queryParam] = query;\n                ajax_params.type = settings.method;\n                ajax_params.dataType = settings.contentType;\n                if(settings.crossDomain) {\n                    ajax_params.dataType = \"jsonp\";\n                }\n\n                // Attach the success callback\n                ajax_params.success = function(results) {\n                  if($.isFunction(settings.onResult)) {\n                      results = settings.onResult.call(hidden_input, results);\n                  }\n                  cache.add(cache_key, settings.jsonContainer ? results[settings.jsonContainer] : results);\n\n                  // only populate the dropdown if the results are associated with the active search query\n                  if(input_box.val().toLowerCase() === query) {\n                      populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results);\n                  }\n                };\n\n                // Make the request\n                $.ajax(ajax_params);\n            } else if(settings.local_data) {\n                // Do the search through local data\n                var results = $.grep(settings.local_data, function (row) {\n                    return row[settings.propertyToSearch].toLowerCase().indexOf(query.toLowerCase()) > -1;\n                });\n\n                if($.isFunction(settings.onResult)) {\n                    results = settings.onResult.call(hidden_input, results);\n                }\n                cache.add(cache_key, results);\n                populate_dropdown(query, results);\n            }\n        }\n    }\n\n    // compute the dynamic URL\n    function computeURL() {\n        var url = settings.url;\n        if(typeof settings.url == 'function') {\n            url = settings.url.call();\n        }\n        return url;\n    }\n};\n\n// Really basic cache for the results\n$.TokenList.Cache = function (options) {\n    var settings = $.extend({\n        max_size: 500\n    }, options);\n\n    var data = {};\n    var size = 0;\n\n    var flush = function () {\n        data = {};\n        size = 0;\n    };\n\n    this.add = function (query, results) {\n        if(size > settings.max_size) {\n            flush();\n        }\n\n        if(!data[query]) {\n            size += 1;\n        }\n\n        data[query] = results;\n    };\n\n    this.get = function (query) {\n        return data[query];\n    };\n};\n}(jQuery));\n", "addFormInitializationRoutine(function() {\n  return $(\"input.association_autocomplete\").each(function(i, el) {\n    console.log(\"association_autocomplete initialized\")\n    var $el, name\n    $el = $(el)\n    if (!$el.data(\"initializedTokenInput\")) {\n      $el.data(\"initializedTokenInput\", true)\n      $el.tokenInput($el.attr(\"data-url\"), {\n        prePopulate: JSON.parse($el.val() || '{}'),\n        tokenLimit: (!$el.attr(\"data-multiple\") ? 1 : void 0),\n        tokenDelimiter: \",\",\n        preventDuplicates: true,\n        tokenValue: \"id\",\n        allowTabOut: true,\n        autoSelectFirstResult: true,\n        minChars: 2,\n        theme: \"facebook\",\n        animateDropdown: false\n      })\n      if ($el.attr(\"data-multiple\")) {\n        name = $el.attr(\"name\") + \"[]\"\n        return $el.attr(\"name\", \"__dummy__\").change(function() {\n          var id, j, len, ref, results\n          $el.siblings(\"[data-helper='true']\").remove()\n          ref = $el.val().split(\",\")\n          results = []\n          for (j = 0, len = ref.length; j < len; j++) {\n            id = ref[j]\n            results.push($(\"<input>\").attr(\"type\", \"hidden\").attr(\"name\", name).val(id).attr(\"data-helper\", \"true\").insertAfter($el))\n          }\n          return results\n        })\n      }\n    }\n  })\n})", "import { Controller } from '@hotwired/stimulus';\nimport Ajax from '../packs/ajax.js';\n\nexport default class extends Controller {\n\n  async add(event) {\n    var $target = $(event.target)\n    var $insertBefore = $target.parents('.row#insert-before')\n\n    var $controllerElement = $(this.element)\n    var index = $controllerElement.find('.agreement').length\n\n    var agreement = await new Ajax('/admin/render_agreement').doAjax('GET', { \"index\": index })\n\n    $(agreement).insertBefore($insertBefore)\n  }\n\n  remove(event) {\n    var $target = $(event.target)\n    var $agreement = $target.parents('.agreement')\n    $agreement.remove()\n  }\n}", "export default class Ajax {\n  constructor(url) {\n    this.url = url;\n  }\n\n  async doAjax(method, args) {\n\n    let result;\n\n    try {\n      result = await $.ajax({\n        url: this.url,\n        method: method,\n        data: $.extend(args, {authenticity_token: $('[name=\"csrf-token\"]')[0].content})\n      })\n\n      return result;\n    } catch (error) {\n      console.error(error);\n    }\n  }\n}", "import ApplicationController from './application_controller'\nimport Param from '../packs/param';\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect()\n    this.param = new Param(this.getBaseUrl());\n  }\n\n  ///\n  // calls the AppointmentReflex to add a new appointment to the form in the default journey builder form\n  ///\n  add(event) {\n    let $target = $(event.currentTarget);\n    let eventId = $target.data('event-id');\n    this.startLoading()\n    this.stimulate('Appointment#add', eventId).then(payload => {\n      reinitializeForms($(\"#learn_units_form\"))\n      this.reset_csrf_token();\n      this.stopLoading()\n    })\n  }\n\n  ///\n  // calls the AppointmentReflex to add a new appointment to the form in the learnable modal\n  ///\n  addAppointmentToLearnable(event) {\n    this.startLoading()\n    this.stimulate('Appointment#add_appointment_to_learnable', event.currentTarget).then(() => {\n      reinitializeForms($(\"#learn_units_form_pseudo_modal\"))\n      this.stopLoading()\n    });\n\n  }\n\n  ///\n  // toggles show_all/show_from_interest on participation screen\n  ///\n  switchScope(event) {\n    let $target = $(event.currentTarget)\n    let isFiltered = $target.prop(\"checked\");\n    this.param.updateParams(\"filtered\", isFiltered, false);\n    this.stimulate(\"searchReflex#filter\");\n  }\n\n  ///\n  // deletes an appointment\n  delete(event) {\n    let $target = $(event.currentTarget);\n    let appId = $target.data('app-id');\n\n    this.stimulate('Appointment#delete', appId)\n  }\n\n  ///\n  // deletes the appointment element from the DOM, when the deletion was successful \n  deleteSuccess(element, reflex, error, reflexId) {\n    $(element).remove()\n  }\n\n  ///\n  // shows an error message when the deletion was not successful\n  ///\n  deleteError(element, reflex, error, reflexId) {\n    // console.log(\"we have an error here: \", error)\n    let $el = $(element).find(\".pseudo-btn.delete\")\n    $el.attr(\"title\", I18n.t(error));\n    $el.tooltip(\"show\")\n  }\n\n\n\n}", "export default class Param {\n  constructor(baseUrl) {\n    this.baseUrl = baseUrl;\n  }\n\n  updateParams(key, param, isArray) {\n    let params = this.getParams();\n\n    params = this.addParam(params, key, param, isArray);\n\n    let searchParams = this.createParamList(params);\n\n    if (history.pushState) {\n      let newUrl = this.baseUrl + searchParams;\n      window.history.pushState({ path: newUrl }, \"\", newUrl);\n    }\n  }\n\n  clearParam(key) {\n    let params = this.getParams();\n\n    delete params[key];\n\n    let searchParams = this.createParamList(params);\n\n    if (history.pushState) {\n      let newUrl = this.baseUrl + searchParams;\n      window.history.pushState({ path: newUrl }, \"\", newUrl);\n    }\n  }\n\n  getParams() {\n    let currentUrl = window.location.href,\n      baseUrl = this.baseUrl;\n\n    let currentParams = currentUrl.split(/[\\?&]/).filter(function (v) {\n      return v !== \"\" && v !== baseUrl;\n    });\n\n    return currentParams.reduce(function (hash, param) {\n      let key = param.split(/=/)[0],\n        value = param.split(/=/)[1];\n\n      if (key.endsWith(\"[]\")) {\n        key = key.substring(0, key.length - 2);\n        if (!(key in hash)) {\n          hash[key] = new Array();\n        }\n        hash[key].push(decodeURI(value));\n      } else {\n        hash[key] = decodeURI(value);\n      }\n      return hash;\n    }, {});\n  }\n\n  createParamList(params) {\n    let list = [];\n\n    for (let key of Object.keys(params)) {\n      let param = params[key];\n      if (Array.isArray(param)) {\n        for (let item of param) {\n          list.push(`${key}[]=${encodeURI(item)}`);\n        }\n      } else {\n        list.push(`${key}=${encodeURI(param)}`);\n      }\n    }\n    if (list.length !== 0) {\n      return \"?\" + list.join(\"&\");\n    } else {\n      return \"\";\n    }\n  }\n\n  addParam(params, key, param, isArray) {\n    let hash = params[key];\n\n    if (Array.isArray(hash)) {\n      if (!hash.includes(param)) {\n        params[key].push(param);\n      }\n    } else {\n      if (isArray) {\n        params[key] = new Array();\n        params[key].push(param);\n      } else {\n        params[key] = param;\n      }\n    }\n\n    return params;\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = [\"button\"]\n\n  static values = {\n    init: String,\n    manipulationmethod: String\n  }\n\n  initialize() {\n    super.initialize();\n    this.functionMap = {\n      \"renderSeminarSummary\": (event) => {\n        this.renderSeminarSummary(event);\n      },\n      \"useData\": (event) => {\n        this.useData(event);\n      },\n      \"onCheck\": (event) => {\n        this.onCheck.bind(this)(event);\n      }\n    }\n\n    this.initializers = {\n      external: this.initializeExternal,\n      radio_button: this.initializeRadioButton\n    }\n\n    this.hasDate = false\n    this.agreementsChecked = false\n  }\n\n  connect() {\n    let self = this;\n    this.$area = $(this.element)\n    let initMethods = this.initValue.split(\" \");\n    initMethods.forEach(function (initializer, index) {\n      self.initializers[initializer].bind(self)()\n    })\n    super.connect();\n  }\n\n  initializeExternal() {\n    console.log(\"initializes External\")\n  }\n\n  initializeRadioButton() {\n    let self = this;\n    // check for date checks\n    if(this.$area.find(\"input[type=radio]\").length == 0) {\n      this.hasDate = true\n    } else {\n      this.$area.on('change', 'input[type=radio]', function (event) {\n        self.functionMap[self.manipulationmethodValue](event);\n      });\n    }\n    // console.log(`we have a date: ${this.hasDate}`)\n\n    // persist the forms action\n    const $button = $(this.buttonTarget)\n    const $form = $button.closest(\"form\");\n    this.formAction = $form.attr(\"action\")\n\n    // also check if there is at least one agreement and enable send button else\n    this.agreementChecks = this.$area.find(\"#agreement_area input[type=checkbox]\").toArray()\n    if(this.hasDate && this.agreementChecks.length == 0) {\n      $button.attr('disabled', false)\n    }\n\n\n    // console.log(\"initialized RadioButton\")\n  }\n\n  ///\n  // shows the following tab\n  ///\n  next(event) {\n    event.preventDefault();\n    let self = this;\n    let $target = $(event.currentTarget);\n    // let $currentTab = $target.closest(\".tab-pane\");\n    // console.log(\"current tab: \", $currentTab)\n    // let $nextTab = $currentTab.next('.tab-pane')\n    // console.log(\"next tab: \", $nextTab)\n    // $nextTab.tab('show');\n    let $currentTab = $(\"#tab_navigation .nav-link.active\");\n    // console.log(\"current tab: \", $currentTab)\n    let $nextTab = $currentTab.closest('.nav-item').next('.nav-item ').find('a')\n    $nextTab.removeClass('disabled');\n    // also make this tab now directly available\n    $nextTab.attr('data-bs-toggle', 'tab')\n    // $currentTab.removeClass('active')\n    // console.log(\"next tab: \", $nextTab)\n    /// check if we have an extra action that must be executed before the new tab is shown\n    let extraAction = $target.attr('data-extra-action');\n    if(extraAction) {\n      $nextTab.on('shown.bs.tab', function (event) {\n        self.functionMap[extraAction](event);\n      });\n    }\n    // console.log(\"extra action: \", extraAction)\n    $nextTab.trigger('click');\n    $nextTab.tab('show');\n  }  \n  \n  ///\n  // shows the prevous tab\n  ///\n  back(event) {\n    event.preventDefault();\n    let $target = $(event.currentTarget);\n    let $currentTab = $(\"#tab_navigation .nav-link.active\");\n    // console.log(\"current tab: \", $currentTab)\n    let $prevTab = $currentTab.closest('.nav-item').prev('.nav-item ').find('a')\n    if($prevTab.size == 0) {\n      return\n    }\n    // console.log(\"previous tab: \", $prevTab)\n    $prevTab.tab('show');\n    $prevTab.trigger('click');\n  }\n\n  ///\n  // enables the continue button of the current tab\n  ///\n  enableContinueButton(event) {   \n    let $target = $(event.currentTarget);\n    let $currentTab = $target.closest('.tab-pane')\n    // console.log(\"next tab: \", $currentTab)\n    let $continueButton = $currentTab.find('.actions .btn.continue-btn')\n    // console.log(\"continue button: \", $continueButton)\n    $continueButton.removeClass('disabled')\n    $continueButton.attr('disabled', false)\n  } \n\n  ///\n  // copies the profile entries of the requester to the participant area\n  ///\n  participateYourself(event) {\n    event.preventDefault();\n    let $target = $(event.currentTarget);\n    // find form part\n    let participantDataArea = $target.closest('.tab-pane').find('.participants');\n    let goOn = true;\n    /// if checkbox checked\n    if($target.prop(\"checked\")) {\n      let email = participantDataArea.find('input#external_booking_email').val();\n      // console.log(\"email: \", email)\n\n      let firstName = participantDataArea.find('input#external_booking_first_name').val();\n      let lastName = participantDataArea.find('input#external_booking_last_name').val();\n      goOn = !(email == \"\") && !(firstName == \"\") && !(lastName == \"\")\n      if(goOn) {\n        // let fullName = `${firstName} ${lastName}`;\n        // console.log(\"name: \", fullName)\n        let $template = $(\"template#participant_template\")\n        let $participant = $($template[0].content.cloneNode(true))\n        $participant.find('input#external_booking_participants_email').val(email).attr('readonly', true).attr('id', null)\n        $participant.find('input#external_booking_participants_first_name').val(firstName).attr('readonly', true).attr('id', null)\n        $participant.find('input#external_booking_participants_last_name').val(lastName).attr('readonly', true).attr('id', null)\n        $participant.find('.delete-button').remove()\n        // console.log(\"participant: \", $participant)\n        $(\"#participants_list\").prepend($participant)\n      } else {\n        console.log('data missing!!!')\n        $target.prop( \"checked\", !$target.prop(\"checked\") )\n        return null\n      }\n    } else { /// unchecked\n      $(\"#participants_list\").children(\"li\").first().detach()\n    }\n    // also enable the continue button\n    this.checkParticipantsAndEnableContinue(event)\n  }\n\n  ///\n  // adds a participant form row\n  ///\n  addParticipant(event) {\n    event.preventDefault();\n    let $target = $(event.currentTarget);\n    // find form part\n    let $participantsList = $(\"#participants_list\")\n    let $template = $(\"template#participant_template\")\n    let $participant = $($template[0].content.cloneNode(true))\n    let number = $participant.find(\".number\")\n    number.text($participantsList.children(\"div\").length + 1)\n    $participant.find('input#external_booking_participants_email').attr('id', null)\n    $participant.find('input#external_booking_participants_first_name').attr('id', null)\n    $participant.find('input#external_booking_participants_last_name').attr('id', null)\n    // console.log(\"participant: \", $participant)\n    $participantsList.append($participant)\n  }\n\n  ///\n  // deletes participant from list\n  ///\n  deleteParticipant(event) {\n    event.preventDefault();\n    let $target = $(event.currentTarget);\n    // find form part\n    let $participant = $target.closest(\"li\")\n    $participant.detach()\n  }\n\n  ///\n  // renders the summary for the exeternal booking \n  ///\n  renderSeminarSummary(event) {\n    let $target = $(event.target);\n    // console.log(\"we render the seminar summary\")\n    let $seminarArea = $(\"#finish_seminar_area\")\n    $seminarArea.html('')\n    let $participantsArea = $(\"#finish_participants_area\")\n    $participantsArea.html('')\n    let $invoiceFinishArea = $(\"#finish_invoice_area\")\n\n    // 1) find modules part and copy them\n    let $eventsDataArea = $('#modules');\n    $( \"input.boolean:checked\", $eventsDataArea ).each(function( index ) {\n      let $input = $(this)\n      // console.log(\"we have: \", $input)\n      let $label = $input.parent().find('label').clone();\n      // console.log(\"label: \", $label)\n      $seminarArea.append($label)\n    });\n\n    // 2) find participants part and copy them \n    let $participantDataArea = $('#participants_list');\n    let email, firstName, lastName, fullName;\n    let participants = [];\n    $( \"li\", $participantDataArea ).each(function( index ) {\n      let $li = $(this)\n      email = $li.find('.external_booking_participants_email input').val();\n      // console.log(\"email: \", email)\n      \n      firstName = $li.find('.external_booking_participants_first_name input').val();\n      lastName = $li.find('.external_booking_participants_last_name input').val();\n      fullName = `${firstName} ${lastName}`;\n      participants.push(`${fullName}, ${email}`)\n      // console.log(\"name: \", fullName)\n    });\n    let participants_html = \"<ol>\"\n    participants.forEach(function(part){\n      participants_html += `<li>${part}</li>`\n    });\n    participants_html += \"</ol>\"\n    $participantsArea.html(participants_html)\n\n    // 3) get the invoice data and represent it\n    let $invoiceArea = $(\"#invoice_area\")\n    let invoiceEmail = $invoiceArea.find(\"input#external_booking_invoice_email\").val()\n    let invoiceFirstName = $invoiceArea.find(\"input#external_booking_invoice_first_name\").val()\n    let invoiceLastName = $invoiceArea.find(\"input#external_booking_invoice_last_name\").val()\n    let company = $invoiceArea.find(\"input#external_booking_invoice_company\").val()\n    let addressSupplement = $invoiceArea.find(\"input#external_booking_invoice_address_supplement\").val()\n    let pob = $invoiceArea.find(\"input#external_booking_invoice_pob\").val()\n    let invoiceStreet = $invoiceArea.find(\"input#external_booking_invoice_street\").val()\n    let invoiceHouseNumber = $invoiceArea.find(\"input#external_booking_invoice_house_number\").val()\n    let zip = $invoiceArea.find(\"input#external_booking_invoice_zip\").val()\n    let city = $invoiceArea.find(\"input#external_booking_invoice_city\").val()\n    let vat = $invoiceArea.find(\"input#external_booking_invoice_ustid\").val()\n    let phone = $invoiceArea.find(\"input#external_booking_invoice_telephone_number\").val()\n    \n    let divider = \", \"\n    let address = `${company}${divider}${invoiceFirstName} ${invoiceLastName}${divider}`\n    if (addressSupplement) {\n      address += `${addressSupplement}${divider}` \n    }\n    if (pob) {\n      address += pob\n    } else {\n      address += `${invoiceStreet} ${invoiceHouseNumber}`\n    }\n    address = `${address}${divider}${zip} ${city}`\n\n    $invoiceFinishArea.find('.email .replacement').html(invoiceEmail)\n    $invoiceFinishArea.find('.address .replacement').html(address)\n    if(vat) {\n      $invoiceFinishArea.find('.vat .replacement').html(vat)\n    }\n    if(phone) {\n      $invoiceFinishArea.find('.phone .replacement').html(phone)\n    }\n\n\n    // 4) at least also check, if we can enable the send button\n    this.checkValidity()\n  }\n\n  ///\n  // checks if at least one participant has been entered and enables the continue button\n  ///\n  checkParticipantsAndEnableContinue(event) {\n    // console.log(\"we check the participants\")\n    var valid = true\n    // check booker\n    let $bookerArea = $(\"#booker_area\")\n    let booker_email = $bookerArea.find(\"input#external_booking_email\").val()\n    valid = valid && booker_email != \"\"\n    let booker_firstName = $bookerArea.find(\"input#external_booking_first_name\").val()\n    valid = valid && booker_firstName != \"\"\n    let booker_lastName = $bookerArea.find(\"input#external_booking_last_name\").val()\n    valid = valid && booker_lastName != \"\"\n    // check participants\n    let $participantDataArea = $('#participants_list');\n    let email, firstName, lastName;\n    $( \"li\", $participantDataArea ).each(function( index ) {\n      let $li = $(this)\n      email = $li.find('.external_booking_participants_email input').val();\n      // console.log(\"email: \", email)\n      valid = valid && email != \"\"\n      \n      firstName = $li.find('.external_booking_participants_first_name input').val();\n      valid = valid && firstName != \"\"\n      lastName = $li.find('.external_booking_participants_last_name input').val();\n      valid = valid && lastName != \"\"\n      if (valid) {\n        return\n      }\n    });\n\n    if(valid) {\n      this.enableContinueButton(event)\n    }\n  }\n\n  ///\n  // checks if all required fields of the invoice have been entered and enables the continue button\n  ///\n  checkInvoiceAndEnableContinue(event) {\n    // console.log(\"we check the invoice\")\n    var valid = true\n    // check invoice\n    let $invoiceArea = $(\"#invoice_area\")\n    let requiredInputs = $invoiceArea.find(\"input.required\")\n    requiredInputs.each(function( index ) {\n      let $input = $(this)\n      valid = valid && $input.val() != \"\"\n      if (!valid) {\n        return\n      }\n    });\n\n    if(valid) {\n      this.enableContinueButton(event)\n    }\n  }\n\n  ///\n  // takes part of the bookers data and enter it into invoice data \n  ///\n  useData(event) {\n    let $target = $(event.target);\n    // console.log(\"we use preentered data\")\n    // 1) get the bookers needed data\n    let $bookerArea = $(\"#booker_area\")\n    let email = $bookerArea.find(\"input#external_booking_email\").val()\n    // console.log(`email: ${email}`)\n    let firstName = $bookerArea.find(\"input#external_booking_first_name\").val()\n    let lastName = $bookerArea.find(\"input#external_booking_last_name\").val()\n\n    // 2) enter data in invoice area\n    let $invoiceArea = $(\"#invoice_area\")\n    $invoiceArea.find(\"input#external_booking_invoice_email\").val(email)\n    $invoiceArea.find(\"input#external_booking_invoice_first_name\").val(firstName)\n    $invoiceArea.find(\"input#external_booking_invoice_last_name\").val(lastName)\n    // 3) at least also check, if we can enable the send button\n    // this.checkValidity()\n  }\n\n  ///\n  // checks if the acceptance checkboxes are checked and if at least one event and one participant is selected\n  ///\n  checkValidity(event) {\n    let $sendButton = $('#send_external_booking')\n    let $agreementCheck = $(\"#finish_agreement_area input.boolean\").toArray()\n    // console.log(\"agreement check: \", $agreementCheck)\n\n    let hasEvent, hasParticipants = false;\n    hasEvent = $(\"#finish_seminar_area\").find('label').length > 0\n    hasParticipants = $(\"#finish_participants_area ol li\").length > 0\n\n    if (hasEvent && hasParticipants) {\n      /// also check the agreements rules, if given\n      if($agreementCheck.length > 0) {\n        $sendButton.attr('disabled', !$agreementCheck.every((agreement) => $(agreement).prop(\"checked\")))\n      } else {\n        $sendButton.attr('disabled', false)\n      }\n    } else {\n      $sendButton.attr('disabled', true)\n    }\n  }\n\n  send(e) {\n    e.preventDefault()\n    this.stimulate('ExternalBooking#submit').then(() => {\n      // console.log(\"submitted form\")\n    })\n  }\n\n  ///\n  // checks if a date has been chosen and set this.hasDate to true\n  // also enables the send button when the agreements have been checked also\n  ///\n  onCheck(event) {\n    const $target = $(event.currentTarget);\n\n    const $button = $(this.buttonTarget)\n    const $form = $button.closest(\"form\");\n    let action = `${this.formAction}?booked_appointment=${$target.val()}`\n    // console.log(\"action: \", action)\n    $form.attr(\"action\", action)\n    this.hasDate = true\n    if(this.agreementsChecked) {\n      $button.attr(\"disabled\", false)\n    }\n  }\n\n  ///\n  // checks if all agreements have been checked\n  // also enables the send button when a date has been selected so far\n  ///\n  checkAgreements() {\n    // console.log(\"agreement check: \", this.agreementChecks)\n    this.agreementsChecked = this.agreementChecks.every((agreement) => $(agreement).prop(\"checked\"))\n    if(this.hasDate) {\n      const $button = $(this.buttonTarget)\n      if(this.agreementChecks.length > 0) {\n        $button.attr('disabled', !this.agreementsChecked)\n      } else {\n        $button.attr('disabled', false)\n      }\n    }\n  }\n\n}", "import ApplicationController from './application_controller'\nimport Sortable from 'sortablejs'\n\nexport default class extends ApplicationController {\n\n  static values = {\n    init: String\n  }\n\n  initialize() {\n    super.initialize();\n\n    this.initializers = {\n      collapsible: this.initializeCollapsibles\n    }\n    this.listenersSet = []\n  }\n\n  connect() {\n    super.connect();\n    const self = this\n    const initMethods = this.initValue.split(\" \");\n\n    initMethods.forEach(function (initializer, index) {\n      console.log(\"processing initializer: \", initializer)\n      if (initializer == \"\") {return};\n      self.initializers[initializer].bind(self)()\n    })\n  }\n\n  initializeCollapsibles() {\n    this.logInfo('initialize Collapsibles')\n    // 1) find all collapse buttons\n    const collapseButtons = $(this.element).find('[data-bs-toggle=\"collapse\"]')\n    // console.log(\"collapse buttons: \", collapseButtons)\n    collapseButtons.each(function (index) {\n      const $collapseButton = $(this)\n      const $toggleArea = $($collapseButton.data('bs-target'))\n      // console.log(\"collapse area: \", $toggleArea)\n      $toggleArea.on(\"shown.bs.collapse\", function () {\n        // console.log('collapsed')\n        $collapseButton.addClass('collapsed')\n      })\n      $toggleArea.on(\"hidden.bs.collapse\", function () {\n        // console.log('hidden: ', $collapseButton)\n        $collapseButton.removeClass('collapsed')\n      })\n    })\n  }\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 StimulusReflex from 'stimulus_reflex'\n\nexport default class extends Controller {\n  connect() {\n    StimulusReflex.register(this)\n  }\n\n  toggleMode(event) {\n    const isRemoveMode = event.target.value === 'remove'\n    const addSection = document.getElementById('tag_input_section')\n    const removeSection = document.getElementById('tag_remove_section')\n    \n    if (isRemoveMode) {\n      // Show remove section, hide add section\n      addSection.classList.add('d-none')\n      removeSection.classList.remove('d-none')\n      \n      // Load common tags via Reflex\n      const userIds = document.getElementById('bulk_tag_user_ids').value\n      if (userIds) {\n        this.stimulate('BulkTagReflex#load_common_tags', { \n          userIds: userIds,\n          serializeForm: false \n        })\n      }\n    } else {\n      // Show add section, hide remove section\n      addSection.classList.remove('d-none')\n      removeSection.classList.add('d-none')\n    }\n  }\n\n  updateTagList() {\n    // Get all checked tags\n    const checkboxes = document.querySelectorAll('#common_tags_container input[type=\"checkbox\"]:checked')\n    const selectedTags = Array.from(checkboxes).map(cb => cb.value)\n    \n    // Update hidden field\n    const hiddenField = document.getElementById('bulk_tag_list_hidden')\n    if (hiddenField) {\n      hiddenField.value = selectedTags.join(',')\n    }\n  }\n}\n\n", "import { Controller } from \"@hotwired/stimulus\"\nimport StimulusReflex from 'stimulus_reflex'\n\nexport default class extends Controller {\n  static targets = [\"userIds\"]\n\n  connect() {\n    StimulusReflex.register(this)\n    \n    // Set initial state: add mode is default, so disable remove field\n    const removeTagField = document.getElementById('bulk_tag_list_hidden')\n    if (removeTagField) {\n      removeTagField.disabled = true\n    }\n  }\n\n  toggleMode(event) {\n    const isRemoveMode = event.target.value === 'remove'\n    const addSection = document.getElementById('tag_input_section')\n    const removeSection = document.getElementById('tag_remove_section')\n    \n    // Get the hidden fields from both sections\n    const addTagField = addSection.querySelector('[data-tag-target=\"input\"]')\n    const removeTagField = document.getElementById('bulk_tag_list_hidden')\n    \n    if (isRemoveMode) {\n      // Show remove section, hide add section\n      addSection.classList.add('d-none')\n      removeSection.classList.remove('d-none')\n      \n      // Disable add field, enable remove field\n      if (addTagField) addTagField.disabled = true\n      if (removeTagField) removeTagField.disabled = false\n      \n      // Load common tags via Reflex\n      const userIds = this.userIdsTarget.value\n      if (userIds) {\n        this.stimulate('BulkTagReflex#load_common_tags', userIds)\n      }\n    } else {\n      // Show add section, hide remove section\n      addSection.classList.remove('d-none')\n      removeSection.classList.add('d-none')\n      \n      // Enable add field, disable remove field\n      if (addTagField) addTagField.disabled = false\n      if (removeTagField) removeTagField.disabled = true\n    }\n  }\n\n  updateTagList() {\n    // Get all checked tags\n    const checkboxes = document.querySelectorAll('#common_tags_container input[type=\"checkbox\"]:checked')\n    const selectedTags = Array.from(checkboxes).map(cb => cb.value)\n    \n    // Update hidden field\n    const hiddenField = document.getElementById('bulk_tag_list_hidden')\n    if (hiddenField) {\n      hiddenField.value = selectedTags.join(',')\n    }\n  }\n}\n\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\n  ///\n  // handles the selection of a card element by adding or removing the \"selected\" CSS class, \n  // and updating the border color and background color of the selected card based on its data attributes.\n  ///\n  selected(event) {\n    if($(event.target).closest(\"a\").length > 0 && event.target != event.currentTarget) {\n      // do nothing should not interest you!\n      console.log($(event.target).closest(\"a\"))\n    } else {\n      event.stopPropagation()\n      event.preventDefault()\n      let $currentTarget = $(event.currentTarget)\n\n      if($currentTarget.data('target')) {\n        console.log($currentTarget.data('target'))\n        $currentTarget = $(`#${$currentTarget.data('target')}`)\n      }\n\n      const hasClass = $currentTarget.hasClass(\"selected\")\n\n      $(\".card.selected\").css({\n        \"border-color\": \"\",\n        \"background-color\": \"\"\n      })\n      $(\".card.selected\").removeClass(\"selected\")\n      if (!hasClass) {\n        $currentTarget.addClass(\"selected\")\n        const color = $currentTarget.attr(\"data-color\")\n        const backgroundColor = $currentTarget.attr(\"data-background-color\")\n        if (color) {\n          $currentTarget.css({\n            \"border-color\": color,\n          })\n        }\n        if(backgroundColor) {\n          $currentTarget.css({\n            \"background-color\": backgroundColor,\n          })\n        }\n        let $groupCard = $currentTarget.closest(\".card.group-definition-item\").first()\n        selectGroupCard($groupCard)\n      }\n    }\n  }\n\n  ///\n  // handles the selection of a group card element by adding or removing the \"selected\" CSS class,\n  // and updating the border color and background color of the selected card based on its data attributes.\n  ///\n  groupSelected(event) {\n    event.stopPropagation()\n    event.preventDefault()\n    let $currentTarget = $(event.currentTarget)\n    let $groupCard = $currentTarget.closest(\".card.group-definition-item\").first()\n\n    // const hasClass = $groupCard.hasClass(\"selected\")\n\n    selectGroupCard($groupCard)\n  }\n\n}\n\nfunction selectGroupCard($groupCard) {\n  $(\".card.group-definition-item\").css({\n    \"border-color\": \"\",\n    \"background-color\": \"\"\n  })\n  // $(\".card.group-definition-item.selected\").removeClass(\"selected\")\n  // $groupCard.addClass(\"selected\")\n  const color = $groupCard.attr(\"data-color\")\n  const backgroundColor = $groupCard.attr(\"data-background-color\")\n  if (color) {\n    $groupCard.css({\n      \"border-color\": color,\n    })\n  }\n  if (backgroundColor) {\n    $groupCard.css({\n      \"background-color\": backgroundColor,\n    })\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  // Configuration - scale factors to make preview larger and more readable\n  // These factors are NOT related to page ratios - they're for better readability\n  static PORTRAIT_SCALE = 2.0   // Makes portrait preview larger for better readability\n  static LANDSCAPE_SCALE = 1.5  // Makes landscape preview larger for better readability\n  \n  static targets = [\"draggableElement\", \"properties\", \"selectedElementProps\", \"selectedElementName\", \"xInput\", \"yInput\", \"widthInput\", \"heightInput\", \"fontFamilyInput\", \"fontSizeInput\", \"colorInput\", \"textAlignInput\", \"verticalAlignInput\", \"fontWeightInput\", \"styleProperties\", \"unusedElements\", \"elementPill\", \"i18nKeyInput\", \"i18nProperties\", \"fixedTextInput\", \"fixedTextProperties\", \"verificationUrlProperties\", \"verificationUrlShowLabelInput\", \"certificateTextScaling\", \"recipientScaleInput\", \"recipientScaleResult\", \"multiLineScaling\", \"mainScaleInput\", \"mainScaleResult\", \"subScaleInput\", \"subScaleResult\", \"showDividerInput\"]\n  static values = { templateId: Number, updateUrl: String }\n\n  initialize() {\n    super.initialize()\n    // useReflex is already set to true in ApplicationController\n  }\n\n  // Get current scale factor based on orientation\n  get currentScale() {\n    const container = this.element.querySelector('.certificate-preview-container')\n    if (!container) return this.constructor.PORTRAIT_SCALE\n    \n    const containerWidth = parseInt(container.style.width) || 420\n    return containerWidth >= 500 ? this.constructor.LANDSCAPE_SCALE : this.constructor.PORTRAIT_SCALE\n  }\n\n  get containerToPdfScale() {\n    const container = this.element.querySelector('.certificate-preview-container')\n    if (!container) return 1.0\n    \n    // Get actual container size and PDF size\n    const containerWidth = parseFloat(container.style.width) || container.offsetWidth\n    const pdfWidth = parseFloat(container.dataset.width)\n    \n    // Calculate the scale factor from PDF points to container pixels (inverted)\n    return pdfWidth / containerWidth\n  }\n\n  get totalFontScale() {\n    // Combine preview scaling and container-to-PDF scaling\n    return this.currentScale * this.containerToPdfScale\n  }\n\n  connect() {\n    super.connect() // This is crucial - registers StimulusReflex!\n    \n    try {\n      this.selectedElement = null\n      this.isDragging = false\n      this.isResizing = false\n      this.startPosition = { x: 0, y: 0 }\n      this.startElementPosition = { x: 0, y: 0 }\n      this.startElementSize = { width: 0, height: 0 }\n      this.resizeDirection = null\n      \n      // Initialize I18n fallback\n      if (typeof window.I18n === 'undefined') {\n        window.I18n = { t: (key) => key }\n      }\n      \n      this.applyPreviewScaling()\n      this.initializeDraggableElements()\n      this.setupContainerEvents()\n      this.setupElementPills()\n      \n    } catch (error) {\n      console.error('Error initializing certificate layout editor:', error)\n    }\n  }\n\n  disconnect() {\n    this.resetPropertiesPosition()\n    super.disconnect()\n  }\n\n\n\n  applyPreviewScaling() {\n    const container = this.element.querySelector('.certificate-preview-container')\n    if (container) {\n      const scale = this.currentScale\n      container.style.transform = `scale(${scale})`\n      container.style.transformOrigin = 'top left'\n      // Add margin to account for the scaling\n      const scaledHeight = container.offsetHeight * scale\n      container.style.marginBottom = `${scaledHeight - container.offsetHeight + 20}px`\n    }\n  }\n\n  initializeDraggableElements() {\n    this.draggableElementTargets.forEach((element, index) => {\n      this.makeElementDraggable(element)\n      this.makeElementResizable(element)\n      this.makeElementSelectable(element)\n      \n      // Ensure element has the correct positioning\n      this.ensureElementPositioning(element)\n    })\n  }\n\n  ensureElementPositioning(element) {\n    const x = parseFloat(element.dataset.x || 0)\n    const y = parseFloat(element.dataset.y || 0)\n    const width = parseFloat(element.dataset.width || 20)\n    const height = parseFloat(element.dataset.height || 10)\n    \n    element.style.position = 'absolute'\n    element.style.left = `${x}%`\n    element.style.top = `${y}%`\n    element.style.width = `${width}%`\n    element.style.height = `${height}%`\n    \n    // Update dataset to ensure consistency\n    element.dataset.x = x\n    element.dataset.y = y\n    element.dataset.width = width\n    element.dataset.height = height\n    \n    // Apply CSS styling for text elements\n    const elementId = element.dataset.elementId\n    if (elementId !== 'tenant_logo') {\n      const fontFamily = element.dataset.fontFamily || 'Open Sans'\n      const fontSize = parseFloat(element.dataset.fontSize) || 22\n      const color = element.dataset.color || '#000000'\n      const textAlign = element.dataset.textAlign || 'left'\n      const verticalAlign = element.dataset.verticalAlign || 'top'\n      const fontWeight = element.dataset.fontWeight || 'normal'\n      \n      // Ensure data attributes are set\n      element.dataset.fontFamily = fontFamily\n      element.dataset.fontSize = fontSize\n      element.dataset.color = color\n      element.dataset.textAlign = textAlign\n      element.dataset.verticalAlign = verticalAlign\n      element.dataset.fontWeight = fontWeight\n      \n      // Handle certificate_text with proper scaling like other elements\n      if (elementId === 'certificate_text') {\n        const contentElement = element.querySelector('.element-content')\n        if (contentElement) {\n          // Ensure the internal layout is properly applied\n          contentElement.style.setProperty('display', 'flex', 'important')\n          contentElement.style.setProperty('flex-direction', 'column', 'important')\n          contentElement.style.setProperty('height', '100%', 'important')\n          contentElement.style.setProperty('justify-content', 'flex-start', 'important')\n          \n          // Apply systematic scaling to all text elements within certificate_text with configurable scaling\n          const baseFontSize = parseFloat(element.dataset.fontSize) || fontSize\n          const recipientScale = parseFloat(element.dataset.recipientScale) || 120\n          const recipientFontSize = Math.round(baseFontSize * recipientScale / 100)\n          \n          // Apply base font size to regular text elements (scaled for container)\n          const baseElements = contentElement.querySelectorAll('.text-part-1, .text-part-2, .text-part-3')\n          baseElements.forEach(textEl => {\n            textEl.style.setProperty('font-size', `${baseFontSize / this.totalFontScale}px`, 'important')\n          })\n          \n          // Apply recipient scaling to recipient name (scaled for container)\n          const recipientElement = contentElement.querySelector('.recipient-name')\n          if (recipientElement) {\n            recipientElement.style.setProperty('font-size', `${recipientFontSize / this.totalFontScale}px`, 'important')\n            recipientElement.style.setProperty('font-weight', 'bold', 'important')\n          }\n        }\n      }\n      // Handle special text elements with main_* properties\n      else if (['issuer_text', 'creation_date_text', 'valid_until_text'].includes(elementId)) {\n        // Use main_* properties if they exist in dataset, otherwise use regular properties\n        const mainFontFamily = element.dataset.mainFontFamily || fontFamily\n        const mainFontSize = parseFloat(element.dataset.mainFontSize) || fontSize\n        const mainColor = element.dataset.mainColor || color\n        \n        // Apply the styling to the main text element with configurable scaling\n        const mainTextElement = element.querySelector('.element-content .main-text')\n        if (mainTextElement) {\n          // Use scaling values from template data for consistent initial display\n          const baseFontSize = parseFloat(element.dataset.fontSize) || fontSize\n          const mainScale = parseFloat(element.dataset.mainScale) || 100\n          const scaledMainFontSize = Math.round(baseFontSize * mainScale / 100)\n          \n          mainTextElement.style.setProperty('font-family', `'${mainFontFamily}', sans-serif`, 'important')\n          mainTextElement.style.setProperty('font-size', `${scaledMainFontSize / this.totalFontScale}px`, 'important')\n          mainTextElement.style.setProperty('color', mainColor, 'important')\n          mainTextElement.style.setProperty('font-weight', fontWeight, 'important')\n          mainTextElement.style.setProperty('background', 'transparent', 'important')\n          mainTextElement.style.setProperty('padding', '0', 'important')\n        }\n        \n        // Apply sub-text styling with configurable scaling\n        const subTextElement = element.querySelector('.element-content .sub-text')\n        if (subTextElement) {\n          // Use scaling values from template data, fallback to defaults\n          const baseFontSize = parseFloat(element.dataset.fontSize) || fontSize\n          const mainScale = parseFloat(element.dataset.mainScale) || 100\n          const subScale = parseFloat(element.dataset.subScale) || 80\n          const subFontSize = Math.round(baseFontSize * subScale / 100)\n          \n          subTextElement.style.setProperty('font-family', \"'Open Sans', sans-serif\", 'important')\n          subTextElement.style.setProperty('font-size', `${subFontSize / this.totalFontScale}px`, 'important')\n          subTextElement.style.setProperty('color', '#666', 'important')\n          subTextElement.style.setProperty('font-weight', 'normal', 'important')\n        }\n        \n        // Apply container alignment for multi-line elements  \n        const contentElement = element.querySelector('.element-content')\n        if (contentElement) {\n          // Set up the .element-content as a flex container to position the multi-line element\n          contentElement.style.setProperty('display', 'flex', 'important')\n          contentElement.style.setProperty('flex-direction', 'column', 'important')\n          contentElement.style.setProperty('height', '100%', 'important')\n          \n          // Apply vertical alignment to the container\n          switch (verticalAlign) {\n            case 'middle':\n              contentElement.style.setProperty('justify-content', 'center', 'important')\n              break\n            case 'top':\n              contentElement.style.setProperty('justify-content', 'flex-start', 'important')\n              break\n            case 'bottom':\n              contentElement.style.setProperty('justify-content', 'flex-end', 'important')\n              break\n            default:\n              contentElement.style.setProperty('justify-content', 'flex-end', 'important')\n          }\n          \n          // Apply text alignment directly to contentElement (which contains the multi-line element)\n          switch (textAlign) {\n            case 'center':\n              contentElement.style.setProperty('align-items', 'center', 'important')\n              break\n            case 'right':\n              contentElement.style.setProperty('align-items', 'flex-end', 'important')\n              break\n            default: // 'left'\n              contentElement.style.setProperty('align-items', 'flex-start', 'important')\n          }\n          \n          // Adjust line positioning based on vertical alignment - search directly in contentElement\n          const dividerLine = contentElement.querySelector('.divider-line')\n          if (dividerLine) {\n            let linePosition\n            \n            // When vertically aligned to bottom, the line should be closer to the text\n            // When aligned to top/middle, use the original position\n            switch (verticalAlign) {\n              case 'bottom':\n                // For bottom alignment, position line closer to text (less space)\n                linePosition = '8px'\n                break\n              case 'middle':\n                // For middle alignment, use medium spacing\n                linePosition = '15px'\n                break\n              default: // 'top'\n                // For top alignment, use original spacing\n                linePosition = '22px'\n                break\n            }\n            \n            dividerLine.style.setProperty('bottom', linePosition, 'important')\n          }\n        }\n      } else {\n        // Apply styling to regular text elements\n        const contentElement = element.querySelector('.element-content')\n        if (contentElement) {\n          // Reset and apply basic styles - use setProperty for !important\n          contentElement.style.setProperty('width', '100%', 'important')\n          contentElement.style.setProperty('height', '100%', 'important')\n          contentElement.style.setProperty('overflow', 'hidden', 'important')\n          contentElement.style.setProperty('padding', '0', 'important')\n          contentElement.style.setProperty('box-sizing', 'border-box', 'important')\n          contentElement.style.setProperty('position', 'relative', 'important')\n          \n                  // Apply font properties (scaled for container)\n        contentElement.style.setProperty('font-family', `'${fontFamily}', sans-serif`, 'important')\n        contentElement.style.setProperty('font-size', `${fontSize / this.totalFontScale}px`, 'important')\n          contentElement.style.setProperty('color', color, 'important')\n          contentElement.style.setProperty('font-weight', fontWeight, 'important')\n          contentElement.style.setProperty('text-align', textAlign, 'important')\n          \n          // Handle vertical alignment with flexbox (use flex for all alignments)\n          contentElement.style.setProperty('display', 'flex', 'important')\n          contentElement.style.setProperty('flex-direction', 'column', 'important')\n          \n          switch (verticalAlign) {\n            case 'middle':\n              contentElement.style.setProperty('justify-content', 'center', 'important')\n              break\n            case 'bottom':\n              contentElement.style.setProperty('justify-content', 'flex-end', 'important')\n              break\n            default: // 'top'\n              contentElement.style.setProperty('justify-content', 'flex-start', 'important')\n          }\n        }\n      }\n    }\n  }\n\n  setupContainerEvents() {\n    // Click outside to deselect\n    const container = this.element.querySelector('.certificate-preview-container')\n    if (container) {\n      container.addEventListener('click', (e) => {\n        if (e.target === container || e.target.classList.contains('certificate-elements')) {\n          this.deselectAll()\n        }\n      })\n    }\n  }\n\n  deselectAll() {\n    this.draggableElementTargets.forEach(el => {\n      el.classList.remove('selected')\n    })\n    this.selectedElement = null\n    this.selectedElementPropsTarget.style.display = 'none'\n    \n    // Hide the entire properties panel\n    if (this.hasPropertiesTarget) {\n      this.propertiesTarget.style.display = 'none'\n    }\n  }\n\n  makeElementDraggable(element) {\n    element.addEventListener('mousedown', (e) => {\n      if (e.target.classList.contains('resize-handle')) return\n      if (e.target.classList.contains('element-remove-btn')) return\n      if (e.target.hasAttribute('data-reflex')) return // Don't interfere with Stimulus Reflex\n      \n      this.selectElement(element)\n      this.startDragging(e, element)\n      e.preventDefault() // Prevent text selection\n    })\n    \n    // Prevent context menu on right click\n    element.addEventListener('contextmenu', (e) => {\n      e.preventDefault()\n    })\n  }\n\n  makeElementResizable(element) {\n    const resizeHandles = element.querySelectorAll('.resize-handle')\n    resizeHandles.forEach(handle => {\n      handle.addEventListener('mousedown', (e) => {\n        e.stopPropagation()\n        this.startResizing(e, element, handle.classList[1]) // Get direction class\n        e.preventDefault()\n      })\n    })\n  }\n\n  makeElementSelectable(element) {\n    element.addEventListener('click', (e) => {\n      if (e.target.classList.contains('element-remove-btn')) return\n      if (e.target.hasAttribute('data-reflex')) return // Don't interfere with Stimulus Reflex\n      \n      e.stopPropagation()\n      this.selectElement(element)\n    })\n    \n    // Add visual feedback\n    element.style.cursor = 'grab'\n  }\n\n  selectElement(element) {\n    // If we're selecting a different element and properties panel is floating, reset it first\n    if (this.selectedElement && this.selectedElement !== element) {\n      this.resetPropertiesPosition()\n    }\n    \n    // Remove selection from other elements\n    this.draggableElementTargets.forEach(el => {\n      el.classList.remove('selected')\n    })\n\n    // Add selection to current element\n    element.classList.add('selected')\n    this.selectedElement = element\n\n    // Update properties panel (this will automatically scroll it into view)\n    this.updatePropertiesPanel(element)\n  }\n\n  updatePropertiesPanel(element) {\n    const elementId = element.dataset.elementId\n    const x = parseFloat(element.dataset.x)\n    const y = parseFloat(element.dataset.y)\n    const width = parseFloat(element.dataset.width)\n    const height = parseFloat(element.dataset.height)\n    const fontFamily = element.dataset.fontFamily || 'Open Sans'\n    const fontSize = parseFloat(element.dataset.fontSize) || 22\n    const color = element.dataset.color || '#000000'\n    const textAlign = element.dataset.textAlign || 'left'\n    const verticalAlign = element.dataset.verticalAlign || 'top'\n    const fontWeight = element.dataset.fontWeight || 'normal'\n    const i18nKey = element.dataset.i18nKey || 'shared.certificate_fixed_texts.certificate'\n\n    const displayName = this.getElementDisplayName(elementId)\n    \n    this.selectedElementNameTarget.value = displayName\n    this.xInputTarget.value = x.toFixed(1)\n    this.yInputTarget.value = y.toFixed(1)\n    this.widthInputTarget.value = width.toFixed(1)\n    this.heightInputTarget.value = height.toFixed(1)\n    \n    // Update CSS properties inputs (only for text elements, not tenant_logo)\n    const isTextElement = elementId !== 'tenant_logo'\n    this.stylePropertiesTarget.style.display = isTextElement ? 'block' : 'none'\n    \n    // Show i18n properties for all i18n_text elements (including numbered ones)\n    const isI18nElement = elementId.match(/^i18n_text(__\\d+)?$/)\n    if (this.hasI18nPropertiesTarget) {\n      this.i18nPropertiesTarget.style.display = isI18nElement ? 'block' : 'none'\n    }\n\n    // Show fixed text properties for all fixed_text elements (including numbered ones)\n    const isFixedTextElement = elementId.match(/^fixed_text(__\\d+)?$/)\n    if (this.hasFixedTextPropertiesTarget) {\n      this.fixedTextPropertiesTarget.style.display = isFixedTextElement ? 'block' : 'none'\n    }\n\n    // Show verification URL properties\n    const isVerificationUrlElement = elementId === 'verification_url'\n    if (this.hasVerificationUrlPropertiesTarget) {\n      this.verificationUrlPropertiesTarget.style.display = isVerificationUrlElement ? 'block' : 'none'\n    }\n\n    // Show scaling properties for certificate_text\n    const isCertificateTextElement = elementId === 'certificate_text'\n    if (this.hasCertificateTextScalingTarget) {\n      this.certificateTextScalingTarget.style.display = isCertificateTextElement ? 'block' : 'none'\n    }\n\n    // Show scaling properties for multi-line elements\n    const isMultiLineElement = ['issuer_text', 'creation_date_text', 'valid_until_text'].includes(elementId)\n    if (this.hasMultiLineScalingTarget) {\n      this.multiLineScalingTarget.style.display = isMultiLineElement ? 'block' : 'none'\n    }\n    \n    if (isTextElement) {\n      this.fontFamilyInputTarget.value = fontFamily\n      this.fontSizeInputTarget.value = fontSize\n      this.colorInputTarget.value = color\n      this.textAlignInputTarget.value = textAlign\n      this.verticalAlignInputTarget.value = verticalAlign\n      this.fontWeightInputTarget.value = fontWeight\n      \n      // Set scaling values and update pixel size display\n      if (isCertificateTextElement && this.hasRecipientScaleInputTarget) {\n        const recipientScale = parseFloat(element.dataset.recipientScale) || 120\n        this.recipientScaleInputTarget.value = recipientScale\n        this.updateRecipientScaleResult(fontSize, recipientScale)\n      }\n      \n      if (isMultiLineElement) {\n        if (this.hasMainScaleInputTarget) {\n          const mainScale = parseFloat(element.dataset.mainScale) || 100\n          this.mainScaleInputTarget.value = mainScale\n          this.updateMainScaleResult(fontSize, mainScale)\n        }\n        if (this.hasSubScaleInputTarget) {\n          const subScale = parseFloat(element.dataset.subScale) || 80\n          this.subScaleInputTarget.value = subScale\n          this.updateSubScaleResult(fontSize, subScale)\n        }\n        if (this.hasShowDividerInputTarget) {\n          this.showDividerInputTarget.checked = element.dataset.showDivider !== 'false'\n        }\n      }\n    }\n    \n    // Set i18n key for all i18n_text elements (including numbered ones)\n    if (isI18nElement && this.hasI18nKeyInputTarget) {\n      this.i18nKeyInputTarget.value = i18nKey\n    }\n    \n    // Set fixed text for all fixed_text elements (including numbered ones)\n    if (isFixedTextElement && this.hasFixedTextInputTarget) {\n      const fixedText = element.dataset.fixedText || 'Custom Text'\n      this.fixedTextInputTarget.value = fixedText\n    }\n\n    // Set show_label for verification_url\n    if (isVerificationUrlElement && this.hasVerificationUrlShowLabelInputTarget) {\n      this.verificationUrlShowLabelInputTarget.checked = element.dataset.showLabel === 'true'\n    }\n\n    this.selectedElementPropsTarget.style.display = 'block'\n    \n    // Show the entire properties panel\n    if (this.hasPropertiesTarget) {\n      this.propertiesTarget.style.display = 'block'\n    }\n    \n    // Position properties panel in current viewport\n    setTimeout(() => {\n      this.positionPropertiesInViewport()\n    }, 50)\n  }\n\n  positionPropertiesInViewport() {\n    const propertiesPanel = this.propertiesTarget\n    if (!propertiesPanel) return\n\n    // Check if already floating - if so, don't recheck\n    const propertiesContainer = propertiesPanel.closest('.properties-container')\n    if (propertiesContainer && propertiesContainer.dataset.floating === 'true') {\n      return\n    }\n\n    const rect = propertiesPanel.getBoundingClientRect()\n    const viewportHeight = window.innerHeight\n    const visibleHeight = Math.max(0, Math.min(rect.bottom, viewportHeight) - Math.max(rect.top, 0))\n    const panelHeight = rect.height\n    const visibilityRatio = visibleHeight / panelHeight\n    \n    // If less than 80% of the properties panel is visible, make it floating\n    if (visibilityRatio < 0.8) {\n      this.makePropertiesFloating()\n    }\n  }\n\n  makePropertiesFloating() {\n    // Reset any existing floating state first\n    this.resetPropertiesPosition()\n    \n    const propertiesContainer = this.propertiesTarget.closest('.properties-container')\n    const sidebarColumn = this.element.querySelector('.col-md-4')\n    \n    if (!propertiesContainer || !sidebarColumn) {\n      return\n    }\n\n    // Make sidebar column relative for absolute positioning\n    if (sidebarColumn.style.position !== 'relative') {\n      sidebarColumn.style.position = 'relative'\n    }\n\n    // Get current dimensions and viewport info\n    const currentRect = propertiesContainer.getBoundingClientRect()\n    const currentWidth = currentRect.width\n    const viewportHeight = window.innerHeight\n    // Find the sidebar column (Bootstrap col-md-4 that contains the properties)\n    const sidebarCol = this.element.querySelector('.col-md-4')\n    const sidebarRect = sidebarCol ? sidebarCol.getBoundingClientRect() : null\n    \n    // Calculate where to position the panel in viewport (fixed positioning)\n    const targetTopInViewport = Math.max(20, viewportHeight * 0.1) // 10% from top or minimum 20px\n    const targetRightInViewport = 20 // Simple: 20px from right edge of viewport\n\n    // Store original styles (but keep element in original container)\n    this.originalPropertiesStyles = {\n      position: propertiesContainer.style.position,\n      top: propertiesContainer.style.top,\n      right: propertiesContainer.style.right,\n      left: propertiesContainer.style.left,\n      width: propertiesContainer.style.width,\n      zIndex: propertiesContainer.style.zIndex,\n      maxHeight: propertiesContainer.style.maxHeight,\n      overflowY: propertiesContainer.style.overflowY,\n      transition: propertiesContainer.style.transition,\n      boxShadow: propertiesContainer.style.boxShadow,\n      backgroundColor: propertiesContainer.style.backgroundColor,\n      border: propertiesContainer.style.border,\n      borderRadius: propertiesContainer.style.borderRadius\n    }\n\n    // Apply floating styles with fixed positioning relative to viewport\n    propertiesContainer.style.setProperty('position', 'fixed', 'important')\n    propertiesContainer.style.setProperty('top', `${targetTopInViewport}px`, 'important')\n    propertiesContainer.style.setProperty('right', `${targetRightInViewport}px`, 'important')\n    propertiesContainer.style.setProperty('left', 'auto', 'important')\n    propertiesContainer.style.setProperty('width', `${Math.max(currentWidth, 320)}px`, 'important')\n    propertiesContainer.style.setProperty('z-index', '1000', 'important')\n    propertiesContainer.style.setProperty('max-height', `${viewportHeight - targetTopInViewport - 40}px`, 'important')\n    propertiesContainer.style.setProperty('overflow-y', 'auto', 'important')\n    propertiesContainer.style.setProperty('transition', 'all 0.3s ease', 'important')\n    propertiesContainer.style.setProperty('box-shadow', '0 4px 12px rgba(0,0,0,0.15)', 'important')\n    propertiesContainer.style.setProperty('background-color', '#ffffff', 'important')\n    propertiesContainer.style.setProperty('border', '1px solid #dee2e6', 'important')\n    propertiesContainer.style.setProperty('border-radius', '8px', 'important')\n    \n    // Mark as floating\n    propertiesContainer.dataset.floating = 'true'\n    \n    // Add event listeners to reset position\n    this.addResetListeners()\n  }\n\n  addResetListeners() {\n    // Track initial scroll position\n    this.initialScrollY = window.scrollY\n    \n    // Reset on significant scroll (200px threshold)\n    this.resetOnScroll = () => {\n      const scrollDelta = Math.abs(window.scrollY - this.initialScrollY)\n      if (scrollDelta > 200) {\n        this.resetPropertiesPosition()\n      }\n    }\n    window.addEventListener('scroll', this.resetOnScroll, { passive: true })\n    \n    // Reset on ESC key\n    this.resetOnEscape = (e) => {\n      if (e.key === 'Escape') {\n        this.resetPropertiesPosition()\n      }\n    }\n    document.addEventListener('keydown', this.resetOnEscape)\n    \n    // Reset on click outside the floating panel\n    this.resetOnClickOutside = (e) => {\n      const propertiesContainer = this.propertiesTarget?.closest('.properties-container')\n      if (propertiesContainer && propertiesContainer.dataset.floating === 'true') {\n        // Check if click is outside the floating panel\n        if (!propertiesContainer.contains(e.target)) {\n          this.resetPropertiesPosition()\n        }\n      }\n    }\n    document.addEventListener('click', this.resetOnClickOutside)\n  }\n\n  resetPropertiesPosition() {\n    const propertiesContainer = this.propertiesTarget?.closest('.properties-container')\n    if (!propertiesContainer || propertiesContainer.dataset.floating !== 'true') return\n\n    // Remove floating state\n    delete propertiesContainer.dataset.floating\n    \n    // Restore original styles\n    if (this.originalPropertiesStyles) {\n      Object.keys(this.originalPropertiesStyles).forEach(key => {\n        propertiesContainer.style[key] = this.originalPropertiesStyles[key]\n      })\n      this.originalPropertiesStyles = null\n    }\n    \n    // Clean up event listeners\n    if (this.resetOnScroll) {\n      window.removeEventListener('scroll', this.resetOnScroll)\n      this.resetOnScroll = null\n    }\n    \n    if (this.resetOnEscape) {\n      document.removeEventListener('keydown', this.resetOnEscape)\n      this.resetOnEscape = null\n    }\n    \n    if (this.resetOnClickOutside) {\n      document.removeEventListener('click', this.resetOnClickOutside)\n      this.resetOnClickOutside = null\n    }\n  }\n\n  getElementDisplayName(elementId) {\n    const baseElementId = elementId.split('__')[0]; // Extract base element type\n    \n    // Use system translations from shared.pdf_certificate_elements\n    // This should match the YAML structure\n    if (window.I18n && window.I18n.t) {\n      const translationKey = `shared.pdf_certificate_elements.${baseElementId}`;\n      const translation = window.I18n.t(translationKey);\n      // Only use translation if it's not the same as the key (meaning it was found)\n      if (translation && translation !== translationKey) {\n        return translation;\n      }\n    }\n    \n    // Fallback to hardcoded names if translations not available\n    const names = {\n      'certificate_title': 'Certificate Title',\n      'journey_name': 'Journey Name',\n      'recipient_name': 'Recipient Name',\n      'certificate_text': 'Certificate Text',\n      'creation_date': 'Creation Date',\n      'creation_date_text': 'Creation Date Text',\n      'valid_until': 'Valid Until',\n      'valid_until_text': 'Valid Until Text',\n      'tenant_logo': 'Logo',\n      'issuer_name': 'Issuer Name',\n      'issuer_text': 'Issuer Text',\n      'i18n_text': 'I18N Text'\n    };\n    \n    return names[baseElementId] || baseElementId.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n  }\n\n  startDragging(e, element) {\n    this.isDragging = true\n    this.startPosition = { x: e.clientX, y: e.clientY }\n    this.startElementPosition = {\n      x: parseFloat(element.dataset.x),\n      y: parseFloat(element.dataset.y)\n    }\n\n    // Add dragging class for visual feedback\n    element.classList.add('dragging')\n    document.body.style.cursor = 'grabbing'\n    document.body.style.userSelect = 'none'\n\n    // Bind events to document for better mouse tracking\n    this.boundHandleDragMove = this.handleDragMove.bind(this)\n    this.boundStopDragging = this.stopDragging.bind(this)\n    \n    document.addEventListener('mousemove', this.boundHandleDragMove)\n    document.addEventListener('mouseup', this.boundStopDragging)\n    \n    e.preventDefault()\n  }\n\n  handleDragMove(e) {\n    if (!this.isDragging || !this.selectedElement) return\n\n    const container = this.selectedElement.closest('.certificate-preview-container')\n    const containerRect = container.getBoundingClientRect()\n    \n    // Account for CSS transform scale\n    const scale = this.currentScale\n    const scaledWidth = containerRect.width / scale\n    const scaledHeight = containerRect.height / scale\n    \n    const deltaX = ((e.clientX - this.startPosition.x) / scaledWidth) * 100\n    const deltaY = ((e.clientY - this.startPosition.y) / scaledHeight) * 100\n\n    const newX = Math.max(0, Math.min(95, this.startElementPosition.x + deltaX))\n    const newY = Math.max(0, Math.min(95, this.startElementPosition.y + deltaY))\n\n    this.updateElementPosition(this.selectedElement, newX, newY)\n  }\n\n  stopDragging() {\n    this.isDragging = false\n    \n    // Remove visual feedback\n    if (this.selectedElement) {\n      this.selectedElement.classList.remove('dragging')\n      this.selectedElement.style.cursor = 'grab'\n    }\n    \n    document.body.style.cursor = ''\n    document.body.style.userSelect = ''\n    \n    // Remove event listeners\n    document.removeEventListener('mousemove', this.boundHandleDragMove)\n    document.removeEventListener('mouseup', this.boundStopDragging)\n  }\n\n  startResizing(e, element, direction) {\n    this.isResizing = true\n    this.resizeDirection = direction\n    this.startPosition = { x: e.clientX, y: e.clientY }\n    this.startElementPosition = {\n      x: parseFloat(element.dataset.x),\n      y: parseFloat(element.dataset.y)\n    }\n    this.startElementSize = {\n      width: parseFloat(element.dataset.width),\n      height: parseFloat(element.dataset.height)\n    }\n\n    document.addEventListener('mousemove', this.handleResizeMove.bind(this))\n    document.addEventListener('mouseup', this.stopResizing.bind(this))\n    \n    e.preventDefault()\n  }\n\n  handleResizeMove(e) {\n    if (!this.isResizing || !this.selectedElement) return\n\n    const container = this.selectedElement.closest('.certificate-preview-container')\n    const containerRect = container.getBoundingClientRect()\n    \n    // Account for CSS transform scale\n    const scale = this.currentScale\n    const scaledWidth = containerRect.width / scale\n    const scaledHeight = containerRect.height / scale\n    \n    const deltaX = ((e.clientX - this.startPosition.x) / scaledWidth) * 100\n    const deltaY = ((e.clientY - this.startPosition.y) / scaledHeight) * 100\n\n    this.updateElementSize(deltaX, deltaY)\n  }\n\n  updateElementSize(deltaX, deltaY) {\n    const direction = this.resizeDirection\n    let newX = this.startElementPosition.x\n    let newY = this.startElementPosition.y\n    let newWidth = this.startElementSize.width\n    let newHeight = this.startElementSize.height\n\n    // Handle horizontal resizing\n    if (direction.includes('e')) {\n      newWidth = Math.max(1, Math.min(100 - newX, this.startElementSize.width + deltaX))\n    } else if (direction.includes('w')) {\n      const maxDeltaX = this.startElementPosition.x\n      const effectiveDeltaX = Math.max(-maxDeltaX, Math.min(this.startElementSize.width - 1, deltaX))\n      newX = this.startElementPosition.x + effectiveDeltaX\n      newWidth = this.startElementSize.width - effectiveDeltaX\n    }\n\n    // Handle vertical resizing\n    if (direction.includes('s')) {\n      newHeight = Math.max(1, Math.min(100 - newY, this.startElementSize.height + deltaY))\n    } else if (direction.includes('n')) {\n      const maxDeltaY = this.startElementPosition.y\n      const effectiveDeltaY = Math.max(-maxDeltaY, Math.min(this.startElementSize.height - 1, deltaY))\n      newY = this.startElementPosition.y + effectiveDeltaY\n      newHeight = this.startElementSize.height - effectiveDeltaY\n    }\n\n    this.updateElementBounds(this.selectedElement, newX, newY, newWidth, newHeight)\n  }\n\n  stopResizing() {\n    this.isResizing = false\n    this.resizeDirection = null\n    \n    document.removeEventListener('mousemove', this.handleResizeMove.bind(this))\n    document.removeEventListener('mouseup', this.stopResizing.bind(this))\n  }\n\n  updateElementPosition(element, x, y) {\n    const width = parseFloat(element.dataset.width)\n    const height = parseFloat(element.dataset.height)\n    this.updateElementBounds(element, x, y, width, height)\n  }\n\n  updateElementBounds(element, x, y, width, height, skipPropertiesUpdate = false) {\n    element.dataset.x = x\n    element.dataset.y = y\n    element.dataset.width = width\n    element.dataset.height = height\n\n    element.style.left = `${x}%`\n    element.style.top = `${y}%`\n    element.style.width = `${width}%`\n    element.style.height = `${height}%`\n\n    // Update properties panel if this element is selected, but not if called from input changes\n    if (element === this.selectedElement && !skipPropertiesUpdate) {\n      this.updatePropertiesPanel(element)\n    }\n  }\n\n  updateElementFromInput() {\n    if (!this.selectedElement) return\n\n    const x = parseFloat(this.xInputTarget.value)\n    const y = parseFloat(this.yInputTarget.value)\n    const width = parseFloat(this.widthInputTarget.value)\n    const height = parseFloat(this.heightInputTarget.value)\n\n    // Skip properties panel update to avoid overwriting user input\n    this.updateElementBounds(this.selectedElement, x, y, width, height, true)\n    \n    // Update CSS properties for text elements\n    const elementId = this.selectedElement.dataset.elementId\n    if (elementId !== 'tenant_logo') {\n      this.updateElementStyling(this.selectedElement)\n    }\n    \n    // Update pixel size displays when font size changes\n    this.updateScaleResults()\n  }\n\n  updateElementStyling(element) {\n    if (!element || element.dataset.elementId === 'tenant_logo') return\n    \n    const elementId = element.dataset.elementId\n    const fontFamily = this.fontFamilyInputTarget.value\n    const fontSize = parseFloat(this.fontSizeInputTarget.value)\n    const color = this.colorInputTarget.value\n    const textAlign = this.textAlignInputTarget.value\n    const verticalAlign = this.verticalAlignInputTarget.value\n    const fontWeight = this.fontWeightInputTarget.value\n    \n    // Debug output to see what values we're getting\n    console.log(`Updating styling for ${elementId}:`, {\n      fontFamily, fontSize, color, textAlign, verticalAlign, fontWeight\n    })\n    \n    // Update element's data attributes\n    element.dataset.fontFamily = fontFamily\n    element.dataset.fontSize = fontSize\n    element.dataset.color = color\n    element.dataset.textAlign = textAlign\n    element.dataset.verticalAlign = verticalAlign\n    element.dataset.fontWeight = fontWeight\n    \n    // Update scaling data attributes\n    if (elementId === 'certificate_text' && this.hasRecipientScaleInputTarget) {\n      const recipientScale = parseFloat(this.recipientScaleInputTarget.value) || 120\n      element.dataset.recipientScale = recipientScale\n    }\n    \n    if (['issuer_text', 'creation_date_text', 'valid_until_text'].includes(elementId)) {\n      if (this.hasMainScaleInputTarget) {\n        const mainScale = parseFloat(this.mainScaleInputTarget.value) || 100\n        element.dataset.mainScale = mainScale\n      }\n      if (this.hasSubScaleInputTarget) {\n        const subScale = parseFloat(this.subScaleInputTarget.value) || 80\n        element.dataset.subScale = subScale\n      }\n    }\n    \n    // Handle certificate_text with configurable scaling for internal elements\n    if (elementId === 'certificate_text') {\n      const contentElement = element.querySelector('.element-content')\n      if (contentElement) {\n        // Ensure the internal layout is properly applied\n        contentElement.style.setProperty('display', 'flex', 'important')\n        contentElement.style.setProperty('flex-direction', 'column', 'important')\n        contentElement.style.setProperty('height', '100%', 'important')\n        contentElement.style.setProperty('justify-content', 'flex-start', 'important')\n        \n        // Get scaling values - use base font size from element data, not the input field\n        const baseFontSize = parseFloat(element.dataset.fontSize) || fontSize\n        const recipientScale = parseFloat(element.dataset.recipientScale) || 120\n        const recipientFontSize = Math.round(baseFontSize * recipientScale / 100)\n        \n        // Only apply font properties that need to be updated, preserve CSS structure\n        const allTextElements = contentElement.querySelectorAll('.text-part-1, .recipient-name, .text-part-2, .text-part-3')\n        allTextElements.forEach(textEl => {\n          // Only update font-family and color from the properties panel\n          textEl.style.setProperty('font-family', `'${fontFamily}', sans-serif`, 'important')\n          textEl.style.setProperty('color', color, 'important')\n        })\n        \n        // Apply recipient scaling only to the recipient name (scaled for container)\n        const recipientElement = contentElement.querySelector('.recipient-name')\n        if (recipientElement) {\n          recipientElement.style.setProperty('font-size', `${recipientFontSize / this.totalFontScale}px`, 'important')\n          recipientElement.style.setProperty('font-weight', 'bold', 'important')\n        }\n        \n        // Apply base font size to other elements (scaled for container)\n        const baseElements = contentElement.querySelectorAll('.text-part-1, .text-part-2, .text-part-3')\n        baseElements.forEach(textEl => {\n          textEl.style.setProperty('font-size', `${baseFontSize / this.totalFontScale}px`, 'important')\n        })\n        \n        // Preserve the semi-bold styling for certificate name span in text-part-3\n        const textPart3Span = contentElement.querySelector('.text-part-3 span')\n        if (textPart3Span) {\n          textPart3Span.style.setProperty('font-weight', '600', 'important')\n        }\n      }\n    }\n    // For special text elements with configurable main/sub scaling\n    else if (['issuer_text', 'creation_date_text', 'valid_until_text'].includes(elementId)) {\n      // Get scaling values - use base font size from element data, not the input field\n      const baseFontSize = parseFloat(element.dataset.fontSize) || fontSize\n      const mainScale = parseFloat(element.dataset.mainScale) || 100\n      const subScale = parseFloat(element.dataset.subScale) || 80\n      \n      const mainFontSize = Math.round(baseFontSize * mainScale / 100)\n      const subFontSize = Math.round(baseFontSize * subScale / 100)\n      \n      // Use main_* properties for issuer_text, regular properties for others\n      const mainFontFamily = element.dataset.mainFontFamily || fontFamily\n      const mainColor = element.dataset.mainColor || color\n      \n      // Apply the styling to the main text element\n      const mainTextElement = element.querySelector('.element-content .main-text')\n      if (mainTextElement) {\n        if (elementId === 'issuer_text') {\n          mainTextElement.style.setProperty('font-family', `'${mainFontFamily}', cursive`, 'important')\n          mainTextElement.style.setProperty('color', mainColor, 'important')\n        } else {\n          mainTextElement.style.setProperty('font-family', `'${fontFamily}', sans-serif`, 'important')\n          mainTextElement.style.setProperty('color', color, 'important')\n        }\n        mainTextElement.style.setProperty('font-size', `${mainFontSize / this.totalFontScale}px`, 'important')\n        mainTextElement.style.setProperty('font-weight', fontWeight, 'important')\n        mainTextElement.style.setProperty('background', 'transparent', 'important')\n        mainTextElement.style.setProperty('padding', '0', 'important')\n      }\n      \n      // Apply sub-text styling with configurable scaling\n      const subTextElement = element.querySelector('.element-content .sub-text')\n      if (subTextElement) {\n        subTextElement.style.setProperty('font-family', \"'Open Sans', sans-serif\", 'important')\n        subTextElement.style.setProperty('font-size', `${subFontSize / this.totalFontScale}px`, 'important')\n        subTextElement.style.setProperty('color', '#666', 'important')\n        subTextElement.style.setProperty('font-weight', 'normal', 'important')\n      }\n      \n      // Apply container alignment for multi-line elements\n      const contentElement = element.querySelector('.element-content')\n      if (contentElement) {\n        // Set up the .element-content as a flex container to position the multi-line element\n        contentElement.style.setProperty('display', 'flex', 'important')\n        contentElement.style.setProperty('flex-direction', 'column', 'important')\n        contentElement.style.setProperty('height', '100%', 'important')\n        \n        // Apply vertical alignment to the container\n        switch (verticalAlign) {\n          case 'middle':\n            contentElement.style.setProperty('justify-content', 'center', 'important')\n            break\n          case 'top':\n            contentElement.style.setProperty('justify-content', 'flex-start', 'important')\n            break\n          case 'bottom':\n            contentElement.style.setProperty('justify-content', 'flex-end', 'important')\n            break\n          default:\n            contentElement.style.setProperty('justify-content', 'flex-end', 'important')\n        }\n        \n                  // Apply text alignment directly to contentElement (which contains the multi-line element)\n          switch (textAlign) {\n            case 'center':\n              contentElement.style.setProperty('align-items', 'center', 'important')\n              break\n            case 'right':\n              contentElement.style.setProperty('align-items', 'flex-end', 'important')\n              break\n            default: // 'left'\n              contentElement.style.setProperty('align-items', 'flex-start', 'important')\n          }\n          \n          // Adjust line positioning based on vertical alignment - search directly in contentElement\n          const dividerLine = contentElement.querySelector('.divider-line')\n          if (dividerLine) {\n            let linePosition\n            \n            // When vertically aligned to bottom, the line should be closer to the text\n            // When aligned to top/middle, use the original position\n            switch (verticalAlign) {\n              case 'bottom':\n                // For bottom alignment, position line closer to text (less space)\n                linePosition = '8px'\n                break\n              case 'middle':\n                // For middle alignment, use medium spacing\n                linePosition = '15px'\n                break\n              default: // 'top'\n                // For top alignment, use original spacing\n                linePosition = '22px'\n                break\n                        }\n            \n            dividerLine.style.setProperty('bottom', linePosition, 'important')\n          }\n        }\n      } else {\n      // Apply the styling to regular text elements\n      const contentElement = element.querySelector('.element-content')\n      if (contentElement) {\n        // Reset and apply basic styles - use setProperty for !important\n        contentElement.style.setProperty('width', '100%', 'important')\n        contentElement.style.setProperty('height', '100%', 'important')\n        contentElement.style.setProperty('overflow', 'hidden', 'important')\n        contentElement.style.setProperty('padding', '0', 'important')\n        contentElement.style.setProperty('box-sizing', 'border-box', 'important')\n        contentElement.style.setProperty('position', 'relative', 'important')\n        \n        // Apply font properties (scaled for container)\n        contentElement.style.setProperty('font-family', `'${fontFamily}', sans-serif`, 'important')\n        contentElement.style.setProperty('font-size', `${fontSize / this.totalFontScale}px`, 'important')\n        contentElement.style.setProperty('color', color, 'important')\n        contentElement.style.setProperty('font-weight', fontWeight, 'important')\n        contentElement.style.setProperty('text-align', textAlign, 'important')\n        \n        // Handle vertical alignment with flexbox (use flex for all alignments)\n        contentElement.style.setProperty('display', 'flex', 'important')\n        contentElement.style.setProperty('flex-direction', 'column', 'important')\n        \n        switch (verticalAlign) {\n          case 'middle':\n            contentElement.style.setProperty('justify-content', 'center', 'important')\n            break\n          case 'bottom':\n            contentElement.style.setProperty('justify-content', 'flex-end', 'important')\n            break\n          default: // 'top'\n            contentElement.style.setProperty('justify-content', 'flex-start', 'important')\n        }\n      }\n    }\n  }\n\n  updateElementStyleFromInput() {\n    if (!this.selectedElement) return\n    \n    // Update scaling data attributes from inputs\n    const elementId = this.selectedElement.dataset.elementId\n    \n    if (elementId === 'certificate_text' && this.hasRecipientScaleInputTarget) {\n      const recipientScale = parseFloat(this.recipientScaleInputTarget.value) || 120\n      this.selectedElement.dataset.recipientScale = recipientScale\n    }\n    \n    if (['issuer_text', 'creation_date_text', 'valid_until_text'].includes(elementId)) {\n      if (this.hasMainScaleInputTarget) {\n        const mainScale = parseFloat(this.mainScaleInputTarget.value) || 100\n        this.selectedElement.dataset.mainScale = mainScale\n      }\n      if (this.hasSubScaleInputTarget) {\n        const subScale = parseFloat(this.subScaleInputTarget.value) || 80\n        this.selectedElement.dataset.subScale = subScale\n      }\n    }\n    \n    // Only update styling for text elements\n    if (elementId !== 'tenant_logo') {\n      this.updateElementStyling(this.selectedElement)\n    }\n    \n    // Update pixel size displays\n    this.updateScaleResults()\n  }\n\n  updateScaleResults() {\n    if (!this.selectedElement) return\n    \n    const elementId = this.selectedElement.dataset.elementId\n    const baseFontSize = parseFloat(this.selectedElement.dataset.fontSize) || 22\n    \n    if (elementId === 'certificate_text' && this.hasRecipientScaleInputTarget) {\n      const recipientScale = parseFloat(this.recipientScaleInputTarget.value) || 120\n      this.updateRecipientScaleResult(baseFontSize, recipientScale)\n    }\n    \n    if (['issuer_text', 'creation_date_text', 'valid_until_text'].includes(elementId)) {\n      if (this.hasMainScaleInputTarget) {\n        const mainScale = parseFloat(this.mainScaleInputTarget.value) || 100\n        this.updateMainScaleResult(baseFontSize, mainScale)\n      }\n      if (this.hasSubScaleInputTarget) {\n        const subScale = parseFloat(this.subScaleInputTarget.value) || 80\n        this.updateSubScaleResult(baseFontSize, subScale)\n      }\n    }\n  }\n\n  updateRecipientScaleResult(baseFontSize, scale) {\n    if (!this.hasRecipientScaleResultTarget) return\n    const resultSize = Math.round((baseFontSize * scale) / 100)\n    this.recipientScaleResultTarget.textContent = `= ${resultSize}px`\n  }\n\n  updateMainScaleResult(baseFontSize, scale) {\n    if (!this.hasMainScaleResultTarget) return\n    const resultSize = Math.round((baseFontSize * scale) / 100)\n    this.mainScaleResultTarget.textContent = `= ${resultSize}px`\n  }\n\n  updateSubScaleResult(baseFontSize, scale) {\n    if (!this.hasSubScaleResultTarget) return\n    const resultSize = Math.round((baseFontSize * scale) / 100)\n    this.subScaleResultTarget.textContent = `= ${resultSize}px`\n  }\n\n  async resetElement() {\n    if (!this.selectedElement) return\n    \n    const elementId = this.selectedElement.dataset.elementId\n    \n    try {\n      // Get default positions from server\n      const response = await fetch(`/admin/pdf_certificate_templates/${this.templateIdValue}/layout_editor`, {\n        headers: {\n          'Accept': 'application/json',\n          'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n        }\n      })\n      \n      if (response.ok) {\n        const data = await response.json()\n        const defaultPosition = data.default_layout_elements[elementId]\n        \n        if (defaultPosition) {\n          this.updateElementBounds(\n            this.selectedElement, \n            defaultPosition.x, \n            defaultPosition.y, \n            defaultPosition.width, \n            defaultPosition.height\n          )\n          this.showNotification('Element auf Standardposition zur\u00FCckgesetzt', 'success')\n        }\n      }\n    } catch (error) {\n      // Fallback: Use hardcoded defaults for now\n      const defaults = this.getDefaultPositions()\n      const defaultPosition = defaults[elementId]\n      \n      if (defaultPosition) {\n        this.updateElementBounds(\n          this.selectedElement, \n          defaultPosition.x, \n          defaultPosition.y, \n          defaultPosition.width, \n          defaultPosition.height\n        )\n        this.showNotification('Element auf Standardposition zur\u00FCckgesetzt', 'success')\n      }\n    }\n  }\n\n  getDefaultPositions() {\n    // Fallback default positions (should match the model defaults)\n    return {\n      'certificate_title': { x: 10, y: 8, width: 80, height: 12 },\n      'journey_name': { x: 15, y: 22, width: 70, height: 8 },\n      'creation_date': { x: 10, y: 75, width: 35, height: 8 },\n      'recipient_name': { x: 15, y: 35, width: 70, height: 10 },\n      'issuer_name': { x: 55, y: 75, width: 35, height: 8 },\n      'certificate_text': { x: 10, y: 35, width: 80, height: 35 },\n      'tenant_logo': { x: 40, y: 65, width: 20, height: 12 }\n    }\n  }\n\n  async saveLayout() {\n    const layoutData = {}\n    \n    this.draggableElementTargets.forEach(element => {\n      const elementId = element.dataset.elementId\n      const elementData = {\n        x: parseFloat(element.dataset.x),\n        y: parseFloat(element.dataset.y),\n        width: parseFloat(element.dataset.width),\n        height: parseFloat(element.dataset.height)\n      }\n      \n      // Add CSS properties for text elements\n      if (elementId !== 'tenant_logo') {\n        elementData.font_family = element.dataset.fontFamily || 'Open Sans'\n        elementData.font_size = parseFloat(element.dataset.fontSize) || 22\n        elementData.color = element.dataset.color || '#000000'\n        elementData.text_align = element.dataset.textAlign || 'left'\n        elementData.vertical_align = element.dataset.verticalAlign || 'top'\n        elementData.font_weight = element.dataset.fontWeight || 'normal'\n        \n        // Add scaling properties for certificate_text\n        if (elementId === 'certificate_text') {\n          if (element.dataset.recipientScale) {\n            elementData.recipient_scale = parseFloat(element.dataset.recipientScale)\n          }\n        }\n\n        // Add scaling properties for multi-line elements\n        if (['issuer_text', 'creation_date_text', 'valid_until_text'].includes(elementId)) {\n          if (element.dataset.mainScale) {\n            elementData.main_scale = parseFloat(element.dataset.mainScale)\n          }\n          if (element.dataset.subScale) {\n            elementData.sub_scale = parseFloat(element.dataset.subScale)\n          }\n          elementData.show_divider = element.dataset.showDivider !== 'false'\n          \n          // Keep main_* properties for issuer_text compatibility\n          if (elementId === 'issuer_text') {\n            if (element.dataset.mainFontFamily) {\n              elementData.main_font_family = element.dataset.mainFontFamily\n            }\n            if (element.dataset.mainColor) {\n              elementData.main_color = element.dataset.mainColor\n            }\n          }\n        }\n        \n        // Add I18n key for i18n_text elements (including numbered ones)\n        const baseElementId = elementId.split('__')[0]\n        if (baseElementId === 'i18n_text' && element.dataset.i18nKey) {\n          elementData.i18n_key = element.dataset.i18nKey\n        }\n\n        // Add fixed text for fixed_text elements (including numbered ones)\n        if (baseElementId === 'fixed_text' && element.dataset.fixedText) {\n          elementData.fixed_text = element.dataset.fixedText\n        }\n\n        // Add show_label for verification_url\n        if (elementId === 'verification_url') {\n          elementData.show_label = element.dataset.showLabel === 'true'\n        }\n      }\n      \n      layoutData[elementId] = elementData\n    })\n\n    try {\n      const response = await fetch(this.updateUrlValue, {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n        },\n        body: JSON.stringify({ layout_elements: layoutData })\n      })\n\n      const result = await response.json()\n      \n      if (result.success) {\n        this.showNotification('Layout gespeichert!', 'success')\n      } else {\n        this.showNotification('Fehler beim Speichern: ' + (result.error || result.errors), 'error')\n      }\n    } catch (error) {\n      this.showNotification('Fehler beim Speichern: ' + error.message, 'error')\n    }\n  }\n\n  showNotification(message, type) {\n    // Simple notification - you might want to integrate with your existing notification system\n    const notification = document.createElement('div')\n    notification.className = `alert alert-${type === 'success' ? 'success' : 'danger'} position-fixed`\n    notification.style.cssText = 'top: 20px; right: 20px; z-index: 9999;'\n    notification.textContent = message\n    \n    document.body.appendChild(notification)\n    \n    setTimeout(() => {\n      notification.remove()\n    }, 3000)\n  }\n\n\n\n  async showPdfPreview() {\n    try {\n      // Save current layout first\n      await this.saveLayout()\n      \n      // Open PDF preview in new window with exact PDF dimensions and styling\n      const previewWindow = window.open('', '_blank', 'width=800,height=1000,scrollbars=yes,resizable=yes')\n      \n      // Get current element positions\n      const layoutData = {}\n      this.draggableElementTargets.forEach(element => {\n        const elementId = element.dataset.elementId\n        layoutData[elementId] = {\n          x: parseFloat(element.dataset.x),\n          y: parseFloat(element.dataset.y),\n          width: parseFloat(element.dataset.width),\n          height: parseFloat(element.dataset.height)\n        }\n      })\n      \n      // Build preview HTML with exact PDF styling\n      const previewHtml = `\n        <!DOCTYPE html>\n        <html>\n        <head>\n          <title>PDF Preview - Exact Layout</title>\n          <style>\n            body { margin: 0; padding: 20px; font-family: Arial, sans-serif; background: #f0f0f0; }\n            .certificate-body { \n              position: relative; \n              width: 210mm; \n              height: 297mm; \n              margin: ${this.getPdfMargins()}; \n              background: white;\n              border: 1px solid #ccc;\n              box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n            }\n            .certificate-elements { \n              position: relative; \n              width: 100%; \n              height: 100%; \n              z-index: 1; \n            }\n            .certificate-element {\n              position: absolute;\n              border: 1px dashed #007bff;\n              background: rgba(0,123,255,0.1);\n              box-sizing: border-box;\n              padding: 4px;\n              font-size: 12px;\n              overflow: hidden;\n            }\n            .element-label {\n              background: #007bff;\n              color: white;\n              padding: 2px 4px;\n              font-size: 10px;\n              position: absolute;\n              top: -20px;\n              left: 0;\n              white-space: nowrap;\n            }\n            h1 { color: #333; margin-bottom: 20px; }\n            .info { background: #e9ecef; padding: 10px; margin-bottom: 20px; border-radius: 4px; }\n          </style>\n        </head>\n        <body>\n          <h1>PDF Preview - Exact Layout</h1>\n          <div class=\"info\">\n            <strong>This preview uses the exact same CSS dimensions and positioning as the generated PDF.</strong><br>\n            Container: 210mm \u00D7 297mm (Portrait) with margins: ${this.getPdfMargins()}\n          </div>\n          \n          <div class=\"certificate-body\">\n            ${this.getBackgroundImageHtml()}\n            <div class=\"certificate-elements\">\n              ${Object.entries(layoutData).map(([elementId, pos]) => `\n                <div class=\"certificate-element\" style=\"left: ${pos.x}%; top: ${pos.y}%; width: ${pos.width}%; height: ${pos.height}%;\">\n                  <div class=\"element-label\">${this.getElementDisplayName(elementId)}</div>\n                  <div>${this.getElementPreviewContent(elementId)}</div>\n                </div>\n              `).join('')}\n            </div>\n          </div>\n          \n          <script>\n            // Auto-close after 30 seconds\n            setTimeout(() => {\n              if (confirm('Close preview window?')) {\n                window.close();\n              }\n            }, 30000);\n          </script>\n        </body>\n        </html>\n      `\n      \n      previewWindow.document.write(previewHtml)\n      previewWindow.document.close()\n      \n    } catch (error) {\n      console.error('Error showing PDF preview:', error)\n      this.showNotification('Error showing PDF preview: ' + error.message, 'error')\n    }\n  }\n\n  getPdfMargins() {\n    // Return the same margins that would be used in the PDF\n    return '0px 0px 0px 0px' // You may need to adjust this based on your template settings\n  }\n\n  getBackgroundImageHtml() {\n    // Add background image if present\n    const container = this.element.querySelector('.certificate-preview-container .background-image')\n    if (container) {\n      const bgStyle = container.getAttribute('style')\n      return `<div style=\"${bgStyle}\"></div>`\n    }\n    return ''\n  }\n\n  getElementPreviewContent(elementId) {\n    const element = this.element.querySelector(`#element_${elementId} .element-content`)\n    if (element) {\n      return element.innerHTML\n    }\n    return `[${elementId}]`\n  }\n\n  setupElementPills() {\n    // Re-initialize draggable functionality for any new elements\n    this.initializeDraggableElements()\n  }\n\n  /**\n   * Removes an element from the layout (optimistic update + reflex)\n   * @param {Event} event - Click event from X button\n   * @returns {void}\n   */\n  removeElementOptimistic(event) {\n    event.stopPropagation()\n    \n    const elementToRemove = event.target.closest('.draggable-element')\n    if (!elementToRemove) return\n    \n    const elementId = elementToRemove.dataset.elementId\n    \n    // Optimistic update - hide element immediately\n    elementToRemove.style.opacity = '0.3'\n    elementToRemove.style.pointerEvents = 'none'\n    \n    // Clear selection if this was the selected element\n    if (this.selectedElement === elementToRemove) {\n      this.selectedElement = null\n      this.selectedElementPropsTarget.style.display = 'none'\n      \n      // Hide the entire properties panel\n      if (this.hasPropertiesTarget) {\n        this.propertiesTarget.style.display = 'none'\n      }\n    }\n    \n    // Add template ID to the button element for the reflex\n    event.currentTarget.dataset.templateId = this.templateIdValue\n    \n    // Trigger reflex for backend update\n    this.stimulate('CertificateLayoutReflex#remove_element', event.currentTarget).then((event) => {\n      // Force Stimulus to re-scan for targets BEFORE removing element\n      // This ensures new pills are properly connected\n      this.disconnect()\n      this.connect()\n      \n      // Now remove element from DOM\n      elementToRemove.remove()\n\n    })\n  }\n\n  /**\n   * Adds an element to the layout (optimistic update + AJAX)\n   * @param {Event} event - Click event from pill\n   * @returns {void}\n   */\n  addElementOptimistic(event) {\n    const pill = event.target.closest('.element-pill')\n    if (!pill) return\n    \n    const elementId = pill.dataset.elementId\n    \n    // Optimistic update - hide pill immediately for non-reusable elements\n    const reusableElements = ['i18n_text']\n    if (!reusableElements.includes(elementId)) {\n      pill.style.opacity = '0.3'\n      pill.style.pointerEvents = 'none'\n    }\n    \n    // Use AJAX instead of reflex for better control\n    const currentPath = window.location.pathname\n    // Remove /layout_editor from the path to get the template resource path\n    const templatePath = currentPath.replace('/layout_editor', '')\n    const addElementUrl = `${templatePath}/add_element`\n    \n    fetch(addElementUrl, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]').content\n      },\n      body: JSON.stringify({\n        element_id: elementId\n      })\n    })\n    .then(response => response.json())\n    .then(data => {\n      if (data.success) {\n        // Use the actual element ID returned from the server\n        const actualElementId = data.element_id || elementId\n        \n        // Add element to DOM with the actual ID\n        this.addElementToDOM(actualElementId)\n        \n        // Update unused elements if provided\n        if (data.unused_elements) {\n          this.updateUnusedElementsPills(data.unused_elements)\n        }\n      } else {\n        // Revert optimistic update on error\n        pill.style.opacity = '1'\n        pill.style.pointerEvents = 'auto'\n        console.error('Failed to add element:', data.error)\n      }\n    })\n    .catch(error => {\n      // Revert optimistic update on error\n      pill.style.opacity = '1'\n      pill.style.pointerEvents = 'auto'\n      console.error('Error adding element:', error)\n    })\n  }\n\n  /**\n   * Adds a new element to the DOM\n   * @param {String} elementId - The ID of the element to add\n   * @returns {void}\n   */\n  addElementToDOM(elementId) {\n    const defaultPositions = this.getDefaultPositions()\n    const position = defaultPositions[elementId] || { x: 10, y: 10, width: 20, height: 10 }\n    \n    // Add default CSS properties for text elements\n    const defaultCssProps = elementId !== 'tenant_logo' ? {\n      fontFamily: 'Open Sans',\n      fontSize: 22,\n      color: '#000000',\n      textAlign: 'left',\n      verticalAlign: 'top',\n      fontWeight: 'normal'\n    } : {}\n    \n    // Build data attributes\n    let dataAttrs = `\n           data-certificate-layout-editor-target=\"draggableElement\"\n           data-element-id=\"${elementId}\"\n           data-x=\"${position.x}\"\n           data-y=\"${position.y}\"\n           data-width=\"${position.width}\"\n           data-height=\"${position.height}\"`\n    \n    if (elementId !== 'tenant_logo') {\n      dataAttrs += `\n           data-font-family=\"${defaultCssProps.fontFamily}\"\n           data-font-size=\"${defaultCssProps.fontSize}\"\n           data-color=\"${defaultCssProps.color}\"\n           data-text-align=\"${defaultCssProps.textAlign}\"\n           data-vertical-align=\"${defaultCssProps.verticalAlign}\"\n           data-font-weight=\"${defaultCssProps.fontWeight}\"`\n      \n      // Add default I18n key for i18n_text elements\n      if (elementId.match(/^i18n_text(__\\d+)?$/)) {\n        dataAttrs += `\n           data-i18n-key=\"shared.certificate_fixed_texts.certificate\"`\n      }\n\n      // Add default fixed text for fixed_text elements\n      if (elementId.match(/^fixed_text(__\\d+)?$/)) {\n        dataAttrs += `\n           data-fixed-text=\"Custom Text\"`\n      }\n\n      // Add default show_label for verification_url (off by default)\n      if (elementId === 'verification_url') {\n        dataAttrs += `\n           data-show-label=\"false\"`\n      }\n\n      // Multi-line elements show divider by default\n      if (['issuer_text', 'creation_date_text', 'valid_until_text'].includes(elementId)) {\n        const showDivider = position.show_divider === false || position.show_divider === 'false' ? 'false' : 'true'\n        dataAttrs += `\n           data-main-scale=\"${position.main_scale || 100}\"\n           data-sub-scale=\"${position.sub_scale || 80}\"\n           data-show-divider=\"${showDivider}\"`\n      }\n    }\n    \n    // Create the element HTML\n    const elementHtml = `\n      <div class=\"draggable-element\" \n           id=\"element_${elementId}\"${dataAttrs}\n           style=\"position: absolute; left: ${position.x}%; top: ${position.y}%; width: ${position.width}%; height: ${position.height}%; border: 1px dashed #007bff; background: rgba(0,123,255,0.1); cursor: grab; z-index: 10;\">\n        \n        <div class=\"element-remove-btn\" \n             data-action=\"click->certificate-layout-editor#removeElementOptimistic\"\n             data-element-id=\"${elementId}\"\n             style=\"position: absolute; top: -12px; left: -12px; width: 24px; height: 24px; background: #dc3545; color: white; border: 2px solid white; border-radius: 50%; display: none; align-items: center; justify-content: center; font-size: 14px; font-weight: bold; cursor: pointer; z-index: 1001;\">\n          \u00D7\n        </div>\n        \n        <div class=\"resize-handle nw\" style=\"position: absolute; top: -4px; left: -4px; width: 8px; height: 8px; background: #007bff; cursor: nw-resize;\"></div>\n        <div class=\"resize-handle ne\" style=\"position: absolute; top: -4px; right: -4px; width: 8px; height: 8px; background: #007bff; cursor: ne-resize;\"></div>\n        <div class=\"resize-handle sw\" style=\"position: absolute; bottom: -4px; left: -4px; width: 8px; height: 8px; background: #007bff; cursor: sw-resize;\"></div>\n        <div class=\"resize-handle se\" style=\"position: absolute; bottom: -4px; right: -4px; width: 8px; height: 8px; background: #007bff; cursor: se-resize;\"></div>\n        \n        <div class=\"element-content\" style=\"pointer-events: none; font-size: 12px; padding: 2px;\">\n          ${this.getElementContentForNewElement(elementId)}\n        </div>\n      </div>\n    `\n    \n    // Add to certificate elements container\n    const container = this.element.querySelector('.certificate-elements')\n    if (container) {\n      container.insertAdjacentHTML('beforeend', elementHtml)\n      \n      // Get the newly added element\n      const newElement = container.querySelector(`#element_${elementId}`)\n      if (newElement) {\n        // Manually register this element as a Stimulus target\n        if (!this.draggableElementTargets.includes(newElement)) {\n          // Add to targets array (this is a bit of a hack but works)\n          this.draggableElementTargets.push(newElement)\n        }\n        \n        // Initialize the new element\n        this.makeElementDraggable(newElement)\n        this.makeElementResizable(newElement)\n        this.makeElementSelectable(newElement)\n        this.ensureElementPositioning(newElement)\n        \n    \n      }\n    }\n  }\n\n  getElementContentForNewElement(elementId) {\n    // Get proper content with styling for newly added elements\n    const contents = {\n      'certificate_title': '<div class=\"certificate-title\">Beispiel Zertifikat</div>',\n      'journey_name': '<div class=\"journey-name\">Beispiel Lernpfad</div>',\n      'recipient_name': '<div class=\"recipient-name\">Max Mustermann</div>',\n      'certificate_text': '<div class=\"certificate-text\"><p>Beispiel-Text f\u00FCr Zertifikat Inhalt</p></div>',\n      'creation_date': '<div class=\"creation-date\">01.01.2024</div>',\n      'tenant_logo': '<div class=\"tenant-logo placeholder-logo\">LOGO</div>',\n      'issuer_name': '<div class=\"issuer-name\">Dr. Jane Smith</div>',\n      'i18n_text': '<div class=\"i18n-text\">Certificate</div>'\n    }\n    \n    // Handle numbered i18n_text elements\n    if (elementId.match(/^i18n_text(__\\d+)?$/)) {\n      return '<div class=\"i18n-text\">Certificate</div>'\n    }\n\n    // Handle numbered fixed_text elements\n    if (elementId.match(/^fixed_text(__\\d+)?$/)) {\n      return '<div class=\"fixed-text\">Custom Text</div>'\n    }\n\n    if (elementId === 'verification_url') {\n      return '<div class=\"verification-url\" style=\"word-break: break-all;\">SAMPLE-00000000-0000-0000-0000-000000000001</div>'\n    }\n    \n    return contents[elementId] || `<div>${elementId.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase())}</div>`\n  }\n\n  // New method to handle I18n key updates\n  updateElementI18nFromInput() {\n    if (!this.selectedElement) return\n    \n    const i18nKey = this.i18nKeyInputTarget.value\n    \n    // Update dataset\n    this.selectedElement.dataset.i18nKey = i18nKey\n    \n    // Update the displayed text in the element\n    this.updateElementI18nText(this.selectedElement, i18nKey)\n    \n    // Auto-save after a short delay\n    clearTimeout(this.saveTimeout)\n    this.saveTimeout = setTimeout(() => {\n      this.saveLayout()\n    }, 1000)\n  }\n\n  // New method to handle Fixed Text updates\n  updateElementFixedTextFromInput() {\n    if (!this.selectedElement) return\n    \n    const fixedText = this.fixedTextInputTarget.value\n    \n    // Update dataset\n    this.selectedElement.dataset.fixedText = fixedText\n    \n    // Update the displayed text in the element\n    this.updateElementFixedText(this.selectedElement, fixedText)\n    \n    // Auto-save after a short delay\n    clearTimeout(this.saveTimeout)\n    this.saveTimeout = setTimeout(() => {\n      this.saveLayout()\n    }, 1000)\n  }\n\n  /**\n   * Toggles the verification URL label and refreshes the preview content.\n   */\n  updateVerificationUrlShowLabelFromInput() {\n    if (!this.selectedElement) return\n\n    const showLabel = this.verificationUrlShowLabelInputTarget.checked\n    this.selectedElement.dataset.showLabel = showLabel ? 'true' : 'false'\n    this.updateVerificationUrlContent(this.selectedElement, showLabel)\n\n    clearTimeout(this.saveTimeout)\n    this.saveTimeout = setTimeout(() => {\n      this.saveLayout()\n    }, 500)\n  }\n\n  /**\n   * Toggles the divider line for multi-line text elements in the editor preview.\n   */\n  updateShowDividerFromInput() {\n    if (!this.selectedElement) return\n\n    const showDivider = this.showDividerInputTarget.checked\n    this.selectedElement.dataset.showDivider = showDivider ? 'true' : 'false'\n    this.updateDividerVisibility(this.selectedElement, showDivider)\n\n    clearTimeout(this.saveTimeout)\n    this.saveTimeout = setTimeout(() => {\n      this.saveLayout()\n    }, 500)\n  }\n\n  /**\n   * @param {HTMLElement} element\n   * @param {boolean} showDivider\n   */\n  updateDividerVisibility(element, showDivider) {\n    const content = element.querySelector('.element-content')\n    if (!content) return\n\n    let dividerLine = content.querySelector('.divider-line')\n    if (showDivider) {\n      if (!dividerLine) {\n        dividerLine = document.createElement('div')\n        dividerLine.className = 'divider-line'\n        dividerLine.style.cssText = 'width: 100%; height: 2px; background-color: #ccc; margin: 0; position: absolute; bottom: 22px; left: 0; right: 0; z-index: 1;'\n        const mainText = content.querySelector('.main-text')\n        if (mainText && mainText.nextSibling) {\n          mainText.parentNode.insertBefore(dividerLine, mainText.nextSibling)\n        } else if (mainText) {\n          mainText.parentNode.appendChild(dividerLine)\n        } else {\n          content.appendChild(dividerLine)\n        }\n      }\n      dividerLine.style.display = ''\n      this.updateElementStyling(element)\n    } else if (dividerLine) {\n      dividerLine.remove()\n    }\n  }\n\n  /**\n   * @param {HTMLElement} element\n   * @param {boolean} showLabel\n   */\n  updateVerificationUrlContent(element, showLabel) {\n    const content = element.querySelector('.element-content')\n    if (!content) return\n\n    const publicId = 'SAMPLE-00000000-0000-0000-0000-000000000001'\n    const label = (window.I18n && window.I18n.t)\n      ? window.I18n.t('shared.pdf_certificate_elements.verification_url')\n      : 'Verifikations-ID'\n\n    content.innerHTML = showLabel\n      ? `<div class=\"verification-url\" style=\"word-break: break-all;\">${label}<br>${publicId}</div>`\n      : `<div class=\"verification-url\" style=\"word-break: break-all;\">${publicId}</div>`\n  }\n\n  updateElementI18nText(element, i18nKey) {\n    const textElement = element.querySelector('.element-content .i18n-text')\n    if (textElement && i18nKey) {\n      // Use system translations from the shared YAML section\n      // These are automatically available in JavaScript via the JS locale files\n      const keyParts = i18nKey.split('.')\n      let translation = null\n      \n      if (keyParts.length >= 3 && keyParts[0] === 'shared' && keyParts[1] === 'certificate_fixed_texts') {\n        const textKey = keyParts[2]\n        // Access the translation from the global translations object if available\n        // This should match the structure generated from shared YAML\n        if (window.I18n && window.I18n.t) {\n          translation = window.I18n.t(i18nKey)\n        } else {\n          // Fallback for preview - use the key's last part as display text\n          translation = textKey.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase())\n        }\n      } else {\n        // For other keys, just use the last part as fallback\n        translation = keyParts[keyParts.length - 1].replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase())\n      }\n      \n      textElement.textContent = translation || i18nKey.split('.').pop()\n    }\n  }\n\n  updateElementFixedText(element, fixedText) {\n    const textElement = element.querySelector('.element-content .fixed-text')\n    if (textElement) {\n      textElement.textContent = fixedText || 'Custom Text'\n    }\n  }\n\n  /**\n   * Updates the unused elements pills based on server response\n   * @param {Array} unusedElements - Array of unused element IDs\n   * @returns {void}\n   */\n  updateUnusedElementsPills(unusedElements) {\n    const unusedContainer = document.querySelector('#unused-elements')\n    if (!unusedContainer) return\n    \n    // Hide all pills first\n    const allPills = unusedContainer.querySelectorAll('.element-pill')\n    allPills.forEach(pill => {\n      pill.style.display = 'none'\n    })\n    \n    // Show only unused elements\n    unusedElements.forEach(elementId => {\n      const pill = unusedContainer.querySelector(`[data-element-id=\"${elementId}\"]`)\n      if (pill) {\n        pill.style.display = 'block'\n        pill.style.opacity = '1'\n        pill.style.pointerEvents = 'auto'\n      }\n    })\n  }\n\n  showPropertiesPanel(elementId) {\n    const baseElementId = elementId.split('__')[0]; // Extract base element type\n    const propertiesPanels = this.element.querySelectorAll('[data-element-properties]');\n    \n    propertiesPanels.forEach(panel => {\n      const panelType = panel.dataset.elementProperties;\n      if (panelType === baseElementId) {\n        panel.classList.remove('d-none');\n        \n        // Load current properties for this specific element\n        if (baseElementId === 'i18n_text') {\n          this.loadI18nProperties(elementId);\n        } else if (baseElementId === 'fixed_text') {\n          this.loadFixedTextProperties(elementId);\n        }\n      } else {\n        panel.classList.add('d-none');\n      }\n    });\n  }\n\n  loadI18nProperties(elementId) {\n    // Find the element in the DOM\n    const element = this.element.querySelector(`[data-element-id=\"${elementId}\"]`);\n    if (!element) return;\n    \n    // Get the current I18n key from the element\n    const currentI18nKey = element.dataset.i18nKey || 'shared.certificate_fixed_texts.certificate';\n    \n    // Update the I18n key input if it exists\n    if (this.hasI18nKeyInputTarget) {\n      this.i18nKeyInputTarget.value = currentI18nKey;\n    }\n  }\n\n  loadFixedTextProperties(elementId) {\n    // Find the element in the DOM\n    const element = this.element.querySelector(`[data-element-id=\"${elementId}\"]`);\n    if (!element) return;\n    \n    // Get the current fixed text from the element\n    const currentFixedText = element.dataset.fixedText || 'Custom Text';\n    \n    // Update the fixed text input if it exists\n    if (this.hasFixedTextInputTarget) {\n      this.fixedTextInputTarget.value = currentFixedText;\n    }\n  }\n} ", "import { Controller } from '@hotwired/stimulus';\nexport default class extends Controller {\n  static targets = [\"inputField\", \"characterDisplay\"]\n\n  maxCharacters = 0\n  currentCharacters = 0\n\n  connect() {\n    console.log('CharacterController connected')\n    if(this.hasInputFieldTarget) {\n      //setup current character\n      this.currentCharacters = $(this.inputFieldTarget).val().length\n      //setup the max characters first\n      this.maxCharacters = $(this.inputFieldTarget).attr('maxlength')\n      //update them for initial display\n      this.updateCharacterDisplay()\n    }\n  }\n\n  /**\n   * fired whenever we type in a new key.\n   */\n  onChange() {\n    this.currentCharacters = $(this.inputFieldTarget).val().length\n    this.updateCharacterDisplay()\n  }\n\n  /**\n   * Updating the display for how many characters are left to type\n   */\n  updateCharacterDisplay() {\n    if(this.hasCharacterDisplayTarget) {\n      $(this.characterDisplayTarget).html(`${this.currentCharacters}/${this.maxCharacters}`)\n    }\n  }\n}", "import { Controller } from '@hotwired/stimulus';\n\nexport default class ChatController extends Controller {\n\n  static targets = ['container', 'item', 'participants'];\n\n  connect() {\n    this.scrollToBottom();\n    if (this.hasContainerTarget) {\n      let self = this;\n      const observer = new MutationObserver((mutationsList) => {\n        for (const mutation of mutationsList) {\n          if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {\n        mutation.addedNodes.forEach((node) => {\n          if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains('chat-item')) {\n            // console.log('New message added');\n            self.onNodeAdded(self, { target: node });\n          }\n        });\n          }\n        }\n      });\n\n      observer.observe(this.containerTarget, { childList: true, subtree: true });\n    }\n  }\n\n  toggleParticipants(event) {\n    if(this.hasParticipantsTarget) {\n      $(this.participantsTarget).toggleClass('closed');\n    }\n  }\n\n\n  onNodeAdded(self, event) {\n    // Check if a new message was added\n    if($(event.target).hasClass('chat-item')) {\n      self.scrollToBottom('smooth');\n    }\n  }\n  \n  // itemTargetDisconnected(element) {\n  //   console.log(element);\n  // }\n\n  scrollToBottom(behavior = 'auto') {\n    if (this.hasContainerTarget) {\n      this.containerTarget.scrollTo({\n        top: this.containerTarget.scrollHeight,\n        behavior: behavior\n      });\n    }\n  }\n}", "import ApplicationController from './application_controller';\n\nexport default class ClearFilterController extends ApplicationController {\n  \n  initialize() {\n    super.initialize();\n  }\n\n  connect() {\n    super.connect();\n  }\n\n  /*\n    Clear all filter parameters from URL and reload page\n    \n    @param event [Object] The click event from clear button\n    \n    Removes all URL parameters and navigates to clean URL\n  */\n  clearFilters(event) {\n    event.preventDefault();\n    \n    // Navigate to current path without any parameters\n    window.location.href = window.location.pathname;\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n\n  static targets = [\"colpart\", \"button\"]\n\n  connect() {\n    let self = this;\n    this.$collapsible = $(this.colpartTarget);\n    this.$button = $(this.buttonTarget);\n    // this.$collapsible.collapse({toggle: false});\n\n    this.$collapsible.on('hide.bs.collapse', function () {\n      // console.log(\"hidden\")\n      self.$button.find(\".material-icons\").toggleClass('hidden');\n    })\n    this.$collapsible.on('show.bs.collapse', function () {\n      // console.log(\"shown\")\n      self.$button.find(\".material-icons\").toggleClass('hidden');\n    })\n  }\n\n  toggle(event) {\n    \n  }\n\n}", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n\n  connect() {\n    const self = this;\n    $(\"select.color-palette\").select2({\n      placeholder: \"choose color from palette\", //placeholder\n      templateResult: self.setOptionClass,\n      templateSelection: self.setOptionClass\n    });\n\n  }\n\n  setOptionClass (color) {\n    if (!color.id) { return color.text; }\n    var $color = $('<div class=\"bgc-pc-' + color.element.value + '\">&nbsp;</div>');\n    return $color;\n  };\n\n}", "import { Color } from '@svgdotjs/svg.js';\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  static targets = [\"value\", \"label\"];\n\n  connect() {\n    this.element.addEventListener('changed-color', (event) => {\n      const color = event.detail.color;\n\n      $(this.valueTarget).css({\n      \"background-color\": color,\n      });\n      const wrapper = this.valueTarget.closest('.color-wrapper').find(\"input\"); //.val(color);\n      console.log(\"wrapper: \", wrapper);\n      $(this.labelTarget).html(color);\n    });\n  }\n\n  change(event) {\n    let $target = $(event.currentTarget),\n    color = $target.val();\n\n    $(this.valueTarget).css({\n      \"background-color\": color,\n    });\n\n    $(this.labelTarget).html(color);\n  }\n\n}", "const methods = {}\nconst names = []\n\nexport function registerMethods(name, m) {\n  if (Array.isArray(name)) {\n    for (const _name of name) {\n      registerMethods(_name, m)\n    }\n    return\n  }\n\n  if (typeof name === 'object') {\n    for (const _name in name) {\n      registerMethods(_name, name[_name])\n    }\n    return\n  }\n\n  addMethodNames(Object.getOwnPropertyNames(m))\n  methods[name] = Object.assign(methods[name] || {}, m)\n}\n\nexport function getMethodsFor(name) {\n  return methods[name] || {}\n}\n\nexport function getMethodNames() {\n  return [...new Set(names)]\n}\n\nexport function addMethodNames(_names) {\n  names.push(..._names)\n}\n", "// Map function\nexport function map(array, block) {\n  let i\n  const il = array.length\n  const result = []\n\n  for (i = 0; i < il; i++) {\n    result.push(block(array[i]))\n  }\n\n  return result\n}\n\n// Filter function\nexport function filter(array, block) {\n  let i\n  const il = array.length\n  const result = []\n\n  for (i = 0; i < il; i++) {\n    if (block(array[i])) {\n      result.push(array[i])\n    }\n  }\n\n  return result\n}\n\n// Degrees to radians\nexport function radians(d) {\n  return ((d % 360) * Math.PI) / 180\n}\n\n// Radians to degrees\nexport function degrees(r) {\n  return ((r * 180) / Math.PI) % 360\n}\n\n// Convert camel cased string to dash separated\nexport function unCamelCase(s) {\n  return s.replace(/([A-Z])/g, function (m, g) {\n    return '-' + g.toLowerCase()\n  })\n}\n\n// Capitalize first letter of a string\nexport function capitalize(s) {\n  return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\n// Calculate proportional width and height values when necessary\nexport function proportionalSize(element, width, height, box) {\n  if (width == null || height == null) {\n    box = box || element.bbox()\n\n    if (width == null) {\n      width = (box.width / box.height) * height\n    } else if (height == null) {\n      height = (box.height / box.width) * width\n    }\n  }\n\n  return {\n    width: width,\n    height: height\n  }\n}\n\n/**\n * This function adds support for string origins.\n * It searches for an origin in o.origin o.ox and o.originX.\n * This way, origin: {x: 'center', y: 50} can be passed as well as ox: 'center', oy: 50\n **/\nexport function getOrigin(o, element) {\n  const origin = o.origin\n  // First check if origin is in ox or originX\n  let ox = o.ox != null ? o.ox : o.originX != null ? o.originX : 'center'\n  let oy = o.oy != null ? o.oy : o.originY != null ? o.originY : 'center'\n\n  // Then check if origin was used and overwrite in that case\n  if (origin != null) {\n    ;[ox, oy] = Array.isArray(origin)\n      ? origin\n      : typeof origin === 'object'\n        ? [origin.x, origin.y]\n        : [origin, origin]\n  }\n\n  // Make sure to only call bbox when actually needed\n  const condX = typeof ox === 'string'\n  const condY = typeof oy === 'string'\n  if (condX || condY) {\n    const { height, width, x, y } = element.bbox()\n\n    // And only overwrite if string was passed for this specific axis\n    if (condX) {\n      ox = ox.includes('left')\n        ? x\n        : ox.includes('right')\n          ? x + width\n          : x + width / 2\n    }\n\n    if (condY) {\n      oy = oy.includes('top')\n        ? y\n        : oy.includes('bottom')\n          ? y + height\n          : y + height / 2\n    }\n  }\n\n  // Return the origin as it is if it wasn't a string\n  return [ox, oy]\n}\n\nconst descriptiveElements = new Set(['desc', 'metadata', 'title'])\nexport const isDescriptive = (element) =>\n  descriptiveElements.has(element.nodeName)\n\nexport const writeDataToDom = (element, data, defaults = {}) => {\n  const cloned = { ...data }\n\n  for (const key in cloned) {\n    if (cloned[key].valueOf() === defaults[key]) {\n      delete cloned[key]\n    }\n  }\n\n  if (Object.keys(cloned).length) {\n    element.node.setAttribute('data-svgjs', JSON.stringify(cloned)) // see #428\n  } else {\n    element.node.removeAttribute('data-svgjs')\n    element.node.removeAttribute('svgjs:data')\n  }\n}\n", "// Default namespaces\nexport const svg = 'http://www.w3.org/2000/svg'\nexport const html = 'http://www.w3.org/1999/xhtml'\nexport const xmlns = 'http://www.w3.org/2000/xmlns/'\nexport const xlink = 'http://www.w3.org/1999/xlink'\n", "export const globals = {\n  window: typeof window === 'undefined' ? null : window,\n  document: typeof document === 'undefined' ? null : document\n}\n\nexport function registerWindow(win = null, doc = null) {\n  globals.window = win\n  globals.document = doc\n}\n\nconst save = {}\n\nexport function saveWindow() {\n  save.window = globals.window\n  save.document = globals.document\n}\n\nexport function restoreWindow() {\n  globals.window = save.window\n  globals.document = save.document\n}\n\nexport function withWindow(win, fn) {\n  saveWindow()\n  registerWindow(win, win.document)\n  fn(win, win.document)\n  restoreWindow()\n}\n\nexport function getWindow() {\n  return globals.window\n}\n", "export default class Base {\n  // constructor (node/*, {extensions = []} */) {\n  //   // this.tags = []\n  //   //\n  //   // for (let extension of extensions) {\n  //   //   extension.setup.call(this, node)\n  //   //   this.tags.push(extension.name)\n  //   // }\n  // }\n}\n", "import { addMethodNames } from './methods.js'\nimport { capitalize } from './utils.js'\nimport { svg } from '../modules/core/namespaces.js'\nimport { globals } from '../utils/window.js'\nimport Base from '../types/Base.js'\n\nconst elements = {}\nexport const root = '___SYMBOL___ROOT___'\n\n// Method for element creation\nexport function create(name, ns = svg) {\n  // create element\n  return globals.document.createElementNS(ns, name)\n}\n\nexport function makeInstance(element, isHTML = false) {\n  if (element instanceof Base) return element\n\n  if (typeof element === 'object') {\n    return adopter(element)\n  }\n\n  if (element == null) {\n    return new elements[root]()\n  }\n\n  if (typeof element === 'string' && element.charAt(0) !== '<') {\n    return adopter(globals.document.querySelector(element))\n  }\n\n  // Make sure, that HTML elements are created with the correct namespace\n  const wrapper = isHTML ? globals.document.createElement('div') : create('svg')\n  wrapper.innerHTML = element\n\n  // We can use firstChild here because we know,\n  // that the first char is < and thus an element\n  element = adopter(wrapper.firstChild)\n\n  // make sure, that element doesn't have its wrapper attached\n  wrapper.removeChild(wrapper.firstChild)\n  return element\n}\n\nexport function nodeOrNew(name, node) {\n  return node &&\n    (node instanceof globals.window.Node ||\n      (node.ownerDocument &&\n        node instanceof node.ownerDocument.defaultView.Node))\n    ? node\n    : create(name)\n}\n\n// Adopt existing svg elements\nexport function adopt(node) {\n  // check for presence of node\n  if (!node) return null\n\n  // make sure a node isn't already adopted\n  if (node.instance instanceof Base) return node.instance\n\n  if (node.nodeName === '#document-fragment') {\n    return new elements.Fragment(node)\n  }\n\n  // initialize variables\n  let className = capitalize(node.nodeName || 'Dom')\n\n  // Make sure that gradients are adopted correctly\n  if (className === 'LinearGradient' || className === 'RadialGradient') {\n    className = 'Gradient'\n\n    // Fallback to Dom if element is not known\n  } else if (!elements[className]) {\n    className = 'Dom'\n  }\n\n  return new elements[className](node)\n}\n\nlet adopter = adopt\n\nexport function mockAdopt(mock = adopt) {\n  adopter = mock\n}\n\nexport function register(element, name = element.name, asRoot = false) {\n  elements[name] = element\n  if (asRoot) elements[root] = element\n\n  addMethodNames(Object.getOwnPropertyNames(element.prototype))\n\n  return element\n}\n\nexport function getClass(name) {\n  return elements[name]\n}\n\n// Element id sequence\nlet did = 1000\n\n// Get next named element id\nexport function eid(name) {\n  return 'Svgjs' + capitalize(name) + did++\n}\n\n// Deep new id assignment\nexport function assignNewId(node) {\n  // do the same for SVG child nodes as well\n  for (let i = node.children.length - 1; i >= 0; i--) {\n    assignNewId(node.children[i])\n  }\n\n  if (node.id) {\n    node.id = eid(node.nodeName)\n    return node\n  }\n\n  return node\n}\n\n// Method for extending objects\nexport function extend(modules, methods) {\n  let key, i\n\n  modules = Array.isArray(modules) ? modules : [modules]\n\n  for (i = modules.length - 1; i >= 0; i--) {\n    for (key in methods) {\n      modules[i].prototype[key] = methods[key]\n    }\n  }\n}\n\nexport function wrapWithAttrCheck(fn) {\n  return function (...args) {\n    const o = args[args.length - 1]\n\n    if (o && o.constructor === Object && !(o instanceof Array)) {\n      return fn.apply(this, args.slice(0, -1)).attr(o)\n    } else {\n      return fn.apply(this, args)\n    }\n  }\n}\n", "import { makeInstance } from '../../utils/adopter.js'\nimport { registerMethods } from '../../utils/methods.js'\n\n// Get all siblings, including myself\nexport function siblings() {\n  return this.parent().children()\n}\n\n// Get the current position siblings\nexport function position() {\n  return this.parent().index(this)\n}\n\n// Get the next element (will return null if there is none)\nexport function next() {\n  return this.siblings()[this.position() + 1]\n}\n\n// Get the next element (will return null if there is none)\nexport function prev() {\n  return this.siblings()[this.position() - 1]\n}\n\n// Send given element one step forward\nexport function forward() {\n  const i = this.position()\n  const p = this.parent()\n\n  // move node one step forward\n  p.add(this.remove(), i + 1)\n\n  return this\n}\n\n// Send given element one step backward\nexport function backward() {\n  const i = this.position()\n  const p = this.parent()\n\n  p.add(this.remove(), i ? i - 1 : 0)\n\n  return this\n}\n\n// Send given element all the way to the front\nexport function front() {\n  const p = this.parent()\n\n  // Move node forward\n  p.add(this.remove())\n\n  return this\n}\n\n// Send given element all the way to the back\nexport function back() {\n  const p = this.parent()\n\n  // Move node back\n  p.add(this.remove(), 0)\n\n  return this\n}\n\n// Inserts a given element before the targeted element\nexport function before(element) {\n  element = makeInstance(element)\n  element.remove()\n\n  const i = this.position()\n\n  this.parent().add(element, i)\n\n  return this\n}\n\n// Inserts a given element after the targeted element\nexport function after(element) {\n  element = makeInstance(element)\n  element.remove()\n\n  const i = this.position()\n\n  this.parent().add(element, i + 1)\n\n  return this\n}\n\nexport function insertBefore(element) {\n  element = makeInstance(element)\n  element.before(this)\n  return this\n}\n\nexport function insertAfter(element) {\n  element = makeInstance(element)\n  element.after(this)\n  return this\n}\n\nregisterMethods('Dom', {\n  siblings,\n  position,\n  next,\n  prev,\n  forward,\n  backward,\n  front,\n  back,\n  before,\n  after,\n  insertBefore,\n  insertAfter\n})\n", "// Parse unit value\nexport const numberAndUnit =\n  /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i\n\n// Parse hex value\nexport const hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i\n\n// Parse rgb value\nexport const rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/\n\n// Parse reference id\nexport const reference = /(#[a-z_][a-z0-9\\-_]*)/i\n\n// splits a transformation chain\nexport const transforms = /\\)\\s*,?\\s*/\n\n// Whitespace\nexport const whitespace = /\\s/g\n\n// Test hex value\nexport const isHex = /^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i\n\n// Test rgb value\nexport const isRgb = /^rgb\\(/\n\n// Test for blank string\nexport const isBlank = /^(\\s+)?$/\n\n// Test for numeric string\nexport const isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i\n\n// Test for image url\nexport const isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i\n\n// split at whitespace and comma\nexport const delimiter = /[\\s,]+/\n\n// Test for path letter\nexport const isPathLetter = /[MLHVCSQTAZ]/i\n", "import { delimiter } from '../core/regex.js'\nimport { registerMethods } from '../../utils/methods.js'\n\n// Return array of classes on the node\nexport function classes() {\n  const attr = this.attr('class')\n  return attr == null ? [] : attr.trim().split(delimiter)\n}\n\n// Return true if class exists on the node, false otherwise\nexport function hasClass(name) {\n  return this.classes().indexOf(name) !== -1\n}\n\n// Add class to the node\nexport function addClass(name) {\n  if (!this.hasClass(name)) {\n    const array = this.classes()\n    array.push(name)\n    this.attr('class', array.join(' '))\n  }\n\n  return this\n}\n\n// Remove class from the node\nexport function removeClass(name) {\n  if (this.hasClass(name)) {\n    this.attr(\n      'class',\n      this.classes()\n        .filter(function (c) {\n          return c !== name\n        })\n        .join(' ')\n    )\n  }\n\n  return this\n}\n\n// Toggle the presence of a class on the node\nexport function toggleClass(name) {\n  return this.hasClass(name) ? this.removeClass(name) : this.addClass(name)\n}\n\nregisterMethods('Dom', {\n  classes,\n  hasClass,\n  addClass,\n  removeClass,\n  toggleClass\n})\n", "import { isBlank } from '../core/regex.js'\nimport { registerMethods } from '../../utils/methods.js'\n\n// Dynamic style generator\nexport function css(style, val) {\n  const ret = {}\n  if (arguments.length === 0) {\n    // get full style as object\n    this.node.style.cssText\n      .split(/\\s*;\\s*/)\n      .filter(function (el) {\n        return !!el.length\n      })\n      .forEach(function (el) {\n        const t = el.split(/\\s*:\\s*/)\n        ret[t[0]] = t[1]\n      })\n    return ret\n  }\n\n  if (arguments.length < 2) {\n    // get style properties as array\n    if (Array.isArray(style)) {\n      for (const name of style) {\n        const cased = name\n        ret[name] = this.node.style.getPropertyValue(cased)\n      }\n      return ret\n    }\n\n    // get style for property\n    if (typeof style === 'string') {\n      return this.node.style.getPropertyValue(style)\n    }\n\n    // set styles in object\n    if (typeof style === 'object') {\n      for (const name in style) {\n        // set empty string if null/undefined/'' was given\n        this.node.style.setProperty(\n          name,\n          style[name] == null || isBlank.test(style[name]) ? '' : style[name]\n        )\n      }\n    }\n  }\n\n  // set style for property\n  if (arguments.length === 2) {\n    this.node.style.setProperty(\n      style,\n      val == null || isBlank.test(val) ? '' : val\n    )\n  }\n\n  return this\n}\n\n// Show element\nexport function show() {\n  return this.css('display', '')\n}\n\n// Hide element\nexport function hide() {\n  return this.css('display', 'none')\n}\n\n// Is element visible?\nexport function visible() {\n  return this.css('display') !== 'none'\n}\n\nregisterMethods('Dom', {\n  css,\n  show,\n  hide,\n  visible\n})\n", "import { registerMethods } from '../../utils/methods.js'\nimport { filter, map } from '../../utils/utils.js'\n\n// Store data values on svg nodes\nexport function data(a, v, r) {\n  if (a == null) {\n    // get an object of attributes\n    return this.data(\n      map(\n        filter(\n          this.node.attributes,\n          (el) => el.nodeName.indexOf('data-') === 0\n        ),\n        (el) => el.nodeName.slice(5)\n      )\n    )\n  } else if (a instanceof Array) {\n    const data = {}\n    for (const key of a) {\n      data[key] = this.data(key)\n    }\n    return data\n  } else if (typeof a === 'object') {\n    for (v in a) {\n      this.data(v, a[v])\n    }\n  } else if (arguments.length < 2) {\n    try {\n      return JSON.parse(this.attr('data-' + a))\n    } catch (e) {\n      return this.attr('data-' + a)\n    }\n  } else {\n    this.attr(\n      'data-' + a,\n      v === null\n        ? null\n        : r === true || typeof v === 'string' || typeof v === 'number'\n          ? v\n          : JSON.stringify(v)\n    )\n  }\n\n  return this\n}\n\nregisterMethods('Dom', { data })\n", "import { registerMethods } from '../../utils/methods.js'\n\n// Remember arbitrary data\nexport function remember(k, v) {\n  // remember every item in an object individually\n  if (typeof arguments[0] === 'object') {\n    for (const key in k) {\n      this.remember(key, k[key])\n    }\n  } else if (arguments.length === 1) {\n    // retrieve memory\n    return this.memory()[k]\n  } else {\n    // store memory\n    this.memory()[k] = v\n  }\n\n  return this\n}\n\n// Erase a given memory\nexport function forget() {\n  if (arguments.length === 0) {\n    this._memory = {}\n  } else {\n    for (let i = arguments.length - 1; i >= 0; i--) {\n      delete this.memory()[arguments[i]]\n    }\n  }\n  return this\n}\n\n// This triggers creation of a new hidden class which is not performant\n// However, this function is not rarely used so it will not happen frequently\n// Return local memory object\nexport function memory() {\n  return (this._memory = this._memory || {})\n}\n\nregisterMethods('Dom', { remember, forget, memory })\n", "import { hex, isHex, isRgb, rgb, whitespace } from '../modules/core/regex.js'\n\nfunction sixDigitHex(hex) {\n  return hex.length === 4\n    ? [\n        '#',\n        hex.substring(1, 2),\n        hex.substring(1, 2),\n        hex.substring(2, 3),\n        hex.substring(2, 3),\n        hex.substring(3, 4),\n        hex.substring(3, 4)\n      ].join('')\n    : hex\n}\n\nfunction componentHex(component) {\n  const integer = Math.round(component)\n  const bounded = Math.max(0, Math.min(255, integer))\n  const hex = bounded.toString(16)\n  return hex.length === 1 ? '0' + hex : hex\n}\n\nfunction is(object, space) {\n  for (let i = space.length; i--; ) {\n    if (object[space[i]] == null) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction getParameters(a, b) {\n  const params = is(a, 'rgb')\n    ? { _a: a.r, _b: a.g, _c: a.b, _d: 0, space: 'rgb' }\n    : is(a, 'xyz')\n      ? { _a: a.x, _b: a.y, _c: a.z, _d: 0, space: 'xyz' }\n      : is(a, 'hsl')\n        ? { _a: a.h, _b: a.s, _c: a.l, _d: 0, space: 'hsl' }\n        : is(a, 'lab')\n          ? { _a: a.l, _b: a.a, _c: a.b, _d: 0, space: 'lab' }\n          : is(a, 'lch')\n            ? { _a: a.l, _b: a.c, _c: a.h, _d: 0, space: 'lch' }\n            : is(a, 'cmyk')\n              ? { _a: a.c, _b: a.m, _c: a.y, _d: a.k, space: 'cmyk' }\n              : { _a: 0, _b: 0, _c: 0, space: 'rgb' }\n\n  params.space = b || params.space\n  return params\n}\n\nfunction cieSpace(space) {\n  if (space === 'lab' || space === 'xyz' || space === 'lch') {\n    return true\n  } else {\n    return false\n  }\n}\n\nfunction hueToRgb(p, q, t) {\n  if (t < 0) t += 1\n  if (t > 1) t -= 1\n  if (t < 1 / 6) return p + (q - p) * 6 * t\n  if (t < 1 / 2) return q\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n  return p\n}\n\nexport default class Color {\n  constructor(...inputs) {\n    this.init(...inputs)\n  }\n\n  // Test if given value is a color\n  static isColor(color) {\n    return (\n      color && (color instanceof Color || this.isRgb(color) || this.test(color))\n    )\n  }\n\n  // Test if given value is an rgb object\n  static isRgb(color) {\n    return (\n      color &&\n      typeof color.r === 'number' &&\n      typeof color.g === 'number' &&\n      typeof color.b === 'number'\n    )\n  }\n\n  /*\n  Generating random colors\n  */\n  static random(mode = 'vibrant', t) {\n    // Get the math modules\n    const { random, round, sin, PI: pi } = Math\n\n    // Run the correct generator\n    if (mode === 'vibrant') {\n      const l = (81 - 57) * random() + 57\n      const c = (83 - 45) * random() + 45\n      const h = 360 * random()\n      const color = new Color(l, c, h, 'lch')\n      return color\n    } else if (mode === 'sine') {\n      t = t == null ? random() : t\n      const r = round(80 * sin((2 * pi * t) / 0.5 + 0.01) + 150)\n      const g = round(50 * sin((2 * pi * t) / 0.5 + 4.6) + 200)\n      const b = round(100 * sin((2 * pi * t) / 0.5 + 2.3) + 150)\n      const color = new Color(r, g, b)\n      return color\n    } else if (mode === 'pastel') {\n      const l = (94 - 86) * random() + 86\n      const c = (26 - 9) * random() + 9\n      const h = 360 * random()\n      const color = new Color(l, c, h, 'lch')\n      return color\n    } else if (mode === 'dark') {\n      const l = 10 + 10 * random()\n      const c = (125 - 75) * random() + 86\n      const h = 360 * random()\n      const color = new Color(l, c, h, 'lch')\n      return color\n    } else if (mode === 'rgb') {\n      const r = 255 * random()\n      const g = 255 * random()\n      const b = 255 * random()\n      const color = new Color(r, g, b)\n      return color\n    } else if (mode === 'lab') {\n      const l = 100 * random()\n      const a = 256 * random() - 128\n      const b = 256 * random() - 128\n      const color = new Color(l, a, b, 'lab')\n      return color\n    } else if (mode === 'grey') {\n      const grey = 255 * random()\n      const color = new Color(grey, grey, grey)\n      return color\n    } else {\n      throw new Error('Unsupported random color mode')\n    }\n  }\n\n  // Test if given value is a color string\n  static test(color) {\n    return typeof color === 'string' && (isHex.test(color) || isRgb.test(color))\n  }\n\n  cmyk() {\n    // Get the rgb values for the current color\n    const { _a, _b, _c } = this.rgb()\n    const [r, g, b] = [_a, _b, _c].map((v) => v / 255)\n\n    // Get the cmyk values in an unbounded format\n    const k = Math.min(1 - r, 1 - g, 1 - b)\n\n    if (k === 1) {\n      // Catch the black case\n      return new Color(0, 0, 0, 1, 'cmyk')\n    }\n\n    const c = (1 - r - k) / (1 - k)\n    const m = (1 - g - k) / (1 - k)\n    const y = (1 - b - k) / (1 - k)\n\n    // Construct the new color\n    const color = new Color(c, m, y, k, 'cmyk')\n    return color\n  }\n\n  hsl() {\n    // Get the rgb values\n    const { _a, _b, _c } = this.rgb()\n    const [r, g, b] = [_a, _b, _c].map((v) => v / 255)\n\n    // Find the maximum and minimum values to get the lightness\n    const max = Math.max(r, g, b)\n    const min = Math.min(r, g, b)\n    const l = (max + min) / 2\n\n    // If the r, g, v values are identical then we are grey\n    const isGrey = max === min\n\n    // Calculate the hue and saturation\n    const delta = max - min\n    const s = isGrey\n      ? 0\n      : l > 0.5\n        ? delta / (2 - max - min)\n        : delta / (max + min)\n    const h = isGrey\n      ? 0\n      : max === r\n        ? ((g - b) / delta + (g < b ? 6 : 0)) / 6\n        : max === g\n          ? ((b - r) / delta + 2) / 6\n          : max === b\n            ? ((r - g) / delta + 4) / 6\n            : 0\n\n    // Construct and return the new color\n    const color = new Color(360 * h, 100 * s, 100 * l, 'hsl')\n    return color\n  }\n\n  init(a = 0, b = 0, c = 0, d = 0, space = 'rgb') {\n    // This catches the case when a falsy value is passed like ''\n    a = !a ? 0 : a\n\n    // Reset all values in case the init function is rerun with new color space\n    if (this.space) {\n      for (const component in this.space) {\n        delete this[this.space[component]]\n      }\n    }\n\n    if (typeof a === 'number') {\n      // Allow for the case that we don't need d...\n      space = typeof d === 'string' ? d : space\n      d = typeof d === 'string' ? 0 : d\n\n      // Assign the values straight to the color\n      Object.assign(this, { _a: a, _b: b, _c: c, _d: d, space })\n      // If the user gave us an array, make the color from it\n    } else if (a instanceof Array) {\n      this.space = b || (typeof a[3] === 'string' ? a[3] : a[4]) || 'rgb'\n      Object.assign(this, { _a: a[0], _b: a[1], _c: a[2], _d: a[3] || 0 })\n    } else if (a instanceof Object) {\n      // Set the object up and assign its values directly\n      const values = getParameters(a, b)\n      Object.assign(this, values)\n    } else if (typeof a === 'string') {\n      if (isRgb.test(a)) {\n        const noWhitespace = a.replace(whitespace, '')\n        const [_a, _b, _c] = rgb\n          .exec(noWhitespace)\n          .slice(1, 4)\n          .map((v) => parseInt(v))\n        Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\n      } else if (isHex.test(a)) {\n        const hexParse = (v) => parseInt(v, 16)\n        const [, _a, _b, _c] = hex.exec(sixDigitHex(a)).map(hexParse)\n        Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\n      } else throw Error(\"Unsupported string format, can't construct Color\")\n    }\n\n    // Now add the components as a convenience\n    const { _a, _b, _c, _d } = this\n    const components =\n      this.space === 'rgb'\n        ? { r: _a, g: _b, b: _c }\n        : this.space === 'xyz'\n          ? { x: _a, y: _b, z: _c }\n          : this.space === 'hsl'\n            ? { h: _a, s: _b, l: _c }\n            : this.space === 'lab'\n              ? { l: _a, a: _b, b: _c }\n              : this.space === 'lch'\n                ? { l: _a, c: _b, h: _c }\n                : this.space === 'cmyk'\n                  ? { c: _a, m: _b, y: _c, k: _d }\n                  : {}\n    Object.assign(this, components)\n  }\n\n  lab() {\n    // Get the xyz color\n    const { x, y, z } = this.xyz()\n\n    // Get the lab components\n    const l = 116 * y - 16\n    const a = 500 * (x - y)\n    const b = 200 * (y - z)\n\n    // Construct and return a new color\n    const color = new Color(l, a, b, 'lab')\n    return color\n  }\n\n  lch() {\n    // Get the lab color directly\n    const { l, a, b } = this.lab()\n\n    // Get the chromaticity and the hue using polar coordinates\n    const c = Math.sqrt(a ** 2 + b ** 2)\n    let h = (180 * Math.atan2(b, a)) / Math.PI\n    if (h < 0) {\n      h *= -1\n      h = 360 - h\n    }\n\n    // Make a new color and return it\n    const color = new Color(l, c, h, 'lch')\n    return color\n  }\n  /*\n  Conversion Methods\n  */\n\n  rgb() {\n    if (this.space === 'rgb') {\n      return this\n    } else if (cieSpace(this.space)) {\n      // Convert to the xyz color space\n      let { x, y, z } = this\n      if (this.space === 'lab' || this.space === 'lch') {\n        // Get the values in the lab space\n        let { l, a, b } = this\n        if (this.space === 'lch') {\n          const { c, h } = this\n          const dToR = Math.PI / 180\n          a = c * Math.cos(dToR * h)\n          b = c * Math.sin(dToR * h)\n        }\n\n        // Undo the nonlinear function\n        const yL = (l + 16) / 116\n        const xL = a / 500 + yL\n        const zL = yL - b / 200\n\n        // Get the xyz values\n        const ct = 16 / 116\n        const mx = 0.008856\n        const nm = 7.787\n        x = 0.95047 * (xL ** 3 > mx ? xL ** 3 : (xL - ct) / nm)\n        y = 1.0 * (yL ** 3 > mx ? yL ** 3 : (yL - ct) / nm)\n        z = 1.08883 * (zL ** 3 > mx ? zL ** 3 : (zL - ct) / nm)\n      }\n\n      // Convert xyz to unbounded rgb values\n      const rU = x * 3.2406 + y * -1.5372 + z * -0.4986\n      const gU = x * -0.9689 + y * 1.8758 + z * 0.0415\n      const bU = x * 0.0557 + y * -0.204 + z * 1.057\n\n      // Convert the values to true rgb values\n      const pow = Math.pow\n      const bd = 0.0031308\n      const r = rU > bd ? 1.055 * pow(rU, 1 / 2.4) - 0.055 : 12.92 * rU\n      const g = gU > bd ? 1.055 * pow(gU, 1 / 2.4) - 0.055 : 12.92 * gU\n      const b = bU > bd ? 1.055 * pow(bU, 1 / 2.4) - 0.055 : 12.92 * bU\n\n      // Make and return the color\n      const color = new Color(255 * r, 255 * g, 255 * b)\n      return color\n    } else if (this.space === 'hsl') {\n      // https://bgrins.github.io/TinyColor/docs/tinycolor.html\n      // Get the current hsl values\n      let { h, s, l } = this\n      h /= 360\n      s /= 100\n      l /= 100\n\n      // If we are grey, then just make the color directly\n      if (s === 0) {\n        l *= 255\n        const color = new Color(l, l, l)\n        return color\n      }\n\n      // TODO I have no idea what this does :D If you figure it out, tell me!\n      const q = l < 0.5 ? l * (1 + s) : l + s - l * s\n      const p = 2 * l - q\n\n      // Get the rgb values\n      const r = 255 * hueToRgb(p, q, h + 1 / 3)\n      const g = 255 * hueToRgb(p, q, h)\n      const b = 255 * hueToRgb(p, q, h - 1 / 3)\n\n      // Make a new color\n      const color = new Color(r, g, b)\n      return color\n    } else if (this.space === 'cmyk') {\n      // https://gist.github.com/felipesabino/5066336\n      // Get the normalised cmyk values\n      const { c, m, y, k } = this\n\n      // Get the rgb values\n      const r = 255 * (1 - Math.min(1, c * (1 - k) + k))\n      const g = 255 * (1 - Math.min(1, m * (1 - k) + k))\n      const b = 255 * (1 - Math.min(1, y * (1 - k) + k))\n\n      // Form the color and return it\n      const color = new Color(r, g, b)\n      return color\n    } else {\n      return this\n    }\n  }\n\n  toArray() {\n    const { _a, _b, _c, _d, space } = this\n    return [_a, _b, _c, _d, space]\n  }\n\n  toHex() {\n    const [r, g, b] = this._clamped().map(componentHex)\n    return `#${r}${g}${b}`\n  }\n\n  toRgb() {\n    const [rV, gV, bV] = this._clamped()\n    const string = `rgb(${rV},${gV},${bV})`\n    return string\n  }\n\n  toString() {\n    return this.toHex()\n  }\n\n  xyz() {\n    // Normalise the red, green and blue values\n    const { _a: r255, _b: g255, _c: b255 } = this.rgb()\n    const [r, g, b] = [r255, g255, b255].map((v) => v / 255)\n\n    // Convert to the lab rgb space\n    const rL = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92\n    const gL = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92\n    const bL = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92\n\n    // Convert to the xyz color space without bounding the values\n    const xU = (rL * 0.4124 + gL * 0.3576 + bL * 0.1805) / 0.95047\n    const yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.0\n    const zU = (rL * 0.0193 + gL * 0.1192 + bL * 0.9505) / 1.08883\n\n    // Get the proper xyz values by applying the bounding\n    const x = xU > 0.008856 ? Math.pow(xU, 1 / 3) : 7.787 * xU + 16 / 116\n    const y = yU > 0.008856 ? Math.pow(yU, 1 / 3) : 7.787 * yU + 16 / 116\n    const z = zU > 0.008856 ? Math.pow(zU, 1 / 3) : 7.787 * zU + 16 / 116\n\n    // Make and return the color\n    const color = new Color(x, y, z, 'xyz')\n    return color\n  }\n\n  /*\n  Input and Output methods\n  */\n\n  _clamped() {\n    const { _a, _b, _c } = this.rgb()\n    const { max, min, round } = Math\n    const format = (v) => max(0, min(round(v), 255))\n    return [_a, _b, _c].map(format)\n  }\n\n  /*\n  Constructing colors\n  */\n}\n", "import Matrix from './Matrix.js'\n\nexport default class Point {\n  // Initialize\n  constructor(...args) {\n    this.init(...args)\n  }\n\n  // Clone point\n  clone() {\n    return new Point(this)\n  }\n\n  init(x, y) {\n    const base = { x: 0, y: 0 }\n\n    // ensure source as object\n    const source = Array.isArray(x)\n      ? { x: x[0], y: x[1] }\n      : typeof x === 'object'\n        ? { x: x.x, y: x.y }\n        : { x: x, y: y }\n\n    // merge source\n    this.x = source.x == null ? base.x : source.x\n    this.y = source.y == null ? base.y : source.y\n\n    return this\n  }\n\n  toArray() {\n    return [this.x, this.y]\n  }\n\n  transform(m) {\n    return this.clone().transformO(m)\n  }\n\n  // Transform point with matrix\n  transformO(m) {\n    if (!Matrix.isMatrixLike(m)) {\n      m = new Matrix(m)\n    }\n\n    const { x, y } = this\n\n    // Perform the matrix multiplication\n    this.x = m.a * x + m.c * y + m.e\n    this.y = m.b * x + m.d * y + m.f\n\n    return this\n  }\n}\n\nexport function point(x, y) {\n  return new Point(x, y).transformO(this.screenCTM().inverseO())\n}\n", "import { delimiter } from '../modules/core/regex.js'\nimport { radians } from '../utils/utils.js'\nimport { register } from '../utils/adopter.js'\nimport Element from '../elements/Element.js'\nimport Point from './Point.js'\n\nfunction closeEnough(a, b, threshold) {\n  return Math.abs(b - a) < (threshold || 1e-6)\n}\n\nexport default class Matrix {\n  constructor(...args) {\n    this.init(...args)\n  }\n\n  static formatTransforms(o) {\n    // Get all of the parameters required to form the matrix\n    const flipBoth = o.flip === 'both' || o.flip === true\n    const flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1\n    const flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1\n    const skewX =\n      o.skew && o.skew.length\n        ? o.skew[0]\n        : isFinite(o.skew)\n          ? o.skew\n          : isFinite(o.skewX)\n            ? o.skewX\n            : 0\n    const skewY =\n      o.skew && o.skew.length\n        ? o.skew[1]\n        : isFinite(o.skew)\n          ? o.skew\n          : isFinite(o.skewY)\n            ? o.skewY\n            : 0\n    const scaleX =\n      o.scale && o.scale.length\n        ? o.scale[0] * flipX\n        : isFinite(o.scale)\n          ? o.scale * flipX\n          : isFinite(o.scaleX)\n            ? o.scaleX * flipX\n            : flipX\n    const scaleY =\n      o.scale && o.scale.length\n        ? o.scale[1] * flipY\n        : isFinite(o.scale)\n          ? o.scale * flipY\n          : isFinite(o.scaleY)\n            ? o.scaleY * flipY\n            : flipY\n    const shear = o.shear || 0\n    const theta = o.rotate || o.theta || 0\n    const origin = new Point(\n      o.origin || o.around || o.ox || o.originX,\n      o.oy || o.originY\n    )\n    const ox = origin.x\n    const oy = origin.y\n    // We need Point to be invalid if nothing was passed because we cannot default to 0 here. That is why NaN\n    const position = new Point(\n      o.position || o.px || o.positionX || NaN,\n      o.py || o.positionY || NaN\n    )\n    const px = position.x\n    const py = position.y\n    const translate = new Point(\n      o.translate || o.tx || o.translateX,\n      o.ty || o.translateY\n    )\n    const tx = translate.x\n    const ty = translate.y\n    const relative = new Point(\n      o.relative || o.rx || o.relativeX,\n      o.ry || o.relativeY\n    )\n    const rx = relative.x\n    const ry = relative.y\n\n    // Populate all of the values\n    return {\n      scaleX,\n      scaleY,\n      skewX,\n      skewY,\n      shear,\n      theta,\n      rx,\n      ry,\n      tx,\n      ty,\n      ox,\n      oy,\n      px,\n      py\n    }\n  }\n\n  static fromArray(a) {\n    return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] }\n  }\n\n  static isMatrixLike(o) {\n    return (\n      o.a != null ||\n      o.b != null ||\n      o.c != null ||\n      o.d != null ||\n      o.e != null ||\n      o.f != null\n    )\n  }\n\n  // left matrix, right matrix, target matrix which is overwritten\n  static matrixMultiply(l, r, o) {\n    // Work out the product directly\n    const a = l.a * r.a + l.c * r.b\n    const b = l.b * r.a + l.d * r.b\n    const c = l.a * r.c + l.c * r.d\n    const d = l.b * r.c + l.d * r.d\n    const e = l.e + l.a * r.e + l.c * r.f\n    const f = l.f + l.b * r.e + l.d * r.f\n\n    // make sure to use local variables because l/r and o could be the same\n    o.a = a\n    o.b = b\n    o.c = c\n    o.d = d\n    o.e = e\n    o.f = f\n\n    return o\n  }\n\n  around(cx, cy, matrix) {\n    return this.clone().aroundO(cx, cy, matrix)\n  }\n\n  // Transform around a center point\n  aroundO(cx, cy, matrix) {\n    const dx = cx || 0\n    const dy = cy || 0\n    return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)\n  }\n\n  // Clones this matrix\n  clone() {\n    return new Matrix(this)\n  }\n\n  // Decomposes this matrix into its affine parameters\n  decompose(cx = 0, cy = 0) {\n    // Get the parameters from the matrix\n    const a = this.a\n    const b = this.b\n    const c = this.c\n    const d = this.d\n    const e = this.e\n    const f = this.f\n\n    // Figure out if the winding direction is clockwise or counterclockwise\n    const determinant = a * d - b * c\n    const ccw = determinant > 0 ? 1 : -1\n\n    // Since we only shear in x, we can use the x basis to get the x scale\n    // and the rotation of the resulting matrix\n    const sx = ccw * Math.sqrt(a * a + b * b)\n    const thetaRad = Math.atan2(ccw * b, ccw * a)\n    const theta = (180 / Math.PI) * thetaRad\n    const ct = Math.cos(thetaRad)\n    const st = Math.sin(thetaRad)\n\n    // We can then solve the y basis vector simultaneously to get the other\n    // two affine parameters directly from these parameters\n    const lam = (a * c + b * d) / determinant\n    const sy = (c * sx) / (lam * a - b) || (d * sx) / (lam * b + a)\n\n    // Use the translations\n    const tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\n    const ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy)\n\n    // Construct the decomposition and return it\n    return {\n      // Return the affine parameters\n      scaleX: sx,\n      scaleY: sy,\n      shear: lam,\n      rotate: theta,\n      translateX: tx,\n      translateY: ty,\n      originX: cx,\n      originY: cy,\n\n      // Return the matrix parameters\n      a: this.a,\n      b: this.b,\n      c: this.c,\n      d: this.d,\n      e: this.e,\n      f: this.f\n    }\n  }\n\n  // Check if two matrices are equal\n  equals(other) {\n    if (other === this) return true\n    const comp = new Matrix(other)\n    return (\n      closeEnough(this.a, comp.a) &&\n      closeEnough(this.b, comp.b) &&\n      closeEnough(this.c, comp.c) &&\n      closeEnough(this.d, comp.d) &&\n      closeEnough(this.e, comp.e) &&\n      closeEnough(this.f, comp.f)\n    )\n  }\n\n  // Flip matrix on x or y, at a given offset\n  flip(axis, around) {\n    return this.clone().flipO(axis, around)\n  }\n\n  flipO(axis, around) {\n    return axis === 'x'\n      ? this.scaleO(-1, 1, around, 0)\n      : axis === 'y'\n        ? this.scaleO(1, -1, 0, around)\n        : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point\n  }\n\n  // Initialize\n  init(source) {\n    const base = Matrix.fromArray([1, 0, 0, 1, 0, 0])\n\n    // ensure source as object\n    source =\n      source instanceof Element\n        ? source.matrixify()\n        : typeof source === 'string'\n          ? Matrix.fromArray(source.split(delimiter).map(parseFloat))\n          : Array.isArray(source)\n            ? Matrix.fromArray(source)\n            : typeof source === 'object' && Matrix.isMatrixLike(source)\n              ? source\n              : typeof source === 'object'\n                ? new Matrix().transform(source)\n                : arguments.length === 6\n                  ? Matrix.fromArray([].slice.call(arguments))\n                  : base\n\n    // Merge the source matrix with the base matrix\n    this.a = source.a != null ? source.a : base.a\n    this.b = source.b != null ? source.b : base.b\n    this.c = source.c != null ? source.c : base.c\n    this.d = source.d != null ? source.d : base.d\n    this.e = source.e != null ? source.e : base.e\n    this.f = source.f != null ? source.f : base.f\n\n    return this\n  }\n\n  inverse() {\n    return this.clone().inverseO()\n  }\n\n  // Inverses matrix\n  inverseO() {\n    // Get the current parameters out of the matrix\n    const a = this.a\n    const b = this.b\n    const c = this.c\n    const d = this.d\n    const e = this.e\n    const f = this.f\n\n    // Invert the 2x2 matrix in the top left\n    const det = a * d - b * c\n    if (!det) throw new Error('Cannot invert ' + this)\n\n    // Calculate the top 2x2 matrix\n    const na = d / det\n    const nb = -b / det\n    const nc = -c / det\n    const nd = a / det\n\n    // Apply the inverted matrix to the top right\n    const ne = -(na * e + nc * f)\n    const nf = -(nb * e + nd * f)\n\n    // Construct the inverted matrix\n    this.a = na\n    this.b = nb\n    this.c = nc\n    this.d = nd\n    this.e = ne\n    this.f = nf\n\n    return this\n  }\n\n  lmultiply(matrix) {\n    return this.clone().lmultiplyO(matrix)\n  }\n\n  lmultiplyO(matrix) {\n    const r = this\n    const l = matrix instanceof Matrix ? matrix : new Matrix(matrix)\n\n    return Matrix.matrixMultiply(l, r, this)\n  }\n\n  // Left multiplies by the given matrix\n  multiply(matrix) {\n    return this.clone().multiplyO(matrix)\n  }\n\n  multiplyO(matrix) {\n    // Get the matrices\n    const l = this\n    const r = matrix instanceof Matrix ? matrix : new Matrix(matrix)\n\n    return Matrix.matrixMultiply(l, r, this)\n  }\n\n  // Rotate matrix\n  rotate(r, cx, cy) {\n    return this.clone().rotateO(r, cx, cy)\n  }\n\n  rotateO(r, cx = 0, cy = 0) {\n    // Convert degrees to radians\n    r = radians(r)\n\n    const cos = Math.cos(r)\n    const sin = Math.sin(r)\n\n    const { a, b, c, d, e, f } = this\n\n    this.a = a * cos - b * sin\n    this.b = b * cos + a * sin\n    this.c = c * cos - d * sin\n    this.d = d * cos + c * sin\n    this.e = e * cos - f * sin + cy * sin - cx * cos + cx\n    this.f = f * cos + e * sin - cx * sin - cy * cos + cy\n\n    return this\n  }\n\n  // Scale matrix\n  scale() {\n    return this.clone().scaleO(...arguments)\n  }\n\n  scaleO(x, y = x, cx = 0, cy = 0) {\n    // Support uniform scaling\n    if (arguments.length === 3) {\n      cy = cx\n      cx = y\n      y = x\n    }\n\n    const { a, b, c, d, e, f } = this\n\n    this.a = a * x\n    this.b = b * y\n    this.c = c * x\n    this.d = d * y\n    this.e = e * x - cx * x + cx\n    this.f = f * y - cy * y + cy\n\n    return this\n  }\n\n  // Shear matrix\n  shear(a, cx, cy) {\n    return this.clone().shearO(a, cx, cy)\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  shearO(lx, cx = 0, cy = 0) {\n    const { a, b, c, d, e, f } = this\n\n    this.a = a + b * lx\n    this.c = c + d * lx\n    this.e = e + f * lx - cy * lx\n\n    return this\n  }\n\n  // Skew Matrix\n  skew() {\n    return this.clone().skewO(...arguments)\n  }\n\n  skewO(x, y = x, cx = 0, cy = 0) {\n    // support uniformal skew\n    if (arguments.length === 3) {\n      cy = cx\n      cx = y\n      y = x\n    }\n\n    // Convert degrees to radians\n    x = radians(x)\n    y = radians(y)\n\n    const lx = Math.tan(x)\n    const ly = Math.tan(y)\n\n    const { a, b, c, d, e, f } = this\n\n    this.a = a + b * lx\n    this.b = b + a * ly\n    this.c = c + d * lx\n    this.d = d + c * ly\n    this.e = e + f * lx - cy * lx\n    this.f = f + e * ly - cx * ly\n\n    return this\n  }\n\n  // SkewX\n  skewX(x, cx, cy) {\n    return this.skew(x, 0, cx, cy)\n  }\n\n  // SkewY\n  skewY(y, cx, cy) {\n    return this.skew(0, y, cx, cy)\n  }\n\n  toArray() {\n    return [this.a, this.b, this.c, this.d, this.e, this.f]\n  }\n\n  // Convert matrix to string\n  toString() {\n    return (\n      'matrix(' +\n      this.a +\n      ',' +\n      this.b +\n      ',' +\n      this.c +\n      ',' +\n      this.d +\n      ',' +\n      this.e +\n      ',' +\n      this.f +\n      ')'\n    )\n  }\n\n  // Transform a matrix into another matrix by manipulating the space\n  transform(o) {\n    // Check if o is a matrix and then left multiply it directly\n    if (Matrix.isMatrixLike(o)) {\n      const matrix = new Matrix(o)\n      return matrix.multiplyO(this)\n    }\n\n    // Get the proposed transformations and the current transformations\n    const t = Matrix.formatTransforms(o)\n    const current = this\n    const { x: ox, y: oy } = new Point(t.ox, t.oy).transform(current)\n\n    // Construct the resulting matrix\n    const transformer = new Matrix()\n      .translateO(t.rx, t.ry)\n      .lmultiplyO(current)\n      .translateO(-ox, -oy)\n      .scaleO(t.scaleX, t.scaleY)\n      .skewO(t.skewX, t.skewY)\n      .shearO(t.shear)\n      .rotateO(t.theta)\n      .translateO(ox, oy)\n\n    // If we want the origin at a particular place, we force it there\n    if (isFinite(t.px) || isFinite(t.py)) {\n      const origin = new Point(ox, oy).transform(transformer)\n      // TODO: Replace t.px with isFinite(t.px)\n      // Doesn't work because t.px is also 0 if it wasn't passed\n      const dx = isFinite(t.px) ? t.px - origin.x : 0\n      const dy = isFinite(t.py) ? t.py - origin.y : 0\n      transformer.translateO(dx, dy)\n    }\n\n    // Translate now after positioning\n    transformer.translateO(t.tx, t.ty)\n    return transformer\n  }\n\n  // Translate matrix\n  translate(x, y) {\n    return this.clone().translateO(x, y)\n  }\n\n  translateO(x, y) {\n    this.e += x || 0\n    this.f += y || 0\n    return this\n  }\n\n  valueOf() {\n    return {\n      a: this.a,\n      b: this.b,\n      c: this.c,\n      d: this.d,\n      e: this.e,\n      f: this.f\n    }\n  }\n}\n\nexport function ctm() {\n  return new Matrix(this.node.getCTM())\n}\n\nexport function screenCTM() {\n  try {\n    /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\n       This is needed because FF does not return the transformation matrix\n       for the inner coordinate system when getScreenCTM() is called on nested svgs.\n       However all other Browsers do that */\n    if (typeof this.isRoot === 'function' && !this.isRoot()) {\n      const rect = this.rect(1, 1)\n      const m = rect.node.getScreenCTM()\n      rect.remove()\n      return new Matrix(m)\n    }\n    return new Matrix(this.node.getScreenCTM())\n  } catch (e) {\n    console.warn(\n      `Cannot get CTM from SVG node ${this.node.nodeName}. Is the element rendered?`\n    )\n    return new Matrix()\n  }\n}\n\nregister(Matrix, 'Matrix')\n", "import { globals } from '../../utils/window.js'\nimport { makeInstance } from '../../utils/adopter.js'\n\nexport default function parser() {\n  // Reuse cached element if possible\n  if (!parser.nodes) {\n    const svg = makeInstance().size(2, 0)\n    svg.node.style.cssText = [\n      'opacity: 0',\n      'position: absolute',\n      'left: -100%',\n      'top: -100%',\n      'overflow: hidden'\n    ].join(';')\n\n    svg.attr('focusable', 'false')\n    svg.attr('aria-hidden', 'true')\n\n    const path = svg.path().node\n\n    parser.nodes = { svg, path }\n  }\n\n  if (!parser.nodes.svg.node.parentNode) {\n    const b = globals.document.body || globals.document.documentElement\n    parser.nodes.svg.addTo(b)\n  }\n\n  return parser.nodes\n}\n", "import { delimiter } from '../modules/core/regex.js'\nimport { globals } from '../utils/window.js'\nimport { register } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Matrix from './Matrix.js'\nimport Point from './Point.js'\nimport parser from '../modules/core/parser.js'\n\nexport function isNulledBox(box) {\n  return !box.width && !box.height && !box.x && !box.y\n}\n\nexport function domContains(node) {\n  return (\n    node === globals.document ||\n    (\n      globals.document.documentElement.contains ||\n      function (node) {\n        // This is IE - it does not support contains() for top-level SVGs\n        while (node.parentNode) {\n          node = node.parentNode\n        }\n        return node === globals.document\n      }\n    ).call(globals.document.documentElement, node)\n  )\n}\n\nexport default class Box {\n  constructor(...args) {\n    this.init(...args)\n  }\n\n  addOffset() {\n    // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\n    this.x += globals.window.pageXOffset\n    this.y += globals.window.pageYOffset\n    return new Box(this)\n  }\n\n  init(source) {\n    const base = [0, 0, 0, 0]\n    source =\n      typeof source === 'string'\n        ? source.split(delimiter).map(parseFloat)\n        : Array.isArray(source)\n          ? source\n          : typeof source === 'object'\n            ? [\n                source.left != null ? source.left : source.x,\n                source.top != null ? source.top : source.y,\n                source.width,\n                source.height\n              ]\n            : arguments.length === 4\n              ? [].slice.call(arguments)\n              : base\n\n    this.x = source[0] || 0\n    this.y = source[1] || 0\n    this.width = this.w = source[2] || 0\n    this.height = this.h = source[3] || 0\n\n    // Add more bounding box properties\n    this.x2 = this.x + this.w\n    this.y2 = this.y + this.h\n    this.cx = this.x + this.w / 2\n    this.cy = this.y + this.h / 2\n\n    return this\n  }\n\n  isNulled() {\n    return isNulledBox(this)\n  }\n\n  // Merge rect box with another, return a new instance\n  merge(box) {\n    const x = Math.min(this.x, box.x)\n    const y = Math.min(this.y, box.y)\n    const width = Math.max(this.x + this.width, box.x + box.width) - x\n    const height = Math.max(this.y + this.height, box.y + box.height) - y\n\n    return new Box(x, y, width, height)\n  }\n\n  toArray() {\n    return [this.x, this.y, this.width, this.height]\n  }\n\n  toString() {\n    return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height\n  }\n\n  transform(m) {\n    if (!(m instanceof Matrix)) {\n      m = new Matrix(m)\n    }\n\n    let xMin = Infinity\n    let xMax = -Infinity\n    let yMin = Infinity\n    let yMax = -Infinity\n\n    const pts = [\n      new Point(this.x, this.y),\n      new Point(this.x2, this.y),\n      new Point(this.x, this.y2),\n      new Point(this.x2, this.y2)\n    ]\n\n    pts.forEach(function (p) {\n      p = p.transform(m)\n      xMin = Math.min(xMin, p.x)\n      xMax = Math.max(xMax, p.x)\n      yMin = Math.min(yMin, p.y)\n      yMax = Math.max(yMax, p.y)\n    })\n\n    return new Box(xMin, yMin, xMax - xMin, yMax - yMin)\n  }\n}\n\nfunction getBox(el, getBBoxFn, retry) {\n  let box\n\n  try {\n    // Try to get the box with the provided function\n    box = getBBoxFn(el.node)\n\n    // If the box is worthless and not even in the dom, retry\n    // by throwing an error here...\n    if (isNulledBox(box) && !domContains(el.node)) {\n      throw new Error('Element not in the dom')\n    }\n  } catch (e) {\n    // ... and calling the retry handler here\n    box = retry(el)\n  }\n\n  return box\n}\n\nexport function bbox() {\n  // Function to get bbox is getBBox()\n  const getBBox = (node) => node.getBBox()\n\n  // Take all measures so that a stupid browser renders the element\n  // so we can get the bbox from it when we try again\n  const retry = (el) => {\n    try {\n      const clone = el.clone().addTo(parser().svg).show()\n      const box = clone.node.getBBox()\n      clone.remove()\n      return box\n    } catch (e) {\n      // We give up...\n      throw new Error(\n        `Getting bbox of element \"${\n          el.node.nodeName\n        }\" is not possible: ${e.toString()}`\n      )\n    }\n  }\n\n  const box = getBox(this, getBBox, retry)\n  const bbox = new Box(box)\n\n  return bbox\n}\n\nexport function rbox(el) {\n  const getRBox = (node) => node.getBoundingClientRect()\n  const retry = (el) => {\n    // There is no point in trying tricks here because if we insert the element into the dom ourselves\n    // it obviously will be at the wrong position\n    throw new Error(\n      `Getting rbox of element \"${el.node.nodeName}\" is not possible`\n    )\n  }\n\n  const box = getBox(this, getRBox, retry)\n  const rbox = new Box(box)\n\n  // If an element was passed, we want the bbox in the coordinate system of that element\n  if (el) {\n    return rbox.transform(el.screenCTM().inverseO())\n  }\n\n  // Else we want it in absolute screen coordinates\n  // Therefore we need to add the scrollOffset\n  return rbox.addOffset()\n}\n\n// Checks whether the given point is inside the bounding box\nexport function inside(x, y) {\n  const box = this.bbox()\n\n  return (\n    x > box.x && y > box.y && x < box.x + box.width && y < box.y + box.height\n  )\n}\n\nregisterMethods({\n  viewbox: {\n    viewbox(x, y, width, height) {\n      // act as getter\n      if (x == null) return new Box(this.attr('viewBox'))\n\n      // act as setter\n      return this.attr('viewBox', new Box(x, y, width, height))\n    },\n\n    zoom(level, point) {\n      // Its best to rely on the attributes here and here is why:\n      // clientXYZ: Doesn't work on non-root svgs because they dont have a CSSBox (silly!)\n      // getBoundingClientRect: Doesn't work because Chrome just ignores width and height of nested svgs completely\n      //                        that means, their clientRect is always as big as the content.\n      //                        Furthermore this size is incorrect if the element is further transformed by its parents\n      // computedStyle: Only returns meaningful values if css was used with px. We dont go this route here!\n      // getBBox: returns the bounding box of its content - that doesn't help!\n      let { width, height } = this.attr(['width', 'height'])\n\n      // Width and height is a string when a number with a unit is present which we can't use\n      // So we try clientXYZ\n      if (\n        (!width && !height) ||\n        typeof width === 'string' ||\n        typeof height === 'string'\n      ) {\n        width = this.node.clientWidth\n        height = this.node.clientHeight\n      }\n\n      // Giving up...\n      if (!width || !height) {\n        throw new Error(\n          'Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element'\n        )\n      }\n\n      const v = this.viewbox()\n\n      const zoomX = width / v.width\n      const zoomY = height / v.height\n      const zoom = Math.min(zoomX, zoomY)\n\n      if (level == null) {\n        return zoom\n      }\n\n      let zoomAmount = zoom / level\n\n      // Set the zoomAmount to the highest value which is safe to process and recover from\n      // The * 100 is a bit of wiggle room for the matrix transformation\n      if (zoomAmount === Infinity) zoomAmount = Number.MAX_SAFE_INTEGER / 100\n\n      point =\n        point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y)\n\n      const box = new Box(v).transform(\n        new Matrix({ scale: zoomAmount, origin: point })\n      )\n\n      return this.viewbox(box)\n    }\n  }\n})\n\nregister(Box, 'Box')\n", "import { extend } from '../utils/adopter.js'\n// import { subClassArray } from './ArrayPolyfill.js'\n\nclass List extends Array {\n  constructor(arr = [], ...args) {\n    super(arr, ...args)\n    if (typeof arr === 'number') return this\n    this.length = 0\n    this.push(...arr)\n  }\n}\n\n/* = subClassArray('List', Array, function (arr = []) {\n  // This catches the case, that native map tries to create an array with new Array(1)\n  if (typeof arr === 'number') return this\n  this.length = 0\n  this.push(...arr)\n}) */\n\nexport default List\n\nextend([List], {\n  each(fnOrMethodName, ...args) {\n    if (typeof fnOrMethodName === 'function') {\n      return this.map((el, i, arr) => {\n        return fnOrMethodName.call(el, el, i, arr)\n      })\n    } else {\n      return this.map((el) => {\n        return el[fnOrMethodName](...args)\n      })\n    }\n  },\n\n  toArray() {\n    return Array.prototype.concat.apply([], this)\n  }\n})\n\nconst reserved = ['toArray', 'constructor', 'each']\n\nList.extend = function (methods) {\n  methods = methods.reduce((obj, name) => {\n    // Don't overwrite own methods\n    if (reserved.includes(name)) return obj\n\n    // Don't add private methods\n    if (name[0] === '_') return obj\n\n    // Allow access to original Array methods through a prefix\n    if (name in Array.prototype) {\n      obj['$' + name] = Array.prototype[name]\n    }\n\n    // Relay every call to each()\n    obj[name] = function (...attrs) {\n      return this.each(name, ...attrs)\n    }\n    return obj\n  }, {})\n\n  extend([List], methods)\n}\n", "import { adopt } from '../../utils/adopter.js'\nimport { globals } from '../../utils/window.js'\nimport { map } from '../../utils/utils.js'\nimport List from '../../types/List.js'\n\nexport default function baseFind(query, parent) {\n  return new List(\n    map((parent || globals.document).querySelectorAll(query), function (node) {\n      return adopt(node)\n    })\n  )\n}\n\n// Scoped find method\nexport function find(query) {\n  return baseFind(query, this.node)\n}\n\nexport function findOne(query) {\n  return adopt(this.node.querySelector(query))\n}\n", "import { delimiter } from './regex.js'\nimport { makeInstance } from '../../utils/adopter.js'\nimport { globals } from '../../utils/window.js'\n\nlet listenerId = 0\nexport const windowEvents = {}\n\nexport function getEvents(instance) {\n  let n = instance.getEventHolder()\n\n  // We dont want to save events in global space\n  if (n === globals.window) n = windowEvents\n  if (!n.events) n.events = {}\n  return n.events\n}\n\nexport function getEventTarget(instance) {\n  return instance.getEventTarget()\n}\n\nexport function clearEvents(instance) {\n  let n = instance.getEventHolder()\n  if (n === globals.window) n = windowEvents\n  if (n.events) n.events = {}\n}\n\n// Add event binder in the SVG namespace\nexport function on(node, events, listener, binding, options) {\n  const l = listener.bind(binding || node)\n  const instance = makeInstance(node)\n  const bag = getEvents(instance)\n  const n = getEventTarget(instance)\n\n  // events can be an array of events or a string of events\n  events = Array.isArray(events) ? events : events.split(delimiter)\n\n  // add id to listener\n  if (!listener._svgjsListenerId) {\n    listener._svgjsListenerId = ++listenerId\n  }\n\n  events.forEach(function (event) {\n    const ev = event.split('.')[0]\n    const ns = event.split('.')[1] || '*'\n\n    // ensure valid object\n    bag[ev] = bag[ev] || {}\n    bag[ev][ns] = bag[ev][ns] || {}\n\n    // reference listener\n    bag[ev][ns][listener._svgjsListenerId] = l\n\n    // add listener\n    n.addEventListener(ev, l, options || false)\n  })\n}\n\n// Add event unbinder in the SVG namespace\nexport function off(node, events, listener, options) {\n  const instance = makeInstance(node)\n  const bag = getEvents(instance)\n  const n = getEventTarget(instance)\n\n  // listener can be a function or a number\n  if (typeof listener === 'function') {\n    listener = listener._svgjsListenerId\n    if (!listener) return\n  }\n\n  // events can be an array of events or a string or undefined\n  events = Array.isArray(events) ? events : (events || '').split(delimiter)\n\n  events.forEach(function (event) {\n    const ev = event && event.split('.')[0]\n    const ns = event && event.split('.')[1]\n    let namespace, l\n\n    if (listener) {\n      // remove listener reference\n      if (bag[ev] && bag[ev][ns || '*']) {\n        // removeListener\n        n.removeEventListener(\n          ev,\n          bag[ev][ns || '*'][listener],\n          options || false\n        )\n\n        delete bag[ev][ns || '*'][listener]\n      }\n    } else if (ev && ns) {\n      // remove all listeners for a namespaced event\n      if (bag[ev] && bag[ev][ns]) {\n        for (l in bag[ev][ns]) {\n          off(n, [ev, ns].join('.'), l)\n        }\n\n        delete bag[ev][ns]\n      }\n    } else if (ns) {\n      // remove all listeners for a specific namespace\n      for (event in bag) {\n        for (namespace in bag[event]) {\n          if (ns === namespace) {\n            off(n, [event, ns].join('.'))\n          }\n        }\n      }\n    } else if (ev) {\n      // remove all listeners for the event\n      if (bag[ev]) {\n        for (namespace in bag[ev]) {\n          off(n, [ev, namespace].join('.'))\n        }\n\n        delete bag[ev]\n      }\n    } else {\n      // remove all listeners on a given node\n      for (event in bag) {\n        off(n, event)\n      }\n\n      clearEvents(instance)\n    }\n  })\n}\n\nexport function dispatch(node, event, data, options) {\n  const n = getEventTarget(node)\n\n  // Dispatch event\n  if (event instanceof globals.window.Event) {\n    n.dispatchEvent(event)\n  } else {\n    event = new globals.window.CustomEvent(event, {\n      detail: data,\n      cancelable: true,\n      ...options\n    })\n    n.dispatchEvent(event)\n  }\n  return event\n}\n", "import { dispatch, off, on } from '../modules/core/event.js'\nimport { register } from '../utils/adopter.js'\nimport Base from './Base.js'\n\nexport default class EventTarget extends Base {\n  addEventListener() {}\n\n  dispatch(event, data, options) {\n    return dispatch(this, event, data, options)\n  }\n\n  dispatchEvent(event) {\n    const bag = this.getEventHolder().events\n    if (!bag) return true\n\n    const events = bag[event.type]\n\n    for (const i in events) {\n      for (const j in events[i]) {\n        events[i][j](event)\n      }\n    }\n\n    return !event.defaultPrevented\n  }\n\n  // Fire given event\n  fire(event, data, options) {\n    this.dispatch(event, data, options)\n    return this\n  }\n\n  getEventHolder() {\n    return this\n  }\n\n  getEventTarget() {\n    return this\n  }\n\n  // Unbind event from listener\n  off(event, listener, options) {\n    off(this, event, listener, options)\n    return this\n  }\n\n  // Bind given event to listener\n  on(event, listener, binding, options) {\n    on(this, event, listener, binding, options)\n    return this\n  }\n\n  removeEventListener() {}\n}\n\nregister(EventTarget, 'EventTarget')\n", "export function noop() {}\n\n// Default animation values\nexport const timeline = {\n  duration: 400,\n  ease: '>',\n  delay: 0\n}\n\n// Default attribute values\nexport const attrs = {\n  // fill and stroke\n  'fill-opacity': 1,\n  'stroke-opacity': 1,\n  'stroke-width': 0,\n  'stroke-linejoin': 'miter',\n  'stroke-linecap': 'butt',\n  fill: '#000000',\n  stroke: '#000000',\n  opacity: 1,\n\n  // position\n  x: 0,\n  y: 0,\n  cx: 0,\n  cy: 0,\n\n  // size\n  width: 0,\n  height: 0,\n\n  // radius\n  r: 0,\n  rx: 0,\n  ry: 0,\n\n  // gradient\n  offset: 0,\n  'stop-opacity': 1,\n  'stop-color': '#000000',\n\n  // text\n  'text-anchor': 'start'\n}\n", "import { delimiter } from '../modules/core/regex.js'\n\nexport default class SVGArray extends Array {\n  constructor(...args) {\n    super(...args)\n    this.init(...args)\n  }\n\n  clone() {\n    return new this.constructor(this)\n  }\n\n  init(arr) {\n    // This catches the case, that native map tries to create an array with new Array(1)\n    if (typeof arr === 'number') return this\n    this.length = 0\n    this.push(...this.parse(arr))\n    return this\n  }\n\n  // Parse whitespace separated string\n  parse(array = []) {\n    // If already is an array, no need to parse it\n    if (array instanceof Array) return array\n\n    return array.trim().split(delimiter).map(parseFloat)\n  }\n\n  toArray() {\n    return Array.prototype.concat.apply([], this)\n  }\n\n  toSet() {\n    return new Set(this)\n  }\n\n  toString() {\n    return this.join(' ')\n  }\n\n  // Flattens the array if needed\n  valueOf() {\n    const ret = []\n    ret.push(...this)\n    return ret\n  }\n}\n", "import { numberAndUnit } from '../modules/core/regex.js'\n\n// Module for unit conversions\nexport default class SVGNumber {\n  // Initialize\n  constructor(...args) {\n    this.init(...args)\n  }\n\n  convert(unit) {\n    return new SVGNumber(this.value, unit)\n  }\n\n  // Divide number\n  divide(number) {\n    number = new SVGNumber(number)\n    return new SVGNumber(this / number, this.unit || number.unit)\n  }\n\n  init(value, unit) {\n    unit = Array.isArray(value) ? value[1] : unit\n    value = Array.isArray(value) ? value[0] : value\n\n    // initialize defaults\n    this.value = 0\n    this.unit = unit || ''\n\n    // parse value\n    if (typeof value === 'number') {\n      // ensure a valid numeric value\n      this.value = isNaN(value)\n        ? 0\n        : !isFinite(value)\n          ? value < 0\n            ? -3.4e38\n            : +3.4e38\n          : value\n    } else if (typeof value === 'string') {\n      unit = value.match(numberAndUnit)\n\n      if (unit) {\n        // make value numeric\n        this.value = parseFloat(unit[1])\n\n        // normalize\n        if (unit[5] === '%') {\n          this.value /= 100\n        } else if (unit[5] === 's') {\n          this.value *= 1000\n        }\n\n        // store unit\n        this.unit = unit[5]\n      }\n    } else {\n      if (value instanceof SVGNumber) {\n        this.value = value.valueOf()\n        this.unit = value.unit\n      }\n    }\n\n    return this\n  }\n\n  // Subtract number\n  minus(number) {\n    number = new SVGNumber(number)\n    return new SVGNumber(this - number, this.unit || number.unit)\n  }\n\n  // Add number\n  plus(number) {\n    number = new SVGNumber(number)\n    return new SVGNumber(this + number, this.unit || number.unit)\n  }\n\n  // Multiply number\n  times(number) {\n    number = new SVGNumber(number)\n    return new SVGNumber(this * number, this.unit || number.unit)\n  }\n\n  toArray() {\n    return [this.value, this.unit]\n  }\n\n  toJSON() {\n    return this.toString()\n  }\n\n  toString() {\n    return (\n      (this.unit === '%'\n        ? ~~(this.value * 1e8) / 1e6\n        : this.unit === 's'\n          ? this.value / 1e3\n          : this.value) + this.unit\n    )\n  }\n\n  valueOf() {\n    return this.value\n  }\n}\n", "import { attrs as defaults } from './defaults.js'\nimport { isNumber } from './regex.js'\nimport Color from '../../types/Color.js'\nimport SVGArray from '../../types/SVGArray.js'\nimport SVGNumber from '../../types/SVGNumber.js'\n\nconst colorAttributes = new Set([\n  'fill',\n  'stroke',\n  'color',\n  'bgcolor',\n  'stop-color',\n  'flood-color',\n  'lighting-color'\n])\n\nconst hooks = []\nexport function registerAttrHook(fn) {\n  hooks.push(fn)\n}\n\n// Set svg element attribute\nexport default function attr(attr, val, ns) {\n  // act as full getter\n  if (attr == null) {\n    // get an object of attributes\n    attr = {}\n    val = this.node.attributes\n\n    for (const node of val) {\n      attr[node.nodeName] = isNumber.test(node.nodeValue)\n        ? parseFloat(node.nodeValue)\n        : node.nodeValue\n    }\n\n    return attr\n  } else if (attr instanceof Array) {\n    // loop through array and get all values\n    return attr.reduce((last, curr) => {\n      last[curr] = this.attr(curr)\n      return last\n    }, {})\n  } else if (typeof attr === 'object' && attr.constructor === Object) {\n    // apply every attribute individually if an object is passed\n    for (val in attr) this.attr(val, attr[val])\n  } else if (val === null) {\n    // remove value\n    this.node.removeAttribute(attr)\n  } else if (val == null) {\n    // act as a getter if the first and only argument is not an object\n    val = this.node.getAttribute(attr)\n    return val == null\n      ? defaults[attr]\n      : isNumber.test(val)\n        ? parseFloat(val)\n        : val\n  } else {\n    // Loop through hooks and execute them to convert value\n    val = hooks.reduce((_val, hook) => {\n      return hook(attr, _val, this)\n    }, val)\n\n    // ensure correct numeric values (also accepts NaN and Infinity)\n    if (typeof val === 'number') {\n      val = new SVGNumber(val)\n    } else if (colorAttributes.has(attr) && Color.isColor(val)) {\n      // ensure full hex color\n      val = new Color(val)\n    } else if (val.constructor === Array) {\n      // Check for plain arrays and parse array values\n      val = new SVGArray(val)\n    }\n\n    // if the passed attribute is leading...\n    if (attr === 'leading') {\n      // ... call the leading method instead\n      if (this.leading) {\n        this.leading(val)\n      }\n    } else {\n      // set given attribute on node\n      typeof ns === 'string'\n        ? this.node.setAttributeNS(ns, attr, val.toString())\n        : this.node.setAttribute(attr, val.toString())\n    }\n\n    // rebuild if required\n    if (this.rebuild && (attr === 'font-size' || attr === 'x')) {\n      this.rebuild()\n    }\n  }\n\n  return this\n}\n", "import {\n  adopt,\n  assignNewId,\n  eid,\n  extend,\n  makeInstance,\n  create,\n  register\n} from '../utils/adopter.js'\nimport { find, findOne } from '../modules/core/selector.js'\nimport { globals } from '../utils/window.js'\nimport { map } from '../utils/utils.js'\nimport { svg, html } from '../modules/core/namespaces.js'\nimport EventTarget from '../types/EventTarget.js'\nimport List from '../types/List.js'\nimport attr from '../modules/core/attr.js'\n\nexport default class Dom extends EventTarget {\n  constructor(node, attrs) {\n    super()\n    this.node = node\n    this.type = node.nodeName\n\n    if (attrs && node !== attrs) {\n      this.attr(attrs)\n    }\n  }\n\n  // Add given element at a position\n  add(element, i) {\n    element = makeInstance(element)\n\n    // If non-root svg nodes are added we have to remove their namespaces\n    if (\n      element.removeNamespace &&\n      this.node instanceof globals.window.SVGElement\n    ) {\n      element.removeNamespace()\n    }\n\n    if (i == null) {\n      this.node.appendChild(element.node)\n    } else if (element.node !== this.node.childNodes[i]) {\n      this.node.insertBefore(element.node, this.node.childNodes[i])\n    }\n\n    return this\n  }\n\n  // Add element to given container and return self\n  addTo(parent, i) {\n    return makeInstance(parent).put(this, i)\n  }\n\n  // Returns all child elements\n  children() {\n    return new List(\n      map(this.node.children, function (node) {\n        return adopt(node)\n      })\n    )\n  }\n\n  // Remove all elements in this container\n  clear() {\n    // remove children\n    while (this.node.hasChildNodes()) {\n      this.node.removeChild(this.node.lastChild)\n    }\n\n    return this\n  }\n\n  // Clone element\n  clone(deep = true, assignNewIds = true) {\n    // write dom data to the dom so the clone can pickup the data\n    this.writeDataToDom()\n\n    // clone element\n    let nodeClone = this.node.cloneNode(deep)\n    if (assignNewIds) {\n      // assign new id\n      nodeClone = assignNewId(nodeClone)\n    }\n    return new this.constructor(nodeClone)\n  }\n\n  // Iterates over all children and invokes a given block\n  each(block, deep) {\n    const children = this.children()\n    let i, il\n\n    for (i = 0, il = children.length; i < il; i++) {\n      block.apply(children[i], [i, children])\n\n      if (deep) {\n        children[i].each(block, deep)\n      }\n    }\n\n    return this\n  }\n\n  element(nodeName, attrs) {\n    return this.put(new Dom(create(nodeName), attrs))\n  }\n\n  // Get first child\n  first() {\n    return adopt(this.node.firstChild)\n  }\n\n  // Get a element at the given index\n  get(i) {\n    return adopt(this.node.childNodes[i])\n  }\n\n  getEventHolder() {\n    return this.node\n  }\n\n  getEventTarget() {\n    return this.node\n  }\n\n  // Checks if the given element is a child\n  has(element) {\n    return this.index(element) >= 0\n  }\n\n  html(htmlOrFn, outerHTML) {\n    return this.xml(htmlOrFn, outerHTML, html)\n  }\n\n  // Get / set id\n  id(id) {\n    // generate new id if no id set\n    if (typeof id === 'undefined' && !this.node.id) {\n      this.node.id = eid(this.type)\n    }\n\n    // don't set directly with this.node.id to make `null` work correctly\n    return this.attr('id', id)\n  }\n\n  // Gets index of given element\n  index(element) {\n    return [].slice.call(this.node.childNodes).indexOf(element.node)\n  }\n\n  // Get the last child\n  last() {\n    return adopt(this.node.lastChild)\n  }\n\n  // matches the element vs a css selector\n  matches(selector) {\n    const el = this.node\n    const matcher =\n      el.matches ||\n      el.matchesSelector ||\n      el.msMatchesSelector ||\n      el.mozMatchesSelector ||\n      el.webkitMatchesSelector ||\n      el.oMatchesSelector ||\n      null\n    return matcher && matcher.call(el, selector)\n  }\n\n  // Returns the parent element instance\n  parent(type) {\n    let parent = this\n\n    // check for parent\n    if (!parent.node.parentNode) return null\n\n    // get parent element\n    parent = adopt(parent.node.parentNode)\n\n    if (!type) return parent\n\n    // loop through ancestors if type is given\n    do {\n      if (\n        typeof type === 'string' ? parent.matches(type) : parent instanceof type\n      )\n        return parent\n    } while ((parent = adopt(parent.node.parentNode)))\n\n    return parent\n  }\n\n  // Basically does the same as `add()` but returns the added element instead\n  put(element, i) {\n    element = makeInstance(element)\n    this.add(element, i)\n    return element\n  }\n\n  // Add element to given container and return container\n  putIn(parent, i) {\n    return makeInstance(parent).add(this, i)\n  }\n\n  // Remove element\n  remove() {\n    if (this.parent()) {\n      this.parent().removeElement(this)\n    }\n\n    return this\n  }\n\n  // Remove a given child\n  removeElement(element) {\n    this.node.removeChild(element.node)\n\n    return this\n  }\n\n  // Replace this with element\n  replace(element) {\n    element = makeInstance(element)\n\n    if (this.node.parentNode) {\n      this.node.parentNode.replaceChild(element.node, this.node)\n    }\n\n    return element\n  }\n\n  round(precision = 2, map = null) {\n    const factor = 10 ** precision\n    const attrs = this.attr(map)\n\n    for (const i in attrs) {\n      if (typeof attrs[i] === 'number') {\n        attrs[i] = Math.round(attrs[i] * factor) / factor\n      }\n    }\n\n    this.attr(attrs)\n    return this\n  }\n\n  // Import / Export raw svg\n  svg(svgOrFn, outerSVG) {\n    return this.xml(svgOrFn, outerSVG, svg)\n  }\n\n  // Return id on string conversion\n  toString() {\n    return this.id()\n  }\n\n  words(text) {\n    // This is faster than removing all children and adding a new one\n    this.node.textContent = text\n    return this\n  }\n\n  wrap(node) {\n    const parent = this.parent()\n\n    if (!parent) {\n      return this.addTo(node)\n    }\n\n    const position = parent.index(this)\n    return parent.put(node, position).put(this)\n  }\n\n  // write svgjs data to the dom\n  writeDataToDom() {\n    // dump variables recursively\n    this.each(function () {\n      this.writeDataToDom()\n    })\n\n    return this\n  }\n\n  // Import / Export raw svg\n  xml(xmlOrFn, outerXML, ns) {\n    if (typeof xmlOrFn === 'boolean') {\n      ns = outerXML\n      outerXML = xmlOrFn\n      xmlOrFn = null\n    }\n\n    // act as getter if no svg string is given\n    if (xmlOrFn == null || typeof xmlOrFn === 'function') {\n      // The default for exports is, that the outerNode is included\n      outerXML = outerXML == null ? true : outerXML\n\n      // write svgjs data to the dom\n      this.writeDataToDom()\n      let current = this\n\n      // An export modifier was passed\n      if (xmlOrFn != null) {\n        current = adopt(current.node.cloneNode(true))\n\n        // If the user wants outerHTML we need to process this node, too\n        if (outerXML) {\n          const result = xmlOrFn(current)\n          current = result || current\n\n          // The user does not want this node? Well, then he gets nothing\n          if (result === false) return ''\n        }\n\n        // Deep loop through all children and apply modifier\n        current.each(function () {\n          const result = xmlOrFn(this)\n          const _this = result || this\n\n          // If modifier returns false, discard node\n          if (result === false) {\n            this.remove()\n\n            // If modifier returns new node, use it\n          } else if (result && this !== _this) {\n            this.replace(_this)\n          }\n        }, true)\n      }\n\n      // Return outer or inner content\n      return outerXML ? current.node.outerHTML : current.node.innerHTML\n    }\n\n    // Act as setter if we got a string\n\n    // The default for import is, that the current node is not replaced\n    outerXML = outerXML == null ? false : outerXML\n\n    // Create temporary holder\n    const well = create('wrapper', ns)\n    const fragment = globals.document.createDocumentFragment()\n\n    // Dump raw svg\n    well.innerHTML = xmlOrFn\n\n    // Transplant nodes into the fragment\n    for (let len = well.children.length; len--; ) {\n      fragment.appendChild(well.firstElementChild)\n    }\n\n    const parent = this.parent()\n\n    // Add the whole fragment at once\n    return outerXML ? this.replace(fragment) && parent : this.add(fragment)\n  }\n}\n\nextend(Dom, { attr, find, findOne })\nregister(Dom, 'Dom')\n", "import { bbox, rbox, inside } from '../types/Box.js'\nimport { ctm, screenCTM } from '../types/Matrix.js'\nimport {\n  extend,\n  getClass,\n  makeInstance,\n  register,\n  root\n} from '../utils/adopter.js'\nimport { globals } from '../utils/window.js'\nimport { point } from '../types/Point.js'\nimport { proportionalSize, writeDataToDom } from '../utils/utils.js'\nimport { reference } from '../modules/core/regex.js'\nimport Dom from './Dom.js'\nimport List from '../types/List.js'\nimport SVGNumber from '../types/SVGNumber.js'\n\nexport default class Element extends Dom {\n  constructor(node, attrs) {\n    super(node, attrs)\n\n    // initialize data object\n    this.dom = {}\n\n    // create circular reference\n    this.node.instance = this\n\n    if (node.hasAttribute('data-svgjs') || node.hasAttribute('svgjs:data')) {\n      // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\n      this.setData(\n        JSON.parse(node.getAttribute('data-svgjs')) ??\n          JSON.parse(node.getAttribute('svgjs:data')) ??\n          {}\n      )\n    }\n  }\n\n  // Move element by its center\n  center(x, y) {\n    return this.cx(x).cy(y)\n  }\n\n  // Move by center over x-axis\n  cx(x) {\n    return x == null\n      ? this.x() + this.width() / 2\n      : this.x(x - this.width() / 2)\n  }\n\n  // Move by center over y-axis\n  cy(y) {\n    return y == null\n      ? this.y() + this.height() / 2\n      : this.y(y - this.height() / 2)\n  }\n\n  // Get defs\n  defs() {\n    const root = this.root()\n    return root && root.defs()\n  }\n\n  // Relative move over x and y axes\n  dmove(x, y) {\n    return this.dx(x).dy(y)\n  }\n\n  // Relative move over x axis\n  dx(x = 0) {\n    return this.x(new SVGNumber(x).plus(this.x()))\n  }\n\n  // Relative move over y axis\n  dy(y = 0) {\n    return this.y(new SVGNumber(y).plus(this.y()))\n  }\n\n  getEventHolder() {\n    return this\n  }\n\n  // Set height of element\n  height(height) {\n    return this.attr('height', height)\n  }\n\n  // Move element to given x and y values\n  move(x, y) {\n    return this.x(x).y(y)\n  }\n\n  // return array of all ancestors of given type up to the root svg\n  parents(until = this.root()) {\n    const isSelector = typeof until === 'string'\n    if (!isSelector) {\n      until = makeInstance(until)\n    }\n    const parents = new List()\n    let parent = this\n\n    while (\n      (parent = parent.parent()) &&\n      parent.node !== globals.document &&\n      parent.nodeName !== '#document-fragment'\n    ) {\n      parents.push(parent)\n\n      if (!isSelector && parent.node === until.node) {\n        break\n      }\n      if (isSelector && parent.matches(until)) {\n        break\n      }\n      if (parent.node === this.root().node) {\n        // We worked our way to the root and didn't match `until`\n        return null\n      }\n    }\n\n    return parents\n  }\n\n  // Get referenced element form attribute value\n  reference(attr) {\n    attr = this.attr(attr)\n    if (!attr) return null\n\n    const m = (attr + '').match(reference)\n    return m ? makeInstance(m[1]) : null\n  }\n\n  // Get parent document\n  root() {\n    const p = this.parent(getClass(root))\n    return p && p.root()\n  }\n\n  // set given data to the elements data property\n  setData(o) {\n    this.dom = o\n    return this\n  }\n\n  // Set element size to given width and height\n  size(width, height) {\n    const p = proportionalSize(this, width, height)\n\n    return this.width(new SVGNumber(p.width)).height(new SVGNumber(p.height))\n  }\n\n  // Set width of element\n  width(width) {\n    return this.attr('width', width)\n  }\n\n  // write svgjs data to the dom\n  writeDataToDom() {\n    writeDataToDom(this, this.dom)\n    return super.writeDataToDom()\n  }\n\n  // Move over x-axis\n  x(x) {\n    return this.attr('x', x)\n  }\n\n  // Move over y-axis\n  y(y) {\n    return this.attr('y', y)\n  }\n}\n\nextend(Element, {\n  bbox,\n  rbox,\n  inside,\n  point,\n  ctm,\n  screenCTM\n})\n\nregister(Element, 'Element')\n", "import { registerMethods } from '../../utils/methods.js'\nimport Color from '../../types/Color.js'\nimport Element from '../../elements/Element.js'\nimport Matrix from '../../types/Matrix.js'\nimport Point from '../../types/Point.js'\nimport SVGNumber from '../../types/SVGNumber.js'\n\n// Define list of available attributes for stroke and fill\nconst sugar = {\n  stroke: [\n    'color',\n    'width',\n    'opacity',\n    'linecap',\n    'linejoin',\n    'miterlimit',\n    'dasharray',\n    'dashoffset'\n  ],\n  fill: ['color', 'opacity', 'rule'],\n  prefix: function (t, a) {\n    return a === 'color' ? t : t + '-' + a\n  }\n}\n\n// Add sugar for fill and stroke\n;['fill', 'stroke'].forEach(function (m) {\n  const extension = {}\n  let i\n\n  extension[m] = function (o) {\n    if (typeof o === 'undefined') {\n      return this.attr(m)\n    }\n    if (\n      typeof o === 'string' ||\n      o instanceof Color ||\n      Color.isRgb(o) ||\n      o instanceof Element\n    ) {\n      this.attr(m, o)\n    } else {\n      // set all attributes from sugar.fill and sugar.stroke list\n      for (i = sugar[m].length - 1; i >= 0; i--) {\n        if (o[sugar[m][i]] != null) {\n          this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]])\n        }\n      }\n    }\n\n    return this\n  }\n\n  registerMethods(['Element', 'Runner'], extension)\n})\n\nregisterMethods(['Element', 'Runner'], {\n  // Let the user set the matrix directly\n  matrix: function (mat, b, c, d, e, f) {\n    // Act as a getter\n    if (mat == null) {\n      return new Matrix(this)\n    }\n\n    // Act as a setter, the user can pass a matrix or a set of numbers\n    return this.attr('transform', new Matrix(mat, b, c, d, e, f))\n  },\n\n  // Map rotation to transform\n  rotate: function (angle, cx, cy) {\n    return this.transform({ rotate: angle, ox: cx, oy: cy }, true)\n  },\n\n  // Map skew to transform\n  skew: function (x, y, cx, cy) {\n    return arguments.length === 1 || arguments.length === 3\n      ? this.transform({ skew: x, ox: y, oy: cx }, true)\n      : this.transform({ skew: [x, y], ox: cx, oy: cy }, true)\n  },\n\n  shear: function (lam, cx, cy) {\n    return this.transform({ shear: lam, ox: cx, oy: cy }, true)\n  },\n\n  // Map scale to transform\n  scale: function (x, y, cx, cy) {\n    return arguments.length === 1 || arguments.length === 3\n      ? this.transform({ scale: x, ox: y, oy: cx }, true)\n      : this.transform({ scale: [x, y], ox: cx, oy: cy }, true)\n  },\n\n  // Map translate to transform\n  translate: function (x, y) {\n    return this.transform({ translate: [x, y] }, true)\n  },\n\n  // Map relative translations to transform\n  relative: function (x, y) {\n    return this.transform({ relative: [x, y] }, true)\n  },\n\n  // Map flip to transform\n  flip: function (direction = 'both', origin = 'center') {\n    if ('xybothtrue'.indexOf(direction) === -1) {\n      origin = direction\n      direction = 'both'\n    }\n\n    return this.transform({ flip: direction, origin: origin }, true)\n  },\n\n  // Opacity\n  opacity: function (value) {\n    return this.attr('opacity', value)\n  }\n})\n\nregisterMethods('radius', {\n  // Add x and y radius\n  radius: function (x, y = x) {\n    const type = (this._element || this).type\n    return type === 'radialGradient'\n      ? this.attr('r', new SVGNumber(x))\n      : this.rx(x).ry(y)\n  }\n})\n\nregisterMethods('Path', {\n  // Get path length\n  length: function () {\n    return this.node.getTotalLength()\n  },\n  // Get point at length\n  pointAt: function (length) {\n    return new Point(this.node.getPointAtLength(length))\n  }\n})\n\nregisterMethods(['Element', 'Runner'], {\n  // Set font\n  font: function (a, v) {\n    if (typeof a === 'object') {\n      for (v in a) this.font(v, a[v])\n      return this\n    }\n\n    return a === 'leading'\n      ? this.leading(v)\n      : a === 'anchor'\n        ? this.attr('text-anchor', v)\n        : a === 'size' ||\n            a === 'family' ||\n            a === 'weight' ||\n            a === 'stretch' ||\n            a === 'variant' ||\n            a === 'style'\n          ? this.attr('font-' + a, v)\n          : this.attr(a, v)\n  }\n})\n\n// Add events to elements\nconst methods = [\n  'click',\n  'dblclick',\n  'mousedown',\n  'mouseup',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'mouseenter',\n  'mouseleave',\n  'touchstart',\n  'touchmove',\n  'touchleave',\n  'touchend',\n  'touchcancel',\n  'contextmenu',\n  'wheel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel'\n].reduce(function (last, event) {\n  // add event to Element\n  const fn = function (f) {\n    if (f === null) {\n      this.off(event)\n    } else {\n      this.on(event, f)\n    }\n    return this\n  }\n\n  last[event] = fn\n  return last\n}, {})\n\nregisterMethods('Element', methods)\n", "import { getOrigin, isDescriptive } from '../../utils/utils.js'\nimport { delimiter, transforms } from '../core/regex.js'\nimport { registerMethods } from '../../utils/methods.js'\nimport Matrix from '../../types/Matrix.js'\n\n// Reset all transformations\nexport function untransform() {\n  return this.attr('transform', null)\n}\n\n// merge the whole transformation chain into one matrix and returns it\nexport function matrixify() {\n  const matrix = (this.attr('transform') || '')\n    // split transformations\n    .split(transforms)\n    .slice(0, -1)\n    .map(function (str) {\n      // generate key => value pairs\n      const kv = str.trim().split('(')\n      return [\n        kv[0],\n        kv[1].split(delimiter).map(function (str) {\n          return parseFloat(str)\n        })\n      ]\n    })\n    .reverse()\n    // merge every transformation into one matrix\n    .reduce(function (matrix, transform) {\n      if (transform[0] === 'matrix') {\n        return matrix.lmultiply(Matrix.fromArray(transform[1]))\n      }\n      return matrix[transform[0]].apply(matrix, transform[1])\n    }, new Matrix())\n\n  return matrix\n}\n\n// add an element to another parent without changing the visual representation on the screen\nexport function toParent(parent, i) {\n  if (this === parent) return this\n\n  if (isDescriptive(this.node)) return this.addTo(parent, i)\n\n  const ctm = this.screenCTM()\n  const pCtm = parent.screenCTM().inverse()\n\n  this.addTo(parent, i).untransform().transform(pCtm.multiply(ctm))\n\n  return this\n}\n\n// same as above with parent equals root-svg\nexport function toRoot(i) {\n  return this.toParent(this.root(), i)\n}\n\n// Add transformations\nexport function transform(o, relative) {\n  // Act as a getter if no object was passed\n  if (o == null || typeof o === 'string') {\n    const decomposed = new Matrix(this).decompose()\n    return o == null ? decomposed : decomposed[o]\n  }\n\n  if (!Matrix.isMatrixLike(o)) {\n    // Set the origin according to the defined transform\n    o = { ...o, origin: getOrigin(o, this) }\n  }\n\n  // The user can pass a boolean, an Element or an Matrix or nothing\n  const cleanRelative = relative === true ? this : relative || false\n  const result = new Matrix(cleanRelative).transform(o)\n  return this.attr('transform', result)\n}\n\nregisterMethods('Element', {\n  untransform,\n  matrixify,\n  toParent,\n  toRoot,\n  transform\n})\n", "import { register } from '../utils/adopter.js'\nimport Element from './Element.js'\n\nexport default class Container extends Element {\n  flatten() {\n    this.each(function () {\n      if (this instanceof Container) {\n        return this.flatten().ungroup()\n      }\n    })\n\n    return this\n  }\n\n  ungroup(parent = this.parent(), index = parent.index(this)) {\n    // when parent != this, we want append all elements to the end\n    index = index === -1 ? parent.children().length : index\n\n    this.each(function (i, children) {\n      // reverse each\n      return children[children.length - i - 1].toParent(parent, index)\n    })\n\n    return this.remove()\n  }\n}\n\nregister(Container, 'Container')\n", "import { nodeOrNew, register } from '../utils/adopter.js'\nimport Container from './Container.js'\n\nexport default class Defs extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('defs', node), attrs)\n  }\n\n  flatten() {\n    return this\n  }\n\n  ungroup() {\n    return this\n  }\n}\n\nregister(Defs, 'Defs')\n", "import { register } from '../utils/adopter.js'\nimport Element from './Element.js'\n\nexport default class Shape extends Element {}\n\nregister(Shape, 'Shape')\n", "import SVGNumber from '../../types/SVGNumber.js'\n\n// Radius x value\nexport function rx(rx) {\n  return this.attr('rx', rx)\n}\n\n// Radius y value\nexport function ry(ry) {\n  return this.attr('ry', ry)\n}\n\n// Move over x-axis\nexport function x(x) {\n  return x == null ? this.cx() - this.rx() : this.cx(x + this.rx())\n}\n\n// Move over y-axis\nexport function y(y) {\n  return y == null ? this.cy() - this.ry() : this.cy(y + this.ry())\n}\n\n// Move by center over x-axis\nexport function cx(x) {\n  return this.attr('cx', x)\n}\n\n// Move by center over y-axis\nexport function cy(y) {\n  return this.attr('cy', y)\n}\n\n// Set width of element\nexport function width(width) {\n  return width == null ? this.rx() * 2 : this.rx(new SVGNumber(width).divide(2))\n}\n\n// Set height of element\nexport function height(height) {\n  return height == null\n    ? this.ry() * 2\n    : this.ry(new SVGNumber(height).divide(2))\n}\n", "import {\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { proportionalSize } from '../utils/utils.js'\nimport { registerMethods } from '../utils/methods.js'\nimport SVGNumber from '../types/SVGNumber.js'\nimport Shape from './Shape.js'\nimport * as circled from '../modules/core/circled.js'\n\nexport default class Ellipse extends Shape {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('ellipse', node), attrs)\n  }\n\n  size(width, height) {\n    const p = proportionalSize(this, width, height)\n\n    return this.rx(new SVGNumber(p.width).divide(2)).ry(\n      new SVGNumber(p.height).divide(2)\n    )\n  }\n}\n\nextend(Ellipse, circled)\n\nregisterMethods('Container', {\n  // Create an ellipse\n  ellipse: wrapWithAttrCheck(function (width = 0, height = width) {\n    return this.put(new Ellipse()).size(width, height).move(0, 0)\n  })\n})\n\nregister(Ellipse, 'Ellipse')\n", "import Dom from './Dom.js'\nimport { globals } from '../utils/window.js'\nimport { register, create } from '../utils/adopter.js'\n\nclass Fragment extends Dom {\n  constructor(node = globals.document.createDocumentFragment()) {\n    super(node)\n  }\n\n  // Import / Export raw xml\n  xml(xmlOrFn, outerXML, ns) {\n    if (typeof xmlOrFn === 'boolean') {\n      ns = outerXML\n      outerXML = xmlOrFn\n      xmlOrFn = null\n    }\n\n    // because this is a fragment we have to put all elements into a wrapper first\n    // before we can get the innerXML from it\n    if (xmlOrFn == null || typeof xmlOrFn === 'function') {\n      const wrapper = new Dom(create('wrapper', ns))\n      wrapper.add(this.node.cloneNode(true))\n\n      return wrapper.xml(false, ns)\n    }\n\n    // Act as setter if we got a string\n    return super.xml(xmlOrFn, false, ns)\n  }\n}\n\nregister(Fragment, 'Fragment')\n\nexport default Fragment\n", "import SVGNumber from '../../types/SVGNumber.js'\n\nexport function from(x, y) {\n  return (this._element || this).type === 'radialGradient'\n    ? this.attr({ fx: new SVGNumber(x), fy: new SVGNumber(y) })\n    : this.attr({ x1: new SVGNumber(x), y1: new SVGNumber(y) })\n}\n\nexport function to(x, y) {\n  return (this._element || this).type === 'radialGradient'\n    ? this.attr({ cx: new SVGNumber(x), cy: new SVGNumber(y) })\n    : this.attr({ x2: new SVGNumber(x), y2: new SVGNumber(y) })\n}\n", "import {\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Box from '../types/Box.js'\nimport Container from './Container.js'\nimport baseFind from '../modules/core/selector.js'\nimport * as gradiented from '../modules/core/gradiented.js'\n\nexport default class Gradient extends Container {\n  constructor(type, attrs) {\n    super(\n      nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type),\n      attrs\n    )\n  }\n\n  // custom attr to handle transform\n  attr(a, b, c) {\n    if (a === 'transform') a = 'gradientTransform'\n    return super.attr(a, b, c)\n  }\n\n  bbox() {\n    return new Box()\n  }\n\n  targets() {\n    return baseFind('svg [fill*=' + this.id() + ']')\n  }\n\n  // Alias string conversion to fill\n  toString() {\n    return this.url()\n  }\n\n  // Update gradient\n  update(block) {\n    // remove all stops\n    this.clear()\n\n    // invoke passed block\n    if (typeof block === 'function') {\n      block.call(this, this)\n    }\n\n    return this\n  }\n\n  // Return the fill id\n  url() {\n    return 'url(#' + this.id() + ')'\n  }\n}\n\nextend(Gradient, gradiented)\n\nregisterMethods({\n  Container: {\n    // Create gradient element in defs\n    gradient(...args) {\n      return this.defs().gradient(...args)\n    }\n  },\n  // define gradient\n  Defs: {\n    gradient: wrapWithAttrCheck(function (type, block) {\n      return this.put(new Gradient(type)).update(block)\n    })\n  }\n})\n\nregister(Gradient, 'Gradient')\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Box from '../types/Box.js'\nimport Container from './Container.js'\nimport baseFind from '../modules/core/selector.js'\n\nexport default class Pattern extends Container {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('pattern', node), attrs)\n  }\n\n  // custom attr to handle transform\n  attr(a, b, c) {\n    if (a === 'transform') a = 'patternTransform'\n    return super.attr(a, b, c)\n  }\n\n  bbox() {\n    return new Box()\n  }\n\n  targets() {\n    return baseFind('svg [fill*=' + this.id() + ']')\n  }\n\n  // Alias string conversion to fill\n  toString() {\n    return this.url()\n  }\n\n  // Update pattern by rebuilding\n  update(block) {\n    // remove content\n    this.clear()\n\n    // invoke passed block\n    if (typeof block === 'function') {\n      block.call(this, this)\n    }\n\n    return this\n  }\n\n  // Return the fill id\n  url() {\n    return 'url(#' + this.id() + ')'\n  }\n}\n\nregisterMethods({\n  Container: {\n    // Create pattern element in defs\n    pattern(...args) {\n      return this.defs().pattern(...args)\n    }\n  },\n  Defs: {\n    pattern: wrapWithAttrCheck(function (width, height, block) {\n      return this.put(new Pattern()).update(block).attr({\n        x: 0,\n        y: 0,\n        width: width,\n        height: height,\n        patternUnits: 'userSpaceOnUse'\n      })\n    })\n  }\n})\n\nregister(Pattern, 'Pattern')\n", "import { isImage } from '../modules/core/regex.js'\nimport { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { off, on } from '../modules/core/event.js'\nimport { registerAttrHook } from '../modules/core/attr.js'\nimport { registerMethods } from '../utils/methods.js'\nimport { xlink } from '../modules/core/namespaces.js'\nimport Pattern from './Pattern.js'\nimport Shape from './Shape.js'\nimport { globals } from '../utils/window.js'\n\nexport default class Image extends Shape {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('image', node), attrs)\n  }\n\n  // (re)load image\n  load(url, callback) {\n    if (!url) return this\n\n    const img = new globals.window.Image()\n\n    on(\n      img,\n      'load',\n      function (e) {\n        const p = this.parent(Pattern)\n\n        // ensure image size\n        if (this.width() === 0 && this.height() === 0) {\n          this.size(img.width, img.height)\n        }\n\n        if (p instanceof Pattern) {\n          // ensure pattern size if not set\n          if (p.width() === 0 && p.height() === 0) {\n            p.size(this.width(), this.height())\n          }\n        }\n\n        if (typeof callback === 'function') {\n          callback.call(this, e)\n        }\n      },\n      this\n    )\n\n    on(img, 'load error', function () {\n      // dont forget to unbind memory leaking events\n      off(img)\n    })\n\n    return this.attr('href', (img.src = url), xlink)\n  }\n}\n\nregisterAttrHook(function (attr, val, _this) {\n  // convert image fill and stroke to patterns\n  if (attr === 'fill' || attr === 'stroke') {\n    if (isImage.test(val)) {\n      val = _this.root().defs().image(val)\n    }\n  }\n\n  if (val instanceof Image) {\n    val = _this\n      .root()\n      .defs()\n      .pattern(0, 0, (pattern) => {\n        pattern.add(val)\n      })\n  }\n\n  return val\n})\n\nregisterMethods({\n  Container: {\n    // create image element, load image and set its size\n    image: wrapWithAttrCheck(function (source, callback) {\n      return this.put(new Image()).size(0, 0).load(source, callback)\n    })\n  }\n})\n\nregister(Image, 'Image')\n", "import { delimiter } from '../modules/core/regex.js'\nimport SVGArray from './SVGArray.js'\nimport Box from './Box.js'\nimport Matrix from './Matrix.js'\n\nexport default class PointArray extends SVGArray {\n  // Get bounding box of points\n  bbox() {\n    let maxX = -Infinity\n    let maxY = -Infinity\n    let minX = Infinity\n    let minY = Infinity\n    this.forEach(function (el) {\n      maxX = Math.max(el[0], maxX)\n      maxY = Math.max(el[1], maxY)\n      minX = Math.min(el[0], minX)\n      minY = Math.min(el[1], minY)\n    })\n    return new Box(minX, minY, maxX - minX, maxY - minY)\n  }\n\n  // Move point string\n  move(x, y) {\n    const box = this.bbox()\n\n    // get relative offset\n    x -= box.x\n    y -= box.y\n\n    // move every point\n    if (!isNaN(x) && !isNaN(y)) {\n      for (let i = this.length - 1; i >= 0; i--) {\n        this[i] = [this[i][0] + x, this[i][1] + y]\n      }\n    }\n\n    return this\n  }\n\n  // Parse point string and flat array\n  parse(array = [0, 0]) {\n    const points = []\n\n    // if it is an array, we flatten it and therefore clone it to 1 depths\n    if (array instanceof Array) {\n      array = Array.prototype.concat.apply([], array)\n    } else {\n      // Else, it is considered as a string\n      // parse points\n      array = array.trim().split(delimiter).map(parseFloat)\n    }\n\n    // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\n    // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\n    if (array.length % 2 !== 0) array.pop()\n\n    // wrap points in two-tuples\n    for (let i = 0, len = array.length; i < len; i = i + 2) {\n      points.push([array[i], array[i + 1]])\n    }\n\n    return points\n  }\n\n  // Resize poly string\n  size(width, height) {\n    let i\n    const box = this.bbox()\n\n    // recalculate position of all points according to new size\n    for (i = this.length - 1; i >= 0; i--) {\n      if (box.width)\n        this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x\n      if (box.height)\n        this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\n    }\n\n    return this\n  }\n\n  // Convert array to line object\n  toLine() {\n    return {\n      x1: this[0][0],\n      y1: this[0][1],\n      x2: this[1][0],\n      y2: this[1][1]\n    }\n  }\n\n  // Convert array to string\n  toString() {\n    const array = []\n    // convert to a poly point string\n    for (let i = 0, il = this.length; i < il; i++) {\n      array.push(this[i].join(','))\n    }\n\n    return array.join(' ')\n  }\n\n  transform(m) {\n    return this.clone().transformO(m)\n  }\n\n  // transform points with matrix (similar to Point.transform)\n  transformO(m) {\n    if (!Matrix.isMatrixLike(m)) {\n      m = new Matrix(m)\n    }\n\n    for (let i = this.length; i--; ) {\n      // Perform the matrix multiplication\n      const [x, y] = this[i]\n      this[i][0] = m.a * x + m.c * y + m.e\n      this[i][1] = m.b * x + m.d * y + m.f\n    }\n\n    return this\n  }\n}\n", "import PointArray from '../../types/PointArray.js'\n\nexport const MorphArray = PointArray\n\n// Move by left top corner over x-axis\nexport function x(x) {\n  return x == null ? this.bbox().x : this.move(x, this.bbox().y)\n}\n\n// Move by left top corner over y-axis\nexport function y(y) {\n  return y == null ? this.bbox().y : this.move(this.bbox().x, y)\n}\n\n// Set width of element\nexport function width(width) {\n  const b = this.bbox()\n  return width == null ? b.width : this.size(width, b.height)\n}\n\n// Set height of element\nexport function height(height) {\n  const b = this.bbox()\n  return height == null ? b.height : this.size(b.width, height)\n}\n", "import {\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { proportionalSize } from '../utils/utils.js'\nimport { registerMethods } from '../utils/methods.js'\nimport PointArray from '../types/PointArray.js'\nimport Shape from './Shape.js'\nimport * as pointed from '../modules/core/pointed.js'\n\nexport default class Line extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('line', node), attrs)\n  }\n\n  // Get array\n  array() {\n    return new PointArray([\n      [this.attr('x1'), this.attr('y1')],\n      [this.attr('x2'), this.attr('y2')]\n    ])\n  }\n\n  // Move by left top corner\n  move(x, y) {\n    return this.attr(this.array().move(x, y).toLine())\n  }\n\n  // Overwrite native plot() method\n  plot(x1, y1, x2, y2) {\n    if (x1 == null) {\n      return this.array()\n    } else if (typeof y1 !== 'undefined') {\n      x1 = { x1, y1, x2, y2 }\n    } else {\n      x1 = new PointArray(x1).toLine()\n    }\n\n    return this.attr(x1)\n  }\n\n  // Set element size to given width and height\n  size(width, height) {\n    const p = proportionalSize(this, width, height)\n    return this.attr(this.array().size(p.width, p.height).toLine())\n  }\n}\n\nextend(Line, pointed)\n\nregisterMethods({\n  Container: {\n    // Create a line element\n    line: wrapWithAttrCheck(function (...args) {\n      // make sure plot is called as a setter\n      // x1 is not necessarily a number, it can also be an array, a string and a PointArray\n      return Line.prototype.plot.apply(\n        this.put(new Line()),\n        args[0] != null ? args : [0, 0, 0, 0]\n      )\n    })\n  }\n})\n\nregister(Line, 'Line')\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Container from './Container.js'\n\nexport default class Marker extends Container {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('marker', node), attrs)\n  }\n\n  // Set height of element\n  height(height) {\n    return this.attr('markerHeight', height)\n  }\n\n  orient(orient) {\n    return this.attr('orient', orient)\n  }\n\n  // Set marker refX and refY\n  ref(x, y) {\n    return this.attr('refX', x).attr('refY', y)\n  }\n\n  // Return the fill id\n  toString() {\n    return 'url(#' + this.id() + ')'\n  }\n\n  // Update marker\n  update(block) {\n    // remove all content\n    this.clear()\n\n    // invoke passed block\n    if (typeof block === 'function') {\n      block.call(this, this)\n    }\n\n    return this\n  }\n\n  // Set width of element\n  width(width) {\n    return this.attr('markerWidth', width)\n  }\n}\n\nregisterMethods({\n  Container: {\n    marker(...args) {\n      // Create marker element in defs\n      return this.defs().marker(...args)\n    }\n  },\n  Defs: {\n    // Create marker\n    marker: wrapWithAttrCheck(function (width, height, block) {\n      // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto\n      return this.put(new Marker())\n        .size(width, height)\n        .ref(width / 2, height / 2)\n        .viewbox(0, 0, width, height)\n        .attr('orient', 'auto')\n        .update(block)\n    })\n  },\n  marker: {\n    // Create and attach markers\n    marker(marker, width, height, block) {\n      let attr = ['marker']\n\n      // Build attribute name\n      if (marker !== 'all') attr.push(marker)\n      attr = attr.join('-')\n\n      // Set marker attribute\n      marker =\n        arguments[1] instanceof Marker\n          ? arguments[1]\n          : this.defs().marker(width, height, block)\n\n      return this.attr(attr, marker)\n    }\n  }\n})\n\nregister(Marker, 'Marker')\n", "import { timeline } from '../modules/core/defaults.js'\nimport { extend } from '../utils/adopter.js'\n\n/***\nBase Class\n==========\nThe base stepper class that will be\n***/\n\nfunction makeSetterGetter(k, f) {\n  return function (v) {\n    if (v == null) return this[k]\n    this[k] = v\n    if (f) f.call(this)\n    return this\n  }\n}\n\nexport const easing = {\n  '-': function (pos) {\n    return pos\n  },\n  '<>': function (pos) {\n    return -Math.cos(pos * Math.PI) / 2 + 0.5\n  },\n  '>': function (pos) {\n    return Math.sin((pos * Math.PI) / 2)\n  },\n  '<': function (pos) {\n    return -Math.cos((pos * Math.PI) / 2) + 1\n  },\n  bezier: function (x1, y1, x2, y2) {\n    // see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo\n    return function (t) {\n      if (t < 0) {\n        if (x1 > 0) {\n          return (y1 / x1) * t\n        } else if (x2 > 0) {\n          return (y2 / x2) * t\n        } else {\n          return 0\n        }\n      } else if (t > 1) {\n        if (x2 < 1) {\n          return ((1 - y2) / (1 - x2)) * t + (y2 - x2) / (1 - x2)\n        } else if (x1 < 1) {\n          return ((1 - y1) / (1 - x1)) * t + (y1 - x1) / (1 - x1)\n        } else {\n          return 1\n        }\n      } else {\n        return 3 * t * (1 - t) ** 2 * y1 + 3 * t ** 2 * (1 - t) * y2 + t ** 3\n      }\n    }\n  },\n  // see https://www.w3.org/TR/css-easing-1/#step-timing-function-algo\n  steps: function (steps, stepPosition = 'end') {\n    // deal with \"jump-\" prefix\n    stepPosition = stepPosition.split('-').reverse()[0]\n\n    let jumps = steps\n    if (stepPosition === 'none') {\n      --jumps\n    } else if (stepPosition === 'both') {\n      ++jumps\n    }\n\n    // The beforeFlag is essentially useless\n    return (t, beforeFlag = false) => {\n      // Step is called currentStep in referenced url\n      let step = Math.floor(t * steps)\n      const jumping = (t * step) % 1 === 0\n\n      if (stepPosition === 'start' || stepPosition === 'both') {\n        ++step\n      }\n\n      if (beforeFlag && jumping) {\n        --step\n      }\n\n      if (t >= 0 && step < 0) {\n        step = 0\n      }\n\n      if (t <= 1 && step > jumps) {\n        step = jumps\n      }\n\n      return step / jumps\n    }\n  }\n}\n\nexport class Stepper {\n  done() {\n    return false\n  }\n}\n\n/***\nEasing Functions\n================\n***/\n\nexport class Ease extends Stepper {\n  constructor(fn = timeline.ease) {\n    super()\n    this.ease = easing[fn] || fn\n  }\n\n  step(from, to, pos) {\n    if (typeof from !== 'number') {\n      return pos < 1 ? from : to\n    }\n    return from + (to - from) * this.ease(pos)\n  }\n}\n\n/***\nController Types\n================\n***/\n\nexport class Controller extends Stepper {\n  constructor(fn) {\n    super()\n    this.stepper = fn\n  }\n\n  done(c) {\n    return c.done\n  }\n\n  step(current, target, dt, c) {\n    return this.stepper(current, target, dt, c)\n  }\n}\n\nfunction recalculate() {\n  // Apply the default parameters\n  const duration = (this._duration || 500) / 1000\n  const overshoot = this._overshoot || 0\n\n  // Calculate the PID natural response\n  const eps = 1e-10\n  const pi = Math.PI\n  const os = Math.log(overshoot / 100 + eps)\n  const zeta = -os / Math.sqrt(pi * pi + os * os)\n  const wn = 3.9 / (zeta * duration)\n\n  // Calculate the Spring values\n  this.d = 2 * zeta * wn\n  this.k = wn * wn\n}\n\nexport class Spring extends Controller {\n  constructor(duration = 500, overshoot = 0) {\n    super()\n    this.duration(duration).overshoot(overshoot)\n  }\n\n  step(current, target, dt, c) {\n    if (typeof current === 'string') return current\n    c.done = dt === Infinity\n    if (dt === Infinity) return target\n    if (dt === 0) return current\n\n    if (dt > 100) dt = 16\n\n    dt /= 1000\n\n    // Get the previous velocity\n    const velocity = c.velocity || 0\n\n    // Apply the control to get the new position and store it\n    const acceleration = -this.d * velocity - this.k * (current - target)\n    const newPosition = current + velocity * dt + (acceleration * dt * dt) / 2\n\n    // Store the velocity\n    c.velocity = velocity + acceleration * dt\n\n    // Figure out if we have converged, and if so, pass the value\n    c.done = Math.abs(target - newPosition) + Math.abs(velocity) < 0.002\n    return c.done ? target : newPosition\n  }\n}\n\nextend(Spring, {\n  duration: makeSetterGetter('_duration', recalculate),\n  overshoot: makeSetterGetter('_overshoot', recalculate)\n})\n\nexport class PID extends Controller {\n  constructor(p = 0.1, i = 0.01, d = 0, windup = 1000) {\n    super()\n    this.p(p).i(i).d(d).windup(windup)\n  }\n\n  step(current, target, dt, c) {\n    if (typeof current === 'string') return current\n    c.done = dt === Infinity\n\n    if (dt === Infinity) return target\n    if (dt === 0) return current\n\n    const p = target - current\n    let i = (c.integral || 0) + p * dt\n    const d = (p - (c.error || 0)) / dt\n    const windup = this._windup\n\n    // antiwindup\n    if (windup !== false) {\n      i = Math.max(-windup, Math.min(i, windup))\n    }\n\n    c.error = p\n    c.integral = i\n\n    c.done = Math.abs(p) < 0.001\n\n    return c.done ? target : current + (this.P * p + this.I * i + this.D * d)\n  }\n}\n\nextend(PID, {\n  windup: makeSetterGetter('_windup'),\n  p: makeSetterGetter('P'),\n  i: makeSetterGetter('I'),\n  d: makeSetterGetter('D')\n})\n", "import { isPathLetter } from '../modules/core/regex.js'\nimport Point from '../types/Point.js'\n\nconst segmentParameters = {\n  M: 2,\n  L: 2,\n  H: 1,\n  V: 1,\n  C: 6,\n  S: 4,\n  Q: 4,\n  T: 2,\n  A: 7,\n  Z: 0\n}\n\nconst pathHandlers = {\n  M: function (c, p, p0) {\n    p.x = p0.x = c[0]\n    p.y = p0.y = c[1]\n\n    return ['M', p.x, p.y]\n  },\n  L: function (c, p) {\n    p.x = c[0]\n    p.y = c[1]\n    return ['L', c[0], c[1]]\n  },\n  H: function (c, p) {\n    p.x = c[0]\n    return ['H', c[0]]\n  },\n  V: function (c, p) {\n    p.y = c[0]\n    return ['V', c[0]]\n  },\n  C: function (c, p) {\n    p.x = c[4]\n    p.y = c[5]\n    return ['C', c[0], c[1], c[2], c[3], c[4], c[5]]\n  },\n  S: function (c, p) {\n    p.x = c[2]\n    p.y = c[3]\n    return ['S', c[0], c[1], c[2], c[3]]\n  },\n  Q: function (c, p) {\n    p.x = c[2]\n    p.y = c[3]\n    return ['Q', c[0], c[1], c[2], c[3]]\n  },\n  T: function (c, p) {\n    p.x = c[0]\n    p.y = c[1]\n    return ['T', c[0], c[1]]\n  },\n  Z: function (c, p, p0) {\n    p.x = p0.x\n    p.y = p0.y\n    return ['Z']\n  },\n  A: function (c, p) {\n    p.x = c[5]\n    p.y = c[6]\n    return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]]\n  }\n}\n\nconst mlhvqtcsaz = 'mlhvqtcsaz'.split('')\n\nfor (let i = 0, il = mlhvqtcsaz.length; i < il; ++i) {\n  pathHandlers[mlhvqtcsaz[i]] = (function (i) {\n    return function (c, p, p0) {\n      if (i === 'H') c[0] = c[0] + p.x\n      else if (i === 'V') c[0] = c[0] + p.y\n      else if (i === 'A') {\n        c[5] = c[5] + p.x\n        c[6] = c[6] + p.y\n      } else {\n        for (let j = 0, jl = c.length; j < jl; ++j) {\n          c[j] = c[j] + (j % 2 ? p.y : p.x)\n        }\n      }\n\n      return pathHandlers[i](c, p, p0)\n    }\n  })(mlhvqtcsaz[i].toUpperCase())\n}\n\nfunction makeAbsolut(parser) {\n  const command = parser.segment[0]\n  return pathHandlers[command](parser.segment.slice(1), parser.p, parser.p0)\n}\n\nfunction segmentComplete(parser) {\n  return (\n    parser.segment.length &&\n    parser.segment.length - 1 ===\n      segmentParameters[parser.segment[0].toUpperCase()]\n  )\n}\n\nfunction startNewSegment(parser, token) {\n  parser.inNumber && finalizeNumber(parser, false)\n  const pathLetter = isPathLetter.test(token)\n\n  if (pathLetter) {\n    parser.segment = [token]\n  } else {\n    const lastCommand = parser.lastCommand\n    const small = lastCommand.toLowerCase()\n    const isSmall = lastCommand === small\n    parser.segment = [small === 'm' ? (isSmall ? 'l' : 'L') : lastCommand]\n  }\n\n  parser.inSegment = true\n  parser.lastCommand = parser.segment[0]\n\n  return pathLetter\n}\n\nfunction finalizeNumber(parser, inNumber) {\n  if (!parser.inNumber) throw new Error('Parser Error')\n  parser.number && parser.segment.push(parseFloat(parser.number))\n  parser.inNumber = inNumber\n  parser.number = ''\n  parser.pointSeen = false\n  parser.hasExponent = false\n\n  if (segmentComplete(parser)) {\n    finalizeSegment(parser)\n  }\n}\n\nfunction finalizeSegment(parser) {\n  parser.inSegment = false\n  if (parser.absolute) {\n    parser.segment = makeAbsolut(parser)\n  }\n  parser.segments.push(parser.segment)\n}\n\nfunction isArcFlag(parser) {\n  if (!parser.segment.length) return false\n  const isArc = parser.segment[0].toUpperCase() === 'A'\n  const length = parser.segment.length\n\n  return isArc && (length === 4 || length === 5)\n}\n\nfunction isExponential(parser) {\n  return parser.lastToken.toUpperCase() === 'E'\n}\n\nconst pathDelimiters = new Set([' ', ',', '\\t', '\\n', '\\r', '\\f'])\nexport function pathParser(d, toAbsolute = true) {\n  let index = 0\n  let token = ''\n  const parser = {\n    segment: [],\n    inNumber: false,\n    number: '',\n    lastToken: '',\n    inSegment: false,\n    segments: [],\n    pointSeen: false,\n    hasExponent: false,\n    absolute: toAbsolute,\n    p0: new Point(),\n    p: new Point()\n  }\n\n  while (((parser.lastToken = token), (token = d.charAt(index++)))) {\n    if (!parser.inSegment) {\n      if (startNewSegment(parser, token)) {\n        continue\n      }\n    }\n\n    if (token === '.') {\n      if (parser.pointSeen || parser.hasExponent) {\n        finalizeNumber(parser, false)\n        --index\n        continue\n      }\n      parser.inNumber = true\n      parser.pointSeen = true\n      parser.number += token\n      continue\n    }\n\n    if (!isNaN(parseInt(token))) {\n      if (parser.number === '0' || isArcFlag(parser)) {\n        parser.inNumber = true\n        parser.number = token\n        finalizeNumber(parser, true)\n        continue\n      }\n\n      parser.inNumber = true\n      parser.number += token\n      continue\n    }\n\n    if (pathDelimiters.has(token)) {\n      if (parser.inNumber) {\n        finalizeNumber(parser, false)\n      }\n      continue\n    }\n\n    if (token === '-' || token === '+') {\n      if (parser.inNumber && !isExponential(parser)) {\n        finalizeNumber(parser, false)\n        --index\n        continue\n      }\n      parser.number += token\n      parser.inNumber = true\n      continue\n    }\n\n    if (token.toUpperCase() === 'E') {\n      parser.number += token\n      parser.hasExponent = true\n      continue\n    }\n\n    if (isPathLetter.test(token)) {\n      if (parser.inNumber) {\n        finalizeNumber(parser, false)\n      } else if (!segmentComplete(parser)) {\n        throw new Error('parser Error')\n      } else {\n        finalizeSegment(parser)\n      }\n      --index\n    }\n  }\n\n  if (parser.inNumber) {\n    finalizeNumber(parser, false)\n  }\n\n  if (parser.inSegment && segmentComplete(parser)) {\n    finalizeSegment(parser)\n  }\n\n  return parser.segments\n}\n", "import SVGArray from './SVGArray.js'\nimport parser from '../modules/core/parser.js'\nimport Box from './Box.js'\nimport { pathParser } from '../utils/pathParser.js'\n\nfunction arrayToString(a) {\n  let s = ''\n  for (let i = 0, il = a.length; i < il; i++) {\n    s += a[i][0]\n\n    if (a[i][1] != null) {\n      s += a[i][1]\n\n      if (a[i][2] != null) {\n        s += ' '\n        s += a[i][2]\n\n        if (a[i][3] != null) {\n          s += ' '\n          s += a[i][3]\n          s += ' '\n          s += a[i][4]\n\n          if (a[i][5] != null) {\n            s += ' '\n            s += a[i][5]\n            s += ' '\n            s += a[i][6]\n\n            if (a[i][7] != null) {\n              s += ' '\n              s += a[i][7]\n            }\n          }\n        }\n      }\n    }\n  }\n\n  return s + ' '\n}\n\nexport default class PathArray extends SVGArray {\n  // Get bounding box of path\n  bbox() {\n    parser().path.setAttribute('d', this.toString())\n    return new Box(parser.nodes.path.getBBox())\n  }\n\n  // Move path string\n  move(x, y) {\n    // get bounding box of current situation\n    const box = this.bbox()\n\n    // get relative offset\n    x -= box.x\n    y -= box.y\n\n    if (!isNaN(x) && !isNaN(y)) {\n      // move every point\n      for (let l, i = this.length - 1; i >= 0; i--) {\n        l = this[i][0]\n\n        if (l === 'M' || l === 'L' || l === 'T') {\n          this[i][1] += x\n          this[i][2] += y\n        } else if (l === 'H') {\n          this[i][1] += x\n        } else if (l === 'V') {\n          this[i][1] += y\n        } else if (l === 'C' || l === 'S' || l === 'Q') {\n          this[i][1] += x\n          this[i][2] += y\n          this[i][3] += x\n          this[i][4] += y\n\n          if (l === 'C') {\n            this[i][5] += x\n            this[i][6] += y\n          }\n        } else if (l === 'A') {\n          this[i][6] += x\n          this[i][7] += y\n        }\n      }\n    }\n\n    return this\n  }\n\n  // Absolutize and parse path to array\n  parse(d = 'M0 0') {\n    if (Array.isArray(d)) {\n      d = Array.prototype.concat.apply([], d).toString()\n    }\n\n    return pathParser(d)\n  }\n\n  // Resize path string\n  size(width, height) {\n    // get bounding box of current situation\n    const box = this.bbox()\n    let i, l\n\n    // If the box width or height is 0 then we ignore\n    // transformations on the respective axis\n    box.width = box.width === 0 ? 1 : box.width\n    box.height = box.height === 0 ? 1 : box.height\n\n    // recalculate position of all points according to new size\n    for (i = this.length - 1; i >= 0; i--) {\n      l = this[i][0]\n\n      if (l === 'M' || l === 'L' || l === 'T') {\n        this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\n        this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\n      } else if (l === 'H') {\n        this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\n      } else if (l === 'V') {\n        this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\n      } else if (l === 'C' || l === 'S' || l === 'Q') {\n        this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\n        this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\n        this[i][3] = ((this[i][3] - box.x) * width) / box.width + box.x\n        this[i][4] = ((this[i][4] - box.y) * height) / box.height + box.y\n\n        if (l === 'C') {\n          this[i][5] = ((this[i][5] - box.x) * width) / box.width + box.x\n          this[i][6] = ((this[i][6] - box.y) * height) / box.height + box.y\n        }\n      } else if (l === 'A') {\n        // resize radii\n        this[i][1] = (this[i][1] * width) / box.width\n        this[i][2] = (this[i][2] * height) / box.height\n\n        // move position values\n        this[i][6] = ((this[i][6] - box.x) * width) / box.width + box.x\n        this[i][7] = ((this[i][7] - box.y) * height) / box.height + box.y\n      }\n    }\n\n    return this\n  }\n\n  // Convert array to string\n  toString() {\n    return arrayToString(this)\n  }\n}\n", "import { Ease } from './Controller.js'\nimport {\n  delimiter,\n  numberAndUnit,\n  isPathLetter\n} from '../modules/core/regex.js'\nimport { extend } from '../utils/adopter.js'\nimport Color from '../types/Color.js'\nimport PathArray from '../types/PathArray.js'\nimport SVGArray from '../types/SVGArray.js'\nimport SVGNumber from '../types/SVGNumber.js'\n\nconst getClassForType = (value) => {\n  const type = typeof value\n\n  if (type === 'number') {\n    return SVGNumber\n  } else if (type === 'string') {\n    if (Color.isColor(value)) {\n      return Color\n    } else if (delimiter.test(value)) {\n      return isPathLetter.test(value) ? PathArray : SVGArray\n    } else if (numberAndUnit.test(value)) {\n      return SVGNumber\n    } else {\n      return NonMorphable\n    }\n  } else if (morphableTypes.indexOf(value.constructor) > -1) {\n    return value.constructor\n  } else if (Array.isArray(value)) {\n    return SVGArray\n  } else if (type === 'object') {\n    return ObjectBag\n  } else {\n    return NonMorphable\n  }\n}\n\nexport default class Morphable {\n  constructor(stepper) {\n    this._stepper = stepper || new Ease('-')\n\n    this._from = null\n    this._to = null\n    this._type = null\n    this._context = null\n    this._morphObj = null\n  }\n\n  at(pos) {\n    return this._morphObj.morph(\n      this._from,\n      this._to,\n      pos,\n      this._stepper,\n      this._context\n    )\n  }\n\n  done() {\n    const complete = this._context.map(this._stepper.done).reduce(function (\n      last,\n      curr\n    ) {\n      return last && curr\n    }, true)\n    return complete\n  }\n\n  from(val) {\n    if (val == null) {\n      return this._from\n    }\n\n    this._from = this._set(val)\n    return this\n  }\n\n  stepper(stepper) {\n    if (stepper == null) return this._stepper\n    this._stepper = stepper\n    return this\n  }\n\n  to(val) {\n    if (val == null) {\n      return this._to\n    }\n\n    this._to = this._set(val)\n    return this\n  }\n\n  type(type) {\n    // getter\n    if (type == null) {\n      return this._type\n    }\n\n    // setter\n    this._type = type\n    return this\n  }\n\n  _set(value) {\n    if (!this._type) {\n      this.type(getClassForType(value))\n    }\n\n    let result = new this._type(value)\n    if (this._type === Color) {\n      result = this._to\n        ? result[this._to[4]]()\n        : this._from\n          ? result[this._from[4]]()\n          : result\n    }\n\n    if (this._type === ObjectBag) {\n      result = this._to\n        ? result.align(this._to)\n        : this._from\n          ? result.align(this._from)\n          : result\n    }\n\n    result = result.toConsumable()\n\n    this._morphObj = this._morphObj || new this._type()\n    this._context =\n      this._context ||\n      Array.apply(null, Array(result.length))\n        .map(Object)\n        .map(function (o) {\n          o.done = true\n          return o\n        })\n    return result\n  }\n}\n\nexport class NonMorphable {\n  constructor(...args) {\n    this.init(...args)\n  }\n\n  init(val) {\n    val = Array.isArray(val) ? val[0] : val\n    this.value = val\n    return this\n  }\n\n  toArray() {\n    return [this.value]\n  }\n\n  valueOf() {\n    return this.value\n  }\n}\n\nexport class TransformBag {\n  constructor(...args) {\n    this.init(...args)\n  }\n\n  init(obj) {\n    if (Array.isArray(obj)) {\n      obj = {\n        scaleX: obj[0],\n        scaleY: obj[1],\n        shear: obj[2],\n        rotate: obj[3],\n        translateX: obj[4],\n        translateY: obj[5],\n        originX: obj[6],\n        originY: obj[7]\n      }\n    }\n\n    Object.assign(this, TransformBag.defaults, obj)\n    return this\n  }\n\n  toArray() {\n    const v = this\n\n    return [\n      v.scaleX,\n      v.scaleY,\n      v.shear,\n      v.rotate,\n      v.translateX,\n      v.translateY,\n      v.originX,\n      v.originY\n    ]\n  }\n}\n\nTransformBag.defaults = {\n  scaleX: 1,\n  scaleY: 1,\n  shear: 0,\n  rotate: 0,\n  translateX: 0,\n  translateY: 0,\n  originX: 0,\n  originY: 0\n}\n\nconst sortByKey = (a, b) => {\n  return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0\n}\n\nexport class ObjectBag {\n  constructor(...args) {\n    this.init(...args)\n  }\n\n  align(other) {\n    const values = this.values\n    for (let i = 0, il = values.length; i < il; ++i) {\n      // If the type is the same we only need to check if the color is in the correct format\n      if (values[i + 1] === other[i + 1]) {\n        if (values[i + 1] === Color && other[i + 7] !== values[i + 7]) {\n          const space = other[i + 7]\n          const color = new Color(this.values.splice(i + 3, 5))\n            [space]()\n            .toArray()\n          this.values.splice(i + 3, 0, ...color)\n        }\n\n        i += values[i + 2] + 2\n        continue\n      }\n\n      if (!other[i + 1]) {\n        return this\n      }\n\n      // The types differ, so we overwrite the new type with the old one\n      // And initialize it with the types default (e.g. black for color or 0 for number)\n      const defaultObject = new other[i + 1]().toArray()\n\n      // Than we fix the values array\n      const toDelete = values[i + 2] + 3\n\n      values.splice(\n        i,\n        toDelete,\n        other[i],\n        other[i + 1],\n        other[i + 2],\n        ...defaultObject\n      )\n\n      i += values[i + 2] + 2\n    }\n    return this\n  }\n\n  init(objOrArr) {\n    this.values = []\n\n    if (Array.isArray(objOrArr)) {\n      this.values = objOrArr.slice()\n      return\n    }\n\n    objOrArr = objOrArr || {}\n    const entries = []\n\n    for (const i in objOrArr) {\n      const Type = getClassForType(objOrArr[i])\n      const val = new Type(objOrArr[i]).toArray()\n      entries.push([i, Type, val.length, ...val])\n    }\n\n    entries.sort(sortByKey)\n\n    this.values = entries.reduce((last, curr) => last.concat(curr), [])\n    return this\n  }\n\n  toArray() {\n    return this.values\n  }\n\n  valueOf() {\n    const obj = {}\n    const arr = this.values\n\n    // for (var i = 0, len = arr.length; i < len; i += 2) {\n    while (arr.length) {\n      const key = arr.shift()\n      const Type = arr.shift()\n      const num = arr.shift()\n      const values = arr.splice(0, num)\n      obj[key] = new Type(values) // .valueOf()\n    }\n\n    return obj\n  }\n}\n\nconst morphableTypes = [NonMorphable, TransformBag, ObjectBag]\n\nexport function registerMorphableType(type = []) {\n  morphableTypes.push(...[].concat(type))\n}\n\nexport function makeMorphable() {\n  extend(morphableTypes, {\n    to(val) {\n      return new Morphable()\n        .type(this.constructor)\n        .from(this.toArray()) // this.valueOf())\n        .to(val)\n    },\n    fromArray(arr) {\n      this.init(arr)\n      return this\n    },\n    toConsumable() {\n      return this.toArray()\n    },\n    morph(from, to, pos, stepper, context) {\n      const mapper = function (i, index) {\n        return stepper.step(i, to[index], pos, context[index], context)\n      }\n\n      return this.fromArray(from.map(mapper))\n    }\n  })\n}\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { proportionalSize } from '../utils/utils.js'\nimport { registerMethods } from '../utils/methods.js'\nimport PathArray from '../types/PathArray.js'\nimport Shape from './Shape.js'\n\nexport default class Path extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('path', node), attrs)\n  }\n\n  // Get array\n  array() {\n    return this._array || (this._array = new PathArray(this.attr('d')))\n  }\n\n  // Clear array cache\n  clear() {\n    delete this._array\n    return this\n  }\n\n  // Set height of element\n  height(height) {\n    return height == null\n      ? this.bbox().height\n      : this.size(this.bbox().width, height)\n  }\n\n  // Move by left top corner\n  move(x, y) {\n    return this.attr('d', this.array().move(x, y))\n  }\n\n  // Plot new path\n  plot(d) {\n    return d == null\n      ? this.array()\n      : this.clear().attr(\n          'd',\n          typeof d === 'string' ? d : (this._array = new PathArray(d))\n        )\n  }\n\n  // Set element size to given width and height\n  size(width, height) {\n    const p = proportionalSize(this, width, height)\n    return this.attr('d', this.array().size(p.width, p.height))\n  }\n\n  // Set width of element\n  width(width) {\n    return width == null\n      ? this.bbox().width\n      : this.size(width, this.bbox().height)\n  }\n\n  // Move by left top corner over x-axis\n  x(x) {\n    return x == null ? this.bbox().x : this.move(x, this.bbox().y)\n  }\n\n  // Move by left top corner over y-axis\n  y(y) {\n    return y == null ? this.bbox().y : this.move(this.bbox().x, y)\n  }\n}\n\n// Define morphable array\nPath.prototype.MorphArray = PathArray\n\n// Add parent method\nregisterMethods({\n  Container: {\n    // Create a wrapped path element\n    path: wrapWithAttrCheck(function (d) {\n      // make sure plot is called as a setter\n      return this.put(new Path()).plot(d || new PathArray())\n    })\n  }\n})\n\nregister(Path, 'Path')\n", "import { proportionalSize } from '../../utils/utils.js'\nimport PointArray from '../../types/PointArray.js'\n\n// Get array\nexport function array() {\n  return this._array || (this._array = new PointArray(this.attr('points')))\n}\n\n// Clear array cache\nexport function clear() {\n  delete this._array\n  return this\n}\n\n// Move by left top corner\nexport function move(x, y) {\n  return this.attr('points', this.array().move(x, y))\n}\n\n// Plot new path\nexport function plot(p) {\n  return p == null\n    ? this.array()\n    : this.clear().attr(\n        'points',\n        typeof p === 'string' ? p : (this._array = new PointArray(p))\n      )\n}\n\n// Set element size to given width and height\nexport function size(width, height) {\n  const p = proportionalSize(this, width, height)\n  return this.attr('points', this.array().size(p.width, p.height))\n}\n", "import {\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport PointArray from '../types/PointArray.js'\nimport Shape from './Shape.js'\nimport * as pointed from '../modules/core/pointed.js'\nimport * as poly from '../modules/core/poly.js'\n\nexport default class Polygon extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('polygon', node), attrs)\n  }\n}\n\nregisterMethods({\n  Container: {\n    // Create a wrapped polygon element\n    polygon: wrapWithAttrCheck(function (p) {\n      // make sure plot is called as a setter\n      return this.put(new Polygon()).plot(p || new PointArray())\n    })\n  }\n})\n\nextend(Polygon, pointed)\nextend(Polygon, poly)\nregister(Polygon, 'Polygon')\n", "import {\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport PointArray from '../types/PointArray.js'\nimport Shape from './Shape.js'\nimport * as pointed from '../modules/core/pointed.js'\nimport * as poly from '../modules/core/poly.js'\n\nexport default class Polyline extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('polyline', node), attrs)\n  }\n}\n\nregisterMethods({\n  Container: {\n    // Create a wrapped polygon element\n    polyline: wrapWithAttrCheck(function (p) {\n      // make sure plot is called as a setter\n      return this.put(new Polyline()).plot(p || new PointArray())\n    })\n  }\n})\n\nextend(Polyline, pointed)\nextend(Polyline, poly)\nregister(Polyline, 'Polyline')\n", "import {\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport { rx, ry } from '../modules/core/circled.js'\nimport Shape from './Shape.js'\n\nexport default class Rect extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('rect', node), attrs)\n  }\n}\n\nextend(Rect, { rx, ry })\n\nregisterMethods({\n  Container: {\n    // Create a rect element\n    rect: wrapWithAttrCheck(function (width, height) {\n      return this.put(new Rect()).size(width, height)\n    })\n  }\n})\n\nregister(Rect, 'Rect')\n", "export default class Queue {\n  constructor() {\n    this._first = null\n    this._last = null\n  }\n\n  // Shows us the first item in the list\n  first() {\n    return this._first && this._first.value\n  }\n\n  // Shows us the last item in the list\n  last() {\n    return this._last && this._last.value\n  }\n\n  push(value) {\n    // An item stores an id and the provided value\n    const item =\n      typeof value.next !== 'undefined'\n        ? value\n        : { value: value, next: null, prev: null }\n\n    // Deal with the queue being empty or populated\n    if (this._last) {\n      item.prev = this._last\n      this._last.next = item\n      this._last = item\n    } else {\n      this._last = item\n      this._first = item\n    }\n\n    // Return the current item\n    return item\n  }\n\n  // Removes the item that was returned from the push\n  remove(item) {\n    // Relink the previous item\n    if (item.prev) item.prev.next = item.next\n    if (item.next) item.next.prev = item.prev\n    if (item === this._last) this._last = item.prev\n    if (item === this._first) this._first = item.next\n\n    // Invalidate item\n    item.prev = null\n    item.next = null\n  }\n\n  shift() {\n    // Check if we have a value\n    const remove = this._first\n    if (!remove) return null\n\n    // If we do, remove it and relink things\n    this._first = remove.next\n    if (this._first) this._first.prev = null\n    this._last = this._first ? this._last : null\n    return remove.value\n  }\n}\n", "import { globals } from '../utils/window.js'\nimport Queue from './Queue.js'\n\nconst Animator = {\n  nextDraw: null,\n  frames: new Queue(),\n  timeouts: new Queue(),\n  immediates: new Queue(),\n  timer: () => globals.window.performance || globals.window.Date,\n  transforms: [],\n\n  frame(fn) {\n    // Store the node\n    const node = Animator.frames.push({ run: fn })\n\n    // Request an animation frame if we don't have one\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\n    }\n\n    // Return the node so we can remove it easily\n    return node\n  },\n\n  timeout(fn, delay) {\n    delay = delay || 0\n\n    // Work out when the event should fire\n    const time = Animator.timer().now() + delay\n\n    // Add the timeout to the end of the queue\n    const node = Animator.timeouts.push({ run: fn, time: time })\n\n    // Request another animation frame if we need one\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\n    }\n\n    return node\n  },\n\n  immediate(fn) {\n    // Add the immediate fn to the end of the queue\n    const node = Animator.immediates.push(fn)\n    // Request another animation frame if we need one\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\n    }\n\n    return node\n  },\n\n  cancelFrame(node) {\n    node != null && Animator.frames.remove(node)\n  },\n\n  clearTimeout(node) {\n    node != null && Animator.timeouts.remove(node)\n  },\n\n  cancelImmediate(node) {\n    node != null && Animator.immediates.remove(node)\n  },\n\n  _draw(now) {\n    // Run all the timeouts we can run, if they are not ready yet, add them\n    // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\n    let nextTimeout = null\n    const lastTimeout = Animator.timeouts.last()\n    while ((nextTimeout = Animator.timeouts.shift())) {\n      // Run the timeout if its time, or push it to the end\n      if (now >= nextTimeout.time) {\n        nextTimeout.run()\n      } else {\n        Animator.timeouts.push(nextTimeout)\n      }\n\n      // If we hit the last item, we should stop shifting out more items\n      if (nextTimeout === lastTimeout) break\n    }\n\n    // Run all of the animation frames\n    let nextFrame = null\n    const lastFrame = Animator.frames.last()\n    while (nextFrame !== lastFrame && (nextFrame = Animator.frames.shift())) {\n      nextFrame.run(now)\n    }\n\n    let nextImmediate = null\n    while ((nextImmediate = Animator.immediates.shift())) {\n      nextImmediate()\n    }\n\n    // If we have remaining timeouts or frames, draw until we don't anymore\n    Animator.nextDraw =\n      Animator.timeouts.first() || Animator.frames.first()\n        ? globals.window.requestAnimationFrame(Animator._draw)\n        : null\n  }\n}\n\nexport default Animator\n", "import { globals } from '../utils/window.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Animator from './Animator.js'\nimport EventTarget from '../types/EventTarget.js'\n\nconst makeSchedule = function (runnerInfo) {\n  const start = runnerInfo.start\n  const duration = runnerInfo.runner.duration()\n  const end = start + duration\n  return {\n    start: start,\n    duration: duration,\n    end: end,\n    runner: runnerInfo.runner\n  }\n}\n\nconst defaultSource = function () {\n  const w = globals.window\n  return (w.performance || w.Date).now()\n}\n\nexport default class Timeline extends EventTarget {\n  // Construct a new timeline on the given element\n  constructor(timeSource = defaultSource) {\n    super()\n\n    this._timeSource = timeSource\n\n    // terminate resets all variables to their initial state\n    this.terminate()\n  }\n\n  active() {\n    return !!this._nextFrame\n  }\n\n  finish() {\n    // Go to end and pause\n    this.time(this.getEndTimeOfTimeline() + 1)\n    return this.pause()\n  }\n\n  // Calculates the end of the timeline\n  getEndTime() {\n    const lastRunnerInfo = this.getLastRunnerInfo()\n    const lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0\n    const lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : this._time\n    return lastStartTime + lastDuration\n  }\n\n  getEndTimeOfTimeline() {\n    const endTimes = this._runners.map((i) => i.start + i.runner.duration())\n    return Math.max(0, ...endTimes)\n  }\n\n  getLastRunnerInfo() {\n    return this.getRunnerInfoById(this._lastRunnerId)\n  }\n\n  getRunnerInfoById(id) {\n    return this._runners[this._runnerIds.indexOf(id)] || null\n  }\n\n  pause() {\n    this._paused = true\n    return this._continue()\n  }\n\n  persist(dtOrForever) {\n    if (dtOrForever == null) return this._persist\n    this._persist = dtOrForever\n    return this\n  }\n\n  play() {\n    // Now make sure we are not paused and continue the animation\n    this._paused = false\n    return this.updateTime()._continue()\n  }\n\n  reverse(yes) {\n    const currentSpeed = this.speed()\n    if (yes == null) return this.speed(-currentSpeed)\n\n    const positive = Math.abs(currentSpeed)\n    return this.speed(yes ? -positive : positive)\n  }\n\n  // schedules a runner on the timeline\n  schedule(runner, delay, when) {\n    if (runner == null) {\n      return this._runners.map(makeSchedule)\n    }\n\n    // The start time for the next animation can either be given explicitly,\n    // derived from the current timeline time or it can be relative to the\n    // last start time to chain animations directly\n\n    let absoluteStartTime = 0\n    const endTime = this.getEndTime()\n    delay = delay || 0\n\n    // Work out when to start the animation\n    if (when == null || when === 'last' || when === 'after') {\n      // Take the last time and increment\n      absoluteStartTime = endTime\n    } else if (when === 'absolute' || when === 'start') {\n      absoluteStartTime = delay\n      delay = 0\n    } else if (when === 'now') {\n      absoluteStartTime = this._time\n    } else if (when === 'relative') {\n      const runnerInfo = this.getRunnerInfoById(runner.id)\n      if (runnerInfo) {\n        absoluteStartTime = runnerInfo.start + delay\n        delay = 0\n      }\n    } else if (when === 'with-last') {\n      const lastRunnerInfo = this.getLastRunnerInfo()\n      const lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : this._time\n      absoluteStartTime = lastStartTime\n    } else {\n      throw new Error('Invalid value for the \"when\" parameter')\n    }\n\n    // Manage runner\n    runner.unschedule()\n    runner.timeline(this)\n\n    const persist = runner.persist()\n    const runnerInfo = {\n      persist: persist === null ? this._persist : persist,\n      start: absoluteStartTime + delay,\n      runner\n    }\n\n    this._lastRunnerId = runner.id\n\n    this._runners.push(runnerInfo)\n    this._runners.sort((a, b) => a.start - b.start)\n    this._runnerIds = this._runners.map((info) => info.runner.id)\n\n    this.updateTime()._continue()\n    return this\n  }\n\n  seek(dt) {\n    return this.time(this._time + dt)\n  }\n\n  source(fn) {\n    if (fn == null) return this._timeSource\n    this._timeSource = fn\n    return this\n  }\n\n  speed(speed) {\n    if (speed == null) return this._speed\n    this._speed = speed\n    return this\n  }\n\n  stop() {\n    // Go to start and pause\n    this.time(0)\n    return this.pause()\n  }\n\n  time(time) {\n    if (time == null) return this._time\n    this._time = time\n    return this._continue(true)\n  }\n\n  // Remove the runner from this timeline\n  unschedule(runner) {\n    const index = this._runnerIds.indexOf(runner.id)\n    if (index < 0) return this\n\n    this._runners.splice(index, 1)\n    this._runnerIds.splice(index, 1)\n\n    runner.timeline(null)\n    return this\n  }\n\n  // Makes sure, that after pausing the time doesn't jump\n  updateTime() {\n    if (!this.active()) {\n      this._lastSourceTime = this._timeSource()\n    }\n    return this\n  }\n\n  // Checks if we are running and continues the animation\n  _continue(immediateStep = false) {\n    Animator.cancelFrame(this._nextFrame)\n    this._nextFrame = null\n\n    if (immediateStep) return this._stepImmediate()\n    if (this._paused) return this\n\n    this._nextFrame = Animator.frame(this._step)\n    return this\n  }\n\n  _stepFn(immediateStep = false) {\n    // Get the time delta from the last time and update the time\n    const time = this._timeSource()\n    let dtSource = time - this._lastSourceTime\n\n    if (immediateStep) dtSource = 0\n\n    const dtTime = this._speed * dtSource + (this._time - this._lastStepTime)\n    this._lastSourceTime = time\n\n    // Only update the time if we use the timeSource.\n    // Otherwise use the current time\n    if (!immediateStep) {\n      // Update the time\n      this._time += dtTime\n      this._time = this._time < 0 ? 0 : this._time\n    }\n    this._lastStepTime = this._time\n    this.fire('time', this._time)\n\n    // This is for the case that the timeline was seeked so that the time\n    // is now before the startTime of the runner. That is why we need to set\n    // the runner to position 0\n\n    // FIXME:\n    // However, resetting in insertion order leads to bugs. Considering the case,\n    // where 2 runners change the same attribute but in different times,\n    // resetting both of them will lead to the case where the later defined\n    // runner always wins the reset even if the other runner started earlier\n    // and therefore should win the attribute battle\n    // this can be solved by resetting them backwards\n    for (let k = this._runners.length; k--; ) {\n      // Get and run the current runner and ignore it if its inactive\n      const runnerInfo = this._runners[k]\n      const runner = runnerInfo.runner\n\n      // Make sure that we give the actual difference\n      // between runner start time and now\n      const dtToStart = this._time - runnerInfo.start\n\n      // Dont run runner if not started yet\n      // and try to reset it\n      if (dtToStart <= 0) {\n        runner.reset()\n      }\n    }\n\n    // Run all of the runners directly\n    let runnersLeft = false\n    for (let i = 0, len = this._runners.length; i < len; i++) {\n      // Get and run the current runner and ignore it if its inactive\n      const runnerInfo = this._runners[i]\n      const runner = runnerInfo.runner\n      let dt = dtTime\n\n      // Make sure that we give the actual difference\n      // between runner start time and now\n      const dtToStart = this._time - runnerInfo.start\n\n      // Dont run runner if not started yet\n      if (dtToStart <= 0) {\n        runnersLeft = true\n        continue\n      } else if (dtToStart < dt) {\n        // Adjust dt to make sure that animation is on point\n        dt = dtToStart\n      }\n\n      if (!runner.active()) continue\n\n      // If this runner is still going, signal that we need another animation\n      // frame, otherwise, remove the completed runner\n      const finished = runner.step(dt).done\n      if (!finished) {\n        runnersLeft = true\n        // continue\n      } else if (runnerInfo.persist !== true) {\n        // runner is finished. And runner might get removed\n        const endTime = runner.duration() - runner.time() + this._time\n\n        if (endTime + runnerInfo.persist < this._time) {\n          // Delete runner and correct index\n          runner.unschedule()\n          --i\n          --len\n        }\n      }\n    }\n\n    // Basically: we continue when there are runners right from us in time\n    // when -->, and when runners are left from us when <--\n    if (\n      (runnersLeft && !(this._speed < 0 && this._time === 0)) ||\n      (this._runnerIds.length && this._speed < 0 && this._time > 0)\n    ) {\n      this._continue()\n    } else {\n      this.pause()\n      this.fire('finished')\n    }\n\n    return this\n  }\n\n  terminate() {\n    // cleanup memory\n\n    // Store the timing variables\n    this._startTime = 0\n    this._speed = 1.0\n\n    // Determines how long a runner is hold in memory. Can be a dt or true/false\n    this._persist = 0\n\n    // Keep track of the running animations and their starting parameters\n    this._nextFrame = null\n    this._paused = true\n    this._runners = []\n    this._runnerIds = []\n    this._lastRunnerId = -1\n    this._time = 0\n    this._lastSourceTime = 0\n    this._lastStepTime = 0\n\n    // Make sure that step is always called in class context\n    this._step = this._stepFn.bind(this, false)\n    this._stepImmediate = this._stepFn.bind(this, true)\n  }\n}\n\nregisterMethods({\n  Element: {\n    timeline: function (timeline) {\n      if (timeline == null) {\n        this._timeline = this._timeline || new Timeline()\n        return this._timeline\n      } else {\n        this._timeline = timeline\n        return this\n      }\n    }\n  }\n})\n", "import { Controller, Ease, Stepper } from './Controller.js'\nimport { extend, register } from '../utils/adopter.js'\nimport { from, to } from '../modules/core/gradiented.js'\nimport { getOrigin } from '../utils/utils.js'\nimport { noop, timeline } from '../modules/core/defaults.js'\nimport { registerMethods } from '../utils/methods.js'\nimport { rx, ry } from '../modules/core/circled.js'\nimport Animator from './Animator.js'\nimport Box from '../types/Box.js'\nimport EventTarget from '../types/EventTarget.js'\nimport Matrix from '../types/Matrix.js'\nimport Morphable, { TransformBag, ObjectBag } from './Morphable.js'\nimport Point from '../types/Point.js'\nimport SVGNumber from '../types/SVGNumber.js'\nimport Timeline from './Timeline.js'\n\nexport default class Runner extends EventTarget {\n  constructor(options) {\n    super()\n\n    // Store a unique id on the runner, so that we can identify it later\n    this.id = Runner.id++\n\n    // Ensure a default value\n    options = options == null ? timeline.duration : options\n\n    // Ensure that we get a controller\n    options = typeof options === 'function' ? new Controller(options) : options\n\n    // Declare all of the variables\n    this._element = null\n    this._timeline = null\n    this.done = false\n    this._queue = []\n\n    // Work out the stepper and the duration\n    this._duration = typeof options === 'number' && options\n    this._isDeclarative = options instanceof Controller\n    this._stepper = this._isDeclarative ? options : new Ease()\n\n    // We copy the current values from the timeline because they can change\n    this._history = {}\n\n    // Store the state of the runner\n    this.enabled = true\n    this._time = 0\n    this._lastTime = 0\n\n    // At creation, the runner is in reset state\n    this._reseted = true\n\n    // Save transforms applied to this runner\n    this.transforms = new Matrix()\n    this.transformId = 1\n\n    // Looping variables\n    this._haveReversed = false\n    this._reverse = false\n    this._loopsDone = 0\n    this._swing = false\n    this._wait = 0\n    this._times = 1\n\n    this._frameId = null\n\n    // Stores how long a runner is stored after being done\n    this._persist = this._isDeclarative ? true : null\n  }\n\n  static sanitise(duration, delay, when) {\n    // Initialise the default parameters\n    let times = 1\n    let swing = false\n    let wait = 0\n    duration = duration ?? timeline.duration\n    delay = delay ?? timeline.delay\n    when = when || 'last'\n\n    // If we have an object, unpack the values\n    if (typeof duration === 'object' && !(duration instanceof Stepper)) {\n      delay = duration.delay ?? delay\n      when = duration.when ?? when\n      swing = duration.swing || swing\n      times = duration.times ?? times\n      wait = duration.wait ?? wait\n      duration = duration.duration ?? timeline.duration\n    }\n\n    return {\n      duration: duration,\n      delay: delay,\n      swing: swing,\n      times: times,\n      wait: wait,\n      when: when\n    }\n  }\n\n  active(enabled) {\n    if (enabled == null) return this.enabled\n    this.enabled = enabled\n    return this\n  }\n\n  /*\n  Private Methods\n  ===============\n  Methods that shouldn't be used externally\n  */\n  addTransform(transform) {\n    this.transforms.lmultiplyO(transform)\n    return this\n  }\n\n  after(fn) {\n    return this.on('finished', fn)\n  }\n\n  animate(duration, delay, when) {\n    const o = Runner.sanitise(duration, delay, when)\n    const runner = new Runner(o.duration)\n    if (this._timeline) runner.timeline(this._timeline)\n    if (this._element) runner.element(this._element)\n    return runner.loop(o).schedule(o.delay, o.when)\n  }\n\n  clearTransform() {\n    this.transforms = new Matrix()\n    return this\n  }\n\n  // TODO: Keep track of all transformations so that deletion is faster\n  clearTransformsFromQueue() {\n    if (\n      !this.done ||\n      !this._timeline ||\n      !this._timeline._runnerIds.includes(this.id)\n    ) {\n      this._queue = this._queue.filter((item) => {\n        return !item.isTransform\n      })\n    }\n  }\n\n  delay(delay) {\n    return this.animate(0, delay)\n  }\n\n  duration() {\n    return this._times * (this._wait + this._duration) - this._wait\n  }\n\n  during(fn) {\n    return this.queue(null, fn)\n  }\n\n  ease(fn) {\n    this._stepper = new Ease(fn)\n    return this\n  }\n  /*\n  Runner Definitions\n  ==================\n  These methods help us define the runtime behaviour of the Runner or they\n  help us make new runners from the current runner\n  */\n\n  element(element) {\n    if (element == null) return this._element\n    this._element = element\n    element._prepareRunner()\n    return this\n  }\n\n  finish() {\n    return this.step(Infinity)\n  }\n\n  loop(times, swing, wait) {\n    // Deal with the user passing in an object\n    if (typeof times === 'object') {\n      swing = times.swing\n      wait = times.wait\n      times = times.times\n    }\n\n    // Sanitise the values and store them\n    this._times = times || Infinity\n    this._swing = swing || false\n    this._wait = wait || 0\n\n    // Allow true to be passed\n    if (this._times === true) {\n      this._times = Infinity\n    }\n\n    return this\n  }\n\n  loops(p) {\n    const loopDuration = this._duration + this._wait\n    if (p == null) {\n      const loopsDone = Math.floor(this._time / loopDuration)\n      const relativeTime = this._time - loopsDone * loopDuration\n      const position = relativeTime / this._duration\n      return Math.min(loopsDone + position, this._times)\n    }\n    const whole = Math.floor(p)\n    const partial = p % 1\n    const time = loopDuration * whole + this._duration * partial\n    return this.time(time)\n  }\n\n  persist(dtOrForever) {\n    if (dtOrForever == null) return this._persist\n    this._persist = dtOrForever\n    return this\n  }\n\n  position(p) {\n    // Get all of the variables we need\n    const x = this._time\n    const d = this._duration\n    const w = this._wait\n    const t = this._times\n    const s = this._swing\n    const r = this._reverse\n    let position\n\n    if (p == null) {\n      /*\n      This function converts a time to a position in the range [0, 1]\n      The full explanation can be found in this desmos demonstration\n        https://www.desmos.com/calculator/u4fbavgche\n      The logic is slightly simplified here because we can use booleans\n      */\n\n      // Figure out the value without thinking about the start or end time\n      const f = function (x) {\n        const swinging = s * Math.floor((x % (2 * (w + d))) / (w + d))\n        const backwards = (swinging && !r) || (!swinging && r)\n        const uncliped =\n          (Math.pow(-1, backwards) * (x % (w + d))) / d + backwards\n        const clipped = Math.max(Math.min(uncliped, 1), 0)\n        return clipped\n      }\n\n      // Figure out the value by incorporating the start time\n      const endTime = t * (w + d) - w\n      position =\n        x <= 0\n          ? Math.round(f(1e-5))\n          : x < endTime\n            ? f(x)\n            : Math.round(f(endTime - 1e-5))\n      return position\n    }\n\n    // Work out the loops done and add the position to the loops done\n    const loopsDone = Math.floor(this.loops())\n    const swingForward = s && loopsDone % 2 === 0\n    const forwards = (swingForward && !r) || (r && swingForward)\n    position = loopsDone + (forwards ? p : 1 - p)\n    return this.loops(position)\n  }\n\n  progress(p) {\n    if (p == null) {\n      return Math.min(1, this._time / this.duration())\n    }\n    return this.time(p * this.duration())\n  }\n\n  /*\n  Basic Functionality\n  ===================\n  These methods allow us to attach basic functions to the runner directly\n  */\n  queue(initFn, runFn, retargetFn, isTransform) {\n    this._queue.push({\n      initialiser: initFn || noop,\n      runner: runFn || noop,\n      retarget: retargetFn,\n      isTransform: isTransform,\n      initialised: false,\n      finished: false\n    })\n    const timeline = this.timeline()\n    timeline && this.timeline()._continue()\n    return this\n  }\n\n  reset() {\n    if (this._reseted) return this\n    this.time(0)\n    this._reseted = true\n    return this\n  }\n\n  reverse(reverse) {\n    this._reverse = reverse == null ? !this._reverse : reverse\n    return this\n  }\n\n  schedule(timeline, delay, when) {\n    // The user doesn't need to pass a timeline if we already have one\n    if (!(timeline instanceof Timeline)) {\n      when = delay\n      delay = timeline\n      timeline = this.timeline()\n    }\n\n    // If there is no timeline, yell at the user...\n    if (!timeline) {\n      throw Error('Runner cannot be scheduled without timeline')\n    }\n\n    // Schedule the runner on the timeline provided\n    timeline.schedule(this, delay, when)\n    return this\n  }\n\n  step(dt) {\n    // If we are inactive, this stepper just gets skipped\n    if (!this.enabled) return this\n\n    // Update the time and get the new position\n    dt = dt == null ? 16 : dt\n    this._time += dt\n    const position = this.position()\n\n    // Figure out if we need to run the stepper in this frame\n    const running = this._lastPosition !== position && this._time >= 0\n    this._lastPosition = position\n\n    // Figure out if we just started\n    const duration = this.duration()\n    const justStarted = this._lastTime <= 0 && this._time > 0\n    const justFinished = this._lastTime < duration && this._time >= duration\n\n    this._lastTime = this._time\n    if (justStarted) {\n      this.fire('start', this)\n    }\n\n    // Work out if the runner is finished set the done flag here so animations\n    // know, that they are running in the last step (this is good for\n    // transformations which can be merged)\n    const declarative = this._isDeclarative\n    this.done = !declarative && !justFinished && this._time >= duration\n\n    // Runner is running. So its not in reset state anymore\n    this._reseted = false\n\n    let converged = false\n    // Call initialise and the run function\n    if (running || declarative) {\n      this._initialise(running)\n\n      // clear the transforms on this runner so they dont get added again and again\n      this.transforms = new Matrix()\n      converged = this._run(declarative ? dt : position)\n\n      this.fire('step', this)\n    }\n    // correct the done flag here\n    // declarative animations itself know when they converged\n    this.done = this.done || (converged && declarative)\n    if (justFinished) {\n      this.fire('finished', this)\n    }\n    return this\n  }\n\n  /*\n  Runner animation methods\n  ========================\n  Control how the animation plays\n  */\n  time(time) {\n    if (time == null) {\n      return this._time\n    }\n    const dt = time - this._time\n    this.step(dt)\n    return this\n  }\n\n  timeline(timeline) {\n    // check explicitly for undefined so we can set the timeline to null\n    if (typeof timeline === 'undefined') return this._timeline\n    this._timeline = timeline\n    return this\n  }\n\n  unschedule() {\n    const timeline = this.timeline()\n    timeline && timeline.unschedule(this)\n    return this\n  }\n\n  // Run each initialise function in the runner if required\n  _initialise(running) {\n    // If we aren't running, we shouldn't initialise when not declarative\n    if (!running && !this._isDeclarative) return\n\n    // Loop through all of the initialisers\n    for (let i = 0, len = this._queue.length; i < len; ++i) {\n      // Get the current initialiser\n      const current = this._queue[i]\n\n      // Determine whether we need to initialise\n      const needsIt = this._isDeclarative || (!current.initialised && running)\n      running = !current.finished\n\n      // Call the initialiser if we need to\n      if (needsIt && running) {\n        current.initialiser.call(this)\n        current.initialised = true\n      }\n    }\n  }\n\n  // Save a morpher to the morpher list so that we can retarget it later\n  _rememberMorpher(method, morpher) {\n    this._history[method] = {\n      morpher: morpher,\n      caller: this._queue[this._queue.length - 1]\n    }\n\n    // We have to resume the timeline in case a controller\n    // is already done without being ever run\n    // This can happen when e.g. this is done:\n    //    anim = el.animate(new SVG.Spring)\n    // and later\n    //    anim.move(...)\n    if (this._isDeclarative) {\n      const timeline = this.timeline()\n      timeline && timeline.play()\n    }\n  }\n\n  // Try to set the target for a morpher if the morpher exists, otherwise\n  // Run each run function for the position or dt given\n  _run(positionOrDt) {\n    // Run all of the _queue directly\n    let allfinished = true\n    for (let i = 0, len = this._queue.length; i < len; ++i) {\n      // Get the current function to run\n      const current = this._queue[i]\n\n      // Run the function if its not finished, we keep track of the finished\n      // flag for the sake of declarative _queue\n      const converged = current.runner.call(this, positionOrDt)\n      current.finished = current.finished || converged === true\n      allfinished = allfinished && current.finished\n    }\n\n    // We report when all of the constructors are finished\n    return allfinished\n  }\n\n  // do nothing and return false\n  _tryRetarget(method, target, extra) {\n    if (this._history[method]) {\n      // if the last method wasn't even initialised, throw it away\n      if (!this._history[method].caller.initialised) {\n        const index = this._queue.indexOf(this._history[method].caller)\n        this._queue.splice(index, 1)\n        return false\n      }\n\n      // for the case of transformations, we use the special retarget function\n      // which has access to the outer scope\n      if (this._history[method].caller.retarget) {\n        this._history[method].caller.retarget.call(this, target, extra)\n        // for everything else a simple morpher change is sufficient\n      } else {\n        this._history[method].morpher.to(target)\n      }\n\n      this._history[method].caller.finished = false\n      const timeline = this.timeline()\n      timeline && timeline.play()\n      return true\n    }\n    return false\n  }\n}\n\nRunner.id = 0\n\nexport class FakeRunner {\n  constructor(transforms = new Matrix(), id = -1, done = true) {\n    this.transforms = transforms\n    this.id = id\n    this.done = done\n  }\n\n  clearTransformsFromQueue() {}\n}\n\nextend([Runner, FakeRunner], {\n  mergeWith(runner) {\n    return new FakeRunner(\n      runner.transforms.lmultiply(this.transforms),\n      runner.id\n    )\n  }\n})\n\n// FakeRunner.emptyRunner = new FakeRunner()\n\nconst lmultiply = (last, curr) => last.lmultiplyO(curr)\nconst getRunnerTransform = (runner) => runner.transforms\n\nfunction mergeTransforms() {\n  // Find the matrix to apply to the element and apply it\n  const runners = this._transformationRunners.runners\n  const netTransform = runners\n    .map(getRunnerTransform)\n    .reduce(lmultiply, new Matrix())\n\n  this.transform(netTransform)\n\n  this._transformationRunners.merge()\n\n  if (this._transformationRunners.length() === 1) {\n    this._frameId = null\n  }\n}\n\nexport class RunnerArray {\n  constructor() {\n    this.runners = []\n    this.ids = []\n  }\n\n  add(runner) {\n    if (this.runners.includes(runner)) return\n    const id = runner.id + 1\n\n    this.runners.push(runner)\n    this.ids.push(id)\n\n    return this\n  }\n\n  clearBefore(id) {\n    const deleteCnt = this.ids.indexOf(id + 1) || 1\n    this.ids.splice(0, deleteCnt, 0)\n    this.runners\n      .splice(0, deleteCnt, new FakeRunner())\n      .forEach((r) => r.clearTransformsFromQueue())\n    return this\n  }\n\n  edit(id, newRunner) {\n    const index = this.ids.indexOf(id + 1)\n    this.ids.splice(index, 1, id + 1)\n    this.runners.splice(index, 1, newRunner)\n    return this\n  }\n\n  getByID(id) {\n    return this.runners[this.ids.indexOf(id + 1)]\n  }\n\n  length() {\n    return this.ids.length\n  }\n\n  merge() {\n    let lastRunner = null\n    for (let i = 0; i < this.runners.length; ++i) {\n      const runner = this.runners[i]\n\n      const condition =\n        lastRunner &&\n        runner.done &&\n        lastRunner.done &&\n        // don't merge runner when persisted on timeline\n        (!runner._timeline ||\n          !runner._timeline._runnerIds.includes(runner.id)) &&\n        (!lastRunner._timeline ||\n          !lastRunner._timeline._runnerIds.includes(lastRunner.id))\n\n      if (condition) {\n        // the +1 happens in the function\n        this.remove(runner.id)\n        const newRunner = runner.mergeWith(lastRunner)\n        this.edit(lastRunner.id, newRunner)\n        lastRunner = newRunner\n        --i\n      } else {\n        lastRunner = runner\n      }\n    }\n\n    return this\n  }\n\n  remove(id) {\n    const index = this.ids.indexOf(id + 1)\n    this.ids.splice(index, 1)\n    this.runners.splice(index, 1)\n    return this\n  }\n}\n\nregisterMethods({\n  Element: {\n    animate(duration, delay, when) {\n      const o = Runner.sanitise(duration, delay, when)\n      const timeline = this.timeline()\n      return new Runner(o.duration)\n        .loop(o)\n        .element(this)\n        .timeline(timeline.play())\n        .schedule(o.delay, o.when)\n    },\n\n    delay(by, when) {\n      return this.animate(0, by, when)\n    },\n\n    // this function searches for all runners on the element and deletes the ones\n    // which run before the current one. This is because absolute transformations\n    // overwrite anything anyway so there is no need to waste time computing\n    // other runners\n    _clearTransformRunnersBefore(currentRunner) {\n      this._transformationRunners.clearBefore(currentRunner.id)\n    },\n\n    _currentTransform(current) {\n      return (\n        this._transformationRunners.runners\n          // we need the equal sign here to make sure, that also transformations\n          // on the same runner which execute before the current transformation are\n          // taken into account\n          .filter((runner) => runner.id <= current.id)\n          .map(getRunnerTransform)\n          .reduce(lmultiply, new Matrix())\n      )\n    },\n\n    _addRunner(runner) {\n      this._transformationRunners.add(runner)\n\n      // Make sure that the runner merge is executed at the very end of\n      // all Animator functions. That is why we use immediate here to execute\n      // the merge right after all frames are run\n      Animator.cancelImmediate(this._frameId)\n      this._frameId = Animator.immediate(mergeTransforms.bind(this))\n    },\n\n    _prepareRunner() {\n      if (this._frameId == null) {\n        this._transformationRunners = new RunnerArray().add(\n          new FakeRunner(new Matrix(this))\n        )\n      }\n    }\n  }\n})\n\n// Will output the elements from array A that are not in the array B\nconst difference = (a, b) => a.filter((x) => !b.includes(x))\n\nextend(Runner, {\n  attr(a, v) {\n    return this.styleAttr('attr', a, v)\n  },\n\n  // Add animatable styles\n  css(s, v) {\n    return this.styleAttr('css', s, v)\n  },\n\n  styleAttr(type, nameOrAttrs, val) {\n    if (typeof nameOrAttrs === 'string') {\n      return this.styleAttr(type, { [nameOrAttrs]: val })\n    }\n\n    let attrs = nameOrAttrs\n    if (this._tryRetarget(type, attrs)) return this\n\n    let morpher = new Morphable(this._stepper).to(attrs)\n    let keys = Object.keys(attrs)\n\n    this.queue(\n      function () {\n        morpher = morpher.from(this.element()[type](keys))\n      },\n      function (pos) {\n        this.element()[type](morpher.at(pos).valueOf())\n        return morpher.done()\n      },\n      function (newToAttrs) {\n        // Check if any new keys were added\n        const newKeys = Object.keys(newToAttrs)\n        const differences = difference(newKeys, keys)\n\n        // If their are new keys, initialize them and add them to morpher\n        if (differences.length) {\n          // Get the values\n          const addedFromAttrs = this.element()[type](differences)\n\n          // Get the already initialized values\n          const oldFromAttrs = new ObjectBag(morpher.from()).valueOf()\n\n          // Merge old and new\n          Object.assign(oldFromAttrs, addedFromAttrs)\n          morpher.from(oldFromAttrs)\n        }\n\n        // Get the object from the morpher\n        const oldToAttrs = new ObjectBag(morpher.to()).valueOf()\n\n        // Merge in new attributes\n        Object.assign(oldToAttrs, newToAttrs)\n\n        // Change morpher target\n        morpher.to(oldToAttrs)\n\n        // Make sure that we save the work we did so we don't need it to do again\n        keys = newKeys\n        attrs = newToAttrs\n      }\n    )\n\n    this._rememberMorpher(type, morpher)\n    return this\n  },\n\n  zoom(level, point) {\n    if (this._tryRetarget('zoom', level, point)) return this\n\n    let morpher = new Morphable(this._stepper).to(new SVGNumber(level))\n\n    this.queue(\n      function () {\n        morpher = morpher.from(this.element().zoom())\n      },\n      function (pos) {\n        this.element().zoom(morpher.at(pos), point)\n        return morpher.done()\n      },\n      function (newLevel, newPoint) {\n        point = newPoint\n        morpher.to(newLevel)\n      }\n    )\n\n    this._rememberMorpher('zoom', morpher)\n    return this\n  },\n\n  /**\n   ** absolute transformations\n   **/\n\n  //\n  // M v -----|-----(D M v = F v)------|----->  T v\n  //\n  // 1. define the final state (T) and decompose it (once)\n  //    t = [tx, ty, the, lam, sy, sx]\n  // 2. on every frame: pull the current state of all previous transforms\n  //    (M - m can change)\n  //   and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\n  // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\n  //   - Note F(0) = M\n  //   - Note F(1) = T\n  // 4. Now you get the delta matrix as a result: D = F * inv(M)\n\n  transform(transforms, relative, affine) {\n    // If we have a declarative function, we should retarget it if possible\n    relative = transforms.relative || relative\n    if (\n      this._isDeclarative &&\n      !relative &&\n      this._tryRetarget('transform', transforms)\n    ) {\n      return this\n    }\n\n    // Parse the parameters\n    const isMatrix = Matrix.isMatrixLike(transforms)\n    affine =\n      transforms.affine != null\n        ? transforms.affine\n        : affine != null\n          ? affine\n          : !isMatrix\n\n    // Create a morpher and set its type\n    const morpher = new Morphable(this._stepper).type(\n      affine ? TransformBag : Matrix\n    )\n\n    let origin\n    let element\n    let current\n    let currentAngle\n    let startTransform\n\n    function setup() {\n      // make sure element and origin is defined\n      element = element || this.element()\n      origin = origin || getOrigin(transforms, element)\n\n      startTransform = new Matrix(relative ? undefined : element)\n\n      // add the runner to the element so it can merge transformations\n      element._addRunner(this)\n\n      // Deactivate all transforms that have run so far if we are absolute\n      if (!relative) {\n        element._clearTransformRunnersBefore(this)\n      }\n    }\n\n    function run(pos) {\n      // clear all other transforms before this in case something is saved\n      // on this runner. We are absolute. We dont need these!\n      if (!relative) this.clearTransform()\n\n      const { x, y } = new Point(origin).transform(\n        element._currentTransform(this)\n      )\n\n      let target = new Matrix({ ...transforms, origin: [x, y] })\n      let start = this._isDeclarative && current ? current : startTransform\n\n      if (affine) {\n        target = target.decompose(x, y)\n        start = start.decompose(x, y)\n\n        // Get the current and target angle as it was set\n        const rTarget = target.rotate\n        const rCurrent = start.rotate\n\n        // Figure out the shortest path to rotate directly\n        const possibilities = [rTarget - 360, rTarget, rTarget + 360]\n        const distances = possibilities.map((a) => Math.abs(a - rCurrent))\n        const shortest = Math.min(...distances)\n        const index = distances.indexOf(shortest)\n        target.rotate = possibilities[index]\n      }\n\n      if (relative) {\n        // we have to be careful here not to overwrite the rotation\n        // with the rotate method of Matrix\n        if (!isMatrix) {\n          target.rotate = transforms.rotate || 0\n        }\n        if (this._isDeclarative && currentAngle) {\n          start.rotate = currentAngle\n        }\n      }\n\n      morpher.from(start)\n      morpher.to(target)\n\n      const affineParameters = morpher.at(pos)\n      currentAngle = affineParameters.rotate\n      current = new Matrix(affineParameters)\n\n      this.addTransform(current)\n      element._addRunner(this)\n      return morpher.done()\n    }\n\n    function retarget(newTransforms) {\n      // only get a new origin if it changed since the last call\n      if (\n        (newTransforms.origin || 'center').toString() !==\n        (transforms.origin || 'center').toString()\n      ) {\n        origin = getOrigin(newTransforms, element)\n      }\n\n      // overwrite the old transformations with the new ones\n      transforms = { ...newTransforms, origin }\n    }\n\n    this.queue(setup, run, retarget, true)\n    this._isDeclarative && this._rememberMorpher('transform', morpher)\n    return this\n  },\n\n  // Animatable x-axis\n  x(x) {\n    return this._queueNumber('x', x)\n  },\n\n  // Animatable y-axis\n  y(y) {\n    return this._queueNumber('y', y)\n  },\n\n  ax(x) {\n    return this._queueNumber('ax', x)\n  },\n\n  ay(y) {\n    return this._queueNumber('ay', y)\n  },\n\n  dx(x = 0) {\n    return this._queueNumberDelta('x', x)\n  },\n\n  dy(y = 0) {\n    return this._queueNumberDelta('y', y)\n  },\n\n  dmove(x, y) {\n    return this.dx(x).dy(y)\n  },\n\n  _queueNumberDelta(method, to) {\n    to = new SVGNumber(to)\n\n    // Try to change the target if we have this method already registered\n    if (this._tryRetarget(method, to)) return this\n\n    // Make a morpher and queue the animation\n    const morpher = new Morphable(this._stepper).to(to)\n    let from = null\n    this.queue(\n      function () {\n        from = this.element()[method]()\n        morpher.from(from)\n        morpher.to(from + to)\n      },\n      function (pos) {\n        this.element()[method](morpher.at(pos))\n        return morpher.done()\n      },\n      function (newTo) {\n        morpher.to(from + new SVGNumber(newTo))\n      }\n    )\n\n    // Register the morpher so that if it is changed again, we can retarget it\n    this._rememberMorpher(method, morpher)\n    return this\n  },\n\n  _queueObject(method, to) {\n    // Try to change the target if we have this method already registered\n    if (this._tryRetarget(method, to)) return this\n\n    // Make a morpher and queue the animation\n    const morpher = new Morphable(this._stepper).to(to)\n    this.queue(\n      function () {\n        morpher.from(this.element()[method]())\n      },\n      function (pos) {\n        this.element()[method](morpher.at(pos))\n        return morpher.done()\n      }\n    )\n\n    // Register the morpher so that if it is changed again, we can retarget it\n    this._rememberMorpher(method, morpher)\n    return this\n  },\n\n  _queueNumber(method, value) {\n    return this._queueObject(method, new SVGNumber(value))\n  },\n\n  // Animatable center x-axis\n  cx(x) {\n    return this._queueNumber('cx', x)\n  },\n\n  // Animatable center y-axis\n  cy(y) {\n    return this._queueNumber('cy', y)\n  },\n\n  // Add animatable move\n  move(x, y) {\n    return this.x(x).y(y)\n  },\n\n  amove(x, y) {\n    return this.ax(x).ay(y)\n  },\n\n  // Add animatable center\n  center(x, y) {\n    return this.cx(x).cy(y)\n  },\n\n  // Add animatable size\n  size(width, height) {\n    // animate bbox based size for all other elements\n    let box\n\n    if (!width || !height) {\n      box = this._element.bbox()\n    }\n\n    if (!width) {\n      width = (box.width / box.height) * height\n    }\n\n    if (!height) {\n      height = (box.height / box.width) * width\n    }\n\n    return this.width(width).height(height)\n  },\n\n  // Add animatable width\n  width(width) {\n    return this._queueNumber('width', width)\n  },\n\n  // Add animatable height\n  height(height) {\n    return this._queueNumber('height', height)\n  },\n\n  // Add animatable plot\n  plot(a, b, c, d) {\n    // Lines can be plotted with 4 arguments\n    if (arguments.length === 4) {\n      return this.plot([a, b, c, d])\n    }\n\n    if (this._tryRetarget('plot', a)) return this\n\n    const morpher = new Morphable(this._stepper)\n      .type(this._element.MorphArray)\n      .to(a)\n\n    this.queue(\n      function () {\n        morpher.from(this._element.array())\n      },\n      function (pos) {\n        this._element.plot(morpher.at(pos))\n        return morpher.done()\n      }\n    )\n\n    this._rememberMorpher('plot', morpher)\n    return this\n  },\n\n  // Add leading method\n  leading(value) {\n    return this._queueNumber('leading', value)\n  },\n\n  // Add animatable viewbox\n  viewbox(x, y, width, height) {\n    return this._queueObject('viewbox', new Box(x, y, width, height))\n  },\n\n  update(o) {\n    if (typeof o !== 'object') {\n      return this.update({\n        offset: arguments[0],\n        color: arguments[1],\n        opacity: arguments[2]\n      })\n    }\n\n    if (o.opacity != null) this.attr('stop-opacity', o.opacity)\n    if (o.color != null) this.attr('stop-color', o.color)\n    if (o.offset != null) this.attr('offset', o.offset)\n\n    return this\n  }\n})\n\nextend(Runner, { rx, ry, from, to })\nregister(Runner, 'Runner')\n", "import {\n  adopt,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { svg, xlink, xmlns } from '../modules/core/namespaces.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Container from './Container.js'\nimport Defs from './Defs.js'\nimport { globals } from '../utils/window.js'\n\nexport default class Svg extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('svg', node), attrs)\n    this.namespace()\n  }\n\n  // Creates and returns defs element\n  defs() {\n    if (!this.isRoot()) return this.root().defs()\n\n    return adopt(this.node.querySelector('defs')) || this.put(new Defs())\n  }\n\n  isRoot() {\n    return (\n      !this.node.parentNode ||\n      (!(this.node.parentNode instanceof globals.window.SVGElement) &&\n        this.node.parentNode.nodeName !== '#document-fragment')\n    )\n  }\n\n  // Add namespaces\n  namespace() {\n    if (!this.isRoot()) return this.root().namespace()\n    return this.attr({ xmlns: svg, version: '1.1' }).attr(\n      'xmlns:xlink',\n      xlink,\n      xmlns\n    )\n  }\n\n  removeNamespace() {\n    return this.attr({ xmlns: null, version: null })\n      .attr('xmlns:xlink', null, xmlns)\n      .attr('xmlns:svgjs', null, xmlns)\n  }\n\n  // Check if this is a root svg\n  // If not, call root() from this element\n  root() {\n    if (this.isRoot()) return this\n    return super.root()\n  }\n}\n\nregisterMethods({\n  Container: {\n    // Create nested svg document\n    nested: wrapWithAttrCheck(function () {\n      return this.put(new Svg())\n    })\n  }\n})\n\nregister(Svg, 'Svg', true)\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Container from './Container.js'\n\nexport default class Symbol extends Container {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('symbol', node), attrs)\n  }\n}\n\nregisterMethods({\n  Container: {\n    symbol: wrapWithAttrCheck(function () {\n      return this.put(new Symbol())\n    })\n  }\n})\n\nregister(Symbol, 'Symbol')\n", "import { globals } from '../../utils/window.js'\n\n// Create plain text node\nexport function plain(text) {\n  // clear if build mode is disabled\n  if (this._build === false) {\n    this.clear()\n  }\n\n  // create text node\n  this.node.appendChild(globals.document.createTextNode(text))\n\n  return this\n}\n\n// Get length of text element\nexport function length() {\n  return this.node.getComputedTextLength()\n}\n\n// Move over x-axis\n// Text is moved by its bounding box\n// text-anchor does NOT matter\nexport function x(x, box = this.bbox()) {\n  if (x == null) {\n    return box.x\n  }\n\n  return this.attr('x', this.attr('x') + x - box.x)\n}\n\n// Move over y-axis\nexport function y(y, box = this.bbox()) {\n  if (y == null) {\n    return box.y\n  }\n\n  return this.attr('y', this.attr('y') + y - box.y)\n}\n\nexport function move(x, y, box = this.bbox()) {\n  return this.x(x, box).y(y, box)\n}\n\n// Move center over x-axis\nexport function cx(x, box = this.bbox()) {\n  if (x == null) {\n    return box.cx\n  }\n\n  return this.attr('x', this.attr('x') + x - box.cx)\n}\n\n// Move center over y-axis\nexport function cy(y, box = this.bbox()) {\n  if (y == null) {\n    return box.cy\n  }\n\n  return this.attr('y', this.attr('y') + y - box.cy)\n}\n\nexport function center(x, y, box = this.bbox()) {\n  return this.cx(x, box).cy(y, box)\n}\n\nexport function ax(x) {\n  return this.attr('x', x)\n}\n\nexport function ay(y) {\n  return this.attr('y', y)\n}\n\nexport function amove(x, y) {\n  return this.ax(x).ay(y)\n}\n\n// Enable / disable build mode\nexport function build(build) {\n  this._build = !!build\n  return this\n}\n", "import {\n  adopt,\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport SVGNumber from '../types/SVGNumber.js'\nimport Shape from './Shape.js'\nimport { globals } from '../utils/window.js'\nimport * as textable from '../modules/core/textable.js'\nimport { isDescriptive, writeDataToDom } from '../utils/utils.js'\n\nexport default class Text extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('text', node), attrs)\n\n    this.dom.leading = this.dom.leading ?? new SVGNumber(1.3) // store leading value for rebuilding\n    this._rebuild = true // enable automatic updating of dy values\n    this._build = false // disable build mode for adding multiple lines\n  }\n\n  // Set / get leading\n  leading(value) {\n    // act as getter\n    if (value == null) {\n      return this.dom.leading\n    }\n\n    // act as setter\n    this.dom.leading = new SVGNumber(value)\n\n    return this.rebuild()\n  }\n\n  // Rebuild appearance type\n  rebuild(rebuild) {\n    // store new rebuild flag if given\n    if (typeof rebuild === 'boolean') {\n      this._rebuild = rebuild\n    }\n\n    // define position of all lines\n    if (this._rebuild) {\n      const self = this\n      let blankLineOffset = 0\n      const leading = this.dom.leading\n\n      this.each(function (i) {\n        if (isDescriptive(this.node)) return\n\n        const fontSize = globals.window\n          .getComputedStyle(this.node)\n          .getPropertyValue('font-size')\n\n        const dy = leading * new SVGNumber(fontSize)\n\n        if (this.dom.newLined) {\n          this.attr('x', self.attr('x'))\n\n          if (this.text() === '\\n') {\n            blankLineOffset += dy\n          } else {\n            this.attr('dy', i ? dy + blankLineOffset : 0)\n            blankLineOffset = 0\n          }\n        }\n      })\n\n      this.fire('rebuild')\n    }\n\n    return this\n  }\n\n  // overwrite method from parent to set data properly\n  setData(o) {\n    this.dom = o\n    this.dom.leading = new SVGNumber(o.leading || 1.3)\n    return this\n  }\n\n  writeDataToDom() {\n    writeDataToDom(this, this.dom, { leading: 1.3 })\n    return this\n  }\n\n  // Set the text content\n  text(text) {\n    // act as getter\n    if (text === undefined) {\n      const children = this.node.childNodes\n      let firstLine = 0\n      text = ''\n\n      for (let i = 0, len = children.length; i < len; ++i) {\n        // skip textPaths - they are no lines\n        if (children[i].nodeName === 'textPath' || isDescriptive(children[i])) {\n          if (i === 0) firstLine = i + 1\n          continue\n        }\n\n        // add newline if its not the first child and newLined is set to true\n        if (\n          i !== firstLine &&\n          children[i].nodeType !== 3 &&\n          adopt(children[i]).dom.newLined === true\n        ) {\n          text += '\\n'\n        }\n\n        // add content of this node\n        text += children[i].textContent\n      }\n\n      return text\n    }\n\n    // remove existing content\n    this.clear().build(true)\n\n    if (typeof text === 'function') {\n      // call block\n      text.call(this, this)\n    } else {\n      // store text and make sure text is not blank\n      text = (text + '').split('\\n')\n\n      // build new lines\n      for (let j = 0, jl = text.length; j < jl; j++) {\n        this.newLine(text[j])\n      }\n    }\n\n    // disable build mode and rebuild lines\n    return this.build(false).rebuild()\n  }\n}\n\nextend(Text, textable)\n\nregisterMethods({\n  Container: {\n    // Create text element\n    text: wrapWithAttrCheck(function (text = '') {\n      return this.put(new Text()).text(text)\n    }),\n\n    // Create plain text element\n    plain: wrapWithAttrCheck(function (text = '') {\n      return this.put(new Text()).plain(text)\n    })\n  }\n})\n\nregister(Text, 'Text')\n", "import {\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { globals } from '../utils/window.js'\nimport { registerMethods } from '../utils/methods.js'\nimport SVGNumber from '../types/SVGNumber.js'\nimport Shape from './Shape.js'\nimport Text from './Text.js'\nimport * as textable from '../modules/core/textable.js'\n\nexport default class Tspan extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('tspan', node), attrs)\n    this._build = false // disable build mode for adding multiple lines\n  }\n\n  // Shortcut dx\n  dx(dx) {\n    return this.attr('dx', dx)\n  }\n\n  // Shortcut dy\n  dy(dy) {\n    return this.attr('dy', dy)\n  }\n\n  // Create new line\n  newLine() {\n    // mark new line\n    this.dom.newLined = true\n\n    // fetch parent\n    const text = this.parent()\n\n    // early return in case we are not in a text element\n    if (!(text instanceof Text)) {\n      return this\n    }\n\n    const i = text.index(this)\n\n    const fontSize = globals.window\n      .getComputedStyle(this.node)\n      .getPropertyValue('font-size')\n    const dy = text.dom.leading * new SVGNumber(fontSize)\n\n    // apply new position\n    return this.dy(i ? dy : 0).attr('x', text.x())\n  }\n\n  // Set text content\n  text(text) {\n    if (text == null)\n      return this.node.textContent + (this.dom.newLined ? '\\n' : '')\n\n    if (typeof text === 'function') {\n      this.clear().build(true)\n      text.call(this, this)\n      this.build(false)\n    } else {\n      this.plain(text)\n    }\n\n    return this\n  }\n}\n\nextend(Tspan, textable)\n\nregisterMethods({\n  Tspan: {\n    tspan: wrapWithAttrCheck(function (text = '') {\n      const tspan = new Tspan()\n\n      // clear if build mode is disabled\n      if (!this._build) {\n        this.clear()\n      }\n\n      // add new tspan\n      return this.put(tspan).text(text)\n    })\n  },\n  Text: {\n    newLine: function (text = '') {\n      return this.tspan(text).newLine()\n    }\n  }\n})\n\nregister(Tspan, 'Tspan')\n", "import { cx, cy, height, width, x, y } from '../modules/core/circled.js'\nimport {\n  extend,\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck\n} from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport SVGNumber from '../types/SVGNumber.js'\nimport Shape from './Shape.js'\n\nexport default class Circle extends Shape {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('circle', node), attrs)\n  }\n\n  radius(r) {\n    return this.attr('r', r)\n  }\n\n  // Radius x value\n  rx(rx) {\n    return this.attr('r', rx)\n  }\n\n  // Alias radius x value\n  ry(ry) {\n    return this.rx(ry)\n  }\n\n  size(size) {\n    return this.radius(new SVGNumber(size).divide(2))\n  }\n}\n\nextend(Circle, { x, y, cx, cy, width, height })\n\nregisterMethods({\n  Container: {\n    // Create circle element\n    circle: wrapWithAttrCheck(function (size = 0) {\n      return this.put(new Circle()).size(size).move(0, 0)\n    })\n  }\n})\n\nregister(Circle, 'Circle')\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Container from './Container.js'\nimport baseFind from '../modules/core/selector.js'\n\nexport default class ClipPath extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('clipPath', node), attrs)\n  }\n\n  // Unclip all clipped elements and remove itself\n  remove() {\n    // unclip all targets\n    this.targets().forEach(function (el) {\n      el.unclip()\n    })\n\n    // remove clipPath from parent\n    return super.remove()\n  }\n\n  targets() {\n    return baseFind('svg [clip-path*=' + this.id() + ']')\n  }\n}\n\nregisterMethods({\n  Container: {\n    // Create clipping element\n    clip: wrapWithAttrCheck(function () {\n      return this.defs().put(new ClipPath())\n    })\n  },\n  Element: {\n    // Distribute clipPath to svg element\n    clipper() {\n      return this.reference('clip-path')\n    },\n\n    clipWith(element) {\n      // use given clip or create a new one\n      const clipper =\n        element instanceof ClipPath\n          ? element\n          : this.parent().clip().add(element)\n\n      // apply mask\n      return this.attr('clip-path', 'url(#' + clipper.id() + ')')\n    },\n\n    // Unclip element\n    unclip() {\n      return this.attr('clip-path', null)\n    }\n  }\n})\n\nregister(ClipPath, 'ClipPath')\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Element from './Element.js'\n\nexport default class ForeignObject extends Element {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('foreignObject', node), attrs)\n  }\n}\n\nregisterMethods({\n  Container: {\n    foreignObject: wrapWithAttrCheck(function (width, height) {\n      return this.put(new ForeignObject()).size(width, height)\n    })\n  }\n})\n\nregister(ForeignObject, 'ForeignObject')\n", "import Matrix from '../../types/Matrix.js'\nimport Point from '../../types/Point.js'\nimport Box from '../../types/Box.js'\nimport { proportionalSize } from '../../utils/utils.js'\nimport { getWindow } from '../../utils/window.js'\n\nexport function dmove(dx, dy) {\n  this.children().forEach((child) => {\n    let bbox\n\n    // We have to wrap this for elements that dont have a bbox\n    // e.g. title and other descriptive elements\n    try {\n      // Get the childs bbox\n      // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1905039\n      // Because bbox for nested svgs returns the contents bbox in the coordinate space of the svg itself (weird!), we cant use bbox for svgs\n      // Therefore we have to use getBoundingClientRect. But THAT is broken (as explained in the bug).\n      // Funnily enough the broken behavior would work for us but that breaks it in chrome\n      // So we have to replicate the broken behavior of FF by just reading the attributes of the svg itself\n      bbox =\n        child.node instanceof getWindow().SVGSVGElement\n          ? new Box(child.attr(['x', 'y', 'width', 'height']))\n          : child.bbox()\n    } catch (e) {\n      return\n    }\n\n    // Get childs matrix\n    const m = new Matrix(child)\n    // Translate childs matrix by amount and\n    // transform it back into parents space\n    const matrix = m.translate(dx, dy).transform(m.inverse())\n    // Calculate new x and y from old box\n    const p = new Point(bbox.x, bbox.y).transform(matrix)\n    // Move element\n    child.move(p.x, p.y)\n  })\n\n  return this\n}\n\nexport function dx(dx) {\n  return this.dmove(dx, 0)\n}\n\nexport function dy(dy) {\n  return this.dmove(0, dy)\n}\n\nexport function height(height, box = this.bbox()) {\n  if (height == null) return box.height\n  return this.size(box.width, height, box)\n}\n\nexport function move(x = 0, y = 0, box = this.bbox()) {\n  const dx = x - box.x\n  const dy = y - box.y\n\n  return this.dmove(dx, dy)\n}\n\nexport function size(width, height, box = this.bbox()) {\n  const p = proportionalSize(this, width, height, box)\n  const scaleX = p.width / box.width\n  const scaleY = p.height / box.height\n\n  this.children().forEach((child) => {\n    const o = new Point(box).transform(new Matrix(child).inverse())\n    child.scale(scaleX, scaleY, o.x, o.y)\n  })\n\n  return this\n}\n\nexport function width(width, box = this.bbox()) {\n  if (width == null) return box.width\n  return this.size(width, box.height, box)\n}\n\nexport function x(x, box = this.bbox()) {\n  if (x == null) return box.x\n  return this.move(x, box.y, box)\n}\n\nexport function y(y, box = this.bbox()) {\n  if (y == null) return box.y\n  return this.move(box.x, y, box)\n}\n", "import {\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck,\n  extend\n} from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Container from './Container.js'\nimport * as containerGeometry from '../modules/core/containerGeometry.js'\n\nexport default class G extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('g', node), attrs)\n  }\n}\n\nextend(G, containerGeometry)\n\nregisterMethods({\n  Container: {\n    // Create a group element\n    group: wrapWithAttrCheck(function () {\n      return this.put(new G())\n    })\n  }\n})\n\nregister(G, 'G')\n", "import {\n  nodeOrNew,\n  register,\n  wrapWithAttrCheck,\n  extend\n} from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport { xlink } from '../modules/core/namespaces.js'\nimport Container from './Container.js'\nimport * as containerGeometry from '../modules/core/containerGeometry.js'\n\nexport default class A extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('a', node), attrs)\n  }\n\n  // Link target attribute\n  target(target) {\n    return this.attr('target', target)\n  }\n\n  // Link url\n  to(url) {\n    return this.attr('href', url, xlink)\n  }\n}\n\nextend(A, containerGeometry)\n\nregisterMethods({\n  Container: {\n    // Create a hyperlink element\n    link: wrapWithAttrCheck(function (url) {\n      return this.put(new A()).to(url)\n    })\n  },\n  Element: {\n    unlink() {\n      const link = this.linker()\n\n      if (!link) return this\n\n      const parent = link.parent()\n\n      if (!parent) {\n        return this.remove()\n      }\n\n      const index = parent.index(link)\n      parent.add(this, index)\n\n      link.remove()\n      return this\n    },\n    linkTo(url) {\n      // reuse old link if possible\n      let link = this.linker()\n\n      if (!link) {\n        link = new A()\n        this.wrap(link)\n      }\n\n      if (typeof url === 'function') {\n        url.call(link, link)\n      } else {\n        link.to(url)\n      }\n\n      return this\n    },\n    linker() {\n      const link = this.parent()\n      if (link && link.node.nodeName.toLowerCase() === 'a') {\n        return link\n      }\n\n      return null\n    }\n  }\n})\n\nregister(A, 'A')\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Container from './Container.js'\nimport baseFind from '../modules/core/selector.js'\n\nexport default class Mask extends Container {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('mask', node), attrs)\n  }\n\n  // Unmask all masked elements and remove itself\n  remove() {\n    // unmask all targets\n    this.targets().forEach(function (el) {\n      el.unmask()\n    })\n\n    // remove mask from parent\n    return super.remove()\n  }\n\n  targets() {\n    return baseFind('svg [mask*=' + this.id() + ']')\n  }\n}\n\nregisterMethods({\n  Container: {\n    mask: wrapWithAttrCheck(function () {\n      return this.defs().put(new Mask())\n    })\n  },\n  Element: {\n    // Distribute mask to svg element\n    masker() {\n      return this.reference('mask')\n    },\n\n    maskWith(element) {\n      // use given mask or create a new one\n      const masker =\n        element instanceof Mask ? element : this.parent().mask().add(element)\n\n      // apply mask\n      return this.attr('mask', 'url(#' + masker.id() + ')')\n    },\n\n    // Unmask element\n    unmask() {\n      return this.attr('mask', null)\n    }\n  }\n})\n\nregister(Mask, 'Mask')\n", "import { nodeOrNew, register } from '../utils/adopter.js'\nimport Element from './Element.js'\nimport SVGNumber from '../types/SVGNumber.js'\nimport { registerMethods } from '../utils/methods.js'\n\nexport default class Stop extends Element {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('stop', node), attrs)\n  }\n\n  // add color stops\n  update(o) {\n    if (typeof o === 'number' || o instanceof SVGNumber) {\n      o = {\n        offset: arguments[0],\n        color: arguments[1],\n        opacity: arguments[2]\n      }\n    }\n\n    // set attributes\n    if (o.opacity != null) this.attr('stop-opacity', o.opacity)\n    if (o.color != null) this.attr('stop-color', o.color)\n    if (o.offset != null) this.attr('offset', new SVGNumber(o.offset))\n\n    return this\n  }\n}\n\nregisterMethods({\n  Gradient: {\n    // Add a color stop\n    stop: function (offset, color, opacity) {\n      return this.put(new Stop()).update(offset, color, opacity)\n    }\n  }\n})\n\nregister(Stop, 'Stop')\n", "import { nodeOrNew, register } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport { unCamelCase } from '../utils/utils.js'\nimport Element from './Element.js'\n\nfunction cssRule(selector, rule) {\n  if (!selector) return ''\n  if (!rule) return selector\n\n  let ret = selector + '{'\n\n  for (const i in rule) {\n    ret += unCamelCase(i) + ':' + rule[i] + ';'\n  }\n\n  ret += '}'\n\n  return ret\n}\n\nexport default class Style extends Element {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('style', node), attrs)\n  }\n\n  addText(w = '') {\n    this.node.textContent += w\n    return this\n  }\n\n  font(name, src, params = {}) {\n    return this.rule('@font-face', {\n      fontFamily: name,\n      src: src,\n      ...params\n    })\n  }\n\n  rule(selector, obj) {\n    return this.addText(cssRule(selector, obj))\n  }\n}\n\nregisterMethods('Dom', {\n  style(selector, obj) {\n    return this.put(new Style()).rule(selector, obj)\n  },\n  fontface(name, src, params) {\n    return this.put(new Style()).font(name, src, params)\n  }\n})\n\nregister(Style, 'Style')\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport { xlink } from '../modules/core/namespaces.js'\nimport Path from './Path.js'\nimport PathArray from '../types/PathArray.js'\nimport Text from './Text.js'\nimport baseFind from '../modules/core/selector.js'\n\nexport default class TextPath extends Text {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('textPath', node), attrs)\n  }\n\n  // return the array of the path track element\n  array() {\n    const track = this.track()\n\n    return track ? track.array() : null\n  }\n\n  // Plot path if any\n  plot(d) {\n    const track = this.track()\n    let pathArray = null\n\n    if (track) {\n      pathArray = track.plot(d)\n    }\n\n    return d == null ? pathArray : this\n  }\n\n  // Get the path element\n  track() {\n    return this.reference('href')\n  }\n}\n\nregisterMethods({\n  Container: {\n    textPath: wrapWithAttrCheck(function (text, path) {\n      // Convert text to instance if needed\n      if (!(text instanceof Text)) {\n        text = this.text(text)\n      }\n\n      return text.path(path)\n    })\n  },\n  Text: {\n    // Create path for text to run on\n    path: wrapWithAttrCheck(function (track, importNodes = true) {\n      const textPath = new TextPath()\n\n      // if track is a path, reuse it\n      if (!(track instanceof Path)) {\n        // create path element\n        track = this.defs().path(track)\n      }\n\n      // link textPath to path and add content\n      textPath.attr('href', '#' + track, xlink)\n\n      // Transplant all nodes from text to textPath\n      let node\n      if (importNodes) {\n        while ((node = this.node.firstChild)) {\n          textPath.node.appendChild(node)\n        }\n      }\n\n      // add textPath element as child node and return textPath\n      return this.put(textPath)\n    }),\n\n    // Get the textPath children\n    textPath() {\n      return this.findOne('textPath')\n    }\n  },\n  Path: {\n    // creates a textPath from this path\n    text: wrapWithAttrCheck(function (text) {\n      // Convert text to instance if needed\n      if (!(text instanceof Text)) {\n        text = new Text().addTo(this.parent()).text(text)\n      }\n\n      // Create textPath from text and path and return\n      return text.path(this)\n    }),\n\n    targets() {\n      return baseFind('svg textPath').filter((node) => {\n        return (node.attr('href') || '').includes(this.id())\n      })\n\n      // Does not work in IE11. Use when IE support is dropped\n      // return baseFind('svg textPath[*|href*=' + this.id() + ']')\n    }\n  }\n})\n\nTextPath.prototype.MorphArray = PathArray\nregister(TextPath, 'TextPath')\n", "import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport { xlink } from '../modules/core/namespaces.js'\nimport Shape from './Shape.js'\n\nexport default class Use extends Shape {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('use', node), attrs)\n  }\n\n  // Use element as a reference\n  use(element, file) {\n    // Set lined element\n    return this.attr('href', (file || '') + '#' + element, xlink)\n  }\n}\n\nregisterMethods({\n  Container: {\n    // Create a use element\n    use: wrapWithAttrCheck(function (element, file) {\n      return this.put(new Use()).use(element, file)\n    })\n  }\n})\n\nregister(Use, 'Use')\n", "/* Optional Modules */\nimport './modules/optional/arrange.js'\nimport './modules/optional/class.js'\nimport './modules/optional/css.js'\nimport './modules/optional/data.js'\nimport './modules/optional/memory.js'\nimport './modules/optional/sugar.js'\nimport './modules/optional/transform.js'\n\nimport { extend, makeInstance } from './utils/adopter.js'\nimport { getMethodNames, getMethodsFor } from './utils/methods.js'\nimport Box from './types/Box.js'\nimport Color from './types/Color.js'\nimport Container from './elements/Container.js'\nimport Defs from './elements/Defs.js'\nimport Dom from './elements/Dom.js'\nimport Element from './elements/Element.js'\nimport Ellipse from './elements/Ellipse.js'\nimport EventTarget from './types/EventTarget.js'\nimport Fragment from './elements/Fragment.js'\nimport Gradient from './elements/Gradient.js'\nimport Image from './elements/Image.js'\nimport Line from './elements/Line.js'\nimport List from './types/List.js'\nimport Marker from './elements/Marker.js'\nimport Matrix from './types/Matrix.js'\nimport Morphable, {\n  NonMorphable,\n  ObjectBag,\n  TransformBag,\n  makeMorphable,\n  registerMorphableType\n} from './animation/Morphable.js'\nimport Path from './elements/Path.js'\nimport PathArray from './types/PathArray.js'\nimport Pattern from './elements/Pattern.js'\nimport PointArray from './types/PointArray.js'\nimport Point from './types/Point.js'\nimport Polygon from './elements/Polygon.js'\nimport Polyline from './elements/Polyline.js'\nimport Rect from './elements/Rect.js'\nimport Runner from './animation/Runner.js'\nimport SVGArray from './types/SVGArray.js'\nimport SVGNumber from './types/SVGNumber.js'\nimport Shape from './elements/Shape.js'\nimport Svg from './elements/Svg.js'\nimport Symbol from './elements/Symbol.js'\nimport Text from './elements/Text.js'\nimport Tspan from './elements/Tspan.js'\nimport * as defaults from './modules/core/defaults.js'\nimport * as utils from './utils/utils.js'\nimport * as namespaces from './modules/core/namespaces.js'\nimport * as regex from './modules/core/regex.js'\n\nexport {\n  Morphable,\n  registerMorphableType,\n  makeMorphable,\n  TransformBag,\n  ObjectBag,\n  NonMorphable\n}\n\nexport { defaults, utils, namespaces, regex }\nexport const SVG = makeInstance\nexport { default as parser } from './modules/core/parser.js'\nexport { default as find } from './modules/core/selector.js'\nexport * from './modules/core/event.js'\nexport * from './utils/adopter.js'\nexport {\n  getWindow,\n  registerWindow,\n  restoreWindow,\n  saveWindow,\n  withWindow\n} from './utils/window.js'\n\n/* Animation Modules */\nexport { default as Animator } from './animation/Animator.js'\nexport {\n  Controller,\n  Ease,\n  PID,\n  Spring,\n  easing\n} from './animation/Controller.js'\nexport { default as Queue } from './animation/Queue.js'\nexport { default as Runner } from './animation/Runner.js'\nexport { default as Timeline } from './animation/Timeline.js'\n\n/* Types */\nexport { default as Array } from './types/SVGArray.js'\nexport { default as Box } from './types/Box.js'\nexport { default as Color } from './types/Color.js'\nexport { default as EventTarget } from './types/EventTarget.js'\nexport { default as Matrix } from './types/Matrix.js'\nexport { default as Number } from './types/SVGNumber.js'\nexport { default as PathArray } from './types/PathArray.js'\nexport { default as Point } from './types/Point.js'\nexport { default as PointArray } from './types/PointArray.js'\nexport { default as List } from './types/List.js'\n\n/* Elements */\nexport { default as Circle } from './elements/Circle.js'\nexport { default as ClipPath } from './elements/ClipPath.js'\nexport { default as Container } from './elements/Container.js'\nexport { default as Defs } from './elements/Defs.js'\nexport { default as Dom } from './elements/Dom.js'\nexport { default as Element } from './elements/Element.js'\nexport { default as Ellipse } from './elements/Ellipse.js'\nexport { default as ForeignObject } from './elements/ForeignObject.js'\nexport { default as Fragment } from './elements/Fragment.js'\nexport { default as Gradient } from './elements/Gradient.js'\nexport { default as G } from './elements/G.js'\nexport { default as A } from './elements/A.js'\nexport { default as Image } from './elements/Image.js'\nexport { default as Line } from './elements/Line.js'\nexport { default as Marker } from './elements/Marker.js'\nexport { default as Mask } from './elements/Mask.js'\nexport { default as Path } from './elements/Path.js'\nexport { default as Pattern } from './elements/Pattern.js'\nexport { default as Polygon } from './elements/Polygon.js'\nexport { default as Polyline } from './elements/Polyline.js'\nexport { default as Rect } from './elements/Rect.js'\nexport { default as Shape } from './elements/Shape.js'\nexport { default as Stop } from './elements/Stop.js'\nexport { default as Style } from './elements/Style.js'\nexport { default as Svg } from './elements/Svg.js'\nexport { default as Symbol } from './elements/Symbol.js'\nexport { default as Text } from './elements/Text.js'\nexport { default as TextPath } from './elements/TextPath.js'\nexport { default as Tspan } from './elements/Tspan.js'\nexport { default as Use } from './elements/Use.js'\n\nextend([Svg, Symbol, Image, Pattern, Marker], getMethodsFor('viewbox'))\n\nextend([Line, Polyline, Polygon, Path], getMethodsFor('marker'))\n\nextend(Text, getMethodsFor('Text'))\nextend(Path, getMethodsFor('Path'))\n\nextend(Defs, getMethodsFor('Defs'))\n\nextend([Text, Tspan], getMethodsFor('Tspan'))\n\nextend([Rect, Ellipse, Gradient, Runner], getMethodsFor('radius'))\n\nextend(EventTarget, getMethodsFor('EventTarget'))\nextend(Dom, getMethodsFor('Dom'))\nextend(Element, getMethodsFor('Element'))\nextend(Shape, getMethodsFor('Shape'))\nextend([Container, Fragment], getMethodsFor('Container'))\nextend(Gradient, getMethodsFor('Gradient'))\n\nextend(Runner, getMethodsFor('Runner'))\n\nList.extend(getMethodNames())\n\nregisterMorphableType([\n  SVGNumber,\n  Color,\n  Box,\n  Matrix,\n  SVGArray,\n  PointArray,\n  PathArray,\n  Point\n])\n\nmakeMorphable()\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"input\"]\n\n  connect() {\n    this.initializeSelect2()\n  }\n\n  disconnect() {\n    // Cleanup Select2 instance\n    if ($(this.inputTarget).data('select2')) {\n      $(this.inputTarget).select2('destroy')\n    }\n  }\n\n  initializeSelect2() {\n    $(this.inputTarget).select2({\n      ajax: {\n        url: '/admin/companies/search',\n        dataType: 'json',\n        delay: 250,\n        data: function (params) {\n          return {\n            q: params.term, // Search term\n            page: params.page || 1\n          }\n        },\n        processResults: function (data) {\n          return {\n            results: data.results\n          }\n        },\n        cache: true\n      },\n      placeholder: 'Firma suchen oder neu anlegen...',\n      allowClear: true,\n      minimumInputLength: 0,\n      tags: true, // Allow creating new entries\n      createTag: function (params) {\n        const term = $.trim(params.term)\n\n        if (term === '') {\n          return null\n        }\n\n        return {\n          id: term,\n          text: term,\n          newTag: true // Add a flag for new tags\n        }\n      },\n      templateResult: function (data) {\n        if (data.loading) {\n          return 'Suche...'\n        }\n\n        // Highlight new tags\n        if (data.newTag) {\n          return $('<span class=\"badge bg-success\">' + data.text + ' (neu anlegen)</span>')\n        }\n\n        return data.text\n      },\n      templateSelection: function (data) {\n        // Display selected value\n        return data.text || data.id\n      }\n    })\n  }\n}\n\n", "import ApplicationController from './application_controller'\n\n\nexport default class extends ApplicationController {\n  // static targets = [ \"learnunit\" ]\n  static values = { id: String } // the consumables id\n\n  connect() {\n    // console.log(`connected to ${this.identifier}`)\n    super.connect()\n  }\n  \n  ///\n  // stimulates the claim method of ConsumableReflex so the given consumable is claimed by current user\n  ///\n  claim(event) {\n    const button = event.currentTarget\n    \n    // Read container context from #journey_show_page data-attributes\n    const journeyPage = document.getElementById('journey_show_page')\n    if (journeyPage) {\n      button.dataset.nextUnitId = journeyPage.dataset.nextUnitId || ''\n      button.dataset.containerUrl = journeyPage.dataset.containerUrl || ''\n      button.dataset.fromContainer = journeyPage.dataset.fromContainer || ''\n      button.dataset.containerName = journeyPage.dataset.containerName || ''\n    }\n    \n    this.stimulate('Consumable#claim', button);\n  }\n}", "import ApplicationController from './application_controller'\n\n\nexport default class extends ApplicationController {\n\n  createConsumable(event) {\n    let target = $(event.currentTarget);\n    let learn_unit_id = parseInt(target.data(\"learn-unit-id\")),\n      consumable_group_id = parseInt(target.data(\"consumable-group-id\")),\n      consumable_id = parseInt(target.data(\"consumable-id\")),\n      type = target.data(\"type\");\n    this.stimulate(\n      \"ConsumableGroupReflex#create_consumable\",\n      learn_unit_id,\n      consumable_group_id,\n      consumable_id,\n      type\n    );\n  }\n\n  createConsumableSuccess() {\n    $(\"#create_consumable .modal\").modal(\"show\");\n  }\n\n  reload(event) {\n    let target = $(event.currentTarget);\n    let consumable_group_id = parseInt(target.data(\"consumable-group-id\"));\n    this.stimulate(\"ConsumableGroupReflex#reload\", consumable_group_id);\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n\n  connect() {\n    console.log(\"date display controller connected\")\n    const self = this\n    this.display_dates($(this.element));\n    $(this.element).on(\"dates:changed\", function () {\n      // console.log(\"dates have changed\")\n      self.display_dates($(self.element));\n    })\n  }\n\n  display_dates($area) {\n    $area.find('.datetimestring').each(function() {\n      return $(this).text(datetime.toLocal($(this).attr(\"data-value\")));\n    });\n    \n    $area.find('.datestring').each(function () {\n      // console.log(\"found datestring\")\n      return $(this).text(datetime.toLocalDate($(this).attr(\"data-value\")));\n    });\n    \n    $area.find('.timestring').each(function() {\n      return $(this).text(datetime.toLocalTime($(this).attr(\"data-value\")));\n    });\n\n  }\n}\n", "\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n\n  connect() {\n    Chartkick.configure({language: I18n.locale})\n    console.log(`we go with locale ${I18n.locale} for Chartkick`)\n  }\n\n  changed(event) {\n    event.stopPropagation();\n    event.preventDefault();\n    let $target = $(event.target);\n    console.log(`target: `, $target)\n    let currentSelection = $target.attr('id');\n    console.log(\"current selection: \", currentSelection);\n    var yearSelection, currentQuarterSelection, monthSelection, quarters;\n    yearSelection = $('#year_select').val()\n    currentQuarterSelection = $('#quarter_select').val();\n    monthSelection = $('#month_select').val();\n\n    let xLabel;\n    switch(currentSelection) {\n      case \"quarter_select\":\n        xLabel = I18n.t(\"dict.week\");\n        break;\n      case \"month_select\":\n        xLabel = \"\";\n        break;\n    \n      default:\n        xLabel = I18n.t(\"dict.week\");\n        break;\n    }\n\n\n    if (currentSelection === 'quarter_select') {\n      monthSelection = \"-1\";\n      $('#month_select').val(monthSelection);      // $('#month_select').trigger();\n    } else {\n      if (currentSelection === 'month_select') {\n        if (currentQuarterSelection !== '-1') {\n          quarters = {\n            1: '1',\n            2: '1',\n            3: '1',\n            4: '2',\n            5: '2',\n            6: '2',\n            7: '3',\n            8: '3',\n            9: '3',\n            10: '4',\n            11: '4',\n            12: '4'\n          };\n          currentQuarterSelection = quarters[monthSelection];\n          $('#quarter_select').val(currentQuarterSelection);\n        }\n      }\n    }\n    \n    // $('#filter_form').submit();\n    let dataSource, split, path, params;\n    const queryString = require('query-string');\n    Chartkick.eachChart( function(chart) {\n      console.log(\"working on chart: \", chart );\n      console.log(\"options: \", chart.options );\n      dataSource = chart.dataSource;\n      // console.log(\"dataSource is: \", dataSource);\n      split = dataSource.split(\"?\", 2);\n      path = split[0];\n      params = queryString.parse(split[1]);\n      // console.log(\"parsed: \", params);\n      params.year = yearSelection;\n      params.month = monthSelection;\n      params.quarter = currentQuarterSelection;\n      console.log(`changed params on chart '${$(chart.element).attr(\"id\")}': ${queryString.stringify(params)}`);\n      chart.dataSource = `${path}?${queryString.stringify(params)}`;\n      let options = chart.getOptions();\n      chart.setOptions({...options, ...{\"xtitle\": xLabel}});\n      chart.refreshData();\n    })\n\n  }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"toggle\", \"panel\"]\n  \n  connect() {\n    this.updateToggleState()\n  }\n  \n  toggle(event) {\n    const enabled = event.target.checked\n    \n    fetch('/toggle_debug_panel', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]').content\n      },\n      body: JSON.stringify({ enabled: enabled })\n    })\n    .then(response => response.json())\n    .then(data => {\n      if (data.enabled !== undefined) {\n        window.location.reload()\n      }\n    })\n    .catch(error => {\n      console.error('Debug toggle error:', error)\n      event.target.checked = !enabled\n    })\n  }\n  \n  close() {\n    // Find the toggle and uncheck it\n    if (this.hasToggleTarget) {\n      this.toggleTarget.checked = false\n      // Trigger the toggle event\n      this.toggle({ target: this.toggleTarget })\n    } else {\n      // Fallback: find toggle in topbar\n      const toggle = document.querySelector('#debugToggle')\n      if (toggle) {\n        toggle.checked = false\n        this.toggle({ target: toggle })\n      }\n    }\n  }\n  \n  updateToggleState() {\n    // Set toggle based on session state, not panel existence\n    // The panel might not exist if there are no debug entries yet\n    if (this.hasToggleTarget) {\n      // Check if toggle is already checked (from server-side rendering)\n      // Don't override it - trust the server state\n      return\n    }\n  }\n}\n", "import ApplicationController from './application_controller'\n// import Ajax from '../packs/ajax.js';\nimport { getMetaValue } from \"../packs/global_functions\";\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect()\n    this.pendingDeleteDefId = null\n    \n    // Listen for delete confirmation event\n    document.addEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n  }\n\n  disconnect() {\n    super.disconnect()\n    document.removeEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n  }\n\n  /**\n   * Show delete modal and store definition ID\n   */\n  showDeleteModal(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    const button = event.currentTarget\n    this.pendingDeleteDefId = button.dataset.defId\n    \n    console.log('[Definition] Show modal for definition:', this.pendingDeleteDefId)\n    \n    // Open modal\n    const modal = document.getElementById('delete_definition_modal')\n    if (modal) {\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    }\n  }\n\n  /**\n   * Handle delete-confirmed event from modal\n   */\n  handleDeleteConfirmed(event) {\n    console.log('[Definition] Received delete-confirmed event, pending ID:', this.pendingDeleteDefId)\n    \n    if (!this.pendingDeleteDefId) {\n      // This instance doesn't have a pending delete, ignore\n      return\n    }\n    \n    this.executeDelete(this.pendingDeleteDefId)\n    this.pendingDeleteDefId = null\n  }\n\n  /**\n   * Execute the actual delete via StimulusReflex\n   */\n  executeDelete(defId) {\n    this.startLoading()\n    const defCard = document.getElementById(`definition_card_${defId}`)\n    \n    this.stimulate('DefinitionReflex#remove_definition', defId).then(() => {\n      if (defCard) {\n        defCard.remove()\n      }\n      this.stopLoading()\n    })\n  }\n\n  ///\n  // creates a new definition\n  ///\n  new(event) {\n    let $target = $(event.currentTarget);\n    let modal = $target.closest(\".modal\");\n    let selectedCard = modal.find(\".selected\");\n    let type = selectedCard.attr(\"data-type\");\n    let subtype = selectedCard.attr(\"data-subtype\");\n    let group_id = $target.attr(\"data-group-id\");\n    this.stimulate(\"DefinitionReflex#new\", type, subtype, group_id).then(() => {\n      this.replaceAuthenticityTokenInForm();\n      modal.modal(\"hide\");\n      this.stopLoading();\n    });\n  }\n\n  // removes given Definition from UI and stimulates corresponding Reflex to delete teh Definitionfrom db also\n  removeDefinition(event) {\n    event.preventDefault();\n    this.startLoading();\n    let $target = $(event.currentTarget);\n    let defId = $target.data('def-id');\n    let defCard = $(\"#definition_card_\" + defId);\n    // console.log(\"groupId: \", groupId);\n    // console.log(\"groupCard: \", groupCard);\n    this.stimulate('DefinitionReflex#remove_definition', defId).then(() => {\n      defCard.remove();\n      this.stopLoading();\n    });\n  }\n\n  ///\n  // replaces the csrf token in form with the right one in header\n  ///\n  replaceAuthenticityTokenInForm() {\n    let $form = $(\"form#group_definitions_form\");\n    let $authTokenField = $(\"input[name=authenticity_token]\", $form).first();\n    $authTokenField.val(getMetaValue(\"csrf-token\"));\n    console.log(\"!!! authenticity token replaced\")\n  }\n\n  // async newSuccess() {\n  //   $(\"#new_definition_modal\").modal(\"hide\");\n  //   let $newTarget = $('.definition-item.selected'),\n  //   prefixId = $newTarget.data('prefix-id'),\n  //   id = $newTarget.data('id'),\n  //   groupDefId = $newTarget.data('group-id');\n\n  //   if(id && groupDefId) {\n  //     let formElement = document.createElement('div');\n  //     formElement.id = `${prefixId}${id}`;\n  //     $(formElement).addClass('form-element');\n\n  //     let groupForm = $('#group_definitions_form');\n  //     let objectName = groupForm.find(`#group_object_name_${groupDefId}`).data('object-name');\n\n  //     $(formElement).appendTo(groupForm);\n  //     let form = await new Ajax('/definition_form').doAjax(\"GET\", { \"id\": id, \"object_name\": objectName });\n  //     $(form).appendTo(formElement);\n  //   }\n  // }\n}\n", "import ApplicationController from './application_controller'\n\n/**\n * DeleteController - Generic Stimulus controller for delete actions with confirmation\n * \n * @description\n * Provides a reusable confirmation dialog for delete actions that integrates seamlessly\n * with Rails UJS. Shows a loading state only when the user confirms the deletion.\n * \n * @features\n * - Custom confirmation messages via data attributes\n * - Loading state management (via ApplicationController#startLoading)\n * - Seamless Rails UJS integration - no custom HTTP handling needed\n * - Event flow control: blocks event only on cancellation\n * \n * @usage\n * Add to any delete link or button:\n * \n * ```haml\n * = link_to resource_path(resource), method: :delete, \n *   class: 'btn btn-danger', \n *   data: { \n *     controller: 'delete', \n *     action: 'click->delete#handleClick',\n *     message: 'Are you sure you want to delete this item?' \n *   } do\n *   Delete\n * ```\n * \n * @data_attributes\n * - `data-message` (required): The confirmation message to display\n * - `data-controller=\"delete\"` (required): Activates this controller\n * - `data-action=\"click->delete#handleClick\"` (required): Binds click event\n * \n * @event_flow\n * 1. User clicks element\n * 2. handleClick() intercepts click event\n * 3. Shows native browser confirm() dialog with data-message\n * 4. If user cancels: preventDefault() + stopPropagation() \u2192 no further action\n * 5. If user confirms: startLoading() \u2192 event continues to Rails UJS \u2192 normal DELETE\n * \n * @examples\n * \n * Simple delete button:\n * ```haml\n * %button.btn.btn-danger{ \n *   data: { \n *     controller: 'delete',\n *     action: 'click->delete#handleClick',\n *     message: 'Delete this item?',\n *     url: item_path(item),\n *     method: 'delete'\n *   } \n * } Delete\n * ```\n * \n * Delete link with custom message:\n * ```haml\n * = link_to user_path(user), method: :delete,\n *   data: { \n *     controller: 'delete',\n *     action: 'click->delete#handleClick', \n *     message: t('confirmations.delete_user', name: user.name)\n *   } do\n *   %i.fas.fa-trash\n * ```\n * \n * @notes\n * - Uses native browser confirm() dialog for consistency\n * - No custom fetch() calls - relies on Rails UJS for HTTP handling\n * - Loading state automatically handled via ApplicationController\n * - Works with any element that can trigger click events\n * - CSRF tokens handled automatically by Rails UJS\n * \n * @dependencies\n * - ApplicationController (for startLoading() method)\n * - Rails UJS (for DELETE request handling)\n * - Native browser confirm() API\n */\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect()\n    this.useReflex = false;\n  }\n    \n  /**\n   * Handles click events with confirmation dialog\n   * \n   * @param {Event} event - The click event\n   * @returns {boolean} false if user cancels, otherwise allows event to continue\n   */\n  handleClick(event) {\n    const confirmMessage = this.element.dataset.message\n    \n    if (confirmMessage && !confirm(confirmMessage)) {\n      // User cancelled - prevent any further event processing\n      event.preventDefault()\n      event.stopPropagation()\n      return false\n    }\n    \n    // User confirmed - show loading state and let Rails UJS handle the DELETE\n    this.startLoading()\n    // No preventDefault() - allow Rails UJS to process the delete request\n  }\n}\n", "import ApplicationController from './application_controller'\nimport Dropzone from 'dropzone'\n\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n\n    this.allowedFileTypes = $(this.element).data('allowed-types')\n    this.uploadUrl = $(this.element).data('upload-url')\n\n    const dropzone = new Dropzone(this.element, {\n      url: this.uploadUrl, uploadMultiple: true, \n      clickable: false, acceptedFiles: this.allowedFileTypes,\n      parallelUploads: 100,\n      disablePreviews: true,\n    })\n\n    dropzone.on('addedfile', (file) => {\n      this.startLoading()      \n    })\n\n    dropzone.on('error', (file, message) => {\n      this.stopLoading()      \n    })\n  }\n}", "var objectExtend = extend;\n\n/*\n  var obj = {a: 3, b: 5};\n  extend(obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n  obj; // {a: 4, b: 5, c: 8}\n\n  var obj = {a: 3, b: 5};\n  extend({}, obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n  obj; // {a: 3, b: 5}\n\n  var arr = [1, 2, 3];\n  var obj = {a: 3, b: 5};\n  extend(obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n  arr.push(4);\n  obj; // {a: 3, b: 5, c: [1, 2, 3, 4]}\n\n  var arr = [1, 2, 3];\n  var obj = {a: 3, b: 5};\n  extend(true, obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n  arr.push(4);\n  obj; // {a: 3, b: 5, c: [1, 2, 3]}\n\n  extend({a: 4, b: 5}); // {a: 4, b: 5}\n  extend({a: 4, b: 5}, 3); {a: 4, b: 5}\n  extend({a: 4, b: 5}, true); {a: 4, b: 5}\n  extend('hello', {a: 4, b: 5}); // throws\n  extend(3, {a: 4, b: 5}); // throws\n*/\n\nfunction extend(/* [deep], obj1, obj2, [objn] */) {\n  var args = [].slice.call(arguments);\n  var deep = false;\n  if (typeof args[0] == 'boolean') {\n    deep = args.shift();\n  }\n  var result = args[0];\n  if (isUnextendable(result)) {\n    throw new Error('extendee must be an object');\n  }\n  var extenders = args.slice(1);\n  var len = extenders.length;\n  for (var i = 0; i < len; i++) {\n    var extender = extenders[i];\n    for (var key in extender) {\n      if (Object.prototype.hasOwnProperty.call(extender, key)) {\n        var value = extender[key];\n        if (deep && isCloneable(value)) {\n          var base = Array.isArray(value) ? [] : {};\n          result[key] = extend(\n            true,\n            Object.prototype.hasOwnProperty.call(result, key) && !isUnextendable(result[key])\n              ? result[key]\n              : base,\n            value\n          );\n        } else {\n          result[key] = value;\n        }\n      }\n    }\n  }\n  return result;\n}\n\nfunction isCloneable(obj) {\n  return Array.isArray(obj) || {}.toString.call(obj) == '[object Object]';\n}\n\nfunction isUnextendable(val) {\n  return !val || (typeof val != 'object' && typeof val != 'function');\n}\n\nexport {objectExtend as default};\n", "import extend from \"just-extend\";\nimport Emitter from \"./emitter\";\nimport defaultOptions from \"./options\";\n\nexport default class Dropzone extends Emitter {\n  static initClass() {\n    // Exposing the emitter class, mainly for tests\n    this.prototype.Emitter = Emitter;\n\n    /*\n     This is a list of all available events you can register on a dropzone object.\n\n     You can register an event handler like this:\n\n     dropzone.on(\"dragEnter\", function() { });\n\n     */\n    this.prototype.events = [\n      \"drop\",\n      \"dragstart\",\n      \"dragend\",\n      \"dragenter\",\n      \"dragover\",\n      \"dragleave\",\n      \"addedfile\",\n      \"addedfiles\",\n      \"removedfile\",\n      \"thumbnail\",\n      \"error\",\n      \"errormultiple\",\n      \"processing\",\n      \"processingmultiple\",\n      \"uploadprogress\",\n      \"totaluploadprogress\",\n      \"sending\",\n      \"sendingmultiple\",\n      \"success\",\n      \"successmultiple\",\n      \"canceled\",\n      \"canceledmultiple\",\n      \"complete\",\n      \"completemultiple\",\n      \"reset\",\n      \"maxfilesexceeded\",\n      \"maxfilesreached\",\n      \"queuecomplete\",\n    ];\n\n    this.prototype._thumbnailQueue = [];\n    this.prototype._processingThumbnail = false;\n  }\n\n  constructor(el, options) {\n    super();\n    let fallback, left;\n    this.element = el;\n\n    this.clickableElements = [];\n    this.listeners = [];\n    this.files = []; // All files\n\n    if (typeof this.element === \"string\") {\n      this.element = document.querySelector(this.element);\n    }\n\n    // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n    if (!this.element || this.element.nodeType == null) {\n      throw new Error(\"Invalid dropzone element.\");\n    }\n\n    if (this.element.dropzone) {\n      throw new Error(\"Dropzone already attached.\");\n    }\n\n    // Now add this dropzone to the instances.\n    Dropzone.instances.push(this);\n\n    // Put the dropzone inside the element itself.\n    this.element.dropzone = this;\n\n    let elementOptions =\n      (left = Dropzone.optionsForElement(this.element)) != null ? left : {};\n\n    this.options = extend(\n      true,\n      {},\n      defaultOptions,\n      elementOptions,\n      options != null ? options : {}\n    );\n\n    this.options.previewTemplate = this.options.previewTemplate.replace(\n      /\\n*/g,\n      \"\"\n    );\n\n    // If the browser failed, just call the fallback and leave\n    if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n      return this.options.fallback.call(this);\n    }\n\n    // @options.url = @element.getAttribute \"action\" unless @options.url?\n    if (this.options.url == null) {\n      this.options.url = this.element.getAttribute(\"action\");\n    }\n\n    if (!this.options.url) {\n      throw new Error(\"No URL provided.\");\n    }\n\n    if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n      throw new Error(\n        \"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\"\n      );\n    }\n\n    if (this.options.uploadMultiple && this.options.chunking) {\n      throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n    }\n\n    if (this.options.binaryBody && this.options.uploadMultiple) {\n      throw new Error(\"You cannot set both: binaryBody and uploadMultiple.\");\n    }\n\n    // Backwards compatibility\n    if (this.options.acceptedMimeTypes) {\n      this.options.acceptedFiles = this.options.acceptedMimeTypes;\n      delete this.options.acceptedMimeTypes;\n    }\n\n    // Backwards compatibility\n    if (this.options.renameFilename != null) {\n      this.options.renameFile = (file) =>\n        this.options.renameFilename.call(this, file.name, file);\n    }\n\n    if (typeof this.options.method === \"string\") {\n      this.options.method = this.options.method.toUpperCase();\n    }\n\n    if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n      // Remove the fallback\n      fallback.parentNode.removeChild(fallback);\n    }\n\n    // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n    if (this.options.previewsContainer !== false) {\n      if (this.options.previewsContainer) {\n        this.previewsContainer = Dropzone.getElement(\n          this.options.previewsContainer,\n          \"previewsContainer\"\n        );\n      } else {\n        this.previewsContainer = this.element;\n      }\n    }\n\n    if (this.options.clickable) {\n      if (this.options.clickable === true) {\n        this.clickableElements = [this.element];\n      } else {\n        this.clickableElements = Dropzone.getElements(\n          this.options.clickable,\n          \"clickable\"\n        );\n      }\n    }\n\n    this.init();\n  }\n\n  // Returns all files that have been accepted\n  getAcceptedFiles() {\n    return this.files.filter((file) => file.accepted).map((file) => file);\n  }\n\n  // Returns all files that have been rejected\n  // Not sure when that's going to be useful, but added for completeness.\n  getRejectedFiles() {\n    return this.files.filter((file) => !file.accepted).map((file) => file);\n  }\n\n  getFilesWithStatus(status) {\n    return this.files\n      .filter((file) => file.status === status)\n      .map((file) => file);\n  }\n\n  // Returns all files that are in the queue\n  getQueuedFiles() {\n    return this.getFilesWithStatus(Dropzone.QUEUED);\n  }\n\n  getUploadingFiles() {\n    return this.getFilesWithStatus(Dropzone.UPLOADING);\n  }\n\n  getAddedFiles() {\n    return this.getFilesWithStatus(Dropzone.ADDED);\n  }\n\n  // Files that are either queued or uploading\n  getActiveFiles() {\n    return this.files\n      .filter(\n        (file) =>\n          file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED\n      )\n      .map((file) => file);\n  }\n\n  // The function that gets called when Dropzone is initialized. You\n  // can (and should) setup event listeners inside this function.\n  init() {\n    // In case it isn't set already\n    if (this.element.tagName === \"form\") {\n      this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n    }\n\n    if (\n      this.element.classList.contains(\"dropzone\") &&\n      !this.element.querySelector(\".dz-message\")\n    ) {\n      this.element.appendChild(\n        Dropzone.createElement(\n          `<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">${this.options.dictDefaultMessage}</button></div>`\n        )\n      );\n    }\n\n    if (this.clickableElements.length) {\n      let setupHiddenFileInput = () => {\n        if (this.hiddenFileInput) {\n          this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        }\n        this.hiddenFileInput = document.createElement(\"input\");\n        this.hiddenFileInput.setAttribute(\"type\", \"file\");\n        if (this.options.maxFiles === null || this.options.maxFiles > 1) {\n          this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n        }\n        this.hiddenFileInput.className = \"dz-hidden-input\";\n\n        if (this.options.acceptedFiles !== null) {\n          this.hiddenFileInput.setAttribute(\n            \"accept\",\n            this.options.acceptedFiles\n          );\n        }\n        if (this.options.capture !== null) {\n          this.hiddenFileInput.setAttribute(\"capture\", this.options.capture);\n        }\n\n        // Making sure that no one can \"tab\" into this field.\n        this.hiddenFileInput.setAttribute(\"tabindex\", \"-1\");\n\n        // Not setting `display=\"none\"` because some browsers don't accept clicks\n        // on elements that aren't displayed.\n        this.hiddenFileInput.style.visibility = \"hidden\";\n        this.hiddenFileInput.style.position = \"absolute\";\n        this.hiddenFileInput.style.top = \"0\";\n        this.hiddenFileInput.style.left = \"0\";\n        this.hiddenFileInput.style.height = \"0\";\n        this.hiddenFileInput.style.width = \"0\";\n        Dropzone.getElement(\n          this.options.hiddenInputContainer,\n          \"hiddenInputContainer\"\n        ).appendChild(this.hiddenFileInput);\n        this.hiddenFileInput.addEventListener(\"change\", () => {\n          let { files } = this.hiddenFileInput;\n          if (files.length) {\n            for (let file of files) {\n              this.addFile(file);\n            }\n          }\n          this.emit(\"addedfiles\", files);\n          setupHiddenFileInput();\n        });\n      };\n      setupHiddenFileInput();\n    }\n\n    this.URL = window.URL !== null ? window.URL : window.webkitURL;\n\n    // Setup all event listeners on the Dropzone object itself.\n    // They're not in @setupEventListeners() because they shouldn't be removed\n    // again when the dropzone gets disabled.\n    for (let eventName of this.events) {\n      this.on(eventName, this.options[eventName]);\n    }\n\n    this.on(\"uploadprogress\", () => this.updateTotalUploadProgress());\n\n    this.on(\"removedfile\", () => this.updateTotalUploadProgress());\n\n    this.on(\"canceled\", (file) => this.emit(\"complete\", file));\n\n    // Emit a `queuecomplete` event if all files finished uploading.\n    this.on(\"complete\", (file) => {\n      if (\n        this.getAddedFiles().length === 0 &&\n        this.getUploadingFiles().length === 0 &&\n        this.getQueuedFiles().length === 0\n      ) {\n        // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n        return setTimeout(() => this.emit(\"queuecomplete\"), 0);\n      }\n    });\n\n    const containsFiles = function (e) {\n      if (e.dataTransfer.types) {\n        // Because e.dataTransfer.types is an Object in\n        // IE, we need to iterate like this instead of\n        // using e.dataTransfer.types.some()\n        for (var i = 0; i < e.dataTransfer.types.length; i++) {\n          if (e.dataTransfer.types[i] === \"Files\") return true;\n        }\n      }\n      return false;\n    };\n\n    let noPropagation = function (e) {\n      // If there are no files, we don't want to stop\n      // propagation so we don't interfere with other\n      // drag and drop behaviour.\n      if (!containsFiles(e)) return;\n      e.stopPropagation();\n      if (e.preventDefault) {\n        return e.preventDefault();\n      } else {\n        return (e.returnValue = false);\n      }\n    };\n\n    // Create the listeners\n    this.listeners = [\n      {\n        element: this.element,\n        events: {\n          dragstart: (e) => {\n            return this.emit(\"dragstart\", e);\n          },\n          dragenter: (e) => {\n            noPropagation(e);\n            return this.emit(\"dragenter\", e);\n          },\n          dragover: (e) => {\n            // Makes it possible to drag files from chrome's download bar\n            // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n            // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n            let efct;\n            try {\n              efct = e.dataTransfer.effectAllowed;\n            } catch (error) {}\n            e.dataTransfer.dropEffect =\n              \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n\n            noPropagation(e);\n            return this.emit(\"dragover\", e);\n          },\n          dragleave: (e) => {\n            return this.emit(\"dragleave\", e);\n          },\n          drop: (e) => {\n            noPropagation(e);\n            return this.drop(e);\n          },\n          dragend: (e) => {\n            return this.emit(\"dragend\", e);\n          },\n        },\n\n        // This is disabled right now, because the browsers don't implement it properly.\n        // \"paste\": (e) =>\n        //   noPropagation e\n        //   @paste e\n      },\n    ];\n\n    this.clickableElements.forEach((clickableElement) => {\n      return this.listeners.push({\n        element: clickableElement,\n        events: {\n          click: (evt) => {\n            // Only the actual dropzone or the message element should trigger file selection\n            if (\n              clickableElement !== this.element ||\n              evt.target === this.element ||\n              Dropzone.elementInside(\n                evt.target,\n                this.element.querySelector(\".dz-message\")\n              )\n            ) {\n              this.hiddenFileInput.click(); // Forward the click\n            }\n            return true;\n          },\n        },\n      });\n    });\n\n    this.enable();\n\n    return this.options.init.call(this);\n  }\n\n  // Not fully tested yet\n  destroy() {\n    this.disable();\n    this.removeAllFiles(true);\n    if (\n      this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined\n    ) {\n      this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n      this.hiddenFileInput = null;\n    }\n    delete this.element.dropzone;\n    return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n  }\n\n  updateTotalUploadProgress() {\n    let totalUploadProgress;\n    let totalBytesSent = 0;\n    let totalBytes = 0;\n\n    let activeFiles = this.getActiveFiles();\n\n    if (activeFiles.length) {\n      for (let file of this.getActiveFiles()) {\n        totalBytesSent += file.upload.bytesSent;\n        totalBytes += file.upload.total;\n      }\n      totalUploadProgress = (100 * totalBytesSent) / totalBytes;\n    } else {\n      totalUploadProgress = 100;\n    }\n\n    return this.emit(\n      \"totaluploadprogress\",\n      totalUploadProgress,\n      totalBytes,\n      totalBytesSent\n    );\n  }\n\n  // @options.paramName can be a function taking one parameter rather than a string.\n  // A parameter name for a file is obtained simply by calling this with an index number.\n  _getParamName(n) {\n    if (typeof this.options.paramName === \"function\") {\n      return this.options.paramName(n);\n    } else {\n      return `${this.options.paramName}${\n        this.options.uploadMultiple ? `[${n}]` : \"\"\n      }`;\n    }\n  }\n\n  // If @options.renameFile is a function,\n  // the function will be used to rename the file.name before appending it to the formData\n  _renameFile(file) {\n    if (typeof this.options.renameFile !== \"function\") {\n      return file.name;\n    }\n    return this.options.renameFile(file);\n  }\n\n  // Returns a form that can be used as fallback if the browser does not support DragnDrop\n  //\n  // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n  // This code has to pass in IE7 :(\n  getFallbackForm() {\n    let existingFallback, form;\n    if ((existingFallback = this.getExistingFallback())) {\n      return existingFallback;\n    }\n\n    let fieldsString = '<div class=\"dz-fallback\">';\n    if (this.options.dictFallbackText) {\n      fieldsString += `<p>${this.options.dictFallbackText}</p>`;\n    }\n    fieldsString += `<input type=\"file\" name=\"${this._getParamName(0)}\" ${\n      this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined\n    } /><input type=\"submit\" value=\"Upload!\"></div>`;\n\n    let fields = Dropzone.createElement(fieldsString);\n    if (this.element.tagName !== \"FORM\") {\n      form = Dropzone.createElement(\n        `<form action=\"${this.options.url}\" enctype=\"multipart/form-data\" method=\"${this.options.method}\"></form>`\n      );\n      form.appendChild(fields);\n    } else {\n      // Make sure that the enctype and method attributes are set properly\n      this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      this.element.setAttribute(\"method\", this.options.method);\n    }\n    return form != null ? form : fields;\n  }\n\n  // Returns the fallback elements if they exist already\n  //\n  // This code has to pass in IE7 :(\n  getExistingFallback() {\n    let getFallback = function (elements) {\n      for (let el of elements) {\n        if (/(^| )fallback($| )/.test(el.className)) {\n          return el;\n        }\n      }\n    };\n\n    for (let tagName of [\"div\", \"form\"]) {\n      var fallback;\n      if (\n        (fallback = getFallback(this.element.getElementsByTagName(tagName)))\n      ) {\n        return fallback;\n      }\n    }\n  }\n\n  // Activates all listeners stored in @listeners\n  setupEventListeners() {\n    return this.listeners.map((elementListeners) =>\n      (() => {\n        let result = [];\n        for (let event in elementListeners.events) {\n          let listener = elementListeners.events[event];\n          result.push(\n            elementListeners.element.addEventListener(event, listener, false)\n          );\n        }\n        return result;\n      })()\n    );\n  }\n\n  // Deactivates all listeners stored in @listeners\n  removeEventListeners() {\n    return this.listeners.map((elementListeners) =>\n      (() => {\n        let result = [];\n        for (let event in elementListeners.events) {\n          let listener = elementListeners.events[event];\n          result.push(\n            elementListeners.element.removeEventListener(event, listener, false)\n          );\n        }\n        return result;\n      })()\n    );\n  }\n\n  // Removes all event listeners and cancels all files in the queue or being processed.\n  disable() {\n    this.clickableElements.forEach((element) =>\n      element.classList.remove(\"dz-clickable\")\n    );\n    this.removeEventListeners();\n    this.disabled = true;\n\n    return this.files.map((file) => this.cancelUpload(file));\n  }\n\n  enable() {\n    delete this.disabled;\n    this.clickableElements.forEach((element) =>\n      element.classList.add(\"dz-clickable\")\n    );\n    return this.setupEventListeners();\n  }\n\n  // Returns a nicely formatted filesize\n  filesize(size) {\n    let selectedSize = 0;\n    let selectedUnit = \"b\";\n\n    if (size > 0) {\n      let units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n      for (let i = 0; i < units.length; i++) {\n        let unit = units[i];\n        let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n        if (size >= cutoff) {\n          selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n          selectedUnit = unit;\n          break;\n        }\n      }\n\n      selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n    }\n\n    return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n  }\n\n  // Adds or removes the `dz-max-files-reached` class from the form.\n  _updateMaxFilesReachedClass() {\n    if (\n      this.options.maxFiles != null &&\n      this.getAcceptedFiles().length >= this.options.maxFiles\n    ) {\n      if (this.getAcceptedFiles().length === this.options.maxFiles) {\n        this.emit(\"maxfilesreached\", this.files);\n      }\n      return this.element.classList.add(\"dz-max-files-reached\");\n    } else {\n      return this.element.classList.remove(\"dz-max-files-reached\");\n    }\n  }\n\n  drop(e) {\n    if (!e.dataTransfer) {\n      return;\n    }\n    this.emit(\"drop\", e);\n\n    // Convert the FileList to an Array\n    // This is necessary for IE11\n    let files = [];\n    for (let i = 0; i < e.dataTransfer.files.length; i++) {\n      files[i] = e.dataTransfer.files[i];\n    }\n\n    // Even if it's a folder, files.length will contain the folders.\n    if (files.length) {\n      let { items } = e.dataTransfer;\n      if (items && items.length && items[0].webkitGetAsEntry != null) {\n        // The browser supports dropping of folders, so handle items instead of files\n        this._addFilesFromItems(items);\n      } else {\n        this.handleFiles(files);\n      }\n    }\n\n    this.emit(\"addedfiles\", files);\n  }\n\n  paste(e) {\n    if (\n      __guard__(e != null ? e.clipboardData : undefined, (x) => x.items) == null\n    ) {\n      return;\n    }\n\n    this.emit(\"paste\", e);\n    let { items } = e.clipboardData;\n\n    if (items.length) {\n      return this._addFilesFromItems(items);\n    }\n  }\n\n  handleFiles(files) {\n    for (let file of files) {\n      this.addFile(file);\n    }\n  }\n\n  // When a folder is dropped (or files are pasted), items must be handled\n  // instead of files.\n  _addFilesFromItems(items) {\n    return (() => {\n      let result = [];\n      for (let item of items) {\n        var entry;\n        if (\n          item.webkitGetAsEntry != null &&\n          (entry = item.webkitGetAsEntry())\n        ) {\n          if (entry.isFile) {\n            result.push(this.addFile(item.getAsFile()));\n          } else if (entry.isDirectory) {\n            // Append all files from that directory to files\n            result.push(this._addFilesFromDirectory(entry, entry.name));\n          } else {\n            result.push(undefined);\n          }\n        } else if (item.getAsFile != null) {\n          if (item.kind == null || item.kind === \"file\") {\n            result.push(this.addFile(item.getAsFile()));\n          } else {\n            result.push(undefined);\n          }\n        } else {\n          result.push(undefined);\n        }\n      }\n      return result;\n    })();\n  }\n\n  // Goes through the directory, and adds each file it finds recursively\n  _addFilesFromDirectory(directory, path) {\n    let dirReader = directory.createReader();\n\n    let errorHandler = (error) =>\n      __guardMethod__(console, \"log\", (o) => o.log(error));\n\n    var readEntries = () => {\n      return dirReader.readEntries((entries) => {\n        if (entries.length > 0) {\n          for (let entry of entries) {\n            if (entry.isFile) {\n              entry.file((file) => {\n                if (\n                  this.options.ignoreHiddenFiles &&\n                  file.name.substring(0, 1) === \".\"\n                ) {\n                  return;\n                }\n                file.fullPath = `${path}/${file.name}`;\n                return this.addFile(file);\n              });\n            } else if (entry.isDirectory) {\n              this._addFilesFromDirectory(entry, `${path}/${entry.name}`);\n            }\n          }\n\n          // Recursively call readEntries() again, since browser only handle\n          // the first 100 entries.\n          // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n          readEntries();\n        }\n        return null;\n      }, errorHandler);\n    };\n\n    return readEntries();\n  }\n\n  // If `done()` is called without argument the file is accepted\n  // If you call it with an error message, the file is rejected\n  // (This allows for asynchronous validation)\n  //\n  // This function checks the filesize, and if the file.type passes the\n  // `acceptedFiles` check.\n  accept(file, done) {\n    if (\n      this.options.maxFilesize &&\n      file.size > this.options.maxFilesize * 1024 * 1024\n    ) {\n      done(\n        this.options.dictFileTooBig\n          .replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100)\n          .replace(\"{{maxFilesize}}\", this.options.maxFilesize)\n      );\n    } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n      done(this.options.dictInvalidFileType);\n    } else if (\n      this.options.maxFiles != null &&\n      this.getAcceptedFiles().length >= this.options.maxFiles\n    ) {\n      done(\n        this.options.dictMaxFilesExceeded.replace(\n          \"{{maxFiles}}\",\n          this.options.maxFiles\n        )\n      );\n      this.emit(\"maxfilesexceeded\", file);\n    } else {\n      this.options.accept.call(this, file, done);\n    }\n  }\n\n  addFile(file) {\n    file.upload = {\n      uuid: Dropzone.uuidv4(),\n      progress: 0,\n      // Setting the total upload size to file.size for the beginning\n      // It's actual different than the size to be transmitted.\n      total: file.size,\n      bytesSent: 0,\n      filename: this._renameFile(file),\n      // Not setting chunking information here, because the acutal data — and\n      // thus the chunks — might change if `options.transformFile` is set\n      // and does something to the data.\n    };\n    this.files.push(file);\n\n    file.status = Dropzone.ADDED;\n\n    this.emit(\"addedfile\", file);\n\n    this._enqueueThumbnail(file);\n\n    this.accept(file, (error) => {\n      if (error) {\n        file.accepted = false;\n        this._errorProcessing([file], error); // Will set the file.status\n      } else {\n        file.accepted = true;\n        if (this.options.autoQueue) {\n          this.enqueueFile(file);\n        } // Will set .accepted = true\n      }\n      this._updateMaxFilesReachedClass();\n    });\n  }\n\n  // Wrapper for enqueueFile\n  enqueueFiles(files) {\n    for (let file of files) {\n      this.enqueueFile(file);\n    }\n    return null;\n  }\n\n  enqueueFile(file) {\n    if (file.status === Dropzone.ADDED && file.accepted === true) {\n      file.status = Dropzone.QUEUED;\n      if (this.options.autoProcessQueue) {\n        return setTimeout(() => this.processQueue(), 0); // Deferring the call\n      }\n    } else {\n      throw new Error(\n        \"This file can't be queued because it has already been processed or was rejected.\"\n      );\n    }\n  }\n\n  _enqueueThumbnail(file) {\n    if (\n      this.options.createImageThumbnails &&\n      file.type.match(/image.*/) &&\n      file.size <= this.options.maxThumbnailFilesize * 1024 * 1024\n    ) {\n      this._thumbnailQueue.push(file);\n      return setTimeout(() => this._processThumbnailQueue(), 0); // Deferring the call\n    }\n  }\n\n  _processThumbnailQueue() {\n    if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n      return;\n    }\n\n    this._processingThumbnail = true;\n    let file = this._thumbnailQueue.shift();\n    return this.createThumbnail(\n      file,\n      this.options.thumbnailWidth,\n      this.options.thumbnailHeight,\n      this.options.thumbnailMethod,\n      true,\n      (dataUrl) => {\n        this.emit(\"thumbnail\", file, dataUrl);\n        this._processingThumbnail = false;\n        return this._processThumbnailQueue();\n      }\n    );\n  }\n\n  // Can be called by the user to remove a file\n  removeFile(file) {\n    if (file.status === Dropzone.UPLOADING) {\n      this.cancelUpload(file);\n    }\n    this.files = without(this.files, file);\n\n    this.emit(\"removedfile\", file);\n    if (this.files.length === 0) {\n      return this.emit(\"reset\");\n    }\n  }\n\n  // Removes all files that aren't currently processed from the list\n  removeAllFiles(cancelIfNecessary) {\n    // Create a copy of files since removeFile() changes the @files array.\n    if (cancelIfNecessary == null) {\n      cancelIfNecessary = false;\n    }\n    for (let file of this.files.slice()) {\n      if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n        this.removeFile(file);\n      }\n    }\n    return null;\n  }\n\n  // Resizes an image before it gets sent to the server. This function is the default behavior of\n  // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n  // the resized blob.\n  resizeImage(file, width, height, resizeMethod, callback) {\n    return this.createThumbnail(\n      file,\n      width,\n      height,\n      resizeMethod,\n      true,\n      (dataUrl, canvas) => {\n        if (canvas == null) {\n          // The image has not been resized\n          return callback(file);\n        } else {\n          let { resizeMimeType } = this.options;\n          if (resizeMimeType == null) {\n            resizeMimeType = file.type;\n          }\n          let resizedDataURL = canvas.toDataURL(\n            resizeMimeType,\n            this.options.resizeQuality\n          );\n          if (\n            resizeMimeType === \"image/jpeg\" ||\n            resizeMimeType === \"image/jpg\"\n          ) {\n            // Now add the original EXIF information\n            resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n          }\n          return callback(Dropzone.dataURItoBlob(resizedDataURL));\n        }\n      }\n    );\n  }\n\n  createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n    let fileReader = new FileReader();\n\n    fileReader.onload = () => {\n      file.dataURL = fileReader.result;\n\n      // Don't bother creating a thumbnail for SVG images since they're vector\n      if (file.type === \"image/svg+xml\") {\n        if (callback != null) {\n          callback(fileReader.result);\n        }\n        return;\n      }\n\n      this.createThumbnailFromUrl(\n        file,\n        width,\n        height,\n        resizeMethod,\n        fixOrientation,\n        callback\n      );\n    };\n\n    fileReader.readAsDataURL(file);\n  }\n\n  // `mockFile` needs to have these attributes:\n  //\n  //     { name: 'name', size: 12345, imageUrl: '' }\n  //\n  // `callback` will be invoked when the image has been downloaded and displayed.\n  // `crossOrigin` will be added to the `img` tag when accessing the file.\n  displayExistingFile(\n    mockFile,\n    imageUrl,\n    callback,\n    crossOrigin,\n    resizeThumbnail = true\n  ) {\n    this.emit(\"addedfile\", mockFile);\n    this.emit(\"complete\", mockFile);\n\n    if (!resizeThumbnail) {\n      this.emit(\"thumbnail\", mockFile, imageUrl);\n      if (callback) callback();\n    } else {\n      let onDone = (thumbnail) => {\n        this.emit(\"thumbnail\", mockFile, thumbnail);\n        if (callback) callback();\n      };\n      mockFile.dataURL = imageUrl;\n\n      this.createThumbnailFromUrl(\n        mockFile,\n        this.options.thumbnailWidth,\n        this.options.thumbnailHeight,\n        this.options.thumbnailMethod,\n        this.options.fixOrientation,\n        onDone,\n        crossOrigin\n      );\n    }\n  }\n\n  createThumbnailFromUrl(\n    file,\n    width,\n    height,\n    resizeMethod,\n    fixOrientation,\n    callback,\n    crossOrigin\n  ) {\n    // Not using `new Image` here because of a bug in latest Chrome versions.\n    // See https://github.com/enyo/dropzone/pull/226\n    let img = document.createElement(\"img\");\n\n    if (crossOrigin) {\n      img.crossOrigin = crossOrigin;\n    }\n\n    // fixOrientation is not needed anymore with browsers handling imageOrientation\n    fixOrientation =\n      getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\"\n        ? false\n        : fixOrientation;\n\n    img.onload = () => {\n      let loadExif = (callback) => callback(1);\n      if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n        loadExif = (callback) =>\n          EXIF.getData(img, function () {\n            return callback(EXIF.getTag(this, \"Orientation\"));\n          });\n      }\n\n      return loadExif((orientation) => {\n        file.width = img.width;\n        file.height = img.height;\n\n        let resizeInfo = this.options.resize.call(\n          this,\n          file,\n          width,\n          height,\n          resizeMethod\n        );\n\n        let canvas = document.createElement(\"canvas\");\n        let ctx = canvas.getContext(\"2d\");\n\n        canvas.width = resizeInfo.trgWidth;\n        canvas.height = resizeInfo.trgHeight;\n\n        if (orientation > 4) {\n          canvas.width = resizeInfo.trgHeight;\n          canvas.height = resizeInfo.trgWidth;\n        }\n\n        switch (orientation) {\n          case 2:\n            // horizontal flip\n            ctx.translate(canvas.width, 0);\n            ctx.scale(-1, 1);\n            break;\n          case 3:\n            // 180° rotate left\n            ctx.translate(canvas.width, canvas.height);\n            ctx.rotate(Math.PI);\n            break;\n          case 4:\n            // vertical flip\n            ctx.translate(0, canvas.height);\n            ctx.scale(1, -1);\n            break;\n          case 5:\n            // vertical flip + 90 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.scale(1, -1);\n            break;\n          case 6:\n            // 90° rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.translate(0, -canvas.width);\n            break;\n          case 7:\n            // horizontal flip + 90 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.translate(canvas.height, -canvas.width);\n            ctx.scale(-1, 1);\n            break;\n          case 8:\n            // 90° rotate left\n            ctx.rotate(-0.5 * Math.PI);\n            ctx.translate(-canvas.height, 0);\n            break;\n        }\n\n        // This is a bugfix for iOS' scaling bug.\n        drawImageIOSFix(\n          ctx,\n          img,\n          resizeInfo.srcX != null ? resizeInfo.srcX : 0,\n          resizeInfo.srcY != null ? resizeInfo.srcY : 0,\n          resizeInfo.srcWidth,\n          resizeInfo.srcHeight,\n          resizeInfo.trgX != null ? resizeInfo.trgX : 0,\n          resizeInfo.trgY != null ? resizeInfo.trgY : 0,\n          resizeInfo.trgWidth,\n          resizeInfo.trgHeight\n        );\n\n        let thumbnail = canvas.toDataURL(\"image/png\");\n\n        if (callback != null) {\n          return callback(thumbnail, canvas);\n        }\n      });\n    };\n\n    if (callback != null) {\n      img.onerror = callback;\n    }\n\n    return (img.src = file.dataURL);\n  }\n\n  // Goes through the queue and processes files if there aren't too many already.\n  processQueue() {\n    let { parallelUploads } = this.options;\n    let processingLength = this.getUploadingFiles().length;\n    let i = processingLength;\n\n    // There are already at least as many files uploading than should be\n    if (processingLength >= parallelUploads) {\n      return;\n    }\n\n    let queuedFiles = this.getQueuedFiles();\n\n    if (!(queuedFiles.length > 0)) {\n      return;\n    }\n\n    if (this.options.uploadMultiple) {\n      // The files should be uploaded in one request\n      return this.processFiles(\n        queuedFiles.slice(0, parallelUploads - processingLength)\n      );\n    } else {\n      while (i < parallelUploads) {\n        if (!queuedFiles.length) {\n          return;\n        } // Nothing left to process\n        this.processFile(queuedFiles.shift());\n        i++;\n      }\n    }\n  }\n\n  // Wrapper for `processFiles`\n  processFile(file) {\n    return this.processFiles([file]);\n  }\n\n  // Loads the file, then calls finishedLoading()\n  processFiles(files) {\n    for (let file of files) {\n      file.processing = true; // Backwards compatibility\n      file.status = Dropzone.UPLOADING;\n\n      this.emit(\"processing\", file);\n    }\n\n    if (this.options.uploadMultiple) {\n      this.emit(\"processingmultiple\", files);\n    }\n\n    return this.uploadFiles(files);\n  }\n\n  _getFilesWithXhr(xhr) {\n    let files;\n    return (files = this.files\n      .filter((file) => file.xhr === xhr)\n      .map((file) => file));\n  }\n\n  // Cancels the file upload and sets the status to CANCELED\n  // **if** the file is actually being uploaded.\n  // If it's still in the queue, the file is being removed from it and the status\n  // set to CANCELED.\n  cancelUpload(file) {\n    if (file.status === Dropzone.UPLOADING) {\n      let groupedFiles = this._getFilesWithXhr(file.xhr);\n      for (let groupedFile of groupedFiles) {\n        groupedFile.status = Dropzone.CANCELED;\n      }\n      if (typeof file.xhr !== \"undefined\") {\n        file.xhr.abort();\n      }\n      for (let groupedFile of groupedFiles) {\n        this.emit(\"canceled\", groupedFile);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"canceledmultiple\", groupedFiles);\n      }\n    } else if (\n      file.status === Dropzone.ADDED ||\n      file.status === Dropzone.QUEUED\n    ) {\n      file.status = Dropzone.CANCELED;\n      this.emit(\"canceled\", file);\n      if (this.options.uploadMultiple) {\n        this.emit(\"canceledmultiple\", [file]);\n      }\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  resolveOption(option, ...args) {\n    if (typeof option === \"function\") {\n      return option.apply(this, args);\n    }\n    return option;\n  }\n\n  uploadFile(file) {\n    return this.uploadFiles([file]);\n  }\n\n  uploadFiles(files) {\n    this._transformFiles(files, (transformedFiles) => {\n      if (this.options.chunking) {\n        // Chunking is not allowed to be used with `uploadMultiple` so we know\n        // that there is only __one__file.\n        let transformedFile = transformedFiles[0];\n        files[0].upload.chunked =\n          this.options.chunking &&\n          (this.options.forceChunking ||\n            transformedFile.size > this.options.chunkSize);\n        files[0].upload.totalChunkCount = Math.ceil(\n          transformedFile.size / this.options.chunkSize\n        );\n      }\n\n      if (files[0].upload.chunked) {\n        // This file should be sent in chunks!\n\n        // If the chunking option is set, we **know** that there can only be **one** file, since\n        // uploadMultiple is not allowed with this option.\n        let file = files[0];\n        let transformedFile = transformedFiles[0];\n        let startedChunkCount = 0;\n\n        file.upload.chunks = [];\n\n        let handleNextChunk = () => {\n          let chunkIndex = 0;\n\n          // Find the next item in file.upload.chunks that is not defined yet.\n          while (file.upload.chunks[chunkIndex] !== undefined) {\n            chunkIndex++;\n          }\n\n          // This means, that all chunks have already been started.\n          if (chunkIndex >= file.upload.totalChunkCount) return;\n\n          startedChunkCount++;\n\n          let start = chunkIndex * this.options.chunkSize;\n          let end = Math.min(\n            start + this.options.chunkSize,\n            transformedFile.size\n          );\n\n          let dataBlock = {\n            name: this._getParamName(0),\n            data: transformedFile.webkitSlice\n              ? transformedFile.webkitSlice(start, end)\n              : transformedFile.slice(start, end),\n            filename: file.upload.filename,\n            chunkIndex: chunkIndex,\n          };\n\n          file.upload.chunks[chunkIndex] = {\n            file: file,\n            index: chunkIndex,\n            dataBlock: dataBlock, // In case we want to retry.\n            status: Dropzone.UPLOADING,\n            progress: 0,\n            retries: 0, // The number of times this block has been retried.\n          };\n\n          this._uploadData(files, [dataBlock]);\n        };\n\n        file.upload.finishedChunkUpload = (chunk, response) => {\n          let allFinished = true;\n          chunk.status = Dropzone.SUCCESS;\n\n          // Clear the data from the chunk\n          chunk.dataBlock = null;\n          chunk.response = chunk.xhr.responseText;\n          chunk.responseHeaders = chunk.xhr.getAllResponseHeaders();\n          // Leaving this reference to xhr will cause memory leaks.\n          chunk.xhr = null;\n\n          for (let i = 0; i < file.upload.totalChunkCount; i++) {\n            if (file.upload.chunks[i] === undefined) {\n              return handleNextChunk();\n            }\n            if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n              allFinished = false;\n            }\n          }\n\n          if (allFinished) {\n            this.options.chunksUploaded(file, () => {\n              this._finished(files, response, null);\n            });\n          }\n        };\n\n        if (this.options.parallelChunkUploads) {\n          for (let i = 0; i < file.upload.totalChunkCount; i++) {\n            handleNextChunk();\n          }\n        } else {\n          handleNextChunk();\n        }\n      } else {\n        let dataBlocks = [];\n        for (let i = 0; i < files.length; i++) {\n          dataBlocks[i] = {\n            name: this._getParamName(i),\n            data: transformedFiles[i],\n            filename: files[i].upload.filename,\n          };\n        }\n        this._uploadData(files, dataBlocks);\n      }\n    });\n  }\n\n  /// Returns the right chunk for given file and xhr\n  _getChunk(file, xhr) {\n    for (let i = 0; i < file.upload.totalChunkCount; i++) {\n      if (\n        file.upload.chunks[i] !== undefined &&\n        file.upload.chunks[i].xhr === xhr\n      ) {\n        return file.upload.chunks[i];\n      }\n    }\n  }\n\n  // This function actually uploads the file(s) to the server.\n  //\n  //  If dataBlocks contains the actual data to upload (meaning, that this could\n  // either be transformed files, or individual chunks for chunked upload) then\n  // they will be used for the actual data to upload.\n  _uploadData(files, dataBlocks) {\n    let xhr = new XMLHttpRequest();\n\n    // Put the xhr object in the file objects to be able to reference it later.\n    for (let file of files) {\n      file.xhr = xhr;\n    }\n    if (files[0].upload.chunked) {\n      // Put the xhr object in the right chunk object, so it can be associated\n      // later, and found with _getChunk.\n      files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n    }\n\n    let method = this.resolveOption(this.options.method, files, dataBlocks);\n    let url = this.resolveOption(this.options.url, files, dataBlocks);\n    xhr.open(method, url, true);\n\n    // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n    let timeout = this.resolveOption(this.options.timeout, files);\n    if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files);\n\n    // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n    xhr.withCredentials = !!this.options.withCredentials;\n\n    xhr.onload = (e) => {\n      this._finishedUploading(files, xhr, e);\n    };\n\n    xhr.ontimeout = () => {\n      this._handleUploadError(\n        files,\n        xhr,\n        `Request timedout after ${this.options.timeout / 1000} seconds`\n      );\n    };\n\n    xhr.onerror = () => {\n      this._handleUploadError(files, xhr);\n    };\n\n    // Some browsers do not have the .upload property\n    let progressObj = xhr.upload != null ? xhr.upload : xhr;\n    progressObj.onprogress = (e) =>\n      this._updateFilesUploadProgress(files, xhr, e);\n\n    let headers = this.options.defaultHeaders\n      ? {\n          Accept: \"application/json\",\n          \"Cache-Control\": \"no-cache\",\n          \"X-Requested-With\": \"XMLHttpRequest\",\n        }\n      : {};\n\n    if (this.options.binaryBody) {\n      headers[\"Content-Type\"] = files[0].type;\n    }\n\n    if (this.options.headers) {\n      extend(headers, this.options.headers);\n    }\n\n    for (let headerName in headers) {\n      let headerValue = headers[headerName];\n      if (headerValue) {\n        xhr.setRequestHeader(headerName, headerValue);\n      }\n    }\n\n    if (this.options.binaryBody) {\n      // Since the file is going to be sent as binary body, it doesn't make\n      // any sense to generate `FormData` for it.\n      for (let file of files) {\n        this.emit(\"sending\", file, xhr);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr);\n      }\n      this.submitRequest(xhr, null, files);\n    } else {\n      let formData = new FormData();\n\n      // Adding all @options parameters\n      if (this.options.params) {\n        let additionalParams = this.options.params;\n        if (typeof additionalParams === \"function\") {\n          additionalParams = additionalParams.call(\n            this,\n            files,\n            xhr,\n            files[0].upload.chunked ? this._getChunk(files[0], xhr) : null\n          );\n        }\n\n        for (let key in additionalParams) {\n          let value = additionalParams[key];\n          if (Array.isArray(value)) {\n            // The additional parameter contains an array,\n            // so lets iterate over it to attach each value\n            // individually.\n            for (let i = 0; i < value.length; i++) {\n              formData.append(key, value[i]);\n            }\n          } else {\n            formData.append(key, value);\n          }\n        }\n      }\n\n      // Let the user add additional data if necessary\n      for (let file of files) {\n        this.emit(\"sending\", file, xhr, formData);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n\n      this._addFormElementData(formData);\n\n      // Finally add the files\n      // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n      for (let i = 0; i < dataBlocks.length; i++) {\n        let dataBlock = dataBlocks[i];\n        formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n      }\n\n      this.submitRequest(xhr, formData, files);\n    }\n  }\n\n  // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n  _transformFiles(files, done) {\n    let transformedFiles = [];\n    // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n    let doneCounter = 0;\n    for (let i = 0; i < files.length; i++) {\n      this.options.transformFile.call(this, files[i], (transformedFile) => {\n        transformedFiles[i] = transformedFile;\n        if (++doneCounter === files.length) {\n          done(transformedFiles);\n        }\n      });\n    }\n  }\n\n  // Takes care of adding other input elements of the form to the AJAX request\n  _addFormElementData(formData) {\n    // Take care of other input elements\n    if (this.element.tagName === \"FORM\") {\n      for (let input of this.element.querySelectorAll(\n        \"input, textarea, select, button\"\n      )) {\n        let inputName = input.getAttribute(\"name\");\n        let inputType = input.getAttribute(\"type\");\n        if (inputType) inputType = inputType.toLowerCase();\n\n        // If the input doesn't have a name, we can't use it.\n        if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n        if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n          // Possibly multiple values\n          for (let option of input.options) {\n            if (option.selected) {\n              formData.append(inputName, option.value);\n            }\n          }\n        } else if (\n          !inputType ||\n          (inputType !== \"checkbox\" && inputType !== \"radio\") ||\n          input.checked\n        ) {\n          formData.append(inputName, input.value);\n        }\n      }\n    }\n  }\n\n  // Invoked when there is new progress information about given files.\n  // If e is not provided, it is assumed that the upload is finished.\n  _updateFilesUploadProgress(files, xhr, e) {\n    if (!files[0].upload.chunked) {\n      // Handle file uploads without chunking\n      for (let file of files) {\n        if (\n          file.upload.total &&\n          file.upload.bytesSent &&\n          file.upload.bytesSent == file.upload.total\n        ) {\n          // If both, the `total` and `bytesSent` have already been set, and\n          // they are equal (meaning progress is at 100%), we can skip this\n          // file, since an upload progress shouldn't go down.\n          continue;\n        }\n\n        if (e) {\n          file.upload.progress = (100 * e.loaded) / e.total;\n          file.upload.total = e.total;\n          file.upload.bytesSent = e.loaded;\n        } else {\n          // No event, so we're at 100%\n          file.upload.progress = 100;\n          file.upload.bytesSent = file.upload.total;\n        }\n\n        this.emit(\n          \"uploadprogress\",\n          file,\n          file.upload.progress,\n          file.upload.bytesSent\n        );\n      }\n    } else {\n      // Handle chunked file uploads\n\n      // Chunked upload is not compatible with uploading multiple files in one\n      // request, so we know there's only one file.\n      let file = files[0];\n\n      // Since this is a chunked upload, we need to update the appropriate chunk\n      // progress.\n      let chunk = this._getChunk(file, xhr);\n\n      if (e) {\n        chunk.progress = (100 * e.loaded) / e.total;\n        chunk.total = e.total;\n        chunk.bytesSent = e.loaded;\n      } else {\n        // No event, so we're at 100%\n        chunk.progress = 100;\n        chunk.bytesSent = chunk.total;\n      }\n\n      // Now tally the *file* upload progress from its individual chunks\n      file.upload.progress = 0;\n      file.upload.total = 0;\n      file.upload.bytesSent = 0;\n      for (let i = 0; i < file.upload.totalChunkCount; i++) {\n        if (\n          file.upload.chunks[i] &&\n          typeof file.upload.chunks[i].progress !== \"undefined\"\n        ) {\n          file.upload.progress += file.upload.chunks[i].progress;\n          file.upload.total += file.upload.chunks[i].total;\n          file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n        }\n      }\n      // Since the process is a percentage, we need to divide by the amount of\n      // chunks we've used.\n      file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n\n      this.emit(\n        \"uploadprogress\",\n        file,\n        file.upload.progress,\n        file.upload.bytesSent\n      );\n    }\n  }\n\n  _finishedUploading(files, xhr, e) {\n    let response;\n\n    if (files[0].status === Dropzone.CANCELED) {\n      return;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n      response = xhr.responseText;\n\n      if (\n        xhr.getResponseHeader(\"content-type\") &&\n        ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")\n      ) {\n        try {\n          response = JSON.parse(response);\n        } catch (error) {\n          e = error;\n          response = \"Invalid JSON response from server.\";\n        }\n      }\n    }\n\n    this._updateFilesUploadProgress(files, xhr);\n\n    if (!(200 <= xhr.status && xhr.status < 300)) {\n      this._handleUploadError(files, xhr, response);\n    } else {\n      if (files[0].upload.chunked) {\n        files[0].upload.finishedChunkUpload(\n          this._getChunk(files[0], xhr),\n          response\n        );\n      } else {\n        this._finished(files, response, e);\n      }\n    }\n  }\n\n  _handleUploadError(files, xhr, response) {\n    if (files[0].status === Dropzone.CANCELED) {\n      return;\n    }\n\n    if (files[0].upload.chunked && this.options.retryChunks) {\n      let chunk = this._getChunk(files[0], xhr);\n      if (chunk.retries++ < this.options.retryChunksLimit) {\n        this._uploadData(files, [chunk.dataBlock]);\n        return;\n      } else {\n        console.warn(\"Retried this chunk too often. Giving up.\");\n      }\n    }\n\n    this._errorProcessing(\n      files,\n      response ||\n        this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status),\n      xhr\n    );\n  }\n\n  submitRequest(xhr, formData, files) {\n    if (xhr.readyState != 1) {\n      console.warn(\n        \"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\"\n      );\n      return;\n    }\n    if (this.options.binaryBody) {\n      if (files[0].upload.chunked) {\n        const chunk = this._getChunk(files[0], xhr);\n        xhr.send(chunk.dataBlock.data);\n      } else {\n        xhr.send(files[0]);\n      }\n    } else {\n      xhr.send(formData);\n    }\n  }\n\n  // Called internally when processing is finished.\n  // Individual callbacks have to be called in the appropriate sections.\n  _finished(files, responseText, e) {\n    for (let file of files) {\n      file.status = Dropzone.SUCCESS;\n      this.emit(\"success\", file, responseText, e);\n      this.emit(\"complete\", file);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"successmultiple\", files, responseText, e);\n      this.emit(\"completemultiple\", files);\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  // Called internally when processing is finished.\n  // Individual callbacks have to be called in the appropriate sections.\n  _errorProcessing(files, message, xhr) {\n    for (let file of files) {\n      file.status = Dropzone.ERROR;\n      this.emit(\"error\", file, message, xhr);\n      this.emit(\"complete\", file);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"errormultiple\", files, message, xhr);\n      this.emit(\"completemultiple\", files);\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  static uuidv4() {\n    return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\n      /[xy]/g,\n      function (c) {\n        let r = (Math.random() * 16) | 0,\n          v = c === \"x\" ? r : (r & 0x3) | 0x8;\n        return v.toString(16);\n      }\n    );\n  }\n}\nDropzone.initClass();\n\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n//     Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// And in html:\n//\n//     <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\nDropzone.options = {};\n\n// Returns the options for an element or undefined if none available.\nDropzone.optionsForElement = function (element) {\n  // Get the `Dropzone.options.elementId` for this element if it exists\n  if (element.getAttribute(\"id\")) {\n    return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n  } else {\n    return undefined;\n  }\n};\n\n// Holds a list of all dropzone instances\nDropzone.instances = [];\n\n// Returns the dropzone for given element if any\nDropzone.forElement = function (element) {\n  if (typeof element === \"string\") {\n    element = document.querySelector(element);\n  }\n  if ((element != null ? element.dropzone : undefined) == null) {\n    throw new Error(\n      \"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\"\n    );\n  }\n  return element.dropzone;\n};\n\n// Looks for all .dropzone elements and creates a dropzone for them\nDropzone.discover = function () {\n  let dropzones;\n  if (document.querySelectorAll) {\n    dropzones = document.querySelectorAll(\".dropzone\");\n  } else {\n    dropzones = [];\n    // IE :(\n    let checkElements = (elements) =>\n      (() => {\n        let result = [];\n        for (let el of elements) {\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            result.push(dropzones.push(el));\n          } else {\n            result.push(undefined);\n          }\n        }\n        return result;\n      })();\n    checkElements(document.getElementsByTagName(\"div\"));\n    checkElements(document.getElementsByTagName(\"form\"));\n  }\n\n  return (() => {\n    let result = [];\n    for (let dropzone of dropzones) {\n      // Create a dropzone unless auto discover has been disabled for specific element\n      if (Dropzone.optionsForElement(dropzone) !== false) {\n        result.push(new Dropzone(dropzone));\n      } else {\n        result.push(undefined);\n      }\n    }\n    return result;\n  })();\n};\n\n// Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\nDropzone.blockedBrowsers = [\n  // The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n  /opera.*(Macintosh|Windows Phone).*version\\/12/i,\n];\n\n// Checks if the browser is supported\nDropzone.isBrowserSupported = function () {\n  let capableBrowser = true;\n\n  if (\n    window.File &&\n    window.FileReader &&\n    window.FileList &&\n    window.Blob &&\n    window.FormData &&\n    document.querySelector\n  ) {\n    if (!(\"classList\" in document.createElement(\"a\"))) {\n      capableBrowser = false;\n    } else {\n      if (Dropzone.blacklistedBrowsers !== undefined) {\n        // Since this has been renamed, this makes sure we don't break older\n        // configuration.\n        Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n      }\n      // The browser supports the API, but may be blocked.\n      for (let regex of Dropzone.blockedBrowsers) {\n        if (regex.test(navigator.userAgent)) {\n          capableBrowser = false;\n          continue;\n        }\n      }\n    }\n  } else {\n    capableBrowser = false;\n  }\n\n  return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n  // convert base64 to raw binary data held in a string\n  // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n  let byteString = atob(dataURI.split(\",\")[1]);\n\n  // separate out the mime component\n  let mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n\n  // write the bytes of the string to an ArrayBuffer\n  let ab = new ArrayBuffer(byteString.length);\n  let ia = new Uint8Array(ab);\n  for (\n    let i = 0, end = byteString.length, asc = 0 <= end;\n    asc ? i <= end : i >= end;\n    asc ? i++ : i--\n  ) {\n    ia[i] = byteString.charCodeAt(i);\n  }\n\n  // write the ArrayBuffer to a blob\n  return new Blob([ab], { type: mimeString });\n};\n\n// Returns an array without the rejected item\nconst without = (list, rejectedItem) =>\n  list.filter((item) => item !== rejectedItem).map((item) => item);\n\n// abc-def_ghi -> abcDefGhi\nconst camelize = (str) =>\n  str.replace(/[\\-_](\\w)/g, (match) => match.charAt(1).toUpperCase());\n\n// Creates an element from string\nDropzone.createElement = function (string) {\n  let div = document.createElement(\"div\");\n  div.innerHTML = string;\n  return div.childNodes[0];\n};\n\n// Tests if given element is inside (or simply is) the container\nDropzone.elementInside = function (element, container) {\n  if (element === container) {\n    return true;\n  } // Coffeescript doesn't support do/while loops\n  while ((element = element.parentNode)) {\n    if (element === container) {\n      return true;\n    }\n  }\n  return false;\n};\n\nDropzone.getElement = function (el, name) {\n  let element;\n  if (typeof el === \"string\") {\n    element = document.querySelector(el);\n  } else if (el.nodeType != null) {\n    element = el;\n  }\n  if (element == null) {\n    throw new Error(\n      `Invalid \\`${name}\\` option provided. Please provide a CSS selector or a plain HTML element.`\n    );\n  }\n  return element;\n};\n\nDropzone.getElements = function (els, name) {\n  let el, elements;\n  if (els instanceof Array) {\n    elements = [];\n    try {\n      for (el of els) {\n        elements.push(this.getElement(el, name));\n      }\n    } catch (e) {\n      elements = null;\n    }\n  } else if (typeof els === \"string\") {\n    elements = [];\n    for (el of document.querySelectorAll(els)) {\n      elements.push(el);\n    }\n  } else if (els.nodeType != null) {\n    elements = [els];\n  }\n\n  if (elements == null || !elements.length) {\n    throw new Error(\n      `Invalid \\`${name}\\` option provided. Please provide a CSS selector, a plain HTML element or a list of those.`\n    );\n  }\n\n  return elements;\n};\n\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\nDropzone.confirm = function (question, accepted, rejected) {\n  if (window.confirm(question)) {\n    return accepted();\n  } else if (rejected != null) {\n    return rejected();\n  }\n};\n\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\nDropzone.isValidFile = function (file, acceptedFiles) {\n  if (!acceptedFiles) {\n    return true;\n  } // If there are no accepted mime types, it's OK\n  acceptedFiles = acceptedFiles.split(\",\");\n\n  let mimeType = file.type;\n  let baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n  for (let validType of acceptedFiles) {\n    validType = validType.trim();\n    if (validType.charAt(0) === \".\") {\n      if (\n        file.name\n          .toLowerCase()\n          .indexOf(\n            validType.toLowerCase(),\n            file.name.length - validType.length\n          ) !== -1\n      ) {\n        return true;\n      }\n    } else if (/\\/\\*$/.test(validType)) {\n      // This is something like a image/* mime type\n      if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n        return true;\n      }\n    } else {\n      if (mimeType === validType) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\n// Augment jQuery\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n  jQuery.fn.dropzone = function (options) {\n    return this.each(function () {\n      return new Dropzone(this, options);\n    });\n  };\n}\n\n// Dropzone file status codes\nDropzone.ADDED = \"added\";\n\nDropzone.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\nDropzone.ACCEPTED = Dropzone.QUEUED;\n\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nlet detectVerticalSquash = function (img) {\n  let iw = img.naturalWidth;\n  let ih = img.naturalHeight;\n  let canvas = document.createElement(\"canvas\");\n  canvas.width = 1;\n  canvas.height = ih;\n  let ctx = canvas.getContext(\"2d\");\n  ctx.drawImage(img, 0, 0);\n  let { data } = ctx.getImageData(1, 0, 1, ih);\n\n  // search image edge pixel position in case it is squashed vertically.\n  let sy = 0;\n  let ey = ih;\n  let py = ih;\n  while (py > sy) {\n    let alpha = data[(py - 1) * 4 + 3];\n\n    if (alpha === 0) {\n      ey = py;\n    } else {\n      sy = py;\n    }\n\n    py = (ey + sy) >> 1;\n  }\n  let ratio = py / ih;\n\n  if (ratio === 0) {\n    return 1;\n  } else {\n    return ratio;\n  }\n};\n\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar drawImageIOSFix = function (ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n  let vertSquashRatio = detectVerticalSquash(img);\n  return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\nclass ExifRestore {\n  static initClass() {\n    this.KEY_STR =\n      \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n  }\n\n  static encode64(input) {\n    let output = \"\";\n    let chr1 = undefined;\n    let chr2 = undefined;\n    let chr3 = \"\";\n    let enc1 = undefined;\n    let enc2 = undefined;\n    let enc3 = undefined;\n    let enc4 = \"\";\n    let i = 0;\n    while (true) {\n      chr1 = input[i++];\n      chr2 = input[i++];\n      chr3 = input[i++];\n      enc1 = chr1 >> 2;\n      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n      enc4 = chr3 & 63;\n      if (isNaN(chr2)) {\n        enc3 = enc4 = 64;\n      } else if (isNaN(chr3)) {\n        enc4 = 64;\n      }\n      output =\n        output +\n        this.KEY_STR.charAt(enc1) +\n        this.KEY_STR.charAt(enc2) +\n        this.KEY_STR.charAt(enc3) +\n        this.KEY_STR.charAt(enc4);\n      chr1 = chr2 = chr3 = \"\";\n      enc1 = enc2 = enc3 = enc4 = \"\";\n      if (!(i < input.length)) {\n        break;\n      }\n    }\n    return output;\n  }\n\n  static restore(origFileBase64, resizedFileBase64) {\n    if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n      return resizedFileBase64;\n    }\n    let rawImage = this.decode64(\n      origFileBase64.replace(\"data:image/jpeg;base64,\", \"\")\n    );\n    let segments = this.slice2Segments(rawImage);\n    let image = this.exifManipulation(resizedFileBase64, segments);\n    return `data:image/jpeg;base64,${this.encode64(image)}`;\n  }\n\n  static exifManipulation(resizedFileBase64, segments) {\n    let exifArray = this.getExifArray(segments);\n    let newImageArray = this.insertExif(resizedFileBase64, exifArray);\n    let aBuffer = new Uint8Array(newImageArray);\n    return aBuffer;\n  }\n\n  static getExifArray(segments) {\n    let seg = undefined;\n    let x = 0;\n    while (x < segments.length) {\n      seg = segments[x];\n      if ((seg[0] === 255) & (seg[1] === 225)) {\n        return seg;\n      }\n      x++;\n    }\n    return [];\n  }\n\n  static insertExif(resizedFileBase64, exifArray) {\n    let imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n    let buf = this.decode64(imageData);\n    let separatePoint = buf.indexOf(255, 3);\n    let mae = buf.slice(0, separatePoint);\n    let ato = buf.slice(separatePoint);\n    let array = mae;\n    array = array.concat(exifArray);\n    array = array.concat(ato);\n    return array;\n  }\n\n  static slice2Segments(rawImageArray) {\n    let head = 0;\n    let segments = [];\n    while (true) {\n      var length;\n      if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 218)) {\n        break;\n      }\n      if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 216)) {\n        head += 2;\n      } else {\n        length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n        let endPoint = head + length + 2;\n        let seg = rawImageArray.slice(head, endPoint);\n        segments.push(seg);\n        head = endPoint;\n      }\n      if (head > rawImageArray.length) {\n        break;\n      }\n    }\n    return segments;\n  }\n\n  static decode64(input) {\n    let output = \"\";\n    let chr1 = undefined;\n    let chr2 = undefined;\n    let chr3 = \"\";\n    let enc1 = undefined;\n    let enc2 = undefined;\n    let enc3 = undefined;\n    let enc4 = \"\";\n    let i = 0;\n    let buf = [];\n    // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n    let base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n    if (base64test.exec(input)) {\n      console.warn(\n        \"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\"\n      );\n    }\n    input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n    while (true) {\n      enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n      chr1 = (enc1 << 2) | (enc2 >> 4);\n      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n      chr3 = ((enc3 & 3) << 6) | enc4;\n      buf.push(chr1);\n      if (enc3 !== 64) {\n        buf.push(chr2);\n      }\n      if (enc4 !== 64) {\n        buf.push(chr3);\n      }\n      chr1 = chr2 = chr3 = \"\";\n      enc1 = enc2 = enc3 = enc4 = \"\";\n      if (!(i < input.length)) {\n        break;\n      }\n    }\n    return buf;\n  }\n}\nExifRestore.initClass();\n\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n// @win window reference\n// @fn function reference\nlet contentLoaded = function (win, fn) {\n  let done = false;\n  let top = true;\n  let doc = win.document;\n  let root = doc.documentElement;\n  let add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n  let rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n  let pre = doc.addEventListener ? \"\" : \"on\";\n  var init = function (e) {\n    if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n      return;\n    }\n    (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n    if (!done && (done = true)) {\n      return fn.call(win, e.type || e);\n    }\n  };\n\n  var poll = function () {\n    try {\n      root.doScroll(\"left\");\n    } catch (e) {\n      setTimeout(poll, 50);\n      return;\n    }\n    return init(\"poll\");\n  };\n\n  if (doc.readyState !== \"complete\") {\n    if (doc.createEventObject && root.doScroll) {\n      try {\n        top = !win.frameElement;\n      } catch (error) {}\n      if (top) {\n        poll();\n      }\n    }\n    doc[add](pre + \"DOMContentLoaded\", init, false);\n    doc[add](pre + \"readystatechange\", init, false);\n    return win[add](pre + \"load\", init, false);\n  }\n};\n\nfunction __guard__(value, transform) {\n  return typeof value !== \"undefined\" && value !== null\n    ? transform(value)\n    : undefined;\n}\nfunction __guardMethod__(obj, methodName, transform) {\n  if (\n    typeof obj !== \"undefined\" &&\n    obj !== null &&\n    typeof obj[methodName] === \"function\"\n  ) {\n    return transform(obj, methodName);\n  } else {\n    return undefined;\n  }\n}\n\nexport { Dropzone };\n", "// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nexport default class Emitter {\n  // Add an event listener for given event\n  on(event, fn) {\n    this._callbacks = this._callbacks || {};\n    // Create namespace for this event\n    if (!this._callbacks[event]) {\n      this._callbacks[event] = [];\n    }\n    this._callbacks[event].push(fn);\n    return this;\n  }\n\n  emit(event, ...args) {\n    this._callbacks = this._callbacks || {};\n    let callbacks = this._callbacks[event];\n\n    if (callbacks) {\n      for (let callback of callbacks) {\n        callback.apply(this, args);\n      }\n    }\n    // trigger a corresponding DOM event\n    if (this.element) {\n      this.element.dispatchEvent(\n        this.makeEvent(\"dropzone:\" + event, { args: args })\n      );\n    }\n    return this;\n  }\n\n  makeEvent(eventName, detail) {\n    let params = { bubbles: true, cancelable: true, detail: detail };\n\n    if (typeof window.CustomEvent === \"function\") {\n      return new CustomEvent(eventName, params);\n    } else {\n      // IE 11 support\n      // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n      var evt = document.createEvent(\"CustomEvent\");\n      evt.initCustomEvent(\n        eventName,\n        params.bubbles,\n        params.cancelable,\n        params.detail\n      );\n      return evt;\n    }\n  }\n\n  // Remove event listener for given event. If fn is not provided, all event\n  // listeners for that event will be removed. If neither is provided, all\n  // event listeners will be removed.\n  off(event, fn) {\n    if (!this._callbacks || arguments.length === 0) {\n      this._callbacks = {};\n      return this;\n    }\n\n    // specific event\n    let callbacks = this._callbacks[event];\n    if (!callbacks) {\n      return this;\n    }\n\n    // remove all handlers\n    if (arguments.length === 1) {\n      delete this._callbacks[event];\n      return this;\n    }\n\n    // remove specific handler\n    for (let i = 0; i < callbacks.length; i++) {\n      let callback = callbacks[i];\n      if (callback === fn) {\n        callbacks.splice(i, 1);\n        break;\n      }\n    }\n\n    return this;\n  }\n}\n", "import Dropzone from \"./dropzone\";\nimport defaultPreviewTemplate from \"bundle-text:./preview-template.html\";\n\nlet defaultOptions = {\n  /**\n   * Has to be specified on elements other than form (or when the form doesn't\n   * have an `action` attribute).\n   *\n   * You can also provide a function that will be called with `files` and\n   * `dataBlocks`  and must return the url as string.\n   */\n  url: null,\n\n  /**\n   * Can be changed to `\"put\"` if necessary. You can also provide a function\n   * that will be called with `files` and must return the method (since `v3.12.0`).\n   */\n  method: \"post\",\n\n  /**\n   * Will be set on the XHRequest.\n   */\n  withCredentials: false,\n\n  /**\n   * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n   * If set to null or 0, no timeout is going to be set.\n   */\n  timeout: null,\n\n  /**\n   * How many file uploads to process in parallel (See the\n   * Enqueuing file uploads documentation section for more info)\n   */\n  parallelUploads: 2,\n\n  /**\n   * Whether to send multiple files in one request. If\n   * this it set to true, then the fallback file input element will\n   * have the `multiple` attribute as well. This option will\n   * also trigger additional events (like `processingmultiple`). See the events\n   * documentation section for more information.\n   */\n  uploadMultiple: false,\n\n  /**\n   * Whether you want files to be uploaded in chunks to your server. This can't be\n   * used in combination with `uploadMultiple`.\n   *\n   * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n   */\n  chunking: false,\n\n  /**\n   * If `chunking` is enabled, this defines whether **every** file should be chunked,\n   * even if the file size is below chunkSize. This means, that the additional chunk\n   * form data will be submitted and the `chunksUploaded` callback will be invoked.\n   */\n  forceChunking: false,\n\n  /**\n   * If `chunking` is `true`, then this defines the chunk size in bytes.\n   */\n  chunkSize: 2 * 1024 * 1024,\n\n  /**\n   * If `true`, the individual chunks of a file are being uploaded simultaneously.\n   */\n  parallelChunkUploads: false,\n\n  /**\n   * Whether a chunk should be retried if it fails.\n   */\n  retryChunks: false,\n\n  /**\n   * If `retryChunks` is true, how many times should it be retried.\n   */\n  retryChunksLimit: 3,\n\n  /**\n   * The maximum filesize (in MiB) that is allowed to be uploaded.\n   */\n  maxFilesize: 256,\n\n  /**\n   * The name of the file param that gets transferred.\n   * **NOTE**: If you have the option  `uploadMultiple` set to `true`, then\n   * Dropzone will append `[]` to the name.\n   */\n  paramName: \"file\",\n\n  /**\n   * Whether thumbnails for images should be generated\n   */\n  createImageThumbnails: true,\n\n  /**\n   * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n   */\n  maxThumbnailFilesize: 10,\n\n  /**\n   * If `null`, the ratio of the image will be used to calculate it.\n   */\n  thumbnailWidth: 120,\n\n  /**\n   * The same as `thumbnailWidth`. If both are null, images will not be resized.\n   */\n  thumbnailHeight: 120,\n\n  /**\n   * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  thumbnailMethod: \"crop\",\n\n  /**\n   * If set, images will be resized to these dimensions before being **uploaded**.\n   * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n   * ratio of the file will be preserved.\n   *\n   * The `options.transformFile` function uses these options, so if the `transformFile` function\n   * is overridden, these options don't do anything.\n   */\n  resizeWidth: null,\n\n  /**\n   * See `resizeWidth`.\n   */\n  resizeHeight: null,\n\n  /**\n   * The mime type of the resized image (before it gets uploaded to the server).\n   * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n   * See `resizeWidth` for more information.\n   */\n  resizeMimeType: null,\n\n  /**\n   * The quality of the resized images. See `resizeWidth`.\n   */\n  resizeQuality: 0.8,\n\n  /**\n   * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  resizeMethod: \"contain\",\n\n  /**\n   * The base that is used to calculate the **displayed** filesize. You can\n   * change this to 1024 if you would rather display kibibytes, mebibytes,\n   * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n   * not `1 kilobyte`. You can change this to `1024` if you don't care about\n   * validity.\n   */\n  filesizeBase: 1000,\n\n  /**\n   * If not `null` defines how many files this Dropzone handles. If it exceeds,\n   * the event `maxfilesexceeded` will be called. The dropzone element gets the\n   * class `dz-max-files-reached` accordingly so you can provide visual\n   * feedback.\n   */\n  maxFiles: null,\n\n  /**\n   * An optional object to send additional headers to the server. Eg:\n   * `{ \"My-Awesome-Header\": \"header value\" }`\n   */\n  headers: null,\n\n  /**\n   * Should the default headers be set or not?\n   * Accept: application/json <- for requesting json response\n   * Cache-Control: no-cache <- Request shouldnt be cached\n   * X-Requested-With: XMLHttpRequest <- We sent the request via XMLHttpRequest\n   */\n  defaultHeaders: true,\n\n  /**\n   * If `true`, the dropzone element itself will be clickable, if `false`\n   * nothing will be clickable.\n   *\n   * You can also pass an HTML element, a CSS selector (for multiple elements)\n   * or an array of those. In that case, all of those elements will trigger an\n   * upload when clicked.\n   */\n  clickable: true,\n\n  /**\n   * Whether hidden files in directories should be ignored.\n   */\n  ignoreHiddenFiles: true,\n\n  /**\n   * The default implementation of `accept` checks the file's mime type or\n   * extension against this list. This is a comma separated list of mime\n   * types or file extensions.\n   *\n   * Eg.: `image/*,application/pdf,.psd`\n   *\n   * If the Dropzone is `clickable` this option will also be used as\n   * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n   * parameter on the hidden file input as well.\n   */\n  acceptedFiles: null,\n\n  /**\n   * **Deprecated!**\n   * Use acceptedFiles instead.\n   */\n  acceptedMimeTypes: null,\n\n  /**\n   * If false, files will be added to the queue but the queue will not be\n   * processed automatically.\n   * This can be useful if you need some additional user input before sending\n   * files (or if you want want all files sent at once).\n   * If you're ready to send the file simply call `myDropzone.processQueue()`.\n   *\n   * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n   * section for more information.\n   */\n  autoProcessQueue: true,\n\n  /**\n   * If false, files added to the dropzone will not be queued by default.\n   * You'll have to call `enqueueFile(file)` manually.\n   */\n  autoQueue: true,\n\n  /**\n   * If `true`, this will add a link to every file preview to remove or cancel (if\n   * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n   * and `dictRemoveFile` options are used for the wording.\n   */\n  addRemoveLinks: false,\n\n  /**\n   * Defines where to display the file previews – if `null` the\n   * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n   * selector. The element should have the `dropzone-previews` class so\n   * the previews are displayed properly.\n   */\n  previewsContainer: null,\n\n  /**\n   * Set this to `true` if you don't want previews to be shown.\n   */\n  disablePreviews: false,\n\n  /**\n   * This is the element the hidden input field (which is used when clicking on the\n   * dropzone to trigger file selection) will be appended to. This might\n   * be important in case you use frameworks to switch the content of your page.\n   *\n   * Can be a selector string, or an element directly.\n   */\n  hiddenInputContainer: \"body\",\n\n  /**\n   * If null, no capture type will be specified\n   * If camera, mobile devices will skip the file selection and choose camera\n   * If microphone, mobile devices will skip the file selection and choose the microphone\n   * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n   * On apple devices multiple must be set to false.  AcceptedFiles may need to\n   * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n   */\n  capture: null,\n\n  /**\n   * **Deprecated**. Use `renameFile` instead.\n   */\n  renameFilename: null,\n\n  /**\n   * A function that is invoked before the file is uploaded to the server and renames the file.\n   * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n   * file that gets used during the upload can be accessed through `file.upload.filename`.\n   */\n  renameFile: null,\n\n  /**\n   * If `true` the fallback will be forced. This is very useful to test your server\n   * implementations first and make sure that everything works as\n   * expected without dropzone if you experience problems, and to test\n   * how your fallbacks will look.\n   */\n  forceFallback: false,\n\n  /**\n   * The text used before any files are dropped.\n   */\n  dictDefaultMessage: \"Drop files here to upload\",\n\n  /**\n   * The text that replaces the default message text it the browser is not supported.\n   */\n  dictFallbackMessage:\n    \"Your browser does not support drag'n'drop file uploads.\",\n\n  /**\n   * The text that will be added before the fallback form.\n   * If you provide a  fallback element yourself, or if this option is `null` this will\n   * be ignored.\n   */\n  dictFallbackText:\n    \"Please use the fallback form below to upload your files like in the olden days.\",\n\n  /**\n   * If the filesize is too big.\n   * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n   */\n  dictFileTooBig:\n    \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n  /**\n   * If the file doesn't match the file type.\n   */\n  dictInvalidFileType: \"You can't upload files of this type.\",\n\n  /**\n   * If the server response was invalid.\n   * `{{statusCode}}` will be replaced with the servers status code.\n   */\n  dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n   */\n  dictCancelUpload: \"Cancel upload\",\n\n  /**\n   * The text that is displayed if an upload was manually canceled\n   */\n  dictUploadCanceled: \"Upload canceled.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n   */\n  dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used to remove a file.\n   */\n  dictRemoveFile: \"Remove file\",\n\n  /**\n   * If this is not null, then the user will be prompted before removing a file.\n   */\n  dictRemoveFileConfirmation: null,\n\n  /**\n   * Displayed if `maxFiles` is st and exceeded.\n   * The string `{{maxFiles}}` will be replaced by the configuration value.\n   */\n  dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n  /**\n   * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n   * `b` for bytes.\n   */\n  dictFileSizeUnits: { tb: \"TB\", gb: \"GB\", mb: \"MB\", kb: \"KB\", b: \"b\" },\n  /**\n   * Called when dropzone initialized\n   * You can add event listeners here\n   */\n  init() {},\n\n  /**\n   * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n   * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n   * of a function, this needs to return a map.\n   *\n   * The default implementation does nothing for normal uploads, but adds relevant information for\n   * chunked uploads.\n   *\n   * This is the same as adding hidden input fields in the form element.\n   */\n  params(files, xhr, chunk) {\n    if (chunk) {\n      return {\n        dzuuid: chunk.file.upload.uuid,\n        dzchunkindex: chunk.index,\n        dztotalfilesize: chunk.file.size,\n        dzchunksize: this.options.chunkSize,\n        dztotalchunkcount: chunk.file.upload.totalChunkCount,\n        dzchunkbyteoffset: chunk.index * this.options.chunkSize,\n      };\n    }\n  },\n\n  /**\n   * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n   * and a `done` function as parameters.\n   *\n   * If the done function is invoked without arguments, the file is \"accepted\" and will\n   * be processed. If you pass an error message, the file is rejected, and the error\n   * message will be displayed.\n   * This function will not be called if the file is too big or doesn't match the mime types.\n   */\n  accept(file, done) {\n    return done();\n  },\n\n  /**\n   * The callback that will be invoked when all chunks have been uploaded for a file.\n   * It gets the file for which the chunks have been uploaded as the first parameter,\n   * and the `done` function as second. `done()` needs to be invoked when everything\n   * needed to finish the upload process is done.\n   */\n  chunksUploaded: function (file, done) {\n    done();\n  },\n\n  /**\n   * Sends the file as binary blob in body instead of form data.\n   * If this is set, the `params` option will be ignored.\n   * It's an error to set this to `true` along with `uploadMultiple` since\n   * multiple files cannot be in a single binary body.\n   */\n  binaryBody: false,\n\n  /**\n   * Gets called when the browser is not supported.\n   * The default implementation shows the fallback input field and adds\n   * a text.\n   */\n  fallback() {\n    // This code should pass in IE7... :(\n    let messageElement;\n    this.element.className = `${this.element.className} dz-browser-not-supported`;\n\n    for (let child of this.element.getElementsByTagName(\"div\")) {\n      if (/(^| )dz-message($| )/.test(child.className)) {\n        messageElement = child;\n        child.className = \"dz-message\"; // Removes the 'dz-default' class\n        break;\n      }\n    }\n    if (!messageElement) {\n      messageElement = Dropzone.createElement(\n        '<div class=\"dz-message\"><span></span></div>'\n      );\n      this.element.appendChild(messageElement);\n    }\n\n    let span = messageElement.getElementsByTagName(\"span\")[0];\n    if (span) {\n      if (span.textContent != null) {\n        span.textContent = this.options.dictFallbackMessage;\n      } else if (span.innerText != null) {\n        span.innerText = this.options.dictFallbackMessage;\n      }\n    }\n\n    return this.element.appendChild(this.getFallbackForm());\n  },\n\n  /**\n   * Gets called to calculate the thumbnail dimensions.\n   *\n   * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n   *\n   *  - `srcWidth` & `srcHeight` (required)\n   *  - `trgWidth` & `trgHeight` (required)\n   *  - `srcX` & `srcY` (optional, default `0`)\n   *  - `trgX` & `trgY` (optional, default `0`)\n   *\n   * Those values are going to be used by `ctx.drawImage()`.\n   */\n  resize(file, width, height, resizeMethod) {\n    let info = {\n      srcX: 0,\n      srcY: 0,\n      srcWidth: file.width,\n      srcHeight: file.height,\n    };\n\n    let srcRatio = file.width / file.height;\n\n    // Automatically calculate dimensions if not specified\n    if (width == null && height == null) {\n      width = info.srcWidth;\n      height = info.srcHeight;\n    } else if (width == null) {\n      width = height * srcRatio;\n    } else if (height == null) {\n      height = width / srcRatio;\n    }\n\n    // Make sure images aren't upscaled\n    width = Math.min(width, info.srcWidth);\n    height = Math.min(height, info.srcHeight);\n\n    let trgRatio = width / height;\n\n    if (info.srcWidth > width || info.srcHeight > height) {\n      // Image is bigger and needs rescaling\n      if (resizeMethod === \"crop\") {\n        if (srcRatio > trgRatio) {\n          info.srcHeight = file.height;\n          info.srcWidth = info.srcHeight * trgRatio;\n        } else {\n          info.srcWidth = file.width;\n          info.srcHeight = info.srcWidth / trgRatio;\n        }\n      } else if (resizeMethod === \"contain\") {\n        // Method 'contain'\n        if (srcRatio > trgRatio) {\n          height = width / srcRatio;\n        } else {\n          width = height * srcRatio;\n        }\n      } else {\n        throw new Error(`Unknown resizeMethod '${resizeMethod}'`);\n      }\n    }\n\n    info.srcX = (file.width - info.srcWidth) / 2;\n    info.srcY = (file.height - info.srcHeight) / 2;\n\n    info.trgWidth = width;\n    info.trgHeight = height;\n\n    return info;\n  },\n\n  /**\n   * Can be used to transform the file (for example, resize an image if necessary).\n   *\n   * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n   * images according to those dimensions.\n   *\n   * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n   * to be invoked with the file when the transformation is done.\n   */\n  transformFile(file, done) {\n    if (\n      (this.options.resizeWidth || this.options.resizeHeight) &&\n      file.type.match(/image.*/)\n    ) {\n      return this.resizeImage(\n        file,\n        this.options.resizeWidth,\n        this.options.resizeHeight,\n        this.options.resizeMethod,\n        done\n      );\n    } else {\n      return done(file);\n    }\n  },\n\n  /**\n   * A string that contains the template used for each dropped\n   * file. Change it to fulfill your needs but make sure to properly\n   * provide all elements.\n   *\n   * If you want to use an actual HTML element instead of providing a String\n   * as a config option, you could create a div with the id `tpl`,\n   * put the template inside it and provide the element like this:\n   *\n   *     document\n   *       .querySelector('#tpl')\n   *       .innerHTML\n   *\n   */\n  previewTemplate: defaultPreviewTemplate,\n\n  /*\n   Those functions register themselves to the events on init and handle all\n   the user interface specific stuff. Overwriting them won't break the upload\n   but can break the way it's displayed.\n   You can overwrite them if you don't like the default behavior. If you just\n   want to add an additional event handler, register it on the dropzone object\n   and don't overwrite those options.\n   */\n\n  // Those are self explanatory and simply concern the DragnDrop.\n  drop(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragstart(e) {},\n  dragend(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragenter(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragover(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragleave(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n\n  paste(e) {},\n\n  // Called whenever there are no files left in the dropzone anymore, and the\n  // dropzone should be displayed as if in the initial state.\n  reset() {\n    return this.element.classList.remove(\"dz-started\");\n  },\n\n  // Called when a file is added to the queue\n  // Receives `file`\n  addedfile(file) {\n    if (this.element === this.previewsContainer) {\n      this.element.classList.add(\"dz-started\");\n    }\n\n    if (this.previewsContainer && !this.options.disablePreviews) {\n      file.previewElement = Dropzone.createElement(\n        this.options.previewTemplate.trim()\n      );\n      file.previewTemplate = file.previewElement; // Backwards compatibility\n\n      this.previewsContainer.appendChild(file.previewElement);\n      for (var node of file.previewElement.querySelectorAll(\"[data-dz-name]\")) {\n        node.textContent = file.name;\n      }\n      for (node of file.previewElement.querySelectorAll(\"[data-dz-size]\")) {\n        node.innerHTML = this.filesize(file.size);\n      }\n\n      if (this.options.addRemoveLinks) {\n        file._removeLink = Dropzone.createElement(\n          `<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>${this.options.dictRemoveFile}</a>`\n        );\n        file.previewElement.appendChild(file._removeLink);\n      }\n\n      let removeFileEvent = (e) => {\n        e.preventDefault();\n        e.stopPropagation();\n        if (file.status === Dropzone.UPLOADING) {\n          return Dropzone.confirm(\n            this.options.dictCancelUploadConfirmation,\n            () => this.removeFile(file)\n          );\n        } else {\n          if (this.options.dictRemoveFileConfirmation) {\n            return Dropzone.confirm(\n              this.options.dictRemoveFileConfirmation,\n              () => this.removeFile(file)\n            );\n          } else {\n            return this.removeFile(file);\n          }\n        }\n      };\n\n      for (let removeLink of file.previewElement.querySelectorAll(\n        \"[data-dz-remove]\"\n      )) {\n        removeLink.addEventListener(\"click\", removeFileEvent);\n      }\n    }\n  },\n\n  // Called whenever a file is removed.\n  removedfile(file) {\n    if (file.previewElement != null && file.previewElement.parentNode != null) {\n      file.previewElement.parentNode.removeChild(file.previewElement);\n    }\n    return this._updateMaxFilesReachedClass();\n  },\n\n  // Called when a thumbnail has been generated\n  // Receives `file` and `dataUrl`\n  thumbnail(file, dataUrl) {\n    if (file.previewElement) {\n      file.previewElement.classList.remove(\"dz-file-preview\");\n      for (let thumbnailElement of file.previewElement.querySelectorAll(\n        \"[data-dz-thumbnail]\"\n      )) {\n        thumbnailElement.alt = file.name;\n        thumbnailElement.src = dataUrl;\n      }\n\n      return setTimeout(\n        () => file.previewElement.classList.add(\"dz-image-preview\"),\n        1\n      );\n    }\n  },\n\n  // Called whenever an error occurs\n  // Receives `file` and `message`\n  error(file, message) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-error\");\n      if (typeof message !== \"string\" && message.error) {\n        message = message.error;\n      }\n      for (let node of file.previewElement.querySelectorAll(\n        \"[data-dz-errormessage]\"\n      )) {\n        node.textContent = message;\n      }\n    }\n  },\n\n  errormultiple() {},\n\n  // Called when a file gets processed. Since there is a cue, not all added\n  // files are processed immediately.\n  // Receives `file`\n  processing(file) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-processing\");\n      if (file._removeLink) {\n        return (file._removeLink.innerHTML = this.options.dictCancelUpload);\n      }\n    }\n  },\n\n  processingmultiple() {},\n\n  // Called whenever the upload progress gets updated.\n  // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n  // To get the total number of bytes of the file, use `file.size`\n  uploadprogress(file, progress, bytesSent) {\n    if (file.previewElement) {\n      for (let node of file.previewElement.querySelectorAll(\n        \"[data-dz-uploadprogress]\"\n      )) {\n        node.nodeName === \"PROGRESS\"\n          ? (node.value = progress)\n          : (node.style.width = `${progress}%`);\n      }\n    }\n  },\n\n  // Called whenever the total upload progress gets updated.\n  // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n  totaluploadprogress() {},\n\n  // Called just before the file is sent. Gets the `xhr` object as second\n  // parameter, so you can modify it (for example to add a CSRF token) and a\n  // `formData` object to add additional information.\n  sending() {},\n\n  sendingmultiple() {},\n\n  // When the complete upload is finished and successful\n  // Receives `file`\n  success(file) {\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-success\");\n    }\n  },\n\n  successmultiple() {},\n\n  // When the upload is canceled.\n  canceled(file) {\n    return this.emit(\"error\", file, this.options.dictUploadCanceled);\n  },\n\n  canceledmultiple() {},\n\n  // When the upload is finished, either with success or an error.\n  // Receives `file`\n  complete(file) {\n    if (file._removeLink) {\n      file._removeLink.innerHTML = this.options.dictRemoveFile;\n    }\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-complete\");\n    }\n  },\n\n  completemultiple() {},\n\n  maxfilesexceeded() {},\n\n  maxfilesreached() {},\n\n  queuecomplete() {},\n\n  addedfiles() {},\n};\n\nexport default defaultOptions;\n", "module.exports = \"a1acf319c471fa03\";", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  change(event) {\n    let self = this;\n    let input = event.currentTarget;\n    if (input.files && input.files[0]) {\n      self.loadPreview(input);\n    }\n  }\n\n  loadPreview(input) {\n    var reader = new FileReader();\n    var file = input.files[0];\n\n    reader.onload = function (e) {\n      let next = $(input).next();\n      if (file.type.startsWith(\"video\")) {\n        // create video tag\n        if ($(next).is(\"video\")) {\n          $(next).attr(\"src\", e.target.result);\n        } else {\n          $(next).remove();\n          let imageElement = document.createElement(\"video\");\n          $(imageElement).attr({\n            src: e.target.result,\n            autoplay: \"autoplay\",\n            muted: \"muted\",\n            loop: \"loop\",\n          });\n          $(imageElement).insertAfter(input);\n        }\n      } else {\n        // create image tag\n        if ($(next).is(\"img\")) {\n          $(next).attr(\"src\", e.target.result);\n        } else {\n          $(next).remove();\n          let imageElement = document.createElement(\"img\");\n          $(imageElement).attr(\"src\", e.target.result);\n          $(imageElement).insertAfter(input);\n        }\n      }\n    };\n\n    reader.readAsDataURL(file);\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n\n  static targets = ['field']\n\n  onSelect(event) {\n    let value = $(event.currentTarget).data('value');\n    $(this.fieldTarget).val(value)\n    $(this.element).get(0).submit();\n  }\n}", "import ApplicationController from './application_controller'\nimport { DirectUpload } from \"@rails/activestorage\"\nimport Dropzone from \"dropzone\"\nimport { getMetaValue, findElement, removeElement, insertAfter } from \"../packs/global_functions\"\n\nDropzone.autoDiscover = false\n\n///\n// a controller to render a dropzone input field\n// use it like this in a form:\n//\n//  .dropzone.dropzone-default.dz-clickable.mb-3{data: {controller: 'dropzone', 'dropzone-accepted-filesi': 'image/jpeg', dropzone_upload_message: t(\"labels.dropzone.upload_message\"), dropzone_label_remove_file: t(\"labels.dropzone.remove_file_message\")}}\n//    = form.file_field :file, direct_upload: false, data: { 'dropzone-target': 'input'}\n///\nexport default class extends ApplicationController {\n  \n  static targets = [ \"input\" ]\n  \n  connect() {\n      super.connect\n      this.dropZone = createDropZone(this)\n      this.hideFileInput()\n      this.bindEvents()\n    }\n  \n  // Private\n    hideFileInput() {\n      this.inputTarget.disabled = true\n      this.inputTarget.style.display = \"none\"\n    }\n  \n    bindEvents() {\n      this.dropZone.on(\"addedfile\", (file) => {\n        setTimeout(() => { \n          file.accepted && createDirectUploadController(this, file).start() \n          const fileUploaded = new CustomEvent(\"dropzone.addedfile\", {\n            detail: {\n              file: file\n            }\n          })\n          this.element.dispatchEvent(fileUploaded)\n        }, 500)\n      })\n  \n      this.dropZone.on(\"removedfile\", (file) => {\n        const fileRemoved = new CustomEvent(\"dropzone.removedfile\", {\n          detail: {\n            file: file\n          }\n        })\n        file.controller && removeElement(file.controller.hiddenInput)\n        this.element.dispatchEvent(fileRemoved)\n      })\n  \n      this.dropZone.on(\"canceled\", (file) => {\n        file.controller && file.controller.xhr.abort()\n      })\n  \n      this.dropZone.on(\"processing\", (file) => {\n        if(this.submitButton) {\n          this.submitButton.disabled = true\n        }\n      })\n  \n      this.dropZone.on(\"queuecomplete\", (file) => {\n        if(this.submitButton) {\n          this.submitButton.disabled = false\n        }\n      })\n    }\n  \n  get headers() { return { \"X-CSRF-Token\": getMetaValue(\"csrf-token\") } }\n\n  // get url() { return this.inputTarget.getAttribute(\"data-direct-upload-url\") }\n  get url() {\n    const path = `${window.location.origin}/rails/active_storage/direct_uploads`\n    // console.log(`uploading file to ${path}`)\n    return path\n  }\n\n  get maxFiles() { return this.data.get(\"maxFiles\") || 1 }\n\n  get maxFileSize() { return this.data.get(\"maxFileSize\") || 256 }\n\n  get acceptedFiles() { return this.data.get(\"acceptedFiles\") }\n\n  get addRemoveLinks() { return this.data.get(\"addRemoveLinks\") || true }\n\n  get form() { return this.element.closest(\"form\") }\n\n  get submitButton() { return findElement(this.form, \"input[type=submit], button[type=submit]\") }\n\n}\n  \nclass DirectUploadController {\n  constructor(source, file) {\n    this.directUpload = createDirectUpload(file, source.url, this)\n    this.source = source\n    this.file = file\n  }\n\n  start() {\n    this.file.controller = this\n    this.hiddenInput = this.createHiddenInput()\n    this.directUpload.create((error, attributes) => {\n      if (error) {\n        removeElement(this.hiddenInput)\n        this.emitDropzoneError(error)\n      } else {\n        this.hiddenInput.value = attributes.signed_id\n        this.emitDropzoneSuccess()\n      }\n    })\n  }\n\n// Private\n  createHiddenInput() {\n    const input = document.createElement(\"input\")\n    input.type = \"hidden\"\n    input.name = this.source.inputTarget.name\n    insertAfter(input, this.source.inputTarget)\n    return input\n  }\n\n  directUploadWillStoreFileWithXHR(xhr) {\n    this.bindProgressEvent(xhr)\n    this.emitDropzoneUploading()\n  }\n\n  bindProgressEvent(xhr) {\n    this.xhr = xhr\n    this.xhr.upload.addEventListener(\"progress\", event => this.uploadRequestDidProgress(event))\n  }\n\n  uploadRequestDidProgress(event) {\n    // const element = this.source.element\n    // console.log('element: ', element)\n    const progress = event.loaded / event.total * 100\n    findElement(this.file.previewTemplate, \".progress-bar.progress-bar-success\").style.width = `${progress}%`\n  }\n\n  emitDropzoneUploading() {\n    this.file.status = Dropzone.UPLOADING\n    this.source.dropZone.emit(\"processing\", this.file)\n  }\n\n  emitDropzoneError(error) {\n    this.file.status = Dropzone.ERROR\n    this.source.dropZone.emit(\"error\", this.file, error)\n    this.source.dropZone.emit(\"complete\", this.file)\n  }\n\n  emitDropzoneSuccess() {\n    this.file.status = Dropzone.SUCCESS\n    this.source.dropZone.emit(\"success\", this.file)\n    this.source.dropZone.emit(\"complete\", this.file)\n  }\n}\n\n// Top level...\nfunction createDirectUploadController(source, file) {\n  return new DirectUploadController(source, file)\n}\n\nfunction createDirectUpload(file, url, controller) {\n  return new DirectUpload(file, url, controller)\n}\n\nfunction createDropZone(controller) {\n  // console.log(\"controller data: \", controller.data)\n  let idPostfix = controller.data.get('idPostfix')\n  let uploadMessage = controller.data.get('uploadMessage')\n  if (uploadMessage == undefined)\n  uploadMessage = \"Drop files here to upload\" \n  let labelRemoveFile = controller.data.get('labelRemoveFile')\n  if (labelRemoveFile == undefined)\n    labelRemoveFile = \"remove file\"\n  const previewId = `#dz_preview_${idPostfix}`\n  let previewNode = $(previewId);\n  let previewTemplate = previewNode[0].parentNode.innerHTML\n  const dropzone = new Dropzone(controller.element, {\n    url: controller.url,\n    headers: controller.headers,\n    maxFiles: controller.maxFiles,\n    maxFilesize: controller.maxFileSize,\n    acceptedFiles: controller.acceptedFiles,\n    // addRemoveLinks: controller.addRemoveLinks,\n    autoQueue: false,\n    autoProcessQueue: false,\n    dictDefaultMessage: uploadMessage,\n    dictRemoveFile: labelRemoveFile,\n    previewTemplate: previewTemplate,\n    thumbnailMethod: 'contain',\n    thumbnailWidth: null,\n    thumbnailHeight: null,\n    // previewsContainer: previewId // Define the container to display the previews\n  })\n  previewNode.detach()\n  return dropzone\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['input']\n\n  static get useReflex() {\n    return true\n  }\n\n  validate(event) {\n    event.preventDefault()\n    this.stimulate('JourneyHierarchyReflex#validate_dsl', this.inputTarget.value)\n  }\n}\n", "import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n\n  change(event) {\n    let $target = $(event.currentTarget),\n      id = $target.data(\"id\"),\n      type = $target.val(),\n      object_name = $target.data(\"object-name\");\n    // console.log(\"target: \", $target)\n    this.stimulate(\"EventSpecificsReflex#change\", id, object_name, type).then(() => {\n      reinitializeForms();\n    });\n  }\n\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  change(event) {\n    let self = this;\n    let input = event.currentTarget;\n    if (input.files && input.files[0]) {\n      var reader = new FileReader();\n\n      reader.onload = function (e) {\n        let next = $(input).next();\n        if($(next).is('img')) {\n          $(next).attr('src', e.target.result);\n        } else {\n          $(next).remove();\n          let imageElement = document.createElement('img');\n          $(imageElement).attr('src', e.target.result);\n          $(imageElement).insertAfter(input);\n        }\n      };\n\n      reader.readAsDataURL(input.files[0]);\n    }\n  }\n}", "import ApplicationController from './application_controller'\nimport Param from '../packs/param';\n\nexport default class extends ApplicationController {\n\n  static values = {  \n    scope: String\n  }\n\n  connect() {\n    super.connect();\n    this.param = new Param(this.getBaseUrl());\n  }\n\n  filter(event) {\n    let target = $(event.currentTarget),\n    paramKey = target.data('param'),\n    array = target.data('array'),\n    clear = target.data('clear'),\n    value = $.trim(target.html());\n\n    if(target.is(\"select\")) {\n      value = $.trim(target.val());\n    }\n\n    if(clear) {\n      this.param.clearParam(paramKey, value);\n    } else {\n      this.param.updateParams(paramKey, value, array);\n    }\n\n    this.stimulate(\"filterSortReflex#filter\", this.param.getParams());\n  }\n\n  search(event) {\n    let target = $(event.currentTarget),\n    paramKey = target.data('param'),\n    value = $.trim(target.val());\n\n    this.param.updateParams(paramKey, value, false);\n\n    this.stimulate(\"filterSortReflex#filter\", this.param.getParams());\n  }\n\n  sort(event) {\n    let sortDirections = ['asc', 'desc'],\n    target = $(event.currentTarget),\n    sort = target.attr('data-sort-direction'),\n    sortField = target.attr('data-sort-field');\n    let scope = $(\"#table_wrapper\").attr(\"data-filter-sort-scope-value\")\n    if(sort === 'desc') {\n      sort = sortDirections[0];\n    } else {\n      sort = sortDirections[1];\n    }\n\n    $('[data-sort-direction]').attr('data-sort-direction', null);\n\n    target.attr('data-sort-direction', sort);\n\n    let json = JSON.parse(`{ \"${sortField}\": \"${sort}\" }`);\n    // console.log(\"params: \", this.param)\n    this.param.updateParams('sort', JSON.stringify(json), false);\n    if(scope) {\n      this.param.updateParams('scope', scope, false)\n    } else {\n      this.param.clearParam('scope')\n    }\n    // console.log(\"params: \", this.param.getParams())\n    this.stimulate('filterSortReflex#filter', this.param.getParams());\n\n  }\n\n  filterSuccess(event) {\n    window.reinitializeForms(document.body)\n  }\n\n  ///\n  // a more generic search approach for filtering index records\n  ///\n  searchForIt(event) {\n    let target = $(event.currentTarget)\n    let paramName = target.data('paramname');\n    if(paramName == undefined) {\n      paramName = \"query\"\n    }\n    let term = $.trim(target.val());\n    // console.log(\"term: \", term)\n    this.param.clearParam(\"page\", false);\n    if(term) {\n      this.param.updateParams(paramName, term, false);\n    } else {\n      this.param.clearParam(paramName)\n    }\n    // this.stimulate(\"searchReflex#filter\"); // <-- as this has been a page morph only, the following js solution is much better\n    location.reload();\n  }\n\n  ///\n  // sets the correct params so the page morph trigered by stimulate will do the sorting by itself\n  ///\n  sortIt(event) {\n    let target = $(event.currentTarget),\n    sort = target.attr('data-sort-direction'),\n    sortField = target.attr('data-sort-field');\n    // console.log(\"sort: \", sort)\n    if(sort === 'desc') {\n      sort = \"asc\";\n    } else {\n      sort = \"desc\";\n    }\n    $('[data-sort-direction]').attr('data-sort-direction', null);\n    target.attr('data-sort-direction', sort);\n    // console.log(\"current sort direction: \", target.attr('data-sort-direction'))\n    this.param.updateParams('sort', `${sortField}:${sort}`, false);\n    this.stimulate('filterSortReflex#reload_page');\n  }\n\n}\n\n", "import Flatpickr from \"stimulus-flatpickr\";\n\n// import the translation files and create a translation mapping\nimport { english } from \"flatpickr/dist/l10n/default.js\";\nimport { German } from \"flatpickr/dist/l10n/de.js\";\n\nexport default class extends Flatpickr {\n  static locales = {\n    en: english,\n    de: German,\n  }\n\n  connect() {\n    //define locale and global flatpickr settings for all datepickers\n    this.config = {\n      ...this.config,\n      locale: this.locale,\n      enableTime: true,\n      time_24hr: true,\n      altInput: true,\n      altFormat: \"d. M Y H:i\"\n    }\n    super.connect()\n  }\n\n  get locale() {\n    return I18n.locale\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", "/*\nStimulus 3.0.0\nCopyright © 2021 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    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())\n            .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\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).sort().forEach(key => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName: matches[2],\n        eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n        identifier: matches[5],\n        methodName: matches[7]\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.split(\":\").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 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\nclass Action {\n    constructor(element, index, descriptor) {\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    }\n    static forToken(token) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content));\n    }\n    toString() {\n        const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n    }\n    get params() {\n        if (this.eventTarget instanceof Element) {\n            return this.getParamsFromEventTargetAttributes(this.eventTarget);\n        }\n        else {\n            return {};\n        }\n    }\n    getParamsFromEventTargetAttributes(eventTarget) {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n        const attributes = Array.from(eventTarget.attributes);\n        attributes.forEach(({ name, value }) => {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                Object.assign(params, { [camelize(key)]: typecast(value) });\n            }\n        });\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n}\nconst defaultEventNames = {\n    \"a\": e => \"click\",\n    \"button\": e => \"click\",\n    \"form\": e => \"submit\",\n    \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n    \"select\": e => \"change\",\n    \"textarea\": e => \"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        if (this.willBeInvokedByEvent(event)) {\n            this.invokeWithEvent(event);\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    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\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 (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.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, { attributes: true, childList: true, subtree: 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            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(node, attributeName) {\n        const element = node;\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    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\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\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 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    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)\n            .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.trim().split(/\\s+/).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));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token);\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        this.invokeChangedCallbacksForDefaultValues();\n    }\n    start() {\n        this.stringMapObserver.start();\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            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    }\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        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            this.delegate.targetConnected(element, name);\n        }\n    }\n    disconnectTarget(element, name) {\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            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\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        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        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\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.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    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\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\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) => [\n            ...Object.getOwnPropertyNames(object),\n            ...Object.getOwnPropertySymbols(object)\n        ];\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 () { this.a.call(this); };\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\n            || this.findTarget(targetName)\n            || 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 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    }\n    findElement(selector) {\n        return this.element.matches(selector)\n            ? this.element\n            : 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}\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        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    }\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    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};\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    }\n    static start(element, schema) {\n        const application = new Application(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        if (controllerConstructor.shouldLoad) {\n            this.load({ identifier, controllerConstructor });\n        }\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach(definition => this.router.loadDefinition(definition));\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 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);\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) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair);\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]) {\n    return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array: return \"array\";\n        case Boolean: return \"boolean\";\n        case Number: return \"number\";\n        case Object: return \"object\";\n        case String: return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\": return \"boolean\";\n        case \"number\": return \"number\";\n        case \"string\": 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(typeObject) {\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    if (typeFromObject) {\n        const defaultValueType = parseValueTypeDefault(typeObject.default);\n        if (typeFromObject !== defaultValueType) {\n            throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n        }\n        return typeFromObject;\n    }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n    const typeFromObject = parseValueTypeObject(typeDefinition);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(typeDefinition);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n        get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n        reader: readers[type],\n        writer: writers[type] || writers.default\n    };\n}\nconst defaultValuesByType = {\n    get array() { return []; },\n    boolean: false,\n    number: 0,\n    get object() { return {}; },\n    string: \"\"\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(\"Expected array\");\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || value == \"false\");\n    },\n    number(value) {\n        return Number(value);\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 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    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 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 = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "export const kebabCase = string =>\n  string\n    .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n    .replace(/[\\s_]+/g, \"-\")\n    .toLowerCase();\n\nexport const capitalize = string => {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n};\n", "const booleanOptions = [\n  'allowInput',\n  'altInput',\n  'animate',\n  'clickOpens',\n  'closeOnSelect',\n  'disableMobile',\n  'enableSeconds',\n  'enableTime',\n  'inline',\n  'noCalendar',\n  'shorthandCurrentMonth',\n  'static',\n  'time_24hr',\n  'weekNumbers',\n  'wrap'\n]\n\nconst stringOptions = [\n  'altInputClass',\n  'conjunction',\n  'mode',\n  'nextArrow',\n  'position',\n  'prevArrow',\n  'monthSelectorType'\n]\n\nconst numberOptions = [\n  'defaultHour',\n  'defaultMinute',\n  'defaultSeconds',\n  'hourIncrement',\n  'minuteIncrement',\n  'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n  string: stringOptions,\n  boolean: booleanOptions,\n  date: dateOptions,\n  array: arrayOptions,\n  number: numberOptions,\n  arrayOrString: arrayOrStringOptions\n}\n", "export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n", "export const elements = [\n  'calendarContainer',\n  'currentYearElement',\n  'days',\n  'daysContainer',\n  'input',\n  'nextMonthNav',\n  'monthNav',\n  'prevMonthNav',\n  'rContainer',\n  'selectedDateElem',\n  'todayDateElem',\n  'weekdayContainer'\n]\n", "export const mapping = {\n  '%Y': 'Y',\n  '%y': 'y',\n  '%C': 'Y',\n  '%m': 'm',\n  '%-m': 'n',\n  '%_m': 'n',\n  '%B': 'F',\n  '%^B': 'F',\n  '%b': 'M',\n  '%^b': 'M',\n  '%h': 'M',\n  '%^h': 'M',\n  '%d': 'd',\n  '%-d': 'j',\n  '%e': 'j',\n  '%H': 'H',\n  '%k': 'H',\n  '%I': 'h',\n  '%l': 'h',\n  '%-l': 'h',\n  '%P': 'K',\n  '%p': 'K',\n  '%M': 'i',\n  '%S': 'S',\n  '%A': 'l',\n  '%a': 'D',\n  '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n  Object.keys(mapping)\n    .join('|')\n    .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n  'g'\n)\n\nexport const convertDateFormat = (format) => {\n  return format.replace(strftimeRegex, (match) => {\n    return mapping[match]\n  })\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n  static targets = ['instance']\n\n  initialize() {\n    this.config = {}\n  }\n\n  connect() {\n    this._initializeEvents()\n    this._initializeOptions()\n    this._initializeDateFormats()\n\n    this.fp = flatpickr(this.flatpickrElement, {\n      ...this.config\n    })\n\n    this._initializeElements()\n  }\n\n  disconnect() {\n    const value = this.inputTarget.value\n    this.fp.destroy()\n    this.inputTarget.value = value\n  }\n\n  _initializeEvents() {\n    events.forEach((event) => {\n      if (this[event]) {\n        const hook = `on${capitalize(event)}`\n        this.config[hook] = this[event].bind(this)\n      }\n    })\n  }\n\n  _initializeOptions() {\n    Object.keys(options).forEach((optionType) => {\n      const optionsCamelCase = options[optionType]\n      optionsCamelCase.forEach((option) => {\n        const optionKebab = kebabCase(option)\n        if (this.data.has(optionKebab)) {\n          this.config[option] = this[`_${optionType}`](optionKebab)\n        }\n      })\n    })\n    this._handleDaysOfWeek()\n  }\n\n  _handleDaysOfWeek() {\n    if (this.config.disableDaysOfWeek) {\n      this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n      this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n    }\n\n    if (this.config.enableDaysOfWeek) {\n      this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n      this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n    }\n  }\n\n  _validateDaysOfWeek(days) {\n    if (Array.isArray(days)) {\n      return days.map((day) => parseInt(day))\n    } else {\n      console.error('days of week must be a valid array')\n      return []\n    }\n  }\n\n  _disable(date) {\n    const disabledDays = this.config.disableDaysOfWeek\n    return disabledDays.includes(date.getDay())\n  }\n\n  _enable(date) {\n    const enabledDays = this.config.enableDaysOfWeek\n    return enabledDays.includes(date.getDay())\n  }\n\n  _initializeDateFormats() {\n    dateFormats.forEach((dateFormat) => {\n      if (this.data.has(dateFormat)) {\n        this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n      }\n    })\n  }\n\n  _initializeElements() {\n    elements.forEach((element) => {\n      this[`${element}Target`] = this.fp[element]\n    })\n  }\n\n  _string(option) {\n    return this.data.get(option)\n  }\n\n  _date(option) {\n    return this.data.get(option)\n  }\n\n  _boolean(option) {\n    return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n  }\n\n  _array(option) {\n    return JSON.parse(this.data.get(option))\n  }\n\n  _number(option) {\n    return parseInt(this.data.get(option))\n  }\n\n  _arrayOrString(option) {\n    const val = this.data.get(option)\n    try {\n      return JSON.parse(val)\n    } catch (e) {\n      return val\n    }\n  }\n\n  get flatpickrElement() {\n    return (this.hasInstanceTarget && this.instanceTarget) || this.element\n  }\n}\n\nexport default StimulusFlatpickr\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static values = {\n    init: String\n  }\n\n  initialize() {\n    super.initialize();\n    this.target = $(this.element);\n    this.useReflex = false;\n    this.initializers = {\n      default: this.initFormFunctions\n    }\n\n  }\n\n  connect() {\n    super.connect();\n    let self = this\n    let initMethods = this.initValue.split(\" \")\n    initMethods.forEach(function (initializer, index) {\n      self.initializers[initializer].bind(self)()\n    })\n  }\n\n  initFormFunctions() {\n    reinitializeForms(this.target)\n  }\n\n  /**\n   * Diese Funktion wird aufgerufen, wenn ein bestimmtes Ereignis ausgel\u00F6st wird.\n   * Sie versteckt das aktuell sichtbare Formularelement und zeigt ein neues Formularelement an.\n   * \n   * @param {Event} event - Das ausgel\u00F6ste Ereignis.\n   */\n  showForm(event) {\n    let currentFormElementVisible = $(\".form-block:not(.hidden)\");\n    let newFormElementVisible = $(\n      `#form_element_${$(event.currentTarget).data(\"form-id\")}`\n    );\n\n    currentFormElementVisible.addClass(\"hidden\");\n    if (\n      currentFormElementVisible.attr(\"id\") != newFormElementVisible.attr(\"id\")\n    ) {\n      newFormElementVisible.removeClass(\"hidden\");\n    }\n  }\n\n  // shows the form element for the selected definitions card\n  select(event) {\n    let $target = $(event.currentTarget),\n    id = $target.data(\"id\"),\n    prefix_id = $target.data(\"prefix-id\"),\n    isSelected = $target.hasClass('selected');\n\n    $('.form-element').addClass('hidden');\n\n    let form = $(`#${prefix_id}${id}`);\n    if(isSelected) {\n      form.removeClass('hidden');\n    } else {\n      form.addClass('hidden');\n    }\n  }\n\n  showLoadingSpinner(event) {\n    this.startLoading();\n  }\n\n}", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  updateState(event) {\n    $('.frame-data-card').each(function(index, element) {\n      let stateElement = $(element).find('.card-state');\n      let correspondingForm = $(`#form_element_${index}`).find('textarea');\n      if(correspondingForm.val() != \"\") {\n        stateElement.addClass('complete').removeClass('unknown');\n      } else {\n        stateElement.addClass('unknown').removeClass('complete');\n      }\n    });\n  }\n}", "import { Controller } from '@hotwired/stimulus'\n\n// FullCalendar Integration\nimport { Calendar } from '@fullcalendar/core';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport interactionPlugin from '@fullcalendar/interaction';\nimport allLocales from '@fullcalendar/core/locales-all';\n\nexport default class extends Controller {\n\n  static targets = [\"calendar\"];\n  static values = {\n    ctype: String,\n    aspectRatio: Number,\n  }\n\n  connect() {\n    let calendarElement = this.calendarTarget;\n    console.log(\"calendarElement: \", calendarElement);\n    let calendarType = this.ctypeValue;\n    console.log(\"calendarType: \", calendarType);\n    let eventsUrl = calendarType == \"anonymous\" ? \"anonymous_events\" : \"events\";\n    let locale = I18n.locale;\n    console.log(\"////// current locale: \", locale);\n    let calendar = new Calendar(calendarElement, {\n      plugins: [ dayGridPlugin, interactionPlugin ],\n      locale: locale,\n      firstDay: 1,\n      initialView: 'dayGridMonth',\n      headerToolbar: {\n        left: 'prev',\n        center: 'title',\n        right: 'next'\n      },\n      events: `/${eventsUrl}.json`,\n        \n      aspectRatio: this.aspectRatioValue,\n      expandRows: true,\n      weekNumbers: true,\n      weekText: \"\",\n      eventClassNames: function(args) {\n        // console.log(\"event: \", args.event)\n        let classNames = [\"stream-bg-\" + args.event.extendedProps.stream, \"tooltiped\"];\n        if (args.isPast) {\n          classNames.push(\"in-past\");\n        }\n        return classNames;\n      },\n      // eventDidMount: function(args) {\n      //   $(args.el).attr(\"data-tooltip-content\", `#${args.event.id}`);\n      // },\n      // viewDidMount: function(args) {\n      //   let view = args.view;\n      //   $('.tooltiped', $(args.el)).each(function(index) {\n      //     return $(this).tooltipster({\n      //       contentCloning: true,\n      //       animation: 'fade',\n      //       delay: 200,\n      //       theme: \"tooltipster-\" + $($(this).attr(\"data-tooltip-content\")).attr(\"data-stream\"),\n      //       trigger: 'hover',\n      //       interactive: true\n      //     });\n      //   });\n      //   $(\".tooltip_templates\").removeClass(\"hidden\");\n      //   $('.tooltip_templates .tooltiped').each(function(index) {\n      //     return $(this).find(\".tile_details_lead_in\").dotdotdot();\n      //   });\n      //   $(\".tooltip_templates\").addClass(\"hidden\");\n      //   $(\".fc-week-number.ui-widget-content\").append(\"<div class='kw_background'/>\");\n      //   return $(\".fc-week-number.ui-widget-content .kw_background\").each(function() {\n      //     return $(this).height($(this).parent().height() + 'px');\n      //   });\n      // },\n      displayEventTime: false\n    });\n\n    calendar.render();\n  }\n\n\n  selected(event) {\n    if($(event.target).closest(\"a\").length > 0 && event.target != event.currentTarget) {\n      // do nothing should not interest you!\n    } else {\n      event.stopPropagation();\n      event.preventDefault();\n      let $currentTarget = $(event.currentTarget),\n        hasClass = $currentTarget.hasClass(\"selected\");\n      $(\".card.selected\").css({\n        \"border-color\": \"\",\n        \"background-color\": \"\"\n      });\n      $(\".card.selected\").removeClass(\"selected\");\n      if (!hasClass) {\n        $currentTarget.addClass(\"selected\");\n        let color = $currentTarget.attr(\"data-color\");\n        let backgroundColor = $currentTarget.attr(\"data-background-color\");\n        if (color) {\n          $currentTarget.css({\n            \"border-color\": color,\n          });\n        }\n        if(backgroundColor) {\n          $currentTarget.css({\n            \"background-color\": backgroundColor,\n          });\n        }\n      }\n    }\n  }\n}", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(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)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\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}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n", "import { EMPTY_ARR } from \"./constants\";\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name.indexOf('-') != -1)) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\nexport let inEvent = false;\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tinEvent = true;\n\ttry {\n\t\treturn this._listeners[e.type + false](\n\t\t\toptions.event ? options.event(e) : e\n\t\t);\n\t} finally {\n\t\tinEvent = false;\n\t}\n}\n\nfunction eventProxyCapture(e) {\n\tinEvent = true;\n\ttry {\n\t\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n\t} finally {\n\t\tinEvent = false;\n\t}\n}\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { inEvent } from './diff/props';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst microTick =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\nfunction defer(cb) {\n\tif (inEvent) {\n\t\tsetTimeout(cb);\n\t} else {\n\t\tmicroTick(cb);\n\t}\n}\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getLastDom(oldParentVNode).nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\tfor (\n\t\t\t\tlet sibDom = oldDom, j = 0;\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\n\t\t\t\tj += 1\n\t\t\t) {\n\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\tnextDom = oldDom;\n\t\t}\n\t}\n\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t// See more detail in create-element.js:createVNode\n\tif (nextDom !== undefined) {\n\t\toldDom = nextDom;\n\t} else {\n\t\toldDom = newDom.nextSibling;\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {import('../internal').VNode} vnode\n */\nfunction getLastDom(vnode) {\n\tif (vnode.type == null || typeof vnode.type === 'string') {\n\t\treturn vnode._dom;\n\t}\n\n\tif (vnode._children) {\n\t\tfor (let i = vnode._children.length - 1; i >= 0; i--) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child) {\n\t\t\t\tlet lastDom = getLastDom(child);\n\t\t\t\tif (lastDom) {\n\t\t\t\t\treturn lastDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = (\n\t\t(!isHydrating && replaceNode) ||\n\t\tparentDom\n\t)._children = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\nlet EMPTY = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = EMPTY;\n\t\t\t\thookItem._nextValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\tif (hookItem._pendingValue !== EMPTY) {\n\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t\thookItem._pendingValue = EMPTY;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({ _pendingValue: EMPTY });\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater<any>} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer<any, any>} reducer\n * @param {import('./index').StateUpdater<any>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tconst prevScu = currentComponent.shouldComponentUpdate;\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\tcurrentComponent.shouldComponentUpdate = function(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\tconst stateHooks = hookState._component.__hooks._list.filter(\n\t\t\t\t\tx => x._component\n\t\t\t\t);\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t};\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any, errorInfo: import('preact').ErrorInfo) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\nexport function useId() {\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n", "/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n/**\n * Check if two values are the same value\n * @param {*} x\n * @param {*} y\n * @returns {boolean}\n */\nexport function is(x, y) {\n\treturn (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\n", "import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p) {\n\tthis.props = p;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n", "import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n", "import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref || null);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n", "import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n", "import { Component, createElement, options, Fragment } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode, errorInfo) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode, errorInfo);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function(vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._hydrating === true) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.insertBefore(vnode._dom, vnode._nextDom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tconst wasHydrating = suspendingVNode._hydrating === true;\n\tif (!c._pendingSuspensionCount++ && !wasHydrating) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function() {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._hydrating = null;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n", "import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t//    each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t//    The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t//    componentDidMount.\n\tthis._map.forEach((node, child) => {\n\t\tresolve(this, child, node);\n\t});\n};\n", "import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function() {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props._vnode) {\n\t\tif (!_this._temp) {\n\t\t\t_this._container = container;\n\n\t\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t\t_this._temp = {\n\t\t\t\tnodeType: 1,\n\t\t\t\tparentNode: container,\n\t\t\t\tchildNodes: [],\n\t\t\t\tappendChild(child) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tinsertBefore(child, before) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tremoveChild(child) {\n\t\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t\t_this._container.removeChild(child);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// Render our wrapping element into temp.\n\t\trender(\n\t\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t\t_this._temp\n\t\t);\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._temp) {\n\t\t_this.componentWillUnmount();\n\t}\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\tconst el = createElement(Portal, { _vnode: vnode, _container: container });\n\tel.containerInfo = container;\n\treturn el;\n}\n", "import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/i\n\t\t: /fil|che|ra/i\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\tlet normalizedProps = props;\n\n\t// only normalize props on Element nodes\n\tif (typeof type === 'string') {\n\t\tconst nonCustomElement = type.indexOf('-') === -1;\n\t\tnormalizedProps = {};\n\n\t\tfor (let i in props) {\n\t\t\tlet value = props[i];\n\n\t\t\tif (IS_DOM && i === 'children' && type === 'noscript') {\n\t\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t\tcontinue;\n\t\t\t} else if (i === 'value' && 'defaultValue' in props && value == null) {\n\t\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t\t// a default value\n\t\t\t\tcontinue;\n\t\t\t} else if (\n\t\t\t\ti === 'defaultValue' &&\n\t\t\t\t'value' in props &&\n\t\t\t\tprops.value == null\n\t\t\t) {\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\t\ti = 'value';\n\t\t\t} else if (i === 'download' && value === true) {\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t\t// value will be used as the file name and the file will be called\n\t\t\t\t// \"true\" upon downloading it.\n\t\t\t\tvalue = '';\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\ti = 'oninput';\n\t\t\t} else if (/^onfocus$/i.test(i)) {\n\t\t\t\ti = 'onfocusin';\n\t\t\t} else if (/^onblur$/i.test(i)) {\n\t\t\t\ti = 'onfocusout';\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t} else if (nonCustomElement && CAMEL_PROPS.test(i)) {\n\t\t\t\ti = i.replace(/[A-Z0-9]/g, '-$&').toLowerCase();\n\t\t\t} else if (value === null) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\n\t\t\t// Add support for onInput and onChange, see #3561\n\t\t\t// if we have an oninput prop already change it to oninputCapture\n\t\t\tif (/^oninput$/i.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t\tif (normalizedProps[i]) {\n\t\t\t\t\ti = 'oninputCapture';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnormalizedProps[i] = value;\n\t\t}\n\n\t\t// Add support for array select values: <select multiple value={[]} />\n\t\tif (\n\t\t\ttype == 'select' &&\n\t\t\tnormalizedProps.multiple &&\n\t\t\tArray.isArray(normalizedProps.value)\n\t\t) {\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t\t});\n\t\t}\n\n\t\t// Adding support for defaultValue in select tag\n\t\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tif (normalizedProps.multiple) {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t\t} else {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvnode.props = normalizedProps;\n\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) normalizedProps.class = props.className;\n\t\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\n\t\t}\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function(vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n", "import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport { is } from './util';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '17.0.2'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport function startTransition(cb) {\n\tcb();\n}\n\nexport function useDeferredValue(val) {\n\treturn val;\n}\n\nexport function useTransition() {\n\treturn [false, startTransition];\n}\n\n// TODO: in theory this should be done after a VNode is diffed as we want to insert\n// styles/... before it attaches\nexport const useInsertionEffect = useLayoutEffect;\n\n/**\n * This is taken from https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L84\n * on a high level this cuts out the warnings, ... and attempts a smaller implementation\n */\nexport function useSyncExternalStore(subscribe, getSnapshot) {\n\tconst value = getSnapshot();\n\n\tconst [{ _instance }, forceUpdate] = useState({\n\t\t_instance: { _value: value, _getSnapshot: getSnapshot }\n\t});\n\n\tuseLayoutEffect(() => {\n\t\t_instance._value = value;\n\t\t_instance._getSnapshot = getSnapshot;\n\n\t\tif (!is(_instance._value, getSnapshot())) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\t}, [subscribe, value, getSnapshot]);\n\n\tuseEffect(() => {\n\t\tif (!is(_instance._value, _instance._getSnapshot())) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\n\t\treturn subscribe(() => {\n\t\t\tif (!is(_instance._value, _instance._getSnapshot())) {\n\t\t\t\tforceUpdate({ _instance });\n\t\t\t}\n\t\t});\n\t}, [subscribe]);\n\n\treturn value;\n}\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseInsertionEffect,\n\tuseTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tstartTransition,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n", "import { __extends } from 'tslib';\nimport * as preact from 'preact';\nimport * as preactCompat from 'preact/compat';\n\nvar globalObj = typeof globalThis !== 'undefined' ? globalThis : window; // // TODO: streamline when killing IE11 support\nif (globalObj.FullCalendarVDom) {\n    console.warn('FullCalendar VDOM already loaded');\n}\nelse {\n    globalObj.FullCalendarVDom = {\n        Component: preact.Component,\n        createElement: preact.createElement,\n        render: preact.render,\n        createRef: preact.createRef,\n        Fragment: preact.Fragment,\n        createContext: createContext,\n        createPortal: preactCompat.createPortal,\n        flushSync: flushSync,\n        unmountComponentAtNode: unmountComponentAtNode,\n    };\n}\n// HACKS...\n// TODO: lock version\n// TODO: link gh issues\nfunction flushSync(runBeforeFlush) {\n    runBeforeFlush();\n    var oldDebounceRendering = preact.options.debounceRendering; // orig\n    var callbackQ = [];\n    function execCallbackSync(callback) {\n        callbackQ.push(callback);\n    }\n    preact.options.debounceRendering = execCallbackSync;\n    preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n    while (callbackQ.length) {\n        callbackQ.shift()();\n    }\n    preact.options.debounceRendering = oldDebounceRendering;\n}\nvar FakeComponent = /** @class */ (function (_super) {\n    __extends(FakeComponent, _super);\n    function FakeComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FakeComponent.prototype.render = function () { return preact.createElement('div', {}); };\n    FakeComponent.prototype.componentDidMount = function () { this.setState({}); };\n    return FakeComponent;\n}(preact.Component));\nfunction createContext(defaultValue) {\n    var ContextType = preact.createContext(defaultValue);\n    var origProvider = ContextType.Provider;\n    ContextType.Provider = function () {\n        var _this = this;\n        var isNew = !this.getChildContext;\n        var children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        if (isNew) {\n            var subs_1 = [];\n            this.shouldComponentUpdate = function (_props) {\n                if (_this.props.value !== _props.value) {\n                    subs_1.forEach(function (c) {\n                        c.context = _props.value;\n                        c.forceUpdate();\n                    });\n                }\n            };\n            this.sub = function (c) {\n                subs_1.push(c);\n                var old = c.componentWillUnmount;\n                c.componentWillUnmount = function () {\n                    subs_1.splice(subs_1.indexOf(c), 1);\n                    old && old.call(c);\n                };\n            };\n        }\n        return children;\n    };\n    return ContextType;\n}\nfunction unmountComponentAtNode(node) {\n    preact.render(null, node);\n}\n", "/// <reference types=\"@fullcalendar/core-preact\" />\nif (typeof FullCalendarVDom === 'undefined') {\n    throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');\n}\nvar Component = FullCalendarVDom.Component;\nvar createElement = FullCalendarVDom.createElement;\nvar render = FullCalendarVDom.render;\nvar createRef = FullCalendarVDom.createRef;\nvar Fragment = FullCalendarVDom.Fragment;\nvar createContext = FullCalendarVDom.createContext;\nvar createPortal = FullCalendarVDom.createPortal;\nvar flushSync = FullCalendarVDom.flushSync;\nvar unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode;\n/* eslint-enable */\n\nexport { Component, Fragment, createContext, createElement, createPortal, createRef, flushSync, render, unmountComponentAtNode };\n", "import { EventSource } from '../structs/event-source'\nimport { CalendarContext } from '../CalendarContext'\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\n\nexport class EventSourceApi {\n  constructor(\n    private context: CalendarContext,\n    public internalEventSource: EventSource<any>, // rename?\n  ) {\n  }\n\n  remove() {\n    this.context.dispatch({\n      type: 'REMOVE_EVENT_SOURCE',\n      sourceId: this.internalEventSource.sourceId,\n    })\n  }\n\n  refetch() {\n    this.context.dispatch({\n      type: 'FETCH_EVENT_SOURCES',\n      sourceIds: [this.internalEventSource.sourceId],\n      isRefetch: true,\n    })\n  }\n\n  get id(): string {\n    return this.internalEventSource.publicId\n  }\n\n  get url(): string {\n    return this.internalEventSource.meta.url\n  }\n\n  get format(): string {\n    return this.internalEventSource.meta.format // TODO: bad. not guaranteed\n  }\n}\n", "import { Dictionary } from '../options'\n\nexport function removeElement(el: HTMLElement) { // removes nodes in addition to elements. bad name\n  if (el.parentNode) {\n    el.parentNode.removeChild(el)\n  }\n}\n\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\n\nexport function elementClosest(el: HTMLElement, selector: string): HTMLElement {\n  if (el.closest) {\n    return el.closest(selector)\n\n  // really bad fallback for IE\n  // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n  }\n  if (!document.documentElement.contains(el)) {\n    return null\n  }\n  do {\n    if (elementMatches(el, selector)) {\n      return el\n    }\n    el = (el.parentElement || el.parentNode) as HTMLElement\n  } while (el !== null && el.nodeType === 1)\n  return null\n}\n\nexport function elementMatches(el: HTMLElement, selector: string): HTMLElement {\n  let method = el.matches || (el as any).matchesSelector || (el as any).msMatchesSelector\n\n  return method.call(el, selector)\n}\n\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nexport function findElements(container: HTMLElement[] | HTMLElement | NodeListOf<HTMLElement>, selector: string): HTMLElement[] {\n  let containers = container instanceof HTMLElement ? [container] : container\n  let allMatches: HTMLElement[] = []\n\n  for (let i = 0; i < containers.length; i += 1) {\n    let matches = containers[i].querySelectorAll(selector)\n\n    for (let j = 0; j < matches.length; j += 1) {\n      allMatches.push(matches[j] as HTMLElement)\n    }\n  }\n\n  return allMatches\n}\n\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nexport function findDirectChildren(parent: HTMLElement[] | HTMLElement, selector?: string): HTMLElement[] {\n  let parents = parent instanceof HTMLElement ? [parent] : parent\n  let allMatches = []\n\n  for (let i = 0; i < parents.length; i += 1) {\n    let childNodes = parents[i].children // only ever elements\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      let childNode = childNodes[j]\n\n      if (!selector || elementMatches(childNode as HTMLElement, selector)) {\n        allMatches.push(childNode)\n      }\n    }\n  }\n\n  return allMatches\n}\n\n// Style\n// ----------------------------------------------------------------------------------------------------------------\n\nconst PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i\n\nexport function applyStyle(el: HTMLElement, props: Dictionary) {\n  for (let propName in props) {\n    applyStyleProp(el, propName, props[propName])\n  }\n}\n\nexport function applyStyleProp(el: HTMLElement, name: string, val) {\n  if (val == null) {\n    el.style[name] = ''\n  } else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n    el.style[name] = `${val}px`\n  } else {\n    el.style[name] = val\n  }\n}\n\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nexport function getEventTargetViaRoot(ev: Event) {\n  return ev.composedPath?.()[0] ?? ev.target\n}\n\n// Shadow DOM consuderations\n// ----------------------------------------------------------------------------------------------------------------\n\nexport function getElRoot(el: HTMLElement): ShadowRoot | Document {\n  return el.getRootNode ? el.getRootNode() as ShadowRoot : document\n}\n\n// Unique ID for DOM attribute\n\nlet guid = 0\n\nexport function getUniqueDomId() {\n  guid += 1\n  return 'fc-dom-' + guid\n}\n", "import { elementClosest } from './dom-manip'\nimport { VUIEvent } from '../vdom'\n\n// Stops a mouse/touch event from doing it's native browser action\nexport function preventDefault(ev) {\n  ev.preventDefault()\n}\n\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\n\nexport function buildDelegationHandler<EventType extends (Event | VUIEvent)>(\n  selector: string,\n  handler: (ev: EventType, matchedTarget: HTMLElement) => void,\n) {\n  return (ev: EventType) => {\n    let matchedChild = elementClosest(ev.target as HTMLElement, selector)\n\n    if (matchedChild) {\n      handler.call(matchedChild, ev, matchedChild)\n    }\n  }\n}\n\nexport function listenBySelector(\n  container: HTMLElement,\n  eventType: string,\n  selector: string,\n  handler: (ev: Event, matchedTarget: HTMLElement) => void,\n) {\n  let attachedHandler = buildDelegationHandler(selector, handler)\n\n  container.addEventListener(eventType, attachedHandler)\n\n  return () => {\n    container.removeEventListener(eventType, attachedHandler)\n  }\n}\n\nexport function listenToHoverBySelector(\n  container: HTMLElement,\n  selector: string,\n  onMouseEnter: (ev: Event, matchedTarget: HTMLElement) => void,\n  onMouseLeave: (ev: Event, matchedTarget: HTMLElement) => void,\n) {\n  let currentMatchedChild\n\n  return listenBySelector(container, 'mouseover', selector, (mouseOverEv, matchedChild) => {\n    if (matchedChild !== currentMatchedChild) {\n      currentMatchedChild = matchedChild\n      onMouseEnter(mouseOverEv, matchedChild)\n\n      let realOnMouseLeave = (mouseLeaveEv) => {\n        currentMatchedChild = null\n        onMouseLeave(mouseLeaveEv, matchedChild)\n        matchedChild.removeEventListener('mouseleave', realOnMouseLeave)\n      }\n\n      // listen to the next mouseleave, and then unattach\n      matchedChild.addEventListener('mouseleave', realOnMouseLeave)\n    }\n  })\n}\n\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\n\nconst transitionEventNames = [\n  'webkitTransitionEnd',\n  'otransitionend',\n  'oTransitionEnd',\n  'msTransitionEnd',\n  'transitionend',\n]\n\n// triggered only when the next single subsequent transition finishes\nexport function whenTransitionDone(el: HTMLElement, callback: (ev: Event) => void) {\n  let realCallback = (ev) => {\n    callback(ev)\n    transitionEventNames.forEach((eventName) => {\n      el.removeEventListener(eventName, realCallback)\n    })\n  }\n\n  transitionEventNames.forEach((eventName) => {\n    el.addEventListener(eventName, realCallback) // cross-browser way to determine when the transition finishes\n  })\n}\n\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\n\nexport function createAriaClickAttrs(handler: ((ev: UIEvent) => void)) {\n  return {\n    onClick: handler,\n    ...createAriaKeyboardAttrs(handler),\n  }\n}\n\nexport function createAriaKeyboardAttrs(handler: ((ev: UIEvent) => void)) {\n  return {\n    tabIndex: 0,\n    onKeyDown(ev: KeyboardEvent) {\n      if (ev.key === 'Enter' || ev.key === ' ') {\n        handler(ev)\n        ev.preventDefault() // if space, don't scroll down page\n      }\n    },\n  }\n}\n", "import { preventDefault } from './dom-event'\n\nexport type GenericHash = { [key: string]: any } // already did this somewhere\n\nlet guidNumber = 0\n\nexport function guid() {\n  guidNumber += 1\n  return String(guidNumber)\n}\n\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n// Make the mouse cursor express that an event is not allowed in the current area\nexport function disableCursor() {\n  document.body.classList.add('fc-not-allowed')\n}\n\n// Returns the mouse cursor to its original look\nexport function enableCursor() {\n  document.body.classList.remove('fc-not-allowed')\n}\n\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function preventSelection(el: HTMLElement) {\n  el.classList.add('fc-unselectable')\n  el.addEventListener('selectstart', preventDefault)\n}\n\nexport function allowSelection(el: HTMLElement) {\n  el.classList.remove('fc-unselectable')\n  el.removeEventListener('selectstart', preventDefault)\n}\n\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function preventContextMenu(el: HTMLElement) {\n  el.addEventListener('contextmenu', preventDefault)\n}\n\nexport function allowContextMenu(el: HTMLElement) {\n  el.removeEventListener('contextmenu', preventDefault)\n}\n\n/* Object Ordering by Field\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport interface OrderSpec<Subject> {\n  field?: string\n  order?: number\n  func?: FieldSpecInputFunc<Subject>\n}\n\nexport type FieldSpecInput<Subject> = string | string[] | FieldSpecInputFunc<Subject> | FieldSpecInputFunc<Subject>[]\nexport type FieldSpecInputFunc<Subject> = (a: Subject, b: Subject) => number\n\nexport function parseFieldSpecs<Subject>(input: FieldSpecInput<Subject>): OrderSpec<Subject>[] {\n  let specs: OrderSpec<Subject>[] = []\n  let tokens = []\n  let i\n  let token\n\n  if (typeof input === 'string') {\n    tokens = input.split(/\\s*,\\s*/)\n  } else if (typeof input === 'function') {\n    tokens = [input]\n  } else if (Array.isArray(input)) {\n    tokens = input\n  }\n\n  for (i = 0; i < tokens.length; i += 1) {\n    token = tokens[i]\n\n    if (typeof token === 'string') {\n      specs.push(\n        token.charAt(0) === '-' ?\n          { field: token.substring(1), order: -1 } :\n          { field: token, order: 1 },\n      )\n    } else if (typeof token === 'function') {\n      specs.push({ func: token })\n    }\n  }\n\n  return specs\n}\n\nexport function compareByFieldSpecs<Subject>(obj0: Subject, obj1: Subject, fieldSpecs: OrderSpec<Subject>[]): number {\n  let i\n  let cmp\n\n  for (i = 0; i < fieldSpecs.length; i += 1) {\n    cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i])\n    if (cmp) {\n      return cmp\n    }\n  }\n\n  return 0\n}\n\nexport function compareByFieldSpec<Subject>(obj0: Subject, obj1: Subject, fieldSpec: OrderSpec<Subject>): number {\n  if (fieldSpec.func) {\n    return fieldSpec.func(obj0, obj1)\n  }\n\n  return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n    * (fieldSpec.order || 1)\n}\n\nexport function flexibleCompare(a, b) {\n  if (!a && !b) {\n    return 0\n  }\n  if (b == null) {\n    return -1\n  }\n  if (a == null) {\n    return 1\n  }\n  if (typeof a === 'string' || typeof b === 'string') {\n    return String(a).localeCompare(String(b))\n  }\n  return a - b\n}\n\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function padStart(val, len) { // doesn't work with total length more than 3\n  let s = String(val)\n  return '000'.substr(0, len - s.length) + s\n}\n\nexport function formatWithOrdinals<Args extends any[]>(\n  formatter: string | ((...formatterArgs: Args) => string),\n  args: Args,\n  fallbackText: string,\n) {\n  if (typeof formatter === 'function') {\n    return formatter(...args)\n  }\n  if (typeof formatter === 'string') { // non-blank string\n    return args.reduce((str, arg, index) => (\n      str.replace('$' + index, arg || '')\n    ), formatter)\n  }\n  return fallbackText\n}\n\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function compareNumbers(a, b) { // for .sort()\n  return a - b\n}\n\nexport function isInt(n) {\n  return n % 1 === 0\n}\n\n/* Weird Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function firstDefined(...args) {\n  for (let i = 0; i < args.length; i += 1) {\n    if (args[i] !== undefined) {\n      return args[i]\n    }\n  }\n  return undefined\n}\n\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function computeSmallestCellWidth(cellEl: HTMLElement) {\n  let allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame')\n  let contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion')\n\n  if (!allWidthEl) {\n    throw new Error('needs fc-scrollgrid-shrink-frame className') // TODO: use const\n  }\n  if (!contentWidthEl) {\n    throw new Error('needs fc-scrollgrid-shrink-cushion className')\n  }\n\n  return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n    contentWidthEl.getBoundingClientRect().width\n}\n", "import { Duration } from './duration'\n\nexport type DateMarker = Date\n\nexport const DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']\n\n// Adding\n\nexport function addWeeks(m: DateMarker, n: number) {\n  let a = dateToUtcArray(m)\n  a[2] += n * 7\n  return arrayToUtcDate(a)\n}\n\nexport function addDays(m: DateMarker, n: number) {\n  let a = dateToUtcArray(m)\n  a[2] += n\n  return arrayToUtcDate(a)\n}\n\nexport function addMs(m: DateMarker, n: number) {\n  let a = dateToUtcArray(m)\n  a[6] += n\n  return arrayToUtcDate(a)\n}\n\n// Diffing (all return floats)\n// TODO: why not use ranges?\n\nexport function diffWeeks(m0, m1) {\n  return diffDays(m0, m1) / 7\n}\n\nexport function diffDays(m0, m1) {\n  return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24)\n}\n\nexport function diffHours(m0, m1) {\n  return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60)\n}\n\nexport function diffMinutes(m0, m1) {\n  return (m1.valueOf() - m0.valueOf()) / (1000 * 60)\n}\n\nexport function diffSeconds(m0, m1) {\n  return (m1.valueOf() - m0.valueOf()) / 1000\n}\n\nexport function diffDayAndTime(m0: DateMarker, m1: DateMarker): Duration {\n  let m0day = startOfDay(m0)\n  let m1day = startOfDay(m1)\n\n  return {\n    years: 0,\n    months: 0,\n    days: Math.round(diffDays(m0day, m1day)),\n    milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),\n  }\n}\n\n// Diffing Whole Units\n\nexport function diffWholeWeeks(m0: DateMarker, m1: DateMarker): number {\n  let d = diffWholeDays(m0, m1)\n\n  if (d !== null && d % 7 === 0) {\n    return d / 7\n  }\n\n  return null\n}\n\nexport function diffWholeDays(m0: DateMarker, m1: DateMarker): number {\n  if (timeAsMs(m0) === timeAsMs(m1)) {\n    return Math.round(diffDays(m0, m1))\n  }\n  return null\n}\n\n// Start-Of\n\nexport function startOfDay(m: DateMarker): DateMarker {\n  return arrayToUtcDate([\n    m.getUTCFullYear(),\n    m.getUTCMonth(),\n    m.getUTCDate(),\n  ])\n}\n\nexport function startOfHour(m: DateMarker) {\n  return arrayToUtcDate([\n    m.getUTCFullYear(),\n    m.getUTCMonth(),\n    m.getUTCDate(),\n    m.getUTCHours(),\n  ])\n}\n\nexport function startOfMinute(m: DateMarker) {\n  return arrayToUtcDate([\n    m.getUTCFullYear(),\n    m.getUTCMonth(),\n    m.getUTCDate(),\n    m.getUTCHours(),\n    m.getUTCMinutes(),\n  ])\n}\n\nexport function startOfSecond(m: DateMarker) {\n  return arrayToUtcDate([\n    m.getUTCFullYear(),\n    m.getUTCMonth(),\n    m.getUTCDate(),\n    m.getUTCHours(),\n    m.getUTCMinutes(),\n    m.getUTCSeconds(),\n  ])\n}\n\n// Week Computation\n\nexport function weekOfYear(marker, dow, doy) {\n  let y = marker.getUTCFullYear()\n  let w = weekOfGivenYear(marker, y, dow, doy)\n\n  if (w < 1) {\n    return weekOfGivenYear(marker, y - 1, dow, doy)\n  }\n\n  let nextW = weekOfGivenYear(marker, y + 1, dow, doy)\n  if (nextW >= 1) {\n    return Math.min(w, nextW)\n  }\n\n  return w\n}\n\nfunction weekOfGivenYear(marker, year, dow, doy) {\n  let firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)])\n  let dayStart = startOfDay(marker)\n  let days = Math.round(diffDays(firstWeekStart, dayStart))\n\n  return Math.floor(days / 7) + 1 // zero-indexed\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n  // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n  let fwd = 7 + dow - doy\n\n  // first-week day local weekday -- which local weekday is fwd\n  let fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7\n\n  return -fwdlw + fwd - 1\n}\n\n// Array Conversion\n\nexport function dateToLocalArray(date) {\n  return [\n    date.getFullYear(),\n    date.getMonth(),\n    date.getDate(),\n    date.getHours(),\n    date.getMinutes(),\n    date.getSeconds(),\n    date.getMilliseconds(),\n  ]\n}\n\nexport function arrayToLocalDate(a) {\n  return new Date(\n    a[0],\n    a[1] || 0,\n    a[2] == null ? 1 : a[2], // day of month\n    a[3] || 0,\n    a[4] || 0,\n    a[5] || 0,\n  )\n}\n\nexport function dateToUtcArray(date) {\n  return [\n    date.getUTCFullYear(),\n    date.getUTCMonth(),\n    date.getUTCDate(),\n    date.getUTCHours(),\n    date.getUTCMinutes(),\n    date.getUTCSeconds(),\n    date.getUTCMilliseconds(),\n  ]\n}\n\nexport function arrayToUtcDate(a) {\n  // according to web standards (and Safari), a month index is required.\n  // massage if only given a year.\n  if (a.length === 1) {\n    a = a.concat([0])\n  }\n\n  return new Date(Date.UTC(...(a as [any, any])))\n}\n\n// Other Utils\n\nexport function isValidDate(m: DateMarker) {\n  return !isNaN(m.valueOf())\n}\n\nexport function timeAsMs(m: DateMarker) {\n  return m.getUTCHours() * 1000 * 60 * 60 +\n    m.getUTCMinutes() * 1000 * 60 +\n    m.getUTCSeconds() * 1000 +\n    m.getUTCMilliseconds()\n}\n", "import { DateRange } from '../datelib/date-range'\nimport { guid } from '../util/misc'\n\nexport interface EventInstance {\n  instanceId: string\n  defId: string\n  range: DateRange\n  forcedStartTzo: number | null\n  forcedEndTzo: number | null\n}\n\nexport type EventInstanceHash = { [instanceId: string]: EventInstance }\n\nexport function createEventInstance(\n  defId: string,\n  range: DateRange,\n  forcedStartTzo?: number,\n  forcedEndTzo?: number,\n): EventInstance {\n  return {\n    instanceId: guid(),\n    defId,\n    range,\n    forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n    forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,\n  }\n}\n", "const { hasOwnProperty } = Object.prototype\n\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nexport function mergeProps(propObjs, complexPropsMap?): any {\n  let dest = {}\n\n  if (complexPropsMap) {\n    for (let name in complexPropsMap) {\n      let complexObjs = []\n\n      // collect the trailing object values, stopping when a non-object is discovered\n      for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n        let val = propObjs[i][name]\n\n        if (typeof val === 'object' && val) { // non-null object\n          complexObjs.unshift(val)\n        } else if (val !== undefined) {\n          dest[name] = val // if there were no objects, this value will be used\n          break\n        }\n      }\n\n      // if the trailing values were objects, use the merged value\n      if (complexObjs.length) {\n        dest[name] = mergeProps(complexObjs)\n      }\n    }\n  }\n\n  // copy values into the destination, going from last to first\n  for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n    let props = propObjs[i]\n\n    for (let name in props) {\n      if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n        dest[name] = props[name]\n      }\n    }\n  }\n\n  return dest\n}\n\nexport function filterHash(hash, func) {\n  let filtered = {}\n\n  for (let key in hash) {\n    if (func(hash[key], key)) {\n      filtered[key] = hash[key]\n    }\n  }\n\n  return filtered\n}\n\nexport function mapHash<InputItem, OutputItem>(\n  hash: { [key: string]: InputItem },\n  func: (input: InputItem, key: string) => OutputItem,\n): { [key: string]: OutputItem } {\n  let newHash = {}\n\n  for (let key in hash) {\n    newHash[key] = func(hash[key], key)\n  }\n\n  return newHash\n}\n\nexport function arrayToHash(a): { [key: string]: true } { // TODO: rename to strinArrayToHash or something\n  let hash = {}\n\n  for (let item of a) {\n    hash[item] = true\n  }\n\n  return hash\n}\n\nexport function buildHashFromArray<Item, ItemRes>(a: Item[], func: (item: Item, index: number) => [ string, ItemRes ]) {\n  let hash: { [key: string]: ItemRes } = {}\n\n  for (let i = 0; i < a.length; i += 1) {\n    let tuple = func(a[i], i)\n\n    hash[tuple[0]] = tuple[1]\n  }\n\n  return hash\n}\n\nexport function hashValuesToArray(obj) { // can't use Object.values yet because of no IE support\n  let a = []\n\n  for (let key in obj) {\n    a.push(obj[key])\n  }\n\n  return a\n}\n\nexport function isPropsEqual(obj0, obj1) { // TODO: merge with compareObjs\n  if (obj0 === obj1) {\n    return true\n  }\n\n  for (let key in obj0) {\n    if (hasOwnProperty.call(obj0, key)) {\n      if (!(key in obj1)) {\n        return false\n      }\n    }\n  }\n\n  for (let key in obj1) {\n    if (hasOwnProperty.call(obj1, key)) {\n      if (obj0[key] !== obj1[key]) {\n        return false\n      }\n    }\n  }\n\n  return true\n}\n\nexport function getUnequalProps(obj0, obj1) {\n  let keys: string[] = []\n\n  for (let key in obj0) {\n    if (hasOwnProperty.call(obj0, key)) {\n      if (!(key in obj1)) {\n        keys.push(key)\n      }\n    }\n  }\n\n  for (let key in obj1) {\n    if (hasOwnProperty.call(obj1, key)) {\n      if (obj0[key] !== obj1[key]) {\n        keys.push(key)\n      }\n    }\n  }\n\n  return keys\n}\n\nexport type EqualityFunc<T> = (a: T, b: T) => boolean\nexport type EqualityThing<T> = EqualityFunc<T> | true\n\nexport type EqualityFuncs<ObjType> = { // not really just a \"func\" anymore\n  [K in keyof ObjType]?: EqualityThing<ObjType[K]>\n}\n\nexport function compareObjs(oldProps, newProps, equalityFuncs: EqualityFuncs<any> = {}) {\n  if (oldProps === newProps) {\n    return true\n  }\n\n  for (let key in newProps) {\n    if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {\n      // equal\n    } else {\n      return false\n    }\n  }\n\n  // check for props that were omitted in the new\n  for (let key in oldProps) {\n    if (!(key in newProps)) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual<T>(val0: T, val1: T, comparator: EqualityThing<T>) {\n  if (val0 === val1 || comparator === true) {\n    return true\n  }\n  if (comparator) {\n    return comparator(val0, val1)\n  }\n  return false\n}\n\nexport function collectFromHash<Item>(\n  hash: { [key: string]: Item },\n  startIndex = 0,\n  endIndex?: number,\n  step = 1,\n) {\n  let res: Item[] = []\n\n  if (endIndex == null) {\n    endIndex = Object.keys(hash).length\n  }\n\n  for (let i = startIndex; i < endIndex; i += step) {\n    let val = hash[i]\n\n    if (val !== undefined) { // will disregard undefined for sparse arrays\n      res.push(val)\n    }\n  }\n\n  return res\n}\n", "import { EventDef } from './event-def'\nimport { EventInstance, createEventInstance } from './event-instance'\nimport { DateRange } from '../datelib/date-range'\nimport { DateEnv } from '../datelib/env'\nimport { Duration } from '../datelib/duration'\nimport { DateMarker, startOfDay } from '../datelib/marker'\nimport { EventStore } from './event-store'\nimport { CalendarContext } from '../CalendarContext'\nimport { filterHash } from '../util/object'\nimport { EventRefined } from './event-parse'\n\n/*\nThe plugin system for defining how a recurring event is expanded into individual instances.\n*/\n\nexport interface ParsedRecurring<RecurringData> {\n  typeData: RecurringData\n  allDayGuess: boolean | null\n  duration: Duration | null // signals hasEnd\n}\n\nexport interface RecurringType<RecurringData> {\n  parse: (refined: EventRefined, dateEnv: DateEnv) => ParsedRecurring<RecurringData> | null // TODO: rename to post-process or something\n  expand: (typeData: any, framingRange: DateRange, dateEnv: DateEnv) => DateMarker[]\n}\n\nexport function parseRecurring(\n  refined: EventRefined,\n  defaultAllDay: boolean | null,\n  dateEnv: DateEnv,\n  recurringTypes: RecurringType<any>[],\n) {\n  for (let i = 0; i < recurringTypes.length; i += 1) {\n    let parsed = recurringTypes[i].parse(refined, dateEnv)\n\n    if (parsed) {\n      let { allDay } = refined\n      if (allDay == null) {\n        allDay = defaultAllDay\n        if (allDay == null) {\n          allDay = parsed.allDayGuess\n          if (allDay == null) {\n            allDay = false\n          }\n        }\n      }\n\n      return {\n        allDay,\n        duration: parsed.duration,\n        typeData: parsed.typeData,\n        typeId: i,\n      }\n    }\n  }\n\n  return null\n}\n\nexport function expandRecurring(eventStore: EventStore, framingRange: DateRange, context: CalendarContext): EventStore {\n  let { dateEnv, pluginHooks, options } = context\n  let { defs, instances } = eventStore\n\n  // remove existing recurring instances\n  // TODO: bad. always expand events as a second step\n  instances = filterHash(instances, (instance: EventInstance) => !defs[instance.defId].recurringDef)\n\n  for (let defId in defs) {\n    let def = defs[defId]\n\n    if (def.recurringDef) {\n      let { duration } = def.recurringDef\n\n      if (!duration) {\n        duration = def.allDay ?\n          options.defaultAllDayEventDuration :\n          options.defaultTimedEventDuration\n      }\n\n      let starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes)\n\n      for (let start of starts) {\n        let instance = createEventInstance(defId, {\n          start,\n          end: dateEnv.add(start, duration),\n        })\n        instances[instance.instanceId] = instance\n      }\n    }\n  }\n\n  return { defs, instances }\n}\n\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(\n  eventDef: EventDef,\n  duration: Duration,\n  framingRange: DateRange,\n  dateEnv: DateEnv,\n  recurringTypes: RecurringType<any>[],\n): DateMarker[] {\n  let typeDef = recurringTypes[eventDef.recurringDef.typeId]\n  let markers = typeDef.expand(\n    eventDef.recurringDef.typeData,\n    {\n      start: dateEnv.subtract(framingRange.start, duration), // for when event starts before framing range and goes into\n      end: framingRange.end,\n    },\n    dateEnv,\n  )\n\n  // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n  if (eventDef.allDay) {\n    markers = markers.map(startOfDay)\n  }\n\n  return markers\n}\n", "import { isInt } from '../util/misc'\n\nexport type DurationInput = DurationObjectInput | string | number\n\nexport interface DurationObjectInput {\n  years?: number\n  year?: number\n  months?: number\n  month?: number\n  weeks?: number\n  week?: number\n  days?: number\n  day?: number\n  hours?: number\n  hour?: number\n  minutes?: number\n  minute?: number\n  seconds?: number\n  second?: number\n  milliseconds?: number\n  millisecond?: number\n  ms?: number\n}\n\nexport interface Duration {\n  years: number\n  months: number\n  days: number\n  milliseconds: number\n  specifiedWeeks?: boolean\n}\n\nconst INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds']\nconst PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/\n\n// Parsing and Creation\n\nexport function createDuration(input: DurationInput, unit?: string): Duration | null {\n  if (typeof input === 'string') {\n    return parseString(input)\n  }\n\n  if (typeof input === 'object' && input) { // non-null object\n    return parseObject(input)\n  }\n\n  if (typeof input === 'number') {\n    return parseObject({ [unit || 'milliseconds']: input })\n  }\n  return null\n}\n\nfunction parseString(s: string): Duration {\n  let m = PARSE_RE.exec(s)\n  if (m) {\n    let sign = m[1] ? -1 : 1\n    return {\n      years: 0,\n      months: 0,\n      days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n      milliseconds: sign * (\n        (m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n        (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n        (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n        (m[6] ? parseInt(m[6], 10) : 0) // ms\n      ),\n    }\n  }\n  return null\n}\n\nfunction parseObject(obj: DurationObjectInput): Duration {\n  let duration: Duration = {\n    years: obj.years || obj.year || 0,\n    months: obj.months || obj.month || 0,\n    days: obj.days || obj.day || 0,\n    milliseconds:\n      (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n      (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n      (obj.seconds || obj.second || 0) * 1000 + // seconds\n      (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms\n  }\n\n  let weeks = obj.weeks || obj.week\n  if (weeks) {\n    duration.days += weeks * 7\n    duration.specifiedWeeks = true\n  }\n\n  return duration\n}\n\n// Equality\n\nexport function durationsEqual(d0: Duration, d1: Duration): boolean {\n  return d0.years === d1.years &&\n    d0.months === d1.months &&\n    d0.days === d1.days &&\n    d0.milliseconds === d1.milliseconds\n}\n\nexport function asCleanDays(dur: Duration) {\n  if (!dur.years && !dur.months && !dur.milliseconds) {\n    return dur.days\n  }\n  return 0\n}\n\n// Simple Math\n\nexport function addDurations(d0: Duration, d1: Duration) {\n  return {\n    years: d0.years + d1.years,\n    months: d0.months + d1.months,\n    days: d0.days + d1.days,\n    milliseconds: d0.milliseconds + d1.milliseconds,\n  }\n}\n\nexport function subtractDurations(d1: Duration, d0: Duration): Duration {\n  return {\n    years: d1.years - d0.years,\n    months: d1.months - d0.months,\n    days: d1.days - d0.days,\n    milliseconds: d1.milliseconds - d0.milliseconds,\n  }\n}\n\nexport function multiplyDuration(d: Duration, n: number) {\n  return {\n    years: d.years * n,\n    months: d.months * n,\n    days: d.days * n,\n    milliseconds: d.milliseconds * n,\n  }\n}\n\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\n\nexport function asRoughYears(dur: Duration) {\n  return asRoughDays(dur) / 365\n}\n\nexport function asRoughMonths(dur: Duration) {\n  return asRoughDays(dur) / 30\n}\n\nexport function asRoughDays(dur: Duration) {\n  return asRoughMs(dur) / 864e5\n}\n\nexport function asRoughHours(dur: Duration) {\n  return asRoughMs(dur) / (1000 * 60 * 60)\n}\n\nexport function asRoughMinutes(dur: Duration) {\n  return asRoughMs(dur) / (1000 * 60)\n}\n\nexport function asRoughSeconds(dur: Duration) {\n  return asRoughMs(dur) / 1000\n}\n\nexport function asRoughMs(dur: Duration) {\n  return dur.years * (365 * 864e5) +\n    dur.months * (30 * 864e5) +\n    dur.days * 864e5 +\n    dur.milliseconds\n}\n\n// Advanced Math\n\nexport function wholeDivideDurations(numerator: Duration, denominator: Duration): number {\n  let res = null\n\n  for (let i = 0; i < INTERNAL_UNITS.length; i += 1) {\n    let unit = INTERNAL_UNITS[i]\n\n    if (denominator[unit]) {\n      let localRes = numerator[unit] / denominator[unit]\n\n      if (!isInt(localRes) || (res !== null && res !== localRes)) {\n        return null\n      }\n\n      res = localRes\n    } else if (numerator[unit]) {\n      // needs to divide by something but can't!\n      return null\n    }\n  }\n\n  return res\n}\n\nexport function greatestDurationDenominator(dur: Duration) {\n  let ms = dur.milliseconds\n  if (ms) {\n    if (ms % 1000 !== 0) {\n      return { unit: 'millisecond', value: ms }\n    }\n    if (ms % (1000 * 60) !== 0) {\n      return { unit: 'second', value: ms / 1000 }\n    }\n    if (ms % (1000 * 60 * 60) !== 0) {\n      return { unit: 'minute', value: ms / (1000 * 60) }\n    }\n    if (ms) {\n      return { unit: 'hour', value: ms / (1000 * 60 * 60) }\n    }\n  }\n  if (dur.days) {\n    if (dur.specifiedWeeks && dur.days % 7 === 0) {\n      return { unit: 'week', value: dur.days / 7 }\n    }\n    return { unit: 'day', value: dur.days }\n  }\n  if (dur.months) {\n    return { unit: 'month', value: dur.months }\n  }\n  if (dur.years) {\n    return { unit: 'year', value: dur.years }\n  }\n  return { unit: 'millisecond', value: 0 }\n}\n", "import { DateMarker } from './marker'\nimport { padStart } from '../util/misc'\n\n// timeZoneOffset is in minutes\nexport function buildIsoString(marker: DateMarker, timeZoneOffset?: number, stripZeroTime: boolean = false) {\n  let s = marker.toISOString()\n\n  s = s.replace('.000', '')\n\n  if (stripZeroTime) {\n    s = s.replace('T00:00:00Z', '')\n  }\n\n  if (s.length > 10) { // time part wasn't stripped, can add timezone info\n    if (timeZoneOffset == null) {\n      s = s.replace('Z', '')\n    } else if (timeZoneOffset !== 0) {\n      s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true))\n    }\n    // otherwise, its UTC-0 and we want to keep the Z\n  }\n\n  return s\n}\n\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nexport function formatDayString(marker: DateMarker) {\n  return marker.toISOString().replace(/T.*$/, '')\n}\n\n// TODO: use Date::toISOString and use everything after the T?\nexport function formatIsoTimeString(marker: DateMarker) {\n  return padStart(marker.getUTCHours(), 2) + ':' +\n    padStart(marker.getUTCMinutes(), 2) + ':' +\n    padStart(marker.getUTCSeconds(), 2)\n}\n\nexport function formatTimeZoneOffset(minutes: number, doIso = false) {\n  let sign = minutes < 0 ? '-' : '+'\n  let abs = Math.abs(minutes)\n  let hours = Math.floor(abs / 60)\n  let mins = Math.round(abs % 60)\n\n  if (doIso) {\n    return `${sign + padStart(hours, 2)}:${padStart(mins, 2)}`\n  }\n  return `GMT${sign}${hours}${mins ? `:${padStart(mins, 2)}` : ''}`\n}\n", "// TODO: new util arrayify?\n// Array.prototype.slice.call(\n\nexport function removeMatching(array, testFunc) {\n  let removeCnt = 0\n  let i = 0\n\n  while (i < array.length) {\n    if (testFunc(array[i])) { // truthy value means *remove*\n      array.splice(i, 1)\n      removeCnt += 1\n    } else {\n      i += 1\n    }\n  }\n\n  return removeCnt\n}\n\nexport function removeExact(array, exactVal) {\n  let removeCnt = 0\n  let i = 0\n\n  while (i < array.length) {\n    if (array[i] === exactVal) {\n      array.splice(i, 1)\n      removeCnt += 1\n    } else {\n      i += 1\n    }\n  }\n\n  return removeCnt\n}\n\nexport function isArraysEqual(a0, a1, equalityFunc?: (v0, v1) => boolean) { // TODO: better typing\n  if (a0 === a1) {\n    return true\n  }\n\n  let len = a0.length\n  let i\n\n  if (len !== a1.length) { // not array? or not same length?\n    return false\n  }\n\n  for (i = 0; i < len; i += 1) {\n    if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n      return false\n    }\n  }\n\n  return true\n}\n", "import { isArraysEqual } from './array'\nimport { isPropsEqual } from './object'\nimport { Dictionary } from '../options'\n\nexport function memoize<Args extends any[], Res>(\n  workerFunc: (...args: Args) => Res,\n  resEquality?: (res0: Res, res1: Res) => boolean,\n  teardownFunc?: (res: Res) => void,\n): (...args: Args) => Res {\n  let currentArgs: Args | undefined\n  let currentRes: Res | undefined\n\n  return function (...newArgs: Args) { // eslint-disable-line func-names\n    if (!currentArgs) {\n      currentRes = workerFunc.apply(this, newArgs)\n    } else if (!isArraysEqual(currentArgs, newArgs)) {\n      if (teardownFunc) {\n        teardownFunc(currentRes)\n      }\n\n      let res = workerFunc.apply(this, newArgs)\n\n      if (!resEquality || !resEquality(res, currentRes)) {\n        currentRes = res\n      }\n    }\n\n    currentArgs = newArgs\n\n    return currentRes\n  }\n}\n\nexport function memoizeObjArg<Arg extends Dictionary, Res>(\n  workerFunc: (arg: Arg) => Res,\n  resEquality?: (res0: Res, res1: Res) => boolean,\n  teardownFunc?: (res: Res) => void,\n): (arg: Arg) => Res {\n  let currentArg: Arg | undefined\n  let currentRes: Res | undefined\n\n  return (newArg: Arg) => {\n    if (!currentArg) {\n      currentRes = workerFunc.call(this, newArg)\n    } else if (!isPropsEqual(currentArg, newArg)) {\n      if (teardownFunc) {\n        teardownFunc(currentRes)\n      }\n\n      let res = workerFunc.call(this, newArg)\n\n      if (!resEquality || !resEquality(res, currentRes)) {\n        currentRes = res\n      }\n    }\n\n    currentArg = newArg\n\n    return currentRes\n  }\n}\n\nexport type MemoiseArrayFunc<Args extends any[], Res> =\n  (argSets: Args[]) => Res[]\n\nexport function memoizeArraylike<Args extends any[], Res>( // used at all?\n  workerFunc: (...args: Args) => Res,\n  resEquality?: (res0: Res, res1: Res) => boolean,\n  teardownFunc?: (res: Res) => void,\n): MemoiseArrayFunc<Args, Res> {\n  let currentArgSets: Args[] = []\n  let currentResults: Res[] = []\n\n  return (newArgSets: Args[]) => {\n    let currentLen = currentArgSets.length\n    let newLen = newArgSets.length\n    let i = 0\n\n    for (; i < currentLen; i += 1) {\n      if (!newArgSets[i]) { // one of the old sets no longer exists\n        if (teardownFunc) {\n          teardownFunc(currentResults[i])\n        }\n      } else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n        if (teardownFunc) {\n          teardownFunc(currentResults[i])\n        }\n\n        let res = workerFunc.apply(this, newArgSets[i])\n\n        if (!resEquality || !resEquality(res, currentResults[i])) {\n          currentResults[i] = res\n        }\n      }\n    }\n\n    for (; i < newLen; i += 1) {\n      currentResults[i] = workerFunc.apply(this, newArgSets[i])\n    }\n\n    currentArgSets = newArgSets\n    currentResults.splice(newLen) // remove excess\n\n    return currentResults\n  }\n}\n\nexport type MemoizeHashFunc<Args extends any[], Res> =\n  (argHash: { [key: string]: Args }) => { [key: string]: Res }\n\nexport function memoizeHashlike<Args extends any[], Res>(\n  workerFunc: (...args: Args) => Res,\n  resEquality?: (res0: Res, res1: Res) => boolean,\n  teardownFunc?: (res: Res) => void, // TODO: change arg order\n): MemoizeHashFunc<Args, Res> {\n  let currentArgHash: { [key: string]: Args } = {}\n  let currentResHash: { [key: string]: Res } = {}\n\n  return (newArgHash: { [key: string]: Args }) => {\n    let newResHash: { [key: string]: Res } = {}\n\n    for (let key in newArgHash) {\n      if (!currentResHash[key]) {\n        newResHash[key] = workerFunc.apply(this, newArgHash[key])\n      } else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n        if (teardownFunc) {\n          teardownFunc(currentResHash[key])\n        }\n\n        let res = workerFunc.apply(this, newArgHash[key])\n\n        newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))\n          ? currentResHash[key]\n          : res\n      } else {\n        newResHash[key] = currentResHash[key]\n      }\n    }\n\n    currentArgHash = newArgHash\n    currentResHash = newResHash\n\n    return newResHash\n  }\n}\n", "import { DateMarker, timeAsMs } from './marker'\nimport { CalendarSystem } from './calendar-system'\nimport { Locale } from './locale'\nimport { DateFormatter, DateFormattingContext } from './DateFormatter'\nimport { ZonedMarker } from './zoned-marker'\nimport { formatTimeZoneOffset } from './formatting-utils'\nimport { memoize } from '../util/memoize'\n\nconst EXTENDED_SETTINGS_AND_SEVERITIES = {\n  week: 3,\n  separator: 0, // 0 = not applicable\n  omitZeroMinute: 0,\n  meridiem: 0, // like am/pm\n  omitCommas: 0,\n}\n\nconst STANDARD_DATE_PROP_SEVERITIES = {\n  timeZoneName: 7,\n  era: 6,\n  year: 5,\n  month: 4,\n  day: 2,\n  weekday: 2,\n  hour: 1,\n  minute: 1,\n  second: 1,\n}\n\nconst MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i // eats up leading spaces too\nconst COMMA_RE = /,/g // we need re for globalness\nconst MULTI_SPACE_RE = /\\s+/g\nconst LTR_RE = /\\u200e/g // control character\nconst UTC_RE = /UTC|GMT/\n\nexport interface NativeFormatterOptions extends Intl.DateTimeFormatOptions {\n  week?: 'long' | 'short' | 'narrow' | 'numeric'\n  meridiem?: 'lowercase' | 'short' | 'narrow' | boolean\n  omitZeroMinute?: boolean\n  omitCommas?: boolean\n  separator?: string\n}\n\nexport class NativeFormatter implements DateFormatter {\n  standardDateProps: any\n  extendedSettings: any\n  severity: number\n  private buildFormattingFunc: typeof buildFormattingFunc // caching for efficiency with same date env\n\n  constructor(formatSettings: NativeFormatterOptions) {\n    let standardDateProps: any = {}\n    let extendedSettings: any = {}\n    let severity = 0\n\n    for (let name in formatSettings) {\n      if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {\n        extendedSettings[name] = formatSettings[name]\n        severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name], severity)\n      } else {\n        standardDateProps[name] = formatSettings[name]\n\n        if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity\n          severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name], severity)\n        }\n      }\n    }\n\n    this.standardDateProps = standardDateProps\n    this.extendedSettings = extendedSettings\n    this.severity = severity\n\n    this.buildFormattingFunc = memoize(buildFormattingFunc)\n  }\n\n  format(date: ZonedMarker, context: DateFormattingContext) {\n    return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date)\n  }\n\n  formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n    let { standardDateProps, extendedSettings } = this\n\n    let diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem)\n    if (!diffSeverity) {\n      return this.format(start, context)\n    }\n\n    let biggestUnitForPartial = diffSeverity\n    if (\n      biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n      (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n      (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n      (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')\n    ) {\n      biggestUnitForPartial = 1 // make it look like the dates are only different in terms of time\n    }\n\n    let full0 = this.format(start, context)\n    let full1 = this.format(end, context)\n\n    if (full0 === full1) {\n      return full0\n    }\n\n    let partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial)\n    let partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context)\n    let partial0 = partialFormattingFunc(start)\n    let partial1 = partialFormattingFunc(end)\n\n    let insertion = findCommonInsertion(full0, partial0, full1, partial1)\n    let separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || ''\n\n    if (insertion) {\n      return insertion.before + partial0 + separator + partial1 + insertion.after\n    }\n\n    return full0 + separator + full1\n  }\n\n  getLargestUnit() {\n    switch (this.severity) {\n      case 7:\n      case 6:\n      case 5:\n        return 'year'\n      case 4:\n        return 'month'\n      case 3:\n        return 'week'\n      case 2:\n        return 'day'\n      default:\n        return 'time' // really?\n    }\n  }\n}\n\nfunction buildFormattingFunc(\n  standardDateProps,\n  extendedSettings,\n  context: DateFormattingContext,\n): (date: ZonedMarker) => string {\n  let standardDatePropCnt = Object.keys(standardDateProps).length\n\n  if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n    return (date: ZonedMarker) => (\n      formatTimeZoneOffset(date.timeZoneOffset)\n    )\n  }\n\n  if (standardDatePropCnt === 0 && extendedSettings.week) {\n    return (date: ZonedMarker) => (\n      formatWeekNumber(\n        context.computeWeekNumber(date.marker),\n        context.weekText,\n        context.weekTextLong,\n        context.locale,\n        extendedSettings.week,\n      )\n    )\n  }\n\n  return buildNativeFormattingFunc(standardDateProps, extendedSettings, context)\n}\n\nfunction buildNativeFormattingFunc(\n  standardDateProps,\n  extendedSettings,\n  context: DateFormattingContext,\n): (date: ZonedMarker) => string {\n  standardDateProps = { ...standardDateProps } // copy\n  extendedSettings = { ...extendedSettings } // copy\n\n  sanitizeSettings(standardDateProps, extendedSettings)\n\n  standardDateProps.timeZone = 'UTC' // we leverage the only guaranteed timeZone for our UTC markers\n\n  let normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps)\n  let zeroFormat // needed?\n\n  if (extendedSettings.omitZeroMinute) {\n    let zeroProps = { ...standardDateProps }\n    delete zeroProps.minute // seconds and ms were already considered in sanitizeSettings\n    zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps)\n  }\n\n  return (date: ZonedMarker) => {\n    let { marker } = date\n    let format\n\n    if (zeroFormat && !marker.getUTCMinutes()) {\n      format = zeroFormat\n    } else {\n      format = normalFormat\n    }\n\n    let s = format.format(marker)\n\n    return postProcess(s, date, standardDateProps, extendedSettings, context)\n  }\n}\n\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n  // deal with a browser inconsistency where formatting the timezone\n  // requires that the hour/minute be present.\n  if (standardDateProps.timeZoneName) {\n    if (!standardDateProps.hour) {\n      standardDateProps.hour = '2-digit'\n    }\n    if (!standardDateProps.minute) {\n      standardDateProps.minute = '2-digit'\n    }\n  }\n\n  // only support short timezone names\n  if (standardDateProps.timeZoneName === 'long') {\n    standardDateProps.timeZoneName = 'short'\n  }\n\n  // if requesting to display seconds, MUST display minutes\n  if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n    delete extendedSettings.omitZeroMinute\n  }\n}\n\nfunction postProcess(s: string, date: ZonedMarker, standardDateProps, extendedSettings, context: DateFormattingContext): string {\n  s = s.replace(LTR_RE, '') // remove left-to-right control chars. do first. good for other regexes\n\n  if (standardDateProps.timeZoneName === 'short') {\n    s = injectTzoStr(\n      s,\n      (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n        'UTC' : // important to normalize for IE, which does \"GMT\"\n        formatTimeZoneOffset(date.timeZoneOffset),\n    )\n  }\n\n  if (extendedSettings.omitCommas) {\n    s = s.replace(COMMA_RE, '').trim()\n  }\n\n  if (extendedSettings.omitZeroMinute) {\n    s = s.replace(':00', '') // zeroFormat doesn't always achieve this\n  }\n\n  // ^ do anything that might create adjacent spaces before this point,\n  // because MERIDIEM_RE likes to eat up loading spaces\n\n  if (extendedSettings.meridiem === false) {\n    s = s.replace(MERIDIEM_RE, '').trim()\n  } else if (extendedSettings.meridiem === 'narrow') { // a/p\n    s = s.replace(MERIDIEM_RE, (m0, m1) => m1.toLocaleLowerCase())\n  } else if (extendedSettings.meridiem === 'short') { // am/pm\n    s = s.replace(MERIDIEM_RE, (m0, m1) => `${m1.toLocaleLowerCase()}m`)\n  } else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n    s = s.replace(MERIDIEM_RE, (m0) => m0.toLocaleLowerCase())\n  }\n\n  s = s.replace(MULTI_SPACE_RE, ' ')\n  s = s.trim()\n\n  return s\n}\n\nfunction injectTzoStr(s: string, tzoStr: string): string {\n  let replaced = false\n\n  s = s.replace(UTC_RE, () => {\n    replaced = true\n    return tzoStr\n  })\n\n  // IE11 doesn't include UTC/GMT in the original string, so append to end\n  if (!replaced) {\n    s += ` ${tzoStr}`\n  }\n\n  return s\n}\n\nfunction formatWeekNumber(\n  num: number,\n  weekText: string,\n  weekTextLong: string,\n  locale: Locale,\n  display?: 'numeric' | 'narrow' | 'short' | 'long',\n): string {\n  let parts = []\n\n  if (display === 'long') {\n    parts.push(weekTextLong)\n  } else if (display === 'short' || display === 'narrow') {\n    parts.push(weekText)\n  }\n\n  if (display === 'long' || display === 'short') {\n    parts.push(' ')\n  }\n\n  parts.push(locale.simpleNumberFormat.format(num))\n\n  if (locale.options.direction === 'rtl') { // TODO: use control characters instead?\n    parts.reverse()\n  }\n\n  return parts.join('')\n}\n\n// Range Formatting Utils\n\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0: DateMarker, d1: DateMarker, ca: CalendarSystem) {\n  if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n    return 5\n  }\n  if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n    return 4\n  }\n  if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n    return 2\n  }\n  if (timeAsMs(d0) !== timeAsMs(d1)) {\n    return 1\n  }\n  return 0\n}\n\nfunction computePartialFormattingOptions(options, biggestUnit) {\n  let partialOptions = {}\n\n  for (let name in options) {\n    if (\n      !(name in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n      STANDARD_DATE_PROP_SEVERITIES[name] <= biggestUnit\n    ) {\n      partialOptions[name] = options[name]\n    }\n  }\n\n  return partialOptions\n}\n\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n  let i0 = 0\n  while (i0 < full0.length) {\n    let found0 = full0.indexOf(partial0, i0)\n    if (found0 === -1) {\n      break\n    }\n\n    let before0 = full0.substr(0, found0)\n    i0 = found0 + partial0.length\n    let after0 = full0.substr(i0)\n\n    let i1 = 0\n    while (i1 < full1.length) {\n      let found1 = full1.indexOf(partial1, i1)\n      if (found1 === -1) {\n        break\n      }\n\n      let before1 = full1.substr(0, found1)\n      i1 = found1 + partial1.length\n      let after1 = full1.substr(i1)\n\n      if (before0 === before1 && after0 === after1) {\n        return {\n          before: before0,\n          after: after0,\n        }\n      }\n    }\n  }\n\n  return null\n}\n", "import { DateMarker } from './marker'\nimport { CalendarSystem } from './calendar-system'\n\nexport interface ZonedMarker {\n  marker: DateMarker,\n  timeZoneOffset: number\n}\n\nexport interface ExpandedZonedMarker extends ZonedMarker {\n  array: number[],\n  year: number,\n  month: number,\n  day: number,\n  hour: number,\n  minute: number,\n  second: number,\n  millisecond: number\n}\n\nexport function expandZonedMarker(dateInfo: ZonedMarker, calendarSystem: CalendarSystem): ExpandedZonedMarker {\n  let a = calendarSystem.markerToArray(dateInfo.marker)\n\n  return {\n    marker: dateInfo.marker,\n    timeZoneOffset: dateInfo.timeZoneOffset,\n    array: a,\n    year: a[0],\n    month: a[1],\n    day: a[2],\n    hour: a[3],\n    minute: a[4],\n    second: a[5],\n    millisecond: a[6],\n  }\n}\n", "import { DateMarker } from './marker'\nimport { CalendarSystem } from './calendar-system'\nimport { Locale } from './locale'\nimport { ZonedMarker, ExpandedZonedMarker, expandZonedMarker } from './zoned-marker'\n\nexport interface VerboseFormattingArg { // TODO: kill this\n  date: ExpandedZonedMarker\n  start: ExpandedZonedMarker\n  end?: ExpandedZonedMarker\n  timeZone: string\n  localeCodes: string[],\n  defaultSeparator: string\n}\n\nexport function createVerboseFormattingArg(\n  start: ZonedMarker,\n  end: ZonedMarker,\n  context: DateFormattingContext,\n  betterDefaultSeparator?: string,\n): VerboseFormattingArg {\n  let startInfo = expandZonedMarker(start, context.calendarSystem)\n  let endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null\n\n  return {\n    date: startInfo,\n    start: startInfo,\n    end: endInfo,\n    timeZone: context.timeZone,\n    localeCodes: context.locale.codes,\n    defaultSeparator: betterDefaultSeparator || context.defaultSeparator,\n  }\n}\n\nexport type CmdFormatterFunc = (cmd: string, arg: VerboseFormattingArg) => string\n\nexport interface DateFormattingContext {\n  timeZone: string,\n  locale: Locale,\n  calendarSystem: CalendarSystem\n  computeWeekNumber: (d: DateMarker) => number\n  weekText: string\n  weekTextLong: string\n  cmdFormatter?: CmdFormatterFunc\n  defaultSeparator: string\n}\n\nexport interface DateFormatter {\n  format(date: ZonedMarker, context: DateFormattingContext): string\n  formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string): string\n}\n", "import { DateFormatter, DateFormattingContext, createVerboseFormattingArg } from './DateFormatter'\nimport { ZonedMarker } from './zoned-marker'\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nexport class CmdFormatter implements DateFormatter {\n  cmdStr: string\n\n  constructor(cmdStr: string) {\n    this.cmdStr = cmdStr\n  }\n\n  format(date: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n    return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator))\n  }\n\n  formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n    return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator))\n  }\n}\n", "import { DateFormatter, DateFormattingContext, createVerboseFormattingArg, VerboseFormattingArg } from './DateFormatter'\nimport { ZonedMarker } from './zoned-marker'\n\nexport type FuncFormatterFunc = (arg: VerboseFormattingArg) => string\n\nexport class FuncFormatter implements DateFormatter {\n  func: FuncFormatterFunc\n\n  constructor(func: FuncFormatterFunc) {\n    this.func = func\n  }\n\n  format(date: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n    return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator))\n  }\n\n  formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n    return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator))\n  }\n}\n", "import { NativeFormatter, NativeFormatterOptions } from './formatting-native'\nimport { CmdFormatter } from './formatting-cmd'\nimport { FuncFormatter, FuncFormatterFunc } from './formatting-func'\nimport { DateFormatter } from './DateFormatter'\n\nexport type FormatterInput = NativeFormatterOptions | string | FuncFormatterFunc\n\nexport function createFormatter(input: FormatterInput): DateFormatter {\n  if (typeof input === 'object' && input) { // non-null object\n    return new NativeFormatter(input)\n  }\n\n  if (typeof input === 'string') {\n    return new CmdFormatter(input)\n  }\n\n  if (typeof input === 'function') {\n    return new FuncFormatter(input as FuncFormatterFunc)\n  }\n\n  return null\n}\n", "import { createDuration } from './datelib/duration'\nimport { mergeProps, isPropsEqual } from './util/object'\nimport { createFormatter } from './datelib/formatting'\nimport { parseFieldSpecs } from './util/misc'\nimport { DateProfileGeneratorClass } from './DateProfileGenerator'\n\n// public\nimport {\n  CssDimValue,\n  DateInput,\n  DateRangeInput,\n  BusinessHoursInput,\n  EventSourceInput,\n  ViewApi,\n  LocaleSingularArg, LocaleInput,\n  EventInput, EventInputTransformer,\n  OverlapFunc, ConstraintInput, AllowFunc,\n  PluginDef,\n  ViewComponentType,\n  SpecificViewContentArg, SpecificViewMountArg,\n  ClassNamesGenerator, CustomContentGenerator, DidMountHandler, WillUnmountHandler,\n  NowIndicatorContentArg, NowIndicatorMountArg,\n  WeekNumberContentArg, WeekNumberMountArg,\n  SlotLaneContentArg, SlotLaneMountArg,\n  SlotLabelContentArg, SlotLabelMountArg,\n  AllDayContentArg, AllDayMountArg,\n  DayHeaderContentArg, DayHeaderMountArg,\n  DayCellContentArg, DayCellMountArg,\n  ViewContentArg, ViewMountArg,\n  EventClickArg,\n  EventHoveringArg,\n  DateSelectArg, DateUnselectArg,\n  CalendarApi,\n  VUIEvent,\n  WeekNumberCalculation,\n  FormatterInput,\n  ToolbarInput, CustomButtonInput, ButtonIconsInput, ButtonTextCompoundInput,\n  EventContentArg, EventMountArg,\n  DatesSetArg,\n  EventApi, EventAddArg, EventChangeArg, EventRemoveArg,\n  MoreLinkContentArg,\n  MoreLinkMountArg,\n  MoreLinkAction,\n  ButtonHintCompoundInput,\n} from './api-type-deps'\n\n// base options\n// ------------\n\nexport const BASE_OPTION_REFINERS = {\n  navLinkDayClick: identity as Identity<string | ((this: CalendarApi, date: Date, jsEvent: VUIEvent) => void)>,\n  navLinkWeekClick: identity as Identity<string | ((this: CalendarApi, weekStart: Date, jsEvent: VUIEvent) => void)>,\n  duration: createDuration,\n  bootstrapFontAwesome: identity as Identity<ButtonIconsInput | false>, // TODO: move to bootstrap plugin\n  buttonIcons: identity as Identity<ButtonIconsInput | false>,\n  customButtons: identity as Identity<{ [name: string]: CustomButtonInput }>,\n  defaultAllDayEventDuration: createDuration,\n  defaultTimedEventDuration: createDuration,\n  nextDayThreshold: createDuration,\n  scrollTime: createDuration,\n  scrollTimeReset: Boolean,\n  slotMinTime: createDuration,\n  slotMaxTime: createDuration,\n  dayPopoverFormat: createFormatter,\n  slotDuration: createDuration,\n  snapDuration: createDuration,\n  headerToolbar: identity as Identity<ToolbarInput | false>,\n  footerToolbar: identity as Identity<ToolbarInput | false>,\n  defaultRangeSeparator: String,\n  titleRangeSeparator: String,\n  forceEventDuration: Boolean,\n\n  dayHeaders: Boolean,\n  dayHeaderFormat: createFormatter,\n  dayHeaderClassNames: identity as Identity<ClassNamesGenerator<DayHeaderContentArg>>,\n  dayHeaderContent: identity as Identity<CustomContentGenerator<DayHeaderContentArg>>,\n  dayHeaderDidMount: identity as Identity<DidMountHandler<DayHeaderMountArg>>,\n  dayHeaderWillUnmount: identity as Identity<WillUnmountHandler<DayHeaderMountArg>>,\n\n  dayCellClassNames: identity as Identity<ClassNamesGenerator<DayCellContentArg>>,\n  dayCellContent: identity as Identity<CustomContentGenerator<DayCellContentArg>>,\n  dayCellDidMount: identity as Identity<DidMountHandler<DayCellMountArg>>,\n  dayCellWillUnmount: identity as Identity<WillUnmountHandler<DayCellMountArg>>,\n\n  initialView: String,\n  aspectRatio: Number,\n  weekends: Boolean,\n\n  weekNumberCalculation: identity as Identity<WeekNumberCalculation>,\n  weekNumbers: Boolean,\n  weekNumberClassNames: identity as Identity<ClassNamesGenerator<WeekNumberContentArg>>,\n  weekNumberContent: identity as Identity<CustomContentGenerator<WeekNumberContentArg>>,\n  weekNumberDidMount: identity as Identity<DidMountHandler<WeekNumberMountArg>>,\n  weekNumberWillUnmount: identity as Identity<WillUnmountHandler<WeekNumberMountArg>>,\n\n  editable: Boolean,\n\n  viewClassNames: identity as Identity<ClassNamesGenerator<ViewContentArg>>,\n  viewDidMount: identity as Identity<DidMountHandler<ViewMountArg>>,\n  viewWillUnmount: identity as Identity<WillUnmountHandler<ViewMountArg>>,\n\n  nowIndicator: Boolean,\n  nowIndicatorClassNames: identity as Identity<ClassNamesGenerator<NowIndicatorContentArg>>,\n  nowIndicatorContent: identity as Identity<CustomContentGenerator<NowIndicatorContentArg>>,\n  nowIndicatorDidMount: identity as Identity<DidMountHandler<NowIndicatorMountArg>>,\n  nowIndicatorWillUnmount: identity as Identity<WillUnmountHandler<NowIndicatorMountArg>>,\n\n  showNonCurrentDates: Boolean,\n  lazyFetching: Boolean,\n  startParam: String,\n  endParam: String,\n  timeZoneParam: String,\n  timeZone: String,\n  locales: identity as Identity<LocaleInput[]>,\n  locale: identity as Identity<LocaleSingularArg>,\n  themeSystem: String as Identity<'standard' | string>,\n  dragRevertDuration: Number,\n  dragScroll: Boolean,\n  allDayMaintainDuration: Boolean,\n  unselectAuto: Boolean,\n  dropAccept: identity as Identity<string | ((this: CalendarApi, draggable: any) => boolean)>, // TODO: type draggable\n  eventOrder: parseFieldSpecs,\n  eventOrderStrict: Boolean,\n\n  handleWindowResize: Boolean,\n  windowResizeDelay: Number,\n  longPressDelay: Number,\n  eventDragMinDistance: Number,\n  expandRows: Boolean,\n  height: identity as Identity<CssDimValue>,\n  contentHeight: identity as Identity<CssDimValue>,\n  direction: String as Identity<'ltr' | 'rtl'>,\n  weekNumberFormat: createFormatter,\n  eventResizableFromStart: Boolean,\n  displayEventTime: Boolean,\n  displayEventEnd: Boolean,\n  weekText: String, // the short version\n  weekTextLong: String, // falls back to weekText\n  progressiveEventRendering: Boolean,\n  businessHours: identity as Identity<BusinessHoursInput>,\n  initialDate: identity as Identity<DateInput>,\n  now: identity as Identity<DateInput | ((this: CalendarApi) => DateInput)>,\n  eventDataTransform: identity as Identity<EventInputTransformer>,\n  stickyHeaderDates: identity as Identity<boolean | 'auto'>,\n  stickyFooterScrollbar: identity as Identity<boolean | 'auto'>,\n  viewHeight: identity as Identity<CssDimValue>,\n  defaultAllDay: Boolean,\n  eventSourceFailure: identity as Identity<(this: CalendarApi, error: any) => void>,\n  eventSourceSuccess: identity as Identity<(this: CalendarApi, eventsInput: EventInput[], xhr?: XMLHttpRequest) => EventInput[] | void>,\n\n  eventDisplay: String, // TODO: give more specific\n  eventStartEditable: Boolean,\n  eventDurationEditable: Boolean,\n  eventOverlap: identity as Identity<boolean | OverlapFunc>,\n  eventConstraint: identity as Identity<ConstraintInput>,\n  eventAllow: identity as Identity<AllowFunc>,\n  eventBackgroundColor: String,\n  eventBorderColor: String,\n  eventTextColor: String,\n  eventColor: String,\n  eventClassNames: identity as Identity<ClassNamesGenerator<EventContentArg>>,\n  eventContent: identity as Identity<CustomContentGenerator<EventContentArg>>,\n  eventDidMount: identity as Identity<DidMountHandler<EventMountArg>>,\n  eventWillUnmount: identity as Identity<WillUnmountHandler<EventMountArg>>,\n\n  selectConstraint: identity as Identity<ConstraintInput>,\n  selectOverlap: identity as Identity<boolean | OverlapFunc>,\n  selectAllow: identity as Identity<AllowFunc>,\n\n  droppable: Boolean,\n  unselectCancel: String,\n\n  slotLabelFormat: identity as Identity<FormatterInput | FormatterInput[]>,\n\n  slotLaneClassNames: identity as Identity<ClassNamesGenerator<SlotLaneContentArg>>,\n  slotLaneContent: identity as Identity<CustomContentGenerator<SlotLaneContentArg>>,\n  slotLaneDidMount: identity as Identity<DidMountHandler<SlotLaneMountArg>>,\n  slotLaneWillUnmount: identity as Identity<WillUnmountHandler<SlotLaneMountArg>>,\n\n  slotLabelClassNames: identity as Identity<ClassNamesGenerator<SlotLabelContentArg>>,\n  slotLabelContent: identity as Identity<CustomContentGenerator<SlotLabelContentArg>>,\n  slotLabelDidMount: identity as Identity<DidMountHandler<SlotLabelMountArg>>,\n  slotLabelWillUnmount: identity as Identity<WillUnmountHandler<SlotLabelMountArg>>,\n\n  dayMaxEvents: identity as Identity<boolean | number>,\n  dayMaxEventRows: identity as Identity<boolean | number>,\n  dayMinWidth: Number,\n  slotLabelInterval: createDuration,\n\n  allDayText: String,\n  allDayClassNames: identity as Identity<ClassNamesGenerator<AllDayContentArg>>,\n  allDayContent: identity as Identity<CustomContentGenerator<AllDayContentArg>>,\n  allDayDidMount: identity as Identity<DidMountHandler<AllDayMountArg>>,\n  allDayWillUnmount: identity as Identity<WillUnmountHandler<AllDayMountArg>>,\n\n  slotMinWidth: Number, // move to timeline?\n  navLinks: Boolean,\n  eventTimeFormat: createFormatter,\n  rerenderDelay: Number, // TODO: move to @fullcalendar/core right? nah keep here\n  moreLinkText: identity as Identity<string | ((this: CalendarApi, num: number) => string)>, // this not enforced :( check others too\n  moreLinkHint: identity as Identity<string | ((this: CalendarApi, num: number) => string)>,\n  selectMinDistance: Number,\n  selectable: Boolean,\n  selectLongPressDelay: Number,\n  eventLongPressDelay: Number,\n\n  selectMirror: Boolean,\n  eventMaxStack: Number,\n  eventMinHeight: Number,\n  eventMinWidth: Number,\n  eventShortHeight: Number,\n  slotEventOverlap: Boolean,\n  plugins: identity as Identity<PluginDef[]>,\n  firstDay: Number,\n  dayCount: Number,\n  dateAlignment: String,\n  dateIncrement: createDuration,\n  hiddenDays: identity as Identity<number[]>,\n  monthMode: Boolean,\n  fixedWeekCount: Boolean,\n  validRange: identity as Identity<DateRangeInput | ((this: CalendarApi, nowDate: Date) => DateRangeInput)>, // `this` works?\n  visibleRange: identity as Identity<DateRangeInput | ((this: CalendarApi, currentDate: Date) => DateRangeInput)>, // `this` works?\n  titleFormat: identity as Identity<FormatterInput>, // DONT parse just yet. we need to inject titleSeparator\n\n  eventInteractive: Boolean,\n\n  // only used by list-view, but languages define the value, so we need it in base options\n  noEventsText: String,\n\n  viewHint: identity as Identity<string | ((...args: any[]) => string)>,\n  navLinkHint: identity as Identity<string | ((...args: any[]) => string)>,\n  closeHint: String,\n  timeHint: String,\n  eventHint: String,\n\n  moreLinkClick: identity as Identity<MoreLinkAction>,\n  moreLinkClassNames: identity as Identity<ClassNamesGenerator<MoreLinkContentArg>>,\n  moreLinkContent: identity as Identity<CustomContentGenerator<MoreLinkContentArg>>,\n  moreLinkDidMount: identity as Identity<DidMountHandler<MoreLinkMountArg>>,\n  moreLinkWillUnmount: identity as Identity<WillUnmountHandler<MoreLinkMountArg>>,\n}\n\ntype BuiltInBaseOptionRefiners = typeof BASE_OPTION_REFINERS\n\nexport interface BaseOptionRefiners extends BuiltInBaseOptionRefiners {\n  // for ambient-extending\n}\n\nexport type BaseOptions = RawOptionsFromRefiners< // as RawOptions\n  Required<BaseOptionRefiners> // Required is a hack for \"Index signature is missing\"\n>\n\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nexport const BASE_OPTION_DEFAULTS = {\n  eventDisplay: 'auto',\n  defaultRangeSeparator: ' - ',\n  titleRangeSeparator: ' \\u2013 ', // en dash\n  defaultTimedEventDuration: '01:00:00',\n  defaultAllDayEventDuration: { day: 1 },\n  forceEventDuration: false,\n  nextDayThreshold: '00:00:00',\n  dayHeaders: true,\n  initialView: '',\n  aspectRatio: 1.35,\n  headerToolbar: {\n    start: 'title',\n    center: '',\n    end: 'today prev,next',\n  },\n  weekends: true,\n  weekNumbers: false,\n  weekNumberCalculation: 'local' as WeekNumberCalculation,\n  editable: false,\n  nowIndicator: false,\n  scrollTime: '06:00:00',\n  scrollTimeReset: true,\n  slotMinTime: '00:00:00',\n  slotMaxTime: '24:00:00',\n  showNonCurrentDates: true,\n  lazyFetching: true,\n  startParam: 'start',\n  endParam: 'end',\n  timeZoneParam: 'timeZone',\n  timeZone: 'local', // TODO: throw error if given falsy value?\n  locales: [],\n  locale: '', // blank values means it will compute based off locales[]\n  themeSystem: 'standard',\n  dragRevertDuration: 500,\n  dragScroll: true,\n  allDayMaintainDuration: false,\n  unselectAuto: true,\n  dropAccept: '*',\n  eventOrder: 'start,-duration,allDay,title',\n  dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n  handleWindowResize: true,\n  windowResizeDelay: 100, // milliseconds before an updateSize happens\n  longPressDelay: 1000,\n  eventDragMinDistance: 5, // only applies to mouse\n  expandRows: false,\n  navLinks: false,\n  selectable: false,\n  eventMinHeight: 15,\n  eventMinWidth: 30,\n  eventShortHeight: 30,\n}\n\nexport type BaseOptionsRefined = DefaultedRefinedOptions<\n  RefinedOptionsFromRefiners<Required<BaseOptionRefiners>>, // Required is a hack for \"Index signature is missing\"\n  keyof typeof BASE_OPTION_DEFAULTS\n>\n\n// calendar listeners\n// ------------------\n\nexport const CALENDAR_LISTENER_REFINERS = {\n  datesSet: identity as Identity<(arg: DatesSetArg) => void>,\n  eventsSet: identity as Identity<(events: EventApi[]) => void>,\n  eventAdd: identity as Identity<(arg: EventAddArg) => void>,\n  eventChange: identity as Identity<(arg: EventChangeArg) => void>,\n  eventRemove: identity as Identity<(arg: EventRemoveArg) => void>,\n  windowResize: identity as Identity<(arg: { view: ViewApi }) => void>,\n  eventClick: identity as Identity<(arg: EventClickArg) => void>, // TODO: resource for scheduler????\n  eventMouseEnter: identity as Identity<(arg: EventHoveringArg) => void>,\n  eventMouseLeave: identity as Identity<(arg: EventHoveringArg) => void>,\n  select: identity as Identity<(arg: DateSelectArg) => void>, // resource for scheduler????\n  unselect: identity as Identity<(arg: DateUnselectArg) => void>,\n  loading: identity as Identity<(isLoading: boolean) => void>,\n\n  // internal\n  _unmount: identity as Identity<() => void>,\n  _beforeprint: identity as Identity<() => void>,\n  _afterprint: identity as Identity<() => void>,\n  _noEventDrop: identity as Identity<() => void>,\n  _noEventResize: identity as Identity<() => void>,\n  _resize: identity as Identity<(forced: boolean) => void>,\n  _scrollRequest: identity as Identity<(arg: any) => void>,\n}\n\ntype BuiltInCalendarListenerRefiners = typeof CALENDAR_LISTENER_REFINERS\n\nexport interface CalendarListenerRefiners extends BuiltInCalendarListenerRefiners {\n  // for ambient extending\n}\n\ntype CalendarListenersLoose = RefinedOptionsFromRefiners<Required<CalendarListenerRefiners>> // Required hack\nexport type CalendarListeners = Required<CalendarListenersLoose> // much more convenient for Emitters and whatnot\n\n// calendar-specific options\n// -------------------------\n\nexport const CALENDAR_OPTION_REFINERS = { // does not include base nor calendar listeners\n  buttonText: identity as Identity<ButtonTextCompoundInput>,\n  buttonHints: identity as Identity<ButtonHintCompoundInput>,\n  views: identity as Identity<{ [viewId: string]: ViewOptions }>,\n  plugins: identity as Identity<PluginDef[]>,\n  initialEvents: identity as Identity<EventSourceInput>,\n  events: identity as Identity<EventSourceInput>,\n  eventSources: identity as Identity<EventSourceInput[]>,\n}\n\ntype BuiltInCalendarOptionRefiners = typeof CALENDAR_OPTION_REFINERS\n\nexport interface CalendarOptionRefiners extends BuiltInCalendarOptionRefiners {\n  // for ambient-extending\n}\n\nexport type CalendarOptions =\n  BaseOptions &\n  CalendarListenersLoose &\n  RawOptionsFromRefiners<Required<CalendarOptionRefiners>> // Required hack https://github.com/microsoft/TypeScript/issues/15300\n\nexport type CalendarOptionsRefined =\n  BaseOptionsRefined &\n  CalendarListenersLoose &\n  RefinedOptionsFromRefiners<Required<CalendarOptionRefiners>> // Required hack\n\nexport const COMPLEX_OPTION_COMPARATORS: {\n  [optionName in keyof CalendarOptions]: (a: CalendarOptions[optionName], b: CalendarOptions[optionName]) => boolean\n} = {\n  headerToolbar: isMaybeObjectsEqual,\n  footerToolbar: isMaybeObjectsEqual,\n  buttonText: isMaybeObjectsEqual,\n  buttonHints: isMaybeObjectsEqual,\n  buttonIcons: isMaybeObjectsEqual,\n  dateIncrement: isMaybeObjectsEqual,\n}\n\nfunction isMaybeObjectsEqual(a, b) {\n  if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects\n    return isPropsEqual(a, b)\n  }\n  return a === b\n}\n\n// view-specific options\n// ---------------------\n\nexport const VIEW_OPTION_REFINERS: {\n  [name: string]: any\n} = {\n  type: String,\n  component: identity as Identity<ViewComponentType>,\n  buttonText: String,\n  buttonTextKey: String, // internal only\n  dateProfileGeneratorClass: identity as Identity<DateProfileGeneratorClass>,\n  usesMinMaxTime: Boolean, // internal only\n  classNames: identity as Identity<ClassNamesGenerator<SpecificViewContentArg>>,\n  content: identity as Identity<CustomContentGenerator<SpecificViewContentArg>>,\n  didMount: identity as Identity<DidMountHandler<SpecificViewMountArg>>,\n  willUnmount: identity as Identity<WillUnmountHandler<SpecificViewMountArg>>,\n}\n\ntype BuiltInViewOptionRefiners = typeof VIEW_OPTION_REFINERS\n\nexport interface ViewOptionRefiners extends BuiltInViewOptionRefiners {\n  // for ambient-extending\n}\n\nexport type ViewOptions =\n  BaseOptions &\n  CalendarListenersLoose &\n  RawOptionsFromRefiners<Required<ViewOptionRefiners>> // Required hack\n\nexport type ViewOptionsRefined =\n  BaseOptionsRefined &\n  CalendarListenersLoose &\n  RefinedOptionsFromRefiners<Required<ViewOptionRefiners>> // Required hack\n\n// util funcs\n// ----------------------------------------------------------------------------------------------------\n\nexport function mergeRawOptions(optionSets: Dictionary[]) {\n  return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS)\n}\n\nexport function refineProps<Refiners extends GenericRefiners, Raw extends RawOptionsFromRefiners<Refiners>>(\n  input: Raw,\n  refiners: Refiners,\n): {\n  refined: RefinedOptionsFromRefiners<Refiners>,\n  extra: Dictionary,\n} {\n  let refined = {} as any\n  let extra = {} as any\n\n  for (let propName in refiners) {\n    if (propName in input) {\n      refined[propName] = refiners[propName](input[propName])\n    }\n  }\n\n  for (let propName in input) {\n    if (!(propName in refiners)) {\n      extra[propName] = input[propName]\n    }\n  }\n\n  return { refined, extra }\n}\n\n// definition utils\n// ----------------------------------------------------------------------------------------------------\n\nexport type GenericRefiners = {\n  [propName: string]: (input: any) => any\n}\n\nexport type GenericListenerRefiners = {\n  [listenerName: string]: Identity<(this: CalendarApi, ...args: any[]) => void>\n}\n\nexport type RawOptionsFromRefiners<Refiners extends GenericRefiners> = {\n  [Prop in keyof Refiners]?: // all optional\n    Refiners[Prop] extends ((input: infer RawType) => infer RefinedType)\n      ? (any extends RawType ? RefinedType : RawType) // if input type `any`, use output (for Boolean/Number/String)\n      : never\n}\n\nexport type RefinedOptionsFromRefiners<Refiners extends GenericRefiners> = {\n  [Prop in keyof Refiners]?: // all optional\n    Refiners[Prop] extends ((input: any) => infer RefinedType) ? RefinedType : never\n}\n\nexport type DefaultedRefinedOptions<RefinedOptions extends Dictionary, DefaultKey extends keyof RefinedOptions> =\n  Required<Pick<RefinedOptions, DefaultKey>> &\n  Partial<Omit<RefinedOptions, DefaultKey>>\n\nexport type Dictionary = Record<string, any>\n\nexport type Identity<T = any> = (raw: T) => T\n\nexport function identity<T>(raw: T): T {\n  return raw\n}\n", "import { EventDef, EventDefHash } from './event-def'\nimport { EventInstance, EventInstanceHash } from './event-instance'\nimport { EventInput, parseEvent, EventTuple, buildEventRefiners } from './event-parse'\nimport { filterHash } from '../util/object'\nimport { CalendarContext } from '../CalendarContext'\nimport { EventSource } from './event-source'\n\n/*\nA data structure that encapsulates EventDefs and EventInstances.\nUtils for parsing this data from raw EventInputs.\nUtils for manipulating an EventStore.\n*/\n\nexport interface EventStore {\n  defs: EventDefHash\n  instances: EventInstanceHash\n}\n\nexport function parseEvents(\n  rawEvents: EventInput[],\n  eventSource: EventSource<any> | null,\n  context: CalendarContext,\n  allowOpenRange?: boolean,\n): EventStore {\n  let eventStore = createEmptyEventStore()\n  let eventRefiners = buildEventRefiners(context)\n\n  for (let rawEvent of rawEvents) {\n    let tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners)\n\n    if (tuple) {\n      eventTupleToStore(tuple, eventStore)\n    }\n  }\n\n  return eventStore\n}\n\nexport function eventTupleToStore(tuple: EventTuple, eventStore: EventStore = createEmptyEventStore()) {\n  eventStore.defs[tuple.def.defId] = tuple.def\n\n  if (tuple.instance) {\n    eventStore.instances[tuple.instance.instanceId] = tuple.instance\n  }\n\n  return eventStore\n}\n\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nexport function getRelevantEvents(eventStore: EventStore, instanceId: string): EventStore {\n  let instance = eventStore.instances[instanceId]\n\n  if (instance) {\n    let def = eventStore.defs[instance.defId]\n\n    // get events/instances with same group\n    let newStore = filterEventStoreDefs(eventStore, (lookDef) => isEventDefsGrouped(def, lookDef))\n\n    // add the original\n    // TODO: wish we could use eventTupleToStore or something like it\n    newStore.defs[def.defId] = def\n    newStore.instances[instance.instanceId] = instance\n\n    return newStore\n  }\n\n  return createEmptyEventStore()\n}\n\nfunction isEventDefsGrouped(def0: EventDef, def1: EventDef): boolean {\n  return Boolean(def0.groupId && def0.groupId === def1.groupId)\n}\n\nexport function createEmptyEventStore(): EventStore {\n  return { defs: {}, instances: {} }\n}\n\nexport function mergeEventStores(store0: EventStore, store1: EventStore): EventStore {\n  return {\n    defs: { ...store0.defs, ...store1.defs },\n    instances: { ...store0.instances, ...store1.instances },\n  }\n}\n\nexport function filterEventStoreDefs(eventStore: EventStore, filterFunc: (eventDef: EventDef) => boolean): EventStore {\n  let defs = filterHash(eventStore.defs, filterFunc)\n  let instances = filterHash(eventStore.instances, (instance: EventInstance) => (\n    defs[instance.defId] // still exists?\n  ))\n  return { defs, instances }\n}\n\nexport function excludeSubEventStore(master: EventStore, sub: EventStore): EventStore {\n  let { defs, instances } = master\n  let filteredDefs: { [defId: string]: EventDef } = {}\n  let filteredInstances: { [instanceId: string]: EventInstance } = {}\n\n  for (let defId in defs) {\n    if (!sub.defs[defId]) { // not explicitly excluded\n      filteredDefs[defId] = defs[defId]\n    }\n  }\n\n  for (let instanceId in instances) {\n    if (\n      !sub.instances[instanceId] && // not explicitly excluded\n      filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n    ) {\n      filteredInstances[instanceId] = instances[instanceId]\n    }\n  }\n\n  return {\n    defs: filteredDefs,\n    instances: filteredInstances,\n  }\n}\n", "import { EventStore, parseEvents } from './event-store'\nimport { EventInput } from './event-parse'\nimport { DateSpanApi } from './date-span'\nimport { EventApi } from '../api/EventApi'\nimport { SplittableProps } from '../component/event-splitting'\nimport { CalendarContext } from '../CalendarContext'\n\n// TODO: rename to \"criteria\" ?\nexport type ConstraintInput = 'businessHours' | string | EventInput | EventInput[]\nexport type Constraint = 'businessHours' | string | EventStore | false // false means won't pass at all\nexport type OverlapFunc = ((stillEvent: EventApi, movingEvent: EventApi | null) => boolean)\nexport type AllowFunc = (span: DateSpanApi, movingEvent: EventApi | null) => boolean\nexport type isPropsValidTester = (props: SplittableProps, context: CalendarContext) => boolean\n\nexport function normalizeConstraint(input: ConstraintInput, context: CalendarContext): Constraint | null {\n  if (Array.isArray(input)) {\n    return parseEvents(input, null, context, true) // allowOpenRange=true\n  } if (typeof input === 'object' && input) { // non-null object\n    return parseEvents([input], null, context, true) // allowOpenRange=true\n  } if (input != null) {\n    return String(input)\n  }\n  return null\n}\n", "export type ClassNamesInput = string | string[]\n\nexport function parseClassNames(raw: ClassNamesInput) {\n  if (Array.isArray(raw)) {\n    return raw\n  }\n\n  if (typeof raw === 'string') {\n    return raw.split(/\\s+/)\n  }\n\n  return []\n}\n", "import { Constraint, AllowFunc, normalizeConstraint } from '../structs/constraint'\nimport { parseClassNames } from '../util/html'\nimport { CalendarContext } from '../CalendarContext'\nimport { RawOptionsFromRefiners, RefinedOptionsFromRefiners, identity, Identity } from '../options'\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\n\nexport const EVENT_UI_REFINERS = {\n  display: String,\n  editable: Boolean,\n  startEditable: Boolean,\n  durationEditable: Boolean,\n  constraint: identity as Identity<any>, // Identity<ConstraintInput>, // circular reference. ts dies. event->constraint->event\n  overlap: identity as Identity<boolean>,\n  allow: identity as Identity<AllowFunc>,\n  className: parseClassNames, // will both end up as array of strings\n  classNames: parseClassNames, // \"\n  color: String,\n  backgroundColor: String,\n  borderColor: String,\n  textColor: String,\n}\n\nconst EMPTY_EVENT_UI: EventUi = {\n  display: null,\n  startEditable: null,\n  durationEditable: null,\n  constraints: [],\n  overlap: null,\n  allows: [],\n  backgroundColor: '',\n  borderColor: '',\n  textColor: '',\n  classNames: [],\n}\n\ntype BuiltInEventUiRefiners = typeof EVENT_UI_REFINERS\n\ninterface EventUiRefiners extends BuiltInEventUiRefiners {\n  // to prevent circular reference (and give is the option for ambient modification for later)\n}\n\nexport type EventUiInput = RawOptionsFromRefiners<Required<EventUiRefiners>> // Required hack\nexport type EventUiRefined = RefinedOptionsFromRefiners<Required<EventUiRefiners>> // Required hack\n\nexport interface EventUi {\n  display: string | null\n  startEditable: boolean | null\n  durationEditable: boolean | null\n  constraints: Constraint[]\n  overlap: boolean | null\n  allows: AllowFunc[] // crappy name to indicate plural\n  backgroundColor: string\n  borderColor: string\n  textColor: string,\n  classNames: string[]\n}\n\nexport type EventUiHash = { [defId: string]: EventUi }\n\nexport function createEventUi(refined: EventUiRefined, context: CalendarContext): EventUi {\n  let constraint = normalizeConstraint(refined.constraint, context)\n\n  return {\n    display: refined.display || null,\n    startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n    durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n    constraints: constraint != null ? [constraint] : [],\n    overlap: refined.overlap != null ? refined.overlap : null,\n    allows: refined.allow != null ? [refined.allow] : [],\n    backgroundColor: refined.backgroundColor || refined.color || '',\n    borderColor: refined.borderColor || refined.color || '',\n    textColor: refined.textColor || '',\n    classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural\n  }\n}\n\n// TODO: prevent against problems with <2 args!\nexport function combineEventUis(uis: EventUi[]): EventUi {\n  return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI)\n}\n\nfunction combineTwoEventUis(item0: EventUi, item1: EventUi): EventUi { // hash1 has higher precedence\n  return {\n    display: item1.display != null ? item1.display : item0.display,\n    startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n    durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n    constraints: item0.constraints.concat(item1.constraints),\n    overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n    allows: item0.allows.concat(item1.allows),\n    backgroundColor: item1.backgroundColor || item0.backgroundColor,\n    borderColor: item1.borderColor || item0.borderColor,\n    textColor: item1.textColor || item0.textColor,\n    classNames: item0.classNames.concat(item1.classNames),\n  }\n}\n", "import { __assign } from 'tslib'\nimport { guid } from '../util/misc'\nimport { DateInput } from '../datelib/env'\nimport { startOfDay } from '../datelib/marker'\nimport { parseRecurring } from './recurring-event'\nimport { CalendarContext } from '../CalendarContext'\nimport { EventDef } from './event-def'\nimport { createEventInstance, EventInstance } from './event-instance'\nimport { EventSource } from './event-source'\nimport { RefinedOptionsFromRefiners, RawOptionsFromRefiners, identity, Identity, Dictionary, refineProps } from '../options'\nimport { EVENT_UI_REFINERS, createEventUi, EventUiInput, EventUiRefined } from '../component/event-ui'\n\nexport const EVENT_NON_DATE_REFINERS = {\n  id: String,\n  groupId: String,\n  title: String,\n  url: String,\n  interactive: Boolean,\n}\n\nexport const EVENT_DATE_REFINERS = {\n  start: identity as Identity<DateInput>,\n  end: identity as Identity<DateInput>,\n  date: identity as Identity<DateInput>,\n  allDay: Boolean,\n}\n\nconst EVENT_REFINERS = { // does NOT include EVENT_UI_REFINERS\n  ...EVENT_NON_DATE_REFINERS,\n  ...EVENT_DATE_REFINERS,\n  extendedProps: identity as Identity<Dictionary>,\n}\n\ntype BuiltInEventRefiners = typeof EVENT_REFINERS\n\nexport interface EventRefiners extends BuiltInEventRefiners {\n  // for ambient\n}\n\nexport type EventInput =\n  EventUiInput &\n  RawOptionsFromRefiners<Required<EventRefiners>> & // Required hack\n  { [extendedProp: string]: any }\n\nexport type EventRefined =\n  EventUiRefined &\n  RefinedOptionsFromRefiners<Required<EventRefiners>> // Required hack\n\nexport interface EventTuple {\n  def: EventDef\n  instance: EventInstance | null\n}\n\nexport type EventInputTransformer = (input: EventInput) => EventInput\nexport type EventDefMemberAdder = (refined: EventRefined) => Partial<EventDef>\n\nexport function parseEvent(\n  raw: EventInput,\n  eventSource: EventSource<any> | null,\n  context: CalendarContext,\n  allowOpenRange: boolean,\n  refiners = buildEventRefiners(context),\n): EventTuple | null {\n  let { refined, extra } = refineEventDef(raw, context, refiners)\n\n  let defaultAllDay = computeIsDefaultAllDay(eventSource, context)\n  let recurringRes = parseRecurring(\n    refined,\n    defaultAllDay,\n    context.dateEnv,\n    context.pluginHooks.recurringTypes,\n  )\n\n  if (recurringRes) {\n    let def = parseEventDef(\n      refined,\n      extra,\n      eventSource ? eventSource.sourceId : '',\n      recurringRes.allDay,\n      Boolean(recurringRes.duration),\n      context,\n    )\n\n    def.recurringDef = { // don't want all the props from recurringRes. TODO: more efficient way to do this\n      typeId: recurringRes.typeId,\n      typeData: recurringRes.typeData,\n      duration: recurringRes.duration,\n    }\n\n    return { def, instance: null }\n  }\n  let singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange)\n\n  if (singleRes) {\n    let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context)\n    let instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo)\n\n    return { def, instance }\n  }\n\n  return null\n}\n\nexport function refineEventDef(raw: EventInput, context: CalendarContext, refiners = buildEventRefiners(context)) {\n  return refineProps(raw, refiners)\n}\n\nexport function buildEventRefiners(context: CalendarContext) {\n  return { ...EVENT_UI_REFINERS, ...EVENT_REFINERS, ...context.pluginHooks.eventRefiners }\n}\n\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nexport function parseEventDef(\n  refined: EventRefined,\n  extra: Dictionary,\n  sourceId: string,\n  allDay: boolean,\n  hasEnd: boolean,\n  context: CalendarContext,\n): EventDef {\n  let def: EventDef = {\n    title: refined.title || '',\n    groupId: refined.groupId || '',\n    publicId: refined.id || '',\n    url: refined.url || '',\n    recurringDef: null,\n    defId: guid(),\n    sourceId,\n    allDay,\n    hasEnd,\n    interactive: refined.interactive,\n    ui: createEventUi(refined, context),\n    extendedProps: {\n      ...(refined.extendedProps || {}),\n      ...extra,\n    },\n  }\n\n  for (let memberAdder of context.pluginHooks.eventDefMemberAdders) {\n    __assign(def, memberAdder(refined))\n  }\n\n  // help out EventApi from having user modify props\n  Object.freeze(def.ui.classNames)\n  Object.freeze(def.extendedProps)\n\n  return def\n}\n\nfunction parseSingle(refined: EventRefined, defaultAllDay: boolean | null, context: CalendarContext, allowOpenRange?: boolean) {\n  let { allDay } = refined\n  let startMeta\n  let startMarker = null\n  let hasEnd = false\n  let endMeta\n  let endMarker = null\n\n  let startInput = refined.start != null ? refined.start : refined.date\n  startMeta = context.dateEnv.createMarkerMeta(startInput)\n\n  if (startMeta) {\n    startMarker = startMeta.marker\n  } else if (!allowOpenRange) {\n    return null\n  }\n\n  if (refined.end != null) {\n    endMeta = context.dateEnv.createMarkerMeta(refined.end)\n  }\n\n  if (allDay == null) {\n    if (defaultAllDay != null) {\n      allDay = defaultAllDay\n    } else {\n      // fall back to the date props LAST\n      allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n        (!endMeta || endMeta.isTimeUnspecified)\n    }\n  }\n\n  if (allDay && startMarker) {\n    startMarker = startOfDay(startMarker)\n  }\n\n  if (endMeta) {\n    endMarker = endMeta.marker\n\n    if (allDay) {\n      endMarker = startOfDay(endMarker)\n    }\n\n    if (startMarker && endMarker <= startMarker) {\n      endMarker = null\n    }\n  }\n\n  if (endMarker) {\n    hasEnd = true\n  } else if (!allowOpenRange) {\n    hasEnd = context.options.forceEventDuration || false\n\n    endMarker = context.dateEnv.add(\n      startMarker,\n      allDay ?\n        context.options.defaultAllDayEventDuration :\n        context.options.defaultTimedEventDuration,\n    )\n  }\n\n  return {\n    allDay,\n    hasEnd,\n    range: { start: startMarker, end: endMarker },\n    forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n    forcedEndTzo: endMeta ? endMeta.forcedTzo : null,\n  }\n}\n\nfunction computeIsDefaultAllDay(eventSource: EventSource<any> | null, context: CalendarContext): boolean | null {\n  let res = null\n\n  if (eventSource) {\n    res = eventSource.defaultAllDay\n  }\n\n  if (res == null) {\n    res = context.options.defaultAllDay\n  }\n\n  return res\n}\n", "import { DateMarker, startOfDay, addDays, diffDays, diffDayAndTime } from '../datelib/marker'\nimport { Duration, asRoughMs, createDuration } from '../datelib/duration'\nimport { DateEnv } from '../datelib/env'\nimport { DateRange, OpenDateRange } from '../datelib/date-range'\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nexport function computeAlignedDayRange(timedRange: DateRange): DateRange {\n  let dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1\n  let start = startOfDay(timedRange.start)\n  let end = addDays(start, dayCnt)\n  return { start, end }\n}\n\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nexport function computeVisibleDayRange(timedRange: OpenDateRange, nextDayThreshold: Duration = createDuration(0)): OpenDateRange {\n  let startDay: DateMarker = null\n  let endDay: DateMarker = null\n\n  if (timedRange.end) {\n    endDay = startOfDay(timedRange.end)\n\n    let endTimeMS: number = timedRange.end.valueOf() - endDay.valueOf() // # of milliseconds into `endDay`\n\n    // If the end time is actually inclusively part of the next day and is equal to or\n    // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n    // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n    if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n      endDay = addDays(endDay, 1)\n    }\n  }\n\n  if (timedRange.start) {\n    startDay = startOfDay(timedRange.start) // the beginning of the day the range starts\n\n    // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n    if (endDay && endDay <= startDay) {\n      endDay = addDays(startDay, 1)\n    }\n  }\n\n  return { start: startDay, end: endDay }\n}\n\n// spans from one day into another?\nexport function isMultiDayRange(range: DateRange) {\n  let visibleRange = computeVisibleDayRange(range)\n\n  return diffDays(visibleRange.start, visibleRange.end) > 1\n}\n\nexport function diffDates(date0: DateMarker, date1: DateMarker, dateEnv: DateEnv, largeUnit?: string) {\n  if (largeUnit === 'year') {\n    return createDuration(dateEnv.diffWholeYears(date0, date1), 'year')!\n  }\n\n  if (largeUnit === 'month') {\n    return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month')!\n  }\n\n  return diffDayAndTime(date0, date1) // returns a duration\n}\n", "import { DateMarker } from './marker'\nimport { DateEnv, DateInput } from './env'\n\nexport interface DateRangeInput {\n  start?: DateInput\n  end?: DateInput\n}\n\nexport interface OpenDateRange {\n  start: DateMarker | null\n  end: DateMarker | null\n}\n\nexport interface DateRange {\n  start: DateMarker\n  end: DateMarker\n}\n\nexport function parseRange(input: DateRangeInput, dateEnv: DateEnv): OpenDateRange {\n  let start = null\n  let end = null\n\n  if (input.start) {\n    start = dateEnv.createMarker(input.start)\n  }\n\n  if (input.end) {\n    end = dateEnv.createMarker(input.end)\n  }\n\n  if (!start && !end) {\n    return null\n  }\n\n  if (start && end && end < start) {\n    return null\n  }\n\n  return { start, end }\n}\n\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nexport function invertRanges(ranges: DateRange[], constraintRange: DateRange): DateRange[] {\n  let invertedRanges: DateRange[] = []\n  let { start } = constraintRange // the end of the previous range. the start of the new range\n  let i\n  let dateRange\n\n  // ranges need to be in order. required for our date-walking algorithm\n  ranges.sort(compareRanges)\n\n  for (i = 0; i < ranges.length; i += 1) {\n    dateRange = ranges[i]\n\n    // add the span of time before the event (if there is any)\n    if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n      invertedRanges.push({ start, end: dateRange.start })\n    }\n\n    if (dateRange.end > start) {\n      start = dateRange.end\n    }\n  }\n\n  // add the span of time after the last event (if there is any)\n  if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n    invertedRanges.push({ start, end: constraintRange.end })\n  }\n\n  return invertedRanges\n}\n\nfunction compareRanges(range0: DateRange, range1: DateRange) {\n  return range0.start.valueOf() - range1.start.valueOf() // earlier ranges go first\n}\n\nexport function intersectRanges(range0: OpenDateRange, range1: OpenDateRange): OpenDateRange {\n  let { start, end } = range0\n  let newRange = null\n\n  if (range1.start !== null) {\n    if (start === null) {\n      start = range1.start\n    } else {\n      start = new Date(Math.max(start.valueOf(), range1.start.valueOf()))\n    }\n  }\n\n  if (range1.end != null) {\n    if (end === null) {\n      end = range1.end\n    } else {\n      end = new Date(Math.min(end.valueOf(), range1.end.valueOf()))\n    }\n  }\n\n  if (start === null || end === null || start < end) {\n    newRange = { start, end }\n  }\n\n  return newRange\n}\n\nexport function rangesEqual(range0: OpenDateRange, range1: OpenDateRange): boolean {\n  return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n    (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf())\n}\n\nexport function rangesIntersect(range0: OpenDateRange, range1: OpenDateRange): boolean {\n  return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n    (range0.start === null || range1.end === null || range0.start < range1.end)\n}\n\nexport function rangeContainsRange(outerRange: OpenDateRange, innerRange: OpenDateRange): boolean {\n  return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n    (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end))\n}\n\nexport function rangeContainsMarker(range: OpenDateRange, date: DateMarker | number): boolean { // date can be a millisecond time\n  return (range.start === null || date >= range.start) &&\n    (range.end === null || date < range.end)\n}\n\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nexport function constrainMarkerToRange(date: DateMarker, range: DateRange): DateMarker {\n  if (range.start != null && date < range.start) {\n    return range.start\n  }\n\n  if (range.end != null && date >= range.end) {\n    return new Date(range.end.valueOf() - 1)\n  }\n\n  return date\n}\n", "import { EventDef, EventDefHash } from '../structs/event-def'\nimport { EventTuple } from '../structs/event-parse'\nimport { EventStore } from '../structs/event-store'\nimport { DateRange, invertRanges, intersectRanges, rangeContainsMarker } from '../datelib/date-range'\nimport { Duration } from '../datelib/duration'\nimport { compareByFieldSpecs, OrderSpec } from '../util/misc'\nimport { computeVisibleDayRange } from '../util/date'\nimport { Seg } from './DateComponent'\nimport { EventApi } from '../api/EventApi'\nimport { EventUi, EventUiHash, combineEventUis } from './event-ui'\nimport { mapHash } from '../util/object'\nimport { ViewContext } from '../ViewContext'\nimport { DateFormatter } from '../datelib/DateFormatter'\nimport { addMs, DateMarker, startOfDay } from '../datelib/marker'\nimport { ViewApi } from '../ViewApi'\nimport { MountArg } from '../common/render-hook'\nimport { createAriaKeyboardAttrs } from '../util/dom-event'\n\nexport interface EventRenderRange extends EventTuple {\n  ui: EventUi\n  range: DateRange\n  isStart: boolean\n  isEnd: boolean\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nexport function sliceEventStore(eventStore: EventStore, eventUiBases: EventUiHash, framingRange: DateRange, nextDayThreshold?: Duration) {\n  let inverseBgByGroupId: { [groupId: string]: DateRange[] } = {}\n  let inverseBgByDefId: { [defId: string]: DateRange[] } = {}\n  let defByGroupId: { [groupId: string]: EventDef } = {}\n  let bgRanges: EventRenderRange[] = []\n  let fgRanges: EventRenderRange[] = []\n  let eventUis = compileEventUis(eventStore.defs, eventUiBases)\n\n  for (let defId in eventStore.defs) {\n    let def = eventStore.defs[defId]\n    let ui = eventUis[def.defId]\n\n    if (ui.display === 'inverse-background') {\n      if (def.groupId) {\n        inverseBgByGroupId[def.groupId] = []\n\n        if (!defByGroupId[def.groupId]) {\n          defByGroupId[def.groupId] = def\n        }\n      } else {\n        inverseBgByDefId[defId] = []\n      }\n    }\n  }\n\n  for (let instanceId in eventStore.instances) {\n    let instance = eventStore.instances[instanceId]\n    let def = eventStore.defs[instance.defId]\n    let ui = eventUis[def.defId]\n    let origRange = instance.range\n\n    let normalRange = (!def.allDay && nextDayThreshold) ?\n      computeVisibleDayRange(origRange, nextDayThreshold) :\n      origRange\n\n    let slicedRange = intersectRanges(normalRange, framingRange)\n\n    if (slicedRange) {\n      if (ui.display === 'inverse-background') {\n        if (def.groupId) {\n          inverseBgByGroupId[def.groupId].push(slicedRange)\n        } else {\n          inverseBgByDefId[instance.defId].push(slicedRange)\n        }\n      } else if (ui.display !== 'none') {\n        (ui.display === 'background' ? bgRanges : fgRanges).push({\n          def,\n          ui,\n          instance,\n          range: slicedRange,\n          isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n          isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),\n        })\n      }\n    }\n  }\n\n  for (let groupId in inverseBgByGroupId) { // BY GROUP\n    let ranges = inverseBgByGroupId[groupId]\n    let invertedRanges = invertRanges(ranges, framingRange)\n\n    for (let invertedRange of invertedRanges) {\n      let def = defByGroupId[groupId]\n      let ui = eventUis[def.defId]\n\n      bgRanges.push({\n        def,\n        ui,\n        instance: null,\n        range: invertedRange,\n        isStart: false,\n        isEnd: false,\n      })\n    }\n  }\n\n  for (let defId in inverseBgByDefId) {\n    let ranges = inverseBgByDefId[defId]\n    let invertedRanges = invertRanges(ranges, framingRange)\n\n    for (let invertedRange of invertedRanges) {\n      bgRanges.push({\n        def: eventStore.defs[defId],\n        ui: eventUis[defId],\n        instance: null,\n        range: invertedRange,\n        isStart: false,\n        isEnd: false,\n      })\n    }\n  }\n\n  return { bg: bgRanges, fg: fgRanges }\n}\n\nexport function hasBgRendering(def: EventDef) {\n  return def.ui.display === 'background' || def.ui.display === 'inverse-background'\n}\n\nexport function setElSeg(el: HTMLElement, seg: Seg) {\n  (el as any).fcSeg = seg\n}\n\nexport function getElSeg(el: HTMLElement): Seg | null {\n  return (el as any).fcSeg ||\n    (el.parentNode as any).fcSeg || // for the harness\n    null\n}\n\n// event ui computation\n\nexport function compileEventUis(eventDefs: EventDefHash, eventUiBases: EventUiHash) {\n  return mapHash(eventDefs, (eventDef: EventDef) => compileEventUi(eventDef, eventUiBases))\n}\n\nexport function compileEventUi(eventDef: EventDef, eventUiBases: EventUiHash) {\n  let uis = []\n\n  if (eventUiBases['']) {\n    uis.push(eventUiBases[''])\n  }\n\n  if (eventUiBases[eventDef.defId]) {\n    uis.push(eventUiBases[eventDef.defId])\n  }\n\n  uis.push(eventDef.ui)\n\n  return combineEventUis(uis)\n}\n\nexport function sortEventSegs(segs, eventOrderSpecs: OrderSpec<EventApi>[]): Seg[] {\n  let objs = segs.map(buildSegCompareObj)\n\n  objs.sort((obj0, obj1) => compareByFieldSpecs(obj0, obj1, eventOrderSpecs))\n\n  return objs.map((c) => c._seg)\n}\n\n// returns a object with all primitive props that can be compared\nexport function buildSegCompareObj(seg: Seg) {\n  let { eventRange } = seg\n  let eventDef = eventRange.def\n  let range = eventRange.instance ? eventRange.instance.range : eventRange.range\n  let start = range.start ? range.start.valueOf() : 0 // TODO: better support for open-range events\n  let end = range.end ? range.end.valueOf() : 0 // \"\n\n  return {\n    ...eventDef.extendedProps,\n    ...eventDef,\n    id: eventDef.publicId,\n    start,\n    end,\n    duration: end - start,\n    allDay: Number(eventDef.allDay),\n    _seg: seg, // for later retrieval\n  }\n}\n\n// other stuff\n\nexport interface EventContentArg { // for *Content handlers\n  event: EventApi\n  timeText: string\n  backgroundColor: string // TODO: add other EventUi props?\n  borderColor: string //\n  textColor: string //\n  isDraggable: boolean\n  isStartResizable: boolean\n  isEndResizable: boolean\n  isMirror: boolean\n  isStart: boolean\n  isEnd: boolean\n  isPast: boolean\n  isFuture: boolean\n  isToday: boolean\n  isSelected: boolean\n  isDragging: boolean\n  isResizing: boolean\n  view: ViewApi // specifically for the API\n}\n\nexport type EventMountArg = MountArg<EventContentArg>\n\nexport function computeSegDraggable(seg: Seg, context: ViewContext) {\n  let { pluginHooks } = context\n  let transformers = pluginHooks.isDraggableTransformers\n  let { def, ui } = seg.eventRange\n  let val = ui.startEditable\n\n  for (let transformer of transformers) {\n    val = transformer(val, def, ui, context)\n  }\n\n  return val\n}\n\nexport function computeSegStartResizable(seg: Seg, context: ViewContext) {\n  return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart\n}\n\nexport function computeSegEndResizable(seg: Seg, context: ViewContext) {\n  return seg.isEnd && seg.eventRange.ui.durationEditable\n}\n\nexport function buildSegTimeText(\n  seg: Seg,\n  timeFormat: DateFormatter,\n  context: ViewContext,\n  defaultDisplayEventTime?: boolean, // defaults to true\n  defaultDisplayEventEnd?: boolean, // defaults to true\n  startOverride?: DateMarker,\n  endOverride?: DateMarker,\n) {\n  let { dateEnv, options } = context\n  let { displayEventTime, displayEventEnd } = options\n  let eventDef = seg.eventRange.def\n  let eventInstance = seg.eventRange.instance\n\n  if (displayEventTime == null) { displayEventTime = defaultDisplayEventTime !== false }\n  if (displayEventEnd == null) { displayEventEnd = defaultDisplayEventEnd !== false }\n\n  let wholeEventStart = eventInstance.range.start\n  let wholeEventEnd = eventInstance.range.end\n  let segStart = startOverride || seg.start || seg.eventRange.range.start\n  let segEnd = endOverride || seg.end || seg.eventRange.range.end\n  let isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf()\n  let isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf()\n\n  if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n    segStart = isStartDay ? wholeEventStart : segStart\n    segEnd = isEndDay ? wholeEventEnd : segEnd\n\n    if (displayEventEnd && eventDef.hasEnd) {\n      return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n        forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooooooooooo, give tzo if same date\n        forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,\n      })\n    }\n    return dateEnv.format(segStart, timeFormat, {\n      forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same\n    })\n  }\n\n  return ''\n}\n\nexport function getSegMeta(seg: Seg, todayRange: DateRange, nowDate?: DateMarker) { // TODO: make arg order consistent with date util\n  let segRange = seg.eventRange.range\n\n  return {\n    isPast: segRange.end < (nowDate || todayRange.start),\n    isFuture: segRange.start >= (nowDate || todayRange.end),\n    isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),\n  }\n}\n\nexport function getEventClassNames(props: EventContentArg) { // weird that we use this interface, but convenient\n  let classNames: string[] = ['fc-event']\n\n  if (props.isMirror) {\n    classNames.push('fc-event-mirror')\n  }\n\n  if (props.isDraggable) {\n    classNames.push('fc-event-draggable')\n  }\n\n  if (props.isStartResizable || props.isEndResizable) {\n    classNames.push('fc-event-resizable')\n  }\n\n  if (props.isDragging) {\n    classNames.push('fc-event-dragging')\n  }\n\n  if (props.isResizing) {\n    classNames.push('fc-event-resizing')\n  }\n\n  if (props.isSelected) {\n    classNames.push('fc-event-selected')\n  }\n\n  if (props.isStart) {\n    classNames.push('fc-event-start')\n  }\n\n  if (props.isEnd) {\n    classNames.push('fc-event-end')\n  }\n\n  if (props.isPast) {\n    classNames.push('fc-event-past')\n  }\n\n  if (props.isToday) {\n    classNames.push('fc-event-today')\n  }\n\n  if (props.isFuture) {\n    classNames.push('fc-event-future')\n  }\n\n  return classNames\n}\n\nexport function buildEventRangeKey(eventRange: EventRenderRange) {\n  return eventRange.instance\n    ? eventRange.instance.instanceId\n    : `${eventRange.def.defId}:${eventRange.range.start.toISOString()}`\n  // inverse-background events don't have specific instances. TODO: better solution\n}\n\nexport function getSegAnchorAttrs(seg: Seg, context: ViewContext) {\n  let { def, instance } = seg.eventRange\n  let { url } = def\n\n  if (url) {\n    return { href: url }\n  }\n\n  let { emitter, options } = context\n  let { eventInteractive } = options\n\n  if (eventInteractive == null) {\n    eventInteractive = def.interactive\n    if (eventInteractive == null) {\n      eventInteractive = Boolean(emitter.hasHandlers('eventClick'))\n    }\n  }\n\n  // mock what happens in EventClicking\n  if (eventInteractive) {\n    // only attach keyboard-related handlers because click handler is already done in EventClicking\n    return createAriaKeyboardAttrs((ev: UIEvent) => {\n      emitter.trigger('eventClick', {\n        el: ev.target as HTMLElement,\n        event: new EventApi(context, def, instance),\n        jsEvent: ev as MouseEvent,\n        view: context.viewApi,\n      })\n    })\n  }\n\n  return {}\n}\n", "import { DateRange, rangesEqual, OpenDateRange } from '../datelib/date-range'\nimport { DateInput, DateEnv } from '../datelib/env'\nimport { Duration } from '../datelib/duration'\nimport { createEventInstance } from './event-instance'\nimport { parseEventDef, refineEventDef } from './event-parse'\nimport { EventRenderRange, compileEventUi } from '../component/event-rendering'\nimport { EventUiHash } from '../component/event-ui'\nimport { CalendarContext } from '../CalendarContext'\nimport { refineProps, identity, Identity } from '../options'\n\n/*\nA data-structure for a date-range that will be visually displayed.\nContains other metadata like allDay, and anything else Components might like to store.\n\nTODO: in future, put otherProps in own object.\n*/\n\nexport interface OpenDateSpanInput {\n  start?: DateInput\n  end?: DateInput\n  allDay?: boolean\n  [otherProp: string]: any\n}\n\nexport interface DateSpanInput extends OpenDateSpanInput {\n  start: DateInput\n  end: DateInput\n}\n\nexport interface OpenDateSpan {\n  range: OpenDateRange\n  allDay: boolean\n  [otherProp: string]: any\n}\n\nexport interface DateSpan extends OpenDateSpan {\n  range: DateRange\n}\n\nexport interface RangeApi {\n  start: Date\n  end: Date\n  startStr: string\n  endStr: string\n}\n\nexport interface DateSpanApi extends RangeApi {\n  allDay: boolean\n}\n\nexport interface RangeApiWithTimeZone extends RangeApi {\n  timeZone: string\n}\n\nexport interface DatePointApi {\n  date: Date\n  dateStr: string\n  allDay: boolean\n}\n\nconst STANDARD_PROPS = {\n  start: identity as Identity<DateInput>,\n  end: identity as Identity<DateInput>,\n  allDay: Boolean,\n}\n\nexport function parseDateSpan(raw: DateSpanInput, dateEnv: DateEnv, defaultDuration?: Duration): DateSpan | null {\n  let span = parseOpenDateSpan(raw, dateEnv)\n  let { range } = span\n\n  if (!range.start) {\n    return null\n  }\n\n  if (!range.end) {\n    if (defaultDuration == null) {\n      return null\n    }\n    range.end = dateEnv.add(range.start, defaultDuration)\n  }\n\n  return span as DateSpan\n}\n\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nexport function parseOpenDateSpan(raw: OpenDateSpanInput, dateEnv: DateEnv): OpenDateSpan | null {\n  let { refined: standardProps, extra } = refineProps(raw, STANDARD_PROPS)\n  let startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null\n  let endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null\n  let { allDay } = standardProps\n\n  if (allDay == null) {\n    allDay = (startMeta && startMeta.isTimeUnspecified) &&\n      (!endMeta || endMeta.isTimeUnspecified)\n  }\n\n  return {\n    range: {\n      start: startMeta ? startMeta.marker : null,\n      end: endMeta ? endMeta.marker : null,\n    },\n    allDay,\n    ...extra,\n  }\n}\n\nexport function isDateSpansEqual(span0: DateSpan, span1: DateSpan): boolean {\n  return rangesEqual(span0.range, span1.range) &&\n    span0.allDay === span1.allDay &&\n    isSpanPropsEqual(span0, span1)\n}\n\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0: DateSpan, span1: DateSpan): boolean {\n  for (let propName in span1) {\n    if (propName !== 'range' && propName !== 'allDay') {\n      if (span0[propName] !== span1[propName]) {\n        return false\n      }\n    }\n  }\n\n  // are there any props that span0 has that span1 DOESN'T have?\n  // both have range/allDay, so no need to special-case.\n  for (let propName in span0) {\n    if (!(propName in span1)) {\n      return false\n    }\n  }\n\n  return true\n}\n\nexport function buildDateSpanApi(span: DateSpan, dateEnv: DateEnv): DateSpanApi {\n  return {\n    ...buildRangeApi(span.range, dateEnv, span.allDay),\n    allDay: span.allDay,\n  }\n}\n\nexport function buildRangeApiWithTimeZone(range: DateRange, dateEnv: DateEnv, omitTime?: boolean): RangeApiWithTimeZone {\n  return {\n    ...buildRangeApi(range, dateEnv, omitTime),\n    timeZone: dateEnv.timeZone,\n  }\n}\n\nexport function buildRangeApi(range: DateRange, dateEnv: DateEnv, omitTime?: boolean): RangeApi {\n  return {\n    start: dateEnv.toDate(range.start),\n    end: dateEnv.toDate(range.end),\n    startStr: dateEnv.formatIso(range.start, { omitTime }),\n    endStr: dateEnv.formatIso(range.end, { omitTime }),\n  }\n}\n\nexport function fabricateEventRange(dateSpan: DateSpan, eventUiBases: EventUiHash, context: CalendarContext): EventRenderRange {\n  let res = refineEventDef({ editable: false }, context)\n  let def = parseEventDef(\n    res.refined,\n    res.extra,\n    '', // sourceId\n    dateSpan.allDay,\n    true, // hasEnd\n    context,\n  )\n\n  return {\n    def,\n    ui: compileEventUi(def, eventUiBases),\n    instance: createEventInstance(def.defId, dateSpan.range),\n    range: dateSpan.range,\n    isStart: true,\n    isEnd: true,\n  }\n}\n", "import { __assign } from 'tslib'\nimport { PointerDragEvent } from './interactions/pointer'\nimport { buildDateSpanApi, DateSpanApi, DatePointApi, DateSpan } from './structs/date-span'\nimport { CalendarContext } from './CalendarContext'\nimport { ViewApi } from './ViewApi'\nimport { DateMarker, startOfDay } from './datelib/marker'\n\nexport interface DateClickApi extends DatePointApi {\n  dayEl: HTMLElement\n  jsEvent: UIEvent\n  view: ViewApi\n}\n\nexport interface DateSelectionApi extends DateSpanApi {\n  jsEvent: UIEvent\n  view: ViewApi\n}\n\nexport type DatePointTransform = (dateSpan: DateSpan, context: CalendarContext) => any\nexport type DateSpanTransform = (dateSpan: DateSpan, context: CalendarContext) => any\n\nexport type CalendarInteraction = { destroy: () => void }\nexport type CalendarInteractionClass = { new(context: CalendarContext): CalendarInteraction }\n\nexport type OptionChangeHandler = (propValue: any, context: CalendarContext) => void\nexport type OptionChangeHandlerMap = { [propName: string]: OptionChangeHandler }\n\nexport interface DateSelectArg extends DateSpanApi {\n  jsEvent: MouseEvent | null\n  view: ViewApi\n}\n\nexport function triggerDateSelect(selection: DateSpan, pev: PointerDragEvent | null, context: CalendarContext & { viewApi?: ViewApi }) {\n  context.emitter.trigger('select', {\n    ...buildDateSpanApiWithContext(selection, context),\n    jsEvent: pev ? pev.origEvent as MouseEvent : null, // Is this always a mouse event? See #4655\n    view: context.viewApi || context.calendarApi.view,\n  } as DateSelectArg)\n}\n\nexport interface DateUnselectArg {\n  jsEvent: MouseEvent\n  view: ViewApi\n}\n\nexport function triggerDateUnselect(pev: PointerDragEvent | null, context: CalendarContext & { viewApi?: ViewApi }) {\n  context.emitter.trigger('unselect', {\n    jsEvent: pev ? pev.origEvent : null,\n    view: context.viewApi || context.calendarApi.view,\n  } as DateUnselectArg)\n}\n\nexport function buildDateSpanApiWithContext(dateSpan: DateSpan, context: CalendarContext) {\n  let props = {} as DateSpanApi\n\n  for (let transform of context.pluginHooks.dateSpanTransforms) {\n    __assign(props, transform(dateSpan, context))\n  }\n\n  __assign(props, buildDateSpanApi(dateSpan, context.dateEnv))\n\n  return props\n}\n\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nexport function getDefaultEventEnd(allDay: boolean, marker: DateMarker, context: CalendarContext): DateMarker {\n  let { dateEnv, options } = context\n  let end = marker\n\n  if (allDay) {\n    end = startOfDay(end)\n    end = dateEnv.add(end, options.defaultAllDayEventDuration)\n  } else {\n    end = dateEnv.add(end, options.defaultTimedEventDuration)\n  }\n\n  return end\n}\n", "import { Duration } from '../datelib/duration'\nimport { EventStore, createEmptyEventStore } from './event-store'\nimport { EventDef } from './event-def'\nimport { EventInstance } from './event-instance'\nimport { computeAlignedDayRange } from '../util/date'\nimport { startOfDay } from '../datelib/marker'\nimport { EventUiHash, EventUi } from '../component/event-ui'\nimport { compileEventUis } from '../component/event-rendering'\nimport { CalendarContext } from '../CalendarContext'\nimport { getDefaultEventEnd } from '../calendar-utils'\n\n/*\nA data structure for how to modify an EventDef/EventInstance within an EventStore\n*/\n\nexport interface EventMutation {\n  datesDelta?: Duration // body start+end moving together. for dragging\n  startDelta?: Duration // for resizing\n  endDelta?: Duration // for resizing\n  standardProps?: any // for the def. should not include extendedProps\n  extendedProps?: any // for the def\n}\n\n// applies the mutation to ALL defs/instances within the event store\nexport function applyMutationToEventStore(\n  eventStore: EventStore,\n  eventConfigBase: EventUiHash,\n  mutation: EventMutation,\n  context: CalendarContext,\n): EventStore {\n  let eventConfigs = compileEventUis(eventStore.defs, eventConfigBase)\n  let dest = createEmptyEventStore()\n\n  for (let defId in eventStore.defs) {\n    let def = eventStore.defs[defId]\n\n    dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context)\n  }\n\n  for (let instanceId in eventStore.instances) {\n    let instance = eventStore.instances[instanceId]\n    let def = dest.defs[instance.defId] // important to grab the newly modified def\n\n    dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context)\n  }\n\n  return dest\n}\n\nexport type eventDefMutationApplier = (eventDef: EventDef, mutation: EventMutation, context: CalendarContext) => void\n\nfunction applyMutationToEventDef(eventDef: EventDef, eventConfig: EventUi, mutation: EventMutation, context: CalendarContext): EventDef {\n  let standardProps = mutation.standardProps || {}\n\n  // if hasEnd has not been specified, guess a good value based on deltas.\n  // if duration will change, there's no way the default duration will persist,\n  // and thus, we need to mark the event as having a real end\n  if (\n    standardProps.hasEnd == null &&\n    eventConfig.durationEditable &&\n    (mutation.startDelta || mutation.endDelta)\n  ) {\n    standardProps.hasEnd = true // TODO: is this mutation okay?\n  }\n\n  let copy: EventDef = {\n    ...eventDef,\n    ...standardProps,\n    ui: { ...eventDef.ui, ...standardProps.ui }, // the only prop we want to recursively overlay\n  }\n\n  if (mutation.extendedProps) {\n    copy.extendedProps = { ...copy.extendedProps, ...mutation.extendedProps }\n  }\n\n  for (let applier of context.pluginHooks.eventDefMutationAppliers) {\n    applier(copy, mutation, context)\n  }\n\n  if (!copy.hasEnd && context.options.forceEventDuration) {\n    copy.hasEnd = true\n  }\n\n  return copy\n}\n\nfunction applyMutationToEventInstance(\n  eventInstance: EventInstance,\n  eventDef: EventDef, // must first be modified by applyMutationToEventDef\n  eventConfig: EventUi,\n  mutation: EventMutation,\n  context: CalendarContext,\n): EventInstance {\n  let { dateEnv } = context\n  let forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true\n  let clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false\n  let copy = { ...eventInstance } as EventInstance\n\n  if (forceAllDay) {\n    copy.range = computeAlignedDayRange(copy.range)\n  }\n\n  if (mutation.datesDelta && eventConfig.startEditable) {\n    copy.range = {\n      start: dateEnv.add(copy.range.start, mutation.datesDelta),\n      end: dateEnv.add(copy.range.end, mutation.datesDelta),\n    }\n  }\n\n  if (mutation.startDelta && eventConfig.durationEditable) {\n    copy.range = {\n      start: dateEnv.add(copy.range.start, mutation.startDelta),\n      end: copy.range.end,\n    }\n  }\n\n  if (mutation.endDelta && eventConfig.durationEditable) {\n    copy.range = {\n      start: copy.range.start,\n      end: dateEnv.add(copy.range.end, mutation.endDelta),\n    }\n  }\n\n  if (clearEnd) {\n    copy.range = {\n      start: copy.range.start,\n      end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),\n    }\n  }\n\n  // in case event was all-day but the supplied deltas were not\n  // better util for this?\n  if (eventDef.allDay) {\n    copy.range = {\n      start: startOfDay(copy.range.start),\n      end: startOfDay(copy.range.end),\n    }\n  }\n\n  // handle invalid durations\n  if (copy.range.end < copy.range.start) {\n    copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context)\n  }\n\n  return copy\n}\n", "import { DateEnv } from './datelib/env'\nimport { CalendarData } from './reducers/data-types'\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\n\nexport class ViewApi { // always represents the current view. otherwise, it'd need to change value every time date changes\n  constructor(\n    public type: string,\n    private getCurrentData: () => CalendarData,\n    private dateEnv: DateEnv,\n  ) {\n  }\n\n  get calendar() {\n    return this.getCurrentData().calendarApi\n  }\n\n  get title() {\n    return this.getCurrentData().viewTitle\n  }\n\n  get activeStart() {\n    return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)\n  }\n\n  get activeEnd() {\n    return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)\n  }\n\n  get currentStart() {\n    return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)\n  }\n\n  get currentEnd() {\n    return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)\n  }\n\n  getOption(name: string) {\n    return this.getCurrentData().options[name] // are the view-specific options\n  }\n}\n", "import { EventInput, EventInputTransformer } from './event-parse'\nimport { EventSourceFunc } from '../event-sources/func-event-source'\nimport { EventSource, EventSourceSuccessResponseHandler, EventSourceErrorResponseHandler } from './event-source'\nimport { JSON_FEED_EVENT_SOURCE_REFINERS } from '../event-sources/json-feed-event-source-refiners'\nimport { CalendarContext } from '../CalendarContext'\nimport { guid } from '../util/misc'\nimport { EVENT_UI_REFINERS, createEventUi, EventUiInput, EventUiRefined } from '../component/event-ui'\nimport { identity, Identity, RawOptionsFromRefiners, refineProps, RefinedOptionsFromRefiners } from '../options'\n\nconst EVENT_SOURCE_REFINERS = { // does NOT include EVENT_UI_REFINERS\n  id: String,\n  defaultAllDay: Boolean,\n  url: String,\n  format: String,\n  events: identity as Identity<EventInput[] | EventSourceFunc>, // array or function\n  eventDataTransform: identity as Identity<EventInputTransformer>,\n\n  // for any network-related sources\n  success: identity as Identity<EventSourceSuccessResponseHandler>,\n  failure: identity as Identity<EventSourceErrorResponseHandler>,\n}\n\ntype BuiltInEventSourceRefiners = typeof EVENT_SOURCE_REFINERS &\n  typeof JSON_FEED_EVENT_SOURCE_REFINERS\n\nexport interface EventSourceRefiners extends BuiltInEventSourceRefiners {\n  // for extending\n}\n\nexport type EventSourceInputObject =\n  EventUiInput &\n  RawOptionsFromRefiners<Required<EventSourceRefiners>> // Required hack\n\nexport type EventSourceInput =\n  EventSourceInputObject | // object in extended form\n  EventInput[] |\n  EventSourceFunc | // just a function\n  string // a URL for a JSON feed\n\nexport type EventSourceRefined =\n  EventUiRefined &\n  RefinedOptionsFromRefiners<Required<EventSourceRefiners>> // Required hack\n\nexport function parseEventSource(\n  raw: EventSourceInput,\n  context: CalendarContext,\n  refiners = buildEventSourceRefiners(context),\n): EventSource<any> | null {\n  let rawObj: EventSourceInputObject\n\n  if (typeof raw === 'string') {\n    rawObj = { url: raw }\n  } else if (typeof raw === 'function' || Array.isArray(raw)) {\n    rawObj = { events: raw }\n  } else if (typeof raw === 'object' && raw) { // not null\n    rawObj = raw\n  }\n\n  if (rawObj) {\n    let { refined, extra } = refineProps(rawObj, refiners)\n    let metaRes = buildEventSourceMeta(refined, context)\n\n    if (metaRes) {\n      return {\n        _raw: raw,\n        isFetching: false,\n        latestFetchId: '',\n        fetchRange: null,\n        defaultAllDay: refined.defaultAllDay,\n        eventDataTransform: refined.eventDataTransform,\n        success: refined.success,\n        failure: refined.failure,\n        publicId: refined.id || '',\n        sourceId: guid(),\n        sourceDefId: metaRes.sourceDefId,\n        meta: metaRes.meta,\n        ui: createEventUi(refined, context),\n        extendedProps: extra,\n      }\n    }\n  }\n\n  return null\n}\n\nexport function buildEventSourceRefiners(context: CalendarContext) {\n  return { ...EVENT_UI_REFINERS, ...EVENT_SOURCE_REFINERS, ...context.pluginHooks.eventSourceRefiners }\n}\n\nfunction buildEventSourceMeta(raw: EventSourceRefined, context: CalendarContext) {\n  let defs = context.pluginHooks.eventSourceDefs\n\n  for (let i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n    let def = defs[i]\n    let meta = def.parseMeta(raw)\n\n    if (meta) {\n      return { sourceDefId: i, meta }\n    }\n  }\n\n  return null\n}\n", "import { DateEnv, DateInput } from '../datelib/env'\nimport { DateMarker } from '../datelib/marker'\nimport { Action } from './Action'\nimport { BaseOptionsRefined } from '../options'\n\nexport function reduceCurrentDate(currentDate: DateMarker, action: Action) {\n  switch (action.type) {\n    case 'CHANGE_DATE':\n      return action.dateMarker\n    default:\n      return currentDate\n  }\n}\n\nexport function getInitialDate(options: BaseOptionsRefined, dateEnv: DateEnv) {\n  let initialDateInput = options.initialDate\n\n  // compute the initial ambig-timezone date\n  if (initialDateInput != null) {\n    return dateEnv.createMarker(initialDateInput)\n  }\n  return getNow(options.now, dateEnv) // getNow already returns unzoned\n}\n\nexport function getNow(nowInput: DateInput | (() => DateInput), dateEnv: DateEnv) {\n  if (typeof nowInput === 'function') {\n    nowInput = nowInput()\n  }\n\n  if (nowInput == null) {\n    return dateEnv.createNowMarker()\n  }\n\n  return dateEnv.createMarker(nowInput)\n}\n", "import { DateMarker } from './datelib/marker'\nimport { createFormatter } from './datelib/formatting'\nimport { createDuration } from './datelib/duration'\nimport { parseDateSpan } from './structs/date-span'\nimport { parseEventSource } from './structs/event-source-parse'\nimport { parseEvent } from './structs/event-parse'\nimport { eventTupleToStore } from './structs/event-store'\nimport { ViewSpec } from './structs/view-spec'\nimport { PointerDragEvent } from './interactions/pointer'\nimport { getNow } from './reducers/current-date'\nimport { triggerDateSelect, triggerDateUnselect } from './calendar-utils'\nimport { hashValuesToArray } from './util/object'\nimport { CalendarDataManager } from './reducers/CalendarDataManager'\nimport { Action } from './reducers/Action'\nimport { EventSource } from './structs/event-source'\nimport { eventApiToStore, buildEventApis } from './api/EventApi'\n\n// public\nimport {\n  CalendarOptions,\n  CalendarListeners,\n  DateInput,\n  DurationInput,\n  DateSpanInput,\n  DateRangeInput,\n  EventSourceInput,\n  EventInput,\n  EventSourceApi,\n  EventApi,\n  ViewApi,\n} from './api-type-deps'\n\nexport class CalendarApi {\n  currentDataManager?: CalendarDataManager // will be set by CalendarDataManager\n\n  getCurrentData() {\n    return this.currentDataManager!.getCurrentData()\n  }\n\n  dispatch(action: Action) {\n    return this.currentDataManager!.dispatch(action)\n  }\n\n  get view(): ViewApi { return this.getCurrentData().viewApi } // for public API\n\n  batchRendering(callback: () => void) { // subclasses should implement\n    callback()\n  }\n\n  updateSize() { // public\n    this.trigger('_resize', true)\n  }\n\n  // Options\n  // -----------------------------------------------------------------------------------------------------------------\n\n  setOption<OptionName extends keyof CalendarOptions>(name: OptionName, val: CalendarOptions[OptionName]) {\n    this.dispatch({\n      type: 'SET_OPTION',\n      optionName: name,\n      rawOptionValue: val,\n    })\n  }\n\n  getOption<OptionName extends keyof CalendarOptions>(name: OptionName): CalendarOptions[OptionName] { // getter, used externally. WTF TS\n    return this.currentDataManager!.currentCalendarOptionsInput[name]\n  }\n\n  getAvailableLocaleCodes() {\n    return Object.keys(this.getCurrentData().availableRawLocales)\n  }\n\n  // Trigger\n  // -----------------------------------------------------------------------------------------------------------------\n\n  on<ListenerName extends keyof CalendarListeners>(handlerName: ListenerName, handler: CalendarListeners[ListenerName]) {\n    let { currentDataManager } = this\n\n    if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n      currentDataManager.emitter.on(handlerName, handler)\n    } else {\n      console.warn(`Unknown listener name '${handlerName}'`)\n    }\n  }\n\n  off<ListenerName extends keyof CalendarListeners>(handlerName: ListenerName, handler: CalendarListeners[ListenerName]) {\n    this.currentDataManager!.emitter.off(handlerName, handler)\n  }\n\n  // not meant for public use\n  trigger<ListenerName extends keyof CalendarListeners>(handlerName: ListenerName, ...args: Parameters<CalendarListeners[ListenerName]>) {\n    this.currentDataManager!.emitter.trigger(handlerName, ...args)\n  }\n\n  // View\n  // -----------------------------------------------------------------------------------------------------------------\n\n  changeView(viewType: string, dateOrRange?: DateRangeInput | DateInput) {\n    this.batchRendering(() => {\n      this.unselect()\n\n      if (dateOrRange) {\n        if ((dateOrRange as DateRangeInput).start && (dateOrRange as DateRangeInput).end) { // a range\n          this.dispatch({\n            type: 'CHANGE_VIEW_TYPE',\n            viewType,\n          })\n          this.dispatch({ // not very efficient to do two dispatches\n            type: 'SET_OPTION',\n            optionName: 'visibleRange',\n            rawOptionValue: dateOrRange,\n          })\n        } else {\n          let { dateEnv } = this.getCurrentData()\n\n          this.dispatch({\n            type: 'CHANGE_VIEW_TYPE',\n            viewType,\n            dateMarker: dateEnv.createMarker(dateOrRange as DateInput),\n          })\n        }\n      } else {\n        this.dispatch({\n          type: 'CHANGE_VIEW_TYPE',\n          viewType,\n        })\n      }\n    })\n  }\n\n  // Forces navigation to a view for the given date.\n  // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n  // needs to change\n  zoomTo(dateMarker: DateMarker, viewType?: string) {\n    let state = this.getCurrentData()\n    let spec\n\n    viewType = viewType || 'day' // day is default zoom\n    spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType)\n\n    this.unselect()\n\n    if (spec) {\n      this.dispatch({\n        type: 'CHANGE_VIEW_TYPE',\n        viewType: spec.type,\n        dateMarker,\n      })\n    } else {\n      this.dispatch({\n        type: 'CHANGE_DATE',\n        dateMarker,\n      })\n    }\n  }\n\n  // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n  // Preference is given to views that have corresponding buttons.\n  private getUnitViewSpec(unit: string): ViewSpec | null {\n    let { viewSpecs, toolbarConfig } = this.getCurrentData()\n    let viewTypes = [].concat(\n      toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [],\n      toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : [],\n    )\n    let i\n    let spec\n\n    for (let viewType in viewSpecs) {\n      viewTypes.push(viewType)\n    }\n\n    for (i = 0; i < viewTypes.length; i += 1) {\n      spec = viewSpecs[viewTypes[i]]\n      if (spec) {\n        if (spec.singleUnit === unit) {\n          return spec\n        }\n      }\n    }\n\n    return null\n  }\n\n  // Current Date\n  // -----------------------------------------------------------------------------------------------------------------\n\n  prev() {\n    this.unselect()\n    this.dispatch({ type: 'PREV' })\n  }\n\n  next() {\n    this.unselect()\n    this.dispatch({ type: 'NEXT' })\n  }\n\n  prevYear() {\n    let state = this.getCurrentData()\n    this.unselect()\n    this.dispatch({\n      type: 'CHANGE_DATE',\n      dateMarker: state.dateEnv.addYears(state.currentDate, -1),\n    })\n  }\n\n  nextYear() {\n    let state = this.getCurrentData()\n\n    this.unselect()\n    this.dispatch({\n      type: 'CHANGE_DATE',\n      dateMarker: state.dateEnv.addYears(state.currentDate, 1),\n    })\n  }\n\n  today() {\n    let state = this.getCurrentData()\n\n    this.unselect()\n    this.dispatch({\n      type: 'CHANGE_DATE',\n      dateMarker: getNow(state.calendarOptions.now, state.dateEnv),\n    })\n  }\n\n  gotoDate(zonedDateInput) {\n    let state = this.getCurrentData()\n\n    this.unselect()\n    this.dispatch({\n      type: 'CHANGE_DATE',\n      dateMarker: state.dateEnv.createMarker(zonedDateInput),\n    })\n  }\n\n  incrementDate(deltaInput) { // is public facing\n    let state = this.getCurrentData()\n    let delta = createDuration(deltaInput)\n\n    if (delta) { // else, warn about invalid input?\n      this.unselect()\n      this.dispatch({\n        type: 'CHANGE_DATE',\n        dateMarker: state.dateEnv.add(state.currentDate, delta),\n      })\n    }\n  }\n\n  // for external API\n  getDate(): Date {\n    let state = this.getCurrentData()\n    return state.dateEnv.toDate(state.currentDate)\n  }\n\n  // Date Formatting Utils\n  // -----------------------------------------------------------------------------------------------------------------\n\n  formatDate(d: DateInput, formatter): string {\n    let { dateEnv } = this.getCurrentData()\n\n    return dateEnv.format(\n      dateEnv.createMarker(d),\n      createFormatter(formatter),\n    )\n  }\n\n  // `settings` is for formatter AND isEndExclusive\n  formatRange(d0: DateInput, d1: DateInput, settings) {\n    let { dateEnv } = this.getCurrentData()\n\n    return dateEnv.formatRange(\n      dateEnv.createMarker(d0),\n      dateEnv.createMarker(d1),\n      createFormatter(settings),\n      settings,\n    )\n  }\n\n  formatIso(d: DateInput, omitTime?: boolean) {\n    let { dateEnv } = this.getCurrentData()\n\n    return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime })\n  }\n\n  // Date Selection / Event Selection / DayClick\n  // -----------------------------------------------------------------------------------------------------------------\n\n  // this public method receives start/end dates in any format, with any timezone\n  // NOTE: args were changed from v3\n  select(dateOrObj: DateInput | any, endDate?: DateInput) {\n    let selectionInput: DateSpanInput\n\n    if (endDate == null) {\n      if (dateOrObj.start != null) {\n        selectionInput = dateOrObj as DateSpanInput\n      } else {\n        selectionInput = {\n          start: dateOrObj,\n          end: null,\n        }\n      }\n    } else {\n      selectionInput = {\n        start: dateOrObj,\n        end: endDate,\n      } as DateSpanInput\n    }\n\n    let state = this.getCurrentData()\n    let selection = parseDateSpan(\n      selectionInput,\n      state.dateEnv,\n      createDuration({ days: 1 }), // TODO: cache this?\n    )\n\n    if (selection) { // throw parse error otherwise?\n      this.dispatch({ type: 'SELECT_DATES', selection })\n      triggerDateSelect(selection, null, state)\n    }\n  }\n\n  // public method\n  unselect(pev?: PointerDragEvent) {\n    let state = this.getCurrentData()\n\n    if (state.dateSelection) {\n      this.dispatch({ type: 'UNSELECT_DATES' })\n      triggerDateUnselect(pev, state)\n    }\n  }\n\n  // Public Events API\n  // -----------------------------------------------------------------------------------------------------------------\n\n  addEvent(eventInput: EventInput, sourceInput?: EventSourceApi | string | boolean): EventApi | null {\n    if (eventInput instanceof EventApi) {\n      let def = eventInput._def\n      let instance = eventInput._instance\n      let currentData = this.getCurrentData()\n\n      // not already present? don't want to add an old snapshot\n      if (!currentData.eventStore.defs[def.defId]) {\n        this.dispatch({\n          type: 'ADD_EVENTS',\n          eventStore: eventTupleToStore({ def, instance }), // TODO: better util for two args?\n        })\n        this.triggerEventAdd(eventInput)\n      }\n\n      return eventInput\n    }\n\n    let state = this.getCurrentData()\n    let eventSource: EventSource<any>\n\n    if (sourceInput instanceof EventSourceApi) {\n      eventSource = sourceInput.internalEventSource\n    } else if (typeof sourceInput === 'boolean') {\n      if (sourceInput) { // true. part of the first event source\n        [eventSource] = hashValuesToArray(state.eventSources)\n      }\n    } else if (sourceInput != null) { // an ID. accepts a number too\n      let sourceApi = this.getEventSourceById(sourceInput) // TODO: use an internal function\n\n      if (!sourceApi) {\n        console.warn(`Could not find an event source with ID \"${sourceInput}\"`) // TODO: test\n        return null\n      }\n      eventSource = sourceApi.internalEventSource\n    }\n\n    let tuple = parseEvent(eventInput, eventSource, state, false)\n\n    if (tuple) {\n      let newEventApi = new EventApi(\n        state,\n        tuple.def,\n        tuple.def.recurringDef ? null : tuple.instance,\n      )\n      this.dispatch({\n        type: 'ADD_EVENTS',\n        eventStore: eventTupleToStore(tuple),\n      })\n      this.triggerEventAdd(newEventApi)\n\n      return newEventApi\n    }\n\n    return null\n  }\n\n  private triggerEventAdd(eventApi: EventApi) {\n    let { emitter } = this.getCurrentData()\n\n    emitter.trigger('eventAdd', {\n      event: eventApi,\n      relatedEvents: [],\n      revert: () => {\n        this.dispatch({\n          type: 'REMOVE_EVENTS',\n          eventStore: eventApiToStore(eventApi),\n        })\n      },\n    })\n  }\n\n  // TODO: optimize\n  getEventById(id: string): EventApi | null {\n    let state = this.getCurrentData()\n    let { defs, instances } = state.eventStore\n    id = String(id)\n\n    for (let defId in defs) {\n      let def = defs[defId]\n\n      if (def.publicId === id) {\n        if (def.recurringDef) {\n          return new EventApi(state, def, null)\n        }\n\n        for (let instanceId in instances) {\n          let instance = instances[instanceId]\n\n          if (instance.defId === def.defId) {\n            return new EventApi(state, def, instance)\n          }\n        }\n      }\n    }\n\n    return null\n  }\n\n  getEvents(): EventApi[] {\n    let currentData = this.getCurrentData()\n\n    return buildEventApis(currentData.eventStore, currentData)\n  }\n\n  removeAllEvents() {\n    this.dispatch({ type: 'REMOVE_ALL_EVENTS' })\n  }\n\n  // Public Event Sources API\n  // -----------------------------------------------------------------------------------------------------------------\n\n  getEventSources(): EventSourceApi[] {\n    let state = this.getCurrentData()\n    let sourceHash = state.eventSources\n    let sourceApis: EventSourceApi[] = []\n\n    for (let internalId in sourceHash) {\n      sourceApis.push(new EventSourceApi(state, sourceHash[internalId]))\n    }\n\n    return sourceApis\n  }\n\n  getEventSourceById(id: string): EventSourceApi | null {\n    let state = this.getCurrentData()\n    let sourceHash = state.eventSources\n    id = String(id)\n\n    for (let sourceId in sourceHash) {\n      if (sourceHash[sourceId].publicId === id) {\n        return new EventSourceApi(state, sourceHash[sourceId])\n      }\n    }\n\n    return null\n  }\n\n  addEventSource(sourceInput: EventSourceInput): EventSourceApi {\n    let state = this.getCurrentData()\n\n    if (sourceInput instanceof EventSourceApi) {\n      // not already present? don't want to add an old snapshot\n      if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n        this.dispatch({\n          type: 'ADD_EVENT_SOURCES',\n          sources: [sourceInput.internalEventSource],\n        })\n      }\n\n      return sourceInput\n    }\n\n    let eventSource = parseEventSource(sourceInput, state)\n\n    if (eventSource) { // TODO: error otherwise?\n      this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] })\n\n      return new EventSourceApi(state, eventSource)\n    }\n\n    return null\n  }\n\n  removeAllEventSources() {\n    this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' })\n  }\n\n  refetchEvents() {\n    this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true })\n  }\n\n  // Scroll\n  // -----------------------------------------------------------------------------------------------------------------\n\n  scrollToTime(timeInput: DurationInput) {\n    let time = createDuration(timeInput)\n\n    if (time) {\n      this.trigger('_scrollRequest', { time })\n    }\n  }\n}\n", "import { __assign } from 'tslib'\nimport { EventDef } from '../structs/event-def'\nimport { EVENT_NON_DATE_REFINERS, EVENT_DATE_REFINERS } from '../structs/event-parse'\nimport { EventInstance } from '../structs/event-instance'\nimport { EVENT_UI_REFINERS, EventUiHash } from '../component/event-ui'\nimport { EventMutation, applyMutationToEventStore } from '../structs/event-mutation'\nimport { diffDates, computeAlignedDayRange } from '../util/date'\nimport { createDuration, durationsEqual } from '../datelib/duration'\nimport { createFormatter } from '../datelib/formatting'\nimport { CalendarContext } from '../CalendarContext'\nimport { getRelevantEvents, EventStore } from '../structs/event-store'\nimport { Dictionary } from '../options'\n\n// public\nimport {\n  DateInput,\n  DurationInput,\n  FormatterInput,\n  EventSourceApi,\n} from '../api-type-deps'\n\nexport class EventApi {\n  _context: CalendarContext\n  _def: EventDef\n  _instance: EventInstance | null\n  // instance will be null if expressing a recurring event that has no current instances,\n  // OR if trying to validate an incoming external event that has no dates assigned\n\n  constructor(context: CalendarContext, def: EventDef, instance?: EventInstance) {\n    this._context = context\n    this._def = def\n    this._instance = instance || null\n  }\n\n  /*\n  TODO: make event struct more responsible for this\n  */\n  setProp(name: string, val: any) {\n    if (name in EVENT_DATE_REFINERS) {\n      console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.')\n    // TODO: make proper aliasing system?\n    } else if (name === 'id') {\n      val = EVENT_NON_DATE_REFINERS[name](val)\n\n      this.mutate({\n        standardProps: { publicId: val }, // hardcoded internal name\n      })\n    } else if (name in EVENT_NON_DATE_REFINERS) {\n      val = EVENT_NON_DATE_REFINERS[name](val)\n\n      this.mutate({\n        standardProps: { [name]: val },\n      })\n    } else if (name in EVENT_UI_REFINERS) {\n      let ui = EVENT_UI_REFINERS[name](val)\n\n      if (name === 'color') {\n        ui = { backgroundColor: val, borderColor: val }\n      } else if (name === 'editable') {\n        ui = { startEditable: val, durationEditable: val }\n      } else {\n        ui = { [name]: val }\n      }\n\n      this.mutate({\n        standardProps: { ui },\n      })\n    } else {\n      console.warn(`Could not set prop '${name}'. Use setExtendedProp instead.`)\n    }\n  }\n\n  setExtendedProp(name: string, val: any) {\n    this.mutate({\n      extendedProps: { [name]: val },\n    })\n  }\n\n  setStart(startInput: DateInput, options: { granularity?: string, maintainDuration?: boolean } = {}) {\n    let { dateEnv } = this._context\n    let start = dateEnv.createMarker(startInput)\n\n    if (start && this._instance) { // TODO: warning if parsed bad\n      let instanceRange = this._instance.range\n      let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity) // what if parsed bad!?\n\n      if (options.maintainDuration) {\n        this.mutate({ datesDelta: startDelta })\n      } else {\n        this.mutate({ startDelta })\n      }\n    }\n  }\n\n  setEnd(endInput: DateInput | null, options: { granularity?: string } = {}) {\n    let { dateEnv } = this._context\n    let end\n\n    if (endInput != null) {\n      end = dateEnv.createMarker(endInput)\n\n      if (!end) {\n        return // TODO: warning if parsed bad\n      }\n    }\n\n    if (this._instance) {\n      if (end) {\n        let endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity)\n        this.mutate({ endDelta })\n      } else {\n        this.mutate({ standardProps: { hasEnd: false } })\n      }\n    }\n  }\n\n  setDates(startInput: DateInput, endInput: DateInput | null, options: { allDay?: boolean, granularity?: string } = {}) {\n    let { dateEnv } = this._context\n    let standardProps = { allDay: options.allDay } as any\n    let start = dateEnv.createMarker(startInput)\n    let end\n\n    if (!start) {\n      return // TODO: warning if parsed bad\n    }\n\n    if (endInput != null) {\n      end = dateEnv.createMarker(endInput)\n\n      if (!end) { // TODO: warning if parsed bad\n        return\n      }\n    }\n\n    if (this._instance) {\n      let instanceRange = this._instance.range\n\n      // when computing the diff for an event being converted to all-day,\n      // compute diff off of the all-day values the way event-mutation does.\n      if (options.allDay === true) {\n        instanceRange = computeAlignedDayRange(instanceRange)\n      }\n\n      let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity)\n\n      if (end) {\n        let endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity)\n\n        if (durationsEqual(startDelta, endDelta)) {\n          this.mutate({ datesDelta: startDelta, standardProps })\n        } else {\n          this.mutate({ startDelta, endDelta, standardProps })\n        }\n      } else { // means \"clear the end\"\n        standardProps.hasEnd = false\n        this.mutate({ datesDelta: startDelta, standardProps })\n      }\n    }\n  }\n\n  moveStart(deltaInput: DurationInput) {\n    let delta = createDuration(deltaInput)\n\n    if (delta) { // TODO: warning if parsed bad\n      this.mutate({ startDelta: delta })\n    }\n  }\n\n  moveEnd(deltaInput: DurationInput) {\n    let delta = createDuration(deltaInput)\n\n    if (delta) { // TODO: warning if parsed bad\n      this.mutate({ endDelta: delta })\n    }\n  }\n\n  moveDates(deltaInput: DurationInput) {\n    let delta = createDuration(deltaInput)\n\n    if (delta) { // TODO: warning if parsed bad\n      this.mutate({ datesDelta: delta })\n    }\n  }\n\n  setAllDay(allDay: boolean, options: { maintainDuration?: boolean } = {}) {\n    let standardProps = { allDay } as any\n    let { maintainDuration } = options\n\n    if (maintainDuration == null) {\n      maintainDuration = this._context.options.allDayMaintainDuration\n    }\n\n    if (this._def.allDay !== allDay) {\n      standardProps.hasEnd = maintainDuration\n    }\n\n    this.mutate({ standardProps })\n  }\n\n  formatRange(formatInput: FormatterInput) {\n    let { dateEnv } = this._context\n    let instance = this._instance\n    let formatter = createFormatter(formatInput)\n\n    if (this._def.hasEnd) {\n      return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n        forcedStartTzo: instance.forcedStartTzo,\n        forcedEndTzo: instance.forcedEndTzo,\n      })\n    }\n    return dateEnv.format(instance.range.start, formatter, {\n      forcedTzo: instance.forcedStartTzo,\n    })\n  }\n\n  mutate(mutation: EventMutation) { // meant to be private. but plugins need access\n    let instance = this._instance\n\n    if (instance) {\n      let def = this._def\n      let context = this._context\n      let { eventStore } = context.getCurrentData()\n      let relevantEvents = getRelevantEvents(eventStore, instance.instanceId)\n      let eventConfigBase = {\n        '': { // HACK. always allow API to mutate events\n          display: '',\n          startEditable: true,\n          durationEditable: true,\n          constraints: [],\n          overlap: null,\n          allows: [],\n          backgroundColor: '',\n          borderColor: '',\n          textColor: '',\n          classNames: [],\n        },\n      } as EventUiHash\n\n      relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context)\n\n      let oldEvent = new EventApi(context, def, instance) // snapshot\n      this._def = relevantEvents.defs[def.defId]\n      this._instance = relevantEvents.instances[instance.instanceId]\n\n      context.dispatch({\n        type: 'MERGE_EVENTS',\n        eventStore: relevantEvents,\n      })\n\n      context.emitter.trigger('eventChange', {\n        oldEvent,\n        event: this,\n        relatedEvents: buildEventApis(relevantEvents, context, instance),\n        revert() {\n          context.dispatch({\n            type: 'RESET_EVENTS',\n            eventStore, // the ORIGINAL store\n          })\n        },\n      })\n    }\n  }\n\n  remove() {\n    let context = this._context\n    let asStore = eventApiToStore(this)\n\n    context.dispatch({\n      type: 'REMOVE_EVENTS',\n      eventStore: asStore,\n    })\n\n    context.emitter.trigger('eventRemove', {\n      event: this,\n      relatedEvents: [],\n      revert() {\n        context.dispatch({\n          type: 'MERGE_EVENTS',\n          eventStore: asStore,\n        })\n      },\n    })\n  }\n\n  get source(): EventSourceApi | null {\n    let { sourceId } = this._def\n\n    if (sourceId) {\n      return new EventSourceApi(\n        this._context,\n        this._context.getCurrentData().eventSources[sourceId],\n      )\n    }\n    return null\n  }\n\n  get start(): Date | null {\n    return this._instance ?\n      this._context.dateEnv.toDate(this._instance.range.start) :\n      null\n  }\n\n  get end(): Date | null {\n    return (this._instance && this._def.hasEnd) ?\n      this._context.dateEnv.toDate(this._instance.range.end) :\n      null\n  }\n\n  get startStr(): string {\n    let instance = this._instance\n    if (instance) {\n      return this._context.dateEnv.formatIso(instance.range.start, {\n        omitTime: this._def.allDay,\n        forcedTzo: instance.forcedStartTzo,\n      })\n    }\n    return ''\n  }\n\n  get endStr(): string {\n    let instance = this._instance\n    if (instance && this._def.hasEnd) {\n      return this._context.dateEnv.formatIso(instance.range.end, {\n        omitTime: this._def.allDay,\n        forcedTzo: instance.forcedEndTzo,\n      })\n    }\n    return ''\n  }\n\n  // computable props that all access the def\n  // TODO: find a TypeScript-compatible way to do this at scale\n  get id() { return this._def.publicId }\n  get groupId() { return this._def.groupId }\n  get allDay() { return this._def.allDay }\n  get title() { return this._def.title }\n  get url() { return this._def.url }\n  get display() { return this._def.ui.display || 'auto' } // bad. just normalize the type earlier\n  get startEditable() { return this._def.ui.startEditable }\n  get durationEditable() { return this._def.ui.durationEditable }\n  get constraint() { return this._def.ui.constraints[0] || null }\n  get overlap() { return this._def.ui.overlap }\n  get allow() { return this._def.ui.allows[0] || null }\n  get backgroundColor() { return this._def.ui.backgroundColor }\n  get borderColor() { return this._def.ui.borderColor }\n  get textColor() { return this._def.ui.textColor }\n\n  // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n  get classNames() { return this._def.ui.classNames }\n  get extendedProps() { return this._def.extendedProps }\n\n  toPlainObject(settings: { collapseExtendedProps?: boolean, collapseColor?: boolean } = {}): Dictionary {\n    let def = this._def\n    let { ui } = def\n    let { startStr, endStr } = this\n    let res: Dictionary = {}\n\n    if (def.title) {\n      res.title = def.title\n    }\n\n    if (startStr) {\n      res.start = startStr\n    }\n\n    if (endStr) {\n      res.end = endStr\n    }\n\n    if (def.publicId) {\n      res.id = def.publicId\n    }\n\n    if (def.groupId) {\n      res.groupId = def.groupId\n    }\n\n    if (def.url) {\n      res.url = def.url\n    }\n\n    if (ui.display && ui.display !== 'auto') {\n      res.display = ui.display\n    }\n\n    // TODO: what about recurring-event properties???\n    // TODO: include startEditable/durationEditable/constraint/overlap/allow\n\n    if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n      res.color = ui.backgroundColor\n    } else {\n      if (ui.backgroundColor) {\n        res.backgroundColor = ui.backgroundColor\n      }\n      if (ui.borderColor) {\n        res.borderColor = ui.borderColor\n      }\n    }\n\n    if (ui.textColor) {\n      res.textColor = ui.textColor\n    }\n\n    if (ui.classNames.length) {\n      res.classNames = ui.classNames\n    }\n\n    if (Object.keys(def.extendedProps).length) {\n      if (settings.collapseExtendedProps) {\n        __assign(res, def.extendedProps)\n      } else {\n        res.extendedProps = def.extendedProps\n      }\n    }\n\n    return res\n  }\n\n  toJSON() {\n    return this.toPlainObject()\n  }\n}\n\nexport function eventApiToStore(eventApi: EventApi): EventStore {\n  let def = eventApi._def\n  let instance = eventApi._instance\n\n  return {\n    defs: { [def.defId]: def },\n    instances: instance\n      ? { [instance.instanceId]: instance }\n      : {},\n  }\n}\n\nexport function buildEventApis(eventStore: EventStore, context: CalendarContext, excludeInstance?: EventInstance): EventApi[] {\n  let { defs, instances } = eventStore\n  let eventApis: EventApi[] = []\n  let excludeInstanceId = excludeInstance ? excludeInstance.instanceId : ''\n\n  for (let id in instances) {\n    let instance = instances[id]\n    let def = defs[instance.defId]\n\n    if (instance.instanceId !== excludeInstanceId) {\n      eventApis.push(new EventApi(context, def, instance))\n    }\n  }\n\n  return eventApis\n}\n", "import { DateMarker, arrayToUtcDate, dateToUtcArray } from './marker'\n\nexport interface CalendarSystem {\n  getMarkerYear(d: DateMarker): number\n  getMarkerMonth(d: DateMarker): number\n  getMarkerDay(d: DateMarker): number\n  arrayToMarker(arr: number[]): DateMarker\n  markerToArray(d: DateMarker): number[]\n}\n\nlet calendarSystemClassMap = {}\n\nexport function registerCalendarSystem(name, theClass) {\n  calendarSystemClassMap[name] = theClass\n}\n\nexport function createCalendarSystem(name) {\n  return new calendarSystemClassMap[name]()\n}\n\nclass GregorianCalendarSystem implements CalendarSystem {\n  getMarkerYear(d: DateMarker) {\n    return d.getUTCFullYear()\n  }\n\n  getMarkerMonth(d: DateMarker) {\n    return d.getUTCMonth()\n  }\n\n  getMarkerDay(d: DateMarker) {\n    return d.getUTCDate()\n  }\n\n  arrayToMarker(arr) {\n    return arrayToUtcDate(arr)\n  }\n\n  markerToArray(marker) {\n    return dateToUtcArray(marker)\n  }\n}\n\nregisterCalendarSystem('gregory', GregorianCalendarSystem)\n", "import { isValidDate } from './marker'\n\nconst ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/\n\nexport function parse(str) {\n  let m = ISO_RE.exec(str)\n\n  if (m) {\n    let marker = new Date(Date.UTC(\n      Number(m[1]),\n      m[3] ? Number(m[3]) - 1 : 0,\n      Number(m[5] || 1),\n      Number(m[7] || 0),\n      Number(m[8] || 0),\n      Number(m[10] || 0),\n      m[12] ? Number(`0.${m[12]}`) * 1000 : 0,\n    ))\n\n    if (isValidDate(marker)) {\n      let timeZoneOffset = null\n\n      if (m[13]) {\n        timeZoneOffset = (m[15] === '-' ? -1 : 1) * (\n          Number(m[16] || 0) * 60 +\n          Number(m[18] || 0)\n        )\n      }\n\n      return {\n        marker,\n        isTimeUnspecified: !m[6],\n        timeZoneOffset,\n      }\n    }\n  }\n\n  return null\n}\n", "import {\n  DateMarker, addMs,\n  diffHours, diffMinutes, diffSeconds, diffWholeWeeks, diffWholeDays,\n  startOfDay, startOfHour, startOfMinute, startOfSecond,\n  weekOfYear, arrayToUtcDate, dateToUtcArray, dateToLocalArray, arrayToLocalDate, timeAsMs, isValidDate,\n} from './marker'\nimport { CalendarSystem, createCalendarSystem } from './calendar-system'\nimport { Locale } from './locale'\nimport { NamedTimeZoneImpl, NamedTimeZoneImplClass } from './timezone'\nimport { Duration, asRoughYears, asRoughMonths, asRoughDays, asRoughMs } from './duration'\nimport { DateFormatter, CmdFormatterFunc } from './DateFormatter'\nimport { buildIsoString } from './formatting-utils'\nimport { parse } from './parsing'\nimport { isInt } from '../util/misc'\n\nexport type WeekNumberCalculation = 'local' | 'ISO' | ((m: Date) => number)\n\nexport interface DateEnvSettings {\n  timeZone: string\n  namedTimeZoneImpl?: NamedTimeZoneImplClass\n  calendarSystem: string\n  locale: Locale\n  weekNumberCalculation?: WeekNumberCalculation\n  firstDay?: number, // will override what the locale wants\n  weekText?: string,\n  weekTextLong?: string\n  cmdFormatter?: CmdFormatterFunc\n  defaultSeparator?: string\n}\n\nexport type DateInput = Date | string | number | number[]\n\nexport interface DateMarkerMeta {\n  marker: DateMarker\n  isTimeUnspecified: boolean\n  forcedTzo: number | null\n}\n\nexport class DateEnv {\n  timeZone: string\n  namedTimeZoneImpl: NamedTimeZoneImpl\n  canComputeOffset: boolean\n\n  calendarSystem: CalendarSystem\n  locale: Locale\n  weekDow: number // which day begins the week\n  weekDoy: number // which day must be within the year, for computing the first week number\n  weekNumberFunc: any\n  weekText: string // DON'T LIKE how options are confused with local\n  weekTextLong: string\n  cmdFormatter?: CmdFormatterFunc\n  defaultSeparator: string\n\n  constructor(settings: DateEnvSettings) {\n    let timeZone = this.timeZone = settings.timeZone\n    let isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC'\n\n    if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n      this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone)\n    }\n\n    this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl)\n\n    this.calendarSystem = createCalendarSystem(settings.calendarSystem)\n    this.locale = settings.locale\n    this.weekDow = settings.locale.week.dow\n    this.weekDoy = settings.locale.week.doy\n\n    if (settings.weekNumberCalculation === 'ISO') {\n      this.weekDow = 1\n      this.weekDoy = 4\n    }\n\n    if (typeof settings.firstDay === 'number') {\n      this.weekDow = settings.firstDay\n    }\n\n    if (typeof settings.weekNumberCalculation === 'function') {\n      this.weekNumberFunc = settings.weekNumberCalculation\n    }\n\n    this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText\n    this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText\n\n    this.cmdFormatter = settings.cmdFormatter\n    this.defaultSeparator = settings.defaultSeparator\n  }\n\n  // Creating / Parsing\n\n  createMarker(input: DateInput): DateMarker {\n    let meta = this.createMarkerMeta(input)\n    if (meta === null) {\n      return null\n    }\n    return meta.marker\n  }\n\n  createNowMarker(): DateMarker {\n    if (this.canComputeOffset) {\n      return this.timestampToMarker(new Date().valueOf())\n    }\n    // if we can't compute the current date val for a timezone,\n    // better to give the current local date vals than UTC\n    return arrayToUtcDate(dateToLocalArray(new Date()))\n  }\n\n  createMarkerMeta(input: DateInput): DateMarkerMeta {\n    if (typeof input === 'string') {\n      return this.parse(input)\n    }\n\n    let marker = null\n\n    if (typeof input === 'number') {\n      marker = this.timestampToMarker(input)\n    } else if (input instanceof Date) {\n      input = input.valueOf()\n\n      if (!isNaN(input)) {\n        marker = this.timestampToMarker(input)\n      }\n    } else if (Array.isArray(input)) {\n      marker = arrayToUtcDate(input)\n    }\n\n    if (marker === null || !isValidDate(marker)) {\n      return null\n    }\n\n    return { marker, isTimeUnspecified: false, forcedTzo: null }\n  }\n\n  parse(s: string) {\n    let parts = parse(s)\n    if (parts === null) {\n      return null\n    }\n\n    let { marker } = parts\n    let forcedTzo = null\n\n    if (parts.timeZoneOffset !== null) {\n      if (this.canComputeOffset) {\n        marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000)\n      } else {\n        forcedTzo = parts.timeZoneOffset\n      }\n    }\n\n    return { marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo }\n  }\n\n  // Accessors\n\n  getYear(marker: DateMarker): number {\n    return this.calendarSystem.getMarkerYear(marker)\n  }\n\n  getMonth(marker: DateMarker): number {\n    return this.calendarSystem.getMarkerMonth(marker)\n  }\n\n  // Adding / Subtracting\n\n  add(marker: DateMarker, dur: Duration): DateMarker {\n    let a = this.calendarSystem.markerToArray(marker)\n    a[0] += dur.years\n    a[1] += dur.months\n    a[2] += dur.days\n    a[6] += dur.milliseconds\n    return this.calendarSystem.arrayToMarker(a)\n  }\n\n  subtract(marker: DateMarker, dur: Duration): DateMarker {\n    let a = this.calendarSystem.markerToArray(marker)\n    a[0] -= dur.years\n    a[1] -= dur.months\n    a[2] -= dur.days\n    a[6] -= dur.milliseconds\n    return this.calendarSystem.arrayToMarker(a)\n  }\n\n  addYears(marker: DateMarker, n: number) {\n    let a = this.calendarSystem.markerToArray(marker)\n    a[0] += n\n    return this.calendarSystem.arrayToMarker(a)\n  }\n\n  addMonths(marker: DateMarker, n: number) {\n    let a = this.calendarSystem.markerToArray(marker)\n    a[1] += n\n    return this.calendarSystem.arrayToMarker(a)\n  }\n\n  // Diffing Whole Units\n\n  diffWholeYears(m0: DateMarker, m1: DateMarker): number {\n    let { calendarSystem } = this\n\n    if (\n      timeAsMs(m0) === timeAsMs(m1) &&\n      calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n      calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)\n    ) {\n      return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)\n    }\n    return null\n  }\n\n  diffWholeMonths(m0: DateMarker, m1: DateMarker): number {\n    let { calendarSystem } = this\n\n    if (\n      timeAsMs(m0) === timeAsMs(m1) &&\n      calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)\n    ) {\n      return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n          (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12\n    }\n    return null\n  }\n\n  // Range / Duration\n\n  greatestWholeUnit(m0: DateMarker, m1: DateMarker) {\n    let n = this.diffWholeYears(m0, m1)\n\n    if (n !== null) {\n      return { unit: 'year', value: n }\n    }\n\n    n = this.diffWholeMonths(m0, m1)\n\n    if (n !== null) {\n      return { unit: 'month', value: n }\n    }\n\n    n = diffWholeWeeks(m0, m1)\n\n    if (n !== null) {\n      return { unit: 'week', value: n }\n    }\n\n    n = diffWholeDays(m0, m1)\n\n    if (n !== null) {\n      return { unit: 'day', value: n }\n    }\n\n    n = diffHours(m0, m1)\n\n    if (isInt(n)) {\n      return { unit: 'hour', value: n }\n    }\n\n    n = diffMinutes(m0, m1)\n\n    if (isInt(n)) {\n      return { unit: 'minute', value: n }\n    }\n\n    n = diffSeconds(m0, m1)\n\n    if (isInt(n)) {\n      return { unit: 'second', value: n }\n    }\n\n    return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() }\n  }\n\n  countDurationsBetween(m0: DateMarker, m1: DateMarker, d: Duration) {\n    // TODO: can use greatestWholeUnit\n    let diff\n\n    if (d.years) {\n      diff = this.diffWholeYears(m0, m1)\n      if (diff !== null) {\n        return diff / asRoughYears(d)\n      }\n    }\n\n    if (d.months) {\n      diff = this.diffWholeMonths(m0, m1)\n      if (diff !== null) {\n        return diff / asRoughMonths(d)\n      }\n    }\n\n    if (d.days) {\n      diff = diffWholeDays(m0, m1)\n      if (diff !== null) {\n        return diff / asRoughDays(d)\n      }\n    }\n\n    return (m1.valueOf() - m0.valueOf()) / asRoughMs(d)\n  }\n\n  // Start-Of\n  // these DON'T return zoned-dates. only UTC start-of dates\n\n  startOf(m: DateMarker, unit: string) {\n    if (unit === 'year') {\n      return this.startOfYear(m)\n    }\n    if (unit === 'month') {\n      return this.startOfMonth(m)\n    }\n    if (unit === 'week') {\n      return this.startOfWeek(m)\n    }\n    if (unit === 'day') {\n      return startOfDay(m)\n    }\n    if (unit === 'hour') {\n      return startOfHour(m)\n    }\n    if (unit === 'minute') {\n      return startOfMinute(m)\n    }\n    if (unit === 'second') {\n      return startOfSecond(m)\n    }\n    return null\n  }\n\n  startOfYear(m: DateMarker): DateMarker {\n    return this.calendarSystem.arrayToMarker([\n      this.calendarSystem.getMarkerYear(m),\n    ])\n  }\n\n  startOfMonth(m: DateMarker): DateMarker {\n    return this.calendarSystem.arrayToMarker([\n      this.calendarSystem.getMarkerYear(m),\n      this.calendarSystem.getMarkerMonth(m),\n    ])\n  }\n\n  startOfWeek(m: DateMarker): DateMarker {\n    return this.calendarSystem.arrayToMarker([\n      this.calendarSystem.getMarkerYear(m),\n      this.calendarSystem.getMarkerMonth(m),\n      m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n    ])\n  }\n\n  // Week Number\n\n  computeWeekNumber(marker: DateMarker): number {\n    if (this.weekNumberFunc) {\n      return this.weekNumberFunc(this.toDate(marker))\n    }\n    return weekOfYear(marker, this.weekDow, this.weekDoy)\n  }\n\n  // TODO: choke on timeZoneName: long\n  format(marker: DateMarker, formatter: DateFormatter, dateOptions: { forcedTzo?: number } = {}) {\n    return formatter.format(\n      {\n        marker,\n        timeZoneOffset: dateOptions.forcedTzo != null ?\n          dateOptions.forcedTzo :\n          this.offsetForMarker(marker),\n      },\n      this,\n    )\n  }\n\n  formatRange(\n    start: DateMarker,\n    end: DateMarker,\n    formatter: DateFormatter,\n    dateOptions: { forcedStartTzo?: number, forcedEndTzo?: number, isEndExclusive?: boolean, defaultSeparator?: string } = {},\n  ) {\n    if (dateOptions.isEndExclusive) {\n      end = addMs(end, -1)\n    }\n\n    return formatter.formatRange(\n      {\n        marker: start,\n        timeZoneOffset: dateOptions.forcedStartTzo != null ?\n          dateOptions.forcedStartTzo :\n          this.offsetForMarker(start),\n      },\n      {\n        marker: end,\n        timeZoneOffset: dateOptions.forcedEndTzo != null ?\n          dateOptions.forcedEndTzo :\n          this.offsetForMarker(end),\n      },\n      this,\n      dateOptions.defaultSeparator,\n    )\n  }\n\n  /*\n  DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n  might as well use buildIsoString or some other util directly\n  */\n  formatIso(marker: DateMarker, extraOptions: any = {}) {\n    let timeZoneOffset = null\n\n    if (!extraOptions.omitTimeZoneOffset) {\n      if (extraOptions.forcedTzo != null) {\n        timeZoneOffset = extraOptions.forcedTzo\n      } else {\n        timeZoneOffset = this.offsetForMarker(marker)\n      }\n    }\n\n    return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime)\n  }\n\n  // TimeZone\n\n  timestampToMarker(ms: number) {\n    if (this.timeZone === 'local') {\n      return arrayToUtcDate(dateToLocalArray(new Date(ms)))\n    } if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n      return new Date(ms)\n    }\n    return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms))\n  }\n\n  offsetForMarker(m: DateMarker) {\n    if (this.timeZone === 'local') {\n      return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset() // convert \"inverse\" offset to \"normal\" offset\n    } if (this.timeZone === 'UTC') {\n      return 0\n    } if (this.namedTimeZoneImpl) {\n      return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m))\n    }\n    return null\n  }\n\n  // Conversion\n\n  toDate(m: DateMarker, forcedTzo?: number): Date {\n    if (this.timeZone === 'local') {\n      return arrayToLocalDate(dateToUtcArray(m))\n    }\n\n    if (this.timeZone === 'UTC') {\n      return new Date(m.valueOf()) // make sure it's a copy\n    }\n\n    if (!this.namedTimeZoneImpl) {\n      return new Date(m.valueOf() - (forcedTzo || 0))\n    }\n\n    return new Date(\n      m.valueOf() -\n        this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60, // convert minutes -> ms\n    )\n  }\n}\n", "import { LocaleInput } from './datelib/locale'\n\nexport const globalLocales: LocaleInput[] = []\n", "import { mergeProps } from '../util/object'\nimport { globalLocales } from '../global-locales' // weird to be importing this\nimport { CalendarOptions, CalendarOptionsRefined } from '../options'\n\nexport type LocaleCodeArg = string | string[]\nexport type LocaleSingularArg = LocaleCodeArg | LocaleInput\n\nexport interface Locale {\n  codeArg: LocaleCodeArg\n  codes: string[]\n  week: { dow: number, doy: number }\n  simpleNumberFormat: Intl.NumberFormat\n  options: CalendarOptionsRefined\n}\n\nexport interface LocaleInput extends CalendarOptions {\n  code: string\n}\n\nexport type LocaleInputMap = { [code: string]: LocaleInput }\n\nexport interface RawLocaleInfo {\n  map: LocaleInputMap\n  defaultCode: string\n}\n\nconst MINIMAL_RAW_EN_LOCALE = {\n  code: 'en',\n  week: {\n    dow: 0, // Sunday is the first day of the week\n    doy: 4, // 4 days need to be within the year to be considered the first week\n  },\n  direction: 'ltr' as ('ltr' | 'rtl'), // TODO: make a real type for this\n  buttonText: {\n    prev: 'prev',\n    next: 'next',\n    prevYear: 'prev year',\n    nextYear: 'next year',\n    year: 'year',\n    today: 'today',\n    month: 'month',\n    week: 'week',\n    day: 'day',\n    list: 'list',\n  },\n  weekText: 'W',\n  weekTextLong: 'Week',\n  closeHint: 'Close',\n  timeHint: 'Time',\n  eventHint: 'Event',\n  allDayText: 'all-day',\n  moreLinkText: 'more',\n  noEventsText: 'No events to display',\n}\n\nconst RAW_EN_LOCALE = {\n  ...MINIMAL_RAW_EN_LOCALE,\n  // Includes things we don't want other locales to inherit,\n  // things that derive from other translatable strings.\n  buttonHints: {\n    prev: 'Previous $0',\n    next: 'Next $0',\n    today(buttonText, unit) {\n      return (unit === 'day')\n        ? 'Today'\n        : `This ${buttonText}`\n    },\n  },\n  viewHint: '$0 view',\n  navLinkHint: 'Go to $0',\n  moreLinkHint(eventCnt: number) {\n    return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`\n  },\n}\n\nexport function organizeRawLocales(explicitRawLocales: LocaleInput[]): RawLocaleInfo {\n  let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en'\n  let allRawLocales = globalLocales.concat(explicitRawLocales)\n  let rawLocaleMap: LocaleInputMap = {\n    en: RAW_EN_LOCALE,\n  }\n\n  for (let rawLocale of allRawLocales) {\n    rawLocaleMap[rawLocale.code] = rawLocale\n  }\n\n  return {\n    map: rawLocaleMap,\n    defaultCode,\n  }\n}\n\nexport function buildLocale(inputSingular: LocaleSingularArg, available: LocaleInputMap) {\n  if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n    return parseLocale(\n      inputSingular.code,\n      [inputSingular.code],\n      inputSingular,\n    )\n  }\n  return queryLocale(inputSingular, available)\n}\n\nfunction queryLocale(codeArg: LocaleCodeArg, available: LocaleInputMap): Locale {\n  let codes = [].concat(codeArg || []) // will convert to array\n  let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE\n\n  return parseLocale(codeArg, codes, raw)\n}\n\nfunction queryRawLocale(codes: string[], available: LocaleInputMap): LocaleInput {\n  for (let i = 0; i < codes.length; i += 1) {\n    let parts = codes[i].toLocaleLowerCase().split('-')\n\n    for (let j = parts.length; j > 0; j -= 1) {\n      let simpleId = parts.slice(0, j).join('-')\n\n      if (available[simpleId]) {\n        return available[simpleId]\n      }\n    }\n  }\n  return null\n}\n\nfunction parseLocale(codeArg: LocaleCodeArg, codes: string[], raw: LocaleInput): Locale {\n  let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText'])\n\n  delete merged.code // don't want this part of the options\n  let { week } = merged\n  delete merged.week\n\n  return {\n    codeArg,\n    codes,\n    week,\n    simpleNumberFormat: new Intl.NumberFormat(codeArg),\n    options: merged,\n  }\n}\n", "import { DateEnv } from './datelib/env'\nimport { createFormatter } from './datelib/formatting'\nimport { NativeFormatterOptions } from './datelib/formatting-native'\nimport { organizeRawLocales, buildLocale } from './datelib/locale'\nimport { BASE_OPTION_DEFAULTS } from './options'\n\n// public\nimport { DateInput } from './api-type-deps'\n\nexport interface FormatDateOptions extends NativeFormatterOptions {\n  locale?: string\n}\n\nexport interface FormatRangeOptions extends FormatDateOptions {\n  separator?: string\n  isEndExclusive?: boolean\n}\n\nexport function formatDate(dateInput: DateInput, options: FormatDateOptions = {}) {\n  let dateEnv = buildDateEnv(options)\n  let formatter = createFormatter(options)\n  let dateMeta = dateEnv.createMarkerMeta(dateInput)\n\n  if (!dateMeta) { // TODO: warning?\n    return ''\n  }\n\n  return dateEnv.format(dateMeta.marker, formatter, {\n    forcedTzo: dateMeta.forcedTzo,\n  })\n}\n\nexport function formatRange(\n  startInput: DateInput,\n  endInput: DateInput,\n  options: FormatRangeOptions, // mixture of env and formatter settings\n) {\n  let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}) // pass in if non-null object\n  let formatter = createFormatter(options)\n  let startMeta = dateEnv.createMarkerMeta(startInput)\n  let endMeta = dateEnv.createMarkerMeta(endInput)\n\n  if (!startMeta || !endMeta) { // TODO: warning?\n    return ''\n  }\n\n  return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n    forcedStartTzo: startMeta.forcedTzo,\n    forcedEndTzo: endMeta.forcedTzo,\n    isEndExclusive: options.isEndExclusive,\n    defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n  })\n}\n\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings: FormatRangeOptions) {\n  let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map) // TODO: don't hardcode 'en' everywhere\n\n  return new DateEnv({\n    timeZone: BASE_OPTION_DEFAULTS.timeZone,\n    calendarSystem: 'gregory',\n    ...settings,\n    locale,\n  })\n}\n", "import { EventInput } from './event-parse'\nimport { EventStore, parseEvents } from './event-store'\nimport { CalendarContext } from '../CalendarContext'\n\n/*\nUtils for converting raw business hour input into an EventStore,\nfor both rendering and the constraint system.\n*/\n\nexport type BusinessHoursInput = boolean | EventInput | EventInput[]\n\nconst DEF_DEFAULTS = {\n  startTime: '09:00',\n  endTime: '17:00',\n  daysOfWeek: [1, 2, 3, 4, 5], // monday - friday\n  display: 'inverse-background',\n  classNames: 'fc-non-business',\n  groupId: '_businessHours', // so multiple defs get grouped\n}\n\n/*\nTODO: pass around as EventDefHash!!!\n*/\nexport function parseBusinessHours(input: BusinessHoursInput, context: CalendarContext): EventStore {\n  return parseEvents(\n    refineInputs(input),\n    null,\n    context,\n  )\n}\n\nfunction refineInputs(input: BusinessHoursInput) {\n  let rawDefs\n\n  if (input === true) {\n    rawDefs = [{}] // will get DEF_DEFAULTS verbatim\n  } else if (Array.isArray(input)) {\n    // if specifying an array, every sub-definition NEEDS a day-of-week\n    rawDefs = input.filter((rawDef) => rawDef.daysOfWeek)\n  } else if (typeof input === 'object' && input) { // non-null object\n    rawDefs = [input]\n  } else { // is probably false\n    rawDefs = []\n  }\n\n  rawDefs = rawDefs.map((rawDef) => ({ ...DEF_DEFAULTS, ...rawDef }))\n\n  return rawDefs\n}\n", "export interface Point {\n  left: number\n  top: number\n}\n\nexport interface Rect {\n  left: number\n  right: number\n  top: number\n  bottom: number\n}\n\nexport function pointInsideRect(point: Point, rect: Rect): boolean {\n  return point.left >= rect.left &&\n    point.left < rect.right &&\n    point.top >= rect.top &&\n    point.top < rect.bottom\n}\n\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nexport function intersectRects(rect1: Rect, rect2: Rect): Rect | false {\n  let res = {\n    left: Math.max(rect1.left, rect2.left),\n    right: Math.min(rect1.right, rect2.right),\n    top: Math.max(rect1.top, rect2.top),\n    bottom: Math.min(rect1.bottom, rect2.bottom),\n  }\n\n  if (res.left < res.right && res.top < res.bottom) {\n    return res\n  }\n\n  return false\n}\n\nexport function translateRect(rect: Rect, deltaX: number, deltaY: number): Rect {\n  return {\n    left: rect.left + deltaX,\n    right: rect.right + deltaX,\n    top: rect.top + deltaY,\n    bottom: rect.bottom + deltaY,\n  }\n}\n\n// Returns a new point that will have been moved to reside within the given rectangle\nexport function constrainPoint(point: Point, rect: Rect): Point {\n  return {\n    left: Math.min(Math.max(point.left, rect.left), rect.right),\n    top: Math.min(Math.max(point.top, rect.top), rect.bottom),\n  }\n}\n\n// Returns a point that is the center of the given rectangle\nexport function getRectCenter(rect: Rect): Point {\n  return {\n    left: (rect.left + rect.right) / 2,\n    top: (rect.top + rect.bottom) / 2,\n  }\n}\n\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nexport function diffPoints(point1: Point, point2: Point): Point {\n  return {\n    left: point1.left - point2.left,\n    top: point1.top - point2.top,\n  }\n}\n", "let canVGrowWithinCell: boolean\n\nexport function getCanVGrowWithinCell() {\n  if (canVGrowWithinCell == null) {\n    canVGrowWithinCell = computeCanVGrowWithinCell()\n  }\n  return canVGrowWithinCell\n}\n\nfunction computeCanVGrowWithinCell() {\n  // for SSR, because this function is call immediately at top-level\n  // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n  if (typeof document === 'undefined') {\n    return true\n  }\n\n  let el = document.createElement('div')\n  el.style.position = 'absolute'\n  el.style.top = '0px'\n  el.style.left = '0px'\n  el.innerHTML = '<table><tr><td><div></div></td></tr></table>'\n  el.querySelector('table').style.height = '100px'\n  el.querySelector('div').style.height = '100%'\n\n  document.body.appendChild(el)\n\n  let div = el.querySelector('div')\n  let possible = div.offsetHeight > 0\n  document.body.removeChild(el)\n  return possible\n}\n", "import { __assign } from 'tslib'\nimport { EventStore, createEmptyEventStore } from '../structs/event-store'\nimport { EventDef } from '../structs/event-def'\nimport { EventInteractionState } from '../interactions/event-interaction-state'\nimport { mapHash } from '../util/object'\nimport { memoize } from '../util/memoize'\nimport { EventUiHash, EventUi, combineEventUis } from './event-ui'\nimport { DateSpan } from '../structs/date-span'\n\nexport interface SplittableProps {\n  businessHours: EventStore | null // is this really allowed to be null?\n  dateSelection: DateSpan | null\n  eventStore: EventStore\n  eventUiBases: EventUiHash\n  eventSelection: string\n  eventDrag: EventInteractionState | null\n  eventResize: EventInteractionState | null\n}\n\nconst EMPTY_EVENT_STORE = createEmptyEventStore() // for purecomponents. TODO: keep elsewhere\n\nexport abstract class Splitter<PropsType extends SplittableProps = SplittableProps> {\n  private getKeysForEventDefs = memoize(this._getKeysForEventDefs)\n  private splitDateSelection = memoize(this._splitDateSpan)\n  private splitEventStore = memoize(this._splitEventStore)\n  private splitIndividualUi = memoize(this._splitIndividualUi)\n  private splitEventDrag = memoize(this._splitInteraction)\n  private splitEventResize = memoize(this._splitInteraction)\n  private eventUiBuilders = {} // TODO: typescript protection\n\n  abstract getKeyInfo(props: PropsType): { [key: string]: { ui?: EventUi, businessHours?: EventStore } }\n  abstract getKeysForDateSpan(dateSpan: DateSpan): string[]\n  abstract getKeysForEventDef(eventDef: EventDef): string[]\n\n  splitProps(props: PropsType): { [key: string]: SplittableProps } {\n    let keyInfos = this.getKeyInfo(props)\n    let defKeys = this.getKeysForEventDefs(props.eventStore)\n    let dateSelections = this.splitDateSelection(props.dateSelection)\n    let individualUi = this.splitIndividualUi(props.eventUiBases, defKeys) // the individual *bases*\n    let eventStores = this.splitEventStore(props.eventStore, defKeys)\n    let eventDrags = this.splitEventDrag(props.eventDrag)\n    let eventResizes = this.splitEventResize(props.eventResize)\n    let splitProps: { [key: string]: SplittableProps } = {}\n\n    this.eventUiBuilders = mapHash(keyInfos, (info, key) => this.eventUiBuilders[key] || memoize(buildEventUiForKey))\n\n    for (let key in keyInfos) {\n      let keyInfo = keyInfos[key]\n      let eventStore = eventStores[key] || EMPTY_EVENT_STORE\n      let buildEventUi = this.eventUiBuilders[key]\n\n      splitProps[key] = {\n        businessHours: keyInfo.businessHours || props.businessHours,\n        dateSelection: dateSelections[key] || null,\n        eventStore,\n        eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n        eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n        eventDrag: eventDrags[key] || null,\n        eventResize: eventResizes[key] || null,\n      }\n    }\n\n    return splitProps\n  }\n\n  private _splitDateSpan(dateSpan: DateSpan | null) {\n    let dateSpans = {}\n\n    if (dateSpan) {\n      let keys = this.getKeysForDateSpan(dateSpan)\n\n      for (let key of keys) {\n        dateSpans[key] = dateSpan\n      }\n    }\n\n    return dateSpans\n  }\n\n  private _getKeysForEventDefs(eventStore: EventStore) {\n    return mapHash(eventStore.defs, (eventDef: EventDef) => this.getKeysForEventDef(eventDef))\n  }\n\n  private _splitEventStore(eventStore: EventStore, defKeys): { [key: string]: EventStore } {\n    let { defs, instances } = eventStore\n    let splitStores = {}\n\n    for (let defId in defs) {\n      for (let key of defKeys[defId]) {\n        if (!splitStores[key]) {\n          splitStores[key] = createEmptyEventStore()\n        }\n\n        splitStores[key].defs[defId] = defs[defId]\n      }\n    }\n\n    for (let instanceId in instances) {\n      let instance = instances[instanceId]\n\n      for (let key of defKeys[instance.defId]) {\n        if (splitStores[key]) { // must have already been created\n          splitStores[key].instances[instanceId] = instance\n        }\n      }\n    }\n\n    return splitStores\n  }\n\n  private _splitIndividualUi(eventUiBases: EventUiHash, defKeys): { [key: string]: EventUiHash } {\n    let splitHashes: { [key: string]: EventUiHash } = {}\n\n    for (let defId in eventUiBases) {\n      if (defId) { // not the '' key\n        for (let key of defKeys[defId]) {\n          if (!splitHashes[key]) {\n            splitHashes[key] = {}\n          }\n\n          splitHashes[key][defId] = eventUiBases[defId]\n        }\n      }\n    }\n\n    return splitHashes\n  }\n\n  private _splitInteraction(interaction: EventInteractionState | null): { [key: string]: EventInteractionState } {\n    let splitStates: { [key: string]: EventInteractionState } = {}\n\n    if (interaction) {\n      let affectedStores = this._splitEventStore(\n        interaction.affectedEvents,\n        this._getKeysForEventDefs(interaction.affectedEvents), // can't use cached. might be events from other calendar\n      )\n\n      // can't rely on defKeys because event data is mutated\n      let mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents)\n      let mutatedStores = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId)\n\n      let populate = (key) => {\n        if (!splitStates[key]) {\n          splitStates[key] = {\n            affectedEvents: affectedStores[key] || EMPTY_EVENT_STORE,\n            mutatedEvents: mutatedStores[key] || EMPTY_EVENT_STORE,\n            isEvent: interaction.isEvent,\n          }\n        }\n      }\n\n      for (let key in affectedStores) {\n        populate(key)\n      }\n\n      for (let key in mutatedStores) {\n        populate(key)\n      }\n    }\n\n    return splitStates\n  }\n}\n\nfunction buildEventUiForKey(allUi: EventUi | null, eventUiForKey: EventUi | null, individualUi: EventUiHash | null) {\n  let baseParts = []\n\n  if (allUi) {\n    baseParts.push(allUi)\n  }\n\n  if (eventUiForKey) {\n    baseParts.push(eventUiForKey)\n  }\n\n  let stuff = {\n    '': combineEventUis(baseParts),\n  }\n\n  if (individualUi) {\n    __assign(stuff, individualUi)\n  }\n\n  return stuff\n}\n", "import { DateMarker, DAY_IDS } from '../datelib/marker'\nimport { rangeContainsMarker, DateRange } from '../datelib/date-range'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Theme } from '../theme/Theme'\n\nexport interface DateMeta {\n  dow: number\n  isDisabled: boolean\n  isOther: boolean // like, is it in the non-current \"other\" month\n  isToday: boolean\n  isPast: boolean\n  isFuture: boolean\n}\n\nexport function getDateMeta(date: DateMarker, todayRange?: DateRange, nowDate?: DateMarker, dateProfile?: DateProfile): DateMeta {\n  return {\n    dow: date.getUTCDay(),\n    isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),\n    isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n    isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n    isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n    isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n  }\n}\n\nexport function getDayClassNames(meta: DateMeta, theme: Theme) {\n  let classNames: string[] = [\n    'fc-day',\n    `fc-day-${DAY_IDS[meta.dow]}`,\n  ]\n\n  if (meta.isDisabled) {\n    classNames.push('fc-day-disabled')\n  } else {\n    if (meta.isToday) {\n      classNames.push('fc-day-today')\n      classNames.push(theme.getClass('today'))\n    }\n\n    if (meta.isPast) {\n      classNames.push('fc-day-past')\n    }\n\n    if (meta.isFuture) {\n      classNames.push('fc-day-future')\n    }\n\n    if (meta.isOther) {\n      classNames.push('fc-day-other')\n    }\n  }\n\n  return classNames\n}\n\nexport function getSlotClassNames(meta: DateMeta, theme: Theme) {\n  let classNames: string[] = [\n    'fc-slot',\n    `fc-slot-${DAY_IDS[meta.dow]}`,\n  ]\n\n  if (meta.isDisabled) {\n    classNames.push('fc-slot-disabled')\n  } else {\n    if (meta.isToday) {\n      classNames.push('fc-slot-today')\n      classNames.push(theme.getClass('today'))\n    }\n\n    if (meta.isPast) {\n      classNames.push('fc-slot-past')\n    }\n\n    if (meta.isFuture) {\n      classNames.push('fc-slot-future')\n    }\n  }\n\n  return classNames\n}\n", "import { createFormatter } from '../datelib/formatting'\nimport { DateMarker } from '../datelib/marker'\nimport { createAriaClickAttrs } from '../util/dom-event'\nimport { formatWithOrdinals } from '../util/misc'\nimport { ViewContext } from '../ViewContext'\n\nconst DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' })\nconst WEEK_FORMAT = createFormatter({ week: 'long' })\n\nexport function buildNavLinkAttrs(\n  context: ViewContext,\n  dateMarker: DateMarker,\n  viewType = 'day',\n  isTabbable = true,\n) {\n  const { dateEnv, options, calendarApi } = context\n  let dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT)\n\n  if (options.navLinks) {\n    let zonedDate = dateEnv.toDate(dateMarker)\n\n    const handleInteraction = (ev: UIEvent) => {\n      let customAction =\n        viewType === 'day' ? options.navLinkDayClick :\n          viewType === 'week' ? options.navLinkWeekClick : null\n\n      if (typeof customAction === 'function') {\n        customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev)\n      } else {\n        if (typeof customAction === 'string') {\n          viewType = customAction\n        }\n        calendarApi.zoomTo(dateMarker, viewType)\n      }\n    }\n\n    return {\n      title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr),\n      'data-navlink': '', // for legacy selectors. TODO: use className?\n      ...(isTabbable\n        ? createAriaClickAttrs(handleInteraction)\n        : { onClick: handleInteraction }\n      ),\n    }\n  }\n\n  return { 'aria-label': dateStr }\n}\n", "import { removeElement, applyStyle } from './dom-manip'\n\nlet _isRtlScrollbarOnLeft: boolean | null = null\n\nexport function getIsRtlScrollbarOnLeft() { // responsible for caching the computation\n  if (_isRtlScrollbarOnLeft === null) {\n    _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft()\n  }\n  return _isRtlScrollbarOnLeft\n}\n\nfunction computeIsRtlScrollbarOnLeft() { // creates an offscreen test element, then removes it\n  let outerEl = document.createElement('div')\n  applyStyle(outerEl, {\n    position: 'absolute',\n    top: -1000,\n    left: 0,\n    border: 0,\n    padding: 0,\n    overflow: 'scroll',\n    direction: 'rtl',\n  })\n  outerEl.innerHTML = '<div></div>'\n\n  document.body.appendChild(outerEl)\n  let innerEl = outerEl.firstChild as HTMLElement\n  let res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left\n\n  removeElement(outerEl)\n  return res\n}\n", "export interface ScrollbarWidths {\n  x: number\n  y: number // TODO: rename to vertical. less confusing when dealing with width/height verbage\n}\n\nlet _scrollbarWidths: ScrollbarWidths | undefined\n\nexport function getScrollbarWidths() { // TODO: way to force recompute?\n  if (!_scrollbarWidths) {\n    _scrollbarWidths = computeScrollbarWidths()\n  }\n\n  return _scrollbarWidths\n}\n\nfunction computeScrollbarWidths(): ScrollbarWidths {\n  let el = document.createElement('div')\n  el.style.overflow = 'scroll'\n  el.style.position = 'absolute'\n  el.style.top = '-9999px'\n  el.style.left = '-9999px'\n  document.body.appendChild(el)\n  let res = computeScrollbarWidthsForEl(el)\n  document.body.removeChild(el)\n  return res\n}\n\n// WARNING: will include border\nexport function computeScrollbarWidthsForEl(el: HTMLElement): ScrollbarWidths {\n  return {\n    x: el.offsetHeight - el.clientHeight,\n    y: el.offsetWidth - el.clientWidth,\n  }\n}\n", "import { intersectRects, Rect } from './geom'\nimport { getIsRtlScrollbarOnLeft } from './scrollbar-side'\nimport { computeScrollbarWidthsForEl } from './scrollbar-width'\n\nexport interface EdgeInfo {\n  borderLeft: number\n  borderRight: number\n  borderTop: number\n  borderBottom: number\n  scrollbarLeft: number\n  scrollbarRight: number\n  scrollbarBottom: number\n  paddingLeft?: number\n  paddingRight?: number\n  paddingTop?: number\n  paddingBottom?: number\n}\n\nexport function computeEdges(el: HTMLElement, getPadding = false): EdgeInfo { // cache somehow?\n  let computedStyle = window.getComputedStyle(el)\n  let borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0\n  let borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0\n  let borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0\n  let borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0\n  let badScrollbarWidths = computeScrollbarWidthsForEl(el) // includes border!\n  let scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight\n  let scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom\n\n  let res: EdgeInfo = {\n    borderLeft,\n    borderRight,\n    borderTop,\n    borderBottom,\n    scrollbarBottom,\n    scrollbarLeft: 0,\n    scrollbarRight: 0,\n  }\n\n  if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n    res.scrollbarLeft = scrollbarLeftRight\n  } else {\n    res.scrollbarRight = scrollbarLeftRight\n  }\n\n  if (getPadding) {\n    res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0\n    res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0\n    res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0\n    res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0\n  }\n\n  return res\n}\n\nexport function computeInnerRect(el, goWithinPadding = false, doFromWindowViewport?: boolean) {\n  let outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el)\n  let edges = computeEdges(el, goWithinPadding)\n  let res = {\n    left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n    right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n    top: outerRect.top + edges.borderTop,\n    bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n  }\n\n  if (goWithinPadding) {\n    res.left += edges.paddingLeft\n    res.right -= edges.paddingRight\n    res.top += edges.paddingTop\n    res.bottom -= edges.paddingBottom\n  }\n\n  return res\n}\n\nexport function computeRect(el): Rect {\n  let rect = el.getBoundingClientRect()\n\n  return {\n    left: rect.left + window.pageXOffset,\n    top: rect.top + window.pageYOffset,\n    right: rect.right + window.pageXOffset,\n    bottom: rect.bottom + window.pageYOffset,\n  }\n}\n\nexport function computeClippedClientRect(el: HTMLElement): Rect | null {\n  let clippingParents = getClippingParents(el)\n  let rect: Rect = el.getBoundingClientRect()\n\n  for (let clippingParent of clippingParents) {\n    let intersection = intersectRects(rect, clippingParent.getBoundingClientRect())\n    if (intersection) {\n      rect = intersection\n    } else {\n      return null\n    }\n  }\n\n  return rect\n}\n\nexport function computeHeightAndMargins(el: HTMLElement) {\n  return el.getBoundingClientRect().height + computeVMargins(el)\n}\n\nexport function computeVMargins(el: HTMLElement) {\n  let computed = window.getComputedStyle(el)\n\n  return parseInt(computed.marginTop, 10) +\n    parseInt(computed.marginBottom, 10)\n}\n\n// does not return window\nexport function getClippingParents(el: HTMLElement): HTMLElement[] {\n  let parents: HTMLElement[] = []\n\n  while (el instanceof HTMLElement) { // will stop when gets to document or null\n    let computedStyle = window.getComputedStyle(el)\n\n    if (computedStyle.position === 'fixed') {\n      break\n    }\n\n    if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n      parents.push(el)\n    }\n\n    el = el.parentNode as HTMLElement\n  }\n\n  return parents\n}\n", "// given a function that resolves a result asynchronously.\n// the function can either call passed-in success and failure callbacks,\n// or it can return a promise.\n// if you need to pass additional params to func, bind them first.\nexport function unpromisify(func, success, failure?) {\n  // guard against success/failure callbacks being called more than once\n  // and guard against a promise AND callback being used together.\n  let isResolved = false\n  let wrappedSuccess = function () { // eslint-disable-line func-names\n    if (!isResolved) {\n      isResolved = true\n      success.apply(this, arguments) // eslint-disable-line prefer-rest-params\n    }\n  }\n  let wrappedFailure = function () { // eslint-disable-line func-names\n    if (!isResolved) {\n      isResolved = true\n      if (failure) {\n        failure.apply(this, arguments) // eslint-disable-line prefer-rest-params\n      }\n    }\n  }\n\n  let res = func(wrappedSuccess, wrappedFailure)\n  if (res && typeof res.then === 'function') {\n    res.then(wrappedSuccess, wrappedFailure)\n  }\n}\n", "export interface HandlerFuncTypeHash {\n  [eventName: string]: (...args: any[]) => any // with all properties required\n}\n\nexport class Emitter<HandlerFuncs extends HandlerFuncTypeHash> {\n  private handlers: { [Prop in keyof HandlerFuncs]?: HandlerFuncs[Prop][] } = {}\n\n  private options: Partial<HandlerFuncs>\n\n  private thisContext: any = null\n\n  setThisContext(thisContext) {\n    this.thisContext = thisContext\n  }\n\n  setOptions(options: Partial<HandlerFuncs>) {\n    this.options = options\n  }\n\n  on<Prop extends keyof HandlerFuncs>(type: Prop, handler: HandlerFuncs[Prop]) {\n    addToHash(this.handlers, type, handler)\n  }\n\n  off<Prop extends keyof HandlerFuncs>(type: Prop, handler?: HandlerFuncs[Prop]) {\n    removeFromHash(this.handlers, type, handler)\n  }\n\n  trigger<Prop extends keyof HandlerFuncs>(type: Prop, ...args: Parameters<HandlerFuncs[Prop]>) {\n    let attachedHandlers = this.handlers[type] || []\n    let optionHandler = this.options && this.options[type]\n    let handlers = [].concat(optionHandler || [], attachedHandlers)\n\n    for (let handler of handlers) {\n      handler.apply(this.thisContext, args)\n    }\n  }\n\n  hasHandlers(type: keyof HandlerFuncs): boolean {\n    return Boolean(\n      (this.handlers[type] && this.handlers[type].length) ||\n      (this.options && this.options[type]),\n    )\n  }\n}\n\nfunction addToHash(hash, type, handler) {\n  (hash[type] || (hash[type] = []))\n    .push(handler)\n}\n\nfunction removeFromHash(hash, type, handler?) {\n  if (handler) {\n    if (hash[type]) {\n      hash[type] = hash[type].filter((func) => func !== handler)\n    }\n  } else {\n    delete hash[type] // remove all handler funcs for this type\n  }\n}\n", "/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nexport class PositionCache {\n  els: HTMLElement[] // assumed to be siblings\n  originClientRect: ClientRect\n\n  // arrays of coordinates (from topleft of originEl)\n  // caller can access these directly\n  lefts: any\n  rights: any\n  tops: any\n  bottoms: any\n\n  constructor(originEl: HTMLElement, els: HTMLElement[], isHorizontal: boolean, isVertical: boolean) {\n    this.els = els\n\n    let originClientRect = this.originClientRect = originEl.getBoundingClientRect() // relative to viewport top-left\n\n    if (isHorizontal) {\n      this.buildElHorizontals(originClientRect.left)\n    }\n\n    if (isVertical) {\n      this.buildElVerticals(originClientRect.top)\n    }\n  }\n\n  // Populates the left/right internal coordinate arrays\n  buildElHorizontals(originClientLeft: number) {\n    let lefts = []\n    let rights = []\n\n    for (let el of this.els) {\n      let rect = el.getBoundingClientRect()\n      lefts.push(rect.left - originClientLeft)\n      rights.push(rect.right - originClientLeft)\n    }\n\n    this.lefts = lefts\n    this.rights = rights\n  }\n\n  // Populates the top/bottom internal coordinate arrays\n  buildElVerticals(originClientTop: number) {\n    let tops = []\n    let bottoms = []\n\n    for (let el of this.els) {\n      let rect = el.getBoundingClientRect()\n      tops.push(rect.top - originClientTop)\n      bottoms.push(rect.bottom - originClientTop)\n    }\n\n    this.tops = tops\n    this.bottoms = bottoms\n  }\n\n  // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n  // If no intersection is made, returns undefined.\n  leftToIndex(leftPosition: number) {\n    let { lefts, rights } = this\n    let len = lefts.length\n    let i\n\n    for (i = 0; i < len; i += 1) {\n      if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n        return i\n      }\n    }\n\n    return undefined // TODO: better\n  }\n\n  // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n  // If no intersection is made, returns undefined.\n  topToIndex(topPosition: number) {\n    let { tops, bottoms } = this\n    let len = tops.length\n    let i\n\n    for (i = 0; i < len; i += 1) {\n      if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n        return i\n      }\n    }\n\n    return undefined // TODO: better\n  }\n\n  // Gets the width of the element at the given index\n  getWidth(leftIndex: number) {\n    return this.rights[leftIndex] - this.lefts[leftIndex]\n  }\n\n  // Gets the height of the element at the given index\n  getHeight(topIndex: number) {\n    return this.bottoms[topIndex] - this.tops[topIndex]\n  }\n}\n", "/* eslint max-classes-per-file: \"off\" */\n\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nexport abstract class ScrollController {\n  abstract getScrollTop(): number\n  abstract getScrollLeft(): number\n  abstract setScrollTop(top: number): void\n  abstract setScrollLeft(left: number): void\n  abstract getClientWidth(): number\n  abstract getClientHeight(): number\n  abstract getScrollWidth(): number\n  abstract getScrollHeight(): number\n\n  getMaxScrollTop() {\n    return this.getScrollHeight() - this.getClientHeight()\n  }\n\n  getMaxScrollLeft() {\n    return this.getScrollWidth() - this.getClientWidth()\n  }\n\n  canScrollVertically() {\n    return this.getMaxScrollTop() > 0\n  }\n\n  canScrollHorizontally() {\n    return this.getMaxScrollLeft() > 0\n  }\n\n  canScrollUp() {\n    return this.getScrollTop() > 0\n  }\n\n  canScrollDown() {\n    return this.getScrollTop() < this.getMaxScrollTop()\n  }\n\n  canScrollLeft() {\n    return this.getScrollLeft() > 0\n  }\n\n  canScrollRight() {\n    return this.getScrollLeft() < this.getMaxScrollLeft()\n  }\n}\n\nexport class ElementScrollController extends ScrollController {\n  el: HTMLElement\n\n  constructor(el: HTMLElement) {\n    super()\n    this.el = el\n  }\n\n  getScrollTop() {\n    return this.el.scrollTop\n  }\n\n  getScrollLeft() {\n    return this.el.scrollLeft\n  }\n\n  setScrollTop(top: number) {\n    this.el.scrollTop = top\n  }\n\n  setScrollLeft(left: number) {\n    this.el.scrollLeft = left\n  }\n\n  getScrollWidth() {\n    return this.el.scrollWidth\n  }\n\n  getScrollHeight() {\n    return this.el.scrollHeight\n  }\n\n  getClientHeight() {\n    return this.el.clientHeight\n  }\n\n  getClientWidth() {\n    return this.el.clientWidth\n  }\n}\n\nexport class WindowScrollController extends ScrollController {\n  getScrollTop() {\n    return window.pageYOffset\n  }\n\n  getScrollLeft() {\n    return window.pageXOffset\n  }\n\n  setScrollTop(n: number) {\n    window.scroll(window.pageXOffset, n)\n  }\n\n  setScrollLeft(n: number) {\n    window.scroll(n, window.pageYOffset)\n  }\n\n  getScrollWidth() {\n    return document.documentElement.scrollWidth\n  }\n\n  getScrollHeight() {\n    return document.documentElement.scrollHeight\n  }\n\n  getClientHeight() {\n    return document.documentElement.clientHeight\n  }\n\n  getClientWidth() {\n    return document.documentElement.clientWidth\n  }\n}\n", "import { CalendarOptionsRefined } from '../options'\n\nexport class Theme {\n  // settings. default values are set after the class\n  classes: any\n  iconClasses: any\n  rtlIconClasses: any\n  baseIconClass: string // className that ALL icon elements for this theme should have\n  iconOverrideOption: any // the name of the setting to use for icons. the subclass must set this.\n  iconOverrideCustomButtonOption: any // the name of the setting, *within* each customButtons object, to use for icons\n  iconOverridePrefix: string\n\n  constructor(calendarOptions: CalendarOptionsRefined) {\n    if (this.iconOverrideOption) {\n      this.setIconOverride(\n        calendarOptions[this.iconOverrideOption],\n      )\n    }\n  }\n\n  setIconOverride(iconOverrideHash) {\n    let iconClassesCopy\n    let buttonName\n\n    if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n      iconClassesCopy = { ...this.iconClasses }\n\n      for (buttonName in iconOverrideHash) {\n        iconClassesCopy[buttonName] = this.applyIconOverridePrefix(\n          iconOverrideHash[buttonName],\n        )\n      }\n\n      this.iconClasses = iconClassesCopy\n    } else if (iconOverrideHash === false) {\n      this.iconClasses = {}\n    }\n  }\n\n  applyIconOverridePrefix(className) {\n    let prefix = this.iconOverridePrefix\n\n    if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n      className = prefix + className\n    }\n\n    return className\n  }\n\n  getClass(key) {\n    return this.classes[key] || ''\n  }\n\n  getIconClass(buttonName, isRtl?: boolean) {\n    let className\n\n    if (isRtl && this.rtlIconClasses) {\n      className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName]\n    } else {\n      className = this.iconClasses[buttonName]\n    }\n\n    if (className) {\n      return `${this.baseIconClass} ${className}`\n    }\n\n    return ''\n  }\n\n  getCustomButtonIconClass(customButtonProps) {\n    let className\n\n    if (this.iconOverrideCustomButtonOption) {\n      className = customButtonProps[this.iconOverrideCustomButtonOption]\n\n      if (className) {\n        return `${this.baseIconClass} ${this.applyIconOverridePrefix(className)}`\n      }\n    }\n\n    return ''\n  }\n}\n\nTheme.prototype.classes = {}\nTheme.prototype.iconClasses = {}\nTheme.prototype.baseIconClass = ''\nTheme.prototype.iconOverridePrefix = ''\n\nexport type ThemeClass = { new(calendarOptions: any): Theme }\n", "import { __assign } from 'tslib'\nimport { Duration } from './datelib/duration'\nimport { Emitter } from './common/Emitter'\nimport { CalendarListeners } from './options'\n\nexport interface ScrollRequest {\n  time?: Duration\n  [otherProp: string]: any\n}\n\nexport type ScrollRequestHandler = (request: ScrollRequest) => boolean\n\nexport class ScrollResponder {\n  queuedRequest: ScrollRequest\n\n  constructor(\n    private execFunc: ScrollRequestHandler,\n    private emitter: Emitter<CalendarListeners>,\n    private scrollTime: Duration,\n    private scrollTimeReset: boolean,\n  ) {\n    emitter.on('_scrollRequest', this.handleScrollRequest)\n    this.fireInitialScroll()\n  }\n\n  detach() {\n    this.emitter.off('_scrollRequest', this.handleScrollRequest)\n  }\n\n  update(isDatesNew: boolean) {\n    if (isDatesNew && this.scrollTimeReset) {\n      this.fireInitialScroll() // will drain\n    } else {\n      this.drain()\n    }\n  }\n\n  private fireInitialScroll() {\n    this.handleScrollRequest({\n      time: this.scrollTime,\n    })\n  }\n\n  private handleScrollRequest = (request: ScrollRequest) => {\n    this.queuedRequest = __assign({}, this.queuedRequest || {}, request)\n    this.drain()\n  }\n\n  private drain() {\n    if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n      this.queuedRequest = null\n    }\n  }\n}\n", "import { CalendarApi } from './CalendarApi'\nimport { ViewApi } from './ViewApi'\nimport { Theme } from './theme/Theme'\nimport { DateEnv } from './datelib/env'\nimport { PluginHooks } from './plugin-system-struct'\nimport { createContext, Context } from './vdom'\nimport { ScrollResponder, ScrollRequestHandler } from './ScrollResponder'\nimport { DateProfileGenerator } from './DateProfileGenerator'\nimport { ViewSpec } from './structs/view-spec'\nimport { CalendarData } from './reducers/data-types'\nimport { Action } from './reducers/Action'\nimport { Emitter } from './common/Emitter'\nimport { InteractionSettingsInput } from './interactions/interaction'\nimport { DateComponent } from './component/DateComponent'\nimport { CalendarContext } from './CalendarContext'\nimport { createDuration } from './datelib/duration'\nimport { ViewOptionsRefined, CalendarListeners } from './options'\n\nexport const ViewContextType: Context<any> = createContext<ViewContext>({} as any) // for Components\nexport type ResizeHandler = (force: boolean) => void\n\n/*\nit's important that ViewContext extends CalendarContext so that components that subscribe to ViewContext\ncan pass in their ViewContext to util functions that accept CalendarContext.\n*/\nexport interface ViewContext extends CalendarContext {\n  options: ViewOptionsRefined // more specific than BaseOptionsRefined\n  theme: Theme\n  isRtl: boolean\n  dateProfileGenerator: DateProfileGenerator\n  viewSpec: ViewSpec\n  viewApi: ViewApi\n  addResizeHandler: (handler: ResizeHandler) => void\n  removeResizeHandler: (handler: ResizeHandler) => void\n  createScrollResponder: (execFunc: ScrollRequestHandler) => ScrollResponder\n  registerInteractiveComponent: (component: DateComponent<any>, settingsInput: InteractionSettingsInput) => void\n  unregisterInteractiveComponent: (component: DateComponent<any>) => void\n}\n\nexport function buildViewContext(\n  viewSpec: ViewSpec,\n  viewApi: ViewApi,\n  viewOptions: ViewOptionsRefined,\n  dateProfileGenerator: DateProfileGenerator,\n  dateEnv: DateEnv,\n  theme: Theme,\n  pluginHooks: PluginHooks,\n  dispatch: (action: Action) => void,\n  getCurrentData: () => CalendarData,\n  emitter: Emitter<CalendarListeners>,\n  calendarApi: CalendarApi,\n  registerInteractiveComponent: (component: DateComponent<any>, settingsInput: InteractionSettingsInput) => void,\n  unregisterInteractiveComponent: (component: DateComponent<any>) => void,\n): ViewContext {\n  return {\n    dateEnv,\n    options: viewOptions,\n    pluginHooks,\n    emitter,\n    dispatch,\n    getCurrentData,\n    calendarApi,\n    viewSpec,\n    viewApi,\n    dateProfileGenerator,\n    theme,\n    isRtl: viewOptions.direction === 'rtl',\n    addResizeHandler(handler: ResizeHandler) {\n      emitter.on('_resize', handler)\n    },\n    removeResizeHandler(handler: ResizeHandler) {\n      emitter.off('_resize', handler)\n    },\n    createScrollResponder(execFunc: ScrollRequestHandler) {\n      return new ScrollResponder(\n        execFunc,\n        emitter,\n        createDuration(viewOptions.scrollTime),\n        viewOptions.scrollTimeReset,\n      )\n    },\n    registerInteractiveComponent,\n    unregisterInteractiveComponent,\n  }\n}\n", "/* eslint max-classes-per-file: off */\n\nimport { __assign } from 'tslib'\nimport { Component, Ref } from './vdom'\nimport { ViewContextType, ViewContext } from './ViewContext'\nimport { compareObjs, EqualityFuncs, getUnequalProps } from './util/object'\nimport { Dictionary } from './options'\n\nexport abstract class PureComponent<Props=Dictionary, State=Dictionary> extends Component<Props, State> {\n  static addPropsEquality = addPropsEquality\n  static addStateEquality = addStateEquality\n  static contextType: any = ViewContextType\n\n  context: ViewContext\n  propEquality: EqualityFuncs<Props>\n  stateEquality: EqualityFuncs<State>\n\n  debug: boolean\n\n  shouldComponentUpdate(nextProps: Props, nextState: State) {\n    if (this.debug) {\n      // eslint-disable-next-line no-console\n      console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state))\n    }\n\n    return !compareObjs(this.props, nextProps, this.propEquality) ||\n      !compareObjs(this.state, nextState, this.stateEquality)\n  }\n\n  // HACK for freakin' React StrictMode\n  safeSetState(newState: Partial<State>): void {\n    if (!compareObjs(this.state, { ...this.state, ...newState }, this.stateEquality)) {\n      this.setState(newState)\n    }\n  }\n}\n\nPureComponent.prototype.propEquality = {}\nPureComponent.prototype.stateEquality = {}\n\nexport abstract class BaseComponent<Props=Dictionary, State=Dictionary> extends PureComponent<Props, State> {\n  static contextType: any = ViewContextType\n\n  context: ViewContext\n}\n\nfunction addPropsEquality(this: { prototype: { propEquality: any } }, propEquality) {\n  let hash = Object.create(this.prototype.propEquality)\n  __assign(hash, propEquality)\n  this.prototype.propEquality = hash\n}\n\nfunction addStateEquality(this: { prototype: { stateEquality: any } }, stateEquality) {\n  let hash = Object.create(this.prototype.stateEquality)\n  __assign(hash, stateEquality)\n  this.prototype.stateEquality = hash\n}\n\n// use other one\nexport function setRef<RefType>(ref: Ref<RefType> | void, current: RefType) {\n  if (typeof ref === 'function') {\n    ref(current)\n  } else if (ref) {\n    // see https://github.com/facebook/react/issues/13029\n    (ref as any).current = current\n  }\n}\n", "import { BaseComponent } from '../vdom-util'\nimport { EventRenderRange } from './event-rendering'\nimport { EventInstanceHash } from '../structs/event-instance'\nimport { Hit } from '../interactions/hit'\nimport { elementClosest } from '../util/dom-manip'\nimport { guid } from '../util/misc'\nimport { Dictionary } from '../options'\n\nexport type DateComponentHash = { [uid: string]: DateComponent<any, any> }\n\n// NOTE: for fg-events, eventRange.range is NOT sliced,\n// thus, we need isStart/isEnd\nexport interface Seg {\n  component?: DateComponent<any, any>\n  isStart: boolean\n  isEnd: boolean\n  eventRange?: EventRenderRange\n  [otherProp: string]: any // TODO: remove this. extending Seg will handle this\n  el?: never\n  // NOTE: can sometimes have start/end, which are important values :(\n}\n\nexport interface EventSegUiInteractionState {\n  affectedInstances: EventInstanceHash\n  segs: Seg[]\n  isEvent: boolean\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nexport abstract class DateComponent<Props=Dictionary, State=Dictionary> extends BaseComponent<Props, State> {\n  uid = guid()\n\n  // Hit System\n  // -----------------------------------------------------------------------------------------------------------------\n\n  prepareHits() {\n  }\n\n  queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit | null {\n    return null // this should be abstract\n  }\n\n  // Pointer Interaction Utils\n  // -----------------------------------------------------------------------------------------------------------------\n\n  isValidSegDownEl(el: HTMLElement) {\n    return !(this.props as any).eventDrag && // HACK\n      !(this.props as any).eventResize && // HACK\n      !elementClosest(el, '.fc-event-mirror')\n  }\n\n  isValidDateDownEl(el: HTMLElement) {\n    return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n      !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n      !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n      !elementClosest(el, '.fc-popover') // hack\n  }\n}\n", "import { guid } from './util/misc'\nimport { PluginDefInput, PluginDef, PluginHooks } from './plugin-system-struct'\nimport { isArraysEqual } from './util/array'\n\n// TODO: easier way to add new hooks? need to update a million things\n\nexport function createPlugin(input: PluginDefInput): PluginDef {\n  return {\n    id: guid(),\n    deps: input.deps || [],\n    reducers: input.reducers || [],\n    isLoadingFuncs: input.isLoadingFuncs || [],\n    contextInit: [].concat(input.contextInit || []),\n    eventRefiners: input.eventRefiners || {},\n    eventDefMemberAdders: input.eventDefMemberAdders || [],\n    eventSourceRefiners: input.eventSourceRefiners || {},\n    isDraggableTransformers: input.isDraggableTransformers || [],\n    eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n    eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n    dateSelectionTransformers: input.dateSelectionTransformers || [],\n    datePointTransforms: input.datePointTransforms || [],\n    dateSpanTransforms: input.dateSpanTransforms || [],\n    views: input.views || {},\n    viewPropsTransformers: input.viewPropsTransformers || [],\n    isPropsValid: input.isPropsValid || null,\n    externalDefTransforms: input.externalDefTransforms || [],\n    viewContainerAppends: input.viewContainerAppends || [],\n    eventDropTransformers: input.eventDropTransformers || [],\n    componentInteractions: input.componentInteractions || [],\n    calendarInteractions: input.calendarInteractions || [],\n    themeClasses: input.themeClasses || {},\n    eventSourceDefs: input.eventSourceDefs || [],\n    cmdFormatter: input.cmdFormatter,\n    recurringTypes: input.recurringTypes || [],\n    namedTimeZonedImpl: input.namedTimeZonedImpl,\n    initialView: input.initialView || '',\n    elementDraggingImpl: input.elementDraggingImpl,\n    optionChangeHandlers: input.optionChangeHandlers || {},\n    scrollGridImpl: input.scrollGridImpl || null,\n    contentTypeHandlers: input.contentTypeHandlers || {},\n    listenerRefiners: input.listenerRefiners || {},\n    optionRefiners: input.optionRefiners || {},\n    propSetHandlers: input.propSetHandlers || {},\n  }\n}\n\nfunction buildPluginHooks(pluginDefs: PluginDef[], globalDefs: PluginDef[]): PluginHooks {\n  let isAdded: { [pluginId: string]: boolean } = {}\n  let hooks: PluginHooks = {\n    reducers: [],\n    isLoadingFuncs: [],\n    contextInit: [],\n    eventRefiners: {},\n    eventDefMemberAdders: [],\n    eventSourceRefiners: {},\n    isDraggableTransformers: [],\n    eventDragMutationMassagers: [],\n    eventDefMutationAppliers: [],\n    dateSelectionTransformers: [],\n    datePointTransforms: [],\n    dateSpanTransforms: [],\n    views: {},\n    viewPropsTransformers: [],\n    isPropsValid: null,\n    externalDefTransforms: [],\n    viewContainerAppends: [],\n    eventDropTransformers: [],\n    componentInteractions: [],\n    calendarInteractions: [],\n    themeClasses: {},\n    eventSourceDefs: [],\n    cmdFormatter: null,\n    recurringTypes: [],\n    namedTimeZonedImpl: null,\n    initialView: '',\n    elementDraggingImpl: null,\n    optionChangeHandlers: {},\n    scrollGridImpl: null,\n    contentTypeHandlers: {},\n    listenerRefiners: {},\n    optionRefiners: {},\n    propSetHandlers: {},\n  }\n\n  function addDefs(defs: PluginDef[]) {\n    for (let def of defs) {\n      if (!isAdded[def.id]) {\n        isAdded[def.id] = true\n        addDefs(def.deps)\n        hooks = combineHooks(hooks, def)\n      }\n    }\n  }\n\n  if (pluginDefs) {\n    addDefs(pluginDefs)\n  }\n\n  addDefs(globalDefs)\n\n  return hooks\n}\n\nexport function buildBuildPluginHooks() { // memoizes\n  let currentOverrideDefs: PluginDef[] = []\n  let currentGlobalDefs: PluginDef[] = []\n  let currentHooks: PluginHooks\n\n  return (overrideDefs: PluginDef[], globalDefs: PluginDef[]) => {\n    if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n      currentHooks = buildPluginHooks(overrideDefs, globalDefs)\n    }\n    currentOverrideDefs = overrideDefs\n    currentGlobalDefs = globalDefs\n    return currentHooks\n  }\n}\n\nfunction combineHooks(hooks0: PluginHooks, hooks1: PluginHooks): PluginHooks {\n  return {\n    reducers: hooks0.reducers.concat(hooks1.reducers),\n    isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n    contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n    eventRefiners: { ...hooks0.eventRefiners, ...hooks1.eventRefiners },\n    eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n    eventSourceRefiners: { ...hooks0.eventSourceRefiners, ...hooks1.eventSourceRefiners },\n    isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n    eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n    eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n    dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n    datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n    dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n    views: { ...hooks0.views, ...hooks1.views },\n    viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n    isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n    externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n    viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n    eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n    calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n    componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n    themeClasses: { ...hooks0.themeClasses, ...hooks1.themeClasses },\n    eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n    cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n    recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n    namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n    initialView: hooks0.initialView || hooks1.initialView, // put earlier plugins FIRST\n    elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl, // \"\n    optionChangeHandlers: { ...hooks0.optionChangeHandlers, ...hooks1.optionChangeHandlers },\n    scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n    contentTypeHandlers: { ...hooks0.contentTypeHandlers, ...hooks1.contentTypeHandlers },\n    listenerRefiners: { ...hooks0.listenerRefiners, ...hooks1.listenerRefiners },\n    optionRefiners: { ...hooks0.optionRefiners, ...hooks1.optionRefiners },\n    propSetHandlers: { ...hooks0.propSetHandlers, ...hooks1.propSetHandlers },\n  }\n}\n", "import { Theme } from './Theme'\n\nexport class StandardTheme extends Theme {\n}\n\nStandardTheme.prototype.classes = {\n  root: 'fc-theme-standard', // TODO: compute this off of registered theme name\n  tableCellShaded: 'fc-cell-shaded',\n  buttonGroup: 'fc-button-group',\n  button: 'fc-button fc-button-primary',\n  buttonActive: 'fc-button-active',\n}\n\nStandardTheme.prototype.baseIconClass = 'fc-icon'\nStandardTheme.prototype.iconClasses = {\n  close: 'fc-icon-x',\n  prev: 'fc-icon-chevron-left',\n  next: 'fc-icon-chevron-right',\n  prevYear: 'fc-icon-chevrons-left',\n  nextYear: 'fc-icon-chevrons-right',\n}\nStandardTheme.prototype.rtlIconClasses = {\n  prev: 'fc-icon-chevron-right',\n  next: 'fc-icon-chevron-left',\n  prevYear: 'fc-icon-chevrons-right',\n  nextYear: 'fc-icon-chevrons-left',\n}\n\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons' // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon'\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-'\n", "import { ViewConfigHash, ViewComponentType } from './view-config'\nimport { ViewOptions } from '../options'\n\n/*\nRepresents information for an instantiatable View class along with settings\nthat are specific to that view. No other settings, like calendar-wide settings, are stored.\n*/\nexport interface ViewDef {\n  type: string\n  component: ViewComponentType\n  overrides: ViewOptions\n  defaults: ViewOptions\n}\n\nexport type ViewDefHash = { [viewType: string]: ViewDef }\n\nexport function compileViewDefs(defaultConfigs: ViewConfigHash, overrideConfigs: ViewConfigHash): ViewDefHash {\n  let hash: ViewDefHash = {}\n  let viewType: string\n\n  for (viewType in defaultConfigs) {\n    ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n  }\n\n  for (viewType in overrideConfigs) {\n    ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n  }\n\n  return hash\n}\n\nfunction ensureViewDef(\n  viewType: string,\n  hash: ViewDefHash,\n  defaultConfigs: ViewConfigHash,\n  overrideConfigs: ViewConfigHash,\n): ViewDef | null {\n  if (hash[viewType]) {\n    return hash[viewType]\n  }\n\n  let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n\n  if (viewDef) {\n    hash[viewType] = viewDef\n  }\n\n  return viewDef\n}\n\nfunction buildViewDef(\n  viewType: string,\n  hash: ViewDefHash,\n  defaultConfigs: ViewConfigHash,\n  overrideConfigs: ViewConfigHash,\n): ViewDef | null {\n  let defaultConfig = defaultConfigs[viewType]\n  let overrideConfig = overrideConfigs[viewType]\n\n  let queryProp = (name) => (\n    (defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n      ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)\n  )\n\n  let theComponent = queryProp('component') as ViewComponentType\n  let superType = queryProp('superType') as string\n  let superDef: ViewDef | null = null\n\n  if (superType) {\n    if (superType === viewType) {\n      throw new Error('Can\\'t have a custom view type that references itself')\n    }\n\n    superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs)\n  }\n\n  if (!theComponent && superDef) {\n    theComponent = superDef.component\n  }\n\n  if (!theComponent) {\n    return null // don't throw a warning, might be settings for a single-unit view\n  }\n\n  return {\n    type: viewType,\n    component: theComponent,\n    defaults: {\n      ...(superDef ? superDef.defaults : {}),\n      ...(defaultConfig ? defaultConfig.rawOptions : {}),\n    },\n    overrides: {\n      ...(superDef ? superDef.overrides : {}),\n      ...(overrideConfig ? overrideConfig.rawOptions : {}),\n    },\n  }\n}\n", "/* eslint max-classes-per-file: off */\n\nimport { Ref, createRef, ComponentChildren, createElement, RefObject, createContext, Context } from '../vdom'\nimport { setRef, BaseComponent } from '../vdom-util'\nimport { isPropsEqual } from '../util/object'\nimport { parseClassNames, ClassNamesInput } from '../util/html'\n\nexport type MountArg<ContentArg> = ContentArg & { el: HTMLElement }\nexport type DidMountHandler<TheMountArg extends { el: HTMLElement }> = (mountArg: TheMountArg) => void\nexport type WillUnmountHandler<TheMountArg extends { el: HTMLElement }> = (mountArg: TheMountArg) => void\n\nexport interface RenderHookProps<ContentArg> {\n  hookProps: ContentArg\n  classNames: ClassNamesGenerator<ContentArg>\n  content: CustomContentGenerator<ContentArg>\n  defaultContent?: DefaultContentGenerator<ContentArg>\n  didMount: DidMountHandler<MountArg<ContentArg>>\n  willUnmount: WillUnmountHandler<MountArg<ContentArg>>\n  children: RenderHookPropsChildren\n  elRef?: Ref<any>\n}\n\nexport type RenderHookPropsChildren = (\n  rootElRef: Ref<any>,\n  classNames: string[],\n  innerElRef: Ref<any>,\n  innerContent: ComponentChildren // if falsy, means it wasn't specified\n) => ComponentChildren\n\nexport interface ContentTypeHandlers {\n  [contentKey: string]: () => ({\n    render: (el: HTMLElement, contentVal: any) => void\n    destroy?: () => void\n  })\n}\n\n// NOTE: in JSX, you should always use this class with <HookProps> arg. otherwise, will default to any???\nexport class RenderHook<HookProps> extends BaseComponent<RenderHookProps<HookProps>> {\n  private rootElRef = createRef()\n\n  render() {\n    let { props } = this\n    let { hookProps } = props\n\n    return (\n      <MountHook hookProps={hookProps} didMount={props.didMount} willUnmount={props.willUnmount} elRef={this.handleRootEl}>\n        {(rootElRef) => (\n          <ContentHook hookProps={hookProps} content={props.content} defaultContent={props.defaultContent} backupElRef={this.rootElRef}>\n            {(innerElRef, innerContent) => props.children(\n              rootElRef,\n              normalizeClassNames(props.classNames, hookProps),\n              innerElRef,\n              innerContent,\n            )}\n          </ContentHook>\n        )}\n      </MountHook>\n    )\n  }\n\n  handleRootEl = (el: HTMLElement | null) => {\n    setRef(this.rootElRef, el)\n\n    if (this.props.elRef) {\n      setRef(this.props.elRef, el)\n    }\n  }\n}\n\nexport interface ObjCustomContent {\n  html: string\n  domNodes: any[]\n  [custom: string]: any // TODO: expose hook for plugins to add!\n}\n\nexport type CustomContent = ComponentChildren | ObjCustomContent\nexport type CustomContentGenerator<HookProps> = CustomContent | ((hookProps: HookProps) => CustomContent)\n\nexport type DefaultContentGenerator<HookProps> = (hookProps: HookProps) => ComponentChildren\n// TODO: rename to be about function, not default. use in above type\n\n// for forcing rerender of components that use the ContentHook\nexport const CustomContentRenderContext: Context<number> = createContext<number>(0)\n\nexport interface ContentHookProps<HookProps> {\n  hookProps: HookProps // produced by FullCalendar internally, for rendering an entity/whatever\n  content: CustomContentGenerator<HookProps> // the value of a user-hook, like `eventContent`\n  defaultContent?: DefaultContentGenerator<HookProps> // if content not specified (TODO: just use content?)\n  children: ( // for producing a wrapper around the content\n    innerElRef: Ref<any>,\n    innerContent: ComponentChildren // if falsy, means it wasn't specified\n  ) => ComponentChildren\n  backupElRef?: RefObject<any>\n}\n\ninterface ContentHookInnerProps<HookProps> extends ContentHookProps<HookProps> {\n  renderId: number\n}\n\nexport function ContentHook<HookProps>(props: ContentHookProps<HookProps>) { // TODO: rename to CustomContentHook?\n  return (\n    <CustomContentRenderContext.Consumer>\n      {(renderId) => (\n        <ContentHookInner renderId={renderId} {...props} />\n      )}\n    </CustomContentRenderContext.Consumer>\n  )\n}\n\nclass ContentHookInner<HookProps> extends BaseComponent<ContentHookInnerProps<HookProps>> {\n  private innerElRef = createRef()\n\n  private customContentInfo: {\n    contentKey: string\n    contentVal: any\n    render: (el: HTMLElement, contentVal: any) => void\n    destroy?: () => void\n  }\n\n  render() {\n    return this.props.children(this.innerElRef, this.renderInnerContent())\n  }\n\n  componentDidMount() {\n    this.updateCustomContent()\n  }\n\n  componentDidUpdate() {\n    this.updateCustomContent()\n  }\n\n  componentWillUnmount() {\n    if (this.customContentInfo && this.customContentInfo.destroy) {\n      this.customContentInfo.destroy()\n    }\n  }\n\n  private renderInnerContent() {\n    let { customContentInfo } = this // only populated if using non-[p]react node(s)\n    let innerContent = this.getInnerContent()\n    let meta = this.getContentMeta(innerContent)\n\n    // initial run, or content-type changing? (from vue -> react for example)\n    if (!customContentInfo || customContentInfo.contentKey !== meta.contentKey) {\n      // clearing old value\n      if (customContentInfo) {\n        if (customContentInfo.destroy) {\n          customContentInfo.destroy()\n        }\n        customContentInfo = this.customContentInfo = null\n      }\n      // assigning new value\n      if (meta.contentKey) {\n        customContentInfo = this.customContentInfo = { // for non-[p]react\n          contentKey: meta.contentKey,\n          contentVal: innerContent[meta.contentKey],\n          ...meta.buildLifecycleFuncs(),\n        }\n      }\n    // updating\n    } else if (customContentInfo) {\n      customContentInfo.contentVal = innerContent[meta.contentKey]\n    }\n\n    return customContentInfo\n      ? [] // signal that something was specified\n      : innerContent // assume a [p]react vdom node. use it\n  }\n\n  private getInnerContent() {\n    let { props } = this\n    let innerContent = normalizeContent(props.content, props.hookProps)\n\n    if (innerContent === undefined) { // use the default\n      innerContent = normalizeContent(props.defaultContent, props.hookProps)\n    }\n\n    return innerContent == null ? null : innerContent // convert undefined to null (better for React)\n  }\n\n  private getContentMeta(innerContent: any) {\n    let { contentTypeHandlers } = this.context.pluginHooks\n    let contentKey = ''\n    let buildLifecycleFuncs = null\n\n    if (innerContent) { // allowed to be null, for convenience to caller\n      for (let searchKey in contentTypeHandlers) {\n        if (innerContent[searchKey] !== undefined) {\n          contentKey = searchKey\n          buildLifecycleFuncs = contentTypeHandlers[searchKey]\n          break\n        }\n      }\n    }\n\n    return { contentKey, buildLifecycleFuncs }\n  }\n\n  private updateCustomContent() {\n    if (this.customContentInfo) { // for non-[p]react\n      this.customContentInfo.render(\n        this.innerElRef.current || this.props.backupElRef.current, // the element to render into\n        this.customContentInfo.contentVal,\n      )\n    }\n  }\n}\n\nexport interface MountHookProps<ContentArg> {\n  hookProps: ContentArg\n  didMount: DidMountHandler<MountArg<ContentArg>>\n  willUnmount: WillUnmountHandler<MountArg<ContentArg>>\n  children: (rootElRef: Ref<any>) => ComponentChildren\n  elRef?: Ref<any> // maybe get rid of once we have better API for caller to combine refs\n}\n\nexport class MountHook<ContentArg> extends BaseComponent<MountHookProps<ContentArg>> {\n  rootEl: HTMLElement\n\n  render() {\n    return this.props.children(this.handleRootEl)\n  }\n\n  componentDidMount() {\n    let callback = this.props.didMount\n\n    if (callback) {\n      callback({ ...this.props.hookProps, el: this.rootEl })\n    }\n  }\n\n  componentWillUnmount() {\n    let callback = this.props.willUnmount\n\n    if (callback) {\n      callback({ ...this.props.hookProps, el: this.rootEl })\n    }\n  }\n\n  private handleRootEl = (rootEl: HTMLElement) => {\n    this.rootEl = rootEl\n\n    if (this.props.elRef) {\n      setRef(this.props.elRef, rootEl)\n    }\n  }\n}\n\nexport function buildClassNameNormalizer<HookProps>() { // TODO: general deep-memoizer?\n  let currentGenerator: ClassNamesGenerator<HookProps>\n  let currentHookProps: HookProps\n  let currentClassNames: string[] = []\n\n  return (generator: ClassNamesGenerator<HookProps>, hookProps: HookProps) => {\n    if (!currentHookProps || !isPropsEqual(currentHookProps, hookProps) || generator !== currentGenerator) {\n      currentGenerator = generator\n      currentHookProps = hookProps\n      currentClassNames = normalizeClassNames(generator, hookProps)\n    }\n\n    return currentClassNames\n  }\n}\n\nexport type ClassNamesGenerator<HookProps> = ClassNamesInput | ((hookProps: HookProps) => ClassNamesInput)\n\nfunction normalizeClassNames<HookProps>(classNames: ClassNamesGenerator<HookProps>, hookProps: HookProps): string[] {\n  if (typeof classNames === 'function') {\n    classNames = classNames(hookProps)\n  }\n\n  return parseClassNames(classNames)\n}\n\nfunction normalizeContent(input, hookProps) {\n  if (typeof input === 'function') {\n    return input(hookProps, createElement) // give the function the vdom-creation func\n  }\n  return input\n}\n", "import { ViewSpec } from '../structs/view-spec'\nimport { MountHook, buildClassNameNormalizer, MountArg } from './render-hook'\nimport { ComponentChildren, createElement, Ref } from '../vdom'\nimport { BaseComponent } from '../vdom-util'\nimport { ViewApi } from '../ViewApi'\n\nexport interface ViewRootProps {\n  viewSpec: ViewSpec\n  children: (rootElRef: Ref<any>, classNames: string[]) => ComponentChildren\n  elRef?: Ref<any>\n}\n\nexport interface ViewContentArg {\n  view: ViewApi\n}\n\nexport type ViewMountArg = MountArg<ViewContentArg>\n\nexport class ViewRoot extends BaseComponent<ViewRootProps> {\n  normalizeClassNames = buildClassNameNormalizer<ViewContentArg>()\n\n  render() {\n    let { props, context } = this\n    let { options } = context\n    let hookProps: ViewContentArg = { view: context.viewApi }\n    let customClassNames = this.normalizeClassNames(options.viewClassNames, hookProps)\n\n    return (\n      <MountHook\n        hookProps={hookProps}\n        didMount={options.viewDidMount}\n        willUnmount={options.viewWillUnmount}\n        elRef={props.elRef}\n      >\n        {(rootElRef) => props.children(\n          rootElRef,\n          [`fc-${props.viewSpec.type}-view`, 'fc-view'].concat(customClassNames),\n        )}\n      </MountHook>\n    )\n  }\n}\n", "import { ViewProps } from '../View'\nimport { mapHash } from '../util/object'\nimport { ComponentType, Component, createElement } from '../vdom'\nimport { ViewRoot } from '../common/ViewRoot'\nimport { RenderHook, MountArg } from '../common/render-hook'\nimport { ViewContext, ViewContextType } from '../ViewContext'\nimport { ViewOptions } from '../options'\nimport { Duration } from '../datelib/duration'\n\n/*\nA view-config represents information for either:\nA) creating a new instantiatable view class. in which case, supplied a class/type in addition to options, OR\nB) options to customize an existing view, in which case only provides options.\n*/\n\nexport type ViewComponent = Component<ViewProps> // an instance\nexport type ViewComponentType = ComponentType<ViewProps>\n\nexport type ViewConfigInput = ViewComponentType | ViewOptions\nexport type ViewConfigInputHash = { [viewType: string]: ViewConfigInput }\n\nexport interface ViewConfig {\n  superType: string\n  component: ViewComponentType | null\n  rawOptions: ViewOptions\n}\n\nexport type ViewConfigHash = { [viewType: string]: ViewConfig }\n\nexport function parseViewConfigs(inputs: ViewConfigInputHash): ViewConfigHash {\n  return mapHash(inputs, parseViewConfig)\n}\n\nfunction parseViewConfig(input: ViewConfigInput): ViewConfig {\n  let rawOptions: ViewOptions = typeof input === 'function' ?\n    { component: input } :\n    input\n  let { component } = rawOptions\n\n  if (rawOptions.content) {\n    component = createViewHookComponent(rawOptions)\n    // TODO: remove content/classNames/didMount/etc from options?\n  }\n\n  return {\n    superType: rawOptions.type as any,\n    component: component as any,\n    rawOptions, // includes type and component too :(\n  }\n}\n\nexport interface SpecificViewContentArg extends ViewProps {\n  nextDayThreshold: Duration\n}\n\nexport type SpecificViewMountArg = MountArg<SpecificViewContentArg>\n\nfunction createViewHookComponent(options: ViewOptions) {\n  return (viewProps: ViewProps) => (\n    <ViewContextType.Consumer>\n      {(context: ViewContext) => (\n        <ViewRoot viewSpec={context.viewSpec}>\n          {(viewElRef, viewClassNames) => {\n            let hookProps: SpecificViewContentArg = {\n              ...viewProps,\n              nextDayThreshold: context.options.nextDayThreshold,\n            }\n            return (\n              <RenderHook\n                hookProps={hookProps}\n                classNames={options.classNames as any}\n                content={options.content as any}\n                didMount={options.didMount as any}\n                willUnmount={options.willUnmount as any}\n                elRef={viewElRef}\n              >\n                {(rootElRef, customClassNames, innerElRef, innerContent) => (\n                  <div className={viewClassNames.concat(customClassNames).join(' ')} ref={rootElRef}>\n                    {innerContent}\n                  </div>\n                )}\n              </RenderHook>\n            )\n          }}\n        </ViewRoot>\n      )}\n    </ViewContextType.Consumer>\n  )\n}\n", "import { ViewDef, compileViewDefs } from './view-def'\nimport { Duration, createDuration, greatestDurationDenominator, DurationInput } from '../datelib/duration'\nimport { mapHash } from '../util/object'\nimport { ViewOptions, CalendarOptions, BASE_OPTION_DEFAULTS } from '../options'\nimport { ViewConfigInputHash, parseViewConfigs, ViewConfigHash, ViewComponentType } from './view-config'\n\n/*\nRepresents everything needed to instantiate a new view instance,\nincluding options that have been compiled from view-specific and calendar-wide options,\nas well as duration information.\n\nOverall flow:\nViewConfig -> ViewDef -> ViewSpec\n*/\nexport interface ViewSpec {\n  type: string\n  component: ViewComponentType\n  duration: Duration\n  durationUnit: string\n  singleUnit: string\n  optionDefaults: ViewOptions\n  optionOverrides: ViewOptions\n  buttonTextOverride: string\n  buttonTextDefault: string\n  buttonTitleOverride: string | ((...args: any[]) => string)\n  buttonTitleDefault: string | ((...args: any[]) => string)\n}\n\nexport type ViewSpecHash = { [viewType: string]: ViewSpec }\n\nexport function buildViewSpecs(\n  defaultInputs: ViewConfigInputHash,\n  optionOverrides: CalendarOptions,\n  dynamicOptionOverrides: CalendarOptions,\n  localeDefaults,\n): ViewSpecHash {\n  let defaultConfigs = parseViewConfigs(defaultInputs)\n  let overrideConfigs = parseViewConfigs(optionOverrides.views)\n  let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs)\n\n  return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults))\n}\n\nfunction buildViewSpec(\n  viewDef: ViewDef,\n  overrideConfigs: ViewConfigHash,\n  optionOverrides: CalendarOptions,\n  dynamicOptionOverrides: CalendarOptions,\n  localeDefaults,\n): ViewSpec {\n  let durationInput =\n    viewDef.overrides.duration ||\n    viewDef.defaults.duration ||\n    dynamicOptionOverrides.duration ||\n    optionOverrides.duration\n\n  let duration = null\n  let durationUnit = ''\n  let singleUnit = ''\n  let singleUnitOverrides: ViewOptions = {}\n\n  if (durationInput) {\n    duration = createDurationCached(durationInput)\n\n    if (duration) { // valid?\n      let denom = greatestDurationDenominator(duration)\n      durationUnit = denom.unit\n\n      if (denom.value === 1) {\n        singleUnit = durationUnit\n        singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {}\n      }\n    }\n  }\n\n  let queryButtonText = (optionsSubset) => {\n    let buttonTextMap = optionsSubset.buttonText || {}\n    let buttonTextKey = viewDef.defaults.buttonTextKey as string\n\n    if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n      return buttonTextMap[buttonTextKey]\n    }\n    if (buttonTextMap[viewDef.type] != null) {\n      return buttonTextMap[viewDef.type]\n    }\n    if (buttonTextMap[singleUnit] != null) {\n      return buttonTextMap[singleUnit]\n    }\n    return null\n  }\n\n  let queryButtonTitle = (optionsSubset) => { // TODO: more DRY with queryButtonText\n    let buttonHints = optionsSubset.buttonHints || {}\n    let buttonKey = viewDef.defaults.buttonTextKey as string // use same key as text\n\n    if (buttonKey != null && buttonHints[buttonKey] != null) {\n      return buttonHints[buttonKey]\n    }\n    if (buttonHints[viewDef.type] != null) {\n      return buttonHints[viewDef.type]\n    }\n    if (buttonHints[singleUnit] != null) {\n      return buttonHints[singleUnit]\n    }\n    return null\n  }\n\n  return {\n    type: viewDef.type,\n    component: viewDef.component,\n    duration,\n    durationUnit,\n    singleUnit,\n    optionDefaults: viewDef.defaults,\n    optionOverrides: { ...singleUnitOverrides, ...viewDef.overrides },\n\n    buttonTextOverride:\n      queryButtonText(dynamicOptionOverrides) ||\n      queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n      viewDef.overrides.buttonText, // `buttonText` for view-specific options is a string\n    buttonTextDefault:\n      queryButtonText(localeDefaults) ||\n      viewDef.defaults.buttonText ||\n      queryButtonText(BASE_OPTION_DEFAULTS) ||\n      viewDef.type, // fall back to given view name\n\n    // not DRY\n    buttonTitleOverride:\n      queryButtonTitle(dynamicOptionOverrides) ||\n      queryButtonTitle(optionOverrides) ||\n      viewDef.overrides.buttonHint,\n    buttonTitleDefault:\n      queryButtonTitle(localeDefaults) ||\n      viewDef.defaults.buttonHint ||\n      queryButtonTitle(BASE_OPTION_DEFAULTS),\n    // will eventually fall back to buttonText\n  }\n}\n\n// hack to get memoization working\n\nlet durationInputMap: { [json: string]: Duration } = {}\n\nfunction createDurationCached(durationInput: DurationInput) {\n  let json = JSON.stringify(durationInput)\n  let res = durationInputMap[json]\n\n  if (res === undefined) {\n    res = createDuration(durationInput)\n    durationInputMap[json] = res\n  }\n\n  return res\n}\n", "import { DateMarker, startOfDay, addDays } from './datelib/marker'\nimport { Duration, createDuration, asRoughDays, asRoughMs, greatestDurationDenominator } from './datelib/duration'\nimport {\n  DateRange,\n  OpenDateRange,\n  constrainMarkerToRange,\n  intersectRanges,\n  rangesIntersect,\n  parseRange,\n  DateRangeInput,\n} from './datelib/date-range'\nimport { DateEnv, DateInput } from './datelib/env'\nimport { computeVisibleDayRange } from './util/date'\nimport { getNow } from './reducers/current-date'\nimport { CalendarApi } from './CalendarApi'\n\nexport interface DateProfile {\n  currentRange: DateRange // TODO: does this include slotMinTime/slotMaxTime?\n  currentRangeUnit: string\n  isRangeAllDay: boolean\n  validRange: OpenDateRange\n  activeRange: DateRange | null\n  renderRange: DateRange\n  slotMinTime: Duration\n  slotMaxTime: Duration\n  isValid: boolean\n  dateIncrement: Duration\n}\n\nexport interface DateProfileGeneratorProps extends DateProfileOptions {\n  dateProfileGeneratorClass: DateProfileGeneratorClass // not used by DateProfileGenerator itself\n  duration: Duration\n  durationUnit: string\n  usesMinMaxTime: boolean\n  dateEnv: DateEnv\n  calendarApi: CalendarApi\n}\n\nexport interface DateProfileOptions {\n  slotMinTime: Duration\n  slotMaxTime: Duration\n  showNonCurrentDates?: boolean\n  dayCount?: number\n  dateAlignment?: string\n  dateIncrement?: Duration\n  hiddenDays?: number[]\n  weekends?: boolean\n  nowInput?: DateInput | (() => DateInput)\n  validRangeInput?: DateRangeInput | ((this: CalendarApi, nowDate: Date) => DateRangeInput)\n  visibleRangeInput?: DateRangeInput | ((this: CalendarApi, nowDate: Date) => DateRangeInput)\n  monthMode?: boolean\n  fixedWeekCount?: boolean\n}\n\nexport type DateProfileGeneratorClass = {\n  new(props: DateProfileGeneratorProps): DateProfileGenerator\n}\n\nexport class DateProfileGenerator { // only publicly used for isHiddenDay :(\n  nowDate: DateMarker\n\n  isHiddenDayHash: boolean[]\n\n  constructor(protected props: DateProfileGeneratorProps) {\n    this.nowDate = getNow(props.nowInput, props.dateEnv)\n    this.initHiddenDays()\n  }\n\n  /* Date Range Computation\n  ------------------------------------------------------------------------------------------------------------------*/\n\n  // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n  buildPrev(currentDateProfile: DateProfile, currentDate: DateMarker, forceToValid?: boolean): DateProfile {\n    let { dateEnv } = this.props\n\n    let prevDate = dateEnv.subtract(\n      dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n      currentDateProfile.dateIncrement,\n    )\n\n    return this.build(prevDate, -1, forceToValid)\n  }\n\n  // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n  buildNext(currentDateProfile: DateProfile, currentDate: DateMarker, forceToValid?: boolean): DateProfile {\n    let { dateEnv } = this.props\n\n    let nextDate = dateEnv.add(\n      dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n      currentDateProfile.dateIncrement,\n    )\n\n    return this.build(nextDate, 1, forceToValid)\n  }\n\n  // Builds a structure holding dates/ranges for rendering around the given date.\n  // Optional direction param indicates whether the date is being incremented/decremented\n  // from its previous value. decremented = -1, incremented = 1 (default).\n  build(currentDate: DateMarker, direction?, forceToValid = true): DateProfile {\n    let { props } = this\n    let validRange: DateRange\n    let currentInfo\n    let isRangeAllDay\n    let renderRange: DateRange\n    let activeRange: DateRange\n    let isValid\n\n    validRange = this.buildValidRange()\n    validRange = this.trimHiddenDays(validRange)\n\n    if (forceToValid) {\n      currentDate = constrainMarkerToRange(currentDate, validRange)\n    }\n\n    currentInfo = this.buildCurrentRangeInfo(currentDate, direction)\n    isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit)\n    renderRange = this.buildRenderRange(\n      this.trimHiddenDays(currentInfo.range),\n      currentInfo.unit,\n      isRangeAllDay,\n    )\n    renderRange = this.trimHiddenDays(renderRange)\n    activeRange = renderRange\n\n    if (!props.showNonCurrentDates) {\n      activeRange = intersectRanges(activeRange, currentInfo.range)\n    }\n\n    activeRange = this.adjustActiveRange(activeRange)\n    activeRange = intersectRanges(activeRange, validRange) // might return null\n\n    // it's invalid if the originally requested date is not contained,\n    // or if the range is completely outside of the valid range.\n    isValid = rangesIntersect(currentInfo.range, validRange)\n\n    return {\n      // constraint for where prev/next operations can go and where events can be dragged/resized to.\n      // an object with optional start and end properties.\n      validRange,\n\n      // range the view is formally responsible for.\n      // for example, a month view might have 1st-31st, excluding padded dates\n      currentRange: currentInfo.range,\n\n      // name of largest unit being displayed, like \"month\" or \"week\"\n      currentRangeUnit: currentInfo.unit,\n\n      isRangeAllDay,\n\n      // dates that display events and accept drag-n-drop\n      // will be `null` if no dates accept events\n      activeRange,\n\n      // date range with a rendered skeleton\n      // includes not-active days that need some sort of DOM\n      renderRange,\n\n      // Duration object that denotes the first visible time of any given day\n      slotMinTime: props.slotMinTime,\n\n      // Duration object that denotes the exclusive visible end time of any given day\n      slotMaxTime: props.slotMaxTime,\n\n      isValid,\n\n      // how far the current date will move for a prev/next operation\n      dateIncrement: this.buildDateIncrement(currentInfo.duration),\n      // pass a fallback (might be null) ^\n    }\n  }\n\n  // Builds an object with optional start/end properties.\n  // Indicates the minimum/maximum dates to display.\n  // not responsible for trimming hidden days.\n  buildValidRange(): OpenDateRange {\n    let input = this.props.validRangeInput\n    let simpleInput = typeof input === 'function'\n      ? input.call(this.props.calendarApi, this.nowDate)\n      : input\n\n    return this.refineRange(simpleInput) ||\n      { start: null, end: null } // completely open-ended\n  }\n\n  // Builds a structure with info about the \"current\" range, the range that is\n  // highlighted as being the current month for example.\n  // See build() for a description of `direction`.\n  // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n  buildCurrentRangeInfo(date: DateMarker, direction) {\n    let { props } = this\n    let duration = null\n    let unit = null\n    let range = null\n    let dayCount\n\n    if (props.duration) {\n      duration = props.duration\n      unit = props.durationUnit\n      range = this.buildRangeFromDuration(date, direction, duration, unit)\n    } else if ((dayCount = this.props.dayCount)) {\n      unit = 'day'\n      range = this.buildRangeFromDayCount(date, direction, dayCount)\n    } else if ((range = this.buildCustomVisibleRange(date))) {\n      unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit\n    } else {\n      duration = this.getFallbackDuration()\n      unit = greatestDurationDenominator(duration).unit\n      range = this.buildRangeFromDuration(date, direction, duration, unit)\n    }\n\n    return { duration, unit, range }\n  }\n\n  getFallbackDuration(): Duration {\n    return createDuration({ day: 1 })\n  }\n\n  // Returns a new activeRange to have time values (un-ambiguate)\n  // slotMinTime or slotMaxTime causes the range to expand.\n  adjustActiveRange(range: DateRange) {\n    let { dateEnv, usesMinMaxTime, slotMinTime, slotMaxTime } = this.props\n    let { start, end } = range\n\n    if (usesMinMaxTime) {\n      // expand active range if slotMinTime is negative (why not when positive?)\n      if (asRoughDays(slotMinTime) < 0) {\n        start = startOfDay(start) // necessary?\n        start = dateEnv.add(start, slotMinTime)\n      }\n\n      // expand active range if slotMaxTime is beyond one day (why not when negative?)\n      if (asRoughDays(slotMaxTime) > 1) {\n        end = startOfDay(end) // necessary?\n        end = addDays(end, -1)\n        end = dateEnv.add(end, slotMaxTime)\n      }\n    }\n\n    return { start, end }\n  }\n\n  // Builds the \"current\" range when it is specified as an explicit duration.\n  // `unit` is the already-computed greatestDurationDenominator unit of duration.\n  buildRangeFromDuration(date: DateMarker, direction, duration: Duration, unit) {\n    let { dateEnv, dateAlignment } = this.props\n    let start: DateMarker\n    let end: DateMarker\n    let res\n\n    // compute what the alignment should be\n    if (!dateAlignment) {\n      let { dateIncrement } = this.props\n\n      if (dateIncrement) {\n        // use the smaller of the two units\n        if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n          dateAlignment = greatestDurationDenominator(dateIncrement).unit\n        } else {\n          dateAlignment = unit\n        }\n      } else {\n        dateAlignment = unit\n      }\n    }\n\n    // if the view displays a single day or smaller\n    if (asRoughDays(duration) <= 1) {\n      if (this.isHiddenDay(start)) {\n        start = this.skipHiddenDays(start, direction)\n        start = startOfDay(start)\n      }\n    }\n\n    function computeRes() {\n      start = dateEnv.startOf(date, dateAlignment)\n      end = dateEnv.add(start, duration)\n      res = { start, end }\n    }\n\n    computeRes()\n\n    // if range is completely enveloped by hidden days, go past the hidden days\n    if (!this.trimHiddenDays(res)) {\n      date = this.skipHiddenDays(date, direction)\n      computeRes()\n    }\n\n    return res\n  }\n\n  // Builds the \"current\" range when a dayCount is specified.\n  buildRangeFromDayCount(date: DateMarker, direction, dayCount) {\n    let { dateEnv, dateAlignment } = this.props\n    let runningCount = 0\n    let start: DateMarker = date\n    let end: DateMarker\n\n    if (dateAlignment) {\n      start = dateEnv.startOf(start, dateAlignment)\n    }\n\n    start = startOfDay(start)\n    start = this.skipHiddenDays(start, direction)\n\n    end = start\n    do {\n      end = addDays(end, 1)\n      if (!this.isHiddenDay(end)) {\n        runningCount += 1\n      }\n    } while (runningCount < dayCount)\n\n    return { start, end }\n  }\n\n  // Builds a normalized range object for the \"visible\" range,\n  // which is a way to define the currentRange and activeRange at the same time.\n  buildCustomVisibleRange(date: DateMarker) {\n    let { props } = this\n    let input = props.visibleRangeInput\n    let simpleInput = typeof input === 'function'\n      ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n      : input\n\n    let range = this.refineRange(simpleInput)\n\n    if (range && (range.start == null || range.end == null)) {\n      return null\n    }\n\n    return range\n  }\n\n  // Computes the range that will represent the element/cells for *rendering*,\n  // but which may have voided days/times.\n  // not responsible for trimming hidden days.\n  buildRenderRange(currentRange: DateRange, currentRangeUnit, isRangeAllDay) {\n    return currentRange\n  }\n\n  // Compute the duration value that should be added/substracted to the current date\n  // when a prev/next operation happens.\n  buildDateIncrement(fallback): Duration {\n    let { dateIncrement } = this.props\n    let customAlignment\n\n    if (dateIncrement) {\n      return dateIncrement\n    }\n\n    if ((customAlignment = this.props.dateAlignment)) {\n      return createDuration(1, customAlignment)\n    }\n\n    if (fallback) {\n      return fallback\n    }\n\n    return createDuration({ days: 1 })\n  }\n\n  refineRange(rangeInput: DateRangeInput | undefined): DateRange | null {\n    if (rangeInput) {\n      let range = parseRange(rangeInput, this.props.dateEnv)\n\n      if (range) {\n        range = computeVisibleDayRange(range)\n      }\n\n      return range\n    }\n\n    return null\n  }\n\n  /* Hidden Days\n  ------------------------------------------------------------------------------------------------------------------*/\n\n  // Initializes internal variables related to calculating hidden days-of-week\n  initHiddenDays() {\n    let hiddenDays = this.props.hiddenDays || [] // array of day-of-week indices that are hidden\n    let isHiddenDayHash = [] // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n    let dayCnt = 0\n    let i\n\n    if (this.props.weekends === false) {\n      hiddenDays.push(0, 6) // 0=sunday, 6=saturday\n    }\n\n    for (i = 0; i < 7; i += 1) {\n      if (\n        !(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)\n      ) {\n        dayCnt += 1\n      }\n    }\n\n    if (!dayCnt) {\n      throw new Error('invalid hiddenDays') // all days were hidden? bad.\n    }\n\n    this.isHiddenDayHash = isHiddenDayHash\n  }\n\n  // Remove days from the beginning and end of the range that are computed as hidden.\n  // If the whole range is trimmed off, returns null\n  trimHiddenDays(range: DateRange): DateRange | null {\n    let { start, end } = range\n\n    if (start) {\n      start = this.skipHiddenDays(start)\n    }\n\n    if (end) {\n      end = this.skipHiddenDays(end, -1, true)\n    }\n\n    if (start == null || end == null || start < end) {\n      return { start, end }\n    }\n\n    return null\n  }\n\n  // Is the current day hidden?\n  // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n  isHiddenDay(day) {\n    if (day instanceof Date) {\n      day = day.getUTCDay()\n    }\n    return this.isHiddenDayHash[day]\n  }\n\n  // Incrementing the current day until it is no longer a hidden day, returning a copy.\n  // DOES NOT CONSIDER validRange!\n  // If the initial value of `date` is not a hidden day, don't do anything.\n  // Pass `isExclusive` as `true` if you are dealing with an end date.\n  // `inc` defaults to `1` (increment one day forward each time)\n  skipHiddenDays(date: DateMarker, inc = 1, isExclusive = false) {\n    while (\n      this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]\n    ) {\n      date = addDays(date, inc)\n    }\n    return date\n  }\n}\n", "import { Action } from './Action'\n\nexport function reduceViewType(viewType: string, action: Action): string {\n  switch (action.type) {\n    case 'CHANGE_VIEW_TYPE':\n      viewType = action.viewType\n  }\n\n  return viewType\n}\n", "import { Action } from './Action'\n\nexport function reduceDynamicOptionOverrides(dynamicOptionOverrides, action: Action) {\n  switch (action.type) {\n    case 'SET_OPTION':\n      return { ...dynamicOptionOverrides, [action.optionName]: action.rawOptionValue }\n    default:\n      return dynamicOptionOverrides\n  }\n}\n", "import { DateProfile, DateProfileGenerator } from '../DateProfileGenerator'\nimport { Action } from './Action'\nimport { DateMarker } from '../datelib/marker'\n\nexport function reduceDateProfile(\n  currentDateProfile: DateProfile | null,\n  action: Action,\n  currentDate: DateMarker,\n  dateProfileGenerator: DateProfileGenerator,\n): DateProfile {\n  let dp: DateProfile\n\n  switch (action.type) {\n    case 'CHANGE_VIEW_TYPE':\n      return dateProfileGenerator.build(action.dateMarker || currentDate)\n\n    case 'CHANGE_DATE':\n      return dateProfileGenerator.build(action.dateMarker)\n\n    case 'PREV':\n      dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate)\n      if (dp.isValid) {\n        return dp\n      }\n      break\n\n    case 'NEXT':\n      dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate)\n      if (dp.isValid) {\n        return dp\n      }\n      break\n  }\n\n  return currentDateProfile\n}\n", "import { EventSource, EventSourceHash } from '../structs/event-source'\nimport { parseEventSource, buildEventSourceRefiners } from '../structs/event-source-parse'\nimport { arrayToHash, filterHash } from '../util/object'\nimport { DateRange } from '../datelib/date-range'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Action } from './Action'\nimport { guid } from '../util/misc'\nimport { CalendarContext } from '../CalendarContext'\nimport { CalendarOptions } from '../options'\n\nexport function initEventSources(calendarOptions, dateProfile: DateProfile, context: CalendarContext) {\n  let activeRange = dateProfile ? dateProfile.activeRange : null\n\n  return addSources(\n    {},\n    parseInitialSources(calendarOptions, context),\n    activeRange,\n    context,\n  )\n}\n\nexport function reduceEventSources(\n  eventSources: EventSourceHash,\n  action: Action,\n  dateProfile: DateProfile,\n  context: CalendarContext,\n): EventSourceHash {\n  let activeRange = dateProfile ? dateProfile.activeRange : null // need this check?\n\n  switch (action.type) {\n    case 'ADD_EVENT_SOURCES': // already parsed\n      return addSources(eventSources, action.sources, activeRange, context)\n\n    case 'REMOVE_EVENT_SOURCE':\n      return removeSource(eventSources, action.sourceId)\n\n    case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n    case 'NEXT':\n    case 'CHANGE_DATE':\n    case 'CHANGE_VIEW_TYPE':\n      if (dateProfile) {\n        return fetchDirtySources(eventSources, activeRange, context)\n      }\n      return eventSources\n\n    case 'FETCH_EVENT_SOURCES':\n      return fetchSourcesByIds(\n        eventSources,\n        (action as any).sourceIds ? // why no type?\n          arrayToHash((action as any).sourceIds) :\n          excludeStaticSources(eventSources, context),\n        activeRange,\n        action.isRefetch || false,\n        context,\n      )\n\n    case 'RECEIVE_EVENTS':\n    case 'RECEIVE_EVENT_ERROR':\n      return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange)\n\n    case 'REMOVE_ALL_EVENT_SOURCES':\n      return {}\n\n    default:\n      return eventSources\n  }\n}\n\nexport function reduceEventSourcesNewTimeZone(eventSources: EventSourceHash, dateProfile: DateProfile, context: CalendarContext) {\n  let activeRange = dateProfile ? dateProfile.activeRange : null // need this check?\n\n  return fetchSourcesByIds(\n    eventSources,\n    excludeStaticSources(eventSources, context),\n    activeRange,\n    true,\n    context,\n  )\n}\n\nexport function computeEventSourcesLoading(eventSources: EventSourceHash): boolean {\n  for (let sourceId in eventSources) {\n    if (eventSources[sourceId].isFetching) {\n      return true\n    }\n  }\n\n  return false\n}\n\nfunction addSources(\n  eventSourceHash: EventSourceHash,\n  sources: EventSource<any>[],\n  fetchRange: DateRange | null,\n  context: CalendarContext,\n): EventSourceHash {\n  let hash: EventSourceHash = {}\n\n  for (let source of sources) {\n    hash[source.sourceId] = source\n  }\n\n  if (fetchRange) {\n    hash = fetchDirtySources(hash, fetchRange, context)\n  }\n\n  return { ...eventSourceHash, ...hash }\n}\n\nfunction removeSource(eventSourceHash: EventSourceHash, sourceId: string): EventSourceHash {\n  return filterHash(eventSourceHash, (eventSource: EventSource<any>) => eventSource.sourceId !== sourceId)\n}\n\nfunction fetchDirtySources(sourceHash: EventSourceHash, fetchRange: DateRange, context: CalendarContext): EventSourceHash {\n  return fetchSourcesByIds(\n    sourceHash,\n    filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)),\n    fetchRange,\n    false,\n    context,\n  )\n}\n\nfunction isSourceDirty(eventSource: EventSource<any>, fetchRange: DateRange, context: CalendarContext) {\n  if (!doesSourceNeedRange(eventSource, context)) {\n    return !eventSource.latestFetchId\n  }\n  return !context.options.lazyFetching ||\n      !eventSource.fetchRange ||\n      eventSource.isFetching || // always cancel outdated in-progress fetches\n      fetchRange.start < eventSource.fetchRange.start ||\n      fetchRange.end > eventSource.fetchRange.end\n}\n\nfunction fetchSourcesByIds(\n  prevSources: EventSourceHash,\n  sourceIdHash: { [sourceId: string]: any },\n  fetchRange: DateRange,\n  isRefetch: boolean,\n  context: CalendarContext,\n): EventSourceHash {\n  let nextSources: EventSourceHash = {}\n\n  for (let sourceId in prevSources) {\n    let source = prevSources[sourceId]\n\n    if (sourceIdHash[sourceId]) {\n      nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context)\n    } else {\n      nextSources[sourceId] = source\n    }\n  }\n\n  return nextSources\n}\n\nfunction fetchSource(eventSource: EventSource<any>, fetchRange: DateRange, isRefetch: boolean, context: CalendarContext) {\n  let { options, calendarApi } = context\n  let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId]\n  let fetchId = guid()\n\n  sourceDef.fetch(\n    {\n      eventSource,\n      range: fetchRange,\n      isRefetch,\n      context,\n    },\n    (res) => { // success callback\n      let { rawEvents } = res\n\n      if (options.eventSourceSuccess) {\n        rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr) || rawEvents\n      }\n\n      if (eventSource.success) {\n        rawEvents = eventSource.success.call(calendarApi, rawEvents, res.xhr) || rawEvents\n      }\n\n      context.dispatch({\n        type: 'RECEIVE_EVENTS',\n        sourceId: eventSource.sourceId,\n        fetchId,\n        fetchRange,\n        rawEvents,\n      })\n    },\n    (error) => { // failure callback\n      console.warn(error.message, error)\n\n      if (options.eventSourceFailure) {\n        options.eventSourceFailure.call(calendarApi, error)\n      }\n\n      if (eventSource.failure) {\n        eventSource.failure(error)\n      }\n\n      context.dispatch({\n        type: 'RECEIVE_EVENT_ERROR',\n        sourceId: eventSource.sourceId,\n        fetchId,\n        fetchRange,\n        error,\n      })\n    },\n  )\n\n  return {\n    ...eventSource,\n    isFetching: true,\n    latestFetchId: fetchId,\n  }\n}\n\nfunction receiveResponse(sourceHash: EventSourceHash, sourceId: string, fetchId: string, fetchRange: DateRange) {\n  let eventSource: EventSource<any> = sourceHash[sourceId]\n\n  if (\n    eventSource && // not already removed\n    fetchId === eventSource.latestFetchId\n  ) {\n    return {\n      ...sourceHash,\n      [sourceId]: {\n        ...eventSource,\n        isFetching: false,\n        fetchRange, // also serves as a marker that at least one fetch has completed\n      },\n    }\n  }\n\n  return sourceHash\n}\n\nfunction excludeStaticSources(eventSources: EventSourceHash, context: CalendarContext): EventSourceHash {\n  return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context))\n}\n\nfunction parseInitialSources(rawOptions: CalendarOptions, context: CalendarContext) {\n  let refiners = buildEventSourceRefiners(context)\n  let rawSources = [].concat(rawOptions.eventSources || [])\n  let sources = [] // parsed\n\n  if (rawOptions.initialEvents) {\n    rawSources.unshift(rawOptions.initialEvents)\n  }\n\n  if (rawOptions.events) {\n    rawSources.unshift(rawOptions.events)\n  }\n\n  for (let rawSource of rawSources) {\n    let source = parseEventSource(rawSource, context, refiners)\n    if (source) {\n      sources.push(source)\n    }\n  }\n\n  return sources\n}\n\nfunction doesSourceNeedRange(eventSource: EventSource<any>, context: CalendarContext) {\n  let defs = context.pluginHooks.eventSourceDefs\n\n  return !defs[eventSource.sourceDefId].ignoreRange\n}\n", "import { filterHash, mapHash } from '../util/object'\nimport { EventDef } from '../structs/event-def'\nimport { EventInstance, EventInstanceHash } from '../structs/event-instance'\nimport { EventInput } from '../structs/event-parse'\nimport {\n  EventStore,\n  mergeEventStores,\n  createEmptyEventStore,\n  filterEventStoreDefs,\n  excludeSubEventStore,\n  parseEvents,\n} from '../structs/event-store'\nimport { Action } from './Action'\nimport { EventSourceHash, EventSource } from '../structs/event-source'\nimport { DateRange } from '../datelib/date-range'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { DateEnv } from '../datelib/env'\nimport { CalendarContext } from '../CalendarContext'\nimport { expandRecurring } from '../structs/recurring-event'\n\nexport function reduceEventStore(\n  eventStore: EventStore,\n  action: Action,\n  eventSources: EventSourceHash,\n  dateProfile: DateProfile,\n  context: CalendarContext,\n): EventStore {\n  switch (action.type) {\n    case 'RECEIVE_EVENTS': // raw\n      return receiveRawEvents(\n        eventStore,\n        eventSources[action.sourceId],\n        action.fetchId,\n        action.fetchRange,\n        action.rawEvents,\n        context,\n      )\n\n    case 'ADD_EVENTS': // already parsed, but not expanded\n      return addEvent(\n        eventStore,\n        action.eventStore, // new ones\n        dateProfile ? dateProfile.activeRange : null,\n        context,\n      )\n\n    case 'RESET_EVENTS':\n      return action.eventStore\n\n    case 'MERGE_EVENTS': // already parsed and expanded\n      return mergeEventStores(eventStore, action.eventStore)\n\n    case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n    case 'NEXT':\n    case 'CHANGE_DATE':\n    case 'CHANGE_VIEW_TYPE':\n      if (dateProfile) {\n        return expandRecurring(eventStore, dateProfile.activeRange, context)\n      }\n      return eventStore\n\n    case 'REMOVE_EVENTS':\n      return excludeSubEventStore(eventStore, action.eventStore)\n\n    case 'REMOVE_EVENT_SOURCE':\n      return excludeEventsBySourceId(eventStore, action.sourceId)\n\n    case 'REMOVE_ALL_EVENT_SOURCES':\n      return filterEventStoreDefs(eventStore, (eventDef: EventDef) => (\n        !eventDef.sourceId // only keep events with no source id\n      ))\n\n    case 'REMOVE_ALL_EVENTS':\n      return createEmptyEventStore()\n\n    default:\n      return eventStore\n  }\n}\n\nfunction receiveRawEvents(\n  eventStore: EventStore,\n  eventSource: EventSource<any>,\n  fetchId: string,\n  fetchRange: DateRange | null,\n  rawEvents: EventInput[],\n  context: CalendarContext,\n): EventStore {\n  if (\n    eventSource && // not already removed\n    fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n  ) {\n    let subset = parseEvents(\n      transformRawEvents(rawEvents, eventSource, context),\n      eventSource,\n      context,\n    )\n\n    if (fetchRange) {\n      subset = expandRecurring(subset, fetchRange, context)\n    }\n\n    return mergeEventStores(\n      excludeEventsBySourceId(eventStore, eventSource.sourceId),\n      subset,\n    )\n  }\n\n  return eventStore\n}\n\nfunction transformRawEvents(rawEvents, eventSource: EventSource<any>, context: CalendarContext) {\n  let calEachTransform = context.options.eventDataTransform\n  let sourceEachTransform = eventSource ? eventSource.eventDataTransform : null\n\n  if (sourceEachTransform) {\n    rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform)\n  }\n\n  if (calEachTransform) {\n    rawEvents = transformEachRawEvent(rawEvents, calEachTransform)\n  }\n\n  return rawEvents\n}\n\nfunction transformEachRawEvent(rawEvents, func) {\n  let refinedEvents\n\n  if (!func) {\n    refinedEvents = rawEvents\n  } else {\n    refinedEvents = []\n\n    for (let rawEvent of rawEvents) {\n      let refinedEvent = func(rawEvent)\n\n      if (refinedEvent) {\n        refinedEvents.push(refinedEvent)\n      } else if (refinedEvent == null) {\n        refinedEvents.push(rawEvent)\n      } // if a different falsy value, do nothing\n    }\n  }\n\n  return refinedEvents\n}\n\nfunction addEvent(eventStore: EventStore, subset: EventStore, expandRange: DateRange | null, context: CalendarContext): EventStore {\n  if (expandRange) {\n    subset = expandRecurring(subset, expandRange, context)\n  }\n\n  return mergeEventStores(eventStore, subset)\n}\n\nexport function rezoneEventStoreDates(eventStore: EventStore, oldDateEnv: DateEnv, newDateEnv: DateEnv): EventStore {\n  let { defs } = eventStore\n\n  let instances = mapHash(eventStore.instances, (instance: EventInstance): EventInstance => {\n    let def = defs[instance.defId]\n\n    if (def.allDay || def.recurringDef) {\n      return instance // isn't dependent on timezone\n    }\n    return {\n      ...instance,\n      range: {\n        start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n        end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n      },\n      forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo,\n      forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo,\n    }\n  })\n\n  return { defs, instances }\n}\n\nfunction excludeEventsBySourceId(eventStore: EventStore, sourceId: string) {\n  return filterEventStoreDefs(eventStore, (eventDef: EventDef) => eventDef.sourceId !== sourceId)\n}\n\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nexport function excludeInstances(eventStore: EventStore, removals: EventInstanceHash): EventStore {\n  return {\n    defs: eventStore.defs,\n    instances: filterHash(eventStore.instances, (instance: EventInstance) => !removals[instance.instanceId]),\n  }\n}\n", "import { DateSpan } from '../structs/date-span'\nimport { Action } from './Action'\n\nexport function reduceDateSelection(currentSelection: DateSpan | null, action: Action) {\n  switch (action.type) {\n    case 'UNSELECT_DATES':\n      return null\n\n    case 'SELECT_DATES':\n      return action.selection\n\n    default:\n      return currentSelection\n  }\n}\n", "import { Action } from './Action'\n\nexport function reduceSelectedEvent(currentInstanceId: string, action: Action): string {\n  switch (action.type) {\n    case 'UNSELECT_EVENT':\n      return ''\n\n    case 'SELECT_EVENT':\n      return action.eventInstanceId\n\n    default:\n      return currentInstanceId\n  }\n}\n", "import { Action } from './Action'\nimport { EventInteractionState } from '../interactions/event-interaction-state'\n\nexport function reduceEventDrag(currentDrag: EventInteractionState | null, action: Action): EventInteractionState | null {\n  let newDrag: EventInteractionState\n\n  switch (action.type) {\n    case 'UNSET_EVENT_DRAG':\n      return null\n\n    case 'SET_EVENT_DRAG':\n      newDrag = action.state\n\n      return {\n        affectedEvents: newDrag.affectedEvents,\n        mutatedEvents: newDrag.mutatedEvents,\n        isEvent: newDrag.isEvent,\n      }\n\n    default:\n      return currentDrag\n  }\n}\n", "import { EventInteractionState } from '../interactions/event-interaction-state'\nimport { Action } from './Action'\n\nexport function reduceEventResize(currentResize: EventInteractionState | null, action: Action): EventInteractionState | null {\n  let newResize: EventInteractionState\n\n  switch (action.type) {\n    case 'UNSET_EVENT_RESIZE':\n      return null\n\n    case 'SET_EVENT_RESIZE':\n      newResize = action.state\n\n      return {\n        affectedEvents: newResize.affectedEvents,\n        mutatedEvents: newResize.mutatedEvents,\n        isEvent: newResize.isEvent,\n      }\n\n    default:\n      return currentResize\n  }\n}\n", "import { ViewSpec, ViewSpecHash } from './structs/view-spec'\nimport { Theme } from './theme/Theme'\nimport { CalendarApi } from './CalendarApi'\nimport { CalendarOptionsRefined, CalendarOptions } from './options'\nimport { ToolbarInput, ToolbarModel, ToolbarWidget, CustomButtonInput } from './toolbar-struct'\nimport { formatWithOrdinals } from './util/misc'\n\nexport function parseToolbars(\n  calendarOptions: CalendarOptionsRefined,\n  calendarOptionOverrides: CalendarOptions,\n  theme: Theme,\n  viewSpecs: ViewSpecHash,\n  calendarApi: CalendarApi,\n) {\n  let header = calendarOptions.headerToolbar ? parseToolbar(\n    calendarOptions.headerToolbar,\n    calendarOptions,\n    calendarOptionOverrides,\n    theme,\n    viewSpecs,\n    calendarApi,\n  ) : null\n  let footer = calendarOptions.footerToolbar ? parseToolbar(\n    calendarOptions.footerToolbar,\n    calendarOptions,\n    calendarOptionOverrides,\n    theme,\n    viewSpecs,\n    calendarApi,\n  ) : null\n\n  return { header, footer }\n}\n\nfunction parseToolbar(\n  sectionStrHash: ToolbarInput,\n  calendarOptions: CalendarOptionsRefined,\n  calendarOptionOverrides: CalendarOptions,\n  theme: Theme,\n  viewSpecs: ViewSpecHash,\n  calendarApi: CalendarApi,\n) : ToolbarModel {\n  let sectionWidgets: { [sectionName: string]: ToolbarWidget[][] } = {}\n  let viewsWithButtons: string[] = []\n  let hasTitle = false\n\n  for (let sectionName in sectionStrHash) {\n    let sectionStr = sectionStrHash[sectionName]\n    let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi)\n    sectionWidgets[sectionName] = sectionRes.widgets\n    viewsWithButtons.push(...sectionRes.viewsWithButtons)\n    hasTitle = hasTitle || sectionRes.hasTitle\n  }\n\n  return { sectionWidgets, viewsWithButtons, hasTitle }\n}\n\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(\n  sectionStr: string,\n  calendarOptions: CalendarOptionsRefined, // defaults+overrides, then refined\n  calendarOptionOverrides: CalendarOptions, // overrides only!, unrefined :(\n  theme: Theme,\n  viewSpecs: ViewSpecHash,\n  calendarApi: CalendarApi,\n): { widgets: ToolbarWidget[][], viewsWithButtons: string[], hasTitle: boolean } {\n  let isRtl = calendarOptions.direction === 'rtl'\n  let calendarCustomButtons = calendarOptions.customButtons || {}\n  let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {}\n  let calendarButtonText = calendarOptions.buttonText || {}\n  let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {}\n  let calendarButtonHints = calendarOptions.buttonHints || {}\n  let sectionSubstrs = sectionStr ? sectionStr.split(' ') : []\n  let viewsWithButtons: string[] = []\n  let hasTitle = false\n\n  let widgets = sectionSubstrs.map(\n    (buttonGroupStr): ToolbarWidget[] => (\n      buttonGroupStr.split(',').map((buttonName): ToolbarWidget => {\n        if (buttonName === 'title') {\n          hasTitle = true\n          return { buttonName }\n        }\n\n        let customButtonProps: CustomButtonInput\n        let viewSpec: ViewSpec\n        let buttonClick\n        let buttonIcon // only one of these will be set\n        let buttonText // \"\n        let buttonHint: string | ((navUnit: string) => string)\n        // ^ for the title=\"\" attribute, for accessibility\n\n        if ((customButtonProps = calendarCustomButtons[buttonName])) {\n          buttonClick = (ev: UIEvent) => {\n            if (customButtonProps.click) {\n              customButtonProps.click.call(ev.target, ev, ev.target) // TODO: use Calendar this context?\n            }\n          };\n\n          (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n            (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n            (buttonText = customButtonProps.text)\n\n          buttonHint = customButtonProps.hint || customButtonProps.text\n        } else if ((viewSpec = viewSpecs[buttonName])) {\n          viewsWithButtons.push(buttonName)\n\n          buttonClick = () => {\n            calendarApi.changeView(buttonName)\n          };\n\n          (buttonText = viewSpec.buttonTextOverride) ||\n            (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n            (buttonText = viewSpec.buttonTextDefault)\n\n          let textFallback =\n            viewSpec.buttonTextOverride ||\n            viewSpec.buttonTextDefault\n\n          buttonHint = formatWithOrdinals(\n            viewSpec.buttonTitleOverride ||\n            viewSpec.buttonTitleDefault ||\n            calendarOptions.viewHint,\n            [textFallback, buttonName], // view-name = buttonName\n            textFallback,\n          )\n        } else if (calendarApi[buttonName]) { // a calendarApi method\n          buttonClick = () => {\n            calendarApi[buttonName]()\n          };\n\n          (buttonText = calendarButtonTextOverrides[buttonName]) ||\n            (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n            (buttonText = calendarButtonText[buttonName]) // everything else is considered default\n\n          if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n            let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next'\n            buttonHint = formatWithOrdinals(\n              calendarButtonHintOverrides[prevOrNext] ||\n              calendarButtonHints[prevOrNext],\n              [\n                calendarButtonText.year || 'year', // localize unit\n                'year',\n              ],\n              calendarButtonText[buttonName],\n            )\n          } else {\n            buttonHint = (navUnit: string) => formatWithOrdinals(\n              calendarButtonHintOverrides[buttonName] ||\n              calendarButtonHints[buttonName],\n              [\n                calendarButtonText[navUnit] || navUnit, // localized unit\n                navUnit,\n              ],\n              calendarButtonText[buttonName],\n            )\n          }\n        }\n\n        return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint }\n      })\n    ),\n  )\n\n  return { widgets, viewsWithButtons, hasTitle }\n}\n", "import { createPlugin } from '../plugin-system'\nimport { EventSourceDef } from '../structs/event-source-def'\nimport { EventInput } from '../structs/event-parse'\n\nlet eventSourceDef: EventSourceDef<EventInput[]> = {\n  ignoreRange: true,\n\n  parseMeta(refined) {\n    if (Array.isArray(refined.events)) {\n      return refined.events\n    }\n    return null\n  },\n\n  fetch(arg, success) {\n    success({\n      rawEvents: arg.eventSource.meta,\n    })\n  },\n}\n\nexport const arrayEventSourcePlugin = createPlugin({\n  eventSourceDefs: [eventSourceDef],\n})\n", "import { unpromisify } from '../util/promise'\nimport { EventSourceDef } from '../structs/event-source-def'\nimport { EventSourceError } from '../structs/event-source'\nimport { EventInput } from '../structs/event-parse'\nimport { createPlugin } from '../plugin-system'\nimport { buildRangeApiWithTimeZone } from '../structs/date-span'\n\nexport type EventSourceFunc = (\n  arg: {\n    start: Date\n    end: Date\n    startStr: string\n    endStr: string\n    timeZone: string\n  },\n  successCallback: (events: EventInput[]) => void,\n  failureCallback: (error: EventSourceError) => void\n) => (void | PromiseLike<EventInput[]>)\n\nlet eventSourceDef: EventSourceDef<EventSourceFunc> = {\n\n  parseMeta(refined) {\n    if (typeof refined.events === 'function') {\n      return refined.events\n    }\n    return null\n  },\n\n  fetch(arg, success, failure) {\n    let { dateEnv } = arg.context\n    let func = arg.eventSource.meta\n\n    unpromisify(\n      func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)),\n      (rawEvents) => { // success\n        success({ rawEvents }) // needs an object response\n      },\n      failure, // send errorObj directly to failure callback\n    )\n  },\n\n}\n\nexport const funcEventSourcePlugin = createPlugin({\n  eventSourceDefs: [eventSourceDef],\n})\n", "import { Dictionary } from '../options'\n\nexport function requestJson(method: string, url: string, params: Dictionary, successCallback, failureCallback) {\n  method = method.toUpperCase()\n\n  let body = null\n\n  if (method === 'GET') {\n    url = injectQueryStringParams(url, params)\n  } else {\n    body = encodeParams(params)\n  }\n\n  let xhr = new XMLHttpRequest()\n  xhr.open(method, url, true)\n\n  if (method !== 'GET') {\n    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')\n  }\n\n  xhr.onload = () => {\n    if (xhr.status >= 200 && xhr.status < 400) {\n      let parsed = false\n      let res\n\n      try {\n        res = JSON.parse(xhr.responseText)\n        parsed = true\n      } catch (err) {\n        // will handle parsed=false\n      }\n\n      if (parsed) {\n        successCallback(res, xhr)\n      } else {\n        failureCallback('Failure parsing JSON', xhr)\n      }\n    } else {\n      failureCallback('Request failed', xhr)\n    }\n  }\n\n  xhr.onerror = () => {\n    failureCallback('Request failed', xhr)\n  }\n\n  xhr.send(body)\n}\n\nfunction injectQueryStringParams(url: string, params) {\n  return url +\n    (url.indexOf('?') === -1 ? '?' : '&') +\n    encodeParams(params)\n}\n\nfunction encodeParams(params) {\n  let parts = []\n\n  for (let key in params) {\n    parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)\n  }\n\n  return parts.join('&')\n}\n", "import { identity, Identity, Dictionary } from '../options'\n\nexport const JSON_FEED_EVENT_SOURCE_REFINERS = {\n  method: String,\n  extraParams: identity as Identity<Dictionary | (() => Dictionary)>,\n  startParam: String,\n  endParam: String,\n  timeZoneParam: String,\n}\n", "import { __assign } from 'tslib'\nimport { requestJson } from '../util/requestJson'\nimport { CalendarContext } from '../CalendarContext'\nimport { EventSourceDef } from '../structs/event-source-def'\nimport { DateRange } from '../datelib/date-range'\nimport { createPlugin } from '../plugin-system'\nimport { JSON_FEED_EVENT_SOURCE_REFINERS } from './json-feed-event-source-refiners'\n\ninterface JsonFeedMeta {\n  url: string\n  format: 'json' // for EventSourceApi\n  method: string\n  extraParams?: any\n  startParam?: string\n  endParam?: string\n  timeZoneParam?: string\n}\n\nlet eventSourceDef: EventSourceDef<JsonFeedMeta> = {\n\n  parseMeta(refined) {\n    if (refined.url && (refined.format === 'json' || !refined.format)) {\n      return {\n        url: refined.url,\n        format: 'json',\n        method: (refined.method || 'GET').toUpperCase(),\n        extraParams: refined.extraParams,\n        startParam: refined.startParam,\n        endParam: refined.endParam,\n        timeZoneParam: refined.timeZoneParam,\n      }\n    }\n    return null\n  },\n\n  fetch(arg, success, failure) {\n    let { meta } = arg.eventSource\n    let requestParams = buildRequestParams(meta, arg.range, arg.context)\n\n    requestJson(\n      meta.method, meta.url, requestParams,\n      (rawEvents, xhr) => {\n        success({ rawEvents, xhr })\n      },\n      (errorMessage, xhr) => {\n        failure({ message: errorMessage, xhr })\n      },\n    )\n  },\n\n}\n\nexport const jsonFeedEventSourcePlugin = createPlugin({\n  eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n  eventSourceDefs: [eventSourceDef],\n})\n\nfunction buildRequestParams(meta: JsonFeedMeta, range: DateRange, context: CalendarContext) {\n  let { dateEnv, options } = context\n  let startParam\n  let endParam\n  let timeZoneParam\n  let customRequestParams\n  let params = {}\n\n  startParam = meta.startParam\n  if (startParam == null) {\n    startParam = options.startParam\n  }\n\n  endParam = meta.endParam\n  if (endParam == null) {\n    endParam = options.endParam\n  }\n\n  timeZoneParam = meta.timeZoneParam\n  if (timeZoneParam == null) {\n    timeZoneParam = options.timeZoneParam\n  }\n\n  // retrieve any outbound GET/POST data from the options\n  if (typeof meta.extraParams === 'function') {\n    // supplied as a function that returns a key/value object\n    customRequestParams = meta.extraParams()\n  } else {\n    // probably supplied as a straight key/value object\n    customRequestParams = meta.extraParams || {}\n  }\n\n  __assign(params, customRequestParams)\n\n  params[startParam] = dateEnv.formatIso(range.start)\n  params[endParam] = dateEnv.formatIso(range.end)\n\n  if (dateEnv.timeZone !== 'local') {\n    params[timeZoneParam] = dateEnv.timeZone\n  }\n\n  return params\n}\n", "import { createDuration } from '../datelib/duration'\nimport { DateInput } from '../datelib/env'\nimport { identity, Identity } from '../options'\n\nexport const SIMPLE_RECURRING_REFINERS = {\n  daysOfWeek: identity as Identity<number[]>,\n  startTime: createDuration,\n  endTime: createDuration,\n  duration: createDuration,\n  startRecur: identity as Identity<DateInput>,\n  endRecur: identity as Identity<DateInput>,\n}\n", "import { startOfDay, addDays, DateMarker } from '../datelib/marker'\nimport { Duration, subtractDurations } from '../datelib/duration'\nimport { arrayToHash } from '../util/object'\nimport { RecurringType } from './recurring-event'\nimport { EventRefined } from './event-parse'\nimport { DateRange, intersectRanges } from '../datelib/date-range'\nimport { DateEnv } from '../datelib/env'\nimport { createPlugin } from '../plugin-system'\nimport { SIMPLE_RECURRING_REFINERS } from './recurring-event-simple-refiners'\nimport './recurring-event-simple-declare'\n\n/*\nAn implementation of recurring events that only supports every-day or weekly recurrences.\n*/\n\ninterface SimpleRecurringData {\n  daysOfWeek: number[] | null\n  startTime: Duration | null\n  endTime: Duration | null\n  startRecur: DateMarker | null\n  endRecur: DateMarker | null\n}\n\nlet recurring: RecurringType<SimpleRecurringData> = {\n\n  parse(refined: EventRefined, dateEnv: DateEnv) {\n    if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n      let recurringData: SimpleRecurringData = {\n        daysOfWeek: refined.daysOfWeek || null,\n        startTime: refined.startTime || null,\n        endTime: refined.endTime || null,\n        startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n        endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n      }\n\n      let duration: Duration\n\n      if (refined.duration) {\n        duration = refined.duration\n      }\n      if (!duration && refined.startTime && refined.endTime) {\n        duration = subtractDurations(refined.endTime, refined.startTime)\n      }\n\n      return {\n        allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n        duration,\n        typeData: recurringData, // doesn't need endTime anymore but oh well\n      }\n    }\n\n    return null\n  },\n\n  expand(typeData: SimpleRecurringData, framingRange: DateRange, dateEnv: DateEnv): DateMarker[] {\n    let clippedFramingRange = intersectRanges(\n      framingRange,\n      { start: typeData.startRecur, end: typeData.endRecur },\n    )\n\n    if (clippedFramingRange) {\n      return expandRanges(\n        typeData.daysOfWeek,\n        typeData.startTime,\n        clippedFramingRange,\n        dateEnv,\n      )\n    }\n    return []\n  },\n\n}\n\nexport const simpleRecurringEventsPlugin = createPlugin({\n  recurringTypes: [recurring],\n  eventRefiners: SIMPLE_RECURRING_REFINERS,\n})\n\nfunction expandRanges(\n  daysOfWeek: number[] | null,\n  startTime: Duration | null,\n  framingRange: DateRange,\n  dateEnv: DateEnv,\n): DateMarker[] {\n  let dowHash: { [num: string]: true } | null = daysOfWeek ? arrayToHash(daysOfWeek) : null\n  let dayMarker = startOfDay(framingRange.start)\n  let endMarker = framingRange.end\n  let instanceStarts: DateMarker[] = []\n\n  while (dayMarker < endMarker) {\n    let instanceStart\n\n    // if everyday, or this particular day-of-week\n    if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n      if (startTime) {\n        instanceStart = dateEnv.add(dayMarker, startTime)\n      } else {\n        instanceStart = dayMarker\n      }\n\n      instanceStarts.push(instanceStart)\n    }\n\n    dayMarker = addDays(dayMarker, 1)\n  }\n\n  return instanceStarts\n}\n", "import { createPlugin } from './plugin-system'\nimport { hashValuesToArray } from './util/object'\nimport { EventSource } from './structs/event-source'\nimport { CalendarContext } from './CalendarContext'\n\nexport const changeHandlerPlugin = createPlugin({\n  optionChangeHandlers: {\n    events(events, context) {\n      handleEventSources([events], context)\n    },\n    eventSources: handleEventSources,\n  },\n})\n\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context: CalendarContext) {\n  let unfoundSources: EventSource<any>[] = hashValuesToArray(context.getCurrentData().eventSources)\n  let newInputs = []\n\n  for (let input of inputs) {\n    let inputFound = false\n\n    for (let i = 0; i < unfoundSources.length; i += 1) {\n      if (unfoundSources[i]._raw === input) {\n        unfoundSources.splice(i, 1) // delete\n        inputFound = true\n        break\n      }\n    }\n\n    if (!inputFound) {\n      newInputs.push(input)\n    }\n  }\n\n  for (let unfoundSource of unfoundSources) {\n    context.dispatch({\n      type: 'REMOVE_EVENT_SOURCE',\n      sourceId: unfoundSource.sourceId,\n    })\n  }\n\n  for (let newInput of newInputs) {\n    context.calendarApi.addEventSource(newInput)\n  }\n}\n", "import { DateProfile } from './DateProfileGenerator'\nimport { CalendarData } from './reducers/data-types'\nimport { RangeApiWithTimeZone, buildRangeApiWithTimeZone } from './structs/date-span'\nimport { ViewApi } from './ViewApi'\n\nexport type DatesSetArg = RangeApiWithTimeZone & { view: ViewApi }\n\nexport function handleDateProfile(dateProfile: DateProfile, context: CalendarData) {\n  context.emitter.trigger('datesSet', {\n    ...buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv),\n    view: context.viewApi,\n  })\n}\n", "import { EventStore } from './structs/event-store'\nimport { CalendarData } from './reducers/data-types'\nimport { EventApi, buildEventApis } from './api/EventApi'\nimport { Duration } from './datelib/duration'\nimport { ViewApi } from './ViewApi'\n\nexport interface EventAddArg {\n  event: EventApi\n  relatedEvents: EventApi[]\n  revert: () => void\n}\n\nexport interface EventChangeArg {\n  oldEvent: EventApi\n  event: EventApi\n  relatedEvents: EventApi[]\n  revert: () => void\n}\n\nexport interface EventDropArg extends EventChangeArg { // not best place. deals w/ UI\n  el: HTMLElement\n  delta: Duration\n  jsEvent: MouseEvent\n  view: ViewApi\n  // and other \"transformed\" things\n}\n\nexport interface EventRemoveArg {\n  event: EventApi\n  relatedEvents: EventApi[]\n  revert: () => void\n}\n\nexport function handleEventStore(eventStore: EventStore, context: CalendarData) {\n  let { emitter } = context\n\n  if (emitter.hasHandlers('eventsSet')) {\n    emitter.trigger('eventsSet', buildEventApis(eventStore, context))\n  }\n}\n", "import { PluginDef } from './plugin-system-struct'\nimport { createPlugin } from './plugin-system'\nimport { arrayEventSourcePlugin } from './event-sources/array-event-source'\nimport { funcEventSourcePlugin } from './event-sources/func-event-source'\nimport { jsonFeedEventSourcePlugin } from './event-sources/json-feed-event-source'\nimport { simpleRecurringEventsPlugin } from './structs/recurring-event-simple'\nimport { changeHandlerPlugin } from './option-change-handlers'\nimport { handleDateProfile } from './dates-set'\nimport { handleEventStore } from './event-crud'\nimport { isArraysEqual } from './util/array'\nimport { removeElement } from './util/dom-manip'\nimport { computeEventSourcesLoading } from './reducers/eventSources'\nimport { CalendarDataManagerState } from './reducers/data-types'\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nexport const globalPlugins: PluginDef[] = [ // TODO: make a const?\n  arrayEventSourcePlugin,\n  funcEventSourcePlugin,\n  jsonFeedEventSourcePlugin,\n  simpleRecurringEventsPlugin,\n  changeHandlerPlugin,\n  createPlugin({ // misc...\n    isLoadingFuncs: [\n      (state: CalendarDataManagerState) => computeEventSourcesLoading(state.eventSources),\n    ],\n    contentTypeHandlers: {\n      html: buildHtmlRenderer,\n      domNodes: buildDomNodeRenderer,\n    },\n    propSetHandlers: {\n      dateProfile: handleDateProfile,\n      eventStore: handleEventStore,\n    },\n  }),\n]\n\nfunction buildHtmlRenderer() {\n  let currentEl: HTMLElement | null = null\n  let currentHtml: string = ''\n\n  function render(el: HTMLElement, html: string) {\n    if (el !== currentEl || html !== currentHtml) {\n      el.innerHTML = html\n    }\n    currentEl = el\n    currentHtml = html\n  }\n\n  function destroy() {\n    currentEl.innerHTML = ''\n    currentEl = null\n    currentHtml = ''\n  }\n\n  return { render, destroy }\n}\n\nfunction buildDomNodeRenderer() {\n  let currentEl: HTMLElement | null = null\n  let currentDomNodes: Node[] = []\n\n  function render(el: HTMLElement, domNodes: Node[] | NodeList) {\n    let newDomNodes = Array.prototype.slice.call(domNodes)\n\n    if (el !== currentEl || !isArraysEqual(currentDomNodes, newDomNodes)) {\n      // append first, remove second (for scroll resetting)\n      for (let newNode of newDomNodes) {\n        el.appendChild(newNode)\n      }\n      destroy()\n    }\n\n    currentEl = el\n    currentDomNodes = newDomNodes\n  }\n\n  function destroy() {\n    currentDomNodes.forEach(removeElement)\n    currentDomNodes = []\n    currentEl = null\n  }\n\n  return { render, destroy }\n}\n", "export class DelayedRunner {\n  private isRunning = false\n  private isDirty = false\n  private pauseDepths: { [scope: string]: number } = {}\n  private timeoutId: number = 0\n\n  constructor(\n    private drainedOption?: () => void,\n  ) {\n  }\n\n  request(delay?: number) {\n    this.isDirty = true\n\n    if (!this.isPaused()) {\n      this.clearTimeout()\n\n      if (delay == null) {\n        this.tryDrain()\n      } else {\n        this.timeoutId = setTimeout( // NOT OPTIMAL! TODO: look at debounce\n          this.tryDrain.bind(this),\n          delay,\n        ) as unknown as number\n      }\n    }\n  }\n\n  pause(scope = '') {\n    let { pauseDepths } = this\n\n    pauseDepths[scope] = (pauseDepths[scope] || 0) + 1\n\n    this.clearTimeout()\n  }\n\n  resume(scope = '', force?: boolean) {\n    let { pauseDepths } = this\n\n    if (scope in pauseDepths) {\n      if (force) {\n        delete pauseDepths[scope]\n      } else {\n        pauseDepths[scope] -= 1\n        let depth = pauseDepths[scope]\n\n        if (depth <= 0) {\n          delete pauseDepths[scope]\n        }\n      }\n\n      this.tryDrain()\n    }\n  }\n\n  isPaused() {\n    return Object.keys(this.pauseDepths).length\n  }\n\n  tryDrain() {\n    if (!this.isRunning && !this.isPaused()) {\n      this.isRunning = true\n\n      while (this.isDirty) {\n        this.isDirty = false\n        this.drained() // might set isDirty to true again\n      }\n\n      this.isRunning = false\n    }\n  }\n\n  clear() {\n    this.clearTimeout()\n    this.isDirty = false\n    this.pauseDepths = {}\n  }\n\n  private clearTimeout() {\n    if (this.timeoutId) {\n      clearTimeout(this.timeoutId)\n      this.timeoutId = 0\n    }\n  }\n\n  protected drained() { // subclasses can implement\n    if (this.drainedOption) {\n      this.drainedOption()\n    }\n  }\n}\n", "import { DelayedRunner } from './DelayedRunner'\n\nexport class TaskRunner<Task> { // this class USES the DelayedRunner\n  private queue: Task[] = []\n\n  private delayedRunner: DelayedRunner // will most likely be used WITHOUT any delay\n\n  constructor(\n    private runTaskOption?: (task: Task) => void,\n    private drainedOption?: (completedTasks: Task[]) => void,\n  ) {\n    this.delayedRunner = new DelayedRunner(this.drain.bind(this))\n  }\n\n  request(task: Task, delay?: number) {\n    this.queue.push(task)\n    this.delayedRunner.request(delay)\n  }\n\n  pause(scope?: string) {\n    this.delayedRunner.pause(scope)\n  }\n\n  resume(scope?: string, force?: boolean) {\n    this.delayedRunner.resume(scope, force)\n  }\n\n  drain() {\n    let { queue } = this\n\n    while (queue.length) {\n      let completedTasks: Task[] = []\n      let task: Task\n\n      while ((task = queue.shift())) {\n        this.runTask(task)\n        completedTasks.push(task)\n      }\n\n      this.drained(completedTasks)\n    } // keep going, in case new tasks were added in the drained handler\n  }\n\n  protected runTask(task: Task) { // subclasses can implement\n    if (this.runTaskOption) {\n      this.runTaskOption(task)\n    }\n  }\n\n  protected drained(completedTasks: Task[]) { // subclasses can implement\n    if (this.drainedOption) {\n      this.drainedOption(completedTasks)\n    }\n  }\n}\n", "import { DateProfile } from '../DateProfileGenerator'\nimport { diffWholeDays } from '../datelib/marker'\nimport { createFormatter, FormatterInput } from '../datelib/formatting'\nimport { DateRange } from '../datelib/date-range'\nimport { DateEnv } from '../datelib/env'\nimport { BaseOptions } from '../options'\n\n// Computes what the title at the top of the calendarApi should be for this view\nexport function buildTitle(dateProfile: DateProfile, viewOptions: BaseOptions, dateEnv: DateEnv) {\n  let range: DateRange\n\n  // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n  if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n    range = dateProfile.currentRange\n  } else { // for day units or smaller, use the actual day range\n    range = dateProfile.activeRange\n  }\n\n  return dateEnv.formatRange(\n    range.start,\n    range.end,\n    createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)),\n    {\n      isEndExclusive: dateProfile.isRangeAllDay,\n      defaultSeparator: viewOptions.titleRangeSeparator,\n    },\n  )\n}\n\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile: DateProfile): FormatterInput {\n  let { currentRangeUnit } = dateProfile\n\n  if (currentRangeUnit === 'year') {\n    return { year: 'numeric' }\n  }\n\n  if (currentRangeUnit === 'month') {\n    return { year: 'numeric', month: 'long' } // like \"September 2014\"\n  }\n\n  let days = diffWholeDays(\n    dateProfile.currentRange.start,\n    dateProfile.currentRange.end,\n  )\n\n  if (days !== null && days > 1) {\n    // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n    return { year: 'numeric', month: 'short', day: 'numeric' }\n  }\n\n  // one day. longer, like \"September 9 2014\"\n  return { year: 'numeric', month: 'long', day: 'numeric' }\n}\n", "import { __assign } from 'tslib'\nimport { buildLocale, RawLocaleInfo, organizeRawLocales, LocaleSingularArg } from '../datelib/locale'\nimport { memoize, memoizeObjArg } from '../util/memoize'\nimport { Action } from './Action'\nimport { buildBuildPluginHooks } from '../plugin-system'\nimport { PluginHooks } from '../plugin-system-struct'\nimport { DateEnv } from '../datelib/env'\nimport { CalendarApi } from '../CalendarApi'\nimport { StandardTheme } from '../theme/StandardTheme'\nimport { EventSourceHash } from '../structs/event-source'\nimport { buildViewSpecs, ViewSpec } from '../structs/view-spec'\nimport { mapHash, isPropsEqual } from '../util/object'\nimport { DateProfileGenerator, DateProfileGeneratorProps } from '../DateProfileGenerator'\nimport { reduceViewType } from './view-type'\nimport { getInitialDate, reduceCurrentDate } from './current-date'\nimport { reduceDynamicOptionOverrides } from './options'\nimport { reduceDateProfile } from './date-profile'\nimport { reduceEventSources, initEventSources, reduceEventSourcesNewTimeZone, computeEventSourcesLoading } from './eventSources'\nimport { reduceEventStore, rezoneEventStoreDates } from './eventStore'\nimport { reduceDateSelection } from './date-selection'\nimport { reduceSelectedEvent } from './selected-event'\nimport { reduceEventDrag } from './event-drag'\nimport { reduceEventResize } from './event-resize'\nimport { Emitter } from '../common/Emitter'\nimport { EventUiHash, EventUi, createEventUi } from '../component/event-ui'\nimport { EventDefHash } from '../structs/event-def'\nimport { parseToolbars } from '../toolbar-parse'\nimport {\n  CalendarOptionsRefined, CalendarOptions,\n  CALENDAR_OPTION_REFINERS, COMPLEX_OPTION_COMPARATORS,\n  ViewOptions, ViewOptionsRefined,\n  BASE_OPTION_DEFAULTS, mergeRawOptions,\n  BASE_OPTION_REFINERS, VIEW_OPTION_REFINERS,\n  CalendarListeners, CALENDAR_LISTENER_REFINERS, Dictionary,\n} from '../options'\nimport { rangeContainsMarker } from '../datelib/date-range'\nimport { ViewApi } from '../ViewApi'\nimport { parseBusinessHours } from '../structs/business-hours'\nimport { globalPlugins } from '../global-plugins'\nimport { createEmptyEventStore } from '../structs/event-store'\nimport { CalendarContext } from '../CalendarContext'\nimport { CalendarDataManagerState, CalendarOptionsData, CalendarCurrentViewData, CalendarData } from './data-types'\nimport { TaskRunner } from '../util/TaskRunner'\nimport { buildTitle } from './title-formatting'\n\nexport interface CalendarDataManagerProps {\n  optionOverrides: CalendarOptions\n  calendarApi: CalendarApi\n  onAction?: (action: Action) => void\n  onData?: (data: CalendarData) => void\n}\n\nexport type ReducerFunc = ( // TODO: rename to CalendarDataInjector. move view-props-manip hook here as well?\n  currentState: Dictionary | null,\n  action: Action | null,\n  context: CalendarContext & CalendarDataManagerState // more than just context\n) => Dictionary\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\n\nexport class CalendarDataManager {\n  private computeOptionsData = memoize(this._computeOptionsData)\n  private computeCurrentViewData = memoize(this._computeCurrentViewData)\n  private organizeRawLocales = memoize(organizeRawLocales)\n  private buildLocale = memoize(buildLocale)\n  private buildPluginHooks = buildBuildPluginHooks()\n  private buildDateEnv = memoize(buildDateEnv)\n  private buildTheme = memoize(buildTheme)\n  private parseToolbars = memoize(parseToolbars)\n  private buildViewSpecs = memoize(buildViewSpecs)\n  private buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator)\n  private buildViewApi = memoize(buildViewApi)\n  private buildViewUiProps = memoizeObjArg(buildViewUiProps)\n  private buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual)\n  private buildEventUiBases = memoize(buildEventUiBases)\n  private parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours)\n  private buildTitle = memoize(buildTitle)\n\n  public emitter = new Emitter<CalendarListeners>()\n  private actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this))\n  private props: CalendarDataManagerProps\n  private state: CalendarDataManagerState\n  private data: CalendarData\n\n  public currentCalendarOptionsInput: CalendarOptions = {}\n  private currentCalendarOptionsRefined: CalendarOptionsRefined = ({} as any)\n  private currentViewOptionsInput: ViewOptions = {}\n  private currentViewOptionsRefined: ViewOptionsRefined = ({} as any)\n  public currentCalendarOptionsRefiners: any = {}\n\n  constructor(props: CalendarDataManagerProps) {\n    this.props = props\n    this.actionRunner.pause()\n\n    let dynamicOptionOverrides: CalendarOptions = {}\n    let optionsData = this.computeOptionsData(\n      props.optionOverrides,\n      dynamicOptionOverrides,\n      props.calendarApi,\n    )\n\n    let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView\n    let currentViewData = this.computeCurrentViewData(\n      currentViewType,\n      optionsData,\n      props.optionOverrides,\n      dynamicOptionOverrides,\n    )\n\n    // wire things up\n    // TODO: not DRY\n    props.calendarApi.currentDataManager = this\n    this.emitter.setThisContext(props.calendarApi)\n    this.emitter.setOptions(currentViewData.options)\n\n    let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv)\n    let dateProfile = currentViewData.dateProfileGenerator.build(currentDate)\n\n    if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n      currentDate = dateProfile.currentRange.start\n    }\n\n    let calendarContext: CalendarContext = {\n      dateEnv: optionsData.dateEnv,\n      options: optionsData.calendarOptions,\n      pluginHooks: optionsData.pluginHooks,\n      calendarApi: props.calendarApi,\n      dispatch: this.dispatch,\n      emitter: this.emitter,\n      getCurrentData: this.getCurrentData,\n    }\n\n    // needs to be after setThisContext\n    for (let callback of optionsData.pluginHooks.contextInit) {\n      callback(calendarContext)\n    }\n\n    // NOT DRY\n    let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext)\n\n    let initialState: CalendarDataManagerState = {\n      dynamicOptionOverrides,\n      currentViewType,\n      currentDate,\n      dateProfile,\n      businessHours: this.parseContextBusinessHours(calendarContext), // weird to have this in state\n      eventSources,\n      eventUiBases: {},\n      eventStore: createEmptyEventStore(),\n      renderableEventStore: createEmptyEventStore(),\n      dateSelection: null,\n      eventSelection: '',\n      eventDrag: null,\n      eventResize: null,\n      selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n    }\n    let contextAndState = { ...calendarContext, ...initialState }\n\n    for (let reducer of optionsData.pluginHooks.reducers) {\n      __assign(initialState, reducer(null, null, contextAndState))\n    }\n\n    if (computeIsLoading(initialState, calendarContext)) {\n      this.emitter.trigger('loading', true) // NOT DRY\n    }\n\n    this.state = initialState\n    this.updateData()\n    this.actionRunner.resume()\n  }\n\n  getCurrentData = () => this.data\n\n  dispatch = (action: Action) => {\n    this.actionRunner.request(action) // protects against recursive calls to _handleAction\n  }\n\n  resetOptions(optionOverrides: CalendarOptions, append?: boolean) {\n    let { props } = this\n\n    props.optionOverrides = append\n      ? { ...props.optionOverrides, ...optionOverrides }\n      : optionOverrides\n\n    this.actionRunner.request({ // hack. will cause updateData\n      type: 'NOTHING',\n    })\n  }\n\n  _handleAction(action: Action) {\n    let { props, state, emitter } = this\n\n    let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action)\n    let optionsData = this.computeOptionsData(\n      props.optionOverrides,\n      dynamicOptionOverrides,\n      props.calendarApi,\n    )\n\n    let currentViewType = reduceViewType(state.currentViewType, action)\n    let currentViewData = this.computeCurrentViewData(\n      currentViewType,\n      optionsData,\n      props.optionOverrides,\n      dynamicOptionOverrides,\n    )\n\n    // wire things up\n    // TODO: not DRY\n    props.calendarApi.currentDataManager = this\n    emitter.setThisContext(props.calendarApi)\n    emitter.setOptions(currentViewData.options)\n\n    let calendarContext: CalendarContext = {\n      dateEnv: optionsData.dateEnv,\n      options: optionsData.calendarOptions,\n      pluginHooks: optionsData.pluginHooks,\n      calendarApi: props.calendarApi,\n      dispatch: this.dispatch,\n      emitter,\n      getCurrentData: this.getCurrentData,\n    }\n\n    let { currentDate, dateProfile } = state\n\n    if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n      dateProfile = currentViewData.dateProfileGenerator.build(currentDate)\n    }\n\n    currentDate = reduceCurrentDate(currentDate, action)\n    dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator)\n\n    if (\n      action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n      action.type === 'NEXT' || // \"\n      !rangeContainsMarker(dateProfile.currentRange, currentDate)\n    ) {\n      currentDate = dateProfile.currentRange.start\n    }\n\n    let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext)\n    let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext)\n    let isEventsLoading = computeEventSourcesLoading(eventSources) // BAD. also called in this func in computeIsLoading\n\n    let renderableEventStore =\n      (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n        (state.renderableEventStore || eventStore) : // try from previous state\n        eventStore\n\n    let { eventUiSingleBase, selectionConfig } = this.buildViewUiProps(calendarContext) // will memoize obj\n    let eventUiBySource = this.buildEventUiBySource(eventSources)\n    let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource)\n\n    let newState: CalendarDataManagerState = {\n      dynamicOptionOverrides,\n      currentViewType,\n      currentDate,\n      dateProfile,\n      eventSources,\n      eventStore,\n      renderableEventStore,\n      selectionConfig,\n      eventUiBases,\n      businessHours: this.parseContextBusinessHours(calendarContext), // will memoize obj\n      dateSelection: reduceDateSelection(state.dateSelection, action),\n      eventSelection: reduceSelectedEvent(state.eventSelection, action),\n      eventDrag: reduceEventDrag(state.eventDrag, action),\n      eventResize: reduceEventResize(state.eventResize, action),\n    }\n    let contextAndState = { ...calendarContext, ...newState }\n\n    for (let reducer of optionsData.pluginHooks.reducers) {\n      __assign(newState, reducer(state, action, contextAndState)) // give the OLD state, for old value\n    }\n\n    let wasLoading = computeIsLoading(state, calendarContext)\n    let isLoading = computeIsLoading(newState, calendarContext)\n\n    // TODO: use propSetHandlers in plugin system\n    if (!wasLoading && isLoading) {\n      emitter.trigger('loading', true)\n    } else if (wasLoading && !isLoading) {\n      emitter.trigger('loading', false)\n    }\n\n    this.state = newState\n\n    if (props.onAction) {\n      props.onAction(action)\n    }\n  }\n\n  updateData() {\n    let { props, state } = this\n    let oldData = this.data\n\n    let optionsData = this.computeOptionsData(\n      props.optionOverrides,\n      state.dynamicOptionOverrides,\n      props.calendarApi,\n    )\n\n    let currentViewData = this.computeCurrentViewData(\n      state.currentViewType,\n      optionsData,\n      props.optionOverrides,\n      state.dynamicOptionOverrides,\n    )\n\n    let data: CalendarData = this.data = {\n      viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv),\n      calendarApi: props.calendarApi,\n      dispatch: this.dispatch,\n      emitter: this.emitter,\n      getCurrentData: this.getCurrentData,\n      ...optionsData,\n      ...currentViewData,\n      ...state,\n    }\n\n    let changeHandlers = optionsData.pluginHooks.optionChangeHandlers\n    let oldCalendarOptions = oldData && oldData.calendarOptions\n    let newCalendarOptions = optionsData.calendarOptions\n\n    if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n      if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n        // hack\n        state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data)\n        state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv)\n      }\n\n      for (let optionName in changeHandlers) {\n        if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n          changeHandlers[optionName](newCalendarOptions[optionName], data)\n        }\n      }\n    }\n\n    if (props.onData) {\n      props.onData(data)\n    }\n  }\n\n  _computeOptionsData(\n    optionOverrides: CalendarOptions,\n    dynamicOptionOverrides: CalendarOptions,\n    calendarApi: CalendarApi,\n  ): CalendarOptionsData {\n    // TODO: blacklist options that are handled by optionChangeHandlers\n\n    let {\n      refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra,\n    } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides)\n\n    warnUnknownOptions(extra)\n\n    let dateEnv = this.buildDateEnv(\n      refinedOptions.timeZone,\n      refinedOptions.locale,\n      refinedOptions.weekNumberCalculation,\n      refinedOptions.firstDay,\n      refinedOptions.weekText,\n      pluginHooks,\n      availableLocaleData,\n      refinedOptions.defaultRangeSeparator,\n    )\n\n    let viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults)\n    let theme = this.buildTheme(refinedOptions, pluginHooks)\n    let toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi)\n\n    return {\n      calendarOptions: refinedOptions,\n      pluginHooks,\n      dateEnv,\n      viewSpecs,\n      theme,\n      toolbarConfig,\n      localeDefaults,\n      availableRawLocales: availableLocaleData.map,\n    }\n  }\n\n  // always called from behind a memoizer\n  processRawCalendarOptions(optionOverrides: CalendarOptions, dynamicOptionOverrides: CalendarOptions) {\n    let { locales, locale } = mergeRawOptions([\n      BASE_OPTION_DEFAULTS,\n      optionOverrides,\n      dynamicOptionOverrides,\n    ])\n    let availableLocaleData = this.organizeRawLocales(locales)\n    let availableRawLocales = availableLocaleData.map\n    let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options\n    let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins)\n    let refiners = this.currentCalendarOptionsRefiners = {\n      ...BASE_OPTION_REFINERS,\n      ...CALENDAR_LISTENER_REFINERS,\n      ...CALENDAR_OPTION_REFINERS,\n      ...pluginHooks.listenerRefiners,\n      ...pluginHooks.optionRefiners,\n    }\n    let extra = {}\n\n    let raw = mergeRawOptions([\n      BASE_OPTION_DEFAULTS,\n      localeDefaults,\n      optionOverrides,\n      dynamicOptionOverrides,\n    ])\n    let refined: Partial<CalendarOptionsRefined> = {}\n    let currentRaw = this.currentCalendarOptionsInput\n    let currentRefined = this.currentCalendarOptionsRefined\n    let anyChanges = false\n\n    for (let optionName in raw) {\n      if (optionName !== 'plugins') { // because plugins is special-cased\n        if (\n          raw[optionName] === currentRaw[optionName] ||\n          (\n            COMPLEX_OPTION_COMPARATORS[optionName] &&\n            (optionName in currentRaw) &&\n            COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])\n          )\n        ) {\n          refined[optionName] = currentRefined[optionName]\n        } else if (refiners[optionName]) {\n          refined[optionName] = refiners[optionName](raw[optionName])\n          anyChanges = true\n        } else {\n          extra[optionName] = currentRaw[optionName]\n        }\n      }\n    }\n\n    if (anyChanges) {\n      this.currentCalendarOptionsInput = raw\n      this.currentCalendarOptionsRefined = refined as CalendarOptionsRefined\n    }\n\n    return {\n      rawOptions: this.currentCalendarOptionsInput,\n      refinedOptions: this.currentCalendarOptionsRefined,\n      pluginHooks,\n      availableLocaleData,\n      localeDefaults,\n      extra,\n    }\n  }\n\n  _computeCurrentViewData(\n    viewType: string,\n    optionsData: CalendarOptionsData,\n    optionOverrides: CalendarOptions,\n    dynamicOptionOverrides: CalendarOptions,\n  ): CalendarCurrentViewData {\n    let viewSpec = optionsData.viewSpecs[viewType]\n\n    if (!viewSpec) {\n      throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`)\n    }\n\n    let { refinedOptions, extra } = this.processRawViewOptions(\n      viewSpec,\n      optionsData.pluginHooks,\n      optionsData.localeDefaults,\n      optionOverrides,\n      dynamicOptionOverrides,\n    )\n\n    warnUnknownOptions(extra)\n\n    let dateProfileGenerator = this.buildDateProfileGenerator({\n      dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass as any,\n      duration: viewSpec.duration,\n      durationUnit: viewSpec.durationUnit,\n      usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime as any,\n      dateEnv: optionsData.dateEnv,\n      calendarApi: this.props.calendarApi, // should come from elsewhere?\n      slotMinTime: refinedOptions.slotMinTime,\n      slotMaxTime: refinedOptions.slotMaxTime,\n      showNonCurrentDates: refinedOptions.showNonCurrentDates,\n      dayCount: refinedOptions.dayCount,\n      dateAlignment: refinedOptions.dateAlignment,\n      dateIncrement: refinedOptions.dateIncrement,\n      hiddenDays: refinedOptions.hiddenDays,\n      weekends: refinedOptions.weekends,\n      nowInput: refinedOptions.now,\n      validRangeInput: refinedOptions.validRange,\n      visibleRangeInput: refinedOptions.visibleRange,\n      monthMode: refinedOptions.monthMode,\n      fixedWeekCount: refinedOptions.fixedWeekCount,\n    })\n\n    let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv)\n\n    return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi }\n  }\n\n  processRawViewOptions(\n    viewSpec: ViewSpec,\n    pluginHooks: PluginHooks,\n    localeDefaults: CalendarOptions,\n    optionOverrides: CalendarOptions,\n    dynamicOptionOverrides: CalendarOptions,\n  ) {\n    let raw = mergeRawOptions([\n      BASE_OPTION_DEFAULTS,\n      viewSpec.optionDefaults,\n      localeDefaults,\n      optionOverrides,\n      viewSpec.optionOverrides,\n      dynamicOptionOverrides,\n    ])\n    let refiners = {\n      ...BASE_OPTION_REFINERS,\n      ...CALENDAR_LISTENER_REFINERS,\n      ...CALENDAR_OPTION_REFINERS,\n      ...VIEW_OPTION_REFINERS,\n      ...pluginHooks.listenerRefiners,\n      ...pluginHooks.optionRefiners,\n    }\n    let refined: Partial<ViewOptionsRefined> = {}\n    let currentRaw = this.currentViewOptionsInput\n    let currentRefined = this.currentViewOptionsRefined\n    let anyChanges = false\n    let extra = {}\n\n    for (let optionName in raw) {\n      if (\n        raw[optionName] === currentRaw[optionName] ||\n        (COMPLEX_OPTION_COMPARATORS[optionName] &&\n          COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))\n      ) {\n        refined[optionName] = currentRefined[optionName]\n      } else {\n        if (\n          raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n          (COMPLEX_OPTION_COMPARATORS[optionName] &&\n            COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))\n        ) {\n          if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n            refined[optionName] = this.currentCalendarOptionsRefined[optionName]\n          }\n        } else if (refiners[optionName]) {\n          refined[optionName] = refiners[optionName](raw[optionName])\n        } else {\n          extra[optionName] = raw[optionName]\n        }\n\n        anyChanges = true\n      }\n    }\n\n    if (anyChanges) {\n      this.currentViewOptionsInput = raw\n      this.currentViewOptionsRefined = refined as ViewOptionsRefined\n    }\n\n    return {\n      rawOptions: this.currentViewOptionsInput,\n      refinedOptions: this.currentViewOptionsRefined,\n      extra,\n    }\n  }\n}\n\nfunction buildDateEnv(\n  timeZone: string,\n  explicitLocale: LocaleSingularArg,\n  weekNumberCalculation,\n  firstDay: number | undefined,\n  weekText,\n  pluginHooks: PluginHooks,\n  availableLocaleData: RawLocaleInfo,\n  defaultSeparator: string,\n) {\n  let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map)\n\n  return new DateEnv({\n    calendarSystem: 'gregory', // TODO: make this a setting\n    timeZone,\n    namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n    locale,\n    weekNumberCalculation,\n    firstDay,\n    weekText,\n    cmdFormatter: pluginHooks.cmdFormatter,\n    defaultSeparator,\n  })\n}\n\nfunction buildTheme(options: CalendarOptionsRefined, pluginHooks: PluginHooks) {\n  let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme\n\n  return new ThemeClass(options)\n}\n\nfunction buildDateProfileGenerator(props: DateProfileGeneratorProps): DateProfileGenerator {\n  let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator\n\n  return new DateProfileGeneratorClass(props)\n}\n\nfunction buildViewApi(type: string, getCurrentData: () => CalendarData, dateEnv: DateEnv) {\n  return new ViewApi(type, getCurrentData, dateEnv)\n}\n\nfunction buildEventUiBySource(eventSources: EventSourceHash): EventUiHash {\n  return mapHash(eventSources, (eventSource) => eventSource.ui)\n}\n\nfunction buildEventUiBases(eventDefs: EventDefHash, eventUiSingleBase: EventUi, eventUiBySource: EventUiHash) {\n  let eventUiBases: EventUiHash = { '': eventUiSingleBase }\n\n  for (let defId in eventDefs) {\n    let def = eventDefs[defId]\n\n    if (def.sourceId && eventUiBySource[def.sourceId]) {\n      eventUiBases[defId] = eventUiBySource[def.sourceId]\n    }\n  }\n\n  return eventUiBases\n}\n\nfunction buildViewUiProps(calendarContext: CalendarContext) {\n  let { options } = calendarContext\n\n  return {\n    eventUiSingleBase: createEventUi(\n      {\n        display: options.eventDisplay,\n        editable: options.editable, // without \"event\" at start\n        startEditable: options.eventStartEditable,\n        durationEditable: options.eventDurationEditable,\n        constraint: options.eventConstraint,\n        overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n        allow: options.eventAllow,\n        backgroundColor: options.eventBackgroundColor,\n        borderColor: options.eventBorderColor,\n        textColor: options.eventTextColor,\n        color: options.eventColor,\n        // classNames: options.eventClassNames // render hook will handle this\n      },\n      calendarContext,\n    ),\n    selectionConfig: createEventUi(\n      {\n        constraint: options.selectConstraint,\n        overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n        allow: options.selectAllow,\n      },\n      calendarContext,\n    ),\n  }\n}\n\nfunction computeIsLoading(state: CalendarDataManagerState, context: CalendarContext) {\n  for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n    if (isLoadingFunc(state)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nfunction parseContextBusinessHours(calendarContext: CalendarContext) {\n  return parseBusinessHours(calendarContext.options.businessHours, calendarContext)\n}\n\nfunction warnUnknownOptions(options: any, viewName?: string) {\n  for (let optionName in options) {\n    console.warn(\n      `Unknown option '${optionName}'` +\n      (viewName ? ` for view '${viewName}'` : ''),\n    )\n  }\n}\n", "import { Component, ComponentChildren } from '../vdom'\nimport { CalendarDataManager } from '../reducers/CalendarDataManager'\nimport { CalendarApi } from '../CalendarApi'\nimport { CalendarData } from '../reducers/data-types'\n\nexport interface CalendarDataProviderProps {\n  optionOverrides: any\n  calendarApi: CalendarApi\n  children?: (data: CalendarData) => ComponentChildren\n}\n\n// TODO: move this to react plugin?\nexport class CalendarDataProvider extends Component<CalendarDataProviderProps, CalendarData> {\n  dataManager: CalendarDataManager\n\n  constructor(props: CalendarDataProviderProps) {\n    super(props)\n\n    this.dataManager = new CalendarDataManager({\n      optionOverrides: props.optionOverrides,\n      calendarApi: props.calendarApi,\n      onData: this.handleData,\n    })\n  }\n\n  handleData = (data: CalendarData) => {\n    if (!this.dataManager) { // still within initial run, before assignment in constructor\n      // eslint-disable-next-line react/no-direct-mutation-state\n      this.state = data // can't use setState yet\n    } else {\n      this.setState(data)\n    }\n  }\n\n  render() {\n    return this.props.children(this.state)\n  }\n\n  componentDidUpdate(prevProps: CalendarDataProviderProps) {\n    let newOptionOverrides = this.props.optionOverrides\n\n    if (newOptionOverrides !== prevProps.optionOverrides) { // prevent recursive handleData\n      this.dataManager.resetOptions(newOptionOverrides)\n    }\n  }\n}\n", "import { DateProfile } from './DateProfileGenerator'\nimport { EventStore } from './structs/event-store'\nimport { EventUiHash } from './component/event-ui'\nimport { sliceEventStore, EventRenderRange } from './component/event-rendering'\nimport { DateSpan } from './structs/date-span'\nimport { EventInteractionState } from './interactions/event-interaction-state'\nimport { Duration } from './datelib/duration'\n\nexport interface ViewProps {\n  dateProfile: DateProfile\n  businessHours: EventStore\n  eventStore: EventStore\n  eventUiBases: EventUiHash\n  dateSelection: DateSpan | null\n  eventSelection: string\n  eventDrag: EventInteractionState | null\n  eventResize: EventInteractionState | null\n  isHeightAuto: boolean\n  forPrint: boolean\n}\n\n// HELPERS\n\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nexport function sliceEvents(\n  props: ViewProps & { dateProfile: DateProfile, nextDayThreshold: Duration },\n  allDay?: boolean,\n): EventRenderRange[] {\n  return sliceEventStore(\n    props.eventStore,\n    props.eventUiBases,\n    props.dateProfile.activeRange,\n    allDay ? props.nextDayThreshold : null,\n  ).fg\n}\n", "export abstract class NamedTimeZoneImpl {\n  timeZoneName: string\n\n  constructor(timeZoneName: string) {\n    this.timeZoneName = timeZoneName\n  }\n\n  abstract offsetForArray(a: number[]): number\n\n  abstract timestampToArray(ms: number): number[]\n}\n\nexport type NamedTimeZoneImplClass = { new(timeZoneName: string): NamedTimeZoneImpl }\n", "export interface SegSpan {\n  start: number\n  end: number\n}\n\nexport interface SegEntry {\n  index: number\n  thickness: number // should be an integer\n  span: SegSpan\n}\n\n// used internally. exposed for subclasses of SegHierarchy\nexport interface SegInsertion {\n  level: number // will have an equal coord, or slightly before, entries in existing level\n  levelCoord: number\n  lateral: number // where to insert in the existing level. -1 if creating a new level\n  touchingLevel: number // -1 if no touching\n  touchingLateral: number // -1 if no touching\n  touchingEntry: SegEntry // the last touching entry in the level\n  stackCnt: number\n}\n\nexport interface SegRect extends SegEntry {\n  levelCoord: number\n}\n\nexport interface SegEntryGroup {\n  entries: SegEntry[]\n  span: SegSpan\n}\n\nexport class SegHierarchy {\n  // settings\n  strictOrder: boolean = false\n  allowReslicing: boolean = false\n  maxCoord: number = -1 // -1 means no max\n  maxStackCnt: number = -1 // -1 means no max\n\n  levelCoords: number[] = [] // ordered\n  entriesByLevel: SegEntry[][] = [] // parallel with levelCoords\n  stackCnts: { [entryId: string]: number } = {} // TODO: use better technique!?\n\n  addSegs(inputs: SegEntry[]): SegEntry[] {\n    let hiddenEntries: SegEntry[] = []\n\n    for (let input of inputs) {\n      this.insertEntry(input, hiddenEntries)\n    }\n\n    return hiddenEntries\n  }\n\n  insertEntry(entry: SegEntry, hiddenEntries: SegEntry[]): number {\n    let insertion = this.findInsertion(entry)\n\n    if (this.isInsertionValid(insertion, entry)) {\n      this.insertEntryAt(entry, insertion)\n      return 1\n    }\n\n    return this.handleInvalidInsertion(insertion, entry, hiddenEntries)\n  }\n\n  isInsertionValid(insertion: SegInsertion, entry: SegEntry): boolean {\n    return (this.maxCoord === -1 || insertion.levelCoord + entry.thickness <= this.maxCoord) &&\n      (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt)\n  }\n\n  // returns number of new entries inserted\n  handleInvalidInsertion(insertion: SegInsertion, entry: SegEntry, hiddenEntries: SegEntry[]): number {\n    if (this.allowReslicing && insertion.touchingEntry) {\n      return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries)\n    }\n\n    hiddenEntries.push(entry)\n    return 0\n  }\n\n  splitEntry(entry: SegEntry, barrier: SegEntry, hiddenEntries: SegEntry[]): number {\n    let partCnt = 0\n    let splitHiddenEntries: SegEntry[] = []\n    let entrySpan = entry.span\n    let barrierSpan = barrier.span\n\n    if (entrySpan.start < barrierSpan.start) {\n      partCnt += this.insertEntry({\n        index: entry.index,\n        thickness: entry.thickness,\n        span: { start: entrySpan.start, end: barrierSpan.start },\n      }, splitHiddenEntries)\n    }\n\n    if (entrySpan.end > barrierSpan.end) {\n      partCnt += this.insertEntry({\n        index: entry.index,\n        thickness: entry.thickness,\n        span: { start: barrierSpan.end, end: entrySpan.end },\n      }, splitHiddenEntries)\n    }\n\n    if (partCnt) {\n      hiddenEntries.push({\n        index: entry.index,\n        thickness: entry.thickness,\n        span: intersectSpans(barrierSpan, entrySpan), // guaranteed to intersect\n      }, ...splitHiddenEntries)\n      return partCnt\n    }\n\n    hiddenEntries.push(entry)\n    return 0\n  }\n\n  insertEntryAt(entry: SegEntry, insertion: SegInsertion): void {\n    let { entriesByLevel, levelCoords } = this\n\n    if (insertion.lateral === -1) {\n      // create a new level\n      insertAt(levelCoords, insertion.level, insertion.levelCoord)\n      insertAt(entriesByLevel, insertion.level, [entry])\n    } else {\n      // insert into existing level\n      insertAt(entriesByLevel[insertion.level], insertion.lateral, entry)\n    }\n\n    this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt\n  }\n\n  findInsertion(newEntry: SegEntry): SegInsertion {\n    let { levelCoords, entriesByLevel, strictOrder, stackCnts } = this\n    let levelCnt = levelCoords.length\n    let candidateCoord = 0\n    let touchingLevel: number = -1\n    let touchingLateral: number = -1\n    let touchingEntry: SegEntry = null\n    let stackCnt = 0\n\n    for (let trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n      let trackingCoord = levelCoords[trackingLevel]\n\n      // if the current level is past the placed entry, we have found a good empty space and can stop.\n      // if strictOrder, keep finding more lateral intersections.\n      if (!strictOrder && trackingCoord >= candidateCoord + newEntry.thickness) {\n        break\n      }\n\n      let trackingEntries = entriesByLevel[trackingLevel]\n      let trackingEntry: SegEntry\n      let searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd) // find first entry after newEntry's end\n      let lateralIndex = searchRes[0] + searchRes[1] // if exact match (which doesn't collide), go to next one\n\n      while ( // loop through entries that horizontally intersect\n        (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n        trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n      ) {\n        let trackingEntryBottom = trackingCoord + trackingEntry.thickness\n        // intersects into the top of the candidate?\n        if (trackingEntryBottom > candidateCoord) {\n          candidateCoord = trackingEntryBottom\n          touchingEntry = trackingEntry\n          touchingLevel = trackingLevel\n          touchingLateral = lateralIndex\n        }\n        // butts up against top of candidate? (will happen if just intersected as well)\n        if (trackingEntryBottom === candidateCoord) {\n          // accumulate the highest possible stackCnt of the trackingEntries that butt up\n          stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1)\n        }\n        lateralIndex += 1\n      }\n    }\n\n    // the destination level will be after touchingEntry's level. find it\n    let destLevel = 0\n    if (touchingEntry) {\n      destLevel = touchingLevel + 1\n      while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n        destLevel += 1\n      }\n    }\n\n    // if adding to an existing level, find where to insert\n    let destLateral = -1\n    if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n      destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0]\n    }\n\n    return {\n      touchingLevel,\n      touchingLateral,\n      touchingEntry,\n      stackCnt,\n      levelCoord: candidateCoord,\n      level: destLevel,\n      lateral: destLateral,\n    }\n  }\n\n  // sorted by levelCoord (lowest to highest)\n  toRects(): SegRect[] {\n    let { entriesByLevel, levelCoords } = this\n    let levelCnt = entriesByLevel.length\n    let rects: SegRect[] = []\n\n    for (let level = 0; level < levelCnt; level += 1) {\n      let entries = entriesByLevel[level]\n      let levelCoord = levelCoords[level]\n\n      for (let entry of entries) {\n        rects.push({ ...entry, levelCoord })\n      }\n    }\n\n    return rects\n  }\n}\n\nexport function getEntrySpanEnd(entry: SegEntry) {\n  return entry.span.end\n}\n\nexport function buildEntryKey(entry: SegEntry) { // TODO: use Map instead?\n  return entry.index + ':' + entry.span.start\n}\n\n// returns groups with entries sorted by input order\nexport function groupIntersectingEntries(entries: SegEntry[]): SegEntryGroup[] {\n  let merges: SegEntryGroup[] = []\n\n  for (let entry of entries) {\n    let filteredMerges: SegEntryGroup[] = []\n    let hungryMerge: SegEntryGroup = { // the merge that will eat what it collides with\n      span: entry.span,\n      entries: [entry],\n    }\n\n    for (let merge of merges) {\n      if (intersectSpans(merge.span, hungryMerge.span)) {\n        hungryMerge = {\n          entries: merge.entries.concat(hungryMerge.entries), // keep preexisting merge's items first. maintains order\n          span: joinSpans(merge.span, hungryMerge.span),\n        }\n      } else {\n        filteredMerges.push(merge)\n      }\n    }\n\n    filteredMerges.push(hungryMerge)\n    merges = filteredMerges\n  }\n\n  return merges\n}\n\nexport function joinSpans(span0: SegSpan, span1: SegSpan): SegSpan {\n  return {\n    start: Math.min(span0.start, span1.start),\n    end: Math.max(span0.end, span1.end),\n  }\n}\n\nexport function intersectSpans(span0: SegSpan, span1: SegSpan): SegSpan | null {\n  let start = Math.max(span0.start, span1.start)\n  let end = Math.min(span0.end, span1.end)\n\n  if (start < end) {\n    return { start, end }\n  }\n\n  return null\n}\n\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\n\nfunction insertAt<Item>(arr: Item[], index: number, item: Item) {\n  arr.splice(index, 0, item)\n}\n\nexport function binarySearch<Item>(\n  a: Item[],\n  searchVal: number,\n  getItemVal: (item: Item) => number,\n): [number, number] { // returns [level, isExactMatch ? 1 : 0]\n  let startIndex = 0\n  let endIndex = a.length // exclusive\n\n  if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n    return [0, 0]\n  }\n  if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n    return [endIndex, 0]\n  }\n\n  while (startIndex < endIndex) {\n    let middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2)\n    let middleVal = getItemVal(a[middleIndex])\n\n    if (searchVal < middleVal) {\n      endIndex = middleIndex\n    } else if (searchVal > middleVal) {\n      startIndex = middleIndex + 1\n    } else { // equal!\n      return [middleIndex, 1]\n    }\n  }\n\n  return [startIndex, 0]\n}\n", "import { DateComponent } from '../component/DateComponent'\nimport { Hit } from './hit'\n\nexport abstract class Interaction {\n  component: DateComponent<any>\n  isHitComboAllowed: ((hit0: Hit, hit1: Hit) => boolean) | null\n\n  constructor(settings: InteractionSettings) {\n    this.component = settings.component\n    this.isHitComboAllowed = settings.isHitComboAllowed || null\n  }\n\n  destroy() {\n  }\n}\n\nexport type InteractionClass = { new(settings: InteractionSettings): Interaction }\n\nexport interface InteractionSettingsInput {\n  el: HTMLElement\n  useEventCenter?: boolean\n  isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean\n}\n\nexport interface InteractionSettings {\n  component: DateComponent<any>\n  el: HTMLElement\n  useEventCenter: boolean\n  isHitComboAllowed: ((hit0: Hit, hit1: Hit) => boolean) | null\n}\n\nexport type InteractionSettingsStore = { [componenUid: string]: InteractionSettings }\n\nexport function parseInteractionSettings(component: DateComponent<any>, input: InteractionSettingsInput): InteractionSettings {\n  return {\n    component,\n    el: input.el,\n    useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n    isHitComboAllowed: input.isHitComboAllowed || null,\n  }\n}\n\nexport function interactionSettingsToStore(settings: InteractionSettings) {\n  return {\n    [settings.component.uid]: settings,\n  }\n}\n\n// global state\nexport const interactionSettingsStore: InteractionSettingsStore = {}\n", "import { Emitter } from '../common/Emitter'\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nexport abstract class ElementDragging { // TODO: rename to *Interface?\n  emitter: Emitter<any>\n\n  constructor(el: HTMLElement, selector?: string) {\n    this.emitter = new Emitter()\n  }\n\n  destroy() {\n  }\n\n  // if given true, should prevent dragstart+dragmove+dragend from firing\n  abstract setIgnoreMove(bool: boolean): void\n\n  setMirrorIsVisible(bool: boolean) {\n    // optional if subclass doesn't want to support a mirror\n  }\n\n  setMirrorNeedsRevert(bool: boolean) {\n    // optional if subclass doesn't want to support a mirror\n  }\n\n  setAutoScrollEnabled(bool: boolean) {\n    // optional\n  }\n}\n\nexport type ElementDraggingClass = { new(el: HTMLElement, selector?: string): ElementDragging }\n", "// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nexport const config = {} as any\n", "import { createDuration, Duration } from '../datelib/duration'\nimport { refineProps, RawOptionsFromRefiners, Dictionary } from '../options'\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\n\nconst DRAG_META_REFINERS = {\n  startTime: createDuration,\n  duration: createDuration,\n  create: Boolean,\n  sourceId: String,\n}\n\nexport type DragMetaInput =\n  RawOptionsFromRefiners<typeof DRAG_META_REFINERS> &\n  { [otherProp: string]: any } // for leftoverProps\n\nexport interface DragMeta {\n  startTime: Duration | null\n  duration: Duration | null\n  create: boolean // create an event when dropped?\n  sourceId: string // similar to addEvent's parameter\n  leftoverProps: Dictionary\n}\n\nexport function parseDragMeta(raw: DragMetaInput): DragMeta {\n  let { refined, extra } = refineProps(raw, DRAG_META_REFINERS)\n\n  return {\n    startTime: refined.startTime || null,\n    duration: refined.duration || null,\n    create: refined.create != null ? refined.create : true,\n    sourceId: refined.sourceId,\n    leftoverProps: extra,\n  }\n}\n", "import { createElement, VNode } from './vdom'\nimport { BaseComponent } from './vdom-util'\nimport { ToolbarWidget } from './toolbar-struct'\n\nexport interface ToolbarContent {\n  title: string\n  titleId: string\n  navUnit: string\n  activeButton: string\n  isTodayEnabled: boolean\n  isPrevEnabled: boolean\n  isNextEnabled: boolean\n}\n\nexport interface ToolbarSectionProps extends ToolbarContent {\n  widgetGroups: ToolbarWidget[][]\n}\n\nexport class ToolbarSection extends BaseComponent<ToolbarSectionProps> {\n  render() {\n    let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup))\n\n    return createElement('div', { className: 'fc-toolbar-chunk' }, ...children)\n  }\n\n  renderWidgetGroup(widgetGroup: ToolbarWidget[]) {\n    let { props } = this\n    let { theme } = this.context\n    let children: VNode[] = []\n    let isOnlyButtons = true\n\n    for (let widget of widgetGroup) {\n      let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget\n\n      if (buttonName === 'title') {\n        isOnlyButtons = false\n        children.push(\n          <h2 className=\"fc-toolbar-title\" id={props.titleId}>{props.title}</h2>,\n        )\n      } else {\n        let isPressed = buttonName === props.activeButton\n        let isDisabled =\n          (!props.isTodayEnabled && buttonName === 'today') ||\n          (!props.isPrevEnabled && buttonName === 'prev') ||\n          (!props.isNextEnabled && buttonName === 'next')\n\n        let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')]\n        if (isPressed) {\n          buttonClasses.push(theme.getClass('buttonActive'))\n        }\n\n        children.push(\n          <button\n            type=\"button\"\n            title={typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint}\n            disabled={isDisabled}\n            aria-pressed={isPressed}\n            className={buttonClasses.join(' ')}\n            onClick={buttonClick}\n          >\n            {buttonText || (buttonIcon ? <span className={buttonIcon} /> : '')}\n          </button>,\n        )\n      }\n    }\n\n    if (children.length > 1) {\n      let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || ''\n\n      return createElement('div', { className: groupClassName }, ...children)\n    }\n    return children[0]\n  }\n}\n", "import { createElement } from './vdom'\nimport { BaseComponent } from './vdom-util'\nimport { ToolbarModel, ToolbarWidget } from './toolbar-struct'\nimport { ToolbarSection, ToolbarContent } from './ToolbarSection'\n\nexport interface ToolbarProps extends ToolbarContent {\n  extraClassName: string // wish this could be array, but easier for pureness\n  model: ToolbarModel\n  titleId: string\n}\n\nexport class Toolbar extends BaseComponent<ToolbarProps> {\n  render() {\n    let { model, extraClassName } = this.props\n    let forceLtr = false\n    let startContent\n    let endContent\n    let sectionWidgets = model.sectionWidgets\n    let centerContent = sectionWidgets.center\n\n    if (sectionWidgets.left) {\n      forceLtr = true\n      startContent = sectionWidgets.left\n    } else {\n      startContent = sectionWidgets.start\n    }\n\n    if (sectionWidgets.right) {\n      forceLtr = true\n      endContent = sectionWidgets.right\n    } else {\n      endContent = sectionWidgets.end\n    }\n\n    let classNames = [\n      extraClassName || '',\n      'fc-toolbar',\n      forceLtr ? 'fc-toolbar-ltr' : '',\n    ]\n\n    return (\n      <div className={classNames.join(' ')}>\n        {this.renderSection('start', startContent || [])}\n        {this.renderSection('center', centerContent || [])}\n        {this.renderSection('end', endContent || [])}\n      </div>\n    )\n  }\n\n  renderSection(key: string, widgetGroups: ToolbarWidget[][]) {\n    let { props } = this\n\n    return (\n      <ToolbarSection\n        key={key}\n        widgetGroups={widgetGroups}\n        title={props.title}\n        navUnit={props.navUnit}\n        activeButton={props.activeButton}\n        isTodayEnabled={props.isTodayEnabled}\n        isPrevEnabled={props.isPrevEnabled}\n        isNextEnabled={props.isNextEnabled}\n        titleId={props.titleId}\n      />\n    )\n  }\n}\n", "import { BaseComponent, setRef } from './vdom-util'\nimport { ComponentChildren, Ref, createElement } from './vdom'\nimport { CssDimValue } from './scrollgrid/util'\n\nexport interface ViewContainerProps {\n  labeledById: string\n  liquid?: boolean\n  height?: CssDimValue\n  aspectRatio?: number\n  elRef?: Ref<HTMLDivElement>\n  children?: ComponentChildren\n}\n\ninterface ViewContainerState {\n  availableWidth: number | null\n}\n\n// TODO: do function component?\nexport class ViewContainer extends BaseComponent<ViewContainerProps, ViewContainerState> {\n  el: HTMLElement\n\n  state: ViewContainerState = {\n    availableWidth: null,\n  }\n\n  render() {\n    let { props, state } = this\n    let { aspectRatio } = props\n\n    let classNames = [\n      'fc-view-harness',\n      (aspectRatio || props.liquid || props.height)\n        ? 'fc-view-harness-active' // harness controls the height\n        : 'fc-view-harness-passive', // let the view do the height\n    ]\n    let height: CssDimValue = ''\n    let paddingBottom: CssDimValue = ''\n\n    if (aspectRatio) {\n      if (state.availableWidth !== null) {\n        height = state.availableWidth / aspectRatio\n      } else {\n        // while waiting to know availableWidth, we can't set height to *zero*\n        // because will cause lots of unnecessary scrollbars within scrollgrid.\n        // BETTER: don't start rendering ANYTHING yet until we know container width\n        // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n        paddingBottom = `${(1 / aspectRatio) * 100}%`\n      }\n    } else {\n      height = props.height || ''\n    }\n\n    return (\n      <div\n        aria-labelledby={props.labeledById}\n        ref={this.handleEl}\n        className={classNames.join(' ')}\n        style={{ height, paddingBottom }}\n      >\n        {props.children}\n      </div>\n    )\n  }\n\n  componentDidMount() {\n    this.context.addResizeHandler(this.handleResize)\n  }\n\n  componentWillUnmount() {\n    this.context.removeResizeHandler(this.handleResize)\n  }\n\n  handleEl = (el: HTMLElement | null) => {\n    this.el = el\n    setRef(this.props.elRef, el)\n    this.updateAvailableWidth()\n  }\n\n  handleResize = () => {\n    this.updateAvailableWidth()\n  }\n\n  updateAvailableWidth() {\n    if (\n      this.el && // needed. but why?\n      this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n    ) {\n      this.setState({ availableWidth: this.el.offsetWidth })\n    }\n  }\n}\n", "import { listenBySelector } from '../util/dom-event'\nimport { EventApi } from '../api/EventApi'\nimport { elementClosest } from '../util/dom-manip'\nimport { getElSeg } from '../component/event-rendering'\nimport { Interaction, InteractionSettings } from './interaction'\nimport { ViewApi } from '../ViewApi'\n\nexport interface EventClickArg {\n  el: HTMLElement\n  event: EventApi\n  jsEvent: MouseEvent\n  view: ViewApi\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nexport class EventClicking extends Interaction {\n  constructor(settings: InteractionSettings) {\n    super(settings)\n\n    this.destroy = listenBySelector(\n      settings.el,\n      'click',\n      '.fc-event', // on both fg and bg events\n      this.handleSegClick,\n    )\n  }\n\n  handleSegClick = (ev: Event, segEl: HTMLElement) => {\n    let { component } = this\n    let { context } = component\n    let seg = getElSeg(segEl)\n\n    if (\n      seg && // might be the <div> surrounding the more link\n      component.isValidSegDownEl(ev.target as HTMLElement)\n    ) {\n      // our way to simulate a link click for elements that can't be <a> tags\n      // grab before trigger fired in case trigger trashes DOM thru rerendering\n      let hasUrlContainer = elementClosest(ev.target as HTMLElement, '.fc-event-forced-url')\n      let url = hasUrlContainer ? (hasUrlContainer.querySelector('a[href]') as any).href : ''\n\n      context.emitter.trigger('eventClick', {\n        el: segEl,\n        event: new EventApi(\n          component.context,\n          seg.eventRange.def,\n          seg.eventRange.instance,\n        ),\n        jsEvent: ev as MouseEvent, // Is this always a mouse event? See #4655\n        view: context.viewApi,\n      } as EventClickArg)\n\n      if (url && !ev.defaultPrevented) {\n        window.location.href = url\n      }\n    }\n  }\n}\n", "import { listenToHoverBySelector } from '../util/dom-event'\nimport { EventApi } from '../api/EventApi'\nimport { getElSeg } from '../component/event-rendering'\nimport { Interaction, InteractionSettings } from './interaction'\nimport { ViewApi } from '../ViewApi'\n\nexport interface EventHoveringArg {\n  el: HTMLElement\n  event: EventApi\n  jsEvent: MouseEvent\n  view: ViewApi\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nexport class EventHovering extends Interaction {\n  removeHoverListeners: () => void\n\n  currentSegEl: HTMLElement\n\n  constructor(settings: InteractionSettings) {\n    super(settings)\n\n    this.removeHoverListeners = listenToHoverBySelector(\n      settings.el,\n      '.fc-event', // on both fg and bg events\n      this.handleSegEnter,\n      this.handleSegLeave,\n    )\n  }\n\n  destroy() {\n    this.removeHoverListeners()\n  }\n\n  // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n  handleEventElRemove = (el: HTMLElement) => {\n    if (el === this.currentSegEl) {\n      this.handleSegLeave(null, this.currentSegEl)\n    }\n  }\n\n  handleSegEnter = (ev: Event, segEl: HTMLElement) => {\n    if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n      this.currentSegEl = segEl\n      this.triggerEvent('eventMouseEnter', ev, segEl)\n    }\n  }\n\n  handleSegLeave = (ev: Event | null, segEl: HTMLElement) => {\n    if (this.currentSegEl) {\n      this.currentSegEl = null\n      this.triggerEvent('eventMouseLeave', ev, segEl)\n    }\n  }\n\n  triggerEvent(publicEvName: 'eventMouseEnter' | 'eventMouseLeave', ev: Event | null, segEl: HTMLElement) {\n    let { component } = this\n    let { context } = component\n    let seg = getElSeg(segEl)!\n\n    if (!ev || component.isValidSegDownEl(ev.target as HTMLElement)) {\n      context.emitter.trigger(publicEvName, {\n        el: segEl,\n        event: new EventApi(\n          context,\n          seg.eventRange.def,\n          seg.eventRange.instance,\n        ),\n        jsEvent: ev as MouseEvent, // Is this always a mouse event? See #4655\n        view: context.viewApi,\n      } as EventHoveringArg)\n    }\n  }\n}\n", "import { __assign } from 'tslib'\nimport { ViewContextType, buildViewContext } from './ViewContext'\nimport { ViewSpec } from './structs/view-spec'\nimport { ViewProps } from './View'\nimport { Toolbar } from './Toolbar'\nimport { DateProfileGenerator, DateProfile } from './DateProfileGenerator'\nimport { rangeContainsMarker } from './datelib/date-range'\nimport { memoize } from './util/memoize'\nimport { DateMarker } from './datelib/marker'\nimport { CalendarData } from './reducers/data-types'\nimport { ViewPropsTransformerClass } from './plugin-system-struct'\nimport { createElement, createRef, Fragment, VNode } from './vdom'\nimport { ViewContainer } from './ViewContainer'\nimport {\n  Interaction,\n  InteractionSettingsInput,\n  InteractionClass,\n  parseInteractionSettings,\n  interactionSettingsStore,\n} from './interactions/interaction'\nimport { DateComponent } from './component/DateComponent'\nimport { EventClicking } from './interactions/EventClicking'\nimport { EventHovering } from './interactions/EventHovering'\nimport { getNow } from './reducers/current-date'\nimport { CalendarInteraction } from './calendar-utils'\nimport { DelayedRunner } from './util/DelayedRunner'\nimport { PureComponent } from './vdom-util'\nimport { getUniqueDomId } from './util/dom-manip'\n\nexport interface CalendarContentProps extends CalendarData {\n  forPrint: boolean\n  isHeightAuto: boolean\n}\n\nexport class CalendarContent extends PureComponent<CalendarContentProps> {\n  private buildViewContext = memoize(buildViewContext)\n  private buildViewPropTransformers = memoize(buildViewPropTransformers)\n  private buildToolbarProps = memoize(buildToolbarProps)\n  private headerRef = createRef<Toolbar>()\n  private footerRef = createRef<Toolbar>()\n  private interactionsStore: { [componentUid: string]: Interaction[] } = {}\n  private calendarInteractions: CalendarInteraction[]\n\n  // eslint-disable-next-line\n  state = {\n    viewLabelId: getUniqueDomId(),\n  }\n\n  /*\n  renders INSIDE of an outer div\n  */\n  render() {\n    let { props } = this\n    let { toolbarConfig, options } = props\n\n    let toolbarProps = this.buildToolbarProps(\n      props.viewSpec,\n      props.dateProfile,\n      props.dateProfileGenerator,\n      props.currentDate,\n      getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n      props.viewTitle,\n    )\n\n    let viewVGrow = false\n    let viewHeight: string | number = ''\n    let viewAspectRatio: number | undefined\n\n    if (props.isHeightAuto || props.forPrint) {\n      viewHeight = ''\n    } else if (options.height != null) {\n      viewVGrow = true\n    } else if (options.contentHeight != null) {\n      viewHeight = options.contentHeight\n    } else {\n      viewAspectRatio = Math.max(options.aspectRatio, 0.5) // prevent from getting too tall\n    }\n\n    let viewContext = this.buildViewContext(\n      props.viewSpec,\n      props.viewApi,\n      props.options,\n      props.dateProfileGenerator,\n      props.dateEnv,\n      props.theme,\n      props.pluginHooks,\n      props.dispatch,\n      props.getCurrentData,\n      props.emitter,\n      props.calendarApi,\n      this.registerInteractiveComponent,\n      this.unregisterInteractiveComponent,\n    )\n\n    let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n      ? this.state.viewLabelId\n      : ''\n\n    return (\n      <ViewContextType.Provider value={viewContext}>\n        {toolbarConfig.header && (\n          <Toolbar\n            ref={this.headerRef}\n            extraClassName=\"fc-header-toolbar\"\n            model={toolbarConfig.header}\n            titleId={viewLabelId}\n            {...toolbarProps}\n          />\n        )}\n        <ViewContainer\n          liquid={viewVGrow}\n          height={viewHeight}\n          aspectRatio={viewAspectRatio}\n          labeledById={viewLabelId}\n        >\n          {this.renderView(props)}\n          {this.buildAppendContent()}\n        </ViewContainer>\n        {toolbarConfig.footer && (\n          <Toolbar\n            ref={this.footerRef}\n            extraClassName=\"fc-footer-toolbar\"\n            model={toolbarConfig.footer}\n            titleId=\"\"\n            {...toolbarProps}\n          />\n        )}\n      </ViewContextType.Provider>\n    )\n  }\n\n  componentDidMount() {\n    let { props } = this\n\n    this.calendarInteractions = props.pluginHooks.calendarInteractions\n      .map((CalendarInteractionClass) => new CalendarInteractionClass(props))\n\n    window.addEventListener('resize', this.handleWindowResize)\n\n    let { propSetHandlers } = props.pluginHooks\n    for (let propName in propSetHandlers) {\n      propSetHandlers[propName](props[propName], props)\n    }\n  }\n\n  componentDidUpdate(prevProps: CalendarContentProps) {\n    let { props } = this\n\n    let { propSetHandlers } = props.pluginHooks\n    for (let propName in propSetHandlers) {\n      if (props[propName] !== prevProps[propName]) {\n        propSetHandlers[propName](props[propName], props)\n      }\n    }\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('resize', this.handleWindowResize)\n    this.resizeRunner.clear()\n\n    for (let interaction of this.calendarInteractions) {\n      interaction.destroy()\n    }\n\n    this.props.emitter.trigger('_unmount')\n  }\n\n  buildAppendContent(): VNode {\n    let { props } = this\n\n    let children = props.pluginHooks.viewContainerAppends.map(\n      (buildAppendContent) => buildAppendContent(props),\n    )\n\n    return createElement(Fragment, {}, ...children)\n  }\n\n  renderView(props: CalendarContentProps) {\n    let { pluginHooks } = props\n    let { viewSpec } = props\n\n    let viewProps: ViewProps = {\n      dateProfile: props.dateProfile,\n      businessHours: props.businessHours,\n      eventStore: props.renderableEventStore, // !\n      eventUiBases: props.eventUiBases,\n      dateSelection: props.dateSelection,\n      eventSelection: props.eventSelection,\n      eventDrag: props.eventDrag,\n      eventResize: props.eventResize,\n      isHeightAuto: props.isHeightAuto,\n      forPrint: props.forPrint,\n    }\n\n    let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers)\n\n    for (let transformer of transformers) {\n      __assign(\n        viewProps,\n        transformer.transform(viewProps, props),\n      )\n    }\n\n    let ViewComponent = viewSpec.component\n\n    return (\n      <ViewComponent {...viewProps} />\n    )\n  }\n\n  // Component Registration\n  // -----------------------------------------------------------------------------------------------------------------\n\n  registerInteractiveComponent = (component: DateComponent<any>, settingsInput: InteractionSettingsInput) => {\n    let settings = parseInteractionSettings(component, settingsInput)\n    let DEFAULT_INTERACTIONS: InteractionClass[] = [\n      EventClicking,\n      EventHovering,\n    ]\n    let interactionClasses: InteractionClass[] = DEFAULT_INTERACTIONS.concat(\n      this.props.pluginHooks.componentInteractions,\n    )\n    let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings))\n\n    this.interactionsStore[component.uid] = interactions\n    interactionSettingsStore[component.uid] = settings\n  }\n\n  unregisterInteractiveComponent = (component: DateComponent<any>) => {\n    let listeners = this.interactionsStore[component.uid]\n\n    if (listeners) {\n      for (let listener of listeners) {\n        listener.destroy()\n      }\n      delete this.interactionsStore[component.uid]\n    }\n\n    delete interactionSettingsStore[component.uid]\n  }\n\n  // Resizing\n  // -----------------------------------------------------------------------------------------------------------------\n\n  resizeRunner = new DelayedRunner(() => {\n    this.props.emitter.trigger('_resize', true) // should window resizes be considered \"forced\" ?\n    this.props.emitter.trigger('windowResize', { view: this.props.viewApi })\n  })\n\n  handleWindowResize = (ev: UIEvent) => {\n    let { options } = this.props\n\n    if (\n      options.handleWindowResize &&\n      ev.target === window // avoid jqui events\n    ) {\n      this.resizeRunner.request(options.windowResizeDelay)\n    }\n  }\n}\n\nfunction buildToolbarProps(\n  viewSpec: ViewSpec,\n  dateProfile: DateProfile,\n  dateProfileGenerator: DateProfileGenerator,\n  currentDate: DateMarker,\n  now: DateMarker,\n  title: string,\n) {\n  // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n  let todayInfo = dateProfileGenerator.build(now, undefined, false) // TODO: need `undefined` or else INFINITE LOOP for some reason\n  let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false)\n  let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false)\n\n  return {\n    title,\n    activeButton: viewSpec.type,\n    navUnit: viewSpec.singleUnit,\n    isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n    isPrevEnabled: prevInfo.isValid,\n    isNextEnabled: nextInfo.isValid,\n  }\n}\n\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\n\nfunction buildViewPropTransformers(theClasses: ViewPropsTransformerClass[]) {\n  return theClasses.map((TheClass) => new TheClass())\n}\n", "import { ComponentChildren } from './vdom'\nimport { BaseComponent } from './vdom-util'\nimport { CssDimValue } from './scrollgrid/util'\nimport { CalendarOptions, CalendarListeners } from './options'\nimport { Theme } from './theme/Theme'\nimport { getCanVGrowWithinCell } from './util/table-styling'\nimport { Emitter } from './common/Emitter'\n\nexport interface CalendarRootProps {\n  options: CalendarOptions\n  theme: Theme\n  emitter: Emitter<CalendarListeners>\n  children: (classNames: string[], height: CssDimValue, isHeightAuto: boolean, forPrint: boolean) => ComponentChildren\n}\n\ninterface CalendarRootState {\n  forPrint: boolean\n}\n\nexport class CalendarRoot extends BaseComponent<CalendarRootProps, CalendarRootState> {\n  state = {\n    forPrint: false,\n  }\n\n  render() {\n    let { props } = this\n    let { options } = props\n    let { forPrint } = this.state\n\n    let isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto'\n    let height = (!isHeightAuto && options.height != null) ? options.height : ''\n\n    let classNames: string[] = [\n      'fc',\n      forPrint ? 'fc-media-print' : 'fc-media-screen',\n      `fc-direction-${options.direction}`,\n      props.theme.getClass('root'),\n    ]\n\n    if (!getCanVGrowWithinCell()) {\n      classNames.push('fc-liquid-hack')\n    }\n\n    return props.children(classNames, height, isHeightAuto, forPrint)\n  }\n\n  componentDidMount() {\n    let { emitter } = this.props\n    emitter.on('_beforeprint', this.handleBeforePrint)\n    emitter.on('_afterprint', this.handleAfterPrint)\n  }\n\n  componentWillUnmount() {\n    let { emitter } = this.props\n    emitter.off('_beforeprint', this.handleBeforePrint)\n    emitter.off('_afterprint', this.handleAfterPrint)\n  }\n\n  handleBeforePrint = () => {\n    this.setState({ forPrint: true })\n  }\n\n  handleAfterPrint = () => {\n    this.setState({ forPrint: false })\n  }\n}\n", "import { createFormatter } from '../datelib/formatting'\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nexport function computeFallbackHeaderFormat(datesRepDistinctDays: boolean, dayCnt: number) {\n  // if more than one week row, or if there are a lot of columns with not much space,\n  // put just the day numbers will be in each cell\n  if (!datesRepDistinctDays || dayCnt > 10) {\n    return createFormatter({ weekday: 'short' }) // \"Sat\"\n  }\n\n  if (dayCnt > 1) {\n    return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }) // \"Sat 11/12\"\n  }\n\n  return createFormatter({ weekday: 'long' }) // \"Saturday\"\n}\n", "import { DayHeaderContentArg } from '../render-hook-misc'\n\nexport const CLASS_NAME = 'fc-col-header-cell' // do the cushion too? no\n\nexport function renderInner(hookProps: DayHeaderContentArg) {\n  return hookProps.text\n}\n", "import { DateRange } from '../datelib/date-range'\nimport { getDayClassNames, getDateMeta } from '../component/date-rendering'\nimport { DateMarker } from '../datelib/marker'\nimport { createElement } from '../vdom'\nimport { DateFormatter } from '../datelib/DateFormatter'\nimport { formatDayString } from '../datelib/formatting-utils'\nimport { BaseComponent } from '../vdom-util'\nimport { RenderHook } from './render-hook'\nimport { buildNavLinkAttrs } from './nav-link'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { DayHeaderContentArg } from '../render-hook-misc'\nimport { Dictionary } from '../options'\nimport { CLASS_NAME, renderInner } from './table-cell-util'\n\nexport interface TableDateCellProps {\n  date: DateMarker\n  dateProfile: DateProfile\n  todayRange: DateRange\n  colCnt: number\n  dayHeaderFormat: DateFormatter\n  colSpan?: number\n  isSticky?: boolean // TODO: get this outta here somehow\n  extraDataAttrs?: Dictionary\n  extraHookProps?: Dictionary\n}\n\nexport class TableDateCell extends BaseComponent<TableDateCellProps> { // BAD name for this class now. used in the Header\n  render() {\n    let { dateEnv, options, theme, viewApi } = this.context\n    let { props } = this\n    let { date, dateProfile } = props\n    let dayMeta = getDateMeta(date, props.todayRange, null, dateProfile)\n\n    let classNames = [CLASS_NAME].concat(\n      getDayClassNames(dayMeta, theme),\n    )\n    let text = dateEnv.format(date, props.dayHeaderFormat)\n\n    // if colCnt is 1, we are already in a day-view and don't need a navlink\n    let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n      ? buildNavLinkAttrs(this.context, date)\n      : {}\n\n    let hookProps: DayHeaderContentArg = {\n      date: dateEnv.toDate(date),\n      view: viewApi,\n      ...props.extraHookProps,\n      text,\n      ...dayMeta,\n    }\n\n    return (\n      <RenderHook\n        hookProps={hookProps}\n        classNames={options.dayHeaderClassNames}\n        content={options.dayHeaderContent}\n        defaultContent={renderInner}\n        didMount={options.dayHeaderDidMount}\n        willUnmount={options.dayHeaderWillUnmount}\n      >\n        {(rootElRef, customClassNames, innerElRef, innerContent) => (\n          <th\n            ref={rootElRef}\n            role=\"columnheader\"\n            className={classNames.concat(customClassNames).join(' ')}\n            data-date={!dayMeta.isDisabled ? formatDayString(date) : undefined}\n            colSpan={props.colSpan}\n            {...props.extraDataAttrs}\n          >\n            <div className=\"fc-scrollgrid-sync-inner\">\n              {!dayMeta.isDisabled && (\n                <a\n                  ref={innerElRef}\n                  className={[\n                    'fc-col-header-cell-cushion',\n                    props.isSticky ? 'fc-sticky' : '',\n                  ].join(' ')}\n                  {...navLinkAttrs}\n                >\n                  {innerContent}\n                </a>\n              )}\n            </div>\n          </th>\n        )}\n      </RenderHook>\n    )\n  }\n}\n", "import { getDayClassNames, DateMeta } from '../component/date-rendering'\nimport { addDays } from '../datelib/marker'\nimport { createElement } from '../vdom'\nimport { DateFormatter } from '../datelib/DateFormatter'\nimport { BaseComponent } from '../vdom-util'\nimport { RenderHook } from './render-hook'\nimport { Dictionary } from '../options'\nimport { CLASS_NAME, renderInner } from './table-cell-util'\nimport { DayHeaderContentArg } from '../render-hook-misc'\nimport { createFormatter } from '../datelib/formatting'\n\nexport interface TableDowCellProps {\n  dow: number\n  dayHeaderFormat: DateFormatter\n  colSpan?: number\n  isSticky?: boolean // TODO: get this outta here somehow\n  extraHookProps?: Dictionary\n  extraDataAttrs?: Dictionary\n  extraClassNames?: string[]\n}\n\nconst WEEKDAY_FORMAT = createFormatter({ weekday: 'long' })\n\nexport class TableDowCell extends BaseComponent<TableDowCellProps> {\n  render() {\n    let { props } = this\n    let { dateEnv, theme, viewApi, options } = this.context\n    let date = addDays(new Date(259200000), props.dow) // start with Sun, 04 Jan 1970 00:00:00 GMT\n    let dateMeta: DateMeta = {\n      dow: props.dow,\n      isDisabled: false,\n      isFuture: false,\n      isPast: false,\n      isToday: false,\n      isOther: false,\n    }\n    let classNames = [CLASS_NAME].concat(\n      getDayClassNames(dateMeta, theme),\n      props.extraClassNames || [],\n    )\n    let text = dateEnv.format(date, props.dayHeaderFormat)\n    let hookProps: DayHeaderContentArg = { // TODO: make this public?\n      date,\n      ...dateMeta,\n      view: viewApi,\n      ...props.extraHookProps,\n      text,\n    }\n\n    return (\n      <RenderHook\n        hookProps={hookProps}\n        classNames={options.dayHeaderClassNames}\n        content={options.dayHeaderContent}\n        defaultContent={renderInner}\n        didMount={options.dayHeaderDidMount}\n        willUnmount={options.dayHeaderWillUnmount}\n      >\n        {(rootElRef, customClassNames, innerElRef, innerContent) => (\n          <th\n            ref={rootElRef}\n            role=\"columnheader\"\n            className={classNames.concat(customClassNames).join(' ')}\n            colSpan={props.colSpan}\n            {...props.extraDataAttrs}\n          >\n            <div className=\"fc-scrollgrid-sync-inner\">\n              <a\n                aria-label={dateEnv.format(date, WEEKDAY_FORMAT)}\n                className={[\n                  'fc-col-header-cell-cushion',\n                  props.isSticky ? 'fc-sticky' : '',\n                ].join(' ')}\n                ref={innerElRef}\n              >\n                {innerContent}\n              </a>\n            </div>\n          </th>\n        )}\n      </RenderHook>\n    )\n  }\n}\n", "import { DateMarker, addMs, startOfDay, addDays } from './datelib/marker'\nimport { createDuration } from './datelib/duration'\nimport { ViewContext, ViewContextType } from './ViewContext'\nimport { ComponentChildren, Component } from './vdom'\nimport { DateRange } from './datelib/date-range'\nimport { getNow } from './reducers/current-date'\n\nexport interface NowTimerProps {\n  unit: string // TODO: add type of unit\n  children: (now: DateMarker, todayRange: DateRange) => ComponentChildren\n}\n\ninterface NowTimerState {\n  nowDate: DateMarker\n  todayRange: DateRange\n}\n\nexport class NowTimer extends Component<NowTimerProps, NowTimerState> {\n  static contextType: any = ViewContextType\n  context: ViewContext // do this for all components that use the context!!!\n  initialNowDate: DateMarker\n  initialNowQueriedMs: number\n  timeoutId: any\n\n  constructor(props: NowTimerProps, context: ViewContext) {\n    super(props, context)\n\n    this.initialNowDate = getNow(context.options.now, context.dateEnv)\n    this.initialNowQueriedMs = new Date().valueOf()\n\n    this.state = this.computeTiming().currentState\n  }\n\n  render() {\n    let { props, state } = this\n    return props.children(state.nowDate, state.todayRange)\n  }\n\n  componentDidMount() {\n    this.setTimeout()\n  }\n\n  componentDidUpdate(prevProps: NowTimerProps) {\n    if (prevProps.unit !== this.props.unit) {\n      this.clearTimeout()\n      this.setTimeout()\n    }\n  }\n\n  componentWillUnmount() {\n    this.clearTimeout()\n  }\n\n  private computeTiming() {\n    let { props, context } = this\n    let unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs)\n    let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit)\n    let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit))\n    let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf()\n\n    // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n    // ensure no longer than a day\n    waitMs = Math.min(1000 * 60 * 60 * 24, waitMs)\n\n    return {\n      currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) } as NowTimerState,\n      nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) } as NowTimerState,\n      waitMs,\n    }\n  }\n\n  private setTimeout() {\n    let { nextState, waitMs } = this.computeTiming()\n\n    this.timeoutId = setTimeout(() => {\n      this.setState(nextState, () => {\n        this.setTimeout()\n      })\n    }, waitMs)\n  }\n\n  private clearTimeout() {\n    if (this.timeoutId) {\n      clearTimeout(this.timeoutId)\n    }\n  }\n}\n\nfunction buildDayRange(date: DateMarker): DateRange { // TODO: make this a general util\n  let start = startOfDay(date)\n  let end = addDays(start, 1)\n\n  return { start, end }\n}\n", "import { BaseComponent } from '../vdom-util'\nimport { DateMarker } from '../datelib/marker'\nimport { computeFallbackHeaderFormat } from './table-utils'\nimport { VNode, createElement } from '../vdom'\nimport { TableDateCell } from './TableDateCell'\nimport { TableDowCell } from './TableDowCell'\nimport { NowTimer } from '../NowTimer'\nimport { DateRange } from '../datelib/date-range'\nimport { memoize } from '../util/memoize'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { DateFormatter } from '../datelib/DateFormatter'\n\nexport interface DayHeaderProps {\n  dateProfile: DateProfile\n  dates: DateMarker[]\n  datesRepDistinctDays: boolean\n  renderIntro?: (rowKey: string) => VNode\n}\n\nexport class DayHeader extends BaseComponent<DayHeaderProps> { // TODO: rename to DayHeaderTr?\n  createDayHeaderFormatter = memoize(createDayHeaderFormatter)\n\n  render() {\n    let { context } = this\n    let { dates, dateProfile, datesRepDistinctDays, renderIntro } = this.props\n\n    let dayHeaderFormat = this.createDayHeaderFormatter(\n      context.options.dayHeaderFormat,\n      datesRepDistinctDays,\n      dates.length,\n    )\n\n    return (\n      <NowTimer unit=\"day\">\n        {(nowDate: DateMarker, todayRange: DateRange) => (\n          <tr role=\"row\">\n            {renderIntro && renderIntro('day')}\n            {dates.map((date) => (\n              datesRepDistinctDays ? (\n                <TableDateCell\n                  key={date.toISOString()}\n                  date={date}\n                  dateProfile={dateProfile}\n                  todayRange={todayRange}\n                  colCnt={dates.length}\n                  dayHeaderFormat={dayHeaderFormat}\n                />\n              ) : (\n                <TableDowCell\n                  key={date.getUTCDay()}\n                  dow={date.getUTCDay()}\n                  dayHeaderFormat={dayHeaderFormat}\n                />\n              )\n            ))}\n          </tr>\n        )}\n      </NowTimer>\n    )\n  }\n}\n\nfunction createDayHeaderFormatter(explicitFormat: DateFormatter, datesRepDistinctDays, dateCnt) {\n  return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt)\n}\n", "import { DateProfileGenerator } from '../DateProfileGenerator'\nimport { DateMarker, addDays, diffDays } from '../datelib/marker'\nimport { DateRange } from '../datelib/date-range'\n\nexport interface DaySeriesSeg {\n  firstIndex: number\n  lastIndex: number\n  isStart: boolean\n  isEnd: boolean\n}\n\nexport class DaySeriesModel {\n  cnt: number\n  dates: DateMarker[] // whole-day dates for each column. left to right\n  indices: number[] // for each day from start, the offset\n\n  constructor(range: DateRange, dateProfileGenerator: DateProfileGenerator) {\n    let date: DateMarker = range.start\n    let { end } = range\n    let indices: number[] = []\n    let dates: DateMarker[] = []\n    let dayIndex = -1\n\n    while (date < end) { // loop each day from start to end\n      if (dateProfileGenerator.isHiddenDay(date)) {\n        indices.push(dayIndex + 0.5) // mark that it's between indices\n      } else {\n        dayIndex += 1\n        indices.push(dayIndex)\n        dates.push(date)\n      }\n      date = addDays(date, 1)\n    }\n\n    this.dates = dates\n    this.indices = indices\n    this.cnt = dates.length\n  }\n\n  sliceRange(range: DateRange): DaySeriesSeg | null {\n    let firstIndex = this.getDateDayIndex(range.start) // inclusive first index\n    let lastIndex = this.getDateDayIndex(addDays(range.end, -1)) // inclusive last index\n\n    let clippedFirstIndex = Math.max(0, firstIndex)\n    let clippedLastIndex = Math.min(this.cnt - 1, lastIndex)\n\n    // deal with in-between indices\n    clippedFirstIndex = Math.ceil(clippedFirstIndex) // in-between starts round to next cell\n    clippedLastIndex = Math.floor(clippedLastIndex) // in-between ends round to prev cell\n\n    if (clippedFirstIndex <= clippedLastIndex) {\n      return {\n        firstIndex: clippedFirstIndex,\n        lastIndex: clippedLastIndex,\n        isStart: firstIndex === clippedFirstIndex,\n        isEnd: lastIndex === clippedLastIndex,\n      }\n    }\n    return null\n  }\n\n  // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n  // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n  // If before the first offset, returns a negative number.\n  // If after the last offset, returns an offset past the last cell offset.\n  // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n  private getDateDayIndex(date: DateMarker) {\n    let { indices } = this\n    let dayOffset = Math.floor(diffDays(this.dates[0], date))\n\n    if (dayOffset < 0) {\n      return indices[0] - 1\n    }\n\n    if (dayOffset >= indices.length) {\n      return indices[indices.length - 1] + 1\n    }\n\n    return indices[dayOffset]\n  }\n}\n", "import { DaySeriesModel } from './DaySeriesModel'\nimport { DateRange } from '../datelib/date-range'\nimport { DateMarker } from '../datelib/marker'\nimport { Seg } from '../component/DateComponent'\nimport { Dictionary } from '../options'\n\nexport interface DayTableSeg extends Seg {\n  row: number\n  firstCol: number\n  lastCol: number\n}\n\nexport interface DayTableCell {\n  key: string // probably just the serialized date, but could be other metadata if this col is specific to another entity\n  date: DateMarker\n  extraHookProps?: Dictionary\n  extraDataAttrs?: Dictionary\n  extraClassNames?: string[]\n  extraDateSpan?: Dictionary\n}\n\nexport class DayTableModel {\n  rowCnt: number\n  colCnt: number\n  cells: DayTableCell[][]\n  headerDates: DateMarker[]\n\n  private daySeries: DaySeriesModel\n\n  constructor(daySeries: DaySeriesModel, breakOnWeeks: boolean) {\n    let { dates } = daySeries\n    let daysPerRow\n    let firstDay\n    let rowCnt\n\n    if (breakOnWeeks) {\n      // count columns until the day-of-week repeats\n      firstDay = dates[0].getUTCDay()\n      for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n        if (dates[daysPerRow].getUTCDay() === firstDay) {\n          break\n        }\n      }\n      rowCnt = Math.ceil(dates.length / daysPerRow)\n    } else {\n      rowCnt = 1\n      daysPerRow = dates.length\n    }\n\n    this.rowCnt = rowCnt\n    this.colCnt = daysPerRow\n    this.daySeries = daySeries\n    this.cells = this.buildCells()\n    this.headerDates = this.buildHeaderDates()\n  }\n\n  private buildCells() {\n    let rows = []\n\n    for (let row = 0; row < this.rowCnt; row += 1) {\n      let cells = []\n\n      for (let col = 0; col < this.colCnt; col += 1) {\n        cells.push(\n          this.buildCell(row, col),\n        )\n      }\n\n      rows.push(cells)\n    }\n\n    return rows\n  }\n\n  private buildCell(row, col): DayTableCell {\n    let date = this.daySeries.dates[row * this.colCnt + col]\n    return {\n      key: date.toISOString(),\n      date,\n    }\n  }\n\n  private buildHeaderDates() {\n    let dates = []\n\n    for (let col = 0; col < this.colCnt; col += 1) {\n      dates.push(this.cells[0][col].date)\n    }\n\n    return dates\n  }\n\n  sliceRange(range: DateRange): DayTableSeg[] {\n    let { colCnt } = this\n    let seriesSeg = this.daySeries.sliceRange(range)\n    let segs: DayTableSeg[] = []\n\n    if (seriesSeg) {\n      let { firstIndex, lastIndex } = seriesSeg\n      let index = firstIndex\n\n      while (index <= lastIndex) {\n        let row = Math.floor(index / colCnt)\n        let nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1)\n\n        segs.push({\n          row,\n          firstCol: index % colCnt,\n          lastCol: (nextIndex - 1) % colCnt,\n          isStart: seriesSeg.isStart && index === firstIndex,\n          isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n        })\n\n        index = nextIndex\n      }\n    }\n\n    return segs\n  }\n}\n", "import { DateRange } from '../datelib/date-range'\nimport { EventStore } from '../structs/event-store'\nimport { EventUiHash } from '../component/event-ui'\nimport { sliceEventStore, EventRenderRange } from '../component/event-rendering'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Seg, EventSegUiInteractionState } from '../component/DateComponent' // TODO: rename EventSegUiInteractionState, move here\nimport { DateSpan, fabricateEventRange } from '../structs/date-span'\nimport { EventInteractionState } from '../interactions/event-interaction-state'\nimport { Duration } from '../datelib/duration'\nimport { memoize } from '../util/memoize'\nimport { DateMarker, addMs, addDays } from '../datelib/marker'\nimport { CalendarContext } from '../CalendarContext'\nimport { expandRecurring } from '../structs/recurring-event'\n\nexport interface SliceableProps {\n  dateSelection: DateSpan\n  businessHours: EventStore\n  eventStore: EventStore\n  eventDrag: EventInteractionState | null\n  eventResize: EventInteractionState | null\n  eventSelection: string\n  eventUiBases: EventUiHash\n}\n\nexport interface SlicedProps<SegType extends Seg> {\n  dateSelectionSegs: SegType[]\n  businessHourSegs: SegType[]\n  fgEventSegs: SegType[]\n  bgEventSegs: SegType[]\n  eventDrag: EventSegUiInteractionState | null\n  eventResize: EventSegUiInteractionState | null\n  eventSelection: string\n}\n\nexport abstract class Slicer<SegType extends Seg, ExtraArgs extends any[] = []> {\n  private sliceBusinessHours = memoize(this._sliceBusinessHours)\n  private sliceDateSelection = memoize(this._sliceDateSpan)\n  private sliceEventStore = memoize(this._sliceEventStore)\n  private sliceEventDrag = memoize(this._sliceInteraction)\n  private sliceEventResize = memoize(this._sliceInteraction)\n\n  abstract sliceRange(dateRange: DateRange, ...extraArgs: ExtraArgs): SegType[]\n  protected forceDayIfListItem = false // hack\n\n  sliceProps(\n    props: SliceableProps,\n    dateProfile: DateProfile,\n    nextDayThreshold: Duration | null,\n    context: CalendarContext,\n    ...extraArgs: ExtraArgs\n  ): SlicedProps<SegType> {\n    let { eventUiBases } = props\n    let eventSegs = this.sliceEventStore(props.eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs)\n\n    return {\n      dateSelectionSegs: this.sliceDateSelection(props.dateSelection, eventUiBases, context, ...extraArgs),\n      businessHourSegs: this.sliceBusinessHours(props.businessHours, dateProfile, nextDayThreshold, context, ...extraArgs),\n      fgEventSegs: eventSegs.fg,\n      bgEventSegs: eventSegs.bg,\n      eventDrag: this.sliceEventDrag(props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n      eventResize: this.sliceEventResize(props.eventResize, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n      eventSelection: props.eventSelection,\n    } // TODO: give interactionSegs?\n  }\n\n  sliceNowDate( // does not memoize\n    date: DateMarker,\n    context: CalendarContext,\n    ...extraArgs: ExtraArgs\n  ): SegType[] {\n    return this._sliceDateSpan(\n      { range: { start: date, end: addMs(date, 1) }, allDay: false }, // add 1 ms, protect against null range\n      {},\n      context,\n      ...extraArgs,\n    )\n  }\n\n  private _sliceBusinessHours(\n    businessHours: EventStore,\n    dateProfile: DateProfile,\n    nextDayThreshold: Duration | null,\n    context: CalendarContext,\n    ...extraArgs: ExtraArgs\n  ): SegType[] {\n    if (!businessHours) {\n      return []\n    }\n\n    return this._sliceEventStore(\n      expandRecurring(\n        businessHours,\n        computeActiveRange(dateProfile, Boolean(nextDayThreshold)),\n        context,\n      ),\n      {},\n      dateProfile,\n      nextDayThreshold,\n      ...extraArgs,\n    ).bg\n  }\n\n  private _sliceEventStore(\n    eventStore: EventStore,\n    eventUiBases: EventUiHash,\n    dateProfile: DateProfile,\n    nextDayThreshold: Duration | null,\n    ...extraArgs: ExtraArgs\n  ): { bg: SegType[], fg: SegType[] } {\n    if (eventStore) {\n      let rangeRes = sliceEventStore(\n        eventStore,\n        eventUiBases,\n        computeActiveRange(dateProfile, Boolean(nextDayThreshold)),\n        nextDayThreshold,\n      )\n\n      return {\n        bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n        fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n      }\n    }\n    return { bg: [], fg: [] }\n  }\n\n  private _sliceInteraction(\n    interaction: EventInteractionState,\n    eventUiBases: EventUiHash,\n    dateProfile: DateProfile,\n    nextDayThreshold: Duration | null,\n    ...extraArgs: ExtraArgs\n  ): EventSegUiInteractionState {\n    if (!interaction) {\n      return null\n    }\n\n    let rangeRes = sliceEventStore(\n      interaction.mutatedEvents,\n      eventUiBases,\n      computeActiveRange(dateProfile, Boolean(nextDayThreshold)),\n      nextDayThreshold,\n    )\n\n    return {\n      segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n      affectedInstances: interaction.affectedEvents.instances,\n      isEvent: interaction.isEvent,\n    }\n  }\n\n  private _sliceDateSpan(\n    dateSpan: DateSpan,\n    eventUiBases: EventUiHash,\n    context: CalendarContext,\n    ...extraArgs: ExtraArgs\n  ): SegType[] {\n    if (!dateSpan) {\n      return []\n    }\n\n    let eventRange = fabricateEventRange(dateSpan, eventUiBases, context)\n    let segs = this.sliceRange(dateSpan.range, ...extraArgs)\n\n    for (let seg of segs) {\n      seg.eventRange = eventRange\n    }\n\n    return segs\n  }\n\n  /*\n  \"complete\" seg means it has component and eventRange\n  */\n  private sliceEventRanges(\n    eventRanges: EventRenderRange[],\n    extraArgs: ExtraArgs,\n  ): SegType[] {\n    let segs: SegType[] = []\n\n    for (let eventRange of eventRanges) {\n      segs.push(...this.sliceEventRange(eventRange, extraArgs))\n    }\n\n    return segs\n  }\n\n  /*\n  \"complete\" seg means it has component and eventRange\n  */\n  private sliceEventRange(\n    eventRange: EventRenderRange,\n    extraArgs: ExtraArgs,\n  ): SegType[] {\n    let dateRange = eventRange.range\n\n    // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n    if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n      dateRange = {\n        start: dateRange.start,\n        end: addDays(dateRange.start, 1),\n      }\n    }\n\n    let segs = this.sliceRange(dateRange, ...extraArgs)\n\n    for (let seg of segs) {\n      seg.eventRange = eventRange\n      seg.isStart = eventRange.isStart && seg.isStart\n      seg.isEnd = eventRange.isEnd && seg.isEnd\n    }\n\n    return segs\n  }\n}\n\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile: DateProfile, isComponentAllDay: boolean): DateRange {\n  let range = dateProfile.activeRange\n\n  if (isComponentAllDay) {\n    return range\n  }\n\n  return {\n    start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n    end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n  }\n}\n", "import { EventStore, filterEventStoreDefs } from './structs/event-store'\nimport { DateSpan } from './structs/date-span'\nimport { rangeContainsRange, rangesIntersect, DateRange, OpenDateRange } from './datelib/date-range'\nimport { EventApi } from './api/EventApi'\nimport { compileEventUis } from './component/event-rendering'\nimport { excludeInstances } from './reducers/eventStore'\nimport { EventInteractionState } from './interactions/event-interaction-state'\nimport { SplittableProps } from './component/event-splitting'\nimport { mapHash } from './util/object'\nimport { CalendarContext } from './CalendarContext'\nimport { buildDateSpanApiWithContext } from './calendar-utils'\nimport { Constraint } from './structs/constraint'\nimport { expandRecurring } from './structs/recurring-event'\nimport { DateProfile } from './DateProfileGenerator'\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\n\nexport function isInteractionValid(\n  interaction: EventInteractionState,\n  dateProfile: DateProfile,\n  context: CalendarContext,\n) {\n  let { instances } = interaction.mutatedEvents\n  for (let instanceId in instances) {\n    if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n      return false\n    }\n  }\n  return isNewPropsValid({ eventDrag: interaction }, context) // HACK: the eventDrag props is used for ALL interactions\n}\n\nexport function isDateSelectionValid(\n  dateSelection: DateSpan,\n  dateProfile: DateProfile,\n  context: CalendarContext,\n) {\n  if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n    return false\n  }\n  return isNewPropsValid({ dateSelection }, context)\n}\n\nfunction isNewPropsValid(newProps, context: CalendarContext) {\n  let calendarState = context.getCurrentData()\n\n  let props = {\n    businessHours: calendarState.businessHours,\n    dateSelection: '',\n    eventStore: calendarState.eventStore,\n    eventUiBases: calendarState.eventUiBases,\n    eventSelection: '',\n    eventDrag: null,\n    eventResize: null,\n    ...newProps,\n  }\n\n  return (context.pluginHooks.isPropsValid || isPropsValid)(props, context)\n}\n\nexport function isPropsValid(state: SplittableProps, context: CalendarContext, dateSpanMeta = {}, filterConfig?): boolean {\n  if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n    return false\n  }\n\n  if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n    return false\n  }\n\n  return true\n}\n\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\n\nfunction isInteractionPropsValid(state: SplittableProps, context: CalendarContext, dateSpanMeta: any, filterConfig): boolean {\n  let currentState = context.getCurrentData()\n  let interaction = state.eventDrag // HACK: the eventDrag props is used for ALL interactions\n\n  let subjectEventStore = interaction.mutatedEvents\n  let subjectDefs = subjectEventStore.defs\n  let subjectInstances = subjectEventStore.instances\n  let subjectConfigs = compileEventUis(\n    subjectDefs,\n    interaction.isEvent ?\n      state.eventUiBases :\n      { '': currentState.selectionConfig }, // if not a real event, validate as a selection\n  )\n\n  if (filterConfig) {\n    subjectConfigs = mapHash(subjectConfigs, filterConfig)\n  }\n\n  // exclude the subject events. TODO: exclude defs too?\n  let otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances)\n\n  let otherDefs = otherEventStore.defs\n  let otherInstances = otherEventStore.instances\n  let otherConfigs = compileEventUis(otherDefs, state.eventUiBases)\n\n  for (let subjectInstanceId in subjectInstances) {\n    let subjectInstance = subjectInstances[subjectInstanceId]\n    let subjectRange = subjectInstance.range\n    let subjectConfig = subjectConfigs[subjectInstance.defId]\n    let subjectDef = subjectDefs[subjectInstance.defId]\n\n    // constraint\n    if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n      return false\n    }\n\n    // overlap\n\n    let { eventOverlap } = context.options\n    let eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null\n\n    for (let otherInstanceId in otherInstances) {\n      let otherInstance = otherInstances[otherInstanceId]\n\n      // intersect! evaluate\n      if (rangesIntersect(subjectRange, otherInstance.range)) {\n        let otherOverlap = otherConfigs[otherInstance.defId].overlap\n\n        // consider the other event's overlap. only do this if the subject event is a \"real\" event\n        if (otherOverlap === false && interaction.isEvent) {\n          return false\n        }\n\n        if (subjectConfig.overlap === false) {\n          return false\n        }\n\n        if (eventOverlapFunc && !eventOverlapFunc(\n          new EventApi(context, otherDefs[otherInstance.defId], otherInstance), // still event\n          new EventApi(context, subjectDef, subjectInstance), // moving event\n        )) {\n          return false\n        }\n      }\n    }\n\n    // allow (a function)\n\n    let calendarEventStore = currentState.eventStore // need global-to-calendar, not local to component (splittable)state\n\n    for (let subjectAllow of subjectConfig.allows) {\n      let subjectDateSpan: DateSpan = {\n        ...dateSpanMeta,\n        range: subjectInstance.range,\n        allDay: subjectDef.allDay,\n      }\n\n      let origDef = calendarEventStore.defs[subjectDef.defId]\n      let origInstance = calendarEventStore.instances[subjectInstanceId]\n      let eventApi\n\n      if (origDef) { // was previously in the calendar\n        eventApi = new EventApi(context, origDef, origInstance)\n      } else { // was an external event\n        eventApi = new EventApi(context, subjectDef) // no instance, because had no dates\n      }\n\n      if (!subjectAllow(\n        buildDateSpanApiWithContext(subjectDateSpan, context),\n        eventApi,\n      )) {\n        return false\n      }\n    }\n  }\n\n  return true\n}\n\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\n\nfunction isDateSelectionPropsValid(state: SplittableProps, context: CalendarContext, dateSpanMeta: any, filterConfig): boolean {\n  let relevantEventStore = state.eventStore\n  let relevantDefs = relevantEventStore.defs\n  let relevantInstances = relevantEventStore.instances\n\n  let selection = state.dateSelection\n  let selectionRange = selection.range\n  let { selectionConfig } = context.getCurrentData()\n\n  if (filterConfig) {\n    selectionConfig = filterConfig(selectionConfig)\n  }\n\n  // constraint\n  if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n    return false\n  }\n\n  // overlap\n\n  let { selectOverlap } = context.options\n  let selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null\n\n  for (let relevantInstanceId in relevantInstances) {\n    let relevantInstance = relevantInstances[relevantInstanceId]\n\n    // intersect! evaluate\n    if (rangesIntersect(selectionRange, relevantInstance.range)) {\n      if (selectionConfig.overlap === false) {\n        return false\n      }\n\n      if (selectOverlapFunc && !selectOverlapFunc(\n        new EventApi(context, relevantDefs[relevantInstance.defId], relevantInstance),\n        null,\n      )) {\n        return false\n      }\n    }\n  }\n\n  // allow (a function)\n  for (let selectionAllow of selectionConfig.allows) {\n    let fullDateSpan = { ...dateSpanMeta, ...selection }\n\n    if (!selectionAllow(\n      buildDateSpanApiWithContext(fullDateSpan, context),\n      null,\n    )) {\n      return false\n    }\n  }\n\n  return true\n}\n\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\n\nfunction allConstraintsPass(\n  constraints: Constraint[],\n  subjectRange: DateRange,\n  otherEventStore: EventStore,\n  businessHoursUnexpanded: EventStore,\n  context: CalendarContext,\n): boolean {\n  for (let constraint of constraints) {\n    if (!anyRangesContainRange(\n      constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context),\n      subjectRange,\n    )) {\n      return false\n    }\n  }\n\n  return true\n}\n\nfunction constraintToRanges(\n  constraint: Constraint,\n  subjectRange: DateRange, // for expanding a recurring constraint, or expanding business hours\n  otherEventStore: EventStore, // for if constraint is an even group ID\n  businessHoursUnexpanded: EventStore, // for if constraint is 'businessHours'\n  context: CalendarContext, // for expanding businesshours\n): OpenDateRange[] {\n  if (constraint === 'businessHours') {\n    return eventStoreToRanges(\n      expandRecurring(businessHoursUnexpanded, subjectRange, context),\n    )\n  }\n\n  if (typeof constraint === 'string') { // an group ID\n    return eventStoreToRanges(\n      filterEventStoreDefs(otherEventStore, (eventDef) => eventDef.groupId === constraint),\n    )\n  }\n\n  if (typeof constraint === 'object' && constraint) { // non-null object\n    return eventStoreToRanges(\n      expandRecurring(constraint, subjectRange, context),\n    )\n  }\n\n  return [] // if it's false\n}\n\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore: EventStore): DateRange[] {\n  let { instances } = eventStore\n  let ranges: DateRange[] = []\n\n  for (let instanceId in instances) {\n    ranges.push(instances[instanceId].range)\n  }\n\n  return ranges\n}\n\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges: DateRange[], innerRange: DateRange): boolean {\n  for (let outerRange of outerRanges) {\n    if (rangeContainsRange(outerRange, innerRange)) {\n      return true\n    }\n  }\n\n  return false\n}\n", "import { createElement, ComponentChildren, Ref } from '../vdom'\nimport { BaseComponent, setRef } from '../vdom-util'\nimport { CssDimValue, ScrollerLike } from './util'\n\nexport type OverflowValue = 'auto' | 'hidden' | 'scroll' | 'visible'\n\nexport interface ScrollerProps {\n  overflowX: OverflowValue\n  overflowY: OverflowValue\n  overcomeLeft?: number\n  overcomeRight?: number\n  overcomeBottom?: number\n  maxHeight?: CssDimValue\n  liquid?: boolean\n  liquidIsAbsolute?: boolean\n  children?: ComponentChildren\n  elRef?: Ref<HTMLElement>\n}\n\nconst VISIBLE_HIDDEN_RE = /^(visible|hidden)$/\n\nexport class Scroller extends BaseComponent<ScrollerProps> implements ScrollerLike {\n  private el: HTMLElement // TODO: just use this.base?\n\n  render() {\n    let { props } = this\n    let { liquid, liquidIsAbsolute } = props\n    let isAbsolute = liquid && liquidIsAbsolute\n    let className = ['fc-scroller']\n\n    if (liquid) {\n      if (liquidIsAbsolute) {\n        className.push('fc-scroller-liquid-absolute')\n      } else {\n        className.push('fc-scroller-liquid')\n      }\n    }\n\n    return (\n      <div\n        ref={this.handleEl}\n        className={className.join(' ')}\n        style={{\n          overflowX: props.overflowX,\n          overflowY: props.overflowY,\n          left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n          right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n          bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n          marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n          marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n          marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n          maxHeight: props.maxHeight || '',\n        }}\n      >\n        {props.children}\n      </div>\n    )\n  }\n\n  handleEl = (el: HTMLElement) => {\n    this.el = el\n    setRef(this.props.elRef, el)\n  }\n\n  needsXScrolling() {\n    if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n      return false\n    }\n\n    // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n    // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n    // inner-child margins and absolute positioning\n\n    let { el } = this\n    let realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth()\n    let { children } = el\n\n    for (let i = 0; i < children.length; i += 1) {\n      let childEl = children[i]\n\n      if (childEl.getBoundingClientRect().width > realClientWidth) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  needsYScrolling() {\n    if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n      return false\n    }\n\n    // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n    // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n    // inner-child margins and absolute positioning\n\n    let { el } = this\n    let realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth()\n    let { children } = el\n\n    for (let i = 0; i < children.length; i += 1) {\n      let childEl = children[i]\n\n      if (childEl.getBoundingClientRect().height > realClientHeight) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  getXScrollbarWidth() {\n    if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n      return 0\n    }\n    return this.el.offsetHeight - this.el.clientHeight // only works because we guarantee no borders. TODO: add to CSS with important?\n  }\n\n  getYScrollbarWidth() {\n    if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n      return 0\n    }\n    return this.el.offsetWidth - this.el.clientWidth // only works because we guarantee no borders. TODO: add to CSS with important?\n  }\n}\n", "import { hashValuesToArray, collectFromHash } from './object'\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nexport class RefMap<RefType> {\n  public currentMap: { [key: string]: RefType } = {}\n  private depths: { [key: string]: number } = {}\n  private callbackMap: { [key: string]: (val: RefType | null) => void } = {}\n\n  constructor(public masterCallback?: (val: RefType | null, key: string) => void) {\n  }\n\n  createRef(key: string | number) {\n    let refCallback = this.callbackMap[key]\n\n    if (!refCallback) {\n      refCallback = this.callbackMap[key] = (val: RefType | null) => {\n        this.handleValue(val, String(key))\n      }\n    }\n\n    return refCallback\n  }\n\n  handleValue = (val: RefType | null, key: string) => { // bind in case users want to pass it around\n    let { depths, currentMap } = this\n    let removed = false\n    let added = false\n\n    if (val !== null) {\n      // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n      removed = (key in currentMap)\n\n      currentMap[key] = val\n      depths[key] = (depths[key] || 0) + 1\n      added = true\n    } else {\n      depths[key] -= 1\n\n      if (!depths[key]) {\n        delete currentMap[key]\n        delete this.callbackMap[key]\n        removed = true\n      }\n    }\n\n    if (this.masterCallback) {\n      if (removed) {\n        this.masterCallback(null, String(key))\n      }\n      if (added) {\n        this.masterCallback(val, String(key))\n      }\n    }\n  }\n\n  // TODO: check callers that don't care about order. should use getAll instead\n  // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n  // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n  collect(\n    startIndex?: number,\n    endIndex?: number,\n    step?: number,\n  ) {\n    return collectFromHash(this.currentMap, startIndex, endIndex, step)\n  }\n\n  getAll(): RefType[] { // returns in no partical order!\n    return hashValuesToArray(this.currentMap)\n  }\n}\n", "import { VNode, createElement, Ref } from '../vdom'\nimport { findElements } from '../util/dom-manip'\nimport { ViewContext } from '../ViewContext'\nimport { computeSmallestCellWidth } from '../util/misc'\nimport { isPropsEqual } from '../util/object'\nimport { isArraysEqual } from '../util/array'\nimport { BaseOptionsRefined } from '../options'\n\nexport type CssDimValue = string | number // TODO: move to more general file\n\nexport interface ColProps {\n  width?: CssDimValue\n  minWidth?: CssDimValue\n  span?: number\n}\n\nexport interface SectionConfig {\n  outerContent?: VNode\n  type: 'body' | 'header' | 'footer'\n  className?: string\n  maxHeight?: number\n  liquid?: boolean\n  expandRows?: boolean // TODO: how to get a bottom rule?\n  syncRowHeights?: boolean // yuck\n  isSticky?: boolean\n}\n\nexport type ChunkConfigContent = (contentProps: ChunkContentCallbackArgs) => VNode\nexport type ChunkConfigRowContent = VNode | ChunkConfigContent\n\nexport interface ChunkConfig {\n  outerContent?: VNode\n  content?: ChunkConfigContent\n  rowContent?: ChunkConfigRowContent\n  scrollerElRef?: Ref<HTMLDivElement>\n  elRef?: Ref<HTMLTableCellElement>\n  tableClassName?: string\n}\n\nexport interface ChunkContentCallbackArgs { // TODO: util for wrapping tables!?\n  tableColGroupNode: VNode\n  tableMinWidth: CssDimValue\n  clientWidth: number | null // important to know whether 0 or not-yet-determined. for headless testing\n  clientHeight: number | null //\n  expandRows: boolean\n  syncRowHeights: boolean\n  rowSyncHeights: number[]\n  reportRowHeightChange: (rowEl: HTMLElement, isStable: boolean) => void\n}\n\nexport function computeShrinkWidth(chunkEls: HTMLElement[]) { // all in same COL!\n  let shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink')\n  let largestWidth = 0\n\n  for (let shrinkCell of shrinkCells) {\n    largestWidth = Math.max(\n      largestWidth,\n      computeSmallestCellWidth(shrinkCell),\n    )\n  }\n\n  return Math.ceil(largestWidth) // <table> elements work best with integers. round up to ensure contents fits\n}\n\nexport interface ScrollerLike { // have scrollers implement?\n  needsYScrolling(): boolean\n  needsXScrolling(): boolean\n}\n\nexport function getSectionHasLiquidHeight(props: { liquid: boolean }, sectionConfig: SectionConfig) {\n  return props.liquid && sectionConfig.liquid // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\n\nexport function getAllowYScrolling(props: { liquid: boolean }, sectionConfig: SectionConfig) {\n  return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n    getSectionHasLiquidHeight(props, sectionConfig) // if the section is liquid height, it might condense enough to require scrollbars\n}\n\n// TODO: ONLY use `arg`. force out internal function to use same API\nexport function renderChunkContent(\n  sectionConfig: SectionConfig,\n  chunkConfig: ChunkConfig,\n  arg: ChunkContentCallbackArgs,\n  isHeader: boolean,\n) {\n  let { expandRows } = arg\n\n  let content: VNode = typeof chunkConfig.content === 'function' ?\n    chunkConfig.content(arg) :\n    createElement(\n      'table',\n      {\n        role: 'presentation',\n        className: [\n          chunkConfig.tableClassName,\n          sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n        ].join(' '),\n        style: {\n          minWidth: arg.tableMinWidth, // because colMinWidths arent enough\n          width: arg.clientWidth,\n          height: expandRows ? arg.clientHeight : '', // css `height` on a <table> serves as a min-height\n        },\n      },\n      arg.tableColGroupNode,\n      createElement(\n        isHeader ? 'thead' : 'tbody',\n        {\n          role: 'presentation',\n        },\n        typeof chunkConfig.rowContent === 'function'\n          ? chunkConfig.rowContent(arg)\n          : chunkConfig.rowContent,\n      ),\n    )\n\n  return content\n}\n\nexport function isColPropsEqual(cols0: ColProps[], cols1: ColProps[]) {\n  return isArraysEqual(cols0, cols1, isPropsEqual)\n}\n\nexport function renderMicroColGroup(cols: ColProps[], shrinkWidth?: number): VNode {\n  let colNodes: VNode[] = []\n\n  /*\n  for ColProps with spans, it would have been great to make a single <col span=\"\">\n  HOWEVER, Chrome was getting messing up distributing the width to <td>/<th> elements with colspans.\n  SOLUTION: making individual <col> elements makes Chrome behave.\n  */\n  for (let colProps of cols) {\n    let span = colProps.span || 1\n\n    for (let i = 0; i < span; i += 1) {\n      colNodes.push(\n        <col\n          style={{\n            width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n            minWidth: colProps.minWidth || '',\n          }}\n        />,\n      )\n    }\n  }\n\n  return createElement('colgroup', {}, ...colNodes)\n}\n\nexport function sanitizeShrinkWidth(shrinkWidth?: number) {\n  /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n  4 accounts for 2 2-pixel borders. TODO: better solution? */\n  return shrinkWidth == null ? 4 : shrinkWidth\n}\n\nexport function hasShrinkWidth(cols: ColProps[]) {\n  for (let col of cols) {\n    if (col.width === 'shrink') {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport function getScrollGridClassNames(liquid: boolean, context: ViewContext) {\n  let classNames = [\n    'fc-scrollgrid',\n    context.theme.getClass('table'),\n  ]\n\n  if (liquid) {\n    classNames.push('fc-scrollgrid-liquid')\n  }\n\n  return classNames\n}\n\nexport function getSectionClassNames(sectionConfig: SectionConfig, wholeTableVGrow: boolean) {\n  let classNames = [\n    'fc-scrollgrid-section',\n    `fc-scrollgrid-section-${sectionConfig.type}`,\n    sectionConfig.className, // used?\n  ]\n\n  if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n    classNames.push('fc-scrollgrid-section-liquid')\n  }\n\n  if (sectionConfig.isSticky) {\n    classNames.push('fc-scrollgrid-section-sticky')\n  }\n\n  return classNames\n}\n\nexport function renderScrollShim(arg: ChunkContentCallbackArgs) {\n  return (\n    <div\n      className=\"fc-scrollgrid-sticky-shim\"\n      style={{\n        width: arg.clientWidth,\n        minWidth: arg.tableMinWidth,\n      }}\n    />\n  )\n}\n\nexport function getStickyHeaderDates(options: BaseOptionsRefined) {\n  let { stickyHeaderDates } = options\n\n  if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n    stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto'\n  }\n\n  return stickyHeaderDates\n}\n\nexport function getStickyFooterScrollbar(options: BaseOptionsRefined) {\n  let { stickyFooterScrollbar } = options\n\n  if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n    stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto'\n  }\n\n  return stickyFooterScrollbar\n}\n", "import { VNode, createElement, Fragment } from '../vdom'\nimport { BaseComponent, setRef } from '../vdom-util'\nimport { Scroller, OverflowValue } from './Scroller'\nimport { RefMap } from '../util/RefMap'\nimport {\n  ColProps, SectionConfig, renderMicroColGroup, computeShrinkWidth, getScrollGridClassNames, getSectionClassNames, getAllowYScrolling,\n  renderChunkContent, getSectionHasLiquidHeight, ChunkConfig, hasShrinkWidth, CssDimValue,\n  isColPropsEqual,\n} from './util'\nimport { getCanVGrowWithinCell } from '../util/table-styling'\nimport { memoize } from '../util/memoize'\nimport { isPropsEqual } from '../util/object'\nimport { getScrollbarWidths } from '../util/scrollbar-width'\n\nexport interface SimpleScrollGridProps {\n  cols: ColProps[]\n  sections: SimpleScrollGridSection[]\n  liquid: boolean // liquid *height*\n  collapsibleWidth: boolean // can ALL sections be fully collapsed in width?\n  height?: CssDimValue // TODO: give to real ScrollGrid\n}\n\nexport interface SimpleScrollGridSection extends SectionConfig {\n  key: string\n  chunk?: ChunkConfig\n}\n\ninterface SimpleScrollGridState {\n  shrinkWidth: number | null\n  forceYScrollbars: boolean\n  scrollerClientWidths: { [key: string]: number }\n  scrollerClientHeights: { [key: string]: number }\n}\n\nexport class SimpleScrollGrid extends BaseComponent<SimpleScrollGridProps, SimpleScrollGridState> {\n  processCols = memoize((a) => a, isColPropsEqual) // so we get same `cols` props every time\n\n  // yucky to memoize VNodes, but much more efficient for consumers\n  renderMicroColGroup: typeof renderMicroColGroup = memoize(renderMicroColGroup)\n\n  scrollerRefs = new RefMap<Scroller>()\n  scrollerElRefs = new RefMap<HTMLElement>(this._handleScrollerEl.bind(this))\n\n  state: SimpleScrollGridState = {\n    shrinkWidth: null,\n    forceYScrollbars: false,\n    scrollerClientWidths: {},\n    scrollerClientHeights: {},\n  }\n\n  render(): VNode {\n    let { props, state, context } = this\n    let sectionConfigs = props.sections || []\n    let cols = this.processCols(props.cols)\n\n    let microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth)\n    let classNames = getScrollGridClassNames(props.liquid, context)\n\n    if (props.collapsibleWidth) {\n      classNames.push('fc-scrollgrid-collapsible')\n    }\n\n    // TODO: make DRY\n    let configCnt = sectionConfigs.length\n    let configI = 0\n    let currentConfig: SimpleScrollGridSection\n    let headSectionNodes: VNode[] = []\n    let bodySectionNodes: VNode[] = []\n    let footSectionNodes: VNode[] = []\n\n    while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n      headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true))\n      configI += 1\n    }\n\n    while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n      bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false))\n      configI += 1\n    }\n\n    while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n      footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true))\n      configI += 1\n    }\n\n    // firefox bug: when setting height on table and there is a thead or tfoot,\n    // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n    // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n    // if so, use a simpler dom structure, jam everything into a lone tbody.\n    let isBuggy = !getCanVGrowWithinCell()\n\n    const roleAttrs = { role: 'rowgroup' }\n\n    return createElement(\n      'table',\n      {\n        role: 'grid',\n        className: classNames.join(' '),\n        style: { height: props.height },\n      },\n      Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes),\n      Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes),\n      Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes),\n      isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes),\n    )\n  }\n\n  renderSection(sectionConfig: SimpleScrollGridSection, microColGroupNode: VNode, isHeader: boolean) {\n    if ('outerContent' in sectionConfig) {\n      return (\n        <Fragment key={sectionConfig.key}>\n          {sectionConfig.outerContent}\n        </Fragment>\n      )\n    }\n\n    return (\n      <tr\n        key={sectionConfig.key}\n        role=\"presentation\"\n        className={getSectionClassNames(sectionConfig, this.props.liquid).join(' ')}\n      >\n        {this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)}\n      </tr>\n    )\n  }\n\n  renderChunkTd(\n    sectionConfig: SimpleScrollGridSection,\n    microColGroupNode: VNode,\n    chunkConfig: ChunkConfig,\n    isHeader: boolean,\n  ): createElement.JSX.Element {\n    if ('outerContent' in chunkConfig) {\n      return chunkConfig.outerContent\n    }\n\n    let { props } = this\n    let { forceYScrollbars, scrollerClientWidths, scrollerClientHeights } = this.state\n\n    let needsYScrolling = getAllowYScrolling(props, sectionConfig) // TODO: do lazily. do in section config?\n    let isLiquid = getSectionHasLiquidHeight(props, sectionConfig)\n\n    // for `!props.liquid` - is WHOLE scrollgrid natural height?\n    // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n    let overflowY: OverflowValue =\n      !props.liquid ? 'visible' :\n        forceYScrollbars ? 'scroll' :\n          !needsYScrolling ? 'hidden' :\n            'auto'\n\n    let sectionKey = sectionConfig.key\n    let content = renderChunkContent(sectionConfig, chunkConfig, {\n      tableColGroupNode: microColGroupNode,\n      tableMinWidth: '',\n      clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n      clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n      expandRows: sectionConfig.expandRows,\n      syncRowHeights: false,\n      rowSyncHeights: [],\n      reportRowHeightChange: () => {},\n    }, isHeader)\n\n    return createElement(\n      isHeader ? 'th' : 'td',\n      {\n        ref: chunkConfig.elRef as any,\n        role: 'presentation',\n      },\n      <div className={`fc-scroller-harness${isLiquid ? ' fc-scroller-harness-liquid' : ''}`}>\n        <Scroller\n          ref={this.scrollerRefs.createRef(sectionKey)}\n          elRef={this.scrollerElRefs.createRef(sectionKey)}\n          overflowY={overflowY}\n          overflowX={!props.liquid ? 'visible' : 'hidden' /* natural height? */}\n          maxHeight={sectionConfig.maxHeight}\n          liquid={isLiquid}\n          liquidIsAbsolute // because its within a harness\n        >\n          {content}\n        </Scroller>\n      </div>,\n    )\n  }\n\n  _handleScrollerEl(scrollerEl: HTMLElement | null, key: string) {\n    let section = getSectionByKey(this.props.sections, key)\n\n    if (section) {\n      setRef(section.chunk.scrollerElRef, scrollerEl)\n    }\n  }\n\n  // TODO: can do a really simple print-view. dont need to join rows\n  handleSizing = () => {\n    this.safeSetState({\n      shrinkWidth: this.computeShrinkWidth(), // will create each chunk's <colgroup>. TODO: precompute hasShrinkWidth\n      ...this.computeScrollerDims(),\n    })\n  }\n\n  componentDidMount() {\n    this.handleSizing()\n    this.context.addResizeHandler(this.handleSizing)\n  }\n\n  componentDidUpdate() {\n    // TODO: need better solution when state contains non-sizing things\n    this.handleSizing()\n  }\n\n  componentWillUnmount() {\n    this.context.removeResizeHandler(this.handleSizing)\n  }\n\n  computeShrinkWidth() {\n    return hasShrinkWidth(this.props.cols)\n      ? computeShrinkWidth(this.scrollerElRefs.getAll())\n      : 0\n  }\n\n  computeScrollerDims() {\n    let scrollbarWidth = getScrollbarWidths()\n    let { scrollerRefs, scrollerElRefs } = this\n\n    let forceYScrollbars = false\n    let scrollerClientWidths: { [index: string]: number } = {}\n    let scrollerClientHeights: { [index: string]: number } = {}\n\n    for (let sectionKey in scrollerRefs.currentMap) {\n      let scroller = scrollerRefs.currentMap[sectionKey]\n\n      if (scroller && scroller.needsYScrolling()) {\n        forceYScrollbars = true\n        break\n      }\n    }\n\n    for (let section of this.props.sections) {\n      let sectionKey = section.key\n      let scrollerEl = scrollerElRefs.currentMap[sectionKey]\n\n      if (scrollerEl) {\n        let harnessEl = scrollerEl.parentNode as HTMLElement // TODO: weird way to get this. need harness b/c doesn't include table borders\n\n        scrollerClientWidths[sectionKey] = Math.floor(\n          harnessEl.getBoundingClientRect().width - (\n            forceYScrollbars\n              ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n              : 0\n          ),\n        )\n\n        scrollerClientHeights[sectionKey] = Math.floor(\n          harnessEl.getBoundingClientRect().height, // never has horizontal scrollbars\n        )\n      }\n    }\n\n    return { forceYScrollbars, scrollerClientWidths, scrollerClientHeights }\n  }\n}\n\nSimpleScrollGrid.addStateEquality({\n  scrollerClientWidths: isPropsEqual,\n  scrollerClientHeights: isPropsEqual,\n})\n\nfunction getSectionByKey(sections: SimpleScrollGridSection[], key: string): SimpleScrollGridSection | null {\n  for (let section of sections) {\n    if (section.key === key) {\n      return section\n    }\n  }\n\n  return null\n}\n", "import { Seg } from '../component/DateComponent'\nimport { ComponentChildren, createElement, Ref, createRef, RefObject } from '../vdom'\nimport { EventApi } from '../api/EventApi'\nimport {\n  computeSegDraggable,\n  computeSegStartResizable,\n  computeSegEndResizable,\n  setElSeg,\n  EventContentArg,\n  getEventClassNames,\n} from '../component/event-rendering'\nimport { RenderHook } from './render-hook'\nimport { BaseComponent } from '../vdom-util'\n\nexport interface MinimalEventProps {\n  seg: Seg\n  isDragging: boolean // rename to isMirrorDragging? make optional?\n  isResizing: boolean // rename to isMirrorResizing? make optional?\n  isDateSelecting: boolean // rename to isMirrorDateSelecting? make optional?\n  isSelected: boolean\n  isPast: boolean\n  isFuture: boolean\n  isToday: boolean\n}\n\nexport interface EventRootProps extends MinimalEventProps {\n  timeText: string\n  disableDragging?: boolean\n  disableResizing?: boolean\n  defaultContent: (hookProps: EventContentArg) => ComponentChildren\n  children: (\n    rootElRef: Ref<any>,\n    classNames: string[],\n    innerElRef: Ref<any>,\n    innerContent: ComponentChildren,\n    hookProps: EventContentArg\n  ) => ComponentChildren\n}\n\nexport class EventRoot extends BaseComponent<EventRootProps> {\n  elRef: RefObject<HTMLElement> = createRef<HTMLElement>()\n\n  render() {\n    let { props, context } = this\n    let { options } = context\n    let { seg } = props\n    let { eventRange } = seg\n    let { ui } = eventRange\n\n    let hookProps: EventContentArg = {\n      event: new EventApi(context, eventRange.def, eventRange.instance),\n      view: context.viewApi,\n      timeText: props.timeText,\n      textColor: ui.textColor,\n      backgroundColor: ui.backgroundColor,\n      borderColor: ui.borderColor,\n      isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n      isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n      isEndResizable: !props.disableResizing && computeSegEndResizable(seg, context),\n      isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n      isStart: Boolean(seg.isStart),\n      isEnd: Boolean(seg.isEnd),\n      isPast: Boolean(props.isPast), // TODO: don't cast. getDateMeta does it\n      isFuture: Boolean(props.isFuture), // TODO: don't cast. getDateMeta does it\n      isToday: Boolean(props.isToday), // TODO: don't cast. getDateMeta does it\n      isSelected: Boolean(props.isSelected),\n      isDragging: Boolean(props.isDragging),\n      isResizing: Boolean(props.isResizing),\n    }\n\n    let standardClassNames = getEventClassNames(hookProps).concat(ui.classNames)\n\n    return (\n      <RenderHook\n        hookProps={hookProps}\n        classNames={options.eventClassNames}\n        content={options.eventContent}\n        defaultContent={props.defaultContent}\n        didMount={options.eventDidMount}\n        willUnmount={options.eventWillUnmount}\n        elRef={this.elRef}\n      >\n        {(rootElRef, customClassNames, innerElRef, innerContent) => props.children(\n          rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps,\n        )}\n      </RenderHook>\n    )\n  }\n\n  componentDidMount() {\n    setElSeg(this.elRef.current, this.props.seg)\n  }\n\n  /*\n  need to re-assign seg to the element if seg changes, even if the element is the same\n  */\n  componentDidUpdate(prevProps: EventRootProps) {\n    let { seg } = this.props\n\n    if (seg !== prevProps.seg) {\n      setElSeg(this.elRef.current, seg)\n    }\n  }\n}\n", "import { ComponentChildren, createElement, Fragment } from '../vdom'\nimport { BaseComponent } from '../vdom-util'\nimport { buildSegTimeText, EventContentArg, getSegAnchorAttrs } from '../component/event-rendering'\nimport { EventRoot, MinimalEventProps } from './EventRoot'\nimport { DateFormatter } from '../datelib/DateFormatter'\n\nexport interface StandardEventProps extends MinimalEventProps {\n  extraClassNames: string[]\n  defaultTimeFormat: DateFormatter\n  defaultDisplayEventTime?: boolean // default true\n  defaultDisplayEventEnd?: boolean // default true\n  disableDragging?: boolean // default false\n  disableResizing?: boolean // default false\n  defaultContent?: (hookProps: EventContentArg) => ComponentChildren // not used by anyone yet\n}\n\n// should not be a purecomponent\nexport class StandardEvent extends BaseComponent<StandardEventProps> {\n  render() {\n    let { props, context } = this\n    let { seg } = props\n    let timeFormat = context.options.eventTimeFormat || props.defaultTimeFormat\n    let timeText = buildSegTimeText(\n      seg,\n      timeFormat,\n      context,\n      props.defaultDisplayEventTime,\n      props.defaultDisplayEventEnd,\n    )\n\n    return (\n      <EventRoot\n        seg={seg}\n        timeText={timeText}\n        disableDragging={props.disableDragging}\n        disableResizing={props.disableResizing}\n        defaultContent={props.defaultContent || renderInnerContent}\n        isDragging={props.isDragging}\n        isResizing={props.isResizing}\n        isDateSelecting={props.isDateSelecting}\n        isSelected={props.isSelected}\n        isPast={props.isPast}\n        isFuture={props.isFuture}\n        isToday={props.isToday}\n      >\n        {(rootElRef, classNames, innerElRef, innerContent, hookProps) => (\n          <a\n            className={props.extraClassNames.concat(classNames).join(' ')}\n            style={{\n              borderColor: hookProps.borderColor,\n              backgroundColor: hookProps.backgroundColor,\n            }}\n            ref={rootElRef}\n            {...getSegAnchorAttrs(seg, context)}\n          >\n            <div className=\"fc-event-main\" ref={innerElRef} style={{ color: hookProps.textColor }}>\n              {innerContent}\n            </div>\n            {hookProps.isStartResizable &&\n              <div className=\"fc-event-resizer fc-event-resizer-start\" />}\n            {hookProps.isEndResizable &&\n              <div className=\"fc-event-resizer fc-event-resizer-end\" />}\n          </a>\n        )}\n      </EventRoot>\n    )\n  }\n}\n\nfunction renderInnerContent(innerProps: EventContentArg) {\n  return (\n    <div className=\"fc-event-main-frame\">\n      {innerProps.timeText && (\n        <div className=\"fc-event-time\">{innerProps.timeText}</div>\n      )}\n      <div className=\"fc-event-title-container\">\n        <div className=\"fc-event-title fc-sticky\">\n          {innerProps.event.title || <Fragment>&nbsp;</Fragment>}\n        </div>\n      </div>\n    </div>\n  )\n}\n", "import { RenderHook, RenderHookPropsChildren, MountArg } from './render-hook'\nimport { DateMarker } from '../datelib/marker'\nimport { ViewContext, ViewContextType } from '../ViewContext'\nimport { createElement } from '../vdom'\nimport { ViewApi } from '../ViewApi'\n\nexport interface NowIndicatorRootProps {\n  isAxis: boolean\n  date: DateMarker\n  children: RenderHookPropsChildren\n}\n\nexport interface NowIndicatorContentArg {\n  isAxis: boolean\n  date: Date\n  view: ViewApi\n}\n\nexport type NowIndicatorMountArg = MountArg<NowIndicatorContentArg>\n\nexport const NowIndicatorRoot = (props: NowIndicatorRootProps) => (\n  <ViewContextType.Consumer>\n    {(context: ViewContext) => {\n      let { options } = context\n      let hookProps: NowIndicatorContentArg = {\n        isAxis: props.isAxis,\n        date: context.dateEnv.toDate(props.date),\n        view: context.viewApi,\n      }\n\n      return (\n        <RenderHook\n          hookProps={hookProps}\n          classNames={options.nowIndicatorClassNames}\n          content={options.nowIndicatorContent}\n          didMount={options.nowIndicatorDidMount}\n          willUnmount={options.nowIndicatorWillUnmount}\n        >\n          {props.children}\n        </RenderHook>\n      )\n    }}\n  </ViewContextType.Consumer>\n)\n", "import { Ref, ComponentChildren, createElement } from '../vdom'\nimport { DateMarker } from '../datelib/marker'\nimport { DateRange } from '../datelib/date-range'\nimport { getDateMeta, DateMeta } from '../component/date-rendering'\nimport { createFormatter } from '../datelib/formatting'\nimport { ContentHook } from './render-hook'\nimport { ViewApi } from '../ViewApi'\nimport { BaseComponent } from '../vdom-util'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Dictionary } from '../options'\nimport { DateEnv } from '../datelib/env'\n\nconst DAY_NUM_FORMAT = createFormatter({ day: 'numeric' })\n\nexport interface DayCellContentProps {\n  date: DateMarker\n  dateProfile: DateProfile\n  todayRange: DateRange\n  showDayNumber?: boolean // defaults to false\n  extraHookProps?: Dictionary\n  defaultContent?: (hookProps: DayCellContentArg) => ComponentChildren\n  children: (\n    innerElRef: Ref<any>,\n    innerContent: ComponentChildren\n  ) => ComponentChildren\n}\n\nexport interface DayCellContentArg extends DateMeta {\n  date: DateMarker // localized\n  view: ViewApi\n  dayNumberText: string\n  [extraProp: string]: any // so can include a resource\n}\n\nexport interface DayCellHookPropsInput {\n  date: DateMarker // generic\n  dateProfile: DateProfile\n  todayRange: DateRange\n  dateEnv: DateEnv\n  viewApi: ViewApi\n  showDayNumber?: boolean // defaults to false\n  extraProps?: Dictionary // so can include a resource\n}\n\nexport class DayCellContent extends BaseComponent<DayCellContentProps> {\n  render() {\n    let { props, context } = this\n    let { options } = context\n    let hookProps = refineDayCellHookProps({\n      date: props.date,\n      dateProfile: props.dateProfile,\n      todayRange: props.todayRange,\n      showDayNumber: props.showDayNumber,\n      extraProps: props.extraHookProps,\n      viewApi: context.viewApi,\n      dateEnv: context.dateEnv,\n    })\n\n    return (\n      <ContentHook\n        hookProps={hookProps}\n        content={options.dayCellContent}\n        defaultContent={props.defaultContent}\n      >\n        {props.children}\n      </ContentHook>\n    )\n  }\n}\n\nexport function refineDayCellHookProps(raw: DayCellHookPropsInput): DayCellContentArg {\n  let { date, dateEnv } = raw\n  let dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile)\n\n  return {\n    date: dateEnv.toDate(date),\n    view: raw.viewApi,\n    ...dayMeta,\n    dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '',\n    ...raw.extraProps,\n  }\n}\n", "import { Ref, ComponentChildren, createElement } from '../vdom'\nimport { DateMarker } from '../datelib/marker'\nimport { DateRange } from '../datelib/date-range'\nimport { getDayClassNames, DateMeta } from '../component/date-rendering'\nimport { formatDayString } from '../datelib/formatting-utils'\nimport { buildClassNameNormalizer, MountHook, MountArg } from './render-hook'\nimport { ViewApi } from '../ViewApi'\nimport { BaseComponent } from '../vdom-util'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { memoizeObjArg } from '../util/memoize'\nimport { Dictionary } from '../options'\nimport { refineDayCellHookProps } from './DayCellContent'\n\nexport interface DayCellContentArg extends DateMeta {\n  date: DateMarker // localized\n  view: ViewApi\n  dayNumberText: string\n  [extraProp: string]: any // so can include a resource\n}\nexport type DayCellMountArg = MountArg<DayCellContentArg>\n\nexport interface DayCellRootProps {\n  elRef?: Ref<any>\n  date: DateMarker\n  dateProfile: DateProfile\n  todayRange: DateRange\n  showDayNumber?: boolean // defaults to false\n  extraHookProps?: Dictionary\n  children: (\n    rootElRef: Ref<any>,\n    classNames: string[],\n    rootDataAttrs,\n    isDisabled: boolean\n  ) => ComponentChildren\n}\n\nexport class DayCellRoot extends BaseComponent<DayCellRootProps> {\n  refineHookProps = memoizeObjArg(refineDayCellHookProps)\n  normalizeClassNames = buildClassNameNormalizer<DayCellContentArg>()\n\n  render() {\n    let { props, context } = this\n    let { options } = context\n    let hookProps = this.refineHookProps({\n      date: props.date,\n      dateProfile: props.dateProfile,\n      todayRange: props.todayRange,\n      showDayNumber: props.showDayNumber,\n      extraProps: props.extraHookProps,\n      viewApi: context.viewApi,\n      dateEnv: context.dateEnv,\n    })\n\n    let classNames = getDayClassNames(hookProps, context.theme).concat(\n      hookProps.isDisabled\n        ? [] // don't use custom classNames if disabled\n        : this.normalizeClassNames(options.dayCellClassNames, hookProps),\n    )\n\n    let dataAttrs = hookProps.isDisabled ? {} : {\n      'data-date': formatDayString(props.date),\n    }\n\n    return (\n      <MountHook\n        hookProps={hookProps}\n        didMount={options.dayCellDidMount}\n        willUnmount={options.dayCellWillUnmount}\n        elRef={props.elRef}\n      >\n        {(rootElRef) => props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled)}\n      </MountHook>\n    )\n  }\n}\n", "import { createElement } from '../vdom'\nimport { EventRoot } from './EventRoot'\nimport { Seg } from '../component/DateComponent'\nimport { EventContentArg } from '../component/event-rendering'\n\nexport function renderFill(fillType: string) {\n  return (\n    <div className={`fc-${fillType}`} />\n  )\n}\n\nexport interface BgEventProps {\n  seg: Seg\n  isPast: boolean\n  isFuture: boolean\n  isToday: boolean\n}\n\nexport const BgEvent = (props: BgEventProps) => (\n  <EventRoot\n    defaultContent={renderInnerContent}\n    seg={props.seg /* uselesss i think */}\n    timeText=\"\"\n    disableDragging\n    disableResizing\n    isDragging={false}\n    isResizing={false}\n    isDateSelecting={false}\n    isSelected={false}\n    isPast={props.isPast}\n    isFuture={props.isFuture}\n    isToday={props.isToday}\n  >\n    {(rootElRef, classNames, innerElRef, innerContent, hookProps) => (\n      <div\n        ref={rootElRef}\n        className={['fc-bg-event'].concat(classNames).join(' ')}\n        style={{\n          backgroundColor: hookProps.backgroundColor,\n        }}\n      >\n        {innerContent}\n      </div>\n    )}\n  </EventRoot>\n)\n\nfunction renderInnerContent(props: EventContentArg) {\n  let { title } = props.event\n\n  return title && (\n    <div className=\"fc-event-title\">{props.event.title}</div>\n  )\n}\n", "import { ViewContext, ViewContextType } from '../ViewContext'\nimport { DateMarker } from '../datelib/marker'\nimport { RenderHook, RenderHookPropsChildren, MountArg } from './render-hook'\nimport { createElement } from '../vdom'\nimport { DateFormatter } from '../datelib/DateFormatter'\n\nexport interface WeekNumberRootProps {\n  date: DateMarker\n  defaultFormat: DateFormatter\n  children: RenderHookPropsChildren\n}\n\nexport interface WeekNumberContentArg {\n  num: number\n  text: string\n  date: Date\n}\nexport type WeekNumberMountArg = MountArg<WeekNumberContentArg>\n\nexport const WeekNumberRoot = (props: WeekNumberRootProps) => (\n  <ViewContextType.Consumer>\n    {(context: ViewContext) => {\n      let { dateEnv, options } = context\n      let { date } = props\n      let format = options.weekNumberFormat || props.defaultFormat\n      let num = dateEnv.computeWeekNumber(date) // TODO: somehow use for formatting as well?\n      let text = dateEnv.format(date, format)\n      let hookProps: WeekNumberContentArg = { num, text, date }\n\n      return (\n        <RenderHook<WeekNumberContentArg> // why isn't WeekNumberContentArg being auto-detected?\n          hookProps={hookProps}\n          classNames={options.weekNumberClassNames}\n          content={options.weekNumberContent}\n          defaultContent={renderInner}\n          didMount={options.weekNumberDidMount}\n          willUnmount={options.weekNumberWillUnmount}\n        >\n          {props.children}\n        </RenderHook>\n      )\n    }}\n  </ViewContextType.Consumer>\n)\n\nfunction renderInner(innerProps) {\n  return innerProps.text\n}\n", "import { Dictionary } from '../options'\nimport { computeClippedClientRect } from '../util/dom-geom'\nimport { applyStyle, elementClosest, getEventTargetViaRoot, getUniqueDomId } from '../util/dom-manip'\nimport { createElement, ComponentChildren, Ref, createPortal } from '../vdom'\nimport { BaseComponent, setRef } from '../vdom-util'\n\nexport interface PopoverProps {\n  elRef?: Ref<HTMLElement>\n  id: string\n  title: string\n  extraClassNames?: string[]\n  extraAttrs?: Dictionary\n  parentEl: HTMLElement\n  alignmentEl: HTMLElement\n  alignGridTop?: boolean\n  children?: ComponentChildren\n  onClose?: () => void\n}\n\nconst PADDING_FROM_VIEWPORT = 10\n\nexport class Popover extends BaseComponent<PopoverProps> {\n  private rootEl: HTMLElement\n  state = {\n    titleId: getUniqueDomId(),\n  }\n\n  render() {\n    let { theme, options } = this.context\n    let { props, state } = this\n    let classNames = [\n      'fc-popover',\n      theme.getClass('popover'),\n    ].concat(\n      props.extraClassNames || [],\n    )\n\n    return createPortal(\n      <div\n        id={props.id}\n        className={classNames.join(' ')}\n        aria-labelledby={state.titleId}\n        {...props.extraAttrs}\n        ref={this.handleRootEl}\n      >\n        <div className={'fc-popover-header ' + theme.getClass('popoverHeader')}>\n          <span className=\"fc-popover-title\" id={state.titleId}>\n            {props.title}\n          </span>\n          <span\n            className={'fc-popover-close ' + theme.getIconClass('close')}\n            title={options.closeHint}\n            onClick={this.handleCloseClick}\n          />\n        </div>\n        <div className={'fc-popover-body ' + theme.getClass('popoverContent')}>\n          {props.children}\n        </div>\n      </div>,\n      props.parentEl,\n    )\n  }\n\n  componentDidMount() {\n    document.addEventListener('mousedown', this.handleDocumentMouseDown)\n    document.addEventListener('keydown', this.handleDocumentKeyDown)\n    this.updateSize()\n  }\n\n  componentWillUnmount() {\n    document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n    document.removeEventListener('keydown', this.handleDocumentKeyDown)\n  }\n\n  handleRootEl = (el: HTMLElement | null) => {\n    this.rootEl = el\n\n    if (this.props.elRef) {\n      setRef(this.props.elRef, el)\n    }\n  }\n\n  // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n  handleDocumentMouseDown = (ev) => {\n    // only hide the popover if the click happened outside the popover\n    const target = getEventTargetViaRoot(ev) as HTMLElement\n    if (!this.rootEl.contains(target)) {\n      this.handleCloseClick()\n    }\n  }\n\n  handleDocumentKeyDown = (ev) => {\n    if (ev.key === 'Escape') {\n      this.handleCloseClick()\n    }\n  }\n\n  handleCloseClick = () => {\n    let { onClose } = this.props\n    if (onClose) {\n      onClose()\n    }\n  }\n\n  private updateSize() {\n    let { isRtl } = this.context\n    let { alignmentEl, alignGridTop } = this.props\n    let { rootEl } = this\n\n    let alignmentRect = computeClippedClientRect(alignmentEl)\n    if (alignmentRect) {\n      let popoverDims = rootEl.getBoundingClientRect()\n\n      // position relative to viewport\n      let popoverTop = alignGridTop\n        ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n        : alignmentRect.top\n      let popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left\n\n      // constrain\n      popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT)\n      popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width)\n      popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT)\n\n      let origin = rootEl.offsetParent.getBoundingClientRect()\n      applyStyle(rootEl, {\n        top: popoverTop - origin.top,\n        left: popoverLeft - origin.left,\n      })\n    }\n  }\n}\n", "import { DateComponent } from '../component/DateComponent'\nimport { DateRange } from '../datelib/date-range'\nimport { DateMarker } from '../datelib/marker'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Hit } from '../interactions/hit'\nimport { Dictionary } from '../options'\nimport { createElement, ComponentChildren } from '../vdom'\nimport { DayCellContent } from './DayCellContent'\nimport { DayCellRoot } from './DayCellRoot'\nimport { Popover } from './Popover'\n\nexport interface MorePopoverProps {\n  id: string\n  startDate: DateMarker\n  endDate: DateMarker\n  dateProfile: DateProfile\n  parentEl: HTMLElement\n  alignmentEl: HTMLElement\n  alignGridTop?: boolean\n  todayRange: DateRange\n  extraDateSpan: Dictionary\n  children: ComponentChildren\n  onClose?: () => void\n}\n\nexport class MorePopover extends DateComponent<MorePopoverProps> {\n  rootEl: HTMLElement\n\n  render() {\n    let { options, dateEnv } = this.context\n    let { props } = this\n    let { startDate, todayRange, dateProfile } = props\n    let title = dateEnv.format(startDate, options.dayPopoverFormat)\n    return (\n      <DayCellRoot date={startDate} dateProfile={dateProfile} todayRange={todayRange} elRef={this.handleRootEl}>\n        {(rootElRef, dayClassNames, dataAttrs) => (\n          <Popover\n            elRef={rootElRef}\n            id={props.id}\n            title={title}\n            extraClassNames={['fc-more-popover'].concat(dayClassNames)}\n            extraAttrs={dataAttrs /* TODO: make these time-based when not whole-day? */}\n            parentEl={props.parentEl}\n            alignmentEl={props.alignmentEl}\n            alignGridTop={props.alignGridTop}\n            onClose={props.onClose}\n          >\n            <DayCellContent date={startDate} dateProfile={dateProfile} todayRange={todayRange}>\n              {(innerElRef, innerContent) => (\n                innerContent &&\n                  <div className=\"fc-more-popover-misc\" ref={innerElRef}>{innerContent}</div>\n              )}\n            </DayCellContent>\n            {props.children}\n          </Popover>\n        )}\n      </DayCellRoot>\n    )\n  }\n\n  handleRootEl = (rootEl: HTMLDivElement | null) => {\n    this.rootEl = rootEl\n    if (rootEl) {\n      this.context.registerInteractiveComponent(this, {\n        el: rootEl,\n        useEventCenter: false,\n      })\n    } else {\n      this.context.unregisterInteractiveComponent(this)\n    }\n  }\n\n  queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit {\n    let { rootEl, props } = this\n\n    if (\n      positionLeft >= 0 && positionLeft < elWidth &&\n      positionTop >= 0 && positionTop < elHeight\n    ) {\n      return {\n        dateProfile: props.dateProfile,\n        dateSpan: {\n          allDay: true,\n          range: {\n            start: props.startDate,\n            end: props.endDate,\n          },\n          ...props.extraDateSpan,\n        },\n        dayEl: rootEl,\n        rect: {\n          left: 0,\n          top: 0,\n          right: elWidth,\n          bottom: elHeight,\n        },\n        layer: 1, // important when comparing with hits from other components\n      }\n    }\n\n    return null\n  }\n}\n", "import { EventApi } from '../api/EventApi'\nimport { Seg } from '../component/DateComponent'\nimport { DateRange } from '../datelib/date-range'\nimport { addDays, DateMarker } from '../datelib/marker'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Dictionary } from '../options'\nimport { elementClosest, getUniqueDomId } from '../util/dom-manip'\nimport { formatWithOrdinals } from '../util/misc'\nimport { ComponentChildren, createElement, createRef, Fragment, Ref, RefObject, VNode } from '../vdom'\nimport { BaseComponent } from '../vdom-util'\nimport { ViewApi } from '../ViewApi'\nimport { ViewContext, ViewContextType } from '../ViewContext'\nimport { MorePopover } from './MorePopover'\nimport { MountArg, RenderHook } from './render-hook'\n\nexport type MoreLinkChildren = (\n  rootElRef: Ref<any>,\n  classNames: string[],\n  innerElRef: Ref<any>,\n  innerContent: ComponentChildren,\n  handleClick: (ev: MouseEvent) => void,\n  title: string, // for a11y\n  isExpanded: boolean,\n  popoverId: string,\n) => ComponentChildren\n\nexport interface MoreLinkRootProps { // what the MoreLinkRoot component receives\n  dateProfile: DateProfile\n  todayRange: DateRange\n  allDayDate: DateMarker | null\n  moreCnt: number // can't always derive from hiddenSegs. some hiddenSegs might be due to lack of dimensions\n  allSegs: Seg[]\n  hiddenSegs: Seg[]\n  extraDateSpan?: Dictionary\n  alignmentElRef: RefObject<HTMLElement> // for popover\n  alignGridTop?: boolean // for popover\n  topAlignmentElRef?: RefObject<HTMLElement>\n  defaultContent?: (hookProps: MoreLinkContentArg) => ComponentChildren\n  popoverContent: () => VNode\n  children: MoreLinkChildren\n}\n\nexport interface MoreLinkContentArg { // what the render-hooks receive\n  num: number\n  text: string\n  shortText: string\n  view: ViewApi\n}\n\nexport type MoreLinkMountArg = MountArg<MoreLinkContentArg>\n\ninterface MoreLinkRootState {\n  isPopoverOpen: boolean\n  popoverId: string\n}\n\nexport class MoreLinkRoot extends BaseComponent<MoreLinkRootProps, MoreLinkRootState> {\n  private linkElRef = createRef<HTMLElement>()\n  private parentEl: HTMLElement\n\n  state = {\n    isPopoverOpen: false,\n    popoverId: getUniqueDomId(),\n  }\n\n  render() {\n    let { props, state } = this\n    return (\n      <ViewContextType.Consumer>\n        {(context: ViewContext) => {\n          let { viewApi, options, calendarApi } = context\n          let { moreLinkText } = options\n          let { moreCnt } = props\n          let range = computeRange(props)\n\n          let text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n            ? moreLinkText.call(calendarApi, moreCnt)\n            : `+${moreCnt} ${moreLinkText}`\n          let title = formatWithOrdinals(options.moreLinkHint, [moreCnt], text)\n          let hookProps: MoreLinkContentArg = {\n            num: moreCnt,\n            shortText: `+${moreCnt}`, // TODO: offer hook or i18n?\n            text,\n            view: viewApi,\n          }\n\n          return (\n            <Fragment>\n              {Boolean(props.moreCnt) && (\n                <RenderHook<MoreLinkContentArg>\n                  elRef={this.linkElRef}\n                  hookProps={hookProps}\n                  classNames={options.moreLinkClassNames}\n                  content={options.moreLinkContent}\n                  defaultContent={props.defaultContent || renderMoreLinkInner}\n                  didMount={options.moreLinkDidMount}\n                  willUnmount={options.moreLinkWillUnmount}\n                >\n                  {(rootElRef, customClassNames, innerElRef, innerContent) => props.children(\n                    rootElRef,\n                    ['fc-more-link'].concat(customClassNames),\n                    innerElRef,\n                    innerContent,\n                    this.handleClick,\n                    title,\n                    state.isPopoverOpen,\n                    state.isPopoverOpen ? state.popoverId : '',\n                  )}\n                </RenderHook>\n              )}\n              {state.isPopoverOpen && (\n                <MorePopover\n                  id={state.popoverId}\n                  startDate={range.start}\n                  endDate={range.end}\n                  dateProfile={props.dateProfile}\n                  todayRange={props.todayRange}\n                  extraDateSpan={props.extraDateSpan}\n                  parentEl={this.parentEl}\n                  alignmentEl={props.alignmentElRef.current}\n                  alignGridTop={props.alignGridTop}\n                  onClose={this.handlePopoverClose}\n                >\n                  {props.popoverContent()}\n                </MorePopover>\n              )}\n            </Fragment>\n          )\n        }}\n      </ViewContextType.Consumer>\n    )\n  }\n\n  componentDidMount() {\n    this.updateParentEl()\n  }\n\n  componentDidUpdate() {\n    this.updateParentEl()\n  }\n\n  updateParentEl() {\n    if (this.linkElRef.current) {\n      this.parentEl = elementClosest(this.linkElRef.current, '.fc-view-harness')\n    }\n  }\n\n  handleClick = (ev: MouseEvent) => {\n    let { props, context } = this\n    let { moreLinkClick } = context.options\n    let date = computeRange(props).start\n\n    function buildPublicSeg(seg: Seg) {\n      let { def, instance, range } = seg.eventRange\n      return {\n        event: new EventApi(context, def, instance),\n        start: context.dateEnv.toDate(range.start),\n        end: context.dateEnv.toDate(range.end),\n        isStart: seg.isStart,\n        isEnd: seg.isEnd,\n      }\n    }\n\n    if (typeof moreLinkClick === 'function') {\n      moreLinkClick = moreLinkClick({\n        date,\n        allDay: Boolean(props.allDayDate),\n        allSegs: props.allSegs.map(buildPublicSeg),\n        hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n        jsEvent: ev,\n        view: context.viewApi,\n      }) as string | undefined\n    }\n\n    if (!moreLinkClick || moreLinkClick === 'popover') {\n      this.setState({ isPopoverOpen: true })\n    } else if (typeof moreLinkClick === 'string') { // a view name\n      context.calendarApi.zoomTo(date, moreLinkClick)\n    }\n  }\n\n  handlePopoverClose = () => {\n    this.setState({ isPopoverOpen: false })\n  }\n}\n\nfunction renderMoreLinkInner(props: MoreLinkContentArg) {\n  return props.text\n}\n\nfunction computeRange(props: MoreLinkRootProps): DateRange {\n  if (props.allDayDate) {\n    return {\n      start: props.allDayDate,\n      end: addDays(props.allDayDate, 1),\n    }\n  }\n\n  let { hiddenSegs } = props\n  return {\n    start: computeEarliestSegStart(hiddenSegs),\n    end: computeLatestSegEnd(hiddenSegs),\n  }\n}\n\nexport function computeEarliestSegStart(segs: Seg[]): DateMarker {\n  return segs.reduce(pickEarliestStart).eventRange.range.start\n}\n\nfunction pickEarliestStart(seg0: Seg, seg1: Seg): Seg {\n  return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1\n}\n\nfunction computeLatestSegEnd(segs: Seg[]): DateMarker {\n  return segs.reduce(pickLatestEnd).eventRange.range.end\n}\n\nfunction pickLatestEnd(seg0: Seg, seg1: Seg): Seg {\n  return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1\n}\n", "import './main.css'\n\n// exports\n// --------------------------------------------------------------------------------------------------\n\nexport const version: string = '<%= version %>' // important to type it, so .d.ts has generic string\n\n// explicit API\nexport { EventSourceApi } from './api/EventSourceApi'\nexport { EventApi, buildEventApis } from './api/EventApi'\nexport { CalendarApi } from './CalendarApi'\nexport { formatDate, formatRange, FormatDateOptions, FormatRangeOptions } from './formatting-api'\nexport { ViewApi } from './ViewApi'\nexport * from './api-type-deps'\n\nexport { // things for plugins. everything else is exported in api-type-deps\n  BASE_OPTION_DEFAULTS, BASE_OPTION_REFINERS, identity, Identity, Dictionary, refineProps,\n  BaseOptionRefiners, BaseOptionsRefined, CalendarOptionRefiners, CalendarOptionsRefined,\n  ViewOptionRefiners, ViewOptionsRefined, RawOptionsFromRefiners, RefinedOptionsFromRefiners,\n  CalendarListenerRefiners,\n} from './options'\n\nexport { EventDef, EventDefHash } from './structs/event-def'\nexport { EventInstance, EventInstanceHash, createEventInstance } from './structs/event-instance'\nexport { EventInput, EventRefined, parseEventDef, EventTuple, EventRefiners, refineEventDef } from './structs/event-parse'\nexport { BusinessHoursInput, parseBusinessHours } from './structs/business-hours'\n\nexport {\n  padStart,\n  isInt,\n  parseFieldSpecs,\n  compareByFieldSpecs,\n  compareByFieldSpec,\n  flexibleCompare,\n  preventSelection, allowSelection, preventContextMenu, allowContextMenu,\n  compareNumbers, enableCursor, disableCursor,\n  guid,\n  computeSmallestCellWidth,\n  OrderSpec,\n} from './util/misc'\n\nexport {\n  computeVisibleDayRange,\n  isMultiDayRange,\n  diffDates,\n} from './util/date'\n\nexport {\n  removeExact,\n  isArraysEqual,\n} from './util/array'\n\nexport { memoize, memoizeObjArg, memoizeArraylike, memoizeHashlike, MemoizeHashFunc, MemoiseArrayFunc } from './util/memoize'\n\nexport {\n  intersectRects,\n  Rect, pointInsideRect,\n  constrainPoint,\n  getRectCenter, diffPoints, Point,\n  translateRect,\n} from './util/geom'\n\nexport { mapHash, filterHash, isPropsEqual, compareObjs, buildHashFromArray, collectFromHash, getUnequalProps } from './util/object'\n\nexport {\n  findElements,\n  findDirectChildren,\n  removeElement,\n  applyStyle,\n  applyStyleProp,\n  elementMatches,\n  elementClosest,\n  getElRoot,\n  getEventTargetViaRoot,\n  getUniqueDomId,\n} from './util/dom-manip'\nexport { parseClassNames } from './util/html'\n\nexport { getCanVGrowWithinCell } from './util/table-styling'\n\nexport {\n  EventStore,\n  filterEventStoreDefs,\n  createEmptyEventStore,\n  mergeEventStores,\n  getRelevantEvents,\n  eventTupleToStore,\n} from './structs/event-store'\nexport { EventUiHash, EventUi, combineEventUis, createEventUi } from './component/event-ui'\nexport { Splitter, SplittableProps } from './component/event-splitting'\nexport { getDayClassNames, getDateMeta, DateMeta, getSlotClassNames } from './component/date-rendering'\nexport { buildNavLinkAttrs } from './common/nav-link'\n\nexport {\n  preventDefault,\n  listenBySelector,\n  whenTransitionDone,\n  createAriaClickAttrs,\n} from './util/dom-event'\n\nexport {\n  computeInnerRect,\n  computeEdges,\n  computeHeightAndMargins,\n  getClippingParents,\n  computeRect,\n} from './util/dom-geom'\n\nexport { unpromisify } from './util/promise'\n\nexport { Emitter } from './common/Emitter'\nexport { DateRange, rangeContainsMarker, intersectRanges, rangesEqual, rangesIntersect, rangeContainsRange } from './datelib/date-range'\nexport { PositionCache } from './common/PositionCache'\nexport { ScrollController, ElementScrollController, WindowScrollController } from './common/scroll-controller'\nexport { Theme } from './theme/Theme'\nexport { ViewContext, ViewContextType } from './ViewContext'\nexport { DateComponent, Seg, EventSegUiInteractionState } from './component/DateComponent'\nexport { CalendarData } from './reducers/data-types'\nexport { CalendarDataManager } from './reducers/CalendarDataManager'\nexport { CalendarDataProvider, CalendarDataProviderProps } from './component/CalendarDataProvider'\nexport { ViewProps, sliceEvents } from './View'\n\nexport { DateProfileGenerator, DateProfile } from './DateProfileGenerator'\nexport { ViewDef } from './structs/view-def'\nexport { ViewSpec } from './structs/view-spec'\nexport { DateSpan, DateSpanApi, DatePointApi, isDateSpansEqual } from './structs/date-span'\n\nexport {\n  DateMarker,\n  addDays,\n  startOfDay,\n  addMs,\n  addWeeks,\n  diffWeeks,\n  diffWholeWeeks,\n  diffWholeDays,\n  diffDayAndTime,\n  diffDays,\n  isValidDate,\n} from './datelib/marker'\nexport {\n  Duration, createDuration,\n  asCleanDays, multiplyDuration, addDurations,\n  asRoughMinutes, asRoughSeconds, asRoughMs,\n  wholeDivideDurations, greatestDurationDenominator,\n} from './datelib/duration'\nexport { DateEnv, DateMarkerMeta } from './datelib/env'\n\nexport {\n  createFormatter,\n  FormatterInput,\n} from './datelib/formatting'\nexport {\n  DateFormatter,\n  VerboseFormattingArg,\n} from './datelib/DateFormatter'\nexport {\n  formatIsoTimeString,\n  formatDayString,\n  buildIsoString,\n} from './datelib/formatting-utils'\nexport { NamedTimeZoneImpl } from './datelib/timezone'\nexport { parse as parseMarker } from './datelib/parsing'\nexport { LocaleInput } from './datelib/locale'\n\nexport { EventSourceDef } from './structs/event-source-def'\nexport { EventSource, EventSourceHash } from './structs/event-source'\nexport { EventSourceRefiners, EventSourceRefined } from './structs/event-source-parse'\n\nexport {\n  SegSpan, SegRect, SegHierarchy, SegEntry, SegInsertion, buildEntryKey,\n  getEntrySpanEnd, binarySearch, SegEntryGroup, groupIntersectingEntries,\n  joinSpans, intersectSpans,\n} from './seg-hierarchy'\n\nexport {\n  Interaction,\n  InteractionSettings,\n  interactionSettingsToStore,\n  interactionSettingsStore,\n  InteractionSettingsStore,\n} from './interactions/interaction'\nexport { PointerDragEvent } from './interactions/pointer'\nexport { Hit } from './interactions/hit'\nexport { dateSelectionJoinTransformer } from './interactions/date-selecting'\nexport { eventDragMutationMassager, EventDropTransformers } from './interactions/event-dragging'\nexport { ElementDragging } from './interactions/ElementDragging'\n\nexport { config } from './global-config'\nexport { globalLocales } from './global-locales'\n\nexport { RecurringType, ParsedRecurring } from './structs/recurring-event'\n\nexport { DragMetaInput, DragMeta, parseDragMeta } from './structs/drag-meta'\n\nexport { PluginDef, PluginDefInput, ViewPropsTransformer, ViewContainerAppend } from './plugin-system-struct'\nexport { createPlugin } from './plugin-system'\nexport { Action } from './reducers/Action'\nexport { CalendarContext } from './CalendarContext'\nexport { CalendarContentProps, CalendarContent } from './CalendarContent'\nexport { CalendarRoot } from './CalendarRoot'\n\nexport { DayHeader } from './common/DayHeader'\nexport { computeFallbackHeaderFormat } from './common/table-utils'\nexport { TableDateCell } from './common/TableDateCell'\nexport { TableDowCell } from './common/TableDowCell'\n\nexport { DaySeriesModel } from './common/DaySeriesModel'\n\nexport { EventInteractionState } from './interactions/event-interaction-state'\nexport {\n  EventRenderRange, sliceEventStore, hasBgRendering, setElSeg, getElSeg,\n  computeSegDraggable, computeSegStartResizable, computeSegEndResizable,\n  getEventClassNames, buildSegTimeText,\n  buildSegCompareObj, sortEventSegs,\n  getSegMeta, EventContentArg, buildEventRangeKey,\n  getSegAnchorAttrs,\n} from './component/event-rendering'\n\nexport { DayTableModel, DayTableSeg, DayTableCell } from './common/DayTableModel'\n\nexport { Slicer, SlicedProps } from './common/slicing-utils'\n\nexport { EventMutation, applyMutationToEventStore } from './structs/event-mutation'\nexport { Constraint, ConstraintInput, AllowFunc } from './structs/constraint'\nexport { isPropsValid, isInteractionValid, isDateSelectionValid } from './validation'\n\nexport { requestJson } from './util/requestJson'\n\nexport * from './vdom'\nexport { BaseComponent, setRef } from './vdom-util'\nexport { DelayedRunner } from './util/DelayedRunner'\n\nexport {\n  ScrollGridProps,\n  ScrollGridSectionConfig,\n  ColGroupConfig,\n  ScrollGridImpl,\n  ScrollGridChunkConfig,\n} from './scrollgrid/ScrollGridImpl'\nexport { SimpleScrollGrid, SimpleScrollGridSection } from './scrollgrid/SimpleScrollGrid'\nexport {\n  CssDimValue, ScrollerLike, SectionConfig, ColProps, ChunkConfig, hasShrinkWidth, renderMicroColGroup,\n  getScrollGridClassNames, getSectionClassNames, getSectionHasLiquidHeight, getAllowYScrolling, renderChunkContent, computeShrinkWidth,\n  ChunkContentCallbackArgs,\n  sanitizeShrinkWidth,\n  ChunkConfigRowContent, ChunkConfigContent,\n  isColPropsEqual,\n  renderScrollShim,\n  getStickyFooterScrollbar,\n  getStickyHeaderDates,\n} from './scrollgrid/util'\nexport { Scroller, ScrollerProps, OverflowValue } from './scrollgrid/Scroller'\nexport { getScrollbarWidths } from './util/scrollbar-width'\nexport { RefMap } from './util/RefMap'\nexport { getIsRtlScrollbarOnLeft } from './util/scrollbar-side'\n\nexport { NowTimer } from './NowTimer'\nexport { ScrollResponder, ScrollRequest } from './ScrollResponder'\nexport { globalPlugins } from './global-plugins'\nexport {\n  RenderHook, RenderHookProps, RenderHookPropsChildren, MountHook, MountHookProps, buildClassNameNormalizer, ContentHook,\n  CustomContentRenderContext, ClassNamesGenerator, CustomContentGenerator, DidMountHandler, WillUnmountHandler, MountArg,\n} from './common/render-hook'\nexport { StandardEvent, StandardEventProps } from './common/StandardEvent'\nexport { NowIndicatorRoot, NowIndicatorRootProps } from './common/NowIndicatorRoot'\n\nexport { DayCellRoot, DayCellRootProps, DayCellContentArg } from './common/DayCellRoot'\nexport { DayCellContent, DayCellContentProps } from './common/DayCellContent'\nexport { EventRoot, MinimalEventProps } from './common/EventRoot'\nexport { renderFill, BgEvent, BgEventProps } from './common/bg-fill'\nexport { WeekNumberRoot, WeekNumberRootProps } from './common/WeekNumberRoot'\nexport { MoreLinkRoot, MoreLinkRootProps, MoreLinkContentArg, MoreLinkMountArg, computeEarliestSegStart } from './common/MoreLinkRoot'\n\nexport { ViewRoot, ViewRootProps } from './common/ViewRoot'\nexport { triggerDateSelect, DatePointTransform, DateSpanTransform, DateSelectionApi, getDefaultEventEnd } from './calendar-utils'\n", "import {\n  CalendarOptions, Action, CalendarContent, render, createElement, DelayedRunner, CssDimValue, applyStyleProp,\n  CalendarApi, CalendarRoot, isArraysEqual, CalendarDataManager, CalendarData,\n  CustomContentRenderContext, flushSync, unmountComponentAtNode,\n} from '@fullcalendar/common'\n\nexport class Calendar extends CalendarApi {\n  currentData: CalendarData\n  renderRunner: DelayedRunner\n  el: HTMLElement\n  isRendering = false\n  isRendered = false\n  currentClassNames: string[] = []\n  customContentRenderId = 0 // will affect custom generated classNames?\n\n  get view() { return this.currentData.viewApi } // for public API\n\n  constructor(el: HTMLElement, optionOverrides: CalendarOptions = {}) {\n    super()\n\n    this.el = el\n    this.renderRunner = new DelayedRunner(this.handleRenderRequest)\n\n    new CalendarDataManager({ // eslint-disable-line no-new\n      optionOverrides,\n      calendarApi: this,\n      onAction: this.handleAction,\n      onData: this.handleData,\n    })\n  }\n\n  handleAction = (action: Action) => {\n    // actions we know we want to render immediately\n    switch (action.type) {\n      case 'SET_EVENT_DRAG':\n      case 'SET_EVENT_RESIZE':\n        this.renderRunner.tryDrain()\n    }\n  }\n\n  handleData = (data: CalendarData) => {\n    this.currentData = data\n    this.renderRunner.request(data.calendarOptions.rerenderDelay)\n  }\n\n  handleRenderRequest = () => {\n    if (this.isRendering) {\n      this.isRendered = true\n      let { currentData } = this\n\n      flushSync(() => {\n        render(\n          <CalendarRoot options={currentData.calendarOptions} theme={currentData.theme} emitter={currentData.emitter}>\n            {(classNames, height, isHeightAuto, forPrint) => {\n              this.setClassNames(classNames)\n              this.setHeight(height)\n\n              return (\n                <CustomContentRenderContext.Provider value={this.customContentRenderId}>\n                  <CalendarContent\n                    isHeightAuto={isHeightAuto}\n                    forPrint={forPrint}\n                    {...currentData}\n                  />\n                </CustomContentRenderContext.Provider>\n              )\n            }}\n          </CalendarRoot>,\n          this.el,\n        )\n      })\n    } else if (this.isRendered) {\n      this.isRendered = false\n      unmountComponentAtNode(this.el)\n      this.setClassNames([])\n      this.setHeight('')\n    }\n  }\n\n  render() {\n    let wasRendering = this.isRendering\n\n    if (!wasRendering) {\n      this.isRendering = true\n    } else {\n      this.customContentRenderId += 1\n    }\n\n    this.renderRunner.request()\n\n    if (wasRendering) {\n      this.updateSize()\n    }\n  }\n\n  destroy() {\n    if (this.isRendering) {\n      this.isRendering = false\n      this.renderRunner.request()\n    }\n  }\n\n  updateSize() {\n    flushSync(() => {\n      super.updateSize()\n    })\n  }\n\n  batchRendering(func) {\n    this.renderRunner.pause('batchRendering')\n    func()\n    this.renderRunner.resume('batchRendering')\n  }\n\n  pauseRendering() { // available to plugins\n    this.renderRunner.pause('pauseRendering')\n  }\n\n  resumeRendering() { // available to plugins\n    this.renderRunner.resume('pauseRendering', true)\n  }\n\n  resetOptions(optionOverrides, append?) {\n    this.currentDataManager.resetOptions(optionOverrides, append)\n  }\n\n  setClassNames(classNames: string[]) {\n    if (!isArraysEqual(classNames, this.currentClassNames)) {\n      let { classList } = this.el\n\n      for (let className of this.currentClassNames) {\n        classList.remove(className)\n      }\n\n      for (let className of classNames) {\n        classList.add(className)\n      }\n\n      this.currentClassNames = classNames\n    }\n  }\n\n  setHeight(height: CssDimValue) {\n    applyStyleProp(this.el, 'height', height)\n  }\n}\n", "import {\n  VNode, createElement,\n  SimpleScrollGrid,\n  SimpleScrollGridSection,\n  ChunkContentCallbackArgs,\n  createRef,\n  ScrollGridSectionConfig,\n  ViewRoot,\n  DateComponent,\n  ViewProps,\n  RefObject,\n  renderScrollShim,\n  getStickyHeaderDates,\n  getStickyFooterScrollbar,\n  ChunkConfigRowContent,\n  Dictionary,\n} from '@fullcalendar/common'\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\n\nexport abstract class TableView<State=Dictionary> extends DateComponent<ViewProps, State> {\n  protected headerElRef: RefObject<HTMLTableCellElement> = createRef<HTMLTableCellElement>()\n\n  renderSimpleLayout(\n    headerRowContent: ChunkConfigRowContent,\n    bodyContent: (contentArg: ChunkContentCallbackArgs) => VNode,\n  ) {\n    let { props, context } = this\n    let sections: SimpleScrollGridSection[] = []\n    let stickyHeaderDates = getStickyHeaderDates(context.options)\n\n    if (headerRowContent) {\n      sections.push({\n        type: 'header',\n        key: 'header',\n        isSticky: stickyHeaderDates,\n        chunk: {\n          elRef: this.headerElRef,\n          tableClassName: 'fc-col-header',\n          rowContent: headerRowContent,\n        },\n      })\n    }\n\n    sections.push({\n      type: 'body',\n      key: 'body',\n      liquid: true,\n      chunk: { content: bodyContent },\n    })\n\n    return (\n      <ViewRoot viewSpec={context.viewSpec}>\n        {(rootElRef, classNames) => (\n          <div ref={rootElRef} className={['fc-daygrid'].concat(classNames).join(' ')}>\n            <SimpleScrollGrid\n              liquid={!props.isHeightAuto && !props.forPrint}\n              collapsibleWidth={props.forPrint}\n              cols={[] /* TODO: make optional? */}\n              sections={sections}\n            />\n          </div>\n        )}\n      </ViewRoot>\n    )\n  }\n\n  renderHScrollLayout(\n    headerRowContent: ChunkConfigRowContent,\n    bodyContent: (contentArg: ChunkContentCallbackArgs) => VNode,\n    colCnt: number,\n    dayMinWidth: number,\n  ) {\n    let ScrollGrid = this.context.pluginHooks.scrollGridImpl\n\n    if (!ScrollGrid) {\n      throw new Error('No ScrollGrid implementation')\n    }\n\n    let { props, context } = this\n    let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options)\n    let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options)\n    let sections: ScrollGridSectionConfig[] = []\n\n    if (headerRowContent) {\n      sections.push({\n        type: 'header',\n        key: 'header',\n        isSticky: stickyHeaderDates,\n        chunks: [{\n          key: 'main',\n          elRef: this.headerElRef,\n          tableClassName: 'fc-col-header',\n          rowContent: headerRowContent,\n        }],\n      })\n    }\n\n    sections.push({\n      type: 'body',\n      key: 'body',\n      liquid: true,\n      chunks: [{\n        key: 'main',\n        content: bodyContent,\n      }],\n    })\n\n    if (stickyFooterScrollbar) {\n      sections.push({\n        type: 'footer',\n        key: 'footer',\n        isSticky: true,\n        chunks: [{\n          key: 'main',\n          content: renderScrollShim,\n        }],\n      })\n    }\n\n    return (\n      <ViewRoot viewSpec={context.viewSpec}>\n        {(rootElRef, classNames) => (\n          <div ref={rootElRef} className={['fc-daygrid'].concat(classNames).join(' ')}>\n            <ScrollGrid\n              liquid={!props.isHeightAuto && !props.forPrint}\n              collapsibleWidth={props.forPrint}\n              colGroups={[{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }]}\n              sections={sections}\n            />\n          </div>\n        )}\n      </ViewRoot>\n    )\n  }\n}\n", "import { EventSegUiInteractionState, Seg } from '@fullcalendar/common'\n\n// this is a DATA STRUCTURE, not a component\n\nexport interface TableSeg extends Seg {\n  row: number\n  firstCol: number\n  lastCol: number\n}\n\nexport function splitSegsByRow(segs: TableSeg[], rowCnt: number) {\n  let byRow: TableSeg[][] = []\n\n  for (let i = 0; i < rowCnt; i += 1) {\n    byRow[i] = []\n  }\n\n  for (let seg of segs) {\n    byRow[seg.row].push(seg)\n  }\n\n  return byRow\n}\n\nexport function splitSegsByFirstCol(segs: TableSeg[], colCnt: number) {\n  let byCol: TableSeg[][] = []\n\n  for (let i = 0; i < colCnt; i += 1) {\n    byCol[i] = []\n  }\n\n  for (let seg of segs) {\n    byCol[seg.firstCol].push(seg)\n  }\n\n  return byCol\n}\n\nexport function splitInteractionByRow(ui: EventSegUiInteractionState | null, rowCnt: number) {\n  let byRow: EventSegUiInteractionState[] = []\n\n  if (!ui) {\n    for (let i = 0; i < rowCnt; i += 1) {\n      byRow[i] = null\n    }\n  } else {\n    for (let i = 0; i < rowCnt; i += 1) {\n      byRow[i] = {\n        affectedInstances: ui.affectedInstances,\n        isEvent: ui.isEvent,\n        segs: [],\n      }\n    }\n\n    for (let seg of ui.segs) {\n      byRow[seg.row].segs.push(seg)\n    }\n  }\n\n  return byRow\n}\n", "import {\n  createElement,\n  DateMarker,\n  DateRange,\n  DayCellContentArg,\n  DayCellContent,\n  BaseComponent,\n  DateProfile,\n  Dictionary,\n  Fragment,\n  buildNavLinkAttrs,\n} from '@fullcalendar/common'\n\ninterface TableCellTopProps {\n  date: DateMarker\n  dateProfile: DateProfile\n  showDayNumber: boolean\n  dayNumberId: string\n  forceDayTop: boolean // hack to force-create an element with height (created by a nbsp)\n  todayRange: DateRange\n  extraHookProps?: Dictionary\n}\n\nexport class TableCellTop extends BaseComponent<TableCellTopProps> {\n  render() {\n    let { props } = this\n    let navLinkAttrs = buildNavLinkAttrs(this.context, props.date)\n\n    return (\n      <DayCellContent\n        date={props.date}\n        dateProfile={props.dateProfile}\n        todayRange={props.todayRange}\n        showDayNumber={props.showDayNumber}\n        extraHookProps={props.extraHookProps}\n        defaultContent={renderTopInner}\n      >\n        {(innerElRef, innerContent) => (\n          (innerContent || props.forceDayTop) && (\n            <div className=\"fc-daygrid-day-top\" ref={innerElRef}>\n              <a\n                id={props.dayNumberId}\n                className=\"fc-daygrid-day-number\"\n                {...navLinkAttrs}\n              >\n                {innerContent || <Fragment>&nbsp;</Fragment>}\n              </a>\n            </div>\n          )\n        )}\n      </DayCellContent>\n    )\n  }\n}\n\nfunction renderTopInner(props: DayCellContentArg) {\n  return props.dayNumberText\n}\n", "import { createFormatter } from '@fullcalendar/common'\nimport { TableSeg } from './TableSeg'\n\nexport const DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n  hour: 'numeric',\n  minute: '2-digit',\n  omitZeroMinute: true,\n  meridiem: 'narrow',\n})\n\nexport function hasListItemDisplay(seg: TableSeg) {\n  let { display } = seg.eventRange.ui\n\n  return display === 'list-item' || (\n    display === 'auto' &&\n    !seg.eventRange.def.allDay &&\n    seg.firstCol === seg.lastCol && // can't be multi-day\n    seg.isStart && // \"\n    seg.isEnd // \"\n  )\n}\n", "import { createElement, StandardEvent, BaseComponent, MinimalEventProps } from '@fullcalendar/common'\nimport { DEFAULT_TABLE_EVENT_TIME_FORMAT } from './event-rendering'\n\nexport interface TableBlockEventProps extends MinimalEventProps {\n  defaultDisplayEventEnd: boolean\n}\n\nexport class TableBlockEvent extends BaseComponent<TableBlockEventProps> {\n  render() {\n    let { props } = this\n\n    return (\n      <StandardEvent\n        {...props}\n        extraClassNames={['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event']}\n        defaultTimeFormat={DEFAULT_TABLE_EVENT_TIME_FORMAT}\n        defaultDisplayEventEnd={props.defaultDisplayEventEnd}\n        disableResizing={!props.seg.eventRange.def.allDay}\n      />\n    )\n  }\n}\n", "import {\n  createElement,\n  BaseComponent,\n  Seg,\n  EventRoot,\n  buildSegTimeText,\n  EventContentArg,\n  Fragment,\n  getSegAnchorAttrs,\n} from '@fullcalendar/common'\nimport { DEFAULT_TABLE_EVENT_TIME_FORMAT } from './event-rendering'\n\nexport interface DotTableEventProps {\n  seg: Seg\n  isDragging: boolean\n  isSelected: boolean\n  isPast: boolean\n  isFuture: boolean\n  isToday: boolean\n  defaultDisplayEventEnd: boolean\n}\n\nexport class TableListItemEvent extends BaseComponent<DotTableEventProps> {\n  render() {\n    let { props, context } = this\n    let timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT\n    let timeText = buildSegTimeText(\n      props.seg,\n      timeFormat,\n      context,\n      true,\n      props.defaultDisplayEventEnd,\n    )\n\n    return (\n      <EventRoot\n        seg={props.seg}\n        timeText={timeText}\n        defaultContent={renderInnerContent}\n        isDragging={props.isDragging}\n        isResizing={false}\n        isDateSelecting={false}\n        isSelected={props.isSelected}\n        isPast={props.isPast}\n        isFuture={props.isFuture}\n        isToday={props.isToday}\n      >\n        {(rootElRef, classNames, innerElRef, innerContent) => ( // we don't use styles!\n          <a\n            className={['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' ')}\n            ref={rootElRef}\n            {...getSegAnchorAttrs(props.seg, context)}\n          >\n            {innerContent}\n          </a>\n        )}\n      </EventRoot>\n    )\n  }\n}\n\nfunction renderInnerContent(innerProps: EventContentArg) {\n  return (\n    <Fragment>\n      <div\n        className=\"fc-daygrid-event-dot\"\n        style={{ borderColor: innerProps.borderColor || innerProps.backgroundColor }}\n      />\n      {innerProps.timeText && (\n        <div className=\"fc-event-time\">{innerProps.timeText}</div>\n      )}\n      <div className=\"fc-event-title\">\n        {innerProps.event.title || <Fragment>&nbsp;</Fragment>}\n      </div>\n    </Fragment>\n  )\n}\n", "import {\n  createElement,\n  MoreLinkRoot,\n  RefObject,\n  BaseComponent,\n  memoize,\n  DateMarker,\n  Dictionary,\n  DateProfile,\n  DateRange,\n  EventSegUiInteractionState,\n  getSegMeta,\n  Fragment,\n  createAriaClickAttrs,\n} from '@fullcalendar/common'\nimport { TableSegPlacement } from './event-placement'\nimport { hasListItemDisplay } from './event-rendering'\nimport { TableBlockEvent } from './TableBlockEvent'\nimport { TableListItemEvent } from './TableListItemEvent'\nimport { TableSeg } from './TableSeg'\n\nexport interface TableCellMoreLinkProps {\n  allDayDate: DateMarker\n  singlePlacements: TableSegPlacement[]\n  moreCnt: number\n  alignmentElRef: RefObject<HTMLElement> // for popover\n  alignGridTop: boolean // for popover\n  extraDateSpan?: Dictionary\n  dateProfile: DateProfile\n  todayRange: DateRange\n  eventSelection: string\n  eventDrag: EventSegUiInteractionState | null\n  eventResize: EventSegUiInteractionState | null\n}\n\nexport class TableCellMoreLink extends BaseComponent<TableCellMoreLinkProps> {\n  compileSegs = memoize(compileSegs)\n\n  render() {\n    let { props } = this\n    let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements)\n\n    return (\n      <MoreLinkRoot\n        dateProfile={props.dateProfile}\n        todayRange={props.todayRange}\n        allDayDate={props.allDayDate}\n        moreCnt={props.moreCnt}\n        allSegs={allSegs}\n        hiddenSegs={invisibleSegs}\n        alignmentElRef={props.alignmentElRef}\n        alignGridTop={props.alignGridTop}\n        extraDateSpan={props.extraDateSpan}\n        popoverContent={() => {\n          let isForcedInvisible =\n            (props.eventDrag ? props.eventDrag.affectedInstances : null) ||\n            (props.eventResize ? props.eventResize.affectedInstances : null) ||\n            {}\n          return (\n            <Fragment>\n              {allSegs.map((seg) => {\n                let instanceId = seg.eventRange.instance.instanceId\n                return (\n                  <div\n                    className=\"fc-daygrid-event-harness\"\n                    key={instanceId}\n                    style={{\n                      visibility: isForcedInvisible[instanceId] ? 'hidden' : ('' as any),\n                    }}\n                  >\n                    {hasListItemDisplay(seg) ? (\n                      <TableListItemEvent\n                        seg={seg}\n                        isDragging={false}\n                        isSelected={instanceId === props.eventSelection}\n                        defaultDisplayEventEnd={false}\n                        {...getSegMeta(seg, props.todayRange)}\n                      />\n                    ) : (\n                      <TableBlockEvent\n                        seg={seg}\n                        isDragging={false}\n                        isResizing={false}\n                        isDateSelecting={false}\n                        isSelected={instanceId === props.eventSelection}\n                        defaultDisplayEventEnd={false}\n                        {...getSegMeta(seg, props.todayRange)}\n                      />\n                    )}\n                  </div>\n                )\n              })}\n            </Fragment>\n          )\n        }}\n      >\n        {(rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) => (\n          <a\n            ref={rootElRef}\n            className={['fc-daygrid-more-link'].concat(classNames).join(' ')}\n            title={title}\n            aria-expanded={isExpanded}\n            aria-controls={popoverId}\n            {...createAriaClickAttrs(handleClick)}\n          >\n            {innerContent}\n          </a>\n        )}\n      </MoreLinkRoot>\n    )\n  }\n}\n\nfunction compileSegs(singlePlacements: TableSegPlacement[]): {\n  allSegs: TableSeg[]\n  invisibleSegs: TableSeg[]\n} {\n  let allSegs: TableSeg[] = []\n  let invisibleSegs: TableSeg[] = []\n\n  for (let placement of singlePlacements) {\n    allSegs.push(placement.seg)\n\n    if (!placement.isVisible) {\n      invisibleSegs.push(placement.seg)\n    }\n  }\n\n  return { allSegs, invisibleSegs }\n}\n", "import {\n  Ref,\n  ComponentChildren,\n  createElement,\n  DateMarker,\n  DateComponent,\n  DateRange,\n  buildNavLinkAttrs,\n  WeekNumberRoot,\n  DayCellRoot,\n  DateProfile,\n  setRef,\n  createFormatter,\n  Dictionary,\n  createRef,\n  EventSegUiInteractionState,\n  getUniqueDomId,\n} from '@fullcalendar/common'\nimport { TableCellTop } from './TableCellTop'\nimport { TableCellMoreLink } from './TableCellMoreLink'\nimport { TableSegPlacement } from './event-placement'\n\nexport interface TableCellProps {\n  date: DateMarker\n  dateProfile: DateProfile\n  extraHookProps?: Dictionary\n  extraDataAttrs?: Dictionary\n  extraClassNames?: string[]\n  extraDateSpan?: Dictionary\n  elRef?: Ref<HTMLTableCellElement>\n  innerElRef?: Ref<HTMLDivElement>\n  bgContent: ComponentChildren\n  fgContentElRef?: Ref<HTMLDivElement> // TODO: rename!!! classname confusion. is the \"event\" div\n  fgContent: ComponentChildren\n  moreCnt: number\n  moreMarginTop: number\n  showDayNumber: boolean\n  showWeekNumber: boolean\n  forceDayTop: boolean\n  todayRange: DateRange\n  eventSelection: string\n  eventDrag: EventSegUiInteractionState | null\n  eventResize: EventSegUiInteractionState | null\n  singlePlacements: TableSegPlacement[]\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' })\n\nexport class TableCell extends DateComponent<TableCellProps> {\n  private rootElRef = createRef<HTMLElement>()\n  state = {\n    dayNumberId: getUniqueDomId(),\n  }\n\n  render() {\n    let { context, props, state, rootElRef } = this\n    let { date, dateProfile } = props\n    let navLinkAttrs = buildNavLinkAttrs(context, date, 'week')\n\n    return (\n      <DayCellRoot\n        date={date}\n        dateProfile={dateProfile}\n        todayRange={props.todayRange}\n        showDayNumber={props.showDayNumber}\n        extraHookProps={props.extraHookProps}\n        elRef={this.handleRootEl}\n      >\n        {(dayElRef, dayClassNames, rootDataAttrs, isDisabled) => (\n          <td\n            ref={dayElRef}\n            role=\"gridcell\"\n            className={['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ')}\n            {...rootDataAttrs}\n            {...props.extraDataAttrs}\n            {...(props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})}\n          >\n            <div className=\"fc-daygrid-day-frame fc-scrollgrid-sync-inner\" ref={props.innerElRef /* different from hook system! RENAME */}>\n              {props.showWeekNumber && (\n                <WeekNumberRoot date={date} defaultFormat={DEFAULT_WEEK_NUM_FORMAT}>\n                  {(weekElRef, weekClassNames, innerElRef, innerContent) => (\n                    <a\n                      ref={weekElRef}\n                      className={['fc-daygrid-week-number'].concat(weekClassNames).join(' ')}\n                      {...navLinkAttrs}\n                    >\n                      {innerContent}\n                    </a>\n                  )}\n                </WeekNumberRoot>\n              )}\n              {!isDisabled && (\n                <TableCellTop\n                  date={date}\n                  dateProfile={dateProfile}\n                  showDayNumber={props.showDayNumber}\n                  dayNumberId={state.dayNumberId}\n                  forceDayTop={props.forceDayTop}\n                  todayRange={props.todayRange}\n                  extraHookProps={props.extraHookProps}\n                />\n              )}\n              <div\n                className=\"fc-daygrid-day-events\"\n                ref={props.fgContentElRef}\n              >\n                {props.fgContent}\n                <div className=\"fc-daygrid-day-bottom\" style={{ marginTop: props.moreMarginTop }}>\n                  <TableCellMoreLink\n                    allDayDate={date}\n                    singlePlacements={props.singlePlacements}\n                    moreCnt={props.moreCnt}\n                    alignmentElRef={rootElRef}\n                    alignGridTop={!props.showDayNumber}\n                    extraDateSpan={props.extraDateSpan}\n                    dateProfile={props.dateProfile}\n                    eventSelection={props.eventSelection}\n                    eventDrag={props.eventDrag}\n                    eventResize={props.eventResize}\n                    todayRange={props.todayRange}\n                  />\n                </div>\n              </div>\n              <div className=\"fc-daygrid-day-bg\">\n                {props.bgContent}\n              </div>\n            </div>\n          </td>\n        )}\n      </DayCellRoot>\n    )\n  }\n\n  handleRootEl = (el: HTMLElement) => {\n    setRef(this.rootElRef, el)\n    setRef(this.props.elRef, el)\n  }\n}\n", "import {\n  SegHierarchy,\n  SegRect,\n  SegEntry,\n  SegInsertion,\n  buildEntryKey,\n  EventRenderRange,\n  intersectRanges,\n  addDays,\n  DayTableCell,\n  intersectSpans,\n} from '@fullcalendar/common'\nimport { TableSeg } from './TableSeg'\n\nexport interface TableSegPlacement {\n  seg: TableSeg\n  isVisible: boolean\n  isAbsolute: boolean\n  absoluteTop: number // populated regardless of isAbsolute\n  marginTop: number\n}\n\nexport function computeFgSegPlacement(\n  segs: TableSeg[], // assumed already sorted\n  dayMaxEvents: boolean | number,\n  dayMaxEventRows: boolean | number,\n  strictOrder: boolean,\n  eventInstanceHeights: { [instanceId: string]: number },\n  maxContentHeight: number | null,\n  cells: DayTableCell[],\n) {\n  let hierarchy = new DayGridSegHierarchy()\n  hierarchy.allowReslicing = true\n  hierarchy.strictOrder = strictOrder\n\n  if (dayMaxEvents === true || dayMaxEventRows === true) {\n    hierarchy.maxCoord = maxContentHeight\n    hierarchy.hiddenConsumes = true\n  } else if (typeof dayMaxEvents === 'number') {\n    hierarchy.maxStackCnt = dayMaxEvents\n  } else if (typeof dayMaxEventRows === 'number') {\n    hierarchy.maxStackCnt = dayMaxEventRows\n    hierarchy.hiddenConsumes = true\n  }\n\n  // create segInputs only for segs with known heights\n  let segInputs: SegEntry[] = []\n  let unknownHeightSegs: TableSeg[] = []\n  for (let i = 0; i < segs.length; i += 1) {\n    let seg = segs[i]\n    let { instanceId } = seg.eventRange.instance\n    let eventHeight = eventInstanceHeights[instanceId]\n\n    if (eventHeight != null) {\n      segInputs.push({\n        index: i,\n        thickness: eventHeight,\n        span: {\n          start: seg.firstCol,\n          end: seg.lastCol + 1,\n        },\n      })\n    } else {\n      unknownHeightSegs.push(seg)\n    }\n  }\n\n  let hiddenEntries = hierarchy.addSegs(segInputs)\n  let segRects = hierarchy.toRects()\n  let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells)\n\n  let moreCnts: number[] = []\n  let moreMarginTops: number[] = []\n\n  // add segs with unknown heights\n  for (let seg of unknownHeightSegs) {\n    multiColPlacements[seg.firstCol].push({\n      seg,\n      isVisible: false,\n      isAbsolute: true,\n      absoluteTop: 0,\n      marginTop: 0,\n    })\n\n    for (let col = seg.firstCol; col <= seg.lastCol; col += 1) {\n      singleColPlacements[col].push({\n        seg: resliceSeg(seg, col, col + 1, cells),\n        isVisible: false,\n        isAbsolute: false,\n        absoluteTop: 0,\n        marginTop: 0,\n      })\n    }\n  }\n\n  // add the hidden entries\n  for (let col = 0; col < cells.length; col += 1) {\n    moreCnts.push(0)\n  }\n  for (let hiddenEntry of hiddenEntries) {\n    let seg = segs[hiddenEntry.index]\n    let hiddenSpan = hiddenEntry.span\n\n    multiColPlacements[hiddenSpan.start].push({\n      seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),\n      isVisible: false,\n      isAbsolute: true,\n      absoluteTop: 0,\n      marginTop: 0,\n    })\n\n    for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {\n      moreCnts[col] += 1\n      singleColPlacements[col].push({\n        seg: resliceSeg(seg, col, col + 1, cells),\n        isVisible: false,\n        isAbsolute: false,\n        absoluteTop: 0,\n        marginTop: 0,\n      })\n    }\n  }\n\n  // deal with leftover margins\n  for (let col = 0; col < cells.length; col += 1) {\n    moreMarginTops.push(leftoverMargins[col])\n  }\n\n  return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops }\n}\n\n// rects ordered by top coord, then left\nfunction placeRects(allRects: SegRect[], segs: TableSeg[], cells: DayTableCell[]) {\n  let rectsByEachCol = groupRectsByEachCol(allRects, cells.length)\n  let singleColPlacements: TableSegPlacement[][] = []\n  let multiColPlacements: TableSegPlacement[][] = []\n  let leftoverMargins: number[] = []\n\n  for (let col = 0; col < cells.length; col += 1) {\n    let rects = rectsByEachCol[col]\n\n    // compute all static segs in singlePlacements\n    let singlePlacements: TableSegPlacement[] = []\n    let currentHeight = 0\n    let currentMarginTop = 0\n    for (let rect of rects) {\n      let seg = segs[rect.index]\n      singlePlacements.push({\n        seg: resliceSeg(seg, col, col + 1, cells),\n        isVisible: true,\n        isAbsolute: false,\n        absoluteTop: rect.levelCoord,\n        marginTop: rect.levelCoord - currentHeight,\n      })\n      currentHeight = rect.levelCoord + rect.thickness\n    }\n\n    // compute mixed static/absolute segs in multiPlacements\n    let multiPlacements: TableSegPlacement[] = []\n    currentHeight = 0\n    currentMarginTop = 0\n    for (let rect of rects) {\n      let seg = segs[rect.index]\n      let isAbsolute = rect.span.end - rect.span.start > 1 // multi-column?\n      let isFirstCol = rect.span.start === col\n\n      currentMarginTop += rect.levelCoord - currentHeight // amount of space since bottom of previous seg\n      currentHeight = rect.levelCoord + rect.thickness // height will now be bottom of current seg\n\n      if (isAbsolute) {\n        currentMarginTop += rect.thickness\n        if (isFirstCol) {\n          multiPlacements.push({\n            seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n            isVisible: true,\n            isAbsolute: true,\n            absoluteTop: rect.levelCoord,\n            marginTop: 0,\n          })\n        }\n      } else if (isFirstCol) {\n        multiPlacements.push({\n          seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n          isVisible: true,\n          isAbsolute: false,\n          absoluteTop: rect.levelCoord,\n          marginTop: currentMarginTop, // claim the margin\n        })\n        currentMarginTop = 0\n      }\n    }\n\n    singleColPlacements.push(singlePlacements)\n    multiColPlacements.push(multiPlacements)\n    leftoverMargins.push(currentMarginTop)\n  }\n\n  return { singleColPlacements, multiColPlacements, leftoverMargins }\n}\n\nfunction groupRectsByEachCol(rects: SegRect[], colCnt: number): SegRect[][] {\n  let rectsByEachCol: SegRect[][] = []\n\n  for (let col = 0; col < colCnt; col += 1) {\n    rectsByEachCol.push([])\n  }\n\n  for (let rect of rects) {\n    for (let col = rect.span.start; col < rect.span.end; col += 1) {\n      rectsByEachCol[col].push(rect)\n    }\n  }\n\n  return rectsByEachCol\n}\n\nfunction resliceSeg(seg: TableSeg, spanStart: number, spanEnd: number, cells: DayTableCell[]): TableSeg {\n  if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {\n    return seg\n  }\n\n  let eventRange = seg.eventRange\n  let origRange = eventRange.range\n  let slicedRange = intersectRanges(origRange, {\n    start: cells[spanStart].date,\n    end: addDays(cells[spanEnd - 1].date, 1),\n  })\n\n  return {\n    ...seg,\n    firstCol: spanStart,\n    lastCol: spanEnd - 1,\n    eventRange: {\n      def: eventRange.def,\n      ui: { ...eventRange.ui, durationEditable: false }, // hack to disable resizing\n      instance: eventRange.instance,\n      range: slicedRange,\n    } as EventRenderRange,\n    isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(),\n    isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf(),\n  }\n}\n\nclass DayGridSegHierarchy extends SegHierarchy {\n  // config\n  hiddenConsumes: boolean = false\n\n  // allows us to keep hidden entries in the hierarchy so they take up space\n  forceHidden: { [entryId: string]: true } = {}\n\n  addSegs(segInputs: SegEntry[]): SegEntry[] {\n    const hiddenSegs = super.addSegs(segInputs)\n    const { entriesByLevel } = this\n    const excludeHidden = (entry: SegEntry) => !this.forceHidden[buildEntryKey(entry)]\n\n    // remove the forced-hidden segs\n    for (let level = 0; level < entriesByLevel.length; level += 1) {\n      entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden)\n    }\n\n    return hiddenSegs\n  }\n\n  handleInvalidInsertion(insertion: SegInsertion, entry: SegEntry, hiddenEntries: SegEntry[]) {\n    const { entriesByLevel, forceHidden } = this\n    const { touchingEntry, touchingLevel, touchingLateral } = insertion\n\n    if (this.hiddenConsumes && touchingEntry) {\n      const touchingEntryId = buildEntryKey(touchingEntry)\n      // if not already hidden\n      if (!forceHidden[touchingEntryId]) {\n        if (this.allowReslicing) {\n          const placeholderEntry: SegEntry = { // placeholder of the \"more\" link\n            ...touchingEntry,\n            span: intersectSpans(touchingEntry.span, entry.span),\n          }\n          const placeholderEntryId = buildEntryKey(placeholderEntry)\n          forceHidden[placeholderEntryId] = true\n          entriesByLevel[touchingLevel][touchingLateral] = placeholderEntry // replace touchingEntry with our placeholder\n          this.splitEntry(touchingEntry, entry, hiddenEntries) // split up the touchingEntry, reinsert it\n        } else {\n          forceHidden[touchingEntryId] = true\n          hiddenEntries.push(touchingEntry)\n        }\n      }\n    }\n\n    return super.handleInvalidInsertion(insertion, entry, hiddenEntries)\n  }\n}\n", "import {\n  EventSegUiInteractionState,\n  VNode,\n  DateComponent,\n  createElement,\n  PositionCache,\n  RefMap,\n  CssDimValue,\n  DateRange,\n  getSegMeta,\n  DateProfile,\n  Fragment,\n  BgEvent,\n  renderFill,\n  isPropsEqual,\n  createRef,\n  buildEventRangeKey,\n  sortEventSegs,\n  DayTableCell,\n} from '@fullcalendar/common'\nimport { TableSeg, splitSegsByFirstCol } from './TableSeg'\nimport { TableCell } from './TableCell'\nimport { TableListItemEvent } from './TableListItemEvent'\nimport { TableBlockEvent } from './TableBlockEvent'\nimport { computeFgSegPlacement, TableSegPlacement } from './event-placement'\nimport { hasListItemDisplay } from './event-rendering'\n\n// TODO: attach to window resize?\n\nexport interface TableRowProps {\n  cells: DayTableCell[]\n  renderIntro?: () => VNode\n  businessHourSegs: TableSeg[]\n  bgEventSegs: TableSeg[]\n  fgEventSegs: TableSeg[]\n  dateSelectionSegs: TableSeg[]\n  eventSelection: string\n  eventDrag: EventSegUiInteractionState | null\n  eventResize: EventSegUiInteractionState | null\n  dayMaxEvents: boolean | number\n  dayMaxEventRows: boolean | number\n  clientWidth: number | null\n  clientHeight: number | null // simply for causing an updateSize, for when liquid height\n  dateProfile: DateProfile\n  todayRange: DateRange\n  showDayNumbers: boolean\n  showWeekNumbers: boolean\n  forPrint: boolean\n}\n\ninterface TableRowState {\n  framePositions: PositionCache\n  maxContentHeight: number | null\n  eventInstanceHeights: { [instanceId: string]: number } // integers\n}\n\nexport class TableRow extends DateComponent<TableRowProps, TableRowState> {\n  private cellElRefs = new RefMap<HTMLTableCellElement>() // the <td>\n  private frameElRefs = new RefMap<HTMLElement>() // the fc-daygrid-day-frame\n  private fgElRefs = new RefMap<HTMLDivElement>() // the fc-daygrid-day-events\n  private segHarnessRefs = new RefMap<HTMLDivElement>() // indexed by \"instanceId:firstCol\"\n  private rootElRef = createRef<HTMLTableRowElement>()\n\n  state: TableRowState = {\n    framePositions: null,\n    maxContentHeight: null,\n    eventInstanceHeights: {},\n  }\n\n  render() {\n    let { props, state, context } = this\n    let { options } = context\n    let colCnt = props.cells.length\n\n    let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt)\n    let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt)\n    let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt)\n    let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt)\n\n    let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(\n      sortEventSegs(props.fgEventSegs, options.eventOrder) as TableSeg[],\n      props.dayMaxEvents,\n      props.dayMaxEventRows,\n      options.eventOrderStrict,\n      state.eventInstanceHeights,\n      state.maxContentHeight,\n      props.cells,\n    )\n\n    let isForcedInvisible = // TODO: messy way to compute this\n      (props.eventDrag && props.eventDrag.affectedInstances) ||\n      (props.eventResize && props.eventResize.affectedInstances) ||\n      {}\n\n    return (\n      <tr ref={this.rootElRef} role=\"row\">\n        {props.renderIntro && props.renderIntro()}\n        {props.cells.map((cell, col) => {\n          let normalFgNodes = this.renderFgSegs(\n            col,\n            props.forPrint ? singleColPlacements[col] : multiColPlacements[col],\n            props.todayRange,\n            isForcedInvisible,\n          )\n\n          let mirrorFgNodes = this.renderFgSegs(\n            col,\n            buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements),\n            props.todayRange,\n            {},\n            Boolean(props.eventDrag),\n            Boolean(props.eventResize),\n            false, // date-selecting (because mirror is never drawn for date selection)\n          )\n\n          return (\n            <TableCell\n              key={cell.key}\n              elRef={this.cellElRefs.createRef(cell.key)}\n              innerElRef={this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */}\n              dateProfile={props.dateProfile}\n              date={cell.date}\n              showDayNumber={props.showDayNumbers}\n              showWeekNumber={props.showWeekNumbers && col === 0}\n              forceDayTop={props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */}\n              todayRange={props.todayRange}\n              eventSelection={props.eventSelection}\n              eventDrag={props.eventDrag}\n              eventResize={props.eventResize}\n              extraHookProps={cell.extraHookProps}\n              extraDataAttrs={cell.extraDataAttrs}\n              extraClassNames={cell.extraClassNames}\n              extraDateSpan={cell.extraDateSpan}\n              moreCnt={moreCnts[col]}\n              moreMarginTop={moreMarginTops[col]}\n              singlePlacements={singleColPlacements[col]}\n              fgContentElRef={this.fgElRefs.createRef(cell.key)}\n              fgContent={( // Fragment scopes the keys\n                <Fragment>\n                  <Fragment>{normalFgNodes}</Fragment>\n                  <Fragment>{mirrorFgNodes}</Fragment>\n                </Fragment>\n              )}\n              bgContent={( // Fragment scopes the keys\n                <Fragment>\n                  {this.renderFillSegs(highlightSegsByCol[col], 'highlight')}\n                  {this.renderFillSegs(businessHoursByCol[col], 'non-business')}\n                  {this.renderFillSegs(bgEventSegsByCol[col], 'bg-event')}\n                </Fragment>\n              )}\n            />\n          )\n        })}\n      </tr>\n    )\n  }\n\n  componentDidMount() {\n    this.updateSizing(true)\n  }\n\n  componentDidUpdate(prevProps: TableRowProps, prevState: TableRowState) {\n    let currentProps = this.props\n\n    this.updateSizing(\n      !isPropsEqual(prevProps, currentProps),\n    )\n  }\n\n  getHighlightSegs(): TableSeg[] {\n    let { props } = this\n\n    if (props.eventDrag && props.eventDrag.segs.length) { // messy check\n      return props.eventDrag.segs as TableSeg[]\n    }\n\n    if (props.eventResize && props.eventResize.segs.length) { // messy check\n      return props.eventResize.segs as TableSeg[]\n    }\n\n    return props.dateSelectionSegs\n  }\n\n  getMirrorSegs(): TableSeg[] {\n    let { props } = this\n\n    if (props.eventResize && props.eventResize.segs.length) { // messy check\n      return props.eventResize.segs as TableSeg[]\n    }\n\n    return []\n  }\n\n  renderFgSegs(\n    col: number,\n    segPlacements: TableSegPlacement[],\n    todayRange: DateRange,\n    isForcedInvisible: { [instanceId: string]: any },\n    isDragging?: boolean,\n    isResizing?: boolean,\n    isDateSelecting?: boolean,\n  ): VNode[] {\n    let { context } = this\n    let { eventSelection } = this.props\n    let { framePositions } = this.state\n    let defaultDisplayEventEnd = this.props.cells.length === 1 // colCnt === 1\n    let isMirror = isDragging || isResizing || isDateSelecting\n    let nodes: VNode[] = []\n\n    if (framePositions) {\n      for (let placement of segPlacements) {\n        let { seg } = placement\n        let { instanceId } = seg.eventRange.instance\n        let key = instanceId + ':' + col\n        let isVisible = placement.isVisible && !isForcedInvisible[instanceId]\n        let isAbsolute = placement.isAbsolute\n        let left: CssDimValue = ''\n        let right: CssDimValue = ''\n\n        if (isAbsolute) {\n          if (context.isRtl) {\n            right = 0\n            left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol]\n          } else {\n            left = 0\n            right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol]\n          }\n        }\n\n        /*\n        known bug: events that are force to be list-item but span multiple days still take up space in later columns\n        todo: in print view, for multi-day events, don't display title within non-start/end segs\n        */\n        nodes.push(\n          <div\n            className={'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : '')}\n            key={key}\n            ref={isMirror ? null : this.segHarnessRefs.createRef(key)}\n            style={{\n              visibility: isVisible ? ('' as any) : 'hidden',\n              marginTop: isAbsolute ? '' : placement.marginTop,\n              top: isAbsolute ? placement.absoluteTop : '',\n              left,\n              right,\n            }}\n          >\n            {hasListItemDisplay(seg) ? (\n              <TableListItemEvent\n                seg={seg}\n                isDragging={isDragging}\n                isSelected={instanceId === eventSelection}\n                defaultDisplayEventEnd={defaultDisplayEventEnd}\n                {...getSegMeta(seg, todayRange)}\n              />\n            ) : (\n              <TableBlockEvent\n                seg={seg}\n                isDragging={isDragging}\n                isResizing={isResizing}\n                isDateSelecting={isDateSelecting}\n                isSelected={instanceId === eventSelection}\n                defaultDisplayEventEnd={defaultDisplayEventEnd}\n                {...getSegMeta(seg, todayRange)}\n              />\n            )}\n          </div>,\n        )\n      }\n    }\n\n    return nodes\n  }\n\n  renderFillSegs(segs: TableSeg[], fillType: string): VNode {\n    let { isRtl } = this.context\n    let { todayRange } = this.props\n    let { framePositions } = this.state\n    let nodes: VNode[] = []\n\n    if (framePositions) {\n      for (let seg of segs) {\n        let leftRightCss = isRtl ? {\n          right: 0,\n          left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],\n        } : {\n          left: 0,\n          right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],\n        }\n\n        nodes.push(\n          <div\n            key={buildEventRangeKey(seg.eventRange)}\n            className=\"fc-daygrid-bg-harness\"\n            style={leftRightCss}\n          >\n            {fillType === 'bg-event' ?\n              <BgEvent seg={seg} {...getSegMeta(seg, todayRange)} /> :\n              renderFill(fillType)}\n          </div>,\n        )\n      }\n    }\n\n    return createElement(Fragment, {}, ...nodes)\n  }\n\n  updateSizing(isExternalSizingChange) {\n    let { props, frameElRefs } = this\n\n    if (\n      !props.forPrint &&\n      props.clientWidth !== null // positioning ready?\n    ) {\n      if (isExternalSizingChange) {\n        let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key])\n\n        if (frameEls.length) {\n          let originEl = this.rootElRef.current\n\n          this.setState({ // will trigger isCellPositionsChanged...\n            framePositions: new PositionCache(\n              originEl,\n              frameEls,\n              true, // isHorizontal\n              false,\n            ),\n          })\n        }\n      }\n\n      const oldInstanceHeights = this.state.eventInstanceHeights\n      const newInstanceHeights = this.queryEventInstanceHeights()\n      const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true\n\n      this.safeSetState({\n        // HACK to prevent oscillations of events being shown/hidden from max-event-rows\n        // Essentially, once you compute an element's height, never null-out.\n        // TODO: always display all events, as visibility:hidden?\n        eventInstanceHeights: { ...oldInstanceHeights, ...newInstanceHeights },\n\n        maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,\n      })\n    }\n  }\n\n  queryEventInstanceHeights() {\n    let segElMap = this.segHarnessRefs.currentMap\n    let eventInstanceHeights: { [key: string]: number } = {}\n\n    // get the max height amongst instance segs\n    for (let key in segElMap) {\n      let height = Math.round(segElMap[key].getBoundingClientRect().height)\n      let instanceId = key.split(':')[0] // deconstruct how renderFgSegs makes the key\n      eventInstanceHeights[instanceId] = Math.max(eventInstanceHeights[instanceId] || 0, height)\n    }\n\n    return eventInstanceHeights\n  }\n\n  computeMaxContentHeight() {\n    let firstKey = this.props.cells[0].key\n    let cellEl = this.cellElRefs.currentMap[firstKey]\n    let fcContainerEl = this.fgElRefs.currentMap[firstKey]\n\n    return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top\n  }\n\n  public getCellEls() {\n    let elMap = this.cellElRefs.currentMap\n\n    return this.props.cells.map((cell) => elMap[cell.key])\n  }\n}\n\nTableRow.addStateEquality({\n  eventInstanceHeights: isPropsEqual,\n})\n\nfunction buildMirrorPlacements(mirrorSegs: TableSeg[], colPlacements: TableSegPlacement[][]): TableSegPlacement[] {\n  if (!mirrorSegs.length) {\n    return []\n  }\n  let topsByInstanceId = buildAbsoluteTopHash(colPlacements) // TODO: cache this at first render?\n  return mirrorSegs.map((seg: TableSeg) => ({\n    seg,\n    isVisible: true,\n    isAbsolute: true,\n    absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n    marginTop: 0,\n  }))\n}\n\nfunction buildAbsoluteTopHash(colPlacements: TableSegPlacement[][]): { [instanceId: string]: number } {\n  let topsByInstanceId: { [instanceId: string]: number } = {}\n\n  for (let placements of colPlacements) {\n    for (let placement of placements) {\n      topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop\n    }\n  }\n\n  return topsByInstanceId\n}\n", "import {\n  EventSegUiInteractionState,\n  VNode,\n  DateComponent,\n  RefObject,\n  CssDimValue,\n  createElement,\n  PositionCache,\n  memoize,\n  addDays,\n  RefMap,\n  DateRange,\n  NowTimer,\n  DateMarker,\n  DateProfile,\n  Fragment,\n  Hit,\n  DayTableCell,\n} from '@fullcalendar/common'\nimport { TableSeg, splitSegsByRow, splitInteractionByRow } from './TableSeg'\nimport { TableRow } from './TableRow'\n\nexport interface TableProps {\n  dateProfile: DateProfile\n  cells: DayTableCell[][] // cells-BY-ROW\n  renderRowIntro?: () => VNode\n  colGroupNode: VNode\n  tableMinWidth: CssDimValue\n  expandRows: boolean\n  showWeekNumbers: boolean\n  clientWidth: number | null\n  clientHeight: number | null\n  businessHourSegs: TableSeg[]\n  bgEventSegs: TableSeg[]\n  fgEventSegs: TableSeg[]\n  dateSelectionSegs: TableSeg[]\n  eventSelection: string\n  eventDrag: EventSegUiInteractionState | null\n  eventResize: EventSegUiInteractionState | null\n  dayMaxEvents: boolean | number\n  dayMaxEventRows: boolean | number\n  headerAlignElRef?: RefObject<HTMLElement>\n  forPrint: boolean\n  isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean\n}\n\nexport class Table extends DateComponent<TableProps> {\n  private splitBusinessHourSegs = memoize(splitSegsByRow)\n  private splitBgEventSegs = memoize(splitSegsByRow)\n  private splitFgEventSegs = memoize(splitSegsByRow)\n  private splitDateSelectionSegs = memoize(splitSegsByRow)\n  private splitEventDrag = memoize(splitInteractionByRow)\n  private splitEventResize = memoize(splitInteractionByRow)\n  private rootEl: HTMLElement\n  private rowRefs = new RefMap<TableRow>()\n  private rowPositions: PositionCache\n  private colPositions: PositionCache\n\n  render() {\n    let { props } = this\n    let { dateProfile, dayMaxEventRows, dayMaxEvents, expandRows } = props\n    let rowCnt = props.cells.length\n\n    let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt)\n    let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt)\n    let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt)\n    let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt)\n    let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt)\n    let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt)\n\n    let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true\n\n    // if rows can't expand to fill fixed height, can't do balanced-height event limit\n    // TODO: best place to normalize these options?\n    if (limitViaBalanced && !expandRows) {\n      limitViaBalanced = false\n      dayMaxEventRows = null\n      dayMaxEvents = null\n    }\n\n    let classNames = [\n      'fc-daygrid-body',\n      limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced', // will all row heights be equal?\n      expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?\n    ]\n\n    return (\n      <div\n        className={classNames.join(' ')}\n        ref={this.handleRootEl}\n        style={{\n          // these props are important to give this wrapper correct dimensions for interactions\n          // TODO: if we set it here, can we avoid giving to inner tables?\n          width: props.clientWidth,\n          minWidth: props.tableMinWidth,\n        }}\n      >\n        <NowTimer unit=\"day\">\n          {(nowDate: DateMarker, todayRange: DateRange) => (\n            <Fragment>\n              <table\n                role=\"presentation\"\n                className=\"fc-scrollgrid-sync-table\"\n                style={{\n                  width: props.clientWidth,\n                  minWidth: props.tableMinWidth,\n                  height: expandRows ? props.clientHeight : '',\n                }}\n              >\n                {props.colGroupNode}\n                <tbody role=\"presentation\">\n                  {props.cells.map((cells, row) => (\n                    <TableRow\n                      ref={this.rowRefs.createRef(row)}\n                      key={\n                        cells.length\n                          ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */\n                          : row // in case there are no cells (like when resource view is loading)\n                      }\n                      showDayNumbers={rowCnt > 1}\n                      showWeekNumbers={props.showWeekNumbers}\n                      todayRange={todayRange}\n                      dateProfile={dateProfile}\n                      cells={cells}\n                      renderIntro={props.renderRowIntro}\n                      businessHourSegs={businessHourSegsByRow[row]}\n                      eventSelection={props.eventSelection}\n                      bgEventSegs={bgEventSegsByRow[row].filter(isSegAllDay) /* hack */}\n                      fgEventSegs={fgEventSegsByRow[row]}\n                      dateSelectionSegs={dateSelectionSegsByRow[row]}\n                      eventDrag={eventDragByRow[row]}\n                      eventResize={eventResizeByRow[row]}\n                      dayMaxEvents={dayMaxEvents}\n                      dayMaxEventRows={dayMaxEventRows}\n                      clientWidth={props.clientWidth}\n                      clientHeight={props.clientHeight}\n                      forPrint={props.forPrint}\n                    />\n                  ))}\n                </tbody>\n              </table>\n            </Fragment>\n          )}\n        </NowTimer>\n      </div>\n    )\n  }\n\n  handleRootEl = (rootEl: HTMLElement | null) => {\n    this.rootEl = rootEl\n\n    if (rootEl) {\n      this.context.registerInteractiveComponent(this, {\n        el: rootEl,\n        isHitComboAllowed: this.props.isHitComboAllowed,\n      })\n    } else {\n      this.context.unregisterInteractiveComponent(this)\n    }\n  }\n\n  // Hit System\n  // ----------------------------------------------------------------------------------------------------\n\n  prepareHits() {\n    this.rowPositions = new PositionCache(\n      this.rootEl,\n      this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal\n      false,\n      true, // vertical\n    )\n\n    this.colPositions = new PositionCache(\n      this.rootEl,\n      this.rowRefs.currentMap[0].getCellEls(), // cell els in first row\n      true, // horizontal\n      false,\n    )\n  }\n\n  queryHit(positionLeft: number, positionTop: number): Hit {\n    let { colPositions, rowPositions } = this\n    let col = colPositions.leftToIndex(positionLeft)\n    let row = rowPositions.topToIndex(positionTop)\n\n    if (row != null && col != null) {\n      let cell = this.props.cells[row][col]\n\n      return {\n        dateProfile: this.props.dateProfile,\n        dateSpan: {\n          range: this.getCellRange(row, col),\n          allDay: true,\n          ...cell.extraDateSpan,\n        },\n        dayEl: this.getCellEl(row, col),\n        rect: {\n          left: colPositions.lefts[col],\n          right: colPositions.rights[col],\n          top: rowPositions.tops[row],\n          bottom: rowPositions.bottoms[row],\n        },\n        layer: 0,\n      }\n    }\n\n    return null\n  }\n\n  private getCellEl(row, col) {\n    return this.rowRefs.currentMap[row].getCellEls()[col] // TODO: not optimal\n  }\n\n  private getCellRange(row, col) {\n    let start = this.props.cells[row][col].date\n    let end = addDays(start, 1)\n    return { start, end }\n  }\n}\n\nfunction isSegAllDay(seg: TableSeg) {\n  return seg.eventRange.def.allDay\n}\n", "import { DayTableModel, DateRange, Slicer } from '@fullcalendar/common'\nimport { TableSeg } from './TableSeg'\n\nexport class DayTableSlicer extends Slicer<TableSeg, [DayTableModel]> {\n  forceDayIfListItem = true\n\n  sliceRange(dateRange: DateRange, dayTableModel: DayTableModel): TableSeg[] {\n    return dayTableModel.sliceRange(dateRange)\n  }\n}\n", "import {\n  createElement, createRef, VNode,\n  EventStore,\n  EventUiHash,\n  DateSpan,\n  EventInteractionState,\n  DayTableModel,\n  Duration,\n  DateComponent,\n  ViewContext,\n  RefObject,\n  CssDimValue,\n  DateProfile,\n} from '@fullcalendar/common'\nimport { Table } from './Table'\nimport { DayTableSlicer } from './DayTableSlicer'\n\nexport interface DayTableProps {\n  dateProfile: DateProfile,\n  dayTableModel: DayTableModel\n  nextDayThreshold: Duration\n  businessHours: EventStore\n  eventStore: EventStore\n  eventUiBases: EventUiHash\n  dateSelection: DateSpan | null\n  eventSelection: string\n  eventDrag: EventInteractionState | null\n  eventResize: EventInteractionState | null\n  colGroupNode: VNode\n  tableMinWidth: CssDimValue\n  renderRowIntro?: () => VNode\n  dayMaxEvents: boolean | number\n  dayMaxEventRows: boolean | number\n  expandRows: boolean\n  showWeekNumbers: boolean\n  headerAlignElRef?: RefObject<HTMLElement> // for more popover alignment\n  clientWidth: number | null\n  clientHeight: number | null\n  forPrint: boolean\n}\n\nexport class DayTable extends DateComponent<DayTableProps, ViewContext> {\n  private slicer = new DayTableSlicer()\n  private tableRef = createRef<Table>()\n\n  render() {\n    let { props, context } = this\n\n    return (\n      <Table\n        ref={this.tableRef}\n        {...this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel)}\n        dateProfile={props.dateProfile}\n        cells={props.dayTableModel.cells}\n        colGroupNode={props.colGroupNode}\n        tableMinWidth={props.tableMinWidth}\n        renderRowIntro={props.renderRowIntro}\n        dayMaxEvents={props.dayMaxEvents}\n        dayMaxEventRows={props.dayMaxEventRows}\n        showWeekNumbers={props.showWeekNumbers}\n        expandRows={props.expandRows}\n        headerAlignElRef={props.headerAlignElRef}\n        clientWidth={props.clientWidth}\n        clientHeight={props.clientHeight}\n        forPrint={props.forPrint}\n      />\n    )\n  }\n}\n", "import {\n  createElement, createRef,\n  DayHeader,\n  DateProfileGenerator,\n  DateProfile,\n  memoize,\n  DaySeriesModel,\n  DayTableModel,\n  ChunkContentCallbackArgs,\n} from '@fullcalendar/common'\nimport { TableView } from './TableView'\nimport { DayTable } from './DayTable'\n\nexport class DayTableView extends TableView {\n  private buildDayTableModel = memoize(buildDayTableModel)\n  private headerRef = createRef<DayHeader>()\n  private tableRef = createRef<DayTable>()\n\n  render() {\n    let { options, dateProfileGenerator } = this.context\n    let { props } = this\n    let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator)\n\n    let headerContent = options.dayHeaders && (\n      <DayHeader\n        ref={this.headerRef}\n        dateProfile={props.dateProfile}\n        dates={dayTableModel.headerDates}\n        datesRepDistinctDays={dayTableModel.rowCnt === 1}\n      />\n    )\n\n    let bodyContent = (contentArg: ChunkContentCallbackArgs) => (\n      <DayTable\n        ref={this.tableRef}\n        dateProfile={props.dateProfile}\n        dayTableModel={dayTableModel}\n        businessHours={props.businessHours}\n        dateSelection={props.dateSelection}\n        eventStore={props.eventStore}\n        eventUiBases={props.eventUiBases}\n        eventSelection={props.eventSelection}\n        eventDrag={props.eventDrag}\n        eventResize={props.eventResize}\n        nextDayThreshold={options.nextDayThreshold}\n        colGroupNode={contentArg.tableColGroupNode}\n        tableMinWidth={contentArg.tableMinWidth}\n        dayMaxEvents={options.dayMaxEvents}\n        dayMaxEventRows={options.dayMaxEventRows}\n        showWeekNumbers={options.weekNumbers}\n        expandRows={!props.isHeightAuto}\n        headerAlignElRef={this.headerElRef}\n        clientWidth={contentArg.clientWidth}\n        clientHeight={contentArg.clientHeight}\n        forPrint={props.forPrint}\n      />\n    )\n\n    return options.dayMinWidth\n      ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)\n      : this.renderSimpleLayout(headerContent, bodyContent)\n  }\n}\n\nexport function buildDayTableModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator) {\n  let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator)\n\n  return new DayTableModel(\n    daySeries,\n    /year|month|week/.test(dateProfile.currentRangeUnit),\n  )\n}\n", "import {\n  DateProfileGenerator,\n  addWeeks, diffWeeks,\n  DateRange,\n} from '@fullcalendar/common'\n\nexport class TableDateProfileGenerator extends DateProfileGenerator {\n  // Computes the date range that will be rendered.\n  buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay): DateRange {\n    let { dateEnv } = this.props\n    let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay)\n    let start = renderRange.start\n    let end = renderRange.end\n    let endOfWeek\n\n    // year and month views should be aligned with weeks. this is already done for week\n    if (/^(year|month)$/.test(currentRangeUnit)) {\n      start = dateEnv.startOfWeek(start)\n\n      // make end-of-week if not already\n      endOfWeek = dateEnv.startOfWeek(end)\n      if (endOfWeek.valueOf() !== end.valueOf()) {\n        end = addWeeks(endOfWeek, 1)\n      }\n    }\n\n    // ensure 6 weeks\n    if (\n      this.props.monthMode &&\n      this.props.fixedWeekCount\n    ) {\n      let rowCnt = Math.ceil( // could be partial weeks due to hiddenDays\n        diffWeeks(start, end),\n      )\n      end = addWeeks(end, 6 - rowCnt)\n    }\n\n    return { start, end }\n  }\n}\n", "import { createPlugin } from '@fullcalendar/common'\nimport { DayTableView } from './DayTableView'\nimport { TableDateProfileGenerator } from './TableDateProfileGenerator'\nimport './main.css'\n\nexport { DayTable } from './DayTable'\nexport { DayTableSlicer } from './DayTableSlicer'\nexport { Table } from './Table'\nexport { TableSeg } from './TableSeg'\nexport { TableView } from './TableView'\nexport { buildDayTableModel } from './DayTableView'\nexport { DayTableView as DayGridView } // export as old name!\n\nexport default createPlugin({\n  initialView: 'dayGridMonth',\n  views: {\n\n    dayGrid: {\n      component: DayTableView,\n      dateProfileGeneratorClass: TableDateProfileGenerator,\n    },\n\n    dayGridDay: {\n      type: 'dayGrid',\n      duration: { days: 1 },\n    },\n\n    dayGridWeek: {\n      type: 'dayGrid',\n      duration: { weeks: 1 },\n    },\n\n    dayGridMonth: {\n      type: 'dayGrid',\n      duration: { months: 1 },\n      monthMode: true,\n      fixedWeekCount: true,\n    },\n\n  },\n})\n", "import { config, elementClosest, Emitter, PointerDragEvent } from '@fullcalendar/common'\n\nconfig.touchMouseIgnoreWait = 500\n\nlet ignoreMouseDepth = 0\nlet listenerCnt = 0\nlet isWindowTouchMoveCancelled = false\n\n/*\nUses a \"pointer\" abstraction, which monitors UI events for both mouse and touch.\nTracks when the pointer \"drags\" on a certain element, meaning down+move+up.\n\nAlso, tracks if there was touch-scrolling.\nAlso, can prevent touch-scrolling from happening.\nAlso, can fire pointermove events when scrolling happens underneath, even when no real pointer movement.\n\nemits:\n- pointerdown\n- pointermove\n- pointerup\n*/\nexport class PointerDragging {\n  containerEl: EventTarget\n  subjectEl: HTMLElement | null = null\n  emitter: Emitter<any>\n\n  // options that can be directly assigned by caller\n  selector: string = '' // will cause subjectEl in all emitted events to be this element\n  handleSelector: string = ''\n  shouldIgnoreMove: boolean = false\n  shouldWatchScroll: boolean = true // for simulating pointermove on scroll\n\n  // internal states\n  isDragging: boolean = false\n  isTouchDragging: boolean = false\n  wasTouchScroll: boolean = false\n  origPageX: number\n  origPageY: number\n  prevPageX: number\n  prevPageY: number\n  prevScrollX: number // at time of last pointer pageX/pageY capture\n  prevScrollY: number // \"\n\n  constructor(containerEl: EventTarget) {\n    this.containerEl = containerEl\n    this.emitter = new Emitter()\n    containerEl.addEventListener('mousedown', this.handleMouseDown as EventListener)\n    containerEl.addEventListener('touchstart', this.handleTouchStart as EventListener, { passive: true })\n    listenerCreated()\n  }\n\n  destroy() {\n    this.containerEl.removeEventListener('mousedown', this.handleMouseDown as EventListener)\n    this.containerEl.removeEventListener('touchstart', this.handleTouchStart as EventListener, { passive: true } as AddEventListenerOptions)\n    listenerDestroyed()\n  }\n\n  tryStart(ev: UIEvent): boolean {\n    let subjectEl = this.querySubjectEl(ev)\n    let downEl = ev.target as HTMLElement\n\n    if (\n      subjectEl &&\n      (!this.handleSelector || elementClosest(downEl, this.handleSelector))\n    ) {\n      this.subjectEl = subjectEl\n      this.isDragging = true // do this first so cancelTouchScroll will work\n      this.wasTouchScroll = false\n\n      return true\n    }\n\n    return false\n  }\n\n  cleanup() {\n    isWindowTouchMoveCancelled = false\n    this.isDragging = false\n    this.subjectEl = null\n    // keep wasTouchScroll around for later access\n    this.destroyScrollWatch()\n  }\n\n  querySubjectEl(ev: UIEvent): HTMLElement {\n    if (this.selector) {\n      return elementClosest(ev.target as HTMLElement, this.selector)\n    }\n    return this.containerEl as HTMLElement\n  }\n\n  // Mouse\n  // ----------------------------------------------------------------------------------------------------\n\n  handleMouseDown = (ev: MouseEvent) => {\n    if (\n      !this.shouldIgnoreMouse() &&\n      isPrimaryMouseButton(ev) &&\n      this.tryStart(ev)\n    ) {\n      let pev = this.createEventFromMouse(ev, true)\n      this.emitter.trigger('pointerdown', pev)\n      this.initScrollWatch(pev)\n\n      if (!this.shouldIgnoreMove) {\n        document.addEventListener('mousemove', this.handleMouseMove)\n      }\n\n      document.addEventListener('mouseup', this.handleMouseUp)\n    }\n  }\n\n  handleMouseMove = (ev: MouseEvent) => {\n    let pev = this.createEventFromMouse(ev)\n    this.recordCoords(pev)\n    this.emitter.trigger('pointermove', pev)\n  }\n\n  handleMouseUp = (ev: MouseEvent) => {\n    document.removeEventListener('mousemove', this.handleMouseMove)\n    document.removeEventListener('mouseup', this.handleMouseUp)\n\n    this.emitter.trigger('pointerup', this.createEventFromMouse(ev))\n\n    this.cleanup() // call last so that pointerup has access to props\n  }\n\n  shouldIgnoreMouse() {\n    return ignoreMouseDepth || this.isTouchDragging\n  }\n\n  // Touch\n  // ----------------------------------------------------------------------------------------------------\n\n  handleTouchStart = (ev: TouchEvent) => {\n    if (this.tryStart(ev)) {\n      this.isTouchDragging = true\n\n      let pev = this.createEventFromTouch(ev, true)\n      this.emitter.trigger('pointerdown', pev)\n      this.initScrollWatch(pev)\n\n      // unlike mouse, need to attach to target, not document\n      // https://stackoverflow.com/a/45760014\n      let targetEl = ev.target as HTMLElement\n\n      if (!this.shouldIgnoreMove) {\n        targetEl.addEventListener('touchmove', this.handleTouchMove)\n      }\n\n      targetEl.addEventListener('touchend', this.handleTouchEnd)\n      targetEl.addEventListener('touchcancel', this.handleTouchEnd) // treat it as a touch end\n\n      // attach a handler to get called when ANY scroll action happens on the page.\n      // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n      // http://stackoverflow.com/a/32954565/96342\n      window.addEventListener(\n        'scroll',\n        this.handleTouchScroll,\n        true, // useCapture\n      )\n    }\n  }\n\n  handleTouchMove = (ev: TouchEvent) => {\n    let pev = this.createEventFromTouch(ev)\n    this.recordCoords(pev)\n    this.emitter.trigger('pointermove', pev)\n  }\n\n  handleTouchEnd = (ev: TouchEvent) => {\n    if (this.isDragging) { // done to guard against touchend followed by touchcancel\n      let targetEl = ev.target as HTMLElement\n\n      targetEl.removeEventListener('touchmove', this.handleTouchMove)\n      targetEl.removeEventListener('touchend', this.handleTouchEnd)\n      targetEl.removeEventListener('touchcancel', this.handleTouchEnd)\n      window.removeEventListener('scroll', this.handleTouchScroll, true) // useCaptured=true\n\n      this.emitter.trigger('pointerup', this.createEventFromTouch(ev))\n\n      this.cleanup() // call last so that pointerup has access to props\n      this.isTouchDragging = false\n      startIgnoringMouse()\n    }\n  }\n\n  handleTouchScroll = () => {\n    this.wasTouchScroll = true\n  }\n\n  // can be called by user of this class, to cancel touch-based scrolling for the current drag\n  cancelTouchScroll() {\n    if (this.isDragging) {\n      isWindowTouchMoveCancelled = true\n    }\n  }\n\n  // Scrolling that simulates pointermoves\n  // ----------------------------------------------------------------------------------------------------\n\n  initScrollWatch(ev: PointerDragEvent) {\n    if (this.shouldWatchScroll) {\n      this.recordCoords(ev)\n      window.addEventListener('scroll', this.handleScroll, true) // useCapture=true\n    }\n  }\n\n  recordCoords(ev: PointerDragEvent) {\n    if (this.shouldWatchScroll) {\n      this.prevPageX = (ev as any).pageX\n      this.prevPageY = (ev as any).pageY\n      this.prevScrollX = window.pageXOffset\n      this.prevScrollY = window.pageYOffset\n    }\n  }\n\n  handleScroll = (ev: UIEvent) => {\n    if (!this.shouldIgnoreMove) {\n      let pageX = (window.pageXOffset - this.prevScrollX) + this.prevPageX\n      let pageY = (window.pageYOffset - this.prevScrollY) + this.prevPageY\n\n      this.emitter.trigger('pointermove', {\n        origEvent: ev,\n        isTouch: this.isTouchDragging,\n        subjectEl: this.subjectEl,\n        pageX,\n        pageY,\n        deltaX: pageX - this.origPageX,\n        deltaY: pageY - this.origPageY,\n      } as PointerDragEvent)\n    }\n  }\n\n  destroyScrollWatch() {\n    if (this.shouldWatchScroll) {\n      window.removeEventListener('scroll', this.handleScroll, true) // useCaptured=true\n    }\n  }\n\n  // Event Normalization\n  // ----------------------------------------------------------------------------------------------------\n\n  createEventFromMouse(ev: MouseEvent, isFirst?: boolean): PointerDragEvent {\n    let deltaX = 0\n    let deltaY = 0\n\n    // TODO: repeat code\n    if (isFirst) {\n      this.origPageX = ev.pageX\n      this.origPageY = ev.pageY\n    } else {\n      deltaX = ev.pageX - this.origPageX\n      deltaY = ev.pageY - this.origPageY\n    }\n\n    return {\n      origEvent: ev,\n      isTouch: false,\n      subjectEl: this.subjectEl,\n      pageX: ev.pageX,\n      pageY: ev.pageY,\n      deltaX,\n      deltaY,\n    }\n  }\n\n  createEventFromTouch(ev: TouchEvent, isFirst?: boolean): PointerDragEvent {\n    let touches = ev.touches\n    let pageX\n    let pageY\n    let deltaX = 0\n    let deltaY = 0\n\n    // if touch coords available, prefer,\n    // because FF would give bad ev.pageX ev.pageY\n    if (touches && touches.length) {\n      pageX = touches[0].pageX\n      pageY = touches[0].pageY\n    } else {\n      pageX = (ev as any).pageX\n      pageY = (ev as any).pageY\n    }\n\n    // TODO: repeat code\n    if (isFirst) {\n      this.origPageX = pageX\n      this.origPageY = pageY\n    } else {\n      deltaX = pageX - this.origPageX\n      deltaY = pageY - this.origPageY\n    }\n\n    return {\n      origEvent: ev,\n      isTouch: true,\n      subjectEl: this.subjectEl,\n      pageX,\n      pageY,\n      deltaX,\n      deltaY,\n    }\n  }\n}\n\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev: MouseEvent) {\n  return ev.button === 0 && !ev.ctrlKey\n}\n\n// Ignoring fake mouse events generated by touch\n// ----------------------------------------------------------------------------------------------------\n\nfunction startIgnoringMouse() { // can be made non-class function\n  ignoreMouseDepth += 1\n\n  setTimeout(() => {\n    ignoreMouseDepth -= 1\n  }, config.touchMouseIgnoreWait)\n}\n\n// We want to attach touchmove as early as possible for Safari\n// ----------------------------------------------------------------------------------------------------\n\nfunction listenerCreated() {\n  listenerCnt += 1\n\n  if (listenerCnt === 1) {\n    window.addEventListener('touchmove', onWindowTouchMove, { passive: false })\n  }\n}\n\nfunction listenerDestroyed() {\n  listenerCnt -= 1\n\n  if (!listenerCnt) {\n    window.removeEventListener('touchmove', onWindowTouchMove, { passive: false } as AddEventListenerOptions)\n  }\n}\n\nfunction onWindowTouchMove(ev: UIEvent) {\n  if (isWindowTouchMoveCancelled) {\n    ev.preventDefault()\n  }\n}\n", "import { removeElement, applyStyle, whenTransitionDone, Rect } from '@fullcalendar/common'\n\n/*\nAn effect in which an element follows the movement of a pointer across the screen.\nThe moving element is a clone of some other element.\nMust call start + handleMove + stop.\n*/\nexport class ElementMirror {\n  isVisible: boolean = false // must be explicitly enabled\n  origScreenX?: number\n  origScreenY?: number\n  deltaX?: number\n  deltaY?: number\n  sourceEl: HTMLElement | null = null\n  mirrorEl: HTMLElement | null = null\n  sourceElRect: Rect | null = null // screen coords relative to viewport\n\n  // options that can be set directly by caller\n  parentNode: HTMLElement = document.body // HIGHLY SUGGESTED to set this to sidestep ShadowDOM issues\n  zIndex: number = 9999\n  revertDuration: number = 0\n\n  start(sourceEl: HTMLElement, pageX: number, pageY: number) {\n    this.sourceEl = sourceEl\n    this.sourceElRect = this.sourceEl.getBoundingClientRect()\n    this.origScreenX = pageX - window.pageXOffset\n    this.origScreenY = pageY - window.pageYOffset\n    this.deltaX = 0\n    this.deltaY = 0\n    this.updateElPosition()\n  }\n\n  handleMove(pageX: number, pageY: number) {\n    this.deltaX = (pageX - window.pageXOffset) - this.origScreenX!\n    this.deltaY = (pageY - window.pageYOffset) - this.origScreenY!\n    this.updateElPosition()\n  }\n\n  // can be called before start\n  setIsVisible(bool: boolean) {\n    if (bool) {\n      if (!this.isVisible) {\n        if (this.mirrorEl) {\n          this.mirrorEl.style.display = ''\n        }\n\n        this.isVisible = bool // needs to happen before updateElPosition\n        this.updateElPosition() // because was not updating the position while invisible\n      }\n    } else if (this.isVisible) {\n      if (this.mirrorEl) {\n        this.mirrorEl.style.display = 'none'\n      }\n\n      this.isVisible = bool\n    }\n  }\n\n  // always async\n  stop(needsRevertAnimation: boolean, callback: () => void) {\n    let done = () => {\n      this.cleanup()\n      callback()\n    }\n\n    if (\n      needsRevertAnimation &&\n      this.mirrorEl &&\n      this.isVisible &&\n      this.revertDuration && // if 0, transition won't work\n      (this.deltaX || this.deltaY) // if same coords, transition won't work\n    ) {\n      this.doRevertAnimation(done, this.revertDuration)\n    } else {\n      setTimeout(done, 0)\n    }\n  }\n\n  doRevertAnimation(callback: () => void, revertDuration: number) {\n    let mirrorEl = this.mirrorEl!\n    let finalSourceElRect = this.sourceEl!.getBoundingClientRect() // because autoscrolling might have happened\n\n    mirrorEl.style.transition =\n      'top ' + revertDuration + 'ms,' +\n      'left ' + revertDuration + 'ms'\n\n    applyStyle(mirrorEl, {\n      left: finalSourceElRect.left,\n      top: finalSourceElRect.top,\n    })\n\n    whenTransitionDone(mirrorEl, () => {\n      mirrorEl.style.transition = ''\n      callback()\n    })\n  }\n\n  cleanup() {\n    if (this.mirrorEl) {\n      removeElement(this.mirrorEl)\n      this.mirrorEl = null\n    }\n\n    this.sourceEl = null\n  }\n\n  updateElPosition() {\n    if (this.sourceEl && this.isVisible) {\n      applyStyle(this.getMirrorEl(), {\n        left: this.sourceElRect!.left + this.deltaX!,\n        top: this.sourceElRect!.top + this.deltaY!,\n      })\n    }\n  }\n\n  getMirrorEl(): HTMLElement {\n    let sourceElRect = this.sourceElRect!\n    let mirrorEl = this.mirrorEl\n\n    if (!mirrorEl) {\n      mirrorEl = this.mirrorEl = this.sourceEl!.cloneNode(true) as HTMLElement // cloneChildren=true\n\n      // we don't want long taps or any mouse interaction causing selection/menus.\n      // would use preventSelection(), but that prevents selectstart, causing problems.\n      mirrorEl.classList.add('fc-unselectable')\n\n      mirrorEl.classList.add('fc-event-dragging')\n\n      applyStyle(mirrorEl, {\n        position: 'fixed',\n        zIndex: this.zIndex,\n        visibility: '', // in case original element was hidden by the drag effect\n        boxSizing: 'border-box', // for easy width/height\n        width: sourceElRect.right - sourceElRect.left, // explicit height in case there was a 'right' value\n        height: sourceElRect.bottom - sourceElRect.top, // explicit width in case there was a 'bottom' value\n        right: 'auto', // erase and set width instead\n        bottom: 'auto', // erase and set height instead\n        margin: 0,\n      })\n\n      this.parentNode.appendChild(mirrorEl)\n    }\n\n    return mirrorEl\n  }\n}\n", "import { Rect, ScrollController } from '@fullcalendar/common'\n\n/*\nIs a cache for a given element's scroll information (all the info that ScrollController stores)\nin addition the \"client rectangle\" of the element.. the area within the scrollbars.\n\nThe cache can be in one of two modes:\n- doesListening:false - ignores when the container is scrolled by someone else\n- doesListening:true - watch for scrolling and update the cache\n*/\nexport abstract class ScrollGeomCache extends ScrollController {\n  clientRect: Rect\n  origScrollTop: number\n  origScrollLeft: number\n\n  protected scrollController: ScrollController\n  protected doesListening: boolean\n  protected scrollTop: number\n  protected scrollLeft: number\n  protected scrollWidth: number\n  protected scrollHeight: number\n  protected clientWidth: number\n  protected clientHeight: number\n\n  constructor(scrollController: ScrollController, doesListening: boolean) {\n    super()\n    this.scrollController = scrollController\n    this.doesListening = doesListening\n    this.scrollTop = this.origScrollTop = scrollController.getScrollTop()\n    this.scrollLeft = this.origScrollLeft = scrollController.getScrollLeft()\n    this.scrollWidth = scrollController.getScrollWidth()\n    this.scrollHeight = scrollController.getScrollHeight()\n    this.clientWidth = scrollController.getClientWidth()\n    this.clientHeight = scrollController.getClientHeight()\n    this.clientRect = this.computeClientRect() // do last in case it needs cached values\n\n    if (this.doesListening) {\n      this.getEventTarget().addEventListener('scroll', this.handleScroll)\n    }\n  }\n\n  abstract getEventTarget(): EventTarget\n  abstract computeClientRect(): Rect\n\n  destroy() {\n    if (this.doesListening) {\n      this.getEventTarget().removeEventListener('scroll', this.handleScroll)\n    }\n  }\n\n  handleScroll = () => {\n    this.scrollTop = this.scrollController.getScrollTop()\n    this.scrollLeft = this.scrollController.getScrollLeft()\n    this.handleScrollChange()\n  }\n\n  getScrollTop() {\n    return this.scrollTop\n  }\n\n  getScrollLeft() {\n    return this.scrollLeft\n  }\n\n  setScrollTop(top: number) {\n    this.scrollController.setScrollTop(top)\n\n    if (!this.doesListening) {\n      // we are not relying on the element to normalize out-of-bounds scroll values\n      // so we need to sanitize ourselves\n      this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0)\n\n      this.handleScrollChange()\n    }\n  }\n\n  setScrollLeft(top: number) {\n    this.scrollController.setScrollLeft(top)\n\n    if (!this.doesListening) {\n      // we are not relying on the element to normalize out-of-bounds scroll values\n      // so we need to sanitize ourselves\n      this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0)\n\n      this.handleScrollChange()\n    }\n  }\n\n  getClientWidth() {\n    return this.clientWidth\n  }\n\n  getClientHeight() {\n    return this.clientHeight\n  }\n\n  getScrollWidth() {\n    return this.scrollWidth\n  }\n\n  getScrollHeight() {\n    return this.scrollHeight\n  }\n\n  handleScrollChange() {\n  }\n}\n", "import { computeInnerRect, ElementScrollController } from '@fullcalendar/common'\nimport { ScrollGeomCache } from './ScrollGeomCache'\n\nexport class ElementScrollGeomCache extends ScrollGeomCache {\n  constructor(el: HTMLElement, doesListening: boolean) {\n    super(new ElementScrollController(el), doesListening)\n  }\n\n  getEventTarget(): EventTarget {\n    return (this.scrollController as ElementScrollController).el\n  }\n\n  computeClientRect() {\n    return computeInnerRect((this.scrollController as ElementScrollController).el)\n  }\n}\n", "import { Rect, WindowScrollController } from '@fullcalendar/common'\nimport { ScrollGeomCache } from './ScrollGeomCache'\n\nexport class WindowScrollGeomCache extends ScrollGeomCache {\n  constructor(doesListening: boolean) {\n    super(new WindowScrollController(), doesListening)\n  }\n\n  getEventTarget(): EventTarget {\n    return window\n  }\n\n  computeClientRect(): Rect {\n    return {\n      left: this.scrollLeft,\n      right: this.scrollLeft + this.clientWidth,\n      top: this.scrollTop,\n      bottom: this.scrollTop + this.clientHeight,\n    }\n  }\n\n  // the window is the only scroll object that changes it's rectangle relative\n  // to the document's topleft as it scrolls\n  handleScrollChange() {\n    this.clientRect = this.computeClientRect()\n  }\n}\n", "import { getElRoot } from '@fullcalendar/common'\nimport { ScrollGeomCache } from '../ScrollGeomCache'\nimport { ElementScrollGeomCache } from '../ElementScrollGeomCache'\nimport { WindowScrollGeomCache } from '../WindowScrollGeomCache'\n\ninterface Edge {\n  scrollCache: ScrollGeomCache\n  name: 'top' | 'left' | 'right' | 'bottom'\n  distance: number // how many pixels the current pointer is from the edge\n}\n\n// If available we are using native \"performance\" API instead of \"Date\"\n// Read more about it on MDN:\n// https://developer.mozilla.org/en-US/docs/Web/API/Performance\nconst getTime = typeof performance === 'function' ? (performance as any).now : Date.now\n\n/*\nFor a pointer interaction, automatically scrolls certain scroll containers when the pointer\napproaches the edge.\n\nThe caller must call start + handleMove + stop.\n*/\nexport class AutoScroller {\n  // options that can be set by caller\n  isEnabled: boolean = true\n  scrollQuery: (Window | string)[] = [window, '.fc-scroller']\n  edgeThreshold: number = 50 // pixels\n  maxVelocity: number = 300 // pixels per second\n\n  // internal state\n  pointerScreenX: number | null = null\n  pointerScreenY: number | null = null\n  isAnimating: boolean = false\n  scrollCaches: ScrollGeomCache[] | null = null\n  msSinceRequest?: number\n\n  // protect against the initial pointerdown being too close to an edge and starting the scroll\n  everMovedUp: boolean = false\n  everMovedDown: boolean = false\n  everMovedLeft: boolean = false\n  everMovedRight: boolean = false\n\n  start(pageX: number, pageY: number, scrollStartEl: HTMLElement) {\n    if (this.isEnabled) {\n      this.scrollCaches = this.buildCaches(scrollStartEl)\n      this.pointerScreenX = null\n      this.pointerScreenY = null\n      this.everMovedUp = false\n      this.everMovedDown = false\n      this.everMovedLeft = false\n      this.everMovedRight = false\n      this.handleMove(pageX, pageY)\n    }\n  }\n\n  handleMove(pageX: number, pageY: number) {\n    if (this.isEnabled) {\n      let pointerScreenX = pageX - window.pageXOffset\n      let pointerScreenY = pageY - window.pageYOffset\n\n      let yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY\n      let xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX\n\n      if (yDelta < 0) {\n        this.everMovedUp = true\n      } else if (yDelta > 0) {\n        this.everMovedDown = true\n      }\n\n      if (xDelta < 0) {\n        this.everMovedLeft = true\n      } else if (xDelta > 0) {\n        this.everMovedRight = true\n      }\n\n      this.pointerScreenX = pointerScreenX\n      this.pointerScreenY = pointerScreenY\n\n      if (!this.isAnimating) {\n        this.isAnimating = true\n        this.requestAnimation(getTime())\n      }\n    }\n  }\n\n  stop() {\n    if (this.isEnabled) {\n      this.isAnimating = false // will stop animation\n\n      for (let scrollCache of this.scrollCaches!) {\n        scrollCache.destroy()\n      }\n\n      this.scrollCaches = null\n    }\n  }\n\n  requestAnimation(now: number) {\n    this.msSinceRequest = now\n    requestAnimationFrame(this.animate)\n  }\n\n  private animate = () => {\n    if (this.isAnimating) { // wasn't cancelled between animation calls\n      let edge = this.computeBestEdge(\n        this.pointerScreenX! + window.pageXOffset,\n        this.pointerScreenY! + window.pageYOffset,\n      )\n\n      if (edge) {\n        let now = getTime()\n        this.handleSide(edge, (now - this.msSinceRequest!) / 1000)\n        this.requestAnimation(now)\n      } else {\n        this.isAnimating = false // will stop animation\n      }\n    }\n  }\n\n  private handleSide(edge: Edge, seconds: number) {\n    let { scrollCache } = edge\n    let { edgeThreshold } = this\n    let invDistance = edgeThreshold - edge.distance\n    let velocity = // the closer to the edge, the faster we scroll\n      ((invDistance * invDistance) / (edgeThreshold * edgeThreshold)) * // quadratic\n      this.maxVelocity * seconds\n    let sign = 1\n\n    switch (edge.name) {\n      case 'left':\n        sign = -1\n        // falls through\n      case 'right':\n        scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign)\n        break\n\n      case 'top':\n        sign = -1\n        // falls through\n      case 'bottom':\n        scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign)\n        break\n    }\n  }\n\n  // left/top are relative to document topleft\n  private computeBestEdge(left: number, top: number): Edge | null {\n    let { edgeThreshold } = this\n    let bestSide: Edge | null = null\n    let scrollCaches = this.scrollCaches || []\n\n    for (let scrollCache of scrollCaches) {\n      let rect = scrollCache.clientRect\n      let leftDist = left - rect.left\n      let rightDist = rect.right - left\n      let topDist = top - rect.top\n      let bottomDist = rect.bottom - top\n\n      // completely within the rect?\n      if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) {\n        if (\n          topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() &&\n          (!bestSide || bestSide.distance > topDist)\n        ) {\n          bestSide = { scrollCache, name: 'top', distance: topDist }\n        }\n\n        if (\n          bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() &&\n          (!bestSide || bestSide.distance > bottomDist)\n        ) {\n          bestSide = { scrollCache, name: 'bottom', distance: bottomDist }\n        }\n\n        if (\n          leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() &&\n          (!bestSide || bestSide.distance > leftDist)\n        ) {\n          bestSide = { scrollCache, name: 'left', distance: leftDist }\n        }\n\n        if (\n          rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() &&\n          (!bestSide || bestSide.distance > rightDist)\n        ) {\n          bestSide = { scrollCache, name: 'right', distance: rightDist }\n        }\n      }\n    }\n\n    return bestSide\n  }\n\n  private buildCaches(scrollStartEl: HTMLElement) {\n    return this.queryScrollEls(scrollStartEl).map((el) => {\n      if (el === window) {\n        return new WindowScrollGeomCache(false) // false = don't listen to user-generated scrolls\n      }\n      return new ElementScrollGeomCache(el, false) // false = don't listen to user-generated scrolls\n    })\n  }\n\n  private queryScrollEls(scrollStartEl: HTMLElement) {\n    let els = []\n\n    for (let query of this.scrollQuery) {\n      if (typeof query === 'object') {\n        els.push(query)\n      } else {\n        els.push(...Array.prototype.slice.call(\n          getElRoot(scrollStartEl).querySelectorAll(query),\n        ))\n      }\n    }\n\n    return els\n  }\n}\n", "import {\n  PointerDragEvent,\n  preventSelection,\n  allowSelection,\n  preventContextMenu,\n  allowContextMenu,\n  ElementDragging,\n} from '@fullcalendar/common'\nimport { PointerDragging } from './PointerDragging'\nimport { ElementMirror } from './ElementMirror'\nimport { AutoScroller } from './AutoScroller'\n\n/*\nMonitors dragging on an element. Has a number of high-level features:\n- minimum distance required before dragging\n- minimum wait time (\"delay\") before dragging\n- a mirror element that follows the pointer\n*/\nexport class FeaturefulElementDragging extends ElementDragging {\n  pointer: PointerDragging\n  mirror: ElementMirror\n  autoScroller: AutoScroller\n\n  // options that can be directly set by caller\n  // the caller can also set the PointerDragging's options as well\n  delay: number | null = null\n  minDistance: number = 0\n  touchScrollAllowed: boolean = true // prevents drag from starting and blocks scrolling during drag\n\n  mirrorNeedsRevert: boolean = false\n  isInteracting: boolean = false // is the user validly moving the pointer? lasts until pointerup\n  isDragging: boolean = false // is it INTENTFULLY dragging? lasts until after revert animation\n  isDelayEnded: boolean = false\n  isDistanceSurpassed: boolean = false\n  delayTimeoutId: number | null = null\n\n  constructor(private containerEl: HTMLElement, selector?: string) {\n    super(containerEl)\n\n    let pointer = this.pointer = new PointerDragging(containerEl)\n    pointer.emitter.on('pointerdown', this.onPointerDown)\n    pointer.emitter.on('pointermove', this.onPointerMove)\n    pointer.emitter.on('pointerup', this.onPointerUp)\n\n    if (selector) {\n      pointer.selector = selector\n    }\n\n    this.mirror = new ElementMirror()\n    this.autoScroller = new AutoScroller()\n  }\n\n  destroy() {\n    this.pointer.destroy()\n\n    // HACK: simulate a pointer-up to end the current drag\n    // TODO: fire 'dragend' directly and stop interaction. discourage use of pointerup event (b/c might not fire)\n    this.onPointerUp({} as any)\n  }\n\n  onPointerDown = (ev: PointerDragEvent) => {\n    if (!this.isDragging) { // so new drag doesn't happen while revert animation is going\n      this.isInteracting = true\n      this.isDelayEnded = false\n      this.isDistanceSurpassed = false\n\n      preventSelection(document.body)\n      preventContextMenu(document.body)\n\n      // prevent links from being visited if there's an eventual drag.\n      // also prevents selection in older browsers (maybe?).\n      // not necessary for touch, besides, browser would complain about passiveness.\n      if (!ev.isTouch) {\n        ev.origEvent.preventDefault()\n      }\n\n      this.emitter.trigger('pointerdown', ev)\n\n      if (\n        this.isInteracting && // not destroyed via pointerdown handler\n        !this.pointer.shouldIgnoreMove\n      ) {\n        // actions related to initiating dragstart+dragmove+dragend...\n\n        this.mirror.setIsVisible(false) // reset. caller must set-visible\n        this.mirror.start(ev.subjectEl as HTMLElement, ev.pageX, ev.pageY) // must happen on first pointer down\n\n        this.startDelay(ev)\n\n        if (!this.minDistance) {\n          this.handleDistanceSurpassed(ev)\n        }\n      }\n    }\n  }\n\n  onPointerMove = (ev: PointerDragEvent) => {\n    if (this.isInteracting) {\n      this.emitter.trigger('pointermove', ev)\n\n      if (!this.isDistanceSurpassed) {\n        let minDistance = this.minDistance\n        let distanceSq // current distance from the origin, squared\n        let { deltaX, deltaY } = ev\n\n        distanceSq = deltaX * deltaX + deltaY * deltaY\n        if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n          this.handleDistanceSurpassed(ev)\n        }\n      }\n\n      if (this.isDragging) {\n        // a real pointer move? (not one simulated by scrolling)\n        if (ev.origEvent.type !== 'scroll') {\n          this.mirror.handleMove(ev.pageX, ev.pageY)\n          this.autoScroller.handleMove(ev.pageX, ev.pageY)\n        }\n\n        this.emitter.trigger('dragmove', ev)\n      }\n    }\n  }\n\n  onPointerUp = (ev: PointerDragEvent) => {\n    if (this.isInteracting) {\n      this.isInteracting = false\n\n      allowSelection(document.body)\n      allowContextMenu(document.body)\n\n      this.emitter.trigger('pointerup', ev) // can potentially set mirrorNeedsRevert\n\n      if (this.isDragging) {\n        this.autoScroller.stop()\n        this.tryStopDrag(ev) // which will stop the mirror\n      }\n\n      if (this.delayTimeoutId) {\n        clearTimeout(this.delayTimeoutId)\n        this.delayTimeoutId = null\n      }\n    }\n  }\n\n  startDelay(ev: PointerDragEvent) {\n    if (typeof this.delay === 'number') {\n      this.delayTimeoutId = setTimeout(() => {\n        this.delayTimeoutId = null\n        this.handleDelayEnd(ev)\n      }, this.delay) as any // not assignable to number!\n    } else {\n      this.handleDelayEnd(ev)\n    }\n  }\n\n  handleDelayEnd(ev: PointerDragEvent) {\n    this.isDelayEnded = true\n    this.tryStartDrag(ev)\n  }\n\n  handleDistanceSurpassed(ev: PointerDragEvent) {\n    this.isDistanceSurpassed = true\n    this.tryStartDrag(ev)\n  }\n\n  tryStartDrag(ev: PointerDragEvent) {\n    if (this.isDelayEnded && this.isDistanceSurpassed) {\n      if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) {\n        this.isDragging = true\n        this.mirrorNeedsRevert = false\n\n        this.autoScroller.start(ev.pageX, ev.pageY, this.containerEl)\n        this.emitter.trigger('dragstart', ev)\n\n        if (this.touchScrollAllowed === false) {\n          this.pointer.cancelTouchScroll()\n        }\n      }\n    }\n  }\n\n  tryStopDrag(ev: PointerDragEvent) {\n    // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events\n    // that come from the document to fire beforehand. much more convenient this way.\n    this.mirror.stop(\n      this.mirrorNeedsRevert,\n      this.stopDrag.bind(this, ev), // bound with args\n    )\n  }\n\n  stopDrag(ev: PointerDragEvent) {\n    this.isDragging = false\n    this.emitter.trigger('dragend', ev)\n  }\n\n  // fill in the implementations...\n\n  setIgnoreMove(bool: boolean) {\n    this.pointer.shouldIgnoreMove = bool\n  }\n\n  setMirrorIsVisible(bool: boolean) {\n    this.mirror.setIsVisible(bool)\n  }\n\n  setMirrorNeedsRevert(bool: boolean) {\n    this.mirrorNeedsRevert = bool\n  }\n\n  setAutoScrollEnabled(bool: boolean) {\n    this.autoScroller.isEnabled = bool\n  }\n}\n", "import {\n  getClippingParents, computeRect,\n  pointInsideRect, Rect,\n} from '@fullcalendar/common'\nimport { ElementScrollGeomCache } from './ElementScrollGeomCache'\n\n/*\nWhen this class is instantiated, it records the offset of an element (relative to the document topleft),\nand continues to monitor scrolling, updating the cached coordinates if it needs to.\nDoes not access the DOM after instantiation, so highly performant.\n\nAlso keeps track of all scrolling/overflow:hidden containers that are parents of the given element\nand an determine if a given point is inside the combined clipping rectangle.\n*/\nexport class OffsetTracker { // ElementOffsetTracker\n  scrollCaches: ElementScrollGeomCache[]\n  origRect: Rect\n\n  constructor(el: HTMLElement) {\n    this.origRect = computeRect(el)\n\n    // will work fine for divs that have overflow:hidden\n    this.scrollCaches = getClippingParents(el).map(\n      (scrollEl) => new ElementScrollGeomCache(scrollEl, true), // listen=true\n    )\n  }\n\n  destroy() {\n    for (let scrollCache of this.scrollCaches) {\n      scrollCache.destroy()\n    }\n  }\n\n  computeLeft() {\n    let left = this.origRect.left\n\n    for (let scrollCache of this.scrollCaches) {\n      left += scrollCache.origScrollLeft - scrollCache.getScrollLeft()\n    }\n\n    return left\n  }\n\n  computeTop() {\n    let top = this.origRect.top\n\n    for (let scrollCache of this.scrollCaches) {\n      top += scrollCache.origScrollTop - scrollCache.getScrollTop()\n    }\n\n    return top\n  }\n\n  isWithinClipping(pageX: number, pageY: number): boolean {\n    let point = { left: pageX, top: pageY }\n\n    for (let scrollCache of this.scrollCaches) {\n      if (\n        !isIgnoredClipping(scrollCache.getEventTarget()) &&\n        !pointInsideRect(point, scrollCache.clientRect)\n      ) {\n        return false\n      }\n    }\n\n    return true\n  }\n}\n\n// certain clipping containers should never constrain interactions, like <html> and <body>\n// https://github.com/fullcalendar/fullcalendar/issues/3615\nfunction isIgnoredClipping(node: EventTarget) {\n  let tagName = (node as HTMLElement).tagName\n\n  return tagName === 'HTML' || tagName === 'BODY'\n}\n", "import {\n  Emitter, PointerDragEvent,\n  isDateSpansEqual,\n  computeRect,\n  constrainPoint, intersectRects, getRectCenter, diffPoints, Point,\n  rangeContainsRange,\n  Hit,\n  InteractionSettingsStore,\n  mapHash,\n  ElementDragging,\n} from '@fullcalendar/common'\nimport { OffsetTracker } from '../OffsetTracker'\n\n/*\nTracks movement over multiple droppable areas (aka \"hits\")\nthat exist in one or more DateComponents.\nRelies on an existing draggable.\n\nemits:\n- pointerdown\n- dragstart\n- hitchange - fires initially, even if not over a hit\n- pointerup\n- (hitchange - again, to null, if ended over a hit)\n- dragend\n*/\nexport class HitDragging {\n  droppableStore: InteractionSettingsStore\n  dragging: ElementDragging\n  emitter: Emitter<any>\n\n  // options that can be set by caller\n  useSubjectCenter: boolean = false\n  requireInitial: boolean = true // if doesn't start out on a hit, won't emit any events\n\n  // internal state\n  offsetTrackers: { [componentUid: string]: OffsetTracker }\n  initialHit: Hit | null = null\n  movingHit: Hit | null = null\n  finalHit: Hit | null = null // won't ever be populated if shouldIgnoreMove\n  coordAdjust?: Point\n\n  constructor(dragging: ElementDragging, droppableStore: InteractionSettingsStore) {\n    this.droppableStore = droppableStore\n\n    dragging.emitter.on('pointerdown', this.handlePointerDown)\n    dragging.emitter.on('dragstart', this.handleDragStart)\n    dragging.emitter.on('dragmove', this.handleDragMove)\n    dragging.emitter.on('pointerup', this.handlePointerUp)\n    dragging.emitter.on('dragend', this.handleDragEnd)\n\n    this.dragging = dragging\n    this.emitter = new Emitter()\n  }\n\n  handlePointerDown = (ev: PointerDragEvent) => {\n    let { dragging } = this\n\n    this.initialHit = null\n    this.movingHit = null\n    this.finalHit = null\n\n    this.prepareHits()\n    this.processFirstCoord(ev)\n\n    if (this.initialHit || !this.requireInitial) {\n      dragging.setIgnoreMove(false)\n\n      // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(\n      this.emitter.trigger('pointerdown', ev)\n    } else {\n      dragging.setIgnoreMove(true)\n    }\n  }\n\n  // sets initialHit\n  // sets coordAdjust\n  processFirstCoord(ev: PointerDragEvent) {\n    let origPoint = { left: ev.pageX, top: ev.pageY }\n    let adjustedPoint = origPoint\n    let subjectEl = ev.subjectEl\n    let subjectRect\n\n    if (subjectEl instanceof HTMLElement) { // i.e. not a Document/ShadowRoot\n      subjectRect = computeRect(subjectEl)\n      adjustedPoint = constrainPoint(adjustedPoint, subjectRect)\n    }\n\n    let initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top)\n    if (initialHit) {\n      if (this.useSubjectCenter && subjectRect) {\n        let slicedSubjectRect = intersectRects(subjectRect, initialHit.rect)\n        if (slicedSubjectRect) {\n          adjustedPoint = getRectCenter(slicedSubjectRect)\n        }\n      }\n\n      this.coordAdjust = diffPoints(adjustedPoint, origPoint)\n    } else {\n      this.coordAdjust = { left: 0, top: 0 }\n    }\n  }\n\n  handleDragStart = (ev: PointerDragEvent) => {\n    this.emitter.trigger('dragstart', ev)\n    this.handleMove(ev, true) // force = fire even if initially null\n  }\n\n  handleDragMove = (ev: PointerDragEvent) => {\n    this.emitter.trigger('dragmove', ev)\n    this.handleMove(ev)\n  }\n\n  handlePointerUp = (ev: PointerDragEvent) => {\n    this.releaseHits()\n    this.emitter.trigger('pointerup', ev)\n  }\n\n  handleDragEnd = (ev: PointerDragEvent) => {\n    if (this.movingHit) {\n      this.emitter.trigger('hitupdate', null, true, ev)\n    }\n\n    this.finalHit = this.movingHit\n    this.movingHit = null\n    this.emitter.trigger('dragend', ev)\n  }\n\n  handleMove(ev: PointerDragEvent, forceHandle?: boolean) {\n    let hit = this.queryHitForOffset(\n      ev.pageX + this.coordAdjust!.left,\n      ev.pageY + this.coordAdjust!.top,\n    )\n\n    if (forceHandle || !isHitsEqual(this.movingHit, hit)) {\n      this.movingHit = hit\n      this.emitter.trigger('hitupdate', hit, false, ev)\n    }\n  }\n\n  prepareHits() {\n    this.offsetTrackers = mapHash(this.droppableStore, (interactionSettings) => {\n      interactionSettings.component.prepareHits()\n      return new OffsetTracker(interactionSettings.el)\n    })\n  }\n\n  releaseHits() {\n    let { offsetTrackers } = this\n\n    for (let id in offsetTrackers) {\n      offsetTrackers[id].destroy()\n    }\n\n    this.offsetTrackers = {}\n  }\n\n  queryHitForOffset(offsetLeft: number, offsetTop: number): Hit | null {\n    let { droppableStore, offsetTrackers } = this\n    let bestHit: Hit | null = null\n\n    for (let id in droppableStore) {\n      let component = droppableStore[id].component\n      let offsetTracker = offsetTrackers[id]\n\n      if (\n        offsetTracker && // wasn't destroyed mid-drag\n        offsetTracker.isWithinClipping(offsetLeft, offsetTop)\n      ) {\n        let originLeft = offsetTracker.computeLeft()\n        let originTop = offsetTracker.computeTop()\n        let positionLeft = offsetLeft - originLeft\n        let positionTop = offsetTop - originTop\n        let { origRect } = offsetTracker\n        let width = origRect.right - origRect.left\n        let height = origRect.bottom - origRect.top\n\n        if (\n          // must be within the element's bounds\n          positionLeft >= 0 && positionLeft < width &&\n          positionTop >= 0 && positionTop < height\n        ) {\n          let hit = component.queryHit(positionLeft, positionTop, width, height)\n          if (\n            hit && (\n              // make sure the hit is within activeRange, meaning it's not a dead cell\n              rangeContainsRange(hit.dateProfile.activeRange, hit.dateSpan.range)\n            ) &&\n            (!bestHit || hit.layer > bestHit.layer)\n          ) {\n            hit.componentId = id\n            hit.context = component.context\n\n            // TODO: better way to re-orient rectangle\n            hit.rect.left += originLeft\n            hit.rect.right += originLeft\n            hit.rect.top += originTop\n            hit.rect.bottom += originTop\n\n            bestHit = hit\n          }\n        }\n      }\n    }\n\n    return bestHit\n  }\n}\n\nexport function isHitsEqual(hit0: Hit | null, hit1: Hit | null): boolean {\n  if (!hit0 && !hit1) {\n    return true\n  }\n\n  if (Boolean(hit0) !== Boolean(hit1)) {\n    return false\n  }\n\n  return isDateSpansEqual(hit0!.dateSpan, hit1!.dateSpan)\n}\n", "import { DateSpan, CalendarContext, DatePointApi, DateEnv, ViewApi, EventApi } from '@fullcalendar/common'\nimport { __assign } from 'tslib'\n\nexport interface DropArg extends DatePointApi {\n  draggedEl: HTMLElement\n  jsEvent: MouseEvent\n  view: ViewApi\n}\n\nexport type EventReceiveArg = EventReceiveLeaveArg\nexport type EventLeaveArg = EventReceiveLeaveArg\nexport interface EventReceiveLeaveArg { // will this become public?\n  draggedEl: HTMLElement\n  event: EventApi\n  relatedEvents: EventApi[]\n  revert: () => void\n  view: ViewApi\n}\n\nexport function buildDatePointApiWithContext(dateSpan: DateSpan, context: CalendarContext) {\n  let props = {} as DatePointApi\n\n  for (let transform of context.pluginHooks.datePointTransforms) {\n    __assign(props, transform(dateSpan, context))\n  }\n\n  __assign(props, buildDatePointApi(dateSpan, context.dateEnv))\n\n  return props\n}\n\nexport function buildDatePointApi(span: DateSpan, dateEnv: DateEnv): DatePointApi {\n  return {\n    date: dateEnv.toDate(span.range.start),\n    dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),\n    allDay: span.allDay,\n  }\n}\n", "import {\n  PointerDragEvent, Interaction, InteractionSettings, interactionSettingsToStore,\n  DatePointApi,\n  ViewApi,\n} from '@fullcalendar/common'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\nimport { HitDragging, isHitsEqual } from './HitDragging'\nimport { buildDatePointApiWithContext } from '../utils'\n\nexport interface DateClickArg extends DatePointApi {\n  dayEl: HTMLElement\n  jsEvent: MouseEvent\n  view: ViewApi\n}\n\n/*\nMonitors when the user clicks on a specific date/time of a component.\nA pointerdown+pointerup on the same \"hit\" constitutes a click.\n*/\nexport class DateClicking extends Interaction {\n  dragging: FeaturefulElementDragging\n  hitDragging: HitDragging\n\n  constructor(settings: InteractionSettings) {\n    super(settings)\n\n    // we DO want to watch pointer moves because otherwise finalHit won't get populated\n    this.dragging = new FeaturefulElementDragging(settings.el)\n    this.dragging.autoScroller.isEnabled = false\n\n    let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings))\n    hitDragging.emitter.on('pointerdown', this.handlePointerDown)\n    hitDragging.emitter.on('dragend', this.handleDragEnd)\n  }\n\n  destroy() {\n    this.dragging.destroy()\n  }\n\n  handlePointerDown = (pev: PointerDragEvent) => {\n    let { dragging } = this\n    let downEl = pev.origEvent.target as HTMLElement\n\n    // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired\n    dragging.setIgnoreMove(\n      !this.component.isValidDateDownEl(downEl),\n    )\n  }\n\n  // won't even fire if moving was ignored\n  handleDragEnd = (ev: PointerDragEvent) => {\n    let { component } = this\n    let { pointer } = this.dragging\n\n    if (!pointer.wasTouchScroll) {\n      let { initialHit, finalHit } = this.hitDragging\n\n      if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {\n        let { context } = component\n        let arg: DateClickArg = {\n          ...buildDatePointApiWithContext(initialHit.dateSpan, context),\n          dayEl: initialHit.dayEl,\n          jsEvent: ev.origEvent as MouseEvent,\n          view: context.viewApi || context.calendarApi.view,\n        }\n\n        context.emitter.trigger('dateClick', arg)\n      }\n    }\n  }\n}\n", "import {\n  compareNumbers, enableCursor, disableCursor, DateComponent, Hit,\n  DateSpan, PointerDragEvent, dateSelectionJoinTransformer,\n  Interaction, InteractionSettings, interactionSettingsToStore,\n  triggerDateSelect, isDateSelectionValid,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { HitDragging } from './HitDragging'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\n\n/*\nTracks when the user selects a portion of time of a component,\nconstituted by a drag over date cells, with a possible delay at the beginning of the drag.\n*/\nexport class DateSelecting extends Interaction {\n  dragging: FeaturefulElementDragging\n  hitDragging: HitDragging\n  dragSelection: DateSpan | null = null\n\n  constructor(settings: InteractionSettings) {\n    super(settings)\n    let { component } = settings\n    let { options } = component.context\n\n    let dragging = this.dragging = new FeaturefulElementDragging(settings.el)\n    dragging.touchScrollAllowed = false\n    dragging.minDistance = options.selectMinDistance || 0\n    dragging.autoScroller.isEnabled = options.dragScroll\n\n    let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings))\n    hitDragging.emitter.on('pointerdown', this.handlePointerDown)\n    hitDragging.emitter.on('dragstart', this.handleDragStart)\n    hitDragging.emitter.on('hitupdate', this.handleHitUpdate)\n    hitDragging.emitter.on('pointerup', this.handlePointerUp)\n  }\n\n  destroy() {\n    this.dragging.destroy()\n  }\n\n  handlePointerDown = (ev: PointerDragEvent) => {\n    let { component, dragging } = this\n    let { options } = component.context\n\n    let canSelect = options.selectable &&\n      component.isValidDateDownEl(ev.origEvent.target as HTMLElement)\n\n    // don't bother to watch expensive moves if component won't do selection\n    dragging.setIgnoreMove(!canSelect)\n\n    // if touch, require user to hold down\n    dragging.delay = ev.isTouch ? getComponentTouchDelay(component) : null\n  }\n\n  handleDragStart = (ev: PointerDragEvent) => {\n    this.component.context.calendarApi.unselect(ev) // unselect previous selections\n  }\n\n  handleHitUpdate = (hit: Hit | null, isFinal: boolean) => {\n    let { context } = this.component\n    let dragSelection: DateSpan | null = null\n    let isInvalid = false\n\n    if (hit) {\n      let initialHit = this.hitDragging.initialHit!\n      let disallowed = hit.componentId === initialHit.componentId\n        && this.isHitComboAllowed\n        && !this.isHitComboAllowed(initialHit, hit)\n\n      if (!disallowed) {\n        dragSelection = joinHitsIntoSelection(\n          initialHit,\n          hit,\n          context.pluginHooks.dateSelectionTransformers,\n        )\n      }\n\n      if (!dragSelection || !isDateSelectionValid(dragSelection, hit.dateProfile, context)) {\n        isInvalid = true\n        dragSelection = null\n      }\n    }\n\n    if (dragSelection) {\n      context.dispatch({ type: 'SELECT_DATES', selection: dragSelection })\n    } else if (!isFinal) { // only unselect if moved away while dragging\n      context.dispatch({ type: 'UNSELECT_DATES' })\n    }\n\n    if (!isInvalid) {\n      enableCursor()\n    } else {\n      disableCursor()\n    }\n\n    if (!isFinal) {\n      this.dragSelection = dragSelection // only clear if moved away from all hits while dragging\n    }\n  }\n\n  handlePointerUp = (pev: PointerDragEvent) => {\n    if (this.dragSelection) {\n      // selection is already rendered, so just need to report selection\n      triggerDateSelect(this.dragSelection, pev, this.component.context)\n\n      this.dragSelection = null\n    }\n  }\n}\n\nfunction getComponentTouchDelay(component: DateComponent<any>): number {\n  let { options } = component.context\n  let delay = options.selectLongPressDelay\n\n  if (delay == null) {\n    delay = options.longPressDelay\n  }\n\n  return delay\n}\n\nfunction joinHitsIntoSelection(hit0: Hit, hit1: Hit, dateSelectionTransformers: dateSelectionJoinTransformer[]): DateSpan {\n  let dateSpan0 = hit0.dateSpan\n  let dateSpan1 = hit1.dateSpan\n  let ms = [\n    dateSpan0.range.start,\n    dateSpan0.range.end,\n    dateSpan1.range.start,\n    dateSpan1.range.end,\n  ]\n\n  ms.sort(compareNumbers)\n\n  let props = {} as DateSpan\n\n  for (let transformer of dateSelectionTransformers) {\n    let res = transformer(hit0, hit1)\n\n    if (res === false) {\n      return null\n    }\n\n    if (res) {\n      __assign(props, res)\n    }\n  }\n\n  props.range = { start: ms[0], end: ms[3] }\n  props.allDay = dateSpan0.allDay\n\n  return props\n}\n", "import {\n  DateComponent, Seg,\n  PointerDragEvent, Hit,\n  EventMutation, applyMutationToEventStore,\n  startOfDay,\n  elementClosest,\n  EventStore, getRelevantEvents, createEmptyEventStore,\n  EventInteractionState,\n  diffDates, enableCursor, disableCursor,\n  EventRenderRange, getElSeg,\n  EventApi,\n  eventDragMutationMassager,\n  Interaction, InteractionSettings, interactionSettingsStore,\n  EventDropTransformers,\n  CalendarContext,\n  ViewApi,\n  EventChangeArg,\n  buildEventApis,\n  EventAddArg,\n  EventRemoveArg,\n  isInteractionValid,\n  getElRoot,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { HitDragging, isHitsEqual } from './HitDragging'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\nimport { buildDatePointApiWithContext } from '../utils'\n\nexport type EventDragStopArg = EventDragArg\nexport type EventDragStartArg = EventDragArg\n\nexport interface EventDragArg {\n  el: HTMLElement\n  event: EventApi\n  jsEvent: MouseEvent\n  view: ViewApi\n}\n\nexport class EventDragging extends Interaction { // TODO: rename to EventSelectingAndDragging\n  // TODO: test this in IE11\n  // QUESTION: why do we need it on the resizable???\n  static SELECTOR = '.fc-event-draggable, .fc-event-resizable'\n\n  dragging: FeaturefulElementDragging\n  hitDragging: HitDragging\n\n  // internal state\n  subjectEl: HTMLElement | null = null\n  subjectSeg: Seg | null = null // the seg being selected/dragged\n  isDragging: boolean = false\n  eventRange: EventRenderRange | null = null\n  relevantEvents: EventStore | null = null // the events being dragged\n  receivingContext: CalendarContext | null = null\n  validMutation: EventMutation | null = null\n  mutatedRelevantEvents: EventStore | null = null\n\n  constructor(settings: InteractionSettings) {\n    super(settings)\n    let { component } = this\n    let { options } = component.context\n\n    let dragging = this.dragging = new FeaturefulElementDragging(settings.el)\n    dragging.pointer.selector = EventDragging.SELECTOR\n    dragging.touchScrollAllowed = false\n    dragging.autoScroller.isEnabled = options.dragScroll\n\n    let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsStore)\n    hitDragging.useSubjectCenter = settings.useEventCenter\n    hitDragging.emitter.on('pointerdown', this.handlePointerDown)\n    hitDragging.emitter.on('dragstart', this.handleDragStart)\n    hitDragging.emitter.on('hitupdate', this.handleHitUpdate)\n    hitDragging.emitter.on('pointerup', this.handlePointerUp)\n    hitDragging.emitter.on('dragend', this.handleDragEnd)\n  }\n\n  destroy() {\n    this.dragging.destroy()\n  }\n\n  handlePointerDown = (ev: PointerDragEvent) => {\n    let origTarget = ev.origEvent.target as HTMLElement\n    let { component, dragging } = this\n    let { mirror } = dragging\n    let { options } = component.context\n    let initialContext = component.context\n    this.subjectEl = ev.subjectEl as HTMLElement\n    let subjectSeg = this.subjectSeg = getElSeg(ev.subjectEl as HTMLElement)!\n    let eventRange = this.eventRange = subjectSeg.eventRange!\n    let eventInstanceId = eventRange.instance!.instanceId\n\n    this.relevantEvents = getRelevantEvents(\n      initialContext.getCurrentData().eventStore,\n      eventInstanceId,\n    )\n\n    dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance\n    dragging.delay =\n      // only do a touch delay if touch and this event hasn't been selected yet\n      (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?\n        getComponentTouchDelay(component) :\n        null\n\n    if (options.fixedMirrorParent) {\n      mirror.parentNode = options.fixedMirrorParent\n    } else {\n      mirror.parentNode = elementClosest(origTarget, '.fc')\n    }\n\n    mirror.revertDuration = options.dragRevertDuration\n\n    let isValid =\n      component.isValidSegDownEl(origTarget) &&\n      !elementClosest(origTarget, '.fc-event-resizer') // NOT on a resizer\n\n    dragging.setIgnoreMove(!isValid)\n\n    // disable dragging for elements that are resizable (ie, selectable)\n    // but are not draggable\n    this.isDragging = isValid &&\n      (ev.subjectEl as HTMLElement).classList.contains('fc-event-draggable')\n  }\n\n  handleDragStart = (ev: PointerDragEvent) => {\n    let initialContext = this.component.context\n    let eventRange = this.eventRange!\n    let eventInstanceId = eventRange.instance.instanceId\n\n    if (ev.isTouch) {\n      // need to select a different event?\n      if (eventInstanceId !== this.component.props.eventSelection) {\n        initialContext.dispatch({ type: 'SELECT_EVENT', eventInstanceId })\n      }\n    } else {\n      // if now using mouse, but was previous touch interaction, clear selected event\n      initialContext.dispatch({ type: 'UNSELECT_EVENT' })\n    }\n\n    if (this.isDragging) {\n      initialContext.calendarApi.unselect(ev) // unselect *date* selection\n      initialContext.emitter.trigger('eventDragStart', {\n        el: this.subjectEl,\n        event: new EventApi(initialContext, eventRange.def, eventRange.instance),\n        jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n        view: initialContext.viewApi,\n      } as EventDragStartArg)\n    }\n  }\n\n  handleHitUpdate = (hit: Hit | null, isFinal: boolean) => {\n    if (!this.isDragging) {\n      return\n    }\n\n    let relevantEvents = this.relevantEvents!\n    let initialHit = this.hitDragging.initialHit!\n    let initialContext = this.component.context\n\n    // states based on new hit\n    let receivingContext: CalendarContext | null = null\n    let mutation: EventMutation | null = null\n    let mutatedRelevantEvents: EventStore | null = null\n    let isInvalid = false\n    let interaction: EventInteractionState = {\n      affectedEvents: relevantEvents,\n      mutatedEvents: createEmptyEventStore(),\n      isEvent: true,\n    }\n\n    if (hit) {\n      receivingContext = hit.context\n      let receivingOptions = receivingContext.options\n\n      if (\n        initialContext === receivingContext ||\n        (receivingOptions.editable && receivingOptions.droppable)\n      ) {\n        mutation = computeEventMutation(initialHit, hit, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers)\n\n        if (mutation) {\n          mutatedRelevantEvents = applyMutationToEventStore(\n            relevantEvents,\n            receivingContext.getCurrentData().eventUiBases,\n            mutation,\n            receivingContext,\n          )\n          interaction.mutatedEvents = mutatedRelevantEvents\n\n          if (!isInteractionValid(interaction, hit.dateProfile, receivingContext)) {\n            isInvalid = true\n            mutation = null\n            mutatedRelevantEvents = null\n            interaction.mutatedEvents = createEmptyEventStore()\n          }\n        }\n      } else {\n        receivingContext = null\n      }\n    }\n\n    this.displayDrag(receivingContext, interaction)\n\n    if (!isInvalid) {\n      enableCursor()\n    } else {\n      disableCursor()\n    }\n\n    if (!isFinal) {\n      if (\n        initialContext === receivingContext && // TODO: write test for this\n        isHitsEqual(initialHit, hit)\n      ) {\n        mutation = null\n      }\n\n      this.dragging.setMirrorNeedsRevert(!mutation)\n\n      // render the mirror if no already-rendered mirror\n      // TODO: wish we could somehow wait for dispatch to guarantee render\n      this.dragging.setMirrorIsVisible(\n        !hit || !getElRoot(this.subjectEl).querySelector('.fc-event-mirror'), // TODO: turn className into constant\n      )\n\n      // assign states based on new hit\n      this.receivingContext = receivingContext\n      this.validMutation = mutation\n      this.mutatedRelevantEvents = mutatedRelevantEvents\n    }\n  }\n\n  handlePointerUp = () => {\n    if (!this.isDragging) {\n      this.cleanup() // because handleDragEnd won't fire\n    }\n  }\n\n  handleDragEnd = (ev: PointerDragEvent) => {\n    if (this.isDragging) {\n      let initialContext = this.component.context\n      let initialView = initialContext.viewApi\n      let { receivingContext, validMutation } = this\n      let eventDef = this.eventRange!.def\n      let eventInstance = this.eventRange!.instance\n      let eventApi = new EventApi(initialContext, eventDef, eventInstance)\n      let relevantEvents = this.relevantEvents!\n      let mutatedRelevantEvents = this.mutatedRelevantEvents!\n      let { finalHit } = this.hitDragging\n\n      this.clearDrag() // must happen after revert animation\n\n      initialContext.emitter.trigger('eventDragStop', {\n        el: this.subjectEl,\n        event: eventApi,\n        jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n        view: initialView,\n      } as EventDragStopArg)\n\n      if (validMutation) {\n        // dropped within same calendar\n        if (receivingContext === initialContext) {\n          let updatedEventApi = new EventApi(\n            initialContext,\n            mutatedRelevantEvents.defs[eventDef.defId],\n            eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null,\n          )\n\n          initialContext.dispatch({\n            type: 'MERGE_EVENTS',\n            eventStore: mutatedRelevantEvents,\n          })\n\n          let eventChangeArg: EventChangeArg = {\n            oldEvent: eventApi,\n            event: updatedEventApi,\n            relatedEvents: buildEventApis(mutatedRelevantEvents, initialContext, eventInstance),\n            revert() {\n              initialContext.dispatch({\n                type: 'MERGE_EVENTS',\n                eventStore: relevantEvents, // the pre-change data\n              })\n            },\n          }\n\n          let transformed: ReturnType<EventDropTransformers> = {}\n          for (let transformer of initialContext.getCurrentData().pluginHooks.eventDropTransformers) {\n            __assign(transformed, transformer(validMutation, initialContext))\n          }\n\n          initialContext.emitter.trigger('eventDrop', {\n            ...eventChangeArg,\n            ...transformed,\n            el: ev.subjectEl as HTMLElement,\n            delta: validMutation.datesDelta!,\n            jsEvent: ev.origEvent as MouseEvent, // bad\n            view: initialView,\n          })\n\n          initialContext.emitter.trigger('eventChange', eventChangeArg)\n\n        // dropped in different calendar\n        } else if (receivingContext) {\n          let eventRemoveArg: EventRemoveArg = {\n            event: eventApi,\n            relatedEvents: buildEventApis(relevantEvents, initialContext, eventInstance),\n            revert() {\n              initialContext.dispatch({\n                type: 'MERGE_EVENTS',\n                eventStore: relevantEvents,\n              })\n            },\n          }\n\n          initialContext.emitter.trigger('eventLeave', {\n            ...eventRemoveArg,\n            draggedEl: ev.subjectEl as HTMLElement,\n            view: initialView,\n          })\n\n          initialContext.dispatch({\n            type: 'REMOVE_EVENTS',\n            eventStore: relevantEvents,\n          })\n\n          initialContext.emitter.trigger('eventRemove', eventRemoveArg)\n\n          let addedEventDef = mutatedRelevantEvents.defs[eventDef.defId]\n          let addedEventInstance = mutatedRelevantEvents.instances[eventInstance.instanceId]\n          let addedEventApi = new EventApi(receivingContext, addedEventDef, addedEventInstance)\n\n          receivingContext.dispatch({\n            type: 'MERGE_EVENTS',\n            eventStore: mutatedRelevantEvents,\n          })\n\n          let eventAddArg: EventAddArg = {\n            event: addedEventApi,\n            relatedEvents: buildEventApis(mutatedRelevantEvents, receivingContext, addedEventInstance),\n            revert() {\n              receivingContext.dispatch({\n                type: 'REMOVE_EVENTS',\n                eventStore: mutatedRelevantEvents,\n              })\n            },\n          }\n\n          receivingContext.emitter.trigger('eventAdd', eventAddArg)\n\n          if (ev.isTouch) {\n            receivingContext.dispatch({\n              type: 'SELECT_EVENT',\n              eventInstanceId: eventInstance.instanceId,\n            })\n          }\n\n          receivingContext.emitter.trigger('drop', {\n            ...buildDatePointApiWithContext(finalHit.dateSpan, receivingContext),\n            draggedEl: ev.subjectEl as HTMLElement,\n            jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n            view: finalHit.context.viewApi,\n          })\n\n          receivingContext.emitter.trigger('eventReceive', {\n            ...eventAddArg,\n            draggedEl: ev.subjectEl as HTMLElement,\n            view: finalHit.context.viewApi,\n          })\n        }\n      } else {\n        initialContext.emitter.trigger('_noEventDrop')\n      }\n    }\n\n    this.cleanup()\n  }\n\n  // render a drag state on the next receivingCalendar\n  displayDrag(nextContext: CalendarContext | null, state: EventInteractionState) {\n    let initialContext = this.component.context\n    let prevContext = this.receivingContext\n\n    // does the previous calendar need to be cleared?\n    if (prevContext && prevContext !== nextContext) {\n      // does the initial calendar need to be cleared?\n      // if so, don't clear all the way. we still need to to hide the affectedEvents\n      if (prevContext === initialContext) {\n        prevContext.dispatch({\n          type: 'SET_EVENT_DRAG',\n          state: {\n            affectedEvents: state.affectedEvents,\n            mutatedEvents: createEmptyEventStore(),\n            isEvent: true,\n          },\n        })\n\n      // completely clear the old calendar if it wasn't the initial\n      } else {\n        prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' })\n      }\n    }\n\n    if (nextContext) {\n      nextContext.dispatch({ type: 'SET_EVENT_DRAG', state })\n    }\n  }\n\n  clearDrag() {\n    let initialCalendar = this.component.context\n    let { receivingContext } = this\n\n    if (receivingContext) {\n      receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' })\n    }\n\n    // the initial calendar might have an dummy drag state from displayDrag\n    if (initialCalendar !== receivingContext) {\n      initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' })\n    }\n  }\n\n  cleanup() { // reset all internal state\n    this.subjectSeg = null\n    this.isDragging = false\n    this.eventRange = null\n    this.relevantEvents = null\n    this.receivingContext = null\n    this.validMutation = null\n    this.mutatedRelevantEvents = null\n  }\n}\n\nfunction computeEventMutation(hit0: Hit, hit1: Hit, massagers: eventDragMutationMassager[]): EventMutation {\n  let dateSpan0 = hit0.dateSpan\n  let dateSpan1 = hit1.dateSpan\n  let date0 = dateSpan0.range.start\n  let date1 = dateSpan1.range.start\n  let standardProps = {} as any\n\n  if (dateSpan0.allDay !== dateSpan1.allDay) {\n    standardProps.allDay = dateSpan1.allDay\n    standardProps.hasEnd = hit1.context.options.allDayMaintainDuration\n\n    if (dateSpan1.allDay) {\n      // means date1 is already start-of-day,\n      // but date0 needs to be converted\n      date0 = startOfDay(date0)\n    }\n  }\n\n  let delta = diffDates(\n    date0, date1,\n    hit0.context.dateEnv,\n    hit0.componentId === hit1.componentId ?\n      hit0.largeUnit :\n      null,\n  )\n\n  if (delta.milliseconds) { // has hours/minutes/seconds\n    standardProps.allDay = false\n  }\n\n  let mutation: EventMutation = {\n    datesDelta: delta,\n    standardProps,\n  }\n\n  for (let massager of massagers) {\n    massager(mutation, hit0, hit1)\n  }\n\n  return mutation\n}\n\nfunction getComponentTouchDelay(component: DateComponent<any>): number | null {\n  let { options } = component.context\n  let delay = options.eventLongPressDelay\n\n  if (delay == null) {\n    delay = options.longPressDelay\n  }\n\n  return delay\n}\n", "import {\n  Seg, Hit,\n  EventMutation, applyMutationToEventStore,\n  elementClosest,\n  PointerDragEvent,\n  EventStore, getRelevantEvents, createEmptyEventStore,\n  diffDates, enableCursor, disableCursor,\n  DateRange,\n  EventApi,\n  EventRenderRange, getElSeg,\n  createDuration,\n  EventInteractionState,\n  Interaction, InteractionSettings, interactionSettingsToStore, ViewApi, Duration, EventChangeArg, buildEventApis, isInteractionValid,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { HitDragging, isHitsEqual } from './HitDragging'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\n\nexport type EventResizeStartArg = EventResizeStartStopArg\nexport type EventResizeStopArg = EventResizeStartStopArg\n\nexport interface EventResizeStartStopArg {\n  el: HTMLElement\n  event: EventApi\n  jsEvent: MouseEvent\n  view: ViewApi\n}\n\nexport interface EventResizeDoneArg extends EventChangeArg {\n  el: HTMLElement\n  startDelta: Duration\n  endDelta: Duration\n  jsEvent: MouseEvent\n  view: ViewApi\n}\n\nexport class EventResizing extends Interaction {\n  dragging: FeaturefulElementDragging\n  hitDragging: HitDragging\n\n  // internal state\n  draggingSegEl: HTMLElement | null = null\n  draggingSeg: Seg | null = null // TODO: rename to resizingSeg? subjectSeg?\n  eventRange: EventRenderRange | null = null\n  relevantEvents: EventStore | null = null\n  validMutation: EventMutation | null = null\n  mutatedRelevantEvents: EventStore | null = null\n\n  constructor(settings: InteractionSettings) {\n    super(settings)\n    let { component } = settings\n\n    let dragging = this.dragging = new FeaturefulElementDragging(settings.el)\n    dragging.pointer.selector = '.fc-event-resizer'\n    dragging.touchScrollAllowed = false\n    dragging.autoScroller.isEnabled = component.context.options.dragScroll\n\n    let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings))\n    hitDragging.emitter.on('pointerdown', this.handlePointerDown)\n    hitDragging.emitter.on('dragstart', this.handleDragStart)\n    hitDragging.emitter.on('hitupdate', this.handleHitUpdate)\n    hitDragging.emitter.on('dragend', this.handleDragEnd)\n  }\n\n  destroy() {\n    this.dragging.destroy()\n  }\n\n  handlePointerDown = (ev: PointerDragEvent) => {\n    let { component } = this\n    let segEl = this.querySegEl(ev)\n    let seg = getElSeg(segEl)\n    let eventRange = this.eventRange = seg.eventRange!\n\n    this.dragging.minDistance = component.context.options.eventDragMinDistance\n\n    // if touch, need to be working with a selected event\n    this.dragging.setIgnoreMove(\n      !this.component.isValidSegDownEl(ev.origEvent.target as HTMLElement) ||\n      (ev.isTouch && this.component.props.eventSelection !== eventRange.instance!.instanceId),\n    )\n  }\n\n  handleDragStart = (ev: PointerDragEvent) => {\n    let { context } = this.component\n    let eventRange = this.eventRange!\n\n    this.relevantEvents = getRelevantEvents(\n      context.getCurrentData().eventStore,\n      this.eventRange.instance!.instanceId,\n    )\n\n    let segEl = this.querySegEl(ev)\n    this.draggingSegEl = segEl\n    this.draggingSeg = getElSeg(segEl)\n\n    context.calendarApi.unselect()\n    context.emitter.trigger('eventResizeStart', {\n      el: segEl,\n      event: new EventApi(context, eventRange.def, eventRange.instance),\n      jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n      view: context.viewApi,\n    } as EventResizeStartArg)\n  }\n\n  handleHitUpdate = (hit: Hit | null, isFinal: boolean, ev: PointerDragEvent) => {\n    let { context } = this.component\n    let relevantEvents = this.relevantEvents!\n    let initialHit = this.hitDragging.initialHit!\n    let eventInstance = this.eventRange.instance!\n    let mutation: EventMutation | null = null\n    let mutatedRelevantEvents: EventStore | null = null\n    let isInvalid = false\n    let interaction: EventInteractionState = {\n      affectedEvents: relevantEvents,\n      mutatedEvents: createEmptyEventStore(),\n      isEvent: true,\n    }\n\n    if (hit) {\n      let disallowed = hit.componentId === initialHit.componentId\n        && this.isHitComboAllowed\n        && !this.isHitComboAllowed(initialHit, hit)\n\n      if (!disallowed) {\n        mutation = computeMutation(\n          initialHit,\n          hit,\n          (ev.subjectEl as HTMLElement).classList.contains('fc-event-resizer-start'),\n          eventInstance.range,\n        )\n      }\n    }\n\n    if (mutation) {\n      mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, context.getCurrentData().eventUiBases, mutation, context)\n      interaction.mutatedEvents = mutatedRelevantEvents\n\n      if (!isInteractionValid(interaction, hit.dateProfile, context)) {\n        isInvalid = true\n        mutation = null\n        mutatedRelevantEvents = null\n        interaction.mutatedEvents = null\n      }\n    }\n\n    if (mutatedRelevantEvents) {\n      context.dispatch({\n        type: 'SET_EVENT_RESIZE',\n        state: interaction,\n      })\n    } else {\n      context.dispatch({ type: 'UNSET_EVENT_RESIZE' })\n    }\n\n    if (!isInvalid) {\n      enableCursor()\n    } else {\n      disableCursor()\n    }\n\n    if (!isFinal) {\n      if (mutation && isHitsEqual(initialHit, hit)) {\n        mutation = null\n      }\n\n      this.validMutation = mutation\n      this.mutatedRelevantEvents = mutatedRelevantEvents\n    }\n  }\n\n  handleDragEnd = (ev: PointerDragEvent) => {\n    let { context } = this.component\n    let eventDef = this.eventRange!.def\n    let eventInstance = this.eventRange!.instance\n    let eventApi = new EventApi(context, eventDef, eventInstance)\n    let relevantEvents = this.relevantEvents!\n    let mutatedRelevantEvents = this.mutatedRelevantEvents!\n\n    context.emitter.trigger('eventResizeStop', {\n      el: this.draggingSegEl,\n      event: eventApi,\n      jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n      view: context.viewApi,\n    } as EventResizeStopArg)\n\n    if (this.validMutation) {\n      let updatedEventApi = new EventApi(\n        context,\n        mutatedRelevantEvents.defs[eventDef.defId],\n        eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null,\n      )\n\n      context.dispatch({\n        type: 'MERGE_EVENTS',\n        eventStore: mutatedRelevantEvents,\n      })\n\n      let eventChangeArg: EventChangeArg = {\n        oldEvent: eventApi,\n        event: updatedEventApi,\n        relatedEvents: buildEventApis(mutatedRelevantEvents, context, eventInstance),\n        revert() {\n          context.dispatch({\n            type: 'MERGE_EVENTS',\n            eventStore: relevantEvents, // the pre-change events\n          })\n        },\n      }\n\n      context.emitter.trigger('eventResize', {\n        ...eventChangeArg,\n        el: this.draggingSegEl,\n        startDelta: this.validMutation.startDelta || createDuration(0),\n        endDelta: this.validMutation.endDelta || createDuration(0),\n        jsEvent: ev.origEvent as MouseEvent,\n        view: context.viewApi,\n      })\n\n      context.emitter.trigger('eventChange', eventChangeArg)\n    } else {\n      context.emitter.trigger('_noEventResize')\n    }\n\n    // reset all internal state\n    this.draggingSeg = null\n    this.relevantEvents = null\n    this.validMutation = null\n\n    // okay to keep eventInstance around. useful to set it in handlePointerDown\n  }\n\n  querySegEl(ev: PointerDragEvent) {\n    return elementClosest(ev.subjectEl as HTMLElement, '.fc-event')\n  }\n}\n\nfunction computeMutation(\n  hit0: Hit,\n  hit1: Hit,\n  isFromStart: boolean,\n  instanceRange: DateRange,\n): EventMutation | null {\n  let dateEnv = hit0.context.dateEnv\n  let date0 = hit0.dateSpan.range.start\n  let date1 = hit1.dateSpan.range.start\n\n  let delta = diffDates(\n    date0, date1,\n    dateEnv,\n    hit0.largeUnit,\n  )\n\n  if (isFromStart) {\n    if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) {\n      return { startDelta: delta }\n    }\n  } else if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {\n    return { endDelta: delta }\n  }\n\n  return null\n}\n", "import {\n  DateSelectionApi,\n  PointerDragEvent,\n  elementClosest,\n  CalendarContext,\n  getEventTargetViaRoot,\n} from '@fullcalendar/common'\nimport { PointerDragging } from '../dnd/PointerDragging'\nimport { EventDragging } from './EventDragging'\n\nexport class UnselectAuto {\n  documentPointer: PointerDragging // for unfocusing\n  isRecentPointerDateSelect = false // wish we could use a selector to detect date selection, but uses hit system\n  matchesCancel = false\n  matchesEvent = false\n\n  constructor(private context: CalendarContext) {\n    let documentPointer = this.documentPointer = new PointerDragging(document)\n    documentPointer.shouldIgnoreMove = true\n    documentPointer.shouldWatchScroll = false\n    documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown)\n    documentPointer.emitter.on('pointerup', this.onDocumentPointerUp)\n\n    /*\n    TODO: better way to know about whether there was a selection with the pointer\n    */\n    context.emitter.on('select', this.onSelect)\n  }\n\n  destroy() {\n    this.context.emitter.off('select', this.onSelect)\n    this.documentPointer.destroy()\n  }\n\n  onSelect = (selectInfo: DateSelectionApi) => {\n    if (selectInfo.jsEvent) {\n      this.isRecentPointerDateSelect = true\n    }\n  }\n\n  onDocumentPointerDown = (pev: PointerDragEvent) => {\n    let unselectCancel = this.context.options.unselectCancel\n    let downEl = getEventTargetViaRoot(pev.origEvent) as HTMLElement\n\n    this.matchesCancel = !!elementClosest(downEl, unselectCancel)\n    this.matchesEvent = !!elementClosest(downEl, EventDragging.SELECTOR) // interaction started on an event?\n  }\n\n  onDocumentPointerUp = (pev: PointerDragEvent) => {\n    let { context } = this\n    let { documentPointer } = this\n    let calendarState = context.getCurrentData()\n\n    // touch-scrolling should never unfocus any type of selection\n    if (!documentPointer.wasTouchScroll) {\n      if (\n        calendarState.dateSelection && // an existing date selection?\n        !this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?\n      ) {\n        let unselectAuto = context.options.unselectAuto\n\n        if (unselectAuto && (!unselectAuto || !this.matchesCancel)) {\n          context.calendarApi.unselect(pev)\n        }\n      }\n\n      if (\n        calendarState.eventSelection && // an existing event selected?\n        !this.matchesEvent // interaction DIDN'T start on an event\n      ) {\n        context.dispatch({ type: 'UNSELECT_EVENT' })\n      }\n    }\n\n    this.isRecentPointerDateSelect = false\n  }\n}\n", "import { identity, Identity, EventDropArg } from '@fullcalendar/common'\n\n// public\nimport {\n  DateClickArg,\n  EventDragStartArg, EventDragStopArg,\n  EventResizeStartArg, EventResizeStopArg, EventResizeDoneArg,\n  DropArg, EventReceiveArg, EventLeaveArg,\n} from './api-type-deps'\n\nexport const OPTION_REFINERS = {\n  fixedMirrorParent: identity as Identity<HTMLElement>,\n}\n\nexport const LISTENER_REFINERS = {\n  dateClick: identity as Identity<(arg: DateClickArg) => void>,\n  eventDragStart: identity as Identity<(arg: EventDragStartArg) => void>,\n  eventDragStop: identity as Identity<(arg: EventDragStopArg) => void>,\n  eventDrop: identity as Identity<(arg: EventDropArg) => void>,\n  eventResizeStart: identity as Identity<(arg: EventResizeStartArg) => void>,\n  eventResizeStop: identity as Identity<(arg: EventResizeStopArg) => void>,\n  eventResize: identity as Identity<(arg: EventResizeDoneArg) => void>,\n  drop: identity as Identity<(arg: DropArg) => void>,\n  eventReceive: identity as Identity<(arg: EventReceiveArg) => void>,\n  eventLeave: identity as Identity<(arg: EventLeaveArg) => void>,\n}\n", "import {\n  Hit,\n  interactionSettingsStore,\n  PointerDragEvent,\n  parseEventDef, createEventInstance, EventTuple,\n  createEmptyEventStore, eventTupleToStore,\n  config,\n  DateSpan, DatePointApi,\n  EventInteractionState,\n  DragMetaInput, DragMeta, parseDragMeta,\n  EventApi,\n  elementMatches,\n  enableCursor, disableCursor,\n  isInteractionValid,\n  ElementDragging,\n  ViewApi,\n  CalendarContext,\n  getDefaultEventEnd,\n  refineEventDef,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { HitDragging } from '../interactions/HitDragging'\nimport { buildDatePointApiWithContext } from '../utils'\n\nexport type DragMetaGenerator = DragMetaInput | ((el: HTMLElement) => DragMetaInput)\n\nexport interface ExternalDropApi extends DatePointApi {\n  draggedEl: HTMLElement\n  jsEvent: UIEvent\n  view: ViewApi\n}\n\n/*\nGiven an already instantiated draggable object for one-or-more elements,\nInterprets any dragging as an attempt to drag an events that lives outside\nof a calendar onto a calendar.\n*/\nexport class ExternalElementDragging {\n  hitDragging: HitDragging\n  receivingContext: CalendarContext | null = null\n  droppableEvent: EventTuple | null = null // will exist for all drags, even if create:false\n  suppliedDragMeta: DragMetaGenerator | null = null\n  dragMeta: DragMeta | null = null\n\n  constructor(dragging: ElementDragging, suppliedDragMeta?: DragMetaGenerator) {\n    let hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore)\n    hitDragging.requireInitial = false // will start outside of a component\n    hitDragging.emitter.on('dragstart', this.handleDragStart)\n    hitDragging.emitter.on('hitupdate', this.handleHitUpdate)\n    hitDragging.emitter.on('dragend', this.handleDragEnd)\n\n    this.suppliedDragMeta = suppliedDragMeta\n  }\n\n  handleDragStart = (ev: PointerDragEvent) => {\n    this.dragMeta = this.buildDragMeta(ev.subjectEl as HTMLElement)\n  }\n\n  buildDragMeta(subjectEl: HTMLElement) {\n    if (typeof this.suppliedDragMeta === 'object') {\n      return parseDragMeta(this.suppliedDragMeta)\n    }\n    if (typeof this.suppliedDragMeta === 'function') {\n      return parseDragMeta(this.suppliedDragMeta(subjectEl))\n    }\n    return getDragMetaFromEl(subjectEl)\n  }\n\n  handleHitUpdate = (hit: Hit | null, isFinal: boolean, ev: PointerDragEvent) => {\n    let { dragging } = this.hitDragging\n    let receivingContext: CalendarContext | null = null\n    let droppableEvent: EventTuple | null = null\n    let isInvalid = false\n    let interaction: EventInteractionState = {\n      affectedEvents: createEmptyEventStore(),\n      mutatedEvents: createEmptyEventStore(),\n      isEvent: this.dragMeta!.create,\n    }\n\n    if (hit) {\n      receivingContext = hit.context\n\n      if (this.canDropElOnCalendar(ev.subjectEl as HTMLElement, receivingContext)) {\n        droppableEvent = computeEventForDateSpan(\n          hit.dateSpan,\n          this.dragMeta!,\n          receivingContext,\n        )\n\n        interaction.mutatedEvents = eventTupleToStore(droppableEvent)\n        isInvalid = !isInteractionValid(interaction, hit.dateProfile, receivingContext)\n\n        if (isInvalid) {\n          interaction.mutatedEvents = createEmptyEventStore()\n          droppableEvent = null\n        }\n      }\n    }\n\n    this.displayDrag(receivingContext, interaction)\n\n    // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?)\n    // TODO: wish we could somehow wait for dispatch to guarantee render\n    dragging.setMirrorIsVisible(\n      isFinal || !droppableEvent || !document.querySelector('.fc-event-mirror'), // TODO: turn className into constant\n      // TODO: somehow query FullCalendars WITHIN shadow-roots for existing event-mirror els\n    )\n\n    if (!isInvalid) {\n      enableCursor()\n    } else {\n      disableCursor()\n    }\n\n    if (!isFinal) {\n      dragging.setMirrorNeedsRevert(!droppableEvent)\n\n      this.receivingContext = receivingContext\n      this.droppableEvent = droppableEvent\n    }\n  }\n\n  handleDragEnd = (pev: PointerDragEvent) => {\n    let { receivingContext, droppableEvent } = this\n\n    this.clearDrag()\n\n    if (receivingContext && droppableEvent) {\n      let finalHit = this.hitDragging.finalHit!\n      let finalView = finalHit.context.viewApi\n      let dragMeta = this.dragMeta!\n\n      receivingContext.emitter.trigger('drop', {\n        ...buildDatePointApiWithContext(finalHit.dateSpan, receivingContext),\n        draggedEl: pev.subjectEl as HTMLElement,\n        jsEvent: pev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n        view: finalView,\n      })\n\n      if (dragMeta.create) {\n        let addingEvents = eventTupleToStore(droppableEvent)\n\n        receivingContext.dispatch({\n          type: 'MERGE_EVENTS',\n          eventStore: addingEvents,\n        })\n\n        if (pev.isTouch) {\n          receivingContext.dispatch({\n            type: 'SELECT_EVENT',\n            eventInstanceId: droppableEvent.instance.instanceId,\n          })\n        }\n\n        // signal that an external event landed\n        receivingContext.emitter.trigger('eventReceive', {\n          event: new EventApi(\n            receivingContext,\n            droppableEvent.def,\n            droppableEvent.instance,\n          ),\n          relatedEvents: [],\n          revert() {\n            receivingContext.dispatch({\n              type: 'REMOVE_EVENTS',\n              eventStore: addingEvents,\n            })\n          },\n          draggedEl: pev.subjectEl as HTMLElement,\n          view: finalView,\n        })\n      }\n    }\n\n    this.receivingContext = null\n    this.droppableEvent = null\n  }\n\n  displayDrag(nextContext: CalendarContext | null, state: EventInteractionState) {\n    let prevContext = this.receivingContext\n\n    if (prevContext && prevContext !== nextContext) {\n      prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' })\n    }\n\n    if (nextContext) {\n      nextContext.dispatch({ type: 'SET_EVENT_DRAG', state })\n    }\n  }\n\n  clearDrag() {\n    if (this.receivingContext) {\n      this.receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' })\n    }\n  }\n\n  canDropElOnCalendar(el: HTMLElement, receivingContext: CalendarContext): boolean {\n    let dropAccept = receivingContext.options.dropAccept\n\n    if (typeof dropAccept === 'function') {\n      return dropAccept.call(receivingContext.calendarApi, el)\n    }\n\n    if (typeof dropAccept === 'string' && dropAccept) {\n      return Boolean(elementMatches(el, dropAccept))\n    }\n\n    return true\n  }\n}\n\n// Utils for computing event store from the DragMeta\n// ----------------------------------------------------------------------------------------------------\n\nfunction computeEventForDateSpan(dateSpan: DateSpan, dragMeta: DragMeta, context: CalendarContext): EventTuple {\n  let defProps = { ...dragMeta.leftoverProps }\n\n  for (let transform of context.pluginHooks.externalDefTransforms) {\n    __assign(defProps, transform(dateSpan, dragMeta))\n  }\n\n  let { refined, extra } = refineEventDef(defProps, context)\n  let def = parseEventDef(\n    refined,\n    extra,\n    dragMeta.sourceId,\n    dateSpan.allDay,\n    context.options.forceEventDuration || Boolean(dragMeta.duration), // hasEnd\n    context,\n  )\n\n  let start = dateSpan.range.start\n\n  // only rely on time info if drop zone is all-day,\n  // otherwise, we already know the time\n  if (dateSpan.allDay && dragMeta.startTime) {\n    start = context.dateEnv.add(start, dragMeta.startTime)\n  }\n\n  let end = dragMeta.duration ?\n    context.dateEnv.add(start, dragMeta.duration) :\n    getDefaultEventEnd(dateSpan.allDay, start, context)\n\n  let instance = createEventInstance(def.defId, { start, end })\n\n  return { def, instance }\n}\n\n// Utils for extracting data from element\n// ----------------------------------------------------------------------------------------------------\n\nfunction getDragMetaFromEl(el: HTMLElement): DragMeta {\n  let str = getEmbeddedElData(el, 'event')\n  let obj = str ?\n    JSON.parse(str) :\n    { create: false } // if no embedded data, assume no event creation\n\n  return parseDragMeta(obj)\n}\n\nconfig.dataAttrPrefix = ''\n\nfunction getEmbeddedElData(el: HTMLElement, name: string): string {\n  let prefix = config.dataAttrPrefix\n  let prefixedName = (prefix ? prefix + '-' : '') + name\n\n  return el.getAttribute('data-' + prefixedName) || ''\n}\n", "import { BASE_OPTION_DEFAULTS, PointerDragEvent } from '@fullcalendar/common'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\nimport { ExternalElementDragging, DragMetaGenerator } from './ExternalElementDragging'\n\nexport interface ExternalDraggableSettings {\n  eventData?: DragMetaGenerator\n  itemSelector?: string\n  minDistance?: number\n  longPressDelay?: number\n  appendTo?: HTMLElement\n}\n\n/*\nMakes an element (that is *external* to any calendar) draggable.\nCan pass in data that determines how an event will be created when dropped onto a calendar.\nLeverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system.\n*/\nexport class ExternalDraggable {\n  dragging: FeaturefulElementDragging\n  settings: ExternalDraggableSettings\n\n  constructor(el: HTMLElement, settings: ExternalDraggableSettings = {}) {\n    this.settings = settings\n\n    let dragging = this.dragging = new FeaturefulElementDragging(el)\n    dragging.touchScrollAllowed = false\n\n    if (settings.itemSelector != null) {\n      dragging.pointer.selector = settings.itemSelector\n    }\n\n    if (settings.appendTo != null) {\n      dragging.mirror.parentNode = settings.appendTo // TODO: write tests\n    }\n\n    dragging.emitter.on('pointerdown', this.handlePointerDown)\n    dragging.emitter.on('dragstart', this.handleDragStart)\n\n    new ExternalElementDragging(dragging, settings.eventData) // eslint-disable-line no-new\n  }\n\n  handlePointerDown = (ev: PointerDragEvent) => {\n    let { dragging } = this\n    let { minDistance, longPressDelay } = this.settings\n\n    dragging.minDistance =\n      minDistance != null ?\n        minDistance :\n        (ev.isTouch ? 0 : BASE_OPTION_DEFAULTS.eventDragMinDistance)\n\n    dragging.delay =\n      ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv\n        (longPressDelay != null ? longPressDelay : BASE_OPTION_DEFAULTS.longPressDelay) :\n        0\n  }\n\n  handleDragStart = (ev: PointerDragEvent) => {\n    if (\n      ev.isTouch &&\n      this.dragging.delay &&\n      (ev.subjectEl as HTMLElement).classList.contains('fc-event')\n    ) {\n      this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected')\n    }\n  }\n\n  destroy() {\n    this.dragging.destroy()\n  }\n}\n", "import { PointerDragEvent, ElementDragging } from '@fullcalendar/common'\nimport { PointerDragging } from '../dnd/PointerDragging'\n\n/*\nDetects when a *THIRD-PARTY* drag-n-drop system interacts with elements.\nThe third-party system is responsible for drawing the visuals effects of the drag.\nThis class simply monitors for pointer movements and fires events.\nIt also has the ability to hide the moving element (the \"mirror\") during the drag.\n*/\nexport class InferredElementDragging extends ElementDragging {\n  pointer: PointerDragging\n  shouldIgnoreMove: boolean = false\n  mirrorSelector: string = ''\n  currentMirrorEl: HTMLElement | null = null\n\n  constructor(containerEl: HTMLElement) {\n    super(containerEl)\n\n    let pointer = this.pointer = new PointerDragging(containerEl)\n    pointer.emitter.on('pointerdown', this.handlePointerDown)\n    pointer.emitter.on('pointermove', this.handlePointerMove)\n    pointer.emitter.on('pointerup', this.handlePointerUp)\n  }\n\n  destroy() {\n    this.pointer.destroy()\n  }\n\n  handlePointerDown = (ev: PointerDragEvent) => {\n    this.emitter.trigger('pointerdown', ev)\n\n    if (!this.shouldIgnoreMove) {\n      // fire dragstart right away. does not support delay or min-distance\n      this.emitter.trigger('dragstart', ev)\n    }\n  }\n\n  handlePointerMove = (ev: PointerDragEvent) => {\n    if (!this.shouldIgnoreMove) {\n      this.emitter.trigger('dragmove', ev)\n    }\n  }\n\n  handlePointerUp = (ev: PointerDragEvent) => {\n    this.emitter.trigger('pointerup', ev)\n\n    if (!this.shouldIgnoreMove) {\n      // fire dragend right away. does not support a revert animation\n      this.emitter.trigger('dragend', ev)\n    }\n  }\n\n  setIgnoreMove(bool: boolean) {\n    this.shouldIgnoreMove = bool\n  }\n\n  setMirrorIsVisible(bool: boolean) {\n    if (bool) {\n      // restore a previously hidden element.\n      // use the reference in case the selector class has already been removed.\n      if (this.currentMirrorEl) {\n        this.currentMirrorEl.style.visibility = ''\n        this.currentMirrorEl = null\n      }\n    } else {\n      let mirrorEl = this.mirrorSelector\n        // TODO: somehow query FullCalendars WITHIN shadow-roots\n        ? document.querySelector(this.mirrorSelector) as HTMLElement\n        : null\n\n      if (mirrorEl) {\n        this.currentMirrorEl = mirrorEl\n        mirrorEl.style.visibility = 'hidden'\n      }\n    }\n  }\n}\n", "import { ExternalElementDragging, DragMetaGenerator } from './ExternalElementDragging'\nimport { InferredElementDragging } from './InferredElementDragging'\n\nexport interface ThirdPartyDraggableSettings {\n  eventData?: DragMetaGenerator\n  itemSelector?: string\n  mirrorSelector?: string\n}\n\n/*\nBridges third-party drag-n-drop systems with FullCalendar.\nMust be instantiated and destroyed by caller.\n*/\nexport class ThirdPartyDraggable {\n  dragging: InferredElementDragging\n\n  constructor(\n    containerOrSettings?: EventTarget | ThirdPartyDraggableSettings,\n    settings?: ThirdPartyDraggableSettings,\n  ) {\n    let containerEl: EventTarget = document\n\n    if (\n      // wish we could just test instanceof EventTarget, but doesn't work in IE11\n      containerOrSettings === document ||\n      containerOrSettings instanceof Element\n    ) {\n      containerEl = containerOrSettings as EventTarget\n      settings = settings || {}\n    } else {\n      settings = (containerOrSettings || {}) as ThirdPartyDraggableSettings\n    }\n\n    let dragging = this.dragging = new InferredElementDragging(containerEl as HTMLElement)\n\n    if (typeof settings.itemSelector === 'string') {\n      dragging.pointer.selector = settings.itemSelector\n    } else if (containerEl === document) {\n      dragging.pointer.selector = '[data-event]'\n    }\n\n    if (typeof settings.mirrorSelector === 'string') {\n      dragging.mirrorSelector = settings.mirrorSelector\n    }\n\n    new ExternalElementDragging(dragging, settings.eventData) // eslint-disable-line no-new\n  }\n\n  destroy() {\n    this.dragging.destroy()\n  }\n}\n", "import { createPlugin } from '@fullcalendar/common'\nimport { DateClicking } from './interactions/DateClicking'\nimport { DateSelecting } from './interactions/DateSelecting'\nimport { EventDragging } from './interactions/EventDragging'\nimport { EventResizing } from './interactions/EventResizing'\nimport { UnselectAuto } from './interactions/UnselectAuto'\nimport { FeaturefulElementDragging } from './dnd/FeaturefulElementDragging'\nimport { OPTION_REFINERS, LISTENER_REFINERS } from './options'\nimport './options-declare'\n\nexport default createPlugin({\n  componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],\n  calendarInteractions: [UnselectAuto],\n  elementDraggingImpl: FeaturefulElementDragging,\n  optionRefiners: OPTION_REFINERS,\n  listenerRefiners: LISTENER_REFINERS,\n})\n\nexport * from './api-type-deps'\nexport { FeaturefulElementDragging }\nexport { PointerDragging } from './dnd/PointerDragging'\nexport { ExternalDraggable as Draggable } from './interactions-external/ExternalDraggable'\nexport { ThirdPartyDraggable } from './interactions-external/ThirdPartyDraggable'\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['map']\n\n  initMap() {\n    self = this\n    if(this.hasMapTarget) {\n      $(this.mapTargets).each((_, el) => {\n        self.renderMap(el)\n      })\n    }\n  }\n\n  mapTargetConnected(el) {\n    if(typeof(google) != \"undefined\") {\n      this.renderMap(el)\n    }\n  }\n\n  renderMap(el) {\n    var $el, infoWindow, mapApi, marker, placesServiceApi\n    $el = $(el)\n    if ($el.data(\"initializedMaps\")) {\n      return\n    }\n    $el.data(\"initializedMaps\", true)\n    mapApi = new google.maps.Map(el, mapsHelper.defaultConfiguration)\n    placesServiceApi = new google.maps.places.PlacesService(mapApi)\n    marker = new google.maps.Marker({\n      map: mapApi,\n      title: $el.attr(\"data-label\")\n    })\n    infoWindow = new google.maps.InfoWindow({\n      content: $el.attr(\"data-label\")\n    })\n    marker.addListener('click', function() {\n      return infoWindow.open(mapApi, marker)\n    })\n    if ($el.attr(\"data-place-id\")) {\n      return placesServiceApi.getDetails({\n        placeId: $el.attr(\"data-place-id\")\n      }, function(place, status) {\n        if (!(status === google.maps.places.PlacesServiceStatus.OK && place.geometry)) {\n          return\n        }\n        mapsHelper.updateMapWithPlace(mapApi, place, marker)\n        return infoWindow.open(mapApi, marker)\n      })\n    }\n  }\n}", "import ApplicationController from './application_controller'\nimport Ajax from '../packs/ajax.js';\nimport { getMetaValue } from \"../packs/global_functions\";\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect()\n    this.pendingDeleteGroupId = null\n    \n    // Listen for delete confirmation event\n    document.addEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n  }\n\n  disconnect() {\n    super.disconnect()\n    document.removeEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n  }\n\n  /**\n   * Show delete modal and store group ID\n   */\n  showDeleteModal(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    const button = event.currentTarget\n    this.pendingDeleteGroupId = button.dataset.groupId\n    \n    console.log('[GroupDefinition] Show modal for group:', this.pendingDeleteGroupId)\n    \n    // Open modal\n    const modal = document.getElementById('delete_group_definition_modal')\n    if (modal) {\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    }\n  }\n\n  /**\n   * Handle delete-confirmed event from modal\n   */\n  handleDeleteConfirmed(event) {\n    console.log('[GroupDefinition] Received delete-confirmed event, pending ID:', this.pendingDeleteGroupId)\n    \n    if (!this.pendingDeleteGroupId) {\n      // This instance doesn't have a pending delete, ignore\n      return\n    }\n    \n    this.executeDelete(this.pendingDeleteGroupId)\n    this.pendingDeleteGroupId = null\n  }\n\n  /**\n   * Execute the actual delete via StimulusReflex\n   */\n  executeDelete(groupId) {\n    this.startLoading()\n    const groupCard = document.querySelector(`#group_definition_card_${groupId}`)\n    const groupCardWrapper = groupCard ? groupCard.closest(\".card.group-definition-item\").parentElement : null\n    \n    this.stimulate('GroupDefinitionReflex#remove_group', groupId).then(() => {\n      if (groupCardWrapper) {\n        groupCardWrapper.remove()\n      }\n      this.stopLoading()\n    })\n  }\n\n  ////\n  // adds a new group defintion and renders it\n  ////\n  new(event) {\n    event.preventDefault();\n    this.startLoading();\n    let $target = $(event.currentTarget);\n    //hide selected definitions/group-definitions\n    $(\".card.selected\").css({\n      \"border-color\": \"\",\n      \"background-color\": \"\"\n    });\n    $(\".card.selected\").removeClass(\"selected\");\n    $('.form-element').addClass('hidden');\n    this.stimulate('GroupDefinitionReflex#add_group', { serializeForm: false }).then(() => {\n      this.replaceAuthenticityTokenInForm();\n      this.stopLoading();\n    });\n  }\n\n  /**\n   * DEPRECATED: Old removeGroup method with confirm dialog\n   * Kept for backward compatibility\n   */\n  removeGroup(event) {\n    event.preventDefault();\n    this.startLoading();\n    let $target = $(event.currentTarget);\n    let groupId = $target.data('group-id');\n    let groupCard = $target.closest(\".card.group-definition-item\").first().parent();\n    // console.log(\"groupId: \", groupId);\n    // console.log(\"groupCard: \", groupCard);\n    let confirmed = confirm(I18n.t('shared.delete_group_definitions_confirm')); // \n    if(confirmed) {\n      this.stimulate('GroupDefinitionReflex#remove_group', groupId).then(() => {\n        groupCard.remove();\n      });\n    }\n    this.stopLoading();\n  }\n\n  show_loader(event) {\n    let $target = $(event.currentTarget);\n    this.startLoading();\n  }\n\n\n  async newSuccess(event) {\n    let $newTarget = $('.group-definition-item.selected'),\n    prefixId = $newTarget.data('prefix-id'),\n    id = $newTarget.data('id');\n\n    let formElement = document.createElement('div');\n    formElement.id = `${prefixId}${id}`;\n    $(formElement).addClass('form-element');\n\n    let groupForm = $('#group_definitions_form');\n    let objectName = groupForm.find('#group_object_name').data('object-name');\n\n    $(formElement).appendTo(groupForm);\n    let form = await new Ajax('/group_definition_form').doAjax(\"GET\", { \"id\": id, \"object_name\": objectName });\n    $(form).appendTo(formElement);\n  }\n\n  ///\n  // exchange the csrf token in the newly rendered form\n  ///\n  afterRenderCorrespondingForm(element, reflex, noop, reflexId) {\n    this.replaceAuthenticityTokenInForm()\n  }\n\n  ///\n  // exchange the csrf token when definition group is added\n  ///\n  afterRenderAddGroup(element, reflex, noop, reflexId) {\n    this.replaceAuthenticityTokenInForm()\n  }\n\n  ///\n  // replaces the csrf token in form with the right one in header\n  ///\n  replaceAuthenticityTokenInForm() {\n    let $form = $(\"form#group_definitions_form\");\n    let $authTokenField = $(\"input[name=authenticity_token]\", $form).first();\n    if($authTokenField.length == 0) {\n      $authTokenField = $(\"<input>\").attr(\"type\", \"hidden\").attr(\"name\", \"authenticity_token\");\n      $form.append($authTokenField);\n      // console.log(\"authenticity_token field added!!!\")\n    }\n    // console.log(\"authTokenField: \", $authTokenField[0])\n    $authTokenField.val(getMetaValue(\"csrf-token\"));\n    // console.log(\"!!! authenticity token replaced\")\n  }\n\n  ///\n  // imports the default definitions (default_definitions.yml)\n  ///\n  importDefaults(event) {\n    event.preventDefault();\n    this.startLoading();\n    let $target = $(event.currentTarget);\n    this.stimulate('GroupDefinitionReflex#load_default_definitions').then(() => {\n      this.stopLoading();\n    });\n  }\n\n  ///\n  // renders the form for the clicked definition card\n  ///\n  renderDefinitionForm(event) {\n    event.preventDefault();\n    this.stimulate(\"DefinitionReflex#render_corresponding_form\", event.currentTarget)\n  //   this.stimulate(\"DefinitionReflex#render_corresponding_form\", event.currentTarget).then(() => {\n  //     this.replaceAuthenticityTokenInForm();\n  //   });\n\n  }\n\n  ///\n  // renders the form for the clicked group definition card\n  ///\n  renderGroupDefinitionForm(event) {\n    event.preventDefault();\n    this.stimulate(\"GroupDefinitionReflex#render_corresponding_form\", event.currentTarget)\n  //   this.stimulate(\"DefinitionReflex#render_corresponding_form\", event.currentTarget).then(() => {\n  //     this.replaceAuthenticityTokenInForm();\n  //   });\n  \n  }\n\n\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static values = {\n    pendingGroupId: String\n  }\n\n  /**\n   * Called from delete buttons to store which group should be deleted\n   */\n  prepareDelete(event) {\n    event.preventDefault()\n    const link = event.currentTarget\n    this.pendingGroupIdValue = link.dataset.groupId\n    \n    console.log('[GroupDefinitionDeleteHandler] Prepared to delete group:', this.pendingGroupIdValue)\n    console.log('[GroupDefinitionDeleteHandler] Value stored:', this.pendingGroupIdValue)\n    \n    // Open the modal manually\n    const modal = document.getElementById('delete_group_definition_modal')\n    if (modal) {\n      console.log('[GroupDefinitionDeleteHandler] Modal found, opening...')\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    } else {\n      console.error('[GroupDefinitionDeleteHandler] Modal not found!')\n    }\n  }\n\n  /**\n   * Called from modal confirm button\n   * Triggers the actual deletion via group-definition controller\n   */\n  confirmDelete() {\n    if (!this.pendingGroupIdValue) {\n      console.error('[GroupDefinitionDeleteHandler] No pending group to delete!')\n      return\n    }\n\n    console.log('[GroupDefinitionDeleteHandler] Confirming delete for group:', this.pendingGroupIdValue)\n    \n    // Find the group-definition controller instance and trigger deletion\n    const groupDefinitionElement = document.querySelector('[data-controller*=\"group-definition\"]')\n    if (groupDefinitionElement) {\n      const controller = this.application.getControllerForElementAndIdentifier(\n        groupDefinitionElement,\n        'group-definition'\n      )\n      \n      if (controller && controller.executeDelete) {\n        controller.executeDelete(this.pendingGroupIdValue)\n      } else {\n        console.error('[GroupDefinitionDeleteHandler] group-definition controller or executeDelete method not found')\n      }\n    }\n    \n    // Clear the pending group\n    this.pendingGroupIdValue = null\n  }\n}\n\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect();\n    this.updateGroups();\n    this.permissionSets = {}\n    this.initializePermissions();\n  }\n\n  ///\n  // when one of the group header checkboxes is changed, the unerlying checkboxes are changed accordingly\n  ///\n  headerChange(event) {\n    const $target = $(event.currentTarget)\n    const group = $target.attr('id'),\n    groupCheckboxes = $(`#permissions_table [data-group='${group}'] input[type=checkbox]`);\n    $(groupCheckboxes).each(function() {\n      $(this).prop('checked', $(event.currentTarget).prop('checked'))\n    });\n    const setName = $target.parent().data(\"set\");\n    this.updatePermissionSet(setName);\n    this.enableSaveButton(setName)\n  }\n\n  ///\n  // stimulates appropriate action when a check box in permissions view for a permission set is changed\n  ///\n  itemChange(event) {\n    const $target = $(event.currentTarget)\n    const setName = $target.parent().data(\"set\");\n    const groupSet = $target.parent().data(\"group\")\n    const groupName = $target.parent().data(\"group-name\")\n    this.updateGroups(setName, groupName);\n    this.updatePermissionSet(setName);\n    this.enableSaveButton(setName)\n  }\n\n  ///\n  // enables the save button for given set\n  ///\n  enableSaveButton(setName) {\n    const $saveButton = $(`#save_button_${setName}`);\n    $saveButton.removeClass('hidden').prop('disabled', false).removeClass('disabled')\n  }\n\n  ///\n  // triggers the save the permissions of this permission set\n  ///\n  savePermissionSet(event) {\n    const $target = $(event.currentTarget)\n    const setName = $target.data(\"set\");\n    const $saveButton = $(`#save_button_${setName}`);\n    const $saveButtonText = $(\".txt\", $saveButton);\n\n    const saveButtonText = $saveButton.text()\n    $saveButtonText.text(\"\u21BB\").css({font_size: '22px'})\n\n    $saveButton.addClass(\"rotating disabled\").prop(\"disabled\", true)\n\n    this.stimulate(\"PermissionReflex#update_permission_set\", setName, this.permissionSets[setName]).then(payload => {\n      $saveButton.addClass('hidden').removeClass(\"rotating\")\n      $saveButtonText.text(saveButtonText)\n    })\n  }\n\n  ///\n  // sets the internal permissionSet hash accordingly\n  ///\n  initializePermissions() {\n\n    const self = this;\n    let setNames = []\n    $(\"#permissions_table input.permission[type=checkbox]:checked\").each(function () {\n      const setName = $(this).parent().data(\"set\");\n      if (!self.permissionSets[setName]) {\n        self.permissionSets[setName] = [];\n      }\n      self.permissionSets[setName].push(parseInt($(this).data(\"value\")));\n      setNames.push(setName)\n    });\n    setNames.forEach(function (name, index) {\n      self.permissionSets[name] = self.permissionSets[name].sort(\n        function (a, b) {\n          return +a - +b;\n        }\n      );\n    });\n\n    console.log(\"permissionSets: \", self.permissionSets)\n\n    // this.stimulate(\"PermissionReflex#update_permissions\", permissions);\n  }\n\n  ///\n  // sets the internal permissionSet hash for given set accordingly\n  ///\n  updatePermissionSet(setName) {\n\n    const self = this;\n    self.permissionSets[setName] = [];\n    $(`#permissions_table [data-set='${setName}'] input.permission[type=checkbox]:checked`).each(function () {\n      self.permissionSets[setName].push(parseInt($(this).data(\"value\")));\n    });\n    self.permissionSets[setName] = self.permissionSets[setName].sort(\n      function (a, b) {\n        return +a - +b;\n      }\n    );\n\n    console.log(`permissionSet: ${setName}`, self.permissionSets[setName])\n    // this.stimulate(\"PermissionReflex#update_permissions\", permissions);\n  }\n\n  ///\n  // updates the group headers accordingly (check_all vs. check_nothing)\n  ///\n  updateGroups(setName, groupName) {\n    let permissionHeaderCheckboxesSelector = \".permission-header input[type=checkbox]\";      \n    if (setName ) {\n      permissionHeaderCheckboxesSelector = `.permission-header[data-set=${setName}][data-group=${groupName}] input[type=checkbox]`;\n    }\n\n    for (let header of $(permissionHeaderCheckboxesSelector)) {\n      // console.log(\"working on\" , header)\n      const group = $(header).attr(\"id\")\n      const groupCheckboxes = $(`[data-group='${group}'] input[type=checkbox]`);\n\n      const total = $(groupCheckboxes).length;\n      const checked = groupCheckboxes.filter(':checked').length;\n\n      if (checked == 0) {\n        $(header).prop(\"indeterminate\", false);\n        $(header).prop(\"checked\", false);\n      } else if (checked > 0 && checked < total) {\n        $(header).prop(\"indeterminate\", true);\n      } else if (checked == total) {\n        $(header).prop(\"indeterminate\", false);\n        $(header).prop(\"checked\", true);\n      }\n    }\n  }\n\n  ///\n  // triggers the deletion of this permission set\n  // Called from permission-delete-handler controller\n  ///\n  deletePermissionSet(setName) {\n    console.log('[GroupSelector] Deleting permission set:', setName)\n    this.stimulate(\"PermissionReflex#delete_permission_set\", setName)\n  }\n\n  ///\n  // DEPRECATED: Old method for direct deletion (kept for backward compatibility)\n  // triggers the deletion of this permission set\n  ///\n  removePermissionSet(event) {\n    const $target = $(event.currentTarget)\n    const setName = $target.data(\"set\");\n\n    this.stimulate(\"PermissionReflex#delete_permission_set\", setName)\n    // .then(payload => {\n    //   $saveButton.addClass('hidden').removeClass(\"rotating\")\n    //   $saveButtonText.text(saveButtonText)\n    // })\n  }\n\n}", "import ApplicationController from \"./application_controller\";\nimport { CollapseStateManager } from \"./collapse_state_manager\";\n\nexport default class GroupsCollapseController extends ApplicationController {\n  connect() {\n    super.connect();\n    this.initializeStateManager();\n    this.initializeCollapseStates();\n  }\n\n  /**\n   * Initialize the collapse state manager\n   */\n  initializeStateManager() {\n    // Enable debug in development\n    const isDebug = document.body.dataset.environment === 'development';\n    \n    this.stateManager = new CollapseStateManager('groups_collapse_states', {\n      debug: isDebug,\n      maxAge: 30 // Keep states for 30 days\n    });\n  }\n\n  /**\n   * Initialize collapse state management for all collapsible sections\n   */\n  initializeCollapseStates() {\n    // Use the generic method from CollapseStateManager with manual icons\n    this.stateManager.initializeCollapseStates(this.element, {\n      useManualIcons: true,\n      getDefaultState: (targetId) => false // Groups default to collapsed\n    });\n  }\n\n  /**\n   * Debug method to inspect current collapse states\n   * Available in browser console via: groupsCollapseController.debugStates()\n   */\n  debugStates() {\n    if (this.stateManager) {\n      console.log('[GroupsCollapseController] Debug Info:', this.stateManager.getDebugInfo());\n    }\n  }\n}\n", "/**\n * CollapseStateManager - Centralized management for collapse states across the application\n * \n * Provides persistent storage of collapse states using localStorage with JSON structure.\n * Supports multiple storage contexts (groups, containers, etc.) with automatic cleanup.\n * \n * @example\n * const manager = new CollapseStateManager('groups_collapse_states');\n * manager.setState('#group_participants_collapse', true);\n * const isExpanded = manager.getState('#group_participants_collapse');\n */\nexport class CollapseStateManager {\n  /**\n   * Initialize the CollapseStateManager\n   * @param {string} storageKey - Unique key for localStorage (e.g., 'groups_collapse_states')\n   * @param {Object} options - Configuration options\n   * @param {boolean} options.debug - Enable debug logging\n   * @param {number} options.maxAge - Maximum age in days before cleanup (default: 30)\n   */\n  constructor(storageKey = 'yoomind_collapse_states', options = {}) {\n    this.storageKey = storageKey;\n    this.debug = options.debug || false;\n    this.maxAge = options.maxAge || 30; // days\n    \n    if (this.debug) {\n      console.log(`[CollapseStateManager] Initialized with key: ${storageKey}`);\n    }\n    \n    // Perform cleanup on initialization\n    this.cleanup();\n  }\n\n  /**\n   * Get the collapse state for a specific section\n   * @param {string} sectionId - CSS selector or ID (e.g., '#group_participants_collapse')\n   * @param {boolean} defaultState - Default state if not found (default: false = collapsed)\n   * @returns {boolean} - true if expanded, false if collapsed\n   */\n  getState(sectionId, defaultState = false) {\n    const states = this.getAllStates();\n    const state = states[sectionId];\n    \n    if (state !== undefined) {\n      if (this.debug) {\n        console.log(`[CollapseStateManager] Retrieved state for ${sectionId}:`, state);\n      }\n      return state;\n    }\n    \n    if (this.debug) {\n      console.log(`[CollapseStateManager] No state found for ${sectionId}, using default:`, defaultState);\n    }\n    \n    return defaultState;\n  }\n\n  /**\n   * Set the collapse state for a specific section\n   * @param {string} sectionId - CSS selector or ID\n   * @param {boolean} isExpanded - true if expanded, false if collapsed\n   */\n  setState(sectionId, isExpanded) {\n    const states = this.getAllStates();\n    states[sectionId] = isExpanded;\n    \n    // Add timestamp for cleanup purposes\n    const stateData = {\n      states: states,\n      lastUpdated: Date.now()\n    };\n    \n    try {\n      localStorage.setItem(this.storageKey, JSON.stringify(stateData));\n      \n      if (this.debug) {\n        console.log(`[CollapseStateManager] Saved state for ${sectionId}:`, isExpanded);\n      }\n    } catch (error) {\n      console.warn(`[CollapseStateManager] Failed to save state:`, error);\n      // Fallback: try to clear old data and retry\n      this.cleanup();\n      try {\n        localStorage.setItem(this.storageKey, JSON.stringify(stateData));\n      } catch (retryError) {\n        console.error(`[CollapseStateManager] Failed to save state after cleanup:`, retryError);\n      }\n    }\n  }\n\n  /**\n   * Get all collapse states for this storage context\n   * @returns {Object} - Object with sectionId as keys and boolean states as values\n   */\n  getAllStates() {\n    try {\n      const stored = localStorage.getItem(this.storageKey);\n      if (!stored) return {};\n      \n      const data = JSON.parse(stored);\n      \n      // Handle legacy format (direct states object)\n      if (data.states) {\n        return data.states;\n      } else {\n        // Legacy format - migrate to new format\n        return data;\n      }\n    } catch (error) {\n      if (this.debug) {\n        console.warn(`[CollapseStateManager] Failed to parse stored states:`, error);\n      }\n      return {};\n    }\n  }\n\n  /**\n   * Remove a specific section's state\n   * @param {string} sectionId - CSS selector or ID to remove\n   */\n  removeState(sectionId) {\n    const states = this.getAllStates();\n    delete states[sectionId];\n    \n    const stateData = {\n      states: states,\n      lastUpdated: Date.now()\n    };\n    \n    try {\n      localStorage.setItem(this.storageKey, JSON.stringify(stateData));\n      \n      if (this.debug) {\n        console.log(`[CollapseStateManager] Removed state for ${sectionId}`);\n      }\n    } catch (error) {\n      console.warn(`[CollapseStateManager] Failed to remove state:`, error);\n    }\n  }\n\n  /**\n   * Clear all states for this storage context\n   */\n  clearAll() {\n    try {\n      localStorage.removeItem(this.storageKey);\n      \n      if (this.debug) {\n        console.log(`[CollapseStateManager] Cleared all states for ${this.storageKey}`);\n      }\n    } catch (error) {\n      console.warn(`[CollapseStateManager] Failed to clear states:`, error);\n    }\n  }\n\n  /**\n   * Cleanup old or invalid states\n   * Removes states older than maxAge days\n   */\n  cleanup() {\n    try {\n      const stored = localStorage.getItem(this.storageKey);\n      if (!stored) return;\n      \n      const data = JSON.parse(stored);\n      const now = Date.now();\n      const maxAgeMs = this.maxAge * 24 * 60 * 60 * 1000; // Convert days to milliseconds\n      \n      // Check if data is old\n      if (data.lastUpdated && (now - data.lastUpdated) > maxAgeMs) {\n        if (this.debug) {\n          console.log(`[CollapseStateManager] Cleaning up old states for ${this.storageKey}`);\n        }\n        this.clearAll();\n      }\n    } catch (error) {\n      // If cleanup fails, clear everything to prevent corruption\n      if (this.debug) {\n        console.warn(`[CollapseStateManager] Cleanup failed, clearing all:`, error);\n      }\n      this.clearAll();\n    }\n  }\n\n  /**\n   * Initialize collapse state management for a controller element\n   * This method handles all the common collapse logic\n   * @param {HTMLElement} element - The controller element\n   * @param {Object} options - Configuration options\n   * @param {boolean} options.useManualIcons - Whether to manually manage chevron icons (default: false)\n   * @param {function} options.getDefaultState - Function to determine default state for a targetId\n   */\n  initializeCollapseStates(element, options = {}) {\n    const { useManualIcons = false, getDefaultState = () => false } = options;\n    \n    const collapseElements = element.querySelectorAll('[data-bs-toggle=\"collapse\"]');\n    \n    collapseElements.forEach(toggle => {\n      const targetId = toggle.dataset.bsTarget;\n      const target = document.querySelector(targetId);\n      const icon = useManualIcons ? toggle.querySelector('.collapse-icon') : null;\n      \n      if (target) {\n        // Handle expand (show) event\n        target.addEventListener('shown.bs.collapse', () => {\n          if (icon) icon.textContent = 'expand_less';\n          this.setState(targetId, true);\n        });\n        \n        // Handle collapse (hide) event  \n        target.addEventListener('hidden.bs.collapse', () => {\n          if (icon) icon.textContent = 'expand_more';\n          this.setState(targetId, false);\n        });\n      }\n    });\n    \n    // Restore states after event listeners are set up\n    this.restoreCollapseStates(element, { useManualIcons, getDefaultState });\n  }\n\n  /**\n   * Restore collapse states from persistent storage\n   * @param {HTMLElement} element - The controller element\n   * @param {Object} options - Configuration options\n   * @param {boolean} options.useManualIcons - Whether to manually manage chevron icons\n   * @param {function} options.getDefaultState - Function to determine default state for a targetId\n   */\n  restoreCollapseStates(element, options = {}) {\n    const { useManualIcons = false, getDefaultState = () => false } = options;\n    \n    const collapseElements = element.querySelectorAll('[data-bs-toggle=\"collapse\"]');\n    \n    collapseElements.forEach(toggle => {\n      const targetId = toggle.dataset.bsTarget;\n      const target = document.querySelector(targetId);\n      const icon = useManualIcons ? toggle.querySelector('.collapse-icon') : null;\n      \n      if (target) {\n        // Get saved state with custom default logic\n        const defaultState = getDefaultState(targetId);\n        const isExpanded = this.getState(targetId, defaultState);\n        \n        // Apply the saved state\n        if (isExpanded) {\n          target.classList.add('show');\n          toggle.classList.remove('collapsed');\n          toggle.setAttribute('aria-expanded', 'true');\n          if (icon) icon.textContent = 'expand_less';\n        } else {\n          target.classList.remove('show');\n          toggle.classList.add('collapsed');\n          toggle.setAttribute('aria-expanded', 'false');\n          if (icon) icon.textContent = 'expand_more';\n        }\n      }\n    });\n  }\n\n  /**\n   * Get debug information about the current state\n   * @returns {Object} - Debug information\n   */\n  getDebugInfo() {\n    const states = this.getAllStates();\n    const stored = localStorage.getItem(this.storageKey);\n    \n    return {\n      storageKey: this.storageKey,\n      stateCount: Object.keys(states).length,\n      states: states,\n      rawData: stored,\n      storageSize: stored ? stored.length : 0\n    };\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['selectionCount', 'batchActions']\n  static values = {\n    pendingBatchDeleteItems: Array, // Stores the items to be deleted\n    pendingBatchDeleteContext: String, // Stores the context (users or groups)\n    pendingDragRemoveUserId: String, // Stores user ID for drag & drop removal\n    pendingDragRemoveFilter: String // Stores filter for drag & drop removal\n  }\n\n  static get useReflex() {\n    return true\n  }\n\n  connect() {\n    super.connect()\n    // Initialize drag & drop state\n    this.wasSuccessfullyDropped = false;\n    // Initialize selection tracking\n    this.selectedItems = [];\n    // Initialize batch delete state\n    this.pendingBatchDelete = null\n    // Store DOM element for drag removal\n    this.pendingDragElement = null\n    // Store current type filter for item filtering\n    this.currentTypeFilter = 'all'\n\n    // Listen for delete confirmation\n    document.addEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n\n    // Listen for modal cancel (hidden event)\n    const dragRemoveModal = document.getElementById('drag_remove_user_modal')\n    if (dragRemoveModal) {\n      dragRemoveModal.addEventListener('hidden.bs.modal', this.handleModalCancelled.bind(this))\n    }\n\n    if (this.element.dataset.groupsContextValue === 'users') {\n      this.applyUserFilterOnLoad()\n    }\n  }\n\n  disconnect() {\n    super.disconnect()\n    document.removeEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n    const dragRemoveModal = document.getElementById('drag_remove_user_modal')\n    if (dragRemoveModal) {\n      dragRemoveModal.removeEventListener('hidden.bs.modal', this.handleModalCancelled.bind(this))\n    }\n  }\n\n  dragstart(event) {\n    // console.log('drag started')\n    let target = $(event.target);\n    copyDataToDataTransfer(event.dataTransfer, target.data());\n\n    // Reset drop success flag\n    this.wasSuccessfullyDropped = false;\n\n    // Phase 2: Add drag state to item\n    this.addDragState(event.target);\n  }\n\n  dragover(event) {\n    // console.log('drag over')\n    event.preventDefault();\n\n    // Phase 2: Determine drop zone type based on context\n    const dropZoneType = this.determineDropZoneType(event);\n    this.highlightDropZone(event.currentTarget, dropZoneType);\n  }\n\n  dragleave(event) {\n    // Phase 2: Remove drop zone highlighting when leaving\n    this.removeDropZoneHighlight(event.currentTarget);\n  }\n\n  dragend(event) {\n    let journeyId, containerId, userId, itemType;\n    let item = $(event.currentTarget).data(\"item\");\n    let filter = \"\"\n\n    // Phase 2: Remove drag state from item\n    this.removeDragState(event.currentTarget);\n\n    // Check if this was a successful drop operation\n    const wasDropped = this.wasSuccessfullyDropped;\n    this.wasSuccessfullyDropped = false; // Reset flag\n\n    if (wasDropped) {\n      return;\n    }\n\n    // Only handle dragend removal for items that were NOT successfully dropped\n\n    // Mark item as processing (remove operation)\n    this.markItemAsProcessing(event.currentTarget, 'remove');\n\n    switch (item) {\n      case \"users\":\n        userId = $(event.currentTarget).data('userid');\n        filter = $(\"#participants_filter\")[0].value\n\n        // Store data for modal confirmation\n        this.pendingDragRemoveUserIdValue = userId\n        this.pendingDragRemoveFilterValue = filter\n        this.pendingDragElement = event.currentTarget\n\n        // Show delete modal\n        const modalElement = document.getElementById('drag_remove_user_modal')\n        if (modalElement) {\n          const modalInstance = bootstrap.Modal.getOrCreateInstance(modalElement)\n          modalInstance.show()\n        } else {\n          console.error('[Groups] Drag remove user modal not found!')\n          // Fallback: reset state\n          this.resetItemState(event.currentTarget)\n        }\n        break;\n      case \"journeys\":\n        journeyId = $(event.currentTarget).data('journeyid');\n        filter = $(\"#journeys_filter\")[0]?.value || $(\"#items_filter\")[0]?.value || \"\";\n        // console.log(\"filter: \", filter);\n        this.stimulate(\"GroupsReflex#remove_journey\", journeyId, filter).then(() => {\n          // Show success flash and reset state\n          this.showSuccessFlash(event.currentTarget);\n          setTimeout(() => this.resetItemState(event.currentTarget), 700);\n          this._filterItems(filter);\n        }).catch((error) => {\n          // Reset state on error\n          this.resetItemState(event.currentTarget);\n          console.error('Journey removal failed:', error);\n        });\n        break;\n      case \"containers\":\n        containerId = $(event.currentTarget).data('itemid');\n        // Try multiple ways to find group_id\n        let groupId = $(event.currentTarget).data('groupid') ||                    // Direct data attribute\n          $(event.currentTarget).closest('[data-group-id]').data('group-id') ||  // Parent with data-group-id\n          $(event.currentTarget).closest('[data-controller*=\"groups\"]').data('group-id') || // Groups controller parent\n          this.element.dataset.groupId ||                               // Controller element\n          $('#user_group_journeys_collapse').data('group-id');          // Specific collapse container\n\n        filter = $(\"#journeys_filter\")[0]?.value || $(\"#items_filter\")[0]?.value || \"\";\n        console.log(\"removing container: \", containerId, \" from group: \", groupId); // Debug log\n\n        if (!groupId) {\n          console.error(\"Could not find group_id for container removal\");\n          this.resetItemState(event.currentTarget);\n          return;\n        }\n\n        this.stimulate(\"GroupsReflex#remove_container\", groupId, containerId, filter).then(() => {\n          // Show success flash and reset state\n          this.showSuccessFlash(event.currentTarget);\n          setTimeout(() => this.resetItemState(event.currentTarget), 700);\n          this._filterItems(filter);\n        }).catch((error) => {\n          // Reset state on error  \n          this.resetItemState(event.currentTarget);\n          console.error('Container removal failed:', error);\n        });\n        break;\n      case \"user_journeys\":\n        journeyId = $(event.currentTarget).data('journeyid');\n        filter = $(\"#items_filter\")[0]?.value || $(\"#journeys_filter\")[0]?.value || \"\";\n        // console.log(\"filter: \", filter);\n        this.stimulate(\"UsersReflex#remove_journey\", journeyId, filter).then(() => {\n          // Show success flash and reset state\n          this.showSuccessFlash(event.currentTarget);\n          setTimeout(() => this.resetItemState(event.currentTarget), 700);\n          this._filterItems(filter);\n        }).catch((error) => {\n          // Reset state on error\n          this.resetItemState(event.currentTarget);\n          console.error('User journey removal failed:', error);\n        });\n        break;\n      case \"user_containers\":\n        containerId = $(event.currentTarget).data('itemid');\n        filter = $(\"#items_filter\")[0]?.value || $(\"#journeys_filter\")[0]?.value || \"\";\n        // console.log(\"removing user container: \", containerId);\n        this.stimulate(\"UsersReflex#remove_container\", containerId, filter).then(() => {\n          // Show success flash and reset state\n          this.showSuccessFlash(event.currentTarget);\n          setTimeout(() => this.resetItemState(event.currentTarget), 700);\n          this._filterItems(filter);\n        }).catch((error) => {\n          // Reset state on error\n          this.resetItemState(event.currentTarget);\n          console.error('User container removal failed:', error);\n        });\n        break;\n      default:\n        break;\n    }\n  }\n\n  drop(event) {\n    // console.log(\"dropped an element\")\n    let journeyId, containerId, userId, groupId, itemType;\n    let maxDuration = event.dataTransfer.getData('duration');\n    let item = $(event.currentTarget).data('item');\n    let modal = $(\"#journey_assignment_modal\");\n    let modalSubmitButton = modal.find(\"#assignment_modal_submit_button\");\n\n    // Phase 2: Remove drop zone highlighting\n    this.removeDropZoneHighlight(event.currentTarget);\n\n    // NEW: Check if this is a \"user from participants\" drop (should trigger dragend, not drop)\n    const $draggedElement = $(document.querySelector('.item-dragging'));\n    const isFromParticipants = $draggedElement.closest('#participants').length > 0;\n\n    if (isFromParticipants && item === 'users') {\n      // This is a \"drop to delete\" action - let dragend handle it\n      console.log('[Groups] User dropped from participants - letting dragend handle removal')\n      return;\n    }\n\n    // Set flag to prevent dragend from handling removal\n    this.wasSuccessfullyDropped = true;\n\n    // Handle remove operations (dragging from assigned to unassigned)\n    if (item === 'unassigned_items') {\n      this.handleRemoveOperation(event);\n      return;\n    }\n\n    // console.log(\"element: \", $(event.currentTarget));\n    switch (item) {\n      case 'users':\n        userId = event.dataTransfer.getData('userid');\n        const filter = $(\"#participants_filter\")[0].value\n        // console.log(\"filter: \", filter);\n        this.stimulate('GroupsReflex#add_user', userId, filter).then(() => {\n          this._filterParticipants(filter);\n        });\n        break;\n      case 'journeys':\n        groupId = event.dataTransfer.getData('groupid');\n        journeyId = event.dataTransfer.getData('journeyid');\n        console.log(`adding journey '${journeyId}' to group '${groupId}'`);\n        // console.log(\"journeyId: \", journeyId);\n        modal.find(\"input#max_duration\").val(maxDuration);\n        modalSubmitButton.attr(\"data-journeyid\", journeyId);\n        modalSubmitButton.attr(\"data-groupid\", groupId);\n        modal.modal(\"show\");\n        break;\n      case 'user_journeys':\n        userId = event.dataTransfer.getData('userid');\n        journeyId = event.dataTransfer.getData('journeyid');\n        console.log(`adding journey '${journeyId}' to user '${userId}'`);\n        modal.find(\"input#max_duration\").val(maxDuration);\n        modalSubmitButton.attr(\"data-journeyid\", journeyId);\n        modalSubmitButton.attr(\"data-userid\", userId);\n        modal.modal(\"show\");\n        break;\n      case 'items':\n        const recipient = event.dataTransfer.getData('recipient')\n        // console.log(\"recipient: \", recipient);\n\n        // Handle both journeys and containers for users (when context is 'users') OR groups\n        if (recipient === 'user') {\n          itemType = event.dataTransfer.getData('itemtype');\n          userId = event.dataTransfer.getData('userid');\n\n          if (itemType === 'journey') {\n            journeyId = event.dataTransfer.getData('journeyid');\n            console.log(`adding journey '${journeyId}' to user '${userId}'`);\n            modal.find(\"input#max_duration\").val(maxDuration);\n            modalSubmitButton.attr(\"data-journeyid\", journeyId);\n            modalSubmitButton.attr(\"data-userid\", userId);\n            modalSubmitButton.attr(\"data-itemtype\", \"journey\");\n            modal.modal(\"show\");\n          } else if (itemType === 'container') {\n            containerId = event.dataTransfer.getData('itemid');\n            console.log(`adding container '${containerId}' to user '${userId}'`);\n            modal.find(\"input#max_duration\").val(maxDuration);\n            modalSubmitButton.attr(\"data-itemid\", containerId);\n            modalSubmitButton.attr(\"data-userid\", userId);\n            modalSubmitButton.attr(\"data-itemtype\", \"container\");\n            modal.modal(\"show\");\n          }\n        } else {\n          // Group logic\n          itemType = event.dataTransfer.getData('itemtype');\n          groupId = event.dataTransfer.getData('groupid');\n\n          if (itemType === 'journey') {\n            journeyId = event.dataTransfer.getData('itemid');\n            console.log(`adding journey '${journeyId}' to group '${groupId}'`);\n            modal.find(\"input#max_duration\").val(maxDuration);\n            modalSubmitButton.attr(\"data-journeyid\", journeyId);\n            modalSubmitButton.attr(\"data-groupid\", groupId);\n            modalSubmitButton.attr(\"data-itemtype\", \"journey\");\n            modal.modal(\"show\");\n          } else if (itemType === 'container') {\n            containerId = event.dataTransfer.getData('itemid');\n            console.log(`adding container '${containerId}' to group '${groupId}'`);\n            modal.find(\"input#max_duration\").val(maxDuration);\n            modalSubmitButton.attr(\"data-itemid\", containerId);\n            modalSubmitButton.attr(\"data-groupid\", groupId);\n            modalSubmitButton.attr(\"data-itemtype\", \"container\");\n            modal.modal(\"show\");\n          }\n        }\n        break;\n      default:\n        console.log(`no fitting item given: ${item}`)\n        break;\n    }\n  }\n\n  // assigns a journey to an user\n  assign(event) {\n    let journeyId = $(event.currentTarget).data('journeyid');\n    let userId = $(event.currentTarget).data('userid');\n    // console.log(\"journey: \", journeyId);\n    // console.log(\"user: \", userId);\n    let modal = $(\"#journey_assignment_modal\");\n    let maxDuration = modal.find(\"input#max_duration\").val();\n    const filter = $(\"#journeys_filter\")[0]?.value || $(\"#items_filter\")[0]?.value || \"\";\n\n    modal.modal('hide');\n    this.stimulate('UsersReflex#assign_journey', userId, journeyId, maxDuration, $('#choose_user_mentor').val(), filter).then(() => {\n      this._filterItems(filter);\n      this.stopLoading();\n    });\n  }\n\n  // assigns a journey or container to a user (specific for user supervision)\n  assign_item(event) {\n    console.log('\uD83C\uDFAF assign_item called!');\n    let modal = $(\"#journey_assignment_modal\");\n    let itemType = $(event.currentTarget).data('itemtype');\n    let itemId = $(event.currentTarget).data('itemid');\n    let journeyId = $(event.currentTarget).data('journeyid');\n    let userId = $(event.currentTarget).data('userid');\n    let maxDuration = modal.find(\"input#max_duration\").val();\n    const filter = $(\"#journeys_filter\")[0]?.value || $(\"#items_filter\")[0]?.value || \"\";\n\n    console.log('\uD83D\uDCCB Assignment data:', { itemType, itemId, journeyId, userId, maxDuration, filter });\n\n    modal.modal('hide');\n    this.startLoading();\n\n    if (itemType === 'container') {\n      console.log('\uD83D\uDCE6 Assigning container...');\n      this.stimulate('UsersReflex#assign_container', userId, itemId, maxDuration, filter).then(() => {\n        this._filterItems(filter);\n        this.stopLoading();\n      });\n    } else if (itemType === 'journey') {\n      console.log('\uD83D\uDE80 Assigning journey...');\n      this.stimulate('UsersReflex#assign_journey', userId, journeyId, maxDuration, $('#choose_user_mentor').val(), filter).then(() => {\n        this._filterItems(filter);\n        this.stopLoading();\n      });\n    }\n  }\n\n  ///\n  // Handles remove operations when dragging from assigned to unassigned\n  ///\n  handleRemoveOperation(event) {\n    // Try to get data from multiple sources\n    const itemType = event.dataTransfer.getData('itemtype') || this.determineItemTypeFromItem(event.dataTransfer.getData('item'));\n    const journeyId = event.dataTransfer.getData('journeyid');\n    const containerId = event.dataTransfer.getData('itemid');\n    const userId = event.dataTransfer.getData('userid');\n    const groupId = event.dataTransfer.getData('groupid');\n    const item = event.dataTransfer.getData('item'); // 'user_containers' or 'user_journeys'\n    const filter = $(\"#journeys_filter\")[0]?.value || $(\"#items_filter\")[0]?.value || \"\";\n\n    // Set flag to prevent dragend from also handling removal\n    this.wasSuccessfullyDropped = true;\n\n    // Find the dragged element for visual feedback\n    const draggedElement = document.querySelector('.item-dragging');\n\n    if (draggedElement) {\n      this.markItemAsProcessing(draggedElement, 'remove');\n    }\n\n    // For assigned items, we need to determine user/group from context\n    const contextUserId = this.element.dataset.id; // From groups_context_value: 'users'\n    const contextValue = this.element.dataset.groupsContextValue; // 'users' or 'groups'\n\n    // Debug logging\n    console.log('\uD83D\uDDD1\uFE0F Remove operation:', {\n      itemType,\n      journeyId,\n      containerId,\n      item,\n      contextUserId,\n      contextValue\n    });\n\n    // Check if we have the necessary data\n    if (!itemType) {\n      console.error('\u274C No itemType found - cannot determine item type');\n      if (draggedElement) this.resetItemState(draggedElement);\n      return;\n    }\n\n    if (!journeyId && !containerId) {\n      console.error('\u274C No journeyId or containerId found in dataTransfer');\n      if (draggedElement) this.resetItemState(draggedElement);\n      return;\n    }\n\n    console.log('\uD83D\uDD0D Context info:', { contextUserId, contextValue });\n\n    // Handle journey removal\n    if (journeyId && itemType === 'journey') {\n      if (contextValue === 'users' && contextUserId) {\n        // User journey removal\n        console.log('\uD83D\uDDD1\uFE0F Calling UsersReflex#remove_journey');\n        this.stimulate(\"UsersReflex#remove_journey\", journeyId, filter).then(() => {\n          if (draggedElement) {\n            this.showSuccessFlash(draggedElement);\n            setTimeout(() => this.resetItemState(draggedElement), 700);\n          }\n          this._filterItems(filter);\n        }).catch((error) => {\n          if (draggedElement) {\n            this.resetItemState(draggedElement);\n          }\n          console.error('User journey removal failed:', error);\n        });\n      } else if (contextValue === 'groups' && contextUserId) {\n        // Group journey removal\n        console.log('\uD83D\uDDD1\uFE0F Calling GroupsReflex#remove_journey');\n        this.stimulate(\"GroupsReflex#remove_journey\", journeyId, filter).then(() => {\n          if (draggedElement) {\n            this.showSuccessFlash(draggedElement);\n            setTimeout(() => this.resetItemState(draggedElement), 700);\n          }\n          this._filterItems(filter);\n        }).catch((error) => {\n          if (draggedElement) {\n            this.resetItemState(draggedElement);\n          }\n          console.error('Group journey removal failed:', error);\n        });\n      }\n    }\n\n    // Handle container removal\n    if (containerId && itemType === 'container') {\n      if (contextValue === 'users' && contextUserId) {\n        // User container removal\n        console.log('\uD83D\uDDD1\uFE0F Calling UsersReflex#remove_container');\n        this.stimulate(\"UsersReflex#remove_container\", containerId, filter).then(() => {\n          if (draggedElement) {\n            this.showSuccessFlash(draggedElement);\n            setTimeout(() => this.resetItemState(draggedElement), 700);\n          }\n          this._filterItems(filter);\n        }).catch((error) => {\n          if (draggedElement) {\n            this.resetItemState(draggedElement);\n          }\n          console.error('User container removal failed:', error);\n        });\n      } else if (contextValue === 'groups' && contextUserId) {\n        // Group container removal\n        console.log('\uD83D\uDDD1\uFE0F Calling GroupsReflex#remove_container');\n        this.stimulate(\"GroupsReflex#remove_container\", contextUserId, containerId, filter).then(() => {\n          if (draggedElement) {\n            this.showSuccessFlash(draggedElement);\n            setTimeout(() => this.resetItemState(draggedElement), 700);\n          }\n          this._filterItems(filter);\n        }).catch((error) => {\n          if (draggedElement) {\n            this.resetItemState(draggedElement);\n          }\n          console.error('Group container removal failed:', error);\n        });\n      }\n    }\n  }\n\n  ///\n  // Helper to determine item type from 'item' field\n  ///\n  determineItemTypeFromItem(item) {\n    if (item === 'user_journeys' || item === 'journeys') {\n      return 'journey';\n    } else if (item === 'user_containers' || item === 'containers') {\n      return 'container';\n    }\n    return null;\n  }\n\n  // assigns a journey or container to a group OR user\n  assign_to_group(event) {\n    let modal = $(\"#journey_assignment_modal\");\n    let itemType = $(event.currentTarget).data('itemtype');\n    let groupId = $(event.currentTarget).data('groupid');\n    let userId = $(event.currentTarget).data('userid');\n    const filter = $(\"#journeys_filter\")[0]?.value || $(\"#items_filter\")[0]?.value || \"\";\n\n    // Find the dragged item element for visual feedback\n    let itemId = $(event.currentTarget).data('journeyid') || $(event.currentTarget).data('itemid');\n    let draggedElement = this.findDraggedItemElement(event, itemId, itemType);\n\n    modal.modal('hide');\n    this.startLoading();\n\n    // Mark item as processing\n    if (draggedElement) {\n      this.markItemAsProcessing(draggedElement, 'add');\n    }\n\n    // User assignment (when userId is present)\n    if (userId) {\n      if (itemType === 'container') {\n        let containerId = $(event.currentTarget).data('itemid');\n        let duration = modal.find(\"input#max_duration\").val();\n        console.log(`assigning container '${containerId}' to user '${userId}' with duration '${duration}'`);\n\n        this.stimulate('UsersReflex#assign_container', userId, containerId, duration, filter).then(() => {\n          // Show success and reset state\n          if (draggedElement) {\n            this.showSuccessFlash(draggedElement);\n            setTimeout(() => this.resetItemState(draggedElement), 700);\n          }\n          this._filterItems(filter);\n          this.stopLoading();\n        }).catch((error) => {\n          // Reset state on error\n          if (draggedElement) {\n            this.resetItemState(draggedElement);\n          }\n          this.stopLoading();\n          console.error('Container assignment failed:', error);\n        });\n      } else {\n        // Default to journey assignment for user\n        let journeyId = $(event.currentTarget).data('journeyid');\n        let maxDuration = modal.find(\"input#max_duration\").val();\n        console.log(`assigning journey '${journeyId}' to user '${userId}'`);\n\n        this.stimulate('UsersReflex#assign_journey', userId, journeyId, maxDuration, $('#choose_user_mentor').val(), filter).then(() => {\n          // Show success and reset state\n          if (draggedElement) {\n            this.showSuccessFlash(draggedElement);\n            setTimeout(() => this.resetItemState(draggedElement), 700);\n          }\n          this._filterItems(filter);\n          this.stopLoading();\n        }).catch((error) => {\n          // Reset state on error\n          if (draggedElement) {\n            this.resetItemState(draggedElement);\n          }\n          this.stopLoading();\n          console.error('Journey assignment failed:', error);\n        });\n      }\n    }\n    // Group assignment (when groupId is present)\n    else if (groupId) {\n      if (itemType === 'container') {\n        let containerId = $(event.currentTarget).data('itemid');\n        let duration = modal.find(\"input#max_duration\").val();\n        console.log(`assigning container '${containerId}' to group '${groupId}' with duration '${duration}'`);\n\n        this.stimulate('GroupsReflex#assign_container', groupId, containerId, duration, $('#choose_mentor').val(), filter).then(() => {\n          // Show success and reset state\n          if (draggedElement) {\n            this.showSuccessFlash(draggedElement);\n            setTimeout(() => this.resetItemState(draggedElement), 700);\n          }\n          this._filterItems(filter);\n          this.stopLoading();\n        }).catch((error) => {\n          // Reset state on error\n          if (draggedElement) {\n            this.resetItemState(draggedElement);\n          }\n          this.stopLoading();\n          console.error('Container assignment failed:', error);\n        });\n      } else {\n        // Default to journey assignment for group\n        let journeyId = $(event.currentTarget).data('journeyid');\n        let maxDuration = modal.find(\"input#max_duration\").val();\n        console.log(`assigning journey '${journeyId}' to group '${groupId}'`);\n\n        this.stimulate('GroupsReflex#assign_journey', groupId, journeyId, maxDuration, $('#choose_mentor').val(), filter).then(() => {\n          // Show success and reset state\n          if (draggedElement) {\n            this.showSuccessFlash(draggedElement);\n            setTimeout(() => this.resetItemState(draggedElement), 700);\n          }\n          this._filterItems(filter);\n          this.stopLoading();\n        }).catch((error) => {\n          // Reset state on error\n          if (draggedElement) {\n            this.resetItemState(draggedElement);\n          }\n          this.stopLoading();\n          console.error('Journey assignment failed:', error);\n        });\n      }\n    }\n  }\n\n  ///\n  // filters the participants list by given term as prefix\n  ///\n  filterParticipants(event) {\n    let target = event.currentTarget;\n    // console.log(\"target: \", target)\n    this._filterParticipants(target.value)\n  }\n\n  ///\n  // filters the participants list by given term as prefix\n  ///\n  _filterParticipants(term) {\n    console.log(`term: ${term}`)\n    const allDivs = $('#unassigned_users .unassigned-user');\n    allDivs.removeClass('hidden')\n\n    const nonMatchingDivs = allDivs.filter(function () {\n      const $profileLabel = $(this).find('div.profile-label');\n      const text = $profileLabel.text();\n      const tags = $profileLabel.attr('tags') || '';\n      const company = $profileLabel.attr('company') || '';\n\n      // Search in name, tags, and company\n      const searchableText = `${text} ${tags} ${company}`.toLowerCase();\n\n      return !searchableText.includes(term.toLowerCase());\n    });\n    // console.log(\"non matchings: \", nonMatchingDivs)\n    nonMatchingDivs.each(function () {\n      $(this).addClass('hidden');\n    });\n  }\n\n  ///\n  // filters the journeys list by set term as prefix\n  ///\n  filterJourneys(event) {\n    let target = event.currentTarget;\n    // console.log(\"target: \", target)\n    let term = target.value\n    this._filterItems(term);\n  }\n\n  filterItemType(event) {\n    const itemType = event.target.dataset.itemType;\n    this._filterByItemType(itemType);\n  }\n\n  ///\n  // filters both journeys and containers by given term (searches title and tags)\n  ///\n  _filterItems(term) {\n    const allDivs = $('#unassigned_items .unassigned-journey, #unassigned_items .unassigned-container');\n\n    // First, show all items to reset text filter\n    allDivs.removeClass('hidden');\n\n    // If there's a search term, hide items that don't match\n    if (term && term.trim() !== '') {\n      const nonMatchingDivs = allDivs.filter(function () {\n        const text = $(this).find('.item-title').text().toLowerCase();\n        const searchTerm = term.toLowerCase();\n\n        // Get tags from the item\n        const tagElements = $(this).find('.item-tags .badge');\n        const itemTags = tagElements.map(function () {\n          return $(this).text().trim().toLowerCase();\n        }).get();\n\n        // Split search term into words\n        const searchWords = searchTerm.split(/\\s+/).filter(word => word.length > 0);\n\n        // Check if all words match either in title OR in tags\n        const allWordsMatch = searchWords.every(word => {\n          // Check if word is in title\n          const matchesTitle = text.includes(word);\n\n          // Check if word matches any tag\n          const matchesTag = itemTags.some(tag => tag === word || tag.includes(word));\n\n          return matchesTitle || matchesTag;\n        });\n\n        return !allWordsMatch;\n      });\n\n      nonMatchingDivs.each(function () {\n        $(this).addClass('hidden');\n      });\n    }\n\n    // Re-apply type filter if one is active (preserve type filter after text search)\n    if (this.currentTypeFilter && this.currentTypeFilter !== 'all') {\n      const currentType = this.currentTypeFilter; // Store in local variable\n      allDivs.filter(function () {\n        return !$(this).hasClass(`unassigned-${currentType}`);\n      }).addClass('hidden');\n    }\n\n    // Scroll to top of unassigned items list after filtering\n    const scrollContainer = $('#unassigned_items').closest('.overflow-auto');\n    if (scrollContainer.length > 0) {\n      scrollContainer.scrollTop(0);\n    }\n  }\n\n  ///\n  // Legacy method for backwards compatibility\n  ///\n  _filterJourneys(term) {\n    // For backwards compatibility with existing calls\n    this._filterItems(term);\n  }\n\n\n  selectUser(event) {\n    $('#all_users .user-card').removeClass('selected')\n    $(event.currentTarget).addClass('selected');\n    this.startLoading();\n    this.stimulate('SupervisingReflex#select_user', event.currentTarget).then(() => {\n      this.stopLoading();\n    }).catch((error) => {\n      this.stopLoading();\n      console.error('User selection failed:', error);\n    });\n\n  }\n\n  ///\n  // filters the user list by given term as prefix\n  ///\n  filterUsers(event) {\n    if (event.key !== 'Enter') {\n      return\n    }\n\n    event.preventDefault()\n    let target = event.currentTarget;\n    const normalized = (target.value || '').trim()\n    this.stimulate('SupervisingReflex#store_user_filter', normalized)\n    const remoteAttr = target.dataset.remote\n    const remote = (remoteAttr === 'true' || remoteAttr === true) || $(target).data('remote') === true\n    const minChars = parseInt($(target).data('min-chars') || 0, 10)\n    if (remote) {\n      this._remoteFilterUsers(normalized, minChars)\n      return\n    }\n    this._filterUsers(normalized)\n  }\n\n  ///\n  // remote filtering for large user lists\n  ///\n  _remoteFilterUsers(term, minChars) {\n    const normalized = (term || '').trim()\n    if (normalized.length < minChars) {\n      this.startLoading()\n      this.stimulate('SupervisingReflex#filter_users', normalized).then(() => {\n        this.stopLoading()\n      }).catch((error) => {\n        this.stopLoading()\n        console.error('User filter failed:', error)\n      })\n      return\n    }\n\n    this.startLoading()\n    this.stimulate('SupervisingReflex#filter_users', normalized).then(() => {\n      this.stopLoading()\n    }).catch((error) => {\n      this.stopLoading()\n      console.error('User filter failed:', error)\n    })\n  }\n\n  /**\n   * Apply the persisted user filter after connect when present.\n   * @returns {void}\n   */\n  applyUserFilterOnLoad() {\n    const input = this.element.querySelector('#users_filter')\n    if (!input) {\n      return\n    }\n\n    const normalized = (input.value || '').trim()\n    if (!normalized) {\n      return\n    }\n\n    const remoteAttr = input.dataset.remote\n    const remote = (remoteAttr === 'true' || remoteAttr === true) || $(input).data('remote') === true\n    const minChars = parseInt($(input).data('min-chars') || 0, 10)\n\n    if (remote) {\n      this._remoteFilterUsers(normalized, minChars)\n      return\n    }\n\n    this._filterUsers(normalized)\n  }\n\n\n  ///\n  // filters the user list by given term as prefix\n  ///\n  _filterUsers(term) {\n    console.log(`term: ${term}`)\n    const allDivs = $('#all_users .user-card');\n    allDivs.removeClass('hidden')\n    allDivs.attr('data-term', term);\n\n    const nonMatchingDivs = allDivs.filter(function () {\n      const $profileLabel = $(this).find('div.profile-label');\n      const text = $profileLabel.text();\n      const tags = $profileLabel.attr('tags') || '';\n      const company = $profileLabel.attr('company') || '';\n\n      // Search in name, tags, and company\n      const searchableText = `${text} ${tags} ${company}`.toLowerCase();\n\n      return !searchableText.includes(term.toLowerCase());\n    });\n    // console.log(\"non matchings: \", nonMatchingDivs)\n    nonMatchingDivs.each(function () {\n      $(this).addClass('hidden');\n    });\n  }\n\n  ///\n  // filters items by type (all, journey, container)\n  ///\n  _filterByItemType(itemType) {\n    // Store current type filter for _filterItems to use\n    this.currentTypeFilter = itemType;\n\n    // Apply both text and type filters\n    const textFilter = $('#journeys_filter')[0]?.value || '';\n    this._filterItems(textFilter);\n  }\n\n  // ==== PHASE 1: VISUAL FEEDBACK METHODS ====\n\n  ///\n  // Marks an item as processing with visual feedback\n  ///\n  markItemAsProcessing(element, action) {\n    const $element = $(element);\n\n    // Remove any existing processing classes\n    $element.removeClass('item-processing-remove item-processing-move item-processing-add item-success-flash');\n\n    // Set processing text based on action\n    let processingText = '';\n    switch (action) {\n      case 'remove':\n        processingText = 'Wird entfernt...';\n        break;\n      case 'move':\n        processingText = 'Wird verschoben...';\n        break;\n      case 'add':\n        processingText = 'Wird hinzugef\u00FCgt...';\n        break;\n    }\n\n    // Set the processing text as data attribute\n    $element.attr('data-processing-text', processingText);\n\n    // Add the appropriate processing class\n    $element.addClass(`item-processing-${action}`);\n\n    console.log(`Item marked as processing: ${action}`, element);\n  }\n\n  ///\n  // Shows success flash animation\n  ///\n  showSuccessFlash(element) {\n    const $element = $(element);\n\n    // Remove processing classes\n    $element.removeClass('item-processing-remove item-processing-move item-processing-add');\n\n    // Add success flash\n    $element.addClass('item-success-flash');\n\n    // Remove success flash after animation completes\n    setTimeout(() => {\n      $element.removeClass('item-success-flash');\n    }, 600);\n\n    console.log('Success flash shown for element', element);\n  }\n\n  ///\n  // Resets item to normal state (removes all processing classes)\n  ///\n  resetItemState(element) {\n    const $element = $(element);\n    $element.removeClass('item-processing-remove item-processing-move item-processing-add item-success-flash item-disabled');\n    $element.removeAttr('data-processing-text'); // Remove processing text\n    console.log('Item state reset', element);\n  }\n\n  ///\n  // Finds the dragged item element from various contexts\n  ///\n  findDraggedItemElement(event, itemId, itemType) {\n    // Try different selectors to find the dragged item\n    let $item = null;\n\n    if (itemType === 'journey') {\n      $item = $(`.unassigned-journey [data-journeyid=\"${itemId}\"]`).closest('.unassigned-journey');\n    } else if (itemType === 'container') {\n      $item = $(`.unassigned-container [data-itemid=\"${itemId}\"]`).closest('.unassigned-container');\n    }\n\n    // Fallback: try to find by current target\n    if (!$item || $item.length === 0) {\n      $item = $(event.currentTarget).closest('.unassigned-journey, .unassigned-container');\n    }\n\n    return $item.length > 0 ? $item[0] : null;\n  }\n\n  // ==== PHASE 2: DROP-ZONE & DRAG STATE METHODS ====\n\n  ///\n  // Adds drag state to item being dragged\n  ///\n  addDragState(element) {\n    const $element = $(element);\n    $element.addClass('item-dragging');\n\n    // Add drag handle highlighting\n    $element.find('.item-drag-handle').addClass('item-drag-handle');\n\n    console.log('Drag state added to element', element);\n  }\n\n  ///\n  // Removes drag state from item\n  ///\n  removeDragState(element) {\n    const $element = $(element);\n    $element.removeClass('item-dragging');\n\n    // Remove drag handle highlighting\n    $element.find('.item-drag-handle').removeClass('item-drag-handle');\n\n    console.log('Drag state removed from element', element);\n  }\n\n  ///\n  // Highlights drop zone when dragging over\n  ///\n  highlightDropZone(dropZone, type = 'valid') {\n    const $dropZone = $(dropZone);\n\n    // Remove existing drop zone classes\n    $dropZone.removeClass('drop-zone-valid drop-zone-invalid drop-zone-hover drop-zone-remove');\n\n    // Add appropriate drop zone class\n    if (type === 'valid') {\n      $dropZone.addClass('drop-zone-valid');\n    } else if (type === 'invalid') {\n      $dropZone.addClass('drop-zone-invalid');\n    } else if (type === 'hover') {\n      $dropZone.addClass('drop-zone-hover');\n    } else if (type === 'remove') {\n      $dropZone.addClass('drop-zone-remove');\n    }\n\n    console.log(`Drop zone highlighted as: ${type}`, dropZone);\n  }\n\n  ///\n  // Removes drop zone highlighting\n  ///\n  removeDropZoneHighlight(dropZone) {\n    const $dropZone = $(dropZone);\n    $dropZone.removeClass('drop-zone-valid drop-zone-invalid drop-zone-hover drop-zone-remove');\n\n    console.log('Drop zone highlight removed', dropZone);\n  }\n\n  ///\n  // Adds hover state to items\n  ///\n  addItemHoverState(element) {\n    const $element = $(element);\n    if (!$element.hasClass('item-dragging') && !$element.hasClass('item-processing-remove')) {\n      $element.addClass('item-hover');\n    }\n  }\n\n  ///\n  // Removes hover state from items\n  ///\n  removeItemHoverState(element) {\n    const $element = $(element);\n    $element.removeClass('item-hover');\n  }\n\n  ///\n  // Determines drop zone type based on drag context\n  ///\n  determineDropZoneType(event) {\n    const $dropZone = $(event.currentTarget);\n    const $draggedElement = $(document.querySelector('.item-dragging'));\n\n    // More robust detection\n    const dropZoneDataItem = $dropZone.attr('data-item');\n    const dropZoneHasUnassignedItems = $dropZone.find('#unassigned_items').length > 0;\n    const dropZoneIsUnassignedItems = dropZoneDataItem === 'unassigned_items';\n    const dropZoneIsAssignedItems = dropZoneDataItem === 'items';\n\n    // Check if dragged element is from assigned items\n    const isFromAssignedItems = $draggedElement.closest('.assigned-item').length > 0;\n\n    // NEW: Special handling for users - check if dragging from participants\n    const isFromParticipants = $draggedElement.closest('#participants').length > 0;\n    const dropZoneIsForUsers = dropZoneDataItem === 'users';\n    const dropZoneContainsParticipants = $dropZone.find('#participants').length > 0;\n\n    // SPECIAL CASE: User dragged from #participants anywhere (except #unassigned_users) = remove\n    // This shows \"Drop to delete\" animation when dragging users out of participants\n    if (isFromParticipants && !dropZoneIsUnassignedItems && !dropZoneHasUnassignedItems) {\n      return 'remove';\n    }\n\n    // Determine operation type\n    if (isFromAssignedItems && (dropZoneIsUnassignedItems || dropZoneHasUnassignedItems)) {\n      // Dragging from assigned to unassigned = Remove operation\n      return 'remove';\n    } else if (!isFromAssignedItems && dropZoneIsAssignedItems) {\n      // Dragging from unassigned to assigned = Add operation  \n      return 'valid';\n    } else if (isFromAssignedItems && dropZoneIsAssignedItems) {\n      // Dragging from assigned to assigned = Invalid\n      return 'invalid';\n    } else {\n      // Default case - show as valid for now to test\n      return isFromAssignedItems ? 'remove' : 'valid';\n    }\n  }\n\n  // ==== BATCH ACTIONS & SELECTION METHODS ====\n\n  /**\n   * Toggle selection of an item\n   */\n  toggleSelection(event) {\n    const checkbox = event.currentTarget\n    const itemType = checkbox.dataset.itemtype\n    const itemId = parseInt(checkbox.dataset.itemid)\n\n    if (checkbox.checked) {\n      // Add to selection\n      if (!this.selectedItems.find(item => item.type === itemType && item.id === itemId)) {\n        this.selectedItems.push({ type: itemType, id: itemId })\n      }\n    } else {\n      // Remove from selection\n      this.selectedItems = this.selectedItems.filter(item =>\n        !(item.type === itemType && item.id === itemId)\n      )\n    }\n\n    this.updateBatchActionsVisibility()\n    console.log(`Selected items: ${this.selectedItems.length}`, this.selectedItems)\n  }\n\n  /**\n   * Update batch actions toolbar visibility based on selection\n   */\n  updateBatchActionsVisibility() {\n    const hasSelection = this.selectedItems.length > 0\n\n    // Show/hide batch actions\n    if (this.hasBatchActionsTarget) {\n      this.batchActionsTarget.style.display = hasSelection ? 'flex' : 'none'\n\n      // Initialize Bootstrap tooltips when showing\n      if (hasSelection) {\n        this.initializeTooltips()\n      }\n    }\n\n    // Show/hide selection count badge\n    const selectionBadge = this.element.querySelector('#selection_count_badge')\n    if (selectionBadge) {\n      selectionBadge.style.display = hasSelection ? 'inline' : 'none'\n    }\n\n    // Update selection count\n    if (this.hasSelectionCountTarget) {\n      this.selectionCountTarget.textContent = this.selectedItems.length\n    }\n  }\n\n  /**\n   * Initialize Bootstrap tooltips for batch action buttons\n   */\n  initializeTooltips() {\n    const tooltipTriggerList = this.element.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\n    tooltipTriggerList.forEach(tooltipTriggerEl => {\n      // Check if tooltip is already initialized\n      if (!tooltipTriggerEl._tooltip) {\n        const tooltip = new bootstrap.Tooltip(tooltipTriggerEl)\n        tooltipTriggerEl._tooltip = tooltip\n      }\n    })\n  }\n\n  /**\n   * Clear all selections\n   */\n  clearSelection() {\n    this.selectedItems = []\n\n    // Uncheck all checkboxes\n    const checkboxes = this.element.querySelectorAll('.item-select-checkbox')\n    checkboxes.forEach(checkbox => {\n      checkbox.checked = false\n    })\n\n    this.updateBatchActionsVisibility()\n  }\n\n  /**\n   * Batch delete selected items with confirmation\n   */\n  batchDeleteItems() {\n    if (this.selectedItems.length === 0) {\n      console.warn('No items selected for batch delete')\n      return\n    }\n\n    // Get context (users or groups)\n    const context = this.element.dataset.groupsContextValue\n    const contextId = parseInt(this.element.dataset.id)\n\n    // Prepare confirmation message\n    const itemCount = this.selectedItems.length\n    const confirmKey = itemCount === 1\n      ? 'shared.confirm_batch_delete.singular'\n      : 'shared.confirm_batch_delete.plural'\n\n    const confirmMessage = I18n.t(confirmKey, { count: itemCount })\n\n    // Update modal description dynamically\n    const modal = document.getElementById('batch_delete_items_modal')\n    if (modal) {\n      const descriptionElement = modal.querySelector('.modal-body p')\n      if (descriptionElement) {\n        descriptionElement.textContent = confirmMessage\n      }\n    }\n\n    // Store delete info\n    this.pendingBatchDelete = { context, contextId }\n\n    console.log(`[Groups] Showing batch delete modal for ${itemCount} items`)\n\n    // Show modal\n    if (modal) {\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    }\n  }\n\n  /**\n   * Handle delete-confirmed event from modal\n   */\n  handleDeleteConfirmed(event) {\n    const modalId = event.detail.modalId\n\n    // Handle drag & drop user removal\n    if (modalId === 'drag_remove_user_modal' && this.pendingDragRemoveUserIdValue) {\n      const userId = this.pendingDragRemoveUserIdValue\n      const filter = this.pendingDragRemoveFilterValue\n      const element = this.pendingDragElement\n\n      console.log('[Groups] Drag remove user confirmed:', userId)\n\n      // Remove all drop zone highlights\n      const dropZones = this.element.querySelectorAll('[data-action*=\"dragover\"]')\n      dropZones.forEach(zone => this.removeDropZoneHighlight(zone))\n\n      // Execute the reflex\n      this.stimulate(\"GroupsReflex#remove_user\", userId, filter).then(() => {\n        // Show success flash and reset state\n        this.showSuccessFlash(element);\n        setTimeout(() => this.resetItemState(element), 700);\n        this._filterParticipants(filter);\n      }).catch((error) => {\n        // Reset state on error\n        this.resetItemState(element);\n        console.error('User removal failed:', error);\n      })\n\n      // Clear pending state\n      this.pendingDragRemoveUserIdValue = null\n      this.pendingDragRemoveFilterValue = null\n      this.pendingDragElement = null\n\n      return\n    }\n\n    // Handle batch delete\n    if (modalId === 'batch_delete_items_modal' && this.pendingBatchDelete) {\n      const { context, contextId } = this.pendingBatchDelete\n\n      // Get current filter\n      const filter = $('#journeys_filter')[0]?.value || ''\n\n      // Prepare items JSON\n      const itemsJson = JSON.stringify(this.selectedItems)\n\n      console.log(`[Groups] Batch deleting ${this.selectedItems.length} items from ${context} ${contextId}`)\n\n      // Clear pending state\n      this.pendingBatchDelete = null\n\n      // Call appropriate reflex method\n      if (context === 'users') {\n        this.stimulate('UsersReflex#batch_remove_items', itemsJson, contextId, filter)\n          .then(() => {\n            console.log('Batch delete completed successfully')\n            this.clearSelection()\n          })\n          .catch((error) => {\n            console.error('Batch delete failed:', error)\n          })\n      } else if (context === 'groups') {\n        this.stimulate('GroupsReflex#batch_remove_items', itemsJson, contextId, filter)\n          .then(() => {\n            console.log('Batch delete completed successfully')\n            this.clearSelection()\n          })\n          .catch((error) => {\n            console.error('Batch delete failed:', error)\n          })\n      } else {\n        console.error(`Unknown context: ${context}`)\n      }\n    }\n  }\n\n  /**\n   * Handle modal cancellation (user clicked Cancel or closed modal)\n   * Reset the drag element state when modal is hidden without confirmation\n   */\n  handleModalCancelled(event) {\n    // Only handle if we have a pending drag removal\n    if (this.pendingDragRemoveUserIdValue && this.pendingDragElement) {\n      console.log('[Groups] Modal cancelled, resetting drag element state')\n\n      // Reset the element state (remove processing animation)\n      this.resetItemState(this.pendingDragElement)\n\n      // Remove all drop zone highlights (in case user is still hovering)\n      const dropZones = this.element.querySelectorAll('[data-action*=\"dragover\"]')\n      dropZones.forEach(zone => this.removeDropZoneHighlight(zone))\n\n      // Clear pending state\n      this.pendingDragRemoveUserIdValue = null\n      this.pendingDragRemoveFilterValue = null\n      this.pendingDragElement = null\n    }\n  }\n\n}\n\nfunction copyDataToDataTransfer(dataTransfer, data) {\n  for (let [key, value] of Object.entries(data)) {\n    dataTransfer.setData(key, value);\n  }\n  return dataTransfer\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = [\"autohide\"]\n\n\n  connect() {\n    super.connect()\n  }\n    \n  ///\n  // setup functionality for autohiding elements\n  ///\n  autohideTargetConnected(element) { \n    // console.log(\"autohide connected\")\n    setTimeout(() => {\n      element.style.display = 'none';\n    }, 2000);\n  }\n}\n", "import ApplicationController from './application_controller'\n\n////\n// responsible for image source switching in definitions\n////\nexport default class extends ApplicationController {\n\n\n  connect() {\n    super.connect();\n    let self = this;\n  }\n\n  ///\n  // toggles the visibility of upload or default image field\n  ///\n  toggleDefaultIcon(event) {\n    // console.log(\"switching default icon\");\n    event.preventDefault();\n    // this.startLoading();\n    let $target = $(event.currentTarget);\n    let $iconDefinition = $target.closest(\".row\").find(\".icon-definition\");\n    // console.log(\"icon definition: \", $iconDefinition);\n    $iconDefinition.find(\".default\").toggleClass(\"hidden\");\n    $iconDefinition.find(\".uploaded\").toggleClass(\"hidden\");\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"journey-containers--visibility\"\nexport default class extends Controller {\n  static targets = [\"field\"]\n\n  change(event) {\n    const value = event.target.dataset.visibility\n    if (!value || !this.hasFieldTarget) return\n\n    this.fieldTarget.value = value\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n\n  initialize() {\n    super.initialize()\n    this.useReflex = true\n  }\n\n  /**\n   * saves the journey, but creates hidden field for edit_path before\n   * save is triggered by clicking sav&exit button\n   * @param {*} event \n   */\n  // saves the journey, but creates hidden field for edit_path before\n  // save is triggered by clicking sav&exit button\n  ///\n  saveJourney(event) {\n    event.preventDefault()\n    this.startLoading()\n    this.reset_csrf_token()\n    let form = $('#journey_form')\n    let action = form.attr('action')\n    if (!action.endsWith(\".js\")) {\n      action += \".js\"\n    }\n    $('#journey_form').attr('action', action)\n\n\n    let hiddenField = document.createElement('input')\n    $(hiddenField).attr({\n      type: 'hidden',\n      value: $(event.currentTarget).data('path'),\n      name: 'journey[edit_path]'\n    });\n\n    $(hiddenField).appendTo(form)\n\n    $(\"[type=submit][form=journey_form][name=save_and_exit]\").trigger(\"click\")\n  }\n\n  /**\n   * shows the spinner when the form is submitted\n   * and the save button is clicked\n   * @param {*} event \n   */\n  // shows the spinner when the form is submitted\n  // and the save button is clicked\n  ///\n  showSpinner(event) {\n    this.startLoading()\n  }\n\n\n  /**\n   * removes the phase by calling a reflex\n   * @param {*} event \n   */\n  // removes the phase by calling a reflex\n  ///\n  removePhase(event) {\n    event.preventDefault();\n    const $target = $(event.currentTarget);\n    const phaseId = $target.data(\"id\")\n    console.log(`start deleting the phase with id: ${phaseId}`)\n    const phaseBox = $(`#phase_box_${phaseId}`)\n    const phaseContainer = phaseBox.next()\n    phaseBox.remove()\n    phaseContainer.remove()\n    this.stimulate('PhaseBuilderReflex#remove_phase', phaseId)\n  }\n\n  /**\n   * opens a new window to preview the journey\n   * the href and target attributes of the link are used\n   * to open the preview in a new window\n   * @param {*} event \n   */\n  preview(event) {\n    const target = $(event.currentTarget)\n    event.preventDefault()\n    this.startLoading()\n    this.stimulate('Journeys#preview', $('#journey_form')[0]).then((event) => {\n      // console.log(event)\n      this.stopLoading()\n      window.open(target.attr('href'), target.attr('target'), 'height=1024,width=1280,toolbar=no,menubar=no,scrollbars=no,location=no,status=no')\n    })\n  }\n\n  /**\n   * sets up the structure of the journey\n   * @param {*} event \n   */\n  setupStructure(event) {\n    // const $target = $(event.currentTarget)\n    event.preventDefault()\n    // console.log('setting up the learning path\\'s structure')\n    this.stimulate('Journeys#show_structure_modal', event.currentTarget).then((event) => {\n      $(\"#journey_structure_modal\").modal('show')\n    });\n\n  }\n\n  /**\n   * requests the structure of the journey\n   * @param {*} event \n   */\n  requestStructure(event) {\n    const $target = $(event.currentTarget)\n    event.preventDefault()\n    const journeyId = $target.closest(\".modal\").data(\"journey-id\")\n    const theme = $('#theme_input').val()\n    const targetGroup = $('#target_group_input').val()\n    const language = $('#language_input').val()\n    // console.log(\"theme:\", theme)\n    // console.log(\"targetGroup:\", targetGroup)\n    // console.log(\"language:\", language)\n    this.stimulate('Journeys#request_structure', journeyId, theme, targetGroup, language).then((event) => {\n      // $(\"#journey_structure_modal .modal-footer\").text(`Wir suchen nach '${$input.val()}'`)\n    });\n  }\n\n  /**\n   * updates the state management of the journey\n   * @param {*} event \n   */\n  updateStateManagement(event) {\n    const journeyId = $(this.element).data('journey-id')\n    const stateOn = $(event.currentTarget).prop('checked')\n    this.stimulate('Journeys#update_state_management', stateOn)\n  }\n\n  /**\n   * shows the translation modal\n   * @param {*} event \n   */\n  showTranslationModal(event) {\n    this.stimulate('Journeys#show_translation_modal')\n  }\n\n  /**\n   * restarts the journey\n   * @param {*} event \n   */\n  restartJourney(event) {\n    event.preventDefault()\n    const $target = $(event.currentTarget)\n    const learningId = $target.data('learning-id')\n    this.stimulate('Journeys#restart_journey', learningId)\n  }\n\n  /**\n   * starts the journey (direct access without container)\n   * @param {*} event \n   */\n  start(event) {\n    event.preventDefault()\n    const button = event.currentTarget\n    const journeyId = button.dataset.journeyId\n    \n    // Navigate to start_journey path (POST)\n    const form = document.createElement('form')\n    form.method = 'POST'\n    form.action = `/journeys/${journeyId}/start_journey`\n    \n    // Add CSRF token\n    const csrfToken = document.querySelector('[name=\"csrf-token\"]')\n    if (csrfToken) {\n      const input = document.createElement('input')\n      input.type = 'hidden'\n      input.name = 'authenticity_token'\n      input.value = csrfToken.content\n      form.appendChild(input)\n    }\n    \n    document.body.appendChild(form)\n    form.submit()\n  }\n\n  /**\n   * starts the journey from container context\n   * Calls ContainerUnitReflex#start_unit to create Learning with container linkage\n   * @param {*} event \n   */\n  startFromContainer(event) {\n    event.preventDefault()\n    const button = event.currentTarget\n    const tenantUserAssignmentId = button.dataset.tenantUserAssignmentId\n    const journeyId = button.dataset.journeyId\n    const originId = button.dataset.originId\n    \n    // Read container context from #journey_show_page (if present, for navigation after start)\n    const journeyPage = document.getElementById('journey_show_page')\n    let containerName = ''\n    let containerUrl = ''\n    if (journeyPage) {\n      containerName = journeyPage.dataset.containerName || ''\n      containerUrl = journeyPage.dataset.containerUrl || ''\n    }\n    \n    this.startLoading()\n    \n    // Call ContainerUnitReflex#start_unit\n    this.stimulate('ContainerUnitReflex#start_unit', tenantUserAssignmentId, journeyId, originId).then(() => {\n      // Navigate to journey with container context\n      // Extract container_id from container_url (e.g., \"/journey_containers/53\" -> \"53\")\n      const containerId = containerUrl ? containerUrl.match(/\\/journey_containers\\/(\\d+)/)?.[1] : null\n      \n      const url = `/journeys/${journeyId}`\n      const params = new URLSearchParams({\n        from_container: containerId,  // CRITICAL: Use container_id, not tenant_user_assignment_id\n        container_name: encodeURIComponent(containerName),\n        container_url: containerUrl\n      })\n      window.location.href = `${url}?${params.toString()}`\n    }).catch((error) => {\n      console.error('ContainerUnitReflex#start_unit failed:', error)\n      this.stopLoading()\n    })\n  }\n\n}", "import ApplicationController from \"./application_controller\"\n\nexport default class extends ApplicationController {\n  static targets = [\"levelRow\"]\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false // No reflex needed for this controller\n  }\n\n  connect() {\n    super.connect()\n    this.logInfo(\"Journey Hierarchy Config controller connected\")\n    this.updateLevelsDisplay()\n  }\n\n  updateDepth(event) {\n    const selectedDepth = parseInt(event.target.value)\n    this.logInfo(`Selected depth: ${selectedDepth}`)\n    this.updateLevelsDisplay(selectedDepth)\n  }\n\n  updateLevelsDisplay(depth = null) {\n    if (depth === null) {\n      // Get current depth from select field\n      const depthSelect = this.element.querySelector('select[name*=\"journey_hierarchy_depth\"]')\n      depth = depthSelect ? parseInt(depthSelect.value) : 0\n    }\n\n    this.levelRowTargets.forEach((row) => {\n      const level = parseInt(row.dataset.level)\n      const isActive = level <= depth\n      \n      // Update row styling with Bootstrap classes\n      if (isActive) {\n        row.classList.remove('hierarchy-level-disabled', 'border-secondary', 'bg-light-muted')\n        row.classList.add('hierarchy-level-enabled', 'border-primary', 'bg-light')\n      } else {\n        row.classList.add('hierarchy-level-disabled', 'border-secondary', 'bg-light-muted')\n        row.classList.remove('hierarchy-level-enabled', 'border-primary', 'bg-light')\n      }\n\n      // Update icon (now using Material Icons)\n      const icon = row.querySelector('i.material-icons')\n      if (icon) {\n        if (isActive) {\n          icon.textContent = 'check_circle'\n          icon.classList.remove('text-muted')\n          icon.classList.add('text-success')\n          icon.title = 'Level aktiv'\n        } else {\n          icon.textContent = 'cancel'\n          icon.classList.remove('text-success')\n          icon.classList.add('text-muted')\n          icon.title = 'Level inaktiv'\n        }\n      }\n\n      // Update text styling\n      const strong = row.querySelector('strong')\n      const textDiv = row.querySelector('.col-11 div')\n      \n      if (strong) {\n        if (isActive) {\n          strong.classList.remove('text-muted')\n          strong.classList.add('text-primary')\n        } else {\n          strong.classList.remove('text-primary')\n          strong.classList.add('text-muted')\n        }\n      }\n\n      if (textDiv) {\n        if (isActive) {\n          textDiv.classList.remove('text-muted')\n          textDiv.classList.add('text-dark')\n        } else {\n          textDiv.classList.remove('text-dark')\n          textDiv.classList.add('text-muted')\n        }\n      }\n    })\n  }\n} ", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = ['collapsed']\n\n  /**\n   * Toggles the collapsed state of the journey versions.\n   *\n   * @param {Event} event - The event triggered by clicking the element.\n   */\n  toggle(event) {\n    const domTarget = $(event.currentTarget)\n    const collapseTarget = $(`#${domTarget.data('bs-target')}`)\n    if(this.isOpen(collapseTarget)) {\n      domTarget.find('.material-icons').html('expand_more')\n      this.closeGroup(collapseTarget)\n    } else {\n      domTarget.find('.material-icons').html('expand_less')\n      const id = domTarget.data('id')\n      this.openGroup(collapseTarget, id)\n    }\n  }\n\n  /**\n   * Checks if the target is open.\n   *\n   * @param {Element} target - The target element.\n   * @returns {boolean} - True if the target is open, false otherwise.\n   */\n  isOpen(target) {\n    return target.hasClass('show')\n  }\n\n  /**\n   * Opens the group.\n   *\n   * @param {Element} target - The target element.\n   * @param {string} id - The id of the target element.\n   */\n  openGroup(target, id) {\n    this.stimulate('JourneyVersions#versions', id).then(() => target.collapse('show'))\n  }\n\n  /**\n   * Closes the group.\n   *\n   * @param {Element} target - The target element.\n   */\n  closeGroup(target) {\n    target.collapse('hide')\n  }\n\n  /**\n   * Deletes the active journey.\n   *\n   * @param {Event} event - The event triggered by clicking the element.\n   */\n  deleteActiveJourney(event) {\n    event.preventDefault()\n    const target = $(event.currentTarget)\n    const versionId = target.data('id')\n\n    this.stimulate('JourneyVersions#delete_active_journey', versionId)\n  }\n  \n  /**\n   * Toggles the journey type based on the clicked element's data attribute and updates the window location.\n   *\n   * @param {Event} event - The event triggered by clicking the element.\n   */\n  toggleJourneyType(event) {\n    const target = $(event.currentTarget)\n    var journey_type = target.data('journey-type')\n    const url = new URL(window.location);\n    url.searchParams.set('journey_type', journey_type);\n    if (journey_type == '2' || journey_type == '3') {\n      url.searchParams.delete('page');\n    }\n    url.searchParams.set('journey_type', journey_type);\n    // window.history.pushState({}, '', url);\n    window.location = url;\n  }\n\n  /**\n   * sets the correct version on an origin\n   * \n   * @param {Event} event - The event triggered by clicking the element.\n   */\n  correctVersion(event) {\n    event.preventDefault()\n    const $target = $(event.currentTarget)\n    const versionId = $target.data('id')\n\n    this.stimulate('JourneyVersions#correct_version', versionId)\n  }\n\n  /**\n   * sets the correct version on an origin after a version has been deleted\n   *\n   * @param {Event} event - The event triggered by clicking the element.\n   */\n  correctVersionAfterVersionDeletion(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    const $target = $(event.currentTarget)\n    const versionId = $target.data('id')\n    if (confirm(I18n.t('shared.version_correction.confirm_button'))) {\n      console.log('correct version after version deletion')\n      this.stimulate('JourneyVersions#correct_version', versionId, true)\n    } else {\n      console.log(I18n.t('dict.cancel'))\n    }\n    // this.stimulate('JourneyVersions#correct_version', versionId, true)\n  }\n\n  /**\n   * Toggles the visibility of the export modal and handles the export process.\n   *\n   * @param {Event} event - The event triggered by clicking the element.\n   */\n  exportJourney(event) {\n    event.preventDefault()\n    const $target = $(event.currentTarget)\n    const journeyId = $target.data('journey-id')\n    const exportModal = $(`#export_modal`)\n\n    // call  export_journey_path per Ajax\n    $.ajax({\n      url: `/export_journey?id=${journeyId}`,\n      type: 'GET',\n      dataType: 'script',\n      success: function(data, textStatus, jqXHR) {\n          exportModal.find('.success').removeClass('hidden');\n          console.log('Journey exported successfully');\n      },\n      error: function(xhr, status, error) {\n        console.error('Error exporting journey:', error);\n        exportModal.find('.error').removeClass('hidden');\n      }\n    })\n    exportModal.modal('show')\n  }\n\n  ///\n  // shows the spinner when the form is submitted\n  // and the save button is clicked\n  ///\n  showSpinner(event) {\n    this.startLoading()\n  }\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = [\"learnCard\", \"boxTotal\", \"boxCorrect\", \"boxWrong\", \"interactionBtn\"]\n\n  // How many cards are in this stack.\n  numberOfCards = 0\n  // Which card we are currently.\n  currentCardIndex = 0\n\n  // Count of how many answers the user did know in this session\n  correct = 0\n  // Count of how many answers the user did not know in this session\n  wrong = 0\n  // How many cards are in the box.\n  totalCards = 0\n\n  connect() {\n    super.connect()\n\n    this.#initGame()\n  }\n\n  #initGame() {\n    if(this.hasLearnCardTarget) {\n      this.numberOfCards = this.learnCardTargets.filter((learn_card, index, learn_cards) => {\n        return !$(learn_card).data('exclude')\n      }).length\n      this.totalCards = this.numberOfCards\n    }\n    this.currentCardIndex = 0\n    this.correct = 0\n    this.wrong = 0\n    this.#updateBoxTotalBy(0)\n    this.#updateBoxCorrect()\n    this.#updateBoxWrong()\n    this.#disableInteractionButtons()\n  }\n\n  /**\n   * This will turn around the the current visible card\n   * @param {*} event fired by the button\n   */\n  turnAround(event) {\n    event.preventDefault()\n    if(this.hasLearnCardTarget) {\n      const currentCard = this.learnCardTargets[this.currentCardIndex]\n      $(currentCard).find('.learn-card-frontside').toggleClass('invisible')\n      $(currentCard).find('.learn-card-backside').toggleClass('invisible')\n      this.#enableInteractionButtons()\n    }\n  }\n\n  /**\n   * This will go to the next card and increase the did know count.\n   * @param {*} event fired by the button\n   */\n  doKnow(event) {\n    event.preventDefault()\n    const $target = $(event.currentTarget)\n    this.stimulate('LearnCardCollectionReflex#card_known', $target.data('learn-card-id'))\n    this.#nextCard(event)\n    this.correct++\n    this.#updateBoxTotalBy(-1)\n    this.#updateBoxCorrect()\n    this.#disableInteractionButtons()\n  }\n\n    /**\n   * This will go to the next card and increase the did not know count.\n   * @param {*} event fired by the button\n   */\n  doNotKnow(event) {\n    event.preventDefault()\n    const $target = $(event.currentTarget)\n    this.stimulate('LearnCardCollectionReflex#card_not_known', $target.data('learn-card-id'))\n    this.#nextCard(event)\n    this.wrong++\n    this.#updateBoxTotalBy(-1)\n    this.#updateBoxWrong()\n    this.#disableInteractionButtons()\n  }\n\n  /**\n   * This will go to the next card.\n   * @param {*} event fired by the button\n   */\n  #nextCard(event) {\n    if(this.hasLearnCardTarget) {\n      const previousCard = this.learnCardTargets[this.currentCardIndex]\n      $(previousCard).addClass('hidden')\n      if(this.currentCardIndex + 1 <= this.numberOfCards) {\n        this.currentCardIndex++\n        const currentCard = this.learnCardTargets[this.currentCardIndex]\n        $(currentCard).removeClass('hidden')\n      }\n    }\n  }\n\n  repeatNotKnown(event) {\n    const self = this\n    this.stimulate('LearnCardCollectionReflex#repeat_not_known').then(() => {\n      self.#initGame()\n    })\n  }\n\n  /**\n   * this will restart the complete learn card collection\n   * @param {*} event\n   */\n  restart(event) {\n    const self = this\n    this.stimulate('LearnCardCollectionReflex#restart').then(() => {\n      self.#initGame()\n    })\n  }\n\n  /**\n   * This will update the number of total cards by a given value.\n   * @param {Integer} value how much it should be updated by\n   */\n  #updateBoxTotalBy(value) {\n    if(this.hasBoxTotalTarget) {\n      this.totalCards += value\n      $(this.boxTotalTarget).children('.box-item-count').html(this.totalCards)\n    }\n  }\n\n  /**\n   * Update the visual box to the given number of correct cards\n   */\n  #updateBoxCorrect() {\n    if(this.hasBoxCorrectTarget) {\n      $(this.boxCorrectTarget).children('.box-item-count').html(this.correct)\n    }\n  }\n\n  /**\n   * Update the visual box to the given number of wrong cards\n   */\n  #updateBoxWrong() {\n    if(this.hasBoxWrongTarget) {\n      $(this.boxWrongTarget).children('.box-item-count').html(this.wrong)\n    }\n  }\n\n  /**\n   * This will disable all interaction buttons. ('do know' and 'do not know')\n   */\n  #disableInteractionButtons() {\n    if(this.hasInteractionBtnTarget) {\n      $(this.interactionBtnTargets).addClass('disabled')\n    }\n  }\n\n  /**\n   * This will enable all interaction buttons. ('do know' and 'do not know')\n   */\n  #enableInteractionButtons() {\n    if(this.hasInteractionBtnTarget) {\n      $(this.interactionBtnTargets).removeClass('disabled')\n    }\n  }\n}", "import ApplicationController from './application_controller'\nimport Param from '../packs/param';\n\nexport default class extends ApplicationController {\n\n  static targets = [ \"learnunit\" ]\n  static values = { journeyid: String }\n\n  connect() {\n    // console.log('connected to learn-unit-select')\n    this.journeyContainer = $(\"#journey_content_container\")\n    this.learnunitContainer = $(\"#learnunit_content_container\")\n    super.connect()\n    this.param = new Param(this.getBaseUrl());\n\n    /* check if we have a journey_content_container\n       if so, we have to set the background color to white\n       can't be made by css, as it is a css attribute of body tag\n    */\n    const journeyContentContainer = document.getElementById('journey_content_container');\n    if (journeyContentContainer) {\n      $('body').css('background-color', 'white');\n    }\n    \n  }\n  \n  ////\n  // will call a reflex given in the corresponding learnunitTarget or just display the journey's representation\n  ////\n  display_info(event) {\n    // console.log(\"show extra information\")\n    const $target = $(event.currentTarget);\n    console.log(\"display_info target: \", $target)\n    const learnUnitElement = $target.closest('.learn-unit');\n    console.log(\"learnUnitElement: \", learnUnitElement)\n    const learnUnitsPath = $target.closest('#learn_units_path');\n    const learnUnits = learnUnitsPath.find('.learn-unit');\n    learnUnits.removeClass('selected');\n    learnUnitElement.addClass('selected');\n    if (this.hasLearnunitTarget) { // we have to call the referenced Reflex\n      var linkElement = this.learnunitTarget\n      this.stimulate(`Learnunit#show_authoring_type`, linkElement)\n      this.journeyContainer.addClass('hidden')\n      this.learnunitContainer.removeClass('hidden')\n      this.scrollInnerMainContainerToTop()\n    } else { \n      // console.log(\"Sorry, no learnunit\")\n      this.learnunitContainer.addClass('hidden')\n      this.journeyContainer.removeClass('hidden')\n    }\n  }\n  \n  /**\n   * Displays an consumable by checking if there is a referenced learnunit target. \n   * If there is, it calls the \"Learnunit#show_consumable_type\" reflex with the link element as the argument and hides the journey container while showing the learnunit container. \n   * If there is no learnunit target, it hides the learnunit container and shows the journey container.\n   *\n   * @param {Object} event - The event to be displayed.\n   */\n  display_consumable(event) {\n    if (this.hasLearnunitTarget) { // we have to call the referenced Reflex\n      var linkElement = this.learnunitTarget\n      this.stimulate(`Learnunit#show_consumable_type`, linkElement)\n      this.journeyContainer.addClass('hidden')\n      this.learnunitContainer.removeClass('hidden')\n      this.scrollInnerMainContainerToTop()\n    } else { \n      // console.log(\"Sorry, no learnunit\")\n      this.learnunitContainer.addClass('hidden')\n      this.journeyContainer.removeClass('hidden')\n    }\n  }\n\n  /**\n   * Displays an event by checking if there is a referenced learnunit target. \n   * If there is, it calls the \"Learnunit#show_event_type\" reflex with the link element as the argument and hides the journey container while showing the learnunit container. \n   * If there is no learnunit target, it hides the learnunit container and shows the journey container.\n   *\n   * @param {Object} event - The event to be displayed.\n   */\n  display_event(event) {\n    if (this.hasLearnunitTarget) { // we have to call the referenced Reflex\n      var linkElement = this.learnunitTarget\n      this.stimulate(`Learnunit#show_event_type`, linkElement).then(() => {\n        // this.logInfo('Hello after load')\n        // this.create_authenticy_token_for('#event_form')\n        // this.reset_csrf_token()\n      })\n      this.journeyContainer.addClass('hidden')\n      this.learnunitContainer.removeClass('hidden')\n      this.scrollInnerMainContainerToTop()\n    } else { \n      // console.log(\"Sorry, no learnunit\")\n      this.learnunitContainer.addClass('hidden')\n      this.journeyContainer.removeClass('hidden')\n    }\n  }\n\n  ////\n  // scrolls the inner main container to the top\n  ////\n  scrollInnerMainContainerToTop() {\n    const $innerMainContainer = $(\"#inner_main_container\");\n    $innerMainContainer.animate({ scrollTop: 0 }, 300);\n  }\n\n  ////\n  // hide learn_unit container and show journey container\n  ////\n  hideLearnUnitContainer() {\n    // console.log(\"show extra information\")\n    this.learnunitContainer.addClass('hidden')\n    this.journeyContainer.removeClass('hidden')\n  }\n\n  ///\n  // claims the given learn unit and stimulates fitting Reflex as well as it hides the learn_unit container afterwards\n  ///\n  claimUnit(event) {\n    // console.log(\"claimUnit called\")\n    const button = event.currentTarget;\n    const self = this\n    const learnUnitId = button.dataset.learnunitId\n    const journeyId = button.dataset.journeyId\n    \n    // Optimistic UI: Disable button immediately and change text\n    const originalText = button.textContent\n    button.disabled = true\n    // Note: Actual text change happens via server-side I18n after morph\n    // But we can add a loading indicator or change the text immediately if needed\n    \n    // Optimistic UI: Mark learn unit as claimed in navigation\n    const learnUnitElement = document.querySelector(`.learn-unit[data-id=\"${learnUnitId}\"]`)\n    if (learnUnitElement) {\n      learnUnitElement.classList.add('claimed')\n      learnUnitElement.classList.remove('current')\n    }\n    \n    // Read container context from #journey_show_page data-attributes\n    const journeyPage = document.getElementById('journey_show_page')\n    if (journeyPage) {\n      button.dataset.nextUnitId = journeyPage.dataset.nextUnitId || ''\n      button.dataset.containerUrl = journeyPage.dataset.containerUrl || ''\n      button.dataset.fromContainer = journeyPage.dataset.fromContainer || ''\n      button.dataset.containerName = journeyPage.dataset.containerName || ''\n    }\n    \n    // console.log(\"journeyId: \", journeyId)\n    // console.log(\"learnUnitId: \", learnUnitId)\n    this.startLoading()\n    // CRITICAL: Pass button explicitly as element to ensure dataset is available in Reflex\n    this.stimulate(\"LearnunitReflex#claim_unit\", button, journeyId, learnUnitId).then(() => {\n      console.log(\"claimed the unit\");\n      // NOTE: Reflex handles showing next unit or hiding container\n      self.stopLoading()\n    }).catch((error) => {\n      // On error: Revert optimistic UI changes\n      console.error(\"Failed to claim unit:\", error);\n      button.disabled = false\n      button.textContent = originalText\n      if (learnUnitElement) {\n        learnUnitElement.classList.remove('claimed')\n      }\n      self.stopLoading()\n    });\n\n  }\n\n  ///\n  // opens the learn_unit in the editor frame\n  ///\n  open(event) {\n    // console.log(\"opening learn unit...\")\n    /// first we have to close the pseudo modal used for learntype dependent configuration in case it is opened\n    $(\"#learn_units_form_pseudo_modal\").addClass(\"d-none\");\n    $('#learn_units_form').show();\n\n    let $target = $(event.currentTarget);\n    $(\"#learn_units_form form .slide\").removeClass(\"slide-current\");\n    \n    $(\"#learn_path .state\").removeClass(\"selected\");\n    \n    $($target).find(\".state\").addClass(\"selected\");\n    \n    let id = $target.data(\"id\"),\n    type = $target.data(\"type\");\n    \n    \n    const $phase = $target.closest('.phase')\n    const phaseId = $phase.data('phase-id')\n    \n    console.log(`open learn unit with id: ${id}`)\n    $(`#${type}_${id}_form`).addClass(\"slide-current\");\n    $(document).one(\"show-element\", `#${type}_${id}_form`, function () {\n      $(this).addClass(\"slide-current\");\n    });\n\n    /// also set current learn_unit as hidden field on form and in url\n    let form = $('#journey_form');\n    const fieldName = \"current_learn_unit\" \n    const currentIdField = form.find(`input[name=${fieldName}]`)\n    // console.log(\"we have a current field: \", currentIdField)\n    if(currentIdField.length > 0) {\n      currentIdField.attr('value', id)\n    } else {\n      let hiddenField = document.createElement('input');\n      $(hiddenField).attr({\n        type: 'hidden',\n        value: id,\n        name: fieldName\n      });\n      $(hiddenField).appendTo(form);  \n    }\n\n    const phaseFieldName = \"current_phase\" \n    const currentPhaseIdField = form.find(`input[name=${phaseFieldName}]`)\n    // console.log(\"we have a current field: \", currentIdField)\n    if(currentPhaseIdField.length > 0) {\n      currentPhaseIdField.attr('value', phaseId)\n    } else {\n      let hiddenPhaseField = document.createElement('input');\n      $(hiddenPhaseField).attr({\n        type: 'hidden',\n        value: phaseId,\n        name: phaseFieldName\n      });\n      $(hiddenPhaseField).appendTo(form);  \n    }\n\n    const $phaseBox = $phase.prev();\n    // console.log(\"target: \", $target)\n    // console.log(\"phaseBox: \", $phaseBox)\n    const $phaseLine = $phaseBox.closest(\".phase-line-container\")\n    $phaseLine.find(\".phase, .phase-box\").removeClass('expanded')\n    $phase.addClass(\"expanded\")\n    $phaseBox.addClass(\"expanded\")\n\n    // set in url\n    this.param.updateParams(\"learn_unit_id\", id, false);\n    this.param.updateParams(\"phase_id\", phaseId, false);\n    this.showForm()\n  }\n\n  ///\n  // opens the journey_builder_form_frame turbo-frame in the left side frame to present extra input and hides the default journey form \n  ///\n  hideForm(event) {\n    $('#journey_form').hide()\n    $('#journey_builder_form_frame').show()\n\n    // prevent the expand controller on phasese to expand/collapse\n    const $target = event.currentTarget\n    const $phaseBox = $target.closest(\".phase-box\")\n    console.log(\"phaseBox: \", $phaseBox)\n    $($phaseBox).addClass('fixed')\n  }\n\n  ///\n  // hides the journey_builder_form_frame turbo-frame in the left side frame and opens the default journey form \n  ///\n  showForm() {\n    $('#journey_builder_form_frame').hide()\n    $('#journey_form').show()\n  }\n\n  unfixExpandable(event) {\n    event.preventDefault()\n    // reenable the expand controller on phases to expand/collapse\n    $(\"#learn_path .phase-box\").removeClass('fixed')\n    // $('#journey_builder_form_frame').addClass('animate__animated animate__rubberBand')\n    event.detail.resume()\n\n  }\n\n  showParagraph(event) {\n    const $target = $(event.currentTarget);\n    console.log(\"show paragraph: \", $target)\n    if($target.val().length > 0) {\n      console.log(\"show paragraph: \", $target.val())\n      console.log(\"target: \", $target.data('target'))\n      $($target.data('target')).removeClass('d-none').addClass('d-block');\n    } else {\n      console.log(\"show nothing: \", $target)\n    }\n    // const paragraphId = $target.data('paragraph-id');\n    // const paragraph = $(`#paragraph_${paragraphId}`);\n    // const paragraphs = $('.paragraph');\n    // paragraphs.addClass('hidden');\n    // paragraph.removeClass('hidden');\n  }\n\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = [\"text\", \"hiddenField\"]\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n  }\n\n  updateHiddenField(event) {\n    // event.preventDefault()\n    const $target = $(event.currentTarget)\n    const $parent = $target.parent('.btn-group')\n    const $checkedInput = $target\n    const optionIndex = $checkedInput.val()\n    const options = {left: 'white', right: 'black'}\n    const currentMode = options[optionIndex]\n    if(this.hasHiddenFieldTarget) {\n      const prevMode = $(this.hiddenFieldTarget).val()\n      $(this.hiddenFieldTarget).val(currentMode)\n      this.updateTextColor(prevMode, currentMode)\n    }\n  }\n\n  updateTextColor(prevMode, currentMode) {\n    if (this.hasTextTarget) {\n      const $input = $(this.textTarget).find('input')\n      // this.logInfo(`switching from ${prevMode} to ${currentMode}`)\n      $input.removeClass(`text-${prevMode}`)\n      $input.addClass(`text-${currentMode}`)\n    }\n  }\n\n  toggleVisibility(event) {\n    event.preventDefault()\n    const $target = $(event.currentTarget)\n    if(this.hasTextTarget) {\n      $(this.textTarget).find('.title').toggleClass('blend-off')\n    }\n\n  }\n\n  toggleOverlay(event) {\n    event.preventDefault()\n    console.log(\"toggle Overlay\")\n    const $target = $(event.currentTarget)\n    $target.closest(\".hero-image\").find('.hero-overlay').toggleClass(\"inactive\")\n  }\n}", "import ApplicationController from './application_controller'\nimport Chart from 'chart.js/auto';\n\nexport default class extends ApplicationController {\n\n  initialize() {\n    super.initialize();\n  }\n\n  connect() {\n    super.connect();\n    const self = this\n    // create the charts\n    $(\".chart-container.line\").each(function () {\n      self.setupChart($(this), self);      \n    })\n    // setup listeners for changed charts\n    $(this.element).on(\"chart:changed\", function (event, chartId) {\n      // console.log(`chart changed: ${chartId}`)\n      self.setupChart($(`#${chartId}_container`), self);      \n    })\n    $(this.element).on(\"chart:refresh\", function () {\n      $(\".chart-container.line\").each(function () {\n        self.setupChart($(this), self);\n      })\n    })\n  }\n\n  setupChart(chartContainer, self) {\n    const chartId = chartContainer.data('chart-id')\n    const colors = chartContainer.data(\"colors\")\n\n    const config = {\n      colors: colors,\n      empty: I18n.t(\"dict.no_data\"),\n      xtitle: chartContainer.data(\"x-axis-label\"),\n      ytitle: chartContainer.data(\"y-axis-label\")\n    }\n    // console.log(`drawing chart for ${chartId}`)\n    const myChart = new Chartkick.LineChart(\n      `${chartId}_container`,\n      chartContainer.data('datasets'),\n      config\n    );\n  }\n\n}\n", "/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n  let id = 0;\n  return function() {\n    return id++;\n  };\n}());\nfunction isNullOrUndef(value) {\n  return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\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}\nfunction isObject(value) {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : value / dimension;\nconst toDimension = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\nfunction callback(fn, args, thisArg) {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n  let i, len, keys;\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}\nfunction _elementsEqual(a0, a1) {\n  let i, ilen, v0, v1;\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction clone$1(source) {\n  if (isArray(source)) {\n    return source.map(clone$1);\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    for (; k < klen; ++k) {\n      target[keys[k]] = clone$1(source[keys[k]]);\n    }\n    return target;\n  }\n  return source;\n}\nfunction isValidKey(key) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone$1(sval);\n  }\n}\nfunction merge(target, source, options) {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n  if (!isObject(target)) {\n    return target;\n  }\n  options = options || {};\n  const merger = options.merger || _merger;\n  for (let i = 0; i < ilen; ++i) {\n    source = sources[i];\n    if (!isObject(source)) {\n      continue;\n    }\n    const keys = Object.keys(source);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, source, options);\n    }\n  }\n  return target;\n}\nfunction mergeIf(target, source) {\n  return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone$1(sval);\n  }\n}\nfunction _deprecated(scope, value, previous, current) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\nconst keyResolvers = {\n  '': v => v,\n  x: o => o.x,\n  y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n  const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n  return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n  const keys = _splitKey(key);\n  return obj => {\n    for (const k of keys) {\n      if (k === '') {\n        break;\n      }\n      obj = obj && obj[k];\n    }\n    return obj;\n  };\n}\nfunction _splitKey(key) {\n  const parts = key.split('.');\n  const keys = [];\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}\nfunction _capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n  return true;\n};\nfunction _isClickEvent(e) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\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}\nfunction _factorize(value) {\n  const result = [];\n  const sqrt = Math.sqrt(value);\n  let i;\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)) {\n    result.push(sqrt);\n  }\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\nfunction isNumber(n) {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n  return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n  let i, ilen, value;\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}\nfunction toRadians(degrees) {\n  return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n  return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n  if (!isNumberFinite(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}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n  if (angle < (-0.5 * PI)) {\n    angle += TAU;\n  }\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n  return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n  return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\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}\nfunction _limitValue(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n  return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid;\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  return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n  _lookup(table, value, last\n    ? index => table[index][key] <= value\n    : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n  _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n  let start = 0;\n  let end = values.length;\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n        return res;\n      }\n    });\n  });\n}\nfunction unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n  if (listeners.length > 0) {\n    return;\n  }\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n  delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n  const set = new Set();\n  let i, ilen;\n  for (i = 0, ilen = items.length; i < ilen; ++i) {\n    set.add(items[i]);\n  }\n  if (set.size === ilen) {\n    return items;\n  }\n  return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n  const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n  let ticking = false;\n  let args = [];\n  return function(...rest) {\n    args = updateArgs(rest);\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, args);\n      });\n    }\n  };\n}\nfunction debounce(fn, delay) {\n  let timeout;\n  return function(...args) {\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}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n  const pointCount = points.length;\n  let start = 0;\n  let count = pointCount;\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        _lookupByKey(_parsed, iScale.axis, min).lo,\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\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  return {start, count};\n}\nfunction _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  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n  linear: t => t,\n  easeInQuad: t => t * t,\n  easeOutQuad: t => -t * (t - 2),\n  easeInOutQuad: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n  easeInCubic: t => t * t * t,\n  easeOutCubic: t => (t -= 1) * t * t + 1,\n  easeInOutCubic: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n  easeInQuart: t => t * t * t * t,\n  easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n  easeInOutQuart: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n  easeInQuint: t => t * t * t * t * t,\n  easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n  easeInOutQuint: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n  easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n  easeOutSine: t => Math.sin(t * HALF_PI),\n  easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n  easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n  easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n  easeInOutExpo: t => 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  easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n  easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n  easeInOutCirc: t => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n  easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n  easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n  easeInOutElastic(t) {\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  easeInBack(t) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n  easeOutBack(t) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n  easeInOutBack(t) {\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  easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n  easeOutBounce(t) {\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  easeInOutBounce: t => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 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 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}\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}\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}\nconst map = {\n  x: 'dark',\n  Z: 'light',\n  Y: 're',\n  X: 'blu',\n  W: 'gr',\n  V: 'medium',\n  U: 'slate',\n  A: 'ee',\n  T: 'ol',\n  S: 'or',\n  B: 'ra',\n  C: 'lateg',\n  D: 'ights',\n  R: 'in',\n  Q: 'turquois',\n  E: 'hi',\n  P: 'ro',\n  O: 'al',\n  N: 'le',\n  M: 'de',\n  L: 'yello',\n  F: 'en',\n  K: 'ch',\n  G: 'arks',\n  H: 'ea',\n  I: 'ightg',\n  J: 'wh'\n};\nconst names$1 = {\n  OiceXe: 'f0f8ff',\n  antiquewEte: 'faebd7',\n  aqua: 'ffff',\n  aquamarRe: '7fffd4',\n  azuY: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '0',\n  blanKedOmond: 'ffebcd',\n  Xe: 'ff',\n  XeviTet: '8a2be2',\n  bPwn: 'a52a2a',\n  burlywood: 'deb887',\n  caMtXe: '5f9ea0',\n  KartYuse: '7fff00',\n  KocTate: 'd2691e',\n  cSO: 'ff7f50',\n  cSnflowerXe: '6495ed',\n  cSnsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: 'ffff',\n  xXe: '8b',\n  xcyan: '8b8b',\n  xgTMnPd: 'b8860b',\n  xWay: 'a9a9a9',\n  xgYF: '6400',\n  xgYy: 'a9a9a9',\n  xkhaki: 'bdb76b',\n  xmagFta: '8b008b',\n  xTivegYF: '556b2f',\n  xSange: 'ff8c00',\n  xScEd: '9932cc',\n  xYd: '8b0000',\n  xsOmon: 'e9967a',\n  xsHgYF: '8fbc8f',\n  xUXe: '483d8b',\n  xUWay: '2f4f4f',\n  xUgYy: '2f4f4f',\n  xQe: 'ced1',\n  xviTet: '9400d3',\n  dAppRk: 'ff1493',\n  dApskyXe: 'bfff',\n  dimWay: '696969',\n  dimgYy: '696969',\n  dodgerXe: '1e90ff',\n  fiYbrick: 'b22222',\n  flSOwEte: 'fffaf0',\n  foYstWAn: '228b22',\n  fuKsia: 'ff00ff',\n  gaRsbSo: 'dcdcdc',\n  ghostwEte: 'f8f8ff',\n  gTd: 'ffd700',\n  gTMnPd: 'daa520',\n  Way: '808080',\n  gYF: '8000',\n  gYFLw: 'adff2f',\n  gYy: '808080',\n  honeyMw: 'f0fff0',\n  hotpRk: 'ff69b4',\n  RdianYd: 'cd5c5c',\n  Rdigo: '4b0082',\n  ivSy: 'fffff0',\n  khaki: 'f0e68c',\n  lavFMr: 'e6e6fa',\n  lavFMrXsh: 'fff0f5',\n  lawngYF: '7cfc00',\n  NmoncEffon: 'fffacd',\n  ZXe: 'add8e6',\n  ZcSO: 'f08080',\n  Zcyan: 'e0ffff',\n  ZgTMnPdLw: 'fafad2',\n  ZWay: 'd3d3d3',\n  ZgYF: '90ee90',\n  ZgYy: 'd3d3d3',\n  ZpRk: 'ffb6c1',\n  ZsOmon: 'ffa07a',\n  ZsHgYF: '20b2aa',\n  ZskyXe: '87cefa',\n  ZUWay: '778899',\n  ZUgYy: '778899',\n  ZstAlXe: 'b0c4de',\n  ZLw: 'ffffe0',\n  lime: 'ff00',\n  limegYF: '32cd32',\n  lRF: 'faf0e6',\n  magFta: 'ff00ff',\n  maPon: '800000',\n  VaquamarRe: '66cdaa',\n  VXe: 'cd',\n  VScEd: 'ba55d3',\n  VpurpN: '9370db',\n  VsHgYF: '3cb371',\n  VUXe: '7b68ee',\n  VsprRggYF: 'fa9a',\n  VQe: '48d1cc',\n  VviTetYd: 'c71585',\n  midnightXe: '191970',\n  mRtcYam: 'f5fffa',\n  mistyPse: 'ffe4e1',\n  moccasR: 'ffe4b5',\n  navajowEte: 'ffdead',\n  navy: '80',\n  Tdlace: 'fdf5e6',\n  Tive: '808000',\n  TivedBb: '6b8e23',\n  Sange: 'ffa500',\n  SangeYd: 'ff4500',\n  ScEd: 'da70d6',\n  pOegTMnPd: 'eee8aa',\n  pOegYF: '98fb98',\n  pOeQe: 'afeeee',\n  pOeviTetYd: 'db7093',\n  papayawEp: 'ffefd5',\n  pHKpuff: 'ffdab9',\n  peru: 'cd853f',\n  pRk: 'ffc0cb',\n  plum: 'dda0dd',\n  powMrXe: 'b0e0e6',\n  purpN: '800080',\n  YbeccapurpN: '663399',\n  Yd: 'ff0000',\n  Psybrown: 'bc8f8f',\n  PyOXe: '4169e1',\n  saddNbPwn: '8b4513',\n  sOmon: 'fa8072',\n  sandybPwn: 'f4a460',\n  sHgYF: '2e8b57',\n  sHshell: 'fff5ee',\n  siFna: 'a0522d',\n  silver: 'c0c0c0',\n  skyXe: '87ceeb',\n  UXe: '6a5acd',\n  UWay: '708090',\n  UgYy: '708090',\n  snow: 'fffafa',\n  sprRggYF: 'ff7f',\n  stAlXe: '4682b4',\n  tan: 'd2b48c',\n  teO: '8080',\n  tEstN: 'd8bfd8',\n  tomato: 'ff6347',\n  Qe: '40e0d0',\n  viTet: 'ee82ee',\n  JHt: 'f5deb3',\n  wEte: 'ffffff',\n  wEtesmoke: 'f5f5f5',\n  Lw: 'ffff00',\n  LwgYF: '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}\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}\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}\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}\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}\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n  return false;\n}\nfunction color(value) {\n  return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(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}\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope$1(root, scope), values);\n  }\n  return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n  constructor(_descriptors) {\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    this.describe(_descriptors);\n  }\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n  get(scope) {\n    return getScope$1(this, scope);\n  }\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope$1(this, scope);\n    const targetScopeObject = getScope$1(this, targetScope);\n    const privateName = '_' + name;\n    Object.defineProperties(scopeObject, {\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\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}\nvar defaults = 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});\n\nfunction toFontString(font) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\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}\nfunction _measureText(ctx, data, gc, longest, string) {\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}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n  ctx.save();\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i, j, jlen, thing, nestedThing;\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n    if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n  ctx.restore();\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}\nfunction _alignPixel(chart, pixel, width) {\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}\nfunction clearCanvas(canvas, ctx) {\n  ctx = ctx || canvas.getContext('2d');\n  ctx.save();\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n  drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n  let type, xOffset, yOffset, size, cornerRadius, width;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\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  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n  ctx.beginPath();\n  switch (style) {\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    ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    ctx.closePath();\n    break;\n  case 'rectRounded':\n    cornerRadius = radius * 0.516;\n    size = radius - cornerRadius;\n    xOffset = Math.cos(rad + QUARTER_PI) * size;\n    yOffset = Math.sin(rad + QUARTER_PI) * size;\n    ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n    ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n    ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n    ctx.arc(x - yOffset, 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  case 'rectRot':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    ctx.closePath();\n    break;\n  case 'crossRot':\n    rad += QUARTER_PI;\n  case 'cross':\n    xOffset = 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    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'star':\n    xOffset = 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    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    rad += QUARTER_PI;\n    xOffset = 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    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, 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) * radius, y + Math.sin(rad) * radius);\n    break;\n  }\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\nfunction _isPointInArea(point, area, margin) {\n  margin = margin || 0.5;\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}\nfunction clipArea(ctx, area) {\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}\nfunction unclipArea(ctx) {\n  ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\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}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\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}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i, line;\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n    y += font.lineHeight;\n  }\n  ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n  if (opts.strikethrough || opts.underline) {\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    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}\nfunction addRoundedRectPath(ctx, rect) {\n  const {x, y, w, h, radius} = rect;\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n  ctx.lineTo(x + w, y + radius.topRight);\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n  ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n  value = +matches[2];\n  switch (matches[3]) {\n  case 'px':\n    return value;\n  case '%':\n    value /= 100;\n    break;\n  }\n  return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\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  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\nfunction toTRBL(value) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n  const obj = toTRBL(value);\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n  return obj;\n}\nfunction toFont(options, fallback) {\n  options = options || {};\n  fallback = fallback || defaults.font;\n  let size = valueOrDefault(options.size, fallback.size);\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 = '';\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  font.string = toFontString(font);\n  return font;\n}\nfunction resolve(inputs, context, index, info) {\n  let cacheable = true;\n  let i, ilen, value;\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}\nfunction _addGrace(minmax, grace, beginAtZero) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\nfunction createContext(parentContext, context) {\n  return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n  if (!defined(fallback)) {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: rootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete target._keys;\n      delete scopes[0][prop];\n      return true;\n    },\n    get(target, prop) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n    has(target, prop) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n    set(target, prop, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value;\n      delete target._keys;\n      return true;\n    }\n  });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n  const cache = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete proxy[prop];\n      return true;\n    },\n    get(target, prop, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\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    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n    set(target, prop, value) {\n      proxy[prop] = value;\n      delete target[prop];\n      return true;\n    }\n  });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\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}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n  if (Object.prototype.hasOwnProperty.call(target, prop)) {\n    return target[prop];\n  }\n  const value = resolve();\n  target[prop] = value;\n  return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop];\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    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\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  value = value(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  if (defined(_context.index) && isIndexable(prop)) {\n    value = value[_context.index % value.length];\n  } else if (isObject(value[0])) {\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}\nfunction resolveFallback(fallback, prop, value) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\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 (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n        return fallback;\n      }\n    } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n      return null;\n    }\n  }\n  return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (defined(fallback) && 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, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\nfunction subGetTarget(resolver, prop, value) {\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    return value;\n  }\n  return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n  let value;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (defined(value)) {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\nfunction _resolve(key, scopes) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (defined(value)) {\n      return value;\n    }\n  }\n}\nfunction getKeysFromAllScopes(target) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n  const set = new Set();\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}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array(count);\n  let i, ilen, index, item;\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\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\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  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n  const fa = t * s01;\n  const fb = t * s12;\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}\nfunction monotoneAdjust(points, deltaK, mK) {\n  const pointsLen = points.length;\n  let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\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    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\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    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\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    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}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK = Array(pointsLen).fill(0);\n  const mK = Array(pointsLen);\n  let i, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\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    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\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  monotoneAdjust(points, deltaK, mK);\n  monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n  return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\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}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n  let i, ilen, point, controlPoints;\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\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  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n\nfunction _isDomSupported() {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = parent.host;\n  }\n  return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n  let valueInPixels;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n    if (styleValue.indexOf('%') !== -1) {\n      valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n  return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n  return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n  const result = {};\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}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n  const touches = e.touches;\n  const source = touches && touches.length ? touches[0] : e;\n  const {offsetX, offsetY} = source;\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}\nfunction getRelativePosition(evt, chart) {\n  if ('native' in evt) {\n    return evt;\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(evt, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\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}\nfunction getContainerSize(canvas, width, height) {\n  let maxWidth, maxHeight;\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();\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}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\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  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 ? Math.floor(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    height = round1(width / 2);\n  }\n  return {\n    width,\n    height\n  };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n  chart.height = deviceHeight / pixelRatio;\n  chart.width = deviceWidth / pixelRatio;\n  const canvas = chart.canvas;\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  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}\nconst supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() {\n        passiveSupported = true;\n        return false;\n      }\n    };\n    window.addEventListener('test', null, options);\n    window.removeEventListener('test', null, options);\n  } catch (e) {\n  }\n  return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\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}\nfunction _bezierInterpolation(p1, p2, t, mode) {\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\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\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}\nfunction formatNumber(num, locale, options) {\n  return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\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};\nconst getLeftToRightAdapter = function() {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) {\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) {\n      return x;\n    },\n  };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n  let style, original;\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n    style.setProperty('direction', direction, 'important');\n    ctx.prevTextDirection = original;\n  }\n}\nfunction restoreTextDirection(ctx, original) {\n  if (original !== undefined) {\n    delete ctx.prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\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}\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}\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  let {start, end, loop} = segment;\n  let i, ilen;\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  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\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  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\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  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n    if (point.skip) {\n      continue;\n    }\n    value = normalize(point[property]);\n    if (value === prevValue) {\n      continue;\n    }\n    inside = between(value, startBound, endBound);\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\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  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n  return result;\n}\nfunction _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\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}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n  if (loop && !spanGaps) {\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n  while (start < count && points[start].skip) {\n    start++;\n  }\n  start %= count;\n  if (loop) {\n    end += start;\n  }\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n  end %= count;\n  return {start, end};\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  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        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  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n  return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n  if (!count) {\n    return [];\n  }\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\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}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\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  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\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  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  return result;\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}\nfunction styleChanged(style, prevStyle) {\n  return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n", "/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n  _update(date = Date.now()) {\n    let remaining = 0;\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      for (; i >= 0; --i) {\n        item = items[i];\n        if (item._active) {\n          if (item._total > anims.duration) {\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n      remaining += items.length;\n    });\n    this._lastDate = date;\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\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  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\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  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  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    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  color(from, to, factor) {\n    const c0 = color(from || transparent);\n    const c1 = c0.valid && color(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};\nclass Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\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  active() {\n    return this._active;\n  }\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\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  cancel() {\n    if (this._active) {\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\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    this._active = from !== to && (loop || (elapsed < duration));\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\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    this._target[prop] = this._fn(from, to, factor);\n  }\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\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\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.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});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n  _fallback: false,\n  _indexable: false,\n  _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n  colors: {\n    type: 'color',\n    properties: colors\n  },\n  numbers: {\n    type: 'number',\n    properties: numbers\n  },\n});\ndefaults.describe('animations', {\n  _fallback: 'animation',\n});\ndefaults.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\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\n      },\n    }\n  }\n});\nclass Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n    const animatedProps = this._properties;\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      (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  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n      });\n    }\n    return animations;\n  }\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    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\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      if (animation) {\n        if (cfg && animation.active()) {\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        target[prop] = value;\n        continue;\n      }\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n  update(target, values) {\n    if (this._properties.size === 0) {\n      Object.assign(target, values);\n      return;\n    }\n    const animations = this._createAnimations(target, values);\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\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  return Promise.all(running);\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    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\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}\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  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\nfunction toClip(value) {\n  let t, r, b, l;\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  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\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  if (value === null) {\n    return;\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 (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n  return value;\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}\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\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}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\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  return null;\n}\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {});\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  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    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n  }\n}\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\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}\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}\nfunction clearStacks(meta, items) {\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\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  }\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};\nclass DatasetController {\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    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.initialize();\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  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\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  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n  reset() {\n    this._update('reset');\n  }\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  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n    if (isObject(data)) {\n      this._data = convertObjectDataToArray(data);\n    } else if (_data !== data) {\n      if (_data) {\n        unlistenArrayEvents(_data, this);\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  addElements() {\n    const meta = this._cachedMeta;\n    this._dataCheck();\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n    this._dataCheck();\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n    this._resyncElements(resetNewElements);\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n    }\n  }\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  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\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    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      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    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\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    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  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\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  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    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  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\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]\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\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  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    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\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        break;\n      }\n    }\n    if (sorted) {\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  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isNumberFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n  getMaxOverflow() {\n    return false;\n  }\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  _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  update(mode) {}\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    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\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    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\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  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    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\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    const context = () => this.getContext(index, active);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n    if (values.$shared) {\n      values.$shared = sharing;\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n    return values;\n  }\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  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\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  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  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\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      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n    if (count) {\n      this.parse(0, count);\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  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\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    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n  updateElements(element, start, count, mode) {}\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  _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  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\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  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\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}\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      return;\n    }\n    if (defined(prev)) {\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n  return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\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  if (prev === null) {\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n  if (next === null) {\n    next = curr + curr - prev;\n  }\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\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  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n  item[vScale.axis] = barEnd;\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\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}\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  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}\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\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}\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}\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n  if (edge === true) {\n    properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n    return;\n  }\n  const {start, end, reverse, top, bottom} = borderProps(properties);\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  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\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}\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\nclass BarController extends DatasetController {\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\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  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      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n  getMaxOverflow() {\n    return 0;\n  }\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    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\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    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      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      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  _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    const skipNull = (meta) => {\n      const parsed = meta.controller.getParsed(dataIndex);\n      const val = parsed && parsed[meta.vScale.axis];\n      if (isNullOrUndef(val) || isNaN(val)) {\n        return true;\n      }\n    };\n    for (const meta of metasets) {\n      if (dataIndex !== undefined && skipNull(meta)) {\n        continue;\n      }\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    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n    return stacks;\n  }\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1;\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\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    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\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      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked}, 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    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      head = base;\n    }\n    size = head - base;\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 (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\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      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      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\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    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'bar',\n  categoryPercentage: 0.8,\n  barPercentage: 0.9,\n  grouped: true,\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'base', 'width', 'height']\n    }\n  }\n};\nBarController.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\nclass BubbleController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\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  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  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  getMaxOverflow() {\n    const data = this._cachedMeta.data;\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  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\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    return {\n      label: meta.label,\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n  update(mode) {\n    const points = this._cachedMeta.data;\n    this.updateElements(points, 0, points.length, mode);\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    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      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n    return values;\n  }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'borderWidth', 'radius']\n    }\n  }\n};\nBubbleController.overrides = {\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        }\n      }\n    }\n  }\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 (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}\nclass DoughnutController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n  linkScales() {}\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\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  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\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    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    meta.total = this.calculateTotal();\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n    this.updateElements(arcs, 0, arcs.length, mode);\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  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    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\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      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\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    return total;\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  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    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n    if (!arcs) {\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    if (!arcs) {\n      return 0;\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  getMaxOffset(arcs) {\n    let max = 0;\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  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n    return ringWeightOffset;\n  }\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\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  cutout: '50%',\n  rotation: 0,\n  circumference: 360,\n  radius: '100%',\n  spacing: 0,\n  indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n  _scriptable: (name) => name !== 'spacing',\n  _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n  aspectRatio: 1,\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}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(tooltipItem) {\n          let dataLabel = tooltipItem.label;\n          const value = ': ' + tooltipItem.formattedValue;\n          if (isArray(dataLabel)) {\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n          return dataLabel;\n        }\n      }\n    }\n  }\n};\n\nclass LineController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\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    this.updateElements(points, start, count, mode);\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    let prevParsed = start > 0 && this.getParsed(start - 1);\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      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      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n  }\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  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\nLineController.id = 'line';\nLineController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  showLine: true,\n  spanGaps: false,\n};\nLineController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n    },\n    _value_: {\n      type: 'linear',\n    },\n  }\n};\n\nclass PolarAreaController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\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    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n    return range;\n  }\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    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    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\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    const defaultAngle = 360 / this.countVisibleElements();\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      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\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      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n    return count;\n  }\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.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};\nPolarAreaController.overrides = {\n  aspectRatio: 1,\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}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(context) {\n          return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\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\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n  cutout: 0,\n  rotation: 0,\n  circumference: 360,\n  radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\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    line.points = points;\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n      this.updateElement(line, undefined, properties, mode);\n    }\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\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      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  indexAxis: 'r',\n  showLine: true,\n  elements: {\n    line: {\n      fill: 'start'\n    }\n  },\n};\nRadarController.overrides = {\n  aspectRatio: 1,\n  scales: {\n    r: {\n      type: 'radialLinear',\n    }\n  }\n};\n\nclass Element {\n  constructor() {\n    this.x = undefined;\n    this.y = undefined;\n    this.active = false;\n    this.options = undefined;\n    this.$animations = undefined;\n  }\n  tooltipPosition(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n  getProps(props, final) {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      return this;\n    }\n    const ret = {};\n    props.forEach(prop => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n    });\n    return ret;\n  }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n  values(value) {\n    return isArray(value) ? value : '' + value;\n  },\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue;\n    if (ticks.length > 1) {\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      delta = calculateDelta(tickValue, ticks);\n    }\n    const logDelta = log10(Math.abs(delta));\n    const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n    return formatNumber(tickValue, locale, options);\n  },\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n    if (remain === 1 || remain === 2 || remain === 5) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n};\nfunction calculateDelta(tickValue, ticks) {\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n  display: true,\n  offset: false,\n  reverse: false,\n  beginAtZero: false,\n  bounds: 'ticks',\n  grace: 0,\n  grid: {\n    display: true,\n    lineWidth: 1,\n    drawBorder: true,\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    borderDash: [],\n    borderDashOffset: 0.0,\n    borderWidth: 1\n  },\n  title: {\n    display: false,\n    text: '',\n    padding: {\n      top: 4,\n      bottom: 4\n    }\n  },\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    callback: Ticks.formatters.values,\n    minor: {},\n    major: {},\n    align: 'center',\n    crossAlign: 'near',\n    showLabelBackdrop: false,\n    backdropColor: 'rgba(255, 255, 255, 0.75)',\n    backdropPadding: 2,\n  }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.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',\n});\ndefaults.describe('scales', {\n  _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n  _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n  _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\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  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\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}\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}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\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}\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}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\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}\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  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n  next = start;\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\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}\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n  if (len < 2) {\n    return false;\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\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;\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\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;\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\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    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\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}\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\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  return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\nfunction titleAlign(align, position, reverse) {\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\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  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\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}\nclass Scale extends Element {\n  constructor(cfg) {\n    super();\n    this.id = cfg.id;\n    this.type = cfg.type;\n    this.options = undefined;\n    this.ctx = cfg.ctx;\n    this.chart = cfg.chart;\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._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.maxWidth = undefined;\n    this.maxHeight = undefined;\n    this.paddingTop = undefined;\n    this.paddingBottom = undefined;\n    this.paddingLeft = undefined;\n    this.paddingRight = undefined;\n    this.axis = undefined;\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    this.ticks = [];\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    this._startPixel = undefined;\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  init(options) {\n    this.options = options.setContext(this.getContext());\n    this.axis = options.axis;\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  parse(raw, index) {\n    return raw;\n  }\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: isNumberFinite(_userMin),\n      maxDefined: isNumberFinite(_userMax)\n    };\n  }\n  getMinMax(canStack) {\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n    if (minDefined && maxDefined) {\n      return {min, max};\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    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\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  getTicks() {\n    return this.ticks;\n  }\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n  beforeUpdate() {\n    callback(this.options.beforeUpdate, [this]);\n  }\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n    this.beforeUpdate();\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    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\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    this.beforeBuildTicks();\n    this.ticks = this.buildTicks() || [];\n    this.afterBuildTicks();\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n    this.configure();\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation();\n    this.afterCalculateLabelRotation();\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    if (samplingEnabled) {\n      this._convertTicksToLabels(this.ticks);\n    }\n    this.beforeFit();\n    this.fit();\n    this.afterFit();\n    this.afterUpdate();\n  }\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\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  afterUpdate() {\n    callback(this.options.afterUpdate, [this]);\n  }\n  beforeSetDimensions() {\n    callback(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = 0;\n      this.bottom = this.height;\n    }\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    callback(this.options.afterSetDimensions, [this]);\n  }\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    callback(this.options[name], [this]);\n  }\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n  beforeTickToLabelConversion() {\n    callback(this.options.beforeTickToLabelConversion, [this]);\n  }\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 = callback(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    callback(this.options.afterTickToLabelConversion, [this]);\n  }\n  beforeCalculateLabelRotation() {\n    callback(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = this.ticks.length;\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\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    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    callback(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n  beforeFit() {\n    callback(this.options.beforeFit, [this]);\n  }\n  fit() {\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\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;\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\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        if (isHorizontal) {\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          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n    this._handleMargins();\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  _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    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      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      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      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\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  afterFit() {\n    callback(this.options.afterFit, [this]);\n  }\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  isFullSize() {\n    return this.options.fullSize;\n  }\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n    this.generateTickLabels(ticks);\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    this.afterTickToLabelConversion();\n  }\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\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      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n    }\n    return labelSizes;\n  }\n  _computeLabelSizes(ticks, length) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n    for (i = 0; i < length; ++i) {\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      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = label[j];\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    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\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  getLabelForValue(value) {\n    return value;\n  }\n  getPixelForValue(value, index) {\n    return NaN;\n  }\n  getValueForPixel(pixel) {}\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  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n  getBaseValue() {\n    const {min, max} = this;\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n  getContext(index) {\n    const ticks = this.ticks || [];\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  _tickSize() {\n    const optionTicks = this.options.ticks;\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\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    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n  _isVisible() {\n    const display = this.options.display;\n    if (display !== 'auto') {\n      return !!display;\n    }\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position} = 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    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 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    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      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      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\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 optsAtIndex = grid.setContext(this.getContext(i));\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = optsAtIndex.borderDash || [];\n      const borderDashOffset = optsAtIndex.borderDashOffset;\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n      lineValue = getPixelForGridLine(this, i, offset);\n      if (lineValue === undefined) {\n        continue;\n      }\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\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    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n    return items;\n  }\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    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    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\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      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      if (isHorizontal) {\n        x = pixel;\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        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          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      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n      let backdrop;\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n        let top = y + textOffset - labelPadding.top;\n        let left = x - labelPadding.left;\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        }\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        }\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n          color: optsAtIndex.backdropColor,\n        };\n      }\n      items.push({\n        rotation,\n        label,\n        font,\n        color,\n        strokeColor,\n        strokeWidth,\n        textOffset,\n        textAlign: tickTextAlign,\n        textBaseline,\n        translation: [x, y],\n        backdrop,\n      });\n    }\n    return items;\n  }\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n    let align = 'center';\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    return align;\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    let textAlign;\n    let x;\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\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        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        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        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    return {textAlign, x};\n  }\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n    const chart = this.chart;\n    const position = this.options.position;\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  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  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  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    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      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\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        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  drawBorder() {\n    const {chart, ctx, options: {grid}} = this;\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 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    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.borderWidth;\n    ctx.strokeStyle = borderOpts.borderColor;\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n    ctx.restore();\n  }\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n    if (!optionTicks.display) {\n      return;\n    }\n    const ctx = this.ctx;\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    let i, ilen;\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      const item = items[i];\n      const tickFont = item.font;\n      const label = item.label;\n      if (item.backdrop) {\n        ctx.fillStyle = item.backdrop.color;\n        ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n      }\n      let y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, item);\n    }\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n    if (!title.display) {\n      return;\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    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    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\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  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\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    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\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: gz + 1,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\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  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n\nclass 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  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n    if (isIChartComponent(proto)) {\n      parentScope = this.register(proto);\n    }\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n    if (id in items) {\n      return scope;\n    }\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n    return scope;\n  }\n  get(id) {\n    return this.items[id];\n  }\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n    if (id in items) {\n      delete items[id];\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}\nfunction registerDefaults(item, scope, parentScope) {\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n  defaults.set(scope, itemDefaults);\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\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}\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n\nclass 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    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n  add(...args) {\n    this._each('register', args);\n  }\n  remove(...args) {\n    this._each('unregister', args);\n  }\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\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        each(arg, item => {\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    callback(component['before' + camelMethod], [], component);\n    registry[method](component);\n    callback(component['after' + camelMethod], [], component);\n  }\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    return this.plugins;\n  }\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}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {data: points = []} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    if (this.options.showLine) {\n      const {dataset: line, _dataset} = meta;\n      line._chart = this.chart;\n      line._datasetIndex = this.index;\n      line._decimated = !!_dataset._decimated;\n      line.points = points;\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    }\n    this.updateElements(points, start, count, mode);\n  }\n  addElements() {\n    const {showLine} = this.options;\n    if (!this.datasetElementType && showLine) {\n      this.datasetElementType = registry.getElement('line');\n    }\n    super.addElements();\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    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      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      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const data = meta.data || [];\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    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\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}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  showLine: false,\n  fill: false\n};\nScatterController.overrides = {\n  interaction: {\n    mode: 'point'\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(item) {\n          return '(' + item.label + ', ' + item.formattedValue + ')';\n        }\n      }\n    }\n  },\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n  constructor(options) {\n    this.options = options || {};\n  }\n  init(chartOptions) {}\n  formats() {\n    return abstract();\n  }\n  parse(value, format) {\n    return abstract();\n  }\n  format(timestamp, format) {\n    return abstract();\n  }\n  add(timestamp, amount, unit) {\n    return abstract();\n  }\n  diff(a, b, unit) {\n    return abstract();\n  }\n  startOf(timestamp, unit, weekday) {\n    return abstract();\n  }\n  endOf(timestamp, unit) {\n    return abstract();\n  }\n}\nDateAdapter.override = function(members) {\n  Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n  _date: DateAdapter\n};\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      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  return {lo: 0, hi: data.length - 1};\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}\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\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}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\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  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\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    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return 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  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\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      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\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  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\nvar Interaction = {\n  evaluateInteractionItems,\n  modes: {\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\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      if (!items.length) {\n        return [];\n      }\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n      return elements;\n    },\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      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      return items;\n    },\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    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    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\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\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\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}\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\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}\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}\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}\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  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}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\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}\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n  if (!isObject(pos)) {\n    if (layout.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  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\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  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\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}\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\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  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\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    refit |= same && refitBoxes.length;\n    changed = changed || other;\n    if (!box.fullSize) {\n      refitBoxes.push(layout);\n    }\n  }\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\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}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\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  chartArea.x = x;\n  chartArea.y = y;\n}\ndefaults.set('layout', {\n  autoPadding: true,\n  padding: {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  }\n});\nvar layouts = {\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n    chart.boxes.push(item);\n  },\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  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\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    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\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    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n    handleMaxPadding(chartArea);\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\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    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\nclass BasePlatform {\n  acquireContext(canvas, aspectRatio) {}\n  releaseContext(context) {\n    return false;\n  }\n  addEventListener(chart, type, listener) {}\n  removeEventListener(chart, type, listener) {}\n  getDevicePixelRatio() {\n    return 1;\n  }\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  isAttached(canvas) {\n    return true;\n  }\n  updateConfig(config) {\n  }\n}\n\nclass BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n\nconst EXPANDO_KEY = '$chartjs';\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};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\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  style.display = style.display || 'block';\n  style.boxSizing = style.boxSizing || 'border-box';\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\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  return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n  node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n  chart.canvas.removeEventListener(type, listener, eventListenerOptions);\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}\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\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}\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}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\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}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\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      listener();\n    }\n  }, window);\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n  return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart, (args) => {\n    const event = args[0];\n    return [event, event.offsetX, event.offsetY];\n  });\n  addListener(canvas, type, proxy);\n  return proxy;\n}\nclass DomPlatform extends BasePlatform {\n  acquireContext(canvas, aspectRatio) {\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n    if (context && context.canvas === canvas) {\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n    return null;\n  }\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\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    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n    canvas.width = canvas.width;\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n  addEventListener(chart, type, listener) {\n    this.removeEventListener(chart, type);\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  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n    if (!proxy) {\n      return;\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  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n  isAttached(canvas) {\n    const container = _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n\nfunction _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nclass PluginService {\n  constructor() {\n    this._init = [];\n  }\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    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\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 (callback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n    return true;\n  }\n  invalidate() {\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n    const descriptors = this._cache = this._createDescriptors(chart);\n    this._notifyStateChanges(chart);\n    return descriptors;\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    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\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}\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  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n      localIds[plugin.id] = true;\n    }\n  }\n  return {plugins, localIds};\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}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n  const result = [];\n  const context = chart.getContext();\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  return result;\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    scopes.push(plugin.defaults);\n  }\n  return config.createResolver(scopes, context, [''], {\n    scriptable: false,\n    indexable: false,\n    allKeys: true\n  });\n}\n\nfunction 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}\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}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\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}\nfunction determineAxis(id, scaleOptions) {\n  if (id === 'x' || id === 'y') {\n    return id;\n  }\n  return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\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 firstIDs = Object.create(null);\n  const scales = Object.create(null);\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);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    firstIDs[axis] = firstIDs[axis] || id;\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\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'] || firstIDs[axis] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n  return scales;\n}\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n  initOptions(config);\n  return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\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}\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\nclass Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n  get platform() {\n    return this._config.platform;\n  }\n  get type() {\n    return this._config.type;\n  }\n  set type(type) {\n    this._config.type = type;\n  }\n  get data() {\n    return this._config.data;\n  }\n  set data(data) {\n    this._config.data = initData(data);\n  }\n  get options() {\n    return this._config.options;\n  }\n  set options(options) {\n    this._config.options = options;\n  }\n  get plugins() {\n    return this._config.plugins;\n  }\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\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  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  _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  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    const scopes = new Set();\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    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  chartOptionScopes() {\n    const {options, type} = this;\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {},\n      {type},\n      defaults,\n      descriptors\n    ];\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      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\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}\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}\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\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\nvar version = \"3.9.1\";\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}\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}\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  chart.notifyPlugins('afterRender');\n  callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    item = item[0];\n  }\n  if (item && item.canvas) {\n    item = item.canvas;\n  }\n  return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\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}\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}\nclass Chart {\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    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\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    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\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    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    instances[this.id] = this;\n    if (!context || !canvas) {\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      return aspectRatio;\n    }\n    if (maintainAspectRatio && _aspectRatio) {\n      return _aspectRatio;\n    }\n    return height ? width / height : null;\n  }\n  get data() {\n    return this.config.data;\n  }\n  set data(data) {\n    this.config.data = data;\n  }\n  get options() {\n    return this._options;\n  }\n  set options(options) {\n    this.config.options = options;\n  }\n  _initialize() {\n    this.notifyPlugins('beforeInit');\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n    this.bindEvents();\n    this.notifyPlugins('afterInit');\n    return this;\n  }\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\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    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n    this.notifyPlugins('resize', {size: newSize});\n    callback(options.onResize, [this, newSize], this);\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        this.render();\n      }\n    }\n  }\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\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    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    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      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\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      scale.init(scaleOptions, options);\n    });\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\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  _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  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n    this._removeUnreferencedMetasets();\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      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      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.prototype, {\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    this._updateMetasets();\n    return newControllers;\n  }\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n  update(mode) {\n    const config = this.config;\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n    this._plugins.invalidate();\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    const newControllers = this.buildOrUpdateControllers();\n    this.notifyPlugins('beforeElementsUpdate');\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      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    if (!animsDisabled) {\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n    this._updateDatasets(mode);\n    this.notifyPlugins('afterUpdate', {mode});\n    this._layers.sort(compare2Level('z', '_idx'));\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    this.render();\n  }\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\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    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      this.unbindEvents();\n      this.bindEvents();\n    }\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  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\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    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  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n    layouts.update(this, this.width, this.height, minPadding);\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        return;\n      }\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n    this.notifyPlugins('afterLayout');\n  }\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\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    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n    meta.controller._update(mode);\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\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  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    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\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    this._drawDatasets();\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this.notifyPlugins('afterDraw');\n  }\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\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    return result;\n  }\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = this.chartArea;\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\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    meta.controller.draw();\n    if (useClip) {\n      unclipArea(ctx);\n    }\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\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    return [];\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    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\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    return meta;\n  }\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n    const meta = this.getDatasetMeta(datasetIndex);\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\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    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\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  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n    this._stop();\n    this.config.clearCache();\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    this.notifyPlugins('destroy');\n    delete instances[this.id];\n    this.notifyPlugins('afterDestroy');\n  }\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n    each(this.options.events, (type) => _add(type, listener));\n  }\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\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    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n    let detached;\n    const attached = () => {\n      _remove('attach', attached);\n      this.attached = true;\n      this.resize();\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n    detached = () => {\n      this.attached = false;\n      _remove('resize', listener);\n      this._stop();\n      this._resize(0, 0);\n      _add('attach', attached);\n    };\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\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  getActiveElements() {\n    return this._active || [];\n  }\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      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed) {\n      this._active = active;\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\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    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\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    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n    if (changed || args.changed) {\n      this.render();\n    }\n    return this;\n  }\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\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    if (inChartArea) {\n      this._lastEvent = null;\n      callback(options.onHover, [e, active, this], this);\n      if (isClick) {\n        callback(options.onClick, [e, active, this], this);\n      }\n    }\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n    this._lastEvent = lastEvent;\n    return changed;\n  }\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n  defaults: {\n    enumerable,\n    value: defaults\n  },\n  instances: {\n    enumerable,\n    value: instances\n  },\n  overrides: {\n    enumerable,\n    value: overrides\n  },\n  registry: {\n    enumerable,\n    value: registry\n  },\n  version: {\n    enumerable,\n    value: version\n  },\n  getChart: {\n    enumerable,\n    value: getChart\n  },\n  register: {\n    enumerable,\n    value: (...items) => {\n      registry.add(...items);\n      invalidatePlugins();\n    }\n  },\n  unregister: {\n    enumerable,\n    value: (...items) => {\n      registry.remove(...items);\n      invalidatePlugins();\n    }\n  }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\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}\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\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  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}\nfunction rThetaToXY(r, theta, x, y) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n  let spacingOffset = 0;\n  const alpha = end - start;\n  if (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  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$1(element, innerRadius, outerRadius, endAngle - startAngle);\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n  ctx.beginPath();\n  if (circular) {\n    ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\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    const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n    ctx.lineTo(p4.x, p4.y);\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    ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\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    const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n    ctx.lineTo(p8.x, p8.y);\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    const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n    const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerStartX, outerStartY);\n    const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n    const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerEndX, outerEndY);\n  }\n  ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + circumference % TAU;\n      if (circumference % TAU === 0) {\n        endAngle += TAU;\n      }\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.fill();\n  return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n  const {x, y, startAngle, pixelMargin, fullCircles} = element;\n  const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n  const innerRadius = element.innerRadius + pixelMargin;\n  let i;\n  if (inner) {\n    clipArc(ctx, element, startAngle + TAU);\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n  const {options} = element;\n  const {borderWidth, borderJoinStyle} = options;\n  const inner = options.borderAlign === 'inner';\n  if (!borderWidth) {\n    return;\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  if (element.fullCircles) {\n    drawFullCircleBorders(ctx, element, inner);\n  }\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.stroke();\n}\nclass ArcElement extends Element {\n  constructor(cfg) {\n    super();\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    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(chartX, chartY, useFinalPosition) {\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 / 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    return (betweenAngles && withinRadius);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference',\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  tooltipPosition(useFinalPosition) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n  draw(ctx) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 2;\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    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n    ctx.save();\n    let radiusOffset = 0;\n    if (offset) {\n      radiusOffset = offset / 2;\n      const halfAngle = (this.startAngle + this.endAngle) / 2;\n      ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n      if (this.circumference >= PI) {\n        radiusOffset = offset;\n      }\n    }\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n    drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n    ctx.restore();\n  }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n  borderAlign: 'center',\n  borderColor: '#fff',\n  borderJoinStyle: undefined,\n  borderRadius: 0,\n  borderWidth: 2,\n  offset: 0,\n  spacing: 0,\n  angle: undefined,\n  circular: true,\n};\nArcElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor'\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}\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n  return lineTo;\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  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\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  let {move = true, reverse} = params || {};\n  let i, point, prev;\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n    if (point.skip) {\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    prev = point;\n  }\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n  return !!loop;\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  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n    if (point.skip) {\n      continue;\n    }\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      ctx.lineTo(x, y);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    lastY = y;\n  }\n  drawX();\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}\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n  return _pointInLine;\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}\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\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}\nconst usePath2D = typeof Path2D === 'function';\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}\nclass LineElement extends Element {\n  constructor(cfg) {\n    super();\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    if (cfg) {\n      Object.assign(this, cfg);\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  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n  get points() {\n    return this._points;\n  }\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\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  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    if (!segments.length) {\n      return;\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  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n    start = start || 0;\n    count = count || (this.points.length - start);\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n    if (points.length && options.borderWidth) {\n      ctx.save();\n      draw(ctx, this, start, count);\n      ctx.restore();\n    }\n    if (this.animated) {\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\nLineElement.id = 'line';\nLineElement.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};\nLineElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n  _scriptable: true,\n  _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\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  inXRange(mouseX, useFinalPosition) {\n    return inRange$1(this, mouseX, 'x', useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange$1(this, mouseY, 'y', useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  size(options) {\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  draw(ctx, area) {\n    const options = this.options;\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\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  getRange() {\n    const options = this.options || {};\n    return options.radius + options.hitRadius;\n  }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n  borderWidth: 1,\n  hitRadius: 1,\n  hoverBorderWidth: 1,\n  hoverRadius: 4,\n  pointStyle: 'circle',\n  radius: 3,\n  rotation: 0\n};\nPointElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n  let left, right, top, bottom, half;\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  return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\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}\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  const enableBorder = enableBorderRadius || isObject(value);\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}\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  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}\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  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\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}\nclass BarElement extends Element {\n  constructor(cfg) {\n    super();\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    if (cfg) {\n      Object.assign(this, cfg);\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    ctx.save();\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    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n    ctx.restore();\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = 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  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n  borderSkipped: 'start',\n  borderWidth: 0,\n  borderRadius: 0,\n  inflateAmount: 'auto',\n  pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  const samples = options.samples || availableWidth;\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n  const decimated = [];\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n  decimated[sampledIndex++] = data[a];\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\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    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\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    maxArea = area = -1;\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      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n  decimated[sampledIndex++] = data[endIndex];\n  return decimated;\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  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\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    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      const lastIndex = i - 1;\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\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      if (i > 0 && lastIndex !== startIndex) {\n        decimated.push(data[lastIndex]);\n      }\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n  return decimated;\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', {value: data});\n  }\n}\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n  let start = 0;\n  let count;\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\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  return {start, count};\n}\nvar plugin_decimation = {\n  id: 'decimation',\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      cleanDecimatedData(chart);\n      return;\n    }\n    const availableWidth = chart.width;\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      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        return;\n      }\n      if (!meta.controller.supportsDecimation) {\n        return;\n      }\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        return;\n      }\n      if (chart.options.parsing) {\n        return;\n      }\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n      if (isNullOrUndef(_data)) {\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      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      dataset._decimated = decimated;\n    });\n  },\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n\nfunction _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n    if (!target.segments) {\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n    const targetSegments = _boundSegments(target, bounds);\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      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}\nfunction _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\nfunction _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}\nfunction _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}\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\nfunction _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n  if (isArray(boundary)) {\n    _loop = true;\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\nfunction _shouldApplyFill(source) {\n  return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n  if (!propagate) {\n    return fill;\n  }\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isNumberFinite(fill)) {\n      return fill;\n    }\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n    if (target.visible) {\n      return fill;\n    }\n    visited.push(fill);\n    fill = target.fill;\n  }\n  return false;\n}\nfunction _decodeFill(line, index, count) {\n  const fill = parseFillOption(line);\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n  let target = parseFloat(fill);\n  if (isNumberFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n  return target;\n}\nfunction _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    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n  let value;\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    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n  if (fill === false || fill === null) {\n    return false;\n  }\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n\nfunction _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  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}\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\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}\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    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\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\nclass simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\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  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\nfunction _getTarget(source) {\n  const {chart, fill, line} = source;\n  if (isNumberFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n  if (fill === 'shape') {\n    return true;\n  }\n  const boundary = computeBoundary(source);\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n  return _createBoundaryLine(boundary, line);\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}\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n  if (isNumberFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n  return null;\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  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  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\nfunction _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}\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n  ctx.save();\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  ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\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  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n    ctx.beginPath();\n    const lineLoop = !!line.pathSegment(ctx, src);\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\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    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n    ctx.restore();\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}\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\nvar index = {\n  id: 'filler',\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\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      meta.$filler = source;\n      sources.push(source);\n    }\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n      source.fill = _resolveTarget(sources, i, options.propagate);\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      source.line.updateControlPoints(area, source.axis);\n      if (draw && source.fill) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (_shouldApplyFill(source)) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n    if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n  }\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n  constructor(config) {\n    super();\n    this._added = false;\n    this.legendHitBoxes = [];\n    this._hoveredItem = null;\n    this.doughnutMode = false;\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  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\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  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n    this.legendItems = legendItems;\n  }\n  fit() {\n    const {options, ctx} = this;\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\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    let width, height;\n    ctx.font = labelFont.string;\n    if (this.isHorizontal()) {\n      width = this.maxWidth;\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight;\n      width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    }\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\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      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      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n    return totalHeight;\n  }\n  _fitCols(titleHeight, fontSize, 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    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n    let left = 0;\n    let col = 0;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight});\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight});\n    return totalWidth;\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  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n      this._draw();\n      unclipArea(ctx);\n    }\n  }\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 {color: fontColor, padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n    this.drawTitle();\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n      ctx.save();\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      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n      if (labelOpts.usePointStyle) {\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        drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n      } else {\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n        ctx.beginPath();\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        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n      ctx.restore();\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    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    overrideTextDirection(this.ctx, opts.textDirection);\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor || fontColor;\n      ctx.fillStyle = legendItem.fontColor || fontColor;\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      rtlHelper.setWidth(this.width);\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      const realX = rtlHelper.x(x);\n      drawLegendBox(realX, y, legendItem);\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n      fillText(rtlHelper.x(x), y, legendItem);\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\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    if (!titleOpts.display) {\n      return;\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    let left = this.left;\n    let maxWidth = this.width;\n    if (this.isHorizontal()) {\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\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    const x = _alignStartEnd(position, left, left + maxWidth);\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    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\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  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          return this.legendItems[i];\n        }\n      }\n    }\n    return null;\n  }\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        callback(opts.onLeave, [e, previous, this], this);\n      }\n      this._hoveredItem = hoveredItem;\n      if (hoveredItem && !sameItem) {\n        callback(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      callback(opts.onClick, [e, hoveredItem, this], this);\n    }\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}\nvar plugin_legend = {\n  id: 'legend',\n  _element: Legend,\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  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\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    onHover: null,\n    onLeave: null,\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\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: 0,\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n\nclass Title extends Element {\n  constructor(config) {\n    super();\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  update(maxWidth, maxHeight) {\n    const opts = this.options;\n    this.left = 0;\n    this.top = 0;\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\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    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\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    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  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    if (!opts.display) {\n      return;\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    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}\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\nvar plugin_title = {\n  id: 'title',\n  _element: Title,\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\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\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n  id: 'subtitle',\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\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\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst positioners = {\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n    let i, len;\n    let x = 0;\n    let y = 0;\n    let count = 0;\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        x += pos.x;\n        y += pos.y;\n        ++count;\n      }\n    }\n    return {\n      x: x / count,\n      y: y / count\n    };\n  },\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\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        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n    return {\n      x,\n      y\n    };\n  }\n};\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n  return base;\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}\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  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}\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  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\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  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    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  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n  ctx.save();\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\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  widthPadding = 0;\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n  ctx.restore();\n  width += padding.width;\n  return {width, height};\n}\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\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  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\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  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  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n  return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\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}\nfunction alignY(size, yAlign, paddingAndSize) {\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}\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  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\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  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\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}\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\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}\nclass Tooltip extends Element {\n  constructor(config) {\n    super();\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 || config._chart;\n    this._chart = this.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    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n    if (cached) {\n      return cached;\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    return animations;\n  }\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n  getTitle(context, options) {\n    const {callbacks} = options;\n    const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n    const title = callbacks.title.apply(this, [context]);\n    const afterTitle = callbacks.afterTitle.apply(this, [context]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n    return lines;\n  }\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n  }\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\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(scoped.beforeLabel.call(this, context)));\n      pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n      bodyItems.push(bodyItem);\n    });\n    return bodyItems;\n  }\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n  }\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n    const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n    const footer = callbacks.footer.apply(this, [tooltipItems]);\n    const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n    return lines;\n  }\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    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(scoped.labelColor.call(this, context));\n      labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n      labelTextColors.push(scoped.labelTextColor.call(this, context));\n    });\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\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    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      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      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      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\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    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\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    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\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      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.titleAlign, options);\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\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;\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing;\n        }\n      }\n    }\n  }\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColors = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth, boxPadding} = 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    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2,\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.fillStyle = labelColors.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.setLineDash(labelColors.borderDash || []);\n      ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n      const borderRadius = toTRBLCorners(labelColors.borderRadius);\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        ctx.fillStyle = labelColors.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        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n    ctx.fillStyle = this.labelTextColors[i];\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    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\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    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n      lines = bodyItem.lines;\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n      each(bodyItem.after, fillLineOfText);\n    }\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing;\n  }\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n      footerFont = toFont(options.footerFont);\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\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  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    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\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    ctx.fill();\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\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  _willRender() {\n    return !!this.opacity;\n  }\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n    if (!opacity) {\n      return;\n    }\n    this._updateAnimationTarget(options);\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    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n    const padding = toPadding(options.padding);\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n      this.drawBackground(pt, ctx, tooltipSize, options);\n      overrideTextDirection(ctx, options.textDirection);\n      pt.y += padding.top;\n      this.drawTitle(pt, ctx, options);\n      this.drawBody(pt, ctx, options);\n      this.drawFooter(pt, ctx, options);\n      restoreTextDirection(ctx, options.textDirection);\n      ctx.restore();\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\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    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n    const positionChanged = this._positionChanged(active, e);\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n    if (changed) {\n      this._active = active;\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n        this.update(true, replay);\n      }\n    }\n    return changed;\n  }\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n    if (options.reverse) {\n      active.reverse();\n    }\n    return active;\n  }\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}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n      if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n        return;\n      }\n      tooltip.draw(chart.ctx);\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        args.changed = true;\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: {\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          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        return '';\n      },\n      afterTitle: noop,\n      beforeBody: noop,\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        let label = tooltipItem.dataset.label || '';\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      afterBody: noop,\n      beforeFooter: noop,\n      footer: noop,\n      afterFooter: noop\n    }\n  },\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\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  additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\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};\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}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\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  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  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\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    this.min = min;\n    this.max = max;\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    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    const labels = this.getLabels();\n    if (value >= 0 && value < labels.length) {\n      return labels[value];\n    }\n    return value;\n  }\n  configure() {\n    super.configure();\n    if (!this.isHorizontal()) {\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\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  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n  getBasePixel() {\n    return this.bottom;\n  }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n  ticks: {\n    callback: CategoryScale.prototype.getLabelForValue\n  }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n  const ticks = [];\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  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n  if (!isNullOrUndef(precision)) {\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\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  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\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    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    numSpaces = (niceMax - niceMin) / spacing;\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\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  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n      if (niceMin < min) {\n        j++;\n      }\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  for (; j < numSpaces; ++j) {\n    ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n  }\n  if (maxDefined && includeBounds && niceMax !== 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  return ticks;\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}\nclass LinearScaleBase extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n    return +raw;\n  }\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n    if (min === max) {\n      let offset = 1;\n      if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n        offset = Math.abs(max * 0.05);\n      }\n      setMax(max + offset);\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\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    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n    return maxTicks;\n  }\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\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$1(numericGeneratorOptions, dataRange);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n    super.configure();\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  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n\nclass LinearScale extends LinearScaleBase {\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? min : 0;\n    this.max = isNumberFinite(max) ? max : 1;\n    this.handleTickRangeOptions();\n  }\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  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.numeric\n  }\n};\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n  return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n  const endExp = Math.floor(log10(dataRange.max));\n  const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n  const ticks = [];\n  let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n  let exp = Math.floor(log10(tickVal));\n  let significand = Math.floor(tickVal / Math.pow(10, exp));\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  do {\n    ticks.push({value: tickVal, major: isMajor(tickVal)});\n    ++significand;\n    if (significand === 10) {\n      significand = 1;\n      ++exp;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n  } while (exp < endExp || (exp === endExp && significand < endSignificand));\n  const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n  ticks.push({value: lastTick, major: isMajor(tickVal)});\n  return ticks;\n}\nclass LogarithmicScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._valueRange = 0;\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 isNumberFinite(value) && value > 0 ? value : null;\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n    this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n    this.handleTickRangeOptions();\n  }\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n    if (min === max) {\n      if (min <= 0) {\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(exp(min, -1));\n        setMax(exp(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(exp(max, -1));\n    }\n    if (max <= 0) {\n      setMax(exp(min, +1));\n    }\n    if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n      setMin(exp(min, -1));\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n  configure() {\n    const start = this.min;\n    super.configure();\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\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  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.logarithmic,\n    major: {\n      enabled: true\n    }\n  }\n};\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\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}\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}\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  return {\n    start: pos,\n    end: pos + size\n  };\n}\nfunction fitWithPointLabels(scale) {\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  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    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  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\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}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const extra = getTickBackdropHeight(opts) / 2;\n  const outerDistance = scale.drawingArea;\n  const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n    const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n    const size = labelSizes[i];\n    const y = yForAngle(pointLabelPosition.y, size.h, angle);\n    const textAlign = getTextAlignForAngle(angle);\n    const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n    items.push({\n      x: pointLabelPosition.x,\n      y,\n      textAlign,\n      left,\n      top: y,\n      right: left + size.w,\n      bottom: y + size.h\n    });\n  }\n  return items;\n}\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n  return 'right';\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}\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}\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n    const {backdropColor} = optsAtIndex;\n    if (!isNullOrUndef(backdropColor)) {\n      const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n      const padding = toPadding(optsAtIndex.backdropPadding);\n      ctx.fillStyle = backdropColor;\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      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    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}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n  const {color, lineWidth} = gridLineOpts;\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(gridLineOpts.borderDash);\n  ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\nclass RadialLinearScale extends LinearScaleBase {\n  constructor(cfg) {\n    super(cfg);\n    this.xCenter = undefined;\n    this.yCenter = undefined;\n    this.drawingArea = undefined;\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n  setDimensions() {\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  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n    this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n  fit() {\n    const opts = this.options;\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\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  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\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  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\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  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\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  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  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid} = opts;\n    const labelCount = this._pointLabels.length;\n    let i, offset, position;\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const optsAtIndex = grid.setContext(this.getContext(index - 1));\n          drawRadiusLine(this, optsAtIndex, offset, labelCount);\n        }\n      });\n    }\n    if (angleLines.display) {\n      ctx.save();\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n        if (!lineWidth || !color) {\n          continue;\n        }\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\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      ctx.restore();\n    }\n  }\n  drawBorder() {}\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    if (!tickOpts.display) {\n      return;\n    }\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n    this.ticks.forEach((tick, index) => {\n      if (index === 0 && !opts.reverse) {\n        return;\n      }\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\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      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n      });\n    });\n    ctx.restore();\n  }\n  drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n  display: true,\n  animate: true,\n  position: 'chartArea',\n  angleLines: {\n    display: true,\n    lineWidth: 1,\n    borderDash: [],\n    borderDashOffset: 0.0\n  },\n  grid: {\n    circular: false\n  },\n  startAngle: 0,\n  ticks: {\n    showLabelBackdrop: true,\n    callback: Ticks.formatters.numeric\n  },\n  pointLabels: {\n    backdropColor: undefined,\n    backdropPadding: 2,\n    display: true,\n    font: {\n      size: 10\n    },\n    callback(label) {\n      return label;\n    },\n    padding: 5,\n    centerPointLabels: false\n  }\n};\nRadialLinearScale.defaultRoutes = {\n  'angleLines.color': 'borderColor',\n  'pointLabels.color': 'color',\n  'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n  angleLines: {\n    _fallback: 'grid'\n  }\n};\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};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n  return a - b;\n}\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n  if (!isNumberFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, parser)\n      : adapter.parse(value);\n  }\n  if (value === null) {\n    return null;\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  return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\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    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n  return UNITS[ilen - 1];\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  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\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}\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}\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  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}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n  constructor(props) {\n    super(props);\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n    this._unit = 'day';\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n  init(scaleOpts, opts) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n    adapter.init(opts);\n    mergeIf(time.displayFormats, adapter.formats());\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n    super.init(scaleOpts);\n    this._normalized = opts.normalized;\n  }\n  parse(raw, index) {\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\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    if (!minDefined || !maxDefined) {\n      _applyBounds(this._getLabelBounds());\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n    min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\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    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n    const min = this.min;\n    const max = this.max;\n    const ticks = _filterBetween(timestamps, min, max);\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    if (options.reverse) {\n      ticks.reverse();\n    }\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n  afterAutoSkip() {\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n  initOffsets(timestamps) {\n    let start = 0;\n    let end = 0;\n    let first, last;\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    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\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    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(timeOpts.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    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\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    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    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n    return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n  }\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\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    const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n    const formatter = options.ticks.callback;\n    return formatter ? callback(formatter, [label, index, ticks], this) : label;\n  }\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\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  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\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  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  _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    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\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    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const metas = this.getMatchingVisibleMetas();\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n    return (this._cache.data = this.normalize(timestamps));\n  }\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\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    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n  normalize(values) {\n    return _arrayUnique(values.sort(sorter));\n  }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n  bounds: 'data',\n  adapters: {},\n  time: {\n    parser: false,\n    unit: false,\n    round: false,\n    isoWeekday: false,\n    minUnit: 'millisecond',\n    displayFormats: {}\n  },\n  ticks: {\n    source: 'auto',\n    major: {\n      enabled: false\n    }\n  }\n};\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  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n  constructor(props) {\n    super(props);\n    this._table = [];\n    this._minPos = undefined;\n    this._tableRange = undefined;\n  }\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  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\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    if (items.length < 2) {\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\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      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n    return timestamps;\n  }\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\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}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n", "import {Chart, registerables} from '../dist/chart.mjs';\n\nChart.register(...registerables);\n\nexport default Chart;\n", "import ApplicationController from './application_controller'\nimport Sortable from \"sortablejs\"\n\n\nexport default class extends ApplicationController {\n\n  static values = {\n    init: String\n  }\n\n  static targets = [\"questionPosition\", \"answerPosition\"]\n  \n  initialize() {\n    super.initialize();\n\n    this.initializers = {\n      answers: this.initializeAnswers,\n      questions: this.initializeQuestions\n    }\n  }\n\n  connect() {\n    super.connect()\n    const self = this\n    /// call the configured initializers\n    let initMethods = this.initValue.split(\" \");\n    initMethods.forEach(function (initializer, index) {\n      self.initializers[initializer].bind(self)()\n    })\n  \n\n  }\n\n  initializeAnswers() {\n    const self = this;\n    this.sortable = Sortable.create(this.element, {\n      animation: 150,\n      handle: '.drag-handler',\n      onEnd: self.answersEnd.bind(self)\n    })\n  }\n\n  initializeQuestions() {\n    console.log(\"initialize Questions...\")\n    const self = this;\n    this.sortable = Sortable.create(this.element, {\n      animation: 150,\n      handle: '.drag-handler',\n      onEnd: self.questionsEnd.bind(self)\n    })\n\n  }\n\n  ///\n  // called when sort of answers has been ended\n  ///\n  answersEnd(event) {\n    console.log(\"ended answer sort\")\n    console.log(\"this: \", event.newIndex)\n    if(this.hasAnswerPositionTarget) {\n      $(this.answerPositionTargets).each((index, positionField) => {\n          $(positionField).val(index)\n      })\n    }\n  }\n\n  ///\n  // called when sort of answers has been ended\n  ///\n  questionsEnd(event) {\n    console.log(\"ended questions sort\")\n    console.log(\"item: \", event.item)\n    console.log(\"new Index: \", event.newIndex)\n    // $(event.item).find('.question-position').val(event.newIndex)\n    if(this.hasQuestionPositionTarget) {\n      $(this.questionPositionTargets).each((index, positionField) => {\n        $(positionField).val(index)\n      })\n    }\n  }\n\n}\n", "// import { create } from 'sortablejs'\nimport ApplicationController from './application_controller'\nimport { DirectUpload } from 'activestorage'\n\nclass Ajax {\n  constructor(url) {\n    this.url = url\n  }\n\n  async doAjax(method, args) {\n\n    let result\n\n    try {\n      result = await $.ajax({\n        url: this.url,\n        method: method,\n        data: args\n      })\n\n      return result\n    } catch (error) {\n      console.error(error)\n    }\n  }\n}\n\nexport default class extends ApplicationController {\n\n  initialize() {\n    super.initialize()\n    this.useReflex = true\n    this.assetsUrl = \"/media-library/render_asset\"\n    this.directUploadUrl = \"/active_storage/intercepted_uploads\"\n    // this.directUploadUrl = \"/rails/active_storage/direct_uploads\"\n  }\n  \n  connect() {\n    super.connect()\n    // find form, if there is one <-- we have to react on a form submit to be able to send images at latest possible time\n    this.dropZone = $(this.element)\n    console.log(\"this.dropZone: \", this.dropZone)\n    // this.form = this.dropZone.closest('form')\n    // if(this.form.length) {\n    //   this.form.on('submit', this.directImageUpload.bind($, this.dropZone));\n    // }\n    this.attributeName = $(this.element).data(\"attribute-name\")\n    // console.log(\"this.attributeName: \", this.attributeName)\n    //\n  this.dropZone.on('input', '#media_library_entry_name', function(event) {\n    console.log('Input event detected:', event.target.value);\n    const form = $(event.target).closest('form');\n    form.find('div.media-library-upload').removeClass('invisible');\n  });\n  }\n\n  disconnect() {\n    // Remove the event listener when the controller disconnects from the element\n    // this.form.off('submit');\n    super.disconnect()\n  }\n\n  ///\n  // !!as the form would be submitted multiple, if there is more than one file input in the form, the approach of interferring the form submission, set data accordingly and then submit it from js is not a valid one!!  <-- we have to upload file data one step before, even we then might get orphaned blobs in db\n  ///\n  directImageUpload(dropZone, event) {\n    event.preventDefault();\n    console.log(\"event: \", event)\n    // Access the form element\n    const form = event.currentTarget;\n    console.log(\"form: \", form)\n\n    // Modify form data\n    const formData = new FormData(form);\n    console.log(\"formData: \", formData)\n    console.log(\"serialized: \", $(form).serializeArray())\n\n    ///\n    // takes a base64 encoded image and transforms it into a File object\n    ///\n    const base64DataToFile = function base64DataToFile(base64Data, filename) {\n      var arr = base64Data.split(',');\n      var mime = arr[0].match(/:(.*?);/)[1];\n      var bstr = atob(arr[1]);\n      var n = bstr.length;\n      var u8arr = new Uint8Array(n);\n      while (n--) {\n        u8arr[n] = bstr.charCodeAt(n);\n      }\n      return new File([u8arr], filename, { type: mime });\n    }\n\n    // const dropZone = event.data.dropZone\n    console.log(\"dropZone: \", dropZone)\n    const imageData = dropZone.find('img.result').attr('src')\n    console.log(\"we load it up, this image: \", imageData)\n    if(imageData && imageData.startsWith('data:')) {\n\n\n      const imageFile = base64DataToFile(imageData, `${this.attributeName}.png`)\n      const directUpload = new DirectUpload(imageFile, \"/rails/active_storage/direct_uploads\");\n      directUpload.create(function(error, blob) {\n        if (error) {\n          // Handle the error\n          console.log(error)\n        } else {\n          // Access the signed ID from the server response\n          const signedId = blob.signed_id;\n          console.log(\"signed id: \", signedId)\n          // Perform any other modifications to the form data\n\n          // Submit the form programmatically with the modified data\n          // fetch(form.action, {\n          //   method: form.method,\n          //   body: formData\n          // })\n          //   .then(response => {\n          //     // Handle the response as needed\n          //   })\n          //   .catch(error => {\n          //     // Handle any errors\n          //   });\n\n          // dropZone.val(signedId)\n          // event.target.submit()\n        }\n      });\n    } else {\n      event.target.submit()\n    }\n  }\n\n  ///\n  // stimulates to render the media library modal and/or opens it\n  ///\n  openModal(event) {\n    event.preventDefault();\n    // console.log(\"open modal\")\n    // const $target = $(event.currentTarget)\n    let $modal = $(`#media_library_modal_${$(this.element).data('unique-id')}`)\n    if($modal.length) {\n      // we just open the existing modal\n      // console.log(\"just open existing modal\")\n      $modal.modal('show')\n    } else {\n      let folderOptions = {}\n      const journeyId = this.find_journey_id();\n      // console.log(\"journey id: \", journeyId)\n      folderOptions['journey_id'] = journeyId\n      this.stimulate('MediaLibraryReflex#open_modal', event.currentTarget, folderOptions).then(() => {\n        $modal = $(`#media_library_modal_${$(this.element).data('unique-id')}`)\n        $modal.modal('show')\n        // console.log(\"modal opened\")\n      });\n    }\n  }\n\n  ///\n  // stimulates Reflex to set the current media folder for curent journey (rerenders the folder tab)\n  ///\n  setFolder(event) {\n    event.preventDefault();\n    const $target = $(event.currentTarget)\n    const folderName = $target.data('folder-name')\n    const fieldName = $target.data('field-name')\n    const journeyID = $target.data('journey-id')\n    const folderTabID = $target.closest('.tab-pane').attr('id')\n    // console.log(\"folder name: \", folderName)\n    // console.log(\"journey id: \", journeyID)\n    // console.log(\"folder tab id: \", folderTabID)\n    this.stimulate('MediaLibraryReflex#set_folder', event.currentTarget, { folder_name: folderName, field_name: fieldName, journey_id: journeyID, folder_tab_id: folderTabID }).then(() => {\n      const $folderDrop = $(\"#current_media_library_folder\")\n      // Check if only the empty option is selected (or none), then set the new selection\n      if ($folderDrop.find('option:selected').length === 0 || $folderDrop.find('option:selected').val() === \"\") {\n        $folderDrop.find(`option[value=\"${folderName}\"]`).prop('selected', true)\n        $folderDrop.trigger('change')\n      }\n    });\n  }\n\n  ///\n  // disposes the modal, so it must be rendered again (no artifacts in form)\n  // @info: msut be called from an element within the modal itself\n  ///\n  disposeModal(event) {\n    // const $target = $(event.currentTarget)\n    // console.log(\"this.element: \", this.element);\n    let $modal = $(this.element)\n    if($modal.length) {\n      // we dispose the existing modal\n      console.log(\"dispose modal\")\n      $modal.modal('hide')\n      $modal.remove()\n      // console.log(\"this.element (after removal): \", this.element);\n    } else {\n      console.log(\"modal not found!\")\n    }\n  }\n\n  ///\n\n  /**\n   * Handles the selection of media from the media library or an uploaded file.\n   * \n   * @param {Event} event - The event triggered by the user's action.\n   * @returns {Promise<void>} - A promise that resolves when the media selection process is complete.\n   * \n   * @description\n   * This method performs the following actions:\n   * 1. Starts the loading process.\n   * 2. Identifies the target elements and the parent modal.\n   * 3. Checks if an image element exists in the drop zone, and creates one if it doesn't.\n   * 4. Determines if the media is being selected from the library or uploaded.\n   * 5. If from the library, retrieves the signed ID and updates the drop zone image or file info.\n   * 6. If uploaded, handles base64 encoded images or file uploads, retrieves the signed ID, and updates the drop zone image or file info.\n   * 7. Sets the signed ID to the target input element.\n   * 8. If auto-send is enabled, submits the closest form and reloads the page.\n   * 9. Hides the modal, resets it, and stops the loading process.\n   * @attention page will be reloaded automatically after 800ms\n   */\n  async choose(event) {\n    this.startLoading()\n    const $target = $(event.currentTarget),\n    $targetToSend = $($target.data('target')),\n    $parent = $target.closest('.modal'),\n    self = this\n    \n    // Find existing image in the new structure (.image container or old structure)\n    let dropZoneImage = $targetToSend.closest('a').find('.image img')\n    if(dropZoneImage.length == 0) {\n      dropZoneImage = $targetToSend.parent().find('img')\n    }\n\n    if(dropZoneImage.length == 0) {\n      // Create new image with wrapper\n      const imageWrapper = $(\"<div class='image'></div>\")\n      dropZoneImage = $(\"<img src=''>\")\n      imageWrapper.append(dropZoneImage)\n      $targetToSend.closest('a').append(imageWrapper)\n      $targetToSend.closest('a').find('.upload-zone').addClass('with-preview')\n    } else {\n      // Image exists, just make sure upload-zone has with-preview class\n      $targetToSend.closest('a').find('.upload-zone').addClass('with-preview')\n    }\n    // console.log(\"target: \", $target)\n    // console.log(\"targetToSend: \", $targetToSend)\n\n    const $activePane = $parent.find('.tab-pane.show.active')\n    let signedId = null\n\n    /// using a file from media library/archive\n    if($activePane.hasClass('library-container')) {\n      const selectedThumbnail =  $activePane.find('.img-thumbnail.selected')\n      signedId = selectedThumbnail.data('signed-id')\n      // console.log(\"signed id for library: \", signedId)\n      const img = selectedThumbnail.find('img')\n      if (img.length > 0) {\n        // console.log(\"transfer image src\")\n        dropZoneImage.attr('src', selectedThumbnail.find('img').attr(\"src\"));\n      } else {\n        // console.log(\"get file info\")\n        const fileInfo = selectedThumbnail.find('.file-info').clone()\n        const uploadLink = $targetToSend.closest(\"a\")\n        uploadLink.find('i').remove()\n        uploadLink.find('.file-info').remove()\n        fileInfo.appendTo(uploadLink)\n      }\n\n    /// using an uploaded file\n    } else {\n      // console.log(\"uploading...\")\n      const $uploadContainer = $activePane.find('.upload-container')\n      const fileContainer = $uploadContainer.find('input[type=file]')\n\n      if($uploadContainer.data('base64')) { // set when we cropped the file <-- extra handling needed\n        const imageData = $uploadContainer.find('.upload-preview img').attr('src')\n        const imageFile = this.base64DatatoFile(imageData, \"custom.png\")\n        const subdomainToUse = $(this.element).data(\"subdomain-to-use\")\n        let fullUploadUrl \n        if(subdomainToUse) {\n          // console.log(\"this.subdomainToUse: \", subdomainToUse)\n          fullUploadUrl = `${this.directUploadUrl}?subdomain_to_use=${subdomainToUse}`\n        } else {\n          fullUploadUrl = this.directUploadUrl\n        }\n    \n        const directUpload = new DirectUpload(imageFile, fullUploadUrl);\n        let response = await this.promisify(directUpload)\n        signedId = response.signed_id\n        // console.log(\"signed id for base64: \", signedId)\n        dropZoneImage.attr('src', imageData);\n  \n      } else {\n        const file = fileContainer.get(0).files[0]\n        if(file) {\n          console.log(\"choosing file.....\", file)\n          var reader = new FileReader()\n          reader.onload = function(event) {\n            // console.log(\"target parent: \", $targetToSend.parent())\n            // console.log(\"drop zone image: \", dropZoneImage)\n            if (dropZoneImage.length > 0) {\n              // console.log(\"transfer image src\")\n              dropZoneImage.attr('src', event.target.result);\n            } else {\n              // console.log(\"get file info\")\n              const uploadLink = $targetToSend.closest(\"a\")\n              const fileInfo = $uploadContainer.find('.upload-preview .file-info').clone()\n              uploadLink.find('.file-info').remove()\n              uploadLink.find('i').remove()\n              fileInfo.appendTo(uploadLink)\n            }\n      \n          };\n        \n          reader.readAsDataURL(file);  \n\n          const upload = new DirectUpload(\n            file,\n            this.directUploadUrl,\n          )\n          let response = await this.promisify(upload)\n          signedId = response.signed_id\n        }\n      }\n\n    }\n\n    // console.log(\"si before send\", signedId)\n    $targetToSend.val(signedId)\n    /// if auto_send is set, find closest form and submit\n    if($targetToSend.data(\"auto-send\")) {\n      const $form = $targetToSend.closest('form')\n      // console.log(\"form: \", $form)\n      $form.submit()\n      // Reload the page after 500ms\n      setTimeout(function() {\n        location.reload();\n      }, 800);\n      // $targetToSend.get(0).dispatchEvent(new Event('change'))\n    } \n\n    $parent.modal('hide')\n    this.resetModal($parent)\n    this.stopLoading()\n  }\n\n  ///\n  // marks given media as selected\n  ///\n  selectMedia(event) {\n    let $target = $(event.currentTarget),\n    $container = $target.closest('.library-container')\n    $container.find('.selected').removeClass('selected')\n    $target.addClass('selected')\n  }\n\n  ///\n  // reads uploaded file from file input and renders preview accordingly in the dropzone (no file upload)\n  ///\n  async renderFilePreviewOnUpload(event) {\n    const self = this\n    const target = event.currentTarget,\n    $target = $(target)\n    let files = null\n    // console.log(\"target: \", $target)\n    if(target.files && target.files[0]) {\n      // normal click on element\n      files = target.files\n    } else {\n      // something was dropped in here\n      files = event.dataTransfer.files\n    }\n\n    // console.log(\"files: \", files)\n\n    if (files && files[0]) {\n      var reader = new FileReader()\n      let file = files[0],\n      $modal = $target.closest('.modal'),\n      $uploadPreview = $modal.find('.upload-preview')\n\n      reader.onload = async function (e) {\n        let next = $uploadPreview.children().first()\n        if (file.type.startsWith(\"video\")) {\n          // create video tag\n          if ($(next).is('video')) {\n            $(next).attr(\"src\", e.target.result)\n          } else {\n            $(next).remove()\n            let imageElement = document.createElement(\"video\")\n            $(imageElement).attr({\n              src: e.target.result,\n              autoplay: \"autoplay\",\n              muted: \"muted\",\n              loop: \"loop\",\n            })\n            $(imageElement).appendTo($uploadPreview)\n          }\n        } else if(file.type.startsWith('image')) {\n          // create image tag\n          if ($(next).is(\"img\")) {\n            $(next).attr(\"src\", e.target.result)\n          } else {\n            $(next).remove()\n            let imageElement = document.createElement(\"img\")\n            $(imageElement).attr(\"src\", e.target.result)\n            $(imageElement).appendTo($uploadPreview)\n          }\n        } else {\n          // for displaying whatever file type this is.\n          let fileParts = file.name.split('.'),\n          filename = fileParts[0],\n          extension = fileParts[fileParts.length - 1]\n\n          $(next).remove()\n          let asset = await new Ajax(self.assetsUrl).doAjax(\"GET\", { extension: extension, filename: filename })\n          $(asset).appendTo($uploadPreview)\n        }\n        $modal.find('.no-upload-yet').addClass('hidden')\n        const cropper = $modal.find('.preview-cropper')\n        if(cropper.length > 0) { // we have an image\n          cropper.get(0).dispatchEvent(new Event('previewRendered'))\n        }\n      }\n\n      reader.readAsDataURL(files[0])\n    }\n  }\n\n  /// !!! might be erased (original name is directUpload)\n  async directUpload(event) {\n    console.log(\"direct Upload\")\n    let $target = $(event.currentTarget),\n    signedId = $target.val()\n    let next = $target.next()\n\n    const imageSize = null; //$target.data('image-size') // <-- we do not resize uploaded image, so we can crop from original\n    const allowCrop = $target.data('allow-crop')\n    let asset = await new Ajax(this.assetsUrl).doAjax(\"GET\", { signed_id: signedId, image_size: null, allow_crop: allowCrop })\n    $(next).remove()\n    $(asset).insertAfter($target)\n  }\n\n  ///\n  // uploads file via DirectUpload (currently used in icon_upload input(IcoFileInput))\n  ///\n  async fileUpload(event) {\n    const self = this\n    const target = event.currentTarget,\n    $target = $(target)\n    let files = null\n    // console.log(\"target: \", $target)\n    if(target.files && target.files[0]) {\n      // normal click on element\n      files = target.files\n    } else {\n      // something was dropped in here\n      files = event.dataTransfer.files\n    }\n\n    // console.log(\"files: \", files)\n\n    if (files && files[0]) {\n      var reader = new FileReader()\n      let file = files[0],\n      $modal = $target.closest('.modal'),\n      $uploadPreview = $modal.find('.upload-preview')\n\n      // console.log(\"target data: \", $target.data())\n      if($target.data('direct-upload')) {\n        let $targetToSend = $($target.data('direct-upload-target'))\n        if(file) {\n          // console.log(\"uploading file.....\", file)\n          const upload = new DirectUpload(\n            file,\n            '/rails/active_storage/direct_uploads',\n          )\n          let response = await this.promisify(upload)\n          let signedId = response.signed_id\n          if($targetToSend) {\n            // console.log(`signed id: ${signedId}`)\n            $targetToSend.val(signedId)\n            $targetToSend.get(0).dispatchEvent(new Event('change'))\n          }\n        }\n      }\n\n      reader.onload = async function (e) {\n        let next = $uploadPreview.children().first()\n        if (file.type.startsWith(\"video\")) {\n          // create video tag\n          if ($(next).is('video')) {\n            $(next).attr(\"src\", e.target.result)\n          } else {\n            $(next).remove()\n            let imageElement = document.createElement(\"video\")\n            $(imageElement).attr({\n              src: e.target.result,\n              autoplay: \"autoplay\",\n              muted: \"muted\",\n              loop: \"loop\",\n            })\n            $(imageElement).appendTo($uploadPreview)\n          }\n        } else if(file.type.startsWith('image')) {\n          // create image tag\n          if ($(next).is(\"img\")) {\n            $(next).attr(\"src\", e.target.result)\n          } else {\n            $(next).remove()\n            let imageElement = document.createElement(\"img\")\n            $(imageElement).attr(\"src\", e.target.result)\n            $(imageElement).appendTo($uploadPreview)\n          }\n        } else {\n          // for displaying whatever file type this is.\n          let fileParts = file.name.split('.'),\n          filename = fileParts[0],\n          extension = fileParts[fileParts.length - 1]\n\n          $(next).remove()\n          let asset = await new Ajax(self.assetsUrl).doAjax(\"GET\", { extension: extension, filename: filename })\n          $(asset).appendTo($uploadPreview)\n        }\n        $modal.find('.no-upload-yet').addClass('hidden')\n      }\n\n      reader.readAsDataURL(files[0])\n    }\n  }\n\n\n  resetModal($modal) {\n    $modal.find('.no-upload-yet').removeClass('hidden')\n    $modal.find('.upload-preview').html('')\n    $modal.find('.library-container .img-thumbnail.selected').removeClass('selected')\n  }\n\n  promisify(upload) {\n    return new Promise(\n      (resolve, reject) => {\n        // console.log(\"Upload: \", upload)\n        upload.create((error, blob) => {\n          if(error) {\n            console.log(error)\n            reject(error)\n          }\n          else {\n            resolve(blob)\n          }\n        })\n      }\n    )\n  }\n\n\n  ///\n  // takes a base64 encoded image and transforms it into a File object\n  ///\n  base64DatatoFile(base64Data, filename) {\n    var arr = base64Data.split(',');\n    var mime = arr[0].match(/:(.*?);/)[1];\n    var bstr = atob(arr[1]);\n    var n = bstr.length;\n    var u8arr = new Uint8Array(n);\n    while (n--) {\n      u8arr[n] = bstr.charCodeAt(n);\n    }\n    return new File([u8arr], filename, { type: mime });\n  }\n\n\n  ///\n  // deletes the given blob\n  ///\n  deleteAsset(event) {\n    event.preventDefault();\n    $('[data-bs-toggle=\"tooltip\"]').tooltip(\"hide\")\n    if (confirm(I18n.t('shared.media_library_modal.delete_description'))) {\n      let $target = $(event.currentTarget)\n      let blob = $target.closest('div.blob')\n      this.stimulate('MediaLibraryReflex#delete_asset', event.currentTarget).then(() => {\n        blob.detach()\n      });\n    } else {\n      console.log(I18n.t('dict.cancel'))\n    }\n  }\n\n  ///\n  // deletes all unattached blobs\n  // (e.g. those which are not referenced by an active storage attachment and not attached to any media library entry)\n  ///\n  deleteAllUnattachedBlobs(event) {\n    event.preventDefault();\n    $('[data-bs-toggle=\"tooltip\"]').tooltip(\"hide\")\n    if (confirm(I18n.t('shared.media_library_modal.delete_all_description'))) {\n      let $target = $(event.currentTarget)\n      this.stimulate('MediaLibraryReflex#delete_all_unattached_blobs', event.currentTarget).then(() => {\n        $(\"#unattached_blobs\").detach()\n      });\n    } else {\n      console.log(I18n.t('dict.cancel'))\n    }\n  }\n\n  ///\n  // deletes the given variant\n  ///\n  deleteVariant(event) {\n    event.preventDefault();\n    $('[data-bs-toggle=\"tooltip\"]').tooltip(\"hide\")\n    if (confirm(I18n.t('shared.media_library_modal.delete_description'))) {\n      let $target = $(event.currentTarget)\n      let blob = $target.closest('div.blob')\n      this.stimulate('MediaLibraryReflex#delete_variant', event.currentTarget).then(() => {\n        blob.detach()\n      });\n    } else {\n      console.log(I18n.t('dict.cancel'))\n    }\n  }\n\n  ///\n  // deletes the given attachment\n  ///\n  deleteAttachment(event) {\n    event.preventDefault();\n    $('[data-bs-toggle=\"tooltip\"]').tooltip(\"hide\")\n    if (confirm(I18n.t('shared.media_library_modal.delete_description'))) {\n      let $target = $(event.currentTarget)\n      let blob = $target.closest('div.blob')\n      this.stimulate('MediaLibraryReflex#delete_attachment', event.currentTarget).then(() => {\n        blob.detach()\n      });\n    } else {\n      console.log(I18n.t('dict.cancel'))\n    }\n  }\n\n  ///\n  // deletes the given media archive entry\n  ///\n  deleteMediaArchiveEntry(event) {\n    event.preventDefault();\n    $('[data-bs-toggle=\"tooltip\"]').tooltip(\"hide\")\n    if (confirm(I18n.t('shared.media_library_modal.delete_description'))) {\n      let $target = $(event.currentTarget)\n      let blob = $target.closest('div.blob')\n      this.stimulate('MediaLibraryReflex#delete_media_archive_entry', event.currentTarget).then(() => {\n        blob.detach()\n      });\n    } else {\n      console.log(I18n.t('dict.cancel'))\n    }\n  }\n\n  ///\n  // deletes the given media archive entry\n  ///\n  deleteMediaLibraryEntry(event) {\n    event.preventDefault();\n    $('[data-bs-toggle=\"tooltip\"]').tooltip(\"hide\")\n    if (confirm(I18n.t('shared.media_library_modal.delete_description'))) {\n      let $target = $(event.currentTarget)\n      let blob = $target.closest('.blob')\n      this.stimulate('MediaLibraryReflex#delete_media_library_entry', event.currentTarget).then(() => {\n        blob.detach()\n      });\n    } else {\n      console.log(I18n.t('dict.cancel'))\n    }\n  }\n\n  ///\n  // adds a new folder via reflex\n  ///\n  submitFolder(event) { \n    event.preventDefault();\n    let target = event.currentTarget\n    // Access the form element\n    const form = target.closest('form');\n    // console.log(\"form: \", form)\n    // console.log(\"serialized: \", $(form).serializeArray())\n    const createModal = $(\"#edit_folder_modal\");\n\n    // let folder = $target.closest('div.folder')\n    this.stimulate('MediaLibraryReflex#submit_folder', target, $(form).serializeArray()).then(() => {\n      createModal.modal('hide')\n    });\n  }\n\n  ///\n  // adds a new folder via reflex\n  ///\n  updateFolder(event) { \n    event.preventDefault();\n    let target = event.currentTarget\n    const editModal = $(\"#edit_folder_modal\");\n\n    // Access the form element\n    const form = target.closest('form');\n    this.stimulate('MediaLibraryReflex#update_folder', target, $(form).serializeArray()).then(() => {\n      editModal.modal('hide')\n    });\n  }\n\n\n  ///\n  // shows modal for editing the folder\n  ///\n  editFolder(event) {\n    event.preventDefault();\n    event.stopPropagation(); // Verhindert das weitere Aufsteigen des Events\n    let $target = $(event.currentTarget)\n    console.log(\"target: \", $target)\n    const folderId = $target.data('folder-id');\n    const folderName = $target.data('folder-name');\n    const folderColor = $target.data('folder-color');\n    console.log(\"folder id: \", folderId)\n    console.log(\"folder name: \", folderName)\n    console.log(\"folder color: \", folderColor)\n    const createModal = $(\"#edit_folder_modal\");\n// \n    createModal.find('input#folder_tag_name').val(folderName)\n    createModal.find('input#folder_tag_id').val(folderId)\n\n    const colorInput = createModal.find('input#folder_tag_color')\n    const changedColorEvent = new CustomEvent('changed-color', {\n      detail: { color: folderColor },\n      bubbles: true,\n      cancelable: true\n    });\n    colorInput.val(folderColor)\n\n    colorInput[0].dispatchEvent(changedColorEvent);\n\n    createModal.modal('show')\n  }\n\n  ///\n  // shows modal listing units that use the selected media library folder\n  ///\n  showFolderUnits(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.stimulate('MediaLibraryReflex#show_folder_units', event.currentTarget).then(() => {\n      $('#folder_units_modal').modal('show')\n    });\n  }\n\n  ///\n  // opens the modal for initiating a new bulk upload\n  ///\n  openBulkUploadDialog(event) {\n    event.preventDefault();\n    const url = event.currentTarget.getAttribute('href');\n    const modal = new bootstrap.Modal(document.getElementById('bulkUploadModal'));\n    fetch(url)\n      .then(response => response.text())\n      .then(html => {\n        document.getElementById('bulkUploadModalContent').innerHTML = html;\n        modal.show();\n      });\n  }\n\n  ///\n  // submits the bulk upload form\n  ///\n  submitBulkUpload(event) {\n    event.preventDefault();\n    const form = event.currentTarget;\n    const formData = new FormData(form);\n    fetch(form.action, {\n      method: 'POST',\n      body: formData,\n    })\n      .then(response => response.json())\n      .then(data => {\n        if (data.success) {\n          window.location.reload();\n        } else {\n          alert('Error uploading files');\n        }\n      });\n  }\n\n}", "import ApplicationController from \"./application_controller\"\n\nexport default class extends ApplicationController {\n  static targets = [\"checkButton\", \"fixButton\", \"statusContainer\", \"resultsContainer\"]\n\n  initialize() {\n    super.initialize()\n    this.useReflex = true // Enable StimulusReflex\n  }\n\n  connect() {\n    super.connect()\n    this.logInfo(\"Migration Management Controller connected\")\n  }\n\n  /**\n   * Toggle all checkboxes\n   * @param {Event} event - The change event from select all checkbox\n   */\n  toggleAll(event) {\n    const isChecked = event.target.checked\n    const tenantCheckboxes = this.element.querySelectorAll('.tenant-checkbox')\n    \n    tenantCheckboxes.forEach(checkbox => {\n      checkbox.checked = isChecked\n    })\n    \n    this.checkboxChanged()\n    this.logInfo(`All checkboxes toggled: ${isChecked}`)\n  }\n\n  /**\n   * Handle individual checkbox changes\n   * @param {Event} event - The change event from a tenant checkbox\n   */\n  checkboxChanged(event) {\n    const tenantCheckboxes = this.element.querySelectorAll('.tenant-checkbox')\n    const checkedCheckboxes = this.element.querySelectorAll('.tenant-checkbox:checked')\n    \n    // Update select all checkbox state\n    const selectAllCheckbox = this.element.querySelector('input[type=\"checkbox\"][data-action*=\"toggleAll\"]')\n    if (selectAllCheckbox) {\n      selectAllCheckbox.checked = checkedCheckboxes.length === tenantCheckboxes.length\n      selectAllCheckbox.indeterminate = checkedCheckboxes.length > 0 && checkedCheckboxes.length < tenantCheckboxes.length\n    }\n    \n    // Enable/disable buttons based on selection\n    const hasSelection = checkedCheckboxes.length > 0\n    this.checkButtonTarget.disabled = !hasSelection\n    this.fixButtonTarget.disabled = !hasSelection\n    \n    if (hasSelection) {\n      this.checkButtonTarget.classList.remove('disabled')\n      this.fixButtonTarget.classList.remove('disabled')\n    } else {\n      this.checkButtonTarget.classList.add('disabled')\n      this.fixButtonTarget.classList.add('disabled')\n    }\n    \n    this.logInfo(`${checkedCheckboxes.length} tenants selected`)\n  }\n\n  /**\n   * Check migration status for selected tenants\n   * @param {Event} event - The click event\n   */\n  checkSelectedMigrations(event) {\n    event.preventDefault()\n    const selectedTenants = this.getSelectedTenants()\n    \n    if (selectedTenants.length === 0) {\n      this.showError('Bitte w\u00E4hlen Sie mindestens einen Mandanten aus')\n      return\n    }\n    \n    this.logInfo(`Checking migration status for ${selectedTenants.length} selected tenants`)\n    \n    this.startLoading()\n    this.updateStatus('checking', `Pr\u00FCfe Migration-Status f\u00FCr ${selectedTenants.length} Mandanten...`)\n    \n    // Set selected tenant IDs for reflex\n    this.element.dataset.selectedTenantIds = JSON.stringify(selectedTenants)\n    \n    this.stimulate('MigrationManagementReflex#check_selected_migrations')\n      .then(() => {\n        this.logInfo(\"\u2705 Migration check completed successfully\")\n        this.stopLoading()\n      })\n      .catch(error => {\n        this.logInfo(\"\u274C Migration check failed:\", error)\n        this.stopLoading()\n        this.showError('Fehler beim Pr\u00FCfen der Migration-Status: ' + error.message)\n      })\n  }\n\n  /**\n   * Fix missing migrations for selected tenants  \n   * @param {Event} event - The click event\n   */\n  fixSelectedMigrations(event) {\n    event.preventDefault()\n    const selectedTenants = this.getSelectedTenants()\n    \n    if (selectedTenants.length === 0) {\n      this.showError('Bitte w\u00E4hlen Sie mindestens einen Mandanten aus')\n      return\n    }\n    \n    this.logInfo(`Fixing missing migrations for ${selectedTenants.length} selected tenants`)\n    \n    // Show confirmation dialog\n    const confirmMessage = `Sind Sie sicher, dass Sie fehlende Migrationen f\u00FCr ${selectedTenants.length} ausgew\u00E4hlte Mandanten ausf\u00FChren m\u00F6chten?`\n    if (!confirm(confirmMessage)) {\n      this.logInfo(\"Migration fix cancelled by user\")\n      return\n    }\n    \n    this.startLoading()\n    this.updateStatus('fixing', `F\u00FChre fehlende Migrationen f\u00FCr ${selectedTenants.length} Mandanten aus...`)\n    this.disableFixButton()\n    \n    // Set selected tenant IDs for reflex\n    this.element.dataset.selectedTenantIds = JSON.stringify(selectedTenants)\n    \n    this.stimulate('MigrationManagementReflex#fix_selected_migrations')\n      .then(() => {\n        this.logInfo(\"\u2705 Migration fixes completed successfully\")\n        this.stopLoading()\n        this.updateStatus('completed', 'Migration-Reparatur abgeschlossen!')\n      })\n      .catch(error => {\n        this.logInfo(\"\u274C Migration fixes failed:\", error)\n        this.stopLoading()\n        this.enableFixButton()\n        this.showError('Fehler beim Ausf\u00FChren der Migrationen: ' + error.message)\n      })\n  }\n\n  /**\n   * Fix missing migrations for a specific tenant\n   * @param {Event} event - The click event\n   */\n  fixTenantMigrations(event) {\n    event.preventDefault()\n    \n    // Get tenant ID with more robust extraction\n    let tenantId = event.target.dataset.migrationManagementTenantId\n    \n    // Debug logging\n    this.logInfo(`\uD83D\uDD0D Debug: event.target:`, event.target)\n    this.logInfo(`\uD83D\uDD0D Debug: dataset:`, event.target.dataset)\n    this.logInfo(`\uD83D\uDD0D Debug: migrationManagementTenantId:`, tenantId)\n    \n    // Try alternative ways to get tenant ID if first attempt fails\n    if (!tenantId || tenantId === 'undefined') {\n      // Try to find the closest button or element with the data attribute\n      const button = event.target.closest('[data-migration-management-tenant-id]')\n      if (button) {\n        tenantId = button.dataset.migrationManagementTenantId\n        this.logInfo(`\uD83D\uDD0D Debug: Found tenant ID via closest():`, tenantId)\n      }\n    }\n    \n    // Validate tenant ID\n    if (!tenantId || tenantId === 'undefined') {\n      this.logInfo(`\u274C Error: Could not extract tenant ID from element`)\n      this.showError('Fehler: Mandanten-ID konnte nicht ermittelt werden')\n      return\n    }\n    \n    this.logInfo(`Fixing missing migrations for tenant ${tenantId}`)\n    \n    // Show confirmation dialog\n    const confirmMessage = `Sind Sie sicher, dass Sie fehlende Migrationen f\u00FCr diesen Mandanten ausf\u00FChren m\u00F6chten?`\n    if (!confirm(confirmMessage)) {\n      this.logInfo(`Migration fix cancelled by user for tenant ${tenantId}`)\n      return\n    }\n    \n    this.startButtonLoading(event.target)\n    \n    // Set tenant ID for reflex - use the correct attribute name\n    event.target.dataset.tenantId = tenantId\n    \n    this.stimulate('MigrationManagementReflex#fix_tenant_migrations', event.target)\n      .then(() => {\n        this.logInfo(`\u2705 Migration fixes completed for tenant ${tenantId}`)\n        this.stopButtonLoading(event.target)\n      })\n      .catch(error => {\n        this.logInfo(`\u274C Migration fixes failed for tenant ${tenantId}:`, error)\n        this.stopButtonLoading(event.target)\n        this.showError('Fehler beim Ausf\u00FChren der Migrationen: ' + error.message)\n      })\n  }\n\n  /**\n   * Update status display\n   * @param {string} type - Status type: 'checking', 'fixing', 'completed', 'error'\n   * @param {string} message - Status message\n   * @private\n   */\n  updateStatus(type, message) {\n    const statusContainer = this.statusContainerTarget\n    \n    // Clear existing classes\n    statusContainer.className = 'alert text-center'\n    \n    // Add appropriate class based on type\n    switch (type) {\n      case 'checking':\n        statusContainer.classList.add('alert-info')\n        break\n      case 'fixing':\n        statusContainer.classList.add('alert-warning')\n        break\n      case 'completed':\n        statusContainer.classList.add('alert-success')\n        break\n      case 'error':\n        statusContainer.classList.add('alert-danger')\n        break\n      default:\n        statusContainer.classList.add('alert-info')\n    }\n    \n    // Update content\n    statusContainer.innerHTML = `\n      <i class=\"material-icons icon-size me-2\">${this.getStatusIcon(type)}</i>\n      ${message}\n    `\n  }\n\n  /**\n   * Get appropriate icon for status type\n   * @param {string} type - Status type\n   * @returns {string} - Material icon name\n   * @private\n   */\n  getStatusIcon(type) {\n    switch (type) {\n      case 'checking':\n        return 'search'\n      case 'fixing':\n        return 'build'\n      case 'completed':\n        return 'check_circle'\n      case 'error':\n        return 'error'\n      default:\n        return 'info'\n    }\n  }\n\n  /**\n   * Show error message\n   * @param {string} message - Error message\n   * @private\n   */\n  showError(message) {\n    this.updateStatus('error', message)\n  }\n\n  /**\n   * Enable the fix button\n   * @private\n   */\n  enableFixButton() {\n    this.fixButtonTarget.disabled = false\n    this.fixButtonTarget.classList.remove('disabled')\n  }\n\n  /**\n   * Disable the fix button\n   * @private\n   */\n  disableFixButton() {\n    this.fixButtonTarget.disabled = true\n    this.fixButtonTarget.classList.add('disabled')\n  }\n\n  /**\n   * Show loading state\n   * @private\n   */\n  startLoading() {\n    this.checkButtonTarget.disabled = true\n    this.checkButtonTarget.classList.add('disabled')\n    \n    // Add loading spinner to active button\n    const activeButton = this.checkButtonTarget.disabled ? this.fixButtonTarget : this.checkButtonTarget\n    const icon = activeButton.querySelector('i.material-icons')\n    if (icon) {\n      icon.textContent = 'sync'\n      icon.classList.add('fa-spin')\n    }\n  }\n\n  /**\n   * Stop loading state\n   * @private\n   */\n  stopLoading() {\n    this.checkButtonTarget.disabled = false\n    this.checkButtonTarget.classList.remove('disabled')\n    \n    // Remove loading spinner and restore original icons\n    const checkIcon = this.checkButtonTarget.querySelector('i.material-icons')\n    if (checkIcon) {\n      checkIcon.textContent = 'search'\n      checkIcon.classList.remove('fa-spin')\n    }\n    \n    const fixIcon = this.fixButtonTarget.querySelector('i.material-icons')\n    if (fixIcon) {\n      fixIcon.textContent = 'build'\n      fixIcon.classList.remove('fa-spin')\n    }\n  }\n\n  /**\n   * Show loading state for a specific button\n   * @param {HTMLElement} button - The button element\n   * @private\n   */\n  startButtonLoading(button) {\n    button.disabled = true\n    button.classList.add('disabled')\n    \n    const icon = button.querySelector('i.material-icons')\n    if (icon) {\n      icon.dataset.originalIcon = icon.textContent\n      icon.textContent = 'sync'\n      icon.classList.add('fa-spin')\n    }\n  }\n\n  /**\n   * Stop loading state for a specific button\n   * @param {HTMLElement} button - The button element\n   * @private\n   */\n  stopButtonLoading(button) {\n    button.disabled = false\n    button.classList.remove('disabled')\n    \n    const icon = button.querySelector('i.material-icons')\n    if (icon && icon.dataset.originalIcon) {\n      icon.textContent = icon.dataset.originalIcon\n      icon.classList.remove('fa-spin')\n      delete icon.dataset.originalIcon\n    }\n  }\n\n  /**\n   * Get array of selected tenant IDs\n   * @returns {Array} Array of selected tenant IDs\n   * @private\n   */\n  getSelectedTenants() {\n    const checkedCheckboxes = this.element.querySelectorAll('.tenant-checkbox:checked')\n    return Array.from(checkedCheckboxes).map(checkbox => checkbox.value)\n  }\n} ", "import ApplicationController from './application_controller'\nimport { getMetaValue } from \"../packs/global_functions\";\n\nexport default class extends ApplicationController {\n\n  connect() {\n\n    super.connect();\n    var $renderModal = $(\"#render_modal\")\n    if($renderModal.length){\n      var modalId = $renderModal.data('modalid')\n      // console.log(\"modal ID: \", modalId)\n      $(`#${modalId}`).modal('show')\n    }\n  }\n\n  getDefinitionDialog(event) {\n    event.stopPropagation();\n\n    //hide selected definitions/group-definitions\n    $(\".card.selected\").css({\n      \"border-color\": \"\",\n      \"background-color\": \"\"\n    });\n    $(\".card.selected\").removeClass(\"selected\");\n    $('.form-element').addClass('hidden');\n\n    let $target = $(event.currentTarget),\n    groupId = $target.data('group-id'),\n    $openingTarget = $($target.data('target'));\n\n    let items = $openingTarget.find(\"[data-group-id]\");\n    items.attr('data-group-id', groupId);\n\n    $openingTarget.modal('show');\n  }\n\n  getLocation(event) {\n    let locationId = $(event.currentTarget).data('location-id')\n    this.stimulate('LocationReflex#getLocation', \"#location_info\", locationId)\n  }\n\n  getLocationSuccess(event) {\n    $('#location_modal').modal('show')\n    window.initializeGoogleMaps()\n  }\n\n  getFaq(event) {\n    event.preventDefault();\n    $('#modal_faq').modal('show')\n  }\n\n  getDataPolicy(event) {\n    event.preventDefault();\n    $('#modal_privacy_policy').modal('show')\n  }\n\n  getImprint(event) {\n    event.preventDefault();\n    $('#modal_imprint').modal('show')\n  }\n\n  openTenantEdit(event) {\n    let tenantId = $(event.currentTarget).data('tenant-id')\n    this.stimulate('TenantModalReflex#open_edit', tenantId).then(() => {\n      $(\"#tenant_edit_modal [name=authenticity_token]\").val(getMetaValue(\"csrf-token\"));\n      $('#tenant_edit_modal').modal('show');\n    })\n  }\n\n  openTenantCreate(event) {\n    this.stimulate('TenantModalReflex#open_create').then((event)=> {\n      $(\"#tenant_create_modal [name=authenticity_token]\").val(getMetaValue(\"csrf-token\"));\n      $('#tenant_create_modal').modal('show');\n    })\n  }\n\n  getGroupCloneDialog(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    let $target = $(event.currentTarget);\n    let groupId = $target.data('group-id');\n    this.stimulate('GroupDefinitionReflex#group_clone_open', groupId);\n  }\n\n  groupCloneOpenSuccess(event) {\n    $(\"#modal_clone [name=authenticity_token]\").val(getMetaValue(\"csrf-token\"));\n    let $openingTarget = $('#modal_clone');\n    $openingTarget.modal('show');\n  }\n\n  close(event) {\n    let target = $(event.currentTarget).closest(\".modal\");\n    $(target).modal('hide');\n  }\n\n  getGroupDefinitionEditDialog(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    // console.log(\"clicked\")\n    let $target = $(event.currentTarget);\n    let groupId = $target.data('group-id');\n    let formPartIdentifier = `#group_definition_form_${groupId}`\n    // console.log(\"form part id: \", formPartIdentifier)\n    let $formPart = $(formPartIdentifier);\n    // console.log(\"form part: \", $formPart)\n    $formPart.removeClass('hidden')\n  }\n\n  show_loader(event) {\n    let $target = $(event.currentTarget);\n    $target.closest(\".modal\").first().modal(\"hide\");\n    this.startLoading();\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\nimport { split } from \"../packs/global_functions\"\nimport autocomplete from \"autocompleter\"\n\nexport default class extends Controller {\n  connect() {\n    // Listen for Bootstrap modal 'shown' event\n    this.element.addEventListener('shown.bs.modal', this.initializeTagAutocomplete.bind(this))\n  }\n\n  disconnect() {\n    this.element.removeEventListener('shown.bs.modal', this.initializeTagAutocomplete.bind(this))\n  }\n\n  initializeTagAutocomplete() {\n    // Find the tag input controller's elements\n    const tagController = this.element.querySelector('[data-controller*=\"tag\"]')\n    if (!tagController) return\n\n    const hiddenInput = tagController.querySelector('[data-tag-target=\"input\"]')\n    const visibleInput = tagController.querySelector('input[type=\"text\"]')\n    \n    if (!hiddenInput || !visibleInput) return\n\n    // Get supported tags from data attribute\n    const supportedTagsStr = visibleInput.dataset.supportedtags || ''\n    const supportedTags = split(supportedTagsStr).map(value => ({\n      label: value,\n      value: value\n    }))\n\n    // Initialize autocomplete with modal-specific settings\n    autocomplete({\n      input: visibleInput,\n      minLength: 1,\n      debounceWaitMs: 0,\n      fetch: function (text, update) {\n        text = text.toLowerCase()\n        const suggestions = supportedTags.filter(n =>\n          n.label.toLowerCase().startsWith(text)\n        )\n        update(suggestions)\n      },\n      onSelect: function (item) {\n        visibleInput.value = item.label\n      },\n      customize: function(input, inputRect, container, maxHeight) {\n        // Ensure high z-index for modal (Bootstrap modals use 1055)\n        if (container) {\n          container.style.zIndex = '9999'\n          container.style.position = 'absolute'\n        }\n      }\n    })\n  }\n}\n\n", "import ApplicationController from './application_controller'\n\n////\n// all around the multiplechoice learn unit type\n////\nexport default class extends ApplicationController {\n\n  static values = {\n    showmodals: String,\n    hidemodals: String\n  }\n\n  static targets = [ \"questions\", \"button\" ]\n\n  connect() {\n    super.connect()\n    this.initializeTooltips()\n  }\n  \n  ////\n  // checks if in each question an answer is checked and shows submit button, when true\n  ////\n  markedAnswer(event) {\n    // console.log(\"marked answer\")\n    let $target = $(event.currentTarget);\n    let $questions = $(this.questionsTarget);\n    let $button = $(this.buttonTarget);\n    // console.log(\"button: \", $button)\n    // console.log(\"questions: \", $questions)\n    let allChecked = true;\n    $questions.find(\".answers\").each(function() {\n      // console.log(\"found answers: \", this);\n      if ($(this ).find(\"input[type=checkbox]:checked\").length == 0) {\n        allChecked = false;\n      }\n    });\n    if (allChecked) {\n      // console.log(\"one answer checked for each question\");\n      $button.removeClass('disabled');\n    } else {\n      $button.addClass('disabled');\n    }\n  }\n\n  ///\n  // stimulates the appropriate action in the multiplechoice reflex\n  ///\n  executeAnswer(event) {\n    const button = event.currentTarget\n    this.attachContainerContext(button)\n    \n    this.startLoading()\n    this.stimulate('MultipleChoice#execute_answer', button).then(() => {\n      this.stopLoading()\n    })\n  }\n\n  ///\n  // stimulates the appropriate action in the multiplechoice reflex\n  ///\n  deleteExecution(event) {  \n    this.stimulate('MultipleChoice#delete_execution', event.currentTarget)\n  }\n\n  ///\n  // stimulates the appropriate action in the multiplechoice reflex\n  ///\n  claimAgain(event) {\n    const button = event.currentTarget\n    this.attachContainerContext(button)\n    \n    this.startLoading()\n    this.stimulate('MultipleChoice#claim_again', button).then(() => {\n      this.stopLoading()\n    })\n  }\n\n  ///\n  // restarts the MC attempt without deleting execution history\n  ///\n  repeat(event) {\n    const button = event.currentTarget\n    if (button.classList.contains('disabled')) return\n\n    this.attachContainerContext(button)\n\n    this.startLoading()\n    this.stimulate('MultipleChoice#repeat', button).then(() => {\n      this.stopLoading()\n    })\n  }\n\n  ///\n  // toggles the disabled state of the redo input field\n  // depending on the state of the repeatable checkbox\n  ///\n  toggleRepeatable(event) {\n    // console.log(\"toggle repeatable\")\n    const $target = $(event.currentTarget);\n    const repeatable = $target.is(':checked');\n    // console.log(\"repeatable: \", repeatable)\n    const redoTarget = $target.closest(\".row\").find(\".journey_phases_learn_units_learnable_days_until_redo input\").first();\n    // console.log(\"redoTarget: \", redoTarget)\n    if (repeatable) {\n      redoTarget.prop(\"disabled\", true);\n    } else {\n      redoTarget.prop(\"disabled\", false);\n    }\n  }\n\n  ///\n  // appends container context attributes used by reflex actions\n  // @param {HTMLElement} button target element for dataset enrichment\n  ///\n  attachContainerContext(button) {\n    const journeyPage = document.getElementById('journey_show_page')\n    if (!journeyPage) return\n\n    button.dataset.nextUnitId = journeyPage.dataset.nextUnitId || ''\n    button.dataset.containerUrl = journeyPage.dataset.containerUrl || ''\n    button.dataset.fromContainer = journeyPage.dataset.fromContainer || ''\n    button.dataset.containerName = journeyPage.dataset.containerName || ''\n  }\n\n  ///\n  // initializes bootstrap tooltips inside this controller scope\n  ///\n  initializeTooltips() {\n    const tooltipTriggerList = this.element.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\n    tooltipTriggerList.forEach(tooltipTriggerEl => {\n      if (!tooltipTriggerEl._tooltip) {\n        tooltipTriggerEl._tooltip = new bootstrap.Tooltip(tooltipTriggerEl, { boundary: \"window\" })\n      }\n    })\n  }\n\n}", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  // check all\n  // single check\n  // field to be updated\n\n  static targets = [\"output\", \"button\"]\n\n  checkAll(event) {\n    let checkbox = $(event.currentTarget);\n    //check all single checkboxes\n    $('.multiselect-checkbox').prop('checked', checkbox.prop('checked'));\n    this.updateOutputField();\n  }\n\n  singleCheck(event) {\n    // update the output field\n    this.updateOutputField();\n  }\n\n  updateOutputField() {\n    let values = new Array();\n    for(let item of $('.multiselect-checkbox')) {\n      if($(item).prop('checked')) {\n        values.push(parseInt($(item).data('id')));\n      }\n    }\n\n    // Update all output fields with the same values\n    $('[data-multiselect-target=\"output\"]').val(values.join(',')).trigger('change');\n    \n    // Update visibility of all multiselect buttons\n    const hasSelection = values.length > 0;\n    $('[data-multiselect-target=\"button\"]').each(function() {\n      if(hasSelection) {\n        $(this).removeClass('invisible');\n      } else {\n        $(this).addClass('invisible');\n      }\n    });\n  }\n\n}", "import ApplicationController from './application_controller'\nlet Cookies = require('js-cookie')\n\nexport default class extends ApplicationController {\n\n  static targets = [\"parent\"]\n\n  initialize() {\n    super.initialize();\n    this.useReflex = false\n\n  }\n\n  connect() {\n    super.connect();\n    $(this.parentTarget).on(\"hide.bs.collapse\", function (event) {\n      let target = $(event.target)\n\n      console.log(target)\n\n      if (target.attr(\"id\") == \"backend\") {\n        $(\".frontend\").addClass(\"invisible\")\n        $(\".backend\").removeClass(\"invisible\")\n      } else if(target.attr(\"id\") == \"frontend\") {\n        $(\".frontend\").removeClass(\"invisible\")\n        $(\".backend\").addClass(\"invisible\")\n      }\n    });\n\n    ///\n    // Navigation Sidebar\n    ///\n    // set the sidebar nav cookie if not set so far\n    if(Cookies.get('YL_navSidebar') == undefined) {\n      YL_navSidebar.initCookie()\n    }\n  \n    // set the sidebar nav according to cookie stored state\n    let state = YL_navSidebar.getState()\n  \n    if(state['show'])\n      YL_navSidebar.show()\n    else\n      YL_navSidebar.hide()\n\n    $(document).on('click', '.nav-sidebar-toggle', (_) => YL_navSidebar.toggle())\n  }\n}\n\nlet YL_navSidebar = {\n  initCookie: function() {\n    return Cookies.set('YL_navSidebar', JSON.stringify({ show: true }), {\n      path: '/',\n      expires: 365\n    })\n  },\n  init: function() {},\n  getNavSidebar: function() {\n    return $('.nav-sidebar')\n  },\n  getToggleButton: function() {\n    return $('.nav-sidebar-toggle')\n  },\n  getState: function() {\n    return JSON.parse(Cookies.get('YL_navSidebar'))\n  },\n  setState: function(_state) {\n    return Cookies.set('YL_navSidebar', JSON.stringify(_state), {\n      path: '/',\n      expires: 365\n    })\n  },\n  show: function(transition) {\n    if (transition == null) {\n      transition = false;\n    }\n    YL_navSidebar.toggleTransition(transition)\n    YL_navSidebar.getNavSidebar().removeClass('closed')\n    YL_navSidebar.getToggleButton().removeClass('closed')\n    return YL_navSidebar.setState({\n      show: true\n    })\n  },\n  hide: function(transition) {\n    if (transition == null) {\n      transition = false;\n    }\n    YL_navSidebar.toggleTransition(transition);\n    YL_navSidebar.getNavSidebar().addClass('closed')\n    YL_navSidebar.getToggleButton().addClass('closed')\n    return YL_navSidebar.setState({\n      show: false\n    })\n  },\n  toggle: function(transition) {\n    if (transition == null) {\n      transition = true;\n    }\n    if (YL_navSidebar.getNavSidebar().hasClass('closed')) {\n      return YL_navSidebar.show(transition);\n    } else {\n      return YL_navSidebar.hide(transition);\n    }\n  },\n  toggleTransition: function(transition) {\n    if (transition) {\n      return YL_navSidebar.getNavSidebar().addClass('transition')\n    } else {\n      return YL_navSidebar.getNavSidebar().removeClass('transition')\n    }\n  }\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = [\"template\", \"form\", \"phasePart\"];\n\n  connect() {\n    super.connect();\n    this.initializeFormInitializationRoutine($(this.element));\n\n    this.accept_for_type = function(type) {\n      var accept = '';\n      switch(type) {\n        case 'audio':\n          accept = 'audio/mpeg,audio/vnd.wave';\n          break;\n        case 'zip_archive':\n          accept = 'application/zip';\n          break;\n        case 'ppt':\n          accept = 'application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation';\n          break;\n        case 'pdf':\n          accept = 'application/pdf';\n          break;\n        default:\n          break;\n      }\n      return accept;\n    };\n\n  }\n\n  ///\n  // calls the defined FormInitializationRoutines on the wrapped form\n  // those routines create the right context for functionality in the js world\n  ///\n  initializeFormInitializationRoutine($wrapper) {\n    // let $form = $(\"form\", $wrapper)\n    // // console.log(\"FORM: \", $form)\n    // reinitializeForms($form)\n  }\n\n  getExistingPhasePosition(phaseId) {\n    let elements = [];\n\n    if (phaseId) {\n      elements = $(`[value=${phaseId}]`);\n    }\n    let element = elements.first();\n    let matches = $(element).attr(\"id\").match(/\\d+/g);\n\n    return matches != null && matches.length > 0 ? parseInt(matches[0]) : -1;\n  }\n\n  getNextLearnUnitPosition(phasePosition, learnUnitId) {\n    let elements = [],\n      position = -1;\n\n    if (learnUnitId) {\n      elements = $(\n        `[id^='journey_phases_attributes_${phasePosition}_learn_units_attributes_'][type=hidden][id$='id']:not([id$='consumable_attributes_id'], [value=${learnUnitId}], [id$='event_attributes_id'])`\n      );\n    }\n\n    for (let element of elements) {\n      let matches = $(element).attr(\"id\").match(/\\d+/g);\n      let newPosition = parseInt(matches[1]);\n\n      if (newPosition > position) {\n        position = newPosition;\n      }\n    }\n\n    return position + 1;\n  }\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = [\"datetimestring\", \"timestring\", \"datestring\"]\n\n  static values = {\n    locale: String,\n    defaultlocale: String,\n    environment: String\n  }\n\n  initialize() {\n    super.initialize();\n    // initialize I18n-js\n    this.useReflex = false;\n    this.initializeI18n();\n\n    // Date/time initialization\n    window.datetime = {\n      format: I18n.t('javascript.format.both'),\n      formatTime: I18n.t('javascript.format.time'),\n      formatDate: I18n.t('javascript.format.date'),\n      toLocal: function(date) {\n        return moment.utc(date, moment.iso8601, true).local().format(this.format)\n      },\n      toLocalDate: function(date) {\n        return moment.utc(date, moment.iso8601, true).local().format(this.formatDate)\n      },\n      toLocalTime: function(date) {\n        return moment.utc(date, moment.iso8601, true).local().format(this.formatTime)\n      },\n      toUTC: function(date) {\n        return moment(date, this.format, true).utc().format(moment.iso8601)\n      }\n    }\n    console.log(\"datetime initialized\", window.datetime)\n    this.tooltipList = []\n\n  }\n\n  // here all the things are initialized (after page load), which are needed on every page\n  connect() {\n    super.connect();\n    // add autoclose for notice alerts\n    const autoCloseAlert = function(time) {\n      setTimeout(function(){\n        $('.alert.alert-primary').fadeOut('slow');\n      }, time);\n    }\n  \n    autoCloseAlert(2500); // Close after 2,5 seconds\n\n    // initialize tooltips\n    this.setupTooltips();\n  }\n\n  datetimestringTargetConnected(el) {\n    $(el).text(datetime.toLocal($(el).attr(\"data-value\")))\n  }\n\n  datestringTargetConnected(el) {\n    $(el).text(datetime.toLocalDate($(el).attr(\"data-value\")))\n  }\n\n  timestringTargetConnected(el) {\n    $(el).text(datetime.toLocalTime($(el).attr(\"data-value\")))\n  }\n\n  initializeI18n() {\n    I18n.defaultLocale = this.defaultlocaleValue\n    I18n.locale = this.localeValue\n    let locale = I18nLocales[this.localeValue]\n    I18n.store(locale)\n  }\n\n  ///\n  // sets up the bs tooltip toggle\n  ///\n  setupTooltips() {\n    const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"tooltip\"]'))\n    this.tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {\n      return new bootstrap.Tooltip(tooltipTriggerEl, { boundary: \"window\" })\n    })\n    console.log(`setup ${this.tooltipList.length} tooltips`)\n  }\n\n  ///\n  // hides all tooltips on page\n  ///\n  hideTooltips() {\n    console.log(`hide ${this.tooltipList.length} tooltips`)\n    this.tooltipList.map(function (tooltip) {\n      tooltip.hide();\n    });\n\n  }\n\n  ///\n  // destroys all tooltips on page\n  ///\n  destroyTooltips() {\n    this.tooltipList.map(function (tooltip) {\n      // console.log(\"destroy tooltip: \", tooltip)\n      try {\n        tooltip.dispose();\n      } catch (error) {\n        // console.error(\"Error disposing tooltip:\", error);\n      }\n    });\n    console.log(`destroyed ${this.tooltipList.length} tooltips`)\n    this.tooltipList = [];\n  }\n\n  ///\n  // sets up the bs tooltip toggle again\n  // should be called after reflex morphs\n  // be sure they have been destroyed befor the reflex was called\n  ///\n  reloadTooltips() {\n    console.log(\"reload tooltips\")\n    // this.destroyTooltips();\n    this.setupTooltips();\n  }\n\n}\n", "import ApplicationController from './application_controller'\n// import Ajax from '../packs/ajax.js';\nimport Param from '../packs/param';\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect();\n    console.log(\"PaginationController connected \");\n    this.param = new Param(this.getBaseUrl());\n  }\n  \n  ///\n  // creates a new definition\n  ///\n  changePerPage(event) {\n    let $target = $(event.currentTarget);\n    let perPage = $target.val();\n    const self = this;\n    this.stimulate(\"userReflex#per_page\", perPage).then((response) => {\n      // self.param.updateParams('per_page', perPage, false);\n      window.location.reload();\n    });\n  }\n\n}\n", "import ApplicationController from './application_controller'\n\n\nexport default class extends ApplicationController {\n\n  static targets = [\"step\"]\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n    this.currentStep = 0\n    $(this.element).on('show.bs.modal', (event) => {\n      this.restoreStep(this.currentStep)\n    })\n    $(this.element).on('hide.bs.modal', (event) => {\n      this.saveStep(this.currentStep)\n    })\n  }\n\n  /**\n   * This will hide all steps except the one to restore.\n   * It will dipatch an custom event 'restore.step' to the current step to restore.\n   * @param {Integer} step the step to restore like starting video again and show the page.\n   */\n  restoreStep(step) {\n    if(this.hasStepTarget) {\n      $(this.stepTargets).addClass('d-none')\n      $(this.stepTargets[step]).removeClass('d-none')\n      this.stepTargets[step].dispatchEvent(new CustomEvent('restore.step'))\n    }\n  }\n\n  /**\n   * It will dispatch an custom event 'save.step' to the current step to save.\n   * @param {Integer} step which step to save its state (if needed)\n   */\n  saveStep(step) {\n    if(this.hasStepTarget) {\n      this.stepTargets[step].dispatchEvent(new CustomEvent('save.step'))\n    }\n  }\n\n  /**\n   * animate from current page to next page.\n   */\n  nextStep() {\n    if(this.hasStepTarget) {\n      if(this.stepTargets.length > this.currentStep + 1) {\n        this.currentStep++\n        const prevStepDom = this.stepTargets[this.currentStep - 1]\n        const stepDom = this.stepTargets[this.currentStep]\n        stepDom.dispatchEvent(new CustomEvent('restore.step'))\n        $(prevStepDom).addClass('animate_fadeOutDown')\n        $(stepDom).removeClass('d-none').addClass('animate__fadeInDown')\n      } else {\n        $(this.element).modal('hide')\n      }\n    }\n  }\n}", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  static targets = [\"input\"]\n\n  toggleVisibility(event) {\n    let target = event.currentTarget,\n    type = $(this.inputTarget).attr('type');\n\n    switch(type) {\n      case \"password\":\n        $(target).addClass('pw-visible');\n        $(this.inputTarget).attr('type', 'text');\n        break;\n      case \"text\":\n        $(target).removeClass('pw-visible');\n        $(this.inputTarget).attr('type', 'password');\n        break;\n    }\n  }\n\n}", "import ApplicationController from './application_controller'\nimport Sortable from \"sortablejs\"\n\nexport default class extends ApplicationController {\n  static values = {\n    updateUrl: String\n  }\n\n  connect() {\n    super.connect()\n    this.initializeSortable()\n  }\n\n  initializeSortable() {\n    this.sortable = Sortable.create(this.element, {\n      animation: 150,\n      handle: '.drag-handle',\n      draggable: '.sortable-item',\n      onEnd: this.handleSortEnd.bind(this)\n    })\n  }\n\n  handleSortEnd(event) {\n    const templateIds = Array.from(this.element.children).map(child => {\n      // Get the template ID from the data-template-id attribute\n      return child.dataset.templateId\n    }).filter(id => id !== undefined && id !== null)\n\n    console.log('Template IDs for sorting:', templateIds)\n    console.log('Update URL:', this.updateUrlValue)\n    console.log('Data attribute check:', this.element.dataset.pdfCertificateTemplateSortableUpdateUrlValue)\n\n    if (templateIds.length === 0) {\n      console.error('No template IDs found for sorting')\n      return\n    }\n\n    const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content')\n    if (!csrfToken) {\n      console.error('CSRF token not found')\n      return\n    }\n\n    // Store the URL in a variable to ensure it doesn't get lost\n    const updatePath = this.updateUrlValue || this.element.dataset.pdfCertificateTemplateSortableUpdateUrlValue\n    const updateUrl = new URL(updatePath, window.location.origin).href\n    console.log('Stored update PATH before fetch:', updatePath)\n    console.log('Constructed absolute URL:', updateUrl)\n    \n    if (!updatePath) {\n      console.error('Update URL is missing!')\n      return\n    }\n\n    console.log('About to fetch with URL:', updateUrl)\n    console.log('Fetch call details:', {\n      url: updateUrl,\n      method: 'PATCH',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-CSRF-Token': csrfToken\n      },\n      body: JSON.stringify({\n        template_ids: templateIds\n      })\n    })\n\n    fetch(updateUrl, {\n      method: 'PATCH',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-CSRF-Token': csrfToken\n      },\n      body: JSON.stringify({\n        template_ids: templateIds\n      })\n    })\n    .then(response => {\n      if (!response.ok) {\n        console.error('Failed to update sort order - Status:', response.status)\n        console.error('Request URL was:', updateUrl)\n        console.error('Current page URL:', window.location.href)\n        return response.text().then(text => {\n          console.error('Response:', text)\n        })\n      } else {\n        console.log('Sort order updated successfully')\n      }\n    })\n    .catch(error => {\n      console.error('Error updating sort order:', error)\n    })\n  }\n} ", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['portraitSection', 'landscapeSection']\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n    console.log('PDF Template Form controller INITIALIZED')\n  }\n\n  connect() {\n    super.connect()\n    console.log('PDF Template Form controller CONNECTED')\n    console.log('Element:', this.element)\n    console.log('Portrait section target available:', this.hasPortraitSectionTarget)\n    console.log('Landscape section target available:', this.hasLandscapeSectionTarget)\n    this.updateVisibility()\n  }\n\n  orientationChanged() {\n    console.log('Orientation changed')\n    this.updateVisibility()\n  }\n\n  updateVisibility() {\n    const orientationSelect = this.element.querySelector('select[name*=\"[orientation]\"]')\n    console.log('Orientation select element:', orientationSelect)\n    if (!orientationSelect) return\n\n    const selectedOrientation = orientationSelect.value\n    console.log('Selected orientation:', selectedOrientation)\n    \n    if (selectedOrientation === 'portrait') {\n      this.showPortraitOnly()\n    } else if (selectedOrientation === 'landscape') {\n      this.showLandscapeOnly()\n    } else {\n      // No selection or both - show both sections\n      this.showBothSections()\n    }\n  }\n\n  showPortraitOnly() {\n    console.log('Showing portrait only')\n    this.portraitSectionTarget.style.display = 'block'\n    this.landscapeSectionTarget.style.display = 'none'\n  }\n\n  showLandscapeOnly() {\n    console.log('Showing landscape only')\n    this.portraitSectionTarget.style.display = 'none'\n    this.landscapeSectionTarget.style.display = 'block'\n  }\n\n  showBothSections() {\n    console.log('Showing both sections')\n    this.portraitSectionTarget.style.display = 'block'\n    this.landscapeSectionTarget.style.display = 'block'\n  }\n} ", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  peak(event) {\n    // console.log(\"target: \", $(event.target));\n    // console.log(\"a target ? \", $(event.target).closest(\"a\").length > 0);\n    // console.log(\"target != currentTarget ? \", event.target != event.currentTarget);\n    if($(event.target).closest(\"a\").length > 0 && event.target != event.currentTarget) {\n      // do nothing should not interest you!\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n      let $target = $(event.currentTarget);\n      $target.toggleClass('opened');\n      $($target.data(\"target\")).toggleClass('open');\n    }\n  }\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect();\n    this.updateGroups();\n    this.checkRole()\n  }\n\n  checkRole() {\n    const self = this\n    const role = $(\"select#user_role\").val()\n    console.log(`role is: ${role}`)\n    \n    this.showPermissionArea(role)\n\n    // and also setup listener for a role:changed event\n    $(document).on(\"role:changed\", function (event, irole) {\n      // console.log(\"git role:changed with \", irole)\n      self.showPermissionArea(irole)\n    });\n  }\n\n  showPermissionArea(role) {\n    const $permissionArea = $(\"#role_permissions\")\n    if (role == \"user\") {\n      // console.log(\"we show it\")\n      $permissionArea.show()\n    } else {\n      // console.log(\"we hide it\")\n      $permissionArea.hide()\n    }\n  }\n  ///\n  // stimulates the permission change of a user (only on view)\n  ///\n  changePermissionSet(event) {\n    const self = this\n    const $target = $(event.currentTarget)\n    const userId = $target.data(\"user-id\");\n    // console.log(`user id: ${userId}`)\n    this.stimulate('PermissionReflex#change_permission_set', $target.val(), userId).then(payload => {\n      self.reset_csrf_token();\n    })\n  }\n\n  ///\n  // when one of th eheader checkboxes is clicked\n  ///\n  headerChange(event) {\n    let group = $(event.currentTarget).attr('id'),\n    groupCheckboxes = $(`[data-group='${group}'] input[type=checkbox]`);\n    $(groupCheckboxes).each(function() {\n      $(this).prop('checked', $(event.currentTarget).prop('checked'))\n    });\n\n    this.invalidatePermissionSet();\n    this.updatePermissions();\n  }\n\n  ///\n  // when one of the permission checkboxes is clicked\n  ///\n  itemChange(event) {\n    const $target = $(event.currentTarget)\n    const setName = $target.parent().data(\"set\");\n    const groupName = $target.parent().data(\"group-name\")\n    this.updateGroups(setName, groupName);\n    this.invalidatePermissionSet();\n    this.updatePermissions();\n  }\n\n  ///\n  // updates the hidden permissions fild\n  ///\n  updatePermissions() {\n    let selectedPermissions = $(\"[data-group] input[type=checkbox]:checked\")\n      .map(function () {\n        return parseInt($(this).data(\"value\"));\n      })\n      .get();\n\n    $(\"#profile_permissions\").val(selectedPermissions)\n  }\n\n  ///\n  // invalidates the permissions set hidden field, when a permission is changed\n  ///\n  invalidatePermissionSet() {\n    $(\"#permission_set_selection select\").val('').change()\n    $(\"#profile_permission_set_id\").val('')\n  }\n\n  afterChangeSelectedRole() {\n    this.updateGroups();\n  }\n\n  ///\n  // sets the state of the headr checkboxes appropriately\n  ///\n  updateGroups(setName, groupName) {\n    let permissionHeaderCheckboxesSelector = \".permission-header input[type=checkbox]\";      \n    if (setName ) {\n      permissionHeaderCheckboxesSelector = `.permission-header[data-set=${setName}][data-group=${groupName}] input[type=checkbox]`;\n    }\n    for(let header of $(permissionHeaderCheckboxesSelector)) {\n      const group = $(header).attr(\"id\")\n      const groupCheckboxes = $(`[data-group='${group}'] input[type=checkbox]`);\n\n      let total = $(groupCheckboxes).length;\n      const checked = groupCheckboxes.filter(':checked').length;\n\n      if (checked == 0) {\n        $(header).prop(\"indeterminate\", false);\n        $(header).prop(\"checked\", false);\n      } else if (checked > 0 && checked < total) {\n        $(header).prop(\"indeterminate\", true);\n      } else if (checked == total) {\n        $(header).prop(\"indeterminate\", false);\n        $(header).prop(\"checked\", true);\n      }\n    }\n  }\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static values = {\n    pendingSet: String\n  }\n\n  /**\n   * Called from delete buttons to store which set should be deleted\n   */\n  prepareDelete(event) {\n    const button = event.currentTarget\n    this.pendingSetValue = button.dataset.set\n    \n    console.log('[PermissionDeleteHandler] Prepared to delete set:', this.pendingSetValue)\n    \n    // Open the modal\n    const modal = document.getElementById('delete_permission_set_modal')\n    if (modal) {\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    }\n  }\n\n  /**\n   * Called from modal confirm button\n   * Triggers the actual deletion via group-selector controller\n   */\n  confirmDelete() {\n    if (!this.pendingSetValue) {\n      console.error('[PermissionDeleteHandler] No pending set to delete!')\n      return\n    }\n\n    console.log('[PermissionDeleteHandler] Confirming delete for set:', this.pendingSetValue)\n    \n    // Find the group-selector controller and trigger deletion\n    const groupSelectorElement = document.querySelector('[data-controller*=\"group-selector\"]')\n    if (groupSelectorElement) {\n      const groupSelectorController = this.application.getControllerForElementAndIdentifier(\n        groupSelectorElement,\n        'group-selector'\n      )\n      \n      if (groupSelectorController && groupSelectorController.deletePermissionSet) {\n        groupSelectorController.deletePermissionSet(this.pendingSetValue)\n      } else {\n        console.error('[PermissionDeleteHandler] group-selector controller or method not found')\n      }\n    }\n    \n    // Clear the pending set\n    this.pendingSetValue = null\n  }\n}\n\n", "import ApplicationController from './application_controller'\nimport Sortable, { Swap } from 'sortablejs';\n\nSortable.mount(new Swap());\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect();\n    let self = this;\n\n    new Sortable(this.element, {\n      removeOnSpill: false,\n      draggable: \".phase-box:not(.end-phase)\",\n      filter: \".phase-box.end-phase\",\n      swap: true,\n      swapClass: \"highlight\",\n      animation: 150,\n      onSort: function (event) {\n        self.updateOrder();\n      },\n      // onSpill: function (event) {\n      //   let id = $(event.item).data(\"form-id\");\n      //   $(`.form-block#form_element_${id}`).remove();\n      //   $(`[value=${id}]`).remove();\n      //   if ($(\".phase-box:not(.end-phase\").length > 1) {\n      //     $(event.item).next(\".add-phase-container\").remove();\n      //   }\n      //   setTimeout(updateOrder, 50);\n      //   self.removePhase(id);\n      // },\n    });\n\n  }\n\n  ///\n  // adds a phase and visually a phase element \n  ///\n  addPhase(event) {\n    let newPhase = $(\"<div id='new_phase_element' class='phase-box hidden'></div>\")\n    const $addPhaseContainer = $(event.currentTarget).closest('.add-phase-container')\n    // console.log(\"container: \", $addPhaseContainer)\n    $(newPhase).insertAfter($addPhaseContainer);\n    \n    const index = $(newPhase).index('.phase-box')\n    // this.logInfo(`index: ${index}`)\n    // const position = Math.max(0, (index / 2))\n    // this.logInfo(`position: ${position}`)\n    \n    const $journeyForm = $(\"#journey_form\")\n    $journeyForm.find(\"div.form-block\").addClass('hidden')\n\n    this.stimulate(\n      \"PhaseBuilderReflex#add_phase\",\n      index // position, as this is a position in an array and this is zero based, we can use the index directly\n    ).then(() => {\n      const $phaseBoxes = $('.phase-line-container .phase-box');\n      const targetPhaseBox = $phaseBoxes.eq(index);\n      const formId = targetPhaseBox.data('form-id');\n      $(`#form_element_${formId}`).removeClass('hidden');\n    });\n  }\n\n  ///\n  // adds the proposed phase as a phase to the journey\n  ///\n  addProposedPhase(event) {\n    const $target = $(event.currentTarget)\n    event.preventDefault()\n    const journeyId = $target.closest('.phase-line-container').data('journey-id')\n    this.stimulate('Journeys#add_proposed_phase', event.currentTarget, journeyId).then((event) => {\n      // $(\"#journey_structure_modal .modal-footer\").text(`Wir suchen nach '${$input.val()}'`)\n    });\n\n  }\n\n\n  removePhase(event) {\n    this.stimulate('PhaseBuilderReflex#remove_phase', id)\n  }\n\n  showPhaseSkillSet(event) {\n    const self = this\n    event.preventDefault();\n    event.stopPropagation();\n    const $target = $(event.currentTarget);\n    this.startLoading()\n    this.stimulate('PhaseBuilderReflex#show_phase_skill_set', event.currentTarget).then(payload => {\n      $target.addClass('active')\n      self.stopLoading()\n      $(\"#skill_set_modal\").modal(\"show\")      \n    });\n\n  }\n\n  skillRemoved(event) {\n    this.stimulate('PhaseBuilderReflex#remove_skill_from_skill_set').then(payload => {\n    });\n  }\n\n  showJourneySkillSet(event) {\n    const self = this\n    event.preventDefault();\n    event.stopPropagation();\n    const $target = $(event.currentTarget);\n    this.startLoading()\n    this.stimulate('PhaseBuilderReflex#show_journey_skill_set').then(payload => {\n      // const { data, element, event } = payload;\n      // console.log(\"element: \", element)\n      $target.addClass('active')\n      self.stopLoading()\n      $(\"#skill_set_modal\").modal(\"show\")\n    });\n\n  }\n\n  updateOrder() {\n   let phases = $('.phase-box[data-form-id]')\n   let order = []\n   for (let phase of phases) {\n     let id = $(phase).data(\"form-id\")\n     order.push(id)\n   }\n  //  console.log(\"journey id: \", this.element.dataset.journeyId)\n   this.stimulate('PhaseBuilderReflex#update_phase_order', null, order, this.element.dataset.journeyId)\n  }\n}\n\n", "import ApplicationController from './application_controller';\n\nexport default class PhaseChangeController extends ApplicationController {\n\n  connect() {\n    super.connect();\n    let self = this;\n\n    ///\n    // reacts on :phasechange events from phase_line.js (drag&drop of learn_units)\n    ///\n    $(document).on(\"phasechange\", function (event) {\n      // console.log(\"//// --- Phase Changed --- ////\", event);\n      self.learnUnitType = event.learnUnitType;\n      self.learnUnitSubtype = event.learnUnitSubtype;\n      self.learnUnitId = event.learnUnitId;\n      self.phaseId = event.phaseId;\n      const defId = event.defId;\n      const learnUnitPosition = event.learnUnitPosition;\n      const learnUnitTitle = event.title;\n      const proposedLearnUnitIndex = event.proposedLearnUnitIndex;\n      self.startLoading();\n      self.stimulate(\n        \"PhaseChangeReflex#update_learn_unit\",\n        self.learnUnitId,\n        self.learnUnitType,\n        self.learnUnitSubtype,\n        defId,\n        self.phaseId,\n        learnUnitPosition,\n        learnUnitTitle,\n        proposedLearnUnitIndex\n        ).then(() => {\n          // trigger click on newly created element to force loading \n          // reinitializeForms($(\"#journey_builder\"))\n          reinitializeForms($(\"#learn_units_form\"))\n          let $addedPart = $(\"#learn_path .phase-part.added\")\n          $addedPart.removeClass('added')\n          $addedPart.trigger(\"click\")\n          self.create_authenticy_token_for('#journey_form')\n          //update meta auhtorization content\n          self.reset_csrf_token()\n          self.stopLoading();\n        });\n      });\n    \n    $(document).on(\"trashdrop\", function (event) {\n      let learnUnitId = event.learnUnitId;\n      // console.log(\"//// --- Learn Unit Deleted --- ////\");\n      // console.log(\"id: \", learnUnitId);\n      self.stimulate(\"PhaseChangeReflex#delete_learn_unit\", learnUnitId);\n      // console.log(\"//// --- Learn Unit Deleted --- ////\");\n    });\n  }\n\n  getExistingPhasePosition(phaseId) {\n    let elements = [];\n    let matches;\n\n    if (phaseId) {\n      elements = $(`[value=${phaseId}]`);\n    }\n    // console.log(\"elements: \", elements);\n    if (elements.length > 0) {\n      let element = elements.first();\n      matches = $(element).attr(\"id\").match(/\\d+/g);\n    }\n\n    return matches != null && matches.length > 0 ? parseInt(matches[0]) : -1;\n  }\n\n}", "import ApplicationController from './application_controller'\nimport PhaseLine from '../packs/phase_line'\nimport Draggable from '../packs/draggable'\nimport TrashCan from '../packs/trash_can'\n\nexport default class PhaseLineController extends ApplicationController {\n\n  static targets = [\"phase\"]\n  \n  initialize() {\n    super.initialize();\n    this.useReflex = false\n  }\n\n  connect() {\n    super.connect();\n    this.openPhaseTask = null\n    this.trashCan = new TrashCan({\n      trashCanElement: \"#trash_can\",\n      relevantElement: \".phase-part[draggable=true]\",\n      relativeTo: \"#learn_path\",\n    });\n    let draggable = new Draggable();\n    let phaseLine = new PhaseLine({ element: \"#learn_path\" });\n    if(this.hasPhaseTarget) {\n      $(document).on('dragenter', '[data-phase-line-target=\"phase\"]', this.startOpening.bind(this))\n      $(document).on('dragleave', '[data-phase-line-target=\"phase\"]', this.closeOpening.bind(this))\n    }\n  }\n\n  ///\n  // expands the phase box\n  ///\n  expand(event) {\n    this.logInfo(\"expanding....\")\n    // event.preventDefault();\n    const $target = $(event.currentTarget);\n    const isFixed = $target.hasClass('fixed')\n    if (isFixed) {\n      return\n    }\n    const isExpanded = $target.hasClass('expanded')\n    const $phase = $target.next()\n    const $phaseLine = $target.closest(\".phase-line-container\")\n    $phaseLine.find(\".phase, .phase-box\").removeClass('expanded')\n    if(isExpanded) {\n      $phase.removeClass(\"expanded\")\n      $target.removeClass(\"expanded\")  \n    } else {\n      $phase.addClass(\"expanded\")\n      $target.addClass(\"expanded\")\n    }\n  }\n\n  /**\n   * This will trigger the open phase after 150 ms.\n   * @param {*} event \n   */\n  startOpening(event) {\n    if(this.openPhaseTask == null) {\n      this.openPhaseTask = setTimeout(() => this.openPhase(event), 300)\n    }\n  }\n\n  /**\n   * This will clear the openPhaseTask in case we are going through the list of phases so only one will open.\n   * @param {*} event \n   */\n  closeOpening(event) {\n    clearTimeout(this.openPhaseTask)\n    this.openPhaseTask = null\n  }\n\n  /**\n   * This will open the the phase that is dragged over and close all others\n   * @param {*} event \n   */\n  openPhase(event) {\n    const $target = $(event.currentTarget)\n    const isFixed = $target.hasClass('fixed')\n    if (isFixed) {\n      return\n    }\n    const $phase = $target.next()\n    const $phaseLine = $target.closest('.phase-line-container')\n    $phaseLine.find('.phase.expanded, .phase-box.expanded').removeClass('expanded')\n\n    $phase.addClass('expanded')\n    $target.addClass('expanded')\n  }\n}", "import Ajax from '../packs/ajax';\n\n\n/**\n * Represents a PhaseLine object.\n */\nexport default class PhaseLine {\n\n  /*\n  * constructor\n  * @param {element} element - the element to which the phase line is attached\n  * @param {options} options - the options for the phase line\n  */\n  constructor({element, options }) {\n    this.element = element\n    this.options = options\n    this.initialize()\n  }\n\n  initialize() {\n    // initialize drop events\n    this.defineHandlers()\n  }\n\n  /*\n  * defines the drop behavior\n  */\n  async drop(ev, self) {\n    ev.stopPropagation();\n\n    \n    let id = ev.dataTransfer.getData(\"id\"),\n    type = ev.dataTransfer.getData(\"type\"),\n    subtype = ev.dataTransfer.getData(\"subtype\"),\n    defId = ev.dataTransfer.getData(\"defId\"),\n    $target = $(ev.target);\n    // console.log(\"target: \", $target);\n    // console.log(\"type: \", type);\n    // console.log(\"subtype: \", subtype);\n\n    let parent = $target.parent(),\n      phaseId = parent.data(\"phase-id\");\n    if(parent.hasClass(\"module\")){\n      // a phase with a module is not a valid drop target\n      $('#flash_notifications').append($(`<div class=\"alert alert-danger justify-content-between alert-dismissible fade show\">${I18n.t(\"dict.messages.no_further_learn_units_on_modules\")}<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button></div>`));\n\n      return\n    }\n    if(subtype == \"learn_path_module\" && $(parent).children(\".phase-part\").length > 0){\n      // a phase with learn_units is not a valid drop target for a module\n      $('#flash_notifications').append($(`<div class=\"alert alert-danger justify-content-between alert-dismissible fade show\">${I18n.t(\"dict.messages.no_module_on_non_empty_phases\")}<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button></div>`));\n\n      return;\n    }\n    const title = parent.data(\"title\");\n    const proposedLearnUnitIndex = parent.data(\"plu\");\n\n    let prev = $target.prev('.phase-part:not(.opacity-30)');\n    // console.log(\"prev: \", prev);\n    let learnUnitPosition = $(parent).children('.phase-part:not(.opacity-30)').index(prev) + 1;\n\n    // console.log(\"position: \", learnUnitPosition);\n\n    $(self.element).trigger({\n      type: \"phasechange\",\n      phaseId: phaseId,\n      learnUnitPosition: learnUnitPosition,\n      learnUnitType: type,\n      learnUnitSubtype: subtype,\n      defId: defId,\n      learnUnitId: id,\n      element: this.element,\n      title: title,\n      proposedLearnUnitIndex: proposedLearnUnitIndex\n    });\n  }\n\n  /*\n  * sets the event handlers for drag&drop behavior\n  */\n  defineHandlers(){\n    let self = this;\n\n    // define the dragenter behavior\n    $(this.element).on('dragenter', '[dropzone=true]', function(ev) {\n      // $(ev.target).css('border', '1px solid green')\n      //TODO: check if there is already a learn_path_module in the current phase and set appropriate css class\n      console.log(\"dragenter: \", ev.target);\n      if($(ev.target).closest(\".phase\").find('.phase-part[data-subtype=\"learn_path_module\"]').length > 0){\n        $(ev.target).addClass('forbidden');\n        ev.originalEvent.dataTransfer.effectAllowed = 'none';\n        ev.originalEvent.dataTransfer.dropEffect = 'none';\n      } else {\n        $(ev.target).addClass('entered');\n      }\n    });\n\n    // define the dragleave behavior\n    $(this.element).on('dragleave', '[dropzone=true]', function(ev) {\n      // $(ev.target).css('border', '')\n      $(ev.target).removeClass('entered')\n      $(ev.target).removeClass('forbidden')\n    })\n\n    // define the dragover behavior\n    $(this.element).on('dragover', '[dropzone=true]', function(ev) {\n      ev.preventDefault()\n    })\n\n    // define the drop behavior\n    $(this.element).on(\"drop\", \"[dropzone=true]\", function (ev) {\n      $(ev.target).removeClass(\"entered\");\n      $(ev.target).removeClass('forbidden')\n      self.drop(ev.originalEvent, self);\n    });\n  }\n\n}\n\n/*\n* create a unique id for dynamic created elements\n*/\nfunction createUUID(){\n    var dt = new Date().getTime();\n    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n        var r = (dt + Math.random()*16)%16 | 0;\n        dt = Math.floor(dt/16);\n        return (c=='x' ? r :(r&0x3|0x8)).toString(16);\n    });\n    return uuid;\n}\n", "export default class Draggable {\n  constructor(modifyDropzone = true) {\n    this.modifyDropzone = modifyDropzone\n    let self = this\n    $(document).on('dragstart', '[draggable=true]', function(e) {\n      //e = JQueryEvent, need DragEvent here. This is contained in originalEvent\n      self.drag(e.originalEvent, self)\n    })\n    $(document).on(\"dragend\", \"[draggable=true]\", function (e) {\n      $(\".opacity-30\").removeClass(\"opacity-30\")\n      if(self.modifyDropzone) {\n        $(\"[dropzone=false]\").attr({ dropzone: true })\n      }\n    })\n  }\n\n  drag(ev, self) {\n    let target = $(ev.target),\n    id = target.data('id'),\n    dragImageTarget = target.data('drag-image-target'),\n    eliminationTargets = target.data('elimination-targets')\n\n    if(self.modifyDropzone) {\n      let prev = target.prev('[dropzone=true]'),\n      next = target.next('[dropzone=true]')\n      prev.attr({ dropzone: false })\n      next.attr({ dropzone: false })\n    }\n\n    ev.preventDefault\n    copyDataToDataTransfer(ev.dataTransfer, target.data())\n    let node = self.createDragImage(document.getElementById(dragImageTarget))\n    if(node != null) {\n      ev.dataTransfer.setDragImage(node, $(node).outerWidth() / 2, $(node).outerHeight() / 2)\n    }\n\n    if(eliminationTargets) {\n      eliminationTargets = eliminationTargets.split(',')\n      for(let elimination of eliminationTargets) {\n        let item = $('#' + elimination)\n        item.addClass('opacity-30')\n      }\n    }\n  }\n\n  createDragImage(el) {\n    if(el != null) {\n      let nodeElem = el.cloneNode(true);\n      nodeElem.style.top = \"-1000px\"\n      nodeElem.style.left = \"-1000px\"\n      nodeElem.style.position = \"absolute\"\n      nodeElem.style.pointerEvents = \"none\"\n\n      //append element for screenshoting and remove directly afterwards\n      document.body.appendChild(nodeElem)\n      setTimeout(function() {\n        document.body.removeChild(nodeElem)\n      });\n\n      return nodeElem\n    }\n    return null\n  }\n}\n\n/*\n* copies everything from JQuery.Data to DataTransfer.Data\n* the values can be accessed by camelCase in the DataTransfer.Data object\n*/\nfunction copyDataToDataTransfer(dataTransfer, data) {\n  for (let [key, value] of Object.entries(data)) {\n    dataTransfer.setData(key, value)\n  }\n  return dataTransfer\n}", "export default class TrashCan {\n  constructor({ trashCanElement, relevantElement, relativeTo }) {\n    let self = this\n    this.trashCanElement = trashCanElement\n    this.positionTrashCan(relativeTo)\n    this.defineDragHandler(relevantElement)\n    this.defineHandlers(trashCanElement)\n\n    this.showTrashCan({ show: false, animate: false })\n  }\n\n  positionTrashCan(relativeTo) {\n    let element = $(this.trashCanElement);\n    let top = $(relativeTo).offset().top - $(relativeTo).scrollTop()\n    let left = $(relativeTo).offset().left - $(relativeTo).scrollLeft()\n    let width = $(relativeTo).width()\n    element.css({\n      position: \"fixed\",\n      display: \"flex\",\n      top: top,\n      left: left + width + element.width() * 4,\n      width: element.width() * 4,\n      height: \"84vh\"\n    });\n  }\n\n  defineHandlers(trashCan) {\n    let self = this;\n\n    // define the dragenter behavior\n    $(trashCan).on(\"dragenter\", function (ev) {\n      // $(ev.target).css('border', '1px solid green')\n      if(!$(trashCan).data('can-drop')) {\n        $(trashCan).tooltip('show')\n      }\n    });\n\n    // define the dragleave behavior\n    $(trashCan).on(\"dragleave\", function (ev) {\n      // $(ev.target).css('border', '')\n      if(!$(trashCan).data('can-drop')) {\n        $(trashCan).tooltip('hide')\n      }\n    });\n\n    // define the dragover behavior\n    $(trashCan).on(\"dragover\", function (ev) {\n      ev.preventDefault();\n    });\n\n    // define the drop behavior\n    $(trashCan).on(\"drop\", function (ev) {\n      // $(ev.target).css('border', '')\n      self.drop(ev.originalEvent)\n    });\n  }\n\n  drop(event) {\n    if ($(this.trashCanElement).data(\"can-drop\")) {\n      let eliminationTargets = event.dataTransfer.getData(\"eliminationTargets\"),\n        id = event.dataTransfer.getData(\"id\")\n      if (eliminationTargets) {\n        eliminationTargets = eliminationTargets.split(\",\")\n        for (let elimination of eliminationTargets) {\n          $(\"#\" + elimination).remove()\n        }\n      }\n      $(\"[dropzone=false]\").attr({ dropzone: true })\n\n      let partId = id ? parseInt(id) : -1\n\n      $(this.trashCanElement).trigger({\n        type: \"trashdrop\",\n        learnUnitId: partId\n      });\n    }\n\n    this.showTrashCan({ show: false, animate: true });\n  }\n\n  defineDragHandler(element) {\n    let self = this;\n    $(document).on(\"dragstart\", element, function () {\n      self.showTrashCan({ show: true, animate: true })\n    });\n    $(document).on(\"dragend\", element, function () {\n      self.showTrashCan({ show: false, animate: true })\n    });\n  }\n\n  showTrashCan({ show = true, animate = false }) {\n    let self = this;\n    setTimeout(function () {\n      let element = $(self.trashCanElement)\n      if (show) {\n        if (animate) {\n          element.fadeIn()\n        } else {\n          element.fadeIn(0)\n        }\n      } else {\n        if (animate) {\n          element.fadeOut()\n        } else {\n          element.fadeOut(0)\n        }\n      }\n    });\n  }\n}\n", "import PlacesAutocomplete from 'stimulus-places-autocomplete'\n\nexport default class extends PlacesAutocomplete {\n\n  static targets = ['map', 'placeId']\n\n  static mapApi\n  static marker\n\n  initAutocomplete() {\n    if(this.hasMapTarget) {\n      this.renderMap(this.mapTarget)\n    }\n    super.initAutocomplete()\n  }\n\n  placeChanged() {\n    super.placeChanged()\n    if(typeof(this.place.place_id) != \"undefined\") {\n      if(this.hasPlaceIdTarget) {\n        $(this.placeIdTarget).val(this.place.place_id)\n        this.renderPlace()\n      }\n    } else if(typeof(this.place.name) != \"undefined\") {\n      //maybe we can try to get a place\n      this.findPlacesFromName(this.place.name)\n    }\n  }\n\n  preventSubmit(event) {\n    if(event.key == \"Enter\") {\n      event.preventDefault()\n    }\n    super.preventSubmit(event)\n  }\n\n  // You can set the Autocomplete options in this getter.\n  get autocompleteOptions() {\n    return {\n      fields: ['place_id'],\n    }\n  }\n\n  findPlacesFromName(name) {\n    let placesServiceApi = new google.maps.places.PlacesService(this.mapApi)\n\n    var request = {\n      query: name,\n      fields: ['place_id']\n    }\n\n    placesServiceApi.findPlaceFromQuery(request,(results, status) => {\n      if(status == google.maps.places.PlacesServiceStatus.OK) {\n        if(results.length > 0) {\n          $(this.placeIdTarget).val(results[0].place_id)\n          this.renderPlace()\n        }\n      }\n    })\n  }\n\n  renderMap(el) {\n    let $el = $(el)\n    this.mapApi = new google.maps.Map(el, mapsHelper.defaultConfiguration)\n    this.marker = new google.maps.Marker({\n      map: this.mapApi,\n      title: $el.attr(\"data-label\")\n    })\n    this.renderPlace()\n  }\n\n  renderPlace() {\n    let self = this\n    if(this.hasPlaceIdTarget) {\n      if ($(this.placeIdTarget).val()) {\n        let placesServiceApi = new google.maps.places.PlacesService(this.mapApi)\n        return placesServiceApi.getDetails({\n          placeId: $(this.placeIdTarget).val()\n        }, function(place, status) {\n          if (!(status === google.maps.places.PlacesServiceStatus.OK && place.geometry)) {\n            return\n          }\n          mapsHelper.updateMapWithPlace(self.mapApi, place, self.marker)\n        })\n      }\n    }\n  }\n}", "import { Controller } from \"@hotwired/stimulus\";\nclass src_default extends Controller {\n  initialize() {\n    this.placeChanged = this.placeChanged.bind(this);\n  }\n  connect() {\n    if (typeof google !== \"undefined\") {\n      this.initAutocomplete();\n    }\n  }\n  initAutocomplete() {\n    this.autocomplete = new google.maps.places.Autocomplete(this.addressTarget, this.autocompleteOptions);\n    this.autocomplete.addListener(\"place_changed\", this.placeChanged);\n  }\n  placeChanged() {\n    this.place = this.autocomplete.getPlace();\n    const addressComponents = this.place.address_components;\n    if (addressComponents !== void 0) {\n      const formattedAddress = this.formatAddressComponents(addressComponents);\n      this.setAddressComponents(formattedAddress);\n    }\n    if (this.place.geometry !== void 0) {\n      this.setGeometry(this.place.geometry);\n    }\n  }\n  setAddressComponents(address) {\n    if (this.hasStreetNumberTarget)\n      this.streetNumberTarget.value = address.street_number || \"\";\n    if (this.hasRouteTarget)\n      this.routeTarget.value = address.route || \"\";\n    if (this.hasCityTarget)\n      this.cityTarget.value = address.locality || \"\";\n    if (this.hasCountyTarget)\n      this.countyTarget.value = address.administrative_area_level_2 || \"\";\n    if (this.hasStateTarget)\n      this.stateTarget.value = address.administrative_area_level_1 || \"\";\n    if (this.hasCountryTarget)\n      this.countryTarget.value = address.country || \"\";\n    if (this.hasPostalCodeTarget)\n      this.postalCodeTarget.value = address.postal_code || \"\";\n  }\n  setGeometry(geometry) {\n    if (this.hasLongitudeTarget)\n      this.longitudeTarget.value = geometry.location.lng().toString();\n    if (this.hasLatitudeTarget)\n      this.latitudeTarget.value = geometry.location.lat().toString();\n  }\n  get autocompleteOptions() {\n    return {\n      fields: [\"address_components\", \"geometry\"],\n      componentRestrictions: {\n        country: this.countryValue\n      }\n    };\n  }\n  preventSubmit(event) {\n    if (event.code === \"Enter\") {\n      event.preventDefault();\n    }\n  }\n  formatAddressComponents(addressComponents) {\n    const data = {};\n    addressComponents.forEach((component) => {\n      const type = component.types[0];\n      data[type] = component.long_name;\n    });\n    return data;\n  }\n}\nsrc_default.targets = [\n  \"address\",\n  \"city\",\n  \"streetNumber\",\n  \"route\",\n  \"postalCode\",\n  \"country\",\n  \"county\",\n  \"state\",\n  \"longitude\",\n  \"latitude\"\n];\nsrc_default.values = {\n  country: Array\n};\nexport { src_default as default };\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n\n  connect() {\n    $(\"[data-bs-toggle=popover]\").popover(\n      {\n        html: true,\n        content: function() {\n          return $(this).parent().find('.details').html();\n        }\n      }\n    )\n\n  }\n\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = [\"label\", \"toggle\"];\n\n\n  connect() {\n    super.connect()\n    const self = this\n    if(this.hasToggleTarget) {\n      this.toggleTargets.forEach((target, index, targets) => {\n        const showExtendedTooltips = $(target).prop(\"checked\")\n        self.showTooltip({}, showExtendedTooltips)\n      })\n    }\n  }\n\n  ///\n  // toggles the extended definition tooltip option in the current users profile\n  ///\n  toggleExtendedDefinitionTooltip(event) {\n    let self = this\n    let $target = $(event.currentTarget)\n    let showExtendedTooltips = $target.prop(\"checked\");\n    // console.log(\"showExtendedTooltips: \", showExtendedTooltips)\n\n    this.stimulate(\"profileReflex#set_extended_definition_tooltip\", !showExtendedTooltips, 'journey_builder').then(payload => {\n      self.showTooltip(payload, showExtendedTooltips)\n    })\n  }\n\n  /**\n   * Show tooltip.\n   * @param {*} payload\n   * @param boolean showExtendTooltips\n   */\n  showTooltip(payload, showExtendedTooltips) {\n    const { data, element, event } = payload\n    // console.log(\"data: \", data)\n    // console.log(\"element: \", element)\n    // console.log(\"event: \", event)\n    let tooltipTitle = showExtendedTooltips ? \"data-long-title\" : \"data-short-title\"\n    let tooltiped = $(\"#group_definition_area\").find(\".learn-unit-item, .card.definition-item\")\n    // console.log(\"tooltipped: \", tooltiped)\n    tooltiped.tooltip(\"dispose\")\n    tooltiped.tooltip(\n      {\n        title: function() {return $(this).attr(tooltipTitle)}\n      }\n    )\n  }\n\n  ///\n  // adds an experience link to the current users profile\n  ///\n  addExperienceLink(event) {\n    event.preventDefault()\n    let self = this\n    const $target = $(event.currentTarget);\n    const form = $target.closest(\"form\");\n    this.stimulate(\"profileReflex#add_experience_link\", form[0]);\n    // .then(payload => {\n    //   // self.addExperienceLinkCallback(payload)\n    // })\n  }\n\n  ///\n  // adds an experience link to the current users profile\n  ///\n  removeExperienceLink(event) {\n    event.preventDefault()\n    this.stimulate(\"profileReflex#remove_experience_link\", event.currentTarget);\n    // .then(payload => {\n    //   // self.addExperienceLinkCallback(payload)\n    // })\n  }\n\n  ///\n  // edits an experience link of the current users profile\n  ///\n  editExperienceLink(event) {\n    event.preventDefault()\n    let self = this\n    const $target = $(event.currentTarget);\n    const experienceLinkName = $target.data(\"experience-link-name\");\n    // console.log(\"experienceLinkName: \", experienceLinkName)\n    const experienceLinkUrl = $target.data(\"experience-link-url\");\n    // console.log(\"experienceLinkUrl: \", experienceLinkUrl)\n    const experienceLinkDescription = $target.data(\"experience-link-description\");\n    // console.log(\"experienceLinkDescription: \", experienceLinkDescription)\n    $(\"input#profile_experience_link_name\").val(experienceLinkName)\n    $(\"input#profile_experience_link\").val(experienceLinkUrl)\n    $(\"input#profile_experience_link_description\").val(experienceLinkDescription)\n  }\n}\n", "import ApplicationController from './application_controller';\n\nexport default class PropsFilterController extends ApplicationController {\n  \n  initialize() {\n    super.initialize();\n    this.popover = null;\n  }\n\n  connect() {\n    super.connect();\n    this.initializePopover();\n    this.loadCurrentFilters();\n    this.updateFilterButtonState();\n  }\n\n  disconnect() {\n    if (this.popover) {\n      this.popover.dispose();\n    }\n  }\n\n  /*\n    Initialize Bootstrap popover for the filter button\n  */\n  initializePopover() {\n    const popoverContentElement = document.getElementById('props-filter-content');\n    \n    this.popover = new bootstrap.Popover(this.element, {\n      html: true,\n      content: () => {\n        const clonedElement = popoverContentElement.cloneNode(true);\n        clonedElement.classList.remove('d-none');\n        return clonedElement;\n      },\n      placement: 'bottom',\n      trigger: 'click'\n    });\n\n    // Add event listener for when popover is shown to load current filters\n    this.element.addEventListener('shown.bs.popover', () => {\n      this.loadCurrentFiltersInPopover();\n      this.attachPopoverEventListeners();\n    });\n  }\n\n  /*\n    Load current filter state from URL parameters\n  */\n  loadCurrentFilters() {\n    // This method is kept for compatibility but actual loading happens in loadCurrentFiltersInPopover\n  }\n\n  /*\n    Update filter button visual state based on current URL parameters\n  */\n  updateFilterButtonState() {\n    const urlParams = new URLSearchParams(window.location.search);\n    const journeyType = urlParams.get('journey_type');\n    const featured = urlParams.get('props_featured');\n    const certificates = urlParams.get('props_certificates');\n    \n    // Add visual indication if filters are active (keep as icon button but change color)\n    if ((journeyType && journeyType !== '1') || featured === '1' || certificates === '1') {\n      this.element.classList.add('text-primary');\n    } else {\n      this.element.classList.remove('text-primary');\n    }\n  }\n\n  /*\n    Load current filter state in the popover content\n  */\n  loadCurrentFiltersInPopover() {\n    const urlParams = new URLSearchParams(window.location.search);\n    const usageType = urlParams.get('journey_type');\n    const featured = urlParams.get('props_featured');\n    const certificates = urlParams.get('props_certificates');\n\n    const popoverBody = document.querySelector('.popover-body');\n    if (!popoverBody) return;\n\n    // Set radio button state\n    if (usageType) {\n      const radio = popoverBody.querySelector(`input[name=\"journey_type\"][value=\"${usageType}\"]`);\n      if (radio) radio.checked = true;\n    } else {\n      // Default to \"Alle\" if no filter is set\n      const allRadio = popoverBody.querySelector('input[name=\"journey_type\"][value=\"1\"]');\n      if (allRadio) allRadio.checked = true;\n    }\n\n    // Set checkbox state\n    if (featured === '1') {\n      const checkbox = popoverBody.querySelector('#props_featured');\n      if (checkbox) checkbox.checked = true;\n    }\n    \n    if (certificates === '1') {\n      const checkbox = popoverBody.querySelector('#props_certificates');\n      if (checkbox) checkbox.checked = true;\n    }\n  }\n\n\n  /*\n    Attach event listeners to buttons in the popover content\n  */\n  attachPopoverEventListeners() {\n    const popoverBody = document.querySelector('.popover-body');\n    if (!popoverBody) return;\n\n    // Apply filter button\n    const applyButton = popoverBody.querySelector('.props-filter-apply');\n    if (applyButton) {\n      applyButton.addEventListener('click', (event) => {\n        this.applyFilter(event);\n      });\n    }\n\n    // Close button\n    const closeButton = popoverBody.querySelector('.props-filter-close');\n    if (closeButton) {\n      closeButton.addEventListener('click', (event) => {\n        this.closePopover(event);\n      });\n    }\n  }\n\n  /*\n    Apply the selected filters by updating URL parameters\n    \n    @param event [Object] The click event from OK button\n    \n    Reads filter values from popover form elements, updates URL parameters\n    and reloads the page to apply filters\n  */\n  applyFilter(event) {\n    const urlParams = new URLSearchParams(window.location.search);\n    \n    // Get selected usage type from the popover content\n    const $popoverBody = $('.popover-body');\n    const selectedUsageType = $popoverBody.find('input[name=\"journey_type\"]:checked');\n    if (selectedUsageType.length && selectedUsageType.val() && selectedUsageType.val() !== '1') {\n      urlParams.set('journey_type', selectedUsageType.val());\n    } else {\n      urlParams.delete('journey_type');\n    }\n    \n    // Get featured checkbox state from the popover content\n    const featuredCheckbox = $popoverBody.find('#props_featured');\n    if (featuredCheckbox.length && featuredCheckbox.is(':checked')) {\n      urlParams.set('props_featured', '1');\n    } else {\n      urlParams.delete('props_featured');\n    }\n    \n    // Get certificates checkbox state from the popover content\n    const certificatesCheckbox = $popoverBody.find('#props_certificates');\n    if (certificatesCheckbox.length && certificatesCheckbox.is(':checked')) {\n      urlParams.set('props_certificates', '1');\n    } else {\n      urlParams.delete('props_certificates');\n    }\n    \n    // Update URL and reload page\n    const newUrl = window.location.pathname + '?' + urlParams.toString();\n    window.location.href = newUrl;\n    \n    // Hide popover\n    if (this.popover) {\n      this.popover.hide();\n    }\n  }\n\n  /*\n    Close the popover when close button is clicked\n    \n    @param event [Object] The click event from close button\n  */\n  closePopover(event) {\n    if (this.popover) {\n      this.popover.hide();\n    }\n  }\n}\n", "import ApplicationController from \"./application_controller\";\nimport { Popover } from \"bootstrap\";\n\nexport default class PublishHoverController extends ApplicationController {\n  static targets = [\"popoverTemplate\"]\n  \n  initialize() {\n    super.initialize();\n    this.hoverTimer = null;\n    this.hideTimer = null;\n    this.popoverInstance = null;\n  }\n\n  connect() {\n    super.connect();\n    this.setupPopover();\n  }\n\n  disconnect() {\n    this.cancelHoverTimer();\n    if (this.hideTimer) {\n      clearTimeout(this.hideTimer);\n    }\n    if (this.popoverInstance) {\n      this.popoverInstance.dispose();\n    }\n    super.disconnect();\n  }\n\n  /*\n    Sets up the Bootstrap popover using the hidden template\n  */\n  setupPopover() {\n    const publishButton = this.element.querySelector('button[name=\"publish\"]');\n    if (!publishButton) {\n      return;\n    }\n\n    if (!this.hasPopoverTemplateTarget) {\n      return;\n    }\n\n    this.popoverInstance = new Popover(publishButton, {\n      title: this.getPublishLabel(),\n      content: () => {\n        // Clone the template and return it as DOM element (not innerHTML!)\n        const template = this.popoverTemplateTarget.cloneNode(true);\n        template.classList.remove('d-none');\n        return template;\n      },\n      html: true,\n      placement: 'bottom',\n      trigger: 'manual',\n      container: 'body',\n      offset: [0, 8],\n      popperConfig: {\n        strategy: 'fixed'\n      }\n    });\n\n    \n    // Add event listeners for popover interaction\n    publishButton.addEventListener('shown.bs.popover', () => {\n      this.setupPopoverHoverEvents();\n      this.connectStimulusToPopover();\n    });\n  }\n\n  /*\n    Sets up hover events for the popover after it's shown\n  */\n  setupPopoverHoverEvents() {\n    // Find the actual popover element in the DOM\n    const popover = document.querySelector('.popover:last-child');\n    if (!popover) {\n      return;\n    }\n\n    // Add hover events to the entire popover\n    popover.addEventListener('mouseenter', () => {\n      this.cancelHidePopover();\n    });\n\n    popover.addEventListener('mouseleave', () => {\n      this.scheduleHidePopover();\n    });\n  }\n\n  /*\n    Connects Stimulus to the popover content after it's shown\n  */\n  connectStimulusToPopover() {\n    // Find the actual popover element in the DOM\n    const popover = document.querySelector('.popover:last-child');\n    if (!popover) {\n      return;\n    }\n\n    // Find the button with data-action in the popover\n    const actionButton = popover.querySelector('[data-action*=\"publishToShow\"]');\n    if (!actionButton) {\n      return;\n    }\n\n    // Add click event listener manually since Stimulus doesn't auto-connect\n    actionButton.addEventListener('click', (event) => {\n      this.publishToShow(event);\n    });\n  }\n\n  /*\n    Starts the 700ms timer when user hovers over the publish button\n    Also shows a quick tooltip for immediate feedback\n    \n    @param event [Object] The mouseenter event\n  */\n  startHoverTimer(event) {\n    this.cancelHoverTimer(); // Clear any existing timer\n    \n    // Show quick tooltip immediately for user feedback\n    const button = event.currentTarget;\n    button.setAttribute('title', this.getPublishLabel());\n    \n    this.hoverTimer = setTimeout(() => {\n      // Hide the browser tooltip before showing popover\n      button.removeAttribute('title');\n      \n      if (this.popoverInstance) {\n        this.popoverInstance.show();\n      }\n    }, 700);\n  }\n\n  /*\n    Cancels the hover timer and hides the popover when user leaves\n    \n    @param event [Object] The mouseleave event\n  */\n  cancelHoverTimer(event) {\n    if (this.hoverTimer) {\n      clearTimeout(this.hoverTimer);\n      this.hoverTimer = null;\n    }\n    \n    // Clean up tooltip if still present\n    if (event && event.currentTarget) {\n      event.currentTarget.removeAttribute('title');\n    }\n    \n    // Don't hide immediately - wait to see if user moves to popover\n    this.scheduleHidePopover();\n  }\n\n  /*\n    Schedules hiding the popover with a delay to allow interaction\n  */\n  scheduleHidePopover() {\n    // Clear any existing hide timer\n    if (this.hideTimer) {\n      clearTimeout(this.hideTimer);\n    }\n    \n    // Schedule hide with longer delay\n    this.hideTimer = setTimeout(() => {\n      if (this.popoverInstance) {\n        this.popoverInstance.hide();\n      }\n    }, 300);\n  }\n\n  /*\n    Cancels the scheduled popover hiding (when user hovers over popover)\n  */\n  cancelHidePopover() {\n    if (this.hideTimer) {\n      clearTimeout(this.hideTimer);\n      this.hideTimer = null;\n    }\n  }\n\n  /*\n    Handles the default publish action (redirect to editor list)\n    \n    @param event [Object] The click event on the main publish button\n  */\n  publishToList(event) {\n    // Hide popover immediately\n    if (this.popoverInstance) {\n      this.popoverInstance.hide();\n    }\n    \n    // The form submission will happen naturally with the default behavior\n    // No need to prevent default - let the form submit normally\n  }\n\n  /*\n    Handles the \"Show View\" action from the popover button\n    This method is called by Stimulus when the button in the template is clicked\n    \n    @param event [Object] The click event on the popover button\n  */\n  publishToShow(event) {\n    event.preventDefault();\n    \n    // Hide popover immediately\n    if (this.popoverInstance) {\n      this.popoverInstance.hide();\n    }\n\n    // Add hidden input to form to indicate we want to redirect to show view\n    const form = document.getElementById('journey_form');\n    if (form) {\n      // Remove any existing redirect_to_show input\n      const existingInput = form.querySelector('input[name=\"redirect_to_show\"]');\n      if (existingInput) {\n        existingInput.remove();\n      }\n\n      // Add new hidden input\n      const hiddenInput = document.createElement('input');\n      hiddenInput.type = 'hidden';\n      hiddenInput.name = 'redirect_to_show';\n      hiddenInput.value = 'true';\n      form.appendChild(hiddenInput);\n\n      // Also add the publish button name/value\n      const publishInput = document.createElement('input');\n      publishInput.type = 'hidden';\n      publishInput.name = 'publish';\n      publishInput.value = 'true';\n      form.appendChild(publishInput);\n\n      // Submit the form\n      form.submit();\n    }\n  }\n\n\n  /*\n    Gets the localized label for the main publish button\n    \n    @return [String] The localized label\n  */\n  getPublishLabel() {\n    // Try to get from Rails I18n if available, fallback to German\n    return window.I18n?.t?.('dict.messages.publish') || 'Ver\u00F6ffentlichen';\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nexport default class extends Controller {\n\n  static targets = ['rating']\n\n  connect() {\n    this.initRatings()\n  }\n\n  initRatings() {\n    $(this.ratingTargets).each(function(i, el) {\n      var $el, $ratingAverage, $ratingLabel, $ratingTooltip, $ratingUser\n      $el = $(el)\n      if ($el.data(\"initializedRating\")) {\n        return\n      }\n      $el.data(\"initializedRating\", true)\n      $ratingAverage = $el.find(\".rating-average\")\n      $ratingUser = $el.find(\".rating-user\")\n      $ratingLabel = $el.find(\".rating-average-label\")\n      $ratingAverage.barrating({\n        theme: \"custom-\" + ($el.attr(\"data-styling\")),\n        initialRating: Math.round(parseFloat($ratingAverage.attr(\"data-value\"))),\n        readonly: true\n      });\n      if (!$ratingUser.length) {\n        return\n      }\n      $ratingUser.barrating({\n        theme: \"custom-\" + ($el.attr(\"data-styling\")),\n        showSelectedRating: false,\n        allowEmpty: false,\n        deselectable: false\n      });\n      $ratingTooltip = $ratingAverage.parents(\".br-wrapper\")\n      $ratingTooltip.tooltipster({\n        animation: 'fade',\n        trigger: 'click',\n        delay: 200,\n        side: 'bottom',\n        interactive: true,\n        theme: 'tooltipster-rating',\n        content: $el.find(\".rating-tooltip-content\"),\n        functionReady: function(instance, helper) {\n          return $ratingUser.barrating(\"set\", $ratingUser.attr(\"data-value\"))\n        }\n      })\n      return $el.find(\".rating-submit\").click(function() {\n        var value\n        value = $ratingUser.data(\"barrating\").ratingValue\n        if (!value) {\n          return false\n        }\n        $.post($el.attr(\"data-path\"), {\n          value: value\n        }, function(data) {\n          var rating\n          rating = parseFloat(data[\"average_rating\"])\n          $ratingAverage.barrating(\"set\", Math.round(rating))\n          $ratingUser.attr(\"data-value\", value)\n          $ratingLabel.html(rating.toFixed(1))\n          return $ratingTooltip.tooltipster(\"close\")\n        });\n        return false\n      })\n    })\n  }\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  initialize() {\n    super.initialize()\n    // this.initializers = {\n    //   simple: this.initClickListeners,\n    //   in_page: this.initInPage,\n    // }\n\n    this.$area = $(this.element)\n  }\n\n  connect() {\n    super.connect()\n    // console.log(`${this.identifier}-controller connected`)\n    this.initializeRatings()\n  }\n\n  initializeRatings() {\n    this.$area.find(\".rating\").each(function(i, el) {\n      // var $el, $ratingAverage, $ratingLabel, $ratingTooltip, $ratingUser;\n      const $el = $(el);\n      if (el.dataset.initializedRating) {\n        return;\n      }\n      el.dataset.initializedRating = true;\n      const $ratingAverage = $el.find(\".rating-average\");\n      const $ratingUser = $el.find(\".rating-user\");\n      const $ratingLabel = $el.find(\".rating-average-label\");\n      $ratingAverage.barrating({\n        theme: \"custom-\" + ($el.attr(\"data-styling\")),\n        initialRating: Math.round(parseFloat($ratingAverage.attr(\"data-value\"))),\n        readonly: true\n      });\n      if (!$ratingUser.length) {\n        return;\n      }\n      $ratingUser.barrating({\n        theme: \"custom-\" + ($el.attr(\"data-styling\")),\n        showSelectedRating: false,\n        allowEmpty: false,\n        deselectable: false\n      });\n      const $ratingTooltip = $ratingAverage.parents(\".br-wrapper\");\n      $ratingTooltip.tooltipster({\n        animation: 'fade',\n        trigger: 'click',\n        delay: 200,\n        side: 'bottom',\n        interactive: true,\n        theme: 'tooltipster-rating',\n        content: $el.find(\".rating-tooltip-content\"),\n        functionReady: function(instance, helper) {\n          return $ratingUser.barrating(\"set\", $ratingUser.attr(\"data-value\"));\n        }\n      });\n      return $el.find(\".rating-submit\").click(function() {\n        const value = $ratingUser.data(\"barrating\").ratingValue;\n        if (!value) {\n          return false;\n        }\n        $.post($el.attr(\"data-path\"), {\n          value: value\n        }, function(data) {\n          var rating;\n          rating = parseFloat(data[\"average_rating\"]);\n          $ratingAverage.barrating(\"set\", Math.round(rating));\n          $ratingUser.attr(\"data-value\", value);\n          $ratingLabel.html(rating.toFixed(1));\n          return $ratingTooltip.tooltipster(\"close\");\n        });\n        return false;\n      });\n    });\n  }\n\n}\n", "import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n\n  selectRoom(event) {\n    let $target = $(event.currentTarget);\n    console.log($target);\n    $('.room-item.bg-light').removeClass('bg-light');\n    this.stimulate('Rooms#select_room', $target.data('room-id'));\n  }\n}", "import { Controller } from '@hotwired/stimulus'\nimport ScrollMagic from 'scrollmagic'\nimport 'scrollmagic/scrollmagic/uncompressed/plugins/debug.addIndicators'\n\nexport default class extends Controller {\n\n  static values = {\n    config: Object,\n    enabled: Boolean,\n    embeddedClass: String\n  }\n\n  initialize() {\n    super.initialize()\n    this.debug = true\n  }\n\n  connect() {\n    super.connect()\n\n    if(!this.enabledValue) return\n\n    // initialize scroll magic for the heavy lifting of detecting element is visible.\n    const self = this\n    this.scrollMagicController = new ScrollMagic.Controller()\n    if (this.configValue) {\n\n      let parent = $(this.element)\n\n      if(this.embeddedClassValue !== '') {\n        parent = $(`.${this.embeddedClassValue}`).find(this.element)\n      }\n\n      for (var key in this.configValue) {\n        const animation = this.configValue[key]\n\n        parent.find(key).each(function() {\n          $(this).addClass('invisible')\n          const scene = new ScrollMagic.Scene(\n            {\n              triggerElement: this,\n              triggerHook: 0.9,\n              reverse: false,\n            }\n          )\n          if(this.debug) {\n            scene.addIndicators({ name: this })\n          }\n          scene.on(\"enter\", function (event) {\n            //trigger the animate css animation we defined in the config\n            const triggerElement = $(event.currentTarget.triggerElement())\n            triggerElement.removeClass('invisible')\n            triggerElement.addClass(`animate__animated ${animation}`)\n          })\n          scene.addTo(self.scrollMagicController)\n        })\n      }\n    }\n  }\n\n  disconnect() {\n    super.disconnect()\n    // destroy the scroll magic controller along with the stimulus controller\n    if (this.scrollMagicController != null) {\n      this.scrollMagicController.destroy()\n    }\n  }\n}", "import ApplicationController from './application_controller'\n\n// Select2 Integration\n// import 'select2'\n\n////\n// enables select2 behavior for all selects with class 'select2'\n////\nexport default class extends ApplicationController {\n\n  static values = {\n    field: String\n  }\n\n  initialize() {\n    super.initialize()\n  }\n\n  connect() {\n    super.connect()\n    // $(\"select.select2-enabled\").on('mouseenter', function(event) {\n    //   console.log(\"select2 has focus now\")\n    //   let $target = $(event.currentTarget);\n    //   $target.select2({tags: true});\n    // });\n    let self = this;\n    let $parent = $(this.element).parent();\n    if (this.hasFieldValue) {\n      if (this.fieldValue == \"tenant_user_email\") {\n        // select2 initialization for email creation\n        let $containingModal = $(this.element).closest(\".modal\");\n\n        let $emailSelect = $(\"select.select2-email\");\n        $emailSelect.select2({\n          tags: true,\n          placeholder: I18n.t('shared.email'),\n          dropdownParent: $containingModal,\n          insertTag: function (data, tag) {\n            let trimmedTag = $.trim(tag.text);\n            // console.log(\"Tag: \", trimmedTag);\n            const emailRegex = /^[\\w-]+@[\\w-]+\\.\\w{2,3}$/g;\n            let isEmail = emailRegex.test(trimmedTag);\n            // console.log(\"isEmail: \", isEmail);\n            if(isEmail) {\n             // Insert the tag at the end of the results\n              data.push(tag);\n              $parent.find(\".select2-steered input\").prop(\"disabled\", false).removeClass(\"disabled\").parent().removeClass(\"disabled\");\n            }\n          }\n        });        \n      } else {\n        console.warn(\"Unknown field value for select2 initialization: \", this.fieldValue);\n      }\n\n    } else {\n      // select2 initialization for default ones\n      let $select = $(this.element).find(\"select.select2\");\n      \n      // If no select found in controller element, check the controller element itself\n      if ($select.length === 0 && $(this.element).is(\"select.select2\")) {\n        $select = $(this.element);\n      }\n      \n      // Initialize each select2 element\n      $select.each(function() {\n        let $this = $(this);\n        \n        // Skip if already initialized\n        if ($this.hasClass('select2-hidden-accessible')) {\n          return;\n        }\n        \n        let options = {\n          width: $this.data('select2Width') || '100%',\n          dropdownAutoWidth: true\n        };\n        \n        $this.select2(options);\n        const minWidth = $this.data('select2MinWidth');\n        if (minWidth) {\n          $this.next('.select2').css('min-width', minWidth);\n        }\n        $this.on('select2:select select2:clear', function () {\n          const selectElement = $this.get(0);\n          if (selectElement) {\n            selectElement.dispatchEvent(new Event('change', { bubbles: true }));\n          }\n        });\n      });\n    }\n\n\n  }\n\n  disconnect() {\n    super.disconnect()\n  }\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static values = {\n    init: String,\n    url: String\n  }\n\n\n  initialize() {\n    super.initialize()\n    this.initializers = {\n      simple: this.initClickListeners,\n      in_page: this.initInPage,\n    }\n\n    this.$area = $(this.element)\n  }\n\n  connect() {\n    super.connect()\n    let self = this\n    let initMethods = this.initValue.split(\" \")\n    if(initMethods[0] == \"\") {\n      initMethods = ['simple'] \n    }\n    initMethods.forEach(function (initializer, index) {\n      self.initializers[initializer].bind(self)()\n    })\n  }\n\n  initClickListeners() {\n    const self = this;\n    let clickables = self.$area.find(\"td:not(.not-clickable)\");\n    // clickables.each(function( index ) {\n    //   console.log(\"clickable: \", this);\n    // })\n    clickables.on(\"click\", function() {\n      const path = self.urlValue\n      // console.log(`redirecting to ${path}`);\n      document.location.href = path;\n    });\n  }\n\n  initInPage() {\n\n  }\n\n  ///\n  // loads the given partial via reflex\n  // locals for the partial is the instance defined by class and id (all parameters are given as data attributes)\n  // selected elements can get special css class (selection-class)\n  // one also can define a call (method name) that is send to the instance with the current user as a parameter\n  ///\n  loadInPage(event) {\n    // console.log(\"loading in page\")\n    const $target = $(event.currentTarget)\n    const id = $target.data('id')\n    const clazz = $target.data('clazz')\n    const partial = $target.data('partial')\n    const selector = $target.data('selector')\n    const selectionClass = $target.data('selection-class')\n    const selectionSelector = $target.data('selection-selector')\n    const instanceCall = $target.data('instance-call-for-user')\n    // console.log(`class: ${clazz}`)\n    // console.log(`id: ${id}`)\n    // console.log(`partial: ${partial}`)\n    // console.log(`selection class: ${selectionClass}`)\n    // console.log(`instance call: ${instanceCall}`)\n    \n    // set selection class to all childs of parent (after unset selectionClass on all others)\n    let selectedClass = $target.attr(\"class\").split(/\\s+/).join(\".\");\n    selectedClass = `.${selectedClass}`\n    let allSelectables = $target.parent().find(selectedClass).find(selectionSelector)\n    allSelectables.removeClass(selectionClass)\n    // console.log(\"allSelectables: \", allSelectables)\n    $target.find(selectionSelector).addClass(selectionClass)\n    // console.log(`selected class: ${selectedClass}`)\n    this.stimulate(\"selectionReflex#loadInPage\", clazz, id, partial, selector, instanceCall)\n  }\n\n}\n\n", "import { Controller } from '@hotwired/stimulus';\nexport default class extends Controller {\n  connect() {\n    $(this.element).find('.selectpicker').selectpicker();\n    $('.modal-backdrop').remove();\n  }\n}", "import { start } from 'activestorage';\nimport ApplicationController from './application_controller'\nimport Sortable from 'sortablejs'\n\nexport default class extends ApplicationController {\n\n  static values = {\n    init: String,\n    togglerClass: String,\n    togglerId: String,\n    baseRatingId: Number,\n    protected: Boolean,\n    editable: String\n  }\n\n  initialize() {\n    super.initialize();\n    const baseRatingId = this.baseRatingIdValue\n    // console.log(\"baseRatingId in initializer is: \", baseRatingId)\n\n    this.initializers = {\n      sortables: this.initializeSortables,\n      droppables: this.initializeDroppables,\n      select2: this.initializeSelect2,\n      profile_search: this.initializeProfileSearch\n    }\n    this.listenersSet = false\n  }\n\n  connect() {\n    super.connect();\n    const self = this\n    const initMethods = this.initValue.split(\" \");\n\n    initMethods.forEach(function (initializer, index) {\n      // console.log(\"processing initializer: \", initializer)\n      if (initializer == \"\") {return};\n      self.initializers[initializer].bind(self)()\n    })\n  } \n\n  ///\n  // initializes the search triggered by a core skill selection or a skill deletion\n  ///\n  initializeProfileSearch() {\n    // setup profile array for selected profiles\n    this.selectedProfiles = []\n  }\n\n  ///\n  // initializes the select2 behavior for the hard skills modal\n  ///\n  initializeSelect2() {\n    const self = this\n    $(\"#hard_category_selection\").select2({\n      placeholder: I18n.t('shared.choose_category'),\n      dropdownParent: $(\"#hard_skill_modal\")\n    })\n    $('#hard_category_selection').on('select2:select', function (e) {\n      e.preventDefault()\n      var data = e.params.data;\n      // console.log(data);\n      const category = data.text;\n      // console.log(`... ${category}`)\n\n      $.ajax({\n        type: \"GET\",\n        url: `skill_categories/hard_skill_subcategories.json?category=${category}`,\n        success: (data) => {\n          // console.log(`subcategories: ${data}`)\n          const $hardSubcategorySelect = $('#hard_subcategory_selection')\n          $hardSubcategorySelect.find(\"option\").remove();\n          if($hardSubcategorySelect.hasClass(\"select2-hidden-accessible\")) {\n            $hardSubcategorySelect.off('select2:select')\n            $hardSubcategorySelect.select2('destroy');\n          }\n          $hardSubcategorySelect.select2({\n            placeholder: I18n.t('shared.choose_subcategory'),\n            data: data\n          })\n          $hardSubcategorySelect.removeClass('hidden')\n          $hardSubcategorySelect.on('select2:select', function (e) {\n            var data = e.params.data;\n            const subcategory = data.text;\n            // console.log(`subcategory: ${subcategory}`)\n            $(\"#hard_skill_import_button\").prop('disabled', false)\n          });      \n        }\n      })\n\n    });\n  }\n\n  ///\n  // initializes the #skill_tree skill list, to get the sortable/drag behavior\n  ///\n  initializeSortables() {\n    const self = this\n    \n    $(\"#skill_tree .skills\").each(function( index ) {\n      // console.log(\"sortable: \", this)\n      Sortable.create(this, {\n        group: {\n          name: \"skills\",\n          pull: 'clone',\n          put: false\n        },\n        sort: false,\n        draggable: \".skill:not(.disabled)\",\n        onRemove: function (event) {\n          const $skillClone = $(event.clone);\n          $skillClone.addClass('disabled')\n        },\n      })\n    });\n\n  }\n\n  ///\n  // initializes the #skill_rating skill list, to get the drop behavior\n  ///\n  initializeDroppables() {\n    const self = this\n    const baseRatingId = self.baseRatingIdValue\n    // console.log(\"baseRatingId in droppable initializer is: \", baseRatingId)\n\n\n    $(\".skill-rating .skills\").each(function( index ) {\n      Sortable.create(this, {\n        group: \"skills\",\n\n        onAdd: function (/**Event*/evt) {\n          const skillId = $(evt.item).data(\"id\")\n          // const levelName = $(evt.to).attr('id')\n\n          const levelIndex = $(evt.to).data('level')\n          const position = evt.newIndex\n          // console.log(`added: ${skillId} on index ${position}`)\n          self.stimulate('Skill#add_skill_to_level', skillId, baseRatingId, levelIndex, position, self.protectedValue).then(() => {\n            document.dispatchEvent(new CustomEvent('skills:changed', { detail: { skill_rating_id: baseRatingId } }));\n          })\n\n        },\n        // onSort: function (evt) {\n        //   console.log('sorted')\n        // },\n        onUpdate: function (/**Event*/evt) {\n          const $skill = $(evt.item)\n          const skillSetSkillId = $skill.data(\"skill-set-skill-id\")\n          const position = evt.newIndex\n          // console.log(`updated skill with skill-set-skill-id '${skillSetSkillId}' to new index: ${position}`)\n          self.stimulate('Skill#reposition_skill_on_level', skillSetSkillId, baseRatingId, position).then(() => {\n            document.dispatchEvent(new CustomEvent('skills:changed', { detail: { skill_rating_id: baseRatingId } }));\n          })\n        },\n\n      })\n    });\n\n    // setup sortable for compare skills\n    $(\".skill-rating .compare-skills\").each(function( index ) {\n      Sortable.create(this, {\n        group: {\n          name: \"compare-skills\",\n          pull: 'clone',\n          put: false\n        },\n        sort: false,\n      })\n    });\n\n    // setup sortable for external skills\n    $(\".skill-rating .external-skills\").each(function( index ) {\n      Sortable.create(this, {\n        group: {\n          name: \"external-skills\",\n          put: ['skills', 'compare-skills', 'external-skills']\n        },\n        sort: true,\n\n        onAdd: function (/**Event*/evt) {\n          const skillId = $(evt.item).data(\"id\")\n          // const levelName = $(evt.to).attr('id')\n\n          const levelIndex = $(evt.to).data('level')\n          const position = evt.newIndex\n          // console.log(`added: ${skillId} on index ${position}`)\n          self.stimulate('Skill#add_skill_to_level', skillId, baseRatingId, levelIndex, position, self.protectedValue).then(() => {\n            document.dispatchEvent(new CustomEvent('skills:changed', { detail: { skill_rating_id: baseRatingId } }));\n          })\n\n        },\n        // onSort: function (evt) {\n        //   console.log('sorted')\n        // },\n        onUpdate: function (/**Event*/evt) {\n          const $skill = $(evt.item)\n          const skillSetSkillId = $skill.data(\"skill-set-skill-id\")\n          const position = evt.newIndex\n          // console.log(`updated skill with skill-set-skill-id '${skillSetSkillId}' to new index: ${position}`)\n          self.stimulate('Skill#reposition_skill_on_level', skillSetSkillId, baseRatingId, position).then(() => {\n            document.dispatchEvent(new CustomEvent('skills:changed', { detail: { skill_rating_id: baseRatingId } }));\n          })\n        },\n\n      })\n    });\n  }\n\n  ///\n  // shows the regarding input fields to add a new skill category\n  ///\n  showSkillCategoryInputs(event) {\n    let $target = $(event.currentTarget);\n    let parentCatId = this.data.get(\"categoryParentId\")    \n    // console.log(\"parent id: \", parentCatId)\n    \n    let li = $target.closest(\"li\")\n    // console.log(\"li: \", li)\n    li.find(\"> .category-form-wrapper\").toggleClass(\"hidden\")\n\n  }\n\n  ///\n  // adds a skill category to the hierarchy\n  ///\n  addSkillCategory(event) {\n    let $target = $(event.currentTarget);\n    let parentCatId = this.data.get(\"categoryParentId\")\n    // console.log(\"parent id: \", parentCatId)\n\n    let $formWrapper = $target.closest(\"li\").find(\".category-form-wrapper\")\n    $formWrapper.hide()\n    let title = $formWrapper.find(\"input[name=title]\").val()\n    // console.log(\"title: \", title)\n\n    this.stimulate(\"SkillsReflex#add_skill_category\", title, parentCatId).then(() => {\n      this.stopLoading();\n    });\n  }\n\n  ///\n  // called when the skill tree toggle button is clicked to select another main category\n  ///\n  toggleMain(event) {\n    // console.log(\"toggled main: \", event)\n    // event.preventDefault();\n    \n    const $target = $(event.currentTarget);\n    const $input = $target\n    const catId = $input.val()\n    // console.log(`toggled to `, catId);\n    const options = {left: 'hard', right: 'soft'}\n    const main_id = `#${this.togglerIdValue}${options[catId]}`\n    // \"#main_skill_accordion_\" + options[catId]\n    // console.log(`main id: ${main_id}`)\n    const $mainCategory = $(main_id)\n    // console.log(\"main category: \", $mainCategory)\n    $(`.${this.togglerClassValue}`).addClass(\"hidden\")\n    $mainCategory.removeClass(\"hidden\")\n  }\n\n  ///\n  // removes the skill from current skill set\n  ///\n  removeSkill(event) {\n    // event.preventDefault();\n    const self = this\n    const $target = $(event.currentTarget);\n    // console.log(\"target: \", $target)\n    const $skill = $target.closest(\".skill\")\n    const skillId = $skill.data(\"id\")\n    let skillSetId = $skill.closest(\".skills\").data(\"skill-set-id\")\n    // console.log(`skillSetId: `, skillSetId);\n    if(skillSetId == undefined) { \n      // console.log(\"skill set id is undefined, so we use external skills\")\n      skillSetId = $skill.closest(\".external-skills\").data(\"skill-set-id\")\n    }\n    // console.log(`skillId: `, skillId);\n    // console.log(`skillSetId: `, skillSetId);\n    const hasSkillTree = $(\"#skill_tree\").length > 0\n    this.startLoading()\n    this.stimulate('Skill#remove_skill_from_level', skillId, skillSetId, hasSkillTree).then(() => {\n      //  document.dispatchEvent(new CustomEvent('skill:removed', { detail: { skillId: skillId, skillSetId: skillSetId } }));\n      document.dispatchEvent(new CustomEvent('skills:changed'));\n      $skill.remove()\n      self.stopLoading()\n    })\n  }\n\n  ///\n  // removes the skill rating entry from current skill set\n  ///\n  removeRatingEntry(event) {\n    // event.preventDefault();\n    const self = this\n    const $target = $(event.currentTarget);\n    // console.log(\"target: \", $target)\n    const $skill = $target.closest(\".skill\")\n    const skillRatingEntryId = $target.data(\"rating-entry-id\")\n    // console.log(`skillRatingEntryId: `, skillRatingEntryId);\n    const hasSkillTree = $(\"#skill_tree\").length > 0\n    this.startLoading()\n    this.stimulate('Skill#remove_skill_rating_entry', skillRatingEntryId, hasSkillTree).then(() => {\n      $skill.remove()\n      self.stopLoading()\n    })\n  }\n\n  toggle_core_skill(event) {\n    event.preventDefault();\n    // console.log(\"toggle core skill: \", event)\n    const $target = $(event.currentTarget);\n    const $skill = $target.closest(\".skill\")\n    const skillId = $skill.data(\"id\")\n    const skillSetId = $skill.closest(\".skills\").data(\"skill-set-id\")\n    this.stimulate('Skill#toggle_core_skill', skillId, skillSetId).then(() => {\n      document.dispatchEvent(new CustomEvent('skills:changed'));\n    })\n    $target.toggleClass('active')\n  }\n\n  ///\n  // called when the skill rating toggle button is clicked to select another layout\n  ///\n  toggleRatingLayout(event) {\n    // console.log(\"toggled main: \", event)                                                                                                                           \n    event.preventDefault();\n    const self = this;\n    const $target = $(event.currentTarget);\n    // console.log(\"target:\", $target)\n    const $input = $target\n    const options = {left: 'list', right: 'confirmed'}\n    const layoutIndex = $input.val()\n    // console.log(\"layoutIndex: \", layoutIndex)\n    const layout = options[layoutIndex]\n    // console.log(`toggled to `, layout);\n    document.dispatchEvent(new CustomEvent('tooltips:destroy.needed'));\n    this.stimulate('Skill#toggle_rating_layout', layout, this.baseRatingIdValue).then(() => {\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    });  \n  }\n\n  ///\n  // called when the skill rating source toggle button is clicked to select another rating source (self or external evaluation)\n  ///\n  toggleRatingSource(event) {\n    event.preventDefault();\n    const self = this;\n    const $target = $(event.currentTarget);\n    const $input = $target\n    const options = {left: 'self', right: 'external'}\n    const sourceIndex = $input.val()\n    // console.log(\"sourceIndex: \", sourceIndex)\n    const source = options[sourceIndex]\n    // console.log(`toggled to `, source);\n    document.dispatchEvent(new CustomEvent('tooltips:destroy.needed'));\n    this.stimulate('Skill#toggle_rating_source', source, this.baseRatingIdValue).then(() => {\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    });  \n  }\n\n  ///\n  // called when the skill rating should change between source and target on rating_development component\n  ///\n  toggleRating(event) {\n    // console.log(\"toggled main: \", event)\n    event.preventDefault();\n    \n    const $target = $(event.currentTarget);\n    const $input = $target\n    const options = {left: 'source', right: 'target'}\n    const ratingIndex = $input.val()\n    const rating = options[ratingIndex]\n    // console.log(`toggled to `, rating);\n    this.stimulate('Skill#toggle_rating', rating, this.baseRatingIdValue)  \n  }\n\n  ///\n  // starts a profile search with a given rating\n  ///\n  profile_search(event) {\n    const self = this\n    this.selectedProfiles = []\n    // console.log(\"profile search...\")\n    event.preventDefault();\n    // const baseRatingId = event.detail.skill_rating_id;\n    // console.log(\"event\", event)\n    // console.log(\"baseRatingId\", baseRatingId)\n\n    const $resultArea = $(\"#profile_search\")\n\n    const $searchButton = $(\"#search_button\")\n    $searchButton.attr(\"disabled\", \"true\")\n    const baseRatingId= this.baseRatingIdValue\n    // console.log(\"baseRatingId\", baseRatingId)\n    const $data = $resultArea.find(\".data\").first()\n    // console.log(\"data\", $data)\n    const gradeMatching = $data.data('grade-matching')\n    // console.log(\"grade matching\", gradeMatching)\n    const performerRange = $data.data('performer-range')\n    const context = this.getParam('context')\n    this.startLoading()\n    this.stimulate('Skill#profile_search', baseRatingId, gradeMatching, performerRange, context).then(() => {\n      $searchButton.attr(\"disabled\", null)\n      // compute the width of profile cards to be able to scroll them\n      const $skillsArea = $(\"#skills\")\n      const $profilesArea = $(\"#profiles\")\n      const profilesAreaWidth = $resultArea.width - $skillsArea.width\n      $profilesArea.css({ width: profilesAreaWidth })\n\n  \n      // setup listeners for skills changes\n      // if (!self.listenersSet) {        \n      //   $skillRating.on(\"skills:changed\", function (event) {\n      //     self.profile_search(event)\n      //   });\n      //   self.listenersSet = true;\n      // } // --> now handled in a stimulus action on edit page of skill_profiles\n      $('[data-bs-toggle=\"tooltip\"]').tooltip();\n\n      self.stopLoading()\n    });\n  }\n\n  ///\n  // increases the search space\n  ///\n  profile_search_more_overperformer(event) {\n    event.preventDefault();\n    // console.log(\"profile more overperformer...\")\n    this.profile_search_more_performer(\"over\")\n  }\n\n  ///\n  // decreases the search space\n  ///\n  profile_search_more_underperformer(event) {\n    event.preventDefault();\n    // console.log(\"profile more underperformer...\")\n    this.profile_search_more_performer(\"under\")\n  }\n\n  ///\n  // increases/decreases the search space\n  ///\n  profile_search_more_performer(direction) {\n    const self = this\n    this.selectedProfiles = []\n\n    const baseRatingId= this.baseRatingIdValue\n    // console.log(\"baseRatingId\", baseRatingId)\n    const $resultArea = $(\"#profile_search\")\n    const $data = $resultArea.find(\".data\").first()\n    const skillMatching = $data.data('skill-matching')\n    const gradeMatching = $data.data('grade-matching')\n    const performerRange = $data.data('performer-range') || 0\n    const $searchButton = $(\"#search_button\")\n    const context = this.getParam('context')\n    $searchButton.attr(\"disabled\", \"true\")\n    this.startLoading()\n    this.stimulate('Skill#profile_search_performers', baseRatingId, skillMatching, gradeMatching, performerRange, direction, context).then(() => {\n      $searchButton.attr(\"disabled\", null)\n      // compute the width of profile cards to be able to scroll them\n      const $skillsArea = $(\"#skills\")\n      const $profilesArea = $(\"#profiles\")\n      const profilesAreaWidth = $resultArea.width - $skillsArea.width\n      $profilesArea.css({ width: profilesAreaWidth })\n      $('[data-bs-toggle=\"tooltip\"]').tooltip();\n\n      self.stopLoading()\n    });\n  }\n\n\n  profile_search_move_up(event) {\n    event.preventDefault();\n    const $profilesArea = $(\"#profiles .cards\")\n    const lastShown = $(\".card.profile:not(.hidden)\", $profilesArea).last()\n    // console.log(\"last shown: \", lastShown)\n    // console.log(\"last shown index: \", lastShown.index())\n    $(\".card.profile:not(.hidden):not(.base)\", $profilesArea).addClass('hidden')\n    lastShown.nextAll().slice(0,8).removeClass('hidden')\n    // don't forget to change curent page accordingly\n    this.change_current_page(\"down\")\n  }\n  \n  profile_search_move_end(event) {\n    event.preventDefault();\n    const $profilesArea = $(\"#profiles .cards\")\n    const allCards = $(\".card.profile:not(.base)\", $profilesArea)\n    allCards.addClass('hidden')\n    const numberCards = allCards.length\n    // console.log(`all cards: ${numberCards}`)\n    let numberCardsOnLastPage = numberCards % 8\n    if (numberCardsOnLastPage == 0){\n      numberCardsOnLastPage = 8\n    }\n    // console.log(`number cards on last page: ${numberCardsOnLastPage}`)\n    const shownArea = allCards.slice(numberCards - numberCardsOnLastPage, numberCards)\n    // console.log(\"shown Area: \", shownArea)\n    shownArea.removeClass('hidden')\n    // don't forget to change curent page accordingly\n    this.change_current_page(\"end\")\n  }\n  \n  profile_search_move_down(event) {\n    event.preventDefault();\n    const $profilesArea = $(\"#profiles .cards\")\n    const firstShown = $(\".card.profile:not(.hidden):not(.base)\", $profilesArea).first()\n    // console.log(\"first shown: \", firstShown)\n    // console.log(\"first shown index: \", firstShown.index())\n    $(\".card.profile:not(.hidden):not(.base)\", $profilesArea).addClass('hidden')\n    const prevLastHidden = firstShown.prevAll()\n    // console.log(\"prev last hidden index: \", prevLastHidden.first().index())\n    const shownArea = prevLastHidden.slice(0,8)\n    // console.log(\"shown area: \", shownArea)\n    // check if on page 1 we have less profiles and stuff if necessary\n    const numberProfiles = shownArea.length\n    if (numberProfiles < 8) {\n      $.merge(shownArea,firstShown.nextAll().addBack().slice(0, (9 - numberProfiles)))\n    }\n    shownArea.removeClass('hidden')\n    // don't forget to change curent page accordingly\n    this.change_current_page(\"up\")\n  }\n\n  profile_search_move_start(event) {\n    event.preventDefault();\n    const $profilesArea = $(\"#profiles .cards\")\n    const allCards = $(\".card.profile:not(.base)\", $profilesArea)\n    allCards.addClass('hidden')\n    const shownArea = allCards.slice(0,8)\n    // console.log(\"shown Area: \", shownArea)\n    shownArea.removeClass('hidden')\n    // don't forget to change curent page accordingly\n    this.change_current_page(\"start\")\n  }\n  \n\n  ///\n  // changes the current page visualization\n  // as well as it disables the prev / next buttons on the edges\n  ///\n  change_current_page(dir) {\n    let currentPage = parseInt($(\"#current_page\").text())\n    // console.log(`current page: ${currentPage}`)\n    let allPages = parseInt($(\"#all_pages\").text())\n    // console.log(`all pages: ${allPages}`)\n    switch (dir) {\n      case \"up\":\n        currentPage -= 1\n        break;\n      case \"down\":\n        currentPage += 1\n        break;\n      case \"end\":\n        currentPage = allPages\n        break;\n      case \"start\":\n        currentPage = 1\n        break;\n    }\n    $(\"#current_page\").text(currentPage)\n\n    if (currentPage == 1) {\n      $(\"#pagination .pagination-mover.down\").prop('disabled', true)\n      $(\"#pagination .pagination-mover.up\").prop('disabled', false)\n    } else if (currentPage == allPages) {\n      // console.log(\"we are at the upper end\")\n      $(\"#pagination .pagination-mover.up\").prop('disabled', true)\n      $(\"#pagination .pagination-mover.down\").prop('disabled', false)\n    } else {\n      $(\"#pagination .pagination-mover\").prop('disabled', false)\n    }\n  }\n\n  ///\n  // renders the profiles modal for the selected ids \n  ///\n  profile_search_selection(event) {\n    event.preventDefault();\n    this.startLoading()\n    // also get the skills and their names\n    let skillNames = {}\n    $(\"#skills tr.skill td\").each(function (index) {\n      skillNames[$(this).data(\"skill-id\")] = $(this).text()\n    })\n    // console.log(\"skills: \", skillNames)\n    this.stimulate('Skill#render_profiles', this.baseRatingIdValue, this.selectedProfiles, skillNames).then(() => {\n      $(\"#selection_modal\").modal(\"show\")\n      this.stopLoading()\n    });\n  }\n\n  ///\n  // called whenever a profile in profile saerch results is selecetd by the check box at the bottom\n  ///\n  profile_checked(event) {\n    event.preventDefault();\n    const $checkbox = $(event.currentTarget)\n    const profileId = $checkbox.val()\n    // console.log(`profile selected (${profileId})...`)\n    if ($checkbox.prop(\"checked\")) {\n      // console.log(\"check it\")\n      this.selectedProfiles.push($checkbox.val())\n      $(\"#profile_selection_button\").prop(\"disabled\", false)\n    } else {\n      // console.log(\"uncheck it\")\n      const index = self.selectedProfiles.indexOf(profileId);\n      this.selectedProfiles.splice(index, 1);\n      if (this.selectedProfiles.length == 0) {\n        $(\"#profile_selection_button\").prop(\"disabled\", true)\n      }\n    }\n  }\n\n  /// \n  // renders the skill rating modal via reflex and shows it\n  ///\n  showSkillRatingModal(event) {\n    const self = this\n    event.preventDefault();\n    event.stopPropagation();\n    const $target = $(event.currentTarget);\n    self.logWarning(`tooltips: ${self.tooltipList}`)\n    self.startLoading();\n    this.stimulate('SkillReflex#show_skill_rating', event.currentTarget).then(payload => {\n      // $(\"#skill_rating_modal\").modal(\"show\")      \n      self.stopLoading();\n    });\n\n  }\n\n  ///\n  // rerenders the skill rating modal via reflex and shows it\n  ///\n  rerenderRatingComponent(event) {\n    const self = this\n    event.preventDefault();\n    event.stopPropagation();\n    self.startLoading();\n    document.dispatchEvent(new CustomEvent('tooltips:destroy.needed'));\n    this.stimulate('SkillReflex#rerender_rating_component', this.baseRatingIdValue, this.editableValue).then(payload => {\n      self.stopLoading();\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    });\n  }\n\n  ///\n  // rerenders the skill rating modal via reflex and shows it\n  ///\n  rerenderExternalRatingComponent(event) {\n    const self = this\n    event.preventDefault();\n    event.stopPropagation();\n    self.startLoading();\n    document.dispatchEvent(new CustomEvent('tooltips:destroy.needed'));\n    this.stimulate('SkillReflex#rerender_external_rating_component', this.baseRatingIdValue).then(payload => {\n      self.stopLoading();\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    });\n  }\n\n}\n", "import ApplicationController from './application_controller'\nimport Sortable from 'sortablejs'\n\nexport default class extends ApplicationController {\n\n  static targets = [\"slideForm\", \"sortable\", \"editSlide\"]\n\n  connect() {\n    super.connect()\n    const self = this\n    document.documentElement.addEventListener('turbo:before-stream-render', (event) => {\n      self.#checkStream(event, self)\n    })\n\n    if(this.hasSortableTarget) {\n      this.sortable = Sortable.create(this.sortableTarget, {\n        animation: 150,\n        onEnd: this.sortEnd.bind(this)\n      })\n    }\n  }\n\n  /**\n   * this will sync the image from the dropzone form into the active preview image.\n   * @param {*} event the Image File from the dropzone custom event. @see dropzone_controller\n   */\n  setPreview(event) {\n    const preview = $(this.sortableTarget).find('.slide-active .slide-page-content')\n    const dataUrl = event.detail.file.dataURL\n    preview.find('img').addClass('hidden')\n    const img = preview.find('img.test-preview')\n    if(img.length == 0) {\n      const img = document.createElement(\"img\")\n      img.src = dataUrl\n      $(img).addClass('test-preview')\n      $(preview).append(img)\n    }\n    $(img).removeClass('hidden')\n    $(img).attr('src', dataUrl)\n  }\n\n  /**\n   * This will hide the preview set from dropzone event.\n   * @param {*} event the Image File Event from the dropzone custom event. @see dropzone_controller\n   */\n  resetPreview(event) {\n    const preview = $(this.sortableTarget).find('.slide-active .slide-page-content')\n    preview.find('img:not(.test-preview)').removeClass('hidden')\n    preview.find('.test-preview').addClass('hidden')\n  }\n\n  /**\n   * when sortable js is finished with sorting, this will be called.\n   * It will set the order input field for every slide page.\n   * @param {*} event \n   */\n  sortEnd(event) {\n    if(this.hasSortableTarget){\n      $(this.sortableTarget).find('.slide-page').each((index, page) => {\n        const target = $(page).data('target')\n        const position = index + 1\n        this.logInfo(`${position} ${target}`)\n        $(target).find('.slide-order-field').val(position)\n      })\n    }\n  }\n\n  /**\n   * show the selected form.\n   * @param {*} event \n   */\n  showForm(event) {\n    const target = $(event.currentTarget).data('target')\n    this.logInfo(target)\n    this.#hideAllFormFields()\n    $(this.element).find(target).removeClass('hidden')\n    this.#toggleActiveForSlidePage(event.currentTarget)\n  }\n\n  /**\n   * this will set the current selected page on the left as active.\n   * @param {*} currentTarget \n   */\n  #toggleActiveForSlidePage(currentTarget) {\n    if(this.hasSortableTarget) {\n      $(this.sortableTarget).find('.slide-page').removeClass('slide-active')\n    }\n    $(currentTarget).addClass('slide-active')\n  }\n\n  /**\n   * we listen for a general turbo:before-stream-render, therefore we need to be sure it is the right one.\n   * @param {*} event \n   * @param {SlideFormController} self \n   * @returns \n   */\n  #checkStream(event, self) {\n    // are we interested in the stream?\n    const updateTarget = event.detail.newStream.attributes.target.nodeValue\n    self.logInfo(updateTarget)\n    if(updateTarget !== self.editSlideTarget.id) {\n      return\n    }\n    self.#hideAllFormFields()\n  }\n\n  /**\n   * This will hide all active form fields.\n   */\n  #hideAllFormFields() {\n    if(this.hasSlideFormTarget) {\n      $(this.sortableTarget).find('.slide-active').removeClass('slide-active')\n      $(this.slideFormTargets).addClass('hidden')\n    }\n  }\n}", "import ApplicationController from './application_controller'\nimport Ajax from '../packs/ajax'\n\nexport default class extends ApplicationController {\n\n  static targets = [\"page\", \"info\", \"previousBtn\", \"nextBtn\", \"endInfo\", \"audio\", \"duration\", \"audioToggleBtn\"]\n\n  initialize() {\n    super.initialize()\n    this.currentPage = 0\n    // This defines how long the animation transition take in seconds\n    this.animationTransition = .5\n    this.autoplay_task = null\n    this.autoplay_start_task = null\n    this.audioMuted = false\n    // should we autoplay?\n    this.autoplay = $(this.element).data('slide-autoplay') || false\n    // the global set duration, the time is given in seconds\n    this.globalDuration = $(this.element).data('slide-duration') || 3\n    // which animation it should play, currently only fade is supported\n    this.animation = $(this.element).data('slide-animation') || 'fade'\n    // how many pages we have in total, this should also include the ones that are not yet loaded.\n    this.totalPages = $(this.element).data('slide-total-pages') || $(this.element).find('.slide-page').length\n    // from where can we lazy load the pages\n    this.lazyLoadingUrl = $(this.element).data('slide-lazy-loading-url')\n\n    this.logInfo(`autoplay: ${this.autoplay}`)\n    this.logInfo(`global duration: ${this.globalDuration}`)\n    this.logInfo(`animation: ${this.animation}`)\n    this.logInfo(`total pages: ${this.totalPages}`)\n\n    this.#setup()\n  }\n\n  connect() {\n    super.connect()\n    if(this.autoplay) {\n      this.startSlideshow()\n    } else {\n      this.#hideDurationInfo()\n      this.#playbackAudioIfPossible()\n    }\n  }\n\n  disconnect() {\n    if(this.element.dataset.preserveOnMove === 'true') {\n      return\n    }\n\n    this.pauseSlideshow()\n  }\n\n  /**\n   * Prepare the slide show with all necessary steps.\n   */\n  #setup() {\n    if(this.hasPageTarget) {\n      $(this.pageTargets).each((index, page) => {\n        $(page).removeClass('slide-show').removeClass('slide-hidden')\n        if(index === this.currentPage) {\n          $(page).addClass('slide-show')\n        } else {\n          $(page).addClass('slide-hidden')\n        }\n      })\n    }\n    this.#updatePageProgress()\n    this.#canHideNextBtn()\n    this.#canHidePreviousBtn()\n    this.#updateAudioToggleButton()\n    if(!this.#hasReachedEnd()) {\n      this.#hideEndInfo()\n    }\n  }\n\n  /**\n   * This will autoplay the slideshow. Only call this if you want to autoplay it.\n   * @param {*} event \n   */\n  startSlideshow(event) {\n    if(this.autoplay_task || this.autoplay_start_task || this.#hasReachedEnd()) {\n      return\n    }\n\n    this.autoplay_start_task = setTimeout(() => {\n      this.autoplay_start_task = null\n      this.#showDurationInfo()\n      this.runSlideshow()\n      this.logInfo('start slideshow')\n    }, 500)\n  }\n\n  /**\n   * Helper method to call it recursive.\n   * It will slide through all pages until it reaches the end.\n   */\n  runSlideshow() {\n    this.#playbackAudioIfPossible()\n    const totalAnimationTransitionTime = this.#convertSecondsToMilliseconds(this.animationTransition) * 2\n    this.#updateDurationInfo()\n    this.autoplay_task = setTimeout(async () => {\n      this.autoplay_task = null\n      await this.nextSlide()\n\n      if(this.#hasReachedEnd()) { \n        this.showEnd()\n      } else {\n        this.runSlideshow()\n      }\n    }, this.#convertSecondsToMilliseconds(this.#getCurrentPageDuration()) + totalAnimationTransitionTime)\n  }\n\n  /**\n   * This will display the end information after the timeout of the current page slide\n   */\n  showEnd() {\n    this.#updateDurationInfo()\n    setTimeout(() => {\n      this.#displayEndInfo()\n    }, this.#convertSecondsToMilliseconds(this.#getEndInfoDelayInSeconds()))\n  }\n\n  /**\n   * When autoplay is disabled, we show the end actions quickly\n   * so users are not blocked by long per-page durations.\n   * @returns {Number}\n   */\n  #getEndInfoDelayInSeconds() {\n    if(!this.autoplay) {\n      const customPageDuration = this.#getCurrentPageCustomDuration()\n      if(customPageDuration) {\n        return customPageDuration\n      }\n      return 5\n    }\n    return this.#getCurrentPageDuration()\n  }\n\n  /**\n   * @returns {Number|undefined} current page duration when explicitly set on page level\n   */\n  #getCurrentPageCustomDuration() {\n    const page = this.pageTargets[this.currentPage]\n    return $(page).data('slide-duration')\n  }\n\n  /**\n   * This will pause the slideshow.\n   * @param {*} event \n   */\n  pauseSlideshow(event) {\n    this.#pauseAudioIfPossible()\n    this.#hideDurationInfo()\n    if(this.autoplay_start_task) {\n      clearTimeout(this.autoplay_start_task)\n      this.autoplay_start_task = null\n    }\n    if(this.autoplay_task) {\n      clearTimeout(this.autoplay_task)\n      this.autoplay_task = null\n      this.logInfo('pause slideshow')\n    }\n  }\n\n  /**\n   * Reset all needed parameter and then scroll back to page 1.\n   * If autoplay is set it will autostart the slideshow.\n   * @param {*} event \n   */\n  restartSlideshow(event) {\n    this.pauseSlideshow()\n    this.#updateSlidePage(this.currentPage, 0).then(() => {\n      if(this.autoplay) {\n        this.startSlideshow()\n      }\n    })\n    this.#hideEndInfo()\n  }\n\n  async toggleAudio(event) {\n    event.preventDefault()\n\n    const currentAudio = this.#currentAudio()\n    if(!currentAudio || !this.#audioSourcePresent(currentAudio)) {\n      this.#hideAudioToggleButton()\n      return\n    }\n\n    if(!currentAudio.paused) {\n      this.audioMuted = true\n      await this.#pauseAudioIfPossible()\n      this.#showAudioToggleButton('volume_off')\n      return\n    }\n\n    this.audioMuted = false\n    await this.#playbackAudioIfPossible()\n  }\n\n  /**\n   * scroll to next page. It will lazy load the page after next if needed.\n   */\n  async nextSlide(event) {\n    if(this.#hasReachedEnd()) {\n      return\n    }\n\n    if(this.animationRunning) {\n      return\n    }\n\n    this.#lazyLoadPage(this.currentPage + 2)\n\n    //hide current page with animation after animation done play next one\n    await this.#updateSlidePage(this.currentPage, this.currentPage + 1)\n\n    await this.#playbackAudioIfPossible()\n  }\n\n  async previousSlide(event) {\n    if(this.#hasReachedStart()) {\n      return\n    }\n\n    if(this.animationRunning) {\n      return\n    }\n\n    //hide current page with animation after animation done play next one\n    await this.#updateSlidePage(this.currentPage, this.currentPage - 1)\n\n    await this.#playbackAudioIfPossible()\n  }\n\n  /**\n   * This will animate beetween current and next page.\n   * @param {Integer} current page to hide\n   * @param {Integer} next page to show\n   */\n  async #updateSlidePage(current, next) {\n\n    if(this.hasPageTarget){  \n      const direction = next > current ? 'forward' : 'backward'\n      this.#disableInteractionBtns()\n      await this.#pauseAudioIfPossible()\n      this.currentPage = next\n      this.#updatePageProgress()\n      this.#canHideNextBtn()\n      this.#canHidePreviousBtn()\n      this.#updateAudioToggleButton()\n      await Promise.all([\n        this.#animatePageOut(this.pageTargets[current], direction),\n        this.#animatePageIn(this.pageTargets[next], direction)\n      ])\n      this.#afterPageUpdate()\n    }\n  }\n\n  /**\n   * @returns {Integer} either the page duration of the current page or if not set the global set duration\n   */\n  #getCurrentPageDuration() {\n    const page = this.pageTargets[this.currentPage]\n    const pageDuration = $(page).data('slide-duration')\n    return pageDuration || this.globalDuration\n  }\n\n  /**\n   * This will lazy load the page with the given lazy-loading-url.\n   * It will only try to load a page if we didn't reach the end yet.\n   * @param {Integer} page to load \n   * @returns \n   */\n  async #lazyLoadPage(page) {\n    if(page >= this.totalPages) {\n      return\n    }\n\n    // when we have all pages loaded we dont need to load any pages anymore\n    if(this.pageTargets.length == this.totalPages) {\n      return\n    }\n\n    if(this.lazyLoadingUrl) {\n      const response =  await new Ajax(this.lazyLoadingUrl).doAjax('get', { page: page })\n      // we get the html content pretty printed back so erase all \\n otherwise it will not get parsed correctly.\n      const $slide_page = $(response.replaceAll('\\n', ''))\n      $slide_page.addClass('slide-hidden')\n      $(this.element).append($slide_page)\n    }\n  }\n\n  /**\n   * This will animate a page out.\n   * It will resolve as soon as the animation is done.\n   * @param {Integer} page\n   * @param {String} direction\n   * @returns {Future}\n   */\n  async #animatePageOut(page, direction){\n    const $page = $(page)\n    const directionalClass = direction === 'forward' ? 'slide-leave-to-left' : 'slide-leave-to-right'\n    $page.removeClass('slide-enter-from-right slide-enter-from-left slide-leave-to-left slide-leave-to-right')\n    $page.addClass(directionalClass)\n    $(page).css('animation-duration', `${this.animationTransition}s`)\n    $(page).removeClass('slide-show')\n    $(page).addClass('slide-hidden')\n    return new Promise((resolve, _) => setTimeout(() => resolve(), this.#convertSecondsToMilliseconds(this.animationTransition)))\n  }\n\n  /**\n   * This will animate a page in.\n   * It will resolve as soon as the animation is done.\n   * @param {Integer} page\n   * @param {String} direction\n   * @returns \n   */\n  async #animatePageIn(page, direction){\n    const $page = $(page)\n    const directionalClass = direction === 'forward' ? 'slide-enter-from-right' : 'slide-enter-from-left'\n    $page.removeClass('slide-enter-from-right slide-enter-from-left slide-leave-to-left slide-leave-to-right')\n    $page.addClass(directionalClass)\n    $(page).css('animation-duration', `${this.animationTransition}s`)\n    $(page).removeClass('slide-hidden')\n    $(page).addClass('slide-show')\n    return new Promise((resolve, _) => setTimeout(() => resolve(), this.#convertSecondsToMilliseconds(this.animationTransition)))\n  }\n\n  /**\n   * Update the information on which page we are.\n   */\n  #updatePageProgress() {\n    if(this.hasInfoTarget) {\n      $(this.infoTarget).html(`${this.currentPage + 1}/${this.totalPages}`)\n    }\n  }\n\n  /**\n   * as soon as the animation is done we will enable the interactions buttons again.\n   */\n  #afterPageUpdate() {\n    this.#enableInteractionBtns()\n    if(this.#hasReachedEnd()) {\n      this.showEnd()\n    }\n  }\n\n  /**\n   * Whenever we have reached the start it will hide the previous button.\n   */\n  #canHidePreviousBtn() {\n    if(this.hasPreviousBtnTarget) {\n      if(this.#hasReachedStart()) {\n        $(this.previousBtnTarget).addClass('hidden')\n      } else {\n        $(this.previousBtnTarget).removeClass('hidden')\n      }\n    }\n  }\n\n  /**\n   * Whenever we have reached the end it will hide the next button.\n   */\n  #canHideNextBtn() {\n    if(this.hasNextBtnTarget) {\n      if(this.#hasReachedEnd()) {\n        $(this.nextBtnTarget).addClass('hidden')\n      } else {\n        $(this.nextBtnTarget).removeClass('hidden')\n      }\n    }\n  }\n\n  /**\n   * Disable the previous and next button.\n   */\n  #disableInteractionBtns() {\n    this.logInfo('disable interactions')\n    this.animationRunning = true\n    if(this.hasNextBtnTarget) {\n      $(this.nextBtnTarget).addClass('disabled')\n    }\n    if(this.hasPreviousBtnTarget) {\n      $(this.previousBtnTarget).addClass('disabled')\n    }\n  }\n\n  /**\n   * Enable the previous and next button.\n   */\n  #enableInteractionBtns() {\n    this.logInfo('enable interactions')\n    this.animationRunning = false\n    if(this.hasNextBtnTarget) {\n      $(this.nextBtnTarget).removeClass('disabled')\n    }\n    if(this.hasPreviousBtnTarget) {\n      $(this.previousBtnTarget).removeClass('disabled')\n    }\n  }\n\n  /**\n   * This will show the restart and 'got it' button.\n   */\n  #displayEndInfo() {\n    if(this.hasEndInfoTarget){\n      $(this.endInfoTarget).removeClass('hidden')\n    }\n  }\n\n  /**\n   * This will hide the restart and 'got it' button.\n   */\n  #hideEndInfo() {\n    if(this.hasEndInfoTarget){\n      $(this.endInfoTarget).addClass('hidden')\n    }\n  }\n\n  async #playbackAudioIfPossible() {\n    const currentAudio = this.#currentAudio()\n    if(!currentAudio || !this.#audioSourcePresent(currentAudio)) {\n      this.#hideAudioToggleButton()\n      return\n    }\n\n    if(this.audioMuted) {\n      this.#showAudioToggleButton('volume_off')\n      return\n    }\n\n    if(currentAudio.readyState >= 2) {\n      await this.#attemptAudioPlayback(currentAudio)\n    } else {\n      currentAudio.addEventListener('loadeddata', async () =>  {\n        if(this.#currentAudio() !== currentAudio) {\n          return\n        }\n        await this.#attemptAudioPlayback(currentAudio)\n      }, { once: true })\n    }\n  }\n\n  async #pauseAudioIfPossible() {\n    const currentAudio = this.#currentAudio()\n    if(currentAudio && !currentAudio.paused) {\n      await currentAudio.pause()\n    }\n  }\n\n  #currentAudio() {\n    if(!this.hasAudioTarget) {\n      return null\n    }\n\n    return this.audioTargets[this.currentPage]\n  }\n\n  #audioSourcePresent(audio) {\n    const source = audio.querySelector('source')\n    return source && source.getAttribute('src')\n  }\n\n  async #attemptAudioPlayback(audio) {\n    try {\n      await audio.play()\n      this.#showAudioToggleButton('volume_up')\n    } catch(error) {\n      if(error.name === 'NotAllowedError') {\n        this.#showAudioToggleButton('volume_off')\n      } else {\n        this.logWarning(`audio playback failed: ${error.message}`)\n      }\n    }\n  }\n\n  #updateAudioToggleButton() {\n    const currentAudio = this.#currentAudio()\n    if(!currentAudio || !this.#audioSourcePresent(currentAudio)) {\n      this.#hideAudioToggleButton()\n      return\n    }\n\n    this.#showAudioToggleButton(this.audioMuted || currentAudio.paused ? 'volume_off' : 'volume_up')\n  }\n\n  #showAudioToggleButton(icon) {\n    if(this.hasAudioToggleBtnTarget) {\n      $(this.audioToggleBtnTarget).removeClass('hidden')\n      this.audioToggleBtnTarget.textContent = icon\n    }\n  }\n\n  #hideAudioToggleButton() {\n    if(this.hasAudioToggleBtnTarget) {\n      $(this.audioToggleBtnTarget).addClass('hidden')\n    }\n  }\n\n  #updateDurationInfo() {\n    if(this.hasDurationTarget) {\n      const leftProgress = $(this.durationTarget).find('.left-part .fill')\n      const rightProgress = $(this.durationTarget).find('.right-part .fill')\n      const duration = this.#getCurrentPageDuration() / 2\n      leftProgress.css('animation-name', 'none')\n      rightProgress.css('animation-name', 'none')\n      leftProgress.css('animation-duration', '')\n      rightProgress.css('animation-duration', '')\n      setTimeout(() => {\n        leftProgress.css('animation-name', '')\n        rightProgress.css('animation-name', '')\n        leftProgress.css('animation-duration', `${duration}s`)\n        rightProgress.css('animation-delay', `${duration}s`)\n        rightProgress.css('animation-duration', `${duration}s`)\n      }, this.#convertSecondsToMilliseconds(this.animationTransition))\n    }\n  }\n\n  #hideDurationInfo() {\n    if(this.hasDurationTarget) {\n      $(this.durationTarget).addClass('hidden')\n    }\n  }\n\n  #showDurationInfo() {\n    if(this.hasDurationTarget) {\n      $(this.durationTarget).removeClass('hidden')\n    }\n  }\n\n  /**\n   * @returns {Boolean}\n   */\n  #hasReachedStart() {\n    return this.currentPage <= 0\n  }\n\n  /**\n   * @returns {Boolean}\n   */\n  #hasReachedEnd() {\n    return this.currentPage >= this.totalPages - 1\n  }\n\n  /**\n   * @param {Double} timeInSeconds \n   * @returns {Integer} returns the given seconds in milliseconds\n   */\n  #convertSecondsToMilliseconds(timeInSeconds) {\n    return timeInSeconds * 1000\n  }\n}", "import ApplicationController from './application_controller'\nimport Param from '../packs/param';\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect();\n    this.param = new Param(this.getBaseUrl());\n    this.overlayParentStacks = {}\n  }\n\n  ///\n  // switch between group and users view on supervising view\n  ///\n  switch(event) {\n    this.startLoading();\n    const showGroup = $(event.currentTarget).prop(\"checked\");\n    console.log(\"showGroup: \", showGroup);\n    this.param.updateParams(\"show_group\", showGroup, false);\n    this.stimulate(\n      \"SupervisingReflex#switch\",\n      showGroup\n    ).then(() => {\n      this.stopLoading();\n    });\n  }\n\n  ///\n  // Toggle suppression of assignment notifications for the current tenant\n  ///\n  toggleAssignmentNotifications(event) {\n    this.startLoading();\n    const suppressed = $(event.currentTarget).prop(\"checked\");\n\n    this.stimulate(\n      \"SupervisingReflex#toggle_assignment_notifications\",\n      suppressed\n    ).then(() => {\n      this.stopLoading();\n    });\n  }\n\n  ///\n  // handles group selection change via stimulus action instead of direct reflex\n  ///\n  selectGroup(event) {\n    this.startLoading();\n    this.stimulate(\n      \"Groups#select\",\n      event.currentTarget\n    ).then(() => {\n      this.stopLoading();\n    });\n  }\n\n  ///\n  // restarts the journey for the user, defined in triggering area\n  ///\n  restartPersonalJourney(event) {\n    console.log(\"restart personal journey...\")\n    const $target = $(event.currentTarget)\n\n    const userId = $target.data(\"user-id\")\n    const journeyId = $target.data(\"journey-id\")\n    this.stimulate('SupervisingReflex#restart_personal_journey', userId, journeyId).then(() => {\n      $(\"#assignment_cards\").trigger(\"chart:changed\", `canvas_performance_${userId}`)\n    })\n  }\n\n  ///\n  // resets the personal journey for given user; this means, that all learn units are marked as not claimed (also multiple choice executions are deleted)\n  ///\n  resetPersonalJourney(event) {\n    console.log(\"reset personal journey...\")\n    const $target = $(event.currentTarget)\n\n    const userId = $target.data(\"user-id\")\n    const journeyId = $target.data(\"journey-id\")\n    this.stimulate('SupervisingReflex#reset_personal_journey', userId, journeyId).then(() => {\n      $(\"#assignment_cards\").trigger(\"chart:changed\", `canvas_performance_${userId}`)\n    })\n  }\n\n  /**\n   * Resets a direct unit from the container overlay without re-rendering the whole user card.\n   * @param {Event} event - Click event from direct unit reset action in overlay.\n   * @returns {void}\n   */\n  resetOverlayUnitJourney(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    const $target = $(target)\n    const userId = this.readDatasetInt(target, 'userId')\n    const journeyId = this.readDatasetInt(target, 'journeyId')\n    if (!Number.isInteger(userId) || !Number.isInteger(journeyId)) {\n      return\n    }\n    const state = this.assignmentsStateFor($target, userId)\n    const selectedContainerFromButton = this.readDatasetInt(target, 'selectedContainerId')\n    const selectedContainerId = Number.isInteger(selectedContainerFromButton) ? selectedContainerFromButton : state.selectedContainerId\n    const loadedTabs = state.loadedTabs.length > 0 ? state.loadedTabs : ['containers']\n    const activeTab = 'containers'\n    const parentStack = this.overlayParentStackFor(userId, state.parentStack)\n\n    this.startLoading()\n    this.stimulate('SupervisingReflex#reset_overlay_personal_journey', userId, journeyId, loadedTabs, activeTab, selectedContainerId, parentStack).then(() => {\n      this.stopLoading()\n      this.showContainerAssignmentsModal(userId)\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n      $(\"#assignment_cards\").trigger(\"chart:changed\", `canvas_performance_${userId}`)\n    }).catch(() => {\n      this.stopLoading()\n    })\n  }\n\n  ///\n  // stops the journey for the user\n  ///\n  stopPersonalJourney(event) {\n    console.log(\"stop personal journey...\")\n    const $target = $(event.currentTarget)\n\n    const userId = $target.data(\"user-id\")\n    const journeyId = $target.data(\"journey-id\")\n    this.stimulate('SupervisingReflex#stop_personal_journey', userId, journeyId).then(() => {\n      $(\"#assignment_cards\").trigger(\"chart:changed\", `canvas_performance_${userId}`)\n    })\n  }\n\n  ///\n  // restarts the current version of origin journey for the user\n  ///\n  startVersionForOriginJourney(event) {\n    console.log(\"restart current version of origin journey...\")\n    const $target = $(event.currentTarget)\n\n    const userId = $target.data(\"user-id\")\n    const supervisorId = $target.data(\"supervisor-id\")\n    const originJourneyId = $target.data(\"origin-journey-id\")\n    this.stimulate('SupervisingReflex#start_current_version_of_origin_journey', userId, originJourneyId, supervisorId).then(() => {\n      \n      // $(\"#assignment_cards\").trigger(\"chart:changed\", `canvas_performance_${userId}`)\n    })\n  }\n\n  resendCertificateRenewalMail(event) {\n    console.log(\"resend certificate renewal mail...\")\n    const $target = $(event.currentTarget)\n\n    const userId = $target.data(\"user-id\")\n    const supervisorId = $target.data(\"supervisor-id\")\n    const certificateId = $target.data(\"certificate-id\")\n\n    this.stimulate('SupervisingReflex#resend_certificate_renewal_mail', userId, certificateId, supervisorId).then(() => {\n      $(`#resend_mail_btn_${certificateId}`).find(\"i.material-icons\").text('check_circle_outline')\n      const $row = $target.closest('tr');\n      const currentDate = new Date().toLocaleDateString();\n      $row.find('td.last-reminder-sent').text(currentDate);\n    })\n  }\n\n\n  ///\n  // opens the user card for given user id\n  ///\n  openCard(event) {\n    event.preventDefault();\n    // console.log(\"restart personal journey...\")\n    const $target = $(event.currentTarget)\n    \n    const userId = $target.data(\"user-id\")\n    document.dispatchEvent(new CustomEvent('tooltips:destroy.needed'));\n\n    this.stimulate('SupervisingReflex#show_user_card', userId).then(() => {\n      console.log(`user card for ${userId} should be shown now`)\n      $(\"#inner_main\").hide()\n      $(\"#alternative_inner_main\").show()\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n      // $(\"#assignment_cards\").trigger(\"chart:changed\", `canvas_performance_${userId}`)\n      // $(\"#user_card_modal\").modal(\"show\")\n    })\n  }\n\n  ///\n  // closes the user card and shows assigments page again\n  ///\n  backToAssignments(event) {  \n    document.dispatchEvent(new CustomEvent('tooltips:destroy.needed'));\n    $(\"#alternative_inner_main\").hide()\n    $(\"#inner_main\").show()\n    document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n  }\n\n  ///\n  // opens the user interactions modal\n  ///\n  showInteractions(event) {\n    event.preventDefault();\n    console.log(\"showInteractions...\")\n    const $target = $(event.currentTarget)\n    const interactionElements = $target.data(\"interaction-elements\")\n    // hide tooltip of clicked button, else it would still be shown over modal \n    $target.tooltip(\"dispose\");\n\n    this.stimulate('SupervisingReflex#show_interactions', interactionElements).then(() => {\n      console.log(`the user interactions (${interactionElements}) should be shown now`)\n      $('#interaction_modal [data-bs-toggle=\"tooltip\"]').tooltip({ boundary: \"window\" });\n\n      $(\"#interaction_modal\").modal(\"show\")\n    })\n\n  }\n\n  /**\n   * Lazily load the selected supervision assignments tab.\n   * @param {Event} event - Click event from tab button or CTA.\n   * @returns {void}\n   */\n  loadAssignmentsTab(event) {\n    const $target = $(event.currentTarget)\n    const tab = $target.data('tab')\n    const userId = $target.data('user-id')\n    const $root = $target.closest('[data-assignments-root=\"true\"]')\n    const loadedTabsRaw = ($root.data('loaded-tabs') || '').toString()\n    const loadedTabs = loadedTabsRaw === '' ? [] : loadedTabsRaw.split(',').map((value) => value.trim()).filter(Boolean)\n\n    if (loadedTabs.includes(tab)) {\n      return\n    }\n\n    this.startLoading()\n    this.stimulate('SupervisingReflex#load_user_assignments_tab', userId, tab, loadedTabs).then(() => {\n      this.stopLoading()\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    }).catch(() => {\n      this.stopLoading()\n    })\n  }\n\n  /**\n   * Opens the container drill-down overlay for a root container.\n   * @param {Event} event - Click event from root container table action.\n   * @returns {void}\n   */\n  openContainerOverlay(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    const $target = $(target)\n    const userId = this.readDatasetInt(target, 'userId')\n    const containerId = this.readDatasetInt(target, 'containerId')\n    if (!Number.isInteger(userId) || !Number.isInteger(containerId)) {\n      return\n    }\n    const state = this.assignmentsStateFor($target, userId)\n    const loadedTabs = state.loadedTabs.length > 0 ? state.loadedTabs : ['containers']\n    const activeTab = 'containers'\n    this.setOverlayParentStack(userId, [])\n\n    this.startLoading()\n    this.stimulate('SupervisingReflex#load_user_assignments_overlay', userId, containerId, loadedTabs, activeTab, [], null).then(() => {\n      this.stopLoading()\n      this.showContainerAssignmentsModal(userId)\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    }).catch(() => {\n      this.stopLoading()\n    })\n  }\n\n  /**\n   * Opens the selected subcontainer inside the same overlay.\n   * @param {Event} event - Click event from subcontainer row action.\n   * @returns {void}\n   */\n  openChildContainerOverlay(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    const $target = $(target)\n    const userId = this.readDatasetInt(target, 'userId')\n    const containerId = this.readDatasetInt(target, 'containerId')\n    const parentId = this.readDatasetInt(target, 'parentId')\n    if (!Number.isInteger(userId) || !Number.isInteger(containerId) || !Number.isInteger(parentId)) {\n      return\n    }\n    const state = this.assignmentsStateFor($target, userId)\n    const loadedTabs = state.loadedTabs.length > 0 ? state.loadedTabs : ['containers']\n    const activeTab = 'containers'\n    const currentStack = this.overlayParentStackFor(userId, state.parentStack)\n    const parentStack = [...currentStack, parentId].filter((value) => Number.isInteger(value))\n    this.setOverlayParentStack(userId, parentStack)\n\n    this.startLoading()\n    this.stimulate('SupervisingReflex#load_user_assignments_overlay', userId, containerId, loadedTabs, activeTab, parentStack, parentId).then(() => {\n      this.stopLoading()\n      this.showContainerAssignmentsModal(userId)\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    }).catch(() => {\n      this.stopLoading()\n    })\n  }\n\n  /**\n   * Navigates one level back in the overlay parent stack.\n   * @param {Event} event - Click event from backlink action.\n   * @returns {void}\n   */\n  backContainerOverlay(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    const $target = $(target)\n    const userId = this.readDatasetInt(target, 'userId')\n    const parentId = this.readDatasetInt(target, 'parentId')\n    if (!Number.isInteger(parentId)) {\n      return\n    }\n    const state = this.assignmentsStateFor($target, userId)\n    const loadedTabs = state.loadedTabs.length > 0 ? state.loadedTabs : ['containers']\n    const activeTab = 'containers'\n    const parentStack = [...this.overlayParentStackFor(userId, state.parentStack)]\n    parentStack.pop()\n    this.setOverlayParentStack(userId, parentStack)\n\n    this.startLoading()\n    this.stimulate('SupervisingReflex#load_user_assignments_overlay', userId, parentId, loadedTabs, activeTab, parentStack, null).then(() => {\n      this.stopLoading()\n      this.showContainerAssignmentsModal(userId)\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    }).catch(() => {\n      this.stopLoading()\n    })\n  }\n\n  /**\n   * Restarts an assigned container for the supervised user.\n   * @param {Event} event - Click event from container action.\n   * @returns {void}\n   */\n  restartContainerAssignment(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    const $target = $(target)\n    const userId = this.readDatasetInt(target, 'userId')\n    const containerId = this.readDatasetInt(target, 'containerId')\n    if (!Number.isInteger(userId) || !Number.isInteger(containerId)) {\n      return\n    }\n    const state = this.assignmentsStateFor($target, userId)\n    const selectedContainerFromButton = this.readDatasetInt(target, 'selectedContainerId')\n    const selectedContainerId = Number.isInteger(selectedContainerFromButton) ? selectedContainerFromButton : state.selectedContainerId\n    const loadedTabs = state.loadedTabs.length > 0 ? state.loadedTabs : ['containers']\n    const activeTab = 'containers'\n    const parentStack = this.overlayParentStackFor(userId, state.parentStack)\n\n    this.startLoading()\n    this.stimulate('SupervisingReflex#restart_container_assignment', userId, containerId, loadedTabs, activeTab, selectedContainerId, parentStack).then(() => {\n      this.stopLoading()\n      this.showContainerAssignmentsModal(userId)\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    }).catch(() => {\n      this.stopLoading()\n    })\n  }\n\n  /**\n   * Opens the Bootstrap confirmation modal for root container unassignment.\n   * @param {Event} event - Click event from root unassign action button.\n   * @returns {void} Stores pending IDs on modal dataset and opens the modal.\n   */\n  requestUnassignRootContainer(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    const userId = this.readDatasetInt(target, 'userId')\n    const containerId = this.readDatasetInt(target, 'containerId')\n    if (!Number.isInteger(userId) || !Number.isInteger(containerId)) {\n      return\n    }\n\n    const modalElement = document.getElementById(`unassign_root_container_modal_${userId}`)\n    if (!modalElement) {\n      return\n    }\n    document.querySelectorAll('[id^=\"unassign_root_container_modal_\"][data-pending-unassign=\"true\"]').forEach((pendingModal) => {\n      delete pendingModal.dataset.pendingUnassign\n      delete pendingModal.dataset.unassignUserId\n      delete pendingModal.dataset.unassignContainerId\n    })\n    modalElement.dataset.unassignUserId = String(userId)\n    modalElement.dataset.unassignContainerId = String(containerId)\n    modalElement.dataset.pendingUnassign = 'true'\n    const modal = bootstrap.Modal.getOrCreateInstance(modalElement)\n    modal.show()\n  }\n\n  /**\n   * Confirms root container unassignment and triggers the Reflex update.\n   * @returns {void} Updates assignments state and refreshes tooltips.\n   */\n  confirmUnassignRootContainer() {\n    const modalElement = document.querySelector('[id^=\"unassign_root_container_modal_\"][data-pending-unassign=\"true\"]')\n    if (!modalElement) {\n      return\n    }\n    const userId = this.readDatasetInt(modalElement, 'unassignUserId')\n    const containerId = this.readDatasetInt(modalElement, 'unassignContainerId')\n    delete modalElement.dataset.pendingUnassign\n    delete modalElement.dataset.unassignUserId\n    delete modalElement.dataset.unassignContainerId\n    if (!Number.isInteger(userId) || !Number.isInteger(containerId)) {\n      return\n    }\n    const $root = $(`#user_assignments_${userId}`)\n    const state = this.assignmentsStateFor($root, userId)\n\n    const loadedTabs = state.loadedTabs.length > 0 ? state.loadedTabs : ['containers']\n    const activeTab = 'containers'\n    this.setOverlayParentStack(userId, [])\n    this.startLoading()\n    this.stimulate('SupervisingReflex#unassign_root_container', userId, containerId, loadedTabs, activeTab).then(() => {\n      this.stopLoading()\n      document.dispatchEvent(new CustomEvent('tooltips:reload.needed'));\n    }).catch(() => {\n      this.stopLoading()\n    })\n  }\n\n  /**\n   * Prevents row click handlers when clicking action buttons inside rows.\n   * @param {Event} event - Click event from nested action button.\n   * @returns {void}\n   */\n  preventRowAction(event) {\n    event.preventDefault()\n    event.stopPropagation()\n  }\n\n  /**\n   * Reads current assignment component state from data attributes.\n   * @param {jQuery} $target - Source element that triggered the action.\n   * @param {number|string|null} userId - Optional supervised user id fallback for root lookup.\n   * @returns {{loadedTabs: string[], activeTab: string, parentStack: number[], selectedContainerId: number|null}}\n   */\n  assignmentsStateFor($target, userId = null) {\n    const $overlayRoot = $target.closest('[data-assignments-overlay-root=\"true\"]')\n    const $root = $overlayRoot.length > 0 ? $overlayRoot : this.assignmentsRootFor($target, userId)\n    const rootElement = $root.get(0)\n    if (!rootElement) {\n      return {\n        loadedTabs: [],\n        activeTab: 'containers',\n        parentStack: [],\n        selectedContainerId: null\n      }\n    }\n\n    const loadedTabsRaw = (rootElement.dataset.loadedTabs || '').toString()\n    const parentStackRaw = (rootElement.dataset.parentStack || '').toString()\n    const selectedContainerId = this.readDatasetInt(rootElement, 'selectedContainerId')\n    const loadedTabs = loadedTabsRaw === '' ? [] : loadedTabsRaw.split(',').map((value) => value.trim()).filter(Boolean)\n    const parentStack = parentStackRaw === '' ? [] : parentStackRaw.split(',').map((value) => parseInt(value, 10)).filter((value) => Number.isInteger(value))\n    return {\n      loadedTabs: loadedTabs,\n      activeTab: (rootElement.dataset.activeTab || 'containers').toString(),\n      parentStack: parentStack,\n      selectedContainerId: Number.isInteger(selectedContainerId) ? selectedContainerId : null\n    }\n  }\n\n  /**\n   * Resolves assignments root element for actions triggered inside/outside modal.\n   * @param {jQuery} $target - Source element.\n   * @param {number|string|null} userId - Optional supervised user id fallback.\n   * @returns {jQuery} Assignments root wrapper.\n   */\n  assignmentsRootFor($target, userId = null) {\n    const $closestRoot = $target.closest('[data-assignments-root=\"true\"]')\n    if ($closestRoot.length > 0) {\n      return $closestRoot\n    }\n    if (userId !== null && userId !== undefined && userId !== '') {\n      const fallback = document.getElementById(`user_assignments_${userId}`)\n      if (fallback) {\n        return $(fallback)\n      }\n    }\n    return $()\n  }\n\n  /**\n   * Returns the cached overlay parent stack for a user.\n   * @param {number|string} userId - Supervised user id.\n   * @param {number[]} fallbackStack - Stack extracted from DOM when cache is empty.\n   * @returns {number[]} normalized parent stack\n   */\n  overlayParentStackFor(userId, fallbackStack = []) {\n    const key = String(userId)\n    if (Array.isArray(this.overlayParentStacks[key])) {\n      return [...this.overlayParentStacks[key]]\n    }\n    return Array.isArray(fallbackStack) ? [...fallbackStack] : []\n  }\n\n  /**\n   * Persists overlay parent stack for a user.\n   * @param {number|string} userId - Supervised user id.\n   * @param {number[]} stack - Parent stack to cache.\n   * @returns {void}\n   */\n  setOverlayParentStack(userId, stack) {\n    const key = String(userId)\n    this.overlayParentStacks[key] = Array.isArray(stack) ? stack.filter((value) => Number.isInteger(value)) : []\n  }\n\n  /**\n   * Shows the assignments modal for the selected user.\n   * @param {number|string} userId - Supervised user id.\n   * @returns {void}\n   */\n  showContainerAssignmentsModal(userId) {\n    const modalElement = document.getElementById(`containerAssignmentsModal_${userId}`)\n    if (!modalElement) {\n      return\n    }\n    const modal = bootstrap.Modal.getOrCreateInstance(modalElement)\n    modal.show()\n  }\n\n  /**\n   * Reads integer value from event.currentTarget dataset.\n   * @param {HTMLElement} target - Event currentTarget.\n   * @param {string} key - Dataset key (e.g. 'containerId').\n   * @returns {number|null} parsed integer or null.\n   */\n  readDatasetInt(target, key) {\n    const raw = target?.dataset?.[key]\n    const value = Number.parseInt(raw, 10)\n    return Number.isInteger(value) ? value : null\n  }\n\n  ///\n  // filters the user list by given term as prefix\n  // expects a collection name as data attribute\n  ///\n  filterUsers(event) {\n    let target = event.currentTarget;\n    // console.log(\"target: \", target)\n    let collectionName = $(target).data('collection');\n    this._filterUsers(target.value, collectionName)\n  }\n\n  ///\n  // filters the user list by given term as prefix\n  ///\n  _filterUsers(term, collectionName) {\n    // console.log(`term: ${term}`)\n    // console.log(`collection name: ${collectionName}`)\n    const allDivs = $(`#${collectionName}_users .user`);\n    allDivs.removeClass('hidden')\n    if (term === '') {\n      return;\n    }\n    const nonMatchingDivs = allDivs.filter(function() {\n      const text = $(this).find('.title').text();\n      \n      return !text.toLowerCase().includes(term.toLowerCase());\n    });\n    // console.log(\"non matchings: \", nonMatchingDivs)\n    nonMatchingDivs.each(function() {\n      $(this).addClass('hidden');\n    });\n  }\n\n\n}", "import ApplicationController from \"./application_controller\";\nimport SwaggerUI from \"swagger-ui\";\n\nexport default class extends ApplicationController {\n  static values = {\n    json: String\n  };\n\n  initialize() {\n    super.initialize();\n    this.useReflex = false;\n    this.initializeSwagger();\n  }\n\n  initializeSwagger() {\n    this.url = $(this.element).data(\"swagger-url\");\n    if (this.url) {\n      const disableInfoPlugin = function () {\n        return {\n          wrapComponents: {\n            InfoUrl: () => () => null,\n          }\n        };\n      };\n      this.swaggerUI = SwaggerUI({\n        url: this.url,\n        domNode: this.element,\n        presets: [\n          SwaggerUI.presets.apis,\n          disableInfoPlugin\n        ],\n      });\n    }\n  }\n}\n", "import ApplicationController from './application_controller'\nimport Param from '../packs/param';\n\nexport default class extends ApplicationController {\n\n  static targets = [\"label\"];\n\n  connect() {\n    super.connect();\n    this.param = new Param(this.getBaseUrl());\n  }\n\n\n  switch(event) {\n    $(this.labelTargets).toggleClass(\"text-muted\");\n  }\n\n  ///\n  // sets the filtered param accordingly\n  ///\n  switchScope(event) {\n    let $target = $(event.currentTarget)\n    let isFiltered = $target.prop(\"checked\");\n    // console.log(\"isFiltered: \", isFiltered)\n\n    this.param.updateParams(\"filtered\", isFiltered, false);\n    this.stimulate(\"filterSortReflex#reload_page\");\n  }\n\n\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n\n  connect() {\n    super.connect();\n    this.useReflex = false;\n    let self = this;\n    $(document).on(\n      \"keyup\",\n      \"input[data-attribute]:not([type=hidden]), textarea[data-attribute]:not([type=hidden])\",\n      function (event) {\n        self.resyncData(this);\n      }\n    );\n\n    $(document).on(\n      \"change\",\n      \"select[data-attribute]:not([type=hidden]), input[data-attribute][data-inputfield]\",\n      function (event) {\n        self.resyncData(this);\n      }\n    );\n\n    for (let input of $(\n      \"input[data-attribute]:not([type=hidden]), textarea[data-attribute]:not([type=hidden]), select[data-attribute]:not([type=hidden]), input[data-attribute][data-inputfield]\"\n    )) {\n      self.resyncData(input);\n    }\n  }\n\n  resyncData(self) {\n    let element = $(self),\n      attribute = element.data(\"attribute\"),\n      formId = element.data(\"form-id\");\n    // console.log(element, attribute, formId);\n\n    let value = element.val();\n    // console.log(\"value: \", value);\n    if (element.attr(\"type\") == \"checkbox\") {\n      value = element.prop(\"checked\");\n    }\n\n    let elementToSyncTo = $(\n      `[data-attribute=${attribute}][data-form-id=${formId}]:not(:input), [data-attribute=${attribute}][data-form-id=${formId}][type=hidden]`\n    );\n    if (elementToSyncTo.is(\":input\")) {\n      elementToSyncTo.val(value);\n    } else {\n      elementToSyncTo.html(value);\n    }\n  }\n}", "import ApplicationController from '../application_controller'\n\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n    this.useReflex = false // No reflex needed for client-side column toggling\n  }\n\n  connect() {\n    super.connect()\n    this.loadState()\n    \n    // Restore state after various DOM updates\n    this.boundRestoreStateAfterUpdate = this.restoreStateAfterUpdate.bind(this)\n    \n    // Turbo events (for regular page updates)\n    document.addEventListener('turbo:render', this.boundRestoreStateAfterUpdate)\n    document.addEventListener('turbo:frame-render', this.boundRestoreStateAfterUpdate)\n    \n    // StimulusReflex events (for table sorting/filtering)\n    document.addEventListener('stimulus-reflex:after', this.boundRestoreStateAfterUpdate)\n    document.addEventListener('cable-ready:after-morph', this.boundRestoreStateAfterUpdate)\n  }\n  \n  disconnect() {\n    super.disconnect()\n    document.removeEventListener('turbo:render', this.boundRestoreStateAfterUpdate)\n    document.removeEventListener('turbo:frame-render', this.boundRestoreStateAfterUpdate)\n    document.removeEventListener('stimulus-reflex:after', this.boundRestoreStateAfterUpdate)\n    document.removeEventListener('cable-ready:after-morph', this.boundRestoreStateAfterUpdate)\n  }\n  \n  restoreStateAfterUpdate(event) {\n    // Small delay to ensure DOM is fully updated and controller is reconnected\n    setTimeout(() => {\n      if (this.element && this.element.isConnected) {\n        this.loadState()\n      }\n    }, 150)\n  }\n\n  toggleGroup(event) {\n    event.preventDefault()\n    \n    const groupToggle = event.currentTarget\n    const groupCell = groupToggle.closest('th')\n    const groupName = groupCell.dataset.group\n    \n    // Find both cells for this group (spacer and header)\n    const groupSpacer = this.element.querySelector(`.group-spacer[data-group=\"${groupName}\"]`)\n    const groupHeader = this.element.querySelector(`.group-header[data-group=\"${groupName}\"]`)\n    \n    if (!groupSpacer || !groupHeader) return\n    \n    // Determine new state (toggle)\n    // If spacer has d-none, group is EXPANDED (not collapsed)\n    const isCurrentlyExpanded = groupSpacer.classList.contains('d-none')\n    const newCollapsed = isCurrentlyExpanded // If expanded, we want to collapse\n    \n    // Update visibility of spacer and header in group header row\n    this.toggleGroupHeaders(groupSpacer, groupHeader, newCollapsed)\n    \n    // Toggle spacer headers in column header row\n    this.toggleSpacerHeaders(groupName, newCollapsed)\n    \n    // Toggle column visibility in column header row\n    this.toggleColumnHeaders(groupName, newCollapsed)\n    \n    // Toggle spacer cells in body rows\n    this.toggleSpacerCells(groupName, newCollapsed)\n    \n    // Toggle regular cells visibility in body rows\n    this.toggleBodyCells(groupName, newCollapsed)\n    \n    // Save state to localStorage\n    this.saveState(groupName, newCollapsed)\n  }\n  \n  toggleGroupHeaders(spacer, header, collapsed) {\n    if (collapsed) {\n      spacer.classList.remove('d-none')\n      header.classList.add('d-none')\n      header.dataset.collapsed = 'true'\n    } else {\n      spacer.classList.add('d-none')\n      header.classList.remove('d-none')\n      header.dataset.collapsed = 'false'\n    }\n  }\n  \n  toggleSpacerHeaders(groupName, collapsed) {\n    const spacerHeaders = this.element.querySelectorAll(`.group-spacer-header[data-group=\"${groupName}\"]`)\n    spacerHeaders.forEach(header => {\n      header.classList.toggle('d-none', !collapsed)\n    })\n  }\n  \n  toggleSpacerCells(groupName, collapsed) {\n    const bodyRows = this.element.querySelectorAll('tbody tr')\n    bodyRows.forEach(row => {\n      const spacerCell = row.querySelector(`.group-spacer-cell[data-group=\"${groupName}\"]`)\n      if (spacerCell) {\n        spacerCell.classList.toggle('d-none', !collapsed)\n      }\n    })\n  }\n  \n  toggleColumnHeaders(groupName, collapsed) {\n    const columnHeaders = this.element.querySelectorAll(`th[data-group=\"${groupName}\"]`)\n    columnHeaders.forEach(header => {\n      // Skip spacer headers (they are handled separately)\n      if (header.classList.contains('group-spacer-header')) return\n      if (header.classList.contains('group-spacer')) return\n      if (header.classList.contains('group-header')) return\n      \n      // Toggle collapsed class on regular column headers\n      header.classList.toggle('collapsed', collapsed)\n    })\n  }\n  \n  toggleBodyCells(groupName, collapsed) {\n    const bodyRows = this.element.querySelectorAll('tbody tr')\n    \n    bodyRows.forEach(row => {\n      // Toggle spacer cell visibility\n      const spacerCell = row.querySelector(`.group-spacer-cell[data-group=\"${groupName}\"]`)\n      if (spacerCell) {\n        spacerCell.classList.toggle('d-none', !collapsed)\n      }\n      \n      // Toggle regular cells\n      const groupCells = row.querySelectorAll(`td.group-${groupName}`)\n      groupCells.forEach(cell => {\n        cell.classList.toggle('collapsed', collapsed)\n      })\n    })\n  }\n  \n  getGroupColumnIndices(groupName) {\n    const headerRow = this.element.querySelector('.column-header-row')\n    const headers = Array.from(headerRow.querySelectorAll('th'))\n    \n    return headers.reduce((indices, header, index) => {\n      if (header.dataset.group === groupName) {\n        indices.push(index)\n      }\n      return indices\n    }, [])\n  }\n  \n  saveState(groupName, collapsed) {\n    const tableId = this.getTableId()\n    if (!tableId) return\n    \n    const key = `table_${tableId}_group_${groupName}`\n    localStorage.setItem(key, collapsed.toString())\n  }\n  \n  loadState() {\n    const tableId = this.getTableId()\n    if (!tableId) return\n    \n    // Find all group spacers (one per collapsible group)\n    const groupSpacers = this.element.querySelectorAll('.group-spacer[data-group]')\n    \n    groupSpacers.forEach(spacer => {\n      const groupName = spacer.dataset.group\n      const savedState = this.getSavedState(tableId, groupName)\n      \n      if (savedState !== null) {\n        const collapsed = savedState === 'true'\n        const groupHeader = this.element.querySelector(`.group-header[data-group=\"${groupName}\"]`)\n        \n        if (groupHeader) {\n          // Update visibility of spacer and header\n          this.toggleGroupHeaders(spacer, groupHeader, collapsed)\n          \n          // Toggle spacer headers\n          this.toggleSpacerHeaders(groupName, collapsed)\n          \n          // Update column headers\n          this.toggleColumnHeaders(groupName, collapsed)\n          \n          // Toggle spacer cells\n          this.toggleSpacerCells(groupName, collapsed)\n          \n          // Update body cells\n          this.toggleBodyCells(groupName, collapsed)\n        }\n      }\n    })\n  }\n  \n  getTableId() {\n    const tableElement = this.element.closest('[id]')\n    return tableElement ? tableElement.id : null\n  }\n  \n  getSavedState(tableId, groupName) {\n    const key = `table_${tableId}_group_${groupName}`\n    return localStorage.getItem(key)\n  }\n}\n\n", "import ApplicationController from '../application_controller'\n\nexport default class extends ApplicationController {\n  connect() {\n    super.connect()\n    // Additional table initialization logic can go here\n    // The heavy lifting is done by filter-sort controller\n  }\n\n  // Placeholder for future table-specific features\n  // e.g., column visibility toggle, export functionality, etc.\n}\n\n", "import { Controller } from \"@hotwired/stimulus\";\n\nimport { split } from \"../packs/global_functions\";\n\nimport autocomplete from \"autocompleter\";\n\nexport default class extends Controller {\n  static targets = [\"output\", \"input\"];\n\n  connect() {\n    // Skip autocomplete initialization if inside a modal\n    // (modal-tag-fix controller will handle it when modal is shown)\n    const isInModal = this.element.closest('.modal')\n    if (isInModal) return\n\n    let input = $(this.inputTarget).next(\"input\")[0];\n    let supportedTags = split($(input).data(\"supportedtags\")).map(function (\n      value\n    ) {\n      return { label: value, value: value };\n    });\n\n    autocomplete({\n      input: input,\n      fetch: function (text, update) {\n        text = text.toLowerCase();\n        var suggestions = supportedTags.filter((n) =>\n          n.label.toLowerCase().startsWith(text)\n        );\n        update(suggestions);\n      },\n      onSelect: function (item) {\n        input.value = item.label;\n      },\n    });\n  }\n\n  addTag(event) {\n    if (event.keyCode == 13) {\n      event.preventDefault();\n      let target = $(event.currentTarget);\n      let input = $.trim(target.val());\n      if (input != \"\") {\n        // Split by comma to handle multiple tags at once\n        let tags = split(input);\n        \n        tags.forEach(tag => {\n          let trimmedTag = $.trim(tag);\n          if (trimmedTag != \"\" && $.inArray(trimmedTag, this.currentTags()) === -1) {\n            this.updateInputField(trimmedTag, true);\n            let tagElement = this.createTag(trimmedTag);\n            $(tagElement).appendTo(this.outputTarget);\n          }\n        });\n        \n        target.val(\"\");\n      }\n    }\n  }\n\n  deleteTag(event) {\n    let target = $(event.currentTarget);\n    let title = $.trim(target.html());\n    target.remove();\n\n    this.updateInputField(title, false);\n  }\n\n  createTag(title) {\n    let tag = document.createElement(\"div\");\n    $(tag).addClass(\"tag\");\n    $(tag).attr(\"data-action\", \"click->tag#deleteTag\");\n    $(tag).html(title);\n\n    return tag;\n  }\n\n  updateInputField(tag, push) {\n    let newTags = this.currentTags();\n    if (push) {\n      newTags.push(tag);\n    } else {\n      newTags = newTags.filter(function (v) {\n        return v !== tag;\n      });\n    }\n    $(this.inputTarget).val(newTags.join(\",\")).trigger(\"change\");\n  }\n\n  currentTags() {\n    let tags = $(this.inputTarget).val();\n    return split(tags);\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class TagInputController extends Controller {\n  textChange(event) {\n    event.preventDefault();\n    let char = event.data,\n      $target = $(event.currentTarget),\n      container = $target.next(\".pills\"),\n      hiddenField = $(\"#journey_tag_list\");\n    if (char === \" \") {\n      let value = $.trim($target.val());\n      $target.val(\"\");\n\n      if (value !== \"\") {\n        let tag = document.createElement(\"div\"),\n          text = document.createElement(\"span\"),\n          close = document.createElement(\"span\");\n\n        $(tag).attr(\"data-action\", \"click->tag-input#deleteTag\");\n\n        $(text).text(value);\n        $(text).addClass(\"tag-label\");\n        $(close).text(\"\u2573\");\n\n        $(tag).addClass(\"badge badge-pills badge-primary badge-clickable\");\n        $(text).appendTo(tag);\n        $(close).appendTo(tag);\n\n        $(tag).appendTo(container);\n\n        let array = cleanArray(hiddenField.val().split(\",\"));\n        array.push(value);\n\n        hiddenField.val(array.join(\",\"));\n      }\n    }\n  }\n\n  deleteTag(event) {\n    event.preventDefault();\n    let $target = $(event.currentTarget),\n      text = $target.children(\".tag-label\").text(),\n      hiddenField = $(\"#journey_tag_list\");\n\n    let array = cleanArray(hiddenField.val().split(\",\"));\n\n    let filtered = array.filter(function (el) {\n      return el !== text;\n    });\n\n    hiddenField.val(filtered.join(\",\"));\n    $target.remove();\n  }\n}\n\nfunction cleanArray(array) {\n  var filtered = array.filter(function (el) {\n    return el !== null && el !== \"\";\n  })\n  return filtered\n}", "import ApplicationController from './application_controller'\n\nexport default class TagModalController extends ApplicationController {\n\n  initialize() {\n    super.initialize();\n  }\n\n  connect() {\n    super.connect();\n    this.setupFormValidation();\n  }\n\n  /*\n    Sets up Bootstrap form validation for all forms with .needs-validation class\n    \n    Prevents form submission if validation fails and adds Bootstrap validation styling\n  */\n  setupFormValidation() {\n    // Bootstrap form validation\n    const forms = this.element.querySelectorAll('.needs-validation');\n    forms.forEach(form => {\n      form.addEventListener('submit', (event) => {\n        if (!form.checkValidity()) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        form.classList.add('was-validated');\n      });\n    });\n  }\n\n  /*\n    Opens the edit tag modal and populates it with tag data\n    \n    @param event [Object] The click event object from the edit button\n    \n    Reads tag ID and name from button data attributes, updates the form action URL \n    to point to the correct tag, populates the name input field, and shows the modal\n  */\n  openEditModal(event) {\n    const target = $(event.currentTarget);\n    const tagId = target.data('tag-id');\n    const tagName = target.data('tag-name');\n    \n    if (!tagId) {\n      console.error(\"No tag ID found!\");\n      return;\n    }\n    \n    // Update form action\n    const form = document.getElementById('edit_tag_form');\n    const nameInput = document.getElementById('edit_tag_name');\n    \n    const currentAction = form.action;\n    const newAction = currentAction.replace('/0', '/' + tagId);\n    \n    form.action = newAction;\n    nameInput.value = tagName;\n    \n    // Show modal using Bootstrap\n    const modal = new bootstrap.Modal(document.getElementById('edit_tag_modal'));\n    modal.show();\n  }\n\n  /*\n    Confirms tag deletion by submitting the multidelete form\n    \n    Called by the Modals::Delete component when user confirms deletion\n    in the delete confirmation modal\n  */\n  confirmDelete() {\n    const form = document.getElementById('multidelete_form');\n    if (form) {\n      form.submit();\n    } else {\n      console.error('Multidelete form not found');\n    }\n  }\n}\n", "import ApplicationController from \"./application_controller\"\n\nexport default class extends ApplicationController {\n  static targets = [\"submitButton\"]\n  static values = { submitUrl: String, confirmMessage: String }\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false // No StimulusReflex needed for this controller\n  }\n\n  connect() {\n    super.connect()\n    this.logInfo(\"Template reset form controller connected\")\n    this.updateSubmitButton()\n  }\n\n\n\n  disconnect() {\n    super.disconnect()\n    this.logInfo(\"Template reset form controller disconnected\")\n  }\n\n  /**\n   * Toggles all tenant checkboxes when the header checkbox is clicked\n   * @param {Event} event - The change event from the header checkbox\n   */\n  toggleAll(event) {\n    const isChecked = event.target.checked\n    const checkboxes = this.element.querySelectorAll('.tenant-checkbox')\n    \n    checkboxes.forEach(checkbox => {\n      checkbox.checked = isChecked\n    })\n    \n    this.updateSubmitButton()\n    this.updateHeaderCheckbox()\n    this.logInfo(`Toggled all checkboxes to: ${isChecked}`)\n  }\n\n  /**\n   * Updates the submit button state based on checkbox selections\n   * Called when individual checkboxes change\n   * @param {Event} event - The change event from a checkbox\n   */\n  checkboxChanged(event) {\n    this.updateSubmitButton()\n    this.updateHeaderCheckbox()\n    this.logInfo(\"Checkbox changed, updated button and header states\")\n  }\n\n  /**\n   * Updates the submit button enabled/disabled state\n   */\n  updateSubmitButton() {\n    const checkedBoxes = this.element.querySelectorAll('.tenant-checkbox:checked')\n    const hasSelection = checkedBoxes.length > 0\n    \n    if (this.hasSubmitButtonTarget) {\n      this.submitButtonTarget.disabled = !hasSelection\n      \n      if (hasSelection) {\n        this.submitButtonTarget.classList.remove('btn-outline-warning')\n        this.submitButtonTarget.classList.add('btn-warning')\n      } else {\n        this.submitButtonTarget.classList.remove('btn-warning')\n        this.submitButtonTarget.classList.add('btn-outline-warning')\n      }\n      \n      this.logInfo(`Submit button ${hasSelection ? 'enabled' : 'disabled'} (${checkedBoxes.length} selected)`)\n    }\n  }\n\n  /**\n   * Updates the header checkbox state based on individual checkbox selections\n   */\n  updateHeaderCheckbox() {\n    const checkboxes = this.element.querySelectorAll('.tenant-checkbox')\n    const checkedBoxes = this.element.querySelectorAll('.tenant-checkbox:checked')\n    const headerCheckbox = this.element.querySelector('thead input[type=\"checkbox\"]')\n    \n    if (headerCheckbox && checkboxes.length > 0) {\n      if (checkedBoxes.length === 0) {\n        headerCheckbox.checked = false\n        headerCheckbox.indeterminate = false\n      } else if (checkedBoxes.length === checkboxes.length) {\n        headerCheckbox.checked = true\n        headerCheckbox.indeterminate = false\n      } else {\n        headerCheckbox.checked = false\n        headerCheckbox.indeterminate = true\n      }\n    }\n  }\n\n  /**\n   * Handles form submission with confirmation\n   * @param {Event} event - The click event from submit button\n   */\n  handleSubmit(event) {\n    event.preventDefault() // Prevent default button behavior\n    \n    this.logInfo(\"Processing template reset request\")\n    \n    const checkedBoxes = this.element.querySelectorAll('.tenant-checkbox:checked')\n    this.logInfo(`Found ${checkedBoxes.length} checked boxes`)\n    \n    if (checkedBoxes.length === 0) {\n      alert('Bitte w\u00E4hlen Sie mindestens einen Mandanten aus.')\n      return false\n    }\n\n    const tenantNames = Array.from(checkedBoxes).map(checkbox => {\n      const row = checkbox.closest('tr')\n      const tenantNameElement = row.querySelector('td:nth-child(2) strong')\n      return tenantNameElement ? tenantNameElement.textContent.trim() : 'Unbekannt'\n    })\n\n    // Use the translated confirmation message from Rails\n    const baseMessage = this.confirmMessageValue || 'Sind Sie sicher, dass Sie die ausgew\u00E4hlten Mandanten verarbeiten m\u00F6chten?'\n    const confirmMessage = `${baseMessage}\\n\\nAusgew\u00E4hlte Mandanten:\\n${tenantNames.join('\\n')}`\n    \n    this.logInfo(\"Showing confirmation dialog\")\n    if (!confirm(confirmMessage)) {\n      this.logInfo(\"User cancelled\")\n      return false\n    }\n\n    this.logInfo(`Processing templates for ${checkedBoxes.length} tenants`)\n    \n    // The controller is now attached to the form itself\n    const form = this.element\n    this.logInfo(`Form element: ${form.tagName}`)\n    this.logInfo(`Form ID: ${form.id}`)\n    this.logInfo(`Form action: ${form.action}`)\n    this.logInfo(`Form method: ${form.method}`)\n    \n    if (form.tagName === 'FORM') {\n      form.submit()\n      this.logInfo(\"Form submitted successfully\")\n    } else {\n      this.logInfo(\"ERROR: Controller not attached to form element!\")\n      alert(\"ERROR: Controller not attached to form element!\")\n    }\n    \n    return true\n  }\n} ", "import Ajax from '../../packs/ajax'\nimport ApplicationController from '../application_controller'\n\n/**\n * @fileoverview Stimulus controller for DeepL translation integration\n * @description Handles automatic translation of form fields using DeepL API.\n * Supports both regular form inputs and Trix rich text editors.\n * \n * @requires jQuery\n * @requires Ajax (custom AJAX wrapper)\n * @requires Stimulus\n * \n * @example Usage in HTML:\n * ```html\n * <div data-controller=\"translation--deepl\" data-url=\"/admin/translations/deepl\">\n *   <button data-action=\"click->translation--deepl#translate\" \n *           data-target-lang=\"de\">\n *     Translate to German\n *   </button>\n * </div>\n * ```\n */\n\nexport default class extends ApplicationController {\n\n  static targets = [\"hiddenField\"]\n\n  /**\n   * Translates form fields using DeepL API and populates target language fields\n   * \n   * This function handles the complete translation workflow:\n   * 1. Collects all translatable fields from the default translation form\n   * 2. Filters out fields with empty or whitespace-only content\n   * 3. Sends non-empty text content to DeepL API via AJAX\n   * 4. Maps translated results back to corresponding target language fields\n   * 5. Handles both regular form fields and Trix editor instances\n   * \n   * @async\n   * @param {Event} event - Click event from the translate button\n   * @param {string} event.target.dataset.targetLang - Target language code (e.g., 'de', 'fr', 'es')\n   * \n   * @description\n   * The function uses jQuery selectors to find translatable fields:\n   * - Includes: input[type=hidden], input[type=text], textarea\n   * - Excludes: fields with [untranslatable] attribute\n   * - Excludes: fields with empty or whitespace-only values\n   * - Scope: #default_translations container\n   * \n   * Field mapping uses deepl_attribute for correlation between source and target fields.\n   * For Trix editors, it updates both the editor content and hidden input field.\n   * Empty fields are automatically skipped to avoid unnecessary API calls.\n   * \n   * @example\n   * // HTML structure required:\n   * // <button data-action=\"click->translation--deepl#translate\" \n   * //         data-target-lang=\"de\" \n   * //         data-url=\"/api/translate\">\n   * //   Translate to German\n   * // </button>\n   * \n   * // Source field:\n   * // <input type=\"text\" deepl_attribute=\"title_en\" value=\"Hello World\">\n   * \n   * // Target field:\n   * // <input type=\"text\" deepl_attribute=\"title_en\" id=\"translation_de_title\">\n   * \n   * @throws {Error} When AJAX request fails or invalid response format\n   * \n   * @see {@link https://www.deepl.com/docs-api} DeepL API Documentation\n   * \n   * @since 1.0.0\n   * @memberof TranslationDeeplController\n   */\n  async translate(event) {\n    const url = this.element.dataset.url\n    const targetLang = event.target.dataset.targetLang\n    \n    // Collect all translatable fields from default translations\n    const fieldsToTranslate = $('#default_translations input[type=hidden]:not([untranslatable]), #default_translations input[type=text]:not([untranslatable]), #default_translations textarea:not([untranslatable])')\n    // console.log(\"fields to translate: \", fieldsToTranslate)\n    \n    // Create array of field-text pairs, then filter out empty strings\n    const fieldTextPairs = fieldsToTranslate.map((index, field) => ({\n      field: field,\n      text: $(field).val().trim()\n    })).toArray().filter(pair => pair.text.length > 0)\n    \n    // Extract filtered fields and texts\n    const filteredFieldsToTranslate = fieldTextPairs.map(pair => pair.field)\n    const textToTranslate = fieldTextPairs.map(pair => pair.text)\n    \n    // console.log(\"filtered fields to translate: \", filteredFieldsToTranslate)\n    // console.log(\"text to translate: \", textToTranslate)\n    \n    try {\n      // Send translation request to DeepL API\n      const response = await new Ajax(url).doAjax('POST', { \n        'text': textToTranslate, \n        'target_lang': targetLang \n      })\n      \n      const translations = response.translations\n      // console.log(\"translations: \", translations)\n      \n      if(translations.length > 0) {\n        const self = this\n        \n        // Map translations back to target language fields\n        filteredFieldsToTranslate.forEach((originField, index) => {\n          if(index < translations.length) {\n            let attribute = $(originField).attr('deepl_attribute')\n            \n            // Fallback: find attribute from associated Trix editor\n            if(attribute === undefined) {\n              attribute = $(`#default_translations [input=\\\"${originField.id}\\\"]`).attr('deepl_attribute')\n            }\n            \n            const text = translations[index].text\n            const field = $(`#translation_${targetLang} [deepl_attribute=\\\"${attribute}\\\"]`)\n            \n            // Handle Trix editor fields differently\n            if(field.attr('input') !== undefined) {\n              // Update Trix editor content\n              field.html(text)\n              // Update associated hidden input field\n              const hiddenField = $(`#${field.attr('input')}`)\n              hiddenField.val(text)\n            } else {\n              // Update regular form field\n              field.val(text)\n            }\n          }\n        })\n      } else {\n        // Handle translation failure\n        this.handleTranslationError()\n      }\n    } catch (error) {\n      console.error('Translation failed:', error)\n      this.handleTranslationError()\n    }\n  }\n\n  /**\n   * Handles translation errors by disabling translate buttons and showing error message\n   * @private\n   */\n  handleTranslationError() {\n    // Disable all DeepL translate buttons\n    $('[data-action=\"click->translation--deepl#translate\"]').addClass('disabled')\n    \n    // Show error message\n    $('#deepl_info').removeClass('d-none').addClass('show')\n  }\n\n  updateHiddenField(event) {\n    // event.preventDefault()\n    const $target = $(event.currentTarget)\n    const $checkedInput = $target\n    const optionIndex = $checkedInput.val()\n    const options = {left: true, right: false}\n    const currentMode = options[optionIndex]\n    if(this.hasHiddenFieldTarget) {\n      $(this.hiddenFieldTarget).val(currentMode)\n    }\n  }\n}", "import ApplicationController from '../application_controller'\n\nexport default class extends ApplicationController {\n\n  async openPhases(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_phases')\n    .then(() => {\n      this.showTranslationModal()\n      this.stopLoading()\n    })\n  }\n\n  async openHardfacts(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_hardfacts')\n    .then(() => {\n      this.showTranslationModal()\n      this.stopLoading()\n    })\n  \n  }\n\n  async openFrameData(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_frame_data')\n    .then(() => {\n      this.showTranslationModal()\n      this.stopLoading()\n    })\n  }\n\n  async openConsumables(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_consumables')\n    .then(() => {\n      this.showTranslationModal()\n      this.stopLoading()\n    })\n  }\n\n  async openEvent(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_event')\n    .then(() => {\n      this.showTranslationModal()\n      this.stopLoading()\n    })\n  }\n\n  async openLearnUnit(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_learn_unit')\n    .then(() => {\n      this.showTranslationModal()\n      this.stopLoading()\n    })\n  }\n\n  async openDefinition(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_definition')\n    .then(() => {\n      this.showTranslationModal()\n      this.stopLoading()\n    })\n  }\n\n  async openGroupDefinition(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_group_definition')\n    .then(() => {\n      this.showTranslationModal()\n      this.stopLoading()\n    })\n  }\n\n  async openContentJourneyHierarchyLevel(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_content_journey_hierarchy_level')\n      .then(() => {\n        this.showTranslationModal()\n      })\n    this.stopLoading()\n  }\n\n  async openAllJourneyHierarchyLevels(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_all_journey_hierarchy_levels')\n      .then(() => {\n        this.showTranslationModal()\n      })\n    this.stopLoading()\n  }\n\n  async openJourneyContainer(event) {\n    event.preventDefault()\n    this.startLoading()\n    await this.stimulate('Translation::Translatables#open_journey_container')\n      .then(() => {\n        this.showTranslationModal()\n        this.stopLoading()\n      })\n  }\n\n  /**\n   * Shows the translation modal after StimulusReflex has updated the DOM\n   * @returns {void}\n   * @private\n   */\n  showTranslationModal() {\n    // Wait for DOM update then show modal\n    requestAnimationFrame(() => {\n      const modal = document.querySelector('#translation_modal .modal')\n      if (modal) {\n        console.log(\"\u2705 Translation modal found and showing\")\n        const bootstrapModal = new bootstrap.Modal(modal)\n        bootstrapModal.show()\n      } else {\n        // Fallback with timeout\n        setTimeout(() => {\n          const modal = document.querySelector('#translation_modal .modal')\n          if (modal) {\n            console.log(\"\u2705 Translation modal found on fallback\")\n            const bootstrapModal = new bootstrap.Modal(modal)\n            bootstrapModal.show()\n          } else {\n            console.error(\"\u274C Translation modal not found after reflex\")\n          }\n        }, 100)\n      }\n    })\n  }\n\n}", "import ApplicationController from './application_controller'\n\n/**\n * Stimulus controller for Trix image zoom functionality\n * Enhances images in .trix-content with hover magnifier and click-to-zoom\n * Works with dynamically loaded content via MutationObserver\n */\nexport default class extends ApplicationController {\n  connect() {\n    super.connect()\n    this.useReflex = true\n    this.enhanceImages()\n    this.observeContentChanges()\n  }\n\n  /**\n   * Sets up MutationObserver to watch for dynamically added content\n   * This handles StimulusReflex updates and other dynamic content\n   */\n  observeContentChanges() {\n    this.observer = new MutationObserver((mutations) => {\n      mutations.forEach((mutation) => {\n        // Check for added nodes\n        mutation.addedNodes.forEach((node) => {\n          if (node.nodeType === 1) { // Element node\n            // Only process images within .trix-content\n            if (node.tagName === 'IMG' && this.isInTrixContent(node)) {\n              this.addZoomOverlay(node)\n            }\n            // Check for trix-content containers within the added node\n            const trixContainers = node.querySelectorAll?.('.trix-content, [data-trix-content]')\n            trixContainers?.forEach(container => {\n              const images = container.querySelectorAll('img, action-text-attachment img')\n              images.forEach(img => this.addZoomOverlay(img))\n            })\n            \n            // Check if the node itself is a trix-content\n            if (node.classList?.contains('trix-content') || node.hasAttribute?.('data-trix-content')) {\n              const images = node.querySelectorAll('img, action-text-attachment img')\n              images.forEach(img => this.addZoomOverlay(img))\n            }\n          }\n        })\n      })\n    })\n\n    // Start observing the element for child changes\n    this.observer.observe(this.element, {\n      childList: true,\n      subtree: true\n    })\n  }\n  \n  /**\n   * Check if an image is within a .trix-content container\n   * @param {HTMLImageElement} img - The image to check\n   * @returns {boolean}\n   */\n  isInTrixContent(img) {\n    return img.closest('.trix-content, [data-trix-content]') !== null\n  }\n\n  /**\n   * Enhances all images in trix content with zoom capability\n   * Only applies to read-only content, not editors\n   */\n  enhanceImages() {\n    // Find all trix-content and similar containers\n    const trixContainers = this.element.querySelectorAll('.trix-content, [data-trix-content]')\n    \n    trixContainers.forEach(container => {\n      // Skip if this is a trix editor (only enhance read-only content)\n      if (container.tagName === 'TRIX-EDITOR') {\n        return\n      }\n\n      // Find all images including those in action-text-attachments\n      const images = container.querySelectorAll('img, action-text-attachment img')\n      images.forEach(img => this.addZoomOverlay(img))\n    })\n  }\n\n  /**\n   * Adds zoom overlay and click handler to an image\n   * @param {HTMLImageElement} img - The image element to enhance\n   */\n  addZoomOverlay(img) {\n    // Skip if already enhanced\n    if (img.dataset.zoomEnhanced) {\n      return\n    }\n\n    img.dataset.zoomEnhanced = 'true'\n\n    // Create wrapper for hover effect\n    const wrapper = document.createElement('div')\n    wrapper.className = 'trix-image-zoomable'\n    wrapper.dataset.action = 'click->trix-image-zoom#openZoomModal'\n    wrapper.dataset.imageSrc = img.src\n\n    // Replace image with wrapped version\n    img.parentNode.insertBefore(wrapper, img)\n    wrapper.appendChild(img)\n\n    // Create magnifier icon overlay\n    const overlay = document.createElement('div')\n    overlay.className = 'trix-zoom-overlay'\n    overlay.innerHTML = '<i class=\"material-icons\">zoom_in</i>'\n    wrapper.appendChild(overlay)\n  }\n\n  /**\n   * Opens zoom modal via StimulusReflex\n   * @param {Event} event - Click event\n   */\n  openZoomModal(event) {\n    event.preventDefault()\n    const imageSrc = event.currentTarget.dataset.imageSrc\n\n    this.stimulate('TrixImageZoomReflex#open_zoom_modal', imageSrc)\n  }\n\n  disconnect() {\n    // Stop observing\n    if (this.observer) {\n      this.observer.disconnect()\n    }\n\n    // Cleanup: Remove enhanced wrappers\n    const wrappers = this.element.querySelectorAll('.trix-image-zoomable')\n    wrappers.forEach(wrapper => {\n      const img = wrapper.querySelector('img')\n      if (img) {\n        delete img.dataset.zoomEnhanced\n        wrapper.parentNode.insertBefore(img, wrapper)\n        wrapper.remove()\n      }\n    })\n\n    super.disconnect()\n  }\n}\n\n", "import ApplicationController from \"./application_controller\"\n\nexport default class extends ApplicationController {\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n  }\n\n  connect() {\n    this.logger.info(this.identifier, \"connected\")\n    const debugEvents = $(this.element).data('debug-events').split(',')\n    debugEvents.forEach((debugEvent) => {\n      this.logInfo(`register for event: ${debugEvent}`)\n      document.documentElement.addEventListener(debugEvent, (event) => {\n        this.logInfo(`${debugEvent} -> ${$(event)}`)\n      })\n    })\n  }\n}", "import ApplicationController from './application_controller'\n\n\nexport default class extends ApplicationController {\n\n  reinviteUser(event) {\n    this.stimulate('UserReflex#reinvite_user')\n  }\n\n}", "import ApplicationController from \"./application_controller\"\nimport { CollapseStateManager } from \"./collapse_state_manager\"\n\n/**\n * Stimulus controller for managing collapse states in User Supervision view\n * Provides persistent collapse state management using CollapseStateManager\n */\nexport default class UsersCollapseController extends ApplicationController {\n  connect() {\n    super.connect()\n    this.initializeStateManager()\n    this.initializeCollapseStates()\n  }\n\n  /**\n   * Initialize the CollapseStateManager for user supervision\n   */\n  initializeStateManager() {\n    const isDebug = document.documentElement.hasAttribute('data-turbo-dev')\n    \n    this.stateManager = new CollapseStateManager('users_supervision_collapse_states', {\n      debug: isDebug,\n      maxAge: 30 // Keep states for 30 days\n    })\n  }\n\n  /**\n   * Initialize collapse state management for all collapsible sections\n   */\n  initializeCollapseStates() {\n    // Always show user selection to keep the list visible by default\n    this.stateManager.setState('#user_selection_collapse', true)\n\n    // Use the generic method from CollapseStateManager with manual icons\n    this.stateManager.initializeCollapseStates(this.element, {\n      useManualIcons: true,\n      getDefaultState: (targetId) => {\n        // Users supervision sections default to collapsed for clean UI\n        return targetId === '#user_selection_collapse'\n      }\n    })\n  }\n\n  /**\n   * Debug method to inspect current collapse states\n   * Available in browser console via: usersCollapseController.debugStates()\n   */\n  debugStates() {\n    if (this.stateManager) {\n      console.group('Users Supervision Collapse States')\n      console.table(this.stateManager.getDebugInfo())\n      console.groupEnd()\n    }\n  }\n}\n", "import ApplicationController from './application_controller'\nimport Param from '../packs/param';\n\nexport default class UsersController extends ApplicationController {\n\n  initialize() {\n    super.initialize();\n  }\n\n  connect() {\n    super.connect();\n    this.param = new Param(this.getBaseUrl());\n  }\n\n  userDraggingStart(event) {\n    let target = $(event.target);\n    event.preventDefault;\n    copyDataToDataTransfer(event.dataTransfer, target.data());\n  }\n\n  showJourneyData(event) {\n    let target = $(event.currentTarget),\n      selected = target.hasClass(\"selected\"),\n      userId = parseInt(target.data(\"id\"));\n    $(\".user-list-table.selected\").removeClass(\"selected\");\n    if (!selected) target.addClass(\"selected\");\n\n    this.stimulate(\"UserReflex#showJourneyData\", selected ? null : userId);\n  }\n\n  showUserList(event) {\n    let target = $(event.currentTarget),\n      groupBtn = $(\"#group_btn\");\n    groupBtn.removeClass(\"btn-secondary\").addClass(\"btn-light\");\n    groupBtn\n      .find(\".material-icons\")\n      .removeClass(\"text-light\")\n      .addClass(\"text-secondary\");\n    target.addClass(\"btn-secondary\").removeClass(\"btn-light\");\n    target\n      .find(\".material-icons\")\n      .addClass(\"text-light\")\n      .removeClass(\"text-secondary\");\n\n    this.stimulate(\"UsersReflex#showUserList\");\n  }\n\n  showGroupList(event) {\n    let target = $(event.currentTarget),\n      userBtn = $(\"#user_btn\");\n    userBtn.removeClass(\"btn-secondary\").addClass(\"btn-light\");\n    userBtn\n      .find(\".material-icons\")\n      .removeClass(\"text-light\")\n      .addClass(\"text-secondary\");\n    target.addClass(\"btn-secondary\").removeClass(\"btn-light\");\n    target\n      .find(\".material-icons\")\n      .addClass(\"text-light\")\n      .removeClass(\"text-secondary\");\n\n    this.stimulate(\"UsersReflex#showGroupList\");\n  }\n\n  setLocale(event) {\n    const $target = $(event.currentTarget);\n    const locale = $(event.currentTarget).data('value');\n    console.log(`locale: ${locale}`)\n  //   this.stimulate(\"IncognitoReflex#change_locale\", locale).then((e) => {console.log('done')})\n  //     .catch((e) => {\n  //   console.log(`error: ${e}`)\n    // })\n  $.ajax({\n    type: \"POST\",\n    url: '/adapt_locale',\n    data: {'locale': locale},\n    success: (data) => {\n      console.log('locale has been adapted');\n      location.reload();\n    }\n  })\n\n  }\n\n  /*\n    Toggles whether fake users are included\n\n    @param event [Object] The click event object from the toggle element\n    @option options [Boolean] :with_fakes Include (true) or exclude (false) fake users. Defaults to false.\n    Toggles whether fake users are included by checking the value of the toggle element that triggered the event, updating the 'with_fakes' param, and reloading the page.\n  */\n  toggleFakeUser(event) {\n    const $target = $(event.currentTarget);\n    const withFakes = $target.prop('checked')\n    this.param.updateParams(\"with_fakes\", withFakes, false);\n    location.reload();\n  }\n}\n\n/*\n* copies everything from JQuery.Data to DataTransfer.Data\n* the values can be accessed by camelCase in the DataTransfer.Data object\n*/\nfunction copyDataToDataTransfer(dataTransfer, data) {\n  for (let [key, value] of Object.entries(data)) {\n    dataTransfer.setData(key, value);\n  }\n  return dataTransfer\n}", "import FieldValidationController from './field_validation_controller'\nimport VALIDATION_STATES from './validation_states'\n\nexport default class extends FieldValidationController {\n  checkValidation(target) {\n    const isChecked = target.prop('checked')\n    console.log('checkbox checked: ',target.prop('checked'))\n    let newValidationState = ''\n    newValidationState = isChecked ? VALIDATION_STATES.valid: VALIDATION_STATES.invalid\n    \n    if(this.validationState !== newValidationState) {\n      this.validationState = newValidationState\n      this.dispatchValidationState()\n    }\n  }\n}", "import ApplicationController from '../application_controller'\nimport VALIDATION_STATES from './validation_states'\n\nexport default class extends ApplicationController {\n  static targets = [\"input\"]\n\n  initialize() {\n    super.initialize()\n    this.isRequired = $(this.element).data('required')\n    this.validationState = 'invalid'\n    this.validationRegex = $(this.element).data('validation-regex')\n    if(this.hasInputTarget) {\n      if(this.isRequired) {\n        this.inputTarget.addEventListener('input', this.watchField.bind(this))\n        this.checkValidation($(this.inputTarget))\n      } else {\n        // well optional so post it as valid\n        this.validationState = 'valid'\n        this.dispatchValidationState()\n      }\n    }\n  }\n\n  watchField(event) {\n    this.checkValidation($(event.currentTarget))\n  }\n\n  checkValidation(target) {\n    const value = target.val()\n    let newValidationState = ''\n    if(this.validationRegex != null) {\n      const regularExpression = new RegExp(this.validationRegex, 'g')\n      console.log(regularExpression)\n      newValidationState = regularExpression.test(value) ? VALIDATION_STATES.valid : VALIDATION_STATES.invalid\n    } else {\n      // just check if it is there\n      newValidationState = value !== '' && value !== null ? VALIDATION_STATES.valid : VALIDATION_STATES.invalid\n    }\n    if(this.validationState !== newValidationState) {\n      this.validationState = newValidationState\n      this.dispatchValidationState()\n    }\n  }\n\n  dispatchValidationState() {\n    this.logInfo(`dispatching new state ${this.validationState}`)\n    const eventName = 'validations.field-validation'\n    const stateData =  {\n      validationState: this.validationState\n    }\n    const validationStateEvent = new CustomEvent(eventName, {\n      detail: stateData\n    })\n\n    this.element.dispatchEvent(validationStateEvent)\n    $(this.element).trigger({type: eventName, detail: stateData})\n  }\n}", "export default {\n  'valid': 'valid',\n  'invalid': 'invalid'\n}", "\nimport FieldValidationController from './field_validation_controller'\nimport VALIDATION_STATES from './validation_states'\n\nexport default class extends FieldValidationController {\n  initialize() {\n    super.initialize()\n    if(this.hasInputTarget) {\n      if(this.isRequired) {\n        this.inputTarget.addEventListener('change', this.watchField.bind(this))\n      }\n    }\n    \n  }\n  checkValidation(target) {\n    console.log(target.val())\n    super.checkValidation(target)\n  }\n}", "import ApplicationController from '../application_controller'\nimport VALIDATION_STATES from './validation_states'\n\nexport default class extends ApplicationController {\n  static targets = [\"field\"]\n\n  initialize() {\n    super.initialize()\n\n    if(this.hasFieldTarget) {\n      this.numberOfFields = this.fieldTargets.length\n      this.validationStates = []\n      this.id = $(this.element).attr('id').replace('_form', '')\n      this.validationState = VALIDATION_STATES.invalid\n      $(document).on('validations.field-validation', '[data-validations--group-validation-target=\"field\"]', this.watchValidations.bind(this))\n    }\n  }\n\n  watchValidations(event) {\n    this.logInfo(`received validation: ${event.detail.validationState}`)\n    const target = $(event.currentTarget)\n    this.checkValidationState(target, event.detail.validationState)\n  }\n\n  checkValidationState(target, state) {\n    const index = $(this.fieldTargets).index(target)\n    this.validationStates[index] = state\n\n    const currentValidationStates = this.validationStates.filter(e => String(e).trim())\n\n    let groupValid = currentValidationStates.every((state) => state === VALIDATION_STATES.valid)\n\n    groupValid &&= currentValidationStates.length === this.numberOfFields\n\n    const newValidationState = groupValid ? VALIDATION_STATES.valid : VALIDATION_STATES.invalid\n\n    if(newValidationState !== this.validationState) {\n      this.validationState = newValidationState\n      this.dispatchValidationState()\n    }\n  }\n\n  dispatchValidationState() {\n    this.logInfo(`dispatching new state ${this.validationState}`)\n    const eventName = 'validations.group-validation'\n    const stateData =  {\n      id: this.id,\n      validationState: this.validationState\n    }\n    const validationStateEvent = new CustomEvent(eventName, {\n      detail: stateData\n    })\n\n    this.element.dispatchEvent(validationStateEvent)\n    $(this.element).trigger({ type: eventName, detail:  stateData})\n  }\n}", "import ApplicationController from \"../application_controller\"\nimport VALIDATION_STATES from \"./validation_states\"\n\nexport default class extends ApplicationController {\n\n  static targets = ['group']\n\n  initialize() {\n    super.initialize()\n    if(this.hasGroupTarget) {\n      document.addEventListener\n      $(document).on('validations.group-validation', '[data-validations--journey-validation-target=\"group\"]', this.watchValidations.bind(this))\n    }\n  }\n\n  watchValidations(event) {\n    this.logInfo('received new validation state.')\n    const targetId = event.detail.id\n    const state = event.detail.validationState\n    const stateTarget = $(this.element).find(`#${targetId} .state`)\n\n    switch(state) {\n      case VALIDATION_STATES.valid:\n        stateTarget.addClass('filled')\n        break\n      case VALIDATION_STATES.invalid:\n        stateTarget.removeClass('filled')\n        break\n    }\n  }\n}", "import ApplicationController from './application_controller'\n\n////\n// all video and audio js initialization\n////\nexport default class extends ApplicationController {\n\n  initialize() {\n    super.initialize()\n    const self = this\n\n    this.playersReady = false\n    window.academyVideoPlayers = {}\n    this.audioPlayers = {}\n    // when the API is ready we can create youtube players\n    window.onYouTubeIframeAPIReady = function() {\n      self.playersReady = true\n    }\n  }\n\n  connect() {\n    super.connect();\n\n    let self = this\n    // let initializeIt = $(\"#learn_path\").data(\"initialize-media\")\n    // console.log(`initialize audio/video players: ${initializeIt}`)\n    let noInitialization = $(\"#learn_path_container\").data(\"media-initialized\")\n    console.log(`initialize audio/video players: ${!noInitialization}`)\n\n    // we do not initialize a second time, when we only render parts of the page (like for reflex morphs)\n    if(!noInitialization) {\n      // 1) initialize video players\n      this.initializeVideoPlayers()\n\n      // 2) initialize  audio players\n      this.initializeAudioPlayers()\n      $('#learn_path_container').attr(\"data-media-initialized\", true)\n    }\n\n  }\n  \n  ///\n  // VIDEO\n  ///\n\n\n\n  ///\n  // create the corresponding youtube/vimeo player whenever the user clicks to watch the video\n  ///\n  initializeVideoPlayers() {\n    console.log('init video players')\n    const self = this\n\n    /// 1) load the needed scripts (YT will call onYouTubeIframeAPIReady, when loaded)\n\n    const firstScriptTag = document.getElementsByTagName('script')[0]\n\n    const ytTag = document.createElement('script')\n    ytTag.src = 'https://www.youtube.com/iframe_api'\n    firstScriptTag.parentNode.insertBefore(ytTag, firstScriptTag)\n\n    // const vimeoTag = document.createElement('script')\n    // vimeoTag.src = 'https://player.vimeo.com/api/player.js'\n    // firstScriptTag.parentNode.insertBefore(vimeoTag, firstScriptTag)\n\n\n    /// 2) establish the YT.Player ready event listener\n    document.addEventListener(\"YTVideo.ready\", function(event) { \n      // console.log(\"details in ready event are:\", event.detail)\n      const videoId = event.detail.video_id\n      // console.log(`video id: ${videoId}`)\n      const player = event.detail.player\n      // console.log(`player: ${player}`)\n      self.onAcademyPlayerReady(videoId, player)\n    })\n\n    /// 3) detach the video modals, so they will also exist after partial rerendering\n    const videos = $('.modal.video').detach()\n    videos.appendTo('body')\n\n    /// 2) set event listener for video start clicks\n    $(document).on('click', '[data-action=open-video]', function(event) {\n      console.log('open the video')\n      \n      var $target, player, video_name, video_ref, video_tag_id, video_type, shouldConsume\n      $target = $(event.currentTarget)\n      video_name = $target.data('name')\n      shouldConsume = $target.data('consume')\n      console.log(`video name: ${video_name}`)\n      if ((window.academyVideoPlayers[video_name] == null)) {\n        video_type = $target.data('type')\n        video_ref = $target.data('ref')\n        video_tag_id = 'video_player_' + video_name\n        player = new VideoPlayer({\n          id: video_tag_id,\n          url: video_ref,\n          type: 'youtube'\n        })\n        player.createPlayer()\n        if(shouldConsume) {\n          player.on('ended', function() {\n            return self.markVideoAsConsumed(video_name)\n          })\n        }\n        if (player != null) {\n          window.academyVideoPlayers[video_name] = {\n            player: player,\n            state: 'new',\n            id: video_name,\n            type: video_type\n          }\n        }\n      } else {\n        /// player has been created before, so just use it\n        console.log(\"we restart an existing player\")\n        player = window.academyVideoPlayers[video_name].player\n        self.manipulateVideoModal(video_name, \"show\")\n        player.startVideo()\n      }\n    })\n    \n  }\n\n    ///\n  // event, fired when the player is ready\n  ///\n  onAcademyPlayerReady(videoId, player) {\n    console.log(`player for ${videoId} is ready`)\n    const $video_modal = this.getVideoModal(videoId)\n\n    // show the running video\n    $video_modal.modal(\"show\")\n    player.playVideo()\n\n    // set listener for the modal hide event, so we can pause the video\n    $video_modal.on('hidden.bs.modal', function() {\n      console.log(\"pause video, as modal got hidden\")\n      player.pauseVideo()\n    })  \n\n    // and set state for video\n    window.academyVideoPlayers[videoId]['state'] = 'ready'\n  }  \n\n  ///\n  // marks a video learn_unit as consumed via reflex \n  ///\n  markVideoAsConsumed(videoId) {\n    console.log(`MARK VIDEO '${videoId}' AS COMSUMED`)\n    const learnUnitId = this.manipulateVideoModal(videoId, \"hide\")\n    if (learnUnitId) {\n      this.stimulate('ConsumableReflex#claim_video', learnUnitId)\n    }\n  }\n\n  ///\n  // @return [jQuery::Element] the correspondingvideo modal\n  ///\n  getVideoModal(videoId) { \n    return $(`#modal_video_${videoId}`)\n  }\n\n  ///\n  // manipulates the modal for given videoId\n  // @param videoId [String] the internal ID for the video (name)\n  // @param action [String] the action for the modal (\"show\", \"hide\")\n  // @return [int] the id of the corresponding learn_unit\n  ///\n  manipulateVideoModal(videoId, action=\"show\") {\n    let learnUnitId = null\n    const $video_modal = this.getVideoModal(videoId)\n    if ($video_modal != null) {\n      learnUnitId = $video_modal.data('learn-unit-id')\n      $video_modal.modal(action)\n    }\n    return learnUnitId\n  }\n\n\n  // AUDIO\n\n\n  ///\n  // create the corresponding youtube/vimeo player whenever the user clicks to watch the video\n  ///\n  initializeAudioPlayers() {\n    console.log('init audio players')\n    let self = this\n\n    $(document).on('click', 'a.audio-trigger', function(event) {\n      console.log('open the audio')\n      const $target = $(event.currentTarget)\n\n      // 1) find the corresponding player\n      const consumableId = $target.data('consumable-id')\n      const playerId = `audio_player_${consumableId}`\n      console.log(`started audio player '${playerId}'`)\n      const player = document.getElementById(playerId)\n\n      // 2) find modal for player and set event listeners (once)\n      const $audio_modal = $(\"#modal_audio_\" + consumableId)\n\n      if($audio_modal.data('url') === undefined) {\n        return\n      }\n\n      if(self.audioPlayers[playerId] == undefined) {\n        self.audioPlayers[playerId] = player\n\n        $audio_modal.on('hidden.bs.modal', function() {\n          console.log(\"pause audio, as modal got hidden\")\n          player.pause()\n        })\n        player.addEventListener(\"ended\", function() {\n          $audio_modal.modal(\"hide\")\n          self.stimulate('ConsumableReflex#claim_audio', consumableId)\n        })\n      }\n\n      // 3) now start the player and add listener for ended, so the consumable can be claimed\n      player.play()\n    })\n\n  }\n\n}", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = [\"player\", \"errorMessage\"]\n\n  connect() {\n    super.connect()\n    this.useReflex = false\n    if(this.hasPlayerTarget) {\n      this.id = $(this.playerTarget).data(\"id\")\n      this.videoPlayerType = $(this.playerTarget).data(\"video-player-type\")\n      this.videoId = $(this.playerTarget).data(\"video-id\")\n      this.videoUrl = $(this.playerTarget).data(\"video-url\")\n      this.initializeOnStart = $(this.playerTarget).data(\"initialize-on-start\")\n      this.playerControls = $(this.playerTarget).data(\"player-controls\")\n      if(this.playerControls === undefined) {\n        this.playerControls = \"2\"\n      }\n      console.log(this.playerControls)\n      this.dispatchedVideoEnded = false\n      // initialize the missing frameworks if there are one.\n      this.#initializeFrameworks()\n\n      if(this.initializeOnStart) {\n        window.YT.ready(() => {\n          if(this.player == null) {\n            this.createPlayer()\n          }\n        })\n      }\n    }\n  }\n\n  /**\n   * This plays the video back. If the player is not created yet it will be created.\n   * In case we have already played it back it will be replayed.\n   */\n  playVideo() {\n    if(this.player == null) {\n      this.createPlayer()\n    }\n    switch(this.videoPlayerType) {\n      case \"youtube\":\n        if(this.player.getPlayerState) {\n          if(this.player.getPlayerState() == YT.PlayerState.ENDED) {\n            this.stopVideo()\n          }\n        }\n        if(this.player.playVideo) {\n          this.player.playVideo()\n        } else {\n          this.startVideoOnReady = true\n        }\n        break\n      case \"vimeo\":\n        this.player.play()\n        break\n    }\n  }\n\n  /**\n   * This will pause the video.\n   */\n  pauseVideo() {\n    this.startVideoOnReady = false\n    if(this.player == null) {\n      this.createPlayer()\n    }\n\n    switch(this.videoPlayerType) {\n      case \"youtube\":\n        if(this.player.pauseVideo) {\n          this.player.pauseVideo()\n        }\n        break\n      case \"vimeo\":\n        this.player.pause()\n        break\n    }\n  }\n\n  /**\n   * This will stop the video\n   */\n  stopVideo() {\n    this.dispatchedVideoEnded = false\n    if(this.player == null) {\n      this.createPlayer()\n    }\n\n    switch(this.videoPlayerType) {\n      case \"youtube\":\n        if(this.player.stopVideo) {\n          this.player.stopVideo()\n        }\n        break\n      case \"vimeo\":\n        this.player.stop()\n        break\n    }\n  }\n\n  /**\n   * create a player instance either for vimeo or for youtube.\n   */\n  createPlayer() {\n    this.logInfo(`create player for ${this.videoPlayerType} with these parameters: ${this.videoId}, ${this.videoUrl}, ${this.id}`)\n    switch(this.videoPlayerType) {\n      case \"vimeo\":\n        if(this.videoUrl) {\n          this.player = new Vimeo.Player(\n            `video_player_${this.id}`,\n            { url: this.videoUrl, responsive: true }\n          )\n          this.player.on('ended', (event) => this.#dispatchVideoEnded(event))\n        } else {\n          // no video url for a vimeo video. Inform user about missing url.\n          this.logWarning(\"no vimeo video url is set\")\n          this.#displayErrorMessage()\n        }\n        break\n      case \"youtube\":\n        if(!this.videoId && !this.videoUrl) {\n          // neither id nor video url. Inform user about this\n          this.logWarning(\"neither a url or id is set for youtube\")\n          this.#displayErrorMessage()\n          return\n        }\n        let self = this\n        self.logInfo(\"youtube framework is ready to initialize\")\n        let youtubeId = self.videoId\n        if(self.videoUrl) {\n          youtubeId = self.#cutYoutubeId(self.url)\n        }\n        self.player = new window.YT.Player(\n          `video_player_${self.id}`,\n          { \n            height: \"100%\",\n            width: \"100%\",\n            videoId: youtubeId,\n            playerVars: { autoplay: 0, controls: this.playerControls, iv_load_policy: 3, modestbranding: 1, rel: 0, showinfo: 0 },\n            events: { 'onReady': (event) => { self.#onVideoReady(event, self) }, 'onStateChange': (event) => { self.#playerStateChange(event, self) } } \n          }\n        )\n        break\n      default:\n        // we don't know the video type. Display the User this information.\n        this.logWarning(\"we don't know what kind of video player you wanted to display.\")\n        break\n    }\n  }\n\n  /**\n   * This will import the needed frameworks for the videoPlayerType.\n   * When it is already imported it will not import it again.\n   */\n  #initializeFrameworks() {\n    const firstScriptTag = document.getElementsByTagName(\"script\")[0]\n    if($(\"script#yt_framework\").length == 0 && this.videoPlayerType == \"youtube\") {\n      this.logInfo(\"initializing youtube framework\")\n      const ytTag = document.createElement(\"script\")\n      ytTag.id = \"yt_framework\"\n      ytTag.src = 'https://www.youtube.com/iframe_api'\n      firstScriptTag.parentNode.insertBefore(ytTag, firstScriptTag)\n    }\n\n    if($(\"script#vimeo_framework\").length == 0 && this.videoPlayerType == \"vimeo\") {\n      this.logInfo(\"initializing vimeo framework\")\n      const vimeoTag = document.createElement('script');\n      vimeoTag.id = \"vimeo_framework\"\n      vimeoTag.src = 'https://player.vimeo.com/api/player.js';\n      firstScriptTag.parentNode.insertBefore(vimeoTag, firstScriptTag);\n    }\n  }\n\n  /**\n   * this dispatch the VideoPlayer.ended event through the player target dom.\n   * @param {*} event \n   */\n  #dispatchVideoEnded(event) {\n    if(!this.dispatchedVideoEnded) {\n      this.dispatchedVideoEnded = true\n      let player = event.target\n      const videoEnded = new CustomEvent(\"videoplayer.ended\", {\n        detail: { video_id: this.id, player: player },\n        bubbles: true,\n        cancelable: true,\n        composed: false,\n      })\n      if(this.hasPlayerTarget) {\n        this.logInfo(`dispatching event ${videoEnded.type}`)\n        this.playerTarget.dispatchEvent(videoEnded)\n      }\n    }\n  }\n\n  /**\n   * Callback for whenever the youtube player is ready for playback.\n   * It will dispatch the VideoPlayer.ready to the player Target dom object.\n   * @param {*} event \n   * @param {VideoPlayerController} self \n   */\n  #onVideoReady(event, self) {\n    let player = event.target\n\n    if(self.startVideoOnReady) {\n      self.playVideo()\n    }\n\n    const playerReadyEvent = new CustomEvent(\"videoplayer.ready\", {\n      detail: { video_id: this.id, player: player },\n      bubbles: true,\n      cancelable: true,\n      composed: false,\n    })\n    if(this.hasPlayerTarget) {\n      this.logInfo(`dispatching event ${playerReadyEvent.type}`)\n      this.playerTarget.dispatchEvent(playerReadyEvent)\n    }\n  }\n\n  /**\n   * Callback for Youtube Player when the state is changed.\n   * We are only in the YT.PlayerState.ENDED interested to dispatch an Event for this.\n   * @param {*} event \n   * @param {VideoPlayerController} self \n   */\n  #playerStateChange(event, self) {\n    let state = event.data\n\n    this.logInfo(`current player state -> ${state}`)\n    this.logInfo(`state ended: ${YT.PlayerState.ENDED}`)\n\n    switch(state) {\n      case YT.PlayerState.ENDED:\n        this.startVideoOnReady = false\n        self.#dispatchVideoEnded(event)\n        break\n    }\n  }\n\n  /**\n   * this shows the Error Message when an error happens, like missing url and video id.\n   */\n  #displayErrorMessage() {\n    if(this.hasErrorMessageTarget) {\n      $(this.errorMessageTarget).removeClass('d-none')\n    }\n  }\n\n  /**\n   * This cut out the video id from an youtube url.\n   * @param {String} url the youtube url, e.g. https://www.youtube.com/watch?v=foQTKCQqVWk\n   * @returns {String} the youtube video id, e.g. foQTKCQqVWk\n   */\n  #cutYoutubeId(url) {\n    let regex = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/\n    let match = url.match(regex)\n    return match[1]\n  }\n}", "import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n\n  /**\n   * Toggles the view type based on the clicked element's data attribute and updates the window location.\n   *\n   * @param {Event} event - The event triggered by clicking the element.\n   */\n    toggleView(event) {\n      const target = $(event.currentTarget)\n      var view_type = target.data('view-type')\n      const url = new URL(window.location);\n      url.searchParams.set('view_type', view_type);\n      if (view_type == '2' || view_type == '3') {\n        url.searchParams.delete('page');\n      }\n      url.searchParams.set('view_type', view_type);\n      // window.history.pushState({}, '', url);\n      window.location = url;\n    }\n}", "import ApplicationController from \"../application_controller\"\n\nexport default class extends ApplicationController {\n\n  static targets = [\"points\"]\n\n  initialize() {\n    super.initialize()\n    this.totalPoints = {}\n    this.debug = false\n  }\n\n  updatePoints(event) {\n    const oldPoints = event.detail.oldPoints\n    const newPoints = event.detail.newPoints\n\n    this.#removePoints(oldPoints)\n    this.#addPoints(newPoints)\n\n    this.showDebugInformation(oldPoints, newPoints)\n\n    this.#formUpdate()\n  }\n\n  #removePoints(points) {\n    if(points) {\n      for(var key in points) {\n        this.totalPoints[key] -= points[key]\n      }\n    }\n  }\n\n  #addPoints(points) {\n    if(points) {\n      for(var key in points) {\n        if(!this.totalPoints.hasOwnProperty(key)) {\n          this.totalPoints[key] = 0\n        }\n        this.totalPoints[key] += points[key]\n      }\n    }\n  }\n\n  #formUpdate() {\n    if(this.hasPointsTarget) {\n      $(this.pointsTarget).val(JSON.stringify(this.totalPoints))\n    }\n  }\n\n  showDebugInformation(oldPoints, newPoints) {\n    if(this.debug) {\n      $(\"#toast_debug\").show()\n      this.updateDebugInformation(oldPoints, newPoints)\n    }\n  }\n\n  updateDebugInformation(oldPoints, newPoints) {\n    const oldPointLabel = $('#toast_debug').find('.old_points')\n    const newPointLabel = $('#toast_debug').find('.new_points')\n    const currentPointLabel = $('#toast_debug').find('.current_points')\n\n    console.log(\"old points: \", oldPoints)\n    console.log(\"new points: \", newPoints)\n    console.log(\"current points: \", this.totalPoints)\n\n    currentPointLabel.html(JSON.stringify(this.totalPoints))\n    if(newPoints != null) {\n      newPointLabel.html(JSON.stringify(newPoints))\n    } else {\n      newPointLabel.html(\"\")\n    }\n    if(oldPoints != null) {\n      oldPointLabel.html(JSON.stringify(oldPoints))\n    } else {\n      oldPointLabel.html(\"\")\n    }\n  }\n\n}", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  click(event) {\n    if(event.target.tagName != \"INPUT\") {\n      window.location = $(event.currentTarget).data('url');\n    }\n  }\n}", "\n        import * as module0 from './agreements_controller.js';import * as module1 from './application_controller.js';import * as module2 from './appointments_controller.js';import * as module3 from './booking_controller.js';import * as module4 from './bootstrap_controller.js';import * as module5 from './bulk_tag_modal_controller.js';import * as module6 from './bulk_tag_mode_controller.js';import * as module7 from './card_selection_controller.js';import * as module8 from './certificate_layout_editor_controller.js';import * as module9 from './character_counter_controller.js';import * as module10 from './chat_controller.js';import * as module11 from './clear_filter_controller.js';import * as module12 from './collapsible_controller.js';import * as module13 from './color_palette_controller.js';import * as module14 from './color_picker_controller.js';import * as module15 from './company_select_controller.js';import * as module16 from './consumable_controller.js';import * as module17 from './consumable_group_controller.js';import * as module18 from './date_display_controller.js';import * as module19 from './date_selection_controller.js';import * as module20 from './debug_toggle_controller.js';import * as module21 from './definition_controller.js';import * as module22 from './delete_controller.js';import * as module23 from './drop_file_controller.js';import * as module24 from './drop_it_controller.js';import * as module25 from './dropdown_controller.js';import * as module26 from './dropzone_controller.js';import * as module27 from './dsl_import_controller.js';import * as module28 from './event_specifics_controller.js';import * as module29 from './file_controller.js';import * as module30 from './filter_sort_controller.js';import * as module31 from './flatpickr_controller.js';import * as module32 from './form_controller.js';import * as module33 from './frame_data_controller.js';import * as module34 from './full_calendar_controller.js';import * as module35 from './google_maps_controller.js';import * as module36 from './group_definition_controller.js';import * as module37 from './group_definition_delete_handler_controller.js';import * as module38 from './group_selector_controller.js';import * as module39 from './groups_collapse_controller.js';import * as module40 from './groups_controller.js';import * as module41 from './hide_controller.js';import * as module42 from './image_source_switcher_controller.js';import * as module43 from './journey_containers/visibility_controller.js';import * as module44 from './journey_controller.js';import * as module45 from './journey_hierarchy_config_controller.js';import * as module46 from './journey_versions_controller.js';import * as module47 from './learn_card_collection_controller.js';import * as module48 from './learn_unit_select_controller.js';import * as module49 from './light_dark_mode_switch_controller.js';import * as module50 from './line_chart_controller.js';import * as module51 from './mc_sortable_controller.js';import * as module52 from './media_library_controller.js';import * as module53 from './migration_management_controller.js';import * as module54 from './modal_controller.js';import * as module55 from './modal_tag_fix_controller.js';import * as module56 from './multiplechoice_controller.js';import * as module57 from './multiselect_controller.js';import * as module58 from './navigation_controller.js';import * as module59 from './nested_form_controller.js';import * as module60 from './page_controller.js';import * as module61 from './pagination_controller.js';import * as module62 from './pain_point_modal_controller.js';import * as module63 from './password_toggle_controller.js';import * as module64 from './pdf_certificate_template_sortable_controller.js';import * as module65 from './pdf_template_form_controller.js';import * as module66 from './peak_collapsible_controller.js';import * as module67 from './permission_controller.js';import * as module68 from './permission_delete_handler_controller.js';import * as module69 from './phase_builder_controller.js';import * as module70 from './phase_change_controller.js';import * as module71 from './phase_line_controller.js';import * as module72 from './places_autocomplete_controller.js';import * as module73 from './popover_controller.js';import * as module74 from './profile_controller.js';import * as module75 from './props_filter_controller.js';import * as module76 from './publish_hover_controller.js';import * as module77 from './rating_controller.js';import * as module78 from './ratings_controller.js';import * as module79 from './rooms_controller.js';import * as module80 from './scroll/animation_controller.js';import * as module81 from './select2_controller.js';import * as module82 from './selection_controller.js';import * as module83 from './selectpicker_controller.js';import * as module84 from './skills_controller.js';import * as module85 from './slide_form_controller.js';import * as module86 from './slide_page_controller.js';import * as module87 from './supervising_controller.js';import * as module88 from './swagger_controller.js';import * as module89 from './switch_controller.js';import * as module90 from './sync_form_fields_controller.js';import * as module91 from './tables/column_groups_controller.js';import * as module92 from './tables/index_controller.js';import * as module93 from './tag_controller.js';import * as module94 from './tag_input_controller.js';import * as module95 from './tag_modal_controller.js';import * as module96 from './template_reset_form_controller.js';import * as module97 from './translation/deepl_controller.js';import * as module98 from './translation/translatables_controller.js';import * as module99 from './trix_image_zoom_controller.js';import * as module100 from './turbo_debugger_controller.js';import * as module101 from './user_controller.js';import * as module102 from './users_collapse_controller.js';import * as module103 from './users_controller.js';import * as module104 from './validations/boolean_validation_controller.js';import * as module105 from './validations/field_validation_controller.js';import * as module106 from './validations/file_validation_controller.js';import * as module107 from './validations/group_validation_controller.js';import * as module108 from './validations/journey_validation_controller.js';import * as module109 from './video_audio_js_controller.js';import * as module110 from './video_player_controller.js';import * as module111 from './view_switcher_controller.js';import * as module112 from './wizard/quiz_controller.js';import * as module113 from './workaround_fix_controller.js'\n        const modules = [{name: 'agreements', module: module0, filename: 'agreements_controller.js'},{name: 'application', module: module1, filename: 'application_controller.js'},{name: 'appointments', module: module2, filename: 'appointments_controller.js'},{name: 'booking', module: module3, filename: 'booking_controller.js'},{name: 'bootstrap', module: module4, filename: 'bootstrap_controller.js'},{name: 'bulk-tag-modal', module: module5, filename: 'bulk_tag_modal_controller.js'},{name: 'bulk-tag-mode', module: module6, filename: 'bulk_tag_mode_controller.js'},{name: 'card-selection', module: module7, filename: 'card_selection_controller.js'},{name: 'certificate-layout-editor', module: module8, filename: 'certificate_layout_editor_controller.js'},{name: 'character-counter', module: module9, filename: 'character_counter_controller.js'},{name: 'chat', module: module10, filename: 'chat_controller.js'},{name: 'clear-filter', module: module11, filename: 'clear_filter_controller.js'},{name: 'collapsible', module: module12, filename: 'collapsible_controller.js'},{name: 'color-palette', module: module13, filename: 'color_palette_controller.js'},{name: 'color-picker', module: module14, filename: 'color_picker_controller.js'},{name: 'company-select', module: module15, filename: 'company_select_controller.js'},{name: 'consumable', module: module16, filename: 'consumable_controller.js'},{name: 'consumable-group', module: module17, filename: 'consumable_group_controller.js'},{name: 'date-display', module: module18, filename: 'date_display_controller.js'},{name: 'date-selection', module: module19, filename: 'date_selection_controller.js'},{name: 'debug-toggle', module: module20, filename: 'debug_toggle_controller.js'},{name: 'definition', module: module21, filename: 'definition_controller.js'},{name: 'delete', module: module22, filename: 'delete_controller.js'},{name: 'drop-file', module: module23, filename: 'drop_file_controller.js'},{name: 'drop-it', module: module24, filename: 'drop_it_controller.js'},{name: 'dropdown', module: module25, filename: 'dropdown_controller.js'},{name: 'dropzone', module: module26, filename: 'dropzone_controller.js'},{name: 'dsl-import', module: module27, filename: 'dsl_import_controller.js'},{name: 'event-specifics', module: module28, filename: 'event_specifics_controller.js'},{name: 'file', module: module29, filename: 'file_controller.js'},{name: 'filter-sort', module: module30, filename: 'filter_sort_controller.js'},{name: 'flatpickr', module: module31, filename: 'flatpickr_controller.js'},{name: 'form', module: module32, filename: 'form_controller.js'},{name: 'frame-data', module: module33, filename: 'frame_data_controller.js'},{name: 'full-calendar', module: module34, filename: 'full_calendar_controller.js'},{name: 'google-maps', module: module35, filename: 'google_maps_controller.js'},{name: 'group-definition', module: module36, filename: 'group_definition_controller.js'},{name: 'group-definition-delete-handler', module: module37, filename: 'group_definition_delete_handler_controller.js'},{name: 'group-selector', module: module38, filename: 'group_selector_controller.js'},{name: 'groups-collapse', module: module39, filename: 'groups_collapse_controller.js'},{name: 'groups', module: module40, filename: 'groups_controller.js'},{name: 'hide', module: module41, filename: 'hide_controller.js'},{name: 'image-source-switcher', module: module42, filename: 'image_source_switcher_controller.js'},{name: 'journey-containers--visibility', module: module43, filename: 'journey_containers/visibility_controller.js'},{name: 'journey', module: module44, filename: 'journey_controller.js'},{name: 'journey-hierarchy-config', module: module45, filename: 'journey_hierarchy_config_controller.js'},{name: 'journey-versions', module: module46, filename: 'journey_versions_controller.js'},{name: 'learn-card-collection', module: module47, filename: 'learn_card_collection_controller.js'},{name: 'learn-unit-select', module: module48, filename: 'learn_unit_select_controller.js'},{name: 'light-dark-mode-switch', module: module49, filename: 'light_dark_mode_switch_controller.js'},{name: 'line-chart', module: module50, filename: 'line_chart_controller.js'},{name: 'mc-sortable', module: module51, filename: 'mc_sortable_controller.js'},{name: 'media-library', module: module52, filename: 'media_library_controller.js'},{name: 'migration-management', module: module53, filename: 'migration_management_controller.js'},{name: 'modal', module: module54, filename: 'modal_controller.js'},{name: 'modal-tag-fix', module: module55, filename: 'modal_tag_fix_controller.js'},{name: 'multiplechoice', module: module56, filename: 'multiplechoice_controller.js'},{name: 'multiselect', module: module57, filename: 'multiselect_controller.js'},{name: 'navigation', module: module58, filename: 'navigation_controller.js'},{name: 'nested-form', module: module59, filename: 'nested_form_controller.js'},{name: 'page', module: module60, filename: 'page_controller.js'},{name: 'pagination', module: module61, filename: 'pagination_controller.js'},{name: 'pain-point-modal', module: module62, filename: 'pain_point_modal_controller.js'},{name: 'password-toggle', module: module63, filename: 'password_toggle_controller.js'},{name: 'pdf-certificate-template-sortable', module: module64, filename: 'pdf_certificate_template_sortable_controller.js'},{name: 'pdf-template-form', module: module65, filename: 'pdf_template_form_controller.js'},{name: 'peak-collapsible', module: module66, filename: 'peak_collapsible_controller.js'},{name: 'permission', module: module67, filename: 'permission_controller.js'},{name: 'permission-delete-handler', module: module68, filename: 'permission_delete_handler_controller.js'},{name: 'phase-builder', module: module69, filename: 'phase_builder_controller.js'},{name: 'phase-change', module: module70, filename: 'phase_change_controller.js'},{name: 'phase-line', module: module71, filename: 'phase_line_controller.js'},{name: 'places-autocomplete', module: module72, filename: 'places_autocomplete_controller.js'},{name: 'popover', module: module73, filename: 'popover_controller.js'},{name: 'profile', module: module74, filename: 'profile_controller.js'},{name: 'props-filter', module: module75, filename: 'props_filter_controller.js'},{name: 'publish-hover', module: module76, filename: 'publish_hover_controller.js'},{name: 'rating', module: module77, filename: 'rating_controller.js'},{name: 'ratings', module: module78, filename: 'ratings_controller.js'},{name: 'rooms', module: module79, filename: 'rooms_controller.js'},{name: 'scroll--animation', module: module80, filename: 'scroll/animation_controller.js'},{name: 'select2', module: module81, filename: 'select2_controller.js'},{name: 'selection', module: module82, filename: 'selection_controller.js'},{name: 'selectpicker', module: module83, filename: 'selectpicker_controller.js'},{name: 'skills', module: module84, filename: 'skills_controller.js'},{name: 'slide-form', module: module85, filename: 'slide_form_controller.js'},{name: 'slide-page', module: module86, filename: 'slide_page_controller.js'},{name: 'supervising', module: module87, filename: 'supervising_controller.js'},{name: 'swagger', module: module88, filename: 'swagger_controller.js'},{name: 'switch', module: module89, filename: 'switch_controller.js'},{name: 'sync-form-fields', module: module90, filename: 'sync_form_fields_controller.js'},{name: 'tables--column-groups', module: module91, filename: 'tables/column_groups_controller.js'},{name: 'tables--index', module: module92, filename: 'tables/index_controller.js'},{name: 'tag', module: module93, filename: 'tag_controller.js'},{name: 'tag-input', module: module94, filename: 'tag_input_controller.js'},{name: 'tag-modal', module: module95, filename: 'tag_modal_controller.js'},{name: 'template-reset-form', module: module96, filename: 'template_reset_form_controller.js'},{name: 'translation--deepl', module: module97, filename: 'translation/deepl_controller.js'},{name: 'translation--translatables', module: module98, filename: 'translation/translatables_controller.js'},{name: 'trix-image-zoom', module: module99, filename: 'trix_image_zoom_controller.js'},{name: 'turbo-debugger', module: module100, filename: 'turbo_debugger_controller.js'},{name: 'user', module: module101, filename: 'user_controller.js'},{name: 'users-collapse', module: module102, filename: 'users_collapse_controller.js'},{name: 'users', module: module103, filename: 'users_controller.js'},{name: 'validations--boolean-validation', module: module104, filename: 'validations/boolean_validation_controller.js'},{name: 'validations--field-validation', module: module105, filename: 'validations/field_validation_controller.js'},{name: 'validations--file-validation', module: module106, filename: 'validations/file_validation_controller.js'},{name: 'validations--group-validation', module: module107, filename: 'validations/group_validation_controller.js'},{name: 'validations--journey-validation', module: module108, filename: 'validations/journey_validation_controller.js'},{name: 'video-audio-js', module: module109, filename: 'video_audio_js_controller.js'},{name: 'video-player', module: module110, filename: 'video_player_controller.js'},{name: 'view-switcher', module: module111, filename: 'view_switcher_controller.js'},{name: 'wizard--quiz', module: module112, filename: 'wizard/quiz_controller.js'},{name: 'workaround-fix', module: module113, filename: 'workaround_fix_controller.js'}]\n        export default modules;\n      ", "import { application } from \"./application.js\"\n\nimport controllers from \"./**/*_controller.js\"\n\ncontrollers.forEach((controller) => {\n  application.register(controller.name, controller.module.default)\n})", "$(function(){\n  $(\".share #share-button\").on(\"click\", function(event) {\n    //get variable for product id\n    let journey_id = $(this).data('journey'),\n    share_modal = $(\"#share\");\n    let shareForm = share_modal.find(\"#share-form\");\n    $(shareForm).attr(\"data-url\", $(this).data(\"url\"));\n    share_modal.find(\"#product-title\").html($(this).data('jtitle'));\n    share_modal.find(\"#shareaddress\").val('');\n    share_modal.find(\"#sharemail\").val('');\n    share_modal.find(\"#journey\").val(journey_id);\n    share_modal.modal('show');\n  });\n});", "import \"core-js/fn/array/find\"\nimport \"core-js/fn/array/find-index\"\nimport \"core-js/fn/array/from\"\nimport \"core-js/fn/map\"\nimport \"core-js/fn/object/assign\"\nimport \"core-js/fn/promise\"\nimport \"core-js/fn/set\"\nimport \"element-closest\"\nimport \"mutation-observer-inner-html-shim\"\n", "// element-closest | CC0-1.0 | github.com/jonathantneal/closest\n\n(function (ElementProto) {\n\tif (typeof ElementProto.matches !== 'function') {\n\t\tElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {\n\t\t\tvar element = this;\n\t\t\tvar elements = (element.document || element.ownerDocument).querySelectorAll(selector);\n\t\t\tvar index = 0;\n\n\t\t\twhile (elements[index] && elements[index] !== element) {\n\t\t\t\t++index;\n\t\t\t}\n\n\t\t\treturn Boolean(elements[index]);\n\t\t};\n\t}\n\n\tif (typeof ElementProto.closest !== 'function') {\n\t\tElementProto.closest = function closest(selector) {\n\t\t\tvar element = this;\n\n\t\t\twhile (element && element.nodeType === 1) {\n\t\t\t\tif (element.matches(selector)) {\n\t\t\t\t\treturn element;\n\t\t\t\t}\n\n\t\t\t\telement = element.parentNode;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\t}\n})(window.Element.prototype);\n", "if (window.MutationObserver) {\n  var element = document.createElement(\"div\")\n  element.innerHTML = \"<div><div></div></div>\"\n\n  new MutationObserver(function(mutations, observer) {\n    observer.disconnect()\n    if (\n      mutations[0] &&\n      mutations[0].type == \"childList\" &&\n      mutations[0].removedNodes[0].childNodes.length == 0\n    ) {\n      var prototype = HTMLElement.prototype\n      var descriptor = Object.getOwnPropertyDescriptor(prototype, \"innerHTML\")\n      if (descriptor && descriptor.set) {\n        Object.defineProperty(prototype, \"innerHTML\", {\n          set: function(value) {\n            while (this.lastChild) this.removeChild(this.lastChild)\n            descriptor.set.call(this, value)\n          }\n        })\n      }\n    }\n  }).observe(element, { childList: true, subtree: true })\n\n  element.innerHTML = \"\"\n}\n", "export { application }\n\nimport \"@stimulus/polyfills\";\nimport { Application } from \"@hotwired/stimulus\";\nimport StimulusReflex from \"stimulus_reflex\";\nimport consumer from \"../channels/consumer\";\nimport \"./share.js\";\nimport \"./global_functions\";\nimport VideoPlayer from './video_player.js';\nimport \"chartkick/chart.js\";\n\nimport './jquery-ui.min.js';\nimport './jquery-tooltipster';\nimport './nested_sortable.js'\n\nconst application = Application.start()\napplication.debug = true\nwindow.Stimulus   = application\n\nStimulusReflex.initialize(application, { debug: true });\nwindow.VideoPlayer = VideoPlayer;\nVideoPlayer.init();\n\n// Rails.start();\n\n$(function () {\n  $('.alert-close').on('click', function(e) {\n    e.stopPropagation();\n    let parent = $(this).parent('.alert');\n    parent.hide();\n  });\n});\n\n//// Setup Chartkick \nrequire(\"chartkick\")\n// require(\"chart.js\")\nimport Chartkick from 'chartkick'\n// Chartkick.options = {\n//   colors: ['#0074d9', '#7fdbff', '#39cccc', '#3d9970', '#01ff70', '#85144b', '#f012be', '#b10dc9']\n// }\nwindow.Chartkick = Chartkick\n\n////\n// I18N\n////\nimport { I18n } from \"i18n-js\";\n\nimport de from \"../js_locales/de.json\"\nimport en from \"../js_locales/en.json\"\nimport hu from \"../js_locales/hu.json\"\n\nconst i18n = new I18n();\nwindow.I18n = i18n;\nwindow.I18nLocales = {\n  de: de,\n  en: en,\n  hu: hu\n}\n", "{\n  \"hu\": {\n    \"date\": {\n      \"abbr_day_names\": [\n        \"Va\",\n        \"H\u00E9\",\n        \"Ke\",\n        \"Sze\",\n        \"Cs\",\n        \"P\u00E9\",\n        \"Szo\"\n      ],\n      \"abbr_month_names\": [\n        null,\n        \"Jan\",\n        \"Feb\",\n        \"M\u00E1r\",\n        \"\u00C1pr\",\n        \"M\u00E1j\",\n        \"J\u00FAn\",\n        \"J\u00FAl\",\n        \"Aug\",\n        \"Sze\",\n        \"Okt\",\n        \"Nov\",\n        \"Dec\"\n      ],\n      \"day_names\": [\n        \"Vas\u00E1rnap\",\n        \"H\u00E9tf\u0151\",\n        \"Kedd\",\n        \"Szerda\",\n        \"Cs\u00FCt\u00F6rt\u00F6k\",\n        \"P\u00E9ntek\",\n        \"Szombat\"\n      ],\n      \"formats\": {\n        \"default\": \"%Y.%m.%d\",\n        \"long\": \"%Y %B %e.\",\n        \"short\": \"%b. %e.\"\n      },\n      \"month_names\": [\n        null,\n        \"Janu\u00E1r\",\n        \"Febru\u00E1r\",\n        \"M\u00E1rcius\",\n        \"\u00C1prilis\",\n        \"M\u00E1jus\",\n        \"J\u00FAnius\",\n        \"J\u00FAlius\",\n        \"Augusztus\",\n        \"Szeptember\",\n        \"Okt\u00F3ber\",\n        \"November\",\n        \"December\"\n      ],\n      \"order\": [\n        \"day\",\n        \"month\",\n        \"year\"\n      ]\n    },\n    \"dict\": {\n      \"active\": \"akt\u00EDv\",\n      \"adapt\": \"alkalmaz\",\n      \"address\": \"c\u00EDm\",\n      \"agreements\": \"Meg\u00E1llapod\u00E1sok\",\n      \"all\": \"\u00F6sszes\",\n      \"answer\": {\n        \"one\": \"v\u00E1lasz\",\n        \"other\": \"v\u00E1laszok\"\n      },\n      \"appointment\": {\n        \"one\": \"tal\u00E1lkoz\u00F3\",\n        \"other\": \"tal\u00E1lkoz\u00F3k\"\n      },\n      \"back\": \"vissza\",\n      \"blog_entries\": \"tanulm\u00E1nyok\",\n      \"cancel\": \"M\u00E9gse\",\n      \"certificate\": {\n        \"one\": \"bizony\u00EDtv\u00E1ny\",\n        \"other\": \"bizony\u00EDtv\u00E1nyok\"\n      },\n      \"change\": \"M\u00F3dos\u00EDt\u00E1s\",\n      \"clone\": \"Kl\u00F3noz\u00E1s\",\n      \"close\": \"Bez\u00E1r\u00E1s\",\n      \"confirm\": \"meger\u0151s\u00EDt\u00E9s\",\n      \"contact_people\": \"kapcsolattart\u00F3k\",\n      \"continue\": \"folytat\u00E1s\",\n      \"correct\": \"helyes\",\n      \"create\": \"L\u00E9trehoz\u00E1s\",\n      \"current\": \"jelenlegi\",\n      \"day\": \"nap\",\n      \"de\": \"N\u00E9met\",\n      \"delete\": \"T\u00F6rl\u00E9s\",\n      \"description\": \"Le\u00EDr\u00E1s\",\n      \"development_path\": \"Fejleszt\u00E9si \u00FAtvonal\",\n      \"edit\": \"Szerkeszt\u00E9s\",\n      \"email\": \"e-mail\",\n      \"empty\": \"Nincs bejegyz\u00E9s jelen\",\n      \"en\": \"Angol\",\n      \"es\": \"Spanyol\",\n      \"event\": {\n        \"one\": \"esem\u00E9ny\",\n        \"other\": \"esem\u00E9nyek\"\n      },\n      \"folder\": {\n        \"one\": \"Mappa\",\n        \"other\": \"Mapp\u00E1k\"\n      },\n      \"fr\": \"Francia\",\n      \"full_name\": \"n\u00E9v\",\n      \"gtc\": \"\u00C1ltal\u00E1nos szerz\u0151d\u00E9si felt\u00E9telek\",\n      \"hero_slider_elements\": \"banner\",\n      \"hide\": \"Elrejt\u00E9s\",\n      \"hour\": \"\u00F3ra\",\n      \"hu\": \"Magyar\",\n      \"in_timezone\": \"Id\u0151z\u00F3na %{timezone}\",\n      \"in_use\": \"haszn\u00E1latban\",\n      \"inactive\": \"inakt\u00EDv\",\n      \"index\": \"index\",\n      \"interaction_needed\": \"teend\u0151\",\n      \"invoice\": \"sz\u00E1mla\",\n      \"issued_on\": \"ki\u00E1ll\u00EDtva\",\n      \"issuer\": \"Ki\u00E1ll\u00EDt\u00F3\",\n      \"ja\": \"Jap\u00E1n\",\n      \"journey\": {\n        \"one\": \"\u00DAt\",\n        \"other\": \"Utak\"\n      },\n      \"landscape_image\": \"Fekv\u0151 k\u00E9p\",\n      \"language\": {\n        \"one\": \"Nyelv\",\n        \"other\": \"Nyelvek\"\n      },\n      \"learn_card\": {\n        \"index\": \"Tanul\u00F3k\u00E1rtya sz. %{index}\"\n      },\n      \"learn_path\": \"tanul\u00E1si \u00FAtvonal\",\n      \"learn_paths\": \"tanul\u00E1si \u00FAtvonalak\",\n      \"learn_unit\": {\n        \"one\": \"Tanul\u00E1si egys\u00E9g\",\n        \"other\": \"Tanul\u00E1si egys\u00E9gek\"\n      },\n      \"locations\": \"helysz\u00EDnek\",\n      \"mandatory_field\": \"K\u00F6telez\u0151 mez\u0151\",\n      \"messages\": {\n        \"read\": \"olvasott\",\n        \"unread\": \"olvasatlan\"\n      },\n      \"minute\": \"perc\",\n      \"module\": {\n        \"one\": \"Modul\",\n        \"other\": \"Modulok\"\n      },\n      \"month\": \"h\u00F3nap\",\n      \"name\": {\n        \"one\": \"n\u00E9v\",\n        \"other\": \"nevek\"\n      },\n      \"nano_certificate\": \"nano tan\u00FAs\u00EDtv\u00E1ny\",\n      \"nano_certificates\": \"nano tan\u00FAs\u00EDtv\u00E1nyok\",\n      \"no_data\": \"nincs el\u00E9rhet\u0151 adat\",\n      \"open\": \"Nyitva\",\n      \"order\": \"rend\",\n      \"orientation\": {\n        \"one\": \"T\u00E1jol\u00E1s\",\n        \"other\": \"T\u00E1jol\u00E1sok\"\n      },\n      \"parent\": \"sz\u00FCl\u0151\",\n      \"participants\": \"r\u00E9sztvev\u0151k\",\n      \"permission\": {\n        \"one\": \"jogosults\u00E1g\",\n        \"other\": \"jogosults\u00E1gok\"\n      },\n      \"phase\": {\n        \"one\": \"Tanul\u00E1si f\u00E1zis\",\n        \"other\": \"Tanul\u00E1si f\u00E1zisok\"\n      },\n      \"phone_number\": \"telefonsz\u00E1m\",\n      \"point\": {\n        \"one\": \"pont\",\n        \"other\": \"pontok\"\n      },\n      \"portrait_image\": \"\u00C1ll\u00F3 k\u00E9p\",\n      \"primary\": \"Els\u0151dleges\",\n      \"private\": \"Mag\u00E1n\",\n      \"product\": \"term\u00E9k\",\n      \"products\": \"term\u00E9kek\",\n      \"profile\": {\n        \"one\": \"profil\",\n        \"other\": \"profillal\"\n      },\n      \"project_experience\": \"Projekt tapasztalat\",\n      \"question\": {\n        \"one\": \"k\u00E9rd\u00E9s\",\n        \"other\": \"k\u00E9rd\u00E9sek\"\n      },\n      \"reset\": \"vissza\u00E1ll\u00EDt\u00E1s\",\n      \"restart\": \"\u00FAjraind\u00EDt\u00E1s\",\n      \"result\": {\n        \"one\": \"eredm\u00E9ny\",\n        \"other\": \"eredm\u00E9nyek\"\n      },\n      \"salutations\": {\n        \"company\": \"C\u00E9g\",\n        \"madame\": \"H\u00F6lgy\",\n        \"sir\": \"\u00DAr\"\n      },\n      \"save\": \"Ment\u00E9s\",\n      \"scope_tag\": {\n        \"one\": \"hat\u00E1sk\u00F6r c\u00EDmke\",\n        \"other\": \"hat\u00E1sk\u00F6r c\u00EDmk\u00E9k\"\n      },\n      \"search_profile\": \"keres\u00E9si profil\",\n      \"second\": \"m\u00E1sodperc\",\n      \"secondary\": \"M\u00E1sodlagos\",\n      \"send\": \"k\u00FCld\u00E9s\",\n      \"settings\": \"Be\u00E1ll\u00EDt\u00E1sok\",\n      \"show\": \"Megjelen\u00EDt\u00E9s\",\n      \"shown_from_short\": \"-t\u00F3l\",\n      \"shown_until_short\": \"-ig\",\n      \"silent\": \"deaktiv\u00E1lt\",\n      \"skill\": {\n        \"one\": \"k\u00E9pess\u00E9g\",\n        \"other\": \"k\u00E9pess\u00E9gek\"\n      },\n      \"skill_category\": {\n        \"one\": \"k\u00E9pess\u00E9g kateg\u00F3ria\",\n        \"other\": \"k\u00E9pess\u00E9g kateg\u00F3ri\u00E1k\"\n      },\n      \"skill_rating\": {\n        \"one\": \"k\u00E9pess\u00E9g \u00E9rt\u00E9kel\u00E9s\",\n        \"other\": \"k\u00E9pess\u00E9g \u00E9rt\u00E9kel\u00E9sek\"\n      },\n      \"slide\": {\n        \"index\": \"Diavet\u00EDt\u00E9s sz. %{index}\"\n      },\n      \"statistics\": \"statisztika\",\n      \"stop\": \"Meg\u00E1ll\u00EDt\u00E1s\",\n      \"supervised_people\": \"fel\u00FCgyelt szem\u00E9lyek\",\n      \"supervised_person\": \"fel\u00FCgyelt szem\u00E9ly\",\n      \"take\": \"fog\",\n      \"template_new\": \"Sablon l\u00E9trehoz\u00E1sa\",\n      \"tenant\": {\n        \"one\": \"b\u00E9rl\u0151\",\n        \"other\": \"b\u00E9rl\u0151k\"\n      },\n      \"tenant_scope\": {\n        \"one\": \"b\u00E9rl\u0151 hat\u00E1sk\u00F6r\",\n        \"other\": \"b\u00E9rl\u0151 hat\u00E1sk\u00F6r\u00F6k\"\n      },\n      \"themes\": \"tanul\u00E1si utak\",\n      \"translations\": \"ford\u00EDt\u00E1sok\",\n      \"users\": \"felhaszn\u00E1l\u00F3k\",\n      \"valid_until\": \"\u00E9rv\u00E9nyes eddig\",\n      \"vat\": \"\u00C1FA\",\n      \"view_all\": \"\u00F6sszes megjelen\u00EDt\u00E9se\",\n      \"week\": \"h\u00E9t\",\n      \"withdrawal\": \"Visszavon\u00E1s\",\n      \"year\": \"\u00E9v\"\n    },\n    \"javascript\": {\n      \"format\": {\n        \"both\": \"YYYY.MM.DD HH:mm\",\n        \"date\": \"YYYY.MM.DD\",\n        \"time\": \"HH:mm\"\n      }\n    },\n    \"shared\": {\n      \"choose_category\": \"v\u00E1lassz kateg\u00F3ri\u00E1t...\",\n      \"choose_subcategory\": \"v\u00E1lassz alkateg\u00F3ri\u00E1t...\",\n      \"delete_group_definitions_confirm\": \"Biztosan t\u00F6r\u00F6lni szeretn\u00E9d a csoport defin\u00EDci\u00F3t?\",\n      \"done\": \"k\u00E9sz\",\n      \"email\": \"e-mail\",\n      \"media_library_modal\": {\n        \"delete_all_description\": \"Az \u00F6sszes olyan f\u00E1jlt t\u00F6r\u00F6lni fogja, amely jelenleg nincs sehol sem hozz\u00E1rendelve. Biztos, hogy ezt akarja tenni?\",\n        \"delete_description\": \"A m\u00E9diaf\u00E1jl t\u00F6rl\u00E9s\u00E9re k\u00E9sz\u00FCl. Biztos, hogy ezt szeretn\u00E9 megtenni?\"\n      },\n      \"pdf_certificate_elements\": {\n        \"certificate_text\": \"Bizony\u00EDtv\u00E1ny sz\u00F6vege\",\n        \"certificate_title\": \"Bizony\u00EDtv\u00E1ny c\u00EDme\",\n        \"creation_date\": \"L\u00E9trehoz\u00E1s d\u00E1tuma\",\n        \"creation_date_text\": \"L\u00E9trehoz\u00E1s d\u00E1tuma sz\u00F6veg\",\n        \"issuer_name\": \"Ki\u00E1ll\u00EDt\u00F3\",\n        \"issuer_text\": \"Ki\u00E1ll\u00EDt\u00F3 sz\u00F6veg\",\n        \"recipient_name\": \"C\u00EDmzett neve\",\n        \"tenant_logo\": \"Log\u00F3\",\n        \"valid_until\": \"\u00C9rv\u00E9nyes eddig\",\n        \"valid_until_text\": \"\u00C9rv\u00E9nyes eddig sz\u00F6veg\"\n      },\n      \"version_correction\": {\n        \"confirm_button\": \"A megl\u00E9v\u0151 verzi\u00F3 a korrekci\u00F3 el\u0151tt k\u00FCl\u00F6n tanul\u00E1si \u00FAtvonalk\u00E9nt (a n\u00E9v ut\u00F3tagja \u201ERecreated\u201D) ker\u00FCl elment\u00E9sre. A jav\u00EDt\u00E1s ut\u00E1n egy \u00FAj verzi\u00F3t kell k\u00F6zz\u00E9tenni.\",\n        \"title\": \"a verzi\u00F3szerkezet korrekci\u00F3ja\"\n      },\n      \"week\": \"H\u00E9t\"\n    }\n  }\n}", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\nexport default class extends ApplicationController {\n\n  confirmUsageOfProposal(event) {\n    // const $target = $(event.currentTarget)\n    event.preventDefault()\n    const $modal = $(\"#journey_structure_modal\")\n    $modal.modal('hide')\n    this.stimulate('Journeys#confirm_usage_of_proposal', event.currentTarget).then((event) => {\n      // $(\"#journey_structure_modal .modal-footer\").text(`Wir suchen nach '${$input.val()}'`)\n    });\n\n  }\n\n  adaptProposal(event) {\n    // const $target = $(event.currentTarget)\n    event.preventDefault()\n    let $modal = $(\"#journey_structure_modal\")\n    $modal.modal('hide')\n    this.stimulate('Journeys#show_structure_modal', event.currentTarget).then((event) => {\n      $modal = $(\"#journey_structure_modal\")\n      $modal.modal('show')  \n    });\n\n  }\n\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n    $(this.element).modal('show')\n  }\n}", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n    $(this.element).modal('show')\n    $(this.element).find('.selectpicker').selectpicker();\n  }\n}", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n    $(this.element).modal('show')\n    $(this.element).find('.selectpicker').selectpicker();\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\nimport { Popover } from \"bootstrap\"\n\n// Connects to data-controller=\"button--multi-state\"\nexport default class extends Controller {\n  static targets = [\"popover\"]\n\n  connect() {\n    // Initialize Bootstrap popovers for all popover targets\n    this.popoverTargets.forEach((element) => {\n      new Popover(element, {\n        trigger: 'click',\n        placement: 'top',\n        container: this.element\n      })\n    })\n  }\n\n  disconnect() {\n    // Clean up popovers when component is removed\n    this.popoverTargets.forEach((element) => {\n      const popover = Popover.getInstance(element)\n      if (popover) {\n        popover.dispose()\n      }\n    })\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\n/**\n * Certificate verification page interactions.\n */\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n  }\n\n  /**\n   * Copies a verification ID from the triggering button to the clipboard.\n   *\n   * @param {Event} event\n   */\n  copyPublicId(event) {\n    event.preventDefault()\n\n    const button = event.currentTarget\n    const text = button.dataset.publicId\n    if (!text) {\n      return\n    }\n\n    this.copyText(text, button)\n  }\n\n  /**\n   * @param {string} text\n   * @param {HTMLElement} button\n   */\n  async copyText(text, button) {\n    try {\n      await navigator.clipboard.writeText(text)\n      this.showCopyFeedback(button)\n    } catch (_error) {\n      this.fallbackCopy(text, button)\n    }\n  }\n\n  /**\n   * @param {string} text\n   * @param {HTMLElement} button\n   */\n  fallbackCopy(text, button) {\n    const textarea = document.createElement('textarea')\n    textarea.value = text\n    textarea.setAttribute('readonly', '')\n    textarea.style.position = 'absolute'\n    textarea.style.left = '-9999px'\n    document.body.appendChild(textarea)\n    textarea.select()\n    document.execCommand('copy')\n    textarea.remove()\n    this.showCopyFeedback(button)\n  }\n\n  /**\n   * @param {HTMLElement} button\n   */\n  showCopyFeedback(button) {\n    if (button.classList.contains('certificate-verification__copy-btn--copied')) {\n      return\n    }\n\n    const icon = button.querySelector('.certificate-verification__copy-icon')\n    const originalIcon = icon?.textContent?.trim() || 'content_copy'\n\n    button.classList.add('certificate-verification__copy-btn--copied')\n    if (icon) {\n      icon.textContent = 'check'\n    }\n\n    window.setTimeout(() => {\n      button.classList.remove('certificate-verification__copy-btn--copied')\n      if (icon) {\n        icon.textContent = originalIcon\n      }\n    }, 2000)\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  connect() {\n    super.connect()\n    this.initActionTooltips()\n    this.showExpiryPopups()\n    this.modalHiddenHandler = this.handleModalHidden.bind(this)\n    document.addEventListener('hidden.bs.modal', this.modalHiddenHandler)\n  }\n\n  disconnect() {\n    document.removeEventListener('hidden.bs.modal', this.modalHiddenHandler)\n    this.disposeActionTooltips()\n    this.disposeExpiryPopups()\n    super.disconnect()\n  }\n\n  /**\n   * Re-shows expiry tooltips after the certificates overlay closes.\n   */\n  handleModalHidden(event) {\n    if (event.target?.id !== 'received_certificates_modal') {\n      return\n    }\n\n    this.showExpiryPopups()\n  }\n\n  /**\n   * Opens the certificates overlay unless it is already visible.\n   *\n   * @param {Event} event\n   */\n  openCertificatesModal(event) {\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (document.getElementById('received_certificates_modal')) {\n      return\n    }\n\n    this.startLoading()\n    this.stimulate('ProfileReflex#open_certificates_modal', event.currentTarget).catch(() => {\n      this.stopLoading()\n    })\n  }\n\n  initActionTooltips() {\n    this.actionTooltips = []\n    const triggers = this.element.querySelectorAll('.received-certificate-card__action-btn[data-bs-toggle=\"tooltip\"]')\n    triggers.forEach((el) => {\n      this.actionTooltips.push(new bootstrap.Tooltip(el, { boundary: 'window', placement: 'top' }))\n    })\n  }\n\n  disposeActionTooltips() {\n    this.actionTooltips?.forEach((tooltip) => tooltip.dispose())\n    this.actionTooltips = []\n  }\n\n  showExpiryPopups() {\n    this.expiryTooltips = []\n    const triggers = this.element.querySelectorAll('.cert.remind')\n    triggers.forEach((el) => {\n      const tooltip = new bootstrap.Tooltip(el, { customClass: 'warning', placement: 'bottom', trigger: 'manual' })\n      tooltip.show()\n      this.expiryTooltips.push(tooltip)\n    })\n  }\n\n  disposeExpiryPopups() {\n    this.expiryTooltips?.forEach((tooltip) => tooltip.dispose())\n    this.expiryTooltips = []\n  }\n}\n", "import flatpickr from 'flatpickr'\nimport { english } from 'flatpickr/dist/l10n/default.js'\nimport { German } from 'flatpickr/dist/l10n/de.js'\nimport ApplicationController from '../../../../javascript/controllers/application_controller'\n\nconst FLATPICKR_LOCALES = { en: english, de: German }\n\n/**\n * Opens and filters the received certificates modal overlay.\n */\nexport default class extends ApplicationController {\n  static targets = ['search', 'dateRange', 'grid', 'empty']\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n    this.handleBackdropClick = this.onBackdropClick.bind(this)\n    this.handleModalHidden = this.onModalHidden.bind(this)\n  }\n\n  connect() {\n    super.connect()\n    this.actionTooltips = []\n    requestAnimationFrame(() => {\n      this.showModal()\n      requestAnimationFrame(() => {\n        this.initDateRangePicker()\n        this.filter()\n      })\n    })\n  }\n\n  disconnect() {\n    this.disposeActionTooltips()\n    this.disposeDateRangePicker()\n    this.modalInstance?.dispose()\n    super.disconnect()\n  }\n\n  /**\n   * Opens the Bootstrap modal after morph render.\n   */\n  showModal() {\n    if (typeof bootstrap === 'undefined' || !bootstrap.Modal) {\n      this.stopLoading()\n      return\n    }\n\n    this.removeDuplicateModals()\n    this.hideBlockingTooltips()\n    this.moveModalToBody()\n\n    this.modalInstance = bootstrap.Modal.getOrCreateInstance(this.element, {\n      backdrop: true,\n      keyboard: true,\n      focus: true\n    })\n    this.modalInstance.show()\n    document.body.classList.add('certificates-modal-open')\n    this.stopLoading()\n    this.element.addEventListener('click', this.handleBackdropClick)\n    this.element.addEventListener('hidden.bs.modal', this.handleModalHidden, { once: true })\n  }\n\n  /**\n   * Closes the modal when clicking the dimmed overlay outside the dialog.\n   *\n   * @param {MouseEvent} event\n   */\n  onBackdropClick(event) {\n    if (event.target === this.element) {\n      this.modalInstance?.hide()\n    }\n  }\n\n  /**\n   * Cleans up modal DOM and state after close animation.\n   */\n  onModalHidden() {\n    document.body.classList.remove('certificates-modal-open')\n    this.element.removeEventListener('click', this.handleBackdropClick)\n    this.cleanupModalTarget()\n  }\n\n  /**\n   * Removes stale certificate modals left on body from prior opens.\n   */\n  removeDuplicateModals() {\n    document.querySelectorAll('#received_certificates_modal').forEach((modalEl) => {\n      if (modalEl === this.element) {\n        return\n      }\n\n      const instance = bootstrap.Modal.getInstance(modalEl)\n      instance?.dispose()\n      modalEl.remove()\n    })\n  }\n\n  /**\n   * Initializes flatpickr range picker with calendar above modal layer.\n   */\n  initDateRangePicker() {\n    if (!this.hasDateRangeTarget || this.dateRangePicker) {\n      return\n    }\n\n    this.dateRangePicker = flatpickr(this.dateRangeTarget, {\n      locale: FLATPICKR_LOCALES[I18n.locale] || english,\n      mode: 'range',\n      enableTime: false,\n      altInput: false,\n      dateFormat: 'd.m.Y',\n      allowInput: false,\n      clickOpens: true,\n      appendTo: document.body,\n      onChange: () => this.filter(),\n      onOpen: (_selectedDates, _dateStr, instance) => {\n        instance.calendarContainer.style.zIndex = '1060'\n      }\n    })\n  }\n\n  /**\n   * Opens the date range calendar widget.\n   */\n  openDateRangePicker(event) {\n    event?.preventDefault()\n    this.dateRangePicker?.open()\n  }\n\n  /**\n   * Ensures the modal is a direct child of body for correct stacking and input focus.\n   */\n  moveModalToBody() {\n    if (this.element.parentElement !== document.body) {\n      document.body.appendChild(this.element)\n    }\n  }\n\n  /**\n   * Hides manual expiry tooltips from the profile certificate list that sit above modals.\n   */\n  hideBlockingTooltips() {\n    document.querySelectorAll('.received-certificates .cert.remind').forEach((element) => {\n      const tooltip = bootstrap.Tooltip.getInstance(element)\n      tooltip?.hide()\n      tooltip?.dispose()\n    })\n  }\n\n  /**\n   * Clears modal markup from the shared modal target container.\n   */\n  cleanupModalTarget() {\n    const modal = document.getElementById('received_certificates_modal')\n    if (modal) {\n      bootstrap.Modal.getInstance(modal)?.dispose()\n      modal.remove()\n    }\n\n    const extraModal = document.getElementById('extra_modal')\n    if (extraModal) {\n      extraModal.innerHTML = ''\n    }\n  }\n\n  /**\n   * Filters certificate cards by search query and optional issue date range.\n   */\n  filter() {\n    const query = this.hasSearchTarget ? this.searchTarget.value.trim().toLowerCase() : ''\n    const [startDate, endDate] = this.selectedDateRange()\n    const items = this.gridTarget.querySelectorAll('[data-certificate-item]')\n    let visibleCount = 0\n\n    items.forEach((item) => {\n      const matchesQuery = this.matchesQuery(item, query)\n      const matchesDate = this.matchesDateRange(item, startDate, endDate)\n      const visible = matchesQuery && matchesDate\n\n      item.classList.toggle('d-none', !visible)\n      if (visible) {\n        visibleCount += 1\n      }\n    })\n\n    if (this.hasEmptyTarget) {\n      this.emptyTarget.classList.toggle('d-none', visibleCount > 0)\n    }\n\n    this.refreshActionTooltips()\n  }\n\n  /**\n   * @return {[Date|null, Date|null]} selected flatpickr range boundaries\n   */\n  selectedDateRange() {\n    if (!this.dateRangePicker || this.dateRangePicker.selectedDates.length === 0) {\n      return [null, null]\n    }\n\n    const [startDate, endDate] = this.dateRangePicker.selectedDates\n    return [startDate, endDate || startDate]\n  }\n\n  /**\n   * @param {HTMLElement} item\n   * @param {string} query\n   * @return {boolean}\n   */\n  matchesQuery(item, query) {\n    if (!query) {\n      return true\n    }\n\n    const searchText = item.dataset.certificateSearch || ''\n    return searchText.includes(query)\n  }\n\n  /**\n   * @param {HTMLElement} item\n   * @param {Date|null} startDate\n   * @param {Date|null} endDate\n   * @return {boolean}\n   */\n  matchesDateRange(item, startDate, endDate) {\n    if (!startDate || !endDate) {\n      return true\n    }\n\n    const issuedAt = item.dataset.certificateIssuedAt\n    if (!issuedAt) {\n      return false\n    }\n\n    const issuedDate = this.parseIsoDate(issuedAt)\n    const rangeStart = this.startOfDay(startDate)\n    const rangeEnd = this.endOfDay(endDate)\n\n    return issuedDate >= rangeStart && issuedDate <= rangeEnd\n  }\n\n  /**\n   * @param {string} isoDate\n   * @return {Date}\n   */\n  parseIsoDate(isoDate) {\n    const [year, month, day] = isoDate.split('-').map(Number)\n    return new Date(year, month - 1, day)\n  }\n\n  /**\n   * @param {Date} date\n   * @return {Date}\n   */\n  startOfDay(date) {\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n  }\n\n  /**\n   * @param {Date} date\n   * @return {Date}\n   */\n  endOfDay(date) {\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999)\n  }\n\n  /**\n   * Re-initializes tooltips for visible action buttons after filtering.\n   */\n  refreshActionTooltips() {\n    this.disposeActionTooltips()\n\n    this.gridTarget.querySelectorAll('.received-certificate-card__action-btn[data-bs-toggle=\"tooltip\"]').forEach((element) => {\n      if (element.closest('.d-none')) {\n        return\n      }\n\n      this.actionTooltips.push(new bootstrap.Tooltip(element, { boundary: 'window', placement: 'top' }))\n    })\n  }\n\n  /**\n   * Disposes Bootstrap tooltip instances created for action buttons.\n   */\n  disposeActionTooltips() {\n    this.actionTooltips?.forEach((tooltip) => tooltip.dispose())\n    this.actionTooltips = []\n  }\n\n  /**\n   * Destroys the flatpickr instance.\n   */\n  disposeDateRangePicker() {\n    this.dateRangePicker?.destroy()\n    this.dateRangePicker = null\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\nimport Chart from 'chart.js/auto';\n\nexport default class extends ApplicationController {\n\n  static values = {\n    colorTheme: String,\n    circular: Boolean,\n    showLegend: Boolean\n  }\n\n  connect() {\n    super.connect();\n    this.setupChart();\n  }\n\n  setupChart() {\n\n    let colorGrid = \"#00003C1A\";\n    let colorLabel = \"#00003C\";\n\n    console.log(\"color theme: \", this.colorThemeValue)\n\n    if (this.colorThemeValue === \"dark\") {\n      colorGrid = \"#FFFFFF66\";\n      colorLabel = \"#FFFFFF\";\n    }\n\n    const chartId = $(this.element).data('chart-id')\n    const data = {\n      labels: $(this.element).data('labels'),\n      datasets: $(this.element).data('datasets')\n    }\n    // console.log(\"data: \", data);\n    const config = {\n      type: 'radar',\n      data: data,\n      options: {\n        plugins: {\n          legend: {\n            display: this.showLegendValue,\n            labels: {\n              color: colorLabel\n            }\n          },\n        },\n        elements: {\n          line: {\n            borderWidth: 3\n          },\n        },\n        scales: {\n          r: {\n            suggestedMin: -1,\n            suggestedMax: 4,\n            pointLabels: {\n              color: colorLabel\n            },\n            ticks: {\n              display: false,\n              stepSize: 1.0\n            },\n            angleLines: {\n              color: colorGrid,\n            },\n            grid: {\n              circular: this.circularValue,\n              color: colorGrid,\n            }\n          }\n        }\n      },\n    };\n\n    const myChart = new Chart(\n      document.getElementById(chartId),\n      config\n    );\n  }\n\n  // check(event) {\n  //   event.preventDefault();\n\n  //   const $target = $(event.currentTarget);\n  //   const $input = $target.find(\"input\")\n  //   console.log(`check `, $input.attr(\"id\"));\n  // }\n\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n    $(this.element).modal('show')\n  }\n\n  ///\n  // disables the submit button after the message is sent\n  ///\n  message_sent(event) {\n    // console.log('Message sent')\n\n     event.currentTarget.disabled = true\n  }\n}", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = ['input']\n\n  connect() {\n    super.connect();\n  }\n\n  ///\n  // toggles the input value as well as the 'hidden' class for both states of the checkbox\n  ///\n  toggle(event) {\n    event.preventDefault();    \n    const $target = $(event.currentTarget);\n    const $input = $(this.inputTarget)\n    const input_val = $input.val()\n    if (input_val == 'true') {\n      $input.val('false')\n\n    } else {\n      $input.val('true')\n    }\n    $target.parent().find(\".on-state, .off-state\").toggleClass('hidden')\n  }\n\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\nimport croppie from 'croppie';\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect();\n    this.$cropper = $(this.element)\n    // console.log(\"element: \", this.$cropper)\n    // this.cropButton = this.$cropper.find('.transform-button')\n    this.usageButtons = this.$cropper.find('.use-cropping-buttons')\n    this.modal = this.$cropper.closest('.modal')\n    this.dropZone = this.$cropper.parent()\n    this.previewContainer = this.dropZone.find('.upload-preview')\n    this.imageSize = this.$cropper.data(\"image-size\")\n    // console.log(\"image size: \", this.imageSize)\n    this.cropFormat = this.$cropper.data(\"crop-format\")\n    // console.log(\"crop_format: \", this.cropFormat)\n    // set event listener for previewLoaded\n    this.$cropper.on('previewRendered', this.initCropping.bind(this))\n  }\n\n\n  ///\n  // makes the cropping button visible\n  ///\n  showCropper(event) {\n    $(event.currentTarget).removeClass('hidden')\n  }\n\n  cancelCropping(event) {\n    this.toggleCropButtons()\n    this.cropped.croppie('destroy')\n  }\n\n  ///\n  // toggles between transform and crop buttons\n  ///\n  toggleCropButtons() {\n    const chooseButton = this.modal.find('.modal-footer .btn-primary')\n    // console.log(\"chooseButton: \", chooseButton)\n    if(this.$cropper.hasClass('hidden')) {\n      this.$cropper.removeClass('hidden')\n      this.previewContainer.removeClass('mh-100')\n      chooseButton.addClass('disabled')\n    } else {\n      this.$cropper.addClass('hidden')\n      this.previewContainer.addClass('mh-100')\n      chooseButton.removeClass('disabled')\n    }\n  } \n\n  initCropping(event) {\n    // console.log(\"init the cropping\")\n    this.toggleCropButtons()\n    // const image = $(this.imageTarget)\n    // console.log(\"cropper\", this.$cropper)\n\n\n    const image = this.dropZone.find('.upload-preview img')\n    const realBoundary = [this.dropZone.width(), this.dropZone.height()]\n    const viewPortBoundary = this.computeSize(this.imageSize, realBoundary)\n    // console.log(\"viewPortBoundary: \", viewPortBoundary)\n    const boundaryBoundary = this.computeSize(this.imageSize.map(value => value * 2), realBoundary, false)\n    // console.log(\"boundaryBoundary: \", boundaryBoundary)\n    const cropOpts = {\n      viewport: { width: viewPortBoundary[0], height: viewPortBoundary[1], type: this.cropFormat },\n      boundary: { width: boundaryBoundary[0], height: boundaryBoundary[1], type: this.cropFormat },\n      showZoomer: false,\n      enableOrientation: true,\n      enableResize: false\n    }\n    this.cropped = image.croppie(cropOpts);\n    this.modal.modal('handleUpdate')\n  }\n\n  useCropped(event) {\n    const self = this\n    this.cropped.croppie('result', {\n      type: 'base64',\n      size: {width: this.imageSize[0], height: this.imageSize[1]}\n    }).then(function (resp) {\n      const imageSource = $(self.dropZone.find('.upload-preview img'))\n      imageSource.attr('src', resp)\n      self.dropZone.attr('data-base64', 'true')\n      self.cropped.croppie('destroy')\n      self.$cropper.addClass('hidden')\n    })\n    this.toggleCropButtons()\n  }\n\n  ///\n  // Function to compute a new size that does not exceed maximum width and height\n  ///\n  computeSize(size, maxSize, respectAspectRatio = true) {\n    let width = size[0],\n    height = size[1],\n    maxWidth = maxSize[0],\n    maxHeight = maxSize[1]\n\n    // Compute aspect ratio if respectAspectRatio is enabled\n    const aspectRatio = respectAspectRatio ? width / height : 1;\n\n    // Check if width exceeds maxWidth\n    if (width > maxWidth) {\n      width = maxWidth;\n      height = respectAspectRatio ? Math.round(maxWidth / aspectRatio) : height; // Adjust height proportionally if respectAspectRatio is enabled\n    }\n\n    // Check if height exceeds maxHeight\n    if (height > maxHeight) {\n      height = maxHeight;\n      width = respectAspectRatio ? Math.round(maxHeight * aspectRatio) : width; // Adjust width proportionally if respectAspectRatio is enabled\n    }\n\n    return [width, height];\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\nimport croppie from 'croppie';\nimport { DirectUpload } from 'activestorage'\n\nexport default class extends ApplicationController {\n\n  static targets = ['image']\n\n  connect() {\n    super.connect();\n    const $cropArea = $(this.element)\n    this.cropperModal = $cropArea.find('.modal')\n    this.model = $cropArea.data(\"model\")\n    this.instanceId = $cropArea.data(\"instance-id\")\n    this.attributeName = $cropArea.data(\"attribute-name\")\n    this.dropZone = $cropArea.parent().find(\"a\")\n    this.imageSize = $cropArea.data(\"image-size\")\n  }\n\n\n  showCroppingModal(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    \n    this.cropperModal.modal('show')\n  }\n\n  initCropping(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    if(!(this.cropped == undefined)) {\n      this.cropped.croppie('destroy')\n      console.log(\"destroyed croppie\")\n    }\n    console.log(\"init the cropping\")\n    // const image = $(this.imageTarget)\n    const image = this.cropperModal.find('.modal-body img')\n    const imageSource = this.dropZone.find('img')\n    image.attr('src', imageSource.attr('src'))\n    // console.log(\"image src: \", image.attr('src'))\n    // console.log(\"image size: \", this.imageSize)\n    const cropOpts = {\n      viewport: { width: this.imageSize[0], height: this.imageSize[1] },\n      boundary: { width: this.imageSize[0] * 2, height: this.imageSize[1] * 2 },\n      showZoomer: true,\n      enableOrientation: true,\n      enableResize: false\n    }\n    this.cropped = image.croppie(cropOpts);\n  }\n\n  useCropped(event) {\n    const self = this\n    this.cropped.croppie('result', {\n      type: 'base64',\n      size: 'viewport'\n    }).then(function (resp) {\n      const imageSource = self.dropZone.find('img')\n      $(imageSource).attr('src', resp)\n      self.cropperModal.modal('hide')\n    })\n  }\n\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect();\n    this.original = $(\".original\", this.element)\n    this.inlineInput = $(\".input-form input\", this.element)\n    this.editButton = $(\".btn-icon.edit\", this.element)\n    this.cancelButton = $(\".btn-icon.cancel\", this.element)\n    this.inlineInput.hide()\n    this.inlineInput.removeClass('hidden')\n    this.cancelButton.hide()\n    this.cancelButton.removeClass('hidden')\n  }\n\n  edit(event) {\n    this.original.hide()\n    this.inlineInput.show()\n    this.editButton.hide()\n    this.cancelButton.show()\n  }\n\n  cancel(event) {\n    this.inlineInput.hide()\n    this.original.show()\n    this.editButton.show()\n    this.cancelButton.hide()\n  }\n\n  update(event) {\n    event.preventDefault();\n    const self = this\n    this.startLoading()\n    this.cancelButton.hide()\n    const newValue = this.inlineInput.val()\n    this.stimulate(\"FormReflex#update\", newValue).then(payload => {\n      self.inlineInput.hide()\n      self.original.text(newValue)\n      self.original.show()\n      self.editButton.show()\n      self.stopLoading();\n    });\n  }\n\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\n/**\n * Stimulus controller for dynamic key-value pair editor\n * \n * Targets:\n *   - container: Container for all key-value rows\n *   - row: Individual key-value row\n *   - template: Template for new rows\n *   - keyInput: Key input field\n *   - valueInput: Value input field\n * \n * Actions:\n *   - add: Add new key-value row\n *   - remove: Remove key-value row\n */\nexport default class extends ApplicationController {\n  static targets = [\"container\", \"row\", \"template\", \"keyInput\", \"valueInput\"]\n\n  /**\n   * Disable StimulusReflex for this controller (no reflex needed)\n   */\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n  }\n\n  /**\n   * Initialize: Add first row if container is empty\n   */\n  connect() {\n    super.connect()\n    \n    if (this.rowTargets.length === 0) {\n      this.add()\n    }\n  }\n\n  /**\n   * Add a new key-value row from template\n   */\n  add() {\n    const template = this.templateTarget\n    const clone = template.content.cloneNode(true)\n    \n    this.containerTarget.appendChild(clone)\n    \n    // Focus on the first input of the newly added row\n    const rows = this.rowTargets\n    const lastRow = rows[rows.length - 1]\n    const firstInput = lastRow.querySelector('[data-form--key-value-editor-target=\"keyInput\"]')\n    if (firstInput) {\n      firstInput.focus()\n    }\n    \n    this.logInfo('Added new key-value row')\n  }\n\n  /**\n   * Remove a key-value row\n   * @param {Event} event - Click event from remove button\n   */\n  remove(event) {\n    const row = event.target.closest('[data-form--key-value-editor-target=\"row\"]')\n    if (row) {\n      row.remove()\n      this.logInfo('Removed key-value row')\n    }\n  }\n}\n\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n  static targets = [\"tag\"]\n  static values = { selectedTags: Array }\n\n  connect() {\n    super.connect()\n    this.logInfo(\"Tag Filter controller connected\")\n  }\n\n  selectAll(event) {\n    event.preventDefault()\n    this.selectedTagsValue = []\n    this.updateTagStates()\n    this.dispatchFilterChange()\n  }\n\n  toggleTag(event) {\n    event.preventDefault()\n    const tagName = event.currentTarget.dataset.tagName\n    \n    if (this.selectedTagsValue.includes(tagName)) {\n      this.selectedTagsValue = this.selectedTagsValue.filter(tag => tag !== tagName)\n    } else {\n      this.selectedTagsValue = [...this.selectedTagsValue, tagName]\n    }\n    \n    this.updateTagStates()\n    this.dispatchFilterChange()\n  }\n\n  toggleShowAll(event) {\n    const showAll = event.target.checked\n    this.dispatchShowAllChange(showAll)\n  }\n\n  dispatchShowAllChange(showAll) {\n    const event = new CustomEvent('tagShowAllChange', {\n      detail: { showAll: showAll },\n      bubbles: true\n    })\n    this.element.dispatchEvent(event)\n  }\n\n  updateTagStates() {\n    const allTags = this.element.querySelectorAll('.tag-button, .tag')\n    \n    allTags.forEach(tag => {\n      const tagName = tag.dataset.tagName\n      const isAllButton = !tagName\n      \n      if (isAllButton) {\n        tag.classList.toggle('selected', this.selectedTagsValue.length === 0)\n      } else {\n        tag.classList.toggle('selected', this.selectedTagsValue.includes(tagName))\n      }\n    })\n  }\n\n  dispatchFilterChange() {\n    const event = new CustomEvent('tagFilterChange', {\n      detail: { selectedTags: this.selectedTagsValue },\n      bubbles: true\n    })\n    this.element.dispatchEvent(event)\n  }\n\n  // Getter for external access\n  get selectedTags() {\n    return this.selectedTagsValue\n  }\n\n  // Setter for external control\n  set selectedTags(tags) {\n    this.selectedTagsValue = tags || []\n    this.updateTagStates()\n  }\n} ", "import ApplicationController from '../../../javascript/controllers/application_controller'\nimport Trix from 'trix'\n\nexport default class extends ApplicationController {\n\n  connect() {\n    super.connect();\n    /// we have to wait until the trix-editor-wrapper is available, else the folder button will not be shown when a new learn_unit is added to the phase (rendering triggered by Reflex)\n    setTimeout(() => {\n      this.initializeTrixEditor();\n    }, 100);\n  }\n\n  initializeTrixEditor() {\n    \n    // Check if THIS trix-editor-wrapper element has the disabled attribute\n    const isDisabled = $(this.element).is('[disabled]') || $(this.element).attr('disabled') !== undefined;\n    // console.log('isDisabled: ', isDisabled);\n    // console.log('this.element: ', this.element);\n    // console.log('disabled attribute: ', $(this.element).attr('disabled'));\n    \n    // Get the trix-editor element within this component\n    const trixEditor = $(this.element).find('trix-editor')[0];\n    \n    if (isDisabled && trixEditor) {\n      // Disable the Trix editor\n      trixEditor.contentEditable = false;\n      trixEditor.setAttribute('disabled', 'disabled');\n      \n      // Also disable the underlying input/textarea\n      const hiddenInput = $(this.element).find('input[type=\"hidden\"], textarea');\n      hiddenInput.prop('disabled', true);\n      \n      // Add visual styling to indicate disabled state\n      $(trixEditor).addClass('disabled').css({\n        'background-color': '#f8f9fa',\n        'color': '#6c757d',\n        'cursor': 'not-allowed'\n      });\n      \n      console.log('Trix editor disabled');\n    }\n  \n    // Show Media Library button, when the trix-editor-wrapper is available and not suppress_media_library is set\n    let journeyWrapper = $(\"#journey_edit_form_wrapper\");\n    if(journeyWrapper.length == 0) {\n      journeyWrapper = $(\"#journey_builder\");\n    }\n    const trixMediaLibraryButton = $(this.element).find(\"button.trix-media-library-button\");\n    \n    if (trixMediaLibraryButton.length && !journeyWrapper.data('suppress-media-library') && !isDisabled) {\n      trixMediaLibraryButton.removeClass('visually-hidden');\n\n    }\n  }\n\n  /**\n   * opens the media library modal\n   * @param {Event} event\n   */\n  openMediaLibrary(event) {\n    event.preventDefault();\n    // console.log('Opening Media Library');\n    const $target = $(event.currentTarget);\n    const $mediaLibraryModal = $('#media_library_modal');\n    const trixEditorWrapper = $target.closest('.trix-editor-wrapper');\n    const journeyId = $('#journey_builder').data('journey-id') || $('#journey_edit_form_wrapper').data('journey-id');\n    const editorId = trixEditorWrapper.attr('id');\n    this.stimulate(\"MediaLibraryReflex#render_trix_editor_modal\", event.currentTarget, editorId, journeyId, null).then(payload => {\n      // open media library modal\n      $mediaLibraryModal.modal('show');\n    });\n  }\n\n  /**\n   * renders the media library\n   * @param {Event} event\n   */\n  renderMediaLibrary(event) {\n    event.preventDefault();\n    // console.log('Rendering Media Library');\n    const $target = $(event.currentTarget);\n    const entriesWrapper = $target.closest('.entries-wrapper.media-library');\n    const folder_name = $target.data('folder-name');\n    // console.log('folder_name: ', folder_name);\n    const journeyId = $('#journey_builder').data('journey-id') || $('#journey_edit_form_wrapper').data('journey-id');\n    // console.log('journey id: ', journeyId);\n    const editorId = entriesWrapper.data('editor-id');\n    // console.log('editor id: ', editorId);\n    this.stimulate(\"MediaLibraryReflex#render_trix_editor_modal\", event.target, editorId, journeyId, folder_name).then(payload => {\n    });\n  }\n\n  attachMediaLibraryEntry(event) {\n    event.preventDefault();\n\n    const $target = $(event.currentTarget);\n    const entry = event.currentTarget;\n    // console.log('entry: ', entry);\n    const entryUrl = entry.dataset.url;\n    // console.log('entryUrl: ', entryUrl);\n    const entryName = entry.dataset.name;\n    // F\u00FCgen Sie den ausgew\u00E4hlten MediaLibraryEntry in den Trix-Editor ein\n    const entriesWrapper = $target.closest('.entries-wrapper');\n    // console.log('entries Wrapper: ', $(entriesWrapper));\n    const editorId = `#${entriesWrapper.data('editor-id')}`;\n    // console.log('editorId: ', editorId);\n    const editor = $(editorId).find('trix-editor')[0].editor;\n    // console.log('editor: ',  editor);\n    const baseUrl = `${window.location.protocol}//${window.location.host}`;\n    // console.log('baseUrl: ', baseUrl);\n    // fetch(entryUrl)\n    fetch(`${baseUrl}/${entryUrl}`)\n    .then(response => response.blob())\n    .then(blob => {\n      const file = new File([blob], entryName, { type: blob.type });\n      editor.insertFile(file);\n    })\n    .catch(error => console.error('Error:', error));\n\n    // Schlie\u00DFen Sie das Modal\n    $('#media_library_modal').modal('hide');\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\nexport default class extends ApplicationController {\n  /*\n    Items::Container::Component Stimulus Controller\n    \n    Handles interactions for container items across different view modes:\n    - List view: hover effects, selection\n    - Compact view: minimal interactions\n  */\n  \n  connect() {\n    // Add any container-specific initialization\n    this.element.classList.add('container-item-connected');\n  }\n  \n  disconnect() {\n    this.element.classList.remove('container-item-connected');\n  }\n  \n  // Phase 2: Hover event handlers for CSP compliance\n  mouseenter(event) {\n    // Only add hover if not dragging or processing\n    if (!this.element.classList.contains('item-dragging') && \n        !this.element.classList.contains('item-processing-remove')) {\n      this.element.classList.add('item-hover');\n    }\n  }\n  \n  mouseleave(event) {\n    this.element.classList.remove('item-hover');\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\nexport default class extends ApplicationController {\n  /*\n    Items::Item::Component Stimulus Controller\n    \n    Handles interactive behavior for generic item components\n    across different view modes (card, list, pill, compact)\n  */\n\n  initialize() {\n    super.initialize();\n  }\n\n  connect() {\n    super.connect();\n    console.log(\"Items::Item::Component controller connected\");\n    this.setupEventHandlers();\n  }\n\n  disconnect() {\n    super.disconnect();\n    console.log(\"Items::Item::Component controller disconnected\");\n  }\n\n  /*\n    Setup event handlers for item interactions\n    \n    Handles hover effects, click tracking, and keyboard navigation\n  */\n  setupEventHandlers() {\n    this.element.addEventListener('mouseenter', this.handleMouseEnter.bind(this));\n    this.element.addEventListener('mouseleave', this.handleMouseLeave.bind(this));\n    this.element.addEventListener('keydown', this.handleKeyDown.bind(this));\n  }\n\n  /*\n    Handle mouse enter for hover effects\n    \n    @param event [Event] The mouseenter event\n    \n    Adds hover state and potential preview functionality\n  */\n  handleMouseEnter(event) {\n    this.element.classList.add('hovered');\n    \n    // Optional: Trigger preview or additional info loading\n    if (this.hasPreviewTarget) {\n      this.showPreview();\n    }\n  }\n\n  /*\n    Handle mouse leave for hover effects\n    \n    @param event [Event] The mouseleave event\n    \n    Removes hover state and cleans up preview\n  */\n  handleMouseLeave(event) {\n    this.element.classList.remove('hovered');\n    \n    if (this.hasPreviewTarget) {\n      this.hidePreview();\n    }\n  }\n\n  /*\n    Handle keyboard navigation\n    \n    @param event [Event] The keydown event\n    \n    Enables keyboard navigation for accessibility\n  */\n  handleKeyDown(event) {\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      this.activateItem();\n    }\n  }\n\n  /*\n    Activate the item (navigate to item URL)\n    \n    Programmatically triggers the main item action\n  */\n  activateItem() {\n    const link = this.element.querySelector('a');\n    if (link) {\n      link.click();\n    }\n  }\n\n  /*\n    Show preview information\n    \n    Optional method for showing additional item details on hover\n  */\n  showPreview() {\n    // Implementation depends on specific preview requirements\n    console.log(\"Showing item preview\");\n  }\n\n  /*\n    Hide preview information\n    \n    Cleans up preview display\n  */\n  hidePreview() {\n    console.log(\"Hiding item preview\");\n  }\n\n  /*\n    Toggle loading state\n    \n    @param loading [Boolean] Whether to show loading state\n    \n    Useful for async operations like favoriting, archiving, etc.\n  */\n  setLoadingState(loading) {\n    if (loading) {\n      this.element.classList.add('loading');\n    } else {\n      this.element.classList.remove('loading');\n    }\n  }\n\n  /*\n    Handle item action (favorite, archive, etc.)\n    \n    @param event [Event] The action event\n    \n    Generic handler for item-specific actions\n  */\n  handleItemAction(event) {\n    const action = event.currentTarget.dataset.action;\n    const itemId = event.currentTarget.dataset.itemId;\n    \n    console.log(`Handling ${action} for item ${itemId}`);\n    \n    this.setLoadingState(true);\n    \n    // Implement specific action logic here\n    // Example: this.stimulate('ItemsReflex#favorite', itemId)\n    \n    setTimeout(() => {\n      this.setLoadingState(false);\n    }, 1000);\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\nexport default class extends ApplicationController {\n  /*\n    Items::Journey::Component Stimulus Controller\n    \n    Handles interactions for journey items across different view modes:\n    - Card view: hover effects, click tracking\n    - List view: selection, batch operations\n    - Pill view: quick actions\n    - Compact view: minimal interactions\n  */\n  \n  connect() {\n    // Add any journey-specific initialization\n    this.element.classList.add('journey-item-connected');\n  }\n  \n  disconnect() {\n    this.element.classList.remove('journey-item-connected');\n  }\n  \n  // Phase 2: Hover event handlers for CSP compliance\n  mouseenter(event) {\n    // Only add hover if not dragging or processing\n    if (!this.element.classList.contains('item-dragging') && \n        !this.element.classList.contains('item-processing-remove')) {\n      this.element.classList.add('item-hover');\n    }\n  }\n  \n  mouseleave(event) {\n    this.element.classList.remove('item-hover');\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\nexport default class extends ApplicationController {\n  /*\n    Items::Unit::Component Stimulus Controller\n    \n    Handles interactions for unit items across different view modes:\n    - Card view: hover effects, click tracking\n    - List view: selection, batch operations\n    - Pill view: quick actions\n    - Compact view: minimal interactions\n  */\n  \n  connect() {\n    // Add any unit-specific initialization\n    this.element.classList.add('unit-item-connected');\n  }\n  \n  disconnect() {\n    this.element.classList.remove('unit-item-connected');\n  }\n  \n  // Phase 2: Hover event handlers for CSP compliance\n  mouseenter(event) {\n    // Only add hover if not dragging or processing\n    if (!this.element.classList.contains('item-dragging') && \n        !this.element.classList.contains('item-processing-remove')) {\n      this.element.classList.add('item-hover');\n    }\n  }\n  \n  mouseleave(event) {\n    this.element.classList.remove('item-hover');\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\nexport default class extends ApplicationController {\n\n  openGroupModal(event) {\n    event.preventDefault();\n    const $target = $(event.currentTarget);\n    const learnUnitId = $target.data(\"learnunit-id\")\n    const $modal = $(`#consumable_groups_modal_${learnUnitId}`)\n    $modal.modal(\"show\");\n    $modal.find(\"input:first-of-type\").focus()\n  }\n\n  createGroup(event) {\n    event.preventDefault();\n    const $target = $(event.currentTarget);\n    const learnUnitId = $target.data(\"learnunit-id\")\n    const $modal = $(`#consumable_groups_modal_${learnUnitId}`)\n    this.stimulate('ConsumableGroup#create_group', { serializeForm: true }).then(() => {\n      $modal.modal(\"hide\");\n    })\n  }\n\n  removeGroup(event) {\n    event.preventDefault();\n    const $target = $(event.currentTarget);\n    const groupId = $target.data(\"group-id\")\n    const $group = $target.closest(\".consumable-group\")\n    this.stimulate('ConsumableGroup#remove_group', groupId).then(() => {\n      $group.remove();\n    })\n  }\n\n  addConsumable(event) {\n    let target = $(event.currentTarget);\n    let learn_unit_id = parseInt(target.data(\"learn-unit-id\")),\n      consumable_group_id = parseInt(target.data(\"consumable-group-id\")),\n      consumable_id = parseInt(target.data(\"consumable-id\")),\n      type = target.data(\"type\");\n    this.stimulate(\n      \"ConsumableGroupReflex#add_consumable\",\n      learn_unit_id,\n      consumable_group_id,\n      consumable_id,\n      type\n    ).then(() => {\n      $(\"#create_consumable .modal\").modal(\"show\")\n    })\n  }\n\n  createConsumable(event) {\n    let target = $(event.currentTarget);\n    let learn_unit_id = parseInt(target.data(\"learn-unit-id\")),\n      consumable_group_id = parseInt(target.data(\"consumable-group-id\")),\n      consumable_id = parseInt(target.data(\"consumable-id\")),\n      type = target.data(\"type\");\n    this.stimulate(\"ConsumableGroupReflex#create_consumable\", { serializeForm: true }).then(() => {\n      $(\"#create_consumable .modal\").modal(\"hide\")\n    })\n  }\n\n  // addConsumableSuccess() {\n  //   $(\"#create_consumable .modal\").modal(\"show\");\n  // }\n\n  reload(event) {\n    let target = $(event.currentTarget);\n    let consumable_group_id = parseInt(target.data(\"consumable-group-id\"));\n    this.stimulate(\"ConsumableGroupReflex#reload\", consumable_group_id);\n  }\n\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\nexport default class extends ApplicationController {\n  static targets = [\"content\", \"form\"];\n\n  initialize() {\n    super.initialize();\n    this.stateArea = $(this.element).find('[data-state]');\n    this.state = this.stateArea.data('state');\n    this.setState(this.state);\n  }\n\n  /**\n   * This will update the current state to a new one.\n   * It will hide the previous state and display either the form or the content depending on state.\n   * It will also update the content if necessary.\n   * @param {String} state - the current state \n   */\n  setState(state) {\n    this.state = state\n    this.stateArea.find(`.${this.state}`).addClass('hidden');\n    this.stateArea.find(`:not(.${this.state})`).removeClass('hidden');\n\n    this.stateArea.data('state', this.state)\n\n    if (this.state === 'show') {\n      this.updateContent(this.getFormValue());\n    }\n\n    this.toggleForm()\n    this.toggleContent()\n  }\n\n  /**\n   * Toggle between edit and show state.\n   * @param {*} event \n   */\n  toggleState(event) {\n    event.preventDefault();\n    const $target = $(event.currentTarget);\n    const state = $target.data('state');\n    this.setState(state === 'edit' ? 'show' : 'edit');\n  }\n\n  /**\n   * this will hide or show the form depending on the state.\n   */\n  toggleForm() {\n    if (this.hasFormTarget) {\n      if (this.state === 'edit') {\n        $(this.formTarget).removeClass('hidden');\n      } else {\n        $(this.formTarget).addClass('hidden')\n      }\n    }\n  }\n\n  /**\n   * This will hide or show the content depending on the state\n   */\n  toggleContent() {\n    if (this.hasContentTarget) {\n      if (this.state === 'show') {\n        $(this.contentTarget).removeClass('hidden');\n      } else {\n        $(this.contentTarget).addClass('hidden')\n      }\n    }\n  }\n\n  /**\n   * @returns {String} the form value or empty string if no form target is set.\n   */\n  getFormValue() {\n    if (this.hasFormTarget) {\n      return $(this.formTarget).find('textarea').val();\n    }\n\n    return \"\";\n  }\n\n  /**\n   * This will update the content target if set.\n   * @param {String} content - the new content that should be filled.\n   */\n  updateContent(content) {\n    if (this.hasContentTarget) {\n      $(this.contentTarget).html(content);\n    }\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = [ \"slot\" ]\n\n  initialize() {\n    super.initialize()\n    this.defineHandlers()\n  }\n\n  connect() {\n    super.connect()\n    // console.log(`slots are: ${this.slotTargets}`)\n  }\n\n  /*\n  * defines the drop behavior\n  */\n  drop(ev, self, slotType) {\n    ev.stopPropagation();\n\n    const type = ev.dataTransfer.getData(\"type\"),\n      subtype = ev.dataTransfer.getData(\"subtype\"),\n      defId = ev.dataTransfer.getData(\"defId\"),\n      $target = $(ev.target),\n      $slot = $target.closest(\".ltd-slot\");\n\n    // console.log(\"target: \", $target);\n    // console.log(\"slot type: \", slotType);\n    // console.log(\"type: \", type);\n    // console.log(\"subtype: \", subtype);\n    if (['certificate', 'learn_type_dependent'].includes(type) || type == undefined) {\n      $slot.addClass('not-accepted')\n      return\n    } else {\n      $slot.removeClass('not-accepted')\n    }\n    \n    const disabled = $slot.data('disabled')\n\n    console.log(disabled)\n\n    if(!disabled) {\n      self.startLoading()\n      self.stimulate(\"LearnunitReflex#add_tld_slot\",{ serializeForm: false }, type, subtype, defId, slotType).then(() => {\n        // console.log(\"slot done\")\n        self.stopLoading();\n      });\n    }\n  }\n\n  /*\n  * sets the event handlers for drag&drop behavior\n  */\n  defineHandlers(){\n    let self = this;\n\n    // // define the dragenter behavior\n    // this.slotTargets.forEach(function (el, index) {\n    //   $(el).on('dragenter', function (ev) {\n    //     const $slot = $(ev.target).closest(\".ltd-slot\")\n    //     // $slot.css('border', '2px solid green')\n    //     // $slot.addClass('entered')\n    //   })\n    // })\n\n    // define the dragleave behavior\n    this.slotTargets.forEach(function (el, index) {\n      $(el).on('dragleave', function(ev) {\n        const $slot = $(ev.target).closest(\".ltd-slot\")\n        // $slot.css('border', '1px solid black')\n        if($slot.data('disabled')) {\n          $slot.tooltip('dispose')\n        }\n        $slot.removeClass('entered')\n      })\n    })\n\n    // define the dragover behavior\n    $(this.element).on('dragover', function(ev) {\n      ev.preventDefault()\n      const $slot = $(ev.target).closest(\".ltd-slot\")\n      // $slot.css('border', '2px solid green')\n      if($slot.data('disabled')) {\n        $slot.tooltip('show')\n      }\n      $slot.addClass('entered')\n  })\n\n    // define the drop behavior\n    this.slotTargets.forEach(function (el, index) {\n      $(el).on(\"drop\", function (ev) {\n        const $slot = $(ev.target).closest(\".ltd-slot\")\n        const slotType = $slot.data('slot-type');\n        // $slot.css('border', '2px solid red')\n        $slot.removeClass(\"entered\");\n        self.drop(ev.originalEvent, self, slotType);\n      });\n    })\n  }\n\n  ///\n  // opens the pseudo modal for editing learnables\n  ///\n  openLearnableEditor(event) {\n    // we should send the slot element\n    const slot = event.currentTarget\n    this.stimulate(\"LearnunitReflex#open_learnable_editor\", slot,{ serializeForm: false }).then(() => {\n      reinitializeForms($(\"#learn_units_form_pseudo_modal\"))\n      $(\"#learn_units_form_pseudo_modal\").removeClass(\"d-none\");\n      $('#learn_units_form').hide();\n    });\n\n  }\n\n  saveChanges(event) {\n    const $target = $(event.currentTarget)\n    // console.log(\"target: \", $target)\n    const learnableType = $target.data('learnable-type')\n    // console.log(\"learnable_type: \", learnableType)\n    const learnableId = $target.data('learnable-id')\n    // console.log(\"learnable_id: \", learnableId)\n    const form = $(\"#learn_units_form_pseudo_modal\").find('form')[0]\n    // console.log(\"form: \", form)\n    this.stimulate(\"LearnunitReflex#save_changes\", form,{ serializeForm: true }, learnableType, learnableId).then(() => {\n      $(\"#learn_units_form_pseudo_modal\").addClass(\"d-none\");\n      $('#learn_units_form').show();\n    });\n\n  }  \n  \n  ///\n  // closes the pseudo modal\n  ///\n  closePseudoModal(event) {\n      $(\"#learn_units_form_pseudo_modal\").addClass(\"d-none\");\n      $('#learn_units_form').show();\n  }\n\n  deleteSlot(event) {\n    // we should send the slot element\n    const slot = $(event.currentTarget).closest(\".ltd-slot\")\n    // console.log(\"slot: \", slot)\n    this.stimulate(\"LearnunitReflex#delete_ltd_slot\", slot[0], { serializeForm: false }).then(() => {\n      console.log('slot removed')\n    });\n\n  }\n\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\n/**\n * Stimulus Controller for JourneyContainers::Show::Component\n * Handles unit start actions within container context\n */\nexport default class extends ApplicationController {\n\n  /**\n   * Start a unit via StimulusReflex, then navigate to journey show page\n   * @param {Event} event - click event from unit play button\n   */\n  startUnit(event) {\n    event.preventDefault()\n    \n    const button = event.currentTarget\n    const tenantUserAssignmentId = button.dataset.tenantUserAssignmentId\n    const journeyId = button.dataset.journeyId\n    const originId = button.dataset.originId\n    const journeyUrl = button.dataset.journeyUrl\n    const containerId = button.dataset.containerId\n    const containerName = button.dataset.containerName\n    const containerUrl = button.dataset.containerUrl\n    const nextUnitId = button.dataset.nextUnitId\n    \n    if (!journeyUrl) {\n      console.error('JourneyContainers::Show: Missing journey URL')\n      return\n    }\n    \n    this.startLoading()\n    \n    // Call StimulusReflex with parameters\n    this.stimulate(\n      'ContainerUnitReflex#start_unit',\n      tenantUserAssignmentId,\n      journeyId,\n      originId\n    ).then(() => {\n      // Success: Navigate to journey show page with container context\n      // Add container_id and container_name as query parameters for back navigation\n      const url = new URL(journeyUrl, window.location.origin)\n      if (containerId && containerName) {\n        url.searchParams.set('from_container', containerId)\n        // CRITICAL: containerName is already URL-encoded from HTML data-attribute\n        // Using encodeURIComponent() again would double-encode special characters (\u00F6 \u2192 %C3%B6 \u2192 %25C3%25B6)\n        url.searchParams.set('container_name', containerName)\n        \n        // Pass through next_unit_id for proper button display after completion\n        url.searchParams.set('next_unit_id', nextUnitId || '')\n        \n        // CRITICAL: Use container_url from button dataset (pass-through from previous navigation)\n        // Don't use window.location because it's still the OLD unit URL at this point!\n        if (containerUrl) {\n          url.searchParams.set('container_url', containerUrl)\n        } else {\n          // Fallback for legacy calls without container_url (first unit in container)\n          url.searchParams.set('container_url', window.location.pathname + window.location.search)\n        }\n      }\n      window.location.href = url.toString()\n    }).catch((error) => {\n      // Error: Log and stop loading\n      console.error('ContainerUnitReflex failed:', error)\n      this.stopLoading()\n      // Error notification is already handled by reflex\n    })\n  }\n\n  /**\n   * Force-start a locked unit via explicit reflex workflow.\n   * @param {Event} event - click event from force-start button\n   */\n  forceStartUnit(event) {\n    event.preventDefault()\n\n    const button = event.currentTarget\n    const tenantUserAssignmentId = button.dataset.tenantUserAssignmentId\n    const journeyId = button.dataset.journeyId\n    const originId = button.dataset.originId\n    const journeyUrl = button.dataset.journeyUrl\n    const containerId = button.dataset.containerId\n    const containerName = button.dataset.containerName\n    const containerUrl = button.dataset.containerUrl\n    const nextUnitId = button.dataset.nextUnitId\n\n    if (!journeyUrl) {\n      console.error('JourneyContainers::Show: Missing journey URL')\n      return\n    }\n\n    this.startLoading()\n\n    this.stimulate(\n      'ContainerUnitReflex#force_start_unit',\n      tenantUserAssignmentId,\n      journeyId,\n      originId\n    ).then(() => {\n      const url = new URL(journeyUrl, window.location.origin)\n      if (containerId && containerName) {\n        url.searchParams.set('from_container', containerId)\n        url.searchParams.set('container_name', containerName)\n        url.searchParams.set('next_unit_id', nextUnitId || '')\n        if (containerUrl) {\n          url.searchParams.set('container_url', containerUrl)\n        } else {\n          url.searchParams.set('container_url', window.location.pathname + window.location.search)\n        }\n      }\n      window.location.href = url.toString()\n    }).catch((error) => {\n      console.error('ContainerUnitReflex force_start_unit failed:', error)\n      this.stopLoading()\n    })\n  }\n\n    /**\n   * Open a unit via Stimulus Controller, then navigate to journey show page\n   * @param {Event} event - click event from unit play button\n   */\n    openUnit(event) {\n      event.preventDefault()\n      \n      const button = event.currentTarget\n      const journeyId = button.dataset.journeyId\n      const journeyUrl = button.dataset.journeyUrl\n      \n      if (!journeyUrl) {\n        console.error('JourneyContainers::Show: Missing journey URL')\n        return\n      }\n      \n      this.startLoading()\n      \n      window.location.href = journeyUrl\n    }\n}\n\n", "import ApplicationController from \"../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n  static values = { \n    debounceTime: { type: Number, default: 500 },\n    pathMethod: { type: String, default: 'journeys_path' }\n  }\n  static targets = [\n    \"showAllToggle\",      // Show All Switch\n    \"categoryButton\",     // Category Buttons (multiple)\n    \"sortButton\"          // Sort Buttons (multiple)\n  ]\n  \n  // Basic controller for JourneyFilter component\n  // StimulusReflex handles all interactions automatically\n  connect() {\n    super.connect()\n    this.useReflex = true  // Enable StimulusReflex\n    this.pendingActions = new Set()\n    \n  }\n\n  disconnect() {\n    super.disconnect()\n  }\n\n\n  /**\n   * Toggle show all toggle\n   * @param {Event} event The event object\n   */\n  toggleShowAll(event) {\n    event.preventDefault()\n    this.startLoading()\n    \n    // UI state is already updated by the browser (checkbox checked/unchecked)\n    // Update URL immediately with current UI state\n    this.updateUrlWithCurrentState()\n    \n    const filterState = this.getCurrentFilterState()\n    this.stimulate('JourneyFilterReflex#update_filters', event.currentTarget, filterState)\n      .then(() => {\n        this.stopLoading()\n      })\n  }\n\n  /**\n   * Change sort\n   * @param {Event} event The event object\n   */\n  changeSort(event) {\n    event.preventDefault()\n    this.startLoading()\n\n    // console.log('changeSort', event.target)\n    // Update UI first (optimistic update)\n    this.updateSortButtonStates(event.target)\n    \n    // Update URL immediately with current UI state\n    this.updateUrlWithCurrentState()\n    \n    const filterState = this.getCurrentFilterState()\n    this.stimulate('JourneyFilterReflex#update_filters', event.currentTarget, filterState)\n      .then(() => {\n        this.stopLoading()\n      })\n  }\n\n  /**\n   * Toggle category\n   * @param {Event} event The event object\n   */\n  toggleCategory(event) {\n    event.preventDefault()\n    this.startLoading()\n    \n    // Update UI first (optimistic update)\n    event.target.classList.toggle('selected')\n    \n    // Update URL immediately with current UI state\n    this.updateUrlWithCurrentState()\n    \n    const filterState = this.getCurrentFilterState()\n    this.stimulate('JourneyFilterReflex#update_filters', event.currentTarget, filterState)\n      .then(() => {\n        this.stopLoading()\n      })\n  }\n\n  /**\n   * Clear categories\n   * @param {Event} event The event object\n   */\n  clearCategories(event) {\n    event.preventDefault()\n    this.startLoading()\n    \n    // Update UI first (optimistic update)\n    this.clearAllCategorySelections()\n    \n    // Update URL immediately with current UI state\n    this.updateUrlWithCurrentState()\n    \n    const filterState = this.getCurrentFilterState()\n    this.stimulate('JourneyFilterReflex#update_filters', event.currentTarget, filterState)\n      .then(() => {\n        this.stopLoading()\n      })\n      .catch((error) => {\n        console.error('StimulusReflex error:', error)\n        this.stopLoading()\n      })\n  }\n\n  // ===== STATE MANAGEMENT METHODS =====\n  \n  /**\n   * Get current filter state from UI elements\n   * @return {Object} Complete filter state\n   */\n  getCurrentFilterState() {\n    return {\n      show_all: this.getShowAllState(),\n      selected_categories: this.getSelectedCategories(),\n      sort_criteria: this.getSelectedSort()\n    }\n  }\n\n  /**\n   * Get show all toggle state\n   * @return {Boolean}\n   */\n  getShowAllState() {\n    if (this.hasShowAllToggleTarget) {\n      return this.showAllToggleTarget.checked\n    }\n    return false\n  }\n\n  /**\n   * Get selected categories from UI\n   * @return {Array<String>} Array of selected category names\n   */\n  getSelectedCategories() {\n    if (!this.hasCategoryButtonTarget) {\n      return []\n    }\n    \n    const selectedButtons = this.categoryButtonTargets.filter(btn => \n      btn.classList.contains('selected') && btn.dataset.category\n    )\n    return selectedButtons.map(btn => btn.dataset.category)\n  }\n\n  /**\n   * Get selected sort criteria from UI\n   * @return {String} Sort criteria\n   */\n  getSelectedSort() {\n    if (!this.hasSortButtonTarget) {\n      return 'published_at'\n    }\n    \n    const activeButton = this.sortButtonTargets.find(btn => \n      btn.classList.contains('active') || btn.classList.contains('selected')\n    )\n    return activeButton ? activeButton.dataset.sort : 'published_at'\n  }\n\n  // ===== UI UPDATE HELPERS =====\n  \n  /**\n   * Update sort button states (optimistic update)\n   * @param {HTMLElement} clickedButton The clicked sort button\n   */\n  updateSortButtonStates(clickedButton) {\n    if (!this.hasSortButtonTarget) return\n    \n    // Remove active/selected from all sort buttons\n    this.sortButtonTargets.forEach(btn => {\n      btn.classList.remove('active', 'selected')\n    })\n    \n    // Add active to clicked button\n    clickedButton.classList.add('active')\n  }\n\n  /**\n   * Clear all category selections (optimistic update)\n   */\n  clearAllCategorySelections() {\n    if (!this.hasCategoryButtonTarget) return\n    \n    // Remove selected from all category buttons\n    this.categoryButtonTargets.forEach(btn => {\n      btn.classList.remove('selected')\n    })\n    \n    // Add selected to \"All\" button (first button without category data)\n    const allButton = this.categoryButtonTargets.find(btn => !btn.dataset.category)\n    if (allButton) {\n      allButton.classList.add('selected')\n    }\n  }\n\n  /**\n   * Update browser URL with current UI state\n   * This ensures view-mode switches read the current filter state\n   */\n  updateUrlWithCurrentState(journeyFilterOverride = null, pageOverride = null) {\n    const currentState = this.getCurrentFilterState()\n    \n    // Build URL parameters from current UI state\n    const params = new URLSearchParams(window.location.search)\n    \n    // Update selected categories\n    // Delete all existing selected_categories parameters (both formats)\n    params.delete('selected_categories')\n    const keysToDelete = []\n    for (const [key] of params) {\n      if (key.startsWith('selected_categories')) {\n        keysToDelete.push(key)\n      }\n    }\n    keysToDelete.forEach(key => params.delete(key))\n    \n    // Add new selected categories if any\n    if (currentState.selected_categories && currentState.selected_categories.length > 0) {\n      currentState.selected_categories.forEach(category => {\n        params.append('selected_categories[]', category)\n      })\n    }\n    \n    // Update sort criteria\n    if (currentState.sort_criteria && currentState.sort_criteria !== 'alphabetic') {\n      params.set('sort_criteria', currentState.sort_criteria)\n    } else {\n      params.delete('sort_criteria')\n    }\n    \n    // Update show_all\n    if (currentState.show_all === true) {\n      params.set('show_all', 'true')\n    } else {\n      params.delete('show_all')\n    }\n    \n    // Update journey filter if provided or preserve existing\n    if (journeyFilterOverride) {\n      if (journeyFilterOverride !== 'all') {\n        params.set('journey_filter', journeyFilterOverride)\n      } else {\n        params.delete('journey_filter')\n      }\n    }\n    \n    // Update page if provided\n    if (pageOverride !== null) {\n      if (pageOverride > 1) {\n        params.set('page', pageOverride)\n      } else {\n        params.delete('page')\n      }\n    }\n    \n    // Build new URL\n    const newUrl = window.location.pathname + (params.toString() ? '?' + params.toString() : '')\n    \n    // Update browser URL without page reload\n    window.history.replaceState({}, '', newUrl)\n  }\n\n  /**\n   * Change journey filter state (all/current/completed)\n   * @param {Event} event The event object\n   */\n  changeJourneyFilter(event) {\n    event.preventDefault()\n    this.startLoading()\n    \n    const newState = event.currentTarget.dataset.journeyFilterStateValue\n    \n    // Update URL immediately with current UI state + new journey filter\n    this.updateUrlWithCurrentState(newState)\n    \n    // Navigate to new URL (full page reload to update content)\n    window.location.href = window.location.href\n  }\n\n} ", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\nexport default class extends ApplicationController {\n  static targets = [\"journeyItem\"];\n  static values = { selectedJourneys: Array };\n\n  initialize() {\n    super.initialize();\n    this.useReflex = false;\n  }\n\n  connect() {\n    super.connect();\n    this.logInfo(\"Available Journeys multi-select controller connected\");\n    this.selectedJourneysValue = [];\n  }\n\n  /**\n   * Handles journey selection with modern multi-select patterns\n   * - Click: Select single journey\n   * - Shift+Click: Select range from last selected to current\n   * - Ctrl/Cmd+Click: Toggle individual journey selection\n   * \n   * @param {Event} event - The click event\n   */\n  selectJourney(event) {\n    event.preventDefault();\n    \n    const journeyElement = event.currentTarget;\n    const journeyId = journeyElement.dataset.journeyid;\n    \n    if (event.shiftKey && this.lastSelectedIndex !== undefined) {\n      this.selectRange(journeyId, journeyElement);\n    } else if (event.ctrlKey || event.metaKey) {\n      this.toggleJourney(journeyId, journeyElement);\n    } else {\n      this.selectSingle(journeyId, journeyElement);\n    }\n    \n    this.updateVisualSelection();\n    this.logInfo(`Selected journeys: ${this.selectedJourneysValue.join(', ')}`);\n  }\n\n  /**\n   * Selects a single journey, clearing all others\n   */\n  selectSingle(journeyId, journeyElement) {\n    this.selectedJourneysValue = [journeyId];\n    this.lastSelectedIndex = this.getJourneyIndex(journeyElement);\n  }\n\n  /**\n   * Toggles a journey's selection state\n   */\n  toggleJourney(journeyId, journeyElement) {\n    if (this.selectedJourneysValue.includes(journeyId)) {\n      this.selectedJourneysValue = this.selectedJourneysValue.filter(id => id !== journeyId);\n    } else {\n      this.selectedJourneysValue = [...this.selectedJourneysValue, journeyId];\n    }\n    this.lastSelectedIndex = this.getJourneyIndex(journeyElement);\n  }\n\n  /**\n   * Selects a range of journeys from last selected to current\n   */\n  selectRange(journeyId, journeyElement) {\n    const currentIndex = this.getJourneyIndex(journeyElement);\n    const startIndex = Math.min(this.lastSelectedIndex, currentIndex);\n    const endIndex = Math.max(this.lastSelectedIndex, currentIndex);\n    \n    const journeyElements = this.journeyItemTargets;\n    const rangeIds = [];\n    \n    for (let i = startIndex; i <= endIndex; i++) {\n      if (journeyElements[i]) {\n        rangeIds.push(journeyElements[i].dataset.journeyid);\n      }\n    }\n    \n    // Merge with existing selection (union)\n    const newSelection = new Set([...this.selectedJourneysValue, ...rangeIds]);\n    this.selectedJourneysValue = Array.from(newSelection);\n  }\n\n  /**\n   * Gets the index of a journey element in the list\n   */\n  getJourneyIndex(journeyElement) {\n    return this.journeyItemTargets.indexOf(journeyElement);\n  }\n\n  /**\n   * Updates visual selection state for all journey items\n   */\n  updateVisualSelection() {\n    this.journeyItemTargets.forEach(element => {\n      const journeyId = element.dataset.journeyid;\n      const isSelected = this.selectedJourneysValue.includes(journeyId);\n      \n      element.classList.toggle('selected', isSelected);\n    });\n  }\n\n  /**\n   * Handles drag start - includes all selected journeys in drag data\n   */\n  dragstart(event) {\n    const journeyElement = event.currentTarget;\n    const journeyId = journeyElement.dataset.journeyid;\n    \n    // If dragging a non-selected journey, select it first\n    if (!this.selectedJourneysValue.includes(journeyId)) {\n      this.selectSingle(journeyId, journeyElement);\n      this.updateVisualSelection();\n    }\n    \n    // Set drag data for all selected journeys\n    event.dataTransfer.setData('journeyids', JSON.stringify(this.selectedJourneysValue));\n    event.dataTransfer.setData('journeyid', journeyId); // Fallback for single journey\n    event.dataTransfer.setData('containerid', journeyElement.dataset.containerid);\n    \n    // Notify container detail controller about drag start\n    document.dispatchEvent(new CustomEvent('journey:drag-start-from-available'));\n    \n    // Visual feedback for drag\n    this.addDragFeedback();\n    \n    this.logInfo(`Dragging ${this.selectedJourneysValue.length} journey(s): ${this.selectedJourneysValue.join(', ')}`);\n  }\n\n  /**\n   * Handles drag end - notifies container detail controller\n   */\n  dragend(event) {\n    // Notify container detail controller about drag end\n    document.dispatchEvent(new CustomEvent('journey:drag-end-from-available'));\n    \n    // Visual feedback cleanup (already handled by timeout in addDragFeedback, but ensure it's done)\n    this.removeDragFeedback();\n  }\n\n  /**\n   * Adds visual feedback during drag operation\n   */\n  addDragFeedback() {\n    this.journeyItemTargets.forEach(element => {\n      const journeyId = element.dataset.journeyid;\n      const isSelected = this.selectedJourneysValue.includes(journeyId);\n      \n      if (isSelected) {\n        element.classList.add('dragging');\n      } else {\n        element.classList.add('not-dragging');\n      }\n    });\n    \n    // Remove feedback after drag ends\n    setTimeout(() => {\n      this.removeDragFeedback();\n    }, 100);\n  }\n\n  /**\n   * Removes visual drag feedback\n   */\n  removeDragFeedback() {\n    this.journeyItemTargets.forEach(element => {\n      element.classList.remove('dragging', 'not-dragging');\n    });\n  }\n\n  /**\n   * Clears all selections\n   */\n  clearSelection() {\n    this.selectedJourneysValue = [];\n    this.lastSelectedIndex = undefined;\n    this.updateVisualSelection();\n  }\n\n  /**\n   * Gets currently selected journey IDs\n   */\n  get selectedJourneyIds() {\n    return this.selectedJourneysValue;\n  }\n}\n", "import ApplicationController from \"../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n  static targets = [\"header\", \"overview\", \"containerView\", \"quickActions\"]\n  static values = { hierarchyDepth: Number }\n\n  initialize() {\n    super.initialize()\n    this.useReflex = true\n    this.logInfo(\"Journey Hierarchy controller initialized\")\n  }\n\n  connect() {\n    super.connect()\n    this.logInfo(`Journey Hierarchy connected - Depth: ${this.hierarchyDepthValue}`)\n  }\n\n  /**\n   * Refreshes the hierarchy view\n   * @returns {void}\n   */\n  refreshView() {\n    this.logInfo(\"Refreshing hierarchy view\")\n    // TODO: Implement refresh logic\n  }\n\n  async deleteContainer(event) {\n    event.preventDefault();\n    const containerId = event.currentTarget.dataset.containerId;\n    const confirmMessage = event.currentTarget.dataset.confirmMessage;\n\n    if (!confirm(confirmMessage)) {\n      return;\n    }\n\n    // Setup event listeners BEFORE stimulate\n    const assignmentsMessage = event.currentTarget.dataset.assignmentsMessage;\n    this.setupDeleteEventListeners(containerId, assignmentsMessage);\n\n    // Call reflex\n    try {\n      await this.stimulate(\n        \"JourneyContainerReflex#delete_container\",\n        containerId,\n        false\n      );\n    } catch (error) {\n      console.error('Container deletion reflex failed:', error);\n    }\n  }\n\n  setupDeleteEventListeners(containerId, assignmentsMessageTemplate) {\n    // Listen for active assignments warning\n    const handleActiveAssignments = (event) => {\n      const count = event.detail.count;\n      const message = assignmentsMessageTemplate.replace('%{count}', count);\n\n      if (confirm(message)) {\n        // Force delete with second confirmation\n        this.stimulate(\n          \"JourneyContainerReflex#delete_container\",\n          containerId,\n          true\n        );\n      }\n      // Remove listener after use\n      document.removeEventListener(\"container:has-active-assignments\", handleActiveAssignments);\n    };\n    \n    document.addEventListener(\"container:has-active-assignments\", handleActiveAssignments);\n\n    // Listen for success - reload or navigate\n    const handleDeleted = (event) => {\n      const parentId = event.detail.parent_id;\n      \n      // If deleted from hierarchy index page, navigate based on parent_id\n      if (window.location.pathname === \"/admin/journey_hierarchy\") {\n        // Reload index page to show updated list\n        window.location.reload();\n      } else {\n        // Deleted from detail view or other page\n        if (parentId) {\n          // Was a sub-container, go to parent or reload current page\n          window.location.reload();\n        } else {\n          // Was root container, go to hierarchy index\n          window.location.href = \"/admin/journey_hierarchy\";\n        }\n      }\n      // Remove listener after use\n      document.removeEventListener(\"container:deleted\", handleDeleted);\n    };\n    \n    document.addEventListener(\"container:deleted\", handleDeleted);\n\n    // Listen for failure - show error\n    const handleDeleteFailed = (event) => {\n      const message = event.detail.message;\n      alert(message || \"Deletion failed\");\n      console.error(\"Container deletion failed:\", message);\n      // Remove listener after use\n      document.removeEventListener(\"container:delete-failed\", handleDeleteFailed);\n    };\n    \n    document.addEventListener(\"container:delete-failed\", handleDeleteFailed);\n  }\n} ", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\n/**\n * Stimulus controller for Journey Hierarchy Container Card\n * Manages collapsible body functionality with persistent state\n */\nexport default class extends ApplicationController {\n  static targets = [\"collapseBody\", \"collapseIcon\"];\n  static values = {\n    collapsed: { type: Boolean, default: true }\n  };\n\n  /**\n   * Initialize controller\n   */\n  connect() {\n    super.connect();\n    console.log(\"\uD83C\uDFAF ContainerCard controller connected\", {\n      hasBodyTarget: this.hasCollapseBodyTarget,\n      hasIconTarget: this.hasCollapseIconTarget,\n      collapsed: this.collapsedValue\n    });\n    this.initializeCollapseState();\n  }\n\n  /**\n   * Initialize collapse state on load\n   */\n  initializeCollapseState() {\n    console.log(\"\uD83D\uDD27 Initializing collapse state:\", this.collapsedValue);\n    // Apply initial state (default: collapsed)\n    this.updateCollapseState(this.collapsedValue);\n  }\n\n  /**\n   * Toggle collapse state\n   * @param {Event} event - The click event\n   */\n  toggleCollapse(event) {\n    console.log(\"\uD83D\uDD04 Toggle collapse clicked\");\n    event.preventDefault();\n    event.stopPropagation();\n    \n    // Toggle collapsed value\n    this.collapsedValue = !this.collapsedValue;\n    console.log(\"\u2705 New collapsed state:\", this.collapsedValue);\n    \n    // Update UI\n    this.updateCollapseState(this.collapsedValue);\n  }\n\n  /**\n   * Update collapse state in DOM\n   * @param {Boolean} collapsed - Whether the card should be collapsed\n   */\n  updateCollapseState(collapsed) {\n    if (!this.hasCollapseBodyTarget || !this.hasCollapseIconTarget) return;\n\n    if (collapsed) {\n      // Hide body\n      this.collapseBodyTarget.style.display = 'none';\n      \n      // Rotate icon to expand_more (down arrow)\n      this.collapseIconTarget.textContent = 'expand_more';\n    } else {\n      // Show body\n      this.collapseBodyTarget.style.display = 'block';\n      \n      // Rotate icon to expand_less (up arrow)\n      this.collapseIconTarget.textContent = 'expand_less';\n    }\n  }\n}\n\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\nimport { CollapseStateManager } from \"../../../javascript/controllers/collapse_state_manager\"\nimport Sortable from \"sortablejs\"\n\nexport default class extends ApplicationController {\n  static targets = [\"sortableContainer\", \"sortableChildrenContainer\", \"selectionCount\", \"batchActions\"]\n  static values = { \n    containerId: Number \n  }\n\n  initialize() {\n    super.initialize()\n    this.useReflex = true\n    this.selectedJourneyIds = []\n    this.selectedContainerItemIds = []\n    this.isDraggingForSorting = false\n  }\n\n  connect() {\n    super.connect()\n    this.initializeStateManager()\n    this.initializeSortable()\n    this.initializeSortableChildren()\n    this.initializeCollapseStates()\n    this.initializeDragState()\n    this.initializeDragEventListeners()\n    \n    // Store pending delete info for container\n    this.pendingDeleteContainerId = null\n    this.pendingDeleteAssignmentsMessage = null\n    this.pendingForceDeleteContainerId = null\n    \n    // Store pending delete info for journeys\n    this.pendingDeleteJourneyId = null\n    this.pendingDeleteJourneyElement = null\n    \n    // Listen for delete confirmation\n    document.addEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n  }\n\n  disconnect() {\n    super.disconnect()\n    this.removeDragEventListeners()\n    document.removeEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n  }\n\n  /**\n   * Initialize the collapse state manager\n   */\n  initializeStateManager() {\n    // Enable debug in development\n    const isDebug = document.body.dataset.environment === 'development'\n    \n    // Use container-specific storage key for isolation\n    const storageKey = `container_${this.containerIdValue}_collapse_states`\n    \n    this.stateManager = new CollapseStateManager(storageKey, {\n      debug: isDebug,\n      maxAge: 30 // Keep states for 30 days\n    })\n  }\n\n  /**\n   * Verhindert Collapse-Toggle beim Klick auf Action-Links\n   */\n  preventCollapse(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    event.stopImmediatePropagation() // Stoppt auch Bootstrap's Event-Handler\n    \n    // Manuell zur URL navigieren\n    const url = event.currentTarget.href\n    if (url) {\n      window.location.href = url\n    }\n  }\n\n  /**\n   * Initialize sticky drop zone functionality\n   */\n  initializeDragState() {\n    this.isDraggingFromAvailable = false\n  }\n\n  /**\n   * Initialize event listeners for drag events from available journeys\n   */\n  initializeDragEventListeners() {\n    this.handleDragStartFromAvailable = this.handleDragStartFromAvailable.bind(this)\n    this.handleDragEndFromAvailable = this.handleDragEndFromAvailable.bind(this)\n    \n    document.addEventListener('journey:drag-start-from-available', this.handleDragStartFromAvailable)\n    document.addEventListener('journey:drag-end-from-available', this.handleDragEndFromAvailable)\n  }\n\n  /**\n   * Remove drag event listeners on disconnect\n   */\n  removeDragEventListeners() {\n    document.removeEventListener('journey:drag-start-from-available', this.handleDragStartFromAvailable)\n    document.removeEventListener('journey:drag-end-from-available', this.handleDragEndFromAvailable)\n  }\n\n  /**\n   * Handle drag start from available journeys\n   */\n  handleDragStartFromAvailable() {\n    this.isDraggingFromAvailable = true\n    this.logInfo('Drag started from available journeys')\n    \n    // Show drop zone indicator immediately when drag starts\n    this.showDropZoneIndicator()\n  }\n\n  /**\n   * Handle drag end from available journeys\n   */\n  handleDragEndFromAvailable() {\n    this.isDraggingFromAvailable = false\n    this.logInfo('Drag ended from available journeys')\n    \n    // Hide drop zone indicator when drag ends\n    this.hideDropZoneIndicator()\n  }\n\n  /**\n   * Show drop zone indicator when dragging from available journeys\n   */\n  showDropZoneIndicator() {\n    const dropZone = this.element.querySelector('#container_journeys')\n    if (dropZone) {\n      dropZone.classList.add('drag-target-ready')\n    }\n  }\n\n  /**\n   * Hide drop zone indicator\n   */\n  hideDropZoneIndicator() {\n    const dropZone = this.element.querySelector('#container_journeys')\n    if (dropZone) {\n      dropZone.classList.remove('drag-target-ready')\n      dropZone.classList.remove('drag-over')\n      dropZone.removeAttribute('data-journey-count')\n    }\n  }\n\n  /**\n   * Initialize Sortable.js for journey reordering\n   */\n  initializeSortable() {\n    const sortableContainer = this.element.querySelector('#container_journeys')\n    if (sortableContainer && !this.sortableInstance) {\n      this.sortableInstance = Sortable.create(sortableContainer, {\n        animation: 150,\n        ghostClass: 'sortable-ghost',\n        chosenClass: 'sortable-chosen',\n        dragClass: 'sortable-drag',\n        handle: '.sort-handle',\n        onStart: (evt) => {\n          this.isSorting = true\n        },\n        onEnd: (evt) => {\n          this.handleSortEnd(evt)\n          setTimeout(() => {\n            this.isSorting = false\n          }, 100)\n        }\n      })\n    }\n  }\n\n  /**\n   * Initialize Sortable.js for sub-container reordering\n   * Always enabled for reordering, but position numbers only shown for ordered containers\n   */\n  initializeSortableChildren() {\n    const sortableChildrenContainer = this.element.querySelector('#sub_containers_list')\n    if (sortableChildrenContainer && !this.sortableChildrenInstance) {\n      this.sortableChildrenInstance = Sortable.create(sortableChildrenContainer, {\n        animation: 150,\n        ghostClass: 'sortable-ghost',\n        chosenClass: 'sortable-chosen',\n        dragClass: 'sortable-drag',\n        handle: '.sort-handle',\n        onStart: (evt) => {\n          this.isSortingChildren = true\n        },\n        onEnd: (evt) => {\n          this.handleChildSortEnd(evt)\n          setTimeout(() => {\n            this.isSortingChildren = false\n          }, 100)\n        }\n      })\n    }\n  }\n\n  /**\n   * Initialize collapse state management\n   */\n  initializeCollapseStates() {\n    const collapseElements = this.element.querySelectorAll('[data-bs-toggle=\"collapse\"]')\n    \n    collapseElements.forEach(toggle => {\n      const targetId = toggle.dataset.bsTarget\n      const target = this.element.querySelector(targetId)\n      const icon = toggle.querySelector('.collapse-icon')\n      \n      if (target && icon) {\n        target.addEventListener('shown.bs.collapse', () => {\n          icon.textContent = 'expand_less'\n          this.saveCollapseState(targetId, true)\n        })\n        \n        target.addEventListener('hidden.bs.collapse', () => {\n          icon.textContent = 'expand_more'\n          this.saveCollapseState(targetId, false)\n        })\n      }\n    })\n    \n    this.restoreCollapseStates()\n    this.ensureJourneyManagementOpen()\n  }\n\n  /**\n   * Ensure journey management section is open by default\n   */\n  ensureJourneyManagementOpen() {\n    const journeyManagement = this.element.querySelector('#journeyManagementCollapse')\n    const toggle = this.element.querySelector('[data-bs-target=\"#journeyManagementCollapse\"]')\n    const icon = toggle?.querySelector('.collapse-icon')\n    \n    if (journeyManagement && !journeyManagement.classList.contains('show')) {\n      journeyManagement.classList.add('show')\n      if (icon) icon.textContent = 'expand_less'\n      this.saveCollapseState('#journeyManagementCollapse', true)\n    }\n  }\n\n  /**\n   * Save collapse state to persistent storage\n   * @param {string} targetId - CSS selector for the collapsible element\n   * @param {boolean} isOpen - true if expanded, false if collapsed\n   */\n  saveCollapseState(targetId, isOpen) {\n    if (this.stateManager) {\n      this.stateManager.setState(targetId, isOpen)\n    }\n  }\n\n  /**\n   * Restore collapse states from persistent storage\n   */\n  restoreCollapseStates() {\n    if (!this.stateManager) return\n    \n    const collapseElements = this.element.querySelectorAll('[data-bs-toggle=\"collapse\"]')\n    \n    collapseElements.forEach(toggle => {\n      const targetId = toggle.dataset.bsTarget\n      const target = this.element.querySelector(targetId)\n      const icon = toggle.querySelector('.collapse-icon')\n      \n      if (target && icon) {\n        // Get saved state (default: false = collapsed)\n        const isExpanded = this.stateManager.getState(targetId, false)\n        \n        // Apply the saved state\n        if (isExpanded) {\n          target.classList.add('show')\n          toggle.classList.remove('collapsed')\n          toggle.setAttribute('aria-expanded', 'true')\n          icon.textContent = 'expand_less'\n        } else {\n          target.classList.remove('show')\n          toggle.classList.add('collapsed')\n          toggle.setAttribute('aria-expanded', 'false')\n          icon.textContent = 'expand_more'\n        }\n      }\n    })\n  }\n\n  /**\n   * Debug method to inspect current collapse states\n   * Available in browser console\n   */\n  debugStates() {\n    if (this.stateManager) {\n      console.log('[ContainerDetailController] Debug Info:', this.stateManager.getDebugInfo())\n    }\n  }\n\n  /**\n   * Handle the end of sorting - update positions via StimulusReflex\n   */\n  handleSortEnd(evt) {\n    const journeyId = evt.item.dataset.journeyId\n    const newPosition = evt.newIndex + 1\n    const containerId = this.containerIdValue\n    \n    this.flashElement(evt.item, 'processing')\n    \n    this.stimulate('JourneyContainerReflex#reorder_journey', evt.item, journeyId, containerId, newPosition)\n      .then(() => {\n        this.flashElement(evt.item, 'success')\n      })\n      .catch(error => {\n        this.flashElement(evt.item, 'error')\n        this.initializeSortable()\n      })\n  }\n\n  /**\n   * Handle the end of child container sorting - update positions via StimulusReflex\n   */\n  handleChildSortEnd(evt) {\n    const childContainerId = evt.item.dataset.containerId\n    const newPosition = evt.newIndex + 1\n    const parentContainerId = this.containerIdValue\n    \n    this.flashElement(evt.item, 'processing')\n    \n    this.stimulate('JourneyContainerReflex#reorder_child_container', evt.item, childContainerId, parentContainerId, newPosition)\n      .then(() => {\n        this.flashElement(evt.item, 'success')\n      })\n      .catch(error => {\n        this.flashElement(evt.item, 'error')\n        this.initializeSortableChildren()\n      })\n  }\n\n  /**\n   * Handles the start of journey drag operation (from available journeys)\n   */\n  dragstart(event) {\n    const journeyId = event.currentTarget.dataset.journeyid\n    const containerId = this.containerIdValue\n    \n    event.dataTransfer.setData('journeyid', journeyId)\n    event.dataTransfer.setData('containerid', containerId)\n    event.dataTransfer.effectAllowed = 'move'\n    \n    event.currentTarget.style.opacity = '0.5'\n    \n    // Mark dragging state\n    this.isDraggingFromAvailable = true\n    \n    // Start auto-scroll monitoring\n    this.startAutoScroll()\n  }\n\n  /**\n   * Handles drag over the drop zone (assigned journeys container)\n   */\n  dragover(event) {\n    if (this.isSorting) {\n      return\n    }\n    \n    event.preventDefault()\n    event.dataTransfer.dropEffect = 'move'\n    \n    // Only show drop target overlay for external drags from available journeys\n    // Internal Sortable.js ordering should not show the overlay\n    if (!this.isDraggingFromAvailable) {\n      return\n    }\n    \n    const dropZone = event.currentTarget\n    dropZone.classList.add('drag-over')\n    \n    // Try to show journey count for multi-select\n    // Note: getData() may not work in dragover in all browsers, but we try anyway\n    try {\n      const journeyIdsData = event.dataTransfer.getData('journeyids')\n      if (journeyIdsData) {\n        const journeyIds = JSON.parse(journeyIdsData)\n        if (journeyIds.length > 1) {\n          dropZone.setAttribute('data-journey-count', journeyIds.length)\n        }\n      }\n    } catch (e) {\n      // Ignore errors - getData() might not work in dragover\n    }\n    \n    // Update auto-scroll based on mouse position\n    this.updateAutoScroll(event)\n  }\n\n  /**\n   * Handles drag leave from drop zone\n   */\n  dragleave(event) {\n    if (this.isSorting) {\n      return\n    }\n    \n    const dropZone = event.currentTarget\n    dropZone.classList.remove('drag-over')\n    // Don't remove drag-target-ready here - it should stay until drag ends globally\n  }\n\n  /**\n   * Handles the drop of journey onto container - using StimulusReflex\n   */\n  drop(event) {\n    if (this.isSorting) {\n      return\n    }\n    \n    event.preventDefault()\n    \n    const dropZone = event.currentTarget\n    \n    // Check for multi-select data first\n    const journeyIdsData = event.dataTransfer.getData('journeyids')\n    const journeyId = event.dataTransfer.getData('journeyid')\n    const containerId = this.containerIdValue\n    \n    let journeyIds = []\n    \n    if (journeyIdsData) {\n      // Multi-select drag\n      try {\n        journeyIds = JSON.parse(journeyIdsData)\n        this.logInfo(`Multi-select drop: ${journeyIds.length} journeys`)\n      } catch (e) {\n        this.logError('Failed to parse multi-select journey IDs', e)\n        dropZone.classList.remove('drag-over')\n        dropZone.removeAttribute('data-journey-count')\n        return\n      }\n    } else if (journeyId) {\n      // Single journey drag (fallback)\n      journeyIds = [journeyId]\n      this.logInfo(`Single journey drop: ${journeyId}`)\n    } else {\n      // No journey data - this is an internal Sortable.js drop, ignore\n      dropZone.classList.remove('drag-over')\n      dropZone.removeAttribute('data-journey-count')\n      return\n    }\n    \n    // Save filter state before StimulusReflex update\n    this.saveFilterState()\n    \n    dropZone.classList.remove('drag-over')\n    dropZone.removeAttribute('data-journey-count')\n    \n    // Flash all dragged elements\n    journeyIds.forEach(id => {\n      const draggedElement = this.element.querySelector(`[data-journeyid=\"${id}\"]`)\n      if (draggedElement) {\n        this.flashElement(draggedElement, 'processing')\n      }\n    })\n\n    // Use appropriate reflex method based on count\n    if (journeyIds.length === 1) {\n      this.stimulate('JourneyContainerReflex#add_journey', event.target, journeyIds[0], containerId)\n        .then(() => {\n          this.flashElement(dropZone, 'success')\n          this.clearDragState()\n          this.restoreFilterState()\n        })\n        .catch(error => {\n          this.handleDropError(journeyIds, error)\n        })\n    } else {\n      // Multi-journey add - pass as JSON string\n      this.stimulate('JourneyContainerReflex#add_multiple_journeys', event.target, JSON.stringify(journeyIds), containerId)\n        .then(() => {\n          this.flashElement(dropZone, 'success')\n          this.clearDragState()\n          this.restoreFilterState()\n          this.logInfo(`Successfully added ${journeyIds.length} journeys`)\n        })\n        .catch(error => {\n          this.handleDropError(journeyIds, error)\n        })\n    }\n  }\n  \n  /**\n   * Handles errors during drop operations\n   */\n  handleDropError(journeyIds, error) {\n    journeyIds.forEach(id => {\n      const draggedElement = this.element.querySelector(`[data-journeyid=\"${id}\"]`)\n      if (draggedElement) {\n        this.flashElement(draggedElement, 'error')\n      }\n    })\n    this.clearDragState()\n    this.restoreFilterState()\n    this.logError(`Failed to add ${journeyIds.length} journey(s)`, error)\n  }\n\n  /**\n   * Remove journey from container - using StimulusReflex\n   */\n  removeJourney(event) {\n    event.preventDefault()\n    \n    const journeyId = event.currentTarget.dataset.journeyid\n    const journeyElement = event.currentTarget.closest('.journey-pill')\n    \n    // Store pending delete info\n    this.pendingDeleteJourneyId = journeyId\n    this.pendingDeleteJourneyElement = journeyElement\n    \n    // Show delete modal\n    const modal = document.getElementById('delete_journey_from_container_modal')\n    if (modal) {\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    }\n  }\n  \n  /**\n   * Execute journey removal after modal confirmation\n   */\n  executeJourneyRemoval() {\n    const journeyId = this.pendingDeleteJourneyId\n    const journeyElement = this.pendingDeleteJourneyElement\n    const containerId = this.containerIdValue\n    \n    if (!journeyId) return\n    \n    // Save filter state before StimulusReflex update\n    this.saveFilterState()\n    \n    if (journeyElement) {\n      this.flashElement(journeyElement, 'processing')\n    }\n    \n    this.stimulate('JourneyContainerReflex#remove_journey', journeyElement, journeyId, containerId)\n      .then(() => {\n        if (journeyElement) {\n          this.flashElement(journeyElement, 'success')\n        }\n        // Restore filter state after DOM update\n        this.restoreFilterState()\n        // Clear pending state\n        this.pendingDeleteJourneyId = null\n        this.pendingDeleteJourneyElement = null\n      })\n      .catch(error => {\n        if (journeyElement) {\n          this.flashElement(journeyElement, 'error')\n        }\n        // Restore filter state even on error\n        this.restoreFilterState()\n        // Clear pending state\n        this.pendingDeleteJourneyId = null\n        this.pendingDeleteJourneyElement = null\n      })\n  }\n\n  /**\n   * Toggle selection of a single journey\n   */\n  toggleSelection(event) {\n    const checkbox = event.currentTarget\n    const journeyId = checkbox.dataset.journeyId\n    const containerItemId = checkbox.dataset.containerItemId\n    \n    if (checkbox.checked) {\n      // Add to selection\n      if (!this.selectedJourneyIds.includes(journeyId)) {\n        this.selectedJourneyIds.push(journeyId)\n        this.selectedContainerItemIds.push(containerItemId)\n      }\n    } else {\n      // Remove from selection\n      this.selectedJourneyIds = this.selectedJourneyIds.filter(id => id !== journeyId)\n      this.selectedContainerItemIds = this.selectedContainerItemIds.filter(id => id !== containerItemId)\n    }\n    \n    this.updateBatchActionsVisibility()\n    this.logInfo(`Selected: ${this.selectedJourneyIds.length} journey(s)`)\n  }\n\n  /**\n   * Update batch actions toolbar visibility based on selection\n   */\n  updateBatchActionsVisibility() {\n    const hasSelection = this.selectedJourneyIds.length > 0\n    \n    // Show/hide batch actions\n    if (this.hasBatchActionsTarget) {\n      this.batchActionsTarget.style.display = hasSelection ? 'flex' : 'none'\n      \n      // Initialize Bootstrap tooltips when showing\n      if (hasSelection) {\n        this.initializeTooltips()\n      }\n    }\n    \n    // Show/hide selection count badge\n    const selectionBadge = this.element.querySelector('#selection_count_badge')\n    if (selectionBadge) {\n      selectionBadge.style.display = hasSelection ? 'inline' : 'none'\n    }\n    \n    // Update selection count\n    if (this.hasSelectionCountTarget) {\n      this.selectionCountTarget.textContent = this.selectedJourneyIds.length\n    }\n  }\n\n  /**\n   * Initialize Bootstrap tooltips for batch action buttons\n   */\n  initializeTooltips() {\n    const tooltipTriggerList = this.element.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\n    tooltipTriggerList.forEach(tooltipTriggerEl => {\n      // Check if tooltip is already initialized\n      if (!tooltipTriggerEl._tooltip) {\n        tooltipTriggerEl._tooltip = new bootstrap.Tooltip(tooltipTriggerEl)\n      }\n    })\n  }\n\n  /**\n   * Clear all selections\n   */\n  clearSelection() {\n    this.selectedJourneyIds = []\n    this.selectedContainerItemIds = []\n    \n    // Uncheck all checkboxes\n    const checkboxes = this.element.querySelectorAll('.journey-select-checkbox')\n    checkboxes.forEach(checkbox => {\n      checkbox.checked = false\n    })\n    \n    this.updateBatchActionsVisibility()\n  }\n\n  /**\n   * Batch delete selected journeys with confirmation\n   */\n  batchDeleteJourneys(event) {\n    event.preventDefault()\n    \n    const selectedCount = this.selectedJourneyIds.length\n    if (selectedCount === 0) return\n    \n    // Update modal description with count\n    const modal = document.getElementById('batch_delete_journeys_modal')\n    if (modal) {\n      const descriptionElement = modal.querySelector('.modal-body p')\n      if (descriptionElement) {\n        const message = selectedCount === 1\n          ? 'M\u00F6chten Sie diesen Lernpfad wirklich aus dem Container entfernen?'\n          : `M\u00F6chten Sie diese ${selectedCount} Lernpfade wirklich aus dem Container entfernen?`\n        descriptionElement.textContent = message\n      }\n      \n      // Show modal\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    }\n  }\n  \n  /**\n   * Execute batch journey removal after modal confirmation\n   */\n  executeBatchJourneyRemoval() {\n    const selectedCount = this.selectedJourneyIds.length\n    if (selectedCount === 0) return\n    \n    // Save filter state before StimulusReflex update\n    this.saveFilterState()\n    \n    // Flash all selected journey items\n    this.selectedJourneyIds.forEach(id => {\n      const journeyElement = this.element.querySelector(`[data-journey-id=\"${id}\"]`)\n      if (journeyElement) {\n        this.flashElement(journeyElement.closest('.item-journey, .item-component'), 'processing')\n      }\n    })\n    \n    // Call reflex for batch operation\n    this.stimulate('JourneyContainerReflex#batch_remove_journeys', \n      this.element, \n      JSON.stringify(this.selectedJourneyIds), \n      this.containerIdValue)\n      .then(() => {\n        this.clearSelection()\n        this.restoreFilterState()\n        this.logInfo(`Successfully deleted ${selectedCount} journey(s)`)\n      })\n      .catch(error => {\n        this.restoreFilterState()\n        this.logError('Batch delete failed', error)\n      })\n  }\n\n  /**\n   * Batch toggle required status for selected journeys\n   */\n  batchToggleRequired(event) {\n    event.preventDefault()\n    \n    const selectedCount = this.selectedContainerItemIds.length\n    if (selectedCount === 0) return\n    \n    // Save filter state before StimulusReflex update\n    this.saveFilterState()\n    \n    // Flash all selected journey items\n    this.selectedJourneyIds.forEach(id => {\n      const journeyElement = this.element.querySelector(`[data-journey-id=\"${id}\"]`)\n      if (journeyElement) {\n        this.flashElement(journeyElement.closest('.item-journey, .item-component'), 'processing')\n      }\n    })\n    \n    // Call reflex for batch toggle\n    this.stimulate('JourneyContainerReflex#batch_toggle_required',\n      event.target,\n      JSON.stringify(this.selectedContainerItemIds),\n      this.containerIdValue)\n      .then(() => {\n        this.clearSelection()\n        this.restoreFilterState()\n        this.logInfo(`Successfully toggled required for ${selectedCount} journey(s)`)\n      })\n      .catch(error => {\n        this.restoreFilterState()\n        this.logError('Batch toggle required failed', error)\n      })\n  }\n\n  /**\n   * Filter journeys based on search input\n   */\n  filterJourneys(event) {\n    const searchTerm = event.target.value.toLowerCase()\n    this.currentSearchTerm = searchTerm\n    this.applyFilters()\n  }\n\n\n  /**\n   * Apply unified text search filter (searches in title, description, and tags)\n   * Search term is split into words, and each word is matched against tags\n   */\n  applyFilters() {\n    const searchTerm = this.currentSearchTerm || ''\n    const journeyItems = this.element.querySelectorAll('#available_journeys .item-unit')\n    \n    journeyItems.forEach(item => {\n      // Show all items if search is empty\n      if (searchTerm === '') {\n        item.style.display = 'block'\n        return\n      }\n      \n      // Search in title (h6), subtitle (p.subtitle), and all tags\n      const journeyTitle = item.querySelector('.unit-content h6')?.textContent?.toLowerCase() || ''\n      const journeySubtitle = item.querySelector('.unit-content p.subtitle')?.textContent?.toLowerCase() || ''\n      const journeyTags = Array.from(item.querySelectorAll('.journey-tag'))\n        .map(tag => tag.textContent.trim().toLowerCase())\n      \n      // Match if search term is in title or subtitle\n      const matchesTitle = journeyTitle.includes(searchTerm)\n      const matchesSubtitle = journeySubtitle.includes(searchTerm)\n      \n      // Split search term into words and check if any word matches any tag\n      const searchWords = searchTerm.split(/\\s+/).filter(word => word.length > 0)\n      const matchesAnyTag = searchWords.some(word => \n        journeyTags.some(tag => tag === word || tag.includes(word))\n      )\n      \n      if (matchesTitle || matchesSubtitle || matchesAnyTag) {\n        item.style.display = 'block'\n      } else {\n        item.style.display = 'none'\n      }\n    })\n  }\n\n\n  /**\n   * Modern visual feedback - flash elements with colors\n   */\n  flashElement(element, type = 'success') {\n    if (!element) {\n      return\n    }\n    \n    // Remove all flash classes first\n    element.classList.remove('flash-success', 'flash-error', 'flash-processing')\n    \n    // Force browser reflow to restart animation\n    void element.offsetHeight\n    \n    // Add the appropriate flash class\n    switch (type) {\n      case 'success':\n        element.classList.add('flash-success')\n        setTimeout(() => {\n          element.classList.remove('flash-success')\n        }, 1000) // Success flash for 1s\n        break\n      case 'error':\n        element.classList.add('flash-error')\n        setTimeout(() => {\n          element.classList.remove('flash-error')\n        }, 1000) // Error flash for 1s\n        break\n      case 'processing':\n        element.classList.add('flash-processing')\n        // Processing stays until success/error replaces it\n        break\n    }\n  }\n\n  /**\n   * Clear drag state visual feedback\n   */\n  clearDragState() {\n    const draggedElements = this.element.querySelectorAll('[style*=\"opacity\"]')\n    draggedElements.forEach(el => {\n      el.style.opacity = ''\n    })\n    \n    const dragOverElements = this.element.querySelectorAll('.drag-over')\n    dragOverElements.forEach(el => {\n      el.classList.remove('drag-over')\n    })\n    \n    // Reset drag state\n    this.isDraggingFromAvailable = false\n    \n    // Stop auto-scroll\n    this.stopAutoScroll()\n  }\n\n  /**\n   * Save filter state before StimulusReflex operations\n   */\n  saveFilterState() {\n    const filterInput = this.element.querySelector('input[type=\"search\"]')\n    if (filterInput) {\n      this.savedFilterValue = filterInput.value\n    }\n  }\n\n  /**\n   * Restore filter state after StimulusReflex operations\n   */\n  restoreFilterState() {\n    if (this.savedFilterValue !== undefined) {\n      setTimeout(() => {\n        const filterInput = this.element.querySelector('input[type=\"search\"]')\n        if (filterInput) {\n          filterInput.value = this.savedFilterValue\n          // Trigger the filter function to reapply filtering\n          this.filterJourneys({ target: filterInput })\n        }\n      }, 100)\n    }\n  }\n\n\n\n  /**\n   * Start auto-scroll monitoring during drag operations\n   */\n  startAutoScroll() {\n    this.autoScrollInterval = setInterval(() => {\n      this.performAutoScroll()\n    }, 16) // ~60fps\n  }\n\n  /**\n   * Stop auto-scroll monitoring\n   */\n  stopAutoScroll() {\n    if (this.autoScrollInterval) {\n      clearInterval(this.autoScrollInterval)\n      this.autoScrollInterval = null\n    }\n    this.autoScrollDirection = null\n  }\n\n  /**\n   * Update auto-scroll direction based on mouse position\n   */\n  updateAutoScroll(event) {\n    const scrollContainers = this.element.querySelectorAll('.journey-list-container')\n    this.autoScrollDirection = null\n    \n    scrollContainers.forEach(container => {\n      const rect = container.getBoundingClientRect()\n      const scrollThreshold = 50 // pixels from edge to trigger scroll\n      \n      if (event.clientY < rect.top + scrollThreshold) {\n        this.autoScrollDirection = { container, direction: 'up' }\n      } else if (event.clientY > rect.bottom - scrollThreshold) {\n        this.autoScrollDirection = { container, direction: 'down' }\n      }\n    })\n  }\n\n  /**\n   * Perform auto-scroll if needed\n   */\n  performAutoScroll() {\n    if (this.autoScrollDirection) {\n      const { container, direction } = this.autoScrollDirection\n      const scrollSpeed = 3 // pixels per frame\n      \n      if (direction === 'up') {\n        container.scrollTop = Math.max(0, container.scrollTop - scrollSpeed)\n      } else if (direction === 'down') {\n        container.scrollTop = Math.min(\n          container.scrollHeight - container.clientHeight,\n          container.scrollTop + scrollSpeed\n        )\n      }\n    }\n  }\n\n  /**\n   * Show delete modal for container\n   */\n  showDeleteModal(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    const button = event.currentTarget\n    this.pendingDeleteContainerId = button.dataset.containerId\n    this.pendingDeleteAssignmentsMessage = button.dataset.assignmentsMessage\n    \n    console.log('[ContainerDetail] Show delete modal for container:', this.pendingDeleteContainerId)\n    \n    // Open modal\n    const modal = document.getElementById('delete_container_modal')\n    if (modal) {\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    }\n  }\n\n  /**\n   * Handle delete-confirmed event from modal\n   */\n  async handleDeleteConfirmed(event) {\n    const modalId = event.detail.modalId\n    \n    // Handle first confirmation (delete_container_modal)\n    if (modalId === 'delete_container_modal' && this.pendingDeleteContainerId) {\n      const containerId = this.pendingDeleteContainerId\n      const assignmentsMessage = this.pendingDeleteAssignmentsMessage\n      \n      console.log('[ContainerDetail] Delete confirmed for container:', containerId)\n      \n      // Clear first stage state\n      this.pendingDeleteContainerId = null\n      this.pendingDeleteAssignmentsMessage = null\n      \n      // Setup event listeners for reflex responses\n      this.setupDeleteEventListeners(containerId, assignmentsMessage)\n      \n      // Call reflex without force parameter first\n      await this.stimulate('JourneyContainerReflex#delete_container', containerId, false)\n      return\n    }\n    \n    // Handle second confirmation (delete_container_with_assignments_modal)\n    if (modalId === 'delete_container_with_assignments_modal' && this.pendingForceDeleteContainerId) {\n      console.log('[ContainerDetail] Force delete confirmed for container:', this.pendingForceDeleteContainerId)\n      \n      const containerId = this.pendingForceDeleteContainerId\n      this.pendingForceDeleteContainerId = null\n      \n      // Call reflex WITH force parameter\n      await this.stimulate('JourneyContainerReflex#delete_container', containerId, true)\n      return\n    }\n    \n    // Handle journey removal confirmation\n    if (modalId === 'delete_journey_from_container_modal' && this.pendingDeleteJourneyId) {\n      console.log('[ContainerDetail] Journey removal confirmed:', this.pendingDeleteJourneyId)\n      this.executeJourneyRemoval()\n      return\n    }\n    \n    // Handle batch journey removal confirmation\n    if (modalId === 'batch_delete_journeys_modal' && this.selectedJourneyIds.length > 0) {\n      console.log('[ContainerDetail] Batch journey removal confirmed:', this.selectedJourneyIds.length)\n      this.executeBatchJourneyRemoval()\n      return\n    }\n  }\n\n  /**\n   * Handles container deletion with confirmation\n   * DEPRECATED - kept for backward compatibility\n   * Navigation Strategy:\n   * - JavaScript handles user confirmations\n   * - Reflex handles business logic\n   * - JavaScript listens to custom events from reflex\n   * - JavaScript performs navigation based on event data\n   * \n   * @param {Event} event - The click event\n   */\n  async deleteContainer(event) {\n    event.preventDefault()\n    \n    const containerId = event.currentTarget.dataset.containerId\n    const containerName = event.currentTarget.dataset.containerName\n    const confirmMessage = event.currentTarget.dataset.confirmMessage\n    const assignmentsMessage = event.currentTarget.dataset.assignmentsMessage\n    \n    // First confirmation\n    if (!confirm(confirmMessage)) {\n      return\n    }\n    \n    // Setup event listeners for reflex responses\n    this.setupDeleteEventListeners(containerId, assignmentsMessage)\n    \n    // Call reflex without force parameter first\n    await this.stimulate('JourneyContainerReflex#delete_container', containerId, false)\n  }\n\n  /**\n   * Setup event listeners for delete reflex responses\n   * @param {Number} containerId - The container ID being deleted\n   */\n  setupDeleteEventListeners(containerId, assignmentsMessageTemplate) {\n    // Listen for active assignments check\n    const assignmentsListener = (event) => {\n      const count = event.detail.count\n      const message = assignmentsMessageTemplate.replace('%{count}', count)\n      \n      // Update second modal description with count\n      const secondModal = document.getElementById('delete_container_with_assignments_modal')\n      if (secondModal) {\n        const descriptionElement = secondModal.querySelector('.modal-body p')\n        if (descriptionElement) {\n          descriptionElement.textContent = message\n        }\n      }\n      \n      // Store state for second confirmation\n      this.pendingForceDeleteContainerId = containerId\n      \n      // Show second modal\n      if (secondModal) {\n        const modalInstance = bootstrap.Modal.getOrCreateInstance(secondModal)\n        modalInstance.show()\n      }\n      \n      // Cleanup listener\n      document.removeEventListener('container:has-active-assignments', assignmentsListener)\n    }\n    \n    document.addEventListener('container:has-active-assignments', assignmentsListener)\n    \n    // Listen for successful deletion\n    const deletedListener = (event) => {\n      const parentId = event.detail.parent_id\n      \n      // Navigate based on parent_id\n      if (parentId) {\n        window.location.href = `/admin/journey_containers/${parentId}`\n      } else {\n        window.location.href = '/admin/journey_hierarchy'\n      }\n      \n      // Cleanup listener\n      document.removeEventListener('container:deleted', deletedListener)\n    }\n    \n    document.addEventListener('container:deleted', deletedListener)\n    \n    // Listen for deletion failure\n    const failedListener = (event) => {\n      const message = event.detail.message\n      alert(message || 'Deletion failed')\n      console.error('Container deletion failed:', message)\n      \n      // Cleanup listener\n      document.removeEventListener('container:delete-failed', failedListener)\n    }\n    \n    document.addEventListener('container:delete-failed', failedListener)\n  }\n} ", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n  static targets = [\"containerHeader\", \"subContainers\", \"actionButtons\"]\n  static values = { \n    containerId: Number,\n    level: Number,\n    expanded: Boolean \n  }\n\n  initialize() {\n    super.initialize()\n    this.useReflex = true\n  }\n\n  connect() {\n    super.connect()\n    this.initializeTooltips()\n    \n    // Store pending delete info\n    this.pendingDeleteContainerId = null\n    this.pendingDeleteAssignmentsMessage = null\n    this.pendingForceDeleteContainerId = null\n    \n    // Listen for delete confirmation\n    document.addEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n  }\n\n  disconnect() {\n    super.disconnect()\n    document.removeEventListener('delete-confirmed', this.handleDeleteConfirmed.bind(this))\n  }\n\n  /**\n   * Show delete modal for container\n   */\n  showDeleteModal(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    const button = event.currentTarget\n    this.pendingDeleteContainerId = button.dataset.containerId\n    this.pendingDeleteAssignmentsMessage = button.dataset.assignmentsMessage\n    \n    console.log('[ContainerNode] Show delete modal for container:', this.pendingDeleteContainerId)\n    \n    // Open modal\n    const modal = document.getElementById('delete_container_modal')\n    if (modal) {\n      const modalInstance = bootstrap.Modal.getOrCreateInstance(modal)\n      modalInstance.show()\n    }\n  }\n\n  /**\n   * Handle delete-confirmed event from modal\n   */\n  async handleDeleteConfirmed(event) {\n    const modalId = event.detail.modalId\n    \n    // Handle first confirmation (delete_container_modal)\n    if (modalId === 'delete_container_modal' && this.pendingDeleteContainerId) {\n      const containerId = this.pendingDeleteContainerId\n      const assignmentsMessage = this.pendingDeleteAssignmentsMessage\n      \n      console.log('[ContainerNode] Delete confirmed for container:', containerId)\n      \n      // Clear first stage state\n      this.pendingDeleteContainerId = null\n      this.pendingDeleteAssignmentsMessage = null\n      \n      // Setup event listeners for reflex responses\n      this.setupDeleteEventListeners(containerId, assignmentsMessage)\n      \n      // Call reflex without force parameter first\n      await this.stimulate('JourneyContainerReflex#delete_container', containerId, false)\n      return\n    }\n    \n    // Handle second confirmation (delete_container_with_assignments_modal)\n    if (modalId === 'delete_container_with_assignments_modal' && this.pendingForceDeleteContainerId) {\n      console.log('[ContainerNode] Force delete confirmed for container:', this.pendingForceDeleteContainerId)\n      \n      const containerId = this.pendingForceDeleteContainerId\n      this.pendingForceDeleteContainerId = null\n      \n      // Call reflex WITH force parameter\n      await this.stimulate('JourneyContainerReflex#delete_container', containerId, true)\n    }\n  }\n\n  /**\n   * Toggles the expansion state of sub-containers\n   */\n  toggleExpansion() {\n    this.expandedValue = !this.expandedValue\n    this.updateExpandedState()\n  }\n\n  /**\n   * Handles container edit action - opens modal\n   */\n  editContainer() {\n    const editUrl = `/admin/journey_containers/${this.containerIdValue}/edit`\n    \n    fetch(editUrl, {\n      method: 'GET',\n      headers: {\n        'Accept': 'text/vnd.turbo-stream.html',\n        'X-Requested-With': 'XMLHttpRequest'\n      }\n    })\n    .then(response => response.text())\n    .then(html => {\n      Turbo.renderStreamMessage(html)\n      this.showModalAfterRender()\n    })\n    .catch(error => {\n      console.error('Error opening edit modal:', error)\n    })\n  }\n\n  /**\n   * Handles add sub-container action - opens modal\n   */\n  addSubContainer() {\n    const newUrl = `/admin/journey_containers/new?parent_id=${this.containerIdValue}`\n    \n    fetch(newUrl, {\n      method: 'GET',\n      headers: {\n        'Accept': 'text/vnd.turbo-stream.html',\n        'X-Requested-With': 'XMLHttpRequest'\n      }\n    })\n    .then(response => response.text())\n    .then(html => {\n      Turbo.renderStreamMessage(html)\n      this.showModalAfterRender()\n    })\n    .catch(error => {\n      console.error('Error opening new container modal:', error)\n    })\n  }\n\n  /**\n   * Updates the visual expanded state\n   */\n  updateExpandedState() {\n    if (this.hasSubContainersTarget) {\n      this.subContainersTarget.classList.toggle('collapsed', !this.expandedValue)\n    }\n  }\n\n  /**\n   * Initializes Bootstrap tooltips for action buttons\n   */\n  initializeTooltips() {\n    if (this.hasActionButtonsTarget) {\n      const tooltips = this.actionButtonsTarget.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\n      tooltips.forEach(tooltip => {\n        new bootstrap.Tooltip(tooltip)\n      })\n    }\n  }\n\n  /**\n   * Opens the journey selection modal (delegated from container detail)\n   */\n  openJourneySelectionModal(event) {\n    const modalElement = document.querySelector('#journeySelectionModal')\n    \n    if (!modalElement) {\n      return\n    }\n    \n    try {\n      if (typeof bootstrap !== 'undefined' && bootstrap.Modal) {\n        const modal = new bootstrap.Modal(modalElement)\n        modal.show()\n      } else {\n        modalElement.classList.add('show')\n        modalElement.style.display = 'block'\n        document.body.classList.add('modal-open')\n        \n        const backdrop = document.createElement('div')\n        backdrop.className = 'modal-backdrop fade show'\n        document.body.appendChild(backdrop)\n      }\n    } catch (error) {\n      console.error(\"Error opening modal:\", error)\n    }\n  }\n\n  /**\n   * Shows modal after DOM has been updated by Turbo Stream\n   */\n  showModalAfterRender() {\n    requestAnimationFrame(() => {\n      const modal = document.querySelector('#modal_content .modal')\n      if (modal) {\n        const bootstrapModal = new bootstrap.Modal(modal)\n        bootstrapModal.show()\n      } else {\n        setTimeout(() => {\n          const modal = document.querySelector('#modal_content .modal')\n          if (modal) {\n            const bootstrapModal = new bootstrap.Modal(modal)\n            bootstrapModal.show()\n          }\n        }, 100)\n      }\n    })\n  }\n\n  /**\n   * Handles container deletion with confirmation\n   * Navigation Strategy:\n   * - JavaScript handles user confirmations\n   * - Reflex handles business logic\n   * - JavaScript listens to custom events from reflex\n   * - JavaScript performs navigation based on event data\n   * \n   * @param {Event} event - The click event\n   */\n  async deleteContainer(event) {\n    event.preventDefault()\n    \n    const containerId = event.currentTarget.dataset.containerId\n    const containerName = event.currentTarget.dataset.containerName\n    const confirmMessage = event.currentTarget.dataset.confirmMessage\n    const assignmentsMessage = event.currentTarget.dataset.assignmentsMessage\n    \n    // First confirmation\n    if (!confirm(confirmMessage)) {\n      return\n    }\n    \n    // Setup event listeners for reflex responses\n    this.setupDeleteEventListeners(containerId, assignmentsMessage)\n    \n    // Call reflex without force parameter first\n    await this.stimulate('JourneyContainerReflex#delete_container', containerId, false)\n  }\n\n  /**\n   * Setup event listeners for delete reflex responses\n   * @param {Number} containerId - The container ID being deleted\n   */\n  setupDeleteEventListeners(containerId, assignmentsMessageTemplate) {\n    // Listen for active assignments check\n    const assignmentsListener = (event) => {\n      const count = event.detail.count\n      const message = assignmentsMessageTemplate.replace('%{count}', count)\n      \n      // Update second modal description with count\n      const secondModal = document.getElementById('delete_container_with_assignments_modal')\n      if (secondModal) {\n        const descriptionElement = secondModal.querySelector('.modal-body p')\n        if (descriptionElement) {\n          descriptionElement.textContent = message\n        }\n      }\n      \n      // Store state for second confirmation\n      this.pendingForceDeleteContainerId = containerId\n      \n      // Show second modal\n      if (secondModal) {\n        const modalInstance = bootstrap.Modal.getOrCreateInstance(secondModal)\n        modalInstance.show()\n      }\n      \n      // Cleanup listener\n      document.removeEventListener('container:has-active-assignments', assignmentsListener)\n    }\n    \n    document.addEventListener('container:has-active-assignments', assignmentsListener)\n    \n    // Listen for successful deletion\n    const deletedListener = (event) => {\n      const parentId = event.detail.parent_id\n      \n      // Navigate based on parent_id\n      if (parentId) {\n        window.location.href = `/admin/journey_containers/${parentId}`\n      } else {\n        window.location.href = '/admin/journey_hierarchy'\n      }\n      \n      // Cleanup listener\n      document.removeEventListener('container:deleted', deletedListener)\n    }\n    \n    document.addEventListener('container:deleted', deletedListener)\n    \n    // Listen for deletion failure\n    const failedListener = (event) => {\n      const message = event.detail.message\n      alert(message || 'Deletion failed')\n      console.error('Container deletion failed:', message)\n      \n      // Cleanup listener\n      document.removeEventListener('container:delete-failed', failedListener)\n    }\n    \n    document.addEventListener('container:delete-failed', failedListener)\n  }\n} ", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n  static values = { level: Number }\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n  }\n\n  connect() {\n    super.connect()\n    this.logInfo(`Level card connected - Level: ${this.levelValue}`)\n    this.initializeHoverEffects()\n  }\n\n  /**\n   * Initializes hover effects for the level card\n   * @returns {void}\n   */\n  initializeHoverEffects() {\n    this.element.addEventListener('mouseenter', this.onCardHover.bind(this))\n    this.element.addEventListener('mouseleave', this.onCardLeave.bind(this))\n  }\n\n  /**\n   * Handles card hover event\n   * @param {Event} event - The hover event\n   * @returns {void}\n   */\n  onCardHover(event) {\n    event.currentTarget.classList.add('card-hover-active')\n  }\n\n  /**\n   * Handles card leave event\n   * @param {Event} event - The leave event\n   * @returns {void}\n   */\n  onCardLeave(event) {\n    event.currentTarget.classList.remove('card-hover-active')\n  }\n} ", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\n\n/**\n * Stimulus controller for the Bulk Rename Modal\n * Handles form validation and regex warning display\n */\nexport default class extends ApplicationController {\n  static targets = [\"submitButton\", \"regexWarning\"]\n\n  /**\n   * Initialize controller\n   */\n  initialize() {\n    super.initialize()\n  }\n\n  /**\n   * Connect lifecycle hook\n   */\n  connect() {\n    super.connect()\n    // Initial state: button is disabled until user types in search term\n    if (this.hasSubmitButtonTarget) {\n      this.submitButtonTarget.disabled = true\n    }\n    \n    // Focus search term field when modal opens\n    this.element.addEventListener('shown.bs.modal', () => {\n      const searchTermInput = this.element.querySelector('input[name=\"bulk_rename[search_term]\"]')\n      if (searchTermInput) {\n        searchTermInput.focus()\n      }\n    })\n  }\n\n  /**\n   * Validates the form and enables/disables submit button\n   * Submit is only enabled if search term has a value\n   * Replacement text can be empty (will delete search term)\n   */\n  validateForm(event) {\n    const searchTerm = event ? event.currentTarget.value.trim() : ''\n    \n    if (this.hasSubmitButtonTarget) {\n      this.submitButtonTarget.disabled = searchTerm.length === 0\n    }\n  }\n\n  /**\n   * Toggles regex warning visibility based on checkbox state\n   * @param {Event} event - The change event from the checkbox\n   */\n  toggleRegexWarning(event) {\n    const useRegex = event.currentTarget.checked\n    \n    if (this.hasRegexWarningTarget) {\n      if (useRegex) {\n        this.regexWarningTarget.classList.remove('d-none')\n      } else {\n        this.regexWarningTarget.classList.add('d-none')\n      }\n    }\n  }\n}\n\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\nimport { CollapseStateManager } from \"../../../javascript/controllers/collapse_state_manager\"\n\nexport default class extends ApplicationController {\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false // For StimulusReflex filter operations\n  }\n\n  connect() {\n    super.connect()\n    this.initializeStateManager()\n    this.initializeCollapseStates()\n    this.stopLoading()\n  }\n\n  /**\n   * Initialize the collapse state manager for journey sections\n   */\n  initializeStateManager() {\n    // Enable debug in development\n    const isDebug = document.body.dataset.environment === 'development'\n    \n    // Detect context to avoid localStorage key conflicts\n    const context = this.detectContext()\n    const storageKey = `journeys_sections_${context}_collapse_states`\n    \n    this.stateManager = new CollapseStateManager(storageKey, {\n      debug: isDebug,\n      maxAge: 30 // Keep states for 30 days\n    })\n    \n    if (isDebug) {\n      console.log(`[ContainerSectionController] Using storage key: ${storageKey}`)\n    }\n  }\n\n  /**\n   * Detect the current context to create unique storage keys\n   * @returns {string} Context identifier (e.g., 'index', 'my_journeys')\n   */\n  detectContext() {\n    // Check URL path to determine context\n    const path = window.location.pathname\n    \n    if (path.includes('/profile/my_journeys')) {\n      return 'my_journeys'\n    } else if (path.includes('/journeys')) {\n      return 'index'\n    } else {\n      // Fallback: use page title or other identifier\n      return 'default'\n    }\n  }\n\n  /**\n   * Initialize collapse state management for all collapsible sections\n   */\n  initializeCollapseStates() {\n    // Use the generic method from CollapseStateManager with CSS-based icons\n    this.stateManager.initializeCollapseStates(this.element, {\n      useManualIcons: false,\n      getDefaultState: (targetId) => false // Container sections default to collapsed\n    })\n  }\n\n  /**\n   * Show container detail page\n   */\n  showContainer(event) {\n    const currentTarget = event.currentTarget\n    event.preventDefault()\n    event.stopPropagation()\n    this.startLoading()\n    // console.log(`containerUrlValue: ${currentTarget.dataset.containerUrl}` )\n    window.location.href = currentTarget.dataset.containerUrl\n  }\n\n  /**\n   * Debug method to inspect current collapse states\n   * Available in browser console\n   */\n  debugStates() {\n    if (this.stateManager) {\n      console.log('[ContainerSectionController] Debug Info:', this.stateManager.getDebugInfo())\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// ViewComponent Stimulus controller for Journey Visibility and Usage Type selection\n// Handles the interaction between multi-state buttons and hidden form fields\nexport default class extends Controller {\n  static targets = [\"visibility\", \"usageType\", \"visibilitySection\"]\n  static values = { journeyId: Number }\n\n  connect() {\n    console.log(\"JourneyVisibilityAndUsage controller connected for journey:\", this.journeyIdValue)\n    \n    // Check initial state - if module is already selected, disable visibility\n    if (this.hasUsageTypeTarget && this.usageTypeTarget.value === 'module') {\n      this.disableVisibilitySection()\n    }\n  }\n\n  /**\n   * Handle visibility change from multi-state button\n   * Updates the hidden visibility field with the selected value\n   * @param {Event} event - Click event from multi-state button\n   */\n  changeVisibility(event) {\n    \n    const selectedValue = event.currentTarget.dataset.visibility\n    console.log(\"Changing visibility to:\", selectedValue)\n    \n    if (this.hasVisibilityTarget && selectedValue) {\n      this.visibilityTarget.value = selectedValue\n      console.log(\"Updated visibility field to:\", this.visibilityTarget.value)\n    }\n  }\n\n  /**\n   * Handle usage type change from multi-state button\n   * Updates the hidden usage_type field with the selected value\n   * @param {Event} event - Click event from multi-state button\n   */\n  changeUsageType(event) {\n    \n    const selectedValue = event.currentTarget.dataset.usageType\n    console.log(\"Changing usage type to:\", selectedValue)\n    \n    if (this.hasUsageTypeTarget && selectedValue) {\n      this.usageTypeTarget.value = selectedValue\n      console.log(\"Updated usage type field to:\", this.usageTypeTarget.value)\n    }\n    \n    // Toggle visibility section based on usage type\n    this.toggleVisibilitySection(selectedValue)\n  }\n\n  /**\n   * Toggle visibility section based on usage type\n   * Modules (:module = '2') don't have visibility settings\n   * @param {string} usageType - The selected usage type value\n   */\n  toggleVisibilitySection(usageType) {\n    if (usageType === 'module') { // Module\n      this.disableVisibilitySection()\n    } else {\n      this.enableVisibilitySection()\n    }\n  }\n\n  /**\n   * Disable the visibility section using Bootstrap-compliant patterns\n   * Applies disabled attribute to inputs, disabled class to labels, and pointer-events: none\n   */\n  disableVisibilitySection() {\n    if (!this.hasVisibilitySectionTarget) return\n    \n    const btnGroup = this.visibilitySectionTarget.querySelector('.btn-group')\n    if (!btnGroup) return\n    \n    const radioInputs = btnGroup.querySelectorAll('input[type=\"radio\"]')\n    const labels = btnGroup.querySelectorAll('label.btn')\n    \n    // Bootstrap-Standard: disabled Attribut f\u00FCr Radio Inputs\n    radioInputs.forEach(input => {\n      input.disabled = true\n      input.setAttribute('aria-disabled', 'true')\n    })\n    \n    // Bootstrap-Standard: .disabled Klasse f\u00FCr Labels\n    labels.forEach(label => {\n      label.classList.add('disabled')\n      label.style.pointerEvents = 'none'\n    })\n    \n    // Gesamte Button-Group visuell kennzeichnen\n    btnGroup.classList.add('disabled')\n    btnGroup.setAttribute('aria-disabled', 'true')\n    \n    console.log(\"Visibility section disabled (module selected)\")\n  }\n\n  /**\n   * Enable the visibility section by removing all disable-related attributes and classes\n   * Reverses all changes made by disableVisibilitySection()\n   */\n  enableVisibilitySection() {\n    if (!this.hasVisibilitySectionTarget) return\n    \n    const btnGroup = this.visibilitySectionTarget.querySelector('.btn-group')\n    if (!btnGroup) return\n    \n    const radioInputs = btnGroup.querySelectorAll('input[type=\"radio\"]')\n    const labels = btnGroup.querySelectorAll('label.btn')\n    \n    // Remove disabled attributes from radio inputs\n    radioInputs.forEach(input => {\n      input.disabled = false\n      input.removeAttribute('aria-disabled')\n    })\n    \n    // Remove disabled classes and styles from labels\n    labels.forEach(label => {\n      label.classList.remove('disabled')\n      label.style.pointerEvents = ''\n    })\n    \n    // Remove disabled state from button group\n    btnGroup.classList.remove('disabled')\n    btnGroup.removeAttribute('aria-disabled')\n    \n    console.log(\"Visibility section enabled\")\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\nimport { CollapseStateManager } from \"../../../javascript/controllers/collapse_state_manager\"\n\nexport default class extends ApplicationController {\n  static targets = [\"loadingState\"]\n\n  initialize() {\n    super.initialize()\n    this.useReflex = true // For StimulusReflex filter operations\n  }\n\n  connect() {\n    super.connect()\n    this.initializeStateManager()\n    this.initializeCollapseStates()\n    this.stopLoading()\n  }\n\n  /**\n   * Initialize the collapse state manager for level explorer\n   */\n  initializeStateManager() {\n    // Enable debug in development\n    const isDebug = document.body.dataset.environment === 'development'\n    \n    // Detect context to avoid localStorage key conflicts\n    const context = this.detectContext()\n    const storageKey = `journeys_level_explorer_${context}_collapse_states`\n    \n    this.stateManager = new CollapseStateManager(storageKey, {\n      debug: isDebug,\n      maxAge: 30 // Keep states for 30 days\n    })\n    \n    if (isDebug) {\n      console.log(`[LevelExplorerController] Using storage key: ${storageKey}`)\n    }\n  }\n\n  /**\n   * Detect the current context to create unique storage keys\n   * @returns {string} Context identifier (e.g., 'index', 'my_journeys')\n   */\n  detectContext() {\n    // Check URL path to determine context\n    const path = window.location.pathname\n    \n    if (path.includes('/profile/my_journeys')) {\n      return 'my_journeys'\n    } else if (path.includes('/journeys')) {\n      return 'index'\n    } else {\n      // Fallback: use page title or other identifier\n      return 'default'\n    }\n  }\n\n  /**\n   * Initialize collapse state management for all collapsible sections\n   */\n  initializeCollapseStates() {\n    // Use the generic method from CollapseStateManager with CSS-based icons\n    this.stateManager.initializeCollapseStates(this.element, {\n      useManualIcons: false,\n      getDefaultState: (targetId) => {\n        // Journey results and containers default to expanded\n        return targetId === '#journey-results-section' || targetId === '#containers-content'\n      }\n    })\n  }\n\n  // Change sort criteria (StimulusReflex)\n  changeSortCriteria(event) {\n    event.preventDefault()\n    this.startLoading()\n    this.stimulate('JourneyFilterReflex#change_sort', event.currentTarget).then(() => {\n      this.stopLoading()\n    })\n  }\n\n  // Toggle category (StimulusReflex)\n  toggleCategory(event) {\n    event.preventDefault()\n    this.startLoading()\n    this.stimulate('JourneyFilterReflex#toggle_category', event.currentTarget).then(() => {\n      this.stopLoading()\n    })\n  }\n\n  /**\n   * Debug method to inspect current collapse states\n   * Available in browser console\n   */\n  debugStates() {\n    if (this.stateManager) {\n      console.log('[LevelExplorerController] Debug Info:', this.stateManager.getDebugInfo())\n    }\n  }\n\n  disconnect() {\n    this.logInfo('LevelExplorer disconnected')\n    super.disconnect()\n  }\n}\n", "import ApplicationController from \"../../../../javascript/controllers/application_controller\"\nimport { CollapseStateManager } from \"../../../../javascript/controllers/collapse_state_manager\"\n\nexport default class extends ApplicationController {\n\n  initialize() {\n    super.initialize()\n    this.useReflex = true  // Need StimulusReflex for UserReflex#per_page\n  }\n\n  connect() {\n    super.connect()\n    this.initializeStateManager()\n    this.initializeCollapseStates()\n    this.stopLoading()\n  }\n\n  /**\n   * Initialize the collapse state manager for unassigned journeys\n   */\n  initializeStateManager() {\n    // Enable debug in development\n    const isDebug = document.body.dataset.environment === 'development'\n    \n    // Detect context to avoid localStorage key conflicts\n    const context = this.detectContext()\n    const storageKey = `unassigned_journeys_${context}_collapse_states`\n    \n    this.stateManager = new CollapseStateManager(storageKey, {\n      debug: isDebug,\n      maxAge: 30 // Keep states for 30 days\n    })\n    \n    if (isDebug) {\n      console.log(`[UnassignedJourneysController] Using storage key: ${storageKey}`)\n    }\n  }\n\n  /**\n   * Detect the current context to create unique storage keys\n   * @returns {string} Context identifier (e.g., 'index', 'my_journeys')\n   */\n  detectContext() {\n    // Check URL path to determine context\n    const path = window.location.pathname\n    \n    if (path.includes('/profile/my_journeys')) {\n      return 'my_journeys'\n    } else if (path.includes('/journeys')) {\n      return 'index'\n    } else {\n      // Fallback: use page title or other identifier\n      return 'default'\n    }\n  }\n\n  /**\n   * Initialize collapse state management for all collapsible sections\n   */\n  initializeCollapseStates() {\n    // Use the generic method from CollapseStateManager with CSS-based icons\n    this.stateManager.initializeCollapseStates(this.element, {\n      useManualIcons: false,\n      getDefaultState: (targetId) => true // Unassigned journeys default to expanded\n    })\n  }\n\n  /**\n   * Navigate to specific page (called from pagination links)\n   * @param {Event} event The event object\n   */\n  navigatePage(event) {\n    event.preventDefault()\n    this.startLoading()\n    \n    const page = parseInt(event.currentTarget.dataset.page)\n    \n    // Get current filter state from journey-filter controller\n    const filterController = this.getFilterController()\n    if (filterController) {\n      // Update URL with current filter state + new page\n      filterController.updateUrlWithCurrentState(null, page)\n      \n      // Navigate to new URL (same as other filter actions)\n      // This triggers a full page reload with the new filters applied\n      window.location.href = window.location.href\n    } else {\n      console.error('FilterController not found for pagination')\n      this.stopLoading()\n    }\n  }\n\n  /**\n   * Change per-page setting (called from per-page selector)\n   * @param {Event} event The event object\n   */\n  changePerPage(event) {\n    event.preventDefault()\n    this.startLoading()\n    \n    const perPage = event.currentTarget.value\n    \n    // First update the user profile via UserReflex (same as standard pagination)\n    this.stimulate('UserReflex#per_page', event.currentTarget, perPage)\n      .then(() => {\n        // After profile is updated, get current filter state and reload\n        const filterController = this.getFilterController()\n        if (filterController) {\n          // Update URL with current filter state + reset to page 1\n          filterController.updateUrlWithCurrentState(null, 1)\n          \n          // Navigate to new URL (triggers page reload with new per-page setting)\n          window.location.href = window.location.href\n        } else {\n          // Fallback: just reload\n          window.location.reload()\n        }\n      })\n      .catch((error) => {\n        console.error('Per-page update failed:', error)\n        this.stopLoading()\n      })\n  }\n\n  /**\n   * Get the journey-filter controller instance\n   * @returns {Object|null} The filter controller instance\n   */\n  getFilterController() {\n    const filterElement = document.querySelector('[data-controller~=\"journey-filter\"]')\n    if (filterElement) {\n      return this.application.getControllerForElementAndIdentifier(filterElement, 'journey-filter')\n    }\n    return null\n  }\n\n  /**\n   * Debug method to inspect current collapse states\n   * Available in browser console\n   */\n  debugStates() {\n    if (this.stateManager) {\n      console.log('[UnassignedJourneysController] Debug Info:', this.stateManager.getDebugInfo())\n    }\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\nimport Sortable from \"sortablejs\"\n\nexport default class extends ApplicationController {\n  static targets = [\"orderedList\", \"unorderedList\", \"orderedIdsField\"]\n\n  /**\n   * Initializes linked sortable lists and syncs hidden order field.\n   * @returns {void}\n   */\n  connect() {\n    super.connect()\n    this.currentFilterTerm = \"\"\n    this.initializeSortableLists()\n    this.syncOrderedIds()\n  }\n\n  /**\n   * Destroys sortable instances on disconnect.\n   * @returns {void}\n   */\n  disconnect() {\n    super.disconnect()\n    this.orderedSortable?.destroy()\n    this.unorderedSortable?.destroy()\n  }\n\n  /**\n   * Initializes drag and drop for sorted and unsorted lists.\n   * @returns {void}\n   */\n  initializeSortableLists() {\n    const sharedOptions = {\n      group: \"root-container-order\",\n      animation: 150,\n      ghostClass: \"sortable-ghost\",\n      chosenClass: \"sortable-chosen\",\n      dragClass: \"sortable-drag\",\n      onEnd: () => this.syncOrderedIds()\n    }\n\n    this.orderedSortable = Sortable.create(this.orderedListTarget, sharedOptions)\n    this.unorderedSortable = Sortable.create(this.unorderedListTarget, sharedOptions)\n  }\n\n  /**\n   * Updates hidden field with current sorted container ids.\n   * @returns {void}\n   */\n  syncOrderedIds() {\n    const orderedIds = Array.from(this.orderedListTarget.querySelectorAll(\"li\"))\n      .map((item) => item.dataset.containerId)\n      .filter((value) => value && value.length > 0)\n\n    this.orderedIdsFieldTarget.value = orderedIds.join(\",\")\n    this.applyUnsortedFilter()\n  }\n\n  /**\n   * Filters unsorted containers by name.\n   * @param {Event} event - Input event from unsorted search field.\n   * @returns {void}\n   */\n  filterUnsortedContainers(event) {\n    this.currentFilterTerm = (event.target.value || \"\").toLowerCase().trim()\n    this.applyUnsortedFilter()\n  }\n\n  /**\n   * Applies current text filter to unsorted list items.\n   * @returns {void}\n   */\n  applyUnsortedFilter() {\n    const filterTerm = this.currentFilterTerm\n    const unsortedItems = this.unorderedListTarget.querySelectorAll(\"li\")\n\n    unsortedItems.forEach((item) => {\n      if (filterTerm === \"\") {\n        item.style.setProperty(\"display\", \"flex\", \"important\")\n        return\n      }\n\n      const containerName = (item.dataset.containerName || \"\").toLowerCase()\n      const containerTags = (item.dataset.containerTags || \"\").toLowerCase()\n      const searchableText = `${containerName} ${containerTags}`.trim()\n\n      if (searchableText.includes(filterTerm)) {\n        item.style.setProperty(\"display\", \"flex\", \"important\")\n      } else {\n        item.style.setProperty(\"display\", \"none\", \"important\")\n      }\n    })\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nconst REVEAL_MS = 3000\n\nexport default class extends ApplicationController {\n  static targets = ['toggle']\n\n  static values = {\n    expandLabel: String,\n    closeLabel: String\n  }\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n    this.revealTimer = null\n    this.previousBodyOverflow = null\n  }\n\n  connect() {\n    super.connect()\n    this.tooltip = bootstrap.Tooltip.getOrCreateInstance(this.toggleTarget, {\n      boundary: 'window',\n      placement: 'left'\n    })\n    this.reveal()\n  }\n\n  disconnect() {\n    this.clearRevealTimer()\n    this.disposeTooltip()\n    this.unlockBodyScroll()\n    super.disconnect()\n  }\n\n  /**\n   * Toggles the package frame between the column and the full viewport.\n   * @param {Event} event - Click from the corner button\n   * @returns {void}\n   */\n  toggle(event) {\n    event.preventDefault()\n\n    if (this.element.classList.contains('is-expanded')) {\n      this.close()\n      return\n    }\n\n    this.open()\n  }\n\n  /**\n   * Expands the package frame over the browser viewport.\n   * @returns {void}\n   */\n  open() {\n    this.element.classList.add('is-expanded')\n    this.toggleTarget.setAttribute('aria-expanded', 'true')\n    this.applyLabel(this.closeLabelValue)\n    this.lockBodyScroll()\n    this.reveal()\n  }\n\n  /**\n   * Returns the package frame to the work-through column.\n   * @param {Event} [event] - Optional Escape or click event\n   * @returns {void}\n   */\n  close(event) {\n    if (!this.element.classList.contains('is-expanded')) {\n      return\n    }\n\n    event?.preventDefault()\n    this.element.classList.remove('is-expanded')\n    this.toggleTarget.setAttribute('aria-expanded', 'false')\n    this.applyLabel(this.expandLabelValue)\n    this.unlockBodyScroll()\n    this.reveal()\n  }\n\n  /**\n   * Sets the corner button label and recreates its tooltip for that text.\n   * @param {string} label - Visible tooltip and accessible name\n   * @returns {void}\n   */\n  applyLabel(label) {\n    this.disposeTooltip()\n    this.toggleTarget.setAttribute('aria-label', label)\n    this.toggleTarget.setAttribute('title', label)\n    this.tooltip = new bootstrap.Tooltip(this.toggleTarget, {\n      boundary: 'window',\n      placement: 'left'\n    })\n  }\n\n  /**\n   * Removes the Bootstrap tooltip instance from the corner button.\n   * @returns {void}\n   */\n  disposeTooltip() {\n    this.tooltip?.hide()\n    this.tooltip?.dispose()\n    this.tooltip = null\n  }\n\n  /**\n   * Shows the corner button fully, then dims it after three seconds.\n   * @returns {void}\n   */\n  reveal() {\n    if (!this.hasToggleTarget) {\n      return\n    }\n\n    this.toggleTarget.classList.remove('is-dimmed')\n    this.clearRevealTimer()\n    this.revealTimer = window.setTimeout(() => {\n      this.toggleTarget.classList.add('is-dimmed')\n      this.revealTimer = null\n    }, REVEAL_MS)\n  }\n\n  /**\n   * Cancels a pending dim of the corner button.\n   * @returns {void}\n   */\n  clearRevealTimer() {\n    if (this.revealTimer === null) {\n      return\n    }\n\n    window.clearTimeout(this.revealTimer)\n    this.revealTimer = null\n  }\n\n  /**\n   * Stops the page behind the expanded frame from scrolling.\n   * @returns {void}\n   */\n  lockBodyScroll() {\n    if (this.previousBodyOverflow !== null) {\n      return\n    }\n\n    this.previousBodyOverflow = document.body.style.overflow\n    document.body.style.overflow = 'hidden'\n  }\n\n  /**\n   * Restores page scrolling after the expanded frame closes.\n   * @returns {void}\n   */\n  unlockBodyScroll() {\n    if (this.previousBodyOverflow === null) {\n      return\n    }\n\n    document.body.style.overflow = this.previousBodyOverflow\n    this.previousBodyOverflow = null\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static targets = [\"source\", \"stage\", \"slideshow\", \"overlay\", \"openButton\"]\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n    this.originalParent = null\n    this.previousBodyOverflow = null\n  }\n\n  open(event) {\n    event.preventDefault()\n\n    if (!this.hasSlideshowTarget || !this.hasStageTarget || !this.hasOverlayTarget) {\n      return\n    }\n\n    this.originalParent = this.slideshowTarget.parentElement\n    this.markSlideshowForMove()\n    this.stageTarget.appendChild(this.slideshowTarget)\n    this.overlayTarget.classList.remove('hidden')\n    this.overlayTarget.setAttribute('aria-hidden', 'false')\n    this.lockBodyScroll()\n    this.openButtonTarget?.setAttribute('aria-expanded', 'true')\n    this.unmarkSlideshowForMove()\n  }\n\n  close(event) {\n    event?.preventDefault()\n\n    if (!this.originalParent || !this.hasSlideshowTarget || !this.hasOverlayTarget) {\n      return\n    }\n\n    this.markSlideshowForMove()\n    this.originalParent.appendChild(this.slideshowTarget)\n    this.overlayTarget.classList.add('hidden')\n    this.overlayTarget.setAttribute('aria-hidden', 'true')\n    this.unlockBodyScroll()\n    this.openButtonTarget?.setAttribute('aria-expanded', 'false')\n    this.unmarkSlideshowForMove()\n  }\n\n  stopPropagation(event) {\n    event.stopPropagation()\n  }\n\n  disconnect() {\n    if (this.hasSlideshowTarget && this.originalParent && this.slideshowTarget.parentElement !== this.originalParent) {\n      this.originalParent.appendChild(this.slideshowTarget)\n    }\n\n    this.unlockBodyScroll()\n    super.disconnect()\n  }\n\n  markSlideshowForMove() {\n    this.slideshowTarget.dataset.preserveOnMove = 'true'\n  }\n\n  unmarkSlideshowForMove() {\n    requestAnimationFrame(() => {\n      delete this.slideshowTarget.dataset.preserveOnMove\n    })\n  }\n\n  lockBodyScroll() {\n    if (this.previousBodyOverflow !== null) {\n      return\n    }\n\n    this.previousBodyOverflow = document.body.style.overflow\n    document.body.style.overflow = 'hidden'\n    document.body.classList.add('slide-overlay-open')\n  }\n\n  unlockBodyScroll() {\n    if (this.previousBodyOverflow === null) {\n      return\n    }\n\n    document.body.style.overflow = this.previousBodyOverflow\n    document.body.classList.remove('slide-overlay-open')\n    this.previousBodyOverflow = null\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\n\n/**\n * Modals::Delete Stimulus Controller\n * \n * @description\n * Manages delete confirmation modals with Bootstrap 5 integration.\n * Handles show/hide logic and dispatches custom events for external handlers.\n * \n * @features\n * - Bootstrap 5 Modal API integration\n * - Custom event dispatching on confirm\n * - Keyboard support (ESC to close)\n * - Flexible confirmation action handling\n * \n * @usage\n * Add to modal element via ViewComponent:\n * ```ruby\n * Modals::Delete::Component.new(\n *   modal_id: 'delete_modal',\n *   i18n_scope: 'labels.modal.delete.resource',\n *   on_confirm_action: 'controller#method'\n * )\n * ```\n * \n * Trigger from button:\n * ```haml\n * %button{ data: { action: 'click->modals--delete#show' } }\n * ```\n * \n * @values\n * - modalId: Unique modal element ID\n * - confirmAction: Optional Stimulus action to trigger on confirm (e.g., 'tag-modal#confirmDelete')\n */\nexport default class extends ApplicationController {\n  static values = {\n    modalId: String,\n    confirmAction: String\n  }\n\n  initialize() {\n    super.initialize()\n    this.modalInstance = null\n  }\n\n  connect() {\n    super.connect()\n    this.initializeModal()\n  }\n\n  disconnect() {\n    super.disconnect()\n    if (this.modalInstance) {\n      this.modalInstance.dispose()\n    }\n  }\n\n  /**\n   * Initialize Bootstrap 5 Modal instance\n   */\n  initializeModal() {\n    if (typeof bootstrap !== 'undefined' && bootstrap.Modal) {\n      this.modalInstance = new bootstrap.Modal(this.element, {\n        backdrop: true,\n        keyboard: true, // ESC key closes modal\n        focus: true\n      })\n    } else {\n      console.error('[Modals::Delete] Bootstrap 5 Modal not available')\n    }\n  }\n\n  /**\n   * Show the modal\n   * Called from trigger buttons via data-action\n   */\n  show(event) {\n    if (event) {\n      event.preventDefault()\n      \n      // Store the button that triggered the modal (for permission set context)\n      this.triggerButton = event.currentTarget\n    }\n\n    if (this.modalInstance) {\n      this.modalInstance.show()\n    } else {\n      console.error('[Modals::Delete] Modal instance not initialized')\n    }\n  }\n\n  /**\n   * Hide the modal\n   */\n  hide() {\n    if (this.modalInstance) {\n      this.modalInstance.hide()\n    }\n  }\n\n  /**\n   * Handle cancel button click\n   * Simply closes the modal without any action\n   */\n  cancel(event) {\n    event.preventDefault()\n    \n    // Remove focus from button to prevent aria-hidden warning\n    if (event.target) {\n      event.target.blur()\n    }\n    \n    this.hide()\n  }\n\n  /**\n   * Handle confirm button click\n   * Dispatches custom event or triggers Stimulus action\n   */\n  confirm(event) {\n    event.preventDefault()\n    event.stopPropagation()\n\n    // Remove focus from button to prevent aria-hidden warning\n    if (event.target) {\n      event.target.blur()\n    }\n\n    // Close modal FIRST to avoid focus issues\n    this.hide()\n\n    // Wait for modal animation to complete before triggering action\n    setTimeout(() => {\n      // If confirmAction is provided, trigger it via Stimulus\n      if (this.hasConfirmActionValue) {\n        this.triggerConfirmAction()\n      } else {\n        // No specific action - try to submit the closest form\n        this.submitClosestForm()\n      }\n\n      // Dispatch custom event for external listeners\n      this.dispatchConfirmEvent()\n    }, 150)\n  }\n\n  /**\n   * Submit the closest form (for multidelete scenarios without specific action)\n   */\n  submitClosestForm() {\n    // Find form in the same wrapper\n    const wrapper = document.querySelector('[data-controller*=\"multiselect\"]')\n    if (wrapper) {\n      const form = wrapper.querySelector('form[id*=\"multidelete\"]')\n      if (form) {\n        console.log('[Modals::Delete] Submitting form:', form.id)\n        form.submit()\n        return\n      }\n    }\n    \n    console.warn('[Modals::Delete] No form found to submit')\n  }\n\n  /**\n   * Dispatch custom 'delete-confirmed' event\n   * External controllers can listen to this event\n   */\n  dispatchConfirmEvent() {\n    const customEvent = new CustomEvent('delete-confirmed', {\n      bubbles: true,\n      cancelable: true,\n      detail: {\n        modalId: this.hasModalIdValue ? this.modalIdValue : this.element.id,\n        timestamp: new Date().toISOString()\n      }\n    })\n\n    this.element.dispatchEvent(customEvent)\n  }\n\n  /**\n   * Trigger Stimulus action specified in confirmAction value\n   * Format: 'controller-name#method-name'\n   */\n  triggerConfirmAction() {\n    const action = this.confirmActionValue\n    \n    // Parse action string: 'tag-modal#confirmDelete'\n    const [controllerName, methodName] = action.split('#')\n    \n    if (!controllerName || !methodName) {\n      console.error('[Modals::Delete] Invalid action format:', action)\n      return\n    }\n\n    // Find the controller instance on the page\n    const controllerElement = document.querySelector(`[data-controller*=\"${controllerName}\"]`)\n    \n    if (controllerElement) {\n      // Get the Stimulus controller instance\n      const controller = this.application.getControllerForElementAndIdentifier(controllerElement, controllerName)\n      \n      if (controller && typeof controller[methodName] === 'function') {\n        console.log('[Modals::Delete] Calling:', action)\n        controller[methodName]()\n      } else {\n        console.error('[Modals::Delete] Method not found:', action)\n      }\n    } else {\n      console.error('[Modals::Delete] Controller element not found:', controllerName)\n    }\n  }\n}\n\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n\n\n  initialize() {\n    super.initialize()\n    this.useReflex = false\n  }\n\n  connect() {\n    super.connect();\n  }\n\n  ///\n  // when the users role has been changed, a custom event role:changed is triggered\n  ///\n  roleChange(event) {\n    const $target = $(event.currentTarget)\n    const role = $target.val()\n    $(document).trigger(\"role:changed\", role)\n  }\n\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\n\n/**\n * Stimulus controller for AccordionSection ViewComponent.\n * Handles lazy loading on expand with spinner + StimulusReflex.\n */\nexport default class extends ApplicationController {\n  static targets = [\"body\", \"spinner\"];\n  static values = {\n    sectionKey: String,\n    lazyLoad: Boolean,\n    bodyId: String,\n    loaded: Boolean,\n    reflexAction: String,\n    reflexParams: Array\n  };\n\n  /**\n   * @returns {void}\n   */\n  connect() {\n    super.connect();\n    if (!this.lazyLoadValue) {\n      return;\n    }\n\n    if (this.loadedValue === undefined) {\n      this.loadedValue = false;\n    }\n\n    if (!this.loadedValue && !this.isCollapsed()) {\n      this.loadedValue = true;\n      return;\n    }\n\n    this.initializeLazyLoading();\n  }\n\n  /**\n   * Initialize bootstrap collapse listeners for lazy loading.\n   * @returns {void}\n   */\n  initializeLazyLoading() {\n    const collapseElement = this.collapseElement();\n    if (!collapseElement) {\n      this.logWarning(\"Accordion collapse element not found\");\n      return;\n    }\n\n    collapseElement.addEventListener(\"shown.bs.collapse\", () => {\n      this.handleExpand();\n    });\n  }\n\n  /**\n   * Handle expand event: show spinner, stimulate reflex, then mark as loaded.\n   * @returns {void}\n   */\n  handleExpand() {\n    if (this.loadedValue) {\n      return;\n    }\n\n    if (!this.reflexActionValue) {\n      this.logWarning(\"Missing reflexAction for lazy loading\");\n      return;\n    }\n\n    this.showSpinner();\n    const params = this.resolveReflexParams();\n    this.stimulate(this.reflexActionValue, ...params)\n      .then(() => {\n        this.loadedValue = true;\n        this.refreshCharts();\n      })\n      .finally(() => {\n        this.hideSpinner();\n      });\n  }\n\n  /**\n   * @returns {HTMLElement|null} collapse element for this accordion section\n   */\n  collapseElement() {\n    return this.element.querySelector(\".accordion-collapse\");\n  }\n\n  /**\n   * @returns {boolean} whether the accordion section is currently collapsed\n   */\n  isCollapsed() {\n    const collapseElement = this.collapseElement();\n    if (!collapseElement) {\n      return true;\n    }\n\n    return !collapseElement.classList.contains(\"show\");\n  }\n\n  /**\n   * @returns {void}\n   */\n  showSpinner() {\n    if (this.hasSpinnerTarget) {\n      this.spinnerTarget.classList.remove(\"d-none\");\n    }\n  }\n\n  /**\n   * @returns {void}\n   */\n  hideSpinner() {\n    if (this.hasSpinnerTarget) {\n      this.spinnerTarget.classList.add(\"d-none\");\n    }\n  }\n\n  /**\n   * @returns {Array} parameters for the reflex action\n   */\n  resolveReflexParams() {\n    if (this.hasReflexParamsValue && this.reflexParamsValue.length > 0) {\n      return this.reflexParamsValue;\n    }\n\n    return [this.sectionKeyValue, this.bodyIdValue];\n  }\n\n  /**\n   * @returns {void}\n   */\n  refreshCharts() {\n    const chartContainer = this.element.closest('[data-controller*=\"line-chart\"]');\n    if (!chartContainer) {\n      return;\n    }\n\n    $(chartContainer).trigger(\"chart:refresh\");\n  }\n}\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\";\nimport { CollapseStateManager } from \"../../../javascript/controllers/collapse_state_manager\";\n\n/**\n * Stimulus controller for CollapsibleSection ViewComponent\n * Handles state persistence and visual behavior for both default and subtle types\n */\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize();\n    this.useReflex = false;\n  }\n\n  connect() {\n    super.connect();\n    this.initializeStateManager();\n    \n    // Initialize Bootstrap collapse components first\n    this.initializeBootstrapCollapse();\n    \n    // Then initialize our state management\n    this.initializeCollapseStates();\n    this.stopLoading();\n  }\n\n  /**\n   * Initialize Bootstrap Collapse components explicitly\n   */\n  initializeBootstrapCollapse() {\n    const collapseElements = this.element.querySelectorAll('[data-bs-toggle=\"collapse\"]');\n    \n    collapseElements.forEach(element => {\n      // Initialize Bootstrap Collapse instance\n      new bootstrap.Collapse(element, {\n        toggle: false // Don't auto-toggle, we handle state restoration\n      });\n    });\n  }\n\n  /**\n   * Initialize the collapse state manager for CollapsibleSection\n   */\n  initializeStateManager() {\n    // Enable debug in development\n    const isDebug = document.body.dataset.environment === 'development';\n    \n    // Detect context to avoid localStorage key conflicts\n    const context = this.detectContext();\n    const storageKey = `collapsible_section_${context}_collapse_states`;\n    \n    this.stateManager = new CollapseStateManager(storageKey, {\n      debug: isDebug,\n      maxAge: 30 // Keep states for 30 days\n    });\n    \n    if (isDebug) {\n      console.log(`[CollapsibleSectionController] Using storage key: ${storageKey}`);\n    }\n  }\n\n  /**\n   * Detect the current context to create unique storage keys\n   * @returns {string} Context identifier (e.g., 'journey_containers', 'admin_area')\n   */\n  detectContext() {\n    const pathname = window.location.pathname;\n    \n    if (pathname.includes('/journey_containers/')) {\n      return 'journey_containers';\n    } else if (pathname.includes('/admin/')) {\n      return 'admin';\n    } else if (pathname.includes('/journeys')) {\n      return 'journeys';\n    } else {\n      return 'general';\n    }\n  }\n\n  /**\n   * Initialize collapse state management for all collapsible sections\n   */\n  initializeCollapseStates() {\n    const collapseElements = this.element.querySelectorAll('[data-bs-toggle=\"collapse\"]');\n    \n    collapseElements.forEach(toggle => {\n      const targetId = toggle.dataset.bsTarget;\n      const target = document.querySelector(targetId);\n      const icon = toggle.querySelector('.section-collapse-indicator .material-icons');\n      \n      if (target) {\n        // Get stored state or default\n        const defaultState = !toggle.classList.contains('collapsed');\n        const storedState = this.stateManager.getState(targetId, defaultState);\n        \n        // Apply stored state\n        if (storedState) {\n          // Should be expanded\n          target.classList.add('show');\n          toggle.classList.remove('collapsed');\n          toggle.setAttribute('aria-expanded', 'true');\n          if (icon) icon.classList.add('rotate-180');\n        } else {\n          // Should be collapsed\n          target.classList.remove('show');\n          toggle.classList.add('collapsed');\n          toggle.setAttribute('aria-expanded', 'false');\n          if (icon) icon.classList.remove('rotate-180');\n        }\n        \n        // Handle Bootstrap collapse events\n        target.addEventListener('shown.bs.collapse', () => {\n          if (icon) icon.classList.add('rotate-180');\n          this.stateManager.setState(targetId, true);\n        });\n        \n        target.addEventListener('hidden.bs.collapse', () => {\n          if (icon) icon.classList.remove('rotate-180');\n          this.stateManager.setState(targetId, false);\n        });\n      }\n    });\n  }\n\n  /**\n   * Debug method to inspect current collapse states\n   * Available in browser console\n   */\n  debugStates() {\n    if (this.stateManager) {\n      console.group('CollapsibleSection States');\n      console.table(this.stateManager.getDebugInfo());\n      console.groupEnd();\n    }\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n\n  static targets = [ \"sortableTree\"]\n  static values = {\n    init: String\n  }\n\n  initialize() {\n    // console.log(`${this.identifier}-controller initialized`)\n    super.initialize()\n    this.initializers = {\n      sortable_tree: this.initializeSortableTree,\n    }\n  }\n  connect() {\n    super.connect();\n    // if (this.hassortableTreeTarget) {\n    //   console.log(`sortable tree target: ${this.sortableTreeTarget}`)\n    // }\n    this.callInitializers()\n  }\n\n  initializeSortableTree() {\n    // console.log(\"setup the sortable trees\")\n    this.sortableTreeTargets.forEach((element, index) => {\n      // console.log(\"element: \", element)\n      $(element).nestedSortable({\n          forceHelperSizeType: true,\n          errorClass: 'cantdoit',\n          disableNesting: 'cantdoit',\n          handle: '.item',\n          helper:\t'clone',\n          listType: 'ol',\n          items: 'li',\n          opacity: 0.6,\n          placeholder: 'placeholder',\n          revert: 250,\n          maxLevels: $(element).data('max-levels'),\n          //maxLevels: #{options[:max_levels] || 5},\n          //tabSize: 20,\n          // protectRoot: $(this).data('protect-root'),\n\n          // prevent drag flickers\n          tolerance: 'pointer',\n          toleranceElement: '> .item',\n          isTree: true,\n          startCollapsed: false,\n          expandOnHover: 600,\n          // collapsedClass: \"collapsed\",\n          //startCollapsed: $(this).data(\"start-collapsed\"),\n\n          relocate: function(){\n              //$(this).nestedSortable(\"disable\");\n              var data = $(element).nestedSortable(\"serialize\");\n              var url = $(element).data(\"sortable-url\");\n              // console.log(\"data: \", data)\n              // update on server\n              $.ajax({\n                  url: url,\n                  type: \"post\",\n                  data: data\n              }).always(function(){\n                  //$(this).nestedSortable(\"enable\");\n\n                  // $(this).find('.item').each(function(index){\n                  //     if (index % 2){\n                  //         $(this).removeClass('odd').addClass('even');\n                  //     }else{\n                  //         $(this).removeClass('even').addClass('odd');\n                  //     }\n                  // });\n\n              }).done(function(data){\n\n              }).fail(function(jqXHR, textStatus){\n\n              });\n\n\n              //$(this).nestedSortable(\"enable\");\n          }\n      }); // nested tree\n  });\n\n  }\n\n  ///\n  // renders the hard skill import modal\n  ///\n  renderHardSkillImport(event) {\n    event.preventDefault();\n    this.stimulate(\"SkillReflex#render_hard_skill_import\").then(payload => {\n      // console.log(\"skillReflex stimulated to render hard skill import modal\")\n      const $hardSkillsModal = $(\"#hard_skill_modal\")\n      $hardSkillsModal.modal(\"show\");\n      $hardSkillsModal.on('hidden.bs.modal', function (event) {\n        // console.log(\"I'm hidden!\")\n        $hardSkillsModal.html(\"\")\n        $hardSkillsModal.off('hidden.bs.modal')\n      });\n\n    });\n  }\n\n  ///\n  // renders the soft skill import modal\n  ///\n  renderSoftSkillImport(event) {\n    event.preventDefault();\n    // const $target = $(event.currentTarget);\n    this.stimulate(\"SkillReflex#render_soft_skill_import\").then(payload => {\n      // console.log(\"skillReflex stimulated to render soft skill import modal\")\n      $(\"#soft_skill_modal\").modal(\"show\");\n    });\n  }\n\n  ///\n  // stimulates skill reflex to import the skills from given hard skill category\n  ///\n  importHardSkillCategory(event) {\n    const self = this;\n    event.preventDefault();\n    const $target = $(event.currentTarget);\n    const categoryName = $(\"#hard_category_selection\").val();\n    const subcategoryName = $(\"#hard_subcategory_selection\").val();\n    $(\"#hard_skill_modal\").modal(\"hide\");\n    this.startLoading();\n    this.stimulate(\"SkillReflex#import_hard_skill_category\", categoryName, subcategoryName).then(payload => {\n      // console.log(`skillReflex stimulated to import hard skill category: ${categoryName}-${subcategoryName}`)\n      self.stopLoading();\n    });\n\n  }\n\n  ///\n  // stimulates skill reflex to import the skills from given soft skill category\n  ///\n  importSoftSkillCategory(event) {\n    const self = this;\n    event.preventDefault();\n    const $target = $(event.currentTarget);\n    const subcategoryName = $(\"#soft_category_selection\").val();\n    $(\"#soft_skill_modal\").modal(\"hide\");\n    this.startLoading();\n    this.stimulate(\"SkillReflex#import_soft_skill_category\", subcategoryName).then(payload => {\n      // console.log(`skillReflex stimulated to import soft skill category: ${subcategoryName}`)\n      self.stopLoading();\n    });\n\n  }\n\n  ///\n  // enables the import button on soft skills import modal\n  ///\n  enableSoftSkillImport(event) {\n    const subcategoryName = $(\"#soft_category_selection\").val();\n    if (subcategoryName != '') {\n      $(\"#soft_skill_import_button\").prop(\"disabled\", false)\n    } else {\n      $(\"#soft_skill_import_button\").prop(\"disabled\", true)\n    }\n  }\n\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\nimport { newInstance, EVENT_CONNECTION_MOVED, EVENT_CONNECTION_DETACHED, EVENT_CONNECTION, FALSE } from \"@jsplumb/browser-ui\"\n\nexport default class extends ApplicationController {\n\n  static values = { \n    triggered: {type: String, default: 'false' },\n    suppressplumbing: {type: String, default: 'false' }\n  } \n\n\n  initialize() {\n    super.initialize()\n    this.endpointTypes = {\n      \"source\": {\n        cssClass: \"source-endpoint\",\n        paintStyle: { fill: \"#39ac73\" }\n      },\n      \"target\": {\n        cssClass: \"connected-target-endpoint\",\n        paintStyle: { fill: \"#6666ff\" }\n      },\n      \"possible-target\": {\n        cssClass: \"unconnected-target-endpoint\",\n        paintStyle: { fill: \"#DDD\" }\n      }\n    }\n    \n      this.plumped = false;\n  }\n\n  connect() {\n    super.connect();\n    // console.log(\"eventTriggered: \", this.triggeredValue)\n    // console.log(`## suppress: ${this.suppressplumbingValue} ##`)\n    // console.log(`## enable Edit: ${this.editEnabled()} ##`)\n\n    if(this.triggeredValue == \"false\") {\n      this.plumbIt();\n    }\n  }\n\n  ///\n  // this is a getter function that will be used to determine if the plumbing is enabled\n  ///\n  editEnabled() {\n    return !(this.suppressplumbingValue == 'true')\n  }\n\n  ///\n  // this is the main function that will be called to initialize the jsplumb\n  // it will be called after the page is loaded and the controller is connected\n  ///\n  plumbIt() {\n    if (this.plumped) {\n      return;\n    }\n    this.plumped = true;\n    const rootElement = this.element;\n    const controller = this;\n    // console.log(\"## plumbIt ##\")\n    const $rootElement = $(rootElement); // Now you can use the rootElement variable to access the root element of the controller\n    const connectorDefault = this.editEnabled() ? true : false;\n    // console.log(\"## connectorDefault: \", connectorDefault);\n    // console.log(\"## rootElement: \", $rootElement);\n\n    $rootElement.find(\".row.skill-row\").each(function (index) {\n      // console.log(\" ## container is: \", this);\n      const $this = $(this);\n      const plumber = newInstance({\n        container: this\n      });\n      plumber.setSuspendDrawing(true);\n\n      plumber.registerEndpointTypes(controller.endpointTypes);\n      plumber.importDefaults({\n        maxConnections: 1,\n        reattachConnections: this.editEnabled ? false : true,\n        deleteEndpointsOnDetach: false,\n        endpoint: {\n          type: \"Dot\",\n          options: { radius: 8 }\n        },\n        connector: {\n          type: \"Straight\",\n          options: { gap: 10 }\n        }\n      });\n\n      // const ssid = `${$(this).data(\"sss-id\")}`\n      const sources = $this.find('.skill-level .source');\n      const connectedSource = sources.filter(\".connected\");\n      if (connectedSource.length) {\n        const target = $this.find(\".target\").first()[0];\n        const sourceEndpoint = plumber.addEndpoint(connectedSource[0], {\n          anchor: \"Right\",\n          source: connectorDefault,\n          target: connectorDefault,\n          type: 'source'\n        });\n        const targetEndpoint = plumber.addEndpoint(target, {\n          anchor: \"Left\",\n          target: connectorDefault,\n          type: 'target'\n        });\n        \n        const connection = plumber.connect({\n          source: sourceEndpoint,\n          target: targetEndpoint,\n        });\n\n      }\n      const connectableSource = sources.filter(\".connectable\");\n      if (connectableSource.length) {\n        plumber.addEndpoint(connectableSource[0], {\n          anchor: \"Right\",\n          source: connectorDefault,\n          target: connectorDefault,\n          type: 'source'\n        });\n      }\n      if(controller.editEnabled()) {\n        const connectableTargets = $this.find(\".skill-level .possible-target\");\n        connectableTargets.each(function (index) {\n          plumber.addEndpoint(this, {\n            anchor: \"Left\",\n            target: connectorDefault,\n            type: \"possible-target\",\n          });\n        });\n      }\n\n      plumber.setSuspendDrawing(false, true);\n      // $(\"#skill_set_part .skill-development .source, #skill_set_part .skill-development .possible-target, #skill_set_part .skill-development .target\").css({display: \"none\", position: \"initial\" })\n      plumber.bind(EVENT_CONNECTION_MOVED, (p) => {\n        // console.log(\"## Connection Moved ##\")\n        // const sreid = p.newEndpoint.element.dataset.sreid\n        // const level = p.newEndpoint.element.dataset.level\n        // console.log(\"level: \", level)\n        // console.log(\"sreid: \", sreid)\n        // console.log(\"p: \", p)\n        p.originalEndpoint.setType(\"possible-target\");\n      });\n\n      plumber.bind(EVENT_CONNECTION_DETACHED, (p) => {\n        // console.log(\"## Connection Detached ##\")\n        const sreid = p.source.dataset.sreid;\n        const level = p.source.dataset.level;\n        // console.log(p)\n        // console.log(\"level: \", level)\n        // console.log(\"sreid: \", sreid)\n        // console.log(p.target)\n        // console.log(p.target.dataset.level)\n        controller.stimulate('Skill#adapt_target_rating', sreid, level).then(() => {\n          p.targetEndpoint.setType(\"possible-target\");\n        });\n      });\n\n      plumber.bind(EVENT_CONNECTION, (p) => {\n        // console.log(\"## Connection Created ##\")\n        const sreid = p.source.dataset.sreid;\n        const level = p.target.dataset.level;\n        // console.log(p)\n        // console.log(p.source.dataset.level)\n        // console.log(\"sreid: \", sreid)\n        // console.log(p.target)\n        // console.log(\"target level: \", level)\n        controller.stimulate('Skill#adapt_target_rating', sreid, level).then(() => {\n          p.targetEndpoint.setType(\"target\");\n        });\n      });\n\n    });\n  }\n\n}\n", "function _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\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\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\n  return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = _getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}\n\nfunction _get(target, property, receiver) {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    _get = Reflect.get;\n  } else {\n    _get = function _get(target, property, receiver) {\n      var base = _superPropBase(target, property);\n\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(receiver);\n      }\n\n      return desc.value;\n    };\n  }\n\n  return _get(target, property, receiver || target);\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\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}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\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\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction filterList(list, value, missingIsFalse) {\n  if (list === \"*\") {\n    return true;\n  }\n  return list.length > 0 ? list.indexOf(value) !== -1 : !missingIsFalse;\n}\nfunction extend(o1, o2, keys) {\n  var i;\n  o1 = o1 || {};\n  o2 = o2 || {};\n  var _o1 = o1,\n      _o2 = o2;\n  if (keys) {\n    for (i = 0; i < keys.length; i++) {\n      _o1[keys[i]] = _o2[keys[i]];\n    }\n  } else {\n    for (i in _o2) {\n      _o1[i] = _o2[i];\n    }\n  }\n  return o1;\n}\nfunction isNumber(n) {\n  return Object.prototype.toString.call(n) === \"[object Number]\";\n}\nfunction isString(s) {\n  return typeof s === \"string\";\n}\nfunction isBoolean(s) {\n  return typeof s === \"boolean\";\n}\nfunction isObject(o) {\n  return o == null ? false : Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction isDate(o) {\n  return Object.prototype.toString.call(o) === \"[object Date]\";\n}\nfunction isFunction(o) {\n  return Object.prototype.toString.call(o) === \"[object Function]\";\n}\nfunction isNamedFunction(o) {\n  return isFunction(o) && o.name != null && o.name.length > 0;\n}\nfunction isEmpty(o) {\n  for (var i in o) {\n    if (o.hasOwnProperty(i)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction clone(a) {\n  if (isString(a)) {\n    return \"\" + a;\n  } else if (isBoolean(a)) {\n    return !!a;\n  } else if (isDate(a)) {\n    return new Date(a.getTime());\n  } else if (isFunction(a)) {\n    return a;\n  } else if (Array.isArray(a)) {\n    var _b = [];\n    for (var i = 0; i < a.length; i++) {\n      _b.push(clone(a[i]));\n    }\n    return _b;\n  } else if (isObject(a)) {\n    var c = {};\n    for (var j in a) {\n      c[j] = clone(a[j]);\n    }\n    return c;\n  } else {\n    return a;\n  }\n}\nfunction filterNull(obj) {\n  var o = {};\n  for (var k in obj) {\n    if (obj[k] != null) {\n      o[k] = obj[k];\n    }\n  }\n  return o;\n}\nfunction merge(a, b, collations, overwrites) {\n  var cMap = {},\n      ar,\n      i,\n      oMap = {};\n  collations = collations || [];\n  overwrites = overwrites || [];\n  for (i = 0; i < collations.length; i++) {\n    cMap[collations[i]] = true;\n  }\n  for (i = 0; i < overwrites.length; i++) {\n    oMap[overwrites[i]] = true;\n  }\n  var c = clone(a);\n  for (i in b) {\n    if (c[i] == null || oMap[i]) {\n      c[i] = b[i];\n    } else if (cMap[i]) {\n      ar = [];\n      ar.push.apply(ar, Array.isArray(c[i]) ? c[i] : [c[i]]);\n      ar.push(b[i]);\n      c[i] = ar;\n    } else if (isString(b[i]) || isBoolean(b[i]) || isFunction(b[i]) || isNumber(b[i])) {\n      c[i] = b[i];\n    } else {\n      if (Array.isArray(b[i])) {\n        ar = [];\n        if (Array.isArray(c[i])) {\n          ar.push.apply(ar, c[i]);\n        }\n        ar.push.apply(ar, b[i]);\n        c[i] = ar;\n      } else if (isObject(b[i])) {\n        if (!isObject(c[i])) {\n          c[i] = {};\n        }\n        for (var j in b[i]) {\n          c[i][j] = b[i][j];\n        }\n      }\n    }\n  }\n  return c;\n}\nfunction _areEqual(a, b) {\n  if (a != null && b == null) {\n    return false;\n  } else {\n    if ((a == null || isString(a) || isBoolean(a) || isNumber(a)) && a !== b) {\n      return false;\n    } else {\n      if (Array.isArray(a)) {\n        if (!Array.isArray(b)) {\n          return false;\n        } else {\n          if (!arraysEqual(a, b)) {\n            return false;\n          }\n        }\n      } else if (isObject(a)) {\n        if (!isObject(a)) {\n          return false;\n        } else {\n          if (!objectsEqual(a, b)) {\n            return false;\n          }\n        }\n      }\n    }\n  }\n  return true;\n}\nfunction arraysEqual(a, b) {\n  if (a == null && b == null) {\n    return true;\n  } else if (a == null && b != null) {\n    return false;\n  } else if (a != null && b == null) {\n    return false;\n  }\n  if (a.length !== b.length) {\n    return false;\n  } else {\n    for (var i = 0; i < a.length; i++) {\n      if (!_areEqual(a[i], b[i])) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction objectsEqual(a, b) {\n  if (a == null && b == null) {\n    return true;\n  } else if (a == null && b != null) {\n    return false;\n  } else if (a != null && b == null) {\n    return false;\n  }\n  for (var key in a) {\n    var va = a[key],\n        vb = b[key];\n    if (!_areEqual(va, vb)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction replace(inObj, path, value) {\n  if (inObj == null) {\n    return;\n  }\n  var q = inObj,\n      t = q;\n  path.replace(/([^\\.])+/g, function (term, lc, pos, str) {\n    var array = term.match(/([^\\[0-9]+){1}(\\[)([0-9+])/),\n        last = pos + term.length >= str.length,\n        _getArray = function _getArray() {\n      return t[array[1]] || function () {\n        t[array[1]] = [];\n        return t[array[1]];\n      }();\n    };\n    if (last) {\n      if (array) {\n        _getArray()[array[3]] = value;\n      } else {\n        t[term] = value;\n      }\n    } else {\n      if (array) {\n        var _a2 = _getArray();\n        t = _a2[array[3]] || function () {\n          _a2[array[3]] = {};\n          return _a2[array[3]];\n        }();\n      } else {\n        t = t[term] || function () {\n          t[term] = {};\n          return t[term];\n        }();\n      }\n    }\n    return \"\";\n  });\n  return inObj;\n}\nfunction functionChain(successValue, failValue, fns) {\n  for (var i = 0; i < fns.length; i++) {\n    var o = fns[i][0][fns[i][1]].apply(fns[i][0], fns[i][2]);\n    if (o === failValue) {\n      return o;\n    }\n  }\n  return successValue;\n}\nfunction populate(model, values, functionPrefix, doNotExpandFunctions) {\n  var getValue = function getValue(fromString) {\n    var matches = fromString.match(/(\\${.*?})/g);\n    if (matches != null) {\n      for (var i = 0; i < matches.length; i++) {\n        var val = values[matches[i].substring(2, matches[i].length - 1)] || \"\";\n        if (val != null) {\n          fromString = fromString.replace(matches[i], val);\n        }\n      }\n    }\n    matches = fromString.match(/({{.*?}})/g);\n    if (matches != null) {\n      for (var _i = 0; _i < matches.length; _i++) {\n        var _val = values[matches[_i].substring(2, matches[_i].length - 2)] || \"\";\n        if (_val != null) {\n          fromString = fromString.replace(matches[_i], _val);\n        }\n      }\n    }\n    return fromString;\n  };\n  var _one = function _one(d) {\n    if (d != null) {\n      if (isString(d)) {\n        return getValue(d);\n      } else if (isFunction(d) && !doNotExpandFunctions && (functionPrefix == null || (d.name || \"\").indexOf(functionPrefix) === 0)) {\n        return d(values);\n      } else if (Array.isArray(d)) {\n        var r = [];\n        for (var i = 0; i < d.length; i++) {\n          r.push(_one(d[i]));\n        }\n        return r;\n      } else if (isObject(d)) {\n        var s = {};\n        for (var j in d) {\n          s[j] = _one(d[j]);\n        }\n        return s;\n      } else {\n        return d;\n      }\n    }\n  };\n  return _one(model);\n}\nfunction forEach(a, f) {\n  if (a) {\n    for (var i = 0; i < a.length; i++) {\n      f(a[i]);\n    }\n  } else {\n    return null;\n  }\n}\nfunction findWithFunction(a, f) {\n  if (a) {\n    for (var i = 0; i < a.length; i++) {\n      if (f(a[i])) {\n        return i;\n      }\n    }\n  }\n  return -1;\n}\nfunction findAllWithFunction(a, predicate) {\n  var o = [];\n  if (a) {\n    for (var i = 0; i < a.length; i++) {\n      if (predicate(a[i])) {\n        o.push(i);\n      }\n    }\n  }\n  return o;\n}\nfunction getWithFunction(a, f) {\n  var idx = findWithFunction(a, f);\n  return idx === -1 ? null : a[idx];\n}\nfunction getAllWithFunction(a, f) {\n  var indexes = findAllWithFunction(a, f);\n  return indexes.map(function (i) {\n    return a[i];\n  });\n}\nfunction getFromSetWithFunction(s, f) {\n  var out = null;\n  s.forEach(function (t) {\n    if (f(t)) {\n      out = t;\n    }\n  });\n  return out;\n}\nfunction setToArray(s) {\n  var a = [];\n  s.forEach(function (t) {\n    a.push(t);\n  });\n  return a;\n}\nfunction removeWithFunction(a, f) {\n  var idx = findWithFunction(a, f);\n  if (idx > -1) {\n    a.splice(idx, 1);\n  }\n  return idx !== -1;\n}\nfunction fromArray(a) {\n  if (Array.fromArray != null) {\n    return Array.from(a);\n  } else {\n    var arr = [];\n    Array.prototype.push.apply(arr, a);\n    return arr;\n  }\n}\nfunction remove(l, v) {\n  var idx = l.indexOf(v);\n  if (idx > -1) {\n    l.splice(idx, 1);\n  }\n  return idx !== -1;\n}\nfunction addWithFunction(list, item, hashFunction) {\n  if (findWithFunction(list, hashFunction) === -1) {\n    list.push(item);\n  }\n}\nfunction addToDictionary(map, key, value, insertAtStart) {\n  var l = map[key];\n  if (l == null) {\n    l = [];\n    map[key] = l;\n  }\n  l[insertAtStart ? \"unshift\" : \"push\"](value);\n  return l;\n}\nfunction addToList(map, key, value, insertAtStart) {\n  var l = map.get(key);\n  if (l == null) {\n    l = [];\n    map.set(key, l);\n  }\n  l[insertAtStart ? \"unshift\" : \"push\"](value);\n  return l;\n}\nfunction suggest(list, item, insertAtHead) {\n  if (list.indexOf(item) === -1) {\n    if (insertAtHead) {\n      list.unshift(item);\n    } else {\n      list.push(item);\n    }\n    return true;\n  }\n  return false;\n}\nvar lut$1 = [];\nfor (var i$1 = 0; i$1 < 256; i$1++) {\n  lut$1[i$1] = (i$1 < 16 ? '0' : '') + i$1.toString(16);\n}\nfunction uuid() {\n  var d0 = Math.random() * 0xffffffff | 0;\n  var d1 = Math.random() * 0xffffffff | 0;\n  var d2 = Math.random() * 0xffffffff | 0;\n  var d3 = Math.random() * 0xffffffff | 0;\n  return lut$1[d0 & 0xff] + lut$1[d0 >> 8 & 0xff] + lut$1[d0 >> 16 & 0xff] + lut$1[d0 >> 24 & 0xff] + '-' + lut$1[d1 & 0xff] + lut$1[d1 >> 8 & 0xff] + '-' + lut$1[d1 >> 16 & 0x0f | 0x40] + lut$1[d1 >> 24 & 0xff] + '-' + lut$1[d2 & 0x3f | 0x80] + lut$1[d2 >> 8 & 0xff] + '-' + lut$1[d2 >> 16 & 0xff] + lut$1[d2 >> 24 & 0xff] + lut$1[d3 & 0xff] + lut$1[d3 >> 8 & 0xff] + lut$1[d3 >> 16 & 0xff] + lut$1[d3 >> 24 & 0xff];\n}\nfunction rotatePoint(point, center, rotation) {\n  var radial = {\n    x: point.x - center.x,\n    y: point.y - center.y\n  },\n      cr = Math.cos(rotation / 360 * Math.PI * 2),\n      sr = Math.sin(rotation / 360 * Math.PI * 2);\n  return {\n    x: radial.x * cr - radial.y * sr + center.x,\n    y: radial.y * cr + radial.x * sr + center.y,\n    cr: cr,\n    sr: sr\n  };\n}\nfunction rotateAnchorOrientation(orientation, rotation) {\n  var r = rotatePoint({\n    x: orientation[0],\n    y: orientation[1]\n  }, {\n    x: 0,\n    y: 0\n  }, rotation);\n  return [Math.round(r.x), Math.round(r.y)];\n}\nfunction fastTrim(s) {\n  if (s == null) {\n    return null;\n  }\n  var str = s.replace(/^\\s\\s*/, ''),\n      ws = /\\s/,\n      i = str.length;\n  while (ws.test(str.charAt(--i))) {}\n  return str.slice(0, i + 1);\n}\nfunction each(obj, fn) {\n  obj = obj.length == null || typeof obj === \"string\" ? [obj] : obj;\n  for (var _i2 = 0; _i2 < obj.length; _i2++) {\n    fn(obj[_i2]);\n  }\n}\nfunction map(obj, fn) {\n  var o = [];\n  for (var _i3 = 0; _i3 < obj.length; _i3++) {\n    o.push(fn(obj[_i3]));\n  }\n  return o;\n}\nvar logEnabled = true;\nfunction log() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  if (typeof console !== \"undefined\") {\n    try {\n      var msg = arguments[arguments.length - 1];\n      console.log(msg);\n    } catch (e) {}\n  }\n}\nfunction sgn$1(x) {\n  return x < 0 ? -1 : x > 0 ? 1 : 0;\n}\nfunction wrap(wrappedFunction, newFunction, returnOnThisValue) {\n  return function () {\n    var r = null;\n    try {\n      if (newFunction != null) {\n        r = newFunction.apply(this, arguments);\n      }\n    } catch (e) {\n      log(\"jsPlumb function failed : \" + e);\n    }\n    if (wrappedFunction != null && (returnOnThisValue == null || r !== returnOnThisValue)) {\n      try {\n        r = wrappedFunction.apply(this, arguments);\n      } catch (e) {\n        log(\"wrapped function failed : \" + e);\n      }\n    }\n    return r;\n  };\n}\nfunction getsert(map, key, valueGenerator) {\n  if (!map.has(key)) {\n    map.set(key, valueGenerator());\n  }\n  return map.get(key);\n}\nfunction isAssignableFrom(object, cls) {\n  var proto = object.__proto__;\n  while (proto != null) {\n    if (proto instanceof cls) {\n      return true;\n    } else {\n      proto = proto.__proto__;\n    }\n  }\n  return false;\n}\nfunction insertSorted(value, array, comparator, sortDescending) {\n  if (array.length === 0) {\n    array.push(value);\n  } else {\n    var flip = sortDescending ? -1 : 1;\n    var min = 0;\n    var max = array.length;\n    var index = Math.floor((min + max) / 2);\n    while (max > min) {\n      var c = comparator(value, array[index]) * flip;\n      if (c < 0) {\n        max = index;\n      } else {\n        min = index + 1;\n      }\n      index = Math.floor((min + max) / 2);\n    }\n    array.splice(index, 0, value);\n  }\n}\n\nfunction matchesSelector$1(el, selector, ctx) {\n  ctx = ctx || el.parentNode;\n  var possibles = ctx.querySelectorAll(selector);\n  for (var i = 0; i < possibles.length; i++) {\n    if (possibles[i] === el) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction consume(e, doNotPreventDefault) {\n  if (e.stopPropagation) {\n    e.stopPropagation();\n  } else {\n    e.returnValue = false;\n  }\n  if (!doNotPreventDefault && e.preventDefault) {\n    e.preventDefault();\n  }\n}\nfunction findParent(el, selector, container, matchOnElementAlso) {\n  if (matchOnElementAlso && matchesSelector$1(el, selector, container)) {\n    return el;\n  } else {\n    el = el.parentNode;\n  }\n  while (el != null && el !== container) {\n    if (matchesSelector$1(el, selector)) {\n      return el;\n    } else {\n      el = el.parentNode;\n    }\n  }\n}\nfunction getEventSource(e) {\n  return e.srcElement || e.target;\n}\nfunction _setClassName(el, cn, classList) {\n  cn = fastTrim(cn);\n  if (typeof el.className.baseVal !== \"undefined\") {\n    el.className.baseVal = cn;\n  } else {\n    el.className = cn;\n  }\n  try {\n    var cl = el.classList;\n    if (cl != null) {\n      while (cl.length > 0) {\n        cl.remove(cl.item(0));\n      }\n      for (var i = 0; i < classList.length; i++) {\n        if (classList[i]) {\n          cl.add(classList[i]);\n        }\n      }\n    }\n  } catch (e) {\n    log(\"WARN: cannot set class list\", e);\n  }\n}\nfunction _getClassName(el) {\n  return el.className != null ? typeof el.className.baseVal === \"undefined\" ? el.className : el.className.baseVal : \"\";\n}\nfunction _classManip(el, classesToAdd, classesToRemove) {\n  var cta = classesToAdd == null ? [] : Array.isArray(classesToAdd) ? classesToAdd : classesToAdd.split(/\\s+/);\n  var ctr = classesToRemove == null ? [] : Array.isArray(classesToRemove) ? classesToRemove : classesToRemove.split(/\\s+/);\n  var className = _getClassName(el),\n      curClasses = className.split(/\\s+/);\n  var _oneSet = function _oneSet(add, classes) {\n    for (var i = 0; i < classes.length; i++) {\n      if (add) {\n        if (curClasses.indexOf(classes[i]) === -1) {\n          curClasses.push(classes[i]);\n        }\n      } else {\n        var idx = curClasses.indexOf(classes[i]);\n        if (idx !== -1) {\n          curClasses.splice(idx, 1);\n        }\n      }\n    }\n  };\n  _oneSet(true, cta);\n  _oneSet(false, ctr);\n  _setClassName(el, curClasses.join(\" \"), curClasses);\n}\nfunction isNodeList(el) {\n  return !isString(el) && !Array.isArray(el) && el.length != null && el.documentElement == null && el.nodeType == null;\n}\nfunction isArrayLike(el) {\n  return !isString(el) && (Array.isArray(el) || isNodeList(el));\n}\nfunction getClass(el) {\n  return _getClassName(el);\n}\nfunction addClass(el, clazz) {\n  var _one = function _one(el, clazz) {\n    if (el != null && clazz != null && clazz.length > 0) {\n      if (el.classList) {\n        var parts = fastTrim(clazz).split(/\\s+/);\n        forEach(parts, function (part) {\n          el.classList.add(part);\n        });\n      } else {\n        _classManip(el, clazz);\n      }\n    }\n  };\n  if (isNodeList(el)) {\n    forEach(el, function (el) {\n      return _one(el, clazz);\n    });\n  } else {\n    _one(el, clazz);\n  }\n}\nfunction hasClass(el, clazz) {\n  if (el.classList) {\n    return el.classList.contains(clazz);\n  } else {\n    return _getClassName(el).indexOf(clazz) !== -1;\n  }\n}\nfunction removeClass(el, clazz) {\n  var _one = function _one(el, clazz) {\n    if (el != null && clazz != null && clazz.length > 0) {\n      if (el.classList) {\n        var parts = fastTrim(clazz).split(/\\s+/);\n        parts.forEach(function (part) {\n          el.classList.remove(part);\n        });\n      } else {\n        _classManip(el, null, clazz);\n      }\n    }\n  };\n  if (isNodeList(el)) {\n    forEach(el, function (el) {\n      return _one(el, clazz);\n    });\n  } else {\n    _one(el, clazz);\n  }\n}\nfunction toggleClass(el, clazz) {\n  var _this = this;\n  var _one = function _one(el, clazz) {\n    if (el != null && clazz != null && clazz.length > 0) {\n      if (el.classList) {\n        el.classList.toggle(clazz);\n      } else {\n        if (_this.hasClass(el, clazz)) {\n          _this.removeClass(el, clazz);\n        } else {\n          _this.addClass(el, clazz);\n        }\n      }\n    }\n  };\n  if (isNodeList(el)) {\n    forEach(el, function (el) {\n      return _one(el, clazz);\n    });\n  } else {\n    _one(el, clazz);\n  }\n}\nfunction createElement(tag, style, clazz, atts) {\n  return createElementNS(null, tag, style, clazz, atts);\n}\nfunction createElementNS(ns, tag, style, clazz, atts) {\n  var e = ns == null ? document.createElement(tag) : document.createElementNS(ns, tag);\n  var i;\n  style = style || {};\n  for (i in style) {\n    e.style[i] = style[i];\n  }\n  if (clazz) {\n    e.className = clazz;\n  }\n  atts = atts || {};\n  for (i in atts) {\n    e.setAttribute(i, \"\" + atts[i]);\n  }\n  return e;\n}\nfunction offsetRelativeToRoot(el) {\n  var box = el.getBoundingClientRect(),\n      body = document.body,\n      docElem = document.documentElement,\n  scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop,\n      scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft,\n  clientTop = docElem.clientTop || body.clientTop || 0,\n      clientLeft = docElem.clientLeft || body.clientLeft || 0,\n  top = box.top + scrollTop - clientTop,\n      left = box.left + scrollLeft - clientLeft;\n  return {\n    x: Math.round(left),\n    y: Math.round(top)\n  };\n}\nfunction offsetSize(el) {\n  return {\n    w: el.offsetWidth,\n    h: el.offsetHeight\n  };\n}\nfunction svgWidthHeightSize(el) {\n  try {\n    return {\n      w: parseFloat(el.width.baseVal.value),\n      h: parseFloat(el.height.baseVal.value)\n    };\n  } catch (e) {\n    return {\n      w: 0,\n      h: 0\n    };\n  }\n}\nfunction svgXYPosition(el) {\n  try {\n    return {\n      x: parseFloat(el.x.baseVal.value),\n      y: parseFloat(el.y.baseVal.value)\n    };\n  } catch (e) {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n}\nfunction getElementPosition(el, instance) {\n  var pc = instance.getContainer().getBoundingClientRect();\n  var ec = el.getBoundingClientRect();\n  var z = instance.currentZoom;\n  return {\n    x: (ec.left - pc.left) / z,\n    y: (ec.top - pc.top) / z\n  };\n}\nfunction getElementSize(el, instance) {\n  var ec = el.getBoundingClientRect();\n  var z = instance.currentZoom;\n  return {\n    w: ec.width / z,\n    h: ec.height / z\n  };\n}\nvar ElementTypes;\n(function (ElementTypes) {\n  ElementTypes[\"SVG\"] = \"SVG\";\n  ElementTypes[\"HTML\"] = \"HTML\";\n})(ElementTypes || (ElementTypes = {}));\nfunction getElementType(el) {\n  return el instanceof SVGElement ? ElementTypes.SVG : ElementTypes.HTML;\n}\nfunction isSVGElement(el) {\n  return getElementType(el) === ElementTypes.SVG;\n}\nfunction onDocumentReady(f) {\n  var _do = function _do() {\n    if (/complete|loaded|interactive/.test(document.readyState) && typeof document.body !== \"undefined\" && document.body != null) {\n      f();\n    } else {\n      setTimeout(_do, 9);\n    }\n  };\n  _do();\n}\n\nfunction cls() {\n  for (var _len = arguments.length, className = new Array(_len), _key = 0; _key < _len; _key++) {\n    className[_key] = arguments[_key];\n  }\n  return className.map(function (cn) {\n    return \".\" + cn;\n  }).join(\",\");\n}\nfunction classList() {\n  for (var _len2 = arguments.length, className = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    className[_key2] = arguments[_key2];\n  }\n  return className.join(\" \");\n}\nfunction att() {\n  for (var _len3 = arguments.length, attName = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    attName[_key3] = arguments[_key3];\n  }\n  return attName.map(function (an) {\n    return \"[\" + an + \"]\";\n  }).join(\",\");\n}\nvar SOURCE = \"source\";\nvar TARGET = \"target\";\nvar BLOCK = \"block\";\nvar NONE = \"none\";\nvar SOURCE_INDEX = 0;\nvar TARGET_INDEX = 1;\nvar ABSOLUTE = \"absolute\";\nvar FIXED = \"fixed\";\nvar STATIC = \"static\";\nvar ATTRIBUTE_GROUP = \"data-jtk-group\";\nvar ATTRIBUTE_MANAGED = \"data-jtk-managed\";\nvar ATTRIBUTE_NOT_DRAGGABLE = \"data-jtk-not-draggable\";\nvar ATTRIBUTE_TABINDEX = \"tabindex\";\nvar ATTRIBUTE_SCOPE = \"data-jtk-scope\";\nvar ATTRIBUTE_SCOPE_PREFIX = ATTRIBUTE_SCOPE + \"-\";\nvar CHECK_CONDITION = \"checkCondition\";\nvar CHECK_DROP_ALLOWED = \"checkDropAllowed\";\nvar CLASS_CONNECTOR = \"jtk-connector\";\nvar CLASS_CONNECTOR_OUTLINE = \"jtk-connector-outline\";\nvar CLASS_CONNECTED = \"jtk-connected\";\nvar CLASS_ENDPOINT = \"jtk-endpoint\";\nvar CLASS_ENDPOINT_CONNECTED = \"jtk-endpoint-connected\";\nvar CLASS_ENDPOINT_FULL = \"jtk-endpoint-full\";\nvar CLASS_ENDPOINT_FLOATING = \"jtk-floating-endpoint\";\nvar CLASS_ENDPOINT_DROP_ALLOWED = \"jtk-endpoint-drop-allowed\";\nvar CLASS_ENDPOINT_DROP_FORBIDDEN = \"jtk-endpoint-drop-forbidden\";\nvar CLASS_ENDPOINT_ANCHOR_PREFIX = \"jtk-endpoint-anchor\";\nvar CLASS_GROUP_COLLAPSED = \"jtk-group-collapsed\";\nvar CLASS_GROUP_EXPANDED = \"jtk-group-expanded\";\nvar CLASS_OVERLAY = \"jtk-overlay\";\nvar EVENT_ANCHOR_CHANGED = \"anchor:changed\";\nvar EVENT_CONNECTION = \"connection\";\nvar EVENT_INTERNAL_CONNECTION = \"internal.connection\";\nvar EVENT_CONNECTION_DETACHED = \"connection:detach\";\nvar EVENT_CONNECTION_MOVED = \"connection:move\";\nvar EVENT_CONTAINER_CHANGE = \"container:change\";\nvar EVENT_ENDPOINT_REPLACED = \"endpoint:replaced\";\nvar EVENT_INTERNAL_ENDPOINT_UNREGISTERED = \"internal.endpoint:unregistered\";\nvar EVENT_INTERNAL_CONNECTION_DETACHED = \"internal.connection:detached\";\nvar EVENT_MANAGE_ELEMENT = \"element:manage\";\nvar EVENT_GROUP_ADDED = \"group:added\";\nvar EVENT_GROUP_COLLAPSE = \"group:collapse\";\nvar EVENT_GROUP_EXPAND = \"group:expand\";\nvar EVENT_GROUP_MEMBER_ADDED = \"group:member:added\";\nvar EVENT_GROUP_MEMBER_REMOVED = \"group:member:removed\";\nvar EVENT_GROUP_REMOVED = \"group:removed\";\nvar EVENT_MAX_CONNECTIONS = \"maxConnections\";\nvar EVENT_NESTED_GROUP_ADDED = \"group:nested:added\";\nvar EVENT_NESTED_GROUP_REMOVED = \"group:nested:removed\";\nvar EVENT_UNMANAGE_ELEMENT = \"element:unmanage\";\nvar EVENT_ZOOM = \"zoom\";\nvar IS_DETACH_ALLOWED = \"isDetachAllowed\";\nvar INTERCEPT_BEFORE_DRAG = \"beforeDrag\";\nvar INTERCEPT_BEFORE_DROP = \"beforeDrop\";\nvar INTERCEPT_BEFORE_DETACH = \"beforeDetach\";\nvar INTERCEPT_BEFORE_START_DETACH = \"beforeStartDetach\";\nvar SELECTOR_MANAGED_ELEMENT = att(ATTRIBUTE_MANAGED);\nvar ERROR_SOURCE_ENDPOINT_FULL = \"Cannot establish connection: source endpoint is full\";\nvar ERROR_TARGET_ENDPOINT_FULL = \"Cannot establish connection: target endpoint is full\";\nvar ERROR_SOURCE_DOES_NOT_EXIST = \"Cannot establish connection: source does not exist\";\nvar ERROR_TARGET_DOES_NOT_EXIST = \"Cannot establish connection: target does not exist\";\nvar KEY_CONNECTION_OVERLAYS = \"connectionOverlays\";\n\nvar svgAttributeMap = {\n  \"stroke-linejoin\": \"stroke-linejoin\",\n  \"stroke-dashoffset\": \"stroke-dashoffset\",\n  \"stroke-linecap\": \"stroke-linecap\"\n};\nvar STROKE_DASHARRAY = \"stroke-dasharray\";\nvar DASHSTYLE = \"dashstyle\";\nvar FILL = \"fill\";\nvar STROKE = \"stroke\";\nvar STROKE_WIDTH = \"stroke-width\";\nvar LINE_WIDTH = \"strokeWidth\";\nvar ELEMENT_SVG = \"svg\";\nvar ELEMENT_PATH = \"path\";\nvar ns = {\n  svg: \"http://www.w3.org/2000/svg\"\n};\nfunction _attr(node, attributes) {\n  for (var i in attributes) {\n    node.setAttribute(i, \"\" + attributes[i]);\n  }\n}\nfunction _node(name, attributes) {\n  attributes = attributes || {};\n  attributes.version = \"1.1\";\n  attributes.xmlns = ns.svg;\n  return createElementNS(ns.svg, name, null, null, attributes);\n}\nfunction _pos(d) {\n  return \"position:absolute;left:\" + d[0] + \"px;top:\" + d[1] + \"px\";\n}\nfunction _applyStyles(parent, node, style) {\n  node.setAttribute(FILL, style.fill ? style.fill : NONE);\n  node.setAttribute(STROKE, style.stroke ? style.stroke : NONE);\n  if (style.strokeWidth) {\n    node.setAttribute(STROKE_WIDTH, style.strokeWidth);\n  }\n  if (style[DASHSTYLE] && style[LINE_WIDTH] && !style[STROKE_DASHARRAY]) {\n    var sep = style[DASHSTYLE].indexOf(\",\") === -1 ? \" \" : \",\",\n        parts = style[DASHSTYLE].split(sep),\n        styleToUse = \"\";\n    forEach(parts, function (p) {\n      styleToUse += Math.floor(p * style.strokeWidth) + sep;\n    });\n    node.setAttribute(STROKE_DASHARRAY, styleToUse);\n  } else if (style[STROKE_DASHARRAY]) {\n    node.setAttribute(STROKE_DASHARRAY, style[STROKE_DASHARRAY]);\n  }\n  for (var i in svgAttributeMap) {\n    if (style[i]) {\n      node.setAttribute(svgAttributeMap[i], style[i]);\n    }\n  }\n}\nfunction _appendAtIndex(svg, path, idx) {\n  if (svg.childNodes.length > idx) {\n    svg.insertBefore(path, svg.childNodes[idx]);\n  } else {\n    svg.appendChild(path);\n  }\n}\nvar svg = {\n  attr: _attr,\n  node: _node,\n  ns: ns\n};\n\nfunction compoundEvent(stem, event, subevent) {\n  var a = [stem, event];\n  if (subevent) {\n    a.push(subevent);\n  }\n  return a.join(\":\");\n}\nvar ATTRIBUTE_CONTAINER = \"data-jtk-container\";\nvar ATTRIBUTE_GROUP_CONTENT = \"data-jtk-group-content\";\nvar ATTRIBUTE_JTK_ENABLED = \"data-jtk-enabled\";\nvar ATTRIBUTE_JTK_SCOPE = \"data-jtk-scope\";\nvar ENDPOINT = \"endpoint\";\nvar ELEMENT = \"element\";\nvar CONNECTION = \"connection\";\nvar ELEMENT_DIV = \"div\";\nvar EVENT_CLICK = \"click\";\nvar EVENT_CONTEXTMENU = \"contextmenu\";\nvar EVENT_DBL_CLICK = \"dblclick\";\nvar EVENT_DBL_TAP = \"dbltap\";\nvar EVENT_FOCUS = \"focus\";\nvar EVENT_MOUSEDOWN = \"mousedown\";\nvar EVENT_MOUSEENTER = \"mouseenter\";\nvar EVENT_MOUSEEXIT = \"mouseexit\";\nvar EVENT_MOUSEMOVE = \"mousemove\";\nvar EVENT_MOUSEUP = \"mouseup\";\nvar EVENT_MOUSEOUT = \"mouseout\";\nvar EVENT_MOUSEOVER = \"mouseover\";\nvar EVENT_TAP = \"tap\";\nvar EVENT_TOUCHSTART = \"touchstart\";\nvar EVENT_TOUCHEND = \"touchend\";\nvar EVENT_TOUCHMOVE = \"touchmove\";\nvar EVENT_DRAG_MOVE = \"drag:move\";\nvar EVENT_DRAG_STOP = \"drag:stop\";\nvar EVENT_DRAG_START = \"drag:start\";\nvar EVENT_REVERT = \"revert\";\nvar EVENT_CONNECTION_ABORT = \"connection:abort\";\nvar EVENT_CONNECTION_DRAG = \"connection:drag\";\nvar EVENT_ELEMENT_CLICK = compoundEvent(ELEMENT, EVENT_CLICK);\nvar EVENT_ELEMENT_DBL_CLICK = compoundEvent(ELEMENT, EVENT_DBL_CLICK);\nvar EVENT_ELEMENT_DBL_TAP = compoundEvent(ELEMENT, EVENT_DBL_TAP);\nvar EVENT_ELEMENT_MOUSE_OUT = compoundEvent(ELEMENT, EVENT_MOUSEOUT);\nvar EVENT_ELEMENT_MOUSE_OVER = compoundEvent(ELEMENT, EVENT_MOUSEOVER);\nvar EVENT_ELEMENT_MOUSE_MOVE = compoundEvent(ELEMENT, EVENT_MOUSEMOVE);\nvar EVENT_ELEMENT_MOUSE_UP = compoundEvent(ELEMENT, EVENT_MOUSEUP);\nvar EVENT_ELEMENT_MOUSE_DOWN = compoundEvent(ELEMENT, EVENT_MOUSEDOWN);\nvar EVENT_ELEMENT_CONTEXTMENU = compoundEvent(ELEMENT, EVENT_CONTEXTMENU);\nvar EVENT_ELEMENT_TAP = compoundEvent(ELEMENT, EVENT_TAP);\nvar EVENT_ENDPOINT_CLICK = compoundEvent(ENDPOINT, EVENT_CLICK);\nvar EVENT_ENDPOINT_DBL_CLICK = compoundEvent(ENDPOINT, EVENT_DBL_CLICK);\nvar EVENT_ENDPOINT_DBL_TAP = compoundEvent(ENDPOINT, EVENT_DBL_TAP);\nvar EVENT_ENDPOINT_MOUSEOUT = compoundEvent(ENDPOINT, EVENT_MOUSEOUT);\nvar EVENT_ENDPOINT_MOUSEOVER = compoundEvent(ENDPOINT, EVENT_MOUSEOVER);\nvar EVENT_ENDPOINT_MOUSEUP = compoundEvent(ENDPOINT, EVENT_MOUSEUP);\nvar EVENT_ENDPOINT_MOUSEDOWN = compoundEvent(ENDPOINT, EVENT_MOUSEDOWN);\nvar EVENT_ENDPOINT_TAP = compoundEvent(ENDPOINT, EVENT_TAP);\nvar EVENT_CONNECTION_CLICK = compoundEvent(CONNECTION, EVENT_CLICK);\nvar EVENT_CONNECTION_DBL_CLICK = compoundEvent(CONNECTION, EVENT_DBL_CLICK);\nvar EVENT_CONNECTION_DBL_TAP = compoundEvent(CONNECTION, EVENT_DBL_TAP);\nvar EVENT_CONNECTION_MOUSEOUT = compoundEvent(CONNECTION, EVENT_MOUSEOUT);\nvar EVENT_CONNECTION_MOUSEOVER = compoundEvent(CONNECTION, EVENT_MOUSEOVER);\nvar EVENT_CONNECTION_MOUSEUP = compoundEvent(CONNECTION, EVENT_MOUSEUP);\nvar EVENT_CONNECTION_MOUSEDOWN = compoundEvent(CONNECTION, EVENT_MOUSEDOWN);\nvar EVENT_CONNECTION_CONTEXTMENU = compoundEvent(CONNECTION, EVENT_CONTEXTMENU);\nvar EVENT_CONNECTION_TAP = compoundEvent(CONNECTION, EVENT_TAP);\nvar PROPERTY_POSITION = \"position\";\nvar SELECTOR_CONNECTOR = cls(CLASS_CONNECTOR);\nvar SELECTOR_ENDPOINT = cls(CLASS_ENDPOINT);\nvar SELECTOR_GROUP = att(ATTRIBUTE_GROUP);\nvar SELECTOR_GROUP_CONTAINER = att(ATTRIBUTE_GROUP_CONTENT);\nvar SELECTOR_OVERLAY = cls(CLASS_OVERLAY);\n\nvar PerimeterAnchorShapes;\n(function (PerimeterAnchorShapes) {\n  PerimeterAnchorShapes[\"Circle\"] = \"Circle\";\n  PerimeterAnchorShapes[\"Ellipse\"] = \"Ellipse\";\n  PerimeterAnchorShapes[\"Triangle\"] = \"Triangle\";\n  PerimeterAnchorShapes[\"Diamond\"] = \"Diamond\";\n  PerimeterAnchorShapes[\"Rectangle\"] = \"Rectangle\";\n  PerimeterAnchorShapes[\"Square\"] = \"Square\";\n})(PerimeterAnchorShapes || (PerimeterAnchorShapes = {}));\nvar AnchorLocations;\n(function (AnchorLocations) {\n  AnchorLocations[\"Assign\"] = \"Assign\";\n  AnchorLocations[\"AutoDefault\"] = \"AutoDefault\";\n  AnchorLocations[\"Bottom\"] = \"Bottom\";\n  AnchorLocations[\"BottomLeft\"] = \"BottomLeft\";\n  AnchorLocations[\"BottomRight\"] = \"BottomRight\";\n  AnchorLocations[\"Center\"] = \"Center\";\n  AnchorLocations[\"Continuous\"] = \"Continuous\";\n  AnchorLocations[\"ContinuousBottom\"] = \"ContinuousBottom\";\n  AnchorLocations[\"ContinuousLeft\"] = \"ContinuousLeft\";\n  AnchorLocations[\"ContinuousRight\"] = \"ContinuousRight\";\n  AnchorLocations[\"ContinuousTop\"] = \"ContinuousTop\";\n  AnchorLocations[\"ContinuousLeftRight\"] = \"ContinuousLeftRight\";\n  AnchorLocations[\"ContinuousTopBottom\"] = \"ContinuousTopBottom\";\n  AnchorLocations[\"Left\"] = \"Left\";\n  AnchorLocations[\"Perimeter\"] = \"Perimeter\";\n  AnchorLocations[\"Right\"] = \"Right\";\n  AnchorLocations[\"Top\"] = \"Top\";\n  AnchorLocations[\"TopLeft\"] = \"TopLeft\";\n  AnchorLocations[\"TopRight\"] = \"TopRight\";\n})(AnchorLocations || (AnchorLocations = {}));\n\nfunction noSuchPoint() {\n  return {\n    d: Infinity,\n    x: null,\n    y: null,\n    l: null,\n    x1: null,\n    y1: null,\n    x2: null,\n    y2: null\n  };\n}\nfunction EMPTY_BOUNDS() {\n  return {\n    xmin: Infinity,\n    xmax: -Infinity,\n    ymin: Infinity,\n    ymax: -Infinity\n  };\n}\nvar AbstractSegment = function () {\n  function AbstractSegment(params) {\n    _classCallCheck(this, AbstractSegment);\n    this.params = params;\n    _defineProperty(this, \"x1\", void 0);\n    _defineProperty(this, \"x2\", void 0);\n    _defineProperty(this, \"y1\", void 0);\n    _defineProperty(this, \"y2\", void 0);\n    _defineProperty(this, \"extents\", EMPTY_BOUNDS());\n    _defineProperty(this, \"type\", void 0);\n    this.x1 = params.x1;\n    this.y1 = params.y1;\n    this.x2 = params.x2;\n    this.y2 = params.y2;\n  }\n  _createClass(AbstractSegment, [{\n    key: \"findClosestPointOnPath\",\n    value: function findClosestPointOnPath(x, y) {\n      return noSuchPoint();\n    }\n  }, {\n    key: \"lineIntersection\",\n    value: function lineIntersection(x1, y1, x2, y2) {\n      return [];\n    }\n  }, {\n    key: \"boxIntersection\",\n    value: function boxIntersection(x, y, w, h) {\n      var a = [];\n      a.push.apply(a, this.lineIntersection(x, y, x + w, y));\n      a.push.apply(a, this.lineIntersection(x + w, y, x + w, y + h));\n      a.push.apply(a, this.lineIntersection(x + w, y + h, x, y + h));\n      a.push.apply(a, this.lineIntersection(x, y + h, x, y));\n      return a;\n    }\n  }, {\n    key: \"boundingBoxIntersection\",\n    value: function boundingBoxIntersection(box) {\n      return this.boxIntersection(box.x, box.y, box.w, box.h);\n    }\n  }]);\n  return AbstractSegment;\n}();\n\nvar UNDEFINED = \"undefined\";\nvar DEFAULT = \"default\";\nvar TRUE$1 = \"true\";\nvar FALSE$1 = \"false\";\nvar WILDCARD = \"*\";\n\nvar _touchMap, _tapProfiles2;\nfunction _touch(target, pageX, pageY, screenX, screenY, clientX, clientY) {\n  return new Touch({\n    target: target,\n    identifier: uuid(),\n    pageX: pageX,\n    pageY: pageY,\n    screenX: screenX,\n    screenY: screenY,\n    clientX: clientX || screenX,\n    clientY: clientY || screenY\n  });\n}\nfunction _touchList() {\n  var list = [];\n  list.push.apply(list, arguments);\n  list.item = function (index) {\n    return this[index];\n  };\n  return list;\n}\nfunction _touchAndList(target, pageX, pageY, screenX, screenY, clientX, clientY) {\n  return _touchList(_touch(target, pageX, pageY, screenX, screenY, clientX, clientY));\n}\nfunction matchesSelector(el, selector, ctx) {\n  ctx = ctx || el.parentNode;\n  var possibles = ctx.querySelectorAll(selector);\n  for (var i = 0; i < possibles.length; i++) {\n    if (possibles[i] === el) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction _t(e) {\n  return e.srcElement || e.target;\n}\nfunction _pi(e, target, obj, doCompute) {\n  if (!doCompute) {\n    return {\n      path: [target],\n      end: 1\n    };\n  } else {\n    var path = e.composedPath ? e.composedPath() : e.path;\n    if (typeof path !== \"undefined\" && path.indexOf) {\n      return {\n        path: path,\n        end: path.indexOf(obj)\n      };\n    } else {\n      var out = {\n        path: [],\n        end: -1\n      },\n          _one = function _one(el) {\n        out.path.push(el);\n        if (el === obj) {\n          out.end = out.path.length - 1;\n        } else if (el.parentNode != null) {\n          _one(el.parentNode);\n        }\n      };\n      _one(target);\n      return out;\n    }\n  }\n}\nfunction _d(l, fn) {\n  var i = 0,\n      j;\n  for (i = 0, j = l.length; i < j; i++) {\n    if (l[i][0] === fn) {\n      break;\n    }\n  }\n  if (i < l.length) {\n    l.splice(i, 1);\n  }\n}\nvar guid = 1;\nvar forceTouchEvents = false;\nvar forceMouseEvents = false;\nfunction isTouchDevice() {\n  return forceTouchEvents || \"ontouchstart\" in document.documentElement || navigator.maxTouchPoints != null && navigator.maxTouchPoints > 0;\n}\nfunction isMouseDevice() {\n  return forceMouseEvents || \"onmousedown\" in document.documentElement;\n}\nvar touchMap = (_touchMap = {}, _defineProperty(_touchMap, EVENT_MOUSEDOWN, EVENT_TOUCHSTART), _defineProperty(_touchMap, EVENT_MOUSEUP, EVENT_TOUCHEND), _defineProperty(_touchMap, EVENT_MOUSEMOVE, EVENT_TOUCHMOVE), _touchMap);\nvar PAGE = \"page\";\nvar SCREEN = \"screen\";\nvar CLIENT = \"client\";\nfunction _genLoc(e, prefix) {\n  if (e == null) return {\n    x: 0,\n    y: 0\n  };\n  var ts = touches(e),\n      t = getTouch(ts, 0);\n  return {\n    x: t[prefix + \"X\"],\n    y: t[prefix + \"Y\"]\n  };\n}\nfunction pageLocation(e) {\n  return _genLoc(e, PAGE);\n}\nfunction screenLocation(e) {\n  return _genLoc(e, SCREEN);\n}\nfunction clientLocation(e) {\n  return _genLoc(e, CLIENT);\n}\nfunction getTouch(touches, idx) {\n  return touches.item ? touches.item(idx) : touches[idx];\n}\nfunction touches(e) {\n  return e.touches && e.touches.length > 0 ? e.touches : e.changedTouches && e.changedTouches.length > 0 ? e.changedTouches : e.targetTouches && e.targetTouches.length > 0 ? e.targetTouches : [e];\n}\nfunction touchCount(e) {\n  return touches(e).length;\n}\nfunction getPageLocation(e) {\n  if (e == null) {\n    return {\n      x: 0,\n      y: 0\n    };\n  } else if (e.pageX !== null) {\n    return {\n      x: e.pageX,\n      y: e.pageY\n    };\n  } else {\n    var ts = touches(e),\n        t = getTouch(ts, 0);\n    if (t != null && t.pageX != null) {\n      return {\n        x: t.pageX,\n        y: t.pageY\n      };\n    } else {\n      return {\n        x: 0,\n        y: 0\n      };\n    }\n  }\n}\nfunction _bind(obj, type, fn, originalFn, options) {\n  _store(obj, type, fn);\n  originalFn.__tauid = fn.__tauid;\n  if (obj.addEventListener) {\n    obj.addEventListener(type, fn, false, options);\n  } else if (obj.attachEvent) {\n    var key = type + fn.__tauid;\n    obj[\"e\" + key] = fn;\n    obj[key] = function () {\n      obj[\"e\" + key] && obj[\"e\" + key](window.event);\n    };\n    obj.attachEvent(\"on\" + type, obj[key]);\n  }\n}\nfunction _unbind(obj, type, fn) {\n  var _this = this;\n  if (fn == null) return;\n  _each$1(obj, function (_el) {\n    _unstore(_el, type, fn);\n    if (fn.__tauid != null) {\n      if (_el.removeEventListener) {\n        _el.removeEventListener(type, fn, false);\n        if (isTouchDevice() && touchMap[type]) _el.removeEventListener(touchMap[type], fn, false);\n      } else if (_this.detachEvent) {\n        var key = type + fn.__tauid;\n        _el[key] && _el.detachEvent(\"on\" + type, _el[key]);\n        _el[key] = null;\n        _el[\"e\" + key] = null;\n      }\n    }\n    if (fn.__taTouchProxy) {\n      _unbind(obj, fn.__taTouchProxy[1], fn.__taTouchProxy[0]);\n    }\n  });\n}\nfunction _each$1(obj, fn) {\n  if (obj == null) return;\n  var entries = typeof obj === \"string\" ? document.querySelectorAll(obj) : obj.length != null ? obj : [obj];\n  for (var i = 0; i < entries.length; i++) {\n    fn(entries[i]);\n  }\n}\nfunction _store(obj, event, fn) {\n  var g = guid++;\n  obj.__ta = obj.__ta || {};\n  obj.__ta[event] = obj.__ta[event] || {};\n  obj.__ta[event][g] = fn;\n  fn.__tauid = g;\n  return g;\n}\nfunction _unstore(obj, event, fn) {\n  obj.__ta && obj.__ta[event] && delete obj.__ta[event][fn.__tauid];\n  if (fn.__taExtra) {\n    for (var i = 0; i < fn.__taExtra.length; i++) {\n      _unbind(obj, fn.__taExtra[i][0], fn.__taExtra[i][1]);\n    }\n    fn.__taExtra.length = 0;\n  }\n  fn.__taUnstore && fn.__taUnstore();\n}\nvar NOT_SELECTOR_REGEX = /:not\\(([^)]+)\\)/;\nfunction _curryChildFilter(children, obj, fn, evt) {\n  if (children == null) {\n    return fn;\n  } else {\n    var c = children.split(\",\"),\n        pc = [],\n        nc = [];\n    forEach(c, function (sel) {\n      var m = sel.match(NOT_SELECTOR_REGEX);\n      if (m != null) {\n        nc.push(m[1]);\n      } else {\n        pc.push(sel);\n      }\n    });\n    if (nc.length > 0 && pc.length === 0) {\n      pc.push(WILDCARD);\n    }\n    var _fn = function _fn(e) {\n      _fn.__tauid = fn.__tauid;\n      var t = _t(e);\n      var done = false;\n      var target = t;\n      var pathInfo = _pi(e, t, obj, children != null);\n      if (pathInfo.end != -1) {\n        for (var p = 0; !done && p < pathInfo.end; p++) {\n          target = pathInfo.path[p];\n          for (var i = 0; i < nc.length; i++) {\n            if (matchesSelector(target, nc[i], obj)) {\n              return;\n            }\n          }\n          for (var _i = 0; !done && _i < pc.length; _i++) {\n            if (matchesSelector(target, pc[_i], obj)) {\n              fn.apply(target, [e, target]);\n              done = true;\n              break;\n            }\n          }\n        }\n      }\n    };\n    registerExtraFunction(fn, evt, _fn);\n    return _fn;\n  }\n}\nfunction registerExtraFunction(fn, evt, newFn) {\n  fn.__taExtra = fn.__taExtra || [];\n  fn.__taExtra.push([evt, newFn]);\n}\nvar DefaultHandler = function DefaultHandler(obj, evt, fn, children, options) {\n  if (isTouchDevice() && touchMap[evt]) {\n    var tfn = _curryChildFilter(children, obj, fn, touchMap[evt]);\n    _bind(obj, touchMap[evt], tfn, fn, options);\n  }\n  if (evt === EVENT_FOCUS && obj.getAttribute(ATTRIBUTE_TABINDEX) == null) {\n    obj.setAttribute(ATTRIBUTE_TABINDEX, \"1\");\n  }\n  _bind(obj, evt, _curryChildFilter(children, obj, fn, evt), fn, options);\n};\nvar _tapProfiles = (_tapProfiles2 = {}, _defineProperty(_tapProfiles2, EVENT_TAP, {\n  touches: 1,\n  taps: 1\n}), _defineProperty(_tapProfiles2, EVENT_DBL_TAP, {\n  touches: 1,\n  taps: 2\n}), _defineProperty(_tapProfiles2, EVENT_CONTEXTMENU, {\n  touches: 2,\n  taps: 1\n}), _tapProfiles2);\nfunction meeHelper(type, evt, obj, target) {\n  for (var i in obj.__tamee[type]) {\n    if (obj.__tamee[type].hasOwnProperty(i)) {\n      obj.__tamee[type][i].apply(target, [evt]);\n    }\n  }\n}\nvar TapHandler = function () {\n  function TapHandler() {\n    _classCallCheck(this, TapHandler);\n  }\n  _createClass(TapHandler, null, [{\n    key: \"generate\",\n    value: function generate(clickThreshold, dblClickThreshold) {\n      return function (obj, evt, fn, children) {\n        if (evt == EVENT_CONTEXTMENU && isMouseDevice()) DefaultHandler(obj, evt, fn, children);else {\n          if (obj.__taTapHandler == null) {\n            var tt = obj.__taTapHandler = {\n              tap: [],\n              dbltap: [],\n              down: false,\n              taps: 0,\n              downSelectors: []\n            };\n            var down = function down(e) {\n              var target = _t(e),\n                  pathInfo = _pi(e, target, obj, children != null),\n                  finished = false;\n              for (var p = 0; p < pathInfo.end; p++) {\n                if (finished) return;\n                target = pathInfo.path[p];\n                for (var i = 0; i < tt.downSelectors.length; i++) {\n                  if (tt.downSelectors[i] == null || matchesSelector(target, tt.downSelectors[i], obj)) {\n                    tt.down = true;\n                    setTimeout(clearSingle, clickThreshold);\n                    setTimeout(clearDouble, dblClickThreshold);\n                    finished = true;\n                    break;\n                  }\n                }\n              }\n            },\n                up = function up(e) {\n              if (tt.down) {\n                var target = _t(e),\n                    currentTarget,\n                    pathInfo;\n                tt.taps++;\n                var tc = touchCount(e);\n                for (var eventId in _tapProfiles) {\n                  if (_tapProfiles.hasOwnProperty(eventId)) {\n                    var p = _tapProfiles[eventId];\n                    if (p.touches === tc && (p.taps === 1 || p.taps === tt.taps)) {\n                      for (var i = 0; i < tt[eventId].length; i++) {\n                        pathInfo = _pi(e, target, obj, tt[eventId][i][1] != null);\n                        for (var pLoop = 0; pLoop < pathInfo.end; pLoop++) {\n                          currentTarget = pathInfo.path[pLoop];\n                          if (tt[eventId][i][1] == null || matchesSelector(currentTarget, tt[eventId][i][1], obj)) {\n                            tt[eventId][i][0].apply(currentTarget, [e, currentTarget]);\n                            break;\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            },\n                clearSingle = function clearSingle() {\n              tt.down = false;\n            },\n                clearDouble = function clearDouble() {\n              tt.taps = 0;\n            };\n            obj.__taTapHandler.downHandler = down;\n            obj.__taTapHandler.upHandler = up;\n            DefaultHandler(obj, EVENT_MOUSEDOWN, down);\n            DefaultHandler(obj, EVENT_MOUSEUP, up);\n          }\n          obj.__taTapHandler.downSelectors.push(children);\n          obj.__taTapHandler[evt].push([fn, children]);\n          fn.__taUnstore = function () {\n            if (obj.__taTapHandler != null) {\n              removeWithFunction(obj.__taTapHandler.downSelectors, function (ds) {\n                return ds === children;\n              });\n              _d(obj.__taTapHandler[evt], fn);\n              if (obj.__taTapHandler.downSelectors.length === 0) {\n                _unbind(obj, EVENT_MOUSEDOWN, obj.__taTapHandler.downHandler);\n                _unbind(obj, EVENT_MOUSEUP, obj.__taTapHandler.upHandler);\n                delete obj.__taTapHandler;\n              }\n            }\n          };\n        }\n      };\n    }\n  }]);\n  return TapHandler;\n}();\nvar MouseEnterExitHandler = function () {\n  function MouseEnterExitHandler() {\n    _classCallCheck(this, MouseEnterExitHandler);\n  }\n  _createClass(MouseEnterExitHandler, null, [{\n    key: \"generate\",\n    value: function generate() {\n      var activeElements = [];\n      return function (obj, evt, fn, children) {\n        if (!obj.__tamee) {\n          obj.__tamee = {\n            over: false,\n            mouseenter: [],\n            mouseexit: []\n          };\n          var over = function over(e) {\n            var t = _t(e);\n            if (children == null && t == obj && !obj.__tamee.over || matchesSelector(t, children, obj) && (t.__tamee == null || !t.__tamee.over)) {\n              meeHelper(EVENT_MOUSEENTER, e, obj, t);\n              t.__tamee = t.__tamee || {};\n              t.__tamee.over = true;\n              activeElements.push(t);\n            }\n          },\n              out = function out(e) {\n            var t = _t(e);\n            for (var i = 0; i < activeElements.length; i++) {\n              if (t == activeElements[i] && !matchesSelector(e.relatedTarget || e.toElement, \"*\", t)) {\n                t.__tamee.over = false;\n                activeElements.splice(i, 1);\n                meeHelper(EVENT_MOUSEEXIT, e, obj, t);\n              }\n            }\n          };\n          _bind(obj, EVENT_MOUSEOVER, _curryChildFilter(children, obj, over, EVENT_MOUSEOVER), over);\n          _bind(obj, EVENT_MOUSEOUT, _curryChildFilter(children, obj, out, EVENT_MOUSEOUT), out);\n        }\n        fn.__taUnstore = function () {\n          delete obj.__tamee[evt][fn.__tauid];\n        };\n        _store(obj, evt, fn);\n        obj.__tamee[evt][fn.__tauid] = fn;\n      };\n    }\n  }]);\n  return MouseEnterExitHandler;\n}();\nvar EventManager = function () {\n  function EventManager(params) {\n    _classCallCheck(this, EventManager);\n    _defineProperty(this, \"clickThreshold\", void 0);\n    _defineProperty(this, \"dblClickThreshold\", void 0);\n    _defineProperty(this, \"tapHandler\", void 0);\n    _defineProperty(this, \"mouseEnterExitHandler\", void 0);\n    params = params || {};\n    this.clickThreshold = params.clickThreshold || 250;\n    this.dblClickThreshold = params.dblClickThreshold || 450;\n    this.mouseEnterExitHandler = MouseEnterExitHandler.generate();\n    this.tapHandler = TapHandler.generate(this.clickThreshold, this.dblClickThreshold);\n  }\n  _createClass(EventManager, [{\n    key: \"_doBind\",\n    value: function _doBind(el, evt, fn, children, options) {\n      if (fn == null) return;\n      var jel = el;\n      if (evt === EVENT_TAP || evt === EVENT_DBL_TAP || evt === EVENT_CONTEXTMENU) {\n        this.tapHandler(jel, evt, fn, children, options);\n      } else if (evt === EVENT_MOUSEENTER || evt == EVENT_MOUSEEXIT) this.mouseEnterExitHandler(jel, evt, fn, children, options);else {\n        DefaultHandler(jel, evt, fn, children, options);\n      }\n    }\n  }, {\n    key: \"on\",\n    value: function on(el, event, children, fn, options) {\n      var _c = fn == null ? null : children,\n          _f = fn == null ? children : fn;\n      this._doBind(el, event, _f, _c, options);\n      return this;\n    }\n  }, {\n    key: \"off\",\n    value: function off(el, event, fn) {\n      _unbind(el, event, fn);\n      return this;\n    }\n  }, {\n    key: \"trigger\",\n    value: function trigger(el, event, originalEvent, payload, detail) {\n      var originalIsMouse = isMouseDevice() && (typeof MouseEvent === \"undefined\" || originalEvent == null || originalEvent.constructor === MouseEvent);\n      var eventToBind = isTouchDevice() && !isMouseDevice() && touchMap[event] ? touchMap[event] : event,\n          bindingAMouseEvent = !(isTouchDevice() && !isMouseDevice() && touchMap[event]);\n      var pl = pageLocation(originalEvent),\n          sl = screenLocation(originalEvent),\n          cl = clientLocation(originalEvent);\n      _each$1(el, function (_el) {\n        var evt;\n        originalEvent = originalEvent || {\n          screenX: sl.x,\n          screenY: sl.y,\n          clientX: cl.x,\n          clientY: cl.y\n        };\n        var _decorate = function _decorate(_evt) {\n          if (payload) {\n            _evt.payload = payload;\n          }\n        };\n        var eventGenerators = {\n          \"TouchEvent\": function TouchEvent(evt) {\n            var touchList = _touchAndList(_el, pl.x, pl.y, sl.x, sl.y, cl.x, cl.y),\n                init = evt.initTouchEvent || evt.initEvent;\n            init(eventToBind, true, true, window, null, sl.x, sl.y, cl.x, cl.y, false, false, false, false, touchList, touchList, touchList, 1, 0);\n          },\n          \"MouseEvents\": function MouseEvents(evt) {\n            evt.initMouseEvent(eventToBind, true, true, window, detail == null ? 1 : detail, sl.x, sl.y, cl.x, cl.y, false, false, false, false, 1, _el);\n          }\n        };\n        var ite = !bindingAMouseEvent && !originalIsMouse && isTouchDevice() && touchMap[event],\n            evtName = ite ? \"TouchEvent\" : \"MouseEvents\";\n        evt = document.createEvent(evtName);\n        eventGenerators[evtName](evt);\n        _decorate(evt);\n        _el.dispatchEvent(evt);\n      });\n      return this;\n    }\n  }]);\n  return EventManager;\n}();\nfunction setForceTouchEvents(value) {\n  forceTouchEvents = value;\n}\nfunction setForceMouseEvents(value) {\n  forceMouseEvents = value;\n}\n\nvar segmentMultipliers = [null, [1, -1], [1, 1], [-1, 1], [-1, -1]];\nvar inverseSegmentMultipliers = [null, [-1, -1], [-1, 1], [1, 1], [1, -1]];\nvar TWO_PI = 2 * Math.PI;\nfunction add(p1, p2) {\n  return {\n    x: p1.x + p2.x,\n    y: p1.y + p2.y\n  };\n}\nfunction subtract(p1, p2) {\n  return {\n    x: p1.x - p2.x,\n    y: p1.y - p2.y\n  };\n}\nfunction gradient(p1, p2) {\n  if (p2.x === p1.x) return p2.y > p1.y ? Infinity : -Infinity;else if (p2.y === p1.y) return p2.x > p1.x ? 0 : -0;else return (p2.y - p1.y) / (p2.x - p1.x);\n}\nfunction normal(p1, p2) {\n  return -1 / gradient(p1, p2);\n}\nfunction lineLength(p1, p2) {\n  return Math.sqrt(Math.pow(p2.y - p1.y, 2) + Math.pow(p2.x - p1.x, 2));\n}\nfunction quadrant(p1, p2) {\n  if (p2.x > p1.x) {\n    return p2.y > p1.y ? 2 : 1;\n  } else if (p2.x == p1.x) {\n    return p2.y > p1.y ? 2 : 1;\n  } else {\n    return p2.y > p1.y ? 3 : 4;\n  }\n}\nfunction theta(p1, p2) {\n  var m = gradient(p1, p2),\n      t = Math.atan(m),\n      s = quadrant(p1, p2);\n  if (s == 4 || s == 3) t += Math.PI;\n  if (t < 0) t += 2 * Math.PI;\n  return t;\n}\nfunction intersects(r1, r2) {\n  var x1 = r1.x,\n      x2 = r1.x + r1.w,\n      y1 = r1.y,\n      y2 = r1.y + r1.h,\n      a1 = r2.x,\n      a2 = r2.x + r2.w,\n      b1 = r2.y,\n      b2 = r2.y + r2.h;\n  return x1 <= a1 && a1 <= x2 && y1 <= b1 && b1 <= y2 || x1 <= a2 && a2 <= x2 && y1 <= b1 && b1 <= y2 || x1 <= a1 && a1 <= x2 && y1 <= b2 && b2 <= y2 || x1 <= a2 && a1 <= x2 && y1 <= b2 && b2 <= y2 || a1 <= x1 && x1 <= a2 && b1 <= y1 && y1 <= b2 || a1 <= x2 && x2 <= a2 && b1 <= y1 && y1 <= b2 || a1 <= x1 && x1 <= a2 && b1 <= y2 && y2 <= b2 || a1 <= x2 && x1 <= a2 && b1 <= y2 && y2 <= b2;\n}\nfunction toABC(line) {\n  var A = line[1].y - line[0].y;\n  var B = line[0].x - line[1].x;\n  return {\n    A: A,\n    B: B,\n    C: fixPrecision(A * line[0].x + B * line[0].y)\n  };\n}\nfunction fixPrecision(n, digits) {\n  digits = digits == null ? 3 : digits;\n  return Math.floor(n * Math.pow(10, digits)) / Math.pow(10, digits);\n}\nfunction lineIntersection(l1, l2) {\n  var abc1 = toABC(l1),\n      abc2 = toABC(l2),\n      det = abc1.A * abc2.B - abc2.A * abc1.B;\n  if (det == 0) {\n    return null;\n  } else {\n    var candidate = {\n      x: Math.round((abc2.B * abc1.C - abc1.B * abc2.C) / det),\n      y: Math.round((abc1.A * abc2.C - abc2.A * abc1.C) / det)\n    },\n        l1xmin = Math.floor(Math.min(l1[0].x, l1[1].x)),\n        l1xmax = Math.round(Math.max(l1[0].x, l1[1].x)),\n        l1ymin = Math.floor(Math.min(l1[0].y, l1[1].y)),\n        l1ymax = Math.round(Math.max(l1[0].y, l1[1].y)),\n        l2xmin = Math.floor(Math.min(l2[0].x, l2[1].x)),\n        l2xmax = Math.round(Math.max(l2[0].x, l2[1].x)),\n        l2ymin = Math.floor(Math.min(l2[0].y, l2[1].y)),\n        l2ymax = Math.round(Math.max(l2[0].y, l2[1].y));\n    if (candidate.x >= l1xmin && candidate.x <= l1xmax && candidate.y >= l1ymin && candidate.y <= l1ymax && candidate.x >= l2xmin && candidate.x <= l2xmax && candidate.y >= l2ymin && candidate.y <= l2ymax) {\n      return candidate;\n    } else {\n      return null;\n    }\n  }\n}\nfunction lineRectangleIntersection(line, r) {\n  var out = [],\n      rectangleLines = [[{\n    x: r.x,\n    y: r.y\n  }, {\n    x: r.x + r.w,\n    y: r.y\n  }], [{\n    x: r.x + r.w,\n    y: r.y\n  }, {\n    x: r.x + r.w,\n    y: r.y + r.h\n  }], [{\n    x: r.x,\n    y: r.y\n  }, {\n    x: r.x,\n    y: r.y + r.h\n  }], [{\n    x: r.x,\n    y: r.y + r.h\n  }, {\n    x: r.x + r.w,\n    y: r.y + r.h\n  }]];\n  forEach(rectangleLines, function (rLine) {\n    var intersection = lineIntersection(line, rLine);\n    if (intersection != null) {\n      out.push(intersection);\n    }\n  });\n  return out;\n}\nfunction encloses(r1, r2, allowSharedEdges) {\n  var x1 = r1.x,\n      x2 = r1.x + r1.w,\n      y1 = r1.y,\n      y2 = r1.y + r1.h,\n      a1 = r2.x,\n      a2 = r2.x + r2.w,\n      b1 = r2.y,\n      b2 = r2.y + r2.h,\n      c = function c(v1, v2, v3, v4) {\n    return allowSharedEdges ? v1 <= v2 && v3 >= v4 : v1 < v2 && v3 > v4;\n  };\n  return c(x1, a1, x2, a2) && c(y1, b1, y2, b2);\n}\nfunction pointOnLine(fromPoint, toPoint, distance) {\n  var m = gradient(fromPoint, toPoint),\n      s = quadrant(fromPoint, toPoint),\n      segmentMultiplier = distance > 0 ? segmentMultipliers[s] : inverseSegmentMultipliers[s],\n      theta = Math.atan(m),\n      y = Math.abs(distance * Math.sin(theta)) * segmentMultiplier[1],\n      x = Math.abs(distance * Math.cos(theta)) * segmentMultiplier[0];\n  return {\n    x: fromPoint.x + x,\n    y: fromPoint.y + y\n  };\n}\nfunction perpendicularLineTo(fromPoint, toPoint, length) {\n  var m = gradient(fromPoint, toPoint),\n      theta2 = Math.atan(-1 / m),\n      y = length / 2 * Math.sin(theta2),\n      x = length / 2 * Math.cos(theta2);\n  return [{\n    x: toPoint.x + x,\n    y: toPoint.y + y\n  }, {\n    x: toPoint.x - x,\n    y: toPoint.y - y\n  }];\n}\nfunction snapToGrid(pos, grid, thresholdX, thresholdY) {\n  thresholdX = thresholdX == null ? grid.thresholdX == null ? grid.w / 2 : grid.thresholdX : thresholdX;\n  thresholdY = thresholdY == null ? grid.thresholdY == null ? grid.h / 2 : grid.thresholdY : thresholdY;\n  var _dx = Math.floor(pos.x / grid.w),\n      _dxl = grid.w * _dx,\n      _dxt = _dxl + grid.w,\n      x = Math.abs(pos.x - _dxl) <= thresholdX ? _dxl : Math.abs(_dxt - pos.x) <= thresholdX ? _dxt : pos.x;\n  var _dy = Math.floor(pos.y / grid.h),\n      _dyl = grid.h * _dy,\n      _dyt = _dyl + grid.h,\n      y = Math.abs(pos.y - _dyl) <= thresholdY ? _dyl : Math.abs(_dyt - pos.y) <= thresholdY ? _dyt : pos.y;\n  return {\n    x: x,\n    y: y\n  };\n}\n\nfunction findDelegateElement(parentElement, childElement, selector) {\n  if (matchesSelector$1(childElement, selector, parentElement)) {\n    return childElement;\n  } else {\n    var currentParent = childElement.parentNode;\n    while (currentParent != null && currentParent !== parentElement) {\n      if (matchesSelector$1(currentParent, selector, parentElement)) {\n        return currentParent;\n      } else {\n        currentParent = currentParent.parentNode;\n      }\n    }\n  }\n}\nfunction _assignId(obj) {\n  if (typeof obj === \"function\") {\n    obj._katavorioId = uuid();\n    return obj._katavorioId;\n  } else {\n    return obj;\n  }\n}\nfunction isInsideParent(instance, _el, pos) {\n  var p = _el.parentNode,\n      s = instance.getSize(p),\n      ss = instance.getSize(_el),\n      leftEdge = pos.x,\n      rightEdge = leftEdge + ss.w,\n      topEdge = pos.y,\n      bottomEdge = topEdge + ss.h;\n  return rightEdge > 0 && leftEdge < s.w && bottomEdge > 0 && topEdge < s.h;\n}\nfunction findMatchingSelector(availableSelectors, parentElement, childElement) {\n  var el = null;\n  var draggableId = parentElement.getAttribute(\"katavorio-draggable\"),\n      prefix = draggableId != null ? \"[katavorio-draggable='\" + draggableId + \"'] \" : \"\";\n  for (var i = 0; i < availableSelectors.length; i++) {\n    el = findDelegateElement(parentElement, childElement, prefix + availableSelectors[i].selector);\n    if (el != null) {\n      if (availableSelectors[i].filter) {\n        var matches = matchesSelector$1(childElement, availableSelectors[i].filter, el),\n            exclude = availableSelectors[i].filterExclude === true;\n        if (exclude && !matches || matches) {\n          return null;\n        }\n      }\n      return [availableSelectors[i], el];\n    }\n  }\n  return null;\n}\nvar EVENT_START = \"start\";\nvar EVENT_BEFORE_START = \"beforeStart\";\nvar EVENT_DRAG = \"drag\";\nvar EVENT_DROP = \"drop\";\nvar EVENT_OVER = \"over\";\nvar EVENT_OUT = \"out\";\nvar EVENT_STOP = \"stop\";\nvar ATTRIBUTE_DRAGGABLE = \"katavorio-draggable\";\nvar CLASS_DRAGGABLE$1 = ATTRIBUTE_DRAGGABLE;\nvar DEFAULT_GRID_X = 10;\nvar DEFAULT_GRID_Y = 10;\nvar TRUE = function TRUE() {\n  return true;\n};\nvar FALSE = function FALSE() {\n  return false;\n};\nvar _classes = {\n  delegatedDraggable: \"katavorio-delegated-draggable\",\n  draggable: CLASS_DRAGGABLE$1,\n  drag: \"katavorio-drag\",\n  selected: \"katavorio-drag-selected\",\n  noSelect: \"katavorio-drag-no-select\",\n  ghostProxy: \"katavorio-ghost-proxy\",\n  clonedDrag: \"katavorio-clone-drag\"\n};\nvar PositioningStrategies;\n(function (PositioningStrategies) {\n  PositioningStrategies[\"absolutePosition\"] = \"absolutePosition\";\n  PositioningStrategies[\"transform\"] = \"transform\";\n  PositioningStrategies[\"xyAttributes\"] = \"xyAttributes\";\n})(PositioningStrategies || (PositioningStrategies = {}));\nvar positionerSetters = new Map();\npositionerSetters.set(PositioningStrategies.absolutePosition, function (el, p) {\n  el.style.left = \"\".concat(p.x, \"px\");\n  el.style.top = \"\".concat(p.y, \"px\");\n});\npositionerSetters.set(PositioningStrategies.xyAttributes, function (el, p) {\n  el.setAttribute(\"x\", \"\".concat(p.x));\n  el.setAttribute(\"y\", \"\".concat(p.y));\n});\nvar positionerGetters = new Map();\npositionerGetters.set(PositioningStrategies.absolutePosition, function (el) {\n  return {\n    x: el.offsetLeft,\n    y: el.offsetTop\n  };\n});\npositionerGetters.set(PositioningStrategies.xyAttributes, function (el) {\n  return {\n    x: parseFloat(el.getAttribute(\"x\")),\n    y: parseFloat(el.getAttribute(\"y\"))\n  };\n});\nvar sizeSetters = new Map();\nsizeSetters.set(PositioningStrategies.absolutePosition, function (el, s) {\n  el.style.width = \"\".concat(s.w, \"px\");\n  el.style.height = \"\".concat(s.h, \"px\");\n});\nsizeSetters.set(PositioningStrategies.xyAttributes, function (el, s) {\n  el.setAttribute(\"width\", \"\".concat(s.w));\n  el.setAttribute(\"height\", \"\".concat(s.h));\n});\nvar sizeGetters = new Map();\nsizeGetters.set(PositioningStrategies.absolutePosition, function (el) {\n  return {\n    w: el.offsetWidth,\n    h: el.offsetHeight\n  };\n});\nsizeGetters.set(PositioningStrategies.xyAttributes, function (el) {\n  return {\n    w: parseFloat(el.getAttribute(\"width\")),\n    h: parseFloat(el.getAttribute(\"height\"))\n  };\n});\nvar _events = [EVENT_STOP, EVENT_START, EVENT_DRAG, EVENT_DROP, EVENT_OVER, EVENT_OUT, EVENT_BEFORE_START];\nvar _devNull = function _devNull() {};\nvar _each = function _each(obj, fn) {\n  if (obj == null) return;\n  obj = !isString(obj) && obj.tagName == null && obj.length != null ? obj : [obj];\n  for (var i = 0; i < obj.length; i++) {\n    fn.apply(obj[i], [obj[i]]);\n  }\n};\nvar _inputFilter = function _inputFilter(e, el, collicat) {\n  var t = e.srcElement || e.target;\n  return !matchesSelector$1(t, collicat.getInputFilterSelector(), el);\n};\nvar Base = function () {\n  function Base(el, manager) {\n    _classCallCheck(this, Base);\n    this.el = el;\n    this.manager = manager;\n    _defineProperty(this, \"_class\", void 0);\n    _defineProperty(this, \"uuid\", uuid());\n    _defineProperty(this, \"enabled\", true);\n    _defineProperty(this, \"scopes\", []);\n    _defineProperty(this, \"eventManager\", void 0);\n    this.eventManager = manager.eventManager;\n  }\n  _createClass(Base, [{\n    key: \"setEnabled\",\n    value: function setEnabled(e) {\n      this.enabled = e;\n    }\n  }, {\n    key: \"isEnabled\",\n    value: function isEnabled() {\n      return this.enabled;\n    }\n  }, {\n    key: \"toggleEnabled\",\n    value: function toggleEnabled() {\n      this.enabled = !this.enabled;\n    }\n  }, {\n    key: \"addScope\",\n    value: function addScope(scopes) {\n      var m = {};\n      _each(this.scopes, function (s) {\n        m[s] = true;\n      });\n      _each(scopes ? scopes.split(/\\s+/) : [], function (s) {\n        m[s] = true;\n      });\n      this.scopes.length = 0;\n      for (var i in m) {\n        this.scopes.push(i);\n      }\n    }\n  }, {\n    key: \"removeScope\",\n    value: function removeScope(scopes) {\n      var m = {};\n      _each(this.scopes, function (s) {\n        m[s] = true;\n      });\n      _each(scopes ? scopes.split(/\\s+/) : [], function (s) {\n        delete m[s];\n      });\n      this.scopes.length = 0;\n      for (var i in m) {\n        this.scopes.push(i);\n      }\n    }\n  }, {\n    key: \"toggleScope\",\n    value: function toggleScope(scopes) {\n      var m = {};\n      _each(this.scopes, function (s) {\n        m[s] = true;\n      });\n      _each(scopes ? scopes.split(/\\s+/) : [], function (s) {\n        if (m[s]) delete m[s];else m[s] = true;\n      });\n      this.scopes.length = 0;\n      for (var i in m) {\n        this.scopes.push(i);\n      }\n    }\n  }]);\n  return Base;\n}();\nfunction getConstrainingRectangle(el) {\n  return {\n    w: el.parentNode.offsetWidth + el.parentNode.scrollLeft,\n    h: el.parentNode.offsetHeight + el.parentNode.scrollTop\n  };\n}\nvar ContainmentType;\n(function (ContainmentType) {\n  ContainmentType[\"notNegative\"] = \"notNegative\";\n  ContainmentType[\"parent\"] = \"parent\";\n  ContainmentType[\"parentEnclosed\"] = \"parentEnclosed\";\n})(ContainmentType || (ContainmentType = {}));\nvar Drag = function (_Base) {\n  _inherits(Drag, _Base);\n  var _super = _createSuper(Drag);\n  function Drag(el, params, manager) {\n    var _this;\n    _classCallCheck(this, Drag);\n    _this = _super.call(this, el, manager);\n    _defineProperty(_assertThisInitialized(_this), \"_class\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"rightButtonCanDrag\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"consumeStartEvent\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"clone\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"scroll\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"trackScroll\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_downAt\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_posAtDown\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_pagePosAtDown\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_pageDelta\", {\n      x: 0,\n      y: 0\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_moving\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_lastPosition\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_lastScrollValues\", {\n      x: 0,\n      y: 0\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_initialScroll\", {\n      x: 0,\n      y: 0\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_size\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_currentParentPosition\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_ghostParentPosition\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_dragEl\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_multipleDrop\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_ghostProxyOffsets\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_ghostDx\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_ghostDy\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_isConstrained\", false);\n    _defineProperty(_assertThisInitialized(_this), \"_ghostProxyParent\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_useGhostProxy\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_ghostProxyFunction\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_activeSelectorParams\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_availableSelectors\", []);\n    _defineProperty(_assertThisInitialized(_this), \"_canDrag\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_consumeFilteredEvents\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_parent\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_ignoreZoom\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_filters\", {});\n    _defineProperty(_assertThisInitialized(_this), \"_constrainRect\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementToDrag\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"downListener\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"moveListener\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"upListener\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"scrollTracker\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"listeners\", {\n      \"start\": [],\n      \"drag\": [],\n      \"stop\": [],\n      \"over\": [],\n      \"out\": [],\n      \"beforeStart\": [],\n      \"revert\": []\n    });\n    _this._class = _this.manager.css.draggable;\n    addClass(_this.el, _this._class);\n    _this.downListener = _this._downListener.bind(_assertThisInitialized(_this));\n    _this.upListener = _this._upListener.bind(_assertThisInitialized(_this));\n    _this.moveListener = _this._moveListener.bind(_assertThisInitialized(_this));\n    _this.rightButtonCanDrag = params.rightButtonCanDrag === true;\n    _this.consumeStartEvent = params.consumeStartEvent !== false;\n    _this._dragEl = _this.el;\n    _this.clone = params.clone === true;\n    _this.scroll = params.scroll === true;\n    _this.trackScroll = params.trackScroll !== false;\n    _this._multipleDrop = params.multipleDrop !== false;\n    _this._canDrag = params.canDrag || TRUE;\n    _this._consumeFilteredEvents = params.consumeFilteredEvents;\n    _this._parent = params.parent;\n    _this._ignoreZoom = params.ignoreZoom === true;\n    _this._ghostProxyParent = params.ghostProxyParent;\n    if (_this.trackScroll) {\n      _this.scrollTracker = _this._trackScroll.bind(_assertThisInitialized(_this));\n      document.addEventListener(\"scroll\", _this.scrollTracker);\n    }\n    if (params.ghostProxy === true) {\n      _this._useGhostProxy = TRUE;\n    } else {\n      if (params.ghostProxy && typeof params.ghostProxy === \"function\") {\n        _this._useGhostProxy = params.ghostProxy;\n      } else {\n        _this._useGhostProxy = function (container, dragEl) {\n          if (_this._activeSelectorParams && _this._activeSelectorParams.useGhostProxy) {\n            return _this._activeSelectorParams.useGhostProxy(container, dragEl);\n          } else {\n            return false;\n          }\n        };\n      }\n    }\n    if (params.makeGhostProxy) {\n      _this._ghostProxyFunction = params.makeGhostProxy;\n    } else {\n      _this._ghostProxyFunction = function (el) {\n        if (_this._activeSelectorParams && _this._activeSelectorParams.makeGhostProxy) {\n          return _this._activeSelectorParams.makeGhostProxy(el);\n        } else {\n          return el.cloneNode(true);\n        }\n      };\n    }\n    if (params.selector) {\n      var draggableId = _this.el.getAttribute(ATTRIBUTE_DRAGGABLE);\n      if (draggableId == null) {\n        draggableId = \"\" + new Date().getTime();\n        _this.el.setAttribute(\"katavorio-draggable\", draggableId);\n      }\n      _this._availableSelectors.push(params);\n    }\n    _this.eventManager.on(_this.el, EVENT_MOUSEDOWN, _this.downListener);\n    return _this;\n  }\n  _createClass(Drag, [{\n    key: \"_trackScroll\",\n    value: function _trackScroll(e) {\n      if (this._moving) {\n        var currentScrollValues = {\n          x: document.documentElement.scrollLeft,\n          y: document.documentElement.scrollTop\n        },\n            dsx = currentScrollValues.x - this._lastScrollValues.x,\n            dsy = currentScrollValues.y - this._lastScrollValues.y,\n            _pos = {\n          x: dsx + this._lastPosition.x,\n          y: dsy + this._lastPosition.y\n        },\n        dx = _pos.x - this._downAt.x,\n            dy = _pos.y - this._downAt.y,\n            _z = this._ignoreZoom ? 1 : this.manager.getZoom();\n        if (this._dragEl && this._dragEl.parentNode) {\n          dx += this._dragEl.parentNode.scrollLeft - this._initialScroll.x;\n          dy += this._dragEl.parentNode.scrollTop - this._initialScroll.y;\n        }\n        dx /= _z;\n        dy /= _z;\n        this.moveBy(dx, dy, e);\n        this._lastPosition = _pos;\n        this._lastScrollValues = currentScrollValues;\n      }\n    }\n  }, {\n    key: \"on\",\n    value: function on(evt, fn) {\n      if (this.listeners[evt]) {\n        this.listeners[evt].push(fn);\n      }\n    }\n  }, {\n    key: \"off\",\n    value: function off(evt, fn) {\n      if (this.listeners[evt]) {\n        var l = [];\n        for (var i = 0; i < this.listeners[evt].length; i++) {\n          if (this.listeners[evt][i] !== fn) {\n            l.push(this.listeners[evt][i]);\n          }\n        }\n        this.listeners[evt] = l;\n      }\n    }\n  }, {\n    key: \"_upListener\",\n    value: function _upListener(e) {\n      if (this._downAt) {\n        this._downAt = null;\n        this.eventManager.off(document, EVENT_MOUSEMOVE, this.moveListener);\n        this.eventManager.off(document, EVENT_MOUSEUP, this.upListener);\n        removeClass(document.body, _classes.noSelect);\n        this.unmark(e);\n        this.stop(e);\n        this._moving = false;\n        if (this.clone) {\n          this._dragEl && this._dragEl.parentNode && this._dragEl.parentNode.removeChild(this._dragEl);\n          this._dragEl = null;\n        } else {\n          if (this._activeSelectorParams && this._activeSelectorParams.revertFunction) {\n            if (this._activeSelectorParams.revertFunction(this._dragEl, this.manager.getPosition(this._dragEl)) === true) {\n              this.manager.setPosition(this._dragEl, this._posAtDown);\n              this._dispatch(EVENT_REVERT, this._dragEl);\n            }\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_downListener\",\n    value: function _downListener(e) {\n      if (e.defaultPrevented) {\n        return;\n      }\n      var isNotRightClick = this.rightButtonCanDrag || e.which !== 3 && e.button !== 2;\n      if (isNotRightClick && this.isEnabled() && this._canDrag()) {\n        var _f = this._testFilter(e) && _inputFilter(e, this.el, this.manager);\n        if (_f) {\n          this._activeSelectorParams = null;\n          this._elementToDrag = null;\n          if (this._availableSelectors.length === 0) {\n            console.log(\"JSPLUMB: no available drag selectors\");\n          }\n          var eventTarget = e.target || e.srcElement;\n          var match = findMatchingSelector(this._availableSelectors, this.el, eventTarget);\n          if (match != null) {\n            this._activeSelectorParams = match[0];\n            this._elementToDrag = match[1];\n          }\n          if (this._activeSelectorParams == null || this._elementToDrag == null) {\n            return;\n          }\n          var initial = this._activeSelectorParams.dragInit ? this._activeSelectorParams.dragInit(this._elementToDrag, e) : null;\n          if (initial != null) {\n            this._elementToDrag = initial;\n          }\n          if (this.clone) {\n            this._dragEl = this._elementToDrag.cloneNode(true);\n            addClass(this._dragEl, _classes.clonedDrag);\n            this._dragEl.setAttribute(\"id\", null);\n            this._dragEl.style.position = \"absolute\";\n            if (this._parent != null) {\n              var _p2 = this.manager.getPosition(this.el);\n              this._dragEl.style.left = _p2.x + \"px\";\n              this._dragEl.style.top = _p2.y + \"px\";\n              this._parent.appendChild(this._dragEl);\n            } else {\n              var b = offsetRelativeToRoot(this._elementToDrag);\n              this._dragEl.style.left = b.x + \"px\";\n              this._dragEl.style.top = b.y + \"px\";\n              document.body.appendChild(this._dragEl);\n            }\n          } else {\n            this._dragEl = this._elementToDrag;\n          }\n          if (this.consumeStartEvent) {\n            consume(e);\n          }\n          this._downAt = pageLocation(e);\n          if (this._dragEl && this._dragEl.parentNode) {\n            this._initialScroll = {\n              x: this._dragEl.parentNode.scrollLeft,\n              y: this._dragEl.parentNode.scrollTop\n            };\n          }\n          this._posAtDown = this.manager.getPosition(this._dragEl);\n          this._pagePosAtDown = offsetRelativeToRoot(this._dragEl);\n          this._pageDelta = {\n            x: this._pagePosAtDown.x - this._posAtDown.x,\n            y: this._pagePosAtDown.y - this._posAtDown.y\n          };\n          this._size = this.manager.getSize(this._dragEl);\n          this.eventManager.on(document, EVENT_MOUSEMOVE, this.moveListener);\n          this.eventManager.on(document, EVENT_MOUSEUP, this.upListener);\n          addClass(document.body, _classes.noSelect);\n          this._dispatch(EVENT_BEFORE_START, {\n            el: this.el,\n            pos: this._posAtDown,\n            e: e,\n            drag: this,\n            size: this._size\n          });\n        } else if (this._consumeFilteredEvents) {\n          consume(e);\n        }\n      }\n    }\n  }, {\n    key: \"_moveListener\",\n    value: function _moveListener(e) {\n      if (this._downAt) {\n        if (!this._moving) {\n          var dispatchResult = this._dispatch(EVENT_START, {\n            el: this.el,\n            pos: this._posAtDown,\n            e: e,\n            drag: this,\n            size: this._size\n          });\n          if (dispatchResult !== false) {\n            if (!this._downAt) {\n              return;\n            }\n            this.mark(dispatchResult);\n            this._moving = true;\n          } else {\n            this.abort();\n          }\n        }\n        if (this._downAt) {\n          var _pos2 = pageLocation(e),\n              dx = _pos2.x - this._downAt.x,\n              dy = _pos2.y - this._downAt.y,\n              _z2 = this._ignoreZoom ? 1 : this.manager.getZoom();\n          this._lastPosition = {\n            x: _pos2.x,\n            y: _pos2.y\n          };\n          this._lastScrollValues = {\n            x: document.documentElement.scrollLeft,\n            y: document.documentElement.scrollTop\n          };\n          if (this._dragEl && this._dragEl.parentNode) {\n            dx += this._dragEl.parentNode.scrollLeft - this._initialScroll.x;\n            dy += this._dragEl.parentNode.scrollTop - this._initialScroll.y;\n          }\n          dx /= _z2;\n          dy /= _z2;\n          this.moveBy(dx, dy, e);\n        }\n      }\n    }\n  }, {\n    key: \"getDragDelta\",\n    value: function getDragDelta() {\n      if (this._posAtDown != null && this._downAt != null) {\n        return {\n          x: this._downAt.x - this._posAtDown.x,\n          y: this._downAt.y - this._posAtDown.y\n        };\n      } else {\n        return {\n          x: 0,\n          y: 0\n        };\n      }\n    }\n  }, {\n    key: \"mark\",\n    value: function mark(payload) {\n      this._posAtDown = this.manager.getPosition(this._dragEl);\n      this._pagePosAtDown = offsetRelativeToRoot(this._dragEl);\n      this._pageDelta = {\n        x: this._pagePosAtDown.x - this._posAtDown.x,\n        y: this._pagePosAtDown.y - this._posAtDown.y\n      };\n      this._size = this.manager.getSize(this._dragEl);\n      addClass(this._dragEl, this.manager.css.drag);\n      this._constrainRect = getConstrainingRectangle(this._dragEl);\n      this._ghostDx = 0;\n      this._ghostDy = 0;\n    }\n  }, {\n    key: \"unmark\",\n    value: function unmark(e) {\n      if (this._isConstrained && this._useGhostProxy(this._elementToDrag, this._dragEl)) {\n        this._ghostProxyOffsets = {\n          x: this._dragEl.offsetLeft - this._ghostDx,\n          y: this._dragEl.offsetTop - this._ghostDy\n        };\n        this._dragEl.parentNode.removeChild(this._dragEl);\n        this._dragEl = this._elementToDrag;\n      } else {\n        this._ghostProxyOffsets = null;\n      }\n      removeClass(this._dragEl, this.manager.css.drag);\n      this._isConstrained = false;\n    }\n  }, {\n    key: \"moveBy\",\n    value: function moveBy(dx, dy, e) {\n      var desiredLoc = this.toGrid({\n        x: this._posAtDown.x + dx,\n        y: this._posAtDown.y + dy\n      }),\n          cPos = this._doConstrain(desiredLoc, this._dragEl, this._constrainRect, this._size, e);\n      if (cPos != null) {\n        if (this._useGhostProxy(this.el, this._dragEl)) {\n          if (desiredLoc.x !== cPos.x || desiredLoc.y !== cPos.y) {\n            if (!this._isConstrained) {\n              var gp = this._ghostProxyFunction(this._elementToDrag);\n              addClass(gp, _classes.ghostProxy);\n              if (this._ghostProxyParent) {\n                this._ghostProxyParent.appendChild(gp);\n                this._currentParentPosition = offsetRelativeToRoot(this._elementToDrag.parentNode);\n                this._ghostParentPosition = offsetRelativeToRoot(this._ghostProxyParent);\n                this._ghostDx = this._currentParentPosition.x - this._ghostParentPosition.x;\n                this._ghostDy = this._currentParentPosition.y - this._ghostParentPosition.y;\n              } else {\n                this._elementToDrag.parentNode.appendChild(gp);\n              }\n              this._dragEl = gp;\n              this._isConstrained = true;\n            }\n            cPos = desiredLoc;\n          } else {\n            if (this._isConstrained) {\n              this._dragEl.parentNode.removeChild(this._dragEl);\n              this._dragEl = this._elementToDrag;\n              this._isConstrained = false;\n              this._currentParentPosition = null;\n              this._ghostParentPosition = null;\n              this._ghostDx = 0;\n              this._ghostDy = 0;\n            }\n          }\n        }\n        this.manager.setPosition(this._dragEl, {\n          x: cPos.x + this._ghostDx,\n          y: cPos.y + this._ghostDy\n        });\n        this._dispatch(EVENT_DRAG, {\n          el: this.el,\n          pos: cPos,\n          e: e,\n          drag: this,\n          size: this._size,\n          originalPos: this._posAtDown\n        });\n      }\n    }\n  }, {\n    key: \"abort\",\n    value: function abort() {\n      if (this._downAt != null) {\n        this._upListener();\n      }\n    }\n  }, {\n    key: \"getDragElement\",\n    value: function getDragElement(retrieveOriginalElement) {\n      return retrieveOriginalElement ? this._elementToDrag || this.el : this._dragEl || this.el;\n    }\n  }, {\n    key: \"stop\",\n    value: function stop(e, force) {\n      if (force || this._moving) {\n        var positions = [],\n            dPos = this.manager.getPosition(this._dragEl);\n        positions.push([this._dragEl, dPos, this, this._size]);\n        this._dispatch(EVENT_STOP, {\n          el: this._dragEl,\n          pos: this._ghostProxyOffsets || dPos,\n          finalPos: dPos,\n          e: e,\n          drag: this,\n          selection: positions,\n          size: this._size,\n          originalPos: {\n            x: this._posAtDown.x,\n            y: this._posAtDown.y\n          }\n        });\n      } else if (!this._moving) {\n        this._activeSelectorParams.dragAbort ? this._activeSelectorParams.dragAbort(this._elementToDrag) : null;\n      }\n    }\n  }, {\n    key: \"_dispatch\",\n    value: function _dispatch(evt, value) {\n      var result = null;\n      if (this._activeSelectorParams && this._activeSelectorParams[evt]) {\n        result = this._activeSelectorParams[evt](value);\n      } else if (this.listeners[evt]) {\n        for (var i = 0; i < this.listeners[evt].length; i++) {\n          try {\n            var v = this.listeners[evt][i](value);\n            if (v != null) {\n              result = v;\n            }\n          } catch (e) {}\n        }\n      }\n      return result;\n    }\n  }, {\n    key: \"resolveGrid\",\n    value: function resolveGrid() {\n      var out = {\n        grid: null,\n        thresholdX: DEFAULT_GRID_X / 2,\n        thresholdY: DEFAULT_GRID_Y / 2\n      };\n      if (this._activeSelectorParams != null && this._activeSelectorParams.grid != null) {\n        out.grid = this._activeSelectorParams.grid;\n        if (this._activeSelectorParams.snapThreshold != null) {\n          out.thresholdX = this._activeSelectorParams.snapThreshold;\n          out.thresholdY = this._activeSelectorParams.snapThreshold;\n        }\n      }\n      return out;\n    }\n  }, {\n    key: \"toGrid\",\n    value: function toGrid(pos) {\n      var _this$resolveGrid = this.resolveGrid(),\n          grid = _this$resolveGrid.grid,\n          thresholdX = _this$resolveGrid.thresholdX,\n          thresholdY = _this$resolveGrid.thresholdY;\n      if (grid == null) {\n        return pos;\n      } else {\n        var tx = grid ? grid.w / 2 : thresholdX,\n            ty = grid ? grid.h / 2 : thresholdY;\n        return snapToGrid(pos, grid, tx, ty);\n      }\n    }\n  }, {\n    key: \"setUseGhostProxy\",\n    value: function setUseGhostProxy(val) {\n      this._useGhostProxy = val ? TRUE : FALSE;\n    }\n  }, {\n    key: \"_doConstrain\",\n    value: function _doConstrain(pos, dragEl, _constrainRect, _size, e) {\n      if (this._activeSelectorParams != null && this._activeSelectorParams.constrainFunction && typeof this._activeSelectorParams.constrainFunction === \"function\") {\n        return this._activeSelectorParams.constrainFunction(pos, dragEl, _constrainRect, _size, e);\n      } else {\n        return pos;\n      }\n    }\n  }, {\n    key: \"_testFilter\",\n    value: function _testFilter(e) {\n      for (var key in this._filters) {\n        var f = this._filters[key];\n        var rv = f[0](e);\n        if (f[1]) {\n          rv = !rv;\n        }\n        if (!rv) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }, {\n    key: \"addFilter\",\n    value: function addFilter(f, _exclude) {\n      var _this2 = this;\n      if (f) {\n        var key = _assignId(f);\n        this._filters[key] = [function (e) {\n          var t = e.srcElement || e.target;\n          var m;\n          if (isString(f)) {\n            m = matchesSelector$1(t, f, _this2.el);\n          } else if (typeof f === \"function\") {\n            m = f(e, _this2.el);\n          }\n          return m;\n        }, _exclude !== false];\n      }\n    }\n  }, {\n    key: \"removeFilter\",\n    value: function removeFilter(f) {\n      var key = typeof f === \"function\" ? f._katavorioId : f;\n      delete this._filters[key];\n    }\n  }, {\n    key: \"clearAllFilters\",\n    value: function clearAllFilters() {\n      this._filters = {};\n    }\n  }, {\n    key: \"addSelector\",\n    value: function addSelector(params, atStart) {\n      if (params.selector) {\n        if (atStart) {\n          this._availableSelectors.unshift(params);\n        } else {\n          this._availableSelectors.push(params);\n        }\n      }\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.eventManager.off(this.el, EVENT_MOUSEDOWN, this.downListener);\n      this.eventManager.off(document, EVENT_MOUSEMOVE, this.moveListener);\n      this.eventManager.off(document, EVENT_MOUSEUP, this.upListener);\n      this.downListener = null;\n      this.upListener = null;\n      this.moveListener = null;\n      if (this.scrollTracker != null) {\n        document.removeEventListener(\"scroll\", this.scrollTracker);\n      }\n    }\n  }]);\n  return Drag;\n}(Base);\nvar DEFAULT_INPUTS = [\"input\", \"textarea\", \"select\", \"button\", \"option\"];\nvar DEFAULT_INPUT_FILTER_SELECTOR = DEFAULT_INPUTS.join(\",\");\nvar Collicat = function () {\n  function Collicat(options) {\n    _classCallCheck(this, Collicat);\n    _defineProperty(this, \"eventManager\", void 0);\n    _defineProperty(this, \"zoom\", 1);\n    _defineProperty(this, \"css\", {});\n    _defineProperty(this, \"inputFilterSelector\", void 0);\n    _defineProperty(this, \"positioningStrategy\", void 0);\n    _defineProperty(this, \"_positionSetter\", void 0);\n    _defineProperty(this, \"_positionGetter\", void 0);\n    _defineProperty(this, \"_sizeSetter\", void 0);\n    _defineProperty(this, \"_sizeGetter\", void 0);\n    options = options || {};\n    this.inputFilterSelector = options.inputFilterSelector || DEFAULT_INPUT_FILTER_SELECTOR;\n    this.eventManager = new EventManager();\n    this.zoom = options.zoom || 1;\n    this.positioningStrategy = options.positioningStrategy || PositioningStrategies.absolutePosition;\n    this._positionGetter = positionerGetters.get(this.positioningStrategy);\n    this._positionSetter = positionerSetters.get(this.positioningStrategy);\n    this._sizeGetter = sizeGetters.get(this.positioningStrategy);\n    this._sizeSetter = sizeSetters.get(this.positioningStrategy);\n    var _c = options.css || {};\n    extend(this.css, _c);\n  }\n  _createClass(Collicat, [{\n    key: \"getPosition\",\n    value: function getPosition(el) {\n      return this._positionGetter(el);\n    }\n  }, {\n    key: \"setPosition\",\n    value: function setPosition(el, p) {\n      this._positionSetter(el, p);\n    }\n  }, {\n    key: \"getSize\",\n    value: function getSize(el) {\n      return this._sizeGetter(el);\n    }\n  }, {\n    key: \"getZoom\",\n    value: function getZoom() {\n      return this.zoom;\n    }\n  }, {\n    key: \"setZoom\",\n    value: function setZoom(z) {\n      this.zoom = z;\n    }\n  }, {\n    key: \"_prepareParams\",\n    value: function _prepareParams(p) {\n      p = p || {};\n      var _p = {\n        events: {}\n      },\n          i;\n      for (i in p) {\n        _p[i] = p[i];\n      }\n      for (i = 0; i < _events.length; i++) {\n        _p.events[_events[i]] = p[_events[i]] || _devNull;\n      }\n      return _p;\n    }\n  }, {\n    key: \"getInputFilterSelector\",\n    value: function getInputFilterSelector() {\n      return this.inputFilterSelector;\n    }\n  }, {\n    key: \"setInputFilterSelector\",\n    value: function setInputFilterSelector(selector) {\n      this.inputFilterSelector = selector;\n      return this;\n    }\n  }, {\n    key: \"draggable\",\n    value: function draggable(el, params) {\n      if (el._katavorioDrag == null) {\n        var _p3 = this._prepareParams(params);\n        var d = new Drag(el, _p3, this);\n        addClass(el, _classes.delegatedDraggable);\n        el._katavorioDrag = d;\n        return d;\n      } else {\n        return el._katavorioDrag;\n      }\n    }\n  }, {\n    key: \"destroyDraggable\",\n    value: function destroyDraggable(el) {\n      if (el._katavorioDrag) {\n        el._katavorioDrag.destroy();\n        delete el._katavorioDrag;\n      }\n    }\n  }]);\n  return Collicat;\n}();\n\nvar CLASS_DRAG_SELECTED = \"jtk-drag-selected\";\nvar DragSelection = function () {\n  function DragSelection(instance) {\n    _classCallCheck(this, DragSelection);\n    this.instance = instance;\n    _defineProperty(this, \"_dragSelection\", []);\n    _defineProperty(this, \"_dragSizes\", new Map());\n    _defineProperty(this, \"_dragElements\", new Map());\n    _defineProperty(this, \"_dragElementStartPositions\", new Map());\n    _defineProperty(this, \"_dragElementPositions\", new Map());\n    _defineProperty(this, \"__activeSet\", void 0);\n  }\n  _createClass(DragSelection, [{\n    key: \"_activeSet\",\n    get: function get() {\n      if (this.__activeSet == null) {\n        return this._dragSelection;\n      } else {\n        return this.__activeSet;\n      }\n    }\n  }, {\n    key: \"length\",\n    get: function get() {\n      return this._dragSelection.length;\n    }\n  }, {\n    key: \"filterActiveSet\",\n    value: function filterActiveSet(fn) {\n      var _this = this;\n      this.__activeSet = [];\n      forEach(this._dragSelection, function (p) {\n        if (fn(p)) {\n          _this.__activeSet.push(p);\n        }\n      });\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      var _this2 = this;\n      this.reset();\n      forEach(this._dragSelection, function (p) {\n        return _this2.instance.removeClass(p.jel, CLASS_DRAG_SELECTED);\n      });\n      this._dragSelection.length = 0;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this._dragElementStartPositions.clear();\n      this._dragElementPositions.clear();\n      this._dragSizes.clear();\n      this._dragElements.clear();\n      this.__activeSet = null;\n    }\n  }, {\n    key: \"initialisePositions\",\n    value: function initialisePositions() {\n      var _this3 = this;\n      forEach(this._activeSet, function (p) {\n        var vp = _this3.instance.viewport.getPosition(p.id);\n        var off = {\n          x: parseInt(\"\" + p.jel.offsetLeft, 10),\n          y: parseInt(\"\" + p.jel.offsetTop, 10)\n        };\n        _this3._dragElementStartPositions.set(p.id, off);\n        _this3._dragElementPositions.set(p.id, off);\n        _this3._dragSizes.set(p.id, {\n          w: vp.w,\n          h: vp.h\n        });\n      });\n    }\n  }, {\n    key: \"updatePositions\",\n    value: function updatePositions(currentPosition, originalPosition, callback) {\n      var _this4 = this;\n      var dx = currentPosition.x - originalPosition.x,\n          dy = currentPosition.y - originalPosition.y;\n      forEach(this._activeSet, function (p) {\n        var op = _this4._dragElementStartPositions.get(p.id);\n        if (op) {\n          var x = op.x + dx,\n              y = op.y + dy;\n          var _s = _this4._dragSizes.get(p.id);\n          var _b = {\n            x: x,\n            y: y,\n            w: _s.w,\n            h: _s.h\n          };\n          if (p.jel._jsPlumbParentGroup && p.jel._jsPlumbParentGroup.constrain) {\n            var constrainRect = {\n              w: p.jel.parentNode.offsetWidth + p.jel.parentNode.scrollLeft,\n              h: p.jel.parentNode.offsetHeight + p.jel.parentNode.scrollTop\n            };\n            _b.x = Math.max(_b.x, 0);\n            _b.y = Math.max(_b.y, 0);\n            _b.x = Math.min(_b.x, constrainRect.w - _s.w);\n            _b.y = Math.min(_b.y, constrainRect.h - _s.h);\n          }\n          _this4._dragElementPositions.set(p.id, {\n            x: x,\n            y: y\n          });\n          p.jel.style.left = _b.x + \"px\";\n          p.jel.style.top = _b.y + \"px\";\n          callback(p.jel, p.id, _s, _b);\n        }\n      });\n    }\n  }, {\n    key: \"each\",\n    value: function each(f) {\n      var _this5 = this;\n      forEach(this._activeSet, function (p) {\n        var s = _this5._dragSizes.get(p.id);\n        var o = _this5._dragElementPositions.get(p.id);\n        var orig = _this5._dragElementStartPositions.get(p.id);\n        f(p.jel, p.id, o, s, orig);\n      });\n    }\n  }, {\n    key: \"add\",\n    value: function add(el, id) {\n      var jel = el;\n      id = id || this.instance.getId(jel);\n      var idx = findWithFunction(this._dragSelection, function (p) {\n        return p.id === id;\n      });\n      if (idx === -1) {\n        this.instance.addClass(el, CLASS_DRAG_SELECTED);\n        this._dragSelection.push({\n          id: id,\n          jel: jel\n        });\n      }\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(el) {\n      var _this6 = this;\n      var jel = el;\n      this._dragSelection = this._dragSelection.filter(function (p) {\n        var out = p.jel !== jel;\n        if (!out) {\n          _this6.instance.removeClass(p.jel, CLASS_DRAG_SELECTED);\n        }\n        return out;\n      });\n    }\n  }, {\n    key: \"toggle\",\n    value: function toggle(el) {\n      var jel = el;\n      var idx = findWithFunction(this._dragSelection, function (p) {\n        return p.jel === jel;\n      });\n      if (idx !== -1) {\n        this.remove(jel);\n      } else {\n        this.add(el);\n      }\n    }\n  }]);\n  return DragSelection;\n}();\n\nvar CLASS_DELEGATED_DRAGGABLE = \"jtk-delegated-draggable\";\nvar CLASS_DRAGGABLE = \"jtk-draggable\";\nvar CLASS_DRAG_CONTAINER = \"jtk-drag\";\nvar CLASS_GHOST_PROXY = \"jtk-ghost-proxy\";\nvar CLASS_DRAG_ACTIVE = \"jtk-drag-active\";\nvar CLASS_DRAGGED = \"jtk-dragged\";\nvar CLASS_DRAG_HOVER = \"jtk-drag-hover\";\nvar DragManager = function () {\n  function DragManager(instance, dragSelection, options) {\n    var _this = this;\n    _classCallCheck(this, DragManager);\n    this.instance = instance;\n    this.dragSelection = dragSelection;\n    _defineProperty(this, \"collicat\", void 0);\n    _defineProperty(this, \"drag\", void 0);\n    _defineProperty(this, \"_draggables\", {});\n    _defineProperty(this, \"_dlist\", []);\n    _defineProperty(this, \"_elementsWithEndpoints\", {});\n    _defineProperty(this, \"_draggablesForElements\", {});\n    _defineProperty(this, \"handlers\", []);\n    _defineProperty(this, \"_trackScroll\", void 0);\n    _defineProperty(this, \"_filtersToAdd\", []);\n    this.collicat = new Collicat({\n      zoom: this.instance.currentZoom,\n      css: {\n        noSelect: this.instance.dragSelectClass,\n        delegatedDraggable: CLASS_DELEGATED_DRAGGABLE,\n        draggable: CLASS_DRAGGABLE,\n        drag: CLASS_DRAG_CONTAINER,\n        selected: CLASS_DRAG_SELECTED,\n        active: CLASS_DRAG_ACTIVE,\n        hover: CLASS_DRAG_HOVER,\n        ghostProxy: CLASS_GHOST_PROXY\n      }\n    });\n    this.instance.bind(EVENT_ZOOM, function (z) {\n      _this.collicat.setZoom(z);\n    });\n    options = options || {};\n    this._trackScroll = options.trackScroll !== false;\n  }\n  _createClass(DragManager, [{\n    key: \"addHandler\",\n    value: function addHandler(handler, dragOptions) {\n      var _this2 = this;\n      var o = extend({\n        selector: handler.selector\n      }, dragOptions || {});\n      o.start = wrap(o.start, function (p) {\n        return handler.onStart(p);\n      }, false);\n      o.drag = wrap(o.drag, function (p) {\n        return handler.onDrag(p);\n      });\n      o.stop = wrap(o.stop, function (p) {\n        return handler.onStop(p);\n      });\n      var handlerBeforeStart = (handler.onBeforeStart || function (p) {}).bind(handler);\n      o.beforeStart = wrap(o.beforeStart, function (p) {\n        return handlerBeforeStart(p);\n      });\n      o.dragInit = function (el, e) {\n        return handler.onDragInit(el, e);\n      };\n      o.dragAbort = function (el) {\n        return handler.onDragAbort(el);\n      };\n      if (handler.useGhostProxy) {\n        o.useGhostProxy = handler.useGhostProxy;\n        o.makeGhostProxy = handler.makeGhostProxy;\n      }\n      if (o.constrainFunction == null && o.containment != null) {\n        switch (o.containment) {\n          case ContainmentType.notNegative:\n            {\n              o.constrainFunction = function (pos, dragEl, _constrainRect, _size) {\n                return {\n                  x: Math.max(0, Math.min(pos.x)),\n                  y: Math.max(0, Math.min(pos.y))\n                };\n              };\n              break;\n            }\n          case ContainmentType.parent:\n            {\n              var padding = o.containmentPadding || 5;\n              o.constrainFunction = function (pos, dragEl, _constrainRect, _size) {\n                var x = pos.x < 0 ? 0 : pos.x > _constrainRect.w - padding ? _constrainRect.w - padding : pos.x;\n                var y = pos.y < 0 ? 0 : pos.y > _constrainRect.h - padding ? _constrainRect.h - padding : pos.y;\n                return {\n                  x: x,\n                  y: y\n                };\n              };\n              break;\n            }\n          case ContainmentType.parentEnclosed:\n            {\n              o.constrainFunction = function (pos, dragEl, _constrainRect, _size) {\n                var x = pos.x < 0 ? 0 : pos.x + _size.w > _constrainRect.w ? _constrainRect.w - _size.w : pos.x;\n                var y = pos.y < 0 ? 0 : pos.y + _size.h > _constrainRect.h ? _constrainRect.h - _size.h : pos.y;\n                return {\n                  x: x,\n                  y: y\n                };\n              };\n              break;\n            }\n        }\n      }\n      if (this.drag == null) {\n        o.trackScroll = this._trackScroll;\n        this.drag = this.collicat.draggable(this.instance.getContainer(), o);\n        forEach(this._filtersToAdd, function (filterToAdd) {\n          return _this2.drag.addFilter(filterToAdd[0], filterToAdd[1]);\n        });\n        this.drag.on(EVENT_REVERT, function (el) {\n          _this2.instance.revalidate(el);\n        });\n      } else {\n        this.drag.addSelector(o);\n      }\n      this.handlers.push({\n        handler: handler,\n        options: o\n      });\n      handler.init(this.drag);\n    }\n  }, {\n    key: \"addSelector\",\n    value: function addSelector(params, atStart) {\n      this.drag && this.drag.addSelector(params, atStart);\n    }\n  }, {\n    key: \"addFilter\",\n    value: function addFilter(filter, exclude) {\n      if (this.drag == null) {\n        this._filtersToAdd.push([filter, exclude === true]);\n      } else {\n        this.drag.addFilter(filter, exclude);\n      }\n    }\n  }, {\n    key: \"removeFilter\",\n    value: function removeFilter(filter) {\n      if (this.drag != null) {\n        this.drag.removeFilter(filter);\n      }\n    }\n  }, {\n    key: \"setFilters\",\n    value: function setFilters(filters) {\n      var _this3 = this;\n      forEach(filters, function (f) {\n        _this3.drag.addFilter(f[0], f[1]);\n      });\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      var out = [];\n      forEach(this.handlers, function (p) {\n        p.handler.reset();\n      });\n      this.handlers.length = 0;\n      if (this.drag != null) {\n        var currentFilters = this.drag._filters;\n        for (var f in currentFilters) {\n          out.push([f, currentFilters[f][1]]);\n        }\n        this.collicat.destroyDraggable(this.instance.getContainer());\n      }\n      delete this.drag;\n      return out;\n    }\n  }, {\n    key: \"setOption\",\n    value: function setOption(handler, options) {\n      var handlerAndOptions = getWithFunction(this.handlers, function (p) {\n        return p.handler === handler;\n      });\n      if (handlerAndOptions != null) {\n        extend(handlerAndOptions.options, options || {});\n      }\n    }\n  }]);\n  return DragManager;\n}();\n\nfunction decodeDragGroupSpec(instance, spec) {\n  if (isString(spec)) {\n    return {\n      id: spec,\n      active: true\n    };\n  } else {\n    return {\n      id: spec.id,\n      active: spec.active\n    };\n  }\n}\nfunction isActiveDragGroupMember(dragGroup, el) {\n  var details = getFromSetWithFunction(dragGroup.members, function (m) {\n    return m.el === el;\n  });\n  if (details !== null) {\n    return details.active === true;\n  } else {\n    return false;\n  }\n}\nfunction getAncestors(el) {\n  var ancestors = [];\n  var p = el._jsPlumbParentGroup;\n  while (p != null) {\n    ancestors.push(p.el);\n    p = p.group;\n  }\n  return ancestors;\n}\nvar ElementDragHandler = function () {\n  function ElementDragHandler(instance, _dragSelection) {\n    _classCallCheck(this, ElementDragHandler);\n    this.instance = instance;\n    this._dragSelection = _dragSelection;\n    _defineProperty(this, \"selector\", \"> \" + SELECTOR_MANAGED_ELEMENT + \":not(\" + cls(CLASS_OVERLAY) + \")\");\n    _defineProperty(this, \"_dragOffset\", null);\n    _defineProperty(this, \"_groupLocations\", []);\n    _defineProperty(this, \"_intersectingGroups\", []);\n    _defineProperty(this, \"_currentDragParentGroup\", null);\n    _defineProperty(this, \"_dragGroupByElementIdMap\", {});\n    _defineProperty(this, \"_dragGroupMap\", {});\n    _defineProperty(this, \"_currentDragGroup\", null);\n    _defineProperty(this, \"_currentDragGroupOffsets\", new Map());\n    _defineProperty(this, \"_currentDragGroupSizes\", new Map());\n    _defineProperty(this, \"_currentDragGroupOriginalPositions\", new Map());\n    _defineProperty(this, \"_dragPayload\", null);\n    _defineProperty(this, \"drag\", void 0);\n    _defineProperty(this, \"originalPosition\", void 0);\n  }\n  _createClass(ElementDragHandler, [{\n    key: \"onDragInit\",\n    value: function onDragInit(el) {\n      return null;\n    }\n  }, {\n    key: \"onDragAbort\",\n    value: function onDragAbort(el) {\n      return null;\n    }\n  }, {\n    key: \"getDropGroup\",\n    value: function getDropGroup() {\n      var dropGroup = null;\n      if (this._intersectingGroups.length > 0) {\n        var targetGroup = this._intersectingGroups[0].groupLoc.group;\n        var intersectingElement = this._intersectingGroups[0].intersectingElement;\n        var currentGroup = intersectingElement._jsPlumbParentGroup;\n        if (currentGroup !== targetGroup) {\n          if (currentGroup == null || !currentGroup.overrideDrop(intersectingElement, targetGroup)) {\n            dropGroup = this._intersectingGroups[0];\n          }\n        }\n      }\n      return dropGroup;\n    }\n  }, {\n    key: \"onStop\",\n    value: function onStop(params) {\n      var _this$_currentDragGro,\n          _this = this;\n      var jel = params.drag.getDragElement();\n      var dropGroup = this.getDropGroup();\n      var elementsToProcess = [];\n      elementsToProcess.push({\n        el: jel,\n        id: this.instance.getId(jel),\n        pos: params.finalPos,\n        originalGroup: jel._jsPlumbParentGroup,\n        redrawResult: null,\n        originalPos: params.originalPos,\n        reverted: false,\n        dropGroup: dropGroup != null ? dropGroup.groupLoc.group : null\n      });\n      function addElementToProcess(el, id, currentPos, s, originalPosition) {\n        var x = currentPos.x,\n            y = currentPos.y;\n        if (el._jsPlumbParentGroup && el._jsPlumbParentGroup.constrain) {\n          var constrainRect = {\n            w: el.parentNode.offsetWidth + el.parentNode.scrollLeft,\n            h: el.parentNode.offsetHeight + el.parentNode.scrollTop\n          };\n          x = Math.max(x, 0);\n          y = Math.max(y, 0);\n          x = Math.min(x, constrainRect.w - s.w);\n          y = Math.min(y, constrainRect.h - s.h);\n          currentPos.x = x;\n          currentPos.y = y;\n        }\n        elementsToProcess.push({\n          el: el,\n          id: id,\n          pos: currentPos,\n          originalPos: originalPosition,\n          originalGroup: el._jsPlumbParentGroup,\n          redrawResult: null,\n          reverted: false,\n          dropGroup: dropGroup === null || dropGroup === void 0 ? void 0 : dropGroup.groupLoc.group\n        });\n      }\n      this._dragSelection.each(function (el, id, o, s, originalPosition) {\n        if (el !== params.el) {\n          addElementToProcess(el, id, {\n            x: o.x,\n            y: o.y\n          }, s, originalPosition);\n        }\n      });\n      (_this$_currentDragGro = this._currentDragGroup) === null || _this$_currentDragGro === void 0 ? void 0 : _this$_currentDragGro.members.forEach(function (d) {\n        if (d.el !== params.el) {\n          var offset = _this._currentDragGroupOffsets.get(d.elId);\n          var s = _this._currentDragGroupSizes.get(d.elId);\n          var pp = {\n            x: params.finalPos.x + offset[0].x,\n            y: params.finalPos.y + offset[0].y\n          };\n          addElementToProcess(d.el, d.elId, pp, s, _this._currentDragGroupOriginalPositions.get(d.elId));\n        }\n      });\n      forEach(elementsToProcess, function (p) {\n        var wasInGroup = p.originalGroup != null,\n            isInOriginalGroup = wasInGroup && isInsideParent(_this.instance, p.el, p.pos),\n            parentOffset = {\n          x: 0,\n          y: 0\n        };\n        if (wasInGroup && !isInOriginalGroup) {\n          if (dropGroup == null) {\n            var orphanedPosition = _this._pruneOrOrphan(p, true, true);\n            if (orphanedPosition.pos != null) {\n              p.pos = orphanedPosition.pos.pos;\n            } else {\n              if (!orphanedPosition.pruned && p.originalGroup.revert) {\n                p.pos = p.originalPos;\n                p.reverted = true;\n              }\n            }\n          }\n        } else if (wasInGroup && isInOriginalGroup) {\n          parentOffset = _this._computeOffsetByParentGroup(p.originalGroup);\n        }\n        if (dropGroup != null && !isInOriginalGroup) {\n          _this.instance.groupManager.addToGroup(dropGroup.groupLoc.group, false, p.el);\n        } else {\n          p.dropGroup = null;\n        }\n        if (p.reverted) {\n          _this.instance.setPosition(p.el, p.pos);\n        }\n        p.redrawResult = _this.instance.setElementPosition(p.el, p.pos.x + parentOffset.x, p.pos.y + parentOffset.y);\n        _this.instance.removeClass(p.el, CLASS_DRAGGED);\n        _this.instance.select({\n          source: p.el\n        }).removeClass(_this.instance.elementDraggingClass + \" \" + _this.instance.sourceElementDraggingClass, true);\n        _this.instance.select({\n          target: p.el\n        }).removeClass(_this.instance.elementDraggingClass + \" \" + _this.instance.targetElementDraggingClass, true);\n      });\n      if (elementsToProcess[0].originalGroup != null) {\n        var currentGroup = jel._jsPlumbParentGroup;\n        if (currentGroup !== elementsToProcess[0].originalGroup) {\n          var originalElement = params.drag.getDragElement(true);\n          if (elementsToProcess[0].originalGroup.ghost) {\n            var o1 = this.instance.getPosition(this.instance.getGroupContentArea(currentGroup));\n            var o2 = this.instance.getPosition(this.instance.getGroupContentArea(elementsToProcess[0].originalGroup));\n            var o = {\n              x: o2.x + params.pos.x - o1.x,\n              y: o2.y + params.pos.y - o1.y\n            };\n            originalElement.style.left = o.x + \"px\";\n            originalElement.style.top = o.y + \"px\";\n            this.instance.revalidate(originalElement);\n          }\n        }\n      }\n      this.instance.fire(EVENT_DRAG_STOP, {\n        elements: elementsToProcess,\n        e: params.e,\n        el: jel,\n        payload: this._dragPayload\n      });\n      this._cleanup();\n    }\n  }, {\n    key: \"_cleanup\",\n    value: function _cleanup() {\n      var _this2 = this;\n      forEach(this._groupLocations, function (groupLoc) {\n        _this2.instance.removeClass(groupLoc.el, CLASS_DRAG_ACTIVE);\n        _this2.instance.removeClass(groupLoc.el, CLASS_DRAG_HOVER);\n      });\n      this._currentDragParentGroup = null;\n      this._groupLocations.length = 0;\n      this.instance.hoverSuspended = false;\n      this._dragOffset = null;\n      this._dragSelection.reset();\n      this._dragPayload = null;\n      this._currentDragGroupOffsets.clear();\n      this._currentDragGroupSizes.clear();\n      this._currentDragGroupOriginalPositions.clear();\n      this._currentDragGroup = null;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {}\n  }, {\n    key: \"init\",\n    value: function init(drag) {\n      this.drag = drag;\n    }\n  }, {\n    key: \"onDrag\",\n    value: function onDrag(params) {\n      var _this3 = this;\n      var el = params.drag.getDragElement();\n      var id = this.instance.getId(el);\n      var finalPos = params.pos;\n      var elSize = this.instance.viewport.getPosition(id);\n      var ui = {\n        x: finalPos.x,\n        y: finalPos.y\n      };\n      this._intersectingGroups.length = 0;\n      if (this._dragOffset != null) {\n        ui.x += this._dragOffset.x;\n        ui.y += this._dragOffset.y;\n      }\n      var _one = function _one(el, bounds, findIntersectingGroups) {\n        if (findIntersectingGroups) {\n          var ancestorsOfIntersectingGroups = new Set();\n          forEach(_this3._groupLocations, function (groupLoc) {\n            if (!ancestorsOfIntersectingGroups.has(groupLoc.group.id) && intersects(bounds, groupLoc.r)) {\n              if (groupLoc.group !== _this3._currentDragParentGroup) {\n                _this3.instance.addClass(groupLoc.el, CLASS_DRAG_HOVER);\n              }\n              _this3._intersectingGroups.push({\n                groupLoc: groupLoc,\n                intersectingElement: params.drag.getDragElement(true),\n                d: 0\n              });\n              forEach(_this3.instance.groupManager.getAncestors(groupLoc.group), function (g) {\n                return ancestorsOfIntersectingGroups.add(g.id);\n              });\n            } else {\n              _this3.instance.removeClass(groupLoc.el, CLASS_DRAG_HOVER);\n            }\n          });\n        }\n        _this3.instance.setElementPosition(el, bounds.x, bounds.y);\n        _this3.instance.fire(EVENT_DRAG_MOVE, {\n          el: el,\n          e: params.e,\n          pos: {\n            x: bounds.x,\n            y: bounds.y\n          },\n          originalPosition: _this3.originalPosition,\n          payload: _this3._dragPayload\n        });\n      };\n      var elBounds = {\n        x: ui.x,\n        y: ui.y,\n        w: elSize.w,\n        h: elSize.h\n      };\n      _one(el, elBounds, true);\n      this._dragSelection.updatePositions(finalPos, this.originalPosition, function (el, id, s, b) {\n        _one(el, b, false);\n      });\n      this._currentDragGroupOffsets.forEach(function (v, k) {\n        var s = _this3._currentDragGroupSizes.get(k);\n        var _b = {\n          x: elBounds.x + v[0].x,\n          y: elBounds.y + v[0].y,\n          w: s.w,\n          h: s.h\n        };\n        v[1].style.left = _b.x + \"px\";\n        v[1].style.top = _b.y + \"px\";\n        _one(v[1], _b, false);\n      });\n    }\n  }, {\n    key: \"_computeOffsetByParentGroup\",\n    value: function _computeOffsetByParentGroup(group) {\n      var parentGroupOffset = this.instance.getPosition(group.el);\n      var contentArea = group.contentArea;\n      if (contentArea !== group.el) {\n        var caOffset = this.instance.getPosition(contentArea);\n        parentGroupOffset.x += caOffset.x;\n        parentGroupOffset.y += caOffset.y;\n      }\n      if (group.el._jsPlumbParentGroup) {\n        var ancestorOffset = this._computeOffsetByParentGroup(group.el._jsPlumbParentGroup);\n        parentGroupOffset.x += ancestorOffset.x;\n        parentGroupOffset.y += ancestorOffset.y;\n      }\n      return parentGroupOffset;\n    }\n  }, {\n    key: \"onStart\",\n    value: function onStart(params) {\n      var _this4 = this;\n      var el = params.drag.getDragElement();\n      var elOffset = this.instance.getPosition(el);\n      this.originalPosition = {\n        x: params.pos.x,\n        y: params.pos.y\n      };\n      if (el._jsPlumbParentGroup) {\n        this._dragOffset = this._computeOffsetByParentGroup(el._jsPlumbParentGroup);\n        this._currentDragParentGroup = el._jsPlumbParentGroup;\n      }\n      var cont = true;\n      var nd = el.getAttribute(ATTRIBUTE_NOT_DRAGGABLE);\n      if (this.instance.elementsDraggable === false || nd != null && nd !== FALSE$1) {\n        cont = false;\n      }\n      if (cont) {\n        this._groupLocations.length = 0;\n        this._intersectingGroups.length = 0;\n        this.instance.hoverSuspended = true;\n        var originalElement = params.drag.getDragElement(true),\n            descendants = originalElement.querySelectorAll(SELECTOR_MANAGED_ELEMENT),\n            ancestors = getAncestors(originalElement),\n            a = [];\n        Array.prototype.push.apply(a, descendants);\n        Array.prototype.push.apply(a, ancestors);\n        this._dragSelection.filterActiveSet(function (p) {\n          return a.indexOf(p.jel) === -1;\n        });\n        this._dragSelection.initialisePositions();\n        var _one = function _one(_el, dragGroup, dragGroupMemberSpec) {\n          if (!_el._isJsPlumbGroup || _this4.instance.allowNestedGroups) {\n            var isNotInAGroup = !_el._jsPlumbParentGroup;\n            var membersAreDroppable = isNotInAGroup || _el._jsPlumbParentGroup.dropOverride !== true;\n            var isGhostOrNotConstrained = !isNotInAGroup && (_el._jsPlumbParentGroup.ghost || _el._jsPlumbParentGroup.constrain !== true);\n            if (isNotInAGroup || membersAreDroppable && isGhostOrNotConstrained) {\n              forEach(_this4.instance.groupManager.getGroups(), function (group) {\n                var elementGroup = _el._jsPlumbGroup;\n                if (group.droppable !== false && group.enabled !== false && _el._jsPlumbGroup !== group && !_this4.instance.groupManager.isDescendant(group, elementGroup)) {\n                  var groupEl = group.el,\n                      groupElId = _this4.instance.getId(groupEl),\n                      p = _this4.instance.viewport.getPosition(groupElId),\n                      boundingRect = {\n                    x: p.x,\n                    y: p.y,\n                    w: p.w,\n                    h: p.h\n                  };\n                  var groupLocation = {\n                    el: groupEl,\n                    r: boundingRect,\n                    group: group\n                  };\n                  _this4._groupLocations.push(groupLocation);\n                  if (group !== _this4._currentDragParentGroup) {\n                    _this4.instance.addClass(groupEl, CLASS_DRAG_ACTIVE);\n                  }\n                }\n              });\n              _this4._groupLocations.sort(function (a, b) {\n                if (_this4.instance.groupManager.isDescendant(a.group, b.group)) {\n                  return -1;\n                } else if (_this4.instance.groupManager.isAncestor(b.group, a.group)) {\n                  return 1;\n                } else {\n                  return 0;\n                }\n              });\n            }\n          }\n          _this4.instance.select({\n            source: _el\n          }).addClass(_this4.instance.elementDraggingClass + \" \" + _this4.instance.sourceElementDraggingClass, true);\n          _this4.instance.select({\n            target: _el\n          }).addClass(_this4.instance.elementDraggingClass + \" \" + _this4.instance.targetElementDraggingClass, true);\n          return _this4.instance.fire(EVENT_DRAG_START, {\n            el: _el,\n            e: params.e,\n            originalPosition: _this4.originalPosition,\n            pos: _this4.originalPosition,\n            dragGroup: dragGroup,\n            dragGroupMemberSpec: dragGroupMemberSpec\n          });\n        };\n        var elId = this.instance.getId(el);\n        this._currentDragGroup = this._dragGroupByElementIdMap[elId];\n        if (this._currentDragGroup && !isActiveDragGroupMember(this._currentDragGroup, el)) {\n          this._currentDragGroup = null;\n        }\n        var dragStartReturn = _one(el);\n        if (dragStartReturn === false) {\n          this._cleanup();\n          return false;\n        } else {\n          this._dragPayload = dragStartReturn;\n        }\n        if (this._currentDragGroup != null) {\n          this._currentDragGroupOffsets.clear();\n          this._currentDragGroupSizes.clear();\n          this._currentDragGroup.members.forEach(function (jel) {\n            var vp = _this4.instance.viewport.getPosition(jel.elId);\n            _this4._currentDragGroupOffsets.set(jel.elId, [{\n              x: vp.x - elOffset.x,\n              y: vp.y - elOffset.y\n            }, jel.el]);\n            _this4._currentDragGroupSizes.set(jel.elId, vp);\n            _this4._currentDragGroupOriginalPositions.set(jel.elId, {\n              x: vp.x,\n              y: vp.y\n            });\n            _one(jel.el, _this4._currentDragGroup, jel);\n          });\n        }\n      }\n      return cont;\n    }\n  }, {\n    key: \"addToDragGroup\",\n    value: function addToDragGroup(spec) {\n      var _this5 = this;\n      var details = decodeDragGroupSpec(this.instance, spec);\n      var dragGroup = this._dragGroupMap[details.id];\n      if (dragGroup == null) {\n        dragGroup = {\n          id: details.id,\n          members: new Set()\n        };\n        this._dragGroupMap[details.id] = dragGroup;\n      }\n      for (var _len = arguments.length, els = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        els[_key - 1] = arguments[_key];\n      }\n      this.removeFromDragGroup.apply(this, els);\n      forEach(els, function (el) {\n        var elId = _this5.instance.getId(el);\n        dragGroup.members.add({\n          elId: elId,\n          el: el,\n          active: details.active\n        });\n        _this5._dragGroupByElementIdMap[elId] = dragGroup;\n      });\n    }\n  }, {\n    key: \"removeFromDragGroup\",\n    value: function removeFromDragGroup() {\n      var _this6 = this;\n      for (var _len2 = arguments.length, els = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        els[_key2] = arguments[_key2];\n      }\n      forEach(els, function (el) {\n        var id = _this6.instance.getId(el);\n        var dragGroup = _this6._dragGroupByElementIdMap[id];\n        if (dragGroup != null) {\n          var s = new Set();\n          dragGroup.members.forEach(function (member) {\n            if (member.el !== el) {\n              s.add(member);\n            }\n          });\n          dragGroup.members = s;\n          delete _this6._dragGroupByElementIdMap[id];\n        }\n      });\n    }\n  }, {\n    key: \"setDragGroupState\",\n    value: function setDragGroupState(active) {\n      var _this7 = this;\n      for (var _len3 = arguments.length, els = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        els[_key3 - 1] = arguments[_key3];\n      }\n      var elementIds = els.map(function (el) {\n        return _this7.instance.getId(el);\n      });\n      forEach(elementIds, function (id) {\n        var dragGroup = _this7._dragGroupByElementIdMap[id];\n        if (dragGroup != null) {\n          var member = getFromSetWithFunction(dragGroup.members, function (m) {\n            return m.elId === id;\n          });\n          if (member != null) {\n            member.active = active;\n          }\n        }\n      });\n    }\n  }, {\n    key: \"clearDragGroup\",\n    value: function clearDragGroup(name) {\n      var _this8 = this;\n      var dragGroup = this._dragGroupMap[name];\n      if (dragGroup != null) {\n        dragGroup.members.forEach(function (member) {\n          delete _this8._dragGroupByElementIdMap[member.elId];\n        });\n        dragGroup.members.clear();\n      }\n    }\n  }, {\n    key: \"_pruneOrOrphan\",\n    value: function _pruneOrOrphan(params, doNotTransferToAncestor, isDefinitelyNotInsideParent) {\n      var jel = params.el;\n      var orphanedPosition = {\n        pruned: false,\n        pos: null\n      };\n      if (isDefinitelyNotInsideParent || !isInsideParent(this.instance, jel, params.pos)) {\n        var group = jel._jsPlumbParentGroup;\n        if (group.prune) {\n          if (jel._isJsPlumbGroup) {\n            this.instance.removeGroup(jel._jsPlumbGroup);\n          } else {\n            group.remove(params.el, true);\n          }\n          orphanedPosition.pruned = true;\n        } else if (group.orphan) {\n          orphanedPosition.pos = this.instance.groupManager.orphan(params.el, doNotTransferToAncestor);\n          if (jel._isJsPlumbGroup) {\n            group.removeGroup(jel._jsPlumbGroup);\n          } else {\n            group.remove(params.el);\n          }\n        }\n      }\n      return orphanedPosition;\n    }\n  }]);\n  return ElementDragHandler;\n}();\n\nvar endpointMap$1 = {};\nvar endpointComputers = {};\nvar handlers = {};\nvar EndpointFactory = {\n  get: function get(ep, name, params) {\n    var e = endpointMap$1[name];\n    if (!e) {\n      throw {\n        message: \"jsPlumb: unknown endpoint type '\" + name + \"'\"\n      };\n    } else {\n      return new e(ep, params);\n    }\n  },\n  clone: function clone(epr) {\n    var handler = handlers[epr.type];\n    return EndpointFactory.get(epr.endpoint, epr.type, handler.getParams(epr));\n  },\n  compute: function compute(endpoint, anchorPoint, orientation, endpointStyle) {\n    var c = endpointComputers[endpoint.type];\n    if (c != null) {\n      return c(endpoint, anchorPoint, orientation, endpointStyle);\n    } else {\n      log(\"jsPlumb: cannot find endpoint calculator for endpoint of type \", endpoint.type);\n    }\n  },\n  registerHandler: function registerHandler(eph) {\n    handlers[eph.type] = eph;\n    endpointMap$1[eph.type] = eph.cls;\n    endpointComputers[eph.type] = eph.compute;\n  }\n};\n\nvar EndpointRepresentation = function () {\n  function EndpointRepresentation(endpoint, params) {\n    _classCallCheck(this, EndpointRepresentation);\n    this.endpoint = endpoint;\n    _defineProperty(this, \"typeId\", void 0);\n    _defineProperty(this, \"x\", void 0);\n    _defineProperty(this, \"y\", void 0);\n    _defineProperty(this, \"w\", void 0);\n    _defineProperty(this, \"h\", void 0);\n    _defineProperty(this, \"computedValue\", void 0);\n    _defineProperty(this, \"bounds\", EMPTY_BOUNDS());\n    _defineProperty(this, \"classes\", []);\n    _defineProperty(this, \"instance\", void 0);\n    _defineProperty(this, \"type\", void 0);\n    params = params || {};\n    this.instance = endpoint.instance;\n    if (endpoint.cssClass) {\n      this.classes.push(endpoint.cssClass);\n    }\n    if (params.cssClass) {\n      this.classes.push(params.cssClass);\n    }\n  }\n  _createClass(EndpointRepresentation, [{\n    key: \"addClass\",\n    value: function addClass(c) {\n      this.classes.push(c);\n      this.instance.addEndpointClass(this.endpoint, c);\n    }\n  }, {\n    key: \"removeClass\",\n    value: function removeClass(c) {\n      this.classes = this.classes.filter(function (_c) {\n        return _c !== c;\n      });\n      this.instance.removeEndpointClass(this.endpoint, c);\n    }\n  }, {\n    key: \"compute\",\n    value: function compute(anchorPoint, orientation, endpointStyle) {\n      this.computedValue = EndpointFactory.compute(this, anchorPoint, orientation, endpointStyle);\n      this.bounds.xmin = this.x;\n      this.bounds.ymin = this.y;\n      this.bounds.xmax = this.x + this.w;\n      this.bounds.ymax = this.y + this.h;\n    }\n  }, {\n    key: \"setVisible\",\n    value: function setVisible(v) {\n      this.instance.setEndpointVisible(this.endpoint, v);\n    }\n  }]);\n  return EndpointRepresentation;\n}();\n\nvar _opposites, _clockwiseOptions, _antiClockwiseOptions;\nvar FaceValues;\n(function (FaceValues) {\n  FaceValues[\"top\"] = \"top\";\n  FaceValues[\"left\"] = \"left\";\n  FaceValues[\"right\"] = \"right\";\n  FaceValues[\"bottom\"] = \"bottom\";\n})(FaceValues || (FaceValues = {}));\nvar TOP = FaceValues.top;\nvar LEFT = FaceValues.left;\nvar RIGHT = FaceValues.right;\nvar BOTTOM = FaceValues.bottom;\nvar X_AXIS_FACES = [LEFT, RIGHT];\nvar Y_AXIS_FACES = [TOP, BOTTOM];\nvar LightweightFloatingAnchor = function () {\n  function LightweightFloatingAnchor(instance, element, elementId) {\n    _classCallCheck(this, LightweightFloatingAnchor);\n    this.instance = instance;\n    this.element = element;\n    _defineProperty(this, \"isFloating\", true);\n    _defineProperty(this, \"isContinuous\", void 0);\n    _defineProperty(this, \"isDynamic\", void 0);\n    _defineProperty(this, \"locations\", []);\n    _defineProperty(this, \"currentLocation\", 0);\n    _defineProperty(this, \"locked\", false);\n    _defineProperty(this, \"cssClass\", '');\n    _defineProperty(this, \"timestamp\", null);\n    _defineProperty(this, \"type\", \"Floating\");\n    _defineProperty(this, \"id\", uuid());\n    _defineProperty(this, \"orientation\", [0, 0]);\n    _defineProperty(this, \"size\", void 0);\n    this.size = instance.viewport.getPosition(elementId);\n    this.locations.push({\n      x: 0.5,\n      y: 0.5,\n      ox: this.orientation[0],\n      oy: this.orientation[1],\n      offx: 0,\n      offy: 0,\n      iox: this.orientation[0],\n      ioy: this.orientation[1],\n      cls: ''\n    });\n  }\n  _createClass(LightweightFloatingAnchor, [{\n    key: \"_updateOrientationInRouter\",\n    value: function _updateOrientationInRouter() {\n      this.instance.router.setAnchorOrientation(this, [this.locations[0].ox, this.locations[0].oy]);\n    }\n  }, {\n    key: \"over\",\n    value: function over(endpoint) {\n      this.orientation = this.instance.router.getEndpointOrientation(endpoint);\n      this.locations[0].ox = this.orientation[0];\n      this.locations[0].oy = this.orientation[1];\n      this._updateOrientationInRouter();\n    }\n  }, {\n    key: \"out\",\n    value: function out() {\n      this.orientation = null;\n      this.locations[0].ox = this.locations[0].iox;\n      this.locations[0].oy = this.locations[0].ioy;\n      this._updateOrientationInRouter();\n    }\n  }]);\n  return LightweightFloatingAnchor;\n}();\nvar opposites = (_opposites = {}, _defineProperty(_opposites, TOP, BOTTOM), _defineProperty(_opposites, RIGHT, LEFT), _defineProperty(_opposites, LEFT, RIGHT), _defineProperty(_opposites, BOTTOM, TOP), _opposites);\nvar clockwiseOptions = (_clockwiseOptions = {}, _defineProperty(_clockwiseOptions, TOP, RIGHT), _defineProperty(_clockwiseOptions, RIGHT, BOTTOM), _defineProperty(_clockwiseOptions, LEFT, TOP), _defineProperty(_clockwiseOptions, BOTTOM, LEFT), _clockwiseOptions);\nvar antiClockwiseOptions = (_antiClockwiseOptions = {}, _defineProperty(_antiClockwiseOptions, TOP, LEFT), _defineProperty(_antiClockwiseOptions, RIGHT, TOP), _defineProperty(_antiClockwiseOptions, LEFT, BOTTOM), _defineProperty(_antiClockwiseOptions, BOTTOM, RIGHT), _antiClockwiseOptions);\nfunction getDefaultFace(a) {\n  return a.faces.length === 0 ? TOP : a.faces[0];\n}\nfunction _isFaceAvailable(a, face) {\n  return a.faces.indexOf(face) !== -1;\n}\nfunction _secondBest(a, edge) {\n  return (a.clockwise ? clockwiseOptions : antiClockwiseOptions)[edge];\n}\nfunction _lastChoice(a, edge) {\n  return (a.clockwise ? antiClockwiseOptions : clockwiseOptions)[edge];\n}\nfunction isEdgeSupported(a, edge) {\n  return a.lockedAxis == null ? a.lockedFace == null ? _isFaceAvailable(a, edge) === true : a.lockedFace === edge : a.lockedAxis.indexOf(edge) !== -1;\n}\nfunction verifyFace(a, edge) {\n  if (_isFaceAvailable(a, edge)) {\n    return edge;\n  } else if (_isFaceAvailable(a, opposites[edge])) {\n    return opposites[edge];\n  } else {\n    var secondBest = _secondBest(a, edge);\n    if (_isFaceAvailable(a, secondBest)) {\n      return secondBest;\n    } else {\n      var lastChoice = _lastChoice(a, edge);\n      if (_isFaceAvailable(a, lastChoice)) {\n        return lastChoice;\n      }\n    }\n  }\n  return edge;\n}\nvar _top = {\n  x: 0.5,\n  y: 0,\n  ox: 0,\n  oy: -1,\n  offx: 0,\n  offy: 0\n},\n    _bottom = {\n  x: 0.5,\n  y: 1,\n  ox: 0,\n  oy: 1,\n  offx: 0,\n  offy: 0\n},\n    _left = {\n  x: 0,\n  y: 0.5,\n  ox: -1,\n  oy: 0,\n  offx: 0,\n  offy: 0\n},\n    _right = {\n  x: 1,\n  y: 0.5,\n  ox: 1,\n  oy: 0,\n  offx: 0,\n  offy: 0\n},\n    _topLeft = {\n  x: 0,\n  y: 0,\n  ox: 0,\n  oy: -1,\n  offx: 0,\n  offy: 0\n},\n    _topRight = {\n  x: 1,\n  y: 0,\n  ox: 1,\n  oy: -1,\n  offx: 0,\n  offy: 0\n},\n    _bottomLeft = {\n  x: 0,\n  y: 1,\n  ox: 0,\n  oy: 1,\n  offx: 0,\n  offy: 0\n},\n    _bottomRight = {\n  x: 1,\n  y: 1,\n  ox: 0,\n  oy: 1,\n  offx: 0,\n  offy: 0\n},\n    _center = {\n  x: 0.5,\n  y: 0.5,\n  ox: 0,\n  oy: 0,\n  offx: 0,\n  offy: 0\n};\nvar namedValues = {\n  \"Top\": [_top],\n  \"Bottom\": [_bottom],\n  \"Left\": [_left],\n  \"Right\": [_right],\n  \"TopLeft\": [_topLeft],\n  \"TopRight\": [_topRight],\n  \"BottomLeft\": [_bottomLeft],\n  \"BottomRight\": [_bottomRight],\n  \"Center\": [_center],\n  \"AutoDefault\": [_top, _left, _bottom, _right]\n};\nvar namedContinuousValues = {\n  \"Continuous\": {\n    faces: [TOP, LEFT, BOTTOM, RIGHT]\n  },\n  \"ContinuousTop\": {\n    faces: [TOP]\n  },\n  \"ContinuousRight\": {\n    faces: [RIGHT]\n  },\n  \"ContinuousBottom\": {\n    faces: [BOTTOM]\n  },\n  \"ContinuousLeft\": {\n    faces: [LEFT]\n  },\n  \"ContinuousLeftRight\": {\n    faces: [LEFT, RIGHT]\n  },\n  \"ContinuousTopBottom\": {\n    faces: [TOP, BOTTOM]\n  }\n};\nfunction getNamedAnchor(name, params) {\n  params = params || {};\n  if (name === AnchorLocations.Perimeter) {\n    return _createPerimeterAnchor(params);\n  }\n  var a = namedValues[name];\n  if (a != null) {\n    return _createAnchor(name, map(a, function (_a) {\n      return extend({\n        iox: _a.ox,\n        ioy: _a.oy\n      }, _a);\n    }), params);\n  }\n  a = namedContinuousValues[name];\n  if (a != null) {\n    return _createContinuousAnchor(name, a.faces, params);\n  }\n  throw {\n    message: \"jsPlumb: unknown anchor type '\" + name + \"'\"\n  };\n}\nfunction _createAnchor(type, locations, params) {\n  return {\n    type: type,\n    locations: locations,\n    currentLocation: 0,\n    locked: false,\n    id: uuid(),\n    isFloating: false,\n    isContinuous: false,\n    isDynamic: locations.length > 1,\n    timestamp: null,\n    cssClass: params.cssClass || \"\"\n  };\n}\nfunction createFloatingAnchor(instance, element, elementId) {\n  return new LightweightFloatingAnchor(instance, element, elementId);\n}\nvar PROPERTY_CURRENT_FACE = \"currentFace\";\nfunction _createContinuousAnchor(type, faces, params) {\n  var ca = {\n    type: type,\n    locations: [],\n    currentLocation: 0,\n    locked: false,\n    id: uuid(),\n    cssClass: params.cssClass || \"\",\n    isFloating: false,\n    isContinuous: true,\n    timestamp: null,\n    faces: params.faces || faces,\n    lockedFace: null,\n    lockedAxis: null,\n    clockwise: !(params.clockwise === false),\n    __currentFace: null\n  };\n  Object.defineProperty(ca, PROPERTY_CURRENT_FACE, {\n    get: function get() {\n      return this.__currentFace;\n    },\n    set: function set(f) {\n      this.__currentFace = verifyFace(this, f);\n    }\n  });\n  return ca;\n}\nfunction isPrimitiveAnchorSpec(sa) {\n  return sa.length < 7 && sa.every(isNumber) || sa.length === 7 && sa.slice(0, 5).every(isNumber) && isString(sa[6]);\n}\nfunction makeLightweightAnchorFromSpec(spec) {\n  if (isString(spec)) {\n    return getNamedAnchor(spec, null);\n  } else if (Array.isArray(spec)) {\n    if (isPrimitiveAnchorSpec(spec)) {\n      var _spec = spec;\n      return _createAnchor(null, [{\n        x: _spec[0],\n        y: _spec[1],\n        ox: _spec[2],\n        oy: _spec[3],\n        offx: _spec[4] == null ? 0 : _spec[4],\n        offy: _spec[5] == null ? 0 : _spec[5],\n        iox: _spec[2],\n        ioy: _spec[3],\n        cls: _spec[6] || \"\"\n      }], {\n        cssClass: _spec[6] || \"\"\n      });\n    } else {\n      var locations = map(spec, function (aSpec) {\n        if (isString(aSpec)) {\n          var a = namedValues[aSpec];\n          return a != null ? extend({\n            iox: a[0].ox,\n            ioy: a[0].oy,\n            cls: \"\"\n          }, a[0]) : null;\n        } else if (isPrimitiveAnchorSpec(aSpec)) {\n          return {\n            x: aSpec[0],\n            y: aSpec[1],\n            ox: aSpec[2],\n            oy: aSpec[3],\n            offx: aSpec[4] == null ? 0 : aSpec[4],\n            offy: aSpec[5] == null ? 0 : aSpec[5],\n            iox: aSpec[2],\n            ioy: aSpec[3],\n            cls: aSpec[6] || \"\"\n          };\n        }\n      }).filter(function (ar) {\n        return ar != null;\n      });\n      return _createAnchor(\"Dynamic\", locations, {});\n    }\n  } else {\n    var sa = spec;\n    return getNamedAnchor(sa.type, sa.options);\n  }\n}\nfunction circleGenerator(anchorCount) {\n  var r = 0.5,\n      step = Math.PI * 2 / anchorCount,\n      a = [];\n  var current = 0;\n  for (var i = 0; i < anchorCount; i++) {\n    var x = r + r * Math.sin(current),\n        y = r + r * Math.cos(current);\n    a.push({\n      x: x,\n      y: y,\n      ox: 0,\n      oy: 0,\n      offx: 0,\n      offy: 0,\n      iox: 0,\n      ioy: 0,\n      cls: ''\n    });\n    current += step;\n  }\n  return a;\n}\nfunction _path(segments, anchorCount) {\n  var anchorsPerFace = anchorCount / segments.length,\n      a = [],\n      _computeFace = function _computeFace(x1, y1, x2, y2, fractionalLength, ox, oy) {\n    anchorsPerFace = anchorCount * fractionalLength;\n    var dx = (x2 - x1) / anchorsPerFace,\n        dy = (y2 - y1) / anchorsPerFace;\n    for (var i = 0; i < anchorsPerFace; i++) {\n      a.push({\n        x: x1 + dx * i,\n        y: y1 + dy * i,\n        ox: ox == null ? 0 : ox,\n        oy: oy == null ? 0 : oy,\n        offx: 0,\n        offy: 0,\n        iox: 0,\n        ioy: 0,\n        cls: ''\n      });\n    }\n  };\n  for (var i = 0; i < segments.length; i++) {\n    _computeFace.apply(null, segments[i]);\n  }\n  return a;\n}\nfunction shapeGenerator(faces, anchorCount) {\n  var s = [];\n  for (var i = 0; i < faces.length; i++) {\n    s.push([faces[i][0], faces[i][1], faces[i][2], faces[i][3], 1 / faces.length, faces[i][4], faces[i][5]]);\n  }\n  return _path(s, anchorCount);\n}\nfunction rectangleGenerator(anchorCount) {\n  return shapeGenerator([[0, 0, 1, 0, 0, -1], [1, 0, 1, 1, 1, 0], [1, 1, 0, 1, 0, 1], [0, 1, 0, 0, -1, 0]], anchorCount);\n}\nfunction diamondGenerator(anchorCount) {\n  return shapeGenerator([[0.5, 0, 1, 0.5], [1, 0.5, 0.5, 1], [0.5, 1, 0, 0.5], [0, 0.5, 0.5, 0]], anchorCount);\n}\nfunction triangleGenerator(anchorCount) {\n  return shapeGenerator([[0.5, 0, 1, 1], [1, 1, 0, 1], [0, 1, 0.5, 0]], anchorCount);\n}\nfunction rotate$1(points, amountInDegrees) {\n  var o = [],\n      theta = amountInDegrees / 180 * Math.PI;\n  for (var i = 0; i < points.length; i++) {\n    var _x = points[i].x - 0.5,\n        _y = points[i].y - 0.5;\n    o.push({\n      x: 0.5 + (_x * Math.cos(theta) - _y * Math.sin(theta)),\n      y: 0.5 + (_x * Math.sin(theta) + _y * Math.cos(theta)),\n      ox: points[i].ox,\n      oy: points[i].oy,\n      offx: 0,\n      offy: 0,\n      iox: 0,\n      ioy: 0,\n      cls: ''\n    });\n  }\n  return o;\n}\nvar anchorGenerators = new Map();\nanchorGenerators.set(PerimeterAnchorShapes.Circle, circleGenerator);\nanchorGenerators.set(PerimeterAnchorShapes.Ellipse, circleGenerator);\nanchorGenerators.set(PerimeterAnchorShapes.Rectangle, rectangleGenerator);\nanchorGenerators.set(PerimeterAnchorShapes.Square, rectangleGenerator);\nanchorGenerators.set(PerimeterAnchorShapes.Diamond, diamondGenerator);\nanchorGenerators.set(PerimeterAnchorShapes.Triangle, triangleGenerator);\nfunction _createPerimeterAnchor(params) {\n  params = params || {};\n  var anchorCount = params.anchorCount || 60,\n      shape = params.shape;\n  if (!shape) {\n    throw new Error(\"no shape supplied to Perimeter Anchor type\");\n  }\n  if (!anchorGenerators.has(shape)) {\n    throw new Error(\"Shape [\" + shape + \"] is unknown by Perimeter Anchor type\");\n  }\n  var da = anchorGenerators.get(shape)(anchorCount);\n  if (params.rotation) {\n    da = rotate$1(da, params.rotation);\n  }\n  var a = _createAnchor(AnchorLocations.Perimeter, da, params);\n  var aa = extend(a, {\n    shape: shape\n  });\n  return aa;\n}\n\nvar ConnectionDragSelector = function () {\n  function ConnectionDragSelector(selector, def) {\n    var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    _classCallCheck(this, ConnectionDragSelector);\n    this.selector = selector;\n    this.def = def;\n    this.exclude = exclude;\n    _defineProperty(this, \"id\", void 0);\n    _defineProperty(this, \"redrop\", void 0);\n    this.id = uuid();\n    this.redrop = def.def.redrop || REDROP_POLICY_STRICT;\n  }\n  _createClass(ConnectionDragSelector, [{\n    key: \"setEnabled\",\n    value: function setEnabled(enabled) {\n      this.def.enabled = enabled;\n    }\n  }, {\n    key: \"isEnabled\",\n    value: function isEnabled() {\n      return this.def.enabled !== false;\n    }\n  }]);\n  return ConnectionDragSelector;\n}();\nvar REDROP_POLICY_STRICT = \"strict\";\nvar REDROP_POLICY_ANY = \"any\";\nvar REDROP_POLICY_ANY_SOURCE = \"anySource\";\nvar REDROP_POLICY_ANY_TARGET = \"anyTarget\";\nvar REDROP_POLICY_ANY_SOURCE_OR_TARGET = \"anySourceOrTarget\";\n\nfunction _makeFloatingEndpoint(ep, endpoint, referenceCanvas, sourceElement, sourceElementId, instance) {\n  var floatingAnchor = createFloatingAnchor(instance, sourceElement, sourceElementId);\n  var p = {\n    paintStyle: ep.getPaintStyle(),\n    preparedAnchor: floatingAnchor,\n    element: sourceElement,\n    scope: ep.scope,\n    cssClass: [CLASS_ENDPOINT_FLOATING, ep.cssClass].join(\" \")\n  };\n  if (endpoint != null) {\n    if (isAssignableFrom(endpoint, EndpointRepresentation)) {\n      p.existingEndpoint = endpoint;\n    } else {\n      p.endpoint = endpoint;\n    }\n  }\n  var actualEndpoint = instance._internal_newEndpoint(p);\n  instance._paintEndpoint(actualEndpoint, {});\n  return actualEndpoint;\n}\nfunction selectorFilter(evt, _el, selector, _instance, negate) {\n  var t = evt.target || evt.srcElement,\n      ok = false,\n      sel = _instance.getSelector(_el, selector);\n  for (var j = 0; j < sel.length; j++) {\n    if (sel[j] === t) {\n      ok = true;\n      break;\n    }\n  }\n  return negate ? !ok : ok;\n}\nvar SELECTOR_DRAG_ACTIVE_OR_HOVER = cls(CLASS_DRAG_ACTIVE, CLASS_DRAG_HOVER);\nvar SOURCE_SELECTOR_UNIQUE_ENDPOINT_DATA = \"sourceSelectorEndpoint\";\nvar EndpointDragHandler = function () {\n  function EndpointDragHandler(instance) {\n    _classCallCheck(this, EndpointDragHandler);\n    this.instance = instance;\n    _defineProperty(this, \"jpc\", void 0);\n    _defineProperty(this, \"existingJpc\", void 0);\n    _defineProperty(this, \"_originalAnchorSpec\", void 0);\n    _defineProperty(this, \"ep\", void 0);\n    _defineProperty(this, \"endpointRepresentation\", void 0);\n    _defineProperty(this, \"canvasElement\", void 0);\n    _defineProperty(this, \"_activeDefinition\", void 0);\n    _defineProperty(this, \"placeholderInfo\", {\n      id: null,\n      element: null\n    });\n    _defineProperty(this, \"floatingIndex\", void 0);\n    _defineProperty(this, \"floatingId\", void 0);\n    _defineProperty(this, \"floatingElement\", void 0);\n    _defineProperty(this, \"floatingEndpoint\", void 0);\n    _defineProperty(this, \"floatingAnchor\", void 0);\n    _defineProperty(this, \"_stopped\", void 0);\n    _defineProperty(this, \"inPlaceCopy\", void 0);\n    _defineProperty(this, \"endpointDropTargets\", []);\n    _defineProperty(this, \"currentDropTarget\", null);\n    _defineProperty(this, \"payload\", void 0);\n    _defineProperty(this, \"floatingConnections\", {});\n    _defineProperty(this, \"_forceReattach\", void 0);\n    _defineProperty(this, \"_forceDetach\", void 0);\n    _defineProperty(this, \"mousedownHandler\", void 0);\n    _defineProperty(this, \"mouseupHandler\", void 0);\n    _defineProperty(this, \"selector\", cls(CLASS_ENDPOINT));\n    var container = instance.getContainer();\n    this.mousedownHandler = this._mousedownHandler.bind(this);\n    this.mouseupHandler = this._mouseupHandler.bind(this);\n    instance.on(container, EVENT_MOUSEDOWN, SELECTOR_MANAGED_ELEMENT, this.mousedownHandler);\n    instance.on(container, EVENT_MOUSEUP, [SELECTOR_MANAGED_ELEMENT, cls(CLASS_ENDPOINT)].join(\",\"), this.mouseupHandler);\n  }\n  _createClass(EndpointDragHandler, [{\n    key: \"_resolveDragParent\",\n    value: function _resolveDragParent(def, eventTarget) {\n      var container = this.instance.getContainer();\n      var parent = findParent(eventTarget, SELECTOR_MANAGED_ELEMENT, container, true);\n      if (def.parentSelector != null) {\n        var child = findParent(eventTarget, def.parentSelector, container, true);\n        if (child != null) {\n          parent = findParent(child.parentNode, SELECTOR_MANAGED_ELEMENT, container, false);\n        }\n        return child || parent;\n      } else {\n        return parent;\n      }\n    }\n  }, {\n    key: \"_mousedownHandler\",\n    value: function _mousedownHandler(e) {\n      var sourceEl;\n      var sourceSelector;\n      if (e.which === 3 || e.button === 2) {\n        return;\n      }\n      var eventTarget = e.target || e.srcElement;\n      sourceSelector = this._getSourceDefinition(e);\n      if (sourceSelector != null) {\n        sourceEl = this._resolveDragParent(sourceSelector.def.def, eventTarget);\n        if (sourceEl == null || sourceEl.getAttribute(ATTRIBUTE_JTK_ENABLED) === FALSE$1) {\n          return;\n        }\n      }\n      if (sourceSelector) {\n        var sourceElement = e.currentTarget,\n            def;\n        if (eventTarget.getAttribute(ATTRIBUTE_JTK_ENABLED) !== FALSE$1) {\n          consume(e);\n          this._activeDefinition = sourceSelector;\n          def = sourceSelector.def.def;\n          if (def.canAcceptNewConnection != null && !def.canAcceptNewConnection(sourceEl, e)) {\n            return false;\n          }\n          var elxy = getPositionOnElement(e, sourceEl, this.instance.currentZoom);\n          var tempEndpointParams = {\n            element: sourceEl\n          };\n          extend(tempEndpointParams, def);\n          tempEndpointParams.isTemporarySource = true;\n          if (def.scope) {\n            tempEndpointParams.scope = def.scope;\n          } else {\n            var scopeFromElement = eventTarget.getAttribute(ATTRIBUTE_JTK_SCOPE);\n            if (scopeFromElement != null) {\n              tempEndpointParams.scope = scopeFromElement;\n            }\n          }\n          var extractedParameters = def.parameterExtractor ? def.parameterExtractor(sourceEl, eventTarget, e) : {};\n          tempEndpointParams = merge(tempEndpointParams, extractedParameters);\n          if (tempEndpointParams.maxConnections != null && tempEndpointParams.maxConnections >= 0) {\n            var sourceCount = this.instance.select({\n              source: sourceEl\n            }).length;\n            if (sourceCount >= tempEndpointParams.maxConnections) {\n              consume(e);\n              if (def.onMaxConnections) {\n                def.onMaxConnections({\n                  element: sourceEl,\n                  maxConnections: tempEndpointParams.maxConnections\n                }, e);\n              }\n              e.stopImmediatePropagation && e.stopImmediatePropagation();\n              return false;\n            }\n          }\n          if (def.anchorPositionFinder) {\n            var maybeAnchorSpec = def.anchorPositionFinder(sourceEl, elxy, def, e);\n            if (maybeAnchorSpec != null) {\n              tempEndpointParams.anchor = maybeAnchorSpec;\n            }\n          }\n          this._originalAnchorSpec = tempEndpointParams.anchor || (this.instance.areDefaultAnchorsSet() ? this.instance.defaults.anchors[0] : this.instance.defaults.anchor);\n          var _originalAnchor = this.instance.router.prepareAnchor(this._originalAnchorSpec);\n          var anchorSpecToUse = [elxy.x, elxy.y, 0, 0];\n          if (_originalAnchor.locations.length > 0) {\n            anchorSpecToUse[2] = _originalAnchor.locations[0].ox;\n            anchorSpecToUse[3] = _originalAnchor.locations[0].oy;\n          } else if (_originalAnchor.isContinuous) {\n            var dx = elxy.x < 0.5 ? elxy.x : 1 - elxy.x;\n            var dy = elxy.y < 0.5 ? elxy.y : 1 - elxy.y;\n            anchorSpecToUse[2] = dx < dy ? elxy.x < 0.5 ? -1 : 1 : 0;\n            anchorSpecToUse[3] = dy < dx ? elxy.y < 0.5 ? -1 : 1 : 0;\n          }\n          tempEndpointParams.anchor = anchorSpecToUse;\n          tempEndpointParams.deleteOnEmpty = true;\n          this.ep = this.instance._internal_newEndpoint(tempEndpointParams);\n          var payload = {};\n          if (def.extract) {\n            for (var att in def.extract) {\n              var v = eventTarget.getAttribute(att);\n              if (v) {\n                payload[def.extract[att]] = v;\n              }\n            }\n            this.ep.mergeParameters(payload);\n          }\n          if (tempEndpointParams.uniqueEndpoint) {\n            var elementId = this.ep.elementId;\n            var existingUniqueEndpoint = this.instance.getManagedData(elementId, SOURCE_SELECTOR_UNIQUE_ENDPOINT_DATA, sourceSelector.id);\n            if (existingUniqueEndpoint == null) {\n              this.instance.setManagedData(elementId, SOURCE_SELECTOR_UNIQUE_ENDPOINT_DATA, sourceSelector.id, this.ep);\n              this.ep.deleteOnEmpty = false;\n            } else {\n              this.ep.finalEndpoint = existingUniqueEndpoint;\n            }\n          }\n          sourceElement._jsPlumbOrphanedEndpoints = sourceElement._jsPlumbOrphanedEndpoints || [];\n          sourceElement._jsPlumbOrphanedEndpoints.push(this.ep);\n          this.instance.trigger(this.ep.endpoint.canvas, EVENT_MOUSEDOWN, e, payload);\n        }\n      }\n    }\n  }, {\n    key: \"_mouseupHandler\",\n    value: function _mouseupHandler(e) {\n      var el = e.currentTarget || e.srcElement;\n      if (el._jsPlumbOrphanedEndpoints) {\n        each(el._jsPlumbOrphanedEndpoints, this.instance._maybePruneEndpoint.bind(this.instance));\n        el._jsPlumbOrphanedEndpoints.length = 0;\n      }\n      this._activeDefinition = null;\n    }\n  }, {\n    key: \"onDragInit\",\n    value: function onDragInit(el) {\n      var ipco = getElementPosition(el, this.instance),\n          ips = getElementSize(el, this.instance);\n      this._makeDraggablePlaceholder(ipco, ips);\n      this.placeholderInfo.element.jtk = el.jtk;\n      return this.placeholderInfo.element;\n    }\n  }, {\n    key: \"onDragAbort\",\n    value: function onDragAbort(el) {\n      this._cleanupDraggablePlaceholder();\n    }\n  }, {\n    key: \"_makeDraggablePlaceholder\",\n    value: function _makeDraggablePlaceholder(ipco, ips) {\n      this.placeholderInfo = this.placeholderInfo || {};\n      var n = createElement(ELEMENT_DIV, {\n        position: \"absolute\"\n      });\n      this.instance._appendElementToContainer(n);\n      var id = this.instance.getId(n);\n      this.instance.setPosition(n, ipco);\n      n.style.width = ips.w + \"px\";\n      n.style.height = ips.h + \"px\";\n      this.instance.manage(n);\n      this.placeholderInfo.id = id;\n      this.placeholderInfo.element = n;\n      return n;\n    }\n  }, {\n    key: \"_cleanupDraggablePlaceholder\",\n    value: function _cleanupDraggablePlaceholder() {\n      if (this.placeholderInfo.element) {\n        this.instance.unmanage(this.placeholderInfo.element, true);\n        delete this.placeholderInfo.element;\n        delete this.placeholderInfo.id;\n      }\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      var c = this.instance.getContainer();\n      this.instance.off(c, EVENT_MOUSEUP, this.mouseupHandler);\n      this.instance.off(c, EVENT_MOUSEDOWN, this.mousedownHandler);\n    }\n  }, {\n    key: \"init\",\n    value: function init(drag) {}\n  }, {\n    key: \"startNewConnectionDrag\",\n    value: function startNewConnectionDrag(scope, data) {\n      this.jpc = this.instance._newConnection({\n        sourceEndpoint: this.ep,\n        targetEndpoint: this.floatingEndpoint,\n        source: this.ep.element,\n        target: this.placeholderInfo.element,\n        paintStyle: this.ep.connectorStyle,\n        hoverPaintStyle: this.ep.connectorHoverStyle,\n        connector: this.ep.connector,\n        overlays: this.ep.connectorOverlays,\n        type: this.ep.edgeType,\n        cssClass: this.ep.connectorClass,\n        hoverClass: this.ep.connectorHoverClass,\n        scope: scope,\n        data: data\n      });\n      this.jpc.pending = true;\n      this.jpc.addClass(this.instance.draggingClass);\n      this.ep.addClass(this.instance.draggingClass);\n      this.instance.fire(EVENT_CONNECTION_DRAG, this.jpc);\n    }\n  }, {\n    key: \"startExistingConnectionDrag\",\n    value: function startExistingConnectionDrag() {\n      this.existingJpc = true;\n      this.instance.setHover(this.jpc, false);\n      var anchorIdx = this.jpc.endpoints[0].id === this.ep.id ? 0 : 1;\n      this.ep.detachFromConnection(this.jpc, null, true);\n      this.floatingEndpoint.addConnection(this.jpc);\n      this.instance.fire(EVENT_CONNECTION_DRAG, this.jpc);\n      this.instance.sourceOrTargetChanged(this.jpc.endpoints[anchorIdx].elementId, this.placeholderInfo.id, this.jpc, this.placeholderInfo.element, anchorIdx);\n      this.jpc.suspendedEndpoint = this.jpc.endpoints[anchorIdx];\n      this.jpc.suspendedElement = this.jpc.endpoints[anchorIdx].element;\n      this.jpc.suspendedElementId = this.jpc.endpoints[anchorIdx].elementId;\n      this.jpc.suspendedElementType = anchorIdx === 0 ? SOURCE : TARGET;\n      this.instance.setHover(this.jpc.suspendedEndpoint, false);\n      this.floatingEndpoint.referenceEndpoint = this.jpc.suspendedEndpoint;\n      this.floatingEndpoint.mergeParameters(this.jpc.suspendedEndpoint.parameters);\n      this.jpc.endpoints[anchorIdx] = this.floatingEndpoint;\n      this.jpc.addClass(this.instance.draggingClass);\n      this.floatingId = this.placeholderInfo.id;\n      this.floatingIndex = anchorIdx;\n      this.instance._refreshEndpoint(this.ep);\n    }\n  }, {\n    key: \"_shouldStartDrag\",\n    value: function _shouldStartDrag() {\n      var _continue = true;\n      if (!this.ep.enabled) {\n        _continue = false;\n      }\n      if (this.jpc == null && !this.ep.isSource && !this.ep.isTemporarySource) {\n        _continue = false;\n      }\n      if (this.ep.isSource && this.ep.isFull() && !(this.jpc != null && this.ep.dragAllowedWhenFull)) {\n        _continue = false;\n      }\n      if (this.jpc != null && !this.jpc.isDetachable(this.ep)) {\n        if (this.ep.isFull()) {\n          _continue = false;\n        } else {\n          this.jpc = null;\n        }\n      }\n      var payload = {};\n      var beforeDrag = this.instance.checkCondition(this.jpc == null ? INTERCEPT_BEFORE_DRAG : INTERCEPT_BEFORE_START_DETACH, {\n        endpoint: this.ep,\n        source: this.ep.element,\n        sourceId: this.ep.elementId,\n        connection: this.jpc\n      });\n      if (beforeDrag === false) {\n        _continue = false;\n      }\n      else if (_typeof(beforeDrag) === \"object\") {\n        payload = beforeDrag;\n        extend(payload, this.payload || {});\n      } else {\n        payload = this.payload || {};\n      }\n      return [_continue, payload];\n    }\n  }, {\n    key: \"_createFloatingEndpoint\",\n    value: function _createFloatingEndpoint(canvasElement) {\n      var endpointToFloat = this.ep.endpoint;\n      if (this.ep.edgeType != null) {\n        var aae = this.instance._deriveEndpointAndAnchorSpec(this.ep.edgeType);\n        endpointToFloat = aae.endpoints[1];\n      }\n      this.floatingEndpoint = _makeFloatingEndpoint(this.ep, endpointToFloat, canvasElement, this.placeholderInfo.element, this.placeholderInfo.id, this.instance);\n      this.floatingAnchor = this.floatingEndpoint._anchor;\n      this.floatingEndpoint.deleteOnEmpty = true;\n      this.floatingElement = this.floatingEndpoint.endpoint.canvas;\n      this.floatingId = this.instance.getId(this.floatingElement);\n    }\n  }, {\n    key: \"_populateTargets\",\n    value: function _populateTargets(canvasElement, event) {\n      var _this = this;\n      var isSourceDrag = this.jpc && this.jpc.endpoints[0] === this.ep;\n      var boundingRect;\n      var matchingEndpoints = this.instance.getContainer().querySelectorAll([\".\", CLASS_ENDPOINT, \"[\", ATTRIBUTE_SCOPE_PREFIX, this.ep.scope, \"]:not(.\", CLASS_ENDPOINT_FLOATING, \")\"].join(\"\"));\n      forEach(matchingEndpoints, function (candidate) {\n        if ((_this.jpc != null || candidate !== canvasElement) && candidate !== _this.floatingElement && (_this.jpc != null || !candidate.jtk.endpoint.isFull())) {\n          if (isSourceDrag && candidate.jtk.endpoint.isSource || !isSourceDrag && candidate.jtk.endpoint.isTarget) {\n            var o = getElementPosition(candidate, _this.instance),\n                s = getElementSize(candidate, _this.instance);\n            boundingRect = {\n              x: o.x,\n              y: o.y,\n              w: s.w,\n              h: s.h\n            };\n            _this.endpointDropTargets.push({\n              el: candidate,\n              targetEl: candidate,\n              r: boundingRect,\n              endpoint: candidate.jtk.endpoint,\n              def: null\n            });\n            _this.instance.addClass(candidate, CLASS_DRAG_ACTIVE);\n          }\n        }\n      });\n      if (isSourceDrag) {\n        var sourceDef = getWithFunction(this.instance.sourceSelectors, function (sSel) {\n          return sSel.isEnabled() && (sSel.def.def.scope == null || sSel.def.def.scope === _this.ep.scope);\n        });\n        if (sourceDef != null) {\n          var targetZones = this._findTargetZones(sourceDef);\n          forEach(targetZones, function (el) {\n            if (el.getAttribute(ATTRIBUTE_JTK_ENABLED) !== FALSE$1) {\n              var scopeFromElement = el.getAttribute(ATTRIBUTE_JTK_SCOPE);\n              if (scopeFromElement != null && scopeFromElement !== _this.ep.scope) {\n                return;\n              }\n              var d = {\n                r: null,\n                el: el\n              };\n              d.targetEl = findParent(el, SELECTOR_MANAGED_ELEMENT, _this.instance.getContainer(), true);\n              var o = getElementPosition(d.el, _this.instance),\n                  s = getElementSize(d.el, _this.instance);\n              d.r = {\n                x: o.x,\n                y: o.y,\n                w: s.w,\n                h: s.h\n              };\n              if (sourceDef.def.def.rank != null) {\n                d.rank = sourceDef.def.def.rank;\n              }\n              d.def = sourceDef.def;\n              _this.endpointDropTargets.push(d);\n              _this.instance.addClass(d.targetEl, CLASS_DRAG_ACTIVE);\n            }\n          });\n        }\n      } else {\n        var targetDefs = getAllWithFunction(this.instance.targetSelectors, function (tSel) {\n          return tSel.isEnabled();\n        });\n        targetDefs.forEach(function (targetDef) {\n          var targetZones = _this._findTargetZones(targetDef);\n          forEach(targetZones, function (el) {\n            if (el.getAttribute(ATTRIBUTE_JTK_ENABLED) !== FALSE$1) {\n              var scopeFromElement = el.getAttribute(ATTRIBUTE_JTK_SCOPE);\n              if (scopeFromElement != null && scopeFromElement !== _this.ep.scope) {\n                return;\n              }\n              var d = {\n                r: null,\n                el: el\n              };\n              if (targetDef.def.def.parentSelector != null) {\n                d.targetEl = findParent(el, targetDef.def.def.parentSelector, _this.instance.getContainer(), true);\n              }\n              if (d.targetEl == null) {\n                d.targetEl = findParent(el, SELECTOR_MANAGED_ELEMENT, _this.instance.getContainer(), true);\n              }\n              if (targetDef.def.def.allowLoopback === false || _this._activeDefinition && _this._activeDefinition.def.def.allowLoopback === false) {\n                if (d.targetEl === _this.ep.element) {\n                  return;\n                }\n              }\n              if (targetDef.def.def.canAcceptNewConnection != null && !targetDef.def.def.canAcceptNewConnection(d.targetEl, event)) {\n                return;\n              }\n              var maxConnections = targetDef.def.def.maxConnections;\n              if (maxConnections != null && maxConnections !== -1) {\n                if (_this.instance.select({\n                  target: d.targetEl\n                }).length >= maxConnections) {\n                  return;\n                }\n              }\n              var o = getElementPosition(el, _this.instance),\n                  s = getElementSize(el, _this.instance);\n              d.r = {\n                x: o.x,\n                y: o.y,\n                w: s.w,\n                h: s.h\n              };\n              d.def = targetDef.def;\n              if (targetDef.def.def.rank != null) {\n                d.rank = targetDef.def.def.rank;\n              }\n              _this.endpointDropTargets.push(d);\n              _this.instance.addClass(d.targetEl, CLASS_DRAG_ACTIVE);\n            }\n          });\n        });\n      }\n      this.endpointDropTargets.sort(function (a, b) {\n        if (a.targetEl._isJsPlumbGroup && !b.targetEl._isJsPlumbGroup) {\n          return 1;\n        } else if (!a.targetEl._isJsPlumbGroup && b.targetEl._isJsPlumbGroup) {\n          return -1;\n        } else {\n          if (a.targetEl._isJsPlumbGroup && b.targetEl._isJsPlumbGroup) {\n            if (_this.instance.groupManager.isAncestor(a.targetEl._jsPlumbGroup, b.targetEl._jsPlumbGroup)) {\n              return -1;\n            } else if (_this.instance.groupManager.isAncestor(b.targetEl._jsPlumbGroup, a.targetEl._jsPlumbGroup)) {\n              return 1;\n            }\n          } else {\n            if (a.rank != null && b.rank != null) {\n              if (a.rank > b.rank) {\n                return -1;\n              } else if (a.rank < b.rank) {\n                return 1;\n              } else ;\n            } else {\n              return 0;\n            }\n          }\n        }\n      });\n    }\n  }, {\n    key: \"_findTargetZones\",\n    value: function _findTargetZones(dragSelector) {\n      var targetZonesSelector;\n      if (dragSelector.redrop === REDROP_POLICY_ANY) {\n        var t = this.instance.targetSelectors.map(function (s) {\n          return s.selector;\n        });\n        t.push.apply(t, _toConsumableArray(this.instance.sourceSelectors.map(function (s) {\n          return s.selector;\n        })));\n        t.push(SELECTOR_MANAGED_ELEMENT);\n        targetZonesSelector = t.join(\",\");\n      } else if (dragSelector.redrop === REDROP_POLICY_STRICT) {\n        targetZonesSelector = dragSelector.selector;\n      } else if (dragSelector.redrop === REDROP_POLICY_ANY_SOURCE) {\n        targetZonesSelector = this.instance.sourceSelectors.map(function (s) {\n          return s.selector;\n        }).join(\",\");\n      } else if (dragSelector.redrop === REDROP_POLICY_ANY_TARGET) {\n        targetZonesSelector = this.instance.targetSelectors.map(function (s) {\n          return s.selector;\n        }).join(\",\");\n      } else if (dragSelector.redrop === REDROP_POLICY_ANY_SOURCE_OR_TARGET) {\n        var _t = this.instance.targetSelectors.map(function (s) {\n          return s.selector;\n        });\n        _t.push.apply(_t, _toConsumableArray(this.instance.sourceSelectors.map(function (s) {\n          return s.selector;\n        })));\n        targetZonesSelector = _t.join(\",\");\n      }\n      return this.instance.getContainer().querySelectorAll(targetZonesSelector);\n    }\n  }, {\n    key: \"onStart\",\n    value: function onStart(p) {\n      this.endpointDropTargets.length = 0;\n      this.currentDropTarget = null;\n      this._stopped = false;\n      var dragEl = p.drag.getDragElement();\n      this.ep = dragEl.jtk.endpoint;\n      if (!this.ep) {\n        return false;\n      }\n      this.endpointRepresentation = this.ep.endpoint;\n      this.canvasElement = this.endpointRepresentation.canvas;\n      this.jpc = this.ep.connectorSelector();\n      var _this$_shouldStartDra = this._shouldStartDrag(),\n          _this$_shouldStartDra2 = _slicedToArray(_this$_shouldStartDra, 2),\n          _continue = _this$_shouldStartDra2[0],\n          payload = _this$_shouldStartDra2[1];\n      if (_continue === false) {\n        this._stopped = true;\n        return false;\n      }\n      this.instance.setHover(this.ep, false);\n      this.instance.isConnectionBeingDragged = true;\n      if (this.jpc && !this.ep.isFull() && this.ep.isSource) {\n        this.jpc = null;\n      }\n      this._createFloatingEndpoint(this.canvasElement);\n      this._populateTargets(this.canvasElement, p.e);\n      if (this.jpc == null) {\n        this.startNewConnectionDrag(this.ep.scope, payload);\n      } else {\n        this.startExistingConnectionDrag();\n      }\n      this._registerFloatingConnection(this.placeholderInfo, this.jpc);\n      this.instance.currentlyDragging = true;\n    }\n  }, {\n    key: \"onBeforeStart\",\n    value: function onBeforeStart(beforeStartParams) {\n      this.payload = beforeStartParams.e.payload || {};\n    }\n  }, {\n    key: \"onDrag\",\n    value: function onDrag(params) {\n      if (this._stopped) {\n        return true;\n      }\n      if (this.placeholderInfo.element) {\n        var floatingElementSize = getElementSize(this.floatingElement, this.instance);\n        this.instance.setElementPosition(this.placeholderInfo.element, params.pos.x, params.pos.y);\n        var boundingRect = {\n          x: params.pos.x,\n          y: params.pos.y,\n          w: floatingElementSize.w,\n          h: floatingElementSize.h\n        },\n            newDropTarget,\n            idx,\n            _cont;\n        for (var i = 0; i < this.endpointDropTargets.length; i++) {\n          if (intersects(boundingRect, this.endpointDropTargets[i].r)) {\n            newDropTarget = this.endpointDropTargets[i];\n            break;\n          }\n        }\n        if (newDropTarget !== this.currentDropTarget && this.currentDropTarget != null) {\n          idx = this._getFloatingAnchorIndex();\n          this.instance.removeClass(this.currentDropTarget.el, CLASS_DRAG_HOVER);\n          if (this.currentDropTarget.endpoint) {\n            this.currentDropTarget.endpoint.endpoint.removeClass(this.instance.endpointDropAllowedClass);\n            this.currentDropTarget.endpoint.endpoint.removeClass(this.instance.endpointDropForbiddenClass);\n          }\n          this.floatingAnchor.out();\n        }\n        if (newDropTarget != null) {\n          this.instance.addClass(newDropTarget.el, CLASS_DRAG_HOVER);\n          idx = this._getFloatingAnchorIndex();\n          if (newDropTarget.endpoint != null) {\n            _cont = newDropTarget.endpoint.isSource && idx === 0 || newDropTarget.endpoint.isTarget && idx !== 0 || this.jpc.suspendedEndpoint && newDropTarget.endpoint.referenceEndpoint && newDropTarget.endpoint.referenceEndpoint.id === this.jpc.suspendedEndpoint.id;\n            if (_cont) {\n              var bb = this.instance.checkCondition(CHECK_DROP_ALLOWED, {\n                sourceEndpoint: this.jpc.endpoints[idx],\n                targetEndpoint: newDropTarget.endpoint.endpoint,\n                connection: this.jpc\n              });\n              if (bb) {\n                newDropTarget.endpoint.endpoint.addClass(this.instance.endpointDropAllowedClass);\n                newDropTarget.endpoint.endpoint.removeClass(this.instance.endpointDropForbiddenClass);\n              } else {\n                newDropTarget.endpoint.endpoint.removeClass(this.instance.endpointDropAllowedClass);\n                newDropTarget.endpoint.endpoint.addClass(this.instance.endpointDropForbiddenClass);\n              }\n              this.floatingAnchor.over(newDropTarget.endpoint);\n              this.instance._paintConnection(this.jpc);\n            } else {\n              newDropTarget = null;\n            }\n          }\n        }\n        this.currentDropTarget = newDropTarget;\n      }\n    }\n  }, {\n    key: \"_maybeCleanup\",\n    value: function _maybeCleanup(ep) {\n      if (ep._mtNew && ep.connections.length === 0) {\n        this.instance.deleteEndpoint(ep);\n      } else {\n        delete ep._mtNew;\n      }\n    }\n  }, {\n    key: \"_reattachOrDiscard\",\n    value: function _reattachOrDiscard(originalEvent) {\n      var existingConnection = this.jpc.suspendedEndpoint != null;\n      var idx = this._getFloatingAnchorIndex();\n      if (existingConnection && this._shouldReattach()) {\n        if (idx === 0) {\n          this.jpc.source = this.jpc.suspendedElement;\n          this.jpc.sourceId = this.jpc.suspendedElementId;\n        } else {\n          this.jpc.target = this.jpc.suspendedElement;\n          this.jpc.targetId = this.jpc.suspendedElementId;\n        }\n        this._doForceReattach(idx);\n        return true;\n      } else {\n        this._discard(idx, originalEvent);\n        return false;\n      }\n    }\n  }, {\n    key: \"onStop\",\n    value: function onStop(p) {\n      var _this2 = this;\n      var originalEvent = p.e;\n      this.instance.isConnectionBeingDragged = false;\n      this.instance.currentlyDragging = false;\n      var classesToRemove = classList(CLASS_DRAG_HOVER, CLASS_DRAG_ACTIVE);\n      var matchingSelectors = this.instance.getContainer().querySelectorAll(SELECTOR_DRAG_ACTIVE_OR_HOVER);\n      forEach(matchingSelectors, function (el) {\n        _this2.instance.removeClass(el, classesToRemove);\n      });\n      if (this.jpc && this.jpc.endpoints != null) {\n        var existingConnection = this.jpc.suspendedEndpoint != null;\n        var idx = this._getFloatingAnchorIndex();\n        var suspendedEndpoint = this.jpc.suspendedEndpoint;\n        var dropEndpoint;\n        if (this.currentDropTarget != null) {\n          dropEndpoint = this._getDropEndpoint(p, this.jpc);\n          if (dropEndpoint == null) {\n            this._reattachOrDiscard(p.e);\n          } else {\n            if (suspendedEndpoint && suspendedEndpoint.id === dropEndpoint.id) {\n              this._doForceReattach(idx);\n            } else {\n              if (!dropEndpoint.enabled) {\n                this._reattachOrDiscard(p.e);\n              } else if (dropEndpoint.isFull()) {\n                dropEndpoint.fire(EVENT_MAX_CONNECTIONS, {\n                  endpoint: this,\n                  connection: this.jpc,\n                  maxConnections: this.instance.defaults.maxConnections\n                }, originalEvent);\n                this._reattachOrDiscard(p.e);\n              } else {\n                if (idx === 0) {\n                  this.jpc.source = dropEndpoint.element;\n                  this.jpc.sourceId = dropEndpoint.elementId;\n                } else {\n                  this.jpc.target = dropEndpoint.element;\n                  this.jpc.targetId = dropEndpoint.elementId;\n                }\n                var _doContinue = true;\n                if (existingConnection && this.jpc.suspendedEndpoint.id !== dropEndpoint.id) {\n                  if (!this.jpc.isDetachAllowed(this.jpc) || !this.jpc.endpoints[idx].isDetachAllowed(this.jpc) || !this.jpc.suspendedEndpoint.isDetachAllowed(this.jpc) || !this.instance.checkCondition(\"beforeDetach\", this.jpc)) {\n                    _doContinue = false;\n                  }\n                }\n                _doContinue = _doContinue && dropEndpoint.isDropAllowed(this.jpc.sourceId, this.jpc.targetId, this.jpc.scope, this.jpc, dropEndpoint);\n                if (_doContinue) {\n                  this._drop(dropEndpoint, idx, originalEvent, _doContinue);\n                } else {\n                  this._reattachOrDiscard(p.e);\n                }\n              }\n            }\n          }\n        } else {\n          this._reattachOrDiscard(p.e);\n        }\n        this.instance._refreshEndpoint(this.ep);\n        this.ep.removeClass(this.instance.draggingClass);\n        this._cleanupDraggablePlaceholder();\n        this.jpc.removeClass(this.instance.draggingClass);\n        delete this.jpc.suspendedEndpoint;\n        delete this.jpc.suspendedElement;\n        delete this.jpc.suspendedElementType;\n        delete this.jpc.suspendedElementId;\n        delete this.jpc.suspendedIndex;\n        delete this.floatingId;\n        delete this.floatingIndex;\n        delete this.floatingElement;\n        delete this.floatingEndpoint;\n        delete this.floatingAnchor;\n        delete this.jpc.pending;\n        if (dropEndpoint != null) {\n          this._maybeCleanup(dropEndpoint);\n        }\n      }\n    }\n  }, {\n    key: \"_getSourceDefinition\",\n    value: function _getSourceDefinition(evt) {\n      var selector;\n      var container = this.instance.getContainer();\n      for (var i = 0; i < this.instance.sourceSelectors.length; i++) {\n        selector = this.instance.sourceSelectors[i];\n        if (selector.isEnabled()) {\n          var r = selectorFilter(evt, container, selector.selector, this.instance, selector.exclude);\n          if (r !== false) {\n            return selector;\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_getDropEndpoint\",\n    value: function _getDropEndpoint(p, jpc) {\n      var dropEndpoint;\n      if (this.currentDropTarget.endpoint == null) {\n        var targetDefinition = this.currentDropTarget.def;\n        var eventTarget = p.e.target || p.e.srcElement;\n        if (targetDefinition == null) {\n          return null;\n        }\n        var targetElement = this.currentDropTarget.targetEl;\n        var elxy = getPositionOnElement(p.e, targetElement, this.instance.currentZoom);\n        var eps = this.instance._deriveEndpointAndAnchorSpec(jpc.getType().join(\" \"), true);\n        var pp = eps.endpoints ? extend(p, {\n          endpoint: targetDefinition.def.endpoint || eps.endpoints[1],\n          cssClass: targetDefinition.def.cssClass || \"\",\n          source: targetDefinition.def.source === true,\n          target: targetDefinition.def.target === true\n        }) : p;\n        var anchorsToUse = this.instance.validAnchorsSpec(eps.anchors) ? eps.anchors : this.instance.areDefaultAnchorsSet() ? this.instance.defaults.anchors : null;\n        var anchorFromDef = targetDefinition.def.anchor;\n        var anchorFromPositionFinder = targetDefinition.def.anchorPositionFinder ? targetDefinition.def.anchorPositionFinder(targetElement, elxy, targetDefinition.def, p.e) : null;\n        var dropAnchor = anchorFromPositionFinder != null ? anchorFromPositionFinder : anchorFromDef != null ? anchorFromDef : anchorsToUse != null && anchorsToUse[1] != null ? anchorsToUse[1] : null;\n        if (dropAnchor != null) {\n          pp = extend(pp, {\n            anchor: dropAnchor\n          });\n        }\n        if (targetDefinition.def.portId != null) {\n          pp.portId = targetDefinition.def.portId;\n        }\n        var extractedParameters = targetDefinition.def.parameterExtractor ? targetDefinition.def.parameterExtractor(this.currentDropTarget.el, eventTarget, p.e) : {};\n        pp = merge(pp, extractedParameters);\n        pp.element = targetElement;\n        dropEndpoint = this.instance._internal_newEndpoint(pp);\n        dropEndpoint._mtNew = true;\n        dropEndpoint.deleteOnEmpty = true;\n        if (targetDefinition.def.parameters) {\n          dropEndpoint.mergeParameters(targetDefinition.def.parameters);\n        }\n        if (targetDefinition.def.extract) {\n          var tpayload = {};\n          for (var att in targetDefinition.def.extract) {\n            var v = this.currentDropTarget.el.getAttribute(att);\n            if (v) {\n              tpayload[targetDefinition.def.extract[att]] = v;\n            }\n          }\n          dropEndpoint.mergeParameters(tpayload);\n        }\n      } else {\n        dropEndpoint = this.currentDropTarget.endpoint;\n      }\n      if (dropEndpoint) {\n        dropEndpoint.removeClass(this.instance.endpointDropAllowedClass);\n        dropEndpoint.removeClass(this.instance.endpointDropForbiddenClass);\n      }\n      return dropEndpoint;\n    }\n  }, {\n    key: \"_doForceReattach\",\n    value: function _doForceReattach(idx) {\n      this.floatingEndpoint.detachFromConnection(this.jpc, null, true);\n      this.jpc.endpoints[idx] = this.jpc.suspendedEndpoint;\n      this.instance.setHover(this.jpc, false);\n      this.jpc._forceDetach = true;\n      this.jpc.suspendedEndpoint.addConnection(this.jpc);\n      this.instance.sourceOrTargetChanged(this.floatingId, this.jpc.suspendedEndpoint.elementId, this.jpc, this.jpc.suspendedEndpoint.element, idx);\n      this.instance.deleteEndpoint(this.floatingEndpoint);\n      this.instance.repaint(this.jpc.source);\n      delete this.jpc._forceDetach;\n    }\n  }, {\n    key: \"_shouldReattach\",\n    value: function _shouldReattach() {\n      if (this.jpc.isReattach() || this.jpc._forceReattach) {\n        return true;\n      } else {\n        var suspendedEndpoint = this.jpc.suspendedEndpoint,\n            otherEndpointIdx = this.jpc.suspendedElementType == SOURCE ? 1 : 0,\n            otherEndpoint = this.jpc.endpoints[otherEndpointIdx];\n        return !functionChain(true, false, [[suspendedEndpoint, IS_DETACH_ALLOWED, [this.jpc]], [otherEndpoint, IS_DETACH_ALLOWED, [this.jpc]], [this.jpc, IS_DETACH_ALLOWED, [this.jpc]], [this.instance, CHECK_CONDITION, [INTERCEPT_BEFORE_DETACH, this.jpc]]]);\n      }\n    }\n  }, {\n    key: \"_discard\",\n    value: function _discard(idx, originalEvent) {\n      if (this.jpc.pending) {\n        this.instance.fire(EVENT_CONNECTION_ABORT, this.jpc, originalEvent);\n      } else {\n        if (idx === 0) {\n          this.jpc.source = this.jpc.suspendedEndpoint.element;\n          this.jpc.sourceId = this.jpc.suspendedEndpoint.elementId;\n        } else {\n          this.jpc.target = this.jpc.suspendedEndpoint.element;\n          this.jpc.targetId = this.jpc.suspendedEndpoint.elementId;\n        }\n        this.jpc.endpoints[idx] = this.jpc.suspendedEndpoint;\n      }\n      if (this.floatingEndpoint) {\n        this.floatingEndpoint.detachFromConnection(this.jpc);\n      }\n      this.instance.deleteConnection(this.jpc, {\n        originalEvent: originalEvent,\n        force: true\n      });\n    }\n  }, {\n    key: \"_drop\",\n    value: function _drop(dropEndpoint, idx, originalEvent, optionalData) {\n      this.jpc.endpoints[idx].detachFromConnection(this.jpc);\n      if (this.jpc.suspendedEndpoint) {\n        this.jpc.suspendedEndpoint.detachFromConnection(this.jpc);\n      }\n      this.jpc.endpoints[idx] = dropEndpoint;\n      dropEndpoint.addConnection(this.jpc);\n      if (this.jpc.suspendedEndpoint) {\n        var suspendedElementId = this.jpc.suspendedEndpoint.elementId;\n        this.instance.fireMoveEvent({\n          index: idx,\n          originalSourceId: idx === 0 ? suspendedElementId : this.jpc.sourceId,\n          newSourceId: idx === 0 ? dropEndpoint.elementId : this.jpc.sourceId,\n          originalTargetId: idx === 1 ? suspendedElementId : this.jpc.targetId,\n          newTargetId: idx === 1 ? dropEndpoint.elementId : this.jpc.targetId,\n          originalEndpoint: this.jpc.suspendedEndpoint,\n          connection: this.jpc,\n          newEndpoint: dropEndpoint\n        }, originalEvent);\n      }\n      if (idx === 1) {\n        this.instance.sourceOrTargetChanged(this.floatingId, this.jpc.targetId, this.jpc, this.jpc.target, 1);\n      } else {\n        this.instance.sourceOrTargetChanged(this.floatingId, this.jpc.sourceId, this.jpc, this.jpc.source, 0);\n      }\n      if (this.jpc.endpoints[0].finalEndpoint) {\n        var _toDelete = this.jpc.endpoints[0];\n        _toDelete.detachFromConnection(this.jpc);\n        this.jpc.endpoints[0] = this.jpc.endpoints[0].finalEndpoint;\n        this.jpc.endpoints[0].addConnection(this.jpc);\n      }\n      if (isObject(optionalData)) {\n        this.jpc.mergeData(optionalData);\n      }\n      if (this._originalAnchorSpec) {\n        this.jpc.endpoints[0].setAnchor(this._originalAnchorSpec);\n        this._originalAnchorSpec = null;\n      }\n      this.instance._finaliseConnection(this.jpc, null, originalEvent);\n      this.instance.setHover(this.jpc, false);\n      this.instance.revalidate(this.jpc.endpoints[0].element);\n    }\n  }, {\n    key: \"_registerFloatingConnection\",\n    value: function _registerFloatingConnection(info, conn) {\n      this.floatingConnections[info.id] = conn;\n    }\n  }, {\n    key: \"_getFloatingAnchorIndex\",\n    value: function _getFloatingAnchorIndex() {\n      return this.floatingIndex == null ? 1 : this.floatingIndex;\n    }\n  }]);\n  return EndpointDragHandler;\n}();\n\nvar GroupDragHandler = function (_ElementDragHandler) {\n  _inherits(GroupDragHandler, _ElementDragHandler);\n  var _super = _createSuper(GroupDragHandler);\n  function GroupDragHandler(instance, dragSelection) {\n    var _this;\n    _classCallCheck(this, GroupDragHandler);\n    _this = _super.call(this, instance, dragSelection);\n    _this.instance = instance;\n    _this.dragSelection = dragSelection;\n    _defineProperty(_assertThisInitialized(_this), \"selector\", [\">\", SELECTOR_GROUP, SELECTOR_MANAGED_ELEMENT].join(\" \"));\n    _defineProperty(_assertThisInitialized(_this), \"doRevalidate\", void 0);\n    _this.doRevalidate = _this._revalidate.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n  _createClass(GroupDragHandler, [{\n    key: \"reset\",\n    value: function reset() {\n      this.drag.off(EVENT_REVERT, this.doRevalidate);\n    }\n  }, {\n    key: \"_revalidate\",\n    value: function _revalidate(el) {\n      this.instance.revalidate(el);\n    }\n  }, {\n    key: \"init\",\n    value: function init(drag) {\n      this.drag = drag;\n      drag.on(EVENT_REVERT, this.doRevalidate);\n    }\n  }, {\n    key: \"useGhostProxy\",\n    value: function useGhostProxy(container, dragEl) {\n      var group = dragEl._jsPlumbParentGroup;\n      return group == null ? false : group.ghost === true;\n    }\n  }, {\n    key: \"makeGhostProxy\",\n    value: function makeGhostProxy(el) {\n      var jel = el;\n      var newEl = jel.cloneNode(true);\n      newEl._jsPlumbParentGroup = jel._jsPlumbParentGroup;\n      return newEl;\n    }\n  }]);\n  return GroupDragHandler;\n}(ElementDragHandler);\n\nvar HTMLElementOverlay = function () {\n  function HTMLElementOverlay(instance, overlay) {\n    _classCallCheck(this, HTMLElementOverlay);\n    this.instance = instance;\n    this.overlay = overlay;\n    _defineProperty(this, \"htmlElementOverlay\", void 0);\n    this.htmlElementOverlay = overlay;\n  }\n  _createClass(HTMLElementOverlay, null, [{\n    key: \"getElement\",\n    value: function getElement(o, component, elementCreator) {\n      if (o.canvas == null) {\n        if (elementCreator && component) {\n          o.canvas = elementCreator(component);\n          var cls = o.instance.overlayClass + \" \" + (o.cssClass ? o.cssClass : \"\");\n          o.instance.addClass(o.canvas, cls);\n        } else {\n          o.canvas = createElement(ELEMENT_DIV, {}, o.instance.overlayClass + \" \" + (o.cssClass ? o.cssClass : \"\"));\n        }\n        o.instance.setAttribute(o.canvas, \"jtk-overlay-id\", o.id);\n        for (var att in o.attributes) {\n          o.instance.setAttribute(o.canvas, att, o.attributes[att]);\n        }\n        o.canvas.style.position = ABSOLUTE;\n        o.instance._appendElement(o.canvas, o.instance.getContainer());\n        o.instance.getId(o.canvas);\n        var ts = \"translate(-50%, -50%)\";\n        o.canvas.style.webkitTransform = ts;\n        o.canvas.style.mozTransform = ts;\n        o.canvas.style.msTransform = ts;\n        o.canvas.style.oTransform = ts;\n        o.canvas.style.transform = ts;\n        if (!o.isVisible()) {\n          o.canvas.style.display = NONE;\n        }\n        o.canvas.jtk = {\n          overlay: o\n        };\n      }\n      return o.canvas;\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy(o) {\n      o.canvas && o.canvas.parentNode && o.canvas.parentNode.removeChild(o.canvas);\n      delete o.canvas;\n      delete o.cachedDimensions;\n    }\n  }, {\n    key: \"_getDimensions\",\n    value: function _getDimensions(o, forceRefresh) {\n      if (o.cachedDimensions == null || forceRefresh) {\n        o.cachedDimensions = {\n          w: 1,\n          h: 1\n        };\n      }\n      return o.cachedDimensions;\n    }\n  }]);\n  return HTMLElementOverlay;\n}();\n\nvar EventGenerator = function () {\n  function EventGenerator() {\n    _classCallCheck(this, EventGenerator);\n    _defineProperty(this, \"_listeners\", {});\n    _defineProperty(this, \"eventsSuspended\", false);\n    _defineProperty(this, \"tick\", false);\n    _defineProperty(this, \"eventsToDieOn\", {\n      \"ready\": true\n    });\n    _defineProperty(this, \"queue\", []);\n  }\n  _createClass(EventGenerator, [{\n    key: \"fire\",\n    value: function fire(event, value, originalEvent) {\n      var ret = null;\n      if (!this.tick) {\n        this.tick = true;\n        if (!this.eventsSuspended && this._listeners[event]) {\n          var l = this._listeners[event].length,\n              i = 0,\n              _gone = false;\n          if (!this.shouldFireEvent || this.shouldFireEvent(event, value, originalEvent)) {\n            while (!_gone && i < l && ret !== false) {\n              if (this.eventsToDieOn[event]) {\n                this._listeners[event][i](value, originalEvent);\n              } else {\n                try {\n                  ret = this._listeners[event][i](value, originalEvent);\n                } catch (e) {\n                  log(\"jsPlumb: fire failed for event \" + event + \" : \" + (e.message || e));\n                }\n              }\n              i++;\n              if (this._listeners == null || this._listeners[event] == null) {\n                _gone = true;\n              }\n            }\n          }\n        }\n        this.tick = false;\n        this._drain();\n      } else {\n        this.queue.unshift(arguments);\n      }\n      return ret;\n    }\n  }, {\n    key: \"_drain\",\n    value: function _drain() {\n      var n = this.queue.pop();\n      if (n) {\n        this.fire.apply(this, n);\n      }\n    }\n  }, {\n    key: \"unbind\",\n    value: function unbind(eventOrListener, listener) {\n      if (arguments.length === 0) {\n        this._listeners = {};\n      } else if (arguments.length === 1) {\n        if (typeof eventOrListener === \"string\") {\n          delete this._listeners[eventOrListener];\n        } else if (eventOrListener.__jsPlumb) {\n          var evt;\n          for (var i in eventOrListener.__jsPlumb) {\n            evt = eventOrListener.__jsPlumb[i];\n            remove(this._listeners[evt] || [], eventOrListener);\n          }\n        }\n      } else if (arguments.length === 2) {\n        remove(this._listeners[eventOrListener] || [], listener);\n      }\n      return this;\n    }\n  }, {\n    key: \"getListener\",\n    value: function getListener(forEvent) {\n      return this._listeners[forEvent] || [];\n    }\n  }, {\n    key: \"isSuspendEvents\",\n    value: function isSuspendEvents() {\n      return this.eventsSuspended;\n    }\n  }, {\n    key: \"setSuspendEvents\",\n    value: function setSuspendEvents(val) {\n      this.eventsSuspended = val;\n    }\n  }, {\n    key: \"bind\",\n    value: function bind(event, listener, insertAtStart) {\n      var _this = this;\n      var _one = function _one(evt) {\n        addToDictionary(_this._listeners, evt, listener, insertAtStart);\n        listener.__jsPlumb = listener.__jsPlumb || {};\n        listener.__jsPlumb[uuid()] = evt;\n      };\n      if (typeof event === \"string\") {\n        _one(event);\n      } else if (event.length != null) {\n        for (var i = 0; i < event.length; i++) {\n          _one(event[i]);\n        }\n      }\n      return this;\n    }\n  }, {\n    key: \"silently\",\n    value: function silently(fn) {\n      this.setSuspendEvents(true);\n      try {\n        fn();\n      } catch (e) {\n        log(\"Cannot execute silent function \" + e);\n      }\n      this.setSuspendEvents(false);\n    }\n  }]);\n  return EventGenerator;\n}();\nvar OptimisticEventGenerator = function (_EventGenerator) {\n  _inherits(OptimisticEventGenerator, _EventGenerator);\n  var _super = _createSuper(OptimisticEventGenerator);\n  function OptimisticEventGenerator() {\n    _classCallCheck(this, OptimisticEventGenerator);\n    return _super.apply(this, arguments);\n  }\n  _createClass(OptimisticEventGenerator, [{\n    key: \"shouldFireEvent\",\n    value: function shouldFireEvent(event, value, originalEvent) {\n      return true;\n    }\n  }]);\n  return OptimisticEventGenerator;\n}(EventGenerator);\n\nfunction isFullOverlaySpec(o) {\n  return o.type != null && o.options != null;\n}\nfunction convertToFullOverlaySpec(spec) {\n  var o = null;\n  if (isString(spec)) {\n    o = {\n      type: spec,\n      options: {}\n    };\n  } else {\n    o = spec;\n  }\n  o.options.id = o.options.id || uuid();\n  return o;\n}\nvar Overlay = function (_EventGenerator) {\n  _inherits(Overlay, _EventGenerator);\n  var _super = _createSuper(Overlay);\n  function Overlay(instance, component, p) {\n    var _this;\n    _classCallCheck(this, Overlay);\n    _this = _super.call(this);\n    _this.instance = instance;\n    _this.component = component;\n    _defineProperty(_assertThisInitialized(_this), \"id\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"type\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cssClass\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"visible\", true);\n    _defineProperty(_assertThisInitialized(_this), \"location\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"events\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"attributes\", void 0);\n    p = p || {};\n    _this.id = p.id || uuid();\n    _this.cssClass = p.cssClass || \"\";\n    _this.setLocation(p.location);\n    _this.events = p.events || {};\n    _this.attributes = p.attributes || {};\n    for (var _event in _this.events) {\n      _this.bind(_event, _this.events[_event]);\n    }\n    return _this;\n  }\n  _createClass(Overlay, [{\n    key: \"setLocation\",\n    value: function setLocation(l) {\n      var newLocation = this.location == null ? 0.5 : this.location;\n      if (l != null) {\n        try {\n          var _l = typeof l === \"string\" ? parseFloat(l) : l;\n          if (!isNaN(_l)) {\n            newLocation = _l;\n          }\n        } catch (e) {\n        }\n      }\n      this.location = newLocation;\n    }\n  }, {\n    key: \"shouldFireEvent\",\n    value: function shouldFireEvent(event, value, originalEvent) {\n      return true;\n    }\n  }, {\n    key: \"setVisible\",\n    value: function setVisible(v) {\n      this.visible = v;\n      this.instance.setOverlayVisible(this, v);\n    }\n  }, {\n    key: \"isVisible\",\n    value: function isVisible() {\n      return this.visible;\n    }\n  }]);\n  return Overlay;\n}(EventGenerator);\n\nvar overlayMap = {};\nvar OverlayFactory = {\n  get: function get(instance, name, component, params) {\n    var c = overlayMap[name];\n    if (!c) {\n      throw {\n        message: \"jsPlumb: unknown overlay type '\" + name + \"'\"\n      };\n    } else {\n      return new c(instance, component, params);\n    }\n  },\n  register: function register(name, overlay) {\n    overlayMap[name] = overlay;\n  }\n};\n\nvar LabelOverlay = function (_Overlay) {\n  _inherits(LabelOverlay, _Overlay);\n  var _super = _createSuper(LabelOverlay);\n  function LabelOverlay(instance, component, p) {\n    var _this;\n    _classCallCheck(this, LabelOverlay);\n    _this = _super.call(this, instance, component, p);\n    _this.instance = instance;\n    _this.component = component;\n    _defineProperty(_assertThisInitialized(_this), \"label\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"labelText\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"type\", LabelOverlay.type);\n    _defineProperty(_assertThisInitialized(_this), \"cachedDimensions\", void 0);\n    p = p || {\n      label: \"\"\n    };\n    _this.setLabel(p.label);\n    return _this;\n  }\n  _createClass(LabelOverlay, [{\n    key: \"getLabel\",\n    value: function getLabel() {\n      if (isFunction(this.label)) {\n        return this.label(this);\n      } else {\n        return this.labelText;\n      }\n    }\n  }, {\n    key: \"setLabel\",\n    value: function setLabel(l) {\n      this.label = l;\n      this.labelText = null;\n      this.instance.updateLabel(this);\n    }\n  }, {\n    key: \"getDimensions\",\n    value: function getDimensions() {\n      return {\n        w: 1,\n        h: 1\n      };\n    }\n  }, {\n    key: \"updateFrom\",\n    value: function updateFrom(d) {\n      if (d.label != null) {\n        this.setLabel(d.label);\n      }\n      if (d.location != null) {\n        this.setLocation(d.location);\n        this.instance.updateLabel(this);\n      }\n    }\n  }]);\n  return LabelOverlay;\n}(Overlay);\n_defineProperty(LabelOverlay, \"type\", \"Label\");\nfunction isLabelOverlay(o) {\n  return o.type === LabelOverlay.type;\n}\nOverlayFactory.register(LabelOverlay.type, LabelOverlay);\n\nfunction _splitType(t) {\n  return t == null ? null : t.split(\" \").filter(function (t) {\n    return t != null && t.length > 0;\n  });\n}\nfunction _mapType(map, obj, typeId) {\n  for (var i in obj) {\n    map[i] = typeId;\n  }\n}\nvar CONNECTOR = \"connector\";\nvar MERGE_STRATEGY_OVERRIDE = \"override\";\nvar CSS_CLASS = \"cssClass\";\nvar DEFAULT_TYPE_KEY = \"__default\";\nvar ANCHOR = \"anchor\";\nvar ANCHORS = \"anchors\";\nvar _internalLabelOverlayId = \"__label\";\nvar _internalLabelOverlayClass = \"jtk-default-label\";\nvar TYPE_ITEM_OVERLAY = \"overlay\";\nvar LOCATION_ATTRIBUTE = \"labelLocation\";\nvar ACTION_ADD = \"add\";\nvar ACTION_REMOVE = \"remove\";\nfunction _applyTypes(component, params) {\n  if (component.getDefaultType) {\n    var td = component.getTypeDescriptor(),\n        map = {};\n    var defType = component.getDefaultType();\n    var o = extend({}, defType);\n    _mapType(map, defType, DEFAULT_TYPE_KEY);\n    component._types.forEach(function (tid) {\n      if (tid !== DEFAULT_TYPE_KEY) {\n        var _t = component.instance.getType(tid, td);\n        if (_t != null) {\n          var overrides = new Set([CONNECTOR, ANCHOR, ANCHORS]);\n          if (_t.mergeStrategy === MERGE_STRATEGY_OVERRIDE) {\n            for (var k in _t) {\n              overrides.add(k);\n            }\n          }\n          o = merge(o, _t, [CSS_CLASS], setToArray(overrides));\n          _mapType(map, _t, tid);\n        }\n      }\n    });\n    if (params) {\n      o = populate(o, params, \"_\");\n    }\n    component.applyType(o, map);\n  }\n}\nfunction _removeTypeCssHelper(component, typeId) {\n  var type = component.instance.getType(typeId, component.getTypeDescriptor());\n  if (type != null && type.cssClass) {\n    component.removeClass(type.cssClass);\n  }\n}\nfunction _updateHoverStyle(component) {\n  if (component.paintStyle && component.hoverPaintStyle) {\n    var mergedHoverStyle = {};\n    extend(mergedHoverStyle, component.paintStyle);\n    extend(mergedHoverStyle, component.hoverPaintStyle);\n    component.hoverPaintStyle = mergedHoverStyle;\n  }\n}\nvar ADD_CLASS_ACTION = \"add\";\nvar REMOVE_CLASS_ACTION = \"remove\";\nfunction _makeLabelOverlay(component, params) {\n  var _params = {\n    cssClass: params.cssClass,\n    id: _internalLabelOverlayId,\n    component: component\n  },\n      mergedParams = extend(_params, params);\n  return new LabelOverlay(component.instance, component, mergedParams);\n}\nfunction _processOverlay(component, o) {\n  var _newOverlay = null;\n  if (isString(o)) {\n    _newOverlay = OverlayFactory.get(component.instance, o, component, {});\n  } else if (o.type != null && o.options != null) {\n    var oa = o;\n    var p = extend({}, oa.options);\n    _newOverlay = OverlayFactory.get(component.instance, oa.type, component, p);\n  } else {\n    _newOverlay = o;\n  }\n  _newOverlay.id = _newOverlay.id || uuid();\n  component.cacheTypeItem(TYPE_ITEM_OVERLAY, _newOverlay, _newOverlay.id);\n  component.overlays[_newOverlay.id] = _newOverlay;\n  return _newOverlay;\n}\nvar Component = function (_EventGenerator) {\n  _inherits(Component, _EventGenerator);\n  var _super = _createSuper(Component);\n  function Component(instance, params) {\n    var _this;\n    _classCallCheck(this, Component);\n    _this = _super.call(this);\n    _this.instance = instance;\n    _defineProperty(_assertThisInitialized(_this), \"defaultLabelLocation\", 0.5);\n    _defineProperty(_assertThisInitialized(_this), \"overlays\", {});\n    _defineProperty(_assertThisInitialized(_this), \"overlayPositions\", {});\n    _defineProperty(_assertThisInitialized(_this), \"overlayPlacements\", {});\n    _defineProperty(_assertThisInitialized(_this), \"clone\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"deleted\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"segment\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"x\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"y\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"w\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"h\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"id\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"visible\", true);\n    _defineProperty(_assertThisInitialized(_this), \"typeId\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"params\", {});\n    _defineProperty(_assertThisInitialized(_this), \"paintStyle\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"hoverPaintStyle\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"paintStyleInUse\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_hover\", false);\n    _defineProperty(_assertThisInitialized(_this), \"lastPaintedAt\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"data\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_defaultType\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"events\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"parameters\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_types\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_typeCache\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cssClass\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"hoverClass\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"beforeDetach\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"beforeDrop\", void 0);\n    params = params || {};\n    _this.cssClass = params.cssClass || \"\";\n    _this.hoverClass = params.hoverClass || instance.defaults.hoverClass;\n    _this.beforeDetach = params.beforeDetach;\n    _this.beforeDrop = params.beforeDrop;\n    _this._types = new Set();\n    _this._typeCache = {};\n    _this.parameters = clone(params.parameters || {});\n    _this.id = params.id || _this.getIdPrefix() + new Date().getTime();\n    _this._defaultType = {\n      parameters: _this.parameters,\n      scope: params.scope || _this.instance.defaultScope,\n      overlays: {}\n    };\n    if (params.events) {\n      for (var evtName in params.events) {\n        _this.bind(evtName, params.events[evtName]);\n      }\n    }\n    _this.clone = function () {\n      var o = Object.create(_this.constructor.prototype);\n      _this.constructor.apply(o, [instance, params]);\n      return o;\n    };\n    _this.overlays = {};\n    _this.overlayPositions = {};\n    var o = params.overlays || [],\n        oo = {};\n    var defaultOverlayKey = _this.getDefaultOverlayKey();\n    if (defaultOverlayKey) {\n      var defaultOverlays = _this.instance.defaults[defaultOverlayKey];\n      if (defaultOverlays) {\n        o.push.apply(o, _toConsumableArray(defaultOverlays));\n      }\n      for (var i = 0; i < o.length; i++) {\n        var fo = convertToFullOverlaySpec(o[i]);\n        oo[fo.options.id] = fo;\n      }\n    }\n    _this._defaultType.overlays = oo;\n    if (params.label) {\n      _this.getDefaultType().overlays[_internalLabelOverlayId] = {\n        type: LabelOverlay.type,\n        options: {\n          label: params.label,\n          location: params.labelLocation || _this.defaultLabelLocation,\n          id: _internalLabelOverlayId,\n          cssClass: _internalLabelOverlayClass\n        }\n      };\n    }\n    return _this;\n  }\n  _createClass(Component, [{\n    key: \"isDetachAllowed\",\n    value: function isDetachAllowed(connection) {\n      var r = true;\n      if (this.beforeDetach) {\n        try {\n          r = this.beforeDetach(connection);\n        } catch (e) {\n          log(\"jsPlumb: beforeDetach callback failed\", e);\n        }\n      }\n      return r;\n    }\n  }, {\n    key: \"isDropAllowed\",\n    value: function isDropAllowed(sourceId, targetId, scope, connection, dropEndpoint) {\n      var r;\n      var payload = {\n        sourceId: sourceId,\n        targetId: targetId,\n        scope: scope,\n        connection: connection,\n        dropEndpoint: dropEndpoint\n      };\n      if (this.beforeDrop) {\n        try {\n          r = this.beforeDrop(payload);\n        } catch (e) {\n          log(\"jsPlumb: beforeDrop callback failed\", e);\n        }\n      } else {\n        r = this.instance.checkCondition(INTERCEPT_BEFORE_DROP, payload);\n      }\n      return r;\n    }\n  }, {\n    key: \"getDefaultType\",\n    value: function getDefaultType() {\n      return this._defaultType;\n    }\n  }, {\n    key: \"appendToDefaultType\",\n    value: function appendToDefaultType(obj) {\n      for (var i in obj) {\n        this._defaultType[i] = obj[i];\n      }\n    }\n  }, {\n    key: \"getId\",\n    value: function getId() {\n      return this.id;\n    }\n  }, {\n    key: \"cacheTypeItem\",\n    value: function cacheTypeItem(key, item, typeId) {\n      this._typeCache[typeId] = this._typeCache[typeId] || {};\n      this._typeCache[typeId][key] = item;\n    }\n  }, {\n    key: \"getCachedTypeItem\",\n    value: function getCachedTypeItem(key, typeId) {\n      return this._typeCache[typeId] ? this._typeCache[typeId][key] : null;\n    }\n  }, {\n    key: \"setType\",\n    value: function setType(typeId, params) {\n      this.clearTypes();\n      (_splitType(typeId) || []).forEach(this._types.add, this._types);\n      _applyTypes(this, params);\n    }\n  }, {\n    key: \"getType\",\n    value: function getType() {\n      return Array.from(this._types.keys());\n    }\n  }, {\n    key: \"reapplyTypes\",\n    value: function reapplyTypes(params) {\n      _applyTypes(this, params);\n    }\n  }, {\n    key: \"hasType\",\n    value: function hasType(typeId) {\n      return this._types.has(typeId);\n    }\n  }, {\n    key: \"addType\",\n    value: function addType(typeId, params) {\n      var t = _splitType(typeId),\n          _somethingAdded = false;\n      if (t != null) {\n        for (var i = 0, j = t.length; i < j; i++) {\n          if (!this._types.has(t[i])) {\n            this._types.add(t[i]);\n            _somethingAdded = true;\n          }\n        }\n        if (_somethingAdded) {\n          _applyTypes(this, params);\n        }\n      }\n    }\n  }, {\n    key: \"removeType\",\n    value: function removeType(typeId, params) {\n      var _this2 = this;\n      var t = _splitType(typeId),\n          _cont = false,\n          _one = function _one(tt) {\n        if (_this2._types.has(tt)) {\n          _removeTypeCssHelper(_this2, tt);\n          _this2._types[\"delete\"](tt);\n          return true;\n        }\n        return false;\n      };\n      if (t != null) {\n        for (var i = 0, j = t.length; i < j; i++) {\n          _cont = _one(t[i]) || _cont;\n        }\n        if (_cont) {\n          _applyTypes(this, params);\n        }\n      }\n    }\n  }, {\n    key: \"clearTypes\",\n    value: function clearTypes(params) {\n      var _this3 = this;\n      this._types.forEach(function (t) {\n        _removeTypeCssHelper(_this3, t);\n      });\n      this._types.clear();\n      _applyTypes(this, params);\n    }\n  }, {\n    key: \"toggleType\",\n    value: function toggleType(typeId, params) {\n      var t = _splitType(typeId);\n      if (t != null) {\n        for (var i = 0, j = t.length; i < j; i++) {\n          if (this._types.has(t[i])) {\n            _removeTypeCssHelper(this, t[i]);\n            this._types[\"delete\"](t[i]);\n          } else {\n            this._types.add(t[i]);\n          }\n        }\n        _applyTypes(this, params);\n      }\n    }\n  }, {\n    key: \"applyType\",\n    value: function applyType(t, params) {\n      this.setPaintStyle(t.paintStyle);\n      this.setHoverPaintStyle(t.hoverPaintStyle);\n      this.mergeParameters(t.parameters);\n      this.paintStyleInUse = this.getPaintStyle();\n      if (t.overlays) {\n        var keep = {},\n            i;\n        for (i in t.overlays) {\n          var existing = this.overlays[t.overlays[i].options.id];\n          if (existing) {\n            existing.updateFrom(t.overlays[i].options);\n            keep[t.overlays[i].options.id] = true;\n            this.instance.reattachOverlay(existing, this);\n          } else {\n            var _c = this.getCachedTypeItem(TYPE_ITEM_OVERLAY, t.overlays[i].options.id);\n            if (_c != null) {\n              this.instance.reattachOverlay(_c, this);\n              _c.setVisible(true);\n              _c.updateFrom(t.overlays[i].options);\n              this.overlays[_c.id] = _c;\n            } else {\n              _c = this.addOverlay(t.overlays[i]);\n            }\n            keep[_c.id] = true;\n          }\n        }\n        for (i in this.overlays) {\n          if (keep[this.overlays[i].id] == null) {\n            this.removeOverlay(this.overlays[i].id, true);\n          }\n        }\n      }\n    }\n  }, {\n    key: \"setPaintStyle\",\n    value: function setPaintStyle(style) {\n      this.paintStyle = style;\n      this.paintStyleInUse = this.paintStyle;\n      _updateHoverStyle(this);\n    }\n  }, {\n    key: \"getPaintStyle\",\n    value: function getPaintStyle() {\n      return this.paintStyle;\n    }\n  }, {\n    key: \"setHoverPaintStyle\",\n    value: function setHoverPaintStyle(style) {\n      this.hoverPaintStyle = style;\n      _updateHoverStyle(this);\n    }\n  }, {\n    key: \"getHoverPaintStyle\",\n    value: function getHoverPaintStyle() {\n      return this.hoverPaintStyle;\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      for (var i in this.overlays) {\n        this.instance.destroyOverlay(this.overlays[i]);\n      }\n      this.overlays = {};\n      this.overlayPositions = {};\n      this.unbind();\n      this.clone = null;\n    }\n  }, {\n    key: \"isHover\",\n    value: function isHover() {\n      return this._hover;\n    }\n  }, {\n    key: \"mergeParameters\",\n    value: function mergeParameters(p) {\n      if (p != null) {\n        extend(this.parameters, p);\n      }\n    }\n  }, {\n    key: \"setVisible\",\n    value: function setVisible(v) {\n      this.visible = v;\n      if (v) {\n        this.showOverlays();\n      } else {\n        this.hideOverlays();\n      }\n    }\n  }, {\n    key: \"isVisible\",\n    value: function isVisible() {\n      return this.visible;\n    }\n  }, {\n    key: \"setAbsoluteOverlayPosition\",\n    value: function setAbsoluteOverlayPosition(overlay, xy) {\n      this.overlayPositions[overlay.id] = xy;\n    }\n  }, {\n    key: \"getAbsoluteOverlayPosition\",\n    value: function getAbsoluteOverlayPosition(overlay) {\n      return this.overlayPositions ? this.overlayPositions[overlay.id] : null;\n    }\n  }, {\n    key: \"_clazzManip\",\n    value: function _clazzManip(action, clazz) {\n      for (var i in this.overlays) {\n        if (action === ACTION_ADD) {\n          this.instance.addOverlayClass(this.overlays[i], clazz);\n        } else if (action === ACTION_REMOVE) {\n          this.instance.removeOverlayClass(this.overlays[i], clazz);\n        }\n      }\n    }\n  }, {\n    key: \"addClass\",\n    value: function addClass(clazz, cascade) {\n      var parts = (this.cssClass || \"\").split(\" \");\n      parts.push(clazz);\n      this.cssClass = parts.join(\" \");\n      this._clazzManip(ACTION_ADD, clazz);\n    }\n  }, {\n    key: \"removeClass\",\n    value: function removeClass(clazz, cascade) {\n      var parts = (this.cssClass || \"\").split(\" \");\n      this.cssClass = parts.filter(function (p) {\n        return p !== clazz;\n      }).join(\" \");\n      this._clazzManip(ACTION_REMOVE, clazz);\n    }\n  }, {\n    key: \"getClass\",\n    value: function getClass() {\n      return this.cssClass;\n    }\n  }, {\n    key: \"shouldFireEvent\",\n    value: function shouldFireEvent(event, value, originalEvent) {\n      return true;\n    }\n  }, {\n    key: \"getData\",\n    value: function getData() {\n      return this.data;\n    }\n  }, {\n    key: \"setData\",\n    value: function setData(d) {\n      this.data = d || {};\n    }\n  }, {\n    key: \"mergeData\",\n    value: function mergeData(d) {\n      this.data = extend(this.data, d);\n    }\n  }, {\n    key: \"addOverlay\",\n    value: function addOverlay(overlay) {\n      var o = _processOverlay(this, overlay);\n      if (this.getData && o.type === LabelOverlay.type && !isString(overlay)) {\n        var d = this.getData(),\n            p = overlay.options;\n        if (d) {\n          var locationAttribute = p.labelLocationAttribute || LOCATION_ATTRIBUTE;\n          var loc = d[locationAttribute];\n          if (loc) {\n            o.location = loc;\n          }\n        }\n      }\n      return o;\n    }\n  }, {\n    key: \"getOverlay\",\n    value: function getOverlay(id) {\n      return this.overlays[id];\n    }\n  }, {\n    key: \"getOverlays\",\n    value: function getOverlays() {\n      return this.overlays;\n    }\n  }, {\n    key: \"hideOverlay\",\n    value: function hideOverlay(id) {\n      var o = this.getOverlay(id);\n      if (o) {\n        o.setVisible(false);\n      }\n    }\n  }, {\n    key: \"hideOverlays\",\n    value: function hideOverlays() {\n      for (var _len = arguments.length, ids = new Array(_len), _key = 0; _key < _len; _key++) {\n        ids[_key] = arguments[_key];\n      }\n      ids = ids || [];\n      for (var i in this.overlays) {\n        if (ids.length === 0 || ids.indexOf(i) !== -1) {\n          this.overlays[i].setVisible(false);\n        }\n      }\n    }\n  }, {\n    key: \"showOverlay\",\n    value: function showOverlay(id) {\n      var o = this.getOverlay(id);\n      if (o) {\n        o.setVisible(true);\n      }\n    }\n  }, {\n    key: \"showOverlays\",\n    value: function showOverlays() {\n      for (var _len2 = arguments.length, ids = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        ids[_key2] = arguments[_key2];\n      }\n      ids = ids || [];\n      for (var i in this.overlays) {\n        if (ids.length === 0 || ids.indexOf(i) !== -1) {\n          this.overlays[i].setVisible(true);\n        }\n      }\n    }\n  }, {\n    key: \"removeAllOverlays\",\n    value: function removeAllOverlays() {\n      for (var i in this.overlays) {\n        this.instance.destroyOverlay(this.overlays[i]);\n      }\n      this.overlays = {};\n      this.overlayPositions = null;\n      this.overlayPlacements = {};\n    }\n  }, {\n    key: \"removeOverlay\",\n    value: function removeOverlay(overlayId, dontCleanup) {\n      var o = this.overlays[overlayId];\n      if (o) {\n        o.setVisible(false);\n        if (!dontCleanup) {\n          this.instance.destroyOverlay(o);\n        }\n        delete this.overlays[overlayId];\n        if (this.overlayPositions) {\n          delete this.overlayPositions[overlayId];\n        }\n        if (this.overlayPlacements) {\n          delete this.overlayPlacements[overlayId];\n        }\n      }\n    }\n  }, {\n    key: \"removeOverlays\",\n    value: function removeOverlays() {\n      for (var _len3 = arguments.length, overlays = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        overlays[_key3] = arguments[_key3];\n      }\n      for (var i = 0, j = overlays.length; i < j; i++) {\n        this.removeOverlay(arguments[i]);\n      }\n    }\n  }, {\n    key: \"getLabel\",\n    value: function getLabel() {\n      var lo = this.getLabelOverlay();\n      return lo != null ? lo.getLabel() : null;\n    }\n  }, {\n    key: \"getLabelOverlay\",\n    value: function getLabelOverlay() {\n      return this.getOverlay(_internalLabelOverlayId);\n    }\n  }, {\n    key: \"setLabel\",\n    value: function setLabel(l) {\n      var lo = this.getLabelOverlay();\n      if (!lo) {\n        var _params2 = isString(l) || isFunction(l) ? {\n          label: l\n        } : l;\n        lo = _makeLabelOverlay(this, _params2);\n        this.overlays[_internalLabelOverlayId] = lo;\n      } else {\n        if (isString(l) || isFunction(l)) {\n          lo.setLabel(l);\n        } else {\n          var ll = l;\n          if (ll.label) {\n            lo.setLabel(ll.label);\n          }\n          if (ll.location) {\n            lo.location = ll.location;\n          }\n        }\n      }\n    }\n  }]);\n  return Component;\n}(EventGenerator);\n\nvar typeParameters = [\"connectorStyle\", \"connectorHoverStyle\", \"connectorOverlays\", \"connector\", \"connectionType\", \"connectorClass\", \"connectorHoverClass\"];\nvar Endpoint = function (_Component) {\n  _inherits(Endpoint, _Component);\n  var _super = _createSuper(Endpoint);\n  function Endpoint(instance, params) {\n    var _this;\n    _classCallCheck(this, Endpoint);\n    _this = _super.call(this, instance, params);\n    _this.instance = instance;\n    _defineProperty(_assertThisInitialized(_this), \"connections\", []);\n    _defineProperty(_assertThisInitialized(_this), \"endpoint\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"element\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"elementId\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"dragAllowedWhenFull\", true);\n    _defineProperty(_assertThisInitialized(_this), \"timestamp\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"portId\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"maxConnections\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"proxiedBy\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connectorClass\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connectorHoverClass\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"finalEndpoint\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"enabled\", true);\n    _defineProperty(_assertThisInitialized(_this), \"isSource\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"isTarget\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"isTemporarySource\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connectionCost\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"connectionsDirected\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connectionsDetachable\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"reattachConnections\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"currentAnchorClass\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"referenceEndpoint\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"edgeType\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connector\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connectorOverlays\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connectorStyle\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connectorHoverStyle\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"deleteOnEmpty\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"uuid\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"scope\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_anchor\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"defaultLabelLocation\", [0.5, 0.5]);\n    _this.appendToDefaultType({\n      edgeType: params.edgeType,\n      maxConnections: params.maxConnections == null ? _this.instance.defaults.maxConnections : params.maxConnections,\n      paintStyle: params.paintStyle || _this.instance.defaults.endpointStyle,\n      hoverPaintStyle: params.hoverPaintStyle || _this.instance.defaults.endpointHoverStyle,\n      connectorStyle: params.connectorStyle,\n      connectorHoverStyle: params.connectorHoverStyle,\n      connectorClass: params.connectorClass,\n      connectorHoverClass: params.connectorHoverClass,\n      connectorOverlays: params.connectorOverlays,\n      connector: params.connector\n    });\n    _this.enabled = !(params.enabled === false);\n    _this.visible = true;\n    _this.element = params.element;\n    _this.uuid = params.uuid;\n    _this.portId = params.portId;\n    _this.elementId = params.elementId;\n    _this.connectionCost = params.connectionCost == null ? 1 : params.connectionCost;\n    _this.connectionsDirected = params.connectionsDirected;\n    _this.currentAnchorClass = \"\";\n    _this.events = {};\n    _this.connectorOverlays = params.connectorOverlays;\n    _this.connectorStyle = params.connectorStyle;\n    _this.connectorHoverStyle = params.connectorHoverStyle;\n    _this.connector = params.connector;\n    _this.edgeType = params.edgeType;\n    _this.connectorClass = params.connectorClass;\n    _this.connectorHoverClass = params.connectorHoverClass;\n    _this.deleteOnEmpty = params.deleteOnEmpty === true;\n    _this.isSource = params.source || false;\n    _this.isTemporarySource = params.isTemporarySource || false;\n    _this.isTarget = params.target || false;\n    _this.connections = params.connections || [];\n    _this.scope = params.scope || instance.defaultScope;\n    _this.timestamp = null;\n    _this.reattachConnections = params.reattachConnections || instance.defaults.reattachConnections;\n    _this.connectionsDetachable = instance.defaults.connectionsDetachable;\n    if (params.connectionsDetachable === false) {\n      _this.connectionsDetachable = false;\n    }\n    _this.dragAllowedWhenFull = params.dragAllowedWhenFull !== false;\n    if (params.onMaxConnections) {\n      _this.bind(EVENT_MAX_CONNECTIONS, params.onMaxConnections);\n    }\n    var ep = params.endpoint || params.existingEndpoint || instance.defaults.endpoint;\n    _this.setEndpoint(ep);\n    if (params.preparedAnchor != null) {\n      _this.setPreparedAnchor(params.preparedAnchor);\n    } else {\n      var anchorParamsToUse = params.anchor ? params.anchor : params.anchors ? params.anchors : instance.defaults.anchor || AnchorLocations.Top;\n      _this.setAnchor(anchorParamsToUse);\n    }\n    var type = [DEFAULT, params.type || \"\"].join(\" \");\n    _this.addType(type, params.data);\n    return _this;\n  }\n  _createClass(Endpoint, [{\n    key: \"getIdPrefix\",\n    value: function getIdPrefix() {\n      return \"_jsplumb_e\";\n    }\n  }, {\n    key: \"getTypeDescriptor\",\n    value: function getTypeDescriptor() {\n      return \"endpoint\";\n    }\n  }, {\n    key: \"getXY\",\n    value: function getXY() {\n      return {\n        x: this.endpoint.x,\n        y: this.endpoint.y\n      };\n    }\n  }, {\n    key: \"getDefaultOverlayKey\",\n    value: function getDefaultOverlayKey() {\n      return \"endpointOverlays\";\n    }\n  }, {\n    key: \"_updateAnchorClass\",\n    value: function _updateAnchorClass() {\n      var ac = this._anchor && this._anchor.cssClass;\n      if (ac != null && ac.length > 0) {\n        var oldAnchorClass = this.instance.endpointAnchorClassPrefix + \"-\" + this.currentAnchorClass;\n        this.currentAnchorClass = ac;\n        var anchorClass = this.instance.endpointAnchorClassPrefix + (this.currentAnchorClass ? \"-\" + this.currentAnchorClass : \"\");\n        if (oldAnchorClass !== anchorClass) {\n          this.removeClass(oldAnchorClass);\n          this.addClass(anchorClass);\n          this.instance.removeClass(this.element, oldAnchorClass);\n          this.instance.addClass(this.element, anchorClass);\n        }\n      }\n    }\n  }, {\n    key: \"setPreparedAnchor\",\n    value: function setPreparedAnchor(anchor) {\n      this.instance.router.setAnchor(this, anchor);\n      this._updateAnchorClass();\n      return this;\n    }\n  }, {\n    key: \"_anchorLocationChanged\",\n    value: function _anchorLocationChanged(currentAnchor) {\n      this.fire(EVENT_ANCHOR_CHANGED, {\n        endpoint: this,\n        anchor: currentAnchor\n      });\n      this._updateAnchorClass();\n    }\n  }, {\n    key: \"setAnchor\",\n    value: function setAnchor(anchorParams) {\n      var a = this.instance.router.prepareAnchor(anchorParams);\n      this.setPreparedAnchor(a);\n      return this;\n    }\n  }, {\n    key: \"addConnection\",\n    value: function addConnection(conn) {\n      this.connections.push(conn);\n      this.instance._refreshEndpoint(this);\n    }\n  }, {\n    key: \"detachFromConnection\",\n    value: function detachFromConnection(connection, idx, transientDetach) {\n      idx = idx == null ? this.connections.indexOf(connection) : idx;\n      if (idx >= 0) {\n        this.connections.splice(idx, 1);\n        this.instance._refreshEndpoint(this);\n      }\n      if (!transientDetach && this.deleteOnEmpty && this.connections.length === 0) {\n        this.instance.deleteEndpoint(this);\n      }\n    }\n  }, {\n    key: \"deleteEveryConnection\",\n    value: function deleteEveryConnection(params) {\n      var c = this.connections.length;\n      for (var i = 0; i < c; i++) {\n        this.instance.deleteConnection(this.connections[0], params);\n      }\n    }\n  }, {\n    key: \"detachFrom\",\n    value: function detachFrom(otherEndpoint) {\n      var c = [];\n      for (var i = 0; i < this.connections.length; i++) {\n        if (this.connections[i].endpoints[1] === otherEndpoint || this.connections[i].endpoints[0] === otherEndpoint) {\n          c.push(this.connections[i]);\n        }\n      }\n      for (var j = 0, count = c.length; j < count; j++) {\n        this.instance.deleteConnection(c[0]);\n      }\n      return this;\n    }\n  }, {\n    key: \"setVisible\",\n    value: function setVisible(v, doNotChangeConnections, doNotNotifyOtherEndpoint) {\n      _get(_getPrototypeOf(Endpoint.prototype), \"setVisible\", this).call(this, v);\n      this.endpoint.setVisible(v);\n      if (v) {\n        this.showOverlays();\n      } else {\n        this.hideOverlays();\n      }\n      if (!doNotChangeConnections) {\n        for (var i = 0; i < this.connections.length; i++) {\n          this.connections[i].setVisible(v);\n          if (!doNotNotifyOtherEndpoint) {\n            var oIdx = this === this.connections[i].endpoints[0] ? 1 : 0;\n            if (this.connections[i].endpoints[oIdx].connections.length === 1) {\n              this.connections[i].endpoints[oIdx].setVisible(v, true, true);\n            }\n          }\n        }\n      }\n    }\n  }, {\n    key: \"applyType\",\n    value: function applyType(t, typeMap) {\n      _get(_getPrototypeOf(Endpoint.prototype), \"applyType\", this).call(this, t, typeMap);\n      this.setPaintStyle(t.endpointStyle || t.paintStyle);\n      this.setHoverPaintStyle(t.endpointHoverStyle || t.hoverPaintStyle);\n      this.connectorStyle = t.connectorStyle;\n      this.connectorHoverStyle = t.connectorHoverStyle;\n      this.connector = t.connector;\n      this.connectorOverlays = t.connectorOverlays;\n      this.edgeType = t.edgeType;\n      if (t.maxConnections != null) {\n        this.maxConnections = t.maxConnections;\n      }\n      if (t.scope) {\n        this.scope = t.scope;\n      }\n      extend(t, typeParameters);\n      this.instance.applyEndpointType(this, t);\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      _get(_getPrototypeOf(Endpoint.prototype), \"destroy\", this).call(this);\n      this.deleted = true;\n      if (this.endpoint != null) {\n        this.instance.destroyEndpoint(this);\n      }\n    }\n  }, {\n    key: \"isFull\",\n    value: function isFull() {\n      return this.maxConnections === 0 ? true : !(this.isFloating() || this.maxConnections < 0 || this.connections.length < this.maxConnections);\n    }\n  }, {\n    key: \"isFloating\",\n    value: function isFloating() {\n      return this.instance.router.isFloating(this);\n    }\n  }, {\n    key: \"isConnectedTo\",\n    value: function isConnectedTo(otherEndpoint) {\n      var found = false;\n      if (otherEndpoint) {\n        for (var i = 0; i < this.connections.length; i++) {\n          if (this.connections[i].endpoints[1] === otherEndpoint || this.connections[i].endpoints[0] === otherEndpoint) {\n            found = true;\n            break;\n          }\n        }\n      }\n      return found;\n    }\n  }, {\n    key: \"setDragAllowedWhenFull\",\n    value: function setDragAllowedWhenFull(allowed) {\n      this.dragAllowedWhenFull = allowed;\n    }\n  }, {\n    key: \"getUuid\",\n    value: function getUuid() {\n      return this.uuid;\n    }\n  }, {\n    key: \"connectorSelector\",\n    value: function connectorSelector() {\n      return this.connections[0];\n    }\n  }, {\n    key: \"prepareEndpoint\",\n    value: function prepareEndpoint(ep, typeId) {\n      var endpointArgs = {\n        cssClass: this.cssClass,\n        endpoint: this\n      };\n      var endpoint;\n      if (isAssignableFrom(ep, EndpointRepresentation)) {\n        var epr = ep;\n        endpoint = EndpointFactory.clone(epr);\n        endpoint.classes = endpointArgs.cssClass.split(\" \");\n      } else if (isString(ep)) {\n        endpoint = EndpointFactory.get(this, ep, endpointArgs);\n      } else {\n        var fep = ep;\n        extend(endpointArgs, fep.options || {});\n        endpoint = EndpointFactory.get(this, fep.type, endpointArgs);\n      }\n      endpoint.typeId = typeId;\n      return endpoint;\n    }\n  }, {\n    key: \"setEndpoint\",\n    value: function setEndpoint(ep) {\n      var _ep = this.prepareEndpoint(ep);\n      this.setPreparedEndpoint(_ep);\n    }\n  }, {\n    key: \"setPreparedEndpoint\",\n    value: function setPreparedEndpoint(ep) {\n      if (this.endpoint != null) {\n        this.instance.destroyEndpoint(this);\n      }\n      this.endpoint = ep;\n    }\n  }, {\n    key: \"addClass\",\n    value: function addClass(clazz, cascade) {\n      _get(_getPrototypeOf(Endpoint.prototype), \"addClass\", this).call(this, clazz, cascade);\n      if (this.endpoint != null) {\n        this.endpoint.addClass(clazz);\n      }\n    }\n  }, {\n    key: \"removeClass\",\n    value: function removeClass(clazz, cascade) {\n      _get(_getPrototypeOf(Endpoint.prototype), \"removeClass\", this).call(this, clazz, cascade);\n      if (this.endpoint != null) {\n        this.endpoint.removeClass(clazz);\n      }\n    }\n  }]);\n  return Endpoint;\n}(Component);\n\nvar TYPE_ITEM_ANCHORS = \"anchors\";\nvar TYPE_ITEM_CONNECTOR = \"connector\";\nfunction prepareEndpoint(conn, existing, index, anchor, element, elementId, endpoint) {\n  var e;\n  if (existing) {\n    conn.endpoints[index] = existing;\n    existing.addConnection(conn);\n  } else {\n    var ep = endpoint || conn.endpointSpec || conn.endpointsSpec[index] || conn.instance.defaults.endpoints[index] || conn.instance.defaults.endpoint;\n    var es = conn.endpointStyles[index] || conn.endpointStyle || conn.instance.defaults.endpointStyles[index] || conn.instance.defaults.endpointStyle;\n    if (es.fill == null && conn.paintStyle != null) {\n      es.fill = conn.paintStyle.stroke;\n    }\n    if (es.outlineStroke == null && conn.paintStyle != null) {\n      es.outlineStroke = conn.paintStyle.outlineStroke;\n    }\n    if (es.outlineWidth == null && conn.paintStyle != null) {\n      es.outlineWidth = conn.paintStyle.outlineWidth;\n    }\n    var ehs = conn.endpointHoverStyles[index] || conn.endpointHoverStyle || conn.endpointHoverStyle || conn.instance.defaults.endpointHoverStyles[index] || conn.instance.defaults.endpointHoverStyle;\n    if (conn.hoverPaintStyle != null) {\n      if (ehs == null) {\n        ehs = {};\n      }\n      if (ehs.fill == null) {\n        ehs.fill = conn.hoverPaintStyle.stroke;\n      }\n    }\n    var u = conn.uuids ? conn.uuids[index] : null;\n    anchor = anchor != null ? anchor : conn.instance.defaults.anchors != null ? conn.instance.defaults.anchors[index] : conn.instance.defaults.anchor;\n    e = conn.instance._internal_newEndpoint({\n      paintStyle: es,\n      hoverPaintStyle: ehs,\n      endpoint: ep,\n      connections: [conn],\n      uuid: u,\n      element: element,\n      scope: conn.scope,\n      anchor: anchor,\n      reattachConnections: conn.reattach || conn.instance.defaults.reattachConnections,\n      connectionsDetachable: conn.detachable || conn.instance.defaults.connectionsDetachable\n    });\n    conn.instance._refreshEndpoint(e);\n    if (existing == null) {\n      e.deleteOnEmpty = true;\n    }\n    conn.endpoints[index] = e;\n  }\n  return e;\n}\nvar Connection = function (_Component) {\n  _inherits(Connection, _Component);\n  var _super = _createSuper(Connection);\n  function Connection(instance, params) {\n    var _this;\n    _classCallCheck(this, Connection);\n    _this = _super.call(this, instance, params);\n    _this.instance = instance;\n    _defineProperty(_assertThisInitialized(_this), \"connector\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"defaultLabelLocation\", 0.5);\n    _defineProperty(_assertThisInitialized(_this), \"scope\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"typeId\", \"_jsplumb_connection\");\n    _defineProperty(_assertThisInitialized(_this), \"previousConnection\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"sourceId\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"targetId\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"source\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"target\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"detachable\", true);\n    _defineProperty(_assertThisInitialized(_this), \"reattach\", false);\n    _defineProperty(_assertThisInitialized(_this), \"uuids\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cost\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"directed\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"endpoints\", [null, null]);\n    _defineProperty(_assertThisInitialized(_this), \"endpointStyles\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"endpointSpec\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"endpointsSpec\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"endpointStyle\", {});\n    _defineProperty(_assertThisInitialized(_this), \"endpointHoverStyle\", {});\n    _defineProperty(_assertThisInitialized(_this), \"endpointHoverStyles\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"suspendedEndpoint\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"suspendedIndex\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"suspendedElement\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"suspendedElementId\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"suspendedElementType\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_forceReattach\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_forceDetach\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"proxies\", []);\n    _defineProperty(_assertThisInitialized(_this), \"pending\", false);\n    _this.id = params.id;\n    _this.previousConnection = params.previousConnection;\n    _this.source = params.source;\n    _this.target = params.target;\n    if (params.sourceEndpoint) {\n      _this.source = params.sourceEndpoint.element;\n      _this.sourceId = params.sourceEndpoint.elementId;\n    } else {\n      _this.sourceId = instance.getId(_this.source);\n    }\n    if (params.targetEndpoint) {\n      _this.target = params.targetEndpoint.element;\n      _this.targetId = params.targetEndpoint.elementId;\n    } else {\n      _this.targetId = instance.getId(_this.target);\n    }\n    _this.scope = params.scope;\n    var sourceAnchor = params.anchors ? params.anchors[0] : params.anchor;\n    var targetAnchor = params.anchors ? params.anchors[1] : params.anchor;\n    instance.manage(_this.source);\n    instance.manage(_this.target);\n    _this.visible = true;\n    _this.params = {\n      cssClass: params.cssClass,\n      hoverClass: params.hoverClass,\n      \"pointer-events\": params[\"pointer-events\"],\n      overlays: params.overlays\n    };\n    _this.lastPaintedAt = null;\n    if (params.type) {\n      params.endpoints = params.endpoints || _this.instance._deriveEndpointAndAnchorSpec(params.type).endpoints;\n    }\n    _this.endpointSpec = params.endpoint;\n    _this.endpointsSpec = params.endpoints || [null, null];\n    _this.endpointStyle = params.endpointStyle;\n    _this.endpointHoverStyle = params.endpointHoverStyle;\n    _this.endpointStyles = params.endpointStyles || [null, null];\n    _this.endpointHoverStyles = params.endpointHoverStyles || [null, null];\n    _this.paintStyle = params.paintStyle;\n    _this.hoverPaintStyle = params.hoverPaintStyle;\n    _this.uuids = params.uuids;\n    _this.makeEndpoint(true, _this.source, _this.sourceId, sourceAnchor, params.sourceEndpoint);\n    _this.makeEndpoint(false, _this.target, _this.targetId, targetAnchor, params.targetEndpoint);\n    if (!_this.scope) {\n      _this.scope = _this.endpoints[0].scope;\n    }\n    if (params.deleteEndpointsOnEmpty != null) {\n      _this.endpoints[0].deleteOnEmpty = params.deleteEndpointsOnEmpty;\n      _this.endpoints[1].deleteOnEmpty = params.deleteEndpointsOnEmpty;\n    }\n    var _detachable = _this.instance.defaults.connectionsDetachable;\n    if (params.detachable === false) {\n      _detachable = false;\n    }\n    if (_this.endpoints[0].connectionsDetachable === false) {\n      _detachable = false;\n    }\n    if (_this.endpoints[1].connectionsDetachable === false) {\n      _detachable = false;\n    }\n    _this.endpointsSpec = params.endpoints || [null, null];\n    _this.endpointSpec = params.endpoint || null;\n    var _reattach = params.reattach || _this.endpoints[0].reattachConnections || _this.endpoints[1].reattachConnections || _this.instance.defaults.reattachConnections;\n    var initialPaintStyle = extend({}, _this.endpoints[0].connectorStyle || _this.endpoints[1].connectorStyle || params.paintStyle || _this.instance.defaults.paintStyle);\n    _this.appendToDefaultType({\n      detachable: _detachable,\n      reattach: _reattach,\n      paintStyle: initialPaintStyle,\n      hoverPaintStyle: extend({}, _this.endpoints[0].connectorHoverStyle || _this.endpoints[1].connectorHoverStyle || params.hoverPaintStyle || _this.instance.defaults.hoverPaintStyle)\n    });\n    if (params.outlineWidth) {\n      initialPaintStyle.outlineWidth = params.outlineWidth;\n    }\n    if (params.outlineColor) {\n      initialPaintStyle.outlineStroke = params.outlineColor;\n    }\n    if (params.lineWidth) {\n      initialPaintStyle.strokeWidth = params.lineWidth;\n    }\n    if (params.color) {\n      initialPaintStyle.stroke = params.color;\n    }\n    if (!_this.instance._suspendDrawing) {\n      var initialTimestamp = _this.instance._suspendedAt || uuid();\n      _this.instance._paintEndpoint(_this.endpoints[0], {\n        timestamp: initialTimestamp\n      });\n      _this.instance._paintEndpoint(_this.endpoints[1], {\n        timestamp: initialTimestamp\n      });\n    }\n    _this.cost = params.cost || _this.endpoints[0].connectionCost;\n    _this.directed = params.directed;\n    if (params.directed == null) {\n      _this.directed = _this.endpoints[0].connectionsDirected;\n    }\n    var _p = extend({}, _this.endpoints[1].parameters);\n    extend(_p, _this.endpoints[0].parameters);\n    extend(_p, _this.parameters);\n    _this.parameters = _p;\n    _this.paintStyleInUse = _this.getPaintStyle() || {};\n    _this._setConnector(_this.endpoints[0].connector || _this.endpoints[1].connector || params.connector || _this.instance.defaults.connector, true);\n    var data = params.data == null || !isObject(params.data) ? {} : params.data;\n    _this.setData(data);\n    var _types = [DEFAULT, _this.endpoints[0].edgeType, _this.endpoints[1].edgeType, params.type].join(\" \");\n    if (/[^\\s]/.test(_types)) {\n      _this.addType(_types, params.data);\n    }\n    return _this;\n  }\n  _createClass(Connection, [{\n    key: \"getIdPrefix\",\n    value: function getIdPrefix() {\n      return \"_jsPlumb_c\";\n    }\n  }, {\n    key: \"getDefaultOverlayKey\",\n    value: function getDefaultOverlayKey() {\n      return KEY_CONNECTION_OVERLAYS;\n    }\n  }, {\n    key: \"getXY\",\n    value: function getXY() {\n      return {\n        x: this.connector.x,\n        y: this.connector.y\n      };\n    }\n  }, {\n    key: \"makeEndpoint\",\n    value: function makeEndpoint(isSource, el, elId, anchor, ep) {\n      elId = elId || this.instance.getId(el);\n      return prepareEndpoint(this, ep, isSource ? 0 : 1, anchor, el);\n    }\n  }, {\n    key: \"getTypeDescriptor\",\n    value: function getTypeDescriptor() {\n      return Connection.type;\n    }\n  }, {\n    key: \"isDetachable\",\n    value: function isDetachable(ep) {\n      return this.detachable === false ? false : ep != null ? ep.connectionsDetachable === true : this.detachable === true;\n    }\n  }, {\n    key: \"setDetachable\",\n    value: function setDetachable(detachable) {\n      this.detachable = detachable === true;\n    }\n  }, {\n    key: \"isReattach\",\n    value: function isReattach() {\n      return this.reattach === true || this.endpoints[0].reattachConnections === true || this.endpoints[1].reattachConnections === true;\n    }\n  }, {\n    key: \"setReattach\",\n    value: function setReattach(reattach) {\n      this.reattach = reattach === true;\n    }\n  }, {\n    key: \"applyType\",\n    value: function applyType(t, typeMap) {\n      var _connector = null;\n      if (t.connector != null) {\n        _connector = this.getCachedTypeItem(TYPE_ITEM_CONNECTOR, typeMap.connector);\n        if (_connector == null) {\n          _connector = this.prepareConnector(t.connector, typeMap.connector);\n          this.cacheTypeItem(TYPE_ITEM_CONNECTOR, _connector, typeMap.connector);\n        }\n        this.setPreparedConnector(_connector);\n      }\n      _get(_getPrototypeOf(Connection.prototype), \"applyType\", this).call(this, t, typeMap);\n      if (t.detachable != null) {\n        this.setDetachable(t.detachable);\n      }\n      if (t.reattach != null) {\n        this.setReattach(t.reattach);\n      }\n      if (t.scope) {\n        this.scope = t.scope;\n      }\n      var _anchors = null;\n      if (t.anchor) {\n        _anchors = this.getCachedTypeItem(TYPE_ITEM_ANCHORS, typeMap.anchor);\n        if (_anchors == null) {\n          _anchors = [makeLightweightAnchorFromSpec(t.anchor), makeLightweightAnchorFromSpec(t.anchor)];\n          this.cacheTypeItem(TYPE_ITEM_ANCHORS, _anchors, typeMap.anchor);\n        }\n      } else if (t.anchors) {\n        _anchors = this.getCachedTypeItem(TYPE_ITEM_ANCHORS, typeMap.anchors);\n        if (_anchors == null) {\n          _anchors = [makeLightweightAnchorFromSpec(t.anchors[0]), makeLightweightAnchorFromSpec(t.anchors[1])];\n          this.cacheTypeItem(TYPE_ITEM_ANCHORS, _anchors, typeMap.anchors);\n        }\n      }\n      if (_anchors != null) {\n        this.instance.router.setConnectionAnchors(this, _anchors);\n        if (this.instance.router.isDynamicAnchor(this.endpoints[1])) {\n          this.instance.repaint(this.endpoints[1].element);\n        }\n      }\n      this.instance.applyConnectorType(this.connector, t);\n    }\n  }, {\n    key: \"addClass\",\n    value: function addClass(c, cascade) {\n      _get(_getPrototypeOf(Connection.prototype), \"addClass\", this).call(this, c);\n      if (cascade) {\n        this.endpoints[0].addClass(c);\n        this.endpoints[1].addClass(c);\n        if (this.suspendedEndpoint) {\n          this.suspendedEndpoint.addClass(c);\n        }\n      }\n      if (this.connector) {\n        this.instance.addConnectorClass(this.connector, c);\n      }\n    }\n  }, {\n    key: \"removeClass\",\n    value: function removeClass(c, cascade) {\n      _get(_getPrototypeOf(Connection.prototype), \"removeClass\", this).call(this, c);\n      if (cascade) {\n        this.endpoints[0].removeClass(c);\n        this.endpoints[1].removeClass(c);\n        if (this.suspendedEndpoint) {\n          this.suspendedEndpoint.removeClass(c);\n        }\n      }\n      if (this.connector) {\n        this.instance.removeConnectorClass(this.connector, c);\n      }\n    }\n  }, {\n    key: \"setVisible\",\n    value: function setVisible(v) {\n      _get(_getPrototypeOf(Connection.prototype), \"setVisible\", this).call(this, v);\n      if (this.connector) {\n        this.instance.setConnectorVisible(this.connector, v);\n      }\n      this.instance._paintConnection(this);\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      _get(_getPrototypeOf(Connection.prototype), \"destroy\", this).call(this);\n      this.endpoints = null;\n      this.endpointStyles = null;\n      this.source = null;\n      this.target = null;\n      this.instance.destroyConnector(this);\n      this.connector = null;\n      this.deleted = true;\n    }\n  }, {\n    key: \"getUuids\",\n    value: function getUuids() {\n      return [this.endpoints[0].getUuid(), this.endpoints[1].getUuid()];\n    }\n  }, {\n    key: \"prepareConnector\",\n    value: function prepareConnector(connectorSpec, typeId) {\n      var connectorArgs = {\n        cssClass: this.params.cssClass,\n        hoverClass: this.params.hoverClass,\n        \"pointer-events\": this.params[\"pointer-events\"]\n      },\n          connector;\n      if (isString(connectorSpec)) {\n        connector = this.instance._makeConnector(this, connectorSpec, connectorArgs);\n      } else {\n        var co = connectorSpec;\n        connector = this.instance._makeConnector(this, co.type, merge(co.options || {}, connectorArgs));\n      }\n      if (typeId != null) {\n        connector.typeId = typeId;\n      }\n      return connector;\n    }\n  }, {\n    key: \"setPreparedConnector\",\n    value: function setPreparedConnector(connector, doNotRepaint, doNotChangeListenerComponent, typeId) {\n      if (this.connector !== connector) {\n        var previous,\n            previousClasses = \"\";\n        if (this.connector != null) {\n          previous = this.connector;\n          previousClasses = this.instance.getConnectorClass(this.connector);\n          this.instance.destroyConnector(this);\n        }\n        this.connector = connector;\n        if (typeId) {\n          this.cacheTypeItem(TYPE_ITEM_CONNECTOR, connector, typeId);\n        }\n        this.addClass(previousClasses);\n        if (previous != null) {\n          var o = this.getOverlays();\n          for (var i in o) {\n            this.instance.reattachOverlay(o[i], this);\n          }\n        }\n        if (!doNotRepaint) {\n          this.instance._paintConnection(this);\n        }\n      }\n    }\n  }, {\n    key: \"_setConnector\",\n    value: function _setConnector(connectorSpec, doNotRepaint, doNotChangeListenerComponent, typeId) {\n      var connector = this.prepareConnector(connectorSpec, typeId);\n      this.setPreparedConnector(connector, doNotRepaint, doNotChangeListenerComponent, typeId);\n    }\n  }, {\n    key: \"replaceEndpoint\",\n    value: function replaceEndpoint(idx, endpointDef) {\n      var current = this.endpoints[idx],\n          elId = current.elementId,\n          ebe = this.instance.getEndpoints(current.element),\n          _idx = ebe.indexOf(current),\n          _new = prepareEndpoint(this, null, idx, null, current.element, elId, endpointDef);\n      this.endpoints[idx] = _new;\n      ebe.splice(_idx, 1, _new);\n      current.detachFromConnection(this);\n      this.instance.deleteEndpoint(current);\n      this.instance.fire(EVENT_ENDPOINT_REPLACED, {\n        previous: current,\n        current: _new\n      });\n    }\n  }]);\n  return Connection;\n}(Component);\n_defineProperty(Connection, \"type\", \"connection\");\n\nfunction ensureSVGOverlayPath(o) {\n  if (o.path == null) {\n    var atts = extend({\n      \"jtk-overlay-id\": o.id\n    }, o.attributes);\n    o.path = _node(ELEMENT_PATH, atts);\n    var cls = o.instance.overlayClass + \" \" + (o.cssClass ? o.cssClass : \"\");\n    o.instance.addClass(o.path, cls);\n    o.path.jtk = {\n      overlay: o\n    };\n  }\n  var parent = o.path.parentNode;\n  if (parent == null) {\n    if (o.component instanceof Connection) {\n      var connector = o.component.connector;\n      parent = connector != null ? connector.canvas : null;\n    } else if (o.component instanceof Endpoint) {\n      var endpoint = o.component.endpoint;\n      parent = endpoint != null ? endpoint.canvas : endpoint;\n    }\n    if (parent != null) {\n      _appendAtIndex(parent, o.path, 1);\n    }\n  }\n  return o.path;\n}\nfunction paintSVGOverlay(o, path, params, extents) {\n  ensureSVGOverlayPath(o);\n  var offset = [0, 0];\n  if (extents.xmin < 0) {\n    offset[0] = -extents.xmin;\n  }\n  if (extents.ymin < 0) {\n    offset[1] = -extents.ymin;\n  }\n  var a = {\n    \"d\": path,\n    stroke: params.stroke ? params.stroke : null,\n    fill: params.fill ? params.fill : null,\n    transform: \"translate(\" + offset[0] + \",\" + offset[1] + \")\",\n    \"pointer-events\": \"visibleStroke\"\n  };\n  _attr(o.path, a);\n}\nfunction destroySVGOverlay(o, force) {\n  var _o = o;\n  if (_o.path != null && _o.path.parentNode != null) {\n    _o.path.parentNode.removeChild(_o.path);\n  }\n  if (_o.bgPath != null && _o.bgPath.parentNode != null) {\n    _o.bgPath.parentNode.removeChild(_o.bgPath);\n  }\n  delete _o.path;\n  delete _o.bgPath;\n}\n(function (_Overlay) {\n  _inherits(SVGElementOverlay, _Overlay);\n  var _super = _createSuper(SVGElementOverlay);\n  function SVGElementOverlay() {\n    var _this;\n    _classCallCheck(this, SVGElementOverlay);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"path\", void 0);\n    return _this;\n  }\n  return SVGElementOverlay;\n})(Overlay);\n\nvar SvgComponent = function () {\n  function SvgComponent() {\n    _classCallCheck(this, SvgComponent);\n  }\n  _createClass(SvgComponent, null, [{\n    key: \"paint\",\n    value: function paint(connector, instance, paintStyle, extents) {\n      if (paintStyle != null) {\n        var xy = [connector.x, connector.y],\n            wh = [connector.w, connector.h];\n        if (extents != null) {\n          if (extents.xmin < 0) {\n            xy[0] += extents.xmin;\n          }\n          if (extents.ymin < 0) {\n            xy[1] += extents.ymin;\n          }\n          wh[0] = extents.xmax + (extents.xmin < 0 ? -extents.xmin : 0);\n          wh[1] = extents.ymax + (extents.ymin < 0 ? -extents.ymin : 0);\n        }\n        if (isFinite(wh[0]) && isFinite(wh[1])) {\n          var attrs = {\n            \"width\": \"\" + (wh[0] || 0),\n            \"height\": \"\" + (wh[1] || 0)\n          };\n          if (instance.containerType === ElementTypes.HTML) {\n            _attr(connector.canvas, extend(attrs, {\n              style: _pos([xy[0], xy[1]])\n            }));\n          } else {\n            _attr(connector.canvas, extend(attrs, {\n              x: xy[0],\n              y: xy[1]\n            }));\n          }\n        }\n      }\n    }\n  }]);\n  return SvgComponent;\n}();\n\nfunction paintSvgConnector(instance, connector, paintStyle, extents) {\n  getConnectorElement(instance, connector);\n  SvgComponent.paint(connector, instance, paintStyle, extents);\n  var p = \"\",\n      offset = [0, 0];\n  if (extents.xmin < 0) {\n    offset[0] = -extents.xmin;\n  }\n  if (extents.ymin < 0) {\n    offset[1] = -extents.ymin;\n  }\n  if (connector.segments.length > 0) {\n    p = instance.getPathData(connector);\n    var a = {\n      d: p,\n      transform: \"translate(\" + offset[0] + \",\" + offset[1] + \")\",\n      \"pointer-events\": \"visibleStroke\"\n    },\n        outlineStyle = null;\n    if (paintStyle.outlineStroke) {\n      var outlineWidth = paintStyle.outlineWidth || 1,\n          outlineStrokeWidth = paintStyle.strokeWidth + 2 * outlineWidth;\n      outlineStyle = extend({}, paintStyle);\n      outlineStyle.stroke = paintStyle.outlineStroke;\n      outlineStyle.strokeWidth = outlineStrokeWidth;\n      if (connector.bgPath == null) {\n        connector.bgPath = _node(ELEMENT_PATH, a);\n        instance.addClass(connector.bgPath, instance.connectorOutlineClass);\n        _appendAtIndex(connector.canvas, connector.bgPath, 0);\n      } else {\n        _attr(connector.bgPath, a);\n      }\n      _applyStyles(connector.canvas, connector.bgPath, outlineStyle);\n    }\n    var cany = connector;\n    if (cany.path == null) {\n      cany.path = _node(ELEMENT_PATH, a);\n      _appendAtIndex(cany.canvas, cany.path, paintStyle.outlineStroke ? 1 : 0);\n    } else {\n      if (cany.path.parentNode !== cany.canvas) {\n        _appendAtIndex(cany.canvas, cany.path, paintStyle.outlineStroke ? 1 : 0);\n      }\n      _attr(connector.path, a);\n    }\n    _applyStyles(connector.canvas, connector.path, paintStyle);\n  }\n}\nfunction getConnectorElement(instance, c) {\n  if (c.canvas != null) {\n    return c.canvas;\n  } else {\n    var svg = _node(ELEMENT_SVG, {\n      \"style\": \"\",\n      \"width\": \"0\",\n      \"height\": \"0\",\n      \"pointer-events\": NONE,\n      \"position\": ABSOLUTE\n    });\n    c.canvas = svg;\n    instance._appendElement(c.canvas, instance.getContainer());\n    if (c.cssClass != null) {\n      instance.addClass(svg, c.cssClass);\n    }\n    instance.addClass(svg, instance.connectorClass);\n    svg.jtk = svg.jtk || {};\n    svg.jtk.connector = c;\n    return svg;\n  }\n}\n\nvar SvgEndpoint = function () {\n  function SvgEndpoint() {\n    _classCallCheck(this, SvgEndpoint);\n  }\n  _createClass(SvgEndpoint, null, [{\n    key: \"getEndpointElement\",\n    value: function getEndpointElement(ep) {\n      if (ep.canvas != null) {\n        return ep.canvas;\n      } else {\n        var canvas = _node(ELEMENT_SVG, {\n          \"style\": \"\",\n          \"width\": \"0\",\n          \"height\": \"0\",\n          \"pointer-events\": \"all\",\n          \"position\": ABSOLUTE\n        });\n        ep.canvas = canvas;\n        var classes = ep.classes.join(\" \");\n        ep.instance.addClass(canvas, classes);\n        var scopes = ep.endpoint.scope.split(/\\s/);\n        for (var i = 0; i < scopes.length; i++) {\n          ep.instance.setAttribute(canvas, ATTRIBUTE_SCOPE_PREFIX + scopes[i], TRUE$1);\n        }\n        ep.instance._appendElementToContainer(canvas);\n        if (ep.cssClass != null) {\n          ep.instance.addClass(canvas, ep.cssClass);\n        }\n        ep.instance.addClass(canvas, ep.instance.endpointClass);\n        canvas.jtk = canvas.jtk || {};\n        canvas.jtk.endpoint = ep.endpoint;\n        canvas.style.display = ep.endpoint.visible !== false ? BLOCK : NONE;\n        return canvas;\n      }\n    }\n  }, {\n    key: \"paint\",\n    value: function paint(ep, handlers, paintStyle) {\n      if (ep.endpoint.deleted !== true) {\n        this.getEndpointElement(ep);\n        SvgComponent.paint(ep, ep.instance, paintStyle);\n        var s = extend({}, paintStyle);\n        if (s.outlineStroke) {\n          s.stroke = s.outlineStroke;\n        }\n        if (ep.node == null) {\n          ep.node = handlers.makeNode(ep, s);\n          ep.canvas.appendChild(ep.node);\n        } else if (handlers.updateNode != null) {\n          handlers.updateNode(ep, ep.node);\n        }\n        _applyStyles(ep.canvas, ep.node, s);\n      }\n    }\n  }]);\n  return SvgEndpoint;\n}();\n\nvar AbstractConnector = function () {\n  function AbstractConnector(connection, params) {\n    _classCallCheck(this, AbstractConnector);\n    this.connection = connection;\n    _defineProperty(this, \"type\", void 0);\n    _defineProperty(this, \"edited\", false);\n    _defineProperty(this, \"stub\", void 0);\n    _defineProperty(this, \"sourceStub\", void 0);\n    _defineProperty(this, \"targetStub\", void 0);\n    _defineProperty(this, \"maxStub\", void 0);\n    _defineProperty(this, \"typeId\", void 0);\n    _defineProperty(this, \"gap\", void 0);\n    _defineProperty(this, \"sourceGap\", void 0);\n    _defineProperty(this, \"targetGap\", void 0);\n    _defineProperty(this, \"segments\", []);\n    _defineProperty(this, \"totalLength\", 0);\n    _defineProperty(this, \"segmentProportions\", []);\n    _defineProperty(this, \"segmentProportionalLengths\", []);\n    _defineProperty(this, \"paintInfo\", null);\n    _defineProperty(this, \"strokeWidth\", void 0);\n    _defineProperty(this, \"x\", void 0);\n    _defineProperty(this, \"y\", void 0);\n    _defineProperty(this, \"w\", void 0);\n    _defineProperty(this, \"h\", void 0);\n    _defineProperty(this, \"segment\", void 0);\n    _defineProperty(this, \"bounds\", EMPTY_BOUNDS());\n    _defineProperty(this, \"cssClass\", void 0);\n    _defineProperty(this, \"hoverClass\", void 0);\n    _defineProperty(this, \"geometry\", void 0);\n    this.stub = params.stub || this.getDefaultStubs();\n    this.sourceStub = Array.isArray(this.stub) ? this.stub[0] : this.stub;\n    this.targetStub = Array.isArray(this.stub) ? this.stub[1] : this.stub;\n    this.gap = params.gap || 0;\n    this.sourceGap = Array.isArray(this.gap) ? this.gap[0] : this.gap;\n    this.targetGap = Array.isArray(this.gap) ? this.gap[1] : this.gap;\n    this.maxStub = Math.max(this.sourceStub, this.targetStub);\n    this.cssClass = params.cssClass || \"\";\n    this.hoverClass = params.hoverClass || \"\";\n  }\n  _createClass(AbstractConnector, [{\n    key: \"getTypeDescriptor\",\n    value: function getTypeDescriptor() {\n      return \"connector\";\n    }\n  }, {\n    key: \"getIdPrefix\",\n    value: function getIdPrefix() {\n      return \"_jsplumb_connector\";\n    }\n  }, {\n    key: \"setGeometry\",\n    value: function setGeometry(g, internal) {\n      this.geometry = g;\n      this.edited = g != null && !internal;\n    }\n  }, {\n    key: \"exportGeometry\",\n    value: function exportGeometry() {\n      return this.geometry;\n    }\n  }, {\n    key: \"importGeometry\",\n    value: function importGeometry(g) {\n      this.geometry = g;\n      return true;\n    }\n  }, {\n    key: \"resetGeometry\",\n    value: function resetGeometry() {\n      this.geometry = null;\n      this.edited = false;\n    }\n  }, {\n    key: \"transformAnchorPlacement\",\n    value:\n    function transformAnchorPlacement(a, dx, dy) {\n      return {\n        x: a.x,\n        y: a.y,\n        ox: a.ox,\n        oy: a.oy,\n        curX: a.curX + dx,\n        curY: a.curY + dy\n      };\n    }\n  }, {\n    key: \"resetBounds\",\n    value: function resetBounds() {\n      this.bounds = EMPTY_BOUNDS();\n    }\n  }, {\n    key: \"findSegmentForPoint\",\n    value: function findSegmentForPoint(x, y) {\n      var out = {\n        d: Infinity,\n        s: null,\n        x: null,\n        y: null,\n        l: null,\n        x1: null,\n        y1: null,\n        x2: null,\n        y2: null,\n        index: null,\n        connectorLocation: null\n      };\n      for (var i = 0; i < this.segments.length; i++) {\n        var _s = this.segments[i].findClosestPointOnPath(x, y);\n        if (_s.d < out.d) {\n          out.d = _s.d;\n          out.l = _s.l;\n          out.x = _s.x;\n          out.y = _s.y;\n          out.s = this.segments[i];\n          out.x1 = _s.x1;\n          out.x2 = _s.x2;\n          out.y1 = _s.y1;\n          out.y2 = _s.y2;\n          out.index = i;\n          out.connectorLocation = this.segmentProportions[i][0] + _s.l * (this.segmentProportions[i][1] - this.segmentProportions[i][0]);\n        }\n      }\n      return out;\n    }\n  }, {\n    key: \"lineIntersection\",\n    value: function lineIntersection(x1, y1, x2, y2) {\n      var out = [];\n      for (var i = 0; i < this.segments.length; i++) {\n        out.push.apply(out, this.segments[i].lineIntersection(x1, y1, x2, y2));\n      }\n      return out;\n    }\n  }, {\n    key: \"boxIntersection\",\n    value: function boxIntersection(x, y, w, h) {\n      var out = [];\n      for (var i = 0; i < this.segments.length; i++) {\n        out.push.apply(out, this.segments[i].boxIntersection(x, y, w, h));\n      }\n      return out;\n    }\n  }, {\n    key: \"boundingBoxIntersection\",\n    value: function boundingBoxIntersection(box) {\n      var out = [];\n      for (var i = 0; i < this.segments.length; i++) {\n        out.push.apply(out, this.segments[i].boundingBoxIntersection(box));\n      }\n      return out;\n    }\n  }, {\n    key: \"_updateSegmentProportions\",\n    value: function _updateSegmentProportions() {\n      var curLoc = 0;\n      for (var i = 0; i < this.segments.length; i++) {\n        var sl = this.segments[i].getLength();\n        this.segmentProportionalLengths[i] = sl / this.totalLength;\n        this.segmentProportions[i] = [curLoc, curLoc += sl / this.totalLength];\n      }\n    }\n  }, {\n    key: \"_findSegmentForLocation\",\n    value: function _findSegmentForLocation(location, absolute) {\n      var idx, i, inSegmentProportion;\n      if (absolute) {\n        location = location > 0 ? location / this.totalLength : (this.totalLength + location) / this.totalLength;\n      }\n      if (location === 1) {\n        idx = this.segments.length - 1;\n        inSegmentProportion = 1;\n      } else if (location === 0) {\n        inSegmentProportion = 0;\n        idx = 0;\n      } else {\n        if (location >= 0.5) {\n          idx = 0;\n          inSegmentProportion = 0;\n          for (i = this.segmentProportions.length - 1; i > -1; i--) {\n            if (this.segmentProportions[i][1] >= location && this.segmentProportions[i][0] <= location) {\n              idx = i;\n              inSegmentProportion = (location - this.segmentProportions[i][0]) / this.segmentProportionalLengths[i];\n              break;\n            }\n          }\n        } else {\n          idx = this.segmentProportions.length - 1;\n          inSegmentProportion = 1;\n          for (i = 0; i < this.segmentProportions.length; i++) {\n            if (this.segmentProportions[i][1] >= location) {\n              idx = i;\n              inSegmentProportion = (location - this.segmentProportions[i][0]) / this.segmentProportionalLengths[i];\n              break;\n            }\n          }\n        }\n      }\n      return {\n        segment: this.segments[idx],\n        proportion: inSegmentProportion,\n        index: idx\n      };\n    }\n  }, {\n    key: \"_addSegment\",\n    value: function _addSegment(clazz, params) {\n      if (params.x1 === params.x2 && params.y1 === params.y2) {\n        return;\n      }\n      var s = new clazz(params);\n      this.segments.push(s);\n      this.totalLength += s.getLength();\n      this.updateBounds(s);\n    }\n  }, {\n    key: \"_clearSegments\",\n    value: function _clearSegments() {\n      this.totalLength = 0;\n      this.segments.length = 0;\n      this.segmentProportions.length = 0;\n      this.segmentProportionalLengths.length = 0;\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      return this.totalLength;\n    }\n  }, {\n    key: \"_prepareCompute\",\n    value: function _prepareCompute(params) {\n      this.strokeWidth = params.strokeWidth;\n      var x1 = params.sourcePos.curX,\n          x2 = params.targetPos.curX,\n          y1 = params.sourcePos.curY,\n          y2 = params.targetPos.curY,\n          segment = quadrant({\n        x: x1,\n        y: y1\n      }, {\n        x: x2,\n        y: y2\n      }),\n          swapX = x2 < x1,\n          swapY = y2 < y1,\n          so = [params.sourcePos.ox, params.sourcePos.oy],\n          to = [params.targetPos.ox, params.targetPos.oy],\n          x = swapX ? x2 : x1,\n          y = swapY ? y2 : y1,\n          w = Math.abs(x2 - x1),\n          h = Math.abs(y2 - y1);\n      var noSourceOrientation = so[0] === 0 && so[1] === 0;\n      var noTargetOrientation = to[0] === 0 && to[1] === 0;\n      if (noSourceOrientation || noTargetOrientation) {\n        var index = w > h ? 0 : 1,\n            oIndex = [1, 0][index],\n            v1 = index === 0 ? x1 : y1,\n            v2 = index === 0 ? x2 : y2;\n        if (noSourceOrientation) {\n          so[index] = v1 > v2 ? -1 : 1;\n          so[oIndex] = 0;\n        }\n        if (noTargetOrientation) {\n          to[index] = v1 > v2 ? 1 : -1;\n          to[oIndex] = 0;\n        }\n      }\n      var sx = swapX ? w + this.sourceGap * so[0] : this.sourceGap * so[0],\n          sy = swapY ? h + this.sourceGap * so[1] : this.sourceGap * so[1],\n          tx = swapX ? this.targetGap * to[0] : w + this.targetGap * to[0],\n          ty = swapY ? this.targetGap * to[1] : h + this.targetGap * to[1],\n          oProduct = so[0] * to[0] + so[1] * to[1];\n      var result = {\n        sx: sx,\n        sy: sy,\n        tx: tx,\n        ty: ty,\n        xSpan: Math.abs(tx - sx),\n        ySpan: Math.abs(ty - sy),\n        mx: (sx + tx) / 2,\n        my: (sy + ty) / 2,\n        so: so,\n        to: to,\n        x: x,\n        y: y,\n        w: w,\n        h: h,\n        segment: segment,\n        startStubX: sx + so[0] * this.sourceStub,\n        startStubY: sy + so[1] * this.sourceStub,\n        endStubX: tx + to[0] * this.targetStub,\n        endStubY: ty + to[1] * this.targetStub,\n        isXGreaterThanStubTimes2: Math.abs(sx - tx) > this.sourceStub + this.targetStub,\n        isYGreaterThanStubTimes2: Math.abs(sy - ty) > this.sourceStub + this.targetStub,\n        opposite: oProduct === -1,\n        perpendicular: oProduct === 0,\n        orthogonal: oProduct === 1,\n        sourceAxis: so[0] === 0 ? \"y\" : \"x\",\n        points: [x, y, w, h, sx, sy, tx, ty],\n        stubs: [this.sourceStub, this.targetStub]\n      };\n      result.anchorOrientation = result.opposite ? \"opposite\" : result.orthogonal ? \"orthogonal\" : \"perpendicular\";\n      return result;\n    }\n  }, {\n    key: \"updateBounds\",\n    value: function updateBounds(segment) {\n      var segBounds = segment.extents;\n      this.bounds.xmin = Math.min(this.bounds.xmin, segBounds.xmin);\n      this.bounds.xmax = Math.max(this.bounds.xmax, segBounds.xmax);\n      this.bounds.ymin = Math.min(this.bounds.ymin, segBounds.ymin);\n      this.bounds.ymax = Math.max(this.bounds.ymax, segBounds.ymax);\n    }\n  }, {\n    key: \"dumpSegmentsToConsole\",\n    value: function dumpSegmentsToConsole() {\n      log(\"SEGMENTS:\");\n      for (var i = 0; i < this.segments.length; i++) {\n        log(this.segments[i].type, \"\" + this.segments[i].getLength(), \"\" + this.segmentProportions[i]);\n      }\n    }\n  }, {\n    key: \"pointOnPath\",\n    value: function pointOnPath(location, absolute) {\n      var seg = this._findSegmentForLocation(location, absolute);\n      return seg.segment && seg.segment.pointOnPath(seg.proportion, false) || {\n        x: 0,\n        y: 0\n      };\n    }\n  }, {\n    key: \"gradientAtPoint\",\n    value: function gradientAtPoint(location, absolute) {\n      var seg = this._findSegmentForLocation(location, absolute);\n      return seg.segment && seg.segment.gradientAtPoint(seg.proportion, false) || 0;\n    }\n  }, {\n    key: \"pointAlongPathFrom\",\n    value: function pointAlongPathFrom(location, distance, absolute) {\n      var seg = this._findSegmentForLocation(location, absolute);\n      return seg.segment && seg.segment.pointAlongPathFrom(seg.proportion, distance, false) || {\n        x: 0,\n        y: 0\n      };\n    }\n  }, {\n    key: \"compute\",\n    value: function compute(params) {\n      this.paintInfo = this._prepareCompute(params);\n      this._clearSegments();\n      this._compute(this.paintInfo, params);\n      this.x = this.paintInfo.points[0];\n      this.y = this.paintInfo.points[1];\n      this.w = this.paintInfo.points[2];\n      this.h = this.paintInfo.points[3];\n      this.segment = this.paintInfo.segment;\n      this._updateSegmentProportions();\n    }\n  }, {\n    key: \"setAnchorOrientation\",\n    value: function setAnchorOrientation(idx, orientation) {}\n  }]);\n  return AbstractConnector;\n}();\n\nvar DEFAULT_WIDTH = 20;\nvar DEFAULT_LENGTH = 20;\nvar ArrowOverlay = function (_Overlay) {\n  _inherits(ArrowOverlay, _Overlay);\n  var _super = _createSuper(ArrowOverlay);\n  function ArrowOverlay(instance, component, p) {\n    var _this;\n    _classCallCheck(this, ArrowOverlay);\n    _this = _super.call(this, instance, component, p);\n    _this.instance = instance;\n    _this.component = component;\n    _defineProperty(_assertThisInitialized(_this), \"width\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"length\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"foldback\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"direction\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"location\", 0.5);\n    _defineProperty(_assertThisInitialized(_this), \"paintStyle\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"type\", ArrowOverlay.type);\n    _defineProperty(_assertThisInitialized(_this), \"cachedDimensions\", void 0);\n    p = p || {};\n    _this.width = p.width || DEFAULT_WIDTH;\n    _this.length = p.length || DEFAULT_LENGTH;\n    _this.direction = (p.direction || 1) < 0 ? -1 : 1;\n    _this.foldback = p.foldback || 0.623;\n    _this.paintStyle = p.paintStyle || {\n      \"strokeWidth\": 1\n    };\n    _this.location = p.location == null ? _this.location : Array.isArray(p.location) ? p.location[0] : p.location;\n    return _this;\n  }\n  _createClass(ArrowOverlay, [{\n    key: \"draw\",\n    value: function draw(component, currentConnectionPaintStyle, absolutePosition) {\n      if (component instanceof AbstractConnector) {\n        var connector = component;\n        var hxy, mid, txy, tail, cxy;\n        if (this.location > 1 || this.location < 0) {\n          var fromLoc = this.location < 0 ? 1 : 0;\n          hxy = connector.pointAlongPathFrom(fromLoc, this.location, false);\n          mid = connector.pointAlongPathFrom(fromLoc, this.location - this.direction * this.length / 2, false);\n          txy = pointOnLine(hxy, mid, this.length);\n        } else if (this.location === 1) {\n          hxy = connector.pointOnPath(this.location);\n          mid = connector.pointAlongPathFrom(this.location, -this.length);\n          txy = pointOnLine(hxy, mid, this.length);\n          if (this.direction === -1) {\n            var _ = txy;\n            txy = hxy;\n            hxy = _;\n          }\n        } else if (this.location === 0) {\n          txy = connector.pointOnPath(this.location);\n          mid = connector.pointAlongPathFrom(this.location, this.length);\n          hxy = pointOnLine(txy, mid, this.length);\n          if (this.direction === -1) {\n            var __ = txy;\n            txy = hxy;\n            hxy = __;\n          }\n        } else {\n          hxy = connector.pointAlongPathFrom(this.location, this.direction * this.length / 2);\n          mid = connector.pointOnPath(this.location);\n          txy = pointOnLine(hxy, mid, this.length);\n        }\n        tail = perpendicularLineTo(hxy, txy, this.width);\n        cxy = pointOnLine(hxy, txy, this.foldback * this.length);\n        var d = {\n          hxy: hxy,\n          tail: tail,\n          cxy: cxy\n        },\n            stroke = this.paintStyle.stroke || currentConnectionPaintStyle.stroke,\n            fill = this.paintStyle.fill || currentConnectionPaintStyle.stroke,\n            lineWidth = this.paintStyle.strokeWidth || currentConnectionPaintStyle.strokeWidth;\n        return {\n          component: component,\n          d: d,\n          \"stroke-width\": lineWidth,\n          stroke: stroke,\n          fill: fill,\n          xmin: Math.min(hxy.x, tail[0].x, tail[1].x),\n          xmax: Math.max(hxy.x, tail[0].x, tail[1].x),\n          ymin: Math.min(hxy.y, tail[0].y, tail[1].y),\n          ymax: Math.max(hxy.y, tail[0].y, tail[1].y)\n        };\n      }\n    }\n  }, {\n    key: \"updateFrom\",\n    value: function updateFrom(d) {}\n  }]);\n  return ArrowOverlay;\n}(Overlay);\n_defineProperty(ArrowOverlay, \"type\", \"Arrow\");\nfunction isArrowOverlay(o) {\n  return o.type === ArrowOverlay.type;\n}\nOverlayFactory.register(ArrowOverlay.type, ArrowOverlay);\n\nvar DiamondOverlay = function (_ArrowOverlay) {\n  _inherits(DiamondOverlay, _ArrowOverlay);\n  var _super = _createSuper(DiamondOverlay);\n  function DiamondOverlay(instance, component, p) {\n    var _this;\n    _classCallCheck(this, DiamondOverlay);\n    _this = _super.call(this, instance, component, p);\n    _this.instance = instance;\n    _defineProperty(_assertThisInitialized(_this), \"type\", DiamondOverlay.type);\n    _this.length = _this.length / 2;\n    _this.foldback = 2;\n    return _this;\n  }\n  return DiamondOverlay;\n}(ArrowOverlay);\n_defineProperty(DiamondOverlay, \"type\", \"Diamond\");\nfunction isDiamondOverlay(o) {\n  return o.type === DiamondOverlay.type;\n}\nOverlayFactory.register(DiamondOverlay.type, DiamondOverlay);\n\nvar PlainArrowOverlay = function (_ArrowOverlay) {\n  _inherits(PlainArrowOverlay, _ArrowOverlay);\n  var _super = _createSuper(PlainArrowOverlay);\n  function PlainArrowOverlay(instance, component, p) {\n    var _this;\n    _classCallCheck(this, PlainArrowOverlay);\n    _this = _super.call(this, instance, component, p);\n    _this.instance = instance;\n    _defineProperty(_assertThisInitialized(_this), \"type\", PlainArrowOverlay.type);\n    _this.foldback = 1;\n    return _this;\n  }\n  return PlainArrowOverlay;\n}(ArrowOverlay);\n_defineProperty(PlainArrowOverlay, \"type\", \"PlainArrow\");\nfunction isPlainArrowOverlay(o) {\n  return o.type === PlainArrowOverlay.type;\n}\nOverlayFactory.register(\"PlainArrow\", PlainArrowOverlay);\n\nvar CustomOverlay = function (_Overlay) {\n  _inherits(CustomOverlay, _Overlay);\n  var _super = _createSuper(CustomOverlay);\n  function CustomOverlay(instance, component, p) {\n    var _this;\n    _classCallCheck(this, CustomOverlay);\n    _this = _super.call(this, instance, component, p);\n    _this.instance = instance;\n    _this.component = component;\n    _defineProperty(_assertThisInitialized(_this), \"create\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"type\", CustomOverlay.type);\n    _this.create = p.create;\n    return _this;\n  }\n  _createClass(CustomOverlay, [{\n    key: \"updateFrom\",\n    value: function updateFrom(d) {}\n  }]);\n  return CustomOverlay;\n}(Overlay);\n_defineProperty(CustomOverlay, \"type\", \"Custom\");\nfunction isCustomOverlay(o) {\n  return o.type === CustomOverlay.type;\n}\nOverlayFactory.register(CustomOverlay.type, CustomOverlay);\n\nvar DEFAULT_KEY_ALLOW_NESTED_GROUPS = \"allowNestedGroups\";\nvar DEFAULT_KEY_ANCHOR = \"anchor\";\nvar DEFAULT_KEY_ANCHORS = \"anchors\";\nvar DEFAULT_KEY_CONNECTION_OVERLAYS = \"connectionOverlays\";\nvar DEFAULT_KEY_CONNECTIONS_DETACHABLE = \"connectionsDetachable\";\nvar DEFAULT_KEY_CONNECTOR = \"connector\";\nvar DEFAULT_KEY_CONTAINER = \"container\";\nvar DEFAULT_KEY_ENDPOINT = \"endpoint\";\nvar DEFAULT_KEY_ENDPOINT_OVERLAYS = \"endpointOverlays\";\nvar DEFAULT_KEY_ENDPOINTS = \"endpoints\";\nvar DEFAULT_KEY_ENDPOINT_STYLE = \"endpointStyle\";\nvar DEFAULT_KEY_ENDPOINT_STYLES = \"endpointStyles\";\nvar DEFAULT_KEY_ENDPOINT_HOVER_STYLE = \"endpointHoverStyle\";\nvar DEFAULT_KEY_ENDPOINT_HOVER_STYLES = \"endpointHoverStyles\";\nvar DEFAULT_KEY_HOVER_CLASS = \"hoverClass\";\nvar DEFAULT_KEY_HOVER_PAINT_STYLE = \"hoverPaintStyle\";\nvar DEFAULT_KEY_LIST_STYLE = \"listStyle\";\nvar DEFAULT_KEY_MAX_CONNECTIONS = \"maxConnections\";\nvar DEFAULT_KEY_PAINT_STYLE = \"paintStyle\";\nvar DEFAULT_KEY_REATTACH_CONNECTIONS = \"reattachConnections\";\nvar DEFAULT_KEY_SCOPE = \"scope\";\n\nvar DotEndpoint = function (_EndpointRepresentati) {\n  _inherits(DotEndpoint, _EndpointRepresentati);\n  var _super = _createSuper(DotEndpoint);\n  function DotEndpoint(endpoint, params) {\n    var _this;\n    _classCallCheck(this, DotEndpoint);\n    _this = _super.call(this, endpoint, params);\n    _defineProperty(_assertThisInitialized(_this), \"radius\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"defaultOffset\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"defaultInnerRadius\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"type\", DotEndpoint.type);\n    params = params || {};\n    _this.radius = params.radius || 5;\n    _this.defaultOffset = 0.5 * _this.radius;\n    _this.defaultInnerRadius = _this.radius / 3;\n    return _this;\n  }\n  return DotEndpoint;\n}(EndpointRepresentation);\n_defineProperty(DotEndpoint, \"type\", \"Dot\");\nvar DotEndpointHandler = {\n  type: DotEndpoint.type,\n  cls: DotEndpoint,\n  compute: function compute(ep, anchorPoint, orientation, endpointStyle) {\n    var x = anchorPoint.curX - ep.radius,\n        y = anchorPoint.curY - ep.radius,\n        w = ep.radius * 2,\n        h = ep.radius * 2;\n    if (endpointStyle && endpointStyle.stroke) {\n      var lw = endpointStyle.strokeWidth || 1;\n      x -= lw;\n      y -= lw;\n      w += lw * 2;\n      h += lw * 2;\n    }\n    ep.x = x;\n    ep.y = y;\n    ep.w = w;\n    ep.h = h;\n    return [x, y, w, h, ep.radius];\n  },\n  getParams: function getParams(ep) {\n    return {\n      radius: ep.radius\n    };\n  }\n};\n\nvar UINode = function UINode(instance, el) {\n  _classCallCheck(this, UINode);\n  this.instance = instance;\n  this.el = el;\n  _defineProperty(this, \"group\", void 0);\n};\nvar UIGroup = function (_UINode) {\n  _inherits(UIGroup, _UINode);\n  var _super = _createSuper(UIGroup);\n  function UIGroup(instance, el, options) {\n    var _this;\n    _classCallCheck(this, UIGroup);\n    _this = _super.call(this, instance, el);\n    _this.instance = instance;\n    _defineProperty(_assertThisInitialized(_this), \"children\", []);\n    _defineProperty(_assertThisInitialized(_this), \"collapsed\", false);\n    _defineProperty(_assertThisInitialized(_this), \"droppable\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"enabled\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"orphan\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"constrain\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"proxied\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"ghost\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"revert\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"prune\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"dropOverride\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"anchor\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"endpoint\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"connections\", {\n      source: [],\n      target: [],\n      internal: []\n    });\n    _defineProperty(_assertThisInitialized(_this), \"manager\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"id\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"elId\", void 0);\n    var jel = _this.el;\n    jel._isJsPlumbGroup = true;\n    jel._jsPlumbGroup = _assertThisInitialized(_this);\n    _this.elId = instance.getId(el);\n    _this.orphan = options.orphan === true;\n    _this.revert = _this.orphan === true ? false : options.revert !== false;\n    _this.droppable = options.droppable !== false;\n    _this.ghost = options.ghost === true;\n    _this.enabled = options.enabled !== false;\n    _this.prune = _this.orphan !== true && options.prune === true;\n    _this.constrain = _this.ghost || options.constrain === true;\n    _this.proxied = options.proxied !== false;\n    _this.id = options.id || uuid();\n    _this.dropOverride = options.dropOverride === true;\n    _this.anchor = options.anchor;\n    _this.endpoint = options.endpoint;\n    _this.anchor = options.anchor;\n    instance.setAttribute(el, ATTRIBUTE_GROUP, \"\");\n    return _this;\n  }\n  _createClass(UIGroup, [{\n    key: \"contentArea\",\n    get: function get() {\n      return this.instance.getGroupContentArea(this);\n    }\n  }, {\n    key: \"overrideDrop\",\n    value: function overrideDrop(el, targetGroup) {\n      return this.dropOverride && (this.revert || this.prune || this.orphan);\n    }\n  }, {\n    key: \"getAnchor\",\n    value: function getAnchor(conn, endpointIndex) {\n      return this.anchor || \"Continuous\";\n    }\n  }, {\n    key: \"getEndpoint\",\n    value: function getEndpoint(conn, endpointIndex) {\n      return this.endpoint || {\n        type: DotEndpoint.type,\n        options: {\n          radius: 10\n        }\n      };\n    }\n  }, {\n    key: \"add\",\n    value: function add(_el, doNotFireEvent) {\n      var dragArea = this.instance.getGroupContentArea(this);\n      var __el = _el;\n      if (__el._jsPlumbParentGroup != null) {\n        if (__el._jsPlumbParentGroup === this) {\n          return;\n        } else {\n          __el._jsPlumbParentGroup.remove(_el, true, doNotFireEvent, false);\n        }\n      }\n      __el._jsPlumbParentGroup = this;\n      this.children.push(new UINode(this.instance, _el));\n      this.instance._appendElement(__el, dragArea);\n      this.manager._updateConnectionsForGroup(this);\n    }\n  }, {\n    key: \"resolveNode\",\n    value: function resolveNode(el) {\n      return el == null ? null : getWithFunction(this.children, function (u) {\n        return u.el === el;\n      });\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(el, manipulateDOM, doNotFireEvent, doNotUpdateConnections, targetGroup) {\n      var uiNode = this.resolveNode(el);\n      if (uiNode != null) {\n        this._doRemove(uiNode, manipulateDOM, doNotFireEvent, doNotUpdateConnections, targetGroup);\n      }\n    }\n  }, {\n    key: \"_doRemove\",\n    value: function _doRemove(child, manipulateDOM, doNotFireEvent, doNotUpdateConnections, targetGroup) {\n      var __el = child.el;\n      delete __el._jsPlumbParentGroup;\n      removeWithFunction(this.children, function (e) {\n        return e === child;\n      });\n      if (manipulateDOM) {\n        try {\n          this.instance.getGroupContentArea(this).removeChild(__el);\n        } catch (e) {\n          log(\"Could not remove element from Group \" + e);\n        }\n      }\n      if (!doNotFireEvent) {\n        var p = {\n          group: this,\n          el: __el\n        };\n        if (targetGroup) {\n          p.targetGroup = targetGroup;\n        }\n        this.instance.fire(EVENT_GROUP_MEMBER_REMOVED, p);\n      }\n      if (!doNotUpdateConnections) {\n        this.manager._updateConnectionsForGroup(this);\n      }\n    }\n  }, {\n    key: \"removeAll\",\n    value: function removeAll(manipulateDOM, doNotFireEvent) {\n      for (var i = 0, l = this.children.length; i < l; i++) {\n        var child = this.children[0];\n        this._doRemove(child, manipulateDOM, doNotFireEvent, true);\n        this.instance.unmanage(child.el, true);\n      }\n      this.children.length = 0;\n      this.manager._updateConnectionsForGroup(this);\n    }\n  }, {\n    key: \"orphanAll\",\n    value: function orphanAll() {\n      var orphanedPositions = {};\n      for (var i = 0; i < this.children.length; i++) {\n        var newPosition = this.manager.orphan(this.children[i].el, false);\n        orphanedPositions[newPosition.id] = newPosition.pos;\n      }\n      this.children.length = 0;\n      return orphanedPositions;\n    }\n  }, {\n    key: \"addGroup\",\n    value: function addGroup(group) {\n      if (this.instance.allowNestedGroups && group !== this) {\n        if (this.instance.groupManager.isAncestor(this, group)) {\n          return false;\n        }\n        if (group.group != null) {\n          group.group.removeGroup(group);\n        }\n        var groupElId = this.instance.getId(group.el);\n        var entry = this.instance.getManagedElements()[groupElId];\n        entry.group = this.elId;\n        var elpos = this.instance.getOffsetRelativeToRoot(group.el);\n        var cpos = this.collapsed ? this.instance.getOffsetRelativeToRoot(this.el) : this.instance.getOffsetRelativeToRoot(this.instance.getGroupContentArea(this));\n        group.el._jsPlumbParentGroup = this;\n        this.children.push(group);\n        this.instance._appendElementToGroup(this, group.el);\n        group.group = this;\n        var newPosition = {\n          x: elpos.x - cpos.x,\n          y: elpos.y - cpos.y\n        };\n        this.instance.setPosition(group.el, newPosition);\n        this.instance.fire(EVENT_NESTED_GROUP_ADDED, {\n          parent: this,\n          child: group\n        });\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: \"removeGroup\",\n    value: function removeGroup(group) {\n      if (group.group === this) {\n        var jel = group.el;\n        var d = this.instance.getGroupContentArea(this);\n        if (d === jel.parentNode) {\n          d.removeChild(group.el);\n        }\n        var groupElId = this.instance.getId(group.el);\n        var entry = this.instance.getManagedElements()[groupElId];\n        if (entry) {\n          delete entry.group;\n        }\n        this.children = this.children.filter(function (cg) {\n          return cg.id !== group.id;\n        });\n        delete group.group;\n        delete jel._jsPlumbParentGroup;\n        this.instance.fire(EVENT_NESTED_GROUP_REMOVED, {\n          parent: this,\n          child: group\n        });\n      }\n    }\n  }, {\n    key: \"getGroups\",\n    value: function getGroups() {\n      return this.children.filter(function (cg) {\n        return cg.constructor === UIGroup;\n      });\n    }\n  }, {\n    key: \"getNodes\",\n    value: function getNodes() {\n      return this.children.filter(function (cg) {\n        return cg.constructor === UINode;\n      });\n    }\n  }, {\n    key: \"collapseParent\",\n    get: function get() {\n      var cg = null;\n      if (this.group == null) {\n        return null;\n      } else {\n        var g = this.group;\n        while (g != null) {\n          if (g.collapsed) {\n            cg = g;\n          }\n          g = g.group;\n        }\n        return cg;\n      }\n    }\n  }]);\n  return UIGroup;\n}(UINode);\n\nvar GroupManager = function () {\n  function GroupManager(instance) {\n    var _this = this;\n    _classCallCheck(this, GroupManager);\n    this.instance = instance;\n    _defineProperty(this, \"groupMap\", {});\n    _defineProperty(this, \"_connectionSourceMap\", {});\n    _defineProperty(this, \"_connectionTargetMap\", {});\n    instance.bind(EVENT_INTERNAL_CONNECTION, function (p) {\n      var sourceGroup = _this.getGroupFor(p.source);\n      var targetGroup = _this.getGroupFor(p.target);\n      if (sourceGroup != null && targetGroup != null && sourceGroup === targetGroup) {\n        _this._connectionSourceMap[p.connection.id] = sourceGroup;\n        _this._connectionTargetMap[p.connection.id] = sourceGroup;\n        suggest(sourceGroup.connections.internal, p.connection);\n      } else {\n        if (sourceGroup != null) {\n          if (p.target._jsPlumbGroup === sourceGroup) {\n            suggest(sourceGroup.connections.internal, p.connection);\n          } else {\n            suggest(sourceGroup.connections.source, p.connection);\n          }\n          _this._connectionSourceMap[p.connection.id] = sourceGroup;\n        }\n        if (targetGroup != null) {\n          if (p.source._jsPlumbGroup === targetGroup) {\n            suggest(targetGroup.connections.internal, p.connection);\n          } else {\n            suggest(targetGroup.connections.target, p.connection);\n          }\n          _this._connectionTargetMap[p.connection.id] = targetGroup;\n        }\n      }\n    });\n    instance.bind(EVENT_INTERNAL_CONNECTION_DETACHED, function (p) {\n      _this._cleanupDetachedConnection(p.connection);\n    });\n    instance.bind(EVENT_CONNECTION_MOVED, function (p) {\n      var originalElement = p.originalEndpoint.element,\n          originalGroup = _this.getGroupFor(originalElement),\n          newEndpoint = p.connection.endpoints[p.index],\n          newElement = newEndpoint.element,\n          newGroup = _this.getGroupFor(newElement),\n          connMap = p.index === 0 ? _this._connectionSourceMap : _this._connectionTargetMap,\n          otherConnMap = p.index === 0 ? _this._connectionTargetMap : _this._connectionSourceMap;\n      if (newGroup != null) {\n        connMap[p.connection.id] = newGroup;\n        if (p.connection.source === p.connection.target) {\n          otherConnMap[p.connection.id] = newGroup;\n        }\n      } else {\n        delete connMap[p.connection.id];\n        if (p.connection.source === p.connection.target) {\n          delete otherConnMap[p.connection.id];\n        }\n      }\n      if (originalGroup != null) {\n        _this._updateConnectionsForGroup(originalGroup);\n      }\n      if (newGroup != null) {\n        _this._updateConnectionsForGroup(newGroup);\n      }\n    });\n  }\n  _createClass(GroupManager, [{\n    key: \"_cleanupDetachedConnection\",\n    value: function _cleanupDetachedConnection(conn) {\n      conn.proxies.length = 0;\n      var group = this._connectionSourceMap[conn.id],\n          f;\n      if (group != null) {\n        f = function f(c) {\n          return c.id === conn.id;\n        };\n        removeWithFunction(group.connections.source, f);\n        removeWithFunction(group.connections.target, f);\n        removeWithFunction(group.connections.internal, f);\n        delete this._connectionSourceMap[conn.id];\n      }\n      group = this._connectionTargetMap[conn.id];\n      if (group != null) {\n        f = function f(c) {\n          return c.id === conn.id;\n        };\n        removeWithFunction(group.connections.source, f);\n        removeWithFunction(group.connections.target, f);\n        removeWithFunction(group.connections.internal, f);\n        delete this._connectionTargetMap[conn.id];\n      }\n    }\n  }, {\n    key: \"addGroup\",\n    value: function addGroup(params) {\n      var jel = params.el;\n      if (this.groupMap[params.id] != null) {\n        throw new Error(\"cannot create Group [\" + params.id + \"]; a Group with that ID exists\");\n      }\n      if (jel._isJsPlumbGroup != null) {\n        throw new Error(\"cannot create Group [\" + params.id + \"]; the given element is already a Group\");\n      }\n      var group = new UIGroup(this.instance, params.el, params);\n      this.groupMap[group.id] = group;\n      if (params.collapsed) {\n        this.collapseGroup(group);\n      }\n      this.instance.manage(group.el);\n      this.instance.addClass(group.el, CLASS_GROUP_EXPANDED);\n      group.manager = this;\n      this._updateConnectionsForGroup(group);\n      this.instance.fire(EVENT_GROUP_ADDED, {\n        group: group\n      });\n      return group;\n    }\n  }, {\n    key: \"getGroup\",\n    value: function getGroup(groupId) {\n      var group = groupId;\n      if (isString(groupId)) {\n        group = this.groupMap[groupId];\n        if (group == null) {\n          throw new Error(\"No such group [\" + groupId + \"]\");\n        }\n      }\n      return group;\n    }\n  }, {\n    key: \"getGroupFor\",\n    value: function getGroupFor(el) {\n      var jel = el;\n      var c = this.instance.getContainer();\n      var abort = false,\n          g = null;\n      while (!abort) {\n        if (jel == null || jel === c) {\n          abort = true;\n        } else {\n          if (jel._jsPlumbParentGroup) {\n            g = jel._jsPlumbParentGroup;\n            abort = true;\n          } else {\n            jel = jel.parentNode;\n          }\n        }\n      }\n      return g;\n    }\n  }, {\n    key: \"getGroups\",\n    value: function getGroups() {\n      var g = [];\n      for (var key in this.groupMap) {\n        g.push(this.groupMap[key]);\n      }\n      return g;\n    }\n  }, {\n    key: \"removeGroup\",\n    value: function removeGroup(group, deleteMembers, manipulateView, doNotFireEvent) {\n      var _this2 = this;\n      var actualGroup = this.getGroup(group);\n      this.expandGroup(actualGroup, true);\n      var newPositions = {};\n      forEach(actualGroup.children, function (uiNode) {\n        var entry = _this2.instance.getManagedElements()[_this2.instance.getId(uiNode.el)];\n        if (entry) {\n          delete entry.group;\n        }\n      });\n      if (deleteMembers) {\n        forEach(actualGroup.getGroups(), function (cg) {\n          return _this2.removeGroup(cg, deleteMembers, manipulateView);\n        });\n        actualGroup.removeAll(manipulateView, doNotFireEvent);\n      } else {\n        if (actualGroup.group) {\n          forEach(actualGroup.children, function (c) {\n            return actualGroup.group.add(c.el);\n          });\n        }\n        newPositions = actualGroup.orphanAll();\n      }\n      if (actualGroup.group) {\n        actualGroup.group.removeGroup(actualGroup);\n      }\n      this.instance.unmanage(actualGroup.el, true);\n      delete this.groupMap[actualGroup.id];\n      this.instance.fire(EVENT_GROUP_REMOVED, {\n        group: actualGroup\n      });\n      return newPositions;\n    }\n  }, {\n    key: \"removeAllGroups\",\n    value: function removeAllGroups(deleteMembers, manipulateView, doNotFireEvent) {\n      for (var _g in this.groupMap) {\n        this.removeGroup(this.groupMap[_g], deleteMembers, manipulateView, doNotFireEvent);\n      }\n    }\n  }, {\n    key: \"forEach\",\n    value: function forEach(f) {\n      for (var key in this.groupMap) {\n        f(this.groupMap[key]);\n      }\n    }\n  }, {\n    key: \"orphan\",\n    value: function orphan(el, doNotTransferToAncestor) {\n      var jel = el;\n      if (jel._jsPlumbParentGroup) {\n        var currentParent = jel._jsPlumbParentGroup;\n        var id = this.instance.getId(jel);\n        var pos = this.instance.getOffset(el);\n        if (doNotTransferToAncestor !== true && currentParent.group) {\n          this.instance._appendElementToGroup(currentParent.group, el);\n        } else {\n          this.instance._appendElementToContainer(el);\n        }\n        this.instance.setPosition(el, pos);\n        delete jel._jsPlumbParentGroup;\n        return {\n          id: id,\n          pos: pos\n        };\n      }\n    }\n  }, {\n    key: \"_updateConnectionsForGroup\",\n    value: function _updateConnectionsForGroup(group) {\n      var _this3 = this;\n      group.connections.source.length = 0;\n      group.connections.target.length = 0;\n      group.connections.internal.length = 0;\n      var members = group.children.slice().map(function (cn) {\n        return cn.el;\n      });\n      var childMembers = [];\n      forEach(members, function (member) {\n        Array.prototype.push.apply(childMembers, _this3.instance.getSelector(member, SELECTOR_MANAGED_ELEMENT));\n      });\n      Array.prototype.push.apply(members, childMembers);\n      if (members.length > 0) {\n        var c1 = this.instance.getConnections({\n          source: members,\n          scope: WILDCARD\n        }, true);\n        var c2 = this.instance.getConnections({\n          target: members,\n          scope: WILDCARD\n        }, true);\n        var processed = {};\n        var gs, gt;\n        var oneSet = function oneSet(c) {\n          for (var i = 0; i < c.length; i++) {\n            if (processed[c[i].id]) {\n              continue;\n            }\n            processed[c[i].id] = true;\n            gs = _this3.getGroupFor(c[i].source);\n            gt = _this3.getGroupFor(c[i].target);\n            if (c[i].source === group.el && gt === group || c[i].target === group.el && gs === group) {\n              group.connections.internal.push(c[i]);\n            } else if (gs === group) {\n              if (gt !== group) {\n                group.connections.source.push(c[i]);\n              } else {\n                group.connections.internal.push(c[i]);\n              }\n              _this3._connectionSourceMap[c[i].id] = group;\n            } else if (gt === group) {\n              group.connections.target.push(c[i]);\n              _this3._connectionTargetMap[c[i].id] = group;\n            }\n          }\n        };\n        oneSet(c1);\n        oneSet(c2);\n      }\n    }\n  }, {\n    key: \"_collapseConnection\",\n    value: function _collapseConnection(conn, index, group) {\n      var otherEl = conn.endpoints[index === 0 ? 1 : 0].element;\n      if (otherEl._jsPlumbParentGroup && !otherEl._jsPlumbParentGroup.proxied && otherEl._jsPlumbParentGroup.collapsed) {\n        return false;\n      }\n      var es = conn.endpoints[0].element,\n          esg = es._jsPlumbParentGroup,\n          esgcp = esg != null ? esg.collapseParent || esg : null,\n          et = conn.endpoints[1].element,\n          etg = et._jsPlumbParentGroup,\n          etgcp = etg != null ? etg.collapseParent || etg : null;\n      if (esgcp == null || etgcp == null || esgcp.id !== etgcp.id) {\n        var groupEl = group.el;\n            this.instance.getId(groupEl);\n        this.instance.proxyConnection(conn, index, groupEl,\n        function (conn, index) {\n          return group.getEndpoint(conn, index);\n        }, function (conn, index) {\n          return group.getAnchor(conn, index);\n        });\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: \"_expandConnection\",\n    value: function _expandConnection(c, index, group) {\n      this.instance.unproxyConnection(c, index);\n    }\n  }, {\n    key: \"isElementDescendant\",\n    value: function isElementDescendant(el, parentEl) {\n      var c = this.instance.getContainer();\n      var abort = false;\n      while (!abort) {\n        if (el == null || el === c) {\n          return false;\n        } else {\n          if (el === parentEl) {\n            return true;\n          } else {\n            el = el.parentNode;\n          }\n        }\n      }\n    }\n  }, {\n    key: \"collapseGroup\",\n    value: function collapseGroup(group) {\n      var _this4 = this;\n      var actualGroup = this.getGroup(group);\n      if (actualGroup == null || actualGroup.collapsed) {\n        return;\n      }\n      var groupEl = actualGroup.el;\n      if (actualGroup.collapseParent == null) {\n        this.instance.setGroupVisible(actualGroup, false);\n        actualGroup.collapsed = true;\n        this.instance.removeClass(groupEl, CLASS_GROUP_EXPANDED);\n        this.instance.addClass(groupEl, CLASS_GROUP_COLLAPSED);\n        if (actualGroup.proxied) {\n          var collapsedConnectionIds = new Set();\n          var _collapseSet = function _collapseSet(conns, index) {\n            for (var i = 0; i < conns.length; i++) {\n              var c = conns[i];\n              if (_this4._collapseConnection(c, index, actualGroup) === true) {\n                collapsedConnectionIds.add(c.id);\n              }\n            }\n          };\n          _collapseSet(actualGroup.connections.source, 0);\n          _collapseSet(actualGroup.connections.target, 1);\n          forEach(actualGroup.getGroups(), function (cg) {\n            _this4.cascadeCollapse(actualGroup, cg, collapsedConnectionIds);\n          });\n        }\n        this.instance.revalidate(groupEl);\n        this.repaintGroup(actualGroup);\n        this.instance.fire(EVENT_GROUP_COLLAPSE, {\n          group: actualGroup\n        });\n      } else {\n        actualGroup.collapsed = true;\n        this.instance.removeClass(groupEl, CLASS_GROUP_EXPANDED);\n        this.instance.addClass(groupEl, CLASS_GROUP_COLLAPSED);\n      }\n    }\n  }, {\n    key: \"cascadeCollapse\",\n    value: function cascadeCollapse(collapsedGroup, targetGroup, collapsedIds) {\n      var _this5 = this;\n      if (collapsedGroup.proxied) {\n        var _collapseSet = function _collapseSet(conns, index) {\n          for (var i = 0; i < conns.length; i++) {\n            var c = conns[i];\n            if (!collapsedIds.has(c.id)) {\n              if (_this5._collapseConnection(c, index, collapsedGroup) === true) {\n                collapsedIds.add(c.id);\n              }\n            }\n          }\n        };\n        _collapseSet(targetGroup.connections.source, 0);\n        _collapseSet(targetGroup.connections.target, 1);\n      }\n      forEach(targetGroup.getGroups(), function (cg) {\n        _this5.cascadeCollapse(collapsedGroup, cg, collapsedIds);\n      });\n    }\n  }, {\n    key: \"expandGroup\",\n    value: function expandGroup(group, doNotFireEvent) {\n      var _this6 = this;\n      var actualGroup = this.getGroup(group);\n      if (actualGroup == null) {\n        return;\n      }\n      var groupEl = actualGroup.el;\n      if (actualGroup.collapseParent == null) {\n        this.instance.setGroupVisible(actualGroup, true);\n        actualGroup.collapsed = false;\n        this.instance.addClass(groupEl, CLASS_GROUP_EXPANDED);\n        this.instance.removeClass(groupEl, CLASS_GROUP_COLLAPSED);\n        if (actualGroup.proxied) {\n          var _expandSet = function _expandSet(conns, index) {\n            for (var i = 0; i < conns.length; i++) {\n              var c = conns[i];\n              _this6._expandConnection(c, index, actualGroup);\n            }\n          };\n          _expandSet(actualGroup.connections.source, 0);\n          _expandSet(actualGroup.connections.target, 1);\n          var _expandNestedGroup = function _expandNestedGroup(group, ignoreCollapsedStateForNested) {\n            if (ignoreCollapsedStateForNested || group.collapsed) {\n              var _collapseSet = function _collapseSet(conns, index) {\n                for (var i = 0; i < conns.length; i++) {\n                  var c = conns[i];\n                  _this6._collapseConnection(c, index, group.collapseParent || group);\n                }\n              };\n              _collapseSet(group.connections.source, 0);\n              _collapseSet(group.connections.target, 1);\n              forEach(group.connections.internal, function (c) {\n                return c.setVisible(false);\n              });\n              forEach(group.getGroups(), function (g) {\n                return _expandNestedGroup(g, true);\n              });\n            } else {\n              _this6.expandGroup(group, true);\n            }\n          };\n          forEach(actualGroup.getGroups(), _expandNestedGroup);\n        }\n        this.instance.revalidate(groupEl);\n        this.repaintGroup(actualGroup);\n        if (!doNotFireEvent) {\n          this.instance.fire(EVENT_GROUP_EXPAND, {\n            group: actualGroup\n          });\n        }\n      } else {\n        actualGroup.collapsed = false;\n        this.instance.addClass(groupEl, CLASS_GROUP_EXPANDED);\n        this.instance.removeClass(groupEl, CLASS_GROUP_COLLAPSED);\n      }\n    }\n  }, {\n    key: \"toggleGroup\",\n    value: function toggleGroup(group) {\n      group = this.getGroup(group);\n      if (group != null) {\n        if (group.collapsed) {\n          this.expandGroup(group);\n        } else {\n          this.collapseGroup(group);\n        }\n      }\n    }\n  }, {\n    key: \"repaintGroup\",\n    value: function repaintGroup(group) {\n      var actualGroup = this.getGroup(group);\n      var m = actualGroup.children;\n      for (var i = 0; i < m.length; i++) {\n        this.instance.revalidate(m[i].el);\n      }\n    }\n  }, {\n    key: \"addToGroup\",\n    value: function addToGroup(group, doNotFireEvent) {\n      var _this7 = this;\n      var actualGroup = this.getGroup(group);\n      if (actualGroup) {\n        var groupEl = actualGroup.el;\n        var _one = function _one(el) {\n          var jel = el;\n          var isGroup = jel._isJsPlumbGroup != null,\n              droppingGroup = jel._jsPlumbGroup;\n          var currentGroup = jel._jsPlumbParentGroup;\n          if (currentGroup !== actualGroup) {\n            var entry = _this7.instance.manage(el);\n            var elpos = _this7.instance.getOffset(el);\n            var cpos = actualGroup.collapsed ? _this7.instance.getOffsetRelativeToRoot(groupEl) : _this7.instance.getOffset(_this7.instance.getGroupContentArea(actualGroup));\n            entry.group = actualGroup.elId;\n            if (currentGroup != null) {\n              currentGroup.remove(el, false, doNotFireEvent, false, actualGroup);\n              _this7._updateConnectionsForGroup(currentGroup);\n            }\n            if (isGroup) {\n              actualGroup.addGroup(droppingGroup);\n            } else {\n              actualGroup.add(el, doNotFireEvent);\n            }\n            var handleDroppedConnections = function handleDroppedConnections(list, index) {\n              var oidx = index === 0 ? 1 : 0;\n              list.each(function (c) {\n                c.setVisible(false);\n                if (c.endpoints[oidx].element._jsPlumbGroup === actualGroup) {\n                  c.endpoints[oidx].setVisible(false);\n                  _this7._expandConnection(c, oidx, actualGroup);\n                } else {\n                  c.endpoints[index].setVisible(false);\n                  _this7._collapseConnection(c, index, actualGroup);\n                }\n              });\n            };\n            if (actualGroup.collapsed) {\n              handleDroppedConnections(_this7.instance.select({\n                source: el\n              }), 0);\n              handleDroppedConnections(_this7.instance.select({\n                target: el\n              }), 1);\n            }\n            _this7.instance.getId(el);\n            var newPosition = {\n              x: elpos.x - cpos.x,\n              y: elpos.y - cpos.y\n            };\n            _this7.instance.setPosition(el, newPosition);\n            _this7._updateConnectionsForGroup(actualGroup);\n            _this7.instance.revalidate(el);\n            if (!doNotFireEvent) {\n              var p = {\n                group: actualGroup,\n                el: el,\n                pos: newPosition\n              };\n              if (currentGroup) {\n                p.sourceGroup = currentGroup;\n              }\n              _this7.instance.fire(EVENT_GROUP_MEMBER_ADDED, p);\n            }\n          }\n        };\n        for (var _len = arguments.length, el = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n          el[_key - 2] = arguments[_key];\n        }\n        forEach(el, _one);\n      }\n    }\n  }, {\n    key: \"removeFromGroup\",\n    value: function removeFromGroup(group, doNotFireEvent) {\n      var _this8 = this;\n      var actualGroup = this.getGroup(group);\n      if (actualGroup) {\n        var _one = function _one(_el) {\n          if (actualGroup.collapsed) {\n            var _expandSet = function _expandSet(conns, index) {\n              for (var i = 0; i < conns.length; i++) {\n                var c = conns[i];\n                if (c.proxies) {\n                  for (var j = 0; j < c.proxies.length; j++) {\n                    if (c.proxies[j] != null) {\n                      var proxiedElement = c.proxies[j].originalEp.element;\n                      if (proxiedElement === _el || _this8.isElementDescendant(proxiedElement, _el)) {\n                        _this8._expandConnection(c, index, actualGroup);\n                      }\n                    }\n                  }\n                }\n              }\n            };\n            _expandSet(actualGroup.connections.source.slice(), 0);\n            _expandSet(actualGroup.connections.target.slice(), 1);\n          }\n          actualGroup.remove(_el, null, doNotFireEvent);\n          var entry = _this8.instance.getManagedElements()[_this8.instance.getId(_el)];\n          if (entry) {\n            delete entry.group;\n          }\n        };\n        for (var _len2 = arguments.length, el = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n          el[_key2 - 2] = arguments[_key2];\n        }\n        forEach(el, _one);\n      }\n    }\n  }, {\n    key: \"getAncestors\",\n    value: function getAncestors(group) {\n      var ancestors = [];\n      var p = group.group;\n      while (p != null) {\n        ancestors.push(p);\n        p = p.group;\n      }\n      return ancestors;\n    }\n  }, {\n    key: \"isAncestor\",\n    value: function isAncestor(group, possibleAncestor) {\n      if (group == null || possibleAncestor == null) {\n        return false;\n      }\n      return this.getAncestors(group).indexOf(possibleAncestor) !== -1;\n    }\n  }, {\n    key: \"getDescendants\",\n    value: function getDescendants(group) {\n      var d = [];\n      var _one = function _one(g) {\n        var childGroups = g.getGroups();\n        d.push.apply(d, _toConsumableArray(childGroups));\n        forEach(childGroups, _one);\n      };\n      _one(group);\n      return d;\n    }\n  }, {\n    key: \"isDescendant\",\n    value: function isDescendant(possibleDescendant, ancestor) {\n      if (possibleDescendant == null || ancestor == null) {\n        return false;\n      }\n      return this.getDescendants(ancestor).indexOf(possibleDescendant) !== -1;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this._connectionSourceMap = {};\n      this._connectionTargetMap = {};\n      this.groupMap = {};\n    }\n  }]);\n  return GroupManager;\n}();\n\nvar SelectionBase = function () {\n  function SelectionBase(instance, entries) {\n    _classCallCheck(this, SelectionBase);\n    this.instance = instance;\n    this.entries = entries;\n  }\n  _createClass(SelectionBase, [{\n    key: \"length\",\n    get: function get() {\n      return this.entries.length;\n    }\n  }, {\n    key: \"each\",\n    value: function each(handler) {\n      forEach(this.entries, function (e) {\n        return handler(e);\n      });\n      return this;\n    }\n  }, {\n    key: \"get\",\n    value: function get(index) {\n      return this.entries[index];\n    }\n  }, {\n    key: \"addClass\",\n    value: function addClass(clazz, cascade) {\n      this.each(function (c) {\n        return c.addClass(clazz, cascade);\n      });\n      return this;\n    }\n  }, {\n    key: \"removeClass\",\n    value: function removeClass(clazz, cascade) {\n      this.each(function (c) {\n        return c.removeClass(clazz, cascade);\n      });\n      return this;\n    }\n  }, {\n    key: \"removeAllOverlays\",\n    value: function removeAllOverlays() {\n      this.each(function (c) {\n        return c.removeAllOverlays();\n      });\n      return this;\n    }\n  }, {\n    key: \"setLabel\",\n    value: function setLabel(label) {\n      this.each(function (c) {\n        return c.setLabel(label);\n      });\n      return this;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.entries.length = 0;\n      return this;\n    }\n  }, {\n    key: \"map\",\n    value: function map(fn) {\n      var a = [];\n      this.each(function (e) {\n        return a.push(fn(e));\n      });\n      return a;\n    }\n  }, {\n    key: \"addOverlay\",\n    value: function addOverlay(spec) {\n      this.each(function (c) {\n        return c.addOverlay(spec);\n      });\n      return this;\n    }\n  }, {\n    key: \"removeOverlay\",\n    value: function removeOverlay(id) {\n      this.each(function (c) {\n        return c.removeOverlay(id);\n      });\n      return this;\n    }\n  }, {\n    key: \"removeOverlays\",\n    value: function removeOverlays() {\n      this.each(function (c) {\n        return c.removeOverlays();\n      });\n      return this;\n    }\n  }, {\n    key: \"showOverlay\",\n    value: function showOverlay(id) {\n      this.each(function (c) {\n        return c.showOverlay(id);\n      });\n      return this;\n    }\n  }, {\n    key: \"hideOverlay\",\n    value: function hideOverlay(id) {\n      this.each(function (c) {\n        return c.hideOverlay(id);\n      });\n      return this;\n    }\n  }, {\n    key: \"setPaintStyle\",\n    value: function setPaintStyle(style) {\n      this.each(function (c) {\n        return c.setPaintStyle(style);\n      });\n      return this;\n    }\n  }, {\n    key: \"setHoverPaintStyle\",\n    value: function setHoverPaintStyle(style) {\n      this.each(function (c) {\n        return c.setHoverPaintStyle(style);\n      });\n      return this;\n    }\n  }, {\n    key: \"setSuspendEvents\",\n    value: function setSuspendEvents(suspend) {\n      this.each(function (c) {\n        return c.setSuspendEvents(suspend);\n      });\n      return this;\n    }\n  }, {\n    key: \"setParameter\",\n    value: function setParameter(name, value) {\n      this.each(function (c) {\n        return c.parameters[name] = value;\n      });\n      return this;\n    }\n  }, {\n    key: \"setParameters\",\n    value: function setParameters(p) {\n      this.each(function (c) {\n        return c.parameters = p;\n      });\n      return this;\n    }\n  }, {\n    key: \"setVisible\",\n    value: function setVisible(v) {\n      this.each(function (c) {\n        return c.setVisible(v);\n      });\n      return this;\n    }\n  }, {\n    key: \"addType\",\n    value: function addType(name) {\n      this.each(function (c) {\n        return c.addType(name);\n      });\n      return this;\n    }\n  }, {\n    key: \"toggleType\",\n    value: function toggleType(name) {\n      this.each(function (c) {\n        return c.toggleType(name);\n      });\n      return this;\n    }\n  }, {\n    key: \"removeType\",\n    value: function removeType(name) {\n      this.each(function (c) {\n        return c.removeType(name);\n      });\n      return this;\n    }\n  }, {\n    key: \"bind\",\n    value: function bind(evt, handler) {\n      this.each(function (c) {\n        return c.bind(evt, handler);\n      });\n      return this;\n    }\n  }, {\n    key: \"unbind\",\n    value: function unbind(evt, handler) {\n      this.each(function (c) {\n        return c.unbind(evt, handler);\n      });\n      return this;\n    }\n  }, {\n    key: \"setHover\",\n    value: function setHover(h) {\n      var _this = this;\n      this.each(function (c) {\n        return _this.instance.setHover(c, h);\n      });\n      return this;\n    }\n  }]);\n  return SelectionBase;\n}();\n\nvar EndpointSelection = function (_SelectionBase) {\n  _inherits(EndpointSelection, _SelectionBase);\n  var _super = _createSuper(EndpointSelection);\n  function EndpointSelection() {\n    _classCallCheck(this, EndpointSelection);\n    return _super.apply(this, arguments);\n  }\n  _createClass(EndpointSelection, [{\n    key: \"setEnabled\",\n    value: function setEnabled(e) {\n      this.each(function (ep) {\n        return ep.enabled = e;\n      });\n      return this;\n    }\n  }, {\n    key: \"setAnchor\",\n    value: function setAnchor(a) {\n      this.each(function (ep) {\n        return ep.setAnchor(a);\n      });\n      return this;\n    }\n  }, {\n    key: \"deleteEveryConnection\",\n    value: function deleteEveryConnection() {\n      this.each(function (ep) {\n        return ep.deleteEveryConnection();\n      });\n      return this;\n    }\n  }, {\n    key: \"deleteAll\",\n    value: function deleteAll() {\n      var _this = this;\n      this.each(function (ep) {\n        return _this.instance.deleteEndpoint(ep);\n      });\n      this.clear();\n      return this;\n    }\n  }]);\n  return EndpointSelection;\n}(SelectionBase);\n\nvar ConnectionSelection = function (_SelectionBase) {\n  _inherits(ConnectionSelection, _SelectionBase);\n  var _super = _createSuper(ConnectionSelection);\n  function ConnectionSelection() {\n    _classCallCheck(this, ConnectionSelection);\n    return _super.apply(this, arguments);\n  }\n  _createClass(ConnectionSelection, [{\n    key: \"setDetachable\",\n    value: function setDetachable(d) {\n      this.each(function (c) {\n        return c.setDetachable(d);\n      });\n      return this;\n    }\n  }, {\n    key: \"setReattach\",\n    value: function setReattach(d) {\n      this.each(function (c) {\n        return c.setReattach(d);\n      });\n      return this;\n    }\n  }, {\n    key: \"setConnector\",\n    value: function setConnector(spec) {\n      this.each(function (c) {\n        return c._setConnector(spec);\n      });\n      return this;\n    }\n  }, {\n    key: \"deleteAll\",\n    value: function deleteAll() {\n      var _this = this;\n      this.each(function (c) {\n        return _this.instance.deleteConnection(c);\n      });\n      this.clear();\n    }\n  }, {\n    key: \"repaint\",\n    value: function repaint() {\n      var _this2 = this;\n      this.each(function (c) {\n        return _this2.instance._paintConnection(c);\n      });\n      return this;\n    }\n  }]);\n  return ConnectionSelection;\n}(SelectionBase);\n\nvar Transaction = function Transaction() {\n  _classCallCheck(this, Transaction);\n  _defineProperty(this, \"affectedElements\", new Set());\n};\nfunction EMPTY_POSITION() {\n  return {\n    x: 0,\n    y: 0,\n    w: 0,\n    h: 0,\n    r: 0,\n    c: {\n      x: 0,\n      y: 0\n    },\n    x2: 0,\n    y2: 0,\n    t: {\n      x: 0,\n      y: 0,\n      c: {\n        x: 0,\n        y: 0\n      },\n      w: 0,\n      h: 0,\n      r: 0,\n      x2: 0,\n      y2: 0,\n      cr: 0,\n      sr: 0\n    },\n    dirty: true\n  };\n}\nfunction rotate(x, y, w, h, r) {\n  var center = {\n    x: x + w / 2,\n    y: y + h / 2\n  },\n      cr = Math.cos(r / 360 * Math.PI * 2),\n      sr = Math.sin(r / 360 * Math.PI * 2),\n      _point = function _point(x, y) {\n    return {\n      x: center.x + Math.round((x - center.x) * cr - (y - center.y) * sr),\n      y: center.y + Math.round((y - center.y) * cr - (x - center.x) * sr)\n    };\n  };\n  var p1 = _point(x, y),\n      p2 = _point(x + w, y),\n      p3 = _point(x + w, y + h),\n      p4 = _point(x, y + h),\n      c = _point(x + w / 2, y + h / 2);\n  var xmin = Math.min(p1.x, p2.x, p3.x, p4.x),\n      xmax = Math.max(p1.x, p2.x, p3.x, p4.x),\n      ymin = Math.min(p1.y, p2.y, p3.y, p4.y),\n      ymax = Math.max(p1.y, p2.y, p3.y, p4.y);\n  return {\n    x: xmin,\n    y: ymin,\n    w: xmax - xmin,\n    h: ymax - ymin,\n    c: c,\n    r: r,\n    x2: xmax,\n    y2: ymax,\n    cr: cr,\n    sr: sr\n  };\n}\nvar entryComparator = function entryComparator(value, arrayEntry) {\n  var c = 0;\n  if (arrayEntry[1] > value[1]) {\n    c = -1;\n  } else if (arrayEntry[1] < value[1]) {\n    c = 1;\n  }\n  return c;\n};\nvar reverseEntryComparator = function reverseEntryComparator(value, arrayEntry) {\n  return entryComparator(value, arrayEntry) * -1;\n};\nfunction _updateElementIndex(id, value, array, sortDescending) {\n  insertSorted([id, value], array, entryComparator, sortDescending);\n}\nfunction _clearElementIndex(id, array) {\n  var idx = findWithFunction(array, function (entry) {\n    return entry[0] === id;\n  });\n  if (idx > -1) {\n    array.splice(idx, 1);\n  }\n}\nvar Viewport = function (_EventGenerator) {\n  _inherits(Viewport, _EventGenerator);\n  var _super = _createSuper(Viewport);\n  function Viewport(instance) {\n    var _this;\n    _classCallCheck(this, Viewport);\n    _this = _super.call(this);\n    _this.instance = instance;\n    _defineProperty(_assertThisInitialized(_this), \"_currentTransaction\", null);\n    _defineProperty(_assertThisInitialized(_this), \"_sortedElements\", {\n      xmin: [],\n      xmax: [],\n      ymin: [],\n      ymax: []\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_elementMap\", new Map());\n    _defineProperty(_assertThisInitialized(_this), \"_transformedElementMap\", new Map());\n    _defineProperty(_assertThisInitialized(_this), \"_bounds\", {\n      minx: 0,\n      maxx: 0,\n      miny: 0,\n      maxy: 0\n    });\n    return _this;\n  }\n  _createClass(Viewport, [{\n    key: \"_updateBounds\",\n    value: function _updateBounds(id, updatedElement, doNotRecalculateBounds) {\n      if (updatedElement != null) {\n        _clearElementIndex(id, this._sortedElements.xmin);\n        _clearElementIndex(id, this._sortedElements.xmax);\n        _clearElementIndex(id, this._sortedElements.ymin);\n        _clearElementIndex(id, this._sortedElements.ymax);\n        _updateElementIndex(id, updatedElement.t.x, this._sortedElements.xmin, false);\n        _updateElementIndex(id, updatedElement.t.x + updatedElement.t.w, this._sortedElements.xmax, true);\n        _updateElementIndex(id, updatedElement.t.y, this._sortedElements.ymin, false);\n        _updateElementIndex(id, updatedElement.t.y + updatedElement.t.h, this._sortedElements.ymax, true);\n        if (doNotRecalculateBounds !== true) {\n          this._recalculateBounds();\n        }\n      }\n    }\n  }, {\n    key: \"_recalculateBounds\",\n    value: function _recalculateBounds() {\n      this._bounds.minx = this._sortedElements.xmin.length > 0 ? this._sortedElements.xmin[0][1] : 0;\n      this._bounds.maxx = this._sortedElements.xmax.length > 0 ? this._sortedElements.xmax[0][1] : 0;\n      this._bounds.miny = this._sortedElements.ymin.length > 0 ? this._sortedElements.ymin[0][1] : 0;\n      this._bounds.maxy = this._sortedElements.ymax.length > 0 ? this._sortedElements.ymax[0][1] : 0;\n    }\n  }, {\n    key: \"recomputeBounds\",\n    value: function recomputeBounds() {\n      var _this2 = this;\n      this._sortedElements.xmin.length = 0;\n      this._sortedElements.xmax.length = 0;\n      this._sortedElements.ymin.length = 0;\n      this._sortedElements.ymax.length = 0;\n      this._elementMap.forEach(function (vp, id) {\n        _this2._sortedElements.xmin.push([id, vp.t.x]);\n        _this2._sortedElements.xmax.push([id, vp.t.x + vp.t.w]);\n        _this2._sortedElements.ymin.push([id, vp.t.y]);\n        _this2._sortedElements.ymax.push([id, vp.t.y + vp.t.h]);\n      });\n      this._sortedElements.xmin.sort(entryComparator);\n      this._sortedElements.ymin.sort(entryComparator);\n      this._sortedElements.xmax.sort(reverseEntryComparator);\n      this._sortedElements.ymax.sort(reverseEntryComparator);\n      this._recalculateBounds();\n    }\n  }, {\n    key: \"_finaliseUpdate\",\n    value: function _finaliseUpdate(id, e, doNotRecalculateBounds) {\n      e.t = rotate(e.x, e.y, e.w, e.h, e.r);\n      this._transformedElementMap.set(id, e.t);\n      if (doNotRecalculateBounds !== true) {\n        this._updateBounds(id, e, doNotRecalculateBounds);\n      }\n    }\n  }, {\n    key: \"shouldFireEvent\",\n    value: function shouldFireEvent(event, value, originalEvent) {\n      return true;\n    }\n  }, {\n    key: \"startTransaction\",\n    value: function startTransaction() {\n      if (this._currentTransaction != null) {\n        throw new Error(\"Viewport: cannot start transaction; a transaction is currently active.\");\n      }\n      this._currentTransaction = new Transaction();\n    }\n  }, {\n    key: \"endTransaction\",\n    value: function endTransaction() {\n      var _this3 = this;\n      if (this._currentTransaction != null) {\n        this._currentTransaction.affectedElements.forEach(function (id) {\n          var entry = _this3.getPosition(id);\n          _this3._finaliseUpdate(id, entry, true);\n        });\n        this.recomputeBounds();\n        this._currentTransaction = null;\n      }\n    }\n  }, {\n    key: \"updateElements\",\n    value: function updateElements(entries) {\n      var _this4 = this;\n      forEach(entries, function (e) {\n        return _this4.updateElement(e.id, e.x, e.y, e.width, e.height, e.rotation);\n      });\n    }\n  }, {\n    key: \"updateElement\",\n    value: function updateElement(id, x, y, width, height, rotation, doNotRecalculateBounds) {\n      var e = getsert(this._elementMap, id, EMPTY_POSITION);\n      e.dirty = x == null && e.x == null || y == null && e.y == null || width == null && e.w == null || height == null && e.h == null;\n      if (x != null) {\n        e.x = x;\n      }\n      if (y != null) {\n        e.y = y;\n      }\n      if (width != null) {\n        e.w = width;\n      }\n      if (height != null) {\n        e.h = height;\n      }\n      if (rotation != null) {\n        e.r = rotation || 0;\n      }\n      e.c.x = e.x + e.w / 2;\n      e.c.y = e.y + e.h / 2;\n      e.x2 = e.x + e.w;\n      e.y2 = e.y + e.h;\n      if (this._currentTransaction == null) {\n        this._finaliseUpdate(id, e, doNotRecalculateBounds);\n      } else {\n        this._currentTransaction.affectedElements.add(id);\n      }\n      return e;\n    }\n  }, {\n    key: \"refreshElement\",\n    value: function refreshElement(elId, doNotRecalculateBounds) {\n      var me = this.instance.getManagedElements();\n      var s = me[elId] ? me[elId].el : null;\n      if (s != null) {\n        var size = this.getSize(s);\n        var offset = this.getOffset(s);\n        return this.updateElement(elId, offset.x, offset.y, size.w, size.h, null, doNotRecalculateBounds);\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: \"getSize\",\n    value: function getSize(el) {\n      return this.instance.getSize(el);\n    }\n  }, {\n    key: \"getOffset\",\n    value: function getOffset(el) {\n      return this.instance.getOffset(el);\n    }\n  }, {\n    key: \"registerElement\",\n    value: function registerElement(id, doNotRecalculateBounds) {\n      return this.updateElement(id, 0, 0, 0, 0, 0, doNotRecalculateBounds);\n    }\n  }, {\n    key: \"addElement\",\n    value: function addElement(id, x, y, width, height, rotation) {\n      return this.updateElement(id, x, y, width, height, rotation);\n    }\n  }, {\n    key: \"rotateElement\",\n    value: function rotateElement(id, rotation) {\n      var e = getsert(this._elementMap, id, EMPTY_POSITION);\n      e.r = rotation || 0;\n      this._finaliseUpdate(id, e);\n      return e;\n    }\n  }, {\n    key: \"getBoundsWidth\",\n    value: function getBoundsWidth() {\n      return this._bounds.maxx - this._bounds.minx;\n    }\n  }, {\n    key: \"getBoundsHeight\",\n    value: function getBoundsHeight() {\n      return this._bounds.maxy - this._bounds.miny;\n    }\n  }, {\n    key: \"getX\",\n    value: function getX() {\n      return this._bounds.minx;\n    }\n  }, {\n    key: \"getY\",\n    value: function getY() {\n      return this._bounds.miny;\n    }\n  }, {\n    key: \"setSize\",\n    value: function setSize(id, w, h) {\n      if (this._elementMap.has(id)) {\n        return this.updateElement(id, null, null, w, h, null);\n      }\n    }\n  }, {\n    key: \"setPosition\",\n    value: function setPosition(id, x, y) {\n      if (this._elementMap.has(id)) {\n        return this.updateElement(id, x, y, null, null, null);\n      }\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this._sortedElements.xmin.length = 0;\n      this._sortedElements.xmax.length = 0;\n      this._sortedElements.ymin.length = 0;\n      this._sortedElements.ymax.length = 0;\n      this._elementMap.clear();\n      this._transformedElementMap.clear();\n      this._recalculateBounds();\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(id) {\n      _clearElementIndex(id, this._sortedElements.xmin);\n      _clearElementIndex(id, this._sortedElements.xmax);\n      _clearElementIndex(id, this._sortedElements.ymin);\n      _clearElementIndex(id, this._sortedElements.ymax);\n      this._elementMap[\"delete\"](id);\n      this._transformedElementMap[\"delete\"](id);\n      this._recalculateBounds();\n    }\n  }, {\n    key: \"getPosition\",\n    value: function getPosition(id) {\n      return this._elementMap.get(id);\n    }\n  }, {\n    key: \"getElements\",\n    value: function getElements() {\n      return this._elementMap;\n    }\n  }, {\n    key: \"isEmpty\",\n    value: function isEmpty() {\n      return this._elementMap.size === 0;\n    }\n  }]);\n  return Viewport;\n}(EventGenerator);\n\nvar _edgeSortFunctions;\nfunction _placeAnchorsOnLine(element, connections, horizontal, otherMultiplier, reverse) {\n  var sizeInAxis = horizontal ? element.w : element.h;\n  var sizeInOtherAxis = horizontal ? element.h : element.w;\n  var a = [],\n      step = sizeInAxis / (connections.length + 1);\n  for (var i = 0; i < connections.length; i++) {\n    var val = (i + 1) * step,\n        other = otherMultiplier * sizeInOtherAxis;\n    if (reverse) {\n      val = sizeInAxis - val;\n    }\n    var dx = horizontal ? val : other,\n        x = element.x + dx,\n        xp = dx / element.w;\n    var dy = horizontal ? other : val,\n        y = element.y + dy,\n        yp = dy / element.h;\n    if (element.r !== 0 && element.r != null) {\n      var rotated = rotatePoint({\n        x: x,\n        y: y\n      }, element.c, element.r);\n      x = rotated.x;\n      y = rotated.y;\n    }\n    a.push({\n      x: x,\n      y: y,\n      xLoc: xp,\n      yLoc: yp,\n      c: connections[i].c\n    });\n  }\n  return a;\n}\nfunction _rightAndBottomSort(a, b) {\n  return b.theta - a.theta;\n}\nfunction _leftAndTopSort(a, b) {\n  var p1 = a.theta < 0 ? -Math.PI - a.theta : Math.PI - a.theta,\n      p2 = b.theta < 0 ? -Math.PI - b.theta : Math.PI - b.theta;\n  return p1 - p2;\n}\nvar edgeSortFunctions = (_edgeSortFunctions = {}, _defineProperty(_edgeSortFunctions, TOP, _leftAndTopSort), _defineProperty(_edgeSortFunctions, RIGHT, _rightAndBottomSort), _defineProperty(_edgeSortFunctions, BOTTOM, _rightAndBottomSort), _defineProperty(_edgeSortFunctions, LEFT, _leftAndTopSort), _edgeSortFunctions);\nfunction isContinuous(a) {\n  return a.isContinuous === true;\n}\nfunction _isFloating(a) {\n  return a.isContinuous === true;\n}\nfunction isDynamic(a) {\n  return a.locations.length > 1;\n}\nfunction getCurrentLocation(anchor) {\n  return [anchor.currentLocation, anchor.locations[anchor.currentLocation]];\n}\nvar LightweightRouter = function () {\n  function LightweightRouter(instance) {\n    var _this = this;\n    _classCallCheck(this, LightweightRouter);\n    this.instance = instance;\n    _defineProperty(this, \"anchorLists\", new Map());\n    _defineProperty(this, \"anchorLocations\", new Map());\n    instance.bind(EVENT_INTERNAL_CONNECTION_DETACHED, function (p) {\n      if (p.sourceEndpoint._anchor.isContinuous) {\n        _this._removeEndpointFromAnchorLists(p.sourceEndpoint);\n      }\n      if (p.targetEndpoint._anchor.isContinuous) {\n        _this._removeEndpointFromAnchorLists(p.targetEndpoint);\n      }\n    });\n    instance.bind(EVENT_INTERNAL_ENDPOINT_UNREGISTERED, function (ep) {\n      _this._removeEndpointFromAnchorLists(ep);\n    });\n  }\n  _createClass(LightweightRouter, [{\n    key: \"getAnchorOrientation\",\n    value: function getAnchorOrientation(anchor) {\n      var loc = this.anchorLocations.get(anchor.id);\n      return loc ? [loc.ox, loc.oy] : [0, 0];\n    }\n  }, {\n    key: \"_distance\",\n    value: function _distance(anchor, cx, cy, xy, wh, rotation, targetRotation) {\n      var ax = xy.x + anchor.x * wh.w,\n          ay = xy.y + anchor.y * wh.h,\n          acx = xy.x + wh.w / 2,\n          acy = xy.y + wh.h / 2;\n      if (rotation != null && rotation.length > 0) {\n        var rotated = this.instance._applyRotations([ax, ay, 0, 0], rotation);\n        ax = rotated.x;\n        ay = rotated.y;\n      }\n      return Math.sqrt(Math.pow(cx - ax, 2) + Math.pow(cy - ay, 2)) + Math.sqrt(Math.pow(acx - ax, 2) + Math.pow(acy - ay, 2));\n    }\n  }, {\n    key: \"_anchorSelector\",\n    value: function _anchorSelector(xy, wh, txy, twh, rotation, targetRotation, locations) {\n      var cx = txy.x + twh.w / 2,\n          cy = txy.y + twh.h / 2;\n      var minIdx = -1,\n          minDist = Infinity;\n      for (var i = 0; i < locations.length; i++) {\n        var d = this._distance(locations[i], cx, cy, xy, wh, rotation, targetRotation);\n        if (d < minDist) {\n          minIdx = i + 0;\n          minDist = d;\n        }\n      }\n      return [minIdx, locations[minIdx]];\n    }\n  }, {\n    key: \"_floatingAnchorCompute\",\n    value: function _floatingAnchorCompute(anchor, params) {\n      var xy = params.xy;\n      var pos = {\n        curX: xy.x + anchor.size.w / 2,\n        curY: xy.y + anchor.size.h / 2,\n        x: 0,\n        y: 0,\n        ox: 0,\n        oy: 0\n      };\n      return this._setComputedPosition(anchor, pos);\n    }\n  }, {\n    key: \"_setComputedPosition\",\n    value: function _setComputedPosition(anchor, pos, timestamp) {\n      this.anchorLocations.set(anchor.id, pos);\n      anchor.computedPosition = pos;\n      if (timestamp) {\n        anchor.timestamp = timestamp;\n      }\n      return pos;\n    }\n  }, {\n    key: \"_computeSingleLocation\",\n    value: function _computeSingleLocation(loc, xy, wh, params) {\n      var pos;\n      var rotation = params.rotation;\n      var candidate = {\n        curX: xy.x + loc.x * wh.w + loc.offx,\n        curY: xy.y + loc.y * wh.h + loc.offy,\n        x: loc.x,\n        y: loc.y,\n        ox: 0,\n        oy: 0\n      };\n      if (rotation != null && rotation.length > 0) {\n        var o = [loc.iox, loc.ioy],\n            current = {\n          x: candidate.curX,\n          y: candidate.curY,\n          cr: 0,\n          sr: 0\n        };\n        forEach(rotation, function (r) {\n          current = rotatePoint(current, r.c, r.r);\n          var _o = [Math.round(o[0] * current.cr - o[1] * current.sr), Math.round(o[1] * current.cr + o[0] * current.sr)];\n          o = _o.slice();\n        });\n        loc.ox = o[0];\n        loc.oy = o[1];\n        pos = {\n          curX: current.x,\n          curY: current.y,\n          x: loc.x,\n          y: loc.y,\n          ox: o[0],\n          oy: o[1]\n        };\n      } else {\n        loc.ox = loc.iox;\n        loc.oy = loc.ioy;\n        pos = extend({\n          ox: loc.iox,\n          oy: loc.ioy\n        }, candidate);\n      }\n      return pos;\n    }\n  }, {\n    key: \"_singleAnchorCompute\",\n    value: function _singleAnchorCompute(anchor, params) {\n      var xy = params.xy,\n          wh = params.wh,\n          timestamp = params.timestamp,\n          pos = this.anchorLocations.get(anchor.id);\n      if (pos != null && timestamp && timestamp === anchor.timestamp) {\n        return pos;\n      }\n      var _getCurrentLocation = getCurrentLocation(anchor),\n          _getCurrentLocation2 = _slicedToArray(_getCurrentLocation, 2);\n          _getCurrentLocation2[0];\n          var currentLoc = _getCurrentLocation2[1];\n      pos = this._computeSingleLocation(currentLoc, xy, wh, params);\n      return this._setComputedPosition(anchor, pos, timestamp);\n    }\n  }, {\n    key: \"_defaultAnchorCompute\",\n    value: function _defaultAnchorCompute(anchor, params) {\n      var pos;\n      if (anchor.locations.length === 1) {\n        return this._singleAnchorCompute(anchor, params);\n      }\n      var xy = params.xy,\n          wh = params.wh,\n          txy = params.txy,\n          twh = params.twh;\n      var _getCurrentLocation3 = getCurrentLocation(anchor),\n          _getCurrentLocation4 = _slicedToArray(_getCurrentLocation3, 2),\n          currentIdx = _getCurrentLocation4[0],\n          currentLoc = _getCurrentLocation4[1];\n      if (anchor.locked || txy == null || twh == null) {\n        pos = this._computeSingleLocation(currentLoc, xy, wh, params);\n      } else {\n        var _this$_anchorSelector = this._anchorSelector(xy, wh, txy, twh, params.rotation, params.tRotation, anchor.locations),\n            _this$_anchorSelector2 = _slicedToArray(_this$_anchorSelector, 2),\n            newIdx = _this$_anchorSelector2[0],\n            newLoc = _this$_anchorSelector2[1];\n        anchor.currentLocation = newIdx;\n        if (newIdx !== currentIdx) {\n          anchor.cssClass = newLoc.cls || anchor.cssClass;\n          params.element._anchorLocationChanged(anchor);\n        }\n        pos = this._computeSingleLocation(newLoc, xy, wh, params);\n      }\n      return this._setComputedPosition(anchor, pos, params.timestamp);\n    }\n  }, {\n    key: \"_placeAnchors\",\n    value: function _placeAnchors(elementId, _anchorLists) {\n      var _this2 = this;\n      var cd = this.instance.viewport.getPosition(elementId),\n          placeSomeAnchors = function placeSomeAnchors(desc, element, unsortedConnections, isHorizontal, otherMultiplier, orientation) {\n        if (unsortedConnections.length > 0) {\n          var sc = unsortedConnections.sort(edgeSortFunctions[desc]),\n          reverse = desc === RIGHT || desc === TOP,\n              anchors = _placeAnchorsOnLine(cd, sc, isHorizontal, otherMultiplier, reverse);\n          for (var i = 0; i < anchors.length; i++) {\n            var c = anchors[i].c,\n                weAreSource = c.endpoints[0].elementId === elementId,\n                ep = weAreSource ? c.endpoints[0] : c.endpoints[1];\n            _this2._setComputedPosition(ep._anchor, {\n              curX: anchors[i].x,\n              curY: anchors[i].y,\n              x: anchors[i].xLoc,\n              y: anchors[i].yLoc,\n              ox: orientation[0],\n              oy: orientation[1]\n            });\n          }\n        }\n      };\n      placeSomeAnchors(BOTTOM, cd, _anchorLists.bottom, true, 1, [0, 1]);\n      placeSomeAnchors(TOP, cd, _anchorLists.top, true, 0, [0, -1]);\n      placeSomeAnchors(LEFT, cd, _anchorLists.left, false, 0, [-1, 0]);\n      placeSomeAnchors(RIGHT, cd, _anchorLists.right, false, 1, [1, 0]);\n    }\n  }, {\n    key: \"_updateAnchorList\",\n    value: function _updateAnchorList(lists, theta, order, conn, aBoolean, otherElId, idx, reverse, edgeId, connsToPaint, endpointsToPaint) {\n      var endpoint = conn.endpoints[idx],\n          endpointId = endpoint.id,\n          oIdx = [1, 0][idx],\n          values = {\n        theta: theta,\n        order: order,\n        c: conn,\n        b: aBoolean,\n        elId: otherElId,\n        epId: endpointId\n      },\n          listToAddTo = lists[edgeId],\n          listToRemoveFrom = endpoint._continuousAnchorEdge ? lists[endpoint._continuousAnchorEdge] : null,\n          candidate;\n      if (listToRemoveFrom) {\n        var rIdx = findWithFunction(listToRemoveFrom, function (e) {\n          return e.epId === endpointId;\n        });\n        if (rIdx !== -1) {\n          listToRemoveFrom.splice(rIdx, 1);\n          for (var i = 0; i < listToRemoveFrom.length; i++) {\n            candidate = listToRemoveFrom[i].c;\n            if (candidate.placeholder !== true) {\n              connsToPaint.add(candidate);\n            }\n            endpointsToPaint.add(listToRemoveFrom[i].c.endpoints[idx]);\n            endpointsToPaint.add(listToRemoveFrom[i].c.endpoints[oIdx]);\n          }\n        }\n      }\n      for (var _i = 0; _i < listToAddTo.length; _i++) {\n        candidate = listToAddTo[_i].c;\n        if (candidate.placeholder !== true) {\n          connsToPaint.add(candidate);\n        }\n        endpointsToPaint.add(listToAddTo[_i].c.endpoints[idx]);\n        endpointsToPaint.add(listToAddTo[_i].c.endpoints[oIdx]);\n      }\n      {\n        var insertIdx = reverse ? 0 : listToAddTo.length;\n        listToAddTo.splice(insertIdx, 0, values);\n      }\n      endpoint._continuousAnchorEdge = edgeId;\n    }\n  }, {\n    key: \"_removeEndpointFromAnchorLists\",\n    value: function _removeEndpointFromAnchorLists(endpoint) {\n      var listsForElement = this.anchorLists.get(endpoint.elementId);\n      var total = 0;\n      (function (list, eId) {\n        if (list) {\n          var f = function f(e) {\n            return e.epId === eId;\n          };\n          removeWithFunction(list.top, f);\n          removeWithFunction(list.left, f);\n          removeWithFunction(list.bottom, f);\n          removeWithFunction(list.right, f);\n          total += list.top.length;\n          total += list.left.length;\n          total += list.bottom.length;\n          total += list.right.length;\n        }\n      })(listsForElement, endpoint.id);\n      if (total === 0) {\n        this.anchorLists[\"delete\"](endpoint.elementId);\n      }\n      this.anchorLocations[\"delete\"](endpoint._anchor.id);\n    }\n  }, {\n    key: \"computeAnchorLocation\",\n    value: function computeAnchorLocation(anchor, params) {\n      var pos;\n      if (isContinuous(anchor)) {\n        pos = this.anchorLocations.get(anchor.id) || {\n          curX: 0,\n          curY: 0,\n          x: 0,\n          y: 0,\n          ox: 0,\n          oy: 0\n        };\n      } else if (_isFloating(anchor)) {\n        pos = this._floatingAnchorCompute(anchor, params);\n      } else {\n        pos = this._defaultAnchorCompute(anchor, params);\n      }\n      anchor.timestamp = params.timestamp;\n      return pos;\n    }\n  }, {\n    key: \"computePath\",\n    value: function computePath(connection, timestamp) {\n      var sourceInfo = this.instance.viewport.getPosition(connection.sourceId),\n          targetInfo = this.instance.viewport.getPosition(connection.targetId),\n          sE = connection.endpoints[0],\n          tE = connection.endpoints[1];\n      var sAnchorP = this.getEndpointLocation(sE, {\n        xy: sourceInfo,\n        wh: sourceInfo,\n        element: sE,\n        timestamp: timestamp,\n        rotation: this.instance._getRotations(connection.sourceId)\n      }),\n          tAnchorP = this.getEndpointLocation(tE, {\n        xy: targetInfo,\n        wh: targetInfo,\n        element: tE,\n        timestamp: timestamp,\n        rotation: this.instance._getRotations(connection.targetId)\n      });\n      connection.connector.resetBounds();\n      connection.connector.compute({\n        sourcePos: sAnchorP,\n        targetPos: tAnchorP,\n        sourceEndpoint: connection.endpoints[0],\n        targetEndpoint: connection.endpoints[1],\n        strokeWidth: connection.paintStyleInUse.strokeWidth,\n        sourceInfo: sourceInfo,\n        targetInfo: targetInfo\n      });\n    }\n  }, {\n    key: \"getEndpointLocation\",\n    value: function getEndpointLocation(endpoint, params) {\n      params = params || {};\n      var anchor = endpoint._anchor;\n      var pos = this.anchorLocations.get(anchor.id);\n      if (pos == null || params.timestamp != null && anchor.timestamp !== params.timestamp) {\n        pos = this.computeAnchorLocation(anchor, params);\n        this._setComputedPosition(anchor, pos, params.timestamp);\n      }\n      return pos;\n    }\n  }, {\n    key: \"getEndpointOrientation\",\n    value: function getEndpointOrientation(ep) {\n      return ep._anchor ? this.getAnchorOrientation(ep._anchor) : [0, 0];\n    }\n  }, {\n    key: \"setAnchorOrientation\",\n    value: function setAnchorOrientation(anchor, orientation) {\n      var anchorLoc = this.anchorLocations.get(anchor.id);\n      if (anchorLoc != null) {\n        anchorLoc.ox = orientation[0];\n        anchorLoc.oy = orientation[1];\n      }\n    }\n  }, {\n    key: \"isDynamicAnchor\",\n    value: function isDynamicAnchor(ep) {\n      return ep._anchor ? !isContinuous(ep._anchor) && ep._anchor.locations.length > 1 : false;\n    }\n  }, {\n    key: \"isFloating\",\n    value: function isFloating(ep) {\n      return ep._anchor ? _isFloating(ep._anchor) : false;\n    }\n  }, {\n    key: \"prepareAnchor\",\n    value: function prepareAnchor(params) {\n      return makeLightweightAnchorFromSpec(params);\n    }\n  }, {\n    key: \"redraw\",\n    value: function redraw(elementId, timestamp, offsetToUI) {\n      var _this3 = this;\n      var connectionsToPaint = new Set(),\n          endpointsToPaint = new Set(),\n          anchorsToUpdate = new Set();\n      if (!this.instance._suspendDrawing) {\n        var ep = this.instance.endpointsByElement[elementId] || [];\n        timestamp = timestamp || uuid();\n        var orientationCache = {},\n            a,\n            anEndpoint;\n        for (var i = 0; i < ep.length; i++) {\n          anEndpoint = ep[i];\n          if (anEndpoint.visible === false) {\n            continue;\n          }\n          endpointsToPaint.add(anEndpoint);\n          a = anEndpoint._anchor;\n          if (anEndpoint.connections.length === 0) {\n            if (isContinuous(a)) {\n              if (!this.anchorLists.has(elementId)) {\n                this.anchorLists.set(elementId, {\n                  top: [],\n                  right: [],\n                  bottom: [],\n                  left: []\n                });\n              }\n              this._updateAnchorList(this.anchorLists.get(elementId), -Math.PI / 2, 0, {\n                endpoints: [anEndpoint, anEndpoint],\n                placeholder: true\n              }, false, elementId, 0, false, getDefaultFace(a), connectionsToPaint, endpointsToPaint);\n              anchorsToUpdate.add(elementId);\n            }\n          } else {\n            for (var _i2 = 0; _i2 < anEndpoint.connections.length; _i2++) {\n              var conn = anEndpoint.connections[_i2],\n                  sourceId = conn.sourceId,\n                  targetId = conn.targetId,\n                  sourceContinuous = isContinuous(conn.endpoints[0]._anchor),\n                  targetContinuous = isContinuous(conn.endpoints[1]._anchor);\n              if (sourceContinuous || targetContinuous) {\n                var c1 = (conn.endpoints[0]._anchor.faces || []).join(\"-\"),\n                    c2 = (conn.endpoints[1]._anchor.faces || []).join(\"-\"),\n                    oKey = [sourceId, c1, targetId, c2].join(\"-\"),\n                    o = orientationCache[oKey],\n                    oIdx = conn.sourceId === elementId ? 1 : 0;\n                if (sourceContinuous && !this.anchorLists.has(sourceId)) {\n                  this.anchorLists.set(sourceId, {\n                    top: [],\n                    right: [],\n                    bottom: [],\n                    left: []\n                  });\n                }\n                if (targetContinuous && !this.anchorLists.has(targetId)) {\n                  this.anchorLists.set(targetId, {\n                    top: [],\n                    right: [],\n                    bottom: [],\n                    left: []\n                  });\n                }\n                var td = this.instance.viewport.getPosition(targetId),\n                    sd = this.instance.viewport.getPosition(sourceId);\n                if (targetId === sourceId && (sourceContinuous || targetContinuous)) {\n                  this._updateAnchorList(this.anchorLists.get(sourceId), -Math.PI / 2, 0, conn, false, targetId, 0, false, TOP, connectionsToPaint, endpointsToPaint);\n                  this._updateAnchorList(this.anchorLists.get(targetId), -Math.PI / 2, 0, conn, false, sourceId, 1, false, TOP, connectionsToPaint, endpointsToPaint);\n                } else {\n                  var sourceRotation = this.instance._getRotations(sourceId);\n                  var targetRotation = this.instance._getRotations(targetId);\n                  if (!o) {\n                    o = this._calculateOrientation(sourceId, targetId, sd, td, conn.endpoints[0]._anchor, conn.endpoints[1]._anchor, sourceRotation, targetRotation);\n                    orientationCache[oKey] = o;\n                  }\n                  if (sourceContinuous) {\n                    this._updateAnchorList(this.anchorLists.get(sourceId), o.theta, 0, conn, false, targetId, 0, false, o.a[0], connectionsToPaint, endpointsToPaint);\n                  }\n                  if (targetContinuous) {\n                    this._updateAnchorList(this.anchorLists.get(targetId), o.theta2, -1, conn, true, sourceId, 1, true, o.a[1], connectionsToPaint, endpointsToPaint);\n                  }\n                }\n                if (sourceContinuous) {\n                  anchorsToUpdate.add(sourceId);\n                }\n                if (targetContinuous) {\n                  anchorsToUpdate.add(targetId);\n                }\n                connectionsToPaint.add(conn);\n                if (sourceContinuous && oIdx === 0 || targetContinuous && oIdx === 1) {\n                  endpointsToPaint.add(conn.endpoints[oIdx]);\n                }\n              } else {\n                var otherEndpoint = anEndpoint.connections[_i2].endpoints[conn.sourceId === elementId ? 1 : 0],\n                    otherAnchor = otherEndpoint._anchor;\n                if (isDynamic(otherAnchor)) {\n                  this.instance._paintEndpoint(otherEndpoint, {\n                    elementWithPrecedence: elementId,\n                    timestamp: timestamp\n                  });\n                  connectionsToPaint.add(anEndpoint.connections[_i2]);\n                  for (var k = 0; k < otherEndpoint.connections.length; k++) {\n                    if (otherEndpoint.connections[k] !== anEndpoint.connections[_i2]) {\n                      connectionsToPaint.add(otherEndpoint.connections[k]);\n                    }\n                  }\n                } else {\n                  connectionsToPaint.add(anEndpoint.connections[_i2]);\n                }\n              }\n            }\n          }\n        }\n        anchorsToUpdate.forEach(function (anchor) {\n          _this3._placeAnchors(anchor, _this3.anchorLists.get(anchor));\n        });\n        endpointsToPaint.forEach(function (ep) {\n          var cd = _this3.instance.viewport.getPosition(ep.elementId);\n          _this3.instance._paintEndpoint(ep, {\n            timestamp: timestamp,\n            offset: cd\n          });\n        });\n        connectionsToPaint.forEach(function (c) {\n          _this3.instance._paintConnection(c, {\n            timestamp: timestamp\n          });\n        });\n      }\n      return {\n        c: connectionsToPaint,\n        e: endpointsToPaint\n      };\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.anchorLocations.clear();\n      this.anchorLists.clear();\n    }\n  }, {\n    key: \"setAnchor\",\n    value: function setAnchor(endpoint, anchor) {\n      if (anchor != null) {\n        endpoint._anchor = anchor;\n      }\n    }\n  }, {\n    key: \"setConnectionAnchors\",\n    value: function setConnectionAnchors(conn, anchors) {\n      conn.endpoints[0]._anchor = anchors[0];\n      conn.endpoints[1]._anchor = anchors[1];\n    }\n  }, {\n    key: \"_calculateOrientation\",\n    value: function _calculateOrientation(sourceId, targetId, sd, td, sourceAnchor, targetAnchor, sourceRotation, targetRotation) {\n      var _this4 = this;\n      var Orientation = {\n        HORIZONTAL: \"horizontal\",\n        VERTICAL: \"vertical\",\n        DIAGONAL: \"diagonal\",\n        IDENTITY: \"identity\"\n      };\n      if (sourceId === targetId) {\n        return {\n          orientation: Orientation.IDENTITY,\n          a: [TOP, TOP]\n        };\n      }\n      var theta = Math.atan2(td.c.y - sd.c.y, td.c.x - sd.c.x),\n          theta2 = Math.atan2(sd.c.y - td.c.y, sd.c.x - td.c.x);\n      var candidates = [],\n          midpoints = {};\n      (function (types, dim) {\n        for (var i = 0; i < types.length; i++) {\n          var _midpoints$types$i;\n          midpoints[types[i]] = (_midpoints$types$i = {}, _defineProperty(_midpoints$types$i, LEFT, {\n            x: dim[i][0].x,\n            y: dim[i][0].c.y\n          }), _defineProperty(_midpoints$types$i, RIGHT, {\n            x: dim[i][0].x + dim[i][0].w,\n            y: dim[i][0].c.y\n          }), _defineProperty(_midpoints$types$i, TOP, {\n            x: dim[i][0].c.x,\n            y: dim[i][0].y\n          }), _defineProperty(_midpoints$types$i, BOTTOM, {\n            x: dim[i][0].c.x,\n            y: dim[i][0].y + dim[i][0].h\n          }), _midpoints$types$i);\n          if (dim[i][1] != null && dim[i][1].length > 0) {\n            for (var axis in midpoints[types[i]]) {\n              midpoints[types[i]][axis] = _this4.instance._applyRotationsXY(midpoints[types[i]][axis], dim[i][1]);\n            }\n          }\n        }\n      })([SOURCE, TARGET], [[sd, sourceRotation], [td, targetRotation]]);\n      var FACES = [TOP, LEFT, RIGHT, BOTTOM];\n      for (var sf = 0; sf < FACES.length; sf++) {\n        for (var tf = 0; tf < FACES.length; tf++) {\n          candidates.push({\n            source: FACES[sf],\n            target: FACES[tf],\n            dist: lineLength(midpoints.source[FACES[sf]], midpoints.target[FACES[tf]])\n          });\n        }\n      }\n      candidates.sort(function (a, b) {\n        if (a.dist < b.dist) {\n          return -1;\n        } else if (b.dist < a.dist) {\n          return 1;\n        } else {\n          var _axisIndices;\n          var axisIndices = (_axisIndices = {}, _defineProperty(_axisIndices, LEFT, 0), _defineProperty(_axisIndices, TOP, 1), _defineProperty(_axisIndices, RIGHT, 2), _defineProperty(_axisIndices, BOTTOM, 3), _axisIndices),\n              ais = axisIndices[a.source],\n              bis = axisIndices[b.source],\n              ait = axisIndices[a.target],\n              bit = axisIndices[b.target];\n          return ais < bis ? -1 : bis < ais ? 1 : ait < bit ? -1 : bit < ait ? 1 : 0;\n        }\n      });\n      var sourceEdge = candidates[0].source,\n          targetEdge = candidates[0].target;\n      for (var i = 0; i < candidates.length; i++) {\n        if (isContinuous(sourceAnchor) && sourceAnchor.locked) {\n          sourceEdge = sourceAnchor.currentFace;\n        } else if (!sourceAnchor.isContinuous || isEdgeSupported(sourceAnchor, candidates[i].source)) {\n          sourceEdge = candidates[i].source;\n        } else {\n          sourceEdge = null;\n        }\n        if (targetAnchor.isContinuous && targetAnchor.locked) {\n          targetEdge = targetAnchor.currentFace;\n        } else if (!targetAnchor.isContinuous || isEdgeSupported(targetAnchor, candidates[i].target)) {\n          targetEdge = candidates[i].target;\n        } else {\n          targetEdge = null;\n        }\n        if (sourceEdge != null && targetEdge != null) {\n          break;\n        }\n      }\n      if (sourceAnchor.isContinuous) {\n        this.setCurrentFace(sourceAnchor, sourceEdge);\n      }\n      if (targetAnchor.isContinuous) {\n        this.setCurrentFace(targetAnchor, targetEdge);\n      }\n      return {\n        a: [sourceEdge, targetEdge],\n        theta: theta,\n        theta2: theta2\n      };\n    }\n  }, {\n    key: \"setCurrentFace\",\n    value: function setCurrentFace(a, face, overrideLock) {\n      a.currentFace = face;\n      if (overrideLock && a.lockedFace != null) {\n        a.lockedFace = a.currentFace;\n      }\n    }\n  }, {\n    key: \"lock\",\n    value: function lock(a) {\n      a.locked = true;\n      if (isContinuous(a)) {\n        a.lockedFace = a.currentFace;\n      }\n    }\n  }, {\n    key: \"unlock\",\n    value: function unlock(a) {\n      a.locked = false;\n      if (isContinuous(a)) {\n        a.lockedFace = null;\n      }\n    }\n  }, {\n    key: \"selectAnchorLocation\",\n    value: function selectAnchorLocation(a, coords) {\n      var idx = findWithFunction(a.locations, function (loc) {\n        return loc.x === coords.x && loc.y === coords.y;\n      });\n      if (idx !== -1) {\n        a.currentLocation = idx;\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: \"lockCurrentAxis\",\n    value: function lockCurrentAxis(a) {\n      if (a.currentFace != null) {\n        a.lockedAxis = a.currentFace === LEFT || a.currentFace === RIGHT ? X_AXIS_FACES : Y_AXIS_FACES;\n      }\n    }\n  }, {\n    key: \"unlockCurrentAxis\",\n    value: function unlockCurrentAxis(a) {\n      a.lockedAxis = null;\n    }\n  }, {\n    key: \"anchorsEqual\",\n    value: function anchorsEqual(a1, a2) {\n      if (!a1 || !a2) {\n        return false;\n      }\n      var l1 = a1.locations[a1.currentLocation],\n          l2 = a2.locations[a2.currentLocation];\n      return l1.x === l2.x && l1.y === l2.y && l1.offx === l2.offx && l1.offy === l2.offy && l1.ox === l2.ox && l1.oy === l2.oy;\n    }\n  }]);\n  return LightweightRouter;\n}();\n\nvar connectorMap = {};\nvar Connectors = {\n  get: function get(connection, name, params) {\n    var c = connectorMap[name];\n    if (!c) {\n      throw {\n        message: \"jsPlumb: unknown connector type '\" + name + \"'\"\n      };\n    } else {\n      return new c(connection, params);\n    }\n  },\n  register: function register(name, conn) {\n    connectorMap[name] = conn;\n  }\n};\n\nvar StraightSegment = function (_AbstractSegment) {\n  _inherits(StraightSegment, _AbstractSegment);\n  var _super = _createSuper(StraightSegment);\n  function StraightSegment(params) {\n    var _this;\n    _classCallCheck(this, StraightSegment);\n    _this = _super.call(this, params);\n    _defineProperty(_assertThisInitialized(_this), \"length\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"m\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"m2\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"type\", StraightSegment.segmentType);\n    _this._setCoordinates({\n      x1: params.x1,\n      y1: params.y1,\n      x2: params.x2,\n      y2: params.y2\n    });\n    return _this;\n  }\n  _createClass(StraightSegment, [{\n    key: \"getPath\",\n    value: function getPath(isFirstSegment) {\n      return (isFirstSegment ? \"M \" + this.x1 + \" \" + this.y1 + \" \" : \"\") + \"L \" + this.x2 + \" \" + this.y2;\n    }\n  }, {\n    key: \"_recalc\",\n    value: function _recalc() {\n      this.length = Math.sqrt(Math.pow(this.x2 - this.x1, 2) + Math.pow(this.y2 - this.y1, 2));\n      this.m = gradient({\n        x: this.x1,\n        y: this.y1\n      }, {\n        x: this.x2,\n        y: this.y2\n      });\n      this.m2 = -1 / this.m;\n      this.extents = {\n        xmin: Math.min(this.x1, this.x2),\n        ymin: Math.min(this.y1, this.y2),\n        xmax: Math.max(this.x1, this.x2),\n        ymax: Math.max(this.y1, this.y2)\n      };\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      return this.length;\n    }\n  }, {\n    key: \"getGradient\",\n    value: function getGradient() {\n      return this.m;\n    }\n  }, {\n    key: \"_setCoordinates\",\n    value: function _setCoordinates(coords) {\n      this.x1 = coords.x1;\n      this.y1 = coords.y1;\n      this.x2 = coords.x2;\n      this.y2 = coords.y2;\n      this._recalc();\n    }\n  }, {\n    key: \"pointOnPath\",\n    value: function pointOnPath(location, absolute) {\n      if (location === 0 && !absolute) {\n        return {\n          x: this.x1,\n          y: this.y1\n        };\n      } else if (location === 1 && !absolute) {\n        return {\n          x: this.x2,\n          y: this.y2\n        };\n      } else {\n        var l = absolute ? location > 0 ? location : this.length + location : location * this.length;\n        return pointOnLine({\n          x: this.x1,\n          y: this.y1\n        }, {\n          x: this.x2,\n          y: this.y2\n        }, l);\n      }\n    }\n  }, {\n    key: \"gradientAtPoint\",\n    value: function gradientAtPoint(location, absolute) {\n      return this.m;\n    }\n  }, {\n    key: \"pointAlongPathFrom\",\n    value: function pointAlongPathFrom(location, distance, absolute) {\n      var p = this.pointOnPath(location, absolute),\n          farAwayPoint = distance <= 0 ? {\n        x: this.x1,\n        y: this.y1\n      } : {\n        x: this.x2,\n        y: this.y2\n      };\n      if (distance <= 0 && Math.abs(distance) > 1) {\n        distance *= -1;\n      }\n      return pointOnLine(p, farAwayPoint, distance);\n    }\n  }, {\n    key: \"within\",\n    value: function within(a, b, c) {\n      return c >= Math.min(a, b) && c <= Math.max(a, b);\n    }\n  }, {\n    key: \"closest\",\n    value: function closest(a, b, c) {\n      return Math.abs(c - a) < Math.abs(c - b) ? a : b;\n    }\n  }, {\n    key: \"findClosestPointOnPath\",\n    value: function findClosestPointOnPath(x, y) {\n      var out = {\n        d: Infinity,\n        x: null,\n        y: null,\n        l: null,\n        x1: this.x1,\n        x2: this.x2,\n        y1: this.y1,\n        y2: this.y2\n      };\n      if (this.m === 0) {\n        out.y = this.y1;\n        out.x = this.within(this.x1, this.x2, x) ? x : this.closest(this.x1, this.x2, x);\n      } else if (this.m === Infinity || this.m === -Infinity) {\n        out.x = this.x1;\n        out.y = this.within(this.y1, this.y2, y) ? y : this.closest(this.y1, this.y2, y);\n      } else {\n        var b = this.y1 - this.m * this.x1,\n            b2 = y - this.m2 * x,\n        _x1 = (b2 - b) / (this.m - this.m2),\n            _y1 = this.m * _x1 + b;\n        out.x = this.within(this.x1, this.x2, _x1) ? _x1 : this.closest(this.x1, this.x2, _x1);\n        out.y = this.within(this.y1, this.y2, _y1) ? _y1 : this.closest(this.y1, this.y2, _y1);\n      }\n      var fractionInSegment = lineLength({\n        x: out.x,\n        y: out.y\n      }, {\n        x: this.x1,\n        y: this.y1\n      });\n      out.d = lineLength({\n        x: x,\n        y: y\n      }, out);\n      out.l = fractionInSegment / length;\n      return out;\n    }\n  }, {\n    key: \"_pointLiesBetween\",\n    value: function _pointLiesBetween(q, p1, p2) {\n      return p2 > p1 ? p1 <= q && q <= p2 : p1 >= q && q >= p2;\n    }\n  }, {\n    key: \"lineIntersection\",\n    value: function lineIntersection(_x1, _y1, _x2, _y2) {\n      var m2 = Math.abs(gradient({\n        x: _x1,\n        y: _y1\n      }, {\n        x: _x2,\n        y: _y2\n      })),\n          m1 = Math.abs(this.m),\n          b = m1 === Infinity ? this.x1 : this.y1 - m1 * this.x1,\n          out = [],\n          b2 = m2 === Infinity ? _x1 : _y1 - m2 * _x1;\n      if (m2 !== m1) {\n        if (m2 === Infinity && m1 === 0) {\n          if (this._pointLiesBetween(_x1, this.x1, this.x2) && this._pointLiesBetween(this.y1, _y1, _y2)) {\n            out.push({\n              x: _x1,\n              y: this.y1\n            });\n          }\n        } else if (m2 === 0 && m1 === Infinity) {\n          if (this._pointLiesBetween(_y1, this.y1, this.y2) && this._pointLiesBetween(this.x1, _x1, _x2)) {\n            out.push({\n              x: this.x1,\n              y: _y1\n            });\n          }\n        } else {\n          var X, Y;\n          if (m2 === Infinity) {\n            X = _x1;\n            if (this._pointLiesBetween(X, this.x1, this.x2)) {\n              Y = m1 * _x1 + b;\n              if (this._pointLiesBetween(Y, _y1, _y2)) {\n                out.push({\n                  x: X,\n                  y: Y\n                });\n              }\n            }\n          } else if (m2 === 0) {\n            Y = _y1;\n            if (this._pointLiesBetween(Y, this.y1, this.y2)) {\n              X = (_y1 - b) / m1;\n              if (this._pointLiesBetween(X, _x1, _x2)) {\n                out.push({\n                  x: X,\n                  y: Y\n                });\n              }\n            }\n          } else {\n            X = (b2 - b) / (m1 - m2);\n            Y = m1 * X + b;\n            if (this._pointLiesBetween(X, this.x1, this.x2) && this._pointLiesBetween(Y, this.y1, this.y2)) {\n              out.push({\n                x: X,\n                y: Y\n              });\n            }\n          }\n        }\n      }\n      return out;\n    }\n  }, {\n    key: \"boxIntersection\",\n    value: function boxIntersection(x, y, w, h) {\n      var a = [];\n      a.push.apply(a, this.lineIntersection(x, y, x + w, y));\n      a.push.apply(a, this.lineIntersection(x + w, y, x + w, y + h));\n      a.push.apply(a, this.lineIntersection(x + w, y + h, x, y + h));\n      a.push.apply(a, this.lineIntersection(x, y + h, x, y));\n      return a;\n    }\n  }]);\n  return StraightSegment;\n}(AbstractSegment);\n_defineProperty(StraightSegment, \"segmentType\", \"Straight\");\n\nvar StraightConnector = function (_AbstractConnector) {\n  _inherits(StraightConnector, _AbstractConnector);\n  var _super = _createSuper(StraightConnector);\n  function StraightConnector() {\n    var _this;\n    _classCallCheck(this, StraightConnector);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"type\", StraightConnector.type);\n    return _this;\n  }\n  _createClass(StraightConnector, [{\n    key: \"getDefaultStubs\",\n    value: function getDefaultStubs() {\n      return [0, 0];\n    }\n  }, {\n    key: \"_compute\",\n    value: function _compute(paintInfo, p) {\n      this._addSegment(StraightSegment, {\n        x1: paintInfo.sx,\n        y1: paintInfo.sy,\n        x2: paintInfo.startStubX,\n        y2: paintInfo.startStubY\n      });\n      this._addSegment(StraightSegment, {\n        x1: paintInfo.startStubX,\n        y1: paintInfo.startStubY,\n        x2: paintInfo.endStubX,\n        y2: paintInfo.endStubY\n      });\n      this._addSegment(StraightSegment, {\n        x1: paintInfo.endStubX,\n        y1: paintInfo.endStubY,\n        x2: paintInfo.tx,\n        y2: paintInfo.ty\n      });\n      this.geometry = {\n        source: p.sourcePos,\n        target: p.targetPos\n      };\n    }\n  }, {\n    key: \"transformGeometry\",\n    value: function transformGeometry(g, dx, dy) {\n      return {\n        source: this.transformAnchorPlacement(g.source, dx, dy),\n        target: this.transformAnchorPlacement(g.target, dx, dy)\n      };\n    }\n  }]);\n  return StraightConnector;\n}(AbstractConnector);\n_defineProperty(StraightConnector, \"type\", \"Straight\");\n\nfunction _scopeMatch(e1, e2) {\n  var s1 = e1.scope.split(/\\s/),\n      s2 = e2.scope.split(/\\s/);\n  for (var i = 0; i < s1.length; i++) {\n    for (var j = 0; j < s2.length; j++) {\n      if (s2[j] === s1[i]) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction prepareList(instance, input, doNotGetIds) {\n  var r = [];\n  var _resolveId = function _resolveId(i) {\n    if (isString(i)) {\n      return i;\n    } else {\n      return instance.getId(i);\n    }\n  };\n  if (input) {\n    if (typeof input === 'string') {\n      if (input === \"*\") {\n        return input;\n      }\n      r.push(input);\n    } else {\n      if (doNotGetIds) {\n        r = input;\n      } else {\n        if (input.length != null) {\n          var _r;\n          (_r = r).push.apply(_r, _toConsumableArray(_toConsumableArray(input).map(_resolveId)));\n        } else {\n          r.push(_resolveId(input));\n        }\n      }\n    }\n  }\n  return r;\n}\nfunction addManagedEndpoint(managedElement, ep) {\n  if (managedElement != null) {\n    managedElement.endpoints.push(ep);\n  }\n}\nfunction removeManagedEndpoint(managedElement, endpoint) {\n  if (managedElement != null) {\n    removeWithFunction(managedElement.endpoints, function (ep) {\n      return ep === endpoint;\n    });\n  }\n}\nfunction addManagedConnection(connection, sourceEl, targetEl) {\n  if (sourceEl != null) {\n    sourceEl.connections.push(connection);\n    if (sourceEl.connections.length === 1) {\n      connection.instance.addClass(connection.source, connection.instance.connectedClass);\n    }\n  }\n  if (targetEl != null) {\n    if (sourceEl == null || connection.sourceId !== connection.targetId) {\n      targetEl.connections.push(connection);\n      if (targetEl.connections.length === 1) {\n        connection.instance.addClass(connection.target, connection.instance.connectedClass);\n      }\n    }\n  }\n}\nfunction removeManagedConnection(connection, sourceEl, targetEl) {\n  if (sourceEl != null) {\n    var sourceCount = sourceEl.connections.length;\n    removeWithFunction(sourceEl.connections, function (_c) {\n      return connection.id === _c.id;\n    });\n    if (sourceCount > 0 && sourceEl.connections.length === 0) {\n      connection.instance.removeClass(connection.source, connection.instance.connectedClass);\n    }\n  }\n  if (targetEl != null) {\n    var targetCount = targetEl.connections.length;\n    if (sourceEl == null || connection.sourceId !== connection.targetId) {\n      removeWithFunction(targetEl.connections, function (_c) {\n        return connection.id === _c.id;\n      });\n    }\n    if (targetCount > 0 && targetEl.connections.length === 0) {\n      connection.instance.removeClass(connection.target, connection.instance.connectedClass);\n    }\n  }\n}\nvar JsPlumbInstance = function (_EventGenerator) {\n  _inherits(JsPlumbInstance, _EventGenerator);\n  var _super = _createSuper(JsPlumbInstance);\n  function JsPlumbInstance(_instanceIndex, defaults) {\n    var _this;\n    _classCallCheck(this, JsPlumbInstance);\n    _this = _super.call(this);\n    _this._instanceIndex = _instanceIndex;\n    _defineProperty(_assertThisInitialized(_this), \"defaults\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_initialDefaults\", {});\n    _defineProperty(_assertThisInitialized(_this), \"isConnectionBeingDragged\", false);\n    _defineProperty(_assertThisInitialized(_this), \"currentlyDragging\", false);\n    _defineProperty(_assertThisInitialized(_this), \"hoverSuspended\", false);\n    _defineProperty(_assertThisInitialized(_this), \"_suspendDrawing\", false);\n    _defineProperty(_assertThisInitialized(_this), \"_suspendedAt\", null);\n    _defineProperty(_assertThisInitialized(_this), \"connectorClass\", CLASS_CONNECTOR);\n    _defineProperty(_assertThisInitialized(_this), \"connectorOutlineClass\", CLASS_CONNECTOR_OUTLINE);\n    _defineProperty(_assertThisInitialized(_this), \"connectedClass\", CLASS_CONNECTED);\n    _defineProperty(_assertThisInitialized(_this), \"endpointClass\", CLASS_ENDPOINT);\n    _defineProperty(_assertThisInitialized(_this), \"endpointConnectedClass\", CLASS_ENDPOINT_CONNECTED);\n    _defineProperty(_assertThisInitialized(_this), \"endpointFullClass\", CLASS_ENDPOINT_FULL);\n    _defineProperty(_assertThisInitialized(_this), \"endpointFloatingClass\", CLASS_ENDPOINT_FLOATING);\n    _defineProperty(_assertThisInitialized(_this), \"endpointDropAllowedClass\", CLASS_ENDPOINT_DROP_ALLOWED);\n    _defineProperty(_assertThisInitialized(_this), \"endpointDropForbiddenClass\", CLASS_ENDPOINT_DROP_FORBIDDEN);\n    _defineProperty(_assertThisInitialized(_this), \"endpointAnchorClassPrefix\", CLASS_ENDPOINT_ANCHOR_PREFIX);\n    _defineProperty(_assertThisInitialized(_this), \"overlayClass\", CLASS_OVERLAY);\n    _defineProperty(_assertThisInitialized(_this), \"connections\", []);\n    _defineProperty(_assertThisInitialized(_this), \"endpointsByElement\", {});\n    _defineProperty(_assertThisInitialized(_this), \"endpointsByUUID\", new Map());\n    _defineProperty(_assertThisInitialized(_this), \"sourceSelectors\", []);\n    _defineProperty(_assertThisInitialized(_this), \"targetSelectors\", []);\n    _defineProperty(_assertThisInitialized(_this), \"allowNestedGroups\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_curIdStamp\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"viewport\", new Viewport(_assertThisInitialized(_this)));\n    _defineProperty(_assertThisInitialized(_this), \"router\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"groupManager\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectionTypes\", new Map());\n    _defineProperty(_assertThisInitialized(_this), \"_endpointTypes\", new Map());\n    _defineProperty(_assertThisInitialized(_this), \"_container\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_managedElements\", {});\n    _defineProperty(_assertThisInitialized(_this), \"DEFAULT_SCOPE\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_zoom\", 1);\n    _this.defaults = {\n      anchor: AnchorLocations.Bottom,\n      anchors: [null, null],\n      connectionsDetachable: true,\n      connectionOverlays: [],\n      connector: StraightConnector.type,\n      container: null,\n      endpoint: DotEndpoint.type,\n      endpointOverlays: [],\n      endpoints: [null, null],\n      endpointStyle: {\n        fill: \"#456\"\n      },\n      endpointStyles: [null, null],\n      endpointHoverStyle: null,\n      endpointHoverStyles: [null, null],\n      hoverPaintStyle: null,\n      listStyle: {},\n      maxConnections: 1,\n      paintStyle: {\n        strokeWidth: 2,\n        stroke: \"#456\"\n      },\n      reattachConnections: false,\n      scope: \"jsplumb_defaultscope\",\n      allowNestedGroups: true\n    };\n    if (defaults) {\n      extend(_this.defaults, defaults);\n    }\n    extend(_this._initialDefaults, _this.defaults);\n    if (_this._initialDefaults[DEFAULT_KEY_PAINT_STYLE] != null) {\n      _this._initialDefaults[DEFAULT_KEY_PAINT_STYLE].strokeWidth = _this._initialDefaults[DEFAULT_KEY_PAINT_STYLE].strokeWidth || 2;\n    }\n    _this.DEFAULT_SCOPE = _this.defaults[DEFAULT_KEY_SCOPE];\n    _this.allowNestedGroups = _this._initialDefaults[DEFAULT_KEY_ALLOW_NESTED_GROUPS] !== false;\n    _this.router = new LightweightRouter(_assertThisInitialized(_this));\n    _this.groupManager = new GroupManager(_assertThisInitialized(_this));\n    _this.setContainer(_this._initialDefaults.container);\n    return _this;\n  }\n  _createClass(JsPlumbInstance, [{\n    key: \"defaultScope\",\n    get: function get() {\n      return this.DEFAULT_SCOPE;\n    }\n  }, {\n    key: \"currentZoom\",\n    get: function get() {\n      return this._zoom;\n    }\n  }, {\n    key: \"areDefaultAnchorsSet\",\n    value: function areDefaultAnchorsSet() {\n      return this.validAnchorsSpec(this.defaults.anchors);\n    }\n  }, {\n    key: \"validAnchorsSpec\",\n    value: function validAnchorsSpec(anchors) {\n      return anchors != null && anchors[0] != null && anchors[1] != null;\n    }\n  }, {\n    key: \"getContainer\",\n    value: function getContainer() {\n      return this._container;\n    }\n  }, {\n    key: \"setZoom\",\n    value: function setZoom(z, repaintEverything) {\n      this._zoom = z;\n      this.fire(EVENT_ZOOM, this._zoom);\n      if (repaintEverything) {\n        this.repaintEverything();\n      }\n      return true;\n    }\n  }, {\n    key: \"_idstamp\",\n    value: function _idstamp() {\n      return \"\" + this._curIdStamp++;\n    }\n  }, {\n    key: \"checkCondition\",\n    value: function checkCondition(conditionName, args) {\n      var l = this.getListener(conditionName),\n          r = true;\n      if (l && l.length > 0) {\n        var values = Array.prototype.slice.call(arguments, 1);\n        try {\n          for (var i = 0, j = l.length; i < j; i++) {\n            r = r && l[i].apply(l[i], values);\n          }\n        } catch (e) {\n          log(\"cannot check condition [\" + conditionName + \"]\" + e);\n        }\n      }\n      return r;\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(element, uuid) {\n      if (element == null) {\n        return null;\n      }\n      var id = this.getAttribute(element, ATTRIBUTE_MANAGED);\n      if (!id || id === \"undefined\") {\n        if (arguments.length === 2 && arguments[1] !== undefined) {\n          id = uuid;\n        } else if (arguments.length === 1 || arguments.length === 3 && !arguments[2]) {\n          id = \"jsplumb-\" + this._instanceIndex + \"-\" + this._idstamp();\n        }\n        this.setAttribute(element, ATTRIBUTE_MANAGED, id);\n      }\n      return id;\n    }\n  }, {\n    key: \"getConnections\",\n    value: function getConnections(options, flat) {\n      if (!options) {\n        options = {};\n      } else if (options.constructor === String) {\n        options = {\n          \"scope\": options\n        };\n      }\n      var scope = options.scope || this.defaultScope,\n          scopes = prepareList(this, scope, true),\n          sources = prepareList(this, options.source),\n          targets = prepareList(this, options.target),\n          results = !flat && scopes.length > 1 ? {} : [],\n          _addOne = function _addOne(scope, obj) {\n        if (!flat && scopes.length > 1) {\n          var ss = results[scope];\n          if (ss == null) {\n            ss = results[scope] = [];\n          }\n          ss.push(obj);\n        } else {\n          results.push(obj);\n        }\n      };\n      for (var j = 0, jj = this.connections.length; j < jj; j++) {\n        var _c2 = this.connections[j],\n            sourceId = _c2.proxies && _c2.proxies[0] ? _c2.proxies[0].originalEp.elementId : _c2.sourceId,\n            targetId = _c2.proxies && _c2.proxies[1] ? _c2.proxies[1].originalEp.elementId : _c2.targetId;\n        if (filterList(scopes, _c2.scope) && filterList(sources, sourceId) && filterList(targets, targetId)) {\n          _addOne(_c2.scope, _c2);\n        }\n      }\n      return results;\n    }\n  }, {\n    key: \"select\",\n    value: function select(params) {\n      params = params || {};\n      params.scope = params.scope || \"*\";\n      return new ConnectionSelection(this, params.connections || this.getConnections(params, true));\n    }\n  }, {\n    key: \"selectEndpoints\",\n    value: function selectEndpoints(params) {\n      params = params || {};\n      params.scope = params.scope || WILDCARD;\n      var noElementFilters = !params.element && !params.source && !params.target,\n          elements = noElementFilters ? WILDCARD : prepareList(this, params.element),\n          sources = noElementFilters ? WILDCARD : prepareList(this, params.source),\n          targets = noElementFilters ? WILDCARD : prepareList(this, params.target),\n          scopes = prepareList(this, params.scope, true);\n      var ep = [];\n      for (var _el2 in this.endpointsByElement) {\n        var either = filterList(elements, _el2, true),\n            source = filterList(sources, _el2, true),\n            sourceMatchExact = sources !== \"*\",\n            target = filterList(targets, _el2, true),\n            targetMatchExact = targets !== \"*\";\n        if (either || source || target) {\n          inner: for (var i = 0, ii = this.endpointsByElement[_el2].length; i < ii; i++) {\n            var _ep = this.endpointsByElement[_el2][i];\n            if (filterList(scopes, _ep.scope, true)) {\n              var noMatchSource = sourceMatchExact && sources.length > 0 && !_ep.isSource,\n                  noMatchTarget = targetMatchExact && targets.length > 0 && !_ep.isTarget;\n              if (noMatchSource || noMatchTarget) {\n                continue inner;\n              }\n              ep.push(_ep);\n            }\n          }\n        }\n      }\n      return new EndpointSelection(this, ep);\n    }\n  }, {\n    key: \"setContainer\",\n    value: function setContainer(c) {\n      this._container = c;\n      this.fire(EVENT_CONTAINER_CHANGE, this._container);\n    }\n  }, {\n    key: \"_set\",\n    value: function _set(c, el, idx) {\n      var stTypes = [{\n        el: \"source\",\n        elId: \"sourceId\"\n      }, {\n        el: \"target\",\n        elId: \"targetId\"\n      }];\n      var ep,\n          _st = stTypes[idx],\n          cId = c[_st.elId],\n          sid,\n          oldEndpoint = c.endpoints[idx];\n      var evtParams = {\n        index: idx,\n        originalEndpoint: oldEndpoint,\n        originalSourceId: idx === 0 ? cId : c.sourceId,\n        newSourceId: c.sourceId,\n        originalTargetId: idx === 1 ? cId : c.targetId,\n        newTargetId: c.targetId,\n        connection: c,\n        newEndpoint: oldEndpoint\n      };\n      if (el instanceof Endpoint) {\n        ep = el;\n        ep.addConnection(c);\n      } else {\n        sid = this.getId(el);\n        if (sid === c[_st.elId]) {\n          ep = null;\n        } else {\n          ep = c.makeEndpoint(idx === 0, el, sid);\n        }\n      }\n      if (ep != null) {\n        evtParams.newEndpoint = ep;\n        oldEndpoint.detachFromConnection(c);\n        c.endpoints[idx] = ep;\n        c[_st.el] = ep.element;\n        c[_st.elId] = ep.elementId;\n        evtParams[idx === 0 ? \"newSourceId\" : \"newTargetId\"] = ep.elementId;\n        this.fireMoveEvent(evtParams);\n        this._paintConnection(c);\n      }\n      return evtParams;\n    }\n  }, {\n    key: \"setSource\",\n    value: function setSource(connection, el) {\n      removeManagedConnection(connection, this._managedElements[connection.sourceId]);\n      var p = this._set(connection, el, 0);\n      addManagedConnection(connection, this._managedElements[p.newSourceId]);\n    }\n  }, {\n    key: \"setTarget\",\n    value: function setTarget(connection, el) {\n      removeManagedConnection(connection, this._managedElements[connection.targetId]);\n      var p = this._set(connection, el, 1);\n      addManagedConnection(connection, this._managedElements[p.newTargetId]);\n    }\n  }, {\n    key: \"setConnectionType\",\n    value: function setConnectionType(connection, type, params) {\n      connection.setType(type, params);\n      this._paintConnection(connection);\n    }\n  }, {\n    key: \"isHoverSuspended\",\n    value: function isHoverSuspended() {\n      return this.hoverSuspended;\n    }\n  }, {\n    key: \"setSuspendDrawing\",\n    value: function setSuspendDrawing(val, repaintAfterwards) {\n      var curVal = this._suspendDrawing;\n      this._suspendDrawing = val;\n      if (val) {\n        this._suspendedAt = \"\" + new Date().getTime();\n      } else {\n        this._suspendedAt = null;\n        this.viewport.recomputeBounds();\n      }\n      if (repaintAfterwards) {\n        this.repaintEverything();\n      }\n      return curVal;\n    }\n  }, {\n    key: \"getSuspendedAt\",\n    value: function getSuspendedAt() {\n      return this._suspendedAt;\n    }\n  }, {\n    key: \"batch\",\n    value: function batch(fn, doNotRepaintAfterwards) {\n      var _wasSuspended = this._suspendDrawing === true;\n      if (!_wasSuspended) {\n        this.setSuspendDrawing(true);\n      }\n      fn();\n      if (!_wasSuspended) {\n        this.setSuspendDrawing(false, !doNotRepaintAfterwards);\n      }\n    }\n  }, {\n    key: \"each\",\n    value: function each(spec, fn) {\n      if (spec == null) {\n        return;\n      }\n      if (spec.length != null) {\n        for (var i = 0; i < spec.length; i++) {\n          fn(spec[i]);\n        }\n      } else {\n        fn(spec);\n      }\n      return this;\n    }\n  }, {\n    key: \"updateOffset\",\n    value: function updateOffset(params) {\n      var elId = params.elId;\n      if (params.recalc) {\n        return this.viewport.refreshElement(elId);\n      } else {\n        return this.viewport.getPosition(elId);\n      }\n    }\n  }, {\n    key: \"deleteConnection\",\n    value: function deleteConnection(connection, params) {\n      if (connection != null && connection.deleted !== true) {\n        params = params || {};\n        if (params.force || functionChain(true, false, [[connection.endpoints[0], IS_DETACH_ALLOWED, [connection]], [connection.endpoints[1], IS_DETACH_ALLOWED, [connection]], [connection, IS_DETACH_ALLOWED, [connection]], [this, CHECK_CONDITION, [INTERCEPT_BEFORE_DETACH, connection]]])) {\n          removeManagedConnection(connection, this._managedElements[connection.sourceId], this._managedElements[connection.targetId]);\n          this.fireDetachEvent(connection, !connection.pending && params.fireEvent !== false, params.originalEvent);\n          var _sourceEndpoint = connection.endpoints[0];\n          var targetEndpoint = connection.endpoints[1];\n          if (_sourceEndpoint !== params.endpointToIgnore) {\n            _sourceEndpoint.detachFromConnection(connection, null, true);\n          }\n          if (targetEndpoint !== params.endpointToIgnore) {\n            targetEndpoint.detachFromConnection(connection, null, true);\n          }\n          removeWithFunction(this.connections, function (_c) {\n            return connection.id === _c.id;\n          });\n          connection.destroy();\n          if (_sourceEndpoint !== params.endpointToIgnore && _sourceEndpoint.deleteOnEmpty && _sourceEndpoint.connections.length === 0) {\n            this.deleteEndpoint(_sourceEndpoint);\n          }\n          if (targetEndpoint !== params.endpointToIgnore && targetEndpoint.deleteOnEmpty && targetEndpoint.connections.length === 0) {\n            this.deleteEndpoint(targetEndpoint);\n          }\n          return true;\n        }\n      }\n      return false;\n    }\n  }, {\n    key: \"deleteEveryConnection\",\n    value: function deleteEveryConnection(params) {\n      var _this2 = this;\n      params = params || {};\n      var count = this.connections.length,\n          deletedCount = 0;\n      this.batch(function () {\n        for (var i = 0; i < count; i++) {\n          deletedCount += _this2.deleteConnection(_this2.connections[0], params) ? 1 : 0;\n        }\n      });\n      return deletedCount;\n    }\n  }, {\n    key: \"deleteConnectionsForElement\",\n    value: function deleteConnectionsForElement(el, params) {\n      var id = this.getId(el),\n          m = this._managedElements[id];\n      if (m) {\n        var l = m.connections.length;\n        for (var i = 0; i < l; i++) {\n          this.deleteConnection(m.connections[0], params);\n        }\n      }\n      return this;\n    }\n  }, {\n    key: \"fireDetachEvent\",\n    value: function fireDetachEvent(jpc, doFireEvent, originalEvent) {\n      var argIsConnection = jpc.id != null,\n          params = argIsConnection ? {\n        connection: jpc,\n        source: jpc.source,\n        target: jpc.target,\n        sourceId: jpc.sourceId,\n        targetId: jpc.targetId,\n        sourceEndpoint: jpc.endpoints[0],\n        targetEndpoint: jpc.endpoints[1]\n      } : jpc;\n      if (doFireEvent) {\n        this.fire(EVENT_CONNECTION_DETACHED, params, originalEvent);\n      }\n      this.fire(EVENT_INTERNAL_CONNECTION_DETACHED, params, originalEvent);\n    }\n  }, {\n    key: \"fireMoveEvent\",\n    value: function fireMoveEvent(params, evt) {\n      this.fire(EVENT_CONNECTION_MOVED, params, evt);\n    }\n  }, {\n    key: \"manageAll\",\n    value: function manageAll(elements, recalc) {\n      var nl = isString(elements) ? this.getSelector(this.getContainer(), elements) : elements;\n      for (var i = 0; i < nl.length; i++) {\n        this.manage(nl[i], null, recalc);\n      }\n    }\n  }, {\n    key: \"manage\",\n    value: function manage(element, internalId, _recalc) {\n      if (this.getAttribute(element, ATTRIBUTE_MANAGED) == null) {\n        internalId = internalId || this.getAttribute(element, \"id\") || uuid();\n        this.setAttribute(element, ATTRIBUTE_MANAGED, internalId);\n      }\n      var elId = this.getId(element);\n      if (!this._managedElements[elId]) {\n        var obj = {\n          el: element,\n          endpoints: [],\n          connections: [],\n          rotation: 0,\n          data: {}\n        };\n        this._managedElements[elId] = obj;\n        if (this._suspendDrawing) {\n          obj.viewportElement = this.viewport.registerElement(elId, true);\n        } else {\n          obj.viewportElement = this.updateOffset({\n            elId: elId,\n            recalc: true\n          });\n        }\n        this.fire(EVENT_MANAGE_ELEMENT, {\n          el: element\n        });\n      } else {\n        if (_recalc) {\n          this._managedElements[elId].viewportElement = this.updateOffset({\n            elId: elId,\n            timestamp: null,\n            recalc: true\n          });\n        }\n      }\n      return this._managedElements[elId];\n    }\n  }, {\n    key: \"getManagedData\",\n    value: function getManagedData(elementId, dataIdentifier, key) {\n      if (this._managedElements[elementId]) {\n        var data = this._managedElements[elementId].data[dataIdentifier];\n        return data != null ? data[key] : null;\n      }\n    }\n  }, {\n    key: \"setManagedData\",\n    value: function setManagedData(elementId, dataIdentifier, key, data) {\n      if (this._managedElements[elementId]) {\n        this._managedElements[elementId].data[dataIdentifier] = this._managedElements[elementId].data[dataIdentifier] || {};\n        this._managedElements[elementId].data[dataIdentifier][key] = data;\n      }\n    }\n  }, {\n    key: \"getManagedElement\",\n    value: function getManagedElement(id) {\n      return this._managedElements[id] ? this._managedElements[id].el : null;\n    }\n  }, {\n    key: \"unmanage\",\n    value: function unmanage(el, removeElement) {\n      var _this3 = this;\n      this.removeAllEndpoints(el, true);\n      var _one = function _one(_el) {\n        var id = _this3.getId(_el);\n        _this3.removeAttribute(_el, ATTRIBUTE_MANAGED);\n        delete _this3._managedElements[id];\n        _this3.viewport.remove(id);\n        _this3.fire(EVENT_UNMANAGE_ELEMENT, {\n          el: _el,\n          id: id\n        });\n        if (_el && removeElement) {\n          _this3._removeElement(_el);\n        }\n      };\n      this._getAssociatedElements(el).map(_one);\n      _one(el);\n    }\n  }, {\n    key: \"rotate\",\n    value: function rotate(element, rotation, _doNotRepaint) {\n      var elementId = this.getId(element);\n      if (this._managedElements[elementId]) {\n        this._managedElements[elementId].rotation = rotation;\n        this.viewport.rotateElement(elementId, rotation);\n        if (_doNotRepaint !== true) {\n          return this.revalidate(element);\n        }\n      }\n      return {\n        c: new Set(),\n        e: new Set()\n      };\n    }\n  }, {\n    key: \"_getRotation\",\n    value: function _getRotation(elementId) {\n      var entry = this._managedElements[elementId];\n      if (entry != null) {\n        return entry.rotation || 0;\n      } else {\n        return 0;\n      }\n    }\n  }, {\n    key: \"_getRotations\",\n    value: function _getRotations(elementId) {\n      var _this4 = this;\n      var rotations = [];\n      var entry = this._managedElements[elementId];\n      var _oneLevel = function _oneLevel(e) {\n        if (e.group != null) {\n          var gEntry = _this4._managedElements[e.group];\n          if (gEntry != null) {\n            rotations.push({\n              r: gEntry.viewportElement.r,\n              c: gEntry.viewportElement.c\n            });\n            _oneLevel(gEntry);\n          }\n        }\n      };\n      if (entry != null) {\n        rotations.push({\n          r: entry.viewportElement.r || 0,\n          c: entry.viewportElement.c\n        });\n        _oneLevel(entry);\n      }\n      return rotations;\n    }\n  }, {\n    key: \"_applyRotations\",\n    value: function _applyRotations(point, rotations) {\n      var sl = point.slice();\n      var current = {\n        x: sl[0],\n        y: sl[1],\n        cr: 0,\n        sr: 0\n      };\n      forEach(rotations, function (rotation) {\n        current = rotatePoint(current, rotation.c, rotation.r);\n      });\n      return current;\n    }\n  }, {\n    key: \"_applyRotationsXY\",\n    value: function _applyRotationsXY(point, rotations) {\n      forEach(rotations, function (rotation) {\n        point = rotatePoint(point, rotation.c, rotation.r);\n      });\n      return point;\n    }\n  }, {\n    key: \"_internal_newEndpoint\",\n    value: function _internal_newEndpoint(params) {\n      var _p = extend({}, params);\n      var managedElement = this.manage(_p.element);\n      _p.elementId = this.getId(_p.element);\n      _p.id = \"ep_\" + this._idstamp();\n      var ep = new Endpoint(this, _p);\n      addManagedEndpoint(managedElement, ep);\n      if (params.uuid) {\n        this.endpointsByUUID.set(params.uuid, ep);\n      }\n      addToDictionary(this.endpointsByElement, ep.elementId, ep);\n      if (!this._suspendDrawing) {\n        this._paintEndpoint(ep, {\n          timestamp: this._suspendedAt\n        });\n      }\n      return ep;\n    }\n  }, {\n    key: \"_deriveEndpointAndAnchorSpec\",\n    value: function _deriveEndpointAndAnchorSpec(type, dontPrependDefault) {\n      var bits = ((dontPrependDefault ? \"\" : \"default \") + type).split(/[\\s]/),\n          eps = null,\n          ep = null,\n          a = null,\n          as = null;\n      for (var i = 0; i < bits.length; i++) {\n        var _t = this.getConnectionType(bits[i]);\n        if (_t) {\n          if (_t.endpoints) {\n            eps = _t.endpoints;\n          }\n          if (_t.endpoint) {\n            ep = _t.endpoint;\n          }\n          if (_t.anchors) {\n            as = _t.anchors;\n          }\n          if (_t.anchor) {\n            a = _t.anchor;\n          }\n        }\n      }\n      return {\n        endpoints: eps ? eps : [ep, ep],\n        anchors: as ? as : [a, a]\n      };\n    }\n  }, {\n    key: \"revalidate\",\n    value: function revalidate(el, timestamp) {\n      var elId = this.getId(el);\n      this.updateOffset({\n        elId: elId,\n        recalc: true,\n        timestamp: timestamp\n      });\n      return this.repaint(el);\n    }\n  }, {\n    key: \"repaintEverything\",\n    value: function repaintEverything() {\n      var timestamp = uuid(),\n          elId;\n      for (elId in this._managedElements) {\n        this.viewport.refreshElement(elId, true);\n      }\n      this.viewport.recomputeBounds();\n      for (elId in this._managedElements) {\n        this.repaint(this._managedElements[elId].el, timestamp, true);\n      }\n      return this;\n    }\n  }, {\n    key: \"setElementPosition\",\n    value: function setElementPosition(el, x, y) {\n      var id = this.getId(el);\n      this.viewport.setPosition(id, x, y);\n      return this.repaint(el);\n    }\n  }, {\n    key: \"repaint\",\n    value: function repaint(el, timestamp, offsetsWereJustCalculated) {\n      var r = {\n        c: new Set(),\n        e: new Set()\n      };\n      var _mergeRedraw = function _mergeRedraw(r2) {\n        r2.c.forEach(function (c) {\n          return r.c.add(c);\n        });\n        r2.e.forEach(function (e) {\n          return r.e.add(e);\n        });\n      };\n      if (!this._suspendDrawing) {\n        var id = this.getId(el);\n        if (el != null) {\n          var repaintEls = this._getAssociatedElements(el);\n          if (timestamp == null) {\n            timestamp = uuid();\n          }\n          if (!offsetsWereJustCalculated) {\n            for (var i = 0; i < repaintEls.length; i++) {\n              this.updateOffset({\n                elId: this.getId(repaintEls[i]),\n                recalc: true,\n                timestamp: timestamp\n              });\n            }\n          }\n          _mergeRedraw(this.router.redraw(id, timestamp, null));\n          if (repaintEls.length > 0) {\n            for (var j = 0; j < repaintEls.length; j++) {\n              _mergeRedraw(this.router.redraw(this.getId(repaintEls[j]), timestamp, null));\n            }\n          }\n        }\n      }\n      return r;\n    }\n  }, {\n    key: \"unregisterEndpoint\",\n    value: function unregisterEndpoint(endpoint) {\n      var uuid = endpoint.getUuid();\n      if (uuid) {\n        this.endpointsByUUID[\"delete\"](uuid);\n      }\n      removeManagedEndpoint(this._managedElements[endpoint.elementId], endpoint);\n      var ebe = this.endpointsByElement[endpoint.elementId];\n      if (ebe != null) {\n        this.endpointsByElement[endpoint.elementId] = ebe.filter(function (e) {\n          return e !== endpoint;\n        });\n      }\n      this.fire(EVENT_INTERNAL_ENDPOINT_UNREGISTERED, endpoint);\n    }\n  }, {\n    key: \"_maybePruneEndpoint\",\n    value: function _maybePruneEndpoint(endpoint) {\n      if (endpoint.deleteOnEmpty && endpoint.connections.length === 0) {\n        this.deleteEndpoint(endpoint);\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: \"deleteEndpoint\",\n    value: function deleteEndpoint(object) {\n      var _this5 = this;\n      var endpoint = typeof object === \"string\" ? this.endpointsByUUID.get(object) : object;\n      if (endpoint) {\n        var proxy = endpoint.proxiedBy;\n        var connectionsToDelete = endpoint.connections.slice();\n        forEach(connectionsToDelete, function (connection) {\n          endpoint.detachFromConnection(connection, null, true);\n        });\n        this.unregisterEndpoint(endpoint);\n        endpoint.destroy();\n        forEach(connectionsToDelete, function (connection) {\n          _this5.deleteConnection(connection, {\n            force: true,\n            endpointToIgnore: endpoint\n          });\n        });\n        if (proxy != null) {\n          this.deleteEndpoint(proxy);\n        }\n      }\n      return this;\n    }\n  }, {\n    key: \"addEndpoint\",\n    value: function addEndpoint(el, params, referenceParams) {\n      referenceParams = referenceParams || {};\n      var p = extend({}, referenceParams);\n      extend(p, params || {});\n      var _p = extend({\n        element: el\n      }, p);\n      return this._internal_newEndpoint(_p);\n    }\n  }, {\n    key: \"addEndpoints\",\n    value: function addEndpoints(el, endpoints, referenceParams) {\n      var results = [];\n      for (var i = 0, j = endpoints.length; i < j; i++) {\n        results.push(this.addEndpoint(el, endpoints[i], referenceParams));\n      }\n      return results;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      var _this6 = this;\n      this.silently(function () {\n        _this6.endpointsByElement = {};\n        _this6._managedElements = {};\n        _this6.endpointsByUUID.clear();\n        _this6.viewport.reset();\n        _this6.router.reset();\n        _this6.groupManager.reset();\n        _this6.connections.length = 0;\n      });\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.reset();\n      this.unbind();\n      this.sourceSelectors.length = 0;\n      this.targetSelectors.length = 0;\n      this._connectionTypes.clear();\n      this._endpointTypes.clear();\n    }\n  }, {\n    key: \"getEndpoints\",\n    value: function getEndpoints(el) {\n      return this.endpointsByElement[this.getId(el)] || [];\n    }\n  }, {\n    key: \"getEndpoint\",\n    value: function getEndpoint(uuid) {\n      return this.endpointsByUUID.get(uuid);\n    }\n  }, {\n    key: \"setEndpointUuid\",\n    value: function setEndpointUuid(endpoint, uuid) {\n      if (endpoint.uuid) {\n        this.endpointsByUUID[\"delete\"](endpoint.uuid);\n      }\n      endpoint.uuid = uuid;\n      this.endpointsByUUID.set(uuid, endpoint);\n    }\n  }, {\n    key: \"connect\",\n    value: function connect(params, referenceParams) {\n      try {\n        var _p = this._prepareConnectionParams(params, referenceParams),\n            jpc = this._newConnection(_p);\n        this._finaliseConnection(jpc, _p);\n        return jpc;\n      } catch (errorMessage) {\n        log(errorMessage);\n        return;\n      }\n    }\n  }, {\n    key: \"_prepareConnectionParams\",\n    value: function _prepareConnectionParams(params, referenceParams) {\n      var temp = extend({}, params);\n      if (referenceParams) {\n        extend(temp, referenceParams);\n      }\n      var _p = temp;\n      if (_p.source) {\n        if (_p.source.endpoint) {\n          _p.sourceEndpoint = _p.source;\n        }\n      }\n      if (_p.target) {\n        if (_p.target.endpoint) {\n          _p.targetEndpoint = _p.target;\n        }\n      }\n      if (params.uuids) {\n        _p.sourceEndpoint = this.getEndpoint(params.uuids[0]);\n        _p.targetEndpoint = this.getEndpoint(params.uuids[1]);\n      }\n      if (_p.sourceEndpoint != null) {\n        if (_p.sourceEndpoint.isFull()) {\n          throw ERROR_SOURCE_ENDPOINT_FULL;\n        }\n        if (!_p.type) {\n          _p.type = _p.sourceEndpoint.edgeType;\n        }\n        if (_p.sourceEndpoint.connectorOverlays) {\n          _p.overlays = _p.overlays || [];\n          for (var i = 0, j = _p.sourceEndpoint.connectorOverlays.length; i < j; i++) {\n            _p.overlays.push(_p.sourceEndpoint.connectorOverlays[i]);\n          }\n        }\n        if (_p.sourceEndpoint.scope) {\n          _p.scope = _p.sourceEndpoint.scope;\n        }\n      } else {\n        if (_p.source == null) {\n          throw ERROR_SOURCE_DOES_NOT_EXIST;\n        }\n      }\n      if (_p.targetEndpoint != null) {\n        if (_p.targetEndpoint.isFull()) {\n          throw ERROR_TARGET_ENDPOINT_FULL;\n        }\n      } else {\n        if (_p.target == null) {\n          throw ERROR_TARGET_DOES_NOT_EXIST;\n        }\n      }\n      if (_p.sourceEndpoint && _p.targetEndpoint) {\n        if (!_scopeMatch(_p.sourceEndpoint, _p.targetEndpoint)) {\n          throw \"Cannot establish connection: scopes do not match\";\n        }\n      }\n      return _p;\n    }\n  }, {\n    key: \"_newConnection\",\n    value: function _newConnection(params) {\n      params.id = \"con_\" + this._idstamp();\n      var c = new Connection(this, params);\n      addManagedConnection(c, this._managedElements[c.sourceId], this._managedElements[c.targetId]);\n      this._paintConnection(c);\n      return c;\n    }\n  }, {\n    key: \"_finaliseConnection\",\n    value: function _finaliseConnection(jpc, params, originalEvent) {\n      params = params || {};\n      if (!jpc.suspendedEndpoint) {\n        this.connections.push(jpc);\n      }\n      jpc.pending = null;\n      jpc.endpoints[0].isTemporarySource = false;\n      this.repaint(jpc.source);\n      var payload = {\n        connection: jpc,\n        source: jpc.source,\n        target: jpc.target,\n        sourceId: jpc.sourceId,\n        targetId: jpc.targetId,\n        sourceEndpoint: jpc.endpoints[0],\n        targetEndpoint: jpc.endpoints[1]\n      };\n      this.fire(EVENT_INTERNAL_CONNECTION, payload, originalEvent);\n      if (!params.doNotFireConnectionEvent && params.fireEvent !== false) {\n        this.fire(EVENT_CONNECTION, payload, originalEvent);\n      }\n    }\n  }, {\n    key: \"removeAllEndpoints\",\n    value: function removeAllEndpoints(el, recurse) {\n      var _this7 = this;\n      var _one = function _one(_el) {\n        var id = _this7.getId(_el),\n            ebe = _this7.endpointsByElement[id],\n            i,\n            ii;\n        if (ebe) {\n          for (i = 0, ii = ebe.length; i < ii; i++) {\n            _this7.deleteEndpoint(ebe[i]);\n          }\n        }\n        delete _this7.endpointsByElement[id];\n      };\n      if (recurse) {\n        this._getAssociatedElements(el).map(_one);\n      }\n      _one(el);\n      return this;\n    }\n  }, {\n    key: \"_createSourceDefinition\",\n    value: function _createSourceDefinition(params, referenceParams) {\n      var p = extend({}, referenceParams);\n      extend(p, params);\n      p.edgeType = p.edgeType || DEFAULT;\n      var aae = this._deriveEndpointAndAnchorSpec(p.edgeType);\n      p.endpoint = p.endpoint || aae.endpoints[0];\n      p.anchor = p.anchor || aae.anchors[0];\n      var maxConnections = p.maxConnections || -1;\n      var _def = {\n        def: extend({}, p),\n        uniqueEndpoint: p.uniqueEndpoint,\n        maxConnections: maxConnections,\n        enabled: true,\n        endpoint: null\n      };\n      return _def;\n    }\n  }, {\n    key: \"addSourceSelector\",\n    value: function addSourceSelector(selector, params) {\n      var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var _def = this._createSourceDefinition(params);\n      var sel = new ConnectionDragSelector(selector, _def, exclude);\n      this.sourceSelectors.push(sel);\n      return sel;\n    }\n  }, {\n    key: \"removeSourceSelector\",\n    value: function removeSourceSelector(selector) {\n      removeWithFunction(this.sourceSelectors, function (s) {\n        return s === selector;\n      });\n    }\n  }, {\n    key: \"removeTargetSelector\",\n    value: function removeTargetSelector(selector) {\n      removeWithFunction(this.targetSelectors, function (s) {\n        return s === selector;\n      });\n    }\n  }, {\n    key: \"addTargetSelector\",\n    value: function addTargetSelector(selector, params) {\n      var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var _def = this._createTargetDefinition(params);\n      var sel = new ConnectionDragSelector(selector, _def, exclude);\n      this.targetSelectors.push(sel);\n      return sel;\n    }\n  }, {\n    key: \"_createTargetDefinition\",\n    value: function _createTargetDefinition(params, referenceParams) {\n      var p = extend({}, referenceParams);\n      extend(p, params);\n      p.edgeType = p.edgeType || DEFAULT;\n      var maxConnections = p.maxConnections || -1;\n      var _def = {\n        def: extend({}, p),\n        uniqueEndpoint: p.uniqueEndpoint,\n        maxConnections: maxConnections,\n        enabled: true,\n        endpoint: null\n      };\n      return _def;\n    }\n  }, {\n    key: \"show\",\n    value: function show(el, changeEndpoints) {\n      return this._setVisible(el, BLOCK, changeEndpoints);\n    }\n  }, {\n    key: \"hide\",\n    value: function hide(el, changeEndpoints) {\n      return this._setVisible(el, NONE, changeEndpoints);\n    }\n  }, {\n    key: \"_setVisible\",\n    value: function _setVisible(el, state, alsoChangeEndpoints) {\n      var visible = state === BLOCK;\n      var endpointFunc = null;\n      if (alsoChangeEndpoints) {\n        endpointFunc = function endpointFunc(ep) {\n          ep.setVisible(visible, true, true);\n        };\n      }\n      var id = this.getId(el);\n      this._operation(el, function (jpc) {\n        if (visible && alsoChangeEndpoints) {\n          var oidx = jpc.sourceId === id ? 1 : 0;\n          if (jpc.endpoints[oidx].isVisible()) {\n            jpc.setVisible(true);\n          }\n        } else {\n          jpc.setVisible(visible);\n        }\n      }, endpointFunc);\n      return this;\n    }\n  }, {\n    key: \"toggleVisible\",\n    value: function toggleVisible(el, changeEndpoints) {\n      var endpointFunc = null;\n      if (changeEndpoints) {\n        endpointFunc = function endpointFunc(ep) {\n          var state = ep.isVisible();\n          ep.setVisible(!state);\n        };\n      }\n      this._operation(el, function (jpc) {\n        var state = jpc.isVisible();\n        jpc.setVisible(!state);\n      }, endpointFunc);\n    }\n  }, {\n    key: \"_operation\",\n    value: function _operation(el, func, endpointFunc) {\n      var elId = this.getId(el);\n      var endpoints = this.endpointsByElement[elId];\n      if (endpoints && endpoints.length) {\n        for (var i = 0, ii = endpoints.length; i < ii; i++) {\n          for (var j = 0, jj = endpoints[i].connections.length; j < jj; j++) {\n            var retVal = func(endpoints[i].connections[j]);\n            if (retVal) {\n              return;\n            }\n          }\n          if (endpointFunc) {\n            endpointFunc(endpoints[i]);\n          }\n        }\n      }\n    }\n  }, {\n    key: \"registerConnectionType\",\n    value: function registerConnectionType(id, type) {\n      this._connectionTypes.set(id, extend({}, type));\n      if (type.overlays) {\n        var to = {};\n        for (var i = 0; i < type.overlays.length; i++) {\n          var fo = convertToFullOverlaySpec(type.overlays[i]);\n          to[fo.options.id] = fo;\n        }\n        this._connectionTypes.get(id).overlays = to;\n      }\n    }\n  }, {\n    key: \"registerConnectionTypes\",\n    value: function registerConnectionTypes(types) {\n      for (var i in types) {\n        this.registerConnectionType(i, types[i]);\n      }\n    }\n  }, {\n    key: \"registerEndpointType\",\n    value: function registerEndpointType(id, type) {\n      this._endpointTypes.set(id, extend({}, type));\n      if (type.overlays) {\n        var to = {};\n        for (var i = 0; i < type.overlays.length; i++) {\n          var fo = convertToFullOverlaySpec(type.overlays[i]);\n          to[fo.options.id] = fo;\n        }\n        this._endpointTypes.get(id).overlays = to;\n      }\n    }\n  }, {\n    key: \"registerEndpointTypes\",\n    value: function registerEndpointTypes(types) {\n      for (var i in types) {\n        this.registerEndpointType(i, types[i]);\n      }\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(id, typeDescriptor) {\n      return typeDescriptor === \"connection\" ? this.getConnectionType(id) : this.getEndpointType(id);\n    }\n  }, {\n    key: \"getConnectionType\",\n    value: function getConnectionType(id) {\n      return this._connectionTypes.get(id);\n    }\n  }, {\n    key: \"getEndpointType\",\n    value: function getEndpointType(id) {\n      return this._endpointTypes.get(id);\n    }\n  }, {\n    key: \"importDefaults\",\n    value: function importDefaults(d) {\n      for (var i in d) {\n        this.defaults[i] = d[i];\n      }\n      if (this.defaults[DEFAULT_KEY_PAINT_STYLE] != null) {\n        this.defaults[DEFAULT_KEY_PAINT_STYLE].strokeWidth = this.defaults[DEFAULT_KEY_PAINT_STYLE].strokeWidth || 2;\n      }\n      if (d.container) {\n        this.setContainer(d.container);\n      }\n      return this;\n    }\n  }, {\n    key: \"restoreDefaults\",\n    value: function restoreDefaults() {\n      this.defaults = extend({}, this._initialDefaults);\n      return this;\n    }\n  }, {\n    key: \"getManagedElements\",\n    value: function getManagedElements() {\n      return this._managedElements;\n    }\n  }, {\n    key: \"proxyConnection\",\n    value: function proxyConnection(connection, index, proxyEl, endpointGenerator, anchorGenerator) {\n      var alreadyProxied = connection.proxies[index] != null,\n          proxyEp,\n          originalElementId = alreadyProxied ? connection.proxies[index].originalEp.elementId : connection.endpoints[index].elementId,\n          originalEndpoint = alreadyProxied ? connection.proxies[index].originalEp : connection.endpoints[index],\n          proxyElId = this.getId(proxyEl);\n      if (connection.proxies[index]) {\n        if (connection.proxies[index].ep.elementId === proxyElId) {\n          proxyEp = connection.proxies[index].ep;\n        } else {\n          connection.proxies[index].ep.detachFromConnection(connection, index);\n          proxyEp = this._internal_newEndpoint({\n            element: proxyEl,\n            endpoint: endpointGenerator(connection, index),\n            anchor: anchorGenerator(connection, index),\n            parameters: {\n              isProxyEndpoint: true\n            }\n          });\n        }\n      } else {\n        proxyEp = this._internal_newEndpoint({\n          element: proxyEl,\n          endpoint: endpointGenerator(connection, index),\n          anchor: anchorGenerator(connection, index),\n          parameters: {\n            isProxyEndpoint: true\n          }\n        });\n      }\n      proxyEp.deleteOnEmpty = true;\n      connection.proxies[index] = {\n        ep: proxyEp,\n        originalEp: originalEndpoint\n      };\n      this.sourceOrTargetChanged(originalElementId, proxyElId, connection, proxyEl, index);\n      originalEndpoint.detachFromConnection(connection, null, true);\n      proxyEp.connections = [connection];\n      connection.endpoints[index] = proxyEp;\n      originalEndpoint.proxiedBy = proxyEp;\n      originalEndpoint.setVisible(false);\n      connection.setVisible(true);\n      this.revalidate(proxyEl);\n    }\n  }, {\n    key: \"unproxyConnection\",\n    value: function unproxyConnection(connection, index) {\n      if (connection.proxies == null || connection.proxies[index] == null) {\n        return;\n      }\n      var originalElement = connection.proxies[index].originalEp.element,\n          originalElementId = connection.proxies[index].originalEp.elementId,\n          proxyElId = connection.proxies[index].ep.elementId;\n      connection.endpoints[index] = connection.proxies[index].originalEp;\n      delete connection.proxies[index].originalEp.proxiedBy;\n      this.sourceOrTargetChanged(proxyElId, originalElementId, connection, originalElement, index);\n      connection.proxies[index].ep.detachFromConnection(connection, null);\n      connection.proxies[index].originalEp.addConnection(connection);\n      if (connection.isVisible()) {\n        connection.proxies[index].originalEp.setVisible(true);\n      }\n      connection.proxies[index] = null;\n      if (findWithFunction(connection.proxies, function (p) {\n        return p != null;\n      }) === -1) {\n        connection.proxies.length = 0;\n      }\n    }\n  }, {\n    key: \"sourceOrTargetChanged\",\n    value: function sourceOrTargetChanged(originalId, newId, connection, newElement, index) {\n      if (originalId !== newId) {\n        if (index === 0) {\n          connection.sourceId = newId;\n          connection.source = newElement;\n        } else if (index === 1) {\n          connection.targetId = newId;\n          connection.target = newElement;\n        }\n        removeManagedConnection(connection, this._managedElements[originalId]);\n        addManagedConnection(connection, this._managedElements[newId]);\n      }\n    }\n  }, {\n    key: \"getGroup\",\n    value:\n    function getGroup(groupId) {\n      return this.groupManager.getGroup(groupId);\n    }\n  }, {\n    key: \"getGroupFor\",\n    value: function getGroupFor(el) {\n      return this.groupManager.getGroupFor(el);\n    }\n  }, {\n    key: \"addGroup\",\n    value: function addGroup(params) {\n      return this.groupManager.addGroup(params);\n    }\n  }, {\n    key: \"addToGroup\",\n    value: function addToGroup(group) {\n      var _this$groupManager;\n      for (var _len = arguments.length, el = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        el[_key - 1] = arguments[_key];\n      }\n      return (_this$groupManager = this.groupManager).addToGroup.apply(_this$groupManager, [group, false].concat(el));\n    }\n  }, {\n    key: \"collapseGroup\",\n    value: function collapseGroup(group) {\n      this.groupManager.collapseGroup(group);\n    }\n  }, {\n    key: \"expandGroup\",\n    value: function expandGroup(group) {\n      this.groupManager.expandGroup(group);\n    }\n  }, {\n    key: \"toggleGroup\",\n    value: function toggleGroup(group) {\n      this.groupManager.toggleGroup(group);\n    }\n  }, {\n    key: \"removeGroup\",\n    value: function removeGroup(group, deleteMembers, _manipulateView, _doNotFireEvent) {\n      return this.groupManager.removeGroup(group, deleteMembers, _manipulateView, _doNotFireEvent);\n    }\n  }, {\n    key: \"removeAllGroups\",\n    value: function removeAllGroups(deleteMembers, _manipulateView) {\n      this.groupManager.removeAllGroups(deleteMembers, _manipulateView, false);\n    }\n  }, {\n    key: \"removeFromGroup\",\n    value: function removeFromGroup(group, el, _doNotFireEvent) {\n      this.groupManager.removeFromGroup(group, _doNotFireEvent, el);\n      this._appendElement(el, this.getContainer());\n      this.updateOffset({\n        recalc: true,\n        elId: this.getId(el)\n      });\n    }\n  }, {\n    key: \"_paintEndpoint\",\n    value: function _paintEndpoint(endpoint, params) {\n      function findConnectionToUseForDynamicAnchor(ep) {\n        var idx = 0;\n        if (params.elementWithPrecedence != null) {\n          for (var i = 0; i < ep.connections.length; i++) {\n            if (ep.connections[i].sourceId === params.elementWithPrecedence || ep.connections[i].targetId === params.elementWithPrecedence) {\n              idx = i;\n              break;\n            }\n          }\n        }\n        return ep.connections[idx];\n      }\n      params = params || {};\n      var timestamp = params.timestamp,\n          recalc = !(params.recalc === false);\n      if (!timestamp || endpoint.timestamp !== timestamp) {\n        var info = this.viewport.getPosition(endpoint.elementId);\n        var xy = params.offset ? {\n          x: params.offset.x,\n          y: params.offset.y\n        } : {\n          x: info.x,\n          y: info.y\n        };\n        if (xy != null) {\n          var ap = params.anchorLoc;\n          if (ap == null) {\n            var anchorParams = {\n              xy: xy,\n              wh: info,\n              element: endpoint,\n              timestamp: timestamp\n            };\n            if (recalc && this.router.isDynamicAnchor(endpoint) && endpoint.connections.length > 0) {\n              var _c3 = findConnectionToUseForDynamicAnchor(endpoint),\n                  oIdx = _c3.endpoints[0] === endpoint ? 1 : 0,\n                  oId = oIdx === 0 ? _c3.sourceId : _c3.targetId,\n                  oInfo = this.viewport.getPosition(oId);\n              anchorParams.index = oIdx === 0 ? 1 : 0;\n              anchorParams.connection = _c3;\n              anchorParams.txy = oInfo;\n              anchorParams.twh = oInfo;\n              anchorParams.tElement = _c3.endpoints[oIdx];\n              anchorParams.tRotation = this._getRotations(oId);\n            } else if (endpoint.connections.length > 0) {\n              anchorParams.connection = endpoint.connections[0];\n            }\n            anchorParams.rotation = this._getRotations(endpoint.elementId);\n            ap = this.router.computeAnchorLocation(endpoint._anchor, anchorParams);\n          }\n          endpoint.endpoint.compute(ap, this.router.getEndpointOrientation(endpoint), endpoint.paintStyleInUse);\n          this.renderEndpoint(endpoint, endpoint.paintStyleInUse);\n          endpoint.timestamp = timestamp;\n          for (var i in endpoint.overlays) {\n            if (endpoint.overlays.hasOwnProperty(i)) {\n              var _o = endpoint.overlays[i];\n              if (_o.isVisible()) {\n                endpoint.overlayPlacements[i] = this.drawOverlay(_o, endpoint.endpoint, endpoint.paintStyleInUse, endpoint.getAbsoluteOverlayPosition(_o));\n                this._paintOverlay(_o, endpoint.overlayPlacements[i], {\n                  xmin: 0,\n                  ymin: 0\n                });\n              }\n            }\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_paintConnection\",\n    value: function _paintConnection(connection, params) {\n      if (!this._suspendDrawing && connection.visible !== false) {\n        params = params || {};\n        var timestamp = params.timestamp;\n        if (timestamp != null && timestamp === connection.lastPaintedAt) {\n          return;\n        }\n        if (timestamp == null || timestamp !== connection.lastPaintedAt) {\n          this.router.computePath(connection, timestamp);\n          var overlayExtents = {\n            xmin: Infinity,\n            ymin: Infinity,\n            xmax: -Infinity,\n            ymax: -Infinity\n          };\n          for (var i in connection.overlays) {\n            if (connection.overlays.hasOwnProperty(i)) {\n              var _o2 = connection.overlays[i];\n              if (_o2.isVisible()) {\n                connection.overlayPlacements[i] = this.drawOverlay(_o2, connection.connector, connection.paintStyleInUse, connection.getAbsoluteOverlayPosition(_o2));\n                overlayExtents.xmin = Math.min(overlayExtents.xmin, connection.overlayPlacements[i].xmin);\n                overlayExtents.xmax = Math.max(overlayExtents.xmax, connection.overlayPlacements[i].xmax);\n                overlayExtents.ymin = Math.min(overlayExtents.ymin, connection.overlayPlacements[i].ymin);\n                overlayExtents.ymax = Math.max(overlayExtents.ymax, connection.overlayPlacements[i].ymax);\n              }\n            }\n          }\n          var lineWidth = parseFloat(\"\" + connection.paintStyleInUse.strokeWidth || \"1\") / 2,\n              outlineWidth = parseFloat(\"\" + connection.paintStyleInUse.strokeWidth || \"0\"),\n              _extents = {\n            xmin: Math.min(connection.connector.bounds.xmin - (lineWidth + outlineWidth), overlayExtents.xmin),\n            ymin: Math.min(connection.connector.bounds.ymin - (lineWidth + outlineWidth), overlayExtents.ymin),\n            xmax: Math.max(connection.connector.bounds.xmax + (lineWidth + outlineWidth), overlayExtents.xmax),\n            ymax: Math.max(connection.connector.bounds.ymax + (lineWidth + outlineWidth), overlayExtents.ymax)\n          };\n          this.paintConnector(connection.connector, connection.paintStyleInUse, _extents);\n          for (var j in connection.overlays) {\n            if (connection.overlays.hasOwnProperty(j)) {\n              var _p2 = connection.overlays[j];\n              if (_p2.isVisible()) {\n                this._paintOverlay(_p2, connection.overlayPlacements[j], _extents);\n              }\n            }\n          }\n        }\n        connection.lastPaintedAt = timestamp;\n      }\n    }\n  }, {\n    key: \"_refreshEndpoint\",\n    value: function _refreshEndpoint(endpoint) {\n      if (!endpoint._anchor.isFloating) {\n        if (endpoint.connections.length > 0) {\n          this.addEndpointClass(endpoint, this.endpointConnectedClass);\n        } else {\n          this.removeEndpointClass(endpoint, this.endpointConnectedClass);\n        }\n        if (endpoint.isFull()) {\n          this.addEndpointClass(endpoint, this.endpointFullClass);\n        } else {\n          this.removeEndpointClass(endpoint, this.endpointFullClass);\n        }\n      }\n    }\n  }, {\n    key: \"_makeConnector\",\n    value: function _makeConnector(connection, name, args) {\n      return Connectors.get(connection, name, args);\n    }\n  }, {\n    key: \"addOverlay\",\n    value: function addOverlay(component, overlay, doNotRevalidate) {\n      component.addOverlay(overlay);\n      if (!doNotRevalidate) {\n        var relatedElement = component instanceof Endpoint ? component.element : component.source;\n        this.revalidate(relatedElement);\n      }\n    }\n  }, {\n    key: \"removeOverlay\",\n    value: function removeOverlay(component, overlayId) {\n      component.removeOverlay(overlayId);\n      var relatedElement = component instanceof Endpoint ? component.element : component.source;\n      this.revalidate(relatedElement);\n    }\n  }, {\n    key: \"setOutlineColor\",\n    value: function setOutlineColor(conn, color) {\n      conn.paintStyleInUse.outlineStroke = color;\n      this._paintConnection(conn);\n    }\n  }, {\n    key: \"setOutlineWidth\",\n    value: function setOutlineWidth(conn, width) {\n      conn.paintStyleInUse.outlineWidth = width;\n      this._paintConnection(conn);\n    }\n  }, {\n    key: \"setColor\",\n    value: function setColor(conn, color) {\n      conn.paintStyleInUse.stroke = color;\n      this._paintConnection(conn);\n    }\n  }, {\n    key: \"setLineWidth\",\n    value: function setLineWidth(conn, width) {\n      conn.paintStyleInUse.strokeWidth = width;\n      this._paintConnection(conn);\n    }\n  }, {\n    key: \"setLineStyle\",\n    value: function setLineStyle(conn, style) {\n      if (style.lineWidth != null) {\n        conn.paintStyleInUse.strokeWidth = style.lineWidth;\n      }\n      if (style.outlineWidth != null) {\n        conn.paintStyleInUse.outlineWidth = style.outlineWidth;\n      }\n      if (style.color != null) {\n        conn.paintStyleInUse.stroke = style.color;\n      }\n      if (style.outlineColor != null) {\n        conn.paintStyleInUse.outlineStroke = style.outlineColor;\n      }\n      this._paintConnection(conn);\n    }\n  }, {\n    key: \"getPathData\",\n    value:\n    function getPathData(connector) {\n      var p = \"\";\n      for (var i = 0; i < connector.segments.length; i++) {\n        p += connector.segments[i].getPath(i === 0);\n        p += \" \";\n      }\n      return p;\n    }\n  }]);\n  return JsPlumbInstance;\n}(EventGenerator);\n\nvar endpointMap = {};\nfunction registerEndpointRenderer(name, fns) {\n  endpointMap[name] = fns;\n}\nfunction getPositionOnElement(evt, el, zoom) {\n  var jel = el;\n  var box = _typeof(el.getBoundingClientRect) !== UNDEFINED ? el.getBoundingClientRect() : {\n    left: 0,\n    top: 0,\n    width: 0,\n    height: 0\n  },\n      body = document.body,\n      docElem = document.documentElement,\n      scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop,\n      scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft,\n      clientTop = docElem.clientTop || body.clientTop || 0,\n      clientLeft = docElem.clientLeft || body.clientLeft || 0,\n      pst = 0,\n      psl = 0,\n      top = box.top + scrollTop - clientTop + pst * zoom,\n      left = box.left + scrollLeft - clientLeft + psl * zoom,\n      cl = pageLocation(evt),\n      w = box.width || jel.offsetWidth * zoom,\n      h = box.height || jel.offsetHeight * zoom,\n      x = (cl.x - left) / w,\n      y = (cl.y - top) / h;\n  return {\n    x: x,\n    y: y\n  };\n}\nfunction isSVGElementOverlay(o) {\n  return isArrowOverlay(o) || isDiamondOverlay(o) || isPlainArrowOverlay(o);\n}\nfunction setVisible(component, v) {\n  if (component.canvas) {\n    component.canvas.style.display = v ? \"block\" : \"none\";\n  }\n}\nfunction cleanup(component) {\n  if (component.canvas) {\n    component.canvas.parentNode.removeChild(component.canvas);\n  }\n  delete component.canvas;\n}\nfunction getEndpointCanvas(ep) {\n  return ep.canvas;\n}\nfunction getLabelElement(o) {\n  return HTMLElementOverlay.getElement(o);\n}\nfunction getCustomElement(o) {\n  return HTMLElementOverlay.getElement(o, o.component, function (c) {\n    var el = o.create(c);\n    o.instance.addClass(el, o.instance.overlayClass);\n    return el;\n  });\n}\nfunction groupDragConstrain(desiredLoc, dragEl, constrainRect, size) {\n  var x = desiredLoc.x,\n      y = desiredLoc.y;\n  if (dragEl._jsPlumbParentGroup && dragEl._jsPlumbParentGroup.constrain) {\n    x = Math.max(desiredLoc.x, 0);\n    y = Math.max(desiredLoc.y, 0);\n    x = Math.min(x, constrainRect.w - size.w);\n    y = Math.min(y, constrainRect.h - size.h);\n  }\n  return {\n    x: x,\n    y: y\n  };\n}\nvar BrowserJsPlumbInstance = function (_JsPlumbInstance) {\n  _inherits(BrowserJsPlumbInstance, _JsPlumbInstance);\n  var _super = _createSuper(BrowserJsPlumbInstance);\n  function BrowserJsPlumbInstance(_instanceIndex, defaults) {\n    var _this;\n    _classCallCheck(this, BrowserJsPlumbInstance);\n    _this = _super.call(this, _instanceIndex, defaults);\n    _this._instanceIndex = _instanceIndex;\n    _defineProperty(_assertThisInitialized(_this), \"containerType\", null);\n    _defineProperty(_assertThisInitialized(_this), \"dragSelection\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"dragManager\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorClick\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorDblClick\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorTap\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorDblTap\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_endpointClick\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_endpointDblClick\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_overlayClick\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_overlayDblClick\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_overlayTap\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_overlayDblTap\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorMouseover\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorMouseout\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_endpointMouseover\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_endpointMouseout\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorContextmenu\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorMousedown\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_connectorMouseup\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_endpointMousedown\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_endpointMouseup\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_overlayMouseover\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_overlayMouseout\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementClick\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementTap\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementDblTap\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementMouseenter\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementMouseexit\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementMousemove\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementMouseup\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementMousedown\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_elementContextmenu\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"_resizeObserver\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"eventManager\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"draggingClass\", \"jtk-dragging\");\n    _defineProperty(_assertThisInitialized(_this), \"elementDraggingClass\", \"jtk-element-dragging\");\n    _defineProperty(_assertThisInitialized(_this), \"hoverClass\", \"jtk-hover\");\n    _defineProperty(_assertThisInitialized(_this), \"sourceElementDraggingClass\", \"jtk-source-element-dragging\");\n    _defineProperty(_assertThisInitialized(_this), \"targetElementDraggingClass\", \"jtk-target-element-dragging\");\n    _defineProperty(_assertThisInitialized(_this), \"hoverSourceClass\", \"jtk-source-hover\");\n    _defineProperty(_assertThisInitialized(_this), \"hoverTargetClass\", \"jtk-target-hover\");\n    _defineProperty(_assertThisInitialized(_this), \"dragSelectClass\", \"jtk-drag-select\");\n    _defineProperty(_assertThisInitialized(_this), \"managedElementsSelector\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"elementsDraggable\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"elementDragHandler\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"groupDragOptions\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"elementDragOptions\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"svg\", {\n      node: function node(name, attributes) {\n        return _node(name, attributes);\n      },\n      attr: function attr(node, attributes) {\n        return _attr(node, attributes);\n      },\n      pos: function pos(d) {\n        return _pos(d);\n      }\n    });\n    defaults = defaults || {};\n    _this.containerType = getElementType(_this.getContainer());\n    _this.elementsDraggable = defaults && defaults.elementsDraggable !== false;\n    _this.managedElementsSelector = defaults ? defaults.managedElementsSelector || SELECTOR_MANAGED_ELEMENT : SELECTOR_MANAGED_ELEMENT;\n    _this.eventManager = new EventManager();\n    _this.dragSelection = new DragSelection(_assertThisInitialized(_this));\n    _this.dragManager = new DragManager(_assertThisInitialized(_this), _this.dragSelection);\n    _this.dragManager.addHandler(new EndpointDragHandler(_assertThisInitialized(_this)));\n    _this.groupDragOptions = {\n      constrainFunction: groupDragConstrain\n    };\n    _this.dragManager.addHandler(new GroupDragHandler(_assertThisInitialized(_this), _this.dragSelection), _this.groupDragOptions);\n    _this.elementDragHandler = new ElementDragHandler(_assertThisInitialized(_this), _this.dragSelection);\n    _this.elementDragOptions = defaults && defaults.dragOptions || {};\n    _this.dragManager.addHandler(_this.elementDragHandler, _this.elementDragOptions);\n    if (defaults && defaults.dragOptions && defaults.dragOptions.filter) {\n      _this.dragManager.addFilter(defaults.dragOptions.filter);\n    }\n    _this._createEventListeners();\n    _this._attachEventDelegates();\n    if (defaults.resizeObserver !== false) {\n      try {\n        _this._resizeObserver = new ResizeObserver(function (entries) {\n          var updates = entries.filter(function (e) {\n            var a = _this.getAttribute(e.target, ATTRIBUTE_MANAGED);\n            if (a != null) {\n              var v = _this.viewport._elementMap.get(a);\n              return v ? v.w !== e.contentRect.width || v.h !== e.contentRect.height : false;\n            } else {\n              return false;\n            }\n          });\n          updates.forEach(function (el) {\n            return _this.revalidate(el.target);\n          });\n        });\n      } catch (e) {\n        log(\"WARN: ResizeObserver could not be attached.\");\n      }\n    }\n    return _this;\n  }\n  _createClass(BrowserJsPlumbInstance, [{\n    key: \"fireOverlayMethod\",\n    value: function fireOverlayMethod(overlay, event, e) {\n      var stem = overlay.component instanceof Connection ? CONNECTION : ENDPOINT;\n      var mappedEvent = compoundEvent(stem, event)\n      ;\n      e._jsPlumbOverlay = overlay;\n      overlay.fire(event, {\n        e: e,\n        overlay: overlay\n      });\n      this.fire(mappedEvent, overlay.component, e);\n    }\n  }, {\n    key: \"addDragFilter\",\n    value: function addDragFilter(filter, exclude) {\n      this.dragManager.addFilter(filter, exclude);\n    }\n  }, {\n    key: \"removeDragFilter\",\n    value: function removeDragFilter(filter) {\n      this.dragManager.removeFilter(filter);\n    }\n  }, {\n    key: \"setDragGrid\",\n    value: function setDragGrid(grid) {\n      this.dragManager.setOption(this.elementDragHandler, {\n        grid: grid\n      });\n    }\n  }, {\n    key: \"setDragConstrainFunction\",\n    value: function setDragConstrainFunction(constrainFunction) {\n      this.dragManager.setOption(this.elementDragHandler, {\n        constrainFunction: constrainFunction\n      });\n    }\n  }, {\n    key: \"_removeElement\",\n    value: function _removeElement(element) {\n      element.parentNode && element.parentNode.removeChild(element);\n    }\n  }, {\n    key: \"_appendElement\",\n    value: function _appendElement(el, parent) {\n      if (parent) {\n        parent.appendChild(el);\n      }\n    }\n  }, {\n    key: \"_appendElementToGroup\",\n    value: function _appendElementToGroup(group, el) {\n      this.getGroupContentArea(group).appendChild(el);\n    }\n  }, {\n    key: \"_appendElementToContainer\",\n    value: function _appendElementToContainer(el) {\n      this._appendElement(el, this.getContainer());\n    }\n  }, {\n    key: \"_getAssociatedElements\",\n    value: function _getAssociatedElements(el) {\n      var a = [];\n      if (el.nodeType !== 3 && el.nodeType !== 8) {\n        var els = el.querySelectorAll(SELECTOR_MANAGED_ELEMENT);\n        Array.prototype.push.apply(a, els);\n      }\n      return a.filter(function (_a) {\n        return _a.nodeType !== 3 && _a.nodeType !== 8;\n      });\n    }\n  }, {\n    key: \"shouldFireEvent\",\n    value: function shouldFireEvent(event, value, originalEvent) {\n      return true;\n    }\n  }, {\n    key: \"getClass\",\n    value: function getClass$1(el) {\n      return getClass(el);\n    }\n  }, {\n    key: \"addClass\",\n    value: function addClass$1(el, clazz) {\n      addClass(el, clazz);\n    }\n  }, {\n    key: \"hasClass\",\n    value: function hasClass$1(el, clazz) {\n      return hasClass(el, clazz);\n    }\n  }, {\n    key: \"removeClass\",\n    value: function removeClass$1(el, clazz) {\n      removeClass(el, clazz);\n    }\n  }, {\n    key: \"toggleClass\",\n    value: function toggleClass$1(el, clazz) {\n      toggleClass(el, clazz);\n    }\n  }, {\n    key: \"setAttribute\",\n    value: function setAttribute(el, name, value) {\n      el.setAttribute(name, value);\n    }\n  }, {\n    key: \"getAttribute\",\n    value: function getAttribute(el, name) {\n      return el.getAttribute(name);\n    }\n  }, {\n    key: \"setAttributes\",\n    value: function setAttributes(el, atts) {\n      for (var i in atts) {\n        el.setAttribute(i, atts[i]);\n      }\n    }\n  }, {\n    key: \"removeAttribute\",\n    value: function removeAttribute(el, attName) {\n      el.removeAttribute && el.removeAttribute(attName);\n    }\n  }, {\n    key: \"on\",\n    value: function on(el, event, callbackOrSelector, callback) {\n      var _this2 = this;\n      var _one = function _one(_el) {\n        if (callback == null) {\n          _this2.eventManager.on(_el, event, callbackOrSelector);\n        } else {\n          _this2.eventManager.on(_el, event, callbackOrSelector, callback);\n        }\n      };\n      if (isNodeList(el)) {\n        forEach(el, function (el) {\n          return _one(el);\n        });\n      } else {\n        _one(el);\n      }\n      return this;\n    }\n  }, {\n    key: \"off\",\n    value: function off(el, event, callback) {\n      var _this3 = this;\n      if (isNodeList(el)) {\n        forEach(el, function (_el) {\n          return _this3.eventManager.off(_el, event, callback);\n        });\n      } else {\n        this.eventManager.off(el, event, callback);\n      }\n      return this;\n    }\n  }, {\n    key: \"trigger\",\n    value: function trigger(el, event, originalEvent, payload, detail) {\n      this.eventManager.trigger(el, event, originalEvent, payload, detail);\n    }\n  }, {\n    key: \"getOffsetRelativeToRoot\",\n    value: function getOffsetRelativeToRoot(el) {\n      return offsetRelativeToRoot(el);\n    }\n  }, {\n    key: \"getOffset\",\n    value: function getOffset(el) {\n      var jel = el;\n      var container = this.getContainer();\n      var out = this.getPosition(jel),\n          op = el !== container && jel.offsetParent !== container ? jel.offsetParent : null,\n          _maybeAdjustScroll = function _maybeAdjustScroll(offsetParent) {\n        if (offsetParent != null && offsetParent !== document.body && (offsetParent.scrollTop > 0 || offsetParent.scrollLeft > 0)) {\n          out.x -= offsetParent.scrollLeft;\n          out.y -= offsetParent.scrollTop;\n        }\n      };\n      while (op != null) {\n        out.x += op.offsetLeft;\n        out.y += op.offsetTop;\n        _maybeAdjustScroll(op);\n        op = op.offsetParent === container ? null : op.offsetParent;\n      }\n      if (container != null && (container.scrollTop > 0 || container.scrollLeft > 0)) {\n        var pp = jel.offsetParent != null ? this.getStyle(jel.offsetParent, PROPERTY_POSITION) : STATIC,\n        p = this.getStyle(jel, PROPERTY_POSITION);\n        if (p !== ABSOLUTE && p !== FIXED && pp !== ABSOLUTE && pp !== FIXED) {\n          out.x -= container.scrollLeft;\n          out.y -= container.scrollTop;\n        }\n      }\n      return out;\n    }\n  }, {\n    key: \"getSize\",\n    value: function getSize(el) {\n      var _el = el;\n      if (_el.offsetWidth != null) {\n        return offsetSize(el);\n      } else if (_el.width && _el.width.baseVal) {\n        return svgWidthHeightSize(_el);\n      }\n    }\n  }, {\n    key: \"getPosition\",\n    value: function getPosition(el) {\n      var _el = el;\n      if (_el.offsetLeft != null) {\n        return {\n          x: parseFloat(_el.offsetLeft),\n          y: parseFloat(_el.offsetTop)\n        };\n      } else if (_el.x && _el.x.baseVal) {\n        return svgXYPosition(_el);\n      }\n    }\n  }, {\n    key: \"getStyle\",\n    value: function getStyle(el, prop) {\n      if (_typeof(window.getComputedStyle) !== UNDEFINED) {\n        return getComputedStyle(el, null).getPropertyValue(prop);\n      } else {\n        return el.currentStyle[prop];\n      }\n    }\n  }, {\n    key: \"getGroupContentArea\",\n    value: function getGroupContentArea(group) {\n      var da = this.getSelector(group.el, SELECTOR_GROUP_CONTAINER);\n      return da && da.length > 0 ? da[0] : group.el;\n    }\n  }, {\n    key: \"getSelector\",\n    value: function getSelector(ctx, spec) {\n      var sel = null;\n      if (arguments.length === 1) {\n        if (!isString(ctx)) {\n          var nodeList = document.createDocumentFragment();\n          nodeList.appendChild(ctx);\n          return fromArray(nodeList.childNodes);\n        }\n        sel = fromArray(document.querySelectorAll(ctx));\n      } else {\n        sel = fromArray(ctx.querySelectorAll(spec));\n      }\n      return sel;\n    }\n  }, {\n    key: \"setPosition\",\n    value: function setPosition(el, p) {\n      var jel = el;\n      jel.style.left = p.x + \"px\";\n      jel.style.top = p.y + \"px\";\n    }\n  }, {\n    key: \"setDraggable\",\n    value: function setDraggable(element, draggable) {\n      if (draggable) {\n        this.removeAttribute(element, ATTRIBUTE_NOT_DRAGGABLE);\n      } else {\n        this.setAttribute(element, ATTRIBUTE_NOT_DRAGGABLE, TRUE$1);\n      }\n    }\n  }, {\n    key: \"isDraggable\",\n    value: function isDraggable(el) {\n      var d = this.getAttribute(el, ATTRIBUTE_NOT_DRAGGABLE);\n      return d == null || d === FALSE$1;\n    }\n  }, {\n    key: \"toggleDraggable\",\n    value: function toggleDraggable(el) {\n      var state = this.isDraggable(el);\n      this.setDraggable(el, !state);\n      return !state;\n    }\n  }, {\n    key: \"_createEventListeners\",\n    value: function _createEventListeners() {\n      var _connClick = function _connClick(event, e) {\n        if (!e.defaultPrevented && e._jsPlumbOverlay == null) {\n          var connectorElement = findParent(getEventSource(e), SELECTOR_CONNECTOR, this.getContainer(), true);\n          this.fire(event, connectorElement.jtk.connector.connection, e);\n        }\n      };\n      this._connectorClick = _connClick.bind(this, EVENT_CONNECTION_CLICK);\n      this._connectorDblClick = _connClick.bind(this, EVENT_CONNECTION_DBL_CLICK);\n      this._connectorTap = _connClick.bind(this, EVENT_CONNECTION_TAP);\n      this._connectorDblTap = _connClick.bind(this, EVENT_CONNECTION_DBL_TAP);\n      var _connectorHover = function _connectorHover(state, e) {\n        var el = getEventSource(e).parentNode;\n        if (el.jtk && el.jtk.connector) {\n          var connector = el.jtk.connector;\n          var connection = connector.connection;\n          this.setConnectorHover(connector, state);\n          if (state) {\n            this.addClass(connection.source, this.hoverSourceClass);\n            this.addClass(connection.target, this.hoverTargetClass);\n          } else {\n            this.removeClass(connection.source, this.hoverSourceClass);\n            this.removeClass(connection.target, this.hoverTargetClass);\n          }\n          this.fire(state ? EVENT_CONNECTION_MOUSEOVER : EVENT_CONNECTION_MOUSEOUT, el.jtk.connector.connection, e);\n        }\n      };\n      this._connectorMouseover = _connectorHover.bind(this, true);\n      this._connectorMouseout = _connectorHover.bind(this, false);\n      var _connectorMouseupdown = function _connectorMouseupdown(state, e) {\n        var el = getEventSource(e).parentNode;\n        if (el.jtk && el.jtk.connector) {\n          this.fire(state ? EVENT_CONNECTION_MOUSEUP : EVENT_CONNECTION_MOUSEDOWN, el.jtk.connector.connection, e);\n        }\n      };\n      this._connectorMouseup = _connectorMouseupdown.bind(this, true);\n      this._connectorMousedown = _connectorMouseupdown.bind(this, false);\n      this._connectorContextmenu = function (e) {\n        var el = getEventSource(e).parentNode;\n        if (el.jtk && el.jtk.connector) {\n          this.fire(EVENT_CONNECTION_CONTEXTMENU, el.jtk.connector.connection, e);\n        }\n      }.bind(this);\n      var _epClick = function _epClick(event, e, endpointElement) {\n        if (!e.defaultPrevented && e._jsPlumbOverlay == null) {\n          this.fire(event, endpointElement.jtk.endpoint, e);\n        }\n      };\n      this._endpointClick = _epClick.bind(this, EVENT_ENDPOINT_CLICK);\n      this._endpointDblClick = _epClick.bind(this, EVENT_ENDPOINT_DBL_CLICK);\n      var _endpointHover = function _endpointHover(state, e) {\n        var el = getEventSource(e);\n        if (el.jtk && el.jtk.endpoint) {\n          this.setEndpointHover(el.jtk.endpoint, state);\n          this.fire(state ? EVENT_ENDPOINT_MOUSEOVER : EVENT_ENDPOINT_MOUSEOUT, el.jtk.endpoint, e);\n        }\n      };\n      this._endpointMouseover = _endpointHover.bind(this, true);\n      this._endpointMouseout = _endpointHover.bind(this, false);\n      var _endpointMouseupdown = function _endpointMouseupdown(state, e) {\n        var el = getEventSource(e);\n        if (el.jtk && el.jtk.endpoint) {\n          this.fire(state ? EVENT_ENDPOINT_MOUSEUP : EVENT_ENDPOINT_MOUSEDOWN, el.jtk.endpoint, e);\n        }\n      };\n      this._endpointMouseup = _endpointMouseupdown.bind(this, true);\n      this._endpointMousedown = _endpointMouseupdown.bind(this, false);\n      var _oClick = function (method, e) {\n        var overlayElement = findParent(getEventSource(e), SELECTOR_OVERLAY, this.getContainer(), true);\n        var overlay = overlayElement.jtk.overlay;\n        if (overlay) {\n          this.fireOverlayMethod(overlay, method, e);\n        }\n      }.bind(this);\n      this._overlayClick = _oClick.bind(this, EVENT_CLICK);\n      this._overlayDblClick = _oClick.bind(this, EVENT_DBL_CLICK);\n      this._overlayTap = _oClick.bind(this, EVENT_TAP);\n      this._overlayDblTap = _oClick.bind(this, EVENT_DBL_TAP);\n      var _overlayHover = function _overlayHover(state, e) {\n        var overlayElement = findParent(getEventSource(e), SELECTOR_OVERLAY, this.getContainer(), true);\n        var overlay = overlayElement.jtk.overlay;\n        if (overlay) {\n          this.setOverlayHover(overlay, state);\n        }\n      };\n      this._overlayMouseover = _overlayHover.bind(this, true);\n      this._overlayMouseout = _overlayHover.bind(this, false);\n      var _elementClick = function _elementClick(event, e, target) {\n        if (!e.defaultPrevented) {\n          this.fire(e.detail === 1 ? EVENT_ELEMENT_CLICK : EVENT_ELEMENT_DBL_CLICK, target, e);\n        }\n      };\n      this._elementClick = _elementClick.bind(this, EVENT_ELEMENT_CLICK);\n      var _elementTap = function _elementTap(event, e, target) {\n        if (!e.defaultPrevented) {\n          this.fire(EVENT_ELEMENT_TAP, target, e);\n        }\n      };\n      this._elementTap = _elementTap.bind(this, EVENT_ELEMENT_TAP);\n      var _elementDblTap = function _elementDblTap(event, e, target) {\n        if (!e.defaultPrevented) {\n          this.fire(EVENT_ELEMENT_DBL_TAP, target, e);\n        }\n      };\n      this._elementDblTap = _elementDblTap.bind(this, EVENT_ELEMENT_DBL_TAP);\n      var _elementHover = function _elementHover(state, e) {\n        this.fire(state ? EVENT_ELEMENT_MOUSE_OVER : EVENT_ELEMENT_MOUSE_OUT, getEventSource(e), e);\n      };\n      this._elementMouseenter = _elementHover.bind(this, true);\n      this._elementMouseexit = _elementHover.bind(this, false);\n      this._elementMousemove = function (e) {\n        this.fire(EVENT_ELEMENT_MOUSE_MOVE, getEventSource(e), e);\n      }.bind(this);\n      this._elementMouseup = function (e) {\n        this.fire(EVENT_ELEMENT_MOUSE_UP, getEventSource(e), e);\n      }.bind(this);\n      this._elementMousedown = function (e) {\n        this.fire(EVENT_ELEMENT_MOUSE_DOWN, getEventSource(e), e);\n      }.bind(this);\n      this._elementContextmenu = function (e) {\n        this.fire(EVENT_ELEMENT_CONTEXTMENU, getEventSource(e), e);\n      }.bind(this);\n    }\n  }, {\n    key: \"_attachEventDelegates\",\n    value: function _attachEventDelegates() {\n      var currentContainer = this.getContainer();\n      this.eventManager.on(currentContainer, EVENT_CLICK, SELECTOR_OVERLAY, this._overlayClick);\n      this.eventManager.on(currentContainer, EVENT_DBL_CLICK, SELECTOR_OVERLAY, this._overlayDblClick);\n      this.eventManager.on(currentContainer, EVENT_TAP, SELECTOR_OVERLAY, this._overlayTap);\n      this.eventManager.on(currentContainer, EVENT_DBL_TAP, SELECTOR_OVERLAY, this._overlayDblTap);\n      this.eventManager.on(currentContainer, EVENT_CLICK, SELECTOR_CONNECTOR, this._connectorClick);\n      this.eventManager.on(currentContainer, EVENT_DBL_CLICK, SELECTOR_CONNECTOR, this._connectorDblClick);\n      this.eventManager.on(currentContainer, EVENT_TAP, SELECTOR_CONNECTOR, this._connectorTap);\n      this.eventManager.on(currentContainer, EVENT_DBL_TAP, SELECTOR_CONNECTOR, this._connectorDblTap);\n      this.eventManager.on(currentContainer, EVENT_CLICK, SELECTOR_ENDPOINT, this._endpointClick);\n      this.eventManager.on(currentContainer, EVENT_DBL_CLICK, SELECTOR_ENDPOINT, this._endpointDblClick);\n      this.eventManager.on(currentContainer, EVENT_CLICK, this.managedElementsSelector, this._elementClick);\n      this.eventManager.on(currentContainer, EVENT_TAP, this.managedElementsSelector, this._elementTap);\n      this.eventManager.on(currentContainer, EVENT_DBL_TAP, this.managedElementsSelector, this._elementDblTap);\n      this.eventManager.on(currentContainer, EVENT_MOUSEOVER, SELECTOR_CONNECTOR, this._connectorMouseover);\n      this.eventManager.on(currentContainer, EVENT_MOUSEOUT, SELECTOR_CONNECTOR, this._connectorMouseout);\n      this.eventManager.on(currentContainer, EVENT_CONTEXTMENU, SELECTOR_CONNECTOR, this._connectorContextmenu);\n      this.eventManager.on(currentContainer, EVENT_MOUSEUP, SELECTOR_CONNECTOR, this._connectorMouseup);\n      this.eventManager.on(currentContainer, EVENT_MOUSEDOWN, SELECTOR_CONNECTOR, this._connectorMousedown);\n      this.eventManager.on(currentContainer, EVENT_MOUSEOVER, SELECTOR_ENDPOINT, this._endpointMouseover);\n      this.eventManager.on(currentContainer, EVENT_MOUSEOUT, SELECTOR_ENDPOINT, this._endpointMouseout);\n      this.eventManager.on(currentContainer, EVENT_MOUSEUP, SELECTOR_ENDPOINT, this._endpointMouseup);\n      this.eventManager.on(currentContainer, EVENT_MOUSEDOWN, SELECTOR_ENDPOINT, this._endpointMousedown);\n      this.eventManager.on(currentContainer, EVENT_MOUSEOVER, SELECTOR_OVERLAY, this._overlayMouseover);\n      this.eventManager.on(currentContainer, EVENT_MOUSEOUT, SELECTOR_OVERLAY, this._overlayMouseout);\n      this.eventManager.on(currentContainer, EVENT_MOUSEOVER, SELECTOR_MANAGED_ELEMENT, this._elementMouseenter);\n      this.eventManager.on(currentContainer, EVENT_MOUSEOUT, SELECTOR_MANAGED_ELEMENT, this._elementMouseexit);\n      this.eventManager.on(currentContainer, EVENT_MOUSEMOVE, SELECTOR_MANAGED_ELEMENT, this._elementMousemove);\n      this.eventManager.on(currentContainer, EVENT_MOUSEUP, SELECTOR_MANAGED_ELEMENT, this._elementMouseup);\n      this.eventManager.on(currentContainer, EVENT_MOUSEDOWN, SELECTOR_MANAGED_ELEMENT, this._elementMousedown);\n      this.eventManager.on(currentContainer, EVENT_CONTEXTMENU, SELECTOR_MANAGED_ELEMENT, this._elementContextmenu);\n    }\n  }, {\n    key: \"_detachEventDelegates\",\n    value: function _detachEventDelegates() {\n      var currentContainer = this.getContainer();\n      if (currentContainer) {\n        this.eventManager.off(currentContainer, EVENT_CLICK, this._connectorClick);\n        this.eventManager.off(currentContainer, EVENT_DBL_CLICK, this._connectorDblClick);\n        this.eventManager.off(currentContainer, EVENT_TAP, this._connectorTap);\n        this.eventManager.off(currentContainer, EVENT_DBL_TAP, this._connectorDblTap);\n        this.eventManager.off(currentContainer, EVENT_CLICK, this._endpointClick);\n        this.eventManager.off(currentContainer, EVENT_DBL_CLICK, this._endpointDblClick);\n        this.eventManager.off(currentContainer, EVENT_CLICK, this._overlayClick);\n        this.eventManager.off(currentContainer, EVENT_DBL_CLICK, this._overlayDblClick);\n        this.eventManager.off(currentContainer, EVENT_TAP, this._overlayTap);\n        this.eventManager.off(currentContainer, EVENT_DBL_TAP, this._overlayDblTap);\n        this.eventManager.off(currentContainer, EVENT_CLICK, this._elementClick);\n        this.eventManager.off(currentContainer, EVENT_TAP, this._elementTap);\n        this.eventManager.off(currentContainer, EVENT_DBL_TAP, this._elementDblTap);\n        this.eventManager.off(currentContainer, EVENT_MOUSEOVER, this._connectorMouseover);\n        this.eventManager.off(currentContainer, EVENT_MOUSEOUT, this._connectorMouseout);\n        this.eventManager.off(currentContainer, EVENT_CONTEXTMENU, this._connectorContextmenu);\n        this.eventManager.off(currentContainer, EVENT_MOUSEUP, this._connectorMouseup);\n        this.eventManager.off(currentContainer, EVENT_MOUSEDOWN, this._connectorMousedown);\n        this.eventManager.off(currentContainer, EVENT_MOUSEOVER, this._endpointMouseover);\n        this.eventManager.off(currentContainer, EVENT_MOUSEOUT, this._endpointMouseout);\n        this.eventManager.off(currentContainer, EVENT_MOUSEUP, this._endpointMouseup);\n        this.eventManager.off(currentContainer, EVENT_MOUSEDOWN, this._endpointMousedown);\n        this.eventManager.off(currentContainer, EVENT_MOUSEOVER, this._overlayMouseover);\n        this.eventManager.off(currentContainer, EVENT_MOUSEOUT, this._overlayMouseout);\n        this.eventManager.off(currentContainer, EVENT_MOUSEENTER, this._elementMouseenter);\n        this.eventManager.off(currentContainer, EVENT_MOUSEEXIT, this._elementMouseexit);\n        this.eventManager.off(currentContainer, EVENT_MOUSEMOVE, this._elementMousemove);\n        this.eventManager.off(currentContainer, EVENT_MOUSEUP, this._elementMouseup);\n        this.eventManager.off(currentContainer, EVENT_MOUSEDOWN, this._elementMousedown);\n        this.eventManager.off(currentContainer, EVENT_CONTEXTMENU, this._elementContextmenu);\n      }\n    }\n  }, {\n    key: \"setContainer\",\n    value: function setContainer(newContainer) {\n      var _this4 = this;\n      if (newContainer === document || newContainer === document.body) {\n        throw new Error(\"Cannot set document or document.body as container element\");\n      }\n      this._detachEventDelegates();\n      var dragFilters;\n      if (this.dragManager != null) {\n        dragFilters = this.dragManager.reset();\n      }\n      this.setAttribute(newContainer, ATTRIBUTE_CONTAINER, uuid().replace(\"-\", \"\"));\n      var currentContainer = this.getContainer();\n      if (currentContainer != null) {\n        currentContainer.removeAttribute(ATTRIBUTE_CONTAINER);\n        var children = fromArray(currentContainer.childNodes).filter(function (cn) {\n          return cn != null && (_this4.hasClass(cn, CLASS_CONNECTOR) || _this4.hasClass(cn, CLASS_ENDPOINT) || _this4.hasClass(cn, CLASS_OVERLAY) || cn.getAttribute && cn.getAttribute(ATTRIBUTE_MANAGED) != null);\n        });\n        forEach(children, function (el) {\n          newContainer.appendChild(el);\n        });\n      }\n      _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"setContainer\", this).call(this, newContainer);\n      this.containerType = getElementType(newContainer);\n      if (this.eventManager != null) {\n        this._attachEventDelegates();\n      }\n      if (this.dragManager != null) {\n        this.dragManager.addHandler(new EndpointDragHandler(this));\n        this.dragManager.addHandler(new GroupDragHandler(this, this.dragSelection), this.groupDragOptions);\n        this.elementDragHandler = new ElementDragHandler(this, this.dragSelection);\n        this.dragManager.addHandler(this.elementDragHandler, this.elementDragOptions);\n        if (dragFilters != null) {\n          this.dragManager.setFilters(dragFilters);\n        }\n      }\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"reset\", this).call(this);\n      if (this._resizeObserver) {\n        this._resizeObserver.disconnect();\n      }\n      var container = this.getContainer();\n      var els = container.querySelectorAll([SELECTOR_MANAGED_ELEMENT, SELECTOR_ENDPOINT, SELECTOR_CONNECTOR, SELECTOR_OVERLAY].join(\",\"));\n      forEach(els, function (el) {\n        return el.parentNode && el.parentNode.removeChild(el);\n      });\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._detachEventDelegates();\n      if (this.dragManager != null) {\n        this.dragManager.reset();\n      }\n      this.clearDragSelection();\n      _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"destroy\", this).call(this);\n    }\n  }, {\n    key: \"unmanage\",\n    value: function unmanage(el, removeElement) {\n      if (this._resizeObserver != null) {\n        this._resizeObserver.unobserve(el);\n      }\n      this.removeFromDragSelection(el);\n      _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"unmanage\", this).call(this, el, removeElement);\n    }\n  }, {\n    key: \"addToDragSelection\",\n    value: function addToDragSelection() {\n      var _this5 = this;\n      for (var _len = arguments.length, el = new Array(_len), _key = 0; _key < _len; _key++) {\n        el[_key] = arguments[_key];\n      }\n      forEach(el, function (_el) {\n        return _this5.dragSelection.add(_el);\n      });\n    }\n  }, {\n    key: \"clearDragSelection\",\n    value: function clearDragSelection() {\n      this.dragSelection.clear();\n    }\n  }, {\n    key: \"removeFromDragSelection\",\n    value: function removeFromDragSelection() {\n      var _this6 = this;\n      for (var _len2 = arguments.length, el = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        el[_key2] = arguments[_key2];\n      }\n      forEach(el, function (_el) {\n        return _this6.dragSelection.remove(_el);\n      });\n    }\n  }, {\n    key: \"toggleDragSelection\",\n    value: function toggleDragSelection() {\n      var _this7 = this;\n      for (var _len3 = arguments.length, el = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        el[_key3] = arguments[_key3];\n      }\n      forEach(el, function (_el) {\n        return _this7.dragSelection.toggle(_el);\n      });\n    }\n  }, {\n    key: \"addToDragGroup\",\n    value: function addToDragGroup(spec) {\n      var _this$elementDragHand;\n      for (var _len4 = arguments.length, els = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        els[_key4 - 1] = arguments[_key4];\n      }\n      (_this$elementDragHand = this.elementDragHandler).addToDragGroup.apply(_this$elementDragHand, [spec].concat(els));\n    }\n  }, {\n    key: \"removeFromDragGroup\",\n    value: function removeFromDragGroup() {\n      var _this$elementDragHand2;\n      (_this$elementDragHand2 = this.elementDragHandler).removeFromDragGroup.apply(_this$elementDragHand2, arguments);\n    }\n  }, {\n    key: \"setDragGroupState\",\n    value: function setDragGroupState(state) {\n      var _this$elementDragHand3;\n      for (var _len5 = arguments.length, els = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n        els[_key5 - 1] = arguments[_key5];\n      }\n      (_this$elementDragHand3 = this.elementDragHandler).setDragGroupState.apply(_this$elementDragHand3, [state].concat(els));\n    }\n  }, {\n    key: \"clearDragGroup\",\n    value: function clearDragGroup(name) {\n      this.elementDragHandler.clearDragGroup(name);\n    }\n  }, {\n    key: \"consume\",\n    value: function consume$1(e, doNotPreventDefault) {\n      consume(e, doNotPreventDefault);\n    }\n  }, {\n    key: \"rotate\",\n    value: function rotate(element, rotation, doNotRepaint) {\n      var elementId = this.getId(element);\n      if (this._managedElements[elementId]) {\n        this._managedElements[elementId].el.style.transform = \"rotate(\" + rotation + \"deg)\";\n        this._managedElements[elementId].el.style.transformOrigin = \"center center\";\n        return _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"rotate\", this).call(this, element, rotation, doNotRepaint);\n      }\n      return {\n        c: new Set(),\n        e: new Set()\n      };\n    }\n  }, {\n    key: \"addOverlayClass\",\n    value:\n    function addOverlayClass(o, clazz) {\n      if (isLabelOverlay(o)) {\n        o.instance.addClass(getLabelElement(o), clazz);\n      } else if (isSVGElementOverlay(o)) {\n        o.instance.addClass(ensureSVGOverlayPath(o), clazz);\n      } else if (isCustomOverlay(o)) {\n        o.instance.addClass(getCustomElement(o), clazz);\n      } else {\n        throw \"Could not add class to overlay of type [\" + o.type + \"]\";\n      }\n    }\n  }, {\n    key: \"removeOverlayClass\",\n    value: function removeOverlayClass(o, clazz) {\n      if (isLabelOverlay(o)) {\n        o.instance.removeClass(getLabelElement(o), clazz);\n      } else if (isSVGElementOverlay(o)) {\n        o.instance.removeClass(ensureSVGOverlayPath(o), clazz);\n      } else if (isCustomOverlay(o)) {\n        o.instance.removeClass(getCustomElement(o), clazz);\n      } else {\n        throw \"Could not remove class from overlay of type [\" + o.type + \"]\";\n      }\n    }\n  }, {\n    key: \"_paintOverlay\",\n    value: function _paintOverlay(o, params, extents) {\n      if (isLabelOverlay(o)) {\n        getLabelElement(o);\n        var XY = o.component.getXY();\n        o.canvas.style.left = XY.x + params.d.minx + \"px\";\n        o.canvas.style.top = XY.y + params.d.miny + \"px\";\n      } else if (isSVGElementOverlay(o)) {\n        var path = isNaN(params.d.cxy.x) || isNaN(params.d.cxy.y) ? \"M 0 0\" : \"M\" + params.d.hxy.x + \",\" + params.d.hxy.y + \" L\" + params.d.tail[0].x + \",\" + params.d.tail[0].y + \" L\" + params.d.cxy.x + \",\" + params.d.cxy.y + \" L\" + params.d.tail[1].x + \",\" + params.d.tail[1].y + \" Z\";\n        paintSVGOverlay(o, path, params, extents);\n      } else if (isCustomOverlay(o)) {\n        getCustomElement(o);\n        var _XY = o.component.getXY();\n        o.canvas.style.left = _XY.x + params.d.minx + \"px\";\n        o.canvas.style.top = _XY.y + params.d.miny + \"px\";\n      } else {\n        throw \"Could not paint overlay of type [\" + o.type + \"]\";\n      }\n    }\n  }, {\n    key: \"setOverlayVisible\",\n    value: function setOverlayVisible(o, visible) {\n      var d = visible ? \"block\" : \"none\";\n      function s(el) {\n        if (el != null) {\n          el.style.display = d;\n        }\n      }\n      if (isLabelOverlay(o)) {\n        s(getLabelElement(o));\n      } else if (isCustomOverlay(o)) {\n        s(getCustomElement(o));\n      } else if (isSVGElementOverlay(o)) {\n        s(o.path);\n      }\n    }\n  }, {\n    key: \"reattachOverlay\",\n    value: function reattachOverlay(o, c) {\n      if (isLabelOverlay(o)) {\n        o.instance._appendElement(getLabelElement(o), this.getContainer());\n      } else if (isCustomOverlay(o)) {\n        o.instance._appendElement(getCustomElement(o), this.getContainer());\n      } else if (isSVGElementOverlay(o)) {\n        this._appendElement(ensureSVGOverlayPath(o), c.connector.canvas);\n      }\n    }\n  }, {\n    key: \"setOverlayHover\",\n    value: function setOverlayHover(o, hover) {\n      var canvas;\n      if (isLabelOverlay(o)) {\n        canvas = getLabelElement(o);\n      } else if (isCustomOverlay(o)) {\n        canvas = getCustomElement(o);\n      } else if (isSVGElementOverlay(o)) {\n        canvas = ensureSVGOverlayPath(o);\n      }\n      if (canvas != null) {\n        if (this.hoverClass != null) {\n          if (hover) {\n            this.addClass(canvas, this.hoverClass);\n          } else {\n            this.removeClass(canvas, this.hoverClass);\n          }\n        }\n        this.setHover(o.component, hover);\n      }\n    }\n  }, {\n    key: \"destroyOverlay\",\n    value: function destroyOverlay(o) {\n      if (isLabelOverlay(o)) {\n        var _el2 = getLabelElement(o);\n        _el2.parentNode.removeChild(_el2);\n        delete o.canvas;\n        delete o.cachedDimensions;\n      } else if (isArrowOverlay(o) || isDiamondOverlay(o) || isPlainArrowOverlay(o)) {\n        destroySVGOverlay(o);\n      } else if (isCustomOverlay(o)) {\n        var _el3 = getCustomElement(o);\n        _el3.parentNode.removeChild(_el3);\n        delete o.canvas;\n        delete o.cachedDimensions;\n      }\n    }\n  }, {\n    key: \"drawOverlay\",\n    value: function drawOverlay(o, component, paintStyle, absolutePosition) {\n      if (isLabelOverlay(o) || isCustomOverlay(o)) {\n        var td = HTMLElementOverlay._getDimensions(o);\n        if (td != null && td.w != null && td.h != null) {\n          var cxy = {\n            x: 0,\n            y: 0\n          };\n          if (absolutePosition) {\n            cxy = {\n              x: absolutePosition.x,\n              y: absolutePosition.y\n            };\n          } else if (component instanceof EndpointRepresentation) {\n            var locToUse = Array.isArray(o.location) ? o.location : [o.location, o.location];\n            cxy = {\n              x: locToUse[0] * component.w,\n              y: locToUse[1] * component.h\n            };\n          } else {\n            var loc = o.location,\n                absolute = false;\n            if (isString(o.location) || o.location < 0 || o.location > 1) {\n              loc = parseInt(\"\" + o.location, 10);\n              absolute = true;\n            }\n            cxy = component.pointOnPath(loc, absolute);\n          }\n          var minx = cxy.x - td.w / 2,\n              miny = cxy.y - td.h / 2;\n          return {\n            component: o,\n            d: {\n              minx: minx,\n              miny: miny,\n              td: td,\n              cxy: cxy\n            },\n            xmin: minx,\n            xmax: minx + td.w,\n            ymin: miny,\n            ymax: miny + td.h\n          };\n        } else {\n          return {\n            xmin: 0,\n            xmax: 0,\n            ymin: 0,\n            ymax: 0\n          };\n        }\n      } else if (isArrowOverlay(o) || isDiamondOverlay(o) || isPlainArrowOverlay(o)) {\n        return o.draw(component, paintStyle, absolutePosition);\n      } else {\n        throw \"Could not draw overlay of type [\" + o.type + \"]\";\n      }\n    }\n  }, {\n    key: \"updateLabel\",\n    value: function updateLabel(o) {\n      if (isFunction(o.label)) {\n        var lt = o.label(this);\n        if (lt != null) {\n          getLabelElement(o).innerText = lt;\n        } else {\n          getLabelElement(o).innerText = \"\";\n        }\n      } else {\n        if (o.labelText == null) {\n          o.labelText = o.label;\n          if (o.labelText != null) {\n            getLabelElement(o).innerText = o.labelText;\n          } else {\n            getLabelElement(o).innerText = \"\";\n          }\n        }\n      }\n    }\n  }, {\n    key: \"setHover\",\n    value: function setHover(component, hover) {\n      component._hover = hover;\n      if (component instanceof Endpoint && component.endpoint != null) {\n        this.setEndpointHover(component, hover, -1);\n      } else if (component instanceof Connection && component.connector != null) {\n        this.setConnectorHover(component.connector, hover);\n      }\n    }\n  }, {\n    key: \"paintConnector\",\n    value: function paintConnector(connector, paintStyle, extents) {\n      paintSvgConnector(this, connector, paintStyle, extents);\n    }\n  }, {\n    key: \"setConnectorHover\",\n    value: function setConnectorHover(connector, hover, sourceEndpoint) {\n      if (hover === false || !this.currentlyDragging && !this.isHoverSuspended()) {\n        var canvas = connector.canvas;\n        if (canvas != null) {\n          if (connector.hoverClass != null) {\n            if (hover) {\n              this.addClass(canvas, connector.hoverClass);\n            } else {\n              this.removeClass(canvas, connector.hoverClass);\n            }\n          }\n          if (hover) {\n            this.addClass(canvas, this.hoverClass);\n          } else {\n            this.removeClass(canvas, this.hoverClass);\n          }\n        }\n        if (connector.connection.hoverPaintStyle != null) {\n          connector.connection.paintStyleInUse = hover ? connector.connection.hoverPaintStyle : connector.connection.paintStyle;\n          if (!this._suspendDrawing) {\n            this._paintConnection(connector.connection);\n          }\n        }\n        if (connector.connection.endpoints[0] !== sourceEndpoint) {\n          this.setEndpointHover(connector.connection.endpoints[0], hover, 0, true);\n        }\n        if (connector.connection.endpoints[1] !== sourceEndpoint) {\n          this.setEndpointHover(connector.connection.endpoints[1], hover, 1, true);\n        }\n      }\n    }\n  }, {\n    key: \"destroyConnector\",\n    value: function destroyConnector(connection) {\n      if (connection.connector != null) {\n        cleanup(connection.connector);\n      }\n    }\n  }, {\n    key: \"addConnectorClass\",\n    value: function addConnectorClass(connector, clazz) {\n      if (connector.canvas) {\n        this.addClass(connector.canvas, clazz);\n      }\n    }\n  }, {\n    key: \"removeConnectorClass\",\n    value: function removeConnectorClass(connector, clazz) {\n      if (connector.canvas) {\n        this.removeClass(connector.canvas, clazz);\n      }\n    }\n  }, {\n    key: \"getConnectorClass\",\n    value: function getConnectorClass(connector) {\n      if (connector.canvas) {\n        return connector.canvas.className.baseVal;\n      } else {\n        return \"\";\n      }\n    }\n  }, {\n    key: \"setConnectorVisible\",\n    value: function setConnectorVisible(connector, v) {\n      setVisible(connector, v);\n    }\n  }, {\n    key: \"applyConnectorType\",\n    value: function applyConnectorType(connector, t) {\n      if (connector.canvas && t.cssClass) {\n        var classes = Array.isArray(t.cssClass) ? t.cssClass : [t.cssClass];\n        this.addClass(connector.canvas, classes.join(\" \"));\n      }\n    }\n  }, {\n    key: \"addEndpointClass\",\n    value: function addEndpointClass(ep, c) {\n      var canvas = getEndpointCanvas(ep.endpoint);\n      if (canvas != null) {\n        this.addClass(canvas, c);\n      }\n    }\n  }, {\n    key: \"applyEndpointType\",\n    value: function applyEndpointType(ep, t) {\n      if (t.cssClass) {\n        var canvas = getEndpointCanvas(ep.endpoint);\n        if (canvas) {\n          var classes = Array.isArray(t.cssClass) ? t.cssClass : [t.cssClass];\n          this.addClass(canvas, classes.join(\" \"));\n        }\n      }\n    }\n  }, {\n    key: \"destroyEndpoint\",\n    value: function destroyEndpoint(ep) {\n      var anchorClass = this.endpointAnchorClassPrefix + (ep.currentAnchorClass ? \"-\" + ep.currentAnchorClass : \"\");\n      this.removeClass(ep.element, anchorClass);\n      cleanup(ep.endpoint);\n    }\n  }, {\n    key: \"renderEndpoint\",\n    value: function renderEndpoint(ep, paintStyle) {\n      var renderer = endpointMap[ep.endpoint.type];\n      if (renderer != null) {\n        SvgEndpoint.paint(ep.endpoint, renderer, paintStyle);\n      } else {\n        log(\"jsPlumb: no endpoint renderer found for type [\" + ep.endpoint.type + \"]\");\n      }\n    }\n  }, {\n    key: \"removeEndpointClass\",\n    value: function removeEndpointClass(ep, c) {\n      var canvas = getEndpointCanvas(ep.endpoint);\n      if (canvas != null) {\n        this.removeClass(canvas, c);\n      }\n    }\n  }, {\n    key: \"getEndpointClass\",\n    value: function getEndpointClass(ep) {\n      var canvas = getEndpointCanvas(ep.endpoint);\n      if (canvas != null) {\n        return canvas.className;\n      } else {\n        return \"\";\n      }\n    }\n  }, {\n    key: \"setEndpointHover\",\n    value: function setEndpointHover(endpoint, hover, endpointIndex, doNotCascade) {\n      if (endpoint != null && (hover === false || !this.currentlyDragging && !this.isHoverSuspended())) {\n        var canvas = getEndpointCanvas(endpoint.endpoint);\n        if (canvas != null) {\n          if (endpoint.hoverClass != null) {\n            if (hover) {\n              this.addClass(canvas, endpoint.hoverClass);\n            } else {\n              this.removeClass(canvas, endpoint.hoverClass);\n            }\n          }\n          if (endpointIndex === 0 || endpointIndex === 1) {\n            var genericHoverClass = endpointIndex === 0 ? this.hoverSourceClass : this.hoverTargetClass;\n            if (hover) {\n              this.addClass(canvas, genericHoverClass);\n            } else {\n              this.removeClass(canvas, genericHoverClass);\n            }\n          }\n        }\n        if (endpoint.hoverPaintStyle != null) {\n          endpoint.paintStyleInUse = hover ? endpoint.hoverPaintStyle : endpoint.paintStyle;\n          if (!this._suspendDrawing) {\n            this.renderEndpoint(endpoint, endpoint.paintStyleInUse);\n          }\n        }\n        if (!doNotCascade) {\n          for (var i = 0; i < endpoint.connections.length; i++) {\n            this.setConnectorHover(endpoint.connections[i].connector, hover, endpoint);\n          }\n        }\n      }\n    }\n  }, {\n    key: \"setEndpointVisible\",\n    value: function setEndpointVisible(ep, v) {\n      setVisible(ep.endpoint, v);\n    }\n  }, {\n    key: \"setGroupVisible\",\n    value: function setGroupVisible(group, state) {\n      var m = group.el.querySelectorAll(SELECTOR_MANAGED_ELEMENT);\n      for (var i = 0; i < m.length; i++) {\n        if (state) {\n          this.show(m[i], true);\n        } else {\n          this.hide(m[i], true);\n        }\n      }\n    }\n  }, {\n    key: \"deleteConnection\",\n    value: function deleteConnection(connection, params) {\n      if (connection != null && connection.deleted !== true) {\n        if (connection.endpoints[0].deleted !== true) {\n          this.setEndpointHover(connection.endpoints[0], false, 0, true);\n        }\n        if (connection.endpoints[1].deleted !== true) {\n          this.setEndpointHover(connection.endpoints[1], false, 1, true);\n        }\n        return _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"deleteConnection\", this).call(this, connection, params);\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: \"addSourceSelector\",\n    value: function addSourceSelector(selector, params, exclude) {\n      this.addDragFilter(selector);\n      return _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"addSourceSelector\", this).call(this, selector, params, exclude);\n    }\n  }, {\n    key: \"removeSourceSelector\",\n    value: function removeSourceSelector(selector) {\n      this.removeDragFilter(selector.selector);\n      _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"removeSourceSelector\", this).call(this, selector);\n    }\n  }, {\n    key: \"manage\",\n    value: function manage(element, internalId, _recalc) {\n      if (this.containerType === ElementTypes.SVG && !isSVGElement(element)) {\n        throw new Error(\"ERROR: cannot manage non-svg element when container is an SVG element.\");\n      }\n      var managedElement = _get(_getPrototypeOf(BrowserJsPlumbInstance.prototype), \"manage\", this).call(this, element, internalId, _recalc);\n      if (managedElement != null) {\n        if (this._resizeObserver != null) {\n          this._resizeObserver.observe(managedElement.el);\n        }\n      }\n      return managedElement;\n    }\n  }]);\n  return BrowserJsPlumbInstance;\n}(JsPlumbInstance);\n\nvar CIRCLE = \"circle\";\nvar register$2 = function register() {\n  registerEndpointRenderer(DotEndpoint.type, {\n    makeNode: function makeNode(ep, style) {\n      return _node(CIRCLE, {\n        \"cx\": ep.w / 2,\n        \"cy\": ep.h / 2,\n        \"r\": ep.radius\n      });\n    },\n    updateNode: function updateNode(ep, node) {\n      _attr(node, {\n        \"cx\": \"\" + ep.w / 2,\n        \"cy\": \"\" + ep.h / 2,\n        \"r\": \"\" + ep.radius\n      });\n    }\n  });\n};\n\nvar RectangleEndpoint = function (_EndpointRepresentati) {\n  _inherits(RectangleEndpoint, _EndpointRepresentati);\n  var _super = _createSuper(RectangleEndpoint);\n  function RectangleEndpoint(endpoint, params) {\n    var _this;\n    _classCallCheck(this, RectangleEndpoint);\n    _this = _super.call(this, endpoint, params);\n    _defineProperty(_assertThisInitialized(_this), \"width\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"height\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"type\", RectangleEndpoint.type);\n    params = params || {};\n    _this.width = params.width || 10;\n    _this.height = params.height || 10;\n    return _this;\n  }\n  _createClass(RectangleEndpoint, null, [{\n    key: \"_getParams\",\n    value: function _getParams(ep) {\n      return {\n        width: ep.width,\n        height: ep.height\n      };\n    }\n  }]);\n  return RectangleEndpoint;\n}(EndpointRepresentation);\n_defineProperty(RectangleEndpoint, \"type\", \"Rectangle\");\nvar RectangleEndpointHandler = {\n  type: RectangleEndpoint.type,\n  cls: RectangleEndpoint,\n  compute: function compute(ep, anchorPoint, orientation, endpointStyle) {\n    var width = endpointStyle.width || ep.width,\n        height = endpointStyle.height || ep.height,\n        x = anchorPoint.curX - width / 2,\n        y = anchorPoint.curY - height / 2;\n    ep.x = x;\n    ep.y = y;\n    ep.w = width;\n    ep.h = height;\n    return [x, y, width, height];\n  },\n  getParams: function getParams(ep) {\n    return {\n      width: ep.width,\n      height: ep.height\n    };\n  }\n};\n\nvar RECT = \"rect\";\nvar register$1 = function register() {\n  registerEndpointRenderer(RectangleEndpoint.type, {\n    makeNode: function makeNode(ep, style) {\n      return _node(RECT, {\n        \"width\": ep.w,\n        \"height\": ep.h\n      });\n    },\n    updateNode: function updateNode(ep, node) {\n      _attr(node, {\n        \"width\": ep.w,\n        \"height\": ep.h\n      });\n    }\n  });\n};\n\nvar BlankEndpoint = function (_EndpointRepresentati) {\n  _inherits(BlankEndpoint, _EndpointRepresentati);\n  var _super = _createSuper(BlankEndpoint);\n  function BlankEndpoint(endpoint, params) {\n    var _this;\n    _classCallCheck(this, BlankEndpoint);\n    _this = _super.call(this, endpoint, params);\n    _defineProperty(_assertThisInitialized(_this), \"type\", BlankEndpoint.type);\n    return _this;\n  }\n  return BlankEndpoint;\n}(EndpointRepresentation);\n_defineProperty(BlankEndpoint, \"type\", \"Blank\");\nvar BlankEndpointHandler = {\n  type: BlankEndpoint.type,\n  cls: BlankEndpoint,\n  compute: function compute(ep, anchorPoint, orientation, endpointStyle) {\n    ep.x = anchorPoint.curX;\n    ep.y = anchorPoint.curY;\n    ep.w = 10;\n    ep.h = 0;\n    return [anchorPoint.curX, anchorPoint.curY, 10, 0];\n  },\n  getParams: function getParams(ep) {\n    return {};\n  }\n};\n\nvar BLANK_ATTRIBUTES = {\n  \"width\": 10,\n  \"height\": 0,\n  \"fill\": \"transparent\",\n  \"stroke\": \"transparent\"\n};\nvar register = function register() {\n  registerEndpointRenderer(BlankEndpoint.type, {\n    makeNode: function makeNode(ep, style) {\n      return _node(\"rect\", BLANK_ATTRIBUTES);\n    },\n    updateNode: function updateNode(ep, node) {\n      _attr(node, BLANK_ATTRIBUTES);\n    }\n  });\n};\n\nregister$2();\nregister();\nregister$1();\n\nvar SupportedEdge;\n(function (SupportedEdge) {\n  SupportedEdge[SupportedEdge[\"top\"] = 0] = \"top\";\n  SupportedEdge[SupportedEdge[\"bottom\"] = 1] = \"bottom\";\n})(SupportedEdge || (SupportedEdge = {}));\nvar DEFAULT_ANCHOR_LOCATIONS = new Map();\nDEFAULT_ANCHOR_LOCATIONS.set(SupportedEdge.top, [AnchorLocations.TopRight, AnchorLocations.TopLeft]);\nDEFAULT_ANCHOR_LOCATIONS.set(SupportedEdge.bottom, [AnchorLocations.BottomRight, AnchorLocations.BottomLeft]);\nvar DEFAULT_LIST_OPTIONS = {\n  deriveAnchor: function deriveAnchor(edge, index, ep, conn) {\n    return DEFAULT_ANCHOR_LOCATIONS.get(edge)[index];\n  }\n};\nvar ATTR_SCROLLABLE_LIST = \"jtk-scrollable-list\";\nvar SELECTOR_SCROLLABLE_LIST = att(ATTR_SCROLLABLE_LIST);\nvar EVENT_SCROLL = \"scroll\";\n\nvar JsPlumbListManager = function () {\n  function JsPlumbListManager(instance, params) {\n    var _this = this;\n    _classCallCheck(this, JsPlumbListManager);\n    this.instance = instance;\n    _defineProperty(this, \"options\", void 0);\n    _defineProperty(this, \"count\", void 0);\n    _defineProperty(this, \"lists\", void 0);\n    this.count = 0;\n    this.lists = {};\n    this.options = params || {};\n    this.instance.bind(EVENT_MANAGE_ELEMENT, function (p) {\n      var scrollableLists = _this.instance.getSelector(p.el, SELECTOR_SCROLLABLE_LIST);\n      for (var i = 0; i < scrollableLists.length; i++) {\n        _this.addList(scrollableLists[i]);\n      }\n    });\n    this.instance.bind(EVENT_UNMANAGE_ELEMENT, function (p) {\n      _this.removeList(p.el);\n    });\n    this.instance.bind(EVENT_CONNECTION, function (params, evt) {\n      if (evt == null) {\n        var targetParent = _this.findParentList(params.target);\n        if (targetParent != null) {\n          targetParent.newConnection(params.connection, params.target, 1);\n        }\n        var sourceParent = _this.findParentList(params.source);\n        if (sourceParent != null) {\n          sourceParent.newConnection(params.connection, params.source, 0);\n        }\n      }\n    });\n    this.instance.bind(INTERCEPT_BEFORE_DROP, function (p) {\n      var el = p.dropEndpoint.element;\n      var dropList = _this.findParentList(el);\n      return dropList == null || el.offsetTop >= dropList.domElement.scrollTop && el.offsetTop + el.offsetHeight <= dropList.domElement.scrollTop + dropList.domElement.offsetHeight;\n    });\n  }\n  _createClass(JsPlumbListManager, [{\n    key: \"addList\",\n    value: function addList(el, options) {\n      var dp = extend({}, DEFAULT_LIST_OPTIONS);\n      extend(dp, this.options);\n      options = extend(dp, options || {});\n      var id = [this.instance._instanceIndex, this.count++].join(\"_\");\n      this.lists[id] = new JsPlumbList(this.instance, el, options, id);\n      return this.lists[id];\n    }\n  }, {\n    key: \"getList\",\n    value: function getList(el) {\n      var listId = this.instance.getAttribute(el, ATTR_SCROLLABLE_LIST);\n      if (listId != null) {\n        return this.lists[listId];\n      }\n    }\n  }, {\n    key: \"removeList\",\n    value: function removeList(el) {\n      var list = this.getList(el);\n      if (list) {\n        list.destroy();\n        delete this.lists[list.id];\n      }\n    }\n  }, {\n    key: \"findParentList\",\n    value: function findParentList(el) {\n      var parent = el.parentNode,\n          container = this.instance.getContainer(),\n          parentList;\n      while (parent != null && parent !== container && parent !== document) {\n        parentList = this.getList(parent);\n        if (parentList != null) {\n          return parentList;\n        }\n        parent = parent.parentNode;\n      }\n    }\n  }]);\n  return JsPlumbListManager;\n}();\nvar JsPlumbList = function () {\n  function JsPlumbList(instance, el, options, id) {\n    _classCallCheck(this, JsPlumbList);\n    this.instance = instance;\n    this.el = el;\n    this.options = options;\n    this.id = id;\n    _defineProperty(this, \"_scrollHandler\", void 0);\n    _defineProperty(this, \"domElement\", void 0);\n    _defineProperty(this, \"elId\", void 0);\n    this.domElement = el;\n    this.elId = this.instance.getId(el);\n    instance.setAttribute(el, ATTR_SCROLLABLE_LIST, id);\n    this._scrollHandler = this.scrollHandler.bind(this);\n    this.domElement._jsPlumbScrollHandler = this._scrollHandler;\n    instance.on(el, EVENT_SCROLL, this._scrollHandler);\n    this._scrollHandler();\n  }\n  _createClass(JsPlumbList, [{\n    key: \"deriveAnchor\",\n    value: function deriveAnchor(edge, index, ep, conn) {\n      return this.options.anchor ? this.options.anchor : this.options.deriveAnchor(edge, index, ep, conn);\n    }\n  }, {\n    key: \"deriveEndpoint\",\n    value: function deriveEndpoint(edge, index, ep, conn) {\n      return this.options.deriveEndpoint ? this.options.deriveEndpoint(edge, index, ep, conn) : this.options.endpoint ? this.options.endpoint : ep.endpoint.type;\n    }\n  }, {\n    key: \"newConnection\",\n    value: function newConnection(c, el, index) {\n      if (el.offsetTop < this.el.scrollTop) {\n        this._proxyConnection(el, c, index, SupportedEdge.top);\n      } else if (el.offsetTop + el.offsetHeight > this.el.scrollTop + this.domElement.offsetHeight) {\n        this._proxyConnection(el, c, index, SupportedEdge.bottom);\n      }\n    }\n  }, {\n    key: \"scrollHandler\",\n    value: function scrollHandler() {\n      var _this2 = this;\n      var children = this.instance.getSelector(this.el, SELECTOR_MANAGED_ELEMENT);\n      var _loop = function _loop(i) {\n        if (children[i].offsetTop < _this2.el.scrollTop) {\n          children[i]._jsPlumbProxies = children[i]._jsPlumbProxies || [];\n          _this2.instance.select({\n            source: children[i]\n          }).each(function (c) {\n            _this2._proxyConnection(children[i], c, 0, SupportedEdge.top);\n          });\n          _this2.instance.select({\n            target: children[i]\n          }).each(function (c) {\n            _this2._proxyConnection(children[i], c, 1, SupportedEdge.top);\n          });\n        }\n        else if (children[i].offsetTop + children[i].offsetHeight > _this2.el.scrollTop + _this2.domElement.offsetHeight) {\n          children[i]._jsPlumbProxies = children[i]._jsPlumbProxies || [];\n          _this2.instance.select({\n            source: children[i]\n          }).each(function (c) {\n            _this2._proxyConnection(children[i], c, 0, SupportedEdge.bottom);\n          });\n          _this2.instance.select({\n            target: children[i]\n          }).each(function (c) {\n            _this2._proxyConnection(children[i], c, 1, SupportedEdge.bottom);\n          });\n        } else if (children[i]._jsPlumbProxies) {\n          for (var j = 0; j < children[i]._jsPlumbProxies.length; j++) {\n            _this2.instance.unproxyConnection(children[i]._jsPlumbProxies[j][0], children[i]._jsPlumbProxies[j][1]);\n          }\n          delete children[i]._jsPlumbProxies;\n        }\n        _this2.instance.revalidate(children[i]);\n      };\n      for (var i = 0; i < children.length; i++) {\n        _loop(i);\n      }\n    }\n  }, {\n    key: \"_proxyConnection\",\n    value: function _proxyConnection(el, conn, index, edge) {\n      var _this3 = this;\n      this.instance.proxyConnection(conn, index, this.domElement, function (c, index) {\n        return _this3.deriveEndpoint(edge, index, conn.endpoints[index], conn);\n      }, function (c, index) {\n        return _this3.deriveAnchor(edge, index, conn.endpoints[index], conn);\n      });\n      el._jsPlumbProxies = el._jsPlumbProxies || [];\n      el._jsPlumbProxies.push([conn, index]);\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.instance.off(this.el, EVENT_SCROLL, this._scrollHandler);\n      delete this.domElement._jsPlumbScrollHandler;\n      var children = this.instance.getSelector(this.el, SELECTOR_MANAGED_ELEMENT);\n      for (var i = 0; i < children.length; i++) {\n        if (children[i]._jsPlumbProxies) {\n          for (var j = 0; j < children[i]._jsPlumbProxies.length; j++) {\n            this.instance.unproxyConnection(children[i]._jsPlumbProxies[j][0], children[i]._jsPlumbProxies[j][1]);\n          }\n          delete children[i]._jsPlumbProxies;\n        }\n      }\n    }\n  }]);\n  return JsPlumbList;\n}();\n\nvar VERY_SMALL_VALUE = 0.0000000001;\nfunction gentleRound(n) {\n  var f = Math.floor(n),\n      r = Math.ceil(n);\n  if (n - f < VERY_SMALL_VALUE) {\n    return f;\n  } else if (r - n < VERY_SMALL_VALUE) {\n    return r;\n  }\n  return n;\n}\nvar ArcSegment = function (_AbstractSegment) {\n  _inherits(ArcSegment, _AbstractSegment);\n  var _super = _createSuper(ArcSegment);\n  function ArcSegment(params) {\n    var _this;\n    _classCallCheck(this, ArcSegment);\n    _this = _super.call(this, params);\n    _defineProperty(_assertThisInitialized(_this), \"type\", ArcSegment.segmentType);\n    _defineProperty(_assertThisInitialized(_this), \"cx\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cy\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"radius\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"anticlockwise\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"startAngle\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"endAngle\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"sweep\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"length\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"circumference\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"frac\", void 0);\n    _this.cx = params.cx;\n    _this.cy = params.cy;\n    _this.radius = params.r;\n    _this.anticlockwise = params.ac;\n    if (params.startAngle && params.endAngle) {\n      _this.startAngle = params.startAngle;\n      _this.endAngle = params.endAngle;\n      _this.x1 = _this.cx + _this.radius * Math.cos(_this.startAngle);\n      _this.y1 = _this.cy + _this.radius * Math.sin(_this.startAngle);\n      _this.x2 = _this.cx + _this.radius * Math.cos(_this.endAngle);\n      _this.y2 = _this.cy + _this.radius * Math.sin(_this.endAngle);\n    } else {\n      _this.startAngle = _this._calcAngle(_this.x1, _this.y1);\n      _this.endAngle = _this._calcAngle(_this.x2, _this.y2);\n    }\n    if (_this.endAngle < 0) {\n      _this.endAngle += TWO_PI;\n    }\n    if (_this.startAngle < 0) {\n      _this.startAngle += TWO_PI;\n    }\n    var ea = _this.endAngle < _this.startAngle ? _this.endAngle + TWO_PI : _this.endAngle;\n    _this.sweep = Math.abs(ea - _this.startAngle);\n    if (_this.anticlockwise) {\n      _this.sweep = TWO_PI - _this.sweep;\n    }\n    _this.circumference = 2 * Math.PI * _this.radius;\n    _this.frac = _this.sweep / TWO_PI;\n    _this.length = _this.circumference * _this.frac;\n    _this.extents = {\n      xmin: _this.cx - _this.radius,\n      xmax: _this.cx + _this.radius,\n      ymin: _this.cy - _this.radius,\n      ymax: _this.cy + _this.radius\n    };\n    return _this;\n  }\n  _createClass(ArcSegment, [{\n    key: \"_calcAngle\",\n    value: function _calcAngle(_x, _y) {\n      return theta({\n        x: this.cx,\n        y: this.cy\n      }, {\n        x: _x,\n        y: _y\n      });\n    }\n  }, {\n    key: \"_calcAngleForLocation\",\n    value: function _calcAngleForLocation(segment, location) {\n      if (segment.anticlockwise) {\n        var sa = segment.startAngle < segment.endAngle ? segment.startAngle + TWO_PI : segment.startAngle,\n            s = Math.abs(sa - segment.endAngle);\n        return sa - s * location;\n      } else {\n        var ea = segment.endAngle < segment.startAngle ? segment.endAngle + TWO_PI : segment.endAngle,\n            ss = Math.abs(ea - segment.startAngle);\n        return segment.startAngle + ss * location;\n      }\n    }\n  }, {\n    key: \"getPath\",\n    value: function getPath(isFirstSegment) {\n      var laf = this.sweep > Math.PI ? 1 : 0,\n          sf = this.anticlockwise ? 0 : 1;\n      return (isFirstSegment ? \"M\" + this.x1 + \" \" + this.y1 + \" \" : \"\") + \"A \" + this.radius + \" \" + this.radius + \" 0 \" + laf + \",\" + sf + \" \" + this.x2 + \" \" + this.y2;\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      return this.length;\n    }\n  }, {\n    key: \"pointOnPath\",\n    value: function pointOnPath(location, absolute) {\n      if (location === 0) {\n        return {\n          x: this.x1,\n          y: this.y1,\n          theta: this.startAngle\n        };\n      } else if (location === 1) {\n        return {\n          x: this.x2,\n          y: this.y2,\n          theta: this.endAngle\n        };\n      }\n      if (absolute) {\n        location = location / length;\n      }\n      var angle = this._calcAngleForLocation(this, location),\n          _x = this.cx + this.radius * Math.cos(angle),\n          _y = this.cy + this.radius * Math.sin(angle);\n      return {\n        x: gentleRound(_x),\n        y: gentleRound(_y),\n        theta: angle\n      };\n    }\n  }, {\n    key: \"gradientAtPoint\",\n    value: function gradientAtPoint(location, absolute) {\n      var p = this.pointOnPath(location, absolute);\n      var m = normal({\n        x: this.cx,\n        y: this.cy\n      }, p);\n      if (!this.anticlockwise && (m === Infinity || m === -Infinity)) {\n        m *= -1;\n      }\n      return m;\n    }\n  }, {\n    key: \"pointAlongPathFrom\",\n    value: function pointAlongPathFrom(location, distance, absolute) {\n      var p = this.pointOnPath(location, absolute),\n          arcSpan = distance / this.circumference * 2 * Math.PI,\n          dir = this.anticlockwise ? -1 : 1,\n          startAngle = p.theta + dir * arcSpan,\n          startX = this.cx + this.radius * Math.cos(startAngle),\n          startY = this.cy + this.radius * Math.sin(startAngle);\n      return {\n        x: startX,\n        y: startY\n      };\n    }\n  }]);\n  return ArcSegment;\n}(AbstractSegment);\n_defineProperty(ArcSegment, \"segmentType\", \"Arc\");\n\nvar AbstractBezierConnector = function (_AbstractConnector) {\n  _inherits(AbstractBezierConnector, _AbstractConnector);\n  var _super = _createSuper(AbstractBezierConnector);\n  function AbstractBezierConnector(connection, params) {\n    var _this;\n    _classCallCheck(this, AbstractBezierConnector);\n    _this = _super.call(this, connection, params);\n    _this.connection = connection;\n    _defineProperty(_assertThisInitialized(_this), \"showLoopback\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"curviness\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"margin\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"proximityLimit\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"orientation\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"loopbackRadius\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"clockwise\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"isLoopbackCurrently\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"geometry\", null);\n    params = params || {};\n    _this.showLoopback = params.showLoopback !== false;\n    _this.curviness = params.curviness || 10;\n    _this.margin = params.margin || 5;\n    _this.proximityLimit = params.proximityLimit || 80;\n    _this.clockwise = params.orientation && params.orientation === \"clockwise\";\n    _this.loopbackRadius = params.loopbackRadius || 25;\n    _this.isLoopbackCurrently = false;\n    return _this;\n  }\n  _createClass(AbstractBezierConnector, [{\n    key: \"getDefaultStubs\",\n    value: function getDefaultStubs() {\n      return [0, 0];\n    }\n  }, {\n    key: \"_compute\",\n    value: function _compute(paintInfo, p) {\n      var sp = p.sourcePos,\n          tp = p.targetPos,\n          _w = Math.abs(sp.curX - tp.curX),\n          _h = Math.abs(sp.curY - tp.curY);\n      if (!this.showLoopback || p.sourceEndpoint.elementId !== p.targetEndpoint.elementId) {\n        this.isLoopbackCurrently = false;\n        this._computeBezier(paintInfo, p, sp, tp, _w, _h);\n      } else {\n        this.isLoopbackCurrently = true;\n        var x1 = p.sourcePos.curX,\n            y1 = p.sourcePos.curY - this.margin,\n            cx = x1,\n            cy = y1 - this.loopbackRadius,\n        _x = cx - this.loopbackRadius,\n            _y = cy - this.loopbackRadius;\n        _w = 2 * this.loopbackRadius;\n        _h = 2 * this.loopbackRadius;\n        paintInfo.points[0] = _x;\n        paintInfo.points[1] = _y;\n        paintInfo.points[2] = _w;\n        paintInfo.points[3] = _h;\n        this._addSegment(ArcSegment, {\n          loopback: true,\n          x1: x1 - _x + 4,\n          y1: y1 - _y,\n          startAngle: 0,\n          endAngle: 2 * Math.PI,\n          r: this.loopbackRadius,\n          ac: !this.clockwise,\n          x2: x1 - _x - 4,\n          y2: y1 - _y,\n          cx: cx - _x,\n          cy: cy - _y\n        });\n      }\n    }\n  }, {\n    key: \"exportGeometry\",\n    value: function exportGeometry() {\n      if (this.geometry == null) {\n        return null;\n      } else {\n        return {\n          controlPoints: [extend({}, this.geometry.controlPoints[0]), extend({}, this.geometry.controlPoints[1])],\n          source: extend({}, this.geometry.source),\n          target: extend({}, this.geometry.target)\n        };\n      }\n    }\n  }, {\n    key: \"transformGeometry\",\n    value: function transformGeometry(g, dx, dy) {\n      return {\n        controlPoints: [{\n          x: g.controlPoints[0].x + dx,\n          y: g.controlPoints[0].y + dy\n        }, {\n          x: g.controlPoints[1].x + dx,\n          y: g.controlPoints[1].y + dy\n        }],\n        source: this.transformAnchorPlacement(g.source, dx, dy),\n        target: this.transformAnchorPlacement(g.target, dx, dy)\n      };\n    }\n  }, {\n    key: \"importGeometry\",\n    value: function importGeometry(geometry) {\n      if (geometry != null) {\n        if (geometry.controlPoints == null || geometry.controlPoints.length != 2) {\n          log(\"jsPlumb Bezier: cannot import geometry; controlPoints missing or does not have length 2\");\n          this.setGeometry(null, true);\n          return false;\n        }\n        if (geometry.controlPoints[0].x == null || geometry.controlPoints[0].y == null || geometry.controlPoints[1].x == null || geometry.controlPoints[1].y == null) {\n          log(\"jsPlumb Bezier: cannot import geometry; controlPoints malformed\");\n          this.setGeometry(null, true);\n          return false;\n        }\n        if (geometry.source == null || geometry.source.curX == null || geometry.source.curY == null) {\n          log(\"jsPlumb Bezier: cannot import geometry; source missing or malformed\");\n          this.setGeometry(null, true);\n          return false;\n        }\n        if (geometry.target == null || geometry.target.curX == null || geometry.target.curY == null) {\n          log(\"jsPlumb Bezier: cannot import geometry; target missing or malformed\");\n          this.setGeometry(null, true);\n          return false;\n        }\n        this.setGeometry(geometry, false);\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }]);\n  return AbstractBezierConnector;\n}(AbstractConnector);\n\nvar Vectors = {\n  subtract: function subtract(v1, v2) {\n    return {\n      x: v1.x - v2.x,\n      y: v1.y - v2.y\n    };\n  },\n  dotProduct: function dotProduct(v1, v2) {\n    return v1.x * v2.x + v1.y * v2.y;\n  },\n  square: function square(v) {\n    return Math.sqrt(v.x * v.x + v.y * v.y);\n  },\n  scale: function scale(v, s) {\n    return {\n      x: v.x * s,\n      y: v.y * s\n    };\n  }\n};\nvar maxRecursion = 64;\nvar flatnessTolerance = Math.pow(2.0, -maxRecursion - 1);\nfunction distanceFromCurve(point, curve) {\n  var candidates = [],\n      w = _convertToBezier(point, curve),\n      degree = curve.length - 1,\n      higherDegree = 2 * degree - 1,\n      numSolutions = _findRoots(w, higherDegree, candidates, 0),\n      v = Vectors.subtract(point, curve[0]),\n      dist = Vectors.square(v),\n      t = 0.0,\n      newDist;\n  for (var i = 0; i < numSolutions; i++) {\n    v = Vectors.subtract(point, _bezier(curve, degree, candidates[i], null, null));\n    newDist = Vectors.square(v);\n    if (newDist < dist) {\n      dist = newDist;\n      t = candidates[i];\n    }\n  }\n  v = Vectors.subtract(point, curve[degree]);\n  newDist = Vectors.square(v);\n  if (newDist < dist) {\n    dist = newDist;\n    t = 1.0;\n  }\n  return {\n    location: t,\n    distance: dist\n  };\n}\nfunction nearestPointOnCurve(point, curve) {\n  var td = distanceFromCurve(point, curve);\n  return {\n    point: _bezier(curve, curve.length - 1, td.location, null, null),\n    location: td.location\n  };\n}\nfunction _convertToBezier(point, curve) {\n  var degree = curve.length - 1,\n      higherDegree = 2 * degree - 1,\n      c = [],\n      d = [],\n      cdTable = [],\n      w = [],\n      z = [[1.0, 0.6, 0.3, 0.1], [0.4, 0.6, 0.6, 0.4], [0.1, 0.3, 0.6, 1.0]];\n  for (var i = 0; i <= degree; i++) {\n    c[i] = Vectors.subtract(curve[i], point);\n  }\n  for (var _i = 0; _i <= degree - 1; _i++) {\n    d[_i] = Vectors.subtract(curve[_i + 1], curve[_i]);\n    d[_i] = Vectors.scale(d[_i], 3.0);\n  }\n  for (var row = 0; row <= degree - 1; row++) {\n    for (var column = 0; column <= degree; column++) {\n      if (!cdTable[row]) cdTable[row] = [];\n      cdTable[row][column] = Vectors.dotProduct(d[row], c[column]);\n    }\n  }\n  for (var _i2 = 0; _i2 <= higherDegree; _i2++) {\n    if (!w[_i2]) {\n      w[_i2] = [];\n    }\n    w[_i2].y = 0.0;\n    w[_i2].x = parseFloat(\"\" + _i2) / higherDegree;\n  }\n  var n = degree,\n      m = degree - 1;\n  for (var k = 0; k <= n + m; k++) {\n    var lb = Math.max(0, k - m),\n        ub = Math.min(k, n);\n    for (var _i3 = lb; _i3 <= ub; _i3++) {\n      var j = k - _i3;\n      w[_i3 + j].y += cdTable[j][_i3] * z[j][_i3];\n    }\n  }\n  return w;\n}\nfunction _findRoots(w, degree, t, depth) {\n  var left = [],\n      right = [],\n      left_count,\n      right_count,\n      left_t = [],\n      right_t = [];\n  switch (_getCrossingCount(w, degree)) {\n    case 0:\n      {\n        return 0;\n      }\n    case 1:\n      {\n        if (depth >= maxRecursion) {\n          t[0] = (w[0].x + w[degree].x) / 2.0;\n          return 1;\n        }\n        if (_isFlatEnough(w, degree)) {\n          t[0] = _computeXIntercept(w, degree);\n          return 1;\n        }\n        break;\n      }\n  }\n  _bezier(w, degree, 0.5, left, right);\n  left_count = _findRoots(left, degree, left_t, depth + 1);\n  right_count = _findRoots(right, degree, right_t, depth + 1);\n  for (var i = 0; i < left_count; i++) {\n    t[i] = left_t[i];\n  }\n  for (var _i4 = 0; _i4 < right_count; _i4++) {\n    t[_i4 + left_count] = right_t[_i4];\n  }\n  return left_count + right_count;\n}\nfunction _getCrossingCount(curve, degree) {\n  var n_crossings = 0,\n      sign,\n      old_sign;\n  sign = old_sign = sgn$1(curve[0].y);\n  for (var i = 1; i <= degree; i++) {\n    sign = sgn$1(curve[i].y);\n    if (sign != old_sign) n_crossings++;\n    old_sign = sign;\n  }\n  return n_crossings;\n}\nfunction _isFlatEnough(curve, degree) {\n  var error, intercept_1, intercept_2, left_intercept, right_intercept, a, b, c, det, dInv, a1, b1, c1, a2, b2, c2;\n  a = curve[0].y - curve[degree].y;\n  b = curve[degree].x - curve[0].x;\n  c = curve[0].x * curve[degree].y - curve[degree].x * curve[0].y;\n  var max_distance_above, max_distance_below;\n  max_distance_above = max_distance_below = 0.0;\n  for (var i = 1; i < degree; i++) {\n    var value = a * curve[i].x + b * curve[i].y + c;\n    if (value > max_distance_above) {\n      max_distance_above = value;\n    } else if (value < max_distance_below) {\n      max_distance_below = value;\n    }\n  }\n  a1 = 0.0;\n  b1 = 1.0;\n  c1 = 0.0;\n  a2 = a;\n  b2 = b;\n  c2 = c - max_distance_above;\n  det = a1 * b2 - a2 * b1;\n  dInv = 1.0 / det;\n  intercept_1 = (b1 * c2 - b2 * c1) * dInv;\n  a2 = a;\n  b2 = b;\n  c2 = c - max_distance_below;\n  det = a1 * b2 - a2 * b1;\n  dInv = 1.0 / det;\n  intercept_2 = (b1 * c2 - b2 * c1) * dInv;\n  left_intercept = Math.min(intercept_1, intercept_2);\n  right_intercept = Math.max(intercept_1, intercept_2);\n  error = right_intercept - left_intercept;\n  return error < flatnessTolerance ? 1 : 0;\n}\nfunction _computeXIntercept(curve, degree) {\n  var XLK = 1.0,\n      YLK = 0.0,\n      XNM = curve[degree].x - curve[0].x,\n      YNM = curve[degree].y - curve[0].y,\n      XMK = curve[0].x - 0.0,\n      YMK = curve[0].y - 0.0,\n      det = XNM * YLK - YNM * XLK,\n      detInv = 1.0 / det,\n      S = (XNM * YMK - YNM * XMK) * detInv;\n  return 0.0 + XLK * S;\n}\nfunction _bezier(curve, degree, t, left, right) {\n  var temp = [[]];\n  for (var j = 0; j <= degree; j++) {\n    temp[0][j] = curve[j];\n  }\n  for (var i = 1; i <= degree; i++) {\n    for (var _j = 0; _j <= degree - i; _j++) {\n      if (!temp[i]) temp[i] = [];\n      if (!temp[i][_j]) temp[i][_j] = {};\n      temp[i][_j].x = (1.0 - t) * temp[i - 1][_j].x + t * temp[i - 1][_j + 1].x;\n      temp[i][_j].y = (1.0 - t) * temp[i - 1][_j].y + t * temp[i - 1][_j + 1].y;\n    }\n  }\n  if (left != null) {\n    for (var _j2 = 0; _j2 <= degree; _j2++) {\n      left[_j2] = temp[_j2][0];\n    }\n  }\n  if (right != null) {\n    for (var _j3 = 0; _j3 <= degree; _j3++) {\n      right[_j3] = temp[degree - _j3][_j3];\n    }\n  }\n  return temp[degree][0];\n}\nfunction _getLUT(steps, curve) {\n  var out = [];\n  steps--;\n  for (var n = 0; n <= steps; n++) {\n    out.push(_computeLookup(n / steps, curve));\n  }\n  return out;\n}\nfunction _computeLookup(e, curve) {\n  var EMPTY_POINT = {\n    x: 0,\n    y: 0\n  };\n  if (e === 0) {\n    return curve[0];\n  }\n  var degree = curve.length - 1;\n  if (e === 1) {\n    return curve[degree];\n  }\n  var o = curve;\n  var s = 1 - e;\n  if (degree === 0) {\n    return curve[0];\n  }\n  if (degree === 1) {\n    return {\n      x: s * o[0].x + e * o[1].x,\n      y: s * o[0].y + e * o[1].y\n    };\n  }\n  if (4 > degree) {\n    var l = s * s,\n        h = e * e,\n        u = 0,\n        m,\n        g,\n        f;\n    if (degree === 2) {\n      o = [o[0], o[1], o[2], EMPTY_POINT];\n      m = l;\n      g = 2 * (s * e);\n      f = h;\n    } else if (degree === 3) {\n      m = l * s;\n      g = 3 * (l * e);\n      f = 3 * (s * h);\n      u = e * h;\n    }\n    return {\n      x: m * o[0].x + g * o[1].x + f * o[2].x + u * o[3].x,\n      y: m * o[0].y + g * o[1].y + f * o[2].y + u * o[3].y\n    };\n  } else {\n    return EMPTY_POINT;\n  }\n}\nfunction computeBezierLength(curve) {\n  var length = 0;\n  if (!isPoint(curve)) {\n    var steps = 16;\n    var lut = _getLUT(steps, curve);\n    for (var i = 0; i < steps - 1; i++) {\n      var a = lut[i],\n          b = lut[i + 1];\n      length += dist(a, b);\n    }\n  }\n  return length;\n}\nvar _curveFunctionCache = new Map();\nfunction _getCurveFunctions(order) {\n  var fns = _curveFunctionCache.get(order);\n  if (!fns) {\n    fns = [];\n    var f_term = function f_term() {\n      return function (t) {\n        return Math.pow(t, order);\n      };\n    },\n        l_term = function l_term() {\n      return function (t) {\n        return Math.pow(1 - t, order);\n      };\n    },\n        c_term = function c_term(c) {\n      return function (t) {\n        return c;\n      };\n    },\n        t_term = function t_term() {\n      return function (t) {\n        return t;\n      };\n    },\n        one_minus_t_term = function one_minus_t_term() {\n      return function (t) {\n        return 1 - t;\n      };\n    },\n        _termFunc = function _termFunc(terms) {\n      return function (t) {\n        var p = 1;\n        for (var i = 0; i < terms.length; i++) {\n          p = p * terms[i](t);\n        }\n        return p;\n      };\n    };\n    fns.push(f_term());\n    for (var i = 1; i < order; i++) {\n      var terms = [c_term(order)];\n      for (var j = 0; j < order - i; j++) {\n        terms.push(t_term());\n      }\n      for (var _j4 = 0; _j4 < i; _j4++) {\n        terms.push(one_minus_t_term());\n      }\n      fns.push(_termFunc(terms));\n    }\n    fns.push(l_term());\n    _curveFunctionCache.set(order, fns);\n  }\n  return fns;\n}\nfunction pointOnCurve(curve, location) {\n  var cc = _getCurveFunctions(curve.length - 1),\n      _x = 0,\n      _y = 0;\n  for (var i = 0; i < curve.length; i++) {\n    _x = _x + curve[i].x * cc[i](location);\n    _y = _y + curve[i].y * cc[i](location);\n  }\n  return {\n    x: _x,\n    y: _y\n  };\n}\nfunction dist(p1, p2) {\n  return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\nfunction isPoint(curve) {\n  return curve[0].x === curve[1].x && curve[0].y === curve[1].y;\n}\nfunction pointAlongPath(curve, location, distance) {\n  if (isPoint(curve)) {\n    return {\n      point: curve[0],\n      location: location\n    };\n  }\n  var prev = pointOnCurve(curve, location),\n      tally = 0,\n      curLoc = location,\n      direction = distance > 0 ? 1 : -1,\n      cur = null;\n  while (tally < Math.abs(distance)) {\n    curLoc += 0.005 * direction;\n    cur = pointOnCurve(curve, curLoc);\n    tally += dist(cur, prev);\n    prev = cur;\n  }\n  return {\n    point: cur,\n    location: curLoc\n  };\n}\nfunction pointAlongCurveFrom(curve, location, distance) {\n  return pointAlongPath(curve, location, distance).point;\n}\nfunction locationAlongCurveFrom(curve, location, distance) {\n  return pointAlongPath(curve, location, distance).location;\n}\nfunction gradientAtPoint(curve, location) {\n  var p1 = pointOnCurve(curve, location),\n      p2 = pointOnCurve(curve.slice(0, curve.length - 1), location),\n      dy = p2.y - p1.y,\n      dx = p2.x - p1.x;\n  return dy === 0 ? Infinity : Math.atan(dy / dx);\n}\nfunction gradientAtPointAlongPathFrom(curve, location, distance) {\n  var p = pointAlongPath(curve, location, distance);\n  if (p.location > 1) p.location = 1;\n  if (p.location < 0) p.location = 0;\n  return gradientAtPoint(curve, p.location);\n}\nfunction perpendicularToPathAt(curve, location, length, distance) {\n  distance = distance == null ? 0 : distance;\n  var p = pointAlongPath(curve, location, distance),\n      m = gradientAtPoint(curve, p.location),\n      _theta2 = Math.atan(-1 / m),\n      y = length / 2 * Math.sin(_theta2),\n      x = length / 2 * Math.cos(_theta2);\n  return [{\n    x: p.point.x + x,\n    y: p.point.y + y\n  }, {\n    x: p.point.x - x,\n    y: p.point.y - y\n  }];\n}\nfunction bezierLineIntersection(x1, y1, x2, y2, curve) {\n  var a = y2 - y1,\n      b = x1 - x2,\n      c = x1 * (y1 - y2) + y1 * (x2 - x1),\n      coeffs = _computeCoefficients(curve),\n      p = [a * coeffs[0][0] + b * coeffs[1][0], a * coeffs[0][1] + b * coeffs[1][1], a * coeffs[0][2] + b * coeffs[1][2], a * coeffs[0][3] + b * coeffs[1][3] + c],\n      r = _cubicRoots.apply(null, p),\n      intersections = [];\n  if (r != null) {\n    for (var i = 0; i < 3; i++) {\n      var _t = r[i],\n          t2 = Math.pow(_t, 2),\n          t3 = Math.pow(_t, 3),\n          x = {\n        x: coeffs[0][0] * t3 + coeffs[0][1] * t2 + coeffs[0][2] * _t + coeffs[0][3],\n        y: coeffs[1][0] * t3 + coeffs[1][1] * t2 + coeffs[1][2] * _t + coeffs[1][3]\n      };\n      var s = void 0;\n      if (x2 - x1 !== 0) {\n        s = (x[0] - x1) / (x2 - x1);\n      } else {\n        s = (x[1] - y1) / (y2 - y1);\n      }\n      if (_t >= 0 && _t <= 1.0 && s >= 0 && s <= 1.0) {\n        intersections.push(x);\n      }\n    }\n  }\n  return intersections;\n}\nfunction boxIntersection(x, y, w, h, curve) {\n  var i = [];\n  i.push.apply(i, bezierLineIntersection(x, y, x + w, y, curve));\n  i.push.apply(i, bezierLineIntersection(x + w, y, x + w, y + h, curve));\n  i.push.apply(i, bezierLineIntersection(x + w, y + h, x, y + h, curve));\n  i.push.apply(i, bezierLineIntersection(x, y + h, x, y, curve));\n  return i;\n}\nfunction boundingBoxIntersection(boundingBox, curve) {\n  var i = [];\n  i.push.apply(i, bezierLineIntersection(boundingBox.x, boundingBox.y, boundingBox.x + boundingBox.w, boundingBox.y, curve));\n  i.push.apply(i, bezierLineIntersection(boundingBox.x + boundingBox.w, boundingBox.y, boundingBox.x + boundingBox.w, boundingBox.y + boundingBox.h, curve));\n  i.push.apply(i, bezierLineIntersection(boundingBox.x + boundingBox.w, boundingBox.y + boundingBox.h, boundingBox.x, boundingBox.y + boundingBox.h, curve));\n  i.push.apply(i, bezierLineIntersection(boundingBox.x, boundingBox.y + boundingBox.h, boundingBox.x, boundingBox.y, curve));\n  return i;\n}\nfunction _computeCoefficientsForAxis(curve, axis) {\n  return [-curve[0][axis] + 3 * curve[1][axis] + -3 * curve[2][axis] + curve[3][axis], 3 * curve[0][axis] - 6 * curve[1][axis] + 3 * curve[2][axis], -3 * curve[0][axis] + 3 * curve[1][axis], curve[0][axis]];\n}\nfunction _computeCoefficients(curve) {\n  return [_computeCoefficientsForAxis(curve, \"x\"), _computeCoefficientsForAxis(curve, \"y\")];\n}\nfunction _cubicRoots(a, b, c, d) {\n  var A = b / a,\n      B = c / a,\n      C = d / a,\n      Q = (3 * B - Math.pow(A, 2)) / 9,\n      R = (9 * A * B - 27 * C - 2 * Math.pow(A, 3)) / 54,\n      D = Math.pow(Q, 3) + Math.pow(R, 2),\n      S,\n      T,\n      t = [0, 0, 0];\n  if (D >= 0)\n    {\n      S = sgn$1(R + Math.sqrt(D)) * Math.pow(Math.abs(R + Math.sqrt(D)), 1 / 3);\n      T = sgn$1(R - Math.sqrt(D)) * Math.pow(Math.abs(R - Math.sqrt(D)), 1 / 3);\n      t[0] = -A / 3 + (S + T);\n      t[1] = -A / 3 - (S + T) / 2;\n      t[2] = -A / 3 - (S + T) / 2;\n      if (Math.abs(Math.sqrt(3) * (S - T) / 2) !== 0) {\n        t[1] = -1;\n        t[2] = -1;\n      }\n    } else\n    {\n      var th = Math.acos(R / Math.sqrt(-Math.pow(Q, 3)));\n      t[0] = 2 * Math.sqrt(-Q) * Math.cos(th / 3) - A / 3;\n      t[1] = 2 * Math.sqrt(-Q) * Math.cos((th + 2 * Math.PI) / 3) - A / 3;\n      t[2] = 2 * Math.sqrt(-Q) * Math.cos((th + 4 * Math.PI) / 3) - A / 3;\n    }\n  for (var i = 0; i < 3; i++) {\n    if (t[i] < 0 || t[i] > 1.0) {\n      t[i] = -1;\n    }\n  }\n  return t;\n}\n\nvar BezierSegment = function (_AbstractSegment) {\n  _inherits(BezierSegment, _AbstractSegment);\n  var _super = _createSuper(BezierSegment);\n  function BezierSegment(params) {\n    var _this;\n    _classCallCheck(this, BezierSegment);\n    _this = _super.call(this, params);\n    _defineProperty(_assertThisInitialized(_this), \"curve\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cp1x\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cp1y\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cp2x\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cp2y\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"length\", 0);\n    _defineProperty(_assertThisInitialized(_this), \"type\", BezierSegment.segmentType);\n    _this.cp1x = params.cp1x;\n    _this.cp1y = params.cp1y;\n    _this.cp2x = params.cp2x;\n    _this.cp2y = params.cp2y;\n    _this.x1 = params.x1;\n    _this.x2 = params.x2;\n    _this.y1 = params.y1;\n    _this.y2 = params.y2;\n    _this.curve = [{\n      x: _this.x1,\n      y: _this.y1\n    }, {\n      x: _this.cp1x,\n      y: _this.cp1y\n    }, {\n      x: _this.cp2x,\n      y: _this.cp2y\n    }, {\n      x: _this.x2,\n      y: _this.y2\n    }];\n    _this.extents = {\n      xmin: Math.min(_this.x1, _this.x2, _this.cp1x, _this.cp2x),\n      ymin: Math.min(_this.y1, _this.y2, _this.cp1y, _this.cp2y),\n      xmax: Math.max(_this.x1, _this.x2, _this.cp1x, _this.cp2x),\n      ymax: Math.max(_this.y1, _this.y2, _this.cp1y, _this.cp2y)\n    };\n    return _this;\n  }\n  _createClass(BezierSegment, [{\n    key: \"getPath\",\n    value: function getPath(isFirstSegment) {\n      return (isFirstSegment ? \"M \" + this.x2 + \" \" + this.y2 + \" \" : \"\") + \"C \" + this.cp2x + \" \" + this.cp2y + \" \" + this.cp1x + \" \" + this.cp1y + \" \" + this.x1 + \" \" + this.y1;\n    }\n  }, {\n    key: \"pointOnPath\",\n    value: function pointOnPath(location, absolute) {\n      location = BezierSegment._translateLocation(this.curve, location, absolute);\n      return pointOnCurve(this.curve, location);\n    }\n  }, {\n    key: \"gradientAtPoint\",\n    value: function gradientAtPoint$1(location, absolute) {\n      location = BezierSegment._translateLocation(this.curve, location, absolute);\n      return gradientAtPoint(this.curve, location);\n    }\n  }, {\n    key: \"pointAlongPathFrom\",\n    value: function pointAlongPathFrom(location, distance, absolute) {\n      location = BezierSegment._translateLocation(this.curve, location, absolute);\n      return pointAlongCurveFrom(this.curve, location, distance);\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      if (this.length == null || this.length === 0) {\n        this.length = computeBezierLength(this.curve);\n      }\n      return this.length;\n    }\n  }, {\n    key: \"findClosestPointOnPath\",\n    value: function findClosestPointOnPath(x, y) {\n      var p = nearestPointOnCurve({\n        x: x,\n        y: y\n      }, this.curve);\n      return {\n        d: Math.sqrt(Math.pow(p.point.x - x, 2) + Math.pow(p.point.y - y, 2)),\n        x: p.point.x,\n        y: p.point.y,\n        l: 1 - p.location,\n        s: this,\n        x1: null,\n        y1: null,\n        x2: null,\n        y2: null\n      };\n    }\n  }, {\n    key: \"lineIntersection\",\n    value: function lineIntersection(x1, y1, x2, y2) {\n      return bezierLineIntersection(x1, y1, x2, y2, this.curve);\n    }\n  }], [{\n    key: \"_translateLocation\",\n    value: function _translateLocation(_curve, location, absolute) {\n      if (absolute) {\n        location = locationAlongCurveFrom(_curve, location > 0 ? 0 : 1, location);\n      }\n      return location;\n    }\n  }]);\n  return BezierSegment;\n}(AbstractSegment);\n_defineProperty(BezierSegment, \"segmentType\", \"Bezier\");\n\nvar BezierConnector = function (_AbstractBezierConnec) {\n  _inherits(BezierConnector, _AbstractBezierConnec);\n  var _super = _createSuper(BezierConnector);\n  function BezierConnector(connection, params) {\n    var _this;\n    _classCallCheck(this, BezierConnector);\n    _this = _super.call(this, connection, params);\n    _this.connection = connection;\n    _defineProperty(_assertThisInitialized(_this), \"type\", BezierConnector.type);\n    _defineProperty(_assertThisInitialized(_this), \"majorAnchor\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"minorAnchor\", void 0);\n    params = params || {};\n    _this.majorAnchor = params.curviness || 150;\n    _this.minorAnchor = 10;\n    return _this;\n  }\n  _createClass(BezierConnector, [{\n    key: \"getCurviness\",\n    value: function getCurviness() {\n      return this.majorAnchor;\n    }\n  }, {\n    key: \"_findControlPoint\",\n    value: function _findControlPoint(point, sourceAnchorPosition, targetAnchorPosition, soo, too) {\n      var perpendicular = soo[0] !== too[0] || soo[1] === too[1],\n          p = {\n        x: 0,\n        y: 0\n      };\n      if (!perpendicular) {\n        if (soo[0] === 0) {\n          p.x = sourceAnchorPosition.curX < targetAnchorPosition.curX ? point.x + this.minorAnchor : point.x - this.minorAnchor;\n        } else {\n          p.x = point.x - this.majorAnchor * soo[0];\n        }\n        if (soo[1] === 0) {\n          p.y = sourceAnchorPosition.curY < targetAnchorPosition.curY ? point.y + this.minorAnchor : point.y - this.minorAnchor;\n        } else {\n          p.y = point.y + this.majorAnchor * too[1];\n        }\n      } else {\n        if (too[0] === 0) {\n          p.x = targetAnchorPosition.curX < sourceAnchorPosition.curX ? point.x + this.minorAnchor : point.x - this.minorAnchor;\n        } else {\n          p.x = point.x + this.majorAnchor * too[0];\n        }\n        if (too[1] === 0) {\n          p.y = targetAnchorPosition.curY < sourceAnchorPosition.curY ? point.y + this.minorAnchor : point.y - this.minorAnchor;\n        } else {\n          p.y = point.y + this.majorAnchor * soo[1];\n        }\n      }\n      return p;\n    }\n  }, {\n    key: \"_computeBezier\",\n    value: function _computeBezier(paintInfo, p, sp, tp, _w, _h) {\n      var _CP,\n          _CP2,\n          _sx = sp.curX < tp.curX ? _w : 0,\n          _sy = sp.curY < tp.curY ? _h : 0,\n          _tx = sp.curX < tp.curX ? 0 : _w,\n          _ty = sp.curY < tp.curY ? 0 : _h;\n      if (this.edited !== true) {\n        _CP = this._findControlPoint({\n          x: _sx,\n          y: _sy\n        }, sp, tp, paintInfo.so, paintInfo.to);\n        _CP2 = this._findControlPoint({\n          x: _tx,\n          y: _ty\n        }, tp, sp, paintInfo.to, paintInfo.so);\n      } else {\n        _CP = this.geometry.controlPoints[0];\n        _CP2 = this.geometry.controlPoints[1];\n      }\n      this.geometry = {\n        controlPoints: [_CP, _CP2],\n        source: p.sourcePos,\n        target: p.targetPos\n      };\n      this._addSegment(BezierSegment, {\n        x1: _sx,\n        y1: _sy,\n        x2: _tx,\n        y2: _ty,\n        cp1x: _CP.x,\n        cp1y: _CP.y,\n        cp2x: _CP2.x,\n        cp2y: _CP2.y\n      });\n    }\n  }]);\n  return BezierConnector;\n}(AbstractBezierConnector);\n_defineProperty(BezierConnector, \"type\", \"Bezier\");\n\nfunction _segment(x1, y1, x2, y2) {\n  if (x1 <= x2 && y2 <= y1) {\n    return 1;\n  } else if (x1 <= x2 && y1 <= y2) {\n    return 2;\n  } else if (x2 <= x1 && y2 >= y1) {\n    return 3;\n  }\n  return 4;\n}\nfunction _findControlPoint(midx, midy, segment, sourceEdge, targetEdge, dx, dy, distance, proximityLimit) {\n  if (distance <= proximityLimit) {\n    return {\n      x: midx,\n      y: midy\n    };\n  }\n  if (segment === 1) {\n    if (sourceEdge.curY <= 0 && targetEdge.curY >= 1) {\n      return {\n        x: midx + (sourceEdge.x < 0.5 ? -1 * dx : dx),\n        y: midy\n      };\n    } else if (sourceEdge.curX >= 1 && targetEdge.curX <= 0) {\n      return {\n        x: midx,\n        y: midy + (sourceEdge.y < 0.5 ? -1 * dy : dy)\n      };\n    } else {\n      return {\n        x: midx + -1 * dx,\n        y: midy + -1 * dy\n      };\n    }\n  } else if (segment === 2) {\n    if (sourceEdge.curY >= 1 && targetEdge.curY <= 0) {\n      return {\n        x: midx + (sourceEdge.x < 0.5 ? -1 * dx : dx),\n        y: midy\n      };\n    } else if (sourceEdge.curX >= 1 && targetEdge.curX <= 0) {\n      return {\n        x: midx,\n        y: midy + (sourceEdge.y < 0.5 ? -1 * dy : dy)\n      };\n    } else {\n      return {\n        x: midx + dx,\n        y: midy + -1 * dy\n      };\n    }\n  } else if (segment === 3) {\n    if (sourceEdge.curY >= 1 && targetEdge.curY <= 0) {\n      return {\n        x: midx + (sourceEdge.x < 0.5 ? -1 * dx : dx),\n        y: midy\n      };\n    } else if (sourceEdge.curX <= 0 && targetEdge.curX >= 1) {\n      return {\n        x: midx,\n        y: midy + (sourceEdge.y < 0.5 ? -1 * dy : dy)\n      };\n    } else {\n      return {\n        x: midx + -1 * dx,\n        y: midy + -1 * dy\n      };\n    }\n  } else if (segment === 4) {\n    if (sourceEdge.curY <= 0 && targetEdge.curY >= 1) {\n      return {\n        x: midx + (sourceEdge.x < 0.5 ? -1 * dx : dx),\n        y: midy\n      };\n    } else if (sourceEdge.curX <= 0 && targetEdge.curX >= 1) {\n      return {\n        x: midx,\n        y: midy + (sourceEdge.y < 0.5 ? -1 * dy : dy)\n      };\n    } else {\n      return {\n        x: midx + dx,\n        y: midy + -1 * dy\n      };\n    }\n  }\n}\nvar StateMachineConnector = function (_AbstractBezierConnec) {\n  _inherits(StateMachineConnector, _AbstractBezierConnec);\n  var _super = _createSuper(StateMachineConnector);\n  function StateMachineConnector(connection, params) {\n    var _this;\n    _classCallCheck(this, StateMachineConnector);\n    _this = _super.call(this, connection, params);\n    _this.connection = connection;\n    _defineProperty(_assertThisInitialized(_this), \"type\", StateMachineConnector.type);\n    _defineProperty(_assertThisInitialized(_this), \"_controlPoint\", void 0);\n    _this.curviness = params.curviness || 10;\n    _this.margin = params.margin || 5;\n    _this.proximityLimit = params.proximityLimit || 80;\n    _this.clockwise = params.orientation && params.orientation === \"clockwise\";\n    return _this;\n  }\n  _createClass(StateMachineConnector, [{\n    key: \"_computeBezier\",\n    value: function _computeBezier(paintInfo, params, sp, tp, w, h) {\n      var _sx = sp.curX < tp.curX ? 0 : w,\n          _sy = sp.curY < tp.curY ? 0 : h,\n          _tx = sp.curX < tp.curX ? w : 0,\n          _ty = sp.curY < tp.curY ? h : 0;\n      if (sp.x === 0) {\n        _sx -= this.margin;\n      }\n      if (sp.x === 1) {\n        _sx += this.margin;\n      }\n      if (sp.y === 0) {\n        _sy -= this.margin;\n      }\n      if (sp.y === 1) {\n        _sy += this.margin;\n      }\n      if (tp.x === 0) {\n        _tx -= this.margin;\n      }\n      if (tp.x === 1) {\n        _tx += this.margin;\n      }\n      if (tp.y === 0) {\n        _ty -= this.margin;\n      }\n      if (tp.y === 1) {\n        _ty += this.margin;\n      }\n      if (this.edited !== true) {\n        var _midx = (_sx + _tx) / 2,\n            _midy = (_sy + _ty) / 2,\n            segment = _segment(_sx, _sy, _tx, _ty),\n            distance = Math.sqrt(Math.pow(_tx - _sx, 2) + Math.pow(_ty - _sy, 2));\n        this._controlPoint = _findControlPoint(_midx, _midy, segment, params.sourcePos, params.targetPos, this.curviness, this.curviness, distance, this.proximityLimit);\n      } else {\n        this._controlPoint = this.geometry.controlPoints[0];\n      }\n      var cp1x, cp2x, cp1y, cp2y;\n      cp1x = this._controlPoint.x;\n      cp2x = this._controlPoint.x;\n      cp1y = this._controlPoint.y;\n      cp2y = this._controlPoint.y;\n      this.geometry = {\n        controlPoints: [this._controlPoint, this._controlPoint],\n        source: params.sourcePos,\n        target: params.targetPos\n      };\n      this._addSegment(BezierSegment, {\n        x1: _tx,\n        y1: _ty,\n        x2: _sx,\n        y2: _sy,\n        cp1x: cp1x,\n        cp1y: cp1y,\n        cp2x: cp2x,\n        cp2y: cp2y\n      });\n    }\n  }]);\n  return StateMachineConnector;\n}(AbstractBezierConnector);\n_defineProperty(StateMachineConnector, \"type\", \"StateMachine\");\n\nConnectors.register(BezierConnector.type, BezierConnector);\nConnectors.register(StateMachineConnector.type, StateMachineConnector);\n\nfunction sgn(n) {\n  return n < 0 ? -1 : n === 0 ? 0 : 1;\n}\nfunction segmentDirections(segment) {\n  return [sgn(segment[2] - segment[0]), sgn(segment[3] - segment[1])];\n}\nfunction segLength(s) {\n  return Math.sqrt(Math.pow(s[0] - s[2], 2) + Math.pow(s[1] - s[3], 2));\n}\nfunction _cloneArray(a) {\n  var _a = [];\n  _a.push.apply(_a, a);\n  return _a;\n}\nvar FlowchartConnector = function (_AbstractConnector) {\n  _inherits(FlowchartConnector, _AbstractConnector);\n  var _super = _createSuper(FlowchartConnector);\n  function FlowchartConnector(connection, params) {\n    var _this;\n    _classCallCheck(this, FlowchartConnector);\n    _this = _super.call(this, connection, params);\n    _this.connection = connection;\n    _defineProperty(_assertThisInitialized(_this), \"type\", FlowchartConnector.type);\n    _defineProperty(_assertThisInitialized(_this), \"internalSegments\", []);\n    _defineProperty(_assertThisInitialized(_this), \"midpoint\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"alwaysRespectStubs\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"cornerRadius\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"lastx\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"lasty\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"lastOrientation\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"loopbackRadius\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"isLoopbackCurrently\", void 0);\n    _this.midpoint = params.midpoint == null || isNaN(params.midpoint) ? 0.5 : params.midpoint;\n    _this.cornerRadius = params.cornerRadius != null ? params.cornerRadius : 0;\n    _this.alwaysRespectStubs = params.alwaysRespectStubs === true;\n    _this.lastx = null;\n    _this.lasty = null;\n    _this.lastOrientation = null;\n    _this.loopbackRadius = params.loopbackRadius || 25;\n    _this.isLoopbackCurrently = false;\n    return _this;\n  }\n  _createClass(FlowchartConnector, [{\n    key: \"getDefaultStubs\",\n    value: function getDefaultStubs() {\n      return [30, 30];\n    }\n  }, {\n    key: \"addASegment\",\n    value: function addASegment(x, y, paintInfo) {\n      if (this.lastx === x && this.lasty === y) {\n        return;\n      }\n      var lx = this.lastx == null ? paintInfo.sx : this.lastx,\n          ly = this.lasty == null ? paintInfo.sy : this.lasty,\n          o = lx === x ? \"v\" : \"h\";\n      this.lastx = x;\n      this.lasty = y;\n      this.internalSegments.push([lx, ly, x, y, o]);\n    }\n  }, {\n    key: \"writeSegments\",\n    value: function writeSegments(paintInfo) {\n      var current = null,\n          next,\n          currentDirection,\n          nextDirection;\n      for (var i = 0; i < this.internalSegments.length - 1; i++) {\n        current = current || _cloneArray(this.internalSegments[i]);\n        next = _cloneArray(this.internalSegments[i + 1]);\n        currentDirection = segmentDirections(current);\n        nextDirection = segmentDirections(next);\n        if (this.cornerRadius > 0 && current[4] !== next[4]) {\n          var minSegLength = Math.min(segLength(current), segLength(next));\n          var radiusToUse = Math.min(this.cornerRadius, minSegLength / 2);\n          current[2] -= currentDirection[0] * radiusToUse;\n          current[3] -= currentDirection[1] * radiusToUse;\n          next[0] += nextDirection[0] * radiusToUse;\n          next[1] += nextDirection[1] * radiusToUse;\n          var ac = currentDirection[1] === nextDirection[0] && nextDirection[0] === 1 || currentDirection[1] === nextDirection[0] && nextDirection[0] === 0 && currentDirection[0] !== nextDirection[1] || currentDirection[1] === nextDirection[0] && nextDirection[0] === -1,\n              sgny = next[1] > current[3] ? 1 : -1,\n              sgnx = next[0] > current[2] ? 1 : -1,\n              sgnEqual = sgny === sgnx,\n              cx = sgnEqual && ac || !sgnEqual && !ac ? next[0] : current[2],\n              cy = sgnEqual && ac || !sgnEqual && !ac ? current[3] : next[1];\n          this._addSegment(StraightSegment, {\n            x1: current[0],\n            y1: current[1],\n            x2: current[2],\n            y2: current[3]\n          });\n          this._addSegment(ArcSegment, {\n            r: radiusToUse,\n            x1: current[2],\n            y1: current[3],\n            x2: next[0],\n            y2: next[1],\n            cx: cx,\n            cy: cy,\n            ac: ac\n          });\n        } else {\n          this._addSegment(StraightSegment, {\n            x1: current[0],\n            y1: current[1],\n            x2: current[2],\n            y2: current[3]\n          });\n        }\n        current = next;\n      }\n      if (next != null) {\n        this._addSegment(StraightSegment, {\n          x1: next[0],\n          y1: next[1],\n          x2: next[2],\n          y2: next[3]\n        });\n      }\n    }\n  }, {\n    key: \"_compute\",\n    value: function _compute(paintInfo, params) {\n      var _this2 = this;\n      this.internalSegments.length = 0;\n      this.lastx = null;\n      this.lasty = null;\n      this.lastOrientation = null;\n      var commonStubCalculator = function commonStubCalculator(axis) {\n        return [paintInfo.startStubX, paintInfo.startStubY, paintInfo.endStubX, paintInfo.endStubY];\n      },\n          stubCalculators = {\n        perpendicular: commonStubCalculator,\n        orthogonal: commonStubCalculator,\n        opposite: function opposite(axis) {\n          var pi = paintInfo,\n              idx = axis === \"x\" ? 0 : 1,\n              areInProximity = {\n            \"x\": function x() {\n              return pi.so[idx] === 1 && (pi.startStubX > pi.endStubX && pi.tx > pi.startStubX || pi.sx > pi.endStubX && pi.tx > pi.sx) || pi.so[idx] === -1 && (pi.startStubX < pi.endStubX && pi.tx < pi.startStubX || pi.sx < pi.endStubX && pi.tx < pi.sx);\n            },\n            \"y\": function y() {\n              return pi.so[idx] === 1 && (pi.startStubY > pi.endStubY && pi.ty > pi.startStubY || pi.sy > pi.endStubY && pi.ty > pi.sy) || pi.so[idx] === -1 && (pi.startStubY < pi.endStubY && pi.ty < pi.startStubY || pi.sy < pi.endStubY && pi.ty < pi.sy);\n            }\n          };\n          if (!_this2.alwaysRespectStubs && areInProximity[axis]()) {\n            return {\n              \"x\": [(paintInfo.sx + paintInfo.tx) / 2, paintInfo.startStubY, (paintInfo.sx + paintInfo.tx) / 2, paintInfo.endStubY],\n              \"y\": [paintInfo.startStubX, (paintInfo.sy + paintInfo.ty) / 2, paintInfo.endStubX, (paintInfo.sy + paintInfo.ty) / 2]\n            }[axis];\n          } else {\n            return [paintInfo.startStubX, paintInfo.startStubY, paintInfo.endStubX, paintInfo.endStubY];\n          }\n        }\n      };\n      var stubs = stubCalculators[paintInfo.anchorOrientation](paintInfo.sourceAxis),\n          idx = paintInfo.sourceAxis === \"x\" ? 0 : 1,\n          oidx = paintInfo.sourceAxis === \"x\" ? 1 : 0,\n          ss = stubs[idx],\n          oss = stubs[oidx],\n          es = stubs[idx + 2],\n          oes = stubs[oidx + 2];\n      this.addASegment(stubs[0], stubs[1], paintInfo);\n      var midx = paintInfo.startStubX + (paintInfo.endStubX - paintInfo.startStubX) * this.midpoint,\n          midy = paintInfo.startStubY + (paintInfo.endStubY - paintInfo.startStubY) * this.midpoint;\n      var orientations = {\n        x: [0, 1],\n        y: [1, 0]\n      },\n          lineCalculators = {\n        perpendicular: function perpendicular(axis, ss, oss, es, oes) {\n          var pi = paintInfo,\n              sis = {\n            x: [[[1, 2, 3, 4], null, [2, 1, 4, 3]], null, [[4, 3, 2, 1], null, [3, 4, 1, 2]]],\n            y: [[[3, 2, 1, 4], null, [2, 3, 4, 1]], null, [[4, 1, 2, 3], null, [1, 4, 3, 2]]]\n          },\n              stubs = {\n            x: [[pi.startStubX, pi.endStubX], null, [pi.endStubX, pi.startStubX]],\n            y: [[pi.startStubY, pi.endStubY], null, [pi.endStubY, pi.startStubY]]\n          },\n              midLines = {\n            x: [[midx, pi.startStubY], [midx, pi.endStubY]],\n            y: [[pi.startStubX, midy], [pi.endStubX, midy]]\n          },\n              linesToEnd = {\n            x: [[pi.endStubX, pi.startStubY]],\n            y: [[pi.startStubX, pi.endStubY]]\n          },\n              startToEnd = {\n            x: [[pi.startStubX, pi.endStubY], [pi.endStubX, pi.endStubY]],\n            y: [[pi.endStubX, pi.startStubY], [pi.endStubX, pi.endStubY]]\n          },\n              startToMidToEnd = {\n            x: [[pi.startStubX, midy], [pi.endStubX, midy], [pi.endStubX, pi.endStubY]],\n            y: [[midx, pi.startStubY], [midx, pi.endStubY], [pi.endStubX, pi.endStubY]]\n          },\n              otherStubs = {\n            x: [pi.startStubY, pi.endStubY],\n            y: [pi.startStubX, pi.endStubX]\n          },\n              soIdx = orientations[axis][0],\n              toIdx = orientations[axis][1],\n              _so = pi.so[soIdx] + 1,\n              _to = pi.to[toIdx] + 1,\n              otherFlipped = pi.to[toIdx] === -1 && otherStubs[axis][1] < otherStubs[axis][0] || pi.to[toIdx] === 1 && otherStubs[axis][1] > otherStubs[axis][0],\n              stub1 = stubs[axis][_so][0],\n              stub2 = stubs[axis][_so][1],\n              segmentIndexes = sis[axis][_so][_to];\n          if (pi.segment === segmentIndexes[3] || pi.segment === segmentIndexes[2] && otherFlipped) {\n            return midLines[axis];\n          } else if (pi.segment === segmentIndexes[2] && stub2 < stub1) {\n            return linesToEnd[axis];\n          } else if (pi.segment === segmentIndexes[2] && stub2 >= stub1 || pi.segment === segmentIndexes[1] && !otherFlipped) {\n            return startToMidToEnd[axis];\n          } else if (pi.segment === segmentIndexes[0] || pi.segment === segmentIndexes[1] && otherFlipped) {\n            return startToEnd[axis];\n          }\n        },\n        orthogonal: function orthogonal(axis, startStub, otherStartStub, endStub, otherEndStub) {\n          var pi = paintInfo,\n              extent = {\n            \"x\": pi.so[0] === -1 ? Math.min(startStub, endStub) : Math.max(startStub, endStub),\n            \"y\": pi.so[1] === -1 ? Math.min(startStub, endStub) : Math.max(startStub, endStub)\n          }[axis];\n          return {\n            \"x\": [[extent, otherStartStub], [extent, otherEndStub], [endStub, otherEndStub]],\n            \"y\": [[otherStartStub, extent], [otherEndStub, extent], [otherEndStub, endStub]]\n          }[axis];\n        },\n        opposite: function opposite(axis, ss, oss, es, oes) {\n          var pi = paintInfo,\n              otherAxis = {\n            \"x\": \"y\",\n            \"y\": \"x\"\n          }[axis],\n              dim = {\n            \"x\": \"h\",\n            \"y\": \"w\"\n          }[axis],\n              comparator = pi[\"is\" + axis.toUpperCase() + \"GreaterThanStubTimes2\"];\n          if (params.sourceEndpoint.elementId === params.targetEndpoint.elementId) {\n            var _val = oss + (1 - params.sourceEndpoint._anchor.computedPosition[otherAxis]) * params.sourceInfo[dim] + _this2.maxStub;\n            return {\n              \"x\": [[ss, _val], [es, _val]],\n              \"y\": [[_val, ss], [_val, es]]\n            }[axis];\n          } else if (!comparator || pi.so[idx] === 1 && ss > es || pi.so[idx] === -1 && ss < es) {\n            return {\n              \"x\": [[ss, midy], [es, midy]],\n              \"y\": [[midx, ss], [midx, es]]\n            }[axis];\n          } else if (pi.so[idx] === 1 && ss < es || pi.so[idx] === -1 && ss > es) {\n            return {\n              \"x\": [[midx, pi.sy], [midx, pi.ty]],\n              \"y\": [[pi.sx, midy], [pi.tx, midy]]\n            }[axis];\n          }\n        }\n      };\n      var p = lineCalculators[paintInfo.anchorOrientation](paintInfo.sourceAxis, ss, oss, es, oes);\n      if (p) {\n        for (var i = 0; i < p.length; i++) {\n          this.addASegment(p[i][0], p[i][1], paintInfo);\n        }\n      }\n      this.addASegment(stubs[2], stubs[3], paintInfo);\n      this.addASegment(paintInfo.tx, paintInfo.ty, paintInfo);\n      this.writeSegments(paintInfo);\n    }\n  }, {\n    key: \"transformGeometry\",\n    value: function transformGeometry(g, dx, dy) {\n      return g;\n    }\n  }]);\n  return FlowchartConnector;\n}(AbstractConnector);\n_defineProperty(FlowchartConnector, \"type\", \"Flowchart\");\n\nConnectors.register(FlowchartConnector.type, FlowchartConnector);\n\nEndpointFactory.registerHandler(DotEndpointHandler);\nEndpointFactory.registerHandler(RectangleEndpointHandler);\nEndpointFactory.registerHandler(BlankEndpointHandler);\nConnectors.register(StraightConnector.type, StraightConnector);\n\nfunction _randomEvent() {\n  var x = Math.floor(Math.random() * 2000),\n      y = Math.floor(Math.random() * 2000);\n  return {\n    clientX: x,\n    clientY: y,\n    screenX: x,\n    screenY: y,\n    pageX: x,\n    pageY: y\n  };\n}\nvar _distantPointEvent = {\n  clientX: 50000,\n  clientY: 50000,\n  screenX: 50000,\n  screenY: 50000,\n  pageX: 50000,\n  pageY: 50000\n};\nvar lut = [];\nfor (var i = 0; i < 256; i++) {\n  lut[i] = (i < 16 ? '0' : '') + i.toString(16);\n}\nvar VERY_SMALL_NUMBER = 0.00000000001;\nvar BrowserUITestSupport = function () {\n  function BrowserUITestSupport(_jsPlumb, ok, equal) {\n    _classCallCheck(this, BrowserUITestSupport);\n    this._jsPlumb = _jsPlumb;\n    this.ok = ok;\n    this.equal = equal;\n    _defineProperty(this, \"_divs\", []);\n    _defineProperty(this, \"mottle\", void 0);\n    this.mottle = new EventManager();\n  }\n  _createClass(BrowserUITestSupport, [{\n    key: \"_t\",\n    value: function _t(el, evt, x, y) {\n      this.mottle.trigger(el, evt, {\n        pageX: x,\n        pageY: y,\n        screenX: x,\n        screenY: y,\n        clientX: x,\n        clientY: y\n      });\n    }\n  }, {\n    key: \"addDiv\",\n    value: function addDiv(id, parent, className, x, y, w, h) {\n      var d1 = document.createElement(\"div\");\n      d1.style.position = \"absolute\";\n      d1.innerHTML = id;\n      if (parent) parent.appendChild(d1);else this._jsPlumb.getContainer().appendChild(d1);\n      d1.setAttribute(\"id\", id);\n      d1.style.left = (x != null ? x : Math.floor(Math.random() * 1000)) + \"px\";\n      d1.style.top = (y != null ? y : Math.floor(Math.random() * 1000)) + \"px\";\n      if (className) d1.className = className;\n      if (w) d1.style.width = w + \"px\";\n      if (h) d1.style.height = h + \"px\";\n      this._divs.push(id);\n      return d1;\n    }\n  }, {\n    key: \"addDivs\",\n    value: function addDivs(ids, parent) {\n      for (var _i = 0; _i < ids.length; _i++) {\n        this.addDiv(ids[_i], parent);\n      }\n    }\n  }, {\n    key: \"assertEndpointCount\",\n    value: function assertEndpointCount(el, count) {\n      var ep = this._jsPlumb.getEndpoints(el),\n          epl = ep ? ep.length : 0;\n      this.equal(epl, count, el.getAttribute(\"data-jtk-managed\") + \" has \" + count + (count > 1 || count == 0 ? \" endpoints\" : \" endpoint\"));\n    }\n  }, {\n    key: \"_assertManagedEndpointCount\",\n    value: function _assertManagedEndpointCount(el, count) {\n      var id = this._jsPlumb.getId(el),\n          _mel = this._jsPlumb._managedElements[id];\n      this.equal(_mel.endpoints.length, count, id + \" has \" + count + \" endpoints in managed record\");\n    }\n  }, {\n    key: \"_assertManagedConnectionCount\",\n    value: function _assertManagedConnectionCount(el, count) {\n      var id = this._jsPlumb.getId(el),\n          _mel = this._jsPlumb._managedElements[id];\n      this.equal(_mel.connections.length, count, id + \" has \" + count + \" connections in managed record\");\n    }\n  }, {\n    key: \"_registerDiv\",\n    value: function _registerDiv(div) {\n      this._divs.push(div);\n    }\n  }, {\n    key: \"makeDragStartEvt\",\n    value: function makeDragStartEvt(el) {\n      var e = this.makeEvent(el),\n          c = this._jsPlumb.getContainer();\n      e.clientX += c.offsetLeft;\n      e.screenX += c.offsetLeft;\n      e.pageX += c.offsetLeft;\n      e.clientY += c.offsetTop;\n      e.screenY += c.offsetTop;\n      e.pageY += c.offsetTop;\n      return e;\n    }\n  }, {\n    key: \"getAttribute\",\n    value: function getAttribute(el, att) {\n      return el.getAttribute(att);\n    }\n  }, {\n    key: \"dragNodeBy\",\n    value: function dragNodeBy(el, x, y, events) {\n      events = events || {};\n      if (events.before) events.before();\n      var downEvent = this.makeEvent(el);\n      this._jsPlumb.trigger(el, EVENT_MOUSEDOWN, downEvent);\n      if (events.beforeMouseMove) {\n        events.beforeMouseMove();\n      }\n      this._t(document, EVENT_MOUSEMOVE, downEvent.pageX + x, downEvent.pageY + y);\n      if (events.beforeMouseUp) {\n        events.beforeMouseUp();\n      }\n      this.mottle.trigger(document, EVENT_MOUSEUP, null);\n      if (events.after) events.after();\n    }\n  }, {\n    key: \"dragNodeTo\",\n    value: function dragNodeTo(el, x, y, events) {\n      events = events || {};\n      var size = this._jsPlumb.viewport.getPosition(this._jsPlumb.getId(el));\n      if (events.before) events.before();\n      var downEvent = this.makeEvent(el);\n      this._jsPlumb.trigger(el, EVENT_MOUSEDOWN, downEvent);\n      var cb = this._jsPlumb.getContainer().getBoundingClientRect();\n      if (events.beforeMouseMove) {\n        events.beforeMouseMove();\n      }\n      this._t(document, EVENT_MOUSEMOVE, cb.x + x + size.w / 2, cb.y + y + size.h / 2);\n      if (events.beforeMouseUp) {\n        events.beforeMouseUp();\n      }\n      this.mottle.trigger(document, EVENT_MOUSEUP, null);\n      if (events.after) events.after();\n    }\n  }, {\n    key: \"dragToGroup\",\n    value: function dragToGroup(el, targetGroupId, events) {\n      var targetGroup = this._jsPlumb.getGroup(targetGroupId);\n      var tgo = this._jsPlumb.viewport.getPosition(targetGroup.elId),\n          tx = tgo.x + tgo.w / 2,\n          ty = tgo.y + tgo.h / 2;\n      this.dragNodeTo(el, tx, ty, events);\n    }\n  }, {\n    key: \"aSyncDragNodeBy\",\n    value: function aSyncDragNodeBy(el, x, y, events) {\n      var _this = this;\n      events = events || {};\n      if (events.before) {\n        events.before();\n      }\n      var downEvent = this.makeEvent(el);\n      this._jsPlumb.trigger(el, EVENT_MOUSEDOWN, downEvent);\n      if (events.beforeMouseMove) {\n        events.beforeMouseMove();\n      }\n      setTimeout(function () {\n        _this._t(document, EVENT_MOUSEMOVE, downEvent.pageX + x, downEvent.pageY + y);\n        if (events.beforeMouseUp) {\n          events.beforeMouseUp();\n        }\n        setTimeout(function () {\n          _this.mottle.trigger(document, EVENT_MOUSEUP, null);\n          if (events.after) {\n            events.after();\n          }\n        }, 45);\n      }, 45);\n    }\n  }, {\n    key: \"dragANodeAround\",\n    value: function dragANodeAround(el, functionToAssertWhileDragging, assertMessage) {\n      this._jsPlumb.trigger(el, EVENT_MOUSEDOWN, this.makeEvent(el));\n      var steps = Math.random() * 50;\n      for (var _i2 = 0; _i2 < steps; _i2++) {\n        var evt = _randomEvent();\n        el.style.left = evt.screenX + \"px\";\n        el.style.top = evt.screenY + \"px\";\n        this._jsPlumb.trigger(document, EVENT_MOUSEMOVE, evt);\n      }\n      if (functionToAssertWhileDragging) {\n        this.ok(functionToAssertWhileDragging(), assertMessage || \"while dragging assert\");\n      }\n      this._jsPlumb.trigger(document, EVENT_MOUSEUP, _distantPointEvent);\n    }\n  }, {\n    key: \"dragConnection\",\n    value: function dragConnection(d1, d2, mouseUpOnTarget, events) {\n      var el1 = this.getCanvas(d1),\n          el2 = this.getCanvas(d2);\n      var e1 = this.makeEvent(el1),\n          e2 = this.makeEvent(el2);\n      events = events || {};\n      var conns = this._jsPlumb.select().length;\n      this._jsPlumb.trigger(el1, EVENT_MOUSEDOWN, e1);\n      if (events.beforeMouseMove) {\n        events.beforeMouseMove();\n      }\n      this._jsPlumb.trigger(mouseUpOnTarget ? el2 : document, EVENT_MOUSEMOVE, e2);\n      if (events.beforeMouseUp) {\n        events.beforeMouseUp();\n      }\n      this._jsPlumb.trigger(mouseUpOnTarget ? el2 : document, EVENT_MOUSEUP, e2);\n      return this._jsPlumb.select().get(conns);\n    }\n  }, {\n    key: \"aSyncDragConnection\",\n    value: function aSyncDragConnection(d1, d2, events) {\n      var _this2 = this;\n      events = events || {};\n      var el1 = this.getCanvas(d1),\n          el2 = this.getCanvas(d2);\n      var e1 = this.makeEvent(el1),\n          e2 = this.makeEvent(el2);\n      var conns = this._jsPlumb.select().length;\n      this._jsPlumb.trigger(el1, EVENT_MOUSEDOWN, e1);\n      setTimeout(function () {\n        if (events.beforeMouseMove) {\n          events.beforeMouseMove();\n        }\n        _this2._jsPlumb.trigger(document, EVENT_MOUSEMOVE, e2);\n        setTimeout(function () {\n          if (events.beforeMouseUp) {\n            events.beforeMouseUp();\n          }\n          _this2._jsPlumb.trigger(el2, EVENT_MOUSEUP, e2);\n          if (events.after) {\n            events.after(_this2._jsPlumb.select().get(conns));\n          }\n        }, 5);\n      }, 5);\n    }\n  }, {\n    key: \"dragAndAbortConnection\",\n    value: function dragAndAbortConnection(d1) {\n      var el1 = this.getCanvas(d1);\n      var e1 = this.makeEvent(el1);\n      this._jsPlumb.trigger(el1, EVENT_MOUSEDOWN, e1);\n      this._jsPlumb.trigger(document, EVENT_MOUSEMOVE, _distantPointEvent);\n      this._jsPlumb.trigger(document, EVENT_MOUSEUP, _distantPointEvent);\n    }\n  }, {\n    key: \"detachConnection\",\n    value: function detachConnection(e, events) {\n      events = events || {};\n      var el1 = this.getEndpointCanvas(e);\n      var e1 = this.makeEvent(el1);\n      events.before && events.before();\n      this._jsPlumb.trigger(el1, EVENT_MOUSEDOWN, e1);\n      events.beforeMouseMove && events.beforeMouseMove();\n      this._jsPlumb.trigger(document, EVENT_MOUSEMOVE, _distantPointEvent);\n      events.beforeMouseUp && events.beforeMouseUp();\n      this._jsPlumb.trigger(document, EVENT_MOUSEUP, _distantPointEvent);\n      events.after && events.after();\n    }\n  }, {\n    key: \"detachAndReattachConnection\",\n    value: function detachAndReattachConnection(e, events) {\n      events = events || {};\n      var el1 = this.getEndpointCanvas(e);\n      var e1 = this.makeEvent(el1);\n      events.before && events.before();\n      this._jsPlumb.trigger(el1, EVENT_MOUSEDOWN, e1);\n      events.beforeMouseMove && events.beforeMouseMove();\n      this._jsPlumb.trigger(document, EVENT_MOUSEMOVE, _distantPointEvent);\n      this._jsPlumb.trigger(document, EVENT_MOUSEMOVE, e1);\n      events.beforeMouseUp && events.beforeMouseUp();\n      this._jsPlumb.trigger(document, EVENT_MOUSEUP, e1);\n      events.after && events.after();\n    }\n  }, {\n    key: \"detachConnectionByTarget\",\n    value: function detachConnectionByTarget(c, events) {\n      this.detachConnection(c.endpoints[1], events);\n    }\n  }, {\n    key: \"relocateTarget\",\n    value: function relocateTarget(conn, newEl, events) {\n      this.relocate(conn, 1, newEl, events);\n    }\n  }, {\n    key: \"relocate\",\n    value: function relocate(conn, idx, newEl, events) {\n      events = events || {};\n      newEl = this.getCanvas(newEl);\n      var el1 = this.getEndpointCanvas(conn.endpoints[idx]);\n      var e1 = this.makeEvent(el1);\n      var e2 = this.makeEvent(newEl);\n      events.before && events.before();\n      this._jsPlumb.trigger(el1, EVENT_MOUSEDOWN, e1);\n      events.beforeMouseMove && events.beforeMouseMove();\n      this._jsPlumb.trigger(document, EVENT_MOUSEMOVE, e2);\n      events.beforeMouseUp && events.beforeMouseUp();\n      this._jsPlumb.trigger(newEl, EVENT_MOUSEUP, e2);\n      events.after && events.after();\n    }\n  }, {\n    key: \"relocateSource\",\n    value: function relocateSource(conn, newEl, events) {\n      this.relocate(conn, 0, newEl, events);\n    }\n  }, {\n    key: \"makeEvent\",\n    value: function makeEvent(el) {\n      var b = el.getBoundingClientRect();\n      var l = b.x + b.width / 2,\n          t = b.y + b.height / 2;\n      return {\n        clientX: l,\n        clientY: t,\n        screenX: l,\n        screenY: t,\n        pageX: l,\n        pageY: t\n      };\n    }\n  }, {\n    key: \"getCanvas\",\n    value: function getCanvas(epOrEl) {\n      if (epOrEl.endpoint) {\n        return this.getEndpointCanvas(epOrEl);\n      } else {\n        return epOrEl;\n      }\n    }\n  }, {\n    key: \"getEndpointCanvas\",\n    value: function getEndpointCanvas(ep) {\n      return ep.endpoint.canvas;\n    }\n  }, {\n    key: \"getConnectionCanvas\",\n    value: function getConnectionCanvas(c) {\n      return c.connector.canvas;\n    }\n  }, {\n    key: \"getEndpointCanvasPosition\",\n    value: function getEndpointCanvasPosition(ep) {\n      var c = this.getEndpointCanvas(ep);\n      return {\n        x: parseInt(c.style.left, 10),\n        y: parseInt(c.style.top, 10),\n        w: c.getAttribute(\"width\"),\n        h: c.getAttribute(\"height\")\n      };\n    }\n  }, {\n    key: \"within\",\n    value: function within(val, target, msg) {\n      this.ok(Math.abs(val - target) < VERY_SMALL_NUMBER, msg + \"[expected: \" + target + \" got \" + val + \"] [diff:\" + Math.abs(val - target) + \"]\");\n    }\n  }, {\n    key: \"assertManagedEndpointCount\",\n    value: function assertManagedEndpointCount(el, count) {\n      var id = this._jsPlumb.getId(el),\n          _mel = this._jsPlumb._managedElements[id];\n      this.equal(_mel.endpoints.length, count, id + \" has \" + count + \" endpoints in managed record\");\n    }\n  }, {\n    key: \"assertManagedConnectionCount\",\n    value: function assertManagedConnectionCount(el, count) {\n      var id = this._jsPlumb.getId(el),\n          _mel = this._jsPlumb._managedElements[id];\n      this.equal(_mel.connections.length, count, id + \" has \" + count + \" connections in managed record\");\n    }\n  }, {\n    key: \"fireEventOnEndpoint\",\n    value: function fireEventOnEndpoint(ep) {\n      var canvas = this.getEndpointCanvas(ep);\n      for (var _i3 = 0; _i3 < (arguments.length <= 1 ? 0 : arguments.length - 1); _i3++) {\n        this._jsPlumb.trigger(canvas, _i3 + 1 < 1 || arguments.length <= _i3 + 1 ? undefined : arguments[_i3 + 1]);\n      }\n    }\n  }, {\n    key: \"fireEventOnElement\",\n    value: function fireEventOnElement(e) {\n      for (var _i4 = 0; _i4 < (arguments.length <= 1 ? 0 : arguments.length - 1); _i4++) {\n        this._jsPlumb.trigger(e, _i4 + 1 < 1 || arguments.length <= _i4 + 1 ? undefined : arguments[_i4 + 1]);\n      }\n    }\n  }, {\n    key: \"fireEventOnConnection\",\n    value: function fireEventOnConnection(connection) {\n      var canvas = this.getConnectionCanvas(connection);\n      for (var _len = arguments.length, events = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        events[_key - 1] = arguments[_key];\n      }\n      this.fireEventOnElement.apply(this, [canvas].concat(events));\n    }\n  }, {\n    key: \"clickOnConnection\",\n    value: function clickOnConnection(connection) {\n      this.fireEventOnConnection(connection, EVENT_CLICK);\n    }\n  }, {\n    key: \"dblClickOnConnection\",\n    value: function dblClickOnConnection(connection) {\n      this.fireEventOnConnection(connection, EVENT_DBL_CLICK);\n    }\n  }, {\n    key: \"tapOnConnection\",\n    value: function tapOnConnection(connection) {\n      this.fireEventOnConnection(connection, EVENT_MOUSEDOWN);\n      this.fireEventOnConnection(connection, EVENT_MOUSEUP);\n    }\n  }, {\n    key: \"dblTapOnConnection\",\n    value: function dblTapOnConnection(connection) {\n      this.fireEventOnConnection(connection, EVENT_MOUSEDOWN);\n      this.fireEventOnConnection(connection, EVENT_MOUSEUP);\n      this.fireEventOnConnection(connection, EVENT_MOUSEDOWN);\n      this.fireEventOnConnection(connection, EVENT_MOUSEUP);\n    }\n  }, {\n    key: \"clickOnElement\",\n    value: function clickOnElement(element, clickCount) {\n      this._jsPlumb.trigger(element, EVENT_CLICK, null, null, clickCount == null ? 1 : clickCount);\n    }\n  }, {\n    key: \"dblClickOnElement\",\n    value: function dblClickOnElement(element) {\n      this._jsPlumb.trigger(element, EVENT_DBL_CLICK);\n    }\n  }, {\n    key: \"tapOnElement\",\n    value: function tapOnElement(element) {\n      this._jsPlumb.trigger(element, EVENT_MOUSEDOWN);\n      this._jsPlumb.trigger(element, EVENT_MOUSEUP);\n    }\n  }, {\n    key: \"dblTapOnElement\",\n    value: function dblTapOnElement(element) {\n      this._jsPlumb.trigger(element, EVENT_MOUSEDOWN);\n      this._jsPlumb.trigger(element, EVENT_MOUSEUP);\n      this._jsPlumb.trigger(element, EVENT_MOUSEDOWN);\n      this._jsPlumb.trigger(element, EVENT_MOUSEUP);\n    }\n  }, {\n    key: \"getOverlayCanvas\",\n    value: function getOverlayCanvas(overlay) {\n      return overlay.canvas || overlay.path;\n    }\n  }, {\n    key: \"fireEventOnOverlay\",\n    value: function fireEventOnOverlay(connection, overlayId, event) {\n      var overlay = connection.getOverlay(overlayId);\n      var canvas = this.getOverlayCanvas(overlay);\n      this._jsPlumb.trigger(canvas, event);\n    }\n  }, {\n    key: \"clickOnOverlay\",\n    value: function clickOnOverlay(connection, overlayId) {\n      this.fireEventOnOverlay(connection, overlayId, EVENT_CLICK);\n    }\n  }, {\n    key: \"dblClickOnOverlay\",\n    value: function dblClickOnOverlay(connection, overlayId) {\n      this.fireEventOnOverlay(connection, overlayId, EVENT_DBL_CLICK);\n    }\n  }, {\n    key: \"tapOnOverlay\",\n    value: function tapOnOverlay(connection, overlayId) {\n      this.fireEventOnOverlay(connection, overlayId, EVENT_MOUSEDOWN);\n      this.fireEventOnOverlay(connection, overlayId, EVENT_MOUSEUP);\n    }\n  }, {\n    key: \"dblTapOnOverlay\",\n    value: function dblTapOnOverlay(connection, overlayId) {\n      this.fireEventOnOverlay(connection, overlayId, EVENT_MOUSEDOWN);\n      this.fireEventOnOverlay(connection, overlayId, EVENT_MOUSEUP);\n      this.fireEventOnOverlay(connection, overlayId, EVENT_MOUSEDOWN);\n      this.fireEventOnOverlay(connection, overlayId, EVENT_MOUSEUP);\n    }\n  }, {\n    key: \"cleanup\",\n    value: function cleanup() {\n      var container = this._jsPlumb.getContainer();\n      this._jsPlumb.destroy();\n      for (var _i5 in this._divs) {\n        var d = document.getElementById(this._divs[_i5]);\n        d && d.parentNode.removeChild(d);\n      }\n      this._divs.length = 0;\n      var connCount = this._jsPlumb.select().length,\n          epCount = this._jsPlumb.selectEndpoints().length,\n          epElCount = container.querySelectorAll(\".jtk-endpoint\").length,\n          connElCount = container.querySelectorAll(\".jtk-connector\").length;\n      for (var k in container.__ta) {\n        for (var kk in container.__ta[k]) {\n          throw \"Container event bindings not empty for key \" + k;\n        }\n      }\n      if (connCount > 0) throw \"there are connections in the data model!\";\n      if (epCount > 0) throw \"there are endpoints in the data model!\";\n      if (epElCount > 0) {\n        throw \"there are \" + epElCount + \" endpoints left in the dom!\";\n      }\n      if (connElCount > 0) {\n        throw \"there are \" + connElCount + \" connections left in the dom!\";\n      }\n    }\n  }, {\n    key: \"makeContent\",\n    value: function makeContent(s) {\n      var d = document.createElement(\"div\");\n      d.innerHTML = s;\n      return d.firstChild;\n    }\n  }, {\n    key: \"length\",\n    value: function length(obj) {\n      var c = 0;\n      for (var _i6 in obj) {\n        if (obj.hasOwnProperty(_i6)) {\n          c++;\n        }\n      }\n      return c;\n    }\n  }, {\n    key: \"head\",\n    value: function head(obj) {\n      for (var _i7 in obj) {\n        return obj[_i7];\n      }\n    }\n  }, {\n    key: \"uuid\",\n    value: function uuid$1() {\n      return uuid();\n    }\n  }]);\n  return BrowserUITestSupport;\n}();\n\nfunction createTestSupportInstance(instance, ok, equal) {\n  return new BrowserUITestSupport(instance, ok, equal);\n}\nfunction createTestSupportInstanceQUnit(instance) {\n  return new BrowserUITestSupport(instance, QUnit.ok, QUnit.equal);\n}\n\nvar _jsPlumbInstanceIndex = 0;\nfunction getInstanceIndex() {\n  var i = _jsPlumbInstanceIndex + 1;\n  _jsPlumbInstanceIndex++;\n  return i;\n}\nfunction newInstance(defaults) {\n  return new BrowserJsPlumbInstance(getInstanceIndex(), defaults);\n}\nfunction ready(f) {\n  var _do = function _do() {\n    if (/complete|loaded|interactive/.test(document.readyState) && typeof document.body !== \"undefined\" && document.body != null) {\n      f();\n    } else {\n      setTimeout(_do, 9);\n    }\n  };\n  _do();\n}\n\nexport { ABSOLUTE, ADD_CLASS_ACTION, ATTRIBUTE_CONTAINER, ATTRIBUTE_GROUP, ATTRIBUTE_GROUP_CONTENT, ATTRIBUTE_JTK_ENABLED, ATTRIBUTE_JTK_SCOPE, ATTRIBUTE_MANAGED, ATTRIBUTE_NOT_DRAGGABLE, ATTRIBUTE_SCOPE, ATTRIBUTE_SCOPE_PREFIX, ATTRIBUTE_TABINDEX, ATTR_SCROLLABLE_LIST, AbstractBezierConnector, AbstractConnector, AbstractSegment, AnchorLocations, ArcSegment, ArrowOverlay, BLOCK, BOTTOM, BezierConnector, BezierSegment, BlankEndpoint, BlankEndpointHandler, BrowserJsPlumbInstance, BrowserUITestSupport, CHECK_CONDITION, CHECK_DROP_ALLOWED, CLASS_CONNECTED, CLASS_CONNECTOR, CLASS_CONNECTOR_OUTLINE, CLASS_DELEGATED_DRAGGABLE, CLASS_DRAGGABLE, CLASS_DRAGGED, CLASS_DRAG_ACTIVE, CLASS_DRAG_CONTAINER, CLASS_DRAG_HOVER, CLASS_ENDPOINT, CLASS_ENDPOINT_ANCHOR_PREFIX, CLASS_ENDPOINT_CONNECTED, CLASS_ENDPOINT_DROP_ALLOWED, CLASS_ENDPOINT_DROP_FORBIDDEN, CLASS_ENDPOINT_FLOATING, CLASS_ENDPOINT_FULL, CLASS_GHOST_PROXY, CLASS_GROUP_COLLAPSED, CLASS_GROUP_EXPANDED, CLASS_OVERLAY, CONNECTION, Collicat, Component, Connection, ConnectionDragSelector, ConnectionSelection, Connectors, ContainmentType, CustomOverlay, DEFAULT, DEFAULT_KEY_ALLOW_NESTED_GROUPS, DEFAULT_KEY_ANCHOR, DEFAULT_KEY_ANCHORS, DEFAULT_KEY_CONNECTIONS_DETACHABLE, DEFAULT_KEY_CONNECTION_OVERLAYS, DEFAULT_KEY_CONNECTOR, DEFAULT_KEY_CONTAINER, DEFAULT_KEY_ENDPOINT, DEFAULT_KEY_ENDPOINTS, DEFAULT_KEY_ENDPOINT_HOVER_STYLE, DEFAULT_KEY_ENDPOINT_HOVER_STYLES, DEFAULT_KEY_ENDPOINT_OVERLAYS, DEFAULT_KEY_ENDPOINT_STYLE, DEFAULT_KEY_ENDPOINT_STYLES, DEFAULT_KEY_HOVER_CLASS, DEFAULT_KEY_HOVER_PAINT_STYLE, DEFAULT_KEY_LIST_STYLE, DEFAULT_KEY_MAX_CONNECTIONS, DEFAULT_KEY_PAINT_STYLE, DEFAULT_KEY_REATTACH_CONNECTIONS, DEFAULT_KEY_SCOPE, DEFAULT_LIST_OPTIONS, DiamondOverlay, DotEndpoint, DotEndpointHandler, Drag, DragManager, ELEMENT, ELEMENT_DIV, EMPTY_BOUNDS, ENDPOINT, ERROR_SOURCE_DOES_NOT_EXIST, ERROR_SOURCE_ENDPOINT_FULL, ERROR_TARGET_DOES_NOT_EXIST, ERROR_TARGET_ENDPOINT_FULL, EVENT_ANCHOR_CHANGED, EVENT_BEFORE_START, EVENT_CLICK, EVENT_CONNECTION, EVENT_CONNECTION_ABORT, EVENT_CONNECTION_CLICK, EVENT_CONNECTION_CONTEXTMENU, EVENT_CONNECTION_DBL_CLICK, EVENT_CONNECTION_DBL_TAP, EVENT_CONNECTION_DETACHED, EVENT_CONNECTION_DRAG, EVENT_CONNECTION_MOUSEDOWN, EVENT_CONNECTION_MOUSEOUT, EVENT_CONNECTION_MOUSEOVER, EVENT_CONNECTION_MOUSEUP, EVENT_CONNECTION_MOVED, EVENT_CONNECTION_TAP, EVENT_CONTAINER_CHANGE, EVENT_CONTEXTMENU, EVENT_DBL_CLICK, EVENT_DBL_TAP, EVENT_DRAG, EVENT_DRAG_MOVE, EVENT_DRAG_START, EVENT_DRAG_STOP, EVENT_DROP, EVENT_ELEMENT_CLICK, EVENT_ELEMENT_CONTEXTMENU, EVENT_ELEMENT_DBL_CLICK, EVENT_ELEMENT_DBL_TAP, EVENT_ELEMENT_MOUSE_DOWN, EVENT_ELEMENT_MOUSE_MOVE, EVENT_ELEMENT_MOUSE_OUT, EVENT_ELEMENT_MOUSE_OVER, EVENT_ELEMENT_MOUSE_UP, EVENT_ELEMENT_TAP, EVENT_ENDPOINT_CLICK, EVENT_ENDPOINT_DBL_CLICK, EVENT_ENDPOINT_DBL_TAP, EVENT_ENDPOINT_MOUSEDOWN, EVENT_ENDPOINT_MOUSEOUT, EVENT_ENDPOINT_MOUSEOVER, EVENT_ENDPOINT_MOUSEUP, EVENT_ENDPOINT_REPLACED, EVENT_ENDPOINT_TAP, EVENT_FOCUS, EVENT_GROUP_ADDED, EVENT_GROUP_COLLAPSE, EVENT_GROUP_EXPAND, EVENT_GROUP_MEMBER_ADDED, EVENT_GROUP_MEMBER_REMOVED, EVENT_GROUP_REMOVED, EVENT_INTERNAL_CONNECTION, EVENT_INTERNAL_CONNECTION_DETACHED, EVENT_INTERNAL_ENDPOINT_UNREGISTERED, EVENT_MANAGE_ELEMENT, EVENT_MAX_CONNECTIONS, EVENT_MOUSEDOWN, EVENT_MOUSEENTER, EVENT_MOUSEEXIT, EVENT_MOUSEMOVE, EVENT_MOUSEOUT, EVENT_MOUSEOVER, EVENT_MOUSEUP, EVENT_NESTED_GROUP_ADDED, EVENT_NESTED_GROUP_REMOVED, EVENT_OUT, EVENT_OVER, EVENT_REVERT, EVENT_SCROLL, EVENT_START, EVENT_STOP, EVENT_TAP, EVENT_TOUCHEND, EVENT_TOUCHMOVE, EVENT_TOUCHSTART, EVENT_UNMANAGE_ELEMENT, EVENT_ZOOM, ElementDragHandler, ElementTypes, Endpoint, EndpointFactory, EndpointRepresentation, EndpointSelection, EventGenerator, EventManager, FALSE$1 as FALSE, FIXED, FlowchartConnector, GroupManager, INTERCEPT_BEFORE_DETACH, INTERCEPT_BEFORE_DRAG, INTERCEPT_BEFORE_DROP, INTERCEPT_BEFORE_START_DETACH, IS_DETACH_ALLOWED, JsPlumbInstance, JsPlumbList, JsPlumbListManager, KEY_CONNECTION_OVERLAYS, LEFT, LabelOverlay, LightweightFloatingAnchor, LightweightRouter, NONE, OptimisticEventGenerator, Overlay, OverlayFactory, PROPERTY_POSITION, PerimeterAnchorShapes, PlainArrowOverlay, PositioningStrategies, REDROP_POLICY_ANY, REDROP_POLICY_ANY_SOURCE, REDROP_POLICY_ANY_SOURCE_OR_TARGET, REDROP_POLICY_ANY_TARGET, REDROP_POLICY_STRICT, REMOVE_CLASS_ACTION, RIGHT, RectangleEndpoint, RectangleEndpointHandler, SELECTOR_CONNECTOR, SELECTOR_ENDPOINT, SELECTOR_GROUP, SELECTOR_GROUP_CONTAINER, SELECTOR_MANAGED_ELEMENT, SELECTOR_OVERLAY, SELECTOR_SCROLLABLE_LIST, SOURCE, SOURCE_INDEX, STATIC, StateMachineConnector, StraightConnector, StraightSegment, SupportedEdge, TARGET, TARGET_INDEX, TOP, TRUE$1 as TRUE, TWO_PI, UIGroup, UINode, UNDEFINED, Viewport, WILDCARD, X_AXIS_FACES, Y_AXIS_FACES, _createPerimeterAnchor, _removeTypeCssHelper, _updateHoverStyle, add, addClass, addToDictionary, addToList, addWithFunction, arraysEqual, att, bezierLineIntersection, boundingBoxIntersection, boxIntersection, classList, clone, cls, compoundEvent, computeBezierLength, consume, convertToFullOverlaySpec, createElement, createElementNS, createFloatingAnchor, createTestSupportInstance, createTestSupportInstanceQUnit, dist, distanceFromCurve, each, encloses, extend, fastTrim, filterList, filterNull, findAllWithFunction, findParent, findWithFunction, fixPrecision, forEach, fromArray, functionChain, getAllWithFunction, getClass, getDefaultFace, getElementPosition, getElementSize, getElementType, getEventSource, getFromSetWithFunction, getPageLocation, getPositionOnElement, getTouch, getWithFunction, getsert, gradient, gradientAtPoint, gradientAtPointAlongPathFrom, groupDragConstrain, hasClass, insertSorted, intersects, isArrayLike, isArrowOverlay, isAssignableFrom, isBoolean, isContinuous, isCustomOverlay, isDate, isDiamondOverlay, isDynamic, isEdgeSupported, isEmpty, _isFloating as isFloating, isFullOverlaySpec, isFunction, isInsideParent, isLabelOverlay, isMouseDevice, isNamedFunction, isNodeList, isNumber, isObject, isPlainArrowOverlay, isPoint, isSVGElement, isString, isTouchDevice, lineIntersection, lineLength, lineRectangleIntersection, locationAlongCurveFrom, log, logEnabled, makeLightweightAnchorFromSpec, map, matchesSelector$1 as matchesSelector, merge, nearestPointOnCurve, newInstance, normal, objectsEqual, offsetRelativeToRoot, offsetSize, onDocumentReady, pageLocation, perpendicularLineTo, perpendicularToPathAt, pointAlongCurveFrom, pointAlongPath, pointOnCurve, pointOnLine, populate, quadrant, ready, registerEndpointRenderer, remove, removeClass, removeWithFunction, replace, rotateAnchorOrientation, rotatePoint, setForceMouseEvents, setForceTouchEvents, setToArray, sgn$1 as sgn, snapToGrid, subtract, suggest, svg, svgWidthHeightSize, svgXYPosition, theta, toggleClass, touchCount, touches, uuid, wrap };\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n\n\n  initialize() {\n    super.initialize()\n  }\n\n  connect() {\n    super.connect();\n    // console.log(\"eventTriggered: \", this.triggeredValue)\n    const self = this\n    const $target = $(this.element)\n    // console.log(\"skill_rating_modal connected to: \", $target)\n    const needsClosingAction = $target.data(\"needs-closing-action\")\n    // console.log(\"needsClosingAction: \", needsClosingAction)\n    const $skillRatingModal = $(\"#skill_rating_modal\")\n    $skillRatingModal.modal(\"show\")\n    if(needsClosingAction) {\n      $skillRatingModal.on('hidden.bs.modal', function (event) {\n        // console.log(\"I'm hidden!\")\n        self.stimulate(\"SkillReflex#compute_average_rating\").then(payload => {\n          console.log(\"skillReflex stimulated to compute average rating\")\n        });\n  \n        $skillRatingModal.off('hidden.bs.modal')\n      });\n    }\n\n  }\n\n\n\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n    $(this.element).modal('show')\n    this.create_authenticy_token_for('#translation_form')\n    this.create_authenticy_token_for('#translation_add_form')\n    this.reset_csrf_token()\n  }\n}", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['image']\n\n  connect() {\n    super.connect()\n    this.useReflex = true\n    \n    console.log('\uD83D\uDD0C Modal connected:', {\n      image: this.imageTarget.src\n    })\n\n    // Open modal automatically when component loads (only first time)\n    if (!this.element.classList.contains('show')) {\n      this.openModal()\n    }\n  }\n\n  openModal() {\n    const modal = $(this.element)\n    modal.modal('show')\n  }\n\n  cleanup() {\n    // Modal closed - cleanup if needed\n    console.log('\uD83E\uDDF9 Modal closed')\n  }\n\n  disconnect() {\n    // Ensure modal is properly closed when component is removed\n    const modal = $(this.element)\n    if (modal.hasClass('show')) {\n      modal.modal('hide')\n    }\n    super.disconnect()\n  }\n}\n\n", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n  static targets = [\"content\", \"minimized\"]\n  \n  initialize() {\n    super.initialize()\n    this.useReflex = false\n  }\n  \n  connect() {\n    super.connect()\n    // Start maximized by default (show full debug info)\n    this.maximize()\n  }\n  \n  minimize() {\n    this.contentTarget.classList.add('d-none')\n    this.minimizedTarget.classList.remove('d-none')\n  }\n  \n  maximize() {\n    this.contentTarget.classList.remove('d-none')\n    this.minimizedTarget.classList.add('d-none')\n  }\n  \n  toggle() {\n    if (this.contentTarget.classList.contains('d-none')) {\n      this.maximize()\n    } else {\n      this.minimize()\n    }\n  }\n}\n\n", "import ApplicationController from \"../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n  connect() {\n    super.connect()\n  }\n\n  /**\n   * Handle view mode switch with loading feedback\n   * @param {Event} event The click event\n   */\n  switchMode(event) {\n    event.preventDefault()\n    \n    // Show loading spinner immediately\n    this.startLoading()\n    \n    // Get the target URL from the link\n    const targetUrl = event.currentTarget.href\n    \n    // Navigate to the new view mode\n    window.location.href = targetUrl\n    \n    // Note: stopLoading() will happen automatically on page load\n  }\n\n  disconnect() {\n    super.disconnect()\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller';\n\nexport default class extends ApplicationController {\n  initialize() {\n    super.initialize()\n    this.open()\n  }\n\n  open(event) {\n    this.logInfo('open modal')\n    $(this.element).modal('show')\n  }\n\n  close(event) {\n    $(this.element).modal('hide')\n  }\n}", "import ApplicationController from '../../../javascript/controllers/application_controller';\n\nexport default class extends ApplicationController {\n\n  static targets = [\"continueBtn\", \"primaryHiddenField\", \"secondaryHiddenField\"]\n\n  initialize() {\n    super.initialize()\n    this.open()\n\n    this.primarySlot = null\n    this.secondarySlot = null\n  }\n\n  open(event) {\n    $(this.element).modal('show')\n  }\n\n  goToLearnTypePage(event) {\n    event.preventDefault()\n\n    const $introPage = $(this.element).find('#intro_page')\n    const $chooseLearnTypePage = $(this.element).find('#choose_learn_type_page')\n\n    this.#initLearnTypePage()\n\n    $introPage.addClass('hidden')\n    $chooseLearnTypePage.removeClass('hidden')\n  }\n\n  #initLearnTypePage() {\n    this.primarySlot = null\n    this.secondarySlot = null\n    $(this.element).find('#choose_learn_type_page .big-btn-group .big-btn.selected').removeClass('selected')\n    this.#enableContinueBtn()\n  }\n\n  chooseLearnType(event) {\n    event.preventDefault()\n    const $target = $(event.currentTarget)\n    const $parent = $(event.currentTarget).parent('.big-btn-group')\n    const $activeElements = $parent.find('.big-btn.selected')\n    const learnType = $target.data('learn-type')\n\n    if($target.hasClass('selected')) {\n      $target.removeClass('selected')\n      this.#removeFromSlot(learnType, learnType)\n    } else {\n      if($activeElements.length < 2) {\n        $target.addClass('selected')\n        this.#fillFittingSlot(learnType)\n        this.#displayFittingSlotLabel($target, learnType)\n      }\n    }\n\n    this.logInfo(`primary slot -> ${this.primarySlot}`)\n    this.logInfo(`secondary slot -> ${this.secondarySlot}`)\n\n    this.#enableContinueBtn()\n  }\n\n  backToIntro(event){\n    event.preventDefault()\n\n    const $introPage = $(this.element).find('#intro_page')\n    const $chooseLearnTypePage = $(this.element).find('#choose_learn_type_page')\n\n    $introPage.removeClass('hidden')\n    $chooseLearnTypePage.addClass('hidden')\n  }\n\n  close(event) {\n    event.preventDefault()\n    $(this.element).modal('hide')\n  }\n\n  #fillFittingSlot(learnType) {\n    if(this.primarySlot == null) {\n      this.primarySlot = learnType\n      this.#setPrimaryHiddenField(learnType)\n    } else if(this.secondarySlot == null) {\n      this.secondarySlot = learnType\n      this.#setSecondaryHiddenField(learnType)\n    }\n  }\n\n  #removeFromSlot(learnType) {\n    if(this.primarySlot === learnType) {\n      this.primarySlot = null\n      this.#setPrimaryHiddenField('')\n    }\n    if(this.secondarySlot === learnType) {\n      this.secondarySlot = null\n      this.#setSecondaryHiddenField('')\n    }\n  }\n\n  #setPrimaryHiddenField(value) {\n    if(this.hasPrimaryHiddenFieldTarget) {\n      $(this.primaryHiddenFieldTarget).val(value)\n    }\n  }\n\n  #setSecondaryHiddenField(value) {\n    if(this.hasSecondaryHiddenFieldTarget) {\n      $(this.secondaryHiddenFieldTarget).val(value)\n    }\n  }\n\n  #displayFittingSlotLabel($target, learnType) {\n    if(this.primarySlot == learnType) {\n      $target.find('.primary-slot').removeClass('hidden')\n      $target.find('.secondary-slot').addClass('hidden')\n      return\n    }\n\n    if(this.secondarySlot == learnType) {\n      $target.find('.primary-slot').addClass('hidden')\n      $target.find('.secondary-slot').removeClass('hidden')\n      return\n    }\n\n    $target.find('.primary-slot').addClass('hidden')\n    $target.find('.secondary-slot').addClass('hidden')\n  }\n\n  #enableContinueBtn() {\n    if(this.hasContinueBtnTarget) {\n      if(this.primarySlot != null && this.secondarySlot != null) {\n        $(this.continueBtnTarget).removeClass('disabled')\n      } else {\n        $(this.continueBtnTarget).addClass('disabled')\n      }\n    }\n  }\n}", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n\n  static targets = [\"step\", \"question\"]\n\n  initialize() {\n    super.initialize()\n    this.currentStep = 0\n    this.currentQuestion = 0\n    if(this.hasStepTarget) {\n      $(this.stepTargets).addClass('d-none')\n      $(this.stepTargets[this.currentStep]).removeClass('d-none')\n    }\n\n    if(this.hasQuestionTarget) {\n      $(this.questionTargets).addClass('d-none')\n      $(this.questionTargets[this.currentQuestion]).removeClass('d-none')\n    }\n  }\n\n  nextStep(event) {\n    if(this.hasStepTarget) {\n      if(this.stepTargets.length > this.currentStep + 1) {\n        this.currentStep++\n        const prevStepDom = this.stepTargets[this.currentStep - 1]\n        const stepDom = this.stepTargets[this.currentStep]\n        $(prevStepDom).addClass('animate__fadeOut')\n        $(stepDom).removeClass('d-none').addClass('animate__fadeIn')\n        setTimeout(() => $(prevStepDom).addClass('d-none'), 1000)\n      }\n    }\n  }\n\n  decideNextStep(event) {\n    console.log(event)\n    const questionComplete = event.detail.question_complete\n    const nextQuestionBtn = $(this.questionTargets[this.currentQuestion]).find('.next-question')\n    if(questionComplete) {\n      if(this.#hasReachedQuestionEnd()) {\n        $('#next_btn').removeClass('disabled')\n      } else {\n        nextQuestionBtn.removeClass('disabled')\n      }\n    } else {\n      nextQuestionBtn.addClass('disabled')\n      $('#next_btn').addClass('disabled')\n    }\n  }\n\n  nextQuestion(event) {\n    console.log(event)\n    if(this.hasQuestionTarget) {\n      this.currentQuestion++\n      const current = $(this.questionTargets[this.currentQuestion])\n      const previous = $(this.questionTargets[this.currentQuestion - 1])\n      previous.addClass('animate__fadeOut')\n      current.removeClass('d-none').addClass('animate__fadeIn')\n      setTimeout(() => previous.addClass('d-none'), 1000)\n    }\n  }\n\n  #hasReachedQuestionEnd() {\n    if(!this.hasQuestionTarget) {\n      return true\n    }\n\n    return this.currentQuestion >= this.questionTargets.length - 1\n  }\n}", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\nimport Draggable from \"../../../javascript/packs/draggable\"\n\nexport default class extends ApplicationController {\n\n  static targets = [\"correctBucket\", \"incorrectBucket\"]\n\n  static values = {\n    minimumAnswersSorted: Number\n  }\n\n  initialize() {\n    super.initialize()\n    this.currentDraggable = null\n    this.draggable = new Draggable(false)\n    this.#defineDropzonesHandlers()\n  }\n\n  #defineDropzonesHandlers() {\n    const self = this\n    $(this.element).on('dragenter', '[dropzone=true]', function (ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      if (!self.#contains($container, self.currentDraggable)) {\n        $container.addClass('entered')\n      }\n    })\n\n    // define the dragleave behavior\n    $(this.element).on('dragleave', '[dropzone=true]', function (ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      $container.removeClass('entered')\n    })\n\n    $(this.element).on('dragstart', '[draggable=true]', function (ev) {\n      self.currentDraggable = $(ev.currentTarget)\n    })\n\n    $(this.element).on('dragover', '[dropzone=true]', function (ev) {\n      ev.preventDefault()\n    })\n\n    $(this.element).on('drop', '[dropzone=true]', function (ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      $container.removeClass('entered')\n      self.#drop(ev.originalEvent, self)\n    })\n  }\n\n  #drop(event, self) {\n    event.stopPropagation()\n    let $container = $(event.target).closest('[dropzone=true]')\n\n    // move the item itself to the sortable container\n    const originTarget = self.#getOriginTarget(event)\n\n    const oldPoints = self.#calculatePoints(originTarget.closest('[dropzone]'), originTarget)\n\n    self.#moveElementTo(originTarget, $container, self)\n\n    const newPoints = self.#calculatePoints($container, originTarget)\n\n    self.#dispatchQuestionState()\n    self.#sendPointUpdate(oldPoints, newPoints)\n  }\n\n  #getOriginTarget(event) {\n    return $(`#${event.dataTransfer.getData('eliminationTargets')}`)\n  }\n\n  #moveElementTo(element, to, self) {\n    if (!self.#contains(to, element)) {\n      element.appendTo(to)\n    }\n  }\n\n  #contains(container, contained) {\n    const id = `#${contained.attr('id')}`\n    return container.find(id).length > 0\n  }\n\n  #calculatePoints(container, answer) {\n    const correctAnswersIndex = $(container).data('correct-answers-index')\n\n    if(correctAnswersIndex) {\n      const answerIndex = answer.data('answer-index')\n      const isIn = correctAnswersIndex.includes(answerIndex)\n\n      if(isIn) {\n        const points = answer.data('points')\n        const calculatedPoints = {}\n        for(var key in points) {\n          calculatedPoints[key] = points[key]\n        }\n  \n        return calculatedPoints\n      } else {\n        const points = answer.data('points')\n        const calculatedPoints = {}\n        for(var key in points) {\n          calculatedPoints[key] = -points[key]\n        }\n  \n        return calculatedPoints\n      }\n    }\n\n    return null\n  }\n\n  #dispatchQuestionState() {\n    const sortContainer = $(this.element).find('.sort-container')\n    const answersSorted = sortContainer.find('.sort-answer').length\n\n    const questionComplete = new CustomEvent('wizard.quiz.question_state', {\n      detail: {\n        question_complete: answersSorted >= this.minimumAnswersSortedValue\n      }\n    })\n    this.element.dispatchEvent(questionComplete)\n  }\n\n  #sendPointUpdate(oldPoints, newPoints) {\n    const pointUpdateEvent = new CustomEvent('wizard.quiz.point_update', {\n      detail: {\n        oldPoints: oldPoints,\n        newPoints: newPoints\n      }\n    })\n    this.logInfo(`dispatching point update`)\n    this.element.dispatchEvent(pointUpdateEvent)\n  }\n}", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\n\nexport default class extends ApplicationController {\n\n  static targets = [\"answer\"]\n\n  static values = {\n    correctAnswersIndex: Array,\n    answers: Array\n  }\n\n\n  selectAnswer(event) {\n    const currentTarget = event.currentTarget\n    const answerIndex = $(currentTarget).data('answer-index')\n    const points = this.#calculatePoints(answerIndex)\n    this.#sendPointUpdate(points)\n    this.oldPoints = points\n    this.#dispatchQuestionCompleteState()\n  }\n\n\n  #calculatePoints(answerIndex) {\n    console.log(answerIndex)\n    console.log(this.correctAnswersIndexValue)\n\n    const isIn = this.correctAnswersIndexValue.includes(answerIndex)\n\n    const answerObject = this.answersValue[answerIndex]\n\n    if (isIn) {\n      return answerObject['points']\n    } else {\n      const calculatedPoints = answerObject['points']\n      for(key in calculatedPoints) {\n        calculatedPoints[key] *= -1\n      }\n\n      return calculatedPoints\n    }\n\n    return null\n  }\n\n  #dispatchQuestionCompleteState() {\n    const questionComplete = new CustomEvent('wizard.quiz.question_state', {\n      detail: {\n        question_complete: true\n      }\n    })\n    this.element.dispatchEvent(questionComplete)\n  }\n\n  #sendPointUpdate(points) {\n    const pointUpdateEvent = new CustomEvent('wizard.quiz.point_update', {\n      detail: {\n        oldPoints: this.oldPoints,\n        newPoints: points\n      }\n    })\n    this.element.dispatchEvent(pointUpdateEvent)\n  }\n}", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\nimport Draggable from \"../../../javascript/packs/draggable\"\n\nexport default class extends ApplicationController {\n\n  static targets = [\"correctBucket\", \"incorrectBucket\"]\n\n  initialize() {\n    super.initialize()\n    this.currentDraggable = null\n    this.allAnswers = $(this.element).find('.sort-answer').length\n    this.draggable = new Draggable(false)\n    this.#defineDropzonesHandlers()\n  }\n\n  #defineDropzonesHandlers() {\n    const self = this\n    $(this.element).on('dragenter', '[dropzone=true]', function (ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      if (!self.#contains($container, self.currentDraggable)) {\n        $container.addClass('entered')\n      }\n    })\n\n    // define the dragleave behavior\n    $(this.element).on('dragleave', '[dropzone=true]', function (ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      $container.removeClass('entered')\n    })\n\n    $(this.element).on('dragstart', '[draggable=true]', function (ev) {\n      self.currentDraggable = $(ev.currentTarget)\n    })\n\n    $(this.element).on('dragover', '[dropzone=true]', function (ev) {\n      ev.preventDefault()\n    })\n\n    $(this.element).on('drop', '[dropzone=true]', function (ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      $container.removeClass('entered')\n      self.#drop(ev.originalEvent, self)\n    })\n  }\n\n  #drop(event, self) {\n    event.stopPropagation()\n    let $container = $(event.target).closest('[dropzone=true]')\n\n    // move the item itself to the sortable container\n    const originTarget = self.#getOriginTarget(event)\n\n    const oldPoints = self.#calculatePoints()\n\n    self.#moveElementTo(originTarget, $container, self)\n\n    const newPoints = self.#calculatePoints()\n\n    self.#dispatchQuestionState()\n    self.#sendPointUpdate(oldPoints, newPoints)\n  }\n\n  #getOriginTarget(event) {\n    return $(`#${event.dataTransfer.getData('eliminationTargets')}`)\n  }\n\n  #moveElementTo(element, to, self) {\n    if (!self.#contains(to, element)) {\n      element.appendTo(to)\n    }\n  }\n\n  #contains(container, contained) {\n    const id = `#${contained.attr('id')}`\n    return container.find(id).length > 0\n  }\n\n  #calculatePoints() {\n    let calculatedPoints = {}\n\n    const answersInCorrectBucket = $(this.correctBucketTarget).find('.sort-answer')\n    const correctAnswersInCorrectBucket = answersInCorrectBucket.filter((index, answer, answers) => {\n      return $(answer).data('is-correct')\n    })\n    const incorrectAnswersInCorrectBucket = answersInCorrectBucket.filter((index, answer, answers) => {\n      return !$(answer).data('is-correct')\n    })\n    const answersInIncorrectBucket = $(this.incorrectBucketTarget).find('.sort-answer')\n    const correctAnswersInIncorrectBucket = answersInIncorrectBucket.filter((index, answer, answers) => {\n      return !$(answer).data('is-correct')\n    })\n    const incorrectAnswersInIncorrectBucket = answersInIncorrectBucket.filter((index, answer, answers) => {\n      return $(answer).data('is-correct')\n    })\n\n    const correctAnswers = $.merge(correctAnswersInCorrectBucket, correctAnswersInIncorrectBucket)\n    const incorrectAnswers = $.merge(incorrectAnswersInCorrectBucket, incorrectAnswersInIncorrectBucket)\n\n    correctAnswers.each((index, answer, answers) => {\n      const points = $(answer).data('points')\n      for (var key in points) {\n        if (calculatedPoints.hasOwnProperty(key)) {\n          calculatedPoints[key] += points[key]\n        } else {\n          calculatedPoints[key] = points[key]\n        }\n      }\n    })\n\n    incorrectAnswers.each((index, answer, answers) => {\n      const points = $(answer).data('points')\n      for (var key in points) {\n        if (calculatedPoints.hasOwnProperty(key)) {\n          calculatedPoints[key] += -points[key]\n        } else {\n          calculatedPoints[key] = -points[key]\n        }\n      }\n    })\n\n    console.log(\"calculated points: \", calculatedPoints)\n    return calculatedPoints\n  }\n\n  #dispatchQuestionState() {\n    const sortContainer = $(this.element).find('.sort-container')\n    const answersSorted = sortContainer.find('.sort-answer').length\n\n    const questionComplete = new CustomEvent('wizard.quiz.question_state', {\n      detail: {\n        question_complete: answersSorted >= this.allAnswers\n      }\n    })\n    this.element.dispatchEvent(questionComplete)\n  }\n\n  #sendPointUpdate(oldPoints, newPoints) {\n    const pointUpdateEvent = new CustomEvent('wizard.quiz.point_update', {\n      detail: {\n        oldPoints: oldPoints,\n        newPoints: newPoints\n      }\n    })\n    this.logInfo(`dispatching point update`)\n    this.element.dispatchEvent(pointUpdateEvent)\n  }\n}", "import ApplicationController from \"../../../javascript/controllers/application_controller\"\nimport Draggable from \"../../../javascript/packs/draggable\"\n\nexport default class extends ApplicationController {\n\n  initialize() {\n    super.initialize()\n    this.currentDraggable = null\n    this.minimumAnswersSorted = $(this.element).data('minimum-answers-sorted')\n    this.draggable = new Draggable(false)\n    this.#defineDropzonesHandlers()\n  }\n\n  #defineDropzonesHandlers() {\n    const self = this\n    $(this.element).on('dragenter', '[dropzone=true]', function(ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      if(!self.#contains($container, self.currentDraggable)) {      \n        $container.addClass('entered')\n      }\n    })\n\n    // define the dragleave behavior\n    $(this.element).on('dragleave', '[dropzone=true]', function(ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      $container.removeClass('entered')\n    })\n\n    $(this.element).on('dragstart', '[draggable=true]', function(ev) {\n      self.currentDraggable = $(ev.currentTarget)\n    })\n\n    $(this.element).on('dragover', '[dropzone=true]', function(ev) {\n      ev.preventDefault()\n    })\n\n    $(this.element).on('drop', '[dropzone=true]', function(ev) {\n      const $container = $(ev.target).closest('[dropzone=true]')\n      $container.removeClass('entered')\n      self.#drop(ev.originalEvent, self)\n    })\n  }\n\n  #drop(event, self) {\n    event.stopPropagation()\n    // we can only fill in one item. So we will marked it as filled\n    let $container = $(event.target).closest('[dropzone=true]')\n\n    // move the item itself to the sortable container\n    const originTarget = self.#getOriginTarget(event)\n\n    const oldPoints = self.#calculatePoints(originTarget.closest('[dropzone]'), originTarget)\n\n    self.#moveElementTo(originTarget, $container, self)\n\n    const newPoints = self.#calculatePoints($container, originTarget)\n\n    self.#enableDropzoneIfEmpty()\n    self.#dispatchQuestionState()\n    self.#sendPointUpdate(oldPoints, newPoints)\n  }\n\n  #getOriginTarget(event) {\n    return $(`#${event.dataTransfer.getData('eliminationTargets')}`)\n  }\n\n  #moveElementTo(element, to, self) {\n    if(!self.#contains(to, element)) {\n      element.appendTo(to)\n    }\n  }\n\n  #contains(container, contained) {\n    const id = `#${contained.attr('id')}`\n    return container.find(id).length > 0\n  }\n\n  #calculatePoints(container, answer) {\n    const weight = $(container).data('weight')\n    // we have a container with weight, so we can calculate the points\n    if(weight) {\n      const points = answer.data('points')\n      const calculatedPoints = {}\n      for(var key in points) {\n        calculatedPoints[key] = points[key] * weight\n      }\n\n      return calculatedPoints\n    }\n    return null\n  }\n\n  #enableDropzoneIfEmpty() {\n    $(this.element).find('.sort-container').each((index, dropzoneContainer) => {\n      if($(dropzoneContainer).find('.sort-answer').length == 0) {\n        $(dropzoneContainer).attr('dropzone', 'true')\n      } else {\n        $(dropzoneContainer).attr('dropzone', 'false')\n      }\n    })\n  }\n\n  #dispatchQuestionState() {\n    const sortContainer = $(this.element).find('.sort-container')\n    const answersSorted = sortContainer.find('.sort-answer').length\n\n    const questionComplete = new CustomEvent('wizard.quiz.question_state', {\n      detail: {\n        question_complete: answersSorted >= this.minimumAnswersSorted\n      }\n    })\n      this.element.dispatchEvent(questionComplete)\n  }\n\n  #sendPointUpdate(oldPoints, newPoints) {\n    const pointUpdateEvent = new CustomEvent('wizard.quiz.point_update', {\n      detail: { \n        oldPoints: oldPoints,\n        newPoints: newPoints\n      }\n    })\n    this.logInfo(`dispatching point update`)\n    this.element.dispatchEvent(pointUpdateEvent)\n  }\n}", "\n        import * as module0 from './../components/ai_stuff/phase_structure/component_controller.js';import * as module1 from './../components/blueprints/blueprint_modal/component_controller.js';import * as module2 from './../components/blueprints/blueprint_release_modal/component_controller.js';import * as module3 from './../components/blueprints/modal/component_controller.js';import * as module4 from './../components/button/multi_state/component_controller.js';import * as module5 from './../components/certificate/verification/component_controller.js';import * as module6 from './../components/certificates/received_certificates/component_controller.js';import * as module7 from './../components/certificates/received_certificates/modal/component_controller.js';import * as module8 from './../components/charts/radar_chart/component_controller.js';import * as module9 from './../components/editor/lock_modal/component_controller.js';import * as module10 from './../components/form/icon_checkbox/component_controller.js';import * as module11 from './../components/form/image_cropper/component_controller.js';import * as module12 from './../components/form/image_cropper_modal/component_controller.js';import * as module13 from './../components/form/inline_edit_mini/component_controller.js';import * as module14 from './../components/form/key_value_editor/component_controller.js';import * as module15 from './../components/form/tag_filter/component_controller.js';import * as module16 from './../components/form/trix_editor/component_controller.js';import * as module17 from './../components/items/container/component_controller.js';import * as module18 from './../components/items/item/component_controller.js';import * as module19 from './../components/items/journey/component_controller.js';import * as module20 from './../components/items/unit/component_controller.js';import * as module21 from './../components/journey_builder/consumable_groups/component_controller.js';import * as module22 from './../components/journey_builder/general_condition/component_controller.js';import * as module23 from './../components/journey_builder/learn_type_dependent/component_controller.js';import * as module24 from './../components/journey_containers/show/component_controller.js';import * as module25 from './../components/journey_filter/component_controller.js';import * as module26 from './../components/journey_hierarchy/available_journeys/component_controller.js';import * as module27 from './../components/journey_hierarchy/component_controller.js';import * as module28 from './../components/journey_hierarchy/container_card/component_controller.js';import * as module29 from './../components/journey_hierarchy/container_detail/component_controller.js';import * as module30 from './../components/journey_hierarchy/container_node/component_controller.js';import * as module31 from './../components/journey_hierarchy/level_card/component_controller.js';import * as module32 from './../components/journeys/bulk_rename_modal/component_controller.js';import * as module33 from './../components/journeys/container_section/component_controller.js';import * as module34 from './../components/journeys/journey_visibility_and_usage/component_controller.js';import * as module35 from './../components/journeys/level_explorer/component_controller.js';import * as module36 from './../components/journeys/level_explorer/unassigned_journeys/component_controller.js';import * as module37 from './../components/journeys/root_container_order/component_controller.js';import * as module38 from './../components/learnables/html_package/component_controller.js';import * as module39 from './../components/learnables/slide/component_controller.js';import * as module40 from './../components/modals/delete/component_controller.js';import * as module41 from './../components/permissions/role_selector/component_controller.js';import * as module42 from './../components/representation/accordion_section/component_controller.js';import * as module43 from './../components/representation/collapsible_section/component_controller.js';import * as module44 from './../components/skill_management/main_skill_category/component_controller.js';import * as module45 from './../components/skill_management/skill_development/component_controller.js';import * as module46 from './../components/skill_management/skill_rating_modal/component_controller.js';import * as module47 from './../components/translation/modal/component_controller.js';import * as module48 from './../components/trix/image_zoom_modal/component_controller.js';import * as module49 from './../components/unit/work_through/component_controller.js';import * as module50 from './../components/view_mode_switcher/component_controller.js';import * as module51 from './../components/wizard/ltd_info_modal/component_controller.js';import * as module52 from './../components/wizard/ltd_modal/component_controller.js';import * as module53 from './../components/wizard/ltd_quiz_page/component_controller.js';import * as module54 from './../components/wizard/question_type_color_order/component_controller.js';import * as module55 from './../components/wizard/question_type_radio/component_controller.js';import * as module56 from './../components/wizard/question_type_right_wrong/component_controller.js';import * as module57 from './../components/wizard/question_type_sort/component_controller.js'\n        const modules = [{name: '..--components--ai-stuff--phase-structure--component', module: module0, filename: '../components/ai_stuff/phase_structure/component_controller.js'},{name: '..--components--blueprints--blueprint-modal--component', module: module1, filename: '../components/blueprints/blueprint_modal/component_controller.js'},{name: '..--components--blueprints--blueprint-release-modal--component', module: module2, filename: '../components/blueprints/blueprint_release_modal/component_controller.js'},{name: '..--components--blueprints--modal--component', module: module3, filename: '../components/blueprints/modal/component_controller.js'},{name: '..--components--button--multi-state--component', module: module4, filename: '../components/button/multi_state/component_controller.js'},{name: '..--components--certificate--verification--component', module: module5, filename: '../components/certificate/verification/component_controller.js'},{name: '..--components--certificates--received-certificates--component', module: module6, filename: '../components/certificates/received_certificates/component_controller.js'},{name: '..--components--certificates--received-certificates--modal--component', module: module7, filename: '../components/certificates/received_certificates/modal/component_controller.js'},{name: '..--components--charts--radar-chart--component', module: module8, filename: '../components/charts/radar_chart/component_controller.js'},{name: '..--components--editor--lock-modal--component', module: module9, filename: '../components/editor/lock_modal/component_controller.js'},{name: '..--components--form--icon-checkbox--component', module: module10, filename: '../components/form/icon_checkbox/component_controller.js'},{name: '..--components--form--image-cropper--component', module: module11, filename: '../components/form/image_cropper/component_controller.js'},{name: '..--components--form--image-cropper-modal--component', module: module12, filename: '../components/form/image_cropper_modal/component_controller.js'},{name: '..--components--form--inline-edit-mini--component', module: module13, filename: '../components/form/inline_edit_mini/component_controller.js'},{name: '..--components--form--key-value-editor--component', module: module14, filename: '../components/form/key_value_editor/component_controller.js'},{name: '..--components--form--tag-filter--component', module: module15, filename: '../components/form/tag_filter/component_controller.js'},{name: '..--components--form--trix-editor--component', module: module16, filename: '../components/form/trix_editor/component_controller.js'},{name: '..--components--items--container--component', module: module17, filename: '../components/items/container/component_controller.js'},{name: '..--components--items--item--component', module: module18, filename: '../components/items/item/component_controller.js'},{name: '..--components--items--journey--component', module: module19, filename: '../components/items/journey/component_controller.js'},{name: '..--components--items--unit--component', module: module20, filename: '../components/items/unit/component_controller.js'},{name: '..--components--journey-builder--consumable-groups--component', module: module21, filename: '../components/journey_builder/consumable_groups/component_controller.js'},{name: '..--components--journey-builder--general-condition--component', module: module22, filename: '../components/journey_builder/general_condition/component_controller.js'},{name: '..--components--journey-builder--learn-type-dependent--component', module: module23, filename: '../components/journey_builder/learn_type_dependent/component_controller.js'},{name: '..--components--journey-containers--show--component', module: module24, filename: '../components/journey_containers/show/component_controller.js'},{name: '..--components--journey-filter--component', module: module25, filename: '../components/journey_filter/component_controller.js'},{name: '..--components--journey-hierarchy--available-journeys--component', module: module26, filename: '../components/journey_hierarchy/available_journeys/component_controller.js'},{name: '..--components--journey-hierarchy--component', module: module27, filename: '../components/journey_hierarchy/component_controller.js'},{name: '..--components--journey-hierarchy--container-card--component', module: module28, filename: '../components/journey_hierarchy/container_card/component_controller.js'},{name: '..--components--journey-hierarchy--container-detail--component', module: module29, filename: '../components/journey_hierarchy/container_detail/component_controller.js'},{name: '..--components--journey-hierarchy--container-node--component', module: module30, filename: '../components/journey_hierarchy/container_node/component_controller.js'},{name: '..--components--journey-hierarchy--level-card--component', module: module31, filename: '../components/journey_hierarchy/level_card/component_controller.js'},{name: '..--components--journeys--bulk-rename-modal--component', module: module32, filename: '../components/journeys/bulk_rename_modal/component_controller.js'},{name: '..--components--journeys--container-section--component', module: module33, filename: '../components/journeys/container_section/component_controller.js'},{name: '..--components--journeys--journey-visibility-and-usage--component', module: module34, filename: '../components/journeys/journey_visibility_and_usage/component_controller.js'},{name: '..--components--journeys--level-explorer--component', module: module35, filename: '../components/journeys/level_explorer/component_controller.js'},{name: '..--components--journeys--level-explorer--unassigned-journeys--component', module: module36, filename: '../components/journeys/level_explorer/unassigned_journeys/component_controller.js'},{name: '..--components--journeys--root-container-order--component', module: module37, filename: '../components/journeys/root_container_order/component_controller.js'},{name: '..--components--learnables--html-package--component', module: module38, filename: '../components/learnables/html_package/component_controller.js'},{name: '..--components--learnables--slide--component', module: module39, filename: '../components/learnables/slide/component_controller.js'},{name: '..--components--modals--delete--component', module: module40, filename: '../components/modals/delete/component_controller.js'},{name: '..--components--permissions--role-selector--component', module: module41, filename: '../components/permissions/role_selector/component_controller.js'},{name: '..--components--representation--accordion-section--component', module: module42, filename: '../components/representation/accordion_section/component_controller.js'},{name: '..--components--representation--collapsible-section--component', module: module43, filename: '../components/representation/collapsible_section/component_controller.js'},{name: '..--components--skill-management--main-skill-category--component', module: module44, filename: '../components/skill_management/main_skill_category/component_controller.js'},{name: '..--components--skill-management--skill-development--component', module: module45, filename: '../components/skill_management/skill_development/component_controller.js'},{name: '..--components--skill-management--skill-rating-modal--component', module: module46, filename: '../components/skill_management/skill_rating_modal/component_controller.js'},{name: '..--components--translation--modal--component', module: module47, filename: '../components/translation/modal/component_controller.js'},{name: '..--components--trix--image-zoom-modal--component', module: module48, filename: '../components/trix/image_zoom_modal/component_controller.js'},{name: '..--components--unit--work-through--component', module: module49, filename: '../components/unit/work_through/component_controller.js'},{name: '..--components--view-mode-switcher--component', module: module50, filename: '../components/view_mode_switcher/component_controller.js'},{name: '..--components--wizard--ltd-info-modal--component', module: module51, filename: '../components/wizard/ltd_info_modal/component_controller.js'},{name: '..--components--wizard--ltd-modal--component', module: module52, filename: '../components/wizard/ltd_modal/component_controller.js'},{name: '..--components--wizard--ltd-quiz-page--component', module: module53, filename: '../components/wizard/ltd_quiz_page/component_controller.js'},{name: '..--components--wizard--question-type-color-order--component', module: module54, filename: '../components/wizard/question_type_color_order/component_controller.js'},{name: '..--components--wizard--question-type-radio--component', module: module55, filename: '../components/wizard/question_type_radio/component_controller.js'},{name: '..--components--wizard--question-type-right-wrong--component', module: module56, filename: '../components/wizard/question_type_right_wrong/component_controller.js'},{name: '..--components--wizard--question-type-sort--component', module: module57, filename: '../components/wizard/question_type_sort/component_controller.js'}]\n        export default modules;\n      ", "import { application } from \"./controllers/application.js\"\nimport componentControllers from '../components/**/component_controller.js';\n\nconsole.log(\"\uD83D\uDCE6 ViewComponent Controllers found:\", componentControllers.length);\n\ncomponentControllers.forEach((controller) => {\n  const name = controller.name.replace('..--components--', '').replace('--component', '')\n  console.log(\"\uD83C\uDFAE Registering controller:\", name, \"from\", controller.name);\n  application.register(name, controller.module.default)\n});", "import \"@hotwired/turbo\"\n\nTurbo.setConfirmMethod((message, element, submitter) => {\n  let originalElement = submitter\n\n  if (!submitter) {\n    let matchingElements = document.querySelectorAll(\n      `a[data-turbo-confirm=\"${message}\"][data-turbo-method=\"${element.getAttribute('method')}\"]`\n    )\n    originalElement = [...matchingElements].find((el) => element.action.includes(el.href))\n  }\n\n  const dialog = $('#data_confirm_modal')\n  dialog.modal('show')\n\n  dialog.find('.message').html(message)\n\n  if($(originalElement).data('turbo-commit') != null) {\n    dialog.find('.modal-footer .confirm').html($(originalElement).data('turbo-commit'))\n  }\n\n  return new Promise((resolve, reject) => {\n    dialog[0].addEventListener('hide.bs.modal', () => {\n      resolve(false)\n    }, { once: true })\n    dialog.find('.modal-footer .confirm')[0].addEventListener('click', () => {\n      resolve(true)\n      dialog.modal('hide')\n    }, { once: true })\n  })\n})"],
  "mappings": "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AU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACvE,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACvE,UAAU;AAAA,QAAM,UAAU;AAAA,QAC1B,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACvE,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACvE,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACxD,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QACzC,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QACtF,UAAU;AAAA,QAAM,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QAAK,UAAU;AAAA,QA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,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV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A,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,mBAAAA;UAAAA,CAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAA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AA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,GAAI,GAAA,EAAK+b,OAAO/b,GAAI,CAAA,CAAA,GAAK,GAAG+b,OAAO/b,GAAI,CAAA,GAA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A,SAClB31F,KAAQokC,KAAMnrC,OAED,IAEX08F,KAAWC,KAAAA,SAKM,QAHjBF,KAAWtxD,KAAM7zC,KAAM07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,IAAAA,OAGN,OAAbsxD,OAAqBC,KAAAA,QAC7B,OAAbF,MAAkC,OAAbA,OAAqBG,KAAAA,QAE/B,OAAX1wB,OAEEqwB,GAAWE,EAAAA,MAAaE,KAAAA,QACxBJ,GAAWG,EAAAA,MAAaE,KAAAA,UAIzB,EACLD,UAAUA,IACVC,WAAWA,IACXC,QAAQ71F,GAAAA;QAAAA;AA3XZ,6CACG8gB,MAAM,EAAA,EAAIlkB,QAAQ,SAAS2qC,IAAAA;AAAM+tD,aAAQ/tD,GAAGjsC,WAAW,CAAA,CAAA,IAAM;QAAA,CAAA;AAqehE,YAAIw6F,KAAc;AAyDlB,YAAIC,KAAgB;AA2UpB,YAAIC,KAAc,CAChB,QACA,OACA,cACA,OACA,QACA,SACA,QACA,OACA,OACA,QACA,QACA,OACA,QACA,OACA,QACA,OACA,OACA,MACA,UACA,QACA,QACA,SACA,OACA,QACA,MACA,QACA,QACA,OACA,QACA,aACA,YACA,aACA,YACA,QACA,UACA,OACA,QACA,SACA,QACA,WACA,QACA,OACA,MACA,OACA,QACA,mBACA,OACA,QACA,QACA,WACA,WACA,SACA,SACA,OACA,QACA,OACA,QACA,aACA,cACA,OACA,OACA,UACA,QACA,eACA,UACA,OACA,MACA,OACA,SACA,MACA,OACA,QACA,eACA,eACA,gBACA,QACA,WACA,WACA,aACA,OACA,OACA,OACA,OACA,cACA,MACA,WACA,WACA,QACA,UACA,UACA,oBACA,2BACA,WACA,OACA,mBACA,sBACA,OACA,OACA,QACA,YACA,QACA,UACA,QACA,MACA,OACA,gBACA,SACA,OACA,QACA,OACA,OACA,QACA,QACA,QACA,OACA,OACA,WACA,UACA,SACA,UACA,QACA,UACA,WACA,OACA,WACA,SACA,UACA,OACA,SACA,OACA,QACA,aACA,YACA,SACA,QACA,SACA,OACA,YACA,OACA,SACA,QACA,cACA,QACA,OACA,SACA,OACA,UACA,WACA,OACA,SACA,OACA,aACA,UACA,OACA,UACA,UACA,YACA,eACA,UACA,QACA,WACA,SACA,OACA,OAAA,GAOEC,KAAc,4IACdC,KAAc;AAuElB,iBAASC,GAAUl7E,IAAOoL,IAAAA;AAIxB,iBAHApL,KAAQA,GAAMqL,QACdD,KAAUA,MAAW,IAEd,SAASpB,GAAKp5B,IAAMiO,IAAAA;AACzB,mBAAKjO,MAGLiO,KAAMA,GAAIwsB,UAAUxsB,IACpBmhB,KAAQA,GAAMO,QAAQ3vB,IAAMiO,EAAAA,GACrBmrB,MAJE,IAAItH,OAAO1C,IAAOoL,EAAAA;UAAAA;QAAAA;AAS/B,YAOI+vE,KAAcD,GAAU,0CAAA,EACP,YAND,qBAAA,EAOC,iBAND,SAAA,EAOC,iBAND,SAAA,EAGFA,GAMdvrB,KAAcurB,GAAU,wCAAA,EACP,aAdD,4BAAA,EAeC,cAAcC,EAAAA,EAFjBD,GAKdE,KAAcF,GAAU,wCAAA,EACP,aAAavrB,EAAAA,EADhBurB,GAUdG,KAAcH,GAAU,8DAAA,EACzB,YAAYE,EAAAA,EACZ,aARe,6BAAA,EASf,WARe,uCAAA,EASf,cARe,aAAA,EASf,eARe,mBAAA,EASf,SARe,0BAAA,EAEAF;AAyDlB,YAAII,KAAa,wCACbC,KAAa;AA2CjB,YAAIC,KAAW,CACb,CAAE,QAzzCJ,SAAcxqD,IAAO6mD,IAAAA;AAGnB,mBAFI1uD,KAAM6H,GAAM7H,KAETA,KAAM6H,GAAMmgD,UAAAA,CAAWgJ,GAAiBnpD,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,CAAAA;AAClEA,YAAAA;AAGF,iBAAIA,OAAQ6H,GAAM7H,QAEb0uD,OAAU7mD,GAAMogD,WAAWpgD,GAAM1K,IAAI9zC,MAAMw+C,GAAM7H,KAAKA,EAAAA,IAE3D6H,GAAM7H,MAAMA,IAAAA;QAEL,CAAA,GA6yCP,CAAE,WAxyCJ,SAAiB6H,IAAO6mD,IAAAA;AACtB,cAAI4D,IAAMnmG,IAAK6zC,KAAM6H,GAAM7H;AAE3B,cAAkC,OAA9B6H,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAyB,mBAAA;AASlD,cAPAsyD,KAAOzqD,GAAMogD,QAAQ77F,SAAS,GAC9BD,KAAM07C,GAAMmgD,QAAAA,CAMP0G;AACH,gBAAI4D,MAAQ,KAAwC,OAAnCzqD,GAAMogD,QAAQ/wF,WAAWo7F,EAAAA;AACxC,kBAAIA,MAAQ,KAA4C,OAAvCzqD,GAAMogD,QAAQ/wF,WAAWo7F,KAAO,CAAA,GAAa;AAE5D,yBAASprG,KAAIorG,KAAO,GAAGprG,MAAK,GAAGA;AAC7B,sBAAoC,OAAhC2gD,GAAMogD,QAAQ/wF,WAAWhQ,EAAAA,GAAa;AACxC2gD,oBAAAA,GAAMogD,UAAUpgD,GAAMogD,QAAQ/tD,UAAU,GAAGhzC,KAAI,CAAA;AAC/C;kBAAA;AAGJ2gD,gBAAAA,GAAMhqC,KAAK,EACT1P,MAAM,aACN2T,OAAO+lC,GAAM/lC,MAAAA,CAAAA;cAAAA;AAGf+lC,gBAAAA,GAAMogD,UAAUpgD,GAAMogD,QAAQ5+F,MAAM,GAAA,EAAI,GACxCw+C,GAAMhqC,KAAK,EACT1P,MAAM,aACN2T,OAAO+lC,GAAM/lC,MAAAA,CAAAA;;AAKjB+lC,cAAAA,GAAMhqC,KAAK,EACT1P,MAAM,aACN2T,OAAO+lC,GAAM/lC,MAAAA,CAAAA;AAQnB,eAHAk+B,MAGOA,KAAM7zC,MAAqC,OAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAiBA,YAAAA;AAG1D,iBADA6H,GAAM7H,MAAMA,IAAAA;QACL,CAAA,GAyvCP,CAAE,UA5uCJ,SAAgB6H,IAAO6mD,IAAAA;AACrB,cAAIvrD,IAAInD,KAAM6H,GAAM7H,KAAK7zC,KAAM07C,GAAMmgD;AAErC,cAAkC,OAA9BngD,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAwB,mBAAA;AAIjD,cAAA,EAFAA,KAEU7zC,IAAK;AAGb,iBAFAg3C,KAAK0E,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,KAEjB,OAAuB,MAAhBkxD,GAAQ/tD,EAAAA;AAGtB,qBAFKurD,OAAU7mD,GAAMogD,WAAWpgD,GAAM1K,IAAI6C,EAAAA,IAC1C6H,GAAM7H,OAAO,GAAA;AAIf,gBAAW,OAAPmD,IAAa;AAUf,mBATKurD,MACH7mD,GAAMhqC,KAAK,EACT1P,MAAM,aACN2T,OAAO+lC,GAAM/lC,MAAAA,CAAAA,GAIjBk+B,MAEOA,KAAM7zC,MAAqC,OAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAiBA,gBAAAA;AAG1D,qBADA6H,GAAM7H,MAAMA,IAAAA;YACL;UAAA;AAMX,iBAFK0uD,OAAU7mD,GAAMogD,WAAW,OAChCpgD,GAAM7H,OAAAA;QACC,CAAA,GA0sCP,CAAE,aArsCJ,SAAmB6H,IAAO6mD,IAAAA;AACxB,cAAI75F,IAAO1I,IAAK20E,IAAQyxB,IAAYC,IAChCxyD,KAAM6H,GAAM7H;AAGhB,cAAW,OAFF6H,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAEJ,mBAAA;AAM1B,eAJAnrC,KAAQmrC,IACRA,MACA7zC,KAAM07C,GAAMmgD,QAELhoD,KAAM7zC,MAAqC,OAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAwBA,YAAAA;AAMjE,eAJA8gC,KAASj5B,GAAM1K,IAAI9zC,MAAMwL,IAAOmrC,EAAAA,GAEhCuyD,KAAaC,KAAWxyD,IAAAA,QAEhBuyD,KAAa1qD,GAAM1K,IAAItnC,QAAQ,KAAK28F,EAAAA,MAAmB;AAG7D,iBAFAA,KAAWD,KAAa,GAEjBC,KAAWrmG,MAA0C,OAAnC07C,GAAM1K,IAAIjmC,WAAWs7F,EAAAA;AAA6BA,cAAAA;AAE3E,gBAAIA,KAAWD,OAAezxB,GAAO10E;AAYnC,qBAXKsiG,MACH7mD,GAAMhqC,KAAK,EACT1P,MAAM,QACN4gE,SAASlnB,GAAM1K,IAAI9zC,MAAM22C,IAAKuyD,EAAAA,EACTn7E,QAAQ,WAAW,GAAA,EACnBkiC,KAAAA,GACrB/G,OAAAA,OACAzwC,OAAO+lC,GAAM/lC,MAAAA,CAAAA,GAGjB+lC,GAAM7H,MAAMwyD,IAAAA;UACL;AAMX,iBAFK9D,OAAU7mD,GAAMogD,WAAWnnB,KAChCj5B,GAAM7H,OAAO8gC,GAAO10E,QAAAA;QACb,CAAA,GA8pCP,CAAE,OAzpCJ,SAAay7C,IAAO6mD,IAAAA;AAClB,cAAIp/E,IACA0wB,IACA//B,IAGAoxF,IACAC,IAHAnlG,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H;AAIlB,cAAoC,QAAhC6H,GAAM1K,IAAIjmC,WAAWrC,EAAAA;AAA0B,mBAAA;AACnD,cAAI65F;AAAU,mBAAA;AACd,cAAI75F,KAAQ,KAAK1I;AAAO,mBAAA;AACxB,cAAwC,QAApC07C,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA;AAAsB,mBAAA;AACvD,cAAIgzC,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE;AAAc,mBAAA;AAK/C,cAHAiC,KAAWx8F,KAAQ,IAAIgzC,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA,IAAA,IACpDy8F,KAAWzpD,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA,GAEvB,QAAbw8F;AAA4B,mBAAA;AAChC,cAAiB,QAAbC;AAA4B,mBAAA;AAChC,cAAiB,OAAbA,MAAkC,OAAbA;AAAqB,mBAAA;AAG9C,eADAtxD,KAAMnrC,KAAQ,GACPmrC,KAAM7zC,MAAqC,QAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAwBA,YAAAA;AACjE,cAAIA,KAAMnrC,KAAQ;AAIhB,mBAFAgzC,GAAM7H,OAAOA,KAAMnrC,IACd65F,OAAU7mD,GAAMogD,WAAWpgD,GAAM1K,IAAI9zC,MAAMwL,IAAOmrC,EAAAA,IAAAA;AAOzD,eAHA6H,GAAM7H,MAAMnrC,KAAQ,GACpBoL,KAAQ,GAED4nC,GAAM7H,MAAM,IAAI7zC,MAAK;AAC1B,gBAAwC,QAApC07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,GAAAA,KACe,QAAxC6H,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,MACnCqxD,KAAWxpD,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,GAE3B,SADjBsxD,KAAWzpD,GAAM7H,MAAM,IAAI7zC,KAAM07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,IAAA,OACrB,QAAbqxD,OACb,OAAbA,MAAkC,OAAbA,KAEvBpxF,OACsB,OAAbqxF,MAAkC,OAAbA,MAE9BrxF,MAIEA,MAAS,KAAG;AACdqP,cAAAA,KAAAA;AACA;YAAA;AAMRu4B,YAAAA,GAAMoe,OAAO0iC,UAAU9gD,EAAAA;UAAAA;AAGzB,iBAAKv4B,MAOLu4B,GAAMmgD,SAASngD,GAAM7H,KACrB6H,GAAM7H,MAAMnrC,KAAQ,GAEf65F,OACH7mD,GAAMhqC,KAAK,EAAE1P,MAAM,YAAY2T,OAAO+lC,GAAM/lC,QAAAA,CAAAA,GAC5C+lC,GAAMoe,OAAOopC,SAASxnD,EAAAA,GACtBA,GAAMhqC,KAAK,EAAE1P,MAAM,aAAa2T,OAAAA,EAAS+lC,GAAM/lC,MAAAA,CAAAA,IAGjD+lC,GAAM7H,MAAM6H,GAAMmgD,SAAS,GAC3BngD,GAAMmgD,SAAS77F,IAAAA,SAfb07C,GAAM7H,MAAMnrC,IAAAA;QACL,CAAA,GA2lCT,CAAE,OAvkCJ,SAAagzC,IAAO6mD,IAAAA;AAClB,cAAIp/E,IACA0wB,IACA//B,IAGAoxF,IACAC,IAHAnlG,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H;AAIlB,cAAoC,OAAhC6H,GAAM1K,IAAIjmC,WAAWrC,EAAAA;AAA0B,mBAAA;AACnD,cAAI65F;AAAU,mBAAA;AACd,cAAI75F,KAAQ,KAAK1I;AAAO,mBAAA;AACxB,cAAwC,OAApC07C,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA;AAAsB,mBAAA;AACvD,cAAIgzC,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE;AAAc,mBAAA;AAK/C,cAHAiC,KAAWx8F,KAAQ,IAAIgzC,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA,IAAA,IACpDy8F,KAAWzpD,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA,GAEvB,OAAbw8F;AAA4B,mBAAA;AAChC,cAAiB,OAAbC;AAA4B,mBAAA;AAChC,cAAiB,OAAbA,MAAkC,OAAbA;AAAqB,mBAAA;AAG9C,eADAtxD,KAAMnrC,KAAQ,GACPmrC,KAAM7zC,MAAqC,OAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAwBA,YAAAA;AACjE,cAAIA,OAAQnrC,KAAQ;AAIlB,mBAFAgzC,GAAM7H,OAAOA,KAAMnrC,IACd65F,OAAU7mD,GAAMogD,WAAWpgD,GAAM1K,IAAI9zC,MAAMwL,IAAOmrC,EAAAA,IAAAA;AAOzD,eAHA6H,GAAM7H,MAAMnrC,KAAQ,GACpBoL,KAAQ,GAED4nC,GAAM7H,MAAM,IAAI7zC,MAAK;AAC1B,gBAAwC,OAApC07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,GAAAA,KACe,OAAxC6H,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,MACnCqxD,KAAWxpD,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,GAE3B,QADjBsxD,KAAWzpD,GAAM7H,MAAM,IAAI7zC,KAAM07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,IAAA,OACrB,OAAbqxD,OACb,OAAbA,MAAkC,OAAbA,KAEvBpxF,OACsB,OAAbqxF,MAAkC,OAAbA,MAE9BrxF,MAIEA,MAAS,KAAG;AACdqP,cAAAA,KAAAA;AACA;YAAA;AAMRu4B,YAAAA,GAAMoe,OAAO0iC,UAAU9gD,EAAAA;UAAAA;AAGzB,iBAAKv4B,MAOLu4B,GAAMmgD,SAASngD,GAAM7H,KACrB6H,GAAM7H,MAAMnrC,KAAQ,GAEf65F,OACH7mD,GAAMhqC,KAAK,EAAE1P,MAAM,YAAY2T,OAAO+lC,GAAM/lC,QAAAA,CAAAA,GAC5C+lC,GAAMoe,OAAOopC,SAASxnD,EAAAA,GACtBA,GAAMhqC,KAAK,EAAE1P,MAAM,aAAa2T,OAAAA,EAAS+lC,GAAM/lC,MAAAA,CAAAA,IAGjD+lC,GAAM7H,MAAM6H,GAAMmgD,SAAS,GAC3BngD,GAAMmgD,SAAS77F,IAAAA,SAfb07C,GAAM7H,MAAMnrC,IAAAA;QACL,CAAA,GAygCT,CAAE,QAr/BJ,SAAcgzC,IAAO6mD,IAAAA;AACnB,cAAIp/E,IACA0wB,IACA//B,IAGAoxF,IACAC,IAHAnlG,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H;AAIlB,cAAoC,OAAhC6H,GAAM1K,IAAIjmC,WAAWrC,EAAAA;AAA0B,mBAAA;AACnD,cAAI65F;AAAU,mBAAA;AACd,cAAI75F,KAAQ,KAAK1I;AAAO,mBAAA;AACxB,cAAwC,OAApC07C,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA;AAAsB,mBAAA;AACvD,cAAIgzC,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE;AAAc,mBAAA;AAK/C,cAHAiC,KAAWx8F,KAAQ,IAAIgzC,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA,IAAA,IACpDy8F,KAAWzpD,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA,GAEvB,OAAbw8F;AAA4B,mBAAA;AAChC,cAAiB,OAAbC;AAA4B,mBAAA;AAChC,cAAiB,OAAbA,MAAkC,OAAbA;AAAqB,mBAAA;AAG9C,eADAtxD,KAAMnrC,KAAQ,GACPmrC,KAAM7zC,MAAqC,OAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAwBA,YAAAA;AACjE,cAAIA,OAAQnrC,KAAQ;AAIlB,mBAFAgzC,GAAM7H,OAAOA,KAAMnrC,IACd65F,OAAU7mD,GAAMogD,WAAWpgD,GAAM1K,IAAI9zC,MAAMwL,IAAOmrC,EAAAA,IAAAA;AAOzD,eAHA6H,GAAM7H,MAAMnrC,KAAQ,GACpBoL,KAAQ,GAED4nC,GAAM7H,MAAM,IAAI7zC,MAAK;AAC1B,gBAAwC,OAApC07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,GAAAA,KACe,OAAxC6H,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,MACnCqxD,KAAWxpD,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,GAE3B,QADjBsxD,KAAWzpD,GAAM7H,MAAM,IAAI7zC,KAAM07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,MAAM,CAAA,IAAA,OACrB,OAAbqxD,OACb,OAAbA,MAAkC,OAAbA,KAEvBpxF,OACsB,OAAbqxF,MAAkC,OAAbA,MAE9BrxF,MAIEA,MAAS,KAAG;AACdqP,cAAAA,KAAAA;AACA;YAAA;AAMRu4B,YAAAA,GAAMoe,OAAO0iC,UAAU9gD,EAAAA;UAAAA;AAGzB,iBAAKv4B,MAOLu4B,GAAMmgD,SAASngD,GAAM7H,KACrB6H,GAAM7H,MAAMnrC,KAAQ,GAEf65F,OACH7mD,GAAMhqC,KAAK,EAAE1P,MAAM,aAAa2T,OAAO+lC,GAAM/lC,QAAAA,CAAAA,GAC7C+lC,GAAMoe,OAAOopC,SAASxnD,EAAAA,GACtBA,GAAMhqC,KAAK,EAAE1P,MAAM,cAAc2T,OAAAA,EAAS+lC,GAAM/lC,MAAAA,CAAAA,IAGlD+lC,GAAM7H,MAAM6H,GAAMmgD,SAAS,GAC3BngD,GAAMmgD,SAAS77F,IAAAA,SAfb07C,GAAM7H,MAAMnrC,IAAAA;QACL,CAAA,GAu7BT,CAAE,YAt3BJ,SAAkBgzC,IAAO6mD,IAAAA;AACvB,cAAI+D,IACA72F,IACA0T,IACAojF,IACA5yF,IACAG,IACA2V,IACAzpB,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H,KACd8gC,KAASj5B,GAAM1K,IAAIjmC,WAAWrC,EAAAA;AAElC,cAAe,OAAXisE,MAAqC,OAAXA;AAA2B,mBAAA;AACzD,cAAI4tB;AAAU,mBAAA;AAId,cADA+D,MADA78E,KAAMw7E,GAAWvpD,IAAOhzC,EAAAA,GACP48F,QAAAA,CACZ77E,GAAI27E;AAGP,mBAFA1pD,GAAM7H,OAAOyyD,IACR/D,OAAU7mD,GAAMogD,WAAWpgD,GAAM1K,IAAI9zC,MAAMwL,IAAOgzC,GAAM7H,GAAAA,IAAAA;AAI/D,cAAI6H,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE;AAAc,mBAAA;AAK/C,eAHAvnD,GAAM7H,MAAMnrC,KAAQ49F,IACpBxyF,KAAQ,CAAEwyF,EAAAA,GAEH5qD,GAAM7H,MAAM7zC;AACjB,gBAAI07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,GAAAA,MAAS8gC;AAmCxCj5B,cAAAA,GAAMoe,OAAO0iC,UAAU9gD,EAAAA;iBAnCvB;AAGE,kBADAjsC,MADAga,KAAMw7E,GAAWvpD,IAAOA,GAAM7H,GAAAA,GAClByxD,QACR77E,GAAI47E,WAAW;AAIjB,qBAHAkB,KAAWzyF,GAAMd,IAAAA,GACjBW,KAAWlE,IAEJ82F,OAAa5yF,MAAU;AAC5B,sBAAIA,KAAW4yF,IAAU;AACvBzyF,oBAAAA,GAAMpC,KAAK60F,KAAW5yF,EAAAA;AACtB;kBAAA;AAMF,sBAFAA,MAAY4yF,IAES,MAAjBzyF,GAAM7T;AAAgB;AAC1By7C,kBAAAA,GAAM7H,OAAO0yD,IACbA,KAAWzyF,GAAMd,IAAAA;gBAAAA;AAGnB,oBAAqB,MAAjBc,GAAM7T,QAAc;AACtBqmG,kBAAAA,KAAaC,IACbpjF,KAAAA;AACA;gBAAA;AAEFu4B,gBAAAA,GAAM7H,OAAOpkC;AACb;cAAA;AAGEga,cAAAA,GAAI27E,YAAYtxF,GAAMpC,KAAKjC,EAAAA,GAC/BisC,GAAM7H,OAAOpkC;YAAAA;AAOjB,iBAAK0T,MAOLu4B,GAAMmgD,SAASngD,GAAM7H,KACrB6H,GAAM7H,MAAMnrC,KAAQ49F,IAEf/D,OACgB,MAAf+D,MAAmC,MAAfA,MACtB5qD,GAAMhqC,KAAK,EAAE1P,MAAM,eAAe2T,OAAO+lC,GAAM/lC,QAAAA,CAAAA,GAE9B,MAAf2wF,MAAmC,MAAfA,MACtB5qD,GAAMhqC,KAAK,EAAE1P,MAAM,WAAW2T,OAAO+lC,GAAM/lC,QAAAA,CAAAA,GAG7C+lC,GAAMoe,OAAOopC,SAASxnD,EAAAA,GAEH,MAAf4qD,MAAmC,MAAfA,MACtB5qD,GAAMhqC,KAAK,EAAE1P,MAAM,YAAY2T,OAAAA,EAAS+lC,GAAM/lC,MAAAA,CAAAA,GAE7B,MAAf2wF,MAAmC,MAAfA,MACtB5qD,GAAMhqC,KAAK,EAAE1P,MAAM,gBAAgB2T,OAAAA,EAAS+lC,GAAM/lC,MAAAA,CAAAA,IAItD+lC,GAAM7H,MAAM6H,GAAMmgD,SAASyK,IAC3B5qD,GAAMmgD,SAAS77F,IAAAA,SA3Bb07C,GAAM7H,MAAMnrC,IAAAA;QACL,CAAA,GAizBT,CAAE,OA9wBJ,SAAagzC,IAAO6mD,IAAAA;AAClB,cAAIp/E,IACAy/C,IACA5iE,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H;AAElB,cAAoC,QAAhC6H,GAAM1K,IAAIjmC,WAAWrC,EAAAA;AAA0B,mBAAA;AACnD,cAAI65F;AAAU,mBAAA;AACd,cAAI75F,KAAQ,KAAK1I;AAAO,mBAAA;AACxB,cAAI07C,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE;AAAc,mBAAA;AAI/C,eAFAvnD,GAAM7H,MAAMnrC,KAAQ,GAEbgzC,GAAM7H,MAAM7zC,MAAK;AACtB,gBAAwC,QAApC07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,GAAAA,GAAsB;AACnD1wB,cAAAA,KAAAA;AACA;YAAA;AAGFu4B,YAAAA,GAAMoe,OAAO0iC,UAAU9gD,EAAAA;UAAAA;AAGzB,iBAAKv4B,MAASza,KAAQ,MAAMgzC,GAAM7H,OAKlC+uB,KAAUlnB,GAAM1K,IAAI9zC,MAAMwL,KAAQ,GAAGgzC,GAAM7H,GAAAA,GAG/BllB,MAAM,oBAAA,KAChB+sB,GAAM7H,MAAMnrC,IAAAA,UAKdgzC,GAAMmgD,SAASngD,GAAM7H,KACrB6H,GAAM7H,MAAMnrC,KAAQ,GAEf65F,MACH7mD,GAAMhqC,KAAK,EACT1P,MAAM,OACN2T,OAAO+lC,GAAM/lC,OACbitD,SAASA,GAAQ33C,QAAQs6E,IAAa,IAAA,EAAA,CAAA,GAI1C7pD,GAAM7H,MAAM6H,GAAMmgD,SAAS,GAC3BngD,GAAMmgD,SAAS77F,IAAAA,SAzBb07C,GAAM7H,MAAMnrC,IAAAA;QACL,CAAA,GAuvBT,CAAE,OAttBJ,SAAagzC,IAAO6mD,IAAAA;AAClB,cAAIp/E,IACAy/C,IACA5iE,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H;AAElB,cAAoC,OAAhC6H,GAAM1K,IAAIjmC,WAAWrC,EAAAA;AAA0B,mBAAA;AACnD,cAAI65F;AAAU,mBAAA;AACd,cAAI75F,KAAQ,KAAK1I;AAAO,mBAAA;AACxB,cAAI07C,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE;AAAc,mBAAA;AAI/C,eAFAvnD,GAAM7H,MAAMnrC,KAAQ,GAEbgzC,GAAM7H,MAAM7zC,MAAK;AACtB,gBAAwC,OAApC07C,GAAM1K,IAAIjmC,WAAW2wC,GAAM7H,GAAAA,GAAsB;AACnD1wB,cAAAA,KAAAA;AACA;YAAA;AAGFu4B,YAAAA,GAAMoe,OAAO0iC,UAAU9gD,EAAAA;UAAAA;AAGzB,iBAAKv4B,MAASza,KAAQ,MAAMgzC,GAAM7H,OAKlC+uB,KAAUlnB,GAAM1K,IAAI9zC,MAAMwL,KAAQ,GAAGgzC,GAAM7H,GAAAA,GAG/BllB,MAAM,oBAAA,KAChB+sB,GAAM7H,MAAMnrC,IAAAA,UAKdgzC,GAAMmgD,SAASngD,GAAM7H,KACrB6H,GAAM7H,MAAMnrC,KAAQ,GAEf65F,MACH7mD,GAAMhqC,KAAK,EACT1P,MAAM,OACN2T,OAAO+lC,GAAM/lC,OACbitD,SAASA,GAAQ33C,QAAQu6E,IAAe,IAAA,EAAA,CAAA,GAI5C9pD,GAAM7H,MAAM6H,GAAMmgD,SAAS,GAC3BngD,GAAMmgD,SAAS77F,IAAAA,SAzBb07C,GAAM7H,MAAMnrC,IAAAA;QACL,CAAA,GA+rBT,CAAE,SAhqBJ,SAAegzC,IAAO6mD,IAAAA;AACpB,cAAIiE,IACAnK,IACAK,IACA7wC,IACAipB,IACAjhC,IACAr0C,IACAu5C,IACA0tD,KAAAA,OACAnK,KAAS5gD,GAAM7H,KACf7zC,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H,KACd8gC,KAASj5B,GAAM1K,IAAIjmC,WAAWrC,EAAAA;AAOlC,cALe,OAAXisE,OACF8xB,KAAAA,MACA9xB,KAASj5B,GAAM1K,IAAIjmC,WAAAA,EAAarC,EAAAA,IAGnB,OAAXisE;AAA0B,mBAAA;AAC9B,cAAIj5B,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE;AAAc,mBAAA;AAM/C,cAJAuD,KAAa99F,KAAQ,IACrB2zF,KAAWD,GAAe1gD,IAAOhzC,EAAAA,KAGlB;AAAK,mBAAA;AAGpB,eADAmrC,KAAMwoD,KAAW,KACPr8F,MAAqC,OAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,GAAsB;AAQ1D,iBADAA,MACOA,KAAM7zC,OAEE,QADb+4C,KAAO2C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,MACE,OAATkF,KAFLlF;AAAAA;AAIlB,gBAAIA,MAAO7zC;AAAO,qBAAA;AAelB,iBAXA0I,KAAQmrC,IACJkpD,GAAqBrhD,IAAO7H,EAAAA,KAC9BgY,KAAOnQ,GAAMwgD,aACbroD,KAAM6H,GAAM7H,OAEZgY,KAAO,IAKTnjD,KAAQmrC,IACDA,KAAM7zC,OAEE,QADb+4C,KAAO2C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,MACE,OAATkF,KAFLlF;AAAAA;AAOlB,gBAAIA,KAAM7zC,MAAO0I,OAAUmrC,MAAOqpD,GAAexhD,IAAO7H,EAAAA;AAMtD,mBALAihC,KAAQp5B,GAAMwgD,aACdroD,KAAM6H,GAAM7H,KAILA,KAAM7zC,OAEE,QADb+4C,KAAO2C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,MACE,OAATkF,KAFLlF;AAAAA;;AAKlBihC,cAAAA,KAAQ;AAGV,gBAAIjhC,MAAO7zC,MAAqC,OAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAErC,qBADA6H,GAAM7H,MAAMyoD,IAAAA;AAGdzoD,YAAAA;UAAAA,OACK;AAML,gBAAI6H,GAAMugD,YAAY;AAAK,qBAAA;AAI3B,mBAAOpoD,KAAM7zC,OAEE,QADb+4C,KAAO2C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,MACE,OAATkF,KAFLlF;AAAAA;AAyBlB,gBApBIA,KAAM7zC,MAAqC,OAA9B07C,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,MACpCnrC,KAAQmrC,KAAM,IACdA,KAAMuoD,GAAe1gD,IAAO7H,EAAAA,MACjB,IACT6oD,KAAQhhD,GAAM1K,IAAI9zC,MAAMwL,IAAOmrC,IAAAA,IAE/BA,KAAMnrC,KAAQ,IAMbg0F,OAAAA,WACQA,OACT7oD,KAAMwoD,KAAW,IAEnBK,KAAQhhD,GAAM1K,IAAI9zC,MAAMspG,IAAYnK,EAAAA,IAAAA,EAGtC78F,KAAMk8C,GAAMs5B,IAAIqoB,WAAWF,GAAmBT,EAAAA,CAAAA;AAG5C,qBADAhhD,GAAM7H,MAAMyoD,IAAAA;AAGdzwC,YAAAA,KAAOrsD,GAAIqsD,MACXipB,KAAQt1E,GAAIs1E;UAAAA;AAmCd,iBA5BKytB,OACH7mD,GAAM7H,MAAM2yD,IACZ9qD,GAAMmgD,SAASQ,IAEXoK,KACF/qD,GAAMhqC,KAAK,EACT1P,MAAM,SACNgvC,KAAK6a,IACLipB,OAAOA,IACPmgB,KAAKv5C,GAAM1K,IAAI1gB,OAAOk2E,IAAYnK,KAAWmK,EAAAA,GAC7C7wF,OAAO+lC,GAAM/lC,MAAAA,CAAAA,KAGf+lC,GAAMhqC,KAAK,EACT1P,MAAM,aACN6pD,MAAMA,IACNipB,OAAOA,IACPn/D,OAAO+lC,GAAM/lC,QAAAA,CAAAA,GAEf+lC,GAAMugD,aACNvgD,GAAMoe,OAAOopC,SAASxnD,EAAAA,GACtBA,GAAMugD,aACNvgD,GAAMhqC,KAAK,EAAE1P,MAAM,cAAc2T,OAAAA,EAAS+lC,GAAM/lC,MAAAA,CAAAA,KAIpD+lC,GAAM7H,MAAMA,IACZ6H,GAAMmgD,SAAS77F,IAAAA;QACR,CAAA,GAmgBP,CAAE,mBA7fJ,SAAyB07C,IAAO6mD,IAAAA;AAC9B,cAAIiE,IACAnK,IACAqK,IACAC,IACA3mG,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H;AAElB,iBAAA,EAAInrC,KAAQ,KAAK1I,QACmB,OAAhC07C,GAAM1K,IAAIjmC,WAAWrC,EAAAA,MACe,OAApCgzC,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA,MAAA,EAC7BgzC,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE,gBAEjCuD,KAAa99F,KAAQ,GAAA,GACrB2zF,KAAWD,GAAe1gD,IAAOhzC,KAAQ,CAAA,KAG1B,OAKV65F,OACE7mD,GAAMs5B,IAAI4qB,cAAalkD,GAAMs5B,IAAI4qB,YAAY,CAAA,IAC7ClkD,GAAMs5B,IAAI4qB,UAAUtrF,SAAQonC,GAAMs5B,IAAI4qB,UAAUtrF,OAAO,CAAA,IAC5DoyF,KAAahrD,GAAMs5B,IAAI4qB,UAAUtrF,KAAKrU,QAEtCy7C,GAAM7H,MAAM2yD,IACZ9qD,GAAMmgD,SAASQ,IAEf3gD,GAAMhqC,KAAK,EACT1P,MAAM,gBACNsxB,IAAIozE,IACJ/wF,OAAO+lC,GAAM/lC,MAAAA,CAAAA,GAEf+lC,GAAMugD,aACN0K,KAAYjrD,GAAMk7C,OAAO32F,QACzBy7C,GAAMoe,OAAOopC,SAASxnD,EAAAA,GACtBA,GAAMs5B,IAAI4qB,UAAUtrF,KAAKoyF,EAAAA,IAAc,EAAE9P,QAAQl7C,GAAMk7C,OAAO/hF,OAAO8xF,EAAAA,EAAAA,GACrEjrD,GAAMugD,cAGRvgD,GAAM7H,MAAMwoD,KAAW,GACvB3gD,GAAMmgD,SAAS77F,IAAAA;QACR,CAAA,GAkdP,CAAE,gBA7cJ,SAAsB07C,IAAO6mD,IAAAA;AAC3B,cAAI7F,IACA7oD,IACA6yD,IACAE,IACA5mG,KAAM07C,GAAMmgD,QACZnzF,KAAQgzC,GAAM7H;AAGlB,cAAInrC,KAAQ,IAAI1I;AAAO,mBAAA;AAEvB,cAAA,CAAK07C,GAAMs5B,IAAI4qB,aAAAA,CAAclkD,GAAMs5B,IAAI4qB,UAAUmE;AAAQ,mBAAA;AACzD,cAAoC,OAAhCroD,GAAM1K,IAAIjmC,WAAWrC,EAAAA;AAA0B,mBAAA;AACnD,cAAwC,OAApCgzC,GAAM1K,IAAIjmC,WAAWrC,KAAQ,CAAA;AAAsB,mBAAA;AACvD,cAAIgzC,GAAM/lC,SAAS+lC,GAAM5lB,QAAQmtE;AAAc,mBAAA;AAE/C,eAAKpvD,KAAMnrC,KAAQ,GAAGmrC,KAAM7zC,IAAK6zC,MAAO;AACtC,gBAAkC,OAA9B6H,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAiB,qBAAA;AAC1C,gBAAkC,OAA9B6H,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAiB,qBAAA;AAC1C,gBAAkC,OAA9B6H,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AACvB;UAAA;AAIJ,iBAAIA,OAAQnrC,KAAQ,MAAA,EAChBmrC,MAAO7zC,QACX6zC,MAEA6oD,KAAQhhD,GAAM1K,IAAI9zC,MAAMwL,KAAQ,GAAGmrC,KAAM,CAAA,GAAA,WAC9B6H,GAAMs5B,IAAI4qB,UAAUmE,KAAK,MAAMrH,EAAAA,MAErC6F,OACE7mD,GAAMs5B,IAAI4qB,UAAUtrF,SAAQonC,GAAMs5B,IAAI4qB,UAAUtrF,OAAO,CAAA,IAExDonC,GAAMs5B,IAAI4qB,UAAUmE,KAAK,MAAMrH,EAAAA,IAAS,KAC1CgK,KAAahrD,GAAMs5B,IAAI4qB,UAAUtrF,KAAKrU,QACtCy7C,GAAMs5B,IAAI4qB,UAAUtrF,KAAKoyF,EAAAA,IAAc,EAAEhK,OAAOA,IAAOjtF,OAAO,EAAA,GAC9DisC,GAAMs5B,IAAI4qB,UAAUmE,KAAK,MAAMrH,EAAAA,IAASgK,MAExCA,KAAahrD,GAAMs5B,IAAI4qB,UAAUmE,KAAK,MAAMrH,EAAAA,GAG9CkK,KAAgBlrD,GAAMs5B,IAAI4qB,UAAUtrF,KAAKoyF,EAAAA,EAAYj3F,OACrDisC,GAAMs5B,IAAI4qB,UAAUtrF,KAAKoyF,EAAAA,EAAYj3F,SAErCisC,GAAMhqC,KAAK,EACT1P,MAAM,gBACNsxB,IAAIozE,IACJhM,OAAOkM,IACPjxF,OAAO+lC,GAAM/lC,MAAAA,CAAAA,IAIjB+lC,GAAM7H,MAAMA,IACZ6H,GAAMmgD,SAAS77F,IAAAA;QACR,CAAA,GAuZP,CAAE,YAlOJ,SAAkB07C,IAAO6mD,IAAAA;AACvB,cAAI7rF,IAAMmwF,IAAWC,IAAYv1E,IAAKw1E,IAASlzD,KAAM6H,GAAM7H;AAE3D,iBAAkC,OAA9B6H,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,MAAAA,GAEzBn9B,KAAOglC,GAAM1K,IAAI9zC,MAAM22C,EAAAA,GAEdnqC,QAAQ,GAAA,IAAO,QAExBm9F,KAAYnwF,GAAKiY,MAAMg3E,EAAAA,KAAAA,EAGjBF,GAAY/7F,QAAQm9F,GAAU,CAAA,EAAGj5E,YAAAA,CAAAA,IAAiB,OAGtDm5E,KAAUnK,GADVrrE,KAAMs1E,GAAU,CAAA,EAAG3pG,MAAM,GAAA,EAAI,CAAA,GAAA,CAAA,CAExBw+C,GAAMoe,OAAOmjC,aAAa1rE,EAAAA,MAE1BgxE,OACH7mD,GAAMhqC,KAAK,EACT1P,MAAM,aACN6pD,MAAMk7C,IACNpxF,OAAO+lC,GAAM/lC,MAAAA,CAAAA,GAEf+lC,GAAMhqC,KAAK,EACT1P,MAAM,QACN4gE,SAASrxC,IACT5b,OAAO+lC,GAAM/lC,QAAQ,EAAA,CAAA,GAEvB+lC,GAAMhqC,KAAK,EAAE1P,MAAM,cAAc2T,OAAO+lC,GAAM/lC,MAAAA,CAAAA,IAGhD+lC,GAAM7H,OAAOgzD,GAAU,CAAA,EAAG5mG,QAAAA,SACnB,CAAA,EAGT6mG,KAAapwF,GAAKiY,MAAM+2E,EAAAA,OAMtBqB,KAAUnK,GAAc,aAFxBrrE,KAAMu1E,GAAW,CAAA,EAAG5pG,MAAM,GAAA,EAAI,EAAA,GAAA,CAAA,CAGzBw+C,GAAMoe,OAAOmjC,aAAa8J,EAAAA,MAE1BxE,OACH7mD,GAAMhqC,KAAK,EACT1P,MAAM,aACN6pD,MAAMk7C,IACNpxF,OAAO+lC,GAAM/lC,MAAAA,CAAAA,GAEf+lC,GAAMhqC,KAAK,EACT1P,MAAM,QACN4gE,SAASrxC,IACT5b,OAAO+lC,GAAM/lC,QAAQ,EAAA,CAAA,GAEvB+lC,GAAMhqC,KAAK,EAAE1P,MAAM,cAAc2T,OAAO+lC,GAAM/lC,MAAAA,CAAAA,IAGhD+lC,GAAM7H,OAAOizD,GAAW,CAAA,EAAG7mG,QAAAA;QACpB,CAAA,GAuKT,CAAE,WAjGJ,SAAiBy7C,IAAO6mD,IAAAA;AACtB,cAAIvrD,IAAIroB,IAAO3uB,IAAK6zC,KAAM6H,GAAM7H;AAEhC,iBAAA,CAAA,CAAK6H,GAAM5lB,QAAQysC,SAGnBviE,KAAM07C,GAAMmgD,QAAAA,EACsB,OAA9BngD,GAAM1K,IAAIjmC,WAAW8oC,EAAAA,KACrBA,KAAM,KAAK7zC,QAAAA,EAMJ,QADXg3C,KAAK0E,GAAM1K,IAAIjmC,WAAW8oC,KAAM,CAAA,MAErB,OAAPmD,MACO,OAAPA,MAAAA,CAvBN,SAAoBA,IAAAA;AAElB,gBAAI0D,KAAU,KAAL1D;AACT,mBAAQ0D,MAAM,MAAiBA,MAAM;UAAA,EAqBrB1D,EAAAA,OAAAA,CAAAA,EAIhBroB,KAAQ+sB,GAAM1K,IAAI9zC,MAAM22C,EAAAA,EAAKllB,MAAMo3E,EAAAA,OAG9BxD,MACH7mD,GAAMhqC,KAAK,EACT1P,MAAM,WACN4gE,SAASlnB,GAAM1K,IAAI9zC,MAAM22C,IAAKA,KAAMllB,GAAM,CAAA,EAAG1uB,MAAAA,GAC7C0V,OAAO+lC,GAAM/lC,MAAAA,CAAAA,GAGjB+lC,GAAM7H,OAAOllB,GAAM,CAAA,EAAG1uB,QAAAA;QACf,CAAA,GAkEP,CAAE,UAxDJ,SAAgBy7C,IAAO6mD,IAAAA;AACrB,cAAQxpD,IAAMpqB,IAAOklB,KAAM6H,GAAM7H,KAAK7zC,KAAM07C,GAAMmgD;AAElD,cAAkC,OAA9BngD,GAAM1K,IAAIjmC,WAAW8oC,EAAAA;AAAwB,mBAAA;AAEjD,cAAIA,KAAM,IAAI7zC;AAGZ,gBAAW,OAFN07C,GAAM1K,IAAIjmC,WAAW8oC,KAAM,CAAA,GAAA;AAI9B,kBADAllB,KAAQ+sB,GAAM1K,IAAI9zC,MAAM22C,EAAAA,EAAKllB,MAAMq3E,EAAAA;AAOjC,uBALKzD,OACHxpD,KAAqC,QAA9BpqB,GAAM,CAAA,EAAG,CAAA,EAAGf,YAAAA,IAAwBupB,SAASxoB,GAAM,CAAA,EAAGzxB,MAAM,CAAA,GAAI,EAAA,IAAMi6C,SAASxoB,GAAM,CAAA,GAAI,EAAA,GAChG+sB,GAAMogD,WAAWjG,GAAkB98C,EAAAA,IAAQ+8C,GAAc/8C,EAAAA,IAAQ+8C,GAAc,KAAA,IAEjFp6C,GAAM7H,OAAOllB,GAAM,CAAA,EAAG1uB,QAAAA;YACf,WAGT0uB,KAAQ+sB,GAAM1K,IAAI9zC,MAAM22C,EAAAA,EAAKllB,MAAMs3E,EAAAA,GACxB;AACT,kBAAI7P,KAAUZ,GAAa7mE,GAAM,CAAA,CAAA;AACjC,kBAAIA,GAAM,CAAA,MAAOynE;AAGf,uBAFKmM,OAAU7mD,GAAMogD,WAAW1F,KAChC16C,GAAM7H,OAAOllB,GAAM,CAAA,EAAG1uB,QAAAA;YACf;;AAQf,iBAFKsiG,OAAU7mD,GAAMogD,WAAW,MAChCpgD,GAAM7H,OAAAA;QACC,CAAA,CAAA;AAkCT,iBAASmzD,KAAAA;AACPllG,eAAKg/F,QAAQ,IAAIvF;AACjB,mBAASxgG,KAAI,GAAGA,KAAImrG,GAASjmG,QAAQlF;AACnC+G,iBAAKg/F,MAAMpvF,KAAKw0F,GAASnrG,EAAAA,EAAG,CAAA,GAAImrG,GAASnrG,EAAAA,EAAG,CAAA,CAAA;AAI9C+G,eAAKm7F,eAAeA;QAAAA;AAiGtB,iBAASA,GAAa1rE,IAAAA;AACpB,cACIvG,KAAMuG,GAAI47B,KAAAA,EAAOv/B,YAAAA;AAGrB,iBAAA,QADA5C,KAAMqrE,GAAgBrrE,EAAAA,GACdthB,QAAQ,GAAA,KAAA,OAJI,CAAE,YAAY,cAAc,QAAQ,MAAA,EAIXA,QAAQshB,GAAIuF,MAAM,GAAA,EAAK,CAAA,CAAA;QAAA;AA3FtEy2E,WAAarqG,UAAU6/F,YAAY,SAAU9gD,IAAAA;AAC3C,cAGI3gD,IAAGksG,IAHH/tC,KAAQp3D,KAAKg/F,MAAMxC,SAAS,EAAA,GAC5Bx+F,KAAMo5D,GAAMj5D,QACZ4zC,KAAM6H,GAAM7H;AAGhB,eAAKozD,KAAavrD,GAAMgjD,SAAS7qD,EAAAA,KAAQ;AACvC6H,YAAAA,GAAM7H,MAAMozD;eADd;AAKA,iBAAKlsG,KAAI,GAAGA,KAAI+E,IAAK/E;AACnB,kBAAIm+D,GAAMn+D,EAAAA,EAAG2gD,IAAAA,IAAO;AAElB,uBAAA,KADAA,GAAM+iD,SAAS5qD,IAAK6H,GAAM7H,GAAAA;AAK9B6H,YAAAA,GAAM7H,OACN6H,GAAM+iD,SAAS5qD,IAAK6H,GAAM7H,GAAAA;UAAAA;QAAAA,GAU5BmzD,GAAarqG,UAAUumG,WAAW,SAAUxnD,IAAAA;AAM1C,mBAFIqX,IAAIh4D,IAHJm+D,KAAQp3D,KAAKg/F,MAAMxC,SAAS,EAAA,GAC5Bx+F,KAAMo5D,GAAMj5D,QACZc,KAAM26C,GAAMmgD,QAGTngD,GAAM7H,MAAM9yC,MAAK;AAQtB,iBAAKhG,KAAI,GAAGA,KAAI+E,MAAAA,EACdizD,KAAKmG,GAAMn+D,EAAAA,EAAG2gD,IAAAA,KAAO,IADF3gD;AAAAA;AAQrB,gBAAIg4D,IAAAA;AACF,kBAAIrX,GAAM7H,OAAO9yC;AAAO;YAAA;AAI1B26C,cAAAA,GAAMogD,WAAWpgD,GAAM1K,IAAI0K,GAAM7H,KAAAA;UAAAA;AAG/B6H,UAAAA,GAAMogD,WACRpgD,GAAM8iD,YAAAA;QAAAA,GAcVwI,GAAarqG,UAAUmwB,QAAQ,SAAU9B,IAAK8K,IAASk/C,IAAK4mB,IAAAA;AAC1D,cAAIlgD,KAAQ,IAAIggD,GAAY1wE,IAAKlpB,MAAMg0B,IAASk/C,IAAK4mB,EAAAA;AACrD95F,eAAKohG,SAASxnD,EAAAA;QAAAA;AAuBhB,YAqLIttB,KAAS,EACX,SAtLkB,EAClB0H,SAAS,EACPysC,MAAAA,OACAo1B,UAAAA,OACAyC,QAAAA,OACA/C,YAAc,aACdkB,YAAc,IAGd4H,aAAAA,OAIAS,QAAQ,4BAOR//B,WAAW,MAEXoiC,YAAc,GAAA,GAGhBnW,YAAY,EAEVj1C,MAAM,EACJqhB,OAAO,CACL,SACA,UACA,cACA,gBACA,eACA,cACA,SACA,eAAA,EAAA,GAIJ9S,OAAO,EACL8S,OAAO,CACL,cACA,QACA,UACA,YACA,WACA,MACA,aACA,YACA,QACA,aACA,OAAA,EAAA,GAIJomC,QAAQ,EACNpmC,OAAO,CACL,YACA,aACA,OACA,YACA,UACA,UACA,gBACA,WACA,SACA,WACA,MAAA,EAAA,EAAA,EAAA,GAmHN,MA3Ge,EACfpjC,SAAS,EACPysC,MAAAA,OACAo1B,UAAAA,OACAyC,QAAAA,OACA/C,YAAc,aACdkB,YAAc,IAGd4H,aAAAA,OAIAS,QAAc,4BAOd//B,WAAe,MAEfoiC,YAAe,GAAA,GAGjBnW,YAAY,EAEVj1C,MAAM,CAAA,GACNuO,OAAO,CAAA,GACPk5C,QAAQ,CAAA,EAAA,EAAA,GA+EV,YAzEqB,EACrBxpE,SAAS,EACPysC,MAAAA,MACAo1B,UAAAA,MACAyC,QAAAA,OACA/C,YAAc,aACdkB,YAAc,IAGd4H,aAAAA,OAIAS,QAAQ,4BAOR//B,WAAW,MAEXoiC,YAAc,GAAA,GAGhBnW,YAAY,EAEVj1C,MAAM,EACJqhB,OAAO,CACL,SACA,UACA,cACA,OAAA,EAAA,GAIJ9S,OAAO,EACL8S,OAAO,CACL,cACA,QACA,UACA,WACA,MACA,aACA,YACA,QACA,WAAA,EAAA,GAIJomC,QAAQ,EACNpmC,OAAO,CACL,YACA,aACA,YACA,UACA,UACA,WACA,SACA,WACA,MAAA,EAAA,EAAA,EAAA,EAAA;AAwBR,iBAASguC,GAAU//E,IAAU6D,IAAKgqD,IAAAA;AAChClzE,eAAKkvC,MAAMhmB,IACXlpB,KAAKkzE,MAAMA,IACXlzE,KAAKg0B,UAAU3O,GAAS2O,SACxBh0B,KAAK80F,SAAS,CAAA,GACd90F,KAAKu9F,aAAAA,OAELv9F,KAAKw9F,SAASn4E,GAASm4E,QACvBx9F,KAAKskD,QAAQj/B,GAASi/B,OACtBtkD,KAAK89D,WAAWz4C,GAASy4C,UACzB99D,KAAKq+F,cAAch5E,GAASg5E;QAAAA;AAW9B,iBAASgH,GAAWC,IAAQtxE,IAAAA;AACJ,sBAAA,OAAXsxE,OACTtxE,KAAUsxE,IACVA,KAAS,YAGPtxE,MAA8B,QAAnBA,GAAQuxE,WACrBx8E,QAAQ6T,KACN,4KAAA,GAOJ58B,KAAKw9F,SAAW,IAAI0H,MACpBllG,KAAKskD,QAAW,IAAIo+C,MACpB1iG,KAAK+1C,OAAW,IAAIgpD,MACpB/+F,KAAK89D,WAAW,IAAI07B,MACpBx5F,KAAKg/F,QAAW,IAAIvF,MAEpBz5F,KAAKg0B,UAAW,CAAA,GAChBh0B,KAAKwlG,UAAUl5E,GAAOg5E,EAAAA,CAAAA,GACtBtlG,KAAK0J,IAAIsqB,MAAW,CAAA,CAAA;QAAA;AActBqxE,WAAWxqG,UAAU6O,MAAM,SAAUsqB,IAAAA;AACnCgE,UAAAA,GAAOh4B,KAAKg0B,SAASA,EAAAA;QAAAA,GASvBqxE,GAAWxqG,UAAU2qG,YAAY,SAAUC,IAAAA;AACzC,cAAI7yE,KAAO5yB;AAEX,cAAA,CAAKylG;AAAW,kBAAM,IAAI/+F,MAAM,+CAAA;AAC5B++F,UAAAA,GAAQzxE,WAAWpB,GAAKlpB,IAAI+7F,GAAQzxE,OAAAA,GACpCyxE,GAAQza,cACVrxF,OAAO0J,KAAKoiG,GAAQza,UAAAA,EAAYzgF,QAAQ,SAAU/Q,IAAAA;AAC5CisG,YAAAA,GAAQza,WAAWxxF,EAAAA,EAAM49D,SAC3BxkC,GAAKp5B,EAAAA,EAAMwlG,MAAM1M,OAAOmT,GAAQza,WAAWxxF,EAAAA,EAAM49D,OAAAA,IAAO;UAAA,CAAA;QAAA,GAsBhEiuC,GAAWxqG,UAAU6qG,MAAM,SAAUC,IAAQ3xE,IAAAA;AAE3C,iBADA2xE,GAAO3lG,MAAMg0B,EAAAA,GACNh0B;QAAAA,GAaTqlG,GAAWxqG,UAAUmwB,QAAQ,SAAU9B,IAAKgqD,IAAAA;AAC1C,cAAIt5B,KAAQ,IAAIwrD,GAAUplG,MAAMkpB,IAAKgqD,EAAAA;AAErC,iBADAlzE,KAAK+1C,KAAKsvB,QAAQzrB,EAAAA,GACXA,GAAMk7C;QAAAA,GAWfuQ,GAAWxqG,UAAUwqF,SAAS,SAAUn8D,IAAKgqD,IAAAA;AAE3C,iBADAA,KAAMA,MAAO,CAAA,GACNlzE,KAAK89D,SAASunB,OAAOrlF,KAAKgrB,MAAM9B,IAAKgqD,EAAAA,GAAMlzE,KAAKg0B,SAASk/C,EAAAA;QAAAA,GAWlEmyB,GAAWxqG,UAAU+qG,cAAc,SAAU18E,IAAKgqD,IAAAA;AAChD,cAAIt5B,KAAQ,IAAIwrD,GAAUplG,MAAMkpB,IAAKgqD,EAAAA;AAGrC,iBAFAt5B,GAAM2jD,aAAAA,MACNv9F,KAAK+1C,KAAKsvB,QAAQzrB,EAAAA,GACXA,GAAMk7C;QAAAA,GAYfuQ,GAAWxqG,UAAU2gG,eAAe,SAAUtyE,IAAKgqD,IAAAA;AAEjD,iBADAA,KAAMA,MAAO,CAAA,GACNlzE,KAAK89D,SAASunB,OAAOrlF,KAAK4lG,YAAY18E,IAAKgqD,EAAAA,GAAMlzE,KAAKg0B,SAASk/C,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,IAAAA,KAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,GAAAA;ACz/JjE,iBAAStrE,GAAQ9J,IAAK+nG,IAAAA;AAIzB,cAAI1qG,MAAMN,UAAU+M;AAChB,mBAAO9J,GAAI8J,QAAQi+F,EAAAA;AAGnB,mBAAS5sG,KAAI,GAAG+E,KAAMF,GAAIK,QAAQlF,KAAI+E,IAAK/E;AACvC,gBAAI6E,GAAI7E,EAAAA,MAAO4sG;AACX,qBAAO5sG;AAEf,iBAAA;QAAQ;AAiBT,iBAAS+R,GAAOlN,IAAKyE,IAAAA;AACxB,mBAAStJ,KAAI6E,GAAIK,SAAS,GAAGlF,MAAK,GAAGA;AAAAA,qBAC7BsJ,GAAGzE,GAAI7E,EAAAA,CAAAA,KACP6E,GAAIiV,OAAO9Z,IAAG,CAAA;QAAA;AA2CnB,iBAAS6sG,GAAwBC,IAAAA;AACpC,gBAAM,IAAIr/F,MAAM,gCAAgCq/F,KAAW,GAAA;QAAA;AChD/D,YAAIzsG,KAAyB,WAAA;AAKzB,mBAAS0sG,GAAQC,IAAAA;AAAAA,uBACTA,OAAkBA,KAAM,CAAA,IAS5BjmG,KAAK48C,UAAU,IAOf58C,KAAKkmG,QAAQ,CAAA,GAMblmG,KAAK2zF,YAAY,IAOjB3zF,KAAKmmG,kBAAkB,OACvBnmG,KAAK48C,UAAUqpD,GAAIrpD,WAAW,IAC9B58C,KAAKkmG,QAAQD,GAAIC,SAAS,CAAA,GAC1BlmG,KAAK2zF,YAAYsS,GAAIG,aAAaH,GAAItS,aAAa;UAAA;AAsLvD,iBA9KAqS,GAAQnrG,UAAUwrG,aAAa,SAAUzpD,IAAAA;AAErC,mBADA58C,KAAK48C,UAAUA,IACR58C;UAAAA,GAOXgmG,GAAQnrG,UAAUyrG,aAAa,WAAA;AAC3B,mBAAOtmG,KAAK48C,WAAW;UAAA,GAS3BopD,GAAQnrG,UAAU0rG,UAAU,SAAUC,IAAUC,IAAAA;AAG5C,mBAFezmG,KAAK0mG,SAAAA,EACXF,EAAAA,IAAYC,IACdzmG;UAAAA,GAQXgmG,GAAQnrG,UAAU8rG,UAAU,SAAUH,IAAAA;AAClC,mBAAOxmG,KAAK0mG,SAAAA,EAAWF,EAAAA;UAAAA,GAQ3BR,GAAQnrG,UAAU+rG,WAAW,SAAUV,IAAAA;AAEnC,mBADAvsG,OAAOq+B,OAAOh4B,KAAK0mG,SAAAA,GAAYR,EAAAA,GACxBlmG;UAAAA,GAOXgmG,GAAQnrG,UAAU6rG,WAAW,WAAA;AACzB,mBAAO1mG,KAAKkmG,UAAUlmG,KAAKkmG,QAAQ,CAAA;UAAA,GAQvCF,GAAQnrG,UAAUgsG,WAAW,SAAUC,IAAAA;AACnC,mBAAO9mG,KAAKumG,QAAQ,SAASO,EAAAA;UAAAA,GAQjCd,GAAQnrG,UAAUksG,WAAW,SAAUD,IAAAA;AAEnC,qBADuLE,IAAnLC,KAAYjnG,KAAKknG,SAAAA,GAAYf,KAAkBnmG,KAAKmmG,iBAAiBr+D,KAAYm/D,KAAkBA,GAAUx4E,MAAM03E,EAAAA,IAArB,CAAA,GAAuCgB,KAAaL,GAASr4E,MAAM03E,EAAAA,GAC9Ja,KAAWG,GAAWv4F,MAAAA;AAAAA,qBACrBhH,GAAQkgC,IAASk/D,EAAAA,KACjBl/D,GAAQl4B,KAAKo3F,EAAAA;AAIrB,mBADAhnG,KAAK0mG,SAAAA,EAAkB,QAAI5+D,GAAQ7nB,KAAK,GAAA,GACjCjgB;UAAAA,GAQXgmG,GAAQnrG,UAAUusG,cAAc,SAAUN,IAAAA;AAEtC,qBAD0LM,IAAtLH,KAAYjnG,KAAKknG,SAAAA,GAAYf,KAAkBnmG,KAAKmmG,iBAAiBr+D,KAAYm/D,KAAkBA,GAAUx4E,MAAM03E,EAAAA,IAArB,CAAA,GAAuCkB,KAAgBP,GAASr4E,MAAM03E,EAAAA,GACjKr+D,GAAQ3pC,WAAWipG,KAAcC,GAAcz4F,MAAAA,MAAU;AAC5D,kBAAI+B,KAAM/I,GAAQkgC,IAASs/D,EAAAA;AAAAA,qBACvBz2F,MACAm3B,GAAQ/0B,OAAOpC,IAAK,CAAA;YAAA;AAI5B,mBADA3Q,KAAK0mG,SAAAA,EAAkB,QAAI5+D,GAAQ7nB,KAAK,GAAA,GACjCjgB;UAAAA,GAQXgmG,GAAQnrG,UAAUqsG,WAAW,WAAA;AACzB,mBAAOlnG,KAAK0mG,SAAAA,EAAkB,SAAK;UAAA,GAQvCV,GAAQnrG,UAAUysG,WAAW,SAAUR,IAAAA;AACnC,mBAAA,QAAQ,MAAM9mG,KAAKknG,SAAAA,IAAa,KAAKt/F,QAAQ,MAAMk/F,KAAW,GAAA;UAAA,GAQlEd,GAAQnrG,UAAU0sG,eAAe,SAAU9mC,IAAAA;AAEvC,mBADAzgE,KAAK2zF,YAAYlzB,IACVzgE;UAAAA,GAQXgmG,GAAQnrG,UAAU2sG,eAAe,SAAU/mC,IAAAA;AACvC,mBAAOzgE,KAAKunG,aAAa9mC,EAAAA;UAAAA,GAO7BulC,GAAQnrG,UAAU4sG,eAAe,WAAA;AAC7B,mBAAOznG,KAAK2zF,aAAa;UAAA,GAO7BqS,GAAQnrG,UAAU6sG,eAAe,WAAA;AAC7B,mBAAO1nG,KAAKynG,aAAAA;UAAAA,GAOhBzB,GAAQnrG,UAAU8sG,iBAAiB,WAAA;AAC/B,gBAAI/qD,KAAU58C,KAAKsmG,WAAAA,GAAcsB,KAAW5nG,KAAK6nG,cAAAA;AAEjD,mBAAO,CAAC,KAAKjrD,IADbgrD,KAAWztG,KAAa,MAAMytG,KAAW,IACT,KAAK5nG,KAAK0nG,aAAAA,GAAgB,MAAM9qD,IAAS,GAAA,EAAK38B,KAAK,EAAA;UAAA,GASvF+lF,GAAQnrG,UAAUgtG,gBAAgB,WAAA;AAC9B,gBAAA,CAAK7nG,KAAKkmG;AACN,qBAAO;AACX,gBAAIA,KAAQlmG,KAAK0mG,SAAAA,GAAYoB,KAAW,CAAA;AACxC,qBAASpuE,MAAQwsE;AACTA,cAAAA,GAAMprG,eAAe4+B,EAAAA,KACrBouE,GAASl4F,KAAK8pB,KAAO,OAAOwsE,GAAMxsE,EAAAA,IAAQ,GAAA;AAGlD,mBAAOouE,GAAS7nF,KAAK,GAAA;UAAA,GAElB+lF;QAAAA,EA5NiB;AC7C5B,YAAI9sG,KAAkC,WAAA;AAKlC,mBAAS6uG,GAAiB9B,IAAAA;AAAAA,uBAClBA,OAAkBA,KAAM,CAAA,IAK5BjmG,KAAKgoG,YAAAA,OAKLhoG,KAAKioG,WAAW,CAAA,GAKhBjoG,KAAK64D,YAAY,IACjB74D,KAAKgoG,YAAY/B,GAAI+B,aAAAA,OACrBhoG,KAAKioG,WAAWhC,GAAIgC,YAAY,CAAA,GAChCjoG,KAAK64D,YAAYotC,GAAIptC,aAAa;UAAA;AAqHtC,iBA3GAkvC,GAAiBltG,UAAUqtG,QAAQ,SAAUr7E,IAAAA;AACzC,mBAAO,IAAIvzB,GAAQ,EACfsjD,SAAS,KACTspD,OAAOlmG,KAAKmoG,YAAYt7E,EAAAA,GACxBu5E,WAAWpmG,KAAKooG,kBAAkBv7E,GAAMw7E,cAAAA,CAAAA,EAAAA,CAAAA;UAAAA,GAYhDN,GAAiBltG,UAAUstG,cAAc,SAAUt7E,IAAAA;AAC/C,gBAAIq5E,KAAQ,EACR,MAAQr5E,GAAMy7E,cAAAA,EAAAA,GAEdxB,KAAW9mG,KAAKuoG,eAAe17E,EAAAA;AAanC,mBAZIi6E,OACAZ,GAAa,QAAIY,KAEjB9mG,KAAKgoG,cACL9B,GAAc,SAAI,UAClBA,GAAW,MAAI,wBAEflmG,KAAKioG,YACDjoG,KAAKioG,SAAS9pG,UAAU6B,KAAKioG,SAAS9pG,SAAS0uB,GAAMw7E,cAAAA,EAAgBlqG,WACrE+nG,GAAa,QAAIr5E,GAAMy7E,cAAAA,IAGxBpC;UAAAA,GAsBX6B,GAAiBltG,UAAU0tG,iBAAiB,SAAU17E,IAAAA;AAClD,gBAAIgsC,KAAY74D,KAAK64D;AACrB,gBAAKA,IAGA;AAED,uBADI2vC,KAAgB,CAAC3vC,EAAAA,GAAY4vC,KAAmB57E,GAAM67E,oBAAAA,GACjDzvG,KAAI,GAAG+E,KAAMyqG,GAAiBtqG,QAAQlF,KAAI+E,IAAK/E;AACpDuvG,gBAAAA,GAAc54F,KAAKipD,KAAY,MAAM4vC,GAAiBxvG,EAAAA,CAAAA;AAE1D,qBAAOuvG,GAAcvoF,KAAK,GAAA;YAAA;AAP1B,mBAAO;UAAA,GAmBf8nF,GAAiBltG,UAAUutG,oBAAoB,SAAUO,IAAAA;AAErD,mBADAA,KAAa3oG,KAAK4oG,WAAWD,EAAAA;UAAAA,GAcjCZ,GAAiBltG,UAAU+tG,aAAa,SAAUD,IAAAA;AAC9C,gBAAIV,KAAWjoG,KAAKioG;AACpB,gBAAA,CAAKA,MAAAA,CAAaA,GAAS9pG;AACvB,qBAAOwqG;AACX,gBAAIE,KAAiBZ,GAAS9pG,QAAQ2qG,KAAmBb,GAAS35E;AAClE,mBAAyB,YAArBw6E,KCrJL,SAAuBr5E,IAAKs5E,IAAaC,IAAAA;AAC5C,kBAAIC,IACAC;AACiB,sBAAjBF,MACAA,KAAgB,YAChBE,KAAiB,GACjBD,KAA8B,MAG9BC,KAAiBF,GAAc7qG,QAC/B8qG,KAA8BD,GAAc7qG;AAEhD,kBA8BIgrG,KAAW,SAAUC,IAAAA;AACrB,oBAAI35E,KAAM;AAgBV,uBAfI25E,GAAO3lE,UAAU2lE,GAAO1/C,SACxBj6B,MAAO25E,GAAO3lE,SAAS,QAEvB2lE,GAAO1/C,SACPj6B,MAAO25E,GAAO1/C,OAEd0/C,GAAO11E,SACPjE,MAAO,MAAM25E,GAAO11E,OAEpB01E,GAAOv/C,UACPp6B,MAAO,MAAM25E,GAAOv/C,QAEpBu/C,GAAOC,aACP55E,MAAO,MAAM25E,GAAOC,WAEjB55E;cAAAA,GAEP65E,KAAe,SAAUC,IAASC,IAAAA;AAClC,oBAAIC,KAA+BD,KAA2B,GAAGE,KAAczrG,KAAKiJ,KAAKuiG,EAAAA,GAA+BE,KAAAA,KAAmB1rG,KAAKgK,MAAMwhG,EAAAA,GAA+BxqG,KAAM;AAI3L,uBAHI0qG,KAAY,MACZ1qG,KAAMsqG,GAAQ/6E,OAAOm7E,EAAAA,IAElBJ,GAAQ/6E,OAAO,GAAGk7E,EAAAA,IAAeV,KAAgB/pG;cAAAA;AAE5D,kBAAIwwB,GAAItxB,UAAU4qG;AACd,uBAAOt5E;AAEX,kBAAIm6E,KAAkBb,KAAcG,IAChCE,KA5DY,SAAU35E,IAAAA;AACtB,oBAAI25E,KAAS,CAAA,GACTS,KAASp6E,IACT5C,KAAQg9E,GAAOh9E,MAAM,iBAAA;AAyBzB,uBAxBIA,OACAu8E,GAAO3lE,SAAS5W,GAAM,CAAA,GACtBg9E,KAASA,GAAOr7E,OAAO3B,GAAM,CAAA,EAAG1uB,MAAAA,KAEpC0uB,KAAQg9E,GAAOh9E,MAAM,wBAAA,OAEjBu8E,GAAO1/C,OAAO78B,GAAM,CAAA,GACpBg9E,KAASA,GAAOr7E,OAAO3B,GAAM,CAAA,EAAG1uB,MAAAA,KAEpC0uB,KAAQg9E,GAAOh9E,MAAM,uBAAA,OAEjBu8E,GAAO11E,OAAO7G,GAAM,CAAA,GACpBg9E,KAASA,GAAOr7E,OAAO3B,GAAM,CAAA,EAAG1uB,MAAAA,KAEpC0uB,KAAQg9E,GAAOh9E,MAAM,oBAAA,OAEjBu8E,GAAOv/C,QAAQh9B,GAAM,CAAA,GACrBg9E,KAASA,GAAOr7E,OAAO3B,GAAM,CAAA,EAAG1uB,MAAAA,KAEpC0uB,KAAQg9E,GAAOh9E,MAAM,WAAA,OAEjBu8E,GAAOC,WAAWx8E,GAAM,CAAA,IAGrBu8E;cAAAA,EAgCY35E,EAAAA;AAEvB,kBAAI25E,GAAOv/C,OAAO;AACd,oBAAIigD,KAAaV,GAAOv/C,MAAMh9B,MAAM,0BAAA;AAChCi9E,gBAAAA,OAEAV,GAAOv/C,QAAQu/C,GAAOv/C,MAAMr7B,OAAO,GAAGs7E,GAAW,CAAA,EAAG3rG,MAAAA,GACpDsxB,KAAM05E,GAASC,EAAAA;cAAAA;AAGvB,kBAAI35E,GAAItxB,UAAU4qG;AACd,uBAAOt5E;AAMX,kBAJI25E,GAAO1/C,SACP0/C,GAAO1/C,OAAO0/C,GAAO1/C,KAAKvgC,QAAQ,UAAU,EAAA,GAC5CsG,KAAM05E,GAASC,EAAAA,IAEf35E,GAAItxB,UAAU4qG;AACd,uBAAOt5E;AAGX,kBAAIvG,KAAM;AAIV,kBAHIkgF,GAAO1/C,SACPxgC,MAAOkgF,GAAO1/C,OAEdxgC,GAAI/qB,UAAUyrG;AACd,uBAAIR,GAAO1/C,KAAKvrD,UAAU4qG,MACdK,GAAO1/C,KAAKl7B,OAAO,GAAIu6E,KAAcG,EAAAA,IAAmBF,IAAex6E,OAAO,GAAGo7E,KAAkBX,EAAAA,IAExGK,GAAapgF,IAAK0gF,EAAAA,EAAiBp7E,OAAO,GAAGo7E,KAAkBX,EAAAA;AAE1E,kBAAIc,KAAe;AAOnB,kBANIX,GAAO11E,SACPq2E,MAAgB,MAAMX,GAAO11E,OAE7B01E,GAAOv/C,UACPkgD,MAAgB,MAAMX,GAAOv/C,QAE7BkgD,IAAc;AACd,qBAAK7gF,KAAM6gF,IAAc5rG,UAAUyrG;AAC/B,0BAAK1gF,KAAM6gF,IAAc5rG,UAAU4qG,MACvB7/E,KAAM6gF,IAAcv7E,OAAO,GAAGu6E,EAAAA,KAGlC7/E,KAAMogF,GAAaS,IADIH,KAAkB1gF,GAAI/qB,MAAAA,GACeqwB,OAAO,GAAGo7E,KAAkBX,EAAAA;AAGhG//E,gBAAAA,MAAO6gF;cAAAA;AAGf,kBAAIX,GAAOC,UAAU;AACjB,oBAAIA,KAAW,MAAMD,GAAOC;AAC5B,qBAAKngF,KAAMmgF,IAAUlrG,UAAUyrG;AAC3B,0BAAK1gF,KAAMmgF,IAAUlrG,UAAU4qG,MACnB7/E,KAAMmgF,IAAU76E,OAAO,GAAGu6E,EAAAA,KAG9B7/E,KAAMogF,GAAaD,IADKO,KAAkB1gF,GAAI/qB,MAAAA,GACWqwB,OAAO,GAAGo7E,KAAkBX,EAAAA;AAG7F//E,gBAAAA,MAAOmgF;cAAAA;AAGf,kBAAID,GAAO3lE,UAAU2lE,GAAO1/C,MAAM;AAC9B,oBAAIjmB,KAAS2lE,GAAO3lE,SAAS;AAC7B,qBAAKva,KAAMua,IAAQtlC,SAASyrG;AACxB,0BAAQnmE,KAASva,IAAKsF,OAAO,GAAGu6E,EAAAA;cAAAA;AAGxC,kBAAI7/E,GAAI/qB,UAAU4qG;AACd,uBAAO7/E;AAEX,kBAAIjqB,KAAM;AAIV,qBAHI2qG,KAAkB,MAClB3qG,KAAMiqB,GAAIsF,OAAAA,KAAcvwB,KAAKgK,MAAM2hG,KAAkB,CAAA,CAAA,KAEjD1gF,GAAIsF,OAAO,GAAGvwB,KAAKiJ,KAAK0iG,KAAkB,CAAA,CAAA,IAAMZ,KAAgB/pG,IAAKuvB,OAAO,GAAGo7E,KAAkBX,EAAAA;YAAAA,EDE5EN,IAAYE,EAAAA,IAEP,aAArBC,KEzJV,SAAwBr5E,IAAKs5E,IAAaC,IAAAA;AAC7C,kBAAIv5E,GAAItxB,UAAU4qG;AACd,uBAAOt5E;AAEX,kBAAIw5E,IACAC;AACiB,sBAAjBF,MACAA,KAAgB,YAChBC,KAA8B,GAC9BC,KAAiB,MAGjBD,KAA8BD,GAAc7qG,QAC5C+qG,KAAiBF,GAAc7qG;AAEnC,kBAAIyrG,KAAkBb,KAAcG,IAChCjqG,KAAM;AAIV,qBAHI2qG,KAAkB,MAClB3qG,KAAMwwB,GAAIjB,OAAAA,KAAcvwB,KAAKgK,MAAM2hG,KAAkB,CAAA,CAAA,KAEjDn6E,GAAIjB,OAAO,GAAGvwB,KAAKiJ,KAAK0iG,KAAkB,CAAA,CAAA,IAAMZ,KAAgB/pG,IAAKuvB,OAAO,GAAGo7E,KAAkBX,EAAAA;YAAAA,EFsI3EN,IAAYE,EAAAA,IG5JvC,SAAqBF,IAAYI,IAAaC,IAAAA;AACjD,qBLgBG,SAAkB9/E,IAAK6/E,IAAaC,IAAAA;AACvC,oBAAIE;AAWJ,uBAVIhgF,GAAI/qB,SAAS4qG,OACQ,QAAjBC,MACAA,KAAgB,YAChBE,KAAiB,KAGjBA,KAAiBF,GAAc7qG,QAEnC+qB,KAAMA,GAAI+iB,UAAU,GAAG88D,KAAcG,EAAAA,IAAkBF,KAEpD9/E;cAAAA,EK5BSy/E,IAAYI,IAAaC,EAAAA;YAAAA,EH8JdL,IAAYE,EAAAA;UAAAA,GAGhCd;QAAAA,EA7I0B,GICjCiC,KAAuB,WAAA;AAOvB,mBAASA,GAAM/D,IAAAA;AAOXjmG,iBAAKiqG,uBAAuB,MAM5BjqG,KAAKkqG,cAAc,IAMnBlqG,KAAKjC,SAAS,GACdiC,KAAKmqG,aAAalE,GAAIkE,YACtBnqG,KAAKkqG,cAAcjE,GAAIiE,aACvBlqG,KAAKjC,SAASkoG,GAAIloG;UAAAA;AA0FtB,iBAnFAisG,GAAMnvG,UAAUuvG,iBAAiB,WAAA;AAC7B,mBAAOpqG,KAAKkqG;UAAAA,GAchBF,GAAMnvG,UAAUwvG,YAAY,SAAUtsG,IAAAA;AAClCiC,iBAAKjC,SAASA;UAAAA,GAQlBisG,GAAMnvG,UAAUyvG,YAAY,WAAA;AACxB,mBAAOtqG,KAAKjC;UAAAA,GAuBhBisG,GAAMnvG,UAAU6tG,sBAAsB,WAAA;AAClC,mBAAO,CAAC1oG,KAAKuqG,QAAAA,CAAAA;UAAAA,GA+BjBP,GAAMnvG,UAAU2vG,WAAW,WAAA;AACvB,mBAAOxqG,KAAKmqG,WAAWjC,MAAMloG,IAAAA;UAAAA,GAE1BgqG;QAAAA,EAvHe,GCftBS,KAAgB,SAASlxG,IAAGkM,IAAAA;AAI5B,kBAHAglG,KAAgB9wG,OAAOu4B,kBAClB,EAAEk3C,WAAW,CAAA,EAAA,aAAgBjuE,SAAS,SAAU5B,IAAGkM,IAAAA;AAAKlM,YAAAA,GAAE6vE,YAAY3jE;UAAAA,KACvE,SAAUlM,IAAGkM,IAAAA;AAAK,qBAAS1K,MAAK0K;AAAOA,cAAAA,GAAE3K,eAAeC,EAAAA,MAAIxB,GAAEwB,EAAAA,IAAK0K,GAAE1K,EAAAA;UAAAA,GACpDxB,IAAGkM,EAAAA;QAAAA;AAGrB,iBAASilG,GAAUnxG,IAAGkM,IAAAA;AAEzB,mBAASklG,KAAAA;AAAO3qG,iBAAKxE,cAAcjC;UAAAA;AADnCkxG,UAAAA,GAAclxG,IAAGkM,EAAAA,GAEjBlM,GAAEsB,YAAkB,SAAN4K,KAAa9L,OAAOY,OAAOkL,EAAAA,KAAMklG,GAAG9vG,YAAY4K,GAAE5K,WAAW,IAAI8vG;QAAAA;AAG5E,YAAIC,KAAW,WAAA;AAQlB,kBAPAA,KAAWjxG,OAAOq+B,UAAU,SAAkB79B,IAAAA;AAC1C,qBAASa,IAAG/B,KAAI,GAAGyB,KAAIuH,UAAU9D,QAAQlF,KAAIyB,IAAGzB;AAE5C,uBAAS8B,MADTC,KAAIiH,UAAUhJ,EAAAA;AACOU,uBAAOkB,UAAUC,eAAe1B,KAAK4B,IAAGD,EAAAA,MAAIZ,GAAEY,EAAAA,IAAKC,GAAED,EAAAA;AAE9E,mBAAOZ;UAAAA,GAEKyP,MAAM5J,MAAMiC,SAAAA;QAAAA;AC3BhC,YCMI4oG,IDNAzqG,KAA4B,SAAU0qG,IAAAA;AAOtC,mBAASC,GAAW9E,IAAAA;AAChB,gBAAI+E,KAAQF,GAAO1xG,KAAK4G,MAAMimG,EAAAA,KAAQjmG;AAQtC,mBAFAgrG,GAAMC,QAAQ,IACdD,GAAMC,QAAQhF,GAAIgF,OACXD;UAAAA;AAmCX,iBAlDAN,GAAUK,IAAYD,EAAAA,GAuBtBC,GAAWlwG,UAAU0vG,UAAU,WAAA;AAC3B,mBAAO;UAAA,GAOXQ,GAAWlwG,UAAUqwG,WAAW,WAAA;AAC5B,mBAAOlrG,KAAKirG;UAAAA,GAOhBF,GAAWlwG,UAAUytG,gBAAgB,WAAA;AACjC,mBAAO,YAAYtoG,KAAKirG;UAAAA,GAO5BF,GAAWlwG,UAAUwtG,gBAAgB,WAAA;AACjC,mBAAOroG,KAAKirG;UAAAA,GAETF;QAAAA,EACTf,EAAAA,GElDEprE,KAA8B,SAAUksE,IAAAA;AAOxC,mBAASK,GAAalF,IAAAA;AAClB,gBAAI+E,KAAQF,GAAO1xG,KAAK4G,MAAMimG,EAAAA,KAAQjmG;AAgBtC,mBATAgrG,GAAMI,cAAc,IAMpBJ,GAAMK,UAAU,IAChBL,GAAMI,cAAcnF,GAAImF,aACxBJ,GAAMK,UAAUpF,GAAIoF,SACbL;UAAAA;AAsDX,iBA7EAN,GAAUS,IAAcL,EAAAA,GA+BxBK,GAAatwG,UAAU0vG,UAAU,WAAA;AAC7B,mBAAO;UAAA,GAQXY,GAAatwG,UAAUywG,iBAAiB,WAAA;AACpC,mBAAOtrG,KAAKorG;UAAAA,GAOhBD,GAAatwG,UAAU0wG,aAAa,WAAA;AAChC,mBAAOvrG,KAAKqrG;UAAAA,GAOhBF,GAAatwG,UAAUytG,gBAAgB,WAAA;AACnC,gBAAI8C,KAAcprG,KAAKorG,aAAaC,KAAUrrG,KAAKqrG;AACnD,oBAAQD,IAAAA;cACJ,KAAK;AACD,uBAAO,iCAAiCC;cAC5C,KAAK;AACD,uBAAO,sCAAsCA;cACjD,KAAK;AACD,uBAAO,wCAAwCA;cACnD;AACI,sBAAM,IAAI3kG,MAAM,+CAA+C0kG,EAAAA;YAAAA;UAAAA,GAQ3ED,GAAatwG,UAAUwtG,gBAAgB,WAAA;AACnC,mBAAO,MAAMroG,KAAKqrG;UAAAA,GAEfF;QAAAA,EACTnB,EAAAA,GCjFE/+E,KAA8B,SAAU6/E,IAAAA;AAOxC,mBAASU,GAAavF,IAAAA;AAClB,gBAAI+E,KAAQF,GAAO1xG,KAAK4G,MAAMimG,EAAAA,KAAQjmG;AAgBtC,mBATAgrG,GAAMI,cAAc,WAMpBJ,GAAMS,UAAU,IAChBT,GAAMS,UAAUxF,GAAIwF,SACpBT,GAAMI,cAAcnF,GAAImF,aACjBJ;UAAAA;AAmEX,iBA1FAN,GAAUc,IAAcV,EAAAA,GA+BxBU,GAAa3wG,UAAU0vG,UAAU,WAAA;AAC7B,mBAAO;UAAA,GAOXiB,GAAa3wG,UAAU6wG,aAAa,WAAA;AAChC,mBAAO1rG,KAAKyrG;UAAAA,GAQhBD,GAAa3wG,UAAUywG,iBAAiB,WAAA;AACpC,mBAAOtrG,KAAKorG;UAAAA,GAOhBI,GAAa3wG,UAAUytG,gBAAgB,WAAA;AACnC,oBAAQtoG,KAAKorG,aAAAA;cACT,KAAK;AACD,uBAAO,yBAAyBprG,KAAKyrG;cACzC,KAAK;AACD,uBAAO,2BAA2BzrG,KAAKyrG;cAC3C,KAAK;AACD,uBAAO,4BAA4BzrG,KAAKyrG;cAC5C;AACI,sBAAM,IAAI/kG,MAAM,+CAA+C1G,KAAKorG,WAAAA;YAAAA;UAAAA,GAQhFI,GAAa3wG,UAAUwtG,gBAAgB,WAAA;AACnC,mBAAO,MAAMroG,KAAKyrG;UAAAA,GAStBD,GAAa3wG,UAAU6tG,sBAAsB,WAAA;AACzC,gBAAID,KAAmBqC,GAAOjwG,UAAU6tG,oBAAoBtvG,KAAK4G,IAAAA,GAAOorG,KAAcprG,KAAKsrG,eAAAA;AAI3F,mBAHIF,MACA3C,GAAiB74F,KAAKw7F,EAAAA,GAEnB3C;UAAAA,GAEJ+C;QAAAA,EACTxB,EAAAA,GC1FEvkG,KAA4B,SAAUqlG,IAAAA;AAOtC,mBAASa,GAAW1F,IAAAA;AAChB,gBAAI+E,KAAQF,GAAO1xG,KAAK4G,MAAMimG,EAAAA,KAAQjmG;AAsBtC,mBAbAgrG,GAAMp6D,SAAS,IAUfo6D,GAAMY,WAAAA,OACNZ,GAAMp6D,SAASq1D,GAAIr1D,QACnBo6D,GAAMY,WAAW3F,GAAI2F,UACdZ;UAAAA;AAiDX,iBA9EAN,GAAUiB,IAAYb,EAAAA,GAqCtBa,GAAW9wG,UAAU0vG,UAAU,WAAA;AAC3B,mBAAO;UAAA,GAUXoB,GAAW9wG,UAAUgxG,iBAAiB,WAAA;AAClC,mBAAO7rG,KAAK4wC;UAAAA,GAUhB+6D,GAAW9wG,UAAUixG,YAAY,WAAA;AAC7B,mBAAO9rG,KAAK6rG,eAAAA;UAAAA,GAOhBF,GAAW9wG,UAAUytG,gBAAgB,WAAA;AACjC,mBAAO,UAAUtoG,KAAK4rG,WAAW,MAAM,MAAM5rG,KAAK4wC;UAAAA,GAOtD+6D,GAAW9wG,UAAUwtG,gBAAgB,WAAA;AACjC,mBAAOroG,KAAKkqG;UAAAA,GAETyB;QAAAA,EACT3B,EAAAA,GClFE1hF,KAA0B,SAAUwiF,IAAAA;AAOpC,mBAASiB,GAAS9F,IAAAA;AACd,gBAAI+E,KAAQF,GAAO1xG,KAAK4G,MAAMimG,EAAAA,KAAQjmG;AAqFtC,mBA/EAgrG,GAAMv7E,MAAM,IASZu7E,GAAMgB,eAAe,UAOrBhB,GAAMiB,mBAAAA,OAQNjB,GAAMkB,wBAAAA,OAMNlB,GAAMmB,cAAc,EAAE1oE,QAAAA,MAAc2oE,KAAAA,KAAK,GAKzCpB,GAAMqB,qBAAAA,MAKNrB,GAAMsB,wBAAAA,MAQNtB,GAAMuB,oBAAoB,oBAO1BvB,GAAMwB,iBAAiB,4BAQvBxB,GAAMyB,wBAAwB,SAQ9BzB,GAAM0B,oBAAAA,OACN1B,GAAMgB,eAAe/F,GAAI+F,cACzBhB,GAAMv7E,MAAMw2E,GAAIx2E,KAChBu7E,GAAMiB,mBAAmBhG,GAAIgG,kBAC7BjB,GAAMkB,wBAAwBjG,GAAIiG,uBAClClB,GAAMmB,cAAclG,GAAIkG,aACxBnB,GAAMqB,qBAAqBpG,GAAIoG,oBAC/BrB,GAAMsB,wBAAwBrG,GAAIqG,uBAC3BtB;UAAAA;AAwJX,iBApPAN,GAAUqB,IAAUjB,EAAAA,GAoGpBiB,GAASlxG,UAAU0vG,UAAU,WAAA;AACzB,mBAAO;UAAA,GAaXwB,GAASlxG,UAAU8xG,kBAAkB,WAAA;AACjC,mBAAO3sG,KAAKgsG;UAAAA,GAQhBD,GAASlxG,UAAU+xG,SAAS,WAAA;AACxB,gBAAIn9E,KAAMzvB,KAAKyvB;AAMf,mBAJKzvB,KAAKksG,yBAA0BlsG,KAAKisG,oBAAqBjsG,KAAK0sG,sBAC/Dj9E,KAAMzvB,KAAKyvB,MAAM,YAAYA,IAC7BzvB,KAAK0sG,oBAAAA,OAEFj9E;UAAAA,GAOXs8E,GAASlxG,UAAUytG,gBAAgB,WAAA;AAE/B,mBADUtoG,KAAK4sG,OAAAA,EACJzjF,QAAQ,UAAU,GAAA;UAAA,GAOjC4iF,GAASlxG,UAAUwtG,gBAAgB,WAAA;AAC/B,gBAAIM,KAAa3oG,KAAKoqG,eAAAA;AAiBtB,mBAhBIpqG,KAAKksG,0BAELvD,KAAa3oG,KAAK6sG,4BAA4BlE,EAAAA,IAE9C3oG,KAAKmsG,YAAY1oE,WACjBklE,KAAa3oG,KAAK8sG,kBAAkBnE,EAAAA,IAEpC3oG,KAAKmsG,YAAYC,QACjBzD,KAAa3oG,KAAK+sG,eAAepE,EAAAA,IAEjC3oG,KAAKqsG,uBACL1D,KAAa3oG,KAAKgtG,oBAAoBrE,EAAAA,IAEtC3oG,KAAKssG,0BACL3D,KAAa3oG,KAAKitG,sBAAsBtE,EAAAA,IAErCA;UAAAA,GAaXoD,GAASlxG,UAAUiyG,oBAAoB,SAAUr9E,IAAAA;AAC7C,mBAAOA,GAAItG,QAAQnpB,KAAKusG,mBAAmB,EAAA;UAAA,GAU/CR,GAASlxG,UAAUkyG,iBAAiB,SAAUt9E,IAAAA;AAC1C,mBAAOA,GAAItG,QAAQnpB,KAAKwsG,gBAAgB,IAAA;UAAA,GAU5CT,GAASlxG,UAAUgyG,8BAA8B,SAAU7oE,IAAAA;AACvD,mBAAOA,GAAK7a,QAAQnpB,KAAKysG,uBAAuB,EAAA;UAAA,GAUpDV,GAASlxG,UAAUmyG,sBAAsB,SAAUrE,IAAAA;AAI/C,mBAHiD,QAA7CA,GAAWxxD,OAAOwxD,GAAWxqG,SAAS,CAAA,MACtCwqG,KAAaA,GAAWvtG,MAAM,GAAA,EAAI,IAE/ButG;UAAAA,GAYXoD,GAASlxG,UAAUoyG,wBAAwB,SAAUtE,IAAAA;AAIjD,gBAAIuE,KAA+BvE,GAC9Bx/E,QAAQ,SAAS,QAAA,EACjBA,QAAQ,SAAS,OAAA,EACjBA,QAAQ,SAAS,OAAA,EACjBA,QAAQ,SAAS,MAAA,EACjBA,QAAQ,SAAS,MAAA;AACtB,gBAAA;AAEI,qBAAOL,mBAAmBokF,EAAAA;YAAAA,SAEvBjyG,IAAP;AACI,qBAAOiyG;YAAAA;UAAAA,GAGRnB;QAAAA,EACT/B,EAAAA,GCtPEmD,KAMA,SAAiBlH,IAAAA;AAObjmG,eAAKiqG,uBAAuB,MAC5BjqG,KAAKmqG,aAAalE,GAAIkE;QAAAA,GCdnBiD,KAAW,YAIXC,KAAU,QAIVC,KAAa,QAIbC,KAAe,MAIfC,KAAU,QAKVC,KAAiB,mBAyBjBC,KAAgB,4sIACtBz5E,QAyCM05E,KAAwBD,KApCb,4eACjBz5E,SAwBiB,0hEACjBA,QAkCM25E,KAAoB,0dAC1B35E,QASM45E,KAAuBF,KAAwBC,IAU/CE,KAA+BH,KAAwBC,IAE9DG,KAAQ,SAASH,KAAoB,mBAAmBA,KAAoB,UAE5EI,KAAiB,MAAMF,KAA+B,UAAUA,KAA+B,gBAAgBA,KAA+B,OAC9IG,IAAoB,SAAUC,IAAAA;AAC9B,iBAAO,SAASF,KAAiB,SAASE;QAAAA,GAMnCC,KAAmB,SAAUD,IAAAA;AACpC,iBAAO,QAAQD,EAAkBC,EAAAA,IAAS,WAAWD,EAAkBC,KAAQ,CAAA,IAAK,cAAcH,KAAQ;QAAA,GAWnGK,MALkB,IAAI9iF,OAAO,MAAMwiF,KAA+B,YAAYA,KAA+B,MAAA,GAKvF,IAAIxiF,OAAO,MAAMwiF,KAA+B,GAAA,ICpKtEO,KAAW,wuVCWlBpvE,KAAqB,IAAI3T,OAAO,MAAMwiF,KAA+B,sBAAA,GACrE79E,KAAiB,IAAI3E,OAAO,MAAM+iF,GAASp6E,SAAS,GAAA,GASpDiL,KAA8B,SAAU4rE,IAAAA;AAExC,mBAASwD,KAAAA;AACL,gBAAItD,KAAmB,SAAXF,MAAmBA,GAAOlhG,MAAM5J,MAAMiC,SAAAA,KAAcjC;AAWhE,mBANAgrG,GAAMuD,qBAAqBtvE,IAK3B+rE,GAAMwD,iBAAiBv+E,IAChB+6E;UAAAA;AAoQX,iBAjRAN,GAAU4D,IAAcxD,EAAAA,GAkBxBwD,GAAazzG,UAAU4zG,eAAe,SAAUzqE,IAAAA;AAgB5C,qBAfImmE,KAAanqG,KAAKmqG,YAAYoE,KAAqBvuG,KAAKuuG,oBAAoBC,KAAiBxuG,KAAKwuG,gBAAgBE,KAAU,CAAA,GAAI1wG,KAAMgmC,GAAK7lC,QAAQwwG,KAAsB,IAAIC,MAE7KC,KAAoB,EACpB,GAAK,KACL,GAAK,KACL,GAAK,KACL,GAAK,KACL,GAAK,KACL,GAAK,IAAA,GAELC,KAAU,GAAGl1D,KAAQ,GAAuBm1D,KAAoBJ,IAK7DG,KAAU9wG,MAAK;AAClB,kBAAI4kD,KAAO5e,GAAKmT,OAAO23D,EAAAA;AAKvB,sBAAQl1D,IAAAA;gBACJ,KAAK;AACDo1D,kBAAAA,GAAqBpsD,EAAAA;AACrB;gBACJ,KAAK;AACDqsD,kBAAAA,GAAYjrE,GAAKmT,OAAO23D,KAAU,CAAA,GAAIlsD,EAAAA;AACtC;gBACJ,KAAK;AACDssD,kBAAAA,GAAetsD,EAAAA;AACf;gBACJ,KAAK;AACDusD,kBAAAA,GAAkBvsD,EAAAA;AAClB;gBACJ,KAAK;AACDwsD,kBAAAA,GAAYxsD,EAAAA;AACZ;gBACJ,KAAK;AACDysD,kBAAAA,GAAgBzsD,EAAAA;AAChB;gBACJ,KAAK;AACD0sD,kBAAAA,GAAkB1sD,EAAAA;AAClB;gBACJ,KAAK;AACD2sD,kBAAAA,GAAe3sD,EAAAA;AACf;gBACJ;AACIkjD,kBAAAA,GAAwBlsD,EAAAA;cAAAA;AAMhCk1D,cAAAA;YAAAA;AAMJ,mBAHAU,GAAAA,GAGOd;AAEP,qBAASM,GAAqBpsD,IAAAA;AACb,sBAATA,KACA6sD,GAAgB,CAAA,IAEXlB,GAAmBhjF,KAAKq3B,EAAAA,KAC7B6sD,GAAAA;YAAAA;AAOR,qBAASR,GAAYpsD,IAAUD,IAAAA;AACV,sBAAbC,KAEI0rD,GAAmBhjF,KAAKq3B,EAAAA,KACxBhJ,KAAQ,GACRm1D,KAAoB,IAAIH,GAAkBhE,GAASA,GAAS,CAAA,GAAImE,EAAAA,GAAoB,EAAEW,iBAAAA,KAAiB,CAAA,CAAA,KAMvGC,GAAAA,IAGCd,GAAkBhsD,EAAAA,MAAcD,OAIhC2rD,GAAmBhjF,KAAKq3B,EAAAA,IAG7BhJ,KAAQ,IAEM,QAATgJ,KAGLhJ,KAAQ,IAEM,QAATgJ,KAGLhJ,KAAQ,IAIR+1D,GAAAA;YAAAA;AAKR,qBAAST,GAAetsD,IAAAA;AACP,sBAATA,KACAhJ,KAAQ,IAEM,QAATgJ,KACLhJ,KAAQ,IAEH20D,GAAmBhjF,KAAKq3B,EAAAA,KAK7B+sD,GAAAA;YAAAA;AAIR,qBAASR,GAAkBvsD,IAAAA;AACV,sBAATA,MAKc,QAATA,KAFL+sD,GAAAA,IAOKpB,GAAmBhjF,KAAKq3B,EAAAA,IAC7BhJ,KAAQ,IAIR+1D,GAAAA;YAAAA;AAGR,qBAASP,GAAYxsD,IAAAA;AACbwrD,cAAAA,GAAoB7iF,KAAKq3B,EAAAA,IACzBhJ,KAAQ,IAIR+1D,GAAAA;YAAAA;AAGR,qBAASN,GAAgBzsD,IAAAA;AACR,sBAATA,KACAhJ,KAAQ,IAEM,QAATgJ,KACLhJ,KAAQ,IAEHw0D,GAAoB7iF,KAAKq3B,EAAAA,KAM9B4sD,GAAAA;YAAAA;AAGR,qBAASF,GAAkB1sD,IAAAA;AACV,sBAATA,MAAyB,QAATA,KAEhB4sD,GAAAA,IAEKpB,GAAoB7iF,KAAKq3B,EAAAA,IAC9BhJ,KAAQ,IAIR41D,GAAAA;YAAAA;AAGR,qBAASD,GAAe3sD,IAAAA;AACP,sBAATA,MAAyB,QAATA,KAEhB4sD,GAAAA,IAEKpB,GAAoB7iF,KAAKq3B,EAAAA,KAC9BhJ,KAAQ,GAKRm1D,KAAoB,IAAIH,GAAkBhE,GAASA,GAAS,CAAA,GAAImE,EAAAA,GAAoB,EAAEa,cAAAA,KAAc,CAAA,CAAA,KAIpGJ,GAAAA;YAAAA;AAGR,qBAASC,GAAgBI,IAAAA;AAAAA,yBACjBA,OAAuBA,KAAW,IACtCj2D,KAAQi2D,IACRd,KAAoB,IAAIH,GAAkB,EAAEj+F,KAAKm+F,GAAAA,CAAAA;YAAAA;AAErD,qBAASa,KAAAA;AACL/1D,cAAAA,KAAQ,GACRm1D,KAAoBJ;YAAAA;AAMxB,qBAASa,KAAAA;AACL,kBAAIT,GAAkBa,cAAc;AAChC,oBAAI1F,KAAclmE,GAAK5oC,MAAM2zG,GAAkBp+F,KAAKm+F,EAAAA;AAKhD,wBAAQvjF,KAAK2+E,EAAAA,MACbA,KAAcA,GAAY9uG,MAAM,GAAA,EAAI;AAExC,oBAAI00G,KAAef,GAAkBW,kBAC/BxF,GAAY9uG,MAAM,UAAU+C,MAAAA,IAC5B+rG;AAAAA,iBAiBV,SAA+B4F,IAAAA;AAC3B,sBACIC,MADkBD,GAAarhF,MAAM,GAAA,EAAKvd,IAAAA,KAAS,IACV4a,YAAAA;AAE7C,yBADiB0iF,GAAejjF,KAAKwkF,EAAAA;gBAAAA,GAlBXD,EAAAA,KACtBpB,GAAQ9+F,KAAK,IAAIxP,GAAW,EACxB+pG,YAAYA,IACZD,aAAaA,IACbnsG,QAAQgxG,GAAkBp+F,KAC1Bs6F,OAAO6E,GAAAA,CAAAA,CAAAA;cAAAA;AAInBH,cAAAA,GAAAA;YAAAA;UAAAA,GAcDrB;QAAAA,EACTnB,EAAAA,GAEEyB,KACA,SAA2B3I,IAAAA;AAAAA,qBACnBA,OAAkBA,KAAM,CAAA,IAC5BjmG,KAAK2Q,MAAAA,WAAMs1F,GAAIt1F,MAAoBs1F,GAAIt1F,MAAAA,IACvC3Q,KAAK0vG,kBAAAA,CAAAA,CAAoBzJ,GAAIyJ,iBAC7B1vG,KAAK4vG,eAAAA,CAAAA,CAAiB3J,GAAI2J;QAAAA,GClS9BzwE,KAAmC,WAAA;AACnC,mBAAS6wE,KAAAA;UAAAA;AAgJT,iBApHAA,GAAkBphD,UAAU,SAAUqhD,IAAUhE,IAAAA;AAC5C,mBAAA,EAAKA,MAAAA,CAAqBjsG,KAAKkwG,iBAAiBjE,EAAAA,KAC5CjsG,KAAKmwG,iCAAiCF,IAAUhE,EAAAA,KAC/CjsG,KAAKowG,sCAAsCH,IAAUhE,EAAAA,KAAAA,CACjDjsG,KAAKqwG,iBAAiBJ,EAAAA,KAC3BjwG,KAAKswG,qBAAqBL,EAAAA;UAAAA,GAKlCD,GAAkBK,mBAAmB,SAAUE,IAAAA;AAC3C,gBAAIC,KAAW,IAAIllF,OAAOtrB,KAAKywG,qBAAqBx8E,SAASj0B,KAAK0wG,QAAQz8E,MAAAA;AAE1E,mBAAqB,SADLs8E,GAAe1jF,MAAM2jF,EAAAA;UAAAA,GAGzCR,GAAkBM,uBAAuB,SAAUL,IAAAA;AAC/C,gBAAIU,KAAoBV;AAIxB,mBAHIjwG,KAAKywG,qBAAqBllF,KAAK0kF,EAAAA,MAC/BU,KAAoBV,GAASxhF,MAAM,KAAA,EAAO,CAAA,IAEvCkiF,GAAkBliF,MAAM,GAAA,EAAK,CAAA,EAAG7mB,QAAQ,IAAA,IAAA;UAAS,GAW5DooG,GAAkBE,mBAAmB,SAAUK,IAAAA;AAC3C,gBAAIK,KAAoBL,GAAe1jF,MAAM7sB,KAAK6wG,cAAAA,GAAiBC,KAAYF,MAAqBA,GAAkB,CAAA,EAAG9kF,YAAAA;AACzH,mBAAsB,kBAAdglF,MAA6C,gBAAdA;UAAAA,GAuB3Cd,GAAkBG,mCAAmC,SAAUF,IAAUhE,IAAAA;AACrE,mBAAA,EAAA,CAAUgE,MAAchE,MAAqBjsG,KAAKywG,qBAAqBllF,KAAK0gF,EAAAA,KAAAA,OAAsBgE,GAASroG,QAAQ,GAAA;UAAA,GAqBvHooG,GAAkBI,wCAAwC,SAAUH,IAAUhE,IAAAA;AAC1E,mBAAA,EAAA,CAAIgE,MAAAA,CAAYhE,QAAAA,CACJjsG,KAAKywG,qBAAqBllF,KAAK0gF,EAAAA,KAAAA,CAAsBjsG,KAAK+wG,8BAA8BxlF,KAAK0kF,EAAAA;UAAAA,GAY7GD,GAAkBS,uBAAuB,iCASzCT,GAAkBa,iBAAiB,6BAOnCb,GAAkBe,gCAAgC,IAAIzlF,OAAO,eAAeoiF,KAAgB,GAAA,GAO5FsC,GAAkBU,UAAU,4FACrBV;QAAAA,EAjJ2B,GTJlC5wE,MAKAyrE,KAAiB,IAAIv/E,OAAO,cAAcwiF,KAA+B,+CAAgDA,KAA+B,qCAAA,GACjJ,IAAIxiF,OAAO,CACd,OACA,KAPc,4FAQF2I,QACZk6E,GAAiB,CAAA,GACjB,KACA,KACA,KACA,SAZO,YAaEl6E,QACTk6E,GAAiB,CAAA,GACjB,KACA,KACA,KACA,SACAA,GAAiB,EAAA,IAAM,OACvBE,GAASp6E,QACT,UAAU45E,KAAuB,MACjC,KACA,KACA,gBACA,QAAQhD,GAAe52E,SAAS,IAAA,EAClChU,KAAK,EAAA,GAAK,IAAA,IAEZ+wF,KAAiB,IAAI1lF,OAAO,MAAMwiF,KAA+B,GAAA,GASjExuE,KAA4B,SAAUwrE,IAAAA;AAOtC,mBAASmG,GAAWhL,IAAAA;AAChB,gBAAI+E,KAAQF,GAAO1xG,KAAK4G,MAAMimG,EAAAA,KAAQjmG;AAqEtC,mBA/DAgrG,GAAMmB,cAAc,EAAE1oE,QAAAA,MAAc2oE,KAAAA,KAAK,GAKzCpB,GAAMqB,qBAAAA,MAKNrB,GAAMsB,wBAAAA,MAmCNtB,GAAMkG,eAAe9xE,IAcrB4rE,GAAMgG,iBAAiBA,IACvBhG,GAAMmB,cAAclG,GAAIkG,aACxBnB,GAAMqB,qBAAqBpG,GAAIoG,oBAC/BrB,GAAMsB,wBAAwBrG,GAAIqG,uBAC3BtB;UAAAA;AAoLX,iBAhQAN,GAAUuG,IAAYnG,EAAAA,GAiFtBmG,GAAWp2G,UAAU4zG,eAAe,SAAUzqE,IAAAA;AAsE1C,qBArEoNnX,IAAhNqkF,KAAelxG,KAAKkxG,cAAc/E,KAAcnsG,KAAKmsG,aAAaE,KAAqBrsG,KAAKqsG,oBAAoBC,KAAwBtsG,KAAKssG,uBAAuBnC,KAAanqG,KAAKmqG,YAAYuE,KAAU,CAAA,GAC5MyC,KAAU,WAAA;AACV,kBAAIC,KAAWvkF,GAAM,CAAA,GAAIwkF,KAAiBxkF,GAAM,CAAA,GAAIykF,KAAczkF,GAAM,CAAA,GAAI0kF,KAA2B1kF,GAAM,CAAA,GAE7G2kF,KAA2B3kF,GAAM,CAAA,GAAI9uB,KAAS8uB,GAAMjuB,OAAOstG,KAAwBqF,MAA4BC,IAA0B3uD,KAAW7e,GAAKmT,OAAOp5C,KAAS,CAAA;AACzK,kBAAA,CAAKohC,GAAkByvB,QAAQwiD,IAAUC,EAAAA;AACrC,uBAAO;AAIX,kBAAItzG,KAAS,KAAkB,QAAb8kD;AACd,uBAAO;AAMX,kBAAI9kD,KAAS,KAAKmuG,MAAyBuF,GAAOT,eAAezlF,KAAKs3B,EAAAA;AAClE,uBAAO;AAWX,kBANI,MAAMt3B,KAAK6lF,EAAAA,MACXA,KAAWA,GAAS5iF,OAAO,GAAG4iF,GAASjzG,SAAS,CAAA,IAKhDszG,GAAOC,+BAA+BN,EAAAA;AACtCA,gBAAAA,KAAWA,GAAS5iF,OAAO,GAAG4iF,GAASjzG,SAAS,CAAA;mBAE/C;AAED,oBAAI4zC,KAAM0/D,GAAOE,4BAA4BP,IAAUC,EAAAA;AACnDt/D,gBAAAA,KAAAA,OACAq/D,KAAWA,GAAS5iF,OAAO,GAAGujB,EAAAA;cAAAA;AAQtC,kBAAI6/D,KAAoB,CAAC,WAAW,UAAA,EAAYzxF,KAAK,SAAU0xF,IAAAA;AAAgB,uBAAA,CAAA,CAASR,MAAAA,OAAkBA,GAAezpG,QAAQiqG,EAAAA;cAAAA,CAAAA;AACjI,kBAAID,IAAmB;AAInB,oBAAIE,KAAqBV,GAASxpG,QAAQgqG,EAAAA;AAC1CR,gBAAAA,KAAWA,GAAS5iF,OAAOsjF,EAAAA,GAC3BT,KAAiBA,GAAe7iF,OAAOsjF,EAAAA,GACvC/zG,MAAkB+zG;cAAAA;AAEtB,kBAAI9F,KAAeqF,KAAiB,WAAYC,KAAc,QAAQ,OAAQrF,KAAAA,CAAAA,CAAqBoF;AACnG3C,cAAAA,GAAQ9+F,KAAK,IAAI0Y,GAAS,EACtB6hF,YAAYA,IACZD,aAAakH,IACbrzG,QAAQA,IACRiuG,cAAcA,IACdv8E,KAAK2hF,IACLnF,kBAAkBA,IAClBC,uBAAAA,CAAAA,CAAyBA,IACzBC,aAAaA,IACbE,oBAAoBA,IACpBC,uBAAuBA,GAAAA,CAAAA,CAAAA;YAAAA,GAG3BmF,KAASzxG,MACgC,UAArC6sB,KAAQqkF,GAAaroF,KAAKmb,EAAAA;AAC9BmtE,cAAAA,GAAAA;AAEJ,mBAAOzC;UAAAA,GA4BXuC,GAAWp2G,UAAU62G,iCAAiC,SAAUN,IAAAA;AAC5D,gBACIW,IADAC,KAAUZ,GAASj6D,OAAOi6D,GAASjzG,SAAS,CAAA;AAEhD,gBAAgB,QAAZ6zG;AACAD,cAAAA,KAAY;qBAEK,QAAZC;AACLD,cAAAA,KAAY;iBAEX;AAAA,kBAAgB,QAAZC;AAIL,uBAAA;AAHAD,cAAAA,KAAY;YAAA;AAShB,qBADIE,KAAgB,GACXh5G,KAAI,GAAG+E,KAAMozG,GAASjzG,SAAS,GAAGlF,KAAI+E,IAAK/E,MAAK;AACrD,kBAAI2pD,KAAOwuD,GAASj6D,OAAOl+C,EAAAA;AACvB2pD,cAAAA,OAASmvD,KACTE,OAEKrvD,OAASovD,OACdC,KAAgBh0G,KAAKC,IAAI+zG,KAAgB,GAAG,CAAA;YAAA;AAQpD,mBAAsB,MAAlBA;UAAAA,GAoBRhB,GAAWp2G,UAAU82G,8BAA8B,SAAU1B,IAAUoB,IAAAA;AACnE,gBAAA,CAAKpB;AACD,qBAAA;AAEJ,gBAAIlyG,KAAS;AACTszG,YAAAA,OACAtzG,KAASkyG,GAASroG,QAAQ,GAAA,GAC1BqoG,KAAWA,GAAS70G,MAAM2C,EAAAA;AAE9B,gBACI4pB,KADK,IAAI2D,OAAO,iBAAmBwiF,KAA+B,SAASA,KAA+B,WAAWA,KAA+B,KAAA,EAC3IjlF,KAAKonF,EAAAA;AAClB,mBAAY,SAARtoF,KAAAA,MAGJ5pB,MAAU4pB,GAAI,CAAA,EAAGxpB,QACjB8xG,KAAWA,GAAS70G,MAAMusB,GAAI,CAAA,EAAGxpB,MAAAA,GAC7B,uBAAuBotB,KAAK0kF,EAAAA,IACrBlyG,KAAAA;UAEH,GAELkzG;QAAAA,EACT9D,EAAAA,GU3SE5tE,KAAe,IAAIjU,OAAO,QAAQwiF,KAA+B,kBAAkBA,KAA+B,MAAM,GAAA,GACxHtuE,KAAmB,IAAIlU,OAAO,OAAOwiF,KAA+B,GAAA,GAOpE,IAAgC,SAAUhD,IAAAA;AAO1C,mBAASoH,GAAejM,IAAAA;AACpB,gBAAI+E,KAAQF,GAAO1xG,KAAK4G,MAAMimG,EAAAA,KAAQjmG;AA4BtC,mBArBAgrG,GAAMI,cAAc,WASpBJ,GAAMkG,eAAe3xE,IAUrByrE,GAAMmH,mBAAmB3yE,IACzBwrE,GAAMI,cAAcnF,GAAImF,aACjBJ;UAAAA;AAyBX,iBA5DAN,GAAUwH,IAAgBpH,EAAAA,GAwC1BoH,GAAer3G,UAAU4zG,eAAe,SAAUzqE,IAAAA;AAE9C,qBAD4JnX,IAAxJqkF,KAAelxG,KAAKkxG,cAAciB,KAAmBnyG,KAAKmyG,kBAAkB/G,KAAcprG,KAAKorG,aAAajB,KAAanqG,KAAKmqG,YAAYuE,KAAU,CAAA,GAC3G,UAArC7hF,KAAQqkF,GAAaroF,KAAKmb,EAAAA,MAAiB;AAC/C,kBAAIjmC,KAAS8uB,GAAMjuB,OAAOikD,KAAW7e,GAAKmT,OAAOp5C,KAAS,CAAA;AAI1D,kBAAe,MAAXA,MAAgBo0G,GAAiB5mF,KAAKs3B,EAAAA,GAAW;AACjD,oBAAIqnD,KAAcr9E,GAAM,CAAA,GAAIw+E,KAAUx+E,GAAM,CAAA,EAAGzxB,MAAM,CAAA;AACrDszG,gBAAAA,GAAQ9+F,KAAK,IAAIgvB,GAAa,EAC1BurE,YAAYA,IACZD,aAAaA,IACbnsG,QAAQA,IACRqtG,aAAaA,IACbC,SAASA,GAAAA,CAAAA,CAAAA;cAAAA;YAAAA;AAIrB,mBAAOqD;UAAAA,GAEJwD;QAAAA,EACT/E,EAAAA,GChEEiF,KAAoB,IAAI9mF,OAJL,uRAI6B2I,SAAS,MAFvC,qIAE6DA,QAAQ,GAAA,GAUvFyL,KAA8B,SAAUorE,IAAAA;AAExC,mBAASuH,KAAAA;AACL,gBAAIrH,KAAmB,SAAXF,MAAmBA,GAAOlhG,MAAM5J,MAAMiC,SAAAA,KAAcjC;AAoBhE,mBADAgrG,GAAMkG,eAAekB,IACdpH;UAAAA;AA2BX,iBAjDAN,GAAU2H,IAAcvH,EAAAA,GA2BxBuH,GAAax3G,UAAU4zG,eAAe,SAAUzqE,IAAAA;AAE5C,qBADkFnX,IAA9EqkF,KAAelxG,KAAKkxG,cAAc/G,KAAanqG,KAAKmqG,YAAYuE,KAAU,CAAA,GACjC,UAArC7hF,KAAQqkF,GAAaroF,KAAKmb,EAAAA,MAAiB;AAE/C,kBAAIkmE,KAAcr9E,GAAM,CAAA,GAAIylF,KAAcpI,GAAY/gF,QAAQ,cAAc,EAAA,GAC5EyiF,KAAAA,EAAAA,CAAc/+E,GAAM,CAAA,KAAA,CAAMA,GAAM,CAAA,IAChCqvE,KAAwB,KAAfrvE,GAAMjuB,QAAa,KAAKolC,GAAKxV,OAAO3B,GAAMjuB,QAAQ,GAAG,CAAA,GAAIoS,KAAQgzB,GAAKxV,OAAO3B,GAAMjuB,QAAQsrG,GAAY/rG,QAAQ,CAAA,GAAIo0G,KAAAA,CAAgBrW,GAAOrvE,MAAM,IAAA,KAAA,CAAU7b,GAAM6b,MAAM,IAAA;AAC3K7sB,mBAAKwyG,UAAU3lF,GAAM,CAAA,CAAA,KAAO7sB,KAAKwyG,UAAUtI,EAAAA,KAAgBqI,MAC3D7D,GAAQ9+F,KAAK,IAAInK,GAAW,EACxB0kG,YAAYA,IACZD,aAAaA,IACbnsG,QAAQ8uB,GAAMjuB,OACdgyC,QAAQ0hE,IACR1G,UAAUA,GAAAA,CAAAA,CAAAA;YAAAA;AAItB,mBAAO8C;UAAAA,GAEX2D,GAAax3G,UAAU23G,YAAY,SAAUxuE,IAAAA;AACzC,mBAAOspE,GAAW/hF,KAAKyY,EAAAA;UAAAA,GAEpBquE;QAAAA,EACTlF,EAAAA,GCnEEsF,KAAe,IAAInnF,OAAO,QAAQwiF,KAA+B,iBAAiBA,KAA+B,MAAM,GAAA,GACvH4E,KAAiB,IAAIpnF,OAAO,SAASwiF,KAA+B,iBAAiBA,KAA+B,MAAM,GAAA,GAC1H6E,KAAkB,IAAIrnF,OAAO,UAAUwiF,KAA+B,kBAAkBA,KAA+B,MAAM,GAAA,GAC7H,KAAmB,IAAIxiF,OAAO,OAAOwiF,KAA+B,GAAA,GAOpE,KAAgC,SAAUhD,IAAAA;AAO1C,mBAAS8H,GAAe3M,IAAAA;AACpB,gBAAI+E,KAAQF,GAAO1xG,KAAK4G,MAAMimG,EAAAA,KAAQjmG;AAiCtC,mBAzBAgrG,GAAMI,cAAc,WASpBJ,GAAM6H,iBAAiB,EACnB,SAAWJ,IACX,WAAaC,IACb,YAAcC,GAAAA,GAWlB3H,GAAMmH,mBAAmB,IACzBnH,GAAMI,cAAcnF,GAAImF,aACjBJ;UAAAA;AA6BX,iBArEAN,GAAUkI,IAAgB9H,EAAAA,GA6C1B8H,GAAe/3G,UAAU4zG,eAAe,SAAUzqE,IAAAA;AAC9C,gBAAgLnX,IAA5Ku+E,KAAcprG,KAAKorG,aAAa8F,KAAelxG,KAAK6yG,eAAe7yG,KAAKorG,WAAAA,GAAc+G,KAAmBnyG,KAAKmyG,kBAAkBhI,KAAanqG,KAAKmqG,YAAYuE,KAAU,CAAA;AAC5K,gBAAA,CAAKwC;AACD,qBAAOxC;AAEX,mBAA6C,UAArC7hF,KAAQqkF,GAAaroF,KAAKmb,EAAAA,MAAiB;AAC/C,kBAAIjmC,KAAS8uB,GAAMjuB,OAAOikD,KAAW7e,GAAKmT,OAAOp5C,KAAS,CAAA;AAI1D,kBAAe,MAAXA,MAAgBo0G,GAAiB5mF,KAAKs3B,EAAAA,GAAW;AACjD,oBAAIqnD,KAAcr9E,GAAM,CAAA,EAAG1D,QAAQ,SAAS,EAAA,GAC5CsiF,KAAUvB,GAAY9uG,MAAM,CAAA;AAC5BszG,gBAAAA,GAAQ9+F,KAAK,IAAIqb,GAAa,EAC1Bk/E,YAAYA,IACZD,aAAaA,IACbnsG,QAAQA,IACRqtG,aAAaA,IACbK,SAASA,GAAAA,CAAAA,CAAAA;cAAAA;YAAAA;AAIrB,mBAAOiD;UAAAA,GAEJkE;QAAAA,EACTzF,EAAAA;AClCK,iBAAS2F,GAAUryC,IAAMsyC,IAAAA;AAS5B,mBAkhBQ/uE,IA1hBJgvE,KAAYD,GAAGC,WAAWC,KAAaF,GAAGE,YAAYC,KAASH,GAAGG,QAAQC,KAAYJ,GAAGI,WAAWC,KAAYL,GAAGK,WACnHC,KAAe,IAAIC,MACnBxE,KAAU,GAAG9wG,KAAMyiE,GAAKtiE,QAAQy7C,KAAQ,GAAc25D,KAAiB,GAC3EC,KAAaH,IAKNvE,KAAU9wG,MAAK;AAClB,gBAAI4kD,KAAO6d,GAAKtpB,OAAO23D,EAAAA;AAMvB,oBAAQl1D,IAAAA;cACJ,KAAK;AACD65D,gBAAAA,GAAU7wD,EAAAA;AACV;cACJ,KAAK;AACD8wD,gBAAAA,GAAa9wD,EAAAA;AACb;cACJ,KAAK;AACD+wD,gBAAAA,GAAgB/wD,EAAAA;AAChB;cACJ,KAAK;AACDgxD,gBAAAA,GAAahxD,EAAAA;AACb;cACJ,KAAK;AACDixD,gBAAAA,GAAyBjxD,EAAAA;AACzB;cACJ,KAAK;AACDkxD,gBAAAA,GAAmBlxD,EAAAA;AACnB;cACJ,KAAK;AACDmxD,gBAAAA,GAAwBnxD,EAAAA;AACxB;cACJ,KAAK;AACDoxD,gBAAAA,GAA0BpxD,EAAAA;AAC1B;cACJ,KAAK;AACDqxD,gBAAAA,GAAgCrxD,EAAAA;AAChC;cACJ,KAAK;AACDsxD,gBAAAA,GAAgCtxD,EAAAA;AAChC;cACJ,KAAK;AACDuxD,gBAAAA,GAA4BvxD,EAAAA;AAC5B;cACJ,KAAK;AACDwxD,gBAAAA,GAA+BxxD,EAAAA;AAC/B;cACJ,KAAK;AACDyxD,gBAAAA,GAAyBzxD,EAAAA;AACzB;cACJ,KAAK;AACD0xD,gBAAAA,GAA2B1xD,EAAAA;AAC3B;cACJ,KAAK;AACD2xD,gBAAAA,GAAkB3xD,EAAAA;AAClB;cACJ,KAAK;AACD4xD,gBAAAA,GAAsB5xD,EAAAA;AACtB;cACJ,KAAK;AACD6xD,gBAAAA,GAAa7xD,EAAAA;AACb;cACJ,KAAK;AACD8xD,gBAAAA,GAAoB9xD,EAAAA;AACpB;cACJ,KAAK;AACD+xD,gBAAAA,GAAgB/xD,EAAAA;AAChB;cACJ,KAAK;AACDgyD,gBAAAA,GAAoBhyD,EAAAA;AACpB;cACJ,KAAK;AACDiyD,gBAAAA,GAAajyD,EAAAA;AACb;cACJ;AACIkjD,gBAAAA,GAAwBlsD,EAAAA;YAAAA;AAOhCk1D,YAAAA;UAAAA;AASJ,mBAAS2E,GAAU7wD,IAAAA;AACF,oBAATA,MACAkyD,GAAAA;UAAAA;AAKR,mBAASpB,GAAa9wD,IAAAA;AACL,oBAATA,KACAhJ,KAAQ,KAEM,QAATgJ,MACLhJ,KAAQ,GACR45D,KAAa,IAAIF,GAAW1I,GAASA,GAAS,CAAA,GAAI4I,EAAAA,GAAa,EAAEuB,WAAAA,KAAW,CAAA,CAAA,KAE9D,QAATnyD,KAELkyD,GAAAA,IAEK1H,GAAS7hF,KAAKq3B,EAAAA,KAEnBhJ,KAAQ,GACR45D,KAAa,IAAIF,GAAW1I,GAASA,GAAS,CAAA,GAAI4I,EAAAA,GAAa,EAAEwB,WAAAA,KAAW,CAAA,CAAA,MAI5Ep7D,KAAQ,GACR45D,KAAaH;UAAAA;AAMrB,mBAASO,GAAahxD,IAAAA;AACd2qD,YAAAA,GAAahiF,KAAKq3B,EAAAA,KAClB4wD,KAAa,IAAIF,GAAW1I,GAASA,GAAS,CAAA,GAAI4I,EAAAA,GAAa,EAAEh6G,MAAMy7G,GAAAA,EAAAA,CAAAA,CAAAA,GACvEr7D,KAAQ,KAEM,QAATgJ,KAELkyD,GAAAA,IAEc,QAATlyD,MACL4wD,KAAa,IAAIF,GAAW1I,GAASA,GAAS,CAAA,GAAI4I,EAAAA,GAAa,EAAEh6G,MAAMy7G,GAAAA,EAAAA,CAAAA,CAAAA,GACvEr7D,KAAQ,MAEM,QAATgJ,MACL4wD,KAAa,IAAIF,GAAW1I,GAASA,GAAS,CAAA,GAAI4I,EAAAA,GAAa,EAAEh6G,MAAMy7G,GAAAA,EAAAA,CAAAA,CAAAA,GACvEC,GAAAA,KAEM9H,GAAS7hF,KAAKq3B,EAAAA,KAAUyqD,GAAQ9hF,KAAKq3B,EAAAA,KAAkB,QAATA,MAGpDuyD,GAAAA;UAAAA;AAQR,mBAASxB,GAAgB/wD,IAAAA;AACR,oBAATA,KACAuyD,GAAAA,IAEK/H,GAAS7hF,KAAKq3B,EAAAA,IACnBhJ,KAAQ,IAIRu7D,GAAAA;UAAAA;AAIR,mBAAStB,GAAyBjxD,IAAAA;AAC1B2qD,YAAAA,GAAahiF,KAAKq3B,EAAAA,MAGJ,QAATA,KACLhJ,KAAQ,KAEM,QAATgJ,KACLsyD,GAAAA,IAEc,QAATtyD,KAELkyD,GAAAA,IAEc,QAATlyD,MAAgB4qD,GAAQjiF,KAAKq3B,EAAAA,KAAS6qD,GAAeliF,KAAKq3B,EAAAA,IAI/DuyD,GAAAA,IAIAv7D,KAAQ;UAAA;AAIhB,mBAASk6D,GAAmBlxD,IAAAA;AACpB2qD,YAAAA,GAAahiF,KAAKq3B,EAAAA,IAClBhJ,KAAQ,IAEM,QAATgJ,KACLhJ,KAAQ,KAEM,QAATgJ,KACLhJ,KAAQ,IAEM,QAATgJ,KACLsyD,GAAAA,IAEc,QAATtyD,KAELkyD,GAAAA,IAEKtH,GAAQjiF,KAAKq3B,EAAAA,KAIlBuyD,GAAAA;UAAAA;AAOR,mBAASpB,GAAwBnxD,IAAAA;AACzB2qD,YAAAA,GAAahiF,KAAKq3B,EAAAA,MAGJ,QAATA,KACLhJ,KAAQ,KAEM,QAATgJ,KACLhJ,KAAQ,IAEM,QAATgJ,KACLsyD,GAAAA,IAEc,QAATtyD,KAELkyD,GAAAA,IAEKtH,GAAQjiF,KAAKq3B,EAAAA,IAIlBuyD,GAAAA,IAIAv7D,KAAQ;UAAA;AAIhB,mBAASo6D,GAA0BpxD,IAAAA;AAC3B2qD,YAAAA,GAAahiF,KAAKq3B,EAAAA,MAGJ,QAATA,KACLhJ,KAAQ,IAEM,QAATgJ,KACLhJ,KAAQ,IAEH,QAAQruB,KAAKq3B,EAAAA,IAGlBuyD,GAAAA,IAEc,QAATvyD,KAELkyD,GAAAA,IAIAl7D,KAAQ;UAAA;AAIhB,mBAASq6D,GAAgCrxD,IAAAA;AACxB,oBAATA,OACAhJ,KAAQ;UAAA;AAOhB,mBAASs6D,GAAgCtxD,IAAAA;AACxB,oBAATA,OACAhJ,KAAQ;UAAA;AAOhB,mBAASu6D,GAA4BvxD,IAAAA;AAC7B2qD,YAAAA,GAAahiF,KAAKq3B,EAAAA,IAClBhJ,KAAQ,IAEM,QAATgJ,KACLsyD,GAAAA,IAEc,QAATtyD,MAELkyD,GAAAA;UAAAA;AAOR,mBAASV,GAA+BxxD,IAAAA;AAChC2qD,YAAAA,GAAahiF,KAAKq3B,EAAAA,IAClBhJ,KAAQ,IAEM,QAATgJ,KACLhJ,KAAQ,KAEM,QAATgJ,KACLsyD,GAAAA,IAEc,QAATtyD,KAELkyD,GAAAA,KAMAl7D,KAAQ,GAkOZk1D;UAAAA;AA3NJ,mBAASuF,GAAyBzxD,IAAAA;AACjB,oBAATA,MACA4wD,KAAa,IAAIF,GAAW1I,GAASA,GAAS,CAAA,GAAI4I,EAAAA,GAAa,EAAEuB,WAAAA,KAAW,CAAA,CAAA,GAC5EG,GAAAA,KAGAt7D,KAAQ;UAAA;AAKhB,mBAAS06D,GAA2B1xD,IAAAA;AACA,qBAA5B6d,GAAKjyC,OAAOsgF,IAAS,CAAA,KACrBA,MAAW,GACX0E,KAAa,IAAIF,GAAW1I,GAASA,GAAS,CAAA,GAAI4I,EAAAA,GAAa,EAAEtzG,MAAM,UAAA,CAAA,CAAA,GACvE05C,KAAQ,MAEuC,cAA1C6mB,GAAKjyC,OAAOsgF,IAAS,CAAA,EAAGviE,YAAAA,KAC7BuiE,MAAW,GACX0E,KAAa,IAAIF,GAAW1I,GAASA,GAAS,CAAA,GAAI4I,EAAAA,GAAa,EAAEtzG,MAAM,UAAA,CAAA,CAAA,GACvE05C,KAAQ,MAQRu7D,GAAAA;UAAAA;AAKR,mBAASZ,GAAkB3xD,IAAAA;AACV,oBAATA,KAEAhJ,KAAQ,KAEM,QAATgJ,KAILuyD,GAAAA,IAIAv7D,KAAQ;UAAA;AAKhB,mBAAS46D,GAAsB5xD,IAAAA;AACd,oBAATA,KAEAhJ,KAAQ,KAEM,QAATgJ,KAILuyD,GAAAA,IAIAv7D,KAAQ;UAAA;AAKhB,mBAAS66D,GAAa7xD,IAAAA;AACL,oBAATA,OACAhJ,KAAQ;UAAA;AAShB,mBAAS86D,GAAoB9xD,IAAAA;AAErBhJ,YAAAA,KADS,QAATgJ,KACQ,KAIA;UAAA;AAMhB,mBAAS+xD,GAAgB/xD,IAAAA;AACR,oBAATA,KACAsyD,GAAAA,IAEc,QAATtyD,KACLhJ,KAAQ,KAEM,QAATgJ,OAMLhJ,KAAQ;UAAA;AAKhB,mBAASg7D,GAAoBhyD,IAAAA;AACZ,oBAATA,KAGAhJ,KAAQ,KAEM,QAATgJ,KAELsyD,GAAAA,IAKAt7D,KAAQ;UAAA;AAahB,mBAASi7D,GAAajyD,IAAAA;AACL,oBAATA,KACAsyD,GAAAA,IAEc,QAATtyD,MACLkyD,GAAAA;UAAAA;AAaR,mBAASK,KAAAA;AACLv7D,YAAAA,KAAQ,GACR45D,KAAaH;UAAAA;AAUjB,mBAASyB,KAAAA;AACLl7D,YAAAA,KAAQ,GACR45D,KAAa,IAAIF,GAAW,EAAE3iG,KAAKm+F,GAAAA,CAAAA;UAAAA;AAMvC,mBAASoG,KAAAA;AACL,gBAAIE,KAAgB30C,GAAKrlE,MAAMm4G,IAAgBC,GAAW7iG,GAAAA;AACtDykG,YAAAA,MAIAlC,GAAOkC,IAAe7B,EAAAA,GAEF,cAApBC,GAAWtzG,OACXizG,GAAUK,GAAW7iG,GAAAA,IAEI,cAApB6iG,GAAWtzG,OAChBkzG,GAAUI,GAAW7iG,GAAAA,KAGjB6iG,GAAWwB,aACXhC,GAAUQ,GAAWh6G,MAAMg6G,GAAW7iG,GAAAA,GAEtC6iG,GAAWuB,aACX9B,GAAWO,GAAWh6G,MAAMg6G,GAAW7iG,GAAAA,IAI/CwkG,GAAAA,GACA5B,KAAiBzE,KAAU;UAAA;AAW/B,mBAASmG,KAAAA;AACL,gBAAII,KAAW7B,GAAW7iG,OAAO6iG,GAAWuB,YAAY,IAAI;AAC5D,mBAAOt0C,GAAKrlE,MAAMi6G,IAAUvG,EAAAA,EAAShjF,YAAAA;UAAAA;AA3crCynF,UAAAA,KAAiBzE,OAicb9qE,KAAOy8B,GAAKrlE,MAAMm4G,IAAgBzE,EAAAA,GACtCoE,GAAOlvE,IAAMuvE,EAAAA,GACbA,KAAiBzE,KAAU;QAAA;AAmBnC,YAAIwE,KACA,SAAoBrN,IAAAA;AAAAA,qBACZA,OAAkBA,KAAM,CAAA,IAC5BjmG,KAAK2Q,MAAAA,WAAMs1F,GAAIt1F,MAAoBs1F,GAAIt1F,MAAAA,IACvC3Q,KAAKE,OAAO+lG,GAAI/lG,QAAQ,OACxBF,KAAKxG,OAAOysG,GAAIzsG,QAAQ,IACxBwG,KAAKg1G,YAAAA,CAAAA,CAAc/O,GAAI+O,WACvBh1G,KAAK+0G,YAAAA,CAAAA,CAAc9O,GAAI8O;QAAAA,GC1mBhB,KCqHiB,WAAA;AAM5B,mBAASO,GAAWrP,IAAAA;AAAAA,uBACZA,OAAkBA,KAAM,CAAA,IAM5BjmG,KAAKm6C,UAAUm7D,GAAWn7D,SAoC1Bn6C,KAAKu1G,OAAO,CAAA,GAOZv1G,KAAKirG,QAAAA,MAOLjrG,KAAKw1G,QAAAA,MAaLx1G,KAAKqrG,UAAAA,OAaLrrG,KAAKyrG,UAAAA,OAMLzrG,KAAKgoG,YAAAA,MAkCLhoG,KAAKmsG,cAAc,EAAE1oE,QAAAA,MAAc2oE,KAAAA,KAAK,GAUxCpsG,KAAKqsG,qBAAAA,MAULrsG,KAAKssG,wBAAAA,MAgDLtsG,KAAKioG,WAAW,EAAE9pG,QAAQ,GAAGmwB,UAAU,MAAA,GAiBvCtuB,KAAK64D,YAAY,IAkBjB74D,KAAKy1G,YAAY,MAQjBz1G,KAAK8X,UAAAA,QAeL9X,KAAK01G,eAAAA,OAUL11G,KAAK21G,WAAW,MAQhB31G,KAAKmqG,aAAa,MAGlBnqG,KAAKu1G,OAAOv1G,KAAK41G,iBAAiB3P,GAAIsP,IAAAA,GACtCv1G,KAAKirG,QAA6B,aAAA,OAAdhF,GAAIgF,QAAsBhF,GAAIgF,QAAQjrG,KAAKirG,OAC/DjrG,KAAKw1G,QAA6B,aAAA,OAAdvP,GAAIuP,QAAsBvP,GAAIuP,QAAQx1G,KAAKw1G,OAC/Dx1G,KAAKqrG,UAAUpF,GAAIoF,WAAWrrG,KAAKqrG,SACnCrrG,KAAKyrG,UAAUxF,GAAIwF,WAAWzrG,KAAKyrG,SACnCzrG,KAAKgoG,YAAqC,aAAA,OAAlB/B,GAAI+B,YAA0B/B,GAAI+B,YAAYhoG,KAAKgoG,WAC3EhoG,KAAKmsG,cAAcnsG,KAAK61G,wBAAwB5P,GAAIkG,WAAAA,GACpDnsG,KAAKqsG,qBAAuD,aAAA,OAA3BpG,GAAIoG,qBAAmCpG,GAAIoG,qBAAqBrsG,KAAKqsG,oBACtGrsG,KAAKssG,wBAA6D,aAAA,OAA9BrG,GAAIqG,wBAAsCrG,GAAIqG,wBAAwBtsG,KAAKssG,uBAC/GtsG,KAAK01G,eAAezP,GAAIyP,gBAAAA;AAExB,gBAAIjK,KAAUzrG,KAAKyrG;AACnB,gBAAA,UAAIA,MAAiC,cAAZA,MAAqC,gBAAZA,MAAuC,iBAAZA;AACzE,oBAAM,IAAI/kG,MAAM,kCAAA;AAGpB,gBAAI2kG,KAAUrrG,KAAKqrG;AACnB,gBAAA,UAAIA,MAAiC,cAAZA,MAAqC,eAAZA,MAAsC,gBAAZA;AACxE,oBAAM,IAAI3kG,MAAM,kCAAA;AAEpB1G,iBAAKioG,WAAWjoG,KAAK81G,qBAAqB7P,GAAIgC,QAAAA,GAC9CjoG,KAAK64D,YAAYotC,GAAIptC,aAAa74D,KAAK64D,WACvC74D,KAAKy1G,YAAYxP,GAAIwP,aAAaz1G,KAAKy1G,WACvCz1G,KAAK8X,UAAUmuF,GAAInuF,WAAW9X;UAAAA;AAielC,iBAzcAs1G,GAAWpa,OAAO,SAAU6a,IAAY/hF,IAAAA;AAEpC,mBADiB,IAAIshF,GAAWthF,EAAAA,EACdknE,KAAK6a,EAAAA;UAAAA,GAmC3BT,GAAWtqF,QAAQ,SAAU+qF,IAAY/hF,IAAAA;AAErC,mBADiB,IAAIshF,GAAWthF,EAAAA,EACdhJ,MAAM+qF,EAAAA;UAAAA,GAY5BT,GAAWz6G,UAAU+6G,mBAAmB,SAAUL,IAAAA;AAG9C,mBAFY,QAARA,OACAA,KAAAA,OACgB,aAAA,OAATA,KACA,EAAES,eAAeT,IAAMU,YAAYV,IAAMW,YAAYX,GAAAA,IAGrD,EACHS,eAA6C,aAAA,OAAvBT,GAAKS,iBAA8BT,GAAKS,eAC9DC,YAAuC,aAAA,OAApBV,GAAKU,cAA2BV,GAAKU,YACxDC,YAAuC,aAAA,OAApBX,GAAKW,cAA2BX,GAAKW,WAAAA;UAAAA,GAcpEZ,GAAWz6G,UAAUg7G,0BAA0B,SAAU1J,IAAAA;AAGrD,mBAFmB,QAAfA,OACAA,KAAAA,OACuB,aAAA,OAAhBA,KACA,EAAE1oE,QAAQ0oE,IAAaC,KAAKD,GAAAA,IAG5B,EACH1oE,QAAsC,aAAA,OAAvB0oE,GAAY1oE,UAAuB0oE,GAAY1oE,QAC9D2oE,KAAgC,aAAA,OAApBD,GAAYC,OAAoBD,GAAYC,IAAAA;UAAAA,GAcpEkJ,GAAWz6G,UAAUi7G,uBAAuB,SAAU7N,IAAAA;AAClD,mBAAwB,YAAA,OAAbA,KACA,EAAE9pG,QAAQ8pG,IAAU35E,UAAU,MAAA,IxBzhB1C,SAAkB6nF,IAAMjnE,IAAAA;AAC3B,uBAASxV,MAAQwV;AACTA,gBAAAA,GAAIp0C,eAAe4+B,EAAAA,KAAAA,WAASy8E,GAAKz8E,EAAAA,MACjCy8E,GAAKz8E,EAAAA,IAAQwV,GAAIxV,EAAAA;AAGzB,qBAAOy8E;YAAAA,EwBshBiBlO,MAAY,CAAA,GAAI,EAC5B9pG,QAAQ0yC,OAAOgF,mBACfvnB,UAAU,MAAA,CAAA;UAAA,GAmCtBgnF,GAAWz6G,UAAUmwB,QAAQ,SAAU+qF,IAAAA;AACnC,gBAAI/K,KAAQhrG,MACRo2G,KAAe,CAAC,KAAK,SAAS,QAAA,GAAWC,KAAqB,GAClE3H,KAAU,CAAA;AA+CV,mBA5CAoE,GAAUiD,IAAY,EAClB/C,WAAW,SAAUp2D,IAAAA;AACbw5D,cAAAA,GAAaxuG,QAAQg1C,EAAAA,KAAY,KACjCy5D;YAAAA,GAGRnD,QAAQ,SAAUlvE,IAAMjmC,IAAAA;AAEpB,kBAA2B,MAAvBs4G,IAA0B;AAM1B,oBACIC,KxBpfjB,SAAyBptF,IAAKqtF,IAAAA;AACjC,sBAAA,CAAKA,GAAWljF;AACZ,0BAAM,IAAI3sB,MAAM,yCAAA;AAEpB,2BAD8BmmB,IAA1B4F,KAAS,CAAA,GAAI+jF,KAAU,GACpB3pF,KAAQ0pF,GAAW1tF,KAAKK,EAAAA;AAC3BuJ,oBAAAA,GAAO7iB,KAAKsZ,GAAI+iB,UAAUuqE,IAAS3pF,GAAMjuB,KAAAA,CAAAA,GACzC6zB,GAAO7iB,KAAKid,GAAM,CAAA,CAAA,GAClB2pF,KAAU3pF,GAAMjuB,QAAQiuB,GAAM,CAAA,EAAG1uB;AAGrC,yBADAs0B,GAAO7iB,KAAKsZ,GAAI+iB,UAAUuqE,EAAAA,CAAAA,GACnB/jF;gBAAAA,EwB0eyCuR,IADC,4DAAA,GAE7ByyE,KAAkB14G;AACtBu4G,gBAAAA,GAAU/rG,QAAQ,SAAUmsG,IAAWz9G,IAAAA;AAEnC,sBAAIA,KAAI,KAAM,GAAG;AACb,wBAAI09G,KAAkB3L,GAAM4L,UAAUF,IAAWD,EAAAA;AACjD/H,oBAAAA,GAAQ9+F,KAAKhG,MAAM8kG,IAASiI,EAAAA;kBAAAA;AAEhCF,kBAAAA,MAAmBC,GAAUv4G;gBAAAA,CAAAA;cAAAA;YAAAA,GAIzC80G,YAAY,SAAUr2D,IAAAA;AACdw5D,cAAAA,GAAaxuG,QAAQg1C,EAAAA,KAAY,MACjCy5D,KAAqBp4G,KAAKC,IAAIm4G,KAAqB,GAAG,CAAA;YAAA,GAG9DlD,WAAW,SAAUp1G,IAAAA;YAAAA,GACrBq1G,WAAW,SAAUr1G,IAAAA;YAAAA,EAAAA,CAAAA,GAKzB2wG,KAAU1uG,KAAK62G,eAAenI,EAAAA,GAK9BA,KAAU1uG,KAAK82G,sBAAsBpI,EAAAA;UAAAA,GAczC4G,GAAWz6G,UAAUg8G,iBAAiB,SAAUnI,IAAAA;AAE5CA,YAAAA,GAAQriG,KAAK,SAAU7G,IAAGC,IAAAA;AAAK,qBAAOD,GAAE8kG,UAAAA,IAAc7kG,GAAE6kG,UAAAA;YAAAA,CAAAA;AACxD,qBAASrxG,KAAI,GAAGA,KAAIy1G,GAAQvwG,SAAS,GAAGlF,MAAK;AACzC,kBAAI4zB,KAAQ6hF,GAAQz1G,EAAAA,GAAI8E,KAAS8uB,GAAMy9E,UAAAA,GAAayM,KAAoBlqF,GAAMu9E,eAAAA,EAAiBjsG,QAAQ64G,KAASj5G,KAASg5G;AACzH,kBAAI99G,KAAI,IAAIy1G,GAAQvwG,QAAQ;AAExB,oBAAIuwG,GAAQz1G,KAAI,CAAA,EAAGqxG,UAAAA,MAAgBvsG,IAAQ;AACvC,sBAAIk5G,KAAYvI,GAAQz1G,KAAI,CAAA,EAAGmxG,eAAAA,EAAiBjsG,SAAS44G,KAAoB99G,KAAIA,KAAI;AACrFy1G,kBAAAA,GAAQ37F,OAAOkkG,IAAW,CAAA;AAC1B;gBAAA;AAGAvI,gBAAAA,GAAQz1G,KAAI,CAAA,EAAGqxG,UAAAA,IAAc0M,MAC7BtI,GAAQ37F,OAAO9Z,KAAI,GAAG,CAAA;cAAA;YAAA;AAIlC,mBAAOy1G;UAAAA,GAoBX4G,GAAWz6G,UAAUi8G,wBAAwB,SAAUpI,IAAAA;AAkBnD,mBAjBK1uG,KAAKqrG,WACNrgG,GAAO0jG,IAAS,SAAU7hF,IAAAA;AAAS,qBAA2B,cAApBA,GAAM09E,QAAAA;YAAAA,CAAAA,GAC/CvqG,KAAKirG,SACNjgG,GAAO0jG,IAAS,SAAU7hF,IAAAA;AAAS,qBAA2B,YAApBA,GAAM09E,QAAAA;YAAAA,CAAAA,GAC/CvqG,KAAKw1G,SACNxqG,GAAO0jG,IAAS,SAAU7hF,IAAAA;AAAS,qBAA2B,YAApBA,GAAM09E,QAAAA;YAAAA,CAAAA,GAC/CvqG,KAAKyrG,WACNzgG,GAAO0jG,IAAS,SAAU7hF,IAAAA;AAAS,qBAA2B,cAApBA,GAAM09E,QAAAA;YAAAA,CAAAA,GAC/CvqG,KAAKu1G,KAAKS,iBACXhrG,GAAO0jG,IAAS,SAAUr1G,IAAAA;AAAK,qBAAuB,UAAhBA,GAAEkxG,QAAAA,KAA+C,aAAxBlxG,GAAEszG,gBAAAA;YAAAA,CAAAA,GAEhE3sG,KAAKu1G,KAAKU,cACXjrG,GAAO0jG,IAAS,SAAUr1G,IAAAA;AAAK,qBAAuB,UAAhBA,GAAEkxG,QAAAA,KAA+C,UAAxBlxG,GAAEszG,gBAAAA;YAAAA,CAAAA,GAEhE3sG,KAAKu1G,KAAKW,cACXlrG,GAAO0jG,IAAS,SAAUr1G,IAAAA;AAAK,qBAAuB,UAAhBA,GAAEkxG,QAAAA,KAA+C,UAAxBlxG,GAAEszG,gBAAAA;YAAAA,CAAAA,GAE9D+B;UAAAA,GAuBX4G,GAAWz6G,UAAU+7G,YAAY,SAAU5yE,IAAMjmC,IAAAA;AAAAA,uBACzCA,OAAqBA,KAAS,IAClCA,KAASA,MAAU;AAEnB,qBADI43G,KAAW31G,KAAKk3G,YAAAA,GAAexI,KAAU,CAAA,GACpCz1G,KAAI,GAAGk+G,KAAcxB,GAASx3G,QAAQlF,KAAIk+G,IAAal+G,MAAK;AAMjE,uBALIm+G,KAAczB,GAAS18G,EAAAA,EAAGw1G,aAAazqE,EAAAA,GAKlClF,KAAI,GAAGu4E,KAAiBD,GAAYj5G,QAAQ2gC,KAAIu4E,IAAgBv4E;AACrEs4E,gBAAAA,GAAYt4E,EAAAA,EAAGurE,UAAUtsG,KAASq5G,GAAYt4E,EAAAA,EAAGwrE,UAAAA,CAAAA;AAErDoE,cAAAA,GAAQ9+F,KAAKhG,MAAM8kG,IAAS0I,EAAAA;YAAAA;AAEhC,mBAAO1I;UAAAA,GAoBX4G,GAAWz6G,UAAUqgG,OAAO,SAAU6a,IAAAA;AAClC,gBAAA,CAAKA;AACD,qBAAO;AAMP/1G,iBAAK01G,iBACLK,KAAaA,GACR5sF,QAAQ,MAAM,MAAA,EACdA,QAAQ,MAAM,MAAA;AAGvB,qBADIulF,KAAU1uG,KAAKgrB,MAAM+qF,EAAAA,GAAauB,KAAU,CAAA,GAAI3zD,KAAY,GACvD1qD,KAAI,GAAG+E,KAAM0wG,GAAQvwG,QAAQlF,KAAI+E,IAAK/E,MAAK;AAChD,kBAAI4zB,KAAQ6hF,GAAQz1G,EAAAA;AACpBq+G,cAAAA,GAAQ1nG,KAAKmmG,GAAW9pE,UAAU0X,IAAW92B,GAAMy9E,UAAAA,CAAAA,CAAAA,GACnDgN,GAAQ1nG,KAAK5P,KAAKu3G,qBAAqB1qF,EAAAA,CAAAA,GACvC82B,KAAY92B,GAAMy9E,UAAAA,IAAcz9E,GAAMu9E,eAAAA,EAAiBjsG;YAAAA;AAG3D,mBADAm5G,GAAQ1nG,KAAKmmG,GAAW9pE,UAAU0X,EAAAA,CAAAA,GAC3B2zD,GAAQr3F,KAAK,EAAA;UAAA,GAcxBq1F,GAAWz6G,UAAU08G,uBAAuB,SAAU1qF,IAAAA;AAElD,gBAAI2qF;AAIJ,mBAHIx3G,KAAKy1G,cACL+B,KAAkBx3G,KAAKy1G,UAAUr8G,KAAK4G,KAAK8X,SAAS+U,EAAAA,IAEzB,YAAA,OAApB2qF,KACAA,KAAAA,UAEFA,KACE3qF,GAAMu9E,eAAAA,IAERoN,cAA2Bl+G,KACzBk+G,GAAgB7P,eAAAA,IAIP96E,GAAM29E,SAAAA,EACL7C,eAAAA;UAAAA,GAUzB2N,GAAWz6G,UAAUq8G,cAAc,WAAA;AAC/B,gBAAKl3G,KAAK21G;AAYN,qBAAO31G,KAAK21G;AAXZ,gBAAIxL,KAAanqG,KAAKy3G,cAAAA,GAClB9B,KAAW,CACX,IAAI,EAAe,EAAExL,YAAYA,IAAYiB,aAAaprG,KAAKqrG,QAAAA,CAAAA,GAC/D,IAAInsE,GAAa,EAAEirE,YAAYA,GAAAA,CAAAA,GAC/B,IAAIzqE,GAAa,EAAEyqE,YAAYA,GAAAA,CAAAA,GAC/B,IAAI,GAAe,EAAEA,YAAYA,IAAYiB,aAAaprG,KAAKyrG,QAAAA,CAAAA,GAC/D,IAAInsE,GAAW,EAAE6qE,YAAYA,IAAYgC,aAAansG,KAAKmsG,aAAaE,oBAAoBrsG,KAAKqsG,oBAAoBC,uBAAuBtsG,KAAKssG,sBAAAA,CAAAA,CAAAA;AAErJ,mBAAQtsG,KAAK21G,WAAWA;UAAAA,GAahCL,GAAWz6G,UAAU48G,gBAAgB,WAAA;AACjC,gBAAItN,KAAanqG,KAAKmqG;AAQtB,mBAPKA,OACDA,KAAanqG,KAAKmqG,aAAa,IAAIjxG,GAAiB,EAChD8uG,WAAWhoG,KAAKgoG,WAChBC,UAAUjoG,KAAKioG,UACfpvC,WAAW74D,KAAK64D,UAAAA,CAAAA,IAGjBsxC;UAAAA,GAUXmL,GAAWn7D,UAAU,UAKrBm7D,GAAWvN,mBAAmB7uG,IAK9Bo8G,GAAWtP,UAAU1sG,IAKrBg8G,GAAWoC,UAAU,EACjBC,OAAOz4E,IACP04E,SAAS,GACTzK,SAASA,IACT0K,SAAS,IACTC,OAAOp4E,IACP4pB,KAAKhqB,GAAA,GAMTg2E,GAAWzoF,QAAQ,EACf8qF,OAAOv3G,IACPw3G,SAASh5E,IACTorE,OAAOA,IACP6N,SAAS5sF,IACT6sF,OAAOryG,IACP6jD,KAAKhhC,GAAA,GAEFgtF;QAAAA,EA5wBoB,GCrH3ByC,KAAe;AAMnB,iBAASC,GAAY9uF,IAAAA;AACnB,iBAAO,aAAaqC,KAAKrC,EAAAA;QAAAA;AAM3B,iBAAS+uF,KAAAA;AACP,cAAIC,KAAQ,CAAA,GACRC,KAAa,IAAI,GAAW,EAC9BhM,aAAAA,OACA18E,KAAAA,MACAw7E,OAAAA,MACAwK,WAAW,SAAU5oF,IAAAA;AAEnB,oBAAQA,GAAM09E,QAAAA,GAAAA;cAEZ,KAAK;AACH2N,gBAAAA,GAAMtoG,KAAK,EACTo0B,MAAMnX,GAAMq9E,aACZz6E,KAAK5C,GAAM+/E,OAAAA,EAAAA,CAAAA;AAEb;cACF,KAAK;AACHsL,gBAAAA,GAAMtoG,KAAK,EACTo0B,MAAMnX,GAAMq9E,aAEZz6E,KAAK,YAAY5C,GAAMq+E,SAAAA,EAAW/hF,QAAQ,aAAa,EAAA,EAAA,CAAA;YAAA;AAI7D,mBAAA;UAAO,EAAA,CAAA;AAIX,iBAAO,EACL+uF,OAAOA,IACPC,YAAYA,GAAAA;QAAAA;AAKhB,iBAASC,GAAYx+D,IAAAA;AACnB,cAAI3gD,IAAG6lC,IAAG5lC,IAAG47F,IAAQnmC,IAAO3qB,IAAMv2B,IAAO4qG,IAAItmE,IAAKl+B,IAAOykG,IAEnCJ,IAAOC,IAhDXjvF,IA+Cd+0E,KAAcrkD,GAAMk7C,QACpByjB,KAAY;AAEhB,eAAKz5E,KAAI,GAAG5lC,KAAI+kG,GAAY9/F,QAAQ2gC,KAAI5lC,IAAG4lC;AACzC,gBAA4B,aAAxBm/D,GAAYn/D,EAAAA,EAAG5+B;AAOnB,mBAJAo4G,KAAgB,GAIXr/G,MANL67F,KAASmJ,GAAYn/D,EAAAA,EAAGy6B,UAMRp7D,SAAS,GAAGlF,MAAK,GAAGA;AAIlC,oBAAmB,kBAHnB01D,KAAQmmC,GAAO77F,EAAAA,GAGLiH,MAAAA;AAiBV,sBARmB,cAAfyuD,GAAMzuD,SAvEIgpB,KAwEGylC,GAAMmS,SAvEpB,YAAYv1C,KAAKrC,EAAAA,KAuEeovF,KAAgB,KAC/CA,MAEEN,GAAYrpD,GAAMmS,OAAAA,KACpBw3C,OAAAA,EAGAA,KAAgB,MAED,WAAf3pD,GAAMzuD,QAAmB63G,GAAaxsF,KAAKojC,GAAMmS,OAAAA,GAAU;AAa7D,wBAVKy3C,OAEHL,MADAK,KAAYN,GAAAA,GACMC,OAClBC,KAAaI,GAAUJ,aAGzBn0E,KAAO2qB,GAAMmS,SACbo3C,GAAM/5G,SAAS,GACfg6G,GAAWjd,KAAKl3D,EAAAA,GAAAA,CAEXk0E,GAAM/5G;AAAU;AAMrB,yBAHAsP,KAAQ,CAAA,GACRoG,KAAQ86C,GAAM96C,OAETwkG,KAAK,GAAGA,KAAKH,GAAM/5G,QAAQk6G;AAEzBz+D,sBAAAA,GAAM4jD,OAAOrC,aAAa+c,GAAMG,EAAAA,EAAI5oF,GAAAA,OAEzCsiB,KAAM/N,GAAKp8B,QAAQswG,GAAMG,EAAAA,EAAIr0E,IAAAA,MAG3Bv2B,GAAMmC,KAAK,EACT1P,MAAM,QACN4gE,SAAS98B,GAAK5oC,MAAM,GAAG22C,EAAAA,GACvBl+B,OAAOA,GAAAA,CAAAA,GAGXpG,GAAMmC,KAAK,EACT1P,MAAM,aACN6pD,MAAMmuD,GAAMG,EAAAA,EAAI5oF,KAChBujD,OAAO,IACPn/D,OAAOA,KAAAA,CAAAA,GAETpG,GAAMmC,KAAK,EACT1P,MAAM,QACN4gE,SAASo3C,GAAMG,EAAAA,EAAIr0E,MACnBnwB,OAAOA,GAAAA,CAAAA,GAETpG,GAAMmC,KAAK,EACT1P,MAAM,cACN2T,OAAAA,EAASA,GAAAA,CAAAA,GAEXmwB,KAAOA,GAAK5oC,MAAM22C,KAAMmmE,GAAMG,EAAAA,EAAIr0E,KAAK7lC,MAAAA;AAErC6lC,oBAAAA,GAAK7lC,UACPsP,GAAMmC,KAAK,EACT1P,MAAM,QACN4gE,SAAS98B,IACTnwB,OAAOA,GAAAA,CAAAA,GAKXoqF,GAAYn/D,EAAAA,EAAGy6B,WAAWu7B,KAAS,CAAA,EAAGj7E,OAAOi7E,GAAO15F,MAAM,GAAGnC,EAAAA,GAAIwU,IAAOqnF,GAAO15F,MAAMnC,KAAI,CAAA,CAAA;kBAAA;gBAAA;AA3EzF,uBADAA,MACO67F,GAAO77F,EAAAA,EAAG4a,UAAU86C,GAAM96C,SAA4B,gBAAnBihF,GAAO77F,EAAAA,EAAGiH;AAClDjH,oBAAAA;QAAAA;AA+EV,iBAASssG,GAAQiT,IAAAA;AACfA,UAAAA,GAAGziE,KAAKipD,MAAMpvF,KAAK,WAAWwoG,EAAAA;QAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA;ACrIhC,iBAAShsB,GAATnxF,IAAA;AAA2D,cAAvCg5B,KAAsCh5B,GAAtCg5B,QAAsCv5B,KAAAO,GAA9B49D,WAAAA,KAAAA,WAA8Bn+D,KAAlB,KAAkBA,IAAd0nC,KAAcnnC,GAAdmnC;AAC1C,cAAsB,YAAA,OAAXnO;AACT,mBAAO;AAGT,cAAMukF,KAAK,IAAInT,GAAAA,EAAW,EACxB5kC,MAAAA,MACA49B,aAAAA,MACA/F,QAAAA,MACA7B,YAAY,SAAA,CAAA,EACXiP,IAAIH,EAAAA;AAEPiT,UAAAA,GAAGziE,KAAKipD,MAAMzC,QAAQ,CAAC,gBAAgB,aAAA,CAAA;AAEvC,cAAQkc,KAAsBr2E,GAAAA,EAAtBq2E,mBACFh4C,KAAO+3C,GAAGnzB,OAAOpxD,EAAAA,GACjBykF,KAAYC,GAAUl4C,IAAM,EAAEg4C,mBAAAA,GAAAA,CAAAA;AAEpC,iBAAKxkF,MAAWwsC,MAASi4C,KAKvBh/G,GAAA,EAAA,cAAA,OAAA,EAAKm/D,WAAW+/C,GAAAA,EAAG//C,IAAW,UAAA,GAAaggD,yBAAyB,EAAEC,QAAQJ,GAAAA,EAAAA,CAAAA,IAJvE;QAAA;AAhCPK,WAAAA,EAAUC,WACZD,GAAAA,EAAUC,QAAQ,0BAA0B,SAAUztE,IAAAA;AAQpD,iBAHIA,GAAQwe,QACVxe,GAAQ0tE,aAAa,OAAO,qBAAA,GAEvB1tE;QAAAA,CAAAA,GAqCX6gD,GAAS8sB,eAAe,EACtB92E,YAAY,WAAA;AAAA,iBAAO,EAAEq2E,mBAAAA,MAAmB;QAAA,EAAA;AAG3BrsB,QAAAA,GAAAA,IAAAA;AAER,iBAASusB,GAAUzvF,IAAAA;AAA0C,cAAD/uB,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAJ,CAAA,GAAIO,KAAAP,GAAlCs+G,mBAAAA,KAAAA,WAAkC/9G,MAAAA,IAC3Dy+G,KAAkBV,IAClBW,KAAcX,KAAoB,CAAA,IAAK,CAAC,SAAS,OAAA;AAOvD,iBALIA,MAAAA,CAAsBE,GAAUU,8BAClCtwF,QAAQ6T,KAAR,8GAAA,GACA+7E,GAAUU,4BAAAA,OAGLN,GAAAA,EAAUO,SAASpwF,IAAK,EAC7BqwF,UAAU,CAAC,QAAA,GACXC,aAAa,CAAC,SAAS,MAAA,GACvBL,iBAAAA,IACAC,aAAAA,GAAAA,CAAAA;QAAAA;AAGJT,WAAUU,4BAAAA;MAA4B,GAAA,SAAAp+G,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,IAAA,KAAA,WAAA;AAAA,iBAAAklC;QAAA,CAAA;AAAA,YAAAtlC,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,CAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,CAAA,GAAAM,KAAAN,GAAA,EAAAssB,EAAA,GAAA1tB,KAAAoB,GAAA,EAAA,GAAAxB,KAAAwB,GAAA,EAAApB,EAAA,GAAA2tB,KAAAvsB,GAAA,CAAA,GAAAK,KAAAL,GAAA,EAAAusB,EAAA,GAAA1e,KAAA7N,GAAA,CAAA,GAAAnB,KAAAmB,GAAA,EAAA6N,EAAA,GAAAlP,KAAAqB,GAAA,CAAA,GAAA0F,KAAA1F,GAAA,EAAArB,EAAA,GAAAulC,KAAAlkC,GAAA,CAAA,GAAAuwB,KAAAvwB,GAAA,EAAAkkC,EAAA,GAAAn5B,KAAA/K,GAAA,EAAA,GAAA4tB,KAAA5tB,GAAA,EAAA+K,EAAA,GAAAyK,KAAAxV,GAAA,CAAA,GAAA+sB,KAAA/sB,GAAA,EAAAwV,EAAA,GAAAnK,KAAArL,GAAA,CAAA,GAAA8sB,KAAA9sB,GAAA,EAAAqL,EAAA,GAAA5F,KAAAzF,GAAA,CAAA;ACxEtC,iBAAS49B,GAAQpvB,IAAAA;AAWf,kBATEovB,KADoB,cAAA,OAAXt+B,UAAoD,YAAA,OAApBA,OAAO2F,WACtC,SAAUuJ,IAAAA;AAClB,mBAAA,OAAcA;UAAAA,IAGN,SAAUA,IAAAA;AAClB,mBAAOA,MAAyB,cAAA,OAAXlP,UAAyBkP,GAAI1N,gBAAgBxB,UAAUkP,OAAQlP,OAAOa,YAAY,WAAA,OAAkBqO;UAAAA,GAI9GA,EAAAA;QAAAA;AAGjB,iBAASuwG,GAAgBp0F,IAAUC,IAAAA;AACjC,cAAA,EAAMD,cAAoBC;AACxB,kBAAM,IAAIthB,UAAU,mCAAA;QAAA;AAIxB,iBAASuhB,GAAkBC,IAAQC,IAAAA;AACjC,mBAASxsB,KAAI,GAAGA,KAAIwsB,GAAMtnB,QAAQlF,MAAK;AACrC,gBAAIysB,KAAaD,GAAMxsB,EAAAA;AACvBysB,YAAAA,GAAW7rB,aAAa6rB,GAAW7rB,cAAAA,OACnC6rB,GAAWP,eAAAA,MACP,WAAWO,OAAYA,GAAWN,WAAAA,OACtCzrB,OAAOC,eAAe4rB,IAAQE,GAAWlrB,KAAKkrB,EAAAA;UAAAA;QAAAA;AAUlD,iBAASmgD,GAAgB38D,IAAK1O,IAAKN,IAAAA;AAYjC,iBAXIM,MAAO0O,KACTvP,OAAOC,eAAesP,IAAK1O,IAAK,EAC9BN,OAAOA,IACPL,YAAAA,MACAsrB,cAAAA,MACAC,UAAAA,KAAU,CAAA,IAGZlc,GAAI1O,EAAAA,IAAON,IAGNgP;QAAAA;AAGT,iBAAS4vB,GAAQn+B,IAAQo+B,IAAAA;AACvB,cAAI11B,KAAO1J,OAAO0J,KAAK1I,EAAAA;AAEvB,cAAIhB,OAAO4lB,uBAAuB;AAChC,gBAAIyZ,KAAUr/B,OAAO4lB,sBAAsB5kB,EAAAA;AACvCo+B,YAAAA,OAAgBC,KAAUA,GAAQ/oB,OAAO,SAAUgpB,IAAAA;AACrD,qBAAOt/B,OAAO65B,yBAAyB74B,IAAQs+B,EAAAA,EAAKp/B;YAAAA,CAAAA,IAEtDwJ,GAAKuM,KAAKhG,MAAMvG,IAAM21B,EAAAA;UAAAA;AAGxB,iBAAO31B;QAAAA;AAGT,iBAASyiE,GAAetgD,IAAAA;AACtB,mBAASvsB,KAAI,GAAGA,KAAIgJ,UAAU9D,QAAQlF,MAAK;AACzC,gBAAIg7B,KAAyB,QAAhBhyB,UAAUhJ,EAAAA,IAAagJ,UAAUhJ,EAAAA,IAAK,CAAA;AAE/CA,YAAAA,KAAI,IACN6/B,GAAQ7E,IAAAA,IAAQ,EAAM1pB,QAAQ,SAAU/P,IAAAA;AACtCqrE,cAAAA,GAAgBrgD,IAAQhrB,IAAKy5B,GAAOz5B,EAAAA,CAAAA;YAAAA,CAAAA,IAE7Bb,OAAOosE,4BAChBpsE,OAAOqsE,iBAAiBxgD,IAAQ7rB,OAAOosE,0BAA0B9xC,EAAAA,CAAAA,IAEjE6E,GAAQ7E,EAAAA,EAAQ1pB,QAAQ,SAAU/P,IAAAA;AAChCb,qBAAOC,eAAe4rB,IAAQhrB,IAAKb,OAAO65B,yBAAyBS,IAAQz5B,EAAAA,CAAAA;YAAAA,CAAAA;UAAAA;AAKjF,iBAAOgrB;QAAAA;AAkBT,iBAAS0vD,GAAgBx7E,IAAAA;AAIvB,kBAHAw7E,KAAkBv7E,OAAOu4B,iBAAiBv4B,OAAOijB,iBAAiB,SAAyBljB,IAAAA;AACzF,mBAAOA,GAAE0vE,aAAazvE,OAAOijB,eAAeljB,EAAAA;UAAAA,GAEvBA,EAAAA;QAAAA;AAGzB,iBAASggH,GAAgBhgH,IAAGqB,IAAAA;AAM1B,kBALA2+G,KAAkB//G,OAAOu4B,kBAAkB,SAAyBx4B,IAAGqB,IAAAA;AAErE,mBADArB,GAAE0vE,YAAYruE,IACPrB;UAAAA,GAGcA,IAAGqB,EAAAA;QAAAA;AAW5B,iBAAS4+G,GAA2B/mF,IAAMx5B,IAAAA;AACxC,iBAAA,CAAIA,MAAyB,YAAA,OAATA,MAAqC,cAAA,OAATA,KATlD,SAAgCw5B,IAAAA;AAC9B,gBAAA,WAAIA;AACF,oBAAM,IAAIC,eAAe,2DAAA;AAG3B,mBAAOD;UAAAA,EAQuBA,EAAAA,IAHrBx5B;QAAAA;AAMX,YAAIkE,IAAU,CAAA;AASd,iBAASxD,GAAIkW,IAAYxV,IAAK+M,IAAAA;AAC5B,iBALF,SAAmByI,IAAAA;AACjB,mBAAOA,QAAAA;UAAAA,EAIOA,EAAAA,IACLzI,KAVX,SAAmByI,IAAAA;AACjB,mBAAsB,SAAfA,MAA+C,aAAxBsoB,GAAQtoB,EAAAA,KAAsD,cAAA,OAAnBA,GAAWlW,OAAgD,cAAA,OAAnBkW,GAAW9J;UAAAA,EAY9G8J,EAAAA,IACLA,GAAW9J,IAAI1L,EAAAA,IAAOwV,GAAWlW,IAAIU,EAAAA,IAAO+M,KAG9CzM,eAAe1B,KAAK4W,IAAYxV,EAAAA,IAAOwV,GAAWxV,EAAAA,IAAO+M;QAAAA;AAElE,iBAASsa,GAAM7R,IAAYlF,IAASvD,IAAAA;AAGlC,mBAFItO,KAAI,GAEDA,OAAM6R,GAAQ3M;AAGnB,iBAFA6R,KAAalW,GAAIkW,IAAYlF,GAAQ7R,IAAAA,GAAMqE,CAAAA,OAExBA;AACjB,qBAAOiK;AAIX,iBAAOyI;QAAAA;AAGT,iBAASslB,GAAMhJ,IAAAA;AACb,cAAIle,KAAOnM,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA,GAC3ElC,KAAOkC,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA,GAC3E23G,KAAYC,GAAczrG,IAAMrO,EAAAA,GAChC+5G,KAAYxtF,MAAU3yB,OAAO0J,KAAKyiE,GAAe,CAAA,GAAI/lE,IAAM,CAAA,GAAIqO,EAAAA,CAAAA;AACnE,iBAAO0rG,GAAUj0G,MAAM+zG,EAAAA;QAAAA;AAGzB,iBAASC,GAAczrG,IAAMrO,IAAAA;AAC3B,iBAAO,SAAUvG,IAAAA;AACf,gBAAoB,YAAA,OAATA;AACT,qBAAO,OAAA2G,GAAA,EAAA,EAAGJ,GAAKvG,EAAAA,GAAO4U,GAAK5U,EAAAA,CAAAA;AACtB,gBAAI2B,MAAM4I,QAAQvK,EAAAA;AACvB,qBAAO,OAAA2G,GAAA,EAAA,EAAG0hB,GAAM9hB,IAAMvG,EAAAA,GAAOqoB,GAAMzT,IAAM5U,EAAAA,CAAAA;AAG3C,kBAAM,IAAIwK,UAAU,4CAA4CxK,EAAAA;UAAAA;QAAAA;AAgCrD,YAAAy2B,KA1Bf,SAAU8pF,IAAAA;AAGR,mBAASC,KAAAA;AAGP,mBAFAP,GAAgBz5G,MAAMg6G,EAAAA,GAEfL,GAA2B35G,MAAMk1E,GAAgB8kC,EAAAA,EAAwBpwG,MAAM5J,MAAMiC,SAAAA,CAAAA;UAAAA;AApKhG,cAAsBqjB,IAAaK,IAAYC;AA+K7C,iBAxHF,SAAmBuM,IAAU52B,IAAAA;AAC3B,gBAA0B,cAAA,OAAfA,MAA4C,SAAfA;AACtC,oBAAM,IAAIyI,UAAU,oDAAA;AAGtBmuB,YAAAA,GAASt3B,YAAYlB,OAAOY,OAAOgB,MAAcA,GAAWV,WAAW,EACrEW,aAAa,EACXtB,OAAOi4B,IACP/M,UAAAA,MACAD,cAAAA,KAAc,EAAA,CAAA,GAGd5pB,MAAYm+G,GAAgBvnF,IAAU52B,EAAAA;UAAAA,EA4FhCy+G,IAAwBD,EAAAA,GA/Jdz0F,KAuKP00F,KAvKoBr0F,KAuKI,CAAC,EACpCnrB,KAAK,yBACLN,OAAO,SAA+BgrF,IAAAA;AACpC,gBAAI1C,KAAYvgF,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA;AACpF,mBAAA,CAAQqzB,GAAMt1B,KAAKi6G,eAAej6G,KAAKylB,OAAOy/D,IAAW,eAAA,KAAA,CAAqB5vD,GAAMt1B,KAAKk6G,gBAAgBl6G,KAAK45C,OAAO4oC,IAAW,gBAAA;UAAA,EAAA,CAAA,MA1KpHj9D,GAAkBD,GAAYzqB,WAAW8qB,EAAAA,GACrDC,MAAaL,GAAkBD,IAAaM,EAAAA,GA6KzCo0F;QAAAA,EACPxyF,GAAA,EAAM+U,SAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GC5Ma49E,KAAAA,SAAAA,IAAAA;AAAAA,UAAAA,GAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,gBAiBL,SAAEz8G,IAAAA;AACd,qBAAA,OAAK4qB,GAAA,EAAA5qB,EAAAA,EAAG,KAAHA,IAAY,gBAAA,IACRA,GAAIyrB,QAAQ,uBAAuB,EAAA,IAAA,OAEvCb,GAAA,EAAA5qB,EAAAA,EAAG,KAAHA,IAAY,uBAAA,IACRA,GAAIyrB,QAAQ,+BAA+B,EAAA,IAAA;YADpD,CAAA,GAAA/oB,GAAA,EAAAlH,GAAA,EAAAwB,EAAA,GAAA,gBAKY,SAAE0/G,IAAAA;AAGd,qBAFwB1/G,GAAK+qB,MAAvBiX,cAEem2B,eAAeunD,EAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAGtC,WAAA;AACE,gBAAAn/G,KACuC+E,KAAKylB,OADtCm1D,KAAN3/E,GAAM2/E,cAAcx4C,KAApBnnC,GAAoBmnC,YAAY1F,KAAhCzhC,GAAgCyhC,eAAenT,KAA/CtuB,GAA+CsuB,QAAQwtC,KAAvD97D,GAAuD87D,UAAUv9D,KAAjEyB,GAAiEzB,MAAM6gH,KAAvEp/G,GAAuEo/G,OAAOvuB,KAA9E7wF,GAA8E6wF,UAAUvU,KAAxFt8E,GAAwFs8E,aACtFZ,KADF17E,GACE07E,iBAAiBE,KADnB57E,GACmB47E,kBACbyjC,KAAc1/B,GAAa,aAAA,GAC3B2/B,KAAa3/B,GAAa,YAAA,GAC1B4/B,KAAiB5/B,GAAa,gBAAA,GAChC16E,KAAO,UACPusB,KAAQlD,MAAUA,GAAOzvB,IAAI,OAAA;AAWjC,gBAAA,CARMN,MAAQizB,OACZjzB,KAAOwG,KAAKy6G,aAAchuF,EAAAA,IAAAA,CAGtBlD,MAAUkD,OACdlD,KAASvpB,KAAK06G,aAAclhH,EAAAA,IAAAA,CAG1B+vB;AACF,qBAAO/B,GAAA,EAAA,cAAA,QAAA,EAAMqxC,WAAU,oBAAA,GACfrxC,GAAA,EAAA,cAAA,QAAA,EAAMqxC,WAAU,oBAAA,GAAsB0e,MAAe/9E,EAAAA,GACrDguB,GAAA,EAAA,cAAA,OAAA,EAAK0nB,KAAKyrE,GAAQ,GAAA,GAAiCC,QAAQ,QAAQr3D,OAAO,OAAA,CAAA,CAAA;AAIpF,gBAAMkzB,KAAa/5C,GAAczQ,OAAAA,KAAY1C,GAAOzvB,IAAI,YAAA;AAIxD,oBAHAugH,KAAAA,WAAQA,KAAsBA,KAAAA,CAAAA,CAAU5tF,IACxCvsB,KAAOqpB,MAAUA,GAAOzvB,IAAI,MAAA,KAAWoG,IAAAA;cAGrC,KAAK;AACH,uBAAOsnB,GAAA,EAAA,cAAC8yF,IAAD5gH,GAAA,EAAA,EACLm/D,WAAU,SAAA,GAAc74D,KAAKylB,OADxB,EAELqmE,UAAUA,IACV1pD,YAAaA,IACb7Y,QAASA,IACT/vB,MAAOA,IACPi9E,YAAYA,IACZ4jC,OAAQA,IACR1jC,iBAAmBA,IACnBE,kBAAoBA,GAAAA,CAAAA,CAAAA;cACxB,KAAK;AACH,uBAAOrvD,GAAA,EAAA,cAAC+yF,IAAD7gH,GAAA,EAAA,EACLm/D,WAAU,QAAA,GAAa74D,KAAKylB,OADvB,EAEL2c,YAAaA,IACb7Y,QAASA,IACT/vB,MAAOA,IACPi9E,YAAYA,IACZ1f,UAAWA,IACX4f,iBAAmBA,IACnBE,kBAAoBA,GAAAA,CAAAA,CAAAA;cACxB,KAAK;cACL,KAAK;cACL,KAAK;cACL,KAAK;cACL;AACE,uBAAOrvD,GAAA,EAAA,cAACgzF,IAAD9gH,GAAA,EAAA,CAAA,GACAsG,KAAKylB,OADL,EAELm1D,cAAeA,IACfx4C,YAAaA,IACb7Y,QAASA,IACT/vB,MAAOA,IACPi9E,YAAYA,IACZ1f,UAAWA,GAAAA,CAAAA,CAAAA;YAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA/FcijD,EAAAA;AAAAA,QAAAA,GAAAA,EAAdG,IAAAA,aACA,EACjB5wF,QAAQ9B,GAAA,EAAAozF,GAAAA,CAAAA,EAAgB5gF,YACxB2gD,cAAckgC,GAAAA,EAAUjlF,KAAKoE,YAC7BmI,YAAY04E,GAAAA,EAAUjlF,KAAKoE,YAC3ByC,eAAeo+E,GAAAA,EAAUngH,OAAOs/B,YAChCzgC,MAAMshH,GAAAA,EAAUjyG,QAChB0uE,aAAaujC,GAAAA,EAAUjyG,QACvBwxG,OAAOS,GAAAA,EAAUhmE,MACjBiiB,UAAU+jD,GAAAA,EAAUhmE,MACpBg6C,aAAagsB,GAAAA,EAAUlqE,QACvBx2B,OAAO0gG,GAAAA,EAAUlqE,QACjBk7C,UAAU+uB,GAAAA,EAAYroG,KAAKynB,YAC3B08C,iBAAiBmkC,GAAAA,EAAUhmE,MAC3B+hC,kBAAkBikC,GAAAA,EAAUhmE,KAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACjBhC,YAAI/wB,KAAYrpB,GAAQ,GAAA,GACpBswB,KAAQtwB,GAAQ,GAAA,GAChBqgH,KAAUrgH,GAAQ,GAAA;AAEtB1B,QAAAA,GAAOD,UAAU,EACbgiH,SAASA,IACT/vF,OAAOA,IACPjH,WAAWA,GAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNkD/qB,QAAAA,GAAOD,UAGhE,WAAA;AAAc;AAEpB,mBAASiiH,GAAmBl9G,IAAAA;AAAO,gBAAI3C,MAAM4I,QAAQjG,EAAAA,GAAM;AAAE,uBAAS7E,KAAI,GAAGgiH,KAAO9/G,MAAM2C,GAAIK,MAAAA,GAASlF,KAAI6E,GAAIK,QAAQlF;AAAOgiH,gBAAAA,GAAKhiH,EAAAA,IAAK6E,GAAI7E,EAAAA;AAAM,qBAAOgiH;YAAAA;AAAe,mBAAO9/G,MAAM6Z,KAAKlX,EAAAA;UAAAA;AAE1L,cAAIhD,KAAiBnB,OAAOmB,gBACxBo3B,KAAiBv4B,OAAOu4B,gBACxBgpF,KAAWvhH,OAAOuhH,UAClBt+F,KAAiBjjB,OAAOijB,gBACxB4W,KAA2B75B,OAAO65B,0BAClC2nF,KAASxhH,OAAOwhH,QAChBC,KAAOzhH,OAAOyhH,MACd7gH,KAASZ,OAAOY,QAEhBoxC,KAA0B,eAAA,OAAZw0B,WAA2BA,SACzCv2D,KAAQ+hC,GAAK/hC,OACbipC,KAAYlH,GAAKkH;AAEhBjpC,UAAAA,OACHA,KAAQ,SAAesoE,IAAKmpC,IAAWrhE,IAAAA;AACrC,mBAAOk4B,GAAItoE,MAAMyxG,IAAWrhE,EAAAA;UAAAA,IAI3BmhE,OACHA,KAAS,SAAgBjrG,IAAAA;AACvB,mBAAOA;UAAAA,IAINkrG,OACHA,KAAO,SAAclrG,IAAAA;AACnB,mBAAOA;UAAAA,IAIN2iC,OACHA,KAAY,SAAmByoE,IAAMthE,IAAAA;AACnC,mBAAO,KAAKvkB,SAAS56B,UAAUJ,KAAKmP,MAAM0xG,IAAM,CAAC,IAAA,EAAMzhG,OAAOmhG,GAAmBhhE,EAAAA,CAAAA,CAAAA;UAAAA;AAIrF,cAAIuhE,KAAeC,GAAQrgH,MAAMN,UAAU0P,OAAAA,GACvCkxG,KAAWD,GAAQrgH,MAAMN,UAAUqW,GAAAA,GACnCwqG,KAAYF,GAAQrgH,MAAMN,UAAU+U,IAAAA,GAEpC+rG,KAAoBH,GAAQx3F,OAAOnpB,UAAUixB,WAAAA,GAC7C8vF,KAAcJ,GAAQx3F,OAAOnpB,UAAUgyB,KAAAA,GACvCgvF,KAAgBL,GAAQx3F,OAAOnpB,UAAUsuB,OAAAA,GACzC2yF,KAAgBN,GAAQx3F,OAAOnpB,UAAU+M,OAAAA,GACzCm0G,KAAaP,GAAQx3F,OAAOnpB,UAAUwwD,IAAAA,GAEtC2wD,KAAaR,GAAQlwF,OAAOzwB,UAAU0wB,IAAAA,GAEtC0wF,KAAkBC,GAAYl4G,SAAAA;AAElC,mBAASw3G,GAAQ3lF,IAAAA;AACf,mBAAO,SAAUsmF,IAAAA;AACf,uBAASnlF,KAAO/0B,UAAU9D,QAAQ67C,KAAO7+C,MAAM67B,KAAO,IAAIA,KAAO,IAAI,CAAA,GAAIE,KAAO,GAAGA,KAAOF,IAAME;AAC9F8iB,gBAAAA,GAAK9iB,KAAO,CAAA,IAAKj1B,UAAUi1B,EAAAA;AAG7B,qBAAOttB,GAAMisB,IAAMsmF,IAASniE,EAAAA;YAAAA;UAAAA;AAIhC,mBAASkiE,GAAYrmF,IAAAA;AACnB,mBAAO,WAAA;AACL,uBAASuB,KAAQn1B,UAAU9D,QAAQ67C,KAAO7+C,MAAMi8B,EAAAA,GAAQC,KAAQ,GAAGA,KAAQD,IAAOC;AAChF2iB,gBAAAA,GAAK3iB,EAAAA,IAASp1B,UAAUo1B,EAAAA;AAG1B,qBAAOwb,GAAUhd,IAAMmkB,EAAAA;YAAAA;UAAAA;AAK3B,mBAASoiE,GAAS1yG,IAAKxG,IAAAA;AACjBgvB,YAAAA,MAIFA,GAAexoB,IAAK,IAAA;AAItB,qBADIxQ,KAAIgK,GAAM/E,QACPjF,QAAK;AACV,kBAAI2sG,KAAU3iG,GAAMhK,EAAAA;AACpB,kBAAuB,YAAA,OAAZ2sG,IAAsB;AAC/B,oBAAIwW,KAAYV,GAAkB9V,EAAAA;AAC9BwW,gBAAAA,OAAcxW,OAEXqV,GAASh4G,EAAAA,MACZA,GAAMhK,EAAAA,IAAKmjH,KAGbxW,KAAUwW;cAAAA;AAId3yG,cAAAA,GAAIm8F,EAAAA,IAAAA;YAAW;AAGjB,mBAAOn8F;UAAAA;AAIT,mBAASw5D,GAAMvoE,IAAAA;AACb,gBAAI2hH,KAAY/hH,GAAO,IAAA,GAEnBK,KAAAA;AACJ,iBAAKA,MAAYD;AACXiP,cAAAA,GAAM9O,IAAgBH,IAAQ,CAACC,EAAAA,CAAAA,MACjC0hH,GAAU1hH,EAAAA,IAAYD,GAAOC,EAAAA;AAIjC,mBAAO0hH;UAAAA;AAOT,mBAASC,GAAa5hH,IAAQ++B,IAAAA;AAC5B,mBAAkB,SAAX/+B,MAAiB;AACtB,kBAAI6hH,KAAOhpF,GAAyB74B,IAAQ++B,EAAAA;AAC5C,kBAAI8iF,IAAM;AACR,oBAAIA,GAAK1iH;AACP,yBAAO0hH,GAAQgB,GAAK1iH,GAAAA;AAGtB,oBAA0B,cAAA,OAAf0iH,GAAKtiH;AACd,yBAAOshH,GAAQgB,GAAKtiH,KAAAA;cAAAA;AAIxBS,cAAAA,KAASiiB,GAAejiB,EAAAA;YAAAA;AAG1B,qBAAS8hH,GAAc5W,IAAAA;AAErB,qBADA98E,QAAQ6T,KAAK,sBAAsBipE,EAAAA,GAC5B;YAAA;AAGT,mBAAO4W;UAAAA;AAGT,cAAIh8C,KAAO06C,GAAO,CAAC,KAAK,QAAQ,WAAW,WAAW,QAAQ,WAAW,SAAS,SAAS,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,QAAQ,MAAM,UAAU,UAAU,WAAW,UAAU,QAAQ,QAAQ,OAAO,YAAY,WAAW,QAAQ,YAAY,MAAM,aAAa,OAAO,WAAW,OAAO,UAAU,OAAO,OAAO,MAAM,MAAM,WAAW,MAAM,YAAY,cAAc,UAAU,QAAQ,UAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,QAAQ,UAAU,UAAU,MAAM,QAAQ,KAAK,OAAO,SAAS,OAAO,OAAO,SAAS,UAAU,MAAM,QAAQ,OAAO,QAAQ,WAAW,QAAQ,YAAY,SAAS,OAAO,QAAQ,MAAM,YAAY,UAAU,UAAU,KAAK,WAAW,OAAO,YAAY,KAAK,MAAM,MAAM,QAAQ,KAAK,QAAQ,WAAW,UAAU,UAAU,SAAS,UAAU,UAAU,QAAQ,UAAU,UAAU,SAAS,OAAO,WAAW,OAAO,SAAS,SAAS,MAAM,YAAY,YAAY,SAAS,MAAM,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAK,MAAM,OAAO,SAAS,KAAA,CAAA,GAGj+BuB,KAAMvB,GAAO,CAAC,OAAO,KAAK,YAAY,eAAe,gBAAgB,gBAAgB,iBAAiB,oBAAoB,UAAU,YAAY,QAAQ,QAAQ,WAAW,UAAU,QAAQ,KAAK,SAAS,YAAY,SAAS,SAAS,QAAQ,kBAAkB,UAAU,QAAQ,YAAY,SAAS,QAAQ,WAAW,WAAW,YAAY,kBAAkB,QAAQ,QAAQ,SAAS,UAAU,UAAU,QAAQ,YAAY,SAAS,QAAQ,SAAS,QAAQ,OAAA,CAAA,GAEzcwB,KAAaxB,GAAO,CAAC,WAAW,iBAAiB,uBAAuB,eAAe,oBAAoB,qBAAqB,qBAAqB,kBAAkB,WAAW,WAAW,WAAW,WAAW,WAAW,kBAAkB,WAAW,eAAe,gBAAgB,YAAY,gBAAgB,sBAAsB,eAAe,UAAU,cAAA,CAAA,GAMrWyB,KAAgBzB,GAAO,CAAC,WAAW,iBAAiB,UAAU,WAAW,gBAAgB,WAAW,aAAa,oBAAoB,kBAAkB,iBAAiB,iBAAiB,iBAAiB,SAAS,aAAa,QAAQ,gBAAgB,aAAa,WAAW,iBAAiB,UAAU,OAAO,cAAc,WAAW,KAAA,CAAA,GAE3U0B,KAAS1B,GAAO,CAAC,QAAQ,YAAY,UAAU,WAAW,SAAS,UAAU,MAAM,cAAc,iBAAiB,MAAM,MAAM,SAAS,WAAW,YAAY,SAAS,QAAQ,MAAM,UAAU,SAAS,UAAU,QAAQ,QAAQ,WAAW,UAAU,OAAO,SAAS,OAAO,UAAU,YAAA,CAAA,GAIxR2B,KAAmB3B,GAAO,CAAC,WAAW,eAAe,cAAc,YAAY,aAAa,WAAW,WAAW,UAAU,UAAU,SAAS,aAAa,cAAc,kBAAkB,eAAe,MAAA,CAAA,GAE3Mn3E,KAAOm3E,GAAO,CAAC,OAAA,CAAA,GAEf4B,KAAS5B,GAAO,CAAC,UAAU,UAAU,SAAS,OAAO,kBAAkB,gBAAgB,wBAAwB,YAAY,cAAc,WAAW,UAAU,WAAW,eAAe,eAAe,WAAW,QAAQ,SAAS,SAAS,SAAS,QAAQ,WAAW,YAAY,gBAAgB,UAAU,eAAe,YAAY,YAAY,WAAW,OAAO,YAAY,2BAA2B,yBAAyB,YAAY,aAAa,WAAW,gBAAgB,QAAQ,OAAO,WAAW,UAAU,UAAU,QAAQ,QAAQ,YAAY,MAAM,aAAa,aAAa,SAAS,QAAQ,SAAS,QAAQ,QAAQ,WAAW,QAAQ,OAAO,OAAO,aAAa,SAAS,UAAU,OAAO,aAAa,YAAY,SAAS,QAAQ,WAAW,cAAc,UAAU,QAAQ,WAAW,WAAW,eAAe,eAAe,UAAU,WAAW,WAAW,cAAc,YAAY,OAAO,YAAY,OAAO,YAAY,QAAQ,QAAQ,WAAW,cAAc,SAAS,YAAY,SAAS,QAAQ,SAAS,QAAQ,WAAW,SAAS,OAAO,UAAU,QAAQ,SAAS,WAAW,YAAY,SAAS,aAAa,QAAQ,UAAU,UAAU,SAAS,SAAS,SAAS,MAAA,CAAA,GAE1pC6B,IAAQ7B,GAAO,CAAC,iBAAiB,cAAc,YAAY,sBAAsB,UAAU,iBAAiB,iBAAiB,WAAW,iBAAiB,kBAAkB,SAAS,QAAQ,MAAM,SAAS,QAAQ,iBAAiB,aAAa,aAAa,SAAS,uBAAuB,+BAA+B,iBAAiB,mBAAmB,MAAM,MAAM,KAAK,MAAM,MAAM,mBAAmB,aAAa,WAAW,WAAW,OAAO,YAAY,aAAa,OAAO,QAAQ,gBAAgB,aAAa,UAAU,eAAe,eAAe,iBAAiB,eAAe,aAAa,oBAAoB,gBAAgB,cAAc,gBAAgB,eAAe,MAAM,MAAM,MAAM,MAAM,cAAc,YAAY,iBAAiB,qBAAqB,UAAU,QAAQ,MAAM,mBAAmB,MAAM,OAAO,KAAK,MAAM,MAAM,MAAM,MAAM,WAAW,aAAa,cAAc,YAAY,QAAQ,gBAAgB,kBAAkB,gBAAgB,oBAAoB,kBAAkB,SAAS,cAAc,cAAc,gBAAgB,gBAAgB,eAAe,eAAe,oBAAoB,aAAa,OAAO,QAAQ,SAAS,UAAU,QAAQ,OAAO,QAAQ,cAAc,UAAU,YAAY,WAAW,SAAS,UAAU,eAAe,UAAU,YAAY,eAAe,QAAQ,cAAc,uBAAuB,oBAAoB,gBAAgB,UAAU,iBAAiB,uBAAuB,kBAAkB,KAAK,MAAM,MAAM,UAAU,QAAQ,QAAQ,eAAe,aAAa,WAAW,UAAU,UAAU,SAAS,QAAQ,mBAAmB,oBAAoB,oBAAoB,gBAAgB,eAAe,gBAAgB,eAAe,cAAc,gBAAgB,oBAAoB,qBAAqB,kBAAkB,mBAAmB,qBAAqB,kBAAkB,UAAU,gBAAgB,SAAS,gBAAgB,kBAAkB,YAAY,WAAW,WAAW,aAAa,eAAe,mBAAmB,kBAAkB,cAAc,QAAQ,MAAM,MAAM,WAAW,UAAU,WAAW,cAAc,WAAW,cAAc,iBAAiB,iBAAiB,SAAS,gBAAgB,QAAQ,gBAAgB,oBAAoB,oBAAoB,KAAK,MAAM,MAAM,SAAS,KAAK,MAAM,MAAM,KAAK,YAAA,CAAA,GAE5uE8B,KAAW9B,GAAO,CAAC,UAAU,eAAe,SAAS,YAAY,SAAS,gBAAgB,eAAe,cAAc,cAAc,SAAS,OAAO,WAAW,gBAAgB,YAAY,SAAS,SAAS,UAAU,QAAQ,MAAM,WAAW,UAAU,iBAAiB,UAAU,UAAU,kBAAkB,aAAa,YAAY,eAAe,WAAW,WAAW,iBAAiB,YAAY,YAAY,QAAQ,YAAY,YAAY,cAAc,WAAW,UAAU,UAAU,eAAe,iBAAiB,wBAAwB,aAAa,aAAa,cAAc,YAAY,kBAAkB,kBAAkB,aAAa,WAAW,SAAS,OAAA,CAAA,GAEvpB3uF,KAAM2uF,GAAO,CAAC,cAAc,UAAU,eAAe,aAAa,aAAA,CAAA,GAGlE+B,KAAgB9B,GAAK,2BAAA,GACrB+B,KAAW/B,GAAK,uBAAA,GAChBgC,KAAYhC,GAAK,4BAAA,GACjBiC,KAAYjC,GAAK,gBAAA,GACjBkC,KAAiBlC,GAAK,uFAAA,GAEtBmC,KAAoBnC,GAAK,uBAAA,GACzBoC,KAAkBpC,GAAK,6DAAA,GAGvB9iF,KAA4B,cAAA,OAAXt+B,UAAoD,YAAA,OAApBA,OAAO2F,WAAwB,SAAUuJ,IAAAA;AAAO,mBAAA,OAAcA;UAAAA,IAAS,SAAUA,IAAAA;AAAO,mBAAOA,MAAyB,cAAA,OAAXlP,UAAyBkP,GAAI1N,gBAAgBxB,UAAUkP,OAAQlP,OAAOa,YAAY,WAAA,OAAkBqO;UAAAA;AAEtQ,mBAASu0G,GAAqB3/G,IAAAA;AAAO,gBAAI3C,MAAM4I,QAAQjG,EAAAA,GAAM;AAAE,uBAAS7E,KAAI,GAAGgiH,KAAO9/G,MAAM2C,GAAIK,MAAAA,GAASlF,KAAI6E,GAAIK,QAAQlF;AAAOgiH,gBAAAA,GAAKhiH,EAAAA,IAAK6E,GAAI7E,EAAAA;AAAM,qBAAOgiH;YAAAA;AAAe,mBAAO9/G,MAAM6Z,KAAKlX,EAAAA;UAAAA;AAE5L,cAAI4/G,KAAY,WAAA;AACd,mBAAyB,eAAA,OAAXloF,SAAyB,OAAOA;UAAAA,GAW5CmoF,KAA4B,SAAmCC,IAAcp8C,IAAAA;AAC/E,gBAAoF,cAAA,WAAxEo8C,KAA+B,cAActlF,GAAQslF,EAAAA,MAAoE,cAAA,OAA9BA,GAAaC;AAClH,qBAAO;AAMT,gBAAIC,KAAS,MACTC,KAAY;AACZv8C,YAAAA,GAASw8C,iBAAiBx8C,GAASw8C,cAAcC,aAAaF,EAAAA,MAChED,KAASt8C,GAASw8C,cAAcE,aAAaH,EAAAA;AAG/C,gBAAII,KAAa,eAAeL,KAAS,MAAMA,KAAS;AAExD,gBAAA;AACE,qBAAOF,GAAaC,aAAaM,IAAY,EAC3CC,YAAY,SAAoBC,IAAAA;AAC9B,uBAAOA;cAAAA,EAAAA,CAAAA;YAAAA,SAGJt4G,IAAP;AAKA,qBADAgjB,QAAQ6T,KAAK,yBAAyBuhF,KAAa,wBAAA,GAC5C;YAAA;UAAA;AAIX,mBAASG,IAAAA;AACP,gBAAI9oF,KAASvzB,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAKy7G,GAAAA,GAE7Ea,KAAY,SAAmBjwG,IAAAA;AACjC,qBAAOgwG,EAAgBhwG,EAAAA;YAAAA;AAezB,gBARAiwG,GAAUpkE,UAAU,SAMpBokE,GAAUntG,UAAU,CAAA,GAAA,CAEfokB,MAAAA,CAAWA,GAAOgsC,YAAyC,MAA7BhsC,GAAOgsC,SAAS33D;AAKjD,qBAFA00G,GAAUC,cAAAA,OAEHD;AAGT,gBAAIE,KAAmBjpF,GAAOgsC,UAE1BA,KAAWhsC,GAAOgsC,UAClBk9C,KAAmBlpF,GAAOkpF,kBAC1BC,KAAsBnpF,GAAOmpF,qBAC7BC,KAAOppF,GAAOopF,MACdC,KAAUrpF,GAAOqpF,SACjBC,KAAatpF,GAAOspF,YACpBC,KAAuBvpF,GAAOwpF,cAC9BA,KAAAA,WAAeD,KAAqCvpF,GAAOwpF,gBAAgBxpF,GAAOypF,kBAAkBF,IACpGG,KAAO1pF,GAAO0pF,MACdC,KAAU3pF,GAAO2pF,SACjBC,KAAY5pF,GAAO4pF,WACnBxB,KAAepoF,GAAOooF,cAGtByB,KAAmBR,GAAQhkH,WAE3BykH,KAAY/C,GAAa8C,IAAkB,WAAA,GAC3CE,KAAiBhD,GAAa8C,IAAkB,aAAA,GAChDG,KAAgBjD,GAAa8C,IAAkB,YAAA,GAC/CI,KAAgBlD,GAAa8C,IAAkB,YAAA;AAQnD,gBAAmC,cAAA,OAAxBV,IAAoC;AAC7C,kBAAIe,KAAWl+C,GAASvI,cAAc,UAAA;AAClCymD,iBAAS5+C,WAAW4+C,GAAS5+C,QAAQ6+C,kBACvCn+C,KAAWk+C,GAAS5+C,QAAQ6+C;YAAAA;AAIhC,gBAAIC,KAAqBjC,GAA0BC,IAAca,EAAAA,GAC7DoB,KAAYD,MAAsBE,KAAsBF,GAAmBxB,WAAW,EAAA,IAAM,IAE5F2B,KAAYv+C,IACZw+C,KAAiBD,GAAUC,gBAC3BC,KAAqBF,GAAUE,oBAC/BC,KAAyBH,GAAUG,wBACnCC,KAAuBJ,GAAUI,sBACjCC,KAAa3B,GAAiB2B,YAG9BC,KAAe,CAAA;AACnB,gBAAA;AACEA,mBAAen9C,GAAM1B,EAAAA,EAAU6+C,eAAe7+C,GAAS6+C,eAAe,CAAA;YAAA,SAC/Dt6G,IAAP;YAAOA;AAET,gBAAIu6G,KAAQ,CAAA;AAKZ/B,YAAAA,GAAUC,cAAuC,cAAA,OAAlBiB,MAAgCO,MAAAA,WAAyBA,GAAeO,sBAAuD,MAAjBF;AAE7I,gBAAIG,KAAmBtD,IACnBuD,KAActD,IACduD,KAAetD,IACfuD,KAAetD,IACfuD,KAAuBrD,IACvBsD,KAAqBrD,IACrBsD,KAAoBxD,IASpByD,KAAe,MACfC,KAAuB5E,GAAS,CAAA,GAAI,CAAA,EAAGviG,OAAO4jG,GAAqBh9C,EAAAA,GAAOg9C,GAAqBf,EAAAA,GAAMe,GAAqBd,EAAAA,GAAac,GAAqBZ,EAAAA,GAASY,GAAqBz5E,EAAAA,CAAAA,CAAAA,GAG1Li9E,KAAe,MACfC,KAAuB9E,GAAS,CAAA,GAAI,CAAA,EAAGviG,OAAO4jG,GAAqBV,EAAAA,GAASU,GAAqBT,CAAAA,GAAQS,GAAqBR,EAAAA,GAAWQ,GAAqBjxF,EAAAA,CAAAA,CAAAA,GAG9JgtF,KAAc,MAGdJ,KAAc,MAGd+H,KAAAA,MAGAhI,KAAAA,MAGAiI,KAAAA,OAKAC,KAAAA,OAGAC,KAAAA,OAGAC,KAAAA,OAIAC,KAAAA,OAMAC,KAAAA,OAIAC,KAAAA,OAWAC,KAAAA,MAIA7B,KAAAA,OAGA8B,KAAAA,MAGAC,KAAAA,MAIAC,KAAAA,OAGAC,KAAe,CAAA,GAGfC,KAAkB,MAClBC,KAA0B7F,GAAS,CAAA,GAAI,CAAC,kBAAkB,SAAS,YAAY,QAAQ,iBAAiB,QAAQ,UAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,SAAS,WAAW,YAAY,YAAY,aAAa,UAAU,SAAS,OAAO,YAAY,SAAS,SAAS,SAAS,KAAA,CAAA,GAGpR8F,KAAgB,MAChBC,KAAwB/F,GAAS,CAAA,GAAI,CAAC,SAAS,SAAS,OAAO,UAAU,SAAS,OAAA,CAAA,GAGlFgG,KAAsB,MACtBC,KAA8BjG,GAAS,CAAA,GAAI,CAAC,OAAO,SAAS,OAAO,MAAM,SAAS,QAAQ,WAAW,eAAe,QAAQ,WAAW,SAAS,SAAS,SAAS,OAAA,CAAA,GAElKkG,KAAmB,sCACnBC,KAAgB,8BAChBC,KAAiB,gCAEjBC,KAAYD,IACZE,KAAAA,OAGAC,KAAAA,QACAC,KAA+B,CAAC,yBAAyB,WAAA,GACzDC,KAA4B,aAC5BC,KAAAA,QAGAC,KAAS,MAKTC,KAAcxhD,GAASvI,cAAc,MAAA,GAQrCgqD,KAAe,SAAsBhd,IAAAA;AACnC8c,oBAAUA,OAAW9c,OAKpBA,MAAqE,cAAA,WAAtDA,KAAsB,cAAc3tE,GAAQ2tE,EAAAA,OAC9DA,KAAM,CAAA,IAIRA,KAAM/iC,GAAM+iC,EAAAA,GAGZ8a,KAAe,kBAAkB9a,KAAMmW,GAAS,CAAA,GAAInW,GAAI8a,YAAAA,IAAgBC,IACxEC,KAAe,kBAAkBhb,KAAMmW,GAAS,CAAA,GAAInW,GAAIgb,YAAAA,IAAgBC,IACxEkB,KAAsB,uBAAuBnc,KAAMmW,GAASl5C,GAAMm/C,EAAAA,GAA8Bpc,GAAIid,iBAAAA,IAAqBb,IACzHH,KAAgB,uBAAuBjc,KAAMmW,GAASl5C,GAAMi/C,EAAAA,GAAwBlc,GAAIkd,iBAAAA,IAAqBhB,IAC7GH,KAAkB,qBAAqB/b,KAAMmW,GAAS,CAAA,GAAInW,GAAI+b,eAAAA,IAAmBC,IACjFzI,KAAc,iBAAiBvT,KAAMmW,GAAS,CAAA,GAAInW,GAAIuT,WAAAA,IAAe,CAAA,GACrEJ,KAAc,iBAAiBnT,KAAMmW,GAAS,CAAA,GAAInW,GAAImT,WAAAA,IAAe,CAAA,GACrE2I,KAAe,kBAAkB9b,MAAMA,GAAI8b,cAC3CZ,KAAAA,UAAkBlb,GAAIkb,iBACtBhI,KAAAA,UAAkBlT,GAAIkT,iBACtBiI,KAA0Bnb,GAAImb,2BAAAA,OAC9BC,KAAqBpb,GAAIob,sBAAAA,OACzBC,KAAiBrb,GAAIqb,kBAAAA,OACrBG,KAAaxb,GAAIwb,cAAAA,OACjBC,KAAsBzb,GAAIyb,uBAAAA,OAC1BC,KAAAA,UAAoB1b,GAAI0b,mBACxB7B,KAAsB7Z,GAAI6Z,uBAAAA,OAC1B0B,KAAavb,GAAIub,cAAAA,OACjBI,KAAAA,UAAe3b,GAAI2b,cACnBC,KAAAA,UAAe5b,GAAI4b,cACnBC,KAAW7b,GAAI6b,YAAAA,OACfhB,KAAoB7a,GAAImd,sBAAsBtC,IAC9C2B,KAAYxc,GAAIwc,aAAaD,IAE7BG,KAEqEA,KAAAA,OAArEC,GAA6Bh7G,QAAQq+F,GAAI0c,iBAAAA,IAAgDE,KAAgD5c,GAAI0c,mBAG7IG,KAA0C,4BAAtBH,KAAgD,SAAUzyG,IAAAA;AAC5E,uBAAOA;cAAAA,IACLyrG,IAEA0F,OACFlI,KAAAA,QAGEuI,OACFD,KAAAA,OAIEM,OACFhB,KAAe3E,GAAS,CAAA,GAAI,CAAA,EAAGviG,OAAO4jG,GAAqBz5E,EAAAA,CAAAA,CAAAA,GAC3Di9E,KAAe,CAAA,GAAA,SACXc,GAAathD,SACf27C,GAAS2E,IAActgD,EAAAA,GACvB27C,GAAS6E,IAAclE,EAAAA,IAAAA,SAGrBgF,GAAarF,QACfN,GAAS2E,IAAcrE,EAAAA,GACvBN,GAAS6E,IAAcjE,CAAAA,GACvBZ,GAAS6E,IAAcz0F,EAAAA,IAAAA,SAGrBu1F,GAAapF,eACfP,GAAS2E,IAAcpE,EAAAA,GACvBP,GAAS6E,IAAcjE,CAAAA,GACvBZ,GAAS6E,IAAcz0F,EAAAA,IAAAA,SAGrBu1F,GAAalF,WACfT,GAAS2E,IAAclE,EAAAA,GACvBT,GAAS6E,IAAchE,EAAAA,GACvBb,GAAS6E,IAAcz0F,EAAAA,KAKvBy5E,GAAIod,aACFtC,OAAiBC,OACnBD,KAAe79C,GAAM69C,EAAAA,IAGvB3E,GAAS2E,IAAc9a,GAAIod,QAAAA,IAGzBpd,GAAIsT,aACF0H,OAAiBC,OACnBD,KAAe/9C,GAAM+9C,EAAAA,IAGvB7E,GAAS6E,IAAchb,GAAIsT,QAAAA,IAGzBtT,GAAIid,qBACN9G,GAASgG,IAAqBnc,GAAIid,iBAAAA,GAGhCjd,GAAI+b,oBACFA,OAAoBC,OACtBD,KAAkB9+C,GAAM8+C,EAAAA,IAG1B5F,GAAS4F,IAAiB/b,GAAI+b,eAAAA,IAI5BH,OACFd,GAAa,OAAA,IAAA,OAIXO,MACFlF,GAAS2E,IAAc,CAAC,QAAQ,QAAQ,MAAA,CAAA,GAItCA,GAAauC,UACflH,GAAS2E,IAAc,CAAC,OAAA,CAAA,GAAA,OACjBvH,GAAY+J,QAKjBpI,MACFA,GAAOlV,EAAAA,GAGT8c,KAAS9c;YAAAA,GAGPud,KAAiCpH,GAAS,CAAA,GAAI,CAAC,MAAM,MAAM,MAAM,MAAM,OAAA,CAAA,GAEvEqH,KAA0BrH,GAAS,CAAA,GAAI,CAAC,iBAAiB,QAAQ,SAAS,gBAAA,CAAA,GAK1EsH,KAAetH,GAAS,CAAA,GAAIM,EAAAA;AAChCN,YAAAA,GAASsH,IAAc/G,EAAAA,GACvBP,GAASsH,IAAc9G,EAAAA;AAEvB,gBAAI+G,KAAkBvH,GAAS,CAAA,GAAIS,EAAAA;AACnCT,YAAAA,GAASuH,IAAiB7G,EAAAA;AAU1B,gBAAI8G,KAAuB,SAA8B/d,IAAAA;AACvD,kBAAIge,KAASpE,GAAc5Z,EAAAA;AAItBge,cAAAA,MAAWA,GAAOjnE,YACrBinE,KAAS,EACPC,cAActB,IACd5lE,SAAS,WAAA;AAIb,kBAAIA,KAAU++D,GAAkB9V,GAAQjpD,OAAAA,GACpCmnE,KAAgBpI,GAAkBkI,GAAOjnE,OAAAA;AAE7C,kBAAIipD,GAAQie,iBAAiBvB;AAI3B,uBAAIsB,GAAOC,iBAAiBtB,KACP,UAAZ5lE,KAMLinE,GAAOC,iBAAiBxB,KACP,UAAZ1lE,OAAwC,qBAAlBmnE,MAAsCP,GAA+BO,EAAAA,KAK7F1nC,QAAQqnC,GAAa9mE,EAAAA,CAAAA;AAG9B,kBAAIipD,GAAQie,iBAAiBxB;AAI3B,uBAAIuB,GAAOC,iBAAiBtB,KACP,WAAZ5lE,KAKLinE,GAAOC,iBAAiBvB,KACP,WAAZ3lE,MAAsB6mE,GAAwBM,EAAAA,IAKhD1nC,QAAQsnC,GAAgB/mE,EAAAA,CAAAA;AAGjC,kBAAIipD,GAAQie,iBAAiBtB,IAAgB;AAI3C,oBAAIqB,GAAOC,iBAAiBvB,MAAAA,CAAkBkB,GAAwBM,EAAAA;AACpE,yBAAA;AAGF,oBAAIF,GAAOC,iBAAiBxB,MAAAA,CAAqBkB,GAA+BO,EAAAA;AAC9E,yBAAA;AAOF,oBAAIC,KAA2B5H,GAAS,CAAA,GAAI,CAAC,SAAS,SAAS,QAAQ,KAAK,QAAA,CAAA;AAI5E,uBAAA,CAAQuH,GAAgB/mE,EAAAA,MAAaonE,GAAyBpnE,EAAAA,KAAAA,CAAa8mE,GAAa9mE,EAAAA;cAAAA;AAM1F,qBAAA;YAAO,GAQLqnE,KAAe,SAAsBn6G,IAAAA;AACvC4xG,cAAAA,GAAU6C,GAAUntG,SAAS,EAAEy0F,SAAS/7F,GAAAA,CAAAA;AACxC,kBAAA;AAEEA,gBAAAA,GAAKo6G,WAAWC,YAAYr6G,EAAAA;cAAAA,SACrB/D,IAAP;AACA,oBAAA;AACE+D,kBAAAA,GAAKs6G,YAAYvE;gBAAAA,SACV95G,IAAP;AACA+D,kBAAAA,GAAKkB,OAAAA;gBAAAA;cAAAA;YAAAA,GAWPq5G,KAAmB,SAA0B7qH,IAAMsQ,IAAAA;AACrD,kBAAA;AACE4xG,gBAAAA,GAAU6C,GAAUntG,SAAS,EAC3BmnE,WAAWzuE,GAAKw6G,iBAAiB9qH,EAAAA,GACjCwb,MAAMlL,GAAAA,CAAAA;cAAAA,SAED/D,IAAP;AACA21G,gBAAAA,GAAU6C,GAAUntG,SAAS,EAC3BmnE,WAAW,MACXvjE,MAAMlL,GAAAA,CAAAA;cAAAA;AAOV,kBAHAA,GAAKy6G,gBAAgB/qH,EAAAA,GAGR,SAATA,MAAAA,CAAkBynH,GAAaznH,EAAAA;AACjC,oBAAIioH,MAAcC;AAChB,sBAAA;AACEuC,uBAAan6G,EAAAA;kBAAAA,SACN/D,IAAP;kBAAOA;;AAET,sBAAA;AACE+D,oBAAAA,GAAKmvG,aAAaz/G,IAAM,EAAA;kBAAA,SACjBuM,IAAP;kBAAOA;YAAAA,GAWXy+G,KAAgB,SAAuBC,IAAAA;AAEzC,kBAAIC,KAAAA,QACAC,KAAAA;AAEJ,kBAAInD;AACFiD,gBAAAA,KAAQ,sBAAsBA;mBACzB;AAEL,oBAAI/V,KAAUkN,GAAY6I,IAAO,aAAA;AACjCE,gBAAAA,KAAoBjW,MAAWA,GAAQ,CAAA;cAAA;AAGf,0CAAtBiU,OAEF8B,KAAQ,mEAAmEA,KAAQ;AAGrF,kBAAIG,KAAehF,KAAqBA,GAAmBxB,WAAWqG,EAAAA,IAASA;AAK/E,kBAAIhC,OAAcD;AAChB,oBAAA;AACEkC,kBAAAA,KAAM,IAAItF,KAAYyF,gBAAgBD,IAAcjC,EAAAA;gBAAAA,SAC7C58G,IAAP;gBAAOA;AAIX,kBAAA,CAAK2+G,MAAAA,CAAQA,GAAI16G,iBAAiB;AAChC06G,gBAAAA,KAAM1E,GAAe8E,eAAerC,IAAW,YAAY,IAAA;AAC3D,oBAAA;AACEiC,kBAAAA,GAAI16G,gBAAgB2pF,YAAY+uB,KAAiB,KAAKkC;gBAAAA,SAC/C7+G,IAAP;gBAAOA;cAAAA;AAKX,kBAAIkqD,KAAOy0D,GAAIz0D,QAAQy0D,GAAI16G;AAO3B,qBALIy6G,MAASE,MACX10D,GAAK80D,aAAavjD,GAASwjD,eAAeL,EAAAA,GAAoB10D,GAAKg1D,WAAW,CAAA,KAAM,IAAA,GAIlFxC,OAAcD,KACTrC,GAAqB/mH,KAAKsrH,IAAKpD,KAAiB,SAAS,MAAA,EAAQ,CAAA,IAGnEA,KAAiBoD,GAAI16G,kBAAkBimD;YAAAA,GAS5Ci1D,KAAkB,SAAyB52G,IAAAA;AAC7C,qBAAO2xG,GAAmB7mH,KAAKkV,GAAKqxG,iBAAiBrxG,IAAMA,IAAMwwG,GAAWqG,eAAerG,GAAWsG,eAAetG,GAAWuG,WAAW,MAAA,KAAM;YAAA,GAS/IC,KAAe,SAAsBC,IAAAA;AACvC,qBAAA,EAAIA,cAAerG,MAAQqG,cAAepG,MAId,YAAA,OAAjBoG,GAAIC,YAAoD,YAAA,OAApBD,GAAIE,eAAuD,cAAA,OAApBF,GAAIpB,eAAgCoB,GAAIG,sBAAsB1G,MAAgD,cAAA,OAAxBuG,GAAIhB,mBAA8D,cAAA,OAArBgB,GAAItM,gBAA2D,YAAA,OAArBsM,GAAIzB,gBAAyD,cAAA,OAArByB,GAAIR;YAAAA,GAa7SY,KAAU,SAAiBhrH,IAAAA;AAC7B,qBAAuE,cAAA,WAAxDikH,KAAuB,cAActmF,GAAQsmF,EAAAA,KAAsBjkH,cAAkBikH,KAAOjkH,MAA8E,cAAA,WAA5DA,KAAyB,cAAc29B,GAAQ39B,EAAAA,MAAoD,YAAA,OAApBA,GAAOkP,YAAoD,YAAA,OAApBlP,GAAO6qH;YAAAA,GAWxPI,KAAe,SAAsBC,IAAYC,IAAa32F,IAAAA;AAC3DmxF,iBAAMuF,EAAAA,KAIXtK,GAAa+E,GAAMuF,EAAAA,GAAa,SAAUE,IAAAA;AACxCA,gBAAAA,GAAK3sH,KAAKmlH,IAAWuH,IAAa32F,IAAM4zF,EAAAA;cAAAA,CAAAA;YAAAA,GAcxCiD,KAAoB,SAA2BF,IAAAA;AACjD,kBAAIhlD,KAAAA;AAMJ,kBAHA8kD,GAAa,0BAA0BE,IAAa,IAAA,GAGhDR,GAAaQ,EAAAA;AAEf,uBADA7B,GAAa6B,EAAAA,GAAAA;AAKf,kBAAIlK,GAAYkK,GAAYN,UAAU,iBAAA;AAEpC,uBADAvB,GAAa6B,EAAAA,GAAAA;AAKf,kBAAIlpE,KAAUkmE,GAAkBgD,GAAYN,QAAAA;AAS5C,kBANAI,GAAa,uBAAuBE,IAAa,EAC/ClpE,SAASA,IACTqpE,aAAalF,GAAAA,CAAAA,GAAAA,CAIV4E,GAAQG,GAAYI,iBAAAA,MAAAA,CAAwBP,GAAQG,GAAYhlD,OAAAA,KAAAA,CAAa6kD,GAAQG,GAAYhlD,QAAQolD,iBAAAA,MAAuBlK,GAAW,WAAW8J,GAAYnyB,SAAAA,KAAcqoB,GAAW,WAAW8J,GAAYL,WAAAA;AAErN,uBADAxB,GAAa6B,EAAAA,GAAAA;AAKf,kBAAgB,aAAZlpE,MAAwBo/D,GAAW,cAAc8J,GAAYnyB,SAAAA;AAE/D,uBADAswB,GAAa6B,EAAAA,GAAAA;AAKf,kBAAA,CAAK/E,GAAankE,EAAAA,KAAY48D,GAAY58D,EAAAA,GAAU;AAElD,oBAAIilE,MAAAA,CAAiBG,GAAgBplE,EAAAA,GAAU;AAC7C,sBAAIsnE,KAAazE,GAAcqG,EAAAA,KAAgBA,GAAY5B,YACvDe,KAAazF,GAAcsG,EAAAA,KAAgBA,GAAYb;AAE3D,sBAAIA,MAAcf;AAGhB,6BAASjrH,KAFQgsH,GAAW9mH,SAEF,GAAGlF,MAAK,GAAA,EAAKA;AACrCirH,sBAAAA,GAAWa,aAAazF,GAAU2F,GAAWhsH,EAAAA,GAAAA,IAAI,GAAOsmH,GAAeuG,EAAAA,CAAAA;gBAAAA;AAM7E,uBADA7B,GAAa6B,EAAAA,GAAAA;cACN;AAIT,qBAAIA,cAAuBjH,MAAAA,CAAY+E,GAAqBkC,EAAAA,KAC1D7B,GAAa6B,EAAAA,GAAAA,QAIE,eAAZlpE,MAAsC,cAAZA,MAAAA,CAA0Bo/D,GAAW,wBAAwB8J,GAAYnyB,SAAAA,KAMpG0tB,MAA+C,MAAzByE,GAAYj8G,aAEpCi3D,KAAUglD,GAAYL,aACtB3kD,KAAU+6C,GAAc/6C,IAAS0/C,IAAkB,GAAA,GACnD1/C,KAAU+6C,GAAc/6C,IAAS2/C,IAAa,GAAA,GAC1CqF,GAAYL,gBAAgB3kD,OAC9B46C,GAAU6C,GAAUntG,SAAS,EAAEy0F,SAASigB,GAAYxG,UAAAA,EAAAA,CAAAA,GACpDwG,GAAYL,cAAc3kD,MAK9B8kD,GAAa,yBAAyBE,IAAa,IAAA,GAAA,UAjBjD7B,GAAa6B,EAAAA,GAAAA;YACN,GA8BPK,KAAoB,SAA2BC,IAAOC,IAAQnsH,IAAAA;AAEhE,kBAAI0nH,OAA4B,SAAXyE,MAA8B,WAAXA,QAAuBnsH,MAASsnE,MAAYtnE,MAAS8oH;AAC3F,uBAAA;AAOF,kBAAI7J,MAAAA,CAAoBC,GAAYiN,EAAAA,KAAWrK,GAAW0E,IAAc2F,EAAAA;AAAAA;uBAAoBlF,MAAmBnF,GAAW2E,IAAc0F,EAAAA;AAAAA;mBAAgB;AAAA,oBAAA,CAAKpF,GAAaoF,EAAAA,KAAWjN,GAAYiN,EAAAA;AAC/L,yBAAA;AAGK,oBAAIjE,GAAoBiE,EAAAA;AAAAA;yBAAoBrK,GAAW8E,IAAmBjF,GAAc3hH,IAAO2mH,IAAoB,EAAA,CAAA;AAAA;yBAA6B,UAAXwF,MAA+B,iBAAXA,MAAsC,WAAXA,MAAgC,aAAVD,MAAwD,MAAlCtK,GAAc5hH,IAAO,OAAA,KAAA,CAAkBgoH,GAAckE,EAAAA;AAAe,sBAAIhF,MAAAA,CAA4BpF,GAAW4E,IAAsB/E,GAAc3hH,IAAO2mH,IAAoB,EAAA,CAAA;AAAA;2BAAkB3mH;AACra,2BAAA;;cAAO;AAGT,qBAAA;YAAO,GAaLosH,KAAsB,SAA6BR,IAAAA;AACrD,kBAAIS,KAAAA,QACArsH,KAAAA,QACAmsH,KAAAA,QACAntH,KAAAA;AAEJ0sH,iBAAa,4BAA4BE,IAAa,IAAA;AAEtD,kBAAIJ,KAAaI,GAAYJ;AAI7B,kBAAKA,IAAL;AAIA,oBAAIc,KAAY,EACdhgB,UAAU,IACVC,WAAW,IACXggB,UAAAA,MACAC,mBAAmBzF,GAAAA;AAKrB,qBAHA/nH,KAAIwsH,GAAWvnH,QAGRjF,QAAK;AAEV,sBAAIs+E,KADJ+uC,KAAOb,GAAWxsH,EAAAA,GAEdM,KAAOg+E,GAAMh+E,MACbsqH,KAAetsC,GAAMssC;AAazB,sBAXA5pH,KAAQ6hH,GAAWwK,GAAKrsH,KAAAA,GACxBmsH,KAASvD,GAAkBtpH,EAAAA,GAG3BgtH,GAAUhgB,WAAW6f,IACrBG,GAAU/f,YAAYvsG,IACtBssH,GAAUC,WAAAA,MACVD,GAAUG,gBAAAA,QACVf,GAAa,yBAAyBE,IAAaU,EAAAA,GACnDtsH,KAAQssH,GAAU/f,WAAAA,CAEd+f,GAAUG,kBAKdtC,GAAiB7qH,IAAMssH,EAAAA,GAGlBU,GAAUC;AAKf,wBAAIzK,GAAW,QAAQ9hH,EAAAA;AACrBmqH,yBAAiB7qH,IAAMssH,EAAAA;yBADzB;AAMIzE,6BACFnnH,KAAQ2hH,GAAc3hH,IAAOsmH,IAAkB,GAAA,GAC/CtmH,KAAQ2hH,GAAc3hH,IAAOumH,IAAa,GAAA;AAI5C,0BAAI2F,KAAQtD,GAAkBgD,GAAYN,QAAAA;AAC1C,0BAAKW,GAAkBC,IAAOC,IAAQnsH,EAAAA;AAKtC,4BAAA;AACM4pH,0BAAAA,KACFgC,GAAYc,eAAe9C,IAActqH,IAAMU,EAAAA,IAG/C4rH,GAAY7M,aAAaz/G,IAAMU,EAAAA,GAGjCuhH,GAAS8C,GAAUntG,OAAAA;wBAAAA,SACZrL,IAAP;wBAAOA;oBAAAA;gBAAAA;AAIX6/G,mBAAa,2BAA2BE,IAAa,IAAA;cAAA;YAAA,GAQnDe,KAAqB,SAASA,GAAmBxd,IAAAA;AACnD,kBAAIyd,KAAAA,QACAC,KAAiB7B,GAAgB7b,EAAAA;AAKrC,mBAFAuc,GAAa,2BAA2Bvc,IAAU,IAAA,GAE3Cyd,KAAaC,GAAeC,SAAAA;AAEjCpB,mBAAa,0BAA0BkB,IAAY,IAAA,GAG/Cd,GAAkBc,EAAAA,MAKlBA,GAAWhmD,mBAAmB49C,MAChCmI,GAAmBC,GAAWhmD,OAAAA,GAIhCwlD,GAAoBQ,EAAAA;AAItBlB,iBAAa,0BAA0Bvc,IAAU,IAAA;YAAA;AAyQnD,mBA9PAkV,GAAUjF,WAAW,SAAUmL,IAAOxe,IAAAA;AACpC,kBAAIh2C,KAAAA,QACAg3D,KAAAA,QACAnB,KAAAA,QACAoB,KAAAA,QACAC,KAAAA;AAUJ,mBANAzE,KAAAA,CAAkB+B,QAEhBA,KAAQ,UAIW,YAAA,OAAVA,MAAAA,CAAuBkB,GAAQlB,EAAAA,GAAQ;AAEhD,oBAA8B,cAAA,OAAnBA,GAAM/iH;AACf,wBAAMu6G,GAAgB,4BAAA;AAGtB,oBAAqB,YAAA,QADrBwI,KAAQA,GAAM/iH,SAAAA;AAEZ,wBAAMu6G,GAAgB,iCAAA;cAAA;AAM5B,kBAAA,CAAKsC,GAAUC,aAAa;AAC1B,oBAAqC,aAAjClmF,GAAQ9C,GAAO4xF,YAAAA,KAA6D,cAAA,OAAxB5xF,GAAO4xF,cAA6B;AAC1F,sBAAqB,YAAA,OAAV3C;AACT,2BAAOjvF,GAAO4xF,aAAa3C,EAAAA;AAG7B,sBAAIkB,GAAQlB,EAAAA;AACV,2BAAOjvF,GAAO4xF,aAAa3C,GAAML,SAAAA;gBAAAA;AAIrC,uBAAOK;cAAAA;AAgBT,kBAZKlD,MACH0B,GAAahd,EAAAA,GAIfsY,GAAUntG,UAAU,CAAA,GAGC,YAAA,OAAVqzG,OACT3C,KAAAA,QAGEA;AAAAA;uBAAqB2C,cAAiB7F;AAKV,uBAD9BqI,MADAh3D,KAAOu0D,GAAc,SAAA,GACD7E,cAAcS,WAAWqE,IAAAA,IAAO,GACnC56G,YAA4C,WAA1Bo9G,GAAazB,YAGX,WAA1ByB,GAAazB,WADtBv1D,KAAOg3D,KAKPh3D,GAAKyR,YAAYulD,EAAAA;mBAEd;AAEL,oBAAA,CAAKxF,MAAAA,CAAeJ,MAAAA,CAAuBC,MAAAA,OAE3CmD,GAAM78G,QAAQ,GAAA;AACZ,yBAAOg4G,MAAsBE,KAAsBF,GAAmBxB,WAAWqG,EAAAA,IAASA;AAO5F,oBAAA,EAHAx0D,KAAOu0D,GAAcC,EAAAA;AAInB,yBAAOhD,KAAa,OAAO5B;cAAAA;AAK3B5vD,cAAAA,MAAQuxD,MACVyC,GAAah0D,GAAKo3D,UAAAA;AAOpB,uBAHIC,KAAepC,GAAgBpD,KAAW2C,KAAQx0D,EAAAA,GAG/C61D,KAAcwB,GAAaN,SAAAA;AAEH,sBAAzBlB,GAAYj8G,YAAkBi8G,OAAgBoB,MAK9ClB,GAAkBF,EAAAA,MAKlBA,GAAYhlD,mBAAmB49C,MACjCmI,GAAmBf,GAAYhlD,OAAAA,GAIjCwlD,GAAoBR,EAAAA,GAEpBoB,KAAUpB;AAMZ,kBAHAoB,KAAU,MAGNpF;AACF,uBAAO2C;AAIT,kBAAIhD,IAAY;AACd,oBAAIC;AAGF,uBAFAyF,KAAajH,GAAuB9mH,KAAK62D,GAAK0vD,aAAAA,GAEvC1vD,GAAKo3D;AAEVF,oBAAAA,GAAWzlD,YAAYzR,GAAKo3D,UAAAA;;AAG9BF,kBAAAA,KAAal3D;AAcf,uBAXI0xD,OAQFwF,KAAa/G,GAAWhnH,KAAKqlH,IAAkB0I,IAAAA,IAAY,IAGtDA;cAAAA;AAGT,kBAAII,KAAiBjG,KAAiBrxD,GAAKm0D,YAAYn0D,GAAK0jC;AAQ5D,qBALI0tB,OACFkG,KAAiB1L,GAAc0L,IAAgB/G,IAAkB,GAAA,GACjE+G,KAAiB1L,GAAc0L,IAAgB9G,IAAa,GAAA,IAGvDb,MAAsBE,KAAsBF,GAAmBxB,WAAWmJ,EAAAA,IAAkBA;YAAAA,GASrGhJ,GAAUiJ,YAAY,SAAUvhB,IAAAA;AAC9Bgd,iBAAahd,EAAAA,GACbsb,KAAAA;YAAa,GAQfhD,GAAUkJ,cAAc,WAAA;AACtB1E,mBAAS,MACTxB,KAAAA;YAAa,GAafhD,GAAUmJ,mBAAmB,SAAU/0E,IAAK4zE,IAAMrsH,IAAAA;AAE3C6oH,oBACHE,GAAa,CAAA,CAAA;AAGf,kBAAImD,KAAQtD,GAAkBnwE,EAAAA,GAC1B0zE,KAASvD,GAAkByD,EAAAA;AAC/B,qBAAOJ,GAAkBC,IAAOC,IAAQnsH,EAAAA;YAAAA,GAU1CqkH,GAAUvF,UAAU,SAAU6M,IAAY8B,IAAAA;AACZ,4BAAA,OAAjBA,OAIXrH,GAAMuF,EAAAA,IAAcvF,GAAMuF,EAAAA,KAAe,CAAA,GACzCnK,GAAU4E,GAAMuF,EAAAA,GAAa8B,EAAAA;YAAAA,GAU/BpJ,GAAUqJ,aAAa,SAAU/B,IAAAA;AAC3BvF,iBAAMuF,EAAAA,KACRpK,GAAS6E,GAAMuF,EAAAA,CAAAA;YAAAA,GAUnBtH,GAAUsJ,cAAc,SAAUhC,IAAAA;AAC5BvF,iBAAMuF,EAAAA,MACRvF,GAAMuF,EAAAA,IAAc,CAAA;YAAA,GASxBtH,GAAUuJ,iBAAiB,WAAA;AACzBxH,mBAAQ,CAAA;YAAA,GAGH/B;UAAAA;AAKT,iBAFaD,EAAAA;QAAAA,EA72CmEr5F;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHlF,YAAIoO,KAAS34B,GAAQ,EAAA,GACjB2lE,KAAa3lE,GAAQ,EAAA,GACrB64B,KAAa74B,GAAQ,EAAA,GACrBuhC,KAAgBvhC,GAAQ,EAAA,GACxBsiC,KAAoBtiC,GAAQ,GAAA,GAE5Bf,KAAS05B,GAAO15B;AAEpBX,QAAAA,GAAOD,UAAUikC,KAAoB,SAAU3H,IAAAA;AAC7C,iBAAoB,YAAA,OAANA;QAAAA,IACZ,SAAUA,IAAAA;AACZ,cAAI0yF,KAAU1nD,GAAW,QAAA;AACzB,iBAAO9sC,GAAWw0F,EAAAA,KAAY9rF,GAAc8rF,GAAQltH,WAAWlB,GAAO07B,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACXxE,YAAI6wD,KAAaxrF,GAAQ,GAAA,GACrBikC,KAAQjkC,GAAQ,EAAA;AAGpB1B,QAAAA,GAAOD,UAAAA,CAAAA,CAAYY,OAAO4lB,yBAAAA,CAA0Bof,GAAM,WAAA;AACxD,cAAIqpF,KAAShuH,OAAAA;AAGb,iBAAA,CAAQgqB,OAAOgkG,EAAAA,KAAAA,EAAaruH,OAAOquH,EAAAA,aAAmBhuH,WAAAA,CAEnDA,OAAOm7B,QAAQ+wD,MAAcA,KAAa;QAAA,CAAA;MAAA,GAAA,SAAAjrF,IAAAd,IAAAO,IAAA;ACX/C,YAAIytC,KAAYztC,GAAQ,EAAA;AAIxB1B,QAAAA,GAAOD,UAAU,SAAUomC,IAAGxW,IAAAA;AAC5B,cAAIkN,KAAOsJ,GAAExW,EAAAA;AACb,iBAAe,QAARkN,KAAAA,SAA2BsS,GAAUtS,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACN9C,YAAIizB,KAAUpuD,GAAQ,EAAA,GAClBwsD,KAAQxsD,GAAQ,GAAA;AAAA,SAEnB1B,GAAOD,UAAU,SAAUyB,IAAKN,IAAAA;AAC/B,iBAAOgtD,GAAM1sD,EAAAA,MAAS0sD,GAAM1sD,EAAAA,IAAAA,WAAON,KAAsBA,KAAQ,CAAA;QAAA,GAChE,YAAY,CAAA,CAAA,EAAI0V,KAAK,EACtBuqC,SAAS,UACT//C,MAAM0uD,KAAU,SAAS,UACzBm/D,WAAW,gDACXC,SAAS,4DACTj0F,QAAQ,sCAAA,CAAA;MAAA,GAAA,SAAAh5B,IAAAd,IAAAO,IAAA;ACVV,YAAI24B,KAAS34B,GAAQ,EAAA,GACjBytH,KAAYztH,GAAQ,GAAA,GAEpB0tH,KAAS,sBACTlhE,KAAQ7zB,GAAO+0F,EAAAA,KAAWD,GAAUC,IAAQ,CAAA,CAAA;AAEhDpvH,QAAAA,GAAOD,UAAUmuD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNjB,YAAI7zB,KAAS34B,GAAQ,EAAA,GACjByrB,KAAWzrB,GAAQ,EAAA,GAEnB8mE,KAAWnuC,GAAOmuC,UAElB6mD,KAASliG,GAASq7C,EAAAA,KAAar7C,GAASq7C,GAASvI,aAAAA;AAErDjgE,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,iBAAOgzF,KAAS7mD,GAASvI,cAAc5jC,EAAAA,IAAM,CAAA;QAAA;MAAA,GAAA,SAAAp6B,IAAAd,IAAAO,IAAA;ACR/C,YAAI4tH,KAA0B5tH,GAAQ,GAAA;AAItC1B,QAAAA,GAAOD,UAAU,SAAUwvH,IAAepqH,IAAAA;AACxC,iBAAO,KAAKmqH,GAAwBC,EAAAA,GAA2B,MAAXpqH,KAAe,IAAIA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACLzE,YAGIotB,KAAO,CAAA;AAEXA,QAAAA,GALsB7wB,GAAQ,EAAA,EAEM,aAAA,CAAA,IAGd,KAEtB1B,GAAOD,UAA2B,iBAAjBirB,OAAOuH,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPxB,YAAI+H,KAAc54B,GAAQ,EAAA,GACtB64B,KAAa74B,GAAQ,EAAA,GACrBwsD,KAAQxsD,GAAQ,GAAA,GAEhB8tH,KAAmBl1F,GAAYmC,SAAS/zB,QAAAA;AAGvC6xB,QAAAA,GAAW2zB,GAAMsoC,aAAAA,MACpBtoC,GAAMsoC,gBAAgB,SAAUn6D,IAAAA;AAC9B,iBAAOmzF,GAAiBnzF,EAAAA;QAAAA,IAI5Br8B,GAAOD,UAAUmuD,GAAMsoC;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACbvB,YAAI9mC,KAAkBhuD,GAAQ,EAAA,GAC1B+tH,KAAkB/tH,GAAQ,GAAA,GAC1BojC,KAAoBpjC,GAAQ,EAAA,GAG5BmtD,KAAe,SAAU6gE,IAAAA;AAC3B,iBAAO,SAAUrgE,IAAOsgE,IAAIC,IAAAA;AAC1B,gBAGI1uH,IAHA2kC,KAAI6pB,GAAgBL,EAAAA,GACpBlqD,KAAS2/B,GAAkBe,EAAAA,GAC3BjgC,KAAQ6pH,GAAgBG,IAAWzqH,EAAAA;AAIvC,gBAAIuqH,MAAeC,MAAMA,IAAAA;AAAI,qBAAOxqH,KAASS;AAG3C,qBAFA1E,KAAQ2kC,GAAEjgC,IAAAA,MAEG1E;AAAO,yBAAA;YAAO;AAEtB,qBAAMiE,KAASS,IAAOA;AAC3B,qBAAK8pH,MAAe9pH,MAASigC,OAAMA,GAAEjgC,EAAAA,MAAW+pH;AAAI,yBAAOD,MAAe9pH,MAAS;AACnF,mBAAA,CAAQ8pH,MAAAA;UAAgB;QAAA;AAI9B1vH,QAAAA,GAAOD,UAAU,EAGf2O,UAAUmgD,GAAAA,IAAa,GAGvBjgD,SAASigD,GAAAA,KAAa,EAAA;MAAA,GAAA,SAAA5sD,IAAAd,IAAA;AC7BxBnB,QAAAA,GAAOD,UAAU,CACf,eACA,kBACA,iBACA,wBACA,kBACA,YACA,SAAA;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;ACRF,YAAI24B,KAAS34B,GAAQ,EAAA,GACjB+tH,KAAkB/tH,GAAQ,GAAA,GAC1BojC,KAAoBpjC,GAAQ,EAAA,GAC5BmuH,KAAiBnuH,GAAQ,GAAA,GAEzBS,KAAQk4B,GAAOl4B,OACf+C,KAAMD,KAAKC;AAEflF,QAAAA,GAAOD,UAAU,SAAU8lC,IAAGj4B,IAAO3H,IAAAA;AAKnC,mBAJId,KAAS2/B,GAAkBe,EAAAA,GAC3B1+B,KAAIsoH,GAAgB7hH,IAAOzI,EAAAA,GAC3B2qH,KAAML,GAAAA,WAAgBxpH,KAAoBd,KAASc,IAAKd,EAAAA,GACxDs0B,KAASt3B,GAAM+C,GAAI4qH,KAAM3oH,IAAG,CAAA,CAAA,GACvBzF,KAAI,GAAGyF,KAAI2oH,IAAK3oH,MAAKzF;AAAKmuH,YAAAA,GAAep2F,IAAQ/3B,IAAGmkC,GAAE1+B,EAAAA,CAAAA;AAE/D,iBADAsyB,GAAOt0B,SAASzD,IACT+3B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACdT15B,QAAAA,GAAQkuB,IAAIttB,OAAO4lB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACDnB,YAAI0mE,KAAkBvrF,GAAQ,EAAA;AAE9B3B,QAAAA,GAAQkuB,IAAIg/D;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACDZ,YAAI3mD,KAAI5kC,GAAQ,EAAA,GACZtB,KAAOsB,GAAQ,EAAA,GACfouD,KAAUpuD,GAAQ,EAAA,GAClBquH,KAAeruH,GAAQ,GAAA,GACvB64B,KAAa74B,GAAQ,EAAA,GACrBsuH,KAA4BtuH,GAAQ,GAAA,GACpCkiB,KAAiBliB,GAAQ,GAAA,GACzBw3B,KAAiBx3B,GAAQ,GAAA,GACzBuuH,KAAiBvuH,GAAQ,GAAA,GACzBi5B,KAA8Bj5B,GAAQ,EAAA,GACtCiuF,KAAWjuF,GAAQ,GAAA,GACnBurF,KAAkBvrF,GAAQ,EAAA,GAC1Bq1C,KAAYr1C,GAAQ,GAAA,GACpBwuH,KAAgBxuH,GAAQ,GAAA,GAExByuH,KAAuBJ,GAAaK,QACpCC,KAA6BN,GAAa39E,cAC1Ck+E,KAAoBJ,GAAcI,mBAClCC,KAAyBL,GAAcK,wBACvCtiC,KAAWhB,GAAgB,UAAA,GAC3BtkF,KAAO,QACPC,KAAS,UACTC,KAAU,WAEV2nH,KAAa,WAAA;AAAc,iBAAOxpH;QAAAA;AAEtChH,QAAAA,GAAOD,UAAU,SAAU0C,IAAUkiC,IAAM8rF,IAAqB1pH,IAAM2pH,IAASC,IAAQC,IAAAA;AACrFZ,UAAAA,GAA0BS,IAAqB9rF,IAAM59B,EAAAA;AAErD,cAkBI8pH,IAA0BxqG,IAASyqG,IAlBnCC,KAAqB,SAAUC,IAAAA;AACjC,gBAAIA,OAASN,MAAWO;AAAiB,qBAAOA;AAChD,gBAAA,CAAKV,MAA0BS,MAAQzmG;AAAmB,qBAAOA,GAAkBymG,EAAAA;AACnF,oBAAQA,IAAAA;cACN,KAAKroH;cACL,KAAKC;cACL,KAAKC;AAAS,uBAAO,WAAA;AAAqB,yBAAO,IAAI4nH,GAAoBzpH,MAAMgqH,EAAAA;gBAAAA;YAAAA;AAC/E,mBAAO,WAAA;AAAc,qBAAO,IAAIP,GAAoBzpH,IAAAA;YAAAA;UAAAA,GAGpDgwC,KAAgBrS,KAAO,aACvBusF,KAAAA,OACA3mG,KAAoB9nB,GAASZ,WAC7BsvH,KAAiB5mG,GAAkB0jE,EAAAA,KAClC1jE,GAAkB,YAAA,KAClBmmG,MAAWnmG,GAAkBmmG,EAAAA,GAC9BO,IAAAA,CAAmBV,MAA0BY,MAAkBJ,GAAmBL,EAAAA,GAClFU,KAA4B,WAARzsF,MAAkBpa,GAAkB3d,WAA4BukH;AA+BxF,cA3BIC,OACFP,KAA2BjtG,GAAewtG,GAAkBhxH,KAAK,IAAIqC,IAAAA,CAAAA,OACpC9B,OAAOkB,aAAagvH,GAAyB9pH,SACvE+oD,MAAWlsC,GAAeitG,EAAAA,MAA8BP,OACvDp3F,KACFA,GAAe23F,IAA0BP,EAAAA,IAC/B/1F,GAAWs2F,GAAyB5iC,EAAAA,CAAAA,KAC9C0B,GAASkhC,IAA0B5iC,IAAUuiC,EAAAA,IAIjDP,GAAeY,IAA0B75E,IAAAA,MAAe,IAAM,GAC1D8Y,OAAS/Y,GAAUC,EAAAA,IAAiBw5E,MAKxCL,MAAwBO,MAAW9nH,MAAUuoH,MAAkBA,GAAe3wH,SAASoI,OAAAA,CACpFknD,MAAWugE,KACd11F,GAA4BpQ,IAAmB,QAAQ3hB,EAAAA,KAEvDsoH,KAAAA,MACAD,IAAkB,WAAA;AAAoB,mBAAO7wH,GAAK+wH,IAAgBnqH,IAAAA;UAAAA,KAKlE0pH;AAMF,gBALArqG,KAAU,EACRjM,QAAQ22G,GAAmBnoH,EAAAA,GAC3ByB,MAAMsmH,KAASM,IAAkBF,GAAmBpoH,EAAAA,GACpDiE,SAASmkH,GAAmBloH,EAAAA,EAAAA,GAE1B+nH;AAAQ,mBAAKE,MAAOzqG;AAAAA,iBAClBkqG,MAA0BW,MAAAA,EAA2BJ,MAAOvmG,QAC9DolE,GAASplE,IAAmBumG,IAAKzqG,GAAQyqG,EAAAA,CAAAA;;AAEtCxqF,cAAAA,GAAE,EAAE9Z,QAAQmY,IAAM9I,OAAAA,MAAaG,QAAQu0F,MAA0BW,GAAAA,GAAyB7qG,EAAAA;AASnG,iBALMypC,MAAAA,CAAW8gE,MAAWrmG,GAAkB0jE,EAAAA,MAAcgjC,KAC1DthC,GAASplE,IAAmB0jE,IAAUgjC,GAAiB,EAAEzwH,MAAMkwH,GAAAA,CAAAA,GAEjE35E,GAAUpS,EAAAA,IAAQssF,GAEX5qG;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACjGT,YAIIlV,KAJYzP,GAAQ,GAAA,EACbA,GAAQ,EAAA,GAGO,KAAA;AAE1B1B,QAAAA,GAAOD,UAAUoR;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNjB,YAAIkgH,KAAgB3vH,GAAQ,GAAA,GACxB4vH,KAAiB5vH,GAAQ,GAAA,GACzB6vH,KAAc7vH,GAAQ,GAAA,GACtB8vH,KAAc9vH,GAAQ,GAAA,GACtB+vH,KAAc/vH,GAAQ,GAAA;AAS1B,iBAASunE,GAASr8D,IAAAA;AAChB,cAAIhH,KAAAA,IACAT,KAAoB,QAAXyH,KAAkB,IAAIA,GAAQzH;AAG3C,eADA6B,KAAKuL,MAAAA,GAAAA,EACI3M,KAAQT,MAAQ;AACvB,gBAAImG,KAAQsB,GAAQhH,EAAAA;AACpBoB,iBAAK0J,IAAIpF,GAAM,CAAA,GAAIA,GAAM,CAAA,CAAA;UAAA;QAAA;AAK7B29D,QAAAA,GAASpnE,UAAU0Q,QAAQ8+G,IAC3BpoD,GAASpnE,UAAkB,SAAIyvH,IAC/BroD,GAASpnE,UAAUf,MAAMywH,IACzBtoD,GAASpnE,UAAUqL,MAAMskH,IACzBvoD,GAASpnE,UAAU6O,MAAM+gH,IAEzBzxH,GAAOD,UAAUkpE;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/BjB,YAAIroE,KAAiBc,GAAQ,GAAA;AAwB7B1B,QAAAA,GAAOD,UAbP,SAAyB4B,IAAQH,IAAKN,IAAAA;AACzB,yBAAPM,MAAsBZ,KACxBA,GAAee,IAAQH,IAAK,EAC1B,cAAA,MACA,YAAA,MACA,OAASN,IACT,UAAA,KAAY,CAAA,IAGdS,GAAOH,EAAAA,IAAON;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpBlB,YAAIo9C,KAAa58C,GAAQ,GAAA;AAezB1B,QAAAA,GAAOD,UANP,SAA0B2xH,IAAAA;AACxB,cAAIj4F,KAAS,IAAIi4F,GAAYlvH,YAAYkvH,GAAYnhD,UAAAA;AAErD,iBADA,IAAIjyB,GAAW7kB,EAAAA,EAAQ/oB,IAAI,IAAI4tC,GAAWozE,EAAAA,CAAAA,GACnCj4F;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZT,YAGIk4F,KAHUjwH,GAAQ,GAAA,EAGKf,OAAOijB,gBAAgBjjB,MAAAA;AAElDX,QAAAA,GAAOD,UAAU4xH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC6BjB3xH,QAAAA,GAAOD,UALP,SAAkBmB,IAAAA;AAChB,iBAAuB,YAAA,OAATA,MACZA,KAAAA,MAAcA,KAAQ,KAAK,KAAKA,MA9Bb;QAAA;MAAA,GAAA,SAAAe,IAAAd,IAAA;ACYvBnB,QAAAA,GAAOD,UANP,SAAmB88B,IAAAA;AACjB,iBAAO,SAAS37B,IAAAA;AACd,mBAAO27B,GAAK37B,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SCThB,SAAAe,IAAA;AAAA,cAAAlB,KAAiBW,GAAQ,GAAA,GAGrBmsF,KAA4C9tF,MAAAA,CAAYA,GAAQ8Q,YAAY9Q,IAG5E+tF,KAAaD,MAAgC,YAAA,OAAV7tF,MAAsBA,MAAAA,CAAWA,GAAO6Q,YAAY7Q,IAMvF4xH,KAHgB9jC,MAAcA,GAAW/tF,YAAY8tF,MAGtB12C,GAAWk1B,SAG1C+rB,KAAY,WAAA;AACd,gBAAA;AAEE,kBAAI5jE,KAAQs5D,MAAcA,GAAW6zB,WAAW7zB,GAAW6zB,QAAQ,MAAA,EAAQntF;AAE3E,qBAAIA,MAKGo9F,MAAeA,GAAYh3C,WAAWg3C,GAAYh3C,QAAQ,MAAA;YAAA,SAC1D34E,IAAP;YAAOA;UAAAA,EAXI;AAcfjC,UAAAA,GAAOD,UAAUq4F;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,GAAAA,EAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7BjBp4F,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAA;ACmBzBnB,QAAAA,GAAOD,UAXP,SAAmBmK,IAAOkQ,IAAAA;AAKxB,mBAJIxU,KAAAA,IACAT,KAASiV,GAAOjV,QAChBJ,KAASmF,GAAM/E,QAAAA,EAEVS,KAAQT;AACf+E,YAAAA,GAAMnF,KAASa,EAAAA,IAASwU,GAAOxU,EAAAA;AAEjC,iBAAOsE;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBT,YAAI2nH,KAAcnwH,GAAQ,GAAA,GACtBowH,KAAYpwH,GAAQ,GAAA,GAMpB6O,KAHc5P,OAAOkB,UAGc0O,sBAGnCwhH,KAAmBpxH,OAAO4lB,uBAS1ByrG,KAAcD,KAA+B,SAASpwH,IAAAA;AACxD,iBAAc,QAAVA,KACK,CAAA,KAETA,KAAShB,OAAOgB,EAAAA,GACTkwH,GAAYE,GAAiBpwH,EAAAA,GAAS,SAASqtH,IAAAA;AACpD,mBAAOz+G,GAAqBnQ,KAAKuB,IAAQqtH,EAAAA;UAAAA,CAAAA;QAAAA,IANR8C;AAUrC9xH,QAAAA,GAAOD,UAAUiyH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7BjB,YAAIC,KAAWvwH,GAAQ,GAAA,GACnBwwH,KAAQxwH,GAAQ,GAAA;AAsBpB1B,QAAAA,GAAOD,UAZP,SAAiB4B,IAAQ+4B,IAAAA;AAMvB,mBAHI90B,KAAQ,GACRT,MAHJu1B,KAAOu3F,GAASv3F,IAAM/4B,EAAAA,GAGJwD,QAED,QAAVxD,MAAkBiE,KAAQT;AAC/BxD,YAAAA,KAASA,GAAOuwH,GAAMx3F,GAAK90B,IAAAA,CAAAA,CAAAA;AAE7B,iBAAQA,MAASA,MAAST,KAAUxD,KAAAA;QAASuJ;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpB/C,YAAIH,KAAUrJ,GAAQ,EAAA,GAClBk3E,KAAWl3E,GAAQ,GAAA,GAGnBywH,KAAe,oDACfC,KAAgB;AAuBpBpyH,QAAAA,GAAOD,UAbP,SAAemB,IAAOS,IAAAA;AACpB,cAAIoJ,GAAQ7J,EAAAA;AACV,mBAAA;AAEF,cAAIgG,KAAAA,OAAchG;AAClB,iBAAA,EAAY,YAARgG,MAA4B,YAARA,MAA4B,aAARA,MAC/B,QAAThG,MAAAA,CAAiB03E,GAAS13E,EAAAA,OAGvBkxH,GAAc7/F,KAAKrxB,EAAAA,KAAAA,CAAWixH,GAAa5/F,KAAKrxB,EAAAA,KAC1C,QAAVS,MAAkBT,MAASP,OAAOgB,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAOI0wH,IAPAlhC,KAAuB,YAAA,OAAZhqB,UAAuBA,UAAU,MAC5CmrD,KAAenhC,MAAwB,cAAA,OAAZA,GAAEvgF,QAC7BugF,GAAEvgF,QACF,SAAsB4b,IAAQ+lG,IAAUvxE,IAAAA;AACxC,iBAAOvkB,SAAS56B,UAAU+O,MAAMxQ,KAAKosB,IAAQ+lG,IAAUvxE,EAAAA;QAAAA;AAKzDqxE,QAAAA,KADElhC,MAA0B,cAAA,OAAdA,GAAErxD,UACCqxD,GAAErxD,UACVn/B,OAAO4lB,wBACC,SAAwBiG,IAAAA;AACvC,iBAAO7rB,OAAOm2F,oBAAoBtqE,EAAAA,EAC/B3L,OAAOlgB,OAAO4lB,sBAAsBiG,EAAAA,CAAAA;QAAAA,IAGxB,SAAwBA,IAAAA;AACvC,iBAAO7rB,OAAOm2F,oBAAoBtqE,EAAAA;QAAAA;AAQtC,YAAIgmG,KAAc36E,OAAOjlB,SAAS,SAAqB1xB,IAAAA;AACrD,iBAAOA,MAAUA;QAAAA;AAGnB,iBAASuxH,KAAAA;AACPA,UAAAA,GAAaC,KAAKtyH,KAAK4G,IAAAA;QAAAA;AAEzBhH,QAAAA,GAAOD,UAAU0yH,IACjBzyH,GAAOD,QAAQorE,OAwYf,SAAcwnD,IAASnyH,IAAAA;AACrB,iBAAO,IAAI6tF,QAAQ,SAAUnlD,IAASokB,IAAAA;AACpC,qBAASslE,GAAcxgG,IAAAA;AACrBugG,cAAAA,GAAQp4C,eAAe/5E,IAAM0oE,EAAAA,GAC7B5b,GAAOl7B,EAAAA;YAAAA;AAGT,qBAAS82C,KAAAA;AAC+B,4BAAA,OAA3BypD,GAAQp4C,kBACjBo4C,GAAQp4C,eAAe,SAASq4C,EAAAA,GAElC1pF,GAAQ,CAAA,EAAG9mC,MAAMhC,KAAK6I,SAAAA,CAAAA;YAAAA;AAGxB4pH,YAAAA,GAA+BF,IAASnyH,IAAM0oE,IAAU,EAAEiC,MAAAA,KAAM,CAAA,GACnD,YAAT3qE,MAMR,SAAuCmyH,IAASG,IAASC,IAAAA;AAC7B,4BAAA,OAAfJ,GAAQv4C,MACjBy4C,GAA+BF,IAAS,SAASG,IAASC,EAAAA;YAAAA,EAP1BJ,IAASC,IAAe,EAAEznD,MAAAA,KAAM,CAAA;UAAA,CAAA;QAAA,GArZpEsnD,GAAaA,eAAeA,IAE5BA,GAAa5wH,UAAUmxH,UAAAA,QACvBP,GAAa5wH,UAAUoxH,eAAe,GACtCR,GAAa5wH,UAAUqxH,gBAAAA;AAIvB,YAAIC,KAAsB;AAE1B,iBAASC,GAAc/yE,IAAAA;AACrB,cAAwB,cAAA,OAAbA;AACT,kBAAM,IAAIr1C,UAAU,qEAAA,OAA4Eq1C,EAAAA;QAAAA;AAsCpG,iBAASgzE,GAAiBhuF,IAAAA;AACxB,iBAAA,WAAIA,GAAK6tF,gBACAT,GAAaU,sBACf9tF,GAAK6tF;QAAAA;AAmDd,iBAASI,GAAa9mG,IAAQtlB,IAAMm5C,IAAUkzE,IAAAA;AAC5C,cAAIlzH,IACAmzH,IACA18G,IA1HsB28G;AAgJ1B,cApBAL,GAAc/yE,EAAAA,GAAAA,YAEdmzE,KAAShnG,GAAOwmG,YAEdQ,KAAShnG,GAAOwmG,UAAUryH,uBAAOY,OAAO,IAAA,GACxCirB,GAAOymG,eAAe,MAAA,WAIlBO,GAAOE,gBACTlnG,GAAOiuD,KAAK,eAAevzE,IACfm5C,GAASA,WAAWA,GAASA,WAAWA,EAAAA,GAIpDmzE,KAAShnG,GAAOwmG,UAElBl8G,KAAW08G,GAAOtsH,EAAAA,IAAAA,WAGhB4P;AAEFA,YAAAA,KAAW08G,GAAOtsH,EAAAA,IAAQm5C,IAAAA,EACxB7zB,GAAOymG;mBAEe,cAAA,OAAbn8G,KAETA,KAAW08G,GAAOtsH,EAAAA,IAChBqsH,KAAU,CAAClzE,IAAUvpC,EAAAA,IAAY,CAACA,IAAUupC,EAAAA,IAErCkzE,KACTz8G,GAASyD,QAAQ8lC,EAAAA,IAEjBvpC,GAASF,KAAKypC,EAAAA,IAIhBhgD,KAAIgzH,GAAiB7mG,EAAAA,KACb,KAAK1V,GAAS3R,SAAS9E,MAAAA,CAAMyW,GAAS68G,QAAQ;AACpD78G,YAAAA,GAAS68G,SAAAA;AAGT,gBAAIrkG,KAAI,IAAI5hB,MAAM,iDACEoJ,GAAS3R,SAAS,MAAM6lB,OAAO9jB,EAAAA,IADjC,mEAAA;AAIlBooB,YAAAA,GAAE9uB,OAAO,+BACT8uB,GAAEqjG,UAAUnmG,IACZ8C,GAAEpoB,OAAOA,IACTooB,GAAE3a,QAAQmC,GAAS3R,QA7KGsuH,KA8KHnkG,IA7KnBS,WAAWA,QAAQ6T,QAAM7T,QAAQ6T,KAAK6vF,EAAAA;UAAAA;AAiL1C,iBAAOjnG;QAAAA;AAcT,iBAASonG,KAAAA;AACP,cAAA,CAAK5sH,KAAK6sH;AAGR,mBAFA7sH,KAAKwlB,OAAO+tD,eAAevzE,KAAKE,MAAMF,KAAK8sH,MAAAA,GAC3C9sH,KAAK6sH,QAAAA,MACoB,MAArB5qH,UAAU9D,SACL6B,KAAKq5C,SAASjgD,KAAK4G,KAAKwlB,MAAAA,IAC1BxlB,KAAKq5C,SAASzvC,MAAM5J,KAAKwlB,QAAQvjB,SAAAA;QAAAA;AAI5C,iBAAS8qH,GAAUvnG,IAAQtlB,IAAMm5C,IAAAA;AAC/B,cAAIO,KAAQ,EAAEizE,OAAAA,OAAcC,QAAAA,QAAmBtnG,QAAQA,IAAQtlB,MAAMA,IAAMm5C,UAAUA,GAAAA,GACjFy/B,KAAU8zC,GAAYnyH,KAAKm/C,EAAAA;AAG/B,iBAFAk/B,GAAQz/B,WAAWA,IACnBO,GAAMkzE,SAASh0C,IACRA;QAAAA;AA0HT,iBAASk0C,GAAWxnG,IAAQtlB,IAAM+sH,IAAAA;AAChC,cAAIT,KAAShnG,GAAOwmG;AAEpB,cAAA,WAAIQ;AACF,mBAAO,CAAA;AAET,cAAIU,KAAaV,GAAOtsH,EAAAA;AACxB,iBAAA,WAAIgtH,KACK,CAAA,IAEiB,cAAA,OAAfA,KACFD,KAAS,CAACC,GAAW7zE,YAAY6zE,EAAAA,IAAc,CAACA,EAAAA,IAElDD,KAsDT,SAAyBnvH,IAAAA;AAEvB,qBADI8vE,KAAM,IAAIzyE,MAAM2C,GAAIK,MAAAA,GACflF,KAAI,GAAGA,KAAI20E,GAAIzvE,QAAAA,EAAUlF;AAChC20E,cAAAA,GAAI30E,EAAAA,IAAK6E,GAAI7E,EAAAA,EAAGogD,YAAYv7C,GAAI7E,EAAAA;AAElC,mBAAO20E;UAAAA,EA1DWs/C,EAAAA,IAAcC,GAAWD,IAAYA,GAAW/uH,MAAAA;QAAAA;AAoBpE,iBAASivH,GAAcltH,IAAAA;AACrB,cAAIssH,KAASxsH,KAAKgsH;AAElB,cAAA,WAAIQ,IAAsB;AACxB,gBAAIU,KAAaV,GAAOtsH,EAAAA;AAExB,gBAA0B,cAAA,OAAfgtH;AACT,qBAAO;AACF,gBAAA,WAAIA;AACT,qBAAOA,GAAW/uH;UAAAA;AAItB,iBAAO;QAAA;AAOT,iBAASgvH,GAAWrvH,IAAKpD,IAAAA;AAEvB,mBADIsoE,KAAO,IAAI7nE,MAAMT,EAAAA,GACZzB,KAAI,GAAGA,KAAIyB,IAAAA,EAAKzB;AACvB+pE,YAAAA,GAAK/pE,EAAAA,IAAK6E,GAAI7E,EAAAA;AAChB,iBAAO+pE;QAAAA;AA4CT,iBAAS6oD,GAA+BF,IAASnyH,IAAM6/C,IAAU0yE,IAAAA;AAC/D,cAA0B,cAAA,OAAfJ,GAAQv4C;AACb24C,YAAAA,GAAM5nD,OACRwnD,GAAQxnD,KAAK3qE,IAAM6/C,EAAAA,IAEnBsyE,GAAQv4C,GAAG55E,IAAM6/C,EAAAA;eAEd;AAAA,gBAAwC,cAAA,OAA7BsyE,GAAQ0B;AAYxB,oBAAM,IAAIrpH,UAAU,wEAAA,OAA+E2nH,EAAAA;AATnGA,YAAAA,GAAQ0B,iBAAiB7zH,IAAM,SAAS8zH,GAAavlF,IAAAA;AAG/CgkF,cAAAA,GAAM5nD,QACRwnD,GAAQ4B,oBAAoB/zH,IAAM8zH,EAAAA,GAEpCj0E,GAAStR,EAAAA;YAAAA,CAAAA;UAAAA;QAAAA;AAhafpuC,eAAOC,eAAe6xH,IAAc,uBAAuB,EACzD5xH,YAAAA,MACAC,KAAK,WAAA;AACH,iBAAOqyH;QAAAA,GAETziH,KAAK,SAASq+B,IAAAA;AACZ,cAAmB,YAAA,OAARA,MAAoBA,KAAM,KAAKyjF,GAAYzjF,EAAAA;AACpD,kBAAM,IAAIm9B,WAAW,oGAAoGn9B,KAAM,GAAA;AAEjIokF,UAAAA,KAAsBpkF;QAAAA,EAAAA,CAAAA,GAI1B0jF,GAAaC,OAAO,WAAA;AAAA,qBAEd1rH,KAAKgsH,WACLhsH,KAAKgsH,YAAYryH,OAAOijB,eAAe5c,IAAAA,EAAMgsH,YAC/ChsH,KAAKgsH,UAAUryH,uBAAOY,OAAO,IAAA,GAC7ByF,KAAKisH,eAAe,IAGtBjsH,KAAKksH,gBAAgBlsH,KAAKksH,iBAAAA;QAAiBhoH,GAK7CunH,GAAa5wH,UAAU2yH,kBAAkB,SAAyB9yH,IAAAA;AAChE,cAAiB,YAAA,OAANA,MAAkBA,KAAI,KAAK8wH,GAAY9wH,EAAAA;AAChD,kBAAM,IAAIwqE,WAAW,kFAAkFxqE,KAAI,GAAA;AAG7G,iBADAsF,KAAKksH,gBAAgBxxH,IACdsF;QAAAA,GASTyrH,GAAa5wH,UAAU4yH,kBAAkB,WAAA;AACvC,iBAAOpB,GAAiBrsH,IAAAA;QAAAA,GAG1ByrH,GAAa5wH,UAAU44E,OAAO,SAAcvzE,IAAAA;AAE1C,mBADI85C,KAAO,CAAA,GACF/gD,KAAI,GAAGA,KAAIgJ,UAAU9D,QAAQlF;AAAK+gD,YAAAA,GAAKpqC,KAAK3N,UAAUhJ,EAAAA,CAAAA;AAC/D,cAAIy0H,KAAoB,YAATxtH,IAEXssH,KAASxsH,KAAKgsH;AAClB,cAAA,WAAIQ;AACFkB,YAAAA,KAAWA,MAAAA,WAAWlB,GAAO/lH;mBAC1B,CAAKinH;AACR,mBAAA;AAGF,cAAIA,IAAS;AACX,gBAAIC;AAGJ,gBAFI3zE,GAAK77C,SAAS,MAChBwvH,KAAK3zE,GAAK,CAAA,IACR2zE,cAAcjnH;AAGhB,oBAAMinH;AAGR,gBAAIviG,KAAM,IAAI1kB,MAAM,sBAAsBinH,KAAK,OAAOA,GAAGhsF,UAAU,MAAM,GAAA;AAEzE,kBADAvW,GAAItT,UAAU61G,IACRviG;UAAAA;AAGR,cAAI0gG,KAAUU,GAAOtsH,EAAAA;AAErB,cAAA,WAAI4rH;AACF,mBAAA;AAEF,cAAuB,cAAA,OAAZA;AACTR,YAAAA,GAAaQ,IAAS9rH,MAAMg6C,EAAAA;eAE5B;AAAA,gBAAIh8C,KAAM8tH,GAAQ3tH,QACdkpE,KAAY8lD,GAAWrB,IAAS9tH,EAAAA;AACpC,iBAAS/E,KAAI,GAAGA,KAAI+E,IAAAA,EAAO/E;AACzBqyH,cAAAA,GAAajkD,GAAUpuE,EAAAA,GAAI+G,MAAMg6C,EAAAA;UAAAA;AAGrC,iBAAA;QAAO,GAiETyxE,GAAa5wH,UAAUw4E,cAAc,SAAqBnzE,IAAMm5C,IAAAA;AAC9D,iBAAOizE,GAAatsH,MAAME,IAAMm5C,IAAAA,KAAU;QAAA,GAG5CoyE,GAAa5wH,UAAUu4E,KAAKq4C,GAAa5wH,UAAUw4E,aAEnDo4C,GAAa5wH,UAAU64E,kBACnB,SAAyBxzE,IAAMm5C,IAAAA;AAC7B,iBAAOizE,GAAatsH,MAAME,IAAMm5C,IAAAA,IAAU;QAAA,GAqBhDoyE,GAAa5wH,UAAUspE,OAAO,SAAcjkE,IAAMm5C,IAAAA;AAGhD,iBAFA+yE,GAAc/yE,EAAAA,GACdr5C,KAAKozE,GAAGlzE,IAAM6sH,GAAU/sH,MAAME,IAAMm5C,EAAAA,CAAAA,GAC7Br5C;QAAAA,GAGTyrH,GAAa5wH,UAAU84E,sBACnB,SAA6BzzE,IAAMm5C,IAAAA;AAGjC,iBAFA+yE,GAAc/yE,EAAAA,GACdr5C,KAAK0zE,gBAAgBxzE,IAAM6sH,GAAU/sH,MAAME,IAAMm5C,EAAAA,CAAAA,GAC1Cr5C;QAAAA,GAIbyrH,GAAa5wH,UAAU04E,iBACnB,SAAwBrzE,IAAMm5C,IAAAA;AAC5B,cAAI7mC,IAAMg6G,IAAQ56E,IAAU34C,IAAG20H;AAK/B,cAHAxB,GAAc/yE,EAAAA,GAAAA,YAEdmzE,KAASxsH,KAAKgsH;AAEZ,mBAAOhsH;AAGT,cAAA,YADAwS,KAAOg6G,GAAOtsH,EAAAA;AAEZ,mBAAOF;AAET,cAAIwS,OAAS6mC,MAAY7mC,GAAK6mC,aAAaA;AACb,iBAAA,EAAtBr5C,KAAKisH,eACTjsH,KAAKgsH,UAAUryH,uBAAOY,OAAO,IAAA,KAAA,OAEtBiyH,GAAOtsH,EAAAA,GACVssH,GAAOj5C,kBACTvzE,KAAKyzE,KAAK,kBAAkBvzE,IAAMsS,GAAK6mC,YAAYA,EAAAA;mBAE9B,cAAA,OAAT7mC,IAAqB;AAGrC,iBAFAo/B,KAAAA,IAEK34C,KAAIuZ,GAAKrU,SAAS,GAAGlF,MAAK,GAAGA;AAChC,kBAAIuZ,GAAKvZ,EAAAA,MAAOogD,MAAY7mC,GAAKvZ,EAAAA,EAAGogD,aAAaA,IAAU;AACzDu0E,gBAAAA,KAAmBp7G,GAAKvZ,EAAAA,EAAGogD,UAC3BzH,KAAW34C;AACX;cAAA;AAIJ,gBAAI24C,KAAW;AACb,qBAAO5xC;AAEQ,kBAAb4xC,KACFp/B,GAAK5D,MAAAA,IAiIf,SAAmB4D,IAAM5T,IAAAA;AACvB,qBAAOA,KAAQ,IAAI4T,GAAKrU,QAAQS;AAC9B4T,gBAAAA,GAAK5T,EAAAA,IAAS4T,GAAK5T,KAAQ,CAAA;AAC7B4T,cAAAA,GAAKtB,IAAAA;YAAAA,EAlIasB,IAAMo/B,EAAAA,GAGE,MAAhBp/B,GAAKrU,WACPquH,GAAOtsH,EAAAA,IAAQsS,GAAK,CAAA,IAAA,WAElBg6G,GAAOj5C,kBACTvzE,KAAKyzE,KAAK,kBAAkBvzE,IAAM0tH,MAAoBv0E,EAAAA;UAAAA;AAG1D,iBAAOr5C;QAAAA,GAGbyrH,GAAa5wH,UAAUy4E,MAAMm4C,GAAa5wH,UAAU04E,gBAEpDk4C,GAAa5wH,UAAU24E,qBACnB,SAA4BtzE,IAAAA;AAC1B,cAAImnE,IAAWmlD,IAAQvzH;AAGvB,cAAA,YADAuzH,KAASxsH,KAAKgsH;AAEZ,mBAAOhsH;AAGT,cAAA,WAAIwsH,GAAOj5C;AAUT,mBATyB,MAArBtxE,UAAU9D,UACZ6B,KAAKgsH,UAAUryH,uBAAOY,OAAO,IAAA,GAC7ByF,KAAKisH,eAAe,KAAA,WACXO,GAAOtsH,EAAAA,MACY,KAAA,EAAtBF,KAAKisH,eACTjsH,KAAKgsH,UAAUryH,uBAAOY,OAAO,IAAA,IAAA,OAEtBiyH,GAAOtsH,EAAAA,IAEXF;AAIT,cAAyB,MAArBiC,UAAU9D,QAAc;AAC1B,gBACI3D,IADA6I,KAAO1J,OAAO0J,KAAKmpH,EAAAA;AAEvB,iBAAKvzH,KAAI,GAAGA,KAAIoK,GAAKlF,QAAAA,EAAUlF;AAEjB,oCADZuB,KAAM6I,GAAKpK,EAAAA,MAEX+G,KAAKwzE,mBAAmBh5E,EAAAA;AAK1B,mBAHAwF,KAAKwzE,mBAAmB,gBAAA,GACxBxzE,KAAKgsH,UAAUryH,uBAAOY,OAAO,IAAA,GAC7ByF,KAAKisH,eAAe,GACbjsH;UAAAA;AAKT,cAAyB,cAAA,QAFzBqnE,KAAYmlD,GAAOtsH,EAAAA;AAGjBF,iBAAKuzE,eAAerzE,IAAMmnE,EAAAA;mBACrB,WAAIA;AAET,iBAAKpuE,KAAIouE,GAAUlpE,SAAS,GAAGlF,MAAK,GAAGA;AACrC+G,mBAAKuzE,eAAerzE,IAAMmnE,GAAUpuE,EAAAA,CAAAA;AAIxC,iBAAO+G;QAAAA,GAoBbyrH,GAAa5wH,UAAUwsE,YAAY,SAAmBnnE,IAAAA;AACpD,iBAAO8sH,GAAWhtH,MAAME,IAAAA,IAAM;QAAA,GAGhCurH,GAAa5wH,UAAUgzH,eAAe,SAAsB3tH,IAAAA;AAC1D,iBAAO8sH,GAAWhtH,MAAME,IAAAA,KAAM;QAAA,GAGhCurH,GAAa2B,gBAAgB,SAASzB,IAASzrH,IAAAA;AAC7C,iBAAqC,cAAA,OAA1ByrH,GAAQyB,gBACVzB,GAAQyB,cAAcltH,EAAAA,IAEtBktH,GAAch0H,KAAKuyH,IAASzrH,EAAAA;QAAAA,GAIvCurH,GAAa5wH,UAAUuyH,gBAAgBA,IAiBvC3B,GAAa5wH,UAAUizH,aAAa,WAAA;AAClC,iBAAO9tH,KAAKisH,eAAe,IAAIZ,GAAerrH,KAAKgsH,OAAAA,IAAW,CAAA;QAAA;MAAA,GAAA,SAAA/wH,IAAAd,IAAAO,IAAA;AAAA,SCxahE3B,KAAUC,GAAOD,UAAU2B,GAAQ,GAAA,GAC3BqzH,SAASh1H,IACjBA,GAAQgrE,WAAWhrE,IACnBA,GAAQirE,WAAWtpE,GAAQ,GAAA,GAC3B3B,GAAQ+qE,SAASppE,GAAQ,GAAA,GACzB3B,GAAQi1H,YAAYtzH,GAAQ,GAAA,GAC5B3B,GAAQk1H,cAAcvzH,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;AAAA,SCN9B,SAAAP,IAAAJ,IAAAL,IAAA;AA6BA,cAAImqE,KAAMnpE,GAAQ,GAAA;AAelB,mBAASwzH,GAAct0E,IAAAA;AACrB,gBAAIoxD,KAAQhrG;AAEZA,iBAAKD,OAAO,MACZC,KAAKsE,QAAQ,MACbtE,KAAKmuH,SAAS,WAAA;AAAA,eAolBhB,SAAwBC,IAASx0E,IAAOxuB,IAAAA;AACtC,oBAAI9mB,KAAQ8pH,GAAQ9pH;AACpB8pH,gBAAAA,GAAQ9pH,QAAQ;AAChB,uBAAOA,MAAO;AACZ,sBAAIgoC,KAAKhoC,GAAMk3E;AACf5hC,kBAAAA,GAAMy0E,aACN/hF,GAAGlhB,EAAAA,GACH9mB,KAAQA,GAAMvE;gBAAAA;AAEZ65C,gBAAAA,GAAM00E,qBACR10E,GAAM00E,mBAAmBvuH,OAAOquH,KAEhCx0E,GAAM00E,qBAAqBF;cAAAA,EA/lBZpjB,IAAOpxD,EAAAA;YAAAA;UAAAA;AAlB1B5gD,UAAAA,GAAOD,UAAUirE;AAwBjB,cAIIF,IAJAyqD,KAAAA,CAAclpD,GAAQ4N,WAAW,CAAC,SAAS,OAAA,EAASrrE,QAAQy9D,GAAQlrB,QAAQ/+C,MAAM,GAAG,CAAA,CAAA,IAAA,KAAWozH,KAAe3qD,GAAIU;AAOvHP,UAAAA,GAASyqD,gBAAgBA;AAGzB,cAAIplE,KAAO1vD,OAAOY,OAAOG,GAAQ,GAAA,CAAA;AACjC2uD,UAAAA,GAAK5b,WAAW/yC,GAAQ,EAAA;AAIxB,cAAIg0H,KAAe,EACjBz9B,WAAWv2F,GAAQ,GAAA,EAAA,GAKjBqzH,KAASrzH,GAAQ,GAAA,GAKjBi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAChCggG,KAAgBt7F,GAAOikB,cAAc,WAAA;UAAA;AAUzC,cA2IIs3E,IA3IAC,KAAcn0H,GAAQ,GAAA;AAI1B,mBAASo0H,KAAAA;UAAAA;AAET,mBAASL,GAAcz6F,IAAS+6F,IAAAA;AAC9BjrD,YAAAA,KAASA,MAAUppE,GAAQ,GAAA,GAE3Bs5B,KAAUA,MAAW,CAAA;AAOrB,gBAAIg7F,KAAWD,cAAkBjrD;AAIjC9jE,iBAAKivH,aAAAA,CAAAA,CAAej7F,GAAQi7F,YAExBD,OAAUhvH,KAAKivH,aAAajvH,KAAKivH,cAAAA,CAAAA,CAAgBj7F,GAAQk7F;AAK7D,gBAAIC,KAAMn7F,GAAQywC,eACd2qD,KAAcp7F,GAAQq7F,uBACtBC,KAAatvH,KAAKivH,aAAa,KAAK;AAElBjvH,iBAAKykE,gBAAvB0qD,MAAe,MAARA,KAAgCA,KAAaH,OAAaI,MAA+B,MAAhBA,MAAyCA,KAAsCE,IAGnKtvH,KAAKykE,gBAAgBxmE,KAAKgK,MAAMjI,KAAKykE,aAAAA,GAGrCzkE,KAAKuvH,cAAAA,OAGLvvH,KAAKwvH,YAAAA,OAELxvH,KAAKyvH,SAAAA,OAELzvH,KAAKskE,QAAAA,OAELtkE,KAAK0vH,WAAAA,OAGL1vH,KAAK2kE,YAAAA;AAKL,gBAAIgrD,KAAAA,UAAW37F,GAAQ47F;AACvB5vH,iBAAK4vH,gBAAAA,CAAiBD,IAKtB3vH,KAAK6vH,kBAAkB77F,GAAQ67F,mBAAmB,QAKlD7vH,KAAK7B,SAAS,GAGd6B,KAAK8vH,UAAAA,OAGL9vH,KAAK+vH,SAAS,GAMd/vH,KAAKgwH,OAAAA,MAKLhwH,KAAKiwH,mBAAAA,OAGLjwH,KAAKkwH,UAAU,SAAUvC,IAAAA;AAAAA,eA4R3B,SAAiBoB,IAAQpB,IAAAA;AACvB,oBAAI/zE,KAAQm1E,GAAO1qD,gBACf2rD,KAAOp2E,GAAMo2E,MACb1jF,KAAKsN,GAAMu2E;AAIf,oBAdF,SAA4Bv2E,IAAAA;AAC1BA,kBAAAA,GAAMk2E,UAAAA,OACNl2E,GAAMu2E,UAAU,MAChBv2E,GAAMz7C,UAAUy7C,GAAMw2E,UACtBx2E,GAAMw2E,WAAW;gBAAA,EAQEx2E,EAAAA,GAEf+zE;AAAAA,mBAtCN,SAAsBoB,IAAQn1E,IAAOo2E,IAAMrC,IAAIrhF,IAAAA;AAAAA,sBAC3CsN,GAAMy0E,WAEJ2B,MAGFnsD,GAAIU,SAASj4B,IAAIqhF,EAAAA,GAGjB9pD,GAAIU,SAAS8rD,IAAatB,IAAQn1E,EAAAA,GAClCm1E,GAAO1qD,eAAeisD,eAAAA,MACtBvB,GAAOt7C,KAAK,SAASk6C,EAAAA,MAIrBrhF,GAAGqhF,EAAAA,GACHoB,GAAO1qD,eAAeisD,eAAAA,MACtBvB,GAAOt7C,KAAK,SAASk6C,EAAAA,GAGrB0C,GAAYtB,IAAQn1E,EAAAA;kBAAAA,EAkBDm1E,IAAQn1E,IAAOo2E,IAAMrC,IAAIrhF,EAAAA;qBAAS;AAErD,sBAAIojF,KAAWa,GAAW32E,EAAAA;AAErB81E,kBAAAA,MAAa91E,GAAMm2E,UAAWn2E,GAAMq2E,oBAAAA,CAAoBr2E,GAAM42E,mBACjEC,GAAY1B,IAAQn1E,EAAAA,GAGlBo2E,KAEFzB,GAAWmC,IAAY3B,IAAQn1E,IAAO81E,IAAUpjF,EAAAA,IAGhDokF,GAAW3B,IAAQn1E,IAAO81E,IAAUpjF,EAAAA;gBAAAA;cAAAA,EA/S9ByiF,IAAQpB,EAAAA;YAAAA,GAIlB3tH,KAAKmwH,UAAU,MAGfnwH,KAAKowH,WAAW,GAEhBpwH,KAAKwwH,kBAAkB,MACvBxwH,KAAK2wH,sBAAsB,MAI3B3wH,KAAKquH,YAAY,GAIjBruH,KAAK4wH,cAAAA,OAGL5wH,KAAKswH,eAAAA,OAGLtwH,KAAK6wH,uBAAuB,GAI5B7wH,KAAKsuH,qBAAqB,IAAIJ,GAAcluH,IAAAA;UAAAA;AA0C9C,mBAASgkE,GAAShwC,IAAAA;AAUhB,gBATA8vC,KAASA,MAAUppE,GAAQ,GAAA,GAAA,EAStBk0H,GAAgBx1H,KAAK4qE,IAAUhkE,IAAAA,KAAWA,gBAAgB8jE;AAC7D,qBAAO,IAAIE,GAAShwC,EAAAA;AAGtBh0B,iBAAKqkE,iBAAiB,IAAIoqD,GAAcz6F,IAASh0B,IAAAA,GAGjDA,KAAKolB,WAAAA,MAED4O,OAC2B,cAAA,OAAlBA,GAAQitC,UAAsBjhE,KAAK8wH,SAAS98F,GAAQitC,QAEjC,cAAA,OAAnBjtC,GAAQ+8F,WAAuB/wH,KAAKgxH,UAAUh9F,GAAQ+8F,SAElC,cAAA,OAApB/8F,GAAQi9F,YAAwBjxH,KAAK4kE,WAAW5wC,GAAQi9F,UAEtC,cAAA,OAAlBj9F,GAAQk9F,UAAsBlxH,KAAKmxH,SAASn9F,GAAQk9F,SAGjEnD,GAAO30H,KAAK4G,IAAAA;UAAAA;AAgJd,mBAASoxH,GAAQrC,IAAQn1E,IAAOm3E,IAAQ/yH,IAAKqzH,IAAO3hF,IAAUpD,IAAAA;AAC5DsN,YAAAA,GAAMw2E,WAAWpyH,IACjB47C,GAAMu2E,UAAU7jF,IAChBsN,GAAMk2E,UAAAA,MACNl2E,GAAMo2E,OAAAA,MACFe,KAAQhC,GAAOiC,QAAQK,IAAOz3E,GAAMs2E,OAAAA,IAAcnB,GAAO+B,OAAOO,IAAO3hF,IAAUkK,GAAMs2E,OAAAA,GAC3Ft2E,GAAMo2E,OAAAA;UAAO;AA2Df,mBAASU,GAAW3B,IAAQn1E,IAAO81E,IAAUpjF,IAAAA;AACtCojF,YAAAA,MASP,SAAsBX,IAAQn1E,IAAAA;AACP,oBAAjBA,GAAMz7C,UAAgBy7C,GAAM41E,cAC9B51E,GAAM41E,YAAAA,OACNT,GAAOt7C,KAAK,OAAA;YAAA,EAZcs7C,IAAQn1E,EAAAA,GACpCA,GAAMy0E,aACN/hF,GAAAA,GACA+jF,GAAYtB,IAAQn1E,EAAAA;UAAAA;AActB,mBAAS62E,GAAY1B,IAAQn1E,IAAAA;AAC3BA,YAAAA,GAAMq2E,mBAAAA;AACN,gBAAI3rH,KAAQs1C,GAAM42E;AAElB,gBAAIzB,GAAOiC,WAAW1sH,MAASA,GAAMvE,MAAM;AAEzC,kBAAI7G,KAAI0gD,GAAMi3E,sBACV7hF,KAAS,IAAI7zC,MAAMjC,EAAAA,GACnBo4H,KAAS13E,GAAM00E;AACnBgD,cAAAA,GAAOhtH,QAAQA;AAIf,uBAFIqJ,KAAQ,GACR4jH,KAAAA,MACGjtH;AACL0qC,gBAAAA,GAAOrhC,EAAAA,IAASrJ,IACXA,GAAMktH,UAAOD,KAAAA,QAClBjtH,KAAQA,GAAMvE,MACd4N,MAAS;AAEXqhC,cAAAA,GAAOuiF,aAAaA,IAEpBH,GAAQrC,IAAQn1E,IAAAA,MAAaA,GAAMz7C,QAAQ6wC,IAAQ,IAAIsiF,GAAOnD,MAAAA,GAI9Dv0E,GAAMy0E,aACNz0E,GAAM+2E,sBAAsB,MACxBW,GAAOvxH,QACT65C,GAAM00E,qBAAqBgD,GAAOvxH,MAClCuxH,GAAOvxH,OAAO,QAEd65C,GAAM00E,qBAAqB,IAAIJ,GAAct0E,EAAAA,GAE/CA,GAAMi3E,uBAAuB;YAAA,OACxB;AAEL,qBAAOvsH,MAAO;AACZ,oBAAI+sH,KAAQ/sH,GAAM+sH,OACd3hF,KAAWprC,GAAMorC,UACjBpD,KAAKhoC,GAAMk3E;AAUf,oBAPA41C,GAAQrC,IAAQn1E,IAAAA,OAFNA,GAAMq1E,aAAa,IAAIoC,GAAMlzH,QAEJkzH,IAAO3hF,IAAUpD,EAAAA,GACpDhoC,KAAQA,GAAMvE,MACd65C,GAAMi3E,wBAKFj3E,GAAMk2E;AACR;cAAA;AAIU,uBAAVxrH,OAAgBs1C,GAAM+2E,sBAAsB;YAAA;AAGlD/2E,YAAAA,GAAM42E,kBAAkBlsH,IACxBs1C,GAAMq2E,mBAAAA;UAAmB;AAiC3B,mBAASM,GAAW32E,IAAAA;AAClB,mBAAOA,GAAM61E,UAA2B,MAAjB71E,GAAMz7C,UAA0C,SAA1By7C,GAAM42E,mBAAAA,CAA6B52E,GAAM81E,YAAAA,CAAa91E,GAAMk2E;UAAAA;AAE3G,mBAAS2B,GAAU1C,IAAQn1E,IAAAA;AACzBm1E,YAAAA,GAAOoC,OAAO,SAAU/lG,IAAAA;AACtBwuB,cAAAA,GAAMy0E,aACFjjG,MACF2jG,GAAOt7C,KAAK,SAASroD,EAAAA,GAEvBwuB,GAAMg3E,cAAAA,MACN7B,GAAOt7C,KAAK,WAAA,GACZ48C,GAAYtB,IAAQn1E,EAAAA;YAAAA,CAAAA;UAAAA;AAgBxB,mBAASy2E,GAAYtB,IAAQn1E,IAAAA;AAC3B,gBAAI83E,KAAOnB,GAAW32E,EAAAA;AAQtB,mBAPI83E,OAAAA,CAfN,SAAmB3C,IAAQn1E,IAAAA;AACpBA,cAAAA,GAAMg3E,eAAgBh3E,GAAM21E,gBACF,cAAA,OAAlBR,GAAOoC,UAChBv3E,GAAMy0E,aACNz0E,GAAM21E,cAAAA,MACN1rD,GAAIU,SAASktD,IAAW1C,IAAQn1E,EAAAA,MAEhCA,GAAMg3E,cAAAA,MACN7B,GAAOt7C,KAAK,WAAA;YAAA,EAQJs7C,IAAQn1E,EAAAA,GACM,MAApBA,GAAMy0E,cACRz0E,GAAM81E,WAAAA,MACNX,GAAOt7C,KAAK,QAAA,KAGTi+C;UAAAA;AAzhBTroE,UAAAA,GAAK5b,SAASu2B,IAAU+pD,EAAAA,GAmHxBU,GAAc5zH,UAAU82H,YAAY,WAAA;AAGlC,qBAFIpmF,KAAUvrC,KAAKwwH,iBACf3iD,KAAM,CAAA,GACHtiC;AACLsiC,cAAAA,GAAIj+D,KAAK27B,EAAAA,GACTA,KAAUA,GAAQxrC;AAEpB,mBAAO8tE;UAAAA,GAGT,WAAA;AACE,gBAAA;AACEl0E,qBAAOC,eAAe60H,GAAc5zH,WAAW,UAAU,EACvDf,KAAK40H,GAAaz9B,UAAU,WAAA;AAC1B,uBAAOjxF,KAAK2xH,UAAAA;cAAAA,GACX,8EAAmF,SAAA,EAAA,CAAA;YAAA,SAEjF5rH,IAAP;YAAOA;UAAAA,EAPX,GAasB,cAAA,OAAX/L,UAAyBA,OAAO43H,eAAiE,cAAA,OAA3Cn8F,SAAS56B,UAAUb,OAAO43H,WAAAA,KACzFhD,KAAkBn5F,SAAS56B,UAAUb,OAAO43H,WAAAA,GAC5Cj4H,OAAOC,eAAeoqE,IAAUhqE,OAAO43H,aAAa,EAClD13H,OAAO,SAAUS,IAAAA;AACf,mBAAA,CAAA,CAAIi0H,GAAgBx1H,KAAK4G,MAAMrF,EAAAA,KAC3BqF,SAASgkE,OAENrpE,MAAUA,GAAO0pE,0BAA0BoqD;UAAAA,EAAAA,CAAAA,KAItDG,KAAkB,SAAUj0H,IAAAA;AAC1B,mBAAOA,cAAkBqF;UAAAA,GAqC7BgkE,GAASnpE,UAAUg3H,OAAO,WAAA;AACxB7xH,iBAAKyzE,KAAK,SAAS,IAAI/sE,MAAM,2BAAA,CAAA;UAAA,GA8B/Bs9D,GAASnpE,UAAUomE,QAAQ,SAAUowD,IAAO3hF,IAAUpD,IAAAA;AACpD,gBAnOqBpjC,IAmOjB0wC,KAAQ55C,KAAKqkE,gBACbuJ,KAAAA,OACA4jD,KAAAA,CAAS53E,GAAMq1E,eArOE/lH,KAqO0BmoH,IApOxC1iG,GAAOg7C,SAASzgE,EAAAA,KAAQA,cAAeylH;AAwP9C,mBAlBI6C,MAAAA,CAAU7iG,GAAOg7C,SAAS0nD,EAAAA,MAC5BA,KA3OJ,SAA6BA,IAAAA;AAC3B,qBAAO1iG,GAAO3Z,KAAKq8G,EAAAA;YAAAA,EA0OWA,EAAAA,IAGN,cAAA,OAAb3hF,OACTpD,KAAKoD,IACLA,KAAW,OAGT8hF,KAAO9hF,KAAW,WAAmBA,OAAUA,KAAWkK,GAAMi2E,kBAElD,cAAA,OAAPvjF,OAAmBA,KAAKwiF,KAE/Bl1E,GAAM0qB,QA7CZ,SAAuByqD,IAAQziF,IAAAA;AAC7B,kBAAIqhF,KAAK,IAAIjnH,MAAM,iBAAA;AAEnBqoH,cAAAA,GAAOt7C,KAAK,SAASk6C,EAAAA,GACrB9pD,GAAIU,SAASj4B,IAAIqhF,EAAAA;YAAAA,EAyCc3tH,MAAMssC,EAAAA,KAAaklF,MAnCpD,SAAoBzC,IAAQn1E,IAAOy3E,IAAO/kF,IAAAA;AACxC,kBAAIwlF,KAAAA,MACAnE,KAAAA;AAYJ,qBAVc,SAAV0D,KACF1D,KAAK,IAAI3pH,UAAU,qCAAA,IACO,YAAA,OAAVqtH,MAAAA,WAAsBA,MAAwBz3E,GAAMq1E,eACpEtB,KAAK,IAAI3pH,UAAU,iCAAA,IAEjB2pH,OACFoB,GAAOt7C,KAAK,SAASk6C,EAAAA,GACrB9pD,GAAIU,SAASj4B,IAAIqhF,EAAAA,GACjBmE,KAAAA,QAEKA;YAAAA,EAqB+D9xH,MAAM45C,IAAOy3E,IAAO/kF,EAAAA,OACxFsN,GAAMy0E,aACNzgD,KAkDJ,SAAuBmhD,IAAQn1E,IAAO43E,IAAOH,IAAO3hF,IAAUpD,IAAAA;AAC5D,kBAAA,CAAKklF,IAAO;AACV,oBAAIO,KAtBR,SAAqBn4E,IAAOy3E,IAAO3hF,IAAAA;AAC5BkK,kBAAAA,GAAMq1E,cAAAA,UAAcr1E,GAAMg2E,iBAA4C,YAAA,OAAVyB,OAC/DA,KAAQ1iG,GAAO3Z,KAAKq8G,IAAO3hF,EAAAA;AAE7B,yBAAO2hF;gBAAAA,EAkBsBz3E,IAAOy3E,IAAO3hF,EAAAA;AACrC2hF,gBAAAA,OAAUU,OACZP,KAAAA,MACA9hF,KAAW,UACX2hF,KAAQU;cAAAA;AAGZ,kBAAI/zH,KAAM47C,GAAMq1E,aAAa,IAAIoC,GAAMlzH;AAEvCy7C,cAAAA,GAAMz7C,UAAUH;AAEhB,kBAAI4vE,KAAMh0B,GAAMz7C,SAASy7C,GAAM6qB;AAE1BmJ,cAAAA,OAAKh0B,GAAM41E,YAAAA;AAEhB,kBAAI51E,GAAMk2E,WAAWl2E,GAAMm2E,QAAQ;AACjC,oBAAIztG,KAAOs3B,GAAM+2E;AACjB/2E,gBAAAA,GAAM+2E,sBAAsB,EAC1BU,OAAOA,IACP3hF,UAAUA,IACV8hF,OAAOA,IACPh2C,UAAUlvC,IACVvsC,MAAM,KAAA,GAEJuiB,KACFA,GAAKviB,OAAO65C,GAAM+2E,sBAElB/2E,GAAM42E,kBAAkB52E,GAAM+2E,qBAEhC/2E,GAAMi3E,wBAAwB;cAAA;AAE9BO,gBAAAA,GAAQrC,IAAQn1E,IAAAA,OAAc57C,IAAKqzH,IAAO3hF,IAAUpD,EAAAA;AAGtD,qBAAOshC;YAAAA,EAtFe5tE,MAAM45C,IAAO43E,IAAOH,IAAO3hF,IAAUpD,EAAAA,IAGpDshC;UAAAA,GAGT5J,GAASnpE,UAAUm3H,OAAO,WAAA;AACZhyH,iBAAKqkE,eAEX0rD;UAAAA,GAGR/rD,GAASnpE,UAAUo3H,SAAS,WAAA;AAC1B,gBAAIr4E,KAAQ55C,KAAKqkE;AAEbzqB,YAAAA,GAAMm2E,WACRn2E,GAAMm2E,UAEDn2E,GAAMk2E,WAAYl2E,GAAMm2E,UAAWn2E,GAAM81E,YAAa91E,GAAMq2E,oBAAAA,CAAoBr2E,GAAM42E,mBAAiBC,GAAYzwH,MAAM45C,EAAAA;UAAAA,GAIlIoqB,GAASnpE,UAAUq3H,qBAAqB,SAA4BxiF,IAAAA;AAGlE,gBADwB,YAAA,OAAbA,OAAuBA,KAAWA,GAAS5jB,YAAAA,IAAAA,EAChD,CAAC,OAAO,QAAQ,SAAS,SAAS,UAAU,UAAU,QAAQ,SAAS,WAAW,YAAY,KAAA,EAAOlkB,SAAS8nC,KAAW,IAAI5jB,YAAAA,CAAAA,IAAAA;AAAsB,oBAAM,IAAI9nB,UAAU,uBAAuB0rC,EAAAA;AAEpM,mBADA1vC,KAAKqkE,eAAewrD,kBAAkBngF,IAC/B1vC;UAAAA,GAUTrG,OAAOC,eAAeoqE,GAASnpE,WAAW,yBAAyB,EAIjEhB,YAAAA,OACAC,KAAK,WAAA;AACH,mBAAOkG,KAAKqkE,eAAeI;UAAAA,EAAAA,CAAAA,GA8L/BT,GAASnpE,UAAUi2H,SAAS,SAAUO,IAAO3hF,IAAUpD,IAAAA;AACrDA,YAAAA,GAAG,IAAI5lC,MAAM,6BAAA,CAAA;UAAA,GAGfs9D,GAASnpE,UAAUm2H,UAAU,MAE7BhtD,GAASnpE,UAAUoE,MAAM,SAAUoyH,IAAO3hF,IAAUpD,IAAAA;AAClD,gBAAIsN,KAAQ55C,KAAKqkE;AAEI,0BAAA,OAAVgtD,MACT/kF,KAAK+kF,IACLA,KAAQ,MACR3hF,KAAW,QACkB,cAAA,OAAbA,OAChBpD,KAAKoD,IACLA,KAAW,OAGT2hF,QAAAA,MAAuCrxH,KAAKihE,MAAMowD,IAAO3hF,EAAAA,GAGzDkK,GAAMm2E,WACRn2E,GAAMm2E,SAAS,GACf/vH,KAAKiyH,OAAAA,IAIFr4E,GAAM61E,UAAW71E,GAAM81E,YA0C9B,SAAqBX,IAAQn1E,IAAOtN,IAAAA;AAClCsN,cAAAA,GAAM61E,SAAAA,MACNY,GAAYtB,IAAQn1E,EAAAA,GAChBtN,OACEsN,GAAM81E,WAAU7rD,GAAIU,SAASj4B,EAAAA,IAASyiF,GAAO5qD,KAAK,UAAU73B,EAAAA;AAElEsN,cAAAA,GAAM0qB,QAAAA,MACNyqD,GAAO3pG,WAAAA;YAAW,EAjDgCplB,MAAM45C,IAAOtN,EAAAA;UAAAA,GAoEjE3yC,OAAOC,eAAeoqE,GAASnpE,WAAW,aAAa,EACrDf,KAAK,WAAA;AACH,mBAAA,WAAIkG,KAAKqkE,kBAGFrkE,KAAKqkE,eAAeM;UAAAA,GAE7Bj7D,KAAK,SAAUxP,IAAAA;AAGR8F,iBAAKqkE,mBAMVrkE,KAAKqkE,eAAeM,YAAYzqE;UAAAA,EAAAA,CAAAA,GAIpC8pE,GAASnpE,UAAUo2H,UAAUpC,GAAYoC,SACzCjtD,GAASnpE,UAAUs3H,aAAatD,GAAYuD,WAC5CpuD,GAASnpE,UAAU+pE,WAAW,SAAUx5C,IAAKkhB,IAAAA;AAC3CtsC,iBAAKf,IAAAA,GACLqtC,GAAGlhB,EAAAA;UAAAA;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,GAAAA,GAAAA,GAAAA,GAAAA,EAAAA,cAAAA,GAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7qBL,YAAI4pD,KAAyBt6E,GAAQ,GAAA;AAErC,iBAASg/G,GAAgBhgH,IAAGqB,IAAAA;AAK1B,iBAJA/B,GAAOD,UAAU2gH,KAAkB1kC,MAA0B,SAAyBt7E,IAAGqB,IAAAA;AAEvF,mBADArB,GAAE0vE,YAAYruE,IACPrB;UAAAA,GACNV,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD,SACjE2gH,GAAgBhgH,IAAGqB,EAAAA;QAAAA;AAG5B/B,QAAAA,GAAOD,UAAU2gH,IAAiB1gH,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACVvGC,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAI24B,KAAS34B,GAAQ,EAAA,GACjB23H,KAAgB33H,GAAQ,GAAA,GACxB+iC,KAAc/iC,GAAQ,GAAA,GAEtBsJ,KAAYqvB,GAAOrvB;AAGvBhL,QAAAA,GAAOD,UAAU,SAAUijC,IAAAA;AACzB,cAAIq2F,GAAcr2F,EAAAA;AAAW,mBAAOA;AACpC,gBAAMh4B,GAAUy5B,GAAYzB,EAAAA,IAAY,uBAAA;QAAA;MAAA,GAAA,SAAA/gC,IAAAd,IAAAO,IAAA;ACT1C1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACEzB,YAAIwJ,IAEAouH,KAAeC,aACfC,KAAY/8F,UACZg9F,KAAazuH,WAGb0uH,KAAwB,SAAUC,IAAAA;AACrC,cAAA;AACC,mBAAOH,GAAU,2BAA2BG,KAAmB,gBAAA,EAAxDH;UAAAA,SACCv3H,IAAP;UAAOA;QAAAA,GAGN23H,KAAQj5H,OAAO65B;AACnB,YAAIo/F;AACH,cAAA;AACCA,YAAAA,GAAM,CAAA,GAAI,EAAA;UAAA,SACF33H,IAAP;AACD23H,YAAAA,KAAQ;UAAA;AAIV,YAAIC,KAAiB,WAAA;AACpB,gBAAM,IAAIJ;QAAAA,GAEPK,KAAiBF,KACjB,WAAA;AACF,cAAA;AAGC,mBAAOC;UAAAA,SACCE,IAAP;AACD,gBAAA;AAEC,qBAAOH,GAAM3wH,WAAW,QAAA,EAAUnI;YAAAA,SAC1Bk5H,IAAP;AACD,qBAAOH;YAAAA;UAAAA;QAAAA,EAVR,IAcAA,IAECI,KAAav4H,GAAQ,GAAA,EAAR,GAEbw4H,KAAWv5H,OAAOijB,kBAAkB,SAAU1M,IAAAA;AAAK,iBAAOA,GAAEk5D;QAAAA,GAE5D+pD,KAAY,CAAA,GAEZC,KAAmC,eAAA,OAAf97E,aAA6BpzC,KAAYgvH,GAAS57E,UAAAA,GAEtE+7E,KAAa,EAChB,oBAA8C,eAAA,OAAnBC,iBAAiCpvH,KAAYovH,gBACxE,WAAWn4H,OACX,iBAAwC,eAAA,OAAhBkuE,cAA8BnlE,KAAYmlE,aAClE,4BAA4B4pD,KAAaC,GAAS,CAAA,EAAGl5H,OAAO2F,QAAAA,EAAAA,CAAAA,IAAeuE,IAC3E,oCAAoCA,IACpC,mBAAmBivH,IACnB,oBAAoBA,IACpB,4BAA4BA,IAC5B,4BAA4BA,IAC5B,aAAgC,eAAA,OAAZI,UAA0BrvH,KAAYqvH,SAC1D,YAA8B,eAAA,OAAXC,SAAyBtvH,KAAYsvH,QACxD,aAAan3C,SACb,cAAkC,eAAA,OAAb+K,WAA2BljF,KAAYkjF,UAC5D,UAAUv7D,MACV,eAAemvE,WACf,wBAAwBlyE,oBACxB,eAAem8B,WACf,wBAAwB51B,oBACxB,WAAW3oB,OACX,UAAU+sH,MACV,eAAeC,WACf,kBAA0C,eAAA,OAAjBC,eAA+BzvH,KAAYyvH,cACpE,kBAA0C,eAAA,OAAjBC,eAA+B1vH,KAAY0vH,cACpE,0BAA0D,eAAA,OAAzBC,uBAAuC3vH,KAAY2vH,sBACpF,cAAcrB,IACd,uBAAuBW,IACvB,eAAoC,eAAA,OAAdW,YAA4B5vH,KAAY4vH,WAC9D,gBAAsC,eAAA,OAAfC,aAA6B7vH,KAAY6vH,YAChE,gBAAsC,eAAA,OAAfC,aAA6B9vH,KAAY8vH,YAChE,cAActmD,UACd,WAAW9hD,OACX,uBAAuBqnG,KAAaC,GAASA,GAAS,CAAA,EAAGl5H,OAAO2F,QAAAA,EAAAA,CAAAA,CAAAA,IAAgBuE,IAChF,UAA0B,YAAA,OAAT4f,OAAoBA,OAAO5f,IAC5C,SAAwB,eAAA,OAARiG,MAAsBjG,KAAYiG,KAClD,0BAAyC,eAAA,OAARA,OAAwB8oH,KAAyBC,IAAS,oBAAI/oH,OAAMnQ,OAAO2F,QAAAA,EAAAA,CAAAA,IAAtCuE,IACtE,UAAUjG,MACV,YAAY4yC,QACZ,YAAYl3C,QACZ,gBAAgBm8C,YAChB,cAAcT,UACd,aAAgC,eAAA,OAAZgyC,UAA0BnjF,KAAYmjF,SAC1D,WAA4B,eAAA,OAAV4sC,QAAwB/vH,KAAY+vH,OACtD,gBAAgB/uD,YAChB,oBAAoBryC,gBACpB,aAAgC,eAAA,OAAZstC,UAA0Bj8D,KAAYi8D,SAC1D,YAAY70C,QACZ,SAAwB,eAAA,OAARruB,MAAsBiH,KAAYjH,KAClD,0BAAyC,eAAA,OAARA,OAAwBg2H,KAAyBC,IAAS,oBAAIj2H,OAAMjD,OAAO2F,QAAAA,EAAAA,CAAAA,IAAtCuE,IACtE,uBAAoD,eAAA,OAAtBgwH,oBAAoChwH,KAAYgwH,mBAC9E,YAAYlwG,QACZ,6BAA6BivG,KAAaC,GAAS,GAAGl5H,OAAO2F,QAAAA,EAAAA,CAAAA,IAAeuE,IAC5E,YAAY+uH,KAAaj5H,SAASkK,IAClC,iBAAiBouH,IACjB,oBAAoBQ,IACpB,gBAAgBM,IAChB,eAAeX,IACf,gBAAsC,eAAA,OAAfn7E,aAA6BpzC,KAAYozC,YAChE,uBAAoD,eAAA,OAAtB68E,oBAAoCjwH,KAAYiwH,mBAC9E,iBAAwC,eAAA,OAAhBC,cAA8BlwH,KAAYkwH,aAClE,iBAAwC,eAAA,OAAhBC,cAA8BnwH,KAAYmwH,aAClE,cAAcC,UACd,aAAgC,eAAA,OAAZrqH,UAA0B/F,KAAY+F,SAC1D,aAAgC,eAAA,OAAZsqH,UAA0BrwH,KAAYqwH,SAC1D,aAAgC,eAAA,OAAZC,UAA0BtwH,KAAYswH,QAAAA,GAGvDC,KAAS,SAASA,GAAOj7H,IAAAA;AAC5B,cAAIU;AACJ,cAAa,sBAATV;AACHU,YAAAA,KAAQw4H,GAAsB,sBAAA;mBACX,0BAATl5H;AACVU,YAAAA,KAAQw4H,GAAsB,iBAAA;mBACX,+BAATl5H;AACVU,YAAAA,KAAQw4H,GAAsB,uBAAA;mBACX,uBAATl5H,IAA6B;AACvC,gBAAI+I,KAAKkyH,GAAO,0BAAA;AACZlyH,YAAAA,OACHrI,KAAQqI,GAAG1H;UAAAA,WAEO,+BAATrB,IAAqC;AAC/C,gBAAI6sD,KAAMouE,GAAO,kBAAA;AACbpuE,YAAAA,OACHnsD,KAAQg5H,GAAS7sE,GAAIxrD,SAAAA;UAAAA;AAMvB,iBAFAw4H,GAAW75H,EAAAA,IAAQU,IAEZA;QAAAA,GAGJw6H,KAAiB,EACpB,0BAA0B,CAAC,eAAe,WAAA,GAC1C,oBAAoB,CAAC,SAAS,WAAA,GAC9B,wBAAwB,CAAC,SAAS,aAAa,SAAA,GAC/C,wBAAwB,CAAC,SAAS,aAAa,SAAA,GAC/C,qBAAqB,CAAC,SAAS,aAAa,MAAA,GAC5C,uBAAuB,CAAC,SAAS,aAAa,QAAA,GAC9C,4BAA4B,CAAC,iBAAiB,WAAA,GAC9C,oBAAoB,CAAC,0BAA0B,WAAA,GAC/C,6BAA6B,CAAC,0BAA0B,aAAa,WAAA,GACrE,sBAAsB,CAAC,WAAW,WAAA,GAClC,uBAAuB,CAAC,YAAY,WAAA,GACpC,mBAAmB,CAAC,QAAQ,WAAA,GAC5B,oBAAoB,CAAC,SAAS,WAAA,GAC9B,wBAAwB,CAAC,aAAa,WAAA,GACtC,2BAA2B,CAAC,gBAAgB,WAAA,GAC5C,2BAA2B,CAAC,gBAAgB,WAAA,GAC5C,uBAAuB,CAAC,YAAY,WAAA,GACpC,eAAe,CAAC,qBAAqB,WAAA,GACrC,wBAAwB,CAAC,qBAAqB,aAAa,WAAA,GAC3D,wBAAwB,CAAC,aAAa,WAAA,GACtC,yBAAyB,CAAC,cAAc,WAAA,GACxC,yBAAyB,CAAC,cAAc,WAAA,GACxC,eAAe,CAAC,QAAQ,OAAA,GACxB,mBAAmB,CAAC,QAAQ,WAAA,GAC5B,kBAAkB,CAAC,OAAO,WAAA,GAC1B,qBAAqB,CAAC,UAAU,WAAA,GAChC,qBAAqB,CAAC,UAAU,WAAA,GAChC,uBAAuB,CAAC,UAAU,aAAa,UAAA,GAC/C,sBAAsB,CAAC,UAAU,aAAa,SAAA,GAC9C,sBAAsB,CAAC,WAAW,WAAA,GAClC,uBAAuB,CAAC,WAAW,aAAa,MAAA,GAChD,iBAAiB,CAAC,WAAW,KAAA,GAC7B,oBAAoB,CAAC,WAAW,QAAA,GAChC,qBAAqB,CAAC,WAAW,SAAA,GACjC,yBAAyB,CAAC,cAAc,WAAA,GACxC,6BAA6B,CAAC,kBAAkB,WAAA,GAChD,qBAAqB,CAAC,UAAU,WAAA,GAChC,kBAAkB,CAAC,OAAO,WAAA,GAC1B,gCAAgC,CAAC,qBAAqB,WAAA,GACtD,qBAAqB,CAAC,UAAU,WAAA,GAChC,qBAAqB,CAAC,UAAU,WAAA,GAChC,0BAA0B,CAAC,eAAe,WAAA,GAC1C,yBAAyB,CAAC,cAAc,WAAA,GACxC,wBAAwB,CAAC,aAAa,WAAA,GACtC,yBAAyB,CAAC,cAAc,WAAA,GACxC,gCAAgC,CAAC,qBAAqB,WAAA,GACtD,0BAA0B,CAAC,eAAe,WAAA,GAC1C,0BAA0B,CAAC,eAAe,WAAA,GAC1C,uBAAuB,CAAC,YAAY,WAAA,GACpC,sBAAsB,CAAC,WAAW,WAAA,GAClC,sBAAsB,CAAC,WAAW,WAAA,EAAA,GAG/Bj6H,KAAOC,GAAQ,GAAA,GACfk5B,KAASl5B,GAAQ,GAAA,GACjBi6H,KAAUl6H,GAAKrB,KAAKq8B,SAASr8B,MAAM+B,MAAMN,UAAUgf,MAAAA,GACnD+6G,KAAen6H,GAAKrB,KAAKq8B,SAAS7rB,OAAOzO,MAAMN,UAAUkY,MAAAA,GACzD8hH,KAAWp6H,GAAKrB,KAAKq8B,SAASr8B,MAAM4qB,OAAOnpB,UAAUsuB,OAAAA,GACrD2rG,KAAYr6H,GAAKrB,KAAKq8B,SAASr8B,MAAM4qB,OAAOnpB,UAAUO,KAAAA,GAGtD25H,KAAa,sGACbC,KAAe,YACf7sC,KAAe,SAAsBt/E,IAAAA;AACxC,cAAI6Y,KAAQozG,GAAUjsH,IAAQ,GAAG,CAAA,GAC7ByZ,KAAOwyG,GAAUjsH,IAAAA,EAAS;AAC9B,cAAc,QAAV6Y,MAA0B,QAATY;AACpB,kBAAM,IAAIgwG,GAAa,gDAAA;AACjB,cAAa,QAAThwG,MAA0B,QAAVZ;AAC1B,kBAAM,IAAI4wG,GAAa,gDAAA;AAExB,cAAI7/F,KAAS,CAAA;AAIb,iBAHAoiG,GAAShsH,IAAQksH,IAAY,SAAUloG,IAAO+jB,IAAQqkF,IAAOC,IAAAA;AAC5DziG,YAAAA,GAAOA,GAAOt0B,MAAAA,IAAU82H,KAAQJ,GAASK,IAAWF,IAAc,IAAA,IAAQpkF,MAAU/jB;UAAAA,CAAAA,GAE9E4F;QAAAA,GAIJ0iG,KAAmB,SAA0B37H,IAAM47H,IAAAA;AACtD,cACI/hF,IADAgiF,KAAgB77H;AAOpB,cALIo6B,GAAO8gG,IAAgBW,EAAAA,MAE1BA,KAAgB,OADhBhiF,KAAQqhF,GAAeW,EAAAA,GACK,CAAA,IAAK,MAG9BzhG,GAAOy/F,IAAYgC,EAAAA,GAAgB;AACtC,gBAAIn7H,KAAQm5H,GAAWgC,EAAAA;AAIvB,gBAHIn7H,OAAUi5H,OACbj5H,KAAQu6H,GAAOY,EAAAA,IAAAA,WAELn7H,MAAAA,CAA0Bk7H;AACpC,oBAAM,IAAI3C,GAAW,eAAej5H,KAAO,sDAAA;AAG5C,mBAAO,EACN65C,OAAOA,IACP75C,MAAM67H,IACNn7H,OAAOA,GAAAA;UAAAA;AAIT,gBAAM,IAAIo4H,GAAa,eAAe94H,KAAO,kBAAA;QAAA;AAG9CR,QAAAA,GAAOD,UAAU,SAAsBS,IAAM47H,IAAAA;AAC5C,cAAoB,YAAA,OAAT57H,MAAqC,MAAhBA,GAAK2E;AACpC,kBAAM,IAAIs0H,GAAW,2CAAA;AAEtB,cAAIxwH,UAAU9D,SAAS,KAA6B,aAAA,OAAjBi3H;AAClC,kBAAM,IAAI3C,GAAW,2CAAA;AAGtB,cAAI6C,KAAQntC,GAAa3uF,EAAAA,GACrB+7H,KAAoBD,GAAMn3H,SAAS,IAAIm3H,GAAM,CAAA,IAAK,IAElDE,KAAYL,GAAiB,MAAMI,KAAoB,KAAKH,EAAAA,GAC5DK,KAAoBD,GAAUh8H,MAC9BU,KAAQs7H,GAAUt7H,OAClBw7H,KAAAA,OAEAriF,KAAQmiF,GAAUniF;AAClBA,UAAAA,OACHkiF,KAAoBliF,GAAM,CAAA,GAC1BuhF,GAAaU,IAAOX,GAAQ,CAAC,GAAG,CAAA,GAAIthF,EAAAA,CAAAA;AAGrC,mBAASp6C,KAAI,GAAG08H,KAAAA,MAAc18H,KAAIq8H,GAAMn3H,QAAQlF,MAAK,GAAG;AACvD,gBAAI6yD,KAAOwpE,GAAMr8H,EAAAA,GACbyoB,KAAQozG,GAAUhpE,IAAM,GAAG,CAAA,GAC3BxpC,KAAOwyG,GAAUhpE,IAAAA,EAAO;AAC5B,iBAEa,QAAVpqC,MAA2B,QAAVA,MAA2B,QAAVA,MACtB,QAATY,MAAyB,QAATA,MAAyB,QAATA,OAElCZ,OAAUY;AAEb,oBAAM,IAAIgwG,GAAa,sDAAA;AASxB,gBAPa,kBAATxmE,MAA2B6pE,OAC9BD,KAAAA,OAMG9hG,GAAOy/F,IAFXoC,KAAoB,OADpBF,MAAqB,MAAMzpE,MACmB,GAAA;AAG7C5xD,cAAAA,KAAQm5H,GAAWoC,EAAAA;qBACA,QAATv7H,IAAe;AACzB,kBAAA,EAAM4xD,MAAQ5xD,KAAQ;AACrB,oBAAA,CAAKk7H;AACJ,wBAAM,IAAI3C,GAAW,wBAAwBj5H,KAAO,6CAAA;AAErD;cAAA;AAED,kBAAIo5H,MAAU35H,KAAI,KAAMq8H,GAAMn3H,QAAQ;AACrC,oBAAIq+G,KAAOoW,GAAM14H,IAAO4xD,EAAAA;AAWvB5xD,gBAAAA,MAVDy7H,KAAAA,CAAAA,CAAUnZ,OASG,SAASA,MAAAA,EAAU,mBAAmBA,GAAK1iH,OAC/C0iH,GAAK1iH,MAELI,GAAM4xD,EAAAA;cAAAA;AAGf6pE,gBAAAA,KAAQ/hG,GAAO15B,IAAO4xD,EAAAA,GACtB5xD,KAAQA,GAAM4xD,EAAAA;AAGX6pE,cAAAA,MAAAA,CAAUD,OACbrC,GAAWoC,EAAAA,IAAqBv7H;YAAAA;UAAAA;AAInC,iBAAOA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACtUR,YAAI8lH,KAAiBtlH,GAAQ,GAAA;AAE7B1B,QAAAA,GAAOD,UAAU08B,SAAS56B,UAAUJ,QAAQulH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACF5C,YAAI72F,KAAUnF,OAAOnpB,UAAUsuB,SAC3BysG,KAAkB,QAElBC,KACS,WADTA,KAES;AAGb78H,QAAAA,GAAOD,UAAU,EACb,SAAW88H,IACXC,YAAY,EACRC,SAAS,SAAU77H,IAAAA;AACf,iBAAOivB,GAAQ/vB,KAAKc,IAAO07H,IAAiB,GAAA;QAAA,GAEhDI,SAAS,SAAU97H,IAAAA;AACf,iBAAO8pB,OAAO9pB,EAAAA;QAAAA,EAAAA,GAGtB67H,SAASF,IACTG,SAASH,GAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACnBb,QAAAn7H,GAAQ,EAAA;AACR,YAAI4kC,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjB2lE,KAAa3lE,GAAQ,EAAA,GACrBtB,KAAOsB,GAAQ,EAAA,GACf44B,KAAc54B,GAAQ,EAAA,GACtBu7H,KAAiBv7H,GAAQ,GAAA,GACzBiuF,KAAWjuF,GAAQ,GAAA,GACnBw7H,KAAcx7H,GAAQ,GAAA,GACtBuuH,KAAiBvuH,GAAQ,GAAA,GACzBsuH,KAA4BtuH,GAAQ,GAAA,GACpCkuD,KAAsBluD,GAAQ,EAAA,GAC9By7H,KAAaz7H,GAAQ,GAAA,GACrB64B,KAAa74B,GAAQ,EAAA,GACrBk5B,KAASl5B,GAAQ,EAAA,GACjBD,KAAOC,GAAQ,EAAA,GACfm1C,KAAUn1C,GAAQ,EAAA,GAClBkjC,KAAWljC,GAAQ,EAAA,GACnByrB,KAAWzrB,GAAQ,EAAA,GACnB07H,KAAY17H,GAAQ,EAAA,GACpBH,KAASG,GAAQ,GAAA,GACjBm3D,KAA2Bn3D,GAAQ,EAAA,GACnCkG,KAAclG,GAAQ,GAAA,GACtBqjC,KAAoBrjC,GAAQ,GAAA,GAC5B27H,KAA0B37H,GAAQ,GAAA,GAClCurF,KAAkBvrF,GAAQ,EAAA,GAC1B47H,KAAY57H,GAAQ,GAAA,GAEpBusF,KAAWhB,GAAgB,UAAA,GAC3BswC,KAAoB,mBACpBC,KAA6BD,2BAC7BvtE,KAAmBJ,GAAoBl/C,KACvC+sH,KAAyB7tE,GAAoBlB,UAAU6uE,EAAAA,GACvDG,KAA2B9tE,GAAoBlB,UAAU8uE,EAAAA,GAEzDG,IAAUt2D,GAAW,OAAA,GACrBu2D,KAAYv2D,GAAW,SAAA,GACvBw2D,KAAUx2D,GAAW,SAAA,GACrBy2D,KAAmBF,MAAaA,GAAU/7H,WAC1Ck8H,KAAmBF,MAAWA,GAAQh8H,WACtCywB,KAAS+H,GAAO/H,QAChBtnB,KAAYqvB,GAAOrvB,WACnB8kB,KAAqBuK,GAAOvK,oBAC5BuG,KAAqBgE,GAAOhE,oBAC5B8nB,KAAS7jB,GAAY,GAAG6jB,MAAAA,GACxBl3B,KAAOqT,GAAY,CAAA,EAAGrT,IAAAA,GACtBrQ,KAAO0jB,GAAY,CAAA,EAAG1jB,IAAAA,GACtBuZ,KAAUmK,GAAY,GAAGnK,OAAAA,GACzBva,KAAQ0kB,GAAY,CAAA,EAAG1kB,KAAAA,GACvBmE,IAASugB,GAAY,CAAA,EAAGvgB,MAAAA,GACxB0b,KAAQ6E,GAAY,GAAG7E,KAAAA,GACvB40C,KAAc/vC,GAAY,GAAGl4B,KAAAA,GAE7B47H,KAAO,OACPC,KAAY97H,MAAM,CAAA,GAElB+7H,KAAkB,SAAU/xD,IAAAA;AAC9B,iBAAO8xD,GAAU9xD,KAAQ,CAAA,MAAO8xD,GAAU9xD,KAAQ,CAAA,IAAK75C,GAAO,uBAAuB65C,KAAQ,MAAM,IAAA;QAAA,GAGjGgyD,KAAgB,SAAU3mF,IAAAA;AAC5B,cAAA;AACE,mBAAO1nB,GAAmB0nB,EAAAA;UAAAA,SACnB/pC,IAAP;AACA,mBAAO+pC;UAAAA;QAAAA,GAIP4mF,KAAc,SAAU/hG,IAAAA;AAC1B,cAAI5C,KAAStJ,GAAQkM,IAAI2hG,IAAM,GAAA,GAC3B7xD,KAAQ;AACZ,cAAA;AACE,mBAAOr8C,GAAmB2J,EAAAA;UAAAA,SACnBhsB,IAAP;AACA,mBAAO0+D;AACL1yC,cAAAA,KAAStJ,GAAQsJ,IAAQykG,GAAgB/xD,IAAAA,GAAUgyD,EAAAA;AAErD,mBAAO1kG;UAAAA;QAAAA,GAIPtS,KAAO,gBAEPk3G,KAAe,EACjB,KAAK,OACL,KAAK,OACL,KAAK,OACL,KAAK,OACL,KAAK,OACL,OAAO,IAAA,GAGL91E,KAAW,SAAU10B,IAAAA;AACvB,iBAAOwqG,GAAaxqG,EAAAA;QAAAA,GAGlByqG,KAAY,SAAUjiG,IAAAA;AACxB,iBAAOlM,GAAQkG,GAAmBgG,EAAAA,GAAKlV,IAAMohC,EAAAA;QAAAA,GAG3Cg2E,KAA0BvO,GAA0B,SAAkBz6F,IAAQqkB,IAAAA;AAChFoW,UAAAA,GAAiBhpD,MAAM,EACrBE,MAAMs2H,IACN72H,UAAUiB,GAAY61H,GAAuBloG,EAAAA,EAAQ3oB,OAAAA,GACrDgtC,MAAMA,GAAAA,CAAAA;QAAAA,GAEP,YAAY,WAAA;AACb,cAAIgH,KAAQ88E,GAAyB12H,IAAAA,GACjC4yC,KAAOgH,GAAMhH,MACb/rC,KAAO+yC,GAAMj6C,SAASI,KAAAA,GACtBuE,KAAQuC,GAAK3M;AAGf,iBAFG2M,GAAKvG,SACRuG,GAAK3M,QAAiB,WAAT04C,KAAkBtuC,GAAM9J,MAAe,aAATo4C,KAAoBtuC,GAAMpK,QAAQ,CAACoK,GAAM9J,KAAK8J,GAAMpK,KAAAA,IACxF2M;QAAAA,GAAAA,IACR,GAEC2wH,KAAuB,SAAU9L,IAAAA;AACnC1rH,eAAK4F,UAAU,CAAA,GACf5F,KAAKyvB,MAAM,MAAA,WAEPi8F,OACEvlG,GAASulG,EAAAA,IAAO1rH,KAAKy3H,YAAY/L,EAAAA,IAChC1rH,KAAK03H,WAA0B,YAAA,OAARhM,KAAuC,QAApBv0E,GAAOu0E,IAAM,CAAA,IAAaroD,GAAYqoD,IAAM,CAAA,IAAKA,KAAO0K,GAAU1K,EAAAA,CAAAA;QAAAA;AAIrH8L,WAAqB38H,YAAY,EAC/BqF,MAAMq2H,IACNoB,SAAS,SAAUloG,IAAAA;AACjBzvB,eAAKyvB,MAAMA,IACXzvB,KAAKkL,OAAAA;QAAAA,GAEPusH,aAAa,SAAU98H,IAAAA;AACrB,cACIgF,IAAUI,IAAM8G,IAAM+wH,IAAeC,IAAWn2G,IAAO80B,IADvD2wC,KAAiBppD,GAAkBpjC,EAAAA;AAGvC,cAAIwsF;AAGF,iBADApnF,MADAJ,KAAWiB,GAAYjG,IAAQwsF,EAAAA,GACfpnF,MAAAA,EACP8G,KAAOzN,GAAK2G,IAAMJ,EAAAA,GAAWW,QAAM;AAG1C,kBADAu3H,MADAD,KAAgBh3H,GAAYg9B,GAAS/2B,GAAK3M,KAAAA,CAAAA,GAChB6F,OAEvB2hB,KAAQtoB,GAAKy+H,IAAWD,EAAAA,GAAgBt3H,SACxCk2C,KAASp9C,GAAKy+H,IAAWD,EAAAA,GAAgBt3H,QAAAA,CACzClH,GAAKy+H,IAAWD,EAAAA,EAAet3H;AAChC,sBAAM0D,GAAU,iCAAA;AAClB4L,cAAAA,GAAK5P,KAAK4F,SAAS,EAAEpL,KAAK47H,GAAU10G,GAAMxnB,KAAAA,GAAQA,OAAOk8H,GAAU5/E,GAAOt8C,KAAAA,EAAAA,CAAAA;YAAAA;;AAEvE,qBAASM,MAAOG;AAAYi5B,cAAAA,GAAOj5B,IAAQH,EAAAA,KAChDoV,GAAK5P,KAAK4F,SAAS,EAAEpL,KAAKA,IAAKN,OAAOk8H,GAAUz7H,GAAOH,EAAAA,CAAAA,EAAAA,CAAAA;QAAAA,GAG3Dk9H,YAAY,SAAU7tE,IAAAA;AACpB,cAAIA;AAIF,qBADI0uB,IAAWj0E,IAFXohH,KAAaj3F,GAAMo7B,IAAO,GAAA,GAC1BjrD,KAAQ,GAELA,KAAQ8mH,GAAWvnH;AAAAA,eACxBo6E,KAAYmtC,GAAW9mH,IAAAA,GACTT,WACZmG,KAAQmqB,GAAM8pD,IAAW,GAAA,GACzB3oE,GAAK5P,KAAK4F,SAAS,EACjBpL,KAAK48H,GAAYxoH,GAAMtK,EAAAA,CAAAA,GACvBpK,OAAOk9H,GAAYn3G,GAAK3b,IAAO,GAAA,CAAA,EAAA,CAAA;QAAA,GAMzCgzH,WAAW,WAAA;AAKT,mBADIhzH,IAHAsB,KAAU5F,KAAK4F,SACf6sB,KAAS,CAAA,GACT7zB,KAAQ,GAELA,KAAQgH,GAAQzH;AACrBmG,YAAAA,KAAQsB,GAAQhH,IAAAA,GAChBgR,GAAK6iB,IAAQ6kG,GAAUhzH,GAAM9J,GAAAA,IAAO,MAAM88H,GAAUhzH,GAAMpK,KAAAA,CAAAA;AAC1D,iBAAO+lB,GAAKwS,IAAQ,GAAA;QAAA,GAExBvnB,QAAQ,WAAA;AACNlL,eAAK4F,QAAQzH,SAAS,GACtB6B,KAAK03H,WAAW13H,KAAKyvB,IAAIo6B,KAAAA;QAAAA,GAE3BiuE,WAAW,WAAA;AACL93H,eAAKyvB,OAAKzvB,KAAKyvB,IAAIvkB,OAAAA;QAAAA,EAAAA;AAM3B,YAAI6sH,KAA6B,WAAA;AAC/B5B,UAAAA,GAAWn2H,MAAMg4H,EAAAA;AACjB,cAAItM,KAAOzpH,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA;AAC5C+mD,UAAAA,GAAiBhpD,MAAM,IAAIw3H,GAAqB9L,EAAAA,CAAAA;QAAAA,GAG9CsM,KAA2BD,GAA2Bl9H;AAwI1D,YAtIAq7H,GAAY8B,IAA0B,EAGpCC,QAAQ,SAAgBz+H,IAAMU,IAAAA;AAC5Bm8H,UAAAA,GAAwBp0H,UAAU9D,QAAQ,CAAA;AAC1C,cAAIy7C,KAAQ68E,GAAuBz2H,IAAAA;AACnC4P,UAAAA,GAAKgqC,GAAMh0C,SAAS,EAAEpL,KAAK47H,GAAU58H,EAAAA,GAAOU,OAAOk8H,GAAUl8H,EAAAA,EAAAA,CAAAA,GAC7D0/C,GAAMk+E,UAAAA;QAAAA,GAIR,QAAU,SAAUt+H,IAAAA;AAClB68H,UAAAA,GAAwBp0H,UAAU9D,QAAQ,CAAA;AAK1C,mBAJIy7C,KAAQ68E,GAAuBz2H,IAAAA,GAC/B4F,KAAUg0C,GAAMh0C,SAChBpL,KAAM47H,GAAU58H,EAAAA,GAChBoF,KAAQ,GACLA,KAAQgH,GAAQzH;AACjByH,YAAAA,GAAQhH,EAAAA,EAAOpE,QAAQA,KAAKuY,EAAOnN,IAAShH,IAAO,CAAA,IAClDA;AAEPg7C,UAAAA,GAAMk+E,UAAAA;QAAAA,GAIRh+H,KAAK,SAAaN,IAAAA;AAChB68H,UAAAA,GAAwBp0H,UAAU9D,QAAQ,CAAA;AAI1C,mBAHIyH,KAAU6wH,GAAuBz2H,IAAAA,EAAM4F,SACvCpL,KAAM47H,GAAU58H,EAAAA,GAChBoF,KAAQ,GACLA,KAAQgH,GAAQzH,QAAQS;AAC7B,gBAAIgH,GAAQhH,EAAAA,EAAOpE,QAAQA;AAAK,qBAAOoL,GAAQhH,EAAAA,EAAO1E;AAExD,iBAAO;QAAA,GAITg+H,QAAQ,SAAgB1+H,IAAAA;AACtB68H,UAAAA,GAAwBp0H,UAAU9D,QAAQ,CAAA;AAK1C,mBAJIyH,KAAU6wH,GAAuBz2H,IAAAA,EAAM4F,SACvCpL,KAAM47H,GAAU58H,EAAAA,GAChBi5B,KAAS,CAAA,GACT7zB,KAAQ,GACLA,KAAQgH,GAAQzH,QAAQS;AACzBgH,YAAAA,GAAQhH,EAAAA,EAAOpE,QAAQA,MAAKoV,GAAK6iB,IAAQ7sB,GAAQhH,EAAAA,EAAO1E,KAAAA;AAE9D,iBAAOu4B;QAAAA,GAITvsB,KAAK,SAAa1M,IAAAA;AAChB68H,UAAAA,GAAwBp0H,UAAU9D,QAAQ,CAAA;AAI1C,mBAHIyH,KAAU6wH,GAAuBz2H,IAAAA,EAAM4F,SACvCpL,KAAM47H,GAAU58H,EAAAA,GAChBoF,KAAQ,GACLA,KAAQgH,GAAQzH;AACrB,gBAAIyH,GAAQhH,IAAAA,EAASpE,QAAQA;AAAK,qBAAA;AAEpC,iBAAA;QAAO,GAITkP,KAAK,SAAalQ,IAAMU,IAAAA;AACtBm8H,UAAAA,GAAwBp0H,UAAU9D,QAAQ,CAAA;AAQ1C,mBADImG,IANAs1C,KAAQ68E,GAAuBz2H,IAAAA,GAC/B4F,KAAUg0C,GAAMh0C,SAChByb,KAAAA,OACA7mB,KAAM47H,GAAU58H,EAAAA,GAChBiO,KAAM2uH,GAAUl8H,EAAAA,GAChB0E,KAAQ,GAELA,KAAQgH,GAAQzH,QAAQS;AAAAA,aAC7B0F,KAAQsB,GAAQhH,EAAAA,GACNpE,QAAQA,OACZ6mB,KAAOtO,EAAOnN,IAAShH,MAAS,CAAA,KAElCyiB,KAAAA,MACA/c,GAAMpK,QAAQuN;AAIf4Z,UAAAA,MAAOzR,GAAKhK,IAAS,EAAEpL,KAAKA,IAAKN,OAAOuN,GAAAA,CAAAA,GAC7CmyC,GAAMk+E,UAAAA;QAAAA,GAIRzrH,MAAM,WAAA;AACJ,cAAIutC,KAAQ68E,GAAuBz2H,IAAAA;AACnCs2H,UAAAA,GAAU18E,GAAMh0C,SAAS,SAAUJ,IAAGC,IAAAA;AACpC,mBAAOD,GAAEhL,MAAMiL,GAAEjL,MAAM,IAAA;UAAK,CAAA,GAE9Bo/C,GAAMk+E,UAAAA;QAAAA,GAGRvtH,SAAS,SAAiBixE,IAAAA;AAKxB,mBADIl3E,IAHAsB,KAAU6wH,GAAuBz2H,IAAAA,EAAM4F,SACvC4iD,KAAgB/tD,GAAK+gF,IAAUv5E,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC,GACrEtF,KAAQ,GAELA,KAAQgH,GAAQzH;AAErBqqD,YAAAA,IADAlkD,KAAQsB,GAAQhH,IAAAA,GACI1E,OAAOoK,GAAM9J,KAAKwF,IAAAA;QAAAA,GAI1CqD,MAAM,WAAA;AACJ,iBAAO,IAAIk0H,GAAwBv3H,MAAM,MAAA;QAAA,GAG3CoT,QAAQ,WAAA;AACN,iBAAO,IAAImkH,GAAwBv3H,MAAM,QAAA;QAAA,GAG3C4F,SAAS,WAAA;AACP,iBAAO,IAAI2xH,GAAwBv3H,MAAM,SAAA;QAAA,EAAA,GAE1C,EAAEnG,YAAAA,KAAY,CAAA,GAGjB8uF,GAASqvC,IAA0B/wC,IAAU+wC,GAAyBpyH,SAAS,EAAEpM,MAAM,UAAA,CAAA,GAIvFmvF,GAASqvC,IAA0B,YAAY,WAAA;AAC7C,iBAAOvB,GAAuBz2H,IAAAA,EAAMs3H,UAAAA;QAAAA,GACnC,EAAEz9H,YAAAA,KAAY,CAAA,GAEjBovH,GAAe8O,IAA4BxB,EAAAA,GAE3Cj3F,GAAE,EAAEjM,QAAAA,MAAc2B,QAAAA,CAASihG,GAAAA,GAAkB,EAC3CkC,iBAAiBJ,GAAAA,CAAAA,GAAAA,CAId9B,MAAkB1iG,GAAWsjG,EAAAA,GAAU;AAC1C,cAAIuB,KAAa9kG,GAAYyjG,GAAiB7wH,GAAAA,GAC1CmyH,KAAa/kG,GAAYyjG,GAAiBrtH,GAAAA,GAE1C4uH,KAAqB,SAAU5M,IAAAA;AACjC,gBAAIvlG,GAASulG,EAAAA,GAAO;AAClB,kBACI97D,IADAK,KAAOy7D,GAAKz7D;AAEhB,kBAAIpgB,GAAQogB,EAAAA,MAAUsmE;AAKpB,uBAJA3mE,KAAU87D,GAAK97D,UAAU,IAAIinE,GAAQnL,GAAK97D,OAAAA,IAAW,IAAIinE,MACpDuB,GAAWxoE,IAAS,cAAA,KACvByoE,GAAWzoE,IAAS,gBAAgB,iDAAA,GAE/Br1D,GAAOmxH,IAAM,EAClBz7D,MAAM4B,GAAyB,GAAGukE,GAAUnmE,EAAAA,CAAAA,GAC5CL,SAASiC,GAAyB,GAAGjC,EAAAA,EAAAA,CAAAA;YAAAA;AAGzC,mBAAO87D;UAAAA;AAWX,cARIn4F,GAAWojG,CAAAA,KACbr3F,GAAE,EAAEjM,QAAAA,MAAcx5B,YAAAA,MAAkBm7B,QAAAA,KAAQ,GAAQ,EAClDiN,OAAO,SAAerR,IAAAA;AACpB,mBAAO+lG,EAAQ/lG,IAAO3uB,UAAU9D,SAAS,IAAIm6H,GAAmBr2H,UAAU,CAAA,CAAA,IAAM,CAAA,CAAA;UAAA,EAAA,CAAA,GAKlFsxB,GAAWqjG,EAAAA,GAAY;AACzB,gBAAI2B,KAAqB,SAAiB3nG,IAAAA;AAExC,qBADAulG,GAAWn2H,MAAM82H,EAAAA,GACV,IAAIF,GAAUhmG,IAAO3uB,UAAU9D,SAAS,IAAIm6H,GAAmBr2H,UAAU,CAAA,CAAA,IAAM,CAAA,CAAA;YAAA;AAGxF60H,YAAAA,GAAiBt7H,cAAc+8H,IAC/BA,GAAmB19H,YAAYi8H,IAE/Bx3F,GAAE,EAAEjM,QAAAA,MAAc2B,QAAAA,KAAQ,GAAQ,EAChCwjG,SAASD,GAAAA,CAAAA;UAAAA;QAAAA;AAKfv/H,QAAAA,GAAOD,UAAU,EACfo/H,iBAAiBJ,IACjB/vG,UAAUyuG,GAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7XZ,YAmBIrtG,KAnBkB1uB,GAAQ,GAAA,EAmBG,aAAA;AAEjC1B,QAAAA,GAAOD,UAAUqwB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACrBjB,QAAA1uB,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,EAAA,GAAA8K,KAAA9K,GAAA,GAAA;AAIe,QAAAP,GAAA,UAAA,SAASsiC,IAAAA;AACtB,iBAAO,EACLg8F,cAAc,EACZrtG,KAAK,EACHstG,UAAUC,OAAAA,GAAAA,OAAAA,EAAal8F,EAAAA,GACvBm8F,SAAAA,IACAC,WAAAA,GAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GCIJC,KAA0B,EAE5Bj3F,MAAM,GACNhuB,OAAO,SACP8tB,SAAS,gBAAA;AAGI,QAAAxnC,GAAA,UAAA,WAAA;AAAY,cAADc;AACxB,iBAAAA,KAAA,CAAA,GAAAvB,GAAA,EAAAuB,IACG+yC,GAAAA,gBAAiB,SAAC4L,IAADz/C,IAAA;AAAyB,gBAAf+mC,KAAc/mC,GAAd+mC,SACtBz6B,KAAQxN,GAAA,EAAc6/H,IAAyB53F,IAAS,EAAChhC,MAAM,SAAA,CAAA;AACnE,mBAAO05C,GACJ1uC,OAAO,UAAU,SAAAye,IAAAA;AAAM,sBAAKA,MAAUzX,OAAAA,GAAAA,IAAAA,EAAAA,GAAQtC,KAAMpL,OAAAA,GAAAA,MAAAA,EAAQiC,EAAAA,CAAAA;YAAAA,CAAAA,EAC5DyE,OAAO,UAAU,SAAAye,IAAAA;AAAM,qBAAI47C,OAAAA,GAAAA,OAAAA,EAAgB57C,EAAAA;YAAAA,CAAAA;UAAAA,CAAAA,GALlDjwB,GAAA,EAAAuB,IAQGgzC,GAAAA,sBAAuB,SAAC2L,IAADz/C,IAAA;AAAyB,gBAAf+mC,KAAc/mC,GAAd+mC;AAIhC,mBAHAA,KAAUlmC,GAAA,EAAAkmC,EAAAA,EAAO,KAAPA,IAAY,SAAA9V,IAAAA;AACpB,qBAAO5mB,OAAAA,GAAAA,MAAAA,EAAOvL,GAAA,EAAc6/H,IAAyB1tG,IAAK,EAAElrB,MAAM,SAAA,CAAA,CAAA;YAAA,CAAA,GAE7D05C,GACJ1uC,OAAO,UAAU,SAAAye,IAAAA;AAAM,kBAAAxvB;AAAA,qBAAIjB,GAAA,EAAAiB,KAACwvB,MAAUzX,OAAAA,GAAAA,IAAAA,EAAAA,CAAAA,EAAX,KAAA/X,IAA2BqK,OAAAA,GAAAA,MAAAA,EAAQ08B,EAAAA,CAAAA;YAAAA,CAAAA,EAC9Dh2B,OAAO,UAAU,SAAAye,IAAAA;AAAM,qBAAI47C,OAAAA,GAAAA,OAAAA,EAAgB57C,EAAAA;YAAAA,CAAAA;UAAAA,CAAAA,GAdlDjwB,GAAA,EAAAuB,IAiBGizC,GAAAA,cAAe,SAAC0L,IAADz/C,IAAA;AAAyB,gBAAf+mC,KAAc/mC,GAAd+mC,SACpBz6B,KAAQjC,OAAAA,GAAAA,MAAAA,EAAO08B,EAAAA;AAEnB,mBADAz6B,KAAQA,GAAMiD,IAAI,QAAQ,MAAA,GACnBkwC,GACJ1uC,OAAO,UAAU,SAAAye,IAAAA;AAAM,sBAAKA,MAAUzX,OAAAA,GAAAA,IAAAA,EAAAA,GAAQtC,KAAMpL,OAAAA,GAAAA,MAAAA,EAAOiC,EAAAA,CAAAA,EAAQgG,OAAO,SAAA2e,IAAAA;AAAG,uBAAIA,GAAItxB,IAAI,MAAA;cAAA,CAAA;YAAA,CAAA,EACzFoR,OAAO,UAAU,SAAAye,IAAAA;AAAM,qBAAI47C,OAAAA,GAAAA,OAAAA,EAAgB57C,EAAAA;YAAAA,CAAAA;UAAAA,CAAAA,GAtBlDjwB,GAAA,EAAAuB,IAyBGkzC,GAAAA,oBAAqB,SAACyL,IAADz/C,IAAA;AAAyB,gBAAf+mC,KAAc/mC,GAAd+mC;AAI9B,mBAHAA,KAAUlmC,GAAA,EAAAkmC,EAAAA,EAAO,KAAPA,IAAY,SAAA9V,IAAAA;AACpB,qBAAO5mB,OAAAA,GAAAA,MAAAA,EAAOvL,GAAA,EAAc6/H,IAAyB1tG,IAAK,EAAElrB,MAAM,OAAA,CAAA,CAAA;YAAA,CAAA,GAE7D05C,GACJ1uC,OAAO,UAAU,SAAAye,IAAAA;AAAM,kBAAAxvB;AAAA,qBAAIjB,GAAA,EAAAiB,KAACwvB,MAAUzX,OAAAA,GAAAA,IAAAA,EAAAA,CAAAA,EAAX,KAAA/X,IAA0BqK,OAAAA,GAAAA,MAAAA,EAAO08B,EAAAA,CAAAA;YAAAA,CAAAA,EAC5Dh2B,OAAO,UAAU,SAAAye,IAAAA;AAAM,qBAAI47C,OAAAA,GAAAA,OAAAA,EAAgB57C,EAAAA;YAAAA,CAAAA;UAAAA,CAAAA,GA/BlDjwB,GAAA,EAAAuB,IAkCGmzC,GAAAA,cAAe,SAACwL,IAADz/C,IAAA;AAAyB,gBAAf+mC,KAAc/mC,GAAd+mC,SACpBz6B,KAAQjC,OAAAA,GAAAA,MAAAA,EAAOvL,GAAA,EAAc,CAAA,GAAIioC,EAAAA,CAAAA;AAGrC,mBADAz6B,KAAQA,GAAMiD,IAAI,QAAQ,MAAA,GACnBkwC,GACJ1uC,OAAO,UAAU,SAAAye,IAAAA;AAAM,sBAAKA,MAAUzX,OAAAA,GAAAA,IAAAA,EAAAA,GAAQtC,KAAMpL,OAAAA,GAAAA,MAAAA,EAAOiC,EAAAA,CAAAA;YAAAA,CAAAA,EAC3DyE,OAAO,UAAU,SAAAye,IAAAA;AAAM,qBAAI47C,OAAAA,GAAAA,OAAAA,EAAgB57C,EAAAA;YAAAA,CAAAA;UAAAA,CAAAA,GAxClDjwB,GAAA,EAAAuB,IA2CGozC,GAAAA,OAAQ,SAACuL,IAADz/C,IAAA;AAAyB,gBAADO,IAAdwmC,KAAc/mC,GAAd+mC;AACjB,gBAAA,CAAIA,MAAAA,CAAY0Y,GAAM9/C,IAAI,QAAA;AACxB,qBAAO8/C;AAGT,gBAAIm/E,KAAYh+H,GAAA,EAAAL,KAAAk/C,GAAM9/C,IAAI,QAAA,CAAA,EAAV,KAAAY,IACN,SAAA0wB,IAAAA;AAAQ,kBAADjxB;AACb,qBAAOZ,GAAA,EAAAY,KAAAixB,GAAI/N,OAAAA,CAAAA,EAAJ,KAAAljB,IAAmB,SAAAgG,IAAAA;AACxB,oBAAM64H,KAAW5tG,GAAItxB,IAAIqG,EAAAA,GACnB84H,KAAc/3F,GAAQ/gC,EAAAA;AAE5B,uBAAA,CAAI84H,MAEGD,OAAaC;cAAAA,CAAAA;YAAAA,CAAAA;AAG1B,mBAAOr/E,GAAMluC,MAAM,EACjBie,QAAQovG,GAAAA,CAAAA;UAAAA,CAAAA,GA5Ddr/H,GAAA,EAAAuB,IAgEGqzC,GAAAA,UAAW,SAACsL,IAADz/C,IAAA;AAAyB,gBAADO,IAAdwmC,KAAc/mC,GAAd+mC;AACpB,gBAAA,CAAIA,MAA8B,cAAA,OAAZA;AACpB,qBAAO0Y;AAET,gBAAIm/E,KAAYh+H,GAAA,EAAAL,KAAAk/C,GAAM9/C,IAAI,QAAA,CAAA,EAAV,KAAAY,IACN,SAAA0wB,IAAAA;AACN,qBAAO8V,GAAQ9V,EAAAA;YAAAA,CAAAA;AAEnB,mBAAOwuB,GAAMluC,MAAM,EACjBie,QAAQovG,GAAAA,CAAAA;UAAAA,CAAAA,GAzEd99H;QAAA;MAAA,GAAA,SAAAA,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,aAAA,WAAA;AAAA,iBAAA8sB;QAAA,CAAA;AAAA,YAAAltB,KAAAW,GAAA,CAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,EAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,EAAA,GAAAM,KAAAN,GAAA,EAAAssB,EAAA,GAAA1tB,KAAAoB,GAAA,EAAA,GAAAxB,KAAAwB,GAAA,EAAApB,EAAA;ACtBK,iBAASssE,GAAUj8C,IAAAA;AAGxB,iBAAOjwB,GAAA,EAAAiwB,EAAAA,EAAM,KAANA,IACA,SAAAyB,IAAAA;AAAQ,gBAADjxB,IACN++H,KAAU,uBACVjgI,KAAIA,GAAA,EAAAkB,KAAAixB,GAAItxB,IAAI,SAAA,CAAA,EAAR,KAAAK,IAA2B++H,EAAAA;AACnC,gBAAGjgI,KAAAA,IAAQ;AAAC,kBAADS,IAAA8L,IACLgoB,KAAQxyB,GAAA,EAAAtB,KAAA0xB,GAAItxB,IAAI,SAAA,CAAA,EAAR,KAAAJ,IAAyBT,KAAIigI,GAAQ/6H,MAAAA,EAAQswB,MAAM,GAAA;AAC/D,qBAAOrD,GAAI1hB,IAAI,WAAW1O,GAAA,EAAAwK,KAAA4lB,GAAItxB,IAAI,SAAA,CAAA,EAAR,KAAA0L,IAAyB,GAAGvM,EAAAA,IAO9D,SAAwBu0B,IAAAA;AACtB,uBAAOt0B,GAAA,EAAAs0B,EAAAA,EAAK,KAALA,IAAa,SAACzyB,IAAGzB,IAAGL,IAAG6E,IAAAA;AAC5B,yBAAG7E,OAAM6E,GAAIK,SAAS,KAAKL,GAAIK,SAAS,IAC/BpD,KAAI,QAAQzB,KACXwE,GAAI7E,KAAE,CAAA,KAAM6E,GAAIK,SAAS,IAC1BpD,KAAIzB,KAAI,OACPwE,GAAI7E,KAAE,CAAA,IACP8B,KAAIzB,KAAI,MAERyB,KAAIzB;gBAAAA,GAEZ,aAAA;cAAA,EAlB6Ek0B,EAAAA,CAAAA;YAAAA;AAE1E,mBAAOpC;UAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,aAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,QAAAA,GAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,CAAAA;ACRR,iBAASw6C,GAAUj8C,IAAnBxvB,IAAA;AAAuC,UAAAA,GAAV+hC;AAIlC,iBAAOvS;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACPT,QAAAjvB,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,aAAA,WAAA;AAAA,iBAAAqL;QAAA,CAAA,GAAA9K,GAAA,EAAAP,IAAA,aAAA,WAAA;AAAA,iBAAAlB;QAAA,CAAA;AAAA,YAAAc,KAAAW,GAAA,CAAA,GAAAhB,KAAAgB,GAAA,EAAA,GAKa4oC,KAAYnM,OAAAA,GAAAA,CAAAA,EAFX,SAAAyiB,IAAAA;AAAK,iBAAIA;QAAAA,GAIrB,SAAAxuB,IAAAA;AAAG,iBAAIA,GAAItxB,IAAI,UAAUoY,OAAAA,GAAAA,IAAAA,EAAAA,CAAAA;QAAAA,CAAAA,GAGd6/C,KAAY56B,OAAAA,GAAAA,CAAAA,EACvBmM,IACA,SAAAE,IAAAA;AAAG,iBAAIA,GAAIlhB,KAAAA;QAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACZb,QAAA5nB,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,GAAA,GAAA8K,KAAA9K,GAAA,GAAA,GAAAzB,KAAAyB,GAAA,GAAA;AAKe,QAAAP,GAAA,UAAA,WAAA;AACb,iBAAO,EACLs+H,cAAc,EACZh2D,QAAQ,EACNi2D,UAAAA,GAAAA,SACAE,SAAAA,IACAC,WAAAA,GAAAA,GAEF93F,MAAM,EACJo4F,eAAAA,GAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,GAAAA;ACNR,QAAAh/H,GAAA,WAAAJ,KAAA,CAAA,GAAAyL,GAAA,EAAAzL,IAEGqoE,GAAAA,eAAgB,SAACxoB,IAAO3xB,IAAAA;AAAR,iBAAmB2xB,GAAMlwC,IAAI,UAAUue,GAAOiZ,OAAAA;QAAAA,CAAAA,GAFjE17B,GAAA,EAAAzL,IAIGsoE,GAAAA,eAAgB,SAACzoB,IAAO3xB,IAAAA;AAAR,iBAAmB2xB,GAAMlwC,IAAI,UAAUue,GAAOiZ,OAAAA;QAAAA,CAAAA,GAJjE17B,GAAA,EAAAzL,IAMGwoE,GAAAA,MAAO,SAAC3oB,IAAO3xB,IAAAA;AACd,cAAMmxG,KAAUnxG,GAAOiZ,QAAQ0hC,OAGzBy2D,KAAc70H,OAAAA,GAAAA,MAAAA,EAAOyjB,GAAOiZ,QAAQhb,KAAAA;AAI1C,iBAAO0zB,GAAM1uC,OAAO,SAAS1G,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,GAAK,SAAAgB,IAAAA;AAAC,mBAAIA,GAAEkE,IAAI2vH,IAAaD,EAAAA;UAAAA,CAAAA;QAAAA,CAAAA,GAdrE5zH,GAAA,EAAAzL,IAiBGuoE,GAAAA,aAAc,SAAC1oB,IAAO3xB,IAAAA;AAAY,cAADvtB,IAC5BwrB,KAAQ+B,GAAOiZ,QAAQhb,OACvB9rB,KAAO6tB,GAAOiZ,QAAQ9mC;AAC1B,iBAAOw/C,GAAM/uC,MAAMmc,GAAA,EAAAtsB,KAAA,CAAC,OAAA,CAAA,EAAD,KAAAA,IAAiBwrB,EAAAA,IAAS9rB,MAAQ,MAAM,EAAA;QAAA,CAAA,GApB/DL;MAAA,GAAA,SAAAkB,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,WAAA,WAAA;AAAA,iBAAAjB;QAAA,CAAA,GAAAwB,GAAA,EAAAP,IAAA,iBAAA,WAAA;AAAA,iBAAA8sB;QAAA,CAAA,GAAAvsB,GAAA,EAAAP,IAAA,WAAA,WAAA;AAAA,iBAAAY;QAAA,CAAA,GAAAL,GAAA,EAAAP,IAAA,YAAA,WAAA;AAAA,iBAAAoO;QAAA,CAAA,GAAA7N,GAAA,EAAAP,IAAA,eAAA,WAAA;AAAA,iBAAAZ;QAAA,CAAA;AAAA,YAAAQ,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,CAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,EAAA,GAAAM,KAAAN,GAAA,CAAA,GAAApB,KAAAoB,GAAA,CAAA,GCFa6wC,KAAU,SAAAqO,IAAAA;AAAK,iBAAIA,GAAM9/C,IAAI,QAAA;QAAA,GAE7Bw/H,KAAgB,SAAA1/E,IAAAA;AAAK,iBAAIA,GAAM9/C,IAAI,QAAA;QAAA,GAEnCs/H,KAAU,SAACx/E,IAAO1zB,IAAOqzG,IAAAA;AAEpC,iBADArzG,KAAQgB,OAAAA,GAAAA,CAAAA,EAAehB,EAAAA,GAChB0zB,GAAM9/C,IAAI,SAAS0K,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,CAAA,EAAK1K,IAAI0K,OAAAA,GAAAA,MAAAA,EAAO0hB,EAAAA,GAAQqzG,EAAAA;QAAAA,GAG9CC,KAAW,SAAC5/E,IAAO1zB,IAAAA;AAAmB,cAADxrB,IAAX6+H,KAAW,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAP;AAEzC,iBADArzG,KAAQgB,OAAAA,GAAAA,CAAAA,EAAehB,EAAAA,GAChB0zB,GAAM/3B,MAAN5oB,GAAA,EAAAyB,KAAA,CAAa,OAAA,CAAA,EAAb,KAAAA,IAAAhB,GAAA,EAAyBwsB,EAAAA,CAAAA,GAAQqzG,EAAAA;QAAAA,GAG7BE,KAActiG,OAAAA,GAAAA,CAAAA,EAhBb,SAAAyiB,IAAAA;AAAK,iBAAIA;QAAAA,GAkBrB,SAAAA,IAAAA;AAAK,iBAAA,CAAKw/E,GAAQx/E,IAAO,QAAA;QAAA,CAAA;MAAA,GAAA,SAAA3+C,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,oBAAA,WAAA;AAAA,iBAAA6sB;QAAA,CAAA;AAAA,YAAAjtB,KAAAW,GAAA,CAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,EAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GCrBdmuD,KAAmB,SAAC+lE,IAAaj9F,IAAAA;AAAd,iBAAyB,SAACmd,IAAAA;AAAmB,qBAAA7/C,IAAAyL,KAAA,UAAA,QAATw0C,KAAS,IAAA,MAAAx0C,KAAA,IAAAA,KAAA,IAAA,CAAA,GAAAxK,KAAA,GAAAA,KAAAwK,IAAAxK;AAATg/C,cAAAA,GAASh/C,KAAA,CAAA,IAAA,UAAAA,EAAA;AAC3E,gBAAI2+H,KAAYD,GAAW,MAAA,QAAXhgI,GAAA,EAAAK,KAAA,CAAY6/C,EAAAA,CAAAA,EAAZ,KAAA7/C,IAAsBigD,EAAAA,CAAAA,GAEtC9gD,KAA4CujC,GAAO3U,UAAAA,GAA3CvlB,KAARrJ,GAAQqJ,IAAIq3H,KAAZ1gI,GAAY0gI,iBAAiBx3F,KAA7BlpC,GAA6BkpC,YACvBy3F,KAAUz3F,GAAAA,GACR03F,KAAqBD,GAArBC,kBAGJ7pH,KAAS2pH,GAAgBN,cAAAA;AAW7B,mBAVIrpH,MAAAA,SACEA,MAA8B,WAAXA,MAAgC,YAAXA,OAC1C0pH,KAAYp3H,GAAGw3H,UAAUJ,IAAW1pH,EAAAA,IAIpC6pH,MAAAA,CAAqBluG,MAAMkuG,EAAAA,KAAqBA,MAAoB,MACtEH,KAAY1gI,GAAA,EAAA0gI,EAAAA,EAAS,KAATA,IAAgB,GAAGG,EAAAA,IAG1BH;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACpBT,QAAAj/H,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,EAAA,GAAA8K,KAAA9K,GAAA,EAAA,GAAAzB,KAAAyB,GAAA,GAAA;AAKe,QAAAP,GAAA,UAAA,WAAA;AACb,iBAAO,EACLs+H,cAAc,EACZ13F,MAAM,EACJi5F,aAAAA,IACAtB,UAAAA,GAAAA,SACAE,SAAAA,IACAC,WAAAA,GAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA;ACmBR,QAAA1+H,GAAA,WAAAJ,KAAA,CAAA,GAAAyL,GAAA,EAAAzL,IAEG8lC,GAAAA,aAAc,SAAC+Z,IAAO3xB,IAAAA;AACrB,iBAAkC,YAAA,OAAnBA,GAAOiZ,UAClB0Y,GAAMlwC,IAAI,QAAQue,GAAOiZ,OAAAA,IACzB0Y;QAAAA,CAAAA,GALRp0C,GAAA,EAAAzL,IAQG+lC,GAAAA,YAAa,SAAC8Z,IAAO3xB,IAAAA;AACpB,iBAAO2xB,GAAMlwC,IAAI,OAAOue,GAAOiZ,UAAQ,EAAA;QAAA,CAAA,GAT3C17B,GAAA,EAAAzL,IAYGgmC,GAAAA,aAAc,SAAC6Z,IAAO3xB,IAAAA;AACrB,iBAAO2xB,GAAMlwC,IAAI,QAAQ0c,OAAAA,GAAAA,CAAAA,EAAc6B,GAAOiZ,OAAAA,CAAAA;QAAAA,CAAAA,GAblD17B,GAAA,EAAAzL,IAgBG4mC,GAAAA,iBAAkB,SAACiZ,IAAO3xB,IAAAA;AACzB,iBAAO2xB,GAAM/uC,MAAM,CAAC,UAAA,GAAaub,OAAAA,GAAAA,CAAAA,EAAc6B,GAAOiZ,OAAAA,CAAAA;QAAAA,CAAAA,GAjB1D17B,GAAA,EAAAzL,IAoBG6mC,GAAAA,yBAA0B,SAACgZ,IAAO3xB,IAAAA;AAAY,cAADvtB,IAC5CX,KAAwBkuB,GAAOiZ,SAAvBhnC,KAARH,GAAQG,OAAOw5B,KAAf35B,GAAe25B;AACf,iBAAOkmB,GAAM/uC,MAANvR,GAAA,EAAAoB,KAAA,CAAa,kBAAA,CAAA,EAAb,KAAAA,IAAAssB,GAAA,EAAoC0M,EAAAA,CAAAA,GAAOtN,OAAAA,GAAAA,CAAAA,EAAclsB,EAAAA,CAAAA;QAAAA,CAAAA,GAtBpEsL,GAAA,EAAAzL,IAyBGimC,GAAAA,cAAe,SAAE4Z,IAAFz/C,IAAA;AAAyB,cAADO,IAAAX,IAAdmnC,KAAc/mC,GAAd+mC,SACZsD,KAAwDtD,GAA9DxN,MAAkBxC,KAA4CgQ,GAA5ChQ,WAAWC,KAAiC+P,GAAjC/P,SAASnF,KAAwBkV,GAAxBlV,OAAO9xB,KAAiBgnC,GAAjBhnC,OAAOoqC,KAAUpD,GAAVoD,OAEtDswB,KAAW5oC,KAAQ+E,OAAAA,GAAAA,CAAAA,EAAkB/E,EAAAA,IAArB1yB,GAAA,EAAAoB,KAAA,GAAA,OAAiCy2B,IAAjC,GAAA,CAAA,EAAA,KAAAz2B,IAA4Cw2B,EAAAA,GAE1D+oG,KAAW31F,KAAQ,cAAc;AAEvC,iBAAOsV,GAAM/uC,MAANvR,GAAA,EAAAS,KAAA,CACJ,QAAQ,OAAA,CAAA,EADJ,KAAAA,IAAAitB,GAAA,EACgBwd,EAAAA,GADhB,CAC4B,cAAcowB,IAAUqlE,EAAAA,CAAAA,GACzD//H,EAAAA;QAAAA,CAAAA,GAlCNsL,GAAA,EAAAzL,IAsCGkmC,GAAAA,8BAA+B,SAAE2Z,IAAFz/C,IAAA;AAAyB,cAADO,IAAAX,IAAdmnC,KAAc/mC,GAAd+mC,SAClCsD,KAAsDtD,GAAtDsD,YAAYtT,KAA0CgQ,GAA1ChQ,WAAWC,KAA+B+P,GAA/B/P,SAASyT,KAAsB1D,GAAtB0D;AAEtC,cAAA,CAAI1T,MAAAA,CAAcC;AAEhB,mBADApI,QAAQ6T,KAAK,sEAAA,GACNgd;AAGT,cAAMgb,KAAWt7D,GAAA,EAAAoB,KAAA,GAAA,OAAGy2B,IAAN,GAAA,CAAA,EAAA,KAAAz2B,IAAiBw2B,EAAAA;AAE/B,iBAAO0oB,GAAM/uC,MAANvR,GAAA,EAAAS,KAAA,CACJ,QAAQ,OAAA,CAAA,EADJ,KAAAA,IAAAitB,GAAA,EACgBwd,EAAAA,GADhB,CAC4B,wBAAwBowB,EAAAA,CAAAA,GACzDhwB,EAAAA;QAAAA,CAAAA,GAlDNp/B,GAAA,EAAAzL,IAsDGmmC,GAAAA,iBAAkB,SAAE0Z,IAAFz/C,IAAA;AAAmD,cAADO,IAAAX,IAAAL,KAAAS,GAAvC+mC,SAAWsD,KAA4B9qC,GAA5B8qC,YAAYvY,KAAgBvyB,GAAhBuyB,QAC7CuZ,KAAK8B,OAAAA,GAAAA,4BAAAA,EAA6BsS,EAAAA,EAAO/3B,MAApCvoB,GAAA,EAAAoB,KAAA,CAA2C,OAAA,CAAA,EAA3C,KAAAA,IAAAssB,GAAA,EAAuDwd,EAAAA,CAAAA,CAAAA,GAC5DlT,KAAcmW,OAAAA,GAAAA,eAAAA,EAAgBmS,IAAOpV,EAAAA,EAAYhlB,KAAAA;AAEvD,iBAAOo6B,GAAM7uC,SAANzR,GAAA,EAAAS,KAAA,CAAgB,QAAQ,OAAA,CAAA,EAAxB,KAAAA,IAAAitB,GAAA,EAAoCwd,EAAAA,GAApC,CAAgD,YAAA,CAAA,GAAehgC,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,GAAK,SAAA01H,IAAAA;AAAc,gBAADx/H;AAC7F,mBAAOusB,GAAA,EAAAvsB,KAAA8qC,GAAG1rC,IAAI,cAAcoY,OAAAA,GAAAA,IAAAA,EAAAA,CAAAA,CAAAA,EAArB,KAAAxX,IAAoC,SAACitB,IAAKqE,IAAAA;AAC/C,kBAAM9xB,KAAQm3B,OAAAA,GAAAA,CAAAA,EAAarF,IAAOsF,EAAAA,GAC5B6oG,KAAuB10F,OAAAA,GAAAA,4BAAAA,EAA6BmU,IAAOpV,IAAYxY,GAAMlyB,IAAI,MAAA,GAASkyB,GAAMlyB,IAAI,IAAA,CAAA,GACpG6vB,KAASoC,OAAAA,GAAAA,CAAAA,EAAcC,IAAO9xB,IAAO,EACzCuvB,qBAAqB0wG,IACrBluG,QAAAA,GAAAA,CAAAA;AAEF,qBAAOtE,GAAI9c,MAAM,CAACkmB,OAAAA,GAAAA,CAAAA,EAAkB/E,EAAAA,GAAQ,QAAA,GAAWxnB,OAAAA,GAAAA,MAAAA,EAAOmlB,EAAAA,CAAAA;YAAAA,GAC7DuwG,EAAAA;UAAAA,CAAAA;QAAAA,CAAAA,GAnET10H,GAAA,EAAAzL,IAsEG0mC,GAAAA,uBAAwB,SAAEmZ,IAAFz/C,IAAA;AAA4C,cAADO,IAApB8pC,KAAoBrqC,GAAhC+mC,QAAYsD;AAC9C,iBAAOoV,GAAM7uC,SAANzR,GAAA,EAAAoB,KAAA,CAAkB,QAAQ,OAAA,CAAA,EAA1B,KAAAA,IAAAssB,GAAA,EAAsCwd,EAAAA,GAAtC,CAAkD,YAAA,CAAA,GAAgBhgC,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,GAAK,SAAAkhC,IAAAA;AACnF,mBAAOn9B,GAAA,EAAAm9B,EAAAA,EAAU,KAAVA,IAAe,SAAA1Z,IAAAA;AAAK,qBAAIA,GAAMtiB,IAAI,UAAUlF,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,CAAA;YAAA,CAAA;UAAA,CAAA;QAAA,CAAA,GAxEhEgB,GAAA,EAAAzL,IA4EGomC,GAAAA,cAAe,SAACyZ,IAADz/C,IAAA;AAAgD,cAC1Ds4B,IADyD14B,KAAAI,GAArC+mC,SAAWvZ,KAA0B5tB,GAA1B4tB,KAAK+L,KAAqB35B,GAArB25B,MAAM1E,KAAej1B,GAAfi1B;AAAAA,WAG5CyD,KADG9K,GAAIlhB,QACEpN,GAAA,EAAc,EACrBoN,OAAAA,MACAjN,MAAMmuB,GAAIyD,IAAI5xB,MACdmoC,SAASha,GAAIyD,IAAIuW,SACjBy4F,YAAYzyG,GAAIyD,IAAIgvG,WAAAA,GACnBzyG,GAAIyD,IAAI2lC,QAAAA,IAEFppC,IAIJioC,UAAUn9B,GAAOm9B,WAAW,CAAA;AAEnC,cAAIigD,KAAWj2D,GAAM/uC,MAAO,CAAE,aAAa6oB,IAAM1E,EAAAA,GAAU5I,OAAAA,GAAAA,CAAAA,EAAcqM,EAAAA,CAAAA;AAMzE,iBAHInM,GAAAA,EAAI05C,QAAQr4C,GAAIwH,gBAAgB7I,GAAAA,EAAI05C,SACtC6vC,KAAWA,GAAShlG,MAAO,CAAE,aAAa6oB,IAAM1E,IAAQ,MAAA,GAAUrH,GAAIwH,IAAAA,IAEjE0gF;QAAAA,CAAAA,GAlGXrqG,GAAA,EAAAzL,IAqGGqmC,GAAAA,aAAc,SAACwZ,IAADz/C,IAAA;AAAgD,cAADO,KAAAP,GAArC+mC,SAAWyC,KAA0BjpC,GAA1BipC,KAAKjQ,KAAqBh5B,GAArBg5B,MAAM1E,KAAet0B,GAAfs0B;AAC7C,iBAAO4qB,GAAM/uC,MAAO,CAAE,YAAY6oB,IAAM1E,EAAAA,GAAU5I,OAAAA,GAAAA,CAAAA,EAAcud,EAAAA,CAAAA;QAAAA,CAAAA,GAtGpEn+B,GAAA,EAAAzL,IAyGGsmC,GAAAA,qBAAsB,SAACuZ,IAADz/C,IAAA;AAAgD,cAADO,KAAAP,GAArC+mC,SAAWyC,KAA0BjpC,GAA1BipC,KAAKjQ,KAAqBh5B,GAArBg5B,MAAM1E,KAAet0B,GAAfs0B;AACrD,iBAAO4qB,GAAM/uC,MAAO,CAAE,mBAAmB6oB,IAAM1E,EAAAA,GAAU5I,OAAAA,GAAAA,CAAAA,EAAcud,EAAAA,CAAAA;QAAAA,CAAAA,GA1G3En+B,GAAA,EAAAzL,IA6GG2mC,GAAAA,6BAA8B,SAACkZ,IAADz/C,IAAA;AAA+C,cAADO,IAAAX,IAAAL,IAAA8L,IAAAvM,IAAA+B,IAAA9B,KAAAiB,GAApC+mC,SAAWxN,KAAyBx6B,GAAzBw6B,MAAMx5B,KAAmBhB,GAAnBgB,OAAOM,KAAYtB,GAAZsB,KAE3D6/H,KAAgB/gI,GAAA,EAAAoB,KAAA,CAAC,OAAA,CAAA,EAAJ,KAAAA,IAAAssB,GAAA,EAAgB0M,EAAAA,CAAAA,GAC7B4mG,KAAWhhI,GAAA,EAAAS,KAAA,CAAC,QAAQ,OAAA,CAAA,EAAZ,KAAAA,IAAAitB,GAAA,EAAwB0M,EAAAA,CAAAA;AAEpC,iBACGkmB,GAAM/3B,MAANvoB,GAAA,EAAAI,KAAA,CAAa,MAAA,CAAA,EAAb,KAAAA,IAAAstB,GAAA,EAAwBqzG,EAAAA,CAAAA,CAAAA,KACrBzgF,GAAM/3B,MAANvoB,GAAA,EAAAkM,KAAA,CAAa,UAAA,CAAA,EAAb,KAAAA,IAAAwhB,GAAA,EAA4BqzG,EAAAA,CAAAA,CAAAA,KAC5BzgF,GAAM/3B,MAANvoB,GAAA,EAAAL,KAAA,CAAa,kBAAA,CAAA,EAAb,KAAAA,IAAA+tB,GAAA,EAAoCqzG,EAAAA,CAAAA,CAAAA,IAMnCzgF,GAAM/uC,MAANvR,GAAA,EAAA0B,KAAA,CAAA,CAAA,EAAA,KAAAA,IAAAgsB,GAAA,EAAgBszG,EAAAA,GAAhB,CAA0B9/H,EAAAA,CAAAA,GAAMgK,OAAAA,GAAAA,MAAAA,EAAOtK,EAAAA,CAAAA,IAHrC0/C;QAAAA,CAAAA,GAxHbp0C,GAAA,EAAAzL,IA8HGwmC,GAAAA,gBAAiB,SAACqZ,IAADz/C,IAAA;AAA2C,cAADO,KAAAP,GAAhC+mC,SAAWxN,KAAqBh5B,GAArBg5B,MAAM1E,KAAet0B,GAAfs0B;AAC3C,iBAAO4qB,GAAM3uC,SAAU,CAAE,aAAayoB,IAAM1E,EAAAA,CAAAA;QAAAA,CAAAA,GA/HhDxpB,GAAA,EAAAzL,IAkIGymC,GAAAA,eAAgB,SAACoZ,IAADz/C,IAAA;AAA2C,cAADO,KAAAP,GAAhC+mC,SAAWxN,KAAqBh5B,GAArBg5B,MAAM1E,KAAet0B,GAAfs0B;AAC1C,iBAAO4qB,GAAM3uC,SAAU,CAAE,YAAYyoB,IAAM1E,EAAAA,CAAAA;QAAAA,CAAAA,GAnI/CxpB,GAAA,EAAAzL,IAsIG8mC,GAAAA,YAAa,SAAC+Y,IAADz/C,IAAA;AAAmD,cAADO,KAAAP,GAAxC+mC,SAAWuC,KAA6B/oC,GAA7B+oC,QAAQ/P,KAAqBh5B,GAArBg5B,MAAM1E,KAAet0B,GAAfs0B;AAC/C,iBAAK0E,MAAQ1E,KACJ4qB,GAAM/uC,MAAO,CAAE,UAAU6oB,IAAM1E,EAAAA,GAAUyU,EAAAA,IAG7C/P,MAAS1E,KAAAA,SACL4qB,GAAM/uC,MAAO,CAAE,UAAU,gBAAA,GAAoB44B,EAAAA;QAAAA,CAAAA,GA5I1D1pC;MAAA,GAAA,SAAAkB,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,cAAA,WAAA;AAAA,iBAAAb;QAAA,CAAA,GAAAoB,GAAA,EAAAP,IAAA,kBAAA,WAAA;AAAA,iBAAAjB;QAAA,CAAA,GAAAwB,GAAA,EAAAP,IAAA,kBAAA,WAAA;AAAA,iBAAA8sB;QAAA,CAAA,GAAAvsB,GAAA,EAAAP,IAAA,kBAAA,WAAA;AAAA,iBAAAY;QAAA,CAAA;AAAA,YAAAhB,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,EAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,EAAA,GAAAM,KAAAN,GAAA,EAAAssB,EAAA,GC7Ba8Z,KAAa,SAACy5F,IAADpgI,IAAA;AAAA,cAAOonC,KAAPpnC,GAAOonC;AAAP,iBAAwB,WAAA;AAChDg5F,YAAAA,GAAG,MAAA,QAAH,SAAA,GACAh5F,GAAYD,YAAZ,MAAAC,IAAW,SAAA;UAAA;QAAA,GAGAF,KAAiB,SAACk5F,IAADpgI,IAAA;AAAA,cAAOonC,KAAPpnC,GAAOonC;AAAP,iBAAwB,WAAA;AAAc,qBAADpnC,KAAA,UAAA,QAAT6/C,KAAS,IAAA,MAAA7/C,EAAA,GAAAqL,KAAA,GAAAA,KAAArL,IAAAqL;AAATw0C,cAAAA,GAASx0C,EAAA,IAAA,UAAAA,EAAA;AACjE+0H,YAAAA,GAAG,MAAA,QAAIvgF,EAAAA,GAEPzY,GAAYkD,+BAAAA;AAGZ,gBAAOhgC,KAAQu1C,GAAf,CAAA,GACMwgF,KAAY1gI,GAAAA,EAAI2K,IAAM,CAAC,OAAA,CAAA,KAAa,CAAA,GACpCg2H,KAAe/gI,GAAA,EAAY8gI,EAAAA;AAEjC,YAAAvhI,GAAA,EAAAwhI,EAAAA,EAAY,KAAZA,IAAqB,SAAAt6H,IAAAA;AACPrG,cAAAA,GAAAA,EAAI0gI,IAAW,CAACr6H,EAAAA,CAAAA,EAErB4tC,QACLxM,GAAY6C,uBAAuB,CAAC,SAASjkC,EAAAA,CAAAA;YAAAA,CAAAA,GAKjDohC,GAAY6C,uBAAuB,CAAC,cAAc,iBAAA,CAAA;UAAA;QAAA,GAIvCgB,KAAiB,SAACm1F,IAADpgI,IAAA;AAAA,cAAQonC,KAARpnC,GAAQonC;AAAR,iBAA0B,SAACoC,IAAAA;AAEvD,mBADApC,GAAY4D,WAAWxB,EAAAA,GAChB42F,GAAI52F,EAAAA;UAAAA;QAAAA,GAGAe,KAAiB,SAAC61F,IAADpgI,IAAA;AAAA,cAAQuiC,KAARviC,GAAQuiC;AAAR,iBAA4B,SAACiH,IAAAA;AACzD,mBAAO42F,GAAI52F,IAAKjH,GAAczQ,OAAAA,CAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA;ACHjByuG,QAAAA,GAAAA,UAjBI,SAACz/H,IAAA;AAA0C,cAV9BsH,IAUX+iF,KAAwCrqF,GAAxCqqF,eAAeP,KAAyB9pF,GAAzB8pF,UAAUj9D,KAAe7sB,GAAf6sB,WAEtCk9D,MAZwBziF,KAYiBq4E,OAAAA,GAAAA,YAAAA,EAAa9yD,IAAWi9D,IAAUO,EAAAA,GAV1Ej+D,OAAAA,GAAAA,CAAAA,EAAQ9kB,IADE,WAAA;AAAA,qBAAAtH,KAAA,UAAA,QAAI++C,KAAJ,IAAA,MAAA/+C,EAAA,GAAAP,KAAA,GAAAA,KAAAO,IAAAP;AAAIs/C,cAAAA,GAAJt/C,EAAA,IAAA,UAAAA,EAAA;AAAA,mBAAahB,GAAA,EAAesgD,EAAAA;UAAAA,CAAAA;AAc7C,iBAAO,EACL2gF,aAAa,EACX//C,cAAcoK,IACd41C,qBAbgC,SAACr4H,IAAAA;AAErC,mBAAOw3E,OAAAA,GAAAA,CAAAA,EAASx3E,IADC,WAAA;AAAA,uBAAAtH,KAAA,UAAA,QAAI++C,KAAJ,IAAA,MAAA/+C,EAAA,GAAAP,KAAA,GAAAA,KAAAO,IAAAP;AAAIs/C,gBAAAA,GAAJt/C,EAAA,IAAA,UAAAA,EAAA;AAAA,qBAAas/C;YAAAA,CAAAA;UAAAA,EAO+B8qC,OAAAA,GAAAA,mBAAAA,EAAoBh9D,IAAWi9D,IAAUC,EAAAA,CAAAA,GAMlGK,QAAQA,OAAAA,GAAAA,MAAAA,EAAOv9D,IAAWi9D,IAAUnK,GAAAA,cAAc0K,EAAAA,EAAAA,GAEpD/iF,IAAI,EACFw4E,gBAAAA,GAAAA,eAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACzBJ/hF,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACH3B,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,kBAAA,WAAA;AAAA,iBAAAJ;QAAA,CAAA;AAAO,YAAMghF,KAAiB,SAACL,IAAAA;AAAD,iBAAsBA,GAAiBnD,eAAemD,GAAiBlhF,QAAQ;QAAA;MAAA,GAAA,SAAAyB,IAAAd,IAAAO,IAAA;AAAA;ACA7G,QAAAA,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA;AAEe,QAAAP,GAAA,UAAA,WAAA;AACb,iBAAO,EAAEoI,IAAAA,GAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACHX,QAAA7H,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,GAAA,GAAA8K,KAAA9K,GAAA,GAAA;AAGe,QAAAP,GAAA,UAAA,WAAA;AACb,iBAAO,EACL6wF,YAAY,EACV6vC,iBAAAA,GAAAA,gBAAAA,GAEFt4H,IAAAA,IACAk2H,cAAc,EACZqC,iBAAiB,EACfjC,WAAAA,GAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,iBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,wBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,qBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,sBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GCRFj/E,KAAQ,SAAAA,IAAAA;AAAK,iBAAIA,MAASzvC,OAAAA,GAAAA,GAAAA,EAAAA;QAAAA,GAEnB4wH,KAAgB5jG,OAAAA,GAAAA,CAAAA,EAC3ByiB,IACA,SAAAA,IAAAA;AACE,cAAMohF,KAAephF,GAClB9/C,IAAI,WAAA,GACDmhI,KAAarhF,GAChB9/C,IAAI,cAAcqQ,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA;AACrB,iBAAA,CAAI6wH,MAAgBA,GAAah6G,QAAAA,IACxBi6G,KAEFvhI,GAAA,EAAAuhI,EAAAA,EAAU,KAAVA,IACG,SAAC76H,IAAG5F,IAAAA;AAAJ,mBAAYvB,GAAA,EAAA+hI,EAAAA,EAAY,KAAZA,IAAsBxgI,EAAAA;UAAAA,CAAAA;QAAAA,CAAAA,GAInC0gI,KAAuB,SAACthF,IAAAA;AAAD,iBAAW,SAAAz/C,IAAA;AAAa,gBAADO,IAAAX,IAATwI,KAASpI,GAAToI;AAEhD,mBAAO7I,GAAA,EAAAgB,KAAAM,GAAA,EAAAjB,KAAAghI,GAAcnhF,EAAAA,CAAAA,EAAd,KAAA7/C,IACA,SAACssD,IAAK7rD,IAAAA;AACT,kBAAM2gI,KAHO,SAAC3gI,IAAAA;AAAD,uBAAS+H,GAAG,2BAAD,OAA4B/H,EAAAA,CAAAA;cAAAA,EAG7BA,EAAAA;AACvB,qBAAoB,cAAA,OAAV2gI,KACD,OAGF90E,GAAI38C,IAAI,MAAMyxH,EAAAA;YAAAA,CAAAA,CAAAA,EAPlB,KAAAzgI,IASG,SAAA0F,IAAAA;AAAC,qBAAIA;YAAAA,CAAAA;UAAAA;QAAAA,GAGJg7H,KAAoBjkG,OAAAA,GAAAA,CAAAA,EAC/ByiB,IACA,SAAAA,IAAAA;AAAK,iBAAIA,GACN9/C,IAAI,gBAAA;QAAA,CAAA,GAGIuhI,KAAqBlkG,OAAAA,GAAAA,CAAAA,EAChCyiB,IACA,SAAAA,IAAAA;AAAK,iBAAIA,GACN9/C,IAAI,iBAAA;QAAA,CAAA;MAAA,GAAA,SAAAmB,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,mBAAA,WAAA;AAAA,iBAAA+V;QAAA,CAAA;AAAA,YAAAnW,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,CAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,CAAA,GAAAM,KAAAN,GAAA,EAAAssB,EAAA,GAAA1tB,KAAAoB,GAAA,CAAA,GAAAxB,KAAAwB,GAAA,EAAApB,EAAA,GAAA2tB,KAAAvsB,GAAA,CAAA,GAAAK,KAAAL,GAAA,EAAAusB,EAAA,GAAA1e,KAAA7N,GAAA,CAAA,GAAAnB,KAAAmB,GAAA,EAAA6N,EAAA,GAAAlP,KAAAqB,GAAA,CAAA,GAAA0F,KAAA1F,GAAA,EAAArB,EAAA,GAAAulC,KAAAlkC,GAAA,GAAA,GAAAuwB,MAAAvwB,GAAA,EAAA,GAAAA,GAAA,EAAA,IAAA+K,KAAA/K,GAAA,EAAAuwB,EAAA,GAAA3C,KAAA5tB,GAAA,EAAA,GCrCImgI,KAAb,SAAA5/H,IAAA;AAAA,UAAA/B,GAAA,EAAAwB,IAAAO,EAAA;AAAA,cAAAd,KAAAY,GAAA,EAAAL,EAAA;AACE,mBAAAA,KAAA;AAAe,gBAADO,IAAAlB,IAAAL,IAAA8L,IAAAwhB,IAAAhsB;AAAA,mBAAA/B,GAAA,EAAA,MAAAyB,EAAA,IACZM,KAAAb,GAAA,KAAA,IAAA,GACKy/C,QAAQ,EACX0hF,gBAAc,UAAArgI,KAAED,GAAKyqB,UAAAA,WAAPxqB,MAAA,UAAAlB,KAAEkB,GAAYsgI,6BAAAA,WAAdxhI,MAAA,UAAAL,KAAEK,GAAsCmhI,qBAAAA,MAAAA,WAAxCxhI,KAAA,SAAEA,GAA8D2jB,OAAAA,EAASqE,MAAAA,GACvF85G,UAAQ,UAAAh2H,KAAExK,GAAKyqB,UAAAA,WAAPjgB,MAAA,UAAAwhB,KAAExhB,GAAY+1H,6BAAAA,WAAdv0G,KAAA,SAAEA,GAAsCq0G,mBAAAA,EAAAA,GAJtCrgI;UAAA;AADhB,iBAAAA,GAAA,EAAAN,IAAA,CAAA,EAAA,KAAA,UAAA,OAeE,WAAA;AAAU,gBAADO,IAAAd,IAAAO,IAAAX,IAAAyL,KAAA,MACLvM,KAAyD+G,KAAKylB,OAAvD+jE,KAAPvwF,GAAOuwF,SAASpnD,KAAhBnpC,GAAgBmpC,YACVq5F,KADNxiI,GAA4BsiI,yBACuBL,qBAAAA,GAC7CI,KAAiBt7H,KAAK45C,MAAM0hF,kBAAkBG,GAAkBp+G,OAAAA,EAASqE,MAAAA,GACzEg6G,KAAkBD,GAAkB3hI,IAAIwhI,EAAAA,GACxChqF,KAAUoqF,GAAgB5hI,IAAI,IAAA,EAAM0vF,EAAAA,GASpCp2C,KAAQ,EACZuoF,QAAQ,WACRC,YAAY,GACZ9gE,SAAS,eACT0D,iBAAiB,sBACjBq9D,eAAe,KACfC,YAAY,KACZC,QAAQ,6BACRC,cAAc,eACdC,WAAW,QACXC,cAAc,OAAA,GAEVC,KAAc,EAClBR,QAAQ,WACRC,YAAY,GACZ9gE,SAAS,eACT0D,iBAAiB,mBACjBy9D,WAAW,QACXF,QAAQ,6BACRF,eAAe,KACfC,YAAY,KACZE,cAAc,eACdI,WAAW,QACXC,aAAa,QACbC,YAAY,QACZC,QAAQ,QACRL,cAAc,OAAA,GAEVM,KAAc,SAAChiI,IAAAA;AACnB,qBAAIA,OAAQ8gI,KACHa,KAEF/oF;YAAAA,GAEH9mB,KAAS8V,GAAAA,GAETq6F,KAAmBnwG,QAAAA,MAAA,UAAArxB,KAAAqxB,GAAQowG,oBAAAA,WAARzhI,MAAAA,GAAyB0hI,YAC9Cv8H,GAAA,EAAA,cAACkoB,GAAA,GAAD,EACA00C,UAAU0+D,GAAgB5hI,IAAI,QAAA,GAC9B++D,WAAU,mBACV+jE,SAAS,SAAS3hI,IAAAA;AAAI,qBAAO+E,KAAK68H,+BAA+B5hI,EAAAA;YAAAA,GACjEm4C,OAAO2sB,OAAAA,GAAAA,CAAAA,EAASjmE,GAAAA,EAAIwyB,IAAQ,uBAAA,CAAA,EAAA,GAE3BglB,EAAAA,IAGHlxC,GAAA,EAAA,cAAA,YAAA,EAAUs2E,UAAAA,MAAgB7d,WAAU,QAAO3+D,OAAOo3C,GAAAA,CAAAA,GAEhDkqF,KAAAA,WAAWx7H,KAAK45C,MAAM4hF,WAAX,UAAArhI,KAAoC6F,KAAKylB,UAAAA,WAAzCtrB,MAAA,UAAAO,KAAoCP,GAAYohI,6BAAAA,WAAhD7gI,KAAA,SAAoCA,GAAsC2gI,mBAAAA,IAAuBr7H,KAAK45C,MAAM4hF;AAC7H,mBACIp7H,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,OAAA,EAAKgzC,OAAO,EAACmQ,OAAO,QAAQuX,SAAS,QAAQgiE,gBAAgB,cAAcC,YAAY,UAAUC,cAAc,OAAA,EAAA,GAC7G58H,GAAA,EAAA,cAAA,MAAA,EACEgzC,OAAO,EAAEuoF,QAAQ,UAAA,GACjBsB,SAAS,WAAA;AAAA,qBAAMz3H,GAAKwtF,SAAS,EAACwoC,UAAAA,CAAWA,GAAAA,CAAAA;YAAAA,EAAAA,GAF3C,UAAA,GAIAp7H,GAAA,EAAA,cAAA,UAAA,EACE68H,SAAS,WAAA;AAAA,qBAAMz3H,GAAKwtF,SAAS,EAACwoC,UAAAA,CAAWA,GAAAA,CAAAA;YAAAA,GACzCpoF,OAAO,EAAE2oF,QAAQ,QAAQmB,YAAY,OAAA,GACrClqD,OAAOwoD,KAAW,uBAAsB,mBAAA,GAExCp7H,GAAA,EAAA,cAAA,OAAA,EAAKy4D,WAAU,SAAQtV,OAAM,MAAKq3D,QAAO,KAAA,GACvCx6G,GAAA,EAAA,cAAA,OAAA,EAAK2pD,MAAMyxE,KAAW,sBAAsB,gBAAgB2B,WAAW3B,KAAW,sBAAsB,eAAA,CAAA,CAAA,CAAA,CAAA,GAK5GA,MAAYp7H,GAAA,EAAA,cAAA,OAAA,EAAKy4D,WAAU,eAAA,GACzBz4D,GAAA,EAAA,cAAA,OAAA,EAAKgzC,OAAO,EAACgqF,aAAa,QAAQnjE,cAAc,QAAQ1W,OAAO,QAAQuX,SAAS,OAAA,EAAA,GAE5EvhE,GAAA,EAAAQ,KAAA0hI,GAAkBn6H,SAAAA,CAAAA,EAAlB,KAAAvH,IAAiC,SAAAkB,IAAA;AAAiB,kBAADd,KAAAT,GAAA,EAAAuB,IAAA,CAAA,GAAdT,KAAcL,GAAA,CAAA,GAATksD,KAASlsD,GAAA,CAAA;AAC/C,qBAAQiG,GAAA,EAAA,cAAA,OAAA,EAAKgzC,OAAOopF,GAAYhiI,EAAAA,GAAMq+D,WAAU,OAAMr+D,KAAKA,IAAKyiI,SAAS,WAAA;AAAA,uBA/EnE,SAACziI,IAAAA;AACC8gI,kBAAAA,OAAmB9gI,MAErCgL,GAAKwtF,SAAS,EACZsoC,gBAAgB9gI,GAAAA,CAAAA;gBAAAA,EA2EmFA,EAAAA;cAAAA,EAAAA,GACzF4F,GAAA,EAAA,cAAA,MAAA,EAAIgzC,OAAO54C,OAAQ8gI,KAAiB,EAAC+B,OAAO,QAAA,IAAY,CAAA,EAAA,GAAKh3E,GAAIvsD,IAAI,OAAA,CAAA,CAAA;YAAA,CAAA,CAAA,GAK7EsG,GAAA,EAAA,cAAA,OAAA,EAAKy4D,WAAU,oBAAA,GACbz4D,GAAA,EAAA,cAACw+B,GAAA,iBAAD,EAAiBoF,MAAMsN,GAAAA,GACrBlxC,GAAA,EAAA,cAAA,UAAA,IAAA,CAAA,CAAA,GAGJA,GAAA,EAAA,cAAA,OAAA,MACGq8H,EAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAhHjB/hI;QAAA,EAAqC04F,GAAAA,EAAM72D,SAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA;ACN5B,QAAApiC,GAAA,UAAA,SAAAc,IAAA;AAAsB,cAAX4+H,KAAU5+H,GAAV4+H,SAElByD,KAAS,EACb,OAAS,GACT,MAAQ,GACR,KAAO,GACP,MAAQ,GACR,OAAS,EAAA,GAGLC,KAAW,SAAC1pH,IAAAA;AAAD,mBAAWypH,GAAOzpH,EAAAA,KAAAA;UAAW,GAExC2pH,KAAa3D,GAAb2D,UACFC,KAAcF,GAASC,EAAAA;AAE3B,mBAAS53C,GAAI/xE,IAAAA;AAAgB,qBAAA1Z,IAAAO,KAAA,UAAA,QAANs/C,KAAM,IAAA,MAAAt/C,KAAA,IAAAA,KAAA,IAAA,CAAA,GAAA8K,KAAA,GAAAA,KAAA9K,IAAA8K;AAANw0C,cAAAA,GAAMx0C,KAAA,CAAA,IAAA,UAAAA,EAAA;AACxB+3H,YAAAA,GAAS1pH,EAAAA,KAAU4pH,OAEpBtjI,KAAA4uB,SAAQlV,EAAAA,EAAR,MAAA1Z,IAAkB6/C,EAAAA;UAAAA;AAQtB,iBALA4rC,GAAIhpD,OAAOljC,GAAA,EAAAksF,EAAAA,EAAG,KAAHA,IAAS,MAAM,MAAA,GAC1BA,GAAIn/E,QAAQ/M,GAAA,EAAAksF,EAAAA,EAAG,KAAHA,IAAS,MAAM,OAAA,GAC3BA,GAAIn/B,OAAO/sD,GAAA,EAAAksF,EAAAA,EAAG,KAAHA,IAAS,MAAM,MAAA,GAC1BA,GAAI83C,QAAQhkI,GAAA,EAAAksF,EAAAA,EAAG,KAAHA,IAAS,MAAM,OAAA,GAEpB,EAAE+0C,aAAa,EAAE/0C,KAAAA,GAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC1B1B,QAAAlrF,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,UAAA,WAAA;AAAA,iBAAAJ;QAAA,CAAA;AAAO,YAAMugF,KAAS,SAACigD,IAAK99F,IAAAA;AAAN,iBAAiB,WAAA;AACrC89F,YAAAA,GAAG,MAAA,QAAH,SAAA;AACA,gBAAMrgI,KAAQuiC,GAAO2F,WAAAA,EAAau7F;AAAAA,uBAE/BzjI,OACDuiC,GAAOl6B,GAAG0/B,MAAM07F,kBAAmC,YAAA,OAAVzjI,KAAgC,WAAVA,KAAAA,CAAAA,CAAsBA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,qBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,sBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA;ACqBlF,iBAAS0jI,GAAkBnhG,IAAQjiC,IAAK20D,IAAUC,IAAAA;AAAW,cAAD5pD,IAEhD4oD,KAEb3xB,GAFF6xB,YAAeF,WADjBpnC,KAGIyV,GADFC,eAAiBC,KAFnB3V,GAEmB2V,UAGbkhG,MAAiB5xG,GALvBjF,GAE6BiF,QAAAA,IAGK,CAAC,cAAc,iBAAA,IAAqB,CAAC,qBAAA,GAEjE1C,KAASoT,GAAAA,EAAW9a,MAAX7mB,GAAA,EAAAwK,KAAA,CAAA,CAAA,EAAA,KAAAA,IAAqBq4H,IAArB,CAAqCrjI,EAAAA,CAAAA,CAAAA;AAEpD,iBAAI+uB,KAIG6kC,GAAU10D,GAAA,EAAA,CAAA,GACdc,IAAM,EACLN,OAAO,EACLi1D,UAAAA,IACAC,UAAAA,GAAAA,GAEF7lC,QAAQA,GAAO/J,KAAAA,EAAAA,CAAAA,CAAAA,IATV;QAAA;AAcJ,iBAASs+G,GAAmBrhG,IAAQjiC,IAAKN,IAAAA;AAAQ,cAADH,IAEpCq0D,KAEb3xB,GAFF6xB,YAAeF,WADjBn1D,KAGIwjC,GADFC,eAAiBC,KAFnB1jC,GAEmB0jC,UAGbkhG,MAAiB5xG,GALvBhzB,GAE6BgzB,QAAAA,IAGK,CAAC,cAAc,iBAAA,IAAqB,CAAC,qBAAA,GAEjE1C,KAASoT,GAAAA,EAAW9a,MAAX7mB,GAAA,EAAAjB,KAAA,CAAA,CAAA,EAAA,KAAAA,IAAqB8jI,IAArB,CAAqCrjI,EAAAA,CAAAA,CAAAA;AAEpD,iBAAI+uB,KAIG6kC,GAAU10D,GAAA,EAAA,CAAA,GACdc,IAAM,EACLN,OAAAA,IACAqvB,QAAQA,GAAO/J,KAAAA,EAAAA,CAAAA,CAAAA,IANV;QAAA;AAzDI,QAAArlB,GAAA,UAAA,WAAA;AACb,iBAAO,EACL4jI,WADK,SACKthG,IAAAA;AACRz8B,iBAAK26H,cAAc36H,KAAK26H,eAAe,CAAA,GACvC36H,KAAK26H,YAAYqD,YAAYvhG,GAAO6xB,YAAYgD,eAChDtxD,KAAK26H,YAAYmD,qBAAqB7kI,GAAA,EAAA6kI,EAAAA,EAAkB,KAAlBA,IAAwB,MAAMrhG,EAAAA,GACpEz8B,KAAK26H,YAAYiD,oBAAoB3kI,GAAA,EAAA2kI,EAAAA,EAAiB,KAAjBA,IAAuB,MAAMnhG,EAAAA;UAAAA,GAEpEg8F,cAAc,EACZhvE,MAAM,EACJivE,UAAAA,GAAAA,SACAE,SAAAA,IACAC,WAAAA,GAAAA,GAEF93F,MAAM,EACJi5F,aAAaiE,GAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA;ACRrB,QAAA9jI,GAAA,WAAAJ,KAAA,CAAA,GAAAyL,GAAA,EAAAzL,IACG4zD,GAAAA,iBAAkB,SAAC/T,IAADz/C,IAAA;AAAyB,cAAf+mC,KAAc/mC,GAAd+mC;AAC3B,iBAAO0Y,GAAMlwC,IAAK,mBAAmBw3B,EAAAA;QAAAA,CAAAA,GAFzC17B,GAAA,EAAAzL,IAKG6zD,GAAAA,WAAY,SAAChU,IAADz/C,IAAA;AAAyB,cAADO,IAAdwmC,KAAc/mC,GAAd+mC,SACjBg9F,KAAa15H,OAAAA,GAAAA,MAAAA,EAAO08B,EAAAA,GACpBp8B,KAAM80C,GAAM9/C,IAAI,YAAA,KAAiBqQ,OAAAA,GAAAA,GAAAA,EAAAA;AAwBrC,iBArBA7Q,GAAA,EAAAoB,KAAAwjI,GAAW58H,SAAAA,CAAAA,EAAX,KAAA5G,IAA+B,SAAAP,IAAA;AAAwB,gBAADO,KAAAssB,GAAA,EAAA7sB,IAAA,CAAA,GAApBK,KAAoBE,GAAA,CAAA,GAAfi4D,KAAej4D,GAAA,CAAA;AACpD,gBAAA,CAAK0sB,OAAAA,GAAAA,CAAAA,EAAOurC,GAAS9wC,KAAAA;AACnB,qBAAO+3B,GAAMlwC,IAAI,cAAc5E,EAAAA;AAEjC,gBAAI5E,KAAOyyD,GAAS9wC,MAAM,CAAC,UAAU,MAAA,CAAA;AAErC,gBAAc,aAAT3hB,MAA8B,WAATA;AACxB4E,cAAAA,KAAMA,GAAI4E,IAAIlP,IAAKm4D,EAAAA;qBACA,YAATzyD,IAAmB;AAC7B,kBAAIivD,KAAWwD,GAAS9wC,MAAM,CAAC,SAAS,UAAA,CAAA,GACpCutC,KAAWuD,GAAS9wC,MAAM,CAAC,SAAS,UAAA,CAAA;AAOxC/c,cAAAA,MALAA,KAAMA,GAAI+F,MAAM,CAACrQ,IAAK,OAAA,GAAU,EAC9B20D,UAAUA,IACVgvE,QAAQ,WAAWzvG,OAAAA,GAAAA,CAAAA,EAAKygC,KAAW,MAAMC,EAAAA,EAAAA,CAAAA,GAGjCvkD,MAAM,CAACrQ,IAAK,QAAA,GAAWm4D,GAAS74D,IAAI,QAAA,CAAA;YAAA;UAAA,CAAA,GAI3C8/C,GAAMlwC,IAAK,cAAc5E,EAAAA;QAAAA,CAAAA,GA/BpCU,GAAA,EAAAzL,IAkCGg0D,GAAAA,kBAAmB,SAACnU,IAADz/C,IAAA;AAAyB,cAEvCikI,IAFwBl9F,KAAc/mC,GAAd+mC,SACtBuoB,KAAgBvoB,GAAhBuoB,MAAMkF,KAAUztB,GAAVytB;AAGZlF,UAAAA,GAAKkF,QAAQ1nC,GAAA,EAAc,CAAA,GAAI0nC,EAAAA,GAC/ByvE,KAAa55H,OAAAA,GAAAA,MAAAA,EAAOilD,EAAAA;AAEpB,cAAI3kD,KAAM80C,GAAM9/C,IAAI,YAAA,KAAiBqQ,OAAAA,GAAAA,GAAAA,EAAAA;AAGrC,iBAFArF,KAAMA,GAAI4E,IAAI00H,GAAWtkI,IAAI,MAAA,GAASskI,EAAAA,GAE/BxkF,GAAMlwC,IAAK,cAAc5E,EAAAA;QAAAA,CAAAA,GA5CpCU,GAAA,EAAAzL,IA+CG8zD,GAAAA,QAAS,SAACjU,IAADz/C,IAAA;AAAyB,cAAf+mC,KAAc/mC,GAAd+mC,SACdzO,KAASmnB,GAAM9/C,IAAI,YAAA,EAAcwQ,cAAc,SAACmnD,IAAAA;AAChD,YAAAn4D,GAAA,EAAA4nC,EAAAA,EAAO,KAAPA,IAAgB,SAACuoB,IAAAA;AACfgI,cAAAA,GAAW4sE,OAAO50E,EAAAA;YAAAA,CAAAA;UAAAA,CAAAA;AAIxB,iBAAO7P,GAAMlwC,IAAI,cAAc+oB,EAAAA;QAAAA,CAAAA,GAtDnCjtB,GAAA,EAAAzL,IAyDGk0D,GAAAA,gBAAiB,SAACrU,IAADz/C,IAAA;AAAyB,cAAf+mC,KAAc/mC,GAAd+mC;AAC1B,iBAAO0Y,GAAMlwC,IAAI,WAAWw3B,EAAAA;QAAAA,CAAAA,GA1DhC17B,GAAA,EAAAzL,IA6DGm0D,GAAAA,uBAAwB,SAACtU,IAADz/C,IAAA;AAAyB,cAAf+mC,KAAc/mC,GAAd+mC;AACjC,iBAAO0Y,GAAMlwC,IAAI,cAAclF,OAAAA,GAAAA,MAAAA,EAAO08B,GAAQuwB,UAAAA,CAAAA;QAAAA,CAAAA,GA9DlD13D;MAAA,GAAA,SAAAkB,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,oBAAA,WAAA;AAAA,iBAAAmuB;QAAA,CAAA,GAAA5tB,GAAA,EAAAP,IAAA,0BAAA,WAAA;AAAA,iBAAA+V;QAAA,CAAA,GAAAxV,GAAA,EAAAP,IAAA,yBAAA,WAAA;AAAA,iBAAAstB;QAAA,CAAA,GAAA/sB,GAAA,EAAAP,IAAA,8BAAA,WAAA;AAAA,iBAAA4L;QAAA,CAAA,GAAArL,GAAA,EAAAP,IAAA,cAAA,WAAA;AAAA,iBAAAqtB;QAAA,CAAA,GAAA9sB,GAAA,EAAAP,IAAA,gBAAA,WAAA;AAAA,iBAAAgG;QAAA,CAAA,GAAAzF,GAAA,EAAAP,IAAA,cAAA,WAAA;AAAA,iBAAAytB;QAAA,CAAA;AAAA,YAAA7tB,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,EAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,EAAA,GAAAM,KAAAN,GAAA,EAAAssB,EAAA,GAAA1tB,KAAAoB,GAAA,EAAA,GAAAxB,KAAAwB,GAAA,EAAApB,EAAA,GAAA2tB,KAAAvsB,GAAA,EAAA,GAAAK,KAAAL,GAAA,EAAAusB,EAAA,GAAA1e,KAAA7N,GAAA,CAAA,GAAAnB,KAAAmB,GAAA,EAAA6N,EAAA,GAAAlP,KAAAqB,GAAA,EAAA,GAAA0F,KAAA1F,GAAA,EAAArB,EAAA,GAAAulC,KAAAlkC,GAAA,EAAA,GAAAuwB,KAAAvwB,GAAA,CAAA,GCTMk/C,KAAQ,SAAAA,IAAAA;AAAK,iBAAIA;QAAAA,GAEV0kF,KAAmBnnG,OAAAA,GAAAA,CAAAA,EAC5ByiB,IACA,SAAA6P,IAAAA;AAAI,iBAAIA,GAAK3vD,IAAK,iBAAA;QAAA,CAAA,GAGTykI,KAAyBpnG,OAAAA,GAAAA,CAAAA,EAClCyiB,IACA,WAAA;AAAA,iBAAM,SAAA3+C,IAAA;AAA0B,gBAADd,IACzB64D,KADyB/3D,GAArByhC,cACwBk2B,oBAAAA,KAAyBzoD,OAAAA,GAAAA,GAAAA,EAAI,CAAA,CAAA,GACzDqI,KAAON,OAAAA,GAAAA,IAAAA,EAAAA;AAUX,mBAPAjZ,GAAA,EAAAkB,KAAA64D,GAAY1xD,SAAAA,CAAAA,EAAZ,KAAAnH,IAAgC,SAAAc,IAAA;AAAmB,kBAADd,KAAAT,GAAA,EAAAuB,IAAA,CAAA,GAAfT,KAAeL,GAAA,CAAA,GAAVsN,KAAUtN,GAAA,CAAA,GAC5C2K,KAAMqF,OAAAA,GAAAA,GAAAA,EAAAA;AAEVrF,cAAAA,KAAMA,GAAI4E,IAAIlP,IAAKiN,EAAAA,GACnB+K,KAAOA,GAAK5C,KAAK9K,EAAAA;YAAAA,CAAAA,GAGZ0N;UAAAA;QAAAA,CAAAA,GAKAgsH,KAAwB,SAAE5kF,IAAOskF,IAAAA;AAAT,iBAAyB,SAAAjjI,IAAA;AAA0B,gBAADP,IAArBgiC,KAAqBzhC,GAArByhC;AAChE3T,oBAAQ6T,KAAK,6FAAA;AACb,gBAAIg2B,KAAsBl2B,GAAck2B,oBAAAA,GACpCngC,KAASvgB,OAAAA,GAAAA,IAAAA,EAAAA;AA0Bb,mBAxBAjZ,GAAA,EAAAyB,KAAAwjI,GAAW9hH,SAAAA,CAAAA,EAAX,KAAA1hB,IAA+B,SAACmiB,IAAAA;AAAW,kBAAD1iB,IACpC2K,KAAMqF,OAAAA,GAAAA,GAAAA,EAAAA;AACV,cAAAlR,GAAA,EAAAkB,KAAA0iB,GAAMvb,SAAAA,CAAAA,EAAN,KAAAnH,IAA0B,SAAAc,IAAA;AAAqB,oBAEzCwjI,IAEsD1kI,IAJditB,KAAAttB,GAAA,EAAAuB,IAAA,CAAA,GAAlBzB,KAAkBwtB,GAAA,CAAA,GAAZ2oC,KAAY3oC,GAAA,CAAA,GACxC4sB,KAAagf,GAAoB94D,IAAIN,EAAAA;AAGT,6BAA3Bo6C,GAAW95C,IAAI,MAAA,KAAwB61D,GAAOnxD,SACjDigI,KAAgB7qF,GAAW95C,IAAI,QAAA,GAE/Bb,GAAA,EAAAc,KAAA0kI,GAAcphH,OAAAA,CAAAA,EAAd,KAAAtjB,IAAgC,SAACS,IAAAA;AACzBm1D,kBAAAA,GAAOjsC,SAASlpB,EAAAA,MACpBikI,KAAgBA,GAAcJ,OAAO7jI,EAAAA;gBAAAA,CAAAA,GAIzCo5C,KAAaA,GAAWlqC,IAAI,iBAAiB+0H,EAAAA;AAG/C35H,gBAAAA,KAAMA,GAAI4E,IAAIlQ,IAAMo6C,EAAAA;cAAAA,CAAAA,GAGtBnhB,KAASA,GAAO7iB,KAAK9K,EAAAA;YAAAA,CAAAA,GAGhB2tB;UAAAA;QAAAA,GAGIisG,KAA6B,SAAC9kF,IAAAA;AAAD,cAAQskF,KAAR,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAqBhsH,OAAAA,GAAAA,IAAAA,EAAAA;AAArB,iBAAgC,SAAAjX,IAAA;AAAwB,gBAC1F0jI,KADyF1jI,GAApBw1D,cACtC8tE,uBAAAA,KAA4BrsH,OAAAA,GAAAA,IAAAA,EAAAA;AACjE,mBAAOlX,GAAA,EAAA2jI,EAAAA,EAAc,KAAdA,IAAsB,SAACpF,IAAAA;AAC5B,qBAAOrgI,GAAA,EAAAglI,EAAAA,EAAU,KAAVA,IAAgB,SAAAU,IAAAA;AAAG,uBAAIA,GAAI9kI,IAAIy/H,GAAIl8G,OAAAA,EAASqE,MAAAA,CAAAA;cAAAA,CAAAA;YAAAA,CAAAA;UAAAA;QAAAA,GAI1C+vC,KAAat6B,OAAAA,GAAAA,CAAAA,EACtByiB,IACA,SAAA6P,IAAAA;AAAI,iBAAIA,GAAK3vD,IAAI,YAAA,KAAiBqQ,OAAAA,GAAAA,GAAAA,EAAAA;QAAAA,CAAAA,GAIzB00H,KAAe,SAAEjlF,IAAOskF,IAAAA;AAAT,iBAAyB,SAAAjjI,IAAA;AAA0B,gBAADP,IACxE+2D,KADwEx2D,GAArBw1D,cACxBgB,WAAAA;AAE/B,mBAAIv/C,GAAAA,KAAKG,OAAO6rH,EAAAA,IAAAA,CAAAA,CAIPljI,GAAA,EAAAN,KAAAwjI,GAAW1+G,KAAAA,CAAAA,EAAX,KAAA9kB,IAA0B,SAAEi4D,IAAAA;AAAe,kBAADx4D,IAAAO;AAG/C,qBAAA,OAAOK,GAAA,EAAAZ,KAAAZ,GAAA,EAAAmB,KAAA0F,GAAA,EAAYuyD,EAAAA,CAAAA,EAAZ,KAAAj4D,IAA0B,SAACF,IAAAA;AAChC,uBAAA,CAAA,CAA0Bi3D,GAAW33D,IAAIU,EAAAA;cAAAA,CAAAA,CAAAA,EADpC,KAAAL,IAAA,KAEI;YAAA,CAAA,EACVgE,SATI;UAAA;QAAA,GAYEikC,KAAajL,OAAAA,GAAAA,CAAAA,EACtByiB,IACA,SAAA6P,IAAAA;AAAI,iBAAIA,GAAK3vD,IAAK,SAAA;QAAA,CAAA;MAAA,GAAA,SAAAmB,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,WAAA,WAAA;AAAA,iBAAAqL;QAAA,CAAA;AAAA,YAAAzL,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GC3FTktC,KAAU,SAAE63F,IAAF3kI,IAAA;AAAA,cAAes2D,KAAft2D,GAAes2D,eAAe/zB,KAA9BviC,GAA8BuiC;AAA9B,iBAAkD,SAAAviC,IAAA;AAA0C,gBAAvCu5B,KAAsCv5B,GAAtCu5B,MAAM1E,KAAgC70B,GAAhC60B,QAAQuW,KAAwBprC,GAAxBorC,WAAW8B,KAAaltC,GAAbktC,QAC/F62F,KAAa,EACfzsE,YAAYhB,GAAcgB,WAAAA,KAAgBhB,GAAcgB,WAAAA,EAAajyC,KAAAA,GACrEwzC,aAAat2B,GAAck2B,oBAAAA,KAAyBl2B,GAAck2B,oBAAAA,EAAsBpzC,KAAAA,GACxFu/G,cAAeriG,GAAci2B,SAAAA,KAAcj2B,GAAci2B,SAAAA,EAAWnzC,KAAAA,EAAAA;AAGtE,mBAAOs/G,GAAUplI,GAAA,EAAA,EAAEg6B,MAAAA,IAAM1E,QAAAA,IAAQuW,WAAAA,IAAW24F,YAAAA,GAAAA,GAAe72F,EAAAA,CAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACR7D,QAAA3sC,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,CAAA;AAEe,QAAAP,GAAA,UAAA,WAAA;AACb,iBAAO,EACLoI,IAAI,EAAE+sB,kBAAAA,GAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,WAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA;ACAK,iBAAS0vG,GAAmBC,IAAAA;AACzC,cAAM18H,KAAO08H,GAAP18H;AAmGN,iBAAO,EACLk2H,cAAc,EACZ13F,MAAM,EAAE63F,SAnGI,EACdsG,UAAU,SAACzvG,IAAAA;AAAD,mBAAQ,SAAA/0B,IAAA;AAA6D,kBAA1D8mC,KAAyD9mC,GAAzD8mC,YAAY9E,KAA6ChiC,GAA7CgiC,eAAe6E,KAA8B7mC,GAA9B6mC,aAAaa,KAAiB1nC,GAAjB0nC,YACrDH,KAAU1/B,GAAV0/B,OACA3V,KAAS8V,GAAAA;AAef,uBAASriC,GAAK4nB,IAAAA;AACZ,oBAAGA,cAAejhB,SAASihB,GAAIkc,UAAU;AAKvC,yBAJAtC,GAAY49F,oBAAoB,QAAA,GAChC39F,GAAW+M,aAAa70C,GAAA,EAAe,IAAIgN,OAAOihB,GAAIga,WAAWha,GAAImc,cAAc,MAAMrU,EAAAA,GAAM,EAACwE,QAAQ,QAAA,CAAA,CAAA,GAAA,MAAA,CAEnGtM,GAAIkc,UAAUlc,cAAejhB,SAUtC,WAAA;AACE,wBAAA;AACE,0BAAI04H;AAUJ,0BARG,SAAS94G,GAAAA,IACV84G,KAAU,IAAInmI,GAAA,EAAIw2B,EAAAA,KAGlB2vG,KAAU59D,SAASvI,cAAc,GAAA,GACzBlP,OAAOt6B,IAGO,aAArB2vG,GAAQ71E,YAAmD,aAA1BjjC,GAAAA,EAAIgI,SAASi7B,UAAuB;AACtE,4BAAM9iD,KAAQ/M,GAAA,EACZ,IAAIgN,MAAJ,yEAAA,OAAmF04H,GAAQ71E,UAA3F,gFAAA,CAAA,GACA,EAACt1B,QAAQ,QAAA,CAAA;AAGX,+BAAA,KADAuN,GAAW+M,aAAa9nC,EAAAA;sBAAAA;AAG1B,0BAAG24H,GAAQlqH,WAAWoR,GAAAA,EAAIgI,SAASpZ,QAAQ;AAAC,4BAAD1P,IACnCiB,KAAQ/M,GAAA,EACZ,IAAIgN,MAAJ1L,GAAA,EAAAwK,KAAA,uDAAA,OAAiE45H,GAAQlqH,QAAzE,6BAAA,CAAA,EAAA,KAAA1P,IAA6G8gB,GAAAA,EAAIgI,SAASpZ,QAA1H,2EAAA,CAAA,GACA,EAAC+e,QAAQ,QAAA,CAAA;AAEXuN,wBAAAA,GAAW+M,aAAa9nC,EAAAA;sBAAAA;oBAAAA,SAEnBxL,IAAP;AACA;oBAAA;kBAAA,EAtCyCokI;AAG3C99F,gBAAAA,GAAY49F,oBAAoB,SAAA,GAChC59F,GAAYT,WAAWnZ,GAAIqc,IAAAA,GACxBtH,GAAcjN,IAAAA,MAAUA,MACzB8R,GAAYH,UAAU3R,EAAAA;cAAAA;AAzB1BA,cAAAA,KAAMA,MAAOiN,GAAcjN,IAAAA,GAC3B8R,GAAY49F,oBAAoB,SAAA,GAChC39F,GAAWj2B,MAAM,EAAC0oB,QAAQ,QAAA,CAAA,GAC1BgO,GAAM,EACJxS,KAAAA,IACA6vG,UAAAA,MACA/8F,oBAAoBjW,GAAOiW,sBAAuB,SAAA/8B,IAAAA;AAAC,uBAAIA;cAAAA,GACvDg9B,qBAAqBlW,GAAOkW,uBAAwB,SAAAh9B,IAAAA;AAAC,uBAAIA;cAAAA,GACzD+5H,aAAa,eACb3vE,SAAS,EACP,QAAU,uBAAA,EAAA,CAAA,EAEXjtB,KAAK5iC,IAAKA,EAAAA;YAAAA;UAAAA,GAmDfo/H,qBAAqB,SAACt7F,IAAAA;AACpB,gBACiC1pC,IAD7BqlI,KAAQ,CAAC,MAAM,WAAW,UAAU,WAAW,cAAA;AAAA,mBAChDtmI,GAAA,EAAAsmI,EAAAA,EAAK,KAALA,IAAc37F,EAAAA,KACf9a,QAAQtiB,MAARzL,GAAA,EAAAb,KAAA,UAAA,OAAwB0pC,IAAxB,iBAAA,CAAA,EAAA,KAAA1pC,IAAgDY,GAAA,EAAeykI,EAAAA,CAAAA,CAAAA;AAGjE,mBAAO,EACLt/H,MAAM,8BACNghC,SAAS2C,GAAAA;UAAAA,EAAAA,GAwBM60F,UAnBN,EACb,4BAA8B,SAAC9+E,IAAO3xB,IAAAA;AACpC,mBAAkC,YAAA,OAAnBA,GAAOiZ,UAClB0Y,GAAMlwC,IAAI,iBAAiBue,GAAOiZ,OAAAA,IAClC0Y;UAAAA,EAAAA,GAeuBi/E,WAXf,EACd4G,eAAetoG,OAAAA,GAAAA,CAAAA,EACb,SAAAyiB,IAAAA;AACE,mBAAOA,MAASzvC,OAAAA,GAAAA,GAAAA,EAAAA;UAAAA,GAElB,SAAA42B,IAAAA;AAAI,mBAAIA,GAAKjnC,IAAI,eAAA,KAAoB;UAAA,CAAA,EAAA,EAAA,EAAA,EAAA;QAAA;MAAA,GAAA,SAAAmB,IAAAd,IAAAO,IAAA;AAAA;ACpG3C,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,kBAAA,WAAA;AAAA,iBAAAT;QAAA,CAAA,GAAAgB,GAAA,EAAAP,IAAA,kBAAA,WAAA;AAAA,iBAAAqL;QAAA,CAAA;AAAA,YAAAzL,KAAAW,GAAA,GAAA,GAEaglI,KAAiB,SAAC/7F,IAAAA;AAAD,iBAAS,SAAClH,IAAAA;AAGtC,oBAAOwF,GAFiBxF,GAAjBl6B,GAAM0/B,OAEA0B,EAAAA;UAAAA;QAAAA,GAGFg8F,KAAiB,SAACh8F,IAAK2I,IAAAA;AAAN,iBAAY,SAAA5xC,IAAA;AAAsB,gBAAnB6mC,KAAkB7mC,GAAlB6mC;AAC3C,gBAAIoC;AACF,qBAAOpC,GAAYm+F,eAAe/7F,EAAAA,EAAKhB,KAAK5iC,IAAMA,EAAAA;AAGpD,qBAASA,GAAK4nB,IAAAA;AACRA,cAAAA,cAAejhB,SAASihB,GAAIkc,UAAU,OACxCtC,GAAY49F,oBAAoB,cAAA,GAChC59F,GAAY49F,oBAAoB,cAAA,GAChC59F,GAAYH,UAAU,EAAA,GACtBrY,QAAQtiB,MAAMkhB,GAAImc,aAAa,MAAMH,GAAIlU,GAAAA,GACzC6c,GAAG,IAAA,KAEHA,GAAGk+C,OAAAA,GAAAA,eAAAA,EAAgB7iE,GAAIqc,IAAAA,CAAAA;YAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,OAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCpBhBlqC,KAAM,SAAC8/C,IAAOlmB,IAAAA;AACzB,iBAAOkmB,GAAM/3B,MAAMnoB,GAAA,EAAcg6B,EAAAA,IAAQA,KAAO,CAACA,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,GAAAA;ACKnD,QAAAv5B,GAAA,WAAAJ,KAAA,CAAA,GAAAyL,GAAA,EAAAzL,IAEGkgF,GAAAA,gBAAiB,SAACrgC,IAAO3xB,IAAAA;AACxB,iBAAO2xB,GAAMluC,MAAMlH,OAAAA,GAAAA,MAAAA,EAAOyjB,GAAOiZ,OAAAA,CAAAA;QAAAA,CAAAA,GAHrC17B,GAAA,EAAAzL,IAMGmgF,GAAAA,gBAAiB,SAACtgC,IAAO3xB,IAAAA;AACxB,cAAMkyD,KAAalyD,GAAOiZ,SACpB0+F,KAAShmF,GAAM9/C,IAAIqgF,EAAAA;AACzB,iBAAOvgC,GAAMlwC,IAAIywE,IAAAA,CAAaylD,EAAAA;QAAAA,CAAAA,GATlC7lI;MAAA,GAAA,SAAAkB,IAAAd,IAAAO,IAAA;AAAA;ACPA,QAAAA,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,GAAA,GAAA8K,KAAA9K,GAAA,GAAA;AAIe,QAAAP,GAAA,UAAA,WAAA;AACb,iBAAO,CAACsoE,GAAAA,SAAQ,EACdg2D,cAAc,EACZoB,SAAS,EACPG,aAAa,EACX1/C,QAAQ,SAACigD,IAAK99F,IAAAA;AAAN,mBAAiB,WAAA;AACvB89F,cAAAA,GAAG,MAAA,QAAH,SAAA;AAEA,kBAAMjyH,KAAOwgB,mBAAmB0M,OAAOlH,SAAShmB,IAAAA;AAChDm0B,cAAAA,GAAOojG,cAAcC,kBAAkBx3H,EAAAA;YAAAA;UAAAA,EAAAA,EAAAA,EAAAA,GAK/CuiF,gBAAgB,EACdtlD,WAAWw6F,GAAAA,SACXC,cAAcC,GAAAA,QAAAA,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,QAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,YAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,qBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,iBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,mBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,iBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,IAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCfdC,KAAY,oBACZC,KAAkB,uBAEXx9D,KAAO,SAAC43D,IAADpgI,IAAA;AAAA,cAAQioC,KAARjoC,GAAQioC,YAAYw3F,KAApBz/H,GAAoBy/H;AAApB,iBAA0C,WAAA;AAAc,qBAADz/H,KAAA,UAAA,QAAT6/C,KAAS,IAAA,MAAA7/C,EAAA,GAAAqL,KAAA,GAAAA,KAAArL,IAAAqL;AAATw0C,cAAAA,GAASx0C,EAAA,IAAA,UAAAA,EAAA;AAGzE,gBAFA+0H,GAAG,MAAA,QAAIvgF,EAAAA,GAEH5X,GAAAA,EAAag+F;AAIjB,kBAAA;AACE,oBAAKC,KAAqBrmF,GAA1B,CAAA,GAAiB4oB,KAAS5oB,GAA1B,CAAA;AAEAqmF,gBAAAA,KAAa/mI,GAAA,EAAc+mI,EAAAA,IAAcA,KAAa,CAACA,EAAAA;AAGvD,oBAAMC,KAAe1G,GAAgB2G,2BAA2BF,EAAAA;AAGhE,oBAAA,CAAIC,GAAaniI;AACf;AAEF,oBAM+BpD,IAN/BwN,KAAAye,GAAA,EAA0Bs5G,IAA1B,CAAA,GAAOpgI,KAAPqI,GAAA,CAAA,GAAai4H,KAAbj4H,GAAA,CAAA;AAEA,oBAAA,CAAKq6D;AACH,yBAAOssB,OAAAA,GAAAA,OAAAA,EAAQ,GAAA;AAGjB,oBAA4B,MAAxBoxC,GAAaniI;AACf+wF,yBAAAA,GAAAA,OAAAA,EAAQ9+D,OAAAA,GAAAA,CAAAA,EAAmBnJ,GAAA,EAAAlsB,KAAA,IAAA,OAAIs0B,mBAAmBnvB,EAAAA,GAAxB,GAAA,CAAA,EAAA,KAAAnF,IAAiCs0B,mBAAmBmxG,EAAAA,CAAAA,CAAAA,CAAAA;;AAC7C,wBAAxBF,GAAaniI,UACtB+wF,OAAAA,GAAAA,OAAAA,EAAQ9+D,OAAAA,GAAAA,CAAAA,EAAmB,IAAD,OAAKf,mBAAmBnvB,EAAAA,CAAAA,CAAAA,CAAAA;cAAAA,SAG7CjF,IAAP;AAGA8tB,wBAAQtiB,MAAMxL,EAAAA;cAAAA;UAAAA;QAAAA,GAILwlI,KAAW,SAAC/sG,IAAAA;AACvB,iBAAO,EACLxzB,MAAMggI,IACNh/F,SAAS5nC,GAAA,EAAco6B,EAAAA,IAAQA,KAAO,CAACA,EAAAA,EAAAA;QAAAA,GAI9BosG,KAAoB,SAACY,IAAAA;AAAD,iBAAa,SAAAvmI,IAAA;AAAqD,gBAAlD0lI,KAAiD1lI,GAAjD0lI,eAAejG,KAAkCz/H,GAAlCy/H;AAE9D,iBAAIx3F,GAF4FjoC,GAAjBioC,YAAAA,EAE9Dg+F,eAIdM,IAAS;AAAC,kBAADhnI,IACN4O,KAAOC,GAAA,EAAAm4H,EAAAA,EAAO,KAAPA,IAAc,CAAA;AAGV,sBAAZp4H,GAAK,CAAA,MAENA,KAAOC,GAAA,EAAAD,EAAAA,EAAI,KAAJA,IAAW,CAAA,IAGL,QAAZA,GAAK,CAAA,MAINA,KAAOC,GAAA,EAAAD,EAAAA,EAAI,KAAJA,IAAW,CAAA;AAGpB,kBAAMq4H,KAAYtnI,GAAA,EAAAK,KAAA4O,GAAKmmB,MAAM,GAAA,CAAA,EAAX,KAAA/0B,IAAoB,SAAA+N,IAAAA;AAAG,uBAAKA,MAAO;cAAA,CAAA,GAE/Cm5H,KAAahH,GAAgBiH,2BAA2BF,EAAAA,GAE9DrnI,KAAA0tB,GAAA,EAAkD45G,IAAlD,CAAA,GAAO1gI,KAAP5G,GAAA,CAAA,GAAA2tB,KAAA3tB,GAAA,CAAA,GAAawnI,KAAAA,WAAb75G,KAAqB,KAArBA,IAAA1tB,KAAAD,GAAA,CAAA,GAAyBynI,KAAAA,WAAzBxnI,KAA4C,KAA5CA;AAEA,kBAAY,iBAAT2G,IAAuB;AAExB,oBAAM8gI,KAAgBpH,GAAgBiH,2BAA2B,CAACC,EAAAA,CAAAA;AAI/D,gBAAAliG,GAAA,EAAAkiG,EAAAA,EAAK,KAALA,IAAc,GAAA,IAAA,OACf/3G,QAAQ6T,KAAK,iGAAA,GACbijG,GAAcl9D,KAAKtpE,GAAA,EAAA2nI,EAAAA,EAAa,KAAbA,IAAkB,SAAAv5H,IAAAA;AAAG,yBAAIA,GAAI0hB,QAAQ,MAAM,GAAA;gBAAA,CAAA,GAAA,IAAO,IAGvE02G,GAAcl9D,KAAKq+D,IAAAA,IAAe;cAAA;AAAA,eAKhCpiG,GAAA,EAAAkiG,EAAAA,EAAK,KAALA,IAAc,GAAA,IAAA,MAAaliG,GAAA,EAAAmiG,EAAAA,EAAgB,KAAhBA,IAAyB,GAAA,IAAA,QACtDh4G,QAAQ6T,KAAK,iGAAA,GACbijG,GAAcl9D,KAAKtpE,GAAA,EAAAunI,EAAAA,EAAU,KAAVA,IAAe,SAAAn5H,IAAAA;AAAG,uBAAIA,GAAI0hB,QAAQ,MAAM,GAAA;cAAA,CAAA,GAAA,IAAO,IAGpE02G,GAAcl9D,KAAKi+D,IAAAA,IAAY,GAG/Bf,GAAcY,SAASG,EAAAA;YAAAA;UAAAA;QAAAA,GAIdK,KAAgB,SAACL,IAAYljI,IAAAA;AAAb,iBAAqB,SAAC++B,IAAAA;AACjD,gBAAMykG,KAAczkG,GAAOm9F,gBAAgBuH,eAAAA;AAExCn7G,YAAAA,GAAAA,EAAG9gB,GAAGg8H,IAAa18H,OAAAA,GAAAA,MAAAA,EAAOo8H,EAAAA,CAAAA,MAC3BnkG,GAAOojG,cAAcuB,gBAAgB1jI,EAAAA,GACrC++B,GAAOojG,cAAcwB,cAAAA;UAAAA;QAAAA,GAKZD,KAAkB,SAAC1jI,IAAKgoF,IAAAA;AAAN,iBAAoB,SAACjpD,IAAAA;AAClD,gBAAA;AACEipD,cAAAA,KAAYA,MAAajpD,GAAOl6B,GAAG++H,gBAAgB5jI,EAAAA,GAClC6jI,GAAAA,EAAUC,eAAe97C,EAAAA,EAC/BzwE,GAAGvX,EAAAA;YAAAA,SACRzC,IAAN;AACA8tB,sBAAQtiB,MAAMxL,EAAAA;YAAAA;UAAAA;QAAAA,GAILomI,KAAgB,WAAA;AAC3B,iBAAO,EACLnhI,MAAMigI,GAAAA;QAAAA;AA0BK,QAAAhmI,GAAA,UAAA,EACboI,IAAI,EACF++H,iBAtBJ,SAAyBz7B,IAAS47B,IAAAA;AAChC,cAAMC,KAAclgE,SAASx3D,iBACzBopC,KAAQuuF,iBAAiB97B,EAAAA,GACvB+7B,KAAyC,eAAnBxuF,GAAMxB,UAC5BiwF,KAAgBJ,KAAgB,yBAAyB;AAE/D,cAAuB,YAAnBruF,GAAMxB;AACR,mBAAO8vF;AACT,mBAAS7d,KAAShe,IAAUge,KAASA,GAAOie;AAE1C,gBADA1uF,KAAQuuF,iBAAiB9d,EAAAA,IAAAA,CACrB+d,MAA0C,aAAnBxuF,GAAMxB,aAG7BiwF,GAAct2G,KAAK6nB,GAAM2uF,WAAW3uF,GAAM4uF,YAAY5uF,GAAM6uF,SAAAA;AAC9D,qBAAOpe;AAGX,iBAAO6d;QAAAA,EAAAA,GAOPjJ,cAAc,EACZh2D,QAAQ,EACNm2D,SAAS,EACPwI,iBAAAA,IACAX,UAAAA,IACAY,eAAAA,IACAJ,eAAAA,IACAnB,mBAAAA,GAAAA,GAEFjH,WAAW,EACTsI,gBADS,SACMvnF,IAAAA;AACb,iBAAOA,GAAM9/C,IAAI,aAAA;QAAA,GAEnB+mI,4BAJS,SAIkBjnF,IAAO0mF,IAAAA;AAChC,cAAA5lI,KAAAssB,GAAA,EAA2Bs5G,IAA3B,CAAA,GAAO3tF,KAAPj4C,GAAA,CAAA,GAAYorC,KAAZprC,GAAA,CAAA;AAEA,iBAAGorC,KACM,CAAC,cAAc6M,IAAK7M,EAAAA,IAClB6M,KACF,CAAC,kBAAkBA,EAAAA,IAErB,CAAA;QAAA,GAET4tF,4BAdS,SAckB3mF,IAAOgnF,IAAAA;AAChC,cAAAlmI,KAAAssB,GAAA,EAA+B45G,IAA/B,CAAA,GAAK1gI,KAALxF,GAAA,CAAA,GAAWi4C,KAAXj4C,GAAA,CAAA,GAAgBorC,KAAhBprC,GAAA,CAAA;AAEA,iBAAW,gBAARwF,KACM,CAACyyC,IAAK7M,EAAAA,IACI,oBAAR5lC,KACF,CAACyyC,EAAAA,IAEH,CAAA;QAAA,EAAA,GAGX+lF,WAAQ3+H,KAAA,CAAA,GAAAyL,GAAA,EAAAzL,IACLmmI,IADK,SACMtmF,IAAO3xB,IAAAA;AACjB,iBAAO2xB,GAAMlwC,IAAI,eAAesc,GAAAA,EAAGxhB,OAAOyjB,GAAOiZ,OAAAA,CAAAA;QAAAA,CAAAA,GAF7C17B,GAAA,EAAAzL,IAILomI,IAJK,SAIYvmF,IAAAA;AAChB,iBAAOA,GAAMykF,OAAO,aAAA;QAAA,CAAA,GALhBtkI,KAQRigI,aAAa,EACXr3D,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,QAAAA,GAAAA,EAAAA;AClLO5uC,QAAAA,GAAAA,UAvBC,SAACyI,IAAKC,IAAAA;AAAN,iBAAA,SAAA/hC,IAAA;AAAA,YAAAxB,GAAA,EAAAsM,IAAA9K,EAAA;AAAA,gBAAAX,KAAAgB,GAAA,EAAAyK,EAAA;AAAA,qBAAAA,KAAA;AAAA,kBAAAvK,IAAAP;AAAA,cAAAhB,GAAA,EAAA,MAAA8L,EAAA;AAAA,uBAAAvM,KAAA,UAAA,QAAA+tB,KAAA,IAAA,MAAA/tB,EAAA,GAAAK,KAAA,GAAAA,KAAAL,IAAAK;AAAA,gBAAA0tB,GAAA1tB,EAAA,IAAA,UAAAA,EAAA;AAAA,qBAAAoB,KAAAX,GAAA,KAAA,MAAAA,IAAAqG,GAAA,EAAAnF,KAAA,CAAA,IAAA,CAAA,EAAA,KAAAA,IAAA+rB,EAAA,CAAA,GAAAztB,GAAA,EAACyB,GAAA,EAAAN,EAAA,GAAA,UAMN,SAACgD,IAAAA;AACR,oBAAQ6nC,KAAc7qC,GAAK+qB,MAAnB8f,WACR7rC,KAA6B6rC,GAAU5lB,SAAAA,GAA/BgzB,KAARj5C,GAAQi5C,KAAK7M,KAAbpsC,GAAaosC,aACP86F,KAAer7F,GAAU5lB,SAAAA,EAAzBihH;AACNA,gBAAAA,KAAaA,MAAc,CAAC,cAAcjuF,IAAK7M,EAAAA,GAC/CrJ,GAAOojG,cAAcoB,cAAcL,IAAYljI,EAAAA;cAAAA,CAAAA,GAXnChD;YAAA;AAAA,mBAAAzB,GAAA,EAAAuM,IAAA,CAAA,EAAA,KAAA,UAAA,OAcd,WAAA;AACE,qBACEylB,GAAA,EAAA,cAAA,QAAA,EAAMvtB,KAAKsC,KAAKkiI,OAAAA,GACdj3G,GAAA,EAAA,cAACuR,IAAQx8B,KAAKylB,KAAAA,CAAAA;YAAAA,EAAAA,CAAAA,CAAAA,GAjBNjgB;UAAA,EAAgD4tF,GAAAA,EAAM72D,SAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,QAAAA,GAAAA,EAAAA;ACqBvDxI,QAAAA,GAAAA,UArBC,SAACyI,IAAKC,IAAAA;AAAN,iBAAA,SAAA/hC,IAAA;AAAA,YAAAxB,GAAA,EAAAsM,IAAA9K,EAAA;AAAA,gBAAAX,KAAAgB,GAAA,EAAAyK,EAAA;AAAA,qBAAAA,KAAA;AAAA,kBAAAvK,IAAAP;AAAA,cAAAhB,GAAA,EAAA,MAAA8L,EAAA;AAAA,uBAAAvM,KAAA,UAAA,QAAA+tB,KAAA,IAAA,MAAA/tB,EAAA,GAAAK,KAAA,GAAAA,KAAAL,IAAAK;AAAA,gBAAA0tB,GAAA1tB,EAAA,IAAA,UAAAA,EAAA;AAAA,qBAAAoB,KAAAX,GAAA,KAAA,MAAAA,IAAAqG,GAAA,EAAAnF,KAAA,CAAA,IAAA,CAAA,EAAA,KAAAA,IAAA+rB,EAAA,CAAA,GAAAztB,GAAA,EAACyB,GAAA,EAAAN,EAAA,GAAA,UAMN,SAACgD,IAAAA;AACR,oBACMkjI,KAAa,CAAC,kBADJlmI,GAAK+qB,MAAbktB,GAAAA;AAERlW,gBAAAA,GAAOojG,cAAcoB,cAAcL,IAAYljI,EAAAA;cAAAA,CAAAA,GATnChD;YAAA;AAAA,mBAAAzB,GAAA,EAAAuM,IAAA,CAAA,EAAA,KAAA,UAAA,OAYd,WAAA;AACE,qBACEylB,GAAA,EAAA,cAAA,QAAA,EAAMvtB,KAAKsC,KAAKkiI,OAAAA,GACdj3G,GAAA,EAAA,cAACuR,IAAQx8B,KAAKylB,KAAAA,CAAAA;YAAAA,EAAAA,CAAAA,CAAAA,GAfNjgB;UAAA,EAAmD4tF,GAAAA,EAAM72D,SAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACHzE,QAAA7hC,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA;AAEe,QAAAP,GAAA,UAAA,WAAA;AACb,iBAAO,EACLoI,IAAI,EACFw3H,WAAAA,GAAAA,QAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA;ACLS,QAAA5/H,GAAA,UAAA,SAASw/H,IAAWwI,IAAAA;AACjC,iBAAOzoI,GAAA,EAAAigI,EAAAA,EAAS,KAATA,IAAiB,SAACyI,IAAQzvF,IAAAA;AAAT,mBAAA,OAAiB15C,GAAA,EAAA05C,EAAAA,EAAG,KAAHA,IAAYwvF,EAAAA;UAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCDnDE,KAAAA;AAEW,QAAAloI,GAAA,UAAA,WAAA;AAEb,iBAAO,EACLs+H,cAAc,EACZ13F,MAAM,EACJi5F,aAAa,EACXl5F,YAAY,SAACy5F,IAAAA;AAAD,mBAAS,WAAA;AAEnB,qBADA8H,KAAAA,MACO9H,GAAG,MAAA,QAAH,SAAA;YAAA;UAAA,GAETl5F,gBAAgB,SAACk5F,IAAK99F,IAAAA;AAAN,mBAAiB,WAAA;AAC/B,kBAAM6P,KAAK7P,GAAO2F,WAAAA,EAAakgG;AAQ/B,qBAPGD,MAAyB,cAAA,OAAP/1F,OAGnB5yC,GAAA,EAAW4yC,IAAI,CAAA,GACf+1F,KAAAA,QAGK9H,GAAG,MAAA,QAAH,SAAA;YAAA;UAAA,EAAA,EAAA,EAAA,EAAA;QAAA;MAAA,GAAA,SAAAt/H,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,iBAAA,WAAA;AAAA,iBAAAykC;QAAA,CAAA;AAAA,YAAA7kC,KAAAW,GAAA,CAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,CAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,CAAA,GAAAM,KAAAN,GAAA,EAAAssB,EAAA,GAAA1tB,KAAAoB,GAAA,CAAA,GAAAxB,KAAAwB,GAAA,EAAApB,EAAA,GAAA2tB,KAAAvsB,GAAA,CAAA,GAAAK,KAAAL,GAAA,EAAAusB,EAAA,GAAA1e,MAAA7N,GAAA,EAAA,GAAAA,GAAA,CAAA,IAAAnB,KAAAmB,GAAA,EAAA6N,EAAA,GAAAlP,KAAAqB,GAAA,GAAA,GAAA0F,KAAA1F,GAAA,GAAA,GCfNmgF,KAAb,SAAA5/E,IAAA;AAAA,UAAAD,GAAA,EAAAN,IAAAO,EAAA;AAAA,cAAAd,KAAAjB,GAAA,EAAAwB,EAAA;AAKE,mBAAAA,KAAA;AAAsB,gBAADO,IAAAlB;AAAA,YAAAL,GAAA,EAAA,MAAAgB,EAAA;AAAA,qBAAA8K,KAAA,UAAA,QAANw0C,KAAM,IAAA,MAAAx0C,EAAA,GAAAwhB,KAAA,GAAAA,KAAAxhB,IAAAwhB;AAANgzB,cAAAA,GAAMhzB,EAAA,IAAA,UAAAA,EAAA;AAAA,oBACnBjtB,KAAAI,GAAA,KAAA,MAAAA,IAAAY,GAAA,EAAAE,KAAA,CAAA,IAAA,CAAA,EAAA,KAAAA,IAAS++C,EAAAA,CAAAA,GACJJ,QAAQ,EAAE2oF,UAAAA,OAAiB97H,OAAO,KAAA,GAFpB1M;UAAA;AALvB,iBAAAd,GAAA,EAAAyB,IAAA,CAAA,EAAA,KAAA,qBAAA,OAUE,SAAkB+L,IAAO+7H,IAAAA;AACvBxiI,iBAAKylB,MAAMljB,GAAGi4E,kBAAkB/zE,IAAO+7H,EAAAA;UAAAA,EAAAA,GAX3C,EAAA,KAAA,UAAA,OAcE,WAAA;AACE,gBAAAvnI,KAA+C+E,KAAKylB,OAA5Cm1D,KAAR3/E,GAAQ2/E,cAAcE,KAAtB7/E,GAAsB6/E,YAAYvhB,KAAlCt+D,GAAkCs+D;AAElC,gBAAIv5D,KAAK45C,MAAM2oF,UAAU;AACvB,kBAAME,KAAoB7nD,GAAa,UAAA;AACvC,qBAAOrhF,GAAA,EAAA,cAACkpI,IAAD,EAAmBjpI,MAAMshF,GAAAA,CAAAA;YAAAA;AAGlC,mBAAOvhB;UAAAA,EAAAA,CAAAA,GAtBX,CAAA,EAAA,KAAA,4BAAA,OACE,SAAgC9yD,IAAAA;AAC9B,mBAAO,EAAE87H,UAAAA,MAAgB97H,OAAAA,GAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAF7B/L;QAAA,EAAmC6hC,GAAAA,SAAAA;AAkCnCs+C,QAAAA,GAAcq+B,eAAe,EAC3Bp+B,YAAY,kBACZF,cAAc,WAAA;AAAA,iBAAMqQ,GAAAA;QAAAA,GACpB1oF,IAAI,EACFi4E,mBAAAA,GAAAA,kBAAAA,GAEFjhB,UAAU,KAAA,GAGGshB,GAAAA,UAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACjDf,QAAAngF,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,GAAA,GAAA8K,KAAA9K,GAAA,GAAA,GAAAzB,KAAAyB,GAAA,GAAA,GAAAssB,KAAAtsB,GAAA,GAAA,GAAAM,KAAAN,GAAA,EAAA,GAAApB,KAAAoB,GAAA,GAAA,GAAAxB,KAAAwB,GAAA,GAAA;AAWe,QAAAP,GAAA,UAAA,WAAA;AACb,iBAAO,EACL6wF,YAAAA,GAAAA,SACAH,gBAAAA,GAAAA,SACA4tC,cAAc,EACZ13F,MAAM,EACJo4F,eAAeuJ,IACf7J,WAAWn8F,GAAAA,GAEb+sB,MAAM,EACJ0vE,eAAewJ,GAAAA,GAEjBC,MAAM,EACJhK,SAASiK,IACTnK,UAAUoK,GAAAA,SACVjK,WAAWxzF,GAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC1BnB,QAAA3qC,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,eAAA,WAAA;AAAA,iBAAAoO;QAAA,CAAA,GAAA7N,GAAA,EAAAP,IAAA,WAAA,WAAA;AAAA,iBAAAZ;QAAA,CAAA,GAAAmB,GAAA,EAAAP,IAAA,uBAAA,WAAA;AAAA,iBAAAd;QAAA,CAAA,GAAAqB,GAAA,EAAAP,IAAA,QAAA,WAAA;AAAA,iBAAAiG;QAAA,CAAA,GAAA1F,GAAA,EAAAP,IAAA,YAAA,WAAA;AAAA,iBAAAykC;QAAA,CAAA,GAAAlkC,GAAA,EAAAP,IAAA,YAAA,WAAA;AAAA,iBAAA8wB;QAAA,CAAA,GAAAvwB,GAAA,EAAAP,IAAA,YAAA,WAAA;AAAA,iBAAAsL;QAAA,CAAA,GAAA/K,GAAA,EAAAP,IAAA,WAAA,WAAA;AAAA,iBAAAmuB;QAAA,CAAA,GAAA5tB,GAAA,EAAAP,IAAA,WAAA,WAAA;AAAA,iBAAA+V;QAAA,CAAA,GAAAxV,GAAA,EAAAP,IAAA,UAAA,WAAA;AAAA,iBAAAstB;QAAA,CAAA,GAAA/sB,GAAA,EAAAP,IAAA,cAAA,WAAA;AAAA,iBAAA4L;QAAA,CAAA;AAAA,YAAAhM,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,EAAA,GAAA8K,KAAA9K,GAAA,CAAA,GAAAzB,KAAAyB,GAAA,EAAA;AAQA,iBAASqoI,GAAShrG,IAAAA;AAChB,iBAAO,SAACwiG,IAAK99F,IAAAA;AAAN,mBAAiB,WAAA;AACtB,kBAAMsE,KAAOtE,GAAO3U,UAAAA,EAAY4U,cAAcC,SAAAA;AAC9C,qBAAGqmG,OAAAA,GAAAA,MAAAA,EAAajiG,EAAAA,IACPhJ,GAAQ,MAAA,QAAR,SAAA,IAEAwiG,GAAG,MAAA,QAAH,SAAA;YAAA;UAAA;QAAA;AAKb,YAAM3gF,KAAQ,SAAAA,IAAAA;AACZ,iBAAOA,MAASzvC,OAAAA,GAAAA,GAAAA,EAAAA;QAAAA,GAKZ84H,KAAmBF,GAFJ5rG,OAAAA,GAAAA,CAAAA,EAAe,WAAA;AAAA,iBAAM;QAAA,CAAA,CAAA,GAIpCwF,KAAWxF,OAAAA,GAAAA,CAAAA,EACfyiB,IACA,SAAA7Y,IAAAA;AAAI,iBAAIA,GAAKjnC,IAAI,QAAQqQ,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA;QAAAA,CAAAA,GAGrB8nD,KAAe96B,OAAAA,GAAAA,CAAAA,EACnByiB,IACA,SAAA7Y,IAAAA;AAAI,iBAAIA,GAAKjnC,IAAI,YAAYqQ,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA;QAAAA,CAAAA,GAGzB42B,KAAO,SAAA6Y,IAAAA;AACX,cAAIjyB,KAAMsqC,GAAarY,EAAAA;AAGvB,iBAFGjyB,GAAIha,MAAAA,IAAU,MACfga,KAAMgV,GAASid,EAAAA,IACVjyB;QAAAA,GAKIqrC,KAAc+vE,GAAS5rG,OAAAA,GAAAA,CAAAA,EAClC4J,IACA,SAAAA,IAAAA;AACE,cAAMpZ,KAAMoZ,GAAKlf,MAAM,CAAC,cAAc,SAAA,CAAA;AACtC,iBAAO1X,GAAAA,IAAIE,MAAMsd,EAAAA,IAAOA,KAAMxd,OAAAA,GAAAA,GAAAA,EAAAA;QAAAA,CAAAA,CAAAA,GAIrB+qD,KAAU6tE,GAAS,SAACnpF,IAAAA;AAC/B,iBAAO7Y,GAAK6Y,EAAAA,EAAO33B,MAAM,CAAC,WAAW,CAAA,CAAA;QAAA,CAAA,GAG1B2wC,KAAsBmwE,GAAS5rG,OAAAA,GAAAA,CAAAA,EAC1CmQ,GAAAA,8BACA,SAAAvG,IAAAA;AAAI,iBAAIA,GAAKlf,MAAM,CAAC,cAAc,iBAAA,CAAA,KAAuB;QAAA,CAAA,CAAA,GAG9C6nC,KAAOu5E,IACPhwE,KAAWgwE,IACXxwE,KAAWwwE,IACXvwE,KAAWuwE,IACX/vE,KAAU+vE,IAIVC,KAAUH,GAAS5rG,OAAAA,GAAAA,CAAAA,EAC9B4J,IACA,SAAAA,IAAAA;AAAI,iBAAIA,GAAKlf,MAAM,CAAC,SAAA,CAAA,KAAe1X,OAAAA,GAAAA,GAAAA,EAAAA;QAAAA,CAAAA,CAAAA,GAGxB8hB,KAAS,SAACsuG,IAAK99F,IAAAA;AAAN,iBAAiB,WAAA;AACrC,gBAAMsE,KAAOtE,GAAO3U,UAAAA,EAAY4U,cAAcC,SAAAA;AAC9C,mBAAOqmG,OAAAA,GAAAA,MAAAA,EAAa74H,GAAAA,IAAIE,MAAM02B,EAAAA,IAAQA,KAAO52B,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA;UAAAA;QAAAA,GAGlCiyB,KAAa,SAACm+F,IAAK99F,IAAAA;AAAN,iBAAiB,WAAA;AACzC,gBAAMsE,KAAOtE,GAAO3U,UAAAA,EAAY4U,cAAcC,SAAAA;AAC9C,mBAAOwmG,OAAAA,GAAAA,UAAAA,EAAiBh5H,GAAAA,IAAIE,MAAM02B,EAAAA,IAAQA,KAAO52B,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,0BAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA;AC5D5C,YAdW4tB,IAcLwmG,MAdKxmG,KAc6BZ,OAAAA,GAAAA,CAAAA,EAhBjC,SAAAyiB,IAAAA;AAAK,iBAAIA;QAAAA,GAkBnB,SAAA3+C,IAAA;AAAA,iBAAAA,GAAEyhC,cAAiCk2B,oBAAAA;QAAAA,GACnC,SAACn2B,IAAQu2B,IAAAA;AAAiB,cAADt4D,IAGnB8X,KAAON,OAAAA,GAAAA,IAAAA,EAAAA;AAEX,iBAAI8gD,MAIJ95D,GAAA,EAAAwB,KAAAs4D,GAAY1xD,SAAAA,CAAAA,EAAZ,KAAA5G,IAAgC,SAAAO,IAAA;AAA8B,gBAGtCd,IAHqCO,KAAAzB,GAAA,EAAAgC,IAAA,CAAA,GAA1BmoI,KAA0B1oI,GAAA,CAAA,GAAjBk5C,KAAiBl5C,GAAA,CAAA,GACrDwF,KAAO0zC,GAAW95C,IAAI,MAAA;AA2B5B,gBAzBY,aAAToG,MACDhH,GAAA,EAAAiB,KAAAy5C,GAAW95C,IAAI,OAAA,EAASwH,SAAAA,CAAAA,EAAxB,KAAAnH,IAA2C,SAAAc,IAAA;AAAyB,kBAADd,KAAAlB,GAAA,EAAAgC,IAAA,CAAA,GAAtBooI,KAAsBlpI,GAAA,CAAA,GAAbmpI,KAAanpI,GAAA,CAAA,GAC7DopI,KAAgB/+H,OAAAA,GAAAA,MAAAA,EAAO,EACzBqqD,MAAMw0E,IACNG,kBAAkBF,GAAQxpI,IAAI,kBAAA,GAC9B2pI,UAAUH,GAAQxpI,IAAI,UAAA,GACtB61D,QAAQ2zE,GAAQxpI,IAAI,QAAA,GACpBoG,MAAM0zC,GAAW95C,IAAI,MAAA,GACrBujC,aAAauW,GAAW95C,IAAI,aAAA,EAAA,CAAA;AAG9B0Y,cAAAA,KAAOA,GAAK5C,KAAK,IAAIzF,GAAAA,IAAJzQ,GAAA,EAAA,CAAA,GACd0pI,IAAUroI,GAAA,EAAAwoI,EAAAA,EAAa,KAAbA,IAAqB,SAACnjI,IAAAA;AAG/B,uBAAA,WAAOA;cAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAAAA,CAAAA,GAKH,WAATF,MAA4B,aAATA,OACpBsS,KAAOA,GAAK5C,KAAK,IAAIzF,GAAAA,IAAJzQ,GAAA,EAAA,CAAA,GACd0pI,IAAUxvF,EAAAA,CAAAA,CAAAA,IAGH,oBAAT1zC,MAA4B0zC,GAAW95C,IAAI,mBAAA,GAAsB;AAClE,kBAAI4pI,KAAW9vF,GAAW95C,IAAI,mBAAA,GAC1B6pI,KAASD,GAAS5pI,IAAI,uBAAA,KAA4B,CAAC,sBAAsB,UAAA;AAC7E,cAAAZ,GAAA,EAAAyqI,EAAAA,EAAM,KAANA,IAAe,SAACC,IAAAA;AAAW,oBAADzpI,IAEpB0pI,KAAmBH,GAAS5pI,IAAI,kBAAA,KAClCP,GAAA,EAAAY,KAAAupI,GAAS5pI,IAAI,kBAAA,CAAA,EAAb,KAAAK,IAAwC,SAAC2pI,IAAKC,IAAAA;AAAN,yBAAcD,GAAIp6H,IAAIq6H,IAAK,EAAA;gBAAA,GAAK,IAAI55H,GAAAA,KAAAA,GAE1Eo5H,KAAgB/+H,OAAAA,GAAAA,MAAAA,EAAO,EACzBqqD,MAAM+0E,IACNJ,kBAAkBE,GAAS5pI,IAAI,wBAAA,GAC/B2pI,UAAUC,GAAS5pI,IAAI,gBAAA,GACvB61D,QAAQk0E,IACR3jI,MAAM,UACN0jC,kBAAkBgQ,GAAW95C,IAAI,kBAAA,EAAA,CAAA;AAGnC0Y,gBAAAA,KAAOA,GAAK5C,KAAK,IAAIzF,GAAAA,IAAJzQ,GAAA,EAAA,CAAA,GACd0pI,IAAUroI,GAAA,EAAAwoI,EAAAA,EAAa,KAAbA,IAAqB,SAACnjI,IAAAA;AAG/B,yBAAA,WAAOA;gBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;cAAAA,CAAAA;YAAAA;UAAAA,CAAAA,GAOVoS,MA3DEA;QAAAA,CAAAA,GAtBN,SAAC+nH,IAAK99F,IAAAA;AAAN,iBAAiB,WAAA;AAAa,qBAC7BsE,KAAOtE,GAAO3U,UAAAA,EAAY4U,cAAcC,SAAAA,GADX5iC,KAAA,UAAA,QAATigD,KAAS,IAAA,MAAAjgD,EAAA,GAAAyL,KAAA,GAAAA,KAAAzL,IAAAyL;AAATw0C,cAAAA,GAASx0C,EAAA,IAAA,UAAAA,EAAA;AAEnC,gBAAGw9H,OAAAA,GAAAA,MAAAA,EAAajiG,EAAAA,GAAO;AAAC,kBAAD9nC,IAEjB+qI,KAAkBvnG,GAAOzU,SAAAA,EAAWnG,MAAM,CAAC,QAAQ,oBACrD,cAAc,iBAAA,CAAA;AAChB,qBAAOkW,GAAQ,MAAA,QAAR/8B,GAAA,EAAA/B,KAAA,CAASwjC,IAAQunG,EAAAA,CAAAA,EAAjB,KAAA/qI,IAAqC+gD,EAAAA,CAAAA;YAAAA;AAE5C,mBAAOugF,GAAG,MAAA,QAAIvgF,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AClBpB,QAAAt/C,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,WAAA,WAAA;AAAA,iBAAAjB;QAAA,CAAA,GAAAwB,GAAA,EAAAP,IAAA,cAAA,WAAA;AAAA,iBAAA8sB;QAAA,CAAA;AAAA,YAAAltB,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,CAAA,GAAA8K,KAAA9K,GAAA,EAAA;AAkBA,YAXkBq9B,IAWZ6hB,KAAQ,SAAAA,IAAAA;AACZ,iBAAOA,MAASzvC,OAAAA,GAAAA,GAAAA,EAAAA;QAAAA,GAGZwyB,KAAWxF,OAAAA,GAAAA,CAAAA,EACfyiB,IACA,SAAA7Y,IAAAA;AAAI,iBAAIA,GAAKjnC,IAAI,QAAQqQ,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA;QAAAA,CAAAA,GAGrB8nD,KAAe96B,OAAAA,GAAAA,CAAAA,EACnByiB,IACA,SAAA7Y,IAAAA;AAAI,iBAAIA,GAAKjnC,IAAI,YAAYqQ,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA;QAAAA,CAAAA,GAYlB+4H,MAlCKnrG,KAkCcZ,OAAAA,GAAAA,CAAAA,EATnB,SAAAyiB,IAAAA;AACX,cAAIjyB,KAAMsqC,GAAarY,EAAAA;AAGvB,iBAFGjyB,GAAIha,MAAAA,IAAU,MACfga,KAAMgV,GAASid,EAAAA,IACVjyB;QAAAA,GAOP,SAAAoZ,IAAAA;AAAI,iBAAIA,GAAKlf,MAAM,CAAC,SAAA,CAAA,KAAe1X,OAAAA,GAAAA,GAAAA,EAAAA;QAAAA,CAAAA,GAnC5B,WAAA;AAAA,iBAAM,SAACsyB,IAAAA;AACZ,gBAAMsE,KAAOtE,GAAO3U,UAAAA,EAAY4U,cAAcC,SAAAA;AAC9C,gBAAGqmG,OAAAA,GAAAA,MAAAA,EAAajiG,EAAAA,GAAO;AAAC,uBAADrmC,KAAA,UAAA,QAFAs/C,KAEA,IAAA,MAAAt/C,KAAA,IAAAA,KAAA,IAAA,CAAA,GAAAhB,KAAA,GAAAA,KAAAgB,IAAAhB;AAFAsgD,gBAAAA,GAEAtgD,KAAA,CAAA,IAAA,UAAAA,EAAA;AACrB,qBAAOq+B,GAAQ,MAAA,QAAIiiB,EAAAA;YAAAA;AAEnB,mBAAO;UAAA;QAAA,IAiCA5d,KAAa,SAACm+F,IAAK99F,IAAAA;AAAN,iBAAiB,WAAA;AACzC,gBAAMsE,KAAOtE,GAAO3U,UAAAA,EAAY4U,cAAcC,SAAAA;AAC9C,mBAAOwmG,OAAAA,GAAAA,UAAAA,EAAiBpiG,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AChD1B,QAAArmC,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,GAAA,GAAA8K,KAAA9K,GAAA,GAAA,GAAAzB,KAAAyB,GAAA,GAAA,GAAAssB,KAAAtsB,GAAA,GAAA,GAAAM,KAAAN,GAAA,GAAA,GAAApB,KAAAoB,GAAA,GAAA,GAAAxB,KAAAwB,GAAA,GAAA;AASe,QAAAP,GAAA,UAAA,EACb8pI,WAAAA,GAAAA,SACAC,UAAAA,GAAAA,SACAx4C,aAAAA,GAAAA,SACAy4C,SAAAA,GAAAA,SACAC,kBAAAA,GAAAA,SACA93C,mBAAAA,GAAAA,SACA+3C,kBAAAA,GAAAA,SACAC,eAAeC,GAAAA,QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,CAAAA;ACsCFN,QAAAA,GAAAA,UAlDG,SAACx+G,IAAAA;AAAW,cAADtrB,IACrBqqI,KAAsC/+G,GAAtC++G,WAAW5pD,KAA2Bn1D,GAA3Bm1D,cAAckR,KAAarmE,GAAbqmE,UAEzB24C,KAAqB7pD,GAAa,sBAAA,IAAsB;AAE9D,cAAA,CAAI4pD;AACF,mBAAOtrI,GAAA,EAAA,cAAA,QAAA,MAAA,cAAA;AAGT,cAAIwrI,KAAmB1pI,GAAA,EAAAb,KAAAqqI,GAAUljI,SAAAA,CAAAA,EAAVlI,KAAAe,IAAyB,SAAAA,IAAA;AAA+B,gBAADO,IAAAX,KAAAd,GAAA,EAAAkB,IAAA,CAAA,GAA5BwqI,KAA4B5qI,GAAA,CAAA,GAAdyhF,KAAczhF,GAAA,CAAA;AAC5E,mBAAOb,GAAA,EAAA,cAAA,OAAA,EAAKsB,KAAKmqI,GAAAA,GACfzrI,GAAA,EAAA,cAAA,MAAA,MAAKyrI,EAAAA,GACH3pI,GAAA,EAAAN,KAAA8gF,GAASl6E,SAAAA,CAAAA,EAATlI,KAAAsB,IAAwB,SAAAP,IAAA;AAA+B,kBAADO,IAAAX,KAAAd,GAAA,EAAAkB,IAAA,CAAA,GAA5ByqI,KAA4B7qI,GAAA,CAAA,GAAd8qI,KAAc9qI,GAAA,CAAA;AACtD,qBAAoB,YAAjB6qI,KACM,OAEF1rI,GAAA,EAAA,cAAA,OAAA,EAAKsB,KAAKoqI,GAAAA,GACb5pI,GAAA,EAAAN,KAAAmqI,GAASvjI,SAAAA,CAAAA,EAAT,KAAA5G,IAAwB,SAAAP,IAAA;AAA0B,oBAADO,KAAAzB,GAAA,EAAAkB,IAAA,CAAA,GAAvB60B,KAAuBt0B,GAAA,CAAA,GAAf6qC,KAAe7qC,GAAA,CAAA;AACjD,oBAAc,YAAXs0B;AACD,yBAAO;AAET,oBAAIwW,KAAKhhC,OAAAA,GAAAA,MAAAA,EAAO,EACd+gC,WAAAA,GAAAA,CAAAA;AAEF,uBAAOrsC,GAAA,EAAA,cAACurI,IAAD/qI,GAAA,EAAA,CAAA,GACD+rB,IADC,EAEL+f,IAAIA,IACJhrC,KAAKw0B,IACL2jB,KAAK,IACL3jB,QAAQA,IACR0E,MAAMkxG,IACN94C,UAAUA,GAASl8E,KAAK+0H,IAAcC,IAAc51G,EAAAA,GACpD81G,eAAAA,MAAe,CAAA,CAAA;cAAA,CAAA,CAAA;YAAA,CAAA,CAAA;UAAA,CAAA;AAO3B,iBAAO5rI,GAAA,EAAA,cAAA,OAAA,MACJwrI,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCzCCH,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,SAAAA,IAAAA;AAAAA,UAAAA,GAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OACJ,WAAA;AACE,gBAAAtpI,KAAqC+E,KAAKylB,OAAlCy1E,KAARjgG,GAAQigG,MAAM1hG,KAAdyB,GAAczB,MAER4yF,MAAWxR,GAFjB3/E,GAAoB2/E,cAEU,YAAA,IAAY,GAEtCmqD,KAAW7pC,GAAKphG,IAAI,aAAA,KAAkBohG,GAAKphG,IAAI,cAAA,GAC/C4rC,KAAaw1D,GAAKphG,IAAI,YAAA,KAAiBohG,GAAKphG,IAAI,YAAA,EAAc0lB,KAAAA,GAC9D6d,KAAc69D,GAAKphG,IAAI,aAAA;AAE3B,mBAAOsG,GAAA,EAAA,cAAA,OAAA,EAAKy4D,WAAU,iBAAA,GACpBz4D,GAAA,EAAA,cAAA,OAAA,EAAKy4D,WAAU,cAAA,GACbz4D,GAAA,EAAA,cAAA,KAAA,MAAGA,GAAA,EAAA,cAAA,QAAA,MAAO5G,EAAAA,CAAAA,GACR6jC,KAAcj9B,GAAA,EAAA,cAACgsF,IAAD,EAAUn4D,QAAQoJ,GAAAA,CAAAA,IAA2B,IAAA,GAE/Dj9B,GAAA,EAAA,cAAA,OAAA,MAAA,eACc2kI,IADd,KACwB3kI,GAAA,EAAA,cAAA,MAAA,IAAA,GAAMA,GAAA,EAAA,cAAA,MAAA,IAAA,GAD9B,eASN,SAAmB1F,IAAGmO,IAAAA;AAAS,kBAADnO;AAC5B,kBAAqB,YAAA,OAAXmO;AAAuB,uBAAO;AACxC,qBAAOtP,GAAA,EAAAmB,KAAAmO,GACJ4lB,MAAM,IAAA,CAAA,EADF,KAAA/zB,IAEA,SAACmnC,IAAM5oC,IAAAA;AAAP,uBAAaA,KAAI,IAAIkC,MAAMT,KAAI,CAAA,EAAGulB,KAAK,GAAA,IAAO4hB,KAAOA;cAAAA,CAAAA,EACzD5hB,KAAK,IAAA;YAAA,EAZoB,GAAGllB,GAAA,EAAe2qC,IAAY,MAAM,CAAA,CAAA,KAAO,MAAKtlC,GAAA,EAAA,cAAA,MAAA,IAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA1F;QAAA,EAjBlD6hC,GAAAA,SAAAA;AAsCbgoG,QAAAA,GAAAA,UAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,WAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GCrCMJ,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,SAAAA,IAAAA;AAAAA,UAAAA,GAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,kBAiEH,SAAElpI,IAAAA;AAChB,cAAAlB,GAAKirI,UAAW/pI,GAAEuqB,OAAOtrB,KAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,+BAKG,SAAEe,IAAAA;AAC9B,kBAAAd,KAGIJ,GAAK0rB,OAFP6kB,KADFnwC,GACEmwC,wBACA26F,KAFF9qI,GAEE8qI,eAGEC,KAAejqI,GAAEuqB,OAAO04F,aAAa,eAAA,GACrCinB,KAAmBlqI,GAAEuqB,OAAOtrB;AAEK,4BAAA,OAA3BowC,MACRA,GAAuB,EACrBrE,QAAQg/F,IACRzqI,KAAK0qI,IACLz9H,KAAK09H,GAAAA,CAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,aAKC,SAAEjrI,IAAAA;AAAAA,eAGZ0vC,GAF4B7vC,GAAK0rB,MAA3BmkB,mBAEY1vC,EAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,qBAAAA,OAjFpB,WAAA;AAAqB,gBAADe,IAClBd,KAAiC6F,KAAKylB,OAAhCy9G,KAAN/oI,GAAM+oI;AAAN,YAAA/oI,GAAe8qI,iBAOfjlI,KAAKglI,UAAL,UAAA/pI,KAAeioI,GAAQxhH,MAAAA,MAAAA,WAAvBzmB,KAAA,SAAeA,GAAiBnB,IAAI,KAAA,CAAA;UAAA,EAAA,GAAA,EAAA,KAAA,oCAAA,OAGtC,SAAiCorF,IAAAA;AAAY,gBAAD/qF,KAAA,MAExC+oI,KAGEh+C,GAHFg+C,SACA54F,KAEE46C,GAFF56C,wBACA86F,KACElgD,GADFkgD;AAEF,gBAAIplI,KAAKylB,MAAMw/G,kBAAkB//C,GAAU+/C,iBAAiBjlI,KAAKylB,MAAMy9G,YAAYh+C,GAAUg+C,SAAS;AAAC,kBAAD19H,IAEhG6/H,KAA0B/8G,GAAA,EAAA46G,EAAAA,EAAO,KAAPA,IACtB,SAAA9iI,IAAAA;AAAC,uBAAIA,GAAEtG,IAAI,KAAA,MAAWorF,GAAU+/C;cAAAA,CAAAA,GACpCK,KAAuBh9G,GAAA,EAAA9iB,KAAAxF,KAAKylB,MAAMy9G,OAAAA,EAAX,KAAA19H,IACnB,SAAApF,IAAAA;AAAC,uBAAIA,GAAEtG,IAAI,KAAA,MAAWK,GAAKsrB,MAAMw/G;cAAAA,CAAAA,KAAkB14H,OAAAA,GAAAA,UAAAA,EAAAA;AAE3D,kBAAA,CAAI84H;AACF,uBAAOrlI,KAAKglI,UAAU9B,GAAQxhH,MAAAA,EAAQ5nB,IAAI,KAAA,CAAA;AAG5C,kBAAIyrI,KAAyBD,GAAqBxrI,IAAI,WAAA,KAAgByS,OAAAA,GAAAA,UAAAA,EAAAA,GAElEi5H,MAD+Bl9G,GAAA,EAAAi9G,EAAAA,EAAsB,KAAtBA,IAA4B,SAAAnlI,IAAAA;AAAC,uBAAIA,GAAEtG,IAAI,SAAA;cAAA,CAAA,KAAeyS,OAAAA,GAAAA,UAAAA,EAAAA,GACvBzS,IAAI,SAAA,GAElE2rI,KAA4BJ,GAAwBvrI,IAAI,WAAA,KAAgByS,OAAAA,GAAAA,UAAAA,EAAAA,GAExEm5H,MADkCp9G,GAAA,EAAAm9G,EAAAA,EAAyB,KAAzBA,IAA+B,SAAArlI,IAAAA;AAAC,uBAAIA,GAAEtG,IAAI,SAAA;cAAA,CAAA,KAAeyS,OAAAA,GAAAA,UAAAA,EAAAA,GACvBzS,IAAI,SAAA;AAE5E,cAAA2tB,GAAA,EAAAg+G,EAAAA,EAAyB,KAAzBA,IAA8B,SAACh+H,IAAKjN,IAAAA;AACf4qI,gBAAAA,GAAkBlgD,GAAU+/C,eAAezqI,EAAAA,KAMzCgrI,OAAmCE,MACtDp7F,GAAuB,EACrBrE,QAAQi/C,GAAU+/C,eAClBzqI,KAAAA,IACAiN,KAAKA,GAAI3N,IAAI,SAAA,KAAc,GAAA,CAAA;cAAA,CAAA;YAAA;UAAA,EAAA,GAAA,EAAA,KAAA,UAAA,OAqCrC,WAAA;AAAU,gBAADmB,IAAAd,IAAAO,KAAA,MACPX,KAIIiG,KAAKylB,OAJHy9G,KAANnpI,GAAMmpI,SACJ+B,KADFlrI,GACEkrI,eACAG,KAFFrrI,GAEEqrI,mBACAO,KAHF5rI,GAGE4rI,yBAMEF,MAF0Bn9G,GAAA,EAAA46G,EAAAA,EAAO,KAAPA,IAAa,SAAAloI,IAAAA;AAAC,qBAAIA,GAAElB,IAAI,KAAA,MAAWmrI;YAAAA,CAAAA,KAAkB14H,OAAAA,GAAAA,UAAAA,EAAAA,GAE3BzS,IAAI,WAAA,KAAgByS,OAAAA,GAAAA,UAAAA,EAAAA,GAExEq5H,KAA0D,MAAnCH,GAA0BjnI;AAErD,mBACEgpB,GAAA,EAAA,cAAA,OAAA,EAAKqxC,WAAU,UAAA,GACbrxC,GAAA,EAAA,cAAA,SAAA,EAAOq+G,SAAQ,UAAA,GACbr+G,GAAA,EAAA,cAAA,UAAA,EAAQukE,UAAW/rF,KAAK8lI,gBAAiB5rI,OAAO+qI,GAAAA,GAC5Cx9G,GAAA,EAAAxsB,KAAAioI,GAAQ9mH,SAAAA,CAAAA,EAAR,KAAAnhB,IACA,SAAEgrC,IAAAA;AAAF,qBACAze,GAAA,EAAA,cAAA,UAAA,EACEttB,OAAQ+rC,GAAOnsC,IAAI,KAAA,GACnBU,KAAMyrC,GAAOnsC,IAAI,KAAA,EAAA,GACfmsC,GAAOnsC,IAAI,KAAA,GACXmsC,GAAOnsC,IAAI,aAAA,KAAX,MAAA,OAAmCmsC,GAAOnsC,IAAI,aAAA,CAAA,CAAA;YAAA,CAAA,EAElDwI,QAAAA,CAAAA,CAAAA,GAGJsjI,KACAp+G,GAAA,EAAA,cAAA,OAAA,MAEEA,GAAA,EAAA,cAAA,OAAA,EAAKqxC,WAAW,eAAA,GAAhB,iBAEErxC,GAAA,EAAA,cAAA,QAAA,MACGm+G,GAAwBV,EAAAA,CAAAA,CAAAA,GAG7Bz9G,GAAA,EAAA,cAAA,MAAA,MAAA,kBAAA,GACAA,GAAA,EAAA,cAAA,SAAA,MACEA,GAAA,EAAA,cAAA,SAAA,MAEIC,GAAA,EAAAttB,KAAAsrI,GAA0BnkI,SAAAA,CAAAA,EAA1B,KAAAnH,IAAyC,SAAAc,IAAA;AAAkB,kBAADd,IAAAJ,KAAAL,GAAA,EAAAuB,IAAA,CAAA,GAAfzB,KAAeO,GAAA,CAAA,GAAT0N,KAAS1N,GAAA,CAAA;AACxD,qBAAOytB,GAAA,EAAA,cAAA,MAAA,EAAIhtB,KAAKhB,GAAAA,GACdguB,GAAA,EAAA,cAAA,MAAA,MAAKhuB,EAAAA,GACLguB,GAAA,EAAA,cAAA,MAAA,MACI/f,GAAI3N,IAAI,MAAA,IACR0tB,GAAA,EAAA,cAAA,UAAA,EAAQ,iBAAehuB,IAAMuyF,UAAUrxF,GAAKqrI,4BAAAA,GACzCt+G,GAAA,EAAAttB,KAAAsN,GAAI3N,IAAI,MAAA,CAAA,EAAR,KAAAK,IAAoB,SAAA6rI,IAAAA;AACnB,uBAAOx+G,GAAA,EAAA,cAAA,UAAA,EACLy+G,UAAUD,OAAcZ,GAAkBH,IAAezrI,EAAAA,GACzDgB,KAAKwrI,IACL9rI,OAAO8rI,GAAAA,GACNA,EAAAA;cAAAA,CAAAA,CAAAA,IAIPx+G,GAAA,EAAA,cAAA,SAAA,EACEtnB,MAAM,QACNhG,OAAOkrI,GAAkBH,IAAezrI,EAAAA,KAAS,IACjDuyF,UAAUrxF,GAAKqrI,6BACf,iBAAevsI,GAAAA,CAAAA,CAAAA,CAAAA;YAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IASzB,IAAA;UAAA,EAAA,CAAA,CAAA,GAAAkB;QAAA,EArKmB04F,GAAAA,EAAM72D,SAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,WAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCFtB6nG,MAAAA,GAAAA,EAAAA,GAAAA,SAAAA,IAAAA;AAAAA,UAAAA,GAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OASnB,WAAA;AACE,gBAAAnpI,KAAkE+E,KAAKylB,OAAhEiX,KAAPzhC,GAAOyhC,eAAe2I,KAAtBpqC,GAAsBoqC,eAAew9F,KAArC5nI,GAAqC4nI,aAAajoD,KAAlD3/E,GAAkD2/E,cAE5CsoD,KAAUxmG,GAAcwmG,QAAAA,GAExBiB,KAAUvpD,GAAa,SAAA;AAE7B,mBAAOsoD,MAAWA,GAAQ1kI,OACxBzD,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,QAAA,EAAM89D,WAAU,gBAAA,GAAhB,SAAA,GACA99D,GAAA,EAAA,cAACopI,IAAD,EACEjB,SAASA,IACT+B,eAAe5/F,GAAca,eAAAA,GAC7B0D,mBAAmBi5F,GAAYj5F,mBAC/BU,wBAAwBu4F,GAAYv4F,wBACpC86F,mBAAmB//F,GAAc6gG,qBACjCP,yBAAyBtgG,GAAcurB,qBAAAA,CAAAA,CAAAA,IAEhC;UAAA,EAAA,CAAA,CAAA,GAAAl2D;QAAA,EA3B6B04F,GAAAA,EAAM72D,SAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,WAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GCE9C4pG,KAAO1wG,SAAS56B,WAEDyxF,KAAAA,SAAAA,IAAAA;AAAAA,UAAAA,GAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAenB,mBAAA5xF,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADtS;AAAA,mBAAA9L,GAAA,EAAA,MAAAgB,EAAA,GAC1B8K,KAAArL,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADave,GAAA,EAAAyB,GAAA,EAAAwK,EAAA,GAAA,qBAaR,SAAC0/E,IAAAA;AACnB,kBAAA/qF,KAAoC+qF,MAAwB1/E,GAAKigB,OAAzDsmE,KAAR5xF,GAAQ4xF,UAAUvuD,KAAlBrjC,GAAkBqjC;AAMlB,qBAJAh4B,GAAKwtF,SAAS,EACZ94F,OAAOsjC,GAAAA,CAAAA,GAGFuuD,GAASvuD,EAAAA;YAAAA,CAAAA,GApBUjkC,GAAA,EAAAyB,GAAA,EAAAwK,EAAA,GAAA,YAuBjB,SAACtL,IAAAA;AACV,cAAAsL,GAAKigB,MAAMsmE,SAAShoE,OAAAA,GAAAA,CAAAA,EAAU7pB,EAAAA,CAAAA;YAAAA,CAAAA,GAxBJX,GAAA,EAAAyB,GAAA,EAAAwK,EAAA,GAAA,eA2Bd,SAAAvK,IAAAA;AACZ,kBAAMmrI,KAAanrI,GAAEuqB,OAAOtrB;AAE5B,cAAAsL,GAAKwtF,SAAS,EACZ94F,OAAOksI,GAAAA,GACN,WAAA;AAAA,uBAAM5gI,GAAKumF,SAASq6C,EAAAA;cAAAA,CAAAA;YAAAA,CAAAA,GA7BvB5gI,GAAKo0C,QAAQ,EACX1/C,OAAO6pB,OAAAA,GAAAA,CAAAA,EAAU0B,GAAMvrB,KAAAA,KAAUurB,GAAM+X,aAAAA,GAMzC/X,GAAMsmE,SAAStmE,GAAMvrB,KAAAA,GAVKsL;UAAA;AAAA,iBAAAvM,GAAA,EAAAyB,IAAA,CAAA,EAAA,KAAA,oCAAA,OAmC5B,SAAiCwqF,IAAAA;AAE7BllF,iBAAKylB,MAAMvrB,UAAUgrF,GAAUhrF,SAC/BgrF,GAAUhrF,UAAU8F,KAAK45C,MAAM1/C,SAG/B8F,KAAKgzF,SAAS,EACZ94F,OAAO6pB,OAAAA,GAAAA,CAAAA,EAAUmhE,GAAUhrF,KAAAA,EAAAA,CAAAA,GAAAA,CAM3BgrF,GAAUhrF,SAASgrF,GAAU1nD,gBAAkBx9B,KAAK45C,MAAM1/C,SAG5D8F,KAAKqmI,kBAAkBnhD,EAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAI3B,WAAA;AACE,gBAAAjqF,KAGI+E,KAAKylB,OAFPm1D,KADF3/E,GACE2/E,cACAjxD,KAFF1uB,GAEE0uB,QAIAzvB,KACE8F,KAAK45C,MADP1/C,OAGEosI,KAAY38G,GAAOnrB,OAAO,GACxB+nI,KAAW3rD,GAAa,UAAA;AAE9B,mBACEx6E,GAAA,EAAA,cAAA,OAAA,EAAKy4D,WAAU,aAAA,GACbz4D,GAAA,EAAA,cAACmmI,IAAD,EACE1tE,WAAW+/C,GAAAA,EAAG,oBAAoB,EAAE4tB,SAASF,GAAAA,CAAAA,GAC7CtzD,OAAOrpD,GAAOnrB,OAAOmrB,GAAO1J,KAAK,IAAA,IAAQ,IACzC/lB,OAAOA,IACP6xF,UAAW/rF,KAAKymI,YAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAzFqBC,GAAAA,aAAAA;AAAAA,QAAAA,GAAAA,EAA1Bp6C,IAAAA,gBAUG,EACpBP,UAAUo6C,IACVx6C,mBAAAA,MAAmB,CAAA;MAAA,GAAA,SAAA1wF,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA,GAAAO,GAAA,EAAAP,IAAA,WAAA,WAAA;AAAA,iBAAA4L;QAAA,CAAA;AAAA,YAAAhM,KAAAW,GAAA,CAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,CAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,EAAA,GAAAM,KAAAN,GAAA,EAAAssB,EAAA,GAAA1tB,KAAAoB,GAAA,CAAA,GAAAxB,KAAAwB,GAAA,EAAApB,EAAA,GAAA2tB,KAAAvsB,GAAA,CAAA,GAAAK,KAAAL,GAAA,EAAAusB,EAAA,GAAA1e,KAAA7N,GAAA,CAAA,GAAAnB,KAAAmB,GAAA,EAAA6N,EAAA,GAAAlP,KAAAqB,GAAA,EAAA,GAAA0F,KAAA1F,GAAA,EAAArB,EAAA,GAAAulC,KAAAlkC,GAAA,EAAA,GAAAuwB,KAAAvwB,GAAA,EAAAkkC,EAAA,GAAAn5B,KAAA/K,GAAA,CAAA,GAAA4tB,KAAA5tB,GAAA,EAAA+K,EAAA,GAAAyK,KAAAxV,GAAA,CAAA,GAAA+sB,KAAA/sB,GAAA,EAAAwV,EAAA,GChBFg0H,MAAAA,GAAAA,EAAAA,GAAAA,SAAAA,IAAAA;AAAAA,UAAAA,GAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAUnB,mBAAAxpI,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADtS;AAAA,YAAA9L,GAAA,EAAA,MAAAgB,EAAA,GAC1B8K,KAAArL,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADave,GAAA,EAAAyB,GAAA,EAAAwK,EAAA,GAAA,YAkBlB,SAACvK,IAAAA;AACT,kBAAM8wF,KAAavmF,GAAKigB,MAAlBsmE,UACNrxF,KAAsBO,GAAEuqB,QAAlBtrB,KAANQ,GAAMR,OAAOV,KAAbkB,GAAalB,MAET+W,KAAWnQ,GAAA,EAAc,CAAA,GAAIoF,GAAKo0C,MAAM1/C,KAAAA;AAEzCV,cAAAA,KACD+W,GAAS/W,EAAAA,IAAQU,KAEjBqW,KAAWrW,IAGbsL,GAAKwtF,SAAS,EAAE94F,OAAOqW,GAAAA,GAAY,WAAA;AAAA,uBAAMw7E,GAASvmF,GAAKo0C,KAAAA;cAAAA,CAAAA;YAAAA,CAAAA;AA5BvD,gBAAA3gD,KAAuBuM,GAAKigB,OAAtBjsB,KAANP,GAAMO,MAAM+vB,KAAZtwB,GAAYswB,QACRrvB,KAAQsL,GAAKg+D,SAAAA;AAHS,mBAK1Bh+D,GAAKo0C,QAAQ,EACXpgD,MAAMA,IACN+vB,QAAQA,IACRrvB,OAAOA,GAAAA,GARiBsL;UAAA;AAAA,iBAAAvM,GAAA,EAAAyB,IAAA,CAAA,EAAA,KAAA,YAAA,OAY5B,WAAA;AACE,gBAAAO,KAA2B+E,KAAKylB,OAA1BjsB,KAANyB,GAAMzB,MAAMi4D,KAAZx2D,GAAYw2D;AAEZ,mBAAOA,MAAcA,GAAW5vC,MAAM,CAACroB,IAAM,OAAA,CAAA;UAAA,EAAA,GAAA,EAAA,KAAA,UAAA,OAmB/C,WAAA;AAAU,gBAADyB,IAmDiBd,IAlDxBO,KAAmDsF,KAAKylB,OAAlD8D,KAAN7uB,GAAM6uB,QAAQqxD,KAAdlgF,GAAckgF,cAAc13C,KAA5BxoC,GAA4BwoC,cAAc1pC,KAA1CkB,GAA0ClB,MACpC2zF,KAAQvS,GAAa,OAAA,GACrB+rD,KAAM/rD,GAAa,KAAA,GACnBgsD,KAAMhsD,GAAa,KAAA,GACnBisD,KAAYjsD,GAAa,WAAA,GACzBwR,KAAWxR,GAAa,YAAA,IAAY,GACpCksD,KAAalsD,GAAa,cAAA,IAAc,GAExCn3C,MAAUla,GAAOzvB,IAAI,QAAA,KAAa,IAAIgyB,YAAAA,GACxC5xB,KAAQ8F,KAAKwjE,SAAAA,GACb75C,KAASsB,GAAA,EAAAhwB,KAAAioC,GAAaI,UAAAA,CAAAA,EAAb,KAAAroC,IAAiC,SAAAmwB,IAAAA;AAAG,qBAAIA,GAAItxB,IAAI,QAAA,MAAcN;YAAAA,CAAAA;AAE3E,gBAAc,YAAXiqC,IAAoB;AAAC,kBAADrjC,IACjB+uD,KAAWj1D,KAAQA,GAAMJ,IAAI,UAAA,IAAc;AAC/C,qBAAO2tB,GAAA,EAAA,cAAA,OAAA,MACLA,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAAA,QAAA,MAAQjuB,MAAQ+vB,GAAOzvB,IAAI,MAAA,CAAA,GAD7B,sBAGI2tB,GAAA,EAAA,cAACq/G,IAAD,EAAYpzG,MAAM,CAAE,uBAAuBl6B,EAAAA,EAAAA,CAAAA,CAAAA,GAE7C21D,MAAY1nC,GAAA,EAAA,cAAA,MAAA,MAAA,YAAA,GACdA,GAAA,EAAA,cAACk/G,IAAD,MACEl/G,GAAA,EAAA,cAAC2kE,IAAD,EAAUn4D,QAAS1K,GAAOzvB,IAAI,aAAA,EAAA,CAAA,CAAA,GAEhC2tB,GAAA,EAAA,cAACk/G,IAAD,MACEl/G,GAAA,EAAA,cAAA,SAAA,MAAA,WAAA,GAEE0nC,KAAW1nC,GAAA,EAAA,cAAA,QAAA,MAAA,KAAS0nC,IAAT,GAAA,IACA1nC,GAAA,EAAA,cAACm/G,IAAD,MAAKn/G,GAAA,EAAA,cAAC0lE,IAAD,EAAOjtF,MAAK,QAAO62D,UAAS,YAAWv9D,MAAK,YAAWuyF,UAAW/rF,KAAK+rF,UAAWg7C,WAAAA,KAAS,CAAA,CAAA,CAAA,GAG/Gt/G,GAAA,EAAA,cAACk/G,IAAD,MACEl/G,GAAA,EAAA,cAAA,SAAA,MAAA,WAAA,GAEI0nC,KAAW1nC,GAAA,EAAA,cAAA,QAAA,MAAA,UAAA,IACAA,GAAA,EAAA,cAACm/G,IAAD,MAAKn/G,GAAA,EAAA,cAAC0lE,IAAD,EAAO65C,cAAa,gBACbxtI,MAAK,YACL0G,MAAK,YACL6rF,UAAW/rF,KAAK+rF,SAAAA,CAAAA,CAAAA,CAAAA,GAI3CzjE,GAAA,EAAAloB,KAAAupB,GAAOvN,SAAAA,CAAAA,EAAP,KAAAhc,IAAuB,SAACqG,IAAOjM,IAAAA;AAC7B,uBAAOitB,GAAA,EAAA,cAACo/G,IAAD,EAAWpgI,OAAQA,IACRjM,KAAMA,GAAAA,CAAAA;cAAAA,CAAAA,CAAAA;YAAAA;AAMhC,mBAAc,aAAXipC,KAEChc,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAAA,QAAA,MAAQjuB,MAAQ+vB,GAAOzvB,IAAI,MAAA,CAAA,GAD7B,uBAGI2tB,GAAA,EAAA,cAACq/G,IAAD,EAAYpzG,MAAM,CAAE,uBAAuBl6B,EAAAA,EAAAA,CAAAA,CAAAA,GAE3CU,MAASutB,GAAA,EAAA,cAAA,MAAA,MAAA,YAAA,GACXA,GAAA,EAAA,cAACk/G,IAAD,MACEl/G,GAAA,EAAA,cAAC2kE,IAAD,EAAUn4D,QAAS1K,GAAOzvB,IAAI,aAAA,EAAA,CAAA,CAAA,GAEhC2tB,GAAA,EAAA,cAACk/G,IAAD,MACEl/G,GAAA,EAAA,cAAA,SAAA,MAAA,QAAA,GAEEvtB,KAAQutB,GAAA,EAAA,cAAA,QAAA,MAAA,UAAA,IACRA,GAAA,EAAA,cAACm/G,IAAD,MAAKn/G,GAAA,EAAA,cAAC0lE,IAAD,EAAOjtF,MAAK,QAAO6rF,UAAW/rF,KAAK+rF,UAAWg7C,WAAAA,KAAS,CAAA,CAAA,CAAA,GAIlEz+G,GAAA,EAAAnuB,KAAAwvB,GAAOvN,SAAAA,CAAAA,EAAP,KAAAjiB,IAAuB,SAACsM,IAAOjM,IAAAA;AAC7B,qBAAOitB,GAAA,EAAA,cAACo/G,IAAD,EAAWpgI,OAAQA,IACxBjM,KAAMA,GAAAA,CAAAA;YAAAA,CAAAA,CAAAA,IAMXitB,GAAA,EAAA,cAAA,OAAA,MACLA,GAAA,EAAA,cAAA,MAAA,MAAIA,GAAA,EAAA,cAAA,KAAA,MAAIjuB,EAAAA,GAAR,6CAAA,IAAA,OAA+DiqC,IAA/D,GAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA/oC;QAAA,EA5HkC04F,GAAAA,EAAM72D,SAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,WAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCCvB8nG,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,SAAAA,IAAAA;AAAAA,UAAAA,GAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,qBAiBC,SAACp+F,IAAAA;AAAY,kBAAD9rC,IAC9BO,KAAyBX,GAAK0rB,OAAtBiO,KAARh5B,GAAQg5B,MAAM1E,KAAdt0B,GAAcs0B;AAId,qBADAj1B,GAAKktI,YAAAA,GACEltI,GAAK0rB,MAAMmkB,kBAAkB3D,IAA7Bhb,GAAA,EAAA9wB,KAAA,GAAA,OAAwCu5B,IAAxC,GAAA,CAAA,EAAA,KAAAv5B,IAAgD60B,EAAAA,CAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,0BAGhC,SAAC9lB,IAAAA;AAAS,kBAAD/O,IAChCO,KAAyBX,GAAK0rB,OAAtBiO,KAARh5B,GAAQg5B,MAAM1E,KAAdt0B,GAAcs0B;AAId,qBADAj1B,GAAKktI,YAAAA,GACEltI,GAAK0rB,MAAM6kB,uBAAX5wC,GAAA,EAAAA,GAAA,EAAA,CAAA,GACFwP,EAAAA,GADE,CAAA,GAAA,EAEL88B,WAAW/a,GAAA,EAAA9wB,KAAA,GAAA,OAAGu5B,IAAL,GAAA,CAAA,EAAA,KAAAv5B,IAAa60B,EAAAA,EAAAA,CAAAA,CAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,qBAIN,WAAA;AAAO,kBAAD/zB,IACxBd,KAAyBJ,GAAK0rB,OAAtBiO,KAARv5B,GAAQu5B,MAAM1E,KAAd70B,GAAc60B;AACd,qBAAOj1B,GAAK0rB,MAAMyhH,kBAAXj8G,GAAA,EAAAhwB,KAAA,GAAA,OAAgCy4B,IAAhC,GAAA,CAAA,EAAA,KAAAz4B,IAAwC+zB,EAAAA,CAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,qBAG7B,SAACiX,IAAQzrC,IAAAA;AAAS,kBAADE,IACnChB,KAAyBK,GAAK0rB,OAAtBiO,KAARh6B,GAAQg6B,MAAM1E,KAAdt1B,GAAcs1B;AACd,qBAAOj1B,GAAK0rB,MAAM2/G,kBAAkB,EAClCp/F,WAAW/a,GAAA,EAAAvwB,KAAA,GAAA,OAAGg5B,IAAL,GAAA,CAAA,EAAA,KAAAh5B,IAAas0B,EAAAA,GACtBiX,QAAAA,GAAAA,GACCzrC,EAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,2BAGqB,SAACyrC,IAAAA;AAAY,kBAAD9rC,IACpCO,KAAyBX,GAAK0rB,OAAtBiO,KAARh5B,GAAQg5B,MAAM1E,KAAdt0B,GAAcs0B;AACd,qBAAOj1B,GAAK0rB,MAAMkgH,wBAAwB,EACxC1/F,QAAAA,IACAD,WAAW/a,GAAA,EAAA9wB,KAAA,GAAA,OAAGu5B,IAAL,GAAA,CAAA,EAAA,KAAAv5B,IAAa60B,EAAAA,EAAAA,CAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAI1B,WAAA;AACE,gBAAA/zB,KAOI+E,KAAKylB,OALP0hH,KAFFlsI,GAEEksI,kBACAC,KAHFnsI,GAGEmsI,aAGAxsD,KANF3/E,GAME2/E;AAGF,gBAAA,CAAIusD,MAAAA,CAAqBC;AACvB,qBAAO;AAGT,gBAAMjD,KAAUvpD,GAAa,SAAA,GAEvBysD,KAAmBF,MAAoBC,IACvCE,KAAaH,KAAmB,cAAc;AAEpD,mBAAO7+G,GAAA,EAAA,cAAA,OAAA,EAAKuwC,WAAU,oCAAA,GACpBvwC,GAAA,EAAA,cAAA,OAAA,EAAKuwC,WAAU,yBAAA,GACbvwC,GAAA,EAAA,cAAA,OAAA,EAAKuwC,WAAU,aAAA,GACbvwC,GAAA,EAAA,cAAA,MAAA,EAAIuwC,WAAU,gBAAA,GAAd,SAAA,CAAA,CAAA,GAGJvwC,GAAA,EAAA,cAAA,OAAA,EAAKuwC,WAAU,8BAAA,GACbvwC,GAAA,EAAA,cAAA,MAAA,EAAIuwC,WAAU,UAAA,GAAd,UACSyuE,IADT,oDAAA,GAGAh/G,GAAA,EAAA,cAAC67G,IAAD,EACEjB,SAASmE,IACTpC,eAAejlI,KAAKknI,kBAAAA,GACpBt9F,mBAAmB5pC,KAAK4pC,mBACxBU,wBAAwBtqC,KAAKsqC,wBAC7B86F,mBAAmBplI,KAAKolI,mBACxBO,yBAAyB3lI,KAAK2lI,wBAAAA,CAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA5FMvyC,GAAAA,EAAM72D,SAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACJpD,QAAA7hC,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,GAAA,GAAA8K,KAAA9K,GAAA,GAAA,GAAAzB,KAAAyB,GAAA,GAAA,GAAAssB,KAAAtsB,GAAA,GAAA,GAAAM,KAAAN,GAAA,GAAA;AAOe,QAAAP,GAAA,UAAA,EACbiyF,UAAAA,GAAAA,SACAm7C,UAAAA,GAAAA,SACAC,mBAAAA,GAAAA,SACAC,cAAAA,GAAAA,SACArtB,OAAOD,GAAAA,SACPutB,sBAAsB90C,GAAAA,QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,YAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GCNlB56B,KAAS,IAAIqtC,GAAAA,EAAW,YAAA;AAC9BrtC,QAAAA,GAAO1T,MAAM06C,MAAM1M,OAAO,CAAC,OAAA,CAAA,GAC3Bt6B,GAAOtuD,IAAI,EAAE+sF,YAAY,SAAA,CAAA;AAElB,YAAMrK,KAAW,SAACnxF,IAAA;AAA4C,cAA1Cg5B,KAAyCh5B,GAAzCg5B,QAAyCv5B,KAAAO,GAAjC49D,WAAAA,KAAAA,WAAiCn+D,KAArB,KAAqBA,IAAjB0nC,KAAiBnnC,GAAjBmnC;AACjD,cAAqB,YAAA,OAAXnO;AACR,mBAAO;AAGT,cAAKA,IAAS;AACZ,gBAII0zG,IAJIlvB,KAAsBr2E,GAAAA,EAAtBq2E,mBACFh4C,KAAOzI,GAAOqtB,OAAOpxD,EAAAA,GACrBykF,KAAYC,OAAAA,GAAAA,CAAAA,EAAUl4C,IAAM,EAAEg4C,mBAAAA,GAAAA,CAAAA;AAQpC,mBAJwB,YAAA,OAAdC,OACRivB,KAAUjuI,GAAA,EAAAg/G,EAAAA,EAAS,KAATA,EAAAA,IAIVz/G,GAAA,EAAA,cAAA,OAAA,EACE4/G,yBAAyB,EACvBC,QAAQ6uB,GAAAA,GAEV9uE,WAAW+/C,GAAAA,EAAG//C,IAAW,kBAAA,EAAA,CAAA;UAAA;AAI/B,iBAAO;QAAA;AAQTuzB,QAAAA,GAAS8sB,eAAe,EACtB92E,YAAY,WAAA;AAAA,iBAAO,EAAEq2E,mBAAAA,MAAmB;QAAA,EAAA,GAG3Bn8E,GAAAA,UAAAA,OAAAA,GAAAA,wBAAAA,EAAyB8vD,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA;AC7CzB9vD,QAAAA,GAAAA,UAAAA,OAAAA,GAAAA,wBAAAA,EAAyB,SAAArhC,IAAA;AAAwB,cAArBuhC,KAAoBvhC,GAApBuhC,KAAQ/W,KAAY/rB,GAAA,EAAAuB,IAAAD,EAAA,GAE3DuuB,KACE9D,GADF8D,QAAQqxD,KACNn1D,GADMm1D,cAAc13C,KACpBzd,GADoByd,cAAcuuB,KAClChsC,GADkCgsC,YAAYm2E,KAC9CniH,GAD8CmiH,cAAcpuI,KAC5DisB,GAD4DjsB,MAG1D0qI,KAAWtpD,GAAa,UAAA;AAG9B,iBAAY,WAFCrxD,GAAOzvB,IAAI,MAAA,IAGfb,GAAA,EAAA,cAACirI,IAAD,EAAU1pI,KAAMhB,IACb+vB,QAASA,IACT/vB,MAAOA,IACP0pC,cAAeA,IACfuuB,YAAaA,IACbmpB,cAAeA,IACfmR,UAAW67C,GAAAA,CAAAA,IAEd3uI,GAAA,EAAA,cAACujC,IAAQ/W,EAAAA;QAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACpBpB,QAAA/qB,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,CAAA,GAAAhB,KAAAgB,GAAA,EAAAX,EAAA,GAAAyL,KAAA9K,GAAA,EAAA;AAGe4hC,QAAAA,GAAAA,UAAAA,OAAAA,GAAAA,wBAAAA,EAAyB,SAAC7W,IAAAA;AACvC,cAAQ+W,KAAQ/W,GAAR+W;AAER,iBAAO9iC,GAAA,EAAA,cAAA,QAAA,MACLA,GAAA,EAAA,cAAC8iC,IAAQ/W,EAAAA,GACT/rB,GAAA,EAAA,cAAA,SAAA,EAAOm/D,WAAU,gBAAA,GACfn/D,GAAA,EAAA,cAAA,OAAA,EAAKm/D,WAAU,UAAA,GAAf,MAAA,CAAA,CAAA;QAAA,CAAA;MAAA,GAAA,SAAA59D,IAAAd,IAAAO,IAAA;AAAA;ACTN,QAAAA,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAAW,GAAA,EAAA,GAAAhB,KAAAgB,GAAA,GAAA;AAIe4hC,QAAAA,GAAAA,UAAAA,OAAAA,GAAAA,wBAAAA,EAAyBs2D,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,KAAAA,GAAAA,GAAAA,GCClCi1C,KAAAA,SAAAA,IAAAA;AAAAA,UAAAA,GAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAYJ,WAAA;AACE,gBAAA5sI,KAA6B+E,KAAKylB,OAA5B2c,KAANnnC,GAAMmnC,YACF0F,KAAU,CAAC,WAAA,GAEXnG,KAAU;AAOd,mBAAA,SAVA1mC,GAAkBsuB,OAEQzvB,IAAI,YAAA,MAI5BguC,GAAQl4B,KAAK,YAAA,GACb+xB,KAAUpoC,GAAA,EAAA,cAAA,QAAA,EAAMs/D,WAAU,2BAAA,GAAhB,aAAA,IAGLt/D,GAAA,EAAA,cAAA,OAAA,EAAKs/D,WAAW/wB,GAAQ7nB,KAAK,GAAA,EAAA,GACjC0hB,IACDpoC,GAAA,EAAA,cAAC6G,GAAA,GAAD1G,GAAA,EAAA,CAAA,GAAYsG,KAAKylB,OAAjB,EACE2c,YAAaA,IACbhoB,OAAQ,GACR00E,aAAc9uF,KAAKylB,MAAMqpE,eAAe,EAAA,CAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAAp0F;QAAA,EA5BnB6hC,GAAAA,SAAAA;AAkCdD,QAAAA,GAAAA,UAAAA,OAAAA,GAAAA,wBAAAA,EAAyBurG,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA;ACpCzBvrG,QAAAA,GAAAA,UAAAA,OAAAA,GAAAA,wBAAAA,EAAyB,SAAArhC,IAAA;AAAwB,cAArBuhC,KAAoBvhC,GAApBuhC,KAAQ/W,KAAY/rB,GAAA,EAAAuB,IAAAD,EAAA,GAE3DuuB,KAIE9D,GAJF8D,QACAqxD,KAGEn1D,GAHFm1D,cACAjxD,KAEElE,GAFFkE,QACAoiE,KACEtmE,GADFsmE,UAGI/hE,KAAST,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,QAAA,IAAY,MACvDoG,KAAOqpB,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,MAAA,IAAU,MACnDqzF,KAAQvS,GAAa,OAAA;AAE3B,iBAAG16E,MAAiB,aAATA,MAAsB8pB,OAAsB,aAAXA,MAAkC,aAAXA,MAC1D/wB,GAAA,EAAA,cAACk0F,IAAD,EAAOjtF,MAAK,QACJ24D,WAAYlvC,GAAOxrB,SAAS,YAAY,IACxC60E,OAAQrpD,GAAOxrB,SAASwrB,KAAS,IACjCoiE,UAAU,SAAC9wF,IAAAA;AACT8wF,YAAAA,GAAS9wF,GAAEuqB,OAAO4nE,MAAM,CAAA,CAAA;UAAA,GAE1B06C,UAAUtrG,GAAI8xD,WAAAA,CAAAA,IAEtBr1F,GAAA,EAAA,cAACujC,IAAQ/W,EAAAA;QAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,kBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,oBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,gCAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,qBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,+BAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,qBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,wBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,sBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,uBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,uBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,mBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,wBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,yBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,2BAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,CAAAA;ACjBpB,iBAASs9G,GAAShrG,IAAAA;AAChB,iBAAO,WAAA;AAAA,qBAAA59B,KAAA,UAAA,QAAI6/C,KAAJ,IAAA,MAAA7/C,EAAA,GAAAJ,KAAA,GAAAA,KAAAI,IAAAJ;AAAIigD,cAAAA,GAAJjgD,EAAA,IAAA,UAAAA,EAAA;AAAA,mBAAa,SAAC0iC,IAAAA;AACnB,kBAAMsE,KAAOtE,GAAO3U,UAAAA,EAAY4U,cAAcC,SAAAA;AAC9C,qBAAGqmG,OAAAA,GAAAA,MAAAA,EAAajiG,EAAAA,IACPhJ,GAAQ,MAAA,QAAIiiB,EAAAA,IAEZ;YAAA;UAAA;QAAA;AAsBb,YAjBuCjiB,IA6B1BmO,KAAiB68F,GAAS,SAACnpF,IAAO5T,IAAAA;AAC3C,cAAMtS,KAAOsS,KAAY,CAACA,IAAW,gBAAA,IAAoB,CAAC,gBAAA;AAC1D,iBAAO4T,GAAM/3B,MAAM6R,EAAAA,KAAS;QAAA,CAAA,GAInB+S,KAAmBs8F,GAAS,SAACnpF,IAAOlmB,IAAM1E,IAAAA;AACnD,iBAAO4qB,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,WAAA,CAAA,KAAiB;QAAA,CAAA,GAIzD+4G,KAA+BhF,GAAS,SAACnpF,IAAOlmB,IAAM1E,IAAAA;AAC/D,iBAAO4qB,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,iBAAA,CAAA,KAAA;QAAuB,CAAA,GAI/Dg5G,KAAoB,SAACpuF,IAAOlmB,IAAM1E,IAAAA;AAAd,iBAAyB,SAACyN,IAAAA;AACzD,gBAAA1iC,KAAuC0iC,GAAO3U,UAAAA,GAAvCud,KAAPtrC,GAAOsrC,eAAe3I,KAAtB3iC,GAAsB2iC,eAChBqE,KAAOrE,GAAcC,SAAAA;AAC3B,gBAAGqmG,OAAAA,GAAAA,MAAAA,EAAajiG,EAAAA,GAAO;AACrB,kBAAI4qD,KAAAA,OACEj1B,KAAmBrxB,GAAciB,mBAAmB5S,IAAM1E,EAAAA,GAC5Di5G,KAAwB5iG,GAAcoB,iBAAiB/S,IAAM1E,EAAAA;AAQjE,kBAPI7kB,GAAAA,IAAIE,MAAM49H,EAAAA,MAEZA,KAAwBlkH,OAAAA,GAAAA,CAAAA,EAAUkkH,GAAsBtkH,WAAW,SAACukH,IAAAA;AAAD,uBAAQ/9H,GAAAA,IAAIE,MAAM69H,GAAG,CAAA,CAAA,IAAM,CAACA,GAAG,CAAA,GAAIA,GAAG,CAAA,EAAGpuI,IAAI,OAAA,CAAA,IAAYouI;cAAAA,CAAAA,EAAI1oH,KAAAA,CAAAA,IAE/HtN,GAAAA,KAAKG,OAAO41H,EAAAA,MACbA,KAAwBlkH,OAAAA,GAAAA,CAAAA,EAAUkkH,EAAAA,IAEhCvxE,IAAkB;AACpB,oBAAMyxE,KAAmCj9C,OAAAA,GAAAA,0BAAAA,EACvCxuD,GAAcuH,oBAAoB,CAAC,SAASvQ,IAAM1E,IAAQ,aAAA,CAAA,GAC1D0nC,IACArxB,GAAc+iG,qBACZ10G,IAAM1E,IACN,eACA,aAAA,CAAA;AAGJ28D,gBAAAA,KAAAA,CAAAA,CAAsBs8C,MAAyBA,OAA0BE;cAAAA;AAE3E,qBAAOx8C;YAAAA;AAEP,mBAAO;UAAA;QAAA,GAIEjlD,KAA8Bq8F,GAAS,SAACnpF,IAAOlmB,IAAM1E,IAAAA;AAC9D,iBAAO4qB,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,eAAA,CAAA,KAAqB7kB,OAAAA,GAAAA,GAAAA,EAAAA;QAAAA,CAAAA,GAI7DyhF,KAAoBm3C,GAAS,SAACnpF,IAAOlmB,IAAM1E,IAAAA;AACpD,iBAAO4qB,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,QAAA,CAAA,KAAc;QAAA,CAAA,GAItDo5G,KAAuBrF,GAAS,SAACnpF,IAAOlmB,IAAM1E,IAAQ9uB,IAAM1G,IAAAA;AACrE,iBAAOogD,GAAM/3B,MAAM,CAAC,YAAY6R,IAAM1E,IAAQ9uB,IAAM1G,IAAM,eAAA,CAAA,KAAqB;QAAA,CAAA,GAItE8sC,KAAqBy8F,GAAS,SAACnpF,IAAOlmB,IAAM1E,IAAAA;AACrD,iBAAO4qB,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,oBAAA,CAAA,KAA0B;QAAA,CAAA,GAIlEuX,KAAsBw8F,GAAS,SAACnpF,IAAOlmB,IAAM1E,IAAAA;AACtD,iBAAO4qB,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,qBAAA,CAAA,KAA2B;QAAA,CAAA,GAInEk3G,KAAsBnD,GAAS,SAACnpF,IAAOyuF,IAAc7tI,IAAAA;AAC9D,cAAIk5B;AAIJ,cAA2B,YAAA,OAAjB20G,IAA2B;AACnC,gBAAQpiG,KAAsBoiG,GAAtBpiG,QAAQD,KAAcqiG,GAAdriG;AAEdtS,YAAAA,KADCsS,KACM,CAACA,IAAW,wBAAwBC,IAAQzrC,EAAAA,IAE5C,CAAC,wBAAwByrC,IAAQzrC,EAAAA;UAAAA,OAErC;AAELk5B,YAAAA,KAAO,CAAC,wBADO20G,IACyB7tI,EAAAA;UAAAA;AAG1C,iBAAOo/C,GAAM/3B,MAAM6R,EAAAA,KAAS;QAAA,CAAA,GAInB0S,KAAkB28F,GAAS,SAACnpF,IAAOyuF,IAAAA;AAC5C,cAAI30G;AAIJ,cAA2B,YAAA,OAAjB20G,IAA2B;AACnC,gBAAQpiG,KAAsBoiG,GAAtBpiG,QAAQD,KAAcqiG,GAAdriG;AAEdtS,YAAAA,KADCsS,KACM,CAACA,IAAW,wBAAwBC,EAAAA,IAEpC,CAAC,wBAAwBA,EAAAA;UAAAA,OAE7B;AAELvS,YAAAA,KAAO,CAAC,wBADO20G,EAAAA;UAAAA;AAIjB,iBAAOzuF,GAAM/3B,MAAM6R,EAAAA,KAASnnB,OAAAA,GAAAA,UAAAA,EAAAA;QAAAA,CAAAA,GAInBqkD,KAAuBmyE,GAAS,SAACnpF,IAAOyuF,IAAAA;AACjD,cAAIC,IAAWC;AAIf,cAA2B,YAAA,OAAjBF,IAA2B;AACnC,gBAAQpiG,KAAsBoiG,GAAtBpiG,QAAQD,KAAcqiG,GAAdriG;AAChBuiG,YAAAA,KAActiG,IAEZqiG,KADCtiG,KACW4T,GAAM/3B,MAAM,CAACmkB,IAAW,wBAAwBuiG,EAAAA,CAAAA,IAEhD3uF,GAAM/3B,MAAM,CAAC,wBAAwB0mH,EAAAA,CAAAA;UAAAA;AAGnDA,YAAAA,KAAcF,IACdC,KAAY1uF,GAAM/3B,MAAM,CAAC,wBAAwB0mH,EAAAA,CAAAA;AAGnDD,UAAAA,KAAYA,MAAa/7H,OAAAA,GAAAA,UAAAA,EAAAA;AACzB,cAAI2c,KAAMq/G;AAMV,iBAJAvtI,GAAA,EAAAstI,EAAAA,EAAS,KAATA,IAAc,SAAC7gI,IAAKjN,IAAAA;AAClB0uB,YAAAA,KAAMA,GAAIC,QAAQ,IAAImC,OAAJ,IAAA,OAAe9wB,IAAf,GAAA,GAAuB,GAAA,GAAMiN,EAAAA;UAAAA,CAAAA,GAG1CyhB;QAAAA,CAAAA,GAIEotC,MA7K0Bv+B,KA8KrC,SAAC6hB,IAAOpV,IAAAA;AAAR,iBA7JqC,SAACoV,IAAOpV,IAAAA;AAAgB,gBAAD9pC;AAI5D,mBAHA8pC,KAAaA,MAAc,CAAA,GAAA,CAAA,CACAoV,GAAM/3B,MAAN5oB,GAAA,EAAAyB,KAAA,CAAa,aAAA,CAAA,EAAb,KAAAA,IAAAhB,GAAA,EAA+B8qC,EAAAA,GAA/B,CAA2C,WAAA,CAAA,CAAA;UAAA,EA2JhBoV,IAAOpV,EAAAA;QAAAA,GA7KtD,WAAA;AAAA,mBAAAvpC,KAAA,UAAA,QAAI++C,KAAJ,IAAA,MAAA/+C,EAAA,GAAAP,KAAA,GAAAA,KAAAO,IAAAP;AAAIs/C,YAAAA,GAAJt/C,EAAA,IAAA,UAAAA,EAAA;AAAA,iBAAa,SAAC+hC,IAAAA;AAAY,gBAAD/hC,IAAAX,IACxB4iC,KAAWF,GAAO3U,UAAAA,EAAY4U,cAAcC,SAAAA,GAG9C6H,KAFavrC,GAAA,EAAAyB,KAAA,CAAA,CAAA,EAAA,KAAAA,IAAIs/C,EAAAA,EAEK,CAAA,KAAM,CAAA;AAGhC,mBAAA,CAFgCrd,GAAS9a,MAAT5oB,GAAA,EAAAc,KAAA,CAAgB,OAAA,CAAA,EAAhB,KAAAA,IAAAL,GAAA,EAA4B8qC,EAAAA,GAA5B,CAAwC,eAAe,UAAA,CAAA,CAAA,KAG9EzM,GAAQ,MAAA,QAAIiiB,EAAAA;UAAAA;QAAAA,IAwKZwuF,KAA0B,SAAC5uF,IAADz/C,IAAA;AAAkG,cAADO,IAAvF+tI,KAAuFtuI,GAAvFsuI,oCAAoCC,KAAmDvuI,GAAnDuuI,wBAAwBC,KAA2BxuI,GAA3BwuI,sBACvGC,KAAsB,CAAA;AAE1B,cAAA,CAAKz+H,GAAAA,IAAIE,MAAMs+H,EAAAA;AACb,mBAAOC;AAET,cAAIC,KAAe,CAAA;AAkBnB,iBAhBA3vI,GAAA,EAAAwB,KAAAK,GAAA,EAAY0tI,GAAmCniG,kBAAAA,CAAAA,EAA/C,KAAA5rC,IAA2E,SAAC0yB,IAAAA;AAC1E,gBAAIA,OAAgBs7G,IAAwB;AAC1C,kBAAII,KAAiBL,GAAmCniG,mBAAmBlZ,EAAAA;AAC3E,cAAAl0B,GAAA,EAAA4vI,EAAAA,EAAc,KAAdA,IAAuB,SAACC,IAAAA;AAClB,gBAAAxvI,GAAA,EAAAsvI,EAAAA,EAAY,KAAZA,IAAqBE,EAAAA,IAAe,KACtCF,GAAaj5H,KAAKm5H,EAAAA;cAAAA,CAAAA;YAAAA;UAAAA,CAAAA,GAK1B7vI,GAAA,EAAA2vI,EAAAA,EAAY,KAAZA,IAAqB,SAACruI,IAAAA;AACGmuI,YAAAA,GAAqB9mH,MAAM,CAACrnB,IAAK,OAAA,CAAA,KAEtDouI,GAAoBh5H,KAAKpV,EAAAA;UAAAA,CAAAA,GAGtBouI;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA;AC5MT,QAAAzuI,GAAA,WAAAJ,KAAA,CAAA,GAAAyL,GAAA,EAAAzL,IACGkvC,GAAAA,wBAAyB,SAAC2Q,IAADz/C,IAAA;AAA2D,cAADO,KAAAP,GAAhD+mC,SAAW2I,KAAqCnvC,GAArCmvC,mBAAmB7D,KAAkBtrC,GAAlBsrC,WAC1DtS,KAAOsS,KAAY,CAAEA,IAAW,gBAAA,IAAoB,CAAE,gBAAA;AAC5D,iBAAO4T,GAAM/uC,MAAO6oB,IAAMmW,EAAAA;QAAAA,CAAAA,GAH9BrkC,GAAA,EAAAzL,IAKGmvC,GAAAA,2BAA4B,SAAC0Q,IAADz/C,IAAA;AAAgD,cAADO,KAAAP,GAArC+mC,SAAWhnC,KAA0BQ,GAA1BR,OAAOsqC,KAAmB9pC,GAAnB8pC,YACvDh/B,KAAAlM,GAAA,EAAqBkrC,IAArB,CAAA,GAAK9Q,KAALluB,GAAA,CAAA,GAAWwpB,KAAXxpB,GAAA,CAAA;AACA,cAAA,CAAK2E,GAAAA,IAAIE,MAAMnQ,EAAAA;AAEb,mBAAO0/C,GAAM/uC,MAAO,CAAE,eAAe6oB,IAAM1E,IAAQ,WAAA,GAAe90B,EAAAA;AAEpE,cAKIk4D,IALA42E,KAAapvF,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,WAAA,CAAA,KAAiB7kB,OAAAA,GAAAA,GAAAA,EAAAA;AACvEA,UAAAA,GAAAA,IAAIE,MAAM2+H,EAAAA,MAEbA,KAAa7+H,OAAAA,GAAAA,GAAAA,EAAAA;AAGf,cAAA5Q,KAAuB0tB,GAAA,EAAA/sB,EAAAA,EAAK,KAALA,EAAAA,GAAvBkG,KAAA4mB,GAAA,EAAAztB,EAAA,GAAU0vI,KAAV1gI,GAAA,EAAAnI,EAAA,EAAA,KAAAA,IAAA,CAAA;AAUA,iBATA/G,GAAA,EAAA4vI,EAAAA,EAAS,KAATA,IAAkB,SAAChP,IAAAA;AACjB,gBAAIiP,KAAchvI,GAAM2nB,MAAM,CAACo4G,EAAAA,CAAAA;AAC1B+O,YAAAA,GAAW9iI,IAAI+zH,EAAAA,KAER9vH,GAAAA,IAAIE,MAAM6+H,EAAAA,MADpB92E,KAAS42E,GAAWn+H,MAAM,CAACovH,IAAU,OAAA,GAAUiP,EAAAA;UAAAA,CAAAA,GAM5CtvF,GAAM/uC,MAAM,CAAC,eAAe6oB,IAAM1E,IAAQ,WAAA,GAAcojC,EAAAA;QAAAA,CAAAA,GA3BnE5sD,GAAA,EAAAzL,IA6BGovC,GAAAA,uCAAwC,SAACyQ,IAADz/C,IAAA;AAAgD,cAADO,KAAAP,GAArC+mC,SAAWhnC,KAA0BQ,GAA1BR,OAAOsqC,KAAmB9pC,GAAnB8pC,YACnEh/B,KAAAlM,GAAA,EAAqBkrC,IAArB,CAAA,GAAK9Q,KAALluB,GAAA,CAAA,GAAWwpB,KAAXxpB,GAAA,CAAA;AACA,iBAAOo0C,GAAM/uC,MAAM,CAAC,eAAe6oB,IAAM1E,IAAQ,iBAAA,GAAoB90B,EAAAA;QAAAA,CAAAA,GA/BzEsL,GAAA,EAAAzL,IAiCGqvC,GAAAA,+BAAgC,SAACwQ,IAADz/C,IAAA;AAAsD,cAADO,KAAAP,GAA3C+mC,SAAWhnC,KAAgCQ,GAAhCR,OAAOsqC,KAAyB9pC,GAAzB8pC,YAAYhrC,KAAakB,GAAblB,MACvEP,KAAAK,GAAA,EAAqBkrC,IAArB,CAAA,GAAK9Q,KAALz6B,GAAA,CAAA,GAAW+1B,KAAX/1B,GAAA,CAAA;AACA,iBAAO2gD,GAAM/uC,MAAO,CAAE,eAAe6oB,IAAM1E,IAAQ,iBAAiBx1B,EAAAA,GAAQU,EAAAA;QAAAA,CAAAA,GAnChFsL,GAAA,EAAAzL,IAqCGsvC,GAAAA,+BAAgC,SAACuQ,IAADz/C,IAAA;AAAyE,cAADO,KAAAP,GAA9D+mC,SAAW1nC,KAAmDkB,GAAnDlB,MAAMgrC,KAA6C9pC,GAA7C8pC,YAAY0F,KAAiCxvC,GAAjCwvC,aAAaC,KAAoBzvC,GAApByvC,aACnFnjB,KAAA1tB,GAAA,EAAqBkrC,IAArB,CAAA,GAAK9Q,KAAL1M,GAAA,CAAA,GAAWgI,KAAXhI,GAAA,CAAA;AACA,iBAAO4yB,GAAM/uC,MAAO,CAAE,YAAY6oB,IAAM1E,IAAQkb,IAAaC,IAAa,eAAA,GAAmB3wC,EAAAA;QAAAA,CAAAA,GAvCjGgM,GAAA,EAAAzL,IAyCGuvC,GAAAA,6BAA8B,SAACsQ,IAADz/C,IAAA;AAAgD,cAADO,KAAAP,GAArC+mC,SAAWhnC,KAA0BQ,GAA1BR,OAAOsqC,KAAmB9pC,GAAnB8pC,YACzDh/B,KAAAlM,GAAA,EAAqBkrC,IAArB,CAAA,GAAK9Q,KAALluB,GAAA,CAAA,GAAWwpB,KAAXxpB,GAAA,CAAA;AACA,iBAAOo0C,GAAM/uC,MAAO,CAAE,eAAe6oB,IAAM1E,IAAQ,oBAAA,GAAwB90B,EAAAA;QAAAA,CAAAA,GA3C/EsL,GAAA,EAAAzL,IA6CGwvC,GAAAA,8BAA+B,SAACqQ,IAADz/C,IAAA;AAAkD,cAADO,KAAAP,GAAvC+mC,SAAWhnC,KAA4BQ,GAA5BR,OAAOw5B,KAAqBh5B,GAArBg5B,MAAM1E,KAAet0B,GAAfs0B;AAChE,iBAAO4qB,GAAM/uC,MAAO,CAAE,eAAe6oB,IAAM1E,IAAQ,qBAAA,GAAyB90B,EAAAA;QAAAA,CAAAA,GA9ChFsL,GAAA,EAAAzL,IAgDGyvC,GAAAA,8BAA+B,SAACoQ,IAADz/C,IAAA;AAA0D,cAADO,KAAAP,GAA/C+mC,SAAW+E,KAAoCvrC,GAApCurC,QAAQD,KAA4BtrC,GAA5BsrC,WAAWxrC,KAAiBE,GAAjBF,KAAKiN,KAAY/M,GAAZ+M,KACrEisB,KAAOsS,KAAY,CAAEA,IAAW,wBAAwBC,IAAQzrC,EAAAA,IAAQ,CAAE,wBAAwByrC,IAAQzrC,EAAAA;AAChH,iBAAOo/C,GAAM/uC,MAAM6oB,IAAMjsB,EAAAA;QAAAA,CAAAA,GAlD7BjC,GAAA,EAAAzL,IAoDG0vC,GAAAA,iCAAkC,SAACmQ,IAADz/C,IAAA;AAA8D,cAADO,KAAAP,GAAnD+mC,SAAWxN,KAAwCh5B,GAAxCg5B,MAAM1E,KAAkCt0B,GAAlCs0B,QAAQwb,KAA0B9vC,GAA1B8vC,kBAChE7gB,KAAS,CAAA;AAEb,cADAA,GAAO/Z,KAAK,gCAAA,GACR46B,GAAiB2+F;AAEnB,mBAAOvvF,GAAM/uC,MAAM,CAAC,eAAe6oB,IAAM1E,IAAQ,QAAA,GAAWxqB,OAAAA,GAAAA,MAAAA,EAAOmlB,EAAAA,CAAAA;AAErE,cAAI6gB,GAAiBo+F,uBAAuBp+F,GAAiBo+F,oBAAoBzqI,SAAS,GAAG;AAE3F,gBAAQyqI,KAAwBp+F,GAAxBo+F;AACR,mBAAOhvF,GAAM7uC,SAAS,CAAC,eAAe2oB,IAAM1E,IAAQ,WAAA,GAAcxqB,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,GAAK,SAAA4kI,IAAAA;AAC5E,qBAAOxqG,GAAA,EAAAgqG,EAAAA,EAAmB,KAAnBA,IAA2B,SAACS,IAAWC,IAAAA;AAC5C,uBAAOD,GAAUx+H,MAAM,CAACy+H,IAAmB,QAAA,GAAW9kI,OAAAA,GAAAA,MAAAA,EAAOmlB,EAAAA,CAAAA;cAAAA,GAC5Dy/G,EAAAA;YAAAA,CAAAA;UAAAA;AAIP,iBADArgH,QAAQ6T,KAAK,oDAAA,GACNgd;QAAAA,CAAAA,GArEXp0C,GAAA,EAAAzL,IAuEG2vC,GAAAA,mCAAoC,SAACkQ,IAADz/C,IAAA;AAA2C,cAADO,KAAAP,GAAhC+mC,SAAWxN,KAAqBh5B,GAArBg5B,MAAM1E,KAAet0B,GAAfs0B,QACxDyX,KAAmBmT,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,WAAA,CAAA;AACnE,cAAA,CAAK7kB,GAAAA,IAAIE,MAAMo8B,EAAAA;AACb,mBAAOmT,GAAM/uC,MAAM,CAAC,eAAe6oB,IAAM1E,IAAQ,QAAA,GAAWxqB,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,CAAA;AAErE,cAAAvL,KAAuBguB,GAAA,EAAAwf,EAAAA,EAAgB,KAAhBA,EAAAA,GAAvBzrC,KAAAgsB,GAAA,EAAA/tB,EAAA,GAAUgwI,KAAV1gI,GAAA,EAAAvN,EAAA,EAAA,KAAAA,IAAA,CAAA;AACA,iBAAKiuI,KAGErvF,GAAM7uC,SAAS,CAAC,eAAe2oB,IAAM1E,IAAQ,WAAA,GAAcxqB,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,GAAK,SAAA+kI,IAAAA;AAC5E,mBAAO3qG,GAAA,EAAAqqG,EAAAA,EAAS,KAATA,IAAiB,SAACI,IAAWnlF,IAAAA;AAClC,qBAAOmlF,GAAUx+H,MAAM,CAACq5C,IAAM,QAAA,GAAW1/C,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,CAAA;YAAA,GAC/C+kI,EAAAA;UAAAA,CAAAA,IALI3vF;QAAAA,CAAAA,GA9Ebp0C,GAAA,EAAAzL,IAsFG4vC,GAAAA,0BAA2B,SAACiQ,IAADz/C,IAAA;AAAwC,cAAnBqqC,KAAkBrqC,GAA7B+mC,QAAWsD,YAC/CzqC,KAAAT,GAAA,EAAqBkrC,IAArB,CAAA,GAAK9Q,KAAL35B,GAAA,CAAA,GAAWi1B,KAAXj1B,GAAA,CAAA,GACM0sC,KAAmBmT,GAAM/3B,MAAM,CAAC,eAAe6R,IAAM1E,IAAQ,WAAA,CAAA;AACnE,iBAAKyX,KAGAt8B,GAAAA,IAAIE,MAAMo8B,EAAAA,IAGRmT,GAAM/uC,MAAM,CAAC,eAAe6oB,IAAM1E,IAAQ,WAAA,GAAc7kB,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA,IAFtDyvC,GAAM/uC,MAAM,CAAC,eAAe6oB,IAAM1E,IAAQ,WAAA,GAAc,EAAA,IAHxD4qB;QAAAA,CAAAA,GA1Fb7/C;MAAA,GAAA,SAAAkB,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA;AAAA,YAAAJ,IAAAL,KAAAgB,GAAA,EAAA,GAAA8K,KAAA9K,GAAA,EAAAhB,EAAA,GAAAT,KAAAyB,GAAA,EAAA,GAAAssB,KAAAtsB,GAAA,EAAAzB,EAAA,GAAA+B,KAAAN,GAAA,CAAA,GAAApB,KAAAoB,GAAA,GAAA,GCZM8uF,KAAUmxB,GAAAA,GAAAA,GAEV6uB,KAAa,CAAA;AAEnB,QAAAhkI,GAAA,EAAAzL,KAAAitB,GAAA,EAAAwiE,EAAAA,EAAO,KAAPA,EAAAA,CAAAA,EAAO,KAAPzvF,IAAwB,SAAUS,IAAAA;AAChC,cAAY,iBAARA,IAAJ;AASA,gBAAIivI,KAAMjgD,GAAQhvF,EAAAA;AAClBgvI,YAAAA,GAAWxgH,OAAAA,GAAAA,CAAAA,EAAmBxuB,EAAAA,CAAAA,IAAQivI,GAAIvhG,UAAUuhG,GAAIvhG,UAAUuhG;UAAAA;QAAAA,CAAAA,GAGpED,GAAWE,aAAaA,GAAAA,SAETF,GAAAA,UAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YAAAA,KAAAA,CAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,kBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,aAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,qBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,kBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,cAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,gBAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,aAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,YAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,cAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,CAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,aAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,WAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,YAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,WAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,CAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,QAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,SAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,UAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA,GAAAA,GAAAA,EAAAA,IAAAA,UAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,GAAAA,GAAAA,GAAAA,GAAAA,IAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCfXG,KAAoB,SAA2B/mF,IAAAA;AACjD,iBAAO,qBAAqBh7C,QAAQg7C,EAAAA,IAAAA;QAAS,GAG3CgnF,KAAsB,SAA6BhnF,IAAAA;AACrD,iBAAO,oBAAoBr3B,KAAKq3B,EAAAA;QAAAA;AAI3B,iBAASinF,GAA2B3gH,IAAAA;AACzC,cAAIgQ,IAEAyS,KAAO1pC,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA,GAC3EoqD,KAAS1gB,GAAK0gB,QAEdrhC,KAAQ/oB,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA;AAM7C,iBAJmB,YAAA,OAARinB,OACTA,KAAMA,GAAIxnB,SAAAA,IAGO,YAAA,OAARwnB,MAAqBA,GAAI/qB,UAI/BkuD,KAIDrhC,KACKlH,KAAKkH,MAAM9B,EAAAA,IAOb2V,GAAA,EAAqB3F,KAAW+F,GAAA,EAAmB/V,EAAAA,CAAAA,EAAM9vB,KAAK8/B,IAAU,SAAU0pB,IAAAA;AACvF,gBAAIzpB,IAAW4S;AAEf,gBAAI69F,GAAoBhnF,EAAAA;AACtB,qBAAOA;AAGT,gBAAI+mF,GAAkB/mF,EAAAA,KAAoB,aAAXyJ;AAC7B,qBAAOzJ;AAGT,gBAAIknF,KAAU,IAAIC;AAUlB,mBARclrG,GAAA,EAAqB1F,KAAY0F,GAAA,EAAqBkN,KAAYhmC,GAAA,EAAY+jI,GAAQE,OAAOpnF,EAAAA,CAAAA,CAAAA,EAAQxpD,KAAK2yC,IAAW,SAAUk+F,IAAAA;AAC3I,kBAAI99F;AAEJ,qBAAOjN,GAAA,EAAuBiN,KAAY,IAAItyB,OAAOowH,GAAKvoI,SAAS,EAAA,EAAI6qC,YAAAA,CAAAA,CAAAA,EAAgBnzC,KAAK+yC,IAAAA,EAAY;YAAA,CAAA,CAAA,EACtG/yC,KAAK+/B,IAAW,SAAU+wG,IAAAA;AAC5B,qBAAO,IAAIrwH,OAAOqwH,EAAAA;YAAAA,CAAAA,EACjBjqH,KAAK,EAAA;UAAA,CAAA,EAGPA,KAAK,EAAA,IArCCiJ;QAAAA;AAuCI,iBAASihH,GAAQ79G,IAAAA;AAC9B,cAAIpyB,KAAQoyB,GAAOpyB;AAEnB,iBAAIiB,MAAM4I,QAAQ7J,EAAAA,IAWpB,SAAqB8xC,IAAAA;AACnB,gBAAIxxC,KAAMwxC,GAAMxxC,KACZN,KAAQ8xC,GAAM9xC,OACdk5C,KAAQpH,GAAMoH,OACdg3F,KAAUp+F,GAAMo+F,SAChB/9E,KAASrgB,GAAMqgB,QAEfg+E,KAAe,SAAsBnhH,IAAAA;AACvC,qBAAO2gH,GAA2B3gH,IAAK,EACrCmjC,QAAQA,GAAAA,CAAAA;YAAAA;AAIZ,gBAAc,aAAVjZ;AACF,qBAAOvU,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAO,SAAUuN,IAAAA;AACvD,uBAAO4iI,GAAa5iI,EAAAA;cAAAA,CAAAA,EACnBwY,KAAK,GAAA;AAGV,gBAAc,YAAVmzB;AACF,qBAAO,IAAIv5B,OAAOglB,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAO,SAAUuN,IAAAA;AAClE,uBAAO4iI,GAAa5iI,EAAAA;cAAAA,CAAAA,EACnBwY,KAAK,GAAA,CAAA;AAGV,gBAAc,aAAVmzB;AACF,qBAAOvU,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAO,SAAUuN,IAAAA;AACvD,uBAAO4iI,GAAa5iI,EAAAA;cAAAA,CAAAA,EACnBwS,OAAO,SAAU7L,IAAM81C,IAAAA;AACxB,oBAAI7W,IAGEN,IAAWG;AADjB,uBAAA,CAAK9+B,MAAQg8H,KAGJpjH,GAAA,EAAwB+lB,KAAY/lB,GAAA,EAAwBkmB,KAAY,GAAGrzB,OAAOzL,MAAQ,IAAI,GAAA,CAAA,EAAMhV,KAAK8zC,IAAW1yC,IAAK,GAAA,CAAA,EAAMpB,KAAK2zC,IAAWmX,EAAAA,IAGjJl9B,GAAA,EAAwBqmB,KAAY,GAAGxzB,OAAOzL,IAAM,GAAA,CAAA,EAAMhV,KAAKi0C,IAAW6W,EAAAA;cAAAA,GAChF,EAAA;AAGL,gBAAc,WAAV9Q,IAAkB;AACpB,kBAAIpiC,KAAQo5H,KAAU,IAAIvwH,OAAOrf,IAAK,GAAA,IAAO;AAC7C,qBAAOqkC,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAO,SAAUuN,IAAAA;AACvD,uBAAO4iI,GAAa5iI,EAAAA;cAAAA,CAAAA,EACnBwY,KAAKjP,EAAAA;YAAAA;AAGV,gBAAc,qBAAVoiC,IAA4B;AAC9B,kBAAIk3F,KAASF,KAAU,GAAGvwH,OAAOrf,IAAK,GAAA,IAAO;AAE7C,qBAAOqkC,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAO,SAAUuN,IAAAA;AACvD,uBAAO4iI,GAAa5iI,EAAAA;cAAAA,CAAAA,EACnBwY,KAAK,IAAIpG,OAAOywH,EAAAA,CAAAA;YAAAA;AAGrB,gBAAc,oBAAVl3F,IAA2B;AAC7B,kBAAIm3F,KAAUH,KAAU,GAAGvwH,OAAOrf,IAAK,GAAA,IAAO;AAE9C,qBAAOqkC,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAO,SAAUuN,IAAAA;AACvD,uBAAO4iI,GAAa5iI,EAAAA;cAAAA,CAAAA,EACnBwY,KAAK,IAAIpG,OAAO0wH,EAAAA,CAAAA;YAAAA;AAGrB;UAAA,EA1EqBj+G,EAAAA,IAGE,aAAnBjzB,GAAA,EAAQa,EAAAA,IA0Ed,SAAsBwyC,IAAAA;AACpB,gBAAIlyC,KAAMkyC,GAAMlyC,KACZN,KAAQwyC,GAAMxyC,OACdk5C,KAAQ1G,GAAM0G,OACdg3F,KAAU19F,GAAM09F,SAChB/9E,KAAS3f,GAAM2f,QAEfg+E,KAAe,SAAsBnhH,IAAAA;AACvC,qBAAO2gH,GAA2B3gH,IAAK,EACrCmjC,QAAQA,GAAAA,CAAAA;YAAAA,GAIR48E,KAAYnqG,GAAA,EAAa5kC,EAAAA;AAE7B,gBAAc,aAAVk5C;AACF,qBAAO61F,GAAUhvH,OAAO,SAAU7L,IAAM81C,IAAAA;AACtC,oBAAIsmF,IAAWC,IAAWC,IAEtBjjI,KAAM4iI,GAAanwI,GAAMgqD,EAAAA,CAAAA,GACzBymF,KAAaP,KAAU,MAAM,KAC7B7vF,KAASnsC,KAAO,GAAGyL,OAAOzL,IAAM,GAAA,IAAO;AAC3C,uBAAO4Y,GAAA,EAAwBwjH,KAAYxjH,GAAA,EAAwByjH,KAAYzjH,GAAA,EAAwB0jH,KAAa,GAAG7wH,OAAO0gC,EAAAA,CAAAA,EAASnhD,KAAKsxI,IAAYxmF,EAAAA,CAAAA,EAAO9qD,KAAKqxI,IAAWE,EAAAA,CAAAA,EAAavxI,KAAKoxI,IAAW/iI,EAAAA;cAAAA,GAC3M,EAAA;AAGL,gBAAc,YAAV2rC;AACF,qBAAO61F,GAAUhvH,OAAO,SAAU7L,IAAM81C,IAAAA;AACtC,oBAAI0mF,IAAYC,IAAYC,IAExBrjI,KAAM4iI,GAAanwI,GAAMgqD,EAAAA,CAAAA,GACzBymF,KAAaP,KAAU,MAAM,KAC7B7vF,KAASnsC,KAAO,GAAGyL,OAAOzL,IAAM,GAAA,IAAO;AAC3C,uBAAO4Y,GAAA,EAAwB4jH,KAAa5jH,GAAA,EAAwB6jH,KAAa7jH,GAAA,EAAwB8jH,KAAa,GAAGjxH,OAAO0gC,EAAAA,CAAAA,EAASnhD,KAAK0xI,IAAY5mF,EAAAA,CAAAA,EAAO9qD,KAAKyxI,IAAYF,EAAAA,CAAAA,EAAavxI,KAAKwxI,IAAYnjI,EAAAA;cAAAA,GAC/M,EAAA;AAGL,gBAAc,aAAV2rC,MAAsBg3F;AACxB,qBAAOnB,GAAUhvH,OAAO,SAAU7L,IAAM81C,IAAAA;AACtC,oBAAI6mF,IAAYC,IAEZvjI,KAAM4iI,GAAanwI,GAAMgqD,EAAAA,CAAAA,GACzB3J,KAASnsC,KAAO,GAAGyL,OAAOzL,IAAM,GAAA,IAAO;AAC3C,uBAAO4Y,GAAA,EAAwB+jH,KAAa/jH,GAAA,EAAwBgkH,KAAa,GAAGnxH,OAAO0gC,EAAAA,CAAAA,EAASnhD,KAAK4xI,IAAY9mF,IAAM,GAAA,CAAA,EAAM9qD,KAAK2xI,IAAYtjI,EAAAA;cAAAA,GACjJ,EAAA;AAGL,gBAAc,aAAV2rC;AAEF,qBAAO61F,GAAUhvH,OAAO,SAAU7L,IAAM81C,IAAAA;AACtC,oBAAI+mF,IAAYC,IAEZzjI,KAAM4iI,GAAanwI,GAAMgqD,EAAAA,CAAAA,GACzB3J,KAASnsC,KAAO,GAAGyL,OAAOzL,IAAM,GAAA,IAAO,IAAIyL,OAAOrf,IAAK,GAAA;AAC3D,uBAAOwsB,GAAA,EAAwBikH,KAAajkH,GAAA,EAAwBkkH,KAAa,GAAGrxH,OAAO0gC,EAAAA,CAAAA,EAASnhD,KAAK8xI,IAAYhnF,IAAM,GAAA,CAAA,EAAM9qD,KAAK6xI,IAAYxjI,EAAAA;cAAAA,GACjJ,EAAA;AAGL,gBAAc,WAAV2rC;AACF,qBAAO61F,GAAUhvH,OAAO,SAAU7L,IAAM81C,IAAAA;AACtC,oBAAIinF,IAAYC,IAAYC,IAAYC,IAEpC7jI,KAAM4iI,GAAanwI,GAAMgqD,EAAAA,CAAAA,GACzB3J,KAASnsC,KAAO4Y,GAAA,EAAwBmkH,KAAa,GAAGtxH,OAAOzL,EAAAA,CAAAA,EAAOhV,KAAK+xI,IAAYf,KAAU,MAAM,GAAA,IAAO,IAC9GzvH,KAAYyvH,KAAU,MAAM;AAChC,uBAAOpjH,GAAA,EAAwBokH,KAAapkH,GAAA,EAAwBqkH,KAAarkH,GAAA,EAAwBskH,KAAa,GAAGzxH,OAAO0gC,EAAAA,CAAAA,EAASnhD,KAAKkyI,IAAYpnF,EAAAA,CAAAA,EAAO9qD,KAAKiyI,IAAY1wH,EAAAA,CAAAA,EAAYvhB,KAAKgyI,IAAY3jI,EAAAA;cAAAA,GAC9M,EAAA;AAGL;UAAA,EA9IsB6kB,EAAAA,IAiJxB,SAAyB0vC,IAAAA;AACvB,gBAoBMuvE,IApBF/wI,KAAMwhE,GAAMxhE,KACZN,KAAQ8hE,GAAM9hE,OACdk5C,KAAQ4oB,GAAM5oB,OACdiZ,KAAS2P,GAAM3P,QAEfg+E,KAAe,SAAsBnhH,IAAAA;AACvC,qBAAO2gH,GAA2B3gH,IAAK,EACrCmjC,QAAQA,GAAAA,CAAAA;YAAAA;AAIZ,gBAAc,aAAVjZ;AACF,qBAAOi3F,GAAanwI,EAAAA;AAGtB,gBAAc,YAAVk5C;AACF,qBAAO,IAAIv5B,OAAOwwH,GAAanwI,EAAAA,CAAAA;AAGjC,gBAAc,aAAVk5C;AAGF,qBAAOpsB,GAAA,EAAwBukH,KAAa,IAAI1xH,OAAOrf,IAAK,GAAA,CAAA,EAAMpB,KAAKmyI,IAAYlB,GAAanwI,EAAAA,CAAAA;AAGlG,gBAAc,WAAVk5C;AACF,qBAAOi3F,GAAanwI,EAAAA;AAGtB,gBAAc,iBAAVk5C;AACF,qBAAOi3F,GAAanwI,IAAO,CAAA,GAAA,IAAI;AAGjC;UAAA,EAhLuBoyB,EAAAA;QAAAA;AChFzB,YAIegT,KAJa,SAA+BksG,IAAUhiD,IAAAA;AACnEA,UAAAA,GAAQv5B,OAAOu7E;QAAAA,GCsBNjsG,KAAO,EAChBksG,cAAcA,IACdC,oBAAoBA,GAAAA;AAIP,iBAASlsG,GAAKmsG,IAAAA;AAC3B,iBAAOC,EAAMhiI,MAAM5J,MAAMiC,SAAAA;QAAAA;AAG3B,iBAAS2pI,IAAAA;AAsJP,kBArJAA,IAAQtyI,GAAA,EAAgC2tB,GAAA,EAAoB6a,KAAK,SAAS+pG,GAAQp8G,IAAAA;AAChF,gBAAI+5D,IACAp8D,IACAzF,IACAlhB,IACAqlI,IACAC,KAAQ9pI;AAEZ,mBAAOglB,GAAA,EAAoBiO,KAAK,SAAkBgY,IAAAA;AAChD;AACE,wBAAQA,GAAU9+B,OAAO8+B,GAAUntC,MAAAA;kBACjC,KAAK;AA6BH,wBA5BAypF,KAAUuiD,GAAM5tI,SAAS,KAAA,WAAK4tI,GAAM,CAAA,IAAmBA,GAAM,CAAA,IAAK,CAAA,GAE7C,aAAjB1yI,GAAA,EAAQo2B,EAAAA,MAEVA,MADA+5D,KAAU/5D,IACIA,MAGhB+5D,GAAQ55B,UAAU45B,GAAQ55B,WAAW,CAAA,GAIrCrwB,GAAKmsG,mBAAmBliD,EAAAA,GAIpBA,GAAQ55B,WACV9wB,GAAA,EAAa0qD,GAAQ55B,OAAAA,EAASrlD,QAAQ,SAAUyhI,IAAAA;AAC9C,0BAAI9xI,KAAQsvF,GAAQ55B,QAAQo8E,EAAAA;AAEP,kCAAA,OAAV9xI,OACTsvF,GAAQ55B,QAAQo8E,EAAAA,IAAc9xI,GAAMivB,QAAQ,QAAQ,GAAA;oBAAA,CAAA,GAAA,CAQrDqgE,GAAQjnD,oBAAoB;AAC/B2K,sBAAAA,GAAUntC,OAAO;AACjB;oBAAA;AAIF,2BADAmtC,GAAUntC,OAAO,GACVypF,GAAQjnD,mBAAmBinD,EAAAA;kBAEpC,KAAK;AAGH,wBAFAt8C,GAAU++F,KAAK/+F,GAAUg/F,MAErBh/F,GAAU++F,IAAI;AAChB/+F,sBAAAA,GAAUntC,OAAO;AACjB;oBAAA;AAGFmtC,oBAAAA,GAAU++F,KAAKziD;kBAEjB,KAAK;AACHA,oBAAAA,KAAUt8C,GAAU++F;kBAEtB,KAAK;AAaH,2BAVA7+G,KAAco8D,GAAQ55B,QAAQ,cAAA,KAAmB45B,GAAQ55B,QAAQ,cAAA,GAE7D,wBAAwBrkC,KAAK6B,EAAAA,KAAgBo8D,GAAQv5B,gBAAgBjxB,GAAA,aAAA,OAChEwqD,GAAQ55B,QAAQ,cAAA,GAAA,OAChB45B,GAAQ55B,QAAQ,cAAA,IAIzB1iB,GAAU9+B,OAAO,IACjB8+B,GAAUntC,OAAO,KACTypF,GAAQ2iD,aAAalqG,OAAOunD,GAAQ/5D,KAAK+5D,EAAAA;kBAEnD,KAAK;AAGH,2BAFA7hE,KAAMulB,GAAUg/F,MAChBh/F,GAAUntC,OAAO,IACVw/B,GAAKksG,aAAa9jH,IAAK8H,IAAK+5D,EAAAA;kBAErC,KAAK;AAGH,wBAFA7hE,KAAMulB,GAAUg/F,MAAAA,CAEX1iD,GAAQhnD,qBAAqB;AAChC0K,sBAAAA,GAAUntC,OAAO;AACjB;oBAAA;AAIF,2BADAmtC,GAAUntC,OAAO,IACVypF,GAAQhnD,oBAAoB7a,EAAAA;kBAErC,KAAK;AAGH,wBAFAulB,GAAUk/F,KAAKl/F,GAAUg/F,MAErBh/F,GAAUk/F,IAAI;AAChBl/F,sBAAAA,GAAUntC,OAAO;AACjB;oBAAA;AAGFmtC,oBAAAA,GAAUk/F,KAAKzkH;kBAEjB,KAAK;AACHA,oBAAAA,KAAMulB,GAAUk/F;kBAElB,KAAK;AACHl/F,oBAAAA,GAAUntC,OAAO;AACjB;kBAEF,KAAK;AAIH,wBAHAmtC,GAAU9+B,OAAO,IACjB8+B,GAAUm/F,KAAKn/F,GAAiB,MAAE,EAAA,GAE9BvlB,IAAK;AACPulB,sBAAAA,GAAUntC,OAAO;AACjB;oBAAA;AAGF,0BAAMmtC,GAAUm/F;kBAElB,KAAK;AAKH,2BAJA5lI,KAAQ,IAAIC,MAAMihB,GAAImc,cAAc,sBAAsBjqB,OAAO8N,GAAIkc,MAAAA,CAAAA,GAC/DA,SAASlc,GAAIkc,QACnBp9B,GAAM2zH,aAAazyG,GAAIkc,QACvBp9B,GAAM6lI,gBAAgBp/F,GAAUm/F,IAC1B5lI;kBAER,KAAK;AACH,wBAAIkhB,GAAIspC,IAAI;AACV/jB,sBAAAA,GAAUntC,OAAO;AACjB;oBAAA;AAOF,2BAJA+rI,KAAS,IAAIplI,MAAMihB,GAAImc,cAAc,sBAAsBjqB,OAAO8N,GAAIkc,MAAAA,CAAAA,GAC/DA,SAASlc,GAAIkc,QACpBioG,GAAO1R,aAAazyG,GAAIkc,QACxBioG,GAAO/6E,WAAWppC,IACZmkH;kBAER,KAAK;AACH,2BAAO5+F,GAAUq/F,OAAO,UAAU5kH,EAAAA;kBAEpC,KAAK;kBACL,KAAK;AACH,2BAAOulB,GAAUzO,KAAAA;gBAAAA;YAAAA,GAGtBotG,IAAS,MAAM,CAAC,CAAC,IAAI,EAAA,CAAA,CAAA;UAAA,CAAA,CAAA,GAEbjiI,MAAM5J,MAAMiC,SAAAA;QAAAA;AAGpB,YAAIuqI,KAAuB,WAAA;AAChC,cAAIp/G,KAAcnrB,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK;AACtF,iBAAO,yBAAyBspB,KAAK6B,EAAAA;QAAAA;AAGvC,iBAASq/G,GAAUx8E,IAAM7iC,IAAAA;AACvB,iBAAIA,OAA4D,MAA5CA,GAAYxlB,QAAQ,kBAAA,KAA6BwlB,GAAYxlB,QAAQ,OAAA,IAAW,KAC3Fkc,KAAKkH,MAAMilC,EAAAA,IAGbpgC,GAAA,EAAO7B,KAAKiiC,EAAAA;QAAAA;AAId,iBAASw7E,GAAaiB,IAAQj9G,IAAAA;AACnC,cAAIkc,KAAO1pC,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA,GAC3E0qI,KAAgBhhG,GAAK2zF,UACrBA,KAAAA,WAAWqN,MAAmCA,IAE9ChlH,KAAM,EACRspC,IAAIy7E,GAAOz7E,IACXxhC,KAAKi9G,GAAOj9G,OAAOA,IACnBoU,QAAQ6oG,GAAO7oG,QACfC,YAAY4oG,GAAO5oG,YACnB8rB,SAASg9E,GAAiBF,GAAO98E,OAAAA,EAAAA,GAE/BxiC,KAAczF,GAAIioC,QAAQ,cAAA,GAC1Bi9E,KAAUvN,MAAYkN,GAAqBp/G,EAAAA,GAC3C0/G,KAAUD,KAAUH,GAAO1oG,OAAO0oG,GAAOK,QAAQL,GAAO19F;AAC5D,iBAAO89F,GAAQ1zI,KAAKszI,EAAAA,EAAQ/pG,KAAK,SAAUstB,IAAAA;AAIzC,gBAHAtoC,GAAIqc,OAAOisB,IACXtoC,GAAIwH,OAAO8gC,IAEP48E;AACF,kBAAA;AACE,oBAAI3jI,KAAMujI,GAAUx8E,IAAM7iC,EAAAA;AAC1BzF,gBAAAA,GAAIsoC,OAAO/mD,IACXye,GAAIze,MAAMA;cAAAA,SACHjO,IAAP;AACA0sB,gBAAAA,GAAIqpC,aAAa/1D;cAAAA;AAIrB,mBAAO0sB;UAAAA,CAAAA;QAAAA;AAIX,iBAASqlH,GAAqB9yI,IAAAA;AAG5B,iBAFcuL,GAAA,EAA0BvL,EAAAA,EAAOd,KAAKc,IAAO,IAAA,IAE1CA,GAAMu0B,MAAM,IAAA,IAAQv0B;QAAAA;AAQhC,iBAAS0yI,KAAAA;AACd,cAAIh9E,KAAU3tD,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA;AAClF,iBAAiD,cAAA,OAAtCiO,GAAA,EAAyB0/C,EAAAA,IAAgC,CAAA,IAC7D7pD,GAAA,EAAYmK,GAAA,EAAyB0/C,EAAAA,EAASx2D,KAAKw2D,EAAAA,CAAAA,EAAU31C,OAAO,SAAU6pH,IAAK93F,IAAAA;AACxF,gBAAIU,KAAQ9N,GAAA,EAAeoN,IAAO,CAAA,GAC9BmyF,KAASzxF,GAAM,CAAA,GACfxyC,KAAQwyC,GAAM,CAAA;AAGlB,mBADAo3F,GAAI3F,EAAAA,IAAU6O,GAAqB9yI,EAAAA,GAC5B4pI;UAAAA,GACN,CAAA,CAAA;QAAA;AAEE,iBAAS91C,GAAO9kF,IAAK+jI,IAAAA;AAM1B,iBALKA,MAAqC,eAAA,OAAdC,cAE1BD,KAAeC,YAGbD,MAAyC,kBAAzBA,GAAaE,UAAAA,EAAAA,CAC3BjkI,MAAwB,aAAjB7P,GAAA,EAAQ6P,EAAAA,KAAwC,YAAA,OAAZA,GAAI0mB,OAAAA,WAO1CoP,GAAA,QAAwB91B,cAAe81B,GAAA,SAAA,WAIvCA,GAAA,QAAwB91B,cAAe81B,GAAA,SAAA,CAAA,CAI9CqqC,YAAYS,OAAO5gE,EAAAA,KAIR,SAARA,MAAiC,aAAjB7P,GAAA,EAAQ6P,EAAAA,KAAyC,cAAA,OAAbA,GAAI2oH;QAAAA;AAGjE,iBAASub,GAAclkI,IAAK+jI,IAAAA;AAC1B,iBAAO9xI,MAAM4I,QAAQmF,EAAAA,KAAQA,GAAIsS,KAAK,SAAUpb,IAAAA;AAC9C,mBAAO4tF,GAAO5tF,IAAG6sI,EAAAA;UAAAA,CAAAA;QAAAA;AAIrB,YAAII,KAAmB,EACrB79E,MAAM,KACN89E,gBAAgB,OAChBC,eAAe,IAAA,GAEbC,KAAa,EACfC,KAAK,KACLC,KAAK,OACLC,KAAK,OACLC,OAAO,IAAA;AAUT,iBAASC,GAAerzI,IAAKo2B,IAAAA;AAC3B,cAAIk9G,KAAe7rI,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,KAAmBA,UAAU,CAAA,GAC9E8rI,KAAmBn9G,GAAMm9G,kBACzBC,KAAkBp9G,GAAMo9G,iBACxBC,KAAsBr9G,GAAMq9G,qBAC5Bv+F,KAAW9e,GAAM8e,UAEjBx1C,KAA2B,aAAnBb,GAAA,EAAQu3B,EAAAA,KAAwBz1B,MAAM4I,QAAQ6sB,EAAAA,IAAuBA,KAAdA,GAAM12B,OACrEg0I,KAAWJ,KAAe,SAAU3tI,IAAAA;AACtC,mBAAOA,GAAEuB,SAAAA;UAAAA,IACP,SAAUvB,IAAAA;AACZ,mBAAOkvB,mBAAmBlvB,EAAAA;UAAAA,GAExBguI,KAAaD,GAAS1zI,EAAAA;AAE1B,cAAA,WAAWN,MAAyB8zI;AAClC,mBAAO,CAAC,CAACG,IAAY,EAAA,CAAA;AAIvB,cAAIngD,GAAO9zF,EAAAA,KAAUkzI,GAAclzI,EAAAA;AACjC,mBAAO,CAAC,CAACi0I,IAAYj0I,EAAAA,CAAAA;AAIvB,cAAI+zI;AACF,mBAAOG,GAAoC5zI,IAAKN,IAAO4zI,IAAcG,EAAAA;AAIvE,cAAIv+F,IAAU;AACZ,gBAAI,CAACr2C,GAAA,EAAQq2C,GAAS0D,KAAAA,GAAQ/5C,GAAA,EAAQq2C,GAAS06F,OAAAA,GAAU/wI,GAAA,EAAQq2C,GAAS2+F,aAAAA,CAAAA,EAAgB7yH,KAAK,SAAUtb,IAAAA;AACvG,qBAAgB,gBAATA;YAAAA,CAAAA,GACL;AACF,kBAAIkzC,KAAQ1D,GAAS0D,OACjBg3F,KAAU16F,GAAS06F,SACnBiE,KAAgB3+F,GAAS2+F;AAC7B,qBAAOD,GAAoC5zI,IAAKN,IAAO4zI,IAAc,EACnE16F,OAAOA,IACPg3F,SAASA,IACTiE,eAAeA,GAAAA,CAAAA;YAAAA;AAInB,gBAAI3+F,GAAStiB,aAAa;AACxB,kBAA6B,uBAAzBsiB,GAAStiB,aAAoC;AAE/C,oBAAI3oB,KAAwB,YAAA,OAAVvK,KAAqBA,KAAQiG,GAAA,EAAgBjG,EAAAA;AAC/D,uBAAO,CAAC,CAACi0I,IAAYD,GAASzpI,EAAAA,CAAAA,CAAAA;cAAAA;AAGhC,qBAAO,CAAC,CAAC0pI,IAAYD,GAASh0I,GAAMwH,SAAAA,CAAAA,CAAAA,CAAAA;YAAAA;AAItC,mBAAuB,aAAnBrI,GAAA,EAAQa,EAAAA,IACH,CAAC,CAACi0I,IAAYD,GAASh0I,EAAAA,CAAAA,CAAAA,IAI5BiB,MAAM4I,QAAQ7J,EAAAA,KAAUA,GAAM2L,MAAM,SAAUzF,IAAAA;AAChD,qBAAsB,aAAf/G,GAAA,EAAQ+G,EAAAA;YAAAA,CAAAA,IAER,CAAC,CAAC+tI,IAAYtvG,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAOg0I,EAAAA,EAAUjuH,KAAK,GAAA,CAAA,CAAA,IAIvE,CAAC,CAACkuH,IAAYD,GAAS/tI,GAAA,EAAgBjG,EAAAA,CAAAA,CAAAA,CAAAA;UAAAA;AAKhD,iBAAuB,aAAnBb,GAAA,EAAQa,EAAAA,IACH,CAAC,CAACi0I,IAAYD,GAASh0I,EAAAA,CAAAA,CAAAA,IAI5BiB,MAAM4I,QAAQ7J,EAAAA,IACS,YAArB6zI,KAGK,CAAC,CAACI,IAAYtvG,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAOg0I,EAAAA,CAAAA,CAAAA,IAGxD,CAAC,CAACC,IAAYtvG,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAOg0I,EAAAA,EAAUjuH,KAAKutH,GAAWO,MAAoB,KAAA,CAAA,CAAA,CAAA,IAItG,CAAC,CAACI,IAAY,EAAA,CAAA;QAAA;AAGvB,iBAASC,GAAoC5zI,IAAKN,IAAO4zI,IAAcG,IAAAA;AACrE,cAAI9hG,IAsCEjT,IAUA6S,IA9CFqH,KAAQ66F,GAAoB76F,SAAS,QACrCg3F,KAAAA,WAAiB6D,GAAoB7D,UAAoC,WAAVh3F,KAAmB66F,GAAoB7D,SAEtG/9E,KAAAA,CAASyhF,OAAuBG,MAAuBA,GAAoBI,gBAAgB,WAAW,aAEtGH,KAAW,SAAkB9tI,IAAAA;AAC/B,mBAAOypI,GAA2BzpI,IAAG,EACnCisD,QAAQA,GAAAA,CAAAA;UAAAA,GAIRiiF,KAAcR,KAAe,SAAU3tI,IAAAA;AACzC,mBAAOA;UAAAA,IACL,SAAUA,IAAAA;AACZ,mBAAO0pI,GAA2B1pI,IAAG,EACnCksD,QAAQA,GAAAA,CAAAA;UAAAA;AAIZ,iBAAuB,aAAnBhzD,GAAA,EAAQa,EAAAA,IACH,CAAC,CAACo0I,GAAY9zI,EAAAA,GAAM0zI,GAASh0I,EAAAA,CAAAA,CAAAA,IAIlCiB,MAAM4I,QAAQ7J,EAAAA,IACZkwI,KAGK,CAAC,CAACkE,GAAY9zI,EAAAA,GAAMqkC,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAOg0I,EAAAA,CAAAA,CAAAA,IAG9D,CAAC,CAACI,GAAY9zI,EAAAA,GAAMqkC,GAAA,EAAqB3kC,EAAAA,EAAOd,KAAKc,IAAOg0I,EAAAA,EAAUjuH,KAAKotH,GAAiBj6F,EAAAA,CAAAA,CAAAA,CAAAA,IAIvF,iBAAVA,KAGKvU,GAAA,EAAqB3F,KAAW4F,GAAA,EAAa5kC,EAAAA,CAAAA,EAAQd,KAAK8/B,IAAU,SAAU+gG,IAAAA;AACnF,gBAAI9gG;AAEJ,mBAAO,CAACm1G,GAAYtnH,GAAA,EAAwBmS,KAAY,GAAGtf,OAAOrf,IAAK,GAAA,CAAA,EAAMpB,KAAK+/B,IAAW8gG,IAAU,GAAA,CAAA,GAAOiU,GAASh0I,GAAM+/H,EAAAA,CAAAA,CAAAA;UAAAA,CAAAA,IAI7HmQ,KAGKvrG,GAAA,EAAqBkN,KAAYjN,GAAA,EAAa5kC,EAAAA,CAAAA,EAAQd,KAAK2yC,IAAW,SAAUkuF,IAAAA;AACrF,mBAAO,CAACqU,GAAYrU,EAAAA,GAAWiU,GAASh0I,GAAM+/H,EAAAA,CAAAA,CAAAA;UAAAA,CAAAA,IAI3C,CAAC,CAACqU,GAAY9zI,EAAAA,GAAMqkC,GAAA,EAAqBsN,KAAYrN,GAAA,EAAa5kC,EAAAA,CAAAA,EAAQd,KAAK+yC,IAAW,SAAU8tF,IAAAA;AACzG,gBAAIltF;AAEJ,mBAAO,CAAC/lB,GAAA,EAAwB+lB,KAAY,GAAGlzB,OAAOy0H,GAAYrU,EAAAA,GAAW,GAAA,CAAA,EAAM7gI,KAAK2zC,IAAWmhG,GAASh0I,GAAM+/H,EAAAA,CAAAA,CAAAA,CAAAA;UAAAA,CAAAA,EACjHh6G,KAAK,GAAA,CAAA,CAAA;QAAA;AAGV,iBAASiP,GAAcq/G,IAAAA;AAarB,iBAAOxvG,GAAA,EAAgBwvG,EAAAA,EAASt0H,OAAO,SAAUu0H,IAAUxyE,IAAAA;AACzD,gBAMI/0D,IANAy1D,KAAQ99B,GAAA,EAAeo9B,IAAO,CAAA,GAC9BxiE,KAAOkjE,GAAM,CAAA,GACb9rC,KAAQ8rC,GAAM,CAAA,GAGd/4D,KAAY4E,GAAA,EAA2BslI,GAAer0I,IAAMo3B,IAAAA,IAAO,CAAA;AAGvE,gBAAA;AACE,mBAAKjtB,GAAU3I,EAAAA,GAAAA,EAAOiM,KAAQtD,GAAUjJ,EAAAA,GAAK4F,QAAO;AAClD,oBAAImuI,KAAc7vG,GAAA,EAAe33B,GAAM/M,OAAO,CAAA,GAC1CM,KAAMi0I,GAAY,CAAA,GAClBv0I,KAAQu0I,GAAY,CAAA;AAExB,oBAAItzI,MAAM4I,QAAQ7J,EAAAA,GAAQ;AAExB,sBACIyzC,IADAC,KAAarlC,GAAA,EAA2BrO,EAAAA;AAG5C,sBAAA;AACE,yBAAK0zC,GAAW5yC,EAAAA,GAAAA,EAAO2yC,KAASC,GAAWlzC,EAAAA,GAAK4F,QAAO;AACrD,0BAAIF,KAAIutC,GAAOzzC;AAEf,0BAAImvE,YAAYS,OAAO1pE,EAAAA,GAAI;AACzB,4BAAI2sI,KAAO,IAAI/tG,GAAA,KAAK,CAAC5+B,EAAAA,CAAAA;AACrBouI,wBAAAA,GAASvW,OAAOz9H,IAAKuyI,EAAAA;sBAAAA;AAErByB,wBAAAA,GAASvW,OAAOz9H,IAAK4F,EAAAA;oBAAAA;kBAAAA,SAGlBgrB,IAAP;AACAwiB,oBAAAA,GAAW3yC,EAAEmwB,EAAAA;kBAAAA,UACb;AACAwiB,oBAAAA,GAAW3mB,EAAAA;kBAAAA;gBAAAA,WAEJoiD,YAAYS,OAAO5vE,EAAAA,GAAQ;AACpC,sBAAIw0I,KAAQ,IAAI1vG,GAAA,KAAK,CAAC9kC,EAAAA,CAAAA;AAEtBs0I,kBAAAA,GAASvW,OAAOz9H,IAAKk0I,EAAAA;gBAAAA;AAErBF,kBAAAA,GAASvW,OAAOz9H,IAAKN,EAAAA;cAAAA;YAAAA,SAGlBkxB,IAAP;AACAznB,cAAAA,GAAU1I,EAAEmwB,EAAAA;YAAAA,UACZ;AACAznB,cAAAA,GAAUsjB,EAAAA;YAAAA;AAGZ,mBAAOunH;UAAAA,GACN,IAAIxvG,GAAA,UAAA;QAAA;AAIF,iBAAS2vG,GAAkBx/G,IAAAA;AAOhC,cAAIy/G,KAAe9vG,GAAA,EAAa3P,EAAAA,EAAMlV,OAAO,SAAUwY,IAAQo8G,IAAAA;AAE7D,gBACIC,IADAC,KAAaxmI,GAAA,EAA2BslI,GAAegB,IAAe1/G,GAAK0/G,EAAAA,CAAAA,CAAAA;AAG/E,gBAAA;AACE,mBAAKE,GAAW/zI,EAAAA,GAAAA,EAAO8zI,KAASC,GAAWr0I,EAAAA,GAAK4F,QAAO;AACrD,oBAAI0uI,KAAepwG,GAAA,EAAekwG,GAAO50I,OAAO,CAAA,GAC5CM,KAAMw0I,GAAa,CAAA,GACnB90I,KAAQ80I,GAAa,CAAA;AAEzBv8G,gBAAAA,GAAOj4B,EAAAA,IAAON;cAAAA;YAAAA,SAETkxB,IAAP;AACA2jH,cAAAA,GAAW9zI,EAAEmwB,EAAAA;YAAAA,UACb;AACA2jH,cAAAA,GAAW9nH,EAAAA;YAAAA;AAGb,mBAAOwL;UAAAA,GACN,CAAA,CAAA;AAEH,iBAAO,EAAA,EAAG1O,UAAU6qH,IAAc,EAChC5E,QAAAA,OACAiF,SAAAA,MAAS,CAAA,KACL;QAAA;AAID,iBAASvD,KAAAA;AACd,cAAI/nG,KAAM1hC,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA,GAC1EitI,KAAWvrG,GAAIlU,KACfA,KAAAA,WAAMy/G,KAAsB,KAAKA,IACjCrlF,KAAQlmB,GAAIkmB,OACZ2F,KAAO7rB,GAAI6rB,MAEX2/E,KAAa,WAAA;AACf,qBAASn4G,KAAO/0B,UAAU9D,QAAQixI,KAAO,IAAIj0I,MAAM67B,EAAAA,GAAOE,KAAO,GAAGA,KAAOF,IAAME;AAC/Ek4G,cAAAA,GAAKl4G,EAAAA,IAAQj1B,UAAUi1B,EAAAA;AAGzB,gBAAI7I,KAASvD,GAAA,EAAwBskH,EAAAA,EAAMh2I,KAAKg2I,IAAM,SAAU5pI,IAAAA;AAC9D,qBAAOA;YAAAA,CAAAA,EACNya,KAAK,GAAA;AAGR,mBAAOoO,KAAS,IAAIxU,OAAOwU,EAAAA,IAAU;UAAA;AAGvC,cAAImhC,IAAM;AACR,gBAAI6/E,KAAUvwG,GAAA,EAAa0wB,EAAAA,EAAMh0C,KAAK,SAAUhhB,IAAAA;AAC9C,kBAAIN,KAAQs1D,GAAKh1D,EAAAA,EAAKN;AACtB,qBAAO8zF,GAAO9zF,EAAAA,KAAUkzI,GAAclzI,EAAAA;YAAAA,CAAAA,GAGpCkzB,KAAcuW,GAAIisB,QAAQ,cAAA,KAAmBjsB,GAAIisB,QAAQ,cAAA;AAE7D,gBAAIy/E,MAAW,wBAAwB9jH,KAAK6B,EAAAA,GAAc;AACxD,kBAAIo+G,KAAWt8G,GAAcyU,GAAI6rB,IAAAA;AACjC,cAAAlwB,GAAsBksG,IAAU7nG,EAAAA;YAAAA;AAEhCA,cAAAA,GAAIssB,OAAO0+E,GAAkBn/E,EAAAA;AAAAA,mBAGxB7rB,GAAI6rB;UAAAA;AAGb,cAAI3F,IAAO;AACT,gBAAIylF,KAAa7/G,GAAIhB,MAAM,GAAA,GACvB8gH,KAAc3wG,GAAA,EAAe0wG,IAAY,CAAA,GACzCE,KAAUD,GAAY,CAAA,GACtBE,KAAYF,GAAY,CAAA,GAExBG,KAAS;AAEb,gBAAID,IAAW;AACb,kBAAIE,KAAW,EAAA,EAAG3kH,MAAMykH,EAAAA,GAEpBG,KAAe9wG,GAAA,EAAa+qB,EAAAA;AAEhC+lF,cAAAA,GAAarlI,QAAQ,SAAU/P,IAAAA;AAC7B,uBAAA,OAAcm1I,GAASn1I,EAAAA;cAAAA,CAAAA,GAEzBk1I,KAAS,EAAA,EAAG3rH,UAAU4rH,IAAU,EAC9B3F,QAAAA,KAAQ,CAAA;YAAA;AAIZ,gBAAI6F,KAAWV,GAAWO,IAAQf,GAAkB9kF,EAAAA,CAAAA;AACpDlmB,YAAAA,GAAIlU,MAAM+/G,KAAUK,IAAAA,OACblsG,GAAIkmB;UAAAA;AAGb,iBAAOlmB;QAAAA;AAAAA,YClnBD8mE,IAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GADJC,MACID,KAAgB,SAAUlxG,IAAGkM,IAAAA;AAI7B,kBAHAglG,KAAgB9wG,OAAOu4B,kBAClB,EAAEk3C,WAAW,CAAA,EAAA,aAAgBjuE,SAAS,SAAU5B,IAAGkM,IAAAA;AAAKlM,YAAAA,GAAE6vE,YAAY3jE;UAAAA,KACvE,SAAUlM,IAAGkM,IAAAA;AAAK,qBAAS1K,MAAK0K;AAAOA,cAAAA,GAAE3K,eAAeC,EAAAA,MAAIxB,GAAEwB,EAAAA,IAAK0K,GAAE1K,EAAAA;UAAAA,GACpDxB,IAAGkM,EAAAA;QAAAA,GAErB,SAAUlM,IAAGkM,IAAAA;AAEhB,mBAASklG,KAAAA;AAAO3qG,iBAAKxE,cAAcjC;UAAAA;AADnCkxG,aAAclxG,IAAGkM,EAAAA,GAEjBlM,GAAEsB,YAAkB,SAAN4K,KAAa9L,OAAOY,OAAOkL,EAAAA,KAAMklG,GAAG9vG,YAAY4K,GAAE5K,WAAW,IAAI8vG;QAAAA,IAGnFtqD,KAAkB1mD,OAAOkB,UAAUC;AAChC,iBAAS,GAAeoO,IAAK1O,IAAAA;AAChC,iBAAO6lD,GAAgBjnD,KAAK8P,IAAK1O,EAAAA;QAAAA;AAE9B,iBAASs1I,GAAY5mI,IAAAA;AACxB,cAAI/N,MAAM4I,QAAQmF,EAAAA,GAAM;AAEpB,qBADI7F,KAAO,IAAIlI,MAAM+N,GAAI/K,MAAAA,GAChBgC,KAAI,GAAGA,KAAIkD,GAAKlF,QAAQgC;AAC7BkD,cAAAA,GAAKlD,EAAAA,IAAK,KAAKA;AAEnB,mBAAOkD;UAAAA;AAEX,cAAI1J,OAAO0J;AACP,mBAAO1J,OAAO0J,KAAK6F,EAAAA;AAEnB7F,UAAAA,KAAO,CAAA;AACX,mBAASpK,MAAKiQ;AACN,eAAeA,IAAKjQ,EAAAA,KACpBoK,GAAKuM,KAAK3W,EAAAA;AAGlB,iBAAOoK;QAAAA;AASJ,iBAAS0sI,GAAW7mI,IAAAA;AACvB,kBAAA,OAAeA,IAAAA;YACX,KAAK;AACD,qBAAO4a,KAAKkH,MAAMlH,KAAKC,UAAU7a,EAAAA,CAAAA;YACrC,KAAK;AACD,qBAAO;YACX;AACI,qBAAOA;UAAAA;QAAAA;AAIZ,iBAAS8mI,GAAU9mH,IAAAA;AAItB,mBADI+mH,IAFAh3I,KAAI,GACJ+E,KAAMkrB,GAAI/qB,QAEPlF,KAAI+E,MAAK;AAEZ,gBAAA,GADAiyI,KAAW/mH,GAAIjgB,WAAWhQ,EAAAA,MACV,MAAMg3I,MAAY;AAIlC,qBAAA;AAHIh3I,YAAAA;UAAAA;AAKR,iBAAA;QAAO;AAOJ,iBAASi3I,GAAoBx8G,IAAAA;AAChC,iBAAA,OAAIA,GAAK9rB,QAAQ,GAAA,KAAA,OAAe8rB,GAAK9rB,QAAQ,GAAA,IAClC8rB,KACJA,GAAKvK,QAAQ,MAAM,IAAA,EAAMA,QAAQ,OAAO,IAAA;QAAA;AAO5C,iBAASgnH,GAAsBz8G,IAAAA;AAClC,iBAAOA,GAAKvK,QAAQ,OAAO,GAAA,EAAKA,QAAQ,OAAO,GAAA;QAAA;AAgC5C,iBAASinH,GAAalnI,IAAAA;AACzB,cAAA,WAAIA;AACA,mBAAA;AAEJ,cAAIA;AACA,gBAAI/N,MAAM4I,QAAQmF,EAAAA,GAAAA;AACd,uBAASjQ,KAAI,GAAG+E,KAAMkL,GAAI/K,QAAQlF,KAAI+E,IAAK/E;AACvC,oBAAIm3I,GAAalnI,GAAIjQ,EAAAA,CAAAA;AACjB,yBAAA;YAAO,WAIK,YAAA,OAARiQ,IACZ;AAAA,kBAAImnI,KAAUP,GAAY5mI,EAAAA,GACtBonI,KAAgBD,GAAQlyI;AAC5B,mBAASlF,KAAI,GAAGA,KAAIq3I,IAAer3I;AAC/B,oBAAIm3I,GAAalnI,GAAImnI,GAAQp3I,EAAAA,CAAAA,CAAAA;AACzB,yBAAA;YAAO;;AAKvB,iBAAA;QAAO;AAEX,iBAASs3I,GAA2B5uG,IAASqY,IAAAA;AACzC,cAAIw2F,KAAe,CAAC7uG,EAAAA;AACpB,mBAASnnC,MAAOw/C,IAAM;AAClB,gBAAI9/C,KAA6B,YAAA,OAAd8/C,GAAKx/C,EAAAA,IAAoBspB,KAAKC,UAAUi2B,GAAKx/C,EAAAA,GAAM,MAAM,CAAA,IAAKw/C,GAAKx/C,EAAAA;AAAAA,uBAC3EN,MACPs2I,GAAa5gI,KAAKpV,KAAM,OAAON,EAAAA;UAAAA;AAGvC,iBAAOs2I,GAAavwH,KAAK,IAAA;QAAA;AAE7B,YAAIwwH,KAA4B,SAAU3lC,IAAAA;AAEtC,mBAAS2lC,GAAW9uG,IAASnoC,IAAMoF,IAAO2mC,IAAWo2B,IAAAA;AACjD,gBAAI+0E,KAAa1wI,KAAKxE,aAClBwvG,KAAQF,GAAO1xG,KAAK4G,MAAMuwI,GAA2B5uG,IAAS,EAAEnoC,MAAMA,IAAMoF,OAAOA,IAAO2mC,WAAWA,IAAWo2B,MAAMA,GAAAA,CAAAA,CAAAA,KAAY37D;AAOtI,mBANAgrG,GAAMxxG,OAAOA,IACbwxG,GAAMpsG,QAAQA,IACdosG,GAAMzlE,YAAYA,IAClBylE,GAAMrvC,OAAOA,IACbhiE,OAAOu4B,eAAe84E,IAAO0lC,GAAW71I,SAAAA,GACxCmwG,GAAMrpE,UAAU4uG,GAA2B5uG,IAAS,EAAEnoC,MAAMA,IAAMoF,OAAOA,IAAO2mC,WAAWA,IAAWo2B,MAAMA,GAAAA,CAAAA,GACrGqvC;UAAAA;AAEX,iBAZAN,GAAU+lC,IAAY3lC,EAAAA,GAYf2lC;QAAAA,EACT/pI,KAAAA,GCxKSiqI,KAAiBF,IACjBG,KAAYb,IAQnBc,KAAS,EACT5zH,KAAK,SAAU/T,IAAK1O,IAAKgnE,IAAAA;AAErB,iBADAt4D,GAAI1O,EAAAA,IAAOwF,KAAK9F,OACT,EAAE42I,aAAatvE,GAAAA;QAAAA,GAE1Bx2D,QAAQ,SAAU9B,IAAK1O,IAAKgnE,IAAAA;AACxB,cAAIpwD,KAAUlI,GAAI1O,EAAAA;AAElB,iBAAA,OADO0O,GAAI1O,EAAAA,GACJ,EAAEs2I,aAAatvE,IAAUpwD,SAASA,GAAAA;QAAAA,GAE7C+X,SAAS,SAAUjgB,IAAK1O,IAAKgnE,IAAAA;AACzB,cAAIpwD,KAAUlI,GAAI1O,EAAAA;AAElB,iBADA0O,GAAI1O,EAAAA,IAAOwF,KAAK9F,OACT,EAAE42I,aAAatvE,IAAUpwD,SAASA,GAAAA;QAAAA,GAE7C2/H,MAAM,SAAU7nI,IAAK1O,IAAKgnE,IAAAA;AAItB,cAAIpwD,KAAU4/H,GAAkBxvE,IAAUxhE,KAAK0zB,IAAAA;AAC3CtiB,UAAAA,OACAA,KAAU2+H,GAAW3+H,EAAAA;AAEzB,cAAI6/H,KAAgBC,GAAe1vE,IAAU,EAAEh8B,IAAI,UAAU9R,MAAM1zB,KAAKgV,KAAAA,CAAAA,EAAQ5D;AAEhF,iBADA8/H,GAAe1vE,IAAU,EAAEh8B,IAAI,OAAO9R,MAAM1zB,KAAK0zB,MAAMx5B,OAAO+2I,GAAAA,CAAAA,GACvD,EAAEH,aAAatvE,IAAUpwD,SAASA,GAAAA;QAAAA,GAE7C4xD,MAAM,SAAU95D,IAAK1O,IAAKgnE,IAAAA;AACtB,cAAI2vE,KAAcH,GAAkBxvE,IAAUxhE,KAAKgV,IAAAA;AAGnD,iBADAk8H,GAAe1vE,IAAU,EAAEh8B,IAAI,OAAO9R,MAAM1zB,KAAK0zB,MAAMx5B,OAAO61I,GAAWoB,EAAAA,EAAAA,CAAAA,GAClE,EAAEL,aAAatvE,GAAAA;QAAAA,GAE1Bj2C,MAAM,SAAUriB,IAAK1O,IAAKgnE,IAAAA;AACtB,iBAAO,EAAEsvE,aAAatvE,IAAUj2C,MAAM6lH,GAAWloI,GAAI1O,EAAAA,GAAMwF,KAAK9F,KAAAA,EAAAA;QAAAA,GAEpEm3I,MAAM,SAAUnoI,IAAK1O,IAAKgnE,IAAAA;AAEtB,iBADAxhE,KAAK9F,QAAQgP,GAAI1O,EAAAA,GACV,EAAEs2I,aAAatvE,GAAAA;QAAAA,EAAAA,GAI1B8vE,KAAS,EACTr0H,KAAK,SAAUnf,IAAK7E,IAAGuoE,IAAAA;AAQnB,iBAPIwuE,GAAU/2I,EAAAA,IACV6E,GAAIiV,OAAO9Z,IAAG,GAAG+G,KAAK9F,KAAAA,IAGtB4D,GAAI7E,EAAAA,IAAK+G,KAAK9F,OAGX,EAAE42I,aAAatvE,IAAU5iE,OAAO3F,GAAAA;QAAAA,GAE3C+R,QAAQ,SAAUlN,IAAK7E,IAAGuoE,IAAAA;AAEtB,iBAAO,EAAEsvE,aAAatvE,IAAUpwD,SADdtT,GAAIiV,OAAO9Z,IAAG,CAAA,EACqB,CAAA,EAAA;QAAA,GAEzDkwB,SAAS,SAAUrrB,IAAK7E,IAAGuoE,IAAAA;AACvB,cAAIpwD,KAAUtT,GAAI7E,EAAAA;AAElB,iBADA6E,GAAI7E,EAAAA,IAAK+G,KAAK9F,OACP,EAAE42I,aAAatvE,IAAUpwD,SAASA,GAAAA;QAAAA,GAE7C2/H,MAAMF,GAAOE,MACb/tE,MAAM6tE,GAAO7tE,MACbz3C,MAAMslH,GAAOtlH,MACb8lH,MAAMR,GAAOQ,KAAAA;AAUV,iBAASL,GAAkBxvE,IAAU+vE,IAAAA;AACxC,cAAe,MAAXA;AACA,mBAAO/vE;AAEX,cAAIgwE,KAAyB,EAAEhsG,IAAI,QAAQ9R,MAAM69G,GAAAA;AAEjD,iBADAL,GAAe1vE,IAAUgwE,EAAAA,GAClBA,GAAuBt3I;QAAAA;AAgB3B,iBAASg3I,GAAe1vE,IAAUj8B,IAAWksG,IAAmBC,IAAgBC,IAA2B/yI,IAAAA;AAc9G,cAAA,WAbI6yI,OAAgCA,KAAAA,QAAoB,WACpDC,OAA6BA,KAAAA,OAAiB,WAC9CC,OAAwCA,KAAAA,OAA4B,WACpE/yI,OAAoBA,KAAQ,IAC5B6yI,OACgC,cAAA,OAArBA,KACPA,GAAkBlsG,IAAW,GAAGi8B,IAAUj8B,GAAU7R,IAAAA,IAGpDsH,GAAUuK,IAAW,CAAA,IAIN,OAAnBA,GAAU7R,MAAa;AACvB,gBAAIxT,KAAc,EAAE4wH,aAAatvE,GAAAA;AACjC,gBAAqB,UAAjBj8B,GAAUC;AAEV,qBADAtlB,GAAY4wH,cAAcvrG,GAAUrrC,OAC7BgmB;AAEN,gBAAqB,cAAjBqlB,GAAUC;AAGf,qBAFAtlB,GAAY4wH,cAAcvrG,GAAUrrC,OACpCgmB,GAAY9O,UAAUowD,IACfthD;AAEN,gBAAqB,WAAjBqlB,GAAUC,MAAkC,WAAjBD,GAAUC;AAK1C,qBAJAtlB,GAAY4wH,cAAcE,GAAkBxvE,IAAUj8B,GAAUvwB,IAAAA,GAC3C,WAAjBuwB,GAAUC,OACVtlB,GAAY9O,UAAUowD,KAEnBthD;AAEN,gBAAqB,WAAjBqlB,GAAUC,IAAe;AAE9B,kBADAtlB,GAAYqL,OAAO6lH,GAAW5vE,IAAUj8B,GAAUrrC,KAAAA,GAAAA,UAC9CgmB,GAAYqL;AACZ,sBAAM,IAAIolH,GAAe,yBAAyB,yBAAyB/xI,IAAO2mC,IAAWi8B,EAAAA;AAGjG,qBADAthD,GAAY4wH,cAActvE,IACnBthD;YAAAA;AAEN,gBAAqB,aAAjBqlB,GAAUC;AAGf,qBAFAtlB,GAAY9O,UAAUowD,IACtBthD,GAAY4wH,cAAc,MACnB5wH;AAEN,gBAAqB,WAAjBqlB,GAAUC;AAEf,qBADAD,GAAUrrC,QAAQsnE,IACXthD;AAGP,gBAAIuxH;AACA,oBAAM,IAAId,GAAe,wEAAwE,wBAAwB/xI,IAAO2mC,IAAWi8B,EAAAA;AAG3I,mBAAOthD;UAAAA;AAKVwxH,UAAAA,OACDlwE,KAAWuuE,GAAWvuE,EAAAA;AAE1B,cACIn+D,MADOkiC,GAAU7R,QAAQ,IACbjF,MAAM,GAAA,GAClBvlB,KAAMs4D,IACNrnE,KAAI,GACJ6D,KAAMqF,GAAKlF,QACXyzI,KAAAA,QACAp3I,KAAAA,QACAq3I,KAAAA;AAOJ,eALIA,KAD4B,cAAA,OAArBJ,KACYA,KAGAz2G,QAEV;AAKT,iBAJAxgC,KAAM6I,GAAKlJ,EAAAA,MAAAA,MACAK,GAAIoN,QAAQ,GAAA,MACnBpN,KAAM21I,GAAsB31I,EAAAA,IAE5Bm3I,MAAoC,eAAPn3I;AAC7B,oBAAM,IAAIwJ,UAAU,oNAAA;AAgBxB,gBAdIytI,MAAAA,WACIG,OAAAA,WACI1oI,GAAI1O,EAAAA,IACJo3I,KAAuBvuI,GAAKjI,MAAM,GAAGjB,EAAAA,EAAG8lB,KAAK,GAAA,IAExC9lB,MAAK6D,KAAM,MAChB4zI,KAAuBrsG,GAAU7R,OAAAA,WAEjCk+G,MACAC,GAAiBtsG,IAAW,GAAGi8B,IAAUowE,EAAAA,IAIrDz3I,MACIgB,MAAM4I,QAAQmF,EAAAA,GAAM;AACpB,kBAAY,QAAR1O;AACAA,gBAAAA,KAAM0O,GAAI/K;mBAET;AACD,oBAAIszI,MAAAA,CAAsBzB,GAAUx1I,EAAAA;AAChC,wBAAM,IAAIm2I,GAAe,2HAA2H,sCAAsC/xI,IAAO2mC,IAAWi8B,EAAAA;AAEvMwuE,mBAAUx1I,EAAAA,MACfA,KAAAA,CAAAA,CAAQA;cAAAA;AAGhB,kBAAIL,MAAK6D,IAAK;AACV,oBAAIyzI,MAAsC,UAAjBlsG,GAAUC,MAAgBhrC,KAAM0O,GAAI/K;AACzD,wBAAM,IAAIwyI,GAAe,oFAAoF,iCAAiC/xI,IAAO2mC,IAAWi8B,EAAAA;AAGpK,oBAAA,WADIthD,KAAcoxH,GAAO/rG,GAAUC,EAAAA,EAAIpsC,KAAKmsC,IAAWr8B,IAAK1O,IAAKgnE,EAAAA,GACjDj2C;AACZ,wBAAM,IAAIolH,GAAe,yBAAyB,yBAAyB/xI,IAAO2mC,IAAWi8B,EAAAA;AAEjG,uBAAOthD;cAAAA;YAAAA,WAIP/lB,MAAK6D,IAAK;AAEV,kBAAA,WADIkiB,KAAc2wH,GAAOtrG,GAAUC,EAAAA,EAAIpsC,KAAKmsC,IAAWr8B,IAAK1O,IAAKgnE,EAAAA,GACjDj2C;AACZ,sBAAM,IAAIolH,GAAe,yBAAyB,yBAAyB/xI,IAAO2mC,IAAWi8B,EAAAA;AAEjG,qBAAOthD;YAAAA;AAMf,gBAHAhX,KAAMA,GAAI1O,EAAAA,GAGNi3I,MAAqBt3I,KAAI6D,OAAAA,CAASkL,MAAsB,YAAA,OAARA;AAChD,oBAAM,IAAIynI,GAAe,gDAAgD,+BAA+B/xI,IAAO2mC,IAAWi8B,EAAAA;UAAAA;QAAAA;AAmBnI,iBAASswE,GAAWtwE,IAAUuwE,IAAON,IAAmBC,IAAgBC,IAAAA;AAG3E,cAAA,WAFID,OAA6BA,KAAAA,OAAiB,WAC9CC,OAAwCA,KAAAA,OACxCF,MAAAA,CACKt2I,MAAM4I,QAAQguI,EAAAA;AACf,kBAAM,IAAIpB,GAAe,mCAAmC,uBAAA;AAG/De,UAAAA,OACDlwE,KAAWuuE,GAAWvuE,EAAAA;AAG1B,mBADIwwE,KAAU,IAAI72I,MAAM42I,GAAM5zI,MAAAA,GACrBlF,KAAI,GAAGg5I,KAAWF,GAAM5zI,QAAQlF,KAAIg5I,IAAUh5I;AAEnD+4I,YAAAA,GAAQ/4I,EAAAA,IAAKi4I,GAAe1vE,IAAUuwE,GAAM94I,EAAAA,GAAIw4I,IAAAA,MAAyBE,IAA2B14I,EAAAA,GACpGuoE,KAAWwwE,GAAQ/4I,EAAAA,EAAG63I;AAG1B,iBADAkB,GAAQlB,cAActvE,IACfwwE;QAAAA;AAWJ,iBAASE,GAAa1wE,IAAUj8B,IAAW3mC,IAAAA;AAC9C,cAAIuzI,KAAkBjB,GAAe1vE,IAAUj8B,EAAAA;AAC/C,cAAA,UAAI4sG,GAAgB5mH;AAChB,kBAAM,IAAIolH,GAAe,yBAAyB,yBAAyB/xI,IAAO2mC,IAAWi8B,EAAAA;AAEjG,iBAAO2wE,GAAgBrB;QAAAA;AASpB,iBAAS91G,GAAUuK,IAAW3mC,IAAO4iE,IAAUowE,IAAAA;AAClD,cAAyB,YAAA,OAAdrsG,MAAwC,SAAdA,MAAsBpqC,MAAM4I,QAAQwhC,EAAAA;AACrE,kBAAM,IAAIorG,GAAe,8BAA8B,2BAA2B/xI,IAAO2mC,IAAWi8B,EAAAA;AAEnG,cAAA,CAAKqvE,GAAOtrG,GAAUC,EAAAA;AACvB,kBAAM,IAAImrG,GAAe,wEAAwE,wBAAwB/xI,IAAO2mC,IAAWi8B,EAAAA;AAE1I,cAA8B,YAAA,OAAnBj8B,GAAU7R;AACtB,kBAAM,IAAIi9G,GAAe,6CAA6C,0BAA0B/xI,IAAO2mC,IAAWi8B,EAAAA;AAEjH,cAAoC,MAAhCj8B,GAAU7R,KAAK9rB,QAAQ,GAAA,KAAc29B,GAAU7R,KAAKv1B,SAAS;AAElE,kBAAM,IAAIwyI,GAAe,iDAAiD,0BAA0B/xI,IAAO2mC,IAAWi8B,EAAAA;AAErH,eAAsB,WAAjBj8B,GAAUC,MAAkC,WAAjBD,GAAUC,OAA4C,YAAA,OAAnBD,GAAUvwB;AAC9E,kBAAM,IAAI27H,GAAe,yFAAyF,2BAA2B/xI,IAAO2mC,IAAWi8B,EAAAA;AAE9J,eAAsB,UAAjBj8B,GAAUC,MAAiC,cAAjBD,GAAUC,MAAqC,WAAjBD,GAAUC,OAAAA,WAAkBD,GAAUrrC;AACpG,kBAAM,IAAIy2I,GAAe,oGAAoG,4BAA4B/xI,IAAO2mC,IAAWi8B,EAAAA;AAE1K,eAAsB,UAAjBj8B,GAAUC,MAAiC,cAAjBD,GAAUC,MAAqC,WAAjBD,GAAUC,OAAkB4qG,GAAa7qG,GAAUrrC,KAAAA;AACjH,kBAAM,IAAIy2I,GAAe,oGAAoG,4CAA4C/xI,IAAO2mC,IAAWi8B,EAAAA;AAE1L,cAAIA;AACL,gBAAoB,SAAhBj8B,GAAUC,IAAa;AACvB,kBAAI4sG,KAAU7sG,GAAU7R,KAAKjF,MAAM,GAAA,EAAKtwB,QACpCk0I,KAAkBT,GAAqBnjH,MAAM,GAAA,EAAKtwB;AACtD,kBAAIi0I,OAAYC,KAAkB,KAAKD,OAAYC;AAC/C,sBAAM,IAAI1B,GAAe,yDAAyD,6BAA6B/xI,IAAO2mC,IAAWi8B,EAAAA;YAAAA,WAG/G,cAAjBj8B,GAAUC,MAAqC,aAAjBD,GAAUC,MAAoC,WAAjBD,GAAUC,IAAAA;AAC1E,kBAAID,GAAU7R,SAASk+G;AACnB,sBAAM,IAAIjB,GAAe,8DAA8D,+BAA+B/xI,IAAO2mC,IAAWi8B,EAAAA;YAAAA,WAGtH,WAAjBj8B,GAAUC,MAAkC,WAAjBD,GAAUC,IAAe;AACzD,kBACI/+B,KAAQ8zB,GAAS,CADD,EAAEiL,IAAI,QAAQ9R,MAAM6R,GAAUvwB,MAAM9a,OAAAA,OAAOgK,CAAAA,GACzBs9D,EAAAA;AACtC,kBAAI/6D,MAAwB,kCAAfA,GAAMjN;AACf,sBAAM,IAAIm3I,GAAe,gEAAgE,+BAA+B/xI,IAAO2mC,IAAWi8B,EAAAA;YAAAA;;QAAAA;AAYnJ,iBAASjnC,GAASiW,IAAUgxB,IAAU8wE,IAAAA;AACzC,cAAA;AACI,gBAAA,CAAKn3I,MAAM4I,QAAQysC,EAAAA;AACf,oBAAM,IAAImgG,GAAe,mCAAmC,uBAAA;AAEhE,gBAAInvE;AAEAswE,iBAAW/B,GAAWvuE,EAAAA,GAAWuuE,GAAWv/F,EAAAA,GAAW8hG,MAAAA,IAAqB;iBAE3E;AACDA,cAAAA,KAAoBA,MAAqBt3G;AACzC,uBAAS/hC,KAAI,GAAGA,KAAIu3C,GAASryC,QAAQlF;AACjCq5I,gBAAAA,GAAkB9hG,GAASv3C,EAAAA,GAAIA,IAAGuoE,IAAAA,MAAUt9D;YAAAA;UAAAA,SAIjDjJ,IAAP;AACI,gBAAIA,cAAa01I;AACb,qBAAO11I;AAGP,kBAAMA;UAAAA;QAAAA;AAsBX,iBAASm2I,GAAW5rI,IAAGC,IAAAA;AAC1B,cAAID,OAAMC;AACN,mBAAA;AACJ,cAAID,MAAKC,MAAiB,YAAA,OAALD,MAA6B,YAAA,OAALC,IAAe;AACxD,gBAAsDxM,IAAGkF,IAAQ3D,IAA7D+3I,KAAOp3I,MAAM4I,QAAQyB,EAAAA,GAAIgtI,KAAOr3I,MAAM4I,QAAQ0B,EAAAA;AAClD,gBAAI8sI,MAAQC,IAAM;AAEd,mBADAr0I,KAASqH,GAAErH,WACGsH,GAAEtH;AACZ,uBAAA;AACJ,mBAAKlF,KAAIkF,IAAgB,KAARlF;AACb,oBAAA,CAAKm4I,GAAW5rI,GAAEvM,EAAAA,GAAIwM,GAAExM,EAAAA,CAAAA;AACpB,yBAAA;AACR,qBAAA;YAAO;AAEX,gBAAIs5I,MAAQC;AACR,qBAAA;AACJ,gBAAInvI,KAAO1J,OAAO0J,KAAKmC,EAAAA;AAEvB,iBADArH,KAASkF,GAAKlF,YACCxE,OAAO0J,KAAKoC,EAAAA,EAAGtH;AAC1B,qBAAA;AACJ,iBAAKlF,KAAIkF,IAAgB,KAARlF;AACb,kBAAA,CAAKwM,GAAE3K,eAAeuI,GAAKpK,EAAAA,CAAAA;AACvB,uBAAA;AACR,iBAAKA,KAAIkF,IAAgB,KAARlF;AAEb,kBAAA,CAAKm4I,GAAW5rI,GADhBhL,KAAM6I,GAAKpK,EAAAA,CAAAA,GACawM,GAAEjL,EAAAA,CAAAA;AACtB,uBAAA;AAER,mBAAA;UAAO;AAEX,iBAAOgL,MAAMA,MAAKC,MAAMA;QAAAA;ACra5B,YAAIgtI,KAAa,oBAAIxoI,WACjByoI,KACA,SAAgBxpI,IAAAA;AACZlJ,eAAK2yI,YAAY,oBAAIxoI,OACrBnK,KAAKkJ,MAAMA;QAAAA,GAIf0pI,KACA,SAAsBp3D,IAAU/T,IAAAA;AAC5BznE,eAAKw7E,WAAWA,IAChBx7E,KAAKynE,WAAWA;QAAAA;AAgBjB,iBAASorE,GAAUvkI,IAAMm5D,IAAAA;AAC5BA,UAAAA,GAASorE,UAAAA;QAAAA;AAKN,iBAASC,GAAQ5pI,IAAKsyE,IAAAA;AACzB,cACI/T,IACAsrE,KArBR,SAAmB7pI,IAAAA;AACf,mBAAOupI,GAAW34I,IAAIoP,EAAAA;UAAAA,EAoBCA,EAAAA;AACvB,cAAK6pI,IAIA;AACD,gBAAIC,KAxBZ,SAA+BD,IAAQv3D,IAAAA;AACnC,qBAAOu3D,GAAOJ,UAAU74I,IAAI0hF,EAAAA;YAAAA,EAuBiBu3D,IAAQv3D,EAAAA;AACjD/T,YAAAA,KAAWurE,MAAgBA,GAAavrE;UAAAA;AALxCsrE,YAAAA,KAAS,IAAIL,GAAOxpI,EAAAA,GACpBupI,GAAW/oI,IAAIR,IAAK6pI,EAAAA;AAMxB,cAAItrE;AACA,mBAAOA;AAIX,cAFAA,KAAW,CAAA,GACXsrE,GAAO74I,QAAQ61I,GAAW7mI,EAAAA,GACtBsyE,IAAU;AACV/T,YAAAA,GAAS+T,WAAWA,IACpB/T,GAAS1nE,OAAO;AAChB,gBAAIkzI,KAAa,WAAA;AACbC,iBAASzrE,EAAAA;YAAAA,GAET0rE,KAAY,WAAA;AACZ/gE,2BAAa3K,GAAS1nE,IAAAA,GACtB0nE,GAAS1nE,OAAOoyE,WAAW8gE,EAAAA;YAAAA;AAET,2BAAA,OAAXz9G,WACPA,OAAO63F,iBAAiB,WAAW8lB,EAAAA,GACnC39G,OAAO63F,iBAAiB,SAAS8lB,EAAAA,GACjC39G,OAAO63F,iBAAiB,aAAa8lB,EAAAA,GACrC39G,OAAO63F,iBAAiB,WAAW8lB,EAAAA,GACnC39G,OAAO63F,iBAAiB,UAAU8lB,EAAAA;UAAAA;AAkB1C,iBAfA1rE,GAAS2rE,UAlCK,CAAA,GAmCd3rE,GAAS9sE,SAASuO,IAClBu+D,GAASorE,YAAY,WAAA;AACjBK,eAASzrE,EAAAA,GACT2K,aAAa3K,GAAS1nE,IAAAA,GAnD9B,SAAkCgzI,IAAQtrE,IAAAA;AACtCsrE,cAAAA,GAAOJ,UAAUtU,OAAO52D,GAAS+T,QAAAA;YAAAA,EAmDJu3D,IAAQtrE,EAAAA,GACX,eAAA,OAAXjyC,WACPA,OAAO+3F,oBAAoB,WAAW4lB,EAAAA,GACtC39G,OAAO+3F,oBAAoB,SAAS4lB,EAAAA,GACpC39G,OAAO+3F,oBAAoB,aAAa4lB,EAAAA,GACxC39G,OAAO+3F,oBAAoB,WAAW4lB,EAAAA,GACtC39G,OAAO+3F,oBAAoB,UAAU4lB,EAAAA;UAAAA,GAG7CJ,GAAOJ,UAAUjpI,IAAI8xE,IAAU,IAAIo3D,GAAap3D,IAAU/T,EAAAA,CAAAA,GACnDA;QAAAA;AAKJ,iBAASyrE,GAASzrE,IAAU4rE,IAAAA;AAAAA,qBAC3BA,OAAyBA,KAAAA;AAC7B,cAAIN,KAASN,GAAW34I,IAAI2tE,GAAS9sE,MAAAA;AACrC24I,aAAUP,GAAO74I,OAAOutE,GAAS9sE,QAAQ8sE,GAAS2rE,SAAS,IAAIC,EAAAA,GAC3D5rE,GAAS2rE,QAAQj1I,UACjB2zI,GAAWiB,GAAO74I,OAAOutE,GAAS2rE,OAAAA;AAEtC,cAAIlyE,KAAOuG,GAAS2rE;AAOpB,iBANIlyE,GAAK/iE,SAAS,MACdspE,GAAS2rE,UAAU,CAAA,GACf3rE,GAAS+T,YACT/T,GAAS+T,SAASta,EAAAA,IAGnBA;QAAAA;AAGX,iBAASoyE,GAAUP,IAAQ7pI,IAAKkqI,IAAS1/G,IAAM2/G,IAAAA;AAC3C,cAAInqI,OAAQ6pI,IAAZ;AAG0B,0BAAA,OAAf7pI,GAAIwW,WACXxW,KAAMA,GAAIwW,OAAAA;AAOd,qBALI6zH,KAAUzD,GAAY5mI,EAAAA,GACtBsqI,KAAU1D,GAAYiD,EAAAA,GAEtBU,KAAAA,OAEKt5I,KAAIq5I,GAAQr1I,SAAS,GAAGhE,MAAK,GAAGA,MAAK;AAC1C,kBACIg4D,KAAS4gF,GADTv4I,KAAMg5I,GAAQr5I,EAAAA,CAAAA;AAElB,kBAAA,CAAI,GAAe+O,IAAK1O,EAAAA,KAAAA,WAAU0O,GAAI1O,EAAAA,KAAAA,WAAsB23D,MAAAA,UAAwBh3D,MAAM4I,QAAQmF,EAAAA;AAezF/N,sBAAM4I,QAAQgvI,EAAAA,MAAY53I,MAAM4I,QAAQmF,EAAAA,KACzCmqI,MACAD,GAAQxjI,KAAK,EAAE41B,IAAI,QAAQ9R,MAAMA,KAAO,MAAMw8G,GAAoB11I,EAAAA,GAAMN,OAAO61I,GAAW59E,EAAAA,EAAAA,CAAAA,GAE9FihF,GAAQxjI,KAAK,EAAE41B,IAAI,UAAU9R,MAAMA,KAAO,MAAMw8G,GAAoB11I,EAAAA,EAAAA,CAAAA,GACpEi5I,KAAAA,SAGIJ,MACAD,GAAQxjI,KAAK,EAAE41B,IAAI,QAAQ9R,MAAMA,IAAMx5B,OAAO64I,GAAAA,CAAAA,GAElDK,GAAQxjI,KAAK,EAAE41B,IAAI,WAAW9R,MAAMA,IAAMx5B,OAAOgP,GAAAA,CAAAA,GAAAA;mBA1B8D;AAC/G,oBAAIkpD,KAASlpD,GAAI1O,EAAAA;AACI,4BAAA,OAAV23D,MAAgC,QAAVA,MAAmC,YAAA,OAAVC,MAAgC,QAAVA,MAAkBj3D,MAAM4I,QAAQouD,EAAAA,MAAYh3D,MAAM4I,QAAQquD,EAAAA,IACtIkhF,GAAUnhF,IAAQC,IAAQghF,IAAS1/G,KAAO,MAAMw8G,GAAoB11I,EAAAA,GAAM64I,EAAAA,IAGtElhF,OAAWC,OAAAA,MAEPihF,MACAD,GAAQxjI,KAAK,EAAE41B,IAAI,QAAQ9R,MAAMA,KAAO,MAAMw8G,GAAoB11I,EAAAA,GAAMN,OAAO61I,GAAW59E,EAAAA,EAAAA,CAAAA,GAE9FihF,GAAQxjI,KAAK,EAAE41B,IAAI,WAAW9R,MAAMA,KAAO,MAAMw8G,GAAoB11I,EAAAA,GAAMN,OAAO61I,GAAW39E,EAAAA,EAAAA,CAAAA;cAAAA;YAAAA;AAmB7G,gBAAKqhF,MAAWF,GAAQp1I,UAAUq1I,GAAQr1I;AAG1C,mBAAShE,KAAI,GAAGA,KAAIo5I,GAAQp1I,QAAQhE,MAAK;AACrC,oBAAIK;AACC,mBAAeu4I,IADhBv4I,KAAM+4I,GAAQp5I,EAAAA,CAAAA,KAAAA,WACkB+O,GAAI1O,EAAAA,KACpC44I,GAAQxjI,KAAK,EAAE41B,IAAI,OAAO9R,MAAMA,KAAO,MAAMw8G,GAAoB11I,EAAAA,GAAMN,OAAO61I,GAAW7mI,GAAI1O,EAAAA,CAAAA,EAAAA,CAAAA;cAAAA;UAAAA;QAAAA;AAOlG,iBAAS0yE,GAAQwmE,IAAOC,IAAON,IAAAA;AAAAA,qBAC9BA,OAAyBA,KAAAA;AAC7B,cAAID,KAAU,CAAA;AAEd,iBADAE,GAAUI,IAAOC,IAAOP,IAAS,IAAIC,EAAAA,GAC9BD;QAAAA;ACvJIz5I,eAAA,OAAA,CAAA,GAAkBI,IAAML,IAAQ,EAC3Ci3I,gBAAA,IACAC,WAAA,IACAV,qBAAAA,IACAC,uBAAAA,GAAAA,CAAAA;AAJW,YAAA,KAAAz1I,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GCbA,KAAA,EACbuiB,KAuGF,SAAayW,IAAMx5B,IAAAA;AACjB,iBAAO,EACLsrC,IAAI,OACJ9R,MAAMA,IACNx5B,OAAOA,GAAAA;QAAAA,GA1GTivB,SAASA,IACTne,QAyHF,SAAgB0oB,IAAAA;AACd,iBAAO,EACL8R,IAAI,UACJ9R,MAAMA,GAAAA;QAAAA,GA3HRhoB,OAgIF,SAAegoB,IAAMx5B,IAAAA;AACnB,iBAAO,EACLgG,MAAM,YACNslC,IAAI,SACJ9R,MAAMA,IACNx5B,OAAOA,GAAAA;QAAAA,GApIT8R,WAyIF,SAAmB0nB,IAAMx5B,IAAAA;AACvB,iBAAO,EACLgG,MAAM,YACNslC,IAAI,aACJ9R,MAAMA,IACNx5B,OAAOA,GAAAA;QAAAA,GA7IT4d,SAiJF,SAAiB4b,IAAMx5B,IAAAA;AACrB,iBAAO,EACLgG,MAAM,WACNwzB,MAAMA,IACNx5B,OAAOA,GAAAA;QAAAA,GApJT2nB,OA+PF,SAAe3Y,IAAKwqB,IAAAA;AAClB,iBAAOA,GAAKzZ,OAAO,SAAUxS,IAAKknD,IAAAA;AAChC,mBAAA,WAAWA,MAAyBlnD,KAC3BA,GAAIknD,EAAAA,IAGNlnD;UAAAA,GACNyB,EAAAA;QAAAA,GArQH4oI,YAmBF,SAAoB5oI,IAAK6oI,IAAO6B,IAAAA;AAM9B,cALAA,KAAOA,MAAQ,CAAA,GAKE,aAJjB7B,KAAQ,GAAA,EAAc,GAAA,EAAc,CAAA,GAAIA,EAAAA,GAAQ,CAAA,GAAI,EAClDr+G,MAAMq+G,GAAMr+G,QAAQmgH,GAAkB9B,GAAMr+G,IAAAA,EAAAA,CAAAA,GAGpC8R,IAAgB;AACxB,gBAAIj1B,KAAWujI,GAAgB5qI,IAAK6oI,GAAMr+G,IAAAA;AAE1C,eAAA,EAAenjB,IAAUwhI,GAAM73I,KAAAA,GAE/B,GAAqBgP,IAAK,CAACigB,GAAQ4oH,GAAMr+G,MAAMnjB,EAAAA,CAAAA,CAAAA;UAAAA,WACzB,gBAAbwhI,GAAMvsG,IAAoB;AACnC,gBAAIioD,KAAeqmD,GAAgB5qI,IAAK6oI,GAAMr+G,IAAAA,GAE1CqgH,KAAY,GAAA,EAAUtmD,IAAcskD,GAAM73I,KAAAA;AAE9CgP,YAAAA,KAAM,GAAqBA,IAAK,CAACigB,GAAQ4oH,GAAMr+G,MAAMqgH,EAAAA,CAAAA,CAAAA,EAAajD;UAAAA,WAC5C,UAAbiB,GAAMvsG,MAA+B,OAAfusG,GAAMr+G,QAAevN,GAAS4rH,GAAM73I,KAAAA,GAAQ;AAK3E,gBAAIk5I,KAAUt0G,GAAA,EAAaizG,GAAM73I,KAAAA,EAAO+f,OAAO,SAAUnc,IAAKtD,IAAAA;AAM5D,qBALAsD,GAAI8R,KAAK,EACP41B,IAAI,OACJ9R,MAAM,IAAI7Z,OAAOg6H,GAAkBr5I,EAAAA,CAAAA,GACnCN,OAAO63I,GAAM73I,MAAMM,EAAAA,EAAAA,CAAAA,GAEdsD;YAAAA,GACN,CAAA,CAAA;AAEH,eAAqBoL,IAAKkqI,EAAAA;UAAAA,WACJ,cAAbrB,GAAMvsG,MAAmC,OAAfusG,GAAMr+G,MAAa;AACtD,gBACIx5B,KADS63I,GACM73I;AAEf05I,YAAAA,GAAKI,oBAAoBjC,GAAMh9E,QAAQk/E,GAAmBlC,EAAAA,MAAW52I,MAAM4I,QAAQguI,GAAM73I,KAAAA,KAAUisB,GAAS4rH,GAAM73I,KAAAA,OACpHA,KAAQ,GAAA,EAAc,GAAA,EAAc,CAAA,GAAIA,EAAAA,GAAQ63I,GAAMh9E,IAAAA,IAGxD7rD,KAAMhP;UAAAA,WAEN,GAAqBgP,IAAK,CAAC6oI,EAAAA,CAAAA,GAEvB6B,GAAKI,oBAAoBjC,GAAMh9E,QAAQk/E,GAAmBlC,EAAAA,MAAW52I,MAAM4I,QAAQguI,GAAM73I,KAAAA,KAAUisB,GAAS4rH,GAAM73I,KAAAA,IAAS;AAC7H,gBAAIg6I,KAAgBJ,GAAgB5qI,IAAK6oI,GAAMr+G,IAAAA,GAE3CygH,KAAa,GAAA,EAAc,GAAA,EAAc,CAAA,GAAID,EAAAA,GAAgBnC,GAAMh9E,IAAAA;AAEvE,eAAqB7rD,IAAK,CAACigB,GAAQ4oH,GAAMr+G,MAAMygH,EAAAA,CAAAA,CAAAA;UAAAA;AAInD,iBAAOjrI;QAAAA,GAxEPkrI,iBA+OF,SAAyB1gH,IAAM51B,IAAAA;AAC7B,cAAA,CAAK3C,MAAM4I,QAAQjG,EAAAA;AACjB,mBAAA;AAGF,mBAAS7E,KAAI,GAAG+E,KAAMF,GAAIK,QAAQlF,KAAI+E,IAAK/E,MAAK;AAC9C,gBAAI6E,GAAI7E,EAAAA,MAAOy6B,GAAKz6B,EAAAA;AAClB,qBAAA;AAIJ,iBAAA;QAAO,GAzPP+gB,SAASA,IACTq6H,qBAwQF,SAA6Bv2I,IAAAA;AAC3B,iBAAOw2I,GAAWt6H,GAAQkN,GAAeppB,EAAAA,CAAAA,CAAAA;QAAAA,GAxQzCopB,gBAAgBA,IAChBqtH,WAmSF,SAAmB9sI,IAAAA;AACjB,iBAAO0e,GAAS1e,EAAAA,KAAQ+e,GAAW/e,GAAIk7B,IAAAA;QAAAA,GAnSvC6xG,YAoJF,SAAoBC,IAAWlyI,IAAAA;AAC7B,cAAA;AACE,mBAAOmyI,GAAgBD,IAAWlqI,IAAShI,EAAAA;UAAAA,SACpCtH,IAAP;AACA,mBAAOA;UAAAA;QAAAA,GAvJT05I,qBA2JF,SAA6BF,IAAWlyI,IAAAA;AACtC,cAAA;AACE,mBAAOmyI,GAAgBD,IAAWG,IAAkBryI,EAAAA;UAAAA,SAC7CtH,IAAP;AACA,mBAAOA;UAAAA;QAAAA,GA9JT45I,aAAaA,IACbC,gBAgUF,SAAwB/C,IAAAA;AACtB,iBAAOgD,GAAQhD,EAAAA,KAAyB,cAAfA,GAAM7xI;QAAAA,GAhU/B60I,SAASA,IACTC,YAAYA,IACZf,oBAAoBA,IACpBgB,aAgTF,SAAqB/uH,IAAAA;AACnB,iBAAiD,iCAA1CvsB,OAAOkB,UAAU6G,SAAStI,KAAK8sB,EAAAA;QAAAA,GAhTtCM,YAAYA,IACZL,UAAUA,IACVsiE,SAgSF,SAAiBspD,IAAAA;AACf,iBAAOA,cAAiBrrI;QAAAA,EAAAA;AArO1B,iBAASmtI,GAAkBngH,IAAAA;AACzB,iBAAIv4B,MAAM4I,QAAQ2vB,EAAAA,IACZA,GAAKv1B,SAAS,IACT,KAGF,IAAI0b,OAAOglB,GAAA,EAAqBnL,EAAAA,EAAMt6B,KAAKs6B,IAAM,SAAU/H,IAAAA;AAChE,oBACGA,KAAO,IAAIxC,QAAQ,MAAM,IAAA,EAAMA,QAAQ,OAAO,IAAA;UAAA,CAAA,EAGjDlJ,KAAK,GAAA,CAAA,IAGFyT;QAAAA;AAiBT,iBAASvK,GAAQuK,IAAMx5B,IAAO66D,IAAAA;AAC5B,iBAAO,EACLvvB,IAAI,WACJ9R,MAAMA,IACNx5B,OAAOA,IACP66D,MAAMA,GAAAA;QAAAA;AA0DV,iBAAS2/E,GAAgBD,IAAWlyI,IAAIi5E,IAAAA;AACtC,cAAItiD;AAOJ,iBADYo7G,GADDt6H,GAHD6kB,GAAA,EAAqB3F,KAAWpO,GAAA,EAAwB2pH,EAAAA,EAAWr7I,KAAKq7I,IAAWR,EAAAA,CAAAA,EAAqB76I,KAAK8/B,IAAU,SAAUg8G,IAAAA;AACzI,mBAAO3yI,GAAG2yI,GAASh7I,OAAOshF,IAAU05D,GAASxhH,IAAAA;UAAAA,CAAAA,KACzC,CAAA,CAAA,CAAA;QAAA;AAMR,iBAASkhH,GAAiB1rI,IAAK3G,IAAI0wD,IAAAA;AAGjC,iBAFAA,KAAWA,MAAY,CAAA,GAEnB93D,MAAM4I,QAAQmF,EAAAA,IACT21B,GAAA,EAAqB31B,EAAAA,EAAK9P,KAAK8P,IAAK,SAAUzB,IAAKjN,IAAAA;AACxD,mBAAOo6I,GAAiBntI,IAAKlF,IAAIykB,GAAA,EAAwBisC,EAAAA,EAAU75D,KAAK65D,IAAUz4D,EAAAA,CAAAA;UAAAA,CAAAA,IAIlF2rB,GAASjd,EAAAA,IAGJ21B,GAAA,EAAqB1F,KAAY2F,GAAA,EAAa51B,EAAAA,CAAAA,EAAM9P,KAAK+/B,IAAW,SAAU3+B,IAAAA;AACnF,mBAAOo6I,GAAiB1rI,GAAI1O,EAAAA,GAAM+H,IAAIykB,GAAA,EAAwBisC,EAAAA,EAAU75D,KAAK65D,IAAUz4D,EAAAA,CAAAA;UAAAA,CAAAA,IAIpF+H,GAAG2G,IAAK+pD,GAASA,GAAS90D,SAAS,CAAA,GAAI80D,EAAAA;AAP5C,cAAI95B;QAAAA;AAUR,iBAAS5uB,GAAQrB,IAAK3G,IAAI0wD,IAAAA;AAExB,cAAI++E,KAAU,CAAA;AAEd,eAHA/+E,KAAWA,MAAY,CAAA,GAGV90D,SAAS,GAAG;AACvB,gBAAIg3I,KAAa5yI,GAAG2G,IAAK+pD,GAASA,GAAS90D,SAAS,CAAA,GAAI80D,EAAAA;AAEpDkiF,YAAAA,OACFnD,KAAUhrH,GAAA,EAAwBgrH,EAAAA,EAAS54I,KAAK44I,IAASmD,EAAAA;UAAAA;AAI7D,cAAIh6I,MAAM4I,QAAQmF,EAAAA,GAAM;AACtB,gBAAIksI,KAAev2G,GAAA,EAAqB31B,EAAAA,EAAK9P,KAAK8P,IAAK,SAAUzB,IAAKjN,IAAAA;AACpE,qBAAO+P,GAAQ9C,IAAKlF,IAAIykB,GAAA,EAAwBisC,EAAAA,EAAU75D,KAAK65D,IAAUz4D,EAAAA,CAAAA;YAAAA,CAAAA;AAGvE46I,YAAAA,OACFpD,KAAUhrH,GAAA,EAAwBgrH,EAAAA,EAAS54I,KAAK44I,IAASoD,EAAAA;UAAAA,WAElDjvH,GAASjd,EAAAA,GAAM;AACxB,gBAAI6iC,IAEAspG,KAAcx2G,GAAA,EAAqBkN,KAAYjN,GAAA,EAAa51B,EAAAA,CAAAA,EAAM9P,KAAK2yC,IAAW,SAAUvxC,IAAAA;AAC9F,qBAAO+P,GAAQrB,GAAI1O,EAAAA,GAAM+H,IAAIykB,GAAA,EAAwBisC,EAAAA,EAAU75D,KAAK65D,IAAUz4D,EAAAA,CAAAA;YAAAA,CAAAA;AAG5E66I,YAAAA,OACFrD,KAAUhrH,GAAA,EAAwBgrH,EAAAA,EAAS54I,KAAK44I,IAASqD,EAAAA;UAAAA;AAK7D,iBADArD,KAAUh4H,GAAQg4H,EAAAA;QAAAA;AAsCpB,iBAAS9qH,GAAeppB,IAAAA;AACtB,iBAAO3C,MAAM4I,QAAQjG,EAAAA,IAAOA,KAAM,CAACA,EAAAA;QAAAA;AAGrC,iBAASkc,GAAQlc,IAAAA;AACf,cAAI6tC;AAEJ,iBAAO3kB,GAAA,EAAwB2kB,KAAO,CAAA,CAAA,EAAI/hC,MAAM+hC,IAAM1M,GAAA,EAAmBJ,GAAA,EAAqB/gC,EAAAA,EAAK1E,KAAK0E,IAAK,SAAU2J,IAAAA;AACrH,mBAAOtM,MAAM4I,QAAQ0D,EAAAA,IAAOuS,GAAQvS,EAAAA,IAAOA;UAAAA,CAAAA,CAAAA,CAAAA;QAAAA;AAI/C,iBAAS6sI,GAAWx2I,IAAAA;AAClB,iBAAOgtB,GAAA,EAAwBhtB,EAAAA,EAAK1E,KAAK0E,IAAK,SAAUynH,IAAAA;AACtD,mBAAA,WAAcA;UAAAA,CAAAA;QAAAA;AAOlB,iBAASp/F,GAAS1e,IAAAA;AAChB,iBAAOA,MAAwB,aAAjBpO,GAAA,EAAQoO,EAAAA;QAAAA;AAOxB,iBAAS+e,GAAW/e,IAAAA;AAClB,iBAAOA,MAAsB,cAAA,OAARA;QAAAA;AAOvB,iBAASotI,GAAY9C,IAAAA;AACnB,cAAIgD,GAAQhD,EAAAA,GAAQ;AAClB,gBAAIvsG,KAAKusG,GAAMvsG;AACf,mBAAc,UAAPA,MAAuB,aAAPA,MAA0B,cAAPA;UAAAA;AAG5C,iBAAA;QAAO;AAOT,iBAASwvG,GAAWjD,IAAAA;AAClB,iBAAO8C,GAAY9C,EAAAA,KAAUgD,GAAQhD,EAAAA,KAAyB,eAAfA,GAAM7xI;QAAAA;AAGvD,iBAAS+zI,GAAmBlC,IAAAA;AAC1B,iBAAOiD,GAAWjD,EAAAA,MAAwB,UAAbA,GAAMvsG,MAA6B,cAAbusG,GAAMvsG,MAAiC,YAAbusG,GAAMvsG,MAA+B,gBAAbusG,GAAMvsG;QAAAA;AAO7G,iBAASuvG,GAAQhD,IAAAA;AACf,iBAAOA,MAA4B,aAAnB14I,GAAA,EAAQ04I,EAAAA;QAAAA;AAG1B,iBAAS+B,GAAgB5qI,IAAKosI,IAAAA;AAC5B,cAAA;AACE,mBAAO,GAA4BpsI,IAAKosI,EAAAA;UAAAA,SACjCr6I,IAAP;AAGA,mBAFA8tB,QAAQtiB,MAAMxL,EAAAA,GAEP,CAAA;UAAA;QAAA;AAAA,YAAA,KAAAP,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA,KAAAA,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA66I,MAAA76I,GAAA,EAAA,GAAA,KAAAA,GAAA,EAAA66I,GAAA;ACzWI,iBAASC,GAAgBh8I,IAAMkyH,IAAAA;AAC5C,mBAASjkG,KAAAA;AACF/gB,kBAAM8qC,oBAGT9qC,MAAM8qC,kBAAkBxxC,MAAMA,KAAKxE,WAAAA,IAFnCwE,KAAKgS,QAAQ,IAAItL,QAAQsL;AAK3B,qBAASglB,KAAO/0B,UAAU9D,QAAQ67C,KAAO,IAAI7+C,MAAM67B,EAAAA,GAAOE,KAAO,GAAGA,KAAOF,IAAME;AAC/E8iB,cAAAA,GAAK9iB,EAAAA,IAAQj1B,UAAUi1B,EAAAA;AAGzBl3B,iBAAK2hC,UAAUqY,GAAK,CAAA,GAEhB0xE,MACFA,GAAK9hH,MAAM5J,MAAMg6C,EAAAA;UAAAA;AAOrB,iBAHAvyB,GAAE5sB,YAAY,IAAI6L,SAClB+gB,GAAE5sB,UAAUrB,OAAOA,IACnBiuB,GAAE5sB,UAAUW,cAAcisB,IACnBA;QAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCfLguH,KAAwB,CAAC,YAAA,GAGzBC,KAAgC,CAAC,YAAA,GAKjCC,KAAmB,CACvB,eAAe,cAAc,aAAa,uBAC1C,sBAAsB,wBAAwB,yBAAyB,4BAAA,GAKnEC,KAAuB,CAAC,kBAAkB,eAAA;AACvC,iBAASC,GAAcC,IAAAA;AAC5B,cAAIC,KAAYD,GAAWA,GAAW33I,SAAS,CAAA,GAC3C63I,KAAiBF,GAAWA,GAAW33I,SAAS,CAAA,GAChD83I,KAAYH,GAAW71H,KAAK,GAAA;AAChC,iBACEw1H,GAAsB7tI,QAAQmuI,EAAAA,IAAAA,MAAc,OAAKL,GAA8B9tI,QAAQouI,EAAAA,KAA0BL,GAAiB/tI,QAAQquI,EAAAA,IAAAA,MAAmBL,GAAqBp6H,KAAK,SAAUmtG,IAAAA;AAC/L,mBAAOstB,GAAUruI,QAAQ+gH,EAAAA,IAAAA;UAAO,CAAA;QAAA;AA6B/B,iBAASutB,GAAkB3E,IAAS/B,IAAAA;AACzC,cAAIr2G,IAEAg9G,KAAiB5E,GAAQ9iH,MAAM,GAAA,GAC/B2nH,KAAkBx3G,GAAA,EAAeu3G,IAAgB,CAAA,GACjDE,KAAUD,GAAgB,CAAA,GAC1BE,KAAeF,GAAgB,CAAA,GAE/BG,KAAgB,GAAA,EAAIr0G,QAAQm0G,MAAW,IAAI7G,MAAW,EAAA;AAC1D,iBAAO8G,KAAetvH,GAAA,EAAwBmS,KAAY,GAAGtf,OAAO08H,IAAe,GAAA,CAAA,EAAMn9I,KAAK+/B,IAAWm9G,EAAAA,IAAgBC;QAAAA;AClEpH,YAAIC,KAAoC,sCCiB3CC,KAAsB,wBACtBC,KAAe,GAAY,gBAAgB,SAAY/0G,IAASg1G,IAAOC,IAAAA;AACzE52I,eAAK62I,gBAAgBD,IAErB,GAAA,EAAe52I,MAAM22I,MAAS,CAAA,CAAA;QAAA,CAAA,GAE5BG,KAAW,CAAA,GACXC,KAAc,IAAI,GAAA,KAClBC,KAAwB,CAC5B,SAAUtjH,IAAAA;AACR,iBACc,YAAZA,GAAK,CAAA,KAA8B,gBAAZA,GAAK,CAAA,KAAkC,eAAZA,GAAK,CAAA;QAAA,GAG3D,SAAUA,IAAAA;AACR,iBACc,YAAZA,GAAK,CAAA,KAA8B,gBAAZA,GAAK,CAAA,KAAkC,cAAZA,GAAK,CAAA,KAAgC,cAAZA,GAAK,CAAA;QAAA,GAEjF,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,gBAAZA,GAAK,CAAA,KAAkC,cAAZA,GAAK,CAAA,KAAgC,eAAZA,GAAK,CAAA,KAAiC,YAAZA,GAAK,CAAA;QAAA,GAG9G,SAAUA,IAAAA;AACR,iBACc,YAAZA,GAAK,CAAA,KAA8B,kBAAZA,GAAK,CAAA,KAAoC,cAAZA,GAAK,CAAA,KAAgC,cAAZA,GAAK,CAAA;QAAA,GAEnF,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,kBAAZA,GAAK,CAAA,KAAoC,cAAZA,GAAK,CAAA,KAAgC,eAAZA,GAAK,CAAA,KAAiC,YAAZA,GAAK,CAAA;QAAA,GAGhH,SAAUA,IAAAA;AACR,iBACc,YAAZA,GAAK,CAAA,KAA8B,iBAAZA,GAAK,CAAA,KAAmC,cAAZA,GAAK,CAAA;QAAA,GAEzD,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,iBAAZA,GAAK,CAAA,KAAmC,cAAZA,GAAK,CAAA;QAAA,GAEzD,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,iBAAZA,GAAK,CAAA,KAAmC,eAAZA,GAAK,CAAA,KAAiC,YAAZA,GAAK,CAAA;QAAA,GAEnF,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,iBAAZA,GAAK,CAAA,KAAmC,eAAZA,GAAK,CAAA,KAAiC,YAAZA,GAAK,CAAA;QAAA,GAEnF,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,iBAAZA,GAAK,CAAA,KAAmC,cAAZA,GAAK,CAAA,KAAgC,cAAZA,GAAK,CAAA;QAAA,GAElF,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,iBAAZA,GAAK,CAAA,KAAmC,cAAZA,GAAK,CAAA,KAAgC,eAAZA,GAAK,CAAA,KAAiC,YAAZA,GAAK,CAAA;QAAA,GAE5G,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,iBAAZA,GAAK,CAAA,KAAmC,cAAZA,GAAK,CAAA,KAAgC,cAAZA,GAAK,CAAA;QAAA,GAElF,SAAUA,IAAAA;AACX,iBACc,YAAZA,GAAK,CAAA,KAA8B,iBAAZA,GAAK,CAAA,KAAmC,cAAZA,GAAK,CAAA,KAAgC,eAAZA,GAAK,CAAA,KAAiC,YAAZA,GAAK,CAAA;QAAA,CAAA,GAiC3G,KAAS,EACXl5B,KAAK,QACLmrG,QAAQ,SAAgBjoG,IAAKlD,IAAKqoC,IAAUo0G,IAAAA;AAC1C,cAAIC,KAAkBD,GAAQE,YAAAA,GAE1BtzB,KAAS3kF,GAAA,EAAuB2D,EAAAA,EAAUzpC,KAAKypC,IAAU,GAAA,EAAI;AAEjE,cAAA,CAAIgzG,GAAchyB,EAAAA,MApCmCnwF,KAoCHmwF,IAAAA,CAnC7CmzB,GAAsBx7H,KAAK,SAAUjZ,IAAAA;AAC1C,mBAAOA,GAAGmxB,EAAAA;UAAAA,CAAAA,IAkCV;AApCuB,gBAA8BA,IAyCjDgP,KADsBu0G,GAAQG,WAAWv0G,EAAAA,EACXH;AAElC,gBAAmB,YAAA,OAARhlC;AACT,qBAAO,IAAIg5I,GAAa,qCAAqC,EAC3D3oG,MAAMrwC,IACNglC,SAASA,IACTG,UAAUA,GAAAA,CAAAA;AAId,gBAGIowB,IAaAokF,IACAviD,IAjBAwiD,KAAc7oH,GAAM/wB,EAAAA,GACpB65I,KAAUD,GAAY,CAAA,GACtB/F,KAAU+F,GAAY,CAAA,KAAM;AAGhC,gBAAA;AACErkF,cAAAA,KAAWvwB,MAAW60G,KAAUC,GAAYD,IAAS70G,EAAAA,IAAW;YAAA,SACzDznC,IAAP;AACA,qBAAOw8I,GAAUx8I,IAAG,EAClBs2I,SAASA,IACTxjG,MAAMrwC,IACNu1D,UAAUA,IACVpwB,UAAUA,GAAAA,CAAAA;YAAAA;AAOd,gBAgWJ,SAA8B0uG,IAASt+E,IAAU4wD,IAAQozB,IAAAA;AACvD,kBAAIlqG,IAAWM,IAEX40D,KAAO80C,GAAYj9I,IAAIm9I,EAAAA;AAEtBh1C,cAAAA,OAGHA,KAAO,CAAA,GACP80C,GAAYrtI,IAAIutI,IAASh1C,EAAAA;AAG3B,kBAAIy1C,KA5CN,SAA4B55I,IAAAA;AAC1B,oBAAmB,MAAfA,GAAIK;AACN,yBAAO;AAGT,uBAAO,IAAI0b,OAAOglB,GAAA,EAAqB/gC,EAAAA,EAAK1E,KAAK0E,IAAK65I,EAAAA,EAAwB13H,KAAK,GAAA,CAAA;cAAA,EAuC5C4jG,EAAAA,GAEnC+zB,KAAwB5wH,GAAA,EAAwB+lB,KAAY,GAAGlzB,OAAOo5C,MAAY,kBAAkB,GAAA,CAAA,EAAM75D,KAAK2zC,IAAWwkG,EAAAA,GAY1HsG,KAAoBH,GAAcvuH,QAAQ,kBAAkB,EAAA,GAI5D2uH,KAAUb,GAAQc,YAAYj+I,IAAI,CAAA,CAAA,EAAI4oC;AAE1C,kBAAIuwB,OAAa6kF,MAAWE,GAAiBH,IAAmBtG,EAAAA;AAE9D,uBAAA;AAQF,kBAAI0G,KAAW;AAUf,kBATuBp0B,GAAOroG,KAAK,SAAUmzC,IAAAA;AAC3C,oBAAIzhB;AAGJ,uBADA+qG,KAAWjxH,GAAA,EAAwBkmB,KAAY,GAAGrzB,OAAOo+H,IAAU,GAAA,CAAA,EAAM7+I,KAAK8zC,IAAWyqG,GAAuBhpF,EAAAA,CAAAA,GACzGszC,GAAKg2C,EAAAA,KAAah2C,GAAKg2C,EAAAA,EAAUz8H,KAAK,SAAU9d,IAAAA;AACrD,yBAAOs6I,GAAiBt6I,IAAKk6I,EAAAA,KAA0BI,GAAiBJ,IAAuBl6I,EAAAA;gBAAAA,CAAAA;cAAAA,CAAAA;AAKjG,uBAAA;AAMF,qBAAA,MADAukG,GAAK41C,EAAAA,IAAqB7wH,GAAA,EAAwBqmB,KAAY40D,GAAK41C,EAAAA,KAAsB,CAAA,CAAA,EAAIz+I,KAAKi0C,IAAWuqG,EAAAA;YAAAA,EA1ZlFrG,IAASt+E,IAAU4wD,IAAQozB,EAAAA,KAAAA,CAK7CC,GAAgBgB,uBAAuB;AAC1C,kBAAIC,KAAmBjC,GAAkBx4I,IAAKu1D,EAAAA;AAE9C,qBAAIv1D,OAAQy6I,KAGH,OAGF,GAAIhvH,QAAQ0Z,IAAUs1G,EAAAA;YAAAA;AAiCjC,gBA7BgB,QAAZllF,MACF6hC,KAASsjD,GAAmB7G,EAAAA,GAAAA,YAC5B8F,KAAYJ,GAAQn9I,IAAIg7F,EAAAA,OAGtBuiD,KAAY,IAAIX,GAAa,gCAAgC78H,OAAOnc,EAAAA,GAAM,EACxE6zI,SAASA,IACTxjG,MAAMrwC,IACNglC,SAASA,IACTG,UAAUA,GAAAA,CAAAA,MAOZw0G,KADuB,SAFzBA,KAAYgB,GAAeplF,IAAUs+E,EAAAA,GAEvB+G,UACAjB,GAAUiB,UAEVjB,GAAUlwG,MAAM,SAAUlsC,IAAAA;AACpC,oBAAMw8I,GAAUx8I,IAAG,EACjBs2I,SAASA,IACTxjG,MAAMrwC,IACNglC,SAASA,IACTG,UAAUA,GAAAA,CAAAA;YAAAA,CAAAA,GAMdw0G,cAAqB3wI;AACvB,qBAAO,CAAC,GAAIsE,OAAO63B,EAAAA,GAAWw0G,EAAAA;AAGhC,gBAAIkB,KAAkBrC,GAAkBx4I,IAAKu1D,EAAAA,GACzC8+E,KAAQ,GAAI5oH,QAAQ06F,IAAQwzB,IAAW,EACzC5qH,OAAO8rH,GAAAA,CAAAA;AAGT,gBAAItlF,MAAYA,OAAavwB;AAC3B,qBAAO,CAACqvG,IAAO,GAAIj6H,QAAQ+rG,IAAQ,EACjCnhF,SAASuwB,GAAAA,CAAAA,CAAAA;AAIb,gBAAA;AAGE,kBAAA,CAiWN,SAAiC3kD,IAAMyjI,IAAAA;AACrC,oBAAIyG,KAAY,CAAClqI,EAAAA;AAKjB,uBAJAyjI,GAAMr+G,KAAKzZ,OAAO,SAAU4pG,IAAQ9oH,IAAAA;AAElC,yBADAy9I,GAAU5oI,KAAKi0G,GAAO9oH,EAAAA,CAAAA,GACf8oH,GAAO9oH,EAAAA;gBAAAA,GACbuT,EAAAA,GACImqI,GAAgB1G,GAAM73I,KAAAA;AAE7B,yBAASu+I,GAAgBvvI,IAAAA;AACvB,yBAAO,GAAIid,SAASjd,EAAAA,MAASsvI,GAAU5wI,QAAQsB,EAAAA,KAAQ,KAAK41B,GAAA,EAAa51B,EAAAA,EAAKsS,KAAK,SAAUrb,IAAAA;AAC3F,2BAAOs4I,GAAgBvvI,GAAI/I,EAAAA,CAAAA;kBAAAA,CAAAA;gBAAAA;cAAAA,EA3WE82I,GAAQr9F,OAAOm4F,EAAAA,KAAUmF,GAAgBgB;AACpE,uBAAOnG;YAAAA,SAEF92I,IAAP;AASA,qBAAO;YAAA;UAAA;QAAA,EAAA,GAOTwuI,KAAM,GAAA,EAAe,IAAQ,EAC/BqN,UAAUA,IACVU,aAAaA,IACb/gH,YAyGF,SAAoB9K,IAAAA;AAAAA,qBACPA,KAAAA,OACFmrH,GAASnrH,EAAAA,IAEhBmT,GAAA,EAAag4G,EAAAA,EAAUvsI,QAAQ,SAAU/P,IAAAA;AAAAA,mBAChCs8I,GAASt8I,EAAAA;UAAAA,CAAAA;QAAAA,GA7GpBk8I,cAAcA,IACde,WAAWA,IACXiB,QAAQA,IACRjqH,OAAOA,IACP4pH,gBAAgBA,IAChBM,WA2IF,SAAmBC,IAAAA;AACjB,iBAAO32G,MAAM22G,IAAS,EACpBhpF,SAAS,EACPipF,QAAQrC,GAAAA,GAEVlX,UAAAA,KAAU,CAAA,EACT38F,KAAK,SAAUhb,IAAAA;AAChB,mBAAOA,GAAIqc,KAAAA;UAAAA,CAAAA,EACVrB,KAAK,SAAUqB,IAAAA;AAChB,mBAAOnU,GAAA,EAAO7B,KAAKgW,EAAAA;UAAAA,CAAAA;QAAAA,GAnJrB80G,SAASA,IACTV,oBAAoBA,IACpBW,0BAA0BA,GAAAA,CAAAA,GAGb,KAAA;AASf,iBAASvB,GAAY9jH,IAAMu/B,IAAAA;AACzB,cAAA,CAAKwjF,GAAoBlrH,KAAKmI,EAAAA,GAAO;AAEjC,gBAAIwF;AADN,gBAAA,CAAK+5B;AAGH,oBAAM,IAAIyjF,GAAa1vH,GAAA,EAAwBkS,KAAW,sEAAsErf,OAAO6Z,IAAM,eAAA,CAAA,EAAkBt6B,KAAK8/B,IAAU+5B,IAAU,GAAA,CAAA;AAG1L,mBAAO,GAAA,EAAI/wB,QAAQ+wB,IAAUv/B,EAAAA;UAAAA;AAG/B,iBAAOA;QAAAA;AAWT,iBAAS+jH,GAAUx8I,IAAG07I,IAAAA;AACpB,cAAIh1G,IAGExI;AADFl+B,UAAAA,MAAKA,GAAE81D,YAAY91D,GAAE81D,SAASd,OAGhCtuB,KAAU3a,GAAA,EAAwBmS,KAAY,GAAGtf,OAAO5e,GAAE81D,SAASd,KAAKhZ,MAAM,GAAA,CAAA,EAAM79C,KAAK+/B,IAAWl+B,GAAE81D,SAASd,KAAKtuB,OAAAA,IAEpHA,KAAU1mC,GAAE0mC;AAGd,iBAAO,IAAI+0G,GAAa,gCAAgC78H,OAAO8nB,EAAAA,GAAUg1G,IAAO17I,EAAAA;QAAAA;AAQlF,iBAASwzB,GAAM/wB,IAAAA;AACb,kBAAQA,KAAM,IAAI+wB,MAAM,GAAA;QAAA;AAW1B,iBAAS4pH,GAAeO,IAASrH,IAAAA;AAC/B,cAAI7sB,KAAMoyB,GAAS8B,EAAAA;AAEnB,cAAIl0B,MAAAA,CAAQ,GAAI6vB,UAAU7vB,EAAAA;AAOxB,gBAAA;AACE,kBAAItkH,KAAI04I,GAAQvH,IAAS7sB,EAAAA;AACzB,qBAAO,GAAA,EAAe,GAAA,EAASxiF,QAAQ9hC,EAAAA,GAAI,EACzCk4I,SAASl4I,GAAAA,CAAAA;YAAAA,SAEJnF,IAAP;AACA,qBAAO,GAAA,EAASqrD,OAAOrrD,EAAAA;YAAAA;AAI3B,iBAAOy9I,GAAOE,EAAAA,EAASj2G,KAAK,SAAUq2G,IAAAA;AACpC,mBAAOF,GAAQvH,IAASyH,EAAAA;UAAAA,CAAAA;QAAAA;AA2B5B,iBAASN,GAAOE,IAAAA;AACd,cAAInxI,KAAMqvI,GAAS8B,EAAAA;AAEnB,iBAAInxI,KACK,GAAI8sI,UAAU9sI,EAAAA,IAAOA,KAAM,GAAA,EAASy6B,QAAQz6B,EAAAA,KAKrDqvI,GAAS8B,EAAAA,IAAWnP,GAAIkP,UAAUC,EAAAA,EAASj2G,KAAK,SAAU+hF,IAAAA;AAExD,mBADAoyB,GAAS8B,EAAAA,IAAWl0B,IACbA;UAAAA,CAAAA,GAEFoyB,GAAS8B,EAAAA;QAAAA;AA+BlB,iBAASE,GAAQvH,IAASroI,IAAAA;AACxB,cAAI4rF,KAASsjD,GAAmB7G,EAAAA;AAEhC,cAAIz8C,GAAO32F,SAAS;AAClB,mBAAO+K;AAGT,cAAIzB,KAAM,GAAIoa,MAAM3Y,IAAK4rF,EAAAA;AAEzB,cAAA,WAAWrtF;AACT,kBAAM,IAAIivI,GAAa,8BAA8B78H,OAAO03H,IAAS,6BAAA,GAAgC,EACnGA,SAASA,GAAAA,CAAAA;AAIb,iBAAO9pI;QAAAA;AAQT,iBAAS2wI,GAAmB7G,IAAAA;AAC1B,cAAIxlG;AAEJ,cAAuB,YAAA,OAAZwlG;AACT,kBAAM,IAAIvtI,UAAU,4BAA4B6V,OAAOxgB,GAAA,EAAQk4I,EAAAA,CAAAA,CAAAA;AAOjE,iBAJmB,QAAfA,GAAQ,CAAA,MACVA,KAAUA,GAAQ/iH,OAAO,CAAA,IAGX,OAAZ+iH,KACK,CAAA,IAGF1yG,GAAA,EAAqBkN,KAAYwlG,GAAQ9iH,MAAM,GAAA,CAAA,EAAMr1B,KAAK2yC,IAAWgtG,EAAAA;QAAAA;AAQ9E,iBAASA,GAAyBpqF,IAAAA;AAChC,iBAAqB,YAAA,OAAVA,KACFA,KAGI,IAAI,GAAA,EAAiB,IAAI90C,OAAO80C,GAAMxlC,QAAQ,OAAO,GAAA,EAAKA,QAAQ,OAAO,GAAA,CAAA,CAAA,EACxErvB,IAAI,EAAA;QAAA;AAQpB,iBAAS69I,GAAuBhpF,IAAAA;AAC9B,cAAIxiB,IAEA5d,KAAS,IAAI,GAAA,EAAiB,CAAC,CAAC,IAAIogC,GAAMxlC,QAAQ,MAAM,IAAA,EAAMA,QAAQ,OAAO,IAAA,CAAA,CAAA,CAAA;AACjF,iBAAO+V,GAAA,EAAuBiN,KAAY5d,GAAO7sB,SAAAA,CAAAA,EAAYtI,KAAK+yC,IAAW,CAAA;QAAA;AAe/E,iBAAS6rG,GAAiBzG,IAASmG,IAAAA;AACjC,cAAA,EALqDp+I,KAK7Bo+I,OAJL,QAANp+I,MAAmB,QAANA;AAMxB,mBAAA;AAPsB,cAA6BA,IAUjD+pG,KAAWkuC,GAAQp6F,OAAOugG,GAAcv5I,MAAAA,GAExC86I,KAAiB/5G,GAAA,EAAuBw4G,EAAAA,EAAet+I,KAAKs+I,IAAAA,EAAgB;AAEhF,iBAA0C,MAAnCnG,GAAQ3pI,QAAQ8vI,EAAAA,MAAAA,CAA0Br0C,MAAyB,QAAbA,MAAiC,QAAbA,OAAwC,QAAnB41C;QAAAA;AC1ezF,YAAA,KAAA,EACbz+I,KAAK,SACLmrG,QAAQ,SAAgBl+F,IAAKjN,IAAKqoC,IAAUo0G,IAASlF,IAAAA;AAInD,cAAA,CAAIA,GAAMh9E,QAAAA,CAAQg9E,GAAMh9E,KAAKtoC,OAA7B;AAIA,gBAAIo3F,KAAS3kF,GAAA,EAAuB2D,EAAAA,EAAUzpC,KAAKypC,IAAU,GAAA,EAAI;AAEjE,gBAAA,CAAIgzG,GAAchyB,EAAAA,GAAlB;AAIA,kBAAA,CAAK1oH,MAAM4I,QAAQ0D,EAAAA,GAAM;AACvB,oBAAI2jB,KAAM,IAAIpnB,UAAU,wBAAA;AAGxB,uBAFAonB,GAAIyX,WAAWA,IAERzX;cAAAA;AAGT,kBAAI8tH,KAAAA,OAGAC,KAAwBpH,GAAM73I;AAQlC,kBAPA2pH,GAAOt5G,QAAQ,SAAUuhD,IAAAA;AAClBqtF,gBAAAA,OAELA,KAAwBA,GAAsBrtF,EAAAA;cAAAA,CAAAA,GAEhDqtF,KAAwB,GAAA,EAAc,CAAA,GAAIA,EAAAA,GAES,MAA/Cr6G,GAAA,EAAaq6G,EAAAA,EAAuBh7I,QAAxC;AAAA,uBAIOg7I,GAAsBC;AAC7B,oBAsCMjgH,IAWA4S,IAjDFqnG,KAAU,CAAA;AAqCd,oBAnCAA,GAAQxjI,KAAKqnI,GAAQ9tH,QAAQ06F,IAAQ,CAAA,CAAA,CAAA,GACrCp8G,GAAI8C,QAAQ,SAAU8uI,IAASpgJ,IAAAA;AAC7B,sBAAA,CAAKg+I,GAAQ9wH,SAASkzH,EAAAA,GAAU;AAC9B,wBAAIH;AACF,6BAAO;AAGTA,oBAAAA,KAAAA;AAEA,wBAAII,KAAO,IAAIt1I,UAAU,mCAAA;AAIzB,2BAFAs1I,GAAKz2G,WAAWA,IAETuwG,GAAQxjI,KAAK0pI,EAAAA;kBAAAA;AAItBlG,kBAAAA,GAAQxjI,KAAKqnI,GAAQjrI,UAAU63G,IAAQw1B,EAAAA,CAAAA;AAGvC,sBAEIE,KHpCH,SAAoCrwI,IAAK+pD,IAAAA;AAC9C,wBAAItnB,KAAO1pC,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA,GAC3Eg1I,KAAUtrG,GAAKsrG,SACfuC,KAAwB7tG,GAAK8tG,uBAC7BA,KAAAA,WAAwBD,KAAmC,SAAU9lH,IAAAA;AACvE,0BAAIwF;AAEJ,6BAAO+9G,GAAQG,WAAWpwH,GAAA,EAAwBkS,KAAW,CAAA,CAAA,EAAI9/B,KAAK8/B,IAAU+F,GAAA,EAAmBg0B,EAAAA,GAAWh0B,GAAA,EAAmBvL,EAAAA,CAAAA,CAAAA,EAAQgP;oBAAAA,IACvI82G,IACAE,KAAkB/tG,GAAKguG,YACvBA,KAAAA,WAAaD,KAA6B,CAAC,QAAQ,OAAA,IAAWA,IAE9DtG,KAAU,CAAA;AAWd,2BAVA,GAAA,EAASlqI,EAAAA,EAAKqB,QAAQ,WAAA;AACpB,0BAAI9E,GAAA,EAA0Bk0I,EAAAA,EAAYvgJ,KAAKugJ,IAAY35I,KAAKxF,GAAAA,KAA6B,YAAA,OAAdwF,KAAK8J,MAAmB;AACrG,4BAAI8vI,KAAW55I,KAAK0zB,MAEhBmP,KAAW7b,GAAA,EAAwBisC,EAAAA,EAAU75D,KAAK65D,IAAUjzD,KAAK0zB,IAAAA,GAEjEmmH,KAAuB3D,GAAkBl2I,KAAK8J,MAAM2vI,GAAsBG,EAAAA,CAAAA;AAC9ExG,wBAAAA,GAAQxjI,KAAKqnI,GAAQ9tH,QAAQ0Z,IAAUg3G,EAAAA,CAAAA;sBAAAA;oBAAAA,CAAAA,GAGpCzG;kBAAAA,EGaiDiG,IAF5Bn6G,GAAA,EAAuB2D,EAAAA,EAAUzpC,KAAKypC,IAAU,GAAA,EAAI,GAEI,EAC9E42G,uBAAuB,SAA+BG,IAAAA;AACpD,wBAAI1gH;AAEJ,2BAAO+9G,GAAQG,WAAWpwH,GAAA,EAAwBkS,KAAW,CAAA,CAAA,EAAI9/B,KAAK8/B,IAAU+F,GAAA,EAAmB4D,EAAAA,GAAW,CAAC5pC,EAAAA,GAAIgmC,GAAA,EAAmB26G,EAAAA,CAAAA,CAAAA,EAAYl3G;kBAAAA,GAEpJu0G,SAASA,GAAAA,CAAAA;AAEX7D,kBAAAA,GAAQxjI,KAAKhG,MAAMwpI,IAASn0G,GAAA,EAAmBs6G,EAAAA,CAAAA;gBAAAA,CAAAA,GAK7CJ,GAAsBliE;AAIxBm8D,kBAAAA,GAAQxjI,KAAKqnI,GAAQjsI,OAAOgc,GAAA,EAAwBmS,KAAY,CAAA,CAAA,EAAI//B,KAAK+/B,IAAW0qF,IAAQ,SAAA,CAAA,CAAA;AAO9F,oBAHAuvB,GAAQxjI,KAAKqnI,GAAQjrI,UAAU63G,IAAQs1B,EAAAA,CAAAA,GAAAA,CAGlCA,GAAsB1sH;AAGzB2mH,kBAAAA,GAAQxjI,KAAKqnI,GAAQjsI,OAAOgc,GAAA,EAAwB+kB,KAAY,CAAA,CAAA,EAAI3yC,KAAK2yC,IAAW83E,IAAQ,OAAA,CAAA,CAAA;AAG9F,uBAAOuvB;cAAAA;YAAAA;UAAAA;QAAAA,EAAAA,GC/FI0G,MAAA,EACbt/I,KAAK,cACLmrG,QAAQ,SAAgBjgE,IAAYlrC,IAAKqoC,IAAUo0G,IAAAA;AACjD,cAAI97I,MAAM4I,QAAQ2hC,EAAAA,KAAeA,GAAWvnC,QAAQ;AAClD,gBAAIsJ,KAAM,GAAA,EAAe,CAAA,GAAIi+B,EAAAA,GAEzBq0G,KAAS76G,GAAA,EAAuB2D,EAAAA,EAAUzpC,KAAKypC,IAAU,GAAA,EAAI,GAE7D2C,KAAK,GAAA,EAAc,CAAA,GAAI,GAAI3jB,MAAMo1H,GAAQl2G,MAAMg5G,EAAAA,CAAAA;AAanD,mBAXAr0G,GAAWn7B,QAAQ,SAAUyhB,IAAO/yB,IAAAA;AAClC,kBAAA;AACEwO,gBAAAA,GAAIxO,EAAAA,EAAGivC,UAAU+uG,GAAQ30G,eAAekD,IAAIxZ,EAAAA;cAAAA,SACrC/wB,IAAP;AACA,oBAAImwB,KAAM,IAAI1kB,MAAMzL,EAAAA;AAEpB,uBADAmwB,GAAIyX,WAAWA,IACRzX;cAAAA;YAAAA,CAAAA,GAKJ,GAAIjC,QAAQ0Z,IAAUp7B,EAAAA;UAAAA;AAG/B,iBAAO,GAAI0hB,QAAQ0Z,IAAU6C,EAAAA;QAAAA,EAAAA,GC1BlBs0G,MAAA,EACbx/I,KAAK,cACLmrG,QAAQ,SAAgBh5E,IAAYnyB,IAAKqoC,IAAUo0G,IAAAA;AACjD,cAAIxvI,KAAM,GAAA,EAAc,CAAA,GAAIklB,EAAAA;AAG5B,mBAASxsB,MAAKwsB;AACZ,gBAAA;AACEllB,cAAAA,GAAItH,EAAAA,EAAG+nC,UAAU+uG,GAAQ50G,mBAAmB56B,GAAItH,EAAAA,CAAAA;YAAAA,SACzClF,IAAP;AACA,kBAAImwB,KAAM,IAAI1kB,MAAMzL,EAAAA;AAGpB,qBAFAmwB,GAAIyX,WAAWA,IAERzX;YAAAA;AAKX,iBADY,GAAIjC,QAAQ0Z,IAAUp7B,EAAAA;QAAAA,EAAAA,GCblCwyI,MAA2B,WAAA;AAC7B,mBAASC,GAAYhgJ,IAAAA;AACnB,eAAA,EAAgB8F,MAAMk6I,EAAAA,GAEtBl6I,KAAKsO,OAAO6rI,GAAWjgJ,MAAS,CAAA,CAAA;UAAA;AA6ElC,iBA1EA,GAAA,EAAaggJ,IAAa,CAAC,EACzB1/I,KAAK,OACLN,OAAO,SAAaw5B,IAAMx5B,IAAAA;AACxB,gBAAI2pH,KAAS7jH,KAAKo6I,UAAU1mH,IAAAA,IAAM;AAElC,gBAAKmwF,IAAL;AAKA,kBAAIrpH,KAAMk5B,GAAKA,GAAKv1B,SAAS,CAAA,GACzBo7D,KAAWsqD,GAAOtqD;AAElBA,cAAAA,GAAS/+D,EAAAA,IACXmU,IAAW4qD,GAAS/+D,EAAAA,GAAMN,IAAO2pH,EAAAA,IAInCtqD,GAAS/+D,EAAAA,IAAO2/I,GAAWjgJ,IAAO2pH,EAAAA;YAAAA;AAZhCl1G,cAAAA,IAAW3O,KAAKsO,MAAMpU,IAAO,IAAA;UAAA,EAAA,GAehC,EACDM,KAAK,OACLN,OAAO,SAAaw5B,IAAAA;AAGlB,iBAFAA,KAAOA,MAAQ,CAAA,GAENv1B,SAAS;AAChB,qBAAO6B,KAAKsO,KAAKpU;AAOnB,qBAHIs/D,IACA7K,IAFA0rF,KAASr6I,KAAKsO,MAITrV,KAAI,GAAGA,KAAIy6B,GAAKv1B,WACvBwwD,KAAQj7B,GAAKz6B,EAAAA,IACbugE,KAAQ6gF,GAAO9gF,UAEJ5K,EAAAA,IAJoB11D,MAAK;AAQpCohJ,cAAAA,KAAS7gF,GAAM7K,EAAAA;AAGjB,mBAAO0rF,MAAUA,GAAOC;UAAAA,EAAAA,GAEzB,EACD9/I,KAAK,aACLN,OAAO,SAAmBw5B,IAAM6mH,IAAAA;AAC9B,mBAAA,CAAK7mH,MAAQA,GAAKv1B,SAAS,IAClB,OAGLu1B,GAAKv1B,SAAS,IACT6B,KAAKsO,OAGP4wB,GAAA,EAAuBxL,EAAAA,EAAMt6B,KAAKs6B,IAAM,GAAA,EAAI,EAAGzZ,OAAO,SAAUogI,IAAQ1rF,IAAAA;AAC7E,kBAAA,CAAK0rF;AACH,uBAAOA;AAGT,kBAAI9gF,KAAW8gF,GAAO9gF;AAMtB,qBAAA,CAJKA,GAAS5K,EAAAA,KAAU4rF,OACtBhhF,GAAS5K,EAAAA,IAASwrF,GAAW,MAAME,EAAAA,IAG9B9gF,GAAS5K,EAAAA;YAAAA,GACf3uD,KAAKsO,IAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAIL4rI;QAAAA,EAjFsB;AAyF/B,iBAASC,GAAWjgJ,IAAO2pH,IAAAA;AACzB,iBAAOl1G,IAAW,EAChB4qD,UAAU,CAAA,EAAA,GACTr/D,IAAO2pH,EAAAA;QAAAA;AAGZ,iBAASl1G,IAAW7E,IAAM5P,IAAO2pH,IAAAA;AAS/B,iBARA/5G,GAAK5P,QAAQA,MAAS,CAAA,GACtB4P,GAAKwwI,aAAaz2B,KAAS,GAAA,EAAc,GAAA,EAAc,CAAA,GAAIA,GAAOy2B,UAAAA,GAAaxwI,GAAK5P,KAAAA,IAAS4P,GAAK5P,OAElG4kC,GAAA,EAAah1B,GAAKyvD,QAAAA,EAAUhvD,QAAQ,SAAUmvB,IAAAA;AAC5C,gBAAI8/B,KAAQ1vD,GAAKyvD,SAAS7/B,EAAAA;AAC1B5vB,YAAAA,GAAKyvD,SAAS7/B,EAAAA,IAAQ/qB,IAAW6qD,IAAOA,GAAMt/D,OAAO4P,EAAAA;UAAAA,CAAAA,GAGhDA;QAAAA;ACzFT,YAEIipE,KAAO,WAAA;QAAA,GAEP,KAAuB,WAAA;AACzB,mBAASynE,GAAQ5G,IAAAA;AACf,gBACI16G,IACAC,IAFA6xE,KAAQhrG;AAIZ,eAAA,EAAgBA,MAAMw6I,EAAAA,GAEtB,GAAA,EAAex6I,MAAM,EACnB+gC,MAAM,IACN05G,YAAY,QACZC,SAAS,CAAA,GACTC,eAAe,CAAA,GACfhxH,QAAQ,CAAA,GACR8qH,WAAW,CAAA,GACXmG,iBAAiB,CAAA,GACjBhhG,OAAO,CAAA,GACPw5F,SAAS,CAAA,GACTt7H,SAAS,CAAA,GACTigI,aAAa,IAAIkC,OACjBY,WAAAA,OACAC,YAAY,CAAA,GAEZC,YAAY,WACZC,YAAY,GAAA,EAAerhJ,OAAOY,OAAOyF,IAAAA,GAAO,IAAK,EACnDm3I,aAAa,WAAA;AACX,qBAAOnsC;YAAAA,EAAAA,CAAAA,GAGXgpC,kBAAAA,MAAkB,GACjBJ,EAAAA,GAGH5zI,KAAKlG,MAAMkG,KAAKqxI,KAAK52I,KAAKuF,IAAAA,GAE1BA,KAAKo3I,aAAap3I,KAAKi7I,YAAYxgJ,KAAKuF,IAAAA,GAExCA,KAAKk7I,SAASl7I,KAAKm7I,QAAQ1gJ,KAAKuF,IAAAA,GAEhCA,KAAKo7I,iBAAiBtwH,GAAA,EAAwBoO,KAAW2F,GAAA,EAAqB1F,KAAYn5B,KAAK06I,OAAAA,EAASthJ,KAAK+/B,IAAWn5B,KAAKq7I,WAAW5gJ,KAAKuF,IAAAA,CAAAA,CAAAA,EAAQ5G,KAAK8/B,IAAU,GAAI1S,UAAAA,GAExKxmB,KAAKozI,QAAQxjI,KAAK,GAAIqN,IAAI,CAAA,GAAIjd,KAAK+gC,IAAAA,CAAAA,GACnC/gC,KAAKozI,QAAQxjI,KAAK,GAAIkI,QAAQ,CAAA,GAAI9X,KAAK8X,OAAAA,CAAAA,GACvC9X,KAAKs7I,cAAct7I,KAAKozI,OAAAA;UAAAA;AAmiB1B,iBAhiBA,GAAA,EAAaoH,IAAS,CAAC,EACrBhgJ,KAAK,SACLN,OAAO,SAAe2Z,IAAAA;AACpB,gBAAI7T,KAAKy6I,eAAe5mI,IAAO;AAG7B,uBAFI0nI,IAEKvkH,KAAO/0B,UAAU9D,QAAQ67C,KAAO,IAAI7+C,MAAM67B,KAAO,IAAIA,KAAO,IAAI,CAAA,GAAIE,KAAO,GAAGA,KAAOF,IAAME;AAClG8iB,gBAAAA,GAAK9iB,KAAO,CAAA,IAAKj1B,UAAUi1B,EAAAA;AAAAA,eAG5BqkH,KAAWxyH,SAAS68D,IAAIh8E,MAAM2xI,IAAUvhG,EAAAA;YAAAA;UAAAA,EAAAA,GAI5C,EACDx/C,KAAK,WACLN,OAAO,SAAiBikI,IAAAA;AACtB,gBAAwB,cAApBn+H,KAAKy6I,YAA0B;AAGjC,uBAFIe,IAAWzvG,IAEN3U,KAAQn1B,UAAU9D,QAAQ67C,KAAO,IAAI7+C,MAAMi8B,KAAQ,IAAIA,KAAQ,IAAI,CAAA,GAAIC,KAAQ,GAAGA,KAAQD,IAAOC;AACxG2iB,gBAAAA,GAAK3iB,KAAQ,CAAA,IAAKp1B,UAAUo1B,EAAAA;AAAAA,eAG7BmkH,KAAYzyH,SAAS68D,IAAIh8E,MAAM4xI,IAAWx0H,GAAA,EAAwB+kB,KAAY,CAAC,IAAIlyB,OAAOskH,IAAQ,MAAA,CAAA,CAAA,EAAU/kI,KAAK2yC,IAAWiO,EAAAA,CAAAA;YAAAA;UAAAA,EAAAA,GAIhI,EACDx/C,KAAK,cACLN,OAAO,SAAoByrG,IAAQnsG,IAAAA;AACjC,gBAEI+I,IAmB0Bk5I,IACxBC,IAtBFC,KAAoB37I,KAAK27I,mBACzBC,KAAM;AAYV,mBATIj2C,GAAO3lG,KAAK+6I,UAAAA,KACda,KAAMj2C,IACNpjG,KAAKojG,GAAO3lG,KAAK+6I,UAAAA,KACR,GAAIv0H,WAAWm/E,EAAAA,IACxBpjG,KAAKojG,KACI,GAAIx/E,SAASw/E,EAAAA,MAYM81C,KAXF91C,IAYtB+1C,KAAY,SAAmBhoH,IAAMmoH,IAAAA;AACvC,qBAAA,CAAK1gJ,MAAM4I,QAAQ2vB,EAAAA,KAIZA,GAAK7tB,MAAM,SAAU4B,IAAKxO,IAAAA;AAC/B,uBAAOwO,OAAQo0I,GAAO5iJ,EAAAA;cAAAA,CAAAA;YAAAA,GAlB1BsJ,KAsBoB0kB,GAAA,EAAoB6a,KAAK,SAASg6G,GAAU1I,IAAS6D,IAAAA;AACvE,kBAAI8E,IAASC,IAAUr4I,IAAWsD,IAAO8qI,IAAOkK;AAEhD,qBAAOh1H,GAAA,EAAoBiO,KAAK,SAAoB6X,IAAAA;AAClD;AACE,0BAAQA,GAAU3+B,OAAO2+B,GAAUhtC,MAAAA;oBACjC,KAAK;AACHk8I,sBAAAA,KAAW,SAAmB/yI,IAAKwqB,IAAMq+G,IAAAA;AACvC,4BAAImK,IAAar4B,IAAQs4B,IAAwBC,IAAkBC,IAAWC,IAAI/jH,IAAc/9B,IAAKiN,IAAK80I,IAAaC,IAAOC,IAAQC;AAEtI,+BAAOz1H,GAAA,EAAoBiO,KAAK,SAAmBiX,IAAAA;AACjD;AACE,oCAAQA,GAAU/9B,OAAO+9B,GAAUpsC,MAAAA;8BACjC,KAAK;AACH,oCAAI,GAAIomB,SAASjd,EAAAA,GAAM;AACrBijC,kCAAAA,GAAUpsC,OAAO;AACjB;gCAAA;AAGF,oCAAM07I,GAAUjhJ,QAAQk5B,GAAKA,GAAKv1B,SAAS,CAAA,GAAK;AAC9CguC,kCAAAA,GAAUpsC,OAAO;AACjB;gCAAA;AAIF,uCADAosC,GAAUpsC,OAAO,GACV07I,GAAU91C,OAAOz8F,IAAKuyI,GAAUjhJ,KAAKk5B,IAAMujH,EAAAA;8BAEpD,KAAK;AACH9qG,gCAAAA,GAAUpsC,OAAO;AACjB;8BAEF,KAAK;AACHm8I,gCAAAA,KAAcxoH,GAAKv1B,SAAS,GAC5B0lH,KAASnwF,GAAKwoH,EAAAA,GACdC,KAAyBzoH,GAAK9rB,QAAQ,YAAA,GACtCw0I,KAA8B,iBAAXv4B,MAA2Bq4B,OAAgBC,IAC9DE,KAAYpF,GAAQjD,oBAAoBgI,GAAS9yI,GAAIujB,KAAAA,GAErD6vH,KAAK,GAAG/jH,KAAeuG,GAAA,EAAc51B,EAAAA;8BAEvC,KAAK;AACH,oCAAA,EAAMozI,KAAK/jH,GAAap6B,SAAS;AAC/BguC,kCAAAA,GAAUpsC,OAAO;AACjB;gCAAA;AASF,oCANAvF,KAAM+9B,GAAa+jH,EAAAA,GACnB70I,KAAMyB,GAAI1O,EAAAA,GACV+hJ,KAAcv1H,GAAA,EAAwB0M,EAAAA,EAAMt6B,KAAKs6B,IAAMl5B,EAAAA,GACvDgiJ,KAAQ,GAAIr2H,SAAS1e,EAAAA,GACrBg1I,KAASvzI,GAAIujB,OAET4vH,IAAW;AACblwG,kCAAAA,GAAUpsC,OAAO;AACjB;gCAAA;AAGF,oCAAA,CAAKy8I,IAAO;AACVrwG,kCAAAA,GAAUpsC,OAAO;AACjB;gCAAA;AAQF,uCAJIk3I,GAAQjD,oBAAoByI,OAC9BT,GAASS,EAAAA,IAAAA,OAGJtwG,GAAUwwG,cAAcV,GAASx0I,IAAK80I,IAAaxK,EAAAA,GAAQ,MAAM,EAAA;8BAE1E,KAAK;AACH,oCAAOqK,MAAoB5hJ,OAAQihJ,GAAUjhJ,KAAM;AACjD2xC,kCAAAA,GAAUpsC,OAAO;AACjB;gCAAA;AAKF,oCAFA28I,KAA4BhB,GAAUC,IAAmBjoH,EAAAA,GAElDioH,MAAAA,CAAqBe,IAA4B;AACtDvwG,kCAAAA,GAAUpsC,OAAO;AACjB;gCAAA;AAIF,uCADAosC,GAAUpsC,OAAO,IACV07I,GAAU91C,OAAOl+F,IAAKjN,IAAK+hJ,IAAatF,IAASlF,EAAAA;8BAE1D,KAAK;AACHuK,gCAAAA,MACAnwG,GAAUpsC,OAAO;AACjB;8BAEF,KAAK;8BACL,KAAK;AACH,uCAAOosC,GAAU1N,KAAAA;4BAAAA;wBAAAA,GAGtBs9G,EAAAA;sBAAAA,GAGLA,KAAuB90H,GAAA,EAAoB6a,KAAKm6G,EAAAA,GAChDD,KAAW,CAAA,GAEXr4I,KAAY4E,GAAA,EAA2BuiB,GAAA,EAAwBsoH,EAAAA,EAASh6I,KAAKg6I,IAAS,GAAIa,kBAAAA,CAAAA,GAC1FlnG,GAAU3+B,OAAO,GAEjBzK,GAAU3I,EAAAA;oBAEZ,KAAK;AACH,2BAAKiM,KAAQtD,GAAUjJ,EAAAA,GAAK4F,MAAM;AAChCysC,wBAAAA,GAAUhtC,OAAO;AACjB;sBAAA;AAIF,6BADAgyI,KAAQ9qI,GAAM/M,OACP6yC,GAAU4vG,cAAcV,GAASlK,GAAM73I,OAAO63I,GAAMr+G,MAAMq+G,EAAAA,GAAQ,MAAM,CAAA;oBAEjF,KAAK;AACHhlG,sBAAAA,GAAUhtC,OAAO;AACjB;oBAEF,KAAK;AACHgtC,sBAAAA,GAAUhtC,OAAO;AACjB;oBAEF,KAAK;AACHgtC,sBAAAA,GAAU3+B,OAAO,IACjB2+B,GAAUq/F,KAAKr/F,GAAiB,MAAE,CAAA,GAElCppC,GAAU1I,EAAE8xC,GAAUq/F,EAAAA;oBAExB,KAAK;AAKH,6BAJAr/F,GAAU3+B,OAAO,IAEjBzK,GAAUsjB,EAAAA,GAEH8lB,GAAUohF,OAAO,EAAA;oBAE1B,KAAK;oBACL,KAAK;AACH,6BAAOphF,GAAUtO,KAAAA;kBAAAA;cAAAA,GAGtBq9G,IAAW,MAAM,CAAC,CAAC,GAAG,IAAI,IAAI,EAAA,CAAA,CAAA;YAAA,CAAA,IAhK9B,GAAA,EAAev5I,GAAG9H,KAAKmhJ,EAAAA,GAAM,EAClCgB,YAAYj3C,GAAOnsG,QAAQA,IAC3By7I,aAAa,GAAIA,YAAY1yI,EAAAA,EAAAA,CAAAA;UAAAA,EAAAA,GAkKhC,EACD/H,KAAK,cACLN,OAAO,WAAA;AACL,gBAAIgzC,IACA2vG,KAAS78I;AAEb,mBAAO,GAAA,EAAsBktC,KAAYltC,KAAKo7I,cAAAA,EAAgBhiJ,KAAK8zC,IAAW,SAAUy4D,IAAAA;AAGtF,qBAFgBk3C,GAAOC,sBAAsBn3C,EAAAA,EAE5BxnG,SAAS;YAAA,CAAA;UAAA,EAAA,GAG7B,EACD3D,KAAK,qBACLN,OAAO,WAAA;AAEH,gBAAImzC;AADN,gBAAIrtC,KAAK46I,gBAAgBz8I,SAAS;AAGhC,qBAAO,GAAA,EAAS4+I,KAAKl+G,GAAA,EAAqBwO,KAAYrtC,KAAK46I,eAAAA,EAAiBxhJ,KAAKi0C,IAAW,SAAU0kG,IAAAA;AACpG,uBAAOA,GAAM73I;cAAAA,CAAAA,CAAAA;UAAAA,EAAAA,GAMlB,EACDM,KAAK,oBACLN,OAAO,SAA0ByrG,IAAAA;AAC/B,gBAAInsG,KAAOwG,KAAKxE,YAAYwhJ,cAAcr3C,EAAAA;AAC1C,mBAAO3lG,KAAK26I,cAAcnhJ,EAAAA,KAAS,CAAA;UAAA,EAAA,GAEpC,EACDgB,KAAK,qBACLN,OAAO,SAA2ByrG,IAAAA;AAChC,mBAAO3lG,KAAKi9I,iBAAiBt3C,EAAAA,EAAQxnG;UAAAA,EAAAA,GAEtC,EACD3D,KAAK,uBACLN,OAAO,SAA6ByrG,IAAAA;AAClC,gBAAIpsE,KAAUv5B,KAAKi9I,iBAAiBt3C,EAAAA;AAEpC,mBADUpsE,MAAWA,GAAQA,GAAQp7B,SAAS,CAAA,KAChC,CAAA;UAAA,EAAA,GAEf,EACD3D,KAAK,0BACLN,OAAO,SAAgCyrG,IAAAA;AACrC,gBAAIu3C,KAAKl9I,KAAKm9I,oBAAoBx3C,EAAAA,EAAQy3C;AAC1C,mBAAqB,YAAA,OAAPF,KAAAA,KAAuBA;UAAAA,EAAAA,GAEtC,EACD1iJ,KAAK,uBACLN,OAAO,SAA6ByrG,IAAQl+F,IAAAA;AAC1C,gBAAIjO,KAAOwG,KAAKxE,YAAYwhJ,cAAcr3C,EAAAA;AAC1C3lG,iBAAK26I,cAAcnhJ,EAAAA,IAAQwG,KAAK26I,cAAcnhJ,EAAAA,KAAS,CAAA,GACvDwG,KAAK26I,cAAcnhJ,EAAAA,EAAMoW,KAAKnI,EAAAA;UAAAA,EAAAA,GAE/B,EACDjN,KAAK,iBACLN,OAAO,SAAuBk5I,IAAAA;AAC5B,gBAAIiK,KAASr9I;AAEb,eAAIknB,eAAeksH,EAAAA,EAAS7oI,QAAQ,SAAUwnI,IAAAA;AAC5C,kBAAIA,cAAiBrrI;AACnB22I,gBAAAA,GAAO1zH,OAAO/Z,KAAKmiI,EAAAA;;AAKrB,oBAAA;AACE,sBAAA,CAAK,GAAI5rH,SAAS4rH,EAAAA;AAGhB,2BAAA,KAFAsL,GAAO3f,MAAM,iBAAiB,0BAA0BqU,EAAAA;AAS1D,sBAJIsL,GAAOxC,aACTwC,GAAOvC,WAAWlrI,KAAKmiI,EAAAA,GAGrB,GAAIwC,UAAUxC,GAAM73I,KAAAA;AAKtB,2BAJAmjJ,GAAOzC,gBAAgBhrI,KAAKmiI,EAAAA,GAAAA,KAE5BsL,GAAOC,kBAAkBvL,EAAAA;AAK3B,sBAAI,GAAI+C,eAAe/C,EAAAA;AAGrB,2BAAA,KAFAsL,GAAOE,WAAWxL,GAAMr+G,MAAMq+G,GAAM73I,KAAAA;AAKtC,sBAAI,GAAI86I,WAAWjD,EAAAA;AAGjB,2BAAA,KAFAsL,GAAOG,gBAAgBzL,EAAAA;gBAAAA,SAIlB92I,IAAP;AACA8tB,0BAAQtiB,MAAMxL,EAAAA,GAEdoiJ,GAAO1zH,OAAO/Z,KAAK3U,EAAAA;gBAAAA;YAAAA,CAAAA;UAAAA,EAAAA,GAIxB,EACDT,KAAK,mBACLN,OAAO,SAAyB63I,IAAAA;AACD,yBAAzB14I,GAAA,EAAQ04I,GAAM73I,KAAAA,KAAAA,CAAwBiB,MAAM4I,QAAQguI,GAAM73I,KAAAA,KAAU8F,KAAKg0I,qBAC3EjC,GAAM73I,QAAQ,GAAA,EAAc,CAAA,GAAI63I,GAAM73I,KAAAA;AAGxC,gBAAIu4B,KAAS,GAAIq/G,WAAW9xI,KAAK45C,OAAOm4F,IAAO,EAC7CiC,kBAAkBh0I,KAAKg0I,iBAAAA,CAAAA;AAGrBvhH,YAAAA,OACFzyB,KAAKy0I,UAAU7kI,KAAKmiI,EAAAA,GACpB/xI,KAAK45C,QAAQnnB;UAAAA,EAAAA,GAGhB,EACDj4B,KAAK,uBACLN,OAAO,SAA6B63I,IAAAA;AAClC,gBAAIvH,IAEA5rI,KAAQoB,KAAK46I,gBAAgBhzI,QAAQmqI,EAAAA;AAErCnzI,YAAAA,KAAQ,IACVoB,KAAK09H,MAAM,mDAAA,IAIb,GAAA,EAAwB8M,KAAYxqI,KAAK46I,eAAAA,EAAiBxhJ,KAAKoxI,IAAW5rI,IAAO,CAAA;UAAA,EAAA,GAElF,EACDpE,KAAK,qBACLN,OAAO,SAA2B63I,IAAAA;AAChC,gBAAI0L,KAASz9I;AAeb,mBAbA+xI,GAAM73I,QAAQ63I,GAAM73I,MAAMyoC,KAAK,SAAUl7B,IAAAA;AACvC,kBAAIi2I,KAAgB,GAAA,EAAc,GAAA,EAAc,CAAA,GAAI3L,EAAAA,GAAQ,CAAA,GAAI,EAC9D73I,OAAOuN,GAAAA,CAAAA;AAGTg2I,cAAAA,GAAOE,oBAAoB5L,EAAAA,GAE3B0L,GAAOnC,cAAcoC,EAAAA;YAAAA,CAAAA,EACpBv2G,MAAM,SAAUlsC,IAAAA;AACjBwiJ,cAAAA,GAAOE,oBAAoB5L,EAAAA,GAE3B0L,GAAOnC,cAAcrgJ,EAAAA;YAAAA,CAAAA,GAEhB82I,GAAM73I;UAAAA,EAAAA,GAEd,EACDM,KAAK,gBACLN,OAAO,SAAsB8a,IAAMC,IAAAA;AACjC,gBAAIw1H;AAQJ,mBANAz1H,KAAOA,MAAQ,GAEG,YAAA,OAAPC,OACTA,KAAKjV,KAAKy0I,UAAUt2I,SAGf+gC,GAAA,EAAuBurG,KAAYzqI,KAAKy0I,SAAAA,EAAWr7I,KAAKqxI,IAAWz1H,IAAMC,EAAAA;UAAAA,EAAAA,GAEjF,EACDza,KAAK,uBACLN,OAAO,WAAA;AACL,mBAAO8F,KAAK88I,sBAAsB98I,KAAK49I,iBAAAA,CAAAA;UAAAA,EAAAA,GAExC,EACDpjJ,KAAK,yBACLN,OAAO,SAA+ByrG,IAAAA;AACpC,gBAAIk4C,KAAM79I,KAAK89I,uBAAuBn4C,EAAAA;AACtC,mBAAO3lG,KAAK+9I,aAAaF,KAAM,CAAA;UAAA,EAAA,GAEhC,EACDrjJ,KAAK,oBACLN,OAAO,WAAA;AACL,mBAAO8F,KAAKg+I;UAAAA,EAAAA,GAEb,EACDxjJ,KAAK,UACLN,OAAO,WAAA;AACL,mBAAO8F,KAAKg7I;UAAAA,EAAAA,GAGb,EACDxgJ,KAAK,QACLN,OAAO,SAAcw5B,IAAAA;AACnB,mBAAO,GAAI7R,MAAM7hB,KAAK45C,OAAOlmB,EAAAA;UAAAA,EAAAA,GAG9B,EACDl5B,KAAK,eACLN,OAAO,SAAqBw5B,IAAAA;AAC1B,mBAAO1zB,KAAK+3I,YAAYj+I,IAAI45B,EAAAA;UAAAA,EAAAA,GAE7B,EACDl5B,KAAK,cACLN,OAAO,SAAoBw5B,IAAMx5B,IAAAA;AAC/B,mBAAO8F,KAAK+3I,YAAYruI,IAAIgqB,IAAMx5B,EAAAA;UAAAA,EAAAA,GAGnC,EACDM,KAAK,WACLN,OAAO,SAAiByT,IAAAA;AAEtB,mBADY3N,KAAKi+I,kBAAkBj+I,KAAK49I,iBAAAA,CAAAA,KACxBjwI,MAAS;UAAA,EAAA,GAE1B,EACDnT,KAAK,YACLN,OAAO,WAAA;AACL,gBAkCMwwI,IAlCFwT,KAASl+I,MAETq+B,KAAOr+B,MACP2lG,KAAS3lG,KAAKm+I,WAAAA;AAElB,gBAAA,CAAKx4C,IAAQ;AACX,kBAAIy4C,KAAcp+I,KAAKq+I,kBAAAA;AAEvB,kBAAID;AACF,uBAAOA,GAAYz7G,KAAK,WAAA;AACtB,yBAAOu7G,GAAOn2H,SAAAA;gBAAAA,CAAAA,EACbof,MAAM,WAAA;AACP,yBAAO+2G,GAAOn2H,SAAAA;gBAAAA,CAAAA;AAKlB,kBAAI0K,KAAS,EACXsO,MAAM/gC,KAAK45C,OACXjwB,QAAQ3pB,KAAK2pB,OAAAA;AAOf,qBAJI3pB,KAAK66I,cACPpoH,GAAO2gH,UAAUpzI,KAAK86I,aAGjB,GAAA,EAAS54G,QAAQzP,EAAAA;YAAAA;AAO1B,gBAHA4L,GAAKigH,cAAcjgH,GAAKigH,eAAe,CAAA,GACvCjgH,GAAKigH,YAAY34C,EAAAA,KAAWtnE,GAAKigH,YAAY34C,EAAAA,KAAW,KAAK,GAEzDtnE,GAAKigH,YAAY34C,EAAAA,IA3fV;AA8fT,qBAAO,GAAA,EAASzjE,QAAQ,EACtBnB,MAAM1C,GAAKub,OACXjwB,QAAQ3C,GAAA,EAAwB0jH,KAAarsG,GAAK1U,MAAAA,EAAQvwB,KAAKsxI,IAAY,IAAIhkI,MAAM,iCAAiCmT,OAhgB/G,KAggBkI,cAAA,CAAA,CAAA,EAAA,CAAA;AAK7I,gBAAI8rF,OAAW3lG,KAAKg+I,iBAAiBh+I,KAAK46I,gBAAgBz8I,QAAQ;AAChE,kBAAIysI,IAEA2T,KAAW1/G,GAAA,EAAqB+rG,KAAa5qI,KAAK46I,eAAAA,EAAiBxhJ,KAAKwxI,IAAY,SAAU7vI,IAAAA;AAChG,uBAAOA,GAAEb;cAAAA,CAAAA;AAIX,qBAAO,GAAA,EAASspC,IAAI3E,GAAA,EAAqB0/G,EAAAA,EAAUnlJ,KAAKmlJ,IAAU,SAAUv1D,IAAAA;AAC1E,uBAAOA,GAAQrmD,KAAKowC,IAAMA,EAAAA;cAAAA,CAAAA,CAAAA,EACxBpwC,KAAK,WAAA;AACP,uBAAOu7G,GAAOn2H,SAAAA;cAAAA,CAAAA;YAAAA;AAKlB,mBAEA,WAAA;AACEsW,cAAAA,GAAK2/G,gBAAgBr4C;AACrB,kBAAI8uC,KAAYp2G,GAAKmgH,oBAAAA,GACjBC,KAAoBpgH,GAAKo2G,UAAUt2I,SAAS;AAEhD,kBAAA;AACE,oBAAIwnG,GAAOsvC,aAAa;AAEtB,sBACItnG,IADAC,KAAarlC,GAAA,EAA2Bo9F,GAAO8uC,IAAWp2G,GAAKqgH,OAAAA,CAAAA,CAAAA;AAGnE,sBAAA;AACE,yBAAK9wG,GAAW5yC,EAAAA,GAAAA,EAAO2yC,KAASC,GAAWlzC,EAAAA,GAAK4F,QAAO;AAErDg7I,sBAAAA,GADqB3tG,GAAOzzC,KAAAA;oBAAAA;kBAAAA,SAGvBkxB,IAAP;AACAwiB,oBAAAA,GAAW3yC,EAAEmwB,EAAAA;kBAAAA,UACb;AACAwiB,oBAAAA,GAAW3mB,EAAAA;kBAAAA;gBAAAA,OAER;AAELq0H,kBAAAA,GADiB31C,GAAO8uC,IAAWp2G,GAAKqgH,OAAAA,CAAAA,CAAAA;gBAAAA;cAAAA,SAGnCzjJ,IAAP;AACA8tB,wBAAQtiB,MAAMxL,EAAAA,GAEdqgJ,GAAc,CAAC,GAAA,EAAe3hJ,OAAOY,OAAOU,EAAAA,GAAI,EAC9C0qG,QAAQA,GAAAA,CAAAA,CAAAA,CAAAA;cAAAA,UAEV;AACAtnE,gBAAAA,GAAKsgH,oBAAoBh5C,IAAQ,EAC/By3C,eAAeqB,GAAAA,CAAAA;cAAAA;AAInB,qBAAOpgH,GAAKtW,SAAAA;YAAAA,EAvCP62H;AA0CP,qBAAStD,GAAclI,IAAAA;AACjBA,cAAAA,OACFA,KAAU,GAAIiB,oBAAoBjB,EAAAA,GAClC/0G,GAAKi9G,cAAclI,IAASztC,EAAAA;YAAAA;UAAAA,EAAAA,CAAAA,GAIhC,CAAC,EACHnrG,KAAK,iBACLN,OAAO,SAAuByrG,IAAAA;AAC5B,mBAAOA,GAAOi3C;UAAAA,EAAAA,GAEf,EACDpiJ,KAAK,oBACLN,OAAO,SAA0Bk5I,IAAS7wI,IAAAA;AACxC,mBAAOuoB,GAAA,EAAwBsoH,EAAAA,EAASh6I,KAAKg6I,IAAS7wI,EAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAInDi4I;QAAAA,EA9kBkB;AAolB3B,YAAIE,KAAU,EACZz4C,MAAM,IACNm3C,OAAO,IACP1zG,YAAYo0G,KACZntH,YAAYqtH,IAAA,GAAA,KAAAt/I,GAAA,EAAA;AC3mBP,iBAASmkJ,GAAcz/E,IAAAA;AAC5B,cAAIw0E,KAAO3xI,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA,GAC3EsgC,KAAqBqxG,GAAKrxG,oBAC1BC,KAAsBoxG,GAAKpxG,qBAE3B+8F,KAAcngE,GAAKu+D,kBAAkB,YAAY;AACrD,iBAAO,SAAUib,IAAAA;AACf,mBAAOx5E,GAAK,EACV3vC,KAAKmpH,IACLtZ,UAAAA,MACA/8F,oBAAoBA,IACpBC,qBAAqBA,IACrBotB,SAAS,EACPipF,QAAQrC,GAAAA,GAEVjX,aAAaA,GAAAA,CAAAA,EACZ58F,KAAK,SAAUhb,IAAAA;AAChB,qBAAOA,GAAIsoC;YAAAA,CAAAA;UAAAA;QAAAA;AAQF,iBAAS/tB,IAAQh5B,IAAAA;AAC9B,cAAI+4B,KAAQ/4B,GAAI+4B,OACZlB,KAAO73B,GAAI63B,MACXtR,KAAMvmB,GAAIumB,KACVr1B,KAAO8O,GAAI9O,MACX0kJ,KAAwB51I,GAAI8qI,kBAC5BA,KAAAA,WAAmB8K,MAA0CA,IAC7DnD,KAAoBzyI,GAAIyyI,mBACxBt5G,KAAqBn5B,GAAIm5B,oBACzBC,KAAiBp5B,GAAIo5B,gBACrBC,KAAqBr5B,GAAIq5B,oBACzBC,KAAsBt5B,GAAIs5B,qBAC1Bu8G,KAAoB71I,GAAI61I,mBACxB7G,KAAwBhvI,GAAIgvI,uBAC5B94E,KAAOl2D,GAAIk2D,MACX18B,KAAUx5B,GAAIw5B;AAQlB,iBALAA,KAAUA,MAAWjT,IAGrB2vC,KAAOn9B,MAASm9B,MAAQ5/B,IAEnBuB,KAOEi+G,GAAUj+G,EAAAA,IANR89G,GAAcz/E,IAAM,EACzB78B,oBAAoBA,IACpBC,qBAAqBA,GAAAA,CAAAA,EACpBE,EAAAA,EAASC,KAAKq8G,EAAAA;AAKnB,mBAASA,GAAUC,IAAAA;AACbv8G,YAAAA,OACFg4G,GAAQz4C,KAAK60C,SAASp0G,EAAAA,IAAWu8G,KAInCvE,GAAQz4C,KAAK02C,YAAYkG,GAAcz/E,IAAM,EAC3C78B,oBAAoBA,IACpBC,qBAAqBA,GAAAA,CAAAA;AAEvB,gBDiiB4BoxG,ICjiBxBsL,KAAQ,CAACxE,GAAQz4C,IAAAA;AAerB,mBAb8B,cAAA,OAAnB3/D,MACT48G,GAAMtvI,KAAK8qI,GAAQh1G,UAAAA,GAGa,cAAA,OAAvBrD,MACT68G,GAAMtvI,KAAK8qI,GAAQ/tH,UAAAA,GAGR,aAATvyB,MACF8kJ,GAAMtvI,KAAK8qI,GAAQtB,KAAAA,IDshBOxF,KClhBb,EACb7yG,MAAMk+G,IACNnnI,SAAS,EACP4qB,SAASA,GAAAA,GAEXg4G,SAASwE,IACTlL,kBAAkBA,IAElB2H,mBAAmBA,IAEnBr5G,gBAAgBA,IAChBD,oBAAoBA,IACpB61G,uBAAuBA,GAAAA,GDugBpB,IAAI,GAAQtE,EAAAA,EAAM7rH,SAAAA,GCtgBpB4a,KAAKo8G,KAAiC,WAAA;AACvC,kBAAIpzG,KAAOryC,GAAA,EAAgC2tB,GAAA,EAAoB6a,KAAK,SAAS+pG,GAAQrmI,IAAAA;AACnF,uBAAOyhB,GAAA,EAAoBiO,KAAK,SAAkBgE,IAAAA;AAChD;AACE,4BAAQA,GAAS9qB,OAAO8qB,GAASn5B,MAAAA;sBAC/B,KAAK;AACH,+BAAOm5B,GAASqzG,OAAO,UAAU/mI,EAAAA;sBAEnC,KAAK;sBACL,KAAK;AACH,+BAAO0zB,GAASuF,KAAAA;oBAAAA;gBAAAA,GAGrBotG,EAAAA;cAAAA,CAAAA,CAAAA;AAGL,qBAAO,SAAUF,IAAAA;AACf,uBAAOhgG,GAAK/hC,MAAM5J,MAAMiC,SAAAA;cAAAA;YAAAA,EAjBa,IAmBnC,GAAA,CAAA;UAAA;QAAA;AAAA,YAAA,KAAAvH,GAAA,EAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA,KAAAA,GAAA,EAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA,KAAAA,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA;ACjHV,iBAAS,GAAShB,IAAAA;AAChB,iBAA6C,sBAAtCC,OAAOkB,UAAU6G,SAAStI,KAAKM,EAAAA;QAAAA;AAGxC,iBAASgtE,GAAchtE,IAAAA;AACrB,cAAI4B,IAAK6jJ;AAET,iBAAA,UAAI,GAASzlJ,EAAAA,MAAAA,YAGb4B,KAAO5B,GAAE8B,gBAAAA,UAKL,GADJ2jJ,KAAO7jJ,GAAKT,SAAAA,KAAAA,UAIRskJ,GAAKrkJ,eAAe,eAAA;QAAA;ACvBX,YAAA,KAAA,EACbm1D,MAOF,SAAqBtkB,IAAAA;AACnB,cAAIhI,KAAMgI,GAAKhI,KACXzpC,KAAQyxC,GAAKzxC;AACjBypC,UAAAA,GAAIssB,OAAO/1D;QAAAA,GATXikI,QA6BF,SAAuBzxF,IAAAA;AACrB,cAAI/I,KAAM+I,GAAM/I,KACZy3C,KAAY1uC,GAAM0uC,WAClBlhF,KAAQwyC,GAAMxyC;AAClBypC,UAAAA,GAAIisB,UAAUjsB,GAAIisB,WAAW,CAAA,GAAA,WAElB11D,OACTypC,GAAIisB,QAAQwrB,GAAU5hF,IAAAA,IAAQU;QAAAA,GAnChC2vD,OAgDF,SAAsB6S,IAAAA;AACpB,cAAI/4B,KAAM+4B,GAAM/4B,KACZzpC,KAAQwiE,GAAMxiE,OACdkhF,KAAY1e,GAAM0e;AACtBz3C,UAAAA,GAAIkmB,QAAQlmB,GAAIkmB,SAAS,CAAA,GAAA,UAErB3vD,MAAsC,cAAnBkhF,GAAUl7E,SAC/BhG,KAAQ;AAGI,gBAAVA,MAAe,CAAC,UAAU,SAAA,EAAW0N,QAAQwzE,GAAUl7E,IAAAA,IAAAA,OACzDhG,KAAQ;AAGV,cAAIA;AACFypC,YAAAA,GAAIkmB,MAAMuxB,GAAU5hF,IAAAA,IAAQ,EAC1Bu0I,kBAAkB3yD,GAAU2yD,kBAC5B7zI,OAAOA,GAAAA;mBAEAkhF,GAAU4yD,mBAAAA,WAAmB9zI,IAAqB;AAC3D,gBAAIg3B,KAAYkqD,GAAU5hF;AAC1BmqC,YAAAA,GAAIkmB,MAAM34B,EAAAA,IAAayS,GAAIkmB,MAAM34B,EAAAA,KAAc,CAAA,GAC/CyS,GAAIkmB,MAAM34B,EAAAA,EAAW88G,kBAAAA;UAAkB;QAAA,GArEzCt6G,MAuCF,SAAqBsoC,IAAAA;AACnB,cAAIr4B,KAAMq4B,GAAMr4B,KACZzpC,KAAQ8hE,GAAM9hE,OACdkhF,KAAYpf,GAAMof;AACtBz3C,UAAAA,GAAIlU,MAAMkU,GAAIlU,IAAIhB,MAAM,IAAI5U,OAAOuhE,GAAU5hF,MAAM,GAAA,CAAA,EAAMymB,KAAKoP,mBAAmBn1B,EAAAA,CAAAA;QAAAA,GA1CjFs0I,UAUF,SAAyBxiG,IAAAA;AACvB,cAAIrI,KAAMqI,GAAMrI,KACZzpC,KAAQ8xC,GAAM9xC,OACdkhF,KAAYpvC,GAAMovC;AAAAA,WAElBlhF,MAASkhF,GAAU4yD,qBACrBrqG,GAAI6rB,OAAO7rB,GAAI6rB,QAAQ,CAAA,GACvB7rB,GAAI6rB,KAAK4rB,GAAU5hF,IAAAA,IAAQ,EACzBU,OAAOA,IACP8zI,iBAAiB5yD,GAAU4yD,iBAC3BD,kBAAkB3yD,GAAU2yD,iBAAAA;QAAAA,EAAAA;ACpBnB,iBAASzW,GAAUp9H,IAAOixF,IAAAA;AACvC,iBAAI1lF,GAAA,EAA0B0lF,EAAAA,EAAW/xF,KAAK+xF,IAAW,kBAAA,IAClC,YAAA,OAAVjxF,KAEFA,KAGFiG,GAAA,EAAgBjG,EAAAA,IAGlBA,GAAMwH,SAAAA;QAAAA;ACZR,iBAAS,GAAKiqC,IAAAA;AACnB,cAAIhI,KAAMgI,GAAKhI,KACXzpC,KAAQyxC,GAAKzxC,OACbkhF,KAAYzvC,GAAKyvC,WACjB5hF,KAAO4hF,GAAU5hF,MACjB45C,KAAQgoC,GAAUhoC,OAClBg3F,KAAUhvD,GAAUgvD,SACpBtpE,KAAUsa,GAAUta;AAExB,cAAIA,IAAJ;AACE,gBAAIs+E,KAAqBtgH,GAAA,EAAagiC,EAAAA,EAAS,CAAA;AAE/Cn9B,YAAAA,GAAIlU,MAAMkU,GAAIlU,IAAIhB,MAAM,IAAI5U,OAAOrgB,IAAM,GAAA,CAAA,EAAMymB,KAAK4pH,GAA2BvS,GAAUp9H,IAAOklJ,EAAAA,GAAqB,EACnH/yF,QAAAA,KAAQ,CAAA,CAAA;UAAA,OAJZ;AASA,gBAAIgzF,KAAclV,GAAQ,EACxB3vI,KAAK4gF,GAAU5hF,MACfU,OAAOA,IACPk5C,OAAOA,MAAS,UAChBg3F,SAASA,MAAAA,OACT/9E,QAAAA,KAAQ,CAAA;AAEV1oB,YAAAA,GAAIlU,MAAMkU,GAAIlU,IAAIhB,MAAM,IAAI5U,OAAOrgB,IAAM,GAAA,CAAA,EAAMymB,KAAKo/H,EAAAA;UAAAA;QAAAA;AAE/C,iBAAS,GAAMrzG,IAAAA;AACpB,cAAIrI,KAAMqI,GAAMrI,KACZzpC,KAAQ8xC,GAAM9xC,OACdkhF,KAAYpvC,GAAMovC;AAGtB,cAFAz3C,GAAIkmB,QAAQlmB,GAAIkmB,SAAS,CAAA,GAErBuxB,GAAUta,SAAd;AACE,gBAAIs+E,KAAqBtgH,GAAA,EAAas8C,GAAUta,OAAAA,EAAS,CAAA;AAEzDn9B,YAAAA,GAAIkmB,MAAMuxB,GAAU5hF,IAAAA,IAAQ89H,GAAUp9H,IAAOklJ,EAAAA;UAAAA,WAY/C,UARIllJ,OACFA,KAAQ,UAGI,MAAVA,OACFA,KAAQ,MAGNA,IAAO;AACT,gBAAIk5C,KAAQgoC,GAAUhoC,OAClBg3F,KAAUhvD,GAAUgvD,SACpBiE,KAAgBjzD,GAAUizD;AAC9B1qG,YAAAA,GAAIkmB,MAAMuxB,GAAU5hF,IAAAA,IAAQ,EAC1BU,OAAOA,IACP+zI,qBAAqB,EACnB76F,OAAOA,IACPg3F,SAASA,IACTiE,eAAeA,GAAAA,EAAAA;UAAAA,WAGVjzD,GAAU4yD,mBAAAA,WAAmB9zI,IAAqB;AAC3D,gBAAIg3B,KAAYkqD,GAAU5hF;AAC1BmqC,YAAAA,GAAIkmB,MAAM34B,EAAAA,IAAayS,GAAIkmB,MAAM34B,EAAAA,KAAc,CAAA,GAC/CyS,GAAIkmB,MAAM34B,EAAAA,EAAW88G,kBAAAA;UAAkB;QAAA;AAG3C,YAAIsR,KAA6B,CAAC,UAAU,iBAAiB,cAAA;AACtD,iBAAS,GAAO5yG,IAAAA;AACrB,cAAI/I,KAAM+I,GAAM/I,KACZy3C,KAAY1uC,GAAM0uC,WAClBlhF,KAAQwyC,GAAMxyC;AAGlB,cAFAypC,GAAIisB,UAAUjsB,GAAIisB,WAAW,CAAA,GAAA,EAEzB0vF,GAA2B13I,QAAQwzE,GAAU5hF,KAAKsyB,YAAAA,CAAAA,IAAAA;AAItD,gBAAIsvD,GAAUta,SAAd;AACE,kBAAIs+E,KAAqBtgH,GAAA,EAAas8C,GAAUta,OAAAA,EAAS,CAAA;AAEzDn9B,cAAAA,GAAIisB,QAAQwrB,GAAU5hF,IAAAA,IAAQ89H,GAAUp9H,IAAOklJ,EAAAA;YAAAA;AAAAA,yBAItCllJ,OACTypC,GAAIisB,QAAQwrB,GAAU5hF,IAAAA,IAAQ2wI,GAAQ,EACpC3vI,KAAK4gF,GAAU5hF,MACfU,OAAOA,IACPk5C,OAAOgoC,GAAUhoC,SAAS,UAC1Bg3F,SAAAA,WAAgBhvD,GAAUgvD,WAAkChvD,GAAUgvD,SACtE/9E,QAAAA,MAAQ,CAAA;QAAA;AAIP,iBAAS,GAAO2P,IAAAA;AACrB,cAAIr4B,KAAMq4B,GAAMr4B,KACZy3C,KAAYpf,GAAMof,WAClBlhF,KAAQ8hE,GAAM9hE;AAClBypC,UAAAA,GAAIisB,UAAUjsB,GAAIisB,WAAW,CAAA;AAE7B,cAAI1vD,KAAO7G,GAAA,EAAQa,EAAAA;AAEnB,cAAIkhF,GAAUta,SAAd;AACE,gBAAI5nC,IAEAkmH,KAAqBtgH,GAAA,EAAas8C,GAAUta,OAAAA,EAAS,CAAA;AAEzDn9B,YAAAA,GAAIisB,QAAQ2vF,SAASv4H,GAAA,EAAwBkS,KAAW,GAAGrf,OAAOuhE,GAAU5hF,MAAM,GAAA,CAAA,EAAMJ,KAAK8/B,IAAUo+F,GAAUp9H,IAAOklJ,EAAAA,CAAAA;UAAAA,WAI7G,gBAATl/I,IAAsB;AACxB,gBAAIq6C,KAAkB,aAATr6C,MAAAA,CAAsB/E,MAAM4I,QAAQ7J,EAAAA,KAAUkhF,GAAUgvD,UAAU,KAAK,GAAGvwH,OAAOuhE,GAAU5hF,MAAM,GAAA;AAC9GmqC,YAAAA,GAAIisB,QAAQ2vF,SAAShlG,KAAS4vF,GAAQ,EACpC3vI,KAAK4gF,GAAU5hF,MACfU,OAAOA,IACPmyD,QAAAA,OACAjZ,OAAOgoC,GAAUhoC,SAAS,QAC1Bg3F,SAAAA,WAAgBhvD,GAAUgvD,WAAkChvD,GAAUgvD,QAAAA,CAAAA;UAAAA;QAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AC/G7D,iBAASxjG,GAAa5S,IAAS2P,IAAAA;AAC5C,cAAI4B,KAAYvR,GAAQuR,WACpBiB,KAAcxS,GAAQwS,aACtB03F,KAAalqG,GAAQkqG,YACrBn9F,KAAO/M,GAAQ+M,MACfy+G,KAAmCxrH,GAAQwrH,kCAC3Cl5G,KAAqBtS,GAAQsS;AACjC3C,UAAAA,KAmFK,SAAyB+4B,IAAAA;AAC9B,gBAAI8sB,KAAU9sB,GAAM8sB,SAChBi2D,KAAmB/iF,GAAMwhE,YACzBA,KAAAA,WAAauhB,KAA8B,CAAA,IAAKA,IAChDC,KAAkBhjF,GAAMn3B,WACxBA,KAAAA,WAAYm6G,KAA6B,CAAA,IAAKA,IAC9C3+G,KAAO27B,GAAM37B,MAEbtO,KAAS,GAAA,EAAc,CAAA,GAAI+2D,EAAAA,GAE3Bm2D,KAAwBzhB,GAAWzsE,YACnCA,KAAAA,WAAakuF,KAAmC,CAAA,IAAKA,IACrDhtF,KAAWptB,GAAUotB,YAAY5xB,GAAK4xB,YAAY,CAAA,GAClDksE,KAAeptE,MAAAA,CAAAA,CAAgB3yB,GAAA,EAAa2yB,EAAAA,EAAYtzD,QACxDyhJ,KAAc,GAAA,EAAI7+G,IAAM,CAAC,cAAc,iBAAA,CAAA,KAAuB,CAAA;AAIlE,gBAHAtO,GAAOm9B,UAAUn9B,GAAOm9B,WAAW,CAAA,GACnCn9B,GAAOo3B,QAAQp3B,GAAOo3B,SAAS,CAAA,GAAA,CAE1B/qB,GAAA,EAAao/F,EAAAA,EAAY//H,UAAAA,CAAW0gI,MAAAA,CAAiBlsE,MAAYx3D,MAAM4I,QAAQwhC,GAAUotB,QAAAA,KAAAA,CAAcptB,GAAUotB,SAASx0D;AAC7H,qBAAOqrF;AA0DT,mBAvDA72B,GAASpoD,QAAQ,SAAUs1I,IAAAA;AACzB,cAAA/gH,GAAA,EAAa+gH,EAAAA,EAAat1I,QAAQ,SAAU/P,IAAAA;AAC1C,oBAAIivD,KAAOgI,GAAWj3D,EAAAA,GAClB+uB,KAASq2H,GAAYplJ,EAAAA;AAEzB,oBAAKivD,IAAL;AAIA,sBAAIvvD,KAAQuvD,GAAKvvD,SAASuvD,IACtBvpD,KAAOqpB,GAAOrpB;AAElB,sBAAIupD;AACF,wBAAa,aAATvpD;AACgB,kCAAdqpB,GAAOu2H,OACTrtH,GAAOo3B,MAAMtgC,GAAO/vB,IAAAA,IAAQU,KAGZ,aAAdqvB,GAAOu2H,OACTrtH,GAAOm9B,QAAQrmC,GAAO/vB,IAAAA,IAAQU,KAGd,aAAdqvB,GAAOu2H,OACTrtH,GAAOstH,QAAQx2H,GAAO/vB,IAAAA,IAAQU;6BAEd,WAATgG,IAAiB;AAC1B,0BAAI,WAAWqrB,KAAKhC,GAAOka,MAAAA,GAAS;AAClC,4BAAItK,IAEAg2B,KAAWj1D,GAAMi1D,YAAY,IAC7BC,KAAWl1D,GAAMk1D,YAAY,IAC7B4wF,KAAU,GAAA,EAAKh5H,GAAA,EAAwBmS,KAAY,GAAGtf,OAAOs1C,IAAU,GAAA,CAAA,EAAM/1D,KAAK+/B,IAAWi2B,EAAAA,CAAAA;AACjG38B,wBAAAA,GAAOm9B,QAAQG,gBAAgB,SAASl2C,OAAOmmI,EAAAA;sBAAAA;AAG7C,kCAAYz0H,KAAKhC,GAAOka,MAAAA,MAC1BhR,GAAOm9B,QAAQG,gBAAgB,UAAUl2C,OAAO3f,EAAAA;oBAAAA,WAEhC,aAATgG,MAA8B,oBAATA,IAA0B;AACxD,0BAAI6rC,IAEA4iB,KAAQlF,GAAKkF,SAAS,CAAA,GAEtBsxF,KAAatxF,GADDplC,GAAO,aAAA,KAAkB,cAAA,GAErC22H,KAAYvxF,GAAMwxF;AAEjBD,sBAAAA,MAAyC,aAA5BA,GAAUp0H,YAAAA,MAC1Bo0H,KAAY,WAGdztH,GAAOm9B,QAAQG,gBAAgB/oC,GAAA,EAAwB+kB,KAAY,GAAGlyB,OAAOqmI,IAAW,GAAA,CAAA,EAAM9mJ,KAAK2yC,IAAWk0G,EAAAA;oBAAAA;;gBAAAA;cAAAA,CAAAA;YAAAA,CAAAA,GAK/GxtH;UAAAA,EAhKe,EACpB+2D,SAAS7lD,IACTu6F,YAAYA,IACZ34F,WAAWA,IACXxE,MAAMA,GAAAA,CAAAA;AAER,cAAIq/G,KAAiB76G,GAAUiB,eAAe,CAAA,GAE1C65G,KAAwBvhH,GAAA,EAAashH,GAAet/E,WAAW,CAAA,CAAA,GAE/Dw/E,KAA6Bh6G,MAAsB+5G,GAAsBz4I,QAAQ0+B,EAAAA,IAAAA;AAErF,cAAIE,MAAeg5G,IAAAA;AAEjB,gBAAIl5G,MAAsBg6G;AACxB38G,cAAAA,GAAIisB,QAAQ,cAAA,IAAkBtpB;qBACzB,CAAKA,IAAoB;AAC9B,kBAAIi6G,KAAiBF,GAAsB,CAAA;AAEvCE,cAAAA,OACF58G,GAAIisB,QAAQ,cAAA,IAAkB2wF,IAC9Bj6G,KAAqBi6G;YAAAA;UAAAA;AAGhBj6G,YAAAA,MAAsBg6G,OAC/B38G,GAAIisB,QAAQ,cAAA,IAAkBtpB;AAGhC,cAAA,CAAKtS,GAAQuS,uBAAuBhB,GAAUpd,WAAW;AACvD,gBAAI+Q,IAEAsnH,KAAa11H,GAAA,EAAwBoO,KAAW6F,GAAA,EAAgBwG,GAAUpd,SAAAA,CAAAA,EAAY/uB,KAAK8/B,IAAU,SAAUyS,IAAAA;AACjH,kBAAIK,KAAQpN,GAAA,EAAe+M,IAAM,CAAA,GAC7BnxC,KAAMwxC,GAAM,CAAA,GACZ9xC,KAAQ8xC,GAAM,CAAA,GAEdiL,KAAO5B,SAAS76C,IAAK,EAAA;AACzB,qBAAOy8C,MAAQ,OAAOA,KAAO,OAAOyvB,GAAcxsE,GAAM4mE,OAAAA;YAAAA,CAAAA,EACvD7mD,OAAO,SAAU6pH,IAAKp3F,IAAAA;AACvB,kBACIxyC,KADQ0kC,GAAA,EAAe8N,IAAO,CAAA,EAChB,CAAA;AAElB,qBAAO1lB,GAAA,EAAwB88G,EAAAA,EAAK1qI,KAAK0qI,IAAKhlG,GAAA,EAAa5kC,GAAM4mE,OAAAA,CAAAA;YAAAA,GAChE,CAAA,CAAA;AAEC0/E,YAAAA,GAAWriJ,SAAS,MACtBwlC,GAAIisB,QAAQ6wF,SAASD,GAAWvgI,KAAK,IAAA;UAAA;AAKzC,cAAIumB;AACF,gBAAIF,IAAAA;AACF,kBAAI+5G,GAAsBz4I,QAAQ0+B,EAAAA,IAAAA;AAGhC,oBAA2B,wCAAvBA,MAAqF,0BAAvBA;AAChE,sBAA6B,aAAzBjtC,GAAA,EAAQmtC,EAAAA,GAA2B;AACrC,wBAAIkJ,MAAY0wG,GAAet/E,QAAQx6B,EAAAA,KAAuB,CAAA,GAAIoJ,YAAY,CAAA;AAC9E/L,oBAAAA,GAAI6rB,OAAO,CAAA,GAEX1wB,GAAA,EAAa0H,EAAAA,EAAaj8B,QAAQ,SAAUpK,IAAAA;AAC1CwjC,sBAAAA,GAAI6rB,KAAKrvD,EAAAA,IAAK,EACZjG,OAAOssC,GAAYrmC,EAAAA,GACnBuvC,UAAUA,GAASvvC,EAAAA,KAAM,CAAA,EAAA;oBAAA,CAAA;kBAAA;AAI7BwjC,oBAAAA,GAAI6rB,OAAOhpB;;AAGb7C,kBAAAA,GAAIssB,OAAOzpB;YAAAA;AAIf7C,cAAAA,GAAIssB,OAAOzpB;AAIf,iBAAO7C;QAAAA;AC1FM,iBAAS,GAAa3P,IAAS2P,IAAAA;AAC5C,cAeMzK,IAAUC,IAfZ4H,KAAO/M,GAAQ+M,MACfwE,KAAYvR,GAAQuR,WACpB24F,KAAalqG,GAAQkqG,YACrB53F,KAAqBtS,GAAQsS,oBAC7BC,KAAsBvS,GAAQuS,qBAC9Bi5G,KAAmCxrH,GAAQwrH;AAS/C,eAPA77G,KAoDK,SAAyBgI,IAAAA;AAC9B,gBAAI69C,KAAU79C,GAAK69C,SACfk3D,KAAkB/0G,GAAKuyF,YACvBA,KAAAA,WAAawiB,KAA6B,CAAA,IAAKA,IAC/CC,KAAiBh1G,GAAKpG,WACtBA,KAAAA,WAAYo7G,KAA4B,CAAA,IAAKA,IAC7C5/G,KAAO4K,GAAK5K,MAEZtO,KAAS,GAAA,EAAc,CAAA,GAAI+2D,EAAAA,GAE3Bm2D,KAAwBzhB,GAAWzsE,YACnCA,KAAAA,WAAakuF,KAAmC,CAAA,IAAKA,IACrDiB,KAAwB1iB,GAAWa,cACnCA,KAAAA,WAAe6hB,KAAmC,CAAA,IAAKA,IACvDjuF,KAAWptB,GAAUotB,YAAYosE,IACjCF,KAAeptE,MAAAA,CAAAA,CAAgB3yB,GAAA,EAAa2yB,EAAAA,EAAYtzD,QACxDyhJ,KAAc7+G,GAAK6xB;AAIvB,gBAHAngC,GAAOm9B,UAAUn9B,GAAOm9B,WAAW,CAAA,GACnCn9B,GAAOo3B,QAAQp3B,GAAOo3B,SAAS,CAAA,GAAA,CAE1B/qB,GAAA,EAAao/F,EAAAA,EAAY//H,UAAAA,CAAW0gI,MAAAA,CAAiBlsE,MAAYx3D,MAAM4I,QAAQwhC,GAAUotB,QAAAA,KAAAA,CAAcptB,GAAUotB,SAASx0D;AAC7H,qBAAOqrF;AA4CT,mBAzCA72B,GAASpoD,QAAQ,SAAUs1I,IAAAA;AACzB,cAAA/gH,GAAA,EAAa+gH,EAAAA,EAAat1I,QAAQ,SAAU/P,IAAAA;AAC1C,oBAAIivD,KAAOgI,GAAWj3D,EAAAA;AAEtB,oBAAKivD,IAAL;AAIA,sBAAIkF,KAAQlF,GAAKkF,OACbz0D,KAAQuvD,GAAKvvD,SAASuvD,IACtBlgC,KAASq2H,GAAYplJ,EAAAA,GACrB0F,KAAOqpB,GAAOrpB,MACd2gJ,KAAYt3H,GAAO,aAAA,KAAkB,gBACrCu3H,KAAanyF,MAASA,GAAMkyF,EAAAA,GAC5BX,KAAYvxF,MAASA,GAAMwxF;AAE/B,sBAAI12F;AACF,wBAAa,aAATvpD,IAAmB;AACrB,0BAAI+0D,KAAuB,YAAd1rC,GAAOu2H,KAAiB,UAAU;AAC/CrtH,sBAAAA,GAAOwiC,EAAAA,IAAUxiC,GAAOwiC,EAAAA,KAAW,CAAA,GACnCxiC,GAAOwiC,EAAAA,EAAQ1rC,GAAO/vB,IAAAA,IAAQU;oBAAAA,WACZ,YAATgG;AACT,0BAAIhG,GAAMikI;AACR1rG,wBAAAA,GAAOm9B,QAAQmxF,gBAAgB7mJ,GAAMikI;2BAChC;AACL,4BAAIpxF,IAEAoiB,KAAWj1D,GAAMi1D,YAAY,IAC7BC,KAAWl1D,GAAMk1D,YAAY;AACjCl1D,wBAAAA,GAAM6uE,SAAS,GAAA,EAAK/hD,GAAA,EAAwB+lB,KAAY,GAAGlzB,OAAOs1C,IAAU,GAAA,CAAA,EAAM/1D,KAAK2zC,IAAWqiB,EAAAA,CAAAA,GAClG38B,GAAOm9B,QAAQmxF,gBAAgB,SAASlnI,OAAO3f,GAAM6uE,MAAAA;sBAAAA;6BAErC,aAAT7oE,MAAqB4gJ,IAAY;AAC1C,0BAAI5zG;AAEJgzG,sBAAAA,KAAaA,MAAyC,aAA5BA,GAAUp0H,YAAAA,IAAwCo0H,KAAX,UACjEztH,GAAOm9B,QAAQmxF,gBAAgB/5H,GAAA,EAAwBkmB,KAAY,GAAGrzB,OAAOqmI,IAAW,GAAA,CAAA,EAAM9mJ,KAAK8zC,IAAW4zG,EAAAA;oBAAAA;;gBAAAA;cAAAA,CAAAA;YAAAA,CAAAA,GAK/GruH;UAAAA,EArHe,EACpB+2D,SAAS7lD,IACTu6F,YAAYA,IACZ34F,WAAWA,IACXxE,MAAMA,GAAAA,CAAAA,GAGAkvB,QAAQtsB,GAAI6rB,QAAQgwF;AAI1B,gBAAIl5G;AACF3C,cAAAA,GAAIisB,QAAQ,cAAA,IAAkBtpB;qBACrBnrC,MAAM4I,QAAQwhC,GAAUktB,QAAAA,GAAW;AAC5C,kBAAIuuF,KAAsBpiH,GAAA,EAAe2G,GAAUktB,UAAU,CAAA;AAE7D9uB,cAAAA,GAAIisB,QAAQ,cAAA,IAAkBoxF,GAAoB,CAAA;YAAA,WACzC7lJ,MAAM4I,QAAQg9B,GAAK0xB,QAAAA,GAAW;AACvC,kBAAIwuF,KAAiBriH,GAAA,EAAemC,GAAK0xB,UAAU,CAAA;AAEnD9uB,cAAAA,GAAIisB,QAAQ,cAAA,IAAkBqxF,GAAe,CAAA;YAAA;AACpC17G,cAAAA,GAAUG,cAAc5a,GAAA,EAAwBoO,KAAWqM,GAAUG,UAAAA,EAAYtsC,KAAK8/B,IAAU,SAAUn+B,IAAAA;AACnH,uBAAkB,WAAXA,GAAEmF;cAAAA,CAAAA,EACR/B,SACDwlC,GAAIisB,QAAQ,cAAA,IAAkB,wBACrBrqB,GAAUG,cAAc5a,GAAA,EAAwBqO,KAAYoM,GAAUG,UAAAA,EAAYtsC,KAAK+/B,IAAW,SAAUp+B,IAAAA;AACrH,uBAAgB,eAATA,GAAE+kJ;cAAAA,CAAAA,EACR3hJ,WACDwlC,GAAIisB,QAAQ,cAAA,IAAkB;mBAEvBtpB,IAAoB;AAC7B,gBAAIyF,IAAWI,IAEX+0G,KAAqB37G,GAAUG,cAAc5a,GAAA,EAAwBihB,KAAYxG,GAAUG,UAAAA,EAAYtsC,KAAK2yC,IAAW,SAAUhxC,IAAAA;AACnI,qBAAgB,WAATA,GAAE+kJ;YAAAA,CAAAA,EACR3hJ,SAAS,GACRgjJ,KAAyB57G,GAAUG,cAAc5a,GAAA,EAAwBqhB,KAAY5G,GAAUG,UAAAA,EAAYtsC,KAAK+yC,IAAW,SAAUpxC,IAAAA;AACvI,qBAAgB,eAATA,GAAE+kJ;YAAAA,CAAAA,EACR3hJ,SAAS;AAAA,aAER+iJ,MAAsBC,QACxBx9G,GAAIisB,QAAQ,cAAA,IAAkBtpB;UAAAA;AAQlC,iBAAA,CAJKC,MAAuBprC,MAAM4I,QAAQwhC,GAAUmtB,QAAAA,KAAantB,GAAUmtB,SAASv0D,SAAS,MAC3FwlC,GAAIisB,QAAQ6wF,SAASl7G,GAAUmtB,SAASzyC,KAAK,IAAA,IAGxC0jB;QAAAA;AC9DT,YAAIy9G,KAAY,CAAC,QAAQ,SAAS,QAAQ,eAAe,YAAY,UAAU,cAAc,YAAA,GAoBzFC,KAAe,SAAsB3tF,IAAAA;AACvC,iBAAOv4D,MAAM4I,QAAQ2vD,EAAAA,IAAMA,KAAK,CAAA;QAAA,GAG9B4tF,KAAyB,GAAY,0BAA0B,SAAY3/G,IAASg1G,IAAOC,IAAAA;AAC7F52I,eAAK62I,gBAAgBD,IAErB,GAAA,EAAe52I,MAAM22I,MAAS,CAAA,CAAA;QAAA,CAAA,GA+BrB,KAAO,EAChB/vG,cAAc,GAAA;AAIT,iBAASK,GAAQ0E,IAAAA;AACtB,cAAI41G,KAAW51G,GAAKyzB,MAChBn9B,KAAQ0J,GAAK1J,OACblB,KAAO4K,GAAK5K,MACZ+E,KAAc6F,GAAK7F,aACnBR,KAAWqG,GAAKrG,UAChBtW,KAAS2c,GAAK3c,QACd0W,KAAaiG,GAAKjG,YAClBw4F,KAAavyF,GAAKuyF,YAClB72F,KAAS,GAAA,EAAyBsE,IAAMy1G,EAAAA,GAGxChiF,KAAOmiF,MAAYt/G,MAASzC;AAE5B8F,UAAAA,MAAYtW,MAAAA,CAAW8W,OACzBA,KAAc,OAAA,GAAA,CAAA,EAAuBR,IAAUtW,EAAAA;AAGjD,cAAIw6D,KAAU,GAAK5iD,aAAa,GAAA,EAAc,EAC5C7F,MAAMA,IACN+E,aAAaA,IACbJ,YAAYA,IACZw4F,YAAYA,IACZ9+D,MAAMA,GAAAA,GACL/3B,EAAAA,CAAAA;AAOH,iBALImiD,GAAQv5B,SAASyW,GAAc8iB,GAAQv5B,IAAAA,KAAS90D,MAAM4I,QAAQylF,GAAQv5B,IAAAA,OACxEu5B,GAAQv5B,OAAO9vD,GAAA,EAAgBqpF,GAAQv5B,IAAAA,IAIlCmP,GAAKoqB,EAAAA;QAAAA;AAGP,iBAAS,GAAax1D,IAAAA;AAC3B,cAAIkF,IAAUC,IAEV4H,KAAO/M,GAAQ+M,MACf+E,KAAc9R,GAAQ8R,aACtBS,KAAsBvS,GAAQuS,qBAC9B9C,KAASzP,GAAQyP,QACjBlB,KAAqBvO,GAAQuO,oBAC7BC,KAAsBxO,GAAQwO,qBAC9BoD,KAAa5R,GAAQ4R,YACrBumG,KAAYn4G,GAAQm4G,WACpBlmG,KAASjS,GAAQiS,QACjBG,KAAkBpS,GAAQoS,iBAC1Bg5B,KAAOprC,GAAQorC,MACfoiF,KAASxtH,GAAQwtH,QACjB97G,KAAa1R,GAAQ0R,YACrB+7G,KAAoBztH,GAAQytH,mBAC5BC,KAAa,OAAA,GAAA,CAAA,EAAO3gH,EAAAA;AAEnB0gH,UAAAA,OAGDA,KADEC,KACkBl8I,KAEA;AAKxB,cAEIm+B,KAAM,EACRlU,KAAK,IACL8vG,aAJgBngE,MAAQA,GAAKu+D,kBAAkB,YAAY,eAK3D/tE,SAAS,CAAA,GACTmwF,SAAS,CAAA,EAAA;AAGPyB,UAAAA,OACF79G,GAAI69G,SAASA,KAGXj/G,OACFoB,GAAIpB,qBAAqBA,KAGvBC,OACFmB,GAAInB,sBAAsBA,KAGxB2pG,OACFxoG,GAAIwoG,YAAYA;AAGlB,cAAIwV,KAAe,OAAA,GAAA,CAAA,EAAgB5gH,IAAM+E,EAAAA;AAEzC,cAAA,CAAK67G;AACH,kBAAM,IAAIL,GAAuB,aAAaznI,OAAOisB,IAAa,YAAA,CAAA;AAGpE,cAwIsB58B,IAxIlB04I,KAAwBD,GAAap8G,WACrCA,KAAAA,WAAYq8G,KAAmC,CAAA,IAAKA,IACpD5yH,KAAS2yH,GAAa3yH,QACtBsW,KAAWq8G,GAAar8G;AAW5B,cAVA3B,GAAIlU,QAoIkBvmB,KApIH,EACjB63B,MAAMA,IACN0C,QAAQA,IACRmC,YAAYA,IACZK,QAAQA,IACRG,iBAAiBA,IACjBd,UAAUA,IACVtW,QAAQA,GAAAA,GA8HO,OAAA,GAAA,CAAA,EAAO9lB,GAAI63B,IAAAA,IAI9B,SAAqBiL,IAAAA;AACnB,gBAAIjL,KAAOiL,GAAMjL,MACbuE,KAAW0G,GAAM1G,UACjBtW,KAASgd,GAAMhd,QACfiX,KAAS+F,GAAM/F,QACfL,KAAaoG,GAAMpG,YACnBi8G,KAAwB71G,GAAM5F,iBAC9BA,KAAAA,WAAkBy7G,KAAmC,CAAA,IAAKA,IAC1D3e,KAAU,GAAA,EAAMniG,IAAM,CAAC,SAASuE,KAAWtW,MAAU,IAAIlD,YAAAA,GAAe,SAAA,CAAA,KAAe,GAAA,EAAMiV,IAAM,CAAC,SAASuE,IAAU,SAAA,CAAA,KAAe,GAAA,EAAMvE,IAAM,CAAC,SAAA,CAAA,GACnJ8I,KAAoB,IACpBi4G,KAAoB;AAExB,gBAAI77G,MAAUi9F,MAAWA,GAAQ/kI,QAAQ;AACvC,kBAAI4jJ,KAAaljH,GAAA,EAAqBqkG,EAAAA,EAAS9pI,KAAK8pI,IAAS,SAAU8e,IAAAA;AACrE,uBAAOA,GAAIvyH;cAAAA,CAAAA;AAGTsyH,cAAAA,GAAWn6I,QAAQq+B,EAAAA,IAAAA,OACrB4D,KAAoB5D,IACpB67G,KAAoB5e,GAAQ6e,GAAWn6I,QAAQq+B,EAAAA,CAAAA;YAAAA;AAInD,gBAAA,CAAK4D,MAAqBq5F,MAAWA,GAAQ/kI,QAAQ;AAEnD0rC,cAAAA,KAAoBq5F,GAAQ,CAAA,EAAGzzG;AAE/B,kBAAIwyH,KAAWrjH,GAAA,EAAeskG,IAAS,CAAA;AAEvC4e,cAAAA,KAAoBG,GAAS,CAAA;YAAA;AAiB/B,mBAdIp4G,GAAkBjiC,QAAQ,GAAA,IAAA,MAuChC,SAAkCshB,IAAAA;AAKhC,uBAFI8a,IAFAguG,KAAU,CAAA,GACV5/F,KAAK,cAGFpO,KAAOoO,GAAGvpB,KAAKK,EAAAA;AACpB8oH,gBAAAA,GAAQpiI,KAAKo0B,GAAK,CAAA,CAAA;AAGpB,qBAAOguG;YAAAA,EA9CmCnoG,EAAAA,EAC/Bt/B,QAAQ,SAAU23I,IAAAA;AACzB,kBAAIJ,GAAkBK,aAAaL,GAAkBK,UAAUD,EAAAA,GAAO;AAEpE,oBAAIE,KAAqBN,GAAkBK,UAAUD,EAAAA,GACjDG,KAAgBj8G,GAAgB87G,EAAAA,KAASE,GAAmBl6G,SAC5DkK,KAAK,IAAI9mB,OAAO,IAAIzR,OAAOqoI,IAAM,GAAA,GAAM,GAAA;AAC3Cr4G,gBAAAA,KAAoBA,GAAkB1gB,QAAQipB,IAAIiwG,EAAAA;cAAAA;YAAAA,CAAAA,GAQ1D,WAAA;AACE,kBAQI16H,IAGEolB,IAXFu1G,KAASrgJ,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,IAC7E2jC,KAAa3jC,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,IAEjFuuD,KAAY8xF,MAAU18G,KAAa,GAAA,EAAI5a,MAAM,GAAA,EAAIkX,QAAQ0D,IAAY08G,EAAAA,CAAAA,IAAW,GAAA,EAAIt3H,MAAMs3H,EAAAA,GAC1FC,KAAmB,GAAA,EAAIv3H,MAAM4a,EAAAA,GAC7B48G,KAAiBC,GAAcjyF,GAAUjH,QAAAA,KAAak5F,GAAcF,GAAiBh5F,QAAAA,KAAa,IAClGm5F,KAAelyF,GAAU9G,QAAQ64F,GAAiB74F,MAClDi5F,KAAenyF,GAAU1G,YAAY;AAWzC,qBAA+B,SAL7BniC,KAHE66H,MAAkBE,KAGd17H,GAAA,EAAwB+lB,KAAY,GAAGlzB,OAAO2oI,IAAgB,KAAA,CAAA,EAAQppJ,KAAK2zC,IAAW21G,KAAeC,EAAAA,IAErGA,IAGGh7H,GAAIxpB,SAAS,CAAA,IAAa+gC,GAAA,EAAuBvX,EAAAA,EAAKvuB,KAAKuuB,IAAK,GAAA,EAAI,IAAKA;YAAAA,EAtBrDkiB,IAAmBjE,EAAAA;UAAAA,EAjDlB18B,EAAAA,IAuFlC,SAAyBwjC,IAAAA;AACvB,gBASI/kB,IAGEulB,IAZFnM,KAAO2L,GAAM3L,MACb0C,KAASiJ,GAAMjJ,QACfm/G,KAAmBl2G,GAAM9G,YACzBA,KAAAA,WAAag9G,KAA8B,KAAKA,IAChDL,KAAmB,GAAA,EAAIv3H,MAAM4a,EAAAA,GAC7Bi9G,KAAoB1nJ,MAAM4I,QAAQg9B,GAAKmyB,OAAAA,IAAWnyB,GAAKmyB,QAAQ,CAAA,IAAK,MACpEsvF,KAAiB/+G,MAAUo/G,MAAqBJ,GAAcF,GAAiBh5F,QAAAA,KAAa,QAC5Fm5F,KAAe3hH,GAAK2oB,QAAQ64F,GAAiB74F,QAAQ,IACrDi5F,KAAe5hH,GAAKkyB,YAAY;AAcpC,mBAA+B,SAP7BtrC,KAJE66H,MAAkBE,KAId17H,GAAA,EAAwBkmB,KAAY,GAAGrzB,OAAO2oI,IAAgB,KAAA,CAAA,EAAQppJ,KAAK8zC,IAAWw1G,KAAeC,EAAAA,IAGrGA,IAIGh7H,GAAIxpB,SAAS,CAAA,IAAa+gC,GAAA,EAAuBvX,EAAAA,EAAKvuB,KAAKuuB,IAAK,GAAA,EAAI,IAAKA;UAAAA,EA9G7Bze,EAAAA,IAAAA,CA5HlD48B;AAMH,mBAAA,OADOnC,GAAIo8G,SACJp8G;AAGTA,UAAAA,GAAIlU,OAAO6V,IAEX3B,GAAI3U,SAAS,GAAGnV,OAAOmV,EAAAA,EAAQud,YAAAA,GAC/B7G,KAAaA,MAAc,CAAA;AAC3B,cAAIhS,KAAOqN,GAAKsL,MAAM/G,EAAAA,KAAa,CAAA;AAE/BiB,UAAAA,OACF5C,GAAIisB,QAAQ6wF,SAASl6G;AAGvB,cAAIu8G,KAzJsB,SAA+Bp9G,IAAAA;AACzD,gBAAIq9G,KAAY,CAAA;AAChBr9G,YAAAA,GAAWn7B,QAAQ,SAAUxP,IAAAA;AACtBgoJ,cAAAA,GAAUhoJ,GAAE+kJ,EAAAA,MACfiD,GAAUhoJ,GAAE+kJ,EAAAA,IAAM,CAAA,IAGpBiD,GAAUhoJ,GAAE+kJ,EAAAA,EAAI/kJ,GAAEvB,IAAAA,IAAQuB;YAAAA,CAAAA;AAE5B,gBAAIioJ,KAAoB,CAAA;AAQxB,mBANAlkH,GAAA,EAAaikH,EAAAA,EAAWx4I,QAAQ,SAAUtR,IAAAA;AACxC,cAAA6lC,GAAA,EAAaikH,GAAU9pJ,EAAAA,CAAAA,EAAIsR,QAAQ,SAAUxP,IAAAA;AAC3CioJ,gBAAAA,GAAkBpzI,KAAKmzI,GAAU9pJ,EAAAA,EAAG8B,EAAAA,CAAAA;cAAAA,CAAAA;YAAAA,CAAAA,GAIjCioJ;UAAAA,EAwIwCh8H,GAAA,EAAwBkS,KAAWlS,GAAA,EAAwBmS,KAAY,CAAA,CAAA,EAAI//B,KAAK+/B,IAAWkoH,GAAa97G,GAAUG,UAAAA,CAAAA,CAAAA,EAC/JtsC,KAAK8/B,IAAUmoH,GAAa3tH,GAAKgS,UAAAA,CAAAA,CAAAA;AAKnCo9G,UAAAA,GAAmBv4I,QAAQ,SAAU6wE,IAAAA;AACnC,gBACIlhF,IASE6xC,IAVFk3G,KAAUxB,GAAkBrmE,GAAU0kE,EAAAA;AAS1C,gBANqB,WAAjB1kE,GAAU0kE,MAAiB1kE,GAAU7xD,UAAU6xD,GAAU7xD,OAAOoD,eAClEzyB,KAAQwrC,KAAAA,YAGVxrC,KAAQkhF,MAAaA,GAAU5hF,QAAQksC,GAAW01C,GAAU5hF,IAAAA;AAM1DU,cAAAA,KAAQkhF,MAAaA,GAAU5hF,QAAQksC,GAAW1e,GAAA,EAAwB+kB,KAAY,GAAGlyB,OAAOuhE,GAAU0kE,IAAI,GAAA,CAAA,EAAM1mJ,KAAK2yC,IAAWqvC,GAAU5hF,IAAAA,CAAAA;qBApLvH,SAAgCA,IAAMksC,IAAAA;AACjE,qBAAO5a,GAAA,EAAwB4a,EAAAA,EAAYtsC,KAAKssC,IAAY,SAAU3qC,IAAAA;AACpE,uBAAOA,GAAEvB,SAASA;cAAAA,CAAAA;YAAAA,EAmLgB4hF,GAAU5hF,MAAMspJ,EAAAA,EAAoB3kJ,SAAS,GAAG;AAChF,kBAAIguC;AAKJpjB,sBAAQ6T,KAAK5V,GAAA,EAAwBmlB,KAAY,cAActyB,OAAOuhE,GAAU5hF,MAAM,sFAAA,CAAA,EAAyFJ,KAAK+yC,IAAWivC,GAAU5hF,MAAM,oEAAA,CAAA;YAAA;AAGjN,gBAAc,SAAVU,IAAJ;AAQA,kBAAA,WAJWkhF,GAAUlzC,WAAAA,WAAkChuC,OACrDA,KAAQkhF,GAAUlzC,UAAAA,WAGThuC,MAAyBkhF,GAAUrkB,YAAAA,CAAaqkB,GAAU4yD;AACnE,sBAAM,IAAItnI,MAAM,sBAAsBmT,OAAOuhE,GAAU5hF,MAAM,kBAAA,CAAA;AAG/D,kBAAIkoJ,MAActmE,GAAU7xD,UAAoC,aAA1B6xD,GAAU7xD,OAAOrpB,QAAsC,YAAA,OAAVhG;AACjF,oBAAA;AACEA,kBAAAA,KAAQ4pB,KAAKkH,MAAM9wB,EAAAA;gBAAAA,SACZe,IAAP;AACA,wBAAM,IAAIyL,MAAM,uDAAA;gBAAA;AAIhBu8I,cAAAA,MACFA,GAAQ,EACNt/G,KAAKA,IACLy3C,WAAWA,IACXlhF,OAAOA,IACPqrC,WAAWA,IACXxE,MAAMA,GAAAA,CAAAA;YAAAA;UAAAA,CAAAA;AAKZ,cAAImiH,KAAyB,GAAA,EAAc,GAAA,EAAc,CAAA,GAAIlvH,EAAAA,GAAU,CAAA,GAAI,EACzEuR,WAAWA,GAAAA,CAAAA;AAYb,eARE5B,KADE+9G,KACI,GAAiBwB,IAAwBv/G,EAAAA,IAGzC,GAAqBu/G,IAAwBv/G,EAAAA,GAK7Co8G,WAAWjhH,GAAA,EAAa6E,GAAIo8G,OAAAA,EAAS5hJ,QAAQ;AACnD,gBAAIglJ,KAAerkH,GAAA,EAAa6E,GAAIo8G,OAAAA,EAAS9lI,OAAO,SAAU7L,IAAMg1I,IAAAA;AAClE,kBAAIC,KAAc1/G,GAAIo8G,QAAQqD,EAAAA;AAG9B,qBAAOh1I,MAFMA,KAAO,MAAM,MACR,GAAA,EAAOkpH,UAAU8rB,IAAYC,EAAAA;YAAAA,GAE9C,EAAA;AAEH1/G,YAAAA,GAAIisB,QAAQ2vF,SAAS4D;UAAAA;AAavB,iBAVIx/G,GAAIo8G,WAAAA,OAICp8G,GAAIo8G,SAKbrU,GAAmB/nG,EAAAA,GACZA;QAAAA;AAGT,YAAI8+G,KAAgB,SAAuBv5H,IAAAA;AACzC,iBAAOA,KAAMA,GAAIC,QAAQ,OAAO,EAAA,IAAM;QAAA;ACxQzB,iBAAS,GAAewiH,IAAI2X,IAAAA;AACzC,iBAAOC,GAAgB35I,MAAM5J,MAAMiC,SAAAA;QAAAA;AAGrC,iBAASshJ,KAAAA;AAyDP,kBAxDAA,KAAkBjqJ,GAAA,EAAgC2tB,GAAA,EAAoB6a,KAAK,SAAS+pG,GAAQ3iI,IAAKwqB,IAAAA;AAC/F,gBAAIkgH,IACA4P,IACA9gH,IACAH,IACAC,IACAF,IACAD,IACA61G,IACAuL,IACAC,IACA3oD,IACAtoE,IACAs5G,KAAQ9pI;AAEZ,mBAAOglB,GAAA,EAAoBiO,KAAK,SAAkBgE,IAAAA;AAChD;AACE,wBAAQA,GAAS9qB,OAAO8qB,GAASn5B,MAAAA;kBAC/B,KAAK;AAgBH,2BAfA6zI,KAAO7H,GAAM5tI,SAAS,KAAA,WAAK4tI,GAAM,CAAA,IAAmBA,GAAM,CAAA,IAAK,CAAA,GAC/DyX,KAAmB5P,GAAK4P,kBAAkB9gH,KAAUkxG,GAAKlxG,SAASH,KAAqBqxG,GAAKrxG,oBAAoBC,KAAsBoxG,GAAKpxG,qBAAqBF,KAAiBsxG,GAAKtxG,gBAAgBD,KAAqBuxG,GAAKvxG,oBAAoB61G,KAAwBtE,GAAKsE,uBACjRuL,KAAiB,EACf9H,mBAAmBjoH,IACnBgP,SAASA,IACTH,oBAAoBA,IACpBC,qBAAqBA,IACrBF,gBAAgBA,IAChBD,oBAAoBA,IACpB61G,uBAAuBA,GAAAA,GAEzBwL,KAAoB,OAAA,GAAA,CAAA,EAAiB,EACnC3iH,MAAM73B,GAAAA,CAAAA,GACJ6xF,KAAa2oD,GAAkB3iH,MACnC7H,GAASn5B,OAAO,GACTmiC,IAAQ,GAAA,EAAc,GAAA,EAAc,CAAA,GAAIuhH,EAAAA,GAAiB,CAAA,GAAI,EAClE1iH,MAAMg6D,IACNi5C,kBAAAA,MACA+K,mBAAAA,KAAmB,CAAA,CAAA;kBAGvB,KAAK;AAOH,2BANAtsH,KAASyG,GAASgzG,MAAAA,CAEbsX,MAAoBroJ,MAAM4I,QAAQ2vB,EAAAA,KAASA,GAAKv1B,WACnDs0B,GAAOsO,OAAO,GAAA,EAAItO,GAAOsO,MAAMrN,EAAAA,KAAS,OAGnCwF,GAASqzG,OAAO,UAAU95G,EAAAA;kBAEnC,KAAK;kBACL,KAAK;AACH,2BAAOyG,GAASuF,KAAAA;gBAAAA;YAAAA,GAGrBotG,EAAAA;UAAAA,CAAAA,CAAAA,GAEkBjiI,MAAM5J,MAAMiC,SAAAA;QAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA;AClFtB,QAAA9H,GAAA,UAAA,SAAAc,IAAA;AAAmC,cxBonBzB0oJ,IAAQC,IAAUC,IwBpnBjBhqB,KAAuB5+H,GAAvB4+H,SAASz3F,KAAcnnC,GAAdmnC;AACjC,iBAAO,EACL7/B,IAAI,EACF0/B,QxBinBmB0hH,KwBjnBHG,IxBinBWF,KwBjnBL/pB,GAAQ+pB,UxBinBOC,KwBjnBGhqB,GAAQgqB,WxBknBpDA,KAAYA,MAAa,SAAUr+I,IAAAA;AACjC,mBAAOA;UAAAA,GAGTo+I,KAAWA,MAAY,SAAUp+I,IAAAA;AAC/B,mBAAOA;UAAAA,GAGF,SAAUm+B,IAAAA;AASf,mBARmB,YAAA,OAARA,OACTA,KAAM,EACJlU,KAAKkU,GAAAA,IAITpE,GAAKmsG,mBAAmB/nG,EAAAA,GACxBA,KAAMigH,GAASjgH,EAAAA,GACRkgH,GAAUF,GAAOhgH,EAAAA,CAAAA;UAAAA,IwBloBtBiD,cAAAA,IACAK,SAAAA,IACA/E,SAAAA,KACAiB,gBAAgB,SAACj6B,IAAKwqB,IAAMkgH,IAAAA;AAAmB,gBAAD75I;AAC5C,gBAAA,WAAG65I,IAAoB;AACrB,kBAAMmQ,KAAe3hH,GAAAA;AACrBwxG,cAAAA,KAAO,EACLvxG,oBAAoB0hH,GAAa1hH,oBACjCC,gBAAgByhH,GAAazhH,gBAC7BC,oBAAoBwhH,GAAaxhH,oBACjCC,qBAAqBuhH,GAAavhH,oBAAAA;YAAAA;AAPM,qBAAAvpC,KAAA,UAAA,QAAT2pB,KAAS,IAAA,MAAA3pB,KAAA,IAAAA,KAAA,IAAA,CAAA,GAAAK,KAAA,GAAAA,KAAAL,IAAAK;AAATspB,cAAAA,GAAStpB,KAAA,CAAA,IAAA,UAAAA,EAAA;AAW5C,mBAAO6pC,GAAc,MAAA,QAAdnc,GAAA,EAAAjtB,KAAA,CAAemP,IAAKwqB,IAAMkgH,EAAAA,CAAAA,EAA1B,KAAA75I,IAAmC6oB,EAAAA,CAAAA;UAAAA,GAE5C6oH,cAAAA,IACA1lG,MAAAA,GAAAA,EAAAA,GAEF0yF,cAAc,EACZoB,SAAS,EACPG,aAAa,EACX1/C,QAAAA,GAAAA,OAAAA,EAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,QAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,WAAAA,WAAAA;AAAAA,iBAAAA;QAAAA,CAAAA;ACjCK,YAAAvgF,KAAAW,GAAA,GAAA,GAAAhB,KAAAgB,GAAA,GAAA,GAAA8K,KAAA9K,GAAA,GAAA,GAAAzB,KAAAyB,GAAA,GAAA,GAAAssB,KAAAtsB,GAAA,GAAA,GCOTgiC,KAAgB,EACpBsnH,gBAAgB,WAAA;AACd,iBAAOx5D,OAAAA,GAAAA,eAAAA,EDTI,0IAAA;QAAA,EAAA;ACcA,iBAASy5D,KAAAA;AAEtB,iBAAO,EACLxrB,cAAc,EACZ13F,MAAM,EACJ63F,SAASr3F,IACTs3F,WAAWn8F,GAAAA,GAEbm9F,SAAS,EACPnB,UAAAA,GAAAA,SACAE,SAAAA,IACAC,WAAAA,GAAAA,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACzBR,YAAIqrB,KAAYxpJ,GAAQ,GAAA,GACpBypJ,KAAezpJ,GAAQ,GAAA,GACvB0pJ,KAAW1pJ,GAAQ,GAAA,GACnBqJ,KAAUrJ,GAAQ,EAAA,GAClB2pJ,KAAiB3pJ,GAAQ,GAAA;AA8C7B1B,QAAAA,GAAOD,UARP,SAAciX,IAAYkI,IAAWosI,IAAAA;AACnC,cAAIzuH,KAAO9xB,GAAQiM,EAAAA,IAAck0I,KAAYE;AAI7C,iBAHIE,MAASD,GAAer0I,IAAYkI,IAAWosI,EAAAA,MACjDpsI,KAAAA,SAEK2d,GAAK7lB,IAAYm0I,GAAajsI,IAAW,CAAA,CAAA;QAAA;MAAA,GAAA,SAAAjd,IAAAd,IAAAO,IAAA;AC/ClD,YAAI6pJ,KAAe7pJ,GAAQ,GAAA,GAEvBg+B,KAAmCh+B,GAAQ,GAAA,GAE3C8pJ,KAAgB9pJ,GAAQ,GAAA;AAE5B,iBAAS22I,KAAAA;AAkBP,iBAjBuB,eAAA,OAAZlxE,WAA2BokF,MACpCvrJ,GAAOD,UAAUs4I,KAAOkT,IAAcvrJ,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD,YAE3GC,GAAOD,UAAUs4I,KAAO,SAAc7rH,IAAQ5qB,IAAU2wH,IAAAA;AACtD,gBAAInzD,KAAOosF,GAAch/H,IAAQ5qB,EAAAA;AACjC,gBAAKw9D,IAAL;AAEA,kBAAIokD,KAAO9jF,GAAiC0/B,IAAMx9D,EAAAA;AAElD,qBAAI4hH,GAAK1iH,MACA0iH,GAAK1iH,IAAIV,KAAK6I,UAAU9D,SAAS,IAAIqnB,KAAS+lG,EAAAA,IAGhD/O,GAAKtiH;YAAAA;UAAAA,GACXlB,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD,UAGnEs4I,GAAKznI,MAAM5J,MAAMiC,SAAAA;QAAAA;AAG1BjJ,QAAAA,GAAOD,UAAUs4I,IAAMr4I,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC3B5FC,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAI+pJ,KAAU/pJ,GAAQ,GAAA;AAkCtB1B,QAAAA,GAAOD,UAJP,SAAa4B,IAAQ+4B,IAAMx5B,IAAAA;AACzB,iBAAiB,QAAVS,KAAiBA,KAAS8pJ,GAAQ9pJ,IAAQ+4B,IAAMx5B,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC7BzD,YAAIwqJ,KAAUhqJ,GAAQ,GAAA,GAMlBiqJ,KAAgB,EAClBC,mBAAAA,MACA16G,aAAAA,MACA26G,cAAAA,MACA3rC,cAAAA,MACA3hC,aAAAA,MACAutE,iBAAAA,MACAC,0BAAAA,MACAC,0BAAAA,MACAC,QAAAA,MACAC,WAAAA,MACAhlJ,MAAAA,KAAM,GAEJilJ,KAAgB,EAClB3rJ,MAAAA,MACA2E,QAAAA,MACAtD,WAAAA,MACAuqJ,QAAAA,MACAv+F,QAAAA,MACA5kD,WAAAA,MACAojJ,OAAAA,KAAO,GASLC,KAAe,EACjB,UAAA,MACAp4E,SAAAA,MACAgsC,cAAAA,MACA3hC,aAAAA,MACA2tE,WAAAA,MACAhlJ,MAAAA,KAAM,GAEJqlJ,KAAe,CAAA;AAInB,iBAASC,GAAW7qE,IAAAA;AAElB,iBAAI+pE,GAAQe,OAAO9qE,EAAAA,IACV2qE,KAIFC,GAAa5qE,GAAoB,QAAA,KAAMgqE;QAAAA;AAVhDY,QAAAA,GAAab,GAAQgB,UAAAA,IAhBK,EACxB,UAAA,MACArgE,QAAAA,MACA6zB,cAAAA,MACA3hC,aAAAA,MACA2tE,WAAAA,KAAW,GAYbK,GAAab,GAAQiB,IAAAA,IAAQL;AAY7B,YAAI1rJ,KAAiBD,OAAOC,gBACxBk2F,KAAsBn2F,OAAOm2F,qBAC7BvwE,KAAwB5lB,OAAO4lB,uBAC/BiU,KAA2B75B,OAAO65B,0BAClC5W,KAAiBjjB,OAAOijB,gBACxBgpI,KAAkBjsJ,OAAOkB;AAsC7B7B,QAAAA,GAAOD,UArCP,SAAS8sJ,GAAqBC,IAAiBC,IAAiBC,IAAAA;AAC9D,cAA+B,YAAA,OAApBD,IAA8B;AAEvC,gBAAIH,IAAiB;AACnB,kBAAIK,KAAqBrpI,GAAempI,EAAAA;AAEpCE,cAAAA,MAAsBA,OAAuBL,MAC/CC,GAAqBC,IAAiBG,IAAoBD,EAAAA;YAAAA;AAI9D,gBAAI3iJ,KAAOysF,GAAoBi2D,EAAAA;AAE3BxmI,YAAAA,OACFlc,KAAOA,GAAKwW,OAAO0F,GAAsBwmI,EAAAA,CAAAA;AAM3C,qBAHIG,KAAgBV,GAAWM,EAAAA,GAC3BK,KAAgBX,GAAWO,EAAAA,GAEtB9sJ,KAAI,GAAGA,KAAIoK,GAAKlF,QAAAA,EAAUlF,IAAG;AACpC,kBAAIuB,KAAM6I,GAAKpK,EAAAA;AAEf,kBAAA,EAAKksJ,GAAc3qJ,EAAAA,KAAUwrJ,MAAaA,GAAUxrJ,EAAAA,KAAW2rJ,MAAiBA,GAAc3rJ,EAAAA,KAAW0rJ,MAAiBA,GAAc1rJ,EAAAA,IAAO;AAC7I,oBAAIkrB,KAAa8N,GAAyBuyH,IAAiBvrJ,EAAAA;AAE3D,oBAAA;AAEEZ,kBAAAA,GAAeksJ,IAAiBtrJ,IAAKkrB,EAAAA;gBAAAA,SAC9BzqB,IAAP;gBAAOA;cAAAA;YAAAA;UAAAA;AAKf,iBAAO6qJ;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACjGT,YAAIM,KAAO1rJ,GAAQ,GAAA,GACf2rJ,KAAQ3rJ,GAAQ,GAAA;AAEpB3B,QAAAA,GAAQgmE,YAAYA,IACpBhmE,GAAQ+jE,gBA0DR,SAAuB5iE,IAAO85B,IAAAA;AAC5B,cAKIvB,IACA6zH,IACA/6G,IACA/xC,IARA+sJ,KAAWvyH,MAAW,CAAA,GACtBwyH,KAASD,GAASC,UAAUJ,GAAKtnF,cAAAA,GACjCvkB,KAASgsG,GAAShsG,QAClBp8C,KAASqoJ,GAAOroJ,QAChBS,KAAAA;AAMA27C,kBAAAA,OACFA,KAASksG;AAGX,cAAqB,YAAA,OAAVvsJ;AACT,kBAAMmsJ,GAAM,yCAAyCnsJ,EAAAA;AAGvDosJ,UAAAA,KAAa,EAACI,WAAW,GAAG1pF,UAAU,MAAM9iE,OAAO,CAAA,EAAA,GACnDu4B,KAAS,EAACi0H,WAAW,GAAG1pF,UAAU,MAAM9iE,OAAO,CAAA,EAAA;AAE/C,iBAAA,EAAS0E,KAAQT;AACf3E,YAAAA,KAAOgtJ,GAAO5nJ,EAAAA,GAETwnJ,GAAKO,YAAYntJ,EAAAA,OAItB+xC,KAAUwzB,GAAUvlE,IAAMU,IAAO85B,EAAAA,GACzBgpC,WAAWxjE,IAEf+xC,GAAQm7G,YAAYJ,GAAWI,cACjCJ,KAAa/6G,KAGXA,GAAQm7G,YAAYj0H,GAAOi0H,cAC7BJ,KAAa7zH,IACbA,KAAS8Y;AAIT+6G,UAAAA,GAAWtpF,aACbvqC,GAAO6zH,aAAaA;AAGtB,iBAAO7zH;QAAAA,GAvGT15B,GAAQkmE,mBA2GR,SAA0BzlE,IAAMotJ,IAAAA;AAC9BR,UAAAA,GAAKnnF,iBAAiBzlE,IAAMotJ,EAAAA;QAAAA,GA3G9B7tJ,GAAQ+lE,gBA+GR,WAAA;AACE,iBAAOsnF,GAAKtnF,cAAAA;QAAAA,GA/Gd/lE,GAAQ8tJ,gBAmHR,SAAuBrtJ,IAAM65C,IAAAA;AAC3B,cACI74C,IADAsK,KAAMtL;AAGN65C,UAAAA,QACFvuC,KAAM,CAAA,GACFtL,EAAAA,IAAQ65C;AAGd,eAAK74C,MAAOsK;AACVshJ,YAAAA,GAAKU,gBAAgBhiJ,GAAItK,EAAAA,GAAM,EAACusJ,cAAcvsJ,GAAAA,CAAAA;QAAAA,GA3HlDwsJ,GAAQnsJ,UAAUosJ,UA2JlB,SAAc/sJ,IAAAA;AACZ,cACIqxC,IACA32B,IAFA5C,KAAQhS,KAAKgS;AAIjB,cAAc,OAAV9X;AAAc;AAElBqxC,UAAAA,KAAUv5B,GAAMA,GAAM7T,SAAS,CAAA,IAC/ByW,KAAO22B,GAAQguB,SAAShuB,GAAQguB,SAASp7D,SAAS,CAAA,MAExB,WAAdyW,GAAK1U,OACf0U,GAAK1a,SAASA,KAEdqxC,GAAQguB,SAAS3pD,KAAK,EAAC1P,MAAM,QAAQhG,OAAOA,GAAAA,CAAAA;QAAAA,GAvKhD8sJ,GAAQnsJ,UAAUqsJ,aAoIlB,SAAoBhtJ,IAAOV,IAAAA;AACzBwG,eAAKmnJ,SAAS3tJ,EAAAA,GACdwG,KAAKinJ,QAAQ/sJ,EAAAA,GACb8F,KAAKonJ,UAAAA;QAAAA,GAtIPJ,GAAQnsJ,UAAUwsJ,iBAyIlB,SAAwBt/I,IAAOvO,IAAAA;AAC7B,cAAIwY,KAAQhS,KAAKgS,OACbu5B,KAAUv5B,GAAMA,GAAM7T,SAAS,CAAA,GAC/B6zI,KAAUjqI,GAAMu/I,SAAS/tF,UACzBzvD,KAAOtQ,KACP,EACE0G,MAAM,WACN08C,SAAS,QACTjwB,YAAY,EAACksC,WAAW,CAACr/D,EAAAA,EAAAA,GACzB+/D,UAAUy4E,GAAAA,IAEZA;AAEJzmG,UAAAA,GAAQguB,WAAWhuB,GAAQguB,SAAS1/C,OAAO/P,EAAAA;QAAAA,GArJ7Ck9I,GAAQnsJ,UAAUssJ,WAyKlB,SAAc3tJ,IAAAA;AACZ,cAAIwY,KAAQhS,KAAKgS,OACb6mD,KAAY74D,KAAKg0B,QAAQuzH,cAAc/tJ,IACvC+xC,KAAUv5B,GAAMA,GAAM7T,SAAS,CAAA,GAC/Bq7D,KAAQ,EACVt5D,MAAM,WACN08C,SAAS,QACTjwB,YAAY,EAACksC,WAAW,CAACA,EAAAA,EAAAA,GACzBU,UAAU,CAAA,EAAA;AAGZhuB,UAAAA,GAAQguB,SAAS3pD,KAAK4pD,EAAAA,GACtBxnD,GAAMpC,KAAK4pD,EAAAA;QAAAA,GApLbwtF,GAAQnsJ,UAAUusJ,YAuLlB,WAAA;AACEpnJ,eAAKgS,MAAMd,IAAAA;QAAAA,GAvLb81I,GAAQnsJ,UAAU2sJ,gBAAgBz0E,IAClCi0E,GAAQnsJ,UAAU4sJ,WAAW10E,IAC7Bi0E,GAAQnsJ,UAAU6sJ,SAwLlB,WAAA;AACE,iBAAO;QAAA;AAvLT,YAAIjB,KAAgB;AAGpB,iBAAS1nF,GAAUvlE,IAAMU,IAAO85B,IAAAA;AAC9B,cAGIvB,IAHAypE,KAASkqD,GAAK5gD,UAAU,CAAA,CAAA,GAExBjrD,MADWvmB,MAAW,CAAA,GACJumB;AAGtB,cAAoB,YAAA,OAAT/gD;AACT,kBAAM6sJ,GAAM,wCAAwC7sJ,EAAAA;AAGtD,cAAA,CAAK4sJ,GAAKO,YAAYntJ,EAAAA;AACpB,kBAAM6sJ,GAAM,4CAA4C7sJ,EAAAA;AAG1D,cAAqB,YAAA,OAAVU;AACT,kBAAMmsJ,GAAM,yCAAyCnsJ,EAAAA;AAevD,cAZIqgD,QAAAA,OACFA,KAASksG,KAGXL,GAAK5gD,UAAU,EAACmiD,WAAWX,IAASO,aAAahtG,GAAAA,CAAAA,GAEjD9nB,KAAS2zH,GAAKrnF,UAAU7kE,IAAO,EAAC8iE,UAAUxjE,IAAMouJ,gBAAAA,KAAgB,CAAA,GAEhExB,GAAK5gD,UAAUtJ,MAAU,CAAA,CAAA,GAIrBzpE,GAAOo1H;AACT,kBAAMp1H,GAAOo1H;AAGf,iBAAO,EACLnB,WAAWj0H,GAAOi0H,WAClB1pF,UAAUvqC,GAAOuqC,UACjB9iE,OAAOu4B,GAAOk5F,QAAQ27B,SAAS/tF,SAAAA;QAAAA;AA8EnC,iBAASytF,GAAQhzH,IAAAA;AACfh0B,eAAKg0B,UAAUA,IACfh0B,KAAKsnJ,WAAW,EAAC/tF,UAAU,CAAA,EAAA,GAC3Bv5D,KAAKgS,QAAQ,CAAChS,KAAKsnJ,QAAAA;QAAAA;AAiErB,iBAASv0E,KAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC9MT/5E,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAIgH,KAAWhH,GAAQ,GAAA;AA2BvB1B,QAAAA,GAAOD,UAJP,SAAiBmB,IAAAA;AACf,iBAAOwH,GAASxH,EAAAA,EAAO4xB,YAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACtBzB,YACIg8H,KADWptJ,GAAQ,GAAA,EACMotJ;AAE7BA,QAAAA,GAAcA,gBAAgBA,IAC9B9uJ,GAAOD,UAAU+uJ;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNjB,YAAIh1H,KAAiBp4B,GAAQ,GAAA,GAEzBy4B,KAAkBz4B,GAAQ,GAAA,GAE1Bs4B,KAA6Bt4B,GAAQ,GAAA,GAErCu4B,KAAkBv4B,GAAQ,GAAA;AAM9B1B,QAAAA,GAAOD,UAJP,SAAkB+E,IAAAA;AAChB,iBAAOg1B,GAAeh1B,EAAAA,KAAQq1B,GAAgBr1B,EAAAA,KAAQk1B,GAA2Bl1B,EAAAA,KAAQm1B,GAAAA;QAAAA,GAGhEj6B,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACXhG,YAAIumC,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjBikC,KAAQjkC,GAAQ,EAAA,GAChBqJ,KAAUrJ,GAAQ,GAAA,GAClByrB,KAAWzrB,GAAQ,EAAA,GACnBilB,KAAWjlB,GAAQ,EAAA,GACnBojC,KAAoBpjC,GAAQ,EAAA,GAC5BmuH,KAAiBnuH,GAAQ,GAAA,GACzBktD,KAAqBltD,GAAQ,GAAA,GAC7BqtJ,KAA+BrtJ,GAAQ,GAAA,GACvCurF,KAAkBvrF,GAAQ,EAAA,GAC1BwrF,KAAaxrF,GAAQ,GAAA,GAErBstJ,KAAuB/hE,GAAgB,oBAAA,GACvCgiE,KAAmB,kBACnBC,KAAiC,kCACjClkJ,KAAYqvB,GAAOrvB,WAKnBmkJ,KAA+BjiE,MAAc,MAAA,CAAOvnD,GAAM,WAAA;AAC5D,cAAIz7B,KAAQ,CAAA;AAEZ,iBADAA,GAAM8kJ,EAAAA,IAAAA,OACC9kJ,GAAM2W,OAAAA,EAAS,CAAA,MAAO3W;QAAAA,CAAAA,GAG3BklJ,KAAkBL,GAA6B,QAAA,GAE/CM,KAAqB,SAAUxpH,IAAAA;AACjC,cAAA,CAAK1Y,GAAS0Y,EAAAA;AAAI,mBAAA;AAClB,cAAIypH,KAAazpH,GAAEmpH,EAAAA;AACnB,iBAAA,WAAOM,KAAAA,CAAAA,CAA6BA,KAAavkJ,GAAQ86B,EAAAA;QAAAA;AAQ3DS,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAAA,CALpBmzH,MAAAA,CAAiCC,GAAAA,GAKK,EAElDvuI,QAAQ,SAAgBkuB,IAAAA;AACtB,cAGI9uC,IAAGkH,IAAGhC,IAAQH,IAAKypB,IAHnBoX,KAAIlf,GAAS3f,IAAAA,GACb4nB,KAAIggC,GAAmB/oB,IAAG,CAAA,GAC1BnkC,KAAI;AAER,eAAKzB,KAAAA,IAAQkF,KAAS8D,UAAU9D,QAAQlF,KAAIkF,IAAQlF;AAElD,gBAAIovJ,GADJ5gI,KAAAA,OAAIxuB,KAAW4lC,KAAI58B,UAAUhJ,EAAAA,CAAAA,GACF;AAEzB,kBAAIyB,MADJsD,KAAM8/B,GAAkBrW,EAAAA,KACVwgI;AAAkB,sBAAMjkJ,GAAUkkJ,EAAAA;AAChD,mBAAK/nJ,KAAI,GAAGA,KAAInC,IAAKmC,MAAKzF;AAASyF,gBAAAA,MAAKsnB,MAAGohG,GAAejhG,IAAGltB,IAAG+sB,GAAEtnB,EAAAA,CAAAA;YAAAA,OAC7D;AACL,kBAAIzF,MAAKutJ;AAAkB,sBAAMjkJ,GAAUkkJ,EAAAA;AAC3Cr/B,cAAAA,GAAejhG,IAAGltB,MAAK+sB,EAAAA;YAAAA;AAI3B,iBADAG,GAAEzpB,SAASzD,IACJktB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC3DX,YAAImV,KAAgBriC,GAAQ,GAAA;AAE5B1B,QAAAA,GAAOD,UAAUgkC,MAAAA,CACX/iC,OAAOm7B,QACkB,YAAA,OAAnBn7B,OAAO2F;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACLnB,YAAIkrC,KAAcnwC,GAAQ,EAAA,GACtBikC,KAAQjkC,GAAQ,EAAA,GAChBu+D,KAAgBv+D,GAAQ,GAAA;AAG5B1B,QAAAA,GAAOD,UAAAA,CAAW8xC,MAAAA,CAAgBlM,GAAM,WAAA;AAEtC,iBAEQ,KAFDhlC,OAAOC,eAAeq/D,GAAc,KAAA,GAAQ,KAAK,EACtDn/D,KAAK,WAAA;AAAc,mBAAO;UAAA,EAAA,CAAA,EACzB0L;QAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACTL,YAAIm5B,KAAQjkC,GAAQ,EAAA,GAChB64B,KAAa74B,GAAQ,EAAA,GAErB6tJ,KAAc,mBAEd90H,KAAW,SAAU+0H,IAASC,IAAAA;AAChC,cAAIvuJ,KAAQi1B,GAAKu5H,GAAUF,EAAAA,CAAAA;AAC3B,iBAAOtuJ,MAASyuJ,MACZzuJ,MAAS0uJ,OACTr1H,GAAWk1H,EAAAA,IAAa9pH,GAAM8pH,EAAAA,IAAAA,CAAAA,CAC5BA;QAAAA,GAGJC,KAAYj1H,GAASi1H,YAAY,SAAU7/I,IAAAA;AAC7C,iBAAOmb,OAAOnb,EAAAA,EAAQsgB,QAAQo/H,IAAa,GAAA,EAAKz8H,YAAAA;QAAAA,GAG9CqD,KAAOsE,GAAStE,OAAO,CAAA,GACvBy5H,KAASn1H,GAASm1H,SAAS,KAC3BD,KAAWl1H,GAASk1H,WAAW;AAEnC3vJ,QAAAA,GAAOD,UAAU06B;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACrBjB,YAAIoX,KAAcnwC,GAAQ,EAAA,GACtBikC,KAAQjkC,GAAQ,EAAA;AAIpB1B,QAAAA,GAAOD,UAAU8xC,MAAelM,GAAM,WAAA;AAEpC,iBAGgB,MAHThlC,OAAOC,eAAe,WAAA;UAAA,GAA6B,aAAa,EACrEM,OAAO,IACPkrB,UAAAA,MAAU,CAAA,EACTvqB;QAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACVL,YAAIwrF,KAAsB3rF,GAAQ,GAAA,GAE9B4E,KAAMrB,KAAKqB;AAIftG,QAAAA,GAAOD,UAAU,SAAUijC,IAAAA;AACzB,iBAAOA,KAAW,IAAI18B,GAAI+mF,GAAoBrqD,EAAAA,GAAW,gBAAA,IAAoB;QAAA;MAAA,GAAA,SAAA/gC,IAAAd,IAAAO,IAAA;AAAA;ACN/E,YAAI4kC,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjB2lE,KAAa3lE,GAAQ,EAAA,GACrBkP,KAAQlP,GAAQ,EAAA,GAChBtB,KAAOsB,GAAQ,EAAA,GACf44B,KAAc54B,GAAQ,EAAA,GACtBouD,KAAUpuD,GAAQ,EAAA,GAClBmwC,KAAcnwC,GAAQ,EAAA,GACtBqiC,KAAgBriC,GAAQ,GAAA,GACxBikC,KAAQjkC,GAAQ,EAAA,GAChBk5B,KAASl5B,GAAQ,EAAA,GACjBqJ,KAAUrJ,GAAQ,GAAA,GAClB64B,KAAa74B,GAAQ,EAAA,GACrByrB,KAAWzrB,GAAQ,EAAA,GACnBuhC,KAAgBvhC,GAAQ,EAAA,GACxBk3E,KAAWl3E,GAAQ,GAAA,GACnBkjC,KAAWljC,GAAQ,EAAA,GACnBilB,KAAWjlB,GAAQ,EAAA,GACnBguD,KAAkBhuD,GAAQ,EAAA,GAC1BswC,KAAgBtwC,GAAQ,GAAA,GACxB07H,KAAY17H,GAAQ,EAAA,GACpBm3D,KAA2Bn3D,GAAQ,EAAA,GACnCmuJ,KAAqBnuJ,GAAQ,GAAA,GAC7Bi9C,KAAaj9C,GAAQ,GAAA,GACrBo3F,KAA4Bp3F,GAAQ,GAAA,GACpCouJ,KAA8BpuJ,GAAQ,GAAA,GACtCquJ,KAA8BruJ,GAAQ,GAAA,GACtCsuJ,KAAiCtuJ,GAAQ,EAAA,GACzCk3D,KAAuBl3D,GAAQ,EAAA,GAC/B6lE,KAAyB7lE,GAAQ,GAAA,GACjC0lE,KAA6B1lE,GAAQ,GAAA,GACrCuuJ,KAAavuJ,GAAQ,GAAA,GACrBiuF,IAAWjuF,GAAQ,GAAA,GACnBmiC,KAASniC,GAAQ,GAAA,GACjBqsD,KAAYrsD,GAAQ,GAAA,GACpBssD,KAAatsD,GAAQ,GAAA,GACrBoiC,KAAMpiC,GAAQ,GAAA,GACdurF,KAAkBvrF,GAAQ,EAAA,GAC1BgjC,KAA+BhjC,GAAQ,GAAA,GACvCwuJ,KAAwBxuJ,GAAQ,EAAA,GAChCuuH,KAAiBvuH,GAAQ,GAAA,GACzBkuD,KAAsBluD,GAAQ,EAAA,GAC9ByuJ,KAAWzuJ,GAAQ,EAAA,EAAgC6P,SAEnD6+I,KAASriG,GAAU,QAAA,GACnBsiG,KAAS,UAETC,KAAerjE,GAAgB,aAAA,GAE/Bj9B,IAAmBJ,GAAoBl/C,KACvCu/C,KAAmBL,GAAoBlB,UAAU2hG,EAAAA,GAEjD7iE,KAAkB7sF,OAAgB,WAClCouH,KAAU10F,GAAOr5B,QACjBuvJ,KAAkBxhC,MAAWA,GAAiB,WAC9C/jH,KAAYqvB,GAAOrvB,WACnBwlJ,KAAUn2H,GAAOm2H,SACjBC,KAAappF,GAAW,QAAQ,WAAA,GAChCqpF,KAAiCV,GAA+B/hI,GAChE0iI,KAAuB/3F,GAAqB3qC,GAC5C2iI,KAA4Bd,GAA4B7hI,GACxD4iI,KAA6BzpF,GAA2Bn5C,GACxDrX,KAAO0jB,GAAY,CAAA,EAAG1jB,IAAAA,GAEtBk6I,KAAajtH,GAAO,SAAA,GACpBktH,KAAyBltH,GAAO,YAAA,GAChCmtH,KAAyBntH,GAAO,2BAAA,GAChCotH,KAAyBptH,GAAO,2BAAA,GAChCI,KAAwBJ,GAAO,KAAA,GAG/BqtH,KAAAA,CAAcV,MAAAA,CAAYA,GAAiB,aAAA,CAAMA,GAAiB,UAAEW,WAGpEC,KAAsBv/G,MAAelM,GAAM,WAAA;AAC7C,iBAES,KAFFkqH,GAAmBc,GAAqB,CAAA,GAAI,KAAK,EACtD7vJ,KAAK,WAAA;AAAc,mBAAO6vJ,GAAqB3pJ,MAAM,KAAK,EAAE9F,OAAO,EAAA,CAAA,EAAKsL;UAAAA,EAAAA,CAAAA,CAAAA,EACtEA;QAAAA,CAAAA,IACD,SAAUq5B,IAAGlW,IAAG2iB,IAAAA;AACnB,cAAI++G,KAA4BX,GAA+BljE,IAAiB79D,EAAAA;AAC5E0hI,UAAAA,MAAAA,OAAkC7jE,GAAgB79D,EAAAA,GACtDghI,GAAqB9qH,IAAGlW,IAAG2iB,EAAAA,GACvB++G,MAA6BxrH,OAAM2nD,MACrCmjE,GAAqBnjE,IAAiB79D,IAAG0hI,EAAAA;QAAAA,IAEzCV,IAEAz0H,KAAO,SAAUyd,IAAKtV,IAAAA;AACxB,cAAI2qF,KAAS8hC,GAAWn3G,EAAAA,IAAOk2G,GAAmBU,EAAAA;AAOlD,iBANAvgG,EAAiBg/D,IAAQ,EACvB9nH,MAAMmpJ,IACN12G,KAAKA,IACLtV,aAAaA,GAAAA,CAAAA,GAEVwN,OAAam9E,GAAO3qF,cAAcA,KAChC2qF;QAAAA,GAGL/8E,KAAkB,SAAwBpM,IAAGlW,IAAG2iB,IAAAA;AAC9CzM,UAAAA,OAAM2nD,MAAiBv7C,GAAgB8+G,IAAwBphI,IAAG2iB,EAAAA,GACtE1N,GAASiB,EAAAA;AACT,cAAIrkC,KAAMwwC,GAAcriB,EAAAA;AAExB,iBADAiV,GAAS0N,EAAAA,GACL1X,GAAOk2H,IAAYtvJ,EAAAA,KAChB8wC,GAAWzxC,cAIV+5B,GAAOiL,IAAGuqH,EAAAA,KAAWvqH,GAAEuqH,EAAAA,EAAQ5uJ,EAAAA,MAAMqkC,GAAEuqH,EAAAA,EAAQ5uJ,EAAAA,IAAAA,QACnD8wC,KAAau9G,GAAmBv9G,IAAY,EAAEzxC,YAAYg4D,GAAyB,GAAA,KAAG,EAAA,CAAA,MAJjFj+B,GAAOiL,IAAGuqH,EAAAA,KAASO,GAAqB9qH,IAAGuqH,IAAQv3F,GAAyB,GAAG,CAAA,CAAA,CAAA,GACpFhzB,GAAEuqH,EAAAA,EAAQ5uJ,EAAAA,IAAAA,OAIH4vJ,GAAoBvrH,IAAGrkC,IAAK8wC,EAAAA,KAC9Bq+G,GAAqB9qH,IAAGrkC,IAAK8wC,EAAAA;QAAAA,GAGpCg/G,KAAoB,SAA0BzrH,IAAG+iC,IAAAA;AACnDhkC,UAAAA,GAASiB,EAAAA;AACT,cAAIlS,KAAa+7B,GAAgBkZ,EAAAA,GAC7Bv+D,KAAOs0C,GAAWhrB,EAAAA,EAAY9S,OAAO0wI,GAAuB59H,EAAAA,CAAAA;AAIhE,iBAHAw8H,GAAS9lJ,IAAM,SAAU7I,IAAAA;AAClBqwC,YAAAA,MAAAA,CAAezxC,GAAKg2F,IAAuBziE,IAAYnyB,EAAAA,KAAMywC,GAAgBpM,IAAGrkC,IAAKmyB,GAAWnyB,EAAAA,CAAAA;UAAAA,CAAAA,GAEhGqkC;QAAAA,GAOLuwD,KAAwB,SAA8BjwD,IAAAA;AACxD,cAAIxW,KAAIqiB,GAAc7L,EAAAA,GAClBtlC,KAAaT,GAAKywJ,IAA4B7pJ,MAAM2oB,EAAAA;AACxD,iBAAA,EAAI3oB,SAASwmF,MAAmB5yD,GAAOk2H,IAAYnhI,EAAAA,KAAAA,CAAOiL,GAAOm2H,IAAwBphI,EAAAA,OAAAA,EAClF9uB,MAAAA,CAAe+5B,GAAO5zB,MAAM2oB,EAAAA,KAAAA,CAAOiL,GAAOk2H,IAAYnhI,EAAAA,KAAMiL,GAAO5zB,MAAMopJ,EAAAA,KAAWppJ,KAAKopJ,EAAAA,EAAQzgI,EAAAA,MACpG9uB;QAAAA,GAGFqxC,KAA4B,SAAkCrM,IAAGlW,IAAAA;AACnE,cAAI0M,KAAKqzB,GAAgB7pB,EAAAA,GACrBrkC,KAAMwwC,GAAcriB,EAAAA;AACxB,cAAI0M,OAAOmxD,MAAAA,CAAmB5yD,GAAOk2H,IAAYtvJ,EAAAA,KAASo5B,GAAOm2H,IAAwBvvJ,EAAAA,GAAzF;AACA,gBAAIkrB,KAAagkI,GAA+Br0H,IAAI76B,EAAAA;AAIpD,mBAAA,CAHIkrB,MAAAA,CAAckO,GAAOk2H,IAAYtvJ,EAAAA,KAAUo5B,GAAOyB,IAAI+zH,EAAAA,KAAW/zH,GAAG+zH,EAAAA,EAAQ5uJ,EAAAA,MAC9EkrB,GAAW7rB,aAAAA,OAEN6rB;UAAAA;QAAAA,GAGL8kI,KAAuB,SAA6B3rH,IAAAA;AACtD,cAAIhiB,KAAQ+sI,GAA0BlhG,GAAgB7pB,EAAAA,CAAAA,GAClDpM,KAAS,CAAA;AAIb,iBAHA02H,GAAStsI,IAAO,SAAUriB,IAAAA;AACnBo5B,YAAAA,GAAOk2H,IAAYtvJ,EAAAA,KAASo5B,GAAOozB,IAAYxsD,EAAAA,KAAMoV,GAAK6iB,IAAQj4B,EAAAA;UAAAA,CAAAA,GAElEi4B;QAAAA,GAGL83H,KAAyB,SAA+B1rH,IAAAA;AAC1D,cAAI4rH,KAAsB5rH,OAAM2nD,IAC5B3pE,KAAQ+sI,GAA0Ba,KAAsBV,KAAyBrhG,GAAgB7pB,EAAAA,CAAAA,GACjGpM,KAAS,CAAA;AAMb,iBALA02H,GAAStsI,IAAO,SAAUriB,IAAAA;AAAAA,aACpBo5B,GAAOk2H,IAAYtvJ,EAAAA,KAAUiwJ,MAAAA,CAAuB72H,GAAO4yD,IAAiBhsF,EAAAA,KAC9EoV,GAAK6iB,IAAQq3H,GAAWtvJ,EAAAA,CAAAA;UAAAA,CAAAA,GAGrBi4B;QAAAA;AAAAA,SAKJsK,OAgBH4rD,EAFA4gE,MAbAxhC,KAAU,WAAA;AACR,cAAI9rF,GAAcstH,IAAiBvpJ,IAAAA;AAAO,kBAAMgE,GAAU,6BAAA;AAC1D,cAAIq5B,KAAep7B,UAAU9D,UAAAA,WAAU8D,UAAU,CAAA,IAA+Bm0H,GAAUn0H,UAAU,CAAA,CAAA,IAAA,QAChG0wC,KAAM7V,GAAIO,EAAAA,GACV2yD,KAAS,SAAU91F,IAAAA;AACjB8F,qBAASwmF,MAAiBptF,GAAK42F,IAAQ+5D,IAAwB7vJ,EAAAA,GAC/D05B,GAAO5zB,MAAMopJ,EAAAA,KAAWx1H,GAAO5zB,KAAKopJ,EAAAA,GAASz2G,EAAAA,MAAM3yC,KAAKopJ,EAAAA,EAAQz2G,EAAAA,IAAAA,QACpEy3G,GAAoBpqJ,MAAM2yC,IAAKkf,GAAyB,GAAG33D,EAAAA,CAAAA;UAAAA;AAG7D,iBADI2wC,MAAeq/G,MAAYE,GAAoB5jE,IAAiB7zC,IAAK,EAAExtB,cAAAA,MAAoBzb,KAAKsmF,GAAAA,CAAAA,GAC7F96D,GAAKyd,IAAKtV,EAAAA;QAAAA,GAGgB,WAET,YAAY,WAAA;AACpC,iBAAO4rB,GAAiBjpD,IAAAA,EAAM2yC;QAAAA,CAAAA,GAGhCg2C,EAASo/B,IAAS,iBAAiB,SAAU1qF,IAAAA;AAC3C,iBAAOnI,GAAK4H,GAAIO,EAAAA,GAAcA,EAAAA;QAAAA,CAAAA,GAGhC+iC,GAA2Bn5C,IAAImoE,IAC/Bx9B,GAAqB3qC,IAAIgkB,IACzBs1B,GAAuBt5C,IAAIqjI,IAC3BtB,GAA+B/hI,IAAIikB,IACnC4mD,GAA0B7qE,IAAI6hI,GAA4B7hI,IAAIujI,IAC9DzB,GAA4B9hI,IAAIsjI,IAEhC7sH,GAA6BzW,IAAI,SAAUztB,IAAAA;AACzC,iBAAO07B,GAAK+wD,GAAgBzsF,EAAAA,GAAOA,EAAAA;QAAAA,GAGjCqxC,OAEF8+G,GAAqBJ,IAAiB,eAAe,EACnDpkI,cAAAA,MACArrB,KAAK,WAAA;AACH,iBAAOmvD,GAAiBjpD,IAAAA,EAAMq9B;QAAAA,EAAAA,CAAAA,GAG7ByrB,MACH6/B,EAASnC,IAAiB,wBAAwB4I,IAAuB,EAAExG,QAAAA,KAAQ,CAAA,KAKzFtpD,GAAE,EAAEjM,QAAAA,MAAc6B,MAAAA,MAAYF,QAAAA,CAAS+H,IAAe5H,MAAAA,CAAO4H,GAAAA,GAAiB,EAC5E/iC,QAAQ+tH,GAAAA,CAAAA,GAGVohC,GAASxxG,GAAW1a,EAAAA,GAAwB,SAAUzjC,IAAAA;AACpD0vJ,UAAAA,GAAsB1vJ,EAAAA;QAAAA,CAAAA,GAGxB8lC,GAAE,EAAE9Z,QAAQ6jI,IAAQ10H,MAAAA,MAAYK,QAAAA,CAAS+H,GAAAA,GAAiB,EAGxD,KAAO,SAAUviC,IAAAA;AACf,cAAIqO,KAASutH,GAAU57H,EAAAA;AACvB,cAAIo5B,GAAOo2H,IAAwBnhJ,EAAAA;AAAS,mBAAOmhJ,GAAuBnhJ,EAAAA;AAC1E,cAAIm/G,KAASD,GAAQl/G,EAAAA;AAGrB,iBAFAmhJ,GAAuBnhJ,EAAAA,IAAUm/G,IACjCiiC,GAAuBjiC,EAAAA,IAAUn/G,IAC1Bm/G;QAAAA,GAIT0iC,QAAQ,SAAgBzxH,IAAAA;AACtB,cAAA,CAAK24C,GAAS34C,EAAAA;AAAM,kBAAMj1B,GAAUi1B,KAAM,kBAAA;AAC1C,cAAIrF,GAAOq2H,IAAwBhxH,EAAAA;AAAM,mBAAOgxH,GAAuBhxH,EAAAA;QAAAA,GAEzE0xH,WAAW,WAAA;AAAcT,eAAAA;QAAa,GACtCU,WAAW,WAAA;AAAcV,eAAAA;QAAa,EAAA,CAAA,GAGxC5qH,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QAAAA,CAAS+H,IAAe5H,MAAAA,CAAO0V,GAAAA,GAAe,EAG9EtwC,QA/HY,SAAgBskC,IAAG+iC,IAAAA;AAC/B,iBAAA,WAAOA,KAA2BinF,GAAmBhqH,EAAAA,IAAKyrH,GAAkBzB,GAAmBhqH,EAAAA,GAAI+iC,EAAAA;QAAAA,GAiInGhoE,gBAAgBqxC,IAGhB+6B,kBAAkBskF,IAGlB92H,0BAA0B0X,GAAAA,CAAAA,GAG5B5L,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QAAAA,CAAS+H,GAAAA,GAAiB,EAG1D+yD,qBAAqB06D,IAGrBjrI,uBAAuBgrI,GAAAA,CAAAA,GAKzBjrH,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QAAQ2J,GAAM,WAAA;AAAcoqH,UAAAA,GAA4B9hI,EAAE,CAAA;QAAA,CAAA,EAAA,GAAU,EACpG1H,uBAAuB,SAA+B8V,IAAAA;AACpD,iBAAO0zH,GAA4B9hI,EAAEtH,GAAS0V,EAAAA,CAAAA;QAAAA,EAAAA,CAAAA,GAM9Co0H,OAWFnqH,GAAE,EAAE9Z,QAAQ,QAAQmP,MAAAA,MAAYK,QAAAA,CAVH+H,MAAiB4B,GAAM,WAAA;AAClD,cAAIqpF,KAASD,GAAAA;AAEb,iBAA+B,YAAxB0hC,GAAW,CAACzhC,EAAAA,CAAAA,KAEe,QAA7ByhC,GAAW,EAAEjkJ,GAAGwiH,GAAAA,CAAAA,KAEc,QAA9ByhC,GAAW9vJ,OAAOquH,EAAAA,CAAAA;QAAAA,CAAAA,EAAAA,GAGwC,EAE/DjkG,WAAW,SAAmBsR,IAAIksB,IAAUspG,IAAAA;AAC1C,cAAI7wG,KAAOivG,GAAWhnJ,SAAAA,GAClB6oJ,KAAYvpG;AAChB,eAAKp7B,GAASo7B,EAAAA,KAAAA,WAAalsB,OAAAA,CAAoBu8C,GAASv8C,EAAAA;AAMxD,mBALKtxB,GAAQw9C,EAAAA,MAAWA,KAAW,SAAU/mD,IAAKN,IAAAA;AAEhD,kBADIq5B,GAAWu3H,EAAAA,MAAY5wJ,KAAQd,GAAK0xJ,IAAW9qJ,MAAMxF,IAAKN,EAAAA,IAAAA,CACzD03E,GAAS13E,EAAAA;AAAQ,uBAAOA;YAAAA,IAE/B8/C,GAAK,CAAA,IAAKuH,IACH33C,GAAM6/I,IAAY,MAAMzvG,EAAAA;QAAAA,EAAAA,CAAAA;AAOrC,YAAA,CAAKuvG,GAAgBD,EAAAA,GAAe;AAClC,cAAIjkJ,KAAUkkJ,GAAgBlkJ;AAE9BsjF,YAAS4gE,IAAiBD,IAAc,SAAUyB,IAAAA;AAEhD,mBAAO3xJ,GAAKiM,IAASrF,IAAAA;UAAAA,CAAAA;QAAAA;AAKzBipH,QAAAA,GAAelB,IAASshC,EAAAA,GAExBriG,GAAWoiG,EAAAA,IAAAA;MAAU,GAAA,SAAAnuJ,IAAAd,IAAAO,IAAA;ACpUrB,YAAI44B,KAAc54B,GAAQ,EAAA,GACtBk5B,KAASl5B,GAAQ,EAAA,GACjBguD,KAAkBhuD,GAAQ,EAAA,GAC1BkN,KAAUlN,GAAQ,GAAA,EAA+BkN,SACjDo/C,KAAatsD,GAAQ,GAAA,GAErBkV,KAAO0jB,GAAY,CAAA,EAAG1jB,IAAAA;AAE1B5W,QAAAA,GAAOD,UAAU,SAAU4B,IAAQkiB,IAAAA;AACjC,cAGIriB,IAHAqkC,KAAI6pB,GAAgB/tD,EAAAA,GACpB1B,KAAI,GACJw5B,KAAS,CAAA;AAEb,eAAKj4B,MAAOqkC;AAAAA,aAAIjL,GAAOozB,IAAYxsD,EAAAA,KAAQo5B,GAAOiL,IAAGrkC,EAAAA,KAAQoV,GAAK6iB,IAAQj4B,EAAAA;AAE1E,iBAAOqiB,GAAM1e,SAASlF;AAAO26B,YAAAA,GAAOiL,IAAGrkC,KAAMqiB,GAAM5jB,IAAAA,CAAAA,MAAAA,CAChD2O,GAAQ6qB,IAAQj4B,EAAAA,KAAQoV,GAAK6iB,IAAQj4B,EAAAA;AAExC,iBAAOi4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AClBT,YAAI4tC,KAAa3lE,GAAQ,EAAA;AAEzB1B,QAAAA,GAAOD,UAAUsnE,GAAW,YAAY,iBAAA;MAAA,GAAA,SAAAplE,IAAAd,IAAAO,IAAA;ACDxC,YAAIm1C,KAAUn1C,GAAQ,GAAA,GAClBguD,KAAkBhuD,GAAQ,EAAA,GAC1B8vJ,KAAuB9vJ,GAAQ,GAAA,EAA8CusB,GAC7EgiI,KAAavuJ,GAAQ,GAAA,GAErBswJ,KAA+B,YAAA,OAAVx1H,UAAsBA,UAAU77B,OAAOm2F,sBAC5Dn2F,OAAOm2F,oBAAoBt6D,MAAAA,IAAU,CAAA;AAWzCx8B,QAAAA,GAAOD,QAAQkuB,IAAI,SAA6BoO,IAAAA;AAC9C,iBAAO21H,MAA8B,YAAfn7G,GAAQxa,EAAAA,IAVX,SAAUA,IAAAA;AAC7B,gBAAA;AACE,qBAAOm1H,GAAqBn1H,EAAAA;YAAAA,SACrB5uB,IAAP;AACA,qBAAOwiJ,GAAW+B,EAAAA;YAAAA;UAAAA,EAOD31H,EAAAA,IACfm1H,GAAqB9hG,GAAgBrzB,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACrB3C,YAAIhC,KAAS34B,GAAQ,EAAA,GACjB64B,KAAa74B,GAAQ,EAAA,GACrB80F,KAAgB90F,GAAQ,GAAA,GAExBuP,KAAUopB,GAAOppB;AAErBjR,QAAAA,GAAOD,UAAUw6B,GAAWtpB,EAAAA,KAAY,cAAcshB,KAAKikE,GAAcvlF,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACN7C,QAAAvP,GAAQ,EAAA,EAId,UAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJtB,YAAImwC,KAAcnwC,GAAQ,EAAA,GACtBk5B,KAASl5B,GAAQ,EAAA,GAEjBk/B,KAAoBnE,SAAS56B,WAE7BowJ,KAAgBpgH,MAAelxC,OAAO65B,0BAEtC60F,KAASz0F,GAAOgG,IAAmB,MAAA,GAEnCwvF,KAASf,MAA0D,gBAAhD,WAAA;QAAA,EAAuC7uH,MAC1D4xC,KAAei9E,OAAAA,CAAYx9E,MAAgBA,MAAeogH,GAAcrxH,IAAmB,MAAA,EAAQzU;AAEvGnsB,QAAAA,GAAOD,UAAU,EACfsvH,QAAQA,IACRe,QAAQA,IACRh+E,cAAcA,GAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACdhB,YAAIk+E,KAAoB5uH,GAAQ,GAAA,EAA+B4uH,mBAC3D/uH,KAASG,GAAQ,GAAA,GACjBm3D,KAA2Bn3D,GAAQ,EAAA,GACnCuuH,KAAiBvuH,GAAQ,GAAA,GACzBq1C,KAAYr1C,GAAQ,GAAA,GAEpB8uH,KAAa,WAAA;AAAc,iBAAOxpH;QAAAA;AAEtChH,QAAAA,GAAOD,UAAU,SAAU0wH,IAAqB9rF,IAAM59B,IAAMmrJ,IAAAA;AAC1D,cAAIl7G,KAAgBrS,KAAO;AAI3B,iBAHA8rF,GAAoB5uH,YAAYN,GAAO+uH,IAAmB,EAAEvpH,MAAM8xD,GAAAA,CAAAA,CAA2Bq5F,IAAiBnrJ,EAAAA,EAAAA,CAAAA,GAC9GkpH,GAAeQ,IAAqBz5E,IAAAA,OAAe,IAAO,GAC1DD,GAAUC,EAAAA,IAAiBw5E,IACpBC;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACbT,YAaIH,IAAmB6hC,IAAmCC,IAbtDzsH,KAAQjkC,GAAQ,EAAA,GAChB64B,KAAa74B,GAAQ,EAAA,GACrBH,KAASG,GAAQ,GAAA,GACjBkiB,KAAiBliB,GAAQ,GAAA,GACzBiuF,KAAWjuF,GAAQ,GAAA,GACnBurF,KAAkBvrF,GAAQ,EAAA,GAC1BouD,KAAUpuD,GAAQ,EAAA,GAElBusF,KAAWhB,GAAgB,UAAA,GAC3BsjC,KAAAA;AAOA,SAAA,EAAGlmH,SAGC,WAFN+nJ,KAAgB,CAAA,EAAG/nJ,KAAAA,MAIjB8nJ,KAAoCvuI,GAAeA,GAAewuI,EAAAA,CAAAA,OACxBzxJ,OAAOkB,cAAWyuH,KAAoB6hC,MAHlD5hC,KAAAA,OAOgBrlH,QAArBolH,MAAkC3qF,GAAM,WAAA;AACnE,cAAIpT,KAAO,CAAA;AAEX,iBAAO+9F,GAAkBriC,EAAAA,EAAU7tF,KAAKmyB,EAAAA,MAAUA;QAAAA,CAAAA,IAGxB+9F,KAAoB,CAAA,IACvCxgE,OAASwgE,KAAoB/uH,GAAO+uH,EAAAA,IAIxC/1F,GAAW+1F,GAAkBriC,EAAAA,CAAAA,KAChC0B,GAAS2gC,IAAmBriC,IAAU,WAAA;AACpC,iBAAOjnF;QAAAA,CAAAA,GAIXhH,GAAOD,UAAU,EACfuwH,mBAAmBA,IACnBC,wBAAwBA,GAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC9C1B,YAAI5qF,KAAQjkC,GAAQ,EAAA;AAEpB1B,QAAAA,GAAOD,UAAAA,CAAW4lC,GAAM,WAAA;AACtB,mBAASM,KAAAA;UAAAA;AAGT,iBAFAA,GAAEpkC,UAAUW,cAAc,MAEnB7B,OAAOijB,eAAe,IAAIqiB,IAAAA,MAASA,GAAEpkC;QAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACN9C,YAAIy4B,KAAc54B,GAAQ,EAAA,GACtB2rF,KAAsB3rF,GAAQ,GAAA,GAC9BgH,KAAWhH,GAAQ,EAAA,GACnBkwC,KAAyBlwC,GAAQ,GAAA,GAEjCy8C,KAAS7jB,GAAY,GAAG6jB,MAAAA,GACxBluC,KAAaqqB,GAAY,GAAGrqB,UAAAA,GAC5Bo6D,KAAc/vC,GAAY,GAAGl4B,KAAAA,GAE7BysD,KAAe,SAAUwjG,IAAAA;AAC3B,iBAAO,SAAUhjG,IAAOtW,IAAAA;AACtB,gBAGIrwB,IAAO80B,IAHPhvB,KAAI9lB,GAASkpC,GAAuByd,EAAAA,CAAAA,GACpCzW,KAAWy0C,GAAoBt0C,EAAAA,GAC/BvzC,KAAOgpB,GAAErpB;AAEb,mBAAIyzC,KAAW,KAAKA,MAAYpzC,KAAa6sJ,KAAoB,KAAA,UACjE3pI,KAAQzY,GAAWue,IAAGoqB,EAAAA,KACP,SAAUlwB,KAAQ,SAAUkwB,KAAW,MAAMpzC,OACtDg4C,KAASvtC,GAAWue,IAAGoqB,KAAW,CAAA,KAAM,SAAU4E,KAAS,QAC3D60G,KACEl0G,GAAO3vB,IAAGoqB,EAAAA,IACVlwB,KACF2pI,KACEhoF,GAAY77C,IAAGoqB,IAAUA,KAAW,CAAA,IACV4E,KAAS,SAAlC90B,KAAQ,SAAU,MAA0B;UAAA;QAAA;AAIzD1oB,QAAAA,GAAOD,UAAU,EAGfuyJ,QAAQzjG,GAAAA,KAAa,GAGrB1Q,QAAQ0Q,GAAAA,IAAa,EAAA;MAAA,GAAA,SAAA5sD,IAAAd,IAAAO,IAAA;AClCvB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACFjB,YAAIniH,KAAW,CAAA,EAAGA;AAElB1I,QAAAA,GAAOD,UAAUoC,MAAM4I,WAAW,SAAUjG,IAAAA;AAC1C,iBAA6B,oBAAtB4D,GAAStI,KAAK0E,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHvB,YAAI+lH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACDjB,YAAIxwF,KAAS34B,GAAQ,EAAA,GACjB44B,KAAc54B,GAAQ,EAAA,GACtBytC,KAAYztC,GAAQ,EAAA,GACpByrB,KAAWzrB,GAAQ,EAAA,GACnBk5B,KAASl5B,GAAQ,EAAA,GACjBuuJ,KAAavuJ,GAAQ,GAAA,GACrBi/B,KAAcj/B,GAAQ,GAAA,GAEtB+6B,KAAWpC,GAAOoC,UAClB5b,KAASyZ,GAAY,CAAA,EAAGzZ,MAAAA,GACxBoG,KAAOqT,GAAY,CAAA,EAAGrT,IAAAA,GACtBijE,KAAY,CAAA,GAEZrwC,KAAY,SAAUxqB,IAAGkjI,IAAYvxG,IAAAA;AACvC,cAAA,CAAKpmB,GAAOsvD,IAAWqoE,EAAAA,GAAa;AAClC,qBAAS/4I,KAAO,CAAA,GAAIvZ,KAAI,GAAGA,KAAIsyJ,IAAYtyJ;AAAKuZ,cAAAA,GAAKvZ,EAAAA,IAAK,OAAOA,KAAI;AACrEiqF,YAAAA,GAAUqoE,EAAAA,IAAc91H,GAAS,OAAO,kBAAkBxV,GAAKzN,IAAM,GAAA,IAAO,GAAA;UAAA;AAC5E,iBAAO0wE,GAAUqoE,EAAAA,EAAYljI,IAAG2xB,EAAAA;QAAAA;AAKpChhD,QAAAA,GAAOD,UAAU4gC,KAAclE,GAASh7B,OAAO,SAAc4jC,IAAAA;AAC3D,cAAIY,KAAIkJ,GAAUnoC,IAAAA,GACdg0E,KAAY/0C,GAAEpkC,WACd2wJ,KAAWvC,GAAWhnJ,WAAW,CAAA,GACjCumD,KAAgB,WAAA;AAClB,gBAAIxO,KAAOngC,GAAO2xI,IAAUvC,GAAWhnJ,SAAAA,CAAAA;AACvC,mBAAOjC,gBAAgBwoD,KAAgB3V,GAAU5T,IAAG+a,GAAK77C,QAAQ67C,EAAAA,IAAQ/a,GAAEr1B,MAAMy0B,IAAM2b,EAAAA;UAAAA;AAGzF,iBADI7zB,GAAS6tD,EAAAA,MAAYxrB,GAAc3tD,YAAYm5E,KAC5CxrB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChCT,YAAIq7D,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACDjB,YAAIh5E,KAAcnwC,GAAQ,EAAA,GACtB44B,KAAc54B,GAAQ,EAAA,GACtBtB,KAAOsB,GAAQ,EAAA,GACfikC,KAAQjkC,GAAQ,EAAA,GAChBi9C,KAAaj9C,GAAQ,GAAA,GACrBquJ,KAA8BruJ,GAAQ,GAAA,GACtC0lE,KAA6B1lE,GAAQ,GAAA,GACrCilB,KAAWjlB,GAAQ,EAAA,GACnBi0C,KAAgBj0C,GAAQ,GAAA,GAGxB+wJ,KAAU9xJ,OAAOq+B,QAEjBp+B,KAAiBD,OAAOC,gBACxBigB,KAASyZ,GAAY,CAAA,EAAGzZ,MAAAA;AAI5B7gB,QAAAA,GAAOD,UAAAA,CAAW0yJ,MAAW9sH,GAAM,WAAA;AAEjC,cAAIkM,MAQiB,MARF4gH,GAAQ,EAAEhmJ,GAAG,EAAA,GAAKgmJ,GAAQ7xJ,GAAe,CAAA,GAAI,KAAK,EACnEC,YAAAA,MACAC,KAAK,WAAA;AACHF,YAAAA,GAAeoG,MAAM,KAAK,EACxB9F,OAAO,GACPL,YAAAA,MAAY,CAAA;UAAA,EAAA,CAAA,GAGd,EAAE4L,GAAG,EAAA,CAAA,CAAA,EAAMA;AAAS,mBAAA;AAExB,cAAImiB,KAAI,CAAA,GACJoI,KAAI,CAAA,GAEJg4F,KAAShuH,OAAAA,GACT0xJ,KAAW;AAGf,iBAFA9jI,GAAEogG,EAAAA,IAAU,GACZ0jC,GAASj9H,MAAM,EAAA,EAAIlkB,QAAQ,SAAUohJ,IAAAA;AAAO37H,YAAAA,GAAE27H,EAAAA,IAAOA;UAAAA,CAAAA,GACpB,KAA1BF,GAAQ,CAAA,GAAI7jI,EAAAA,EAAGogG,EAAAA,KAAgBrwE,GAAW8zG,GAAQ,CAAA,GAAIz7H,EAAAA,CAAAA,EAAI/P,KAAK,EAAA,KAAOyrI;QAAAA,CAAAA,IAC1E,SAAgBlmI,IAAQyO,IAAAA;AAM3B,mBALI/F,KAAIvO,GAAS6F,EAAAA,GACbomI,KAAkB3pJ,UAAU9D,QAC5BS,KAAQ,GACR2gB,KAAwBwpI,GAA4B9hI,GACpD1d,KAAuB62D,GAA2Bn5C,GAC/C2kI,KAAkBhtJ;AAMvB,qBADIpE,IAJAgtB,KAAImnB,GAAc1sC,UAAUrD,IAAAA,CAAAA,GAC5ByE,KAAOkc,KAAwB1F,GAAO89B,GAAWnwB,EAAAA,GAAIjI,GAAsBiI,EAAAA,CAAAA,IAAMmwB,GAAWnwB,EAAAA,GAC5FrpB,KAASkF,GAAKlF,QACd2gC,KAAI,GAED3gC,KAAS2gC;AACdtkC,cAAAA,KAAM6I,GAAKy7B,IAAAA,GACN+L,MAAAA,CAAezxC,GAAKmQ,IAAsBie,IAAGhtB,EAAAA,MAAM0zB,GAAE1zB,EAAAA,IAAOgtB,GAAEhtB,EAAAA;AAErE,iBAAO0zB;QAAAA,IACPu9H;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACxDJ,YAAI5nC,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACMjB,YAAItkG,KAAwB5lB,OAAO4lB,uBAC/BzkB,KAAiBnB,OAAOkB,UAAUC,gBAClC+wJ,KAAmBlyJ,OAAOkB,UAAU0O;AAExC,iBAASoW,GAASlY,IAAAA;AACjB,cAAIA,QAAAA;AACH,kBAAM,IAAIzD,UAAU,uDAAA;AAGrB,iBAAOrK,OAAO8N,EAAAA;QAAAA;AA+CfzO,QAAAA,GAAOD,UA5CP,WAAA;AACC,cAAA;AACC,gBAAA,CAAKY,OAAOq+B;AACX,qBAAA;AAMD,gBAAI8zH,KAAQ,IAAI9nI,OAAO,KAAA;AAEvB,gBADA8nI,GAAM,CAAA,IAAK,MACkC,QAAzCnyJ,OAAOm2F,oBAAoBg8D,EAAAA,EAAO,CAAA;AACrC,qBAAA;AAKD,qBADIC,KAAQ,CAAA,GACH9yJ,KAAI,GAAGA,KAAI,IAAIA;AACvB8yJ,cAAAA,GAAM,MAAM/nI,OAAO+0B,aAAa9/C,EAAAA,CAAAA,IAAMA;AAKvC,gBAAwB,iBAHXU,OAAOm2F,oBAAoBi8D,EAAAA,EAAOjnJ,IAAI,SAAUpK,IAAAA;AAC5D,qBAAOqxJ,GAAMrxJ,EAAAA;YAAAA,CAAAA,EAEHulB,KAAK,EAAA;AACf,qBAAA;AAID,gBAAI+rI,KAAQ,CAAA;AAIZ,mBAHA,uBAAuBv9H,MAAM,EAAA,EAAIlkB,QAAQ,SAAU0hJ,IAAAA;AAClDD,cAAAA,GAAMC,EAAAA,IAAUA;YAAAA,CAAAA,GAGf,2BADEtyJ,OAAO0J,KAAK1J,OAAOq+B,OAAO,CAAA,GAAIg0H,EAAAA,CAAAA,EAAQ/rI,KAAK,EAAA;UAAA,SAMvCmL,IAAP;AAED,mBAAA;UAAO;QAAA,EAIQ8gI,IAAoBvyJ,OAAOq+B,SAAS,SAAUxS,IAAQyO,IAAAA;AAKtE,mBAJIjf,IAEAgkB,IADA/jB,KAAK0K,GAAS6F,EAAAA,GAGTxqB,KAAI,GAAGA,KAAIiH,UAAU9D,QAAQnD,MAAK;AAG1C,qBAASR,MAFTwa,KAAOrb,OAAOsI,UAAUjH,EAAAA,CAAAA;AAGnBF,cAAAA,GAAe1B,KAAK4b,IAAMxa,EAAAA,MAC7Bya,GAAGza,EAAAA,IAAOwa,GAAKxa,EAAAA;AAIjB,gBAAI+kB,IAAuB;AAC1ByZ,cAAAA,KAAUzZ,GAAsBvK,EAAAA;AAChC,uBAAS/b,KAAI,GAAGA,KAAI+/B,GAAQ76B,QAAQlF;AAC/B4yJ,gBAAAA,GAAiBzyJ,KAAK4b,IAAMgkB,GAAQ//B,EAAAA,CAAAA,MACvCgc,GAAG+jB,GAAQ//B,EAAAA,CAAAA,IAAM+b,GAAKgkB,GAAQ//B,EAAAA,CAAAA;YAAAA;UAAAA;AAMlC,iBAAOgc;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACtFRtb,eAAOC,eAAeb,IAAS,cAAc,EAC3CmB,OAAAA,KAAO,CAAA,GAGTnB,GAAQmvC,UAAU,SAAUjgB,IAAAA;AAC1B,iBAAOA,MAA0B,mBAAhBA,GAAO/nB,OAA0B,gDAAgD;QAAA,GAGpGlH,GAAOD,UAAUA,GAAiB;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;AAAA,SCVlC,SAAAP,IAAA;AACA,cAAIg2C,KAA8B,YAAA,OAAV9c,MAAsBA,MAAUA,GAAO15B,WAAWA,UAAU05B;AAEpFr6B,UAAAA,GAAOD,UAAUo3C;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACFjB,YAGIg8G,KAHY12H,SAAS56B,UAGI6G;AAqB7B1I,QAAAA,GAAOD,UAZP,SAAkB88B,IAAAA;AAChB,cAAY,QAARA,IAAc;AAChB,gBAAA;AACE,qBAAOs2H,GAAa/yJ,KAAKy8B,EAAAA;YAAAA,SAClB56B,IAAP;YAAOA;AACT,gBAAA;AACE,qBAAQ46B,KAAO;YAAA,SACR56B,IAAP;YAAOA;UAAAA;AAEX,iBAAO;QAAA;MAAA,GAAA,SAAAA,IAAAd,IAAAO,IAAA;ACtBT,YAAI62E,KAAkB72E,GAAQ,GAAA,GAC1B60B,KAAK70B,GAAQ,GAAA;AAkBjB1B,QAAAA,GAAOD,UAPP,SAA0B4B,IAAQH,IAAKN,IAAAA;AAAAA,WAAAA,WAChCA,MAAAA,CAAwBq1B,GAAG50B,GAAOH,EAAAA,GAAMN,EAAAA,KAAAA,WACxCA,MAAAA,EAAyBM,MAAOG,QACnC42E,GAAgB52E,IAAQH,IAAKN,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACfjC,YAAIkyJ,KAAY1xJ,GAAQ,GAAA,GAEpBd,KAAkB,WAAA;AACpB,cAAA;AACE,gBAAIi8B,KAAOu2H,GAAUzyJ,QAAQ,gBAAA;AAE7B,mBADAk8B,GAAK,CAAA,GAAI,IAAI,CAAA,CAAA,GACNA;UAAAA,SACA56B,IAAP;UAAOA;QAAAA,EALU;AAQrBjC,QAAAA,GAAOD,UAAUa;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACVjB,YAaIyyJ,KAbgB3xJ,GAAQ,GAAA,EAad4xJ;AAEdtzJ,QAAAA,GAAOD,UAAUszJ;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SCfjB,SAAApxJ,IAAA;AAAA,cAAAlB,KAAWW,GAAQ,EAAA,GAGfmsF,KAA4C9tF,MAAAA,CAAYA,GAAQ8Q,YAAY9Q,IAG5E+tF,KAAaD,MAAgC,YAAA,OAAV7tF,MAAsBA,MAAAA,CAAWA,GAAO6Q,YAAY7Q,IAMvF21B,KAHgBm4D,MAAcA,GAAW/tF,YAAY8tF,KAG5Bv4E,GAAKqgB,SAAAA,QAC9B4gB,KAAc5gB,KAASA,GAAO4gB,cAAAA;AAqBlCv2C,UAAAA,GAAOD,UAXP,SAAqBi2C,IAAQu9G,IAAAA;AAC3B,gBAAIA;AACF,qBAAOv9G,GAAO5zC,MAAAA;AAEhB,gBAAI+C,KAAS6wC,GAAO7wC,QAChBs0B,KAAS8c,KAAcA,GAAYpxC,EAAAA,IAAU,IAAI6wC,GAAOxzC,YAAY2C,EAAAA;AAGxE,mBADA6wC,GAAOg0B,KAAKvwC,EAAAA,GACLA;UAAAA;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,GAAAA,EAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/BT,YAAI+5H,KAAmB9xJ,GAAQ,GAAA;AAe/B1B,QAAAA,GAAOD,UALP,SAAyB0zJ,IAAYF,IAAAA;AACnC,cAAIv9G,KAASu9G,KAASC,GAAiBC,GAAWz9G,MAAAA,IAAUy9G,GAAWz9G;AACvE,iBAAO,IAAIy9G,GAAWjxJ,YAAYwzC,IAAQy9G,GAAWnjF,YAAYmjF,GAAWtuJ,MAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZ9E,YAGIm5C,KAHO58C,GAAQ,EAAA,EAGG48C;AAEtBt+C,QAAAA,GAAOD,UAAUu+C;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACcjBt+C,QAAAA,GAAOD,UAXP,SAAmBk7B,IAAQ/wB,IAAAA;AACzB,cAAItE,KAAAA,IACAT,KAAS81B,GAAO91B;AAGpB,eADA+E,OAAUA,KAAQ/H,MAAMgD,EAAAA,IAAAA,EACfS,KAAQT;AACf+E,YAAAA,GAAMtE,EAAAA,IAASq1B,GAAOr1B,EAAAA;AAExB,iBAAOsE;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBT,YAAIwpJ,KAAahyJ,GAAQ,GAAA,GACrBiwH,KAAejwH,GAAQ,GAAA,GACvBqrF,KAAcrrF,GAAQ,GAAA;AAe1B1B,QAAAA,GAAOD,UANP,SAAyB4B,IAAAA;AACvB,iBAAqC,cAAA,OAAtBA,GAAOa,eAA8BuqF,GAAYprF,EAAAA,IAE5D,CAAA,IADA+xJ,GAAW/hC,GAAahwH,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACC9B3B,QAAAA,GAAOD,UANP,SAAiB88B,IAAM+vC,IAAAA;AACrB,iBAAO,SAAS79B,IAAAA;AACd,mBAAOlS,GAAK+vC,GAAU79B,EAAAA,CAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACV1B,YAAIg6B,KAAarnE,GAAQ,GAAA,GACrBiwH,KAAejwH,GAAQ,GAAA,GACvBgsF,KAAehsF,GAAQ,EAAA,GAMvBiyJ,KAAYl3H,SAAS56B,WACrB8rF,KAAchtF,OAAOkB,WAGrBsxJ,KAAeQ,GAAUjrJ,UAGzB5G,KAAiB6rF,GAAY7rF,gBAG7B8xJ,KAAmBT,GAAa/yJ,KAAKO,MAAAA;AA2CzCX,QAAAA,GAAOD,UAbP,SAAuBmB,IAAAA;AACrB,cAAA,CAAKwsF,GAAaxsF,EAAAA,KA5CJ,qBA4Cc6nE,GAAW7nE,EAAAA;AACrC,mBAAA;AAEF,cAAI26B,KAAQ81F,GAAazwH,EAAAA;AACzB,cAAc,SAAV26B;AACF,mBAAA;AAEF,cAAImzD,KAAOltF,GAAe1B,KAAKy7B,IAAO,aAAA,KAAkBA,GAAMr5B;AAC9D,iBAAsB,cAAA,OAARwsF,MAAsBA,cAAgBA,MAClDmkE,GAAa/yJ,KAAK4uF,EAAAA,KAAS4kE;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACtC/B5zJ,QAAAA,GAAOD,UAZP,SAAiB4B,IAAQH,IAAAA;AACvB,eAAY,kBAARA,MAAgD,cAAA,OAAhBG,GAAOH,EAAAA,MAIhC,eAAPA;AAIJ,mBAAOG,GAAOH,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACjBhB,YAAIqyJ,KAAYnyJ,GAAQ,GAAA,GACpBorF,KAAcprF,GAAQ,GAAA,GACtBqJ,KAAUrJ,GAAQ,EAAA,GAClBivE,KAAWjvE,GAAQ,GAAA,GACnBoyJ,KAAUpyJ,GAAQ,GAAA,GAClBsrF,KAAetrF,GAAQ,GAAA,GAMvBI,KAHcnB,OAAOkB,UAGQC;AAqCjC9B,QAAAA,GAAOD,UA3BP,SAAuBmB,IAAO6yJ,IAAAA;AAC5B,cAAIC,KAAQjpJ,GAAQ7J,EAAAA,GAChB+yJ,KAAAA,CAASD,MAASlnE,GAAY5rF,EAAAA,GAC9BgzJ,KAAAA,CAAUF,MAAAA,CAAUC,MAAStjF,GAASzvE,EAAAA,GACtCizJ,KAAAA,CAAUH,MAAAA,CAAUC,MAAAA,CAAUC,MAAUlnE,GAAa9rF,EAAAA,GACrDkzJ,KAAcJ,MAASC,MAASC,MAAUC,IAC1C16H,KAAS26H,KAAcP,GAAU3yJ,GAAMiE,QAAQ6lB,MAAAA,IAAU,CAAA,GACzD7lB,KAASs0B,GAAOt0B;AAEpB,mBAAS3D,MAAON;AAAAA,aACT6yJ,MAAAA,CAAajyJ,GAAe1B,KAAKc,IAAOM,EAAAA,KACvC4yJ,OAEQ,YAAP5yJ,MAEC0yJ,OAAkB,YAAP1yJ,MAA0B,YAAPA,OAE9B2yJ,OAAkB,YAAP3yJ,MAA0B,gBAAPA,MAA8B,gBAAPA,OAEtDsyJ,GAAQtyJ,IAAK2D,EAAAA,MAElBs0B,GAAO7iB,KAAKpV,EAAAA;AAGhB,iBAAOi4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7CT,YAAI7oB,KAAQlP,GAAQ,GAAA,GAGhB2yJ,KAAYpvJ,KAAKC;AAgCrBlF,QAAAA,GAAOD,UArBP,SAAkB88B,IAAMjvB,IAAOg/D,IAAAA;AAE7B,iBADAh/D,KAAQymJ,GAAAA,WAAUzmJ,KAAuBivB,GAAK13B,SAAS,IAAKyI,IAAO,CAAA,GAC5D,WAAA;AAML,qBALIozC,KAAO/3C,WACPrD,KAAAA,IACAT,KAASkvJ,GAAUrzG,GAAK77C,SAASyI,IAAO,CAAA,GACxC1D,KAAQ/H,MAAMgD,EAAAA,GAAAA,EAETS,KAAQT;AACf+E,cAAAA,GAAMtE,EAAAA,IAASo7C,GAAKpzC,KAAQhI,EAAAA;AAE9BA,YAAAA,KAAAA;AAEA,qBADI0uJ,KAAYnyJ,MAAMyL,KAAQ,CAAA,GAAA,EACrBhI,KAAQgI;AACf0mJ,cAAAA,GAAU1uJ,EAAAA,IAASo7C,GAAKp7C,EAAAA;AAG1B,mBADA0uJ,GAAU1mJ,EAAAA,IAASg/D,GAAU1iE,EAAAA,GACtB0G,GAAMisB,IAAM71B,MAAMstJ,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/B7B,YAAIC,KAAkB7yJ,GAAQ,GAAA,GAW1B8yJ,KAVW9yJ,GAAQ,GAAA,EAUI6yJ,EAAAA;AAE3Bv0J,QAAAA,GAAOD,UAAUy0J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACbjB,YAAIj+H,KAAK70B,GAAQ,GAAA,GACbqG,KAAcrG,GAAQ,GAAA,GACtBoyJ,KAAUpyJ,GAAQ,GAAA,GAClByrB,KAAWzrB,GAAQ,EAAA;AA0BvB1B,QAAAA,GAAOD,UAdP,SAAwBmB,IAAO0E,IAAOjE,IAAAA;AACpC,cAAA,CAAKwrB,GAASxrB,EAAAA;AACZ,mBAAA;AAEF,cAAIuF,KAAAA,OAActB;AAClB,iBAAA,CAAA,EAAY,YAARsB,KACKa,GAAYpG,EAAAA,KAAWmyJ,GAAQluJ,IAAOjE,GAAOwD,MAAAA,IACrC,YAAR+B,MAAoBtB,MAASjE,OAE7B40B,GAAG50B,GAAOiE,EAAAA,GAAQ1E,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACd7BlB,QAAAA,GAAOD,UAVP,SAA2B+E,IAAKE,IAAAA;AAAAA,WACnB,QAAPA,MAAeA,KAAMF,GAAIK,YAAQH,KAAMF,GAAIK;AAE/C,mBAASlF,KAAI,GAAGgiH,KAAO,IAAI9/G,MAAM6C,EAAAA,GAAM/E,KAAI+E,IAAK/E;AAC9CgiH,YAAAA,GAAKhiH,EAAAA,IAAK6E,GAAI7E,EAAAA;AAGhB,iBAAOgiH;QAAAA,GAG2BjiH,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACVzG,YAAIq/B,KAAU19B,GAAQ,GAAA,GAElB0tC,KAAqB1tC,GAAQ,GAAA,GAE7B+2F,KAAc/2F,GAAQ,GAAA;AAM1B1B,QAAAA,GAAOD,UAJP,SAA0BwF,IAAAA;AACxB,cAAA,WAAW65B,MAAuD,QAA5BgQ,GAAmB7pC,EAAAA,KAAuC,QAAtBA,GAAK,YAAA;AAAuB,mBAAOkzF,GAAYlzF,EAAAA;QAAAA,GAGxFvF,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACVxGC,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACDjB,YAAIxwF,KAAS34B,GAAQ,EAAA,GACjBD,KAAOC,GAAQ,EAAA,GACftB,KAAOsB,GAAQ,EAAA,GACfilB,KAAWjlB,GAAQ,EAAA,GACnB+yJ,KAA+B/yJ,GAAQ,GAAA,GACvCmjC,KAAwBnjC,GAAQ,GAAA,GAChC23H,KAAgB33H,GAAQ,GAAA,GACxBojC,KAAoBpjC,GAAQ,EAAA,GAC5BmuH,KAAiBnuH,GAAQ,GAAA,GACzBkG,KAAclG,GAAQ,GAAA,GACtBqjC,KAAoBrjC,GAAQ,GAAA,GAE5BS,KAAQk4B,GAAOl4B;AAInBnC,QAAAA,GAAOD,UAAU,SAAc20J,IAAAA;AAC7B,cAAI7uH,KAAIlf,GAAS+tI,EAAAA,GACbC,KAAiBt7B,GAAcryH,IAAAA,GAC/B4rJ,KAAkB3pJ,UAAU9D,QAC5ByvJ,KAAQhC,KAAkB,IAAI3pJ,UAAU,CAAA,IAAA,QACxCoyC,KAAAA,WAAUu5G;AACVv5G,UAAAA,OAASu5G,KAAQnzJ,GAAKmzJ,IAAOhC,KAAkB,IAAI3pJ,UAAU,CAAA,IAAA,MAAKiC;AACtE,cAEI/F,IAAQs0B,IAAQ5rB,IAAMlH,IAAUI,IAAM7F,IAFtCitF,KAAiBppD,GAAkBc,EAAAA,GACnCjgC,KAAQ;AAGZ,cAAA,CAAIuoF,MAAoBnnF,QAAQ7E,MAAS0iC,GAAsBspD,EAAAA;AAW7D,iBAFAhpF,KAAS2/B,GAAkBe,EAAAA,GAC3BpM,KAASk7H,KAAiB,IAAI3tJ,KAAK7B,EAAAA,IAAUhD,GAAMgD,EAAAA,GAC7CA,KAASS,IAAOA;AACpB1E,cAAAA,KAAQm6C,KAAUu5G,GAAM/uH,GAAEjgC,EAAAA,GAAQA,EAAAA,IAASigC,GAAEjgC,EAAAA,GAC7CiqH,GAAep2F,IAAQ7zB,IAAO1E,EAAAA;;AAThC,iBAFA6F,MADAJ,KAAWiB,GAAYi+B,IAAGsoD,EAAAA,GACVpnF,MAChB0yB,KAASk7H,KAAiB,IAAI3tJ,SAAS,CAAA,GAAA,EAC/B6G,KAAOzN,GAAK2G,IAAMJ,EAAAA,GAAWW,MAAM1B;AACzC1E,cAAAA,KAAQm6C,KAAUo5G,GAA6B9tJ,IAAUiuJ,IAAO,CAAC/mJ,GAAK3M,OAAO0E,EAAAA,GAAAA,IAAQ,IAAQiI,GAAK3M,OAClG2uH,GAAep2F,IAAQ7zB,IAAO1E,EAAAA;AAWlC,iBADAu4B,GAAOt0B,SAASS,IACT6zB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7CT,YAAIr5B,KAAOsB,GAAQ,EAAA,GACfkjC,KAAWljC,GAAQ,EAAA,GACnBssF,KAAYtsF,GAAQ,GAAA;AAExB1B,QAAAA,GAAOD,UAAU,SAAU4G,IAAUizC,IAAM14C,IAAAA;AACzC,cAAI2zJ,IAAaC;AACjBlwH,UAAAA,GAASj+B,EAAAA;AACT,cAAA;AAEE,gBAAA,EADAkuJ,KAAc7mE,GAAUrnF,IAAU,QAAA,IAChB;AAChB,kBAAa,YAATizC;AAAkB,sBAAM14C;AAC5B,qBAAOA;YAAAA;AAET2zJ,YAAAA,KAAcz0J,GAAKy0J,IAAaluJ,EAAAA;UAAAA,SACzB8G,IAAP;AACAqnJ,YAAAA,KAAAA,MACAD,KAAcpnJ;UAAAA;AAEhB,cAAa,YAATmsC;AAAkB,kBAAM14C;AAC5B,cAAI4zJ;AAAY,kBAAMD;AAEtB,iBADAjwH,GAASiwH,EAAAA,GACF3zJ;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACrBT,YAAI+rF,KAAkBvrF,GAAQ,EAAA,GAC1Bq1C,KAAYr1C,GAAQ,GAAA,GAEpBusF,KAAWhB,GAAgB,UAAA,GAC3B8nE,KAAiB5yJ,MAAMN;AAG3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,iBAAA,WAAOA,OAAqB0a,GAAU50C,UAAUk6B,MAAM04H,GAAe9mE,EAAAA,MAAc5xD;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACRrF,YAEI4xD,KAFkBvsF,GAAQ,EAAA,EAEC,UAAA,GAC3BszJ,KAAAA;AAEJ,YAAA;AACE,cAAIn+D,KAAS,GACTo+D,KAAqB,EACvBluJ,MAAM,WAAA;AACJ,mBAAO,EAAEO,MAAAA,CAAAA,CAAQuvF,KAAAA;UAAAA,GAEnB,QAAU,WAAA;AACRm+D,YAAAA,KAAAA;UAAe,EAAA;AAGnBC,UAAAA,GAAmBhnE,EAAAA,IAAY,WAAA;AAC7B,mBAAOjnF;UAAAA,GAGT7E,MAAM6Z,KAAKi5I,IAAoB,WAAA;AAAc,kBAAM;UAAA,CAAA;QAAA,SAC5CxnJ,IAAP;QAAOA;AAETzN,QAAAA,GAAOD,UAAU,SAAU8vB,IAAMqlI,IAAAA;AAC/B,cAAA,CAAKA,MAAAA,CAAiBF;AAAc,mBAAA;AACpC,cAAIG,KAAAA;AACJ,cAAA;AACE,gBAAIxzJ,KAAS,CAAA;AACbA,YAAAA,GAAOssF,EAAAA,IAAY,WAAA;AACjB,qBAAO,EACLlnF,MAAM,WAAA;AACJ,uBAAO,EAAEO,MAAM6tJ,KAAAA,KAAoB;cAAA,EAAA;YAAA,GAIzCtlI,GAAKluB,EAAAA;UAAAA,SACE8L,IAAP;UAAOA;AACT,iBAAO0nJ;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpCT,YAAI9lH,KAAiB3tC,GAAQ,GAAA;AAM7B1B,QAAAA,GAAOD,UAJP,SAAyB+E,IAAAA;AACvB,cAAIuqC,GAAevqC,EAAAA;AAAM,mBAAOA;QAAAA,GAGA9E,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACFvGC,QAAAA,GAAOD,UAJP,WAAA;AACE,gBAAM,IAAIiL,UAAU,2IAAA;QAAA,GAGahL,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACJxG,QAAA2B,GAAQ,EAAA;AACR,YAAIm1C,KAAUn1C,GAAQ,EAAA,GAClBk5B,KAASl5B,GAAQ,EAAA,GACjBuhC,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN,WAEvBi1C,KAAe,EACjBs+G,cAAAA,MACAC,UAAAA,KAAU;AAGZr1J,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAG9qB;AACb,iBAAO8qB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAexjJ,WACxFqpB,GAAOkc,IAAcD,GAAQxa,EAAAA,CAAAA,IAAOrG,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBpD,YAAIrF,KAAavuJ,GAAQ,GAAA,GAErBuN,KAAQhK,KAAKgK,OAEbsmJ,KAAY,SAAUrrJ,IAAOsrJ,IAAAA;AAC/B,cAAIrwJ,KAAS+E,GAAM/E,QACfswJ,KAASxmJ,GAAM9J,KAAS,CAAA;AAC5B,iBAAOA,KAAS,IAAIuwJ,GAAcxrJ,IAAOsrJ,EAAAA,IAAa9iJ,GACpDxI,IACAqrJ,GAAUtF,GAAW/lJ,IAAO,GAAGurJ,EAAAA,GAASD,EAAAA,GACxCD,GAAUtF,GAAW/lJ,IAAOurJ,EAAAA,GAASD,EAAAA,GACrCA,EAAAA;QAAAA,GAIAE,KAAgB,SAAUxrJ,IAAOsrJ,IAAAA;AAKnC,mBAFI3oD,IAAS/mE,IAFT3gC,KAAS+E,GAAM/E,QACflF,KAAI,GAGDA,KAAIkF,MAAQ;AAGjB,iBAFA2gC,KAAI7lC,IACJ4sG,KAAU3iG,GAAMjK,EAAAA,GACT6lC,MAAK0vH,GAAUtrJ,GAAM47B,KAAI,CAAA,GAAI+mE,EAAAA,IAAW;AAC7C3iG,cAAAA,GAAM47B,EAAAA,IAAK57B,GAAAA,EAAQ47B,EAAAA;AAEjBA,YAAAA,OAAM7lC,SAAKiK,GAAM47B,EAAAA,IAAK+mE;UAAAA;AAC1B,iBAAO3iG;QAAAA,GAGPwI,KAAQ,SAAUxI,IAAOsR,IAAMC,IAAO+5I,IAAAA;AAMxC,mBALIG,KAAUn6I,GAAKrW,QACfywJ,KAAUn6I,GAAMtW,QAChB0wJ,KAAS,GACTC,KAAS,GAEND,KAASF,MAAWG,KAASF;AAClC1rJ,YAAAA,GAAM2rJ,KAASC,EAAAA,IAAWD,KAASF,MAAWG,KAASF,KACnDJ,GAAUh6I,GAAKq6I,EAAAA,GAASp6I,GAAMq6I,EAAAA,CAAAA,KAAY,IAAIt6I,GAAKq6I,IAAAA,IAAYp6I,GAAMq6I,IAAAA,IACrED,KAASF,KAAUn6I,GAAKq6I,IAAAA,IAAYp6I,GAAMq6I,IAAAA;AAC9C,iBAAO5rJ;QAAAA;AAGXlK,QAAAA,GAAOD,UAAUw1J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC3CjB,YAAIl7H,KAAS34B,GAAQ,EAAA,GACjB6tF,KAAW7tF,GAAQ,GAAA,GAEnBsJ,KAAYqvB,GAAOrvB;AAEvBhL,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIkzD,GAASlzD,EAAAA;AACX,kBAAMrxB,GAAU,+CAAA;AAChB,iBAAOqxB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACRX,YAEI05H,KAFkBr0J,GAAQ,EAAA,EAEF,OAAA;AAE5B1B,QAAAA,GAAOD,UAAU,SAAUuqE,IAAAA;AACzB,cAAI0rF,KAAS;AACb,cAAA;AACE,kBAAM1rF,EAAAA,EAAa0rF,EAAAA;UAAAA,SACZC,IAAP;AACA,gBAAA;AAEE,qBADAD,GAAOD,EAAAA,IAAAA,OACA,MAAMzrF,EAAAA,EAAa0rF,EAAAA;YAAAA,SACnBE,IAAP;YAAOA;UAAAA;AACT,iBAAA;QAAO;MAAA,GAAA,SAAAj0J,IAAAd,IAAAO,IAAA;ACbX,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACDjB7qH,QAAAA,GAAOD,UAAU;MAAA,GAAA,SAAAkC,IAAAd,IAAA;ACmBjBnB,QAAAA,GAAOD,UAXP,SAAkBmK,IAAOisJ,IAAAA;AAKvB,mBAJIvwJ,KAAAA,IACAT,KAAkB,QAAT+E,KAAgB,IAAIA,GAAM/E,QACnCs0B,KAASt3B,MAAMgD,EAAAA,GAAAA,EAEVS,KAAQT;AACfs0B,YAAAA,GAAO7zB,EAAAA,IAASuwJ,GAASjsJ,GAAMtE,EAAAA,GAAQA,IAAOsE,EAAAA;AAEhD,iBAAOuvB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACaTz5B,QAAAA,GAAOD,UArBP,SAAmBmK,IAAO0D,IAAO3H,IAAAA;AAC/B,cAAIL,KAAAA,IACAT,KAAS+E,GAAM/E;AAEfyI,UAAAA,KAAQ,MACVA,KAAAA,CAASA,KAAQzI,KAAS,IAAKA,KAASyI,MAE1C3H,KAAMA,KAAMd,KAASA,KAASc,MACpB,MACRA,MAAOd,KAETA,KAASyI,KAAQ3H,KAAM,IAAMA,KAAM2H,OAAW,GAC9CA,QAAW;AAGX,mBADI6rB,KAASt3B,MAAMgD,EAAAA,GAAAA,EACVS,KAAQT;AACfs0B,YAAAA,GAAO7zB,EAAAA,IAASsE,GAAMtE,KAAQgI,EAAAA;AAEhC,iBAAO6rB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC1BT,YAWI28H,KAAe9jI,OAAO,qFAAA;AAa1BtyB,QAAAA,GAAOD,UAJP,SAAoB8P,IAAAA;AAClB,iBAAOumJ,GAAa7jI,KAAK1iB,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACG3B7P,QAAAA,GAAOD,UAbP,SAAqBmK,IAAOisJ,IAAUE,IAAaC,IAAAA;AACjD,cAAI1wJ,KAAAA,IACAT,KAAkB,QAAT+E,KAAgB,IAAIA,GAAM/E;AAKvC,eAHImxJ,MAAanxJ,OACfkxJ,KAAcnsJ,GAAAA,EAAQtE,EAAAA,IAAAA,EAEfA,KAAQT;AACfkxJ,YAAAA,KAAcF,GAASE,IAAansJ,GAAMtE,EAAAA,GAAQA,IAAOsE,EAAAA;AAE3D,iBAAOmsJ;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACtBT,YAAIE,KAAkB70J,GAAQ,GAAA,GAC1BgsF,KAAehsF,GAAQ,EAAA;AA0B3B1B,QAAAA,GAAOD,UAVP,SAASy2J,GAAYt1J,IAAO6N,IAAO0nJ,IAASj+E,IAAYx/D,IAAAA;AACtD,iBAAI9X,OAAU6N,OAGD,QAAT7N,MAA0B,QAAT6N,MAAAA,CAAmB2+E,GAAaxsF,EAAAA,KAAAA,CAAWwsF,GAAa3+E,EAAAA,IACpE7N,MAAUA,MAAS6N,MAAUA,KAE/BwnJ,GAAgBr1J,IAAO6N,IAAO0nJ,IAASj+E,IAAYg+E,IAAax9I,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACxBzE,YAAI09I,KAAWh1J,GAAQ,GAAA,GACnBwpJ,KAAYxpJ,GAAQ,GAAA,GACpBi1J,KAAWj1J,GAAQ,GAAA;AAiFvB1B,QAAAA,GAAOD,UA9DP,SAAqBmK,IAAO6E,IAAO0nJ,IAASj+E,IAAYo+E,IAAW59I,IAAAA;AACjE,cAAI69I,KAjBqB,IAiBTJ,IACZj3F,KAAYt1D,GAAM/E,QAClB2xJ,KAAY/nJ,GAAM5J;AAEtB,cAAIq6D,MAAas3F,MAAAA,EAAeD,MAAaC,KAAYt3F;AACvD,mBAAA;AAGF,cAAIu3F,KAAa/9I,GAAMlY,IAAIoJ,EAAAA,GACvB8sJ,KAAah+I,GAAMlY,IAAIiO,EAAAA;AAC3B,cAAIgoJ,MAAcC;AAChB,mBAAOD,MAAchoJ,MAASioJ,MAAc9sJ;AAE9C,cAAItE,KAAAA,IACA6zB,KAAAA,MACAgjD,KA/BuB,IA+Bfg6E,KAAoC,IAAIC,OAAAA;AAMpD,eAJA19I,GAAMtI,IAAIxG,IAAO6E,EAAAA,GACjBiK,GAAMtI,IAAI3B,IAAO7E,EAAAA,GAAAA,EAGRtE,KAAQ45D,MAAW;AAC1B,gBAAIy3F,KAAW/sJ,GAAMtE,EAAAA,GACjBsxJ,KAAWnoJ,GAAMnJ,EAAAA;AAErB,gBAAI4yE;AACF,kBAAI2+E,KAAWN,KACXr+E,GAAW0+E,IAAUD,IAAUrxJ,IAAOmJ,IAAO7E,IAAO8O,EAAAA,IACpDw/D,GAAWy+E,IAAUC,IAAUtxJ,IAAOsE,IAAO6E,IAAOiK,EAAAA;AAE1D,gBAAA,WAAIm+I,IAAwB;AAC1B,kBAAIA;AACF;AAEF19H,cAAAA,KAAAA;AACA;YAAA;AAGF,gBAAIgjD,IAAAA;AACF,kBAAA,CAAKyuE,GAAUn8I,IAAO,SAASmoJ,IAAUE,IAAAA;AACnC,oBAAA,CAAKT,GAASl6E,IAAM26E,EAAAA,MACfH,OAAaC,MAAYN,GAAUK,IAAUC,IAAUT,IAASj+E,IAAYx/D,EAAAA;AAC/E,yBAAOyjE,GAAK7lE,KAAKwgJ,EAAAA;cAAAA,CAAAA,GAEjB;AACN39H,gBAAAA,KAAAA;AACA;cAAA;YAAA,WAGEw9H,OAAaC,MAAAA,CACXN,GAAUK,IAAUC,IAAUT,IAASj+E,IAAYx/D,EAAAA,GACpD;AACLygB,cAAAA,KAAAA;AACA;YAAA;UAAA;AAKJ,iBAFAzgB,GAAc,OAAE9O,EAAAA,GAChB8O,GAAc,OAAEjK,EAAAA,GACT0qB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC1DTz5B,QAAAA,GAAOD,UAZP,SAAmBmK,IAAOgV,IAAAA;AAIxB,mBAHItZ,KAAAA,IACAT,KAAkB,QAAT+E,KAAgB,IAAIA,GAAM/E,QAAAA,EAE9BS,KAAQT;AACf,gBAAI+Z,GAAUhV,GAAMtE,EAAAA,GAAQA,IAAOsE,EAAAA;AACjC,qBAAA;AAGJ,iBAAA;QAAO;MAAA,GAAA,SAAAjI,IAAAd,IAAAO,IAAA;ACnBT,YAAI21J,KAAiB31J,GAAQ,GAAA,GACzBswH,KAAatwH,GAAQ,GAAA,GACrB2I,KAAO3I,GAAQ,GAAA;AAanB1B,QAAAA,GAAOD,UAJP,SAAoB4B,IAAAA;AAClB,iBAAO01J,GAAe11J,IAAQ0I,IAAM2nH,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZtC,YAAItP,KAAYhhH,GAAQ,GAAA,GACpBqJ,KAAUrJ,GAAQ,EAAA;AAkBtB1B,QAAAA,GAAOD,UALP,SAAwB4B,IAAQ21J,IAAUC,IAAAA;AACxC,cAAI99H,KAAS69H,GAAS31J,EAAAA;AACtB,iBAAOoJ,GAAQpJ,EAAAA,IAAU83B,KAASipF,GAAUjpF,IAAQ89H,GAAY51J,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACMlE3B,QAAAA,GAAOD,UAJP,WAAA;AACE,iBAAO,CAAA;QAAA;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;ACnBT,YAAIqrF,KAAcrrF,GAAQ,GAAA,GACtB81J,KAAa91J,GAAQ,GAAA,GAMrBI,KAHcnB,OAAOkB,UAGQC;AAsBjC9B,QAAAA,GAAOD,UAbP,SAAkB4B,IAAAA;AAChB,cAAA,CAAKorF,GAAYprF,EAAAA;AACf,mBAAO61J,GAAW71J,EAAAA;AAEpB,cAAI83B,KAAS,CAAA;AACb,mBAASj4B,MAAOb,OAAOgB,EAAAA;AACjBG,YAAAA,GAAe1B,KAAKuB,IAAQH,EAAAA,KAAe,iBAAPA,MACtCi4B,GAAO7iB,KAAKpV,EAAAA;AAGhB,iBAAOi4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1BT,YAAItM,KAAWzrB,GAAQ,EAAA;AAcvB1B,QAAAA,GAAOD,UAJP,SAA4BmB,IAAAA;AAC1B,iBAAOA,MAAUA,MAAAA,CAAUisB,GAASjsB,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACQtClB,QAAAA,GAAOD,UAVP,SAAiCyB,IAAKi2J,IAAAA;AACpC,iBAAO,SAAS91J,IAAAA;AACd,mBAAc,QAAVA,OAGGA,GAAOH,EAAAA,MAASi2J,OAAAA,WACpBA,MAA2Bj2J,MAAOb,OAAOgB,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACfhD,YAAI+1J,KAAWh2J,GAAQ,GAAA,GACnByrB,KAAWzrB,GAAQ,EAAA,GACnBk3E,KAAWl3E,GAAQ,GAAA,GAMnBi2J,KAAa,sBAGbC,KAAa,cAGbC,KAAY,eAGZC,KAAez7G;AA8CnBr8C,QAAAA,GAAOD,UArBP,SAAkBmB,IAAAA;AAChB,cAAoB,YAAA,OAATA;AACT,mBAAOA;AAET,cAAI03E,GAAS13E,EAAAA;AACX,mBA1CM;AA4CR,cAAIisB,GAASjsB,EAAAA,GAAQ;AACnB,gBAAI6N,KAAgC,cAAA,OAAjB7N,GAAMmL,UAAwBnL,GAAMmL,QAAAA,IAAYnL;AACnEA,YAAAA,KAAQisB,GAASpe,EAAAA,IAAUA,KAAQ,KAAMA;UAAAA;AAE3C,cAAoB,YAAA,OAAT7N;AACT,mBAAiB,MAAVA,KAAcA,KAAAA,CAASA;AAEhCA,UAAAA,KAAQw2J,GAASx2J,EAAAA;AACjB,cAAI62J,KAAWH,GAAWrlI,KAAKrxB,EAAAA;AAC/B,iBAAQ62J,MAAYF,GAAUtlI,KAAKrxB,EAAAA,IAC/B42J,GAAa52J,GAAMkB,MAAM,CAAA,GAAI21J,KAAW,IAAI,CAAA,IAC3CJ,GAAWplI,KAAKrxB,EAAAA,IAvDb,MAAA,CAuD6BA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC5DvC,YAAI82J,KAAat2J,GAAQ,GAAA,GAWrBu2J,KAViBv2J,GAAQ,GAAA,EAUCs2J,EAAAA;AAE9Bh4J,QAAAA,GAAOD,UAAUk4J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AAAAA,SCbjB,SAAA92J,IAAAJ,IAAA;AAyBA,cAAI8pE,KAAMnpE,GAAQ,GAAA;AAGlB1B,UAAAA,GAAOD,UAAUgrE;AAGjB,cAIID,IAJA//D,KAAUrJ,GAAQ,GAAA;AAOtBqpE,UAAAA,GAASmtF,gBAAgBA;AAGhB,UAAAx2J,GAAQ,GAAA,EAAU+wH;AAA3B,cAEI0lC,KAAkB,SAAUxlC,IAASzrH,IAAAA;AACvC,mBAAOyrH,GAAQtkD,UAAUnnE,EAAAA,EAAM/B;UAAAA,GAK7B4vH,KAASrzH,GAAQ,GAAA,GAKjBi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAChCggG,KAAgBt7F,GAAOikB,cAAc,WAAA;UAAA;AAWzC,cAAI+R,KAAO1vD,OAAOY,OAAOG,GAAQ,GAAA,CAAA;AACjC2uD,UAAAA,GAAK5b,WAAW/yC,GAAQ,EAAA;AAIxB,cAAI02J,KAAY12J,GAAQ,GAAA,GACpBgjI,KAAAA;AAEFA,UAAAA,KADE0zB,MAAaA,GAAUC,WACjBD,GAAUC,SAAS,QAAA,IAEnB,WAAA;UAAA;AAIV,cAEIC,IAFAC,KAAa72J,GAAQ,GAAA,GACrBm0H,KAAcn0H,GAAQ,GAAA;AAG1B2uD,UAAAA,GAAK5b,SAASs2B,IAAUgqD,EAAAA;AAExB,cAAIyjC,KAAe,CAAC,SAAS,SAAS,WAAW,SAAS,QAAA;AAc1D,mBAASN,GAAcl9H,IAAS+6F,IAAAA;AAG9B/6F,YAAAA,KAAUA,MAAW,CAAA;AAOrB,gBAAIg7F,KAAWD,eATfjrD,KAASA,MAAUppE,GAAQ,GAAA;AAa3BsF,iBAAKivH,aAAAA,CAAAA,CAAej7F,GAAQi7F,YAExBD,OAAUhvH,KAAKivH,aAAajvH,KAAKivH,cAAAA,CAAAA,CAAgBj7F,GAAQy9H;AAI7D,gBAAItiC,KAAMn7F,GAAQywC,eACditF,KAAc19H,GAAQ29H,uBACtBriC,KAAatvH,KAAKivH,aAAa,KAAK;AAElBjvH,iBAAKykE,gBAAvB0qD,MAAe,MAARA,KAAgCA,KAAaH,OAAa0iC,MAA+B,MAAhBA,MAAyCA,KAAsCpiC,IAGnKtvH,KAAKykE,gBAAgBxmE,KAAKgK,MAAMjI,KAAKykE,aAAAA,GAKrCzkE,KAAKgvC,SAAS,IAAIuiH,MAClBvxJ,KAAK7B,SAAS,GACd6B,KAAK4tI,QAAQ,MACb5tI,KAAK4xJ,aAAa,GAClB5xJ,KAAK6xJ,UAAU,MACf7xJ,KAAKskE,QAAAA,OACLtkE,KAAK8xJ,aAAAA,OACL9xJ,KAAK+xJ,UAAAA,OAML/xJ,KAAKgwH,OAAAA,MAILhwH,KAAKgyJ,eAAAA,OACLhyJ,KAAKiyJ,kBAAAA,OACLjyJ,KAAKkyJ,oBAAAA,OACLlyJ,KAAKmyJ,kBAAAA,OAGLnyJ,KAAK2kE,YAAAA,OAKL3kE,KAAK6vH,kBAAkB77F,GAAQ67F,mBAAmB,QAGlD7vH,KAAKoyJ,aAAa,GAGlBpyJ,KAAKqyJ,cAAAA,OAELryJ,KAAKsyJ,UAAU,MACftyJ,KAAK0vC,WAAW,MACZ1b,GAAQ0b,aACL4hH,OAAeA,KAAgB52J,GAAQ,GAAA,EAAmB42J,gBAC/DtxJ,KAAKsyJ,UAAU,IAAIhB,GAAct9H,GAAQ0b,QAAAA,GACzC1vC,KAAK0vC,WAAW1b,GAAQ0b;UAAAA;AAI5B,mBAASq0B,GAAS/vC,IAAAA;AAGhB,gBAFA8vC,KAASA,MAAUppE,GAAQ,GAAA,GAAA,EAErBsF,gBAAgB+jE;AAAW,qBAAO,IAAIA,GAAS/vC,EAAAA;AAErDh0B,iBAAK0kE,iBAAiB,IAAIwsF,GAAcl9H,IAASh0B,IAAAA,GAGjDA,KAAKikE,WAAAA,MAEDjwC,OAC0B,cAAA,OAAjBA,GAAQ+2C,SAAqB/qE,KAAKuyJ,QAAQv+H,GAAQ+2C,OAE9B,cAAA,OAApB/2C,GAAQi9F,YAAwBjxH,KAAK4kE,WAAW5wC,GAAQi9F,WAGrElD,GAAO30H,KAAK4G,IAAAA;UAAAA;AA2Dd,mBAASwyJ,GAAiBzjC,IAAQsC,IAAO3hF,IAAU+iH,IAAYC,IAAAA;AAC7D,gBAKM/kC,IALF/zE,KAAQm1E,GAAOrqD;AACL,qBAAV2sD,MACFz3E,GAAMm4G,UAAAA,OA0NV,SAAoBhjC,IAAQn1E,IAAAA;AAC1B,kBAAIA,GAAM0qB;AAAO;AACjB,kBAAI1qB,GAAM04G,SAAS;AACjB,oBAAIjhC,KAAQz3E,GAAM04G,QAAQrzJ,IAAAA;AACtBoyH,gBAAAA,MAASA,GAAMlzH,WACjBy7C,GAAM5K,OAAOp/B,KAAKyhH,EAAAA,GAClBz3E,GAAMz7C,UAAUy7C,GAAMq1E,aAAa,IAAIoC,GAAMlzH;cAAAA;AAGjDy7C,cAAAA,GAAM0qB,QAAAA,MAGNquF,GAAa5jC,EAAAA;YAAAA,EArOAA,IAAQn1E,EAAAA,MAGd84G,OAAgB/kC,KA2CzB,SAAsB/zE,IAAOy3E,IAAAA;AAC3B,kBAAI1D;AApPiBzkH,cAAAA,KAqPFmoH,IApPZ1iG,GAAOg7C,SAASzgE,EAAAA,KAAQA,cAAeylH,MAoPA,YAAA,OAAV0C,MAAAA,WAAsBA,MAAwBz3E,GAAMq1E,eACtFtB,KAAK,IAAI3pH,UAAU,iCAAA;AAtPvB,kBAAuBkF;AAwPrB,qBAAOykH;YAAAA,EAhDkC/zE,IAAOy3E,EAAAA,IAC1C1D,KACFoB,GAAOt7C,KAAK,SAASk6C,EAAAA,IACZ/zE,GAAMq1E,cAAcoC,MAASA,GAAMlzH,SAAS,KAChC,YAAA,OAAVkzH,MAAuBz3E,GAAMq1E,cAAct1H,OAAOijB,eAAey0G,EAAAA,MAAW1iG,GAAO9zB,cAC5Fw2H,KAhNR,SAA6BA,IAAAA;AAC3B,qBAAO1iG,GAAO3Z,KAAKq8G,EAAAA;YAAAA,EA+MeA,EAAAA,IAG1BohC,KACE74G,GAAMk4G,aAAY/iC,GAAOt7C,KAAK,SAAS,IAAI/sE,MAAM,kCAAA,CAAA,IAA0CksJ,GAAS7jC,IAAQn1E,IAAOy3E,IAAAA,IAAO,IACrHz3E,GAAM0qB,QACfyqD,GAAOt7C,KAAK,SAAS,IAAI/sE,MAAM,yBAAA,CAAA,KAE/BkzC,GAAMm4G,UAAAA,OACFn4G,GAAM04G,WAAAA,CAAY5iH,MACpB2hF,KAAQz3E,GAAM04G,QAAQrxF,MAAMowD,EAAAA,GACxBz3E,GAAMq1E,cAA+B,MAAjBoC,GAAMlzH,SAAcy0J,GAAS7jC,IAAQn1E,IAAOy3E,IAAAA,KAAO,IAAYwhC,GAAc9jC,IAAQn1E,EAAAA,KAE7Gg5G,GAAS7jC,IAAQn1E,IAAOy3E,IAAAA,KAAO,MAGzBohC,OACV74G,GAAMm4G,UAAAA;AAIV,mBAgCF,SAAsBn4G,IAAAA;AACpB,qBAAA,CAAQA,GAAM0qB,UAAU1qB,GAAMo4G,gBAAgBp4G,GAAMz7C,SAASy7C,GAAM6qB,iBAAkC,MAAjB7qB,GAAMz7C;YAAAA,EAjCtEy7C,EAAAA;UAAAA;AAGtB,mBAASg5G,GAAS7jC,IAAQn1E,IAAOy3E,IAAOohC,IAAAA;AAClC74G,YAAAA,GAAMi4G,WAA4B,MAAjBj4G,GAAMz7C,UAAAA,CAAiBy7C,GAAMo2E,QAChDjB,GAAOt7C,KAAK,QAAQ49C,EAAAA,GACpBtC,GAAOhkD,KAAK,CAAA,MAGZnxB,GAAMz7C,UAAUy7C,GAAMq1E,aAAa,IAAIoC,GAAMlzH,QACzCs0J,KAAY74G,GAAM5K,OAAOz7B,QAAQ89G,EAAAA,IAAYz3E,GAAM5K,OAAOp/B,KAAKyhH,EAAAA,GAE/Dz3E,GAAMo4G,gBAAcW,GAAa5jC,EAAAA,IAEvC8jC,GAAc9jC,IAAQn1E,EAAAA;UAAAA;AAvGxBjgD,iBAAOC,eAAemqE,GAASlpE,WAAW,aAAa,EACrDf,KAAK,WAAA;AACH,mBAAA,WAAIkG,KAAK0kE,kBAGF1kE,KAAK0kE,eAAeC;UAAAA,GAE7Bj7D,KAAK,SAAUxP,IAAAA;AAGR8F,iBAAK0kE,mBAMV1kE,KAAK0kE,eAAeC,YAAYzqE;UAAAA,EAAAA,CAAAA,GAIpC6pE,GAASlpE,UAAUo2H,UAAUpC,GAAYoC,SACzCltD,GAASlpE,UAAUs3H,aAAatD,GAAYuD,WAC5CruD,GAASlpE,UAAU+pE,WAAW,SAAUx5C,IAAKkhB,IAAAA;AAC3CtsC,iBAAK4P,KAAK,IAAA,GACV08B,GAAGlhB,EAAAA;UAAAA,GAOL24C,GAASlpE,UAAU+U,OAAO,SAAUyhH,IAAO3hF,IAAAA;AACzC,gBACIgjH,IADA94G,KAAQ55C,KAAK0kE;AAgBjB,mBAbK9qB,GAAMq1E,aAUTyjC,KAAAA,OATqB,YAAA,OAAVrhC,QACT3hF,KAAWA,MAAYkK,GAAMi2E,qBACZj2E,GAAMlK,aACrB2hF,KAAQ1iG,GAAO3Z,KAAKq8G,IAAO3hF,EAAAA,GAC3BA,KAAW,KAEbgjH,KAAAA,OAMGF,GAAiBxyJ,MAAMqxH,IAAO3hF,IAAAA,OAAiBgjH,EAAAA;UAAAA,GAIxD3uF,GAASlpE,UAAU0Y,UAAU,SAAU89G,IAAAA;AACrC,mBAAOmhC,GAAiBxyJ,MAAMqxH,IAAO,MAAA,MAAM,KAAM;UAAA,GAwEnDttD,GAASlpE,UAAUi4J,WAAW,WAAA;AAC5B,mBAAA,UAAO9yJ,KAAK0kE,eAAemtF;UAAAA,GAI7B9tF,GAASlpE,UAAUk4J,cAAc,SAAUx+E,IAAAA;AAIzC,mBAHK+8E,OAAeA,KAAgB52J,GAAQ,GAAA,EAAmB42J,gBAC/DtxJ,KAAK0kE,eAAe4tF,UAAU,IAAIhB,GAAc/8E,EAAAA,GAChDv0E,KAAK0kE,eAAeh1B,WAAW6kC,IACxBv0E;UAAAA;AAIT,cAAIgzJ,KAAU;AAoBd,mBAASC,GAAcv4J,IAAGk/C,IAAAA;AACxB,mBAAIl/C,MAAK,KAAsB,MAAjBk/C,GAAMz7C,UAAgBy7C,GAAM0qB,QAAc,IACpD1qB,GAAMq1E,aAAmB,IACzBv0H,MAAMA,KAEJk/C,GAAMi4G,WAAWj4G,GAAMz7C,SAAey7C,GAAM5K,OAAOnwB,KAAKsQ,KAAKhxB,SAAmBy7C,GAAMz7C,UAGxFzD,KAAIk/C,GAAM6qB,kBAAe7qB,GAAM6qB,gBA3BrC,SAAiC/pE,IAAAA;AAc/B,qBAbIA,MAAKs4J,KACPt4J,KAAIs4J,MAIJt4J,MACAA,MAAKA,OAAM,GACXA,MAAKA,OAAM,GACXA,MAAKA,OAAM,GACXA,MAAKA,OAAM,GACXA,MAAKA,OAAM,IACXA,OAEKA;YAAAA,EAaoEA,EAAAA,IACvEA,MAAKk/C,GAAMz7C,SAAezD,KAEzBk/C,GAAM0qB,QAIJ1qB,GAAMz7C,UAHXy7C,GAAMo4G,eAAAA,MACC;UAAA;AA4HX,mBAASW,GAAa5jC,IAAAA;AACpB,gBAAIn1E,KAAQm1E,GAAOrqD;AACnB9qB,YAAAA,GAAMo4G,eAAAA,OACDp4G,GAAMq4G,oBACTv0B,GAAM,gBAAgB9jF,GAAMi4G,OAAAA,GAC5Bj4G,GAAMq4G,kBAAAA,MACFr4G,GAAMo2E,OAAMnsD,GAAIU,SAAS2uF,IAAenkC,EAAAA,IAAamkC,GAAcnkC,EAAAA;UAAAA;AAI3E,mBAASmkC,GAAcnkC,IAAAA;AACrB2O,YAAAA,GAAM,eAAA,GACN3O,GAAOt7C,KAAK,UAAA,GACZ5kB,GAAKkgE,EAAAA;UAAAA;AASP,mBAAS8jC,GAAc9jC,IAAQn1E,IAAAA;AACxBA,YAAAA,GAAMy4G,gBACTz4G,GAAMy4G,cAAAA,MACNxuF,GAAIU,SAAS4uF,IAAgBpkC,IAAQn1E,EAAAA;UAAAA;AAIzC,mBAASu5G,GAAepkC,IAAQn1E,IAAAA;AAE9B,qBADI57C,KAAM47C,GAAMz7C,QAAAA,CACRy7C,GAAMm4G,WAAAA,CAAYn4G,GAAMi4G,WAAAA,CAAYj4G,GAAM0qB,SAAS1qB,GAAMz7C,SAASy7C,GAAM6qB,kBAC9Ei5D,GAAM,sBAAA,GACN3O,GAAOhkD,KAAK,CAAA,GACR/sE,OAAQ47C,GAAMz7C;AAELH,cAAAA,KAAM47C,GAAMz7C;AAE3By7C,YAAAA,GAAMy4G,cAAAA;UAAc;AAyOtB,mBAASe,GAAiBxgI,IAAAA;AACxB8qG,YAAAA,GAAM,0BAAA,GACN9qG,GAAKm4C,KAAK,CAAA;UAAA;AAsBZ,mBAASsoF,GAAQtkC,IAAQn1E,IAAAA;AAClBA,YAAAA,GAAMm4G,YACTr0B,GAAM,eAAA,GACN3O,GAAOhkD,KAAK,CAAA,IAGdnxB,GAAMu4G,kBAAAA,OACNv4G,GAAMw4G,aAAa,GACnBrjC,GAAOt7C,KAAK,QAAA,GACZ5kB,GAAKkgE,EAAAA,GACDn1E,GAAMi4G,WAAAA,CAAYj4G,GAAMm4G,WAAShjC,GAAOhkD,KAAK,CAAA;UAAA;AAanD,mBAASlc,GAAKkgE,IAAAA;AACZ,gBAAIn1E,KAAQm1E,GAAOrqD;AAEnB,iBADAg5D,GAAM,QAAQ9jF,GAAMi4G,OAAAA,GACbj4G,GAAMi4G,WAA6B,SAAlB9iC,GAAOhkD,KAAAA;AAAAA;UAAAA;AAmFjC,mBAASuoF,GAAS54J,IAAGk/C,IAAAA;AAEnB,mBAAqB,MAAjBA,GAAMz7C,SAAqB,QAG3By7C,GAAMq1E,aAAYrhD,KAAMh0B,GAAM5K,OAAOpgC,MAAAA,IAAAA,CAAkBlU,MAAKA,MAAKk/C,GAAMz7C,UAEtDyvE,KAAfh0B,GAAM04G,UAAe14G,GAAM5K,OAAO/uB,KAAK,EAAA,IAAqC,MAAxB25B,GAAM5K,OAAO7wC,SAAoBy7C,GAAM5K,OAAOnwB,KAAKsQ,OAAgByqB,GAAM5K,OAAOn1B,OAAO+/B,GAAMz7C,MAAAA,GACrJy7C,GAAM5K,OAAOzjC,MAAAA,KAGbqiE,KASJ,SAAyBlzE,IAAG8X,IAAM+gJ,IAAAA;AAChC,kBAAI3lF;AACAlzE,cAAAA,KAAI8X,GAAKqM,KAAKsQ,KAAKhxB,UAErByvE,KAAMp7D,GAAKqM,KAAKsQ,KAAK/zB,MAAM,GAAGV,EAAAA,GAC9B8X,GAAKqM,KAAKsQ,OAAO3c,GAAKqM,KAAKsQ,KAAK/zB,MAAMV,EAAAA,KAGtCkzE,KAFSlzE,OAAM8X,GAAKqM,KAAKsQ,KAAKhxB,SAExBqU,GAAK5D,MAAAA,IAGL2kJ,KASV,SAA8B74J,IAAG8X,IAAAA;AAC/B,oBAAIzX,KAAIyX,GAAKqM,MACTvlB,KAAI,GACJs0E,KAAM7yE,GAAEo0B;AACZz0B,gBAAAA,MAAKkzE,GAAIzvE;AACT,uBAAOpD,KAAIA,GAAEgF,QAAM;AACjB,sBAAImpB,KAAMnuB,GAAEo0B,MACRqkI,KAAK94J,KAAIwuB,GAAI/qB,SAAS+qB,GAAI/qB,SAASzD;AAGvC,sBAFI84J,OAAOtqI,GAAI/qB,SAAQyvE,MAAO1kD,KAAS0kD,MAAO1kD,GAAI9tB,MAAM,GAAGV,EAAAA,GAEjD,OADVA,MAAK84J,KACQ;AACPA,oBAAAA,OAAOtqI,GAAI/qB,UAAAA,EACX7E,IACEyB,GAAEgF,OAAMyS,GAAKqM,OAAO9jB,GAAEgF,OAAUyS,GAAKqM,OAAOrM,GAAKoC,OAAO,SAE5DpC,GAAKqM,OAAO9jB,IACZA,GAAEo0B,OAAOjG,GAAI9tB,MAAMo4J,EAAAA;AAErB;kBAAA;AAAA,oBAEAl6J;gBAAAA;AAGJ,uBADAkZ,GAAKrU,UAAU7E,IACRs0E;cAAAA,EAhCmClzE,IAAG8X,EAAAA,IAsC/C,SAAwB9X,IAAG8X,IAAAA;AACzB,oBAAIo7D,KAAMj/C,GAAO4gB,YAAY70C,EAAAA,GACzBK,KAAIyX,GAAKqM,MACTvlB,KAAI;AACRyB,gBAAAA,GAAEo0B,KAAK6zC,KAAK4K,EAAAA,GACZlzE,MAAKK,GAAEo0B,KAAKhxB;AACZ,uBAAOpD,KAAIA,GAAEgF,QAAM;AACjB,sBAAI4vC,KAAM50C,GAAEo0B,MACRqkI,KAAK94J,KAAIi1C,GAAIxxC,SAASwxC,GAAIxxC,SAASzD;AAGvC,sBAFAi1C,GAAIqzB,KAAK4K,IAAKA,GAAIzvE,SAASzD,IAAG,GAAG84J,EAAAA,GAEvB,OADV94J,MAAK84J,KACQ;AACPA,oBAAAA,OAAO7jH,GAAIxxC,UAAAA,EACX7E,IACEyB,GAAEgF,OAAMyS,GAAKqM,OAAO9jB,GAAEgF,OAAUyS,GAAKqM,OAAOrM,GAAKoC,OAAO,SAE5DpC,GAAKqM,OAAO9jB,IACZA,GAAEo0B,OAAOwgB,GAAIv0C,MAAMo4J,EAAAA;AAErB;kBAAA;AAAA,oBAEAl6J;gBAAAA;AAGJ,uBADAkZ,GAAKrU,UAAU7E,IACRs0E;cAAAA,EA9D6DlzE,IAAG8X,EAAAA;AAEvE,qBAAOo7D;YAAAA,EAtBiBlzE,IAAGk/C,GAAM5K,QAAQ4K,GAAM04G,OAAAA,GAGxC1kF;AAVP,gBAAIA;UAAAA;AA4FN,mBAAS6lF,GAAY1kC,IAAAA;AACnB,gBAAIn1E,KAAQm1E,GAAOrqD;AAInB,gBAAI9qB,GAAMz7C,SAAS;AAAG,oBAAM,IAAIuI,MAAM,4CAAA;AAEjCkzC,YAAAA,GAAMk4G,eACTl4G,GAAM0qB,QAAAA,MACNT,GAAIU,SAASmvF,IAAe95G,IAAOm1E,EAAAA;UAAAA;AAIvC,mBAAS2kC,GAAc95G,IAAOm1E,IAAAA;AAEvBn1E,YAAAA,GAAMk4G,cAA+B,MAAjBl4G,GAAMz7C,WAC7By7C,GAAMk4G,aAAAA,MACN/iC,GAAO9qD,WAAAA,OACP8qD,GAAOt7C,KAAK,KAAA;UAAA;AAIhB,mBAAS7rE,GAAQ+rJ,IAAIzjJ,IAAAA;AACnB,qBAASjX,KAAI,GAAGC,KAAIy6J,GAAGx1J,QAAQlF,KAAIC,IAAGD;AACpC,kBAAI06J,GAAG16J,EAAAA,MAAOiX;AAAG,uBAAOjX;AAE1B,mBAAA;UAAQ;AApoBV8qE,UAAAA,GAASlpE,UAAUkwE,OAAO,SAAUrwE,IAAAA;AAClCgjI,YAAAA,GAAM,QAAQhjI,EAAAA,GACdA,KAAI26C,SAAS36C,IAAG,EAAA;AAChB,gBAAIk/C,KAAQ55C,KAAK0kE,gBACbkvF,KAAQl5J;AAOZ,gBALU,MAANA,OAASk/C,GAAMq4G,kBAAAA,QAKT,MAANv3J,MAAWk/C,GAAMo4G,iBAAiBp4G,GAAMz7C,UAAUy7C,GAAM6qB,iBAAiB7qB,GAAM0qB;AAGjF,qBAFAo5D,GAAM,sBAAsB9jF,GAAMz7C,QAAQy7C,GAAM0qB,KAAAA,GAC3B,MAAjB1qB,GAAMz7C,UAAgBy7C,GAAM0qB,QAAOmvF,GAAYzzJ,IAAAA,IAAW2yJ,GAAa3yJ,IAAAA,GACpE;AAMT,gBAAU,OAHVtF,KAAIu4J,GAAcv4J,IAAGk/C,EAAAA,MAGNA,GAAM0qB;AAEnB,qBADqB,MAAjB1qB,GAAMz7C,UAAcs1J,GAAYzzJ,IAAAA,GAC7B;AA0BT,gBA4BI4tE,IA5BAimF,KAASj6G,GAAMo4G;AAiDnB,mBAhDAt0B,GAAM,iBAAiBm2B,EAAAA,IAGF,MAAjBj6G,GAAMz7C,UAAgBy7C,GAAMz7C,SAASzD,KAAIk/C,GAAM6qB,kBAEjDi5D,GAAM,8BADNm2B,KAAAA,IAAS,GAMPj6G,GAAM0qB,SAAS1qB,GAAMm4G,UAEvBr0B,GAAM,oBADNm2B,KAAAA,KAAS,IAEAA,OACTn2B,GAAM,SAAA,GACN9jF,GAAMm4G,UAAAA,MACNn4G,GAAMo2E,OAAAA,MAEe,MAAjBp2E,GAAMz7C,WAAcy7C,GAAMo4G,eAAAA,OAE9BhyJ,KAAKuyJ,MAAM34G,GAAM6qB,aAAAA,GACjB7qB,GAAMo2E,OAAAA,OAGDp2E,GAAMm4G,YAASr3J,KAAIu4J,GAAcW,IAAOh6G,EAAAA,KAMnC,UAFDg0B,KAAPlzE,KAAI,IAAS44J,GAAS54J,IAAGk/C,EAAAA,IAAkB,SAG7CA,GAAMo4G,eAAAA,MACNt3J,KAAI,KAEJk/C,GAAMz7C,UAAUzD,IAGG,MAAjBk/C,GAAMz7C,WAGHy7C,GAAM0qB,UAAO1qB,GAAMo4G,eAAAA,OAGpB4B,OAAUl5J,MAAKk/C,GAAM0qB,SAAOmvF,GAAYzzJ,IAAAA,IAGlC,SAAR4tE,MAAc5tE,KAAKyzE,KAAK,QAAQ7F,EAAAA,GAE7BA;UAAAA,GAkET7J,GAASlpE,UAAU03J,QAAQ,SAAU73J,IAAAA;AACnCsF,iBAAKyzE,KAAK,SAAS,IAAI/sE,MAAM,4BAAA,CAAA;UAAA,GAG/Bq9D,GAASlpE,UAAUg3H,OAAO,SAAU1b,IAAM29C,IAAAA;AACxC,gBAAI5kH,KAAMlvC,MACN45C,KAAQ55C,KAAK0kE;AAEjB,oBAAQ9qB,GAAMg4G,YAAAA;cACZ,KAAK;AACHh4G,gBAAAA,GAAMg0F,QAAQz3B;AACd;cACF,KAAK;AACHv8D,gBAAAA,GAAMg0F,QAAQ,CAACh0F,GAAMg0F,OAAOz3B,EAAAA;AAC5B;cACF;AACEv8D,gBAAAA,GAAMg0F,MAAMh+H,KAAKumG,EAAAA;YAAAA;AAGrBv8D,YAAAA,GAAMg4G,cAAc,GACpBl0B,GAAM,yBAAyB9jF,GAAMg4G,YAAYkC,EAAAA;AAEjD,gBAEIC,MAAAA,CAFUD,MAAAA,UAAYA,GAAS70J,QAAkBk3G,OAAS9wC,GAAQ2uF,UAAU79C,OAAS9wC,GAAQ4uF,SAE7E7vF,KAAQ8vF;AAI5B,qBAASC,GAASlwF,IAAUmwF,IAAAA;AAC1B12B,cAAAA,GAAM,UAAA,GACFz5D,OAAa/0B,MACXklH,MAAAA,UAAcA,GAAWC,eAC3BD,GAAWC,aAAAA,MAoBf32B,GAAM,SAAA,GAENvnB,GAAK5iC,eAAe,SAAS+gF,EAAAA,GAC7Bn+C,GAAK5iC,eAAe,UAAUghF,EAAAA,GAC9Bp+C,GAAK5iC,eAAe,SAASihF,EAAAA,GAC7Br+C,GAAK5iC,eAAe,SAASigB,EAAAA,GAC7B2iB,GAAK5iC,eAAe,UAAU4gF,EAAAA,GAC9BjlH,GAAIqkC,eAAe,OAAOnP,EAAAA,GAC1Bl1B,GAAIqkC,eAAe,OAAO2gF,EAAAA,GAC1BhlH,GAAIqkC,eAAe,QAAQkhF,EAAAA,GAE3BC,KAAAA,MAAY,CAOR96G,GAAMw4G,cAAgBj8C,GAAK9xC,kBAAAA,CAAkB8xC,GAAK9xC,eAAemrD,aAAYglC,GAAAA;YAAAA;AAhCnF,qBAASpwF,KAAAA;AACPs5D,cAAAA,GAAM,OAAA,GACNvnB,GAAKl3G,IAAAA;YAAAA;AAfH26C,YAAAA,GAAMk4G,aAAYjuF,GAAIU,SAASwvF,EAAAA,IAAY7kH,GAAIi1B,KAAK,OAAO4vF,EAAAA,GAE/D59C,GAAK/iC,GAAG,UAAU+gF,EAAAA;AAoBlB,gBAAIK,KA4FN,SAAqBtlH,IAAAA;AACnB,qBAAO,WAAA;AACL,oBAAI0K,KAAQ1K,GAAIw1B;AAChBg5D,gBAAAA,GAAM,eAAe9jF,GAAMw4G,UAAAA,GACvBx4G,GAAMw4G,cAAYx4G,GAAMw4G,cACH,MAArBx4G,GAAMw4G,cAAoBjB,GAAgBjiH,IAAK,MAAA,MACjD0K,GAAMi4G,UAAAA,MACNhjG,GAAK3f,EAAAA;cAAAA;YAAAA,EAnGiBA,EAAAA;AAC1BinE,YAAAA,GAAK/iC,GAAG,SAASohF,EAAAA;AAEjB,gBAAIE,KAAAA;AA2BJ,gBAAIC,KAAAA;AAEJ,qBAASF,GAAOpjC,IAAAA;AACdqM,cAAAA,GAAM,QAAA,GACNi3B,KAAAA,OAAsB,UACZx+C,GAAKl1C,MAAMowD,EAAAA,KACCsjC,QAKM,MAArB/6G,GAAMg4G,cAAoBh4G,GAAMg0F,UAAUz3B,MAAQv8D,GAAMg4G,aAAa,KAAA,OAAKhqJ,GAAQgyC,GAAMg0F,OAAOz3B,EAAAA,MAAAA,CAAkBu+C,OACpHh3B,GAAM,+BAA+BxuF,GAAIw1B,eAAe0tF,UAAAA,GACxDljH,GAAIw1B,eAAe0tF,cACnBuC,KAAAA,OAEFzlH,GAAI0lH,MAAAA;YAAAA;AAMR,qBAASphE,GAAQm6B,IAAAA;AACf+P,cAAAA,GAAM,WAAW/P,EAAAA,GACjBumC,GAAAA,GACA/9C,GAAK5iC,eAAe,SAASigB,EAAAA,GACU,MAAnC29D,GAAgBh7C,IAAM,OAAA,KAAgBA,GAAK1iC,KAAK,SAASk6C,EAAAA;YAAAA;AAO/D,qBAAS2mC,KAAAA;AACPn+C,cAAAA,GAAK5iC,eAAe,UAAUghF,EAAAA,GAC9BL,GAAAA;YAAAA;AAGF,qBAASK,KAAAA;AACP72B,cAAAA,GAAM,UAAA,GACNvnB,GAAK5iC,eAAe,SAAS+gF,EAAAA,GAC7BJ,GAAAA;YAAAA;AAIF,qBAASA,KAAAA;AACPx2B,cAAAA,GAAM,QAAA,GACNxuF,GAAIglH,OAAO/9C,EAAAA;YAAAA;AAYb,mBA1DAjnE,GAAIkkC,GAAG,QAAQqhF,EAAAA,GA9gBjB,SAAyB9oC,IAASkpC,IAAOtyJ,IAAAA;AAGvC,kBAAuC,cAAA,OAA5BopH,GAAQj4C;AAAgC,uBAAOi4C,GAAQj4C,gBAAgBmhF,IAAOtyJ,EAAAA;AAMpFopH,cAAAA,GAAQK,WAAYL,GAAQK,QAAQ6oC,EAAAA,IAAuC9wJ,GAAQ4nH,GAAQK,QAAQ6oC,EAAAA,CAAAA,IAASlpC,GAAQK,QAAQ6oC,EAAAA,EAAOthJ,QAAQhR,EAAAA,IAASopH,GAAQK,QAAQ6oC,EAAAA,IAAS,CAACtyJ,IAAIopH,GAAQK,QAAQ6oC,EAAAA,CAAAA,IAAtJlpC,GAAQv4C,GAAGyhF,IAAOtyJ,EAAAA;YAAAA,EAkiBnD4zG,IAAM,SAAS3iB,EAAAA,GAO/B2iB,GAAKhyC,KAAK,SAASmwF,EAAAA,GAMnBn+C,GAAKhyC,KAAK,UAAUowF,EAAAA,GAQpBp+C,GAAK1iC,KAAK,QAAQvkC,EAAAA,GAGb0K,GAAMi4G,YACTn0B,GAAM,aAAA,GACNxuF,GAAI4lH,OAAAA,IAGC3+C;UAAAA,GAeTpyC,GAASlpE,UAAUq5J,SAAS,SAAU/9C,IAAAA;AACpC,gBAAIv8D,KAAQ55C,KAAK0kE,gBACb0vF,KAAa,EAAEC,YAAAA,MAAY;AAG/B,gBAAyB,MAArBz6G,GAAMg4G;AAAkB,qBAAO5xJ;AAGnC,gBAAyB,MAArB45C,GAAMg4G;AAER,qBAAIz7C,MAAQA,OAASv8D,GAAMg0F,UAEtBz3B,OAAMA,KAAOv8D,GAAMg0F,QAGxBh0F,GAAMg0F,QAAQ,MACdh0F,GAAMg4G,aAAa,GACnBh4G,GAAMi4G,UAAAA,OACF17C,MAAMA,GAAK1iC,KAAK,UAAUzzE,MAAMo0J,EAAAA,IARKp0J;AAc3C,gBAAA,CAAKm2G,IAAM;AAET,kBAAI4+C,KAAQn7G,GAAMg0F,OACd5vI,KAAM47C,GAAMg4G;AAChBh4G,cAAAA,GAAMg0F,QAAQ,MACdh0F,GAAMg4G,aAAa,GACnBh4G,GAAMi4G,UAAAA;AAEN,uBAAS54J,KAAI,GAAGA,KAAI+E,IAAK/E;AACvB87J,gBAAAA,GAAM97J,EAAAA,EAAGw6E,KAAK,UAAUzzE,MAAMo0J,EAAAA;AAC/B,qBAAOp0J;YAAAA;AAIV,gBAAIpB,KAAQgJ,GAAQgyC,GAAMg0F,OAAOz3B,EAAAA;AACjC,mBAAA,OAAIv3G,OAEJg7C,GAAMg0F,MAAM76H,OAAOnU,IAAO,CAAA,GAC1Bg7C,GAAMg4G,cAAc,GACK,MAArBh4G,GAAMg4G,eAAkBh4G,GAAMg0F,QAAQh0F,GAAMg0F,MAAM,CAAA,IAEtDz3B,GAAK1iC,KAAK,UAAUzzE,MAAMo0J,EAAAA,IANDp0J;UAAAA,GAa3B+jE,GAASlpE,UAAUu4E,KAAK,SAAU4hF,IAAIzyJ,IAAAA;AACpC,gBAAIolB,KAAMomG,GAAOlzH,UAAUu4E,GAAGh6E,KAAK4G,MAAMg1J,IAAIzyJ,EAAAA;AAE7C,gBAAW,WAAPyyJ;AAAAA,wBAEEh1J,KAAK0kE,eAAemtF,WAAmB7xJ,KAAK80J,OAAAA;qBAChC,eAAPE,IAAmB;AAC5B,kBAAIp7G,KAAQ55C,KAAK0kE;AACZ9qB,cAAAA,GAAMk4G,cAAel4G,GAAMs4G,sBAC9Bt4G,GAAMs4G,oBAAoBt4G,GAAMo4G,eAAAA,MAChCp4G,GAAMq4G,kBAAAA,OACDr4G,GAAMm4G,UAEAn4G,GAAMz7C,UACfw0J,GAAa3yJ,IAAAA,IAFb6jE,GAAIU,SAAS6uF,IAAkBpzJ,IAAAA;YAAAA;AAOrC,mBAAO2nB;UAAAA,GAETo8C,GAASlpE,UAAUw4E,cAActP,GAASlpE,UAAUu4E,IASpDrP,GAASlpE,UAAUi6J,SAAS,WAAA;AAC1B,gBAAIl7G,KAAQ55C,KAAK0kE;AAMjB,mBALK9qB,GAAMi4G,YACTn0B,GAAM,QAAA,GACN9jF,GAAMi4G,UAAAA,MAMV,SAAgB9iC,IAAQn1E,IAAAA;AACjBA,cAAAA,GAAMu4G,oBACTv4G,GAAMu4G,kBAAAA,MACNtuF,GAAIU,SAAS8uF,IAAStkC,IAAQn1E,EAAAA;YAAAA,EARvB55C,MAAM45C,EAAAA,IAER55C;UAAAA,GAuBT+jE,GAASlpE,UAAU+5J,QAAQ,WAAA;AAOzB,mBANAl3B,GAAM,yBAAyB19H,KAAK0kE,eAAemtF,OAAAA,GAAAA,UACrC7xJ,KAAK0kE,eAAemtF,YAChCn0B,GAAM,OAAA,GACN19H,KAAK0kE,eAAemtF,UAAAA,OACpB7xJ,KAAKyzE,KAAK,OAAA,IAELzzE;UAAAA,GAYT+jE,GAASlpE,UAAUq6B,OAAO,SAAU65F,IAAAA;AAClC,gBAAI/jB,KAAQhrG,MAER45C,KAAQ55C,KAAK0kE,gBACbuwF,KAAAA;AA4BJ,qBAASh8J,MA1BT81H,GAAO37C,GAAG,OAAO,WAAA;AAEf,kBADAsqD,GAAM,aAAA,GACF9jF,GAAM04G,WAAAA,CAAY14G,GAAM0qB,OAAO;AACjC,oBAAI+sD,KAAQz3E,GAAM04G,QAAQrzJ,IAAAA;AACtBoyH,gBAAAA,MAASA,GAAMlzH,UAAQ6sG,GAAMp7F,KAAKyhH,EAAAA;cAAAA;AAGxCrmB,cAAAA,GAAMp7F,KAAK,IAAA;YAAA,CAAA,GAGbm/G,GAAO37C,GAAG,QAAQ,SAAUi+C,IAAAA;AAAAA,eAC1BqM,GAAM,cAAA,GACF9jF,GAAM04G,YAASjhC,KAAQz3E,GAAM04G,QAAQrxF,MAAMowD,EAAAA,IAG3Cz3E,GAAMq1E,cAAc,QAACoC,QAAyDz3E,GAAMq1E,cAAgBoC,MAAUA,GAAMlzH,YAE9G6sG,GAAMp7F,KAAKyhH,EAAAA,MAEnB4jC,KAAAA,MACAlmC,GAAO6lC,MAAAA;YAAAA,CAAAA,GAMG7lC;AAAAA,yBACR/uH,KAAK/G,EAAAA,KAAyC,cAAA,OAAd81H,GAAO91H,EAAAA,MACzC+G,KAAK/G,EAAAA,IAAK,SAAU+1B,IAAAA;AAClB,uBAAO,WAAA;AACL,yBAAO+/F,GAAO//F,EAAAA,EAAQplB,MAAMmlH,IAAQ9sH,SAAAA;gBAAAA;cAAAA,EAEtChJ,EAAAA;AAKN,qBAASyB,KAAI,GAAGA,KAAI82J,GAAarzJ,QAAQzD;AACvCq0H,cAAAA,GAAO37C,GAAGo+E,GAAa92J,EAAAA,GAAIsF,KAAKyzE,KAAKh5E,KAAKuF,MAAMwxJ,GAAa92J,EAAAA,CAAAA,CAAAA;AAa/D,mBARAsF,KAAKuyJ,QAAQ,SAAU73J,IAAAA;AACrBgjI,cAAAA,GAAM,iBAAiBhjI,EAAAA,GACnBu6J,OACFA,KAAAA,OACAlmC,GAAO+lC,OAAAA;YAAAA,GAIJ90J;UAAAA,GAGTrG,OAAOC,eAAemqE,GAASlpE,WAAW,yBAAyB,EAIjEhB,YAAAA,OACAC,KAAK,WAAA;AACH,mBAAOkG,KAAK0kE,eAAeD;UAAAA,EAAAA,CAAAA,GAK/BV,GAASmxF,YAAY5B;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACz3BrBt6J,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA,EAAU+wH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACInC,YAAI5nD,KAAMnpE,GAAQ,GAAA;AA8DlB,iBAASy6J,GAAYviI,IAAMxH,IAAAA;AACzBwH,UAAAA,GAAK6gD,KAAK,SAASroD,EAAAA;QAAAA;AAGrBpyB,QAAAA,GAAOD,UAAU,EACfk4H,SA/DF,SAAiB7lG,IAAKkhB,IAAAA;AACpB,cAAI0+D,KAAQhrG,MAERo1J,KAAoBp1J,KAAK0kE,kBAAkB1kE,KAAK0kE,eAAeC,WAC/D0wF,KAAoBr1J,KAAKqkE,kBAAkBrkE,KAAKqkE,eAAeM;AAEnE,iBAAIywF,MAAqBC,MACnB/oH,KACFA,GAAGlhB,EAAAA,IAAAA,CACMA,MAASprB,KAAKqkE,kBAAmBrkE,KAAKqkE,eAAeisD,gBAC9DzsD,GAAIU,SAAS4wF,IAAan1J,MAAMorB,EAAAA,GAE3BprB,SAMLA,KAAK0kE,mBACP1kE,KAAK0kE,eAAeC,YAAAA,OAIlB3kE,KAAKqkE,mBACPrkE,KAAKqkE,eAAeM,YAAAA,OAGtB3kE,KAAK4kE,SAASx5C,MAAO,MAAM,SAAUA,IAAAA;AAAAA,aAC9BkhB,MAAMlhB,MACTy4C,GAAIU,SAAS4wF,IAAanqD,IAAO5/E,EAAAA,GAC7B4/E,GAAM3mC,mBACR2mC,GAAM3mC,eAAeisD,eAAAA,SAEdhkF,MACTA,GAAGlhB,EAAAA;UAAAA,CAAAA,GAIAprB;QAAAA,GA0BPoyH,WAvBF,WAAA;AACMpyH,eAAK0kE,mBACP1kE,KAAK0kE,eAAeC,YAAAA,OACpB3kE,KAAK0kE,eAAeqtF,UAAAA,OACpB/xJ,KAAK0kE,eAAeJ,QAAAA,OACpBtkE,KAAK0kE,eAAeotF,aAAAA,QAGlB9xJ,KAAKqkE,mBACPrkE,KAAKqkE,eAAeM,YAAAA,OACpB3kE,KAAKqkE,eAAeC,QAAAA,OACpBtkE,KAAKqkE,eAAeorD,SAAAA,OACpBzvH,KAAKqkE,eAAeqrD,WAAAA,OACpB1vH,KAAKqkE,eAAeisD,eAAAA;QAAe,EAAA;MAAA,GAAA,SAAAr1H,IAAAd,IAAAO,IAAA;AAAA;ACrCvC,YAAIi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAGhC86C,KAAa96C,GAAO86C,cAAc,SAAU/5B,IAAAA;AAE9C,mBADAA,KAAW,KAAKA,OACIA,GAAS5jB,YAAAA,GAAAA;YAC3B,KAAK;YAAM,KAAK;YAAO,KAAK;YAAQ,KAAK;YAAQ,KAAK;YAAS,KAAK;YAAS,KAAK;YAAO,KAAK;YAAQ,KAAK;YAAU,KAAK;YAAW,KAAK;AACxI,qBAAA;YACF;AACE,qBAAA;UAAO;QAAA;AA4Cb,iBAASwlI,GAAc5hH,IAAAA;AAErB,cAAI8jH;AACJ,kBAFAxzJ,KAAK0vC,WAXP,SAA2B6kC,IAAAA;AACzB,gBAAI+gF,KA/BN,SAA4B/gF,IAAAA;AAC1B,kBAAA,CAAKA;AAAK,uBAAO;AAEjB,uBADIghF;AAEF,wBAAQhhF,IAAAA;kBACN,KAAK;kBACL,KAAK;AACH,2BAAO;kBACT,KAAK;kBACL,KAAK;kBACL,KAAK;kBACL,KAAK;AACH,2BAAO;kBACT,KAAK;kBACL,KAAK;AACH,2BAAO;kBACT,KAAK;kBACL,KAAK;kBACL,KAAK;AACH,2BAAOA;kBACT;AACE,wBAAIghF;AAAS;AACbhhF,oBAAAA,MAAO,KAAKA,IAAKzoD,YAAAA,GACjBypI,KAAAA;gBAAU;YAAA,EAQchhF,EAAAA;AAC9B,gBAAoB,YAAA,OAAT+gF,OAAsB3mI,GAAO86C,eAAeA,MAAAA,CAAeA,GAAW8K,EAAAA;AAAO,oBAAM,IAAI7tE,MAAM,uBAAuB6tE,EAAAA;AAC/H,mBAAO+gF,MAAQ/gF;UAAAA,EAQmB7kC,EAAAA,GAE1B1vC,KAAK0vC,UAAAA;YACX,KAAK;AACH1vC,mBAAKgkC,OAAOwxH,IACZx1J,KAAKf,MAAMw2J,IACXjC,KAAK;AACL;YACF,KAAK;AACHxzJ,mBAAK01J,WAAWC,IAChBnC,KAAK;AACL;YACF,KAAK;AACHxzJ,mBAAKgkC,OAAO4xH,IACZ51J,KAAKf,MAAM42J,IACXrC,KAAK;AACL;YACF;AAGE,qBAFAxzJ,KAAKihE,QAAQ60F,IAAAA,MACb91J,KAAKf,MAAM82J;UAAAA;AAGf/1J,eAAKg2J,WAAW,GAChBh2J,KAAKi2J,YAAY,GACjBj2J,KAAKojG,WAAWz0E,GAAO4gB,YAAYikH,EAAAA;QAAAA;AAoCrC,iBAAS0C,GAAcjsB,IAAAA;AACrB,iBAAIA,MAAQ,MAAa,IAAWA,MAAQ,KAAM,IAAa,IAAWA,MAAQ,KAAM,KAAa,IAAWA,MAAQ,KAAM,KAAa,IACpIA,MAAQ,KAAM,IAAA,KAAQ;QAAK;AA2DpC,iBAAS0rB,GAAahmH,IAAAA;AACpB,cAAI50C,KAAIiF,KAAKi2J,YAAYj2J,KAAKg2J,UAC1Bj8J,KAtBN,SAA6B64B,IAAM+c,IAAK50C,IAAAA;AACtC,gBAAwB,QAAV,MAAT40C,GAAI,CAAA;AAEP,qBADA/c,GAAKojI,WAAW,GACT;AAET,gBAAIpjI,GAAKojI,WAAW,KAAKrmH,GAAIxxC,SAAS,GAAG;AACvC,kBAAwB,QAAV,MAATwxC,GAAI,CAAA;AAEP,uBADA/c,GAAKojI,WAAW,GACT;AAET,kBAAIpjI,GAAKojI,WAAW,KAAKrmH,GAAIxxC,SAAS,KACZ,QAAV,MAATwxC,GAAI,CAAA;AAEP,uBADA/c,GAAKojI,WAAW,GACT;YAAA;UAAA,EASeh2J,MAAM2vC,EAAAA;AAClC,iBAAA,WAAI51C,KAAwBA,KACxBiG,KAAKg2J,YAAYrmH,GAAIxxC,UACvBwxC,GAAIqzB,KAAKhjE,KAAKojG,UAAUroG,IAAG,GAAGiF,KAAKg2J,QAAAA,GAC5Bh2J,KAAKojG,SAAS1hG,SAAS1B,KAAK0vC,UAAU,GAAG1vC,KAAKi2J,SAAAA,MAEvDtmH,GAAIqzB,KAAKhjE,KAAKojG,UAAUroG,IAAG,GAAG40C,GAAIxxC,MAAAA,GAAAA,MAClC6B,KAAKg2J,YAAYrmH,GAAIxxC;QAAAA;AA2BvB,iBAASq3J,GAAU7lH,IAAK12C,IAAAA;AACtB,eAAK02C,GAAIxxC,SAASlF,MAAK,KAAM,GAAG;AAC9B,gBAAIc,KAAI41C,GAAIjuC,SAAS,WAAWzI,EAAAA;AAChC,gBAAIc,IAAG;AACL,kBAAIT,KAAIS,GAAEkP,WAAWlP,GAAEoE,SAAS,CAAA;AAChC,kBAAI7E,MAAK,SAAUA,MAAK;AAKtB,uBAJA0G,KAAKg2J,WAAW,GAChBh2J,KAAKi2J,YAAY,GACjBj2J,KAAKojG,SAAS,CAAA,IAAKzzD,GAAIA,GAAIxxC,SAAS,CAAA,GACpC6B,KAAKojG,SAAS,CAAA,IAAKzzD,GAAIA,GAAIxxC,SAAS,CAAA,GAC7BpE,GAAEqB,MAAM,GAAA,EAAI;YAAA;AAGvB,mBAAOrB;UAAAA;AAKT,iBAHAiG,KAAKg2J,WAAW,GAChBh2J,KAAKi2J,YAAY,GACjBj2J,KAAKojG,SAAS,CAAA,IAAKzzD,GAAIA,GAAIxxC,SAAS,CAAA,GAC7BwxC,GAAIjuC,SAAS,WAAWzI,IAAG02C,GAAIxxC,SAAS,CAAA;QAAA;AAKjD,iBAASs3J,GAAS9lH,IAAAA;AAChB,cAAI51C,KAAI41C,MAAOA,GAAIxxC,SAAS6B,KAAKihE,MAAMtxB,EAAAA,IAAO;AAC9C,cAAI3vC,KAAKg2J,UAAU;AACjB,gBAAI/2J,KAAMe,KAAKi2J,YAAYj2J,KAAKg2J;AAChC,mBAAOj8J,KAAIiG,KAAKojG,SAAS1hG,SAAS,WAAW,GAAGzC,EAAAA;UAAAA;AAElD,iBAAOlF;QAAAA;AAGT,iBAAS67J,GAAWjmH,IAAK12C,IAAAA;AACvB,cAAIyB,MAAKi1C,GAAIxxC,SAASlF,MAAK;AAC3B,iBAAU,MAANyB,KAAgBi1C,GAAIjuC,SAAS,UAAUzI,EAAAA,KAC3C+G,KAAKg2J,WAAW,IAAIt7J,IACpBsF,KAAKi2J,YAAY,GACP,MAANv7J,KACFsF,KAAKojG,SAAS,CAAA,IAAKzzD,GAAIA,GAAIxxC,SAAS,CAAA,KAEpC6B,KAAKojG,SAAS,CAAA,IAAKzzD,GAAIA,GAAIxxC,SAAS,CAAA,GACpC6B,KAAKojG,SAAS,CAAA,IAAKzzD,GAAIA,GAAIxxC,SAAS,CAAA,IAE/BwxC,GAAIjuC,SAAS,UAAUzI,IAAG02C,GAAIxxC,SAASzD,EAAAA;QAAAA;AAGhD,iBAASm7J,GAAUlmH,IAAAA;AACjB,cAAI51C,KAAI41C,MAAOA,GAAIxxC,SAAS6B,KAAKihE,MAAMtxB,EAAAA,IAAO;AAC9C,iBAAI3vC,KAAKg2J,WAAiBj8J,KAAIiG,KAAKojG,SAAS1hG,SAAS,UAAU,GAAG,IAAI1B,KAAKg2J,QAAAA,IACpEj8J;QAAAA;AAIT,iBAAS+7J,GAAYnmH,IAAAA;AACnB,iBAAOA,GAAIjuC,SAAS1B,KAAK0vC,QAAAA;QAAAA;AAG3B,iBAASqmH,GAAUpmH,IAAAA;AACjB,iBAAOA,MAAOA,GAAIxxC,SAAS6B,KAAKihE,MAAMtxB,EAAAA,IAAO;QAAA;AAzN/C52C,QAAAA,GAAQu4J,gBAAgBA,IA6BxBA,GAAcz2J,UAAUomE,QAAQ,SAAUtxB,IAAAA;AACxC,cAAmB,MAAfA,GAAIxxC;AAAc,mBAAO;AAC7B,cAAIpE,IACAd;AACJ,cAAI+G,KAAKg2J,UAAU;AAEjB,gBAAA,YADAj8J,KAAIiG,KAAK01J,SAAS/lH,EAAAA;AACG,qBAAO;AAC5B12C,YAAAA,KAAI+G,KAAKg2J,UACTh2J,KAAKg2J,WAAW;UAAA;AAEhB/8J,YAAAA,KAAI;AAEN,iBAAIA,KAAI02C,GAAIxxC,SAAepE,KAAIA,KAAIiG,KAAKgkC,KAAK2L,IAAK12C,EAAAA,IAAK+G,KAAKgkC,KAAK2L,IAAK12C,EAAAA,IAC/Dc,MAAK;QAAA,GAGdu3J,GAAcz2J,UAAUoE,MAwGxB,SAAiB0wC,IAAAA;AACf,cAAI51C,KAAI41C,MAAOA,GAAIxxC,SAAS6B,KAAKihE,MAAMtxB,EAAAA,IAAO;AAC9C,iBAAI3vC,KAAKg2J,WAAiBj8J,KAAI,WACvBA;QAAAA,GAxGTu3J,GAAcz2J,UAAUmpC,OA0FxB,SAAkB2L,IAAK12C,IAAAA;AACrB,cAAIk9J,KArEN,SAA6BvjI,IAAM+c,IAAK12C,IAAAA;AACtC,gBAAI6lC,KAAI6Q,GAAIxxC,SAAS;AACrB,gBAAI2gC,KAAI7lC;AAAG,qBAAO;AAClB,gBAAIu6J,KAAK0C,GAAcvmH,GAAI7Q,EAAAA,CAAAA;AAC3B,gBAAI00H,MAAM;AAER,qBADIA,KAAK,MAAG5gI,GAAKojI,WAAWxC,KAAK,IAC1BA;AAET,gBAAA,EAAM10H,KAAI7lC,MAAAA,OAAKu6J;AAAW,qBAAO;AAEjC,iBADAA,KAAK0C,GAAcvmH,GAAI7Q,EAAAA,CAAAA,MACb;AAER,qBADI00H,KAAK,MAAG5gI,GAAKojI,WAAWxC,KAAK,IAC1BA;AAET,gBAAA,EAAM10H,KAAI7lC,MAAAA,OAAKu6J;AAAW,qBAAO;AAEjC,iBADAA,KAAK0C,GAAcvmH,GAAI7Q,EAAAA,CAAAA,MACb;AAIR,qBAHI00H,KAAK,MACI,MAAPA,KAAUA,KAAK,IAAO5gI,GAAKojI,WAAWxC,KAAK,IAE1CA;AAET,mBAAO;UAAA,EA+CyBxzJ,MAAM2vC,IAAK12C,EAAAA;AAC3C,cAAA,CAAK+G,KAAKg2J;AAAU,mBAAOrmH,GAAIjuC,SAAS,QAAQzI,EAAAA;AAChD+G,eAAKi2J,YAAYE;AACjB,cAAIl3J,KAAM0wC,GAAIxxC,UAAUg4J,KAAQn2J,KAAKg2J;AAErC,iBADArmH,GAAIqzB,KAAKhjE,KAAKojG,UAAU,GAAGnkG,EAAAA,GACpB0wC,GAAIjuC,SAAS,QAAQzI,IAAGgG,EAAAA;QAAAA,GA7FjCqyJ,GAAcz2J,UAAU66J,WAAW,SAAU/lH,IAAAA;AAC3C,cAAI3vC,KAAKg2J,YAAYrmH,GAAIxxC;AAEvB,mBADAwxC,GAAIqzB,KAAKhjE,KAAKojG,UAAUpjG,KAAKi2J,YAAYj2J,KAAKg2J,UAAU,GAAGh2J,KAAKg2J,QAAAA,GACzDh2J,KAAKojG,SAAS1hG,SAAS1B,KAAK0vC,UAAU,GAAG1vC,KAAKi2J,SAAAA;AAEvDtmH,UAAAA,GAAIqzB,KAAKhjE,KAAKojG,UAAUpjG,KAAKi2J,YAAYj2J,KAAKg2J,UAAU,GAAGrmH,GAAIxxC,MAAAA,GAC/D6B,KAAKg2J,YAAYrmH,GAAIxxC;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACrEvBnF,QAAAA,GAAOD,UAAUi1H;AAEjB,YAAIlqD,KAASppE,GAAQ,GAAA,GAGjB2uD,KAAO1vD,OAAOY,OAAOG,GAAQ,GAAA,CAAA;AAMjC,iBAAS07J,GAAezoC,IAAIx+F,IAAAA;AAC1B,cAAIknI,KAAKr2J,KAAKs2J;AACdD,UAAAA,GAAGE,eAAAA;AAEH,cAAIjqH,KAAK+pH,GAAGlmC;AAEZ,cAAA,CAAK7jF;AACH,mBAAOtsC,KAAKyzE,KAAK,SAAS,IAAI/sE,MAAM,sCAAA,CAAA;AAGtC2vJ,UAAAA,GAAGG,aAAa,MAChBH,GAAGlmC,UAAU,MAED,QAARhhG,MACFnvB,KAAK4P,KAAKuf,EAAAA,GAEZmd,GAAGqhF,EAAAA;AAEH,cAAI8oC,KAAKz2J,KAAK0kE;AACd+xF,UAAAA,GAAG1E,UAAAA,QACC0E,GAAGzE,gBAAgByE,GAAGt4J,SAASs4J,GAAGhyF,kBACpCzkE,KAAKuyJ,MAAMkE,GAAGhyF,aAAAA;QAAAA;AAIlB,iBAASupD,GAAUh6F,IAAAA;AACjB,cAAA,EAAMh0B,gBAAgBguH;AAAY,mBAAO,IAAIA,GAAUh6F,EAAAA;AAEvD8vC,UAAAA,GAAO1qE,KAAK4G,MAAMg0B,EAAAA,GAElBh0B,KAAKs2J,kBAAkB,EACrBF,gBAAgBA,GAAe37J,KAAKuF,IAAAA,GACpC02J,eAAAA,OACAH,cAAAA,OACApmC,SAAS,MACTqmC,YAAY,MACZG,eAAe,KAAA,GAIjB32J,KAAK0kE,eAAestF,eAAAA,MAKpBhyJ,KAAK0kE,eAAesrD,OAAAA,OAEhBh8F,OAC+B,cAAA,OAAtBA,GAAQ4xC,cAA0B5lE,KAAK42J,aAAa5iI,GAAQ4xC,YAE1C,cAAA,OAAlB5xC,GAAQ6iI,UAAsB72J,KAAK82J,SAAS9iI,GAAQ6iI,SAIjE72J,KAAKozE,GAAG,aAAa2jF,EAAAA;QAAAA;AAGvB,iBAASA,KAAAA;AACP,cAAI/rD,KAAQhrG;AAEe,wBAAA,OAAhBA,KAAK82J,SACd92J,KAAK82J,OAAO,SAAUnpC,IAAIx+F,IAAAA;AACxB7uB,YAAAA,GAAK0qG,IAAO2iB,IAAIx+F,EAAAA;UAAAA,CAAAA,IAGlB7uB,GAAKN,MAAM,MAAM,IAAA;QAAA;AA2DrB,iBAASM,GAAKyuH,IAAQpB,IAAIx+F,IAAAA;AACxB,cAAIw+F;AAAI,mBAAOoB,GAAOt7C,KAAK,SAASk6C,EAAAA;AAOpC,cALY,QAARx+F,MACF4/F,GAAOn/G,KAAKuf,EAAAA,GAIV4/F,GAAO1qD,eAAelmE;AAAQ,kBAAM,IAAIuI,MAAM,4CAAA;AAElD,cAAIqoH,GAAOunC,gBAAgBC;AAAc,kBAAM,IAAI7vJ,MAAM,gDAAA;AAEzD,iBAAOqoH,GAAOn/G,KAAK,IAAA;QAAA;AA7IrBy5C,QAAAA,GAAK5b,WAAW/yC,GAAQ,EAAA,GAGxB2uD,GAAK5b,SAASugF,IAAWlqD,EAAAA,GAuEzBkqD,GAAUnzH,UAAU+U,OAAO,SAAUyhH,IAAO3hF,IAAAA;AAE1C,iBADA1vC,KAAKs2J,gBAAgBI,gBAAAA,OACd5yF,GAAOjpE,UAAU+U,KAAKxW,KAAK4G,MAAMqxH,IAAO3hF,EAAAA;QAAAA,GAajDs+E,GAAUnzH,UAAU+7J,aAAa,SAAUvlC,IAAO3hF,IAAUpD,IAAAA;AAC1D,gBAAM,IAAI5lC,MAAM,iCAAA;QAAA,GAGlBsnH,GAAUnzH,UAAUi2H,SAAS,SAAUO,IAAO3hF,IAAUpD,IAAAA;AACtD,cAAI+pH,KAAKr2J,KAAKs2J;AAId,cAHAD,GAAGlmC,UAAU7jF,IACb+pH,GAAGG,aAAanlC,IAChBglC,GAAGM,gBAAgBjnH,IAAAA,CACd2mH,GAAGE,cAAc;AACpB,gBAAIE,KAAKz2J,KAAK0kE;AAAAA,aACV2xF,GAAGK,iBAAiBD,GAAGzE,gBAAgByE,GAAGt4J,SAASs4J,GAAGhyF,kBAAezkE,KAAKuyJ,MAAMkE,GAAGhyF,aAAAA;UAAAA;QAAAA,GAO3FupD,GAAUnzH,UAAU03J,QAAQ,SAAU73J,IAAAA;AACpC,cAAI27J,KAAKr2J,KAAKs2J;AAEQ,mBAAlBD,GAAGG,cAAuBH,GAAGlmC,WAAAA,CAAYkmC,GAAGE,gBAC9CF,GAAGE,eAAAA,MACHv2J,KAAK42J,WAAWP,GAAGG,YAAYH,GAAGM,eAAeN,GAAGD,cAAAA,KAIpDC,GAAGK,gBAAAA;QAAgB,GAIvB1oC,GAAUnzH,UAAU+pE,WAAW,SAAUx5C,IAAKkhB,IAAAA;AAC5C,cAAIuwG,KAAS78I;AAEb8jE,UAAAA,GAAOjpE,UAAU+pE,SAASxrE,KAAK4G,MAAMorB,IAAK,SAAU4rI,IAAAA;AAClD1qH,YAAAA,GAAG0qH,EAAAA,GACHna,GAAOppE,KAAK,OAAA;UAAA,CAAA;QAAA;MAAA,GAAA,SAAAx4E,IAAAd,IAAAO,IAAA;ACpMhB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAI03B,KAAqB13B,GAAQ,GAAA;AAejC1B,QAAAA,GAAOD,UAbP,WAAA;AACE,cAAuB,eAAA,OAAZonE,WAAAA,CAA4B/tC;AAAoB,mBAAA;AAC3D,cAAIA,GAAmB+C;AAAM,mBAAA;AAC7B,cAAqB,cAAA,OAAV8+F;AAAsB,mBAAA;AAEjC,cAAA;AAEE,mBADA53C,QAAQxhF,UAAUwK,QAAQjM,KAAKg5B,GAAmBiqD,SAAS,CAAA,GAAI,WAAA;YAAA,CAAA,CAAA,GAAA;UACxD,SACAphF,IAAP;AACA,mBAAA;UAAO;QAAA,GAIiCjC,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACfjH,YAAI8qH,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,EAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFjB,YAAIvkF,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjBu8J,KAAyBv8J,GAAQ,GAAA,GACjCikC,KAAQjkC,GAAQ,EAAA,GAChBi5B,KAA8Bj5B,GAAQ,EAAA,GACtCuS,KAAUvS,GAAQ,EAAA,GAClBy7H,KAAaz7H,GAAQ,GAAA,GACrB64B,KAAa74B,GAAQ,EAAA,GACrByrB,KAAWzrB,GAAQ,EAAA,GACnBuuH,KAAiBvuH,GAAQ,GAAA,GACzBd,KAAiBc,GAAQ,EAAA,EAAuCusB,GAChE1c,KAAU7P,GAAQ,EAAA,EAAgC6P,SAClDsgC,KAAcnwC,GAAQ,EAAA,GACtBkuD,KAAsBluD,GAAQ,EAAA,GAE9BsuD,KAAmBJ,GAAoBl/C,KACvCwtJ,KAAyBtuG,GAAoBlB;AAEjD1uD,QAAAA,GAAOD,UAAU,SAAUo+J,IAAkBC,IAAS7mH,IAAAA;AACpD,cAMIjrB,IANAwiC,KAAAA,OAASqvG,GAAiBvvJ,QAAQ,KAAA,GAClCyvJ,KAAAA,OAAUF,GAAiBvvJ,QAAQ,MAAA,GACnC0vJ,KAAQxvG,KAAS,QAAQ,OACzBh0B,KAAoBT,GAAO8jI,EAAAA,GAC3BI,KAAkBzjI,MAAqBA,GAAkBj5B,WACzD28J,KAAW,CAAA;AAGf,cAAK3sH,MAAgBtX,GAAWO,EAAAA,MACzBujI,MAAWE,GAAgBhtJ,WAAAA,CAAYo0B,GAAM,WAAA;AAAA,YAAc,IAAI7K,KAAoBluB,QAAAA,EAAU7F,KAAAA;UAAAA,CAAAA,IAK7F;AASL,gBAAIi0E,MARJ1uD,KAAc8xI,GAAQ,SAAU5xI,IAAQ3kB,IAAAA;AACtCmoD,cAAAA,GAAiBmtE,GAAW3wG,IAAQwuD,EAAAA,GAAY,EAC9C9zE,MAAMi3J,IACNnnJ,YAAY,IAAI8jB,KAAAA,CAAAA,GAEF5vB,QAAZrD,MAAuBoM,GAAQpM,IAAU2kB,GAAO8xI,EAAAA,GAAQ,EAAEj5H,MAAM7Y,IAAQ8Y,YAAYwpB,GAAAA,CAAAA;YAAAA,CAAAA,GAG9DjtD,WAExBouD,KAAmBiuG,GAAuBC,EAAAA;AAE9C5sJ,YAAAA,GAAQ,CAAC,OAAO,SAAS,UAAU,WAAW,OAAO,OAAO,OAAO,QAAQ,UAAU,SAAA,GAAY,SAAUu/G,IAAAA;AACzG,kBAAI2tC,KAAkB,SAAP3tC,MAAuB,SAAPA;AAAAA,gBAC3BA,MAAOytC,OAAqBF,MAAkB,WAAPvtC,MACzCn2F,GAA4BqgD,IAAW81C,IAAK,SAAUtkH,IAAGC,IAAAA;AACvD,oBAAIuK,KAAai5C,GAAiBjpD,IAAAA,EAAMgQ;AACxC,oBAAA,CAAKynJ,MAAYJ,MAAAA,CAAYlxI,GAAS3gB,EAAAA;AAAI,yBAAc,SAAPskH,MAAAA;AACjD,oBAAIr3F,KAASziB,GAAW85G,EAAAA,EAAW,MAANtkH,KAAU,IAAIA,IAAGC,EAAAA;AAC9C,uBAAOgyJ,KAAWz3J,OAAOyyB;cAAAA,CAAAA;YAAAA,CAAAA,GAK/B4kI,MAAWz9J,GAAeo6E,IAAW,QAAQ,EAC3C7uD,cAAAA,MACArrB,KAAK,WAAA;AACH,qBAAOmvD,GAAiBjpD,IAAAA,EAAMgQ,WAAWxR;YAAAA,EAAAA,CAAAA;UAAAA;AA9B7C8mB,YAAAA,KAAcirB,GAAOmnH,eAAeN,IAASD,IAAkBrvG,IAAQwvG,EAAAA,GACvEL,GAAuB3kE,OAAAA;AAyCzB,iBAPA22B,GAAe3jG,IAAa6xI,IAAAA,OAAkB,IAAO,GAErDK,GAASL,EAAAA,IAAoB7xI,IAC7Bga,GAAE,EAAEjM,QAAAA,MAAc2B,QAAAA,KAAQ,GAAQwiI,EAAAA,GAE7BH,MAAS9mH,GAAOonH,UAAUryI,IAAa6xI,IAAkBrvG,EAAAA,GAEvDxiC;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1ET,YAAIqZ,KAAQjkC,GAAQ,EAAA,GAChByrB,KAAWzrB,GAAQ,EAAA,GACnBm1C,KAAUn1C,GAAQ,GAAA,GAClBk9J,KAA8Bl9J,GAAQ,GAAA,GAGtCm9J,KAAgBl+J,OAAOgQ,cACvBmuJ,KAAsBn5H,GAAM,WAAA;AAAck5H,UAAAA,GAAc,CAAA;QAAA,CAAA;AAI5D7+J,QAAAA,GAAOD,UAAW++J,MAAuBF,KAA+B,SAAsBviI,IAAAA;AAC5F,iBAAA,CAAA,CAAKlP,GAASkP,EAAAA,OAAAA,CACVuiI,MAA8C,iBAAf/nH,GAAQxa,EAAAA,OAAAA,CACpCwiI,MAAgBA,GAAcxiI,EAAAA;QAAAA,IACnCwiI;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACdJ,YAAIx3F,KAAa3lE,GAAQ,EAAA,GACrBk3D,KAAuBl3D,GAAQ,EAAA,GAC/BurF,KAAkBvrF,GAAQ,EAAA,GAC1BmwC,KAAcnwC,GAAQ,EAAA,GAEtByrF,KAAUF,GAAgB,SAAA;AAE9BjtF,QAAAA,GAAOD,UAAU,SAAUo+J,IAAAA;AACzB,cAAI7xI,KAAc+6C,GAAW82F,EAAAA,GACzBv9J,KAAiBg4D,GAAqB3qC;AAEtC4jB,UAAAA,MAAevlB,MAAAA,CAAgBA,GAAY6gE,EAAAA,KAC7CvsF,GAAe0rB,IAAa6gE,IAAS,EACnChhE,cAAAA,MACArrB,KAAK,WAAA;AAAc,mBAAOkG;UAAAA,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACdhC,YAAIqzB,KAAS34B,GAAQ,EAAA,GACjBtB,KAAOsB,GAAQ,EAAA,GACfytC,KAAYztC,GAAQ,EAAA,GACpB64B,KAAa74B,GAAQ,EAAA,GACrBkjC,KAAWljC,GAAQ,EAAA,GAEnBsJ,KAAYqvB,GAAOrvB;AAIvBhL,QAAAA,GAAOD,UAAU,SAAgByB,IAAKu9J,IAAAA;AACpC,cAKI79J,IALA4K,KAAM84B,GAAS59B,IAAAA,GACflG,KAAMquC,GAAUrjC,GAAIhL,GAAAA,GACpBoM,KAAMiiC,GAAUrjC,GAAIoB,GAAAA,GACpBwD,KAAMy+B,GAAUrjC,GAAI4E,GAAAA,GACpBsuJ,KAAW/1J,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA;AAEhD,cAAA,CAAKsxB,GAAWwkI,EAAAA,KAAAA,CAAcxkI,GAAWykI,EAAAA;AACvC,kBAAMh0J,GAAU,gCAAA;AAWhB,iBATE5K,GAAK8M,IAAKpB,IAAKtK,EAAAA,KACjBN,KAAQd,GAAKU,IAAKgL,IAAKtK,EAAAA,GACnB+4B,GAAWwkI,EAAAA,MACb79J,KAAQ69J,GAAS79J,EAAAA,GACjBd,GAAKsQ,IAAK5E,IAAKtK,IAAKN,EAAAA,MAEbq5B,GAAWykI,EAAAA,MACpB99J,KAAQ89J,GAAAA,GACR5+J,GAAKsQ,IAAK5E,IAAKtK,IAAKN,EAAAA,IACbA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACtBX,YAAIuzC,KAAW/yC,GAAQ,EAAA,GACnBu5E,KAAOv5E,GAAQ,GAAA,GACfi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAEhC6Q,KAAI,CACN,YAAY,YAAY,YAAY,YACpC,WAAY,YAAY,YAAY,YACpC,YAAY,WAAY,WAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,WAAY,WACpC,WAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,WAAY,WACpC,WAAY,WAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,UAAA,GAGlCJ,KAAI,IAAIjkC,MAAM,EAAA;AAElB,iBAAS88J,KAAAA;AACPj4J,eAAK0rH,KAAAA,GAEL1rH,KAAKk4J,KAAK94H,IAEV60C,GAAK76E,KAAK4G,MAAM,IAAI,EAAA;QAAA;AAkBtB,iBAASk1C,GAAIhlC,IAAG+a,IAAGgF,IAAAA;AACjB,iBAAOA,KAAK/f,MAAK+a,KAAIgF;QAAAA;AAGvB,iBAASkoI,GAAKjoJ,IAAG+a,IAAGgF,IAAAA;AAClB,iBAAQ/f,KAAI+a,KAAMgF,MAAK/f,KAAI+a;QAAAA;AAG7B,iBAASmtI,GAAQloJ,IAAAA;AACf,kBAAQA,OAAM,IAAIA,MAAK,OAAOA,OAAM,KAAKA,MAAK,OAAOA,OAAM,KAAKA,MAAK;QAAA;AAGvE,iBAASmoJ,GAAQnoJ,IAAAA;AACf,kBAAQA,OAAM,IAAIA,MAAK,OAAOA,OAAM,KAAKA,MAAK,OAAOA,OAAM,KAAKA,MAAK;QAAA;AAGvE,iBAASooJ,GAAQpoJ,IAAAA;AACf,kBAAQA,OAAM,IAAIA,MAAK,OAAOA,OAAM,KAAKA,MAAK,MAAOA,OAAM;QAAA;AAhC7Du9B,QAAAA,GAASwqH,IAAQhkF,EAAAA,GAEjBgkF,GAAOp9J,UAAU6wH,OAAO,WAAA;AAUtB,iBATA1rH,KAAK+yG,KAAK,YACV/yG,KAAKu4J,KAAK,YACVv4J,KAAKw4J,KAAK,YACVx4J,KAAKy4J,KAAK,YACVz4J,KAAKuoC,KAAK,YACVvoC,KAAK04J,KAAK,YACV14J,KAAK24J,KAAK,WACV34J,KAAK44J,KAAK,YAEH54J;QAAAA,GA2BTi4J,GAAOp9J,UAAU85E,UAAU,SAAUjnD,IAAAA;AAYnC,mBAhBexd,IAKXkvB,KAAIp/B,KAAKk4J,IAET1yJ,KAAc,IAAVxF,KAAK+yG,IACTttG,KAAc,IAAVzF,KAAKu4J,IACTj/J,KAAc,IAAV0G,KAAKw4J,IACTj/J,KAAc,IAAVyG,KAAKy4J,IACTx9J,KAAc,IAAV+E,KAAKuoC,IACTthB,KAAc,IAAVjnB,KAAK04J,IACT95H,KAAc,IAAV5+B,KAAK24J,IACTpwJ,KAAc,IAAVvI,KAAK44J,IAEJ3/J,KAAI,GAAGA,KAAI,IAAA,EAAMA;AAAGmmC,YAAAA,GAAEnmC,EAAAA,IAAKy0B,GAAE+hD,YAAgB,IAAJx2E,EAAAA;AAClD,iBAAOA,KAAI,IAAA,EAAMA;AAAGmmC,YAAAA,GAAEnmC,EAAAA,IAAqE,OAjB5EiX,KAiBoBkvB,GAAEnmC,KAAI,CAAA,OAhB3B,KAAKiX,MAAK,OAAOA,OAAM,KAAKA,MAAK,MAAOA,OAAM,MAgBbkvB,GAAEnmC,KAAI,CAAA,IAAKq/J,GAAOl5H,GAAEnmC,KAAI,EAAA,CAAA,IAAOmmC,GAAEnmC,KAAI,EAAA;AAEpF,mBAAS6lC,KAAI,GAAGA,KAAI,IAAA,EAAMA,IAAG;AAC3B,gBAAI+5H,KAAMtwJ,KAAI8vJ,GAAOp9J,EAAAA,IAAKi6C,GAAGj6C,IAAGgsB,IAAG2X,EAAAA,IAAKY,GAAEV,EAAAA,IAAKM,GAAEN,EAAAA,IAAM,GACnDg6H,KAAMV,GAAO5yJ,EAAAA,IAAK2yJ,GAAI3yJ,IAAGC,IAAGnM,EAAAA,IAAM;AAEtCiP,YAAAA,KAAIq2B,IACJA,KAAI3X,IACJA,KAAIhsB,IACJA,KAAK1B,KAAIs/J,KAAM,GACft/J,KAAID,IACJA,KAAImM,IACJA,KAAID,IACJA,KAAKqzJ,KAAKC,KAAM;UAAA;AAGlB94J,eAAK+yG,KAAMvtG,KAAIxF,KAAK+yG,KAAM,GAC1B/yG,KAAKu4J,KAAM9yJ,KAAIzF,KAAKu4J,KAAM,GAC1Bv4J,KAAKw4J,KAAMl/J,KAAI0G,KAAKw4J,KAAM,GAC1Bx4J,KAAKy4J,KAAMl/J,KAAIyG,KAAKy4J,KAAM,GAC1Bz4J,KAAKuoC,KAAMttC,KAAI+E,KAAKuoC,KAAM,GAC1BvoC,KAAK04J,KAAMzxI,KAAIjnB,KAAK04J,KAAM,GAC1B14J,KAAK24J,KAAM/5H,KAAI5+B,KAAK24J,KAAM,GAC1B34J,KAAK44J,KAAMrwJ,KAAIvI,KAAK44J,KAAM;QAAA,GAG5BX,GAAOp9J,UAAUk6E,QAAQ,WAAA;AACvB,cAAI11C,KAAI1Q,GAAO4gB,YAAY,EAAA;AAW3B,iBATAlQ,GAAEwxC,aAAa7wE,KAAK+yG,IAAI,CAAA,GACxB1zE,GAAEwxC,aAAa7wE,KAAKu4J,IAAI,CAAA,GACxBl5H,GAAEwxC,aAAa7wE,KAAKw4J,IAAI,CAAA,GACxBn5H,GAAEwxC,aAAa7wE,KAAKy4J,IAAI,EAAA,GACxBp5H,GAAEwxC,aAAa7wE,KAAKuoC,IAAI,EAAA,GACxBlJ,GAAEwxC,aAAa7wE,KAAK04J,IAAI,EAAA,GACxBr5H,GAAEwxC,aAAa7wE,KAAK24J,IAAI,EAAA,GACxBt5H,GAAEwxC,aAAa7wE,KAAK44J,IAAI,EAAA,GAEjBv5H;QAAAA,GAGTrmC,GAAOD,UAAUk/J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACtIjB,YAAIxqH,KAAW/yC,GAAQ,EAAA,GACnBu5E,KAAOv5E,GAAQ,GAAA,GACfi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAEhC6Q,KAAI,CACN,YAAY,YAAY,YAAY,WACpC,YAAY,YAAY,YAAY,YACpC,WAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,WAAY,YACpC,WAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,WACpC,YAAY,WAAY,YAAY,YACpC,YAAY,YAAY,YAAY,WACpC,WAAY,YAAY,WAAY,YACpC,WAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,WACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,WAAY,YAAY,WAAY,WACpC,WAAY,YAAY,WAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,WACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,WACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,WAAY,WACpC,WAAY,YAAY,WAAY,YACpC,WAAY,YAAY,WAAY,YACpC,WAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,WACpC,YAAY,WAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,YAAY,YAAY,WACpC,YAAY,YAAY,YAAY,YACpC,WAAY,YAAY,WAAY,YACpC,WAAY,YAAY,WAAY,WACpC,WAAY,WAAY,WAAY,YACpC,YAAY,WAAY,YAAY,YACpC,YAAY,YAAY,YAAY,YACpC,YAAY,WAAY,YAAY,UAAA,GAGlCJ,KAAI,IAAIjkC,MAAM,GAAA;AAElB,iBAAS49J,KAAAA;AACP/4J,eAAK0rH,KAAAA,GACL1rH,KAAKk4J,KAAK94H,IAEV60C,GAAK76E,KAAK4G,MAAM,KAAK,GAAA;QAAA;AA2BvB,iBAASg5J,GAAI9oJ,IAAG+a,IAAGgF,IAAAA;AACjB,iBAAOA,KAAK/f,MAAK+a,KAAIgF;QAAAA;AAGvB,iBAASkoI,GAAKjoJ,IAAG+a,IAAGgF,IAAAA;AAClB,iBAAQ/f,KAAI+a,KAAMgF,MAAK/f,KAAI+a;QAAAA;AAG7B,iBAASmtI,GAAQloJ,IAAG+oJ,IAAAA;AAClB,kBAAQ/oJ,OAAM,KAAK+oJ,MAAM,MAAMA,OAAO,IAAI/oJ,MAAK,OAAO+oJ,OAAO,IAAI/oJ,MAAK;QAAA;AAGxE,iBAASmoJ,GAAQnoJ,IAAG+oJ,IAAAA;AAClB,kBAAQ/oJ,OAAM,KAAK+oJ,MAAM,OAAO/oJ,OAAM,KAAK+oJ,MAAM,OAAOA,OAAO,IAAI/oJ,MAAK;QAAA;AAG1E,iBAASgpJ,GAAQhpJ,IAAG+oJ,IAAAA;AAClB,kBAAQ/oJ,OAAM,IAAI+oJ,MAAM,OAAO/oJ,OAAM,IAAI+oJ,MAAM,MAAO/oJ,OAAM;QAAA;AAG9D,iBAASipJ,GAASjpJ,IAAG+oJ,IAAAA;AACnB,kBAAQ/oJ,OAAM,IAAI+oJ,MAAM,OAAO/oJ,OAAM,IAAI+oJ,MAAM,OAAO/oJ,OAAM,IAAI+oJ,MAAM;QAAA;AAGxE,iBAASG,GAAQlpJ,IAAG+oJ,IAAAA;AAClB,kBAAQ/oJ,OAAM,KAAK+oJ,MAAM,OAAOA,OAAO,KAAK/oJ,MAAK,KAAMA,OAAM;QAAA;AAG/D,iBAASmpJ,GAASnpJ,IAAG+oJ,IAAAA;AACnB,kBAAQ/oJ,OAAM,KAAK+oJ,MAAM,OAAOA,OAAO,KAAK/oJ,MAAK,MAAMA,OAAM,IAAI+oJ,MAAM;QAAA;AAGzE,iBAASK,GAAU9zJ,IAAGC,IAAAA;AACpB,iBAAQD,OAAM,IAAMC,OAAM,IAAK,IAAI;QAAA;AAzDrCgoC,QAAAA,GAASsrH,IAAQ9kF,EAAAA,GAEjB8kF,GAAOl+J,UAAU6wH,OAAO,WAAA;AAmBtB,iBAlBA1rH,KAAKu5J,MAAM,YACXv5J,KAAKw5J,MAAM,YACXx5J,KAAKy5J,MAAM,YACXz5J,KAAK05J,MAAM,YACX15J,KAAK25J,MAAM,YACX35J,KAAK45J,MAAM,YACX55J,KAAK65J,MAAM,WACX75J,KAAK85J,MAAM,YAEX95J,KAAK+5J,MAAM,YACX/5J,KAAKg6J,MAAM,YACXh6J,KAAKi6J,MAAM,YACXj6J,KAAKk6J,MAAM,YACXl6J,KAAKm6J,MAAM,YACXn6J,KAAKo6J,MAAM,WACXp6J,KAAKq6J,MAAM,YACXr6J,KAAKs6J,MAAM,WAEJt6J;QAAAA,GAuCT+4J,GAAOl+J,UAAU85E,UAAU,SAAUjnD,IAAAA;AAqBnC,mBApBI0R,KAAIp/B,KAAKk4J,IAETqC,KAAgB,IAAXv6J,KAAKu5J,KACViB,KAAgB,IAAXx6J,KAAKw5J,KACVtkH,KAAgB,IAAXl1C,KAAKy5J,KACVgB,KAAgB,IAAXz6J,KAAK05J,KACVgB,KAAgB,IAAX16J,KAAK25J,KACVgB,KAAgB,IAAX36J,KAAK45J,KACVgB,KAAgB,IAAX56J,KAAK65J,KACVgB,KAAgB,IAAX76J,KAAK85J,KAEVgB,KAAgB,IAAX96J,KAAK+5J,KACVgB,KAAgB,IAAX/6J,KAAKg6J,KACVgB,KAAgB,IAAXh7J,KAAKi6J,KACVgB,KAAgB,IAAXj7J,KAAKk6J,KACVvxC,KAAgB,IAAX3oH,KAAKm6J,KACVe,KAAgB,IAAXl7J,KAAKo6J,KACVe,KAAgB,IAAXn7J,KAAKq6J,KACVe,KAAgB,IAAXp7J,KAAKs6J,KAELrhK,KAAI,GAAGA,KAAI,IAAIA,MAAK;AAC3BmmC,YAAAA,GAAEnmC,EAAAA,IAAKy0B,GAAE+hD,YAAgB,IAAJx2E,EAAAA,GACrBmmC,GAAEnmC,KAAI,CAAA,IAAKy0B,GAAE+hD,YAAgB,IAAJx2E,KAAQ,CAAA;AAEnC,iBAAOA,KAAI,KAAKA,MAAK,GAAG;AACtB,gBAAIoiK,KAAKj8H,GAAEnmC,KAAI,EAAA,GACXggK,KAAK75H,GAAEnmC,KAAI,KAAS,CAAA,GACpBq/J,KAASY,GAAOmC,IAAIpC,EAAAA,GACpBqC,KAAUnC,GAAQF,IAAIoC,EAAAA,GAItBE,KAASnC,GAFbiC,KAAKj8H,GAAEnmC,KAAI,CAAA,GACXggK,KAAK75H,GAAEnmC,KAAI,IAAQ,CAAA,CAAA,GAEfuiK,KAAUnC,GAAQJ,IAAIoC,EAAAA,GAGtBI,IAAOr8H,GAAEnmC,KAAI,EAAA,GACbyiK,KAAOt8H,GAAEnmC,KAAI,KAAQ,CAAA,GAErB0iK,KAAQv8H,GAAEnmC,KAAI,EAAA,GACd2iK,KAAQx8H,GAAEnmC,KAAI,KAAS,CAAA,GAEvB4iK,KAAOP,KAAUI,KAAQ,GACzBI,KAAOxD,KAASmD,IAAOnC,GAASuC,IAAKP,EAAAA,IAAY;AAIrDQ,YAAAA,MAFAA,KAAOA,KAAMP,KAASjC,GADtBuC,KAAOA,KAAML,KAAW,GACYA,EAAAA,IAAY,KAEnCG,KAAQrC,GADrBuC,KAAOA,KAAMD,KAAS,GACaA,EAAAA,IAAU,GAE7Cx8H,GAAEnmC,EAAAA,IAAK6iK,IACP18H,GAAEnmC,KAAI,CAAA,IAAK4iK;UAAAA;AAGb,mBAAS/8H,KAAI,GAAGA,KAAI,KAAKA,MAAK,GAAG;AAC/Bg9H,YAAAA,KAAM18H,GAAEN,EAAAA,GACR+8H,KAAMz8H,GAAEN,KAAI,CAAA;AAEZ,gBAAIi9H,KAAO5D,GAAIoC,IAAIC,IAAItlH,EAAAA,GACnB8mH,KAAO7D,GAAI2C,IAAIC,IAAIC,EAAAA,GAEnBiB,KAAU7D,GAAOmC,IAAIO,EAAAA,GACrBoB,KAAU9D,GAAO0C,IAAIP,EAAAA,GACrB4B,KAAU9D,GAAOqC,IAAI/xC,EAAAA,GACrByzC,KAAU/D,GAAO1vC,IAAI+xC,EAAAA,GAGrB2B,KAAM78H,GAAEV,EAAAA,GACRw9H,IAAM98H,GAAEV,KAAI,CAAA,GAEZy9H,KAAMvD,GAAG0B,IAAIC,IAAIC,EAAAA,GACjB4B,KAAMxD,GAAGrwC,IAAIuyC,IAAIC,EAAAA,GAEjBsB,KAAOrB,KAAKgB,KAAW,GACvBM,KAAO7B,KAAKsB,KAAU7C,GAASmD,IAAKrB,EAAAA,IAAO;AAM/CsB,YAAAA,MAFAA,MAFAA,KAAOA,KAAMH,KAAMjD,GADnBmD,KAAOA,KAAMD,KAAO,GACaA,EAAAA,IAAQ,KAE5BH,KAAM/C,GADnBmD,KAAOA,KAAMH,IAAO,GACaA,CAAAA,IAAQ,KAE5BR,KAAMxC,GADnBmD,KAAOA,KAAMZ,KAAO,GACaA,EAAAA,IAAQ;AAGzC,gBAAIc,KAAOT,KAAUF,KAAQ,GACzBY,KAAOX,KAAUF,KAAOzC,GAASqD,IAAKT,EAAAA,IAAY;AAEtDrB,YAAAA,KAAKD,IACLQ,KAAKD,IACLP,KAAKD,IACLQ,KAAKD,IACLP,KAAKD,IACLQ,KAAKvyC,IAEL+xC,KAAMD,KAAKiC,KAAMpD,GADjB3wC,KAAMsyC,KAAKwB,KAAO,GACYxB,EAAAA,IAAO,GACrCR,KAAKvlH,IACL+lH,KAAKD,IACL9lH,KAAKslH,IACLQ,KAAKD,IACLP,KAAKD,IACLQ,KAAKD,IAELP,KAAMmC,KAAME,KAAMtD,GADlBwB,KAAM2B,KAAME,KAAO,GACYF,EAAAA,IAAQ;UAAA;AAGzCz8J,eAAK+5J,MAAO/5J,KAAK+5J,MAAMe,KAAM,GAC7B96J,KAAKg6J,MAAOh6J,KAAKg6J,MAAMe,KAAM,GAC7B/6J,KAAKi6J,MAAOj6J,KAAKi6J,MAAMe,KAAM,GAC7Bh7J,KAAKk6J,MAAOl6J,KAAKk6J,MAAMe,KAAM,GAC7Bj7J,KAAKm6J,MAAOn6J,KAAKm6J,MAAMxxC,KAAM,GAC7B3oH,KAAKo6J,MAAOp6J,KAAKo6J,MAAMc,KAAM,GAC7Bl7J,KAAKq6J,MAAOr6J,KAAKq6J,MAAMc,KAAM,GAC7Bn7J,KAAKs6J,MAAOt6J,KAAKs6J,MAAMc,KAAM,GAE7Bp7J,KAAKu5J,MAAOv5J,KAAKu5J,MAAMgB,KAAKjB,GAASt5J,KAAK+5J,KAAKe,EAAAA,IAAO,GACtD96J,KAAKw5J,MAAOx5J,KAAKw5J,MAAMgB,KAAKlB,GAASt5J,KAAKg6J,KAAKe,EAAAA,IAAO,GACtD/6J,KAAKy5J,MAAOz5J,KAAKy5J,MAAMvkH,KAAKokH,GAASt5J,KAAKi6J,KAAKe,EAAAA,IAAO,GACtDh7J,KAAK05J,MAAO15J,KAAK05J,MAAMe,KAAKnB,GAASt5J,KAAKk6J,KAAKe,EAAAA,IAAO,GACtDj7J,KAAK25J,MAAO35J,KAAK25J,MAAMe,KAAKpB,GAASt5J,KAAKm6J,KAAKxxC,EAAAA,IAAO,GACtD3oH,KAAK45J,MAAO55J,KAAK45J,MAAMe,KAAKrB,GAASt5J,KAAKo6J,KAAKc,EAAAA,IAAO,GACtDl7J,KAAK65J,MAAO75J,KAAK65J,MAAMe,KAAKtB,GAASt5J,KAAKq6J,KAAKc,EAAAA,IAAO,GACtDn7J,KAAK85J,MAAO95J,KAAK85J,MAAMe,KAAKvB,GAASt5J,KAAKs6J,KAAKc,EAAAA,IAAO;QAAA,GAGxDrC,GAAOl+J,UAAUk6E,QAAQ,WAAA;AACvB,cAAI11C,KAAI1Q,GAAO4gB,YAAY,EAAA;AAE3B,mBAASstH,GAAct0J,IAAGrP,IAAG6E,IAAAA;AAC3BshC,YAAAA,GAAEwxC,aAAatoE,IAAGxK,EAAAA,GAClBshC,GAAEwxC,aAAa33E,IAAG6E,KAAS,CAAA;UAAA;AAY7B,iBATA8+J,GAAa78J,KAAKu5J,KAAKv5J,KAAK+5J,KAAK,CAAA,GACjC8C,GAAa78J,KAAKw5J,KAAKx5J,KAAKg6J,KAAK,CAAA,GACjC6C,GAAa78J,KAAKy5J,KAAKz5J,KAAKi6J,KAAK,EAAA,GACjC4C,GAAa78J,KAAK05J,KAAK15J,KAAKk6J,KAAK,EAAA,GACjC2C,GAAa78J,KAAK25J,KAAK35J,KAAKm6J,KAAK,EAAA,GACjC0C,GAAa78J,KAAK45J,KAAK55J,KAAKo6J,KAAK,EAAA,GACjCyC,GAAa78J,KAAK65J,KAAK75J,KAAKq6J,KAAK,EAAA,GACjCwC,GAAa78J,KAAK85J,KAAK95J,KAAKs6J,KAAK,EAAA,GAE1Bj7H;QAAAA,GAGTrmC,GAAOD,UAAUggK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnQjB//J,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAI2lE,KAAa3lE,GAAQ,EAAA,GACrB44B,KAAc54B,GAAQ,EAAA,GACtBo3F,KAA4Bp3F,GAAQ,GAAA,GACpCquJ,KAA8BruJ,GAAQ,GAAA,GACtCkjC,KAAWljC,GAAQ,EAAA,GAEnBmf,KAASyZ,GAAY,CAAA,EAAGzZ,MAAAA;AAG5B7gB,QAAAA,GAAOD,UAAUsnE,GAAW,WAAW,SAAA,KAAc,SAAiBhrC,IAAAA;AACpE,cAAIhyB,KAAOyuF,GAA0B7qE,EAAE2W,GAASvI,EAAAA,CAAAA,GAC5C9V,KAAwBwpI,GAA4B9hI;AACxD,iBAAO1H,KAAwB1F,GAAOxW,IAAMkc,GAAsB8V,EAAAA,CAAAA,IAAOhyB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZ3E,YAAIwgH,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,EAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFjB,YAAIvkF,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjBuhC,KAAgBvhC,GAAQ,EAAA,GACxBkiB,KAAiBliB,GAAQ,GAAA,GACzBw3B,KAAiBx3B,GAAQ,GAAA,GACzBoiK,KAA4BpiK,GAAQ,GAAA,GACpCH,KAASG,GAAQ,GAAA,GACjBi5B,KAA8Bj5B,GAAQ,EAAA,GACtCm3D,KAA2Bn3D,GAAQ,EAAA,GACnCqiK,KAAkBriK,GAAQ,GAAA,GAC1BsiK,KAAoBtiK,GAAQ,GAAA,GAC5BuS,KAAUvS,GAAQ,EAAA,GAClBuiK,KAA0BviK,GAAQ,GAAA,GAClCurF,KAAkBvrF,GAAQ,EAAA,GAC1BwiK,KAA0BxiK,GAAQ,GAAA,GAElCs1C,KAAgBi2C,GAAgB,aAAA,GAChCv/E,KAAQ2sB,GAAO3sB,OACfkJ,KAAO,CAAA,EAAGA,MAEVutJ,KAAkB,SAAwBxzI,IAAQgY,IAAAA;AACpD,cAEItD,IAFArK,KAAU/xB,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,QAC3Cm7J,KAAanhI,GAAcohI,IAAyBr9J,IAAAA;AAEpDkyB,UAAAA,KACFmM,KAAOnM,GAAe,IAAIxrB,MAAS02J,KAAaxgJ,GAAe5c,IAAAA,IAAQq9J,EAAAA,KAEvEh/H,KAAO++H,KAAap9J,OAAOzF,GAAO8iK,EAAAA,GAClC1pI,GAA4B0K,IAAM2R,IAAe,OAAA,IAAA,WAE/CrO,MAAuBhO,GAA4B0K,IAAM,WAAW4+H,GAAwBt7H,EAAAA,CAAAA,GAC5Fu7H,MAAyBvpI,GAA4B0K,IAAM,SAAS0+H,GAAgB1+H,GAAKrsB,OAAO,CAAA,CAAA,GACpGgrJ,GAAkB3+H,IAAMrK,EAAAA;AACxB,cAAIspI,KAAc,CAAA;AAGlB,iBAFArwJ,GAAQ0c,IAAQ/Z,IAAM,EAAEyuB,MAAMi/H,GAAAA,CAAAA,GAC9B3pI,GAA4B0K,IAAM,UAAUi/H,EAAAA,GACrCj/H;QAAAA;AAGLnM,QAAAA,KAAgBA,GAAeirI,IAAiBz2J,EAAAA,IAC/Co2J,GAA0BK,IAAiBz2J,IAAO,EAAElN,MAAAA,KAAM,CAAA;AAE/D,YAAI6jK,KAA0BF,GAAgBtiK,YAAYN,GAAOmM,GAAM7L,WAAW,EAChFW,aAAaq2D,GAAyB,GAAGsrG,EAAAA,GACzCx7H,SAASkwB,GAAyB,GAAG,EAAA,GACrCr4D,MAAMq4D,GAAyB,GAAG,gBAAA,EAAA,CAAA;AAKpCvyB,QAAAA,GAAE,EAAEjM,QAAAA,KAAQ,GAAQ,EAClBigG,gBAAgB6pC,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpDlB,YAAI9pI,KAAS34B,GAAQ,EAAA;AAErB1B,QAAAA,GAAOD,UAAUs6B,GAAOg0D;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFxB,YAsBI/4D,IAAUivI,IAAOC,IAAS7zG,IAtB1Bt2B,KAAS34B,GAAQ,EAAA,GACjBkP,KAAQlP,GAAQ,EAAA,GAChBD,KAAOC,GAAQ,EAAA,GACf64B,KAAa74B,GAAQ,EAAA,GACrBk5B,KAASl5B,GAAQ,EAAA,GACjBikC,KAAQjkC,GAAQ,EAAA,GAChB+lE,KAAO/lE,GAAQ,GAAA,GACfuuJ,KAAavuJ,GAAQ,GAAA,GACrBu+D,KAAgBv+D,GAAQ,GAAA,GACxB+iK,KAAS/iK,GAAQ,GAAA,GACjBgjK,KAAUhjK,GAAQ,GAAA,GAElBgP,KAAM2pB,GAAOm7F,cACbjjH,KAAQ8nB,GAAOsqI,gBACft4F,KAAUhyC,GAAOgyC,SACjBu4F,KAAWvqI,GAAOuqI,UAClBnoI,KAAWpC,GAAOoC,UAClBooI,KAAiBxqI,GAAOwqI,gBACxB75I,KAASqP,GAAOrP,QAChB85I,KAAU,GACVxrF,KAAQ,CAAA,GACRyrF,KAAqB;AAGzB,YAAA;AAEEzvI,UAAAA,KAAW+E,GAAO/E;QAAAA,SACX7nB,IAAP;QAAOA;AAET,YAAImsE,KAAM,SAAUphD,IAAAA;AAClB,cAAIoC,GAAO0+C,IAAO9gD,EAAAA,GAAK;AACrB,gBAAIjvB,KAAK+vE,GAAM9gD,EAAAA;AAAAA,mBACR8gD,GAAM9gD,EAAAA,GACbjvB,GAAAA;UAAAA;QAAAA,GAIAy7J,KAAS,SAAUxsI,IAAAA;AACrB,iBAAO,WAAA;AACLohD,YAAAA,GAAIphD,EAAAA;UAAAA;QAAAA,GAIJ6nB,KAAW,SAAUw7G,IAAAA;AACvBjiF,UAAAA,GAAIiiF,GAAM1lI,IAAAA;QAAAA,GAGR8uI,KAAO,SAAUzsI,IAAAA;AAEnB6B,UAAAA,GAAO6qI,YAAYl6I,GAAOwN,EAAAA,GAAKlD,GAASi7B,WAAW,OAAOj7B,GAASo7B,IAAAA;QAAAA;AAIhEhgD,QAAAA,MAAQ6B,OACX7B,KAAM,SAAsBnH,IAAAA;AAC1B,cAAIy3C,KAAOivG,GAAWhnJ,WAAW,CAAA;AAKjC,iBAJAqwE,GAAAA,EAAQwrF,EAAAA,IAAW,WAAA;AACjBl0J,YAAAA,GAAM2pB,GAAWhxB,EAAAA,IAAMA,KAAKkzB,GAASlzB,EAAAA,GAAAA,QAAgBy3C,EAAAA;UAAAA,GAEvDujH,GAAMO,EAAAA,GACCA;QAAAA,GAETvyJ,KAAQ,SAAwBimB,IAAAA;AAAAA,iBACvB8gD,GAAM9gD,EAAAA;QAAAA,GAGXksI,KACFH,KAAQ,SAAU/rI,IAAAA;AAChB6zC,UAAAA,GAAQd,SAASy5F,GAAOxsI,EAAAA,CAAAA;QAAAA,IAGjBosI,MAAYA,GAASO,MAC9BZ,KAAQ,SAAU/rI,IAAAA;AAChBosI,UAAAA,GAASO,IAAIH,GAAOxsI,EAAAA,CAAAA;QAAAA,IAIbqsI,MAAAA,CAAmBJ,MAE5B9zG,MADA6zG,KAAU,IAAIK,MACCO,OACfZ,GAAQa,MAAMC,YAAYjlH,IAC1BkkH,KAAQ9iK,GAAKkvD,GAAKu0G,aAAav0G,EAAAA,KAI/Bt2B,GAAOg6F,oBACP95F,GAAWF,GAAO6qI,WAAAA,KAAAA,CACjB7qI,GAAOkrI,iBACRjwI,MAAkC,YAAtBA,GAASi7B,YAAAA,CACpB5qB,GAAMs/H,EAAAA,KAEPV,KAAQU,IACR5qI,GAAOg6F,iBAAiB,WAAWh0E,IAAAA,KAAU,KAG7CkkH,KADSQ,MAAsB9kG,GAAc,QAAA,IACrC,SAAUznC,IAAAA;AAChBivC,UAAAA,GAAKiB,YAAYzI,GAAc,QAAA,CAAA,EAA6B,qBAAI,WAAA;AAC9DwH,YAAAA,GAAK0jD,YAAYnkH,IAAAA,GACjB4yE,GAAIphD,EAAAA;UAAAA;QAAAA,IAKA,SAAUA,IAAAA;AAChB2gD,qBAAW6rF,GAAOxsI,EAAAA,GAAK,CAAA;QAAA,IAK7Bx4B,GAAOD,UAAU,EACf2Q,KAAKA,IACL6B,OAAOA,GAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/GT,YAAIi9D,KAAY9tE,GAAQ,EAAA;AAExB1B,QAAAA,GAAOD,UAAU,qCAAqCwyB,KAAKi9C,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACF3D,YAAI5qC,KAAWljC,GAAQ,EAAA,GACnByrB,KAAWzrB,GAAQ,EAAA,GACnB8jK,KAAuB9jK,GAAQ,GAAA;AAEnC1B,QAAAA,GAAOD,UAAU,SAAUsvB,IAAGnY,IAAAA;AAE5B,cADA0tB,GAASvV,EAAAA,GACLlC,GAASjW,EAAAA,KAAMA,GAAE1U,gBAAgB6sB;AAAG,mBAAOnY;AAC/C,cAAIuuJ,KAAoBD,GAAqBv3I,EAAEoB,EAAAA;AAG/C,kBADA6Z,GADcu8H,GAAkBv8H,SACxBhyB,EAAAA,GACDuuJ,GAAkBz1E;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACT3B,YAAI1pD,KAAI5kC,GAAQ,EAAA,GACZtB,KAAOsB,GAAQ,EAAA,GACfytC,KAAYztC,GAAQ,EAAA,GACpBgkK,KAA6BhkK,GAAQ,GAAA,GACrCikK,KAAUjkK,GAAQ,GAAA,GAClBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,WAAWmP,MAAAA,KAAM,GAAQ,EACnCiqI,YAAY,SAAoB/9J,IAAAA;AAC9B,cAAIwnB,KAAIroB,MACJ6+J,KAAaH,GAA2Bz3I,EAAEoB,EAAAA,GAC1C6Z,KAAU28H,GAAW38H,SACrBokB,KAASu4G,GAAWv4G,QACpB7zB,KAASksI,GAAQ,WAAA;AACnB,gBAAIG,KAAiB32H,GAAU9f,GAAE6Z,OAAAA,GAC7B9uB,KAAS,CAAA,GACT0qJ,KAAU,GACV3yF,KAAY;AAChBl+D,YAAAA,GAAQpM,IAAU,SAAUmoF,IAAAA;AAC1B,kBAAIpqF,KAAQk/J,MACRiB,KAAAA;AACJ5zF,cAAAA,MACA/xE,GAAK0lK,IAAgBz2I,IAAG2gE,EAAAA,EAASrmD,KAAK,SAAUzoC,IAAAA;AAC1C6kK,gBAAAA,OACJA,KAAAA,MACA3rJ,GAAOxU,EAAAA,IAAS,EAAEilC,QAAQ,aAAa3pC,OAAOA,GAAAA,GAAAA,EAC5CixE,MAAajpC,GAAQ9uB,EAAAA;cAAAA,GACtB,SAAU3M,IAAAA;AACPs4J,gBAAAA,OACJA,KAAAA,MACA3rJ,GAAOxU,EAAAA,IAAS,EAAEilC,QAAQ,YAAYjC,QAAQn7B,GAAAA,GAAAA,EAC5C0kE,MAAajpC,GAAQ9uB,EAAAA;cAAAA,CAAAA;YAAAA,CAAAA,GAAAA,EAGzB+3D,MAAajpC,GAAQ9uB,EAAAA;UAAAA,CAAAA;AAGzB,iBADIqf,GAAOhsB,SAAO6/C,GAAO7zB,GAAOv4B,KAAAA,GACzB2kK,GAAW71E;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACvCtB,YAAI1pD,KAAI5kC,GAAQ,EAAA,GACZytC,KAAYztC,GAAQ,EAAA,GACpB2lE,KAAa3lE,GAAQ,EAAA,GACrBtB,KAAOsB,GAAQ,EAAA,GACfgkK,KAA6BhkK,GAAQ,GAAA,GACrCikK,KAAUjkK,GAAQ,GAAA,GAClBuS,KAAUvS,GAAQ,EAAA,GAElBskK,KAAoB;AAIxB1/H,QAAAA,GAAE,EAAE9Z,QAAQ,WAAWmP,MAAAA,KAAM,GAAQ,EACnCsqI,KAAK,SAAap+J,IAAAA;AAChB,cAAIwnB,KAAIroB,MACJszH,KAAiBjzD,GAAW,gBAAA,GAC5Bw+F,KAAaH,GAA2Bz3I,EAAEoB,EAAAA,GAC1C6Z,KAAU28H,GAAW38H,SACrBokB,KAASu4G,GAAWv4G,QACpB7zB,KAASksI,GAAQ,WAAA;AACnB,gBAAIG,KAAiB32H,GAAU9f,GAAE6Z,OAAAA,GAC7BvY,KAAS,CAAA,GACTm0I,KAAU,GACV3yF,KAAY,GACZ+zF,KAAAA;AACJjyJ,YAAAA,GAAQpM,IAAU,SAAUmoF,IAAAA;AAC1B,kBAAIpqF,KAAQk/J,MACRqB,KAAAA;AACJh0F,cAAAA,MACA/xE,GAAK0lK,IAAgBz2I,IAAG2gE,EAAAA,EAASrmD,KAAK,SAAUzoC,IAAAA;AAC1CilK,gBAAAA,MAAmBD,OACvBA,KAAAA,MACAh9H,GAAQhoC,EAAAA;cAAAA,GACP,SAAUuM,IAAAA;AACP04J,gBAAAA,MAAmBD,OACvBC,KAAAA,MACAx1I,GAAO/qB,EAAAA,IAAS6H,IAAAA,EACd0kE,MAAa7kB,GAAO,IAAIgtE,GAAe3pG,IAAQq1I,EAAAA,CAAAA;cAAAA,CAAAA;YAAAA,CAAAA,GAAAA,EAGnD7zF,MAAa7kB,GAAO,IAAIgtE,GAAe3pG,IAAQq1I,EAAAA,CAAAA;UAAAA,CAAAA;AAGnD,iBADIvsI,GAAOhsB,SAAO6/C,GAAO7zB,GAAOv4B,KAAAA,GACzB2kK,GAAW71E;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC5CtB,YAAIn+C,KAAcnwC,GAAQ,EAAA,GACtB44B,KAAc54B,GAAQ,EAAA,GACtBi9C,KAAaj9C,GAAQ,GAAA,GACrBguD,KAAkBhuD,GAAQ,EAAA,GAG1B6O,KAAuB+pB,GAFC54B,GAAQ,GAAA,EAA8CusB,CAAAA,GAG9ErX,KAAO0jB,GAAY,CAAA,EAAG1jB,IAAAA,GAGtBi4C,KAAe,SAAUu3G,IAAAA;AAC3B,iBAAO,SAAU/pI,IAAAA;AAOf,qBADI76B,IALAqkC,KAAI6pB,GAAgBrzB,EAAAA,GACpBhyB,KAAOs0C,GAAW9Y,EAAAA,GAClB1gC,KAASkF,GAAKlF,QACdlF,KAAI,GACJw5B,KAAS,CAAA,GAENt0B,KAASlF;AACduB,cAAAA,KAAM6I,GAAKpK,IAAAA,GACN4xC,MAAAA,CAAethC,GAAqBs1B,IAAGrkC,EAAAA,KAC1CoV,GAAK6iB,IAAQ2sI,KAAa,CAAC5kK,IAAKqkC,GAAErkC,EAAAA,CAAAA,IAAQqkC,GAAErkC,EAAAA,CAAAA;AAGhD,mBAAOi4B;UAAAA;QAAAA;AAIXz5B,QAAAA,GAAOD,UAAU,EAGf6M,SAASiiD,GAAAA,IAAa,GAGtBz0C,QAAQy0C,GAAAA,KAAa,EAAA;MAAA,GAAA,SAAA5sD,IAAAd,IAAAO,IAAA;AClCvB,YAAIghH,KAAYhhH,GAAQ,GAAA,GACpBiwH,KAAejwH,GAAQ,GAAA,GACvBswH,KAAatwH,GAAQ,GAAA,GACrBowH,KAAYpwH,GAAQ,GAAA,GAYpB2kK,KATmB1lK,OAAO4lB,wBASqB,SAAS5kB,IAAAA;AAE1D,mBADI83B,KAAS,CAAA,GACN93B;AACL+gH,YAAAA,GAAUjpF,IAAQu4F,GAAWrwH,EAAAA,CAAAA,GAC7BA,KAASgwH,GAAahwH,EAAAA;AAExB,iBAAO83B;QAAAA,IAN8Bq4F;AASvC9xH,QAAAA,GAAOD,UAAUsmK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACxBjB,YAAIhP,KAAiB31J,GAAQ,GAAA,GACzB2kK,KAAe3kK,GAAQ,GAAA,GACvB4kK,KAAS5kK,GAAQ,GAAA;AAcrB1B,QAAAA,GAAOD,UAJP,SAAsB4B,IAAAA;AACpB,iBAAO01J,GAAe11J,IAAQ2kK,IAAQD,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACHxCrmK,QAAAA,GAAOD,UAVP,SAA2B+E,IAAKE,IAAAA;AAAAA,WACnB,QAAPA,MAAeA,KAAMF,GAAIK,YAAQH,KAAMF,GAAIK;AAE/C,mBAASlF,KAAI,GAAGgiH,KAAO,IAAI9/G,MAAM6C,EAAAA,GAAM/E,KAAI+E,IAAK/E;AAC9CgiH,YAAAA,GAAKhiH,EAAAA,IAAK6E,GAAI7E,EAAAA;AAGhB,iBAAOgiH;QAAAA,GAITjiH,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAA;AAAA,SCXxE,SAAUy4B,IAAAA;AAAAA,WAEO,SAAW75B,IAAAA;AAE1B,gBAAIwmK,KACY,qBAAqB3sI,IADjC2sI,KAEQ,YAAY3sI,MAAQ,cAAc54B,QAF1CulK,KAIA,gBAAgB3sI,MAChB,UAAUA,MACV,WAAA;AACE,kBAAA;AAEE,uBADA,IAAIotC,QAAAA;cACG,SACA/kE,IAAP;AACA,uBAAA;cAAO;YAAA,EALX,GANAskK,KAcQ,cAAc3sI,IAdtB2sI,KAeW,iBAAiB3sI;AAOhC,gBAAI2sI;AACF,kBAAIC,KAAc,CAChB,sBACA,uBACA,8BACA,uBACA,wBACA,uBACA,wBACA,yBACA,uBAAA,GAGEC,KACFp2F,YAAYS,UACZ,SAAS5gE,IAAAA;AACP,uBAAOA,MAAOs2J,GAAY53J,QAAQjO,OAAOkB,UAAU6G,SAAStI,KAAK8P,EAAAA,CAAAA,IAAAA;cAAS;AAIhF,qBAASw2J,GAAclmK,IAAAA;AAIrB,kBAHoB,YAAA,OAATA,OACTA,KAAOwqB,OAAOxqB,EAAAA,IAEZ,4BAA4B+xB,KAAK/xB,EAAAA;AACnC,sBAAM,IAAIwK,UAAU,wCAAA;AAEtB,qBAAOxK,GAAKsyB,YAAAA;YAAAA;AAGd,qBAAS6zI,GAAezlK,IAAAA;AAItB,qBAHqB,YAAA,OAAVA,OACTA,KAAQ8pB,OAAO9pB,EAAAA,IAEVA;YAAAA;AAIT,qBAAS0lK,GAAYlzI,IAAAA;AACnB,kBAAI/sB,KAAW,EACbI,MAAM,WAAA;AACJ,oBAAI7F,KAAQwyB,GAAM9d,MAAAA;AAClB,uBAAO,EAACtO,MAAAA,WAAMpG,IAAqBA,OAAOA,GAAAA;cAAAA,EAAAA;AAU9C,qBANIqlK,OACF5/J,GAAS3F,OAAO2F,QAAAA,IAAY,WAAA;AAC1B,uBAAOA;cAAAA,IAIJA;YAAAA;AAGT,qBAASk3H,GAAQjnE,IAAAA;AACf5vD,mBAAK8E,MAAM,CAAA,GAEP8qD,cAAmBinE,KACrBjnE,GAAQrlD,QAAQ,SAASrQ,IAAOV,IAAAA;AAC9BwG,qBAAKi4H,OAAOz+H,IAAMU,EAAAA;cAAAA,GACjB8F,IAAAA,IACM7E,MAAM4I,QAAQ6rD,EAAAA,IACvBA,GAAQrlD,QAAQ,SAAS4zH,IAAAA;AACvBn+H,qBAAKi4H,OAAOkG,GAAO,CAAA,GAAIA,GAAO,CAAA,CAAA;cAAA,GAC7Bn+H,IAAAA,IACM4vD,MACTj2D,OAAOm2F,oBAAoBlgC,EAAAA,EAASrlD,QAAQ,SAAS/Q,IAAAA;AACnDwG,qBAAKi4H,OAAOz+H,IAAMo2D,GAAQp2D,EAAAA,CAAAA;cAAAA,GACzBwG,IAAAA;YAAAA;AAgEP,qBAAS6/J,GAAS5vG,IAAAA;AAChB,kBAAIA,GAAK6vG;AACP,uBAAOz4E,QAAQ/gC,OAAO,IAAItiD,UAAU,cAAA,CAAA;AAEtCisD,cAAAA,GAAK6vG,WAAAA;YAAW;AAGlB,qBAASC,GAAgBC,IAAAA;AACvB,qBAAO,IAAI34E,QAAQ,SAASnlD,IAASokB,IAAAA;AACnC05G,gBAAAA,GAAOzsE,SAAS,WAAA;AACdrxD,kBAAAA,GAAQ89H,GAAOvtI,MAAAA;gBAAAA,GAEjButI,GAAOxsE,UAAU,WAAA;AACfltC,kBAAAA,GAAO05G,GAAOv5J,KAAAA;gBAAAA;cAAAA,CAAAA;YAAAA;AAKpB,qBAASw5J,GAAsBlzB,IAAAA;AAC7B,kBAAIizB,KAAS,IAAIE,cACbl3E,KAAU+2E,GAAgBC,EAAAA;AAE9B,qBADAA,GAAOG,kBAAkBpzB,EAAAA,GAClB/jD;YAAAA;AAoBT,qBAASo3E,GAAYzwH,IAAAA;AACnB,kBAAIA,GAAIv0C;AACN,uBAAOu0C,GAAIv0C,MAAM,CAAA;AAEjB,kBAAIilK,KAAO,IAAI/oH,WAAW3H,GAAI45B,UAAAA;AAE9B,qBADA82F,GAAK32J,IAAI,IAAI4tC,WAAW3H,EAAAA,CAAAA,GACjB0wH,GAAKrxH;YAAAA;AAIhB,qBAASsxH,KAAAA;AA0FP,qBAzFAtgK,KAAK8/J,WAAAA,OAEL9/J,KAAKugK,YAAY,SAAStwG,IAAAA;AAhM5B,oBAAoB/mD;AAiMhBlJ,qBAAKwgK,YAAYvwG,IACZA,KAEsB,YAAA,OAATA,KAChBjwD,KAAKygK,YAAYxwG,KACRsvG,MAAgBv/F,KAAKnlE,UAAUohC,cAAcg0B,EAAAA,IACtDjwD,KAAK0gK,YAAYzwG,KACRsvG,MAAoBt/F,SAASplE,UAAUohC,cAAcg0B,EAAAA,IAC9DjwD,KAAK2gK,gBAAgB1wG,KACZsvG,MAAwBpnC,gBAAgBt9H,UAAUohC,cAAcg0B,EAAAA,IACzEjwD,KAAKygK,YAAYxwG,GAAKvuD,SAAAA,IACb69J,MAAuBA,QA5MlBr2J,KA4M6C+mD,OA3MjDm3B,SAASvsF,UAAUohC,cAAc/yB,EAAAA,MA4M3ClJ,KAAK4gK,mBAAmBR,GAAYnwG,GAAKjhB,MAAAA,GAEzChvC,KAAKwgK,YAAY,IAAIxgG,KAAK,CAAChgE,KAAK4gK,gBAAAA,CAAAA,KACvBrB,OAAwBl2F,YAAYxuE,UAAUohC,cAAcg0B,EAAAA,KAASwvG,GAAkBxvG,EAAAA,KAChGjwD,KAAK4gK,mBAAmBR,GAAYnwG,EAAAA,IAEpCjwD,KAAKygK,YAAYxwG,KAAOt2D,OAAOkB,UAAU6G,SAAStI,KAAK62D,EAAAA,IAhBvDjwD,KAAKygK,YAAY,IAmBdzgK,KAAK4vD,QAAQ91D,IAAI,cAAA,MACA,YAAA,OAATm2D,KACTjwD,KAAK4vD,QAAQlmD,IAAI,gBAAgB,0BAAA,IACxB1J,KAAK0gK,aAAa1gK,KAAK0gK,UAAUxgK,OAC1CF,KAAK4vD,QAAQlmD,IAAI,gBAAgB1J,KAAK0gK,UAAUxgK,IAAAA,IACvCq/J,MAAwBpnC,gBAAgBt9H,UAAUohC,cAAcg0B,EAAAA,KACzEjwD,KAAK4vD,QAAQlmD,IAAI,gBAAgB,iDAAA;cAAA,GAKnC61J,OACFv/J,KAAK+sI,OAAO,WAAA;AACV,oBAAI8zB,KAAWhB,GAAS7/J,IAAAA;AACxB,oBAAI6gK;AACF,yBAAOA;AAGT,oBAAI7gK,KAAK0gK;AACP,yBAAOr5E,QAAQnlD,QAAQliC,KAAK0gK,SAAAA;AACvB,oBAAI1gK,KAAK4gK;AACd,yBAAOv5E,QAAQnlD,QAAQ,IAAI89B,KAAK,CAAChgE,KAAK4gK,gBAAAA,CAAAA,CAAAA;AACjC,oBAAI5gK,KAAK2gK;AACd,wBAAM,IAAIj6J,MAAM,sCAAA;AAEhB,uBAAO2gF,QAAQnlD,QAAQ,IAAI89B,KAAK,CAAChgE,KAAKygK,SAAAA,CAAAA,CAAAA;cAAAA,GAI1CzgK,KAAK0qH,cAAc,WAAA;AACjB,uBAAI1qH,KAAK4gK,mBACAf,GAAS7/J,IAAAA,KAASqnF,QAAQnlD,QAAQliC,KAAK4gK,gBAAAA,IAEvC5gK,KAAK+sI,KAAAA,EAAOpqG,KAAKs9H,EAAAA;cAAAA,IAK9BjgK,KAAKgkC,OAAO,WAAA;AACV,oBA3FoB+oG,IAClBizB,IACAh3E,IAyFE63E,KAAWhB,GAAS7/J,IAAAA;AACxB,oBAAI6gK;AACF,yBAAOA;AAGT,oBAAI7gK,KAAK0gK;AACP,yBAjGkB3zB,KAiGI/sI,KAAK0gK,WAhG3BV,KAAS,IAAIE,cACbl3E,KAAU+2E,GAAgBC,EAAAA,GAC9BA,GAAOc,WAAW/zB,EAAAA,GACX/jD;AA8FE,oBAAIhpF,KAAK4gK;AACd,yBAAOv5E,QAAQnlD,QA5FrB,SAA+ByN,IAAAA;AAI7B,6BAHI0wH,KAAO,IAAI/oH,WAAW3H,EAAAA,GACtBoxH,KAAQ,IAAI5lK,MAAMklK,GAAKliK,MAAAA,GAElBlF,KAAI,GAAGA,KAAIonK,GAAKliK,QAAQlF;AAC/B8nK,sBAAAA,GAAM9nK,EAAAA,IAAK+qB,OAAO+0B,aAAasnH,GAAKpnK,EAAAA,CAAAA;AAEtC,2BAAO8nK,GAAM9gJ,KAAK,EAAA;kBAAA,EAqF+BjgB,KAAK4gK,gBAAAA,CAAAA;AAC7C,oBAAI5gK,KAAK2gK;AACd,wBAAM,IAAIj6J,MAAM,sCAAA;AAEhB,uBAAO2gF,QAAQnlD,QAAQliC,KAAKygK,SAAAA;cAAAA,GAI5BlB,OACFv/J,KAAKwuI,WAAW,WAAA;AACd,uBAAOxuI,KAAKgkC,KAAAA,EAAOrB,KAAKq+H,EAAAA;cAAAA,IAI5BhhK,KAAKyE,OAAO,WAAA;AACV,uBAAOzE,KAAKgkC,KAAAA,EAAOrB,KAAK7e,KAAKkH,KAAAA;cAAAA,GAGxBhrB;YAAAA;AA1MT62H,YAAAA,GAAQh8H,UAAUo9H,SAAS,SAASz+H,IAAMU,IAAAA;AACxCV,cAAAA,KAAOkmK,GAAclmK,EAAAA,GACrBU,KAAQylK,GAAezlK,EAAAA;AACvB,kBAAI+mK,KAAWjhK,KAAK8E,IAAItL,EAAAA;AACxBwG,mBAAK8E,IAAItL,EAAAA,IAAQynK,KAAWA,KAAW,OAAO/mK,KAAQA;YAAAA,GAGxD28H,GAAQh8H,UAAkB,SAAI,SAASrB,IAAAA;AAAAA,qBAC9BwG,KAAK8E,IAAI46J,GAAclmK,EAAAA,CAAAA;YAAAA,GAGhCq9H,GAAQh8H,UAAUf,MAAM,SAASN,IAAAA;AAE/B,qBADAA,KAAOkmK,GAAclmK,EAAAA,GACdwG,KAAKkG,IAAI1M,EAAAA,IAAQwG,KAAK8E,IAAItL,EAAAA,IAAQ;YAAA,GAG3Cq9H,GAAQh8H,UAAUqL,MAAM,SAAS1M,IAAAA;AAC/B,qBAAOwG,KAAK8E,IAAIhK,eAAe4kK,GAAclmK,EAAAA,CAAAA;YAAAA,GAG/Cq9H,GAAQh8H,UAAU6O,MAAM,SAASlQ,IAAMU,IAAAA;AACrC8F,mBAAK8E,IAAI46J,GAAclmK,EAAAA,CAAAA,IAASmmK,GAAezlK,EAAAA;YAAAA,GAGjD28H,GAAQh8H,UAAU0P,UAAU,SAASixE,IAAU2gC,IAAAA;AAC7C,uBAAS3iH,MAAQwG,KAAK8E;AAChB9E,qBAAK8E,IAAIhK,eAAetB,EAAAA,KAC1BgiF,GAASpiF,KAAK+iH,IAASn8G,KAAK8E,IAAItL,EAAAA,GAAOA,IAAMwG,IAAAA;YAAAA,GAKnD62H,GAAQh8H,UAAUwI,OAAO,WAAA;AACvB,kBAAIqpB,KAAQ,CAAA;AAIZ,qBAHA1sB,KAAKuK,QAAQ,SAASrQ,IAAOV,IAAAA;AAC3BkzB,gBAAAA,GAAM9c,KAAKpW,EAAAA;cAAAA,CAAAA,GAENomK,GAAYlzI,EAAAA;YAAAA,GAGrBmqG,GAAQh8H,UAAUuY,SAAS,WAAA;AACzB,kBAAIsZ,KAAQ,CAAA;AAIZ,qBAHA1sB,KAAKuK,QAAQ,SAASrQ,IAAAA;AACpBwyB,gBAAAA,GAAM9c,KAAK1V,EAAAA;cAAAA,CAAAA,GAEN0lK,GAAYlzI,EAAAA;YAAAA,GAGrBmqG,GAAQh8H,UAAU+K,UAAU,WAAA;AAC1B,kBAAI8mB,KAAQ,CAAA;AAIZ,qBAHA1sB,KAAKuK,QAAQ,SAASrQ,IAAOV,IAAAA;AAC3BkzB,gBAAAA,GAAM9c,KAAK,CAACpW,IAAMU,EAAAA,CAAAA;cAAAA,CAAAA,GAEb0lK,GAAYlzI,EAAAA;YAAAA,GAGjB6yI,OACF1oC,GAAQh8H,UAAUb,OAAO2F,QAAAA,IAAYk3H,GAAQh8H,UAAU+K;AAqJzD,gBAAIyZ,KAAU,CAAC,UAAU,OAAO,QAAQ,WAAW,QAAQ,KAAA;AAO3D,qBAASm5G,GAAQ5nG,IAAOoD,IAAAA;AAEtB,kBAPuBhF,IACnBkyI,IAMAjxG,MADJj8B,KAAUA,MAAW,CAAA,GACFi8B;AAEnB,kBAAIr/B,cAAiB4nG,IAAS;AAC5B,oBAAI5nG,GAAMkvI;AACR,wBAAM,IAAI97J,UAAU,cAAA;AAEtBhE,qBAAKyvB,MAAMmB,GAAMnB,KACjBzvB,KAAKu/H,cAAc3uG,GAAM2uG,aACpBvrG,GAAQ47B,YACX5vD,KAAK4vD,UAAU,IAAIinE,GAAQjmG,GAAMg/B,OAAAA,IAEnC5vD,KAAKgvB,SAAS4B,GAAM5B,QACpBhvB,KAAK5F,OAAOw2B,GAAMx2B,MAClB4F,KAAKwhJ,SAAS5wH,GAAM4wH,QACfvxF,MAA2B,QAAnBr/B,GAAM4vI,cACjBvwG,KAAOr/B,GAAM4vI,WACb5vI,GAAMkvI,WAAAA;cAAW;AAGnB9/J,qBAAKyvB,MAAMzL,OAAO4M,EAAAA;AAYpB,kBATA5wB,KAAKu/H,cAAcvrG,GAAQurG,eAAev/H,KAAKu/H,eAAe,eAAA,CAC1DvrG,GAAQ47B,WAAY5vD,KAAK4vD,YAC3B5vD,KAAK4vD,UAAU,IAAIinE,GAAQ7iG,GAAQ47B,OAAAA,IAErC5vD,KAAKgvB,UAjCkBA,KAiCOgF,GAAQhF,UAAUhvB,KAAKgvB,UAAU,OAhC3DkyI,KAAUlyI,GAAOud,YAAAA,GACdltB,GAAQzX,QAAQs5J,EAAAA,IAAAA,KAAgBA,KAAUlyI,KAgCjDhvB,KAAK5F,OAAO45B,GAAQ55B,QAAQ4F,KAAK5F,QAAQ,MACzC4F,KAAKwhJ,SAASxtH,GAAQwtH,UAAUxhJ,KAAKwhJ,QACrCxhJ,KAAKmhK,WAAW,OAEK,UAAhBnhK,KAAKgvB,UAAoC,WAAhBhvB,KAAKgvB,WAAsBihC;AACvD,sBAAM,IAAIjsD,UAAU,2CAAA;AAEtBhE,mBAAKugK,UAAUtwG,EAAAA;YAAAA;AAOjB,qBAAS+wG,GAAO/wG,IAAAA;AACd,kBAAIT,KAAO,IAAIyQ;AAYf,qBAXAhQ,GACG5E,KAAAA,EACA58B,MAAM,GAAA,EACNlkB,QAAQ,SAAS46D,IAAAA;AAChB,oBAAIA,IAAO;AACT,sBAAI12C,KAAQ02C,GAAM12C,MAAM,GAAA,GACpBj1B,KAAOi1B,GAAM7f,MAAAA,EAAQua,QAAQ,OAAO,GAAA,GACpCjvB,KAAQu0B,GAAMxO,KAAK,GAAA,EAAKkJ,QAAQ,OAAO,GAAA;AAC3CqmC,kBAAAA,GAAKyoE,OAAOnvG,mBAAmBtvB,EAAAA,GAAOsvB,mBAAmB5uB,EAAAA,CAAAA;gBAAAA;cAAAA,CAAAA,GAGxDs1D;YAAAA;AAqBT,qBAAS4xG,GAASC,IAAUrtI,IAAAA;AACrBA,cAAAA,OACHA,KAAU,CAAA,IAGZh0B,KAAKE,OAAO,WACZF,KAAK6jC,SAAAA,WAAS7P,GAAQ6P,SAAuB,MAAM7P,GAAQ6P,QAC3D7jC,KAAKixD,KAAKjxD,KAAK6jC,UAAU,OAAO7jC,KAAK6jC,SAAS,KAC9C7jC,KAAK8jC,aAAa,gBAAgB9P,KAAUA,GAAQ8P,aAAa,MACjE9jC,KAAK4vD,UAAU,IAAIinE,GAAQ7iG,GAAQ47B,OAAAA,GACnC5vD,KAAKyvB,MAAMuE,GAAQvE,OAAO,IAC1BzvB,KAAKugK,UAAUc,EAAAA;YAAAA;AAjDjB7oC,YAAAA,GAAQ39H,UAAUqoE,QAAQ,WAAA;AACxB,qBAAO,IAAIs1D,GAAQx4H,MAAM,EAACiwD,MAAMjwD,KAAKwgK,UAAAA,CAAAA;YAAAA,GAmCvCF,GAAKlnK,KAAKo/H,GAAQ39H,SAAAA,GAgBlBylK,GAAKlnK,KAAKgoK,GAASvmK,SAAAA,GAEnBumK,GAASvmK,UAAUqoE,QAAQ,WAAA;AACzB,qBAAO,IAAIk+F,GAASphK,KAAKwgK,WAAW,EAClC38H,QAAQ7jC,KAAK6jC,QACbC,YAAY9jC,KAAK8jC,YACjB8rB,SAAS,IAAIinE,GAAQ72H,KAAK4vD,OAAAA,GAC1BngC,KAAKzvB,KAAKyvB,IAAAA,CAAAA;YAAAA,GAId2xI,GAAS36J,QAAQ,WAAA;AACf,kBAAIsqD,KAAW,IAAIqwG,GAAS,MAAM,EAACv9H,QAAQ,GAAGC,YAAY,GAAA,CAAA;AAE1D,qBADAitB,GAAS7wD,OAAO,SACT6wD;YAAAA;AAGT,gBAAIuwG,KAAmB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAA;AAE5CF,YAAAA,GAASG,WAAW,SAAS9xI,IAAKoU,IAAAA;AAChC,kBAAA,OAAIy9H,GAAiB15J,QAAQi8B,EAAAA;AAC3B,sBAAM,IAAIqhC,WAAW,qBAAA;AAGvB,qBAAO,IAAIk8F,GAAS,MAAM,EAACv9H,QAAQA,IAAQ+rB,SAAS,EAACthC,UAAUmB,GAAAA,EAAAA,CAAAA;YAAAA,GAGjE12B,GAAQyoK,eAAe5uI,GAAK4uI;AAC5B,gBAAA;AACE,kBAAIzoK,GAAQyoK;YAAAA,SACLp2I,IAAP;AACAryB,cAAAA,GAAQyoK,eAAe,SAAS7/H,IAASnoC,IAAAA;AACvCwG,qBAAK2hC,UAAUA,IACf3hC,KAAKxG,OAAOA;AACZ,oBAAIiN,KAAQC,MAAMi7B,EAAAA;AAClB3hC,qBAAKgS,QAAQvL,GAAMuL;cAAAA,GAErBjZ,GAAQyoK,aAAa3mK,YAAYlB,OAAOY,OAAOmM,MAAM7L,SAAAA,GACrD9B,GAAQyoK,aAAa3mK,UAAUW,cAAczC,GAAQyoK;YAAAA;AAGvD,qBAASv/H,GAAMrR,IAAO86F,IAAAA;AACpB,qBAAO,IAAIrkC,QAAQ,SAASnlD,IAASokB,IAAAA;AACnC,oBAAIkjC,KAAU,IAAIgvC,GAAQ5nG,IAAO86F,EAAAA;AAEjC,oBAAIliC,GAAQg4D,UAAUh4D,GAAQg4D,OAAOigB;AACnC,yBAAOn7G,GAAO,IAAIvtD,GAAQyoK,aAAa,WAAW,YAAA,CAAA;AAGpD,oBAAIE,KAAM,IAAIC;AAEd,yBAASC,KAAAA;AACPF,kBAAAA,GAAIG,MAAAA;gBAAAA;AAGNH,gBAAAA,GAAInuE,SAAS,WAAA;AACX,sBAxFgBuuE,IAChBlyG,IAuFI57B,KAAU,EACZ6P,QAAQ69H,GAAI79H,QACZC,YAAY49H,GAAI59H,YAChB8rB,UA3FckyG,KA2FQJ,GAAIK,sBAAAA,KAA2B,IA1FvDnyG,KAAU,IAAIinE,MAGQirC,GAAW34I,QAAQ,gBAAgB,GAAA,EACzCsF,MAAM,OAAA,EAASlkB,QAAQ,SAASs3B,IAAAA;AAClD,wBAAIyzF,KAAQzzF,GAAKpT,MAAM,GAAA,GACnBj0B,KAAM86H,GAAM1mH,MAAAA,EAAQy8C,KAAAA;AACxB,wBAAI7wD,IAAK;AACP,0BAAIN,KAAQo7H,GAAMr1G,KAAK,GAAA,EAAKorC,KAAAA;AAC5BuE,sBAAAA,GAAQqoE,OAAOz9H,IAAKN,EAAAA;oBAAAA;kBAAAA,CAAAA,GAGjB01D,IAAAA;AAgFH57B,kBAAAA,GAAQvE,MAAM,iBAAiBiyI,KAAMA,GAAIM,cAAchuI,GAAQ47B,QAAQ91D,IAAI,eAAA;AAC3E,sBAAIm2D,KAAO,cAAcyxG,KAAMA,GAAI3wG,WAAW2wG,GAAIO;AAClD//H,kBAAAA,GAAQ,IAAIk/H,GAASnxG,IAAMj8B,EAAAA,CAAAA;gBAAAA,GAG7B0tI,GAAIluE,UAAU,WAAA;AACZltC,kBAAAA,GAAO,IAAItiD,UAAU,wBAAA,CAAA;gBAAA,GAGvB09J,GAAIQ,YAAY,WAAA;AACd57G,kBAAAA,GAAO,IAAItiD,UAAU,wBAAA,CAAA;gBAAA,GAGvB09J,GAAIS,UAAU,WAAA;AACZ77G,kBAAAA,GAAO,IAAIvtD,GAAQyoK,aAAa,WAAW,YAAA,CAAA;gBAAA,GAG7CE,GAAIloI,KAAKgwD,GAAQx6D,QAAQw6D,GAAQ/5D,KAAAA,IAAK,GAEV,cAAxB+5D,GAAQ+1C,cACVmiC,GAAI/jC,kBAAAA,OAC6B,WAAxBn0C,GAAQ+1C,gBACjBmiC,GAAI/jC,kBAAAA,QAGF,kBAAkB+jC,MAAOnC,OAC3BmC,GAAIU,eAAe,SAGrB54E,GAAQ55B,QAAQrlD,QAAQ,SAASrQ,IAAOV,IAAAA;AACtCkoK,kBAAAA,GAAIW,iBAAiB7oK,IAAMU,EAAAA;gBAAAA,CAAAA,GAGzBsvF,GAAQg4D,WACVh4D,GAAQg4D,OAAOn0B,iBAAiB,SAASu0C,EAAAA,GAEzCF,GAAIY,qBAAqB,WAAA;AAEA,wBAAnBZ,GAAIa,cACN/4E,GAAQg4D,OAAOj0B,oBAAoB,SAASq0C,EAAAA;gBAAAA,IAKlDF,GAAIc,KAAAA,WAAYh5E,GAAQg3E,YAA4B,OAAOh3E,GAAQg3E,SAAAA;cAAAA,CAAAA;YAAAA;AAIvEv+H,YAAAA,GAAMwgI,WAAAA,MAED7vI,GAAKqP,UACRrP,GAAKqP,QAAQA,IACbrP,GAAKikG,UAAUA,IACfjkG,GAAK4lG,UAAUA,IACf5lG,GAAKwuI,WAAWA,KAGlBroK,GAAQ89H,UAAUA,IAClB99H,GAAQy/H,UAAUA,IAClBz/H,GAAQqoK,WAAWA,IACnBroK,GAAQkpC,QAAQA,IAEhBtoC,OAAOC,eAAeb,IAAS,cAAc,EAAEmB,OAAAA,KAAO,CAAA;UAAA,EAIrD,CAAA,CAAA;QAAA,EACgB,eAAA,OAAT04B,OAAuBA,OAAO5yB,IAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACjhBxC,YAAI+6G,KAAUrgH,GAAQ,GAAA,GAElBwL,KAAMvM,OAAOkB,UAAUC,gBACvBiJ,KAAU5I,MAAM4I,SAEhB2+J,KAAY,WAAA;AAEZ,mBADIx/J,KAAQ,CAAA,GACHjK,KAAI,GAAGA,KAAI,KAAA,EAAOA;AACvBiK,YAAAA,GAAM0M,KAAK,QAAQ3W,KAAI,KAAK,MAAM,MAAMA,GAAEyI,SAAS,EAAA,GAAK6qC,YAAAA,CAAAA;AAG5D,iBAAOrpC;QAAAA,EANI,GA4BXy/J,KAAgB,SAAuB1uI,IAAQD,IAAAA;AAE/C,mBADI9qB,KAAM8qB,MAAWA,GAAQ4uI,eAAejpK,uBAAOY,OAAO,IAAA,IAAQ,CAAA,GACzDtB,KAAI,GAAGA,KAAIg7B,GAAO91B,QAAAA,EAAUlF;AAAAA,uBACtBg7B,GAAOh7B,EAAAA,MACdiQ,GAAIjQ,EAAAA,IAAKg7B,GAAOh7B,EAAAA;AAIxB,iBAAOiQ;QAAAA;AAqMXlQ,QAAAA,GAAOD,UAAU,EACb4pK,eAAeA,IACf3qI,QA3IS,SAA4BxS,IAAQyO,IAAAA;AAC7C,iBAAOt6B,OAAO0J,KAAK4wB,EAAAA,EAAQha,OAAO,SAAU6pH,IAAKtpI,IAAAA;AAE7C,mBADAspI,GAAItpI,EAAAA,IAAOy5B,GAAOz5B,EAAAA,GACXspI;UAAAA,GACRt+G,EAAAA;QAAAA,GAwIHq9I,SAlBU,SAAiBr9J,IAAGC,IAAAA;AAC9B,iBAAO,CAAA,EAAGoU,OAAOrU,IAAGC,EAAAA;QAAAA,GAkBpB0rC,SAvDU,SAAiBj3C,IAAAA;AAI3B,mBAHIo4E,KAAQ,CAAC,EAAEppE,KAAK,EAAExP,GAAGQ,GAAAA,GAASw/B,MAAM,IAAA,CAAA,GACpCuoE,KAAO,CAAA,GAEFhpG,KAAI,GAAGA,KAAIq5E,GAAMn0E,QAAAA,EAAUlF;AAKhC,qBAJI0yB,KAAO2mD,GAAMr5E,EAAAA,GACbiQ,KAAMyiB,GAAKziB,IAAIyiB,GAAK+N,IAAAA,GAEpBr2B,KAAO1J,OAAO0J,KAAK6F,EAAAA,GACd41B,KAAI,GAAGA,KAAIz7B,GAAKlF,QAAAA,EAAU2gC,IAAG;AAClC,kBAAItkC,KAAM6I,GAAKy7B,EAAAA,GACXr3B,KAAMyB,GAAI1O,EAAAA;AACK,0BAAA,OAARiN,MAA4B,SAARA,MAAAA,OAAgBw6F,GAAKr6F,QAAQH,EAAAA,MACxD6qE,GAAM1iE,KAAK,EAAE1G,KAAKA,IAAKwwB,MAAMl/B,GAAAA,CAAAA,GAC7BynG,GAAKryF,KAAKnI,EAAAA;YAAAA;AAOtB,iBAlMe,SAAsB6qE,IAAAA;AACrC,mBAAOA,GAAMn0E,SAAS,KAAG;AACrB,kBAAIwtB,KAAO2mD,GAAMphE,IAAAA,GACbhI,KAAMyiB,GAAKziB,IAAIyiB,GAAK+N,IAAAA;AAExB,kBAAI31B,GAAQmF,EAAAA,GAAM;AAGd,yBAFI45J,KAAY,CAAA,GAEPhkI,KAAI,GAAGA,KAAI51B,GAAI/K,QAAAA,EAAU2gC;AAAAA,6BACnB51B,GAAI41B,EAAAA,KACXgkI,GAAUlzJ,KAAK1G,GAAI41B,EAAAA,CAAAA;AAI3BnT,gBAAAA,GAAKziB,IAAIyiB,GAAK+N,IAAAA,IAAQopI;cAAAA;YAAAA;UAAAA,EAkLjBxwF,EAAAA,GAENp4E;QAAAA,GAmCP8mK,QAvIS,SAAU93I,IAAKopI,IAASyQ,IAAAA;AACjC,cAAIC,KAAiB95I,GAAIC,QAAQ,OAAO,GAAA;AACxC,cAAgB,iBAAZ45I;AAEA,mBAAOC,GAAe75I,QAAQ,kBAAkBwuC,QAAAA;AAGpD,cAAA;AACI,mBAAO7uC,mBAAmBk6I,EAAAA;UAAAA,SACrB/nK,IAAP;AACE,mBAAO+nK;UAAAA;QAAAA,GA8HXh5B,QA1HS,SAAgB9gH,IAAK+5I,IAAgBF,IAASnwH,IAAM5oB,IAAAA;AAG7D,cAAmB,MAAfd,GAAI/qB;AACJ,mBAAO+qB;AAGX,cAAIrgB,KAASqgB;AAOb,cANmB,YAAA,OAARA,KACPrgB,KAAS7O,OAAOa,UAAU6G,SAAStI,KAAK8vB,EAAAA,IAClB,YAAA,OAARA,OACdrgB,KAASmb,OAAOkF,EAAAA,IAGJ,iBAAZ65I;AACA,mBAAO12G,OAAOxjD,EAAAA,EAAQsgB,QAAQ,mBAAmB,SAAU+5I,IAAAA;AACvD,qBAAO,WAAW7tH,SAAS6tH,GAAG9nK,MAAM,CAAA,GAAI,EAAA,IAAM;YAAA,CAAA;AAKtD,mBADIyyE,KAAM,IACD50E,KAAI,GAAGA,KAAI4P,GAAO1K,QAAAA,EAAUlF,IAAG;AACpC,gBAAIK,KAAIuP,GAAOI,WAAWhQ,EAAAA;AAGhB,mBAANK,MACS,OAANA,MACM,OAANA,MACM,QAANA,MACCA,MAAK,MAAQA,MAAK,MAClBA,MAAK,MAAQA,MAAK,MAClBA,MAAK,MAAQA,MAAK,OAClB0wB,OAAW+wF,GAAQgb,YAAkB,OAANz8H,MAAoB,OAANA,MAEjDu0E,MAAOhlE,GAAOsuC,OAAOl+C,EAAAA,IAIrBK,KAAI,MACJu0E,MAAY60F,GAASppK,EAAAA,IAIrBA,KAAI,OACJu0E,MAAa60F,GAAS,MAAQppK,MAAK,CAAA,IAAMopK,GAAS,MAAY,KAAJppK,EAAAA,IAI1DA,KAAI,SAAUA,MAAK,QACnBu0E,MAAa60F,GAAS,MAAQppK,MAAK,EAAA,IAAOopK,GAAS,MAASppK,MAAK,IAAK,EAAA,IAASopK,GAAS,MAAY,KAAJppK,EAAAA,KAIpGL,MAAK,GACLK,KAAI,UAAiB,OAAJA,OAAc,KAA8B,OAAvBuP,GAAOI,WAAWhQ,EAAAA,IAExD40E,MAAO60F,GAAS,MAAQppK,MAAK,EAAA,IACvBopK,GAAS,MAASppK,MAAK,KAAM,EAAA,IAC7BopK,GAAS,MAASppK,MAAK,IAAK,EAAA,IAC5BopK,GAAS,MAAY,KAAJppK,EAAAA;UAAAA;AAG3B,iBAAOu0E;QAAAA,GA6DPlE,UA9BW,SAAkBzgE,IAAAA;AAC7B,iBAAA,EAAA,CAAKA,MAAsB,YAAA,OAARA,OAAAA,CAAAA,EAITA,GAAI1N,eAAe0N,GAAI1N,YAAYmuE,YAAYzgE,GAAI1N,YAAYmuE,SAASzgE,EAAAA;QAAAA,GA0BlFq/E,UAnCW,SAAkBr/E,IAAAA;AAC7B,iBAA+C,sBAAxCvP,OAAOkB,UAAU6G,SAAStI,KAAK8P,EAAAA;QAAAA,GAmCtCsB,UApBW,SAAkB/C,IAAKlF,IAAAA;AAClC,cAAIwB,GAAQ0D,EAAAA,GAAM;AAEd,qBADI07J,KAAS,CAAA,GACJlqK,KAAI,GAAGA,KAAIwO,GAAItJ,QAAQlF,MAAK;AACjCkqK,cAAAA,GAAOvzJ,KAAKrN,GAAGkF,GAAIxO,EAAAA,CAAAA,CAAAA;AAEvB,mBAAOkqK;UAAAA;AAEX,iBAAO5gK,GAAGkF,EAAAA;QAAAA,GAaViE,OA5MQ,SAASA,GAAM8Z,IAAQyO,IAAQD,IAAAA;AAEvC,cAAA,CAAKC;AACD,mBAAOzO;AAGX,cAAsB,YAAA,OAAXyO,IAAqB;AAC5B,gBAAIlwB,GAAQyhB,EAAAA;AACRA,cAAAA,GAAO5V,KAAKqkB,EAAAA;iBACT;AAAA,kBAAA,CAAIzO,MAA4B,YAAA,OAAXA;AAKxB,uBAAO,CAACA,IAAQyO,EAAAA;AAAAA,eAJXD,OAAYA,GAAQ4uI,gBAAgB5uI,GAAQovI,oBAAAA,CAAsBl9J,GAAI9M,KAAKO,OAAOkB,WAAWo5B,EAAAA,OAC9FzO,GAAOyO,EAAAA,IAAAA;YAAU;AAMzB,mBAAOzO;UAAAA;AAGX,cAAA,CAAKA,MAA4B,YAAA,OAAXA;AAClB,mBAAO,CAACA,EAAAA,EAAQ3L,OAAOoa,EAAAA;AAG3B,cAAIovI,KAAc79I;AAKlB,iBAJIzhB,GAAQyhB,EAAAA,KAAAA,CAAYzhB,GAAQkwB,EAAAA,MAC5BovI,KAAcV,GAAcn9I,IAAQwO,EAAAA,IAGpCjwB,GAAQyhB,EAAAA,KAAWzhB,GAAQkwB,EAAAA,KAC3BA,GAAO1pB,QAAQ,SAAUohB,IAAM1yB,IAAAA;AAC3B,gBAAIiN,GAAI9M,KAAKosB,IAAQvsB,EAAAA,GAAI;AACrB,kBAAIqqK,KAAa99I,GAAOvsB,EAAAA;AACpBqqK,cAAAA,MAAoC,YAAA,OAAfA,MAA2B33I,MAAwB,YAAA,OAATA,KAC/DnG,GAAOvsB,EAAAA,IAAKyS,GAAM43J,IAAY33I,IAAMqI,EAAAA,IAEpCxO,GAAO5V,KAAK+b,EAAAA;YAAAA;AAGhBnG,cAAAA,GAAOvsB,EAAAA,IAAK0yB;UAAAA,CAAAA,GAGbnG,MAGJ7rB,OAAO0J,KAAK4wB,EAAAA,EAAQha,OAAO,SAAU6pH,IAAKtpI,IAAAA;AAC7C,gBAAIN,KAAQ+5B,GAAOz5B,EAAAA;AAOnB,mBALI0L,GAAI9M,KAAK0qI,IAAKtpI,EAAAA,IACdspI,GAAItpI,EAAAA,IAAOkR,GAAMo4H,GAAItpI,EAAAA,GAAMN,IAAO85B,EAAAA,IAElC8vG,GAAItpI,EAAAA,IAAON,IAER4pI;UAAAA,GACRu/B,EAAAA;QAAAA,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpGP,YAAI1kI,KAAQjkC,GAAQ,EAAA,GAChBurF,KAAkBvrF,GAAQ,EAAA,GAC1BouD,KAAUpuD,GAAQ,EAAA,GAElBusF,KAAWhB,GAAgB,UAAA;AAE/BjtF,QAAAA,GAAOD,UAAAA,CAAW4lC,GAAM,WAAA;AAEtB,cAAIlP,KAAM,IAAIojE,IAAI,iBAAiB,UAAA,GAC/B0wE,KAAe9zI,GAAI8zI,cACnB9wI,KAAS;AAMb,iBALAhD,GAAIq6B,WAAW,SACfy5G,GAAah5J,QAAQ,SAAUrQ,IAAOM,IAAAA;AACpC+oK,YAAAA,GAAqB,OAAE,GAAA,GACvB9wI,MAAUj4B,KAAMN;UAAAA,CAAAA,GAEV4uD,MAAAA,CAAYr5B,GAAI/P,UAAAA,CAClB6jJ,GAAal3J,QACD,6BAAbojB,GAAIs6B,QACsB,QAA1Bw5G,GAAazpK,IAAI,GAAA,KACuB,UAAxCkqB,OAAO,IAAIm0G,gBAAgB,MAAA,CAAA,KAAA,CAC1BorC,GAAat8E,EAAAA,KAEsB,QAApC,IAAI4L,IAAI,aAAA,EAAe1jC,YACsC,QAA7D,IAAIgpE,gBAAgB,IAAIA,gBAAgB,KAAA,CAAA,EAAQr+H,IAAI,GAAA,KAEpB,iBAAhC,IAAI+4F,IAAI,iCAAA,EAAenpC,QAEQ,cAA/B,IAAImpC,IAAI,iBAAA,EAAcvqF,QAEX,WAAXmqB,MAEwC,QAAxC,IAAIogE,IAAI,YAAA,MAAY3uF,EAAWwlD;QAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AChCtC1wD,QAAAA,GAAOD,UAAU;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;AAAA;ACEjBf,eAAOC,eAAeb,IAAS,cAAc,EAC3CmB,OAAAA,KAAO,CAAA,GAETnB,GAAQyqK,kBAAAA;AAER,YAIgCt6J,IAJ5Bu6J,KAAoB/oK,GAAQ,GAAA,GAE5BgpK,MAE4Bx6J,KAFeu6J,OAEMv6J,GAAI7O,aAAa6O,KAAM,EAAEg/B,SAASh/B,GAAAA;AAEvFnQ,QAAAA,GAAQyqK,kBAAkBE,GAAkBx7H;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACb5C,YAAIy7H,KAAYjpK,GAAQ,GAAA,GAkCpBgR,KAjCiBhR,GAAQ,GAAA,EAiCF,SAASC,IAAQs5B,IAAQ2vI,IAAAA;AAClDD,UAAAA,GAAUhpK,IAAQs5B,IAAQ2vI,EAAAA;QAAAA,CAAAA;AAG5B5qK,QAAAA,GAAOD,UAAU2S;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACrCjB/R,eAAOC,eAAeb,IAAS,cAAc,EAAEmB,OAAAA,KAAO,CAAA,GACtDnB,GAAQy2B,cAAAA;AACR,YAAIq0I,KAAuB,yCACvBC,KAAsB,sDACtBC,KAAiB,eACjBC,KAA0B,CAAC,KAAK,GAAA;AAsBpCjrK,QAAAA,GAAQy2B,cAlBR,SAAqBC,IAAAA;AACjB,cAAA,CAAKA;AACD,mBAAO;AAEX,cAAIw0I,KAAex0I,GAAItG,QAAQ26I,IAAqB,EAAA,EAAIz4G,KAAAA;AACxD,cARJ,SAAsC57B,IAAAA;AAClC,mBAAOu0I,GAAwBp8J,QAAQ6nB,GAAI,CAAA,CAAA,IAAA;UAAO,EAOjBw0I,EAAAA;AAC7B,mBAAOA;AAEX,cAAIC,KAAwBD,GAAap3I,MAAMk3I,EAAAA;AAC/C,cAAA,CAAKG;AACD,mBAAOD;AAEX,cAAI7tG,KAAY8tG,GAAsB,CAAA;AACtC,iBAAIL,GAAqBt4I,KAAK6qC,EAAAA,IACnB,gBAEJ6tG;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1BX,YAAIE,KAAazpK,GAAQ,GAAA,GAuBrB2uB,KAtBmB3uB,GAAQ,GAAA,EAsBE,SAAS+3B,IAAQ2xI,IAAMxlK,IAAAA;AAEtD,iBADAwlK,KAAOA,GAAKt4I,YAAAA,GACL2G,MAAU7zB,KAAQulK,GAAWC,EAAAA,IAAQA;QAAAA,CAAAA;AAG9CprK,QAAAA,GAAOD,UAAUswB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC5BjB,YAuCIlJ,KAvCazlB,GAAQ,GAAA,EACTA,GAAQ,GAAA,CAAA;AAwCxB1B,QAAAA,GAAOD,UAAUonB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SCzCjB,SAAAhmB,IAAA;AAAA,cAAAJ,KAAmBW,GAAQ,GAAA,GACvBqzH,KAASrzH,GAAQ,GAAA,EAAUqzH;AAkI/B,mBAAS7rF,GAAQ/S,IAAM8iB,IAAQoyH,IAAAA;AAC3BA,YAAAA,KAAeA,MAAgB;AAC/B,gBANmB1jH,IAOfnnD,IADA8qK,MANe3jH,KAMe1O,IAL1B,IAAI92C,MAK8BkpK,MALf,CAAA,EAAGpkJ,KAAK0gC,MAAa,EAAA,IAO5CvtC,KAAS+b;AAGb,gBAAoB,YAAA,OAATA,QAGP/b,KAAS+b,GADT31B,KADWG,OAAO0J,KAAK8rB,EAAAA,EACX,CAAA,CAAA,MAGE/b,GAAOmxJ;AAMjB,qBALAnxJ,GAAOmxJ,MAAM/qK,OAAOA,IACpB4Z,GAAOmxJ,MAAMC,SAASH,IACtBjxJ,GAAOmxJ,MAAMtyH,SAASA,IACtB7+B,GAAOmxJ,MAAME,UAAUH,IACvBlxJ,GAAOmxJ,MAAMG,YAAYtxJ,IAClBA,GAAOmxJ;AAItB,gBAGII,IAHAj/C,KAAa,CAAA,GACb5kD,KAAU,CAAA;AAId,qBAAS8jG,GAAe17J,IAAAA;AACTvP,qBAAO0J,KAAK6F,EAAAA,EAClBqB,QAAQ,SAAS/P,IAAAA;AAClBkrH,gBAAAA,GAAW91G,KAmHvB,SAAmBpV,IAAKN,IAAAA;AACpB,yBAAOM,KAAAA,OAAkBqqK,GAAa3qK,EAAAA,IAAS;gBAAA,EApHbM,IAAK0O,GAAI1O,EAAAA,CAAAA,CAAAA;cAAAA,CAAAA;YAAAA;AAI3C,oBAAA,OAAc4Y,IAAAA;cACV,KAAK;AACD,oBAAe,SAAXA;AAAiB;AAEjBA,gBAAAA,GAAOokE,SACPotF,GAAexxJ,GAAOokE,KAAAA,GAGtBpkE,GAAO0xJ,UACPhkG,GAAQlxD,MACH,cAAcwD,GAAO0xJ,QAAQ37I,QAAQ,UAAU,iBAAA,IAAqB,KAAA,GAIzE/V,GAAO7I,YACPo6J,KAAAA,OACA7jG,GAAQlxD,KAAK,EAAA,GACbwD,GAAO7I,QAAQ,SAASrQ,IAAAA;AACA,8BAAA,OAATA,KAGM,WAFDP,OAAO0J,KAAKnJ,EAAAA,EAAO,CAAA,IAG3B0qK,GAAe1qK,GAAMs9E,KAAAA,IAErB1W,GAAQlxD,KAAKsyB,GACThoC,IAAO+3C,IAAQoyH,KAAe,CAAA,CAAA,KAItCvjG,GAAQ5vD,IAAAA,GACRyzJ,KAAAA,MACA7jG,GAAQlxD,KAAKi1J,GAAa3qK,EAAAA,CAAAA;gBAAAA,CAAAA,GAI7ByqK,MACD7jG,GAAQlxD,KAAK,EAAA;AAGzB;cAEA;AAEIkxD,gBAAAA,GAAQlxD,KAAKi1J,GAAazxJ,EAAAA,CAAAA;YAAAA;AAIlC,mBAAO,EACH5Z,MAAYA,IACZkrK,WAAAA,OACAh/C,YAAYA,IACZ5kD,SAAYA,IACZ0jG,QAAYH,IACZI,SAAYH,IACZryH,QAAYA,GAAAA;UAAAA;AAIpB,mBAASjoB,GAAOiuG,IAAQ8sC,IAAM9lK,IAAAA;AAE1B,gBAAmB,YAAA,OAAR8lK;AACP,qBAAO9sC,GAAAA,OAAc8sC,EAAAA;AAGzB,gBAAI/mK,KAAM+mK,GAAKL,YAAY,IAAIK,GAAKjkG,QAAQ3iE;AAE5C,qBAAS6mK,KAAAA;AACL,qBAAOD,GAAKjkG,QAAQ3iE,UAAQ;AACxB,oBAAIjE,KAAQ6qK,GAAKjkG,QAAQlyD,MAAAA;AAEzB,oBAAA,WAAI1U,IAAJ;AACA,sBAAIwqK,GAAUxqK,EAAAA;AAAQ;AAEtB8vB,kBAAAA,GAAOiuG,IAAQ/9H,EAAAA;gBAAAA;cAAAA;AAGnB+9H,cAAAA,GAAAA,QAAej6H,KAAM,IAAI+mK,GAAKN,UAAU,OACjCM,GAAKvrK,OAAO,OAAOurK,GAAKvrK,OAAO,MAAM,OACrCurK,GAAK9yH,UAAAA,CAAWhzC,KAAM,OAAO,GAAA,GAEhCA,MACAA,GAAAA;YAAAA;AAIR,qBAASylK,GAAUxqK,IAAAA;AAChB,qBAAA,CAAA,CAAIA,GAAMwqK,cACNxqK,GAAMwqK,UAAUzsC,SAASA,IACzB/9H,GAAMwqK,UAAUzlK,MAAM+lK,IACtB9qK,GAAMwqK,YAAAA,OACNzsC,GAAAA,IAAO,GAAA;YACA;AAWd,gBANAA,GAAAA,OAAc8sC,GAAKN,WACZM,GAAKvrK,OAAO,MAAMurK,GAAKvrK,OAAO,OAC9BurK,GAAKr/C,WAAWvnH,SAAS,MAAM4mK,GAAKr/C,WAAWzlG,KAAK,GAAA,IAAO,OAC3DjiB,KAAO+mK,GAAKvrK,OAAO,MAAM,KAAOurK,GAAKvrK,OAAO,OAAO,OACnDurK,GAAK9yH,UAAUj0C,KAAM,IAAI,OAAO,GAAA,GAAA,CAElCA;AACD,qBAAOi6H,GAAAA,OAAc8sC,GAAK9yH,SAAS,OAAO,EAAA;AAGzCyyH,YAAAA,GAAUK,EAAAA,KACXC,GAAAA;UAAAA;AAQRhsK,UAAAA,GAAOD,UAnRP,SAAa63B,IAAOoD,IAAAA;AAEO,wBAAA,OAAZA,OACPA,KAAU,EACNie,QAAQje,GAAAA;AAIhB,gBAgD2B0lD,IAEnB6sC,IAlDJwI,KAAc/6F,GAAQ+6F,SAAS,IAAIhB,OAAW,MAC9Ck3C,KAAc,IACdC,KAAAA,OACAjzH,KAAeje,GAAQie,SAAAA,SACLje,GAAQie,SAdb,SAeSje,GAAQie,SAFE,IAGhCkzH,KAAAA;AAGJ,qBAASC,GAAOvvI,IAAAA;AACPsvI,cAAAA,KAGD9/F,GAAQd,SAAS1uC,EAAAA,IAFjBA,GAAAA;YAAAA;AAMR,qBAASoiG,GAAQysC,IAAW72F,IAAAA;AAQxB,kBAAA,WAPIA,OACAo3F,MAAUp3F,KAEV62F,MAAAA,CAAcQ,OACdn2C,KAASA,MAAU,IAAIhB,MACvBm3C,KAAAA,OAEAR,MAAaQ,IAAa;AAC1B,oBAAI/1I,KAAO81I;AACXG,gBAAAA,GAAM,WAAA;AAAcr2C,kBAAAA,GAAOt7C,KAAK,QAAQtkD,EAAAA;gBAAAA,CAAAA,GACxC81I,KAAS;cAAA;YAAA;AAIjB,qBAAShoJ,GAAK/iB,IAAOooB,IAAAA;AACjB0H,cAAAA,GAAOiuG,IAAQ/1F,GAAQhoC,IAAO+3C,IAAQA,KAAS,IAAI,CAAA,GAAI3vB,EAAAA;YAAAA;AAG3D,qBAASrjB,KAAAA;AACL,kBAAI8vH,IAAQ;AACR,oBAAI5/F,KAAO81I;AACXG,gBAAAA,GAAM,WAAA;AACJr2C,kBAAAA,GAAOt7C,KAAK,QAAQtkD,EAAAA,GACpB4/F,GAAOt7C,KAAK,KAAA,GACZs7C,GAAO9qD,WAAAA,OACP8qD,GAAOt7C,KAAK,OAAA;gBAAA,CAAA;cAAA;YAAA;AAmCtB,mBAjBA2xF,GAAM,WAAA;AAAcD,cAAAA,KAAAA;YAAU,CAAA,GAE1BnxI,GAAQ0lD,gBAfeA,KAgBL1lD,GAAQ0lD,aAdtB6sC,KAAQ,EAAEpsE,SAAS,OAAOzK,UADfgqC,GAAYhqC,YAAY,QAAA,GAGnCgqC,GAAY2rF,eACZ9+C,GAAK8+C,aAAa3rF,GAAY2rF,aAGlCpoJ,GAAI,EAAC,QAAQ,EAAEu6D,OAAO+uC,GAAAA,EAAAA,CAAAA,GACtB0+C,KAASA,GAAO97I,QAAQ,MAAM,IAAA,IAU9ByH,MAASA,GAAMrmB,UACfqmB,GAAMrmB,QAAQ,SAAUrQ,IAAOjB,IAAAA;AAC3B,kBAAIqpB;AACArpB,cAAAA,KAAI,MAAM23B,GAAMzyB,WAChBmkB,KAAOrjB,KACXge,GAAI/iB,IAAOooB,EAAAA;YAAAA,CAAAA,IAGfrF,GAAI2T,IAAO3xB,EAAAA,GAGX8vH,MACAA,GAAO9qD,WAAAA,MACA8qD,MAEJk2C;UAAAA,GA0LXjsK,GAAOD,QAAQ8sG,UAAU7sG,GAAOD,QAAQ8lH,UAvLxC,WAAA;AACI,gBAAIjuF,KAAQz1B,MAAMN,UAAUO,MAAMhC,KAAK6I,SAAAA,GACnC2wB,KAAO,EACH2xI,OAAQriI,GAAQtR,EAAAA,GAGxB,MAAY,SAAUA,IAAAA;AAClB,kBAAA,CAAK5wB,KAAKi4H;AACN,sBAAM,IAAIvxH,MAAM,2BAAA;AAEpB,kBAAI23B,KAAOr+B,MACPiyC,KAASjyC,KAAKukK,MAAMtyH;AACxBjoB,cAAAA,GAAOhqB,KAAKi4H,QAAQ/1F,GAChBtR,IAAOqhB,IAAQjyC,KAAKukK,MAAMC,UAAUvyH,KAAS,IAAI,EAAA,GACjD,WAAA;AAAc5T,gBAAAA,GAAK45F,OAAAA,IAAO;cAAA,CAAA;YAAA,GAGlC,OAAa,SAAUrnG,IAAAA;AAAAA,yBACfA,MACA5wB,KAAK4P,KAAKghB,EAAAA,GAEV5wB,KAAKf,OACLe,KAAKf,IAAAA;YAAAA,EAAAA;AAIb,mBAAO2zB;UAAAA;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC5HX,YAAI0yI,KAAO5qK,GAAQ,GAAA,GAEfu3B,KAAiBv3B,GAAQ,GAAA,GAEzBkiB,KAAiBliB,GAAQ,GAAA,GAEzBw3B,KAAiBx3B,GAAQ,GAAA,GAEzB6qK,KAAmB7qK,GAAQ,GAAA,GAE3Bm4C,KAAYn4C,GAAQ,GAAA;AAExB,iBAAS8qK,GAAiBC,IAAAA;AACxB,cAAIrjK,KAAyB,cAAA,OAATkjK,KAAsB,IAAIA,OAAAA;AA6B9C,iBA3BAtsK,GAAOD,UAAUysK,KAAmB,SAA0BC,IAAAA;AAC5D,gBAAc,SAAVA,MAAAA,CAAmBF,GAAiBE,EAAAA;AAAQ,qBAAOA;AAEvD,gBAAqB,cAAA,OAAVA;AACT,oBAAM,IAAIzhK,UAAU,oDAAA;AAGtB,gBAAA,WAAW5B,IAAwB;AACjC,kBAAIA,GAAO8D,IAAIu/J,EAAAA;AAAQ,uBAAOrjK,GAAOtI,IAAI2rK,EAAAA;AAEzCrjK,cAAAA,GAAOsH,IAAI+7J,IAAO1xI,EAAAA;YAAAA;AAGpB,qBAASA,KAAAA;AACP,qBAAO8e,GAAU4yH,IAAOxjK,WAAW2a,GAAe5c,IAAAA,EAAMxE,WAAAA;YAAAA;AAW1D,mBARAu4B,GAAQl5B,YAAYo3B,GAAewzI,GAAM5qK,WAAW,EAClDW,aAAa,EACXtB,OAAO65B,IACPl6B,YAAAA,OACAurB,UAAAA,MACAD,cAAAA,KAAc,EAAA,CAAA,GAGX+M,GAAe6B,IAAS0xI,EAAAA;UAAAA,GAC9BzsK,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD,SACjEysK,GAAiBC,EAAAA;QAAAA;AAG1BzsK,QAAAA,GAAOD,UAAUysK,IAAkBxsK,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7CxGC,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA,SCAzB,SAAAP,IAAA;AACE,cAASmU;AAAAA,UAAAA,KAAAA,WAYF+kB,KAAwBA,KAASrzB,MARxChH,GAAOD,UAQuC,SAASuV,IAAAA;AAExD,gBAAIA,GAAKo3J,OAAOp3J,GAAKo3J,IAAIr5G;AACxB,qBAAO/9C,GAAKo3J,IAAIr5G;AAIjB,gBAAI97B,KAAY,SAASr2B,IAAAA;AACxB,kBAAwB,KAApB+H,UAAU9D;AACb,sBAAM,IAAI6F,UAAU,oCAAA;AAQrB,uBAHI2hK,IAHA98J,KAASmb,OAAO9pB,EAAAA,GAChBiE,KAAS0K,GAAO1K,QAChBS,KAAAA,IAEA6zB,KAAS,IACTmzI,KAAgB/8J,GAAOI,WAAW,CAAA,GAAA,EAC7BrK,KAAQT;AAOA,sBANhBwnK,KAAW98J,GAAOI,WAAWrK,EAAAA,KA2B5B6zB,MAbCkzI,MAAY,KAAUA,MAAY,MAAuB,OAAZA,MAGpC,KAAT/mK,MAAc+mK,MAAY,MAAUA,MAAY,MAIvC,KAAT/mK,MACA+mK,MAAY,MAAUA,MAAY,MACjB,MAAjBC,KAIS,OAAOD,GAASjkK,SAAS,EAAA,IAAM,MAOhC,KAAT9C,MACU,KAAVT,MACY,MAAZwnK,MAAAA,EAWAA,MAAY,OACA,MAAZA,MACY,MAAZA,MACAA,MAAY,MAAUA,MAAY,MAClCA,MAAY,MAAUA,MAAY,MAClCA,MAAY,MAAUA,MAAY,OAdxB,OAAO98J,GAAOsuC,OAAOv4C,EAAAA,IAiBrBiK,GAAOsuC,OAAOv4C,EAAAA,IAhDxB6zB,MAAU;AAyDZ,qBAAOA;YAAAA;AAQR,mBALKnkB,GAAKo3J,QACTp3J,GAAKo3J,MAAM,CAAA,IAGZp3J,GAAKo3J,IAAIr5G,SAAS97B,IACXA;UAAAA,EAlGmBjiB,EAAAA;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SCLvBvV,KAAUC,GAAOD,UAAU,SAAc8sK,IAAAA;AAC3CA,UAAAA,KAAYA,GAAU/5I,YAAAA;AAEtB,cAAIg6I,KAAY/sK,GAAQ8sK,EAAAA;AACxB,cAAA,CAAKC;AAAW,kBAAM,IAAIp/J,MAAMm/J,KAAY,6CAAA;AAE5C,iBAAO,IAAIC;QAAAA,GAGLC,MAAMrrK,GAAQ,GAAA,GACtB3B,GAAQitK,OAAOtrK,GAAQ,GAAA,GACvB3B,GAAQktK,SAASvrK,GAAQ,GAAA,GACzB3B,GAAQmtK,SAASxrK,GAAQ,GAAA,GACzB3B,GAAQotK,SAASzrK,GAAQ,GAAA,GACzB3B,GAAQqtK,SAAS1rK,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACdzB,YAAI2rK,KAAc3rK,GAAQ,GAAA,GACtBu2J,KAAWv2J,GAAQ,GAAA,GACnBypJ,KAAezpJ,GAAQ,GAAA,GACvB4rK,KAAa5rK,GAAQ,GAAA,GACrBqJ,KAAUrJ,GAAQ,EAAA;AA8CtB1B,QAAAA,GAAOD,UAPP,SAAgBiX,IAAYm/I,IAAUE,IAAAA;AACpC,cAAIx5H,KAAO9xB,GAAQiM,EAAAA,IAAcq2J,KAAcC,IAC3ChX,KAAYrtJ,UAAU9D,SAAS;AAEnC,iBAAO03B,GAAK7lB,IAAYm0I,GAAagL,IAAU,CAAA,GAAIE,IAAaC,IAAW2B,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/C7E,YAAIlvF,KAAarnE,GAAQ,GAAA,GACrBqJ,KAAUrJ,GAAQ,EAAA,GAClBgsF,KAAehsF,GAAQ,EAAA;AA2B3B1B,QAAAA,GAAOD,UALP,SAAkBmB,IAAAA;AAChB,iBAAuB,YAAA,OAATA,MAAAA,CACV6J,GAAQ7J,EAAAA,KAAUwsF,GAAaxsF,EAAAA,KArBrB,qBAqB+B6nE,GAAW7nE,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1B1D,YAAIisB,KAAWzrB,GAAQ,EAAA,GACnByjK,KAAMzjK,GAAQ,GAAA,GACd6rK,KAAW7rK,GAAQ,GAAA,GAMnB2yJ,KAAYpvJ,KAAKC,KACjBsoK,KAAYvoK,KAAKqB;AAqLrBtG,QAAAA,GAAOD,UA7HP,SAAkB88B,IAAM4wI,IAAMzyI,IAAAA;AAC5B,cAAI0yI,IACAC,IACAC,IACAn0I,IACAo0I,IACAC,IACAC,KAAiB,GACjBC,KAAAA,OACAC,KAAAA,OACAC,KAAAA;AAEJ,cAAmB,cAAA,OAARrxI;AACT,kBAAM,IAAI7xB,UAzEQ,qBAAA;AAmFpB,mBAASmjK,GAAWC,IAAAA;AAClB,gBAAIptH,KAAO0sH,IACPvqD,KAAUwqD;AAKd,mBAHAD,KAAWC,KAAAA,QACXI,KAAiBK,IACjB30I,KAASoD,GAAKjsB,MAAMuyG,IAASniE,EAAAA;UAAAA;AAI/B,mBAASqtH,GAAYD,IAAAA;AAMnB,mBAJAL,KAAiBK,IAEjBP,KAAU10F,WAAWm1F,IAAcb,EAAAA,GAE5BO,KAAUG,GAAWC,EAAAA,IAAQ30I;UAAAA;AAatC,mBAAS80I,GAAaH,IAAAA;AACpB,gBAAII,KAAoBJ,KAAON;AAM/B,mBAAA,WAAQA,MAA+BU,MAAqBf,MACzDe,KAAoB,KAAOP,MANJG,KAAOL,MAM8BH;UAAAA;AAGjE,mBAASU,KAAAA;AACP,gBAAIF,KAAOjJ,GAAAA;AACX,gBAAIoJ,GAAaH,EAAAA;AACf,qBAAOK,GAAaL,EAAAA;AAGtBP,YAAAA,KAAU10F,WAAWm1F,IA3BvB,SAAuBF,IAAAA;AACrB,kBAEIM,KAAcjB,MAFMW,KAAON;AAI/B,qBAAOG,KACHT,GAAUkB,IAAad,MAJDQ,KAAOL,GAAAA,IAK7BW;YAAAA,EAoB6CN,EAAAA,CAAAA;UAAAA;AAGnD,mBAASK,GAAaL,IAAAA;AAKpB,mBAJAP,KAAAA,QAIIK,MAAYR,KACPS,GAAWC,EAAAA,KAEpBV,KAAWC,KAAAA,QACJl0I;UAAAA;AAeT,mBAASk1I,KAAAA;AACP,gBAAIP,KAAOjJ,GAAAA,GACPyJ,KAAaL,GAAaH,EAAAA;AAM9B,gBAJAV,KAAWzkK,WACX0kK,KAAW3mK,MACX8mK,KAAeM,IAEXQ,IAAY;AACd,kBAAA,WAAIf;AACF,uBAAOQ,GAAYP,EAAAA;AAErB,kBAAIG;AAIF,uBAFA70F,aAAay0F,EAAAA,GACbA,KAAU10F,WAAWm1F,IAAcb,EAAAA,GAC5BU,GAAWL,EAAAA;YAAAA;AAMtB,mBAAA,WAHID,OACFA,KAAU10F,WAAWm1F,IAAcb,EAAAA,IAE9Bh0I;UAAAA;AAIT,iBA3GAg0I,KAAOF,GAASE,EAAAA,KAAS,GACrBtgJ,GAAS6N,EAAAA,MACXgzI,KAAAA,CAAAA,CAAYhzI,GAAQgzI,SAEpBJ,MADAK,KAAS,aAAajzI,MACHq5H,GAAUkZ,GAASvyI,GAAQ4yI,OAAAA,KAAY,GAAGH,EAAAA,IAAQG,IACrEM,KAAW,cAAclzI,KAAAA,CAAAA,CAAYA,GAAQkzI,WAAWA,KAoG1DS,GAAUE,SApCV,WAAA;AAAA,uBACMhB,MACFz0F,aAAay0F,EAAAA,GAEfE,KAAiB,GACjBL,KAAWI,KAAeH,KAAWE,KAAAA;UAAU3iK,GAgCjDyjK,GAAU9Q,QA7BV,WAAA;AACE,mBAAA,WAAOgQ,KAAwBp0I,KAASg1I,GAAatJ,GAAAA,CAAAA;UAAAA,GA6BhDwJ;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC3LT,YAAIG,KAAWptK,GAAQ,GAAA,GACnBqtK,KAAYrtK,GAAQ,GAAA,GACpBstK,KAAYttK,GAAQ,GAAA,GACpBuwH,KAAWvwH,GAAQ,GAAA,GACnButK,KAAavtK,GAAQ,GAAA,GACrBwtK,KAAkBxtK,GAAQ,GAAA,GAC1BytK,KAAWztK,GAAQ,GAAA,GACnB0tK,KAAe1tK,GAAQ,GAAA,GA2BvB0qF,KAAO+iF,GAAS,SAASxtK,IAAQ0xC,IAAAA;AACnC,cAAI5Z,KAAS,CAAA;AACb,cAAc,QAAV93B;AACF,mBAAO83B;AAET,cAAI85H,KAAAA;AACJlgH,UAAAA,KAAQy7H,GAASz7H,IAAO,SAAS3Y,IAAAA;AAG/B,mBAFAA,KAAOu3F,GAASv3F,IAAM/4B,EAAAA,GACtB4xJ,OAAWA,KAAS74H,GAAKv1B,SAAS,IAC3Bu1B;UAAAA,CAAAA,GAETu0I,GAAWttK,IAAQytK,GAAaztK,EAAAA,GAAS83B,EAAAA,GACrC85H,OACF95H,KAASs1I,GAAUt1I,IAAQ41I,GAAwDH,EAAAA;AAGrF,mBADI/pK,KAASkuC,GAAMluC,QACZA;AACL6pK,YAAAA,GAAUv1I,IAAQ4Z,GAAMluC,EAAAA,CAAAA;AAE1B,iBAAOs0B;QAAAA,CAAAA;AAGTz5B,QAAAA,GAAOD,UAAUqsF;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACxDjBpsF,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAIouC,KAA+BpuC,GAAQ,GAAA;AAqB3C1B,QAAAA,GAAOD,UAnBP,SAAkCk7B,IAAQ8U,IAAAA;AACxC,cAAc,QAAV9U;AAAgB,mBAAO,CAAA;AAC3B,cACIz5B,IAAKvB,IADLusB,KAASsjB,GAA6B7U,IAAQ8U,EAAAA;AAGlD,cAAIpvC,OAAO4lB,uBAAuB;AAChC,gBAAIypB,KAAmBrvC,OAAO4lB,sBAAsB0U,EAAAA;AAEpD,iBAAKh7B,KAAI,GAAGA,KAAI+vC,GAAiB7qC,QAAQlF;AACvCuB,cAAAA,KAAMwuC,GAAiB/vC,EAAAA,GACnB8vC,GAASnhC,QAAQpN,EAAAA,KAAQ,KACxBb,OAAOkB,UAAU0O,qBAAqBnQ,KAAK66B,IAAQz5B,EAAAA,MACxDgrB,GAAOhrB,EAAAA,IAAOy5B,GAAOz5B,EAAAA;UAAAA;AAIzB,iBAAOgrB;QAAAA,GAITxsB,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAAO,IAAA;ACtBxE,YAAIw4B,KAAoBx4B,GAAQ,GAAA,GAE5By4B,KAAkBz4B,GAAQ,GAAA,GAE1Bs4B,KAA6Bt4B,GAAQ,GAAA,GAErC04B,KAAoB14B,GAAQ,GAAA;AAMhC1B,QAAAA,GAAOD,UAJP,SAA4B+E,IAAAA;AAC1B,iBAAOo1B,GAAkBp1B,EAAAA,KAAQq1B,GAAgBr1B,EAAAA,KAAQk1B,GAA2Bl1B,EAAAA,KAAQs1B,GAAAA;QAAAA,GAI9Fp6B,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAA;ACbxE,iBAASk/B,KAAAA;AAgBP,iBAfArgC,GAAOD,UAAUsgC,KAAW1/B,OAAOq+B,UAAU,SAAUxS,IAAAA;AACrD,qBAASvsB,KAAI,GAAGA,KAAIgJ,UAAU9D,QAAQlF,MAAK;AACzC,kBAAIg7B,KAAShyB,UAAUhJ,EAAAA;AAEvB,uBAASuB,MAAOy5B;AACVt6B,uBAAOkB,UAAUC,eAAe1B,KAAK66B,IAAQz5B,EAAAA,MAC/CgrB,GAAOhrB,EAAAA,IAAOy5B,GAAOz5B,EAAAA;YAAAA;AAK3B,mBAAOgrB;UAAAA,GAGTxsB,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA,MACpDg/B,GAASzvB,MAAM5J,MAAMiC,SAAAA;QAAAA;AAG9BjJ,QAAAA,GAAOD,UAAUsgC,IACjBrgC,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAA;AC0CxEnB,QAAAA,GAAOD,UAtDP,SAAcwlE,IAAAA;AACZ,gBAAM+pG,KAAW,EACfC,SAAS,kBAAA,GAELC,KAAmB,CACvBjqG,GAAKkqG,qBACLlqG,GAAKmqG,oBAAAA,GAEDC,KAAQ,CACZpqG,GAAKqqG,mBACLrqG,GAAKsqG,aAAAA,GAEDC,KAAkB,EACtB7pK,KAAK,KACL8pK,gBAAAA,MACAC,YAAAA,MACAtlJ,UAAUilJ,IACVM,UAAUX,GAAAA,GAENY,KAAS,EACblqK,OAAO,MACPC,KAAK,MACLykB,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAAO,KACPC,KAAK,KACLykB,UAAU,CAAC66C,GAAK4qG,gBAAAA,GAChBC,SAAS,MAAA,GAEX7qG,GAAK8qG,QAAQP,IAAiB,EAC5B9pK,OAAO,IAAA,CAAA,CAAA,EAET6a,OAAO2uJ,EAAAA,GACTY,SAAS,MAAA,GAELE,KAAQ,EACZtqK,OAAO,OACPC,KAAK,OACLykB,UAAU,CAAC66C,GAAK8qG,QAAQP,EAAAA,CAAAA,GACxBM,SAAS,MAAA;AAMX,iBAJAT,GAAM/4J,KAAKs5J,IAAQI,EAAAA,GACnBd,GAAiBj+J,QAAQ,SAASsxF,IAAAA;AAChC8sE,YAAAA,GAAM/4J,KAAKisF,EAAAA;UAAAA,CAAAA,GAEN,EACLriG,MAAM,QACNkqB,UAAUilJ,IACVM,UAAUX,IACVc,SAAS,MAAA;QAAA;MAAA,GAAA,SAAAnuK,IAAAd,IAAA;AC1Db,cAAMovK,KAAW,4BACXC,KAAW,CACf,MACA,MACA,MACA,MACA,OACA,SACA,WACA,OACA,OACA,YACA,MACA,UACA,QACA,QACA,SACA,SACA,cACA,QACA,SACA,QACA,WACA,OACA,UACA,YACA,UACA,UACA,OACA,SACA,SACA,SAIA,YACA,SACA,SACA,UACA,UACA,QACA,UACA,SAAA,GAEIlB,KAAW,CACf,QACA,SACA,QACA,aACA,OACA,UAAA,GAoFImB,KAAY,CAAA,EAAG5vJ,OAlCI,CACvB,eACA,cACA,iBACA,gBAEA,WACA,WAEA,QACA,YACA,SACA,cACA,YACA,aACA,sBACA,aACA,sBACA,UACA,UAAA,GAGyB,CACzB,aACA,QACA,SACA,WACA,UACA,YACA,gBACA,UACA,QAAA,GA9EY,CACZ,QACA,YACA,UACA,QACA,QACA,UACA,UACA,UACA,YACA,WACA,SACA,UACA,OACA,OACA,WACA,WACA,SACA,WACA,QACA,WACA,gBACA,cACA,cACA,aACA,eACA,eACA,gBACA,SACA,cACA,qBACA,eACA,iBACA,kBACA,QAAA,GAGkB,CAClB,aACA,iBACA,cACA,kBACA,eACA,aACA,UAAA,CAAA;AAgEF,iBAAS6vJ,GAAUt3H,IAAAA;AACjB,iBAAOv4B,GAAO,OAAOu4B,IAAI,GAAA;QAAA;AAO3B,iBAASv4B,MAAUmgC,IAAAA;AAEjB,iBADeA,GAAKl1C,IAAKoL,CAAAA,OAAAA;AAAM+jB,oBApBjBme,KAoBwBliC,MAlBpB,YAAA,OAAPkiC,KAAwBA,KAE5BA,GAAGne,SAHM;AADlB,gBAAgBme;UAAAA,CAAAA,EAoB4BnyB,KAAK,EAAA;QAAA;AAibjDjnB,QAAAA,GAAOD,UAraP,SAAoBwlE,IAAAA;AAQlB,gBAMMorG,KAAaJ,IACbK,KACG,MADHA,KAEC,OAEDC,KAAU,EACd7qK,OAAO,uBACPC,KAAK,6BAKL6qK,mBAAmB,CAACj9I,IAAOkkC,OAAAA;AACzB,kBAAMg5G,KAAkBl9I,GAAM,CAAA,EAAG1uB,SAAS0uB,GAAMjuB,OAC1CykG,KAAWx2E,GAAM+D,MAAMm5I,EAAAA;AAIZ,oBAAb1mE,KAMa,QAAbA,QA9Bc,CAACx2E,IAAAA,EAAS7b,OAAAA,GAAAA,MAAAA;AAC9B,oBAAM2hC,KAAM,OAAO9lB,GAAM,CAAA,EAAGzxB,MAAM,CAAA;AAElC,qBAAA,OADYyxB,GAAM+D,MAAMhpB,QAAQ+qC,IAAK3hC,EAAAA;YAAAA,GA+Bd6b,IAAO,EAAE7b,OAAO+4J,GAAAA,CAAAA,KACjCh5G,GAASi5G,YAAAA,KATXj5G,GAASi5G,YAAAA;UAAAA,EAAAA,GAcTC,KAAa,EACjBC,UAAUX,IACVY,SAASX,IACTjB,SAASD,IACT8B,UAAUX,GAAAA,GAKNY,KAAO,wBAGPC,KAAiB,uCACjBC,KAAS,EACb1xG,WAAW,UACX2xG,UAAU,CAER,EAAExrK,OAAO,QAAQsrK,QAAoBD,cAAgBA,oCAAAA,GAErD,EAAErrK,OAAO,OAAOsrK,WAAuBD,iBAAmBA,SAAAA,GAG1D,EAAErrK,OAAO,6BAAA,GAGT,EAAEA,OAAO,2CAAA,GACT,EAAEA,OAAO,+BAAA,GACT,EAAEA,OAAO,+BAAA,GAIT,EAAEA,OAAO,kBAAA,CAAA,GAEX0nJ,WAAW,EAAA,GAGP+jB,KAAQ,EACZ5xG,WAAW,SACX75D,OAAO,UACPC,KAAK,OACLgqK,UAAUgB,IACVvmJ,UAAU,CAAA,EAAA,GAENgnJ,KAAgB,EACpB1rK,OAAO,SACPC,KAAK,IACL0rK,QAAQ,EACN1rK,KAAK,KACL2rK,WAAAA,OACAlnJ,UAAU,CACR66C,GAAK4qG,kBACLsB,EAAAA,GAEFI,aAAa,MAAA,EAAA,GAGXC,KAAe,EACnB9rK,OAAO,QACPC,KAAK,IACL0rK,QAAQ,EACN1rK,KAAK,KACL2rK,WAAAA,OACAlnJ,UAAU,CACR66C,GAAK4qG,kBACLsB,EAAAA,GAEFI,aAAa,MAAA,EAAA,GAGXE,KAAkB,EACtBlyG,WAAW,UACX75D,OAAO,KACPC,KAAK,KACLykB,UAAU,CACR66C,GAAK4qG,kBACLsB,EAAAA,EAAAA,GAoCEO,KAAU,EACdnyG,WAAW,WACX2xG,UAAU,CAnCUjsG,GAAKysG,QACzB,gBACA,QACA,EACEtkB,WAAW,GACXhjI,UAAU,CACR,EACEm1C,WAAW,UACX75D,OAAO,cACP0kB,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAAO,OACPC,KAAK,OACLynJ,WAAW,EAAA,GAEb,EACE7tF,WAAW,YACX75D,OAAO2qK,KAAa,iBACpBsB,YAAAA,MACAvkB,WAAW,EAAA,GAIb,EACE1nJ,OAAO,eACP0nJ,WAAW,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,GAWnBnoF,GAAKmqG,sBACLnqG,GAAKkqG,mBAAAA,EAAAA,GAGHyC,KAAkB,CACtB3sG,GAAK4sG,kBACL5sG,GAAKqqG,mBACL8B,IACAI,IACAC,IACAR,IACAhsG,GAAK6sG,WAAAA;AAEPX,UAAAA,GAAM/mJ,WAAWwnJ,GACdrxJ,OAAO,EAGN7a,OAAO,MACPC,KAAK,MACLgqK,UAAUgB,IACVvmJ,UAAU,CACR,MAAA,EACA7J,OAAOqxJ,EAAAA,EAAAA,CAAAA;AAEb,gBAAMG,KAAqB,CAAA,EAAGxxJ,OAAOmxJ,IAASP,GAAM/mJ,QAAAA,GAC9C4nJ,KAAkBD,GAAmBxxJ,OAAO,CAEhD,EACE7a,OAAO,MACPC,KAAK,MACLgqK,UAAUgB,IACVvmJ,UAAU,CAAC,MAAA,EAAQ7J,OAAOwxJ,EAAAA,EAAAA,CAAAA,CAAAA,GAGxBE,KAAS,EACb1yG,WAAW,UACX75D,OAAO,MACPC,KAAK,MACLusK,cAAAA,MACAxC,YAAAA,MACAC,UAAUgB,IACVvmJ,UAAU4nJ,GAAAA;AAGZ,iBAAO,EACL9xK,MAAM,cACNiyK,SAAS,CAAC,MAAM,OAAO,OAAO,KAAA,GAC9BxC,UAAUgB,IAEVlxK,SAAS,EAAEuyK,iBAAAA,GAAAA,GACXlC,SAAS,gBACT1lJ,UAAU,CACR66C,GAAKmtG,QAAQ,EACX9wE,OAAO,WACPtlD,QAAQ,QACRoxG,WAAW,EAAA,CAAA,GAEb,EACE9rD,OAAO,cACP/hC,WAAW,QACX6tF,WAAW,IACX1nJ,OAAO,+BAAA,GAETu/D,GAAK4sG,kBACL5sG,GAAKqqG,mBACL8B,IACAI,IACAC,IACAC,IACAT,IACA,EACEvrK,OAAO6a,GAAO,aAWZ6vJ,GAAU7vJ,GAGR,8CACA8vJ,KAAa,OAAA,CAAA,CAAA,GACjBjjB,WAAW,GACXhjI,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAAO2qK,KAAaD,GAAU,OAAA,GAC9BhjB,WAAW,EAAA,CAAA,EAAA,GAIjB,EACE1nJ,OAAO,MAAMu/D,GAAKotG,iBAAiB,mCACnC1C,UAAU,qBACVvlJ,UAAU,CACRsnJ,IACAzsG,GAAK6sG,aACL,EACEvyG,WAAW,YAIX75D,OAAO,6DAMEu/D,GAAKqtG,sBAAsB,WACpCC,aAAAA,MACA5sK,KAAK,UACLykB,UAAU,CACR,EACEm1C,WAAW,UACX2xG,UAAU,CACR,EACExrK,OAAOu/D,GAAKqtG,qBACZllB,WAAW,EAAA,GAEb,EACE7tF,WAAW,MACX75D,OAAO,WACP6jB,MAAAA,KAAM,GAER,EACE7jB,OAAO,MACPC,KAAK,MACLusK,cAAAA,MACAxC,YAAAA,MACAC,UAAUgB,IACVvmJ,UAAU4nJ,GAAAA,CAAAA,EAAAA,CAAAA,EAAAA,GAMpB,EACEtsK,OAAO,KAAK0nJ,WAAW,EAAA,GAEzB,EACE7tF,WAAW,IACX75D,OAAO,MACPC,KAAK,OACL4jB,MAAAA,KAAM,GAER,EACE2nJ,UAAU,CACR,EAAExrK,OAAO4qK,IAAgB3qK,KAAK2qK,GAAAA,GAC9B,EACE5qK,OAAO6qK,GAAQ7qK,OAGf,YAAY6qK,GAAQC,mBACpB7qK,KAAK4qK,GAAQ5qK,IAAAA,CAAAA,GAGjB4rK,aAAa,OACbnnJ,UAAU,CACR,EACE1kB,OAAO6qK,GAAQ7qK,OACfC,KAAK4qK,GAAQ5qK,KACb4jB,MAAAA,MACAa,UAAU,CAAC,MAAA,EAAA,CAAA,EAAA,CAAA,GAKnBgjI,WAAW,EAAA,GAEb,EACE7tF,WAAW,YACXizG,eAAe,YACf7sK,KAAK,QACL+pK,YAAAA,MACAC,UAAUgB,IACVvmJ,UAAU,CACR,QACA66C,GAAK8qG,QAAQ9qG,GAAKwtG,YAAY,EAAE/sK,OAAO2qK,GAAAA,CAAAA,GACvC4B,EAAAA,GAEFnC,SAAS,IAAA,GAEX,EAGE0C,eAAe,4BAAA,GAEjB,EACEjzG,WAAW,YAIX75D,OAAOu/D,GAAKqtG,sBAALrtG,iEAQPstG,aAAAA,MACAnoJ,UAAU,CACR6nJ,IACAhtG,GAAK8qG,QAAQ9qG,GAAKwtG,YAAY,EAAE/sK,OAAO2qK,GAAAA,CAAAA,CAAAA,EAAAA,GAM3C,EACEa,UAAU,CACR,EAAExrK,OAAO,QAAQ2qK,GAAAA,GACjB,EAAE3qK,OAAO,QAAQ2qK,GAAAA,CAAAA,GAEnBjjB,WAAW,EAAA,GAEb,EACE7tF,WAAW,SACXizG,eAAe,SACf7sK,KAAK,SACL+pK,YAAAA,MACAI,SAAS,WACT1lJ,UAAU,CACR,EAAEooJ,eAAe,UAAA,GACjBvtG,GAAKytG,qBAAAA,EAAAA,GAGT,EACEhtK,OAAO,qBACPC,KAAK,QACL+pK,YAAAA,MACAtlJ,UAAU,CACR66C,GAAK8qG,QAAQ9qG,GAAKwtG,YAAY,EAAE/sK,OAAO2qK,GAAAA,CAAAA,GACvC,QACA4B,EAAAA,EAAAA,GAGJ,EACEvsK,OAAO,qBAAqB2qK,KAAa,QACzC1qK,KAAK,MACLgqK,UAAU,WACVvlJ,UAAU,CACR66C,GAAK8qG,QAAQ9qG,GAAKwtG,YAAY,EAAE/sK,OAAO2qK,GAAAA,CAAAA,GACvC,EAAE3qK,OAAO,OAAA,GACTusK,EAAAA,EAAAA,GAGJ,EACEvsK,OAAO,SAAA,CAAA,EAAA;QAAA;MAAA,GAAA,SAAA/D,IAAAd,IAAA;AC5kBf,iBAAS85B,GAAOme,IAAAA;AACd,iBAAKA,KACa,YAAA,OAAPA,KAAwBA,KAE5BA,GAAGne,SAHM;QAAA;AAUlB,iBAASy1I,GAAUt3H,IAAAA;AACjB,iBAAOv4B,GAAO,OAAOu4B,IAAI,GAAA;QAAA;AAe3B,iBAASv4B,MAAUmgC,IAAAA;AAEjB,iBADeA,GAAKl1C,IAAKoL,CAAAA,OAAM+jB,GAAO/jB,EAAAA,CAAAA,EAAI+P,KAAK,EAAA;QAAA;AAWjD,iBAASgsJ,MAAUjyH,IAAAA;AAEjB,iBADe,MAAMA,GAAKl1C,IAAKoL,CAAAA,OAAM+jB,GAAO/jB,EAAAA,CAAAA,EAAI+P,KAAK,GAAA,IAAO;QAAA;AA6O9DjnB,QAAAA,GAAOD,UAjOP,SAAawlE,IAAAA;AAEX,gBAAM2tG,KAAcryJ,GAAO,UAlCpBA,GAAO,KAkCgC,iBAlCvB,IAAA,GAkCyC,cAAA,GAE1DsyJ,KAAe,EACnBtzG,WAAW,UACX75D,OAAO,mCAAA,GAEHotK,KAAoB,EACxBptK,OAAO,MACP0kB,UAAU,CACR,EACEm1C,WAAW,gBACX75D,OAAO,uBACPoqK,SAAS,KAAA,CAAA,EAAA,GAITiD,KAAwB9tG,GAAK8qG,QAAQ+C,IAAmB,EAC5DptK,OAAO,MACPC,KAAK,KAAA,CAAA,GAEDqtK,KAAwB/tG,GAAK8qG,QAAQ9qG,GAAK4sG,kBAAkB,EAChEtyG,WAAW,cAAA,CAAA,GAEP0zG,KAAyBhuG,GAAK8qG,QAAQ9qG,GAAKqqG,mBAAmB,EAClE/vG,WAAW,cAAA,CAAA,GAEP2zG,KAAgB,EACpBzD,gBAAAA,MACAK,SAAS,KACT1iB,WAAW,GACXhjI,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAhCe,oBAiCf0nJ,WAAW,EAAA,GAEb,EACE1nJ,OAAO,QACP0nJ,WAAW,GACXhjI,UAAU,CACR,EACEm1C,WAAW,UACXoyG,YAAAA,MACAT,UAAU,CACR,EACExrK,OAAO,KACPC,KAAK,KACLykB,UAAU,CAAEyoJ,EAAAA,EAAAA,GAEd,EACEntK,OAAO,KACPC,KAAK,KACLykB,UAAU,CAAEyoJ,EAAAA,EAAAA,GAEd,EACEntK,OAAO,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AAQrB,iBAAO,EACLxF,MAAM,aACNiyK,SAAS,CACP,QACA,SACA,OACA,QACA,OACA,OACA,OACA,SACA,OACA,KAAA,GAEFgB,kBAAAA,MACA/oJ,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAAO,WACPC,KAAK,KACLynJ,WAAW,IACXhjI,UAAU,CACR0oJ,IACAG,IACAD,IACAD,IACA,EACErtK,OAAO,MACPC,KAAK,MACLykB,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAAO,WACPC,KAAK,KACLykB,UAAU,CACR0oJ,IACAC,IACAE,IACAD,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,GAOZ/tG,GAAKysG,QACH,QACA,OACA,EACEtkB,WAAW,GAAA,CAAA,GAGf,EACE1nJ,OAAO,eACPC,KAAK,SACLynJ,WAAW,GAAA,GAEbylB,IACA,EACEtzG,WAAW,QACX75D,OAAO,UACPC,KAAK,OACLynJ,WAAW,GAAA,GAEb,EACE7tF,WAAW,OAOX75D,OAAO,kBACPC,KAAK,KACLgqK,UAAU,EACRzvK,MAAM,QAAA,GAERkqB,UAAU,CAAE8oJ,EAAAA,GACZ7B,QAAQ,EACN1rK,KAAK,aACL2rK,WAAAA,MACAC,aAAa,CACX,OACA,KAAA,EAAA,EAAA,GAIN,EACEhyG,WAAW,OAEX75D,OAAO,mBACPC,KAAK,KACLgqK,UAAU,EACRzvK,MAAM,SAAA,GAERkqB,UAAU,CAAE8oJ,EAAAA,GACZ7B,QAAQ,EACN1rK,KAAK,cACL2rK,WAAAA,MACAC,aAAa,CACX,cACA,cACA,KAAA,EAAA,EAAA,GAKN,EACEhyG,WAAW,OACX75D,OAAO,UAAA,GAGT,EACE65D,WAAW,OACX75D,OAAO6a,GACL,KACA6vJ,GAAU7vJ,GACRqyJ,IAIAD,GAAO,OAAO,KAAK,IAAA,CAAA,CAAA,CAAA,GAGvBhtK,KAAK,QACLykB,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAAOktK,IACPxlB,WAAW,GACXikB,QAAQ6B,GAAAA,CAAAA,EAAAA,GAKd,EACE3zG,WAAW,OACX75D,OAAO6a,GACL,OACA6vJ,GAAU7vJ,GACRqyJ,IAAa,GAAA,CAAA,CAAA,GAGjBxoJ,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAAOktK,IACPxlB,WAAW,EAAA,GAEb,EACE1nJ,OAAO,KACP0nJ,WAAW,GACXukB,YAAAA,KAAY,CAAA,EAAA,CAAA,EAAA;QAAA;MAAA,GAAA,SAAAhwK,IAAAd,IAAA;ACvGxBnB,QAAAA,GAAOD,UAtKP,SAAcwlE,IAAAA;AACZ,cAAI+pG,KAAW,0BAGXoE,KAAiB,+BAsBjBC,KAAS,EACX9zG,WAAW,UACX6tF,WAAW,GACX8jB,UAAU,CACR,EAAExrK,OAAO,KAAKC,KAAK,IAAA,GACnB,EAAED,OAAO,KAAKC,KAAK,IAAA,GACnB,EAAED,OAAO,MAAA,CAAA,GAEX0kB,UAAU,CACR66C,GAAK4qG,kBAhBgB,EACvBtwG,WAAW,qBACX2xG,UAAU,CACR,EAAExrK,OAAO,QAAQC,KAAK,OAAA,GACtB,EAAED,OAAO,OAAOC,KAAK,KAAA,CAAA,EAAA,CAAA,EAAA,GAmBrB2tK,KAAmBruG,GAAK8qG,QAAQsD,IAAQ,EAC1CnC,UAAU,CACR,EAAExrK,OAAO,KAAKC,KAAK,IAAA,GACnB,EAAED,OAAO,KAAKC,KAAK,IAAA,GACnB,EAAED,OAAO,eAAA,CAAA,EAAA,CAAA,GAQT6tK,KAAY,EACdh0G,WAAW,UACX75D,OAAO,gIAAA,GAGL8pK,KAAkB,EACpB7pK,KAAK,KACL8pK,gBAAAA,MACAC,YAAAA,MACAC,UAAUX,IACV5hB,WAAW,EAAA,GAETwiB,KAAS,EACXlqK,OAAO,MACPC,KAAK,MACLykB,UAAU,CAAColJ,EAAAA,GACXM,SAAS,OACT1iB,WAAW,EAAA,GAET4iB,KAAQ,EACVtqK,OAAO,OACPC,KAAK,OACLykB,UAAU,CAAColJ,EAAAA,GACXM,SAAS,OACT1iB,WAAW,EAAA,GAGTomB,KAAQ,CAvEF,EACRj0G,WAAW,QACX2xG,UAAU,CACR,EAAExrK,OAAO,8BAAA,GACT,EAAEA,OAAO,gCAAA,GACT,EAAEA,OAAO,gCAAA,CAAA,EAAA,GAoEX,EACE65D,WAAW,QACX75D,OAAO,aACP0nJ,WAAW,GAAA,GAEb,EAKE7tF,WAAW,UACX75D,OAAO,gEAAA,GAET,EACEA,OAAO,YACPC,KAAK,WACL4rK,aAAa,QACbW,cAAAA,MACAxC,YAAAA,MACAtiB,WAAW,EAAA,GAEb,EACE7tF,WAAW,QACX75D,OAAO,WAAW0tK,GAAAA,GAGpB,EACE7zG,WAAW,QACX75D,OAAO,OAAO0tK,KAAiB,IAAA,GAEjC,EACE7zG,WAAW,QACX75D,OAAO,MAAM0tK,GAAAA,GAEf,EACE7zG,WAAW,QACX75D,OAAO,OAAO0tK,GAAAA,GAEhB,EACE7zG,WAAW,QACX75D,OAAO,MAAMu/D,GAAKqtG,sBAAsB,IAAA,GAE1C,EACE/yG,WAAW,QACX75D,OAAO,QAAQu/D,GAAKqtG,sBAAsB,IAAA,GAE5C,EACE/yG,WAAW,UAEX75D,OAAO,cACP0nJ,WAAW,EAAA,GAEbnoF,GAAKwuG,mBACL,EACEjB,eAAexD,IACfW,UAAU,EAAEV,SAASD,GAAAA,EAAAA,GAEvBuE,IAGA,EACEh0G,WAAW,UACX75D,OAAOu/D,GAAKyuG,cAAc,OAC1BtmB,WAAW,EAAA,GAEbwiB,IACAI,IACAqD,EAAAA,GAGEM,KAAc,CAAA,GAAIH,EAAAA;AAKtB,iBAJAG,GAAY/7J,IAAAA,GACZ+7J,GAAYr9J,KAAKg9J,EAAAA,GACjB9D,GAAgBplJ,WAAWupJ,IAEpB,EACLzzK,MAAM,QACNizK,kBAAAA,MACAhB,SAAS,CAAE,KAAA,GACX/nJ,UAAUopJ,GAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACvJd,iBAASjzJ,MAAUmgC,IAAAA;AAEjB,iBADeA,GAAKl1C,IAAKoL,CAAAA,OAAAA;AAAM+jB,oBAZjBme,KAYwBliC,MAVpB,YAAA,OAAPkiC,KAAwBA,KAE5BA,GAAGne,SAHM;AADlB,gBAAgBme;UAAAA,CAAAA,EAY4BnyB,KAAK,EAAA;QAAA;AAmGjDjnB,QAAAA,GAAOD,UAvFP,SAAcwlE,IAAAA;AACZ,gBAAM2uG,KAAU,qBAEVC,KAAS,EACbt0G,WAAW,aACX75D,OAAO6a,GAAO,KAHI,yBAGc,YAAA,GAChC8wJ,QAAQ,EACNjnJ,UAAU,CACR,EACEm1C,WAAW,eACX75D,OAAO,MACP0nJ,WAAW,GACXikB,QAAQ,EACN1rK,KAAK,KACLynJ,WAAW,EAAA,EAAA,CAAA,EAAA,EAAA,GAMf0mB,KAAmB,CACvBD,IACA,EACEnuK,OAAO,UACP2rK,QAAQ,EAAEE,aAAa,CAAA,GAAI9B,gBAAAA,KAAgB,EAAA,CAAA;AAI/C,iBAAO,EACLvvK,MAAM,QACNiyK,SAAS,CAAC,OAAA,GACVrC,SAAS,MACT1lJ,UAAU,CAER,EACE1kB,OAAO,SAASkuK,KAAU,YAC1BjuK,KAAK,KACLykB,UAAU,CACR,EACEm1C,WAAW,QACX75D,OAAOkuK,GAAAA,GAET,EACEr0G,WAAW,UAAU75D,OAAO,eAAA,CAAA,GAGhC2rK,QAAQ,EACN1rK,KAAK,QACLmqK,SAAS,MACT1lJ,UAAU0pJ,GAAAA,EAAAA,GAId,EACEpuK,OAAO,sBAAsBkuK,KAAU,MACvCjuK,KAAK,KACLykB,UAAU,CACR,EACEm1C,WAAW,UACX75D,OAAO,KACPC,KAAK,KACLusK,cAAAA,MACAxC,YAAAA,KAAY,GAEd,EACEnwG,WAAW,QACX75D,OAAOkuK,GAAAA,GAET,EACEr0G,WAAW,WACX75D,OAAO,SAAA,CAAA,GAGX2rK,QAAQ,EACN1rK,KAAK,QACLmqK,SAAS,MACT1lJ,UAAU0pJ,GAAAA,EAAAA,GAId7uG,GAAK8qG,QAAQ8D,IAAQ,EACnBzmB,WAAW,EAAA,CAAA,CAAA,EAAA;QAAA;MAAA,GAAA,SAAAzrJ,IAAAd,IAAA;AC9FnB,iBAAS0f,MAAUmgC,IAAAA;AAEjB,iBADeA,GAAKl1C,IAAKoL,CAAAA,OAAAA;AAAM+jB,oBAZjBme,KAYwBliC,MAVpB,YAAA,OAAPkiC,KAAwBA,KAE5BA,GAAGne,SAHM;AADlB,gBAAgBme;UAAAA,CAAAA,EAY4BnyB,KAAK,EAAA;QAAA;AAmJjDjnB,QAAAA,GAAOD,UAtIP,SAAcwlE,IAAAA;AACZ,gBAAM8uG,KAAM,CAAA,GACNC,KAAa,EACjBtuK,OAAO,QACPC,KAAI,MACJykB,UAAU,CACR,QACA,EACE1kB,OAAO,MACP0kB,UAAU,CAAE2pJ,EAAAA,EAAAA,CAAAA,EAAAA;AAIlB1zK,iBAAOq+B,OAAOq1I,IAAI,EAChBx0G,WAAW,YACX2xG,UAAU,CACR,EAACxrK,OAAO6a,GAAO,sBAGb,qBAAA,EAAA,GACFyzJ,EAAAA,EAAAA,CAAAA;AAIJ,gBAAM7C,KAAQ,EACZ5xG,WAAW,SACX75D,OAAO,QAAQC,KAAK,MACpBykB,UAAU,CAAC66C,GAAK4qG,gBAAAA,EAAAA,GAEZoE,KAAW,EACfvuK,OAAO,kBACP2rK,QAAQ,EACNjnJ,UAAU,CACR66C,GAAKivG,kBAAkB,EACrBxuK,OAAO,SACPC,KAAK,SACL45D,WAAW,SAAA,CAAA,CAAA,EAAA,EAAA,GAKb40G,KAAe,EACnB50G,WAAW,UACX75D,OAAO,KAAKC,KAAK,KACjBykB,UAAU,CACR66C,GAAK4qG,kBACLkE,IACA5C,EAAAA,EAAAA;AAGJA,UAAAA,GAAM/mJ,SAAS9T,KAAK69J,EAAAA;AACpB,gBASMC,KAAa,EACjB1uK,OAAO,UACPC,KAAK,QACLykB,UAAU,CACR,EAAE1kB,OAAO,iBAAiB65D,WAAW,SAAA,GACrC0F,GAAKovG,aACLN,EAAAA,EAAAA,GAcEO,KAAgBrvG,GAAKmtG,QAAQ,EACjCp2H,QAAQ,IAZa,CACrB,QACA,QACA,OACA,MACA,OACA,OACA,QACA,QACA,MAAA,EAG2Br1B,KAAK,GAAA,MAChCymI,WAAW,GAAA,CAAA,GAEPmnB,KAAW,EACfh1G,WAAW,YACX75D,OAAO,6BACP6sK,aAAAA,MACAnoJ,UAAU,CAAC66C,GAAK8qG,QAAQ9qG,GAAKwtG,YAAY,EAAC/sK,OAAO,aAAA,CAAA,CAAA,GACjD0nJ,WAAW,EAAA;AAGb,iBAAO,EACLltJ,MAAM,QACNiyK,SAAS,CAAC,MAAM,KAAA,GAChBxC,UAAU,EACRiB,UAAU,iBACVC,SACE,gEACF5B,SACE,cACF6B,UAGE,4uBAAA,GAeJ1mJ,UAAU,CACRkqJ,IACArvG,GAAKmtG,QAAAA,GACLmC,IACAH,IACAnvG,GAAKwuG,mBACLQ,IACAE,IA3EkB,EACpB50G,WAAW,IACX75D,OAAO,MAAA,GAGW,EAClB65D,WAAW,UACX75D,OAAO,KAAKC,KAAK,IAAA,GAuEfouK,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACuKNr0K,QAAAA,GAAOD,UAlUP,SAAoBwlE,IAAAA;AAClB,gBAwCMirG,KAAW,EACfU,UAAU,kBACVC,SACE,wLAIFC,UACE,kqBAAA,GAaE0D,KAAkB,EACtB9uK,OAAO,aACP0nJ,WAAW,EAAA,GAGP2mB,KAAM,EACVx0G,WAAW,YACX2xG,UAAU,CACR,EACExrK,OAAO,OAAA,GAET,EACE65D,WAAW,WACX75D,OAAO,SAAA,GAET,EACEA,OAAO,oBAAA,CAAA,EAAA,GAUPyuK,KAAe,EACnB50G,WAAW,UACX2xG,UAAU,CACR,EACExrK,OAAO,KACPC,KAAK,IAAA,GAEP,EACED,OAAO,MACPC,KAAK,MAAA,CAAA,GAGTykB,UAAU,CACRoqJ,IACAT,IACA,EACEx0G,WAAW,YACX75D,OAAO,WACPC,KAAK,SAAA,CAAA,EAAA,GAKL8uK,KAAc,EAClBl1G,WAAW,UACX2xG,UAAU,CACR,EACExrK,OAAO,KACPC,KAAK,IAAA,GAEP,EACED,OAAO,MACPC,KAAK,MAAA,CAAA,EAAA,GAmBL+uK,KAAazvG,GAAK8qG,QACtB9qG,GAAKysG,QAAQ,MAAM,IAAA,GACnB,EACER,UAAU,CAER,EACExrK,OAAO,KACPC,KAAK,IAAA,GAGP,EACED,OAAO,MACPC,KAAK,KAAA,CAAA,GAGTykB,UAAU,CA7BM,EAClBm1C,WAAW,UACX2xG,UAAU,CAER,EACExrK,OAAO,0FAAA,GAGT,EACEA,OAAO,gGAAA,CAAA,EAAA,CAAA,EAAA,CAAA,GAwBPivK,KAAU,EACdp1G,WAAW,YACX2xG,UAAU,CACR,EACExrK,OAAO,IAAI6a,OA9If,4rBA8ImC,gBAAA,EAAA,CAAA,EAAA,GAK/Bq0J,KAAW,EACfr1G,WAAW,SACXizG,eAAe,cACf7sK,KAAK,UACL+pK,YAAAA,MACAtiB,WAAW,GACXhjI,UAAU,CAAE66C,GAAKwtG,UAAAA,EAAAA,GAGboC,KAAc,EAClBt1G,WAAW,YACX75D,OAAO,eACPC,KAAK,WACL+pK,YAAAA,MACA6C,aAAAA,MACAnlB,WAAW,GACXhjI,UAAU,CACR,EACE1kB,OAAO,YACP0nJ,WAAW,GACX7tF,WAAW,UAAA,GAEb,EACEA,WAAW,SACX75D,OAnIgB,0BAoIhB0nJ,WAAW,EAAA,GAEb,EACE1nJ,OAAO,MACPC,KAAK,MACL45D,WAAW,UACX6tF,WAAW,GACXhjI,UAAU,CAAE2pJ,EAAAA,EAAAA,CAAAA,EAAAA,GAOZe,KAAW,EACfpvK,OAAO,WACPC,KAAK,KACL4sK,aAAAA,MACAnoJ,UAAU,CACR+pJ,IACAM,IACA,EACEl1G,WAAW,WACX75D,OAAO,iDAAA,CAAA,EAAA,GAMPqvK,KAAe,EACnB7D,UAAU,CAER,EACE3xG,WAAW,YACX75D,OAAO,IAAI6a,OAjMf,gcAiM4C,MAAA,EAAA,GAE1C,EACEg/C,WAAW,WACX75D,OAAO,cACP0nJ,WAAW,EAAA,CAAA,EAAA,GAaX4nB,KAAa,EACjBz1G,WAAW,YACX75D,OAAO,yBACPC,KAAK,KACL4sK,aAAAA,MACAnlB,WAAW,GACXhjI,UAAU,CACR,EACEm1C,WAAW,WACX75D,OAAO,IAAI6a,OACT2vJ,GAASW,QAAQzoK,SAAAA,EAAWynB,QAAQ,OAAO,GAAA,GACxC,MAAA,GACL8hJ,YAAAA,MACAvkB,WAAW,EAAA,GAEbnoF,GAAK8qG,QAAQ9qG,GAAKwtG,YAAY,EAC5Bd,YAAAA,KAAY,CAAA,CAAA,EAAA,GAKZsD,KAAiB,CAErBD,IACAN,IACAF,IACAvvG,GAAKovG,aACLF,IACAM,IAEAE,IACAZ,IAhMc,EACdx0G,WAAW,WACX75D,OAAO,wBAAA,GAuJU,EACjB65D,WAAW,gBACX75D,OAAO,OACP0nJ,WAAW,EAAA,CAAA,GAyCP8nB,KAAU,EACdxvK,OAAO,MACPC,KAAK,MACLusK,cAAAA,MACAxC,YAAAA,MACAtiB,WAAW,GACXhjI,UAAU,CAAA,EAAG7J,OACX,QACA00J,IACA,EACEvvK,OAAO,MAjSC,CACZ,UACA,QACA,QACA,OACA,QACA,QACA,WACA,UACA,UACA,YACA,OACA,SACA,aACA,MAAA,EAmRuBihB,KAAK,GAAA,IAAO,KAC/B44C,WAAW,YACX6tF,WAAW,EAAA,GAEb,EACE7tF,WAAW,QACX75D,OAAO,aACP0nJ,WAAW,EAAA,CAAA,EAAA;AAOjB,iBAFA4nB,GAAW5qJ,SAASnQ,QAAQi7J,EAAAA,GAErB,EACLh1K,MAAM,cACNiyK,SAAS,CACP,MACA,KAAA,GAEFgB,kBAAAA,MACAxD,UAAUO,IACV9lJ,UAAU6qJ,GAAe10J,OACvBq0J,IACAC,IACAC,IACAC,IACAG,EAAAA,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACnUN,YAAIC,KAAoB,SAA2Bv0K,IAAAA;AAClD,iBAID,SAAyBA,IAAAA;AACxB,mBAAA,CAAA,CAASA,MAA0B,YAAA,OAAVA;UAAAA,EALFA,EAAAA,KAAAA,CAQxB,SAAmBA,IAAAA;AAClB,gBAAIw0K,KAAc/0K,OAAOkB,UAAU6G,SAAStI,KAAKc,EAAAA;AAEjD,mBAAuB,sBAAhBw0K,MACa,oBAAhBA,MAQL,SAAwBx0K,IAAAA;AACvB,qBAAOA,GAAMy0K,aAAaC;YAAAA,EARP10K,EAAAA;UAAAA,EAZJA,EAAAA;QAAAA;AAgBhB,YACI00K,KADiC,cAAA,OAAX50K,UAAyBA,OAAO60K,MAClB70K,OAAO60K,IAAI,eAAA,IAAmB;AAUtE,iBAASC,GAA8B50K,IAAO85B,IAAAA;AAC7C,iBAAA,UAAQA,GAAQkvC,SAAmBlvC,GAAQy6I,kBAAkBv0K,EAAAA,IAC1D60K,IANiBtnK,KAMKvN,IALlBiB,MAAM4I,QAAQ0D,EAAAA,IAAO,CAAA,IAAK,CAAA,IAKAvN,IAAO85B,EAAAA,IACrC95B;AAPJ,cAAqBuN;QAAAA;AAUrB,iBAASunK,GAAkBxpJ,IAAQyO,IAAQD,IAAAA;AAC1C,iBAAOxO,GAAO3L,OAAOoa,EAAAA,EAAQnvB,IAAI,SAAS+gG,IAAAA;AACzC,mBAAOipE,GAA8BjpE,IAAS7xE,EAAAA;UAAAA,CAAAA;QAAAA;AAoBhD,iBAASi7I,GAAQzpJ,IAAAA;AAChB,iBAAO7rB,OAAO0J,KAAKmiB,EAAAA,EAAQ3L,OAT5B,SAAyC2L,IAAAA;AACxC,mBAAO7rB,OAAO4lB,wBACX5lB,OAAO4lB,sBAAsBiG,EAAAA,EAAQvV,OAAO,SAAS+3G,IAAAA;AACtD,qBAAOxiG,GAAOjc,qBAAqBy+G,EAAAA;YAAAA,CAAAA,IAElC,CAAA;UAAA,EAI+DxiG,EAAAA,CAAAA;QAAAA;AAGnE,iBAAS0pJ,GAAmBv0K,IAAQC,IAAAA;AACnC,cAAA;AACC,mBAAOA,MAAYD;UAAAA,SACZoL,IAAN;AACD,mBAAA;UAAO;QAAA;AAWT,iBAASopK,GAAY3pJ,IAAQyO,IAAQD,IAAAA;AACpC,cAAIgnB,KAAc,CAAA;AAiBlB,iBAhBIhnB,GAAQy6I,kBAAkBjpJ,EAAAA,KAC7BypJ,GAAQzpJ,EAAAA,EAAQjb,QAAQ,SAAS/P,IAAAA;AAChCwgD,YAAAA,GAAYxgD,EAAAA,IAAOs0K,GAA8BtpJ,GAAOhrB,EAAAA,GAAMw5B,EAAAA;UAAAA,CAAAA,GAGhEi7I,GAAQh7I,EAAAA,EAAQ1pB,QAAQ,SAAS/P,IAAAA;AAAAA,aAblC,SAA0BgrB,IAAQhrB,IAAAA;AACjC,qBAAO00K,GAAmB1pJ,IAAQhrB,EAAAA,KAAAA,EAC5Bb,OAAOmB,eAAe1B,KAAKosB,IAAQhrB,EAAAA,KACpCb,OAAO4P,qBAAqBnQ,KAAKosB,IAAQhrB,EAAAA;YAAAA,GAWxBgrB,IAAQhrB,EAAAA,MAIzB00K,GAAmB1pJ,IAAQhrB,EAAAA,KAAQw5B,GAAQy6I,kBAAkBx6I,GAAOz5B,EAAAA,CAAAA,IACvEwgD,GAAYxgD,EAAAA,IAhDf,SAA0BA,IAAKw5B,IAAAA;AAC9B,kBAAA,CAAKA,GAAQo7I;AACZ,uBAAOL;AAER,kBAAIK,KAAcp7I,GAAQo7I,YAAY50K,EAAAA;AACtC,qBAA8B,cAAA,OAAhB40K,KAA6BA,KAAcL;YAAAA,EA2CnBv0K,IAAKw5B,EAAAA,EAASxO,GAAOhrB,EAAAA,GAAMy5B,GAAOz5B,EAAAA,GAAMw5B,EAAAA,IAE5EgnB,GAAYxgD,EAAAA,IAAOs0K,GAA8B76I,GAAOz5B,EAAAA,GAAMw5B,EAAAA;UAAAA,CAAAA,GAGzDgnB;QAAAA;AAGR,iBAAS+zH,GAAUvpJ,IAAQyO,IAAQD,IAAAA;AAAAA,WAClCA,KAAUA,MAAW,CAAA,GACbq7I,aAAar7I,GAAQq7I,cAAcL,IAC3Ch7I,GAAQy6I,oBAAoBz6I,GAAQy6I,qBAAqBA,IAGzDz6I,GAAQ86I,gCAAgCA;AAExC,cAAIQ,KAAgBn0K,MAAM4I,QAAQkwB,EAAAA;AAIlC,iBAFgCq7I,OADZn0K,MAAM4I,QAAQyhB,EAAAA,IAKvB8pJ,KACHt7I,GAAQq7I,WAAW7pJ,IAAQyO,IAAQD,EAAAA,IAEnCm7I,GAAY3pJ,IAAQyO,IAAQD,EAAAA,IAJ5B86I,GAA8B76I,IAAQD,EAAAA;QAAAA;AAQ/C+6I,QAAAA,GAAUvrI,MAAM,SAAsBtgC,IAAO8wB,IAAAA;AAC5C,cAAA,CAAK74B,MAAM4I,QAAQb,EAAAA;AAClB,kBAAM,IAAIwD,MAAM,mCAAA;AAGjB,iBAAOxD,GAAM+W,OAAO,SAAS7L,IAAMrO,IAAAA;AAClC,mBAAOgvK,GAAU3gK,IAAMrO,IAAMi0B,EAAAA;UAAAA,GAC3B,CAAA,CAAA;QAAA;AAGJ,YAAIu7I,KAAcR;AAElB/1K,QAAAA,GAAOD,UAAUw2K;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpIjBv2K,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAA;ACAzB,YAAI8hJ,KAAWjjJ,GAAOD,UAAU,SAAUmQ,IAAAA;AACtC,iBAAO,IAAIsmK,GAAStmK,EAAAA;QAAAA;AAGxB,iBAASsmK,GAAUtmK,IAAAA;AACflJ,eAAK9F,QAAQgP;QAAAA;AAyGjB,iBAASumK,GAAMnhK,IAAMg+B,IAAIojI,IAAAA;AACrB,cAAIh8I,KAAO,CAAA,GACPi8I,KAAU,CAAA,GACVC,KAAAA;AAEJ,iBAAO,SAAUC,GAAQC,IAAAA;AACrB,gBAAIhmK,KAAO4lK,KAAY1sG,GAAK8sG,EAAAA,IAASA,IACjCC,KAAY,CAAA,GAEZC,KAAAA,MAEAp2H,KAAQ,EACR9vC,MAAOA,IACPgmK,OAAQA,IACRp8I,MAAO,CAAA,EAAG7Z,OAAO6Z,EAAAA,GACjBmwF,QAAS8rD,GAAQA,GAAQxxK,SAAS,CAAA,GAClCwxK,SAAUA,IACVn1K,KAAMk5B,GAAKt4B,MAAAA,EAAO,EAAG,CAAA,GACrB60K,QAAyB,MAAhBv8I,GAAKv1B,QACd0V,OAAQ6f,GAAKv1B,QACb+xK,UAAW,MACXhlK,QAAS,SAAUgF,IAAGigK,IAAAA;AACbv2H,cAAAA,GAAMq2H,WACPr2H,GAAMiqE,OAAO/5G,KAAK8vC,GAAMp/C,GAAAA,IAAO0V,KAEnC0pC,GAAM9vC,OAAOoG,IACTigK,OAAUH,KAAAA;YAAY,GAE9B,QAAW,SAAUG,IAAAA;AAAAA,qBACVv2H,GAAMiqE,OAAO/5G,KAAK8vC,GAAMp/C,GAAAA,GAC3B21K,OAAUH,KAAAA;YAAY,GAE9BhlK,QAAS,SAAUmlK,IAAAA;AACXpsK,cAAAA,GAAQ61C,GAAMiqE,OAAO/5G,IAAAA,IACrB8vC,GAAMiqE,OAAO/5G,KAAKiJ,OAAO6mC,GAAMp/C,KAAK,CAAA,IAAA,OAG7Bo/C,GAAMiqE,OAAO/5G,KAAK8vC,GAAMp/C,GAAAA,GAE/B21K,OAAUH,KAAAA;YAAY,GAE9B3sK,MAAO,MACP64F,QAAS,SAAUj1E,IAAAA;AAAK8oJ,cAAAA,GAAU7zE,SAASj1E;YAAAA,GAC3CjW,OAAQ,SAAUiW,IAAAA;AAAK8oJ,cAAAA,GAAU/+J,QAAQiW;YAAAA,GACzCmpJ,KAAM,SAAUnpJ,IAAAA;AAAK8oJ,cAAAA,GAAUK,MAAMnpJ;YAAAA,GACrCg3I,MAAO,SAAUh3I,IAAAA;AAAK8oJ,cAAAA,GAAU9R,OAAOh3I;YAAAA,GACvCwX,MAAO,WAAA;AAAcmxI,cAAAA,KAAAA;YAAQ,GAC7BtrH,OAAQ,WAAA;AAAc0rH,cAAAA,KAAAA;YAAY,EAAA;AAGtC,gBAAA,CAAKJ;AAAO,qBAAOh2H;AAEnB,qBAASy2H,KAAAA;AACL,kBAA0B,YAAA,OAAfz2H,GAAM9vC,QAAoC,SAAf8vC,GAAM9vC,MAAe;AAClD8vC,gBAAAA,GAAMv2C,QAAQu2C,GAAMk2H,UAAUl2H,GAAM9vC,SACrC8vC,GAAMv2C,OAAOs0C,GAAWiC,GAAM9vC,IAAAA,IAGlC8vC,GAAM02H,SAA8B,KAArB12H,GAAMv2C,KAAKlF;AAE1B,yBAASlF,KAAI,GAAGA,KAAI02K,GAAQxxK,QAAQlF;AAChC,sBAAI02K,GAAQ12K,EAAAA,EAAG62K,UAAUA,IAAO;AAC5Bl2H,oBAAAA,GAAMs2H,WAAWP,GAAQ12K,EAAAA;AACzB;kBAAA;cAAA;AAKR2gD,gBAAAA,GAAM02H,SAAAA,MACN12H,GAAMv2C,OAAO;AAGjBu2C,cAAAA,GAAM22H,UAAAA,CAAW32H,GAAM02H,QACvB12H,GAAM42H,UAAAA,CAAW52H,GAAMq2H;YAAAA;AAG3BI,YAAAA,GAAAA;AAGA,gBAAIziG,KAAMthC,GAAGlzC,KAAKwgD,IAAOA,GAAM9vC,IAAAA;AAK/B,mBAAA,WAJI8jE,MAAqBh0B,GAAM1uC,UAAQ0uC,GAAM1uC,OAAO0iE,EAAAA,GAEhDmiG,GAAU7zE,UAAQ6zE,GAAU7zE,OAAO9iG,KAAKwgD,IAAOA,GAAM9vC,IAAAA,GAEpDkmK,MAEoB,YAAA,OAAdp2H,GAAM9vC,QACC,SAAf8vC,GAAM9vC,QAAkB8vC,GAAMs2H,aAC7BP,GAAQ//J,KAAKgqC,EAAAA,GAEby2H,GAAAA,GAEA9lK,GAAQqvC,GAAMv2C,MAAM,SAAU7I,IAAKvB,IAAAA;AAC/By6B,cAAAA,GAAK9jB,KAAKpV,EAAAA,GAENu1K,GAAUK,OAAKL,GAAUK,IAAIh3K,KAAKwgD,IAAOA,GAAM9vC,KAAKtP,EAAAA,GAAMA,EAAAA;AAE9D,kBAAIg/D,KAAQq2G,GAAOj2H,GAAM9vC,KAAKtP,EAAAA,CAAAA;AAC1Bk1K,cAAAA,MAAa50K,GAAe1B,KAAKwgD,GAAM9vC,MAAMtP,EAAAA,MAC7Co/C,GAAM9vC,KAAKtP,EAAAA,IAAOg/D,GAAM1vD,OAG5B0vD,GAAMi3G,SAASx3K,MAAK2gD,GAAMv2C,KAAKlF,SAAS,GACxCq7D,GAAMj5C,UAAe,KAALtnB,IAEZ82K,GAAU9R,QAAM8R,GAAU9R,KAAK7kK,KAAKwgD,IAAO4f,EAAAA,GAE/C9lC,GAAKxiB,IAAAA;YAAAA,CAAAA,GAETy+J,GAAQz+J,IAAAA,IAGR6+J,GAAU/+J,SAAO++J,GAAU/+J,MAAM5X,KAAKwgD,IAAOA,GAAM9vC,IAAAA,GAEhD8vC,MA9BgBA;UAAAA,EA+BxBtrC,EAAAA,EAAMxE;QAAAA;AAGb,iBAASk5D,GAAM9zB,IAAAA;AACX,cAAmB,YAAA,OAARA,MAA4B,SAARA,IAAc;AACzC,gBAAIC;AAEJ,gBAAIprC,GAAQmrC,EAAAA;AACRC,cAAAA,KAAM,CAAA;qBAoD0B,oBAAbuhI,GAlDPxhI,EAAAA;AACZC,cAAAA,KAAM,IAAItjB,KAAKqjB,GAAI4H,UAAU5H,GAAI4H,QAAAA,IAAY5H,EAAAA;qBAkDzD,SAAmBhmC,IAAAA;AAAO,qBAAoB,sBAAbwnK,GAAIxnK,EAAAA;YAAAA,EAhDXgmC,EAAAA;AACdC,cAAAA,KAAM,IAAI7jB,OAAO4jB,EAAAA;qBAgD7B,SAAkBhmC,IAAAA;AAAO,qBAAoB,qBAAbwnK,GAAIxnK,EAAAA;YAAAA,EA9CXgmC,EAAAA;AACbC,cAAAA,KAAM,EAAExN,SAASuN,GAAIvN,QAAAA;qBA8CjC,SAAoBz4B,IAAAA;AAAO,qBAAoB,uBAAbwnK,GAAIxnK,EAAAA;YAAAA,EA5CXgmC,EAAAA;AACfC,cAAAA,KAAM,IAAIktC,QAAQntC,EAAAA;qBA4C9B,SAAmBhmC,IAAAA;AAAO,qBAAoB,sBAAbwnK,GAAIxnK,EAAAA;YAAAA,EA1CXgmC,EAAAA;AACdC,cAAAA,KAAM,IAAI0B,OAAO3B,EAAAA;qBA0C7B,SAAmBhmC,IAAAA;AAAO,qBAAoB,sBAAbwnK,GAAIxnK,EAAAA;YAAAA,EAxCXgmC,EAAAA;AACdC,cAAAA,KAAM,IAAInrB,OAAOkrB,EAAAA;qBAEZv1C,OAAOY,UAAUZ,OAAOijB;AAC7BuyB,cAAAA,KAAMx1C,OAAOY,OAAOZ,OAAOijB,eAAesyB,EAAAA,CAAAA;qBAErCA,GAAI1zC,gBAAgB7B;AACzBw1C,cAAAA,KAAM,CAAA;iBAEL;AACD,kBAAIta,KACCqa,GAAI1zC,eAAe0zC,GAAI1zC,YAAYX,aACjCq0C,GAAIk6B,aACJ,CAAA,GAEHl7C,KAAI,WAAA;cAAA;AACRA,cAAAA,GAAErzB,YAAYg6B,IACdsa,KAAM,IAAIjhB;YAAAA;AAMd,mBAHA3jB,GAAQotC,GAAWzI,EAAAA,GAAM,SAAU10C,IAAAA;AAC/B20C,cAAAA,GAAI30C,EAAAA,IAAO00C,GAAI10C,EAAAA;YAAAA,CAAAA,GAEZ20C;UAAAA;AAEN,iBAAOD;QAAAA;AA3QhBsgI,QAAAA,GAAS30K,UAAUf,MAAM,SAAU62K,IAAAA;AAE/B,mBADI7mK,KAAO9J,KAAK9F,OACPjB,KAAI,GAAGA,KAAI03K,GAAGxyK,QAAQlF,MAAM;AACjC,gBAAIuB,KAAMm2K,GAAG13K,EAAAA;AACb,gBAAA,CAAK6Q,MAAAA,CAAShP,GAAe1B,KAAK0Q,IAAMtP,EAAAA,GAAM;AAC1CsP,cAAAA,KAAAA;AACA;YAAA;AAEJA,YAAAA,KAAOA,GAAKtP,EAAAA;UAAAA;AAEhB,iBAAOsP;QAAAA,GAGX0lK,GAAS30K,UAAUqL,MAAM,SAAUyqK,IAAAA;AAE/B,mBADI7mK,KAAO9J,KAAK9F,OACPjB,KAAI,GAAGA,KAAI03K,GAAGxyK,QAAQlF,MAAM;AACjC,gBAAIuB,KAAMm2K,GAAG13K,EAAAA;AACb,gBAAA,CAAK6Q,MAAAA,CAAShP,GAAe1B,KAAK0Q,IAAMtP,EAAAA;AACpC,qBAAA;AAEJsP,YAAAA,KAAOA,GAAKtP,EAAAA;UAAAA;AAEhB,iBAAA;QAAO,GAGXg1K,GAAS30K,UAAU6O,MAAM,SAAUinK,IAAIz2K,IAAAA;AAEnC,mBADI4P,KAAO9J,KAAK9F,OACPjB,KAAI,GAAGA,KAAI03K,GAAGxyK,SAAS,GAAGlF,MAAM;AACrC,gBAAIuB,KAAMm2K,GAAG13K,EAAAA;AACR6B,YAAAA,GAAe1B,KAAK0Q,IAAMtP,EAAAA,MAAMsP,GAAKtP,EAAAA,IAAO,CAAA,IACjDsP,KAAOA,GAAKtP,EAAAA;UAAAA;AAGhB,iBADAsP,GAAK6mK,GAAG13K,EAAAA,CAAAA,IAAMiB,IACPA;QAAAA,GAGXs1K,GAAS30K,UAAUiK,MAAM,SAAUwnC,IAAAA;AAC/B,iBAAOmjI,GAAKzvK,KAAK9F,OAAOoyC,IAAAA,IAAI;QAAA,GAGhCkjI,GAAS30K,UAAU0P,UAAU,SAAU+hC,IAAAA;AAEnC,iBADAtsC,KAAK9F,QAAQu1K,GAAKzvK,KAAK9F,OAAOoyC,IAAAA,KAAI,GAC3BtsC,KAAK9F;QAAAA,GAGhBs1K,GAAS30K,UAAUof,SAAS,SAAUqyB,IAAIo/E,IAAAA;AACtC,cAAI7oG,KAA4B,MAArB5gB,UAAU9D,QACjB2lI,KAAMjhH,KAAO7iB,KAAK9F,QAAQwxH;AAM9B,iBALA1rH,KAAKuK,QAAQ,SAAU2F,IAAAA;AACdlQ,iBAAKiwK,UAAWptJ,OACjBihH,KAAMx3F,GAAGlzC,KAAK4G,MAAM8jI,IAAK5zH,EAAAA;UAAAA,CAAAA,GAG1B4zH;QAAAA,GAGX0rC,GAAS30K,UAAUwxC,QAAQ,WAAA;AACvB,cAAIy3F,KAAM,CAAA;AAIV,iBAHA9jI,KAAKuK,QAAQ,SAAU2F,IAAAA;AACnB4zH,YAAAA,GAAIl0H,KAAK5P,KAAK0zB,IAAAA;UAAAA,CAAAA,GAEXowG;QAAAA,GAGX0rC,GAAS30K,UAAU4S,QAAQ,WAAA;AACvB,cAAIq2H,KAAM,CAAA;AAIV,iBAHA9jI,KAAKuK,QAAQ,SAAU2F,IAAAA;AACnB4zH,YAAAA,GAAIl0H,KAAK5P,KAAK8J,IAAAA;UAAAA,CAAAA,GAEXg6H;QAAAA,GAGX0rC,GAAS30K,UAAUqoE,QAAQ,WAAA;AACvB,cAAIysG,KAAU,CAAA,GAAIliK,KAAQ,CAAA;AAE1B,iBAAO,SAAUy1D,GAAOh0B,IAAAA;AACpB,qBAASj2C,KAAI,GAAGA,KAAI02K,GAAQxxK,QAAQlF;AAChC,kBAAI02K,GAAQ12K,EAAAA,MAAOi2C;AACf,uBAAOzhC,GAAMxU,EAAAA;AAIrB,gBAAmB,YAAA,OAARi2C,MAA4B,SAARA,IAAc;AACzC,kBAAIC,KAAM6zB,GAAK9zB,EAAAA;AAWf,qBATAygI,GAAQ//J,KAAKs/B,EAAAA,GACbzhC,GAAMmC,KAAKu/B,EAAAA,GAEX5kC,GAAQotC,GAAWzI,EAAAA,GAAM,SAAU10C,IAAAA;AAC/B20C,gBAAAA,GAAI30C,EAAAA,IAAO0oE,GAAMh0B,GAAI10C,EAAAA,CAAAA;cAAAA,CAAAA,GAGzBm1K,GAAQz+J,IAAAA,GACRzD,GAAMyD,IAAAA,GACCi+B;YAAAA;AAGP,mBAAOD;UAAAA,EAEZlvC,KAAK9F,KAAAA;QAAAA;AA2KZ,YAAIy9C,KAAah+C,OAAO0J,QAAQ,SAAe6F,IAAAA;AAC3C,cAAIye,KAAM,CAAA;AACV,mBAASntB,MAAO0O;AAAKye,YAAAA,GAAI/X,KAAKpV,EAAAA;AAC9B,iBAAOmtB;QAAAA;AAGX,iBAAS+oJ,GAAKxnK,IAAAA;AAAO,iBAAOvP,OAAOkB,UAAU6G,SAAStI,KAAK8P,EAAAA;QAAAA;AAQ3D,YAAInF,KAAU5I,MAAM4I,WAAW,SAAkB4vJ,IAAAA;AAC7C,iBAA8C,qBAAvCh6J,OAAOkB,UAAU6G,SAAStI,KAAKu6J,EAAAA;QAAAA,GAGtCppJ,KAAU,SAAUopJ,IAAIpxJ,IAAAA;AACxB,cAAIoxJ,GAAGppJ;AAAS,mBAAOopJ,GAAGppJ,QAAQhI,EAAAA;AAC7B,mBAAStJ,KAAI,GAAGA,KAAI06J,GAAGx1J,QAAQlF;AAChCsJ,YAAAA,GAAGoxJ,GAAG16J,EAAAA,GAAIA,IAAG06J,EAAAA;QAAAA;AAIrBppJ,QAAAA,GAAQotC,GAAW63H,GAAS30K,SAAAA,GAAY,SAAUL,IAAAA;AAC9CyhJ,UAAAA,GAASzhJ,EAAAA,IAAO,SAAU0O,IAAAA;AACtB,gBAAI8wC,KAAO,CAAA,EAAG5+C,MAAMhC,KAAK6I,WAAW,CAAA,GAChC9H,KAAI,IAAIq1K,GAAStmK,EAAAA;AACrB,mBAAO/O,GAAEK,EAAAA,EAAKoP,MAAMzP,IAAG6/C,EAAAA;UAAAA;QAAAA,CAAAA;AAI/B,YAAIl/C,KAAiBnB,OAAOmB,kBAAkB,SAAUoO,IAAK1O,IAAAA;AACzD,iBAAOA,MAAO0O;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC1SlBnQ,QAAAA,GAAQiyB,QAiCR,SAAe9B,IAAK8K,IAAAA;AAClB,cAAmB,YAAA,OAAR9K;AACT,kBAAM,IAAIllB,UAAU,+BAAA;AAQtB,mBALIkF,KAAM,CAAA,GACN+yF,KAAMjoE,MAAW,CAAA,GACjB6jB,KAAQ3uB,GAAIuF,MAAM,GAAA,GAClBmiJ,KAAM30E,GAAI+kE,UAAUA,IAEf/nK,KAAI,GAAGA,KAAI4+C,GAAM15C,QAAQlF,MAAK;AACrC,gBAAI6tB,KAAO+wB,GAAM5+C,EAAAA,GACb2F,KAAQkoB,GAAKlf,QAAQ,GAAA;AAGzB,gBAAA,EAAIhJ,KAAQ,IAAZ;AAIA,kBAAIpE,KAAMssB,GAAKmlB,UAAU,GAAGrtC,EAAAA,EAAOysD,KAAAA;AAGnC,kBAAInnD,QAAagF,GAAI1O,EAAAA,GAAM;AACzB,oBAAIiN,KAAMqf,GAAKmlB,UAAUrtC,KAAQ,GAAGkoB,GAAK3oB,MAAAA,EAAQktD,KAAAA;AAGlC,wBAAX5jD,GAAI,CAAA,MACNA,KAAMA,GAAIrM,MAAM,GAAA,EAAI,IAGtB8N,GAAI1O,EAAAA,IAAOq2K,GAAUppK,IAAKmpK,EAAAA;cAAAA;YAAAA;UAAAA;AAI9B,iBAAO1nK;QAAAA,GAlETnQ,GAAQu+H,YAqFR,SAAmB99H,IAAMiO,IAAKusB,IAAAA;AAC5B,cAAIioE,KAAMjoE,MAAW,CAAA,GACjBugD,KAAM0nB,GAAI+tC,UAAUA;AAExB,cAAmB,cAAA,OAARz1D;AACT,kBAAM,IAAIvwE,UAAU,0BAAA;AAGtB,cAAA,CAAK8sK,GAAmBvlJ,KAAK/xB,EAAAA;AAC3B,kBAAM,IAAIwK,UAAU,0BAAA;AAGtB,cAAI9J,KAAQq6E,GAAI9sE,EAAAA;AAEhB,cAAIvN,MAAAA,CAAU42K,GAAmBvlJ,KAAKrxB,EAAAA;AACpC,kBAAM,IAAI8J,UAAU,yBAAA;AAGtB,cAAIklB,KAAM1vB,KAAO,MAAMU;AAEvB,cAAI,QAAQ+hG,GAAI80E,QAAQ;AACtB,gBAAIA,KAAS90E,GAAI80E,SAAS;AAE1B,gBAAInlJ,MAAMmlJ,EAAAA,KAAAA,CAAYrjG,SAASqjG,EAAAA;AAC7B,oBAAM,IAAI/sK,UAAU,0BAAA;AAGtBklB,YAAAA,MAAO,eAAejrB,KAAKgK,MAAM8oK,EAAAA;UAAAA;AAGnC,cAAI90E,GAAIx6B,QAAQ;AACd,gBAAA,CAAKqvG,GAAmBvlJ,KAAK0wE,GAAIx6B,MAAAA;AAC/B,oBAAM,IAAIz9D,UAAU,0BAAA;AAGtBklB,YAAAA,MAAO,cAAc+yE,GAAIx6B;UAAAA;AAG3B,cAAIw6B,GAAIvoE,MAAM;AACZ,gBAAA,CAAKo9I,GAAmBvlJ,KAAK0wE,GAAIvoE,IAAAA;AAC/B,oBAAM,IAAI1vB,UAAU,wBAAA;AAGtBklB,YAAAA,MAAO,YAAY+yE,GAAIvoE;UAAAA;AAGzB,cAAIuoE,GAAI+0E,SAAS;AACf,gBAAuC,cAAA,OAA5B/0E,GAAI+0E,QAAQC;AACrB,oBAAM,IAAIjtK,UAAU,2BAAA;AAGtBklB,YAAAA,MAAO,eAAe+yE,GAAI+0E,QAAQC,YAAAA;UAAAA;AAGhCh1E,UAAAA,GAAIi1E,aACNhoJ,MAAO;AAGL+yE,UAAAA,GAAIk1E,WACNjoJ,MAAO;AAGT,cAAI+yE,GAAIm1E,UAAU;AAIhB,oBAHuC,YAAA,OAAjBn1E,GAAIm1E,WACtBn1E,GAAIm1E,SAAStlJ,YAAAA,IAAgBmwE,GAAIm1E,UAAAA;cAGnC,KAAA;AACEloJ,gBAAAA,MAAO;AACP;cACF,KAAK;AACHA,gBAAAA,MAAO;AACP;cACF,KAAK;AACHA,gBAAAA,MAAO;AACP;cACF,KAAK;AACHA,gBAAAA,MAAO;AACP;cACF;AACE,sBAAM,IAAIllB,UAAU,4BAAA;YAAA;UAAA;AAI1B,iBAAOklB;QAAAA;AAlKT,YAAI83I,KAASl4I,oBACTkhH,KAAS36G,oBAUTyhJ,KAAqB;AAkKzB,iBAASD,GAAU3nJ,IAAK83I,IAAAA;AACtB,cAAA;AACE,mBAAOA,GAAO93I,EAAAA;UAAAA,SACPjuB,IAAP;AACA,mBAAOiuB;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACvMX,YAAAnvB,IAAAL,IAAA8L;AAwCE,QAAA9L,KAAO,CAAA,GAAIK,KAcL,WAAA;AACP;AAIA,cAAIs3K,KAAgC,SAAUtM,IAAAA;AAC7C,mBAAOA,MAAQ,sBAAsBvvI,UACiB,aAArDA,OAAOmsG,iBAAiBojC,EAAAA,EAAM,iBAAA;UAAA;AAKhC,cAAsB,eAAA,OAAXvvI,UAAAA,EAA4B,cAAcA;AACpD,mBAAO,CAAA;AAIR,cAAI87I,KAAe,SAAU5rF,IAAW6rF,IAAiBC,IAAAA;AAUxD,gBAAIC;AAPJF,YAAAA,KAAkBA,MAAmB,KAChCC,MAA6B,MAAfA,OAElBA,KAAa;AAKd,gBAAIE,KAAqB,SAAUnhK,IAAAA;AAClCkhK,cAAAA,KAAkBlhK;YAAAA,GAMfohK,KAAa,WAAA;AAChBv/F,2BAAaq/F,EAAAA,GACbC,GAAmB,CAAA;YAAA,GAGhBE,KAAuB,SAAU7M,IAAAA;AACpC,qBAAO9mK,KAAKC,IAAI,GAAGwnF,GAAUmsF,SAAS9M,EAAAA,IAAQyM,EAAAA;YAAAA,GAW3CM,KAAY,SAAUC,IAAS7qI,IAAU8qI,IAAAA;AAE5C,kBADAL,GAAAA,GACiB,MAAbzqI,MAAmBA,MAAYA,KAAW,KAAMmqI,GAA8B3rF,GAAUz1B,IAAAA;AAC3Fy1B,gBAAAA,GAAUusF,IAAIF,EAAAA,GACVC,MACHA,GAAAA;mBAEK;AACN,oBAAIE,KAASxsF,GAAUysF,KAAAA,GACnBC,KAAWn0K,KAAKC,IAAI,GAAG6zK,EAAAA,IAAWG,IAClClrI,MAAY,oBAAInb,QAAOirB,QAAAA;AAC3B5P,gBAAAA,KAAWA,MAAYjpC,KAAKqB,IAAIrB,KAAK6I,IAAIsrK,EAAAA,GAAWb,EAAAA,GACpD,SAAUc,KAAAA;AACTX,kBAAAA,GAAmBv/F,WAAW,WAAA;AAE7B,wBAAIp3E,KAAIkD,KAAKqB,IAAI,KAAI,oBAAIusB,QAAOirB,QAAAA,IAAY9P,MAAaE,EAAAA,GAErDjc,KAAIhtB,KAAKC,IAAI,GAAGD,KAAKgK,MAAMiqK,KAASE,MAAUr3K,KAAI,MAAM,IAAEA,KAAEA,KAAIA,MAAG,IAAM,IAAFA,MAAK,EAAA,CAAA;AAChF2qF,oBAAAA,GAAUusF,IAAIhnJ,EAAAA,GACVlwB,KAAI,KAAM2qF,GAAU4sF,UAAAA,IAAcrnJ,KAAKy6D,GAAUz1B,KAAKsiH,eACzDF,GAAAA,KAEAlgG,WAAWw/F,IAAY,EAAA,GACnBK,MACHA,GAAAA;kBAAAA,GAGA,CAAA,CAAA;gBAAA,EAfJ;cAAA;YAAA,GA2BEQ,KAAe,SAAUzN,IAAM79H,IAAU8qI,IAAAA;AAC5CF,cAAAA,GAAUF,GAAqB7M,EAAAA,GAAO79H,IAAU8qI,EAAAA;YAAAA,GAU7CS,KAAiB,SAAU1N,IAAM79H,IAAU8qI,IAAAA;AAC9C,kBAAIU,KAAa3N,GAAK4N,sBAAAA,EAAwB/3D,QAC1Cg4D,KAAaltF,GAAUmsF,SAAS9M,EAAAA,IAAQ2N,IACxCG,KAAkBntF,GAAU4sF,UAAAA,GAC5BrnJ,KAAIy6D,GAAUysF,KAAAA,GACdW,KAAkB7nJ,KAAI4nJ;AACtBjB,cAAAA,GAAqB7M,EAAAA,IAAQ95I,MAAMynJ,KAAalB,KAAcqB,KAEjEL,GAAazN,IAAM79H,IAAU8qI,EAAAA,IAClBY,KAAapB,KAAcsB,KAEtChB,GAAUc,KAAaC,KAAkBrB,IAAYtqI,IAAU8qI,EAAAA,IACrDA,MACVA,GAAAA;YAAAA,GAaEe,KAAmB,SAAUhO,IAAM79H,IAAUnpC,IAAQi0K,IAAAA;AACxDF,cAAAA,GAAU7zK,KAAKC,IAAI,GAAGwnF,GAAUmsF,SAAS9M,EAAAA,IAAQr/E,GAAU4sF,UAAAA,IAAY,KAAKv0K,MAAUgnK,GAAK4N,sBAAAA,EAAwB/3D,SAAO,EAAA,GAAK1zE,IAAU8qI,EAAAA;YAAAA;AAwB1I,mBAAO,EACNgB,OAdW,SAAUC,IAAoBC,IAAAA;AAOzC,sBAN2B,MAAvBD,MAA4BA,QAC/B1B,KAAkB0B,MAEG,MAAlBC,MAAuBA,QAC1B1B,KAAa0B,KAEP,EACN3B,iBAAiBA,IACjBC,YAAYA,GAAAA;YAAAA,GAMbv8J,IAAIu9J,IACJP,KAAKH,IACLqB,UAAUV,IACVW,QAAQL,IACRt0I,MAAMkzI,IACN0B,QAAQ,WAAA;AAAc,qBAAA,CAAA,CAAS5B;YAAAA,GAC/BU,MAAMzsF,GAAUysF,MAChBN,UAAUnsF,GAAUmsF,SAAAA;UAAAA,GAMlByB,KAAU9xG,SAASx3D,iBACnBupK,KAAU,WAAA;AAAc,mBAAO/9I,OAAOg+I,WAAWF,GAAQG;UAAAA,GAGzDlyC,KAAY+vC,GAAa,EAC5BrhH,MAAMuR,SAASkyG,oBAAoBlyG,SAASvR,MAC5CgiH,KAAK,SAAUhnJ,IAAAA;AAAKuK,mBAAOirG,SAAS,GAAGx1G,EAAAA;UAAAA,GACvCknJ,MAAMoB,IACNjB,WAAW,WAAA;AAAc,mBAAO98I,OAAOm+I,eAAeL,GAAQM;UAAAA,GAC9D/B,UAAU,SAAU9M,IAAAA;AAAQ,mBAAOA,GAAK4N,sBAAAA,EAAwBkB,MAAMN,GAAAA,IAAYD,GAAQQ;UAAAA,EAAAA,CAAAA;AA2B3F,cAbAvyC,GAAUC,iBAAiB,SAAUuyC,IAAiBxC,IAAiBC,IAAAA;AACtE,mBAAOF,GAAa,EACnBrhH,MAAM8jH,IACN9B,KAAK,SAAUhnJ,IAAAA;AAAK8oJ,cAAAA,GAAgBN,YAAYxoJ;YAAAA,GAChDknJ,MAAM,WAAA;AAAc,qBAAO4B,GAAgBN;YAAAA,GAC3CnB,WAAW,WAAA;AAAc,qBAAOr0K,KAAKqB,IAAIy0K,GAAgBH,cAAcp+I,OAAOm+I,eAAeL,GAAQM,YAAAA;YAAAA,GACrG/B,UAAU,SAAU9M,IAAAA;AAAQ,qBAAOA,GAAK+O;YAAAA,EAAAA,GACtCvC,IAAiBC,EAAAA;UAAAA,GAMjB,sBAAsBh8I,UAAAA,CAAWA,OAAOw+I,eAAAA,CAAgB3C,GAA8B7vG,SAASvR,IAAAA,GAAO;AAEzG,gBAAIgkH,KAAqB,aAAaz+I,UAAU,eAAe+D,SAC3D26I,KAA+BD,MAAsB,uBAAuB16I;AAG5E26I,YAAAA,OACH36I,QAAQ46I,oBAAoB,SAG7B3+I,OAAO63F,iBAAiB,QAAQ,WAAA;AAE3B6mD,cAAAA,OAEH/hG,WAAW,WAAA;AAAc54C,wBAAQ46I,oBAAoB;cAAA,GAAY,CAAA,GACjE3+I,OAAO63F,iBAAiB,YAAY,SAAUwnC,IAAAA;AACzCA,gBAAAA,GAAMj7G,SAAS,gBAAgBi7G,GAAMj7G,SACxC2nF,GAAU0wC,IAAIpd,GAAMj7G,MAAMw6H,UAAAA;cAAAA,GAAAA,KAEzB,IAKA5+I,OAAOlH,SAAShmB,QACnB6pE,WAAW,WAAA;AAEV,oBAAIq/F,KAAajwC,GAAUyxC,MAAAA,EAAQxB;AACnC,oBAAIA,IAAY;AACf,sBAAI6C,KAAa7yG,SAAS8yG,eAAe9+I,OAAOlH,SAASy7B,KAAKt7B,MAAM,GAAA,EAAK,CAAA,CAAA;AACzE,sBAAI4lJ,IAAY;AACf,wBAAItC,KAAU9zK,KAAKC,IAAI,GAAGqjI,GAAUswC,SAASwC,EAAAA,IAAc7C,EAAAA,GACvD+C,KAAOhzC,GAAU4wC,KAAAA,IAASJ;AAE1B,yBAAKwC,MAAQA,KAAO,KACvB/+I,OAAOirG,SAAS,GAAGsxC,EAAAA;kBAAAA;gBAAAA;cAAAA,GAIpB,CAAA;YAAA,GAAA,KAGF;AAGH,gBAAIyC,KAAiB,IAAIlpJ,OAAO,2BAAA;AAChCkK,mBAAO63F,iBAAiB,SAAS,SAAUwnC,IAAAA;AAE1C,uBADIv4G,KAASu4G,GAAMrvI,QACZ82B,MAA6B,QAAnBA,GAAOM;AACvBN,gBAAAA,KAASA,GAAO4nE;AAGjB,kBAAA,EAAA,CAAK5nE,MAA0B,MAAhBu4G,GAAM4f,SAAe5f,GAAM6f,YAAY7f,GAAM8f,WAAW9f,GAAM+f,WAAW/f,GAAMggB,SAA9F;AAIA,oBAAIX,IAA8B;AACjC,sBAAIY,KAAev7I,QAAQqgB,SAAkC,YAAA,OAAlBrgB,QAAQqgB,QAAqBrgB,QAAQqgB,QAAQ,CAAA;AACxFk7H,kBAAAA,GAAaV,aAAa7yC,GAAU4wC,KAAAA;AACpC,sBAAA;AACC54I,4BAAQw7I,aAAaD,IAAc,EAAA;kBAAA,SAC3B75K,IAAP;kBAAOA;gBAAAA;AAKV,oBAAI8uD,KAAOzN,GAAO4hE,aAAa,MAAA,KAAW;AAC1C,oBAA0B,MAAtBn0D,GAAKniD,QAAQ,GAAA,KAAA,CAAe4sK,GAAejpJ,KAAK+wB,GAAOuc,SAAAA,GAAY;AACtE,sBAAIk5G,KAAU,GACVsC,KAAa7yG,SAAS8yG,eAAevqH,GAAK9d,UAAU,CAAA,CAAA;AACxD,sBAAa,QAAT8d,IAAc;AACjB,wBAAA,CAAKsqH;AAEJ;AAEDtC,oBAAAA,KAAUxwC,GAAUswC,SAASwC,EAAAA;kBAAAA;AAE9Bxf,kBAAAA,GAAMmgB,eAAAA;AAEN,sBAAIhD,KAAS,WAAA;AAAcx8I,2BAAOlH,WAAWy7B;kBAAAA,GAEzCynH,KAAajwC,GAAUyxC,MAAAA,EAAQxB;AAC/BA,kBAAAA,OACHO,KAAU9zK,KAAKC,IAAI,GAAG6zK,KAAUP,EAAAA,GAC5ByC,OACHjC,KAAS,WAAA;AAAcz4I,4BAAQ41D,UAAU,CAAA,GAAI,IAAIplC,EAAAA;kBAAAA,KAGnDw3E,GAAU0wC,IAAIF,IAAS,MAAMC,EAAAA;gBAAAA;cAAAA;YAAAA,GAAAA,KAE5B;UAAA;AAKJ,iBAAOzwC;QAAAA,EAzTG,GAAA,YAAW/7H,KAAA,cAAA,OAAAzL,KAAAA,GAAA,MAAAI,IAAAT,EAAA,IAAAK,QAAAkB,GAAA,UAAAuK;MAAA,GAAA,SAAAvK,IAAAd,IAAAO,IAAA;ACxCtB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAI42E,KAAc52E,GAAQ,GAAA,GACtBu6K,KAAgBv6K,GAAQ,GAAA;AAsB5B1B,QAAAA,GAAOD,UAJP,SAAmB0sB,IAAOrS,IAAAA;AACxB,iBAAO6hK,GAAcxvJ,MAAS,CAAA,GAAIrS,MAAU,CAAA,GAAIk+D,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACpBlDt4E,QAAAA,GAAOD,UAAU,SAASo2B,IAAMlG,IAAUisJ,IAAMC,IAAAA;AAC5C,cACIpoC,KAAO,IAAI/sE,KAAAA,WADQm1G,KAAuB,CAACA,IAAKhmJ,EAAAA,IAAQ,CAACA,EAAAA,GAC/B,EAACjvB,MAAMg1K,MAAQ,2BAAA,CAAA;AAC7C,cAAA,WAAW1/I,OAAO03G,UAAUkoC;AAKxB5/I,mBAAO03G,UAAUkoC,WAAWroC,IAAM9jH,EAAAA;eAEjC;AACD,gBAAIosJ,KAAW7/I,OAAOq9D,OAAOr9D,OAAOq9D,IAAIyiF,kBAAmB9/I,OAAOq9D,IAAIyiF,gBAAgBvoC,EAAAA,IAAQv3G,OAAO+/I,UAAUD,gBAAgBvoC,EAAAA,GAC3HyoC,KAAWh0G,SAASvI,cAAc,GAAA;AACtCu8G,YAAAA,GAASpiI,MAAM0nB,UAAU,QACzB06G,GAASzrH,OAAOsrH,IAChBG,GAASv8D,aAAa,YAAYhwF,EAAAA,GAAAA,WAMvBusJ,GAASt2C,YAChBs2C,GAASv8D,aAAa,UAAU,QAAA,GAGpCz3C,SAASvR,KAAKyR,YAAY8zG,EAAAA,GAC1BA,GAASC,MAAAA,GAGTtjG,WAAW,WAAA;AACP3Q,uBAASvR,KAAKk0D,YAAYqxD,EAAAA,GAC1BhgJ,OAAOq9D,IAAI6iF,gBAAgBL,EAAAA;YAAAA,GAC5B,GAAA;UAAA;QAAA;MAAA,GAAA,SAAAp6K,IAAAd,IAAAO,IAAA;AChCX1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACEzB,YAAI+1C,KAAS/1C,GAAQ,GAAA,GAWjBi7K,KAAe,SAAsBzsJ,IAAAA;AACvC,iBAAQ,aAAaqC,KAAKrC,EAAAA;QAAAA,GAGxB0sJ,KAAmB,SAA0B1sJ,IAAAA;AAC/C,iBAAQ,YAAYqC,KAAKrC,EAAAA;QAAAA;AAuD3B,iBAAS2sJ,GAAMC,IAAAA;AAEb,iBADyBA,GArEdrnJ,MAAM,eAAA,EAAiBxe,OAAO,SAAU4xB,IAAAA;AACjD,mBAAuB,OAAhBA,GAAKwpB,KAAAA;UAAAA,CAAAA,EAqEAvmD,IAAI,SAAU5K,IAAAA;AAC1B,mBAAO,EACLA,OAAOA,IACPgG,MAAMqqG,GAAQrwG,EAAAA,EAAAA;UAAAA,CAAAA;QAAAA;AAOpB,iBAASqwG,GAAQrhF,IAAAA;AACf,iBAAIysJ,GAAazsJ,EAAAA,IACR,eAlEQ,SAAsBA,IAAAA;AACvC,mBAbU,SAAeA,IAAAA;AACzB,qBAAQ,WAAWqC,KAAKrC,EAAAA;YAAAA,EAYXA,EAAAA,KAAAA,CAASysJ,GAAazsJ,EAAAA,KAAAA,CAAS0sJ,GAAiB1sJ,EAAAA;UAAAA,EAoE5CA,EAAAA,IACR,eAGL0sJ,GAAiB1sJ,EAAAA,IACZ,mBAGF;QAAA;AAzETlwB,QAAAA,GAAOD,UAAU,SAAUyzB,IAAAA;AACzB,cAAIF,KAASrqB,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA,GAC7E8zK,KAAWzpJ,GAAOypJ,UAClBC,KAAsB1pJ,GAAO0pJ,qBAE7B57J,KAAQ,GACR67J,KAAkB,CAAA;AACtBF,UAAAA,KAAWA,MAAY;AAEvB,cAAIG,KAAYL,GAAMrpJ,EAAAA,EAAK1nB,IAAI,SAAU+gG,IAAS5sG,IAAG6E,IAAAA;AACnD,gBAAI5D,KAAQ2rG,GAAQ3rG,OAChBgG,KAAO2lG,GAAQ3lG;AAEN,6BAATA,MACFka;AAGF,gBAAI+7J,KAAc1lI,GAAOslI,IAAU37J,EAAAA,GAC/BynB,KAAOs0I,KAAcj8K;AAMzB,gBAJa,iBAATgG,MACFka,MAGE47J,IAAqB;AAEvB,kBAAII,KAAYt4K,GAAI7E,KAAI,CAAA,GACpBo9K,KAAYv4K,GAAI7E,KAAI,CAAA;AAEX,+BAATiH,MAA4C,WAAnBk2K,GAAUl2K,QAAsC,iBAAnBm2K,GAAUn2K,SAElE2hC,KAAO,KAAKs0I,KAAcE,GAAUn8K,QAAQk8K,GAAUl8K,QAAQA,IAC9D+7K,GAAgBrmK,KAAK3W,KAAI,GAAGA,KAAI,CAAA;YAAA;AAIpC,mBAAO4oC;UAAAA,CAAAA;AAOT,iBAJAo0I,GAAgB1rK,QAAQ,SAAUoG,IAAAA;AAChC,mBAAOulK,GAAUvlK,EAAAA,IAAO;UAAA,CAAA,GAGnBulK,GAAUjmK,OAAO,SAAUxI,IAAAA;AAChC,mBAAA,CAAA,CAASA;UAAAA,CAAAA,EACRwY,KAAK,IAAA;QAAA;MAAA,GAAA,SAAAhlB,IAAAd,IAAAO,IAAA;AAAA,QAAAO,GAAA,UAAAP,GAAA,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACtEV,YAAImpH,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GAERA,GAAQ,GAAA,GAERA,GAAQ,GAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACXjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,EAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHjB,QAAAnpH,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK15B;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACtBtB,YAAIq5B,KAAS34B,GAAQ,EAAA,GACjBtB,KAAOsB,GAAQ,EAAA,GACfyrB,KAAWzrB,GAAQ,EAAA,GACnBk3E,KAAWl3E,GAAQ,GAAA,GACnBssF,KAAYtsF,GAAQ,GAAA,GACpB47K,KAAsB57K,GAAQ,GAAA,GAC9BurF,KAAkBvrF,GAAQ,EAAA,GAE1BsJ,KAAYqvB,GAAOrvB,WACnBslJ,KAAerjE,GAAgB,aAAA;AAInCjtF,QAAAA,GAAOD,UAAU,SAAU63B,IAAO2lJ,IAAAA;AAChC,cAAA,CAAKpwJ,GAASyK,EAAAA,KAAUghD,GAAShhD,EAAAA;AAAQ,mBAAOA;AAChD,cACI6B,IADA+jJ,KAAexvF,GAAUp2D,IAAO04H,EAAAA;AAEpC,cAAIktB,IAAc;AAGhB,gBAAA,WAFID,OAAoBA,KAAO,YAC/B9jJ,KAASr5B,GAAKo9K,IAAc5lJ,IAAO2lJ,EAAAA,GAAAA,CAC9BpwJ,GAASsM,EAAAA,KAAWm/C,GAASn/C,EAAAA;AAAS,qBAAOA;AAClD,kBAAMzuB,GAAU,yCAAA;UAAA;AAGlB,iBAAA,WADIuyK,OAAoBA,KAAO,WACxBD,GAAoB1lJ,IAAO2lJ,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACxBpC,YAAIljJ,KAAS34B,GAAQ,EAAA,GACjBtB,KAAOsB,GAAQ,EAAA,GACf64B,KAAa74B,GAAQ,EAAA,GACrByrB,KAAWzrB,GAAQ,EAAA,GAEnBsJ,KAAYqvB,GAAOrvB;AAIvBhL,QAAAA,GAAOD,UAAU,SAAU63B,IAAO2lJ,IAAAA;AAChC,cAAIh0K,IAAIkF;AACR,cAAa,aAAT8uK,MAAqBhjJ,GAAWhxB,KAAKquB,GAAMlvB,QAAAA,KAAAA,CAAcykB,GAAS1e,KAAMrO,GAAKmJ,IAAIquB,EAAAA,CAAAA;AAAS,mBAAOnpB;AACrG,cAAI8rB,GAAWhxB,KAAKquB,GAAMvrB,OAAAA,KAAAA,CAAa8gB,GAAS1e,KAAMrO,GAAKmJ,IAAIquB,EAAAA,CAAAA;AAAS,mBAAOnpB;AAC/E,cAAa,aAAT8uK,MAAqBhjJ,GAAWhxB,KAAKquB,GAAMlvB,QAAAA,KAAAA,CAAcykB,GAAS1e,KAAMrO,GAAKmJ,IAAIquB,EAAAA,CAAAA;AAAS,mBAAOnpB;AACrG,gBAAMzD,GAAU,yCAAA;QAAA;MAAA,GAAA,SAAA/I,IAAAd,IAAAO,IAAA;ACdlB,YAAI24B,KAAS34B,GAAQ,EAAA,GAGjBd,KAAiBD,OAAOC;AAE5BZ,QAAAA,GAAOD,UAAU,SAAUyB,IAAKN,IAAAA;AAC9B,cAAA;AACEN,YAAAA,GAAey5B,IAAQ74B,IAAK,EAAEN,OAAOA,IAAOirB,cAAAA,MAAoBC,UAAAA,KAAU,CAAA;UAAA,SACnE3e,IAAP;AACA4sB,YAAAA,GAAO74B,EAAAA,IAAON;UAAAA;AACd,iBAAOA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACVX,YAAIm5B,KAAS34B,GAAQ,EAAA,GACjBqJ,KAAUrJ,GAAQ,GAAA,GAClB23H,KAAgB33H,GAAQ,GAAA,GACxByrB,KAAWzrB,GAAQ,EAAA,GAGnByrF,KAFkBzrF,GAAQ,EAAA,EAEA,SAAA,GAC1BS,KAAQk4B,GAAOl4B;AAInBnC,QAAAA,GAAOD,UAAU,SAAUwvH,IAAAA;AACzB,cAAIlgG;AASF,iBAREtkB,GAAQwkH,EAAAA,MACVlgG,KAAIkgG,GAAc/sH,cAEd62H,GAAchqG,EAAAA,MAAOA,OAAMltB,MAAS4I,GAAQskB,GAAExtB,SAAAA,MACzCsrB,GAASkC,EAAAA,KAEN,UADVA,KAAIA,GAAE89D,EAAAA,QAFuD99D,KAAAA,UAAInkB,WAK5DmkB,KAAkBltB,KAAQktB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACpBrC,YAAIq+B,KAAwBhsD,GAAQ,GAAA,GAChCm1C,KAAUn1C,GAAQ,EAAA;AAItB1B,QAAAA,GAAOD,UAAU2tD,KAAwB,CAAA,EAAGhlD,WAAW,WAAA;AACrD,iBAAO,aAAamuC,GAAQ7vC,IAAAA,IAAQ;QAAA;MAAA,GAAA,SAAA/E,IAAAd,IAAAO,IAAA;ACPV,QAAAA,GAAQ,EAAA,EAId,eAAA;MAAA,GAAA,SAAAO,IAAAd,IAAA;MAAA,GAAA,SAAAc,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,aAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,oBAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,OAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,UAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,SAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,QAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,SAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,OAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,aAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,aAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,aAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJtB,YAAI24B,KAAS34B,GAAQ,EAAA;AACA,QAAAA,GAAQ,GAAA,EAId24B,GAAOvP,MAAM,QAAA,IAAQ;MAAA,GAAA,SAAA7oB,IAAAd,IAAA;MAAA,GAAA,SAAAc,IAAAd,IAAA;MAAA,GAAA,SAAAc,IAAAd,IAAAO,IAAA;ACLpC,YAAI24B,KAAS34B,GAAQ,EAAA,GACjB64B,KAAa74B,GAAQ,EAAA,GAErBspB,KAASqP,GAAOrP,QAChBhgB,KAAYqvB,GAAOrvB;AAEvBhL,QAAAA,GAAOD,UAAU,SAAUijC,IAAAA;AACzB,cAAuB,YAAA,OAAZA,MAAwBzI,GAAWyI,EAAAA;AAAW,mBAAOA;AAChE,gBAAMh4B,GAAU,eAAeggB,GAAOgY,EAAAA,IAAY,iBAAA;QAAA;MAAA,GAAA,SAAA/gC,IAAAd,IAAA;ACNpDnB,QAAAA,GAAOD,UAAU,EACf09K,aAAa,GACbC,qBAAqB,GACrBC,cAAc,GACdC,gBAAgB,GAChBC,aAAa,GACbC,eAAe,GACf1oB,cAAc,GACd2oB,sBAAsB,GACtBC,UAAU,GACVC,mBAAmB,GACnBC,gBAAgB,GAChBC,iBAAiB,GACjBC,mBAAmB,GACnBC,WAAW,GACXC,eAAe,GACft4D,cAAc,GACdqvC,UAAU,GACVkpB,kBAAkB,GAClBC,QAAQ,GACRC,aAAa,GACbC,eAAe,GACfC,eAAe,GACfC,gBAAgB,GAChBC,cAAc,GACdC,eAAe,GACfC,kBAAkB,GAClBC,kBAAkB,GAClBC,gBAAgB,GAChBC,kBAAkB,GAClBC,eAAe,GACfC,WAAW,EAAA;MAAA,GAAA,SAAAn9K,IAAAd,IAAAO,IAAA;ACjCe,QAAAA,GAAQ,EAAA,EAId,cAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,SAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,SAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,UAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAId,YAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACHM,QAAAA,GAAQ,EAAA,EAId,cAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJM,QAAAA,GAAQ,EAAA,EAEd,YAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACHtB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,EAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHjB,QAAAnpH,GAAQ,EAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA;AACR,YAAI29K,KAA+B39K,GAAQ,GAAA;AAE3C1B,QAAAA,GAAOD,UAAUs/K,GAA6BpxJ,EAAE,UAAA;MAAA,GAAA,SAAAhsB,IAAAd,IAAAO,IAAA;ACNhD,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGxb;AACb,iBAAOwb,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAel0I,SAAUmV,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPlH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASz+J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHvC,YAAIgqG,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGxtB;AACb,iBAAOwtB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAelmJ,cAAemnB,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPvH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASzwK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHvC,YAAIy3B,KAAI5kC,GAAQ,EAAA,GACZmN,KAAcnN,GAAQ,GAAA;AAK1B4kC,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAQntB,OAAgB,CAAA,EAAGA,YAAAA,GAAe,EAC1EA,aAAaA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACLf,YAAI+B,KAAQlP,GAAQ,EAAA,GAChBguD,KAAkBhuD,GAAQ,EAAA,GAC1B2rF,KAAsB3rF,GAAQ,GAAA,GAC9BojC,KAAoBpjC,GAAQ,EAAA,GAC5B69K,KAAsB79K,GAAQ,GAAA,GAE9B4E,KAAMrB,KAAKqB,KACXk5K,KAAe,CAAA,EAAG3wK,aAClB4wK,KAAAA,CAAAA,CAAkBD,MAAgB,IAAI,CAAC,CAAA,EAAG3wK,YAAY,GAAA,EAAI,IAAK,GAC/D6wK,KAAgBH,GAAoB,aAAA,GACpC3uD,KAAS6uD,MAAAA,CAAkBC;AAI/B1/K,QAAAA,GAAOD,UAAU6wH,KAAS,SAAqB+uD,IAAAA;AAE7C,cAAIF;AAAe,mBAAO7uK,GAAM4uK,IAAcx4K,MAAMiC,SAAAA,KAAc;AAClE,cAAI48B,KAAI6pB,GAAgB1oD,IAAAA,GACpB7B,KAAS2/B,GAAkBe,EAAAA,GAC3BjgC,KAAQT,KAAS;AAGrB,eAFI8D,UAAU9D,SAAS,MAAGS,KAAQU,GAAIV,IAAOynF,GAAoBpkF,UAAU,CAAA,CAAA,CAAA,IACvErD,KAAQ,MAAGA,KAAQT,KAASS,KAC1BA,MAAS,GAAGA;AAAS,gBAAIA,MAASigC,MAAKA,GAAEjgC,EAAAA,MAAW+5K;AAAe,qBAAO/5K,MAAS;AACzF,iBAAA;QAAQ,IACN45K;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1BJ,YAAIv8I,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGplB;AACb,iBAAOolB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAe99I,SAAU+e,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPlH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASroK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAIqvB,KAAI5kC,GAAQ,EAAA,GACZk+K,KAAUl+K,GAAQ,EAAA,EAAgCuV;AAQtDqvB,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAAA,CAPCt6B,GAAQ,GAAA,EAEY,QAAA,EAAA,GAKW,EAChEuV,QAAQ,SAAgBq4C,IAAAA;AACtB,iBAAOswH,GAAQ54K,MAAMsoD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZ3E,QAAAxJ,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK/5B,OAAO0J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH7B,YAAIi8B,KAAI5kC,GAAQ,EAAA,GACZilB,KAAWjlB,GAAQ,EAAA,GACnB81J,KAAa91J,GAAQ,GAAA;AAOzB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QANtBt6B,GAAQ,EAAA,EAEY,WAAA;AAAc81J,UAAAA,GAAW,CAAA;QAAA,CAAA,EAAA,GAIQ,EAC/DntJ,MAAM,SAAcgyB,IAAAA;AAClB,iBAAOm7H,GAAW7wI,GAAS0V,EAAAA,CAAAA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACX/B,YAAIwuF,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA,GACfkP,KAAQlP,GAAQ,EAAA;AAGfg5B,QAAAA,GAAK5P,SAAM4P,GAAK5P,OAAO,EAAEC,WAAWD,KAAKC,UAAAA,IAG9C/qB,GAAOD,UAAU,SAAmBs8B,IAAIksB,IAAUspG,IAAAA;AAChD,iBAAOjhJ,GAAM8pB,GAAK5P,KAAKC,WAAW,MAAM9hB,SAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACT1C,YAAIq9B,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjB2lE,KAAa3lE,GAAQ,EAAA,GACrBkP,KAAQlP,GAAQ,EAAA,GAChB44B,KAAc54B,GAAQ,EAAA,GACtBikC,KAAQjkC,GAAQ,EAAA,GAEhBS,KAAQk4B,GAAOl4B,OACfsuJ,KAAappF,GAAW,QAAQ,WAAA,GAChCx3C,KAAOyK,GAAY,IAAIzK,IAAAA,GACvBsuB,KAAS7jB,GAAY,GAAG6jB,MAAAA,GACxBluC,KAAaqqB,GAAY,GAAGrqB,UAAAA,GAC5BkgB,KAAUmK,GAAY,GAAGnK,OAAAA,GACzB2H,KAAiBwC,GAAY,GAAI5xB,QAAAA,GAEjCm3K,KAAS,oBACTC,KAAM,qBACNhtG,KAAK,qBAELitG,KAAM,SAAUlsJ,IAAO9uB,IAAQ8K,IAAAA;AACjC,cAAIuF,KAAO+oC,GAAOtuC,IAAQ9K,KAAS,CAAA,GAC/BgC,KAAOo3C,GAAOtuC,IAAQ9K,KAAS,CAAA;AACnC,iBAAK8qB,GAAKiwJ,IAAKjsJ,EAAAA,KAAAA,CAAWhE,GAAKijD,IAAI/rE,EAAAA,KAAW8oB,GAAKijD,IAAIj/C,EAAAA,KAAAA,CAAWhE,GAAKiwJ,IAAK1qK,EAAAA,IACnE,QAAQ0iB,GAAe7nB,GAAW4jB,IAAO,CAAA,GAAI,EAAA,IAC7CA;QAAAA,GAGP+8F,KAASjrF,GAAM,WAAA;AACjB,iBAAsC,uBAA/B8qH,GAAW,cAAA,KACY,gBAAzBA,GAAW,QAAA;QAAA,CAAA;AAGdA,QAAAA,MAIFnqH,GAAE,EAAE9Z,QAAQ,QAAQmP,MAAAA,MAAYK,QAAQ40F,GAAAA,GAAU,EAEhD7lG,WAAW,SAAmBsR,IAAIksB,IAAUspG,IAAAA;AAC1C,mBAAS5xJ,KAAI,GAAGC,KAAI+I,UAAU9D,QAAQ67C,KAAO7+C,GAAMjC,EAAAA,GAAID,KAAIC,IAAGD;AAAK+gD,YAAAA,GAAK/gD,EAAAA,IAAKgJ,UAAUhJ,EAAAA;AACvF,cAAIw5B,KAAS7oB,GAAM6/I,IAAY,MAAMzvG,EAAAA;AACrC,iBAAwB,YAAA,OAAVvnB,KAAqBtJ,GAAQsJ,IAAQomJ,IAAQE,EAAAA,IAAOtmJ;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACvCxE15B,QAAAA,GAAQwwE,aAuCR,SAAqByvG,IAAAA;AACnB,cAAIC,KAAOC,GAAQF,EAAAA,GACfG,KAAWF,GAAK,CAAA,GAChBG,KAAkBH,GAAK,CAAA;AAC3B,iBAAuC,KAA9BE,KAAWC,MAAuB,IAAKA;QAAAA,GA1ClDrgL,GAAQs4E,cAiDR,SAAsB2nG,IAAAA;AACpB,cAAIn6H,IAcA5lD,IAbAggL,KAAOC,GAAQF,EAAAA,GACfG,KAAWF,GAAK,CAAA,GAChBG,KAAkBH,GAAK,CAAA,GAEvBn7K,KAAM,IAAIu7K,GAVhB,SAAsBL,IAAKG,IAAUC,IAAAA;AACnC,mBAAuC,KAA9BD,KAAWC,MAAuB,IAAKA;UAAAA,EASlBJ,GAAKG,IAAUC,EAAAA,CAAAA,GAEzCE,KAAU,GAGVt7K,KAAMo7K,KAAkB,IACxBD,KAAW,IACXA;AAGJ,eAAKlgL,KAAI,GAAGA,KAAI+E,IAAK/E,MAAK;AACxB4lD,YAAAA,KACG06H,GAAUP,GAAI/vK,WAAWhQ,EAAAA,CAAAA,KAAO,KAChCsgL,GAAUP,GAAI/vK,WAAWhQ,KAAI,CAAA,CAAA,KAAO,KACpCsgL,GAAUP,GAAI/vK,WAAWhQ,KAAI,CAAA,CAAA,KAAO,IACrCsgL,GAAUP,GAAI/vK,WAAWhQ,KAAI,CAAA,CAAA,GAC/B6E,GAAIw7K,IAAAA,IAAcz6H,MAAO,KAAM,KAC/B/gD,GAAIw7K,IAAAA,IAAcz6H,MAAO,IAAK,KAC9B/gD,GAAIw7K,IAAAA,IAAmB,MAANz6H;AAGK,gBAApBu6H,OACFv6H,KACG06H,GAAUP,GAAI/vK,WAAWhQ,EAAAA,CAAAA,KAAO,IAChCsgL,GAAUP,GAAI/vK,WAAWhQ,KAAI,CAAA,CAAA,KAAO,GACvC6E,GAAIw7K,IAAAA,IAAmB,MAANz6H;AAGK,gBAApBu6H,OACFv6H,KACG06H,GAAUP,GAAI/vK,WAAWhQ,EAAAA,CAAAA,KAAO,KAChCsgL,GAAUP,GAAI/vK,WAAWhQ,KAAI,CAAA,CAAA,KAAO,IACpCsgL,GAAUP,GAAI/vK,WAAWhQ,KAAI,CAAA,CAAA,KAAO,GACvC6E,GAAIw7K,IAAAA,IAAcz6H,MAAO,IAAK,KAC9B/gD,GAAIw7K,IAAAA,IAAmB,MAANz6H;AAGnB,iBAAO/gD;QAAAA,GA3FT/E,GAAQizE,gBAkHR,SAAwBwtG,IAAAA;AAQtB,mBAPI36H,IACA7gD,KAAMw7K,GAAMr7K,QACZs7K,KAAaz7K,KAAM,GACnBs3H,KAAQ,CAAA,GACRokD,KAAiB,OAGZzgL,KAAI,GAAG0gL,KAAO37K,KAAMy7K,IAAYxgL,KAAI0gL,IAAM1gL,MAAKygL;AACtDpkD,YAAAA,GAAM1lH,KAAKgqK,GAAYJ,IAAOvgL,IAAIA,KAAIygL,KAAkBC,KAAOA,KAAQ1gL,KAAIygL,EAAAA,CAAAA;AAI1D,gBAAfD,MACF56H,KAAM26H,GAAMx7K,KAAM,CAAA,GAClBs3H,GAAM1lH,KACJiqK,GAAOh7H,MAAO,CAAA,IACdg7H,GAAQh7H,MAAO,IAAK,EAAA,IACpB,IAAA,KAEsB,MAAf46H,OACT56H,MAAO26H,GAAMx7K,KAAM,CAAA,KAAM,KAAKw7K,GAAMx7K,KAAM,CAAA,GAC1Cs3H,GAAM1lH,KACJiqK,GAAOh7H,MAAO,EAAA,IACdg7H,GAAQh7H,MAAO,IAAK,EAAA,IACpBg7H,GAAQh7H,MAAO,IAAK,EAAA,IACpB,GAAA;AAIJ,iBAAOy2E,GAAMr1G,KAAK,EAAA;QAAA;AAzIpB,iBALI45J,KAAS,CAAA,GACTN,KAAY,CAAA,GACZF,KAA4B,eAAA,OAAf/hI,aAA6BA,aAAan8C,OAEvD87C,KAAO,oEACFh+C,KAAI,GAAG+E,KAAMi5C,GAAK94C,QAAQlF,KAAI+E,IAAAA,EAAO/E;AAC5C4gL,UAAAA,GAAO5gL,EAAAA,IAAKg+C,GAAKh+C,EAAAA,GACjBsgL,GAAUtiI,GAAKhuC,WAAWhQ,EAAAA,CAAAA,IAAMA;AAQlC,iBAASigL,GAASF,IAAAA;AAChB,cAAIh7K,KAAMg7K,GAAI76K;AAEd,cAAIH,KAAM,IAAI;AACZ,kBAAM,IAAI0I,MAAM,gDAAA;AAKlB,cAAIyyK,KAAWH,GAAIpxK,QAAQ,GAAA;AAO3B,iBAAA,OANIuxK,OAAiBA,KAAWn7K,KAMzB,CAACm7K,IAJcA,OAAan7K,KAC/B,IACA,IAAKm7K,KAAW,CAAA;QAAA;AAsEtB,iBAASS,GAAaJ,IAAO5yK,IAAO3H,IAAAA;AAGlC,mBAFI4/C,IARoB+b,IASpBqqG,KAAS,CAAA,GACJhsK,KAAI2N,IAAO3N,KAAIgG,IAAKhG,MAAK;AAChC4lD,YAAAA,MACI26H,GAAMvgL,EAAAA,KAAM,KAAM,aAClBugL,GAAMvgL,KAAI,CAAA,KAAM,IAAK,UACP,MAAfugL,GAAMvgL,KAAI,CAAA,IACbgsK,GAAOr1J,KAdFiqK,IADiBj/G,KAeM/b,OAdT,KAAK,EAAA,IACxBg7H,GAAOj/G,MAAO,KAAK,EAAA,IACnBi/G,GAAOj/G,MAAO,IAAI,EAAA,IAClBi/G,GAAa,KAANj/G,EAAAA,CAAAA;AAaT,iBAAOqqG,GAAOhlJ,KAAK,EAAA;QAAA;AAjGrBs5J,QAAAA,GAAU,IAAItwK,WAAW,CAAA,CAAA,IAAM,IAC/BswK,GAAU,IAAItwK,WAAW,CAAA,CAAA,IAAM;MAAA,GAAA,SAAAhO,IAAAd,IAAA;AClB/BpB,QAAAA,GAAQgyE,OAAO,SAAU/7B,IAAQjxC,IAAQ+7K,IAAMC,IAAMC,IAAAA;AACnD,cAAI/+K,IAAG5B,IACH4gL,KAAiB,IAATD,KAAcD,KAAO,GAC7BG,MAAQ,KAAKD,MAAQ,GACrBE,KAAQD,MAAQ,GAChBE,KAAAA,IACAnhL,KAAI6gL,KAAQE,KAAS,IAAK,GAC1BzgL,KAAIugL,KAAAA,KAAY,GAChB9+K,KAAIg0C,GAAOjxC,KAAS9E,EAAAA;AAOxB,eALAA,MAAKM,IAEL0B,KAAID,MAAM,KAAA,CAAOo/K,MAAU,GAC3Bp/K,OAAAA,CAAQo/K,IACRA,MAASH,IACFG,KAAQ,GAAGn/K,KAAS,MAAJA,KAAW+zC,GAAOjxC,KAAS9E,EAAAA,GAAIA,MAAKM,IAAG6gL,MAAS;AAAA;AAKvE,eAHA/gL,KAAI4B,MAAM,KAAA,CAAOm/K,MAAU,GAC3Bn/K,OAAAA,CAAQm/K,IACRA,MAASL,IACFK,KAAQ,GAAG/gL,KAAS,MAAJA,KAAW21C,GAAOjxC,KAAS9E,EAAAA,GAAIA,MAAKM,IAAG6gL,MAAS;AAAA;AAEvE,cAAU,MAANn/K;AACFA,YAAAA,KAAI,IAAIk/K;eACH;AAAA,gBAAIl/K,OAAMi/K;AACf,qBAAO7gL,KAAIyF,MAAsBwH,IAAAA,KAAdtL,KAAAA,KAAS;AAE5B3B,YAAAA,MAAQ4E,KAAKkxE,IAAI,GAAG4qG,EAAAA,GACpB9+K,MAAQk/K;UAAAA;AAEV,kBAAQn/K,KAAAA,KAAS,KAAK3B,KAAI4E,KAAKkxE,IAAI,GAAGl0E,KAAI8+K,EAAAA;QAAAA,GAG5ChhL,GAAQkoE,QAAQ,SAAUjyB,IAAQ90C,IAAO6D,IAAQ+7K,IAAMC,IAAMC,IAAAA;AAC3D,cAAI/+K,IAAG5B,IAAGC,IACN2gL,KAAiB,IAATD,KAAcD,KAAO,GAC7BG,MAAQ,KAAKD,MAAQ,GACrBE,KAAQD,MAAQ,GAChBG,KAAe,OAATN,KAAc97K,KAAKkxE,IAAI,GAAA,GAAI,IAAMlxE,KAAKkxE,IAAI,GAAA,GAAI,IAAM,GAC1Dl2E,KAAI6gL,KAAO,IAAKE,KAAS,GACzBzgL,KAAIugL,KAAO,IAAA,IACX9+K,KAAId,KAAQ,KAAgB,MAAVA,MAAe,IAAIA,KAAQ,IAAK,IAAI;AAmC1D,eAjCAA,KAAQ+D,KAAK6I,IAAI5M,EAAAA,GAEb0xB,MAAM1xB,EAAAA,KAAUA,OAAUoM,IAAAA,KAC5BjN,KAAIuyB,MAAM1xB,EAAAA,IAAS,IAAI,GACvBe,KAAIi/K,OAEJj/K,KAAIgD,KAAKgK,MAAMhK,KAAK2nF,IAAI1rF,EAAAA,IAAS+D,KAAKq8K,GAAAA,GAClCpgL,MAASZ,KAAI2E,KAAKkxE,IAAI,GAAA,CAAIl0E,EAAAA,KAAM,MAClCA,MACA3B,MAAK,KAGLY,MADEe,KAAIk/K,MAAS,IACNE,KAAK/gL,KAEL+gL,KAAKp8K,KAAKkxE,IAAI,GAAG,IAAIgrG,EAAAA,KAEpB7gL,MAAK,MACf2B,MACA3B,MAAK,IAGH2B,KAAIk/K,MAASD,MACf7gL,KAAI,GACJ4B,KAAIi/K,MACKj/K,KAAIk/K,MAAS,KACtB9gL,MAAMa,KAAQZ,KAAK,KAAK2E,KAAKkxE,IAAI,GAAG4qG,EAAAA,GACpC9+K,MAAQk/K,OAER9gL,KAAIa,KAAQ+D,KAAKkxE,IAAI,GAAGgrG,KAAQ,CAAA,IAAKl8K,KAAKkxE,IAAI,GAAG4qG,EAAAA,GACjD9+K,KAAI,KAID8+K,MAAQ,GAAG/qI,GAAOjxC,KAAS9E,EAAAA,IAAS,MAAJI,IAAUJ,MAAKM,IAAGF,MAAK,KAAK0gL,MAAQ;AAAA;AAI3E,eAFA9+K,KAAKA,MAAK8+K,KAAQ1gL,IAClB4gL,MAAQF,IACDE,KAAO,GAAGjrI,GAAOjxC,KAAS9E,EAAAA,IAAS,MAAJgC,IAAUhC,MAAKM,IAAG0B,MAAK,KAAKg/K,MAAQ;AAAA;AAE1EjrI,UAAAA,GAAOjxC,KAAS9E,KAAIM,EAAAA,KAAU,MAAJyB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnF5B,YAAI6oH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAEIf,KAFOe,GAAQ,EAAA,EAEDf,QAEdC,KAAiBZ,GAAOD,UAAU,SAAwBs8B,IAAI76B,IAAKgiH,IAAAA;AACrE,iBAAO7iH,GAAOC,eAAey7B,IAAI76B,IAAKgiH,EAAAA;QAAAA;AAGpC7iH,QAAAA,GAAOC,eAAeu7B,SAAMv7B,GAAeu7B,OAAAA;MAAO,GAAA,SAAAl6B,IAAAd,IAAAO,IAAA;ACTtD,YAAI4kC,KAAI5kC,GAAQ,EAAA,GACZmwC,KAAcnwC,GAAQ,EAAA,GACtBd,KAAiBc,GAAQ,EAAA,EAAuCusB;AAKpEqY,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QAAQr7B,OAAOC,mBAAmBA,IAAgBu7B,MAAAA,CAAO0V,GAAAA,GAAe,EACxGjxC,gBAAgBA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACRlB,YAAIqiC,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBk/B,KAAoBnE,SAAS56B;AAEjC7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAG56B;AACb,iBAAO46B,OAAOuE,MAAsBqC,GAAcrC,IAAmBvE,EAAAA,KAAOi5H,OAAQ10H,GAAkBn/B,OAAQu0B,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPzH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,UAAA,EAAY79K;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH1C,YAAI6kC,KAAI5kC,GAAQ,EAAA,GACZD,KAAOC,GAAQ,GAAA;AAInB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,YAAYqP,OAAAA,MAAaG,QAAQS,SAASh7B,SAASA,GAAAA,GAAQ,EACrEA,MAAMA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNR,QAAAC,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK/5B,OAAOq+B;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH7B,YAAIsH,KAAI5kC,GAAQ,EAAA,GACZs9B,KAASt9B,GAAQ,GAAA;AAKrB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QAAQr7B,OAAOq+B,WAAWA,GAAAA,GAAU,EACpEA,QAAQA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPV,YAAIiE,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGj6B;AACb,iBAAOi6B,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAe3yJ,QAAS4zB,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPjH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASl9K;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAIkkC,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjBqJ,KAAUrJ,GAAQ,GAAA,GAClB23H,KAAgB33H,GAAQ,GAAA,GACxByrB,KAAWzrB,GAAQ,EAAA,GACnB+tH,KAAkB/tH,GAAQ,GAAA,GAC1BojC,KAAoBpjC,GAAQ,EAAA,GAC5BguD,KAAkBhuD,GAAQ,EAAA,GAC1BmuH,KAAiBnuH,GAAQ,GAAA,GACzBurF,KAAkBvrF,GAAQ,EAAA,GAC1BqtJ,KAA+BrtJ,GAAQ,GAAA,GACvC6/K,KAAW7/K,GAAQ,GAAA,GAEnB8/K,KAAsBzyB,GAA6B,OAAA,GAEnD5hE,KAAUF,GAAgB,SAAA,GAC1B9qF,KAAQk4B,GAAOl4B,OACf+C,KAAMD,KAAKC;AAKfohC,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAAA,CAASwlJ,GAAAA,GAAuB,EAChEp/K,OAAO,SAAewL,IAAO3H,IAAAA;AAC3B,cAKIqmB,IAAamN,IAAQ/3B,IALrBmkC,KAAI6pB,GAAgB1oD,IAAAA,GACpB7B,KAAS2/B,GAAkBe,EAAAA,GAC3B1+B,KAAIsoH,GAAgB7hH,IAAOzI,EAAAA,GAC3B2qH,KAAML,GAAAA,WAAgBxpH,KAAoBd,KAASc,IAAKd,EAAAA;AAG5D,cAAI4F,GAAQ86B,EAAAA,MACVvZ,KAAcuZ,GAAErjC,cAEZ62H,GAAc/sG,EAAAA,MAAiBA,OAAgBnqB,MAAS4I,GAAQuhB,GAAYzqB,SAAAA,MAErEsrB,GAASb,EAAAA,KAEE,UADpBA,KAAcA,GAAY6gE,EAAAA,QAF1B7gE,KAAAA,SAKEA,OAAgBnqB,MAAAA,WAASmqB;AAC3B,mBAAOi1J,GAAS17I,IAAG1+B,IAAG2oH,EAAAA;AAI1B,eADAr2F,KAAS,KAAA,WAAKnN,KAA4BnqB,KAAQmqB,IAAapnB,GAAI4qH,KAAM3oH,IAAG,CAAA,CAAA,GACvEzF,KAAI,GAAGyF,KAAI2oH,IAAK3oH,MAAKzF;AAASyF,YAAAA,MAAK0+B,MAAGgqF,GAAep2F,IAAQ/3B,IAAGmkC,GAAE1+B,EAAAA,CAAAA;AAEvE,iBADAsyB,GAAOt0B,SAASzD,IACT+3B;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/CX,QAAA/3B,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKv4B,MAAM4I;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHpB,QAAArJ,GAAQ,EAAA,EAKd,EAAE8qB,QAAQ,SAASmP,MAAAA,KAAM,GAAQ,EACjC5wB,SALYrJ,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACDtB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGpb;AACb,iBAAOob,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAe9zI,SAAU+U,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPlH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASr+J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAIqlB,KAAI5kC,GAAQ,EAAA,GACZ+/K,KAAU//K,GAAQ,GAAA,EAA6B8Z,MAC/C+jK,KAAsB79K,GAAQ,GAAA,GAC9BggL,KAAiBhgL,GAAQ,GAAA,GACzBgjK,KAAUhjK,GAAQ,GAAA;AAStB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAAA,CAPdujJ,GAAoB,QAAA,KAAA,CAGtB7a,MAAWgd,KAAiB,MAAMA,KAAiB,GAAA,GAIK,EACxEzgK,QAAQ,SAAgBquC,IAAAA;AACtB,cAAInqD,KAAS8D,UAAU9D;AACvB,iBAAOs8K,GAAQz6K,MAAMsoD,IAAYnqD,IAAQA,KAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACjBzE,YAAImvB,KAAS34B,GAAQ,EAAA,GACjBytC,KAAYztC,GAAQ,EAAA,GACpBilB,KAAWjlB,GAAQ,EAAA,GACnBi0C,KAAgBj0C,GAAQ,GAAA,GACxBojC,KAAoBpjC,GAAQ,EAAA,GAE5BsJ,KAAYqvB,GAAOrvB,WAGnB6jD,KAAe,SAAU8yH,IAAAA;AAC3B,iBAAO,SAAUt8I,IAAMiqB,IAAYsjG,IAAiBtrE,IAAAA;AAClDn4C,YAAAA,GAAUmgB,EAAAA;AACV,gBAAIzpB,KAAIlf,GAAS0e,EAAAA,GACbzL,KAAO+b,GAAc9P,EAAAA,GACrB1gC,KAAS2/B,GAAkBe,EAAAA,GAC3BjgC,KAAQ+7K,KAAWx8K,KAAS,IAAI,GAChClF,KAAI0hL,KAAAA,KAAgB;AACxB,gBAAI/uB,KAAkB;AAAG,yBAAa;AACpC,oBAAIhtJ,MAASg0B,IAAM;AACjB0tD,kBAAAA,KAAO1tD,GAAKh0B,EAAAA,GACZA,MAAS3F;AACT;gBAAA;AAGF,oBADA2F,MAAS3F,IACL0hL,KAAW/7K,KAAQ,IAAIT,MAAUS;AACnC,wBAAMoF,GAAU,6CAAA;cAAA;AAGpB,mBAAM22K,KAAW/7K,MAAS,IAAIT,KAASS,IAAOA,MAAS3F;AAAO2F,cAAAA,MAASg0B,OACrE0tD,KAAOh4B,GAAWg4B,IAAM1tD,GAAKh0B,EAAAA,GAAQA,IAAOigC,EAAAA;AAE9C,mBAAOyhD;UAAAA;QAAAA;AAIXtnF,QAAAA,GAAOD,UAAU,EAGfyb,MAAMqzC,GAAAA,KAAa,GAGnBpzC,OAAOozC,GAAAA,IAAa,EAAA;MAAA,GAAA,SAAA5sD,IAAAd,IAAAO,IAAA;ACzCtB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGvwB;AACb,iBAAOuwB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAejpJ,MAAOkqB,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACP/G,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASxzK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAIw6B,KAAI5kC,GAAQ,EAAA,GACZkgL,KAAOlgL,GAAQ,EAAA,EAAgCoK;AAQnDw6B,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAAA,CAPCt6B,GAAQ,GAAA,EAEY,KAAA,EAAA,GAKW,EAChEoK,KAAK,SAAawjD,IAAAA;AAChB,iBAAOsyH,GAAK56K,MAAMsoD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACJ3D,YAAIhL,KAAEwB,GAAQ,GAAA,GAAiBA,KAAE,OAAMK,KAAE;AAAMhC,QAAAA,GAAQ8hL,WAAS,OAAM9hL,GAAQ+hL,aAAW,OAAM/hL,GAAQgiL,WAAS;AAAM,YAAI1qJ,KAAE,OAAMt2B,KAAE,OAAMI,KAAE;AAAMpB,QAAAA,GAAQiiL,WAAS;AAAM,YAAIh0J,KAAE,OAAM5mB,KAAE;AACpM,YAAG,cAAA,OAAoBpG,UAAQA,OAAO60K,KAAI;AAAC,cAAIvmJ,KAAEtuB,OAAO60K;AAAIn0K,UAAAA,KAAE4tB,GAAE,eAAA,GAAiBvtB,KAAEutB,GAAE,cAAA,GAAgBvvB,GAAQ8hL,WAASvyJ,GAAE,gBAAA,GAAkBvvB,GAAQ+hL,aAAWxyJ,GAAE,mBAAA,GAAqBvvB,GAAQgiL,WAASzyJ,GAAE,gBAAA,GAAkB+H,KAAE/H,GAAE,gBAAA,GAAkBvuB,KAAEuuB,GAAE,eAAA,GAAiBnuB,KAAEmuB,GAAE,mBAAA,GAAqBvvB,GAAQiiL,WAAS1yJ,GAAE,gBAAA,GAAkBtB,KAAEsB,GAAE,YAAA,GAAcloB,KAAEkoB,GAAE,YAAA;QAAA;AAAc,YAAIpY,KAAE,cAAA,OAAoBlW,UAAQA,OAAO2F;AACtR,iBAASswB,GAAEzqB,IAAAA;AAAG,mBAAQC,KAAE,2DAAyDD,IAAElM,KAAE,GAAEA,KAAE2I,UAAU9D,QAAO7E;AAAImM,YAAAA,MAAG,aAAW4pB,mBAAmBptB,UAAU3I,EAAAA,CAAAA;AAAI,iBAAM,2BAAyBkM,KAAE,aAAWC,KAAE;QAAA;AACpU,YAAImiB,KAAE,EAACqzJ,WAAU,WAAA;AAAW,iBAAA;QAAM,GAAIC,oBAAmB,WAAA;QAAA,GAAaC,qBAAoB,WAAA;QAAA,GAAaC,iBAAgB,WAAA;QAAA,EAAA,GAAcprJ,KAAE,CAAA;AAAG,iBAAS3H,GAAE7iB,IAAEC,IAAEnM,IAAAA;AAAG0G,eAAKylB,QAAMjgB,IAAExF,KAAK8X,UAAQrS,IAAEzF,KAAKiiG,OAAKjyE,IAAEhwB,KAAKmL,UAAQ7R,MAAGsuB;QAAAA;AACpN,iBAASiI,KAAAA;QAAAA;AAA6B,iBAASpI,GAAEjiB,IAAEC,IAAEnM,IAAAA;AAAG0G,eAAKylB,QAAMjgB,IAAExF,KAAK8X,UAAQrS,IAAEzF,KAAKiiG,OAAKjyE,IAAEhwB,KAAKmL,UAAQ7R,MAAGsuB;QAAAA;AADsGS,QAAAA,GAAExtB,UAAUogF,mBAAiB,CAAA,GAAG5yD,GAAExtB,UAAUm4F,WAAS,SAASxtF,IAAEC,IAAAA;AAAG,cAAG,YAAA,OAAkBD,MAAG,cAAA,OAAoBA,MAAG,QAAMA;AAAE,kBAAMkB,MAAMupB,GAAE,EAAA,CAAA;AAAKjwB,eAAKmL,QAAQiwK,gBAAgBp7K,MAAKwF,IAAEC,IAAE,UAAA;QAAA,GAAa4iB,GAAExtB,UAAUosI,cAAY,SAASzhI,IAAAA;AAAGxF,eAAKmL,QAAQ+vK,mBAAmBl7K,MAAKwF,IAAE,aAAA;QAAA,GACndqqB,GAAEh1B,YAAUwtB,GAAExtB;AAAsF,YAAIokC,KAAExX,GAAE5sB,YAAU,IAAIg1B;AAAEoP,QAAAA,GAAEzjC,cAAYisB,IAAEvuB,GAAE+lC,IAAE5W,GAAExtB,SAAAA,GAAWokC,GAAEo8I,uBAAAA;AAAwB,YAAI57I,KAAE,EAAC8L,SAAQ,KAAA,GAAMlM,KAAE1lC,OAAOkB,UAAUC,gBAAeikC,KAAE,EAACvkC,KAAAA,MAAOkD,KAAAA,MAAO49K,QAAAA,MAAUC,UAAAA,KAAS;AAChS,iBAASh8I,GAAE/5B,IAAEC,IAAEnM,IAAAA;AAAG,cAAI2B,IAAE1B,KAAE,CAAA,GAAG4G,KAAE,MAAKoI,KAAE;AAAK,cAAG,QAAM9C;AAAE,iBAAIxK,MAAAA,WAAcwK,GAAE/H,QAAM6K,KAAE9C,GAAE/H,MAAAA,WAAc+H,GAAEjL,QAAM2F,KAAE,KAAGsF,GAAEjL,MAAKiL;AAAE45B,cAAAA,GAAEjmC,KAAKqM,IAAExK,EAAAA,KAAAA,CAAK8jC,GAAEjkC,eAAeG,EAAAA,MAAK1B,GAAE0B,EAAAA,IAAGwK,GAAExK,EAAAA;AAAI,cAAI2jC,KAAE38B,UAAU9D,SAAO;AAAE,cAAG,MAAIygC;AAAErlC,YAAAA,GAAEggE,WAASjgE;mBAAU,IAAEslC,IAAE;AAAC,qBAAQ3X,KAAE9rB,MAAMyjC,EAAAA,GAAGvlC,KAAE,GAAEA,KAAEulC,IAAEvlC;AAAI4tB,cAAAA,GAAE5tB,EAAAA,IAAG4I,UAAU5I,KAAE,CAAA;AAAGE,YAAAA,GAAEggE,WAAStyC;UAAAA;AAAE,cAAGzhB,MAAGA,GAAE0zG;AAAa,iBAAIj+G,MAAK2jC,KAAEp5B,GAAE0zG;AAAAA,yBAAwB3/G,GAAE0B,EAAAA,MAAK1B,GAAE0B,EAAAA,IAAG2jC,GAAE3jC,EAAAA;AAAI,iBAAM,EAAC0zK,UAASj0K,IAAEwF,MAAKsF,IAAEhL,KAAI2F,IAAEzC,KAAI6K,IAAEkd,OAAMlsB,IAAEiiL,QAAO/7I,GAAE8L,QAAAA;QAAAA;AACxU,iBAASvM,GAAEx5B,IAAAA;AAAG,iBAAM,YAAA,OAAkBA,MAAG,SAAOA,MAAGA,GAAEmpK,aAAWj0K;QAAAA;AAAqG,YAAIgzB,KAAE;AAAO,iBAAS5C,GAAEtlB,IAAEC,IAAAA;AAAG,iBAAM,YAAA,OAAkBD,MAAG,SAAOA,MAAG,QAAMA,GAAEhL,MAA7K,SAAgBgL,IAAAA;AAAG,gBAAIC,KAAE,EAAC,KAAI,MAAK,KAAI,KAAA;AAAM,mBAAM,MAAID,GAAE2jB,QAAQ,SAAQ,SAAS3jB,IAAAA;AAAG,qBAAOC,GAAED,EAAAA;YAAAA,CAAAA;UAAAA,EAA0F,KAAGA,GAAEhL,GAAAA,IAAKiL,GAAE/D,SAAS,EAAA;QAAA;AAC5W,iBAASm9B,GAAEr5B,IAAEC,IAAEnM,IAAE2B,IAAE1B,IAAAA;AAAG,cAAI4G,KAAAA,OAASqF;AAAK,0BAAcrF,MAAG,cAAYA,OAAEqF,KAAE;AAAK,cAAI+C,KAAAA;AAAK,cAAG,SAAO/C;AAAE+C,YAAAA,KAAAA;;AAAU,oBAAOpI,IAAAA;cAAG,KAAK;cAAS,KAAK;AAASoI,gBAAAA,KAAAA;AAAK;cAAM,KAAK;AAAS,wBAAO/C,GAAEmpK,UAAAA;kBAAU,KAAKj0K;kBAAE,KAAKK;AAAEwN,oBAAAA,KAAAA;gBAAE;YAAA;AAAI,cAAGA;AAAE,mBAAWhP,KAAEA,GAANgP,KAAE/C,EAAAA,GAASA,KAAE,OAAKvK,KAAE,MAAI6vB,GAAEviB,IAAE,CAAA,IAAGtN,IAAEE,MAAM4I,QAAQxK,EAAAA,KAAID,KAAE,IAAG,QAAMkM,OAAIlM,KAAEkM,GAAE2jB,QAAQuE,IAAE,KAAA,IAAO,MAAKmR,GAAEtlC,IAAEkM,IAAEnM,IAAE,IAAG,SAASkM,IAAAA;AAAG,qBAAOA;YAAAA,CAAAA,KAAK,QAAMjM,OAAIylC,GAAEzlC,EAAAA,MAAKA,KAD/W,SAAWiM,IAAEC,IAAAA;AAAG,qBAAM,EAACkpK,UAASj0K,IAAEwF,MAAKsF,GAAEtF,MAAK1F,KAAIiL,IAAE/H,KAAI8H,GAAE9H,KAAI+nB,OAAMjgB,GAAEigB,OAAM+1J,QAAOh2K,GAAEg2K,OAAAA;YAAAA,EAC8RjiL,IAAED,MAAAA,CAAIC,GAAEiB,OAAK+N,MAAGA,GAAE/N,QAAMjB,GAAEiB,MAAI,MAAI,KAAGjB,GAAEiB,KAAK2uB,QAAQuE,IAAE,KAAA,IAAO,OAAKloB,EAAAA,IAAIC,GAAEmK,KAAKrW,EAAAA,IAAI;AAAyB,cAAvBgP,KAAE,GAAEtN,KAAE,OAAKA,KAAE,MAAIA,KAAE,KAAOE,MAAM4I,QAAQyB,EAAAA;AAAG,qBAAQo5B,KACzf,GAAEA,KAAEp5B,GAAErH,QAAOygC,MAAI;AAAQ,kBAAI3X,KAAEhsB,KAAE6vB,GAAf3qB,KAAEqF,GAAEo5B,EAAAA,GAAeA,EAAAA;AAAGr2B,cAAAA,MAAGs2B,GAAE1+B,IAAEsF,IAAEnM,IAAE2tB,IAAE1tB,EAAAA;YAAAA;mBAAkB,cAAA,QAAP0tB,KANhE,SAAWzhB,IAAAA;AAAG,mBAAG,SAAOA,MAAG,YAAA,OAAkBA,KAAS,OAAsC,cAAA,QAAjCA,KAAE0K,MAAG1K,GAAE0K,EAAAA,KAAI1K,GAAE,YAAA,KAA0CA,KAAE;UAAA,EAMhDA,EAAAA;AAAyB,iBAAIA,KAAEyhB,GAAE7tB,KAAKoM,EAAAA,GAAGo5B,KAAE,GAAA,EAAIz+B,KAAEqF,GAAEzF,KAAAA,GAAQO;AAA6BiI,cAAAA,MAAGs2B,GAA1B1+B,KAAEA,GAAEjG,OAA0BuL,IAAEnM,IAAtB2tB,KAAEhsB,KAAE6vB,GAAE3qB,IAAEy+B,IAAAA,GAAkBrlC,EAAAA;mBAAW,aAAW4G;AAAE,kBAAMsF,KAAE,KAAGD,IAAEkB,MAAMupB,GAAE,IAAG,sBAAoBxqB,KAAE,uBAAqB9L,OAAO0J,KAAKmC,EAAAA,EAAGya,KAAK,IAAA,IAAM,MAAIxa,EAAAA,CAAAA;AAAI,iBAAO8C;QAAAA;AAAE,iBAASogB,GAAEnjB,IAAEC,IAAEnM,IAAAA;AAAG,cAAG,QAAMkM;AAAE,mBAAOA;AAAE,cAAIvK,KAAE,CAAA,GAAG1B,KAAE;AAAmD,iBAAjDslC,GAAEr5B,IAAEvK,IAAE,IAAG,IAAG,SAASuK,IAAAA;AAAG,mBAAOC,GAAErM,KAAKE,IAAEkM,IAAEjM,IAAAA;UAAAA,CAAAA,GAAc0B;QAAAA;AAC1Z,iBAASykC,GAAEl6B,IAAAA;AAAG,cAAA,OAAQA,GAAEi2K,SAAQ;AAAC,gBAAIh2K,KAAED,GAAEs1C;AAAQr1C,YAAAA,KAAEA,GAAAA,GAAID,GAAEi2K,UAAQ,GAAEj2K,GAAEs1C,UAAQr1C,IAAEA,GAAEk9B,KAAK,SAASl9B,IAAAA;AAAG,oBAAID,GAAEi2K,YAAUh2K,KAAEA,GAAEyiC,SAAQ1iC,GAAEi2K,UAAQ,GAAEj2K,GAAEs1C,UAAQr1C;YAAAA,GAAI,SAASA,IAAAA;AAAG,oBAAID,GAAEi2K,YAAUj2K,GAAEi2K,UAAQ,GAAEj2K,GAAEs1C,UAAQr1C;YAAAA,CAAAA;UAAAA;AAAK,cAAG,MAAID,GAAEi2K;AAAQ,mBAAOj2K,GAAEs1C;AAAQ,gBAAMt1C,GAAEs1C;QAAAA;AAAS,YAAIqvC,KAAE,EAAC5+C,SAAQ,KAAA;AAAM,iBAAS/jB,KAAAA;AAAI,cAAIhiB,KAAE2kF,GAAE5+C;AAAQ,cAAG,SAAO/lC;AAAE,kBAAMkB,MAAMupB,GAAE,GAAA,CAAA;AAAM,iBAAOzqB;QAAAA;AAAE,YAAI0oB,KAAE,EAACwtJ,wBAAuBvxF,IAAEwxF,yBAAwB,EAACC,YAAW,EAAA,GAAGC,mBAAkBp8I,IAAEq8I,sBAAqB,EAACvwI,SAAAA,MAAQ,GAAIvT,QAAO9+B,GAAAA;AACjeH,QAAAA,GAAQgjL,WAAS,EAACj3K,KAAI6jB,IAAEpe,SAAQ,SAAS/E,IAAEC,IAAEnM,IAAAA;AAAGqvB,UAAAA,GAAEnjB,IAAE,WAAA;AAAWC,YAAAA,GAAEmE,MAAM5J,MAAKiC,SAAAA;UAAAA,GAAY3I,EAAAA;QAAAA,GAAIqU,OAAM,SAASnI,IAAAA;AAAG,cAAIC,KAAE;AAAuB,iBAArBkjB,GAAEnjB,IAAE,WAAA;AAAWC,YAAAA;UAAAA,CAAAA,GAAaA;QAAAA,GAAGnD,SAAQ,SAASkD,IAAAA;AAAG,iBAAOmjB,GAAEnjB,IAAE,SAASA,IAAAA;AAAG,mBAAOA;UAAAA,CAAAA,KAAK,CAAA;QAAA,GAAIw2K,MAAK,SAASx2K,IAAAA;AAAG,cAAA,CAAIw5B,GAAEx5B,EAAAA;AAAG,kBAAMkB,MAAMupB,GAAE,GAAA,CAAA;AAAM,iBAAOzqB;QAAAA,EAAAA,GAAIzM,GAAQwjC,YAAUlU,IAAEtvB,GAAQ2tI,gBAAcj/G,IAAE1uB,GAAQkjL,qDAAmD/tJ,IAChXn1B,GAAQmjL,eAAa,SAAS12K,IAAEC,IAAEnM,IAAAA;AAAG,cAAG,QAAOkM;AAAc,kBAAMkB,MAAMupB,GAAE,KAAIzqB,EAAAA,CAAAA;AAAI,cAAIvK,KAAE/B,GAAE,CAAA,GAAGsM,GAAEigB,KAAAA,GAAOlsB,KAAEiM,GAAEhL,KAAI2F,KAAEqF,GAAE9H,KAAI6K,KAAE/C,GAAEg2K;AAAO,cAAG,QAAM/1K,IAAE;AAAoE,gBAAA,WAA1DA,GAAE/H,QAAMyC,KAAEsF,GAAE/H,KAAI6K,KAAEk3B,GAAE8L,UAAAA,WAAkB9lC,GAAEjL,QAAMjB,KAAE,KAAGkM,GAAEjL,MAAQgL,GAAEtF,QAAMsF,GAAEtF,KAAKg5G;AAAa,kBAAIt6E,KAAEp5B,GAAEtF,KAAKg5G;AAAa,iBAAIjyF,MAAKxhB;AAAE45B,cAAAA,GAAEjmC,KAAKqM,IAAEwhB,EAAAA,KAAAA,CAAK8X,GAAEjkC,eAAemsB,EAAAA,MAAKhsB,GAAEgsB,EAAAA,IAAAA,WAAYxhB,GAAEwhB,EAAAA,KAAAA,WAAa2X,KAAEA,GAAE3X,EAAAA,IAAGxhB,GAAEwhB,EAAAA;UAAAA;AAAI,cAAIA,KAAEhlB,UAAU9D,SAAO;AAAE,cAAG,MAAI8oB;AAAEhsB,YAAAA,GAAEs+D,WAASjgE;mBAAU,IAAE2tB,IAAE;AAAC2X,YAAAA,KAAEzjC,MAAM8rB,EAAAA;AAAG,qBAAQ5tB,KAAE,GAAEA,KAAE4tB,IAAE5tB;AAAIulC,cAAAA,GAAEvlC,EAAAA,IAAG4I,UAAU5I,KAAE,CAAA;AAAG4B,YAAAA,GAAEs+D,WAAS36B;UAAAA;AAAE,iBAAM,EAAC+vI,UAASj0K,IAAEwF,MAAKsF,GAAEtF,MACxf1F,KAAIjB,IAAEmE,KAAIyC,IAAEslB,OAAMxqB,IAAEugL,QAAOjzK,GAAAA;QAAAA,GAAIxP,GAAQwiF,gBAAc,SAAS/1E,IAAEC,IAAAA;AAA8K,iBAAA,WAAlKA,OAAIA,KAAE,QAAMD,KAAE,EAACmpK,UAAS50K,IAAEoiL,uBAAsB12K,IAAEyuI,eAAc1uI,IAAE42K,gBAAe52K,IAAE62K,cAAa,GAAEz/F,UAAS,MAAKkD,UAAS,KAAA,GAAQlD,WAAS,EAAC+xF,UAASt+I,IAAE6I,UAAS1zB,GAAAA,GAAUA,GAAEs6E,WAASt6E;QAAAA,GAAGzM,GAAQkgE,gBAAc15B,IAAExmC,GAAQujL,gBAAc,SAAS92K,IAAAA;AAAG,cAAIC,KAAE85B,GAAE9kC,KAAK,MAAK+K,EAAAA;AAAY,iBAATC,GAAEvF,OAAKsF,IAASC;QAAAA,GAAG1M,GAAQwjL,YAAU,WAAA;AAAW,iBAAM,EAAChxI,SAAQ,KAAA;QAAA,GAAOxyC,GAAQmmF,aAAW,SAAS15E,IAAAA;AAAG,iBAAM,EAACmpK,UAASx0K,IAAEkrF,QAAO7/E,GAAAA;QAAAA,GAAIzM,GAAQyjL,iBAAex9I,IAC3ejmC,GAAQ0jL,OAAK,SAASj3K,IAAAA;AAAG,iBAAM,EAACmpK,UAASvuK,IAAEs8K,UAAS,EAACjB,SAAAA,IAAW3gI,SAAQt1C,GAAAA,GAAGm3K,OAAMj9I,GAAAA;QAAAA,GAAI3mC,GAAQunF,OAAK,SAAS96E,IAAEC,IAAAA;AAAG,iBAAM,EAACkpK,UAAS3nJ,IAAE9mB,MAAKsF,IAAE0nE,SAAAA,WAAiBznE,KAAE,OAAKA,GAAAA;QAAAA,GAAI1M,GAAQ6jL,cAAY,SAASp3K,IAAEC,IAAAA;AAAG,iBAAO+hB,GAAAA,EAAIo1J,YAAYp3K,IAAEC,EAAAA;QAAAA,GAAI1M,GAAQ8jL,aAAW,SAASr3K,IAAEC,IAAAA;AAAG,iBAAO+hB,GAAAA,EAAIq1J,WAAWr3K,IAAEC,EAAAA;QAAAA,GAAI1M,GAAQ+jL,gBAAc,WAAA;QAAA,GAAa/jL,GAAQgkL,YAAU,SAASv3K,IAAEC,IAAAA;AAAG,iBAAO+hB,GAAAA,EAAIu1J,UAAUv3K,IAAEC,EAAAA;QAAAA,GAAI1M,GAAQikL,sBAAoB,SAASx3K,IAAEC,IAAEnM,IAAAA;AAAG,iBAAOkuB,GAAAA,EAAIw1J,oBAAoBx3K,IAAEC,IAAEnM,EAAAA;QAAAA,GAC9cP,GAAQkkL,kBAAgB,SAASz3K,IAAEC,IAAAA;AAAG,iBAAO+hB,GAAAA,EAAIy1J,gBAAgBz3K,IAAEC,EAAAA;QAAAA,GAAI1M,GAAQmkL,UAAQ,SAAS13K,IAAEC,IAAAA;AAAG,iBAAO+hB,GAAAA,EAAI01J,QAAQ13K,IAAEC,EAAAA;QAAAA,GAAI1M,GAAQokL,aAAW,SAAS33K,IAAEC,IAAEnM,IAAAA;AAAG,iBAAOkuB,GAAAA,EAAI21J,WAAW33K,IAAEC,IAAEnM,EAAAA;QAAAA,GAAIP,GAAQqkL,SAAO,SAAS53K,IAAAA;AAAG,iBAAOgiB,GAAAA,EAAI41J,OAAO53K,EAAAA;QAAAA,GAAIzM,GAAQskL,WAAS,SAAS73K,IAAAA;AAAG,iBAAOgiB,GAAAA,EAAI61J,SAAS73K,EAAAA;QAAAA,GAAIzM,GAAQohD,UAAQ;MAAA,GAAA,SAAAl/C,IAAAd,IAAAO,IAAA;AAAA;ACpBrTf,eAAOC,eAAeb,IAAS,cAAc,EAC3CmB,OAAAA,KAAO,CAAA;AAGT,YAMgCgP,IAN5Bo0K,KAAa5iL,GAAQ,CAAA,GAErB6iL,MAI4Br0K,KAJSo0K,OAIYp0K,GAAI7O,aAAa6O,KAAM,EAAEg/B,SAASh/B,GAAAA,GAFnFs0K,KAAa9iL,GAAQ,GAAA;AAIzB3B,QAAAA,GAAQmvC,UAAU,SAAUwwF,IAAAA;AAC1B,cAAI+kD,KAAkBx7K,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAKs7K,GAAYr1I,QAAQ/9B,KAE1GuzK,KAAc/jL,OAAO0J,KAAKq1H,EAAAA;AAG9B,iBAAO,WAAA;AACL,gBAAIilD,KAAa17K,UAAU9D,SAAS,KAAA,WAAK8D,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAKw7K,GAAAA,GACjFx1J,KAAShmB,UAAU,CAAA;AAYvB,mBAAO07K,GAAWrzK,cAAc,SAAUszK,IAAAA;AACxCF,cAAAA,GAAYnzK,QAAQ,SAAUszK,IAAAA;AAC5B,oBAEIC,MAAkBt9J,GAFRk4G,GAASmlD,EAAAA,GACED,GAAe9jL,IAAI+jL,EAAAA,GACM51J,EAAAA;AAAAA,iBAElD,GAAIu1J,GAAWO,mBAAmBD,IAAiBD,IAAa51J,EAAAA,GAEhE21J,GAAel0K,IAAIm0K,IAAaC,EAAAA;cAAAA,CAAAA;YAAAA,CAAAA;UAAAA;QAAAA,GAMxC9kL,GAAOD,UAAUA,GAAiB;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;AAAA;AC9ClCf,eAAOC,eAAeb,IAAS,cAAc,EAC3CmB,OAAAA,KAAO,CAAA,GAETnB,GAAQglL,oBAAoBhlL,GAAQilL,0CAA0CjlL,GAAQklL,eAAAA;AAEtF,YAEIC,KAAiBC,GAFAzjL,GAAQ,GAAA,CAAA,GAMzB0jL,KAA4CD,GAFAzjL,GAAQ,GAAA,CAAA,GAMpD2jL,KAAsBF,GAFAzjL,GAAQ,GAAA,CAAA;AAIlC,iBAASyjL,GAAuBj1K,IAAAA;AAAO,iBAAOA,MAAOA,GAAI7O,aAAa6O,KAAM,EAAEg/B,SAASh/B,GAAAA;QAAAA;AAEvFnQ,QAAAA,GAAQklL,eAAeC,GAAeh2I,SACtCnvC,GAAQilL,0CAA0CI,GAA0Cl2I,SAC5FnvC,GAAQglL,oBAAoBM,GAAoBn2I;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACrBhDvuC,eAAOC,eAAeb,IAAS,cAAc,EAC3CmB,OAAAA,KAAO,CAAA;AAGT,YAEIqjL,KAAcY,GAFDzjL,GAAQ,CAAA,CAAA,GAMrB4jL,KAAiBH,GAFDzjL,GAAQ,GAAA,CAAA;AAI5B,iBAASyjL,GAAuBj1K,IAAAA;AAAO,iBAAOA,MAAOA,GAAI7O,aAAa6O,KAAM,EAAEg/B,SAASh/B,GAAAA;QAAAA;AAEvFnQ,QAAAA,GAAQmvC,UAAU,SAAU0R,IAAO8+E,IAAUzwG,IAAAA;AAC3C,cAAIs2J,KAAe5kL,OAAO0J,KAAKq1H,EAAAA;AAE/B,cAAA,CAAK6lD,GAAapgL;AAChB,mBAAO;AAGT,cAAIqgL,MAAY,GAAIF,GAAep2I,SAASjgB,EAAAA;AAE5C,cAAIs1J,GAAYr1I,QAAQpiB,cAAAA,CAAey3J,GAAYr1I,QAAQpiB,YAAY8zB,EAAAA,IAAAA,CAAU2jI,GAAYr1I,QAAQzsC,SAASC,WAAWk+C,EAAAA;AACvH,mBAAO,SAAS4kI,KAAY,6IAA6ID,GAAat+J,KAAK,MAAA,IAAU;AAGvM,cAAIw+J,KAA+B7kI,GAAM34C,MAAAA,EAAQoc,OAAAA,EAAS/a,QAAAA,EAAU2N,OAAO,SAAUzW,IAAAA;AACnF,mBAAA,CAAQk/H,GAAS59H,eAAetB,EAAAA;UAAAA,CAAAA;AAGlC,iBAAIilL,GAA6BtgL,SAAS,IACjC,iBAAyD,MAAxCsgL,GAA6BtgL,SAAe,aAAa,gBAAgB,OAAOsgL,GAA6Bx+J,KAAK,MAAA,IAAU,gBAAgBu+J,KAAY,0EAA0ED,GAAat+J,KAAK,MAAA,IAAU,8CAGjR;QAAA,GAGTjnB,GAAOD,UAAUA,GAAiB;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;AAAA;ACtClCf,eAAOC,eAAeb,IAAS,cAAc,EAC3CmB,OAAAA,KAAO,CAAA,GAGTnB,GAAQmvC,UAAU,SAAUs6C,IAAWq7F,IAAa51J,IAAAA;AAElD,cAAA,WAAIu6D;AACF,kBAAM,IAAI97E,MAAM,cAAcm3K,KAAc,yCAAyC51J,GAAO/nB,OAAO,+EAAA;QAAA,GAIvGlH,GAAOD,UAAUA,GAAiB;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;ACblC,YAAI6jB,KAAQ7jB,GAAQ,GAAA,GAChBgkL,KAAmBhkL,GAAQ,GAAA,GAC3B2xJ,KAAU3xJ,GAAQ,GAAA,GAClBikL,KAAgBjkL,GAAQ,GAAA,GACxByrB,KAAWzrB,GAAQ,EAAA,GACnB4kK,KAAS5kK,GAAQ,GAAA,GACjBkkL,KAAUlkL,GAAQ,GAAA;AAmCtB1B,QAAAA,GAAOD,UAtBP,SAAS4qK,GAAUhpK,IAAQs5B,IAAQ2vI,IAAUpyF,IAAYx/D,IAAAA;AACnDrX,UAAAA,OAAWs5B,MAGfo4H,GAAQp4H,IAAQ,SAASw8H,IAAUj2J,IAAAA;AAEjC,gBADAwX,OAAUA,KAAQ,IAAIuM,OAClB4H,GAASsqI,EAAAA;AACXkuB,cAAAA,GAAchkL,IAAQs5B,IAAQz5B,IAAKopK,IAAUD,IAAWnyF,IAAYx/D,EAAAA;iBAEjE;AACH,kBAAIzB,KAAWihE,KACXA,GAAWotG,GAAQjkL,IAAQH,EAAAA,GAAMi2J,IAAWj2J,KAAM,IAAKG,IAAQs5B,IAAQjiB,EAAAA,IAAAA;AACvE9N,yBAEAqM,OACFA,KAAWkgJ,KAEbiuB,GAAiB/jL,IAAQH,IAAK+V,EAAAA;YAAAA;UAAAA,GAE/B+uJ,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC1BLtmK,QAAAA,GAAOD,UALP,WAAA;AACEiH,eAAKwwF,WAAW,CAAA,GAChBxwF,KAAKxB,OAAO;QAAA;MAAA,GAAA,SAAAvD,IAAAd,IAAAO,IAAA;ACTd,YAAImkL,KAAenkL,GAAQ,GAAA,GAMvBqY,KAHa5X,MAAMN,UAGCkY;AA4BxB/Z,QAAAA,GAAOD,UAjBP,SAAyByB,IAAAA;AACvB,cAAI20B,KAAOnvB,KAAKwwF,UACZ5xF,KAAQigL,GAAa1vJ,IAAM30B,EAAAA;AAE/B,iBAAA,EAAIoE,KAAQ,OAIRA,MADYuwB,GAAKhxB,SAAS,IAE5BgxB,GAAKje,IAAAA,IAEL6B,GAAO3Z,KAAK+1B,IAAMvwB,IAAO,CAAA,GAAA,EAEzBoB,KAAKxB,MAAAA;QACA;MAAA,GAAA,SAAAvD,IAAAd,IAAAO,IAAA;AC/BT,YAAImkL,KAAenkL,GAAQ,GAAA;AAkB3B1B,QAAAA,GAAOD,UAPP,SAAsByB,IAAAA;AACpB,cAAI20B,KAAOnvB,KAAKwwF,UACZ5xF,KAAQigL,GAAa1vJ,IAAM30B,EAAAA;AAE/B,iBAAOoE,KAAQ,IAAA,SAAgBuwB,GAAKvwB,EAAAA,EAAO,CAAA;QAAA;MAAA,GAAA,SAAA3D,IAAAd,IAAAO,IAAA;ACf7C,YAAImkL,KAAenkL,GAAQ,GAAA;AAe3B1B,QAAAA,GAAOD,UAJP,SAAsByB,IAAAA;AACpB,iBAAOqkL,GAAa7+K,KAAKwwF,UAAUh2F,EAAAA,IAAAA;QAAQ;MAAA,GAAA,SAAAS,IAAAd,IAAAO,IAAA;ACZ7C,YAAImkL,KAAenkL,GAAQ,GAAA;AAyB3B1B,QAAAA,GAAOD,UAbP,SAAsByB,IAAKN,IAAAA;AACzB,cAAIi1B,KAAOnvB,KAAKwwF,UACZ5xF,KAAQigL,GAAa1vJ,IAAM30B,EAAAA;AAQ/B,iBANIoE,KAAQ,KAAA,EACRoB,KAAKxB,MACP2wB,GAAKvf,KAAK,CAACpV,IAAKN,EAAAA,CAAAA,KAEhBi1B,GAAKvwB,EAAAA,EAAO,CAAA,IAAK1E,IAEZ8F;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACtBT,YAAIkwF,KAAYx1F,GAAQ,GAAA;AAcxB1B,QAAAA,GAAOD,UALP,WAAA;AACEiH,eAAKwwF,WAAW,IAAIN,MACpBlwF,KAAKxB,OAAO;QAAA;MAAA,GAAA,SAAAvD,IAAAd,IAAA;ACMdnB,QAAAA,GAAOD,UARP,SAAqByB,IAAAA;AACnB,cAAI20B,KAAOnvB,KAAKwwF,UACZ/9D,KAAStD,GAAa,OAAE30B,EAAAA;AAG5B,iBADAwF,KAAKxB,OAAO2wB,GAAK3wB,MACVi0B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACDTz5B,QAAAA,GAAOD,UAJP,SAAkByB,IAAAA;AAChB,iBAAOwF,KAAKwwF,SAAS12F,IAAIU,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACG3BxB,QAAAA,GAAOD,UAJP,SAAkByB,IAAAA;AAChB,iBAAOwF,KAAKwwF,SAAStqF,IAAI1L,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACV3B,YAAI01F,KAAYx1F,GAAQ,GAAA,GACpByP,KAAMzP,GAAQ,GAAA,GACdunE,KAAWvnE,GAAQ,GAAA;AA+BvB1B,QAAAA,GAAOD,UAhBP,SAAkByB,IAAKN,IAAAA;AACrB,cAAIi1B,KAAOnvB,KAAKwwF;AAChB,cAAIrhE,cAAgB+gE,IAAW;AAC7B,gBAAIr4C,KAAQ1oB,GAAKqhE;AACjB,gBAAA,CAAKrmF,MAAQ0tC,GAAM15C,SAAS2gL;AAG1B,qBAFAjnI,GAAMjoC,KAAK,CAACpV,IAAKN,EAAAA,CAAAA,GACjB8F,KAAKxB,OAAAA,EAAS2wB,GAAK3wB,MACZwB;AAETmvB,YAAAA,KAAOnvB,KAAKwwF,WAAW,IAAIvuB,GAASpqB,EAAAA;UAAAA;AAItC,iBAFA1oB,GAAKzlB,IAAIlP,IAAKN,EAAAA,GACd8F,KAAKxB,OAAO2wB,GAAK3wB,MACVwB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC9BT,YAAIwmB,KAAa9rB,GAAQ,GAAA,GACrBqkL,KAAWrkL,GAAQ,GAAA,GACnByrB,KAAWzrB,GAAQ,EAAA,GACnBqH,KAAWrH,GAAQ,GAAA,GASnBskL,KAAe,+BAGfryB,KAAYl3H,SAAS56B,WACrB8rF,KAAchtF,OAAOkB,WAGrBsxJ,KAAeQ,GAAUjrJ,UAGzB5G,KAAiB6rF,GAAY7rF,gBAG7BmkL,KAAa3zJ,OAAO,MACtB6gI,GAAa/yJ,KAAK0B,EAAAA,EAAgBquB,QAjBjB,uBAiBuC,MAAA,EACvDA,QAAQ,0DAA0D,OAAA,IAAW,GAAA;AAmBhFnwB,QAAAA,GAAOD,UARP,SAAsBmB,IAAAA;AACpB,iBAAA,EAAA,CAAKisB,GAASjsB,EAAAA,KAAU6kL,GAAS7kL,EAAAA,OAGnBssB,GAAWtsB,EAAAA,IAAS+kL,KAAaD,IAChCzzJ,KAAKxpB,GAAS7H,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC3C/B,YAAIF,KAASU,GAAQ,GAAA,GAGjBisF,KAAchtF,OAAOkB,WAGrBC,KAAiB6rF,GAAY7rF,gBAO7BokL,KAAuBv4F,GAAYjlF,UAGnCiiE,KAAiB3pE,KAASA,GAAOC,cAAAA;AA6BrCjB,QAAAA,GAAOD,UApBP,SAAmBmB,IAAAA;AACjB,cAAIy7H,KAAQ76H,GAAe1B,KAAKc,IAAOypE,EAAAA,GACnChxB,KAAMz4C,GAAMypE,EAAAA;AAEhB,cAAA;AACEzpE,YAAAA,GAAMypE,EAAAA,IAAAA;AACN,gBAAIw7G,KAAAA;UAAW,SACRlkL,IAAP;UAAOA;AAET,cAAIw3B,KAASysJ,GAAqB9lL,KAAKc,EAAAA;AAQvC,iBAPIilL,OACExpD,KACFz7H,GAAMypE,EAAAA,IAAkBhxB,KAAAA,OAEjBz4C,GAAMypE,EAAAA,IAGVlxC;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACzCT,YAOIysJ,KAPcvlL,OAAOkB,UAOc6G;AAavC1I,QAAAA,GAAOD,UAJP,SAAwBmB,IAAAA;AACtB,iBAAOglL,GAAqB9lL,KAAKc,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AClBnC,YAIM4iC,IAJFsiJ,KAAa1kL,GAAQ,GAAA,GAGrB2kL,MACEviJ,KAAM,SAASjU,KAAKu2J,MAAcA,GAAW/7K,QAAQ+7K,GAAW/7K,KAAKs9D,YAAY,EAAA,KACvE,mBAAmB7jC,KAAO;AAc1C9jC,QAAAA,GAAOD,UAJP,SAAkB88B,IAAAA;AAChB,iBAAA,CAAA,CAASwpJ,MAAeA,MAAcxpJ;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBxC,YAGIupJ,KAHO1kL,GAAQ,EAAA,EAGG,oBAAA;AAEtB1B,QAAAA,GAAOD,UAAUqmL;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACOjBpmL,QAAAA,GAAOD,UAJP,SAAkB4B,IAAQH,IAAAA;AACxB,iBAAiB,QAAVG,KAAAA,SAA6BA,GAAOH,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACT7C,YAAIy5E,KAAOv5E,GAAQ,GAAA,GACfw1F,KAAYx1F,GAAQ,GAAA,GACpByP,KAAMzP,GAAQ,GAAA;AAkBlB1B,QAAAA,GAAOD,UATP,WAAA;AACEiH,eAAKxB,OAAO,GACZwB,KAAKwwF,WAAW,EACd,MAAQ,IAAIvc,MACZ,KAAO,KAAK9pE,MAAO+lF,OACnB,QAAU,IAAIjc,KAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBlB,YAAIqrG,KAAY5kL,GAAQ,GAAA,GACpB6kL,KAAa7kL,GAAQ,GAAA,GACrB8kL,KAAU9kL,GAAQ,GAAA,GAClB+kL,KAAU/kL,GAAQ,GAAA,GAClBglL,KAAUhlL,GAAQ,GAAA;AAStB,iBAASu5E,GAAKruE,IAAAA;AACZ,cAAIhH,KAAAA,IACAT,KAAoB,QAAXyH,KAAkB,IAAIA,GAAQzH;AAG3C,eADA6B,KAAKuL,MAAAA,GAAAA,EACI3M,KAAQT,MAAQ;AACvB,gBAAImG,KAAQsB,GAAQhH,EAAAA;AACpBoB,iBAAK0J,IAAIpF,GAAM,CAAA,GAAIA,GAAM,CAAA,CAAA;UAAA;QAAA;AAK7B2vE,QAAAA,GAAKp5E,UAAU0Q,QAAQ+zK,IACvBrrG,GAAKp5E,UAAkB,SAAI0kL,IAC3BtrG,GAAKp5E,UAAUf,MAAM0lL,IACrBvrG,GAAKp5E,UAAUqL,MAAMu5K,IACrBxrG,GAAKp5E,UAAU6O,MAAMg2K,IAErB1mL,GAAOD,UAAUk7E;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/BjB,YAAI6c,KAAep2F,GAAQ,GAAA;AAc3B1B,QAAAA,GAAOD,UALP,WAAA;AACEiH,eAAKwwF,WAAWM,KAAeA,GAAa,IAAA,IAAQ,CAAA,GACpD9wF,KAAKxB,OAAO;QAAA;MAAA,GAAA,SAAAvD,IAAAd,IAAA;ACKdnB,QAAAA,GAAOD,UANP,SAAoByB,IAAAA;AAClB,cAAIi4B,KAASzyB,KAAKkG,IAAI1L,EAAAA,KAAAA,OAAewF,KAAKwwF,SAASh2F,EAAAA;AAEnD,iBADAwF,KAAKxB,QAAQi0B,KAAS,IAAI,GACnBA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACbT,YAAIq+D,KAAep2F,GAAQ,GAAA,GASvBI,KAHcnB,OAAOkB,UAGQC;AAoBjC9B,QAAAA,GAAOD,UATP,SAAiByB,IAAAA;AACf,cAAI20B,KAAOnvB,KAAKwwF;AAChB,cAAIM,IAAc;AAChB,gBAAIr+D,KAAStD,GAAK30B,EAAAA;AAClB,mBArBiB,gCAqBVi4B,KAAAA,SAAwCA;UAAAA;AAEjD,iBAAO33B,GAAe1B,KAAK+1B,IAAM30B,EAAAA,IAAO20B,GAAK30B,EAAAA,IAAAA;QAAO0J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1BtD,YAAI4sF,KAAep2F,GAAQ,GAAA,GAMvBI,KAHcnB,OAAOkB,UAGQC;AAgBjC9B,QAAAA,GAAOD,UALP,SAAiByB,IAAAA;AACf,cAAI20B,KAAOnvB,KAAKwwF;AAChB,iBAAOM,KAAAA,WAAgB3hE,GAAK30B,EAAAA,IAAsBM,GAAe1B,KAAK+1B,IAAM30B,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnB9E,YAAIs2F,KAAep2F,GAAQ,GAAA;AAsB3B1B,QAAAA,GAAOD,UAPP,SAAiByB,IAAKN,IAAAA;AACpB,cAAIi1B,KAAOnvB,KAAKwwF;AAGhB,iBAFAxwF,KAAKxB,QAAQwB,KAAKkG,IAAI1L,EAAAA,IAAO,IAAI,GACjC20B,GAAK30B,EAAAA,IAAQs2F,MAAAA,WAAgB52F,KAfV,8BAekDA,IAC9D8F;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnBT,YAAI2/K,KAAajlL,GAAQ,GAAA;AAiBzB1B,QAAAA,GAAOD,UANP,SAAwByB,IAAAA;AACtB,cAAIi4B,KAASktJ,GAAW3/K,MAAMxF,EAAAA,EAAa,OAAEA,EAAAA;AAE7C,iBADAwF,KAAKxB,QAAQi0B,KAAS,IAAI,GACnBA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACATz5B,QAAAA,GAAOD,UAPP,SAAmBmB,IAAAA;AACjB,cAAIgG,KAAAA,OAAchG;AAClB,iBAAgB,YAARgG,MAA4B,YAARA,MAA4B,YAARA,MAA4B,aAARA,KACrD,gBAAVhG,KACU,SAAVA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACXP,YAAIylL,KAAajlL,GAAQ,GAAA;AAezB1B,QAAAA,GAAOD,UAJP,SAAqByB,IAAAA;AACnB,iBAAOmlL,GAAW3/K,MAAMxF,EAAAA,EAAKV,IAAIU,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZnC,YAAImlL,KAAajlL,GAAQ,GAAA;AAezB1B,QAAAA,GAAOD,UAJP,SAAqByB,IAAAA;AACnB,iBAAOmlL,GAAW3/K,MAAMxF,EAAAA,EAAK0L,IAAI1L,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZnC,YAAImlL,KAAajlL,GAAQ,GAAA;AAqBzB1B,QAAAA,GAAOD,UATP,SAAqByB,IAAKN,IAAAA;AACxB,cAAIi1B,KAAOwwJ,GAAW3/K,MAAMxF,EAAAA,GACxBgE,KAAO2wB,GAAK3wB;AAIhB,iBAFA2wB,GAAKzlB,IAAIlP,IAAKN,EAAAA,GACd8F,KAAKxB,QAAQ2wB,GAAK3wB,QAAQA,KAAO,IAAI,GAC9BwB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACMThH,QAAAA,GAAOD,UAjBP,SAAuB6mL,IAAAA;AACrB,iBAAO,SAASjlL,IAAQw0J,IAAUmB,IAAAA;AAMhC,qBALI1xJ,KAAAA,IACAiC,KAAWlH,OAAOgB,EAAAA,GAClB8qB,KAAQ6qI,GAAS31J,EAAAA,GACjBwD,KAASsnB,GAAMtnB,QAEZA,QAAU;AACf,kBAAI3D,KAAMirB,GAAMm6J,KAAYzhL,KAAAA,EAAWS,EAAAA;AACvC,kBAAA,UAAIuwJ,GAAStuJ,GAASrG,EAAAA,GAAMA,IAAKqG,EAAAA;AAC/B;YAAA;AAGJ,mBAAOlG;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpBX,YAAI+jL,KAAmBhkL,GAAQ,GAAA,GAC3BmlL,KAAcnlL,GAAQ,GAAA,GACtBolL,KAAkBplL,GAAQ,GAAA,GAC1BqlL,KAAYrlL,GAAQ,GAAA,GACpBslL,KAAkBtlL,GAAQ,GAAA,GAC1BorF,KAAcprF,GAAQ,GAAA,GACtBqJ,KAAUrJ,GAAQ,EAAA,GAClBulL,KAAoBvlL,GAAQ,GAAA,GAC5BivE,KAAWjvE,GAAQ,GAAA,GACnB8rB,KAAa9rB,GAAQ,GAAA,GACrByrB,KAAWzrB,GAAQ,EAAA,GACnBgsE,KAAgBhsE,GAAQ,GAAA,GACxBsrF,KAAetrF,GAAQ,GAAA,GACvBkkL,KAAUlkL,GAAQ,GAAA,GAClBwlL,KAAgBxlL,GAAQ,GAAA;AA+E5B1B,QAAAA,GAAOD,UA9DP,SAAuB4B,IAAQs5B,IAAQz5B,IAAKopK,IAAUuc,IAAW3uG,IAAYx/D,IAAAA;AAC3E,cAAIs/E,KAAWstF,GAAQjkL,IAAQH,EAAAA,GAC3Bi2J,KAAWmuB,GAAQ3qJ,IAAQz5B,EAAAA,GAC3B4lL,KAAUpuK,GAAMlY,IAAI22J,EAAAA;AAExB,cAAI2vB;AACF1B,YAAAA,GAAiB/jL,IAAQH,IAAK4lL,EAAAA;eADhC;AAIA,gBAAI7vK,KAAWihE,KACXA,GAAW8f,IAAUm/D,IAAWj2J,KAAM,IAAKG,IAAQs5B,IAAQjiB,EAAAA,IAAAA,QAG3DquK,KAAAA,WAAW9vK;AAEf,gBAAI8vK,IAAU;AACZ,kBAAIrzB,KAAQjpJ,GAAQ0sJ,EAAAA,GAChBvD,KAAAA,CAAUF,MAASrjF,GAAS8mF,EAAAA,GAC5B6vB,KAAAA,CAAWtzB,MAAAA,CAAUE,MAAUlnE,GAAayqE,EAAAA;AAEhDlgJ,cAAAA,KAAWkgJ,IACPzD,MAASE,MAAUozB,KACjBv8K,GAAQutF,EAAAA,IACV/gF,KAAW+gF,KAEJ2uF,GAAkB3uF,EAAAA,IACzB/gF,KAAWwvK,GAAUzuF,EAAAA,IAEd47D,MACPmzB,KAAAA,OACA9vK,KAAWsvK,GAAYpvB,IAAAA,IAAU,KAE1B6vB,MACPD,KAAAA,OACA9vK,KAAWuvK,GAAgBrvB,IAAAA,IAAU,KAGrClgJ,KAAW,CAAA,IAGNm2D,GAAc+pF,EAAAA,KAAa3qE,GAAY2qE,EAAAA,KAC9ClgJ,KAAW+gF,IACPxL,GAAYwL,EAAAA,IACd/gF,KAAW2vK,GAAc5uF,EAAAA,IAEjBnrE,GAASmrE,EAAAA,KAAAA,CAAa9qE,GAAW8qE,EAAAA,MACzC/gF,KAAWyvK,GAAgBvvB,EAAAA,MAI7B4vB,KAAAA;YAAW;AAGXA,YAAAA,OAEFruK,GAAMtI,IAAI+mJ,IAAUlgJ,EAAAA,GACpB4vK,GAAU5vK,IAAUkgJ,IAAUmT,IAAUpyF,IAAYx/D,EAAAA,GACpDA,GAAc,OAAEy+I,EAAAA,IAElBiuB,GAAiB/jL,IAAQH,IAAK+V,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1FhC,YAAI4V,KAAWzrB,GAAQ,EAAA,GAGnB6lL,KAAe5mL,OAAOY,QAUtBmyJ,KAAc,WAAA;AAChB,mBAAS/xJ,KAAAA;UAAAA;AACT,iBAAO,SAASk6B,IAAAA;AACd,gBAAA,CAAK1O,GAAS0O,EAAAA;AACZ,qBAAO,CAAA;AAET,gBAAI0rJ;AACF,qBAAOA,GAAa1rJ,EAAAA;AAEtBl6B,YAAAA,GAAOE,YAAYg6B;AACnB,gBAAIpC,KAAS,IAAI93B;AAEjB,mBADAA,GAAOE,YAAAA,QACA43B;UAAAA;QAAAA,EAZM;AAgBjBz5B,QAAAA,GAAOD,UAAU2zJ;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7BjB,YAAI3qF,KAAarnE,GAAQ,GAAA,GACrBgsF,KAAehsF,GAAQ,EAAA;AAgB3B1B,QAAAA,GAAOD,UAJP,SAAyBmB,IAAAA;AACvB,iBAAOwsF,GAAaxsF,EAAAA,KAVR,wBAUkB6nE,GAAW7nE,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACd3C,YAAI6G,KAAcrG,GAAQ,GAAA,GACtBgsF,KAAehsF,GAAQ,EAAA;AA+B3B1B,QAAAA,GAAOD,UAJP,SAA2BmB,IAAAA;AACzB,iBAAOwsF,GAAaxsF,EAAAA,KAAU6G,GAAY7G,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACZ5ClB,QAAAA,GAAOD,UAJP,WAAA;AACE,iBAAA;QAAO;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;ACdT,YAAIqnE,KAAarnE,GAAQ,GAAA,GACrBkpE,KAAWlpE,GAAQ,GAAA,GACnBgsF,KAAehsF,GAAQ,EAAA,GA8BvB8lL,KAAiB,CAAA;AACrBA,QAAAA,GAZiB,uBAAA,IAYYA,GAXZ,uBAAA,IAYjBA,GAXc,oBAAA,IAWYA,GAVX,qBAAA,IAWfA,GAVe,qBAAA,IAUYA,GATZ,qBAAA,IAUfA,GATsB,4BAAA,IASYA,GARlB,sBAAA,IAShBA,GARgB,sBAAA,IAAA,MAShBA,GAjCc,oBAAA,IAiCYA,GAhCX,gBAAA,IAiCfA,GApBqB,sBAAA,IAoBYA,GAhCnB,kBAAA,IAiCdA,GApBkB,mBAAA,IAoBYA,GAhChB,eAAA,IAiCdA,GAhCe,gBAAA,IAgCYA,GA/Bb,mBAAA,IAgCdA,GA/Ba,cAAA,IA+BYA,GA9BT,iBAAA,IA+BhBA,GA9BgB,iBAAA,IA8BYA,GA7BZ,iBAAA,IA8BhBA,GA7Ba,cAAA,IA6BYA,GA5BT,iBAAA,IA6BhBA,GA5BiB,kBAAA,IAAA,OA0CjBxnL,GAAOD,UALP,SAA0BmB,IAAAA;AACxB,iBAAOwsF,GAAaxsF,EAAAA,KAClB0pE,GAAS1pE,GAAMiE,MAAAA,KAAAA,CAAAA,CAAaqiL,GAAez+G,GAAW7nE,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACxD1D,YAAI+tK,KAAavtK,GAAQ,GAAA,GACrB4kK,KAAS5kK,GAAQ,GAAA;AA8BrB1B,QAAAA,GAAOD,UAJP,SAAuBmB,IAAAA;AACrB,iBAAO+tK,GAAW/tK,IAAOolK,GAAOplK,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACTlClB,QAAAA,GAAOD,UAVP,SAAmB2B,IAAGy0J,IAAAA;AAIpB,mBAHIvwJ,KAAAA,IACA6zB,KAASt3B,MAAMT,EAAAA,GAAAA,EAEVkE,KAAQlE;AACf+3B,YAAAA,GAAO7zB,EAAAA,IAASuwJ,GAASvwJ,EAAAA;AAE3B,iBAAO6zB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBT,YAAItM,KAAWzrB,GAAQ,EAAA,GACnBqrF,KAAcrrF,GAAQ,GAAA,GACtB+lL,KAAe/lL,GAAQ,GAAA,GAMvBI,KAHcnB,OAAOkB,UAGQC;AAwBjC9B,QAAAA,GAAOD,UAfP,SAAoB4B,IAAAA;AAClB,cAAA,CAAKwrB,GAASxrB,EAAAA;AACZ,mBAAO8lL,GAAa9lL,EAAAA;AAEtB,cAAI+lL,KAAU36F,GAAYprF,EAAAA,GACtB83B,KAAS,CAAA;AAEb,mBAASj4B,MAAOG;AAAAA,aACD,iBAAPH,MAAAA,CAAyBkmL,MAAY5lL,GAAe1B,KAAKuB,IAAQH,EAAAA,MACrEi4B,GAAO7iB,KAAKpV,EAAAA;AAGhB,iBAAOi4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACVTz5B,QAAAA,GAAOD,UAVP,SAAsB4B,IAAAA;AACpB,cAAI83B,KAAS,CAAA;AACb,cAAc,QAAV93B;AACF,qBAASH,MAAOb,OAAOgB,EAAAA;AACrB83B,cAAAA,GAAO7iB,KAAKpV,EAAAA;AAGhB,iBAAOi4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBT,YAAIkuJ,KAAWjmL,GAAQ,GAAA,GACnB2pJ,KAAiB3pJ,GAAQ,GAAA;AAmC7B1B,QAAAA,GAAOD,UA1BP,SAAwB6nL,IAAAA;AACtB,iBAAOD,GAAS,SAAShmL,IAAQi5F,IAAAA;AAC/B,gBAAIh1F,KAAAA,IACAT,KAASy1F,GAAQz1F,QACjBqzE,KAAarzE,KAAS,IAAIy1F,GAAQz1F,KAAS,CAAA,IAAA,QAC3CmmJ,KAAQnmJ,KAAS,IAAIy1F,GAAQ,CAAA,IAAA;AAWjC,iBATApiB,KAAcovG,GAASziL,SAAS,KAA0B,cAAA,OAAdqzE,MACvCrzE,MAAUqzE,MAAAA,QAGX8yE,MAASD,GAAezwD,GAAQ,CAAA,GAAIA,GAAQ,CAAA,GAAI0wD,EAAAA,MAClD9yE,KAAarzE,KAAS,IAAA,SAAgBqzE,IACtCrzE,KAAS,IAEXxD,KAAShB,OAAOgB,EAAAA,GAAAA,EACPiE,KAAQT,MAAQ;AACvB,kBAAI81B,KAAS2/D,GAAQh1F,EAAAA;AACjBq1B,cAAAA,MACF2sJ,GAASjmL,IAAQs5B,IAAQr1B,IAAO4yE,EAAAA;YAAAA;AAGpC,mBAAO72E;UAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChCX,YAAI8pF,KAAW/pF,GAAQ,GAAA,GACnBmmL,KAAWnmL,GAAQ,GAAA,GACnB8yJ,KAAc9yJ,GAAQ,GAAA;AAc1B1B,QAAAA,GAAOD,UAJP,SAAkB88B,IAAMjvB,IAAAA;AACtB,iBAAO4mJ,GAAYqzB,GAAShrJ,IAAMjvB,IAAO69E,EAAAA,GAAW5uD,KAAO,EAAA;QAAA;MAAA,GAAA,SAAA56B,IAAAd,IAAA;ACO7DnB,QAAAA,GAAOD,UAVP,SAAe88B,IAAMsmF,IAASniE,IAAAA;AAC5B,kBAAQA,GAAK77C,QAAAA;YACX,KAAK;AAAG,qBAAO03B,GAAKz8B,KAAK+iH,EAAAA;YACzB,KAAK;AAAG,qBAAOtmF,GAAKz8B,KAAK+iH,IAASniE,GAAK,CAAA,CAAA;YACvC,KAAK;AAAG,qBAAOnkB,GAAKz8B,KAAK+iH,IAASniE,GAAK,CAAA,GAAIA,GAAK,CAAA,CAAA;YAChD,KAAK;AAAG,qBAAOnkB,GAAKz8B,KAAK+iH,IAASniE,GAAK,CAAA,GAAIA,GAAK,CAAA,GAAIA,GAAK,CAAA,CAAA;UAAA;AAE3D,iBAAOnkB,GAAKjsB,MAAMuyG,IAASniE,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACjB7B,YAAI+mC,KAAWrmF,GAAQ,GAAA,GACnBd,KAAiBc,GAAQ,GAAA,GACzB+pF,KAAW/pF,GAAQ,GAAA,GAUnB6yJ,KAAmB3zJ,KAA4B,SAASi8B,IAAMhtB,IAAAA;AAChE,iBAAOjP,GAAei8B,IAAM,YAAY,EACtC,cAAA,MACA,YAAA,OACA,OAASkrD,GAASl4E,EAAAA,GAClB,UAAA,KAAY,CAAA;QAAA,IALwB47E;AASxCzrF,QAAAA,GAAOD,UAAUw0J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACIjBv0J,QAAAA,GAAOD,UANP,SAAkBmB,IAAAA;AAChB,iBAAO,WAAA;AACL,mBAAOA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACpBX,YAII4mL,KAAYj1J,KAAKsyI;AA+BrBnlK,QAAAA,GAAOD,UApBP,SAAkB88B,IAAAA;AAChB,cAAIloB,KAAQ,GACRozK,KAAa;AAEjB,iBAAO,WAAA;AACL,gBAAIC,KAAQF,GAAAA,GACR31G,KApBO,MAoBiB61G,KAAQD;AAGpC,gBADAA,KAAaC,IACT71G,KAAY,GAAA;AACd,kBAAA,EAAMx9D,MAzBI;AA0BR,uBAAO1L,UAAU,CAAA;YAAA;AAGnB0L,cAAAA,KAAQ;AAEV,mBAAOkoB,GAAKjsB,MAAAA,QAAiB3H,SAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChCjC,YAAIomC,KAAiB3tC,GAAQ,GAAA,GAEzBg3F,KAAmBh3F,GAAQ,GAAA;AAM/B1B,QAAAA,GAAOD,UAJP,SAA4B+E,IAAAA;AAC1B,cAAIuqC,GAAevqC,EAAAA;AAAM,mBAAO4zF,GAAiB5zF,EAAAA;QAAAA,GAGd9E,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACR1G,YAAI8qH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,EAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHjB,QAAAnpH,GAAQ,EAAA,GACRA,GAAQ,GAAA;AACR,YAAIqjC,KAAoBrjC,GAAQ,GAAA;AAEhC1B,QAAAA,GAAOD,UAAUglC;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACJjB,YAAI8lF,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA,GACRA,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKv4B,MAAM6Z;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACJ5B,YAAIsqB,KAAI5kC,GAAQ,EAAA,GACZsa,KAAOta,GAAQ,GAAA;AAUnB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,SAASmP,MAAAA,MAAYK,QAAAA,CATCt6B,GAAQ,GAAA,EAEa,SAAUmG,IAAAA;AAE/D1F,gBAAM6Z,KAAKnU,EAAAA;QAAAA,CAAAA,EAAAA,GAKmD,EAC9DmU,MAAMA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZR,YAAI4oB,KAAWljC,GAAQ,EAAA,GACnBsjC,KAAgBtjC,GAAQ,GAAA;AAG5B1B,QAAAA,GAAOD,UAAU,SAAU4G,IAAU4C,IAAIrI,IAAO2H,IAAAA;AAC9C,cAAA;AACE,mBAAOA,KAAUU,GAAGq7B,GAAS1jC,EAAAA,EAAO,CAAA,GAAIA,GAAM,CAAA,CAAA,IAAMqI,GAAGrI,EAAAA;UAAAA,SAChDuM,IAAP;AACAu3B,YAAAA,GAAcr+B,IAAU,SAAS8G,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACRrCzN,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACEjB7qH,QAAAA,GAAOD,UAJP,WAAA;AACE,gBAAM,IAAIiL,UAAU,sIAAA;QAAA,GAGehL,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACJ1G,YAAIq/B,KAAU19B,GAAQ,GAAA,GAElB0tC,KAAqB1tC,GAAQ,GAAA;AAgCjC1B,QAAAA,GAAOD,UA9BP,SAA+B+E,IAAK7E,IAAAA;AAClC,cAAIqjJ,KAAY,QAAPx+I,KAAc,OAAA,WAAcs6B,MAA2BgQ,GAAmBtqC,EAAAA,KAAQA,GAAI,YAAA;AAE/F,cAAU,QAANw+I,IAAJ;AACA,gBAII2kC,IAAI14I,IAJJolC,KAAO,CAAA,GACPuzG,KAAAA,MACAzoB,KAAAA;AAIJ,gBAAA;AACE,mBAAKnc,KAAKA,GAAGljJ,KAAK0E,EAAAA,GAAAA,EAAQojL,MAAMD,KAAK3kC,GAAGv8I,KAAAA,GAAQO,UAC9CqtE,GAAK/9D,KAAKqxK,GAAG/mL,KAAAA,GAAAA,CAETjB,MAAK00E,GAAKxvE,WAAWlF,KAH4BioL,KAAAA;AAAK;YAAA,SAKrD91J,IAAP;AACAqtI,cAAAA,KAAAA,MACAlwH,KAAKnd;YAAAA,UACL;AACA,kBAAA;AACO81J,gBAAAA,MAAsB,QAAhB5kC,GAAW,UAAWA,GAAW,OAAA;cAAA,UAC5C;AACA,oBAAImc;AAAI,wBAAMlwH;cAAAA;YAAAA;AAIlB,mBAAOolC;UAAAA;QAAAA,GAG+B30E,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AClC7G,QAAA2B,GAAQ,EAAA;AACR,YAAIm1C,KAAUn1C,GAAQ,EAAA,GAClBk5B,KAASl5B,GAAQ,EAAA,GACjBuhC,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN,WAEvBi1C,KAAe,EACjBs+G,cAAAA,MACAC,UAAAA,KAAU;AAGZr1J,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGzvB;AACb,iBAAOyvB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAenoJ,WACxFguB,GAAOkc,IAAcD,GAAQxa,EAAAA,CAAAA,IAAOrG,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBpD,YAAIzqC,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,EAAA,GACRA,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAAS1yK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACJvC,YAAIi+G,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAAS/tK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAI+0B,KAAI5kC,GAAQ,EAAA,GACZ6P,KAAU7P,GAAQ,GAAA;AAKtB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAQ,CAAA,EAAGzqB,WAAWA,GAAAA,GAAW,EACjEA,SAASA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACPX,YAAI4+I,KAAWzuJ,GAAQ,EAAA,EAAgC6P,SAGnDmuK,KAFsBh+K,GAAQ,GAAA,EAEM,SAAA;AAIxC1B,QAAAA,GAAOD,UAAW2/K,KAGd,CAAA,EAAGnuK,UAH2B,SAAiB+9C,IAAAA;AACjD,iBAAO6gG,GAASnpJ,MAAMsoD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACT1E,YAAI2/G,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGhpB;AACb,iBAAOgpB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAe1hJ,OAAQ2iB,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPhH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASjsK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAIizB,KAAI5kC,GAAQ,EAAA,GACZ44B,KAAc54B,GAAQ,EAAA,GACtBytC,KAAYztC,GAAQ,EAAA,GACpBilB,KAAWjlB,GAAQ,EAAA,GACnBojC,KAAoBpjC,GAAQ,EAAA,GAC5BgH,KAAWhH,GAAQ,EAAA,GACnBikC,KAAQjkC,GAAQ,EAAA,GAChBymL,KAAezmL,GAAQ,GAAA,GACvB69K,KAAsB79K,GAAQ,GAAA,GAC9B0mL,KAAK1mL,GAAQ,GAAA,GACb2mL,KAAa3mL,GAAQ,GAAA,GACrB4mL,KAAK5mL,GAAQ,GAAA,GACb6mL,KAAS7mL,GAAQ,GAAA,GAEjB6wB,KAAO,CAAA,GACPi2J,KAAUluJ,GAAY/H,GAAKlf,IAAAA,GAC3BuD,KAAO0jB,GAAY/H,GAAK3b,IAAAA,GAGxB6xK,KAAqB9iJ,GAAM,WAAA;AAC7BpT,UAAAA,GAAKlf,KAAAA,MAAKnI;QAAAA,CAAAA,GAGRw9K,KAAgB/iJ,GAAM,WAAA;AACxBpT,UAAAA,GAAKlf,KAAK,IAAA;QAAA,CAAA,GAGRqsK,KAAgBH,GAAoB,MAAA,GAEpCoJ,KAAAA,CAAehjJ,GAAM,WAAA;AAEvB,cAAI2iJ;AAAI,mBAAOA,KAAK;AACpB,cAAA,EAAIF,MAAMA,KAAK,IAAf;AACA,gBAAIC;AAAY,qBAAA;AAChB,gBAAIE;AAAQ,qBAAOA,KAAS;AAE5B,gBACItqI,IAAM00G,IAAKzxJ,IAAO0E,IADlB6zB,KAAS;AAIb,iBAAKwkB,KAAO,IAAIA,KAAO,IAAIA,MAAQ;AAGjC,sBAFA00G,KAAM3nI,OAAO+0B,aAAa9B,EAAAA,GAElBA,IAAAA;gBACN,KAAK;gBAAI,KAAK;gBAAI,KAAK;gBAAI,KAAK;AAAI/8C,kBAAAA,KAAQ;AAAG;gBAC/C,KAAK;gBAAI,KAAK;AAAIA,kBAAAA,KAAQ;AAAG;gBAC7B;AAASA,kBAAAA,KAAQ;cAAA;AAGnB,mBAAK0E,KAAQ,GAAGA,KAAQ,IAAIA;AAC1B2sB,gBAAAA,GAAK3b,KAAK,EAAEzP,GAAGwrJ,KAAM/sJ,IAAOwB,GAAGlG,GAAAA,CAAAA;YAAAA;AAMnC,iBAFAqxB,GAAKlf,KAAK,SAAU7G,IAAGC,IAAAA;AAAK,qBAAOA,GAAErF,IAAIoF,GAAEpF;YAAAA,CAAAA,GAEtCxB,KAAQ,GAAGA,KAAQ2sB,GAAKptB,QAAQS;AACnC+sJ,cAAAA,KAAMpgI,GAAK3sB,EAAAA,EAAOuB,EAAEg3C,OAAO,CAAA,GACvB1kB,GAAO0kB,OAAO1kB,GAAOt0B,SAAS,CAAA,MAAOwtJ,OAAKl5H,MAAUk5H;AAG1D,mBAAkB,kBAAXl5H;UAAAA;QAAAA,CAAAA;AAgBT6M,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAbrBysJ,MAAAA,CAAuBC,MAAAA,CAAkBhJ,MAAAA,CAAkBiJ,GAAAA,GAapB,EAClDt1K,MAAM,SAAcmiJ,IAAAA;AAAAA,qBACdA,MAAyBrmH,GAAUqmH,EAAAA;AAEvC,cAAItrJ,KAAQyc,GAAS3f,IAAAA;AAErB,cAAI2hL;AAAa,mBAAA,WAAOnzB,KAA0BgzB,GAAQt+K,EAAAA,IAASs+K,GAAQt+K,IAAOsrJ,EAAAA;AAElF,cAEIozB,IAAahjL,IAFb8tB,KAAQ,CAAA,GACRm1J,KAAc/jJ,GAAkB56B,EAAAA;AAGpC,eAAKtE,KAAQ,GAAGA,KAAQijL,IAAajjL;AAC/BA,YAAAA,MAASsE,MAAO0M,GAAK8c,IAAOxpB,GAAMtE,EAAAA,CAAAA;AAQxC,eALAuiL,GAAaz0J,IA3BI,SAAU8hI,IAAAA;AAC7B,mBAAO,SAAUt+I,IAAG+a,IAAAA;AAClB,qBAAA,WAAIA,KAAAA,KAAyB,WACzB/a,KAAwB,IAAA,WACxBs+I,KAAAA,CAAiCA,GAAUt+I,IAAG+a,EAAAA,KAAM,IACjDvpB,GAASwO,EAAAA,IAAKxO,GAASupB,EAAAA,IAAK,IAAA;YAAK;UAAA,EAsBLujI,EAAAA,CAAAA,GAEnCozB,KAAcl1J,GAAMvuB,QACpBS,KAAQ,GAEDA,KAAQgjL;AAAa1+K,YAAAA,GAAMtE,EAAAA,IAAS8tB,GAAM9tB,IAAAA;AACjD,iBAAOA,KAAQijL;AAAAA,mBAAoB3+K,GAAMtE,IAAAA;AAEzC,iBAAOsE;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACtGX,YAEI4+K,KAFYpnL,GAAQ,EAAA,EAEAmyB,MAAM,iBAAA;AAE9B7zB,QAAAA,GAAOD,UAAAA,CAAAA,CAAY+oL,MAAAA,CAAYA,GAAQ,CAAA;MAAA,GAAA,SAAA7mL,IAAAd,IAAAO,IAAA;ACJvC,YAAIqnL,KAAKrnL,GAAQ,EAAA;AAEjB1B,QAAAA,GAAOD,UAAU,eAAewyB,KAAKw2J,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFrC,YAEIC,KAFYtnL,GAAQ,EAAA,EAEDmyB,MAAM,sBAAA;AAE7B7zB,QAAAA,GAAOD,UAAAA,CAAAA,CAAYipL,MAAAA,CAAWA,GAAO,CAAA;MAAA,GAAA,SAAA/mL,IAAAd,IAAAO,IAAA;ACJrC,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAG7Z;AACb,iBAAO6Z,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAevyI,OAAQwT,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPhH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAAS98J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAI8jB,KAAI5kC,GAAQ,EAAA,GACZunL,KAAQvnL,GAAQ,EAAA,EAAgC8gB;AAOpD8jB,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAAA,CANRt6B,GAAQ,GAAA,EAEM,MAAA,EAAA,GAIoB,EAC1D8gB,MAAM,SAAc8sC,IAAAA;AAClB,iBAAO25H,GAAMjiL,MAAMsoD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACXzE,YAAI2/G,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBwnL,KAAcxnL,GAAQ,GAAA,GACtBynL,KAAeznL,GAAQ,GAAA,GAEvBqzJ,KAAiB5yJ,MAAMN,WACvBunL,KAAkBp+J,OAAOnpB;AAE7B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAG3tB;AACb,iBAAI2tB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAermJ,WAAkBw6K,KAC3F,YAAA,OAAN7sJ,MAAkBA,OAAO+sJ,MAAoBnmJ,GAAcmmJ,IAAiB/sJ,EAAAA,KAAOi5H,OAAQ8zB,GAAgB16K,WAC7Gy6K,KACA7zB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZX,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAAS5wK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAI43B,KAAI5kC,GAAQ,EAAA,GACZ2nL,KAAY3nL,GAAQ,GAAA,EAA+BgN,UACnDihD,KAAmBjuD,GAAQ,GAAA;AAI/B4kC,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,KAAO,GAAQ,EAClCntB,UAAU,SAAkBihH,IAAAA;AAC1B,iBAAO05D,GAAUriL,MAAM2oH,IAAI1mH,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA,GAKrEykD,GAAiB,UAAA;MAAA,GAAA,SAAA1tD,IAAAd,IAAAO,IAAA;ACdjB,QAAAA,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,QAAA,EAAU5wK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFxC,YAAI43B,KAAI5kC,GAAQ,EAAA,GACZ44B,KAAc54B,GAAQ,EAAA,GACtB4nL,KAAa5nL,GAAQ,GAAA,GACrBkwC,KAAyBlwC,GAAQ,GAAA,GACjCgH,KAAWhH,GAAQ,EAAA,GACnB6nL,KAAuB7nL,GAAQ,GAAA,GAE/BohH,KAAgBxoF,GAAY,GAAG1rB,OAAAA;AAInC03B,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUqP,OAAAA,MAAaG,QAAAA,CAASutJ,GAAqB,UAAA,EAAA,GAAe,EAC9E76K,UAAU,SAAkB86K,IAAAA;AAC1B,iBAAA,CAAA,CAAA,CAAU1mE,GACRp6G,GAASkpC,GAAuB5qC,IAAAA,CAAAA,GAChC0B,GAAS4gL,GAAWE,EAAAA,CAAAA,GACpBvgL,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACjB5C,YAAIiiB,KAAWzrB,GAAQ,EAAA,GACnBm1C,KAAUn1C,GAAQ,GAAA,GAGlBq0J,KAFkBr0J,GAAQ,EAAA,EAEF,OAAA;AAI5B1B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIkzD;AACJ,iBAAOpiE,GAASkP,EAAAA,MAAAA,YAASkzD,KAAWlzD,GAAG05H,EAAAA,KAAAA,CAAAA,CAA0BxmE,KAA0B,YAAf14C,GAAQxa,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACVtF,YAAI4G,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGztB;AACb,iBAAOytB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAenmJ,UAAWonB,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPnH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAAS1wK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACDvC,YAAI03B,KAAI5kC,GAAQ,EAAA,GACZ44B,KAAc54B,GAAQ,EAAA,GACtB+nL,KAAW/nL,GAAQ,GAAA,EAA+BkN,SAClD2wK,KAAsB79K,GAAQ,GAAA,GAE9BgoL,KAAapvJ,GAAY,CAAA,EAAG1rB,OAAAA,GAE5B6wK,KAAAA,CAAAA,CAAkBiK,MAAc,IAAIA,GAAW,CAAC,CAAA,GAAI,GAAA,EAAI,IAAK,GAC7DhK,KAAgBH,GAAoB,SAAA;AAIxCj5I,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAQyjJ,MAAAA,CAAkBC,GAAAA,GAAiB,EAC3E9wK,SAAS,SAAiB+wK,IAAAA;AACxB,cAAI/vD,KAAY3mH,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA;AACjD,iBAAOw2K,KAEHiK,GAAW1iL,MAAM24K,IAAe/vD,EAAAA,KAAc,IAC9C65D,GAASziL,MAAM24K,IAAe/vD,EAAAA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpBtC,YAAI/E,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGlV;AACb,iBAAOkV,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAe5tI,OAAQ6O,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPhH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASn4J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAImf,KAAI5kC,GAAQ,EAAA,GACZioL,KAAQjoL,GAAQ,EAAA,EAAgCylB,MAChDwoC,KAAmBjuD,GAAQ,GAAA,GAE3BkoL,KAAO,QACPC,KAAAA;AAGAD,QAAAA,MAAQ,CAAA,KAAIznL,MAAM,CAAA,EAAO,KAAE,WAAA;AAAc0nL,UAAAA,KAAAA;QAAc,CAAA,GAI3DvjJ,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAQ6tJ,GAAAA,GAAe,EACvD1iK,MAAM,SAAcmoC,IAAAA;AAClB,iBAAOq6H,GAAM3iL,MAAMsoD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA,GAKzEykD,GAAiBi6H,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpBjB,YAAI/+D,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjB0nL,KAAkBp+J,OAAOnpB;AAE7B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGytJ;AACb,iBAAoB,YAAA,OAANztJ,MAAkBA,OAAO+sJ,MACjCnmJ,GAAcmmJ,IAAiB/sJ,EAAAA,KAAOi5H,OAAQ8zB,GAAgBU,aAAc9zJ,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACR7F,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,QAAA,EAAUwK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFxC,YAkBMp9J,IAlBF4Z,KAAI5kC,GAAQ,EAAA,GACZ44B,KAAc54B,GAAQ,EAAA,GACtB84B,KAA2B94B,GAAQ,EAAA,EAAmDusB,GACtF2nB,KAAWl0C,GAAQ,GAAA,GACnBgH,KAAWhH,GAAQ,EAAA,GACnB4nL,KAAa5nL,GAAQ,GAAA,GACrBkwC,KAAyBlwC,GAAQ,GAAA,GACjC6nL,KAAuB7nL,GAAQ,GAAA,GAC/BouD,KAAUpuD,GAAQ,EAAA,GAGlBqoL,KAAgBzvJ,GAAY,GAAGwvJ,UAAAA,GAC/Bz/G,KAAc/vC,GAAY,GAAGl4B,KAAAA,GAC7BkE,KAAMrB,KAAKqB,KAEX0jL,KAA0BT,GAAqB,YAAA;AASnDjjJ,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUqP,OAAAA,MAAaG,QAAAA,CAAAA,EAPX8zB,MAAYk6H,OAC9Bt9J,KAAa8N,GAAyBxP,OAAOnpB,WAAW,YAAA,GAAA,CACrD6qB,MAAeA,GAAWN,cAAAA,CAK8B49J,GAAAA,GAA2B,EAC1FF,YAAY,SAAoBN,IAAAA;AAC9B,cAAInkJ,KAAO38B,GAASkpC,GAAuB5qC,IAAAA,CAAAA;AAC3CsiL,UAAAA,GAAWE,EAAAA;AACX,cAAI5jL,KAAQgwC,GAAStvC,GAAI2C,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,QAAgBo8B,GAAKlgC,MAAAA,CAAAA,GAC3EkwB,KAAS3sB,GAAS8gL,EAAAA;AACtB,iBAAOO,KACHA,GAAc1kJ,IAAMhQ,IAAQzvB,EAAAA,IAC5BykE,GAAYhlC,IAAMz/B,IAAOA,KAAQyvB,GAAOlwB,MAAAA,MAAYkwB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACjC5D,YAAIw1F,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjB0nL,KAAkBp+J,OAAOnpB;AAE7B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGg2B;AACb,iBAAoB,YAAA,OAANh2B,MAAkBA,OAAO+sJ,MACjCnmJ,GAAcmmJ,IAAiB/sJ,EAAAA,KAAOi5H,OAAQ8zB,GAAgB/2H,OAAQr8B,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACRvF,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,QAAA,EAAUjtH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFxC,YAAI/rB,KAAI5kC,GAAQ,EAAA,GACZuoL,KAAQvoL,GAAQ,GAAA,EAA4B2wD;AAKhD/rB,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUqP,OAAAA,MAAaG,QAJNt6B,GAAQ,GAAA,EAI6B,MAAA,EAAA,GAAW,EAC3E2wD,MAAM,WAAA;AACJ,iBAAO43H,GAAMjjL,IAAAA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACTjB,YAAIszB,KAAc54B,GAAQ,EAAA,GACtBkwC,KAAyBlwC,GAAQ,GAAA,GACjCgH,KAAWhH,GAAQ,EAAA,GACnBwoL,KAAcxoL,GAAQ,GAAA,GAEtByuB,KAAUmK,GAAY,GAAGnK,OAAAA,GACzBg6J,KAAa,MAAMD,KAAc,KACjCE,KAAQ93J,OAAO,MAAM63J,KAAaA,KAAa,GAAA,GAC/CE,KAAQ/3J,OAAO63J,KAAaA,KAAa,IAAA,GAGzCt7H,KAAe,SAAUF,IAAAA;AAC3B,iBAAO,SAAUU,IAAAA;AACf,gBAAIx/C,KAASnH,GAASkpC,GAAuByd,EAAAA,CAAAA;AAG7C,mBAFW,IAAPV,OAAU9+C,KAASsgB,GAAQtgB,IAAQu6K,IAAO,EAAA,IACnC,IAAPz7H,OAAU9+C,KAASsgB,GAAQtgB,IAAQw6K,IAAO,EAAA,IACvCx6K;UAAAA;QAAAA;AAIX7P,QAAAA,GAAOD,UAAU,EAGf6N,OAAOihD,GAAa,CAAA,GAGpB5oD,KAAK4oD,GAAa,CAAA,GAGlBwD,MAAMxD,GAAa,CAAA,EAAA;MAAA,GAAA,SAAA5sD,IAAAd,IAAAO,IAAA;AC7BrB,YAAIyuH,KAAuBzuH,GAAQ,GAAA,EAA8B0uH,QAC7DzqF,KAAQjkC,GAAQ,EAAA,GAChBwoL,KAAcxoL,GAAQ,GAAA;AAM1B1B,QAAAA,GAAOD,UAAU,SAAUuqE,IAAAA;AACzB,iBAAO3kC,GAAM,WAAA;AACX,mBAAA,CAAA,CAASukJ,GAAY5/G,EAAAA,EAAAA,KANf,uBAAA,mBAOGA,EAAAA,EAAAA,KACH6lD,MAAwB+5D,GAAY5/G,EAAAA,EAAa9pE,SAAS8pE;UAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZpE,YAAI5hE,KAAWhH,GAAQ,GAAA,GACnB0uB,KAAa1uB,GAAQ,GAAA;AAqBzB1B,QAAAA,GAAOD,UAJP,SAAoB8P,IAAAA;AAClB,iBAAOugB,GAAW1nB,GAASmH,EAAAA,EAAQijB,YAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnBrC,YAAI9xB,KAASU,GAAQ,GAAA,GACjBotK,KAAWptK,GAAQ,GAAA,GACnBqJ,KAAUrJ,GAAQ,EAAA,GAClBk3E,KAAWl3E,GAAQ,GAAA,GAMnB4oL,KAActpL,KAASA,GAAOa,YAAAA,QAC9B0oL,KAAiBD,KAAcA,GAAY5hL,WAAAA;AA0B/C1I,QAAAA,GAAOD,UAhBP,SAAS+oE,GAAa5nE,IAAAA;AAEpB,cAAoB,YAAA,OAATA;AACT,mBAAOA;AAET,cAAI6J,GAAQ7J,EAAAA;AAEV,mBAAO4tK,GAAS5tK,IAAO4nE,EAAAA,IAAgB;AAEzC,cAAI8P,GAAS13E,EAAAA;AACX,mBAAOqpL,KAAiBA,GAAenqL,KAAKc,EAAAA,IAAS;AAEvD,cAAIu4B,KAAUv4B,KAAQ;AACtB,iBAAkB,OAAVu4B,MAAkB,IAAIv4B,MAAAA,YAAuB,OAAOu4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACjC9D,YAAI+wJ,KAAY9oL,GAAQ,GAAA,GACpB+oL,KAAa/oL,GAAQ,GAAA,GACrBgpL,KAAgBhpL,GAAQ,GAAA,GACxBgH,KAAWhH,GAAQ,GAAA;AA6BvB1B,QAAAA,GAAOD,UApBP,SAAyB2lF,IAAAA;AACvB,iBAAO,SAAS71E,IAAAA;AACdA,YAAAA,KAASnH,GAASmH,EAAAA;AAElB,gBAAI86K,KAAaF,GAAW56K,EAAAA,IACxB66K,GAAc76K,EAAAA,IAAAA,QAGd8iJ,KAAMg4B,KACNA,GAAW,CAAA,IACX96K,GAAOsuC,OAAO,CAAA,GAEd+vH,KAAWyc,KACXH,GAAUG,IAAY,CAAA,EAAG1jK,KAAK,EAAA,IAC9BpX,GAAOzN,MAAM,CAAA;AAEjB,mBAAOuwJ,GAAIjtE,EAAAA,EAAAA,IAAgBwoF;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC5B/B,YAAI0c,KAAYlpL,GAAQ,GAAA;AAiBxB1B,QAAAA,GAAOD,UANP,SAAmBmK,IAAO0D,IAAO3H,IAAAA;AAC/B,cAAId,KAAS+E,GAAM/E;AAEnB,iBADAc,KAAAA,WAAMA,KAAoBd,KAASc,IAAAA,CAC1B2H,MAAS3H,MAAOd,KAAU+E,KAAQ0gL,GAAU1gL,IAAO0D,IAAO3H,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACdrE,YAAI4kL,KAAenpL,GAAQ,GAAA,GACvB+oL,KAAa/oL,GAAQ,GAAA,GACrBopL,KAAiBppL,GAAQ,GAAA;AAe7B1B,QAAAA,GAAOD,UANP,SAAuB8P,IAAAA;AACrB,iBAAO46K,GAAW56K,EAAAA,IACdi7K,GAAej7K,EAAAA,IACfg7K,GAAah7K,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACHnB7P,QAAAA,GAAOD,UAJP,SAAsB8P,IAAAA;AACpB,iBAAOA,GAAO4lB,MAAM,EAAA;QAAA;MAAA,GAAA,SAAAxzB,IAAAd,IAAA;ACPtB,YAQI4pL,KAAW,qBACXC,KAAU,mDACVC,KAAS,4BAETC,KAAc,sBACdC,KAAa,mCACbC,KAAa,sCAIbC,KAPa,QAAQL,KAAU,MAAMC,KAAS,MAQ9CK,KAAW,qBAEXC,KAAQD,KAAWD,MADP,kBAAwB,CAACH,IAAaC,IAAYC,EAAAA,EAAYnkK,KAAK,GAAA,IAAO,MAAMqkK,KAAWD,KAAW,OAElHG,KAAW,QAAQ,CAACN,KAAcF,KAAU,KAAKA,IAASG,IAAYC,IAAYL,EAAAA,EAAU9jK,KAAK,GAAA,IAAO,KAGxGwkK,KAAYn5J,OAAO24J,KAAS,QAAQA,KAAS,OAAOO,KAAWD,IAAO,GAAA;AAa1EvrL,QAAAA,GAAOD,UAJP,SAAwB8P,IAAAA;AACtB,iBAAOA,GAAOgkB,MAAM43J,EAAAA,KAAc,CAAA;QAAA;MAAA,GAAA,SAAAxpL,IAAAd,IAAAO,IAAA;ACpCpC,YAAI2rK,KAAc3rK,GAAQ,GAAA,GACtBgqL,KAAShqL,GAAQ,GAAA,GACjBiqL,KAAQjqL,GAAQ,GAAA,GAMhBkqL,KAASt5J,OAHA,aAGe,GAAA;AAe5BtyB,QAAAA,GAAOD,UANP,SAA0ByiF,IAAAA;AACxB,iBAAO,SAAS3yE,IAAAA;AACd,mBAAOw9J,GAAYse,GAAMD,GAAO77K,EAAAA,EAAQsgB,QAAQy7J,IAAQ,EAAA,CAAA,GAAMppG,IAAU,EAAA;UAAA;QAAA;MAAA,GAAA,SAAAvgF,IAAAd,IAAAO,IAAA;ACnB5E,YAAImqL,KAAenqL,GAAQ,GAAA,GACvBgH,KAAWhH,GAAQ,GAAA,GAGnBoqL,KAAU,+CAeVC,KAAcz5J,OANJ,mDAMoB,GAAA;AAyBlCtyB,QAAAA,GAAOD,UALP,SAAgB8P,IAAAA;AAEd,kBADAA,KAASnH,GAASmH,EAAAA,MACDA,GAAOsgB,QAAQ27J,IAASD,EAAAA,EAAc17J,QAAQ47J,IAAa,EAAA;QAAA;MAAA,GAAA,SAAA9pL,IAAAd,IAAAO,IAAA;ACzC9E,YAoEImqL,KApEiBnqL,GAAQ,GAAA,EAGP,EAEpB,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAC1E,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAC1E,QAAQ,KAAM,QAAQ,KACtB,QAAQ,KAAM,QAAQ,KACtB,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAChD,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAChD,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAChD,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAChD,QAAQ,KAAM,QAAQ,KACtB,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAC1E,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAC1E,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAChD,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAChD,QAAQ,KAAM,QAAQ,KAAK,QAAQ,KACnC,QAAQ,MAAM,QAAQ,MACtB,QAAQ,MAAM,QAAQ,MACtB,QAAQ,MAER,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KACvE,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KACvE,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KACvE,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KACvE,UAAU,KAAM,UAAU,KAC1B,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KACvE,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KACvE,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KACxD,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KACtF,UAAU,KAAM,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KACtF,UAAU,KAAM,UAAU,KAC1B,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,KAAM,UAAU,KAAK,UAAU,KACzC,UAAU,MAAM,UAAU,MAC1B,UAAU,MAAM,UAAU,MAC1B,UAAU,MAAM,UAAU,IAAA,CAAA;AAa5B1B,QAAAA,GAAOD,UAAU8rL;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACzDjB7rL,QAAAA,GAAOD,UANP,SAAwB4B,IAAAA;AACtB,iBAAO,SAASH,IAAAA;AACd,mBAAiB,QAAVG,KAAAA,SAA6BA,GAAOH,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACT/C,YAAIwqL,KAAatqL,GAAQ,GAAA,GACrBuqL,KAAiBvqL,GAAQ,GAAA,GACzBgH,KAAWhH,GAAQ,GAAA,GACnBwqL,KAAexqL,GAAQ,GAAA;AA+B3B1B,QAAAA,GAAOD,UAVP,SAAe8P,IAAQyhB,IAASg6H,IAAAA;AAI9B,iBAHAz7I,KAASnH,GAASmH,EAAAA,GAAAA,YAClByhB,KAAUg6H,KAAAA,SAAoBh6H,MAGrB26J,GAAep8K,EAAAA,IAAUq8K,GAAar8K,EAAAA,IAAUm8K,GAAWn8K,EAAAA,IAE7DA,GAAOgkB,MAAMvC,EAAAA,KAAY,CAAA;QAAA;MAAA,GAAA,SAAArvB,IAAAd,IAAA;AC9BlC,YAAIgrL,KAAc;AAalBnsL,QAAAA,GAAOD,UAJP,SAAoB8P,IAAAA;AAClB,iBAAOA,GAAOgkB,MAAMs4J,EAAAA,KAAgB,CAAA;QAAA;MAAA,GAAA,SAAAlqL,IAAAd,IAAA;ACVtC,YAAIirL,KAAmB;AAavBpsL,QAAAA,GAAOD,UAJP,SAAwB8P,IAAAA;AACtB,iBAAOu8K,GAAiB75J,KAAK1iB,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACV/B,YAKIw8K,KAAiB,mBACjBC,KAAe,6BAKfC,KAAe,6BAEfC,KAAeC,+OAIfC,KAAU,MAAMF,KAAe,KAE/BG,KAAW,QACXC,KAAY,qBACZC,KAAU,MAAMP,KAAe,KAC/BQ,KAAS,sBAAuBN,KAAeG,KAAWN,KAAiBC,KAAeC,KAAe,KAIzGpB,KAAa,mCACbC,KAAa,sCACb2B,KAAU,MAAMR,KAAe,KAI/BS,KAAc,QAAQH,KAAU,MAAMC,KAAS,KAC/CG,KAAc,QAAQF,KAAU,MAAMD,KAAS,KAC/CI,KAAkB,sCAClBC,KAAkB,sCAClB9B,KAAW+B,iFACX9B,KAAW,qBAIXC,KAAQD,KAAWD,MAHP,kBAAwB,CAbtB,sBAaoCF,IAAYC,EAAAA,EAAYnkK,KAAK,GAAA,IAAO,MAAMqkK,KAAWD,KAAW,OAIlHgC,KAAU,QAAQ,CAACT,IAAWzB,IAAYC,EAAAA,EAAYnkK,KAAK,GAAA,IAAO,MAAMskK,IAGxE+B,KAAgBh7J,OAAO,CACzBy6J,KAAU,MAAMF,KAAU,MAAMK,KAAkB,QAAQ,CAACR,IAASK,IAAS,GAAA,EAAK9lK,KAAK,GAAA,IAAO,KAC9FgmK,KAAc,MAAME,KAAkB,QAAQ,CAACT,IAASK,KAAUC,IAAa,GAAA,EAAK/lK,KAAK,GAAA,IAAO,KAChG8lK,KAAU,MAAMC,KAAc,MAAME,IACpCH,KAAU,MAAMI,IATD,oDADA,oDAafR,IACAU,EAAAA,EACApmK,KAAK,GAAA,GAAM,GAAA;AAabjnB,QAAAA,GAAOD,UAJP,SAAsB8P,IAAAA;AACpB,iBAAOA,GAAOgkB,MAAMy5J,EAAAA,KAAkB,CAAA;QAAA;MAAA,GAAA,SAAArrL,IAAAd,IAAAO,IAAA;ACjExC,YAAIypJ,KAAezpJ,GAAQ,GAAA,GACvBqG,KAAcrG,GAAQ,GAAA,GACtB2I,KAAO3I,GAAQ,GAAA;AAsBnB1B,QAAAA,GAAOD,UAbP,SAAoBwtL,IAAAA;AAClB,iBAAO,SAASv2K,IAAYkI,IAAW0wG,IAAAA;AACrC,gBAAI/nH,KAAWlH,OAAOqW,EAAAA;AACtB,gBAAA,CAAKjP,GAAYiP,EAAAA,GAAa;AAC5B,kBAAIm/I,KAAWhL,GAAajsI,IAAW,CAAA;AACvClI,cAAAA,KAAa3M,GAAK2M,EAAAA,GAClBkI,KAAY,SAAS1d,IAAAA;AAAO,uBAAO20J,GAAStuJ,GAASrG,EAAAA,GAAMA,IAAKqG,EAAAA;cAAAA;YAAAA;AAElE,gBAAIjC,KAAQ2nL,GAAcv2K,IAAYkI,IAAW0wG,EAAAA;AACjD,mBAAOhqH,KAAAA,KAAaiC,GAASsuJ,KAAWn/I,GAAWpR,EAAAA,IAASA,EAAAA,IAAAA;UAASsF;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpBzE,YAAIsiL,KAAc9rL,GAAQ,GAAA,GACtB+rL,KAAe/rL,GAAQ,GAAA,GACvBgsL,KAA0BhsL,GAAQ,GAAA;AAmBtC1B,QAAAA,GAAOD,UAVP,SAAqBk7B,IAAAA;AACnB,cAAI0yJ,KAAYF,GAAaxyJ,EAAAA;AAC7B,iBAAwB,KAApB0yJ,GAAUxoL,UAAewoL,GAAU,CAAA,EAAG,CAAA,IACjCD,GAAwBC,GAAU,CAAA,EAAG,CAAA,GAAIA,GAAU,CAAA,EAAG,CAAA,CAAA,IAExD,SAAShsL,IAAAA;AACd,mBAAOA,OAAWs5B,MAAUuyJ,GAAY7rL,IAAQs5B,IAAQ0yJ,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACjB5D,YAAIpoK,KAAQ7jB,GAAQ,GAAA,GAChB80J,KAAc90J,GAAQ,GAAA;AA4D1B1B,QAAAA,GAAOD,UA5CP,SAAqB4B,IAAQs5B,IAAQ0yJ,IAAWn1G,IAAAA;AAC9C,cAAI5yE,KAAQ+nL,GAAUxoL,QAClBA,KAASS,IACTgoL,KAAAA,CAAgBp1G;AAEpB,cAAc,QAAV72E;AACF,mBAAA,CAAQwD;AAGV,eADAxD,KAAShB,OAAOgB,EAAAA,GACTiE,QAAS;AACd,gBAAIuwB,KAAOw3J,GAAU/nL,EAAAA;AACrB,gBAAKgoL,MAAgBz3J,GAAK,CAAA,IAClBA,GAAK,CAAA,MAAOx0B,GAAOw0B,GAAK,CAAA,CAAA,IAAA,EACtBA,GAAK,CAAA,KAAMx0B;AAEnB,qBAAA;UAAO;AAGX,iBAAA,EAASiE,KAAQT,MAAQ;AAEvB,gBAAI3D,MADJ20B,KAAOw3J,GAAU/nL,EAAAA,GACF,CAAA,GACX0yF,KAAW32F,GAAOH,EAAAA,GAClBi2J,KAAWthI,GAAK,CAAA;AAEpB,gBAAIy3J,MAAgBz3J,GAAK,CAAA,GAAA;AACvB,kBAAA,WAAImiE,MAAAA,EAA4B92F,MAAOG;AACrC,uBAAA;YAAO,OAEJ;AACL,kBAAIqX,KAAQ,IAAIuM;AAChB,kBAAIizD;AACF,oBAAI/+C,KAAS++C,GAAW8f,IAAUm/D,IAAUj2J,IAAKG,IAAQs5B,IAAQjiB,EAAAA;AAEnE,kBAAA,EAAA,WAAMygB,KACE+8H,GAAYiB,IAAUn/D,IAAUu1F,GAA+Cr1G,IAAYx/D,EAAAA,IAC3FygB;AAEN,uBAAA;YAAO;UAAA;AAIb,iBAAA;QAAO;MAAA,GAAA,SAAAx3B,IAAAd,IAAAO,IAAA;AC1DT,YAAI6jB,KAAQ7jB,GAAQ,GAAA,GAChBosL,KAAcpsL,GAAQ,GAAA,GACtBqsL,KAAarsL,GAAQ,GAAA,GACrBssL,KAAetsL,GAAQ,GAAA,GACvBmrF,KAASnrF,GAAQ,GAAA,GACjBqJ,KAAUrJ,GAAQ,EAAA,GAClBivE,KAAWjvE,GAAQ,GAAA,GACnBsrF,KAAetrF,GAAQ,GAAA,GAMvBusL,KAAU,sBACVC,KAAW,kBACXC,KAAY,mBAMZrsL,KAHcnB,OAAOkB,UAGQC;AA6DjC9B,QAAAA,GAAOD,UA7CP,SAAyB4B,IAAQoN,IAAO0nJ,IAASj+E,IAAYo+E,IAAW59I,IAAAA;AACtE,cAAIo1K,KAAWrjL,GAAQpJ,EAAAA,GACnB0sL,KAAWtjL,GAAQgE,EAAAA,GACnBu/K,KAASF,KAAWF,KAAWrhG,GAAOlrF,EAAAA,GACtC4sL,KAASF,KAAWH,KAAWrhG,GAAO99E,EAAAA,GAKtCy/K,MAHJF,KAASA,MAAUL,KAAUE,KAAYG,OAGhBH,IACrBM,MAHJF,KAASA,MAAUN,KAAUE,KAAYI,OAGhBJ,IACrBO,KAAYJ,MAAUC;AAE1B,cAAIG,MAAa/9G,GAAShvE,EAAAA,GAAS;AACjC,gBAAA,CAAKgvE,GAAS5hE,EAAAA;AACZ,qBAAA;AAEFq/K,YAAAA,KAAAA,MACAI,KAAAA;UAAW;AAEb,cAAIE,MAAAA,CAAcF;AAEhB,mBADAx1K,OAAUA,KAAQ,IAAIuM,OACd6oK,MAAYphG,GAAarrF,EAAAA,IAC7BmsL,GAAYnsL,IAAQoN,IAAO0nJ,IAASj+E,IAAYo+E,IAAW59I,EAAAA,IAC3D+0K,GAAWpsL,IAAQoN,IAAOu/K,IAAQ73B,IAASj+E,IAAYo+E,IAAW59I,EAAAA;AAExE,cAAA,EArDyB,IAqDnBy9I,KAAiC;AACrC,gBAAIk4B,KAAeH,MAAY1sL,GAAe1B,KAAKuB,IAAQ,aAAA,GACvDitL,KAAeH,MAAY3sL,GAAe1B,KAAK2O,IAAO,aAAA;AAE1D,gBAAI4/K,MAAgBC,IAAc;AAChC,kBAAIC,KAAeF,KAAehtL,GAAOT,MAAAA,IAAUS,IAC/CmtL,KAAeF,KAAe7/K,GAAM7N,MAAAA,IAAU6N;AAGlD,qBADAiK,OAAUA,KAAQ,IAAIuM,OACfqxI,GAAUi4B,IAAcC,IAAcr4B,IAASj+E,IAAYx/D,EAAAA;YAAAA;UAAAA;AAGtE,iBAAA,CAAA,CAAK01K,OAGL11K,OAAUA,KAAQ,IAAIuM,OACfyoK,GAAarsL,IAAQoN,IAAO0nJ,IAASj+E,IAAYo+E,IAAW59I,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/ErE,YAAIiwD,KAAWvnE,GAAQ,GAAA,GACnBqtL,KAAcrtL,GAAQ,GAAA,GACtBstL,KAActtL,GAAQ,GAAA;AAU1B,iBAASg1J,GAASt8I,IAAAA;AAChB,cAAIxU,KAAAA,IACAT,KAAmB,QAAViV,KAAiB,IAAIA,GAAOjV;AAGzC,eADA6B,KAAKwwF,WAAW,IAAIvuB,MAAAA,EACXrjE,KAAQT;AACf6B,iBAAKid,IAAI7J,GAAOxU,EAAAA,CAAAA;QAAAA;AAKpB8wJ,QAAAA,GAAS70J,UAAUoiB,MAAMyyI,GAAS70J,UAAU+U,OAAOm4K,IACnDr4B,GAAS70J,UAAUqL,MAAM8hL,IAEzBhvL,GAAOD,UAAU22J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACRjB12J,QAAAA,GAAOD,UALP,SAAqBmB,IAAAA;AAEnB,iBADA8F,KAAKwwF,SAAS9mF,IAAIxP,IAbC,2BAAA,GAcZ8F;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACFThH,QAAAA,GAAOD,UAJP,SAAqBmB,IAAAA;AACnB,iBAAO8F,KAAKwwF,SAAStqF,IAAIhM,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACE3BlB,QAAAA,GAAOD,UAJP,SAAkBqL,IAAO5J,IAAAA;AACvB,iBAAO4J,GAAM8B,IAAI1L,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACTnB,YAAIR,KAASU,GAAQ,GAAA,GACjB48C,KAAa58C,GAAQ,GAAA,GACrB60B,KAAK70B,GAAQ,GAAA,GACbosL,KAAcpsL,GAAQ,GAAA,GACtButL,KAAavtL,GAAQ,GAAA,GACrBwtL,KAAaxtL,GAAQ,GAAA,GAqBrB4oL,KAActpL,KAASA,GAAOa,YAAAA,QAC9BstL,KAAgB7E,KAAcA,GAAYj+K,UAAAA;AAoF9CrM,QAAAA,GAAOD,UAjEP,SAAoB4B,IAAQoN,IAAO4qC,IAAK88G,IAASj+E,IAAYo+E,IAAW59I,IAAAA;AACtE,kBAAQ2gC,IAAAA;YACN,KAzBc;AA0BZ,kBAAKh4C,GAAO4uE,cAAcxhE,GAAMwhE,cAC3B5uE,GAAO2uE,cAAcvhE,GAAMuhE;AAC9B,uBAAA;AAEF3uE,cAAAA,KAASA,GAAOq0C,QAChBjnC,KAAQA,GAAMinC;YAEhB,KAlCiB;AAmCf,qBAAA,EAAKr0C,GAAO4uE,cAAcxhE,GAAMwhE,cAAAA,CAC3BqmF,GAAU,IAAIt4G,GAAW38C,EAAAA,GAAS,IAAI28C,GAAWvvC,EAAAA,CAAAA;YAKxD,KAnDU;YAoDV,KAnDU;YAoDV,KAjDY;AAoDV,qBAAOwnB,GAAAA,CAAI50B,IAAAA,CAASoN,EAAAA;YAEtB,KAxDW;AAyDT,qBAAOpN,GAAOnB,QAAQuO,GAAMvO,QAAQmB,GAAOgnC,WAAW55B,GAAM45B;YAE9D,KAxDY;YAyDZ,KAvDY;AA2DV,qBAAOhnC,MAAWoN,KAAQ;YAE5B,KAjES;AAkEP,kBAAIqgL,KAAUH;YAEhB,KAjES;AAkEP,kBAAIp4B,KA5EiB,IA4ELJ;AAGhB,kBAFA24B,OAAYA,KAAUF,KAElBvtL,GAAO6D,QAAQuJ,GAAMvJ,QAAAA,CAASqxJ;AAChC,uBAAA;AAGF,kBAAIuwB,KAAUpuK,GAAMlY,IAAIa,EAAAA;AACxB,kBAAIylL;AACF,uBAAOA,MAAWr4K;AAEpB0nJ,cAAAA,MAtFuB,GAyFvBz9I,GAAMtI,IAAI/O,IAAQoN,EAAAA;AAClB,kBAAI0qB,KAASq0J,GAAYsB,GAAQztL,EAAAA,GAASytL,GAAQrgL,EAAAA,GAAQ0nJ,IAASj+E,IAAYo+E,IAAW59I,EAAAA;AAE1F,qBADAA,GAAc,OAAErX,EAAAA,GACT83B;YAET,KAnFY;AAoFV,kBAAI01J;AACF,uBAAOA,GAAc/uL,KAAKuB,EAAAA,KAAWwtL,GAAc/uL,KAAK2O,EAAAA;UAAAA;AAG9D,iBAAA;QAAO;MAAA,GAAA,SAAA9M,IAAAd,IAAA;AC3FTnB,QAAAA,GAAOD,UAVP,SAAoB+L,IAAAA;AAClB,cAAIlG,KAAAA,IACA6zB,KAASt3B,MAAM2J,GAAItG,IAAAA;AAKvB,iBAHAsG,GAAIyF,QAAQ,SAASrQ,IAAOM,IAAAA;AAC1Bi4B,YAAAA,GAAAA,EAAS7zB,EAAAA,IAAS,CAACpE,IAAKN,EAAAA;UAAAA,CAAAA,GAEnBu4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACGTz5B,QAAAA,GAAOD,UAVP,SAAoB2Q,IAAAA;AAClB,cAAI9K,KAAAA,IACA6zB,KAASt3B,MAAMuO,GAAIlL,IAAAA;AAKvB,iBAHAkL,GAAIa,QAAQ,SAASrQ,IAAAA;AACnBu4B,YAAAA,GAAAA,EAAS7zB,EAAAA,IAAS1E;UAAAA,CAAAA,GAEbu4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACdT,YAAI41J,KAAa3tL,GAAQ,GAAA,GASrBI,KAHcnB,OAAOkB,UAGQC;AAgFjC9B,QAAAA,GAAOD,UAjEP,SAAsB4B,IAAQoN,IAAO0nJ,IAASj+E,IAAYo+E,IAAW59I,IAAAA;AACnE,cAAI69I,KAtBqB,IAsBTJ,IACZ64B,KAAWD,GAAW1tL,EAAAA,GACtB4tL,KAAYD,GAASnqL;AAIzB,cAAIoqL,MAHWF,GAAWtgL,EAAAA,EACD5J,UAAAA,CAEM0xJ;AAC7B,mBAAA;AAGF,mBADIjxJ,KAAQ2pL,IACL3pL,QAAS;AACd,gBAAIpE,KAAM8tL,GAAS1pL,EAAAA;AACnB,gBAAA,EAAMixJ,KAAYr1J,MAAOuN,KAAQjN,GAAe1B,KAAK2O,IAAOvN,EAAAA;AAC1D,qBAAA;UAAO;AAIX,cAAIguL,KAAax2K,GAAMlY,IAAIa,EAAAA,GACvBq1J,KAAah+I,GAAMlY,IAAIiO,EAAAA;AAC3B,cAAIygL,MAAcx4B;AAChB,mBAAOw4B,MAAczgL,MAASioJ,MAAcr1J;AAE9C,cAAI83B,KAAAA;AACJzgB,UAAAA,GAAMtI,IAAI/O,IAAQoN,EAAAA,GAClBiK,GAAMtI,IAAI3B,IAAOpN,EAAAA;AAGjB,mBADI8tL,KAAW54B,IAAAA,EACNjxJ,KAAQ2pL,MAAW;AAE1B,gBAAIj3F,KAAW32F,GADfH,KAAM8tL,GAAS1pL,EAAAA,CAAAA,GAEXsxJ,KAAWnoJ,GAAMvN,EAAAA;AAErB,gBAAIg3E;AACF,kBAAI2+E,KAAWN,KACXr+E,GAAW0+E,IAAU5+D,IAAU92F,IAAKuN,IAAOpN,IAAQqX,EAAAA,IACnDw/D,GAAW8f,IAAU4+D,IAAU11J,IAAKG,IAAQoN,IAAOiK,EAAAA;AAGzD,gBAAA,EAAA,WAAMm+I,KACG7+D,OAAa4+D,MAAYN,GAAUt+D,IAAU4+D,IAAUT,IAASj+E,IAAYx/D,EAAAA,IAC7Em+I,KACD;AACL19H,cAAAA,KAAAA;AACA;YAAA;AAEFg2J,YAAAA,OAAaA,KAAkB,iBAAPjuL;UAAAA;AAE1B,cAAIi4B,MAAAA,CAAWg2J,IAAU;AACvB,gBAAIC,KAAU/tL,GAAOa,aACjBmtL,KAAU5gL,GAAMvM;AAGhBktL,YAAAA,MAAWC,MAAAA,EACV,iBAAiBhuL,OAAAA,EAAU,iBAAiBoN,OACzB,cAAA,OAAX2gL,MAAyBA,cAAmBA,MACjC,cAAA,OAAXC,MAAyBA,cAAmBA,OACvDl2J,KAAAA;UAAS;AAKb,iBAFAzgB,GAAc,OAAErX,EAAAA,GAChBqX,GAAc,OAAEjK,EAAAA,GACT0qB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC9DTz5B,QAAAA,GAAOD,UAfP,SAAqBmK,IAAOgV,IAAAA;AAM1B,mBALItZ,KAAAA,IACAT,KAAkB,QAAT+E,KAAgB,IAAIA,GAAM/E,QACnCyqL,KAAW,GACXn2J,KAAS,CAAA,GAAA,EAEJ7zB,KAAQT,MAAQ;AACvB,gBAAIjE,KAAQgJ,GAAMtE,EAAAA;AACdsZ,YAAAA,GAAUhe,IAAO0E,IAAOsE,EAAAA,MAC1BuvB,GAAOm2J,IAAAA,IAAc1uL;UAAAA;AAGzB,iBAAOu4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACrBT,YAGI+9H,KAHU91J,GAAQ,GAAA,EAGGf,OAAO0J,MAAM1J,MAAAA;AAEtCX,QAAAA,GAAOD,UAAUy3J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACLjB,YAIIppE,KAJY1sF,GAAQ,GAAA,EACbA,GAAQ,EAAA,GAGY,UAAA;AAE/B1B,QAAAA,GAAOD,UAAUquF;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNjB,YAIIC,KAJY3sF,GAAQ,GAAA,EACbA,GAAQ,EAAA,GAGW,SAAA;AAE9B1B,QAAAA,GAAOD,UAAUsuF;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNjB,YAIIpqF,KAJYvC,GAAQ,GAAA,EACbA,GAAQ,EAAA,GAGO,KAAA;AAE1B1B,QAAAA,GAAOD,UAAUkE;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNjB,YAIIgN,KAJYvP,GAAQ,GAAA,EACbA,GAAQ,EAAA,GAGW,SAAA;AAE9B1B,QAAAA,GAAOD,UAAUkR;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNjB,YAAI4+K,KAAqBnuL,GAAQ,GAAA,GAC7B2I,KAAO3I,GAAQ,GAAA;AAsBnB1B,QAAAA,GAAOD,UAbP,SAAsB4B,IAAAA;AAIpB,mBAHI83B,KAASpvB,GAAK1I,EAAAA,GACdwD,KAASs0B,GAAOt0B,QAEbA,QAAU;AACf,gBAAI3D,KAAMi4B,GAAOt0B,EAAAA,GACbjE,KAAQS,GAAOH,EAAAA;AAEnBi4B,YAAAA,GAAOt0B,EAAAA,IAAU,CAAC3D,IAAKN,IAAO2uL,GAAmB3uL,EAAAA,CAAAA;UAAAA;AAEnD,iBAAOu4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpBT,YAAI+8H,KAAc90J,GAAQ,GAAA,GACtBZ,KAAMY,GAAQ,EAAA,GACdunB,KAAQvnB,GAAQ,GAAA,GAChBwtF,KAAQxtF,GAAQ,GAAA,GAChBmuL,KAAqBnuL,GAAQ,GAAA,GAC7BgsL,KAA0BhsL,GAAQ,GAAA,GAClCwwH,KAAQxwH,GAAQ,GAAA;AA0BpB1B,QAAAA,GAAOD,UAZP,SAA6B26B,IAAM+8H,IAAAA;AACjC,iBAAIvoE,GAAMx0D,EAAAA,KAASm1J,GAAmBp4B,EAAAA,IAC7Bi2B,GAAwBx7D,GAAMx3F,EAAAA,GAAO+8H,EAAAA,IAEvC,SAAS91J,IAAAA;AACd,gBAAI22F,KAAWx3F,GAAIa,IAAQ+4B,EAAAA;AAC3B,mBAAA,WAAQ49D,MAA0BA,OAAam/D,KAC3CxuI,GAAMtnB,IAAQ+4B,EAAAA,IACd87H,GAAYiB,IAAUn/D,IAAUu1F,CAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC5BxC,YAAIiC,KAAgBpuL,GAAQ,GAAA,GAGxBq6H,KAAa,oGAGbC,KAAe,YASf7sC,KAAe2gG,GAAc,SAASjgL,IAAAA;AACxC,cAAI4pB,KAAS,CAAA;AAOb,iBAN6B,OAAzB5pB,GAAOI,WAAW,CAAA,KACpBwpB,GAAO7iB,KAAK,EAAA,GAEd/G,GAAOsgB,QAAQ4rG,IAAY,SAASloG,IAAO+jB,IAAQqkF,IAAOC,IAAAA;AACxDziG,YAAAA,GAAO7iB,KAAKqlH,KAAQC,GAAU/rG,QAAQ6rG,IAAc,IAAA,IAASpkF,MAAU/jB,EAAAA;UAAAA,CAAAA,GAElE4F;QAAAA,CAAAA;AAGTz5B,QAAAA,GAAOD,UAAUovF;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1BjB,YAAI9gE,KAAU3sB,GAAQ,GAAA;AAyBtB1B,QAAAA,GAAOD,UAZP,SAAuB88B,IAAAA;AACrB,cAAIpD,KAASpL,GAAQwO,IAAM,SAASr7B,IAAAA;AAIlC,mBAfmB,QAYf4J,GAAM5F,QACR4F,GAAMmH,MAAAA,GAED/Q;UAAAA,CAAAA,GAGL4J,KAAQquB,GAAOruB;AACnB,iBAAOquB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACtBT,YAAIs2J,KAAYruL,GAAQ,GAAA,GACpBsuL,KAAUtuL,GAAQ,GAAA;AAgCtB1B,QAAAA,GAAOD,UAJP,SAAe4B,IAAQ+4B,IAAAA;AACrB,iBAAiB,QAAV/4B,MAAkBquL,GAAQruL,IAAQ+4B,IAAMq1J,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AClBjD/vL,QAAAA,GAAOD,UAJP,SAAmB4B,IAAQH,IAAAA;AACzB,iBAAiB,QAAVG,MAAkBH,MAAOb,OAAOgB,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACTzC,YAAIswH,KAAWvwH,GAAQ,GAAA,GACnBorF,KAAcprF,GAAQ,GAAA,GACtBqJ,KAAUrJ,GAAQ,EAAA,GAClBoyJ,KAAUpyJ,GAAQ,GAAA,GAClBkpE,KAAWlpE,GAAQ,GAAA,GACnBwwH,KAAQxwH,GAAQ,GAAA;AAiCpB1B,QAAAA,GAAOD,UAtBP,SAAiB4B,IAAQ+4B,IAAMu1J,IAAAA;AAO7B,mBAJIrqL,KAAAA,IACAT,MAHJu1B,KAAOu3F,GAASv3F,IAAM/4B,EAAAA,GAGJwD,QACds0B,KAAAA,OAAS,EAEJ7zB,KAAQT,MAAQ;AACvB,gBAAI3D,KAAM0wH,GAAMx3F,GAAK90B,EAAAA,CAAAA;AACrB,gBAAA,EAAM6zB,KAAmB,QAAV93B,MAAkBsuL,GAAQtuL,IAAQH,EAAAA;AAC/C;AAEFG,YAAAA,KAASA,GAAOH,EAAAA;UAAAA;AAElB,iBAAIi4B,MAAAA,EAAY7zB,MAAST,KAChBs0B,KAAAA,CAAAA,EAETt0B,KAAmB,QAAVxD,KAAiB,IAAIA,GAAOwD,WAClBylE,GAASzlE,EAAAA,KAAW2uJ,GAAQtyJ,IAAK2D,EAAAA,MACjD4F,GAAQpJ,EAAAA,KAAWmrF,GAAYnrF,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnCpC,YAAIuuL,KAAexuL,GAAQ,GAAA,GACvByuL,KAAmBzuL,GAAQ,GAAA,GAC3BwtF,KAAQxtF,GAAQ,GAAA,GAChBwwH,KAAQxwH,GAAQ,GAAA;AA4BpB1B,QAAAA,GAAOD,UAJP,SAAkB26B,IAAAA;AAChB,iBAAOw0D,GAAMx0D,EAAAA,IAAQw1J,GAAah+D,GAAMx3F,EAAAA,CAAAA,IAASy1J,GAAiBz1J,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACfpE16B,QAAAA,GAAOD,UANP,SAAsByB,IAAAA;AACpB,iBAAO,SAASG,IAAAA;AACd,mBAAiB,QAAVA,KAAAA,SAA6BA,GAAOH,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACT/C,YAAI+iC,KAAU7iC,GAAQ,GAAA;AAetB1B,QAAAA,GAAOD,UANP,SAA0B26B,IAAAA;AACxB,iBAAO,SAAS/4B,IAAAA;AACd,mBAAO4iC,GAAQ5iC,IAAQ+4B,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACX3B,YAAI01J,KAAgB1uL,GAAQ,GAAA,GACxBypJ,KAAezpJ,GAAQ,GAAA,GACvB2uL,KAAY3uL,GAAQ,GAAA,GAGpB2yJ,KAAYpvJ,KAAKC;AAiDrBlF,QAAAA,GAAOD,UAZP,SAAmBmK,IAAOgV,IAAW0wG,IAAAA;AACnC,cAAIzqH,KAAkB,QAAT+E,KAAgB,IAAIA,GAAM/E;AACvC,cAAA,CAAKA;AACH,mBAAA;AAEF,cAAIS,KAAqB,QAAbgqH,KAAoB,IAAIygE,GAAUzgE,EAAAA;AAI9C,iBAHIhqH,KAAQ,MACVA,KAAQyuJ,GAAUlvJ,KAASS,IAAO,CAAA,IAE7BwqL,GAAclmL,IAAOihJ,GAAajsI,IAAW,CAAA,GAAItZ,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC5B1D5F,QAAAA,GAAOD,UAZP,SAAuBmK,IAAOgV,IAAW0wG,IAAWg3D,IAAAA;AAIlD,mBAHIzhL,KAAS+E,GAAM/E,QACfS,KAAQgqH,MAAag3D,KAAY,IAAA,KAE7BA,KAAYhhL,OAAAA,EAAYA,KAAQT;AACtC,gBAAI+Z,GAAUhV,GAAMtE,EAAAA,GAAQA,IAAOsE,EAAAA;AACjC,qBAAOtE;AAGX,iBAAA;QAAQ;MAAA,GAAA,SAAA3D,IAAAd,IAAAO,IAAA;ACpBV,YAAI4uL,KAAW5uL,GAAQ,GAAA;AAmCvB1B,QAAAA,GAAOD,UAPP,SAAmBmB,IAAAA;AACjB,cAAIu4B,KAAS62J,GAASpvL,EAAAA,GAClBw6E,KAAYjiD,KAAS;AAEzB,iBAAOA,MAAWA,KAAUiiD,KAAYjiD,KAASiiD,KAAYjiD,KAAU;QAAA;MAAA,GAAA,SAAAx3B,IAAAd,IAAAO,IAAA;AChCzE,YAAI6rK,KAAW7rK,GAAQ,GAAA,GAGnB6uL,KAAW,IAAA;AAsCfvwL,QAAAA,GAAOD,UAZP,SAAkBmB,IAAAA;AAChB,iBAAKA,MAGLA,KAAQqsK,GAASrsK,EAAAA,OACHqvL,MAAYrvL,OAAAA,KAAU,IA9BpB,yBA+BFA,KAAQ,IAAA,KAAS,KAGxBA,MAAUA,KAAQA,KAAQ,IAPd,MAAVA,KAAcA,KAAQ;QAAA;MAAA,GAAA,SAAAe,IAAAd,IAAAO,IAAA;AC/BjC,YAAI8uL,KAAkB9uL,GAAQ,GAAA,GAG1B+uL,KAAc;AAelBzwL,QAAAA,GAAOD,UANP,SAAkB8P,IAAAA;AAChB,iBAAOA,KACHA,GAAOzN,MAAM,GAAGouL,GAAgB3gL,EAAAA,IAAU,CAAA,EAAGsgB,QAAQsgK,IAAa,EAAA,IAClE5gL;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACdN,YAAI6gL,KAAe;AAiBnB1wL,QAAAA,GAAOD,UAPP,SAAyB8P,IAAAA;AAGvB,mBAFIjK,KAAQiK,GAAO1K,QAEZS,QAAW8qL,GAAan+J,KAAK1iB,GAAOsuC,OAAOv4C,EAAAA,CAAAA;AAAAA;AAClD,iBAAOA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACfT,YAAIqyJ,KAAWv2J,GAAQ,GAAA;AAqBvB1B,QAAAA,GAAOD,UAVP,SAAkBiX,IAAYkI,IAAAA;AAC5B,cAAIua;AAMJ,iBAJAw+H,GAASjhJ,IAAY,SAAS9V,IAAO0E,IAAOoR,IAAAA;AAE1C,mBAAA,EADAyiB,KAASva,GAAUhe,IAAO0E,IAAOoR,EAAAA;UAAAA,CAAAA,GAAAA,CAAAA,CAG1ByiB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AClBX,YAAI45H,KAAU3xJ,GAAQ,GAAA,GAClB2I,KAAO3I,GAAQ,GAAA;AAcnB1B,QAAAA,GAAOD,UAJP,SAAoB4B,IAAQw0J,IAAAA;AAC1B,iBAAOx0J,MAAU0xJ,GAAQ1xJ,IAAQw0J,IAAU9rJ,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZ7C,YAAItC,KAAcrG,GAAQ,GAAA;AA+B1B1B,QAAAA,GAAOD,UArBP,SAAwB4wL,IAAU/J,IAAAA;AAChC,iBAAO,SAAS5vK,IAAYm/I,IAAAA;AAC1B,gBAAkB,QAAdn/I;AACF,qBAAOA;AAET,gBAAA,CAAKjP,GAAYiP,EAAAA;AACf,qBAAO25K,GAAS35K,IAAYm/I,EAAAA;AAM9B,qBAJIhxJ,KAAS6R,GAAW7R,QACpBS,KAAQghL,KAAYzhL,KAAAA,IACpB0C,KAAWlH,OAAOqW,EAAAA,IAEd4vK,KAAYhhL,OAAAA,EAAYA,KAAQT,OAAAA,UAClCgxJ,GAAStuJ,GAASjC,EAAAA,GAAQA,IAAOiC,EAAAA;AAAAA;AAIvC,mBAAOmP;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC1BX,YAAI45K,KAAoB,EACpB,KAAK,SACL,KAAK,UACL,KAAK,UACL,KAAK,QACL,KAAK,OAAA;AAWT5wL,QAAAA,GAAOD,UARP,SAAsB8P,IAAAA;AAClB,iBAAOA,MAAUA,GAAOsgB,UAClBtgB,GAAOsgB,QAAQ,cAAc,SAASD,IAAKyC,IAAAA;AACzC,mBAAOi+J,GAAkBj+J,EAAAA;UAAAA,CAAAA,IAE3B9iB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACOV7P,QAAAA,GAAOD,UAAUg1H;AAEjB,YAAI87D,KAAKnvL,GAAQ,GAAA,EAAU+wH;AAkB3B,iBAASsC,KAAAA;AACP87D,UAAAA,GAAGzwL,KAAK4G,IAAAA;QAAAA;AAlBK,QAAAtF,GAAQ,EAAA,EAEdqzH,IAAQ87D,EAAAA,GACjB97D,GAAOhqD,WAAWrpE,GAAQ,GAAA,GAC1BqzH,GAAO/pD,WAAWtpE,GAAQ,GAAA,GAC1BqzH,GAAOjqD,SAASppE,GAAQ,GAAA,GACxBqzH,GAAOC,YAAYtzH,GAAQ,GAAA,GAC3BqzH,GAAOE,cAAcvzH,GAAQ,GAAA,GAG7BqzH,GAAOA,SAASA,IAWhBA,GAAOlzH,UAAUg3H,OAAO,SAAS1b,IAAMniF,IAAAA;AACrC,cAAIC,KAASj0B;AAEb,mBAASy0J,GAAOpjC,IAAAA;AACVlb,YAAAA,GAAK/wF,YAAAA,UACO+wF,GAAKl1C,MAAMowD,EAAAA,KAAUp9F,GAAO2gI,SACxC3gI,GAAO2gI,MAAAA;UAAAA;AAOb,mBAASJ,KAAAA;AACHvgI,YAAAA,GAAOgwC,YAAYhwC,GAAO6gI,UAC5B7gI,GAAO6gI,OAAAA;UAAAA;AAJX7gI,UAAAA,GAAOm/C,GAAG,QAAQqhF,EAAAA,GAQlBt+C,GAAK/iC,GAAG,SAASohF,EAAAA,GAIZr+C,GAAK2zE,YAAc91J,MAAAA,UAAWA,GAAQ/0B,QACzCg1B,GAAOm/C,GAAG,OAAOhP,EAAAA,GACjBnwC,GAAOm/C,GAAG,SAASkhF,EAAAA;AAGrB,cAAIy1B,KAAAA;AACJ,mBAAS3lH,KAAAA;AACH2lH,YAAAA,OACJA,KAAAA,MAEA5zE,GAAKl3G,IAAAA;UAAAA;AAIP,mBAASq1J,KAAAA;AACHy1B,YAAAA,OACJA,KAAAA,MAE4B,cAAA,OAAjB5zE,GAAK8a,WAAwB9a,GAAK8a,QAAAA;UAAAA;AAI/C,mBAASz9B,GAAQm6B,IAAAA;AAEf,gBADAq8D,GAAAA,GACwC,MAApCH,GAAGz8D,cAAcptH,MAAM,OAAA;AACzB,oBAAM2tH;UAAAA;AAQV,mBAASq8D,KAAAA;AACP/1J,YAAAA,GAAOs/C,eAAe,QAAQkhF,EAAAA,GAC9Bt+C,GAAK5iC,eAAe,SAASihF,EAAAA,GAE7BvgI,GAAOs/C,eAAe,OAAOnP,EAAAA,GAC7BnwC,GAAOs/C,eAAe,SAAS+gF,EAAAA,GAE/BrgI,GAAOs/C,eAAe,SAASigB,EAAAA,GAC/B2iB,GAAK5iC,eAAe,SAASigB,EAAAA,GAE7Bv/D,GAAOs/C,eAAe,OAAOy2G,EAAAA,GAC7B/1J,GAAOs/C,eAAe,SAASy2G,EAAAA,GAE/B7zE,GAAK5iC,eAAe,SAASy2G,EAAAA;UAAAA;AAW/B,iBA5BA/1J,GAAOm/C,GAAG,SAASogB,EAAAA,GACnB2iB,GAAK/iC,GAAG,SAASogB,EAAAA,GAmBjBv/D,GAAOm/C,GAAG,OAAO42G,EAAAA,GACjB/1J,GAAOm/C,GAAG,SAAS42G,EAAAA,GAEnB7zE,GAAK/iC,GAAG,SAAS42G,EAAAA,GAEjB7zE,GAAK1iC,KAAK,QAAQx/C,EAAAA,GAGXkiF;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACzHT,YAAIxnF,KAASj0B,GAAQ,EAAA,EAAei0B,QAChC06B,KAAO3uD,GAAQ,GAAA;AAMnB1B,QAAAA,GAAOD,UAAU,WAAA;AACf,mBAASw4J,KAAAA;AAAAA,aAVX,SAAyBlsI,IAAUC,IAAAA;AAAe,kBAAA,EAAMD,cAAoBC;AAAgB,sBAAM,IAAIthB,UAAU,mCAAA;YAAA,EAW5FhE,MAAMuxJ,EAAAA,GAEtBvxJ,KAAK6e,OAAO,MACZ7e,KAAK4U,OAAO,MACZ5U,KAAK7B,SAAS;UAAA;AAqDhB,iBAlDAozJ,GAAW12J,UAAU+U,OAAO,SAAcxP,IAAAA;AACxC,gBAAIkE,KAAQ,EAAE6qB,MAAM/uB,IAAGL,MAAM,KAAA;AACzBC,iBAAK7B,SAAS,IAAG6B,KAAK4U,KAAK7U,OAAOuE,KAAWtE,KAAK6e,OAAOva,IAC7DtE,KAAK4U,OAAOtQ,IAAAA,EACVtE,KAAK7B;UAAAA,GAGTozJ,GAAW12J,UAAU0Y,UAAU,SAAiBnT,IAAAA;AAC9C,gBAAIkE,KAAQ,EAAE6qB,MAAM/uB,IAAGL,MAAMC,KAAK6e,KAAAA;AACd,kBAAhB7e,KAAK7B,WAAc6B,KAAK4U,OAAOtQ,KACnCtE,KAAK6e,OAAOva,IAAAA,EACVtE,KAAK7B;UAAAA,GAGTozJ,GAAW12J,UAAU+T,QAAQ,WAAA;AAC3B,gBAAoB,MAAhB5O,KAAK7B,QAAT;AACA,kBAAIyvE,KAAM5tE,KAAK6e,KAAKsQ;AAGpB,qBAFoB,MAAhBnvB,KAAK7B,SAAc6B,KAAK6e,OAAO7e,KAAK4U,OAAO,OAAU5U,KAAK6e,OAAO7e,KAAK6e,KAAK9e,MAAAA,EAC7EC,KAAK7B,QACAyvE;YAAAA;UAAAA,GAGT2jF,GAAW12J,UAAU0Q,QAAQ,WAAA;AAC3BvL,iBAAK6e,OAAO7e,KAAK4U,OAAO,MACxB5U,KAAK7B,SAAS;UAAA,GAGhBozJ,GAAW12J,UAAUolB,OAAO,SAAcjlB,IAAAA;AACxC,gBAAoB,MAAhBgF,KAAK7B;AAAc,qBAAO;AAG9B,qBAFIpD,KAAIiF,KAAK6e,MACT+uD,KAAM,KAAK7yE,GAAEo0B,MACVp0B,KAAIA,GAAEgF;AACX6tE,cAAAA,MAAO5yE,KAAID,GAAEo0B;AACd,mBAAOy+C;UAAAA,GAGV2jF,GAAW12J,UAAUgf,SAAS,SAAgBnf,IAAAA;AAC5C,gBAAoB,MAAhBsF,KAAK7B;AAAc,qBAAOwwB,GAAO2gB,MAAM,CAAA;AAC3C,gBAAoB,MAAhBtvC,KAAK7B;AAAc,qBAAO6B,KAAK6e,KAAKsQ;AAIxC,qBAvDgB+f,IAAK1pB,IAAQznB,IAoDzB6vE,KAAMj/C,GAAO4gB,YAAY70C,OAAM,CAAA,GAC/BK,KAAIiF,KAAK6e,MACT5lB,KAAI,GACD8B;AAvDSm0C,cAAAA,KAwDHn0C,GAAEo0B,MAxDM3J,KAwDAooD,IAxDQ7vE,KAwDH9E,IAvD5Bi2C,GAAI8zB,KAAKx9C,IAAQznB,EAAAA,GAwDb9E,MAAK8B,GAAEo0B,KAAKhxB,QACZpD,KAAIA,GAAEgF;AAER,mBAAO6tE;UAAAA,GAGF2jF;QAAAA,EA3DQ,GA8DbloG,MAAQA,GAAKvnD,WAAWunD,GAAKvnD,QAAQmoL,WACvCjxL,GAAOD,QAAQ8B,UAAUwuD,GAAKvnD,QAAQmoL,MAAAA,IAAU,WAAA;AAC9C,cAAI/gL,KAAMmgD,GAAKvnD,QAAQ,EAAE3D,QAAQ6B,KAAK7B,OAAAA,CAAAA;AACtC,iBAAO6B,KAAKxE,YAAYhC,OAAO,MAAM0P;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SC5EzC,SAAAjO,IAAA;AAAA,cAAAlB,KAAA,WAAAkB,MAAAA,MAC6B,eAAA,OAAT23B,QAAwBA,QAChC4C,QACR5rB,KAAQ6rB,SAAS56B,UAAU+O;AAiB/B,mBAASsgL,GAAQ14J,IAAI24J,IAAAA;AACnBnqL,iBAAKoqL,MAAM54J,IACXxxB,KAAKqqL,WAAWF;UAAAA;AAflBpxL,UAAAA,GAAQo5E,aAAa,WAAA;AACnB,mBAAO,IAAI+3G,GAAQtgL,GAAMxQ,KAAK+4E,YAAYziB,IAAOztD,SAAAA,GAAYmwE,YAAAA;UAAAA,GAE/Dr5E,GAAQuxL,cAAc,WAAA;AACpB,mBAAO,IAAIJ,GAAQtgL,GAAMxQ,KAAKkxL,aAAa56H,IAAOztD,SAAAA,GAAYsoL,aAAAA;UAAAA,GAEhExxL,GAAQq5E,eACRr5E,GAAQwxL,gBAAgB,SAAS53G,IAAAA;AAC3BA,YAAAA,MACFA,GAAQl5C,MAAAA;UAAAA,GAQZywJ,GAAQrvL,UAAU2vL,QAAQN,GAAQrvL,UAAU6C,MAAM,WAAA;UAAA,GAClDwsL,GAAQrvL,UAAU4+B,QAAQ,WAAA;AACxBz5B,iBAAKqqL,SAASjxL,KAAKs2D,IAAO1vD,KAAKoqL,GAAAA;UAAAA,GAIjCrxL,GAAQ0xL,SAAS,SAAS9+J,IAAM++J,IAAAA;AAC9Bt4G,yBAAazmD,GAAKg/J,cAAAA,GAClBh/J,GAAKi/J,eAAeF;UAAAA,GAGtB3xL,GAAQ8xL,WAAW,SAASl/J,IAAAA;AAC1BymD,yBAAazmD,GAAKg/J,cAAAA,GAClBh/J,GAAKi/J,eAAAA;UAAgB,GAGvB7xL,GAAQ+xL,eAAe/xL,GAAQgyL,SAAS,SAASp/J,IAAAA;AAC/CymD,yBAAazmD,GAAKg/J,cAAAA;AAElB,gBAAID,KAAQ/+J,GAAKi/J;AACbF,YAAAA,MAAS,MACX/+J,GAAKg/J,iBAAiBx4G,WAAW,WAAA;AAC3BxmD,cAAAA,GAAKq/J,cACPr/J,GAAKq/J,WAAAA;YAAAA,GACNN,EAAAA;UAAAA,GAKPhwL,GAAQ,GAAA,GAIR3B,GAAQy1H,eAAgC,eAAA,OAAT57F,QAAwBA,KAAK47F,gBAAAA,WAC7Bn7F,MAA0BA,GAAOm7F,gBACxCxuH,QAAQA,KAAKwuH,cACrCz1H,GAAQ4kK,iBAAkC,eAAA,OAAT/qI,QAAwBA,KAAK+qI,kBAAAA,WAC7BtqI,MAA0BA,GAAOsqI,kBACxC39J,QAAQA,KAAK29J;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SC9DvC,SAAA1iK,IAAAd,IAAA;AAAA,WAAA,SAAAc,IAAAP,IAAA;AACI;AAEA,gBAAA,CAAI24B,GAAOm7F,cAAX;AAIA,kBAIIy8D,IA6HIxqH,IAZA+8F,IArBA0tB,IACAC,IAjGJC,KAAa,GACbC,KAAgB,CAAA,GAChBC,KAAAA,OACA5mE,KAAMrxF,GAAOmuC,UAoJb+pH,KAAW5xL,OAAOijB,kBAAkBjjB,OAAOijB,eAAeyW,EAAAA;AAC9Dk4J,cAAAA,KAAWA,MAAYA,GAASp5G,aAAao5G,KAAWl4J,IAGf,uBAArC,CAAA,EAAG3xB,SAAStI,KAAKi6B,GAAOgyC,OAAAA,IApFxB4lH,KAAoB,SAAS3wI,IAAAA;AACzB+qB,gBAAAA,GAAQd,SAAS,WAAA;AAAcinH,kBAAAA,GAAalxI,EAAAA;gBAAAA,CAAAA;cAAAA,IAAAA,CAIpD,WAAA;AAGI,oBAAIjnB,GAAO6qI,eAAAA,CAAgB7qI,GAAOkrI,eAAe;AAC7C,sBAAIktB,KAAAA,MACAC,KAAer4J,GAAOirI;AAM1B,yBALAjrI,GAAOirI,YAAY,WAAA;AACfmtB,oBAAAA,KAAAA;kBAA4B,GAEhCp4J,GAAO6qI,YAAY,IAAI,GAAA,GACvB7qI,GAAOirI,YAAYotB,IACZD;gBAAAA;cAAAA,EAwEJE,IAIAt4J,GAAOwqI,mBA9CVL,KAAU,IAAIK,kBACVQ,MAAMC,YAAY,SAASzJ,IAAAA;AAE/B22B,gBAAAA,GADa32B,GAAM1lI,IAAAA;cAAAA,GAIvB87J,KAAoB,SAAS3wI,IAAAA;AACzBkjH,gBAAAA,GAAQY,MAAMF,YAAY5jH,EAAAA;cAAAA,KA2CvBoqE,MAAO,wBAAwBA,GAAIzrD,cAAc,QAAA,KAtCpDwH,KAAOikD,GAAI16G,iBACfihL,KAAoB,SAAS3wI,IAAAA;AAGzB,oBAAIsxI,KAASlnE,GAAIzrD,cAAc,QAAA;AAC/B2yH,gBAAAA,GAAOtpB,qBAAqB,WAAA;AACxBkpB,kBAAAA,GAAalxI,EAAAA,GACbsxI,GAAOtpB,qBAAqB,MAC5B7hG,GAAK0jD,YAAYynE,EAAAA,GACjBA,KAAS;gBAAA,GAEbnrH,GAAKiB,YAAYkqH,EAAAA;cAAAA,KAKrBX,KAAoB,SAAS3wI,IAAAA;AACzB63B,2BAAWq5G,IAAc,GAAGlxI,EAAAA;cAAAA,KAlD5B4wI,KAAgB,kBAAkBjtL,KAAKooE,OAAAA,IAAW,KAClD8kH,KAAkB,SAASt2B,IAAAA;AACvBA,gBAAAA,GAAM5gI,WAAWZ,MACK,YAAA,OAAfwhI,GAAM1lI,QACyB,MAAtC0lI,GAAM1lI,KAAKvnB,QAAQsjL,EAAAA,KACnBM,GAAAA,CAAc32B,GAAM1lI,KAAK/zB,MAAM8vL,GAAc/sL,MAAAA,CAAAA;cAAAA,GAIjDk1B,GAAOg6F,mBACPh6F,GAAOg6F,iBAAiB,WAAW89D,IAAAA,KAAiB,IAEpD93J,GAAOw4J,YAAY,aAAaV,EAAAA,GAGpCF,KAAoB,SAAS3wI,IAAAA;AACzBjnB,gBAAAA,GAAO6qI,YAAYgtB,KAAgB5wI,IAAQ,GAAA;cAAA,IAgEnDixI,GAAS/8D,eA1KT,SAAsBhzC,IAAAA;AAEI,8BAAA,OAAbA,OACTA,KAAW,IAAI/lD,SAAS,KAAK+lD,EAAAA;AAI/B,yBADIxhC,KAAO,IAAI7+C,MAAM8G,UAAU9D,SAAS,CAAA,GAC/BlF,KAAI,GAAGA,KAAI+gD,GAAK77C,QAAQlF;AAC7B+gD,kBAAAA,GAAK/gD,EAAAA,IAAKgJ,UAAUhJ,KAAI,CAAA;AAG5B,oBAAI6yL,KAAO,EAAEtwG,UAAUA,IAAUxhC,MAAMA,GAAAA;AAGvC,uBAFAqxI,GAAcD,EAAAA,IAAcU,IAC5Bb,GAAkBG,EAAAA,GACXA;cAAAA,GA6JTG,GAAS5tB,iBAAiBA;YAAAA;AA1J1B,qBAASA,GAAerjH,IAAAA;AAAAA,qBACb+wI,GAAc/wI,EAAAA;YAAAA;AAyBzB,qBAASkxI,GAAalxI,IAAAA;AAGlB,kBAAIgxI;AAGAn5G,2BAAWq5G,IAAc,GAAGlxI,EAAAA;mBACzB;AACH,oBAAIwxI,KAAOT,GAAc/wI,EAAAA;AACzB,oBAAIwxI,IAAM;AACNR,kBAAAA,KAAAA;AACA,sBAAA;AAAA,qBAjCZ,SAAaQ,IAAAA;AACT,0BAAItwG,KAAWswG,GAAKtwG,UAChBxhC,KAAO8xI,GAAK9xI;AAChB,8BAAQA,GAAK77C,QAAAA;wBACb,KAAK;AACDq9E,0BAAAA,GAAAA;AACA;wBACJ,KAAK;AACDA,0BAAAA,GAASxhC,GAAK,CAAA,CAAA;AACd;wBACJ,KAAK;AACDwhC,0BAAAA,GAASxhC,GAAK,CAAA,GAAIA,GAAK,CAAA,CAAA;AACvB;wBACJ,KAAK;AACDwhC,0BAAAA,GAASxhC,GAAK,CAAA,GAAIA,GAAK,CAAA,GAAIA,GAAK,CAAA,CAAA;AAChC;wBACJ;AACIwhC,0BAAAA,GAAS5xE,MAAAA,QAAiBowC,EAAAA;sBAAAA;oBAAAA,EAiBd8xI,EAAAA;kBAAAA,UACN;AACEnuB,oBAAAA,GAAerjH,EAAAA,GACfgxI,KAAAA;kBAAwB;gBAAA;cAAA;YAAA;UAAA,EAkH1B,eAAA,OAAT14J,OAAAA,WAA8BS,KAAyBrzB,OAAOqzB,KAAST,IAAAA;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SAAAA,SAAAA,IAAAA;ACjIhF,mBAAStG,GAAQ9yB,IAAAA;AAEf,gBAAA;AACE,kBAAA,CAAK65B,GAAOq+B;AAAc,uBAAA;YAAO,SAC1B3rD,IAAP;AACA,qBAAA;YAAO;AAET,gBAAI0B,KAAM4rB,GAAOq+B,aAAal4D,EAAAA;AAC9B,mBAAI,QAAQiO,MACyB,WAA9Buc,OAAOvc,EAAAA,EAAKqkB,YAAAA;UAAAA;AA5DrB9yB,UAAAA,GAAOD,UAoBP,SAAoBwJ,IAAIwpL,IAAAA;AACtB,gBAAIz/J,GAAO,eAAA;AACT,qBAAO/pB;AAGT,gBAAIoqH,KAAAA;AAeJ,mBAdA,WAAA;AACE,kBAAA,CAAKA,IAAQ;AACX,oBAAIrgG,GAAO,kBAAA;AACT,wBAAM,IAAI5lB,MAAMqlL,EAAAA;AACPz/J,gBAAAA,GAAO,kBAAA,IAChBvD,QAAQijK,MAAMD,EAAAA,IAEdhjK,QAAQ6T,KAAKmvJ,EAAAA,GAEfp/D,KAAAA;cAAS;AAEX,qBAAOpqH,GAAGqH,MAAM5J,MAAMiC,SAAAA;YAAAA;UAAAA;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACf1BjJ,QAAAA,GAAOD,UAAUk1H;AAEjB,YAAID,KAAYtzH,GAAQ,GAAA,GAGpB2uD,KAAO1vD,OAAOY,OAAOG,GAAQ,GAAA,CAAA;AAMjC,iBAASuzH,GAAYj6F,IAAAA;AACnB,cAAA,EAAMh0B,gBAAgBiuH;AAAc,mBAAO,IAAIA,GAAYj6F,EAAAA;AAE3Dg6F,UAAAA,GAAU50H,KAAK4G,MAAMg0B,EAAAA;QAAAA;AARvBq1B,QAAAA,GAAK5b,WAAW/yC,GAAQ,EAAA,GAGxB2uD,GAAK5b,SAASwgF,IAAaD,EAAAA,GAQ3BC,GAAYpzH,UAAU+7J,aAAa,SAAUvlC,IAAO3hF,IAAUpD,IAAAA;AAC5DA,UAAAA,GAAG,MAAM+kF,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7CXr4H,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA,EAAcszH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACAvCh1H,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA,EAAcuzH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACAvCj1H,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKysC,QAAQrmE;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH9B,YAAIwlC,KAAI5kC,GAAQ,EAAA,GACZtB,KAAOsB,GAAQ,EAAA,GACfyrB,KAAWzrB,GAAQ,EAAA,GACnBkjC,KAAWljC,GAAQ,EAAA,GACnBuxL,KAAmBvxL,GAAQ,GAAA,GAC3BsuJ,KAAiCtuJ,GAAQ,EAAA,GACzCkiB,KAAiBliB,GAAQ,GAAA;AAe7B4kC,QAAAA,GAAE,EAAE9Z,QAAQ,WAAWmP,MAAAA,KAAM,GAAQ,EACnC76B,KAZF,SAASA,GAAI0rB,IAAQojD,IAAAA;AACnB,cACIljD,IAAY7qB,IADZ0wH,KAAWtpH,UAAU9D,SAAS,IAAIqnB,KAASvjB,UAAU,CAAA;AAEzD,iBAAI27B,GAASpY,EAAAA,MAAY+lG,KAAiB/lG,GAAOojD,EAAAA,KACjDljD,KAAasjI,GAA+B/hI,EAAEzB,IAAQojD,EAAAA,KAC/BqjH,GAAiBvmK,EAAAA,IACpCA,GAAWxrB,QAAAA,WACXwrB,GAAW5rB,MAAAA,SAAgCV,GAAKssB,GAAW5rB,KAAKyxH,EAAAA,IAChEplG,GAAStrB,KAAY+hB,GAAe4I,EAAAA,CAAAA,IAAiB1rB,GAAIe,IAAW+tE,IAAa2iD,EAAAA,IAAAA;QAArF,EAAA,CAAA;MAAA,GAAA,SAAAtwH,IAAAd,IAAAO,IAAA;AClBF,YAAIk5B,KAASl5B,GAAQ,EAAA;AAErB1B,QAAAA,GAAOD,UAAU,SAAU2sB,IAAAA;AACzB,iBAAA,WAAOA,OAA6BkO,GAAOlO,IAAY,OAAA,KAAYkO,GAAOlO,IAAY,UAAA;QAAA;MAAA,GAAA,SAAAzqB,IAAAd,IAAAO,IAAA;ACHxF,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAEIf,KAFOe,GAAQ,EAAA,EAEDf,QAEd65B,KAA2Bx6B,GAAOD,UAAU,SAAkCs8B,IAAI76B,IAAAA;AACpF,iBAAOb,GAAO65B,yBAAyB6B,IAAI76B,EAAAA;QAAAA;AAGzCb,QAAAA,GAAO65B,yBAAyB2B,SAAM3B,GAAyB2B,OAAAA;MAAO,GAAA,SAAAl6B,IAAAd,IAAAO,IAAA;ACT1E,YAAI4kC,KAAI5kC,GAAQ,EAAA,GACZikC,KAAQjkC,GAAQ,EAAA,GAChBguD,KAAkBhuD,GAAQ,EAAA,GAC1BgvJ,KAAiChvJ,GAAQ,EAAA,EAAmDusB,GAC5F4jB,KAAcnwC,GAAQ,EAAA,GAEtBo9J,KAAsBn5H,GAAM,WAAA;AAAc+qH,UAAAA,GAA+B,CAAA;QAAA,CAAA;AAK7EpqH,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QAAAA,CAJpB6V,MAAeitH,IAIqB3iI,MAAAA,CAAO0V,GAAAA,GAAe,EACtErX,0BAA0B,SAAkC6B,IAAI76B,IAAAA;AAC9D,iBAAOkvJ,GAA+BhhG,GAAgBrzB,EAAAA,GAAK76B,EAAAA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACb/D,YAAIoiB,KAAiBliB,GAAQ,GAAA;AAW7B1B,QAAAA,GAAOD,UATP,SAAwB4B,IAAQC,IAAAA;AAC9B,iBAAA,CAAQjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,IAAQC,EAAAA,KAEpC,UADfD,KAASiiB,GAAejiB,EAAAA;AAAAA;AAI1B,iBAAOA;QAAAA,GAGwB3B,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACXtG,YAAI8qH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK/5B,OAAOu4B;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHrB,QAAAx3B,GAAQ,EAAA,EAKd,EAAE8qB,QAAQ,UAAUmP,MAAAA,KAAM,GAAQ,EAClCzC,gBALmBx3B,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACD7B1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK/5B,OAAOijB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH7B,YAAI0iB,KAAI5kC,GAAQ,EAAA,GACZikC,KAAQjkC,GAAQ,EAAA,GAChBilB,KAAWjlB,GAAQ,EAAA,GACnBwxL,KAAuBxxL,GAAQ,GAAA,GAC/B6rF,KAA2B7rF,GAAQ,GAAA;AAMvC4kC,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QAJR2J,GAAM,WAAA;AAAcutJ,UAAAA,GAAqB,CAAA;QAAA,CAAA,GAIJ/2J,MAAAA,CAAOoxD,GAAAA,GAA4B,EAChG3pE,gBAAgB,SAAwByY,IAAAA;AACtC,iBAAO62J,GAAqBvsK,GAAS0V,EAAAA,CAAAA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZzC,YAAIwuF,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAEIf,KAFOe,GAAQ,EAAA,EAEDf;AAElBX,QAAAA,GAAOD,UAAU,SAAgB4vB,IAAGkH,IAAAA;AAClC,iBAAOl2B,GAAOY,OAAOouB,IAAGkH,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACNlB,QAAAn1B,GAAQ,EAAA,EAMd,EAAE8qB,QAAQ,UAAUmP,MAAAA,MAAYQ,MAAAA,CALhBz6B,GAAQ,EAAA,EAAA,GAK8B,EACtDH,QALWG,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACFrB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKysC,QAAQttB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH9B,YAAIvT,KAAI5kC,GAAQ,EAAA,GACZ2lE,KAAa3lE,GAAQ,EAAA,GACrBkP,KAAQlP,GAAQ,EAAA,GAChBD,KAAOC,GAAQ,GAAA,GACfmuF,KAAenuF,GAAQ,GAAA,GACvBkjC,KAAWljC,GAAQ,EAAA,GACnByrB,KAAWzrB,GAAQ,EAAA,GACnBH,KAASG,GAAQ,GAAA,GACjBikC,KAAQjkC,GAAQ,EAAA,GAEhByxL,KAAkB9rH,GAAW,WAAW,WAAA,GACxCmmB,KAAkB7sF,OAAOkB,WACzB+U,KAAO,CAAA,EAAGA,MAMVw8K,KAAiBztJ,GAAM,WAAA;AACzB,mBAASM,KAAAA;UAAAA;AACT,iBAAA,EAASktJ,GAAgB,WAAA;UAAA,GAA6B,CAAA,GAAIltJ,EAAAA,aAAcA;QAAAA,CAAAA,GAGtEotJ,KAAAA,CAAY1tJ,GAAM,WAAA;AACpBwtJ,UAAAA,GAAgB,WAAA;UAAA,CAAA;QAAA,CAAA,GAGdviE,KAASwiE,MAAkBC;AAE/B/sJ,QAAAA,GAAE,EAAE9Z,QAAQ,WAAWmP,MAAAA,MAAYK,QAAQ40F,IAAQz0F,MAAMy0F,GAAAA,GAAU,EACjE/2E,WAAW,SAAmBy5I,IAAQtyI,IAAAA;AACpC6uC,UAAAA,GAAayjG,EAAAA,GACb1uJ,GAASoc,EAAAA;AACT,cAAIuyI,KAAYtqL,UAAU9D,SAAS,IAAImuL,KAASzjG,GAAa5mF,UAAU,CAAA,CAAA;AACvE,cAAIoqL,MAAAA,CAAaD;AAAgB,mBAAOD,GAAgBG,IAAQtyI,IAAMuyI,EAAAA;AACtE,cAAID,MAAUC,IAAW;AAEvB,oBAAQvyI,GAAK77C,QAAAA;cACX,KAAK;AAAG,uBAAO,IAAImuL;cACnB,KAAK;AAAG,uBAAO,IAAIA,GAAOtyI,GAAK,CAAA,CAAA;cAC/B,KAAK;AAAG,uBAAO,IAAIsyI,GAAOtyI,GAAK,CAAA,GAAIA,GAAK,CAAA,CAAA;cACxC,KAAK;AAAG,uBAAO,IAAIsyI,GAAOtyI,GAAK,CAAA,GAAIA,GAAK,CAAA,GAAIA,GAAK,CAAA,CAAA;cACjD,KAAK;AAAG,uBAAO,IAAIsyI,GAAOtyI,GAAK,CAAA,GAAIA,GAAK,CAAA,GAAIA,GAAK,CAAA,GAAIA,GAAK,CAAA,CAAA;YAAA;AAG5D,gBAAIwyI,KAAQ,CAAC,IAAA;AAEb,mBADA5iL,GAAMgG,IAAM48K,IAAOxyI,EAAAA,GACZ,KAAKpwC,GAAMnP,IAAM6xL,IAAQE,EAAAA;UAAAA;AAGlC,cAAI33J,KAAQ03J,GAAU1xL,WAClBwqB,KAAW9qB,GAAO4rB,GAAS0O,EAAAA,IAASA,KAAQ2xD,EAAAA,GAC5C/zD,KAAS7oB,GAAM0iL,IAAQjnK,IAAU20B,EAAAA;AACrC,iBAAO7zB,GAASsM,EAAAA,IAAUA,KAASpN;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACrDvC,YAAIiT,KAAU59B,GAAQ,EAAA,EAAwB,SAE1C+xL,KAAwB/xL,GAAQ,EAAA;AAYpC1B,QAAAA,GAAOD,UAVP,SAAoC65B,IAAMx5B,IAAAA;AACxC,cAAIA,OAA2B,aAAlBk/B,GAAQl/B,EAAAA,KAAsC,cAAA,OAATA;AAChD,mBAAOA;AACF,cAAA,WAAIA;AACT,kBAAM,IAAI4K,UAAU,0DAAA;AAGtB,iBAAOyoL,GAAsB75J,EAAAA;QAAAA,GAGc55B,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACdlHC,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GAERA,GAAQ,GAAA,GAERA,GAAQ,GAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACxBjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,EAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKvpB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACLL,QAAAzP,GAAQ,GAAA,EAKd,OAAO,SAAUgxH,IAAAA;AAC1B,iBAAO,WAAA;AAAiB,mBAAOA,GAAK1rH,MAAMiC,UAAU9D,SAAS8D,UAAU,CAAA,IAAA,MAAKiC;UAAAA;QAAAA,GALvDxJ,GAAQ,GAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACD/B,YAAIikC,KAAQjkC,GAAQ,EAAA;AAEpB1B,QAAAA,GAAOD,UAAU4lC,GAAM,WAAA;AACrB,cAA0B,cAAA,OAAf0qC,aAA2B;AACpC,gBAAIr6B,KAAS,IAAIq6B,YAAY,CAAA;AAEzB1vE,mBAAOgQ,aAAaqlC,EAAAA,KAASr1C,OAAOC,eAAeo1C,IAAQ,KAAK,EAAE90C,OAAO,EAAA,CAAA;UAAA;QAAA,CAAA;MAAA,GAAA,SAAAe,IAAAd,IAAAO,IAAA;ACPjF,YAAIikC,KAAQjkC,GAAQ,EAAA;AAEpB1B,QAAAA,GAAOD,UAAAA,CAAW4lC,GAAM,WAAA;AAEtB,iBAAOhlC,OAAOgQ,aAAahQ,OAAO+yL,kBAAkB,CAAA,CAAA,CAAA;QAAA,CAAA;MAAA,GAAA,SAAAzxL,IAAAd,IAAAO,IAAA;AAAA;ACHtD,YAAId,KAAiBc,GAAQ,EAAA,EAAuCusB,GAChE1sB,KAASG,GAAQ,GAAA,GACjBw7H,KAAcx7H,GAAQ,GAAA,GACtBD,KAAOC,GAAQ,EAAA,GACfy7H,KAAaz7H,GAAQ,GAAA,GACrBuS,KAAUvS,GAAQ,EAAA,GAClBmuD,KAAiBnuD,GAAQ,GAAA,GACzBiyL,KAAajyL,GAAQ,GAAA,GACrBmwC,KAAcnwC,GAAQ,EAAA,GACtB63F,KAAU73F,GAAQ,GAAA,EAAkC63F,SACpD3pC,KAAsBluD,GAAQ,EAAA,GAE9BsuD,KAAmBJ,GAAoBl/C,KACvCwtJ,KAAyBtuG,GAAoBlB;AAEjD1uD,QAAAA,GAAOD,UAAU,EACf2+J,gBAAgB,SAAUN,IAASD,IAAkBrvG,IAAQwvG,IAAAA;AAC3D,cAAIhyI,KAAc8xI,GAAQ,SAAU/4H,IAAMx9B,IAAAA;AACxCs1H,YAAAA,GAAW93F,IAAM21C,EAAAA,GACjBhrB,GAAiB3qB,IAAM,EACrBn+B,MAAMi3J,IACNv4J,OAAOrE,GAAO,IAAA,GACdmnB,OAAAA,QACAY,MAAAA,QACA9jB,MAAM,EAAA,CAAA,GAEHqsC,OAAaxM,GAAK7/B,OAAO,IACd0F,QAAZrD,MAAuBoM,GAAQpM,IAAUw9B,GAAKi5H,EAAAA,GAAQ,EAAEj5H,MAAMA,IAAMC,YAAYwpB,GAAAA,CAAAA;UAAAA,CAAAA,GAGlFksB,KAAY1uD,GAAYzqB,WAExBouD,KAAmBiuG,GAAuBC,EAAAA,GAE1Cy1B,KAAS,SAAUvuJ,IAAM7jC,IAAKN,IAAAA;AAChC,gBAEI2yL,IAAUjuL,IAFVg7C,KAAQqP,GAAiB5qB,EAAAA,GACzB/5B,KAAQwoL,GAASzuJ,IAAM7jC,EAAAA;AAqBzB,mBAlBE8J,KACFA,GAAMpK,QAAQA,MAGd0/C,GAAMt3B,OAAOhe,KAAQ,EACnB1F,OAAOA,KAAQ2zF,GAAQ/3F,IAAAA,IAAK,GAC5BA,KAAKA,IACLN,OAAOA,IACP2yL,UAAUA,KAAWjzI,GAAMt3B,MAC3BviB,MAAAA,QACAqR,SAAAA,MAAS,GAENwoC,GAAMl4B,UAAOk4B,GAAMl4B,QAAQpd,KAC5BuoL,OAAUA,GAAS9sL,OAAOuE,KAC1BumC,KAAa+O,GAAMp7C,SAClB6/B,GAAK7/B,QAEI,QAAVI,OAAeg7C,GAAMh7C,MAAMA,EAAAA,IAAS0F,MACjC+5B;UAAAA,GAGPyuJ,KAAW,SAAUzuJ,IAAM7jC,IAAAA;AAC7B,gBAGI8J,IAHAs1C,KAAQqP,GAAiB5qB,EAAAA,GAEzBz/B,KAAQ2zF,GAAQ/3F,EAAAA;AAEpB,gBAAc,QAAVoE;AAAe,qBAAOg7C,GAAMh7C,MAAMA,EAAAA;AAEtC,iBAAK0F,KAAQs1C,GAAMl4B,OAAOpd,IAAOA,KAAQA,GAAMvE;AAC7C,kBAAIuE,GAAM9J,OAAOA;AAAK,uBAAO8J;UAAAA;AAwFjC,iBApFA4xH,GAAYliD,IAAW,EAIrBzoE,OAAO,WAAA;AAKL,qBAHIquC,KAAQqP,GADDjpD,IAAAA,GAEPmvB,KAAOyqB,GAAMh7C,OACb0F,KAAQs1C,GAAMl4B,OACXpd;AACLA,cAAAA,GAAM8M,UAAAA,MACF9M,GAAMuoL,aAAUvoL,GAAMuoL,WAAWvoL,GAAMuoL,SAAS9sL,OAAAA,SAAOmE,OACpDirB,GAAK7qB,GAAM1F,KAAAA,GAClB0F,KAAQA,GAAMvE;AAEhB65C,YAAAA,GAAMl4B,QAAQk4B,GAAMt3B,OAAAA,QAChBuoB,KAAa+O,GAAMp7C,OAAO,IAXnBwB,KAYDxB,OAAO;UAAA,GAKnB,QAAU,SAAUhE,IAAAA;AAClB,gBAAI6jC,KAAOr+B,MACP45C,KAAQqP,GAAiB5qB,EAAAA,GACzB/5B,KAAQwoL,GAASzuJ,IAAM7jC,EAAAA;AAC3B,gBAAI8J,IAAO;AACT,kBAAIvE,KAAOuE,GAAMvE,MACbqO,KAAO9J,GAAMuoL;AAAAA,qBACVjzI,GAAMh7C,MAAM0F,GAAM1F,KAAAA,GACzB0F,GAAM8M,UAAAA,MACFhD,OAAMA,GAAKrO,OAAOA,KAClBA,OAAMA,GAAK8sL,WAAWz+K,KACtBwrC,GAAMl4B,SAASpd,OAAOs1C,GAAMl4B,QAAQ3hB,KACpC65C,GAAMt3B,QAAQhe,OAAOs1C,GAAMt3B,OAAOlU,KAClCy8B,KAAa+O,GAAMp7C,SAClB6/B,GAAK7/B;YAAAA;AACV,mBAAA,CAAA,CAAS8F;UAAAA,GAKbiG,SAAS,SAAiB+9C,IAAAA;AAIxB,qBADIhkD,IAFAs1C,KAAQqP,GAAiBjpD,IAAAA,GACzBwoD,KAAgB/tD,GAAK6tD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC,GAEpEI,KAAQA,KAAQA,GAAMvE,OAAO65C,GAAMl4B;AAGxC,mBAFA8mC,GAAclkD,GAAMpK,OAAOoK,GAAM9J,KAAKwF,IAAAA,GAE/BsE,MAASA,GAAM8M;AAAS9M,gBAAAA,KAAQA,GAAMuoL;UAAAA,GAMjD3mL,KAAK,SAAa1L,IAAAA;AAChB,mBAAA,CAAA,CAASsyL,GAAS9sL,MAAMxF,EAAAA;UAAAA,EAAAA,CAAAA,GAI5B07H,GAAYliD,IAAWlsB,KAAS,EAG9BhuD,KAAK,SAAaU,IAAAA;AAChB,gBAAI8J,KAAQwoL,GAAS9sL,MAAMxF,EAAAA;AAC3B,mBAAO8J,MAASA,GAAMpK;UAAAA,GAIxBwP,KAAK,SAAalP,IAAKN,IAAAA;AACrB,mBAAO0yL,GAAO5sL,MAAc,MAARxF,KAAY,IAAIA,IAAKN,EAAAA;UAAAA,EAAAA,IAEzC,EAGF+iB,KAAK,SAAa/iB,IAAAA;AAChB,mBAAO0yL,GAAO5sL,MAAM9F,KAAkB,MAAVA,KAAc,IAAIA,IAAOA,EAAAA;UAAAA,EAAAA,CAAAA,GAGrD2wC,MAAajxC,GAAeo6E,IAAW,QAAQ,EACjDl6E,KAAK,WAAA;AACH,mBAAOmvD,GAAiBjpD,IAAAA,EAAMxB;UAAAA,EAAAA,CAAAA,GAG3B8mB;QAAAA,GAETqyI,WAAW,SAAUryI,IAAa6xI,IAAkBrvG,IAAAA;AAClD,cAAIilI,KAAgB51B,KAAmB,aACnC61B,KAA6B91B,GAAuBC,EAAAA,GACpDzgC,KAA2BwgC,GAAuB61B,EAAAA;AAUtDlkI,UAAAA,GAAevjC,IAAa6xI,IAAkB,SAAUjuG,IAAUtW,IAAAA;AAChEoW,YAAAA,GAAiBhpD,MAAM,EACrBE,MAAM6sL,IACNvnK,QAAQ0jC,IACRtP,OAAOozI,GAA2B9jI,EAAAA,GAClCtW,MAAMA,IACNtwB,MAAAA,OAAMpe,CAAAA;UAAAA,GAEP,WAAA;AAKD,qBAJI01C,KAAQ88E,GAAyB12H,IAAAA,GACjC4yC,KAAOgH,GAAMhH,MACbtuC,KAAQs1C,GAAMt3B,MAEXhe,MAASA,GAAM8M;AAAS9M,cAAAA,KAAQA,GAAMuoL;AAE7C,mBAAKjzI,GAAMp0B,WAAYo0B,GAAMt3B,OAAOhe,KAAQA,KAAQA,GAAMvE,OAAO65C,GAAMA,MAAMl4B,SAMjE,UAARkxB,KAAuB,EAAE14C,OAAOoK,GAAM9J,KAAK8F,MAAAA,MAAM,IACzC,YAARsyC,KAAyB,EAAE14C,OAAOoK,GAAMpK,OAAOoG,MAAAA,MAAM,IAClD,EAAEpG,OAAO,CAACoK,GAAM9J,KAAK8J,GAAMpK,KAAAA,GAAQoG,MAAAA,MAAM,KAN9Cs5C,GAAMp0B,SAAAA,QACC,EAAEtrB,OAAAA,QAAkBoG,MAAAA,KAAM;UAAA,GAMlCwnD,KAAS,YAAY,UAAA,CAAWA,IAAAA,IAAQ,GAK3C6kI,GAAWx1B,EAAAA;QAAAA,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACzMP,QAAAz8J,GAAQ,EAAA,EAKd,EAAE8qB,QAAQ,OAAOmP,MAAAA,KAAM,GAAQ,EAC/B3f,MALSta,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACCnB,YAAID,KAAOC,GAAQ,EAAA,GACftB,KAAOsB,GAAQ,EAAA,GACfytC,KAAYztC,GAAQ,EAAA,GACpBmuF,KAAenuF,GAAQ,GAAA,GACvBuS,KAAUvS,GAAQ,EAAA,GAElBkV,KAAO,CAAA,EAAGA;AAEd5W,QAAAA,GAAOD,UAAU,SAAck7B,IAAAA;AAC7B,cAEIogB,IAASnxC,IAAOxI,IAAG8tD,IAFnBrqD,KAAS8D,UAAU9D,QACnB8uL,KAAQ9uL,KAAS,IAAI8D,UAAU,CAAA,IAAA;AAKnC,iBAHA4mF,GAAa7oF,IAAAA,IACbq0C,KAAAA,WAAU44I,OACG9kJ,GAAU8kJ,EAAAA,GACT/oL,QAAV+vB,KAA4B,IAAIj0B,UACpCkD,KAAQ,CAAA,GACJmxC,MACF35C,KAAI,GACJ8tD,KAAgB/tD,GAAKwyL,IAAO9uL,KAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC,GACxD+I,GAAQgnB,IAAQ,SAAUi5J,IAAAA;AACxB9zL,YAAAA,GAAKwW,IAAM1M,IAAOslD,GAAc0kI,IAAUxyL,IAAAA,CAAAA;UAAAA,CAAAA,KAG5CuS,GAAQgnB,IAAQrkB,IAAM,EAAEyuB,MAAMn7B,GAAAA,CAAAA,GAEzB,IAAIlD,KAAKkD,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC5BV,QAAAxI,GAAQ,EAAA,EAKd,EAAE8qB,QAAQ,OAAOmP,MAAAA,KAAM,GAAQ,EAC/B3yB,IALOtH,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACAjB,YAAIuuJ,KAAavuJ,GAAQ,GAAA;AAGzB1B,QAAAA,GAAOD,UAAU,WAAA;AACf,iBAAO,IAAIiH,KAAKipJ,GAAWhnJ,SAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACJrB,QAAAvH,GAAQ,EAAA,EAMd,EAAE8qB,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAL9Bt6B,GAAQ,EAAA,EAAA,GAKyC,EAC7DyyL,WALczyL,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACFxB,YAAItB,KAAOsB,GAAQ,EAAA,GACfytC,KAAYztC,GAAQ,EAAA,GACpBkjC,KAAWljC,GAAQ,EAAA;AAGvB1B,QAAAA,GAAOD,UAAU,WAAA;AAKf,mBADIq0L,IAHAp9K,KAAa4tB,GAAS59B,IAAAA,GACtBqtL,KAAUllJ,GAAUn4B,GAAmB,MAAA,GACvCs9K,KAAAA,MAEKntL,KAAI,GAAGnC,KAAMiE,UAAU9D,QAAQgC,KAAInC,IAAKmC;AAC/CitL,YAAAA,KAAah0L,GAAKi0L,IAASr9K,IAAY/N,UAAU9B,EAAAA,CAAAA,GACjDmtL,KAAaA,MAAcF;AAE7B,iBAAA,CAAA,CAASE;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACdH,QAAA5yL,GAAQ,EAAA,EAMd,EAAE8qB,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAL9Bt6B,GAAQ,EAAA,EAAA,GAKyC,EAC7D6yL,SALY7yL,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACFtB,YAAItB,KAAOsB,GAAQ,EAAA,GACfytC,KAAYztC,GAAQ,EAAA,GACpBkjC,KAAWljC,GAAQ,EAAA;AAIvB1B,QAAAA,GAAOD,UAAU,SAAiByB,IAAKsxH,IAAAA;AACrC,cAAIhnH,KAAM84B,GAAS59B,IAAAA,GACflG,KAAMquC,GAAUrjC,GAAIhL,GAAAA,GACpBoM,KAAMiiC,GAAUrjC,GAAIoB,GAAAA,GACpBwD,KAAMy+B,GAAUrjC,GAAI4E,GAAAA,GACpBxP,KAASd,GAAK8M,IAAKpB,IAAKtK,EAAAA,KAAQ,YAAYsxH,KAC5CA,GAAQ5gH,OAAO9R,GAAKU,IAAKgL,IAAKtK,EAAAA,GAAMA,IAAKsK,EAAAA,IACzCgnH,GAAQ94G,OAAOxY,IAAKsK,EAAAA;AAExB,iBADA1L,GAAKsQ,IAAK5E,IAAKtK,IAAKN,EAAAA,GACbA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACfT,YAAIolC,KAAI5kC,GAAQ,EAAA,GACZouD,KAAUpuD,GAAQ,EAAA,GAClBkjC,KAAWljC,GAAQ,EAAA,GACnBD,KAAOC,GAAQ,EAAA,GACf8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7DjjD,OAAO,SAAeyiD,IAAAA;AACpB,cAAIxjD,KAAM84B,GAAS59B,IAAAA,GACfL,KAAW6tL,GAAe1oL,EAAAA,GAC1B0jD,KAAgB/tD,GAAK6tD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;AAC3E,iBAAA,CAAQ+I,GAAQtN,IAAU,SAAUnF,IAAKN,IAAOukC,IAAAA;AAC9C,gBAAA,CAAK+pB,GAActuD,IAAOM,IAAKsK,EAAAA;AAAM,qBAAO25B,GAAAA;UAAAA,GAC3C,EAAEH,YAAAA,MAAkBC,aAAAA,MAAmBC,aAAAA,KAAa,CAAA,EAAQlkB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AChBnE,YAAIwuC,KAAUpuD,GAAQ,EAAA,GAClB4kC,KAAI5kC,GAAQ,EAAA,GACZ2lE,KAAa3lE,GAAQ,EAAA,GACrBD,KAAOC,GAAQ,EAAA,GACftB,KAAOsB,GAAQ,EAAA,GACfytC,KAAYztC,GAAQ,EAAA,GACpBkjC,KAAWljC,GAAQ,EAAA,GACnB+yL,KAAqB/yL,GAAQ,GAAA,GAC7B8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7D74C,QAAQ,SAAgBq4C,IAAAA;AACtB,cAAIxjD,KAAM84B,GAAS59B,IAAAA,GACfL,KAAW6tL,GAAe1oL,EAAAA,GAC1B0jD,KAAgB/tD,GAAK6tD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC,GACvE4S,KAAS,KAAK22K,GAAmB3oL,IAAKu7D,GAAW,KAAA,CAAA,MACjD2vB,KAAS7nD,GAAUrxB,GAAOpN,GAAAA;AAI9B,iBAHAuD,GAAQtN,IAAU,SAAUnF,IAAKN,IAAAA;AAC3BsuD,YAAAA,GAActuD,IAAOM,IAAKsK,EAAAA,KAAM1L,GAAK42F,IAAQl5E,IAAQtc,IAAKN,EAAAA;UAAAA,GAC7D,EAAEokC,YAAAA,MAAkBC,aAAAA,KAAa,CAAA,GAC7BznB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACvBX,YAAIwoB,KAAI5kC,GAAQ,EAAA,GACZouD,KAAUpuD,GAAQ,EAAA,GAClBkjC,KAAWljC,GAAQ,EAAA,GACnBD,KAAOC,GAAQ,EAAA,GACf8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7D3oC,MAAM,SAAcmoC,IAAAA;AAClB,cAAIxjD,KAAM84B,GAAS59B,IAAAA,GACfL,KAAW6tL,GAAe1oL,EAAAA,GAC1B0jD,KAAgB/tD,GAAK6tD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;AAC3E,iBAAO+I,GAAQtN,IAAU,SAAUnF,IAAKN,IAAOukC,IAAAA;AAC7C,gBAAI+pB,GAActuD,IAAOM,IAAKsK,EAAAA;AAAM,qBAAO25B,GAAKvkC,EAAAA;UAAAA,GAC/C,EAAEokC,YAAAA,MAAkBC,aAAAA,MAAmBC,aAAAA,KAAa,CAAA,EAAQ/L;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AChBnE,YAAI6M,KAAI5kC,GAAQ,EAAA,GACZouD,KAAUpuD,GAAQ,EAAA,GAClBkjC,KAAWljC,GAAQ,EAAA,GACnBD,KAAOC,GAAQ,EAAA,GACf8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7DxnC,SAAS,SAAiBgnC,IAAAA;AACxB,cAAIxjD,KAAM84B,GAAS59B,IAAAA,GACfL,KAAW6tL,GAAe1oL,EAAAA,GAC1B0jD,KAAgB/tD,GAAK6tD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;AAC3E,iBAAO+I,GAAQtN,IAAU,SAAUnF,IAAKN,IAAOukC,IAAAA;AAC7C,gBAAI+pB,GAActuD,IAAOM,IAAKsK,EAAAA;AAAM,qBAAO25B,GAAKjkC,EAAAA;UAAAA,GAC/C,EAAE8jC,YAAAA,MAAkBC,aAAAA,MAAmBC,aAAAA,KAAa,CAAA,EAAQ/L;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AChBnE,YAAI6M,KAAI5kC,GAAQ,EAAA,GACZtB,KAAOsB,GAAQ,EAAA,GACf44B,KAAc54B,GAAQ,EAAA,GACtBytC,KAAYztC,GAAQ,EAAA,GACpBkG,KAAclG,GAAQ,GAAA,GACtBuS,KAAUvS,GAAQ,EAAA,GAElBkV,KAAO0jB,GAAY,CAAA,EAAG1jB,IAAAA;AAI1B0vB,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOmP,MAAAA,KAAM,GAAQ,EAC/B3S,SAAS,SAAiBnhB,IAAU6sL,IAAAA;AAClCvlJ,UAAAA,GAAUulJ,EAAAA;AACV,cAAI/tL,KAAWiB,GAAYC,EAAAA,GACvBiW,KAAS,IAAI9W,QACbkG,KAAMiiC,GAAUrxB,GAAO5Q,GAAAA,GACvBpM,KAAMquC,GAAUrxB,GAAOhd,GAAAA,GACvB4P,KAAMy+B,GAAUrxB,GAAOpN,GAAAA;AAM3B,iBALAuD,GAAQtN,IAAU,SAAUkmG,IAAAA;AAC1B,gBAAI8nF,KAAaD,GAAc7nF,EAAAA;AAC1BzsG,YAAAA,GAAK8M,IAAK4Q,IAAQ62K,EAAAA,IAClB/9K,GAAKxW,GAAKU,IAAKgd,IAAQ62K,EAAAA,GAAa9nF,EAAAA,IADLzsG,GAAKsQ,IAAKoN,IAAQ62K,IAAY,CAAC9nF,EAAAA,CAAAA;UAAAA,GAElE,EAAEtnE,aAAAA,KAAa,CAAA,GACXznB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACxBX,YAAIgyC,KAAUpuD,GAAQ,EAAA,GAClB4kC,KAAI5kC,GAAQ,EAAA,GACZkjC,KAAWljC,GAAQ,EAAA,GACnB8yL,KAAiB9yL,GAAQ,EAAA,GACzBkzL,KAAgBlzL,GAAQ,GAAA,GACxBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7DphD,UAAU,SAAkBixK,IAAAA;AAC1B,iBAAO1rK,GAAQugL,GAAe5vJ,GAAS59B,IAAAA,CAAAA,GAAQ,SAAUxF,IAAKN,IAAOukC,IAAAA;AACnE,gBAAImvJ,GAAc1zL,IAAOy+K,EAAAA;AAAgB,qBAAOl6I,GAAAA;UAAAA,GAC/C,EAAEH,YAAAA,MAAkBC,aAAAA,MAAmBC,aAAAA,KAAa,CAAA,EAAQlkB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACZnEthB,QAAAA,GAAOD,UAAU,SAAUmX,IAAG+a,IAAAA;AAE5B,iBAAO/a,OAAM+a,MAAK/a,MAAKA,MAAK+a,MAAKA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACHnC,YAAIqU,KAAI5kC,GAAQ,EAAA,GACZtB,KAAOsB,GAAQ,EAAA,GACfuS,KAAUvS,GAAQ,EAAA,GAClBytC,KAAYztC,GAAQ,EAAA;AAIxB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOmP,MAAAA,KAAM,GAAQ,EAC/Bk5J,OAAO,SAAehtL,IAAU6sL,IAAAA;AAC9B,cAAI52K,KAAS,IAAI9W;AACjBmoC,UAAAA,GAAUulJ,EAAAA;AACV,cAAI19F,KAAS7nD,GAAUrxB,GAAOpN,GAAAA;AAI9B,iBAHAuD,GAAQpM,IAAU,SAAUglG,IAAAA;AAC1BzsG,YAAAA,GAAK42F,IAAQl5E,IAAQ42K,GAAc7nF,EAAAA,GAAUA,EAAAA;UAAAA,CAAAA,GAExC/uF;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACfX,YAAIwoB,KAAI5kC,GAAQ,EAAA,GACZouD,KAAUpuD,GAAQ,EAAA,GAClBkjC,KAAWljC,GAAQ,EAAA,GACnB8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7D1mC,OAAO,SAAeu2J,IAAAA;AACpB,iBAAO1rK,GAAQugL,GAAe5vJ,GAAS59B,IAAAA,CAAAA,GAAQ,SAAUxF,IAAKN,IAAOukC,IAAAA;AACnE,gBAAIvkC,OAAUy+K;AAAe,qBAAOl6I,GAAKjkC,EAAAA;UAAAA,GACxC,EAAE8jC,YAAAA,MAAkBC,aAAAA,MAAmBC,aAAAA,KAAa,CAAA,EAAQ/L;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACZnE,YAAIq2B,KAAUpuD,GAAQ,EAAA,GAClB4kC,KAAI5kC,GAAQ,EAAA,GACZ2lE,KAAa3lE,GAAQ,EAAA,GACrBD,KAAOC,GAAQ,EAAA,GACftB,KAAOsB,GAAQ,EAAA,GACfytC,KAAYztC,GAAQ,EAAA,GACpBkjC,KAAWljC,GAAQ,EAAA,GACnB+yL,KAAqB/yL,GAAQ,GAAA,GAC7B8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7DllC,SAAS,SAAiB0kC,IAAAA;AACxB,cAAIxjD,KAAM84B,GAAS59B,IAAAA,GACfL,KAAW6tL,GAAe1oL,EAAAA,GAC1B0jD,KAAgB/tD,GAAK6tD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC,GACvE4S,KAAS,KAAK22K,GAAmB3oL,IAAKu7D,GAAW,KAAA,CAAA,MACjD2vB,KAAS7nD,GAAUrxB,GAAOpN,GAAAA;AAI9B,iBAHAuD,GAAQtN,IAAU,SAAUnF,IAAKN,IAAAA;AAC/Bd,YAAAA,GAAK42F,IAAQl5E,IAAQ0xC,GAActuD,IAAOM,IAAKsK,EAAAA,GAAM5K,EAAAA;UAAAA,GACpD,EAAEokC,YAAAA,MAAkBC,aAAAA,KAAa,CAAA,GAC7BznB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACvBX,YAAIgyC,KAAUpuD,GAAQ,EAAA,GAClB4kC,KAAI5kC,GAAQ,EAAA,GACZ2lE,KAAa3lE,GAAQ,EAAA,GACrBD,KAAOC,GAAQ,EAAA,GACftB,KAAOsB,GAAQ,EAAA,GACfytC,KAAYztC,GAAQ,EAAA,GACpBkjC,KAAWljC,GAAQ,EAAA,GACnB+yL,KAAqB/yL,GAAQ,GAAA,GAC7B8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7DglI,WAAW,SAAmBxlI,IAAAA;AAC5B,cAAIxjD,KAAM84B,GAAS59B,IAAAA,GACfL,KAAW6tL,GAAe1oL,EAAAA,GAC1B0jD,KAAgB/tD,GAAK6tD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC,GACvE4S,KAAS,KAAK22K,GAAmB3oL,IAAKu7D,GAAW,KAAA,CAAA,MACjD2vB,KAAS7nD,GAAUrxB,GAAOpN,GAAAA;AAI9B,iBAHAuD,GAAQtN,IAAU,SAAUnF,IAAKN,IAAAA;AAC/Bd,YAAAA,GAAK42F,IAAQl5E,IAAQtc,IAAKguD,GAActuD,IAAOM,IAAKsK,EAAAA,CAAAA;UAAAA,GACnD,EAAEw5B,YAAAA,MAAkBC,aAAAA,KAAa,CAAA,GAC7BznB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACvBX,YAAIwoB,KAAI5kC,GAAQ,EAAA,GACZouD,KAAUpuD,GAAQ,EAAA,GAClBytC,KAAYztC,GAAQ,EAAA,GACpBkjC,KAAWljC,GAAQ,EAAA,GACnBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAE7Dp9C,OAAO,SAAe7K,IAAAA;AAKpB,mBAJIiE,KAAM84B,GAAS59B,IAAAA,GACfgwF,KAAS7nD,GAAUrjC,GAAI4E,GAAAA,GACvBkiJ,KAAkB3pJ,UAAU9D,QAC5BlF,KAAI,GACDA,KAAI2yJ;AACT3+I,YAAAA,GAAQhL,UAAUhJ,IAAAA,GAAM+2F,IAAQ,EAAE3xD,MAAMv5B,IAAKw5B,YAAAA,KAAY,CAAA;AAE3D,iBAAOx5B;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AClBX,YAAIw6B,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjBouD,KAAUpuD,GAAQ,EAAA,GAClBkjC,KAAWljC,GAAQ,EAAA,GACnBytC,KAAYztC,GAAQ,EAAA,GACpB8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA,GAElBsJ,KAAYqvB,GAAOrvB;AAIvBs7B,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7D7uC,QAAQ,SAAgBquC,IAAAA;AACtB,cAAIxjD,KAAM84B,GAAS59B,IAAAA,GACfL,KAAW6tL,GAAe1oL,EAAAA,GAC1BipL,KAAY9rL,UAAU9D,SAAS,GAC/BkxJ,KAAc0+B,KAAAA,SAAwB9rL,UAAU,CAAA;AAUpD,cATAkmC,GAAUmgB,EAAAA,GACVr7C,GAAQtN,IAAU,SAAUnF,IAAKN,IAAAA;AAC3B6zL,YAAAA,MACFA,KAAAA,OACA1+B,KAAcn1J,MAEdm1J,KAAc/mG,GAAW+mG,IAAan1J,IAAOM,IAAKsK,EAAAA;UAAAA,GAEnD,EAAEw5B,YAAAA,MAAkBC,aAAAA,KAAa,CAAA,GAChCwvJ;AAAW,kBAAM/pL,GAAU,2CAAA;AAC/B,iBAAOqrJ;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC5BX,YAAI/vH,KAAI5kC,GAAQ,EAAA,GACZouD,KAAUpuD,GAAQ,EAAA,GAClBkjC,KAAWljC,GAAQ,EAAA,GACnBD,KAAOC,GAAQ,EAAA,GACf8yL,KAAiB9yL,GAAQ,EAAA,GACzBuS,KAAUvS,GAAQ,EAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7DttC,MAAM,SAAc8sC,IAAAA;AAClB,cAAIxjD,KAAM84B,GAAS59B,IAAAA,GACfL,KAAW6tL,GAAe1oL,EAAAA,GAC1B0jD,KAAgB/tD,GAAK6tD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;AAC3E,iBAAO+I,GAAQtN,IAAU,SAAUnF,IAAKN,IAAOukC,IAAAA;AAC7C,gBAAI+pB,GAActuD,IAAOM,IAAKsK,EAAAA;AAAM,qBAAO25B,GAAAA;UAAAA,GAC1C,EAAEH,YAAAA,MAAkBC,aAAAA,MAAmBC,aAAAA,KAAa,CAAA,EAAQlkB;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AChBnE,YAAIwuC,KAAUpuD,GAAQ,EAAA,GAClB4kC,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjBtB,KAAOsB,GAAQ,EAAA,GACfkjC,KAAWljC,GAAQ,EAAA,GACnBytC,KAAYztC,GAAQ,EAAA,GAEpBsJ,KAAYqvB,GAAOrvB;AAIvBs7B,QAAAA,GAAE,EAAE9Z,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAQ8zB,GAAAA,GAAW,EAC7D59C,QAAQ,SAAgB1Q,IAAKghF,IAAAA;AAC3B,cAAI12E,KAAM84B,GAAS59B,IAAAA,GACflG,KAAMquC,GAAUrjC,GAAIhL,GAAAA,GACpBoM,KAAMiiC,GAAUrjC,GAAIoB,GAAAA,GACpBwD,KAAMy+B,GAAUrjC,GAAI4E,GAAAA,GACpBvL,KAAS8D,UAAU9D;AACvBgqC,UAAAA,GAAUqzC,EAAAA;AACV,cAAIwyG,KAAiB50L,GAAK8M,IAAKpB,IAAKtK,EAAAA;AACpC,cAAA,CAAKwzL,MAAkB7vL,KAAS;AAC9B,kBAAM6F,GAAU,uBAAA;AAElB,cAAI9J,KAAQ8zL,KAAiB50L,GAAKU,IAAKgL,IAAKtK,EAAAA,IAAO2tC,GAAUhqC,KAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC,EAAW1J,IAAKsK,EAAAA;AAEzG,iBADA1L,GAAKsQ,IAAK5E,IAAKtK,IAAKghF,GAASthF,IAAOM,IAAKsK,EAAAA,CAAAA,GAClCA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACxBH,QAAApK,GAAQ,EAAA,EAMd,EAAE8qB,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAL9Bt6B,GAAQ,EAAA,EAAA,GAKyC,EAC7DuzL,QALWvzL,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACFb,QAAAA,GAAQ,EAAA,EAMd,EAAE8qB,QAAQ,OAAOqP,OAAAA,MAAaO,MAAAA,MAAY57B,MAAM,UAAUw7B,QAL9Ct6B,GAAQ,EAAA,EAAA,GAKyD,EAC7EwzL,gBALWxzL,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACJrB,YAAImuC,KAA2BnuC,GAAQ,GAAA;AAQvC1B,QAAAA,GAAOD,UANP,SAA2BwJ,IAAAA;AACzB,cAAI22B;AAEJ,iBAAA,OAAO2P,GAAyB3P,KAAWzD,SAAS/zB,SAAStI,KAAKmJ,EAAAA,CAAAA,EAAKnJ,KAAK8/B,IAAU,eAAA;QAAA,GAGpDlgC,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACRzG,YAAI8qH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIzxF,KAAqB13B,GAAQ,GAAA,GAE7ByzL,KAAwBzzL,GAAQ,GAAA,GAEhCw3B,KAAiBx3B,GAAQ,GAAA,GAEzB23B,KAA2B33B,GAAQ,GAAA;AAEvC,iBAAS0zL,GAAWC,IAAQr0I,IAAMyrH,IAAAA;AAgBhC,iBAfIpzI,GAAAA,KACFr5B,GAAOD,UAAUq1L,KAAah8J,IAAoBp5B,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD,YAEvHC,GAAOD,UAAUq1L,KAAa,SAAoBC,IAAQr0I,IAAMyrH,IAAAA;AAC9D,gBAAIjgK,KAAI,CAAC,IAAA;AACTA,YAAAA,GAAEoK,KAAKhG,MAAMpE,IAAGw0C,EAAAA;AAEhB,gBAEI30B,KAAW,KAFG8oK,GAAsB14J,QAAAA,EAAU7rB,MAAMykL,IAAQ7oL,EAAAA;AAIhE,mBADIigK,MAAOvzI,GAAe7M,IAAUogJ,GAAM5qK,SAAAA,GACnCwqB;UAAAA,GACNrsB,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD,UAGnEq1L,GAAWxkL,MAAM,MAAM3H,SAAAA;QAAAA;AAGhCjJ,QAAAA,GAAOD,UAAUq1L,IAAYp1L,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC3BlGC,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGxvB;AACb,iBAAOwvB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAeloJ,QAASmpB,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPjH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASzyK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAIy5B,KAAI5kC,GAAQ,EAAA,GACZ4zL,KAAS5zL,GAAQ,EAAA,EAAgCmL;AAOrDy5B,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAAA,CANRt6B,GAAQ,GAAA,EAEM,OAAA,EAAA,GAIoB,EAC1DmL,OAAO,SAAeyiD,IAAAA;AACpB,iBAAOgmI,GAAOtuL,MAAMsoD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACX1E,QAAAxJ,GAAQ,EAAA;AACR,YAAIm1C,KAAUn1C,GAAQ,EAAA,GAClBk5B,KAASl5B,GAAQ,EAAA,GACjBuhC,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN,WAEvBi1C,KAAe,EACjBs+G,cAAAA,MACAC,UAAAA,KAAU;AAGZr1J,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGhyB;AACb,iBAAOgyB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAe1qJ,QACxFuwB,GAAOkc,IAAcD,GAAQxa,EAAAA,CAAAA,IAAOrG,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBpD,YAAIzqC,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,EAAA,GACRA,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASj1K;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACJvC,YAAIwgH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAG/Q;AACb,iBAAO+Q,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAezpI,YAAa0K,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPrH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASh0J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAIgb,KAAI5kC,GAAQ,EAAA,GACZ6zL,KAAa7zL,GAAQ,EAAA,EAAgC4pB,WACrDqkC,KAAmBjuD,GAAQ,GAAA,GAE3B8zL,KAAa,aACb3L,KAAAA;AAGA2L,QAAAA,MAAc,CAAA,KAAIrzL,MAAM,CAAA,EAAa,UAAE,WAAA;AAAc0nL,UAAAA,KAAAA;QAAc,CAAA,GAIvEvjJ,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAQ6tJ,GAAAA,GAAe,EACvDv+J,WAAW,SAAmBgkC,IAAAA;AAC5B,iBAAOimI,GAAWvuL,MAAMsoD,IAAYrmD,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,MAAKiC;QAAAA,EAAAA,CAAAA,GAK9EykD,GAAiB6lI,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZjB,YAAI/gJ,KAAW/yC,GAAQ,EAAA,GACnBu5E,KAAOv5E,GAAQ,GAAA,GACfi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAEhC6Q,KAAI,CACN,YAAY,YAAA,aAAY,UAAgB,GAGtCJ,KAAI,IAAIjkC,MAAM,EAAA;AAElB,iBAASszL,KAAAA;AACPzuL,eAAK0rH,KAAAA,GACL1rH,KAAKk4J,KAAK94H,IAEV60C,GAAK76E,KAAK4G,MAAM,IAAI,EAAA;QAAA;AAmBtB,iBAAS0uL,GAAQ9zH,IAAAA;AACf,iBAAQA,MAAO,KAAOA,OAAQ;QAAA;AAGhC,iBAAS+zH,GAAI3zL,IAAGyK,IAAGnM,IAAGC,IAAAA;AACpB,iBAAU,MAANyB,KAAiByK,KAAInM,KAAAA,CAAQmM,KAAKlM,KAC5B,MAANyB,KAAiByK,KAAInM,KAAMmM,KAAIlM,KAAMD,KAAIC,KACtCkM,KAAInM,KAAIC;QAAAA;AAvBjBk0C,QAAAA,GAASghJ,IAAKx6G,EAAAA,GAEdw6G,GAAI5zL,UAAU6wH,OAAO,WAAA;AAOnB,iBANA1rH,KAAK+yG,KAAK,YACV/yG,KAAKu4J,KAAK,YACVv4J,KAAKw4J,KAAK,YACVx4J,KAAKy4J,KAAK,WACVz4J,KAAKuoC,KAAK,YAEHvoC;QAAAA,GAiBTyuL,GAAI5zL,UAAU85E,UAAU,SAAUjnD,IAAAA;AAShC,mBAvBcktC,IAeVx7B,KAAIp/B,KAAKk4J,IAET1yJ,KAAc,IAAVxF,KAAK+yG,IACTttG,KAAc,IAAVzF,KAAKu4J,IACTj/J,KAAc,IAAV0G,KAAKw4J,IACTj/J,KAAc,IAAVyG,KAAKy4J,IACTx9J,KAAc,IAAV+E,KAAKuoC,IAEJtvC,KAAI,GAAGA,KAAI,IAAA,EAAMA;AAAGmmC,YAAAA,GAAEnmC,EAAAA,IAAKy0B,GAAE+hD,YAAgB,IAAJx2E,EAAAA;AAClD,iBAAOA,KAAI,IAAA,EAAMA;AAAGmmC,YAAAA,GAAEnmC,EAAAA,IAAKmmC,GAAEnmC,KAAI,CAAA,IAAKmmC,GAAEnmC,KAAI,CAAA,IAAKmmC,GAAEnmC,KAAI,EAAA,IAAMmmC,GAAEnmC,KAAI,EAAA;AAEnE,mBAAS6lC,KAAI,GAAGA,KAAI,IAAA,EAAMA,IAAG;AAC3B,gBAAI9jC,KAAAA,CAAAA,EAAO8jC,KAAI,KACX3kC,KAAoD,MA5B5CygE,KA4BGp1D,OA3BF,IAAMo1D,OAAQ,MA2BP+zH,GAAG3zL,IAAGyK,IAAGnM,IAAGC,EAAAA,IAAK0B,KAAImkC,GAAEN,EAAAA,IAAKU,GAAExkC,EAAAA;AAElDC,YAAAA,KAAI1B,IACJA,KAAID,IACJA,KAAIo1L,GAAOjpL,EAAAA,GACXA,KAAID,IACJA,KAAIrL;UAAAA;AAGN6F,eAAK+yG,KAAMvtG,KAAIxF,KAAK+yG,KAAM,GAC1B/yG,KAAKu4J,KAAM9yJ,KAAIzF,KAAKu4J,KAAM,GAC1Bv4J,KAAKw4J,KAAMl/J,KAAI0G,KAAKw4J,KAAM,GAC1Bx4J,KAAKy4J,KAAMl/J,KAAIyG,KAAKy4J,KAAM,GAC1Bz4J,KAAKuoC,KAAMttC,KAAI+E,KAAKuoC,KAAM;QAAA,GAG5BkmJ,GAAI5zL,UAAUk6E,QAAQ,WAAA;AACpB,cAAI11C,KAAI1Q,GAAO4gB,YAAY,EAAA;AAQ3B,iBANAlQ,GAAEwxC,aAAuB,IAAV7wE,KAAK+yG,IAAQ,CAAA,GAC5B1zE,GAAEwxC,aAAuB,IAAV7wE,KAAKu4J,IAAQ,CAAA,GAC5Bl5H,GAAEwxC,aAAuB,IAAV7wE,KAAKw4J,IAAQ,CAAA,GAC5Bn5H,GAAEwxC,aAAuB,IAAV7wE,KAAKy4J,IAAQ,EAAA,GAC5Bp5H,GAAEwxC,aAAuB,IAAV7wE,KAAKuoC,IAAQ,EAAA,GAErBlJ;QAAAA,GAGTrmC,GAAOD,UAAU01L;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpFjB,YAAIhhJ,KAAW/yC,GAAQ,EAAA,GACnBu5E,KAAOv5E,GAAQ,GAAA,GACfi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAEhC6Q,KAAI,CACN,YAAY,YAAA,aAAY,UAAgB,GAGtCJ,KAAI,IAAIjkC,MAAM,EAAA;AAElB,iBAASyzL,KAAAA;AACP5uL,eAAK0rH,KAAAA,GACL1rH,KAAKk4J,KAAK94H,IAEV60C,GAAK76E,KAAK4G,MAAM,IAAI,EAAA;QAAA;AAmBtB,iBAAS6uL,GAAOj0H,IAAAA;AACd,iBAAQA,MAAO,IAAMA,OAAQ;QAAA;AAG/B,iBAAS8zH,GAAQ9zH,IAAAA;AACf,iBAAQA,MAAO,KAAOA,OAAQ;QAAA;AAGhC,iBAAS+zH,GAAI3zL,IAAGyK,IAAGnM,IAAGC,IAAAA;AACpB,iBAAU,MAANyB,KAAiByK,KAAInM,KAAAA,CAAQmM,KAAKlM,KAC5B,MAANyB,KAAiByK,KAAInM,KAAMmM,KAAIlM,KAAMD,KAAIC,KACtCkM,KAAInM,KAAIC;QAAAA;AA3BjBk0C,QAAAA,GAASmhJ,IAAM36G,EAAAA,GAEf26G,GAAK/zL,UAAU6wH,OAAO,WAAA;AAOpB,iBANA1rH,KAAK+yG,KAAK,YACV/yG,KAAKu4J,KAAK,YACVv4J,KAAKw4J,KAAK,YACVx4J,KAAKy4J,KAAK,WACVz4J,KAAKuoC,KAAK,YAEHvoC;QAAAA,GAqBT4uL,GAAK/zL,UAAU85E,UAAU,SAAUjnD,IAAAA;AASjC,mBA3BcktC,IAmBVx7B,KAAIp/B,KAAKk4J,IAET1yJ,KAAc,IAAVxF,KAAK+yG,IACTttG,KAAc,IAAVzF,KAAKu4J,IACTj/J,KAAc,IAAV0G,KAAKw4J,IACTj/J,KAAc,IAAVyG,KAAKy4J,IACTx9J,KAAc,IAAV+E,KAAKuoC,IAEJtvC,KAAI,GAAGA,KAAI,IAAA,EAAMA;AAAGmmC,YAAAA,GAAEnmC,EAAAA,IAAKy0B,GAAE+hD,YAAgB,IAAJx2E,EAAAA;AAClD,iBAAOA,KAAI,IAAA,EAAMA;AAAGmmC,YAAAA,GAAEnmC,EAAAA,KA5BR2hE,KA4BmBx7B,GAAEnmC,KAAI,CAAA,IAAKmmC,GAAEnmC,KAAI,CAAA,IAAKmmC,GAAEnmC,KAAI,EAAA,IAAMmmC,GAAEnmC,KAAI,EAAA,MA3B1D,IAAM2hE,OAAQ;AA6B7B,mBAAS97B,KAAI,GAAGA,KAAI,IAAA,EAAMA,IAAG;AAC3B,gBAAI9jC,KAAAA,CAAAA,EAAO8jC,KAAI,KACX3kC,KAAK00L,GAAMrpL,EAAAA,IAAKmpL,GAAG3zL,IAAGyK,IAAGnM,IAAGC,EAAAA,IAAK0B,KAAImkC,GAAEN,EAAAA,IAAKU,GAAExkC,EAAAA,IAAM;AAExDC,YAAAA,KAAI1B,IACJA,KAAID,IACJA,KAAIo1L,GAAOjpL,EAAAA,GACXA,KAAID,IACJA,KAAIrL;UAAAA;AAGN6F,eAAK+yG,KAAMvtG,KAAIxF,KAAK+yG,KAAM,GAC1B/yG,KAAKu4J,KAAM9yJ,KAAIzF,KAAKu4J,KAAM,GAC1Bv4J,KAAKw4J,KAAMl/J,KAAI0G,KAAKw4J,KAAM,GAC1Bx4J,KAAKy4J,KAAMl/J,KAAIyG,KAAKy4J,KAAM,GAC1Bz4J,KAAKuoC,KAAMttC,KAAI+E,KAAKuoC,KAAM;QAAA,GAG5BqmJ,GAAK/zL,UAAUk6E,QAAQ,WAAA;AACrB,cAAI11C,KAAI1Q,GAAO4gB,YAAY,EAAA;AAQ3B,iBANAlQ,GAAEwxC,aAAuB,IAAV7wE,KAAK+yG,IAAQ,CAAA,GAC5B1zE,GAAEwxC,aAAuB,IAAV7wE,KAAKu4J,IAAQ,CAAA,GAC5Bl5H,GAAEwxC,aAAuB,IAAV7wE,KAAKw4J,IAAQ,CAAA,GAC5Bn5H,GAAEwxC,aAAuB,IAAV7wE,KAAKy4J,IAAQ,EAAA,GAC5Bp5H,GAAEwxC,aAAuB,IAAV7wE,KAAKuoC,IAAQ,EAAA,GAErBlJ;QAAAA,GAGTrmC,GAAOD,UAAU61L;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1FjB,YAAInhJ,KAAW/yC,GAAQ,EAAA,GACnBu9J,KAASv9J,GAAQ,GAAA,GACjBu5E,KAAOv5E,GAAQ,GAAA,GACfi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAEhCyQ,KAAI,IAAIjkC,MAAM,EAAA;AAElB,iBAAS2zL,KAAAA;AACP9uL,eAAK0rH,KAAAA,GAEL1rH,KAAKk4J,KAAK94H,IAEV60C,GAAK76E,KAAK4G,MAAM,IAAI,EAAA;QAAA;AAGtBytC,QAAAA,GAASqhJ,IAAQ72B,EAAAA,GAEjB62B,GAAOj0L,UAAU6wH,OAAO,WAAA;AAUtB,iBATA1rH,KAAK+yG,KAAK,YACV/yG,KAAKu4J,KAAK,WACVv4J,KAAKw4J,KAAK,WACVx4J,KAAKy4J,KAAK,YACVz4J,KAAKuoC,KAAK,YACVvoC,KAAK04J,KAAK,YACV14J,KAAK24J,KAAK,YACV34J,KAAK44J,KAAK,YAEH54J;QAAAA,GAGT8uL,GAAOj0L,UAAUk6E,QAAQ,WAAA;AACvB,cAAI11C,KAAI1Q,GAAO4gB,YAAY,EAAA;AAU3B,iBARAlQ,GAAEwxC,aAAa7wE,KAAK+yG,IAAI,CAAA,GACxB1zE,GAAEwxC,aAAa7wE,KAAKu4J,IAAI,CAAA,GACxBl5H,GAAEwxC,aAAa7wE,KAAKw4J,IAAI,CAAA,GACxBn5H,GAAEwxC,aAAa7wE,KAAKy4J,IAAI,EAAA,GACxBp5H,GAAEwxC,aAAa7wE,KAAKuoC,IAAI,EAAA,GACxBlJ,GAAEwxC,aAAa7wE,KAAK04J,IAAI,EAAA,GACxBr5H,GAAEwxC,aAAa7wE,KAAK24J,IAAI,EAAA,GAEjBt5H;QAAAA,GAGTrmC,GAAOD,UAAU+1L;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACpDjB,YAAIrhJ,KAAW/yC,GAAQ,EAAA,GACnBq0L,KAASr0L,GAAQ,GAAA,GACjBu5E,KAAOv5E,GAAQ,GAAA,GACfi0B,KAASj0B,GAAQ,EAAA,EAAei0B,QAEhCyQ,KAAI,IAAIjkC,MAAM,GAAA;AAElB,iBAAS6zL,KAAAA;AACPhvL,eAAK0rH,KAAAA,GACL1rH,KAAKk4J,KAAK94H,IAEV60C,GAAK76E,KAAK4G,MAAM,KAAK,GAAA;QAAA;AAGvBytC,QAAAA,GAASuhJ,IAAQD,EAAAA,GAEjBC,GAAOn0L,UAAU6wH,OAAO,WAAA;AAmBtB,iBAlBA1rH,KAAKu5J,MAAM,YACXv5J,KAAKw5J,MAAM,YACXx5J,KAAKy5J,MAAM,YACXz5J,KAAK05J,MAAM,WACX15J,KAAK25J,MAAM,YACX35J,KAAK45J,MAAM,YACX55J,KAAK65J,MAAM,YACX75J,KAAK85J,MAAM,YAEX95J,KAAK+5J,MAAM,YACX/5J,KAAKg6J,MAAM,WACXh6J,KAAKi6J,MAAM,WACXj6J,KAAKk6J,MAAM,YACXl6J,KAAKm6J,MAAM,YACXn6J,KAAKo6J,MAAM,YACXp6J,KAAKq6J,MAAM,YACXr6J,KAAKs6J,MAAM,YAEJt6J;QAAAA,GAGTgvL,GAAOn0L,UAAUk6E,QAAQ,WAAA;AACvB,cAAI11C,KAAI1Q,GAAO4gB,YAAY,EAAA;AAE3B,mBAASstH,GAAct0J,IAAGrP,IAAG6E,IAAAA;AAC3BshC,YAAAA,GAAEwxC,aAAatoE,IAAGxK,EAAAA,GAClBshC,GAAEwxC,aAAa33E,IAAG6E,KAAS,CAAA;UAAA;AAU7B,iBAPA8+J,GAAa78J,KAAKu5J,KAAKv5J,KAAK+5J,KAAK,CAAA,GACjC8C,GAAa78J,KAAKw5J,KAAKx5J,KAAKg6J,KAAK,CAAA,GACjC6C,GAAa78J,KAAKy5J,KAAKz5J,KAAKi6J,KAAK,EAAA,GACjC4C,GAAa78J,KAAK05J,KAAK15J,KAAKk6J,KAAK,EAAA,GACjC2C,GAAa78J,KAAK25J,KAAK35J,KAAKm6J,KAAK,EAAA,GACjC0C,GAAa78J,KAAK45J,KAAK55J,KAAKo6J,KAAK,EAAA,GAE1B/6H;QAAAA,GAGTrmC,GAAOD,UAAUi2L;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AClCjBh2L,QAAAA,GAAOD,UATP,SAAoBiX,IAAYm/I,IAAUE,IAAaC,IAAWq6B,IAAAA;AAMhE,iBALAA,GAAS35K,IAAY,SAAS9V,IAAO0E,IAAOoR,IAAAA;AAC1Cq/I,YAAAA,KAAcC,MACTA,KAAAA,OAAmBp1J,MACpBi1J,GAASE,IAAan1J,IAAO0E,IAAOoR,EAAAA;UAAAA,CAAAA,GAEnCq/I;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnBT,YAAIxrC,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK/5B,OAAO4lB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH7BvmB,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB7qH,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB7qH,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK/5B,OAAOosE;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH7B,YAAIzmC,KAAI5kC,GAAQ,EAAA,GACZmwC,KAAcnwC,GAAQ,EAAA,GACtBo+B,KAAUp+B,GAAQ,GAAA,GAClBguD,KAAkBhuD,GAAQ,EAAA,GAC1BsuJ,KAAiCtuJ,GAAQ,EAAA,GACzCmuH,KAAiBnuH,GAAQ,GAAA;AAI7B4kC,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYQ,MAAAA,CAAO0V,GAAAA,GAAe,EACtDk7B,2BAA2B,SAAmCprE,IAAAA;AAO5D,mBADIH,IAAKkrB,IALLmZ,KAAI6pB,GAAgB/tD,EAAAA,GACpB64B,KAA2Bw1H,GAA+B/hI,GAC1D5jB,KAAOy1B,GAAQ+F,EAAAA,GACfpM,KAAS,CAAA,GACT7zB,KAAQ,GAELyE,GAAKlF,SAASS;AAAAA,wBACnB8mB,KAAa8N,GAAyBqL,IAAGrkC,KAAM6I,GAAKzE,IAAAA,CAAAA,MACtBiqH,GAAep2F,IAAQj4B,IAAKkrB,EAAAA;AAE5D,iBAAO+M;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACrBXz5B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAEIf,KAFOe,GAAQ,EAAA,EAEDf,QAEdqsE,KAAmBhtE,GAAOD,UAAU,SAA0Bm1B,IAAG2B,IAAAA;AACnE,iBAAOl2B,GAAOqsE,iBAAiB93C,IAAG2B,EAAAA;QAAAA;AAGhCl2B,QAAAA,GAAOqsE,iBAAiB7wC,SAAM6wC,GAAiB7wC,OAAAA;MAAO,GAAA,SAAAl6B,IAAAd,IAAAO,IAAA;ACT1D,YAAI4kC,KAAI5kC,GAAQ,EAAA,GACZmwC,KAAcnwC,GAAQ,EAAA,GACtBsrE,KAAmBtrE,GAAQ,GAAA,EAAyCusB;AAKxEqY,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,MAAYK,QAAQr7B,OAAOqsE,qBAAqBA,IAAkB7wC,MAAAA,CAAO0V,GAAAA,GAAe,EAC5Gm7B,kBAAkBA,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACRpB,YAAIztC,KAAe79B,GAAQ,GAAA,GAEvBmuC,KAA2BnuC,GAAQ,GAAA;AAmBvC1B,QAAAA,GAAOD,UAjBP,SAAuCk7B,IAAQ8U,IAAAA;AAC7C,cAAc,QAAV9U;AAAgB,mBAAO,CAAA;AAC3B,cAIIz5B,IAAKvB,IAJLusB,KAAS,CAAA,GAETwrB,KAAazY,GAAatE,EAAAA;AAI9B,eAAKh7B,KAAI,GAAGA,KAAI+3C,GAAW7yC,QAAQlF;AACjCuB,YAAAA,KAAMw2C,GAAW/3C,EAAAA,GACb4vC,GAAyBE,EAAAA,EAAU3vC,KAAK2vC,IAAUvuC,EAAAA,KAAQ,MAC9DgrB,GAAOhrB,EAAAA,IAAOy5B,GAAOz5B,EAAAA;AAGvB,iBAAOgrB;QAAAA,GAGuCxsB,GAAOD,QAAQsB,aAAAA,MAAmBrB,GAAOD,QAAiB,UAAIC,GAAOD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACrBrHC,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,GAAA,GAERA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA,GACRA,GAAQ,EAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK2zD;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACVtB,YAAIzzD,KAASl5B,GAAQ,EAAA,GACjBo+B,KAAUp+B,GAAQ,GAAA,GAClBsuJ,KAAiCtuJ,GAAQ,EAAA,GACzCk3D,KAAuBl3D,GAAQ,EAAA;AAEnC1B,QAAAA,GAAOD,UAAU,SAAUysB,IAAQyO,IAAQg7J,IAAAA;AAIzC,mBAHI5rL,KAAOy1B,GAAQ7E,EAAAA,GACfr6B,KAAiBg4D,GAAqB3qC,GACtCuM,KAA2Bw1H,GAA+B/hI,GACrDhuB,KAAI,GAAGA,KAAIoK,GAAKlF,QAAQlF,MAAK;AACpC,gBAAIuB,KAAM6I,GAAKpK,EAAAA;AACV26B,YAAAA,GAAOpO,IAAQhrB,EAAAA,KAAUy0L,MAAcr7J,GAAOq7J,IAAYz0L,EAAAA,KAC7DZ,GAAe4rB,IAAQhrB,IAAKg5B,GAAyBS,IAAQz5B,EAAAA,CAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZnE,YAEI2uB,KAFczuB,GAAQ,EAAA,EAEA,GAAGyuB,OAAAA,GAEzB+lK,KAAgClrK,OAAOtd,MAAsB,QAAA,EAAXsL,KAAAA,GAClDm9K,KAA2B,wBAC3BC,KAAwBD,GAAyB5jK,KAAK2jK,EAAAA;AAE1Dl2L,QAAAA,GAAOD,UAAU,SAAUiZ,IAAOq9K,IAAAA;AAChC,cAAID,MAAyC,YAAA,OAATp9K;AAClC,mBAAOq9K;AAAer9K,cAAAA,KAAQmX,GAAQnX,IAAOm9K,IAA0B,EAAA;AACvE,iBAAOn9K;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACXX,YAAImU,KAAWzrB,GAAQ,EAAA,GACnBi5B,KAA8Bj5B,GAAQ,EAAA;AAI1C1B,QAAAA,GAAOD,UAAU,SAAU8lC,IAAG7K,IAAAA;AACxB7N,UAAAA,GAAS6N,EAAAA,KAAY,WAAWA,MAClCL,GAA4BkL,IAAG,SAAS7K,GAAQs7J,KAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPpD,YAAI5tL,KAAWhH,GAAQ,EAAA;AAEvB1B,QAAAA,GAAOD,UAAU,SAAUijC,IAAUuzJ,IAAAA;AACnC,iBAAA,WAAOvzJ,KAAyB/5B,UAAU9D,SAAS,IAAI,KAAKoxL,KAAW7tL,GAASs6B,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHlF,YAAI2C,KAAQjkC,GAAQ,EAAA,GAChBm3D,KAA2Bn3D,GAAQ,EAAA;AAEvC1B,QAAAA,GAAOD,UAAAA,CAAW4lC,GAAM,WAAA;AACtB,cAAIl4B,KAAQC,MAAM,GAAA;AAClB,iBAAA,EAAM,WAAWD,QAEjB9M,OAAOC,eAAe6M,IAAO,SAASorD,GAAyB,GAAG,CAAA,CAAA,GAC3C,MAAhBprD,GAAMuL;QAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACPf,YA2DIw9K,IAAUC,IAAsBC,IAAgBC,IA3DhDrwJ,KAAI5kC,GAAQ,EAAA,GACZouD,KAAUpuD,GAAQ,EAAA,GAClB24B,KAAS34B,GAAQ,EAAA,GACjB2lE,KAAa3lE,GAAQ,EAAA,GACrBtB,KAAOsB,GAAQ,EAAA,GACfk1L,KAAgBl1L,GAAQ,GAAA,GACxBiuF,KAAWjuF,GAAQ,GAAA,GACnBw7H,KAAcx7H,GAAQ,GAAA,GACtBw3B,KAAiBx3B,GAAQ,GAAA,GACzBuuH,KAAiBvuH,GAAQ,GAAA,GACzBiyL,KAAajyL,GAAQ,GAAA,GACrBytC,KAAYztC,GAAQ,EAAA,GACpB64B,KAAa74B,GAAQ,EAAA,GACrByrB,KAAWzrB,GAAQ,EAAA,GACnBy7H,KAAaz7H,GAAQ,GAAA,GACrB80F,KAAgB90F,GAAQ,GAAA,GACxBuS,KAAUvS,GAAQ,EAAA,GAClBm1L,KAA8Bn1L,GAAQ,GAAA,GACtC+yL,KAAqB/yL,GAAQ,GAAA,GAC7BoxL,KAAOpxL,GAAQ,GAAA,EAAqBgP,KACpComL,KAAYp1L,GAAQ,GAAA,GACpBokK,KAAiBpkK,GAAQ,GAAA,GACzBq1L,KAAmBr1L,GAAQ,GAAA,GAC3BgkK,KAA6BhkK,GAAQ,GAAA,GACrCikK,KAAUjkK,GAAQ,GAAA,GAClBs1L,KAAQt1L,GAAQ,GAAA,GAChBkuD,KAAsBluD,GAAQ,EAAA,GAC9B+4B,KAAW/4B,GAAQ,GAAA,GACnBurF,IAAkBvrF,GAAQ,EAAA,GAC1Bu1L,KAAav1L,GAAQ,GAAA,GACrBgjK,KAAUhjK,GAAQ,GAAA,GAClBwrF,KAAaxrF,GAAQ,GAAA,GAErByrF,KAAUF,EAAgB,SAAA,GAC1BiqG,KAAU,WAEVjnI,KAAmBL,GAAoBlB,UAAUwoI,EAAAA,GACjDlnI,KAAmBJ,GAAoBl/C,KACvCymL,KAA0BvnI,GAAoBlB,UAAUwoI,EAAAA,GACxDE,KAAyBR,MAAiBA,GAAc/0L,WACxDw1L,KAAqBT,IACrBU,KAAmBF,IACnBpsL,KAAYqvB,GAAOrvB,WACnBw9D,KAAWnuC,GAAOmuC,UAClB6D,IAAUhyC,GAAOgyC,SACjBm5F,KAAuBE,GAA2Bz3I,GAClDspK,KAA8B/xB,IAE9BgyB,KAAAA,CAAAA,EAAoBhvH,MAAYA,GAASivH,eAAep9J,GAAOq9J,gBAC/DC,KAAyBp9J,GAAWF,GAAOu9J,qBAAAA,GAC3CC,KAAsB,sBAOtBC,KAAAA,OAIAlnE,KAASn2F,GAASy8J,IAAS,WAAA;AAC7B,cAAIa,KAA6BvhG,GAAc6gG,EAAAA,GAC3CW,KAAyBD,OAA+B/sK,OAAOqsK,EAAAA;AAInE,cAAA,CAAKW,MAAyC,OAAf9qG;AAAmB,mBAAA;AAElD,cAAIp9B,MAAAA,CAAYwnI,GAA0B;AAAG,mBAAA;AAI7C,cAAIpqG,MAAc,MAAM,cAAc36D,KAAKwlK,EAAAA;AAA6B,mBAAA;AAExE,cAAI/nG,KAAU,IAAIqnG,GAAmB,SAAUnuJ,IAAAA;AAAWA,YAAAA,GAAQ,CAAA;UAAA,CAAA,GAC9D+uJ,KAAc,SAAUpoK,IAAAA;AAC1BA,YAAAA,GAAK,WAAA;YAAA,GAA6B,WAAA;YAAA,CAAA;UAAA;AAKpC,kBAHkBmgE,GAAQxtF,cAAc,CAAA,GAC5B2qF,EAAAA,IAAW8qG,IAAAA,EACvBH,KAAc9nG,GAAQrmD,KAAK,WAAA;UAAA,CAAA,aAAwCsuJ,OAAAA,CAG3DD,MAA0Bf,MAAAA,CAAeU;QAAAA,CAAAA,GAG/CO,KAAsBtnE,MAAAA,CAAWimE,GAA4B,SAAUhvL,IAAAA;AACzEwvL,UAAAA,GAAmB7sJ,IAAI3iC,EAAAA,EAAiB,MAAE,WAAA;UAAA,CAAA;QAAA,CAAA,GAIxCswL,KAAa,SAAU97J,IAAAA;AACzB,cAAIsN;AACJ,iBAAA,EAAA,CAAOxc,GAASkP,EAAAA,KAAAA,CAAO9B,GAAWoP,KAAOtN,GAAGsN,IAAAA,MAAQA;QAAAA,GAGlDyuJ,KAAe,SAAUC,IAAUz3I,IAAAA;AACrC,cAMInnB,IAAQkQ,IAAM2uJ,IANdp3L,KAAQ0/C,GAAM1/C,OACd+2D,KA9CU,KA8CLrX,GAAMA,OACXkyE,KAAU76D,KAAKogI,GAASpgI,KAAKogI,GAASE,MACtCrvJ,KAAUmvJ,GAASnvJ,SACnBokB,KAAS+qI,GAAS/qI,QAClBmb,KAAS4vH,GAAS5vH;AAEtB,cAAA;AACMqqD,YAAAA,MACG76D,OAnDK,MAoDJrX,GAAM43I,aAAyBC,GAAkB73I,EAAAA,GACrDA,GAAM43I,YAtDA,IAAA,SAwDJ1lE,KAAkBr5F,KAASv4B,MAEzBunE,MAAQA,GAAOiwH,MAAAA,GACnBj/J,KAASq5F,GAAQ5xH,EAAAA,GACbunE,OACFA,GAAOkwH,KAAAA,GACPL,KAAAA,QAGA7+J,OAAW4+J,GAASroG,UACtB1iC,GAAOtiD,GAAU,qBAAA,CAAA,KACR2+B,KAAOwuJ,GAAW1+J,EAAAA,KAC3Br5B,GAAKupC,IAAMlQ,IAAQyP,IAASokB,EAAAA,IACvBpkB,GAAQzP,EAAAA,KACV6zB,GAAOpsD,EAAAA;UAAAA,SACPuM,IAAP;AACIg7D,YAAAA,MAAAA,CAAW6vH,MAAQ7vH,GAAOkwH,KAAAA,GAC9BrrI,GAAO7/C,EAAAA;UAAAA;QAAAA,GAIPi1E,KAAS,SAAU9hC,IAAOg4I,IAAAA;AACxBh4I,UAAAA,GAAMi4I,aACVj4I,GAAMi4I,WAAAA,MACN/B,GAAU,WAAA;AAGR,qBADIuB,IADAS,KAAYl4I,GAAMk4I,WAEfT,KAAWS,GAAUh4L,IAAAA;AAC1Bs3L,iBAAaC,IAAUz3I,EAAAA;AAEzBA,YAAAA,GAAMi4I,WAAAA,OACFD,MAAAA,CAAah4I,GAAM43I,aAAWO,GAAYn4I,EAAAA;UAAAA,CAAAA;QAAAA,GAI9C82I,KAAgB,SAAUl3L,IAAMwvF,IAASpnD,IAAAA;AAC3C,cAAIizH,IAAO/oC;AACP0kE,UAAAA,OACF37B,KAAQrzF,GAASivH,YAAY,OAAA,GACvBznG,UAAUA,IAChB6rE,GAAMjzH,SAASA,IACfizH,GAAMm9B,UAAUx4L,IAAAA,OAAM,IAAO,GAC7B65B,GAAOq9J,cAAc77B,EAAAA,KAChBA,KAAQ,EAAE7rE,SAASA,IAASpnD,QAAQA,GAAAA,GAAAA,CACtC+uJ,OAA2B7kE,KAAUz4F,GAAO,OAAO75B,EAAAA,KAAQsyH,GAAQ+oC,EAAAA,IAC/Dr7J,OAASq3L,MAAqBd,GAAiB,+BAA+BnuJ,EAAAA;QAAAA,GAGrFmwJ,KAAc,SAAUn4I,IAAAA;AAC1BxgD,UAAAA,GAAK0yL,IAAMz4J,IAAQ,WAAA;AACjB,gBAGIZ,IAHAu2D,KAAUpvC,GAAM2N,QAChBrtD,KAAQ0/C,GAAM1/C;AAGlB,gBAFmB+3L,GAAYr4I,EAAAA,MAG7BnnB,KAASksI,GAAQ,WAAA;AACXjB,cAAAA,KACFr4F,EAAQoO,KAAK,sBAAsBv5E,IAAO8uF,EAAAA,IACrC0nG,GAAcG,IAAqB7nG,IAAS9uF,EAAAA;YAAAA,CAAAA,GAGrD0/C,GAAM43I,YAAY9zB,MAAWu0B,GAAYr4I,EAAAA,IApH/B,IADF,GAsHJnnB,GAAOhsB;AAAO,oBAAMgsB,GAAOv4B;UAAAA,CAAAA;QAAAA,GAKjC+3L,KAAc,SAAUr4I,IAAAA;AAC1B,iBA5HY,MA4HLA,GAAM43I,aAAAA,CAA0B53I,GAAMiqE;QAAAA,GAG3C4tE,KAAoB,SAAU73I,IAAAA;AAChCxgD,UAAAA,GAAK0yL,IAAMz4J,IAAQ,WAAA;AACjB,gBAAI21D,KAAUpvC,GAAM2N;AAChBm2G,YAAAA,KACFr4F,EAAQoO,KAAK,oBAAoBuV,EAAAA,IAC5B0nG,GAxIa,oBAwIoB1nG,IAASpvC,GAAM1/C,KAAAA;UAAAA,CAAAA;QAAAA,GAIvDO,KAAO,SAAU8H,IAAIq3C,IAAOqzE,IAAAA;AAC9B,iBAAO,SAAU/yH,IAAAA;AACfqI,YAAAA,GAAGq3C,IAAO1/C,IAAO+yH,EAAAA;UAAAA;QAAAA,GAIjBilE,KAAiB,SAAUt4I,IAAO1/C,IAAO+yH,IAAAA;AACvCrzE,UAAAA,GAAMt5C,SACVs5C,GAAMt5C,OAAAA,MACF2sH,OAAQrzE,KAAQqzE,KACpBrzE,GAAM1/C,QAAQA,IACd0/C,GAAMA,QApJO,GAqJb8hC,GAAO9hC,IAAAA,IAAO;QAAA,GAGZu4I,KAAkB,SAAUv4I,IAAO1/C,IAAO+yH,IAAAA;AAC5C,cAAA,CAAIrzE,GAAMt5C,MAAV;AACAs5C,YAAAA,GAAMt5C,OAAAA,MACF2sH,OAAQrzE,KAAQqzE;AACpB,gBAAA;AACE,kBAAIrzE,GAAM2N,WAAWrtD;AAAO,sBAAM8J,GAAU,kCAAA;AAC5C,kBAAI2+B,KAAOwuJ,GAAWj3L,EAAAA;AAClByoC,cAAAA,KACFmtJ,GAAU,WAAA;AACR,oBAAI14B,KAAU,EAAE92J,MAAAA,MAAM;AACtB,oBAAA;AACElH,kBAAAA,GAAKupC,IAAMzoC,IACTO,GAAK03L,IAAiB/6B,IAASx9G,EAAAA,GAC/Bn/C,GAAKy3L,IAAgB96B,IAASx9G,EAAAA,CAAAA;gBAAAA,SAEzBnzC,IAAP;AACAyrL,qBAAe96B,IAAS3wJ,IAAOmzC,EAAAA;gBAAAA;cAAAA,CAAAA,KAInCA,GAAM1/C,QAAQA,IACd0/C,GAAMA,QA9KI,GA+KV8hC,GAAO9hC,IAAAA,KAAO;YAAA,SAETnzC,IAAP;AACAyrL,iBAAe,EAAE5xL,MAAAA,MAAM,GAASmG,IAAOmzC,EAAAA;YAAAA;UAAAA;QAAAA;AAK3C,YAAIgwE,OAaF0mE,MAXAD,KAAqB,SAAiB+B,IAAAA;AACpCj8D,UAAAA,GAAWn2H,MAAMswL,EAAAA,GACjBnoJ,GAAUiqJ,EAAAA,GACVh5L,GAAKo2L,IAAUxvL,IAAAA;AACf,cAAI45C,KAAQqP,GAAiBjpD,IAAAA;AAC7B,cAAA;AACEoyL,YAAAA,GAAS33L,GAAK03L,IAAiBv4I,EAAAA,GAAQn/C,GAAKy3L,IAAgBt4I,EAAAA,CAAAA;UAAAA,SACrDnzC,IAAP;AACAyrL,eAAet4I,IAAOnzC,EAAAA;UAAAA;QAAAA,GAGY5L,YAEtC20L,KAAW,SAAiB4C,IAAAA;AAC1BppI,UAAAA,GAAiBhpD,MAAM,EACrBE,MAAMgwL,IACN5vL,MAAAA,OACAuxL,UAAAA,OACAhuE,QAAAA,OACAiuE,WAAW,IAAI9B,MACfwB,WAAAA,OACA53I,OA/MQ,GAgNR1/C,OAAAA,OAAOgK,CAAAA;QAAAA,GAGFrJ,YAAYq7H,GAAYo6D,IAAkB,EAIjD3tJ,MAAM,SAAc0vJ,IAAaC,IAAAA;AAC/B,cAAI14I,KAAQu2I,GAAwBnwL,IAAAA,GAChCqxL,KAAW7yB,GAAqBivB,GAAmBztL,MAAMqwL,EAAAA,CAAAA;AAS7D,iBARAz2I,GAAMiqE,SAAAA,MACNwtE,GAASpgI,KAAAA,CAAK19B,GAAW8+J,EAAAA,KAAeA,IACxChB,GAASE,OAAOh+J,GAAW++J,EAAAA,KAAeA,IAC1CjB,GAAS5vH,SAASi8F,KAAUr4F,EAAQ5D,SAAAA,QA7N5B,KA8NJ7nB,GAAMA,QAAkBA,GAAMk4I,UAAU70K,IAAIo0K,EAAAA,IAC3CvB,GAAU,WAAA;AACbsB,eAAaC,IAAUz3I,EAAAA;UAAAA,CAAAA,GAElBy3I,GAASroG;QAAAA,GAIlB,OAAS,SAAUspG,IAAAA;AACjB,iBAAOtyL,KAAK2iC,KAAAA,QAAgB2vJ,EAAAA;QAAAA,EAAAA,CAAAA,GAGhC7C,KAAuB,WAAA;AACrB,cAAIzmG,KAAU,IAAIwmG,MACd51I,KAAQqP,GAAiB+/B,EAAAA;AAC7BhpF,eAAKgpF,UAAUA,IACfhpF,KAAKkiC,UAAUznC,GAAK03L,IAAiBv4I,EAAAA,GACrC55C,KAAKsmD,SAAS7rD,GAAKy3L,IAAgBt4I,EAAAA;QAAAA,GAErC8kH,GAA2Bz3I,IAAIu3I,KAAuB,SAAUn2I,IAAAA;AAC9D,iBAAOA,OAAMgoK,MAAsBhoK,OAAMqnK,KACrC,IAAID,GAAqBpnK,EAAAA,IACzBkoK,GAA4BloK,EAAAA;QAAAA,GAAAA,CAG7BygC,MAAWv1B,GAAWq8J,EAAAA,KAAkBQ,OAA2Bz2L,OAAOkB,YAAW;AACxF80L,UAAAA,KAAaS,GAAuBztJ,MAE/BmuJ,OAEHnoG,GAASynG,IAAwB,QAAQ,SAAciC,IAAaC,IAAAA;AAClE,gBAAIj0J,KAAOr+B;AACX,mBAAO,IAAIqwL,GAAmB,SAAUnuJ,IAASokB,IAAAA;AAC/CltD,cAAAA,GAAKu2L,IAAYtxJ,IAAM6D,IAASokB,EAAAA;YAAAA,CAAAA,EAC/B3jB,KAAK0vJ,IAAaC,EAAAA;UAAAA,GAEpB,EAAE1pG,QAAAA,KAAQ,CAAA,GAGbD,GAASynG,IAAwB,SAASE,GAAwB,OAAG,EAAE1nG,QAAAA,KAAQ,CAAA;AAIjF,cAAA;AAAA,mBACSwnG,GAAuB50L;UAAAA,SACvBiL,IAAP;UAAOA;AAGLyrB,UAAAA,MACFA,GAAek+J,IAAwBE,EAAAA;QAAAA;AAK7ChxJ,QAAAA,GAAE,EAAEjM,QAAAA,MAAc6B,MAAAA,MAAYF,QAAQ40F,GAAAA,GAAU,EAC9CviC,SAASgpG,GAAAA,CAAAA,GAGXpnE,GAAeonE,IAAoBH,IAAAA,OAAS,IAAO,GACnDvD,GAAWuD,EAAAA,GAEXR,KAAiBrvH,GAAW6vH,EAAAA,GAG5B5wJ,GAAE,EAAE9Z,QAAQ0qK,IAASv7J,MAAAA,MAAYK,QAAQ40F,GAAAA,GAAU,EAGjDtjE,QAAQ,SAAgBvsD,IAAAA;AACtB,cAAI8kK,KAAaL,GAAqBx+J,IAAAA;AAEtC,iBADA5G,GAAKylK,GAAWv4G,QAAAA,QAAmBvsD,EAAAA,GAC5B8kK,GAAW71E;QAAAA,EAAAA,CAAAA,GAItB1pD,GAAE,EAAE9Z,QAAQ0qK,IAASv7J,MAAAA,MAAYK,QAAQ8zB,MAAW8gE,GAAAA,GAAU,EAG5D1nF,SAAS,SAAiBhyB,IAAAA;AACxB,iBAAO4uJ,GAAeh2G,MAAW9oD,SAAS0vL,KAAiBW,KAAqBrwL,MAAMkQ,EAAAA;QAAAA,EAAAA,CAAAA,GAI1FovB,GAAE,EAAE9Z,QAAQ0qK,IAASv7J,MAAAA,MAAYK,QAAQk8J,GAAAA,GAAuB,EAG9D1tJ,KAAK,SAAa3iC,IAAAA;AAChB,cAAIwnB,KAAIroB,MACJ6+J,KAAaL,GAAqBn2I,EAAAA,GAClC6Z,KAAU28H,GAAW38H,SACrBokB,KAASu4G,GAAWv4G,QACpB7zB,KAASksI,GAAQ,WAAA;AACnB,gBAAI4zB,KAAkBpqJ,GAAU9f,GAAE6Z,OAAAA,GAC9B9uB,KAAS,CAAA,GACT0qJ,KAAU,GACV3yF,KAAY;AAChBl+D,YAAAA,GAAQpM,IAAU,SAAUmoF,IAAAA;AAC1B,kBAAIpqF,KAAQk/J,MACRiB,KAAAA;AACJ5zF,cAAAA,MACA/xE,GAAKm5L,IAAiBlqK,IAAG2gE,EAAAA,EAASrmD,KAAK,SAAUzoC,IAAAA;AAC3C6kK,gBAAAA,OACJA,KAAAA,MACA3rJ,GAAOxU,EAAAA,IAAS1E,IAAAA,EACdixE,MAAajpC,GAAQ9uB,EAAAA;cAAAA,GACtBkzC,EAAAA;YAAAA,CAAAA,GAAAA,EAEH6kB,MAAajpC,GAAQ9uB,EAAAA;UAAAA,CAAAA;AAGzB,iBADIqf,GAAOhsB,SAAO6/C,GAAO7zB,GAAOv4B,KAAAA,GACzB2kK,GAAW71E;QAAAA,GAIpB+zD,MAAM,SAAcl8I,IAAAA;AAClB,cAAIwnB,KAAIroB,MACJ6+J,KAAaL,GAAqBn2I,EAAAA,GAClCi+B,KAASu4G,GAAWv4G,QACpB7zB,KAASksI,GAAQ,WAAA;AACnB,gBAAI4zB,KAAkBpqJ,GAAU9f,GAAE6Z,OAAAA;AAClCj1B,YAAAA,GAAQpM,IAAU,SAAUmoF,IAAAA;AAC1B5vF,cAAAA,GAAKm5L,IAAiBlqK,IAAG2gE,EAAAA,EAASrmD,KAAKk8H,GAAW38H,SAASokB,EAAAA;YAAAA,CAAAA;UAAAA,CAAAA;AAI/D,iBADI7zB,GAAOhsB,SAAO6/C,GAAO7zB,GAAOv4B,KAAAA,GACzB2kK,GAAW71E;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/YtB,YAiBI6tE,IAAOh4I,IAAMyD,IAAMo5D,IAAQrB,IAAQvwE,IAAMk/E,IAASrmD,IAjBlDtP,KAAS34B,GAAQ,EAAA,GACjBD,KAAOC,GAAQ,EAAA,GACf84B,KAA2B94B,GAAQ,EAAA,EAAmDusB,GACtFurK,KAAY93L,GAAQ,GAAA,EAAqBgP,KACzC+zJ,KAAS/iK,GAAQ,GAAA,GACjB+3L,KAAgB/3L,GAAQ,GAAA,GACxBg4L,KAAkBh4L,GAAQ,GAAA,GAC1BgjK,KAAUhjK,GAAQ,GAAA,GAElBi4L,KAAmBt/J,GAAOs/J,oBAAoBt/J,GAAOu/J,wBACrDpxH,KAAWnuC,GAAOmuC,UAClB6D,KAAUhyC,GAAOgyC,SACjBgiB,KAAUh0D,GAAOg0D,SAEjBwrG,KAA2Br/J,GAAyBH,IAAQ,gBAAA,GAC5Dy/J,KAAiBD,MAA4BA,GAAyB34L;AAKrE44L,QAAAA,OACHj8B,KAAQ,WAAA;AACN,cAAIhzC,IAAQthH;AAEZ,eADIm7J,OAAY75C,KAASx+C,GAAQ5D,WAASoiD,GAAO8tE,KAAAA,GAC1C9yK,MAAM;AACXtc,YAAAA,KAAKsc,GAAKtc,IACVsc,KAAOA,GAAK9e;AACZ,gBAAA;AACEwC,cAAAA,GAAAA;YAAAA,SACOkE,IAAP;AAGA,oBAFIoY,KAAM68D,GAAAA,IACLp5D,KAAAA,QACC7b;YAAAA;UAAAA;AAER6b,UAAAA,KAAAA,QACEuhG,MAAQA,GAAO6tE,MAAAA;QAAAA,GAKhBj0B,MAAWC,MAAYg1B,MAAAA,CAAmBC,MAAAA,CAAoBnxH,KAAAA,CAQvDixH,MAAiBprG,MAAWA,GAAQnlD,YAE9C8mD,KAAU3B,GAAQnlD,QAAAA,MAAQh+B,GAElB1I,cAAc6rF,IACtB1kD,KAAOloC,GAAKuuF,GAAQrmD,MAAMqmD,EAAAA,GAC1BtN,KAAS,WAAA;AACP/4C,UAAAA,GAAKk0H,EAAAA;QAAAA,KAGE6G,KACThiF,KAAS,WAAA;AACPrW,UAAAA,GAAQd,SAASsyF,EAAAA;QAAAA,KAUnB27B,KAAY/3L,GAAK+3L,IAAWn/J,EAAAA,GAC5BqoD,KAAS,WAAA;AACP82G,UAAAA,GAAU37B,EAAAA;QAAAA,MA/BZx8E,KAAAA,MACAvwE,KAAO03D,GAASwjD,eAAe,EAAA,GAC/B,IAAI2tE,GAAiB97B,EAAAA,EAAO/jB,QAAQhpI,IAAM,EAAEipL,eAAAA,KAAe,CAAA,GAC3Dr3G,KAAS,WAAA;AACP5xE,UAAAA,GAAKqlB,OAAOkrD,KAAAA,CAAUA;QAAAA,KAgC5BrhF,GAAOD,UAAU+5L,MAAkB,SAAUvwL,IAAAA;AAC3C,cAAIupL,KAAO,EAAEvpL,IAAIA,IAAIxC,MAAAA,OAAMmE;AACvBoe,UAAAA,OAAMA,GAAKviB,OAAO+rL,KACjBjtK,OACHA,KAAOitK,IACPpwG,GAAAA,IACAp5D,KAAOwpK;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnFX,YAAItjH,KAAY9tE,GAAQ,EAAA,GACpB24B,KAAS34B,GAAQ,EAAA;AAErB1B,QAAAA,GAAOD,UAAU,oBAAoBwyB,KAAKi9C,EAAAA,KAAAA,WAAcn1C,GAAO2/J;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH/D,YAAIxqH,KAAY9tE,GAAQ,EAAA;AAExB1B,QAAAA,GAAOD,UAAU,qBAAqBwyB,KAAKi9C,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACF3C,YAAIn1C,KAAS34B,GAAQ,EAAA;AAErB1B,QAAAA,GAAOD,UAAU,SAAUyM,IAAGC,IAAAA;AAC5B,cAAIsjB,KAAUsK,GAAOtK;AACjBA,UAAAA,MAAWA,GAAQtiB,UACD,KAApBxE,UAAU9D,SAAc4qB,GAAQtiB,MAAMjB,EAAAA,IAAKujB,GAAQtiB,MAAMjB,IAAGC,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACLhE,YAAIuqL,KAAQ,WAAA;AACVhwL,eAAK6e,OAAO,MACZ7e,KAAK4U,OAAO;QAAA;AAGdo7K,QAAAA,GAAMn1L,YAAY,EAChBoiB,KAAK,SAAU0O,IAAAA;AACb,cAAIrnB,KAAQ,EAAEqnB,MAAMA,IAAM5rB,MAAM,KAAA;AAC5BC,eAAK6e,OAAM7e,KAAK4U,KAAK7U,OAAOuE,KAC3BtE,KAAK6e,OAAOva,IACjBtE,KAAK4U,OAAOtQ;QAAAA,GAEdxK,KAAK,WAAA;AACH,cAAIwK,KAAQtE,KAAK6e;AACjB,cAAIva;AAGF,mBAFAtE,KAAK6e,OAAOva,GAAMvE,MACdC,KAAK4U,SAAStQ,OAAOtE,KAAK4U,OAAO,OAC9BtQ,GAAMqnB;QAAAA,EAAAA,GAKnB3yB,GAAOD,UAAUi3L;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACtBjBh3L,QAAAA,GAAOD,UAA2B,YAAA,OAAVy8B;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACCxB,YAAI8J,KAAI5kC,GAAQ,EAAA,GACZouD,KAAUpuD,GAAQ,EAAA,GAClBk1L,KAAgBl1L,GAAQ,GAAA,GACxBikC,KAAQjkC,GAAQ,EAAA,GAChB2lE,KAAa3lE,GAAQ,EAAA,GACrB64B,KAAa74B,GAAQ,EAAA,GACrB+yL,KAAqB/yL,GAAQ,GAAA,GAC7BokK,KAAiBpkK,GAAQ,GAAA,GACzBiuF,KAAWjuF,GAAQ,GAAA;AA0BvB,YAhBA4kC,GAAE,EAAE9Z,QAAQ,WAAWqP,OAAAA,MAAaO,MAAAA,MAAYJ,QAAAA,CAAAA,CAP5B46J,MAAiBjxJ,GAAM,WAAA;AAEzCixJ,UAAAA,GAAc/0L,UAAmB,QAAEzB,KAAK,EAAEupC,MAAM,WAAA;UAAA,EAAA,GAA+B,WAAA;UAAA,CAAA;QAAA,CAAA,EAAA,GAKV,EACrE,SAAW,SAAUswJ,IAAAA;AACnB,cAAI5qK,KAAIolK,GAAmBztL,MAAMqgE,GAAW,SAAA,CAAA,GACxC75C,KAAa+M,GAAW0/J,EAAAA;AAC5B,iBAAOjzL,KAAK2iC,KACVnc,KAAa,SAAUtW,IAAAA;AACrB,mBAAO4uJ,GAAez2I,IAAG4qK,GAAAA,CAAAA,EAAatwJ,KAAK,WAAA;AAAc,qBAAOzyB;YAAAA,CAAAA;UAAAA,IAC9D+iL,IACJzsK,KAAa,SAAUvrB,IAAAA;AACrB,mBAAO6jK,GAAez2I,IAAG4qK,GAAAA,CAAAA,EAAatwJ,KAAK,WAAA;AAAc,oBAAM1nC;YAAAA,CAAAA;UAAAA,IAC7Dg4L,EAAAA;QAAAA,EAAAA,CAAAA,GAAAA,CAMLnqI,MAAWv1B,GAAWq8J,EAAAA,GAAgB;AACzC,cAAI5gK,KAASqxC,GAAW,SAAA,EAAWxlE,UAAmB;AAClD+0L,UAAAA,GAAc/0L,UAAmB,YAAMm0B,MACzC25D,GAASinG,GAAc/0L,WAAW,WAAWm0B,IAAQ,EAAE45D,QAAAA,KAAQ,CAAA;QAAA;MAAA,GAAA,SAAA3tF,IAAAd,IAAAO,IAAA;ACrCnE,QAAAA,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAR,QAAAA,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACAR,YAAI4kC,KAAI5kC,GAAQ,EAAA,GACZgkK,KAA6BhkK,GAAQ,GAAA,GACrCikK,KAAUjkK,GAAQ,GAAA;AAItB4kC,QAAAA,GAAE,EAAE9Z,QAAQ,WAAWmP,MAAAA,KAAM,GAAQ,EACnC,KAAO,SAAU2zB,IAAAA;AACf,cAAIm2G,KAAoBC,GAA2Bz3I,EAAEjnB,IAAAA,GACjDyyB,KAASksI,GAAQr2G,EAAAA;AAErB,kBADC71B,GAAOhsB,QAAQg4J,GAAkBn4G,SAASm4G,GAAkBv8H,SAASzP,GAAOv4B,KAAAA,GACtEukK,GAAkBz1E;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACX7B,QAAAtuF,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACMR,YAAIw4L,KAAW,SAAUn6L,IAAAA;AACvB;AAEA,cAEImL,IAFAivL,KAAKx5L,OAAOkB,WACZ+4B,KAASu/J,GAAGr4L,gBAEZitH,KAA4B,cAAA,OAAX/tH,SAAwBA,SAAS,CAAA,GAClDo5L,KAAiBrrE,GAAQpoH,YAAY,cACrC0zL,KAAsBtrE,GAAQurE,iBAAiB,mBAC/CC,KAAoBxrE,GAAQ9tH,eAAe;AAE/C,mBAAS2yL,GAAO1jL,IAAK1O,IAAKN,IAAAA;AAOxB,mBANAP,OAAOC,eAAesP,IAAK1O,IAAK,EAC9BN,OAAOA,IACPL,YAAAA,MACAsrB,cAAAA,MACAC,UAAAA,KAAU,CAAA,GAELlc,GAAI1O,EAAAA;UAAAA;AAEb,cAAA;AAEEoyL,YAAAA,GAAO,CAAA,GAAI,EAAA;UAAA,SACJxhK,IAAP;AACAwhK,YAAAA,KAAS,SAAS1jL,IAAK1O,IAAKN,IAAAA;AAC1B,qBAAOgP,GAAI1O,EAAAA,IAAON;YAAAA;UAAAA;AAItB,mBAASg7B,GAAKs+J,IAASC,IAAS7gK,IAAM8gK,IAAAA;AAEpC,gBAAIC,KAAiBF,MAAWA,GAAQ54L,qBAAqB+4L,KAAYH,KAAUG,IAC/E93C,KAAYniJ,OAAOY,OAAOo5L,GAAe94L,SAAAA,GACzCid,KAAU,IAAI6kE,GAAQ+2G,MAAe,CAAA,CAAA;AAMzC,mBAFA53C,GAAU+3C,UAuMZ,SAA0BL,IAAS5gK,IAAM9a,IAAAA;AACvC,kBAAI8hC,KAAQk6I;AAEZ,qBAAO,SAAgB9kK,IAAQ+Y,IAAAA;AAC7B,oBAAI6R,OAAUm6I;AACZ,wBAAM,IAAIrtL,MAAM,8BAAA;AAGlB,oBAAIkzC,OAAUo6I,IAAmB;AAC/B,sBAAe,YAAXhlK;AACF,0BAAM+Y;AAKR,yBAAOksJ,GAAAA;gBAAAA;AAMT,qBAHAn8K,GAAQkX,SAASA,IACjBlX,GAAQiwB,MAAMA,QAED;AACX,sBAAImsJ,KAAWp8K,GAAQo8K;AACvB,sBAAIA,IAAU;AACZ,wBAAIC,KAAiBC,GAAoBF,IAAUp8K,EAAAA;AACnD,wBAAIq8K,IAAgB;AAClB,0BAAIA,OAAmBE;AAAkB;AACzC,6BAAOF;oBAAAA;kBAAAA;AAIX,sBAAuB,WAAnBr8K,GAAQkX;AAGVlX,oBAAAA,GAAQo0H,OAAOp0H,GAAQw8K,QAAQx8K,GAAQiwB;2BAEX,YAAnBjwB,GAAQkX,QAAoB;AACrC,wBAAI4qB,OAAUk6I;AAEZ,4BADAl6I,KAAQo6I,IACFl8K,GAAQiwB;AAGhBjwB,oBAAAA,GAAQy8K,kBAAkBz8K,GAAQiwB,GAAAA;kBAAAA;AAEN,iCAAnBjwB,GAAQkX,UACjBlX,GAAQy0H,OAAO,UAAUz0H,GAAQiwB,GAAAA;AAGnC6R,kBAAAA,KAAQm6I;AAER,sBAAIp3K,KAAS63K,GAAShB,IAAS5gK,IAAM9a,EAAAA;AACrC,sBAAoB,aAAhB6E,GAAOzc,MAAmB;AAO5B,wBAJA05C,KAAQ9hC,GAAQxX,OACZ0zL,KACAS,IAEA93K,GAAOorB,QAAQssJ;AACjB;AAGF,2BAAO,EACLn6L,OAAOyiB,GAAOorB,KACdznC,MAAMwX,GAAQxX,KAAAA;kBAAAA;AAGS,8BAAhBqc,GAAOzc,SAChB05C,KAAQo6I,IAGRl8K,GAAQkX,SAAS,SACjBlX,GAAQiwB,MAAMprB,GAAOorB;gBAAAA;cAAAA;YAAAA,EA/QUyrJ,IAAS5gK,IAAM9a,EAAAA,GAE7CgkI;UAAAA;AAcT,mBAAS04C,GAASjyL,IAAI2G,IAAK6+B,IAAAA;AACzB,gBAAA;AACE,qBAAO,EAAE7nC,MAAM,UAAU6nC,KAAKxlC,GAAGnJ,KAAK8P,IAAK6+B,EAAAA,EAAAA;YAAAA,SACpC3c,IAAP;AACA,qBAAO,EAAElrB,MAAM,SAAS6nC,KAAK3c,GAAAA;YAAAA;UAAAA;AAhBjCryB,UAAAA,GAAQm8B,OAAOA;AAoBf,cAAI4+J,KAAyB,kBACzBW,KAAyB,kBACzBV,KAAoB,aACpBC,KAAoB,aAIpBK,KAAmB,CAAA;AAMvB,mBAAST,KAAAA;UAAAA;AACT,mBAASc,KAAAA;UAAAA;AACT,mBAASC,KAAAA;UAAAA;AAIT,cAAIrrE,KAAoB,CAAA;AACxBsjE,UAAAA,GAAOtjE,IAAmB8pE,IAAgB,WAAA;AACxC,mBAAOpzL;UAAAA,CAAAA;AAGT,cAAIkzH,KAAWv5H,OAAOijB,gBAClBg4K,KAA0B1hE,MAAYA,GAASA,GAAS9/G,GAAO,CAAA,CAAA,CAAA,CAAA;AAC/DwhL,UAAAA,MACAA,OAA4BzB,MAC5Bv/J,GAAOx6B,KAAKw7L,IAAyBxB,EAAAA,MAGvC9pE,KAAoBsrE;AAGtB,cAAIC,KAAKF,GAA2B95L,YAClC+4L,GAAU/4L,YAAYlB,OAAOY,OAAO+uH,EAAAA;AAYtC,mBAASwrE,GAAsBj6L,IAAAA;AAC7B,aAAC,QAAQ,SAAS,QAAA,EAAU0P,QAAQ,SAASykB,IAAAA;AAC3C49J,cAAAA,GAAO/xL,IAAWm0B,IAAQ,SAAS+Y,IAAAA;AACjC,uBAAO/nC,KAAK6zL,QAAQ7kK,IAAQ+Y,EAAAA;cAAAA,CAAAA;YAAAA,CAAAA;UAAAA;AAkClC,mBAASgtJ,GAAcj5C,IAAWk5C,IAAAA;AAChC,qBAASC,GAAOjmK,IAAQ+Y,IAAK7F,IAASokB,IAAAA;AACpC,kBAAI3pC,KAAS63K,GAAS14C,GAAU9sH,EAAAA,GAAS8sH,IAAW/zG,EAAAA;AACpD,kBAAoB,YAAhBprB,GAAOzc,MAEJ;AACL,oBAAIuyB,KAAS9V,GAAOorB,KAChB7tC,KAAQu4B,GAAOv4B;AACnB,uBAAIA,MACiB,YAAA,OAAVA,MACP05B,GAAOx6B,KAAKc,IAAO,SAAA,IACd86L,GAAY9yJ,QAAQhoC,GAAMg7L,OAAAA,EAASvyJ,KAAK,SAASzoC,IAAAA;AACtD+6L,kBAAAA,GAAO,QAAQ/6L,IAAOgoC,IAASokB,EAAAA;gBAAAA,GAC9B,SAASl7B,IAAAA;AACV6pK,kBAAAA,GAAO,SAAS7pK,IAAK8W,IAASokB,EAAAA;gBAAAA,CAAAA,IAI3B0uI,GAAY9yJ,QAAQhoC,EAAAA,EAAOyoC,KAAK,SAASwyJ,IAAAA;AAI9C1iK,kBAAAA,GAAOv4B,QAAQi7L,IACfjzJ,GAAQzP,EAAAA;gBAAAA,GACP,SAAShsB,IAAAA;AAGV,yBAAOwuL,GAAO,SAASxuL,IAAOy7B,IAASokB,EAAAA;gBAAAA,CAAAA;cAAAA;AAvBzCA,cAAAA,GAAO3pC,GAAOorB,GAAAA;YAAAA;AA4BlB,gBAAIqtJ;AAgCJp1L,iBAAK6zL,UA9BL,SAAiB7kK,IAAQ+Y,IAAAA;AACvB,uBAASstJ,KAAAA;AACP,uBAAO,IAAIL,GAAY,SAAS9yJ,IAASokB,IAAAA;AACvC2uI,kBAAAA,GAAOjmK,IAAQ+Y,IAAK7F,IAASokB,EAAAA;gBAAAA,CAAAA;cAAAA;AAIjC,qBAAO8uI,KAaLA,KAAkBA,GAAgBzyJ,KAChC0yJ,IAGAA,EAAAA,IACEA,GAAAA;YAAAA;UAAAA;AAkHV,mBAASjB,GAAoBF,IAAUp8K,IAAAA;AACrC,gBAAIkX,KAASklK,GAASv0L,SAASmY,GAAQkX,MAAAA;AACvC,gBAAIA,OAAW9qB,IAAW;AAKxB,kBAFA4T,GAAQo8K,WAAW,MAEI,YAAnBp8K,GAAQkX,QAAoB;AAE9B,oBAAIklK,GAASv0L,SAAiB,WAG5BmY,GAAQkX,SAAS,UACjBlX,GAAQiwB,MAAM7jC,IACdkwL,GAAoBF,IAAUp8K,EAAAA,GAEP,YAAnBA,GAAQkX;AAGV,yBAAOqlK;AAIXv8K,gBAAAA,GAAQkX,SAAS,SACjBlX,GAAQiwB,MAAM,IAAI/jC,UAChB,gDAAA;cAAA;AAGJ,qBAAOqwL;YAAAA;AAGT,gBAAI13K,KAAS63K,GAASxlK,IAAQklK,GAASv0L,UAAUmY,GAAQiwB,GAAAA;AAEzD,gBAAoB,YAAhBprB,GAAOzc;AAIT,qBAHA4X,GAAQkX,SAAS,SACjBlX,GAAQiwB,MAAMprB,GAAOorB,KACrBjwB,GAAQo8K,WAAW,MACZG;AAGT,gBAAI5tI,KAAO9pC,GAAOorB;AAElB,mBAAM0e,KAOFA,GAAKnmD,QAGPwX,GAAQo8K,GAASoB,UAAAA,IAAc7uI,GAAKvsD,OAGpC4d,GAAQ/X,OAAOm0L,GAASqB,SAQD,aAAnBz9K,GAAQkX,WACVlX,GAAQkX,SAAS,QACjBlX,GAAQiwB,MAAM7jC,KAUlB4T,GAAQo8K,WAAW,MACZG,MANE5tI,MA3BP3uC,GAAQkX,SAAS,SACjBlX,GAAQiwB,MAAM,IAAI/jC,UAAU,kCAAA,GAC5B8T,GAAQo8K,WAAW,MACZG;UAAAA;AAoDX,mBAASmB,GAAaC,IAAAA;AACpB,gBAAInxL,KAAQ,EAAEoxL,QAAQD,GAAK,CAAA,EAAA;AAEvB,iBAAKA,OACPnxL,GAAMqxL,WAAWF,GAAK,CAAA,IAGpB,KAAKA,OACPnxL,GAAMsxL,aAAaH,GAAK,CAAA,GACxBnxL,GAAMuxL,WAAWJ,GAAK,CAAA,IAGxBz1L,KAAK81L,WAAWlmL,KAAKtL,EAAAA;UAAAA;AAGvB,mBAASyxL,GAAczxL,IAAAA;AACrB,gBAAIqY,KAASrY,GAAM0xL,cAAc,CAAA;AACjCr5K,YAAAA,GAAOzc,OAAO,UAAA,OACPyc,GAAOorB,KACdzjC,GAAM0xL,aAAar5K;UAAAA;AAGrB,mBAASggE,GAAQ+2G,IAAAA;AAIf1zL,iBAAK81L,aAAa,CAAC,EAAEJ,QAAQ,OAAA,CAAA,GAC7BhC,GAAYnpL,QAAQirL,IAAcx1L,IAAAA,GAClCA,KAAKi2L,MAAAA,IAAM;UAAA;AA8Bb,mBAAS7iL,GAAOvS,IAAAA;AACd,gBAAIA,IAAU;AACZ,kBAAIsmF,KAAiBtmF,GAASuyL,EAAAA;AAC9B,kBAAIjsG;AACF,uBAAOA,GAAe/tF,KAAKyH,EAAAA;AAG7B,kBAA6B,cAAA,OAAlBA,GAASd;AAClB,uBAAOc;AAGT,kBAAA,CAAK+qB,MAAM/qB,GAAS1C,MAAAA,GAAS;AAC3B,oBAAIlF,KAAAA,IAAQ8G,KAAO,SAASA,KAAAA;AAC1B,yBAAA,EAAS9G,KAAI4H,GAAS1C;AACpB,wBAAIy1B,GAAOx6B,KAAKyH,IAAU5H,EAAAA;AAGxB,6BAFA8G,GAAK7F,QAAQ2G,GAAS5H,EAAAA,GACtB8G,GAAKO,OAAAA,OACEP;AAOX,yBAHAA,GAAK7F,QAAQgK,IACbnE,GAAKO,OAAAA,MAEEP;gBAAAA;AAGT,uBAAOA,GAAKA,OAAOA;cAAAA;YAAAA;AAKvB,mBAAO,EAAEA,MAAMk0L,GAAAA;UAAAA;AAIjB,mBAASA,KAAAA;AACP,mBAAO,EAAE/5L,OAAOgK,IAAW5D,MAAAA,KAAM;UAAA;AA+MnC,iBA7mBAo0L,GAAkB75L,YAAY85L,IAC9B/H,GAAOiI,IAAI,eAAeF,EAAAA,GAC1B/H,GAAO+H,IAA4B,eAAeD,EAAAA,GAClDA,GAAkBn9G,cAAcq1G,GAC9B+H,IACApB,IACA,mBAAA,GAaFx6L,GAAQm9L,sBAAsB,SAASC,IAAAA;AACrC,gBAAI76L,KAAyB,cAAA,OAAX66L,MAAyBA,GAAO36L;AAClD,mBAAA,CAAA,CAAOF,OACHA,OAASo5L,MAG2B,yBAAnCp5L,GAAKi8E,eAAej8E,GAAK9B;UAAAA,GAIhCT,GAAQ+oC,OAAO,SAASq0J,IAAAA;AAQtB,mBAPIx8L,OAAOu4B,iBACTv4B,OAAOu4B,eAAeikK,IAAQxB,EAAAA,KAE9BwB,GAAO/sH,YAAYurH,IACnB/H,GAAOuJ,IAAQ5C,IAAmB,mBAAA,IAEpC4C,GAAOt7L,YAAYlB,OAAOY,OAAOs6L,EAAAA,GAC1BsB;UAAAA,GAOTp9L,GAAQq9L,QAAQ,SAASruJ,IAAAA;AACvB,mBAAO,EAAEmtJ,SAASntJ,GAAAA;UAAAA,GAsEpB+sJ,GAAsBC,GAAcl6L,SAAAA,GACpC+xL,GAAOmI,GAAcl6L,WAAWw4L,IAAqB,WAAA;AACnD,mBAAOrzL;UAAAA,CAAAA,GAETjH,GAAQg8L,gBAAgBA,IAKxBh8L,GAAQs9L,QAAQ,SAAS7C,IAASC,IAAS7gK,IAAM8gK,IAAasB,IAAAA;AAAAA,uBACxDA,OAAwBA,KAAc3tG;AAE1C,gBAAI9oF,KAAO,IAAIw2L,GACb7/J,GAAKs+J,IAASC,IAAS7gK,IAAM8gK,EAAAA,GAC7BsB,EAAAA;AAGF,mBAAOj8L,GAAQm9L,oBAAoBzC,EAAAA,IAC/Bl1L,KACAA,GAAKwB,KAAAA,EAAO4iC,KAAK,SAASlQ,IAAAA;AACxB,qBAAOA,GAAOnyB,OAAOmyB,GAAOv4B,QAAQqE,GAAKwB,KAAAA;YAAAA,CAAAA;UAAAA,GAuKjD+0L,GAAsBD,EAAAA,GAEtBjI,GAAOiI,IAAItB,IAAmB,WAAA,GAO9B3G,GAAOiI,IAAIzB,IAAgB,WAAA;AACzB,mBAAOpzL;UAAAA,CAAAA,GAGT4sL,GAAOiI,IAAI,YAAY,WAAA;AACrB,mBAAO;UAAA,CAAA,GAkCT97L,GAAQsK,OAAO,SAAS1I,IAAAA;AACtB,gBAAI0I,KAAO,CAAA;AACX,qBAAS7I,MAAOG;AACd0I,cAAAA,GAAKuM,KAAKpV,EAAAA;AAMZ,mBAJA6I,GAAKb,QAAAA,GAIE,SAASzC,KAAAA;AACd,qBAAOsD,GAAKlF,UAAQ;AAClB,oBAAI3D,KAAM6I,GAAK6N,IAAAA;AACf,oBAAI1W,MAAOG;AAGT,yBAFAoF,GAAK7F,QAAQM,IACbuF,GAAKO,OAAAA,OACEP;cAAAA;AAQX,qBADAA,GAAKO,OAAAA,MACEP;YAAAA;UAAAA,GAsCXhH,GAAQqa,SAASA,IAMjBupE,GAAQ9hF,YAAY,EAClBW,aAAamhF,IAEbs5G,OAAO,SAASK,IAAAA;AAcd,gBAbAt2L,KAAKoO,OAAO,GACZpO,KAAKD,OAAO,GAGZC,KAAKksI,OAAOlsI,KAAKs0L,QAAQpwL,IACzBlE,KAAKM,OAAAA,OACLN,KAAKk0L,WAAW,MAEhBl0L,KAAKgvB,SAAS,QACdhvB,KAAK+nC,MAAM7jC,IAEXlE,KAAK81L,WAAWvrL,QAAQwrL,EAAAA,GAAAA,CAEnBO;AACH,uBAAS98L,MAAQwG;AAEQ,wBAAnBxG,GAAK29C,OAAO,CAAA,KACZvjB,GAAOx6B,KAAK4G,MAAMxG,EAAAA,KAAAA,CACjBoyB,MAAAA,CAAOpyB,GAAK4B,MAAM,CAAA,CAAA,MACrB4E,KAAKxG,EAAAA,IAAQ0K;UAAAA,GAMrBu6B,MAAM,WAAA;AACJz+B,iBAAKM,OAAAA;AAEL,gBACIi2L,KADYv2L,KAAK81L,WAAW,CAAA,EACLE;AAC3B,gBAAwB,YAApBO,GAAWr2L;AACb,oBAAMq2L,GAAWxuJ;AAGnB,mBAAO/nC,KAAKw2L;UAAAA,GAGdjC,mBAAmB,SAASrjJ,IAAAA;AAC1B,gBAAIlxC,KAAKM;AACP,oBAAM4wC;AAGR,gBAAIp5B,KAAU9X;AACd,qBAASs6C,GAAOmd,IAAKg/H,IAAAA;AAYnB,qBAXA95K,GAAOzc,OAAO,SACdyc,GAAOorB,MAAMmJ,IACbp5B,GAAQ/X,OAAO03D,IAEXg/H,OAGF3+K,GAAQkX,SAAS,QACjBlX,GAAQiwB,MAAM7jC,KAAAA,CAAAA,CAGNuyL;YAAAA;AAGZ,qBAASx9L,KAAI+G,KAAK81L,WAAW33L,SAAS,GAAGlF,MAAK,GAAA,EAAKA,IAAG;AACpD,kBAAIqL,KAAQtE,KAAK81L,WAAW78L,EAAAA,GACxB0jB,KAASrY,GAAM0xL;AAEnB,kBAAqB,WAAjB1xL,GAAMoxL;AAIR,uBAAOp7I,GAAO,KAAA;AAGhB,kBAAIh2C,GAAMoxL,UAAU11L,KAAKoO,MAAM;AAC7B,oBAAIsoL,KAAW9iK,GAAOx6B,KAAKkL,IAAO,UAAA,GAC9BqyL,KAAa/iK,GAAOx6B,KAAKkL,IAAO,YAAA;AAEpC,oBAAIoyL,MAAYC,IAAY;AAC1B,sBAAI32L,KAAKoO,OAAO9J,GAAMqxL;AACpB,2BAAOr7I,GAAOh2C,GAAMqxL,UAAAA,IAAU;AACzB,sBAAI31L,KAAKoO,OAAO9J,GAAMsxL;AAC3B,2BAAOt7I,GAAOh2C,GAAMsxL,UAAAA;gBAAAA,WAGbc,IAAAA;AACT,sBAAI12L,KAAKoO,OAAO9J,GAAMqxL;AACpB,2BAAOr7I,GAAOh2C,GAAMqxL,UAAAA,IAAU;gBAAA,OAG3B;AAAA,sBAAA,CAAIgB;AAMT,0BAAM,IAAIjwL,MAAM,wCAAA;AALhB,sBAAI1G,KAAKoO,OAAO9J,GAAMsxL;AACpB,2BAAOt7I,GAAOh2C,GAAMsxL,UAAAA;gBAAAA;cAAAA;YAAAA;UAAAA,GAU9BrpD,QAAQ,SAASrsI,IAAM6nC,IAAAA;AACrB,qBAAS9uC,KAAI+G,KAAK81L,WAAW33L,SAAS,GAAGlF,MAAK,GAAA,EAAKA,IAAG;AACpD,kBAAIqL,KAAQtE,KAAK81L,WAAW78L,EAAAA;AAC5B,kBAAIqL,GAAMoxL,UAAU11L,KAAKoO,QACrBwlB,GAAOx6B,KAAKkL,IAAO,YAAA,KACnBtE,KAAKoO,OAAO9J,GAAMsxL,YAAY;AAChC,oBAAIgB,KAAetyL;AACnB;cAAA;YAAA;AAIAsyL,YAAAA,OACU,YAAT12L,MACS,eAATA,OACD02L,GAAalB,UAAU3tJ,MACvBA,MAAO6uJ,GAAahB,eAGtBgB,KAAe;AAGjB,gBAAIj6K,KAASi6K,KAAeA,GAAaZ,aAAa,CAAA;AAItD,mBAHAr5K,GAAOzc,OAAOA,IACdyc,GAAOorB,MAAMA,IAET6uJ,MACF52L,KAAKgvB,SAAS,QACdhvB,KAAKD,OAAO62L,GAAahB,YAClBvB,MAGFr0L,KAAK62L,SAASl6K,EAAAA;UAAAA,GAGvBk6K,UAAU,SAASl6K,IAAQk5K,IAAAA;AACzB,gBAAoB,YAAhBl5K,GAAOzc;AACT,oBAAMyc,GAAOorB;AAcf,mBAXoB,YAAhBprB,GAAOzc,QACS,eAAhByc,GAAOzc,OACTF,KAAKD,OAAO4c,GAAOorB,MACM,aAAhBprB,GAAOzc,QAChBF,KAAKw2L,OAAOx2L,KAAK+nC,MAAMprB,GAAOorB,KAC9B/nC,KAAKgvB,SAAS,UACdhvB,KAAKD,OAAO,SACa,aAAhB4c,GAAOzc,QAAqB21L,OACrC71L,KAAKD,OAAO81L,KAGPxB;UAAAA,GAGTlmE,QAAQ,SAASynE,IAAAA;AACf,qBAAS38L,KAAI+G,KAAK81L,WAAW33L,SAAS,GAAGlF,MAAK,GAAA,EAAKA,IAAG;AACpD,kBAAIqL,KAAQtE,KAAK81L,WAAW78L,EAAAA;AAC5B,kBAAIqL,GAAMsxL,eAAeA;AAGvB,uBAFA51L,KAAK62L,SAASvyL,GAAM0xL,YAAY1xL,GAAMuxL,QAAAA,GACtCE,GAAczxL,EAAAA,GACP+vL;YAAAA;UAAAA,GAKb,OAAS,SAASqB,IAAAA;AAChB,qBAASz8L,KAAI+G,KAAK81L,WAAW33L,SAAS,GAAGlF,MAAK,GAAA,EAAKA,IAAG;AACpD,kBAAIqL,KAAQtE,KAAK81L,WAAW78L,EAAAA;AAC5B,kBAAIqL,GAAMoxL,WAAWA,IAAQ;AAC3B,oBAAI/4K,KAASrY,GAAM0xL;AACnB,oBAAoB,YAAhBr5K,GAAOzc,MAAkB;AAC3B,sBAAI42L,KAASn6K,GAAOorB;AACpBguJ,kBAAAA,GAAczxL,EAAAA;gBAAAA;AAEhB,uBAAOwyL;cAAAA;YAAAA;AAMX,kBAAM,IAAIpwL,MAAM,uBAAA;UAAA,GAGlBi2I,eAAe,SAAS97I,IAAUy0L,IAAYC,IAAAA;AAa5C,mBAZAv1L,KAAKk0L,WAAW,EACdv0L,UAAUyT,GAAOvS,EAAAA,GACjBy0L,YAAYA,IACZC,SAASA,GAAAA,GAGS,WAAhBv1L,KAAKgvB,WAGPhvB,KAAK+nC,MAAM7jC,KAGNmwL;UAAAA,EAAAA,GAQJt7L;QAAAA,EAOsBC,GAAOD,OAAAA;AAGtC,YAAA;AACEg+L,+BAAqB7D;QAAAA,SACd8D,IAAP;AAW0B,sBAAA,OAAfzhK,aACTA,WAAWwhK,qBAAqB7D,KAEhCz9J,SAAS,KAAK,wBAAA,EAA0By9J,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/uB5C,YAAIrvE,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK/5B,OAAOyZ;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH7B,YAAIksB,KAAI5kC,GAAQ,EAAA,GACZu8L,KAAUv8L,GAAQ,GAAA,EAAgC0Y;AAItDksB,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,KAAM,GAAQ,EAClCvhB,QAAQ,SAAgByrB,IAAAA;AACtB,iBAAOo4J,GAAQp4J,EAAAA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPnB,YAAIglF,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK7H,KAAKsyI;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH3B,YAAI7+H,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjB44B,KAAc54B,GAAQ,EAAA,GAEtBmxB,KAAOwH,GAAOxH,MACdirB,KAAUxjB,GAAYzH,GAAKhxB,UAAUi8C,OAAAA;AAIzCxX,QAAAA,GAAE,EAAE9Z,QAAQ,QAAQmP,MAAAA,KAAM,GAAQ,EAChCwpI,KAAK,WAAA;AACH,iBAAOrnH,GAAQ,IAAIjrB,IAAAA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACAvB7yB,QAAAA,GAAOD,UAAU,SAAkB4wD,IAAMJ,IAAAA;AAIvC,cAHAA,KAAWA,GAAS96B,MAAM,GAAA,EAAK,CAAA,GAAA,EAC/Bk7B,KAAAA,CAAQA;AAEG,mBAAA;AAEX,kBAAQJ,IAAAA;YACN,KAAK;YACL,KAAK;AACL,qBAAgB,OAATI;YAEP,KAAK;YACL,KAAK;AACL,qBAAgB,QAATA;YAEP,KAAK;AACL,qBAAgB,OAATA;YAEP,KAAK;AACL,qBAAgB,OAATA;YAEP,KAAK;AACL,qBAAA;UAAO;AAGT,iBAAgB,MAATA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AClCT,YAAIzjD,KAAMvM,OAAOkB,UAAUC;AAU3B,iBAASkmK,GAAOpwI,IAAAA;AACd,cAAA;AACE,mBAAO9H,mBAAmB8H,GAAMzH,QAAQ,OAAO,GAAA,CAAA;UAAA,SACxCluB,IAAP;AACA,mBAAO;UAAA;QAAA;AAWX,iBAAS+uI,GAAOp5G,IAAAA;AACd,cAAA;AACE,mBAAOvB,mBAAmBuB,EAAAA;UAAAA,SACnB31B,IAAP;AACA,mBAAO;UAAA;QAAA;AAqFXlC,QAAAA,GAAQgrB,YA1CR,SAAwB7a,IAAKqxC,IAAAA;AAC3BA,UAAAA,KAASA,MAAU;AAEnB,cACIrgD,IACAM,IAFAq9C,KAAQ,CAAA;AASZ,eAAKr9C,MAFD,YAAA,OAAoB+/C,OAAQA,KAAS,MAE7BrxC;AACV,gBAAIhD,GAAI9M,KAAK8P,IAAK1O,EAAAA,GAAM;AAkBtB,mBAjBAN,KAAQgP,GAAI1O,EAAAA,MAMGN,QAAAA,MAAAA,CAAqC0xB,MAAM1xB,EAAAA,MACxDA,KAAQ,KAGVM,KAAMwvI,GAAOxvI,EAAAA,GACbN,KAAQ8vI,GAAO9vI,EAAAA,GAMH,SAARM,MAA0B,SAAVN;AAAgB;AACpC29C,cAAAA,GAAMjoC,KAAKpV,KAAK,MAAKN,EAAAA;YAAAA;AAIzB,iBAAO29C,GAAM15C,SAASo8C,KAAS1C,GAAM53B,KAAK,GAAA,IAAO;QAAA,GAOnDlnB,GAAQiyB,QA3ER,SAAqB6+B,IAAAA;AAKnB,mBAFIiC,IAFAkM,KAAS,wBACTvlC,KAAS,CAAA,GAGNq5B,KAAOkM,GAAOnvC,KAAKghC,EAAAA,KAAQ;AAChC,gBAAIrvD,KAAMwmK,GAAOl1G,GAAK,CAAA,CAAA,GAClB5xD,KAAQ8mK,GAAOl1G,GAAK,CAAA,CAAA;AAUZ,qBAARtxD,MAA0B,SAAVN,MAAkBM,MAAOi4B,OAC7CA,GAAOj4B,EAAAA,IAAON;UAAAA;AAGhB,iBAAOu4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/DT,YAAInkB,KAAO5T,GAAQ,EAAA;AAsBnB1B,QAAAA,GAAOD,UAJG,WAAA;AACR,iBAAOuV,GAAKud,KAAKsyI,IAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnBnB,YAAI7sF,KAAc52E,GAAQ,GAAA,GACtBuwH,KAAWvwH,GAAQ,GAAA,GACnBoyJ,KAAUpyJ,GAAQ,GAAA,GAClByrB,KAAWzrB,GAAQ,EAAA,GACnBwwH,KAAQxwH,GAAQ,GAAA;AA8CpB1B,QAAAA,GAAOD,UAlCP,SAAiB4B,IAAQ+4B,IAAMx5B,IAAOs3E,IAAAA;AACpC,cAAA,CAAKrrD,GAASxrB,EAAAA;AACZ,mBAAOA;AAST,mBALIiE,KAAAA,IACAT,MAHJu1B,KAAOu3F,GAASv3F,IAAM/4B,EAAAA,GAGJwD,QACdwlD,KAAYxlD,KAAS,GACrB4jB,KAASpnB,IAEI,QAAVonB,MAAAA,EAAoBnjB,KAAQT,MAAQ;AACzC,gBAAI3D,KAAM0wH,GAAMx3F,GAAK90B,EAAAA,CAAAA,GACjB2R,KAAWrW;AAEf,gBAAY,gBAARM,MAA+B,kBAARA,MAAiC,gBAARA;AAClD,qBAAOG;AAGT,gBAAIiE,MAAS+kD,IAAW;AACtB,kBAAI2tC,KAAWvvE,GAAOvnB,EAAAA;AAAAA,0BACtB+V,KAAWihE,KAAaA,GAAW8f,IAAU92F,IAAKunB,EAAAA,IAAAA,YAEhDxR,KAAW4V,GAASmrE,EAAAA,IAChBA,KACCw7D,GAAQp5H,GAAK90B,KAAQ,CAAA,CAAA,IAAM,CAAA,IAAK,CAAA;YAAA;AAGzC0yE,YAAAA,GAAYvvD,IAAQvnB,IAAK+V,EAAAA,GACzBwR,KAASA,GAAOvnB,EAAAA;UAAAA;AAElB,iBAAOG;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/CT3B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;ACAzB,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAIA,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACSJ,YAAIqzE,KAAGx8L,GAAQ,CAAA,GAASrB,KAAEqB,GAAQ,GAAA,GAAiBX,KAAEW,GAAQ,GAAA;AAAa,iBAASuwB,GAAEzlB,IAAAA;AAAG,mBAAQC,KAAE,2DAAyDD,IAAElM,KAAE,GAAEA,KAAE2I,UAAU9D,QAAO7E;AAAImM,YAAAA,MAAG,aAAW4pB,mBAAmBptB,UAAU3I,EAAAA,CAAAA;AAAI,iBAAM,2BAAyBkM,KAAE,aAAWC,KAAE;QAAA;AAAiH,YAAA,CAAIyxL;AAAG,gBAAMxwL,MAAMukB,GAAE,GAAA,CAAA;AAAM,YAAIksK,KAAG,oBAAIl6L,OAAIm6L,KAAG,CAAA;AAAG,iBAASC,GAAG7xL,IAAEC,IAAAA;AAAG6xL,UAAAA,GAAG9xL,IAAEC,EAAAA,GAAG6xL,GAAG9xL,KAAE,WAAUC,EAAAA;QAAAA;AAC3e,iBAAS6xL,GAAG9xL,IAAEC,IAAAA;AAAW,eAAR2xL,GAAG5xL,EAAAA,IAAGC,IAAMD,KAAE,GAAEA,KAAEC,GAAEtH,QAAOqH;AAAI2xL,YAAAA,GAAGl6K,IAAIxX,GAAED,EAAAA,CAAAA;QAAAA;AACzD,YAAI+xL,KAAAA,EAAK,eAAA,OAAqB/hK,UAAAA,WAA6BA,OAAOgsC,YAAAA,WAA+BhsC,OAAOgsC,SAASvI,gBAAeu+H,KAAG,+VAA8VC,KAAG99L,OAAOkB,UAAUC,gBACrf48L,KAAG,CAAA,GAAGC,KAAG,CAAA;AAC+M,iBAAS3nK,GAAExqB,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAE2X,IAAAA;AAAG5+B,eAAK43L,kBAAgB,MAAInyL,MAAG,MAAIA,MAAG,MAAIA,IAAEzF,KAAK63L,gBAAct+L,IAAEyG,KAAK83L,qBAAmB78L,IAAE+E,KAAK+3L,kBAAgBz+L,IAAE0G,KAAKg4L,eAAaxyL,IAAExF,KAAKE,OAAKuF,IAAEzF,KAAKi4L,cAAYhxK,IAAEjnB,KAAKk4L,oBAAkBt5J;QAAAA;AAAE,YAAI/O,KAAE,CAAA;AACnb,+IAAuIpB,MAAM,GAAA,EAAKlkB,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,IAAE,MAAA,OAAK,KAAG;QAAA,CAAA,GAAM,CAAC,CAAC,iBAAgB,gBAAA,GAAkB,CAAC,aAAY,OAAA,GAAS,CAAC,WAAU,KAAA,GAAO,CAAC,aAAY,YAAA,CAAA,EAAe+E,QAAQ,SAAS/E,IAAAA;AAAG,cAAIC,KAAED,GAAE,CAAA;AAAGqqB,UAAAA,GAAEpqB,EAAAA,IAAG,IAAIuqB,GAAEvqB,IAAE,GAAA,OAAKD,GAAE,CAAA,GAAG,MAAA,OAAK,KAAG;QAAA,CAAA,GAAM,CAAC,mBAAkB,aAAY,cAAa,OAAA,EAAS+E,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,GAAEsmB,YAAAA,GAAc,MAAA,OAAK,KAAG;QAAA,CAAA,GACve,CAAC,eAAc,6BAA4B,aAAY,eAAA,EAAiBvhB,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,IAAE,MAAA,OAAK,KAAG;QAAA,CAAA,GAAM,8OAA8OipB,MAAM,GAAA,EAAKlkB,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,GAAEsmB,YAAAA,GAAc,MAAA,OAAK,KAAG;QAAA,CAAA,GACrb,CAAC,WAAU,YAAW,SAAQ,UAAA,EAAYvhB,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,MAAKA,IAAE,MAAA,OAAK,KAAG;QAAA,CAAA,GAAM,CAAC,WAAU,UAAA,EAAY+E,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,IAAE,MAAA,OAAK,KAAG;QAAA,CAAA,GAAM,CAAC,QAAO,QAAO,QAAO,MAAA,EAAQ+E,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,IAAE,MAAA,OAAK,KAAG;QAAA,CAAA,GAAM,CAAC,WAAU,OAAA,EAAS+E,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,GAAEsmB,YAAAA,GAAc,MAAA,OAAK,KAAG;QAAA,CAAA;AAAM,YAAIqsK,KAAG;AAAgB,iBAASC,GAAG5yL,IAAAA;AAAG,iBAAOA,GAAE,CAAA,EAAG+mC,YAAAA;QAAAA;AAI3Y,iBAAS8rJ,GAAG7yL,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAE40B,GAAE/0B,eAAe2K,EAAAA,IAAGoqB,GAAEpqB,EAAAA,IAAG;AAAA,WAAW,SAAOxK,KAAE,MAAIA,GAAEiF,OAAAA,CAAK3G,OAAO,IAAEkM,GAAEtH,WAAS,QAAMsH,GAAE,CAAA,KAAI,QAAMA,GAAE,CAAA,OAAI,QAAMA,GAAE,CAAA,KAAI,QAAMA,GAAE,CAAA,SAPnJ,SAAYD,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,gBAAG,QAAOkM,MADgG,SAAYD,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,kBAAG,SAAOD,MAAG,MAAIA,GAAE4G;AAAK,uBAAA;AAAS,sBAAA,OAAcuF,IAAAA;gBAAG,KAAK;gBAAW,KAAK;AAAS,yBAAA;gBAAS,KAAK;AAAU,yBAAA,CAAGlM,OAAc,SAAOD,KAAAA,CAASA,GAAEs+L,kBAAmD,aAAnCpyL,KAAEA,GAAEsmB,YAAAA,EAAc1wB,MAAM,GAAE,CAAA,MAAsB,YAAUoK;gBAAE;AAAQ,yBAAA;cAAM;YAAA,EAC5TA,IAAEC,IAAEnM,IAAEC,EAAAA;AAAG,qBAAA;AAAS,gBAAGA;AAAE,qBAAA;AAAS,gBAAG,SAAOD;AAAE,sBAAOA,GAAE4G,MAAAA;gBAAM,KAAK;AAAE,yBAAA,CAAOuF;gBAAE,KAAK;AAAE,yBAAA,UAAWA;gBAAE,KAAK;AAAE,yBAAOmmB,MAAMnmB,EAAAA;gBAAG,KAAK;AAAE,yBAAOmmB,MAAMnmB,EAAAA,KAAI,IAAEA;cAAAA;AAAE,mBAAA;UAAM,EAOlDA,IAAEnM,IAAE2B,IAAE1B,EAAAA,MAAKD,KAAE,OAAMC,MAAG,SAAO0B,KARpL,SAAYuK,IAAAA;AAAG,mBAAA,CAAA,CAAGiyL,GAAGr+L,KAAKu+L,IAAGnyL,EAAAA,KAAAA,CAAeiyL,GAAGr+L,KAAKs+L,IAAGlyL,EAAAA,MAAegyL,GAAGjsK,KAAK/lB,EAAAA,IAAUmyL,GAAGnyL,EAAAA,IAAAA,QAAMkyL,GAAGlyL,EAAAA,IAAAA,MAAG;UAAS,EAQyEC,EAAAA,MAAK,SAAOnM,KAAEkM,GAAE++G,gBAAgB9+G,EAAAA,IAAGD,GAAEyzG,aAAaxzG,IAAE,KAAGnM,EAAAA,KAAI2B,GAAE88L,kBAAgBvyL,GAAEvK,GAAE+8L,YAAAA,IAAc,SAAO1+L,KAAE,MAAI2B,GAAEiF,QAAQ,KAAG5G,MAAGmM,KAAExK,GAAE48L,eAAct+L,KAAE0B,GAAE68L,oBAAmB,SAAOx+L,KAAEkM,GAAE++G,gBAAgB9+G,EAAAA,KAAanM,KAAE,OAAX2B,KAAEA,GAAEiF,SAAc,MAAIjF,MAAAA,SAAQ3B,KAAE,KAAG,KAAGA,IAAEC,KAAEiM,GAAEohH,eAAertH,IAAEkM,IAAEnM,EAAAA,IAAGkM,GAAEyzG,aAAaxzG,IAAEnM,EAAAA;QAAAA;AAH5d,kkCAA0jCm1B,MAAM,GAAA,EAAKlkB,QAAQ,SAAS/E,IAAAA;AAAG,cAAIC,KAAED,GAAE2jB,QAAQgvK,IACzmCC,EAAAA;AAAIvoK,UAAAA,GAAEpqB,EAAAA,IAAG,IAAIuqB,GAAEvqB,IAAE,GAAA,OAAKD,IAAE,MAAA,OAAK,KAAG;QAAA,CAAA,GAAM,2EAA2EipB,MAAM,GAAA,EAAKlkB,QAAQ,SAAS/E,IAAAA;AAAG,cAAIC,KAAED,GAAE2jB,QAAQgvK,IAAGC,EAAAA;AAAIvoK,UAAAA,GAAEpqB,EAAAA,IAAG,IAAIuqB,GAAEvqB,IAAE,GAAA,OAAKD,IAAE,gCAAA,OAA+B,KAAG;QAAA,CAAA,GAAM,CAAC,YAAW,YAAW,WAAA,EAAa+E,QAAQ,SAAS/E,IAAAA;AAAG,cAAIC,KAAED,GAAE2jB,QAAQgvK,IAAGC,EAAAA;AAAIvoK,UAAAA,GAAEpqB,EAAAA,IAAG,IAAIuqB,GAAEvqB,IAAE,GAAA,OAAKD,IAAE,wCAAA,OAAuC,KAAG;QAAA,CAAA,GAAM,CAAC,YAAW,aAAA,EAAe+E,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,GAAEsmB,YAAAA,GAAc,MAAA,OAAK,KAAG;QAAA,CAAA,GAC/c+D,GAAEstG,YAAU,IAAIntG,GAAE,aAAY,GAAA,OAAK,cAAa,gCAAA,MAA+B,KAAG,GAAI,CAAC,OAAM,QAAO,UAAS,YAAA,EAAczlB,QAAQ,SAAS/E,IAAAA;AAAGqqB,UAAAA,GAAErqB,EAAAA,IAAG,IAAIwqB,GAAExqB,IAAE,GAAA,OAAKA,GAAEsmB,YAAAA,GAAc,MAAA,MAAK,IAAG;QAAA,CAAA;AAEzL,YAAIwsK,KAAGpB,GAAGjb,oDAAmDsc,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,IAAG,OAAMC,KAAG,OAAMC,KAAG,OAAMC,KAAG;AAChN,YAAG,cAAA,OAAoBv/L,UAAQA,OAAO60K,KAAI;AAAC,cAAIpnJ,KAAEztB,OAAO60K;AAAI0pB,UAAAA,KAAG9wK,GAAE,eAAA,GAAiB+wK,KAAG/wK,GAAE,cAAA,GAAgBgxK,KAAGhxK,GAAE,gBAAA,GAAkBixK,KAAGjxK,GAAE,mBAAA,GAAqBkxK,KAAGlxK,GAAE,gBAAA,GAAkBmxK,KAAGnxK,GAAE,gBAAA,GAAkBoxK,KAAGpxK,GAAE,eAAA,GAAiBqxK,KAAGrxK,GAAE,mBAAA,GAAqBsxK,KAAGtxK,GAAE,gBAAA,GAAkBuxK,KAAGvxK,GAAE,qBAAA,GAAuBwxK,KAAGxxK,GAAE,YAAA,GAAcyxK,KAAGzxK,GAAE,YAAA,GAAc0xK,KAAG1xK,GAAE,aAAA,GAAeA,GAAE,aAAA,GAAe2xK,IAAG3xK,GAAE,iBAAA,GAAmB4xK,KAAG5xK,GAAE,wBAAA,GAA0B6xK,KAAG7xK,GAAE,iBAAA,GAAmB8xK,KAAG9xK,GAAE,qBAAA;QAAA;AACxc,YAAmL+xK,IAA/KC,KAAG,cAAA,OAAoBz/L,UAAQA,OAAO2F;AAAS,iBAAS+5L,GAAGl0L,IAAAA;AAAG,iBAAG,SAAOA,MAAG,YAAA,OAAkBA,KAAS,OAAwC,cAAA,QAAnCA,KAAEi0L,MAAIj0L,GAAEi0L,EAAAA,KAAKj0L,GAAE,YAAA,KAA0CA,KAAE;QAAA;AAAY,iBAASm0L,GAAGn0L,IAAAA;AAAG,cAAA,WAAYg0L;AAAG,gBAAA;AAAI,oBAAM9yL,MAAAA;YAAAA,SAAepN,IAAN;AAAS,kBAAImM,KAAEnM,GAAE0Y,MAAMq5C,KAAAA,EAAOx+B,MAAM,cAAA;AAAgB2sK,cAAAA,KAAG/zL,MAAGA,GAAE,CAAA,KAAI;YAAA;AAAG,iBAAM,OAAK+zL,KAAGh0L;QAAAA;AAAE,YAAIo0L,KAAAA;AAC9T,iBAASC,GAAGr0L,IAAEC,IAAAA;AAAG,cAAA,CAAID,MAAGo0L;AAAG,mBAAM;AAAGA,UAAAA,KAAAA;AAAM,cAAItgM,KAAEoN,MAAMozL;AAAkBpzL,gBAAMozL,oBAAAA;AAAyB,cAAA;AAAI,gBAAGr0L;AAAE,kBAAGA,KAAE,WAAA;AAAW,sBAAMiB,MAAAA;cAAAA,GAAU/M,OAAOC,eAAe6L,GAAE5K,WAAU,SAAQ,EAAC6O,KAAI,WAAA;AAAW,sBAAMhD,MAAAA;cAAAA,EAAAA,CAAAA,GAAY,YAAA,OAAkBy5D,WAASA,QAAQttB,WAAU;AAAC,oBAAA;AAAIstB,0BAAQttB,UAAUptC,IAAE,CAAA,CAAA;gBAAA,SAAUtF,IAAN;AAAS,sBAAI5G,KAAE4G;gBAAAA;AAAEggE,wBAAQttB,UAAUrtC,IAAE,CAAA,GAAGC,EAAAA;cAAAA,OAAO;AAAC,oBAAA;AAAIA,kBAAAA,GAAErM,KAAAA;gBAAAA,SAAa+G,IAAN;AAAS5G,kBAAAA,KAAE4G;gBAAAA;AAAEqF,gBAAAA,GAAEpM,KAAKqM,GAAE5K,SAAAA;cAAAA;iBAAe;AAAC,kBAAA;AAAI,sBAAM6L,MAAAA;cAAAA,SAAevG,IAAN;AAAS5G,gBAAAA,KAAE4G;cAAAA;AAAEqF,cAAAA,GAAAA;YAAAA;UAAAA,SAAWrF,IAAN;AAAS,gBAAGA,MAAG5G,MAAG,YAAA,OAAkB4G,GAAE6R,OAAM;AAAC,uBAAQ/W,KAAEkF,GAAE6R,MAAMyc,MAAM,IAAA,GACnfxH,KAAE1tB,GAAEyY,MAAMyc,MAAM,IAAA,GAAMmQ,KAAE3jC,GAAEkD,SAAO,GAAEoK,KAAE0e,GAAE9oB,SAAO,GAAE,KAAGygC,MAAG,KAAGr2B,MAAGtN,GAAE2jC,EAAAA,MAAK3X,GAAE1e,EAAAA;AAAIA,gBAAAA;AAAI,qBAAK,KAAGq2B,MAAG,KAAGr2B,IAAEq2B,MAAIr2B;AAAI,oBAAGtN,GAAE2jC,EAAAA,MAAK3X,GAAE1e,EAAAA,GAAG;AAAC,sBAAG,MAAIq2B,MAAG,MAAIr2B;AAAG,uBAAA;AAAA,0BAAMq2B,MAAQ,IAAA,EAAJr2B,MAAStN,GAAE2jC,EAAAA,MAAK3X,GAAE1e,EAAAA;AAAG,+BAAM,OAAKtN,GAAE2jC,EAAAA,EAAGzV,QAAQ,YAAW,MAAA;oBAAA,SAAc,KAAGyV,MAAG,KAAGr2B;AAAG;gBAAA;YAAA;UAAA,UAAQ;AAAQqxL,YAAAA,KAAAA,OAAMlzL,MAAMozL,oBAAkBxgM;UAAAA;AAAE,kBAAOkM,KAAEA,KAAEA,GAAE+xE,eAAa/xE,GAAEhM,OAAK,MAAImgM,GAAGn0L,EAAAA,IAAG;QAAA;AAC7T,iBAASu0L,GAAGv0L,IAAAA;AAAG,kBAAOA,GAAEmtC,KAAAA;YAAK,KAAK;AAAE,qBAAOgnJ,GAAGn0L,GAAEtF,IAAAA;YAAM,KAAK;AAAG,qBAAOy5L,GAAG,MAAA;YAAQ,KAAK;AAAG,qBAAOA,GAAG,UAAA;YAAY,KAAK;AAAG,qBAAOA,GAAG,cAAA;YAAgB,KAAK;YAAE,KAAK;YAAE,KAAK;AAAG,qBAAOn0L,KAAEq0L,GAAGr0L,GAAEtF,MAAAA,KAAK;YAAM,KAAK;AAAG,qBAAOsF,KAAEq0L,GAAGr0L,GAAEtF,KAAKmlF,QAAAA,KAAO;YAAM,KAAK;AAAG,qBAAO7/E,KAAEq0L,GAAGr0L,GAAEtF,KAAK85L,SAAAA,KAAQ;YAAM,KAAK;AAAE,qBAAOx0L,KAAEq0L,GAAGr0L,GAAEtF,MAAAA,IAAK;YAAM;AAAQ,qBAAM;UAAA;QAAA;AAC9T,iBAAS+5L,GAAGz0L,IAAAA;AAAG,cAAG,QAAMA;AAAE,mBAAO;AAAK,cAAG,cAAA,OAAoBA;AAAE,mBAAOA,GAAE+xE,eAAa/xE,GAAEhM,QAAM;AAAK,cAAG,YAAA,OAAkBgM;AAAE,mBAAOA;AAAE,kBAAOA,IAAAA;YAAG,KAAKizL;AAAG,qBAAM;YAAW,KAAKD;AAAG,qBAAM;YAAS,KAAKG;AAAG,qBAAM;YAAW,KAAKD;AAAG,qBAAM;YAAa,KAAKK;AAAG,qBAAM;YAAW,KAAKC;AAAG,qBAAM;UAAA;AAAe,cAAG,YAAA,OAAkBxzL;AAAE,oBAAOA,GAAEmpK,UAAAA;cAAU,KAAKkqB;AAAG,wBAAOrzL,GAAE+xE,eAAa,aAAW;cAAY,KAAKqhH;AAAG,wBAAOpzL,GAAE0zB,SAASq+C,eAAa,aAAW;cAAY,KAAKuhH;AAAG,oBAAIrzL,KAAED,GAAE6/E;AACnd,uBAD0d5/E,KAAEA,GAAE8xE,eAAa9xE,GAAEjM,QAAM,IAC5egM,GAAE+xE,gBAAc,OAAK9xE,KAAE,gBAAcA,KAAE,MAAI;cAAc,KAAKwzL;AAAG,uBAAOgB,GAAGz0L,GAAEtF,IAAAA;cAAM,KAAKi5L;AAAG,uBAAOc,GAAGz0L,GAAEw0L,OAAAA;cAAS,KAAKd;AAAGzzL,gBAAAA,KAAED,GAAEk3K,UAASl3K,KAAEA,GAAEm3K;AAAM,oBAAA;AAAI,yBAAOsd,GAAGz0L,GAAEC,EAAAA,CAAAA;gBAAAA,SAAUnM,IAAN;gBAAMA;YAAAA;AAAK,iBAAO;QAAA;AAAK,iBAAS4gM,GAAG10L,IAAAA;AAAG,kBAAA,OAAcA,IAAAA;YAAG,KAAK;YAAU,KAAK;YAAS,KAAK;YAAS,KAAK;YAAS,KAAK;AAAY,qBAAOA;YAAE;AAAQ,qBAAM;UAAA;QAAA;AAAI,iBAAS20L,EAAG30L,IAAAA;AAAG,cAAIC,KAAED,GAAEtF;AAAK,kBAAOsF,KAAEA,GAAEggH,aAAW,YAAUhgH,GAAEsmB,YAAAA,MAAgB,eAAarmB,MAAG,YAAUA;QAAAA;AAE1Z,iBAAS20L,GAAG50L,IAAAA;AAAGA,UAAAA,GAAE60L,kBAAgB70L,GAAE60L,gBADvD,SAAY70L,IAAAA;AAAG,gBAAIC,KAAE00L,EAAG30L,EAAAA,IAAG,YAAU,SAAQlM,KAAEK,OAAO65B,yBAAyBhuB,GAAEhK,YAAYX,WAAU4K,EAAAA,GAAGlM,KAAE,KAAGiM,GAAEC,EAAAA;AAAG,gBAAA,CAAID,GAAE1K,eAAe2K,EAAAA,KAAAA,WAAyBnM,MAAG,cAAA,OAAoBA,GAAEQ,OAAK,cAAA,OAAoBR,GAAEoQ,KAAI;AAAC,kBAAIzO,KAAE3B,GAAEQ,KAAImtB,KAAE3tB,GAAEoQ;AAAiL,qBAA7K/P,OAAOC,eAAe4L,IAAEC,IAAE,EAAC0f,cAAAA,MAAgBrrB,KAAI,WAAA;AAAW,uBAAOmB,GAAE7B,KAAK4G,IAAAA;cAAAA,GAAO0J,KAAI,SAASlE,IAAAA;AAAGjM,gBAAAA,KAAE,KAAGiM,IAAEyhB,GAAE7tB,KAAK4G,MAAKwF,EAAAA;cAAAA,EAAAA,CAAAA,GAAM7L,OAAOC,eAAe4L,IAAEC,IAAE,EAAC5L,YAAWP,GAAEO,WAAAA,CAAAA,GAAmB,EAAC2pE,UAAS,WAAA;AAAW,uBAAOjqE;cAAAA,GAAG+gM,UAAS,SAAS90L,IAAAA;AAAGjM,gBAAAA,KAAE,KAAGiM;cAAAA,GAAG+0L,cAAa,WAAA;AAAW/0L,gBAAAA,GAAE60L,gBACxf,MAAA,OAAY70L,GAAEC,EAAAA;cAAAA,EAAAA;YAAAA;UAAAA,EAA0DD,EAAAA;QAAAA;AAAI,iBAASg1L,GAAGh1L,IAAAA;AAAG,cAAA,CAAIA;AAAE,mBAAA;AAAS,cAAIC,KAAED,GAAE60L;AAAc,cAAA,CAAI50L;AAAE,mBAAA;AAAS,cAAInM,KAAEmM,GAAE+9D,SAAAA,GAAejqE,KAAE;AAAqD,iBAAlDiM,OAAIjM,KAAE4gM,EAAG30L,EAAAA,IAAGA,GAAEokE,UAAQ,SAAO,UAAQpkE,GAAEtL,SAAOsL,KAAEjM,QAAaD,OAAGmM,GAAE60L,SAAS90L,EAAAA,GAAAA;QAAG;AAAO,iBAASi1L,GAAGj1L,IAAAA;AAAwD,cAAA,YAArDA,KAAEA,OAAI,eAAA,OAAqBg8D,WAASA,WAAAA;AAA2C,mBAAO;AAAK,cAAA;AAAI,mBAAOh8D,GAAEk1L,iBAAel1L,GAAEyqD;UAAAA,SAAWxqD,IAAN;AAAS,mBAAOD,GAAEyqD;UAAAA;QAAAA;AAC/Z,iBAAS0qI,GAAGn1L,IAAEC,IAAAA;AAAG,cAAInM,KAAEmM,GAAEmkE;AAAQ,iBAAOvwE,GAAE,CAAA,GAAGoM,IAAE,EAACm1L,gBAAAA,QAAsBp9J,cAAAA,QAAoBtjC,OAAAA,QAAa0vE,SAAQ,QAAMtwE,KAAEA,KAAEkM,GAAEq1L,cAAcC,eAAAA,CAAAA;QAAAA;AAAiB,iBAASC,GAAGv1L,IAAEC,IAAAA;AAAG,cAAInM,KAAE,QAAMmM,GAAE+3B,eAAa,KAAG/3B,GAAE+3B,cAAajkC,KAAE,QAAMkM,GAAEmkE,UAAQnkE,GAAEmkE,UAAQnkE,GAAEm1L;AAAethM,UAAAA,KAAE4gM,GAAG,QAAMz0L,GAAEvL,QAAMuL,GAAEvL,QAAMZ,EAAAA,GAAGkM,GAAEq1L,gBAAc,EAACC,gBAAevhM,IAAEw0F,cAAaz0F,IAAE0hM,YAAW,eAAav1L,GAAEvF,QAAM,YAAUuF,GAAEvF,OAAK,QAAMuF,GAAEmkE,UAAQ,QAAMnkE,GAAEvL,MAAAA;QAAAA;AAAO,iBAAS+gM,GAAGz1L,IAAEC,IAAAA;AAAe,mBAAZA,KAAEA,GAAEmkE,YAAiByuH,GAAG7yL,IAAE,WAAUC,IAAAA,KAAE;QAAA;AAC3d,iBAASy1L,GAAG11L,IAAEC,IAAAA;AAAGw1L,aAAGz1L,IAAEC,EAAAA;AAAG,cAAInM,KAAE4gM,GAAGz0L,GAAEvL,KAAAA,GAAOX,KAAEkM,GAAEvF;AAAK,cAAG,QAAM5G;AAAK,yBAAWC,MAAM,MAAID,MAAG,OAAKkM,GAAEtL,SAAOsL,GAAEtL,SAAOZ,QAAEkM,GAAEtL,QAAM,KAAGZ,MAAOkM,GAAEtL,UAAQ,KAAGZ,OAAIkM,GAAEtL,QAAM,KAAGZ;mBAAW,aAAWC,MAAG,YAAUA;AAA8B,mBAAA,KAA3BiM,GAAE++G,gBAAgB,OAAA;AAAgB9+G,UAAAA,GAAE3K,eAAe,OAAA,IAASqgM,GAAG31L,IAAEC,GAAEvF,MAAK5G,EAAAA,IAAGmM,GAAE3K,eAAe,cAAA,KAAiBqgM,GAAG31L,IAAEC,GAAEvF,MAAKg6L,GAAGz0L,GAAE+3B,YAAAA,CAAAA,GAAe,QAAM/3B,GAAEmkE,WAAS,QAAMnkE,GAAEm1L,mBAAiBp1L,GAAEo1L,iBAAAA,CAAAA,CAAiBn1L,GAAEm1L;QAAAA;AACnZ,iBAAStuJ,GAAG9mC,IAAEC,IAAEnM,IAAAA;AAAG,cAAGmM,GAAE3K,eAAe,OAAA,KAAU2K,GAAE3K,eAAe,cAAA,GAAgB;AAAC,gBAAIvB,KAAEkM,GAAEvF;AAAK,gBAAA,EAAK,aAAW3G,MAAG,YAAUA,MAAAA,WAAYkM,GAAEvL,SAAO,SAAOuL,GAAEvL;AAAO;AAAOuL,YAAAA,KAAE,KAAGD,GAAEq1L,cAAc9sG,cAAaz0F,MAAGmM,OAAID,GAAEtL,UAAQsL,GAAEtL,QAAMuL,KAAGD,GAAEg4B,eAAa/3B;UAAAA;AAAW,kBAATnM,KAAEkM,GAAEhM,UAAcgM,GAAEhM,OAAK,KAAIgM,GAAEo1L,iBAAAA,CAAAA,CAAiBp1L,GAAEq1L,cAAcC,gBAAe,OAAKxhM,OAAIkM,GAAEhM,OAAKF;QAAAA;AACvV,iBAAS6hM,GAAG31L,IAAEC,IAAEnM,IAAAA;AAAM,uBAAWmM,MAAGg1L,GAAGj1L,GAAEm6G,aAAAA,MAAiBn6G,OAAE,QAAMlM,KAAEkM,GAAEg4B,eAAa,KAAGh4B,GAAEq1L,cAAc9sG,eAAavoF,GAAEg4B,iBAAe,KAAGlkC,OAAIkM,GAAEg4B,eAAa,KAAGlkC;QAAAA;AAAwF,iBAAS8hM,GAAG51L,IAAEC,IAAAA;AAA6D,iBAA1DD,KAAEnM,GAAE,EAACkgE,UAAAA,OAAS,GAAQ9zD,EAAAA,IAAMA,KAAlI,SAAYD,IAAAA;AAAG,gBAAIC,KAAE;AAAuD,mBAApDyxL,GAAGnb,SAASxxK,QAAQ/E,IAAE,SAASA,IAAAA;AAAG,sBAAMA,OAAIC,MAAGD;YAAAA,CAAAA,GAAYC;UAAAA,EAAoDA,GAAE8zD,QAAAA,OAAU/zD,GAAE+zD,WAAS9zD,KAASD;QAAAA;AACvU,iBAAS61L,GAAG71L,IAAEC,IAAEnM,IAAEC,IAAAA;AAAe,cAAZiM,KAAEA,GAAEwuB,SAAWvuB,IAAE;AAACA,YAAAA,KAAE,CAAA;AAAG,qBAAQxK,KAAE,GAAEA,KAAE3B,GAAE6E,QAAOlD;AAAIwK,cAAAA,GAAE,MAAInM,GAAE2B,EAAAA,CAAAA,IAAAA;AAAO,iBAAI3B,KAAE,GAAEA,KAAEkM,GAAErH,QAAO7E;AAAI2B,cAAAA,KAAEwK,GAAE3K,eAAe,MAAI0K,GAAElM,EAAAA,EAAGY,KAAAA,GAAOsL,GAAElM,EAAAA,EAAG2sI,aAAWhrI,OAAIuK,GAAElM,EAAAA,EAAG2sI,WAAShrI,KAAGA,MAAG1B,OAAIiM,GAAElM,EAAAA,EAAGgiM,kBAAAA;UAAgB,OAAQ;AAAmB,iBAAlBhiM,KAAE,KAAG4gM,GAAG5gM,EAAAA,GAAGmM,KAAE,MAASxK,KAAE,GAAEA,KAAEuK,GAAErH,QAAOlD,MAAI;AAAC,kBAAGuK,GAAEvK,EAAAA,EAAGf,UAAQZ;AAAiD,uBAA9CkM,GAAEvK,EAAAA,EAAGgrI,WAAAA,MAAS,MAAG1sI,OAAIiM,GAAEvK,EAAAA,EAAGqgM,kBAAAA;AAA2B,uBAAO71L,MAAGD,GAAEvK,EAAAA,EAAG6sI,aAAWriI,KAAED,GAAEvK,EAAAA;YAAAA;AAAI,qBAAOwK,OAAIA,GAAEwgI,WAAAA;UAAS;QAAA;AACpY,iBAASs1D,GAAG/1L,IAAEC,IAAAA;AAAG,cAAG,QAAMA,GAAEozG;AAAwB,kBAAMnyG,MAAMukB,GAAE,EAAA,CAAA;AAAK,iBAAO5xB,GAAE,CAAA,GAAGoM,IAAE,EAACvL,OAAAA,QAAasjC,cAAAA,QAAoB+7B,UAAS,KAAG/zD,GAAEq1L,cAAc9sG,aAAAA,CAAAA;QAAAA;AAAe,iBAASytG,GAAGh2L,IAAEC,IAAAA;AAAG,cAAInM,KAAEmM,GAAEvL;AAAM,cAAG,QAAMZ,IAAE;AAA+B,gBAA9BA,KAAEmM,GAAE8zD,UAAS9zD,KAAEA,GAAE+3B,cAAgB,QAAMlkC,IAAE;AAAC,kBAAG,QAAMmM;AAAE,sBAAMiB,MAAMukB,GAAE,EAAA,CAAA;AAAK,kBAAG9vB,MAAM4I,QAAQzK,EAAAA,GAAG;AAAC,oBAAA,EAAK,KAAGA,GAAE6E;AAAQ,wBAAMuI,MAAMukB,GAAE,EAAA,CAAA;AAAK3xB,gBAAAA,KAAEA,GAAE,CAAA;cAAA;AAAGmM,cAAAA,KAAEnM;YAAAA;AAAE,oBAAMmM,OAAIA,KAAE,KAAInM,KAAEmM;UAAAA;AAAED,UAAAA,GAAEq1L,gBAAc,EAAC9sG,cAAamsG,GAAG5gM,EAAAA,EAAAA;QAAAA;AAC/Y,iBAASmiM,GAAGj2L,IAAEC,IAAAA;AAAG,cAAInM,KAAE4gM,GAAGz0L,GAAEvL,KAAAA,GAAOX,KAAE2gM,GAAGz0L,GAAE+3B,YAAAA;AAAc,kBAAMlkC,QAAIA,KAAE,KAAGA,QAAMkM,GAAEtL,UAAQsL,GAAEtL,QAAMZ,KAAG,QAAMmM,GAAE+3B,gBAAch4B,GAAEg4B,iBAAelkC,OAAIkM,GAAEg4B,eAAalkC,MAAI,QAAMC,OAAIiM,GAAEg4B,eAAa,KAAGjkC;QAAAA;AAAG,iBAASmiM,GAAGl2L,IAAAA;AAAG,cAAIC,KAAED,GAAEigH;AAAYhgH,UAAAA,OAAID,GAAEq1L,cAAc9sG,gBAAc,OAAKtoF,MAAG,SAAOA,OAAID,GAAEtL,QAAMuL;QAAAA;AAAG,YAAIk2L,KAAS,gCAATA,KAAwF;AAC9X,iBAASC,GAAGp2L,IAAAA;AAAG,kBAAOA,IAAAA;YAAG,KAAK;AAAM,qBAAM;YAA6B,KAAK;AAAO,qBAAM;YAAqC;AAAQ,qBAAM;UAAA;QAAA;AAAgC,iBAASq2L,GAAGr2L,IAAEC,IAAAA;AAAG,iBAAO,QAAMD,MAAG,mCAAiCA,KAAEo2L,GAAGn2L,EAAAA,IAAG,iCAA+BD,MAAG,oBAAkBC,KAAE,iCAA+BD;QAAAA;AAC3U,YAAIguJ,IAAehuJ,IAAZs2L,MAAYt2L,KAAsJ,SAASA,IAAEC,IAAAA;AAAG,cAAGD,GAAEs+G,iBAAe63E,MAAQ,eAAcn2L;AAAEA,YAAAA,GAAEmuF,YAAUluF;eAAM;AAA2F,kBAA1F+tJ,KAAGA,MAAIhyF,SAASvI,cAAc,KAAA,GAAU06B,YAAU,UAAQluF,GAAEJ,QAAAA,EAAU3D,SAAAA,IAAW,UAAa+D,KAAE+tJ,GAAGnsC,YAAW7hH,GAAE6hH;AAAY7hH,cAAAA,GAAE2+G,YAAY3+G,GAAE6hH,UAAAA;AAAY,mBAAK5hH,GAAE4hH;AAAY7hH,cAAAA,GAAEk8D,YAAYj8D,GAAE4hH,UAAAA;UAAAA;QAAAA,GAArZ,eAAA,OAAqB00E,SAAOA,MAAMC,0BAAwB,SAASv2L,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG8gM,gBAAMC,wBAAwB,WAAA;AAAW,mBAAOx2L,GAAEC,IAAEnM,EAAAA;UAAAA,CAAAA;QAAAA,IAAUkM;AACtK,iBAASy2L,GAAGz2L,IAAEC,IAAAA;AAAG,cAAGA,IAAE;AAAC,gBAAInM,KAAEkM,GAAE6hH;AAAW,gBAAG/tH,MAAGA,OAAIkM,GAAE02L,aAAW,MAAI5iM,GAAEuQ;AAAwB,qBAAA,MAAdvQ,GAAE6iM,YAAU12L;UAAAA;AAAUD,UAAAA,GAAEigH,cAAYhgH;QAAAA;AACrH,YAAI22L,KAAG,EAACC,yBAAAA,MAA2BC,mBAAAA,MAAqBC,kBAAAA,MAAoBC,kBAAAA,MAAoBC,SAAAA,MAAWC,cAAAA,MAAgBC,iBAAAA,MAAmBC,aAAAA,MAAeC,SAAAA,MAAWC,MAAAA,MAAQC,UAAAA,MAAYC,cAAAA,MAAgBC,YAAAA,MAAcC,cAAAA,MAAgBC,WAAAA,MAAaC,UAAAA,MAAYC,SAAAA,MAAWC,YAAAA,MAAcC,aAAAA,MAAeC,cAAAA,MAAgBC,YAAAA,MAAcC,eAAAA,MAAiBC,gBAAAA,MAAkBC,iBAAAA,MAAmBC,YAAAA,MAAcC,WAAAA,MAAaliE,YAAAA,MAAcmiE,SAAAA,MAAW5nG,OAAAA,MAAS6nG,SAAAA,MAAWC,SAAAA,MAAWC,QAAAA,MAAU3hE,QAAAA,MAAU4hE,MAAAA,MAAQC,aAAAA,MAC9eC,cAAAA,MAAgBC,aAAAA,MAAeC,iBAAAA,MAAmBC,kBAAAA,MAAoBC,kBAAAA,MAAoBC,eAAAA,MAAiBC,aAAAA,KAAY,GAAIC,KAAG,CAAC,UAAS,MAAK,OAAM,GAAA;AAA6H,iBAASC,GAAGr5L,IAAEC,IAAEnM,IAAAA;AAAG,iBAAO,QAAMmM,MAAG,aAAA,OAAmBA,MAAG,OAAKA,KAAE,KAAGnM,MAAG,YAAA,OAAkBmM,MAAG,MAAIA,MAAG22L,GAAGthM,eAAe0K,EAAAA,KAAI42L,GAAG52L,EAAAA,KAAI,KAAGC,IAAG4lD,KAAAA,IAAO5lD,KAAE;QAAA;AAC9Z,iBAASq5L,GAAGt5L,IAAEC,IAAAA;AAAa,mBAAQnM,MAAlBkM,KAAEA,GAAE4tC,OAAmB3tC;AAAE,gBAAGA,GAAE3K,eAAexB,EAAAA,GAAG;AAAC,kBAAIC,KAAE,MAAID,GAAEsO,QAAQ,IAAA,GAAM3M,KAAE4jM,GAAGvlM,IAAEmM,GAAEnM,EAAAA,GAAGC,EAAAA;AAAG,0BAAUD,OAAIA,KAAE,aAAYC,KAAEiM,GAAEu5L,YAAYzlM,IAAE2B,EAAAA,IAAGuK,GAAElM,EAAAA,IAAG2B;YAAAA;QAAAA;AADTtB,eAAO0J,KAAK+4L,EAAAA,EAAI7xL,QAAQ,SAAS/E,IAAAA;AAAGo5L,aAAGr0L,QAAQ,SAAS9E,IAAAA;AAAGA,YAAAA,KAAEA,KAAED,GAAE2xC,OAAO,CAAA,EAAG5K,YAAAA,IAAc/mC,GAAEymC,UAAU,CAAA,GAAGmwJ,GAAG32L,EAAAA,IAAG22L,GAAG52L,EAAAA;UAAAA,CAAAA;QAAAA,CAAAA;AACrG,YAAIw5L,KAAG3lM,GAAE,EAAC4lM,UAAAA,KAAS,GAAI,EAACC,MAAAA,MAAQ9mI,MAAAA,MAAQ+mI,IAAAA,MAAMC,KAAAA,MAAOC,OAAAA,MAASzpG,IAAAA,MAAMvC,KAAAA,MAAOziE,OAAAA,MAAS0uK,QAAAA,MAAUpkG,MAAAA,MAAQnmC,MAAAA,MAAQ/oC,OAAAA,MAASiI,QAAAA,MAAUsrK,OAAAA,MAASC,KAAAA,KAAI,CAAA;AAClT,iBAASC,GAAGj6L,IAAEC,IAAAA;AAAG,cAAGA,IAAE;AAAC,gBAAGu5L,GAAGx5L,EAAAA,MAAK,QAAMC,GAAE8zD,YAAU,QAAM9zD,GAAEozG;AAAyB,oBAAMnyG,MAAMukB,GAAE,KAAIzlB,EAAAA,CAAAA;AAAI,gBAAG,QAAMC,GAAEozG,yBAAwB;AAAC,kBAAG,QAAMpzG,GAAE8zD;AAAS,sBAAM7yD,MAAMukB,GAAE,EAAA,CAAA;AAAK,kBAAK,YAAA,OAAkBxlB,GAAEozG,2BAAAA,EAAyB,YAAWpzG,GAAEozG;AAAyB,sBAAMnyG,MAAMukB,GAAE,EAAA,CAAA;YAAA;AAAM,gBAAG,QAAMxlB,GAAE2tC,SAAO,YAAA,OAAkB3tC,GAAE2tC;AAAM,oBAAM1sC,MAAMukB,GAAE,EAAA,CAAA;UAAA;QAAA;AAC5V,iBAASy0K,GAAGl6L,IAAEC,IAAAA;AAAG,cAAA,OAAQD,GAAEoC,QAAQ,GAAA;AAAK,mBAAM,YAAA,OAAkBnC,GAAEP;AAAG,kBAAOM,IAAAA;YAAG,KAAK;YAAiB,KAAK;YAAgB,KAAK;YAAY,KAAK;YAAgB,KAAK;YAAgB,KAAK;YAAmB,KAAK;YAAiB,KAAK;AAAgB,qBAAA;YAAS;AAAQ,qBAAA;UAAM;QAAA;AAAI,iBAASm6L,GAAGn6L,IAAAA;AAA6F,kBAA1FA,KAAEA,GAAEggB,UAAQhgB,GAAEo6L,cAAYpqK,QAASqqK,4BAA0Br6L,KAAEA,GAAEq6L,0BAAgC,MAAIr6L,GAAEqE,WAASrE,GAAE0+G,aAAW1+G;QAAAA;AAAE,YAAIs6L,KAAG,MAAKC,KAAG,MAAKC,KAAG;AACxb,iBAASC,GAAGz6L,IAAAA;AAAG,cAAGA,KAAE06L,GAAG16L,EAAAA,GAAG;AAAC,gBAAG,cAAA,OAAoBs6L;AAAG,oBAAMp5L,MAAMukB,GAAE,GAAA,CAAA;AAAM,gBAAIxlB,KAAED,GAAE26L;AAAU16L,YAAAA,OAAIA,KAAE26L,GAAG36L,EAAAA,GAAGq6L,GAAGt6L,GAAE26L,WAAU36L,GAAEtF,MAAKuF,EAAAA;UAAAA;QAAAA;AAAK,iBAAS46L,GAAG76L,IAAAA;AAAGu6L,eAAGC,KAAGA,GAAGpwL,KAAKpK,EAAAA,IAAGw6L,KAAG,CAACx6L,EAAAA,IAAGu6L,KAAGv6L;QAAAA;AAAE,iBAAS86L,KAAAA;AAAK,cAAGP,IAAG;AAAC,gBAAIv6L,KAAEu6L,IAAGt6L,KAAEu6L;AAAoB,gBAAjBA,KAAGD,KAAG,MAAKE,GAAGz6L,EAAAA,GAAMC;AAAE,mBAAID,KAAE,GAAEA,KAAEC,GAAEtH,QAAOqH;AAAIy6L,mBAAGx6L,GAAED,EAAAA,CAAAA;UAAAA;QAAAA;AAAK,iBAAS+6L,GAAG/6L,IAAEC,IAAAA;AAAG,iBAAOD,GAAEC,EAAAA;QAAAA;AAAG,iBAAS+6L,GAAGh7L,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,iBAAOuK,GAAEC,IAAEnM,IAAEC,IAAE0B,EAAAA;QAAAA;AAAG,iBAASwlM,KAAAA;QAAAA;AAAM,YAAIC,KAAGH,IAAGI,KAAAA,OAAMC,KAAAA;AAAM,iBAASC,KAAAA;AAAQ,mBAAOd,MAAI,SAAOC,OAAGS,GAAAA,GAAKH,GAAAA;QAAAA;AAE9Z,iBAASQ,GAAGt7L,IAAEC,IAAAA;AAAG,cAAInM,KAAEkM,GAAE26L;AAAU,cAAG,SAAO7mM;AAAE,mBAAO;AAAK,cAAIC,KAAE6mM,GAAG9mM,EAAAA;AAAG,cAAG,SAAOC;AAAE,mBAAO;AAAKD,UAAAA,KAAEC,GAAEkM,EAAAA;AAAGD;AAAE,oBAAOC,IAAAA;cAAG,KAAK;cAAU,KAAK;cAAiB,KAAK;cAAgB,KAAK;cAAuB,KAAK;cAAc,KAAK;cAAqB,KAAK;cAAc,KAAK;cAAqB,KAAK;cAAY,KAAK;cAAmB,KAAK;AAAA,iBAAgBlM,KAAAA,CAAGA,GAAEuuI,cAAqBvuI,KAAAA,EAAI,cAAbiM,KAAEA,GAAEtF,SAAuB,YAAUsF,MAAG,aAAWA,MAAG,eAAaA,MAAIA,KAAAA,CAAGjM;AAAE,sBAAMiM;cAAE;AAAQA,gBAAAA,KAAAA;YAAE;AAAG,cAAGA;AAAE,mBAAO;AAAK,cAAGlM,MAAG,cAAA,OACleA;AAAE,kBAAMoN,MAAMukB,GAAE,KAAIxlB,IAAAA,OAASnM,EAAAA,CAAAA;AAAI,iBAAOA;QAAAA;AAAE,YAAIynM,KAAAA;AAAM,YAAGxJ;AAAG,cAAA;AAAI,gBAAIyJ,KAAG,CAAA;AAAGrnM,mBAAOC,eAAeonM,IAAG,WAAU,EAAClnM,KAAI,WAAA;AAAWinM,mBAAAA;YAAG,EAAA,CAAA,GAAMvrK,OAAO63F,iBAAiB,QAAO2zE,IAAGA,EAAAA,GAAIxrK,OAAO+3F,oBAAoB,QAAOyzE,IAAGA,EAAAA;UAAAA,SAAUx7L,KAAN;AAASu7L,iBAAAA;UAAG;AAAG,iBAASE,GAAGz7L,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAE2X,IAAEr2B,IAAEpI,IAAAA;AAAG,cAAIjH,KAAEiC,MAAMN,UAAUO,MAAMhC,KAAK6I,WAAU,CAAA;AAAG,cAAA;AAAIwD,YAAAA,GAAEmE,MAAMtQ,IAAEJ,EAAAA;UAAAA,SAASwB,IAAN;AAASsF,iBAAKkhM,QAAQxmM,EAAAA;UAAAA;QAAAA;AAAI,YAAIymM,KAAAA,OAAMC,KAAG,MAAKC,KAAAA,OAAMC,KAAG,MAAKC,KAAG,EAACL,SAAQ,SAAS17L,IAAAA;AAAG27L,eAAAA,MAAMC,KAAG57L;QAAAA,EAAAA;AAAI,iBAASg8L,GAAGh8L,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAE2X,IAAEr2B,IAAEpI,IAAAA;AAAGghM,eAAAA,OAAMC,KAAG,MAAKH,GAAGr3L,MAAM23L,IAAGt/L,SAAAA;QAAAA;AACvV,iBAASw/L,GAAGj8L,IAAAA;AAAG,cAAIC,KAAED,IAAElM,KAAEkM;AAAE,cAAGA,GAAEk8L;AAAU,mBAAKj8L,GAAEk8L;AAAQl8L,cAAAA,KAAEA,GAAEk8L;eAAW;AAACn8L,YAAAA,KAAEC;AAAE,eAAA;AAAO,oBAAa,QAAjBA,KAAED,IAASumH,WAAczyH,KAAEmM,GAAEk8L,SAAQn8L,KAAEC,GAAEk8L;YAAAA,SAAan8L;UAAAA;AAAG,iBAAO,MAAIC,GAAEktC,MAAIr5C,KAAE;QAAA;AAAK,iBAASsoM,GAAGp8L,IAAAA;AAAG,cAAG,OAAKA,GAAEmtC,KAAI;AAAC,gBAAIltC,KAAED,GAAEq8L;AAAsE,gBAAxD,SAAOp8L,OAAkB,UAAdD,KAAEA,GAAEk8L,eAAqBj8L,KAAED,GAAEq8L,iBAAmB,SAAOp8L;AAAE,qBAAOA,GAAEq8L;UAAAA;AAAW,iBAAO;QAAA;AAAK,iBAASC,GAAGv8L,IAAAA;AAAG,cAAGi8L,GAAGj8L,EAAAA,MAAKA;AAAE,kBAAMkB,MAAMukB,GAAE,GAAA,CAAA;QAAA;AAEpS,iBAAS+2K,GAAGx8L,IAAAA;AAAW,cAAA,EAARA,KADtN,SAAYA,IAAAA;AAAG,gBAAIC,KAAED,GAAEk8L;AAAU,gBAAA,CAAIj8L,IAAE;AAAS,kBAAG,UAAXA,KAAEg8L,GAAGj8L,EAAAA;AAAe,sBAAMkB,MAAMukB,GAAE,GAAA,CAAA;AAAM,qBAAOxlB,OAAID,KAAE,OAAKA;YAAAA;AAAE,qBAAQlM,KAAEkM,IAAEjM,KAAEkM,QAAI;AAAC,kBAAIxK,KAAE3B,GAAEqoM;AAAO,kBAAG,SAAO1mM;AAAE;AAAM,kBAAIgsB,KAAEhsB,GAAEymM;AAAU,kBAAG,SAAOz6K,IAAE;AAAY,oBAAG,UAAd1tB,KAAE0B,GAAE0mM,SAAmB;AAACroM,kBAAAA,KAAEC;AAAE;gBAAA;AAAS;cAAA;AAAM,kBAAG0B,GAAEu+D,UAAQvyC,GAAEuyC,OAAM;AAAC,qBAAIvyC,KAAEhsB,GAAEu+D,OAAMvyC,MAAG;AAAC,sBAAGA,OAAI3tB;AAAE,2BAAOyoM,GAAG9mM,EAAAA,GAAGuK;AAAE,sBAAGyhB,OAAI1tB;AAAE,2BAAOwoM,GAAG9mM,EAAAA,GAAGwK;AAAEwhB,kBAAAA,KAAEA,GAAEg7K;gBAAAA;AAAQ,sBAAMv7L,MAAMukB,GAAE,GAAA,CAAA;cAAA;AAAO,kBAAG3xB,GAAEqoM,WAASpoM,GAAEooM;AAAOroM,gBAAAA,KAAE2B,IAAE1B,KAAE0tB;mBAAM;AAAC,yBAAQ2X,KAAAA,OAAKr2B,KAAEtN,GAAEu+D,OAAMjxD,MAAG;AAAC,sBAAGA,OAAIjP,IAAE;AAACslC,oBAAAA,KAAAA,MAAKtlC,KAAE2B,IAAE1B,KAAE0tB;AAAE;kBAAA;AAAM,sBAAG1e,OAAIhP,IAAE;AAACqlC,oBAAAA,KAAAA,MAAKrlC,KAAE0B,IAAE3B,KAAE2tB;AAAE;kBAAA;AAAM1e,kBAAAA,KAAEA,GAAE05L;gBAAAA;AAAQ,oBAAA,CAAIrjK,IAAE;AAAC,uBAAIr2B,KAAE0e,GAAEuyC,OAAMjxD,MAAG;AAAC,wBAAGA,OAC5fjP,IAAE;AAACslC,sBAAAA,KAAAA,MAAKtlC,KAAE2tB,IAAE1tB,KAAE0B;AAAE;oBAAA;AAAM,wBAAGsN,OAAIhP,IAAE;AAACqlC,sBAAAA,KAAAA,MAAKrlC,KAAE0tB,IAAE3tB,KAAE2B;AAAE;oBAAA;AAAMsN,oBAAAA,KAAEA,GAAE05L;kBAAAA;AAAQ,sBAAA,CAAIrjK;AAAE,0BAAMl4B,MAAMukB,GAAE,GAAA,CAAA;gBAAA;cAAA;AAAQ,kBAAG3xB,GAAEooM,cAAYnoM;AAAE,sBAAMmN,MAAMukB,GAAE,GAAA,CAAA;YAAA;AAAO,gBAAG,MAAI3xB,GAAEq5C;AAAI,oBAAMjsC,MAAMukB,GAAE,GAAA,CAAA;AAAM,mBAAO3xB,GAAE6mM,UAAU50J,YAAUjyC,KAAEkM,KAAEC;UAAAA,EAAsBD,EAAAA;AAAS,mBAAO;AAAK,mBAAQC,KAAED,QAAI;AAAC,gBAAG,MAAIC,GAAEktC,OAAK,MAAIltC,GAAEktC;AAAI,qBAAOltC;AAAE,gBAAGA,GAAE+zD;AAAM/zD,cAAAA,GAAE+zD,MAAMmoI,SAAOl8L,IAAEA,KAAEA,GAAE+zD;iBAAU;AAAC,kBAAG/zD,OAAID;AAAE;AAAM,qBAAA,CAAMC,GAAEw8L,WAAS;AAAC,oBAAA,CAAIx8L,GAAEk8L,UAAQl8L,GAAEk8L,WAASn8L;AAAE,yBAAO;AAAKC,gBAAAA,KAAEA,GAAEk8L;cAAAA;AAAOl8L,cAAAA,GAAEw8L,QAAQN,SAAOl8L,GAAEk8L,QAAOl8L,KAAEA,GAAEw8L;YAAAA;UAAAA;AAAS,iBAAO;QAAA;AAC5c,iBAASC,GAAG18L,IAAEC,IAAAA;AAAG,mBAAQnM,KAAEkM,GAAEk8L,WAAU,SAAOj8L,MAAG;AAAC,gBAAGA,OAAID,MAAGC,OAAInM;AAAE,qBAAA;AAASmM,YAAAA,KAAEA,GAAEk8L;UAAAA;AAAO,iBAAA;QAAM;AAAG,YAAIQ,IAAGC,IAAGC,IAAGC,IAAGC,KAAAA,OAAMC,KAAG,CAAA,GAAGC,KAAG,MAAK7pJ,KAAG,MAAK8pJ,KAAG,MAAKC,KAAG,oBAAIx4L,OAAIy4L,KAAG,oBAAIz4L,OAAI04L,KAAG,CAAA,GAAGC,KAAG,6PAA6Pr0K,MAAM,GAAA;AACrb,iBAASs0K,GAAGv9L,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,iBAAM,EAAC+nM,WAAUx9L,IAAEy9L,cAAax9L,IAAEy9L,kBAAmB,KAAF5pM,IAAK6pM,aAAYloM,IAAEmoM,kBAAiB,CAAC7pM,EAAAA,EAAAA;QAAAA;AAAI,iBAAS8pM,GAAG79L,IAAEC,IAAAA;AAAG,kBAAOD,IAAAA;YAAG,KAAK;YAAU,KAAK;AAAWi9L,mBAAG;AAAK;YAAM,KAAK;YAAY,KAAK;AAAY7pJ,mBAAG;AAAK;YAAM,KAAK;YAAY,KAAK;AAAW8pJ,mBAAG;AAAK;YAAM,KAAK;YAAc,KAAK;AAAaC,iBAAGtkE,OAAO54H,GAAE69L,SAAAA;AAAW;YAAM,KAAK;YAAoB,KAAK;AAAqBV,iBAAGvkE,OAAO54H,GAAE69L,SAAAA;UAAAA;QAAAA;AAC3Z,iBAASC,GAAG/9L,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAAA;AAAG,iBAAG,SAAOzhB,MAAGA,GAAE29L,gBAAcl8K,MAASzhB,KAAEu9L,GAAGt9L,IAAEnM,IAAEC,IAAE0B,IAAEgsB,EAAAA,GAAG,SAAOxhB,OAAY,UAARA,KAAEy6L,GAAGz6L,EAAAA,MAAa28L,GAAG38L,EAAAA,IAAID,OAAEA,GAAE09L,oBAAkB3pM,IAAEkM,KAAED,GAAE49L,kBAAiB,SAAOnoM,MAAAA,OAAQwK,GAAEmC,QAAQ3M,EAAAA,KAAIwK,GAAEmK,KAAK3U,EAAAA,GAAUuK;QAAAA;AAE9M,iBAASg+L,GAAGh+L,IAAAA;AAAG,cAAIC,KAAEg+L,GAAGj+L,GAAEggB,MAAAA;AAAQ,cAAG,SAAO/f,IAAE;AAAC,gBAAInM,KAAEmoM,GAAGh8L,EAAAA;AAAG,gBAAG,SAAOnM;AAAE,kBAAW,QAARmM,KAAEnM,GAAEq5C,MAAAA;AAAY,oBAAW,UAARltC,KAAEm8L,GAAGtoM,EAAAA;AAAmH,yBAAtGkM,GAAEw9L,YAAUv9L,IAAAA,KAAE68L,GAAG98L,GAAEk+L,cAAa,WAAA;AAAW3pM,oBAAAA,GAAE4pM,yBAAyBn+L,GAAEo+L,UAAS,WAAA;AAAWvB,yBAAG/oM,EAAAA;oBAAAA,CAAAA;kBAAAA,CAAAA;cAAAA,WAAuB,MAAImM,MAAGnM,GAAE6mM,UAAU0D;AAA8D,uBAAA,MAArDr+L,GAAEw9L,YAAU,MAAI1pM,GAAEq5C,MAAIr5C,GAAE6mM,UAAU2D,gBAAc;;UAAA;AAAat+L,UAAAA,GAAEw9L,YAAU;QAAA;AAC1U,iBAASe,GAAGv+L,IAAAA;AAAG,cAAG,SAAOA,GAAEw9L;AAAU,mBAAA;AAAS,mBAAQv9L,KAAED,GAAE49L,kBAAiB,IAAE39L,GAAEtH,UAAQ;AAAC,gBAAI7E,KAAE0qM,GAAGx+L,GAAEy9L,cAAaz9L,GAAE09L,kBAAiBz9L,GAAE,CAAA,GAAGD,GAAE29L,WAAAA;AAAa,gBAAG,SAAO7pM;AAAE,qBAAe,UAARmM,KAAEy6L,GAAG5mM,EAAAA,MAAa8oM,GAAG38L,EAAAA,GAAGD,GAAEw9L,YAAU1pM,IAAAA;AAAKmM,YAAAA,GAAEmJ,MAAAA;UAAAA;AAAQ,iBAAA;QAAM;AAAG,iBAASq1L,GAAGz+L,IAAEC,IAAEnM,IAAAA;AAAGyqM,aAAGv+L,EAAAA,KAAIlM,GAAE+kI,OAAO54H,EAAAA;QAAAA;AACzQ,iBAASy+L,KAAAA;AAAK,eAAI3B,KAAAA,OAAM,IAAEC,GAAGrkM,UAAQ;AAAC,gBAAIqH,KAAEg9L,GAAG,CAAA;AAAG,gBAAG,SAAOh9L,GAAEw9L,WAAU;AAAmB,wBAAlBx9L,KAAE06L,GAAG16L,GAAEw9L,SAAAA,MAAqBb,GAAG38L,EAAAA;AAAG;YAAA;AAAM,qBAAQC,KAAED,GAAE49L,kBAAiB,IAAE39L,GAAEtH,UAAQ;AAAC,kBAAI7E,KAAE0qM,GAAGx+L,GAAEy9L,cAAaz9L,GAAE09L,kBAAiBz9L,GAAE,CAAA,GAAGD,GAAE29L,WAAAA;AAAa,kBAAG,SAAO7pM,IAAE;AAACkM,gBAAAA,GAAEw9L,YAAU1pM;AAAE;cAAA;AAAMmM,cAAAA,GAAEmJ,MAAAA;YAAAA;AAAQ,qBAAOpJ,GAAEw9L,aAAWR,GAAG5zL,MAAAA;UAAAA;AAAQ,mBAAO6zL,MAAIsB,GAAGtB,EAAAA,MAAMA,KAAG,OAAM,SAAO7pJ,MAAImrJ,GAAGnrJ,EAAAA,MAAMA,KAAG,OAAM,SAAO8pJ,MAAIqB,GAAGrB,EAAAA,MAAMA,KAAG,OAAMC,GAAGp4L,QAAQ05L,EAAAA,GAAIrB,GAAGr4L,QAAQ05L,EAAAA;QAAAA;AACrZ,iBAASE,GAAG3+L,IAAEC,IAAAA;AAAGD,UAAAA,GAAEw9L,cAAYv9L,OAAID,GAAEw9L,YAAU,MAAKT,OAAKA,KAAAA,MAAMxoM,GAAEqqM,0BAA0BrqM,GAAEsqM,yBAAwBH,EAAAA;QAAAA;AACrH,iBAASI,GAAG9+L,IAAAA;AAAG,mBAASC,GAAEA,IAAAA;AAAG,mBAAO0+L,GAAG1+L,IAAED,EAAAA;UAAAA;AAAG,cAAG,IAAEg9L,GAAGrkM,QAAO;AAACgmM,eAAG3B,GAAG,CAAA,GAAGh9L,EAAAA;AAAG,qBAAQlM,KAAE,GAAEA,KAAEkpM,GAAGrkM,QAAO7E,MAAI;AAAC,kBAAIC,KAAEipM,GAAGlpM,EAAAA;AAAGC,cAAAA,GAAEypM,cAAYx9L,OAAIjM,GAAEypM,YAAU;YAAA;UAAA;AAA+F,eAAxF,SAAOP,MAAI0B,GAAG1B,IAAGj9L,EAAAA,GAAG,SAAOozC,MAAIurJ,GAAGvrJ,IAAGpzC,EAAAA,GAAG,SAAOk9L,MAAIyB,GAAGzB,IAAGl9L,EAAAA,GAAGm9L,GAAGp4L,QAAQ9E,EAAAA,GAAGm9L,GAAGr4L,QAAQ9E,EAAAA,GAAOnM,KAAE,GAAEA,KAAEupM,GAAG1kM,QAAO7E;AAAAA,aAAIC,KAAEspM,GAAGvpM,EAAAA,GAAK0pM,cAAYx9L,OAAIjM,GAAEypM,YAAU;AAAM,iBAAK,IAAEH,GAAG1kM,UAAiB,UAAR7E,KAAEupM,GAAG,CAAA,GAAYG;AAAYQ,eAAGlqM,EAAAA,GAAG,SAAOA,GAAE0pM,aAAWH,GAAGj0L,MAAAA;QAAAA;AAC/X,iBAAS21L,IAAG/+L,IAAEC,IAAAA;AAAG,cAAInM,KAAE,CAAA;AAAkF,iBAA/EA,GAAEkM,GAAEsmB,YAAAA,CAAAA,IAAermB,GAAEqmB,YAAAA,GAAcxyB,GAAE,WAASkM,EAAAA,IAAG,WAASC,IAAEnM,GAAE,QAAMkM,EAAAA,IAAG,QAAMC,IAASnM;QAAAA;AAAE,YAAIkrM,KAAG,EAACC,cAAaF,IAAG,aAAY,cAAA,GAAgBG,oBAAmBH,IAAG,aAAY,oBAAA,GAAsBI,gBAAeJ,IAAG,aAAY,gBAAA,GAAkBK,eAAcL,IAAG,cAAa,eAAA,EAAA,GAAkBM,KAAG,CAAA,GAAGC,KAAG,CAAA;AACnF,iBAASC,GAAGv/L,IAAAA;AAAG,cAAGq/L,GAAGr/L,EAAAA;AAAG,mBAAOq/L,GAAGr/L,EAAAA;AAAG,cAAA,CAAIg/L,GAAGh/L,EAAAA;AAAG,mBAAOA;AAAE,cAAYlM,IAARmM,KAAE++L,GAAGh/L,EAAAA;AAAK,eAAIlM,MAAKmM;AAAE,gBAAGA,GAAE3K,eAAexB,EAAAA,KAAIA,MAAKwrM;AAAG,qBAAOD,GAAGr/L,EAAAA,IAAGC,GAAEnM,EAAAA;AAAG,iBAAOkM;QAAAA;AAA9X+xL,QAAAA,OAAKuN,KAAGtjI,SAASvI,cAAc,KAAA,EAAO7lB,OAAM,oBAAmB5d,WAAAA,OAAgBgvK,GAAGC,aAAaO,WAAAA,OAAiBR,GAAGE,mBAAmBM,WAAAA,OAAiBR,GAAGG,eAAeK,YAAW,qBAAoBxvK,UAAAA,OAAegvK,GAAGI,cAAchpB;AACxO,YAAIqpB,KAAGF,GAAG,cAAA,GAAgBG,KAAGH,GAAG,oBAAA,GAAsBI,KAAGJ,GAAG,gBAAA,GAAkBK,KAAGL,GAAG,eAAA,GAAiBM,KAAG,oBAAIl7L,OAAIm7L,KAAG,oBAAIn7L,OAAIo7L,KAAG,CAAC,SAAQ,SAAQN,IAAG,gBAAeC,IAAG,sBAAqBC,IAAG,kBAAiB,WAAU,WAAU,kBAAiB,kBAAiB,kBAAiB,kBAAiB,WAAU,WAAU,aAAY,aAAY,SAAQ,SAAQ,SAAQ,SAAQ,qBAAoB,qBAAoB,QAAO,QAAO,cAAa,cAAa,kBAAiB,kBAAiB,aAAY,aAC/e,sBAAqB,sBAAqB,WAAU,WAAU,YAAW,YAAW,WAAU,WAAU,WAAU,WAAU,WAAU,WAAU,cAAa,cAAaC,IAAG,iBAAgB,WAAU,SAAA;AAAW,iBAASI,GAAGhgM,IAAEC,IAAAA;AAAG,mBAAQnM,KAAE,GAAEA,KAAEkM,GAAErH,QAAO7E,MAAG,GAAE;AAAC,gBAAIC,KAAEiM,GAAElM,EAAAA,GAAG2B,KAAEuK,GAAElM,KAAE,CAAA;AAAG2B,YAAAA,KAAE,QAAMA,GAAE,CAAA,EAAGsxC,YAAAA,IAActxC,GAAEG,MAAM,CAAA,IAAIkqM,GAAG57L,IAAInQ,IAAEkM,EAAAA,GAAG4/L,GAAG37L,IAAInQ,IAAE0B,EAAAA,GAAGo8L,GAAGp8L,IAAE,CAAC1B,EAAAA,CAAAA;UAAAA;QAAAA;AAAAA,SAA2BksM,GAAf1rM,GAAE2rM,cAAAA;AAAkB,YAAIzmK,KAAE;AAC/X,iBAAS0mK,GAAGngM,IAAAA;AAAG,cAAG,MAAK,IAAEA;AAAG,mBAAOy5B,KAAE,IAAG;AAAE,cAAG,MAAK,IAAEz5B;AAAG,mBAAOy5B,KAAE,IAAG;AAAE,cAAG,MAAK,IAAEz5B;AAAG,mBAAOy5B,KAAE,IAAG;AAAE,cAAIx5B,KAAE,KAAGD;AAAE,iBAAG,MAAIC,MAASw5B,KAAE,IAAGx5B,MAAK,MAAO,KAAFD,OAAay5B,KAAE,IAAG,MAAc,OAAXx5B,KAAE,MAAID,OAAkBy5B,KAAE,IAAGx5B,MAAK,MAAO,MAAFD,OAAcy5B,KAAE,GAAE,OAAgB,OAAZx5B,KAAE,OAAKD,OAAkBy5B,KAAE,GAAEx5B,MAAK,MAAO,OAAFD,OAAey5B,KAAE,GAAE,QAAoB,OAAfx5B,KAAE,UAAQD,OAAkBy5B,KAAE,GAAEx5B,MAAkB,OAAhBA,KAAE,WAASD,OAAkBy5B,KAAE,GAAEx5B,MAAO,WAAFD,MAAkBy5B,KAAE,GAAE,YAAY,MAAO,YAAFz5B,OAAoBy5B,KAAE,GAAE,aAA2B,OAAjBx5B,KAAE,YAAUD,OAAkBy5B,KAAE,GAAEx5B,MAAK,MAAK,aAAWD,OAAUy5B,KAAE,GAAE,eACjfA,KAAE,GAASz5B;QAAAA;AACX,iBAASogM,GAAGpgM,IAAEC,IAAAA;AAAG,cAAInM,KAAEkM,GAAEqgM;AAAa,cAAG,MAAIvsM;AAAE,mBAAO2lC,KAAE;AAAE,cAAI1lC,KAAE,GAAE0B,KAAE,GAAEgsB,KAAEzhB,GAAEsgM,cAAalnK,KAAEp5B,GAAEugM,gBAAex9L,KAAE/C,GAAEwgM;AAAY,cAAG,MAAI/+K;AAAE1tB,YAAAA,KAAE0tB,IAAEhsB,KAAEgkC,KAAE;mBAAyB,OAAdhY,KAAI,YAAF3tB,KAAkB;AAAC,gBAAI6G,KAAE8mB,KAAAA,CAAG2X;AAAE,kBAAIz+B,MAAG5G,KAAEosM,GAAGxlM,EAAAA,GAAGlF,KAAEgkC,MAAS,OAAL12B,MAAG0e,QAAU1tB,KAAEosM,GAAGp9L,EAAAA,GAAGtN,KAAEgkC;UAAAA;AAAgB,mBAAPhY,KAAE3tB,KAAAA,CAAGslC,OAASrlC,KAAEosM,GAAG1+K,EAAAA,GAAGhsB,KAAEgkC,MAAG,MAAI12B,OAAIhP,KAAEosM,GAAGp9L,EAAAA,GAAGtN,KAAEgkC;AAAG,cAAG,MAAI1lC;AAAE,mBAAO;AAAqC,cAAxBA,KAAED,OAAI,KAAjBC,KAAE,KAAG0sM,GAAG1sM,EAAAA,KAAa,IAAE,KAAGA,OAAI,KAAG,GAAK,MAAIkM,MAAGA,OAAIlM,MAAG,MAAKkM,KAAEm5B,KAAG;AAAO,gBAAN+mK,GAAGlgM,EAAAA,GAAMxK,MAAGgkC;AAAE,qBAAOx5B;AAAEw5B,iBAAEhkC;UAAAA;AAAqB,cAAG,OAAtBwK,KAAED,GAAE0gM;AAAwB,iBAAI1gM,KAAEA,GAAE2gM,eAAc1gM,MAAGlM,IAAE,IAAEkM;AAAcxK,cAAAA,KAAE,MAAb3B,KAAE,KAAG2sM,GAAGxgM,EAAAA,IAAUlM,MAAGiM,GAAElM,EAAAA,GAAGmM,MAAAA,CAAIxK;AAAE,iBAAO1B;QAAAA;AAC1e,iBAAS6sM,GAAG5gM,IAAAA;AAAgC,iBAAO,OAApCA,KAAAA,cAAEA,GAAEqgM,gBAAsCrgM,KAAI,aAAFA,KAAa,aAAW;QAAA;AAAE,iBAAS6gM,GAAG7gM,IAAEC,IAAAA;AAAG,kBAAOD,IAAAA;YAAG,KAAK;AAAG,qBAAO;YAAE,KAAK;AAAG,qBAAO;YAAE,KAAK;AAAG,qBAAmB,OAAZA,KAAE8gM,GAAG,KAAA,CAAI7gM,EAAAA,KAAS4gM,GAAG,IAAG5gM,EAAAA,IAAGD;YAAE,KAAK;AAAG,qBAAoB,OAAbA,KAAE8gM,GAAG,MAAA,CAAK7gM,EAAAA,KAAS4gM,GAAG,GAAE5gM,EAAAA,IAAGD;YAAE,KAAK;AAAE,qBAAqB,OAAdA,KAAE8gM,GAAG,OAAA,CAAM7gM,EAAAA,OAA4B,OAAjBD,KAAE8gM,GAAG,UAAA,CAAS7gM,EAAAA,OAAWD,KAAE,OAAMA;YAAE,KAAK;AAAE,qBAA0B,OAAnBC,KAAE6gM,GAAG,YAAA,CAAW7gM,EAAAA,OAAWA,KAAE,YAAWA;UAAAA;AAAE,gBAAMiB,MAAMukB,GAAE,KAAIzlB,EAAAA,CAAAA;QAAAA;AAAK,iBAAS8gM,GAAG9gM,IAAAA;AAAG,iBAAOA,KAAAA,CAAGA;QAAAA;AAAE,iBAAS+gM,GAAG/gM,IAAAA;AAAG,mBAAQC,KAAE,CAAA,GAAGnM,KAAE,GAAE,KAAGA,IAAEA;AAAImM,YAAAA,GAAEmK,KAAKpK,EAAAA;AAAG,iBAAOC;QAAAA;AACrd,iBAAS+gM,GAAGhhM,IAAEC,IAAEnM,IAAAA;AAAGkM,UAAAA,GAAEqgM,gBAAcpgM;AAAE,cAAIlM,KAAEkM,KAAE;AAAED,UAAAA,GAAEugM,kBAAgBxsM,IAAEiM,GAAEwgM,eAAazsM,KAAEiM,KAAEA,GAAEihM,YAAWhhM,KAAE,KAAGwgM,GAAGxgM,EAAAA,CAAAA,IAAQnM;QAAAA;AAAE,YAAI2sM,KAAGhoM,KAAKyoM,QAAMzoM,KAAKyoM,QAAiC,SAAYlhM,IAAAA;AAAG,iBAAO,MAAIA,KAAE,KAAG,MAAImhM,GAAGnhM,EAAAA,IAAGohM,KAAG,KAAG;QAAA,GAAvED,KAAG1oM,KAAK2nF,KAAIghH,KAAG3oM,KAAKq8K;AAAqD,YAAIusB,KAAG9sM,GAAE+sM,+BAA8BC,KAAGhtM,GAAE4pM,0BAAyBqD,KAAAA;AAAM,iBAASC,GAAGzhM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAGonM,gBAAIF,GAAAA;AAAK,cAAIxlM,KAAEisM,IAAGjgL,KAAE05K;AAAGA,eAAAA;AAAM,cAAA;AAAIH,eAAGvlM,IAAEuK,IAAEC,IAAEnM,IAAEC,EAAAA;UAAAA,UAAG;AAAA,aAASonM,KAAG15K,OAAI45K,GAAAA;UAAAA;QAAAA;AAAM,iBAASrvK,GAAGhsB,IAAEC,IAAEnM,IAAEC,IAAAA;AAAGwtM,aAAGF,IAAGK,GAAGzsM,KAAK,MAAK+K,IAAEC,IAAEnM,IAAEC,EAAAA,CAAAA;QAAAA;AACjb,iBAAS2tM,GAAG1hM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAU,cAAI0B;AAAX,cAAG+rM;AAAU,iBAAI/rM,KAAE,MAAO,IAAFwK,QAAO,IAAE+8L,GAAGrkM,UAAAA,KAAW2kM,GAAGl7L,QAAQpC,EAAAA;AAAGA,cAAAA,KAAEu9L,GAAG,MAAKv9L,IAAEC,IAAEnM,IAAEC,EAAAA,GAAGipM,GAAG5yL,KAAKpK,EAAAA;iBAAO;AAAC,kBAAIyhB,KAAE+8K,GAAGx+L,IAAEC,IAAEnM,IAAEC,EAAAA;AAAG,kBAAG,SAAO0tB;AAAEhsB,gBAAAA,MAAGooM,GAAG79L,IAAEjM,EAAAA;mBAAO;AAAC,oBAAG0B,IAAE;AAAC,sBAAA,KAAM6nM,GAAGl7L,QAAQpC,EAAAA;AAA+B,2BAA3BA,KAAEu9L,GAAG97K,IAAEzhB,IAAEC,IAAEnM,IAAEC,EAAAA,GAAAA,KAAGipM,GAAG5yL,KAAKpK,EAAAA;AAAU,sBAfhO,SAAYA,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,4BAAOwK,IAAAA;sBAAG,KAAK;AAAU,+BAAOg9L,KAAGc,GAAGd,IAAGj9L,IAAEC,IAAEnM,IAAEC,IAAE0B,EAAAA,GAAAA;sBAAM,KAAK;AAAY,+BAAO29C,KAAG2qJ,GAAG3qJ,IAAGpzC,IAAEC,IAAEnM,IAAEC,IAAE0B,EAAAA,GAAAA;sBAAM,KAAK;AAAY,+BAAOynM,KAAGa,GAAGb,IAAGl9L,IAAEC,IAAEnM,IAAEC,IAAE0B,EAAAA,GAAAA;sBAAM,KAAK;AAAc,4BAAIgsB,KAAEhsB,GAAEqoM;AAAkD,+BAAxCX,GAAGj5L,IAAIud,IAAEs8K,GAAGZ,GAAG7oM,IAAImtB,EAAAA,KAAI,MAAKzhB,IAAEC,IAAEnM,IAAEC,IAAE0B,EAAAA,CAAAA,GAAAA;sBAAa,KAAK;AAAoB,+BAAOgsB,KAAEhsB,GAAEqoM,WAAUV,GAAGl5L,IAAIud,IAAEs8K,GAAGX,GAAG9oM,IAAImtB,EAAAA,KAAI,MAAKzhB,IAAEC,IAAEnM,IAAEC,IAAE0B,EAAAA,CAAAA,GAAAA;oBAAI;AAAG,2BAAA;kBAAM,EAe3HgsB,IAAEzhB,IAAEC,IAAEnM,IAAEC,EAAAA;AAAG;AAAO8pM,qBAAG79L,IAAEjM,EAAAA;gBAAAA;AAAG4tM,mBAAG3hM,IAAEC,IAAElM,IAAE,MAAKD,EAAAA;cAAAA;YAAAA;QAAAA;AAC9Q,iBAAS0qM,GAAGx+L,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAE0kM,GAAGpmM,EAAAA;AAAW,cAAG,UAAX0B,KAAEwoM,GAAGxoM,EAAAA,IAAe;AAAC,gBAAIgsB,KAAEw6K,GAAGxmM,EAAAA;AAAG,gBAAG,SAAOgsB;AAAEhsB,cAAAA,KAAE;iBAAS;AAAC,kBAAI2jC,KAAE3X,GAAE0rB;AAAI,kBAAG,OAAK/T,IAAE;AAAS,oBAAG,UAAX3jC,KAAE2mM,GAAG36K,EAAAA;AAAe,yBAAOhsB;AAAEA,gBAAAA,KAAE;cAAA,WAAa,MAAI2jC,IAAE;AAAC,oBAAG3X,GAAEk5K,UAAU0D;AAAQ,yBAAO,MAAI58K,GAAE0rB,MAAI1rB,GAAEk5K,UAAU2D,gBAAc;AAAK7oM,gBAAAA,KAAE;cAAA;AAAUgsB,gBAAAA,OAAIhsB,OAAIA,KAAE;YAAA;UAAA;AAAqB,iBAAdksM,GAAG3hM,IAAEC,IAAElM,IAAE0B,IAAE3B,EAAAA,GAAU;QAAA;AAAK,YAAI8tM,MAAG,MAAKC,MAAG,MAAK7uF,MAAG;AACzT,iBAAS8uF,KAAAA;AAAK,cAAG9uF;AAAG,mBAAOA;AAAG,cAAIhzG,IAAkBjM,IAAhBkM,KAAE4hM,KAAG/tM,KAAEmM,GAAEtH,QAASlD,KAAE,WAAUmsM,MAAGA,IAAGltM,QAAMktM,IAAG3hF,aAAYx+F,KAAEhsB,GAAEkD;AAAO,eAAIqH,KAAE,GAAEA,KAAElM,MAAGmM,GAAED,EAAAA,MAAKvK,GAAEuK,EAAAA,GAAGA;AAAAA;AAAK,cAAIo5B,KAAEtlC,KAAEkM;AAAE,eAAIjM,KAAE,GAAEA,MAAGqlC,MAAGn5B,GAAEnM,KAAEC,EAAAA,MAAK0B,GAAEgsB,KAAE1tB,EAAAA,GAAGA;AAAAA;AAAK,iBAAOi/G,MAAGv9G,GAAEG,MAAMoK,IAAE,IAAEjM,KAAE,IAAEA,KAAAA,MAAE;QAAA;AAAQ,iBAASguM,IAAG/hM,IAAAA;AAAG,cAAIC,KAAED,GAAEgiM;AAA+E,iBAAvE,cAAahiM,KAAgB,OAAbA,KAAEA,GAAEyqI,aAAgB,OAAKxqI,OAAID,KAAE,MAAKA,KAAEC,IAAE,OAAKD,OAAIA,KAAE,KAAW,MAAIA,MAAG,OAAKA,KAAEA,KAAE;QAAA;AAAE,iBAASiiM,KAAAA;AAAK,iBAAA;QAAM;AAAG,iBAASC,KAAAA;AAAK,iBAAA;QAAM;AACjY,iBAASC,GAAGniM,IAAAA;AAAG,mBAASC,GAAEA,IAAElM,IAAE0B,IAAEgsB,IAAE2X,IAAAA;AAA6G,qBAAQtlC,MAAlH0G,KAAK4nM,aAAWniM,IAAEzF,KAAK6nM,cAAY5sM,IAAE+E,KAAKE,OAAK3G,IAAEyG,KAAKmjM,cAAYl8K,IAAEjnB,KAAKwlB,SAAOoZ,IAAE5+B,KAAK8nM,gBAAc,MAAkBtiM;AAAEA,cAAAA,GAAE1K,eAAexB,EAAAA,MAAKmM,KAAED,GAAElM,EAAAA,GAAG0G,KAAK1G,EAAAA,IAAGmM,KAAEA,GAAEwhB,EAAAA,IAAGA,GAAE3tB,EAAAA;AAAgI,mBAA5H0G,KAAK+nM,sBAAoB,QAAM9gL,GAAE+gL,mBAAiB/gL,GAAE+gL,mBAAAA,UAAsB/gL,GAAE/G,eAAaunL,KAAGC,IAAG1nM,KAAKioM,uBAAqBP,IAAU1nM;UAAAA;AAC1E,iBAD+E3G,GAAEoM,GAAE5K,WAAU,EAACm6K,gBAAe,WAAA;AAAWh1K,iBAAKgoM,mBAAAA;AAAoB,gBAAIxiM,KAAExF,KAAKmjM;AAAY39L,YAAAA,OAAIA,GAAEwvK,iBAAexvK,GAAEwvK,eAAAA,IAAiB,aAAA,OAAmBxvK,GAAE0a,gBAC7e1a,GAAE0a,cAAAA,QAAgBlgB,KAAK+nM,qBAAmBN;UAAAA,GAAKS,iBAAgB,WAAA;AAAW,gBAAI1iM,KAAExF,KAAKmjM;AAAY39L,YAAAA,OAAIA,GAAE0iM,kBAAgB1iM,GAAE0iM,gBAAAA,IAAkB,aAAA,OAAmB1iM,GAAE2iM,iBAAe3iM,GAAE2iM,eAAAA,OAAiBnoM,KAAKioM,uBAAqBR;UAAAA,GAAKW,SAAQ,WAAA;UAAA,GAAaC,cAAaZ,GAAAA,CAAAA,GAAYhiM;QAAAA;AAChR,YAAoL6iM,IAAGC,IAAGC,KAAtLC,KAAG,EAACC,YAAW,GAAEC,SAAQ,GAAEC,YAAW,GAAEC,WAAU,SAASrjM,IAAAA;AAAG,iBAAOA,GAAEqjM,aAAWh9K,KAAKsyI,IAAAA;QAAAA,GAAO6pC,kBAAiB,GAAEc,WAAU,EAAA,GAAGC,KAAGpB,GAAGc,EAAAA,GAAIO,KAAG3vM,GAAE,CAAA,GAAGovM,IAAG,EAACpoC,MAAK,GAAE4oC,QAAO,EAAA,CAAA,GAAIC,KAAGvB,GAAGqB,EAAAA,GAAaG,KAAG9vM,GAAE,CAAA,GAAG2vM,IAAG,EAACI,SAAQ,GAAEC,SAAQ,GAAEC,SAAQ,GAAEC,SAAQ,GAAEC,OAAM,GAAEC,OAAM,GAAE70B,SAAQ,GAAEF,UAAS,GAAEG,QAAO,GAAEF,SAAQ,GAAE+0B,kBAAiBC,IAAGC,QAAO,GAAEC,SAAQ,GAAEC,eAAc,SAAStkM,IAAAA;AAAG,iBAAA,WAAgBA,GAAEskM,gBAActkM,GAAEukM,gBAAcvkM,GAAEo6L,aAAWp6L,GAAEwkM,YAAUxkM,GAAEukM,cAAYvkM,GAAEskM;QAAAA,GAAeG,WAAU,SAASzkM,IAAAA;AAAG,iBAAG,eAC3eA,KAASA,GAAEykM,aAAUzkM,OAAIgjM,QAAKA,OAAI,gBAAchjM,GAAEtF,QAAMooM,KAAG9iM,GAAE4jM,UAAQZ,IAAGY,SAAQb,KAAG/iM,GAAE6jM,UAAQb,IAAGa,WAASd,KAAGD,KAAG,GAAEE,MAAGhjM,KAAU8iM;QAAAA,GAAI4B,WAAU,SAAS1kM,IAAAA;AAAG,iBAAM,eAAcA,KAAEA,GAAE0kM,YAAU3B;QAAAA,EAAAA,CAAAA,GAAM4B,KAAGxC,GAAGwB,EAAAA,GAAiCiB,KAAGzC,GAA7BtuM,GAAE,CAAA,GAAG8vM,IAAG,EAACkB,cAAa,EAAA,CAAA,CAAA,GAA4CC,KAAG3C,GAA9BtuM,GAAE,CAAA,GAAG2vM,IAAG,EAACc,eAAc,EAAA,CAAA,CAAA,GAA0ES,KAAG5C,GAA5DtuM,GAAE,CAAA,GAAGovM,IAAG,EAAC+B,eAAc,GAAEC,aAAY,GAAEC,eAAc,EAAA,CAAA,CAAA,GAAsHC,KAAGhD,GAAxGtuM,GAAE,CAAA,GAAGovM,IAAG,EAACmC,eAAc,SAASplM,IAAAA;AAAG,iBAAM,mBAAkBA,KAAEA,GAAEolM,gBAAcp1K,OAAOo1K;QAAAA,EAAAA,CAAAA,CAAAA,GAAgDC,KAAGlD,GAArBtuM,GAAE,CAAA,GAAGovM,IAAG,EAACt5K,MAAK,EAAA,CAAA,CAAA,GAAc27K,KAAG,EAACC,KAAI,UACxfC,UAAS,KAAIC,MAAK,aAAYC,IAAG,WAAUC,OAAM,cAAaC,MAAK,aAAYC,KAAI,UAASC,KAAI,MAAKC,MAAK,eAAcC,MAAK,eAAcC,QAAO,cAAaC,iBAAgB,eAAA,GAAgBC,KAAG,EAAC,GAAE,aAAY,GAAE,OAAM,IAAG,SAAQ,IAAG,SAAQ,IAAG,SAAQ,IAAG,WAAU,IAAG,OAAM,IAAG,SAAQ,IAAG,YAAW,IAAG,UAAS,IAAG,KAAI,IAAG,UAAS,IAAG,YAAW,IAAG,OAAM,IAAG,QAAO,IAAG,aAAY,IAAG,WAAU,IAAG,cAAa,IAAG,aAAY,IAAG,UAAS,IAAG,UAAS,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MACtf,KAAI,MAAK,KAAI,MAAK,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,WAAU,KAAI,cAAa,KAAI,OAAA,GAAQC,KAAG,EAACC,KAAI,UAASC,SAAQ,WAAUC,MAAK,WAAUC,OAAM,WAAA;AAAY,iBAASC,GAAGzmM,IAAAA;AAAG,cAAIC,KAAEzF,KAAKmjM;AAAY,iBAAO19L,GAAEikM,mBAAiBjkM,GAAEikM,iBAAiBlkM,EAAAA,IAAAA,CAAAA,EAAIA,KAAEomM,GAAGpmM,EAAAA,MAAAA,CAAAA,CAAMC,GAAED,EAAAA;QAAAA;AAAM,iBAASmkM,KAAAA;AAAK,iBAAOsC;QAAAA;AAC9R,YACiEC,KAAGvE,GAD7DtuM,GAAE,CAAA,GAAG2vM,IAAG,EAACxuM,KAAI,SAASgL,IAAAA;AAAG,cAAGA,GAAEhL,KAAI;AAAC,gBAAIiL,KAAEqlM,GAAGtlM,GAAEhL,GAAAA,KAAMgL,GAAEhL;AAAI,gBAAG,mBAAiBiL;AAAE,qBAAOA;UAAAA;AAAE,iBAAM,eAAaD,GAAEtF,OAAc,QAARsF,KAAE+hM,IAAG/hM,EAAAA,KAAU,UAAQwe,OAAO+0B,aAAavzC,EAAAA,IAAI,cAAYA,GAAEtF,QAAM,YAAUsF,GAAEtF,OAAKyrM,GAAGnmM,GAAEgiM,OAAAA,KAAU,iBAAe;QAAA,GAAIvwJ,MAAK,GAAE3oB,UAAS,GAAEsmJ,SAAQ,GAAEF,UAAS,GAAEG,QAAO,GAAEF,SAAQ,GAAElkI,QAAO,GAAE07J,QAAO,GAAEzC,kBAAiBC,IAAG15D,UAAS,SAASzqI,IAAAA;AAAG,iBAAM,eAAaA,GAAEtF,OAAKqnM,IAAG/hM,EAAAA,IAAG;QAAA,GAAGgiM,SAAQ,SAAShiM,IAAAA;AAAG,iBAAM,cAAYA,GAAEtF,QAAM,YAAUsF,GAAEtF,OAAKsF,GAAEgiM,UAAQ;QAAA,GAAG/yB,OAAM,SAASjvK,IAAAA;AAAG,iBAAM,eAC7eA,GAAEtF,OAAKqnM,IAAG/hM,EAAAA,IAAG,cAAYA,GAAEtF,QAAM,YAAUsF,GAAEtF,OAAKsF,GAAEgiM,UAAQ;QAAA,EAAA,CAAA,CAAA,GAA4I4E,KAAGzE,GAA7HtuM,GAAE,CAAA,GAAG8vM,IAAG,EAAC7F,WAAU,GAAE//I,OAAM,GAAEq3D,QAAO,GAAEyxF,UAAS,GAAEC,oBAAmB,GAAEC,OAAM,GAAEC,OAAM,GAAEC,OAAM,GAAEC,aAAY,GAAEC,WAAU,EAAA,CAAA,CAAA,GAAmIC,KAAGjF,GAArHtuM,GAAE,CAAA,GAAG2vM,IAAG,EAAC6D,SAAQ,GAAEC,eAAc,GAAEC,gBAAe,GAAEl4B,QAAO,GAAEF,SAAQ,GAAEC,SAAQ,GAAEF,UAAS,GAAEg1B,kBAAiBC,GAAAA,CAAAA,CAAAA,GAA0EqD,KAAGrF,GAA3DtuM,GAAE,CAAA,GAAGovM,IAAG,EAACzQ,cAAa,GAAEyS,aAAY,GAAEC,eAAc,EAAA,CAAA,CAAA,GAC/PuC,KAAGtF,GAD6QtuM,GAAE,CAAA,GAAG8vM,IAAG,EAAC+D,QAAO,SAAS1nM,IAAAA;AAAG,iBAAM,YAAWA,KAAEA,GAAE0nM,SAAO,iBAAgB1nM,KAAAA,CAAGA,GAAE2nM,cAAY;QAAA,GAClfC,QAAO,SAAS5nM,IAAAA;AAAG,iBAAM,YAAWA,KAAEA,GAAE4nM,SAAO,iBAAgB5nM,KAAAA,CAAGA,GAAE6nM,cAAY,gBAAe7nM,KAAAA,CAAGA,GAAE8nM,aAAW;QAAA,GAAGC,QAAO,GAAEC,WAAU,EAAA,CAAA,CAAA,GAAcC,KAAG,CAAC,GAAE,IAAG,IAAG,EAAA,GAAIthJ,KAAGorI,MAAI,sBAAqB/hK,QAAOk4K,KAAG;AAAKnW,QAAAA,MAAI,kBAAiB/1H,aAAWksI,KAAGlsI,SAAS6+C;AAAc,YAAIstF,KAAGpW,MAAI,eAAc/hK,UAAAA,CAASk4K,IAAGE,KAAGrW,OAAAA,CAAMprI,MAAIuhJ,MAAI,IAAEA,MAAI,MAAIA,KAAIG,KAAG7pL,OAAO+0B,aAAa,EAAA,GAAI+0J,KAAAA;AACvW,iBAASC,GAAGvoM,IAAEC,IAAAA;AAAG,kBAAOD,IAAAA;YAAG,KAAK;AAAQ,qBAAA,OAAWioM,GAAG7lM,QAAQnC,GAAE+hM,OAAAA;YAAS,KAAK;AAAU,qBAAO,QAAM/hM,GAAE+hM;YAAQ,KAAK;YAAW,KAAK;YAAY,KAAK;AAAW,qBAAA;YAAS;AAAQ,qBAAA;UAAM;QAAA;AAAI,iBAASwG,GAAGxoM,IAAAA;AAAc,iBAAM,YAAA,QAAjBA,KAAEA,GAAEyjM,WAAkC,UAASzjM,KAAEA,GAAE2pB,OAAK;QAAA;AAAK,YAAI8+K,KAAAA;AAE3Q,YAAIC,KAAG,EAAC7wE,OAAAA,MAAS5mF,MAAAA,MAAQ03J,UAAAA,MAAY,kBAAA,MAAoBljG,OAAAA,MAAS70D,OAAAA,MAASxF,QAAAA,MAAUwe,UAAAA,MAAYg/I,OAAAA,MAAS//K,QAAAA,MAAUggL,KAAAA,MAAOrqK,MAAAA,MAAQojI,MAAAA,MAAQ33I,KAAAA,MAAO6+K,MAAAA,KAAK;AAAI,iBAASC,GAAG/oM,IAAAA;AAAG,cAAIC,KAAED,MAAGA,GAAEggH,YAAUhgH,GAAEggH,SAAS15F,YAAAA;AAAc,iBAAM,YAAUrmB,KAAAA,CAAAA,CAAIyoM,GAAG1oM,GAAEtF,IAAAA,IAAM,eAAauF;QAAAA;AAAQ,iBAAS+oM,GAAGhpM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG8mM,aAAG9mM,EAAAA,GAAsB,KAAnBkM,KAAEgpM,GAAGhpM,IAAE,UAAA,GAAgBtH,WAAS7E,KAAE,IAAIyvM,GAAG,YAAW,UAAS,MAAKzvM,IAAEC,EAAAA,GAAGiM,GAAEoK,KAAK,EAACilJ,OAAMv7J,IAAE+tE,WAAU5hE,GAAAA,CAAAA;QAAAA;AAAK,YAAIipM,KAAG,MAAKC,KAAG;AAAK,iBAASv8J,GAAG5sC,IAAAA;AAAGopM,aAAGppM,IAAE,CAAA;QAAA;AAAG,iBAASqpM,GAAGrpM,IAAAA;AAAe,cAAGg1L,GAATsU,IAAGtpM,EAAAA,CAAAA;AAAY,mBAAOA;QAAAA;AACne,iBAASupM,GAAGvpM,IAAEC,IAAAA;AAAG,cAAG,aAAWD;AAAE,mBAAOC;QAAAA;AAAE,YAAIupM,KAAAA;AAAM,YAAGzX,IAAG;AAAC,cAAI0X;AAAG,cAAG1X,IAAG;AAAC,gBAAI2X,KAAG,aAAY1tI;AAAS,gBAAA,CAAI0tI,IAAG;AAAC,kBAAIC,KAAG3tI,SAASvI,cAAc,KAAA;AAAOk2I,iBAAGl2F,aAAa,WAAU,SAAA,GAAWi2F,KAAG,cAAA,OAAoBC,GAAGC;YAAAA;AAAQH,iBAAGC;UAAAA;AAAQD,iBAAAA;AAAMD,eAAGC,OAAAA,CAAMztI,SAAS6+C,gBAAc,IAAE7+C,SAAS6+C;QAAAA;AAAc,iBAASgvF,KAAAA;AAAKX,iBAAKA,GAAGY,YAAY,oBAAmBC,EAAAA,GAAIZ,KAAGD,KAAG;QAAA;AAAM,iBAASa,GAAG/pM,IAAAA;AAAG,cAAG,YAAUA,GAAEwyL,gBAAc6W,GAAGF,EAAAA,GAAI;AAAC,gBAAIlpM,KAAE,CAAA;AAAyB,gBAAtB+oM,GAAG/oM,IAAEkpM,IAAGnpM,IAAEm6L,GAAGn6L,EAAAA,CAAAA,GAAIA,KAAE4sC,IAAMuuJ;AAAGn7L,cAAAA,GAAEC,EAAAA;iBAAO;AAACk7L,mBAAAA;AAAM,kBAAA;AAAIJ,mBAAG/6L,IAAEC,EAAAA;cAAAA,UAAG;AAAQk7L,qBAAAA,OAAME,GAAAA;cAAAA;YAAAA;UAAAA;QAAAA;AAC3e,iBAAS2O,GAAGhqM,IAAEC,IAAEnM,IAAAA;AAAG,wBAAYkM,MAAG6pM,GAAAA,GAAUV,KAAGr1M,KAARo1M,KAAGjpM,IAAUomL,YAAY,oBAAmB0jB,EAAAA,KAAK,eAAa/pM,MAAG6pM,GAAAA;QAAAA;AAAK,iBAASI,GAAGjqM,IAAAA;AAAG,cAAG,sBAAoBA,MAAG,YAAUA,MAAG,cAAYA;AAAE,mBAAOqpM,GAAGF,EAAAA;QAAAA;AAAI,iBAASe,GAAGlqM,IAAEC,IAAAA;AAAG,cAAG,YAAUD;AAAE,mBAAOqpM,GAAGppM,EAAAA;QAAAA;AAAG,iBAASkqM,GAAGnqM,IAAEC,IAAAA;AAAG,cAAG,YAAUD,MAAG,aAAWA;AAAE,mBAAOqpM,GAAGppM,EAAAA;QAAAA;AAAmE,YAAImqM,KAAG,cAAA,OAAoBj2M,OAAOuL,KAAGvL,OAAOuL,KAA5G,SAAYM,IAAEC,IAAAA;AAAG,iBAAOD,OAAIC,OAAI,MAAID,MAAG,IAAEA,MAAI,IAAEC,OAAID,MAAIA,MAAGC,MAAIA;QAAAA,GAAoDoqM,KAAGl2M,OAAOkB,UAAUC;AAC7a,iBAASg1M,GAAGtqM,IAAEC,IAAAA;AAAG,cAAGmqM,GAAGpqM,IAAEC,EAAAA;AAAG,mBAAA;AAAS,cAAG,YAAA,OAAkBD,MAAG,SAAOA,MAAG,YAAA,OAAkBC,MAAG,SAAOA;AAAE,mBAAA;AAAS,cAAInM,KAAEK,OAAO0J,KAAKmC,EAAAA,GAAGjM,KAAEI,OAAO0J,KAAKoC,EAAAA;AAAG,cAAGnM,GAAE6E,WAAS5E,GAAE4E;AAAO,mBAAA;AAAS,eAAI5E,KAAE,GAAEA,KAAED,GAAE6E,QAAO5E;AAAI,gBAAA,CAAIs2M,GAAGz2M,KAAKqM,IAAEnM,GAAEC,EAAAA,CAAAA,KAAAA,CAAMq2M,GAAGpqM,GAAElM,GAAEC,EAAAA,CAAAA,GAAIkM,GAAEnM,GAAEC,EAAAA,CAAAA,CAAAA;AAAK,qBAAA;AAAS,iBAAA;QAAM;AAAG,iBAASw2M,GAAGvqM,IAAAA;AAAG,iBAAKA,MAAGA,GAAE6hH;AAAY7hH,YAAAA,KAAEA,GAAE6hH;AAAW,iBAAO7hH;QAAAA;AAClU,iBAASwqM,GAAGxqM,IAAEC,IAAAA;AAAG,cAAwBlM,IAApBD,KAAEy2M,GAAGvqM,EAAAA;AAAO,eAAJA,KAAE,GAAYlM,MAAG;AAAC,gBAAG,MAAIA,GAAEuQ,UAAS;AAA0B,kBAAzBtQ,KAAEiM,KAAElM,GAAEmsH,YAAYtnH,QAAUqH,MAAGC,MAAGlM,MAAGkM;AAAE,uBAAM,EAACqE,MAAKxQ,IAAEyE,QAAO0H,KAAED,GAAAA;AAAGA,cAAAA,KAAEjM;YAAAA;AAAEiM,eAAE;AAAC,qBAAKlM,MAAG;AAAC,oBAAGA,GAAE22M,aAAY;AAAC32M,kBAAAA,KAAEA,GAAE22M;AAAY,wBAAMzqM;gBAAAA;AAAElM,gBAAAA,KAAEA,GAAE4qH;cAAAA;AAAW5qH,cAAAA,KAAAA;YAAE;AAAOA,YAAAA,KAAEy2M,GAAGz2M,EAAAA;UAAAA;QAAAA;AAAI,iBAAS42M,GAAG1qM,IAAEC,IAAAA;AAAG,iBAAA,EAAA,CAAOD,MAAAA,CAAGC,QAAED,OAAIC,OAAAA,CAAKD,MAAG,MAAIA,GAAEqE,cAAYpE,MAAG,MAAIA,GAAEoE,WAASqmM,GAAG1qM,IAAEC,GAAEy+G,UAAAA,IAAY,cAAa1+G,KAAEA,GAAEke,SAASje,EAAAA,IAAAA,CAAAA,CAAGD,GAAE2qM,2BAAAA,CAAAA,EAAwD,KAA7B3qM,GAAE2qM,wBAAwB1qM,EAAAA;QAAAA;AAClZ,iBAAS2qM,KAAAA;AAAK,mBAAQ5qM,KAAEgwB,QAAO/vB,KAAEg1L,GAAAA,GAAKh1L,cAAaD,GAAE6qM,qBAAmB;AAAC,gBAAA;AAAI,kBAAI/2M,KAAE,YAAA,OAAkBmM,GAAEk8D,cAAcrzC,SAASy7B;YAAAA,SAAWxwD,IAAN;AAASD,cAAAA,KAAAA;YAAE;AAAG,gBAAA,CAAGA;AAAyB;AAAMmM,YAAAA,KAAEg1L,IAA/Bj1L,KAAEC,GAAEk8D,eAAgCH,QAAAA;UAAAA;AAAU,iBAAO/7D;QAAAA;AAAE,iBAAS6qM,GAAG9qM,IAAAA;AAAG,cAAIC,KAAED,MAAGA,GAAEggH,YAAUhgH,GAAEggH,SAAS15F,YAAAA;AAAc,iBAAOrmB,OAAI,YAAUA,OAAI,WAASD,GAAEtF,QAAM,aAAWsF,GAAEtF,QAAM,UAAQsF,GAAEtF,QAAM,UAAQsF,GAAEtF,QAAM,eAAasF,GAAEtF,SAAO,eAAauF,MAAG,WAASD,GAAE+qM;QAAAA;AACxZ,YAAIC,KAAGjZ,MAAI,kBAAiB/1H,YAAU,MAAIA,SAAS6+C,cAAaowF,KAAG,MAAKC,KAAG,MAAKC,KAAG,MAAKC,KAAAA;AACxF,iBAASC,GAAGrrM,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAED,GAAEk8B,WAASl8B,KAAEA,GAAEkoE,WAAS,MAAIloE,GAAEuQ,WAASvQ,KAAEA,GAAEqmH;AAAcixF,gBAAI,QAAMH,MAAIA,OAAKhW,GAAGlhM,EAAAA,MAAU,qBAALA,KAAEk3M,OAAyBH,GAAG/2M,EAAAA,IAAGA,KAAE,EAACqN,OAAMrN,GAAEu3M,gBAAe7xM,KAAI1F,GAAEw3M,aAAAA,IAAuFx3M,KAAE,EAACy3M,aAA3Ez3M,MAAGA,GAAEomH,iBAAepmH,GAAEomH,cAAcsxF,eAAaz7K,QAAQ07K,aAAAA,GAA+BF,YAAWG,cAAa53M,GAAE43M,cAAaC,WAAU73M,GAAE63M,WAAUC,aAAY93M,GAAE83M,YAAAA,GAAcV,MAAIb,GAAGa,IAAGp3M,EAAAA,MAAKo3M,KAAGp3M,IAAsB,KAApBA,KAAEk1M,GAAGiC,IAAG,UAAA,GAAgBvyM,WAASsH,KAAE,IAAIsjM,GAAG,YAAW,UAAS,MAAKtjM,IAAEnM,EAAAA,GAAGkM,GAAEoK,KAAK,EAACilJ,OAAMpvJ,IAAE4hE,WAAU9tE,GAAAA,CAAAA,GAAIkM,GAAE+f,SAAOirL;QAAAA;AACjfjL,WAAG,mjBAAmjB/2K,MAAM,GAAA,GAC5jB,CAAA,GAAG+2K,GAAG,oRAAoR/2K,MAAM,GAAA,GAAK,CAAA,GAAG+2K,GAAGD,IAAG,CAAA;AAAG,iBAAQ+L,KAAG,qFAAqF7iL,MAAM,GAAA,GAAK8iL,KAAG,GAAEA,KAAGD,GAAGnzM,QAAOozM;AAAKjM,aAAG57L,IAAI4nM,GAAGC,EAAAA,GAAI,CAAA;AAAGja,QAAAA,GAAG,gBAAe,CAAC,YAAW,WAAA,CAAA,GACleA,GAAG,gBAAe,CAAC,YAAW,WAAA,CAAA,GAAcA,GAAG,kBAAiB,CAAC,cAAa,aAAA,CAAA,GAAgBA,GAAG,kBAAiB,CAAC,cAAa,aAAA,CAAA,GAAgBD,GAAG,YAAW,oEAAoE5oK,MAAM,GAAA,CAAA,GAAM4oK,GAAG,YAAW,uFAAuF5oK,MAAM,GAAA,CAAA,GAAM4oK,GAAG,iBAAgB,CAAC,kBAAiB,YAAW,aAAY,OAAA,CAAA,GAAUA,GAAG,oBAAmB,2DAA2D5oK,MAAM,GAAA,CAAA,GAC5f4oK,GAAG,sBAAqB,6DAA6D5oK,MAAM,GAAA,CAAA,GAAM4oK,GAAG,uBAAsB,8DAA8D5oK,MAAM,GAAA,CAAA;AAAM,YAAI+iL,KAAG,sNAAsN/iL,MAAM,GAAA,GAAKgjL,KAAG,IAAIx0M,IAAI,0CAA0CwxB,MAAM,GAAA,EAAK5U,OAAO23L,EAAAA,CAAAA;AACnf,iBAASE,GAAGlsM,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEiM,GAAEtF,QAAM;AAAgBsF,UAAAA,GAAEsiM,gBAAcxuM,IA/CjE,SAAYkM,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAE2X,IAAEr2B,IAAEpI,IAAAA;AAA4B,gBAAzBqhM,GAAG53L,MAAM5J,MAAKiC,SAAAA,GAAck/L,IAAG;AAAC,kBAAA,CAAGA;AAAgC,sBAAMz6L,MAAMukB,GAAE,GAAA,CAAA;AAA1C,kBAAI/xB,KAAEkoM;AAAGD,mBAAAA,OAAMC,KAAG,MAA8BC,OAAKA,KAAAA,MAAMC,KAAGpoM;YAAAA;UAAAA,EA+C9DK,IAAEkM,IAAAA,QAASD,EAAAA,GAAGA,GAAEsiM,gBAAc;QAAA;AACpG,iBAAS8G,GAAGppM,IAAEC,IAAAA;AAAGA,UAAAA,KAAE,MAAO,IAAFA;AAAK,mBAAQnM,KAAE,GAAEA,KAAEkM,GAAErH,QAAO7E,MAAI;AAAC,gBAAIC,KAAEiM,GAAElM,EAAAA,GAAG2B,KAAE1B,GAAEs7J;AAAMt7J,YAAAA,KAAEA,GAAE8tE;AAAU7hE,eAAE;AAAC,kBAAIyhB,KAAAA;AAAS,kBAAGxhB;AAAE,yBAAQm5B,KAAErlC,GAAE4E,SAAO,GAAE,KAAGygC,IAAEA,MAAI;AAAC,sBAAIr2B,KAAEhP,GAAEqlC,EAAAA,GAAGz+B,KAAEoI,GAAE8c,UAASnsB,KAAEqP,GAAEu/L;AAA2B,sBAAbv/L,KAAEA,GAAE8wC,UAAYl5C,OAAI8mB,MAAGhsB,GAAEgtM,qBAAAA;AAAuB,0BAAMziM;AAAEksM,qBAAGz2M,IAAEsN,IAAErP,EAAAA,GAAG+tB,KAAE9mB;gBAAAA;;AAAO,qBAAIy+B,KAAE,GAAEA,KAAErlC,GAAE4E,QAAOygC,MAAI;AAAoD,sBAA5Cz+B,MAAPoI,KAAEhP,GAAEqlC,EAAAA,GAAOvZ,UAASnsB,KAAEqP,GAAEu/L,eAAcv/L,KAAEA,GAAE8wC,UAAYl5C,OAAI8mB,MAAGhsB,GAAEgtM,qBAAAA;AAAuB,0BAAMziM;AAAEksM,qBAAGz2M,IAAEsN,IAAErP,EAAAA,GAAG+tB,KAAE9mB;gBAAAA;YAAAA;UAAAA;AAAI,cAAGkhM;AAAG,kBAAM77L,KAAE87L,IAAGD,KAAAA,OAAMC,KAAG,MAAK97L;QAAAA;AAC1a,iBAASi6B,GAAEj6B,IAAEC,IAAAA;AAAG,cAAInM,KAAEq4M,GAAGlsM,EAAAA,GAAGlM,KAAEiM,KAAE;AAAWlM,UAAAA,GAAE4M,IAAI3M,EAAAA,MAAKq4M,GAAGnsM,IAAED,IAAE,GAAA,KAAE,GAAIlM,GAAE2jB,IAAI1jB,EAAAA;QAAAA;AAAI,YAAIs4M,KAAG,oBAAkB5zM,KAAKooE,OAAAA,EAAS3kE,SAAS,EAAA,EAAItG,MAAM,CAAA;AAAG,iBAAS02M,GAAGtsM,IAAAA;AAAGA,UAAAA,GAAEqsM,EAAAA,MAAMrsM,GAAEqsM,EAAAA,IAAAA,MAAO1a,GAAG5sL,QAAQ,SAAS9E,IAAAA;AAAGgsM,eAAGvrM,IAAIT,EAAAA,KAAIssM,GAAGtsM,IAAAA,OAAKD,IAAE,IAAA,GAAMusM,GAAGtsM,IAAAA,MAAKD,IAAE,IAAA;UAAA,CAAA;QAAA;AACtO,iBAASusM,GAAGvsM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAE,IAAEgH,UAAU9D,UAAAA,WAAiB8D,UAAU,CAAA,IAAGA,UAAU,CAAA,IAAG,GAAEglB,KAAE3tB;AAA6D,cAA3D,sBAAoBkM,MAAG,MAAIlM,GAAEuQ,aAAWod,KAAE3tB,GAAEqmH,gBAAkB,SAAOpmH,MAAAA,CAAIkM,MAAGgsM,GAAGvrM,IAAIV,EAAAA,GAAG;AAAC,gBAAG,aAAWA;AAAE;AAAOvK,YAAAA,MAAG,GAAEgsB,KAAE1tB;UAAAA;AAAE,cAAIqlC,KAAE+yK,GAAG1qL,EAAAA,GAAG1e,KAAE/C,KAAE,QAAMC,KAAE,YAAU;AAAUm5B,UAAAA,GAAE14B,IAAIqC,EAAAA,MAAK9C,OAAIxK,MAAG,IAAG22M,GAAG3qL,IAAEzhB,IAAEvK,IAAEwK,EAAAA,GAAGm5B,GAAE3hB,IAAI1U,EAAAA;QAAAA;AAClS,iBAASqpM,GAAGpsM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEqqM,GAAGxrM,IAAI2L,EAAAA;AAAG,kBAAA,WAAgBxK,KAAE,IAAEA,IAAAA;YAAG,KAAK;AAAEA,cAAAA,KAAEgsM;AAAG;YAAM,KAAK;AAAEhsM,cAAAA,KAAEu2B;AAAG;YAAM;AAAQv2B,cAAAA,KAAEisM;UAAAA;AAAG5tM,UAAAA,KAAE2B,GAAER,KAAK,MAAKgL,IAAEnM,IAAEkM,EAAAA,GAAGvK,KAAAA,QAAE,CAAQ8lM,MAAI,iBAAet7L,MAAG,gBAAcA,MAAG,YAAUA,OAAIxK,KAAAA,OAAM1B,KAAAA,WAAW0B,KAAEuK,GAAE6nH,iBAAiB5nH,IAAEnM,IAAE,EAAC04M,SAAAA,MAAWC,SAAQh3M,GAAAA,CAAAA,IAAIuK,GAAE6nH,iBAAiB5nH,IAAEnM,IAAAA,IAAE,IAAA,WAAa2B,KAAEuK,GAAE6nH,iBAAiB5nH,IAAEnM,IAAE,EAAC24M,SAAQh3M,GAAAA,CAAAA,IAAIuK,GAAE6nH,iBAAiB5nH,IAAEnM,IAAAA,KAAE;QAAA;AACpW,iBAAS6tM,GAAG3hM,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,cAAIgsB,KAAE1tB;AAAE,cAAG,MAAO,IAAFkM,OAAM,MAAO,IAAFA,OAAM,SAAOlM;AAAEiM;AAAE,yBAAO;AAAC,oBAAG,SAAOjM;AAAE;AAAO,oBAAIqlC,KAAErlC,GAAEo5C;AAAI,oBAAG,MAAI/T,MAAG,MAAIA,IAAE;AAAC,sBAAIr2B,KAAEhP,GAAE4mM,UAAU2D;AAAc,sBAAGv7L,OAAItN,MAAG,MAAIsN,GAAEsB,YAAUtB,GAAE27G,eAAajpH;AAAE;AAAM,sBAAG,MAAI2jC;AAAE,yBAAIA,KAAErlC,GAAEooM,QAAO,SAAO/iK,MAAG;AAAC,0BAAIz+B,KAAEy+B,GAAE+T;AAAI,2BAAG,MAAIxyC,MAAG,MAAIA,SAAKA,KAAEy+B,GAAEuhK,UAAU2D,mBAAkB7oM,MAAG,MAAIkF,GAAE0J,YAAU1J,GAAE+jH,eAAajpH;AAAE;AAAO2jC,sBAAAA,KAAEA,GAAE+iK;oBAAAA;AAAO,yBAAK,SAAOp5L,MAAG;AAAS,wBAAG,UAAXq2B,KAAE6kK,GAAGl7L,EAAAA;AAAe;AAAe,wBAAG,OAAXpI,KAAEy+B,GAAE+T,QAAc,MAAIxyC,IAAE;AAAC5G,sBAAAA,KAAE0tB,KAAE2X;AAAE,+BAASp5B;oBAAAA;AAAE+C,oBAAAA,KAAEA,GAAE27G;kBAAAA;gBAAAA;AAAY3qH,gBAAAA,KAAEA,GAAEooM;cAAAA;AAAAA,WAvD7c,SAAYn8L,IAAEC,IAAEnM,IAAAA;AAAG,gBAAGsnM;AAAG,qBAAOp7L,GAAEC,IAAEnM,EAAAA;AAAGsnM,iBAAAA;AAAM,gBAAA;AAAWF,iBAAGl7L,IAAEC,IAAEnM,EAAAA;YAAAA,UAAG;AAAQsnM,mBAAAA,OAAMC,GAAAA;YAAAA;UAAAA,EAuDuY,WAAA;AAAW,gBAAItnM,KAAE0tB,IAAEhsB,KAAE0kM,GAAGrmM,EAAAA,GAAGslC,KAAE,CAAA;AACpfp5B,eAAE;AAAC,kBAAI+C,KAAE88L,GAAGvrM,IAAI0L,EAAAA;AAAG,kBAAA,WAAY+C,IAAE;AAAC,oBAAIpI,KAAE4oM,IAAG74L,KAAE1K;AAAE,wBAAOA,IAAAA;kBAAG,KAAK;AAAW,wBAAG,MAAI+hM,IAAGjuM,EAAAA;AAAG,4BAAMkM;kBAAE,KAAK;kBAAU,KAAK;AAAQrF,oBAAAA,KAAE+rM;AAAG;kBAAM,KAAK;AAAUh8L,oBAAAA,KAAE,SAAQ/P,KAAEmqM;AAAG;kBAAM,KAAK;AAAWp6L,oBAAAA,KAAE,QAAO/P,KAAEmqM;AAAG;kBAAM,KAAK;kBAAa,KAAK;AAAYnqM,oBAAAA,KAAEmqM;AAAG;kBAAM,KAAK;AAAQ,wBAAG,MAAIhxM,GAAEswM;AAAO,4BAAMpkM;kBAAE,KAAK;kBAAW,KAAK;kBAAW,KAAK;kBAAY,KAAK;kBAAY,KAAK;kBAAU,KAAK;kBAAW,KAAK;kBAAY,KAAK;AAAcrF,oBAAAA,KAAEgqM;AAAG;kBAAM,KAAK;kBAAO,KAAK;kBAAU,KAAK;kBAAY,KAAK;kBAAW,KAAK;kBAAY,KAAK;kBAAW,KAAK;kBAAY,KAAK;AAAOhqM,oBAAAA,KAC1iBiqM;AAAG;kBAAM,KAAK;kBAAc,KAAK;kBAAW,KAAK;kBAAY,KAAK;AAAajqM,oBAAAA,KAAEysM;AAAG;kBAAM,KAAK3H;kBAAG,KAAKC;kBAAG,KAAKC;AAAGhlM,oBAAAA,KAAEoqM;AAAG;kBAAM,KAAKnF;AAAGjlM,oBAAAA,KAAE6sM;AAAG;kBAAM,KAAK;AAAS7sM,oBAAAA,KAAE+oM;AAAG;kBAAM,KAAK;AAAQ/oM,oBAAAA,KAAE8sM;AAAG;kBAAM,KAAK;kBAAO,KAAK;kBAAM,KAAK;AAAQ9sM,oBAAAA,KAAEwqM;AAAG;kBAAM,KAAK;kBAAoB,KAAK;kBAAqB,KAAK;kBAAgB,KAAK;kBAAc,KAAK;kBAAc,KAAK;kBAAa,KAAK;kBAAc,KAAK;AAAYxqM,oBAAAA,KAAEisM;gBAAAA;AAAG,oBAAI9jL,KAAE,MAAO,IAAF7iB,KAAKwqB,KAAAA,CAAG3H,MAAG,aAAW9iB,IAAEwhB,KAAEsB,KAAE,SAAO/f,KAAEA,KAAE,YAAU,OAAKA;AAAE+f,gBAAAA,KAAE,CAAA;AAAG,yBAAY+H,IAAJl2B,KAAEZ,IAAI,SAC/eY,MAAG;AAAK,sBAAIiG,MAARiwB,KAAEl2B,IAAUgmM;AAAsF,sBAA5E,MAAI9vK,GAAEsiB,OAAK,SAAOvyC,OAAIiwB,KAAEjwB,IAAE,SAAO4mB,OAAc,SAAV5mB,KAAE0gM,GAAG3mM,IAAE6sB,EAAAA,MAAYsB,GAAE1Y,KAAKsiM,GAAG/3M,IAAEiG,IAAEiwB,EAAAA,CAAAA,KAASJ;AAAE;AAAM91B,kBAAAA,KAAEA,GAAEwnM;gBAAAA;AAAO,oBAAEr5K,GAAEnqB,WAASoK,KAAE,IAAIpI,GAAEoI,IAAE2H,IAAE,MAAK5W,IAAE2B,EAAAA,GAAG2jC,GAAEhvB,KAAK,EAACilJ,OAAMtsJ,IAAE8+D,WAAU/+C,GAAAA,CAAAA;cAAAA;YAAAA;AAAM,gBAAG,MAAO,IAAF7iB,KAAK;AAA4E,kBAAnCtF,KAAE,eAAaqF,MAAG,iBAAeA,KAAAA,EAAtE+C,KAAE,gBAAc/C,MAAG,kBAAgBA,OAA2C,MAAO,KAAFC,OAAAA,EAAQyK,KAAE5W,GAAEwwM,iBAAexwM,GAAEywM,gBAAAA,CAAetG,GAAGvzL,EAAAA,KAAAA,CAAIA,GAAEiiM,EAAAA,OAAgBhyM,MAAGoI,QAAGA,KAAEtN,GAAEu6B,WAASv6B,KAAEA,MAAGsN,KAAEtN,GAAE0kH,iBAAep3G,GAAE0oM,eAAa1oM,GAAE44D,eAAa3rC,QAAUr1B,MAAqCA,KAAE5G,IAAiB,UAAf2W,MAAnCA,KAAE5W,GAAEwwM,iBAAexwM,GAAE0wM,aAAkBvG,GAAGvzL,EAAAA,IAAG,UACleA,QAAR+f,KAAEwxK,GAAGvxL,EAAAA,MAAU,MAAIA,GAAEyiC,OAAK,MAAIziC,GAAEyiC,SAAKziC,KAAE,UAAU/P,KAAE,MAAK+P,KAAE3W,KAAK4G,OAAI+P,KAAE;AAAgU,oBAA/ToY,KAAE6hL,IAAG/pM,KAAE,gBAAe4mB,KAAE,gBAAe7sB,KAAE,SAAW,iBAAeqL,MAAG,kBAAgBA,OAAE8iB,KAAE8jL,IAAGhsM,KAAE,kBAAiB4mB,KAAE,kBAAiB7sB,KAAE,YAAU81B,KAAE,QAAM9vB,KAAEoI,KAAEumM,IAAG3uM,EAAAA,GAAGkwB,KAAE,QAAMngB,KAAE3H,KAAEumM,IAAG5+L,EAAAA,IAAG3H,KAAE,IAAI+f,GAAEloB,IAAEjG,KAAE,SAAQgG,IAAE7G,IAAE2B,EAAAA,GAAKuqB,SAAOyK,IAAE1nB,GAAEuhM,gBAAcz5K,IAAEjwB,KAAE,MAAKqjM,GAAGxoM,EAAAA,MAAK1B,QAAI+uB,KAAE,IAAIA,GAAEtB,IAAE7sB,KAAE,SAAQ+V,IAAE5W,IAAE2B,EAAAA,GAAKuqB,SAAO6K,IAAE/H,GAAEwhL,gBAAc75K,IAAE7vB,KAAEkoB,KAAG2H,KAAE7vB,IAAKD,MAAG+P;AAAEzK,qBAAE;AAAa,yBAARuhB,KAAE9W,IAAE/V,KAAE,GAAMk2B,KAAhB/H,KAAEnoB,IAAkBkwB,IAAEA,KAAE+hL,GAAG/hL,EAAAA;AAAGl2B,sBAAAA;AAAQ,yBAAJk2B,KAAE,GAAMjwB,KAAE4mB,IAAE5mB,IAAEA,KAAEgyM,GAAGhyM,EAAAA;AAAGiwB,sBAAAA;AAAI,2BAAK,IAAEl2B,KAAEk2B;AAAG/H,sBAAAA,KAAE8pL,GAAG9pL,EAAAA,GAAGnuB;AAAI,2BAAK,IAAEk2B,KAAEl2B;AAAG6sB,sBAAAA,KACpforL,GAAGprL,EAAAA,GAAGqJ;AAAI,2BAAKl2B,QAAK;AAAC,0BAAGmuB,OAAItB,MAAG,SAAOA,MAAGsB,OAAItB,GAAE06K;AAAU,8BAAMj8L;AAAE6iB,sBAAAA,KAAE8pL,GAAG9pL,EAAAA,GAAGtB,KAAEorL,GAAGprL,EAAAA;oBAAAA;AAAGsB,oBAAAA,KAAE;kBAAA;;AAAUA,kBAAAA,KAAE;AAAK,yBAAOnoB,MAAGkyM,GAAGzzK,IAAEr2B,IAAEpI,IAAEmoB,IAAAA,KAAE,GAAI,SAAOpY,MAAG,SAAO+f,MAAGoiL,GAAGzzK,IAAE3O,IAAE/f,IAAEoY,IAAAA,IAAE;cAAA;AAAiE,kBAAG,cAA1CnoB,MAAjBoI,KAAEhP,KAAEu1M,IAAGv1M,EAAAA,IAAGi8B,QAAWgwF,YAAUj9G,GAAEi9G,SAAS15F,YAAAA,MAA+B,YAAU3rB,MAAG,WAASoI,GAAErI;AAAK,oBAAIq/B,KAAEwvK;uBAAWR,GAAGhmM,EAAAA;AAAG,oBAAGymM;AAAGzvK,kBAAAA,KAAEowK;qBAAO;AAACpwK,kBAAAA,KAAEkwK;AAAG,sBAAIjwK,KAAEgwK;gBAAAA;;AAAAA,iBAAQrvM,KAAEoI,GAAEi9G,aAAW,YAAUrlH,GAAE2rB,YAAAA,MAAgB,eAAavjB,GAAErI,QAAM,YAAUqI,GAAErI,UAAQq/B,KAAEmwK;AAClV,sBADyVnwK,OAAIA,KAAEA,GAAE/5B,IAAEjM,EAAAA,KAAKi1M,GAAG5vK,IAAEW,IAAEjmC,IAAE2B,EAAAA,KAAWukC,MAAGA,GAAEh6B,IAAE+C,IAAEhP,EAAAA,GAAG,eAAaiM,OAAIg6B,KAAEj3B,GAAEsyL,kBACter7J,GAAEw7J,cAAY,aAAWzyL,GAAErI,QAAMi7L,GAAG5yL,IAAE,UAASA,GAAErO,KAAAA,IAAOslC,KAAEjmC,KAAEu1M,IAAGv1M,EAAAA,IAAGi8B,QAAchwB,IAAAA;gBAAG,KAAK;AAAA,mBAAa+oM,GAAG/uK,EAAAA,KAAI,WAASA,GAAE+wK,qBAAgBE,KAAGjxK,IAAEkxK,KAAGn3M,IAAEo3M,KAAG;AAAK;gBAAM,KAAK;AAAWA,uBAAGD,KAAGD,KAAG;AAAK;gBAAM,KAAK;AAAYG,uBAAAA;AAAM;gBAAM,KAAK;gBAAc,KAAK;gBAAU,KAAK;AAAUA,uBAAAA,OAAMC,GAAGjyK,IAAEtlC,IAAE2B,EAAAA;AAAG;gBAAM,KAAK;AAAkB,sBAAGu1M;AAAG;gBAAM,KAAK;gBAAU,KAAK;AAAQK,qBAAGjyK,IAAEtlC,IAAE2B,EAAAA;cAAAA;AAAG,kBAAIykC;AAAE,kBAAGysB;AAAG1mD,mBAAE;AAAC,0BAAOD,IAAAA;oBAAG,KAAK;AAAmB,0BAAIw5B,KAAE;AAAqB,4BAAMv5B;oBAAE,KAAK;AAAiBu5B,sBAAAA,KAAE;AAAmB,4BAAMv5B;oBACrf,KAAK;AAAoBu5B,sBAAAA,KAAE;AAAsB,4BAAMv5B;kBAAAA;AAAEu5B,kBAAAA,KAAAA;gBAAE;;AAAYivK,qBAAGF,GAAGvoM,IAAElM,EAAAA,MAAK0lC,KAAE,sBAAoB,cAAYx5B,MAAG,QAAMlM,GAAEkuM,YAAUxoK,KAAE;AAAsBA,cAAAA,OAAI4uK,MAAI,SAAOt0M,GAAE6yM,WAAS8B,MAAI,yBAAuBjvK,KAAE,uBAAqBA,MAAGivK,OAAKvuK,KAAE4nK,GAAAA,MAAYD,MAAG,YAARD,MAAGnsM,MAAkBmsM,IAAGltM,QAAMktM,IAAG3hF,aAAYwoF,KAAAA,QAAkB,KAAVzuK,KAAEivK,GAAGl1M,IAAEylC,EAAAA,GAAO7gC,WAAS6gC,KAAE,IAAI6rK,GAAG7rK,IAAEx5B,IAAE,MAAKlM,IAAE2B,EAAAA,GAAG2jC,GAAEhvB,KAAK,EAACilJ,OAAM71H,IAAEqoC,WAAU7nC,GAAAA,CAAAA,GAAIE,KAAEV,GAAE7P,OAAKuQ,KAAW,UAARA,KAAEsuK,GAAG10M,EAAAA,OAAc0lC,GAAE7P,OAAKuQ,QAASA,KAAEiuK,KA1BjK,SAAYnoM,IAAEC,IAAAA;AAAG,wBAAOD,IAAAA;kBAAG,KAAK;AAAiB,2BAAOwoM,GAAGvoM,EAAAA;kBAAG,KAAK;AAAW,2BAAG,OAAKA,GAAEgvK,QAAa,QAAKq5B,KAAAA,MAAaD;kBAAG,KAAK;AAAY,4BAAOroM,KAAEC,GAAE0pB,UAAS0+K,MAAIC,KAAG,OAAKtoM;kBAAE;AAAQ,2BAAO;gBAAA;cAAA,EA0BrBA,IAAElM,EAAAA,IAzB1b,SAAYkM,IAAEC,IAAAA;AAAG,oBAAGwoM;AAAG,yBAAM,qBAAmBzoM,MAAAA,CAAI2mD,MAAI4hJ,GAAGvoM,IAAEC,EAAAA,KAAID,KAAE8hM,GAAAA,GAAK9uF,MAAG6uF,MAAGD,MAAG,MAAK6G,KAAAA,OAAMzoM,MAAG;AAAK,wBAAOA,IAAAA;kBAAG,KAAK;AAAQ,2BAAO;kBAAK,KAAK;AAAW,wBAAA,EAAKC,GAAEmvK,WAASnvK,GAAEovK,UAAQpvK,GAAEkvK,YAAUlvK,GAAEmvK,WAASnvK,GAAEovK,QAAO;AAAC,0BAAGpvK,GAAEm9C,QAAM,IAAEn9C,GAAEm9C,KAAKzkD;AAAO,+BAAOsH,GAAEm9C;AAAK,0BAAGn9C,GAAEgvK;AAAM,+BAAOzwJ,OAAO+0B,aAAatzC,GAAEgvK,KAAAA;oBAAAA;AAAO,2BAAO;kBAAK,KAAK;AAAiB,2BAAOm5B,MAAI,SAAOnoM,GAAE0mM,SAAO,OAAK1mM,GAAE0pB;kBAAK;AAAQ,2BAAO;gBAAA;cAAA,EAyB8D3pB,IAAElM,EAAAA,OAA2B,KAAxBC,KAAEk1M,GAAGl1M,IAAE,eAAA,GAAqB4E,WAASlD,KAAE,IAAI4vM,GAAG,iBACnf,eAAc,MAAKvxM,IAAE2B,EAAAA,GAAG2jC,GAAEhvB,KAAK,EAACilJ,OAAM55J,IAAEosE,WAAU9tE,GAAAA,CAAAA,GAAI0B,GAAEk0B,OAAKuQ;YAAAA;AAAGkvK,eAAGhwK,IAAEn5B,EAAAA;UAAAA,CAAAA;QAAAA;AAAK,iBAASysM,GAAG1sM,IAAEC,IAAEnM,IAAAA;AAAG,iBAAM,EAAC+rB,UAAS7f,IAAE6zC,UAAS5zC,IAAEqiM,eAAcxuM,GAAAA;QAAAA;AAAG,iBAASm1M,GAAGjpM,IAAEC,IAAAA;AAAG,mBAAQnM,KAAEmM,KAAE,WAAUlM,KAAE,CAAA,GAAG,SAAOiM,MAAG;AAAC,gBAAIvK,KAAEuK,IAAEyhB,KAAEhsB,GAAEklM;AAAU,kBAAIllM,GAAE03C,OAAK,SAAO1rB,OAAIhsB,KAAEgsB,IAAY,SAAVA,KAAE65K,GAAGt7L,IAAElM,EAAAA,MAAYC,GAAEga,QAAQ2+L,GAAG1sM,IAAEyhB,IAAEhsB,EAAAA,CAAAA,GAAc,SAAVgsB,KAAE65K,GAAGt7L,IAAEC,EAAAA,MAAYlM,GAAEqW,KAAKsiM,GAAG1sM,IAAEyhB,IAAEhsB,EAAAA,CAAAA,IAAKuK,KAAEA,GAAEm8L;UAAAA;AAAO,iBAAOpoM;QAAAA;AAAE,iBAAS64M,GAAG5sM,IAAAA;AAAG,cAAG,SAAOA;AAAE,mBAAO;AAAK,aAAA;AAAGA,YAAAA,KAAEA,GAAEm8L;UAAAA,SAAan8L,MAAG,MAAIA,GAAEmtC;AAAK,iBAAOntC,MAAI;QAAA;AACxa,iBAAS6sM,GAAG7sM,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,mBAAQgsB,KAAExhB,GAAEmiM,YAAWhpK,KAAE,CAAA,GAAG,SAAOtlC,MAAGA,OAAIC,MAAG;AAAC,gBAAIgP,KAAEjP,IAAE6G,KAAEoI,GAAEm5L,WAAUxoM,KAAEqP,GAAE43L;AAAU,gBAAG,SAAOhgM,MAAGA,OAAI5G;AAAE;AAAM,kBAAIgP,GAAEoqC,OAAK,SAAOz5C,OAAIqP,KAAErP,IAAE+B,KAAa,SAAVkF,KAAE2gM,GAAGxnM,IAAE2tB,EAAAA,MAAY2X,GAAErrB,QAAQ2+L,GAAG54M,IAAE6G,IAAEoI,EAAAA,CAAAA,IAAKtN,MAAc,SAAVkF,KAAE2gM,GAAGxnM,IAAE2tB,EAAAA,MAAY2X,GAAEhvB,KAAKsiM,GAAG54M,IAAE6G,IAAEoI,EAAAA,CAAAA,IAAMjP,KAAEA,GAAEqoM;UAAAA;AAAO,gBAAI/iK,GAAEzgC,UAAQqH,GAAEoK,KAAK,EAACilJ,OAAMpvJ,IAAE4hE,WAAUzoC,GAAAA,CAAAA;QAAAA;AAAI,iBAAS0zK,KAAAA;QAAAA;AAAM,YAAIC,KAAG,MAAKC,KAAG;AAAK,iBAASC,GAAGjtM,IAAEC,IAAAA;AAAG,kBAAOD,IAAAA;YAAG,KAAK;YAAS,KAAK;YAAQ,KAAK;YAAS,KAAK;AAAW,qBAAA,CAAA,CAAQC,GAAEshI;UAAAA;AAAU,iBAAA;QAAM;AAC3b,iBAAS2rE,GAAGltM,IAAEC,IAAAA;AAAG,iBAAM,eAAaD,MAAG,aAAWA,MAAG,eAAaA,MAAG,YAAA,OAAkBC,GAAE8zD,YAAU,YAAA,OAAkB9zD,GAAE8zD,YAAU,YAAA,OAAkB9zD,GAAEozG,2BAAyB,SAAOpzG,GAAEozG,2BAAyB,QAAMpzG,GAAEozG,wBAAwBC;QAAAA;AAAO,YAAI92G,KAAG,cAAA,OAAoBmwE,aAAWA,aAAAA,QAAkBwgI,KAAG,cAAA,OAAoBvgI,eAAaA,eAAAA;AAAoB,iBAASwgI,GAAGptM,IAAAA;AAAG,gBAAIA,GAAEqE,WAASrE,GAAEigH,cAAY,KAAG,MAAIjgH,GAAEqE,aAAoB,SAATrE,KAAEA,GAAEyqD,UAAezqD,GAAEigH,cAAY;QAAA;AACxc,iBAASotF,GAAGrtM,IAAAA;AAAG,iBAAK,QAAMA,IAAEA,KAAEA,GAAEyqM,aAAY;AAAC,gBAAIxqM,KAAED,GAAEqE;AAAS,gBAAG,MAAIpE,MAAG,MAAIA;AAAE;UAAA;AAAM,iBAAOD;QAAAA;AAAE,iBAASstM,GAAGttM,IAAAA;AAAGA,UAAAA,KAAEA,GAAEutM;AAAgB,mBAAQttM,KAAE,GAAED,MAAG;AAAC,gBAAG,MAAIA,GAAEqE,UAAS;AAAC,kBAAIvQ,KAAEkM,GAAE2pB;AAAK,kBAAG,QAAM71B,MAAG,SAAOA,MAAG,SAAOA,IAAE;AAAC,oBAAG,MAAImM;AAAE,yBAAOD;AAAEC,gBAAAA;cAAAA;AAAQ,yBAAOnM,MAAGmM;YAAAA;AAAID,YAAAA,KAAEA,GAAEutM;UAAAA;AAAgB,iBAAO;QAAA;AAAK,YAAIC,KAAG;AAA0D,YAAIC,KAAGh1M,KAAKooE,OAAAA,EAAS3kE,SAAS,EAAA,EAAItG,MAAM,CAAA,GAAG83M,KAAG,kBAAgBD,IAAGE,KAAG,kBAAgBF,IAAGd,KAAG,sBAAoBc,IAAGG,KAAG,mBAAiBH;AAC9d,iBAASxP,GAAGj+L,IAAAA;AAAG,cAAIC,KAAED,GAAE0tM,EAAAA;AAAI,cAAGztM;AAAE,mBAAOA;AAAE,mBAAQnM,KAAEkM,GAAE0+G,YAAW5qH,MAAG;AAAC,gBAAGmM,KAAEnM,GAAE64M,EAAAA,KAAK74M,GAAE45M,EAAAA,GAAI;AAAe,kBAAd55M,KAAEmM,GAAEi8L,WAAa,SAAOj8L,GAAE+zD,SAAO,SAAOlgE,MAAG,SAAOA,GAAEkgE;AAAM,qBAAIh0D,KAAEstM,GAAGttM,EAAAA,GAAG,SAAOA,MAAG;AAAC,sBAAGlM,KAAEkM,GAAE0tM,EAAAA;AAAI,2BAAO55M;AAAEkM,kBAAAA,KAAEstM,GAAGttM,EAAAA;gBAAAA;AAAG,qBAAOC;YAAAA;AAAMnM,YAAAA,MAAJkM,KAAElM,IAAM4qH;UAAAA;AAAW,iBAAO;QAAA;AAAK,iBAASg8E,GAAG16L,IAAAA;AAAkB,iBAAA,EAAfA,KAAEA,GAAE0tM,EAAAA,KAAK1tM,GAAE2sM,EAAAA,MAAc,MAAI3sM,GAAEmtC,OAAK,MAAIntC,GAAEmtC,OAAK,OAAKntC,GAAEmtC,OAAK,MAAIntC,GAAEmtC,MAAI,OAAKntC;QAAAA;AAAE,iBAASspM,IAAGtpM,IAAAA;AAAG,cAAG,MAAIA,GAAEmtC,OAAK,MAAIntC,GAAEmtC;AAAI,mBAAOntC,GAAE26L;AAAU,gBAAMz5L,MAAMukB,GAAE,EAAA,CAAA;QAAA;AAAM,iBAASm1K,GAAG56L,IAAAA;AAAG,iBAAOA,GAAE2tM,EAAAA,KAAK;QAAA;AAClb,iBAASxB,GAAGnsM,IAAAA;AAAG,cAAIC,KAAED,GAAE4tM,EAAAA;AAAkC,iBAAA,WAArB3tM,OAAIA,KAAED,GAAE4tM,EAAAA,IAAI,oBAAIn2M,QAAYwI;QAAAA;AAAE,YAAI4tM,KAAG,CAAA,GAAGC,KAAAA;AAAM,iBAASC,GAAG/tM,IAAAA;AAAG,iBAAM,EAAC+lC,SAAQ/lC,GAAAA;QAAAA;AAAG,iBAAS65B,GAAE75B,IAAAA;AAAG,cAAE8tM,OAAK9tM,GAAE+lC,UAAQ8nK,GAAGC,EAAAA,GAAID,GAAGC,EAAAA,IAAI,MAAKA;QAAAA;AAAM,iBAASv0K,GAAEv5B,IAAEC,IAAAA;AAAG6tM,gBAAKD,GAAGC,EAAAA,IAAI9tM,GAAE+lC,SAAQ/lC,GAAE+lC,UAAQ9lC;QAAAA;AAAE,YAAI+tM,KAAG,CAAA,GAAG9lL,KAAE6lL,GAAGC,EAAAA,GAAI1oL,KAAEyoL,GAAAA,KAAG,GAAIE,KAAGD;AAC5P,iBAASE,GAAGluM,IAAEC,IAAAA;AAAG,cAAInM,KAAEkM,GAAEtF,KAAK2kJ;AAAa,cAAA,CAAIvrJ;AAAE,mBAAOk6M;AAAG,cAAIj6M,KAAEiM,GAAE26L;AAAU,cAAG5mM,MAAGA,GAAEo6M,gDAA8CluM;AAAE,mBAAOlM,GAAEq6M;AAA0C,cAAS3sL,IAALhsB,KAAE,CAAA;AAAK,eAAIgsB,MAAK3tB;AAAE2B,YAAAA,GAAEgsB,EAAAA,IAAGxhB,GAAEwhB,EAAAA;AAAoH,iBAAjH1tB,QAAIiM,KAAEA,GAAE26L,WAAYwT,8CAA4CluM,IAAED,GAAEouM,4CAA0C34M,KAAUA;QAAAA;AAAE,iBAAS44M,GAAGruM,IAAAA;AAAyB,iBAAO,SAA7BA,KAAEA,GAAEo/I;QAAAA;AAA8C,iBAASkvD,KAAAA;AAAKz0K,aAAEvU,EAAAA,GAAGuU,GAAE3R,EAAAA;QAAAA;AAAG,iBAASqmL,GAAGvuM,IAAEC,IAAEnM,IAAAA;AAAG,cAAGo0B,GAAE6d,YAAUioK;AAAG,kBAAM9sM,MAAMukB,GAAE,GAAA,CAAA;AAAM8T,aAAErR,IAAEjoB,EAAAA,GAAGs5B,GAAEjU,IAAExxB,EAAAA;QAAAA;AAC/e,iBAAS06M,GAAGxuM,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEiM,GAAE26L;AAAgC,cAAtB36L,KAAEC,GAAEm/I,mBAAqB,cAAA,OAAoBrrJ,GAAE06M;AAAgB,mBAAO36M;AAAwB,mBAAQ2B,MAA9B1B,KAAEA,GAAE06M,gBAAAA;AAAiC,gBAAA,EAAKh5M,MAAKuK;AAAG,oBAAMkB,MAAMukB,GAAE,KAAIgvK,GAAGx0L,EAAAA,KAAI,WAAUxK,EAAAA,CAAAA;AAAI,iBAAO5B,GAAE,CAAA,GAAGC,IAAEC,EAAAA;QAAAA;AAAG,iBAAS26M,GAAG1uM,IAAAA;AAAyG,iBAAtGA,MAAGA,KAAEA,GAAE26L,cAAY36L,GAAE2uM,6CAA2CX,IAAGC,KAAG/lL,GAAE6d,SAAQxM,GAAErR,IAAEloB,EAAAA,GAAGu5B,GAAEjU,IAAEA,GAAEygB,OAAAA,GAAAA;QAAe;AAAG,iBAAS6oK,GAAG5uM,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEiM,GAAE26L;AAAU,cAAA,CAAI5mM;AAAE,kBAAMmN,MAAMukB,GAAE,GAAA,CAAA;AAAM3xB,UAAAA,MAAGkM,KAAEwuM,GAAGxuM,IAAEC,IAAEguM,EAAAA,GAAIl6M,GAAE46M,4CAA0C3uM,IAAE65B,GAAEvU,EAAAA,GAAGuU,GAAE3R,EAAAA,GAAGqR,GAAErR,IAAEloB,EAAAA,KAAI65B,GAAEvU,EAAAA,GAAGiU,GAAEjU,IAAExxB,EAAAA;QAAAA;AAC7e,YAAI+6M,KAAG,MAAKC,KAAG,MAAKC,KAAGx6M,GAAE4pM,0BAAyB6Q,KAAGz6M,GAAEqqM,2BAA0BqQ,KAAG16M,GAAE26M,yBAAwBC,KAAG56M,GAAE66M,sBAAqBC,KAAG96M,GAAE+6M,uBAAsBC,KAAGh7M,GAAE2rM,cAAasP,KAAGj7M,GAAEk7M,kCAAiCC,KAAGn7M,GAAEo7M,4BAA2BC,KAAGr7M,GAAE+sM,+BAA8BuO,KAAGt7M,GAAEsqM,yBAAwBiR,KAAGv7M,GAAEw7M,sBAAqBC,KAAGz7M,GAAE07M,uBAAsBC,KAAG,CAAA,GAAGC,KAAAA,WAAYd,KAAGA,KAAG,WAAA;QAAA,GAAae,KAAG,MAAKC,KAAG,MAAKC,KAAAA,OAAMC,KAAGhB,GAAAA,GAAKl2K,KAAE,MAAIk3K,KAAGhB,KAAG,WAAA;AAAW,iBAAOA,GAAAA,IAAKgB;QAAAA;AACtd,iBAASC,KAAAA;AAAK,kBAAOhB,GAAAA,GAAAA;YAAM,KAAKE;AAAG,qBAAO;YAAG,KAAKE;AAAG,qBAAO;YAAG,KAAKC;AAAG,qBAAO;YAAG,KAAKC;AAAG,qBAAO;YAAG,KAAKE;AAAG,qBAAO;YAAG;AAAQ,oBAAM9uM,MAAMukB,GAAE,GAAA,CAAA;UAAA;QAAA;AAAQ,iBAASgrL,GAAGzwM,IAAAA;AAAG,kBAAOA,IAAAA;YAAG,KAAK;AAAG,qBAAO0vM;YAAG,KAAK;AAAG,qBAAOE;YAAG,KAAK;AAAG,qBAAOC;YAAG,KAAK;AAAG,qBAAOC;YAAG,KAAK;AAAG,qBAAOE;YAAG;AAAQ,oBAAM9uM,MAAMukB,GAAE,GAAA,CAAA;UAAA;QAAA;AAAQ,iBAASirL,GAAG1wM,IAAEC,IAAAA;AAAW,iBAARD,KAAEywM,GAAGzwM,EAAAA,GAAU+uM,GAAG/uM,IAAEC,EAAAA;QAAAA;AAAG,iBAAS0wM,GAAG3wM,IAAEC,IAAEnM,IAAAA;AAAW,iBAARkM,KAAEywM,GAAGzwM,EAAAA,GAAUgvM,GAAGhvM,IAAEC,IAAEnM,EAAAA;QAAAA;AAAG,iBAAS88M,KAAAA;AAAK,cAAG,SAAOP,IAAG;AAAC,gBAAIrwM,KAAEqwM;AAAGA,iBAAG,MAAKpB,GAAGjvM,EAAAA;UAAAA;AAAG6wM,aAAAA;QAAAA;AAC3a,iBAASA,KAAAA;AAAK,cAAA,CAAIP,MAAI,SAAOF,IAAG;AAACE,iBAAAA;AAAM,gBAAItwM,KAAE;AAAE,gBAAA;AAAI,kBAAIC,KAAEmwM;AAAGM,iBAAG,IAAG,WAAA;AAAW,uBAAK1wM,KAAEC,GAAEtH,QAAOqH,MAAI;AAAC,sBAAIlM,KAAEmM,GAAED,EAAAA;AAAG,qBAAA;AAAGlM,oBAAAA,KAAEA,GAAAA,IAAE;kBAAA,SAAU,SAAOA;gBAAAA;cAAAA,CAAAA,GAAMs8M,KAAG;YAAA,SAAWt8M,IAAN;AAAS,oBAAM,SAAOs8M,OAAKA,KAAGA,GAAGx6M,MAAMoK,KAAE,CAAA,IAAIgvM,GAAGU,IAAGkB,EAAAA,GAAI98M;YAAAA,UAAG;AAAQw8M,mBAAAA;YAAG;UAAA;QAAA;AAAK,YAAIQ,KAAGhe,GAAG3c;AAAwB,iBAAS46B,GAAG/wM,IAAEC,IAAAA;AAAG,cAAGD,MAAGA,GAAE0zG,cAAa;AAA4B,qBAAQ5/G,MAAnCmM,KAAEpM,GAAE,CAAA,GAAGoM,EAAAA,GAAGD,KAAEA,GAAE0zG;AAAAA,yBAAqCzzG,GAAEnM,EAAAA,MAAKmM,GAAEnM,EAAAA,IAAGkM,GAAElM,EAAAA;AAAI,mBAAOmM;UAAAA;AAAE,iBAAOA;QAAAA;AAAE,YAAI+wM,KAAGjD,GAAG,IAAA,GAAMkD,KAAG,MAAKC,KAAG,MAAKC,KAAG;AAAK,iBAASC,KAAAA;AAAKD,eAAGD,KAAGD,KAAG;QAAA;AAC5b,iBAASI,GAAGrxM,IAAAA;AAAG,cAAIC,KAAE+wM,GAAGjrK;AAAQlM,aAAEm3K,EAAAA,GAAIhxM,GAAEtF,KAAKg5B,SAASg7G,gBAAczuI;QAAAA;AAAE,iBAASqxM,GAAGtxM,IAAEC,IAAAA;AAAG,iBAAK,SAAOD,MAAG;AAAC,gBAAIlM,KAAEkM,GAAEk8L;AAAU,iBAAIl8L,GAAEuxM,aAAWtxM,QAAKA,IAAE;AAAA,kBAAG,SAAOnM,OAAIA,GAAEy9M,aAAWtxM,QAAKA;AAAE;AAAWnM,cAAAA,GAAEy9M,cAAYtxM;YAAAA;AAAOD,cAAAA,GAAEuxM,cAAYtxM,IAAE,SAAOnM,OAAIA,GAAEy9M,cAAYtxM;AAAGD,YAAAA,KAAEA,GAAEm8L;UAAAA;QAAAA;AAAQ,iBAASqV,GAAGxxM,IAAEC,IAAAA;AAAGgxM,eAAGjxM,IAAEmxM,KAAGD,KAAG,MAAsB,UAAjBlxM,KAAEA,GAAEoxB,iBAAuB,SAAOpxB,GAAEyxM,iBAAe,MAAKzxM,GAAE0xM,QAAMzxM,QAAK0xM,KAAAA,OAAO3xM,GAAEyxM,eAAa;QAAA;AACvY,iBAASG,GAAG5xM,IAAEC,IAAAA;AAAG,cAAGkxM,OAAKnxM,MAAAA,UAAQC,MAAG,MAAIA;AAAmG,gBAA7F,YAAA,OAAkBA,MAAG,eAAaA,OAAEkxM,KAAGnxM,IAAEC,KAAE,aAAWA,KAAE,EAACqS,SAAQtS,IAAE6xM,cAAa5xM,IAAE1F,MAAK,KAAA,GAAS,SAAO22M,IAAG;AAAC,kBAAG,SAAOD;AAAG,sBAAM/vM,MAAMukB,GAAE,GAAA,CAAA;AAAMyrL,mBAAGjxM,IAAEgxM,GAAG7/K,eAAa,EAACsgL,OAAM,GAAED,cAAaxxM,IAAE6xM,YAAW,KAAA;YAAA;AAAWZ,mBAAGA,GAAG32M,OAAK0F;AAAE,iBAAOD,GAAE0uI;QAAAA;AAAc,YAAIqjE,KAAAA;AAAM,iBAASC,GAAGhyM,IAAAA;AAAGA,UAAAA,GAAEiyM,cAAY,EAACC,WAAUlyM,GAAEq8L,eAAc8V,iBAAgB,MAAKC,gBAAe,MAAK/6K,QAAO,EAACm9D,SAAQ,KAAA,GAAM69G,SAAQ,KAAA;QAAA;AAC1a,iBAASC,GAAGtyM,IAAEC,IAAAA;AAAGD,UAAAA,KAAEA,GAAEiyM,aAAYhyM,GAAEgyM,gBAAcjyM,OAAIC,GAAEgyM,cAAY,EAACC,WAAUlyM,GAAEkyM,WAAUC,iBAAgBnyM,GAAEmyM,iBAAgBC,gBAAepyM,GAAEoyM,gBAAe/6K,QAAOr3B,GAAEq3B,QAAOg7K,SAAQryM,GAAEqyM,QAAAA;QAAAA;AAAU,iBAASE,GAAGvyM,IAAEC,IAAAA;AAAG,iBAAM,EAACuyM,WAAUxyM,IAAEyyM,MAAKxyM,IAAEktC,KAAI,GAAEzR,SAAQ,MAAKs6C,UAAS,MAAKz7E,MAAK,KAAA;QAAA;AAAM,iBAASm4M,GAAG1yM,IAAEC,IAAAA;AAAmB,cAAG,UAAnBD,KAAEA,GAAEiyM,cAAwB;AAAY,gBAAIn+M,MAAfkM,KAAEA,GAAEq3B,QAAem9D;AAAQ,qBAAO1gG,KAAEmM,GAAE1F,OAAK0F,MAAGA,GAAE1F,OAAKzG,GAAEyG,MAAKzG,GAAEyG,OAAK0F,KAAGD,GAAEw0F,UAAQv0F;UAAAA;QAAAA;AACrZ,iBAAS0yM,GAAG3yM,IAAEC,IAAAA;AAAG,cAAInM,KAAEkM,GAAEiyM,aAAYl+M,KAAEiM,GAAEk8L;AAAU,cAAG,SAAOnoM,MAAoBD,QAAhBC,KAAEA,GAAEk+M,cAAmB;AAAC,gBAAIx8M,KAAE,MAAKgsB,KAAE;AAAyB,gBAAG,UAAvB3tB,KAAEA,GAAEq+M,kBAA4B;AAAC,iBAAE;AAAC,oBAAI/4K,KAAE,EAACo5K,WAAU1+M,GAAE0+M,WAAUC,MAAK3+M,GAAE2+M,MAAKtlK,KAAIr5C,GAAEq5C,KAAIzR,SAAQ5nC,GAAE4nC,SAAQs6C,UAASliF,GAAEkiF,UAASz7E,MAAK,KAAA;AAAM,yBAAOknB,KAAEhsB,KAAEgsB,KAAE2X,KAAE3X,KAAEA,GAAElnB,OAAK6+B,IAAEtlC,KAAEA,GAAEyG;cAAAA,SAAW,SAAOzG;AAAG,uBAAO2tB,KAAEhsB,KAAEgsB,KAAExhB,KAAEwhB,KAAEA,GAAElnB,OAAK0F;YAAAA;AAAOxK,cAAAA,KAAEgsB,KAAExhB;AAAiH,mBAA/GnM,KAAE,EAACo+M,WAAUn+M,GAAEm+M,WAAUC,iBAAgB18M,IAAE28M,gBAAe3wL,IAAE4V,QAAOtjC,GAAEsjC,QAAOg7K,SAAQt+M,GAAEs+M,QAAAA,GAAAA,MAASryM,GAAEiyM,cAAYn+M;UAAAA;AAA4B,oBAAnBkM,KAAElM,GAAEs+M,kBAAwBt+M,GAAEq+M,kBAAgBlyM,KAAED,GAAEzF,OACnf0F,IAAEnM,GAAEs+M,iBAAenyM;QAAAA;AACnB,iBAAS2yM,GAAG5yM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEuK,GAAEiyM;AAAYF,eAAAA;AAAM,cAAItwL,KAAEhsB,GAAE08M,iBAAgB/4K,KAAE3jC,GAAE28M,gBAAervM,KAAEtN,GAAE4hC,OAAOm9D;AAAQ,cAAG,SAAOzxF,IAAE;AAACtN,YAAAA,GAAE4hC,OAAOm9D,UAAQ;AAAK,gBAAI75F,KAAEoI,IAAErP,KAAEiH,GAAEJ;AAAKI,YAAAA,GAAEJ,OAAK,MAAK,SAAO6+B,KAAE3X,KAAE/tB,KAAE0lC,GAAE7+B,OAAK7G,IAAE0lC,KAAEz+B;AAAE,gBAAIzF,KAAE8K,GAAEk8L;AAAU,gBAAG,SAAOhnM,IAAE;AAAiB,kBAAIktB,MAApBltB,KAAEA,GAAE+8M,aAAoBG;AAAehwL,cAAAA,OAAIgX,OAAI,SAAOhX,KAAEltB,GAAEi9M,kBAAgBz+M,KAAE0uB,GAAE7nB,OAAK7G,IAAEwB,GAAEk9M,iBAAez3M;YAAAA;UAAAA;AAAI,cAAG,SAAO8mB,IAAE;AAA8B,iBAA7BW,KAAE3sB,GAAEy8M,WAAU94K,KAAE,GAAElkC,KAAExB,KAAEiH,KAAE,UAAO;AAACoI,cAAAA,KAAE0e,GAAEgxL;AAAK,kBAAIl9M,KAAEksB,GAAE+wL;AAAU,mBAAIz+M,KAAEgP,QAAKA,IAAE;AAAC,yBAAO7N,OAAIA,KAAEA,GAAEqF,OAAK,EAACi4M,WAAUj9M,IAAEk9M,MAAK,GAAEtlK,KAAI1rB,GAAE0rB,KAAIzR,SAAQja,GAAEia,SAAQs6C,UAASv0D,GAAEu0D,UACrfz7E,MAAK,KAAA;AAAOyF,mBAAE;AAAC,sBAAI6iB,KAAE7iB,IAAE0K,KAAE+W;AAAU,0BAAR1e,KAAE9C,IAAE1K,KAAEzB,IAAS4W,GAAEyiC,KAAAA;oBAAK,KAAK;AAAc,0BAAG,cAAA,QAAftqB,KAAEnY,GAAEgxB,UAAiC;AAACtZ,wBAAAA,KAAES,GAAEjvB,KAAK2B,IAAE6sB,IAAErf,EAAAA;AAAG,8BAAM/C;sBAAAA;AAAEoiB,sBAAAA,KAAES;AAAE,4BAAM7iB;oBAAE,KAAK;AAAE6iB,sBAAAA,GAAE0jG,QAAAA,QAAM1jG,GAAE0jG,QAAY;oBAAG,KAAK;AAAsD,0BAAG,SAA3CxjH,KAAE,cAAA,QAAd8f,KAAEnY,GAAEgxB,WAAgC7Y,GAAEjvB,KAAK2B,IAAE6sB,IAAErf,EAAAA,IAAG8f;AAA0B,8BAAM7iB;AAAEoiB,sBAAAA,KAAEvuB,GAAE,CAAA,GAAGuuB,IAAErf,EAAAA;AAAG,4BAAM/C;oBAAE,KAAK;AAAE+xM,2BAAAA;kBAAG;gBAAA;AAAI,yBAAOtwL,GAAEu0D,aAAWh2E,GAAEumH,SAAO,IAAe,UAAZxjH,KAAEtN,GAAE48M,WAAiB58M,GAAE48M,UAAQ,CAAC5wL,EAAAA,IAAG1e,GAAEqH,KAAKqX,EAAAA;cAAAA;AAASlsB,gBAAAA,KAAE,EAACi9M,WAAUj9M,IAAEk9M,MAAK1vM,IAAEoqC,KAAI1rB,GAAE0rB,KAAIzR,SAAQja,GAAEia,SAAQs6C,UAASv0D,GAAEu0D,UAASz7E,MAAK,KAAA,GAAM,SAAOrF,MAAGxB,KAAEwB,KAAEK,IAAEoF,KAAEynB,MAAGltB,KAAEA,GAAEqF,OAAKhF,IAAE6jC,MAAGr2B;AAAW,kBAAG,UAAZ0e,KAAEA,GAAElnB,OAC1e;AAAA,oBAAsB,UAAnBwI,KAAEtN,GAAE4hC,OAAOm9D;AAAiB;AAAW/yE,gBAAAA,KAAE1e,GAAExI,MAAKwI,GAAExI,OAAK,MAAK9E,GAAE28M,iBAAervM,IAAEtN,GAAE4hC,OAAOm9D,UAAQ;cAAA;YAAA;AAAc,qBAAOt/F,OAAIyF,KAAEynB,KAAG3sB,GAAEy8M,YAAUv3M,IAAElF,GAAE08M,kBAAgBz+M,IAAE+B,GAAE28M,iBAAel9M,IAAE29M,MAAIz5K,IAAEp5B,GAAE0xM,QAAMt4K,IAAEp5B,GAAEq8L,gBAAcj6K;UAAAA;QAAAA;AAAG,iBAAS0wL,GAAG9yM,IAAEC,IAAEnM,IAAAA;AAA8B,cAA3BkM,KAAEC,GAAEoyM,SAAQpyM,GAAEoyM,UAAQ,MAAQ,SAAOryM;AAAE,iBAAIC,KAAE,GAAEA,KAAED,GAAErH,QAAOsH,MAAI;AAAC,kBAAIlM,KAAEiM,GAAEC,EAAAA,GAAGxK,KAAE1B,GAAEiiF;AAAS,kBAAG,SAAOvgF,IAAE;AAAqB,oBAApB1B,GAAEiiF,WAAS,MAAKjiF,KAAED,IAAK,cAAA,OAAoB2B;AAAE,wBAAMyL,MAAMukB,GAAE,KAAIhwB,EAAAA,CAAAA;AAAIA,gBAAAA,GAAE7B,KAAKG,EAAAA;cAAAA;YAAAA;QAAAA;AAAK,YAAIg/M,KAAG,IAAKrhB,GAAG36J,YAAW0lE;AAC3b,iBAASu2G,GAAGhzM,IAAEC,IAAEnM,IAAEC,IAAAA;AAA8BD,UAAAA,KAAE,SAAXA,KAAEA,GAAEC,IAAtBkM,KAAED,GAAEq8L,aAAAA,KAA8Cp8L,KAAEpM,GAAE,CAAA,GAAGoM,IAAEnM,EAAAA,GAAGkM,GAAEq8L,gBAAcvoM,IAAE,MAAIkM,GAAE0xM,UAAQ1xM,GAAEiyM,YAAYC,YAAUp+M;QAAAA;AAC3I,YAAIm/M,KAAG,EAACx9B,WAAU,SAASz1K,IAAAA;AAAG,iBAAA,CAAA,EAAOA,KAAEA,GAAEkzM,oBAAiBjX,GAAGj8L,EAAAA,MAAKA;QAAAA,GAAM41K,iBAAgB,SAAS51K,IAAEC,IAAEnM,IAAAA;AAAGkM,UAAAA,KAAEA,GAAEkzM;AAAgB,cAAIn/M,KAAEo/M,GAAAA,GAAK19M,KAAE29M,GAAGpzM,EAAAA,GAAGyhB,KAAE8wL,GAAGx+M,IAAE0B,EAAAA;AAAGgsB,UAAAA,GAAEia,UAAQz7B,IAAE,QAASnM,OAAc2tB,GAAEu0D,WAASliF,KAAG4+M,GAAG1yM,IAAEyhB,EAAAA,GAAG4xL,GAAGrzM,IAAEvK,IAAE1B,EAAAA;QAAAA,GAAI4hL,qBAAoB,SAAS31K,IAAEC,IAAEnM,IAAAA;AAAGkM,UAAAA,KAAEA,GAAEkzM;AAAgB,cAAIn/M,KAAEo/M,GAAAA,GAAK19M,KAAE29M,GAAGpzM,EAAAA,GAAGyhB,KAAE8wL,GAAGx+M,IAAE0B,EAAAA;AAAGgsB,UAAAA,GAAE0rB,MAAI,GAAE1rB,GAAEia,UAAQz7B,IAAE,QAASnM,OAAc2tB,GAAEu0D,WAASliF,KAAG4+M,GAAG1yM,IAAEyhB,EAAAA,GAAG4xL,GAAGrzM,IAAEvK,IAAE1B,EAAAA;QAAAA,GAAI2hL,oBAAmB,SAAS11K,IAAEC,IAAAA;AAAGD,UAAAA,KAAEA,GAAEkzM;AAAgB,cAAIp/M,KAAEq/M,GAAAA,GAAKp/M,KAAEq/M,GAAGpzM,EAAAA,GAAGvK,KAAE88M,GAAGz+M,IAAEC,EAAAA;AAAG0B,UAAAA,GAAE03C,MAAI,GAAE,QAASltC,OAAcxK,GAAEugF,WACjf/1E,KAAGyyM,GAAG1yM,IAAEvK,EAAAA,GAAG49M,GAAGrzM,IAAEjM,IAAED,EAAAA;QAAAA,EAAAA;AAAK,iBAASw/M,GAAGtzM,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAE2X,IAAAA;AAAiB,iBAAM,cAAA,QAApBp5B,KAAEA,GAAE26L,WAAsC4Y,wBAAsBvzM,GAAEuzM,sBAAsBx/M,IAAE0tB,IAAE2X,EAAAA,IAAAA,CAAGn5B,GAAE5K,aAAAA,CAAW4K,GAAE5K,UAAUwgL,yBAAAA,CAAsBy0B,GAAGx2M,IAAEC,EAAAA,KAAAA,CAAKu2M,GAAG70M,IAAEgsB,EAAAA;QAAAA;AAC/M,iBAAS+xL,GAAGxzM,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAAA,OAAK0B,KAAEu4M,IAAOvsL,KAAExhB,GAAEykC;AAA2W,iBAA/V,YAAA,OAAkBjjB,MAAG,SAAOA,KAAEA,KAAEmwL,GAAGnwL,EAAAA,KAAIhsB,KAAE44M,GAAGpuM,EAAAA,IAAGguM,KAAG/lL,GAAE6d,SAAyBtkB,MAAG1tB,KAAE,SAAtBA,KAAEkM,GAAEo/I,iBAAwC6uD,GAAGluM,IAAEvK,EAAAA,IAAGu4M,KAAI/tM,KAAE,IAAIA,GAAEnM,IAAE2tB,EAAAA,GAAGzhB,GAAEq8L,gBAAc,SAAOp8L,GAAEm0C,SAAAA,WAAgBn0C,GAAEm0C,QAAMn0C,GAAEm0C,QAAM,MAAKn0C,GAAE0F,UAAQstM,IAAGjzM,GAAE26L,YAAU16L,IAAEA,GAAEizM,kBAAgBlzM,IAAEjM,QAAIiM,KAAEA,GAAE26L,WAAYwT,8CAA4C14M,IAAEuK,GAAEouM,4CAA0C3sL,KAAUxhB;QAAAA;AAC3Z,iBAASwzM,GAAGzzM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAGiM,UAAAA,KAAEC,GAAEm0C,OAAM,cAAA,OAAoBn0C,GAAEyzM,6BAA2BzzM,GAAEyzM,0BAA0B5/M,IAAEC,EAAAA,GAAG,cAAA,OAAoBkM,GAAE0zM,oCAAkC1zM,GAAE0zM,iCAAiC7/M,IAAEC,EAAAA,GAAGkM,GAAEm0C,UAAQp0C,MAAGizM,GAAGt9B,oBAAoB11K,IAAEA,GAAEm0C,OAAM,IAAA;QAAA;AAC/P,iBAASw/J,GAAG5zM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEuK,GAAE26L;AAAUllM,UAAAA,GAAEwqB,QAAMnsB,IAAE2B,GAAE2+C,QAAMp0C,GAAEq8L,eAAc5mM,GAAEgnG,OAAKs2G,IAAGf,GAAGhyM,EAAAA;AAAG,cAAIyhB,KAAExhB,GAAEykC;AAAY,sBAAA,OAAkBjjB,MAAG,SAAOA,KAAEhsB,GAAE6c,UAAQs/L,GAAGnwL,EAAAA,KAAIA,KAAE4sL,GAAGpuM,EAAAA,IAAGguM,KAAG/lL,GAAE6d,SAAQtwC,GAAE6c,UAAQ47L,GAAGluM,IAAEyhB,EAAAA,IAAImxL,GAAG5yM,IAAElM,IAAE2B,IAAE1B,EAAAA,GAAG0B,GAAE2+C,QAAMp0C,GAAEq8L,eAA2C,cAAA,QAA7B56K,KAAExhB,GAAEu/I,8BAAiDwzD,GAAGhzM,IAAEC,IAAEwhB,IAAE3tB,EAAAA,GAAG2B,GAAE2+C,QAAMp0C,GAAEq8L,gBAAe,cAAA,OAAoBp8L,GAAEu/I,4BAA0B,cAAA,OAAoB/pJ,GAAEo+M,2BAAyB,cAAA,OAAoBp+M,GAAEq+M,6BAA2B,cAAA,OAAoBr+M,GAAEs+M,uBACve9zM,KAAExK,GAAE2+C,OAAM,cAAA,OAAoB3+C,GAAEs+M,sBAAoBt+M,GAAEs+M,mBAAAA,GAAqB,cAAA,OAAoBt+M,GAAEq+M,6BAA2Br+M,GAAEq+M,0BAAAA,GAA4B7zM,OAAIxK,GAAE2+C,SAAO6+J,GAAGt9B,oBAAoBlgL,IAAEA,GAAE2+C,OAAM,IAAA,GAAMw+J,GAAG5yM,IAAElM,IAAE2B,IAAE1B,EAAAA,GAAG0B,GAAE2+C,QAAMp0C,GAAEq8L,gBAAe,cAAA,OAAoB5mM,GAAEu+M,sBAAoBh0M,GAAEumH,SAAO;QAAA;AAAG,YAAI0tF,KAAGt+M,MAAM4I;AACvT,iBAAS21M,GAAGl0M,IAAEC,IAAEnM,IAAAA;AAAW,cAAG,UAAXkM,KAAElM,GAAEoE,QAAiB,cAAA,OAAoB8H,MAAG,YAAA,OAAkBA,IAAE;AAAC,gBAAGlM,GAAEkiL,QAAO;AAAY,kBAAXliL,KAAEA,GAAEkiL,QAAY;AAAC,oBAAG,MAAIliL,GAAEq5C;AAAI,wBAAMjsC,MAAMukB,GAAE,GAAA,CAAA;AAAM,oBAAI1xB,KAAED,GAAE6mM;cAAAA;AAAU,kBAAA,CAAI5mM;AAAE,sBAAMmN,MAAMukB,GAAE,KAAIzlB,EAAAA,CAAAA;AAAI,kBAAIvK,KAAE,KAAGuK;AAAE,qBAAG,SAAOC,MAAG,SAAOA,GAAE/H,OAAK,cAAA,OAAoB+H,GAAE/H,OAAK+H,GAAE/H,IAAIi8M,eAAa1+M,KAASwK,GAAE/H,QAAI+H,KAAE,SAASD,IAAAA;AAAG,oBAAIC,KAAElM,GAAE0oG;AAAKx8F,gBAAAA,OAAI8yM,OAAK9yM,KAAElM,GAAE0oG,OAAK,CAAA,IAAI,SAAOz8F,KAAAA,OAASC,GAAExK,EAAAA,IAAGwK,GAAExK,EAAAA,IAAGuK;cAAAA,GAAKm0M,aAAW1+M,IAASwK;YAAAA;AAAE,gBAAG,YAAA,OAAkBD;AAAE,oBAAMkB,MAAMukB,GAAE,GAAA,CAAA;AAAM,gBAAA,CAAI3xB,GAAEkiL;AAAO,oBAAM90K,MAAMukB,GAAE,KAAIzlB,EAAAA,CAAAA;UAAAA;AAAK,iBAAOA;QAAAA;AAChe,iBAASo0M,GAAGp0M,IAAEC,IAAAA;AAAG,cAAG,eAAaD,GAAEtF;AAAK,kBAAMwG,MAAMukB,GAAE,IAAG,sBAAoBtxB,OAAOkB,UAAU6G,SAAStI,KAAKqM,EAAAA,IAAG,uBAAqB9L,OAAO0J,KAAKoC,EAAAA,EAAGwa,KAAK,IAAA,IAAM,MAAIxa,EAAAA,CAAAA;QAAAA;AAClK,iBAASo0M,GAAGr0M,IAAAA;AAAG,mBAASC,GAAEA,IAAEnM,IAAAA;AAAG,gBAAGkM,IAAE;AAAC,kBAAIjM,KAAEkM,GAAEq0M;AAAW,uBAAOvgN,MAAGA,GAAEwgN,aAAWzgN,IAAEmM,GAAEq0M,aAAWxgN,MAAGmM,GAAEu0M,cAAYv0M,GAAEq0M,aAAWxgN,IAAEA,GAAEygN,aAAW,MAAKzgN,GAAEyyH,QAAM;YAAA;UAAA;AAAG,mBAASzyH,GAAEA,IAAEC,IAAAA;AAAG,gBAAA,CAAIiM;AAAE,qBAAO;AAAK,mBAAK,SAAOjM;AAAGkM,cAAAA,GAAEnM,IAAEC,EAAAA,GAAGA,KAAEA,GAAE0oM;AAAQ,mBAAO;UAAA;AAAK,mBAAS1oM,GAAEiM,IAAEC,IAAAA;AAAG,iBAAID,KAAE,oBAAI2E,OAAI,SAAO1E;AAAG,uBAAOA,GAAEjL,MAAIgL,GAAEkE,IAAIjE,GAAEjL,KAAIiL,EAAAA,IAAGD,GAAEkE,IAAIjE,GAAE7G,OAAM6G,EAAAA,GAAGA,KAAEA,GAAEw8L;AAAQ,mBAAOz8L;UAAAA;AAAE,mBAASvK,GAAEuK,IAAEC,IAAAA;AAAsC,oBAAnCD,KAAEy0M,GAAGz0M,IAAEC,EAAAA,GAAK7G,QAAM,GAAE4G,GAAEy8L,UAAQ,MAAYz8L;UAAAA;AAAE,mBAASyhB,GAAExhB,IAAEnM,IAAEC,IAAAA;AAAa,mBAAVkM,GAAE7G,QAAMrF,IAAMiM,KAA4B,UAAjBjM,KAAEkM,GAAEi8L,cAA6BnoM,KAAEA,GAAEqF,SAAQtF,MAAGmM,GAAEsmH,QAAM,GACpfzyH,MAAGC,MAAEkM,GAAEsmH,QAAM,GAASzyH,MADoaA;UAAAA;AACla,mBAASslC,GAAEn5B,IAAAA;AAAsC,mBAAnCD,MAAG,SAAOC,GAAEi8L,cAAYj8L,GAAEsmH,QAAM,IAAUtmH;UAAAA;AAAE,mBAAS8C,GAAE/C,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,mBAAG,SAAOkM,MAAG,MAAIA,GAAEktC,QAAWltC,KAAEy0M,GAAG5gN,IAAEkM,GAAEpL,MAAKb,EAAAA,GAAKooM,SAAOn8L,IAAEC,QAAEA,KAAExK,GAAEwK,IAAEnM,EAAAA,GAAKqoM,SAAOn8L,IAASC;UAAAA;AAAE,mBAAStF,GAAEqF,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,mBAAG,SAAOkM,MAAGA,GAAE00M,gBAAc7gN,GAAE4G,SAAY3G,KAAE0B,GAAEwK,IAAEnM,GAAEmsB,KAAAA,GAAS/nB,MAAIg8M,GAAGl0M,IAAEC,IAAEnM,EAAAA,GAAGC,GAAEooM,SAAOn8L,IAAEjM,QAAEA,KAAE6gN,GAAG9gN,GAAE4G,MAAK5G,GAAEkB,KAAIlB,GAAEmsB,OAAM,MAAKjgB,GAAEpL,MAAKb,EAAAA,GAAKmE,MAAIg8M,GAAGl0M,IAAEC,IAAEnM,EAAAA,GAAGC,GAAEooM,SAAOn8L,IAASjM;UAAAA;AAAE,mBAASL,GAAEsM,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,mBAAG,SAAOkM,MAAG,MAAIA,GAAEktC,OAAKltC,GAAE06L,UAAU2D,kBAAgBxqM,GAAEwqM,iBAAer+L,GAAE06L,UAAUngF,mBAAiB1mH,GAAE0mH,mBAAsBv6G,KACrgB40M,GAAG/gN,IAAEkM,GAAEpL,MAAKb,EAAAA,GAAKooM,SAAOn8L,IAAEC,QAAEA,KAAExK,GAAEwK,IAAEnM,GAAEigE,YAAU,CAAA,CAAA,GAAMooI,SAAOn8L,IAASC;UAAAA;AAAE,mBAAS/K,GAAE8K,IAAEC,IAAEnM,IAAEC,IAAE0tB,IAAAA;AAAG,mBAAG,SAAOxhB,MAAG,MAAIA,GAAEktC,QAAWltC,KAAE60M,GAAGhhN,IAAEkM,GAAEpL,MAAKb,IAAE0tB,EAAAA,GAAK06K,SAAOn8L,IAAEC,QAAEA,KAAExK,GAAEwK,IAAEnM,EAAAA,GAAKqoM,SAAOn8L,IAASC;UAAAA;AAAE,mBAASmiB,GAAEpiB,IAAEC,IAAEnM,IAAAA;AAAG,gBAAG,YAAA,OAAkBmM,MAAG,YAAA,OAAkBA;AAAE,sBAAOA,KAAEy0M,GAAG,KAAGz0M,IAAED,GAAEpL,MAAKd,EAAAA,GAAKqoM,SAAOn8L,IAAEC;AAAE,gBAAG,YAAA,OAAkBA,MAAG,SAAOA,IAAE;AAAC,sBAAOA,GAAEkpK,UAAAA;gBAAU,KAAK4pB;AAAG,0BAAOj/L,KAAE8gN,GAAG30M,GAAEvF,MAAKuF,GAAEjL,KAAIiL,GAAEggB,OAAM,MAAKjgB,GAAEpL,MAAKd,EAAAA,GAAKoE,MAAIg8M,GAAGl0M,IAAE,MAAKC,EAAAA,GAAGnM,GAAEqoM,SAAOn8L,IAAElM;gBAAE,KAAKk/L;AAAG,0BAAO/yL,KAAE40M,GAAG50M,IAAED,GAAEpL,MAAKd,EAAAA,GAAKqoM,SAAOn8L,IAAEC;cAAAA;AAAE,kBAAGg0M,GAAGh0M,EAAAA,KAAIi0L,GAAGj0L,EAAAA;AAAG,wBAAOA,KAAE60M,GAAG70M,IACnfD,GAAEpL,MAAKd,IAAE,IAAA,GAAQqoM,SAAOn8L,IAAEC;AAAEm0M,iBAAGp0M,IAAEC,EAAAA;YAAAA;AAAG,mBAAO;UAAA;AAAK,mBAAS1K,GAAEyK,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,gBAAI0B,KAAE,SAAOwK,KAAEA,GAAEjL,MAAI;AAAK,gBAAG,YAAA,OAAkBlB,MAAG,YAAA,OAAkBA;AAAE,qBAAO,SAAO2B,KAAE,OAAKsN,GAAE/C,IAAEC,IAAE,KAAGnM,IAAEC,EAAAA;AAAG,gBAAG,YAAA,OAAkBD,MAAG,SAAOA,IAAE;AAAC,sBAAOA,GAAEq1K,UAAAA;gBAAU,KAAK4pB;AAAG,yBAAOj/L,GAAEkB,QAAMS,KAAE3B,GAAE4G,SAAOu4L,KAAG/9L,GAAE8K,IAAEC,IAAEnM,GAAEmsB,MAAM8zC,UAAShgE,IAAE0B,EAAAA,IAAGkF,GAAEqF,IAAEC,IAAEnM,IAAEC,EAAAA,IAAG;gBAAK,KAAKi/L;AAAG,yBAAOl/L,GAAEkB,QAAMS,KAAE/B,GAAEsM,IAAEC,IAAEnM,IAAEC,EAAAA,IAAG;cAAA;AAAK,kBAAGkgN,GAAGngN,EAAAA,KAAIogM,GAAGpgM,EAAAA;AAAG,uBAAO,SAAO2B,KAAE,OAAKP,GAAE8K,IAAEC,IAAEnM,IAAEC,IAAE,IAAA;AAAMqgN,iBAAGp0M,IAAElM,EAAAA;YAAAA;AAAG,mBAAO;UAAA;AAAK,mBAAS+uB,GAAE7iB,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,gBAAG,YAAA,OAAkB1B,MAAG,YAAA,OAAkBA;AAAE,qBAClegP,GAAE9C,IADueD,KAAEA,GAAE1L,IAAIR,EAAAA,KACtf,MAAW,KAAGC,IAAE0B,EAAAA;AAAG,gBAAG,YAAA,OAAkB1B,MAAG,SAAOA,IAAE;AAAC,sBAAOA,GAAEo1K,UAAAA;gBAAU,KAAK4pB;AAAG,yBAAO/yL,KAAEA,GAAE1L,IAAI,SAAOP,GAAEiB,MAAIlB,KAAEC,GAAEiB,GAAAA,KAAM,MAAKjB,GAAE2G,SAAOu4L,KAAG/9L,GAAE+K,IAAED,IAAEjM,GAAEksB,MAAM8zC,UAASt+D,IAAE1B,GAAEiB,GAAAA,IAAK2F,GAAEsF,IAAED,IAAEjM,IAAE0B,EAAAA;gBAAG,KAAKu9L;AAAG,yBAA2Ct/L,GAAEuM,IAAtCD,KAAEA,GAAE1L,IAAI,SAAOP,GAAEiB,MAAIlB,KAAEC,GAAEiB,GAAAA,KAAM,MAAWjB,IAAE0B,EAAAA;cAAAA;AAAG,kBAAGw+M,GAAGlgN,EAAAA,KAAImgM,GAAGngM,EAAAA;AAAG,uBAAwBmB,GAAE+K,IAAnBD,KAAEA,GAAE1L,IAAIR,EAAAA,KAAI,MAAWC,IAAE0B,IAAE,IAAA;AAAM2+M,iBAAGn0M,IAAElM,EAAAA;YAAAA;AAAG,mBAAO;UAAA;AAAK,mBAAS2W,GAAEjV,IAAE2jC,IAAEr2B,IAAEpI,IAAAA;AAAG,qBAAQjH,KAAE,MAAKiB,KAAE,MAAK6sB,KAAE4X,IAAE3O,KAAE2O,KAAE,GAAEvO,KAAE,MAAK,SAAOrJ,MAAGiJ,KAAE1nB,GAAEpK,QAAO8xB,MAAI;AAACjJ,cAAAA,GAAEpoB,QAAMqxB,MAAGI,KAAErJ,IAAEA,KAAE,QAAMqJ,KAAErJ,GAAEi7K;AAAQ,kBAAIvnM,KAAEK,GAAEE,IAAE+rB,IAAEze,GAAE0nB,EAAAA,GAAG9vB,EAAAA;AAAG,kBAAG,SAAOzF,IAAE;AAAC,yBAAOssB,OAAIA,KAAEqJ;AAAG;cAAA;AAAM7qB,cAAAA,MAAGwhB,MAAG,SACjftsB,GAAEgnM,aAAWj8L,GAAExK,IAAE+rB,EAAAA,GAAG4X,KAAE3X,GAAEvsB,IAAEkkC,IAAE3O,EAAAA,GAAG,SAAO91B,KAAEjB,KAAEwB,KAAEP,GAAE8nM,UAAQvnM,IAAEP,KAAEO,IAAEssB,KAAEqJ;YAAAA;AAAE,gBAAGJ,OAAI1nB,GAAEpK;AAAO,qBAAO7E,GAAE2B,IAAE+rB,EAAAA,GAAG9tB;AAAE,gBAAG,SAAO8tB,IAAE;AAAC,qBAAKiJ,KAAE1nB,GAAEpK,QAAO8xB;AAAkB,0BAAdjJ,KAAEY,GAAE3sB,IAAEsN,GAAE0nB,EAAAA,GAAG9vB,EAAAA,OAAcy+B,KAAE3X,GAAED,IAAE4X,IAAE3O,EAAAA,GAAG,SAAO91B,KAAEjB,KAAE8tB,KAAE7sB,GAAE8nM,UAAQj7K,IAAE7sB,KAAE6sB;AAAG,qBAAO9tB;YAAAA;AAAE,iBAAI8tB,KAAEztB,GAAE0B,IAAE+rB,EAAAA,GAAGiJ,KAAE1nB,GAAEpK,QAAO8xB;AAAsB,wBAAlBI,KAAEhI,GAAErB,IAAE/rB,IAAEg1B,IAAE1nB,GAAE0nB,EAAAA,GAAG9vB,EAAAA,OAAcqF,MAAG,SAAO6qB,GAAEqxK,aAAW16K,GAAEq3G,OAAO,SAAOhuG,GAAE71B,MAAIy1B,KAAEI,GAAE71B,GAAAA,GAAKokC,KAAE3X,GAAEoJ,IAAEuO,IAAE3O,EAAAA,GAAG,SAAO91B,KAAEjB,KAAEm3B,KAAEl2B,GAAE8nM,UAAQ5xK,IAAEl2B,KAAEk2B;AAA4C,mBAAzC7qB,MAAGwhB,GAAEzc,QAAQ,SAAS/E,IAAAA;AAAG,qBAAOC,GAAExK,IAAEuK,EAAAA;YAAAA,CAAAA,GAAYtM;UAAAA;AAAE,mBAASovB,GAAErtB,IAAE2jC,IAAEr2B,IAAEpI,IAAAA;AAAG,gBAAIjH,KAAEwgM,GAAGnxL,EAAAA;AAAG,gBAAG,cAAA,OAAoBrP;AAAE,oBAAMwN,MAAMukB,GAAE,GAAA,CAAA;AAAkB,gBAAG,SAAf1iB,KAAErP,GAAEE,KAAKmP,EAAAA;AAC1e,oBAAM7B,MAAMukB,GAAE,GAAA,CAAA;AAAM,qBAAQ9wB,KAAEjB,KAAE,MAAK8tB,KAAE4X,IAAE3O,KAAE2O,KAAE,GAAEvO,KAAE,MAAK31B,KAAE6N,GAAExI,KAAAA,GAAO,SAAOinB,MAAAA,CAAItsB,GAAE4F,MAAK2vB,MAAIv1B,KAAE6N,GAAExI,KAAAA,GAAO;AAACinB,cAAAA,GAAEpoB,QAAMqxB,MAAGI,KAAErJ,IAAEA,KAAE,QAAMqJ,KAAErJ,GAAEi7K;AAAQ,kBAAI35K,KAAEvtB,GAAEE,IAAE+rB,IAAEtsB,GAAER,OAAMiG,EAAAA;AAAG,kBAAG,SAAOmoB,IAAE;AAAC,yBAAOtB,OAAIA,KAAEqJ;AAAG;cAAA;AAAM7qB,cAAAA,MAAGwhB,MAAG,SAAOsB,GAAEo5K,aAAWj8L,GAAExK,IAAE+rB,EAAAA,GAAG4X,KAAE3X,GAAEqB,IAAEsW,IAAE3O,EAAAA,GAAG,SAAO91B,KAAEjB,KAAEovB,KAAEnuB,GAAE8nM,UAAQ35K,IAAEnuB,KAAEmuB,IAAEtB,KAAEqJ;YAAAA;AAAE,gBAAG31B,GAAE4F;AAAK,qBAAOhH,GAAE2B,IAAE+rB,EAAAA,GAAG9tB;AAAE,gBAAG,SAAO8tB,IAAE;AAAC,qBAAA,CAAMtsB,GAAE4F,MAAK2vB,MAAIv1B,KAAE6N,GAAExI,KAAAA;AAAwB,0BAAjBrF,KAAEktB,GAAE3sB,IAAEP,GAAER,OAAMiG,EAAAA,OAAcy+B,KAAE3X,GAAEvsB,IAAEkkC,IAAE3O,EAAAA,GAAG,SAAO91B,KAAEjB,KAAEwB,KAAEP,GAAE8nM,UAAQvnM,IAAEP,KAAEO;AAAG,qBAAOxB;YAAAA;AAAE,iBAAI8tB,KAAEztB,GAAE0B,IAAE+rB,EAAAA,GAAAA,CAAItsB,GAAE4F,MAAK2vB,MAAIv1B,KAAE6N,GAAExI,KAAAA;AAA4B,wBAArBrF,KAAE2tB,GAAErB,IAAE/rB,IAAEg1B,IAAEv1B,GAAER,OAAMiG,EAAAA,OAAcqF,MAAG,SAAO9K,GAAEgnM,aAChf16K,GAAEq3G,OAAO,SAAO3jI,GAAEF,MAAIy1B,KAAEv1B,GAAEF,GAAAA,GAAKokC,KAAE3X,GAAEvsB,IAAEkkC,IAAE3O,EAAAA,GAAG,SAAO91B,KAAEjB,KAAEwB,KAAEP,GAAE8nM,UAAQvnM,IAAEP,KAAEO;AAA4C,mBAAzC8K,MAAGwhB,GAAEzc,QAAQ,SAAS/E,IAAAA;AAAG,qBAAOC,GAAExK,IAAEuK,EAAAA;YAAAA,CAAAA,GAAYtM;UAAAA;AAAE,iBAAO,SAASsM,IAAEjM,IAAE0tB,IAAE1e,IAAAA;AAAG,gBAAIpI,KAAE,YAAA,OAAkB8mB,MAAG,SAAOA,MAAGA,GAAE/mB,SAAOu4L,MAAI,SAAOxxK,GAAEzsB;AAAI2F,YAAAA,OAAI8mB,KAAEA,GAAExB,MAAM8zC;AAAU,gBAAIrgE,KAAE,YAAA,OAAkB+tB,MAAG,SAAOA;AAAE,gBAAG/tB;AAAE,sBAAO+tB,GAAE0nJ,UAAAA;gBAAU,KAAK4pB;AAAG/yL,qBAAE;AAAS,yBAARtM,KAAE+tB,GAAEzsB,KAAQ2F,KAAE5G,IAAE,SAAO4G,MAAG;AAAC,0BAAGA,GAAE3F,QAAMtB,IAAE;AAAC,gCAAOiH,GAAEwyC,KAAAA;0BAAK,KAAK;AAAE,gCAAG1rB,GAAE/mB,SAAOu4L,IAAG;AAACn/L,8BAAAA,GAAEkM,IAAErF,GAAE8hM,OAAAA,IAAS1oM,KAAE0B,GAAEkF,IAAE8mB,GAAExB,MAAM8zC,QAAAA,GAAYooI,SAAOn8L,IAAEA,KAAEjM;AAAE,oCAAMiM;4BAAAA;AAAE;0BAAM;AAAQ,gCAAGrF,GAAEg6M,gBAAclzL,GAAE/mB,MAAK;AAAC5G,8BAAAA,GAAEkM,IAAErF,GAAE8hM,OAAAA,IAC5e1oM,KAAE0B,GAAEkF,IAAE8mB,GAAExB,KAAAA,GAAS/nB,MAAIg8M,GAAGl0M,IAAErF,IAAE8mB,EAAAA,GAAG1tB,GAAEooM,SAAOn8L,IAAEA,KAAEjM;AAAE,oCAAMiM;4BAAAA;wBAAAA;AAAGlM,wBAAAA,GAAEkM,IAAErF,EAAAA;AAAG;sBAAA;AAAWsF,sBAAAA,GAAED,IAAErF,EAAAA,GAAGA,KAAEA,GAAE8hM;oBAAAA;AAAQh7K,oBAAAA,GAAE/mB,SAAOu4L,OAAIl/L,KAAE+gN,GAAGrzL,GAAExB,MAAM8zC,UAAS/zD,GAAEpL,MAAKmO,IAAE0e,GAAEzsB,GAAAA,GAAOmnM,SAAOn8L,IAAEA,KAAEjM,QAAIgP,KAAE6xM,GAAGnzL,GAAE/mB,MAAK+mB,GAAEzsB,KAAIysB,GAAExB,OAAM,MAAKjgB,GAAEpL,MAAKmO,EAAAA,GAAK7K,MAAIg8M,GAAGl0M,IAAEjM,IAAE0tB,EAAAA,GAAG1e,GAAEo5L,SAAOn8L,IAAEA,KAAE+C;kBAAAA;AAAG,yBAAOq2B,GAAEp5B,EAAAA;gBAAG,KAAKgzL;AAAGhzL,qBAAE;AAAC,yBAAIrF,KAAE8mB,GAAEzsB,KAAI,SAAOjB,MAAG;AAAC,0BAAGA,GAAEiB,QAAM2F,IAAE;AAAA,4BAAG,MAAI5G,GAAEo5C,OAAKp5C,GAAE4mM,UAAU2D,kBAAgB78K,GAAE68K,iBAAevqM,GAAE4mM,UAAUngF,mBAAiB/4F,GAAE+4F,gBAAe;AAAC1mH,0BAAAA,GAAEkM,IAAEjM,GAAE0oM,OAAAA,IAAS1oM,KAAE0B,GAAE1B,IAAE0tB,GAAEsyC,YAAU,CAAA,CAAA,GAAMooI,SAAOn8L,IAAEA,KAAEjM;AAAE,gCAAMiM;wBAAAA;AAAOlM,wBAAAA,GAAEkM,IAAEjM,EAAAA;AAAG;sBAAA;AAAWkM,sBAAAA,GAAED,IAAEjM,EAAAA,GAAGA,KAAEA,GAAE0oM;oBAAAA;AAAAA,qBAAQ1oM,KACpf8gN,GAAGpzL,IAAEzhB,GAAEpL,MAAKmO,EAAAA,GAAKo5L,SAAOn8L,IAAEA,KAAEjM;kBAAAA;AAAE,yBAAOqlC,GAAEp5B,EAAAA;cAAAA;AAAG,gBAAG,YAAA,OAAkByhB,MAAG,YAAA,OAAkBA;AAAE,qBAAOA,KAAE,KAAGA,IAAE,SAAO1tB,MAAG,MAAIA,GAAEo5C,OAAKr5C,GAAEkM,IAAEjM,GAAE0oM,OAAAA,IAAS1oM,KAAE0B,GAAE1B,IAAE0tB,EAAAA,GAAK06K,SAAOn8L,IAAEA,KAAEjM,OAAID,GAAEkM,IAAEjM,EAAAA,IAAGA,KAAE2gN,GAAGjzL,IAAEzhB,GAAEpL,MAAKmO,EAAAA,GAAKo5L,SAAOn8L,IAAEA,KAAEjM,KAAGqlC,GAAEp5B,EAAAA;AAAG,gBAAGi0M,GAAGxyL,EAAAA;AAAG,qBAAO/W,GAAE1K,IAAEjM,IAAE0tB,IAAE1e,EAAAA;AAAG,gBAAGmxL,GAAGzyK,EAAAA;AAAG,qBAAOqB,GAAE9iB,IAAEjM,IAAE0tB,IAAE1e,EAAAA;AAAc,gBAAXrP,MAAG0gN,GAAGp0M,IAAEyhB,EAAAA,GAAAA,WAA2BA,MAAAA,CAAI9mB;AAAE,sBAAOqF,GAAEmtC,KAAAA;gBAAK,KAAK;gBAAE,KAAK;gBAAG,KAAK;gBAAE,KAAK;gBAAG,KAAK;AAAG,wBAAMjsC,MAAMukB,GAAE,KAAIgvK,GAAGz0L,GAAEtF,IAAAA,KAAO,WAAA,CAAA;cAAA;AAAe,mBAAO5G,GAAEkM,IAAEjM,EAAAA;UAAAA;QAAAA;AAAI,YAAIghN,KAAGV,GAAAA,IAAG,GAAIW,KAAGX,GAAAA,KAAG,GAAIY,KAAG,CAAA,GAAGlgD,KAAGg5C,GAAGkH,EAAAA,GAAIjgD,KAAG+4C,GAAGkH,EAAAA,GAAIvlK,KAAGq+J,GAAGkH,EAAAA;AACtd,iBAAShgD,GAAGj1J,IAAAA;AAAG,cAAGA,OAAIi1M;AAAG,kBAAM/zM,MAAMukB,GAAE,GAAA,CAAA;AAAM,iBAAOzlB;QAAAA;AAAE,iBAASk1J,GAAGl1J,IAAEC,IAAAA;AAAyC,kBAAtCs5B,GAAEmW,IAAGzvC,EAAAA,GAAGs5B,GAAEy7H,IAAGh1J,EAAAA,GAAGu5B,GAAEw7H,IAAGkgD,EAAAA,GAAIj1M,KAAEC,GAAEoE,UAAAA;YAAmB,KAAK;YAAE,KAAK;AAAGpE,cAAAA,MAAGA,KAAEA,GAAEuE,mBAAiBvE,GAAEq+G,eAAa+3E,GAAG,MAAK,EAAA;AAAI;YAAM;AAAkEp2L,cAAAA,KAAEo2L,GAArCp2L,MAAvBD,KAAE,MAAIA,KAAEC,GAAEy+G,aAAWz+G,IAAMq+G,gBAAc,MAAKt+G,KAAEA,GAAEo3C,OAAAA;UAAAA;AAAkBvd,aAAEk7H,EAAAA,GAAIx7H,GAAEw7H,IAAG90J,EAAAA;QAAAA;AAAG,iBAASk1J,KAAAA;AAAKt7H,aAAEk7H,EAAAA,GAAIl7H,GAAEm7H,EAAAA,GAAIn7H,GAAE6V,EAAAA;QAAAA;AAAI,iBAAS0lH,GAAGp1J,IAAAA;AAAGi1J,aAAGvlH,GAAG3J,OAAAA;AAAS,cAAI9lC,KAAEg1J,GAAGF,GAAGhvH,OAAAA,GAAajyC,KAAEuiM,GAAGp2L,IAAED,GAAEtF,IAAAA;AAAMuF,UAAAA,OAAInM,OAAIylC,GAAEy7H,IAAGh1J,EAAAA,GAAGu5B,GAAEw7H,IAAGjhK,EAAAA;QAAAA;AAAI,iBAASuhK,GAAGr1J,IAAAA;AAAGg1J,aAAGjvH,YAAU/lC,OAAI65B,GAAEk7H,EAAAA,GAAIl7H,GAAEm7H,EAAAA;QAAAA;AAAK,YAAI7xI,KAAE4qL,GAAG,CAAA;AAC9c,iBAASmH,GAAGl1M,IAAAA;AAAG,mBAAQC,KAAED,IAAE,SAAOC,MAAG;AAAC,gBAAG,OAAKA,GAAEktC,KAAI;AAAC,kBAAIr5C,KAAEmM,GAAEo8L;AAAc,kBAAG,SAAOvoM,OAAmB,UAAfA,KAAEA,GAAEwoM,eAAqB,SAAOxoM,GAAE61B,QAAM,SAAO71B,GAAE61B;AAAM,uBAAO1pB;YAAAA,WAAU,OAAKA,GAAEktC,OAAAA,WAAcltC,GAAEk1M,cAAcC,aAAAA;AAAa,kBAAG,MAAa,KAARn1M,GAAEsmH;AAAU,uBAAOtmH;YAAAA,WAAU,SAAOA,GAAE+zD,OAAM;AAAC/zD,cAAAA,GAAE+zD,MAAMmoI,SAAOl8L,IAAEA,KAAEA,GAAE+zD;AAAM;YAAA;AAAS,gBAAG/zD,OAAID;AAAE;AAAM,mBAAK,SAAOC,GAAEw8L,WAAS;AAAC,kBAAG,SAAOx8L,GAAEk8L,UAAQl8L,GAAEk8L,WAASn8L;AAAE,uBAAO;AAAKC,cAAAA,KAAEA,GAAEk8L;YAAAA;AAAOl8L,YAAAA,GAAEw8L,QAAQN,SAAOl8L,GAAEk8L,QAAOl8L,KAAEA,GAAEw8L;UAAAA;AAAQ,iBAAO;QAAA;AAAK,YAAI4Y,KAAG,MAAKC,KAAG,MAAKC,KAAAA;AACjd,iBAASC,GAAGx1M,IAAEC,IAAAA;AAAG,cAAInM,KAAE2hN,GAAG,GAAE,MAAK,MAAK,CAAA;AAAG3hN,UAAAA,GAAE6gN,cAAY,WAAU7gN,GAAE4G,OAAK,WAAU5G,GAAE6mM,YAAU16L,IAAEnM,GAAEqoM,SAAOn8L,IAAElM,GAAEyyH,QAAM,GAAE,SAAOvmH,GAAEs0M,cAAYt0M,GAAEs0M,WAAWC,aAAWzgN,IAAEkM,GAAEs0M,aAAWxgN,MAAGkM,GAAEw0M,cAAYx0M,GAAEs0M,aAAWxgN;QAAAA;AAAE,iBAAS4hN,GAAG11M,IAAEC,IAAAA;AAAG,kBAAOD,GAAEmtC,KAAAA;YAAK,KAAK;AAAE,kBAAIr5C,KAAEkM,GAAEtF;AAAyE,qBAAO,UAA3EuF,KAAE,MAAIA,GAAEoE,YAAUvQ,GAAEwyB,YAAAA,MAAgBrmB,GAAE+/G,SAAS15F,YAAAA,IAAc,OAAKrmB,QAAmBD,GAAE26L,YAAU16L,IAAAA;YAAS,KAAK;AAAE,qBAAoD,UAA7CA,KAAE,OAAKD,GAAE21M,gBAAc,MAAI11M,GAAEoE,WAAS,OAAKpE,QAAYD,GAAE26L,YAAU16L,IAAAA;YAAS,KAAK;YAAY;AAAQ,qBAAA;UAAM;QAAA;AACve,iBAAS21M,GAAG51M,IAAAA;AAAG,cAAGu1M,IAAG;AAAC,gBAAIt1M,KAAEq1M;AAAG,gBAAGr1M,IAAE;AAAC,kBAAInM,KAAEmM;AAAE,kBAAA,CAAIy1M,GAAG11M,IAAEC,EAAAA,GAAG;AAAqB,oBAAA,EAApBA,KAAEotM,GAAGv5M,GAAE22M,WAAAA,MAAAA,CAAqBiL,GAAG11M,IAAEC,EAAAA;AAAuC,yBAAnCD,GAAEumH,QAAAA,QAAMvmH,GAAEumH,QAAY,GAAEgvF,KAAAA,OAAG,MAAGF,KAAGr1M;AAASw1M,mBAAGH,IAAGvhN,EAAAA;cAAAA;AAAGuhN,mBAAGr1M,IAAEs1M,KAAGjI,GAAGptM,GAAE4hH,UAAAA;YAAAA;AAAiB7hH,cAAAA,GAAEumH,QAAAA,QAAMvmH,GAAEumH,QAAY,GAAEgvF,KAAAA,OAAMF,KAAGr1M;UAAAA;QAAAA;AAAG,iBAAS61M,GAAG71M,IAAAA;AAAG,eAAIA,KAAEA,GAAEm8L,QAAO,SAAOn8L,MAAG,MAAIA,GAAEmtC,OAAK,MAAIntC,GAAEmtC,OAAK,OAAKntC,GAAEmtC;AAAKntC,YAAAA,KAAEA,GAAEm8L;AAAOkZ,eAAGr1M;QAAAA;AAC5S,iBAAS81M,GAAG91M,IAAAA;AAAG,cAAGA,OAAIq1M;AAAG,mBAAA;AAAS,cAAA,CAAIE;AAAG,mBAAOM,GAAG71M,EAAAA,GAAGu1M,KAAAA,MAAG;AAAM,cAAIt1M,KAAED,GAAEtF;AAAK,cAAG,MAAIsF,GAAEmtC,OAAK,WAASltC,MAAG,WAASA,MAAAA,CAAIitM,GAAGjtM,IAAED,GAAEm1M,aAAAA;AAAe,iBAAIl1M,KAAEq1M,IAAGr1M;AAAGu1M,iBAAGx1M,IAAEC,EAAAA,GAAGA,KAAEotM,GAAGptM,GAAEwqM,WAAAA;AAAmB,cAANoL,GAAG71M,EAAAA,GAAM,OAAKA,GAAEmtC,KAAI;AAAgD,gBAAA,EAA7BntC,KAAE,UAApBA,KAAEA,GAAEq8L,iBAAyBr8L,GAAEs8L,aAAW;AAAW,oBAAMp7L,MAAMukB,GAAE,GAAA,CAAA;AAAMzlB,eAAE;AAAiB,mBAAhBA,KAAEA,GAAEyqM,aAAgBxqM,KAAE,GAAED,MAAG;AAAC,oBAAG,MAAIA,GAAEqE,UAAS;AAAC,sBAAIvQ,KAAEkM,GAAE2pB;AAAK,sBAAG,SAAO71B,IAAE;AAAC,wBAAG,MAAImM,IAAE;AAACq1M,2BAAGjI,GAAGrtM,GAAEyqM,WAAAA;AAAa,4BAAMzqM;oBAAAA;AAAEC,oBAAAA;kBAAAA;AAAQ,4BAAMnM,MAAG,SAAOA,MAAG,SAAOA,MAAGmM;gBAAAA;AAAID,gBAAAA,KAAEA,GAAEyqM;cAAAA;AAAY6K,mBAAG;YAAA;UAAA;AAAWA,iBAAGD,KAAGhI,GAAGrtM,GAAE26L,UAAU8P,WAAAA,IAAa;AAAK,iBAAA;QAAM;AACtf,iBAASsL,KAAAA;AAAKT,eAAGD,KAAG,MAAKE,KAAAA;QAAG;AAAG,YAAIS,KAAG,CAAA;AAAG,iBAASC,KAAAA;AAAK,mBAAQj2M,KAAE,GAAEA,KAAEg2M,GAAGr9M,QAAOqH;AAAIg2M,eAAGh2M,EAAAA,EAAGk2M,gCAA8B;AAAKF,aAAGr9M,SAAO;QAAA;AAAE,YAAIw9M,KAAGrjB,GAAG5c,wBAAuBkgC,KAAGtjB,GAAG3c,yBAAwBtgB,KAAG,GAAElxE,KAAE,MAAK3iE,KAAE,MAAK0G,KAAE,MAAK2tL,KAAAA,OAAMC,KAAAA;AAAM,iBAASC,KAAAA;AAAK,gBAAMr1M,MAAMukB,GAAE,GAAA,CAAA;QAAA;AAAO,iBAAS+wL,GAAGx2M,IAAEC,IAAAA;AAAG,cAAG,SAAOA;AAAE,mBAAA;AAAS,mBAAQnM,KAAE,GAAEA,KAAEmM,GAAEtH,UAAQ7E,KAAEkM,GAAErH,QAAO7E;AAAI,gBAAA,CAAIs2M,GAAGpqM,GAAElM,EAAAA,GAAGmM,GAAEnM,EAAAA,CAAAA;AAAI,qBAAA;AAAS,iBAAA;QAAM;AAC9X,iBAAS0/J,GAAGxzJ,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAAA;AAAyH,cAAtHo0I,KAAGp0I,IAAEkjE,KAAE1kF,IAAEA,GAAEo8L,gBAAc,MAAKp8L,GAAEgyM,cAAY,MAAKhyM,GAAEyxM,QAAM,GAAEyE,GAAGpwK,UAAQ,SAAO/lC,MAAG,SAAOA,GAAEq8L,gBAAcoa,KAAGC,IAAG12M,KAAElM,GAAEC,IAAE0B,EAAAA,GAAM6gN,IAAG;AAAC70L,YAAAA,KAAE;AAAE,eAAE;AAAO,kBAAN60L,KAAAA,OAAG,EAAQ,KAAG70L;AAAG,sBAAMvgB,MAAMukB,GAAE,GAAA,CAAA;AAAMhE,cAAAA,MAAG,GAAEiH,KAAE1G,KAAE,MAAK/hB,GAAEgyM,cAAY,MAAKkE,GAAGpwK,UAAQ4wK,IAAG32M,KAAElM,GAAEC,IAAE0B,EAAAA;YAAAA,SAAS6gN;UAAAA;AAAkE,cAA9DH,GAAGpwK,UAAQ6wK,IAAG32M,KAAE,SAAO+hB,MAAG,SAAOA,GAAEznB,MAAKs7J,KAAG,GAAEntI,KAAE1G,KAAE2iE,KAAE,MAAK0xH,KAAAA,OAASp2M;AAAE,kBAAMiB,MAAMukB,GAAE,GAAA,CAAA;AAAM,iBAAOzlB;QAAAA;AAAE,iBAAS62M,KAAAA;AAAK,cAAI72M,KAAE,EAACq8L,eAAc,MAAK6V,WAAU,MAAK4E,WAAU,MAAKhqI,OAAM,MAAKvyE,MAAK,KAAA;AAA8C,iBAAxC,SAAOmuB,KAAEi8D,GAAE03G,gBAAc3zK,KAAE1oB,KAAE0oB,KAAEA,GAAEnuB,OAAKyF,IAAS0oB;QAAAA;AAC/e,iBAASquL,KAAAA;AAAK,cAAG,SAAO/0L,IAAE;AAAC,gBAAIhiB,KAAE2kF,GAAEu3G;AAAUl8L,YAAAA,KAAE,SAAOA,KAAEA,GAAEq8L,gBAAc;UAAA;AAAUr8L,YAAAA,KAAEgiB,GAAEznB;AAAK,cAAI0F,KAAE,SAAOyoB,KAAEi8D,GAAE03G,gBAAc3zK,GAAEnuB;AAAK,cAAG,SAAO0F;AAAEyoB,iBAAEzoB,IAAE+hB,KAAEhiB;eAAM;AAAC,gBAAG,SAAOA;AAAE,oBAAMkB,MAAMukB,GAAE,GAAA,CAAA;AAAUzlB,YAAAA,KAAE,EAACq8L,gBAAPr6K,KAAEhiB,IAAqBq8L,eAAc6V,WAAUlwL,GAAEkwL,WAAU4E,WAAU90L,GAAE80L,WAAUhqI,OAAM9qD,GAAE8qD,OAAMvyE,MAAK,KAAA,GAAM,SAAOmuB,KAAEi8D,GAAE03G,gBAAc3zK,KAAE1oB,KAAE0oB,KAAEA,GAAEnuB,OAAKyF;UAAAA;AAAE,iBAAO0oB;QAAAA;AAAE,iBAASsuL,GAAGh3M,IAAEC,IAAAA;AAAG,iBAAM,cAAA,OAAoBA,KAAEA,GAAED,EAAAA,IAAGC;QAAAA;AACvY,iBAASg3M,GAAGj3M,IAAAA;AAAG,cAAIC,KAAE82M,GAAAA,GAAKjjN,KAAEmM,GAAE6sE;AAAM,cAAG,SAAOh5E;AAAE,kBAAMoN,MAAMukB,GAAE,GAAA,CAAA;AAAM3xB,UAAAA,GAAEojN,sBAAoBl3M;AAAE,cAAIjM,KAAEiuB,IAAEvsB,KAAE1B,GAAE+iN,WAAUr1L,KAAE3tB,GAAE0gG;AAAQ,cAAG,SAAO/yE,IAAE;AAAC,gBAAG,SAAOhsB,IAAE;AAAC,kBAAI2jC,KAAE3jC,GAAE8E;AAAK9E,cAAAA,GAAE8E,OAAKknB,GAAElnB,MAAKknB,GAAElnB,OAAK6+B;YAAAA;AAAErlC,YAAAA,GAAE+iN,YAAUrhN,KAAEgsB,IAAE3tB,GAAE0gG,UAAQ;UAAA;AAAK,cAAG,SAAO/+F,IAAE;AAACA,YAAAA,KAAEA,GAAE8E,MAAKxG,KAAEA,GAAEm+M;AAAU,gBAAInvM,KAAEq2B,KAAE3X,KAAE,MAAK9mB,KAAElF;AAAE,eAAE;AAAC,kBAAI/B,KAAEiH,GAAE83M;AAAK,mBAAI58C,KAAGniK,QAAKA;AAAE,yBAAOqP,OAAIA,KAAEA,GAAExI,OAAK,EAACk4M,MAAK,GAAEhwL,QAAO9nB,GAAE8nB,QAAO00L,cAAax8M,GAAEw8M,cAAaC,YAAWz8M,GAAEy8M,YAAW78M,MAAK,KAAA,IAAOxG,KAAE4G,GAAEw8M,iBAAen3M,KAAErF,GAAEy8M,aAAWp3M,GAAEjM,IAAE4G,GAAE8nB,MAAAA;mBAAY;AAAC,oBAAIvtB,KAAE,EAACu9M,MAAK/+M,IAAE+uB,QAAO9nB,GAAE8nB,QAAO00L,cAAax8M,GAAEw8M,cAC9fC,YAAWz8M,GAAEy8M,YAAW78M,MAAK,KAAA;AAAM,yBAAOwI,MAAGq2B,KAAEr2B,KAAE7N,IAAEusB,KAAE1tB,MAAGgP,KAAEA,GAAExI,OAAKrF,IAAEyvF,GAAE+sH,SAAOh+M,IAAEm/M,MAAIn/M;cAAAA;AAAEiH,cAAAA,KAAEA,GAAEJ;YAAAA,SAAW,SAAOI,MAAGA,OAAIlF;AAAG,qBAAOsN,KAAE0e,KAAE1tB,KAAEgP,GAAExI,OAAK6+B,IAAEgxK,GAAGr2M,IAAEkM,GAAEo8L,aAAAA,MAAiBsV,KAAAA,OAAO1xM,GAAEo8L,gBAActoM,IAAEkM,GAAEiyM,YAAUzwL,IAAExhB,GAAE62M,YAAU/zM,IAAEjP,GAAEujN,oBAAkBtjN;UAAAA;AAAE,iBAAM,CAACkM,GAAEo8L,eAAcvoM,GAAEyuB,QAAAA;QAAAA;AACtQ,iBAAS+0L,GAAGt3M,IAAAA;AAAG,cAAIC,KAAE82M,GAAAA,GAAKjjN,KAAEmM,GAAE6sE;AAAM,cAAG,SAAOh5E;AAAE,kBAAMoN,MAAMukB,GAAE,GAAA,CAAA;AAAM3xB,UAAAA,GAAEojN,sBAAoBl3M;AAAE,cAAIjM,KAAED,GAAEyuB,UAAS9sB,KAAE3B,GAAE0gG,SAAQ/yE,KAAExhB,GAAEo8L;AAAc,cAAG,SAAO5mM,IAAE;AAAC3B,YAAAA,GAAE0gG,UAAQ;AAAK,gBAAIp7D,KAAE3jC,KAAEA,GAAE8E;AAAK,eAAA;AAAGknB,cAAAA,KAAEzhB,GAAEyhB,IAAE2X,GAAE3W,MAAAA,GAAQ2W,KAAEA,GAAE7+B;YAAAA,SAAW6+B,OAAI3jC;AAAG20M,eAAG3oL,IAAExhB,GAAEo8L,aAAAA,MAAiBsV,KAAAA,OAAO1xM,GAAEo8L,gBAAc56K,IAAE,SAAOxhB,GAAE62M,cAAY72M,GAAEiyM,YAAUzwL,KAAG3tB,GAAEujN,oBAAkB51L;UAAAA;AAAE,iBAAM,CAACA,IAAE1tB,EAAAA;QAAAA;AACnV,iBAASwjN,GAAGv3M,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEkM,GAAEu3M;AAAYzjN,UAAAA,KAAEA,GAAEkM,GAAEw3M,OAAAA;AAAS,cAAIhiN,KAAEwK,GAAEi2M;AAAyI,cAAxG,SAAOzgN,KAAEuK,KAAEvK,OAAI1B,MAAUiM,KAAEA,GAAE03M,mBAAiB13M,MAAG61J,KAAG71J,QAAKA,QAAEC,GAAEi2M,gCAA8BniN,IAAEiiN,GAAG5rM,KAAKnK,EAAAA,KAAMD;AAAE,mBAAOlM,GAAEmM,GAAEw3M,OAAAA;AAAoB,gBAAXzB,GAAG5rM,KAAKnK,EAAAA,GAASiB,MAAMukB,GAAE,GAAA,CAAA;QAAA;AACzP,iBAASkyL,GAAG33M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEikC;AAAE,cAAG,SAAOjkC;AAAE,kBAAMyL,MAAMukB,GAAE,GAAA,CAAA;AAAM,cAAIhE,KAAExhB,GAAEu3M,aAAYp+K,KAAE3X,GAAExhB,GAAEw3M,OAAAA,GAAS10M,KAAEozM,GAAGpwK,SAAQprC,KAAEoI,GAAE80K,SAAS,WAAA;AAAW,mBAAO0/B,GAAG9hN,IAAEwK,IAAEnM,EAAAA;UAAAA,CAAAA,GAAKJ,KAAEiH,GAAE,CAAA,GAAGzF,KAAEyF,GAAE,CAAA;AAAGA,UAAAA,KAAE+tB;AAAE,cAAItG,KAAEpiB,GAAEq8L,eAAc9mM,KAAE6sB,GAAEq6E,MAAK55E,KAAEttB,GAAEqiN,aAAYltM,KAAE0X,GAAEqM;AAAOrM,UAAAA,KAAEA,GAAEu/C;AAAU,cAAI7+C,KAAE6hE;AACuO,iBADrO3kF,GAAEq8L,gBAAc,EAAC5/F,MAAKlnG,IAAEk5B,QAAOxuB,IAAE0hE,WAAU5tE,GAAAA,GAAGgP,GAAEw0K,UAAU,WAAA;AAAWhiL,YAAAA,GAAEqiN,cAAY9jN,IAAEyB,GAAEsiN,cAAYnkN;AAAE,gBAAIsM,KAAEyhB,GAAExhB,GAAEw3M,OAAAA;AAAS,gBAAA,CAAIrN,GAAGhxK,IAAEp5B,EAAAA,GAAG;AAACA,cAAAA,KAAElM,GAAEmM,GAAEw3M,OAAAA,GAASrN,GAAGl1M,IAAE8K,EAAAA,MAAKtM,GAAEsM,EAAAA,GAAGA,KAAEozM,GAAGtwL,EAAAA,GAAGrtB,GAAEiiN,oBAAkB13M,KAAEvK,GAAE4qM,eAAcrgM,KAAEvK,GAAEiiN,kBAAiBjiN,GAAEirM,kBAAgB1gM;AAAE,uBAAQjM,KAC5f0B,GAAEkrM,eAAc59L,KAAE/C,IAAE,IAAE+C,MAAG;AAAC,oBAAIpI,KAAE,KAAG8lM,GAAG19L,EAAAA,GAAGnI,KAAE,KAAGD;AAAE5G,gBAAAA,GAAE4G,EAAAA,KAAIqF,IAAE+C,MAAAA,CAAInI;cAAAA;YAAAA;UAAAA,GAAK,CAAC9G,IAAEmM,IAAElM,EAAAA,CAAAA,GAAIgP,GAAEw0K,UAAU,WAAA;AAAW,mBAAOxjL,GAAEkM,GAAEw3M,SAAQ,WAAA;AAAW,kBAAIz3M,KAAEzK,GAAEqiN,aAAY9jN,KAAEyB,GAAEsiN;AAAY,kBAAA;AAAI/jN,gBAAAA,GAAEkM,GAAEC,GAAEw3M,OAAAA,CAAAA;AAAU,oBAAI1jN,KAAEq/M,GAAGtwL,EAAAA;AAAGrtB,gBAAAA,GAAEiiN,oBAAkB3jN,KAAE0B,GAAE4qM;cAAAA,SAAmBx1K,IAAN;AAAS/2B,gBAAAA,GAAE,WAAA;AAAW,wBAAM+2B;gBAAAA,CAAAA;cAAAA;YAAAA,CAAAA;UAAAA,GAAS,CAAC5qB,IAAElM,EAAAA,CAAAA,GAAIq2M,GAAGvnL,IAAE/uB,EAAAA,KAAIs2M,GAAG1/L,IAAEzK,EAAAA,KAAImqM,GAAGhoL,IAAEruB,EAAAA,OAAKiM,KAAE,EAACw0F,SAAQ,MAAKjyE,UAAS,MAAK20L,qBAAoBF,IAAGK,mBAAkBniN,GAAAA,GAAKqtB,WAAS7uB,KAAEokN,GAAG7iN,KAAK,MAAK0vF,IAAE3kF,EAAAA,GAAGrF,GAAEmyE,QAAM9sE,IAAErF,GAAEm8M,YAAU,MAAK5hN,KAAEqiN,GAAG9hN,IAAEwK,IAAEnM,EAAAA,GAAG6G,GAAE0hM,gBAAc1hM,GAAEu3M,YAAUh9M,KAAUA;QAAAA;AACte,iBAAS6iN,GAAG/3M,IAAEC,IAAEnM,IAAAA;AAAc,iBAAO6jN,GAAZZ,GAAAA,GAAiB/2M,IAAEC,IAAEnM,EAAAA;QAAAA;AAAG,iBAASkkN,GAAGh4M,IAAAA;AAAG,cAAIC,KAAE42M,GAAAA;AAAmL,iBAA9K,cAAA,OAAoB72M,OAAIA,KAAEA,GAAAA,IAAKC,GAAEo8L,gBAAcp8L,GAAEiyM,YAAUlyM,IAAoFA,MAAlFA,KAAEC,GAAE6sE,QAAM,EAAC0nB,SAAQ,MAAKjyE,UAAS,MAAK20L,qBAAoBF,IAAGK,mBAAkBr3M,GAAAA,GAAOuiB,WAASu1L,GAAG7iN,KAAK,MAAK0vF,IAAE3kF,EAAAA,GAAS,CAACC,GAAEo8L,eAAcr8L,EAAAA;QAAAA;AAChR,iBAASi4M,GAAGj4M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAkO,iBAA/NiM,KAAE,EAACmtC,KAAIntC,IAAEjL,QAAOkL,IAAEwrH,SAAQ33H,IAAEokN,MAAKnkN,IAAEwG,MAAK,KAAA,GAAsB,UAAhB0F,KAAE0kF,GAAEstH,gBAAsBhyM,KAAE,EAACq0M,YAAW,KAAA,GAAM3vH,GAAEstH,cAAYhyM,IAAEA,GAAEq0M,aAAWt0M,GAAEzF,OAAKyF,MAAmB,UAAflM,KAAEmM,GAAEq0M,cAAoBr0M,GAAEq0M,aAAWt0M,GAAEzF,OAAKyF,MAAGjM,KAAED,GAAEyG,MAAKzG,GAAEyG,OAAKyF,IAAEA,GAAEzF,OAAKxG,IAAEkM,GAAEq0M,aAAWt0M,KAAWA;QAAAA;AAAE,iBAASm4M,GAAGn4M,IAAAA;AAA4B,iBAAdA,KAAE,EAAC+lC,SAAQ/lC,GAAAA,GAAhB62M,GAAAA,EAA4Bxa,gBAAcr8L;QAAAA;AAAE,iBAASo4M,KAAAA;AAAK,iBAAOrB,GAAAA,EAAK1a;QAAAA;AAAc,iBAASgc,GAAGr4M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEohN,GAAAA;AAAKlyH,aAAE4hC,SAAOvmH,IAAEvK,GAAE4mM,gBAAc4b,GAAG,IAAEh4M,IAAEnM,IAAAA,QAAE,WAAgBC,KAAE,OAAKA,EAAAA;QAAAA;AACjc,iBAASukN,GAAGt4M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEshN,GAAAA;AAAKhjN,UAAAA,KAAAA,WAAWA,KAAE,OAAKA;AAAE,cAAI0tB,KAAAA;AAAS,cAAG,SAAOO,IAAE;AAAC,gBAAIoX,KAAEpX,GAAEq6K;AAA0B,gBAAZ56K,KAAE2X,GAAEqyF,SAAW,SAAO13H,MAAGyiN,GAAGziN,IAAEqlC,GAAE8+K,IAAAA;AAAmB,qBAAA,KAAZD,GAAGh4M,IAAEnM,IAAE2tB,IAAE1tB,EAAAA;UAAAA;AAAW4wF,aAAE4hC,SAAOvmH,IAAEvK,GAAE4mM,gBAAc4b,GAAG,IAAEh4M,IAAEnM,IAAE2tB,IAAE1tB,EAAAA;QAAAA;AAAG,iBAASwkN,GAAGv4M,IAAEC,IAAAA;AAAG,iBAAOo4M,GAAG,KAAI,GAAEr4M,IAAEC,EAAAA;QAAAA;AAAG,iBAASu4M,GAAGx4M,IAAEC,IAAAA;AAAG,iBAAOq4M,GAAG,KAAI,GAAEt4M,IAAEC,EAAAA;QAAAA;AAAG,iBAASw4M,GAAGz4M,IAAEC,IAAAA;AAAG,iBAAOq4M,GAAG,GAAE,GAAEt4M,IAAEC,EAAAA;QAAAA;AAAG,iBAASy4M,GAAG14M,IAAEC,IAAAA;AAAG,iBAAG,cAAA,OAAoBA,MAASD,KAAEA,GAAAA,GAAIC,GAAED,EAAAA,GAAG,WAAA;AAAWC,YAAAA,GAAE,IAAA;UAAA,KAAU,QAAOA,MAAqBD,KAAEA,GAAAA,GAAIC,GAAE8lC,UAAQ/lC,IAAE,WAAA;AAAWC,YAAAA,GAAE8lC,UAAQ;UAAA,KAAA;QAAtE;AACxY,iBAAS4yK,GAAG34M,IAAEC,IAAEnM,IAAAA;AAA6C,iBAA1CA,KAAE,QAAOA,KAAcA,GAAEugB,OAAO,CAACrU,EAAAA,CAAAA,IAAI,MAAYs4M,GAAG,GAAE,GAAEI,GAAGzjN,KAAK,MAAKgL,IAAED,EAAAA,GAAGlM,EAAAA;QAAAA;AAAG,iBAAS8kN,KAAAA;QAAAA;AAAM,iBAASC,GAAG74M,IAAEC,IAAAA;AAAG,cAAInM,KAAEijN,GAAAA;AAAK92M,UAAAA,KAAAA,WAAWA,KAAE,OAAKA;AAAE,cAAIlM,KAAED,GAAEuoM;AAAc,iBAAG,SAAOtoM,MAAG,SAAOkM,MAAGu2M,GAAGv2M,IAAElM,GAAE,CAAA,CAAA,IAAWA,GAAE,CAAA,KAAGD,GAAEuoM,gBAAc,CAACr8L,IAAEC,EAAAA,GAAUD;QAAAA;AAAE,iBAAS84M,GAAG94M,IAAEC,IAAAA;AAAG,cAAInM,KAAEijN,GAAAA;AAAK92M,UAAAA,KAAAA,WAAWA,KAAE,OAAKA;AAAE,cAAIlM,KAAED,GAAEuoM;AAAc,iBAAG,SAAOtoM,MAAG,SAAOkM,MAAGu2M,GAAGv2M,IAAElM,GAAE,CAAA,CAAA,IAAWA,GAAE,CAAA,KAAGiM,KAAEA,GAAAA,GAAIlM,GAAEuoM,gBAAc,CAACr8L,IAAEC,EAAAA,GAAUD;QAAAA;AACzZ,iBAAS+4M,GAAG/4M,IAAEC,IAAAA;AAAG,cAAInM,KAAE08M,GAAAA;AAAKE,aAAG,KAAG58M,KAAE,KAAGA,IAAE,WAAA;AAAWkM,YAAAA,GAAAA,IAAE;UAAA,CAAA,GAAM0wM,GAAG,KAAG58M,KAAE,KAAGA,IAAE,WAAA;AAAW,gBAAIA,KAAEsiN,GAAGhgC;AAAWggC,eAAGhgC,aAAW;AAAE,gBAAA;AAAIp2K,cAAAA,GAAAA,KAAE,GAAIC,GAAAA;YAAAA,UAAI;AAAQm2M,iBAAGhgC,aAAWtiL;YAAAA;UAAAA,CAAAA;QAAAA;AAC5J,iBAASgkN,GAAG93M,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEo/M,GAAAA,GAAK19M,KAAE29M,GAAGpzM,EAAAA,GAAGyhB,KAAE,EAACgxL,MAAKh9M,IAAEgtB,QAAO3uB,IAAEqjN,cAAa,MAAKC,YAAW,MAAK78M,MAAK,KAAA,GAAM6+B,KAAEn5B,GAAEu0F;AAA6E,cAArE,SAAOp7D,KAAE3X,GAAElnB,OAAKknB,MAAGA,GAAElnB,OAAK6+B,GAAE7+B,MAAK6+B,GAAE7+B,OAAKknB,KAAGxhB,GAAEu0F,UAAQ/yE,IAAE2X,KAAEp5B,GAAEk8L,WAAal8L,OAAI2kF,MAAG,SAAOvrD,MAAGA,OAAIurD;AAAE2xH,iBAAGD,KAAAA;eAAU;AAAC,gBAAG,MAAIr2M,GAAE0xM,UAAQ,SAAOt4K,MAAG,MAAIA,GAAEs4K,UAAiC,UAAxBt4K,KAAEn5B,GAAEi3M;AAA8B,kBAAA;AAAI,oBAAIn0M,KAAE9C,GAAEo3M,mBAAkB18M,KAAEy+B,GAAEr2B,IAAEjP,EAAAA;AAAmC,oBAAhC2tB,GAAE01L,eAAa/9K,IAAE3X,GAAE21L,aAAWz8M,IAAKyvM,GAAGzvM,IAAEoI,EAAAA;AAAG;cAAA,SAAarP,IAAN;cAAMA;AAAa2/M,eAAGrzM,IAAEvK,IAAE1B,EAAAA;UAAAA;QAAAA;AAC9Z,YAAI6iN,KAAG,EAACoC,aAAYpH,IAAGx6B,aAAYm/B,IAAGl/B,YAAWk/B,IAAGh/B,WAAUg/B,IAAG/+B,qBAAoB++B,IAAG9+B,iBAAgB8+B,IAAG7+B,SAAQ6+B,IAAG5+B,YAAW4+B,IAAG3+B,QAAO2+B,IAAG1+B,UAAS0+B,IAAGj/B,eAAci/B,IAAG0C,kBAAiB1C,IAAG2C,eAAc3C,IAAG4C,kBAAiB5C,IAAG6C,qBAAoB7C,IAAG8C,0BAAAA,MAAyB,GAAI5C,KAAG,EAACuC,aAAYpH,IAAGx6B,aAAY,SAASp3K,IAAEC,IAAAA;AAA4C,iBAAzC42M,GAAAA,EAAKxa,gBAAc,CAACr8L,IAAAA,WAAWC,KAAE,OAAKA,EAAAA,GAAUD;QAAAA,GAAGq3K,YAAWu6B,IAAGr6B,WAAUghC,IAAG/gC,qBAAoB,SAASx3K,IAAEC,IAAEnM,IAAAA;AAA6C,iBAA1CA,KAAE,QAAOA,KAAcA,GAAEugB,OAAO,CAACrU,EAAAA,CAAAA,IAAI,MAAYq4M,GAAG,GAAE,GAAEK,GAAGzjN,KAAK,MACvfgL,IAAED,EAAAA,GAAGlM,EAAAA;QAAAA,GAAI2jL,iBAAgB,SAASz3K,IAAEC,IAAAA;AAAG,iBAAOo4M,GAAG,GAAE,GAAEr4M,IAAEC,EAAAA;QAAAA,GAAIy3K,SAAQ,SAAS13K,IAAEC,IAAAA;AAAG,cAAInM,KAAE+iN,GAAAA;AAAqD,iBAAhD52M,KAAAA,WAAWA,KAAE,OAAKA,IAAED,KAAEA,GAAAA,GAAIlM,GAAEuoM,gBAAc,CAACr8L,IAAEC,EAAAA,GAAUD;QAAAA,GAAG23K,YAAW,SAAS33K,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAE8iN,GAAAA;AAAuK,iBAAlK52M,KAAAA,WAAWnM,KAAEA,GAAEmM,EAAAA,IAAGA,IAAElM,GAAEsoM,gBAActoM,GAAEm+M,YAAUjyM,IAAmFD,MAAjFA,KAAEjM,GAAE+4E,QAAM,EAAC0nB,SAAQ,MAAKjyE,UAAS,MAAK20L,qBAAoBl3M,IAAEq3M,mBAAkBp3M,GAAAA,GAAOsiB,WAASu1L,GAAG7iN,KAAK,MAAK0vF,IAAE3kF,EAAAA,GAAS,CAACjM,GAAEsoM,eAAcr8L,EAAAA;QAAAA,GAAI43K,QAAOugC,IAAGtgC,UAASmgC,IAAG1gC,eAAcshC,IAAGK,kBAAiB,SAASj5M,IAAAA;AAAG,cAAIC,KAAE+3M,GAAGh4M,EAAAA,GAAGlM,KAAEmM,GAAE,CAAA,GAAGlM,KAAEkM,GAAE,CAAA;AAC5Z,iBAD+Zs4M,GAAG,WAAA;AAAW,gBAAIt4M,KAAEm2M,GAAGhgC;AAC9eggC,eAAGhgC,aAAW;AAAE,gBAAA;AAAIriL,cAAAA,GAAEiM,EAAAA;YAAAA,UAAG;AAAQo2M,iBAAGhgC,aAAWn2K;YAAAA;UAAAA,GAAI,CAACD,EAAAA,CAAAA,GAAWlM;QAAAA,GAAGolN,eAAc,WAAA;AAAW,cAAIl5M,KAAEg4M,GAAAA,KAAG,GAAI/3M,KAAED,GAAE,CAAA;AAA8B,iBAANm4M,GAArBn4M,KAAE+4M,GAAG9jN,KAAK,MAAK+K,GAAE,CAAA,CAAA,CAAA,GAAgB,CAACA,IAAEC,EAAAA;QAAAA,GAAIk5M,kBAAiB,SAASn5M,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAE8iN,GAAAA;AAAkF,iBAA7E9iN,GAAEsoM,gBAAc,EAAC5/F,MAAK,EAACm7G,aAAY33M,IAAE43M,aAAY,KAAA,GAAMppL,QAAOzuB,IAAE2hE,WAAU7tE,GAAAA,GAAU6jN,GAAG5jN,IAAEiM,IAAEC,IAAEnM,EAAAA;QAAAA,GAAIslN,qBAAoB,WAAA;AAAW,cAAG7D,IAAG;AAAC,gBAAIv1M,KAAAA,OAAKC,KAzDlD,SAAYD,IAAAA;AAAG,qBAAM,EAACmpK,UAASyqB,GAAG13L,UAAS8D,IAAEH,SAAQG,GAAAA;YAAAA,EAyDE,WAAA;AAAiD,oBAAtCA,OAAIA,KAAAA,MAAKlM,GAAE,QAAM05M,MAAMtxM,SAAS,EAAA,CAAA,IAAYgF,MAAMukB,GAAE,GAAA,CAAA;YAAA,CAAA,GAAS3xB,KAAEkkN,GAAG/3M,EAAAA,EAAG,CAAA;AAC1Z,mBAD6Z,MAAY,IAAP0kF,GAAE/vF,UAAU+vF,GAAE4hC,SAAO,KAAI0xF,GAAG,GAAE,WAAA;AAAWnkN,cAAAA,GAAE,QAAM05M,MAAMtxM,SAAS,EAAA,CAAA;YAAA,GAAA,QACze,IAAA,IAAc+D;UAAAA;AAAmC,iBAAN+3M,GAA3B/3M,KAAE,QAAMutM,MAAMtxM,SAAS,EAAA,CAAA,GAAiB+D;QAAAA,GAAGo5M,0BAAAA,MAAyB,GAAI3C,KAAG,EAACsC,aAAYpH,IAAGx6B,aAAYyhC,IAAGxhC,YAAWu6B,IAAGr6B,WAAUihC,IAAGhhC,qBAAoBmhC,IAAGlhC,iBAAgBghC,IAAG/gC,SAAQohC,IAAGnhC,YAAWs/B,IAAGr/B,QAAOwgC,IAAGvgC,UAAS,WAAA;AAAW,iBAAOo/B,GAAGD,EAAAA;QAAAA,GAAK1/B,eAAcshC,IAAGK,kBAAiB,SAASj5M,IAAAA;AAAG,cAAIC,KAAEg3M,GAAGD,EAAAA,GAAIljN,KAAEmM,GAAE,CAAA,GAAGlM,KAAEkM,GAAE,CAAA;AAA6F,iBAA1Fu4M,GAAG,WAAA;AAAW,gBAAIv4M,KAAEm2M,GAAGhgC;AAAWggC,eAAGhgC,aAAW;AAAE,gBAAA;AAAIriL,cAAAA,GAAEiM,EAAAA;YAAAA,UAAG;AAAQo2M,iBAAGhgC,aAAWn2K;YAAAA;UAAAA,GAAI,CAACD,EAAAA,CAAAA,GAAWlM;QAAAA,GAAGolN,eAAc,WAAA;AAAW,cAAIl5M,KAAEi3M,GAAGD,EAAAA,EAAI,CAAA;AAAG,iBAAM,CAACoB,GAAAA,EAAKryK,SAC9e/lC,EAAAA;QAAAA,GAAIm5M,kBAAiBpB,IAAGqB,qBAAoB,WAAA;AAAW,iBAAOnC,GAAGD,EAAAA,EAAI,CAAA;QAAA,GAAIqC,0BAAAA,MAAyB,GAAI1C,KAAG,EAACqC,aAAYpH,IAAGx6B,aAAYyhC,IAAGxhC,YAAWu6B,IAAGr6B,WAAUihC,IAAGhhC,qBAAoBmhC,IAAGlhC,iBAAgBghC,IAAG/gC,SAAQohC,IAAGnhC,YAAW2/B,IAAG1/B,QAAOwgC,IAAGvgC,UAAS,WAAA;AAAW,iBAAOy/B,GAAGN,EAAAA;QAAAA,GAAK1/B,eAAcshC,IAAGK,kBAAiB,SAASj5M,IAAAA;AAAG,cAAIC,KAAEq3M,GAAGN,EAAAA,GAAIljN,KAAEmM,GAAE,CAAA,GAAGlM,KAAEkM,GAAE,CAAA;AAA6F,iBAA1Fu4M,GAAG,WAAA;AAAW,gBAAIv4M,KAAEm2M,GAAGhgC;AAAWggC,eAAGhgC,aAAW;AAAE,gBAAA;AAAIriL,cAAAA,GAAEiM,EAAAA;YAAAA,UAAG;AAAQo2M,iBAAGhgC,aAAWn2K;YAAAA;UAAAA,GAAI,CAACD,EAAAA,CAAAA,GAAWlM;QAAAA,GAAGolN,eAAc,WAAA;AAAW,cAAIl5M,KAAEs3M,GAAGN,EAAAA,EAAI,CAAA;AAAG,iBAAM,CAACoB,GAAAA,EAAKryK,SACrf/lC,EAAAA;QAAAA,GAAIm5M,kBAAiBpB,IAAGqB,qBAAoB,WAAA;AAAW,iBAAO9B,GAAGN,EAAAA,EAAI,CAAA;QAAA,GAAIqC,0BAAAA,MAAyB,GAAIC,KAAGxmB,GAAGzc,mBAAkBs7B,KAAAA;AAAM,iBAAS4H,GAAGv5M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAGkM,UAAAA,GAAE+zD,QAAM,SAAOh0D,KAAEg1M,GAAG/0M,IAAE,MAAKnM,IAAEC,EAAAA,IAAGghN,GAAG90M,IAAED,GAAEg0D,OAAMlgE,IAAEC,EAAAA;QAAAA;AAAG,iBAASylN,GAAGx5M,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG3B,UAAAA,KAAEA,GAAE+rF;AAAO,cAAIp+D,KAAExhB,GAAE/H;AAA8B,iBAA1Bs5M,GAAGvxM,IAAExK,EAAAA,GAAG1B,KAAEy/J,GAAGxzJ,IAAEC,IAAEnM,IAAEC,IAAE0tB,IAAEhsB,EAAAA,GAAM,SAAOuK,MAAI2xM,MAA0E1xM,GAAEsmH,SAAO,GAAEgzF,GAAGv5M,IAAEC,IAAElM,IAAE0B,EAAAA,GAAUwK,GAAE+zD,UAAhG/zD,GAAEgyM,cAAYjyM,GAAEiyM,aAAYhyM,GAAEsmH,SAAAA,MAAYvmH,GAAE0xM,SAAAA,CAAQj8M,IAAE6wE,GAAGtmE,IAAEC,IAAExK,EAAAA;QAAAA;AACxW,iBAASoD,GAAGmH,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAAA;AAAG,cAAG,SAAOzhB,IAAE;AAAC,gBAAIo5B,KAAEtlC,GAAE4G;AAAK,mBAAG,cAAA,OAAoB0+B,MAAIqgL,GAAGrgL,EAAAA,KAAAA,WAAaA,GAAEs6E,gBAAc,SAAO5/G,GAAE4zE,WAAAA,WAAkB5zE,GAAE4/G,iBAAsD1zG,KAAE40M,GAAG9gN,GAAE4G,MAAK,MAAK3G,IAAEkM,IAAEA,GAAErL,MAAK6sB,EAAAA,GAAKvpB,MAAI+H,GAAE/H,KAAI8H,GAAEm8L,SAAOl8L,IAASA,GAAE+zD,QAAMh0D,OAAvGC,GAAEktC,MAAI,IAAGltC,GAAEvF,OAAK0+B,IAAEsgL,GAAG15M,IAAEC,IAAEm5B,IAAErlC,IAAE0B,IAAEgsB,EAAAA;UAAAA;AAAoF,iBAAV2X,KAAEp5B,GAAEg0D,OAAS,MAAKv+D,KAAEgsB,QAAKhsB,KAAE2jC,GAAE+7K,gBAA0BrhN,KAAE,UAAdA,KAAEA,GAAE4zE,WAAmB5zE,KAAEw2M,IAAK70M,IAAE1B,EAAAA,KAAIiM,GAAE9H,QAAM+H,GAAE/H,OAAYouE,GAAGtmE,IAAEC,IAAEwhB,EAAAA,KAAGxhB,GAAEsmH,SAAO,IAAEvmH,KAAEy0M,GAAGr7K,IAAErlC,EAAAA,GAAKmE,MAAI+H,GAAE/H,KAAI8H,GAAEm8L,SAAOl8L,IAASA,GAAE+zD,QAAMh0D;QAAAA;AAClb,iBAAS05M,GAAG15M,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAAA;AAAG,cAAG,SAAOzhB,MAAGsqM,GAAGtqM,GAAEm1M,eAAcphN,EAAAA,KAAIiM,GAAE9H,QAAM+H,GAAE/H,KAAI;AAAA,gBAAGy5M,KAAAA,OAAM,MAAKlwL,KAAEhsB;AAAqC,qBAAOwK,GAAEyxM,QAAM1xM,GAAE0xM,OAAMprI,GAAGtmE,IAAEC,IAAEwhB,EAAAA;AAAhE,kBAAa,QAARzhB,GAAEumH,WAAeorF,KAAAA;UAAG;AAA0C,iBAAOgI,GAAG35M,IAAEC,IAAEnM,IAAEC,IAAE0tB,EAAAA;QAAAA;AACnL,iBAASi2H,GAAG13I,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEkM,GAAE01M,cAAalgN,KAAE1B,GAAEggE,UAAStyC,KAAE,SAAOzhB,KAAEA,GAAEq8L,gBAAc;AAAK,cAAG,aAAWtoM,GAAEa,QAAM,oCAAkCb,GAAEa;AAAK,gBAAG,MAAY,IAAPqL,GAAErL;AAAQqL,cAAAA,GAAEo8L,gBAAc,EAACud,WAAU,EAAA,GAAGC,GAAG55M,IAAEnM,EAAAA;iBAAQ;AAAA,kBAAG,MAAO,aAAFA;AAA8E,uBAAOkM,KAAE,SAAOyhB,KAAEA,GAAEm4L,YAAU9lN,KAAEA,IAAEmM,GAAEyxM,QAAMzxM,GAAEsxM,aAAW,YAAWtxM,GAAEo8L,gBAAc,EAACud,WAAU55M,GAAAA,GAAG65M,GAAG55M,IAAED,EAAAA,GAAG;AAAxKC,cAAAA,GAAEo8L,gBAAc,EAACud,WAAU,EAAA,GAAGC,GAAG55M,IAAE,SAAOwhB,KAAEA,GAAEm4L,YAAU9lN,EAAAA;YAAAA;;AAA0H,qBAAO2tB,MAAG1tB,KAAE0tB,GAAEm4L,YAAU9lN,IAAEmM,GAAEo8L,gBAAc,QAAMtoM,KAAED,IAAE+lN,GAAG55M,IAAElM,EAAAA;AAAe,iBAAZwlN,GAAGv5M,IAAEC,IAAExK,IAAE3B,EAAAA,GAAUmM,GAAE+zD;QAAAA;AAC1e,iBAAS8lJ,GAAG95M,IAAEC,IAAAA;AAAG,cAAInM,KAAEmM,GAAE/H;AAAAA,WAAO,SAAO8H,MAAG,SAAOlM,MAAG,SAAOkM,MAAGA,GAAE9H,QAAMpE,QAAEmM,GAAEsmH,SAAO;QAAA;AAAI,iBAASozF,GAAG35M,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,cAAIgsB,KAAE4sL,GAAGv6M,EAAAA,IAAGm6M,KAAG/lL,GAAE6d;AAA4C,iBAApCtkB,KAAEysL,GAAGjuM,IAAEwhB,EAAAA,GAAG+vL,GAAGvxM,IAAExK,EAAAA,GAAG3B,KAAE0/J,GAAGxzJ,IAAEC,IAAEnM,IAAEC,IAAE0tB,IAAEhsB,EAAAA,GAAM,SAAOuK,MAAI2xM,MAA0E1xM,GAAEsmH,SAAO,GAAEgzF,GAAGv5M,IAAEC,IAAEnM,IAAE2B,EAAAA,GAAUwK,GAAE+zD,UAAhG/zD,GAAEgyM,cAAYjyM,GAAEiyM,aAAYhyM,GAAEsmH,SAAAA,MAAYvmH,GAAE0xM,SAAAA,CAAQj8M,IAAE6wE,GAAGtmE,IAAEC,IAAExK,EAAAA;QAAAA;AAC9P,iBAASskN,GAAG/5M,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,cAAG44M,GAAGv6M,EAAAA,GAAG;AAAC,gBAAI2tB,KAAAA;AAAKitL,eAAGzuM,EAAAA;UAAAA;AAAQwhB,YAAAA,KAAAA;AAAa,cAAR+vL,GAAGvxM,IAAExK,EAAAA,GAAM,SAAOwK,GAAE06L;AAAU,qBAAO36L,OAAIA,GAAEk8L,YAAU,MAAKj8L,GAAEi8L,YAAU,MAAKj8L,GAAEsmH,SAAO,IAAGitF,GAAGvzM,IAAEnM,IAAEC,EAAAA,GAAG6/M,GAAG3zM,IAAEnM,IAAEC,IAAE0B,EAAAA,GAAG1B,KAAAA;mBAAa,SAAOiM,IAAE;AAAC,gBAAIo5B,KAAEn5B,GAAE06L,WAAU53L,KAAE9C,GAAEk1M;AAAc/7K,YAAAA,GAAEnZ,QAAMld;AAAE,gBAAIpI,KAAEy+B,GAAE9mB,SAAQ5e,KAAEI,GAAE4wC;AAAY,wBAAA,OAAkBhxC,MAAG,SAAOA,KAAEA,KAAEk+M,GAAGl+M,EAAAA,IAAyBA,KAAEw6M,GAAGjuM,IAA1BvM,KAAE26M,GAAGv6M,EAAAA,IAAGm6M,KAAG/lL,GAAE6d,OAAAA;AAAmB,gBAAI7wC,KAAEpB,GAAE0rJ,0BAAyBp9H,KAAE,cAAA,OAAoBltB,MAAG,cAAA,OAAoBkkC,GAAEy6K;AAAwBzxL,YAAAA,MAAG,cAAA,OAAoBgX,GAAEu6K,oCACpd,cAAA,OAAoBv6K,GAAEs6K,8BAA4B3wM,OAAIhP,MAAG4G,OAAIjH,OAAI+/M,GAAGxzM,IAAEm5B,IAAErlC,IAAEL,EAAAA,GAAGq+M,KAAAA;AAAM,gBAAIx8M,KAAE0K,GAAEo8L;AAAcjjK,YAAAA,GAAEgb,QAAM7+C,IAAEq9M,GAAG3yM,IAAElM,IAAEqlC,IAAE3jC,EAAAA,GAAGkF,KAAEsF,GAAEo8L,eAAct5L,OAAIhP,MAAGwB,OAAIoF,MAAG2qB,GAAEygB,WAASgsK,MAAI,cAAA,OAAoB78M,OAAI89M,GAAG/yM,IAAEnM,IAAEoB,IAAEnB,EAAAA,GAAG4G,KAAEsF,GAAEo8L,iBAAgBt5L,KAAEgvM,MAAIuB,GAAGrzM,IAAEnM,IAAEiP,IAAEhP,IAAEwB,IAAEoF,IAAEjH,EAAAA,MAAK0uB,MAAG,cAAA,OAAoBgX,GAAE06K,6BAA2B,cAAA,OAAoB16K,GAAE26K,uBAAqB,cAAA,OAAoB36K,GAAE26K,sBAAoB36K,GAAE26K,mBAAAA,GAAqB,cAAA,OAAoB36K,GAAE06K,6BAA2B16K,GAAE06K,0BAAAA,IAA6B,cAAA,OACze16K,GAAE46K,sBAAoB/zM,GAAEsmH,SAAO,OAAK,cAAA,OAAoBntF,GAAE46K,sBAAoB/zM,GAAEsmH,SAAO,IAAGtmH,GAAEk1M,gBAAcphN,IAAEkM,GAAEo8L,gBAAc1hM,KAAGy+B,GAAEnZ,QAAMlsB,IAAEqlC,GAAEgb,QAAMz5C,IAAEy+B,GAAE9mB,UAAQ5e,IAAEK,KAAEgP,OAAI,cAAA,OAAoBq2B,GAAE46K,sBAAoB/zM,GAAEsmH,SAAO,IAAGxyH,KAAAA;UAAE,OAAQ;AAACqlC,YAAAA,KAAEn5B,GAAE06L,WAAU2X,GAAGtyM,IAAEC,EAAAA,GAAG8C,KAAE9C,GAAEk1M,eAAczhN,KAAEuM,GAAEvF,SAAOuF,GAAE00M,cAAY5xM,KAAEguM,GAAG9wM,GAAEvF,MAAKqI,EAAAA,GAAGq2B,GAAEnZ,QAAMvsB,IAAE0uB,KAAEniB,GAAE01M,cAAapgN,KAAE6jC,GAAE9mB,SAAwB,YAAA,QAAhB3X,KAAE7G,GAAE4wC,gBAAiC,SAAO/pC,KAAEA,KAAEi3M,GAAGj3M,EAAAA,IAAyBA,KAAEuzM,GAAGjuM,IAA1BtF,KAAE0zM,GAAGv6M,EAAAA,IAAGm6M,KAAG/lL,GAAE6d,OAAAA;AAAmB,gBAAIljB,KAAE/uB,GAAE0rJ;AAAAA,aAA0BtqJ,KAAE,cAAA,OAAoB2tB,MACnf,cAAA,OAAoBuW,GAAEy6K,4BAA0B,cAAA,OAAoBz6K,GAAEu6K,oCAAkC,cAAA,OAAoBv6K,GAAEs6K,8BAA4B3wM,OAAIqf,MAAG7sB,OAAIoF,OAAI84M,GAAGxzM,IAAEm5B,IAAErlC,IAAE4G,EAAAA,GAAGo3M,KAAAA,OAAMx8M,KAAE0K,GAAEo8L,eAAcjjK,GAAEgb,QAAM7+C,IAAEq9M,GAAG3yM,IAAElM,IAAEqlC,IAAE3jC,EAAAA;AAAG,gBAAIiV,KAAEzK,GAAEo8L;AAAct5L,YAAAA,OAAIqf,MAAG7sB,OAAImV,MAAG4a,GAAEygB,WAASgsK,MAAI,cAAA,OAAoBlvL,OAAImwL,GAAG/yM,IAAEnM,IAAE+uB,IAAE9uB,EAAAA,GAAG2W,KAAEzK,GAAEo8L,iBAAgB3oM,KAAEq+M,MAAIuB,GAAGrzM,IAAEnM,IAAEJ,IAAEK,IAAEwB,IAAEmV,IAAE/P,EAAAA,MAAKzF,MAAG,cAAA,OAAoBkkC,GAAE4gL,8BAA4B,cAAA,OAAoB5gL,GAAE6gL,wBAAsB,cAAA,OAAoB7gL,GAAE6gL,uBAAqB7gL,GAAE6gL,oBAAoBlmN,IAC1gB2W,IAAE/P,EAAAA,GAAG,cAAA,OAAoBy+B,GAAE4gL,8BAA4B5gL,GAAE4gL,2BAA2BjmN,IAAE2W,IAAE/P,EAAAA,IAAI,cAAA,OAAoBy+B,GAAE8gL,uBAAqBj6M,GAAEsmH,SAAO,IAAG,cAAA,OAAoBntF,GAAEy6K,4BAA0B5zM,GAAEsmH,SAAO,SAAO,cAAA,OAAoBntF,GAAE8gL,sBAAoBn3M,OAAI/C,GAAEm1M,iBAAe5/M,OAAIyK,GAAEq8L,kBAAgBp8L,GAAEsmH,SAAO,IAAG,cAAA,OAAoBntF,GAAEy6K,2BAAyB9wM,OAAI/C,GAAEm1M,iBAAe5/M,OAAIyK,GAAEq8L,kBAAgBp8L,GAAEsmH,SAAO,MAAKtmH,GAAEk1M,gBAAcphN,IAAEkM,GAAEo8L,gBAAc3xL,KAAG0uB,GAAEnZ,QAAMlsB,IAAEqlC,GAAEgb,QAAM1pC,IAAE0uB,GAAE9mB,UAAQ3X,IAAE5G,KAAEL,OAAI,cAAA,OAAoB0lC,GAAE8gL,sBAC7fn3M,OAAI/C,GAAEm1M,iBAAe5/M,OAAIyK,GAAEq8L,kBAAgBp8L,GAAEsmH,SAAO,IAAG,cAAA,OAAoBntF,GAAEy6K,2BAAyB9wM,OAAI/C,GAAEm1M,iBAAe5/M,OAAIyK,GAAEq8L,kBAAgBp8L,GAAEsmH,SAAO,MAAKxyH,KAAAA;UAAE;AAAI,iBAAOomN,GAAGn6M,IAAEC,IAAEnM,IAAEC,IAAE0tB,IAAEhsB,EAAAA;QAAAA;AACzL,iBAAS0kN,GAAGn6M,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAAA;AAAGq4L,aAAG95M,IAAEC,EAAAA;AAAG,cAAIm5B,KAAE,MAAa,KAARn5B,GAAEsmH;AAAU,cAAA,CAAIxyH,MAAAA,CAAIqlC;AAAE,mBAAO3jC,MAAGm5M,GAAG3uM,IAAEnM,IAAAA,KAAE,GAAIwyE,GAAGtmE,IAAEC,IAAEwhB,EAAAA;AAAG1tB,UAAAA,KAAEkM,GAAE06L,WAAU2e,GAAGvzK,UAAQ9lC;AAAE,cAAI8C,KAAEq2B,MAAG,cAAA,OAAoBtlC,GAAEyrJ,2BAAyB,OAAKxrJ,GAAE8rF,OAAAA;AAAwI,iBAA/H5/E,GAAEsmH,SAAO,GAAE,SAAOvmH,MAAGo5B,MAAGn5B,GAAE+zD,QAAM+gJ,GAAG90M,IAAED,GAAEg0D,OAAM,MAAKvyC,EAAAA,GAAGxhB,GAAE+zD,QAAM+gJ,GAAG90M,IAAE,MAAK8C,IAAE0e,EAAAA,KAAI83L,GAAGv5M,IAAEC,IAAE8C,IAAE0e,EAAAA,GAAGxhB,GAAEo8L,gBAActoM,GAAEqgD,OAAM3+C,MAAGm5M,GAAG3uM,IAAEnM,IAAAA,IAAE,GAAWmM,GAAE+zD;QAAAA;AAAM,iBAASomJ,GAAGp6M,IAAAA;AAAG,cAAIC,KAAED,GAAE26L;AAAU16L,UAAAA,GAAEo6M,iBAAe9L,GAAGvuM,GAAEC,GAAEo6M,gBAAep6M,GAAEo6M,mBAAiBp6M,GAAEqS,OAAAA,IAASrS,GAAEqS,WAASi8L,GAAGvuM,GAAEC,GAAEqS,SAAAA,KAAQ,GAAI4iJ,GAAGl1J,IAAEC,GAAEq+L,aAAAA;QAAAA;AAC7d,YAS0Vgc,IAAMC,IAAGC,IAT/VC,KAAG,EAACne,YAAW,MAAKoe,WAAU,EAAA;AAClC,iBAASC,GAAG36M,IAAEC,IAAEnM,IAAAA;AAAG,cAAsCslC,IAAlCrlC,KAAEkM,GAAE01M,cAAalgN,KAAE0tB,GAAE4iB,SAAQtkB,KAAAA;AAA+M,kBAAvM2X,KAAE,MAAa,KAARn5B,GAAEsmH,YAAantF,MAAE,SAAOp5B,MAAG,SAAOA,GAAEq8L,kBAAiB,MAAO,IAAF5mM,MAAM2jC,MAAG3X,KAAAA,MAAKxhB,GAAEsmH,SAAAA,OAAY,SAAOvmH,MAAG,SAAOA,GAAEq8L,iBAAAA,WAAwBtoM,GAAE+6C,YAAAA,SAAe/6C,GAAE6mN,+BAA6BnlN,MAAG,IAAG8jC,GAAEpW,IAAI,IAAF1tB,EAAAA,GAAQ,SAAOuK,MAAAA,WAAYjM,GAAE+6C,YAAU8mK,GAAG31M,EAAAA,GAAGD,KAAEjM,GAAEggE,UAASt+D,KAAE1B,GAAE+6C,UAAYrtB,MAASzhB,KAAE66M,GAAG56M,IAAED,IAAEvK,IAAE3B,EAAAA,GAAGmM,GAAE+zD,MAAMqoI,gBAAc,EAACud,WAAU9lN,GAAAA,GAAGmM,GAAEo8L,gBAAcoe,IAAGz6M,MAAK,YAAA,OAAkBjM,GAAE+mN,6BAAiC96M,KAAE66M,GAAG56M,IAAED,IAAEvK,IAAE3B,EAAAA,GAAGmM,GAAE+zD,MAAMqoI,gBAAc,EAACud,WAAU9lN,GAAAA,GAC/fmM,GAAEo8L,gBAAcoe,IAAGx6M,GAAEyxM,QAAM,UAAS1xM,QAAElM,KAAEinN,GAAG,EAACnmN,MAAK,WAAUm/D,UAAS/zD,GAAAA,GAAGC,GAAErL,MAAKd,IAAE,IAAA,GAAQqoM,SAAOl8L,IAASA,GAAE+zD,QAAMlgE,QAAYkM,GAAEq8L,eAAkB56K,MAAS1tB,KAAEinN,GAAGh7M,IAAEC,IAAElM,GAAEggE,UAAShgE,GAAE+6C,UAASh7C,EAAAA,GAAG2tB,KAAExhB,GAAE+zD,OAAMv+D,KAAEuK,GAAEg0D,MAAMqoI,eAAc56K,GAAE46K,gBAAc,SAAO5mM,KAAE,EAACmkN,WAAU9lN,GAAAA,IAAG,EAAC8lN,WAAUnkN,GAAEmkN,YAAU9lN,GAAAA,GAAG2tB,GAAE8vL,aAAWvxM,GAAEuxM,aAAAA,CAAYz9M,IAAEmM,GAAEo8L,gBAAcoe,IAAG1mN,OAAED,KAAEmnN,GAAGj7M,IAAEC,IAAElM,GAAEggE,UAASjgE,EAAAA,GAAGmM,GAAEo8L,gBAAc,MAAYvoM;QAAAA;AAClQ,iBAAS+mN,GAAG76M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEuK,GAAEpL,MAAK6sB,KAAEzhB,GAAEg0D;AAAuK,iBAAjK/zD,KAAE,EAACrL,MAAK,UAASm/D,UAAS9zD,GAAAA,GAAG,MAAO,IAAFxK,OAAM,SAAOgsB,MAAGA,GAAE8vL,aAAW,GAAE9vL,GAAEk0L,eAAa11M,MAAGwhB,KAAEs5L,GAAG96M,IAAExK,IAAE,GAAE,IAAA,GAAM3B,KAAEghN,GAAGhhN,IAAE2B,IAAE1B,IAAE,IAAA,GAAM0tB,GAAE06K,SAAOn8L,IAAElM,GAAEqoM,SAAOn8L,IAAEyhB,GAAEg7K,UAAQ3oM,IAAEkM,GAAEg0D,QAAMvyC,IAAS3tB;QAAAA;AACrV,iBAASmnN,GAAGj7M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEuK,GAAEg0D;AAAiL,iBAA3Kh0D,KAAEvK,GAAEgnM,SAAQ3oM,KAAE2gN,GAAGh/M,IAAE,EAACb,MAAK,WAAUm/D,UAASjgE,GAAAA,CAAAA,GAAI,MAAY,IAAPmM,GAAErL,UAAUd,GAAE49M,QAAM39M,KAAGD,GAAEqoM,SAAOl8L,IAAEnM,GAAE2oM,UAAQ,MAAK,SAAOz8L,OAAIA,GAAEu0M,aAAW,MAAKv0M,GAAEumH,QAAM,GAAEtmH,GAAEu0M,cAAYv0M,GAAEq0M,aAAWt0M,KAAUC,GAAE+zD,QAAMlgE;QAAAA;AAC7N,iBAASknN,GAAGh7M,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,cAAIgsB,KAAExhB,GAAErL,MAAKwkC,KAAEp5B,GAAEg0D;AAAMh0D,UAAAA,KAAEo5B,GAAEqjK;AAAQ,cAAI15L,KAAE,EAACnO,MAAK,UAASm/D,UAASjgE,GAAAA;AAAoS,iBAAjS,MAAO,IAAF2tB,OAAMxhB,GAAE+zD,UAAQ56B,OAAGtlC,KAAEmM,GAAE+zD,OAAQu9I,aAAW,GAAEz9M,GAAE6hN,eAAa5yM,IAAiB,UAAfq2B,KAAEtlC,GAAEwgN,eAAqBr0M,GAAEu0M,cAAY1gN,GAAE0gN,aAAYv0M,GAAEq0M,aAAWl7K,IAAEA,GAAEm7K,aAAW,QAAMt0M,GAAEu0M,cAAYv0M,GAAEq0M,aAAW,QAAMxgN,KAAE2gN,GAAGr7K,IAAEr2B,EAAAA,GAAG,SAAO/C,KAAEjM,KAAE0gN,GAAGz0M,IAAEjM,EAAAA,KAAIA,KAAE+gN,GAAG/gN,IAAE0tB,IAAEhsB,IAAE,IAAA,GAAQ8wH,SAAO,GAAGxyH,GAAEooM,SAAOl8L,IAAEnM,GAAEqoM,SAAOl8L,IAAEnM,GAAE2oM,UAAQ1oM,IAAEkM,GAAE+zD,QAAMlgE,IAASC;QAAAA;AAAE,iBAASmnN,GAAGl7M,IAAEC,IAAAA;AAAGD,UAAAA,GAAE0xM,SAAOzxM;AAAE,cAAInM,KAAEkM,GAAEk8L;AAAU,mBAAOpoM,OAAIA,GAAE49M,SAAOzxM,KAAGqxM,GAAGtxM,GAAEm8L,QAAOl8L,EAAAA;QAAAA;AACtd,iBAASk7M,GAAGn7M,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAAA;AAAG,cAAI2X,KAAEp5B,GAAEq8L;AAAc,mBAAOjjK,KAAEp5B,GAAEq8L,gBAAc,EAAC+e,aAAYn7M,IAAEo7M,WAAU,MAAKC,oBAAmB,GAAEx+L,MAAK/oB,IAAEqb,MAAKtb,IAAEynN,UAAS9lN,IAAE6+M,YAAW7yL,GAAAA,KAAI2X,GAAEgiL,cAAYn7M,IAAEm5B,GAAEiiL,YAAU,MAAKjiL,GAAEkiL,qBAAmB,GAAEliL,GAAEtc,OAAK/oB,IAAEqlC,GAAEhqB,OAAKtb,IAAEslC,GAAEmiL,WAAS9lN,IAAE2jC,GAAEk7K,aAAW7yL;QAAAA;AACvQ,iBAAS+5L,GAAGx7M,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEkM,GAAE01M,cAAalgN,KAAE1B,GAAEqhN,aAAY3zL,KAAE1tB,GAAEqb;AAAsC,cAAjCmqM,GAAGv5M,IAAEC,IAAElM,GAAEggE,UAASjgE,EAAAA,GAAkB,MAAO,KAAtBC,KAAEovB,GAAE4iB;AAAqBhyC,YAAAA,KAAI,IAAFA,KAAI,GAAEkM,GAAEsmH,SAAO;eAAO;AAAC,gBAAG,SAAOvmH,MAAG,MAAa,KAARA,GAAEumH;AAAUvmH;AAAE,qBAAIA,KAAEC,GAAE+zD,OAAM,SAAOh0D,MAAG;AAAC,sBAAG,OAAKA,GAAEmtC;AAAI,6BAAOntC,GAAEq8L,iBAAe6e,GAAGl7M,IAAElM,EAAAA;2BAAW,OAAKkM,GAAEmtC;AAAI+tK,uBAAGl7M,IAAElM,EAAAA;2BAAW,SAAOkM,GAAEg0D,OAAM;AAACh0D,oBAAAA,GAAEg0D,MAAMmoI,SAAOn8L,IAAEA,KAAEA,GAAEg0D;AAAM;kBAAA;AAAS,sBAAGh0D,OAAIC;AAAE,0BAAMD;AAAE,yBAAK,SAAOA,GAAEy8L,WAAS;AAAC,wBAAG,SAAOz8L,GAAEm8L,UAAQn8L,GAAEm8L,WAASl8L;AAAE,4BAAMD;AAAEA,oBAAAA,KAAEA,GAAEm8L;kBAAAA;AAAOn8L,kBAAAA,GAAEy8L,QAAQN,SAAOn8L,GAAEm8L,QAAOn8L,KAAEA,GAAEy8L;gBAAAA;AAAQ1oM,YAAAA,MAAG;UAAA;AAAS,cAAPwlC,GAAEpW,IAAEpvB,EAAAA,GAAM,MAAY,IAAPkM,GAAErL;AAAQqL,YAAAA,GAAEo8L,gBACze;;AAAU,oBAAO5mM,IAAAA;cAAG,KAAK;AAAqB,qBAAV3B,KAAEmM,GAAE+zD,OAAUv+D,KAAE,MAAK,SAAO3B;AAAiB,4BAAdkM,KAAElM,GAAEooM,cAAoB,SAAOgZ,GAAGl1M,EAAAA,MAAKvK,KAAE3B,KAAGA,KAAEA,GAAE2oM;AAAY,0BAAJ3oM,KAAE2B,OAAYA,KAAEwK,GAAE+zD,OAAM/zD,GAAE+zD,QAAM,SAAOv+D,KAAE3B,GAAE2oM,SAAQ3oM,GAAE2oM,UAAQ,OAAM0e,GAAGl7M,IAAAA,OAAKxK,IAAE3B,IAAE2tB,IAAExhB,GAAEq0M,UAAAA;AAAY;cAAM,KAAK;AAA6B,qBAAjBxgN,KAAE,MAAK2B,KAAEwK,GAAE+zD,OAAU/zD,GAAE+zD,QAAM,MAAK,SAAOv+D,MAAG;AAAe,sBAAG,UAAjBuK,KAAEvK,GAAEymM,cAAuB,SAAOgZ,GAAGl1M,EAAAA,GAAG;AAACC,oBAAAA,GAAE+zD,QAAMv+D;AAAE;kBAAA;AAAMuK,kBAAAA,KAAEvK,GAAEgnM,SAAQhnM,GAAEgnM,UAAQ3oM,IAAEA,KAAE2B,IAAEA,KAAEuK;gBAAAA;AAAEm7M,mBAAGl7M,IAAAA,MAAKnM,IAAE,MAAK2tB,IAAExhB,GAAEq0M,UAAAA;AAAY;cAAM,KAAK;AAAW6G,mBAAGl7M,IAAAA,OAAK,MAAK,MAAA,QAAYA,GAAEq0M,UAAAA;AAAY;cAAM;AAAQr0M,gBAAAA,GAAEo8L,gBAAc;YAAA;AAAK,iBAAOp8L,GAAE+zD;QAAAA;AAC/f,iBAASsS,GAAGtmE,IAAEC,IAAEnM,IAAAA;AAAyD,cAAtD,SAAOkM,OAAIC,GAAEmxB,eAAapxB,GAAEoxB,eAAcyhL,MAAI5yM,GAAEyxM,OAAS,MAAK59M,KAAEmM,GAAEsxM,aAAY;AAAC,gBAAG,SAAOvxM,MAAGC,GAAE+zD,UAAQh0D,GAAEg0D;AAAM,oBAAM9yD,MAAMukB,GAAE,GAAA,CAAA;AAAM,gBAAG,SAAOxlB,GAAE+zD,OAAM;AAA4C,mBAAjClgE,KAAE2gN,GAAZz0M,KAAEC,GAAE+zD,OAAah0D,GAAE21M,YAAAA,GAAc11M,GAAE+zD,QAAMlgE,IAAMA,GAAEqoM,SAAOl8L,IAAE,SAAOD,GAAEy8L;AAASz8L,gBAAAA,KAAEA,GAAEy8L,UAAQ3oM,KAAEA,GAAE2oM,UAAQgY,GAAGz0M,IAAEA,GAAE21M,YAAAA,GAAgBxZ,SAAOl8L;AAAEnM,cAAAA,GAAE2oM,UAAQ;YAAA;AAAK,mBAAOx8L,GAAE+zD;UAAAA;AAAM,iBAAO;QAAA;AAK5P,iBAASynJ,GAAGz7M,IAAEC,IAAAA;AAAG,cAAA,CAAIs1M;AAAG,oBAAOv1M,GAAEu7M,UAAAA;cAAU,KAAK;AAASt7M,gBAAAA,KAAED,GAAEoP;AAAK,yBAAQtb,KAAE,MAAK,SAAOmM;AAAG,2BAAOA,GAAEi8L,cAAYpoM,KAAEmM,KAAGA,KAAEA,GAAEw8L;AAAQ,yBAAO3oM,KAAEkM,GAAEoP,OAAK,OAAKtb,GAAE2oM,UAAQ;AAAK;cAAM,KAAK;AAAY3oM,gBAAAA,KAAEkM,GAAEoP;AAAK,yBAAQrb,KAAE,MAAK,SAAOD;AAAG,2BAAOA,GAAEooM,cAAYnoM,KAAED,KAAGA,KAAEA,GAAE2oM;AAAQ,yBAAO1oM,KAAEkM,MAAG,SAAOD,GAAEoP,OAAKpP,GAAEoP,OAAK,OAAKpP,GAAEoP,KAAKqtL,UAAQ,OAAK1oM,GAAE0oM,UAAQ;YAAA;QAAA;AAC7Z,iBAASif,GAAG17M,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEkM,GAAE01M;AAAa,kBAAO11M,GAAEktC,KAAAA;YAAK,KAAK;YAAE,KAAK;YAAG,KAAK;YAAG,KAAK;YAAE,KAAK;YAAG,KAAK;YAAE,KAAK;YAAE,KAAK;YAAG,KAAK;YAAE,KAAK;AAAG,qBAAO;YAAK,KAAK;AAAE,qBAAOkhK,GAAGpuM,GAAEvF,IAAAA,KAAO4zM,GAAAA,GAAK;YAAK,KAAK;AAAsL,qBAApLn5C,GAAAA,GAAKt7H,GAAEvU,EAAAA,GAAGuU,GAAE3R,EAAAA,GAAG+tL,GAAAA,IAAKliN,KAAEkM,GAAE06L,WAAY0f,mBAAiBtmN,GAAEue,UAAQve,GAAEsmN,gBAAetmN,GAAEsmN,iBAAe,OAAS,SAAOr6M,MAAG,SAAOA,GAAEg0D,UAAM8hJ,GAAG71M,EAAAA,IAAGA,GAAEsmH,SAAO,IAAExyH,GAAEsqM,YAAUp+L,GAAEsmH,SAAO,OAAkB;YAAK,KAAK;AAAE8uC,iBAAGp1J,EAAAA;AAAG,kBAAIxK,KAAEw/J,GAAGvlH,GAAG3J,OAAAA;AAAkB,kBAATjyC,KAAEmM,GAAEvF,MAAQ,SAAOsF,MAAG,QAAMC,GAAE06L;AAAU4f,mBAAGv6M,IAAEC,IAAEnM,IAAEC,EAAAA,GAAKiM,GAAE9H,QAAM+H,GAAE/H,QAAM+H,GAAEsmH,SAAO;mBAAS;AAAC,oBAAA,CAAIxyH,IAAE;AAAC,sBAAG,SAC7fkM,GAAE06L;AAAU,0BAAMz5L,MAAMukB,GAAE,GAAA,CAAA;AAAM,yBAAO;gBAAA;AAAsB,oBAAjBzlB,KAAEi1J,GAAGF,GAAGhvH,OAAAA,GAAY+vK,GAAG71M,EAAAA,GAAG;AAAClM,kBAAAA,KAAEkM,GAAE06L,WAAU7mM,KAAEmM,GAAEvF;AAAK,sBAAI+mB,KAAExhB,GAAEk1M;AAA8B,0BAAhBphN,GAAE25M,EAAAA,IAAIztM,IAAElM,GAAE45M,EAAAA,IAAIlsL,IAAS3tB,IAAAA;oBAAG,KAAK;AAASmmC,yBAAE,UAASlmC,EAAAA,GAAGkmC,GAAE,SAAQlmC,EAAAA;AAAG;oBAAM,KAAK;oBAAS,KAAK;oBAAS,KAAK;AAAQkmC,yBAAE,QAAOlmC,EAAAA;AAAG;oBAAM,KAAK;oBAAQ,KAAK;AAAQ,2BAAIiM,KAAE,GAAEA,KAAEgsM,GAAGrzM,QAAOqH;AAAIi6B,2BAAE+xK,GAAGhsM,EAAAA,GAAGjM,EAAAA;AAAG;oBAAM,KAAK;AAASkmC,yBAAE,SAAQlmC,EAAAA;AAAG;oBAAM,KAAK;oBAAM,KAAK;oBAAQ,KAAK;AAAOkmC,yBAAE,SAAQlmC,EAAAA,GAAGkmC,GAAE,QAAOlmC,EAAAA;AAAG;oBAAM,KAAK;AAAUkmC,yBAAE,UAASlmC,EAAAA;AAAG;oBAAM,KAAK;AAAQwhM,yBAAGxhM,IAAE0tB,EAAAA,GAAGwY,GAAE,WAAUlmC,EAAAA;AAAG;oBAAM,KAAK;AAASA,sBAAAA,GAAEshM,gBAC5f,EAACsmB,aAAAA,CAAAA,CAAcl6L,GAAEm6L,SAAAA,GAAU3hL,GAAE,WAAUlmC,EAAAA;AAAG;oBAAM,KAAK;AAAWiiM,yBAAGjiM,IAAE0tB,EAAAA,GAAGwY,GAAE,WAAUlmC,EAAAA;kBAAAA;AAAkB,2BAAQqlC,MAAvB6gK,GAAGnmM,IAAE2tB,EAAAA,GAAGzhB,KAAE,MAAkByhB;AAAEA,oBAAAA,GAAEnsB,eAAe8jC,EAAAA,MAAK3jC,KAAEgsB,GAAE2X,EAAAA,GAAG,eAAaA,KAAE,YAAA,OAAkB3jC,KAAE1B,GAAEksH,gBAAcxqH,OAAIuK,KAAE,CAAC,YAAWvK,EAAAA,KAAI,YAAA,OAAkBA,MAAG1B,GAAEksH,gBAAc,KAAGxqH,OAAIuK,KAAE,CAAC,YAAW,KAAGvK,EAAAA,KAAIm8L,GAAGt8L,eAAe8jC,EAAAA,KAAI,QAAM3jC,MAAG,eAAa2jC,MAAGa,GAAE,UAASlmC,EAAAA;AAAI,0BAAOD,IAAAA;oBAAG,KAAK;AAAQ8gM,sBAAAA,GAAG7gM,EAAAA,GAAG+yC,GAAG/yC,IAAE0tB,IAAAA,IAAE;AAAI;oBAAM,KAAK;AAAWmzK,sBAAAA,GAAG7gM,EAAAA,GAAGmiM,GAAGniM,EAAAA;AAAG;oBAAM,KAAK;oBAAS,KAAK;AAAS;oBAAM;AAAQ,oCAAA,OAAoB0tB,GAAEg2G,YAAU1jI,GAAE8nN,UACtf/O;kBAAAA;AAAI/4M,kBAAAA,KAAEiM,IAAEC,GAAEgyM,cAAYl+M,IAAE,SAAOA,OAAIkM,GAAEsmH,SAAO;gBAAA,OAAO;AAAiZ,0BAAhZntF,KAAE,MAAI3jC,GAAE4O,WAAS5O,KAAEA,GAAE0kH,eAAcn6G,OAAIm2L,OAAUn2L,KAAEo2L,GAAGtiM,EAAAA,IAAIkM,OAAIm2L,KAAQ,aAAWriM,OAAGkM,KAAEo5B,GAAEq6B,cAAc,KAAA,GAAS06B,YAAU,sBAAuBnuF,KAAEA,GAAE2+G,YAAY3+G,GAAE6hH,UAAAA,KAAa,YAAA,OAAkB9tH,GAAE2L,KAAGM,KAAEo5B,GAAEq6B,cAAc3/D,IAAE,EAAC4L,IAAG3L,GAAE2L,GAAAA,CAAAA,KAAMM,KAAEo5B,GAAEq6B,cAAc3/D,EAAAA,GAAG,aAAWA,OAAIslC,KAAEp5B,IAAEjM,GAAE6nN,WAASxiL,GAAEwiL,WAAAA,OAAY7nN,GAAEiF,SAAOogC,GAAEpgC,OAAKjF,GAAEiF,UAAQgH,KAAEo5B,GAAE0iL,gBAAgB97M,IAAElM,EAAAA,GAAGkM,GAAE0tM,EAAAA,IAAIztM,IAAED,GAAE2tM,EAAAA,IAAI55M,IAAEumN,GAAGt6M,IAAEC,EAAAA,GAASA,GAAE06L,YAAU36L,IAAEo5B,KAAE8gK,GAAGpmM,IAAEC,EAAAA,GAAUD,IAAAA;oBAAG,KAAK;AAASmmC,yBAAE,UAASj6B,EAAAA,GAAGi6B,GAAE,SAAQj6B,EAAAA,GACpfvK,KAAE1B;AAAE;oBAAM,KAAK;oBAAS,KAAK;oBAAS,KAAK;AAAQkmC,yBAAE,QAAOj6B,EAAAA,GAAGvK,KAAE1B;AAAE;oBAAM,KAAK;oBAAQ,KAAK;AAAQ,2BAAI0B,KAAE,GAAEA,KAAEu2M,GAAGrzM,QAAOlD;AAAIwkC,2BAAE+xK,GAAGv2M,EAAAA,GAAGuK,EAAAA;AAAGvK,sBAAAA,KAAE1B;AAAE;oBAAM,KAAK;AAASkmC,yBAAE,SAAQj6B,EAAAA,GAAGvK,KAAE1B;AAAE;oBAAM,KAAK;oBAAM,KAAK;oBAAQ,KAAK;AAAOkmC,yBAAE,SAAQj6B,EAAAA,GAAGi6B,GAAE,QAAOj6B,EAAAA,GAAGvK,KAAE1B;AAAE;oBAAM,KAAK;AAAUkmC,yBAAE,UAASj6B,EAAAA,GAAGvK,KAAE1B;AAAE;oBAAM,KAAK;AAAQwhM,yBAAGv1L,IAAEjM,EAAAA,GAAG0B,KAAE0/L,GAAGn1L,IAAEjM,EAAAA,GAAGkmC,GAAE,WAAUj6B,EAAAA;AAAG;oBAAM,KAAK;AAASvK,sBAAAA,KAAEmgM,GAAG51L,IAAEjM,EAAAA;AAAG;oBAAM,KAAK;AAASiM,sBAAAA,GAAEq1L,gBAAc,EAACsmB,aAAAA,CAAAA,CAAc5nN,GAAE6nN,SAAAA,GAAUnmN,KAAE5B,GAAE,CAAA,GAAGE,IAAE,EAACW,OAAAA,OAAM,CAAA,GAASulC,GAAE,WAAUj6B,EAAAA;AAAG;oBAAM,KAAK;AAAWg2L,yBAAGh2L,IAAEjM,EAAAA,GAAG0B,KACpfsgM,GAAG/1L,IAAEjM,EAAAA,GAAGkmC,GAAE,WAAUj6B,EAAAA;AAAG;oBAAM;AAAQvK,sBAAAA,KAAE1B;kBAAAA;AAAEkmM,qBAAGnmM,IAAE2B,EAAAA;AAAG,sBAAIsN,KAAEtN;AAAE,uBAAIgsB,MAAK1e;AAAE,wBAAGA,GAAEzN,eAAemsB,EAAAA,GAAG;AAAC,0BAAI9mB,KAAEoI,GAAE0e,EAAAA;AAAG,kCAAUA,KAAE63K,GAAGt5L,IAAErF,EAAAA,IAAG,8BAA4B8mB,KAAuB,SAApB9mB,KAAEA,KAAEA,GAAE24G,SAAAA,WAAuBgjF,GAAGt2L,IAAErF,EAAAA,IAAI,eAAa8mB,KAAE,YAAA,OAAkB9mB,MAAG,eAAa7G,MAAG,OAAK6G,OAAI87L,GAAGz2L,IAAErF,EAAAA,IAAG,YAAA,OAAkBA,MAAG87L,GAAGz2L,IAAE,KAAGrF,EAAAA,IAAG,qCAAmC8mB,MAAG,+BAA6BA,MAAG,gBAAcA,OAAImwK,GAAGt8L,eAAemsB,EAAAA,IAAG,QAAM9mB,MAAG,eAAa8mB,MAAGwY,GAAE,UAASj6B,EAAAA,IAAG,QAAMrF,MAAGk4L,GAAG7yL,IAAEyhB,IAAE9mB,IAAEy+B,EAAAA;oBAAAA;AAAI,0BAAOtlC,IAAAA;oBAAG,KAAK;AAAQ8gM,sBAAAA,GAAG50L,EAAAA,GAAG8mC,GAAG9mC,IAAEjM,IAAAA,KAAE;AACnf;oBAAM,KAAK;AAAW6gM,sBAAAA,GAAG50L,EAAAA,GAAGk2L,GAAGl2L,EAAAA;AAAG;oBAAM,KAAK;AAAS,8BAAMjM,GAAEW,SAAOsL,GAAEyzG,aAAa,SAAQ,KAAGihF,GAAG3gM,GAAEW,KAAAA,CAAAA;AAAQ;oBAAM,KAAK;AAASsL,sBAAAA,GAAE47M,WAAAA,CAAAA,CAAW7nN,GAAE6nN,UAAmB,SAAVn6L,KAAE1tB,GAAEW,SAAcmhM,GAAG71L,IAAAA,CAAAA,CAAIjM,GAAE6nN,UAASn6L,IAAAA,KAAE,IAAI,QAAM1tB,GAAEikC,gBAAc69J,GAAG71L,IAAAA,CAAAA,CAAIjM,GAAE6nN,UAAS7nN,GAAEikC,cAAAA,IAAa;AAAI;oBAAM;AAAQ,oCAAA,OAAoBviC,GAAEgiI,YAAUz3H,GAAE67M,UAAQ/O;kBAAAA;AAAIG,qBAAGn5M,IAAEC,EAAAA,MAAKkM,GAAEsmH,SAAO;gBAAA;AAAG,yBAAOtmH,GAAE/H,QAAM+H,GAAEsmH,SAAO;cAAA;AAAK,qBAAO;YAAK,KAAK;AAAE,kBAAGvmH,MAAG,QAAMC,GAAE06L;AAAU6f,mBAAGx6M,GAAEC,IAAED,GAAEm1M,eAAcphN,EAAAA;mBAAO;AAAC,oBAAG,YAAA,OAAkBA,MAAG,SAAOkM,GAAE06L;AAAU,wBAAMz5L,MAAMukB,GAAE,GAAA,CAAA;AAC/e3xB,gBAAAA,KAAEmhK,GAAGvlH,GAAG3J,OAAAA,GAASkvH,GAAGF,GAAGhvH,OAAAA,GAAS+vK,GAAG71M,EAAAA,KAAIlM,KAAEkM,GAAE06L,WAAU7mM,KAAEmM,GAAEk1M,eAAcphN,GAAE25M,EAAAA,IAAIztM,IAAElM,GAAE4iM,cAAY7iM,OAAImM,GAAEsmH,SAAO,QAAKxyH,MAAG,MAAID,GAAEuQ,WAASvQ,KAAEA,GAAEqmH,eAAeqF,eAAezrH,EAAAA,GAAK25M,EAAAA,IAAIztM,IAAEA,GAAE06L,YAAU5mM;cAAAA;AAAG,qBAAO;YAAK,KAAK;AAA0B,qBAAvB8lC,GAAE1W,EAAAA,GAAGpvB,KAAEkM,GAAEo8L,eAAiB,MAAa,KAARp8L,GAAEsmH,UAAiBtmH,GAAEyxM,QAAM59M,IAAEmM,OAAElM,KAAE,SAAOA,IAAED,KAAAA,OAAK,SAAOkM,KAAAA,WAAWC,GAAEk1M,cAAcrmK,YAAUgnK,GAAG71M,EAAAA,IAAGnM,KAAE,SAAOkM,GAAEq8L,eAAiBtoM,MAAAA,CAAID,MAAG,MAAY,IAAPmM,GAAErL,UAAW,SAAOoL,MAAAA,SAAQC,GAAEk1M,cAAcyF,8BAA4B,MAAe,IAAVz3L,GAAE4iB,WAAW,MAAIpM,OAAIA,KAAE,MAAW,MAAIA,MAAG,MAAIA,OAAEA,KACrf,IAAE,SAAOD,MAAG,MAAQ,YAAHm5K,OAAe,MAAQ,YAAHkJ,OAAeC,GAAGtiL,IAAEE,EAAAA,MAAM7lC,MAAGD,QAAEmM,GAAEsmH,SAAO,IAAS;YAAK,KAAK;AAAE,qBAAO4uC,GAAAA,GAAW,SAAOn1J,MAAGssM,GAAGrsM,GAAE06L,UAAU2D,aAAAA,GAAe;YAAK,KAAK;AAAG,qBAAO+S,GAAGpxM,EAAAA,GAAG;YAAK,KAAK;AAAG,qBAAOouM,GAAGpuM,GAAEvF,IAAAA,KAAO4zM,GAAAA,GAAK;YAAK,KAAK;AAA0B,kBAAvBz0K,GAAE1W,EAAAA,GAAwB,UAArBpvB,KAAEkM,GAAEo8L;AAA0B,uBAAO;AAAsC,kBAAjC56K,KAAE,MAAa,KAARxhB,GAAEsmH,QAA2B,UAAjBntF,KAAErlC,GAAEsnN;AAAsB,oBAAG55L;AAAEg6L,qBAAG1nN,IAAAA,KAAE;qBAAQ;AAAC,sBAAG,MAAI4lC,MAAG,SAAO35B,MAAG,MAAa,KAARA,GAAEumH;AAAU,yBAAIvmH,KAAEC,GAAE+zD,OAAM,SAAOh0D,MAAG;AAAS,0BAAG,UAAXo5B,KAAE87K,GAAGl1M,EAAAA,IAAe;AACjW,6BADkWC,GAAEsmH,SAAO,IAAGk1F,GAAG1nN,IAAAA,KAAE,GAAoB,UAAhB0tB,KAAE2X,GAAE64K,iBAAuBhyM,GAAEgyM,cAAYxwL,IAAExhB,GAAEsmH,SAAO,IACnf,SAAOxyH,GAAEugN,eAAar0M,GAAEu0M,cAAY,OAAMv0M,GAAEq0M,aAAWvgN,GAAEugN,YAAWvgN,KAAED,IAAMA,KAAEmM,GAAE+zD,OAAM,SAAOlgE;AAAOkM,0BAAAA,KAAEjM,KAAN0tB,KAAE3tB,IAAQyyH,SAAO,GAAE9kG,GAAE8yL,aAAW,MAAK9yL,GAAE+yL,cAAY,MAAK/yL,GAAE6yL,aAAW,MAAmB,UAAdl7K,KAAE3X,GAAEy6K,cAAoBz6K,GAAE8vL,aAAW,GAAE9vL,GAAEiwL,QAAM1xM,IAAEyhB,GAAEuyC,QAAM,MAAKvyC,GAAE0zL,gBAAc,MAAK1zL,GAAE46K,gBAAc,MAAK56K,GAAEwwL,cAAY,MAAKxwL,GAAE2P,eAAa,MAAK3P,GAAEk5K,YAAU,SAAOl5K,GAAE8vL,aAAWn4K,GAAEm4K,YAAW9vL,GAAEiwL,QAAMt4K,GAAEs4K,OAAMjwL,GAAEuyC,QAAM56B,GAAE46B,OAAMvyC,GAAE0zL,gBAAc/7K,GAAE+7K,eAAc1zL,GAAE46K,gBAAcjjK,GAAEijK,eAAc56K,GAAEwwL,cAAY74K,GAAE64K,aAAYxwL,GAAE/mB,OAAK0+B,GAAE1+B,MAAKsF,KAAEo5B,GAAEhI,cACpf3P,GAAE2P,eAAa,SAAOpxB,KAAE,OAAK,EAAC0xM,OAAM1xM,GAAE0xM,OAAMD,cAAazxM,GAAEyxM,aAAAA,IAAe39M,KAAEA,GAAE2oM;AAA2B,+BAAnBljK,GAAEpW,IAAY,IAAVA,GAAE4iB,UAAU,CAAA,GAAU9lC,GAAE+zD;sBAAAA;AAAMh0D,sBAAAA,KAAEA,GAAEy8L;oBAAAA;AAAQ,2BAAO1oM,GAAEqb,QAAMiqB,GAAAA,IAAI4iL,OAAKh8M,GAAEsmH,SAAO,IAAG9kG,KAAAA,MAAKg6L,GAAG1nN,IAAAA,KAAE,GAAIkM,GAAEyxM,QAAM;gBAAA;mBAAc;AAAC,oBAAA,CAAIjwL;AAAE,sBAAW,UAARzhB,KAAEk1M,GAAG97K,EAAAA,IAAAA;AAAa,wBAAGn5B,GAAEsmH,SAAO,IAAG9kG,KAAAA,MAAqB,UAAhB3tB,KAAEkM,GAAEiyM,iBAAuBhyM,GAAEgyM,cAAYn+M,IAAEmM,GAAEsmH,SAAO,IAAGk1F,GAAG1nN,IAAAA,IAAE,GAAI,SAAOA,GAAEqb,QAAM,aAAWrb,GAAEwnN,YAAAA,CAAWniL,GAAE8iK,aAAAA,CAAYqZ;AAAG,6BAAmC,UAA5Bt1M,KAAEA,GAAEq0M,aAAWvgN,GAAEugN,gBAAsBr0M,GAAEs0M,aAAW,OAAM;kBAAA;AAAU,wBAAEl7K,GAAAA,IAAItlC,GAAEunN,qBAAmBW,MAAI,eAAanoN,OAAImM,GAAEsmH,SACjf,IAAG9kG,KAAAA,MAAKg6L,GAAG1nN,IAAAA,KAAE,GAAIkM,GAAEyxM,QAAM;AAAU39M,gBAAAA,GAAEqnN,eAAahiL,GAAEqjK,UAAQx8L,GAAE+zD,OAAM/zD,GAAE+zD,QAAM56B,OAAa,UAATtlC,KAAEC,GAAE+oB,QAAchpB,GAAE2oM,UAAQrjK,KAAEn5B,GAAE+zD,QAAM56B,IAAErlC,GAAE+oB,OAAKsc;cAAAA;AAAG,qBAAO,SAAOrlC,GAAEqb,QAAMtb,KAAEC,GAAEqb,MAAKrb,GAAEsnN,YAAUvnN,IAAEC,GAAEqb,OAAKtb,GAAE2oM,SAAQ1oM,GAAEugN,aAAWr0M,GAAEq0M,YAAWvgN,GAAEunN,qBAAmBjiL,GAAAA,GAAIvlC,GAAE2oM,UAAQ,MAAKx8L,KAAEkjB,GAAE4iB,SAAQxM,GAAEpW,IAAE1B,KAAI,IAAFxhB,KAAI,IAAI,IAAFA,EAAAA,GAAKnM,MAAG;YAAK,KAAK;YAAG,KAAK;AAAG,qBAAOooN,GAAAA,GAAK,SAAOl8M,MAAG,SAAOA,GAAEq8L,kBAAiB,SAAOp8L,GAAEo8L,kBAAgB,oCAAkCtoM,GAAEa,SAAOqL,GAAEsmH,SAAO,IAAG;UAAA;AAAK,gBAAMrlH,MAAMukB,GAAE,KAAIxlB,GAAEktC,GAAAA,CAAAA;QAAAA;AAChd,iBAASgvK,GAAGn8M,IAAAA;AAAG,kBAAOA,GAAEmtC,KAAAA;YAAK,KAAK;AAAEkhK,iBAAGruM,GAAEtF,IAAAA,KAAO4zM,GAAAA;AAAK,kBAAIruM,KAAED,GAAEumH;AAAM,qBAAS,OAAFtmH,MAAQD,GAAEumH,QAAAA,QAAMtmH,KAAQ,IAAGD,MAAG;YAAK,KAAK;AAAgC,kBAA9Bm1J,GAAAA,GAAKt7H,GAAEvU,EAAAA,GAAGuU,GAAE3R,EAAAA,GAAG+tL,GAAAA,GAAkB,MAAO,MAApBh2M,KAAED,GAAEumH;AAAoB,sBAAMrlH,MAAMukB,GAAE,GAAA,CAAA;AAAyB,qBAAnBzlB,GAAEumH,QAAAA,QAAMtmH,KAAQ,IAAUD;YAAE,KAAK;AAAE,qBAAOq1J,GAAGr1J,EAAAA,GAAG;YAAK,KAAK;AAAG,qBAAO65B,GAAE1W,EAAAA,GAAe,QAAZljB,KAAED,GAAEumH,UAAcvmH,GAAEumH,QAAAA,QAAMtmH,KAAQ,IAAGD,MAAG;YAAK,KAAK;AAAG,qBAAO65B,GAAE1W,EAAAA,GAAG;YAAK,KAAK;AAAE,qBAAOgyI,GAAAA,GAAK;YAAK,KAAK;AAAG,qBAAOk8C,GAAGrxM,EAAAA,GAAG;YAAK,KAAK;YAAG,KAAK;AAAG,qBAAOk8M,GAAAA,GAAK;YAAK;AAAQ,qBAAO;UAAA;QAAA;AACra,iBAASE,GAAGp8M,IAAEC,IAAAA;AAAG,cAAA;AAAI,gBAAInM,KAAE,IAAGC,KAAEkM;AAAE,eAAA;AAAGnM,cAAAA,MAAGygM,GAAGxgM,EAAAA,GAAGA,KAAEA,GAAEooM;YAAAA,SAAapoM;AAAG,gBAAI0B,KAAE3B;UAAAA,SAAQ2tB,IAAN;AAAShsB,YAAAA,KAAE,+BAA6BgsB,GAAE0a,UAAQ,OAAK1a,GAAEjV;UAAAA;AAAM,iBAAM,EAAC9X,OAAMsL,IAAEyuB,QAAOxuB,IAAEuM,OAAM/W,GAAAA;QAAAA;AAAG,iBAAS4mN,GAAGr8M,IAAEC,IAAAA;AAAG,cAAA;AAAIsjB,oBAAQtiB,MAAMhB,GAAEvL,KAAAA;UAAAA,SAAaZ,IAAN;AAAS64E,uBAAW,WAAA;AAAW,oBAAM74E;YAAAA,CAAAA;UAAAA;QAAAA;AAlB3PwmN,aAAG,SAASt6M,IAAEC,IAAAA;AAAG,mBAAQnM,KAAEmM,GAAE+zD,OAAM,SAAOlgE,MAAG;AAAC,gBAAG,MAAIA,GAAEq5C,OAAK,MAAIr5C,GAAEq5C;AAAIntC,cAAAA,GAAEk8D,YAAYpoE,GAAE6mM,SAAAA;qBAAmB,MAAI7mM,GAAEq5C,OAAK,SAAOr5C,GAAEkgE,OAAM;AAAClgE,cAAAA,GAAEkgE,MAAMmoI,SAAOroM,IAAEA,KAAEA,GAAEkgE;AAAM;YAAA;AAAS,gBAAGlgE,OAAImM;AAAE;AAAM,mBAAK,SAAOnM,GAAE2oM,WAAS;AAAC,kBAAG,SAAO3oM,GAAEqoM,UAAQroM,GAAEqoM,WAASl8L;AAAE;AAAOnM,cAAAA,KAAEA,GAAEqoM;YAAAA;AAAOroM,YAAAA,GAAE2oM,QAAQN,SAAOroM,GAAEqoM,QAAOroM,KAAEA,GAAE2oM;UAAAA;QAAAA,GAChS8d,KAAG,SAASv6M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEuK,GAAEm1M;AAAc,cAAG1/M,OAAI1B,IAAE;AAACiM,YAAAA,KAAEC,GAAE06L,WAAU1lC,GAAGF,GAAGhvH,OAAAA;AAAS,gBAAyU3M,IAArU3X,KAAE;AAAK,oBAAO3tB,IAAAA;cAAG,KAAK;AAAQ2B,gBAAAA,KAAE0/L,GAAGn1L,IAAEvK,EAAAA,GAAG1B,KAAEohM,GAAGn1L,IAAEjM,EAAAA,GAAG0tB,KAAE,CAAA;AAAG;cAAM,KAAK;AAAShsB,gBAAAA,KAAEmgM,GAAG51L,IAAEvK,EAAAA,GAAG1B,KAAE6hM,GAAG51L,IAAEjM,EAAAA,GAAG0tB,KAAE,CAAA;AAAG;cAAM,KAAK;AAAShsB,gBAAAA,KAAE5B,GAAE,CAAA,GAAG4B,IAAE,EAACf,OAAAA,OAAM,CAAA,GAASX,KAAEF,GAAE,CAAA,GAAGE,IAAE,EAACW,OAAAA,OAAM,CAAA,GAAS+sB,KAAE,CAAA;AAAG;cAAM,KAAK;AAAWhsB,gBAAAA,KAAEsgM,GAAG/1L,IAAEvK,EAAAA,GAAG1B,KAAEgiM,GAAG/1L,IAAEjM,EAAAA,GAAG0tB,KAAE,CAAA;AAAG;cAAM;AAAQ,8BAAA,OAAoBhsB,GAAEgiI,WAAS,cAAA,OAAoB1jI,GAAE0jI,YAAUz3H,GAAE67M,UAAQ/O;YAAAA;AAAyB,iBAAIp5M,MAAzBumM,GAAGnmM,IAAEC,EAAAA,GAASD,KAAE,MAAc2B;AAAE,kBAAA,CAAI1B,GAAEuB,eAAe5B,EAAAA,KAAI+B,GAAEH,eAAe5B,EAAAA,KAAI,QAAM+B,GAAE/B,EAAAA;AAAG,oBAAG,YAC3eA,IAAE;AAAC,sBAAIqP,KAAEtN,GAAE/B,EAAAA;AAAG,uBAAI0lC,MAAKr2B;AAAEA,oBAAAA,GAAEzN,eAAe8jC,EAAAA,MAAKtlC,OAAIA,KAAE,CAAA,IAAIA,GAAEslC,EAAAA,IAAG;gBAAA;AAAQ,gDAA4B1lC,MAAG,eAAaA,MAAG,qCAAmCA,MAAG,+BAA6BA,MAAG,gBAAcA,OAAIk+L,GAAGt8L,eAAe5B,EAAAA,IAAG+tB,OAAIA,KAAE,CAAA,MAAKA,KAAEA,MAAG,CAAA,GAAIrX,KAAK1W,IAAE,IAAA;AAAO,iBAAIA,MAAKK,IAAE;AAAC,kBAAI4G,KAAE5G,GAAEL,EAAAA;AAAyB,kBAAtBqP,KAAE,QAAMtN,KAAEA,GAAE/B,EAAAA,IAAAA,QAAaK,GAAEuB,eAAe5B,EAAAA,KAAIiH,OAAIoI,OAAI,QAAMpI,MAAG,QAAMoI;AAAG,oBAAG,YAAUrP;AAAE,sBAAGqP,IAAE;AAAC,yBAAIq2B,MAAKr2B;AAAAA,uBAAGA,GAAEzN,eAAe8jC,EAAAA,KAAIz+B,MAAGA,GAAErF,eAAe8jC,EAAAA,MAAKtlC,OAAIA,KAAE,CAAA,IAAIA,GAAEslC,EAAAA,IAAG;AAAI,yBAAIA,MAAKz+B;AAAEA,sBAAAA,GAAErF,eAAe8jC,EAAAA,KAAIr2B,GAAEq2B,EAAAA,MAAKz+B,GAAEy+B,EAAAA,MAAKtlC,OAClfA,KAAE,CAAA,IAAIA,GAAEslC,EAAAA,IAAGz+B,GAAEy+B,EAAAA;kBAAAA;AAAStlC,oBAAAA,OAAI2tB,OAAIA,KAAE,CAAA,IAAIA,GAAErX,KAAK1W,IAAEI,EAAAA,IAAIA,KAAE6G;;AAAM,gDAA4BjH,MAAGiH,KAAEA,KAAEA,GAAE24G,SAAAA,QAAcvwG,KAAEA,KAAEA,GAAEuwG,SAAAA,QAAc,QAAM34G,MAAGoI,OAAIpI,OAAI8mB,KAAEA,MAAG,CAAA,GAAIrX,KAAK1W,IAAEiH,EAAAA,KAAI,eAAajH,KAAE,YAAA,OAAkBiH,MAAG,YAAA,OAAkBA,OAAI8mB,KAAEA,MAAG,CAAA,GAAIrX,KAAK1W,IAAE,KAAGiH,EAAAA,IAAG,qCAAmCjH,MAAG,+BAA6BA,OAAIk+L,GAAGt8L,eAAe5B,EAAAA,KAAI,QAAMiH,MAAG,eAAajH,MAAGumC,GAAE,UAASj6B,EAAAA,GAAGyhB,MAAG1e,OAAIpI,OAAI8mB,KAAE,CAAA,MAAK,YAAA,OAAkB9mB,MAAG,SAAOA,MAAGA,GAAEwuK,aAAWyqB,IAAGj5L,GAAEuB,SAAAA,KAAYulB,KAAEA,MAAG,CAAA,GAAIrX,KAAK1W,IAAEiH,EAAAA;YAAAA;AAAI7G,YAAAA,OAAI2tB,KAAEA,MAAG,CAAA,GAAIrX,KAAK,SAC/etW,EAAAA;AAAG,gBAAIJ,KAAE+tB;AAAAA,aAAKxhB,GAAEgyM,cAAYv+M,QAAEuM,GAAEsmH,SAAO;UAAA;QAAA,GAAIi0F,KAAG,SAASx6M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAGD,UAAAA,OAAIC,OAAIkM,GAAEsmH,SAAO;QAAA;AAcgL,YAAI+1F,KAAG,cAAA,OAAoB73M,UAAQA,UAAQE;AAAI,iBAAS43M,GAAGv8M,IAAEC,IAAEnM,IAAAA;AAAAA,WAAGA,KAAEy+M,GAAAA,IAAMz+M,EAAAA,GAAKq5C,MAAI,GAAEr5C,GAAE4nC,UAAQ,EAAC2kE,SAAQ,KAAA;AAAM,cAAItsG,KAAEkM,GAAEvL;AAAsD,iBAAhDZ,GAAEkiF,WAAS,WAAA;AAAWwmI,mBAAKA,KAAAA,MAAMC,KAAG1oN,KAAGsoN,GAAGr8M,GAAEC,EAAAA;UAAAA,GAAWnM;QAAAA;AACpb,iBAAS4oN,GAAG18M,IAAEC,IAAEnM,IAAAA;AAAAA,WAAGA,KAAEy+M,GAAAA,IAAMz+M,EAAAA,GAAKq5C,MAAI;AAAE,cAAIp5C,KAAEiM,GAAEtF,KAAK6kJ;AAAyB,cAAG,cAAA,OAAoBxrJ,IAAE;AAAC,gBAAI0B,KAAEwK,GAAEvL;AAAMZ,YAAAA,GAAE4nC,UAAQ,WAAA;AAAmB,qBAAR2gL,GAAGr8M,GAAEC,EAAAA,GAAUlM,GAAE0B,EAAAA;YAAAA;UAAAA;AAAI,cAAIgsB,KAAEzhB,GAAE26L;AAA8O,iBAApO,SAAOl5K,MAAG,cAAA,OAAoBA,GAAEuzD,sBAAoBlhF,GAAEkiF,WAAS,WAAA;AAAW,0BAAA,OAAoBjiF,OAAI,SAAO4oN,KAAGA,KAAG,oBAAIllN,IAAI,CAAC+C,IAAAA,CAAAA,IAAOmiN,GAAGllM,IAAIjd,IAAAA,GAAM6hN,GAAGr8M,GAAEC,EAAAA;AAAI,gBAAInM,KAAEmM,GAAEuM;AAAMhS,iBAAKw6E,kBAAkB/0E,GAAEvL,OAAM,EAACkoN,gBAAe,SAAO9oN,KAAEA,KAAE,GAAA,CAAA;UAAA,IAAcA;QAAAA;AAAE,YAAI+oN,KAAG,cAAA,OAAoB7tF,UAAQA,UAAQv3H;AACxc,iBAASqlN,GAAG98M,IAAAA;AAAG,cAAIC,KAAED,GAAE9H;AAAI,cAAG,SAAO+H;AAAE,gBAAG,cAAA,OAAoBA;AAAE,kBAAA;AAAIA,gBAAAA,GAAE,IAAA;cAAA,SAAYnM,IAAN;AAASipN,mBAAG/8M,IAAElM,EAAAA;cAAAA;;AAAQmM,cAAAA,GAAE8lC,UAAQ;QAAA;AAAK,iBAASi3K,GAAGh9M,IAAEC,IAAAA;AAAG,kBAAOA,GAAEktC,KAAAA;YAAK,KAAK;YAAE,KAAK;YAAG,KAAK;YAAG,KAAK;AAAG;YAAO,KAAK;AAAE,kBAAW,MAARltC,GAAEsmH,SAAW,SAAOvmH,IAAE;AAAC,oBAAIlM,KAAEkM,GAAEm1M,eAAcphN,KAAEiM,GAAEq8L;AAA4Bp8L,gBAAAA,MAAdD,KAAEC,GAAE06L,WAAckZ,wBAAwB5zM,GAAE00M,gBAAc10M,GAAEvF,OAAK5G,KAAEi9M,GAAG9wM,GAAEvF,MAAK5G,EAAAA,GAAGC,EAAAA,GAAGiM,GAAEi9M,sCAAoCh9M;cAAAA;AAAE;YAAO,KAAK;AAA6C,qBAAA,MAAnC,MAARA,GAAEsmH,SAAW6mF,GAAGntM,GAAE06L,UAAU2D,aAAAA;YAAsB,KAAK;YAAE,KAAK;YAAE,KAAK;YAAE,KAAK;AAAG;UAAA;AAAO,gBAAMp9L,MAAMukB,GAAE,GAAA,CAAA;QAAA;AAC5e,iBAASy3L,GAAGl9M,IAAEC,IAAEnM,IAAAA;AAAG,kBAAOA,GAAEq5C,KAAAA;YAAK,KAAK;YAAE,KAAK;YAAG,KAAK;YAAG,KAAK;AAAgD,kBAAG,UAAhCltC,KAAE,UAAlBA,KAAEnM,GAAEm+M,eAAuBhyM,GAAEq0M,aAAW,OAAiB;AAACt0M,gBAAAA,KAAEC,KAAEA,GAAE1F;AAAK,mBAAE;AAAC,sBAAG,MAAW,IAANyF,GAAEmtC,MAAO;AAAC,wBAAIp5C,KAAEiM,GAAEjL;AAAOiL,oBAAAA,GAAEyrH,UAAQ13H,GAAAA;kBAAAA;AAAIiM,kBAAAA,KAAEA,GAAEzF;gBAAAA,SAAWyF,OAAIC;cAAAA;AAAgD,kBAAG,UAAhCA,KAAE,UAAlBA,KAAEnM,GAAEm+M,eAAuBhyM,GAAEq0M,aAAW,OAAiB;AAACt0M,gBAAAA,KAAEC,KAAEA,GAAE1F;AAAK,mBAAE;AAAC,sBAAI9E,KAAEuK;AAAEjM,kBAAAA,KAAE0B,GAAE8E,MAAa,MAAO,KAAf9E,KAAEA,GAAE03C,SAAe,MAAO,IAAF13C,QAAO0nN,GAAGrpN,IAAEkM,EAAAA,GAAGo9M,GAAGtpN,IAAEkM,EAAAA,IAAIA,KAAEjM;gBAAAA,SAAQiM,OAAIC;cAAAA;AAAG;YAAO,KAAK;AACtR,qBADwRD,KAAElM,GAAE6mM,WAAkB,IAAR7mM,GAAEyyH,UAAU,SAAOtmH,KAAED,GAAEg0M,kBAAAA,KAAqBjgN,KAAED,GAAE6gN,gBAAc7gN,GAAE4G,OAAKuF,GAAEk1M,gBAAcpE,GAAGj9M,GAAE4G,MAAKuF,GAAEk1M,aAAAA,GAAen1M,GAAEk6M,mBAAmBnmN,IACxgBkM,GAAEo8L,eAAcr8L,GAAEi9M,mCAAAA,KAAAA,MAAuD,UAAhBh9M,KAAEnM,GAAEm+M,gBAAsBa,GAAGh/M,IAAEmM,IAAED,EAAAA;YAAU,KAAK;AAAkB,kBAAG,UAAnBC,KAAEnM,GAAEm+M,cAAwB;AAAQ,oBAAPjyM,KAAE,MAAQ,SAAOlM,GAAEkgE;AAAM,0BAAOlgE,GAAEkgE,MAAM7mB,KAAAA;oBAAK,KAAK;AAAEntC,sBAAAA,KAAElM,GAAEkgE,MAAM2mI;AAAU;oBAAM,KAAK;AAAE36L,sBAAAA,KAAElM,GAAEkgE,MAAM2mI;kBAAAA;AAAUmY,mBAAGh/M,IAAEmM,IAAED,EAAAA;cAAAA;AAAG;YAAO,KAAK;AAA2E,qBAAzEA,KAAElM,GAAE6mM,WAAAA,MAAU,SAAO16L,MAAW,IAARnM,GAAEyyH,SAAS0mF,GAAGn5M,GAAE4G,MAAK5G,GAAEqhN,aAAAA,KAAgBn1M,GAAEq9M,MAAAA;YAAe,KAAK;YAAS,KAAK;YAAS,KAAK;AAAG;YAAO,KAAK;AACzY,qBAAA,MAD4Y,SAAOvpN,GAAEuoM,kBAAgBvoM,KAAEA,GAAEooM,WAAU,SAAOpoM,OAAIA,KAAEA,GAAEuoM,eAAc,SAAOvoM,OAAIA,KAAEA,GAAEwoM,YAAW,SAAOxoM,MAAGgrM,GAAGhrM,EAAAA;YAChf,KAAK;YAAG,KAAK;YAAG,KAAK;YAAG,KAAK;YAAG,KAAK;YAAG,KAAK;AAAG;UAAA;AAAO,gBAAMoN,MAAMukB,GAAE,GAAA,CAAA;QAAA;AAC5E,iBAAS63L,GAAGt9M,IAAEC,IAAAA;AAAG,mBAAQnM,KAAEkM,QAAI;AAAC,gBAAG,MAAIlM,GAAEq5C,KAAI;AAAC,kBAAIp5C,KAAED,GAAE6mM;AAAU,kBAAG16L;AAAY,8BAAA,QAAVlM,KAAEA,GAAE65C,OAA4B2rJ,cAAYxlM,GAAEwlM,YAAY,WAAU,QAAO,WAAA,IAAaxlM,GAAEuhE,UAAQ;mBAAW;AAACvhE,gBAAAA,KAAED,GAAE6mM;AAAU,oBAAIllM,KAAE3B,GAAEqhN,cAAcvnK;AAAMn4C,gBAAAA,KAAE,QAASA,MAAaA,GAAEH,eAAe,SAAA,IAAWG,GAAE6/D,UAAQ,MAAKvhE,GAAE65C,MAAM0nB,UAAQ+jI,GAAG,WAAU5jM,EAAAA;cAAAA;YAAAA,WAAY,MAAI3B,GAAEq5C;AAAIr5C,cAAAA,GAAE6mM,UAAUhE,YAAU12L,KAAE,KAAGnM,GAAEqhN;sBAAuB,OAAKrhN,GAAEq5C,OAAK,OAAKr5C,GAAEq5C,OAAK,SAAOr5C,GAAEuoM,iBAAevoM,OAAIkM,OAAI,SAAOlM,GAAEkgE,OAAM;AAAClgE,cAAAA,GAAEkgE,MAAMmoI,SAAOroM,IAAEA,KAAEA,GAAEkgE;AAAM;YAAA;AAAS,gBAAGlgE,OACtfkM;AAAE;AAAM,mBAAK,SAAOlM,GAAE2oM,WAAS;AAAC,kBAAG,SAAO3oM,GAAEqoM,UAAQroM,GAAEqoM,WAASn8L;AAAE;AAAOlM,cAAAA,KAAEA,GAAEqoM;YAAAA;AAAOroM,YAAAA,GAAE2oM,QAAQN,SAAOroM,GAAEqoM,QAAOroM,KAAEA,GAAE2oM;UAAAA;QAAAA;AACjH,iBAAS8gB,GAAGv9M,IAAEC,IAAAA;AAAG,cAAG6uM,MAAI,cAAA,OAAoBA,GAAG0O;AAAqB,gBAAA;AAAI1O,iBAAG0O,qBAAqB3O,IAAG5uM,EAAAA;YAAAA,SAASwhB,IAAN;YAAMA;AAAI,kBAAOxhB,GAAEktC,KAAAA;YAAK,KAAK;YAAE,KAAK;YAAG,KAAK;YAAG,KAAK;YAAG,KAAK;AAAmB,kBAAG,UAAnBntC,KAAEC,GAAEgyM,gBAAyC,UAAfjyM,KAAEA,GAAEs0M,aAAqB;AAAC,oBAAIxgN,KAAEkM,KAAEA,GAAEzF;AAAK,mBAAE;AAAC,sBAAIxG,KAAED,IAAE2B,KAAE1B,GAAE03H;AAAgB,sBAAR13H,KAAEA,GAAEo5C,KAAAA,WAAgB13C;AAAE,wBAAG,MAAO,IAAF1B;AAAKopN,yBAAGl9M,IAAEnM,EAAAA;yBAAO;AAACC,sBAAAA,KAAEkM;AAAE,0BAAA;AAAIxK,wBAAAA,GAAAA;sBAAAA,SAAUgsB,IAAN;AAASs7L,2BAAGhpN,IAAE0tB,EAAAA;sBAAAA;oBAAAA;AAAI3tB,kBAAAA,KAAEA,GAAEyG;gBAAAA,SAAWzG,OAAIkM;cAAAA;AAAG;YAAM,KAAK;AAAsB,kBAApB88M,GAAG78M,EAAAA,GAAoB,cAAA,QAAjBD,KAAEC,GAAE06L,WAAmC8iB;AAAqB,oBAAA;AAAIz9M,kBAAAA,GAAEigB,QAAMhgB,GAAEk1M,eAAcn1M,GAAEo0C,QAAMn0C,GAAEo8L,eAAcr8L,GAAEy9M,qBAAAA;gBAAAA,SAA6Bh8L,IAAN;AAASs7L,qBAAG98M,IAC/gBwhB,EAAAA;gBAAAA;AAAG;YAAM,KAAK;AAAEq7L,iBAAG78M,EAAAA;AAAG;YAAM,KAAK;AAAEy9M,iBAAG19M,IAAEC,EAAAA;UAAAA;QAAAA;AAAI,iBAAS09M,GAAG39M,IAAAA;AAAGA,UAAAA,GAAEk8L,YAAU,MAAKl8L,GAAEg0D,QAAM,MAAKh0D,GAAEoxB,eAAa,MAAKpxB,GAAEw0M,cAAY,MAAKx0M,GAAEs0M,aAAW,MAAKt0M,GAAEm1M,gBAAc,MAAKn1M,GAAEq8L,gBAAc,MAAKr8L,GAAE21M,eAAa,MAAK31M,GAAEm8L,SAAO,MAAKn8L,GAAEiyM,cAAY;QAAA;AAAK,iBAAS2L,GAAG59M,IAAAA;AAAG,iBAAO,MAAIA,GAAEmtC,OAAK,MAAIntC,GAAEmtC,OAAK,MAAIntC,GAAEmtC;QAAAA;AACnS,iBAAS0wK,GAAG79M,IAAAA;AAAGA,aAAE;AAAC,qBAAQC,KAAED,GAAEm8L,QAAO,SAAOl8L,MAAG;AAAC,kBAAG29M,GAAG39M,EAAAA;AAAG,sBAAMD;AAAEC,cAAAA,KAAEA,GAAEk8L;YAAAA;AAAO,kBAAMj7L,MAAMukB,GAAE,GAAA,CAAA;UAAA;AAAO,cAAI3xB,KAAEmM;AAAgB,kBAAdA,KAAEnM,GAAE6mM,WAAiB7mM,GAAEq5C,KAAAA;YAAK,KAAK;AAAE,kBAAIp5C,KAAAA;AAAK;YAAM,KAAK;YAA+B,KAAK;AAAEkM,cAAAA,KAAEA,GAAEq+L,eAAcvqM,KAAAA;AAAK;YAAM;AAAQ,oBAAMmN,MAAMukB,GAAE,GAAA,CAAA;UAAA;AAAe,eAAR3xB,GAAEyyH,UAAWkwE,GAAGx2L,IAAE,EAAA,GAAInM,GAAEyyH,SAAAA;AAAYvmH;AAAEC;AAAE,mBAAInM,KAAEkM,QAAI;AAAC,uBAAK,SAAOlM,GAAE2oM,WAAS;AAAC,sBAAG,SAAO3oM,GAAEqoM,UAAQyhB,GAAG9pN,GAAEqoM,MAAAA,GAAQ;AAACroM,oBAAAA,KAAE;AAAK,0BAAMkM;kBAAAA;AAAElM,kBAAAA,KAAEA,GAAEqoM;gBAAAA;AAAiC,qBAA1BroM,GAAE2oM,QAAQN,SAAOroM,GAAEqoM,QAAWroM,KAAEA,GAAE2oM,SAAQ,MAAI3oM,GAAEq5C,OAAK,MAAIr5C,GAAEq5C,OAAK,OAAKr5C,GAAEq5C,OAAK;AAAC,sBAAW,IAARr5C,GAAEyyH;AAAQ,6BAAStmH;AAAE,sBAAG,SAC/enM,GAAEkgE,SAAO,MAAIlgE,GAAEq5C;AAAI,6BAASltC;AAAOnM,kBAAAA,GAAEkgE,MAAMmoI,SAAOroM,IAAEA,KAAEA,GAAEkgE;gBAAAA;AAAM,oBAAA,EAAa,IAARlgE,GAAEyyH,QAAS;AAACzyH,kBAAAA,KAAEA,GAAE6mM;AAAU,wBAAM36L;gBAAAA;cAAAA;AAAGjM,UAAAA,KAAE+pN,GAAG99M,IAAElM,IAAEmM,EAAAA,IAAG89M,GAAG/9M,IAAElM,IAAEmM,EAAAA;QAAAA;AACzH,iBAAS69M,GAAG99M,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEiM,GAAEmtC,KAAI13C,KAAE,MAAI1B,MAAG,MAAIA;AAAE,cAAG0B;AAAEuK,YAAAA,KAAEvK,KAAEuK,GAAE26L,YAAU36L,GAAE26L,UAAU96K,UAAS5f,KAAE,MAAInM,GAAEuQ,WAASvQ,GAAE4qH,WAAWa,aAAav/G,IAAEC,EAAAA,IAAGnM,GAAEyrH,aAAav/G,IAAEC,EAAAA,KAAI,MAAInM,GAAEuQ,YAAUpE,KAAEnM,GAAE4qH,YAAaa,aAAav/G,IAAElM,EAAAA,KAAKmM,KAAEnM,IAAIooE,YAAYl8D,EAAAA,GAA4B,SAAxBlM,KAAEA,GAAEkqN,wBAA0C,SAAO/9M,GAAE47M,YAAU57M,GAAE47M,UAAQ/O;mBAAa,MAAI/4M,MAAc,UAAViM,KAAEA,GAAEg0D;AAAgB,iBAAI8pJ,GAAG99M,IAAEC,IAAEnM,EAAAA,GAAGkM,KAAEA,GAAEy8L,SAAQ,SAAOz8L;AAAG89M,iBAAG99M,IAAEC,IAAEnM,EAAAA,GAAGkM,KAAEA,GAAEy8L;QAAAA;AAC9Y,iBAASshB,GAAG/9M,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEiM,GAAEmtC,KAAI13C,KAAE,MAAI1B,MAAG,MAAIA;AAAE,cAAG0B;AAAEuK,YAAAA,KAAEvK,KAAEuK,GAAE26L,YAAU36L,GAAE26L,UAAU96K,UAAS5f,KAAEnM,GAAEyrH,aAAav/G,IAAEC,EAAAA,IAAGnM,GAAEooE,YAAYl8D,EAAAA;mBAAW,MAAIjM,MAAc,UAAViM,KAAEA,GAAEg0D;AAAgB,iBAAI+pJ,GAAG/9M,IAAEC,IAAEnM,EAAAA,GAAGkM,KAAEA,GAAEy8L,SAAQ,SAAOz8L;AAAG+9M,iBAAG/9M,IAAEC,IAAEnM,EAAAA,GAAGkM,KAAEA,GAAEy8L;QAAAA;AACrN,iBAASihB,GAAG19M,IAAEC,IAAAA;AAAG,mBAAiBxK,IAAEgsB,IAAX3tB,KAAEmM,IAAElM,KAAAA,WAAW;AAAC,gBAAA,CAAIA,IAAE;AAACA,cAAAA,KAAED,GAAEqoM;AAAOn8L;AAAE,2BAAO;AAAC,sBAAG,SAAOjM;AAAE,0BAAMmN,MAAMukB,GAAE,GAAA,CAAA;AAAoB,0BAAdhwB,KAAE1B,GAAE4mM,WAAiB5mM,GAAEo5C,KAAAA;oBAAK,KAAK;AAAE1rB,sBAAAA,KAAAA;AAAK,4BAAMzhB;oBAAE,KAAK;oBAAiC,KAAK;AAAEvK,sBAAAA,KAAEA,GAAE6oM,eAAc78K,KAAAA;AAAK,4BAAMzhB;kBAAAA;AAAEjM,kBAAAA,KAAEA,GAAEooM;gBAAAA;AAAOpoM,cAAAA,KAAAA;YAAE;AAAG,gBAAG,MAAID,GAAEq5C,OAAK,MAAIr5C,GAAEq5C,KAAI;AAACntC;AAAE,yBAAQo5B,KAAEp5B,IAAE+C,KAAEjP,IAAE6G,KAAEoI;AAAI,sBAAGw6M,GAAGnkL,IAAEz+B,EAAAA,GAAG,SAAOA,GAAEq5D,SAAO,MAAIr5D,GAAEwyC;AAAIxyC,oBAAAA,GAAEq5D,MAAMmoI,SAAOxhM,IAAEA,KAAEA,GAAEq5D;uBAAU;AAAC,wBAAGr5D,OAAIoI;AAAE,4BAAM/C;AAAE,2BAAK,SAAOrF,GAAE8hM,WAAS;AAAC,0BAAG,SAAO9hM,GAAEwhM,UAAQxhM,GAAEwhM,WAASp5L;AAAE,8BAAM/C;AAAErF,sBAAAA,KAAEA,GAAEwhM;oBAAAA;AAAOxhM,oBAAAA,GAAE8hM,QAAQN,SAAOxhM,GAAEwhM,QAAOxhM,KAAEA,GAAE8hM;kBAAAA;AAAQh7K,cAAAA,MAAG2X,KAAE3jC,IAAEsN,KAAEjP,GAAE6mM,WACrf,MAAIvhK,GAAE/0B,WAAS+0B,GAAEslF,WAAWC,YAAY57G,EAAAA,IAAGq2B,GAAEulF,YAAY57G,EAAAA,KAAItN,GAAEkpH,YAAY7qH,GAAE6mM,SAAAA;YAAAA,WAAmB,MAAI7mM,GAAEq5C,KAAAA;AAAK,kBAAG,SAAOr5C,GAAEkgE,OAAM;AAACv+D,gBAAAA,KAAE3B,GAAE6mM,UAAU2D,eAAc78K,KAAAA,MAAK3tB,GAAEkgE,MAAMmoI,SAAOroM,IAAEA,KAAEA,GAAEkgE;AAAM;cAAA;YAAA,WAAkBupJ,GAAGv9M,IAAElM,EAAAA,GAAG,SAAOA,GAAEkgE,OAAM;AAAClgE,cAAAA,GAAEkgE,MAAMmoI,SAAOroM,IAAEA,KAAEA,GAAEkgE;AAAM;YAAA;AAAS,gBAAGlgE,OAAImM;AAAE;AAAM,mBAAK,SAAOnM,GAAE2oM,WAAS;AAAC,kBAAG,SAAO3oM,GAAEqoM,UAAQroM,GAAEqoM,WAASl8L;AAAE;AAAkB,qBAAXnM,KAAEA,GAAEqoM,QAAahvJ,QAAMp5C,KAAAA;YAAE;AAAID,YAAAA,GAAE2oM,QAAQN,SAAOroM,GAAEqoM,QAAOroM,KAAEA,GAAE2oM;UAAAA;QAAAA;AAClZ,iBAASwhB,GAAGj+M,IAAEC,IAAAA;AAAG,kBAAOA,GAAEktC,KAAAA;YAAK,KAAK;YAAE,KAAK;YAAG,KAAK;YAAG,KAAK;YAAG,KAAK;AAAG,kBAAIr5C,KAAEmM,GAAEgyM;AAAyC,kBAAG,UAAhCn+M,KAAE,SAAOA,KAAEA,GAAEwgN,aAAW,OAAiB;AAAC,oBAAIvgN,KAAED,KAAEA,GAAEyG;AAAK,mBAAA;AAAG,wBAAW,IAANxG,GAAEo5C,SAASntC,KAAEjM,GAAE03H,SAAQ13H,GAAE03H,UAAAA,QAAQ,WAAgBzrH,MAAGA,GAAAA,IAAKjM,KAAEA,GAAEwG;gBAAAA,SAAWxG,OAAID;cAAAA;AAAG;YAAO,KAAK;AAAE;YAAO,KAAK;AAAgB,kBAAG,SAAjBA,KAAEmM,GAAE06L,YAAqB;AAAC5mM,gBAAAA,KAAEkM,GAAEk1M;AAAc,oBAAI1/M,KAAE,SAAOuK,KAAEA,GAAEm1M,gBAAcphN;AAAEiM,gBAAAA,KAAEC,GAAEvF;AAAK,oBAAI+mB,KAAExhB,GAAEgyM;AAA+B,oBAAnBhyM,GAAEgyM,cAAY,MAAQ,SAAOxwL,IAAE;AAAgF,uBAA/E3tB,GAAE65M,EAAAA,IAAI55M,IAAE,YAAUiM,MAAG,YAAUjM,GAAE2G,QAAM,QAAM3G,GAAEC,QAAMyhM,GAAG3hM,IAAEC,EAAAA,GAAGmmM,GAAGl6L,IAAEvK,EAAAA,GAAGwK,KAAEi6L,GAAGl6L,IAAEjM,EAAAA,GAAO0B,KAAE,GAAEA,KAAEgsB,GAAE9oB,QAAOlD,MAClf,GAAE;AAAC,wBAAI2jC,KAAE3X,GAAEhsB,EAAAA,GAAGsN,KAAE0e,GAAEhsB,KAAE,CAAA;AAAG,gCAAU2jC,KAAEkgK,GAAGxlM,IAAEiP,EAAAA,IAAG,8BAA4Bq2B,KAAEk9J,GAAGxiM,IAAEiP,EAAAA,IAAG,eAAaq2B,KAAEq9J,GAAG3iM,IAAEiP,EAAAA,IAAG8vL,GAAG/+L,IAAEslC,IAAEr2B,IAAE9C,EAAAA;kBAAAA;AAAG,0BAAOD,IAAAA;oBAAG,KAAK;AAAQ01L,yBAAG5hM,IAAEC,EAAAA;AAAG;oBAAM,KAAK;AAAWkiM,yBAAGniM,IAAEC,EAAAA;AAAG;oBAAM,KAAK;AAASiM,sBAAAA,KAAElM,GAAEuhM,cAAcsmB,aAAY7nN,GAAEuhM,cAAcsmB,cAAAA,CAAAA,CAAc5nN,GAAE6nN,UAAmB,SAAVn6L,KAAE1tB,GAAEW,SAAcmhM,GAAG/hM,IAAAA,CAAAA,CAAIC,GAAE6nN,UAASn6L,IAAAA,KAAE,IAAIzhB,OAAAA,CAAAA,CAAMjM,GAAE6nN,aAAW,QAAM7nN,GAAEikC,eAAa69J,GAAG/hM,IAAAA,CAAAA,CAAIC,GAAE6nN,UAAS7nN,GAAEikC,cAAAA,IAAa,IAAI69J,GAAG/hM,IAAAA,CAAAA,CAAIC,GAAE6nN,UAAS7nN,GAAE6nN,WAAS,CAAA,IAAG,IAAA,KAAG;kBAAA;gBAAA;cAAA;AAAO;YAAO,KAAK;AAAE,kBAAG,SAAO37M,GAAE06L;AAAU,sBAAMz5L,MAAMukB,GAAE,GAAA,CAAA;AAC/c,qBAAA,MADqdxlB,GAAE06L,UAAUhE,YACjf12L,GAAEk1M;YAAqB,KAAK;AAA8D,qBAAA,OAA5DrhN,KAAEmM,GAAE06L,WAAY0D,YAAUvqM,GAAEuqM,UAAAA,OAAWS,GAAGhrM,GAAEwqM,aAAAA;YAAuB,KAAK;AAAG;YAAO,KAAK;AAAyD,qBAAtD,SAAOr+L,GAAEo8L,kBAAgB6hB,KAAG7kL,GAAAA,GAAIikL,GAAGr9M,GAAE+zD,OAAAA,IAAM,IAAA,KAAKmqJ,GAAGl+M,EAAAA;YAAU,KAAK;AAAS,qBAAA,KAANk+M,GAAGl+M,EAAAA;YAAU,KAAK;AAAG;YAAO,KAAK;YAAG,KAAK;AAAgC,qBAAA,KAA7Bq9M,GAAGr9M,IAAE,SAAOA,GAAEo8L,aAAAA;UAAAA;AAAsB,gBAAMn7L,MAAMukB,GAAE,GAAA,CAAA;QAAA;AAAO,iBAAS04L,GAAGn+M,IAAAA;AAAG,cAAIC,KAAED,GAAEiyM;AAAY,cAAG,SAAOhyM,IAAE;AAACD,YAAAA,GAAEiyM,cAAY;AAAK,gBAAIn+M,KAAEkM,GAAE26L;AAAU,qBAAO7mM,OAAIA,KAAEkM,GAAE26L,YAAU,IAAIkiB,OAAI58M,GAAE8E,QAAQ,SAAS9E,IAAAA;AAAG,kBAAIlM,KAAEqqN,GAAGnpN,KAAK,MAAK+K,IAAEC,EAAAA;AAAGnM,cAAAA,GAAE4M,IAAIT,EAAAA,MAAKnM,GAAE2jB,IAAIxX,EAAAA,GAAGA,GAAEk9B,KAAKppC,IAAEA,EAAAA;YAAAA,CAAAA;UAAAA;QAAAA;AACne,iBAASsqN,GAAGr+M,IAAEC,IAAAA;AAAG,iBAAO,SAAOD,OAAsB,UAAlBA,KAAEA,GAAEq8L,kBAAwB,SAAOr8L,GAAEs8L,gBAA+B,UAAlBr8L,KAAEA,GAAEo8L,kBAAwB,SAAOp8L,GAAEq8L;QAAAA;AAAe,YAAIgiB,KAAG7lN,KAAKiJ,MAAK68M,KAAGzrB,GAAG5c,wBAAuBsoC,KAAG1rB,GAAGzc,mBAAkBj8I,KAAE,GAAEV,KAAE,MAAK+kL,KAAE,MAAK7kL,KAAE,GAAE8kL,KAAG,GAAEC,KAAG5Q,GAAG,CAAA,GAAGp0K,KAAE,GAAEilL,KAAG,MAAKC,KAAG,GAAEhM,KAAG,GAAEkJ,KAAG,GAAE+C,KAAG,GAAEC,KAAG,MAAKb,KAAG,GAAEjC,KAAGn7M,IAAAA;AAAS,iBAASk+M,KAAAA;AAAK/C,eAAG5iL,GAAAA,IAAI;QAAA;AAAI,YA8BsF4lL,IA9BlF9kL,KAAE,MAAKqiL,KAAAA,OAAMC,KAAG,MAAKE,KAAG,MAAKuC,KAAAA,OAAMC,KAAG,MAAKC,KAAG,IAAGC,KAAG,CAAA,GAAGC,KAAG,CAAA,GAAGC,KAAG,MAAKC,MAAG,GAAEC,KAAG,MAAKC,KAAAA,IAAMC,KAAG,GAAEC,MAAG,GAAEC,KAAG,MAAKC,KAAAA;AAAM,iBAAS3M,KAAAA;AAAK,iBAAO,MAAO,KAAF/4K,MAAMf,GAAAA,IAAAA,OAASqmL,KAAGA,KAAGA,KAAGrmL,GAAAA;QAAAA;AAC3e,iBAAS+5K,GAAGpzM,IAAAA;AAAY,cAAG,MAAO,KAAnBA,KAAEA,GAAEpL;AAAkB,mBAAO;AAAE,cAAG,MAAO,IAAFoL;AAAK,mBAAO,OAAKwwM,GAAAA,IAAK,IAAE;AAAkB,cAAhB,MAAImP,OAAKA,KAAGd,KAAO,MAAI/N,GAAG16B,YAAW;AAAC,kBAAIwpC,QAAKA,MAAG,SAAOb,KAAGA,GAAG1e,eAAa,IAAGrgM,KAAE2/M;AAAG,gBAAI1/M,KAAE,UAAA,CAAS2/M;AAAsD,mBAA7C,OAAN3/M,MAAAA,CAAIA,QAA8B,OAAPA,MAAbD,KAAE,UAAA,CAASA,MAAAA,CAAOA,QAAUC,KAAE,QAAcA;UAAAA;AAA4D,iBAA1DD,KAAEwwM,GAAAA,GAAK,MAAO,IAAFp2K,OAAM,OAAKp6B,KAAEA,KAAE6gM,GAAG,IAAG8e,EAAAA,IAAa3/M,KAAE6gM,GAAV7gM,KAtK3Q,SAAYA,IAAAA;AAAG,oBAAOA,IAAAA;cAAG,KAAK;AAAG,uBAAO;cAAG,KAAK;AAAG,uBAAO;cAAG,KAAK;cAAG,KAAK;AAAG,uBAAO;cAAE,KAAK;AAAG,uBAAO;cAAE;AAAQ,uBAAO;YAAA;UAAA,EAsK0JA,EAAAA,GAAU2/M,EAAAA,GAAY3/M;QAAAA;AACnT,iBAASqzM,GAAGrzM,IAAEC,IAAEnM,IAAAA;AAAG,cAAG,KAAG0rN;AAAG,kBAAMA,MAAG,GAAEC,KAAG,MAAKv+M,MAAMukB,GAAE,GAAA,CAAA;AAAgB,cAAG,UAAbzlB,KAAE+/M,GAAG//M,IAAEC,EAAAA;AAAe,mBAAO;AAAK+gM,aAAGhhM,IAAEC,IAAEnM,EAAAA,GAAGkM,OAAI05B,OAAIqiL,MAAI97M,IAAE,MAAI05B,MAAGqiL,GAAGh8M,IAAE45B,EAAAA;AAAI,cAAI7lC,KAAEy8M,GAAAA;AAAK,gBAAIvwM,KAAE,MAAO,IAAFm6B,OAAM,MAAO,KAAFA,MAAM4lL,GAAGhgN,EAAAA,KAAIigN,GAAGjgN,IAAElM,EAAAA,GAAG,MAAIsmC,OAAI4kL,GAAAA,GAAKpO,GAAAA,OAAQ,MAAO,IAAFx2K,OAAM,OAAKrmC,MAAG,OAAKA,OAAI,SAAOwrN,KAAGA,KAAG,oBAAI9nN,IAAI,CAACuI,EAAAA,CAAAA,IAAIu/M,GAAG9nM,IAAIzX,EAAAA,IAAIigN,GAAGjgN,IAAElM,EAAAA,IAAIirN,KAAG/+M;QAAAA;AAAE,iBAAS+/M,GAAG//M,IAAEC,IAAAA;AAAGD,UAAAA,GAAE0xM,SAAOzxM;AAAE,cAAInM,KAAEkM,GAAEk8L;AAAqC,eAA3B,SAAOpoM,OAAIA,GAAE49M,SAAOzxM,KAAGnM,KAAEkM,IAAMA,KAAEA,GAAEm8L,QAAO,SAAOn8L;AAAGA,YAAAA,GAAEuxM,cAAYtxM,IAAgB,UAAdnM,KAAEkM,GAAEk8L,eAAqBpoM,GAAEy9M,cAAYtxM,KAAGnM,KAAEkM,IAAEA,KAAEA,GAAEm8L;AAAO,iBAAO,MAAIroM,GAAEq5C,MAAIr5C,GAAE6mM,YAAU;QAAA;AACze,iBAASslB,GAAGjgN,IAAEC,IAAAA;AAAG,mBAAQnM,KAAEkM,GAAEkgN,cAAansN,KAAEiM,GAAEugM,gBAAe9qM,KAAEuK,GAAEwgM,aAAY/+K,KAAEzhB,GAAEmgN,iBAAgB/mL,KAAEp5B,GAAEqgM,cAAa,IAAEjnK,MAAG;AAAC,gBAAIr2B,KAAE,KAAG09L,GAAGrnK,EAAAA,GAAGz+B,KAAE,KAAGoI,IAAErP,KAAE+tB,GAAE1e,EAAAA;AAAG,gBAAA,OAAQrP,IAAAA;AAAG,kBAAG,MAAKiH,KAAE5G,OAAI,MAAK4G,KAAElF,KAAG;AAAC/B,gBAAAA,KAAEuM,IAAEkgM,GAAGxlM,EAAAA;AAAG,oBAAIzF,KAAEukC;AAAEhY,gBAAAA,GAAE1e,EAAAA,IAAG,MAAI7N,KAAExB,KAAE,MAAI,KAAGwB,KAAExB,KAAE,MAAA;cAAK;YAAA;AAAQA,cAAAA,MAAGuM,OAAID,GAAEsgM,gBAAc3lM;AAAGy+B,YAAAA,MAAAA,CAAIz+B;UAAAA;AAAwB,cAAtB5G,KAAEqsM,GAAGpgM,IAAEA,OAAI05B,KAAEE,KAAE,CAAA,GAAG35B,KAAEw5B,IAAK,MAAI1lC;AAAE,qBAAOD,OAAIA,OAAIo8M,MAAIjB,GAAGn7M,EAAAA,GAAGkM,GAAEkgN,eAAa,MAAKlgN,GAAEogN,mBAAiB;eAAO;AAAC,gBAAG,SAAOtsN,IAAE;AAAC,kBAAGkM,GAAEogN,qBAAmBngN;AAAE;AAAOnM,cAAAA,OAAIo8M,MAAIjB,GAAGn7M,EAAAA;YAAAA;AAAG,mBAAKmM,MAAGnM,KAAEksN,GAAG/qN,KAAK,MAAK+K,EAAAA,GAAG,SAAOowM,MAAIA,KAAG,CAACt8M,EAAAA,GAAGu8M,KAAGrB,GAAGU,IAAGmB,EAAAA,KAAKT,GAAGhmM,KAAKtW,EAAAA,GACrfA,KAAEo8M,MAAI,OAAKjwM,KAAEnM,KAAE68M,GAAG,IAAGqP,GAAG/qN,KAAK,MAAK+K,EAAAA,CAAAA,IAAalM,KAAE68M,GAAV78M,KAzK+F,SAAYkM,IAAAA;AAAG,sBAAOA,IAAAA;gBAAG,KAAK;gBAAG,KAAK;AAAG,yBAAO;gBAAG,KAAK;gBAAG,KAAK;gBAAG,KAAK;gBAAG,KAAK;AAAG,yBAAO;gBAAG,KAAK;gBAAE,KAAK;gBAAE,KAAK;gBAAE,KAAK;gBAAE,KAAK;gBAAE,KAAK;AAAE,yBAAO;gBAAG,KAAK;gBAAE,KAAK;gBAAE,KAAK;AAAE,yBAAO;gBAAG,KAAK;AAAE,yBAAO;gBAAG;AAAQ,wBAAMkB,MAAMukB,GAAE,KAAIzlB,EAAAA,CAAAA;cAAAA;YAAAA,EAyKrTC,EAAAA,GAAUogN,GAAGprN,KAAK,MAAK+K,EAAAA,CAAAA,GAAKA,GAAEogN,mBAAiBngN,IAAED,GAAEkgN,eAAapsN;UAAAA;QAAAA;AAC5G,iBAASusN,GAAGrgN,IAAAA;AAAiB,cAAd0/M,KAAAA,IAAME,MAAGD,KAAG,GAAK,MAAO,KAAFvlL;AAAM,kBAAMl5B,MAAMukB,GAAE,GAAA,CAAA;AAAM,cAAIxlB,KAAED,GAAEkgN;AAAa,cAAGI,GAAAA,KAAMtgN,GAAEkgN,iBAAejgN;AAAE,mBAAO;AAAK,cAAInM,KAAEssM,GAAGpgM,IAAEA,OAAI05B,KAAEE,KAAE,CAAA;AAAG,cAAG,MAAI9lC;AAAE,mBAAO;AAAK,cAAIC,KAAED,IAAM2B,KAAE2kC;AAAEA,gBAAG;AAAG,cAAI3Y,KAAE8+L,GAAAA;AAAkC,eAA1B7mL,OAAI15B,MAAG45B,OAAI7lC,OAAEirN,GAAAA,GAAKwB,GAAGxgN,IAAEjM,EAAAA;AAAAA,gBAAAA;AAAU0sN,iBAAAA;AAAK;YAAA,SAAY19M,IAAN;AAAS29M,iBAAG1gN,IAAE+C,EAAAA;YAAAA;AAAgE,cAApDquM,GAAAA,GAAKmN,GAAGx4K,UAAQtkB,IAAE2Y,KAAE3kC,IAAE,SAAOgpN,KAAE1qN,KAAE,KAAG2lC,KAAE,MAAKE,KAAE,GAAE7lC,KAAE4lC,KAAM,MAAKklL,KAAG9C;AAAIyE,eAAGxgN,IAAE,CAAA;mBAAW,MAAIjM,IAAE;AAAyF,gBAAxF,MAAIA,OAAIqmC,MAAG,IAAGp6B,GAAEq+L,YAAUr+L,GAAEq+L,UAAAA,OAAW+O,GAAGptM,GAAEs+L,aAAAA,IAAwB,OAARxqM,KAAE8sM,GAAG5gM,EAAAA,OAAWjM,KAAE4sN,GAAG3gN,IAAElM,EAAAA,KAAQ,MAAIC;AAAE,oBAAMkM,KAAE2+M,IAAG4B,GAAGxgN,IAAE,CAAA,GAAGg8M,GAAGh8M,IAAElM,EAAAA,GAAGmsN,GAAGjgN,IAAEq5B,GAAAA,CAAAA,GAAKp5B;AAC3c,oBAD6cD,GAAE4gN,eACrf5gN,GAAE+lC,QAAQm2J,WAAUl8L,GAAE6gN,gBAAc/sN,IAASC,IAAAA;cAAG,KAAK;cAAE,KAAK;AAAE,sBAAMmN,MAAMukB,GAAE,GAAA,CAAA;cAAM,KAAK;AAAEq7L,mBAAG9gN,EAAAA;AAAG;cAAM,KAAK;AAAU,oBAARg8M,GAAGh8M,IAAElM,EAAAA,IAAS,WAAFA,QAAcA,MAAiB,MAAbC,KAAEmqN,KAAG,MAAI7kL,GAAAA,IAAU;AAAC,sBAAG,MAAI+mK,GAAGpgM,IAAE,CAAA;AAAG;AAAyB,wBAAnBvK,KAAEuK,GAAEugM,kBAAqBzsM,QAAKA,IAAE;AAACq/M,uBAAAA,GAAKnzM,GAAEwgM,eAAaxgM,GAAEugM,iBAAe9qM;AAAE;kBAAA;AAAMuK,kBAAAA,GAAE+gN,gBAAcvkN,GAAGskN,GAAG7rN,KAAK,MAAK+K,EAAAA,GAAGjM,EAAAA;AAAG;gBAAA;AAAM+sN,mBAAG9gN,EAAAA;AAAG;cAAM,KAAK;AAAU,oBAARg8M,GAAGh8M,IAAElM,EAAAA,IAAS,UAAFA,QAAaA;AAAE;AAAqB,qBAAfC,KAAEiM,GAAEihM,YAAexrM,KAAAA,IAAK,IAAE3B,MAAG;AAAC,sBAAIslC,KAAE,KAAGqnK,GAAG3sM,EAAAA;AAAG2tB,kBAAAA,KAAE,KAAG2X,KAAEA,KAAErlC,GAAEqlC,EAAAA,KAAK3jC,OAAIA,KAAE2jC,KAAGtlC,MAAAA,CAAI2tB;gBAAAA;AACjZ,oBADmZ3tB,KAAE2B,IAClZ,MAD4Z3B,MAAG,OAAXA,KAAEulC,GAAAA,IAAIvlC,MAAW,MAAI,MAAIA,KAAE,MAAI,OAAKA,KAAE,OAAK,OAAKA,KAAE,OAAK,MAAIA,KAAE,MAAI,OAClfA,KAAE,OAAK,OAAKwqN,GAAGxqN,KAAE,IAAA,KAAOA,KAAU;AAACkM,kBAAAA,GAAE+gN,gBAAcvkN,GAAGskN,GAAG7rN,KAAK,MAAK+K,EAAAA,GAAGlM,EAAAA;AAAG;gBAAA;AAAMgtN,mBAAG9gN,EAAAA;AAAG;cAAM,KAAK;AAAE8gN,mBAAG9gN,EAAAA;AAAG;cAAM;AAAQ,sBAAMkB,MAAMukB,GAAE,GAAA,CAAA;YAAA;UAAA;AAAkB,iBAAVw6L,GAAGjgN,IAAEq5B,GAAAA,CAAAA,GAAYr5B,GAAEkgN,iBAAejgN,KAAEogN,GAAGprN,KAAK,MAAK+K,EAAAA,IAAG;QAAA;AAAK,iBAASg8M,GAAGh8M,IAAEC,IAAAA;AAAuD,eAApDA,MAAAA,CAAI6+M,IAAG7+M,MAAAA,CAAI87M,IAAG/7M,GAAEugM,kBAAgBtgM,IAAED,GAAEwgM,eAAAA,CAAcvgM,IAAMD,KAAEA,GAAEmgN,iBAAgB,IAAElgN,MAAG;AAAC,gBAAInM,KAAE,KAAG2sM,GAAGxgM,EAAAA,GAAGlM,KAAE,KAAGD;AAAEkM,YAAAA,GAAElM,EAAAA,IAAAA,IAAMmM,MAAAA,CAAIlM;UAAAA;QAAAA;AAC1U,iBAASisN,GAAGhgN,IAAAA;AAAG,cAAG,MAAO,KAAFo6B;AAAM,kBAAMl5B,MAAMukB,GAAE,GAAA,CAAA;AAAW,cAAL66L,GAAAA,GAAQtgN,OAAI05B,MAAG,MAAK15B,GAAEsgM,eAAa1mK,KAAG;AAAC,gBAAI35B,KAAE25B,IAAM9lC,KAAE6sN,GAAG3gN,IAAEC,EAAAA;AAAG,kBAAK4+M,KAAG9C,QAAgBjoN,KAAE6sN,GAAG3gN,IAAfC,KAAEmgM,GAAGpgM,IAAEC,EAAAA,CAAAA;UAAAA;AAA6BnM,YAAAA,KAAE6sN,GAAG3gN,IAAfC,KAAEmgM,GAAGpgM,IAAE,CAAA,CAAA;AAAgH,cAAnG,MAAIA,GAAEmtC,OAAK,MAAIr5C,OAAIsmC,MAAG,IAAGp6B,GAAEq+L,YAAUr+L,GAAEq+L,UAAAA,OAAW+O,GAAGptM,GAAEs+L,aAAAA,IAAwB,OAARr+L,KAAE2gM,GAAG5gM,EAAAA,OAAWlM,KAAE6sN,GAAG3gN,IAAEC,EAAAA,KAAQ,MAAInM;AAAE,kBAAMA,KAAE8qN,IAAG4B,GAAGxgN,IAAE,CAAA,GAAGg8M,GAAGh8M,IAAEC,EAAAA,GAAGggN,GAAGjgN,IAAEq5B,GAAAA,CAAAA,GAAKvlC;AAAuE,iBAArEkM,GAAE4gN,eAAa5gN,GAAE+lC,QAAQm2J,WAAUl8L,GAAE6gN,gBAAc5gN,IAAE6gN,GAAG9gN,EAAAA,GAAGigN,GAAGjgN,IAAEq5B,GAAAA,CAAAA,GAAY;QAAA;AACnR,iBAAS2nL,GAAGhhN,IAAEC,IAAAA;AAAG,cAAInM,KAAEsmC;AAAEA,gBAAG;AAAE,cAAA;AAAI,mBAAOp6B,GAAEC,EAAAA;UAAAA,UAAG;AAAY,mBAAJm6B,KAAEtmC,QAAUkrN,GAAAA,GAAKpO,GAAAA;UAAAA;QAAAA;AAAO,iBAASqQ,GAAGjhN,IAAEC,IAAAA;AAAG,cAAInM,KAAEsmC;AAAEA,gBAAAA,IAAMA,MAAG;AAAE,cAAA;AAAI,mBAAOp6B,GAAEC,EAAAA;UAAAA,UAAG;AAAY,mBAAJm6B,KAAEtmC,QAAUkrN,GAAAA,GAAKpO,GAAAA;UAAAA;QAAAA;AAAO,iBAASiJ,GAAG75M,IAAEC,IAAAA;AAAGs5B,aAAEolL,IAAGD,EAAAA,GAAIA,MAAIz+M,IAAE4+M,MAAI5+M;QAAAA;AAAE,iBAASi8M,KAAAA;AAAKwC,eAAGC,GAAG54K,SAAQlM,GAAE8kL,EAAAA;QAAAA;AAC5V,iBAAS6B,GAAGxgN,IAAEC,IAAAA;AAAGD,UAAAA,GAAE4gN,eAAa,MAAK5gN,GAAE6gN,gBAAc;AAAE,cAAI/sN,KAAEkM,GAAE+gN;AAAiD,cAAA,OAA9BjtN,OAAIkM,GAAE+gN,gBAAAA,IAAiB5T,GAAGr5M,EAAAA,IAAO,SAAO2qN;AAAE,iBAAI3qN,KAAE2qN,GAAEtiB,QAAO,SAAOroM,MAAG;AAAC,kBAAIC,KAAED;AAAE,sBAAOC,GAAEo5C,KAAAA;gBAAK,KAAK;AAA6B,2BAA3Bp5C,KAAEA,GAAE2G,KAAK0kJ,sBAAwCkvD,GAAAA;AAAK;gBAAM,KAAK;AAAEn5C,qBAAAA,GAAKt7H,GAAEvU,EAAAA,GAAGuU,GAAE3R,EAAAA,GAAG+tL,GAAAA;AAAK;gBAAM,KAAK;AAAE5gD,qBAAGthK,EAAAA;AAAG;gBAAM,KAAK;AAAEohK,qBAAAA;AAAK;gBAAM,KAAK;gBAAc,KAAK;AAAGt7H,qBAAE1W,EAAAA;AAAG;gBAAM,KAAK;AAAGkuL,qBAAGt9M,EAAAA;AAAG;gBAAM,KAAK;gBAAG,KAAK;AAAGmoN,qBAAAA;cAAAA;AAAKpoN,cAAAA,KAAEA,GAAEqoM;YAAAA;AAAOziK,eAAE15B,IAAEy+M,KAAEhK,GAAGz0M,GAAE+lC,SAAQ,IAAA,GAAMnM,KAAE8kL,KAAGG,KAAG5+M,IAAE05B,KAAE,GAAEilL,KAAG,MAAKE,KAAG/C,KAAGlJ,KAAG;QAAA;AACvc,iBAAS6N,GAAG1gN,IAAEC,IAAAA;AAAG,qBAAE;AAAC,gBAAInM,KAAE2qN;AAAE,gBAAA;AAAuB,kBAAnBrN,GAAAA,GAAK+E,GAAGpwK,UAAQ6wK,IAAMP,IAAG;AAAC,yBAAQtiN,KAAE4wF,GAAE03G,eAAc,SAAOtoM,MAAG;AAAC,sBAAI0B,KAAE1B,GAAE+4E;AAAM,2BAAOr3E,OAAIA,GAAE++F,UAAQ,OAAMzgG,KAAEA,GAAEwG;gBAAAA;AAAK87M,qBAAAA;cAAG;AAAyC,kBAAtCxgD,KAAG,GAAEntI,KAAE1G,KAAE2iE,KAAE,MAAK2xH,KAAAA,OAAMkI,GAAGz4K,UAAQ,MAAQ,SAAOjyC,MAAG,SAAOA,GAAEqoM,QAAO;AAACxiK,qBAAE,GAAEilL,KAAG3+M,IAAEw+M,KAAE;AAAK;cAAA;AAAMz+M,iBAAE;AAAC,oBAAIyhB,KAAEzhB,IAAEo5B,KAAEtlC,GAAEqoM,QAAOp5L,KAAEjP,IAAE6G,KAAEsF;AAAoD,oBAAlDA,KAAE25B,IAAE72B,GAAEwjH,SAAO,MAAKxjH,GAAEyxM,cAAYzxM,GAAEuxM,aAAW,MAAQ,SAAO35M,MAAG,YAAA,OAAkBA,MAAG,cAAA,OAAoBA,GAAEwiC,MAAK;AAAC,sBAAIzpC,KAAEiH;AAAE,sBAAG,MAAY,IAAPoI,GAAEnO,OAAQ;AAAC,wBAAIM,KAAE6N,GAAEm5L;AAAUhnM,oBAAAA,MAAG6N,GAAEkvM,cAAY/8M,GAAE+8M,aAAYlvM,GAAEs5L,gBAAcnnM,GAAEmnM,eAAct5L,GAAE2uM,QAAMx8M,GAAEw8M,UACpf3uM,GAAEkvM,cAAY,MAAKlvM,GAAEs5L,gBAAc;kBAAA;AAAM,sBAAIj6K,KAAE,MAAe,IAAVe,GAAE4iB,UAAWxwC,KAAE6jC;AAAE,qBAAE;AAAC,wBAAIvW;AAAE,wBAAGA,KAAE,OAAKttB,GAAE43C,KAAI;AAAC,0BAAIziC,KAAEnV,GAAE8mM;AAAc,0BAAG,SAAO3xL;AAAEmY,wBAAAA,KAAE,SAAOnY,GAAE4xL;2BAAqB;AAAC,4BAAIx5K,KAAEvtB,GAAE4/M;AAActyL,wBAAAA,KAAAA,WAAWC,GAAEgsB,aAAAA,SAAiBhsB,GAAE83L,8BAAAA,CAA8Bx4L;sBAAAA;oBAAAA;AAAS,wBAAGS,IAAE;AAAC,0BAAI4H,KAAEl1B,GAAE08M;AAAY,0BAAG,SAAOxnL,IAAE;AAAC,4BAAIjJ,KAAE,oBAAI/pB;AAAI+pB,wBAAAA,GAAE/J,IAAI/jB,EAAAA,GAAG6B,GAAE08M,cAAYzwL;sBAAAA;AAAOiJ,wBAAAA,GAAEhT,IAAI/jB,EAAAA;AAAG,0BAAG,MAAY,IAAP6B,GAAEX,OAAQ;AAA2C,4BAA1CW,GAAEgxH,SAAO,IAAGxjH,GAAEwjH,SAAO,OAAMxjH,GAAEwjH,SAAAA,OAAgB,MAAIxjH,GAAEoqC;AAAI,8BAAG,SAAOpqC,GAAEm5L;AAAUn5L,4BAAAA,GAAEoqC,MAAI;+BAAO;AAAC,gCAAIx4C,KAAE49M,GAAAA,IAAM,CAAA;AAAG59M,4BAAAA,GAAEw4C,MAAI,GAAEulK,GAAG3vM,IAAEpO,EAAAA;0BAAAA;AAAGoO,wBAAAA,GAAE2uM,SAAO;AAAE,8BAAM1xM;sBAAAA;AAAErF,sBAAAA,KAAAA,QACrfoI,KAAE9C;AAAE,0BAAI4qB,KAAEpJ,GAAEy/L;AAA+G,0BAArG,SAAOr2L,MAAGA,KAAEpJ,GAAEy/L,YAAU,IAAI5E,MAAG3hN,KAAE,oBAAIlD,OAAIozB,GAAE3mB,IAAIxQ,IAAEiH,EAAAA,KAAAA,YAAKA,KAAEkwB,GAAEv2B,IAAIZ,EAAAA,OAAgBiH,KAAE,oBAAIlD,OAAIozB,GAAE3mB,IAAIxQ,IAAEiH,EAAAA,IAAAA,CAASA,GAAE+F,IAAIqC,EAAAA,GAAG;AAACpI,wBAAAA,GAAE8c,IAAI1U,EAAAA;AAAG,4BAAInI,KAAEumN,GAAGlsN,KAAK,MAAKwsB,IAAE/tB,IAAEqP,EAAAA;AAAGrP,wBAAAA,GAAEypC,KAAKviC,IAAEA,EAAAA;sBAAAA;AAAGrF,sBAAAA,GAAEgxH,SAAO,MAAKhxH,GAAEm8M,QAAMzxM;AAAE,4BAAMD;oBAAAA;AAAEzK,oBAAAA,KAAEA,GAAE4mM;kBAAAA,SAAa,SAAO5mM;AAAGoF,kBAAAA,KAAEuG,OAAOuzL,GAAG1xL,GAAErI,IAAAA,KAAO,uBAAqB,uLAAA;gBAAA;AAAyL,sBAAIi/B,OAAIA,KAAE,IAAGh/B,KAAEyhN,GAAGzhN,IAAEoI,EAAAA,GAAGxN,KACpf6jC;AAAE,mBAAE;AAAC,0BAAO7jC,GAAE43C,KAAAA;oBAAK,KAAK;AAAE1rB,sBAAAA,KAAE9mB,IAAEpF,GAAEgxH,SAAO,MAAKtmH,MAAAA,CAAIA,IAAE1K,GAAEm8M,SAAOzxM,IAAkB0yM,GAAGp9M,IAAbgnN,GAAGhnN,GAAEksB,IAAExhB,EAAAA,CAAAA;AAAW,4BAAMD;oBAAE,KAAK;AAAEyhB,sBAAAA,KAAE9mB;AAAE,0BAAIq/B,KAAEzkC,GAAEmF,MAAKw/B,KAAE3kC,GAAEolM;AAAU,0BAAG,MAAa,KAARplM,GAAEgxH,WAAY,cAAA,OAAoBvsF,GAAEulH,4BAA0B,SAAOrlH,MAAG,cAAA,OAAoBA,GAAE86C,sBAAoB,SAAO2nI,MAAAA,CAAKA,GAAGj8M,IAAIw5B,EAAAA,KAAK;AAAC3kC,wBAAAA,GAAEgxH,SAAO,MAAKtmH,MAAAA,CAAIA,IAAE1K,GAAEm8M,SAAOzxM,IAAkB0yM,GAAGp9M,IAAbmnN,GAAGnnN,IAAEksB,IAAExhB,EAAAA,CAAAA;AAAW,8BAAMD;sBAAAA;kBAAAA;AAAGzK,kBAAAA,KAAEA,GAAE4mM;gBAAAA,SAAa,SAAO5mM;cAAAA;AAAG6rN,iBAAGttN,EAAAA;YAAAA,SAASutN,IAAN;AAAUphN,cAAAA,KAAEohN,IAAG5C,OAAI3qN,MAAG,SAAOA,OAAI2qN,KAAE3qN,KAAEA,GAAEqoM;AAAQ;YAAA;AAAS;UAAA;QAAA;AAC/a,iBAASokB,KAAAA;AAAK,cAAIvgN,KAAEu+M,GAAGx4K;AAAsB,iBAAdw4K,GAAGx4K,UAAQ6wK,IAAU,SAAO52M,KAAE42M,KAAG52M;QAAAA;AAAE,iBAAS2gN,GAAG3gN,IAAEC,IAAAA;AAAG,cAAInM,KAAEsmC;AAAEA,gBAAG;AAAG,cAAIrmC,KAAEwsN,GAAAA;AAA2B,eAAtB7mL,OAAI15B,MAAG45B,OAAI35B,MAAGugN,GAAGxgN,IAAEC,EAAAA;AAAAA,gBAAAA;AAAUqhN,iBAAAA;AAAK;YAAA,SAAY7rN,IAAN;AAASirN,iBAAG1gN,IAAEvK,EAAAA;YAAAA;AAAkC,cAAtB27M,GAAAA,GAAKh3K,KAAEtmC,IAAEyqN,GAAGx4K,UAAQhyC,IAAK,SAAO0qN;AAAE,kBAAMv9M,MAAMukB,GAAE,GAAA,CAAA;AAAiB,iBAAXiU,KAAE,MAAKE,KAAE,GAASD;QAAAA;AAAE,iBAAS2nL,KAAAA;AAAK,iBAAK,SAAO7C;AAAG8C,eAAG9C,EAAAA;QAAAA;AAAG,iBAASgC,KAAAA;AAAK,iBAAK,SAAOhC,MAAAA,CAAItP,GAAAA;AAAMoS,eAAG9C,EAAAA;QAAAA;AAAG,iBAAS8C,GAAGvhN,IAAAA;AAAG,cAAIC,KAAEg/M,GAAGj/M,GAAEk8L,WAAUl8L,IAAE0+M,EAAAA;AAAI1+M,UAAAA,GAAEm1M,gBAAcn1M,GAAE21M,cAAa,SAAO11M,KAAEmhN,GAAGphN,EAAAA,IAAGy+M,KAAEx+M,IAAEu+M,GAAGz4K,UAAQ;QAAA;AAC5a,iBAASq7K,GAAGphN,IAAAA;AAAG,cAAIC,KAAED;AAAE,aAAE;AAAC,gBAAIlM,KAAEmM,GAAEi8L;AAAqB,gBAAXl8L,KAAEC,GAAEk8L,QAAU,MAAa,OAARl8L,GAAEsmH,QAAY;AAAc,kBAAG,UAAhBzyH,KAAE4nN,GAAG5nN,IAAEmM,IAAEy+M,EAAAA;AAAqB,uBAAA,MAAJD,KAAE3qN;AAAa,kBAAG,QAAPA,KAAEmM,IAAYktC,OAAK,OAAKr5C,GAAEq5C,OAAK,SAAOr5C,GAAEuoM,iBAAe,MAAQ,aAAHqiB,OAAgB,MAAY,IAAP5qN,GAAEc,OAAQ;AAAC,yBAAQb,KAAE,GAAE0B,KAAE3B,GAAEkgE,OAAM,SAAOv+D;AAAG1B,kBAAAA,MAAG0B,GAAEi8M,QAAMj8M,GAAE87M,YAAW97M,KAAEA,GAAEgnM;AAAQ3oM,gBAAAA,GAAEy9M,aAAWx9M;cAAAA;AAAE,uBAAOiM,MAAG,MAAa,OAARA,GAAEumH,WAAc,SAAOvmH,GAAEw0M,gBAAcx0M,GAAEw0M,cAAYv0M,GAAEu0M,cAAa,SAAOv0M,GAAEq0M,eAAa,SAAOt0M,GAAEs0M,eAAat0M,GAAEs0M,WAAWC,aAAWt0M,GAAEu0M,cAAax0M,GAAEs0M,aAAWr0M,GAAEq0M,aAAY,IAAEr0M,GAAEsmH,UAAQ,SAC/evmH,GAAEs0M,aAAWt0M,GAAEs0M,WAAWC,aAAWt0M,KAAED,GAAEw0M,cAAYv0M,IAAED,GAAEs0M,aAAWr0M;YAAAA,OAAQ;AAAS,kBAAG,UAAXnM,KAAEqoN,GAAGl8M,EAAAA;AAAkC,uBAAlBnM,GAAEyyH,SAAO,MAAA,MAAKk4F,KAAE3qN;AAAS,uBAAOkM,OAAIA,GAAEw0M,cAAYx0M,GAAEs0M,aAAW,MAAKt0M,GAAEumH,SAAO;YAAA;AAAkB,gBAAG,UAAftmH,KAAEA,GAAEw8L;AAAyB,qBAAA,MAAJgiB,KAAEx+M;AAASw+M,iBAAEx+M,KAAED;UAAAA,SAAQ,SAAOC;AAAG,gBAAI05B,OAAIA,KAAE;QAAA;AAAG,iBAASmnL,GAAG9gN,IAAAA;AAAG,cAAIC,KAAEuwM,GAAAA;AAA8B,iBAAzBE,GAAG,IAAG8Q,GAAGvsN,KAAK,MAAK+K,IAAEC,EAAAA,CAAAA,GAAW;QAAA;AACtT,iBAASuhN,GAAGxhN,IAAEC,IAAAA;AAAG,aAAA;AAAGqgN,eAAAA;UAAAA,SAAW,SAAOnB;AAAI,cAAG,MAAO,KAAF/kL;AAAM,kBAAMl5B,MAAMukB,GAAE,GAAA,CAAA;AAAM,cAAI3xB,KAAEkM,GAAE4gN;AAAa,cAAG,SAAO9sN;AAAE,mBAAO;AAA2C,cAAtCkM,GAAE4gN,eAAa,MAAK5gN,GAAE6gN,gBAAc,GAAK/sN,OAAIkM,GAAE+lC;AAAQ,kBAAM7kC,MAAMukB,GAAE,GAAA,CAAA;AAAMzlB,UAAAA,GAAEkgN,eAAa;AAAK,cAAInsN,KAAED,GAAE49M,QAAM59M,GAAEy9M,YAAW97M,KAAE1B,IAAE0tB,KAAEzhB,GAAEqgM,eAAAA,CAAc5qM;AAAEuK,UAAAA,GAAEqgM,eAAa5qM,IAAEuK,GAAEugM,iBAAe,GAAEvgM,GAAEwgM,cAAY,GAAExgM,GAAEsgM,gBAAc7qM,IAAEuK,GAAE03M,oBAAkBjiN,IAAEuK,GAAE0gM,kBAAgBjrM,IAAEA,KAAEuK,GAAE2gM;AAAc,mBAAQvnK,KAAEp5B,GAAEihM,YAAWl+L,KAAE/C,GAAEmgN,iBAAgB,IAAE1+L,MAAG;AAAC,gBAAI9mB,KAAE,KAAG8lM,GAAGh/K,EAAAA,GAAG/tB,KAAE,KAAGiH;AAAElF,YAAAA,GAAEkF,EAAAA,IAAG,GAAEy+B,GAAEz+B,EAAAA,IAAAA,IAAMoI,GAAEpI,EAAAA,IAAAA,IAAM8mB,MAAAA,CAAI/tB;UAAAA;AACnV,cADqV,SACjf6rN,MAAI,MAAO,KAAFxrN,OAAOwrN,GAAG7+M,IAAIV,EAAAA,KAAIu/M,GAAG1mF,OAAO74H,EAAAA,GAAGA,OAAI05B,OAAI+kL,KAAE/kL,KAAE,MAAKE,KAAE,IAAG,IAAE9lC,GAAEyyH,QAAM,SAAOzyH,GAAEwgN,cAAYxgN,GAAEwgN,WAAWC,aAAWzgN,IAAEC,KAAED,GAAE0gN,eAAazgN,KAAED,KAAEC,KAAED,GAAE0gN,aAAe,SAAOzgN,IAAE;AAAwC,gBAAvC0B,KAAE2kC,IAAEA,MAAG,IAAGokL,GAAGz4K,UAAQ,MAAKgnK,KAAGvL,IAAasJ,GAAV1xK,KAAEwxK,GAAAA,CAAAA,GAAc;AAAC,kBAAG,oBAAmBxxK;AAAEr2B,gBAAAA,KAAE,EAAC3B,OAAMg4B,GAAEkyK,gBAAe7xM,KAAI2/B,GAAEmyK,aAAAA;;AAAmBvrM;AAAE,sBAAG+C,MAAGA,KAAEq2B,GAAE+gF,kBAAgBp3G,GAAE0oM,eAAaz7K,SAAQt8B,KAAEqP,GAAE2oM,gBAAc3oM,GAAE2oM,aAAAA,MAAiB,MAAIh4M,GAAE+tN,YAAW;AAAC1+M,oBAAAA,KAAErP,GAAE83M,YAAW/pL,KAAE/tB,GAAEi4M,cAAahxM,KAAEjH,GAAEk4M,WAAUl4M,KAAEA,GAAEm4M;AAAY,wBAAA;AAAI9oM,sBAAAA,GAAEsB,UAAS1J,GAAE0J;oBAAAA,SAAeg9M,IAAN;AAAUt+M,sBAAAA,KAAE;AACnf,4BAAM/C;oBAAAA;AAAE,wBAAI9K,KAAE,GAAEktB,KAAAA,IAAK7sB,KAAAA,IAAKstB,KAAE,GAAEnY,KAAE,GAAEoY,KAAEsW,IAAE3O,KAAE;AAAKxqB;AAAE,iCAAO;AAAC,iCAAQuhB,IAAKsB,OAAI/f,MAAG,MAAI0e,MAAG,MAAIqB,GAAEze,aAAW+d,KAAEltB,KAAEusB,KAAGqB,OAAInoB,MAAG,MAAIjH,MAAG,MAAIovB,GAAEze,aAAW9O,KAAEL,KAAExB,KAAG,MAAIovB,GAAEze,aAAWnP,MAAG4tB,GAAE6zK,UAAUh+L,SAAW,UAAQ6oB,KAAEsB,GAAE++F;AAAkBp3F,0BAAAA,KAAE3H,IAAEA,KAAEtB;AAAE,mCAAO;AAAC,8BAAGsB,OAAIsW;AAAE,kCAAMn5B;AAA8C,8BAA5CwqB,OAAI1nB,MAAAA,EAAK8f,OAAIpB,OAAIW,KAAEltB,KAAGu1B,OAAI9vB,MAAAA,EAAK+P,OAAIhX,OAAI6B,KAAEL,KAAM,UAAQssB,KAAEsB,GAAE2nL;AAAa;AAAUhgL,0BAAAA,MAAJ3H,KAAE2H,IAAMi0F;wBAAAA;AAAW57F,wBAAAA,KAAEtB;sBAAAA;AAAEze,oBAAAA,KAAAA,OAAOqf,MAAAA,OAAQ7sB,KAAE,OAAK,EAAC6L,OAAMghB,IAAE3oB,KAAIlE,GAAAA;kBAAAA;AAAQwN,oBAAAA,KAAE;AAAKA,cAAAA,KAAEA,MAAG,EAAC3B,OAAM,GAAE3H,KAAI,EAAA;YAAA;AAAQsJ,cAAAA,KAAE;AAAKiqM,iBAAG,EAAC0U,aAAYtoL,IAAEuoL,gBAAe5+M,GAAAA,GAAGy+L,KAAAA,OAAMqe,KAAG,MAAKC,KAAAA,OAAM3lL,KAAEpmC;AAAE,eAAA;AAAA,kBAAA;AAAO6tN,mBAAAA;cAAAA,SAAWP,IAAN;AAAU,oBAAG,SACvgBlnL;AAAE,wBAAMj5B,MAAMukB,GAAE,GAAA,CAAA;AAAMs3L,mBAAG5iL,IAAEknL,EAAAA,GAAIlnL,KAAEA,GAAEo6K;cAAAA;YAAAA,SAAiB,SAAOp6K;AAAG0lL,iBAAG,MAAK1lL,KAAEpmC;AAAE,eAAA;AAAA,kBAAA;AAAO,qBAAIqlC,KAAEp5B,IAAE,SAAOm6B,MAAG;AAAC,sBAAIxlC,KAAEwlC,GAAEosF;AAA+B,sBAAvB,KAAF5xH,MAAM8hM,GAAGt8J,GAAEwgK,WAAU,EAAA,GAAS,MAAFhmM,IAAM;AAAC,wBAAIk2B,KAAEsP,GAAE+hK;AAAU,wBAAG,SAAOrxK,IAAE;AAAC,0BAAIjwB,KAAEiwB,GAAE3yB;AAAI,+BAAO0C,OAAI,cAAA,OAAoBA,KAAEA,GAAE,IAAA,IAAMA,GAAEmrC,UAAQ;oBAAA;kBAAA;AAAO,0BAAS,OAAFpxC,IAAAA;oBAAQ,KAAK;AAAEkpN,yBAAG1jL,EAAAA,GAAGA,GAAEosF,SAAAA;AAAU;oBAAM,KAAK;AAAEs3F,yBAAG1jL,EAAAA,GAAGA,GAAEosF,SAAAA,IAAU03F,GAAG9jL,GAAE+hK,WAAU/hK,EAAAA;AAAG;oBAAM,KAAK;AAAKA,yBAAEosF,SAAAA;AAAa;oBAAM,KAAK;AAAKpsF,yBAAEosF,SAAAA,OAAa03F,GAAG9jL,GAAE+hK,WAAU/hK,EAAAA;AAAG;oBAAM,KAAK;AAAE8jL,yBAAG9jL,GAAE+hK,WAAU/hK,EAAAA;AAAG;oBAAM,KAAK;AAAMujL,yBAAGtkL,IAAPr2B,KAAEo3B,EAAAA;AAAU,0BAAIJ,KAAEh3B,GAAEm5L;AAAUyhB,yBAAG56M,EAAAA,GAAG,SACnfg3B,MAAG4jL,GAAG5jL,EAAAA;kBAAAA;AAAGI,uBAAEA,GAAEo6K;gBAAAA;cAAAA,SAAkB8M,IAAN;AAAU,oBAAG,SAAOlnL;AAAE,wBAAMj5B,MAAMukB,GAAE,GAAA,CAAA;AAAMs3L,mBAAG5iL,IAAEknL,EAAAA,GAAIlnL,KAAEA,GAAEo6K;cAAAA;YAAAA,SAAiB,SAAOp6K;AAAkD,gBAA/Cv/B,KAAEoyM,IAAGniL,KAAE+/K,GAAAA,GAAKj2M,KAAEiG,GAAE8mN,aAAYtoL,KAAEx+B,GAAE+mN,gBAAkB92L,OAAIl2B,MAAGA,MAAGA,GAAEwlH,iBAAeuwF,GAAG/1M,GAAEwlH,cAAc31G,iBAAgB7P,EAAAA,GAAG;AAAC,uBAAOykC,MAAG0xK,GAAGn2M,EAAAA,MAAKk2B,KAAEuO,GAAEh4B,OAAAA,YAAMxG,KAAEw+B,GAAE3/B,SAAiBmB,KAAEiwB,KAAG,oBAAmBl2B,MAAGA,GAAE22M,iBAAezgL,IAAEl2B,GAAE42M,eAAa9yM,KAAKqB,IAAIc,IAAEjG,GAAED,MAAMiE,MAAAA,MAAUiC,MAAGiwB,KAAEl2B,GAAEwlH,iBAAen+C,aAAWnxC,GAAE4gL,eAAaz7K,QAAS07K,iBAAe9wM,KAAEA,GAAE8wM,aAAAA,GAAe3oM,KAAEpO,GAAEsrH,YAAYtnH,QAAOohC,KAAEthC,KAAKqB,IAAIs/B,GAAEh4B,OAAM2B,EAAAA,GAAGq2B,KAAAA,WAClfA,GAAE3/B,MAAIsgC,KAAEthC,KAAKqB,IAAIs/B,GAAE3/B,KAAIsJ,EAAAA,GAAAA,CAAInI,GAAE2wC,UAAQxR,KAAEX,OAAIr2B,KAAEq2B,IAAEA,KAAEW,IAAEA,KAAEh3B,KAAGA,KAAEynM,GAAG71M,IAAEolC,EAAAA,GAAGtY,KAAE+oL,GAAG71M,IAAEykC,EAAAA,GAAGr2B,MAAG0e,OAAI,MAAI7mB,GAAE6mN,cAAY7mN,GAAE4wM,eAAazoM,GAAEuB,QAAM1J,GAAE+wM,iBAAe5oM,GAAExK,UAAQqC,GAAEgxM,cAAYnqL,GAAEnd,QAAM1J,GAAEixM,gBAAcpqL,GAAElpB,aAAUsyB,KAAEA,GAAEg3L,YAAAA,GAAgBC,SAAS/+M,GAAEuB,MAAKvB,GAAExK,MAAAA,GAAQqC,GAAEmnN,gBAAAA,GAAkBhoL,KAAEX,MAAGx+B,GAAEonN,SAASn3L,EAAAA,GAAGjwB,GAAE2wC,OAAO9pB,GAAEnd,MAAKmd,GAAElpB,MAAAA,MAAUsyB,GAAEo3L,OAAOxgM,GAAEnd,MAAKmd,GAAElpB,MAAAA,GAAQqC,GAAEonN,SAASn3L,EAAAA,OAAQA,KAAE,CAAA;AAAG,mBAAIjwB,KAAEjG,IAAEiG,KAAEA,GAAE8jH;AAAY,sBAAI9jH,GAAEyJ,YAAUwmB,GAAEzgB,KAAK,EAACi2F,SAAQzlG,IAAEoU,MAAKpU,GAAEsnN,YAAW7zC,KAAIzzK,GAAEqzK,UAAAA,CAAAA;AAAmD,mBAAvC,cAAA,OAAoBt5K,GAAE0oN,SAAO1oN,GAAE0oN,MAAAA,GAAY1oN,KACrf,GAAEA,KAAEk2B,GAAElyB,QAAOhE;AAAAA,iBAAIiG,KAAEiwB,GAAEl2B,EAAAA,GAAK0rG,QAAQ6hH,aAAWtnN,GAAEoU,MAAKpU,GAAEylG,QAAQ4tE,YAAUrzK,GAAEyzK;YAAAA;AAAImzB,iBAAAA,CAAAA,CAAKuL,IAAGC,KAAGD,KAAG,MAAK/sM,GAAE+lC,UAAQjyC,IAAEqmC,KAAEpmC;AAAE,eAAA;AAAA,kBAAA;AAAO,qBAAIY,KAAEqL,IAAE,SAAOm6B,MAAG;AAAC,sBAAIH,KAAEG,GAAEosF;AAAgC,sBAAxB,KAAFvsF,MAAMkjL,GAAGvoN,IAAEwlC,GAAE+hK,WAAU/hK,EAAAA,GAAQ,MAAFH,IAAM;AAACnP,oBAAAA,KAAAA;AAAS,wBAAIqP,KAAEC,GAAEjiC;AAAI,wBAAG,SAAOgiC,IAAE;AAAC,0BAAIV,KAAEW,GAAEwgK;AAAU,8BAAOxgK,GAAEgT,KAAAA;wBAAK,KAAK;AAAEtiB,0BAAAA,KAAE2O;AAAE;wBAAM;AAAQ3O,0BAAAA,KAAE2O;sBAAAA;AAAE,oCAAA,OAAoBU,KAAEA,GAAErP,EAAAA,IAAGqP,GAAE6L,UAAQlb;oBAAAA;kBAAAA;AAAGsP,uBAAEA,GAAEo6K;gBAAAA;cAAAA,SAAkB8M,IAAN;AAAU,oBAAG,SAAOlnL;AAAE,wBAAMj5B,MAAMukB,GAAE,GAAA,CAAA;AAAMs3L,mBAAG5iL,IAAEknL,EAAAA,GAAIlnL,KAAEA,GAAEo6K;cAAAA;YAAAA,SAAiB,SAAOp6K;AAAGA,iBAAE,MAAKg2K,GAAAA,GAAK/1K,KAAE3kC;UAAAA;AAAOuK,YAAAA,GAAE+lC,UAAQjyC;AAAE,cAAGorN;AAAGA,iBAAAA,OAAMC,KAAGn/M,IAAEo/M,KAAGn/M;;AAAO,iBAAIk6B,KAAEpmC,IAAE,SAAOomC;AAAGl6B,cAAAA,KACpfk6B,GAAEo6K,YAAWp6K,GAAEo6K,aAAW,MAAa,IAARp6K,GAAEosF,WAAUvsF,KAAEG,IAAIsiK,UAAQ,MAAKziK,GAAE2gK,YAAU,OAAMxgK,KAAEl6B;AAAqF,cAAlE,OAAjBlM,KAAEiM,GAAEqgM,kBAAqBsc,KAAG,OAAM,MAAI5oN,KAAEiM,OAAIy/M,KAAGD,SAAMA,MAAG,GAAEC,KAAGz/M,MAAGw/M,MAAG,GAAE1rN,KAAEA,GAAE6mM,WAAamU,MAAI,cAAA,OAAoBA,GAAGqT;AAAkB,gBAAA;AAAIrT,iBAAGqT,kBAAkBtT,IAAG/6M,IAAAA,QAAS,OAAsB,KAAhBA,GAAEiyC,QAAQwgF,MAAAA;YAAAA,SAAiB86F,IAAN;YAAMA;AAAe,cAAVpB,GAAGjgN,IAAEq5B,GAAAA,CAAAA,GAAQmjL;AAAG,kBAAMA,KAAAA,OAAMx8M,KAAEy8M,IAAGA,KAAG,MAAKz8M;AAAE,iBAAG,MAAO,IAAFo6B,OAAiBw2K,GAAAA,GAAL;QAAA;AACjW,iBAASgR,KAAAA;AAAK,iBAAK,SAAOznL,MAAG;AAAC,gBAAIn6B,KAAEm6B,GAAE+hK;AAAU4jB,kBAAI,SAAOD,OAAK,MAAa,IAAR1lL,GAAEosF,SAASm2E,GAAGviK,IAAE0lL,EAAAA,MAAMC,KAAAA,QAAO,OAAK3lL,GAAEgT,OAAKkxK,GAAGr+M,IAAEm6B,EAAAA,KAAIuiK,GAAGviK,IAAE0lL,EAAAA,MAAMC,KAAAA;AAAQ,gBAAI7/M,KAAEk6B,GAAEosF;AAAM,kBAAO,MAAFtmH,OAAQ+8M,GAAGh9M,IAAEm6B,EAAAA,GAAG,MAAO,MAAFl6B,OAAQi/M,OAAKA,KAAAA,MAAMvO,GAAG,IAAG,WAAA;AAAgB,qBAAL2P,GAAAA,GAAY;YAAA,CAAA,IAAQnmL,KAAEA,GAAEo6K;UAAAA;QAAAA;AAAY,iBAAS+L,KAAAA;AAAK,cAAG,OAAKlB,IAAG;AAAC,gBAAIp/M,KAAE,KAAGo/M,KAAG,KAAGA;AAAS,mBAANA,KAAG,IAAU1O,GAAG1wM,IAAEoiN,EAAAA;UAAAA;AAAI,iBAAA;QAAM;AAAG,iBAAShF,GAAGp9M,IAAEC,IAAAA;AAAGo/M,aAAGj1M,KAAKnK,IAAED,EAAAA,GAAGk/M,OAAKA,KAAAA,MAAMvO,GAAG,IAAG,WAAA;AAAgB,mBAAL2P,GAAAA,GAAY;UAAA,CAAA;QAAA;AAAQ,iBAASnD,GAAGn9M,IAAEC,IAAAA;AAAGq/M,aAAGl1M,KAAKnK,IAAED,EAAAA,GAAGk/M,OAAKA,KAAAA,MAAMvO,GAAG,IAAG,WAAA;AAAgB,mBAAL2P,GAAAA,GAAY;UAAA,CAAA;QAAA;AACzd,iBAAS8B,KAAAA;AAAK,cAAG,SAAOjD;AAAG,mBAAA;AAAS,cAAIn/M,KAAEm/M;AAAW,cAARA,KAAG,MAAQ,MAAO,KAAF/kL;AAAM,kBAAMl5B,MAAMukB,GAAE,GAAA,CAAA;AAAM,cAAIxlB,KAAEm6B;AAAEA,gBAAG;AAAG,cAAItmC,KAAEwrN;AAAGA,eAAG,CAAA;AAAG,mBAAQvrN,KAAE,GAAEA,KAAED,GAAE6E,QAAO5E,MAAG,GAAE;AAAC,gBAAI0B,KAAE3B,GAAEC,EAAAA,GAAG0tB,KAAE3tB,GAAEC,KAAE,CAAA,GAAGqlC,KAAE3jC,GAAEg2H;AAAyB,gBAAjBh2H,GAAEg2H,UAAAA,QAAkB,cAAA,OAAoBryF;AAAE,kBAAA;AAAIA,gBAAAA,GAAAA;cAAAA,SAAUz+B,IAAN;AAAS,oBAAG,SAAO8mB;AAAE,wBAAMvgB,MAAMukB,GAAE,GAAA,CAAA;AAAMs3L,mBAAGt7L,IAAE9mB,EAAAA;cAAAA;UAAAA;AAAe,eAAX7G,KAAEurN,IAAGA,KAAG,CAAA,GAAOtrN,KAAE,GAAEA,KAAED,GAAE6E,QAAO5E,MAAG,GAAE;AAAC0B,YAAAA,KAAE3B,GAAEC,EAAAA,GAAG0tB,KAAE3tB,GAAEC,KAAE,CAAA;AAAG,gBAAA;AAAI,kBAAIgP,KAAEtN,GAAEV;AAAOU,cAAAA,GAAEg2H,UAAQ1oH,GAAAA;YAAAA,SAAUpI,IAAN;AAAS,kBAAG,SAAO8mB;AAAE,sBAAMvgB,MAAMukB,GAAE,GAAA,CAAA;AAAMs3L,iBAAGt7L,IAAE9mB,EAAAA;YAAAA;UAAAA;AAAI,eAAIoI,KAAE/C,GAAE+lC,QAAQyuK,aAAY,SAAOzxM;AAAG/C,YAAAA,KAAE+C,GAAEwxM,YAAWxxM,GAAEwxM,aAAW,MAAa,IAARxxM,GAAEwjH,UAAUxjH,GAAE05L,UACjf,MAAK15L,GAAE43L,YAAU,OAAM53L,KAAE/C;AAAW,iBAATo6B,KAAEn6B,IAAE2wM,GAAAA,GAAAA;QAAW;AAAG,iBAASyR,GAAGriN,IAAEC,IAAEnM,IAAAA;AAAyB4+M,aAAG1yM,IAAfC,KAAEs8M,GAAGv8M,GAAfC,KAAEm8M,GAAGtoN,IAAEmM,EAAAA,GAAY,CAAA,CAAA,GAAWA,KAAEkzM,GAAAA,GAAe,UAAVnzM,KAAE+/M,GAAG//M,IAAE,CAAA,OAAcghM,GAAGhhM,IAAE,GAAEC,EAAAA,GAAGggN,GAAGjgN,IAAEC,EAAAA;QAAAA;AACzI,iBAAS88M,GAAG/8M,IAAEC,IAAAA;AAAG,cAAG,MAAID,GAAEmtC;AAAIk1K,eAAGriN,IAAEA,IAAEC,EAAAA;;AAAQ,qBAAQnM,KAAEkM,GAAEm8L,QAAO,SAAOroM,MAAG;AAAC,kBAAG,MAAIA,GAAEq5C,KAAI;AAACk1K,mBAAGvuN,IAAEkM,IAAEC,EAAAA;AAAG;cAAA;AAAW,kBAAG,MAAInM,GAAEq5C,KAAI;AAAC,oBAAIp5C,KAAED,GAAE6mM;AAAU,oBAAG,cAAA,OAAoB7mM,GAAE4G,KAAK6kJ,4BAA0B,cAAA,OAAoBxrJ,GAAEihF,sBAAoB,SAAO2nI,MAAAA,CAAKA,GAAGj8M,IAAI3M,EAAAA,IAAI;AAAW,sBAAI0B,KAAEinN,GAAG5oN,IAAnBkM,KAAEo8M,GAAGn8M,IAAED,EAAAA,GAAgB,CAAA;AAA4B,sBAAzB0yM,GAAG5+M,IAAE2B,EAAAA,GAAGA,KAAE09M,GAAAA,GAAkB,UAAbr/M,KAAEisN,GAAGjsN,IAAE,CAAA;AAAektM,uBAAGltM,IAAE,GAAE2B,EAAAA,GAAGwqN,GAAGnsN,IAAE2B,EAAAA;2BAAW,cAAA,OAAoB1B,GAAEihF,sBAAoB,SAAO2nI,MAAAA,CAAKA,GAAGj8M,IAAI3M,EAAAA;AAAI,wBAAA;AAAIA,sBAAAA,GAAEihF,kBAAkB/0E,IAAED,EAAAA;oBAAAA,SAASyhB,IAAN;oBAAMA;AAAI;gBAAA;cAAA;AAAO3tB,cAAAA,KAAEA,GAAEqoM;YAAAA;QAAAA;AACpd,iBAASglB,GAAGnhN,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEiM,GAAEkhN;AAAU,mBAAOntN,MAAGA,GAAE8kI,OAAO54H,EAAAA,GAAGA,KAAEkzM,GAAAA,GAAKnzM,GAAEwgM,eAAaxgM,GAAEugM,iBAAezsM,IAAE4lC,OAAI15B,OAAI45B,KAAE9lC,QAAKA,OAAI,MAAI6lC,MAAG,MAAIA,OAAM,WAAFC,QAAcA,MAAG,MAAIP,GAAAA,IAAI6kL,KAAGsC,GAAGxgN,IAAE,CAAA,IAAG8+M,MAAIhrN,KAAGmsN,GAAGjgN,IAAEC,EAAAA;QAAAA;AAAG,iBAASm+M,GAAGp+M,IAAEC,IAAAA;AAAG,cAAInM,KAAEkM,GAAE26L;AAAU,mBAAO7mM,MAAGA,GAAE+kI,OAAO54H,EAAAA,GAAO,OAAJA,KAAE,OAAmB,MAAO,KAAhBA,KAAED,GAAEpL,SAAeqL,KAAE,IAAE,MAAO,IAAFA,MAAKA,KAAE,OAAKuwM,GAAAA,IAAK,IAAE,KAAG,MAAImP,OAAKA,KAAGd,KAAuB,OAAnB5+M,KAAE6gM,GAAG,WAAA,CAAU6e,EAAAA,OAAY1/M,KAAE,YAAWnM,KAAEq/M,GAAAA,GAAe,UAAVnzM,KAAE+/M,GAAG//M,IAAEC,EAAAA,OAAc+gM,GAAGhhM,IAAEC,IAAEnM,EAAAA,GAAGmsN,GAAGjgN,IAAElM,EAAAA;QAAAA;AAUjZ,iBAASwuN,GAAGtiN,IAAEC,IAAEnM,IAAEC,IAAAA;AAAGyG,eAAK2yC,MAAIntC,IAAExF,KAAKxF,MAAIlB,IAAE0G,KAAKiiM,UAAQjiM,KAAKw5D,QAAMx5D,KAAK2hM,SAAO3hM,KAAKmgM,YAAUngM,KAAKE,OAAKF,KAAKm6M,cAAY,MAAKn6M,KAAKpB,QAAM,GAAEoB,KAAKtC,MAAI,MAAKsC,KAAKm7M,eAAa11M,IAAEzF,KAAK42B,eAAa52B,KAAK6hM,gBAAc7hM,KAAKy3M,cAAYz3M,KAAK26M,gBAAc,MAAK36M,KAAK5F,OAAKb,IAAEyG,KAAK+rH,QAAM,GAAE/rH,KAAK85M,aAAW95M,KAAKg6M,cAAYh6M,KAAK+5M,aAAW,MAAK/5M,KAAK+2M,aAAW/2M,KAAKk3M,QAAM,GAAEl3M,KAAK0hM,YAAU;QAAA;AAAK,iBAASuZ,GAAGz1M,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,iBAAO,IAAIuuN,GAAGtiN,IAAEC,IAAEnM,IAAEC,EAAAA;QAAAA;AAAG,iBAAS0lN,GAAGz5M,IAAAA;AAAiB,iBAAA,EAAA,EAAdA,KAAEA,GAAE3K,cAAAA,CAAuB2K,GAAEy1E;QAAAA;AAErd,iBAASg/H,GAAGz0M,IAAEC,IAAAA;AAAG,cAAInM,KAAEkM,GAAEk8L;AACuB,iBADb,SAAOpoM,OAAGA,KAAE2hN,GAAGz1M,GAAEmtC,KAAIltC,IAAED,GAAEhL,KAAIgL,GAAEpL,IAAAA,GAAQ+/M,cAAY30M,GAAE20M,aAAY7gN,GAAE4G,OAAKsF,GAAEtF,MAAK5G,GAAE6mM,YAAU36L,GAAE26L,WAAU7mM,GAAEooM,YAAUl8L,IAAEA,GAAEk8L,YAAUpoM,OAAIA,GAAE6hN,eAAa11M,IAAEnM,GAAE4G,OAAKsF,GAAEtF,MAAK5G,GAAEyyH,QAAM,GAAEzyH,GAAEygN,aAAW,MAAKzgN,GAAE0gN,cAAY,MAAK1gN,GAAEwgN,aAAW,OAAMxgN,GAAEy9M,aAAWvxM,GAAEuxM,YAAWz9M,GAAE49M,QAAM1xM,GAAE0xM,OAAM59M,GAAEkgE,QAAMh0D,GAAEg0D,OAAMlgE,GAAEqhN,gBAAcn1M,GAAEm1M,eAAcrhN,GAAEuoM,gBAAcr8L,GAAEq8L,eAAcvoM,GAAEm+M,cAAYjyM,GAAEiyM,aAAYhyM,KAAED,GAAEoxB,cAAat9B,GAAEs9B,eAAa,SAAOnxB,KAAE,OAAK,EAACyxM,OAAMzxM,GAAEyxM,OAAMD,cAAaxxM,GAAEwxM,aAAAA,GAC3e39M,GAAE2oM,UAAQz8L,GAAEy8L,SAAQ3oM,GAAEsF,QAAM4G,GAAE5G,OAAMtF,GAAEoE,MAAI8H,GAAE9H,KAAWpE;QAAAA;AACvD,iBAAS8gN,GAAG50M,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAEgsB,IAAAA;AAAG,cAAI2X,KAAE;AAAM,cAAJrlC,KAAEiM,IAAK,cAAA,OAAoBA;AAAEy5M,eAAGz5M,EAAAA,MAAKo5B,KAAE;mBAAW,YAAA,OAAkBp5B;AAAEo5B,YAAAA,KAAE;;AAAOp5B;AAAE,sBAAOA,IAAAA;gBAAG,KAAKizL;AAAG,yBAAO6hB,GAAGhhN,GAAEigE,UAASt+D,IAAEgsB,IAAExhB,EAAAA;gBAAG,KAAK4zL;AAAGz6J,kBAAAA,KAAE,GAAE3jC,MAAG;AAAG;gBAAM,KAAKy9L;AAAG95J,kBAAAA,KAAE,GAAE3jC,MAAG;AAAE;gBAAM,KAAK09L;AAAG,0BAAOnzL,KAAEy1M,GAAG,IAAG3hN,IAAEmM,IAAI,IAAFxK,EAAAA,GAAOk/M,cAAYxhB,IAAGnzL,GAAEtF,OAAKy4L,IAAGnzL,GAAE0xM,QAAMjwL,IAAEzhB;gBAAE,KAAKuzL;AAAG,0BAAOvzL,KAAEy1M,GAAG,IAAG3hN,IAAEmM,IAAExK,EAAAA,GAAKiF,OAAK64L,IAAGvzL,GAAE20M,cAAYphB,IAAGvzL,GAAE0xM,QAAMjwL,IAAEzhB;gBAAE,KAAKwzL;AAAG,0BAAOxzL,KAAEy1M,GAAG,IAAG3hN,IAAEmM,IAAExK,EAAAA,GAAKk/M,cAAYnhB,IAAGxzL,GAAE0xM,QAAMjwL,IAAEzhB;gBAAE,KAAK8zL;AAAG,yBAAOinB,GAAGjnN,IAAE2B,IAAEgsB,IAAExhB,EAAAA;gBAAG,KAAK8zL;AAAG,0BAAO/zL,KAAEy1M,GAAG,IAAG3hN,IAAEmM,IAAExK,EAAAA,GAAKk/M,cAAY5gB,IAAG/zL,GAAE0xM,QAAMjwL,IAAEzhB;gBAAE;AAAQ,sBAAG,YAAA,OAChfA,MAAG,SAAOA;AAAE,4BAAOA,GAAEmpK,UAAAA;sBAAU,KAAKiqB;AAAGh6J,wBAAAA,KAAE;AAAG,8BAAMp5B;sBAAE,KAAKqzL;AAAGj6J,wBAAAA,KAAE;AAAE,8BAAMp5B;sBAAE,KAAKszL;AAAGl6J,wBAAAA,KAAE;AAAG,8BAAMp5B;sBAAE,KAAKyzL;AAAGr6J,wBAAAA,KAAE;AAAG,8BAAMp5B;sBAAE,KAAK0zL;AAAGt6J,wBAAAA,KAAE,IAAGrlC,KAAE;AAAK,8BAAMiM;sBAAE,KAAK2zL;AAAGv6J,wBAAAA,KAAE;AAAG,8BAAMp5B;oBAAAA;AAAE,wBAAMkB,MAAMukB,GAAE,KAAI,QAAMzlB,KAAEA,KAAAA,OAASA,IAAE,EAAA,CAAA;cAAA;AAAuD,kBAAjDC,KAAEw1M,GAAGr8K,IAAEtlC,IAAEmM,IAAExK,EAAAA,GAAKk/M,cAAY30M,IAAEC,GAAEvF,OAAK3G,IAAEkM,GAAEyxM,QAAMjwL,IAASxhB;QAAAA;AAAE,iBAAS60M,GAAG90M,IAAEC,IAAEnM,IAAEC,IAAAA;AAA2B,kBAAxBiM,KAAEy1M,GAAG,GAAEz1M,IAAEjM,IAAEkM,EAAAA,GAAKyxM,QAAM59M,IAASkM;QAAAA;AAAE,iBAAS+6M,GAAG/6M,IAAEC,IAAEnM,IAAEC,IAAAA;AAA6C,kBAA1CiM,KAAEy1M,GAAG,IAAGz1M,IAAEjM,IAAEkM,EAAAA,GAAK00M,cAAY7gB,IAAG9zL,GAAE0xM,QAAM59M,IAASkM;QAAAA;AAAE,iBAAS00M,GAAG10M,IAAEC,IAAEnM,IAAAA;AAA8B,kBAA3BkM,KAAEy1M,GAAG,GAAEz1M,IAAE,MAAKC,EAAAA,GAAKyxM,QAAM59M,IAASkM;QAAAA;AAClc,iBAAS60M,GAAG70M,IAAEC,IAAEnM,IAAAA;AAA8J,kBAA3JmM,KAAEw1M,GAAG,GAAE,SAAOz1M,GAAE+zD,WAAS/zD,GAAE+zD,WAAS,CAAA,GAAG/zD,GAAEhL,KAAIiL,EAAAA,GAAKyxM,QAAM59M,IAAEmM,GAAE06L,YAAU,EAAC2D,eAAct+L,GAAEs+L,eAAcikB,iBAAgB,MAAK/nG,gBAAex6G,GAAEw6G,eAAAA,GAAuBv6G;QAAAA;AACrL,iBAASuiN,GAAGxiN,IAAEC,IAAEnM,IAAAA;AAAG0G,eAAK2yC,MAAIltC,IAAEzF,KAAK8jM,gBAAct+L,IAAExF,KAAKomN,eAAapmN,KAAK0mN,YAAU1mN,KAAKurC,UAAQvrC,KAAK+nN,kBAAgB,MAAK/nN,KAAKumN,gBAAAA,IAAiBvmN,KAAK6/M,iBAAe7/M,KAAK8X,UAAQ,MAAK9X,KAAK6jM,UAAQvqM,IAAE0G,KAAK0lN,eAAa,MAAK1lN,KAAK4lN,mBAAiB,GAAE5lN,KAAKymM,aAAWF,GAAG,CAAA,GAAGvmM,KAAK2lN,kBAAgBpf,GAAAA,EAAI,GAAGvmM,KAAKkmM,iBAAelmM,KAAKqmN,gBAAcrmN,KAAKk9M,mBAAiBl9M,KAAK8lM,eAAa9lM,KAAKgmM,cAAYhmM,KAAK+lM,iBAAe/lM,KAAK6lM,eAAa,GAAE7lM,KAAKmmM,gBAAcI,GAAG,CAAA,GAAGvmM,KAAKioN,kCAAgC;QAAA;AAC7e,iBAASC,GAAG1iN,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAE,IAAE0I,UAAU9D,UAAAA,WAAiB8D,UAAU,CAAA,IAAGA,UAAU,CAAA,IAAG;AAAK,iBAAM,EAAC0sK,UAAS6pB,IAAGh+L,KAAI,QAAMjB,KAAE,OAAK,KAAGA,IAAEggE,UAAS/zD,IAAEs+L,eAAcr+L,IAAEu6G,gBAAe1mH,GAAAA;QAAAA;AACxK,iBAAS6uN,GAAG3iN,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAI0B,KAAEwK,GAAE8lC,SAAQtkB,KAAE0xL,GAAAA,GAAK/5K,KAAEg6K,GAAG39M,EAAAA;AAAGuK;AAAE,gBAAGlM,IAAE;AAAqBmM,iBAAE;AAAC,oBAAGg8L,GAA1BnoM,KAAEA,GAAEo/M,eAAAA,MAA8Bp/M,MAAG,MAAIA,GAAEq5C;AAAI,wBAAMjsC,MAAMukB,GAAE,GAAA,CAAA;AAAM,oBAAI1iB,KAAEjP;AAAE,mBAAE;AAAC,0BAAOiP,GAAEoqC,KAAAA;oBAAK,KAAK;AAAEpqC,sBAAAA,KAAEA,GAAE43L,UAAUroL;AAAQ,4BAAMrS;oBAAE,KAAK;AAAE,0BAAGouM,GAAGtrM,GAAErI,IAAAA,GAAM;AAACqI,wBAAAA,KAAEA,GAAE43L,UAAUgU;AAA0C,8BAAM1uM;sBAAAA;kBAAAA;AAAG8C,kBAAAA,KAAEA,GAAEo5L;gBAAAA,SAAa,SAAOp5L;AAAG,sBAAM7B,MAAMukB,GAAE,GAAA,CAAA;cAAA;AAAO,kBAAG,MAAI3xB,GAAEq5C,KAAI;AAAC,oBAAIxyC,KAAE7G,GAAE4G;AAAK,oBAAG2zM,GAAG1zM,EAAAA,GAAG;AAAC7G,kBAAAA,KAAE06M,GAAG16M,IAAE6G,IAAEoI,EAAAA;AAAG,wBAAM/C;gBAAAA;cAAAA;AAAGlM,cAAAA,KAAEiP;YAAAA;AAAOjP,cAAAA,KAAEk6M;AACrW,iBADwW,SAAO/tM,GAAEqS,UAAQrS,GAAEqS,UAAQxe,KAAEmM,GAAEo6M,iBAAevmN,KAAEmM,KAAEsyM,GAAG9wL,IAAE2X,EAAAA,GAAKsC,UAAQ,EAAC2kE,SAAQrgG,GAAAA,GAAuB,UAApBjM,KAAAA,WAAWA,KAAE,OAAKA,QAC1ekM,GAAE+1E,WAASjiF,KAAG2+M,GAAGj9M,IAAEwK,EAAAA,GAAGozM,GAAG59M,IAAE2jC,IAAE3X,EAAAA,GAAU2X;QAAAA;AAAE,iBAASwpL,GAAG5iN,IAAAA;AAAe,cAAA,EAAZA,KAAEA,GAAE+lC,SAAciuB;AAAM,mBAAO;AAAK,kBAAOh0D,GAAEg0D,MAAM7mB,KAAAA;YAAK,KAAK;YAA2B;AAAQ,qBAAOntC,GAAEg0D,MAAM2mI;UAAAA;QAAAA;AAAW,iBAASkoB,GAAG7iN,IAAEC,IAAAA;AAAqB,cAAG,UAArBD,KAAEA,GAAEq8L,kBAA2B,SAAOr8L,GAAEs8L,YAAW;AAAC,gBAAIxoM,KAAEkM,GAAE06M;AAAU16M,YAAAA,GAAE06M,YAAU,MAAI5mN,MAAGA,KAAEmM,KAAEnM,KAAEmM;UAAAA;QAAAA;AAAG,iBAASwrD,GAAGzrD,IAAEC,IAAAA;AAAG4iN,aAAG7iN,IAAEC,EAAAA,IAAID,KAAEA,GAAEk8L,cAAY2mB,GAAG7iN,IAAEC,EAAAA;QAAAA;AACxV,iBAAS6iN,GAAG9iN,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAE,QAAMD,MAAG,QAAMA,GAAEivN,oBAAkBjvN,GAAEivN,iBAAiBC,kBAAgB;AAAiK,cAA5JlvN,KAAE,IAAI0uN,GAAGxiN,IAAEC,IAAE,QAAMnM,MAAAA,SAAQA,GAAEuqM,OAAAA,GAASp+L,KAAEw1M,GAAG,GAAE,MAAK,MAAK,MAAIx1M,KAAE,IAAE,MAAIA,KAAE,IAAE,CAAA,GAAGnM,GAAEiyC,UAAQ9lC,IAAEA,GAAE06L,YAAU7mM,IAAEk+M,GAAG/xM,EAAAA,GAAGD,GAAE2sM,EAAAA,IAAI74M,GAAEiyC,SAAQumK,GAAG,MAAItsM,GAAEqE,WAASrE,GAAE0+G,aAAW1+G,EAAAA,GAAMjM;AAAE,iBAAIiM,KAAE,GAAEA,KAAEjM,GAAE4E,QAAOqH,MAAI;AAAQ,kBAAIvK,MAAXwK,KAAElM,GAAEiM,EAAAA,GAAWw3M;AAAY/hN,cAAAA,KAAEA,GAAEwK,GAAEw3M,OAAAA,GAAS,QAAM3jN,GAAE2uN,kCAAgC3uN,GAAE2uN,kCAAgC,CAACxiN,IAAExK,EAAAA,IAAG3B,GAAE2uN,gCAAgCr4M,KAAKnK,IAAExK,EAAAA;YAAAA;AAAG+E,eAAKyoN,gBAAcnvN;QAAAA;AAC/R,iBAASszD,GAAGpnD,IAAAA;AAAG,iBAAA,EAAA,CAASA,MAAG,MAAIA,GAAEqE,YAAU,MAAIrE,GAAEqE,YAAU,OAAKrE,GAAEqE,aAAW,MAAIrE,GAAEqE,YAAU,mCAAiCrE,GAAE22L;QAAAA;AAEvT,iBAAS1vI,GAAGjnD,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,cAAIgsB,KAAE3tB,GAAEkqN;AAAoB,cAAGv8L,IAAE;AAAC,gBAAI2X,KAAE3X,GAAEwhM;AAAc,gBAAG,cAAA,OAAoBxtN,IAAE;AAAC,kBAAIsN,KAAEtN;AAAEA,cAAAA,KAAE,WAAA;AAAW,oBAAIuK,KAAE4iN,GAAGxpL,EAAAA;AAAGr2B,gBAAAA,GAAEnP,KAAKoM,EAAAA;cAAAA;YAAAA;AAAI2iN,eAAG1iN,IAAEm5B,IAAEp5B,IAAEvK,EAAAA;UAAAA,OAAO;AAAmD,gBAAlDgsB,KAAE3tB,GAAEkqN,sBAD1K,SAAYh+M,IAAEC,IAAAA;AAA0H,kBAAvHA,OAA2DA,KAAAA,EAAAA,EAAvDA,KAAED,KAAE,MAAIA,GAAEqE,WAASrE,GAAEwE,kBAAgBxE,GAAE6hH,aAAW,SAAa,MAAI5hH,GAAEoE,YAAAA,CAAWpE,GAAEw4G,aAAa,gBAAA,KAAA,CAAwBx4G;AAAE,yBAAQnM,IAAEA,KAAEkM,GAAE02L;AAAW12L,kBAAAA,GAAE2+G,YAAY7qH,EAAAA;AAAG,qBAAO,IAAIgvN,GAAG9iN,IAAE,GAAEC,KAAE,EAACo+L,SAAAA,KAAQ,IAAA,MAAI;YAAA,EACxBvqM,IAAEC,EAAAA,GAAGqlC,KAAE3X,GAAEwhM,eAAiB,cAAA,OAAoBxtN,IAAE;AAAC,kBAAIkF,KAAElF;AAAEA,cAAAA,KAAE,WAAA;AAAW,oBAAIuK,KAAE4iN,GAAGxpL,EAAAA;AAAGz+B,gBAAAA,GAAE/G,KAAKoM,EAAAA;cAAAA;YAAAA;AAAIihN,eAAG,WAAA;AAAW0B,iBAAG1iN,IAAEm5B,IAAEp5B,IAAEvK,EAAAA;YAAAA,CAAAA;UAAAA;AAAK,iBAAOmtN,GAAGxpL,EAAAA;QAAAA;AAGlG,iBAAS8pL,GAAGljN,IAAEC,IAAAA;AAAG,cAAInM,KAAE,IAAE2I,UAAU9D,UAAAA,WAAiB8D,UAAU,CAAA,IAAGA,UAAU,CAAA,IAAG;AAAK,cAAA,CAAI2qD,GAAGnnD,EAAAA;AAAG,kBAAMiB,MAAMukB,GAAE,GAAA,CAAA;AAAM,iBAAOi9L,GAAG1iN,IAAEC,IAAE,MAAKnM,EAAAA;QAAAA;AA1BtWmrN,aAAG,SAASj/M,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAEkM,GAAEyxM;AAAM,cAAG,SAAO1xM;AAAE,gBAAGA,GAAEm1M,kBAAgBl1M,GAAE01M,gBAAcrwL,GAAEygB;AAAQ4rK,mBAAAA;iBAAW;AAAA,kBAAG,MAAK79M,KAAEC,KAAoC;AAAO,wBAAN49M,KAAAA,OAAa1xM,GAAEktC,KAAAA;kBAAK,KAAK;AAAEitK,uBAAGn6M,EAAAA,GAAG81M,GAAAA;AAAK;kBAAM,KAAK;AAAE3gD,uBAAGn1J,EAAAA;AAAG;kBAAM,KAAK;AAAEouM,uBAAGpuM,GAAEvF,IAAAA,KAAOg0M,GAAGzuM,EAAAA;AAAG;kBAAM,KAAK;AAAEi1J,uBAAGj1J,IAAEA,GAAE06L,UAAU2D,aAAAA;AAAe;kBAAM,KAAK;AAAGvqM,oBAAAA,KAAEkM,GAAEk1M,cAAczgN;AAAM,wBAAIe,KAAEwK,GAAEvF,KAAKg5B;AAAS6F,uBAAEy3K,IAAGv7M,GAAEi5I,aAAAA,GAAej5I,GAAEi5I,gBAAc36I;AAAE;kBAAM,KAAK;AAAG,wBAAG,SAAOkM,GAAEo8L;AAAe,6BAAG,MAAKvoM,KAAEmM,GAAE+zD,MAAMu9I,cAAmBoJ,GAAG36M,IAAEC,IAAEnM,EAAAA,KAAGylC,GAAEpW,IAAY,IAAVA,GAAE4iB,OAAAA,GAA8B,UAAnB9lC,KAAEqmE,GAAGtmE,IAAEC,IAAEnM,EAAAA,KAC/emM,GAAEw8L,UAAQ;AAAKljK,uBAAEpW,IAAY,IAAVA,GAAE4iB,OAAAA;AAAW;kBAAM,KAAK;AAA0B,wBAAvBhyC,KAAE,MAAKD,KAAEmM,GAAEsxM,aAAe,MAAa,KAARvxM,GAAEumH,QAAU;AAAC,0BAAGxyH;AAAE,+BAAOynN,GAAGx7M,IAAEC,IAAEnM,EAAAA;AAAGmM,sBAAAA,GAAEsmH,SAAO;oBAAA;AAA+F,wBAA1E,UAAlB9wH,KAAEwK,GAAEo8L,mBAAyB5mM,GAAE4lN,YAAU,MAAK5lN,GAAE2Z,OAAK,MAAK3Z,GAAE6+M,aAAW,OAAM/6K,GAAEpW,IAAEA,GAAE4iB,OAAAA,GAAYhyC;AAAE;AAAW,2BAAO;kBAAK,KAAK;kBAAG,KAAK;AAAG,2BAAOkM,GAAEyxM,QAAM,GAAEh6D,GAAG13I,IAAEC,IAAEnM,EAAAA;gBAAAA;AAAG,uBAAOwyE,GAAGtmE,IAAEC,IAAEnM,EAAAA;cAAAA;AAD3L69M,mBAAG,MAAa,QAAR3xM,GAAEumH;YAAAA;;AACyLorF,iBAAAA;AAAgB,kBAAV1xM,GAAEyxM,QAAM,GAASzxM,GAAEktC,KAAAA;YAAK,KAAK;AAA+I,kBAA7Ip5C,KAAEkM,GAAEvF,MAAK,SAAOsF,OAAIA,GAAEk8L,YAAU,MAAKj8L,GAAEi8L,YAAU,MAAKj8L,GAAEsmH,SAAO,IAAGvmH,KAAEC,GAAE01M,cAAalgN,KAAEy4M,GAAGjuM,IAAEioB,GAAE6d,OAAAA,GAASyrK,GAAGvxM,IAAEnM,EAAAA,GAAG2B,KAAE+9J,GAAG,MAAKvzJ,IAAElM,IAAEiM,IAAEvK,IAAE3B,EAAAA,GAAGmM,GAAEsmH,SAAO,GAAK,YAAA,OACre9wH,MAAG,SAAOA,MAAG,cAAA,OAAoBA,GAAEoqF,UAAAA,WAAiBpqF,GAAE0zK,UAAS;AAAiD,oBAAhDlpK,GAAEktC,MAAI,GAAEltC,GAAEo8L,gBAAc,MAAKp8L,GAAEgyM,cAAY,MAAQ5D,GAAGt6M,EAAAA,GAAG;AAAC,sBAAI0tB,KAAAA;AAAKitL,qBAAGzuM,EAAAA;gBAAAA;AAAQwhB,kBAAAA,KAAAA;AAAKxhB,gBAAAA,GAAEo8L,gBAAc,SAAO5mM,GAAE2+C,SAAAA,WAAgB3+C,GAAE2+C,QAAM3+C,GAAE2+C,QAAM,MAAK49J,GAAG/xM,EAAAA;AAAG,oBAAIm5B,KAAErlC,GAAEyrJ;AAAyB,8BAAA,OAAoBpmH,MAAG45K,GAAG/yM,IAAElM,IAAEqlC,IAAEp5B,EAAAA,GAAGvK,GAAEkQ,UAAQstM,IAAGhzM,GAAE06L,YAAUllM,IAAEA,GAAEy9M,kBAAgBjzM,IAAE2zM,GAAG3zM,IAAElM,IAAEiM,IAAElM,EAAAA,GAAGmM,KAAEk6M,GAAG,MAAKl6M,IAAElM,IAAAA,MAAK0tB,IAAE3tB,EAAAA;cAAAA;AAAQmM,gBAAAA,GAAEktC,MAAI,GAAEosK,GAAG,MAAKt5M,IAAExK,IAAE3B,EAAAA,GAAGmM,KAAEA,GAAE+zD;AAAM,qBAAO/zD;YAAE,KAAK;AAAGxK,cAAAA,KAAEwK,GAAE00M;AAAY30M,iBAAE;AAChX,wBADiX,SAAOA,OAAIA,GAAEk8L,YAAU,MAAKj8L,GAAEi8L,YAAU,MAAKj8L,GAAEsmH,SAAO,IACnfvmH,KAAEC,GAAE01M,cAAuBlgN,MAAVgsB,KAAEhsB,GAAE0hL,OAAU1hL,GAAEyhL,QAAAA,GAAUj3K,GAAEvF,OAAKjF,IAAEgsB,KAAExhB,GAAEktC,MAOxD,SAAYntC,IAAAA;AAAG,sBAAG,cAAA,OAAoBA;AAAE,2BAAOy5M,GAAGz5M,EAAAA,IAAG,IAAE;AAAE,sBAAG,QAASA,IAAY;AAAc,yBAAbA,KAAEA,GAAEmpK,cAAgBmqB;AAAG,6BAAO;AAAG,wBAAGtzL,OAAIyzL;AAAG,6BAAO;kBAAA;AAAG,yBAAO;gBAAA,EAP/Eh+L,EAAAA,GAAGuK,KAAE+wM,GAAGt7M,IAAEuK,EAAAA,GAAUyhB,IAAAA;kBAAG,KAAK;AAAExhB,oBAAAA,KAAE05M,GAAG,MAAK15M,IAAExK,IAAEuK,IAAElM,EAAAA;AAAG,0BAAMkM;kBAAE,KAAK;AAAEC,oBAAAA,KAAE85M,GAAG,MAAK95M,IAAExK,IAAEuK,IAAElM,EAAAA;AAAG,0BAAMkM;kBAAE,KAAK;AAAGC,oBAAAA,KAAEu5M,GAAG,MAAKv5M,IAAExK,IAAEuK,IAAElM,EAAAA;AAAG,0BAAMkM;kBAAE,KAAK;AAAGC,oBAAAA,KAAEpH,GAAG,MAAKoH,IAAExK,IAAEs7M,GAAGt7M,GAAEiF,MAAKsF,EAAAA,GAAGjM,IAAED,EAAAA;AAAG,0BAAMkM;gBAAAA;AAAE,sBAAMkB,MAAMukB,GAAE,KAAIhwB,IAAE,EAAA,CAAA;cAAA;AAAM,qBAAOwK;YAAE,KAAK;AAAE,qBAAOlM,KAAEkM,GAAEvF,MAAKjF,KAAEwK,GAAE01M,cAA2CgE,GAAG35M,IAAEC,IAAElM,IAArC0B,KAAEwK,GAAE00M,gBAAc5gN,KAAE0B,KAAEs7M,GAAGh9M,IAAE0B,EAAAA,GAAc3B,EAAAA;YAAG,KAAK;AAAE,qBAAOC,KAAEkM,GAAEvF,MAAKjF,KAAEwK,GAAE01M,cAA2CoE,GAAG/5M,IAAEC,IAAElM,IAArC0B,KAAEwK,GAAE00M,gBAAc5gN,KAAE0B,KAAEs7M,GAAGh9M,IAAE0B,EAAAA,GAAc3B,EAAAA;YAAG,KAAK;AAAwB,kBAAtBsmN,GAAGn6M,EAAAA,GAAGlM,KAAEkM,GAAEgyM,aAAe,SAAOjyM,MAAG,SAAOjM;AAAE,sBAAMmN,MAAMukB,GAAE,GAAA,CAAA;AAC3Y,kBAA9G1xB,KAAEkM,GAAE01M,cAA+BlgN,KAAE,UAApBA,KAAEwK,GAAEo8L,iBAAyB5mM,GAAE4qG,UAAQ,MAAKiyG,GAAGtyM,IAAEC,EAAAA,GAAG2yM,GAAG3yM,IAAElM,IAAE,MAAKD,EAAAA,IAAGC,KAAEkM,GAAEo8L,cAAch8F,aAAe5qG;AAAEsgN,mBAAAA,GAAK91M,KAAEqmE,GAAGtmE,IAAEC,IAAEnM,EAAAA;mBAAO;AAAuF,qBAArE2tB,MAAjBhsB,KAAEwK,GAAE06L,WAAiB0D,aAAQiX,KAAGjI,GAAGptM,GAAE06L,UAAU2D,cAAcz8E,UAAAA,GAAYwzF,KAAGp1M,IAAEwhB,KAAE8zL,KAAAA,OAAS9zL,IAAE;AAAqC,sBAAG,SAAvCzhB,KAAEvK,GAAEgtN;AAA2C,yBAAIhtN,KAAE,GAAEA,KAAEuK,GAAErH,QAAOlD,MAAG;AAAA,uBAAEgsB,KAAEzhB,GAAEvK,EAAAA,GAAKygN,gCAA8Bl2M,GAAEvK,KAAE,CAAA,GAAGugN,GAAG5rM,KAAKqX,EAAAA;AAAoB,uBAAjB3tB,KAAEkhN,GAAG/0M,IAAE,MAAKlM,IAAED,EAAAA,GAAOmM,GAAE+zD,QAAMlgE,IAAEA;AAAGA,oBAAAA,GAAEyyH,QAAAA,KAAMzyH,GAAEyyH,QAAS,MAAKzyH,KAAEA,GAAE2oM;gBAAAA;AAAa8c,qBAAGv5M,IAAEC,IAAElM,IAAED,EAAAA,GAAGiiN,GAAAA;AAAK91M,gBAAAA,KAAEA,GAAE+zD;cAAAA;AAAM,qBAAO/zD;YAAE,KAAK;AAAE,qBAAOm1J,GAAGn1J,EAAAA,GAAG,SAAOD,MACnf41M,GAAG31M,EAAAA,GAAGlM,KAAEkM,GAAEvF,MAAKjF,KAAEwK,GAAE01M,cAAal0L,KAAE,SAAOzhB,KAAEA,GAAEm1M,gBAAc,MAAK/7K,KAAE3jC,GAAEs+D,UAASm5I,GAAGn5M,IAAE0B,EAAAA,IAAG2jC,KAAE,OAAK,SAAO3X,MAAGyrL,GAAGn5M,IAAE0tB,EAAAA,MAAKxhB,GAAEsmH,SAAO,KAAIuzF,GAAG95M,IAAEC,EAAAA,GAAGs5M,GAAGv5M,IAAEC,IAAEm5B,IAAEtlC,EAAAA,GAAGmM,GAAE+zD;YAAM,KAAK;AAAE,qBAAO,SAAOh0D,MAAG41M,GAAG31M,EAAAA,GAAG;YAAK,KAAK;AAAG,qBAAO06M,GAAG36M,IAAEC,IAAEnM,EAAAA;YAAG,KAAK;AAAE,qBAAOohK,GAAGj1J,IAAEA,GAAE06L,UAAU2D,aAAAA,GAAevqM,KAAEkM,GAAE01M,cAAa,SAAO31M,KAAEC,GAAE+zD,QAAM+gJ,GAAG90M,IAAE,MAAKlM,IAAED,EAAAA,IAAGylN,GAAGv5M,IAAEC,IAAElM,IAAED,EAAAA,GAAGmM,GAAE+zD;YAAM,KAAK;AAAG,qBAAOjgE,KAAEkM,GAAEvF,MAAKjF,KAAEwK,GAAE01M,cAA2C6D,GAAGx5M,IAAEC,IAAElM,IAArC0B,KAAEwK,GAAE00M,gBAAc5gN,KAAE0B,KAAEs7M,GAAGh9M,IAAE0B,EAAAA,GAAc3B,EAAAA;YAAG,KAAK;AAAE,qBAAOylN,GAAGv5M,IAAEC,IAAEA,GAAE01M,cAAa7hN,EAAAA,GAAGmM,GAAE+zD;YAAM,KAAK;YACtc,KAAK;AAAG,qBAAOulJ,GAAGv5M,IAAEC,IAAEA,GAAE01M,aAAa5hJ,UAASjgE,EAAAA,GAAGmM,GAAE+zD;YAAM,KAAK;AAAGh0D,iBAAE;AAACjM,gBAAAA,KAAEkM,GAAEvF,KAAKg5B,UAASj+B,KAAEwK,GAAE01M,cAAav8K,KAAEn5B,GAAEk1M,eAAc1zL,KAAEhsB,GAAEf;AAAM,oBAAIqO,KAAE9C,GAAEvF,KAAKg5B;AAAiD,oBAAxC6F,GAAEy3K,IAAGjuM,GAAE2rI,aAAAA,GAAe3rI,GAAE2rI,gBAAcjtH,IAAK,SAAO2X;AAAE,sBAAGr2B,KAAEq2B,GAAE1kC,OAA0G,OAApG+sB,KAAE2oL,GAAGrnM,IAAE0e,EAAAA,IAAG,IAAwF,KAArF,cAAA,OAAoB1tB,GAAE4iL,wBAAsB5iL,GAAE4iL,sBAAsB5zK,IAAE0e,EAAAA,IAAG,cAAA;AAAqB,wBAAG2X,GAAE26B,aAAWt+D,GAAEs+D,YAAAA,CAAWzuC,GAAEygB,SAAQ;AAAC9lC,sBAAAA,KAAEqmE,GAAGtmE,IAAEC,IAAEnM,EAAAA;AAAG,4BAAMkM;oBAAAA;kBAAAA;AAAQ,yBAAc,UAAV+C,KAAE9C,GAAE+zD,WAAiBjxD,GAAEo5L,SAAOl8L,KAAG,SAAO8C,MAAG;AAAC,0BAAIpI,KAAEoI,GAAEquB;AAAa,0BAAG,SAAOz2B,IAAE;AAACy+B,wBAAAA,KAAEr2B,GAAEixD;AAAM,iCAAQtgE,KACtfiH,GAAE82M,cAAa,SAAO/9M,MAAG;AAAC,8BAAGA,GAAE4e,YAAUve,MAAG,MAAKL,GAAEm+M,eAAapwL,KAAG;AAAC,kCAAI1e,GAAEoqC,SAAMz5C,KAAE6+M,GAAAA,IAAMz+M,KAAAA,CAAGA,EAAAA,GAAKq5C,MAAI,GAAEulK,GAAG3vM,IAAErP,EAAAA,IAAIqP,GAAE2uM,SAAO59M,IAAgB,UAAdJ,KAAEqP,GAAEm5L,eAAqBxoM,GAAEg+M,SAAO59M,KAAGw9M,GAAGvuM,GAAEo5L,QAAOroM,EAAAA,GAAG6G,GAAE+2M,SAAO59M;AAAE;0BAAA;AAAMJ,0BAAAA,KAAEA,GAAE6G;wBAAAA;sBAAAA;AAAW6+B,wBAAAA,KAAE,OAAKr2B,GAAEoqC,OAAIpqC,GAAErI,SAAOuF,GAAEvF,OAAK,OAAaqI,GAAEixD;AAAM,0BAAG,SAAO56B;AAAEA,wBAAAA,GAAE+iK,SAAOp5L;;AAAO,6BAAIq2B,KAAEr2B,IAAE,SAAOq2B,MAAG;AAAC,8BAAGA,OAAIn5B,IAAE;AAACm5B,4BAAAA,KAAE;AAAK;0BAAA;AAAkB,8BAAG,UAAfr2B,KAAEq2B,GAAEqjK,UAAoB;AAAC15L,4BAAAA,GAAEo5L,SAAO/iK,GAAE+iK,QAAO/iK,KAAEr2B;AAAE;0BAAA;AAAMq2B,0BAAAA,KAAEA,GAAE+iK;wBAAAA;AAAOp5L,sBAAAA,KAAEq2B;oBAAAA;AAAEmgL,mBAAGv5M,IAAEC,IAAExK,GAAEs+D,UAASjgE,EAAAA,GAAGmM,KAAEA,GAAE+zD;cAAAA;AAAM,qBAAO/zD;YAAE,KAAK;AAAE,qBAAOxK,KAAEwK,GAAEvF,MAAsB3G,MAAjB0tB,KAAExhB,GAAE01M,cAAiB5hJ,UAASy9I,GAAGvxM,IAAEnM,EAAAA,GACndC,KAAEA,GADod0B,KAAEm8M,GAAGn8M,IACpfgsB,GAAE0hM,qBAAAA,CAAAA,GAA8BljN,GAAEsmH,SAAO,GAAEgzF,GAAGv5M,IAAEC,IAAElM,IAAED,EAAAA,GAAGmM,GAAE+zD;YAAM,KAAK;AAAG,qBAAgBvyC,KAAEsvL,GAAXt7M,KAAEwK,GAAEvF,MAAYuF,GAAE01M,YAAAA,GAA6B98M,GAAGmH,IAAEC,IAAExK,IAAtBgsB,KAAEsvL,GAAGt7M,GAAEiF,MAAK+mB,EAAAA,GAAc1tB,IAAED,EAAAA;YAAG,KAAK;AAAG,qBAAO4lN,GAAG15M,IAAEC,IAAEA,GAAEvF,MAAKuF,GAAE01M,cAAa5hN,IAAED,EAAAA;YAAG,KAAK;AAAG,qBAAOC,KAAEkM,GAAEvF,MAAKjF,KAAEwK,GAAE01M,cAAalgN,KAAEwK,GAAE00M,gBAAc5gN,KAAE0B,KAAEs7M,GAAGh9M,IAAE0B,EAAAA,GAAG,SAAOuK,OAAIA,GAAEk8L,YAAU,MAAKj8L,GAAEi8L,YAAU,MAAKj8L,GAAEsmH,SAAO,IAAGtmH,GAAEktC,MAAI,GAAEkhK,GAAGt6M,EAAAA,KAAIiM,KAAAA,MAAK0uM,GAAGzuM,EAAAA,KAAID,KAAAA,OAAKwxM,GAAGvxM,IAAEnM,EAAAA,GAAG0/M,GAAGvzM,IAAElM,IAAE0B,EAAAA,GAAGm+M,GAAG3zM,IAAElM,IAAE0B,IAAE3B,EAAAA,GAAGqmN,GAAG,MAAKl6M,IAAElM,IAAAA,MAAKiM,IAAElM,EAAAA;YAAG,KAAK;AAAG,qBAAO0nN,GAAGx7M,IAAEC,IAAEnM,EAAAA;YAAG,KAAK;YAAoB,KAAK;AAAG,qBAAO4jJ,GAAG13I,IAAEC,IAAEnM,EAAAA;UAAAA;AAAG,gBAAMoN,MAAMukB,GAAE,KAAIxlB,GAAEktC,GAAAA,CAAAA;QAAAA,GAa/e21K,GAAGztN,UAAUwqF,SAAO,SAAS7/E,IAAAA;AAAG2iN,aAAG3iN,IAAExF,KAAKyoN,eAAc,MAAK,IAAA;QAAA,GAAOH,GAAGztN,UAAU+tN,UAAQ,WAAA;AAAW,cAAIpjN,KAAExF,KAAKyoN,eAAchjN,KAAED,GAAEs+L;AAAcqkB,aAAG,MAAK3iN,IAAE,MAAK,WAAA;AAAWC,YAAAA,GAAE0sM,EAAAA,IAAI;UAAA,CAAA;QAAA,GAEwJhQ,KAAG,SAAS38L,IAAAA;AAAM,iBAAKA,GAAEmtC,QAAgBkmK,GAAGrzM,IAAE,GAAVmzM,GAAAA,CAAAA,GAAe1nJ,GAAGzrD,IAAE,CAAA;QAAA,GAAK48L,KAAG,SAAS58L,IAAAA;AAAM,iBAAKA,GAAEmtC,QAAgBkmK,GAAGrzM,IAAE,UAAVmzM,GAAAA,CAAAA,GAAsB1nJ,GAAGzrD,IAAE,QAAA;QAAA,GACnc68L,KAAG,SAAS78L,IAAAA;AAAG,cAAG,OAAKA,GAAEmtC,KAAI;AAAC,gBAAIltC,KAAEkzM,GAAAA,GAAKr/M,KAAEs/M,GAAGpzM,EAAAA;AAAGqzM,eAAGrzM,IAAElM,IAAEmM,EAAAA,GAAGwrD,GAAGzrD,IAAElM,EAAAA;UAAAA;QAAAA,GAAKgpM,KAAG,SAAS98L,IAAEC,IAAAA;AAAG,iBAAOA,GAAAA;QAAAA,GAC7Fq6L,KAAG,SAASt6L,IAAEC,IAAEnM,IAAAA;AAAG,kBAAOmM,IAAAA;YAAG,KAAK;AAAyB,kBAAjBy1L,GAAG11L,IAAElM,EAAAA,GAAGmM,KAAEnM,GAAEE,MAAQ,YAAUF,GAAE4G,QAAM,QAAMuF,IAAE;AAAC,qBAAInM,KAAEkM,IAAElM,GAAE4qH;AAAY5qH,kBAAAA,KAAEA,GAAE4qH;AAAsF,qBAA3E5qH,KAAEA,GAAEuvN,iBAAiB,gBAAc/kM,KAAKC,UAAU,KAAGte,EAAAA,IAAG,iBAAA,GAAuBA,KAAE,GAAEA,KAAEnM,GAAE6E,QAAOsH,MAAI;AAAC,sBAAIlM,KAAED,GAAEmM,EAAAA;AAAG,sBAAGlM,OAAIiM,MAAGjM,GAAEi2D,SAAOhqD,GAAEgqD,MAAK;AAAC,wBAAIv0D,KAAEmlM,GAAG7mM,EAAAA;AAAG,wBAAA,CAAI0B;AAAE,4BAAMyL,MAAMukB,GAAE,EAAA,CAAA;AAAKuvK,oBAAAA,GAAGjhM,EAAAA,GAAG2hM,GAAG3hM,IAAE0B,EAAAA;kBAAAA;gBAAAA;cAAAA;AAAK;YAAM,KAAK;AAAWwgM,iBAAGj2L,IAAElM,EAAAA;AAAG;YAAM,KAAK;AAAmB,uBAAVmM,KAAEnM,GAAEY,UAAemhM,GAAG71L,IAAAA,CAAAA,CAAIlM,GAAE8nN,UAAS37M,IAAAA,KAAE;UAAA;QAAA,GAAM86L,KAAGimB,IAC9ZhmB,KAAG,SAASh7L,IAAEC,IAAEnM,IAAEC,IAAE0B,IAAAA;AAAG,cAAIgsB,KAAE2Y;AAAEA,gBAAG;AAAE,cAAA;AAAI,mBAAOs2K,GAAG,IAAG1wM,GAAE/K,KAAK,MAAKgL,IAAEnM,IAAEC,IAAE0B,EAAAA,CAAAA;UAAAA,UAAI;AAAY,mBAAJ2kC,KAAE3Y,QAAUu9L,GAAAA,GAAKpO,GAAAA;UAAAA;QAAAA,GAAQ3V,KAAG,WAAA;AAAW,gBAAO,KAAF7gK,QAhD/H,WAAA;AAAc,gBAAG,SAAOmlL,IAAG;AAAC,kBAAIv/M,KAAEu/M;AAAGA,mBAAG,MAAKv/M,GAAE+E,QAAQ,SAAS/E,IAAAA;AAAGA,gBAAAA,GAAEsgM,gBAAc,KAAGtgM,GAAEqgM,cAAa4f,GAAGjgN,IAAEq5B,GAAAA,CAAAA;cAAAA,CAAAA;YAAAA;AAAOu3K,eAAAA;UAAAA,EAgDsB0S,GAAKhD,GAAAA;QAAAA,GAAOplB,KAAG,SAASl7L,IAAEC,IAAAA;AAAG,cAAInM,KAAEsmC;AAAEA,gBAAG;AAAE,cAAA;AAAI,mBAAOp6B,GAAEC,EAAAA;UAAAA,UAAG;AAAY,mBAAJm6B,KAAEtmC,QAAUkrN,GAAAA,GAAKpO,GAAAA;UAAAA;QAAAA;AAA+I,YAAI2S,KAAG,EAACC,QAAO,CAAC9oB,IAAG4O,KAAG1O,IAAGC,IAAGC,IAAGwlB,IAAG,EAACv6K,SAAAA,MAAQ,CAAA,EAAA,GAAM09K,KAAG,EAACC,yBAAwBzlB,IAAG0lB,YAAW,GAAEhvK,SAAQ,UAASivK,qBAAoB,YAAA,GACveC,KAAG,EAACF,YAAWF,GAAGE,YAAWhvK,SAAQ8uK,GAAG9uK,SAAQivK,qBAAoBH,GAAGG,qBAAoBE,gBAAeL,GAAGK,gBAAeC,mBAAkB,MAAKC,6BAA4B,MAAKC,6BAA4B,MAAKC,eAAc,MAAKC,yBAAwB,MAAKC,yBAAwB,MAAKC,oBAAmB,MAAKC,gBAAe,MAAKC,sBAAqBzxB,GAAG5c,wBAAuBsuC,yBAAwB,SAASxkN,IAAAA;AAAW,iBAAO,UAAfA,KAAEw8L,GAAGx8L,EAAAA,KAAmB,OAAKA,GAAE26L;QAAAA,GAAW+oB,yBAAwBD,GAAGC,2BAR/I,WAAA;AAAc,iBAAO;QAAA,GAS7We,6BAA4B,MAAKC,iBAAgB,MAAKC,cAAa,MAAKC,mBAAkB,MAAKC,iBAAgB,KAAA;AAAM,YAAG,eAAA,OAAqB13H,gCAA+B;AAAC,cAAI23H,KAAG33H;AAA+B,cAAA,CAAI23H,GAAGh8H,cAAYg8H,GAAGC;AAAc,gBAAA;AAAIlW,mBAAGiW,GAAGE,OAAOnB,EAAAA,GAAI/U,KAAGgW;YAAAA,SAAS9kN,KAAN;YAAMA;QAAAA;AAAKzM,QAAAA,GAAQkjL,qDAAmD8sC,IAAGhwN,GAAQ0xN,eAAa/B,IACnX3vN,GAAQ2xN,cAAY,SAASllN,IAAAA;AAAG,cAAG,QAAMA;AAAE,mBAAO;AAAK,cAAG,MAAIA,GAAEqE;AAAS,mBAAOrE;AAAE,cAAIC,KAAED,GAAEkzM;AAAgB,cAAA,WAAYjzM,IAAE;AAAC,gBAAG,cAAA,OAAoBD,GAAE6/E;AAAO,oBAAM3+E,MAAMukB,GAAE,GAAA,CAAA;AAAM,kBAAMvkB,MAAMukB,GAAE,KAAItxB,OAAO0J,KAAKmC,EAAAA,CAAAA,CAAAA;UAAAA;AAA0C,iBAA5BA,KAAE,UAAVA,KAAEw8L,GAAGv8L,EAAAA,KAAc,OAAKD,GAAE26L;QAAAA,GAAoBpnM,GAAQ4xN,YAAU,SAASnlN,IAAEC,IAAAA;AAAG,cAAInM,KAAEsmC;AAAE,cAAG,MAAO,KAAFtmC;AAAM,mBAAOkM,GAAEC,EAAAA;AAAGm6B,gBAAG;AAAE,cAAA;AAAI,gBAAGp6B;AAAE,qBAAO0wM,GAAG,IAAG1wM,GAAE/K,KAAK,MAAKgL,EAAAA,CAAAA;UAAAA,UAAI;AAAQm6B,iBAAEtmC,IAAE88M,GAAAA;UAAAA;QAAAA,GAAOr9M,GAAQ8qM,UAAQ,SAASr+L,IAAEC,IAAEnM,IAAAA;AAAG,cAAA,CAAIszD,GAAGnnD,EAAAA;AAAG,kBAAMiB,MAAMukB,GAAE,GAAA,CAAA;AAAM,iBAAOwhC,GAAG,MAAKjnD,IAAEC,IAAAA,MAAKnM,EAAAA;QAAAA,GACndP,GAAQssF,SAAO,SAAS7/E,IAAEC,IAAEnM,IAAAA;AAAG,cAAA,CAAIszD,GAAGnnD,EAAAA;AAAG,kBAAMiB,MAAMukB,GAAE,GAAA,CAAA;AAAM,iBAAOwhC,GAAG,MAAKjnD,IAAEC,IAAAA,OAAKnM,EAAAA;QAAAA,GAAIP,GAAQ6xN,yBAAuB,SAASplN,IAAAA;AAAG,cAAA,CAAIonD,GAAGpnD,EAAAA;AAAG,kBAAMkB,MAAMukB,GAAE,EAAA,CAAA;AAAK,iBAAA,CAAA,CAAOzlB,GAAEg+M,wBAAqBiD,GAAG,WAAA;AAAWh6J,eAAG,MAAK,MAAKjnD,IAAAA,OAAK,WAAA;AAAWA,cAAAA,GAAEg+M,sBAAoB,MAAKh+M,GAAE2sM,EAAAA,IAAI;YAAA,CAAA;UAAA,CAAA,GAAA;QAAS,GAAQp5M,GAAQ8xN,0BAAwBrE,IAAGztN,GAAQ+xN,wBAAsB,SAAStlN,IAAEC,IAAAA;AAAG,iBAAOijN,GAAGljN,IAAEC,IAAE,IAAExD,UAAU9D,UAAAA,WAAiB8D,UAAU,CAAA,IAAGA,UAAU,CAAA,IAAG,IAAA;QAAA,GAC9alJ,GAAQgyN,sCAAoC,SAASvlN,IAAEC,IAAEnM,IAAEC,IAAAA;AAAG,cAAA,CAAIqzD,GAAGtzD,EAAAA;AAAG,kBAAMoN,MAAMukB,GAAE,GAAA,CAAA;AAAM,cAAG,QAAMzlB,MAAAA,WAAYA,GAAEkzM;AAAgB,kBAAMhyM,MAAMukB,GAAE,EAAA,CAAA;AAAK,iBAAOwhC,GAAGjnD,IAAEC,IAAEnM,IAAAA,OAAKC,EAAAA;QAAAA,GAAIR,GAAQohD,UAAQ;MAAA,GAAA,SAAAl/C,IAAAd,IAAAO,IAAA;AAAA;ACrS3L1B,QAAAA,GAAOD,UAAU2B,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACKd,YAAIusB,IAAE2X,IAAEr2B,IAAEpI;AAAE,YAAG,YAAA,OAAkB6qN,eAAa,cAAA,OAAoBA,YAAY7sD,KAAI;AAAC,cAAIjlK,KAAE8xN;AAAYjyN,UAAAA,GAAQ2sM,eAAa,WAAA;AAAW,mBAAOxsM,GAAEilK,IAAAA;UAAAA;QAAAA,OAAW;AAAC,cAAIpjK,KAAE8wB,MAAKwE,KAAEt1B,GAAEojK,IAAAA;AAAMplK,UAAAA,GAAQ2sM,eAAa,WAAA;AAAW,mBAAO3qM,GAAEojK,IAAAA,IAAM9tI;UAAAA;QAAAA;AAC3O,YAAG,eAAA,OAAqBmF,UAAQ,cAAA,OAAoBqoI,gBAAe;AAAC,cAAI1jK,KAAE,MAAK6sB,KAAE,MAAKsB,KAAE,WAAA;AAAW,gBAAG,SAAOnuB;AAAE,kBAAA;AAAI,oBAAIqL,KAAEzM,GAAQ2sM,aAAAA;AAAevrM,gBAAAA,GAAAA,MAAKqL,EAAAA,GAAGrL,KAAE;cAAA,SAAWsL,IAAN;AAAS,sBAAM0sE,WAAW7pD,IAAE,CAAA,GAAG7iB;cAAAA;UAAAA;AAAKwhB,UAAAA,KAAE,SAASzhB,IAAAA;AAAG,qBAAOrL,KAAEg4E,WAAWlrD,IAAE,GAAEzhB,EAAAA,KAAIrL,KAAEqL,IAAE2sE,WAAW7pD,IAAE,CAAA;UAAA,GAAKsW,KAAE,SAASp5B,IAAEC,IAAAA;AAAGuhB,YAAAA,KAAEmrD,WAAW3sE,IAAEC,EAAAA;UAAAA,GAAI8C,KAAE,WAAA;AAAW6pE,yBAAaprD,EAAAA;UAAAA,GAAIjuB,GAAQ67M,uBAAqB,WAAA;AAAW,mBAAA;UAAM,GAAIz0M,KAAEpH,GAAQkyN,0BAAwB,WAAA;UAAA;QAAA,OAAiB;AAAC,cAAI/6M,KAAEslB,OAAO28C,YAAWlnD,KAAEuK,OAAO48C;AAAa,cAAG,eAAA,OAAqBrpD,SAAQ;AAAC,gBAAIkH,KAC7fuF,OAAO01L;AAAqB,0BAAA,OAAoB11L,OAAO21L,yBAAuBpiM,QAAQtiB,MAAM,oJAAA,GAAsJ,cAAA,OAAoBwpB,MAAGlH,QAAQtiB,MAAM,mJAAA;UAAA;AAAqJ,cAAImhB,KAAAA,OAAKoI,KAAE,MAAK3H,KAAAA,IAAKwH,KAAE,GAAEpI,KAAE;AAAE1uB,UAAAA,GAAQ67M,uBAAqB,WAAA;AAAW,mBAAO77M,GAAQ2sM,aAAAA,KAChgBj+K;UAAAA,GAAGtnB,KAAE,WAAA;UAAA,GAAapH,GAAQkyN,0BAAwB,SAASzlN,IAAAA;AAAG,gBAAEA,MAAG,MAAIA,KAAEujB,QAAQtiB,MAAM,iHAAA,IAAmHopB,KAAE,IAAErqB,KAAEvH,KAAKgK,MAAM,MAAIzC,EAAAA,IAAG;UAAA;AAAG,cAAIy5B,KAAE,IAAI4+H,kBAAep+H,KAAER,GAAEm/H;AAAMn/H,UAAAA,GAAEo/H,MAAMC,YAAU,WAAA;AAAW,gBAAG,SAAOtuI,IAAE;AAAC,kBAAIxqB,KAAEzM,GAAQ2sM,aAAAA;AAAej+K,cAAAA,KAAEjiB,KAAEqqB;AAAE,kBAAA;AAAIG,gBAAAA,GAAAA,MAAKxqB,EAAAA,IAAGi6B,GAAEy+H,YAAY,IAAA,KAAOt2I,KAAAA,OAAKoI,KAAE;cAAA,SAAYvqB,IAAN;AAAS,sBAAMg6B,GAAEy+H,YAAY,IAAA,GAAMz4J;cAAAA;YAAAA;AAASmiB,cAAAA,KAAAA;UAAE,GAAIX,KAAE,SAASzhB,IAAAA;AAAGwqB,YAAAA,KAAExqB,IAAEoiB,OAAIA,KAAAA,MAAK6X,GAAEy+H,YAAY,IAAA;UAAA,GAAQt/H,KAAE,SAASp5B,IAAEC,IAAAA;AAAG4iB,YAAAA,KACtfnY,GAAE,WAAA;AAAW1K,cAAAA,GAAEzM,GAAQ2sM,aAAAA,CAAAA;YAAAA,GAAiBjgM,EAAAA;UAAAA,GAAI8C,KAAE,WAAA;AAAW0iB,YAAAA,GAAE5C,EAAAA,GAAGA,KAAAA;UAAG;QAAA;AAAG,iBAASgX,GAAE75B,IAAEC,IAAAA;AAAG,cAAInM,KAAEkM,GAAErH;AAAOqH,UAAAA,GAAEoK,KAAKnK,EAAAA;AAAGD;AAAE,uBAAO;AAAC,kBAAIjM,KAAED,KAAE,MAAI,GAAE2B,KAAEuK,GAAEjM,EAAAA;AAAG,kBAAA,EAAA,WAAY0B,MAAG,IAAE8jC,GAAE9jC,IAAEwK,EAAAA;AAA0B,sBAAMD;AAA7BA,cAAAA,GAAEjM,EAAAA,IAAGkM,IAAED,GAAElM,EAAAA,IAAG2B,IAAE3B,KAAEC;YAAAA;QAAAA;AAAgB,iBAASgmC,GAAE/5B,IAAAA;AAAU,iBAAA,YAAPA,KAAEA,GAAE,CAAA,KAAqB,OAAKA;QAAAA;AAChP,iBAASg6B,GAAEh6B,IAAAA;AAAG,cAAIC,KAAED,GAAE,CAAA;AAAG,cAAA,WAAYC,IAAE;AAAC,gBAAInM,KAAEkM,GAAE0L,IAAAA;AAAM,gBAAG5X,OAAImM,IAAE;AAACD,cAAAA,GAAE,CAAA,IAAGlM;AAAEkM;AAAE,yBAAQjM,KAAE,GAAE0B,KAAEuK,GAAErH,QAAO5E,KAAE0B,MAAG;AAAC,sBAAI5B,KAAE,KAAGE,KAAE,KAAG,GAAEmB,KAAE8K,GAAEnM,EAAAA,GAAG+G,KAAE/G,KAAE,GAAEU,KAAEyL,GAAEpF,EAAAA;AAAG,sBAAA,WAAY1F,MAAG,IAAEqkC,GAAErkC,IAAEpB,EAAAA;AAAAA,+BAAYS,MAAG,IAAEglC,GAAEhlC,IAAEW,EAAAA,KAAI8K,GAAEjM,EAAAA,IAAGQ,IAAEyL,GAAEpF,EAAAA,IAAG9G,IAAEC,KAAE6G,OAAIoF,GAAEjM,EAAAA,IAAGmB,IAAE8K,GAAEnM,EAAAA,IAAGC,IAAEC,KAAEF;uBAAQ;AAAA,wBAAA,EAAA,WAAYU,MAAG,IAAEglC,GAAEhlC,IAAET,EAAAA;AAA0B,4BAAMkM;AAA7BA,oBAAAA,GAAEjM,EAAAA,IAAGQ,IAAEyL,GAAEpF,EAAAA,IAAG9G,IAAEC,KAAE6G;kBAAAA;gBAAAA;YAAAA;AAAgB,mBAAOqF;UAAAA;AAAE,iBAAO;QAAA;AAAK,iBAASs5B,GAAEv5B,IAAEC,IAAAA;AAAG,cAAInM,KAAEkM,GAAE4lN,YAAU3lN,GAAE2lN;AAAU,iBAAO,MAAI9xN,KAAEA,KAAEkM,GAAEgsB,KAAG/rB,GAAE+rB;QAAAA;AAAG,YAAIwN,KAAE,CAAA,GAAGtR,KAAE,CAAA,GAAG5C,KAAE,GAAE+T,KAAE,MAAKlW,KAAE,GAAE+W,KAAAA,OAAKyqD,KAAAA,OAAK3iE,KAAAA;AAC/Z,iBAAS0G,EAAE1oB,IAAAA;AAAG,mBAAQC,KAAE85B,GAAE7R,EAAAA,GAAG,SAAOjoB,MAAG;AAAC,gBAAG,SAAOA,GAAE+1E;AAASh8C,cAAAA,GAAE9R,EAAAA;iBAAQ;AAAA,kBAAA,EAAGjoB,GAAEuhC,aAAWxhC;AAAgD;AAA9Cg6B,cAAAA,GAAE9R,EAAAA,GAAGjoB,GAAE2lN,YAAU3lN,GAAE4lN,gBAAehsL,GAAEL,IAAEv5B,EAAAA;YAAAA;AAAcA,YAAAA,KAAE85B,GAAE7R,EAAAA;UAAAA;QAAAA;AAAI,iBAASwR,GAAE15B,IAAAA;AAAa,cAAVgiB,KAAAA,OAAK0G,EAAE1oB,EAAAA,GAAAA,CAAO2kF;AAAE,gBAAG,SAAO5qD,GAAEP,EAAAA;AAAGmrD,cAAAA,KAAAA,MAAKljE,GAAEkY,EAAAA;iBAAO;AAAC,kBAAI15B,KAAE85B,GAAE7R,EAAAA;AAAG,uBAAOjoB,MAAGm5B,GAAEM,IAAEz5B,GAAEuhC,YAAUxhC,EAAAA;YAAAA;QAAAA;AACtP,iBAAS25B,GAAE35B,IAAEC,IAAAA;AAAG0kF,UAAAA,KAAAA,OAAK3iE,OAAIA,KAAAA,OAAKjf,GAAAA,IAAKm3B,KAAAA;AAAK,cAAIpmC,KAAEqvB;AAAE,cAAA;AAAS,iBAALuF,EAAEzoB,EAAAA,GAAOo5B,KAAEU,GAAEP,EAAAA,GAAG,SAAOH,OAAAA,EAAMA,GAAEwsL,iBAAe5lN,OAAID,MAAAA,CAAIzM,GAAQ67M,qBAAAA,MAAyB;AAAC,kBAAIr7M,KAAEslC,GAAE28C;AAAS,kBAAG,cAAA,OAAoBjiF,IAAE;AAACslC,gBAAAA,GAAE28C,WAAS,MAAK7yD,KAAEkW,GAAEysL;AAAc,oBAAIrwN,KAAE1B,GAAEslC,GAAEwsL,kBAAgB5lN,EAAAA;AAAGA,gBAAAA,KAAE1M,GAAQ2sM,aAAAA,GAAe,cAAA,OAAoBzqM,KAAE4jC,GAAE28C,WAASvgF,KAAE4jC,OAAIU,GAAEP,EAAAA,KAAIQ,GAAER,EAAAA,GAAG9Q,EAAEzoB,EAAAA;cAAAA;AAAQ+5B,gBAAAA,GAAER,EAAAA;AAAGH,cAAAA,KAAEU,GAAEP,EAAAA;YAAAA;AAAG,gBAAG,SAAOH;AAAE,kBAAIxlC,KAAAA;iBAAS;AAAC,kBAAIqB,KAAE6kC,GAAE7R,EAAAA;AAAG,uBAAOhzB,MAAGkkC,GAAEM,IAAExkC,GAAEssC,YAAUvhC,EAAAA,GAAGpM,KAAAA;YAAE;AAAG,mBAAOA;UAAAA,UAAE;AAAQwlC,YAAAA,KAAE,MAAKlW,KAAErvB,IAAEomC,KAAAA;UAAE;QAAA;AAAI,YAAIN,KAAEj/B;AAAEpH,QAAAA,GAAQ08M,wBAAsB,GACte18M,GAAQo8M,6BAA2B,GAAEp8M,GAAQw8M,uBAAqB,GAAEx8M,GAAQsrM,0BAAwB,GAAEtrM,GAAQwyN,qBAAmB,MAAKxyN,GAAQ+tM,gCAA8B,GAAE/tM,GAAQ27M,0BAAwB,SAASlvM,IAAAA;AAAGA,UAAAA,GAAEg2E,WAAS;QAAA,GAAMziF,GAAQyyN,6BAA2B,WAAA;AAAWrhI,UAAAA,MAAGzqD,OAAIyqD,KAAAA,MAAKljE,GAAEkY,EAAAA;QAAAA,GAAKpmC,GAAQk8M,mCAAiC,WAAA;AAAW,iBAAOtsL;QAAAA,GAAG5vB,GAAQ0yN,gCAA8B,WAAA;AAAW,iBAAOlsL,GAAEP,EAAAA;QAAAA,GACpajmC,GAAQ2yN,gBAAc,SAASlmN,IAAAA;AAAG,kBAAOmjB,IAAAA;YAAG,KAAK;YAAE,KAAK;YAAE,KAAK;AAAE,kBAAIljB,KAAE;AAAE;YAAM;AAAQA,cAAAA,KAAEkjB;UAAAA;AAAE,cAAIrvB,KAAEqvB;AAAEA,UAAAA,KAAEljB;AAAE,cAAA;AAAI,mBAAOD,GAAAA;UAAAA,UAAI;AAAQmjB,YAAAA,KAAErvB;UAAAA;QAAAA,GAAIP,GAAQ4yN,0BAAwB,WAAA;QAAA,GAAa5yN,GAAQ+7M,wBAAsB11K,IAAErmC,GAAQ4qM,2BAAyB,SAASn+L,IAAEC,IAAAA;AAAG,kBAAOD,IAAAA;YAAG,KAAK;YAAE,KAAK;YAAE,KAAK;YAAE,KAAK;YAAE,KAAK;AAAE;YAAM;AAAQA,cAAAA,KAAE;UAAA;AAAE,cAAIlM,KAAEqvB;AAAEA,UAAAA,KAAEnjB;AAAE,cAAA;AAAI,mBAAOC,GAAAA;UAAAA,UAAI;AAAQkjB,YAAAA,KAAErvB;UAAAA;QAAAA,GACpWP,GAAQqrM,4BAA0B,SAAS5+L,IAAEC,IAAEnM,IAAAA;AAAG,cAAIC,KAAER,GAAQ2sM,aAAAA;AAA8F,kBAA/E,YAAA,OAAkBpsM,MAAG,SAAOA,KAAaA,KAAE,YAAA,QAAZA,KAAEA,GAAE8rK,UAA6B,IAAE9rK,KAAEC,KAAED,KAAEC,KAAGD,KAAEC,IAASiM,IAAAA;YAAG,KAAK;AAAE,kBAAIvK,KAAAA;AAAK;YAAM,KAAK;AAAEA,cAAAA,KAAE;AAAI;YAAM,KAAK;AAAEA,cAAAA,KAAE;AAAW;YAAM,KAAK;AAAEA,cAAAA,KAAE;AAAI;YAAM;AAAQA,cAAAA,KAAE;UAAA;AAA2M,iBAAjMuK,KAAE,EAACgsB,IAAG1G,MAAI0wD,UAAS/1E,IAAE6lN,eAAc9lN,IAAEwhC,WAAU1tC,IAAE+xN,gBAAvDpwN,KAAE3B,KAAE2B,IAAoEmwN,WAAAA,GAAW,GAAG9xN,KAAEC,MAAGiM,GAAE4lN,YAAU9xN,IAAE+lC,GAAE3R,IAAEloB,EAAAA,GAAG,SAAO+5B,GAAEP,EAAAA,KAAIx5B,OAAI+5B,GAAE7R,EAAAA,MAAKlG,KAAEjf,GAAAA,IAAIif,KAAAA,MAAKoX,GAAEM,IAAE5lC,KAAEC,EAAAA,OAAMiM,GAAE4lN,YAAUnwN,IAAEokC,GAAEL,IAAEx5B,EAAAA,GAAG2kF,MAAGzqD,OAAIyqD,KAAAA,MAAKljE,GAAEkY,EAAAA,KAAY35B;QAAAA,GAC1dzM,GAAQ6yN,wBAAsB,SAASpmN,IAAAA;AAAG,cAAIC,KAAEkjB;AAAE,iBAAO,WAAA;AAAW,gBAAIrvB,KAAEqvB;AAAEA,YAAAA,KAAEljB;AAAE,gBAAA;AAAI,qBAAOD,GAAEoE,MAAM5J,MAAKiC,SAAAA;YAAAA,UAAW;AAAQ0mB,cAAAA,KAAErvB;YAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACV7H,YAAIuyN,KAAuBnxN,GAAQ,GAAA;AAEnC,iBAASoxN,KAAAA;QAAAA;AACT,iBAASC,KAAAA;QAAAA;AACTA,QAAAA,GAAuBC,oBAAoBF,IAE3C9yN,GAAOD,UAAU,WAAA;AACf,mBAASkzN,GAAKxmM,IAAOgV,IAAUC,IAAepM,IAAUqM,IAAcuxL,IAAAA;AACpE,gBAAIA,OAAWL,IAAf;AAIA,kBAAIzgM,KAAM,IAAI1kB,MACZ,iLAAA;AAKF,oBADA0kB,GAAI5xB,OAAO,uBACL4xB;YAAAA;UAAAA;AAGR,mBAAS+gM,KAAAA;AACP,mBAAOF;UAAAA;AAFTA,UAAAA,GAAKhyL,aAAagyL;AAMlB,cAAIG,KAAiB,EACnBlpN,OAAO+oN,IACPn3K,MAAMm3K,IACNp2L,MAAMo2L,IACNr7K,QAAQq7K,IACRtxN,QAAQsxN,IACRpjN,QAAQojN,IACRjkG,QAAQikG,IAERhtD,KAAKgtD,IACLI,SAASF,IACTtmH,SAASomH,IACT9R,aAAa8R,IACbn5K,YAAYq5K,IACZriN,MAAMmiN,IACNK,UAAUH,IACVh1I,OAAOg1I,IACPI,WAAWJ,IACXxwL,OAAOwwL,IACPK,OAAOL,IAEPM,gBAAgBV,IAChBC,mBAAmBF,GAAAA;AAKrB,iBAFAM,GAAetxG,YAAYsxG,IAEpBA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACnDTpzN,QAAAA,GAAOD,UAFoB;MAAA,GAAA,SAAAkC,IAAAd,IAAAO,IAAA;AAAA;ACAd,YAAI+K,KAAE,cAAA,OAAoBzL,UAAQA,OAAO60K,KAAIv1K,KAAEmM,KAAEzL,OAAO60K,IAAI,eAAA,IAAiB,OAAMt1K,KAAEkM,KAAEzL,OAAO60K,IAAI,cAAA,IAAgB,OAAM5zK,KAAEwK,KAAEzL,OAAO60K,IAAI,gBAAA,IAAkB,OAAM5nJ,KAAExhB,KAAEzL,OAAO60K,IAAI,mBAAA,IAAqB,OAAMjwI,KAAEn5B,KAAEzL,OAAO60K,IAAI,gBAAA,IAAkB,OAAMtmK,KAAE9C,KAAEzL,OAAO60K,IAAI,gBAAA,IAAkB,OAAM1uK,KAAEsF,KAAEzL,OAAO60K,IAAI,eAAA,IAAiB,OAAM31K,KAAEuM,KAAEzL,OAAO60K,IAAI,kBAAA,IAAoB,OAAMx1K,KAAEoM,KAAEzL,OAAO60K,IAAI,uBAAA,IAAyB,OAAMn0K,KAAE+K,KAAEzL,OAAO60K,IAAI,mBAAA,IAAqB,OAAM9zK,KAAE0K,KAAEzL,OAAO60K,IAAI,gBAAA,IAAkB,OAAMx+I,KAAE5qB,KACpfzL,OAAO60K,IAAI,qBAAA,IAAuB,OAAM90K,KAAE0L,KAAEzL,OAAO60K,IAAI,YAAA,IAAc,OAAM10K,KAAEsL,KAAEzL,OAAO60K,IAAI,YAAA,IAAc,OAAMzuK,KAAEqF,KAAEzL,OAAO60K,IAAI,aAAA,IAAe,OAAMvmJ,KAAE7iB,KAAEzL,OAAO60K,IAAI,mBAAA,IAAqB,OAAM3+J,KAAEzK,KAAEzL,OAAO60K,IAAI,iBAAA,IAAmB,OAAM5jJ,KAAExlB,KAAEzL,OAAO60K,IAAI,aAAA,IAAe;AAClQ,iBAAS5+I,GAAEzqB,IAAAA;AAAG,cAAG,YAAA,OAAkBA,MAAG,SAAOA,IAAE;AAAC,gBAAIwhB,KAAExhB,GAAEmpK;AAAS,oBAAO3nJ,IAAAA;cAAG,KAAK1tB;AAAE,wBAAOkM,KAAEA,GAAEtF,MAAAA;kBAAQ,KAAKhH;kBAAE,KAAKG;kBAAE,KAAK4B;kBAAE,KAAK2jC;kBAAE,KAAK3X;kBAAE,KAAKlsB;AAAE,2BAAOyK;kBAAE;AAAQ,4BAAOA,KAAEA,MAAGA,GAAEmpK,UAAAA;sBAAY,KAAKxuK;sBAAE,KAAKzF;sBAAE,KAAKP;sBAAE,KAAKJ;sBAAE,KAAKwO;AAAE,+BAAO/C;sBAAE;AAAQ,+BAAOwhB;oBAAAA;gBAAAA;cAAG,KAAKztB;AAAE,uBAAOytB;YAAAA;UAAAA;QAAAA;AAAI,iBAASY,GAAEpiB,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKnM;QAAAA;AAAEN,QAAAA,GAAQ2zN,YAAUxzN,IAAEH,GAAQ4zN,iBAAetzN,IAAEN,GAAQ6zN,kBAAgBzsN,IAAEpH,GAAQ8zN,kBAAgBtkN,IAAExP,GAAQ8lH,UAAQvlH,IAAEP,GAAQ2sJ,aAAWhrJ,IAAE3B,GAAQ8hL,WAAS5/K,IAAElC,GAAQ+zN,OAAK3yN,IAAEpB,GAAQ4sJ,OAAK5rJ,IAAEhB,GAAQg0N,SAAOxzN,IAChfR,GAAQgiL,WAASn8I,IAAE7lC,GAAQ+hL,aAAW7zJ,IAAEluB,GAAQiiL,WAASjgL,IAAEhC,GAAQi0N,cAAY,SAASxnN,IAAAA;AAAG,iBAAOoiB,GAAEpiB,EAAAA,KAAIyqB,GAAEzqB,EAAAA,MAAKtM;QAAAA,GAAGH,GAAQk0N,mBAAiBrlM,IAAE7uB,GAAQm0N,oBAAkB,SAAS1nN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKrF;QAAAA,GAAGpH,GAAQo0N,oBAAkB,SAAS3nN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAK+C;QAAAA,GAAGxP,GAAQq0N,YAAU,SAAS5nN,IAAAA;AAAG,iBAAM,YAAA,OAAkBA,MAAG,SAAOA,MAAGA,GAAEmpK,aAAWr1K;QAAAA,GAAGP,GAAQs0N,eAAa,SAAS7nN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAK9K;QAAAA,GAAG3B,GAAQu0N,aAAW,SAAS9nN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKvK;QAAAA,GAAGlC,GAAQw0N,SAAO,SAAS/nN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKrL;QAAAA,GACzdpB,GAAQ0sJ,SAAO,SAASjgJ,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKzL;QAAAA,GAAGhB,GAAQy0N,WAAS,SAAShoN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKjM;QAAAA,GAAGR,GAAQ00N,aAAW,SAASjoN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKo5B;QAAAA,GAAG7lC,GAAQ20N,eAAa,SAASloN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKyhB;QAAAA,GAAGluB,GAAQ40N,aAAW,SAASnoN,IAAAA;AAAG,iBAAOyqB,GAAEzqB,EAAAA,MAAKzK;QAAAA,GACzOhC,GAAQ60N,qBAAmB,SAASpoN,IAAAA;AAAG,iBAAM,YAAA,OAAkBA,MAAG,cAAA,OAAoBA,MAAGA,OAAIvK,MAAGuK,OAAInM,MAAGmM,OAAIo5B,MAAGp5B,OAAIyhB,MAAGzhB,OAAIzK,MAAGyK,OAAI6qB,MAAG,YAAA,OAAkB7qB,MAAG,SAAOA,OAAIA,GAAEmpK,aAAWx0K,MAAGqL,GAAEmpK,aAAW50K,MAAGyL,GAAEmpK,aAAWpmK,MAAG/C,GAAEmpK,aAAWxuK,MAAGqF,GAAEmpK,aAAWj0K,MAAG8K,GAAEmpK,aAAWrmJ,MAAG9iB,GAAEmpK,aAAWz+J,MAAG1K,GAAEmpK,aAAW1jJ,MAAGzlB,GAAEmpK,aAAWvuK;QAAAA,GAAIrH,GAAQ80N,SAAO59L;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACdnU,YAAI1R,KAAQ7jB,GAAQ,GAAA,GAChBozN,KAAYpzN,GAAQ,GAAA,GACpB42E,KAAc52E,GAAQ,GAAA,GACtBqzN,KAAarzN,GAAQ,GAAA,GACrBszN,KAAetzN,GAAQ,GAAA,GACvBmlL,KAAcnlL,GAAQ,GAAA,GACtBqlL,KAAYrlL,GAAQ,GAAA,GACpBuzN,KAAcvzN,GAAQ,GAAA,GACtBwzN,KAAgBxzN,GAAQ,GAAA,GACxB2tL,KAAa3tL,GAAQ,GAAA,GACrB0tK,KAAe1tK,GAAQ,GAAA,GACvBmrF,KAASnrF,GAAQ,GAAA,GACjByzN,KAAiBzzN,GAAQ,GAAA,GACzB0zN,KAAiB1zN,GAAQ,GAAA,GACzBslL,KAAkBtlL,GAAQ,GAAA,GAC1BqJ,KAAUrJ,GAAQ,EAAA,GAClBivE,KAAWjvE,GAAQ,GAAA,GACnB2P,KAAQ3P,GAAQ,GAAA,GAChByrB,KAAWzrB,GAAQ,EAAA,GACnBsiB,KAAQtiB,GAAQ,GAAA,GAChB2I,KAAO3I,GAAQ,GAAA,GACf4kK,KAAS5kK,GAAQ,GAAA,GAQjBusL,KAAU,sBAKVonC,KAAU,qBAIVlnC,KAAY,mBAoBZmnC,KAAgB,CAAA;AACpBA,QAAAA,GAAcrnC,EAAAA,IAAWqnC,GA7BV,gBAAA,IA8BfA,GAfqB,sBAAA,IAeWA,GAdd,mBAAA,IAelBA,GA9Bc,kBAAA,IA8BWA,GA7BX,eAAA,IA8BdA,GAfiB,uBAAA,IAeWA,GAdX,uBAAA,IAejBA,GAdc,oBAAA,IAcWA,GAbV,qBAAA,IAcfA,GAbe,qBAAA,IAaWA,GA5Bb,cAAA,IA6BbA,GA5BgB,iBAAA,IA4BWA,GAAcnnC,EAAAA,IACzCmnC,GA3BgB,iBAAA,IA2BWA,GA1Bd,cAAA,IA2BbA,GA1BgB,iBAAA,IA0BWA,GAzBX,iBAAA,IA0BhBA,GAhBe,qBAAA,IAgBWA,GAfJ,4BAAA,IAgBtBA,GAfgB,sBAAA,IAeWA,GAdX,sBAAA,IAAA,MAehBA,GArCe,gBAAA,IAqCWA,GAAcD,EAAAA,IACxCC,GA5BiB,kBAAA,IAAA,OA0HjBt1N,GAAOD,UA5EP,SAASgvK,GAAU7tK,IAAOu1J,IAASj+E,IAAYh3E,IAAKG,IAAQqX,IAAAA;AAC1D,cAAIygB,IACA85H,KAnEgB,IAmEPkD,IACT8+D,IAnEgB,IAmEP9+D,IACT++D,KAnEmB,IAmEV/+D;AAKb,cAHIj+E,OACF/+C,KAAS93B,KAAS62E,GAAWt3E,IAAOM,IAAKG,IAAQqX,EAAAA,IAASw/D,GAAWt3E,EAAAA,IAAAA,WAEnEu4B;AACF,mBAAOA;AAET,cAAA,CAAKtM,GAASjsB,EAAAA;AACZ,mBAAOA;AAET,cAAI8yJ,KAAQjpJ,GAAQ7J,EAAAA;AACpB,cAAI8yJ,IAAAA;AAEF,gBADAv6H,KAAS07L,GAAej0N,EAAAA,GAAAA,CACnBqyJ;AACH,qBAAOwzB,GAAU7lL,IAAOu4B,EAAAA;UAAAA,OAErB;AACL,gBAAIkgB,KAAMkzC,GAAO3rF,EAAAA,GACbktB,KAASurB,MAAO07K,MA7EX,gCA6EsB17K;AAE/B,gBAAIg3B,GAASzvE,EAAAA;AACX,qBAAO2lL,GAAY3lL,IAAOqyJ,EAAAA;AAE5B,gBAAI55G,MAAOw0I,MAAax0I,MAAOs0I,MAAY7/J,MAAAA,CAAWzsB,IAAAA;AAEpD,kBADA83B,KAAU87L,KAAUnnM,KAAU,CAAA,IAAK44J,GAAgB9lL,EAAAA,GAAAA,CAC9CqyJ;AACH,uBAAOgiE,IACHL,GAAch0N,IAAO8zN,GAAav7L,IAAQv4B,EAAAA,CAAAA,IAC1C+zN,GAAY/zN,IAAO6zN,GAAWt7L,IAAQv4B,EAAAA,CAAAA;YAAAA,OAEvC;AACL,kBAAA,CAAKo0N,GAAc37K,EAAAA;AACjB,uBAAOh4C,KAAST,KAAQ,CAAA;AAE1Bu4B,cAAAA,KAAS27L,GAAel0N,IAAOy4C,IAAK45G,EAAAA;YAAAA;UAAAA;AAIxCv6I,UAAAA,OAAUA,KAAQ,IAAIuM;AACtB,cAAI6hK,KAAUpuK,GAAMlY,IAAII,EAAAA;AACxB,cAAIkmL;AACF,mBAAOA;AAETpuK,UAAAA,GAAMtI,IAAIxP,IAAOu4B,EAAAA,GAEbzV,GAAM9iB,EAAAA,IACRA,GAAMqQ,QAAQ,SAASkkN,IAAAA;AACrBh8L,YAAAA,GAAOxV,IAAI8qJ,GAAU0mD,IAAUh/D,IAASj+E,IAAYi9I,IAAUv0N,IAAO8X,EAAAA,CAAAA;UAAAA,CAAAA,IAE9D3H,GAAMnQ,EAAAA,KACfA,GAAMqQ,QAAQ,SAASkkN,IAAUj0N,IAAAA;AAC/Bi4B,YAAAA,GAAO/oB,IAAIlP,IAAKutK,GAAU0mD,IAAUh/D,IAASj+E,IAAYh3E,IAAKN,IAAO8X,EAAAA,CAAAA;UAAAA,CAAAA;AAIzE,cAIIyT,KAAQunI,KAAAA,UAJGwhE,KACVD,IAASnmD,KAAeigB,KACxBkmC,IAASjvD,KAASj8J,IAEkBnJ,EAAAA;AASzC,iBARA4zN,GAAUroM,MAASvrB,IAAO,SAASu0N,IAAUj0N,IAAAA;AACvCirB,YAAAA,OAEFgpM,KAAWv0N,GADXM,KAAMi0N,EAAAA,IAIRn9I,GAAY7+C,IAAQj4B,IAAKutK,GAAU0mD,IAAUh/D,IAASj+E,IAAYh3E,IAAKN,IAAO8X,EAAAA,CAAAA;UAAAA,CAAAA,GAEzEygB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC7ITz5B,QAAAA,GAAOD,UAZP,SAAmBmK,IAAOisJ,IAAAA;AAIxB,mBAHIvwJ,KAAAA,IACAT,KAAkB,QAAT+E,KAAgB,IAAIA,GAAM/E,QAAAA,EAE9BS,KAAQT,MAAAA,UACXgxJ,GAASjsJ,GAAMtE,EAAAA,GAAQA,IAAOsE,EAAAA;AAAAA;AAIpC,iBAAOA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AClBT,YAAI+kK,KAAavtK,GAAQ,GAAA,GACrB2I,KAAO3I,GAAQ,GAAA;AAenB1B,QAAAA,GAAOD,UAJP,SAAoB4B,IAAQs5B,IAAAA;AAC1B,iBAAOt5B,MAAUstK,GAAWh0I,IAAQ5wB,GAAK4wB,EAAAA,GAASt5B,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACbpD,YAAIstK,KAAavtK,GAAQ,GAAA,GACrB4kK,KAAS5kK,GAAQ,GAAA;AAerB1B,QAAAA,GAAOD,UAJP,SAAsB4B,IAAQs5B,IAAAA;AAC5B,iBAAOt5B,MAAUstK,GAAWh0I,IAAQqrI,GAAOrrI,EAAAA,GAASt5B,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACbtD,YAAIstK,KAAavtK,GAAQ,GAAA,GACrBswH,KAAatwH,GAAQ,GAAA;AAczB1B,QAAAA,GAAOD,UAJP,SAAqBk7B,IAAQt5B,IAAAA;AAC3B,iBAAOstK,GAAWh0I,IAAQ+2F,GAAW/2F,EAAAA,GAASt5B,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZhD,YAAIstK,KAAavtK,GAAQ,GAAA,GACrB2kK,KAAe3kK,GAAQ,GAAA;AAc3B1B,QAAAA,GAAOD,UAJP,SAAuBk7B,IAAQt5B,IAAAA;AAC7B,iBAAOstK,GAAWh0I,IAAQorI,GAAaprI,EAAAA,GAASt5B,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACXlD,YAGIG,KAHcnB,OAAOkB,UAGQC;AAqBjC9B,QAAAA,GAAOD,UAZP,SAAwBmK,IAAAA;AACtB,cAAI/E,KAAS+E,GAAM/E,QACfs0B,KAAS,IAAIvvB,GAAM1H,YAAY2C,EAAAA;AAOnC,iBAJIA,MAA6B,YAAA,OAAZ+E,GAAM,CAAA,KAAkBpI,GAAe1B,KAAK8J,IAAO,OAAA,MACtEuvB,GAAO7zB,QAAQsE,GAAMtE,OACrB6zB,GAAO7B,QAAQ1tB,GAAM0tB,QAEhB6B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACtBT,YAAI+5H,KAAmB9xJ,GAAQ,GAAA,GAC3Bg0N,KAAgBh0N,GAAQ,GAAA,GACxBi0N,KAAcj0N,GAAQ,GAAA,GACtBk0N,KAAcl0N,GAAQ,GAAA,GACtBolL,KAAkBplL,GAAQ,GAAA;AAwE9B1B,QAAAA,GAAOD,UApCP,SAAwB4B,IAAQg4C,IAAK45G,IAAAA;AACnC,cAAIvkE,KAAOrtF,GAAOa;AAClB,kBAAQm3C,IAAAA;YACN,KA3BiB;AA4Bf,qBAAO65G,GAAiB7xJ,EAAAA;YAE1B,KAvCU;YAwCV,KAvCU;AAwCR,qBAAO,IAAIqtF,GAAAA,CAAMrtF,EAAAA;YAEnB,KAjCc;AAkCZ,qBAAO+zN,GAAc/zN,IAAQ4xJ,EAAAA;YAE/B,KAnCa;YAmCI,KAlCJ;YAmCb,KAlCU;YAkCI,KAjCH;YAiCkB,KAhClB;YAiCX,KAhCW;YAgCI,KA/BG;YA+BmB,KA9BzB;YA8ByC,KA7BzC;AA8BV,qBAAOuzB,GAAgBnlL,IAAQ4xJ,EAAAA;YAEjC,KAjDS;AAkDP,qBAAO,IAAIvkE;YAEb,KAnDY;YAoDZ,KAjDY;AAkDV,qBAAO,IAAIA,GAAKrtF,EAAAA;YAElB,KAtDY;AAuDV,qBAAOg0N,GAAYh0N,EAAAA;YAErB,KAxDS;AAyDP,qBAAO,IAAIqtF;YAEb,KAzDY;AA0DV,qBAAO4mI,GAAYj0N,EAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACxEzB,YAAI6xJ,KAAmB9xJ,GAAQ,GAAA;AAe/B1B,QAAAA,GAAOD,UALP,SAAuB81N,IAAUtiE,IAAAA;AAC/B,cAAIv9G,KAASu9G,KAASC,GAAiBqiE,GAAS7/K,MAAAA,IAAU6/K,GAAS7/K;AACnE,iBAAO,IAAI6/K,GAASrzN,YAAYwzC,IAAQ6/K,GAASvlJ,YAAYulJ,GAAStlJ,UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACXxE,YAAIulJ,KAAU;AAed91N,QAAAA,GAAOD,UANP,SAAqBi2J,IAAAA;AACnB,cAAIv8H,KAAS,IAAIu8H,GAAOxzJ,YAAYwzJ,GAAO/6H,QAAQ66L,GAAQjmM,KAAKmmI,EAAAA,CAAAA;AAEhE,iBADAv8H,GAAOkxB,YAAYqrG,GAAOrrG,WACnBlxB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACbT,YAAIz4B,KAASU,GAAQ,GAAA,GAGjB4oL,KAActpL,KAASA,GAAOa,YAAAA,QAC9BstL,KAAgB7E,KAAcA,GAAYj+K,UAAAA;AAa9CrM,QAAAA,GAAOD,UAJP,SAAqBivH,IAAAA;AACnB,iBAAOmgE,KAAgBxuL,OAAOwuL,GAAc/uL,KAAK4uH,EAAAA,CAAAA,IAAW,CAAA;QAAA;MAAA,GAAA,SAAA/sH,IAAAd,IAAAO,IAAA;ACd9D,YAAIq0N,KAAYr0N,GAAQ,GAAA,GACpBy2F,KAAYz2F,GAAQ,GAAA,GACpB02F,KAAW12F,GAAQ,GAAA,GAGnBs0N,KAAY59H,MAAYA,GAAS/mF,OAmBjCA,KAAQ2kN,KAAY79H,GAAU69H,EAAAA,IAAaD;AAE/C/1N,QAAAA,GAAOD,UAAUsR;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1BjB,YAAIw7E,KAASnrF,GAAQ,GAAA,GACjBgsF,KAAehsF,GAAQ,EAAA;AAgB3B1B,QAAAA,GAAOD,UAJP,SAAmBmB,IAAAA;AACjB,iBAAOwsF,GAAaxsF,EAAAA,KAVT,kBAUmB2rF,GAAO3rF,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACdvC,YAAI+0N,KAAYv0N,GAAQ,GAAA,GACpBy2F,KAAYz2F,GAAQ,GAAA,GACpB02F,KAAW12F,GAAQ,GAAA,GAGnBw0N,KAAY99H,MAAYA,GAASp0E,OAmBjCA,KAAQkyM,KAAY/9H,GAAU+9H,EAAAA,IAAaD;AAE/Cj2N,QAAAA,GAAOD,UAAUikB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC1BjB,YAAI6oE,KAASnrF,GAAQ,GAAA,GACjBgsF,KAAehsF,GAAQ,EAAA;AAgB3B1B,QAAAA,GAAOD,UAJP,SAAmBmB,IAAAA;AACjB,iBAAOwsF,GAAaxsF,EAAAA,KAVT,kBAUmB2rF,GAAO3rF,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACdvC,YAAI+wH,KAAWvwH,GAAQ,GAAA,GACnB4nB,KAAO5nB,GAAQ,GAAA,GACfmpH,KAASnpH,GAAQ,GAAA,GACjBwwH,KAAQxwH,GAAQ,GAAA;AAgBpB1B,QAAAA,GAAOD,UANP,SAAmB4B,IAAQ+4B,IAAAA;AAGzB,iBAFAA,KAAOu3F,GAASv3F,IAAM/4B,EAAAA,GAEL,SADjBA,KAASkpH,GAAOlpH,IAAQ+4B,EAAAA,MAAAA,OACQ/4B,GAAOuwH,GAAM5oG,GAAKoR,EAAAA,CAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACGpD16B,QAAAA,GAAOD,UALP,SAAcmK,IAAAA;AACZ,cAAI/E,KAAkB,QAAT+E,KAAgB,IAAIA,GAAM/E;AACvC,iBAAOA,KAAS+E,GAAM/E,KAAS,CAAA,IAAA;QAAK+F;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBtC,YAAIq5B,KAAU7iC,GAAQ,GAAA,GAClBkpL,KAAYlpL,GAAQ,GAAA;AAcxB1B,QAAAA,GAAOD,UAJP,SAAgB4B,IAAQ+4B,IAAAA;AACtB,iBAAOA,GAAKv1B,SAAS,IAAIxD,KAAS4iC,GAAQ5iC,IAAQipL,GAAUlwJ,IAAM,GAAA,EAAI,CAAA;QAAA;MAAA,GAAA,SAAAz4B,IAAAd,IAAAO,IAAA;ACZxE,YAAIgsE,KAAgBhsE,GAAQ,GAAA;AAe5B1B,QAAAA,GAAOD,UAJP,SAAyBmB,IAAAA;AACvB,iBAAOwsE,GAAcxsE,EAAAA,IAAAA,SAAqBA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACZ5C,YAAI8f,KAAUtf,GAAQ,GAAA,GAClBmmL,KAAWnmL,GAAQ,GAAA,GACnB8yJ,KAAc9yJ,GAAQ,GAAA;AAa1B1B,QAAAA,GAAOD,UAJP,SAAkB88B,IAAAA;AAChB,iBAAO23H,GAAYqzB,GAAShrJ,IAAAA,QAAiB7b,EAAAA,GAAU6b,KAAO,EAAA;QAAA;MAAA,GAAA,SAAA56B,IAAAd,IAAAO,IAAA;ACZhE,YAAIy0N,KAAcz0N,GAAQ,GAAA;AAqB1B1B,QAAAA,GAAOD,UALP,SAAiBmK,IAAAA;AAEf,kBADsB,QAATA,KAAgB,IAAIA,GAAM/E,UACvBgxN,GAAYjsN,IAAO,CAAA,IAAK,CAAA;QAAA;MAAA,GAAA,SAAAjI,IAAAd,IAAAO,IAAA;AClB1C,YAAIghH,KAAYhhH,GAAQ,GAAA,GACpB00N,KAAgB10N,GAAQ,GAAA;AAoC5B1B,QAAAA,GAAOD,UAvBP,SAASo2N,GAAYjsN,IAAOkX,IAAOlC,IAAWm3M,IAAU58L,IAAAA;AACtD,cAAI7zB,KAAAA,IACAT,KAAS+E,GAAM/E;AAKnB,eAHA+Z,OAAcA,KAAYk3M,KAC1B38L,OAAWA,KAAS,CAAA,IAAA,EAEX7zB,KAAQT,MAAQ;AACvB,gBAAIjE,KAAQgJ,GAAMtE,EAAAA;AACdwb,YAAAA,KAAQ,KAAKlC,GAAUhe,EAAAA,IACrBkgB,KAAQ,IAEV+0M,GAAYj1N,IAAOkgB,KAAQ,GAAGlC,IAAWm3M,IAAU58L,EAAAA,IAEnDipF,GAAUjpF,IAAQv4B,EAAAA,IAEVm1N,OACV58L,GAAOA,GAAOt0B,MAAAA,IAAUjE;UAAAA;AAG5B,iBAAOu4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AClCT,YAAIz4B,KAASU,GAAQ,GAAA,GACjBorF,KAAcprF,GAAQ,GAAA,GACtBqJ,KAAUrJ,GAAQ,EAAA,GAGlB40N,KAAmBt1N,KAASA,GAAOquJ,qBAAAA;AAcvCrvJ,QAAAA,GAAOD,UALP,SAAuBmB,IAAAA;AACrB,iBAAO6J,GAAQ7J,EAAAA,KAAU4rF,GAAY5rF,EAAAA,KAAAA,CAAAA,EAChCo1N,MAAoBp1N,MAASA,GAAMo1N,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChB1C,YAAIzrG,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjB0nL,KAAkBp+J,OAAOnpB;AAE7B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGob;AACb,iBAAoB,YAAA,OAANpb,MAAkBA,OAAO+sJ,MACjCnmJ,GAAcmmJ,IAAiB/sJ,EAAAA,KAAOi5H,OAAQ8zB,GAAgB3xI,SAAUzhB,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACRzF,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,QAAA,EAAU7nI;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHhC,QAAA/1C,GAAQ,EAAA,EAKd,EAAE8qB,QAAQ,UAAUqP,OAAAA,KAAO,GAAQ,EACnC4b,QALW/1C,GAAQ,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACArB,YAAI24B,KAAS34B,GAAQ,EAAA,GACjB2rF,KAAsB3rF,GAAQ,GAAA,GAC9BgH,KAAWhH,GAAQ,EAAA,GACnBkwC,KAAyBlwC,GAAQ,GAAA,GAEjCwqE,KAAa7xC,GAAO6xC;AAIxBlsE,QAAAA,GAAOD,UAAU,SAAgB4U,IAAAA;AAC/B,cAAIub,KAAMxnB,GAASkpC,GAAuB5qC,IAAAA,CAAAA,GACtCyyB,KAAS,IACT/3B,KAAI2rF,GAAoB14E,EAAAA;AAC5B,cAAIjT,KAAI,KAAKA,MAAK4L,IAAAA;AAAU,kBAAM4+D,GAAW,6BAAA;AAC7C,iBAAMxqE,KAAI,IAAIA,QAAO,OAAOwuB,MAAOA;AAAc,gBAAJxuB,OAAO+3B,MAAUvJ;AAC9D,iBAAOuJ;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACdT94B,eAAOC,eAAeb,IAAS,cAAc,EAC3CmB,OAAAA,KAAO,CAAA,GAETnB,GAAQihF,kBAAAA;AAER,YAAIu1I,KAASpxC,GAAuBzjL,GAAQ,CAAA,CAAA,GAExC80N,KAAmBrxC,GAAuBzjL,GAAQ,GAAA,CAAA;AAEtD,iBAASyjL,GAAuBj1K,IAAAA;AAAO,iBAAOA,MAAOA,GAAI7O,aAAa6O,KAAM,EAAE,SAAWA,GAAAA;QAAAA;AAEzF,iBAASovB,GAAQpvB,IAAAA;AAAwT,kBAAtOovB,KAArD,cAAA,OAAXt+B,UAAoD,YAAA,OAApBA,OAAO2F,WAAmC,SAAiBuJ,IAAAA;AAAO,mBAAA,OAAcA;UAAAA,IAA2B,SAAiBA,IAAAA;AAAO,mBAAOA,MAAyB,cAAA,OAAXlP,UAAyBkP,GAAI1N,gBAAgBxB,UAAUkP,OAAQlP,OAAOa,YAAY,WAAA,OAAkBqO;UAAAA,GAAyBA,EAAAA;QAAAA;AAExV,iBAAS4vB,GAAQn+B,IAAQo+B,IAAAA;AAAkB,cAAI11B,KAAO1J,OAAO0J,KAAK1I,EAAAA;AAAS,cAAIhB,OAAO4lB,uBAAuB;AAAE,gBAAIyZ,KAAUr/B,OAAO4lB,sBAAsB5kB,EAAAA;AAAao+B,YAAAA,OAAgBC,KAAUA,GAAQ/oB,OAAO,SAAUgpB,IAAAA;AAAO,qBAAOt/B,OAAO65B,yBAAyB74B,IAAQs+B,EAAAA,EAAKp/B;YAAAA,CAAAA,IAAgBwJ,GAAKuM,KAAKhG,MAAMvG,IAAM21B,EAAAA;UAAAA;AAAY,iBAAO31B;QAAAA;AAI9U,iBAASosN,GAAyBx7L,IAAQ8U,IAAAA;AAAY,cAAc,QAAV9U;AAAgB,mBAAO,CAAA;AAAI,cAAkEz5B,IAAKvB,IAAnEusB,KAEzF,SAAuCyO,IAAQ8U,IAAAA;AAAY,gBAAc,QAAV9U;AAAgB,qBAAO,CAAA;AAAI,gBAA2Dz5B,IAAKvB,IAA5DusB,KAAS,CAAA,GAAQwrB,KAAar3C,OAAO0J,KAAK4wB,EAAAA;AAAqB,iBAAKh7B,KAAI,GAAGA,KAAI+3C,GAAW7yC,QAAQlF;AAAOuB,cAAAA,KAAMw2C,GAAW/3C,EAAAA,GAAQ8vC,GAASnhC,QAAQpN,EAAAA,KAAQ,MAAagrB,GAAOhrB,EAAAA,IAAOy5B,GAAOz5B,EAAAA;AAAQ,mBAAOgrB;UAAAA,EAF1KyO,IAAQ8U,EAAAA;AAAuB,cAAIpvC,OAAO4lB,uBAAuB;AAAE,gBAAIypB,KAAmBrvC,OAAO4lB,sBAAsB0U,EAAAA;AAAS,iBAAKh7B,KAAI,GAAGA,KAAI+vC,GAAiB7qC,QAAQlF;AAAOuB,cAAAA,KAAMwuC,GAAiB/vC,EAAAA,GAAQ8vC,GAASnhC,QAAQpN,EAAAA,KAAQ,KAAkBb,OAAOkB,UAAU0O,qBAAqBnQ,KAAK66B,IAAQz5B,EAAAA,MAAgBgrB,GAAOhrB,EAAAA,IAAOy5B,GAAOz5B,EAAAA;UAAAA;AAAU,iBAAOgrB;QAAAA;AAIne,iBAASi0F,GAAgBp0F,IAAUC,IAAAA;AAAe,cAAA,EAAMD,cAAoBC;AAAgB,kBAAM,IAAIthB,UAAU,mCAAA;QAAA;AAEhH,iBAASuhB,GAAkBC,IAAQC,IAAAA;AAAS,mBAASxsB,KAAI,GAAGA,KAAIwsB,GAAMtnB,QAAQlF,MAAK;AAAE,gBAAIysB,KAAaD,GAAMxsB,EAAAA;AAAIysB,YAAAA,GAAW7rB,aAAa6rB,GAAW7rB,cAAAA,OAAqB6rB,GAAWP,eAAAA,MAAyB,WAAWO,OAAYA,GAAWN,WAAAA,OAAiBzrB,OAAOC,eAAe4rB,IAAQE,GAAWlrB,KAAKkrB,EAAAA;UAAAA;QAAAA;AAI7S,iBAASi0F,GAA2B/mF,IAAMx5B,IAAAA;AAAQ,iBAAA,CAAIA,MAA2B,aAAlBk/B,GAAQl/B,EAAAA,KAAsC,cAAA,OAATA,KAA8Cs2N,GAAuB98L,EAAAA,IAAtCx5B;QAAAA;AAEnI,iBAAS87E,GAAgBx7E,IAAAA;AAAwJ,kBAAnJw7E,KAAkBv7E,OAAOu4B,iBAAiBv4B,OAAOijB,iBAAiB,SAAyBljB,IAAAA;AAAK,mBAAOA,GAAE0vE,aAAazvE,OAAOijB,eAAeljB,EAAAA;UAAAA,GAA8BA,EAAAA;QAAAA;AAExM,iBAASg2N,GAAuB98L,IAAAA;AAAQ,cAAA,WAAIA;AAAmB,kBAAM,IAAIC,eAAe,2DAAA;AAAgE,iBAAOD;QAAAA;AAI/J,iBAAS8mF,GAAgBhgH,IAAGqB,IAAAA;AAA+G,kBAA1G2+G,KAAkB//G,OAAOu4B,kBAAkB,SAAyBx4B,IAAGqB,IAAAA;AAAsB,mBAAjBrB,GAAE0vE,YAAYruE,IAAUrB;UAAAA,GAA6BA,IAAGqB,EAAAA;QAAAA;AAErK,iBAAS8qE,GAAgB38D,IAAK1O,IAAKN,IAAAA;AAAiK,iBAApJM,MAAO0O,KAAOvP,OAAOC,eAAesP,IAAK1O,IAAK,EAAEN,OAAOA,IAAOL,YAAAA,MAAkBsrB,cAAAA,MAAoBC,UAAAA,KAAU,CAAA,IAAkBlc,GAAI1O,EAAAA,IAAON,IAAgBgP;QAAAA;AAE3M,YAAI8wE,KAEJ,SAAU21I,IAAAA;AAGR,mBAAS31I,KAAAA;AACP,gBAAI41I,IAEA5kH;AAEJyO,YAAAA,GAAgBz5G,MAAMg6E,EAAAA;AAEtB,qBAAShjD,KAAO/0B,UAAU9D,QAAQ67C,KAAO,IAAI7+C,MAAM67B,EAAAA,GAAOE,KAAO,GAAGA,KAAOF,IAAME;AAC/E8iB,cAAAA,GAAK9iB,EAAAA,IAAQj1B,UAAUi1B,EAAAA;AA0BzB,mBArBA2uC,GAAgB6pJ,GAFhB1kH,KAAQ2O,GAA2B35G,OAAO4vN,KAAmB16I,GAAgB8E,EAAAA,GAAkB5gF,KAAKwQ,MAAMgmN,IAAkB,CAAC5vN,IAAAA,EAAM6Z,OAAOmgC,EAAAA,CAAAA,CAAAA,CAAAA,GAE3F,WAAW,SAAU66G,IAAAA;AAClE,kBAAIg7D,KAAc7kH,GAAMvlF,OACpBue,KAAO6rL,GAAY7rL,MACnB8rL,KAASD,GAAYC,QACrBv2J,KAAWs2J,GAAYt2J,UACvBvlC,KAAU67L,GAAY77L,SAEtB+wI,KAAOwqD,GAAgB,QAAExzC,SAASC,KAAKziH,EAAAA,GAEvC9mC,MAAS,GAAI+8L,GAA0B,SAAGxrL,IAAMhQ,EAAAA;AAEhD87L,cAAAA,MACFA,GAAO9rL,IAAMvR,EAAAA,GAIXsyI,MAAQA,GAAKt/I,SAAuC,cAAA,OAAvBs/I,GAAKt/I,MAAMw3G,WAC1C8nC,GAAKt/I,MAAMw3G,QAAQ43B,EAAAA;YAAAA,CAAAA,GAIhB7pD;UAAAA;AArDX,cAAsB1lF,IAAaK,IAAYC;AA0E7C,iBAlEF,SAAmBuM,IAAU52B,IAAAA;AAAc,gBAA0B,cAAA,OAAfA,MAA4C,SAAfA;AAAuB,oBAAM,IAAIyI,UAAU,oDAAA;AAAyDmuB,YAAAA,GAASt3B,YAAYlB,OAAOY,OAAOgB,MAAcA,GAAWV,WAAW,EAAEW,aAAa,EAAEtB,OAAOi4B,IAAU/M,UAAAA,MAAgBD,cAAAA,KAAc,EAAA,CAAA,GAAe5pB,MAAYm+G,GAAgBvnF,IAAU52B,EAAAA;UAAAA,EASvWy+E,IAAiB21I,EAAAA,GAjBPrqM,KAwDP00D,KAxDoBr0D,KAwDH,CAAC,EAC7BnrB,KAAK,UACLN,OAAO,WAAA;AACL,gBAAI61N,KAAe/vN,KAAKylB,OAIpB8zC,MAHQw2J,GAAa/rL,MACX+rL,GAAaD,QACZC,GAAa/7L,SACb+7L,GAAax2J,WACxB9zC,KAAQgqM,GAAyBM,IAAc,CAAC,QAAQ,UAAU,WAAW,UAAA,CAAA,GAE7EhrD,KAAOwqD,GAAgB,QAAExzC,SAASC,KAAKziH,EAAAA;AAE3C,mBAAOg2J,GAAgB,QAAErzC,aAAanX,IA9E5C,SAAuBv/I,IAAAA;AAAU,uBAASvsB,KAAI,GAAGA,KAAIgJ,UAAU9D,QAAQlF,MAAK;AAAE,oBAAIg7B,KAAyB,QAAhBhyB,UAAUhJ,EAAAA,IAAagJ,UAAUhJ,EAAAA,IAAK,CAAA;AAAQA,gBAAAA,KAAI,IAAK6/B,GAAQ7E,IAAAA,IAAQ,EAAM1pB,QAAQ,SAAU/P,IAAAA;AAAOqrE,kBAAAA,GAAgBrgD,IAAQhrB,IAAKy5B,GAAOz5B,EAAAA,CAAAA;gBAAAA,CAAAA,IAAsBb,OAAOosE,4BAA6BpsE,OAAOqsE,iBAAiBxgD,IAAQ7rB,OAAOosE,0BAA0B9xC,EAAAA,CAAAA,IAAmB6E,GAAQ7E,EAAAA,EAAQ1pB,QAAQ,SAAU/P,IAAAA;AAAOb,yBAAOC,eAAe4rB,IAAQhrB,IAAKb,OAAO65B,yBAAyBS,IAAQz5B,EAAAA,CAAAA;gBAAAA,CAAAA;cAAAA;AAAe,qBAAOgrB;YAAAA,EA8E7b,CAAA,GAAIC,IAAO,EACnEw3G,SAASj9H,KAAKi9H,QAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,MArEwD13G,GAAkBD,GAAYzqB,WAAW8qB,EAAAA,GAAiBC,MAAaL,GAAkBD,IAAaM,EAAAA,GA0E3Ko0D;QAAAA,EACPu1I,GAAgB,QAAE7oF,aAAAA;AAEpB3tI,QAAAA,GAAQihF,kBAAkBA,IAE1BnU,GAAgBmU,IAAiB,gBAAgB,EAC/C81I,QAAAA,QACA97L,SAAAA,OAAS9vB,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC1GX,YAAI8rN,KAAkBt1N,GAAQ,GAAA,GAE1Bu1N,KAA4B,EAC9B,cAAc,QACd,aAAa,OACb,SAAW,OAAA;AAyGbj3N,QAAAA,GAAOD,UA/FP,SAAcirC,IAAMhQ,IAAAA;AAClB,cAAI0pG,IACF/7F,IACAuuL,IACA9hB,IACA+hB,IACAruL,IACAsuL,KAAAA;AACGp8L,UAAAA,OACHA,KAAU,CAAA,IAEZ0pG,KAAQ1pG,GAAQ0pG,SAAAA;AAChB,cAAA;AAgDE,gBA/CAwyF,KAAmBF,GAAAA,GAEnB5hB,KAAQ5sI,SAAS6lJ,YAAAA,GACjB8I,KAAY3uJ,SAAS0vI,aAAAA,IAErBpvK,KAAO0/B,SAASvI,cAAc,MAAA,GACzBwsD,cAAczhF,IAEnBlC,GAAKsR,MAAM5P,MAAM,SAEjB1B,GAAKsR,MAAMxB,WAAW,SACtB9P,GAAKsR,MAAMygI,MAAM,GACjB/xI,GAAKsR,MAAM4Q,OAAO,oBAElBliB,GAAKsR,MAAM4rB,aAAa,OAExBl9B,GAAKsR,MAAMi9K,mBAAmB,QAC9BvuL,GAAKsR,MAAMk9K,gBAAgB,QAC3BxuL,GAAKsR,MAAMm9K,eAAe,QAC1BzuL,GAAKsR,MAAM6nB,aAAa,QACxBn5B,GAAKurF,iBAAiB,QAAQ,SAASpyH,IAAAA;AAErC,kBADAA,GAAEitM,gBAAAA,GACEl0K,GAAQhK;AAEV,oBADA/uB,GAAE+5K,eAAAA,GAAAA,WACS/5K,GAAE2vM,eAA+B;AAC1CltE,kBAAAA,MAAS30G,QAAQ6T,KAAK,+BAAA,GACtB8gG,MAAS30G,QAAQ6T,KAAK,0BAAA,GACtBpH,OAAOo1K,cAAc4lB,UAAAA;AACrB,sBAAIxmM,KAASimM,GAA0Bj8L,GAAQhK,MAAAA,KAAWimM,GAAmC;AAC7Fz6L,yBAAOo1K,cAAc6lB,QAAQzmM,IAAQga,EAAAA;gBAAAA;AAErC/oC,kBAAAA,GAAE2vM,cAAc4lB,UAAAA,GAChBv1N,GAAE2vM,cAAc6lB,QAAQz8L,GAAQhK,QAAQga,EAAAA;AAGxChQ,cAAAA,GAAQ87L,WACV70N,GAAE+5K,eAAAA,GACFhhJ,GAAQ87L,OAAO70N,GAAE2vM,aAAAA;YAAAA,CAAAA,GAIrBppI,SAASvR,KAAKyR,YAAY5/B,EAAAA,GAE1BssK,GAAMsiB,mBAAmB5uL,EAAAA,GACzBquL,GAAU3I,SAASpZ,EAAAA,GAAAA,CAEF5sI,SAASmvJ,YAAY,MAAA;AAEpC,oBAAM,IAAIjqN,MAAM,+BAAA;AAElB0pN,YAAAA,KAAAA;UAAU,SACHhlM,IAAP;AACAsyG,YAAAA,MAAS30G,QAAQtiB,MAAM,sCAAsC2kB,EAAAA,GAC7DsyG,MAAS30G,QAAQ6T,KAAK,0BAAA;AACtB,gBAAA;AACEpH,qBAAOo1K,cAAc6lB,QAAQz8L,GAAQhK,UAAU,QAAQga,EAAAA,GACvDhQ,GAAQ87L,UAAU97L,GAAQ87L,OAAOt6L,OAAOo1K,aAAAA,GACxCwlB,KAAAA;YAAU,SACHhlM,IAAP;AACAsyG,cAAAA,MAAS30G,QAAQtiB,MAAM,wCAAwC2kB,EAAAA,GAC/DsyG,MAAS30G,QAAQtiB,MAAM,wBAAA,GACvBk7B,KA/EN,SAAgBA,IAAAA;AACd,oBAAIivL,MAAW,YAAYrlM,KAAK2hH,UAAU1kE,SAAAA,IAAa,WAAM,UAAU;AACvE,uBAAO7mC,GAAQxY,QAAQ,iBAAiBynM,EAAAA;cAAAA,EA6EnB,aAAa58L,KAAUA,GAAQ2N,UAjFjC,kCAAA,GAkFfnM,OAAOq7L,OAAOlvL,IAASqC,EAAAA;YAAAA;UAAAA,UAEzB;AACImsL,YAAAA,OACkC,cAAA,OAAzBA,GAAUW,cACnBX,GAAUW,YAAY1iB,EAAAA,IAEtB+hB,GAAU5I,gBAAAA,IAIVzlL,MACF0/B,SAASvR,KAAKk0D,YAAYriF,EAAAA,GAE5BouL,GAAAA;UAAAA;AAGF,iBAAOE;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;AC5GTp3N,QAAAA,GAAOD,UAAU,WAAA;AACf,cAAIo3N,KAAY3uJ,SAAS0vI,aAAAA;AACzB,cAAA,CAAKif,GAAUlJ;AACb,mBAAO,WAAA;YAAA;AAKT,mBAHIl8B,KAASvpH,SAASk5H,eAElBq2B,KAAS,CAAA,GACJ93N,KAAI,GAAGA,KAAIk3N,GAAUlJ,YAAYhuN;AACxC83N,YAAAA,GAAOnhN,KAAKugN,GAAUa,WAAW/3N,EAAAA,CAAAA;AAGnC,kBAAQ8xL,GAAOnuI,QAAQrQ,YAAAA,GAAAA;YACrB,KAAK;YACL,KAAK;AACHw+I,cAAAA,GAAOkmC,KAAAA;AACP;YAEF;AACElmC,cAAAA,KAAS;UAAA;AAKb,iBADAolC,GAAU5I,gBAAAA,GACH,WAAA;AACc,wBAAnB4I,GAAUjwN,QACViwN,GAAU5I,gBAAAA,GAEL4I,GAAUlJ,cACb8J,GAAOxmN,QAAQ,SAAS6jM,IAAAA;AACtB+hB,cAAAA,GAAU3I,SAASpZ,EAAAA;YAAAA,CAAAA,GAIvBrjB,MACAA,GAAO83B,MAAAA;UAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACpCX,iBAASqO,GAAWhoN,IAAAA;AAuBhB,iBAtBIA,cAAeiB,MACfjB,GAAIqC,QAAQrC,GAAIm1H,SAASn1H,GAAIQ,MAAM,WAAA;AAC/B,kBAAM,IAAIhD,MAAM,kBAAA;UAAA,IAEbwC,cAAejM,QACtBiM,GAAI+T,MAAM/T,GAAIqC,QAAQrC,GAAIm1H,SAAS,WAAA;AAC/B,kBAAM,IAAI33H,MAAM,kBAAA;UAAA,IAKxB/M,OAAOwhH,OAAOjyG,EAAAA,GAEdvP,OAAOm2F,oBAAoB5mF,EAAAA,EAAKqB,QAAQ,SAAU/Q,IAAAA;AAC9C,gBAAIkgC,KAAOxwB,GAAI1P,EAAAA;AAGI,wBAAA,OAARkgC,MAAqB//B,OAAOuhH,SAASxhF,EAAAA,KAC5Cw3L,GAAWx3L,EAAAA;UAAAA,CAAAA,GAIZxwB;QAAAA;AAGX,YAAIioN,KAAgBD,IAChBn5K,KAAWm5K;AACfC,QAAAA,GAAcjpL,UAAU6P;AAGxB,cAAMqpH,GAAAA;UAIJ5lK,YAAYpB,IAAAA;AAAAA,uBAENA,GAAK+0B,SAAoB/0B,GAAK+0B,OAAO,CAAA,IAEzCnvB,KAAKmvB,OAAO/0B,GAAK+0B,MACjBnvB,KAAKoxN,iBAAAA;UAAiB;UAGxBpnD,cAAAA;AACEhqK,iBAAKoxN,iBAAAA;UAAiB;QAAA;AAQ1B,iBAASC,GAAWn3N,IAAAA;AAClB,iBAAOA,GACJivB,QAAQ,MAAM,OAAA,EACdA,QAAQ,MAAM,MAAA,EACdA,QAAQ,MAAM,MAAA,EACdA,QAAQ,MAAM,QAAA,EACdA,QAAQ,MAAM,QAAA;QAAA;AAWnB,iBAASkgJ,GAAQioD,OAAansK,IAAAA;AAE5B,gBAAM1yB,KAAS94B,uBAAOY,OAAO,IAAA;AAE7B,qBAAWC,MAAO82N;AAChB7+L,YAAAA,GAAOj4B,EAAAA,IAAO82N,GAAS92N,EAAAA;AAOzB,iBALA2qD,GAAQ56C,QAAQ,SAASrB,IAAAA;AACvB,uBAAW1O,MAAO0O;AAChBupB,cAAAA,GAAOj4B,EAAAA,IAAO0O,GAAI1O,EAAAA;UAAAA,CAAAA,GAGEE;QAAA;AAe1B,cAMM62N,KAAqBznN,CAAAA,OAAAA,CAAAA,CAChBA,GAAK8oC;AAIhB,cAAM4+K,GAAAA;UAOJh2N,YAAYi2N,IAAWz9L,IAAAA;AACrBh0B,iBAAKgvC,SAAS,IACdhvC,KAAKunJ,cAAcvzH,GAAQuzH,aAC3BkqE,GAAUhiD,KAAKzvK,IAAAA;UAAAA;UAOjBinJ,QAAQjjH,IAAAA;AACNhkC,iBAAKgvC,UAAUqiL,GAAWrtL,EAAAA;UAAAA;UAO5BmjH,SAASr9I,IAAAA;AACP,gBAAA,CAAKynN,GAAkBznN,EAAAA;AAAO;AAE9B,gBAAI+uD,KAAY/uD,GAAK8oC;AAChB9oC,YAAAA,GAAK4nN,gBACR74J,KAAY,GAAG74D,KAAKunJ,cAAc1uF,OAEpC74D,KAAK2xN,KAAK94J,EAAAA;UAAAA;UAOZuuF,UAAUt9I,IAAAA;AACHynN,YAAAA,GAAkBznN,EAAAA,MAEvB9J,KAAKgvC,UArDU;UAAA;UA2DjB90C,QAAAA;AACE,mBAAO8F,KAAKgvC;UAAAA;UASd2iL,KAAK94J,IAAAA;AACH74D,iBAAKgvC,UAAU,gBAAgB6pB;UAAAA;QAAAA;AAQnC,cAAM+4J,GAAAA;UACJp2N,cAAAA;AAEEwE,iBAAKsnJ,WAAW,EAAE/tF,UAAU,CAAA,EAAA,GAC5Bv5D,KAAKgS,QAAQ,CAAChS,KAAKsnJ,QAAAA;UAAAA;UAGrB,IAAA,MAAA;AACE,mBAAOtnJ,KAAKgS,MAAMhS,KAAKgS,MAAM7T,SAAS,CAAA;UAAA;UAGxC,IAAA,OAAA;AAAa,mBAAO6B,KAAKsnJ;UAAAA;UAGzBrqI,IAAInT,IAAAA;AACF9J,iBAAK6zK,IAAIt6G,SAAS3pD,KAAK9F,EAAAA;UAAAA;UAIzBq9I,SAASv0G,IAAAA;AAEP,kBAAM9oC,KAAO,EAAE8oC,MAAAA,IAAM2mB,UAAU,CAAA,EAAA;AAC/Bv5D,iBAAKid,IAAInT,EAAAA,GACT9J,KAAKgS,MAAMpC,KAAK9F,EAAAA;UAAAA;UAGlBs9I,YAAAA;AACE,gBAAIpnJ,KAAKgS,MAAM7T,SAAS;AACtB,qBAAO6B,KAAKgS,MAAMd,IAAAA;UAAAA;UAMtBs2I,gBAAAA;AACE,mBAAOxnJ,KAAKonJ,UAAAA;AAAAA;UAAAA;UAGd1nI,SAAAA;AACE,mBAAOoE,KAAKC,UAAU/jB,KAAKsnJ,UAAU,MAAM,CAAA;UAAA;UAO7CmoB,KAAKxsB,IAAAA;AAEH,mBAAOjjJ,KAAKxE,YAAYq2N,MAAM5uE,IAASjjJ,KAAKsnJ,QAAAA;UAAAA;UAS9C,OAAA,MAAarE,IAASn5I,IAAAA;AAQpB,mBAPoB,YAAA,OAATA,KACTm5I,GAAQgE,QAAQn9I,EAAAA,IACPA,GAAKyvD,aACd0pF,GAAQkE,SAASr9I,EAAAA,GACjBA,GAAKyvD,SAAShvD,QAASivD,CAAAA,OAAUx5D,KAAK6xN,MAAM5uE,IAASzpF,EAAAA,CAAAA,GACrDypF,GAAQmE,UAAUt9I,EAAAA,IAEbm5I;UAAAA;UAMT,OAAA,UAAiBn5I,IAAAA;AACK,wBAAA,OAATA,MACNA,GAAKyvD,aAENzvD,GAAKyvD,SAAS1zD,MAAM8iH,CAAAA,OAAoB,YAAA,OAAPA,EAAAA,IAGnC7+G,GAAKyvD,WAAW,CAACzvD,GAAKyvD,SAASt5C,KAAK,EAAA,CAAA,IAEpCnW,GAAKyvD,SAAShvD,QAASivD,CAAAA,OAAAA;AACrBo4J,cAAAA,GAAUE,UAAUt4J,EAAAA;YAAAA,CAAAA;UAAAA;QAAAA;AA0B5B,cAAMu4J,WAAyBH,GAAAA;UAI7Bp2N,YAAYw4B,IAAAA;AACVohD,kBAAAA,GACAp1E,KAAKg0B,UAAUA;UAAAA;UAOjBkzH,WAAWljH,IAAM4O,IAAAA;AACF,mBAAT5O,OAEJhkC,KAAKmnJ,SAASv0G,EAAAA,GACd5yC,KAAKinJ,QAAQjjH,EAAAA,GACbhkC,KAAKonJ,UAAAA;UAAAA;UAMPH,QAAQjjH,IAAAA;AACO,mBAATA,MAEJhkC,KAAKid,IAAI+mB,EAAAA;UAAAA;UAOXqjH,eAAe17B,IAASnyH,IAAAA;AAEtB,kBAAMsQ,KAAO6hH,GAAQr9G;AACrBxE,YAAAA,GAAK8oC,OAAOp5C,IACZsQ,GAAK4nN,cAAAA,MACL1xN,KAAKid,IAAInT,EAAAA;UAAAA;UAGX49I,SAAAA;AAEE,mBADiB,IAAI8pE,GAAaxxN,MAAMA,KAAKg0B,OAAAA,EAC7B95B,MAAAA;UAAAA;UAGlButJ,WAAAA;AACE,mBAAA;UAAO;QAAA;AAgBX,iBAASxzH,GAAOme,IAAAA;AACd,iBAAKA,KACa,YAAA,OAAPA,KAAwBA,KAE5BA,GAAGne,SAHM;QAAA;AAoDlB,cAAM+9L,KAAa;AA4CnB,cACMzoD,KAAW,gBACXqC,KAAsB,iBACtBqmD,KAAY,qBACZjlD,KAAc,0EACdklD,KAAmB,gBA4BnB/oD,KAAmB,EACvBnqK,OAAO,gBAAgB0nJ,WAAW,EAAA,GAE9BykB,KAAmB,EACvBtyG,WAAW,UACX75D,OAAO,KACPC,KAAK,KACLmqK,SAAS,OACT1lJ,UAAU,CAACylJ,EAAAA,EAAAA,GAEPP,KAAoB,EACxB/vG,WAAW,UACX75D,OAAO,KACPC,KAAK,KACLmqK,SAAS,OACT1lJ,UAAU,CAACylJ,EAAAA,EAAAA,GAEPgpD,KAAqB,EACzBnzN,OAAO,6IAAA,GAUHgsK,KAAU,SAAShsK,IAAOC,IAAKmzN,KAAc,CAAA,GAAA;AACjD,gBAAMh4N,KAAOivK,GACX,EACExwG,WAAW,WACX75D,OAAAA,IACAC,KAAAA,IACAykB,UAAU,CAAA,EAAA,GAEZ0uM,EAAAA;AAQF,iBANAh4N,GAAKspB,SAAS9T,KAAKuiN,EAAAA,GACnB/3N,GAAKspB,SAAS9T,KAAK,EACjBipD,WAAW,UACX75D,OAAO,8CACP0nJ,WAAW,EAAA,CAAA,GAENtsJ;QAAAA,GAEHquK,KAAsBuC,GAAQ,MAAM,GAAA,GACpCtC,KAAuBsC,GAAQ,QAAQ,MAAA,GACvC+B,KAAoB/B,GAAQ,KAAK,GAAA,GACjC2C,KAAc,EAClB90G,WAAW,UACX75D,OAAOizN,IACPvrE,WAAW,EAAA,GAEPmiB,KAAgB,EACpBhwG,WAAW,UACX75D,OAAOguK,IACPtmB,WAAW,EAAA,GAEP2rE,KAAqB,EACzBx5J,WAAW,UACX75D,OAAOkzN,IACPxrE,WAAW,EAAA,GAEP4rE,KAAkB,EACtBz5J,WAAW,UACX75D,OAAOizN,KAAAA,mGASPvrE,WAAW,EAAA,GAEP0kB,KAAc,EAOlBpsK,OAAO,mBACP0kB,UAAU,CAAC,EACTm1C,WAAW,UACX75D,OAAO,MACPC,KAAK,cACLmqK,SAAS,MACT1lJ,UAAU,CACRylJ,IACA,EACEnqK,OAAO,MACPC,KAAK,MACLynJ,WAAW,GACXhjI,UAAU,CAACylJ,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,GAKb4C,KAAa,EACjBlzG,WAAW,SACX75D,OAAOuqK,IACP7iB,WAAW,EAAA,GAEPslB,KAAwB,EAC5BnzG,WAAW,SACX75D,OAAO4sK,IACPllB,WAAW,EAAA,GAEP6rE,KAAe,EAEnBvzN,OAAO,wBACP0nJ,WAAW,EAAA;AAoBb,YAAIomB,IAAqBnzK,OAAOwhH,OAAO,EACnC/xC,WAAW,MACXopJ,kBAzKqB,QA0KrBjpD,UAAUA,IACVqC,qBAAqBA,IACrBqmD,WAAWA,IACXjlD,aAAaA,IACbklD,kBAAkBA,IAClBvmD,gBAzKmB,gJA0KnBD,SArKY,CAAC93B,KAAO,CAAA,MAAA;AACtB,gBAAM6+E,KAAe;AAQrB,iBAPI7+E,GAAKt+F,WACPs+F,GAAK50I,QApGT,YAAmBg7C,IAAAA;AAEjB,mBADeA,GAAKl1C,IAAKoL,CAAAA,OAAM+jB,GAAO/jB,EAAAA,CAAAA,EAAI+P,KAAK,EAAA;UAAA,EAoG3CwyM,IACA,QACA7+E,GAAKt+F,QACL,MAAA,IAEG+zH,GAAQ,EACbxwG,WAAW,QACX75D,OAAOyzN,IACPxzN,KAAK,KACLynJ,WAAW,GAEX,YAAY,CAACrtJ,IAAGq5N,OAAAA;AACE,kBAAZr5N,GAAEuF,SAAa8zN,GAAK1oD,YAAAA;UAAAA,EAAAA,GAEzBp2B,EAAAA;QAAAA,GAoJDu1B,kBAAkBA,IAClBgC,kBAAkBA,IAClBvC,mBAAmBA,IACnBupD,oBAAoBA,IACpBnnD,SAASA,IACTvC,qBAAqBA,IACrBC,sBAAsBA,IACtBqE,mBAAmBA,IACnBY,aAAaA,IACb9E,eAAeA,IACfwpD,oBAAoBA,IACpBC,iBAAiBA,IACjBlnD,aAAaA,IACbW,YAAYA,IACZC,uBAAuBA,IACvBumD,cAAcA,IACd/kD,mBApCsB,SAASpzK,IAAAA;AACjC,iBAAOT,OAAOq+B,OAAO59B,IACnB,EAEE,YAAY,CAACf,IAAGq5N,OAAAA;AAAWA,YAAAA,GAAKvjM,KAAKwjM,cAAct5N,GAAE,CAAA;UAAA,GAErD,UAAU,CAACA,IAAGq5N,OAAAA;AAAeA,YAAAA,GAAKvjM,KAAKwjM,gBAAgBt5N,GAAE,CAAA,KAAIq5N,GAAK1oD,YAAAA;UAAAA,EAAAA,CAAAA;QAAAA,EAAAA,CAAAA;AAyDxE,iBAAS4oD,GAAsB/lM,IAAOkkC,IAAAA;AAErB,kBADAlkC,GAAM+D,MAAM/D,GAAMjuB,QAAQ,CAAA,KAEvCmyD,GAASi5G,YAAAA;QAAAA;AASb,iBAAS8B,GAAc1xK,IAAMypH,IAAAA;AACtBA,UAAAA,MACAzpH,GAAK0xK,kBAOV1xK,GAAK4E,QAAQ,SAAS5E,GAAK0xK,cAAcr9I,MAAM,GAAA,EAAKxO,KAAK,GAAA,IAAO,uBAChE7lB,GAAKy4N,gBAAgBD,IACrBx4N,GAAK6uK,WAAW7uK,GAAK6uK,YAAY7uK,GAAK0xK,eAAAA,OAC/B1xK,GAAK0xK,eAAAA,WAKR1xK,GAAKssJ,cAAyBtsJ,GAAKssJ,YAAY;QAAA;AAOrD,iBAASosE,GAAe14N,IAAM24N,IAAAA;AACvB53N,gBAAM4I,QAAQ3J,GAAKgvK,OAAAA,MAExBhvK,GAAKgvK,UA7UP,YAAmBpvH,IAAAA;AAEjB,mBADe,MAAMA,GAAKl1C,IAAKoL,CAAAA,OAAM+jB,GAAO/jB,EAAAA,CAAAA,EAAI+P,KAAK,GAAA,IAAO;UAAA,EA4U7CgsJ,GAAU7xK,GAAKgvK,OAAAA;QAAAA;AAOhC,iBAAS4pD,GAAa54N,IAAM24N,IAAAA;AAC1B,cAAK34N,GAAKyyB,OAAV;AACA,gBAAIzyB,GAAK4E,SAAS5E,GAAK6E;AAAK,oBAAM,IAAIyH,MAAM,0CAAA;AAE5CtM,YAAAA,GAAK4E,QAAQ5E,GAAKyyB,OAAAA,OACXzyB,GAAKyyB;UAAAA;QAAAA;AAOd,iBAASomM,GAAiB74N,IAAM24N,IAAAA;AAAAA,qBAE1B34N,GAAKssJ,cAAyBtsJ,GAAKssJ,YAAY;QAAA;AAIrD,cAAMwsE,KAAkB,CACtB,MACA,OACA,OACA,MACA,OACA,MACA,MACA,QACA,UACA,QACA,OAAA;AAWF,iBAASC,GAAgBC,IAAaC,IAAiBx6J,KARrB,WAAA;AAUhC,gBAAMy6J,KAAmB,CAAA;AAiBzB,iBAb2B,YAAA,OAAhBF,KACT9/K,GAAYulB,IAAWu6J,GAAY3kM,MAAM,GAAA,CAAA,IAChCtzB,MAAM4I,QAAQqvN,EAAAA,IACvB9/K,GAAYulB,IAAWu6J,EAAAA,IAEvBz5N,OAAO0J,KAAK+vN,EAAAA,EAAa7oN,QAAQ,SAASsuD,IAAAA;AAExCl/D,mBAAOq+B,OACLs7L,IACAH,GAAgBC,GAAYv6J,EAAAA,GAAYw6J,IAAiBx6J,EAAAA,CAAAA;UAAAA,CAAAA,GAIxDy6J;AAYP,mBAAShgL,GAAYulB,IAAW06J,IAAAA;AAC1BF,YAAAA,OACFE,KAAcA,GAAYzuN,IAAIoL,CAAAA,OAAKA,GAAE4b,YAAAA,CAAAA,IAEvCynM,GAAYhpN,QAAQ,SAAS4/J,IAAAA;AAC3B,oBAAMrjJ,KAAOqjJ,GAAQ17I,MAAM,GAAA;AAC3B6kM,cAAAA,GAAiBxsM,GAAK,CAAA,CAAA,IAAM,CAAC+xC,IAAW26J,GAAgB1sM,GAAK,CAAA,GAAIA,GAAK,CAAA,CAAA,CAAA;YAAA,CAAA;UAAA;QAAA;AAa5E,iBAAS0sM,GAAgBrpD,IAASspD,IAAAA;AAGhC,iBAAIA,KACK5iL,OAAO4iL,EAAAA,IAUlB,SAAuBtpD,IAAAA;AACrB,mBAAO+oD,GAAgBxrN,SAASyiK,GAAQr+I,YAAAA,CAAAA;UAAAA,EARnBq+I,EAAAA,IAAW,IAAI;QAAA;AAsBtC,iBAASupD,GAAgB12J,IAAAA,EAAU,SAAE09E,GAAAA,GAAAA;AAOnC,mBAASi5E,GAAOz5N,IAAOm5B,IAAAA;AACrB,mBAAO,IAAI/H,OACT2I,GAAO/5B,EAAAA,GACP,OAAO8iE,GAASyvG,mBAAmB,MAAM,OAAOp5I,KAAS,MAAM,GAAA;UAAA;AAiBnE,gBAAMugM,GAAAA;YACJp4N,cAAAA;AACEwE,mBAAK6zN,eAAe,CAAA,GAEpB7zN,KAAK8zN,UAAU,CAAA,GACf9zN,KAAK+zN,UAAU,GACf/zN,KAAK4xC,WAAW;YAAA;YAIlBoiL,QAAQ5hL,IAAIwhG,IAAAA;AACVA,cAAAA,GAAKhiG,WAAW5xC,KAAK4xC,YAErB5xC,KAAK6zN,aAAa7zN,KAAK+zN,OAAAA,IAAWngF,IAClC5zI,KAAK8zN,QAAQlkN,KAAK,CAACgkI,IAAMxhG,EAAAA,CAAAA,GACzBpyC,KAAK+zN,WA5eX,SAA0B3hL,IAAAA;AACxB,uBAAO,IAAK9mB,OAAO8mB,GAAG1wC,SAAAA,IAAa,GAAA,EAAMmnB,KAAK,EAAA,EAAI1qB,SAAS;cAAA,EA2etBi0C,EAAAA,IAAM;YAAA;YAGzC6hL,UAAAA;AAC8B,oBAAxBj0N,KAAK8zN,QAAQ31N,WAGf6B,KAAK6oB,OAAO,MAAM;AAEpB,oBAAMqrM,KAAcl0N,KAAK8zN,QAAQhvN,IAAI6jH,CAAAA,OAAMA,GAAG,CAAA,CAAA;AAC9C3oH,mBAAKm0N,YAAYR,GArdvB,SAAcS,IAASz5M,KAAY,KAAA;AACjC,oBAAI05M,KAAc;AAElB,uBAAOD,GAAQtvN,IAAK8jB,CAAAA,OAAAA;AAClByrM,kBAAAA,MAAe;AACf,wBAAMt2N,KAASs2N;AACf,sBAAIjiL,KAAKne,GAAOrL,EAAAA,GACZilD,KAAM;AAEV,yBAAOz7B,GAAGj0C,SAAS,KAAG;AACpB,0BAAM0uB,KAAQmlM,GAAWnpM,KAAKupB,EAAAA;AAC9B,wBAAA,CAAKvlB,IAAO;AACVghD,sBAAAA,MAAOz7B;AACP;oBAAA;AAEFy7B,oBAAAA,MAAOz7B,GAAGnG,UAAU,GAAGpf,GAAMjuB,KAAAA,GAC7BwzC,KAAKA,GAAGnG,UAAUpf,GAAMjuB,QAAQiuB,GAAM,CAAA,EAAG1uB,MAAAA,GACrB,SAAhB0uB,GAAM,CAAA,EAAG,CAAA,KAAeA,GAAM,CAAA,IAEhCghD,MAAO,OAAO7pD,OAAO6sB,OAAOhkB,GAAM,CAAA,CAAA,IAAM9uB,EAAAA,KAExC8vE,MAAOhhD,GAAM,CAAA,GACI,QAAbA,GAAM,CAAA,KACRwnM;kBAAAA;AAIN,yBAAOxmJ;gBAAAA,CAAAA,EACN/oE,IAAIstC,CAAAA,OAAM,IAAIA,KAAAA,EAAOnyB,KAAKtF,EAAAA;cAAAA,EAybIu5M,EAAAA,GAAAA,IAAc,GAC3Cl0N,KAAK2jD,YAAY;YAAA;YAInB96B,KAAK7tB,IAAAA;AACHgF,mBAAKm0N,UAAUxwK,YAAY3jD,KAAK2jD;AAChC,oBAAM92B,KAAQ7sB,KAAKm0N,UAAUtrM,KAAK7tB,EAAAA;AAClC,kBAAA,CAAK6xB;AAAS,uBAAO;AAGrB,oBAAM5zB,KAAI4zB,GAAMvI,UAAU,CAACqkG,IAAI1vH,OAAMA,KAAI,KAAA,WAAK0vH,EAAAA,GAExCg+D,KAAY3mL,KAAK6zN,aAAa56N,EAAAA;AAKpC,qBAFA4zB,GAAM9Z,OAAO,GAAG9Z,EAAAA,GAETU,OAAOq+B,OAAOnL,IAAO85J,EAAAA;YAAAA;UAAAA;AAmChC,gBAAM2tC,GAAAA;YACJ94N,cAAAA;AAEEwE,mBAAKo3D,QAAQ,CAAA,GAEbp3D,KAAKu0N,eAAe,CAAA,GACpBv0N,KAAK2N,QAAQ,GAEb3N,KAAK2jD,YAAY,GACjB3jD,KAAKw0N,aAAa;YAAA;YAIpBC,WAAW71N,IAAAA;AACT,kBAAIoB,KAAKu0N,aAAa31N,EAAAA;AAAQ,uBAAOoB,KAAKu0N,aAAa31N,EAAAA;AAEvD,oBAAM84G,KAAU,IAAIk8G;AAIpB,qBAHA5zN,KAAKo3D,MAAMh8D,MAAMwD,EAAAA,EAAO2L,QAAQ,CAAA,CAAE6nC,IAAIwhG,EAAAA,MAAUl8B,GAAQs8G,QAAQ5hL,IAAIwhG,EAAAA,CAAAA,GACpEl8B,GAAQu8G,QAAAA,GACRj0N,KAAKu0N,aAAa31N,EAAAA,IAAS84G,IACpBA;YAAAA;YAGTg9G,6BAAAA;AACE,qBAA2B,MAApB10N,KAAKw0N;YAAAA;YAGdG,cAAAA;AACE30N,mBAAKw0N,aAAa;YAAA;YAIpBR,QAAQ5hL,IAAIwhG,IAAAA;AACV5zI,mBAAKo3D,MAAMxnD,KAAK,CAACwiC,IAAIwhG,EAAAA,CAAAA,GACH,YAAdA,GAAK1zI,QAAkBF,KAAK2N;YAAAA;YAIlCkb,KAAK7tB,IAAAA;AACH,oBAAM3B,KAAI2G,KAAKy0N,WAAWz0N,KAAKw0N,UAAAA;AAC/Bn7N,cAAAA,GAAEsqD,YAAY3jD,KAAK2jD;AACnB,kBAAIlxB,KAASp5B,GAAEwvB,KAAK7tB,EAAAA;AAiCpB,kBAAIgF,KAAK00N,2BAAAA;AACP,oBAAIjiM,MAAUA,GAAO7zB,UAAUoB,KAAK2jD;AAAAA;qBAAkB;AACpD,wBAAMixK,KAAK50N,KAAKy0N,WAAW,CAAA;AAC3BG,kBAAAA,GAAGjxK,YAAY3jD,KAAK2jD,YAAY,GAChClxB,KAASmiM,GAAG/rM,KAAK7tB,EAAAA;gBAAAA;AAYrB,qBARIy3B,OACFzyB,KAAKw0N,cAAc/hM,GAAOmf,WAAW,GACjC5xC,KAAKw0N,eAAex0N,KAAK2N,SAE3B3N,KAAK20N,YAAAA,IAIFliM;YAAAA;UAAAA;AA6IX,cAHKuqC,GAAS63J,uBAAoB73J,GAAS63J,qBAAqB,CAAA,IAG5D73J,GAASt5C,YAAYs5C,GAASt5C,SAAShc,SAAS,MAAA;AAClD,kBAAM,IAAIhB,MAAM,2FAAA;AAMlB,iBAFAs2D,GAAS83J,mBAAmBzrD,GAAQrsG,GAAS83J,oBAAoB,CAAA,CAAA,GAjFjE,SAASC,GAAY36N,IAAMypH,IAAAA;AACzB,kBAAMmxG,KAAkCj7N;AACxC,gBAAIK,GAAK66N;AAAY,qBAAOD;AAE5B,aAGEhC,EAAAA,EACAzoN,QAAQyjE,CAAAA,OAAOA,GAAI5zE,IAAMypH,EAAAA,CAAAA,GAE3B7mD,GAAS63J,mBAAmBtqN,QAAQyjE,CAAAA,OAAOA,GAAI5zE,IAAMypH,EAAAA,CAAAA,GAGrDzpH,GAAKy4N,gBAAgB,MAErB,CACE/mD,IAGAgnD,IAEAG,EAAAA,EACA1oN,QAAQyjE,CAAAA,OAAOA,GAAI5zE,IAAMypH,EAAAA,CAAAA,GAE3BzpH,GAAK66N,aAAAA;AAEL,gBAAIC,KAAiB;AAWrB,gBAV6B,YAAA,OAAlB96N,GAAK6uK,aACdisD,KAAiB96N,GAAK6uK,SAASiB,UAAAA,OACxB9vK,GAAK6uK,SAASiB,WAGnB9vK,GAAK6uK,aACP7uK,GAAK6uK,WAAWkqD,GAAgB/4N,GAAK6uK,UAAUjsG,GAASyvG,gBAAAA,IAItDryK,GAAK+6N,WAAWD;AAClB,oBAAM,IAAIxuN,MAAM,gGAAA;AAgClB,mBA3BAwuN,KAAiBA,MAAkB96N,GAAK+6N,WAAW,OACnDH,GAAMI,mBAAmBzB,GAAOuB,IAAAA,IAAgB,GAE5CrxG,OACGzpH,GAAK4E,UAAO5E,GAAK4E,QAAQ,UAC9Bg2N,GAAMK,UAAU1B,GAAOv5N,GAAK4E,KAAAA,GACxB5E,GAAKk7N,mBAAgBl7N,GAAK6E,MAAM7E,GAAK4E,QACpC5E,GAAK6E,OAAQ7E,GAAK2uK,mBAAgB3uK,GAAK6E,MAAM,UAC9C7E,GAAK6E,QAAK+1N,GAAMO,QAAQ5B,GAAOv5N,GAAK6E,GAAAA,IACxC+1N,GAAMQ,gBAAgBvhM,GAAO75B,GAAK6E,GAAAA,KAAQ,IACtC7E,GAAK2uK,kBAAkBllD,GAAO2xG,kBAChCR,GAAMQ,kBAAkBp7N,GAAK6E,MAAM,MAAM,MAAM4kH,GAAO2xG,iBAGtDp7N,GAAKgvK,YAAS4rD,GAAMS,YAAY9B,GAAuCv5N,GAAY,OAAA,IAClFA,GAAKspB,aAAUtpB,GAAKspB,WAAW,CAAA,IAEpCtpB,GAAKspB,WAAW,CAAA,EAAG7J,OAAAA,GAAUzf,GAAKspB,SAAS5e,IAAI,SAASxL,IAAAA;AACtD,qBAoDN,SAA2Bc,IAAAA;AACrBA,gBAAAA,GAAKowK,YAAAA,CAAapwK,GAAKs7N,mBACzBt7N,GAAKs7N,iBAAiBt7N,GAAKowK,SAAS1lK,IAAI,SAAS6wN,IAAAA;AAC/C,yBAAOtsD,GAAQjvK,IAAM,EAAEowK,UAAU,KAAA,GAAQmrD,EAAAA;gBAAAA,CAAAA;AAO7C,oBAAIv7N,GAAKs7N;AACP,yBAAOt7N,GAAKs7N;AAOd,oBAAIE,GAAmBx7N,EAAAA;AACrB,yBAAOivK,GAAQjvK,IAAM,EAAEuwK,QAAQvwK,GAAKuwK,SAAStB,GAAQjvK,GAAKuwK,MAAAA,IAAU,KAAA,CAAA;AAGtE,oBAAIhxK,OAAOuhH,SAAS9gH,EAAAA;AAClB,yBAAOivK,GAAQjvK,EAAAA;AAIjB,uBAAOA;cAAAA,EA/E4B,WAANd,KAAec,KAAOd,EAAAA;YAAAA,CAAAA,CAAAA,GAEjDc,GAAKspB,SAASnZ,QAAQ,SAASjR,IAAAA;AAAKy7N,cAAAA,GAA8B95N,IAAK+5N,EAAAA;YAAAA,CAAAA,GAEnE56N,GAAKuwK,UACPoqD,GAAY36N,GAAKuwK,QAAQ9mD,EAAAA,GAG3BmxG,GAAMt9G,UA3HR,SAAwBt9G,IAAAA;AACtB,oBAAMy7N,KAAK,IAAIvB;AAWf,qBATAl6N,GAAKspB,SAASnZ,QAAQurN,CAAAA,OAAQD,GAAG7B,QAAQ8B,GAAK92N,OAAO,EAAE68F,MAAMi6H,IAAM51N,MAAM,QAAA,CAAA,CAAA,GAErE9F,GAAKo7N,iBACPK,GAAG7B,QAAQ55N,GAAKo7N,eAAe,EAAEt1N,MAAM,MAAA,CAAA,GAErC9F,GAAKgvK,WACPysD,GAAG7B,QAAQ55N,GAAKgvK,SAAS,EAAElpK,MAAM,UAAA,CAAA,GAG5B21N;YAAAA,EA+GwBb,EAAAA,GACxBA;UAAAA,EAa4B/5N,EAAA;QAAA;AAcvC,iBAAS26N,GAAmBx7N,IAAAA;AAC1B,iBAAA,CAAA,CAAKA,OAEEA,GAAK2uK,kBAAkB6sD,GAAmBx7N,GAAKuwK,MAAAA;QAAAA;AAmDxD,iBAASorD,GAAex3J,IAAAA;AACtB,gBAAMhiC,KAAY,EAChB9W,OAAO,CAAC,YAAY,QAAQ,YAAA,GAC5B0J,MAAM,WAAA;AACJ,mBAAO,EACL6mM,kBAAkB,IAClBC,iBAAAA,MAAiB;UAAA,GAGrBC,UAAU,EACRr9J,YAAAA;AACE,mBAAI74D,KAAKi2N,kBAAwB,KAE1B,UAAUj2N,KAAKg2N;UAAAA,GAExBG,cAAAA;AAEE,gBAAA,CAAKn2N,KAAKo2N,cAAAA,CAAe73J,GAAKooF,YAAY3mJ,KAAKg9D,QAAAA;AAG7C,qBAFAj0C,QAAQ6T,KAAK,iBAAiB58B,KAAKg9D,6CAAAA,GACnCh9D,KAAKi2N,kBAAAA,MACE5E,GAAWrxN,KAAKi3C,IAAAA;AAGzB,gBAAIxkB,KAAS,CAAA;AAQb,mBAPIzyB,KAAKo2N,cACP3jM,KAAS8rC,GAAKzB,cAAc98D,KAAKi3C,IAAAA,GACjCj3C,KAAKg2N,mBAAmBvjM,GAAOuqC,aAE/BvqC,KAAS8rC,GAAKQ,UAAU/+D,KAAKg9D,UAAUh9D,KAAKi3C,MAAMj3C,KAAK4nJ,cAAAA,GACvD5nJ,KAAKg2N,mBAAmBh2N,KAAKg9D,WAExBvqC,GAAOv4B;UAAAA,GAEhBk8N,aAAAA;AACE,mBAAA,CAAQp2N,KAAKg9D,aAtCa9iE,KAsCwB8F,KAAKq2N,YArCtDh6I,QAAQniF,MAAmB,OAAVA,EAAAA;AAD1B,gBAAkCA;UAAAA,GAwC5B0tJ,gBAAc,MAAA,KACL,GAKXviE,OAAOpsB,IAAAA;AACL,mBAAOA,GAAc,OAAO,CAAA,GAAI,CAC9BA,GAAc,QAAQ,EACpBq9J,OAAOt2N,KAAK64D,WACZ09J,UAAU,EAAE5iI,WAAW3zF,KAAKm2N,YAAAA,EAAAA,CAAAA,CAAAA,CAAAA;UAAAA,EAAAA;AAapC,iBAAO,EAAE55L,WAAAA,IAAWi6L,WANF,EAChBC,QAAQC,IAAAA;AACNA,YAAAA,GAAI/7I,UAAU,eAAep+C,EAAAA;UAAAA,EAAAA,EAAAA;QAAAA;AAUnC,cAAMo6L,KAAkB,EACtB,0BAA0B,CAAA,EAAGhuG,IAAAA,IAAIl2F,QAAAA,IAAQuR,MAAAA,GAAAA,MAAAA;AACvC,gBAAM4yL,KAAiBC,EAAWluG,EAAAA;AAClC,cAAA,CAAKiuG,GAAez4N;AAAQ;AAE5B,gBAAM24N,KAAat1J,SAASvI,cAAc,KAAA;AAC1C69J,UAAAA,GAAWnjI,YAAYlhE,GAAOv4B,OAC9Bu4B,GAAOv4B,QA2DX,SAAsBo3N,IAAU6E,IAAaj8N,IAAAA;AAC3C,gBAAI68N,KAAY,GACZtkM,KAAS;AACb,kBAAMukM,KAAY,CAAA;AAElB,qBAASC,KAAAA;AACP,qBAAK3F,GAASnzN,UAAWg4N,GAAYh4N,SAGjCmzN,GAAS,CAAA,EAAGvzN,WAAWo4N,GAAY,CAAA,EAAGp4N,SAChCuzN,GAAS,CAAA,EAAGvzN,SAASo4N,GAAY,CAAA,EAAGp4N,SAAUuzN,KAAW6E,KAkBnC,YAAzBA,GAAY,CAAA,EAAGthE,QAAoBy8D,KAAW6E,KArB5C7E,GAASnzN,SAASmzN,KAAW6E;YAAAA;AA2BxC,qBAAS38L,GAAK1vB,IAAAA;AAEZ,uBAASotN,GAAgB3wG,IAAAA;AACvB,uBAAO,MAAMA,GAAKf,WAAW,OAAO6rG,GAAW9qG,GAAKrsH,KAAAA,IAAS;cAAA;AAG/Du4B,cAAAA,MAAU,MAAMkgB,GAAI7oC,EAAAA,IAAQ,CAAA,EAAGhF,IAAI1L,KAAK0Q,GAAK47G,YAAYwxG,EAAAA,EAAiBj3M,KAAK,EAAA,IAAM;YAAA;AAMvF,qBAASwZ,GAAM3vB,IAAAA;AACb2oB,cAAAA,MAAU,OAAOkgB,GAAI7oC,EAAAA,IAAQ;YAAA;AAM/B,qBAASu7E,GAAOwvE,IAAAA;AAAAA,eACG,YAAhBA,GAAMA,QAAoBr7H,KAAOC,IAAOo7H,GAAM/qJ,IAAAA;YAAAA;AAGjD,mBAAOwnN,GAASnzN,UAAUg4N,GAAYh4N,UAAQ;AAC5C,kBAAI4wH,KAASkoG,GAAAA;AAGb,kBAFAxkM,MAAU4+L,GAAWn3N,GAAM+xC,UAAU8qL,IAAWhoG,GAAO,CAAA,EAAGhxH,MAAAA,CAAAA,GAC1Dg5N,KAAYhoG,GAAO,CAAA,EAAGhxH,QAClBgxH,OAAWuiG,IAAU;AAOvB0F,gBAAAA,GAAUx0N,QAAAA,EAAU+H,QAAQkvB,EAAAA;AAC5B,mBAAA;AACE4rD,kBAAAA,GAAO0pC,GAAOh8G,OAAO,GAAG,CAAA,EAAG,CAAA,CAAA,GAC3Bg8G,KAASkoG,GAAAA;gBAAAA,SACFloG,OAAWuiG,MAAYviG,GAAO5wH,UAAU4wH,GAAO,CAAA,EAAGhxH,WAAWg5N;AACtEC,gBAAAA,GAAUx0N,QAAAA,EAAU+H,QAAQivB,EAAAA;cAAAA;AAEJ,4BAApBu1F,GAAO,CAAA,EAAG8lC,QACZmiE,GAAUpnN,KAAKm/G,GAAO,CAAA,EAAGjlH,IAAAA,IAEzBktN,GAAU9lN,IAAAA,GAEZm0E,GAAO0pC,GAAOh8G,OAAO,GAAG,CAAA,EAAG,CAAA,CAAA;YAAA;AAG/B,mBAAO0f,KAAS4+L,GAAWn3N,GAAMs0B,OAAOuoM,EAAAA,CAAAA;UAAAA,EA9IVH,IAAgBC,EAAWC,EAAAA,GAAa9yL,EAAAA;QAAAA,EAAAA;AAgBxE,iBAAS2O,GAAI7oC,IAAAA;AACX,iBAAOA,GAAK07G,SAAS15F,YAAAA;QAAAA;AAMvB,iBAAS+qM,EAAW/sN,IAAAA;AAElB,gBAAM2oB,KAAS,CAAA;AA0Bf,iBAzBA,SAAU0kM,GAAYrtN,IAAM/L,IAAAA;AAC1B,qBAASy7D,KAAQ1vD,GAAKu9G,YAAY7tD,IAAOA,KAAQA,GAAMy2I;AAC9B,oBAAnBz2I,GAAM3vD,WACR9L,MAAUy7D,GAAM2iI,UAAUh+L,SACE,MAAnBq7D,GAAM3vD,aACf4oB,GAAO7iB,KAAK,EACVilJ,OAAO,SACP92J,QAAQA,IACR+L,MAAM0vD,GAAAA,CAAAA,GAERz7D,KAASo5N,GAAY39J,IAAOz7D,EAAAA,GAIvB40C,GAAI6mB,EAAAA,EAAO3sC,MAAM,iBAAA,KACpB4F,GAAO7iB,KAAK,EACVilJ,OAAO,QACP92J,QAAQA,IACR+L,MAAM0vD,GAAAA,CAAAA;AAKd,mBAAOz7D;UAAAA,EACN+L,IAAM,CAAA,GACF2oB;QAAAA;AAwGT,cAAM2kM,KAAmB,CAAA,GAKnB3wN,KAASk7B,CAAAA,OAAAA;AACb5Y,kBAAQtiB,MAAMk7B,EAAAA;QAAAA,GAOV/E,KAAO,CAAC+E,OAAYqY,OAAAA;AACxBjxB,kBAAQ68D,IAAI,SAASjkD,MAAAA,GAAcqY,EAAAA;QAAAA,GAO/By8B,KAAa,CAACt8B,IAASxY,OAAAA;AACvBy1L,UAAAA,GAAiB,GAAGj9K,MAAWxY,IAAAA,MAEnC5Y,QAAQ68D,IAAI,oBAAoBzrC,OAAYxY,IAAAA,GAC5Cy1L,GAAiB,GAAGj9K,MAAWxY,IAAAA,IAAAA;QAAa,GAQxC01L,KAAWhG,IACXiG,KAAYjuD,IACZkuD,KAAWv9N,OAAO,SAAA;AAs/BxB,YAAI+kE,KAh/BS,SAASR,IAAAA;AAGpB,gBAAMi5J,KAAY79N,uBAAOY,OAAO,IAAA,GAE1BkxK,KAAU9xK,uBAAOY,OAAO,IAAA,GAExBmgJ,KAAU,CAAA;AAIhB,cAAI+8E,KAAAA;AACJ,gBAAMC,KAAc,0BACdC,KAAqB,uFAErBC,KAAqB,EAAEC,mBAAAA,MAAyBr+N,MAAM,cAAckqB,UAAU,CAAA,EAAA;AAKpF,cAAIsQ,KAAU,EACZ8jM,eAAe,sBACfC,kBAAkB,+BAClBxwE,aAAa,SACbywE,YAAY,MACZC,OAAAA,OACAT,WAAW,MAGX7vE,WAAWoqE,GAAAA;AASb,mBAASmG,GAAmBnxE,IAAAA;AAC1B,mBAAO/yH,GAAQ8jM,cAAcvsM,KAAKw7H,EAAAA;UAAAA;AAiDpC,mBAAShoF,GAAUo5J,IAAoBC,IAAexwE,IAAgBywE,IAAAA;AACpE,gBAAIphL,KAAO,IACP8vG,KAAe;AACU,wBAAA,OAAlBqxE,MACTnhL,KAAOkhL,IACPvwE,KAAiBwwE,GAAcxwE,gBAC/Bb,KAAeqxE,GAAcp7J,UAG7Bq7J,KAAAA,WAGA5hJ,GAAW,UAAU,qDAAA,GACrBA,GAAW,UAAU,uGAAA,GACrBswE,KAAeoxE,IACflhL,KAAOmhL;AAIT,kBAAMtgN,KAAU,EACdm/B,MAAAA,IACA+lB,UAAU+pF,GAAAA;AAIZuxE,YAAAA,GAAK,oBAAoBxgN,EAAAA;AAIzB,kBAAM2a,KAAS3a,GAAQ2a,SACnB3a,GAAQ2a,SACR8lM,GAAWzgN,GAAQklD,UAAUllD,GAAQm/B,MAAM2wG,IAAgBywE,EAAAA;AAM/D,mBAJA5lM,GAAOwkB,OAAOn/B,GAAQm/B,MAEtBqhL,GAAK,mBAAmB7lM,EAAAA,GAEjBA;UAAAA;AAYT,mBAAS8lM,GAAWxxE,IAAcyxE,IAAiB5wE,IAAgBywE,IAAAA;AAOjE,qBAASI,GAAYr+N,IAAMyyB,IAAAA;AACzB,oBAAM6rM,KAAY17J,IAASyvG,mBAAmB5/I,GAAM,CAAA,EAAGf,YAAAA,IAAgBe,GAAM,CAAA;AAC7E,qBAAOlzB,OAAOkB,UAAUC,eAAe1B,KAAKgB,GAAK6uK,UAAUyvD,EAAAA,KAAct+N,GAAK6uK,SAASyvD,EAAAA;YAAAA;AAmEzF,qBAASC,KAAAA;AACgB,sBAAnB9kD,GAAIhJ,cA3BV,WAAA;AACE,oBAAmB,OAAf+tD;AAAmB;AAEvB,oBAAInmM,KAAS;AAEb,oBAA+B,YAAA,OAApBohJ,GAAIhJ,aAA0B;AACvC,sBAAA,CAAK2sD,GAAU3jD,GAAIhJ,WAAAA;AAEjB,2BAAA,KADAl/C,GAAQs7B,QAAQ2xE,EAAAA;AAGlBnmM,kBAAAA,KAAS8lM,GAAW1kD,GAAIhJ,aAAa+tD,IAAAA,MAAkBC,GAAchlD,GAAIhJ,WAAAA,CAAAA,GACzEguD,GAAchlD,GAAIhJ,WAAAA,IAA4Cp4I,GAAU;gBAAA;AAExEA,kBAAAA,KAASqqC,GAAc87J,IAAY/kD,GAAIhJ,YAAY1sK,SAAS01K,GAAIhJ,cAAc,IAAA;AAO5EgJ,gBAAAA,GAAIntB,YAAY,MAClBA,MAAaj0H,GAAOi0H,YAEtB/6B,GAAQ07B,eAAe50H,GAAOk5F,SAASl5F,GAAOuqC,QAAAA;cAAAA,EAK5C87J,IAlEJ,WAAA;AACE,oBAAA,CAAKjlD,GAAI5K;AAEP,yBAAA,KADAt9C,GAAQs7B,QAAQ2xE,EAAAA;AAIlB,oBAAIj1K,KAAY;AAChBkwH,gBAAAA,GAAIuhD,iBAAiBzxK,YAAY;AACjC,oBAAI92B,KAAQgnJ,GAAIuhD,iBAAiBvsM,KAAK+vM,EAAAA,GAClCjpL,KAAM;AAEV,uBAAO9iB,MAAO;AACZ8iB,kBAAAA,MAAOipL,GAAW3sL,UAAU0X,IAAW92B,GAAMjuB,KAAAA;AAC7C,wBAAMuwB,KAAOspM,GAAY5kD,IAAKhnJ,EAAAA;AAC9B,sBAAIsC,IAAM;AACR,0BAAA,CAAOyjB,IAAMmmL,EAAAA,IAAoB5pM;AAKjC,wBAJAw8F,GAAQs7B,QAAQt3G,EAAAA,GAChBA,KAAM,IAEN+2G,MAAaqyE,IACTnmL,GAAKkwI,WAAW,GAAA;AAGlBnzI,sBAAAA,MAAO9iB,GAAM,CAAA;yBACR;AACL,4BAAMi6E,KAAW9pC,IAAS83J,iBAAiBliL,EAAAA,KAASA;AACpD+4E,sBAAAA,GAAQu7B,WAAWr6H,GAAM,CAAA,GAAIi6E,EAAAA;oBAAAA;kBAAAA;AAG/Bn3D,oBAAAA,MAAO9iB,GAAM,CAAA;AAEf82B,kBAAAA,KAAYkwH,GAAIuhD,iBAAiBzxK,WACjC92B,KAAQgnJ,GAAIuhD,iBAAiBvsM,KAAK+vM,EAAAA;gBAAAA;AAEpCjpL,gBAAAA,MAAOipL,GAAWpqM,OAAOm1B,EAAAA,GACzBgoE,GAAQs7B,QAAQt3G,EAAAA;cAAAA,EAiCdqpL,GAEFJ,KAAa;YAAA;AAMf,qBAASK,GAAa7+N,IAAAA;AAKpB,qBAJIA,GAAKy+D,aACP8yD,GAAQw7B,SAASnqF,IAAS83J,iBAAiB16N,GAAKy+D,SAAAA,KAAcz+D,GAAKy+D,SAAAA,GAErEg7G,KAAMl6K,OAAOY,OAAOH,IAAM,EAAEypH,QAAQ,EAAE3pH,OAAO25K,GAAAA,EAAAA,CAAAA,GACtCA;YAAAA;AAST,qBAASqlD,GAAU9+N,IAAMyyB,IAAOssM,IAAAA;AAC9B,kBAAIC,KAh1CV,SAAoBhnL,IAAIinL,IAAAA;AACtB,sBAAMxsM,KAAQulB,MAAMA,GAAGvpB,KAAKwwM,EAAAA;AAC5B,uBAAOxsM,MAAyB,MAAhBA,GAAMjuB;cAAAA,EA80COxE,GAAKm7N,OAAO4D,EAAAA;AAErC,kBAAIC,IAAS;AACX,oBAAIh/N,GAAK,QAAA,GAAW;AAClB,wBAAMs4N,KAAO,IAAItxD,GAAShnK,EAAAA;AAC1BA,kBAAAA,GAAK,QAAA,EAAUyyB,IAAO6lM,EAAAA,GAClBA,GAAKtB,mBAAgBgI,KAAAA;gBAAU;AAGrC,oBAAIA,IAAS;AACX,yBAAOh/N,GAAK6wK,cAAc7wK,GAAKypH;AAC7BzpH,oBAAAA,KAAOA,GAAKypH;AAEd,yBAAOzpH;gBAAAA;cAAAA;AAKX,kBAAIA,GAAK2uK;AACP,uBAAOmwD,GAAU9+N,GAAKypH,QAAQh3F,IAAOssM,EAAAA;YAAAA;AASzC,qBAASG,GAASD,IAAAA;AAChB,qBAA+B,MAA3BxlD,GAAIn8D,QAAQ88G,cAGdoE,MAAcS,GAAO,CAAA,GACd,MAIPE,KAAAA,MACO;YAAA;AAUX,qBAASC,GAAa3sM,IAAAA;AACpB,oBAAMwsM,KAASxsM,GAAM,CAAA,GACf4sM,KAAU5sM,GAAMgvE,MAEhB62H,KAAO,IAAItxD,GAASq4D,EAAAA,GAEpBC,KAAkB,CAACD,GAAQ5G,eAAe4G,GAAQ,UAAA,CAAA;AACxD,yBAAWntL,MAAMotL;AACf,oBAAKptL,OACLA,GAAGzf,IAAO6lM,EAAAA,GACNA,GAAKtB;AAAgB,yBAAOkI,GAASD,EAAAA;AAuB3C,qBApBII,MAAWA,GAAQnE,mBACrBmE,GAAQlE,QA97CP,IAAIjqM,OA87CkB+tM,GA97CLlwM,QAAQ,yBAAyB,MAAA,GAAS,GAAA,IAi8C1DswM,GAAQ52M,OACV+1M,MAAcS,MAEVI,GAAQjuD,iBACVotD,MAAcS,KAEhBV,GAAAA,GACKc,GAAQ5tD,eAAgB4tD,GAAQjuD,iBACnCotD,KAAaS,MAGjBJ,GAAaQ,EAAAA,GAKNA,GAAQ5tD,cAAc,IAAIwtD,GAAOl7N;YAAAA;AAQ1C,qBAASw7N,GAAW9sM,IAAAA;AAClB,oBAAMwsM,KAASxsM,GAAM,CAAA,GACfssM,KAAqBX,GAAgBhqM,OAAO3B,GAAMjuB,KAAAA,GAElDg7N,KAAUV,GAAUrlD,IAAKhnJ,IAAOssM,EAAAA;AACtC,kBAAA,CAAKS;AAAW,uBAAOrC;AAEvB,oBAAMriN,KAAS2+J;AACX3+J,cAAAA,GAAO2N,OACT+1M,MAAcS,MAERnkN,GAAO01J,aAAa11J,GAAO8zJ,eAC/B4vD,MAAcS,KAEhBV,GAAAA,GACIzjN,GAAO8zJ,eACT4vD,KAAaS;AAGjB,iBAAA;AACMxlD,gBAAAA,GAAIh7G,aACN8yD,GAAQy7B,UAAAA,GAELysB,GAAIhxJ,QAASgxJ,GAAIhJ,gBACpBnkB,MAAamtB,GAAIntB,YAEnBmtB,KAAMA,GAAIhwD;cAAAA,SACHgwD,OAAQ+lD,GAAQ/1G;AAOzB,qBANI+1G,GAAQjvD,WACNivD,GAAQtE,mBACVsE,GAAQjvD,OAAO4qD,QAAQqE,GAAQrE,QAEjC0D,GAAaW,GAAQjvD,MAAAA,IAEhBz1J,GAAO01J,YAAY,IAAIyuD,GAAOl7N;YAAAA;AAcvC,gBAAI07N,KAAY,CAAA;AAQhB,qBAASC,GAAcC,IAAiBltM,IAAAA;AACtC,oBAAMwsM,KAASxsM,MAASA,GAAM,CAAA;AAK9B,kBAFA+rM,MAAcmB,IAEA,QAAVV;AAEF,uBADAV,GAAAA,GACO;AAOT,kBAAuB,YAAnBkB,GAAU35N,QAAmC,UAAf2sB,GAAM3sB,QAAkB25N,GAAUj7N,UAAUiuB,GAAMjuB,SAAoB,OAAXy6N,IAAe;AAG1G,oBADAT,MAAcJ,GAAgBp9N,MAAMyxB,GAAMjuB,OAAOiuB,GAAMjuB,QAAQ,CAAA,GAAA,CAC1D64N,IAAW;AAEd,wBAAMrsM,KAAM,IAAI1kB,MAAM,qBAAA;AAGtB,wBAFA0kB,GAAI27H,eAAeA,IACnB37H,GAAI4uM,UAAUH,GAAUh+H,MAClBzwE;gBAAAA;AAER,uBAAO;cAAA;AAIT,kBAFAyuM,KAAYhtM,IAEO,YAAfA,GAAM3sB;AACR,uBAAOs5N,GAAa3sM,EAAAA;AACf,kBAAmB,cAAfA,GAAM3sB,QAAAA,CAAuB0nJ,IAAgB;AAGtD,sBAAMx8H,KAAM,IAAI1kB,MAAM,qBAAqB2yN,KAAS,kBAAkBxlD,GAAIh7G,aAAa,eAAe,GAAA;AAEtG,sBADAztC,GAAIhxB,OAAOy5K,IACLzoJ;cAAAA;AACD,kBAAmB,UAAfyB,GAAM3sB,MAAgB;AAC/B,sBAAM62N,KAAY4C,GAAW9sM,EAAAA;AAC7B,oBAAIkqM,OAAcQ;AAChB,yBAAOR;cAAAA;AAOX,kBAAmB,cAAflqM,GAAM3sB,QAAiC,OAAXm5N;AAE9B,uBAAO;AAOT,kBAAI7xN,KAAa,OAAUA,KAA2B,IAAdqlB,GAAMjuB,OAAW;AAEvD,sBADY,IAAI8H,MAAM,2DAAA;cAAA;AAiBxB,qBADAkyN,MAAcS,IACPA,GAAOl7N;YAAAA;AAGhB,kBAAM6+D,MAAW2pF,GAAYI,EAAAA;AAC7B,gBAAA,CAAK/pF;AAEH,oBADAv2D,GAAMkxN,GAAmBxuM,QAAQ,MAAM49H,EAAAA,CAAAA,GACjC,IAAIrgJ,MAAM,wBAAwBqgJ,KAAe,GAAA;AAGzD,kBAAMvuC,KAAKk7G,GAAgB12J,KAAU,EAAE09E,SAAAA,GAAAA,CAAAA;AACvC,gBAAIjoH,KAAS,IAETohJ,KAAMwkD,MAAgB7/G;AAE1B,kBAAMqgH,KAAgB,CAAA,GAChBltG,KAAU,IAAI33F,GAAQ2zH,UAAU3zH,EAAAA;AAAAA,aA5GtC,WAAA;AACE,oBAAMxhB,KAAO,CAAA;AACb,uBAAS+4B,KAAUsoI,IAAKtoI,OAAYyxB,KAAUzxB,KAAUA,GAAQs4E;AAC1Dt4E,gBAAAA,GAAQstB,aACVrmD,GAAKe,QAAQg4B,GAAQstB,SAAAA;AAGzBrmD,cAAAA,GAAKjI,QAAQohB,CAAAA,OAAQggG,GAAQw7B,SAASx7H,EAAAA,CAAAA;YAAAA,EAsGxCsuM;AACA,gBAAIrB,KAAa,IACblyE,KAAY,GACZ9nJ,KAAQ,GACR4I,KAAa,GACb+xN,KAAAA;AAEJ,gBAAA;AAGE,mBAFA1lD,GAAIn8D,QAAQi9G,YAAAA,OAEH;AACPntN,gBAAAA,MACI+xN,KAGFA,KAAAA,QAEA1lD,GAAIn8D,QAAQi9G,YAAAA,GAEd9gD,GAAIn8D,QAAQ/zD,YAAY/kD;AAExB,sBAAMiuB,KAAQgnJ,GAAIn8D,QAAQ7uF,KAAK2vM,EAAAA;AAG/B,oBAAA,CAAK3rM;AAAO;AAEZ,sBACMqtM,KAAiBJ,GADHtB,GAAgBvsL,UAAUrtC,IAAOiuB,GAAMjuB,KAAAA,GACTiuB,EAAAA;AAClDjuB,gBAAAA,KAAQiuB,GAAMjuB,QAAQs7N;cAAAA;AAOxB,qBALAJ,GAActB,GAAgBhqM,OAAO5vB,EAAAA,CAAAA,GACrC+sH,GAAQ67B,cAAAA,GACR77B,GAAQ87B,SAAAA,GACRh1H,KAASk5F,GAAQ+7B,OAAAA,GAEV,EAGLhB,WAAWzoJ,KAAKgK,MAAMy+I,EAAAA,GACtBxsJ,OAAOu4B,IACPuqC,UAAU+pF,IACVqiB,SAAAA,OACAz9C,SAASA,IACTkoD,KAAKA,GAAAA;YAAAA,SAEAzoJ,IAAP;AACA,kBAAIA,GAAIuW,WAAWvW,GAAIuW,QAAQj6B,SAAS,SAAA;AACtC,uBAAO,EACL0hK,SAAAA,MACA+wD,WAAW,EACTpuC,KAAK3gK,GAAIuW,SACT7pB,SAAS0gN,GAAgBp9N,MAAMwD,KAAQ,KAAKA,KAAQ,GAAA,GACpDxE,MAAMgxB,GAAIhxB,KAAAA,GAEZggO,OAAO3nM,IACPi0H,WAAW,GACXxsJ,OAAOm9N,GAASmB,EAAAA,GAChB7sG,SAASA,GAAAA;AAEN,kBAAI8rG;AACT,uBAAO,EACLruD,SAAAA,OACA1iB,WAAW,GACXxsJ,OAAOm9N,GAASmB,EAAAA,GAChB7sG,SAASA,IACT3uD,UAAU+pF,IACV8sB,KAAKA,IACLhsB,aAAaz8H,GAAAA;AAGf,oBAAMA;YAAAA;UAAAA;AAsCZ,mBAAS0xC,GAAc7lB,IAAMojL,IAAAA;AAC3BA,YAAAA,KAAiBA,MAAkBrmM,GAAQwjM,aAAa79N,OAAO0J,KAAKm0N,EAAAA;AACpE,kBAAM8C,KA5BR,SAAiCrjL,IAAAA;AAC/B,oBAAMxkB,KAAS,EACbi0H,WAAW,GACX/6B,SAAS,IAAI33F,GAAQ2zH,UAAU3zH,EAAAA,GAC/B95B,OAAOm9N,GAASpgL,EAAAA,GAChBmyH,SAAAA,OACAyK,KAAK+jD,GAAAA;AAGP,qBADAnlM,GAAOk5F,QAAQs7B,QAAQhwG,EAAAA,GAChBxkB;YAAAA,EAmBmCwkB,EAAAA,GAEpC+6F,KAAUqoF,GAAepqN,OAAO02I,EAAAA,EAAa12I,OAAOsqN,EAAAA,EAAez1N,IAAItL,CAAAA,OAC3E++N,GAAW/+N,IAAMy9C,IAAAA,KAAM,CAAA;AAEzB+6F,YAAAA,GAAQz+H,QAAQ+mN,EAAAA;AAEhB,kBAAME,KAASxoF,GAAQ3lI,KAAK,CAAC7G,IAAGC,OAAAA;AAE9B,kBAAID,GAAEkhJ,cAAcjhJ,GAAEihJ;AAAW,uBAAOjhJ,GAAEihJ,YAAYlhJ,GAAEkhJ;AAIxD,kBAAIlhJ,GAAEw3D,YAAYv3D,GAAEu3D,UAAU;AAC5B,oBAAI2pF,GAAYnhJ,GAAEw3D,QAAAA,EAAUy9J,eAAeh1N,GAAEu3D;AAC3C,yBAAO;AACF,oBAAI2pF,GAAYlhJ,GAAEu3D,QAAAA,EAAUy9J,eAAej1N,GAAEw3D;AAClD,yBAAA;cAAQ;AAQZ,qBAAO;YAAA,CAAA,GAAA,CAGF09J,IAAMp0E,EAAAA,IAAck0E,IAGrB/nM,KAASioM;AAGf,mBAFAjoM,GAAOkoM,cAAcr0E,IAEd7zH;UAAAA;AA0CT,gBAAMmoM,KAAW,EACf,2BAA2B,CAAA,EAAGjyG,IAAAA,GAAAA,MAAAA;AACxB30F,YAAAA,GAAQikM,UACVtvG,GAAGh1B,YAAYg1B,GAAGh1B,UAAUxqE,QAAQ,OAAO,EAAA,EAAIA,QAAQ,cAAc,IAAA;UAAA,GAGzE,0BAA0B,CAAA,EAAGsJ,QAAAA,GAAAA,MAAAA;AACvBuB,YAAAA,GAAQikM,UACVxlM,GAAOv4B,QAAQu4B,GAAOv4B,MAAMivB,QAAQ,OAAO,MAAA;UAAA,EAAA,GAK3C0xM,KAAiB,oBAEjBC,KAAmB,EACvB,0BAA0B,CAAA,EAAGroM,QAAAA,GAAAA,MAAAA;AACvBuB,YAAAA,GAAQgkM,eACVvlM,GAAOv4B,QAAQu4B,GAAOv4B,MAAMivB,QAAQ0xM,IAAiBxhO,CAAAA,OACnDA,GAAE8vB,QAAQ,OAAO6K,GAAQgkM,UAAAA,CAAAA;UAAAA,EAAAA;AAYjC,mBAAS+C,GAAiBl1H,IAAAA;AAExB,gBAAI/7F,KAAO;AACX,kBAAMkzD,KA1oBR,SAAuB1Y,IAAAA;AACrB,kBAAIxc,KAAUwc,GAAMuU,YAAY;AAEhC/wB,cAAAA,MAAWwc,GAAM4/D,aAAa5/D,GAAM4/D,WAAWrrD,YAAY;AAG3D,oBAAMhsC,KAAQmH,GAAQ+jM,iBAAiBlvM,KAAKif,EAAAA;AAC5C,kBAAIjb,IAAO;AACT,sBAAMmwC,KAAW2pF,GAAY95H,GAAM,CAAA,CAAA;AAKnC,uBAJKmwC,OACHpgC,GAAK+6L,GAAmBxuM,QAAQ,MAAM0D,GAAM,CAAA,CAAA,CAAA,GAC5C+P,GAAK,qDAAqD0nB,EAAAA,IAErD0Y,KAAWnwC,GAAM,CAAA,IAAK;cAAA;AAG/B,qBAAOib,GACJrZ,MAAM,KAAA,EACNtO,KAAMm4B,CAAAA,OAAW4/K,GAAmB5/K,EAAAA,KAAWquG,GAAYruG,EAAAA,CAAAA;YAAAA,EAwnB/ButD,EAAAA;AAE/B,gBAAIqyH,GAAmBl7J,EAAAA;AAAW;AAGlCs7J,YAAAA,GAAK,2BACH,EAAE3vG,IAAI9iB,IAAS7oC,UAAUA,GAAAA,CAAAA,GAE3BlzD,KAAO+7F;AACP,kBAAM7hE,KAAOl6B,GAAK27G,aACZhzF,KAASuqC,KAAW+B,GAAU/6B,IAAM,EAAEg5B,UAAAA,IAAU4qF,gBAAAA,KAAgB,CAAA,IAAU9qF,GAAc94B,EAAAA;AAG9Fs0L,YAAAA,GAAK,0BAA0B,EAAE3vG,IAAI9iB,IAASpzE,QAAAA,IAAQuR,MAAAA,GAAAA,CAAAA,GAEtD6hE,GAAQlS,YAAYlhE,GAAOv4B,OAzD7B,SAAyB2rG,IAASm1H,IAAaC,IAAAA;AAC7C,oBAAMj+J,KAAWg+J,KAAcvvD,GAAQuvD,EAAAA,IAAeC;AAEtDp1H,cAAAA,GAAQq1H,UAAUj+M,IAAI,MAAA,GAClB+/C,MAAU6oC,GAAQq1H,UAAUj+M,IAAI+/C,EAAAA;YAAAA,EAsDpB6oC,IAAS7oC,IAAUvqC,GAAOuqC,QAAAA,GAC1C6oC,GAAQpzE,SAAS,EACfuqC,UAAUvqC,GAAOuqC,UAEjB5qB,IAAI3f,GAAOi0H,WACXy0E,WAAW1oM,GAAOi0H,UAAAA,GAEhBj0H,GAAOkoM,gBACT90H,GAAQ80H,cAAc,EACpB39J,UAAUvqC,GAAOkoM,YAAY39J,UAE7B5qB,IAAI3f,GAAOkoM,YAAYj0E,WACvBy0E,WAAW1oM,GAAOkoM,YAAYj0E,UAAAA;UAAAA;AAwBpC,gBAAM00E,KAAmB,MAAA;AACvB,gBAAIA,GAAiBvrI;AAAQ;AAC7BurI,YAAAA,GAAiBvrI,SAAAA,MAEjBpZ,GAAW,UAAU,gEAAA;AAENjV,qBAASqnJ,iBAAiB,UAAA,EAClCt+M,QAAQwwN,EAAAA;UAAAA;AAUjB,cAAIM,KAAAA;AAKJ,mBAASC,KAAAA;AAEP,gBAA4B,cAAxB95J,SAAS+gG;AAEX,qBAAA,MADA84D,KAAAA;AAIa75J,qBAASqnJ,iBAAiB,UAAA,EAClCt+M,QAAQwwN,EAAAA;UAAAA;AAwFjB,mBAASp0E,GAAYntJ,IAAAA;AAEnB,mBADAA,MAAQA,MAAQ,IAAIsyB,YAAAA,GACb0rM,GAAUh+N,EAAAA,KAASg+N,GAAU/rD,GAAQjyK,EAAAA,CAAAA;UAAAA;AAQ9C,mBAASstJ,GAAgBy0E,IAAAA,EAAW,cAAEx0E,GAAAA,GAAAA;AACX,wBAAA,OAAdw0E,OACTA,KAAY,CAACA,EAAAA,IAEfA,GAAUhxN,QAAQ8oC,CAAAA,OAAAA;AAAWo4H,cAAAA,GAAQp4H,GAAMvnB,YAAAA,CAAAA,IAAiBi7H;YAAAA,CAAAA;UAAAA;AAO9D,mBAASwzE,GAAc/gO,IAAAA;AACrB,kBAAMgiO,KAAO70E,GAAYntJ,EAAAA;AACzB,mBAAOgiO,MAAAA,CAASA,GAAK3D;UAAAA;AAuCvB,mBAASS,GAAKzjE,IAAO76G,IAAAA;AACnB,kBAAM1N,KAAKuoH;AACXna,YAAAA,GAAQnwI,QAAQ,SAASo7F,IAAAA;AACnBA,cAAAA,GAAOr5D,EAAAA,KACTq5D,GAAOr5D,EAAAA,EAAI0N,EAAAA;YAAAA,CAAAA;UAAAA;AAjJK,yBAAA,OAAXxkB,UAA0BA,OAAO63F,oBAC1C73F,OAAO63F,iBAAiB,oBAP1B,WAAA;AAEMguG,YAAAA,MAAgBC,GAAAA;UAAAA,GAAAA,KAK8B,GA8KpD3hO,OAAOq+B,OAAOumC,IAAM,EAClBQ,WAAAA,IACAjC,eAAAA,IACAw+J,cAAAA,IACAG,WAvBF,SAA4B1zL,IAAAA;AAI1B,mBAHA0uC,GAAW,UAAU,6CAAA,GACrBA,GAAW,UAAU,oEAAA,GAzTJhW,KA2TA14B,IA1TX/T,GAAQgkM,cAAchkM,GAAQikM,QAI7Bx3J,GAAKt3C,QAAQuuM,IAAa7qM,CAAAA,OACjB,SAAVA,KACKmH,GAAQikM,QAAQ,SAASprM,KACvBmH,GAAQgkM,aACVnrM,GAAM1D,QAAQ,OAAO6K,GAAQgkM,UAAAA,IAE/BnrM,EAAAA,IATA4zC;AAFX,gBAAmBA;UAAAA,GA+UjBs6J,kBAAAA,IAEAW,gBAfF,SAAiC/yG,IAAAA;AAI/B,mBAHAlyC,GAAW,UAAU,kDAAA,GACrBA,GAAW,UAAU,kCAAA,GAEdskJ,GAAiBpyG,EAAAA;UAAAA,GAYxBnjB,WA5OF,SAAmBm2H,IAAAA;AACbA,YAAAA,GAAY1D,UACdxhJ,GAAW,UAAU,2CAAA,GACrBA,GAAW,UAAU,oEAAA,IAEvBziD,KAAUsjM,GAAUtjM,IAAS2nM,EAAAA;UAAAA,GAwO7BP,kBAAAA,IACAQ,wBApNF,WAAA;AACEnlJ,YAAAA,GAAW,UAAU,sEAAA,GACrB4kJ,KAAAA;UAAiB,GAmNjBp8J,kBAhLF,SAA0B8nF,IAAc80E,IAAAA;AACtC,gBAAIL,KAAO;AACX,gBAAA;AACEA,cAAAA,KAAOK,GAAmBt9J,EAAAA;YAAAA,SACnBu9J,IAAP;AAGA,kBAFAr1N,GAAM,wDAAwD0iB,QAAQ,MAAM49H,EAAAA,CAAAA,GAAAA,CAEvE0wE;AAAa,sBAAMqE;AAAkBr1N,cAAAA,GAAMq1N,EAAAA,GAKhDN,KAAO5D;YAAAA;AAGJ4D,YAAAA,GAAKhiO,SAAMgiO,GAAKhiO,OAAOutJ,KAC5BywE,GAAUzwE,EAAAA,IAAgBy0E,IAC1BA,GAAKO,gBAAgBF,GAAmBphO,KAAK,MAAM8jE,EAAAA,GAE/Ci9J,GAAK/vD,WACP3kB,GAAgB00E,GAAK/vD,SAAS,EAAE1kB,cAAAA,GAAAA,CAAAA;UAAAA,GA6JlCi1E,oBApJF,SAA4Bj1E,IAAAA;AAAAA,mBACnBywE,GAAUzwE,EAAAA;AACjB,uBAAW1zG,MAAS15C,OAAO0J,KAAKooK,EAAAA;AAC1BA,cAAAA,GAAQp4H,EAAAA,MAAW0zG,MAAAA,OACd0kB,GAAQp4H,EAAAA;UAAAA,GAiJnByrB,eAzIF,WAAA;AACE,mBAAOnlE,OAAO0J,KAAKm0N,EAAAA;UAAAA,GAyInB7wE,aAAAA,IACAG,iBAAAA,IACAm1E,iBA/HF,SAAyBziO,IAAAA;AACvBi9E,YAAAA,GAAW,UAAU,kDAAA,GACrBA,GAAW,UAAU,kEAAA;AAErB,kBAAM+kJ,KAAO70E,GAAYntJ,EAAAA;AACzB,gBAAIgiO;AAAQ,qBAAOA;AAGnB,kBADY,IAAI90N,MAAM,iDAAmDyiB,QAAQ,MAAM3vB,EAAAA,CAAAA;UAAAA,GAyHvF+gO,eAAAA,IACAlxD,SAASiuD,IACT4E,WA/DF,SAAmBv2H,IAAAA;AAAAA,aArBnB,SAA0BA,IAAAA;AAEpBA,cAAAA,GAAO,uBAAA,KAAA,CAA6BA,GAAO,yBAAA,MAC7CA,GAAO,yBAAA,IAA8Bx2E,CAAAA,OAAAA;AACnCw2E,gBAAAA,GAAO,uBAAA,EACLhsG,OAAOq+B,OAAO,EAAEssB,OAAOn1B,GAAKw5F,GAAAA,GAAMx5F,EAAAA,CAAAA;cAAAA,IAIpCw2E,GAAO,sBAAA,KAAA,CAA4BA,GAAO,wBAAA,MAC5CA,GAAO,wBAAA,IAA6Bx2E,CAAAA,OAAAA;AAClCw2E,gBAAAA,GAAO,sBAAA,EACLhsG,OAAOq+B,OAAO,EAAEssB,OAAOn1B,GAAKw5F,GAAAA,GAAMx5F,EAAAA,CAAAA;cAAAA;YAAAA,EAUvBw2E,EAAAA,GACjB+0C,GAAQ9qI,KAAK+1F,EAAAA;UAAAA,GA+Dbw2H,WAAWpG,GAAex3J,EAAAA,EAAMi4J,UAAAA,CAAAA,GAGlCj4J,GAAK69J,YAAY,WAAA;AAAa3E,YAAAA,KAAAA;UAAY,GAC1Cl5J,GAAK89J,WAAW,WAAA;AAAa5E,YAAAA,KAAAA;UAAY,GACzCl5J,GAAK+9J,gBA/uCO;AAivCZ,qBAAW9hO,MAAOsyK;AAEU,wBAAA,OAAfA,EAAMtyK,EAAAA,KAEf22N,GAAcrkD,EAAMtyK,EAAAA,CAAAA;AAWxB,iBANAb,OAAOq+B,OAAOumC,IAAMuuG,CAAAA,GAGpBvuG,GAAK29J,UAAUtB,EAAAA,GACfr8J,GAAK29J,UAAUvF,EAAAA,GACfp4J,GAAK29J,UAAUpB,EAAAA,GACRv8J;QAAAA,EAIY,CAAA,CAAA;AAErBvlE,QAAAA,GAAOD,UAAUgmE;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACl9EjB,YAAIw9J,KAAY7hO,GAAQ,GAAA,GAEpB2rJ,KAAQ9rJ,GAAOmM,KAAAA;AAcnB,iBAASnM,GAAOiiO,IAAAA;AAGd,iBAFAC,GAAellJ,cAAcilJ,GAAajlJ,eAAeilJ,GAAahjO,MAE/DijO;AAEP,mBAASA,GAAezyM,IAAAA;AAKtB,mBAJIA,OACFA,KAASuyM,GAAU3yN,MAAM,MAAM3H,SAAAA,IAG1B,IAAIu6N,GAAaxyM,EAAAA;UAAAA;QAAAA;AAtB5BhxB,QAAAA,GAAOD,UAAUstJ,IAEjBA,GAAM5yB,OAAOl5H,GAAOm5H,SAAAA,GACpB2yB,GAAM+nD,QAAQ7zM,GAAO2qE,UAAAA,GACrBmhF,GAAMq2E,YAAYniO,GAAOs4B,cAAAA,GACzBwzH,GAAMO,SAASrsJ,GAAOg4H,WAAAA,GACtB8zB,GAAMnmJ,OAAO3F,GAAOyJ,SAAAA,GACpBqiJ,GAAMz2H,MAAMr1B,GAAO+5H,QAAAA,GAEnB+xB,GAAM9rJ,SAASA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SCJb,WAAA;AAGA,cAAIyrC;AA4BJ,mBAAShc,GAAO2yM,IAAAA;AAsBd,qBAhBIrjO,IAEAyuC,IACA8W,IAEA+9K,IAVAC,KAAW,GACX7iL,KAAO,CAAA,EAAG5+C,MAAMhC,KAAK6I,SAAAA,GACrBhJ,KAAI,GACJyB,KAAIiiO,GAAIx+N,QACRs0B,KAAS,IAETqqM,KAAAA,OAGAC,KAAAA,OAEAC,KAAU,WAAA;AAAa,qBAAOhjL,GAAK6iL,IAAAA;YAAAA,GACnCI,KAAc,WAAA;AAEZ,uBADIC,KAAS,IACN,KAAK3xM,KAAKoxM,GAAI1jO,EAAAA,CAAAA;AACnBikO,gBAAAA,MAAUP,GAAI1jO,IAAAA,GACdK,KAAIqjO,GAAI1jO,EAAAA;AAEV,qBAAOikO,GAAO/+N,SAAS,IAAIk3C,SAAS6nL,EAAAA,IAAU;YAAA,GAG7CjkO,KAAIyB,IAAAA,EAAKzB;AAEd,kBADAK,KAAIqjO,GAAI1jO,EAAAA,GACJ6jO;AAeF,wBAdAA,KAAAA,OACS,OAALxjO,MACFyjO,KAAAA,OACAzjO,KAAIqjO,GAAAA,EAAM1jO,EAAAA,KAEE,OAALK,MAA0B,OAAdqjO,GAAI1jO,KAAI,CAAA,KAC3B8jO,KAAAA,MAEAzjO,KAAIqjO,GADJ1jO,MAAK,CAAA,KAIL8jO,KAAAA,MAEFH,KAAYK,GAAAA,GACJ3jO,IAAAA;kBACR,KAAK;AACHm5B,oBAAAA,MAAU4iB,SAAS2nL,GAAAA,GAAW,EAAA,EAAIt7N,SAAS,CAAA;AAC3C;kBACF,KAAK;AAGD+wB,oBAAAA,MADiB,YAAA,QADnBsV,KAAMi1L,GAAAA,MACyBj1L,cAAe/jB,SAClC+jB,KAEA/jB,OAAO+0B,aAAa1D,SAAStN,IAAK,EAAA,CAAA;AAC9C;kBACF,KAAK;AACHtV,oBAAAA,MAAU4iB,SAAS2nL,GAAAA,GAAW,EAAA;AAC9B;kBACF,KAAK;AACHn+K,oBAAAA,KAAM76B,OAAO8xB,WAAWknL,GAAAA,CAAAA,EAAWG,QAAQP,MAAa,CAAA,CAAA,GACxDnqM,MAAUsqM,KAAcl+K,KAAMA,GAAI11B,QAAQ,MAAM,EAAA;AAChD;kBACF,KAAK;AACHsJ,oBAAAA,MAAU3O,KAAKC,UAAUi5M,GAAAA,CAAAA;AACzB;kBACF,KAAK;AACHvqM,oBAAAA,MAAU,MAAM4iB,SAAS2nL,GAAAA,GAAW,EAAA,EAAIt7N,SAAS,CAAA;AACjD;kBACF,KAAK;AACH+wB,oBAAAA,MAAUuqM,GAAAA;AACV;kBACF,KAAK;AACHvqM,oBAAAA,MAAU,OAAO4iB,SAAS2nL,GAAAA,GAAW,EAAA,EAAIt7N,SAAS,EAAA;AAClD;kBACF,KAAK;AACH+wB,oBAAAA,MAAU,OAAO4iB,SAAS2nL,GAAAA,GAAW,EAAA,EAAIt7N,SAAS,EAAA,EAAI6qC,YAAAA;AACtD;kBACF;AACE9Z,oBAAAA,MAAUn5B;gBAAAA;;AAGG,wBAANA,KACTwjO,KAAAA,OAEArqM,MAAUn5B;AAGd,mBAAOm5B;UAAAA;AAAAA,WA1GPuT,KAAYhtC,GAAOD,UAAUixB,IASrBA,SAASA,IACnBgc,GAAUo3L,WAUV,SAAkBT,IAAKtlG,IAAAA;AACrB,mBAAOrtG,GAAOpgB,MAAM,MAAM,CAAC+yN,EAAAA,EAAK9iN,OAAOw9G,EAAAA,CAAAA;UAAAA,GATlB,eAAA,OAAZtuG,WAAkD,cAAA,OAAhBA,QAAQ68D,QACnD5/C,GAAUq3L,SAGZ,WAAA;AACEt0M,oBAAQ68D,IAAI57D,GAAOpgB,MAAM,MAAM3H,SAAAA,CAAAA;UAAAA;QAAAA,EAxBlC;MAAA,GAAA,SAAAhH,IAAAd,IAAA;ACIDnB,QAAAA,GAAOD,UAfP,SAAuCk7B,IAAQ8U,IAAAA;AAC7C,cAAc,QAAV9U;AAAgB,mBAAO,CAAA;AAC3B,cAEIz5B,IAAKvB,IAFLusB,KAAS,CAAA,GACTwrB,KAAar3C,OAAO0J,KAAK4wB,EAAAA;AAG7B,eAAKh7B,KAAI,GAAGA,KAAI+3C,GAAW7yC,QAAQlF;AACjCuB,YAAAA,KAAMw2C,GAAW/3C,EAAAA,GACb8vC,GAASnhC,QAAQpN,EAAAA,KAAQ,MAC7BgrB,GAAOhrB,EAAAA,IAAOy5B,GAAOz5B,EAAAA;AAGvB,iBAAOgrB;QAAAA,GAITxsB,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAAO,IAAA;AChBxE,YAAIg3F,KAAmBh3F,GAAQ,GAAA;AAM/B1B,QAAAA,GAAOD,UAJP,SAA4B+E,IAAAA;AAC1B,cAAI3C,MAAM4I,QAAQjG,EAAAA;AAAM,mBAAO4zF,GAAiB5zF,EAAAA;QAAAA,GAIlD9E,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAA;ACHxEnB,QAAAA,GAAOD,UAJP,SAA0BwF,IAAAA;AACxB,cAAsB,eAAA,OAAXvE,UAAmD,QAAzBuE,GAAKvE,OAAO2F,QAAAA,KAA2C,QAAtBpB,GAAK,YAAA;AAAuB,mBAAOpD,MAAM6Z,KAAKzW,EAAAA;QAAAA,GAItHvF,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAAO,IAAA;ACLxE,YAAIg3F,KAAmBh3F,GAAQ,GAAA;AAW/B1B,QAAAA,GAAOD,UATP,SAAqCW,IAAGi4F,IAAAA;AACtC,cAAKj4F,IAAL;AACA,gBAAiB,YAAA,OAANA;AAAgB,qBAAOg4F,GAAiBh4F,IAAGi4F,EAAAA;AACtD,gBAAIj3F,KAAIf,OAAOkB,UAAU6G,SAAStI,KAAKM,EAAAA,EAAG0B,MAAM,GAAA,EAAI;AAEpD,mBADU,aAANV,MAAkBhB,GAAE8B,gBAAad,KAAIhB,GAAE8B,YAAYhC,OAC7C,UAANkB,MAAqB,UAANA,KAAoBS,MAAM6Z,KAAKtb,EAAAA,IACxC,gBAANgB,MAAqB,2CAA2C6wB,KAAK7wB,EAAAA,IAAWg3F,GAAiBh4F,IAAGi4F,EAAAA,IAAAA;UAAxG;QAAA,GAIF34F,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAA;ACRxEnB,QAAAA,GAAOD,UAJP,WAAA;AACE,gBAAM,IAAIiL,UAAU,sIAAA;QAAA,GAItBhL,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAA;ACUxEnB,QAAAA,GAAOD,UAfP,SAAyBmQ,IAAK1O,IAAKN,IAAAA;AAYjC,iBAXIM,MAAO0O,KACTvP,OAAOC,eAAesP,IAAK1O,IAAK,EAC9BN,OAAOA,IACPL,YAAAA,MACAsrB,cAAAA,MACAC,UAAAA,KAAU,CAAA,IAGZlc,GAAI1O,EAAAA,IAAON,IAGNgP;QAAAA,GAITlQ,GAAOD,QAAiB,UAAIC,GAAOD,SAASC,GAAOD,QAAQsB,aAAAA;MAAa,GAAA,SAAAY,IAAAd,IAAAO,IAAA;AChBxE,YAAImpH,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAK/5B,OAAOiM;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACH7B,YAAI05B,KAAI5kC,GAAQ,EAAA,GACZ4iO,KAAW5iO,GAAQ,GAAA,EAAgCkL;AAIvD05B,QAAAA,GAAE,EAAE9Z,QAAQ,UAAUmP,MAAAA,KAAM,GAAQ,EAClC/uB,SAAS,SAAiBi5B,IAAAA;AACxB,iBAAOy+L,GAASz+L,EAAAA;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACLpB,YAAI0+L,KAAiB7iO,GAAQ,GAAA,GACzB8iO,KAAQ9iO,GAAQ,GAAA,GAChBqgH,KAAUrgH,GAAQ,GAAA,GAClBwL,KAAMvM,OAAOkB,UAAUC,gBAEvB2iO,KAAwB,EACxBC,UAAU,SAAkBnjL,IAAAA;AACxB,iBAAOA,KAAS;QAAA,GAEpBojL,OAAO,SACP1uF,SAAS,SAAiB10F,IAAQ//C,IAAAA;AAC9B,iBAAO+/C,KAAS,MAAM//C,KAAM;QAAA,GAEhCi2C,QAAQ,SAAgB8J,IAAAA;AACpB,iBAAOA;QAAAA,EAAAA,GAIXx2C,KAAU5I,MAAM4I,SAChB0qB,KAAQzK,OAAOnpB,UAAU4zB,OACzB7e,KAAOzU,MAAMN,UAAU+U,MACvBguN,KAAc,SAAU9/N,IAAK+/N,IAAAA;AAC7BjuN,UAAAA,GAAKhG,MAAM9L,IAAKiG,GAAQ85N,EAAAA,IAAgBA,KAAe,CAACA,EAAAA,CAAAA;QAAAA,GAGxDC,KAAQjyM,KAAKhxB,UAAUk8C,aAEvBgnL,KAAgBhjH,GAAiB,SACjCijH,KAAW,EACXC,gBAAAA,OACAC,WAAAA,OACAn7D,SAAS,SACTo7D,iBAAAA,OACAC,WAAW,KACXp0F,QAAAA,MACAF,SAAS0zF,GAAMxzF,QACfq0F,kBAAAA,OACAr0M,QAAQ+zM,IACRxB,WAAWxhH,GAAQ+a,WAAWioG,EAAAA,GAE9B9uF,SAAAA,OACAqvF,eAAe,SAAuB7nL,IAAAA;AAClC,iBAAOqnL,GAAM1kO,KAAKq9C,EAAAA;QAAAA,GAEtB8nL,WAAAA,OACAC,oBAAAA,MAAoB,GAWpBC,KAAW,CAAA,GAEX16M,KAAY,SAASA,GACrBppB,IACA4/C,IACAmkL,IACAF,IACAD,IACAz0F,IACA75H,IACA5D,IACA6xN,IACAI,IACAt0M,IACAuyM,IACA8B,IACAt7D,IACA47D,IAAAA;AAOA,mBAhCuDv+N,IA2BnD8I,KAAMvO,IAENikO,KAAQD,IACR93N,KAAO,GACPg4N,KAAAA,OAAW,YACPD,KAAQA,GAAM9kO,IAAI2kO,EAAAA,MAAAA,CAAkCI,MAAU;AAElE,gBAAI9sL,KAAM6sL,GAAM9kO,IAAIa,EAAAA;AAEpB,gBADAkM,MAAQ,GAAA,WACGkrC,IAAqB;AAC5B,kBAAIA,OAAQlrC;AACR,sBAAM,IAAIq+D,WAAW,qBAAA;AAErB25J,cAAAA,KAAAA;YAAW;AAAA,uBAGRD,GAAM9kO,IAAI2kO,EAAAA,MACjB53N,KAAO;UAAA;AAiBf,cAbsB,cAAA,OAAXoJ,KACP/G,KAAM+G,GAAOsqC,IAAQrxC,EAAAA,IACdA,cAAe2iB,OACtB3iB,KAAMo1N,GAAcp1N,EAAAA,IACW,YAAxBw1N,MAAmC36N,GAAQmF,EAAAA,MAClDA,KAAMs0N,GAAMhzN,SAAStB,IAAK,SAAUhP,IAAAA;AAChC,mBAAIA,cAAiB2xB,OACVyyM,GAAcpkO,EAAAA,IAElBA;UAAAA,CAAAA,IAIH,SAARgP,IAAc;AACd,gBAAIs1N;AACA,qBAAO10F,MAAAA,CAAYu0F,KAAmBv0F,GAAQvvF,IAAQyjL,GAASl0F,SAASi5B,IAAS,OAAO/4I,EAAAA,IAAUuwB;AAGtGrxC,YAAAA,KAAM;UAAA;AAGV,cApEoB,YAAA,QADmC9I,KAqE7B8I,OAnEN,YAAA,OAAN9I,MACM,aAAA,OAANA,MACM,YAAA,OAANA,MACM,YAAA,OAANA,MAgEoBo9N,GAAM7zJ,SAASzgE,EAAAA,GAAM;AACnD,gBAAI4gI,IAAS;AACT,kBAAIg1F,KAAWT,KAAmB9jL,KAASuvF,GAAQvvF,IAAQyjL,GAASl0F,SAASi5B,IAAS,OAAO/4I,EAAAA;AAC7F,kBAA4B,YAAxB00M,MAAmCL,IAAkB;AAGrD,yBAFIU,KAActwM,GAAMr1B,KAAK4qB,OAAO9a,EAAAA,GAAM,GAAA,GACtC81N,KAAe,IACV/lO,KAAI,GAAGA,KAAI8lO,GAAY5gO,QAAAA,EAAUlF;AACtC+lO,kBAAAA,OAAuB,MAAN/lO,KAAU,KAAK,OAAOsjO,GAAUzyF,GAAQi1F,GAAY9lO,EAAAA,GAAI+kO,GAASl0F,SAASi5B,IAAS,SAAS/4I,EAAAA,CAAAA;AAEjH,uBAAO,CAACuyM,GAAUuC,EAAAA,IAAY,MAAME,EAAAA;cAAAA;AAExC,qBAAO,CAACzC,GAAUuC,EAAAA,IAAY,MAAMvC,GAAUzyF,GAAQ5gI,IAAK80N,GAASl0F,SAASi5B,IAAS,SAAS/4I,EAAAA,CAAAA,CAAAA;YAAAA;AAEnG,mBAAO,CAACuyM,GAAUhiL,EAAAA,IAAU,MAAMgiL,GAAUv4M,OAAO9a,EAAAA,CAAAA,CAAAA;UAAAA;AAGvD,cAMImnI,IANAj9H,KAAS,CAAA;AAEb,cAAA,WAAWlK;AACP,mBAAOkK;AAIX,cAA4B,YAAxBsrN,MAAmC36N,GAAQmF,EAAAA;AAE3CmnI,YAAAA,KAAU,CAAC,EAAEn2I,OAAOgP,GAAI/K,SAAS,IAAI+K,GAAI+W,KAAK,GAAA,KAAQ,OAAA,OAAO,CAAA;mBACtDlc,GAAQkM,EAAAA;AACfogI,YAAAA,KAAUpgI;eACP;AACH,gBAAI5M,IAAO1J,OAAO0J,KAAK6F,EAAAA;AACvBmnI,YAAAA,KAAUhkI,KAAOhJ,EAAKgJ,KAAKA,EAAAA,IAAQhJ;UAAAA;AAGvC,mBAASy7B,KAAI,GAAGA,KAAIuxG,GAAQlyI,QAAAA,EAAU2gC,IAAG;AACrC,gBAAItkC,KAAM61I,GAAQvxG,EAAAA,GACd5kC,KAAuB,YAAA,OAARM,MAAAA,WAA2BA,GAAIN,QAAwBM,GAAIN,QAAQgP,GAAI1O,EAAAA;AAE1F,gBAAA,CAAI+jO,MAAuB,SAAVrkO,IAAjB;AAIA,kBAAI+kO,KAAYl7N,GAAQmF,EAAAA,IACa,cAAA,OAAxBw1N,KAAqCA,GAAoBnkL,IAAQ//C,EAAAA,IAAO+/C,KAC/EA,MAAU2jL,KAAY,MAAM1jO,KAAM,MAAMA,KAAM;AAEpDmkO,cAAAA,GAAYj1N,IAAI/O,IAAQkM,EAAAA;AACxB,kBAAIq4N,KAAmB3B,GAAAA;AACvB2B,cAAAA,GAAiBx1N,IAAI+0N,IAAUE,EAAAA,GAC/Bf,GAAYxqN,IAAQ2Q,GAChB7pB,IACA+kO,IACAP,IACAF,IACAD,IACAz0F,IACA75H,IACA5D,IACA6xN,IACAI,IACAt0M,IACAuyM,IACA8B,IACAt7D,IACAm8D,EAAAA,CAAAA;YAAAA;UAAAA;AAIR,iBAAO9rN;QAAAA;AAkDXpa,QAAAA,GAAOD,UAAU,SAAU4B,IAAQi5I,IAAAA;AAC/B,cAGIvD,IAHAnnI,KAAMvO,IACNq5B,KAjDwB,SAAmC4/G,IAAAA;AAC/D,gBAAA,CAAKA;AACD,qBAAOoqF;AAGX,gBAAqB,SAAjBpqF,GAAK9J,WAAAA,WAA2B8J,GAAK9J,WAAmD,cAAA,OAAjB8J,GAAK9J;AAC5E,oBAAM,IAAI9lI,UAAU,+BAAA;AAGxB,gBAAI++J,KAAUnvB,GAAKmvB,WAAWi7D,GAASj7D;AACvC,gBAAA,WAAWnvB,GAAKmvB,WAA4C,YAAjBnvB,GAAKmvB,WAAwC,iBAAjBnvB,GAAKmvB;AACxE,oBAAM,IAAI/+J,UAAU,mEAAA;AAGxB,gBAAIgmB,KAAS+wF,GAAiB;AAC9B,gBAAA,WAAW64B,GAAK5pH,QAAwB;AACpC,kBAAA,CAAK9jB,GAAI9M,KAAK2hH,GAAQ+a,YAAY8d,GAAK5pH,MAAAA;AACnC,sBAAM,IAAIhmB,UAAU,iCAAA;AAExBgmB,cAAAA,KAAS4pH,GAAK5pH;YAAAA;AAElB,gBAAIuyM,KAAYxhH,GAAQ+a,WAAW9rG,EAAAA,GAE/B/Z,KAAS+tN,GAAS/tN;AAKtB,oBAJ2B,cAAA,OAAhB2jI,GAAK3jI,UAAyBlM,GAAQ6vI,GAAK3jI,MAAAA,OAClDA,KAAS2jI,GAAK3jI,SAGX,EACHguN,gBAA+C,aAAA,OAAxBrqF,GAAKqqF,iBAA+BrqF,GAAKqqF,iBAAiBD,GAASC,gBAC1FC,WAAAA,WAAkBtqF,GAAKsqF,YAA4BF,GAASE,YAAAA,CAAAA,CAActqF,GAAKsqF,WAC/En7D,SAASA,IACTo7D,iBAAiD,aAAA,OAAzBvqF,GAAKuqF,kBAAgCvqF,GAAKuqF,kBAAkBH,GAASG,iBAC7FC,WAAAA,WAAkBxqF,GAAKwqF,YAA4BJ,GAASI,YAAYxqF,GAAKwqF,WAC7Ep0F,QAA+B,aAAA,OAAhB4J,GAAK5J,SAAuB4J,GAAK5J,SAASg0F,GAASh0F,QAClEF,SAAiC,cAAA,OAAjB8J,GAAK9J,UAAyB8J,GAAK9J,UAAUk0F,GAASl0F,SACtEu0F,kBAAmD,aAAA,OAA1BzqF,GAAKyqF,mBAAiCzqF,GAAKyqF,mBAAmBL,GAASK,kBAChGpuN,QAAQA,IACR+Z,QAAQA,IACRuyM,WAAWA,IACX+B,eAA6C,cAAA,OAAvB1qF,GAAK0qF,gBAA+B1qF,GAAK0qF,gBAAgBN,GAASM,eACxFC,WAAqC,aAAA,OAAnB3qF,GAAK2qF,YAA0B3qF,GAAK2qF,YAAYP,GAASO,WAC3ElyN,MAA2B,cAAA,OAAdunI,GAAKvnI,OAAsBunI,GAAKvnI,OAAO,MACpDmyN,oBAAuD,aAAA,OAA5B5qF,GAAK4qF,qBAAmC5qF,GAAK4qF,qBAAqBR,GAASQ,mBAAAA;UAAAA,EAMlE5qF,EAAAA;AAKV,wBAAA,OAAnB5/G,GAAQ/jB,SAEf/G,MADA+G,GAAS+jB,GAAQ/jB,QACJ,IAAI/G,EAAAA,IACVnF,GAAQiwB,GAAQ/jB,MAAAA,MAEvBogI,KADSr8G,GAAQ/jB;AAIrB,cAMIkvN,IANA97N,KAAO,CAAA;AAEX,cAAmB,YAAA,OAAR6F,MAA4B,SAARA;AAC3B,mBAAO;AAKPi2N,UAAAA,KADAvrF,MAAQA,GAAKurF,eAAe1B,KACd7pF,GAAKurF,cACZvrF,MAAQ,aAAaA,KACdA,GAAK3E,UAAU,YAAY,WAE3B;AAGlB,cAAIyvF,KAAsBjB,GAAsB0B,EAAAA;AAE3C9uF,UAAAA,OACDA,KAAU12I,OAAO0J,KAAK6F,EAAAA,IAGtB8qB,GAAQ3nB,QACRgkI,GAAQhkI,KAAK2nB,GAAQ3nB,IAAAA;AAIzB,mBADIsyN,KAAcpB,GAAAA,GACTtkO,KAAI,GAAGA,KAAIo3I,GAAQlyI,QAAAA,EAAUlF,IAAG;AACrC,gBAAIuB,KAAM61I,GAAQp3I,EAAAA;AAEd+6B,YAAAA,GAAQuqM,aAA0B,SAAbr1N,GAAI1O,EAAAA,KAG7BojO,GAAYv6N,IAAM0gB,GACd7a,GAAI1O,EAAAA,GACJA,IACAkkO,IACA1qM,GAAQwqM,oBACRxqM,GAAQuqM,WACRvqM,GAAQg2G,SAASh2G,GAAQ81G,UAAU,MACnC91G,GAAQ/jB,QACR+jB,GAAQ3nB,MACR2nB,GAAQkqM,WACRlqM,GAAQsqM,eACRtqM,GAAQhK,QACRgK,GAAQuoM,WACRvoM,GAAQqqM,kBACRrqM,GAAQ+uI,SACR47D,EAAAA,CAAAA;UAAAA;AAIR,cAAIr+M,KAASjd,GAAK4c,KAAK+T,GAAQoqM,SAAAA,GAC3B7jL,KAAAA,SAASvmB,GAAQiqM,iBAA0B,MAAM;AAYrD,iBAVIjqM,GAAQmqM,oBACgB,iBAApBnqM,GAAQ+uI,UAERxoH,MAAU,yBAGVA,MAAU,oBAIXj6B,GAAOniB,SAAS,IAAIo8C,KAASj6B,KAAS;QAAA;MAAA,GAAA,SAAArlB,IAAAd,IAAAO,IAAA;AAAA;ACzTjD,YAAI0kO,KAAe1kO,GAAQ,GAAA,GACvB2kO,KAAY3kO,GAAQ,GAAA,GACpBoH,KAAUpH,GAAQ,GAAA,GAElB+3H,KAAa2sG,GAAa,aAAA,GAC1BE,KAAWF,GAAa,aAAA,IAAa,GACrCG,KAAOH,GAAa,SAAA,IAAS,GAE7BI,KAAcH,GAAU,yBAAA,IAAyB,GACjDI,KAAcJ,GAAU,yBAAA,IAAyB,GACjDK,KAAcL,GAAU,yBAAA,IAAyB,GACjDM,KAAUN,GAAU,qBAAA,IAAqB,GACzCO,KAAUP,GAAU,qBAAA,IAAqB,GACzCQ,KAAUR,GAAU,qBAAA,IAAqB,GAUzCS,KAAc,SAAUttN,IAAMhY,IAAAA;AACjC,mBAAsB0pD,IAAb91C,KAAOoE,IAAmC,UAAtB0xC,KAAO91C,GAAKrO,OAAgBqO,KAAO81C;AAC/D,gBAAIA,GAAK1pD,QAAQA;AAIhB,qBAHA4T,GAAKrO,OAAOmkD,GAAKnkD,MACjBmkD,GAAKnkD,OAAOyS,GAAKzS,MACjByS,GAAKzS,OAAOmkD,IACLA;QAAAA;AA0BVlrD,QAAAA,GAAOD,UAAU,WAAA;AAChB,cAAIgnO,IACAC,IACAC,IACAziE,KAAU,EACb0iE,QAAQ,SAAU1lO,IAAAA;AACjB,gBAAA,CAAKgjK,GAAQt3J,IAAI1L,EAAAA;AAChB,oBAAM,IAAIi4H,GAAW,mCAAmC3wH,GAAQtH,EAAAA,CAAAA;UAAAA,GAGlEV,KAAK,SAAUU,IAAAA;AACd,gBAAI8kO,MAAY9kO,OAAuB,YAAA,OAARA,MAAmC,cAAA,OAARA,KAAAA;AACzD,kBAAIulO;AACH,uBAAOP,GAAYO,IAAKvlO,EAAAA;YAAAA,WAEf+kO,IAAAA;AACV,kBAAIS;AACH,uBAAOL,GAAQK,IAAIxlO,EAAAA;YAAAA,WAGhBylO;AACH,qBA1CS,SAAU96K,IAAS3qD,IAAAA;AAChC,oBAAIsP,KAAOg2N,GAAY36K,IAAS3qD,EAAAA;AAChC,uBAAOsP,MAAQA,GAAK5P;cAAAA,EAwCD+lO,IAAIzlO,EAAAA;UAAAA,GAItB0L,KAAK,SAAU1L,IAAAA;AACd,gBAAI8kO,MAAY9kO,OAAuB,YAAA,OAARA,MAAmC,cAAA,OAARA,KAAAA;AACzD,kBAAIulO;AACH,uBAAOL,GAAYK,IAAKvlO,EAAAA;YAAAA,WAEf+kO,IAAAA;AACV,kBAAIS;AACH,uBAAOH,GAAQG,IAAIxlO,EAAAA;YAAAA,WAGhBylO;AACH,qBAxCS,SAAU96K,IAAS3qD,IAAAA;AAChC,uBAAA,CAAA,CAASslO,GAAY36K,IAAS3qD,EAAAA;cAAAA,EAuCXylO,IAAIzlO,EAAAA;AAGrB,mBAAA;UAAO,GAERkP,KAAK,SAAUlP,IAAKN,IAAAA;AACfolO,YAAAA,MAAY9kO,OAAuB,YAAA,OAARA,MAAmC,cAAA,OAARA,OACpDulO,OACJA,KAAM,IAAIT,OAEXG,GAAYM,IAAKvlO,IAAKN,EAAAA,KACZqlO,MACLS,OACJA,KAAK,IAAIT,OAEVK,GAAQI,IAAIxlO,IAAKN,EAAAA,MAEZ+lO,OAMJA,KAAK,EAAEzlO,KAAK,CAAA,GAAIuF,MAAM,KAAA,IA5Eb,SAAUolD,IAAS3qD,IAAKN,IAAAA;AACrC,kBAAI4P,KAAOg2N,GAAY36K,IAAS3qD,EAAAA;AAC5BsP,cAAAA,KACHA,GAAK5P,QAAQA,KAGbirD,GAAQplD,OAAO,EACdvF,KAAKA,IACLuF,MAAMolD,GAAQplD,MACd7F,OAAOA,GAAAA;YAAAA,EAqEE+lO,IAAIzlO,IAAKN,EAAAA;UAAAA,EAAAA;AAIpB,iBAAOsjK;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACxHR,YAAI2iE,KAA+B,eAAA,OAAXnmO,UAA0BA,QAC9ComO,KAAgB1lO,GAAQ,GAAA;AAE5B1B,QAAAA,GAAOD,UAAU,WAAA;AAChB,iBAA0B,cAAA,OAAfonO,OACW,cAAA,OAAXnmO,WACsB,YAAA,OAAtBmmO,GAAW,KAAA,MACO,YAAA,OAAlBnmO,OAAO,KAAA,KAEXomO,GAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACRRpnO,QAAAA,GAAOD,UAAU,WAAA;AAChB,cAAsB,cAAA,OAAXiB,UAAiE,cAAA,OAAjCL,OAAO4lB;AAAwC,mBAAA;AAC1F,cAA+B,YAAA,OAApBvlB,OAAO2F;AAAyB,mBAAA;AAE3C,cAAIuJ,KAAM,CAAA,GACN+vB,KAAMj/B,OAAO,MAAA,GACbqmO,KAAS1mO,OAAOs/B,EAAAA;AACpB,cAAmB,YAAA,OAARA;AAAoB,mBAAA;AAE/B,cAA4C,sBAAxCt/B,OAAOkB,UAAU6G,SAAStI,KAAK6/B,EAAAA;AAA8B,mBAAA;AACjE,cAA+C,sBAA3Ct/B,OAAOkB,UAAU6G,SAAStI,KAAKinO,EAAAA;AAAiC,mBAAA;AAYpE,eAAKpnM,MADL/vB,GAAI+vB,EAAAA,IADS,IAED/vB;AAAO,mBAAA;AACnB,cAA2B,cAAA,OAAhBvP,OAAO0J,QAAmD,MAA5B1J,OAAO0J,KAAK6F,EAAAA,EAAK/K;AAAgB,mBAAA;AAE1E,cAA0C,cAAA,OAA/BxE,OAAOm2F,uBAAiF,MAA3Cn2F,OAAOm2F,oBAAoB5mF,EAAAA,EAAK/K;AAAgB,mBAAA;AAExG,cAAImiO,KAAO3mO,OAAO4lB,sBAAsBrW,EAAAA;AACxC,cAAoB,MAAhBo3N,GAAKniO,UAAgBmiO,GAAK,CAAA,MAAOrnM;AAAO,mBAAA;AAE5C,cAAA,CAAKt/B,OAAOkB,UAAU0O,qBAAqBnQ,KAAK8P,IAAK+vB,EAAAA;AAAQ,mBAAA;AAE7D,cAA+C,cAAA,OAApCt/B,OAAO65B,0BAAyC;AAC1D,gBAAI9N,KAAa/rB,OAAO65B,yBAAyBtqB,IAAK+vB,EAAAA;AACtD,gBAdY,OAcRvT,GAAWxrB,SAAAA,SAAoBwrB,GAAW7rB;AAAuB,qBAAA;UAAO;AAG7E,iBAAA;QAAO;MAAA,GAAA,SAAAoB,IAAAd,IAAAO,IAAA;AAAA;ACpCR,YAAI6lO,KAAgB,mDAChBnlO,KAAQD,MAAMN,UAAUO,OACxBolO,KAAQ7mO,OAAOkB,UAAU6G,UACzB++N,KAAW;AAEfznO,QAAAA,GAAOD,UAAU,SAAcslC,IAAAA;AAC3B,cAAI7Y,KAASxlB;AACb,cAAsB,cAAA,OAAXwlB,MAAyBg7M,GAAMpnO,KAAKosB,EAAAA,MAAYi7M;AACvD,kBAAM,IAAIz8N,UAAUu8N,KAAgB/6M,EAAAA;AAyBxC,mBArBIk7M,IAFA1mL,KAAO5+C,GAAMhC,KAAK6I,WAAW,CAAA,GAG7B0+N,KAAS,WAAA;AACT,gBAAI3gO,gBAAgB0gO,IAAO;AACvB,kBAAIjuM,KAASjN,GAAO5b,MAChB5J,MACAg6C,GAAKngC,OAAOze,GAAMhC,KAAK6I,SAAAA,CAAAA,CAAAA;AAE3B,qBAAItI,OAAO84B,EAAAA,MAAYA,KACZA,KAEJzyB;YAAAA;AAEP,mBAAOwlB,GAAO5b,MACVy0B,IACA2b,GAAKngC,OAAOze,GAAMhC,KAAK6I,SAAAA,CAAAA,CAAAA;UAAAA,GAK/B2+N,KAAc3iO,KAAKC,IAAI,GAAGsnB,GAAOrnB,SAAS67C,GAAK77C,MAAAA,GAC/C0iO,KAAY,CAAA,GACP5nO,KAAI,GAAGA,KAAI2nO,IAAa3nO;AAC7B4nO,YAAAA,GAAUjxN,KAAK,MAAM3W,EAAAA;AAKzB,cAFAynO,KAAQjrM,SAAS,UAAU,sBAAsBorM,GAAU5gN,KAAK,GAAA,IAAO,2CAAA,EAA6C0gN,EAAAA,GAEhHn7M,GAAO3qB,WAAW;AAClB,gBAAIimO,KAAQ,WAAA;YAAA;AACZA,YAAAA,GAAMjmO,YAAY2qB,GAAO3qB,WACzB6lO,GAAM7lO,YAAY,IAAIimO,MACtBA,GAAMjmO,YAAY;UAAA;AAGtB,iBAAO6lO;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AChDX,YAAIjmO,KAAOC,GAAQ,GAAA;AAEnB1B,QAAAA,GAAOD,UAAU0B,GAAKrB,KAAKq8B,SAASr8B,MAAMO,OAAOkB,UAAUC,cAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACF3D,YAAIskO,KAAe1kO,GAAQ,GAAA,GAEvBqmO,KAAWrmO,GAAQ,GAAA,GAEnBsmO,KAAWD,GAAS3B,GAAa,0BAAA,CAAA;AAErCpmO,QAAAA,GAAOD,UAAU,SAA4BS,IAAM47H,IAAAA;AAClD,cAAII,KAAY4pG,GAAa5lO,IAAAA,CAAAA,CAAQ47H,EAAAA;AACrC,iBAAyB,cAAA,OAAdI,MAA4BwrG,GAASxnO,IAAM,aAAA,IAAA,KAC9CunO,GAASvrG,EAAAA,IAEVA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACXR,YAAI/6H,KAAOC,GAAQ,GAAA,GACf0kO,KAAe1kO,GAAQ,GAAA,GAEvBumO,KAAS7B,GAAa,4BAAA,GACtB8B,KAAQ9B,GAAa,2BAAA,GACrB+B,KAAgB/B,GAAa,mBAAA,IAAmB,KAAS3kO,GAAKrB,KAAK8nO,IAAOD,EAAAA,GAE1EruG,KAAQwsG,GAAa,qCAAA,IAAqC,GAC1Dn0L,KAAkBm0L,GAAa,2BAAA,IAA2B,GAC1DgC,KAAOhC,GAAa,YAAA;AAExB,YAAIn0L;AACH,cAAA;AACCA,YAAAA,GAAgB,CAAA,GAAI,KAAK,EAAE/wC,OAAO,EAAA,CAAA;UAAA,SAC1Be,IAAP;AAEDgwC,YAAAA,KAAkB;UAAA;AAIpBjyC,QAAAA,GAAOD,UAAU,SAAkBsoO,IAAAA;AAClC,cAAIxrM,KAAOsrM,GAAc1mO,IAAMymO,IAAOj/N,SAAAA;AACtC,cAAI2wH,MAAS3nF,IAAiB;AAC7B,gBAAIuxE,KAAOoW,GAAM/8F,IAAM,QAAA;AACnB2mF,YAAAA,GAAKr3F,gBAER8lB,GACCpV,IACA,UACA,EAAE37B,OAAO,IAAIknO,GAAK,GAAGC,GAAiBljO,UAAU8D,UAAU9D,SAAS,EAAA,EAAA,CAAA;UAAA;AAItE,iBAAO03B;QAAAA;AAGR,YAAIyrM,KAAY,WAAA;AACf,iBAAOH,GAAc1mO,IAAMwmO,IAAQh/N,SAAAA;QAAAA;AAGhCgpC,QAAAA,KACHA,GAAgBjyC,GAAOD,SAAS,SAAS,EAAEmB,OAAOonO,GAAAA,CAAAA,IAElDtoO,GAAOD,QAAQ6Q,QAAQ03N;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC7CxB,YAAIC,KAAwB,cAAA,OAARp3N,OAAsBA,IAAItP,WAC1C2mO,KAAoB7nO,OAAO65B,4BAA4B+tM,KAAS5nO,OAAO65B,yBAAyBrpB,IAAItP,WAAW,MAAA,IAAU,MACzH4mO,KAAUF,MAAUC,MAAsD,cAAA,OAA1BA,GAAkB1nO,MAAqB0nO,GAAkB1nO,MAAM,MAC/G4nO,KAAaH,MAAUp3N,IAAItP,UAAU0P,SACrCo3N,KAAwB,cAAA,OAAR1kO,OAAsBA,IAAIpC,WAC1C+mO,KAAoBjoO,OAAO65B,4BAA4BmuM,KAAShoO,OAAO65B,yBAAyBv2B,IAAIpC,WAAW,MAAA,IAAU,MACzH4X,KAAUkvN,MAAUC,MAAsD,cAAA,OAA1BA,GAAkB9nO,MAAqB8nO,GAAkB9nO,MAAM,MAC/G+nO,KAAaF,MAAU1kO,IAAIpC,UAAU0P,SAErCu3N,KADgC,cAAA,OAAZ73N,WAA0BA,QAAQpP,YAC5BoP,QAAQpP,UAAUqL,MAAM,MAElD67N,KADgC,cAAA,OAAZvtG,WAA0BA,QAAQ35H,YAC5B25H,QAAQ35H,UAAUqL,MAAM,MAElD87N,KADgC,cAAA,OAAZztG,WAA0BA,QAAQ15H,YAC1B05H,QAAQ15H,UAAUonO,QAAQ,MACtDC,KAAiB7lJ,QAAQxhF,UAAUwK,SACnCq+D,KAAiB/pE,OAAOkB,UAAU6G,UAClC8mH,KAAmB/yF,SAAS56B,UAAU6G,UACtCmrB,KAAQ7I,OAAOnpB,UAAUgyB,OACzBs1M,KAAkC,cAAA,OAAX3uG,SAAwBA,OAAO34H,UAAUwK,UAAU,MAC1E+8N,KAAOzoO,OAAO4lB,uBACd8iN,KAAgC,cAAA,OAAXroO,UAAoD,YAAA,OAApBA,OAAO2F,WAAwB3F,OAAOa,UAAU6G,WAAW,MAChH4gO,KAAsC,cAAA,OAAXtoO,UAAoD,YAAA,OAApBA,OAAO2F,UAClE4iO,KAAe5oO,OAAOkB,UAAU0O,sBAEhCi5N,MAA0B,cAAA,OAAZriK,UAAyBA,QAAQvjD,iBAAiBjjB,OAAOijB,oBACvE,CAAA,EAAGwsD,cAAcjuE,MAAMN,YACjB,SAAUgkC,IAAAA;AACR,iBAAOA,GAAEuqC;QAAAA,IAEX,OAGNq5J,KAAgB/nO,GAAQ,GAAA,EAAkBuvL,QAC1Cy4C,KAAgBD,MAAiB7wJ,GAAS6wJ,EAAAA,IAAiBA,KAAgB,MAC3ExoO,KAAgC,cAAA,OAAXD,UAAAA,WAAgCA,OAAOC,cAA8BD,OAAOC,cAAc;AA+KnH,iBAAS0oO,GAAW3nO,IAAGi4C,IAAc2gG,IAAAA;AACjC,cAAIgvF,KAAkD,cAArChvF,GAAKivF,cAAc5vL,MAA6B,MAAM;AACvE,iBAAO2vL,KAAY5nO,KAAI4nO;QAAAA;AAG3B,iBAAS3tG,GAAMj6H,IAAAA;AACX,iBAAOgpB,OAAOhpB,EAAAA,EAAGmuB,QAAQ,MAAM,QAAA;QAAA;AAGnC,iBAASplB,GAAQmF,IAAAA;AAAO,iBAAA,EAAsB,qBAAfs3N,GAAMt3N,EAAAA,KAA+BjP,MAAgC,YAAA,OAARiP,MAAoBjP,MAAeiP;QAAAA;AAS/H,iBAAS0oE,GAAS1oE,IAAAA;AACd,cAAIo5N;AACA,mBAAOp5N,MAAsB,YAAA,OAARA,MAAoBA,cAAelP;AAE5D,cAAmB,YAAA,OAARkP;AACP,mBAAA;AAEJ,cAAA,CAAKA,MAAsB,YAAA,OAARA,MAAAA,CAAqBm5N;AACpC,mBAAA;AAEJ,cAAA;AAEI,mBADAA,GAAYjpO,KAAK8P,EAAAA,GAAAA;UACV,SACFjO,IAAP;UAAOA;AACT,iBAAA;QAAO;AA7MXjC,QAAAA,GAAOD,UAAU,SAAS+pO,GAAS55N,IAAK8qB,IAAS5Z,IAAOq7D,IAAAA;AACpD,cAAIm+D,KAAO5/G,MAAW,CAAA;AAEtB,cAAI9tB,GAAI0tI,IAAM,YAAA,KAAsC,aAApBA,GAAKivF,cAA+C,aAApBjvF,GAAKivF;AACjE,kBAAM,IAAI7+N,UAAU,kDAAA;AAExB,cACIkC,GAAI0tI,IAAM,iBAAA,MAAuD,YAAA,OAAzBA,GAAKmvF,kBACvCnvF,GAAKmvF,kBAAkB,KAAKnvF,GAAKmvF,oBAAoBz8N,IAAAA,IAC5B,SAAzBstI,GAAKmvF;AAGX,kBAAM,IAAI/+N,UAAU,wFAAA;AAExB,cAAIg/N,KAAAA,CAAgB98N,GAAI0tI,IAAM,eAAA,KAAmBA,GAAKovF;AACtD,cAA6B,aAAA,OAAlBA,MAAiD,aAAlBA;AACtC,kBAAM,IAAIh/N,UAAU,+EAAA;AAGxB,cACIkC,GAAI0tI,IAAM,QAAA,KACS,SAAhBA,GAAK3hG,UACW,QAAhB2hG,GAAK3hG,UAAAA,EACHoD,SAASu+F,GAAK3hG,QAAQ,EAAA,MAAQ2hG,GAAK3hG,UAAU2hG,GAAK3hG,SAAS;AAEhE,kBAAM,IAAIjuC,UAAU,2DAAA;AAGxB,cAAA,WAAWkF;AACP,mBAAO;AAEX,cAAY,SAARA;AACA,mBAAO;AAEX,cAAmB,aAAA,OAARA;AACP,mBAAOA,KAAM,SAAS;AAG1B,cAAmB,YAAA,OAARA;AACP,mBAAO+5N,EAAc/5N,IAAK0qI,EAAAA;AAE9B,cAAmB,YAAA,OAAR1qI;AACP,mBAAY,MAARA,KACO5C,IAAAA,IAAW4C,KAAM,IAAI,MAAM,OAE/B8a,OAAO9a,EAAAA;AAElB,cAAmB,YAAA,OAARA;AACP,mBAAO8a,OAAO9a,EAAAA,IAAO;AAGzB,cAAI0sE,KAAAA,WAAkBg+D,GAAKx5H,QAAwB,IAAIw5H,GAAKx5H;AAE5D,cAAA,WADWA,OAAyBA,KAAQ,IACxCA,MAASw7D,MAAYA,KAAW,KAAoB,YAAA,OAAR1sE;AAC5C,mBAAOnF,GAAQmF,EAAAA,IAAO,YAAY;AAGtC,cAAI+oC,KA2TR,SAAmB2hG,IAAMx5H,IAAAA;AACrB,gBAAI8oN;AACJ,gBAAoB,QAAhBtvF,GAAK3hG;AACLixL,cAAAA,KAAa;iBACV;AAAA,kBAAA,EAA2B,YAAA,OAAhBtvF,GAAK3hG,UAAuB2hG,GAAK3hG,SAAS;AAGxD,uBAAO;AAFPixL,cAAAA,KAAa/nO,MAAMy4I,GAAK3hG,SAAS,CAAA,EAAGhyB,KAAK,GAAA;YAAA;AAI7C,mBAAO,EACHm4C,MAAM8qK,IACN90N,MAAMjT,MAAMif,KAAQ,CAAA,EAAG6F,KAAKijN,EAAAA,EAAAA;UAAAA,EAtUTtvF,IAAMx5H,EAAAA;AAE7B,cAAA,WAAWq7D;AACPA,YAAAA,KAAO,CAAA;mBACA7tE,GAAQ6tE,IAAMvsE,EAAAA,KAAQ;AAC7B,mBAAO;AAGX,mBAASpH,GAAQ5H,IAAO8a,IAAMmuN,IAAAA;AAK1B,gBAJInuN,OACAygE,KAAOA,GAAKr6E,MAAAA,GACPwU,KAAKoF,EAAAA,GAEVmuN,IAAU;AACV,kBAAIC,KAAU,EACVhpN,OAAOw5H,GAAKx5H,MAAAA;AAKhB,qBAHIlU,GAAI0tI,IAAM,YAAA,MACVwvF,GAAQP,aAAajvF,GAAKivF,aAEvBC,GAAS5oO,IAAOkpO,IAAShpN,KAAQ,GAAGq7D,EAAAA;YAAAA;AAE/C,mBAAOqtJ,GAAS5oO,IAAO05I,IAAMx5H,KAAQ,GAAGq7D,EAAAA;UAAAA;AAG5C,cAAmB,cAAA,OAARvsE,IAAoB;AAC3B,gBAAI1P,KAiJZ,SAAgBytB,IAAAA;AACZ,kBAAIA,GAAEztB;AAAQ,uBAAOytB,GAAEztB;AACvB,kBAAIH,KAAIwzB,GAAMzzB,KAAKovH,GAAiBpvH,KAAK6tB,EAAAA,GAAI,sBAAA;AAC7C,kBAAI5tB;AAAK,uBAAOA,GAAE,CAAA;AAClB,qBAAO;YAAA,EArJe6P,EAAAA,GACd7F,KAAOggO,GAAWn6N,IAAKpH,EAAAA;AAC3B,mBAAO,eAAetI,KAAO,OAAOA,KAAO,kBAAkB,OAAO6J,GAAKlF,SAAS,IAAI,QAAQkF,GAAK4c,KAAK,IAAA,IAAQ,OAAO;UAAA;AAE3H,cAAI2xD,GAAS1oE,EAAAA,GAAM;AACf,gBAAIo6N,KAAYhB,KAAoBt+M,OAAO9a,EAAAA,EAAKigB,QAAQ,0BAA0B,IAAA,IAAQk5M,GAAYjpO,KAAK8P,EAAAA;AAC3G,mBAAsB,YAAA,OAARA,MAAqBo5N,KAA2CgB,KAAvBC,GAAUD,EAAAA;UAAAA;AAErE,cAmOJ,SAAmBpzN,IAAAA;AACf,gBAAA,CAAKA,MAAkB,YAAA,OAANA;AAAkB,qBAAA;AACnC,gBAA2B,eAAA,OAAhBszN,eAA+BtzN,cAAaszN;AACnD,qBAAA;AAEJ,mBAA6B,YAAA,OAAftzN,GAAEs1G,YAAmD,cAAA,OAAnBt1G,GAAEguG;UAAAA,EAxOpCh1G,EAAAA,GAAM;AAGhB,qBAFIlO,KAAI,MAAMgpB,OAAO9a,GAAIs8G,QAAAA,EAAU15F,YAAAA,GAC/Bo6E,KAAQh9F,GAAIw8G,cAAc,CAAA,GACrBzsH,KAAI,GAAGA,KAAIitG,GAAM/nG,QAAQlF;AAC9B+B,cAAAA,MAAK,MAAMkrG,GAAMjtG,EAAAA,EAAGO,OAAO,MAAMmpO,GAAW1tG,GAAM/uB,GAAMjtG,EAAAA,EAAGiB,KAAAA,GAAQ,UAAU05I,EAAAA;AAKjF,mBAHA54I,MAAK,KACDkO,GAAI+7G,cAAc/7G,GAAI+7G,WAAW9mH,WAAUnD,MAAK,QACpDA,MAAK,OAAOgpB,OAAO9a,GAAIs8G,QAAAA,EAAU15F,YAAAA,IAAgB;UAAA;AAGrD,cAAI/nB,GAAQmF,EAAAA,GAAM;AACd,gBAAmB,MAAfA,GAAI/K;AAAgB,qBAAO;AAC/B,gBAAIw1J,KAAK0vE,GAAWn6N,IAAKpH,EAAAA;AACzB,mBAAImwC,MAAAA,CAkQZ,SAA0B0hH,IAAAA;AACtB,uBAAS16J,KAAI,GAAGA,KAAI06J,GAAGx1J,QAAQlF;AAC3B,oBAAI2O,GAAQ+rJ,GAAG16J,EAAAA,GAAI,IAAA,KAAS;AACxB,yBAAA;AAGR,qBAAA;YAAO,EAxQ6B06J,EAAAA,IACrB,MAAM8vE,GAAa9vE,IAAI1hH,EAAAA,IAAU,MAErC,OAAO0hH,GAAG1zI,KAAK,IAAA,IAAQ;UAAA;AAElC,cA2EJ,SAAiB/W,IAAAA;AAAO,mBAAA,EAAsB,qBAAfs3N,GAAMt3N,EAAAA,KAA+BjP,MAAgC,YAAA,OAARiP,MAAoBjP,MAAeiP;UAAAA,EA3E/GA,EAAAA,GAAM;AACd,gBAAIosH,KAAQ+tG,GAAWn6N,IAAKpH,EAAAA;AAC5B,mBAAqB,MAAjBwzH,GAAMn3H,SAAuB,MAAM6lB,OAAO9a,EAAAA,IAAO,MAC9C,QAAQ8a,OAAO9a,EAAAA,IAAO,OAAOosH,GAAMr1G,KAAK,IAAA,IAAQ;UAAA;AAE3D,cAAmB,YAAA,OAAR/W,MAAoB85N,IAAe;AAC1C,gBAAIN,MAA+C,cAAA,OAAvBx5N,GAAIw5N,EAAAA;AAC5B,qBAAOx5N,GAAIw5N,EAAAA,EAAAA;AACR,gBAAsB,aAAlBM,MAAqD,cAAA,OAAhB95N,GAAIpH;AAChD,qBAAOoH,GAAIpH,QAAAA;UAAAA;AAGnB,cAyHJ,SAAeoO,IAAAA;AACX,gBAAA,CAAKuxN,MAAAA,CAAYvxN,MAAkB,YAAA,OAANA;AACzB,qBAAA;AAEJ,gBAAA;AACIuxN,cAAAA,GAAQroO,KAAK8W,EAAAA;AACb,kBAAA;AACIuC,gBAAAA,GAAQrZ,KAAK8W,EAAAA;cAAAA,SACRlV,IAAP;AACE,uBAAA;cAAO;AAEX,qBAAOkV,cAAa/F;YAAAA,SACflP,IAAP;YAAOA;AACT,mBAAA;UAAO,EAtIGiO,EAAAA,GAAM;AACZ,gBAAIw6N,KAAW,CAAA;AAIf,mBAHAhC,GAAWtoO,KAAK8P,IAAK,SAAUhP,IAAOM,IAAAA;AAClCkpO,cAAAA,GAAS9zN,KAAK9N,GAAQtH,IAAK0O,IAAAA,IAAK,IAAQ,SAASpH,GAAQ5H,IAAOgP,EAAAA,CAAAA;YAAAA,CAAAA,GAE7Dy6N,GAAa,OAAOlC,GAAQroO,KAAK8P,EAAAA,GAAMw6N,IAAUzxL,EAAAA;UAAAA;AAE5D,cA6JJ,SAAe/hC,IAAAA;AACX,gBAAA,CAAKuC,MAAAA,CAAYvC,MAAkB,YAAA,OAANA;AACzB,qBAAA;AAEJ,gBAAA;AACIuC,cAAAA,GAAQrZ,KAAK8W,EAAAA;AACb,kBAAA;AACIuxN,gBAAAA,GAAQroO,KAAK8W,EAAAA;cAAAA,SACR7W,IAAP;AACE,uBAAA;cAAO;AAEX,qBAAO6W,cAAajT;YAAAA,SACfhC,IAAP;YAAOA;AACT,mBAAA;UAAO,EA1KGiO,EAAAA,GAAM;AACZ,gBAAI06N,KAAW,CAAA;AAIf,mBAHA/B,GAAWzoO,KAAK8P,IAAK,SAAUhP,IAAAA;AAC3B0pO,cAAAA,GAASh0N,KAAK9N,GAAQ5H,IAAOgP,EAAAA,CAAAA;YAAAA,CAAAA,GAE1By6N,GAAa,OAAOlxN,GAAQrZ,KAAK8P,EAAAA,GAAM06N,IAAU3xL,EAAAA;UAAAA;AAE5D,cA2HJ,SAAmB/hC,IAAAA;AACf,gBAAA,CAAK4xN,MAAAA,CAAe5xN,MAAkB,YAAA,OAANA;AAC5B,qBAAA;AAEJ,gBAAA;AACI4xN,cAAAA,GAAW1oO,KAAK8W,IAAG4xN,EAAAA;AACnB,kBAAA;AACIC,gBAAAA,GAAW3oO,KAAK8W,IAAG6xN,EAAAA;cAAAA,SACd/mO,IAAP;AACE,uBAAA;cAAO;AAEX,qBAAOkV,cAAajG;YAAAA,SACfhP,IAAP;YAAOA;AACT,mBAAA;UAAO,EAxIOiO,EAAAA;AACV,mBAAO26N,GAAiB,SAAA;AAE5B,cAmKJ,SAAmB3zN,IAAAA;AACf,gBAAA,CAAK6xN,MAAAA,CAAe7xN,MAAkB,YAAA,OAANA;AAC5B,qBAAA;AAEJ,gBAAA;AACI6xN,cAAAA,GAAW3oO,KAAK8W,IAAG6xN,EAAAA;AACnB,kBAAA;AACID,gBAAAA,GAAW1oO,KAAK8W,IAAG4xN,EAAAA;cAAAA,SACd9mO,IAAP;AACE,uBAAA;cAAO;AAEX,qBAAOkV,cAAaskH;YAAAA,SACfv5H,IAAP;YAAOA;AACT,mBAAA;UAAO,EAhLOiO,EAAAA;AACV,mBAAO26N,GAAiB,SAAA;AAE5B,cAqIJ,SAAmB3zN,IAAAA;AACf,gBAAA,CAAK8xN,MAAAA,CAAiB9xN,MAAkB,YAAA,OAANA;AAC9B,qBAAA;AAEJ,gBAAA;AAEI,qBADA8xN,GAAa5oO,KAAK8W,EAAAA,GAAAA;YACX,SACFjV,IAAP;YAAOA;AACT,mBAAA;UAAO,EA7IOiO,EAAAA;AACV,mBAAO26N,GAAiB,SAAA;AAE5B,cA0CJ,SAAkB36N,IAAAA;AAAO,mBAAA,EAAsB,sBAAfs3N,GAAMt3N,EAAAA,KAAgCjP,MAAgC,YAAA,OAARiP,MAAoBjP,MAAeiP;UAAAA,EA1ChHA,EAAAA;AACT,mBAAOq6N,GAAUzhO,GAAQ+uC,OAAO3nC,EAAAA,CAAAA,CAAAA;AAEpC,cA4DJ,SAAkBA,IAAAA;AACd,gBAAA,CAAKA,MAAsB,YAAA,OAARA,MAAAA,CAAqBi5N;AACpC,qBAAA;AAEJ,gBAAA;AAEI,qBADAA,GAAc/oO,KAAK8P,EAAAA,GAAAA;YACZ,SACFjO,IAAP;YAAOA;AACT,mBAAA;UAAO,EApEMiO,EAAAA;AACT,mBAAOq6N,GAAUzhO,GAAQqgO,GAAc/oO,KAAK8P,EAAAA,CAAAA,CAAAA;AAEhD,cAqCJ,SAAmBA,IAAAA;AAAO,mBAAA,EAAsB,uBAAfs3N,GAAMt3N,EAAAA,KAAiCjP,MAAgC,YAAA,OAARiP,MAAoBjP,MAAeiP;UAAAA,EArCjHA,EAAAA;AACV,mBAAOq6N,GAAUrB,GAAe9oO,KAAK8P,EAAAA,CAAAA;AAEzC,cAgCJ,SAAkBA,IAAAA;AAAO,mBAAA,EAAsB,sBAAfs3N,GAAMt3N,EAAAA,KAAgCjP,MAAgC,YAAA,OAARiP,MAAoBjP,MAAeiP;UAAAA,EAhChHA,EAAAA;AACT,mBAAOq6N,GAAUzhO,GAAQkiB,OAAO9a,EAAAA,CAAAA,CAAAA;AAEpC,cAAA,CA0BJ,SAAgBA,IAAAA;AAAO,mBAAA,EAAsB,oBAAfs3N,GAAMt3N,EAAAA,KAA8BjP,MAAgC,YAAA,OAARiP,MAAoBjP,MAAeiP;UAAAA,EA1B7GA,EAAAA,KAAAA,CA2BhB,SAAkBA,IAAAA;AAAO,mBAAA,EAAsB,sBAAfs3N,GAAMt3N,EAAAA,KAAgCjP,MAAgC,YAAA,OAARiP,MAAoBjP,MAAeiP;UAAAA,EA3B/FA,EAAAA,GAAM;AAChC,gBAAI46N,IAAKT,GAAWn6N,IAAKpH,EAAAA,GACrB4kE,KAAgB87J,KAAMA,GAAIt5N,EAAAA,MAASvP,OAAOkB,YAAYqO,cAAevP,UAAUuP,GAAI1N,gBAAgB7B,QACnGoqO,KAAW76N,cAAevP,SAAS,KAAK,kBACxCqqO,KAAAA,CAAat9J,MAAiBzsE,MAAeN,OAAOuP,EAAAA,MAASA,MAAOjP,MAAeiP,KAAMs3N,GAAMt3N,EAAAA,EAAK9N,MAAM,GAAA,EAAI,IAAK2oO,KAAW,WAAW,IAEzIpxL,MADiB+zB,MAA4C,cAAA,OAApBx9D,GAAI1N,cAA6B,KAAK0N,GAAI1N,YAAYhC,OAAO0P,GAAI1N,YAAYhC,OAAO,MAAM,OAC3GwqO,MAAaD,KAAW,MAAM,CAAA,EAAGlqN,OAAOmqN,MAAa,CAAA,GAAID,MAAY,CAAA,CAAA,EAAI9jN,KAAK,IAAA,IAAQ,OAAO;AACzH,mBAAkB,MAAd6jN,EAAG3lO,SAAuBw0C,KAAM,OAChCV,KACOU,KAAM,MAAM8wL,GAAaK,GAAI7xL,EAAAA,IAAU,MAE3CU,KAAM,OAAOmxL,EAAG7jN,KAAK,IAAA,IAAQ;UAAA;AAExC,iBAAO+D,OAAO9a,EAAAA;QAAAA;AAiDlB,YAAI0qB,KAASj6B,OAAOkB,UAAUC,kBAAkB,SAAUN,IAAAA;AAAO,iBAAOA,MAAOwF;QAAAA;AAC/E,iBAASkG,GAAIgD,IAAK1O,IAAAA;AACd,iBAAOo5B,GAAOx6B,KAAK8P,IAAK1O,EAAAA;QAAAA;AAG5B,iBAASgmO,GAAMt3N,IAAAA;AACX,iBAAOw6D,GAAetqE,KAAK8P,EAAAA;QAAAA;AAU/B,iBAAStB,GAAQ+rJ,IAAIzjJ,IAAAA;AACjB,cAAIyjJ,GAAG/rJ;AAAW,mBAAO+rJ,GAAG/rJ,QAAQsI,EAAAA;AACpC,mBAASjX,KAAI,GAAGC,KAAIy6J,GAAGx1J,QAAQlF,KAAIC,IAAGD;AAClC,gBAAI06J,GAAG16J,EAAAA,MAAOiX;AAAK,qBAAOjX;AAE9B,iBAAA;QAAQ;AAsFZ,iBAASgqO,EAAc/5M,IAAK0qH,IAAAA;AACxB,cAAI1qH,GAAI/qB,SAASy1I,GAAKmvF,iBAAiB;AACnC,gBAAI53J,KAAYjiD,GAAI/qB,SAASy1I,GAAKmvF,iBAC9BkB,KAAU,SAAS94J,KAAY,qBAAqBA,KAAY,IAAI,MAAM;AAC9E,mBAAO83J,EAAc/5M,GAAI9tB,MAAM,GAAGw4I,GAAKmvF,eAAAA,GAAkBnvF,EAAAA,IAAQqwF;UAAAA;AAIrE,iBAAOtB,GADCz5M,GAAIC,QAAQ,YAAY,MAAA,EAAQA,QAAQ,gBAAgB+6M,EAAAA,GAC3C,UAAUtwF,EAAAA;QAAAA;AAGnC,iBAASswF,GAAQ5qO,IAAAA;AACb,cAAIoB,KAAIpB,GAAE2P,WAAW,CAAA,GACjBiH,KAAI,EACJ,GAAG,KACH,GAAG,KACH,IAAI,KACJ,IAAI,KACJ,IAAI,IAAA,EACNxV,EAAAA;AACF,iBAAIwV,KAAY,OAAOA,KAChB,SAASxV,KAAI,KAAO,MAAM,MAAMA,GAAEgH,SAAS,EAAA,EAAI6qC,YAAAA;QAAAA;AAG1D,iBAASg3L,GAAUr6M,IAAAA;AACf,iBAAO,YAAYA,KAAM;QAAA;AAG7B,iBAAS26M,GAAiB3jO,IAAAA;AACtB,iBAAOA,KAAO;QAAA;AAGlB,iBAASyjO,GAAazjO,IAAM1B,IAAMoH,IAASqsC,IAAAA;AAEvC,iBAAO/xC,KAAO,OAAO1B,KAAO,SADRyzC,KAASwxL,GAAa79N,IAASqsC,EAAAA,IAAUrsC,GAAQqa,KAAK,IAAA,KACtB;QAAA;AA2BxD,iBAASwjN,GAAa9vE,IAAI1hH,IAAAA;AACtB,cAAkB,MAAd0hH,GAAGx1J;AAAgB,mBAAO;AAC9B,cAAIgmO,KAAa,OAAOlyL,GAAO7jC,OAAO6jC,GAAOmmB;AAC7C,iBAAO+rK,KAAaxwE,GAAG1zI,KAAK,MAAMkkN,EAAAA,IAAc,OAAOlyL,GAAO7jC;QAAAA;AAGlE,iBAASi1N,GAAWn6N,IAAKpH,IAAAA;AACrB,cAAIkrJ,KAAQjpJ,GAAQmF,EAAAA,GAChByqJ,KAAK,CAAA;AACT,cAAI3G,IAAO;AACP2G,YAAAA,GAAGx1J,SAAS+K,GAAI/K;AAChB,qBAASlF,KAAI,GAAGA,KAAIiQ,GAAI/K,QAAQlF;AAC5B06J,cAAAA,GAAG16J,EAAAA,IAAKiN,GAAIgD,IAAKjQ,EAAAA,IAAK6I,GAAQoH,GAAIjQ,EAAAA,GAAIiQ,EAAAA,IAAO;UAAA;AAGrD,cACIk7N,IADA9D,KAAuB,cAAA,OAAT8B,KAAsBA,GAAKl5N,EAAAA,IAAO,CAAA;AAEpD,cAAIo5N,IAAmB;AACnB8B,YAAAA,KAAS,CAAA;AACT,qBAASjkO,KAAI,GAAGA,KAAImgO,GAAKniO,QAAQgC;AAC7BikO,cAAAA,GAAO,MAAM9D,GAAKngO,EAAAA,CAAAA,IAAMmgO,GAAKngO,EAAAA;UAAAA;AAIrC,mBAAS3F,MAAO0O;AACPhD,YAAAA,GAAIgD,IAAK1O,EAAAA,MACVwyJ,MAAShpI,OAAO6sB,OAAOr2C,EAAAA,CAAAA,MAAUA,MAAOA,KAAM0O,GAAI/K,UAClDmkO,MAAqB8B,GAAO,MAAM5pO,EAAAA,aAAgBR,WAG3C,SAAWuxB,KAAK/wB,EAAAA,IACvBm5J,GAAG/jJ,KAAK9N,GAAQtH,IAAK0O,EAAAA,IAAO,OAAOpH,GAAQoH,GAAI1O,EAAAA,GAAM0O,EAAAA,CAAAA,IAErDyqJ,GAAG/jJ,KAAKpV,KAAM,OAAOsH,GAAQoH,GAAI1O,EAAAA,GAAM0O,EAAAA,CAAAA;AAG/C,cAAoB,cAAA,OAATk5N;AACP,qBAAStjM,KAAI,GAAGA,KAAIwhM,GAAKniO,QAAQ2gC;AACzByjM,cAAAA,GAAanpO,KAAK8P,IAAKo3N,GAAKxhM,EAAAA,CAAAA,KAC5B60H,GAAG/jJ,KAAK,MAAM9N,GAAQw+N,GAAKxhM,EAAAA,CAAAA,IAAM,QAAQh9B,GAAQoH,GAAIo3N,GAAKxhM,EAAAA,CAAAA,GAAK51B,EAAAA,CAAAA;AAI3E,iBAAOyqJ;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AChdX,YAAI6pE,KAAQ9iO,GAAQ,GAAA,GAEhBwL,KAAMvM,OAAOkB,UAAUC,gBACvBiJ,KAAU5I,MAAM4I,SAEhBi6N,KAAW,EACXE,WAAAA,OACA96D,iBAAAA,OACAihE,aAAAA,OACAC,YAAY,IACZvhE,SAAS,SACTo7D,iBAAAA,OACAR,OAAAA,OACArrE,SAASkrE,GAAMx8D,QACfo9D,WAAW,KACXhkN,OAAO,GACPmqN,mBAAAA,OACAC,0BAAAA,OACAC,gBAAgB,KAChBC,aAAAA,MACA9hE,cAAAA,OACA47D,oBAAAA,MAAoB,GAGpBgG,KAA2B,SAAUt7M,IAAAA;AACrC,iBAAOA,GAAIC,QAAQ,aAAa,SAAU+5I,IAAIyhE,IAAAA;AAC1C,mBAAO3gN,OAAO+0B,aAAa1D,SAASsvL,IAAW,EAAA,CAAA;UAAA,CAAA;QAAA,GAInDC,KAAkB,SAAUn9N,IAAKusB,IAAAA;AACjC,iBAAIvsB,MAAsB,YAAA,OAARA,MAAoBusB,GAAQ2pM,SAASl2N,GAAIG,QAAQ,GAAA,IAAA,KACxDH,GAAIgnB,MAAM,GAAA,IAGdhnB;QAAAA,GAgHPo9N,KAAY,SAA8BC,IAAUr9N,IAAKusB,IAAS+wM,IAAAA;AAClE,cAAKD,IAAL;AAKA,gBAAItqO,KAAMw5B,GAAQkqM,YAAY4G,GAAS37M,QAAQ,eAAe,MAAA,IAAU27M,IAKpEtrK,KAAQ,iBAIR+vC,KAAUv1E,GAAQ5Z,QAAQ,KALf,eAK6ByO,KAAKruB,EAAAA,GAC7CqpH,KAASta,KAAU/uG,GAAIY,MAAM,GAAGmuG,GAAQ3qG,KAAAA,IAASpE,IAIjD6I,KAAO,CAAA;AACX,gBAAIwgH,IAAQ;AAER,kBAAA,CAAK7vF,GAAQ4uI,gBAAgB18J,GAAI9M,KAAKO,OAAOkB,WAAWgpH,EAAAA,KAAAA,CAC/C7vF,GAAQovI;AACT;AAIR//J,cAAAA,GAAKuM,KAAKi0G,EAAAA;YAAAA;AAMd,qBADI5qH,KAAI,GACD+6B,GAAQ5Z,QAAQ,KAAqC,UAA/BmvF,KAAU/vC,GAAM3wC,KAAKruB,EAAAA,MAAkBvB,KAAI+6B,GAAQ5Z,SAAO;AAEnF,kBADAnhB,MAAK,GAAA,CACA+6B,GAAQ4uI,gBAAgB18J,GAAI9M,KAAKO,OAAOkB,WAAW0uG,GAAQ,CAAA,EAAGnuG,MAAM,GAAA,EAAI,CAAA,KAAA,CACpE44B,GAAQovI;AACT;AAGR//J,cAAAA,GAAKuM,KAAK25F,GAAQ,CAAA,CAAA;YAAA;AAStB,mBAJIA,MACAlmG,GAAKuM,KAAK,MAAMpV,GAAIY,MAAMmuG,GAAQ3qG,KAAAA,IAAS,GAAA,GAnFjC,SAAU6kB,IAAOhc,IAAKusB,IAAS+wM,IAAAA;AAG7C,uBAFIC,KAAOD,KAAet9N,KAAMm9N,GAAgBn9N,IAAKusB,EAAAA,GAE5C/6B,KAAIwqB,GAAMtlB,SAAS,GAAGlF,MAAK,GAAA,EAAKA,IAAG;AACxC,oBAAIiQ,IACAoF,KAAOmV,GAAMxqB,EAAAA;AAEjB,oBAAa,SAATqV,MAAiB0lB,GAAQ0wM;AACzBx7N,kBAAAA,KAAM,CAAA,EAAG2Q,OAAOmrN,EAAAA;qBACb;AACH97N,kBAAAA,KAAM8qB,GAAQ4uI,eAAejpK,uBAAOY,OAAO,IAAA,IAAQ,CAAA;AACnD,sBAAI0qO,KAA+B,QAAnB32N,GAAK6oC,OAAO,CAAA,KAA+C,QAAjC7oC,GAAK6oC,OAAO7oC,GAAKnQ,SAAS,CAAA,IAAamQ,GAAKlT,MAAM,GAAA,EAAI,IAAKkT,IACjG1P,KAAQy2C,SAAS4vL,IAAW,EAAA;AAC3BjxM,kBAAAA,GAAQ0wM,eAA6B,OAAdO,KAAAA,CAGvBr5M,MAAMhtB,EAAAA,KACJ0P,OAAS22N,MACTjhN,OAAOplB,EAAAA,MAAWqmO,MAClBrmO,MAAS,KACRo1B,GAAQ0wM,eAAe9lO,MAASo1B,GAAQswM,cAE5Cp7N,KAAM,CAAA,GACFtK,EAAAA,IAASomO,KACQ,gBAAdC,OACP/7N,GAAI+7N,EAAAA,IAAaD,MAXjB97N,KAAM,EAAE,GAAG87N,GAAAA;gBAAAA;AAenBA,gBAAAA,KAAO97N;cAAAA;AAGX,qBAAO87N;YAAAA,EAsDY3hO,IAAMoE,IAAKusB,IAAS+wM,EAAAA;UAAAA;QAAAA;AAsC3C/rO,QAAAA,GAAOD,UAAU,SAAUmwB,IAAK0qH,IAAAA;AAC5B,cAAI5/G,KApCoB,SAA+B4/G,IAAAA;AACvD,gBAAA,CAAKA;AACD,qBAAOoqF;AAGX,gBAAqB,SAAjBpqF,GAAK0e,WAAAA,WAAoB1e,GAAK0e,WAAiD,cAAA,OAAjB1e,GAAK0e;AACnE,oBAAM,IAAItuJ,UAAU,+BAAA;AAGxB,gBAAA,WAAW4vI,GAAKmvB,WAA4C,YAAjBnvB,GAAKmvB,WAAwC,iBAAjBnvB,GAAKmvB;AACxE,oBAAM,IAAI/+J,UAAU,mEAAA;AAExB,gBAAI++J,KAAAA,WAAiBnvB,GAAKmvB,UAA0Bi7D,GAASj7D,UAAUnvB,GAAKmvB;AAE5E,mBAAO,EACHm7D,WAAAA,WAAkBtqF,GAAKsqF,YAA4BF,GAASE,YAAAA,CAAAA,CAActqF,GAAKsqF,WAC/E96D,iBAAiD,aAAA,OAAzBxvB,GAAKwvB,kBAAgCxvB,GAAKwvB,kBAAkB46D,GAAS56D,iBAC7FihE,aAAyC,aAAA,OAArBzwF,GAAKywF,cAA4BzwF,GAAKywF,cAAcrG,GAASqG,aACjFC,YAAuC,YAAA,OAApB1wF,GAAK0wF,aAA0B1wF,GAAK0wF,aAAatG,GAASsG,YAC7EvhE,SAASA,IACTo7D,iBAAiD,aAAA,OAAzBvqF,GAAKuqF,kBAAgCvqF,GAAKuqF,kBAAkBH,GAASG,iBAC7FR,OAA6B,aAAA,OAAf/pF,GAAK+pF,QAAsB/pF,GAAK+pF,QAAQK,GAASL,OAC/DrrE,SAAiC,cAAA,OAAjB1e,GAAK0e,UAAyB1e,GAAK0e,UAAU0rE,GAAS1rE,SACtE8rE,WAAqC,YAAA,OAAnBxqF,GAAKwqF,aAA0BZ,GAAMj1I,SAASqrD,GAAKwqF,SAAAA,IAAaxqF,GAAKwqF,YAAYJ,GAASI,WAE5GhkN,OAA8B,YAAA,OAAfw5H,GAAKx5H,SAAAA,UAAsBw5H,GAAKx5H,QAAAA,CAAoBw5H,GAAKx5H,QAAQ4jN,GAAS5jN,OACzFmqN,mBAAAA,SAAmB3wF,GAAK2wF,mBACxBC,0BAAmE,aAAA,OAAlC5wF,GAAK4wF,2BAAyC5wF,GAAK4wF,2BAA2BxG,GAASwG,0BACxHC,gBAA+C,YAAA,OAAxB7wF,GAAK6wF,iBAA8B7wF,GAAK6wF,iBAAiBzG,GAASyG,gBACzFC,aAAAA,UAAa9wF,GAAK8wF,aAClB9hE,cAA2C,aAAA,OAAtBhvB,GAAKgvB,eAA6BhvB,GAAKgvB,eAAeo7D,GAASp7D,cACpF47D,oBAAuD,aAAA,OAA5B5qF,GAAK4qF,qBAAmC5qF,GAAK4qF,qBAAqBR,GAASQ,mBAAAA;UAAAA,EAKtE5qF,EAAAA;AAEpC,cAAY,OAAR1qH,MAAAA,QAAcA;AACd,mBAAO8K,GAAQ4uI,eAAejpK,uBAAOY,OAAO,IAAA,IAAQ,CAAA;AASxD,mBANI2qO,KAAyB,YAAA,OAARh8M,KAnMP,SAAgCA,IAAK8K,IAAAA;AACnD,gBAKI/6B,IALAiQ,KAAM,CAAA,GACNi8N,KAAWnxM,GAAQuwM,oBAAoBr7M,GAAIC,QAAQ,OAAO,EAAA,IAAMD,IAChEonD,KAAQt8C,GAAQywM,mBAAmBn+N,IAAAA,IAAAA,SAAuB0tB,GAAQywM,gBAClEnvG,KAAQ6vG,GAAS12M,MAAMuF,GAAQoqM,WAAW9tJ,EAAAA,GAC1C80J,KAAAA,IAGAriE,KAAU/uI,GAAQ+uI;AACtB,gBAAI/uI,GAAQmqM;AACR,mBAAKllO,KAAI,GAAGA,KAAIq8H,GAAMn3H,QAAAA,EAAUlF;AACM,sBAA9Bq8H,GAAMr8H,EAAAA,EAAG2O,QAAQ,OAAA,MAbX,qBAcF0tH,GAAMr8H,EAAAA,IACN8pK,KAAU,UAlBZ,0BAmBSztC,GAAMr8H,EAAAA,MACb8pK,KAAU,eAEdqiE,KAAYnsO,IACZA,KAAIq8H,GAAMn3H;AAKtB,iBAAKlF,KAAI,GAAGA,KAAIq8H,GAAMn3H,QAAAA,EAAUlF;AAC5B,kBAAIA,OAAMmsO,IAAV;AAGA,oBAKI5qO,IAAKiN,IALLqkD,KAAOwpE,GAAMr8H,EAAAA,GAEbosO,KAAmBv5K,GAAKlkD,QAAQ,IAAA,GAChCmqC,KAAAA,OAAMszL,KAA0Bv5K,GAAKlkD,QAAQ,GAAA,IAAOy9N,KAAmB;AAAA,uBAGvEtzL,MACAv3C,KAAMw5B,GAAQs+H,QAAQxmG,IAAMkyK,GAAS1rE,SAASyQ,IAAS,KAAA,GACvDt7J,KAAMusB,GAAQwqM,qBAAqB,OAAO,OAE1ChkO,KAAMw5B,GAAQs+H,QAAQxmG,GAAK1wD,MAAM,GAAG22C,EAAAA,GAAMisL,GAAS1rE,SAASyQ,IAAS,KAAA,GACrEt7J,KAAM+1N,GAAMhzN,SACRo6N,GAAgB94K,GAAK1wD,MAAM22C,KAAM,CAAA,GAAI/d,EAAAA,GACrC,SAAUsxM,IAAAA;AACN,yBAAOtxM,GAAQs+H,QAAQgzE,IAAYtH,GAAS1rE,SAASyQ,IAAS,OAAA;gBAAA,CAAA,IAKtEt7J,MAAOusB,GAAQwwM,4BAAwC,iBAAZzhE,OAC3Ct7J,KAAM+8N,GAAyB/8N,EAAAA,IAG/BqkD,GAAKlkD,QAAQ,KAAA,IAAA,OACbH,KAAM1D,GAAQ0D,EAAAA,IAAO,CAACA,EAAAA,IAAOA,KAG7BvB,GAAI9M,KAAK8P,IAAK1O,EAAAA,IACd0O,GAAI1O,EAAAA,IAAOgjO,GAAM36D,QAAQ35J,GAAI1O,EAAAA,GAAMiN,EAAAA,IAEnCyB,GAAI1O,EAAAA,IAAOiN;cAAAA;AAInB,mBAAOyB;UAAAA,EAsI6CggB,IAAK8K,EAAAA,IAAW9K,IAChEhgB,KAAM8qB,GAAQ4uI,eAAejpK,uBAAOY,OAAO,IAAA,IAAQ,CAAA,GAInD8I,KAAO1J,OAAO0J,KAAK6hO,EAAAA,GACdjsO,KAAI,GAAGA,KAAIoK,GAAKlF,QAAAA,EAAUlF,IAAG;AAClC,gBAAIuB,KAAM6I,GAAKpK,EAAAA,GACX0tB,KAASk+M,GAAUrqO,IAAK0qO,GAAQ1qO,EAAAA,GAAMw5B,IAAwB,YAAA,OAAR9K,EAAAA;AAC1DhgB,YAAAA,KAAMs0N,GAAM9xN,MAAMxC,IAAKyd,IAAQqN,EAAAA;UAAAA;AAGnC,iBAAA,SAAIA,GAAQqwM,cACDn7N,KAGJs0N,GAAMrsL,QAAQjoC,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACrQzB,YAAI26G,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGtiB;AACb,iBAAOsiB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAeh7I,SAAUic,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPlH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASvlK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACFvC,YAAIusB,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjB+tH,KAAkB/tH,GAAQ,GAAA,GAC1B2rF,KAAsB3rF,GAAQ,GAAA,GAC9BojC,KAAoBpjC,GAAQ,EAAA,GAC5BilB,KAAWjlB,GAAQ,EAAA,GACnBktD,KAAqBltD,GAAQ,GAAA,GAC7BmuH,KAAiBnuH,GAAQ,GAAA,GAGzB8/K,KAF+B9/K,GAAQ,GAAA,EAEY,QAAA,GAEnDsJ,KAAYqvB,GAAOrvB,WACnB9F,KAAMD,KAAKC,KACXoB,KAAMrB,KAAKqB,KACX2oJ,KAAmB,kBACnBs9E,KAAkC;AAKtCjmM,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,MAAaG,QAAAA,CAASwlJ,GAAAA,GAAuB,EAChEznK,QAAQ,SAAgBnM,IAAO4+N,IAAAA;AAC7B,cAIIC,IAAaC,IAAmB99M,IAAGznB,IAAG6U,IAAMC,IAJ5C4pB,KAAIlf,GAAS3f,IAAAA,GACbhC,KAAM8/B,GAAkBe,EAAAA,GACxB8mM,KAAcl9G,GAAgB7hH,IAAO5I,EAAAA,GACrC4tJ,KAAkB3pJ,UAAU9D;AAWhC,cATwB,MAApBytJ,KACF65E,KAAcC,KAAoB,IACL,MAApB95E,MACT65E,KAAc,GACdC,KAAoB1nO,KAAM2nO,OAE1BF,KAAc75E,KAAkB,GAChC85E,KAAoBpmO,GAAIpB,GAAImoF,GAAoBm/I,EAAAA,GAAc,CAAA,GAAIxnO,KAAM2nO,EAAAA,IAEtE3nO,KAAMynO,KAAcC,KAAoBz9E;AAC1C,kBAAMjkJ,GAAUuhO,EAAAA;AAGlB,eADA39M,KAAIggC,GAAmB/oB,IAAG6mM,EAAAA,GACrBvlO,KAAI,GAAGA,KAAIulO,IAAmBvlO;AAAAA,aACjC6U,KAAO2wN,KAAcxlO,OACT0+B,MAAGgqF,GAAejhG,IAAGznB,IAAG0+B,GAAE7pB,EAAAA,CAAAA;AAGxC,cADA4S,GAAEzpB,SAASunO,IACPD,KAAcC,IAAmB;AACnC,iBAAKvlO,KAAIwlO,IAAaxlO,KAAInC,KAAM0nO,IAAmBvlO;AAEjD8U,cAAAA,KAAK9U,KAAIslO,KADTzwN,KAAO7U,KAAIulO,OAEC7mM,KAAGA,GAAE5pB,EAAAA,IAAM4pB,GAAE7pB,EAAAA,IAAAA,OACb6pB,GAAE5pB,EAAAA;AAEhB,iBAAK9U,KAAInC,IAAKmC,KAAInC,KAAM0nO,KAAoBD,IAAatlO;AAAAA,qBAAY0+B,GAAE1+B,KAAI,CAAA;UAAA,WAClEslO,KAAcC;AACvB,iBAAKvlO,KAAInC,KAAM0nO,IAAmBvlO,KAAIwlO,IAAaxlO;AAEjD8U,cAAAA,KAAK9U,KAAIslO,KAAc,IADvBzwN,KAAO7U,KAAIulO,KAAoB,MAEnB7mM,KAAGA,GAAE5pB,EAAAA,IAAM4pB,GAAE7pB,EAAAA,IAAAA,OACb6pB,GAAE5pB,EAAAA;AAGlB,eAAK9U,KAAI,GAAGA,KAAIslO,IAAatlO;AAC3B0+B,YAAAA,GAAE1+B,KAAIwlO,EAAAA,IAAe1jO,UAAU9B,KAAI,CAAA;AAGrC,iBADA0+B,GAAE1gC,SAASH,KAAM0nO,KAAoBD,IAC9B79M;QAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnEX,YAAIi8F,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,EAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHjB,QAAAnpH,GAAQ,EAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKzpB;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACJtB,YAYI27N,IAZAvyM,KAAS34B,GAAQ,EAAA,GACjB44B,KAAc54B,GAAQ,EAAA,GACtBw7H,KAAcx7H,GAAQ,GAAA,GACtBu8J,KAAyBv8J,GAAQ,GAAA,GACjCsV,KAAatV,GAAQ,GAAA,GACrBmrO,KAAiBnrO,GAAQ,GAAA,GACzByrB,KAAWzrB,GAAQ,EAAA,GACnBiP,KAAejP,GAAQ,GAAA,GACvBorO,KAAuBprO,GAAQ,EAAA,EAA+B+sD,SAC9DX,KAAkBpsD,GAAQ,GAAA,GAE1BqrO,KAAAA,CAAW1yM,GAAOguC,iBAAiB,mBAAmBhuC,IAGtD+jI,KAAU,SAAU1rC,IAAAA;AACtB,iBAAO,WAAA;AACL,mBAAOA,GAAK1rH,MAAMiC,UAAU9D,SAAS8D,UAAU,CAAA,IAAA,MAAKiC;UAAAA;QAAAA,GAMpDo7N,KAAWtvN,GAAW,WAAWonJ,IAASyuE,EAAAA;AAK9C,YAAI/+K,MAAmBi/K,IAAS;AAC9BH,UAAAA,KAAkBC,GAAenuE,eAAeN,IAAS,WAAA,IAAW,GACpEH,GAAuB3kE,OAAAA;AACvB,cAAI0zI,KAAmB1G,GAASzkO,WAC5BorO,KAAe3yM,GAAY0yM,GAAyB,MAAA,GACpDE,KAAY5yM,GAAY0yM,GAAiB9/N,GAAAA,GACzCigO,KAAY7yM,GAAY0yM,GAAiBlsO,GAAAA,GACzCssO,KAAY9yM,GAAY0yM,GAAiBt8N,GAAAA;AAC7CwsH,UAAAA,GAAY8vG,IAAkB,EAC5B,QAAU,SAAUxrO,IAAAA;AAClB,gBAAI2rB,GAAS3rB,EAAAA,KAAAA,CAASmP,GAAanP,EAAAA,GAAM;AACvC,kBAAIo/C,KAAQksL,GAAqB9lO,IAAAA;AAEjC,qBADK45C,GAAMysL,WAAQzsL,GAAMysL,SAAS,IAAIT,OAC/BK,GAAajmO,MAAMxF,EAAAA,KAAQo/C,GAAMysL,OAAe,OAAE7rO,EAAAA;YAAAA;AACzD,mBAAOyrO,GAAajmO,MAAMxF,EAAAA;UAAAA,GAE9B0L,KAAK,SAAa1L,IAAAA;AAChB,gBAAI2rB,GAAS3rB,EAAAA,KAAAA,CAASmP,GAAanP,EAAAA,GAAM;AACvC,kBAAIo/C,KAAQksL,GAAqB9lO,IAAAA;AAEjC,qBADK45C,GAAMysL,WAAQzsL,GAAMysL,SAAS,IAAIT,OAC/BM,GAAUlmO,MAAMxF,EAAAA,KAAQo/C,GAAMysL,OAAOngO,IAAI1L,EAAAA;YAAAA;AAChD,mBAAO0rO,GAAUlmO,MAAMxF,EAAAA;UAAAA,GAE3BV,KAAK,SAAaU,IAAAA;AAChB,gBAAI2rB,GAAS3rB,EAAAA,KAAAA,CAASmP,GAAanP,EAAAA,GAAM;AACvC,kBAAIo/C,KAAQksL,GAAqB9lO,IAAAA;AAEjC,qBADK45C,GAAMysL,WAAQzsL,GAAMysL,SAAS,IAAIT,OAC/BM,GAAUlmO,MAAMxF,EAAAA,IAAO2rO,GAAUnmO,MAAMxF,EAAAA,IAAOo/C,GAAMysL,OAAOvsO,IAAIU,EAAAA;YAAAA;AACtE,mBAAO2rO,GAAUnmO,MAAMxF,EAAAA;UAAAA,GAE3BkP,KAAK,SAAalP,IAAKN,IAAAA;AACrB,gBAAIisB,GAAS3rB,EAAAA,KAAAA,CAASmP,GAAanP,EAAAA,GAAM;AACvC,kBAAIo/C,KAAQksL,GAAqB9lO,IAAAA;AAC5B45C,cAAAA,GAAMysL,WAAQzsL,GAAMysL,SAAS,IAAIT,OACtCM,GAAUlmO,MAAMxF,EAAAA,IAAO4rO,GAAUpmO,MAAMxF,IAAKN,EAAAA,IAAS0/C,GAAMysL,OAAO38N,IAAIlP,IAAKN,EAAAA;YAAAA;AACtEksO,cAAAA,GAAUpmO,MAAMxF,IAAKN,EAAAA;AAC5B,mBAAO8F;UAAAA,EAAAA,CAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC/Db,YAAIszB,KAAc54B,GAAQ,EAAA,GACtBw7H,KAAcx7H,GAAQ,GAAA,GACtB83F,KAAc93F,GAAQ,GAAA,EAAkC83F,aACxD50D,KAAWljC,GAAQ,EAAA,GACnByrB,KAAWzrB,GAAQ,EAAA,GACnBy7H,KAAaz7H,GAAQ,GAAA,GACrBuS,KAAUvS,GAAQ,EAAA,GAClB4rO,KAAuB5rO,GAAQ,EAAA,GAC/Bk5B,KAASl5B,GAAQ,EAAA,GACjBkuD,KAAsBluD,GAAQ,EAAA,GAE9BsuD,KAAmBJ,GAAoBl/C,KACvCwtJ,KAAyBtuG,GAAoBlB,WAC7CvnC,KAAOmmN,GAAqBnmN,MAC5BmE,KAAYgiN,GAAqBhiN,WACjCvR,KAASugB,GAAY,CAAA,EAAGvgB,MAAAA,GACxBye,KAAK,GAGL+0M,KAAsB,SAAUr/K,IAAAA;AAClC,iBAAOA,GAAMm/K,WAAWn/K,GAAMm/K,SAAS,IAAIG;QAAAA,GAGzCA,KAAsB,WAAA;AACxBxmO,eAAK4F,UAAU,CAAA;QAAA,GAGb6gO,KAAqB,SAAUv/K,IAAO1sD,IAAAA;AACxC,iBAAO2lB,GAAK+mC,GAAMthD,SAAS,SAAUyvB,IAAAA;AACnC,mBAAOA,GAAG,CAAA,MAAO76B;UAAAA,CAAAA;QAAAA;AAIrBgsO,QAAAA,GAAoB3rO,YAAY,EAC9Bf,KAAK,SAAUU,IAAAA;AACb,cAAI8J,KAAQmiO,GAAmBzmO,MAAMxF,EAAAA;AACrC,cAAI8J;AAAO,mBAAOA,GAAM,CAAA;QAAA,GAE1B4B,KAAK,SAAU1L,IAAAA;AACb,iBAAA,CAAA,CAASisO,GAAmBzmO,MAAMxF,EAAAA;QAAAA,GAEpCkP,KAAK,SAAUlP,IAAKN,IAAAA;AAClB,cAAIoK,KAAQmiO,GAAmBzmO,MAAMxF,EAAAA;AACjC8J,UAAAA,KAAOA,GAAM,CAAA,IAAKpK,KACjB8F,KAAK4F,QAAQgK,KAAK,CAACpV,IAAKN,EAAAA,CAAAA;QAAAA,GAE/B,QAAU,SAAUM,IAAAA;AAClB,cAAIoE,KAAQ0lB,GAAUtkB,KAAK4F,SAAS,SAAUyvB,IAAAA;AAC5C,mBAAOA,GAAG,CAAA,MAAO76B;UAAAA,CAAAA;AAGnB,iBAAA,CADKoE,MAAOmU,GAAO/S,KAAK4F,SAAShH,IAAO,CAAA,GAAA,CAAA,CAAA,CAC9BA;QAAAA,EAAAA,GAId5F,GAAOD,UAAU,EACf2+J,gBAAgB,SAAUN,IAASD,IAAkBrvG,IAAQwvG,IAAAA;AAC3D,cAAIhyI,KAAc8xI,GAAQ,SAAU/4H,IAAMx9B,IAAAA;AACxCs1H,YAAAA,GAAW93F,IAAM21C,EAAAA,GACjBhrB,GAAiB3qB,IAAM,EACrBn+B,MAAMi3J,IACN3lI,IAAIA,MACJ60M,QAAAA,OAAQniO,CAAAA,GAEMA,QAAZrD,MAAuBoM,GAAQpM,IAAUw9B,GAAKi5H,EAAAA,GAAQ,EAAEj5H,MAAMA,IAAMC,YAAYwpB,GAAAA,CAAAA;UAAAA,CAAAA,GAGlFksB,KAAY1uD,GAAYzqB,WAExBouD,KAAmBiuG,GAAuBC,EAAAA,GAE1Cy1B,KAAS,SAAUvuJ,IAAM7jC,IAAKN,IAAAA;AAChC,gBAAI0/C,KAAQqP,GAAiB5qB,EAAAA,GACzBlP,KAAOqjE,GAAY50D,GAASpjC,EAAAA,GAAAA,IAAM;AAGtC,mBAAA,SAFI20B,KAAeo3M,GAAoB3sL,EAAAA,EAAOlwC,IAAIlP,IAAKN,EAAAA,IAClDi1B,GAAKyqB,GAAMpoB,EAAAA,IAAMt3B,IACfmkC;UAAAA;AAkDT,iBA/CA63F,GAAYliD,IAAW,EAIrB,QAAU,SAAUx5E,IAAAA;AAClB,gBAAIo/C,KAAQqP,GAAiBjpD,IAAAA;AAC7B,gBAAA,CAAKmmB,GAAS3rB,EAAAA;AAAM,qBAAA;AACpB,gBAAI20B,KAAOqjE,GAAYh4F,EAAAA;AACvB,mBAAA,SAAI20B,KAAsBo3M,GAAoB3sL,EAAAA,EAAe,OAAEp/C,EAAAA,IACxD20B,MAAQyE,GAAOzE,IAAMyqB,GAAMpoB,EAAAA,KAAAA,OAAcrC,GAAKyqB,GAAMpoB,EAAAA;UAAAA,GAK7DtrB,KAAK,SAAa1L,IAAAA;AAChB,gBAAIo/C,KAAQqP,GAAiBjpD,IAAAA;AAC7B,gBAAA,CAAKmmB,GAAS3rB,EAAAA;AAAM,qBAAA;AACpB,gBAAI20B,KAAOqjE,GAAYh4F,EAAAA;AACvB,mBAAA,SAAI20B,KAAsBo3M,GAAoB3sL,EAAAA,EAAO1zC,IAAI1L,EAAAA,IAClD20B,MAAQyE,GAAOzE,IAAMyqB,GAAMpoB,EAAAA;UAAAA,EAAAA,CAAAA,GAItC0kG,GAAYliD,IAAWlsB,KAAS,EAG9BhuD,KAAK,SAAaU,IAAAA;AAChB,gBAAIo/C,KAAQqP,GAAiBjpD,IAAAA;AAC7B,gBAAImmB,GAAS3rB,EAAAA,GAAM;AACjB,kBAAI20B,KAAOqjE,GAAYh4F,EAAAA;AACvB,qBAAA,SAAI20B,KAAsBo3M,GAAoB3sL,EAAAA,EAAO9/C,IAAIU,EAAAA,IAClD20B,KAAOA,GAAKyqB,GAAMpoB,EAAAA,IAAAA;YAAMttB;UAAAA,GAKnCwF,KAAK,SAAalP,IAAKN,IAAAA;AACrB,mBAAO0yL,GAAO5sL,MAAMxF,IAAKN,EAAAA;UAAAA,EAAAA,IAEzB,EAGF+iB,KAAK,SAAa/iB,IAAAA;AAChB,mBAAO0yL,GAAO5sL,MAAM9F,IAAAA,IAAO;UAAA,EAAA,CAAA,GAIxBorB;QAAAA,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC/HX,YAAIu+F,KAASnpH,GAAQ,GAAA;AACrB,QAAAA,GAAQ,EAAA,GAER1B,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHjB,QAAAnpH,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKykG;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHtB,YAEIn0H,KAFStJ,GAAQ,EAAA,EAEEsJ;AAEvBhL,QAAAA,GAAOD,UAAU,SAAU2tO,IAAQ3vK,IAAAA;AACjC,cAAI2vK,KAAS3vK;AAAU,kBAAM/yD,GAAU,sBAAA;AACvC,iBAAO0iO;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SCNT,SAAAzrO,IAAAlB,IAAA;AAAA,cAAAL;AAAA,WACE,SAAS4U,IAAAA;AAGsCvV,YAAAA,MAC9CA,GAAQ8Q,UACoC7Q,MAC5CA,GAAO6Q;AAHT,gBAIIsmC,KAA8B,YAAA,OAAV9c,MAAsBA;AAE7C8c,YAAAA,GAAW9c,WAAW8c,MACtBA,GAAW3a,WAAW2a,MACtBA,GAAWvd;AAUZ,gBAAIw2B,IAGJu9K,KAAS,YAGTvuK,KAAO,IAUPwuK,KAAgB,SAChBC,KAAgB,gBAChBC,KAAkB,6BAGlBn9M,KAAS,EACR,UAAY,mDACZ,aAAa,kDACb,iBAAiB,gBAAA,GAKlB1hB,KAAQhK,KAAKgK,OACb8+N,KAAqB/iN,OAAO+0B;AAa5B,qBAAStyC,GAAMvG,IAAAA;AACd,oBAAM,IAAIglE,WAAWv7C,GAAOzpB,EAAAA,CAAAA;YAAAA;AAW7B,qBAAS4E,GAAI5B,IAAOX,IAAAA;AAGnB,uBAFIpE,KAAS+E,GAAM/E,QACfs0B,KAAS,CAAA,GACNt0B;AACNs0B,gBAAAA,GAAOt0B,EAAAA,IAAUoE,GAAGW,GAAM/E,EAAAA,CAAAA;AAE3B,qBAAOs0B;YAAAA;AAaR,qBAASu0M,GAAUn+N,IAAQtG,IAAAA;AAC1B,kBAAI+yH,KAAQzsH,GAAO4lB,MAAM,GAAA,GACrBgE,KAAS;AAWb,qBAVI6iG,GAAMn3H,SAAS,MAGlBs0B,KAAS6iG,GAAM,CAAA,IAAK,KACpBzsH,KAASysH,GAAM,CAAA,IAMT7iG,KADO3tB,IAFd+D,KAASA,GAAOsgB,QAAQ29M,IAAiB,GAAA,GACrBr4M,MAAM,GAAA,GACAlsB,EAAAA,EAAI0d,KAAK,GAAA;YAAA;AAiBpC,qBAASgnN,GAAWp+N,IAAAA;AAMnB,uBAFI3O,IACAy8I,IAJAsuB,KAAS,CAAA,GACTnH,KAAU,GACV3/J,KAAS0K,GAAO1K,QAGb2/J,KAAU3/J;AAAAA,iBAChBjE,KAAQ2O,GAAOI,WAAW60J,IAAAA,MACb,SAAU5jK,MAAS,SAAU4jK,KAAU3/J,KAG3B,UAAX,SADbw4I,KAAQ9tI,GAAOI,WAAW60J,IAAAA,MAEzBmH,GAAOr1J,OAAe,OAAR1V,OAAkB,OAAe,OAARy8I,MAAiB,KAAA,KAIxDsuB,GAAOr1J,KAAK1V,EAAAA,GACZ4jK,QAGDmH,GAAOr1J,KAAK1V,EAAAA;AAGd,qBAAO+qK;YAAAA;AAWR,qBAASiiE,GAAWhkO,IAAAA;AACnB,qBAAO4B,GAAI5B,IAAO,SAAShJ,IAAAA;AAC1B,oBAAI+qK,KAAS;AAOb,uBANI/qK,KAAQ,UAEX+qK,MAAU8hE,IADV7sO,MAAS,WAC8B,KAAK,OAAQ,KAAA,GACpDA,KAAQ,QAAiB,OAARA,KAElB+qK,MAAU8hE,GAAmB7sO,EAAAA;cAAAA,CAAAA,EAE3B+lB,KAAK,EAAA;YAAA;AAoCT,qBAASknN,GAAaC,IAAOC,IAAAA;AAG5B,qBAAOD,KAAQ,KAAK,MAAMA,KAAQ,QAAgB,KAARC,OAAc;YAAA;AAQzD,qBAASC,GAAM3wL,IAAO4wL,IAAWC,IAAAA;AAChC,kBAAIrnO,KAAI;AAGR,mBAFAw2C,KAAQ6wL,KAAYv/N,GAAM0uC,KA1LpB,GAAA,IA0LoCA,MAAS,GACnDA,MAAS1uC,GAAM0uC,KAAQ4wL,EAAAA,GACO5wL,KAAQ8wL,KAA2BtnO,MAAKi4D;AACrEzhB,gBAAAA,KAAQ1uC,GAAM0uC,KA3KAyhB,EAAAA;AA6Kf,qBAAOnwD,GAAM9H,KAAI,KAAsBw2C,MAASA,KAhM1C,GAAA;YAAA;AA0MP,qBAASqqH,GAAOpwI,IAAAA;AAEf,kBAEIi9C,IAIA65J,IACA5oM,IACAlgC,IACA+oO,IACAr/M,IACAnoB,IACAinO,IACAjtO,IAEAytO,IArEiBt7J,IAsDjB24F,KAAS,CAAA,GACT4iE,KAAcj3M,GAAMzyB,QAEpBlF,KAAI,GACJyB,KA7MM,KA8MNotO,KA/MS;AAoOb,oBALAJ,KAAQ92M,GAAM/oB,YA7NH,GAAA,KA8NC,MACX6/N,KAAQ,IAGJ5oM,KAAI,GAAGA,KAAI4oM,IAAAA,EAAS5oM;AAEpBlO,gBAAAA,GAAM3nB,WAAW61B,EAAAA,KAAM,OAC1Br4B,GAAM,WAAA,GAEPw+J,GAAOr1J,KAAKghB,GAAM3nB,WAAW61B,EAAAA,CAAAA;AAM9B,mBAAKlgC,KAAQ8oO,KAAQ,IAAIA,KAAQ,IAAI,GAAG9oO,KAAQipO,MAAwC;AAOvF,qBAAKF,KAAO1uO,IAAGqvB,KAAI,GAAGnoB,KAAIi4D,IAErBx5D,MAASipO,MACZphO,GAAM,eAAA,KAGP2gO,MAxGmB96J,KAwGE17C,GAAM3nB,WAAWrK,IAAAA,KAvGxB,KAAK,KACb0tE,KAAY,KAEhBA,KAAY,KAAK,KACbA,KAAY,KAEhBA,KAAY,KAAK,KACbA,KAAY,KAEblU,OAgGQA,MAAQgvK,KAAQn/N,IAAO0+N,KAAS1tO,MAAKqvB,EAAAA,MACjD7hB,GAAM,UAAA,GAGPxN,MAAKmuO,KAAQ9+M,IAAAA,EAGT8+M,MAFJjtO,KAAIgG,MAAK2nO,KAvQL,IAuQoB3nO,MAAK2nO,KAtQzB,KAAA,KAsQ8C3nO,KAAI2nO,MAbH3nO,MAAKi4D;AAoBpD9vC,kBAAAA,KAAIrgB,GAAM0+N,MADdiB,KAAaxvK,KAAOj+D,GAAAA,KAEnBsM,GAAM,UAAA,GAGP6hB,MAAKs/M;AAKNE,gBAAAA,KAAOR,GAAMruO,KAAI0uO,IADjB95J,KAAMo3F,GAAO9mK,SAAS,GACc,KAARwpO,EAAAA,GAIxB1/N,GAAMhP,KAAI40E,EAAAA,IAAO84J,KAASjsO,MAC7B+L,GAAM,UAAA,GAGP/L,MAAKuN,GAAMhP,KAAI40E,EAAAA,GACf50E,MAAK40E,IAGLo3F,GAAOlyJ,OAAO9Z,MAAK,GAAGyB,EAAAA;cAAAA;AAIvB,qBAAOwsO,GAAWjiE,EAAAA;YAAAA;AAUnB,qBAASj7B,GAAOp5G,IAAAA;AACf,kBAAIl2B,IACAi8C,IACAoxL,IACAC,IACAF,IACAhpM,IACAzlC,IACAg3B,IACAlwB,IACAhG,IACAszF,IAGAo6I,IAEAI,IACAL,IACAM,IANAjjE,KAAS,CAAA;AAoBb,mBARA4iE,MAHAj3M,KAAQq2M,GAAWr2M,EAAAA,GAGCzyB,QAGpBzD,KAvUU,KAwUVi8C,KAAQ,GACRmxL,KA1Ua,IA6URhpM,KAAI,GAAGA,KAAI+oM,IAAAA,EAAe/oM;AAAAA,iBAC9B2uD,KAAe78D,GAAMkO,EAAAA,KACF,OAClBmmI,GAAOr1J,KAAKm3N,GAAmBt5I,EAAAA,CAAAA;AAejC,mBAXAs6I,KAAiBC,KAAc/iE,GAAO9mK,QAMlC6pO,MACH/iE,GAAOr1J,KAzVG,GAAA,GA6VJm4N,KAAiBF,MAAa;AAIpC,qBAAKxuO,KAAIstO,IAAQ7nM,KAAI,GAAGA,KAAI+oM,IAAAA,EAAe/oM;AAAAA,mBAC1C2uD,KAAe78D,GAAMkO,EAAAA,MACDpkC,MAAK+yF,KAAep0F,OACvCA,KAAIo0F;AAcN,qBAPIp0F,KAAIqB,KAAIuN,IAAO0+N,KAAShwL,OAD5BsxL,KAAwBF,KAAiB,EAAA,KAExCthO,GAAM,UAAA,GAGPkwC,OAAUt9C,KAAIqB,MAAKutO,IACnBvtO,KAAIrB,IAECylC,KAAI,GAAGA,KAAI+oM,IAAAA,EAAe/oM;AAO9B,uBANA2uD,KAAe78D,GAAMkO,EAAAA,KAEFpkC,MAAAA,EAAOi8C,KAAQgwL,MACjClgO,GAAM,UAAA,GAGHgnF,MAAgB/yF,IAAG;AAEtB,yBAAK21B,KAAIsmB,IAAOx2C,KAAIi4D,IAAAA,EAEf/nC,MADJl2B,KAAIgG,MAAK2nO,KAlYP,IAkYsB3nO,MAAK2nO,KAjY3B,KAAA,KAiYgD3nO,KAAI2nO,MADT3nO,MAAKi4D;AAKlD8vK,sBAAAA,KAAU73M,KAAIl2B,IACdytO,KAAaxvK,KAAOj+D,IACpB8qK,GAAOr1J,KACNm3N,GAAmBI,GAAahtO,KAAI+tO,KAAUN,IAAY,CAAA,CAAA,CAAA,GAE3Dv3M,KAAIpoB,GAAMigO,KAAUN,EAAAA;AAGrB3iE,oBAAAA,GAAOr1J,KAAKm3N,GAAmBI,GAAa92M,IAAG,CAAA,CAAA,CAAA,GAC/Cy3M,KAAOR,GAAM3wL,IAAOsxL,IAAuBF,MAAkBC,EAAAA,GAC7DrxL,KAAQ,GAAA,EACNoxL;kBAAAA;AAAAA,kBAIFpxL,IAAAA,EACAj8C;cAAAA;AAGH,qBAAOuqK,GAAOhlJ,KAAK,EAAA;YAAA;AA4CpBmpC,YAAAA,KAAW,EAMV,SAAW,SAQX,MAAQ,EACP,QAAU69K,IACV,QAAUC,GAAAA,GAEX,QAAUlmE,IACV,QAAUh3B,IACV,SA/BD,SAAiBp5G,IAAAA;AAChB,qBAAOo2M,GAAUp2M,IAAO,SAAS/nB,IAAAA;AAChC,uBAAOg+N,GAAct7M,KAAK1iB,EAAAA,IACvB,SAASmhI,GAAOnhI,EAAAA,IAChBA;cAAAA,CAAAA;YAAAA,GA4BJ,WAnDD,SAAmB+nB,IAAAA;AAClB,qBAAOo2M,GAAUp2M,IAAO,SAAS/nB,IAAAA;AAChC,uBAAO+9N,GAAcr7M,KAAK1iB,EAAAA,IACvBm4J,GAAOn4J,GAAOzN,MAAM,CAAA,EAAG0wB,YAAAA,CAAAA,IACvBjjB;cAAAA,CAAAA;YAAAA,EAAAA,GAAAA,YA0DJnP,KAAA,WAAA;AACC,qBAAO0vD;YAAAA,EACP,KAAAjvD,IAAAO,IAAAP,IAAAc,EAAA,OAAAA,GAAA,UAAAvB;UAAA,EAngBF;QAAA,GAAA,KAAA,MAAAgB,GAAA,GAAA,EAAAO,EAAA,GAAAP,GAAA,EAAA,CAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACCD1B,QAAAA,GAAOD,UAAU,EACfkoC,UAAU,SAAS8G,IAAAA;AACjB,iBAAuB,YAAA,OAAV9sC;QAAA,GAEfkrB,UAAU,SAAS4hB,IAAAA;AACjB,iBAAuB,YAAA,OAAV9sC,MAA8B,SAAR8sC;QAAAA,GAErCwlB,QAAQ,SAASxlB,IAAAA;AACf,iBAAe,SAARA;QAAAA,GAETslB,mBAAmB,SAAStlB,IAAAA;AAC1B,iBAAc,QAAPA;QAAAA,EAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACXXhvC,QAAAA,GAAQioK,SAASjoK,GAAQiyB,QAAQtwB,GAAQ,GAAA,GACzC3B,GAAQixI,SAASjxI,GAAQgrB,YAAYrpB,GAAQ,GAAA;MAAA,GAAA,SAAAO,IAAAd,IAAAO,IAAA;AAAA;ACuB7C,iBAASI,GAAeoO,IAAKwwB,IAAAA;AAC3B,iBAAO//B,OAAOkB,UAAUC,eAAe1B,KAAK8P,IAAKwwB,EAAAA;QAAAA;AAGnD1gC,QAAAA,GAAOD,UAAU,SAASi+D,IAAImxK,IAAK54M,IAAIyE,IAAAA;AACrCm0M,UAAAA,KAAMA,MAAO,KACb54M,KAAKA,MAAM;AACX,cAAIrmB,KAAM,CAAA;AAEV,cAAkB,YAAA,OAAP8tD,MAAiC,MAAdA,GAAG74D;AAC/B,mBAAO+K;AAGT,cAAI8lJ,KAAS;AACbh4F,UAAAA,KAAKA,GAAGvoC,MAAM05M,EAAAA;AAEd,cAAIC,KAAU;AACVp0M,UAAAA,MAAsC,YAAA,OAApBA,GAAQo0M,YAC5BA,KAAUp0M,GAAQo0M;AAGpB,cAAIpqO,KAAMg5D,GAAG74D;AAETiqO,UAAAA,KAAU,KAAKpqO,KAAMoqO,OACvBpqO,KAAMoqO;AAGR,mBAASnvO,KAAI,GAAGA,KAAI+E,IAAAA,EAAO/E,IAAG;AAC5B,gBAEIovO,IAAMC,IAAMnoO,IAAGC,IAFf8P,KAAI8mD,GAAG/9D,EAAAA,EAAGkwB,QAAQ6lI,IAAQ,KAAA,GAC1Br+I,KAAMT,GAAEtI,QAAQ2nB,EAAAA;AAGhB5e,YAAAA,MAAO,KACT03N,KAAOn4N,GAAEse,OAAO,GAAG7d,EAAAA,GACnB23N,KAAOp4N,GAAEse,OAAO7d,KAAM,CAAA,MAEtB03N,KAAOn4N,IACPo4N,KAAO,KAGTnoO,KAAI2oB,mBAAmBu/M,EAAAA,GACvBjoO,KAAI0oB,mBAAmBw/M,EAAAA,GAElBxtO,GAAeoO,IAAK/I,EAAAA,IAEd4D,GAAQmF,GAAI/I,EAAAA,CAAAA,IACrB+I,GAAI/I,EAAAA,EAAGyP,KAAKxP,EAAAA,IAEZ8I,GAAI/I,EAAAA,IAAK,CAAC+I,GAAI/I,EAAAA,GAAIC,EAAAA,IAJlB8I,GAAI/I,EAAAA,IAAKC;UAAAA;AAQb,iBAAO8I;QAAAA;AAGT,YAAInF,KAAU5I,MAAM4I,WAAW,SAAU4vJ,IAAAA;AACvC,iBAA8C,qBAAvCh6J,OAAOkB,UAAU6G,SAAStI,KAAKu6J,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC3DxC,YAAI40E,KAAqB,SAASnoO,IAAAA;AAChC,kBAAA,OAAeA,IAAAA;YACb,KAAK;AACH,qBAAOA;YAET,KAAK;AACH,qBAAOA,KAAI,SAAS;YAEtB,KAAK;AACH,qBAAOstE,SAASttE,EAAAA,IAAKA,KAAI;YAE3B;AACE,qBAAO;UAAA;QAAA;AAIbpH,QAAAA,GAAOD,UAAU,SAASmQ,IAAKi/N,IAAK54M,IAAI/1B,IAAAA;AAOtC,iBANA2uO,KAAMA,MAAO,KACb54M,KAAKA,MAAM,KACC,SAARrmB,OACFA,KAAAA,SAGiB,YAAA,OAARA,KACFpE,GAAI6yC,GAAWzuC,EAAAA,GAAM,SAAS/I,IAAAA;AACnC,gBAAIqoO,KAAKn5M,mBAAmBk5M,GAAmBpoO,EAAAA,CAAAA,IAAMovB;AACrD,mBAAIxrB,GAAQmF,GAAI/I,EAAAA,CAAAA,IACP2E,GAAIoE,GAAI/I,EAAAA,GAAI,SAASC,IAAAA;AAC1B,qBAAOooO,KAAKn5M,mBAAmBk5M,GAAmBnoO,EAAAA,CAAAA;YAAAA,CAAAA,EACjD6f,KAAKkoN,EAAAA,IAEDK,KAAKn5M,mBAAmBk5M,GAAmBr/N,GAAI/I,EAAAA,CAAAA,CAAAA;UAAAA,CAAAA,EAEvD8f,KAAKkoN,EAAAA,IAIL3uO,KACE61B,mBAAmBk5M,GAAmB/uO,EAAAA,CAAAA,IAAS+1B,KAC/CF,mBAAmBk5M,GAAmBr/N,EAAAA,CAAAA,IAF3B;QAAA;AAKpB,YAAInF,KAAU5I,MAAM4I,WAAW,SAAU4vJ,IAAAA;AACvC,iBAA8C,qBAAvCh6J,OAAOkB,UAAU6G,SAAStI,KAAKu6J,EAAAA;QAAAA;AAGxC,iBAAS7uJ,GAAK6uJ,IAAI1sI,IAAAA;AAChB,cAAI0sI,GAAG7uJ;AAAK,mBAAO6uJ,GAAG7uJ,IAAImiB,EAAAA;AAE1B,mBADIU,KAAM,CAAA,GACD1uB,KAAI,GAAGA,KAAI06J,GAAGx1J,QAAQlF;AAC7B0uB,YAAAA,GAAI/X,KAAKqX,GAAE0sI,GAAG16J,EAAAA,GAAIA,EAAAA,CAAAA;AAEpB,iBAAO0uB;QAAAA;AAGT,YAAIgwB,KAAah+C,OAAO0J,QAAQ,SAAU6F,IAAAA;AACxC,cAAIye,KAAM,CAAA;AACV,mBAASntB,MAAO0O;AACVvP,mBAAOkB,UAAUC,eAAe1B,KAAK8P,IAAK1O,EAAAA,KAAMmtB,GAAI/X,KAAKpV,EAAAA;AAE/D,iBAAOmtB;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnFT,YAAIk8F,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,GAAA,GACRA,GAAQ,GAAA,GACRA,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKm/D;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACHtB,QAAAn4F,GAAQ,GAAA;AACR,YA8DI+tO,IA9DAnpM,KAAI5kC,GAAQ,EAAA,GACZmwC,KAAcnwC,GAAQ,EAAA,GACtBu7H,KAAiBv7H,GAAQ,GAAA,GACzB24B,KAAS34B,GAAQ,EAAA,GACjBD,KAAOC,GAAQ,EAAA,GACf44B,KAAc54B,GAAQ,EAAA,GACtBsrE,KAAmBtrE,GAAQ,GAAA,EAAyCusB,GACpE0hE,KAAWjuF,GAAQ,GAAA,GACnBy7H,KAAaz7H,GAAQ,GAAA,GACrBk5B,KAASl5B,GAAQ,EAAA,GACjBs9B,KAASt9B,GAAQ,GAAA,GACjBguO,KAAYhuO,GAAQ,GAAA,GACpBuuJ,KAAavuJ,GAAQ,GAAA,GACrB4wJ,KAAS5wJ,GAAQ,GAAA,EAAiC4wJ,QAClDp/F,KAAUxxD,GAAQ,GAAA,GAClB07H,KAAY17H,GAAQ,EAAA,GACpBuuH,KAAiBvuH,GAAQ,GAAA,GACzBiuO,KAAwBjuO,GAAQ,GAAA,GAChCkuD,KAAsBluD,GAAQ,EAAA,GAE9BsuD,KAAmBJ,GAAoBl/C,KACvCk/N,KAAsBhgL,GAAoBlB,UAAU,KAAA,GACpDywE,KAAkBwwG,GAAsBxwG,iBACxC0wG,KAA+BF,GAAsB3gN,UAErD8gN,KAAYz1M,GAAOw/D,KACnB7uF,KAAYqvB,GAAOrvB,WACnBqxC,KAAWhiB,GAAOgiB,UAClBptC,KAAQhK,KAAKgK,OACbknE,KAAMlxE,KAAKkxE,KACXh4B,KAAS7jB,GAAY,GAAG6jB,MAAAA,GACxBtuB,KAAOyK,GAAY,IAAIzK,IAAAA,GACvB5I,KAAOqT,GAAY,CAAA,EAAGrT,IAAAA,GACtB6Q,IAAiBwC,GAAY,GAAI5xB,QAAAA,GACjCwP,KAAMoiB,GAAY,CAAA,EAAGpiB,GAAAA,GACrBtB,KAAO0jB,GAAY,CAAA,EAAG1jB,IAAAA,GACtBuZ,KAAUmK,GAAY,GAAGnK,OAAAA,GACzBva,KAAQ0kB,GAAY,CAAA,EAAG1kB,KAAAA,GACvB6f,KAAQ6E,GAAY,GAAG7E,KAAAA,GACvB40C,KAAc/vC,GAAY,GAAGl4B,KAAAA,GAC7B0wB,KAAcwH,GAAY,GAAGxH,WAAAA,GAC7BvY,KAAU+f,GAAY,CAAA,EAAG/f,OAAAA,GAGzBw1N,KAAiB,kBACjBC,KAAe,gBACfC,KAAe,gBAEfC,KAAQ,UAERC,KAAe,eACfC,IAAQ,MACRC,KAAY,QACZC,KAAM,YACNC,KAAM,SACNC,KAAM,eAENC,KAA4B,8BAC5BC,KAA8C,6BAC9CC,KAA2C,wCAC3CC,KAAmB,aAoJnBC,KAAgB,SAAUngL,IAAAA;AAC5B,cAAIj3B,IAAQ7zB,IAAOkrO,IAAUC;AAE7B,cAAmB,YAAA,OAARrgL,IAAkB;AAE3B,iBADAj3B,KAAS,CAAA,GACJ7zB,KAAQ,GAAGA,KAAQ,GAAGA;AACzB2U,cAAAA,GAAQkf,IAAQi3B,KAAO,GAAA,GACvBA,KAAOzhD,GAAMyhD,KAAO,GAAA;AACpB,mBAAOzpC,GAAKwS,IAAQ,GAAA;UAAA;AAEjB,cAAmB,YAAA,OAARi3B,IAAkB;AAGlC,iBAFAj3B,KAAS,IACTq3M,KAvC0B,SAAUE,IAAAA;AAMtC,uBALI3lO,KAAW,MACX4lB,KAAY,GACZggN,KAAY,MACZC,KAAa,GACbtrO,KAAQ,GACLA,KAAQ,GAAGA;AACI,sBAAhBorO,GAAKprO,EAAAA,KACHsrO,KAAajgN,OACf5lB,KAAW4lO,IACXhgN,KAAYigN,KAEdD,KAAY,MACZC,KAAa,MAEK,SAAdD,OAAoBA,KAAYrrO,KAAAA,EAClCsrO;AAON,qBAJIA,KAAajgN,OACf5lB,KAAW4lO,IACXhgN,KAAYigN,KAEP7lO;YAAAA,EAgB8BqlD,EAAAA,GAC9B9qD,KAAQ,GAAGA,KAAQ,GAAGA;AACrBmrO,cAAAA,MAA2B,MAAhBrgL,GAAK9qD,EAAAA,MAChBmrO,OAASA,KAAAA,QACTD,OAAalrO,MACf6zB,MAAU7zB,KAAQ,MAAM,MACxBmrO,KAAAA,SAEAt3M,MAAU3B,EAAe44B,GAAK9qD,EAAAA,GAAQ,EAAA,GAClCA,KAAQ,MAAG6zB,MAAU;AAG7B,mBAAO,MAAMA,KAAS;UAAA;AACtB,iBAAOi3B;QAAAA,GAGPygL,KAA4B,CAAA,GAC5BC,KAA2BpyM,GAAO,CAAA,GAAImyM,IAA2B,EACnE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAA,CAAA,GAEnCE,KAAuBryM,GAAO,CAAA,GAAIoyM,IAA0B,EAC9D,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAA,CAAA,GAE3BE,KAA2BtyM,GAAO,CAAA,GAAIqyM,IAAsB,EAC9D,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAA,CAAA,GAG5EE,KAAgB,SAAU5+E,IAAKjiJ,IAAAA;AACjC,cAAIutC,KAAOq0G,GAAOK,IAAK,CAAA;AACvB,iBAAO10G,KAAO,MAAQA,KAAO,OAAA,CAASrjB,GAAOlqB,IAAKiiJ,EAAAA,IAAOA,KAAMt8H,mBAAmBs8H,EAAAA;QAAAA,GAIhF6+E,KAAiB,EACnBC,KAAK,IACLC,MAAM,MACNtrK,MAAM,IACNurK,OAAO,KACPC,IAAI,IACJC,KAAK,IAAA,GAIHC,KAAuB,SAAUjiO,IAAQkyF,IAAAA;AAC3C,cAAIvkD;AACJ,iBAAwB,KAAjB3tC,GAAO1K,UAAe0qB,GAAKqgN,IAAO/xL,GAAOtuC,IAAQ,CAAA,CAAA,MAClB,QAA/B2tC,KAASW,GAAOtuC,IAAQ,CAAA,MAAA,CAAgBkyF,MAAwB,OAAVvkD;QAAAA,GAI3Du0L,KAA+B,SAAUliO,IAAAA;AAC3C,cAAImiO;AACJ,iBAAOniO,GAAO1K,SAAS,KAAK2sO,GAAqBznK,GAAYx6D,IAAQ,GAAG,CAAA,CAAA,MACrD,KAAjBA,GAAO1K,UAC0B,SAA/B6sO,KAAQ7zL,GAAOtuC,IAAQ,CAAA,MAAyB,SAAVmiO,MAA4B,QAAVA,MAA2B,QAAVA;QAAAA,GAK3EC,KAAc,SAAU1hI,IAAAA;AAC1B,iBAAmB,QAAZA,MAA4C,UAAzBz9E,GAAYy9E,EAAAA;QAAAA,GAUpC2hI,KAAe,CAAA,GACfC,KAAS,CAAA,GACTC,KAAY,CAAA,GACZC,KAAgC,CAAA,GAChCC,KAAoB,CAAA,GACpBC,KAAW,CAAA,GACXC,KAAiB,CAAA,GACjBC,KAA4B,CAAA,GAC5BC,KAAmC,CAAA,GACnCC,KAAY,CAAA,GACZC,KAAO,CAAA,GACPC,KAAW,CAAA,GACXC,KAAO,CAAA,GACPC,KAAO,CAAA,GACPC,KAAa,CAAA,GACbC,KAAY,CAAA,GACZC,KAAa,CAAA,GACbC,KAAO,CAAA,GACPC,KAA4B,CAAA,GAC5BC,KAAQ,CAAA,GACRziE,KAAW,CAAA,GAEX0iE,KAAW,SAAU78M,IAAK88M,IAAQn0K,IAAAA;AACpC,cACIs/I,IAAW80B,IAASjpE,IADpBkpE,KAAYr2G,GAAU3mG,EAAAA;AAE1B,cAAI88M,IAAQ;AAEV,gBADAC,KAAUxsO,KAAKgrB,MAAMyhN,EAAAA;AACR,oBAAMzoO,GAAUwoO,EAAAA;AAC7BxsO,iBAAKujK,eAAe;UAAA,OACf;AAGL,gBAAA,WAFInrG,OAAoBs/I,KAAY,IAAI40B,GAASl0K,IAAAA,IAAM,IACvDo0K,KAAUxsO,KAAKgrB,MAAMyhN,IAAW,MAAM/0B,EAAAA;AACzB,oBAAM1zM,GAAUwoO,EAAAA;AAAAA,aAC7BjpE,KAAeslE,GAA6B,IAAI1wG,IAAAA,GACnCR,QAAQ33H,IAAAA,GACrBA,KAAKujK,eAAeA;UAAAA;QAAAA;AAIxB+oE,WAASzxO,YAAY,EACnBqF,MAAM,OAGN8qB,OAAO,SAAU4F,IAAO87M,IAAet0K,IAAAA;AACrC,cAOIoU,IAAYm/E,IAAKghF,IAAkBH,IAzDfjjI,IAkDpB95E,KAAMzvB,MACN45C,KAAQ8yL,MAAiBxB,IACzB35F,KAAU,GACVviG,KAAS,IACT49L,KAAAA,OACAC,KAAAA,OACAC,KAAAA;AAsBJ,eAnBAl8M,KAAQwlG,GAAUxlG,EAAAA,GAEb87M,OACHj9M,GAAIgU,SAAS,IACbhU,GAAI0/B,WAAW,IACf1/B,GAAI2/B,WAAW,IACf3/B,GAAIi6B,OAAO,MACXj6B,GAAIk6B,OAAO,MACXl6B,GAAIiE,OAAO,CAAA,GACXjE,GAAIo6B,QAAQ,MACZp6B,GAAI45E,WAAW,MACf55E,GAAIs9M,mBAAAA,OACJn8M,KAAQzH,GAAQyH,IAAO+4M,IAA0C,EAAA,IAGnE/4M,KAAQzH,GAAQyH,IAAOg5M,IAAkB,EAAA,GAEzCp9J,KAAak8J,GAAU93M,EAAAA,GAEhB2gH,MAAW/kE,GAAWruE,UAAQ;AAEnC,oBADAwtJ,KAAMn/E,GAAW+kE,EAAAA,GACT33F,IAAAA;cACN,KAAKsxL;AACH,oBAAA,CAAIv/E,MAAAA,CAAO9iI,GAAKqgN,IAAOv9E,EAAAA,GAGhB;AAAA,sBAAK+gF;AAGL,2BAAO3D;AAFZnvL,kBAAAA,KAAQwxL;AACR;gBAAA;AAJAp8L,gBAAAA,MAAUljB,GAAY6/H,EAAAA,GACtB/xG,KAAQuxL;AAKV;cAEF,KAAKA;AACH,oBAAIx/E,OAAQ9iI,GAAKsgN,IAAcx9E,EAAAA,KAAe,OAAPA,MAAqB,OAAPA,MAAqB,OAAPA;AACjE38G,kBAAAA,MAAUljB,GAAY6/H,EAAAA;qBACjB;AAAA,sBAAW,OAAPA,IA0BJ;AAAA,wBAAK+gF;AAKL,6BAAO3D;AAJZ/5L,oBAAAA,KAAS,IACT4K,KAAQwxL,IACR75F,KAAU;AACV;kBAAA;AA7BA,sBAAIm7F,OACDj9M,GAAI6nC,UAAAA,KAAe1jC,GAAO42M,IAAgBx7L,EAAAA,KAChC,UAAVA,OAAqBvf,GAAIu9M,oBAAAA,KAAsC,SAAbv9M,GAAIk6B,SACxC,UAAdl6B,GAAIgU,UAAAA,CAAqBhU,GAAIi6B;AAC7B;AAEH,sBADAj6B,GAAIgU,SAASuL,IACT09L;AAEF,2BAAA,MADIj9M,GAAI6nC,UAAAA,KAAekzK,GAAe/6M,GAAIgU,MAAAA,KAAWhU,GAAIk6B,SAAMl6B,GAAIk6B,OAAO;AAG5E3a,kBAAAA,KAAS,IACS,UAAdvf,GAAIgU,SACNmW,KAAQmyL,KACCt8M,GAAI6nC,UAAAA,KAAec,MAAQA,GAAK30B,UAAUhU,GAAIgU,SACvDmW,KAAQyxL,KACC57M,GAAI6nC,UAAAA,IACb1d,KAAQ6xL,KAC4B,OAA3Bj/J,GAAW+kE,KAAU,CAAA,KAC9B33F,KAAQ0xL,IACR/5F,SAEA9hH,GAAIs9M,mBAAAA,MACJn9N,GAAK6f,GAAIiE,MAAM,EAAA,GACfkmB,KAAQwyL;gBAAAA;AAQZ;cAEF,KAAKhB;AACH,oBAAA,CAAKhzK,MAASA,GAAK20K,oBAA2B,OAAPphF;AAAa,yBAAOo9E;AAC3D,oBAAI3wK,GAAK20K,oBAA2B,OAAPphF,IAAY;AACvCl8H,kBAAAA,GAAIgU,SAAS20B,GAAK30B,QAClBhU,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIo6B,QAAQuO,GAAKvO,OACjBp6B,GAAI45E,WAAW,IACf55E,GAAIs9M,mBAAAA,MACJnzL,KAAQgwH;AACR;gBAAA;AAEFhwH,gBAAAA,KAAuB,UAAfwe,GAAK30B,SAAmBsoM,KAAOR;AACvC;cAEF,KAAKF;AACH,oBAAW,OAAP1/E,MAAyC,OAA3Bn/E,GAAW+kE,KAAU,CAAA,GAGhC;AACL33F,kBAAAA,KAAQ2xL;AACR;gBAAA;AAJA3xL,gBAAAA,KAAQ8xL,IACRn6F;AAIA;cAEJ,KAAK+5F;AACH,oBAAW,OAAP3/E,IAAY;AACd/xG,kBAAAA,KAAQ+xL;AACR;gBAAA;AAEA/xL,gBAAAA,KAAQuyL;AACR;cAGJ,KAAKZ;AAEH,oBADA97M,GAAIgU,SAAS20B,GAAK30B,QACdkoH,MAAO88E;AACTh5M,kBAAAA,GAAI0/B,WAAWiJ,GAAKjJ,UACpB1/B,GAAI2/B,WAAWgJ,GAAKhJ,UACpB3/B,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIk6B,OAAOyO,GAAKzO,MAChBl6B,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIo6B,QAAQuO,GAAKvO;yBACD,OAAP8hG,MAAsB,QAAPA,MAAel8H,GAAI6nC,UAAAA;AAC3C1d,kBAAAA,KAAQ4xL;yBACQ,OAAP7/E;AACTl8H,kBAAAA,GAAI0/B,WAAWiJ,GAAKjJ,UACpB1/B,GAAI2/B,WAAWgJ,GAAKhJ,UACpB3/B,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIk6B,OAAOyO,GAAKzO,MAChBl6B,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIo6B,QAAQ,IACZjQ,KAAQyyL;qBACH;AAAA,sBAAW,OAAP1gF,IASJ;AACLl8H,oBAAAA,GAAI0/B,WAAWiJ,GAAKjJ,UACpB1/B,GAAI2/B,WAAWgJ,GAAKhJ,UACpB3/B,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIk6B,OAAOyO,GAAKzO,MAChBl6B,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIiE,KAAKv1B,UACTy7C,KAAQuyL;AACR;kBAAA;AAhBA18M,kBAAAA,GAAI0/B,WAAWiJ,GAAKjJ,UACpB1/B,GAAI2/B,WAAWgJ,GAAKhJ,UACpB3/B,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIk6B,OAAOyO,GAAKzO,MAChBl6B,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIo6B,QAAQuO,GAAKvO,OACjBp6B,GAAI45E,WAAW,IACfzvD,KAAQgwH;gBAAAA;AAUR;cAEJ,KAAK4hE;AACH,oBAAA,CAAI/7M,GAAI6nC,UAAAA,KAAuB,OAAPq0F,MAAqB,QAAPA,IAE/B;AAAA,sBAAW,OAAPA,IAEJ;AACLl8H,oBAAAA,GAAI0/B,WAAWiJ,GAAKjJ,UACpB1/B,GAAI2/B,WAAWgJ,GAAKhJ,UACpB3/B,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIk6B,OAAOyO,GAAKzO,MAChB/P,KAAQuyL;AACR;kBAAA;AAPAvyL,kBAAAA,KAAQ+xL;gBAAAA;AAFR/xL,kBAAAA,KAAQ8xL;AAUR;cAEJ,KAAKD;AAEH,oBADA7xL,KAAQ8xL,IACG,OAAP//E,MAA6C,OAA/Bx0G,GAAOnI,IAAQuiG,KAAU,CAAA;AAAW;AACtDA,gBAAAA;AACA;cAEF,KAAKm6F;AACH,oBAAW,OAAP//E,MAAqB,QAAPA,IAAa;AAC7B/xG,kBAAAA,KAAQ+xL;AACR;gBAAA;AACA;cAEJ,KAAKA;AACH,oBAAW,OAAPhgF,IAAY;AACVihF,kBAAAA,OAAQ59L,KAAS,QAAQA,KAC7B49L,KAAAA,MACAD,KAAmBjE,GAAU15L,EAAAA;AAC7B,2BAAS/1C,KAAI,GAAGA,KAAI0zO,GAAiBxuO,QAAQlF,MAAK;AAChD,wBAAIqzE,KAAYqgK,GAAiB1zO,EAAAA;AACjC,wBAAiB,OAAbqzE,MAAqBwgK,IAAzB;AAIA,0BAAIG,KAAoB1C,GAAcj+J,IAAWg+J,EAAAA;AAC7CwC,sBAAAA,KAAmBr9M,GAAI2/B,YAAY69K,KAClCx9M,GAAI0/B,YAAY89K;oBAAAA;AALnBH,sBAAAA,KAAAA;kBAAoB;AAOxB99L,kBAAAA,KAAS;gBAAA,WAET28G,MAAO88E,MAAc,OAAP98E,MAAqB,OAAPA,MAAqB,OAAPA,MAClC,QAAPA,MAAel8H,GAAI6nC,UAAAA,GACpB;AACA,sBAAIs1K,MAAoB,MAAV59L;AAAc,2BAtehB;AAueZuiG,kBAAAA,MAAWm3F,GAAU15L,EAAAA,EAAQ7wC,SAAS,GACtC6wC,KAAS,IACT4K,KAAQgyL;gBAAAA;AACH58L,kBAAAA,MAAU28G;AACjB;cAEF,KAAKigF;cACL,KAAKC;AACH,oBAAIa,MAA+B,UAAdj9M,GAAIgU,QAAkB;AACzCmW,kBAAAA,KAAQqyL;AACR;gBAAA;AACK,oBAAW,OAAPtgF,MAAekhF,IAOnB;AAAA,sBACLlhF,MAAO88E,MAAc,OAAP98E,MAAqB,OAAPA,MAAqB,OAAPA,MAClC,QAAPA,MAAel8H,GAAI6nC,UAAAA,GACpB;AACA,wBAAI7nC,GAAI6nC,UAAAA,KAAyB,MAAVtoB;AAAc,6BAAOg6L;AAC5C,wBAAI0D,MAA2B,MAAV19L,OAAiBvf,GAAIu9M,oBAAAA,KAAsC,SAAbv9M,GAAIk6B;AAAgB;AAEvF,wBADA6iL,KAAU/8M,GAAIk8B,UAAU3c,EAAAA;AACX,6BAAOw9L;AAGpB,wBAFAx9L,KAAS,IACT4K,KAAQsyL,IACJQ;AAAe;AACnB;kBAAA;AAEW,yBAAP/gF,KAAYkhF,KAAAA,OACA,OAAPlhF,OAAYkhF,KAAAA,QACrB79L,MAAU28G;gBAAAA,OAtB2B;AACrC,sBAAc,MAAV38G;AAAc,2BAAOg6L;AAEzB,sBADAwD,KAAU/8M,GAAIk8B,UAAU3c,EAAAA;AACX,2BAAOw9L;AAGpB,sBAFAx9L,KAAS,IACT4K,KAAQkyL,IACJY,MAAiBb;AAAU;gBAAA;AAiB/B;cAEJ,KAAKC;AACH,oBAAA,CAAIjjN,GAAKugN,GAAOz9E,EAAAA,GAET;AAAA,sBACLA,MAAO88E,MAAc,OAAP98E,MAAqB,OAAPA,MAAqB,OAAPA,MAClC,QAAPA,MAAel8H,GAAI6nC,UAAAA,KACpBo1K,IACA;AACA,wBAAc,MAAV19L,IAAc;AAChB,0BAAI2a,KAAOtU,GAASrG,IAAQ,EAAA;AAC5B,0BAAI2a,KAAO;AAAQ,+BAAOs/K;AAC1Bx5M,sBAAAA,GAAIk6B,OAAQl6B,GAAI6nC,UAAAA,KAAe3N,OAAS6gL,GAAe/6M,GAAIgU,MAAAA,IAAW,OAAOkmB,IAC7E3a,KAAS;oBAAA;AAEX,wBAAI09L;AAAe;AACnB9yL,oBAAAA,KAAQsyL;AACR;kBAAA;AACK,yBAAOjD;gBAAAA;AAfZj6L,gBAAAA,MAAU28G;AAgBZ;cAEF,KAAKogF;AAEH,oBADAt8M,GAAIgU,SAAS,QACF,OAAPkoH,MAAqB,QAAPA;AAAa/xG,kBAAAA,KAAQoyL;qBAClC;AAAA,sBAAA,CAAI5zK,MAAuB,UAAfA,GAAK30B,QAyBf;AACLmW,oBAAAA,KAAQuyL;AACR;kBAAA;AA1BA,sBAAIxgF,MAAO88E;AACTh5M,oBAAAA,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIo6B,QAAQuO,GAAKvO;2BACD,OAAP8hG;AACTl8H,oBAAAA,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIo6B,QAAQ,IACZjQ,KAAQyyL;uBACH;AAAA,wBAAW,OAAP1gF,IAMJ;AACAo/E,yBAA6B9qN,GAAKgpI,GAAWz8E,IAAY+kE,EAAAA,GAAU,EAAA,CAAA,MACtE9hH,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIy9M,YAAAA,IAENtzL,KAAQuyL;AACR;oBAAA;AAZA18M,oBAAAA,GAAIi6B,OAAO0O,GAAK1O,MAChBj6B,GAAIiE,OAAOu1H,GAAW7wF,GAAK1kC,IAAAA,GAC3BjE,GAAIo6B,QAAQuO,GAAKvO,OACjBp6B,GAAI45E,WAAW,IACfzvD,KAAQgwH;kBAAAA;gBAAAA;AAaV;cAEJ,KAAKoiE;AACH,oBAAW,OAAPrgF,MAAqB,QAAPA,IAAa;AAC7B/xG,kBAAAA,KAAQqyL;AACR;gBAAA;AAEE7zK,gBAAAA,MAAuB,UAAfA,GAAK30B,UAAAA,CAAqBsnM,GAA6B9qN,GAAKgpI,GAAWz8E,IAAY+kE,EAAAA,GAAU,EAAA,CAAA,MACnGu5F,GAAqB1yK,GAAK1kC,KAAK,CAAA,GAAA,IAAI,IAAO9jB,GAAK6f,GAAIiE,MAAM0kC,GAAK1kC,KAAK,CAAA,CAAA,IAClEjE,GAAIi6B,OAAO0O,GAAK1O,OAEvB9P,KAAQuyL;AACR;cAEF,KAAKF;AACH,oBAAItgF,MAAO88E,MAAc,OAAP98E,MAAqB,QAAPA,MAAsB,OAAPA,MAAqB,OAAPA,IAAY;AACvE,sBAAA,CAAK+gF,MAAiB5B,GAAqB97L,EAAAA;AACzC4K,oBAAAA,KAAQuyL;2BACW,MAAVn9L,IAAc;AAEvB,wBADAvf,GAAIi6B,OAAO,IACPgjL;AAAe;AACnB9yL,oBAAAA,KAAQsyL;kBAAAA,OACH;AAEL,wBADAM,KAAU/8M,GAAIk8B,UAAU3c,EAAAA;AACX,6BAAOw9L;AAEpB,wBADgB,eAAZ/8M,GAAIi6B,SAAqBj6B,GAAIi6B,OAAO,KACpCgjL;AAAe;AACnB19L,oBAAAA,KAAS,IACT4K,KAAQsyL;kBAAAA;AACR;gBAAA;AACGl9L,gBAAAA,MAAU28G;AACjB;cAEF,KAAKugF;AACH,oBAAIz8M,GAAI6nC,UAAAA,GAAAA;AAEN,sBADA1d,KAAQuyL,IACG,OAAPxgF,MAAqB,QAAPA;AAAa;gBAAA,WACrB+gF,MAAwB,OAAP/gF;AAGtB,sBAAK+gF,MAAwB,OAAP/gF,IAAAA;AAGtB,wBAAIA,MAAO88E,OAChB7uL,KAAQuyL,IACG,OAAPxgF;AAAY;kBAAA;AAJhBl8H,oBAAAA,GAAI45E,WAAW,IACfzvD,KAAQgwH;;AAJRn6I,kBAAAA,GAAIo6B,QAAQ,IACZjQ,KAAQyyL;AAOR;cAEJ,KAAKF;AACH,oBACExgF,MAAO88E,MAAc,OAAP98E,MACN,QAAPA,MAAel8H,GAAI6nC,UAAAA,KAAAA,CAClBo1K,OAAyB,OAAP/gF,MAAqB,OAAPA,KAClC;AAkBA,sBAlZS,UADnBpiD,KAAUz9E,GADgBy9E,KAmYAv6D,EAAAA,MAjYa,WAAZu6D,MAAkC,WAAZA,MAAkC,aAAZA,MAkY3D95E,GAAIy9M,YAAAA,GACO,OAAPvhF,MAAuB,QAAPA,MAAel8H,GAAI6nC,UAAAA,KACrC1nD,GAAK6f,GAAIiE,MAAM,EAAA,KAERu3M,GAAYj8L,EAAAA,IACV,OAAP28G,MAAuB,QAAPA,MAAel8H,GAAI6nC,UAAAA,KACrC1nD,GAAK6f,GAAIiE,MAAM,EAAA,KAGC,UAAdjE,GAAIgU,UAAAA,CAAqBhU,GAAIiE,KAAKv1B,UAAU2sO,GAAqB97L,EAAAA,MAC/Dvf,GAAIi6B,SAAMj6B,GAAIi6B,OAAO,KACzB1a,KAASmI,GAAOnI,IAAQ,CAAA,IAAK,MAE/Bp/B,GAAK6f,GAAIiE,MAAMsb,EAAAA,IAEjBA,KAAS,IACS,UAAdvf,GAAIgU,WAAqBkoH,MAAO88E,MAAc,OAAP98E,MAAqB,OAAPA;AACvD,2BAAOl8H,GAAIiE,KAAKv1B,SAAS,KAAqB,OAAhBsxB,GAAIiE,KAAK,CAAA;AACrC9kB,sBAAAA,GAAM6gB,GAAIiE,IAAAA;AAGH,yBAAPi4H,MACFl8H,GAAIo6B,QAAQ,IACZjQ,KAAQyyL,MACQ,OAAP1gF,OACTl8H,GAAI45E,WAAW,IACfzvD,KAAQgwH;gBAAAA;AAGV56H,kBAAAA,MAAUu7L,GAAc5+E,IAAK0+E,EAAAA;AAC7B;cAEJ,KAAK+B;AACQ,uBAAPzgF,MACFl8H,GAAIo6B,QAAQ,IACZjQ,KAAQyyL,MACQ,OAAP1gF,MACTl8H,GAAI45E,WAAW,IACfzvD,KAAQgwH,MACCje,MAAO88E,OAChBh5M,GAAIiE,KAAK,CAAA,KAAM62M,GAAc5+E,IAAKw+E,EAAAA;AAClC;cAEJ,KAAKkC;AACEK,gBAAAA,MAAwB,OAAP/gF,KAGXA,MAAO88E,OACL,OAAP98E,MAAcl8H,GAAI6nC,UAAAA,IAAa7nC,GAAIo6B,SAAS,QAC3Bp6B,GAAIo6B,SAAT,OAAP8hG,KAAyB,QAChB4+E,GAAc5+E,IAAKw+E,EAAAA,MALrC16M,GAAI45E,WAAW,IACfzvD,KAAQgwH;AAKR;cAEJ,KAAKA;AACCje,gBAAAA,MAAO88E,OAAKh5M,GAAI45E,YAAYkhI,GAAc5+E,IAAKy+E,EAAAA;YAAAA;AAIvD74F,YAAAA;UAAAA;QAAAA,GAIJ5lF,WAAW,SAAU/6B,IAAAA;AACnB,cAAI6B,IAAQ+5C,IAAY5tE;AACxB,cAAwB,OAApBu4C,GAAOvmB,IAAO,CAAA,GAAW;AAC3B,gBAAuC,OAAnCumB,GAAOvmB,IAAOA,GAAMzyB,SAAS,CAAA;AAAW,qBAAO6qO;AAEnD,gBAAA,EADAv2M,KAznBU,SAAU7B,IAAAA;AACxB,kBAII12B,IAAOiE,IAAQgvO,IAAaC,IAAWx8L,IAAQy8L,IAAO5iK,IAJtDpT,KAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA,GAChCi2K,KAAa,GACbxD,KAAW,MACXv4F,KAAU,GAGVoa,KAAM,WAAA;AACR,uBAAOx0G,GAAOvmB,IAAO2gH,EAAAA;cAAAA;AAGvB,kBAAa,OAAToa,GAAAA,GAAc;AAChB,oBAAwB,OAApBx0G,GAAOvmB,IAAO,CAAA;AAAW;AAC7B2gH,gBAAAA,MAAW,GAEXu4F,KAAAA,EADAwD;cAAAA;AAGF,qBAAO3hF,GAAAA,KAAO;AACZ,oBAAkB,KAAd2hF;AAAiB;AACrB,oBAAa,OAAT3hF,GAAAA,GAAJ;AAQA,uBADAzxJ,KAAQiE,KAAS,GACVA,KAAS,KAAK0qB,GAAK2gN,IAAK79E,GAAAA,CAAAA;AAC7BzxJ,oBAAAA,KAAgB,KAARA,KAAam7C,GAASs2G,GAAAA,GAAO,EAAA,GACrCpa,MACApzI;AAEF,sBAAa,OAATwtJ,GAAAA,GAAc;AAChB,wBAAc,KAAVxtJ;AAAa;AAEjB,wBADAozI,MAAWpzI,IACPmvO,KAAa;AAAG;AAEpB,yBADAH,KAAc,GACPxhF,GAAAA,KAAO;AAEZ,0BADAyhF,KAAY,MACRD,KAAc,GAAG;AACnB,4BAAA,EAAa,OAATxhF,GAAAA,KAAgBwhF,KAAc;AAC7B;AADgC57F,wBAAAA;sBAAAA;AAGvC,0BAAA,CAAK1oH,GAAKugN,GAAOz9E,GAAAA,CAAAA;AAAQ;AACzB,6BAAO9iI,GAAKugN,GAAOz9E,GAAAA,CAAAA,KAAQ;AAEzB,4BADA/6G,KAASyE,GAASs2G,GAAAA,GAAO,EAAA,GACP,SAAdyhF;AAAoBA,0BAAAA,KAAYx8L;6BAC/B;AAAA,8BAAiB,KAAbw8L;AAAgB;AACpBA,0BAAAA,KAAwB,KAAZA,KAAiBx8L;wBAAAA;AAClC,4BAAIw8L,KAAY;AAAK;AACrB77F,wBAAAA;sBAAAA;AAEFl6E,sBAAAA,GAAQi2K,EAAAA,IAAoC,MAAtBj2K,GAAQi2K,EAAAA,IAAoBF,IAE/B,KAAA,EADnBD,MACuC,KAAfA,MAAkBG;oBAAAA;AAE5C,wBAAmB,KAAfH;AAAkB;AACtB;kBAAA;AACK,sBAAa,OAATxhF,GAAAA,GAAAA;AAET,wBADApa,MAAAA,CACKoa,GAAAA;AAAO;kBAAA,WACHA,GAAAA;AAAO;AAClBt0F,kBAAAA,GAAQi2K,IAAAA,IAAgBpzO;gBAAAA,OA3CxB;AACE,sBAAiB,SAAb4vO;AAAmB;AACvBv4F,kBAAAA,MAEAu4F,KAAAA,EADAwD;gBAAAA;cAAAA;AA0CJ,kBAAiB,SAAbxD;AAGF,qBAFAuD,KAAQC,KAAaxD,IACrBwD,KAAa,GACQ,KAAdA,MAAmBD,KAAQ;AAChC5iK,kBAAAA,KAAOpT,GAAQi2K,EAAAA,GACfj2K,GAAQi2K,IAAAA,IAAgBj2K,GAAQyyK,KAAWuD,KAAQ,CAAA,GACnDh2K,GAAQyyK,KAAAA,EAAauD,EAAAA,IAAS5iK;uBAET,KAAd6iK;AAAiB;AAC5B,qBAAOj2K;YAAAA,EAgjBgBgM,GAAYzyC,IAAO,GAAA,EAAI,CAAA;AAC7B,qBAAOo4M;AACpBhpO,iBAAK0pD,OAAOj3B;UAAAA,WAEFzyB,KAAKs3D,UAAAA,GAQV;AAEL,gBADA1mC,KAAQs7B,GAAQt7B,EAAAA,GACZ/H,GAAK4gN,IAA2B74M,EAAAA;AAAQ,qBAAOo4M;AAEnD,gBAAe,UADfv2M,KAhrBU,SAAU7B,IAAAA;AACxB,kBACI28M,IAAaC,IAAS5uO,IAAOktD,IAAM2hL,IAAO78L,IAAQ88L,IADlDp4G,KAAQ7mG,GAAMmC,IAAO,GAAA;AAMzB,kBAJI0kG,GAAMn3H,UAAqC,MAA3Bm3H,GAAMA,GAAMn3H,SAAS,CAAA,KACvCm3H,GAAMn3H,WAERovO,KAAcj4G,GAAMn3H,UACF;AAAG,uBAAOyyB;AAE5B,mBADA48M,KAAU,CAAA,GACL5uO,KAAQ,GAAGA,KAAQ2uO,IAAa3uO,MAAS;AAE5C,oBAAY,OADZktD,KAAOwpE,GAAM12H,EAAAA;AACG,yBAAOgyB;AAMvB,oBALA68M,KAAQ,IACJ3hL,GAAK3tD,SAAS,KAAwB,OAAnBg5C,GAAO2U,IAAM,CAAA,MAClC2hL,KAAQ5kN,GAAKwgN,IAAWv9K,EAAAA,IAAQ,KAAK,GACrCA,KAAOuX,GAAYvX,IAAe,KAAT2hL,KAAa,IAAI,CAAA,IAE/B,OAAT3hL;AACFlb,kBAAAA,KAAS;qBACJ;AACL,sBAAA,CAAK/nB,GAAc,MAAT4kN,KAAclE,KAAe,KAATkE,KAAanE,KAAME,IAAK19K,EAAAA;AAAO,2BAAOl7B;AACpEggB,kBAAAA,KAASyE,GAASyW,IAAM2hL,EAAAA;gBAAAA;AAE1B79N,gBAAAA,GAAK49N,IAAS58L,EAAAA;cAAAA;AAEhB,mBAAKhyC,KAAQ,GAAGA,KAAQ2uO,IAAa3uO;AAEnC,oBADAgyC,KAAS48L,GAAQ5uO,EAAAA,GACbA,MAAS2uO,KAAc,GAAA;AACzB,sBAAI38L,MAAUu+B,GAAI,KAAK,IAAIo+J,EAAAA;AAAc,2BAAO;gBAAA,WACvC38L,KAAS;AAAK,yBAAO;AAGlC,mBADA88L,KAAOx8N,GAAIs8N,EAAAA,GACN5uO,KAAQ,GAAGA,KAAQ4uO,GAAQrvO,QAAQS;AACtC8uO,gBAAAA,MAAQF,GAAQ5uO,EAAAA,IAASuwE,GAAI,KAAK,IAAIvwE,EAAAA;AAExC,qBAAO8uO;YAAAA,EA6oBgB98M,EAAAA;AACE,qBAAOo4M;AAC5BhpO,iBAAK0pD,OAAOj3B;UAAAA,OAbgB;AAC5B,gBAAI5J,GAAK6gN,IAA6C94M,EAAAA;AAAQ,qBAAOo4M;AAGrE,iBAFAv2M,KAAS,IACT+5C,KAAak8J,GAAU93M,EAAAA,GAClBhyB,KAAQ,GAAGA,KAAQ4tE,GAAWruE,QAAQS;AACzC6zB,cAAAA,MAAU83M,GAAc/9J,GAAW5tE,EAAAA,GAAQurO,EAAAA;AAE7CnqO,iBAAK0pD,OAAOj3B;UAAAA;QAAAA,GAUhBk7M,gCAAgC,WAAA;AAC9B,iBAAA,CAAQ3tO,KAAK0pD,QAAQ1pD,KAAK+sO,oBAAmC,UAAf/sO,KAAKyjC;QAAAA,GAGrDupM,qBAAqB,WAAA;AACnB,iBAAwB,MAAjBhtO,KAAKmvD,YAAmC,MAAjBnvD,KAAKovD;QAAAA,GAGrCkI,WAAW,WAAA;AACT,iBAAO1jC,GAAO42M,IAAgBxqO,KAAKyjC,MAAAA;QAAAA,GAGrCypM,aAAa,WAAA;AACX,cAAIx5M,KAAO1zB,KAAK0zB,MACZk6M,KAAWl6M,GAAKv1B;AAAAA,WAChByvO,MAA4B,UAAf5tO,KAAKyjC,UAAgC,KAAZmqM,MAAkB9C,GAAqBp3M,GAAK,CAAA,GAAA,IAAI,KACxFA,GAAKv1B;QAAAA,GAITm5H,WAAW,WAAA;AACT,cAAI7nG,KAAMzvB,MACNyjC,KAAShU,GAAIgU,QACb0rB,KAAW1/B,GAAI0/B,UACfC,KAAW3/B,GAAI2/B,UACf1F,KAAOj6B,GAAIi6B,MACXC,KAAOl6B,GAAIk6B,MACXj2B,KAAOjE,GAAIiE,MACXm2B,KAAQp6B,GAAIo6B,OACZw/C,KAAW55E,GAAI45E,UACf47D,KAASxhI,KAAS;AAYtB,iBAXa,SAATimB,MACFu7G,MAAU,MACNx1I,GAAIu9M,oBAAAA,MACN/nE,MAAU91G,MAAYC,KAAW,MAAMA,KAAW,MAAM,MAE1D61G,MAAU4kE,GAAcngL,EAAAA,GACX,SAATC,OAAes7G,MAAU,MAAMt7G,OAChB,UAAVlmB,OAAkBwhI,MAAU,OACvCA,MAAUx1I,GAAIs9M,mBAAmBr5M,GAAK,CAAA,IAAKA,GAAKv1B,SAAS,MAAM8hB,GAAKyT,IAAM,GAAA,IAAO,IACnE,SAAVm2B,OAAgBo7G,MAAU,MAAMp7G,KACnB,SAAbw/C,OAAmB47D,MAAU,MAAM57D,KAChC47D;QAAAA,GAGT4oE,SAAS,SAAU9jL,IAAAA;AACjB,cAAIyiL,KAAUxsO,KAAKgrB,MAAM++B,EAAAA;AACzB,cAAIyiL;AAAS,kBAAMxoO,GAAUwoO,EAAAA;AAC7BxsO,eAAKujK,aAAar4J,OAAAA;QAAAA,GAGpB4iO,WAAW,WAAA;AACT,cAAIrqM,KAASzjC,KAAKyjC,QACdkmB,KAAO3pD,KAAK2pD;AAChB,cAAc,UAAVlmB;AAAkB,gBAAA;AACpB,qBAAO,IAAIsqM,GAAetqM,GAAO/P,KAAK,CAAA,CAAA,EAAIxe;YAAAA,SACnCzO,IAAP;AACA,qBAAO;YAAA;AAET,iBAAc,UAAVg9B,MAAqBzjC,KAAKs3D,UAAAA,IACvB7zB,KAAS,QAAQomM,GAAc7pO,KAAK0pD,IAAAA,KAAkB,SAATC,KAAgB,MAAMA,KAAO,MAD/B;QAAA,GAIpDqkL,aAAa,WAAA;AACX,iBAAOhuO,KAAKyjC,SAAS;QAAA,GAEvBwqM,aAAa,SAAU1kL,IAAAA;AACrBvpD,eAAKgrB,MAAMorG,GAAU7sE,EAAAA,IAAY,KAAK2hL,EAAAA;QAAAA,GAGxCgD,aAAa,WAAA;AACX,iBAAOluO,KAAKmvD;QAAAA,GAEdg/K,aAAa,SAAUh/K,IAAAA;AACrB,cAAIqd,KAAak8J,GAAUtyG,GAAUjnE,EAAAA,CAAAA;AACrC,cAAA,CAAInvD,KAAK2tO,+BAAAA,GAAT;AACA3tO,iBAAKmvD,WAAW;AAChB,qBAASl2D,KAAI,GAAGA,KAAIuzE,GAAWruE,QAAQlF;AACrC+G,mBAAKmvD,YAAYo7K,GAAc/9J,GAAWvzE,EAAAA,GAAIqxO,EAAAA;UAAAA;QAAAA,GAIlD8D,aAAa,WAAA;AACX,iBAAOpuO,KAAKovD;QAAAA,GAEdi/K,aAAa,SAAUj/K,IAAAA;AACrB,cAAIod,KAAak8J,GAAUtyG,GAAUhnE,EAAAA,CAAAA;AACrC,cAAA,CAAIpvD,KAAK2tO,+BAAAA,GAAT;AACA3tO,iBAAKovD,WAAW;AAChB,qBAASn2D,KAAI,GAAGA,KAAIuzE,GAAWruE,QAAQlF;AACrC+G,mBAAKovD,YAAYm7K,GAAc/9J,GAAWvzE,EAAAA,GAAIqxO,EAAAA;UAAAA;QAAAA,GAIlDgE,SAAS,WAAA;AACP,cAAI5kL,KAAO1pD,KAAK0pD,MACZC,KAAO3pD,KAAK2pD;AAChB,iBAAgB,SAATD,KAAgB,KACV,SAATC,KAAgBkgL,GAAcngL,EAAAA,IAC9BmgL,GAAcngL,EAAAA,IAAQ,MAAMC;QAAAA,GAElC4kL,SAAS,SAAU7kL,IAAAA;AACb1pD,eAAK+sO,oBACT/sO,KAAKgrB,MAAM0+B,IAAMkiL,EAAAA;QAAAA,GAGnB4C,aAAa,WAAA;AACX,cAAI9kL,KAAO1pD,KAAK0pD;AAChB,iBAAgB,SAATA,KAAgB,KAAKmgL,GAAcngL,EAAAA;QAAAA,GAE5C+kL,aAAa,SAAU7kL,IAAAA;AACjB5pD,eAAK+sO,oBACT/sO,KAAKgrB,MAAM4+B,IAAUiiL,EAAAA;QAAAA,GAGvB6C,SAAS,WAAA;AACP,cAAI/kL,KAAO3pD,KAAK2pD;AAChB,iBAAgB,SAATA,KAAgB,KAAKysE,GAAUzsE,EAAAA;QAAAA,GAExCglL,SAAS,SAAUhlL,IAAAA;AACb3pD,eAAK2tO,+BAAAA,MAEG,OADZhkL,KAAOysE,GAAUzsE,EAAAA,KACD3pD,KAAK2pD,OAAO,OACvB3pD,KAAKgrB,MAAM2+B,IAAMmiL,EAAAA;QAAAA,GAGxB8C,aAAa,WAAA;AACX,cAAIl7M,KAAO1zB,KAAK0zB;AAChB,iBAAO1zB,KAAK+sO,mBAAmBr5M,GAAK,CAAA,IAAKA,GAAKv1B,SAAS,MAAM8hB,GAAKyT,IAAM,GAAA,IAAO;QAAA,GAEjFm7M,aAAa,SAAU/kL,IAAAA;AACjB9pD,eAAK+sO,qBACT/sO,KAAK0zB,OAAO,CAAA,GACZ1zB,KAAKgrB,MAAM8+B,IAAUoiL,EAAAA;QAAAA,GAGvB4C,WAAW,WAAA;AACT,cAAIjlL,KAAQ7pD,KAAK6pD;AACjB,iBAAOA,KAAQ,MAAMA,KAAQ;QAAA,GAE/BklL,WAAW,SAAU1gN,IAAAA;AAEL,iBADdA,KAAS+nG,GAAU/nG,EAAAA,KAEjBruB,KAAK6pD,QAAQ,QAET,OAAO1S,GAAO9oB,IAAQ,CAAA,MAAIA,KAASg1C,GAAYh1C,IAAQ,CAAA,IAC3DruB,KAAK6pD,QAAQ,IACb7pD,KAAKgrB,MAAMqD,IAAQg+M,EAAAA,IAErBrsO,KAAKujK,aAAar4J,OAAAA;QAAAA,GAGpB8jO,iBAAiB,WAAA;AACf,iBAAOhvO,KAAKujK,aAAah8G;QAAAA,GAG3B0nL,SAAS,WAAA;AACP,cAAI5lI,KAAWrpG,KAAKqpG;AACpB,iBAAOA,KAAW,MAAMA,KAAW;QAAA,GAErCna,SAAS,SAAU5mF,IAAAA;AAEL,iBADZA,KAAO8tH,GAAU9tH,EAAAA,MAKb,OAAO6uC,GAAO7uC,IAAM,CAAA,MAAIA,KAAO+6D,GAAY/6D,IAAM,CAAA,IACrDtI,KAAKqpG,WAAW,IAChBrpG,KAAKgrB,MAAM1iB,IAAMshK,EAAAA,KALf5pK,KAAKqpG,WAAW;QAAA,GAOpBn+F,QAAQ,WAAA;AACNlL,eAAK6pD,QAAQ7pD,KAAKujK,aAAajsC,UAAAA,KAAe;QAAA,EAAA;AAMlD,YAAIy2G,KAAiB,SAAat+M,IAAAA;AAChC,cAAI4O,KAAO83F,GAAWn2H,MAAMkvO,EAAAA,GACxB92K,KAAOn2D,UAAU9D,SAAS,IAAI8D,UAAU,CAAA,IAAA,QACxC23C,KAAQoP,GAAiB3qB,IAAM,IAAIiuM,GAAS78M,IAAAA,OAAY2oC,EAAAA,CAAAA;AACvDvtB,UAAAA,OACHxM,GAAK0rB,OAAOnQ,GAAM09E,UAAAA,GAClBj5F,GAAKnpB,SAAS0kC,GAAMk0L,UAAAA,GACpBzvM,GAAKkrB,WAAW3P,GAAMo0L,YAAAA,GACtB3vM,GAAK8wB,WAAWvV,GAAMs0L,YAAAA,GACtB7vM,GAAK+wB,WAAWxV,GAAMw0L,YAAAA,GACtB/vM,GAAKqrB,OAAO9P,GAAM00L,QAAAA,GAClBjwM,GAAKurB,WAAWhQ,GAAM40L,YAAAA,GACtBnwM,GAAKsrB,OAAO/P,GAAM80L,QAAAA,GAClBrwM,GAAKyrB,WAAWlQ,GAAMg1L,YAAAA,GACtBvwM,GAAKhQ,SAASurB,GAAMk1L,UAAAA,GACpBzwM,GAAKklI,eAAe3pH,GAAMo1L,gBAAAA,GAC1B3wM,GAAK/1B,OAAOsxC,GAAMq1L,QAAAA;QAAAA,GAIlBC,KAAenB,GAAelzO,WAE9Bs0O,KAAqB,SAAU11O,IAAQu2F,IAAAA;AACzC,iBAAO,EACLl2F,KAAK,WAAA;AACH,mBAAO8uO,GAAoB5oO,IAAAA,EAAMvG,EAAAA,EAAAA;UAAAA,GAEnCiQ,KAAKsmF,MAAU,SAAU91F,IAAAA;AACvB,mBAAO0uO,GAAoB5oO,IAAAA,EAAMgwF,EAAAA,EAAQ91F,EAAAA;UAAAA,GAE3CirB,cAAAA,MACAtrB,YAAAA,KAAY;QAAA;AAyDhB,YArDIgxC,MACFm7B,GAAiBkpK,IAAc,EAG7BnlL,MAAMolL,GAAmB,aAAa,SAAA,GAGtCj6N,QAAQi6N,GAAmB,WAAA,GAG3B5lL,UAAU4lL,GAAmB,eAAe,aAAA,GAG5ChgL,UAAUggL,GAAmB,eAAe,aAAA,GAG5C//K,UAAU+/K,GAAmB,eAAe,aAAA,GAG5CzlL,MAAMylL,GAAmB,WAAW,SAAA,GAGpCvlL,UAAUulL,GAAmB,eAAe,aAAA,GAG5CxlL,MAAMwlL,GAAmB,WAAW,SAAA,GAGpCrlL,UAAUqlL,GAAmB,eAAe,aAAA,GAG5C9gN,QAAQ8gN,GAAmB,aAAa,WAAA,GAGxC5rE,cAAc4rE,GAAmB,iBAAA,GAGjC7mO,MAAM6mO,GAAmB,WAAW,SAAA,EAAA,CAAA,GAMxCxmJ,GAASumJ,IAAc,UAAU,WAAA;AAC/B,iBAAOtG,GAAoB5oO,IAAAA,EAAMs3H,UAAAA;QAAAA,GAChC,EAAEz9H,YAAAA,KAAY,CAAA,GAIjB8uF,GAASumJ,IAAc,YAAY,WAAA;AACjC,iBAAOtG,GAAoB5oO,IAAAA,EAAMs3H,UAAAA;QAAAA,GAChC,EAAEz9H,YAAAA,KAAY,CAAA,GAEbivO,IAAW;AACb,cAAIsG,KAAwBtG,GAAUxzD,iBAClC+5D,KAAwBvG,GAAUpzD;AAGlC05D,gBAAuBzmJ,GAASolJ,IAAgB,mBAAmBtzO,GAAK20O,IAAuBtG,EAAAA,CAAAA,GAG/FuG,MAAuB1mJ,GAASolJ,IAAgB,mBAAmBtzO,GAAK40O,IAAuBvG,EAAAA,CAAAA;QAAAA;AAGrG7/G,QAAAA,GAAe8kH,IAAgB,KAAA,GAE/BzuM,GAAE,EAAEjM,QAAAA,MAAc2B,QAAAA,CAASihG,IAAgB9gG,MAAAA,CAAO0V,GAAAA,GAAe,EAC/DgoD,KAAKk7I,GAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;AC/gCP,YAAI16M,KAAS34B,GAAQ,EAAA,GACjB44B,KAAc54B,GAAQ,EAAA,GAEtBisO,KAAS,YASTE,KAAgB,gBAChBC,KAAkB,0BAClBwI,KAAiB,mDAGjBpqK,KAAa7xC,GAAO6xC,YACpBr8C,KAAOyK,GAAYwzM,GAAgBj+M,IAAAA,GACnC5gB,KAAQhK,KAAKgK,OACb8wC,KAAe/0B,OAAO+0B,cACtB9vC,KAAaqqB,GAAY,GAAGrqB,UAAAA,GAC5BgX,KAAOqT,GAAY,CAAA,EAAGrT,IAAAA,GACtBrQ,KAAO0jB,GAAY,CAAA,EAAG1jB,IAAAA,GACtBuZ,KAAUmK,GAAY,GAAGnK,OAAAA,GACzBsF,KAAQ6E,GAAY,GAAG7E,KAAAA,GACvB3C,KAAcwH,GAAY,GAAGxH,WAAAA,GAoC7Bq7M,KAAe,SAAUC,IAAAA;AAG3B,iBAAOA,KAAQ,KAAK,MAAMA,KAAQ;QAAA,GAOhCE,KAAQ,SAAU3wL,IAAO4wL,IAAWC,IAAAA;AACtC,cAAIrnO,KAAI;AAGR,eAFAw2C,KAAQ6wL,KAAYv/N,GAAM0uC,KAlEjB,GAAA,IAkEiCA,MAAS,GACnDA,MAAS1uC,GAAM0uC,KAAQ4wL,EAAAA,GAChB5wL,KAAQ8wL;AACb9wL,YAAAA,KAAQ1uC,GAAM0uC,KA9DEyhB,EAAAA,GA+DhBj4D,MA1EO;AA4ET,iBAAO8H,GAAM9H,KAAI,KAAsBw2C,MAASA,KAzEvC,GAAA;QAAA,GAgFPqzF,KAAS,SAAUp5G,IAAAA;AACrB,cAYI33B,IAAGw0F,IAZHw3E,KAAS,CAAA,GAMT4iE,MAHJj3M,KAxDe,SAAU/nB,IAAAA;AAIzB,qBAHIo8J,KAAS,CAAA,GACTnH,KAAU,GACV3/J,KAAS0K,GAAO1K,QACb2/J,KAAU3/J,MAAQ;AACvB,kBAAIjE,KAAQ+O,GAAWJ,IAAQi1J,IAAAA;AAC/B,kBAAI5jK,MAAS,SAAUA,MAAS,SAAU4jK,KAAU3/J,IAAQ;AAE1D,oBAAIw4I,KAAQ1tI,GAAWJ,IAAQi1J,IAAAA;AACP,0BAAX,QAARnnB,MACH/mI,GAAKq1J,MAAkB,OAAR/qK,OAAkB,OAAe,OAARy8I,MAAiB,KAAA,KAIzD/mI,GAAKq1J,IAAQ/qK,EAAAA,GACb4jK;cAAAA;AAGFluJ,gBAAAA,GAAKq1J,IAAQ/qK,EAAAA;YAAAA;AAGjB,mBAAO+qK;UAAAA,EAmCYr0I,EAAAA,GAGKzyB,QAGpBzD,KAvFS,KAwFTi8C,KAAQ,GACRmxL,KA1FY;AA8FhB,eAAK7uO,KAAI,GAAGA,KAAI23B,GAAMzyB,QAAQlF;AAAAA,aAC5Bw0F,KAAe78D,GAAM33B,EAAAA,KACF,OACjB2W,GAAKq1J,IAAQlsH,GAAa00C,EAAAA,CAAAA;AAI9B,cAAIu6I,KAAc/iE,GAAO9mK,QACrB4pO,KAAiBC;AAQrB,eALIA,MACFp4N,GAAKq1J,IAxGO,GAAA,GA4GP8iE,KAAiBF,MAAa;AAEnC,gBAAIxuO,KAAIstO;AACR,iBAAK1tO,KAAI,GAAGA,KAAI23B,GAAMzyB,QAAQlF;AAAAA,eAC5Bw0F,KAAe78D,GAAM33B,EAAAA,MACDyB,MAAK+yF,KAAep0F,OACtCA,KAAIo0F;AAKR,gBAAIw6I,KAAwBF,KAAiB;AAC7C,gBAAI1uO,KAAIqB,KAAIuN,IAAO0+N,KAAShwL,MAASsxL,EAAAA;AACnC,oBAAM/iK,GAAWoqK,EAAAA;AAMnB,iBAHA34L,OAAUt9C,KAAIqB,MAAKutO,IACnBvtO,KAAIrB,IAECJ,KAAI,GAAGA,KAAI23B,GAAMzyB,QAAQlF,MAAK;AAEjC,mBADAw0F,KAAe78D,GAAM33B,EAAAA,KACFyB,MAAAA,EAAOi8C,KAAQgwL;AAChC,sBAAMzhK,GAAWoqK,EAAAA;AAEnB,kBAAI7hJ,MAAgB/yF,IAAG;AAIrB,yBAFI21B,KAAIsmB,IACJx2C,KA9ID,QA+IU;AACX,sBAAIhG,KAAIgG,MAAK2nO,KA/IZ,IA+I2B3nO,MAAK2nO,KA9IhC,KAAA,KA8IqD3nO,KAAI2nO;AAC1D,sBAAIz3M,KAAIl2B;AAAG;AACX,sBAAI+tO,KAAU73M,KAAIl2B,IACdytO,KAnJH,KAmJuBztO;AACxByV,kBAAAA,GAAKq1J,IAAQlsH,GAAaouL,GAAahtO,KAAI+tO,KAAUN,EAAAA,CAAAA,CAAAA,GACrDv3M,KAAIpoB,GAAMigO,KAAUN,EAAAA,GACpBznO,MAtJC;gBAAA;AAyJHyP,gBAAAA,GAAKq1J,IAAQlsH,GAAaouL,GAAa92M,EAAAA,CAAAA,CAAAA,GACvCy3M,KAAOR,GAAM3wL,IAAOsxL,IAAuBF,MAAkBC,EAAAA,GAC7DrxL,KAAQ,GACRoxL;cAAAA;YAAAA;AAIJpxL,YAAAA,MACAj8C;UAAAA;AAEF,iBAAOulB,GAAKglJ,IAAQ,EAAA;QAAA;AAGtBjsK,QAAAA,GAAOD,UAAU,SAAU63B,IAAAA;AACzB,cAEI33B,IAAG2hG,IAFHolD,KAAU,CAAA,GACVuvF,KAAS9gN,GAAMtF,GAAQ2C,GAAY8E,EAAAA,GAAQk2M,IAAiB,GAAA,GAAW,GAAA;AAE3E,eAAK7tO,KAAI,GAAGA,KAAIs2O,GAAOpxO,QAAQlF;AAC7B2hG,YAAAA,KAAQ20I,GAAOt2O,EAAAA,GACf2W,GAAKowI,IAASn3H,GAAKg+M,IAAejsI,EAAAA,IAAS,SAASovC,GAAOpvC,EAAAA,IAASA,EAAAA;AAEtE,iBAAO36E,GAAK+/H,IAAS,GAAA;QAAA;MAAA,GAAA,SAAA/kJ,IAAAd,IAAA;MAAA,GAAA,SAAAc,IAAAd,IAAAO,IAAA;ACpLvB,QAAAA,GAAQ,GAAA;AACR,YAAIg5B,KAAOh5B,GAAQ,EAAA;AAEnB1B,QAAAA,GAAOD,UAAU26B,GAAKy+C;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHtB,YAAI7yC,KAAI5kC,GAAQ,EAAA,GACZ24B,KAAS34B,GAAQ,EAAA,GACjBkP,KAAQlP,GAAQ,EAAA,GAChB64B,KAAa74B,GAAQ,EAAA,GACrB8tE,KAAY9tE,GAAQ,EAAA,GACpBuuJ,KAAavuJ,GAAQ,GAAA,GAErB80O,KAAO,WAAWjkN,KAAKi9C,EAAAA,GACvB/yC,KAAWpC,GAAOoC,UAElBP,KAAO,SAAUu6M,IAAAA;AACnB,iBAAO,SAAU3jH,IAASn5C,IAAAA;AACxB,gBAAIkuJ,KAAY5+N,UAAU9D,SAAS,GAC/B67C,KAAO6mL,KAAY53E,GAAWhnJ,WAAW,CAAA,IAAA;AAC7C,mBAAOwtO,GAAU5O,KAAY,WAAA;AAC3Bj3N,cAAAA,GAAM2pB,GAAWu4F,EAAAA,IAAWA,KAAUr2F,GAASq2F,EAAAA,GAAU9rH,MAAMg6C,EAAAA;YAAAA,IAC7D8xE,IAASn5C,EAAAA;UAAAA;QAAAA;AAMjBrzC,QAAAA,GAAE,EAAEjM,QAAAA,MAAc54B,MAAAA,MAAYu6B,QAAQw6M,GAAAA,GAAQ,EAG5Cr9J,YAAYj9C,GAAK7B,GAAO8+C,UAAAA,GAGxBm4G,aAAap1J,GAAK7B,GAAOi3J,WAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AC5B3B,YAAIzmE,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,YAAI5nF,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN;AAE3B7B,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGoa;AACb,iBAAOpa,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAet+G,OAAQzgB,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACPhH,QAAA5zJ,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAAS7oI;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACHvC,YAAInQ,KAAI5kC,GAAQ,EAAA,GACZ+0C,KAAO/0C,GAAQ,GAAA,GACfiuD,KAAmBjuD,GAAQ,GAAA;AAI/B4kC,QAAAA,GAAE,EAAE9Z,QAAQ,SAASqP,OAAAA,KAAO,GAAQ,EAClC4a,MAAMA,GAAAA,CAAAA,GAIRkZ,GAAiB,MAAA;MAAA,GAAA,SAAA1tD,IAAAd,IAAAO,IAAA;AAAA;ACVjB,YAAIilB,KAAWjlB,GAAQ,EAAA,GACnB+tH,KAAkB/tH,GAAQ,GAAA,GAC1BojC,KAAoBpjC,GAAQ,EAAA;AAIhC1B,QAAAA,GAAOD,UAAU,SAAcmB,IAAAA;AAO7B,mBANI2kC,KAAIlf,GAAS3f,IAAAA,GACb7B,KAAS2/B,GAAkBe,EAAAA,GAC3B+sH,KAAkB3pJ,UAAU9D,QAC5BS,KAAQ6pH,GAAgBmjC,KAAkB,IAAI3pJ,UAAU,CAAA,IAAA,QAAgB9D,EAAAA,GACxEc,KAAM2sJ,KAAkB,IAAI3pJ,UAAU,CAAA,IAAA,QACtCytO,KAAAA,WAASzwO,KAAoBd,KAASsqH,GAAgBxpH,IAAKd,EAAAA,GACxDuxO,KAAS9wO;AAAOigC,YAAAA,GAAEjgC,IAAAA,IAAW1E;AACpC,iBAAO2kC;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA;ACOT7lC,QAAAA,GAAOD,UAbP,SAAuB0sB,IAAOrS,IAAQu8N,IAAAA;AAMpC,mBALI/wO,KAAAA,IACAT,KAASsnB,GAAMtnB,QACfyxO,KAAax8N,GAAOjV,QACpBs0B,KAAS,CAAA,GAAA,EAEJ7zB,KAAQT,MAAQ;AACvB,gBAAIjE,KAAQ0E,KAAQgxO,KAAax8N,GAAOxU,EAAAA,IAAAA;AACxC+wO,YAAAA,GAAWl9M,IAAQhN,GAAM7mB,EAAAA,GAAQ1E,EAAAA;UAAAA;AAEnC,iBAAOu4B;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACnBT,QAAA/3B,GAAQ,EAAA;AACR,YAAIm1C,KAAUn1C,GAAQ,EAAA,GAClBk5B,KAASl5B,GAAQ,EAAA,GACjBuhC,KAAgBvhC,GAAQ,EAAA,GACxBs0B,KAASt0B,GAAQ,GAAA,GAEjBqzJ,KAAiB5yJ,MAAMN,WAEvBi1C,KAAe,EACjBs+G,cAAAA,MACAC,UAAAA,KAAU;AAGZr1J,QAAAA,GAAOD,UAAU,SAAUs8B,IAAAA;AACzB,cAAIi5H,KAAMj5H,GAAGjiB;AACb,iBAAOiiB,OAAO04H,MAAmB9xH,GAAc8xH,IAAgB14H,EAAAA,KAAOi5H,OAAQP,GAAe36I,UACxFwgB,GAAOkc,IAAcD,GAAQxa,EAAAA,CAAAA,IAAOrG,KAASs/H;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AChBpD,YAAIzqC,KAASnpH,GAAQ,GAAA;AAErB1B,QAAAA,GAAOD,UAAU8qH;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACFjB,QAAAnpH,GAAQ,EAAA,GACRA,GAAQ,GAAA;AACR,YAAI49K,KAAe59K,GAAQ,EAAA;AAE3B1B,QAAAA,GAAOD,UAAUu/K,GAAa,OAAA,EAASllK;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACSvC,YACIhP,IADAujB,KAAM;AAOV3uB,QAAAA,GAAOD,UAoBP,SAAgBmwB,IAAK0xC,IAAAA;AACnB,cAAmB,YAAA,OAAR1xC;AACT,kBAAM,IAAIllB,UAAU,mBAAA;AAItB,cAAY,MAAR42D;AAAW,mBAAO1xC;AACtB,cAAY,MAAR0xC;AAAW,mBAAO1xC,KAAMA;AAE5B,cAAIhrB,KAAMgrB,GAAI/qB,SAASy8D;AACvB,cAAIx2D,OAAU8kB,MAAAA,WAAc9kB;AAC1BA,YAAAA,KAAQ8kB,IACRvB,KAAM;mBACGA,GAAIxpB,UAAUD;AACvB,mBAAOypB,GAAI6G,OAAO,GAAGtwB,EAAAA;AAGvB,iBAAOA,KAAMypB,GAAIxpB,UAAUy8D,KAAM;AACrB,gBAANA,OACFjzC,MAAOuB,KAGT0xC,OAAQ,GACR1xC,MAAOA;AAKT,iBADAvB,MADAA,MAAOuB,IACGsF,OAAO,GAAGtwB,EAAAA;QAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA;ACjEtBvE,eAAOC,eAAeb,IAAS,cAAc,EAC3CmB,OAAAA,KAAO,CAAA,GAETnB,GAAQ+uJ,gBAAAA;AAER,YAAIynE,KAASpxC,GAAuBzjL,GAAQ,CAAA,CAAA,GAExCm1O,KAAU1xD,GAAuBzjL,GAAQ,GAAA,CAAA;AAE7C,iBAASyjL,GAAuBj1K,IAAAA;AAAO,iBAAOA,MAAOA,GAAI7O,aAAa6O,KAAM,EAAE,SAAWA,GAAAA;QAAAA;AAEzF,iBAASovB,GAAQpvB,IAAAA;AAAmV,kBAAtOovB,KAArD,cAAA,OAAXt+B,UAAoD,YAAA,OAApBA,OAAO2F,WAAmC,SAAiBuJ,IAAAA;AAAO,mBAAA,OAAcA;UAAAA,IAA2B,SAAiBA,IAAAA;AAAO,mBAAOA,MAAyB,cAAA,OAAXlP,UAAyBkP,GAAI1N,gBAAgBxB,UAAUkP,OAAQlP,OAAOa,YAAY,WAAA,OAAkBqO;UAAAA,GAAyBA,EAAAA;QAAAA;AAEnX,iBAASumN,GAAyBx7L,IAAQ8U,IAAAA;AAAY,cAAc,QAAV9U;AAAgB,mBAAO,CAAA;AAAI,cAAkEz5B,IAAKvB,IAAnEusB,KAEzF,SAAuCyO,IAAQ8U,IAAAA;AAAY,gBAAc,QAAV9U;AAAgB,qBAAO,CAAA;AAAI,gBAA2Dz5B,IAAKvB,IAA5DusB,KAAS,CAAA,GAAQwrB,KAAar3C,OAAO0J,KAAK4wB,EAAAA;AAAqB,iBAAKh7B,KAAI,GAAGA,KAAI+3C,GAAW7yC,QAAQlF;AAAOuB,cAAAA,KAAMw2C,GAAW/3C,EAAAA,GAAQ8vC,GAASnhC,QAAQpN,EAAAA,KAAQ,MAAagrB,GAAOhrB,EAAAA,IAAOy5B,GAAOz5B,EAAAA;AAAQ,mBAAOgrB;UAAAA,EAF1KyO,IAAQ8U,EAAAA;AAAuB,cAAIpvC,OAAO4lB,uBAAuB;AAAE,gBAAIypB,KAAmBrvC,OAAO4lB,sBAAsB0U,EAAAA;AAAS,iBAAKh7B,KAAI,GAAGA,KAAI+vC,GAAiB7qC,QAAQlF;AAAOuB,cAAAA,KAAMwuC,GAAiB/vC,EAAAA,GAAQ8vC,GAASnhC,QAAQpN,EAAAA,KAAQ,KAAkBb,OAAOkB,UAAU0O,qBAAqBnQ,KAAK66B,IAAQz5B,EAAAA,MAAgBgrB,GAAOhrB,EAAAA,IAAOy5B,GAAOz5B,EAAAA;UAAAA;AAAU,iBAAOgrB;QAAAA;AAIne,iBAASsT,GAAQn+B,IAAQo+B,IAAAA;AAAkB,cAAI11B,KAAO1J,OAAO0J,KAAK1I,EAAAA;AAAS,cAAIhB,OAAO4lB,uBAAuB;AAAE,gBAAIyZ,KAAUr/B,OAAO4lB,sBAAsB5kB,EAAAA;AAAao+B,YAAAA,OAAgBC,KAAUA,GAAQ/oB,OAAO,SAAUgpB,IAAAA;AAAO,qBAAOt/B,OAAO65B,yBAAyB74B,IAAQs+B,EAAAA,EAAKp/B;YAAAA,CAAAA,IAAgBwJ,GAAKuM,KAAKhG,MAAMvG,IAAM21B,EAAAA;UAAAA;AAAY,iBAAO31B;QAAAA;AAE9U,iBAASysO,GAActqN,IAAAA;AAAU,mBAASvsB,KAAI,GAAGA,KAAIgJ,UAAU9D,QAAQlF,MAAK;AAAE,gBAAIg7B,KAAyB,QAAhBhyB,UAAUhJ,EAAAA,IAAagJ,UAAUhJ,EAAAA,IAAK,CAAA;AAAQA,YAAAA,KAAI,IAAK6/B,GAAQn/B,OAAOs6B,EAAAA,GAAAA,IAAS,EAAM1pB,QAAQ,SAAU/P,IAAAA;AAAOqrE,cAAAA,GAAgBrgD,IAAQhrB,IAAKy5B,GAAOz5B,EAAAA,CAAAA;YAAAA,CAAAA,IAAsBb,OAAOosE,4BAA6BpsE,OAAOqsE,iBAAiBxgD,IAAQ7rB,OAAOosE,0BAA0B9xC,EAAAA,CAAAA,IAAmB6E,GAAQn/B,OAAOs6B,EAAAA,CAAAA,EAAS1pB,QAAQ,SAAU/P,IAAAA;AAAOb,qBAAOC,eAAe4rB,IAAQhrB,IAAKb,OAAO65B,yBAAyBS,IAAQz5B,EAAAA,CAAAA;YAAAA,CAAAA;UAAAA;AAAe,iBAAOgrB;QAAAA;AAI7gB,iBAASD,GAAkBC,IAAQC,IAAAA;AAAS,mBAASxsB,KAAI,GAAGA,KAAIwsB,GAAMtnB,QAAQlF,MAAK;AAAE,gBAAIysB,KAAaD,GAAMxsB,EAAAA;AAAIysB,YAAAA,GAAW7rB,aAAa6rB,GAAW7rB,cAAAA,OAAqB6rB,GAAWP,eAAAA,MAAyB,WAAWO,OAAYA,GAAWN,WAAAA,OAAiBzrB,OAAOC,eAAe4rB,IAAQE,GAAWlrB,KAAKkrB,EAAAA;UAAAA;QAAAA;AAM7S,iBAASg0F,GAAgBhgH,IAAGqB,IAAAA;AAA+G,kBAA1G2+G,KAAkB//G,OAAOu4B,kBAAkB,SAAyBx4B,IAAGqB,IAAAA;AAAsB,mBAAjBrB,GAAE0vE,YAAYruE,IAAUrB;UAAAA,GAA6BA,IAAGqB,EAAAA;QAAAA;AAErK,iBAASg1O,GAAax9M,IAAAA;AAAW,cAAIC,KAMrC,WAAA;AAAuC,gBAAuB,eAAA,OAAZ2tC,WAAAA,CAA4BA,QAAQttB;AAAW,qBAAA;AAAc,gBAAIstB,QAAQttB,UAAU1d;AAAM,qBAAA;AAAc,gBAAqB,cAAA,OAAV8+F;AAAsB,qBAAA;AAAa,gBAAA;AAAiF,qBAA3EpoG,KAAKhxB,UAAU6G,SAAStI,KAAK+mE,QAAQttB,UAAUhnB,MAAM,CAAA,GAAI,WAAA;cAAA,CAAA,CAAA,GAAA;YAAyB,SAAe5wB,IAAP;AAAY,qBAAA;YAAO;UAAA,EANzP+0O;AAA6B,iBAAO,WAAA;AAAkC,gBAAsCv9M,IAAlCC,KAAQwiD,GAAgB3iD,EAAAA;AAAkB,gBAAIC,IAA2B;AAAE,kBAAIG,KAAYuiD,GAAgBl1E,IAAAA,EAAMxE;AAAai3B,cAAAA,KAAS0tC,QAAQttB,UAAUngB,IAAOzwB,WAAW0wB,EAAAA;YAAAA;AAAqBF,cAAAA,KAASC,GAAM9oB,MAAM5J,MAAMiC,SAAAA;AAAc,mBAAO03G,GAA2B35G,MAAMyyB,EAAAA;UAAAA;QAAAA;AAE5Z,iBAASknF,GAA2B/mF,IAAMx5B,IAAAA;AAAQ,iBAAA,CAAIA,MAA2B,aAAlBk/B,GAAQl/B,EAAAA,KAAsC,cAAA,OAATA,KAA8Cs2N,GAAuB98L,EAAAA,IAAtCx5B;QAAAA;AAEnI,iBAASs2N,GAAuB98L,IAAAA;AAAQ,cAAA,WAAIA;AAAmB,kBAAM,IAAIC,eAAe,2DAAA;AAAgE,iBAAOD;QAAAA;AAI/J,iBAASsiD,GAAgBx7E,IAAAA;AAAwJ,kBAAnJw7E,KAAkBv7E,OAAOu4B,iBAAiBv4B,OAAOijB,iBAAiB,SAAyBljB,IAAAA;AAAK,mBAAOA,GAAE0vE,aAAazvE,OAAOijB,eAAeljB,EAAAA;UAAAA,GAA8BA,EAAAA;QAAAA;AAExM,iBAASmsE,GAAgB38D,IAAK1O,IAAKN,IAAAA;AAAiK,iBAApJM,MAAO0O,KAAOvP,OAAOC,eAAesP,IAAK1O,IAAK,EAAEN,OAAOA,IAAOL,YAAAA,MAAkBsrB,cAAAA,MAAoBC,UAAAA,KAAU,CAAA,IAAkBlc,GAAI1O,EAAAA,IAAON,IAAgBgP;QAAAA;AAE3M,YAAI4+I,KAA6B,SAAU6nE,IAAAA;AAAAA,WAhB3C,SAAmBx9L,IAAU52B,IAAAA;AAAc,gBAA0B,cAAA,OAAfA,MAA4C,SAAfA;AAAuB,oBAAM,IAAIyI,UAAU,oDAAA;AAAyDmuB,YAAAA,GAASt3B,YAAYlB,OAAOY,OAAOgB,MAAcA,GAAWV,WAAW,EAAEW,aAAa,EAAEtB,OAAOi4B,IAAU/M,UAAAA,MAAgBD,cAAAA,KAAc,EAAA,CAAA,GAAe5pB,MAAYm+G,GAAgBvnF,IAAU52B,EAAAA;UAAAA,EAiBvWusJ,IAAe6nE,EAAAA;AAEzB,cArBoBrqM,IAAaK,IAAYC,IAqBzCklF,KAASilI,GAAajoF,EAAAA;AAE1B,mBAASA,GAAcriI,IAAAA;AACrB,gBAAIulF;AAAAA,aA5BR,SAAyB3lF,IAAUC,IAAAA;AAAe,kBAAA,EAAMD,cAAoBC;AAAgB,sBAAM,IAAIthB,UAAU,mCAAA;YAAA,EA8B5FhE,MAAM8nJ,EAAAA,GAItBjiF,GAAgB6pJ,GAFhB1kH,KAAQF,GAAO1xG,KAAK4G,MAAMylB,EAAAA,CAAAA,GAEqB,YAAY,SAAUovI,IAAAA;AACnEA,cAAAA,GAAMuzC,QAAAA;AACN,kBAAInnC,KAAWj2D,GAAMpxD,MAAM1/C,OACvBgwB,KAAY8gF,GAAMvlF,MAAMyE;AAE5B8gF,cAAAA,GAAMhY,SAAS,EACb94F,OAAO26J,GAAMrvI,OAAOtrB,MAAAA,GACnB,WAAA;AACD,oBAAIA,KAAQ8wG,GAAMpxD,MAAM1/C;AAEpBA,gBAAAA,GAAMiE,UAAU+rB,KAClB8gF,GAAMtvB,OAAOm5E,EAAAA,IAMXoM,GAAS9iK,SAASjE,GAAMiE,UAC1B6sG,GAAMtvB,OAAOo0J,GAAcA,GAAc,CAAA,GAAIj7E,EAAAA,GAAQ,CAAA,GAAI,EACvDrvI,QAAQsqN,GAAcA,GAAc,CAAA,GAAIj7E,GAAMrvI,MAAAA,GAAS,CAAA,GAAI,EACzDtrB,OAAO,GAAA,CAAA,EAAA,CAAA,CAAA;cAAA,CAAA;YAAA,CAAA,GAOjB2rE,GAAgB6pJ,GAAuB1kH,EAAAA,GAAQ,aAAa,SAAU6pD,IAAAA;AAClD,0BAAdA,GAAMr6J,OACRwwG,GAAMilI,YAAYp7E,EAAAA;AAIpB,kBAAIq7E,KAAYllI,GAAMvlF,MAAMyqN;AAExBA,cAAAA,OACFr7E,GAAMuzC,QAAAA,GACN8nC,GAAUr7E,EAAAA;YAAAA,CAAAA,GAIdhvF,GAAgB6pJ,GAAuB1kH,EAAAA,GAAQ,UAAU,SAAU6pD,IAAAA;AACjE7pD,cAAAA,GAAMilI,YAAYp7E,EAAAA;AAGlB,kBAAIs7E,KAASnlI,GAAMvlF,MAAM0qN;AAErBA,cAAAA,OACFt7E,GAAMuzC,QAAAA,GACN+nC,GAAOt7E,EAAAA;YAAAA,CAAAA,GAIXhvF,GAAgB6pJ,GAAuB1kH,EAAAA,GAAQ,kBAAkB,SAAUolI,IAAAA;AACzE,kBAAIA,KAAkB;AACpBplI,gBAAAA,GAAMtvB,SAAS,WAAA;AACb,yBAAO;gBAAA;uBAEoB,MAApB00J;AACTplI,gBAAAA,GAAMtvB,SAASsvB,GAAMqlI;mBAChB;AACL,oBAAIC,MAAsB,GAAIT,GAAiB,SAAG,SAAUh7E,IAAAA;AAC1D7pD,kBAAAA,GAAMulI,eAAAA,OAENvlI,GAAMqlI,SAASx7E,EAAAA;gBAAAA,GACdu7E,EAAAA;AAEHplI,gBAAAA,GAAMtvB,SAAS,SAAUm5E,IAAAA;AACvB7pD,kBAAAA,GAAMulI,eAAAA,MACND,GAAoBz7E,EAAAA;gBAAAA,GAGtB7pD,GAAM6rD,QAAQ,WAAA;AACZ,yBAAOy5E,GAAoBz5E,MAAAA;gBAAAA,GAG7B7rD,GAAM68D,SAAS,WAAA;AACb78D,kBAAAA,GAAMulI,eAAAA,OACND,GAAoBzoE,OAAAA;gBAAAA;cAAAA;YAAAA,CAAAA,GAK1BhiG,GAAgB6pJ,GAAuB1kH,EAAAA,GAAQ,YAAY,WAAA;AACzD,kBAAIjf,KAAWif,GAAMvlF,MAAMsmE;AAC3BA,cAAAA,GAASniF,MAAAA,QAAc3H,SAAAA;YAAAA,CAAAA,GAGzB4jE,GAAgB6pJ,GAAuB1kH,EAAAA,GAAQ,eAAe,SAAU6pD,IAAAA;AACtE,kBAAIu7E,KAAkBplI,GAAMvlF,MAAM2qN;AAElC,kBAAKplI,GAAMulI,gBAAAA,EAAgBH,KAAkB,IAA7C;AAIIplI,gBAAAA,GAAM68D,UACR78D,GAAM68D,OAAAA;AAGR,oBAAI3tK,KAAQ8wG,GAAMpxD,MAAM1/C,OACpBgwB,KAAY8gF,GAAMvlF,MAAMyE;AAExBhwB,gBAAAA,GAAMiE,UAAU+rB,KAClB8gF,GAAMqlI,SAASx7E,EAAAA,IAEf7pD,GAAMqlI,SAASP,GAAcA,GAAc,CAAA,GAAIj7E,EAAAA,GAAQ,CAAA,GAAI,EACzDrvI,QAAQsqN,GAAcA,GAAc,CAAA,GAAIj7E,GAAMrvI,MAAAA,GAAS,CAAA,GAAI,EACzDtrB,OAAOA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA;cAAAA;YAAAA,CAAAA,GAMf8wG,GAAMulI,eAAAA,OACNvlI,GAAMpxD,QAAQ,EACZ1/C,OAAAA,WAAcurB,GAAMvrB,SAAyC,SAAhBurB,GAAMvrB,QAAiB,KAAKurB,GAAMvrB,MAAAA;AAEjF,gBAAIs2O,KAAoBxlI,GAAMvlF,MAAM2qN;AAIpC,mBAFAplI,GAAMylI,eAAeD,EAAAA,GAEdxlI;UAAAA;AA2FT,iBAlPoB1lF,KA0JPwiI,KA1JoBniI,KA0JL,CAAC,EAC3BnrB,KAAK,sBACLN,OAAO,SAA4Bw2O,IAAAA;AACjC,gBAAA,CAAI1wO,KAAKuwO,cAAT;AAIA,kBAAI1gB,KAAc7vN,KAAKylB,OACnBvrB,KAAQ21N,GAAY31N,OACpBk2O,KAAkBvgB,GAAYugB,iBAC9BO,KAAaD,GAAUN,iBACvBnvE,KAAWyvE,GAAUx2O,OACrB02O,KAAa5wO,KAAK45C,MAAM1/C;AAAAA,yBAEjBA,MAAyB+mK,OAAa/mK,MAAS02O,OAAe12O,MAGvE8F,KAAKgzF,SAAS,EACZ94F,OAAOA,GAAAA,CAAAA,GAIPk2O,OAAoBO,MACtB3wO,KAAKywO,eAAeL,EAAAA;YAAAA;UAAAA,EAAAA,GAGvB,EACD51O,KAAK,wBACLN,OAAO,WAAA;AACD8F,iBAAK62J,SACP72J,KAAK62J,MAAAA;UAAAA,EAAAA,GAGR,EACDr8J,KAAK,UACLN,OAAO,WAAA;AACL,gBAcI22O,IAcAC,IA5BA/gB,KAAe/vN,KAAKylB,OACpBogF,KAAUkqH,GAAalqH,SAKvBkrI,MAJYhhB,GAAahkI,UAChBgkI,GAAa71N,OACT61N,GAAa7lM,WACP6lM,GAAaqgB,iBACXrgB,GAAaghB,qBAClCC,KAAoBjhB,GAAaihB,mBACjCd,KAAYngB,GAAamgB,WACzBC,KAASpgB,GAAaogB,QACtBc,KAAWlhB,GAAakhB,UACxBxrN,KAAQgqM,GAAyBM,IAAc,CAAC,WAAW,YAAY,SAAS,aAAa,mBAAmB,sBAAsB,qBAAqB,aAAa,UAAU,UAAA,CAAA,GAElL71N,KAAQ8F,KAAK45C,MAAM1/C;AAIrB22O,YAAAA,KADEE,KACe,EACfb,WAAWlwO,KAAKkwO,UAAAA,IAETA,KACQ,EACfA,WAAWA,GAAAA,IAGI,CAAA,GAMjBY,KADEE,KACY,EACZb,QAAQnwO,KAAKmwO,OAAAA,IAENA,KACK,EACZA,QAAQA,GAAAA,IAGI,CAAA;AAGhB,gBAAIe,KAAWD,KAAW,EACxBvzO,KAAKuzO,GAAAA,IACH,CAAA;AACJ,mBAAoB1hB,GAAgB,QAAEt2J,cAAc4sC,IAASiqI,GAAcA,GAAcA,GAAcA,GAAc,CAAA,GAAIrqN,EAAAA,GAAQ,CAAA,GAAI,EACnIsmE,UAAU/rF,KAAK+rF,UACf7xF,OAAOA,GAAAA,GACN22O,EAAAA,GAAiBC,EAAAA,GAAcI,EAAAA,CAAAA;UAAAA,EAAAA,CAAAA,MA9OsC3rN,GAAkBD,GAAYzqB,WAAW8qB,EAAAA,GAAiBC,MAAaL,GAAkBD,IAAaM,EAAAA,GAkP3KkiI;QAAAA,EACPynE,GAAgB,QAAE7oF,aAAAA;AAEpB3tI,QAAAA,GAAQ+uJ,gBAAgBA,IAExBjiF,GAAgBiiF,IAAe,gBAAgB,EAC7CjiD,SAAS,SACT3lG,MAAM,QACNgwO,WAAAA,QACAC,QAAAA,QACAj2O,OAAAA,QACAgwB,WAAW,GACXkmN,iBAAiB,KACjBW,oBAAAA,MACAC,mBAAAA,MACAC,UAAAA,OAAU/sO,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;AAAAA,SC5RZ,SAAA/J,IAAA;AAUA,cASIg3O,KAAS,cAGTxgF,KAAa,sBAGbC,KAAa,cAGbC,KAAY,eAGZC,KAAez7G,UAGflF,KAA8B,YAAA,OAAV9c,MAAsBA,MAAUA,GAAO15B,WAAWA,UAAU05B,IAGhF+c,KAA0B,YAAA,OAARxd,QAAoBA,QAAQA,KAAKj5B,WAAWA,UAAUi5B,MAGxEtkB,KAAO6hC,MAAcC,MAAY3a,SAAS,aAAA,EAATA,GAUjCiuC,KAPc/pE,OAAOkB,UAOQ6G,UAG7B2rJ,KAAYpvJ,KAAKC,KACjBsoK,KAAYvoK,KAAKqB,KAkBjB6+J,KAAM,WAAA;AACR,mBAAO7vJ,GAAKud,KAAKsyI,IAAAA;UAAAA;AA4MnB,mBAASh4I,GAASjsB,IAAAA;AAChB,gBAAIgG,KAAAA,OAAchG;AAClB,mBAAA,CAAA,CAASA,OAAkB,YAARgG,MAA4B,cAARA;UAAAA;AA4EzC,mBAASqmK,GAASrsK,IAAAA;AAChB,gBAAoB,YAAA,OAATA;AACT,qBAAOA;AAET,gBAhCF,SAAkBA,IAAAA;AAChB,qBAAuB,YAAA,OAATA,MAtBhB,SAAsBA,IAAAA;AACpB,uBAAA,CAAA,CAASA,MAAyB,YAAA,OAATA;cAAAA,EAsBTA,EAAAA,KAzTF,qBAyTYwpE,GAAetqE,KAAKc,EAAAA;YAAAA,EA8BjCA,EAAAA;AACX,qBA3VM;AA6VR,gBAAIisB,GAASjsB,EAAAA,GAAQ;AACnB,kBAAI6N,KAAgC,cAAA,OAAjB7N,GAAMmL,UAAwBnL,GAAMmL,QAAAA,IAAYnL;AACnEA,cAAAA,KAAQisB,GAASpe,EAAAA,IAAUA,KAAQ,KAAMA;YAAAA;AAE3C,gBAAoB,YAAA,OAAT7N;AACT,qBAAiB,MAAVA,KAAcA,KAAAA,CAASA;AAEhCA,YAAAA,KAAQA,GAAMivB,QAAQgoN,IAAQ,EAAA;AAC9B,gBAAIpgF,KAAWH,GAAWrlI,KAAKrxB,EAAAA;AAC/B,mBAAQ62J,MAAYF,GAAUtlI,KAAKrxB,EAAAA,IAC/B42J,GAAa52J,GAAMkB,MAAM,CAAA,GAAI21J,KAAW,IAAI,CAAA,IAC3CJ,GAAWplI,KAAKrxB,EAAAA,IAxWb,MAAA,CAwW6BA;UAAAA;AAGvClB,UAAAA,GAAOD,UAtPP,SAAkB88B,IAAM4wI,IAAMzyI,IAAAA;AAC5B,gBAAI0yI,IACAC,IACAC,IACAn0I,IACAo0I,IACAC,IACAC,KAAiB,GACjBC,KAAAA,OACAC,KAAAA,OACAC,KAAAA;AAEJ,gBAAmB,cAAA,OAARrxI;AACT,oBAAM,IAAI7xB,UArIQ,qBAAA;AA+IpB,qBAASmjK,GAAWC,IAAAA;AAClB,kBAAIptH,KAAO0sH,IACPvqD,KAAUwqD;AAKd,qBAHAD,KAAWC,KAAAA,QACXI,KAAiBK,IACjB30I,KAASoD,GAAKjsB,MAAMuyG,IAASniE,EAAAA;YAAAA;AAI/B,qBAASqtH,GAAYD,IAAAA;AAMnB,qBAJAL,KAAiBK,IAEjBP,KAAU10F,WAAWm1F,IAAcb,EAAAA,GAE5BO,KAAUG,GAAWC,EAAAA,IAAQ30I;YAAAA;AAWtC,qBAAS80I,GAAaH,IAAAA;AACpB,kBAAII,KAAoBJ,KAAON;AAM/B,qBAAA,WAAQA,MAA+BU,MAAqBf,MACzDe,KAAoB,KAAOP,MANJG,KAAOL,MAM8BH;YAAAA;AAGjE,qBAASU,KAAAA;AACP,kBAAIF,KAAOjJ,GAAAA;AACX,kBAAIoJ,GAAaH,EAAAA;AACf,uBAAOK,GAAaL,EAAAA;AAGtBP,cAAAA,KAAU10F,WAAWm1F,IAzBvB,SAAuBF,IAAAA;AACrB,oBAEI30I,KAASg0I,MAFWW,KAAON;AAI/B,uBAAOG,KAAST,GAAU/zI,IAAQm0I,MAHRQ,KAAOL,GAAAA,IAGkCt0I;cAAAA,EAoBlB20I,EAAAA,CAAAA;YAAAA;AAGnD,qBAASK,GAAaL,IAAAA;AAKpB,qBAJAP,KAAAA,QAIIK,MAAYR,KACPS,GAAWC,EAAAA,KAEpBV,KAAWC,KAAAA,QACJl0I;YAAAA;AAeT,qBAASk1I,KAAAA;AACP,kBAAIP,KAAOjJ,GAAAA,GACPyJ,KAAaL,GAAaH,EAAAA;AAM9B,kBAJAV,KAAWzkK,WACX0kK,KAAW3mK,MACX8mK,KAAeM,IAEXQ,IAAY;AACd,oBAAA,WAAIf;AACF,yBAAOQ,GAAYP,EAAAA;AAErB,oBAAIG;AAGF,yBADAJ,KAAU10F,WAAWm1F,IAAcb,EAAAA,GAC5BU,GAAWL,EAAAA;cAAAA;AAMtB,qBAAA,WAHID,OACFA,KAAU10F,WAAWm1F,IAAcb,EAAAA,IAE9Bh0I;YAAAA;AAIT,mBAxGAg0I,KAAOF,GAASE,EAAAA,KAAS,GACrBtgJ,GAAS6N,EAAAA,MACXgzI,KAAAA,CAAAA,CAAYhzI,GAAQgzI,SAEpBJ,MADAK,KAAS,aAAajzI,MACHq5H,GAAUkZ,GAASvyI,GAAQ4yI,OAAAA,KAAY,GAAGH,EAAAA,IAAQG,IACrEM,KAAW,cAAclzI,KAAAA,CAAAA,CAAYA,GAAQkzI,WAAWA,KAiG1DS,GAAUE,SAnCV,WAAA;AAAA,yBACMhB,MACFz0F,aAAay0F,EAAAA,GAEfE,KAAiB,GACjBL,KAAWI,KAAeH,KAAWE,KAAAA;YAAU3iK,GA+BjDyjK,GAAU9Q,QA5BV,WAAA;AACE,qBAAA,WAAOgQ,KAAwBp0I,KAASg1I,GAAatJ,GAAAA,CAAAA;YAAAA,GA4BhDwJ;UAAAA;QAAAA,GAAAA,KAAAA,MAAAA,GAAAA,EAAAA,CAAAA;MAAAA,GAAAA,SAAAA,IAAAA,IAAAA,IAAAA;ACzPT,YAAI7iK,KAAM,EACT,YAAY,KACZ,qBAAqB,IACrB,mBAAmB,KACnB,sBAAsB,KACtB,uBAAuB,KACvB,+BAA+B,KAC/B,wBAAwB,KACxB,wBAAwB,KACxB,sBAAsB,KACtB,yBAAyB,KACzB,0BAA0B,KAC1B,6BAA6B,KAC7B,6BAA6B,KAC7B,2BAA2B,KAC3B,4BAA4B,KAC5B,4CAA4C,KAC5C,wCAAwC,KACxC,qBAAqB,KACrB,oBAAoB,IACpB,oCAAoC,KACpC,wDAAwD,KACxD,4DAA4D,KAC5D,kBAAkB,KAClB,qBAAqB,KACrB,sBAAsB,KACtB,qBAAqB,KACrB,yBAAyB,KACzB,uBAAuB,KACvB,qBAAqB,KACrB,wBAAwB,KACxB,yBAAyB,KACzB,6CAA6C,KAC7C,mBAAmB,KACnB,qBAAqB,IACrB,4CAA4C,KAC5C,mCAAmC,KACnC,mCAAmC,KACnC,8BAA8B,KAC9B,wCAAwC,KACxC,2CAA2C,KAC3C,6CAA6C,KAC7C,sCAAsC,KACtC,2CAA2C,KAC3C,iCAAiC,KACjC,sBAAsB,IACtB,mBAAmB,KACnB,sBAAsB,KACtB,uBAAuB,KACvB,uCAAuC,KACvC,4CAA4C,KAC5C,wCAAwC,KACxC,mCAAmC,KACnC,iDAAiD,KACjD,uCAAuC,KACvC,oCAAoC,KACpC,oDAAoD,KACpD,4CAA4C,KAC5C,0BAA0B,KAC1B,4BAA4B,KAC5B,+BAA+B,KAC/B,2CAA2C,KAC3C,mCAAmC,KACnC,+CAA+C,KAC/C,yCAAyC,KACzC,wBAAwB,KACxB,0BAA0B,KAC1B,mBAAmB,KACnB,sBAAsB,KACtB,qBAAqB,IACrB,mBAAmB,KACnB,sBAAsB,KACtB,uBAAuB,IACvB,0BAA0B,KAC1B,wCAAwC,KACxC,yBAAyB,KACzB,mBAAmB,KACnB,gBAAgB,KAChB,mBAAmB,KACnB,2BAA2B,IAAA;AAI5B,iBAASssO,GAAeztM,IAAAA;AACvB,cAAInS,KAAK6/M,GAAsB1tM,EAAAA;AAC/B,iBAAO9qC,GAAoB24B,EAAAA;QAAAA;AAE5B,iBAAS6/M,GAAsB1tM,IAAAA;AAC9B,cAAA,CAAI9qC,GAAoBa,EAAEoL,IAAK6+B,EAAAA,GAAM;AACpC,gBAAI1oC,KAAI,IAAIyL,MAAM,yBAAyBi9B,KAAM,GAAA;AAEjD,kBADA1oC,GAAEg8C,OAAO,oBACHh8C;UAAAA;AAEP,iBAAO6J,GAAI6+B,EAAAA;QAAAA;AAEZytM,QAAAA,GAAe/tO,OAAO,WAAA;AACrB,iBAAO1J,OAAO0J,KAAKyB,EAAAA;QAAAA,GAEpBssO,GAAelvM,UAAUmvM,IACzBr4O,GAAOD,UAAUq4O,IACjBA,GAAe5/M,KAAK;MAAA,GAAA,SAAAv2B,IAAAd,IAAAO,IAAA;AAAA;AAAA,QAAAA,GAAA,EAAAP,EAAA;AAAA,YAAAJ,KAAA,CAAA;AAAA,QAAAW,GAAA,EAAAX,EAAA,GAAAW,GAAA,EAAAX,IAAA,aAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAW,GAAA,EAAAX,IAAA,OAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAW,GAAA,EAAAX,IAAA,OAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAW,GAAA,EAAAX,IAAA,UAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAW,GAAA,EAAAX,IAAA,YAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAW,GAAA,EAAAX,IAAA,SAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAW,GAAA,EAAAX,IAAA,UAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAW,GAAA,EAAAX,IAAA,QAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAW,GAAA,EAAAX,IAAA,YAAA,WAAA;AAAA,iBAAA;QAAA,CAAA;AAAA,YAAAL,KAAA,CAAA;AAAA,QAAAgB,GAAA,EAAAhB,EAAA,GAAAgB,GAAA,EAAAhB,IAAA,kBAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAgB,GAAA,EAAAhB,IAAA,qBAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAgB,GAAA,EAAAhB,IAAA,oBAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAgB,GAAA,EAAAhB,IAAA,2BAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAgB,GAAA,EAAAhB,IAAA,2BAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAgB,GAAA,EAAAhB,IAAA,sBAAA,WAAA;AAAA,iBAAA;QAAA,CAAA,GAAAgB,GAAA,EAAAhB,IAAA,qBAAA,WAAA;AAAA,iBAAA;QAAA,CAAA;AAAA,YAAA8L,KAAA9K,GAAA,EAAA,GAAAzB,KAAAyB,GAAA,EAAA8K,EAAA,GAAAwhB,KAAAtsB,GAAA,CAAA,GAAAM,KAAAN,GAAA,EAAAssB,EAAA,GAAA1tB,KAAAoB,GAAA,GAAA,GAAAxB,KAAAwB,GAAA,EAAApB,EAAA,GAAA2tB,KAAAvsB,GAAA,EAAA,GAAAK,KAAAL,GAAA,EAAAusB,EAAA,GAAA1e,KAAA7N,GAAA,EAAA,GAAAnB,KAAAmB,GAAA,EAAA6N,EAAA,GAAAlP,KAAAqB,GAAA,EAAA,GAAA0F,KAAA1F,GAAA,EAAArB,EAAA,GAAAulC,KAAAlkC,GAAA,GAAA,GAAAuwB,KAAAvwB,GAAA,EAAAkkC,EAAA,GAAAn5B,KAAA/K,GAAA,CAAA,GAAA4tB,KAAA5tB,GAAA,EAAA+K,EAAA,GAAAyK,KAAAxV,GAAA,CAAA,GAAA+sB,KAAA/sB,GAAA,EAAAwV,EAAA,GAAAnK,KAAArL,GAAA,CAAA,GAAA8sB,KAAA9sB,GAAA,EAAAqL,EAAA,GAAA5F,KAAAzF,GAAA,EAAA,GAAAktB,KAAAltB,GAAA,EAAAyF,EAAA,GAAA0+B,KAAAnkC,GAAA,EAAA,GAAA2tB,KAAA3tB,GAAA,EAAAmkC,EAAA,GAAAC,KAAApkC,GAAA,EAAA,GAAAwzB,KAAAxzB,GAAA,EAAAokC,EAAA,GAAAC,KAAArkC,GAAA,EAAA,GAAAiuB,KAAAjuB,GAAA,EAAAqkC,EAAA,GAAAjU,KAAApwB,GAAA,EAAA,GAAAgzB,KAAAhzB,GAAA,EAAAowB,EAAA,GAAA,IAAApwB,GAAA,CAAA,GAAAm1B,KAAAn1B,GAAA,EAAA,CAAA,GAAAskC,KAAAtkC,GAAA,CAAA,GAAAs1B,KAAAt1B,GAAA,EAAAskC,EAAA,GAAAC,KAAAvkC,GAAA,GAAA,GAAAu1B,KAAAv1B,GAAA,CAAA,GAAAwkC,KAAAxkC,GAAA,EAAAu1B,EAAA,GAAAI,KAAA31B,GAAA,GAAA,GAAAykC,KAAAzkC,GAAA,GAAA,GAAA0kC,KAAA1kC,GAAA,GAAA,GAAA2kC,KAAA3kC,GAAA,EAAA0kC,EAAA,GAAAE,KAAA5kC,GAAA,EAAA,GAAA6kC,KAAA7kC,GAAA,EAAA,GAAA8kC,KAAA9kC,GAAA,CAAA,GCxFd42O,IAAO,SAAA9rO,IAAAA;AAAC,iBAAIA;QAAAA;AAAAA,YAmBG+rO,KAAAA,WAAAA;AAEnB,mBAAAt2O,KAAA;AAAsB,gBAADd,IAATy5I,KAAS,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAJ,CAAA;AAAI,YAAAnsH,GAAA,EAAA,MAAAxsB,EAAA,GACnBkoE,GAAAA,EAAWnjE,MAAM,EACf45C,OAAO,CAAA,GACP8gG,SAAS,CAAA,GACT82F,gBAAgB,CAAA,GAChB/0M,QAAQ,EACNo9F,SAAS,CAAA,GACTt3H,IAAI,CAAA,GACJyoF,YAAY,CAAA,GACZ2vC,aAAa,CAAA,GACblC,cAAc,CAAA,EAAA,GAEhBg5G,aAAa,CAAA,GACbxyG,SAAS,CAAA,EAAA,GACR2U,EAAAA,GAEH5zI,KAAK8nB,YAAYF,GAAA,EAAAztB,KAAA6F,KAAK0xO,UAAAA,EAAL,KAAAv3O,IAAqB6F,IAAAA,GAGtCA,KAAKknD,QAAQyqL,GAAeL,GAAM9sO,OAAAA,GAAAA,MAAAA,EAAOxE,KAAK45C,KAAAA,GAAQ55C,KAAK8nB,SAAAA,GAG3D9nB,KAAK4xO,YAAAA,KAAY,GAGjB5xO,KAAK6xO,SAAS7xO,KAAK06I,OAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,YAAAA,OAGrB,WAAA;AACE,mBAAO16I,KAAKknD;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,YAAAA,OAGd,SAASwzF,IAAAA;AAAwB,gBAAfo3F,KAAAA,EAAc,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,MAAA,UAAA,CAAA,GAC1BC,KAAeC,GAAet3F,IAAS16I,KAAK8nB,UAAAA,GAAa9nB,KAAKwxO,cAAAA;AAClES,YAAAA,GAAajyO,KAAKy8B,QAAQs1M,EAAAA,GACvBD,MACD9xO,KAAK4xO,YAAAA;AAGP,gBAAMM,KAAqBC,GAAc/4O,KAAK4G,KAAKy8B,QAAQi+G,IAAS16I,KAAK8nB,UAAAA,CAAAA;AAEtEoqN,YAAAA,MACDlyO,KAAK4xO,YAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,eAAAA,OAIT,WAAA;AAAgC,gBAApBQ,KAAAA,EAAmB,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,MAAA,UAAA,CAAA,GACzBrqN,KAAW/nB,KAAK+kF,SAAAA,EAAWh9D,UAC3BC,KAAWhoB,KAAK+kF,SAAAA,EAAW/8D;AAE/BhoB,iBAAKyxO,cAAcppN,GAAA,EAAc,CAAA,GAC7BroB,KAAKqyO,eAAAA,GACLryO,KAAKsyO,0BAA0BvqN,EAAAA,GAC/B/nB,KAAKuyO,4BAA4BvqN,IAAUhoB,KAAK8nB,SAAAA,GAChD9nB,KAAKwyO,eAAexqN,EAAAA,GACpBhoB,KAAKyyO,MAAAA,GACLzyO,KAAKoiC,WAAAA,CAAAA,GAGNgwM,MACDpyO,KAAK0yO,eAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,cAAAA,OAGT,WAAA;AACE,mBAAO1yO,KAAKyxO;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,kBAAAA,OAGd,WAAA;AAAkB,gBAADx2O,IAAAd,IAAAO;AACf,mBAAO2tB,GAAA,EAAc,EACnBP,WAAW9nB,KAAK8nB,WAChBi9D,UAAUn9D,GAAA,EAAA3sB,KAAA+E,KAAK+kF,QAAAA,EAAL,KAAA9pF,IAAmB+E,IAAAA,GAC7BslF,eAAe19D,GAAA,EAAAztB,KAAA6F,KAAKslF,aAAAA,EAAL,KAAAnrF,IAAwB6F,IAAAA,GACvCgoB,UAAUhoB,KAAK+kF,SAAAA,EAAW/8D,UAC1Boa,YAAYxa,GAAA,EAAAltB,KAAAsF,KAAK2yO,WAAAA,EAAL,KAAAj4O,IAAsBsF,IAAAA,GAClCgmB,IAAAA,GAAAA,GACAotE,OAAAA,GAAAA,EAAAA,GACCpzF,KAAKy8B,OAAOk+F,eAAe,CAAA,CAAA;UAAA,EAAA,GAAA,EAAA,KAAA,eAAA,OAGhC,WAAA;AACE,mBAAO36H,KAAKy8B,OAAOo9F;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,cAAAA,OAGrB,WAAA;AACE,mBAAO,EACLA,SAAS75H,KAAKy8B,OAAOo9F,QAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,cAAAA,OAIzB,SAAWA,IAAAA;AACT75H,iBAAKy8B,OAAOo9F,UAAUA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,kBAAAA,OAGxB,WAAA;AAkUF,gBAAqB+4G,IAAez4O,IAC9Bu+H,IARgBm6G;AA1TlB7yO,iBAAKknD,MAAMogB,gBA0TOurK,KA1TqB7yO,KAAKy8B,OAAOg8F,cAiUlCm6G,KANFrrN,OAAAA,GAAAA,CAAAA,EAAOsrN,IAAQ,SAACprO,IAAAA;AAC/B,qBAAOA,GAAIixH;YAAAA,CAAAA,GAMTA,KAAWhrG,GAAA,EAAAvzB,KAAAZ,GAAA,EAAYq5O,EAAAA,CAAAA,EAAZ,KAAAz4O,IAAkC,SAAC+O,IAAK1O,IAAAA;AAErD,qBADA0O,GAAI1O,EAAAA,IAWR,SAAqBs4O,IAAAA;AACnB,uBAAO,WAAA;AAAgC,sBAA/Bl5L,KAA8B,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAtB,IAAIzvC,GAAAA,OAAO8d,KAAW,UAAA,SAAA,IAAA,UAAA,CAAA,IAAA;AACpC,sBAAA,CAAI6qN;AACF,2BAAOl5L;AAET,sBAAIm5L,KAASD,GAAW7qN,GAAO/nB,IAAAA;AAC/B,sBAAG6yO,IAAO;AACR,wBAAMprN,KAAMqrN,GAAiBD,EAAAA,EAAOn5L,IAAO3xB,EAAAA;AAG3C,2BAAe,SAARN,KAAeiyB,KAAQjyB;kBAAAA;AAEhC,yBAAOiyB;gBAAAA;cAAAA,EAvBgBg5L,GAAcp4O,EAAAA,CAAAA,GAC9B0O;YAAAA,GACP,CAAA,CAAA,GAEE3P,GAAA,EAAYm/H,EAAAA,EAAUv6H,SAInBqlK,OAAAA,GAAAA,eAAAA,EAAgB9qC,EAAAA,IAHd44G,EAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,WAAAA,OAjUT,SAAQ93O,IAAAA;AACN,gBAAIy5O,KAASz5O,GAAK,CAAA,EAAG+yC,YAAAA,IAAgBre,GAAA,EAAA10B,EAAAA,EAAI,KAAJA,IAAW,CAAA;AAChD,mBAAOkuB,OAAAA,GAAAA,CAAAA,EAAU1nB,KAAKy8B,OAAOg8F,cAAc,SAAChxH,IAAKu+B,IAAAA;AAC7C,kBAAI9f,KAAQze,GAAIjO,EAAAA;AAChB,kBAAG0sB;AACH,uBAAAoC,GAAA,EAAA,CAAA,GAAS0d,KAAUitM,IAAU/sN,EAAAA;YAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,gBAAAA,OAInC,WAAA;AACE,mBAAOlmB,KAAKuqG,QAAQ,WAAA;UAAA,EAAA,GAAA,EAAA,KAAA,cAAA,OAGtB,WAAA;AACE,gBAAI2oI,KAAgBlzO,KAAKuqG,QAAQ,SAAA;AAEjC,mBAAOhjF,OAAAA,GAAAA,CAAAA,EAAO2rN,IAAe,SAACt6G,IAAAA;AAC5B,qBAAOlxG,OAAAA,GAAAA,CAAAA,EAAUkxG,IAAS,SAAC3wG,IAAQkrN,IAAAA;AACjC,oBAAGhsN,OAAAA,GAAAA,CAAAA,EAAKc,EAAAA;AACN,yBAAAK,GAAA,EAAA,CAAA,GAAS6qN,IAAalrN,EAAAA;cAAAA,CAAAA;YAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,6BAAAA,OAK9B,SAA0BF,IAAAA;AAAW,gBAAD5tB,KAAA,MAC9Bi5O,KAAepzO,KAAKqzO,gBAAgBtrN,EAAAA;AACtC,mBAAOR,OAAAA,GAAAA,CAAAA,EAAO6rN,IAAc,SAACx6G,IAAS06G,IAAAA;AACpC,kBAAIC,KAAWp5O,GAAKsiC,OAAOg8F,aAAavqG,GAAA,EAAAolN,EAAAA,EAAe,KAAfA,IAAsB,GAAA,EAAG,CAAA,EAAIt5G;AACnE,qBAAGu5G,KACMhsN,OAAAA,GAAAA,CAAAA,EAAOqxG,IAAS,SAAC3wG,IAAQkrN,IAAAA;AAC9B,oBAAIj+M,KAAOq+M,GAASJ,EAAAA;AACpB,uBAAIj+M,MAIAvM,GAAA,EAAcuM,EAAAA,MAChBA,KAAO,CAACA,EAAAA,IAEHxH,GAAA,EAAAwH,EAAAA,EAAI,KAAJA,IAAY,SAAC4uG,IAAKvhI,IAAAA;AACvB,sBAAIixO,KAAY,WAAA;AACd,2BAAOjxO,GAAGuhI,IAAK3pI,GAAK2tB,UAAAA,CAAAA,EAAb,MAAA,QAAA,SAAA;kBAAA;AAET,sBAAA,CAAIX,OAAAA,GAAAA,CAAAA,EAAKqsN,EAAAA;AACP,0BAAM,IAAIxvO,UAAU,4FAAA;AAEtB,yBAAOgvO,GAAiBQ,EAAAA;gBAAAA,GACvBvrN,MAAUwN,SAAS56B,SAAAA,KAdbotB;cAAAA,CAAAA,IAiBR2wG;YAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,+BAAAA,OAIb,SAA4B5wG,IAAUF,IAAAA;AAAY,gBAADptB,KAAA,MAC3C+4O,KAAiBzzO,KAAK0zO,kBAAkB1rN,IAAUF,EAAAA;AACpD,mBAAOP,OAAAA,GAAAA,CAAAA,EAAOksN,IAAgB,SAAC56G,IAAW86G,IAAAA;AACxC,kBAAIn1D,KAAY,CAACtwJ,GAAA,EAAAylN,EAAAA,EAAiB,KAAjBA,IAAwB,GAAA,EAAI,CAAA,GACzCJ,KAAW74O,GAAK+hC,OAAOg8F,aAAa+lD,EAAAA,EAAWrlD;AACjD,qBAAGo6G,KACMhsN,OAAAA,GAAAA,CAAAA,EAAOsxG,IAAW,SAAC9gG,IAAU67M,IAAAA;AAClC,oBAAI1+M,KAAOq+M,GAASK,EAAAA;AACpB,uBAAI1+M,MAIAvM,GAAA,EAAcuM,EAAAA,MAChBA,KAAO,CAACA,EAAAA,IAEHxH,GAAA,EAAAwH,EAAAA,EAAI,KAAJA,IAAY,SAAC4uG,IAAKvhI,IAAAA;AACvB,sBAAIsxO,KAAkB,WAAA;AAAa,6BAAAruO,IAAAvM,KAAA,UAAA,QAAT+gD,KAAS,IAAA,MAAA/gD,EAAA,GAAAK,KAAA,GAAAA,KAAAL,IAAAK;AAAT0gD,sBAAAA,GAAS1gD,EAAA,IAAA,UAAAA,EAAA;AACjC,2BAAOiJ,GAAGuhI,IAAKppI,GAAKotB,UAAAA,CAAAA,EAAb,MAAA,QAAA9sB,GAAA,EAAAwK,KAAA,CAA0BwiB,GAAAA,EAAWnG,MAAM28J,EAAAA,CAAAA,CAAAA,EAA3C,KAAAh5K,IAA0Dw0C,EAAAA,CAAAA;kBAAAA;AAEnE,sBAAA,CAAI7yB,OAAAA,GAAAA,CAAAA,EAAK0sN,EAAAA;AACP,0BAAM,IAAI7vO,UAAU,6FAAA;AAEtB,yBAAO6vO;gBAAAA,GACN97M,MAAYtC,SAAS56B,SAAAA,KAdfk9B;cAAAA,CAAAA,IAiBR8gG;YAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,aAAAA,OAIb,SAAUj/E,IAAAA;AAAQ,gBAADz/C;AACf,mBAAOuzB,GAAA,EAAAvzB,KAAAZ,GAAA,EAAYyG,KAAKy8B,OAAOg8F,YAAAA,CAAAA,EAAxB,KAAAt+H,IAA6C,SAAC+O,IAAK1O,IAAAA;AAExD,qBADA0O,GAAI1O,EAAAA,IAAOo/C,GAAM9/C,IAAIU,EAAAA,GACd0O;YAAAA,GACN,CAAA,CAAA;UAAA,EAAA,GAAA,EAAA,KAAA,kBAAA,OAGL,SAAe8e,IAAAA;AAAW,gBAAD7tB;AACvB,mBAAOuzB,GAAA,EAAAvzB,KAAAZ,GAAA,EAAYyG,KAAKy8B,OAAOg8F,YAAAA,CAAAA,EAAxB,KAAAt+H,IAA6C,SAAC+O,IAAK1O,IAAAA;AAE1D,qBADI0O,GAAI1O,EAAAA,IAAO,WAAA;AAAA,uBAAKwtB,GAAAA,EAAWluB,IAAIU,EAAAA;cAAAA,GAC5B0O;YAAAA,GACN,CAAA,CAAA;UAAA,EAAA,GAAA,EAAA,KAAA,SAAA,OAGH,WAAA;AACE,mBAAO,EACL3G,IAAIvC,KAAKy8B,OAAOl6B,GAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,iBAAAA,OAIpB,SAAco4E,IAAAA;AAAY,gBAADxgF,KAAA,MACjBwtB,KAAM3nB,KAAKy8B,OAAOuuD,WAAWrQ,EAAAA;AAEnC,mBAAGhyD,GAAA,EAAchB,EAAAA,IACR+F,GAAA,EAAA/F,EAAAA,EAAG,KAAHA,IAAW,SAAC4yG,IAAK68B,IAAAA;AACtB,qBAAOA,GAAQ78B,IAAKpgI,GAAK2tB,UAAAA,CAAAA;YAAAA,CAAAA,IAAAA,WAGnB6yD,KACD36E,KAAKy8B,OAAOuuD,WAAWrQ,EAAAA,IAGzB36E,KAAKy8B,OAAOuuD;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,qBAAAA,OAGrB,SAAkBhjE,IAAUF,IAAAA;AAC1B,mBAAOP,OAAAA,GAAAA,CAAAA,EAAOvnB,KAAK8zO,aAAAA,GAAgB,SAAC5qO,IAAK1O,IAAAA;AACvC,kBAAIgkL,KAAY,CAACtwJ,GAAA,EAAA1zB,EAAAA,EAAG,KAAHA,IAAU,GAAA,EAAI,CAAA,GACzBu5O,KAAiB,WAAA;AAAA,uBAAK/rN,GAAAA,EAAWnG,MAAM28J,EAAAA;cAAAA;AAE7C,qBAAOj3J,OAAAA,GAAAA,CAAAA,EAAOre,IAAK,SAAC3G,IAAAA;AAClB,uBAAO,WAAA;AAAa,2BAAA7H,IAAAX,KAAA,UAAA,QAATigD,KAAS,IAAA,MAAAjgD,EAAA,GAAAd,KAAA,GAAAA,KAAAc,IAAAd;AAAT+gD,oBAAAA,GAAS/gD,EAAA,IAAA,UAAAA,EAAA;AAClB,sBAAI0uB,KAAMqrN,GAAiBzwO,EAAAA,EAAIqH,MAAM,MAA3B5O,GAAA,EAAAN,KAAA,CAAkCq5O,GAAAA,CAAAA,CAAAA,EAAlC,KAAAr5O,IAAuDs/C,EAAAA,CAAAA;AAMjE,yBAHmB,cAAA,OAATryB,OACRA,KAAMqrN,GAAiBrrN,EAAAA,EAAKG,GAAAA,CAAAA,IAEvBH;gBAAAA;cAAAA,CAAAA;YAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,mBAAAA,OAMf,SAAgBI,IAAAA;AAEdA,YAAAA,KAAWA,MAAY/nB,KAAK+kF,SAAAA,EAAWh9D;AAEvC,gBAAM6wG,KAAU54H,KAAKg0O,WAAAA,GAEf3uK,KAAU,SAAVA,GAAU4uK,IAAAA;AACd,qBAA0B,cAAA,OAAdA,KACH1sN,OAAAA,GAAAA,CAAAA,EAAO0sN,IAAS,SAAAv6M,IAAAA;AAAI,uBAAI2rC,GAAQ3rC,EAAAA;cAAAA,CAAAA,IAGlC,WAAA;AACL,oBAAIzR,KAAS;AACb,oBAAA;AACEA,kBAAAA,KAASgsN,GAAO,MAAA,QAAP,SAAA;gBAAA,SAEJh5O,IAAP;AACEgtB,kBAAAA,KAAS,EAAC/nB,MAAM8tC,GAAAA,gBAAgBvnC,OAAAA,MAAay6B,SAASkG,OAAAA,GAAAA,cAAAA,EAAensC,EAAAA,EAAAA;gBAAAA,UAJvE;AAOE,yBAAOgtB;gBAAAA;cAAAA;YAAAA;AAKb,mBAAOV,OAAAA,GAAAA,CAAAA,EAAOqxG,IAAS,SAAA/wD,IAAAA;AAAa,qBAAIC,OAAAA,GAAAA,CAAAA,EAAoBzC,GAASwC,EAAAA,GAAiB9/C,EAAAA;YAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,sBAAAA,OAGxF,WAAA;AAAsB,gBAAD9sB,KAAA;AACnB,mBAAO,WAAA;AACL,qBAAOotB,GAAA,EAAc,CAAA,GAAIptB,GAAK6sB,UAAAA,CAAAA;YAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,yBAAAA,OAIlC,SAAsBuf,IAAAA;AAAS,gBAADltC,KAAA;AAC5B,mBAAO,SAAC4tB,IAAAA;AACN,qBAAOo7C,GAAAA,EAAW,CAAA,GAAIhpE,GAAKm4O,0BAA0BvqN,EAAAA,GAAW5tB,GAAKs4O,MAAAA,GAASprM,EAAAA;YAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAAAA;AAMpF,iBAAS2qM,GAAet3F,IAASzb,IAASi1G,IAAAA;AACxC,cAAG/tN,OAAAA,GAAAA,CAAAA,EAASu0H,EAAAA,KAAAA,CAAa32I,OAAAA,GAAAA,CAAAA,EAAQ22I,EAAAA;AAC/B,mBAAOhvI,GAAAA,EAAM,CAAA,GAAIgvI,EAAAA;AAGnB,cAAGtzH,OAAAA,GAAAA,CAAAA,EAAOszH,EAAAA;AACR,mBAAOs3F,GAAet3F,GAAQzb,EAAAA,GAAUA,IAASi1G,EAAAA;AAGnD,cAAGnwO,OAAAA,GAAAA,CAAAA,EAAQ22I,EAAAA,GAAU;AAAC,gBAAD3gJ,IACbo8G,KAAwC,YAAjC+9H,GAAcC,iBAA6Bl1G,GAAQ35C,cAAAA,IAAkB,CAAA;AAElF,mBAAO53D,GAAA,EAAA3zB,KAAA81B,GAAA,EAAA6qH,EAAAA,EAAO,KAAPA,IACF,SAAA/0C,IAAAA;AAAM,qBAAIqsI,GAAersI,IAAQs5B,IAASi1G,EAAAA;YAAAA,CAAAA,CAAAA,EADxC,KAAAn6O,IAECk4O,IAAc97H,EAAAA;UAAAA;AAGxB,iBAAO,CAAA;QAAA;AAGT,iBAASg8H,GAAcz3F,IAASj+G,IAAAA;AAA6B,cAAD/hC,KAAA,MAAAX,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAJ,CAAA,GAAdq6O,KAAkBr6O,GAAlBq6O,WACpCC,KAAkBD;AAQtB,iBAPGjuN,OAAAA,GAAAA,CAAAA,EAASu0H,EAAAA,KAAAA,CAAa32I,OAAAA,GAAAA,CAAAA,EAAQ22I,EAAAA,KACC,cAAA,OAAtBA,GAAQ3c,cAChBs2G,KAAAA,MACArB,GAAiBt4F,GAAQ3c,SAAAA,EAAW3kI,KAAK4G,MAAMy8B,EAAAA,IAIhDrV,OAAAA,GAAAA,CAAAA,EAAOszH,EAAAA,IACDy3F,GAAc/4O,KAAK4G,MAAM06I,GAAQj+G,EAAAA,GAASA,IAAQ,EAAE23M,WAAWC,GAAAA,CAAAA,IAErEtwO,OAAAA,GAAAA,CAAAA,EAAQ22I,EAAAA,IACF7qH,GAAA,EAAA6qH,EAAAA,EAAO,KAAPA,IAAY,SAAA/0C,IAAAA;AAAM,mBAAIwsI,GAAc/4O,KAAKsB,IAAMirG,IAAQlpE,IAAQ,EAAE23M,WAAWC,GAAAA,CAAAA;UAAAA,CAAAA,IAG9EA;QAAAA;AAMT,iBAASpC,KAAAA;AAA+B,cAAlB97H,KAAiB,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAZ,CAAA,GAAIjnE,KAAQ,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAJ,CAAA;AAEjC,cAAA,CAAI/oB,OAAAA,GAAAA,CAAAA,EAASgwF,EAAAA;AACX,mBAAO,CAAA;AAET,cAAA,CAAIhwF,OAAAA,GAAAA,CAAAA,EAAS+oB,EAAAA;AACX,mBAAOinE;AAKNjnE,UAAAA,GAAI27C,mBACLtjE,OAAAA,GAAAA,CAAAA,EAAO2nB,GAAI27C,gBAAgB,SAACypJ,IAAW95O,IAAAA;AACrC,gBAAM+/H,KAAMpkB,GAAKnrB,cAAcmrB,GAAKnrB,WAAWxwF,EAAAA;AAC5C+/H,YAAAA,MAAO5xG,GAAA,EAAc4xG,EAAAA,KACtBpkB,GAAKnrB,WAAWxwF,EAAAA,IAAOQ,GAAA,EAAAu/H,EAAAA,EAAG,KAAHA,IAAW,CAAC+5G,EAAAA,CAAAA,GAAAA,OAC5BplM,GAAI27C,eAAerwF,EAAAA,KAClB+/H,OACRpkB,GAAKnrB,WAAWxwF,EAAAA,IAAO,CAAC+/H,IAAK+5G,EAAAA,GAAAA,OACtBplM,GAAI27C,eAAerwF,EAAAA;UAAAA,CAAAA,GAI1BjB,GAAA,EAAY21C,GAAI27C,cAAAA,EAAgB1sF,UAAAA,OAI3B+wC,GAAI27C;AAQf,cAAQ4tC,KAAiBtiB,GAAjBsiB;AACR,cAAGtyG,OAAAA,GAAAA,CAAAA,EAASsyG,EAAAA;AACV,qBAAQzyF,MAAayyF,IAAc;AACjC,kBAAM87G,KAAe97G,GAAazyF,EAAAA;AAClC,kBAAI7f,OAAAA,GAAAA,CAAAA,EAASouN,EAAAA,GAAb;AAIA,oBAAQv6G,KAA+Bu6G,GAA/Bv6G,aAAab,KAAkBo7G,GAAlBp7G;AAGrB,oBAAIhzG,OAAAA,GAAAA,CAAAA,EAAS6zG,EAAAA;AACX,2BAAQm5G,MAAcn5G,IAAa;AACjC,wBAQ6J1gI,IARzJ2uB,KAAS+xG,GAAYm5G,EAAAA;AAQzB,wBALIxqN,GAAA,EAAcV,EAAAA,MAChBA,KAAS,CAACA,EAAAA,GACV+xG,GAAYm5G,EAAAA,IAAclrN,KAGzBinB,MAAOA,GAAIupF,gBAAgBvpF,GAAIupF,aAAazyF,EAAAA,KAAckJ,GAAIupF,aAAazyF,EAAAA,EAAWg0F,eAAe9qF,GAAIupF,aAAazyF,EAAAA,EAAWg0F,YAAYm5G,EAAAA;AAC9IjkM,sBAAAA,GAAIupF,aAAazyF,EAAAA,EAAWg0F,YAAYm5G,EAAAA,IAAcn4O,GAAA,EAAA1B,KAAA0gI,GAAYm5G,EAAAA,CAAAA,EAAZ,KAAA75O,IAA+B41C,GAAIupF,aAAazyF,EAAAA,EAAWg0F,YAAYm5G,EAAAA,CAAAA;kBAAAA;AAOnI,oBAAIhtN,OAAAA,GAAAA,CAAAA,EAASgzG,EAAAA;AACX,2BAAQy6G,MAAgBz6G,IAAe;AACrC,wBAQmKp+H,IAR/Jg9B,KAAWohG,GAAcy6G,EAAAA;AAQ7B,wBALIjrN,GAAA,EAAcoP,EAAAA,MAChBA,KAAW,CAACA,EAAAA,GACZohG,GAAcy6G,EAAAA,IAAgB77M,KAG7BmX,MAAOA,GAAIupF,gBAAgBvpF,GAAIupF,aAAazyF,EAAAA,KAAckJ,GAAIupF,aAAazyF,EAAAA,EAAWmzF,iBAAiBjqF,GAAIupF,aAAazyF,EAAAA,EAAWmzF,cAAcy6G,EAAAA;AAClJ1kM,sBAAAA,GAAIupF,aAAazyF,EAAAA,EAAWmzF,cAAcy6G,EAAAA,IAAgB54O,GAAA,EAAAD,KAAAo+H,GAAcy6G,EAAAA,CAAAA,EAAd,KAAA74O,IAAmCm0C,GAAIupF,aAAazyF,EAAAA,EAAWmzF,cAAcy6G,EAAAA,CAAAA;kBAAAA;cAAAA;YAAAA;AAQjJ,iBAAOzwK,GAAAA,EAAWgzC,IAAMjnE,EAAAA;QAAAA;AAuC1B,iBAAS8jM,GAAiBzwO,IAAAA;AAEjB,cAADpI,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAJ,CAAA,GAAIO,KAAAP,GADNq6O,WAAAA,KAAAA,WACM95O,MAAAA;AACN,iBAAiB,cAAA,OAAP6H,KACDA,KAGF,WAAA;AACL,gBAAA;AAAI,uBAAApI,IAAAO,KAAA,UAAA,QADas/C,KACb,IAAA,MAAAt/C,EAAA,GAAA8K,KAAA,GAAAA,KAAA9K,IAAA8K;AADaw0C,gBAAAA,GACbx0C,EAAA,IAAA,UAAAA,EAAA;AACF,qBAAOjD,GAAGnJ,KAAH,MAAAmJ,IAAEvH,GAAA,EAAAb,KAAA,CAAM6F,IAAAA,CAAAA,EAAN,KAAA7F,IAAe6/C,EAAAA,CAAAA;YAAAA,SAClB/+C,IAAN;AAIA,qBAHGu5O,MACDzrN,QAAQtiB,MAAMxL,EAAAA,GAET;YAAA;UAAA;QAAA;AAKb,iBAAS02O,GAAe8C,IAAaC,IAAc5sN,IAAAA;AAWjD,iBA5eF,SAAmC2sN,IAAaC,IAAc5sN,IAAAA;AAE5D,gBAAI6sN,KAAa,CAIf9sN,OAAAA,GAAAA,CAAAA,EAAuBC,EAAAA,CAAAA,GAGnB8sN,KAAmBtuN,GAAAA,EAAIuuN,wCAAwC5sK,GAAAA;AAErE,mBAAOG,OAAAA,GAAAA,CAAAA,EAAYqsK,IAAaC,IAAcE,GAC5C1sK,GAAAA,EAAe,MAAA,QAAKysK,EAAAA,CAAAA,CAAAA;UAAAA,EAsdkBF,IAAaC,IAAc5sN,EAAAA;QAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,IC3ehD28G,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AACnB,mBAAA/pI,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,YAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,eAmGf,WAAA;AACX,kBAAAuB,KAAmDvB,GAAK+rB,OAAlDo6G,KAAN5kI,GAAM4kI,eAAeltF,KAArB13C,GAAqB03C,KAAK7M,KAA1B7qC,GAA0B6qC,aAAaszF,KAAvCn+H,GAAuCm+H,SACjC07G,KAAkBp7O,GAAKq7O,mBAAAA;AACzB37G,cAAAA,MAAAA,WAAW07G,MAEbp7O,GAAK0qC,uBAAAA,GAEPy7F,GAAcl9D,KAAK,CAAC,cAAchwB,IAAK7M,EAAAA,GAAAA,CAAeszF,EAAAA;YAAAA,CAAAA,GA1G5B9wG,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,iBA6Gd,WAAA;AACZ,cAAAA,GAAKs5F,SAAS,EAACgiJ,iBAAAA,CAAkBt7O,GAAKkgD,MAAMo7L,gBAAAA,CAAAA;YAAAA,CAAAA,GA9GlB1sN,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,iBAiHb,WAAA;AACb,cAAAA,GAAKs5F,SAAS,EAACgiJ,iBAAAA,CAAkBt7O,GAAKkgD,MAAMo7L,gBAAAA,CAAAA;YAAAA,CAAAA,GAlHlB1sN,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,aAqHhB,WAAA;AACV,cAAAA,GAAKs5F,SAAS,EAAEiiJ,mBAAAA,KAAmB,CAAA;YAAA,CAAA,GAtHT3sN,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,sBAyHP,WAAA;AACnB,kBAAAuB,KAKIvB,GAAK+rB,OAJPiX,KADFzhC,GACEyhC,eACAhJ,KAFFz4B,GAEEy4B,MACA1E,KAHF/zB,GAGE+zB,QACA88D,KAJF7wF,GAIE6wF;AAGF,qBAAGA,KACMpvD,GAAcuH,oBAAoB6nD,GAAStsE,KAAAA,CAAAA,IAG7Ckd,GAAcuH,oBAAoB,CAAC,SAASvQ,IAAM1E,EAAAA,CAAAA;YAAAA,CAAAA,GArI/B1G,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,0BAwIH,WAAA;AACvB,kBAAAuB,KAKIvB,GAAK+rB,OAJP8b,KADFtmC,GACEsmC,aACA7N,KAFFz4B,GAEEy4B,MACA1E,KAHF/zB,GAGE+zB,QACA88D,KAJF7wF,GAIE6wF;AAIF,qBAAGA,KACMvqD,GAAY6C,uBAAuB0nD,GAAStsE,KAAAA,CAAAA,IAG9C+hB,GAAY6C,uBAAuB,CAAC,SAAS1Q,IAAM1E,EAAAA,CAAAA;YAAAA,CAAAA;AAlJ1D,gBAAQgmN,KAAoBvvN,GAAM2c,WAAAA,EAA1B4yM;AAHkB,mBAK1Bt7O,GAAKkgD,QAAQ,EACXo7L,iBAAAA,SAAiBA,MAAgD,WAApBA,IAC7CC,mBAAAA,MAAmB,GAPKv7O;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,mBAAA,OAkD5B,SAAgB8nF,IAAW/8D,IAAAA;AAAQ,gBAAD/qB,IACxB8qC,KAAoC/f,GAApC+f,IAAIo0F,KAAgCn0G,GAAhCm0G,iBACZp0H,MAA0G48B,GAD9D3c,GAAf2c,YAAAA,GACrB8yM,KAAR1vO,GAAQ0vO,cAAc90G,KAAtB56H,GAAsB46H,aAAa+0G,KAAnC3vO,GAAmC2vO,oBAAoBC,KAAvD5vO,GAAuD4vO,wBAAwBC,KAA/E7vO,GAA+E6vO,wBACzE57G,KAAcG,GAAgBH,YAAAA,GAC9B3zF,KAAcN,GAAG3jB,MAAM,CAAC,aAAa,uBAAA,CAAA,KAA6B2jB,GAAG3jB,MAAM,CAAC,aAAa,aAAA,CAAA,KAAmBkkB,OAAAA,GAAAA,CAAAA,EAAKP,GAAG1rC,IAAI,WAAA,GAAc2rB,GAAMiO,MAAMjO,GAAMuJ,MAAAA,KAAWwW,GAAG1rC,IAAI,IAAA,GAC1K8mI,KAAa,CAAC,cAAcn7G,GAAMktB,KAAK7M,EAAAA,GACvCwvM,KAAuBl1G,MAA+B,YAAhBA,IACtC0E,KAAgB,GAAA,EAAAuwG,EAAAA,EAAsB,KAAtBA,IAA+B5vN,GAAMuJ,MAAAA,KAAW,MAAA,WAAavJ,GAAMq/G,gBACvFr/G,GAAMiX,cAAc03B,iBAAiB3uC,GAAMiO,MAAMjO,GAAMuJ,MAAAA,IAAUvJ,GAAMq/G,gBACnEnyE,KAAWntB,GAAG3jB,MAAM,CAAC,aAAa,UAAA,CAAA,KAAgB4D,GAAMiX,cAAci2B,SAAAA;AAE5E,mBAAO,EACL7sB,aAAAA,IACAwvM,sBAAAA,IACA77G,aAAAA,IACA07G,oBAAAA,IACAC,wBAAAA,IACAtwG,eAAAA,IACAnyE,UAAAA,IACAksE,cAAcp5G,GAAMgrC,cAAcouE,aAAalsE,EAAAA,GAC/CymE,SAASQ,GAAgBR,QAAQwH,IAA6B,WAAjBs0G,EAAAA,GAC7CK,WAAWv6O,GAAA,EAAAN,KAAA,SAAA,OAAS+qB,GAAMiO,MAAjB,GAAA,CAAA,EAAA,KAAAh5B,IAAyB+qB,GAAMuJ,MAAAA,GACxC+hC,UAAUtrC,GAAMiX,cAAcu3B,YAAYxuC,GAAMiO,MAAMjO,GAAMuJ,MAAAA,GAC5Dw6D,SAAS/jE,GAAMiX,cAAcw3B,WAAWzuC,GAAMiO,MAAMjO,GAAMuJ,MAAAA,EAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,qBAAAA,OAI9D,WAAA;AACE,gBAAQoqG,KAAYp5H,KAAKylB,MAAjB2zG,SACF07G,KAAkB90O,KAAK+0O,mBAAAA;AAE1B37G,YAAAA,MAAAA,WAAW07G,MACZ90O,KAAKokC,uBAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,oCAAAA,OAIT,SAAiC8gD,IAAAA;AAC/B,gBAAQn0B,KAAsBm0B,GAAtBn0B,UAAUqoE,KAAYl0C,GAAZk0C,SACZ07G,KAAkB90O,KAAK+0O,mBAAAA;AAE1BhkL,YAAAA,OAAa/wD,KAAKylB,MAAMsrC,YACzB/wD,KAAKgzF,SAAS,EAAEiiJ,mBAAAA,MAAmB,CAAA,GAGlC77G,MAAAA,WAAW07G,MACZ90O,KAAKokC,uBAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAyDT,WAAA;AACE,gBAAAnpC,KA6BI+E,KAAKylB,OA5BH+vN,KADNv6O,GACEuqC,IACAmN,KAFF13C,GAEE03C,KACAjf,KAHFz4B,GAGEy4B,MACA1E,KAJF/zB,GAIE+zB,QACA2jC,KALF13D,GAKE03D,UACAksE,KANF5jI,GAME4jI,cACA/4F,KAPF7qC,GAOE6qC,aACA2zF,KARFx+H,GAQEw+H,aACAL,KATFn+H,GASEm+H,SACAm8G,KAVFt6O,GAUEs6O,WACAzwG,KAXF7pI,GAWE6pI,eACA/zE,KAZF91D,GAYE81D,UACAy4B,KAbFvuF,GAaEuuF,SACA2rJ,KAdFl6O,GAcEk6O,oBACAC,KAfFn6O,GAeEm6O,wBACAE,KAhBFr6O,GAgBEq6O,sBACAxpJ,KAjBF7wF,GAiBE6wF,UACApvD,KAlBFzhC,GAkBEyhC,eACA6E,KAnBFtmC,GAmBEsmC,aACAq5C,KApBF3/E,GAoBE2/E,cACAx4C,KArBFnnC,GAqBEmnC,YACAw3F,KAtBF3+H,GAsBE2+H,iBACAiG,KAvBF5kI,GAuBE4kI,eACAvxE,KAxBFrzD,GAwBEqzD,aACAmC,KAzBFx1D,GAyBEw1D,eACAoyE,KA1BF5nI,GA0BE4nI,aACAx9F,KA3BFpqC,GA2BEoqC,eACA9iC,KA5BFtH,GA4BEsH,IAGIkzO,KAAY76J,GAAc,WAAA,GAE1Bk6J,KAAkB90O,KAAK+0O,mBAAAA,KAAwB5qO,OAAAA,GAAAA,GAAAA,EAAAA,GAE/CurO,KAAiBlxO,OAAAA,GAAAA,MAAAA,EAAO,EAC5BghC,IAAIsvM,IACJniM,KAAAA,IACAjf,MAAAA,IACAiiN,SAASH,GAAa3zN,MAAM,CAAC,aAAa,SAAA,CAAA,KAAe,IACzD40D,YAAYq+J,GAAgBh7O,IAAI,YAAA,KAAiB07O,GAAa3zN,MAAM,CAAC,aAAa,YAAA,CAAA,KAAA,OAClFmN,QAAAA,IACA2jC,UAAAA,IACAksE,cAAAA,IACA/4F,aAAAA,IACA8vM,qBAAqBd,GAAgBjzN,MAAM,CAAC,aAAa,uBAAA,CAAA,GACzD43G,aAAAA,IACAL,SAAAA,IACAm8G,WAAAA,IACAzwG,eAAAA,IACAt7C,SAAAA,IACA2rJ,oBAAAA,IACAC,wBAAAA,IACAE,sBAAAA,IACAL,mBAAmBj1O,KAAK45C,MAAMq7L,mBAC9BD,iBAAiBh1O,KAAK45C,MAAMo7L,gBAAAA,CAAAA;AAG9B,mBACEhlN,GAAA,EAAA,cAACylN,IAAD,EACElwM,WAAWmwM,IACX3kL,UAAUA,IACVy4B,SAASA,IACT4vC,SAASA,IAETy8G,aAAa71O,KAAK61O,aAClBC,eAAe91O,KAAK81O,eACpBC,eAAe/1O,KAAK+1O,eACpBC,WAAWh2O,KAAKg2O,WAChBlqJ,UAAUA,IAEVvqD,aAAcA,IACd7E,eAAgBA,IAChBmmG,aAAaA,IACbx9F,eAAeA,IACfw6F,eAAgBA,IAChBjG,iBAAkBA,IAClBtrE,aAAcA,IACdmC,eAAgBA,IAChBmqB,cAAeA,IACfx4C,YAAaA,IACb7/B,IAAIA,GAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA3OoCmkI,GAAAA,aAAAA;AAAAA,QAAAA,GAAAA,EAA3BjC,IAAAA,gBA2CG,EACpBhL,aAAAA,MACA1oE,UAAU,MACV+zE,eAAAA,MACAqwG,oBAAAA,OACAC,wBAAAA,MAAwB,CAAA;AAAA,YCnDP5vJ,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,aAAAA,OAEnB,WAAA;AACE,gBAAAvqF,KAAwC+E,KAAKylB,OAAvCm1D,KAAN3/E,GAAM2/E,cACAq7J,KADNh7O,GAAoB2+H,gBACeruF,QAAAA,GAC7BhP,KAAYq+C,GAAaq7J,IAAAA,IAAY;AAC3C,mBAAO15M,MAAwB,WAAA;AAAA,qBAAKvM,GAAA,EAAA,cAAA,MAAA,MAAA,4BAAkCimN,IAAlC,IAAA;YAAA;UAAA,EAAA,GAAA,EAAA,KAAA,UAAA,OAGtC,WAAA;AACE,gBAAMC,KAASl2O,KAAKm2O,UAAAA;AAEpB,mBACEnmN,GAAA,EAAA,cAACkmN,IAAD,IAAA;UAAA,EAAA,CAAA,CAAA,GAAAx7O;QAAA,EAb2B04F,GAAAA,EAAM72D,SAAAA;AAuBvCipD,WAAI0zB,eAAe,CAAA;AAAA,YCvBEk9H,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,SACZ,WAAA;AACiB,cAAAr8O,GAAK0rB,MAArB6oC,YAEMH,gBAAAA,KAAgB;YAAA,CAAA,GAAAp0D;UAAA;AAAA,iBAAAytB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAG9B,WAAA;AAAU,gBAADO,IACPd,KAAkG6F,KAAKylB,OAAjGgrC,KAANt2D,GAAMs2D,eAAenC,KAArBn0D,GAAqBm0D,aAAassB,KAAlCzgF,GAAkCygF,cAAc13C,KAAhD/oC,GAAgD+oC,cAAcxG,KAA9DviC,GAA8DuiC,eAA9D1V,KAAA7sB,GAA6EoI,GAAM4/B,KAAAA,KAAAA,WAAnFnb,KAAyF,CAAA,IAAzFA,IACIgsC,KAAcvC,GAAc6tE,iBAAAA,GAC1B+3G,KAAQz7J,GAAa,OAAA;AAE3B,mBACE5qD,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,YAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,cAAA,CAAA,GACf7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,WAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,iBAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,MAAA,0BAAA,GACAA,GAAA,EAAA,cAAA,UAAA,EAAQ9vB,MAAK,UAAS24D,WAAU,eAAcokE,SAAUj9H,KAAKy5B,MAAAA,GAC3DzJ,GAAA,EAAA,cAAA,OAAA,EAAKuzB,OAAM,MAAKq3D,QAAO,KAAA,GACrB5qF,GAAA,EAAA,cAAA,OAAA,EAAK+5B,MAAK,UAASozE,WAAU,SAAA,CAAA,CAAA,CAAA,CAAA,GAInCntG,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,mBAAA,GAGXhpC,GAAA,EAAA50B,KAAA+3D,GAAY52C,SAAAA,CAAAA,EAAZ,KAAAnhB,IAA2B,SAAE24C,IAAYp5C,IAAAA;AACvC,qBAAOw1B,GAAA,EAAA,cAACqmN,IAAD,EAAO77O,KAAMA,IACN2nC,KAAKA,IACL6wB,aAAcpf,IACdgnC,cAAeA,IACf13C,cAAeA,IACfutB,eAAgBA,IAChBnC,aAAcA,IACd5xB,eAAgBA,GAAAA,CAAAA;YAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EArCF02D,GAAAA,EAAM72D,SAAAA,GCAjC+5M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAQnB,WAAA;AACE,gBAAAr7O,KAAyD+E,KAAKylB,OAAxDo5G,KAAN5jI,GAAM4jI,cAAc03G,KAApBt7O,GAAoBs7O,WAAWt5G,KAA/BhiI,GAA+BgiI,SAGzBm5G,MAAqBx7J,GAH3B3/E,GAAwC2/E,cAGA,sBAAA,IAAsB;AAE9D,mBACE5qD,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,eAAA,GACb7oC,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAWgmE,KAAe,yBAAyB,0BAA0B5B,SAASA,GAAAA,GAC5FjtG,GAAA,EAAA,cAAA,QAAA,MAAA,WAAA,GACAA,GAAA,EAAA,cAAA,OAAA,EAAKuzB,OAAM,MAAKq3D,QAAO,KAAA,GACrB5qF,GAAA,EAAA,cAAA,OAAA,EAAK+5B,MAAO80E,KAAe,YAAY,aAAc1B,WAAY0B,KAAe,YAAY,YAAA,CAAA,CAAA,CAAA,GAGhG03G,MAAavmN,GAAA,EAAA,cAAComN,IAAD,IAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA17O;QAAA,EAtBqB04F,GAAAA,EAAM72D,SAAAA,GCA3Bi6M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAUnB,WAAA;AACE,gBAAAv7O,KAAmE+E,KAAKylB,OAAhE6oC,KAARrzD,GAAQqzD,aAAamC,KAArBx1D,GAAqBw1D,eAAe/zB,KAApCzhC,GAAoCyhC,eAAek+C,KAAnD3/E,GAAmD2/E,cAE7ChoB,KAAsBl2B,GAAck2B,oBAAAA,GACpC6jL,KAA0BhmL,GAAc8tE,uBAAAA,GAExC+3G,KAAe17J,GAAa,cAAA;AAElC,mBAAOhoB,KACL5iC,GAAA,EAAA,cAACsmN,IAAD,EACEr5G,SAAS,WAAA;AAAA,qBAAM3uE,GAAYH,gBAAgBsoL,EAAAA;YAAAA,GAC3C53G,cAAAA,CAAAA,CAAgBpuE,GAAcgB,WAAAA,EAAajzD,MAC3C+3O,WAAAA,CAAAA,CAAa9lL,GAAc6tE,iBAAAA,GAC3B1jD,cAAcA,GAAAA,CAAAA,IAEd;UAAA,EAAA,CAAA,CAAA,GAAAlgF;QAAA,EAzB2C04F,GAAAA,EAAM72D,SAAAA,GCApCm6M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,WAMV,SAACz7O,IAAAA;AACRA,cAAAA,GAAEitM,gBAAAA;AACF,kBAAMjrE,KAAYljI,GAAK0rB,MAAjBw3G;AAEHA,cAAAA,MACDA,GAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAIJ,WAAA;AACE,gBAAM4B,KAAiB7+H,KAAKylB,MAAtBo5G;AAEN,mBACE7uG,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAWgmE,KAAe,8BAA8B,+BAC9D,cAAYA,KAAe,gCAAgC,iCAC3D5B,SAASj9H,KAAKi9H,QAAAA,GACdjtG,GAAA,EAAA,cAAA,OAAA,EAAKuzB,OAAM,MAAKq3D,QAAO,KAAA,GACrB5qF,GAAA,EAAA,cAAA,OAAA,EAAK+5B,MAAO80E,KAAe,YAAY,aAAc1B,WAAY0B,KAAe,YAAY,YAAA,CAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAAnkI;QAAA,EAvBnD04F,GAAAA,EAAM72D,SAAAA,GCCpC85M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AASnB,mBAAA37O,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,mBAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,gBAMd,SAAC+vD,IAAAA;AACb,kBAAMjwD,KAASiwD,GAATjwD;AAEN,cAAAE,GAAKs5F,SAAL1qE,GAAA,EAAA,CAAA,GAAiB9uB,IAAOiwD,EAAAA,CAAAA;YAAAA,CAAAA,GATEnhC,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,cAYhB,SAACuB,IAAAA;AACXA,cAAAA,GAAE+5K,eAAAA,GAEoBt7K,GAAK+rB,MAArB6oC,YACMD,2BAA2B30D,GAAKkgD,KAAAA;YAAAA,CAAAA,GAhBlBtxB,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,eAmBf,SAACuB,IAAAA;AACZA,cAAAA,GAAE+5K,eAAAA;AAEF,kBAAA76K,KAAmCT,GAAK+rB,OAAlC6oC,KAANn0D,GAAMm0D,aAAa0E,KAAnB74D,GAAmB64D,aACf2jL,KAAQ9mN,GAAA,EAAAmjC,EAAAA,EAAW,KAAXA,IAAiB,SAACvrD,IAAKjN,IAAAA;AACjC,uBAAOA;cAAAA,CAAAA,EACN8H,QAAAA;AAEH,cAAA5I,GAAKs5F,SAAStlE,GAAA,EAAAipN,EAAAA,EAAK,KAALA,IAAa,SAACvoO,IAAMq7C,IAAAA;AAEhC,uBADAr7C,GAAKq7C,EAAAA,IAAQ,IACNr7C;cAAAA,GACN,CAAA,CAAA,CAAA,GAEHkgD,GAAYG,wBAAwBkoL,EAAAA;YAAAA,CAAAA,GAhCVruN,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,SAmCrB,SAACuB,IAAAA;AACNA,cAAAA,GAAE+5K,eAAAA,GACoBt7K,GAAK+rB,MAArB6oC,YAEMH,gBAAAA,KAAgB;YAAA,CAAA,GApC5Bz0D,GAAKkgD,QAAQ,CAAA,GAHalgD;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OA0C5B,WAAA;AAAU,gBAADO,IAAAd,KAAA,MACPO,KAAiEsF,KAAKylB,OAAhEutC,KAANt4D,GAAMs4D,aAAa4nB,KAAnBlgF,GAAmBkgF,cAAcnqB,KAAjC/1D,GAAiC+1D,eAAevtB,KAAhDxoC,GAAgDwoC,cAC1CqkG,KAAW3sD,GAAa,UAAA,GACxBg8J,KAASh8J,GAAa,UAAA,IAAU,GAChCi8J,KAASj8J,GAAa,QAAA,GAExBnpB,KAAahB,GAAcgB,WAAAA,GAE3BqlL,KAAiB/7O,GAAA,EAAAi4D,EAAAA,EAAW,KAAXA,IAAoB,SAACpf,IAAYp5C,IAAAA;AACpD,qBAAA,CAAA,CAASi3D,GAAW33D,IAAIU,EAAAA;YAAAA,CAAAA,GAGtBu8O,KAAsBh8O,GAAA,EAAAi4D,EAAAA,EAAW,KAAXA,IAAoB,SAAAzpC,IAAAA;AAAM,qBAA2B,aAAvBA,GAAOzvB,IAAI,MAAA;YAAA,CAAA,GAC/Dk9O,KAAmBj8O,GAAA,EAAAi4D,EAAAA,EAAW,KAAXA,IAAoB,SAAAzpC,IAAAA;AAAM,qBAA2B,aAAvBA,GAAOzvB,IAAI,MAAA;YAAA,CAAA;AAEhE,mBACEk2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,iBAAA,GAAA,CAAA,CAETk+K,GAAoBv4O,QAAQwxB,GAAA,EAAA,cAAA,QAAA,EAAMinN,UAAWj3O,KAAKk3O,WAAAA,GAEhDrnN,GAAA,EAAAknN,EAAAA,EAAmB,KAAnBA,IAAyB,SAACxtN,IAAQ/vB,IAAAA;AAChC,qBAAOw2B,GAAA,EAAA,cAACu3G,IAAD,EACL/sI,KAAKhB,IACL+vB,QAAQA,IACR/vB,MAAMA,IACNohF,cAAcA,IACdgtD,cAAcztI,GAAKytI,cACnBn2E,YAAYA,IACZvuB,cAAcA,GAAAA,CAAAA;YAAAA,CAAAA,EAEf5gC,QAAAA,GAEL0tB,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,mBAAA,GAEXk+K,GAAoBv4O,SAASs4O,GAAet4O,OAAOwxB,GAAA,EAAA,cAAC6mN,IAAD,EAAQh+K,WAAU,sBAAqBokE,SAAUj9H,KAAKm3O,YAAAA,GAAtD,QAAA,IACnDnnN,GAAA,EAAA,cAAC6mN,IAAD,EAAQ32O,MAAK,UAAS24D,WAAU,+BAAA,GAAhC,WAAA,GAEF7oC,GAAA,EAAA,cAAC6mN,IAAD,EAAQh+K,WAAU,+BAA8BokE,SAAUj9H,KAAKy5B,MAAAA,GAA/D,OAAA,CAAA,CAAA,GAMJu9M,MAAoBA,GAAiBx4O,OAAOwxB,GAAA,EAAA,cAAA,OAAA,MAC5CA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,YAAA,GACb7oC,GAAA,EAAA,cAAA,KAAA,MAAA,gJAAA,GACAA,GAAA,EAAA,cAAA,KAAA,MAAA,uFAAA,CAAA,GAGEH,GAAA,EAAA50B,KAAAF,GAAA,EAAAi4D,EAAAA,EAAW,KAAXA,IAAoB,SAAAzpC,IAAAA;AAAM,qBAA2B,aAAvBA,GAAOzvB,IAAI,MAAA;YAAA,CAAA,CAAA,EAAzC,KAAAmB,IACQ,SAACsuB,IAAQ/vB,IAAAA;AACb,qBAAQw2B,GAAA,EAAA,cAAA,OAAA,EAAKx1B,KAAMhB,GAAAA,GACjBw2B,GAAA,EAAA,cAAC4mN,IAAD,EAAQnlL,YAAaA,IACbloC,QAASA,IACT/vB,MAAOA,GAAAA,CAAAA,CAAAA;YAAAA,CAAAA,EAGjB8I,QAAAA,CAAAA,IAEC,IAAA;UAAA,EAAA,CAAA,CAAA,GAAA5H;QAAA,EA9GgB04F,GAAAA,EAAM72D,SAAAA,GCApB85M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAQnB,WAAA;AACE,gBAWIe,IAXJj9O,KAOI6F,KAAKylB,OANP8D,KADFpvB,GACEovB,QACA/vB,KAFFW,GAEEX,MACAohF,KAHFzgF,GAGEygF,cACAgtD,KAJFztI,GAIEytI,cACAn2E,KALFt3D,GAKEs3D,YACAvuB,KANF/oC,GAME+oC,cAEIm0M,KAAaz8J,GAAa,YAAA,GAC1B08J,KAAY18J,GAAa,WAAA,GAIzB16E,KAAOqpB,GAAOzvB,IAAI,MAAA;AAExB,oBAAOoG,IAAAA;cACL,KAAK;AAAUk3O,gBAAAA,KAASpnN,GAAA,EAAA,cAACqnN,IAAD,EAAY78O,KAAMhB,IACR+vB,QAASA,IACT/vB,MAAOA,IACP0pC,cAAeA,IACfuuB,YAAaA,IACbmpB,cAAeA,IACfmR,UAAW67C,GAAAA,CAAAA;AAC3C;cACF,KAAK;AAASwvG,gBAAAA,KAASpnN,GAAA,EAAA,cAACsnN,IAAD,EAAW98O,KAAMhB,IACR+vB,QAASA,IACT/vB,MAAOA,IACP0pC,cAAeA,IACfuuB,YAAaA,IACbmpB,cAAeA,IACfmR,UAAW67C,GAAAA,CAAAA;AACzC;cACF;AAASwvG,gBAAAA,KAASpnN,GAAA,EAAA,cAAA,OAAA,EAAKx1B,KAAMhB,GAAAA,GAAX,qCAAqD0G,EAAAA;YAAAA;AAGzE,mBAAQ8vB,GAAA,EAAA,cAAA,OAAA,EAAKx1B,KAAG,GAAA,OAAKhB,IAAL,OAAA,EAAA,GACZ49O,EAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA7C2BhkJ,GAAAA,EAAM72D,SAAAA,GCDpBsqG,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAMnB,WAAA;AACE,gBAAMpgI,KAAUzG,KAAKylB,MAAfhf,OAEFoN,KAAQpN,GAAM3M,IAAI,OAAA,GAClB6nC,KAAUl7B,GAAM3M,IAAI,SAAA,GACpBm6B,KAASxtB,GAAM3M,IAAI,QAAA;AAEvB,mBACEk2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,SAAA,GACb7oC,GAAA,EAAA,cAAA,KAAA,MAAKiE,IAAL,KAAgBpgB,EAAAA,GAChBmc,GAAA,EAAA,cAAA,QAAA,MAAQ2R,EAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAhBuByxD,GAAAA,EAAM72D,SAAAA,GCAxB86M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAUnB,mBAAA38O,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,YAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,YAkBlB,SAACuB,IAAAA;AACT,kBAAM8wF,KAAaryF,GAAK+rB,MAAlBsmE,UACF7xF,KAAQe,GAAEuqB,OAAOtrB,OACjB21G,KAAWxnF,GAAA,EAAc,CAAA,GAAI3uB,GAAKkgD,OAAO,EAAE1/C,OAAOA,GAAAA,CAAAA;AAEtD,cAAAR,GAAKs5F,SAAS6c,EAAAA,GACd9jB,GAAS8jB,EAAAA;YAAAA,CAAAA;AAtBT,gBAAArqG,KAAuB9L,GAAK+rB,OAAtBjsB,KAANgM,GAAMhM,MAAM+vB,KAAZ/jB,GAAY+jB,QACRrvB,KAAQR,GAAK8pE,SAAAA;AAHS,mBAK1B9pE,GAAKkgD,QAAQ,EACXpgD,MAAMA,IACN+vB,QAAQA,IACRrvB,OAAOA,GAAAA,GARiBR;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,YAAA,OAY5B,WAAA;AACE,gBAAAO,KAA2B+E,KAAKylB,OAA1BjsB,KAANyB,GAAMzB,MAAMi4D,KAAZx2D,GAAYw2D;AAEZ,mBAAOA,MAAcA,GAAW5vC,MAAM,CAACroB,IAAM,OAAA,CAAA;UAAA,EAAA,GAAA,EAAA,KAAA,UAAA,OAY/C,WAAA;AAAU,gBAADyB,IAAAd,IACPO,KAAmDsF,KAAKylB,OAAlD8D,KAAN7uB,GAAM6uB,QAAQqxD,KAAdlgF,GAAckgF,cAAc13C,KAA5BxoC,GAA4BwoC,cAAc1pC,KAA1CkB,GAA0ClB,MACpC2zF,KAAQvS,GAAa,OAAA,GACrB+rD,KAAM/rD,GAAa,KAAA,GACnBgsD,KAAMhsD,GAAa,KAAA,GACnBisD,KAAYjsD,GAAa,WAAA,GACzBwR,KAAWxR,GAAa,YAAA,IAAY,GACpCksD,KAAalsD,GAAa,cAAA,IAAc,GAC1C1gF,KAAQ8F,KAAKwjE,SAAAA,GACb75C,KAAS5uB,GAAA,EAAAE,KAAAioC,GAAaI,UAAAA,CAAAA,EAAb,KAAAroC,IAAiC,SAAAmwB,IAAAA;AAAG,qBAAIA,GAAItxB,IAAI,QAAA,MAAcN;YAAAA,CAAAA;AAE3E,mBACEw2B,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAAA,QAAA,MAAQx2B,MAAQ+vB,GAAOzvB,IAAI,MAAA,CAAA,GAD7B,gBAEEk2B,GAAA,EAAA,cAAC82G,IAAD,EAAYpzG,MAAM,CAAE,uBAAuBl6B,EAAAA,EAAAA,CAAAA,CAAAA,GAE3CU,MAAS81B,GAAA,EAAA,cAAA,MAAA,MAAA,YAAA,GACXA,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAAS1K,GAAOzvB,IAAI,aAAA,EAAA,CAAA,CAAA,GAEhCk2B,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAA,KAAA,MAAA,UAASA,GAAA,EAAA,cAAA,QAAA,MAAQzG,GAAOzvB,IAAI,MAAA,CAAA,CAAA,CAAA,GAE9Bk2B,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAA,KAAA,MAAA,QAAOA,GAAA,EAAA,cAAA,QAAA,MAAQzG,GAAOzvB,IAAI,IAAA,CAAA,CAAA,CAAA,GAE5Bk2B,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAA,SAAA,MAAA,QAAA,GAEE91B,KAAQ81B,GAAA,EAAA,cAAA,QAAA,MAAA,UAAA,IACAA,GAAA,EAAA,cAAC42G,IAAD,MAAK52G,GAAA,EAAA,cAACm9D,IAAD,EAAOjtF,MAAK,QAAO6rF,UAAW/rF,KAAK+rF,UAAWg7C,WAAAA,KAAS,CAAA,CAAA,CAAA,GAItEl3G,GAAA,EAAA11B,KAAAwvB,GAAOvN,SAAAA,CAAAA,EAAP,KAAAjiB,IAAuB,SAACsM,IAAOjM,IAAAA;AAC7B,qBAAOw1B,GAAA,EAAA,cAAC62G,IAAD,EAAWpgI,OAAQA,IACRjM,KAAMA,GAAAA,CAAAA;YAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA1EI44F,GAAAA,EAAM72D,SAAAA,GCCzB+6M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAQnB,mBAAA58O,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,YAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,YAsBlB,SAACuB,IAAAA;AACT,kBAAM8wF,KAAaryF,GAAK+rB,MAAlBsmE,UACNrxF,KAAsBO,GAAEuqB,QAAlBtrB,KAANQ,GAAMR,OAAOV,KAAbkB,GAAalB,MAET+W,KAAW7W,GAAKkgD,MAAM1/C;AAC1BqW,cAAAA,GAAS/W,EAAAA,IAAQU,IAEjBR,GAAKs5F,SAAS,EAAE94F,OAAOqW,GAAAA,CAAAA,GAEvBw7E,GAASryF,GAAKkgD,KAAAA;YAAAA,CAAAA;AA7Bd,gBAAAp0C,KAAuB9L,GAAK+rB,OAAtB8D,KAAN/jB,GAAM+jB,QAAQ/vB,KAAdgM,GAAchM,MAGV21D,KADQz1D,GAAK8pE,SAAAA,EACIrU;AALK,mBAO1Bz1D,GAAKkgD,QAAQ,EACXpgD,MAAMA,IACN+vB,QAAQA,IACRrvB,OAAQi1D,KAAgB,EACtBA,UAAUA,GAAAA,IADO,CAAA,EAAA,GAVKz1D;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,YAAA,OAgB5B,WAAA;AACE,gBAAAO,KAA2B+E,KAAKylB,OAA1BgsC,KAANx2D,GAAMw2D,YAAYj4D,KAAlByB,GAAkBzB;AAElB,mBAAOi4D,MAAcA,GAAW5vC,MAAM,CAACroB,IAAM,OAAA,CAAA,KAAa,CAAA;UAAA,EAAA,GAAA,EAAA,KAAA,UAAA,OAe5D,WAAA;AAAU,gBAADyB,IAAAd,IACPO,KAAmDsF,KAAKylB,OAAlD8D,KAAN7uB,GAAM6uB,QAAQqxD,KAAdlgF,GAAckgF,cAAcphF,KAA5BkB,GAA4BlB,MAAM0pC,KAAlCxoC,GAAkCwoC,cAC5BiqD,KAAQvS,GAAa,OAAA,GACrB+rD,KAAM/rD,GAAa,KAAA,GACnBgsD,KAAMhsD,GAAa,KAAA,GACnBisD,KAAYjsD,GAAa,WAAA,GACzBksD,KAAalsD,GAAa,cAAA,IAAc,GACxCwR,KAAWxR,GAAa,YAAA,IAAY,GACtCzrB,KAAWnvD,KAAKwjE,SAAAA,EAAWrU,UAC3BxlC,KAAS5uB,GAAA,EAAAE,KAAAioC,GAAaI,UAAAA,CAAAA,EAAb,KAAAroC,IAAiC,SAAAmwB,IAAAA;AAAG,qBAAIA,GAAItxB,IAAI,QAAA,MAAcN;YAAAA,CAAAA;AAE3E,mBACEw2B,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MAAA,uBAAuBA,GAAA,EAAA,cAAC82G,IAAD,EAAYpzG,MAAM,CAAE,uBAAuBl6B,EAAAA,EAAAA,CAAAA,CAAAA,GAChE21D,MAAYn/B,GAAA,EAAA,cAAA,MAAA,MAAA,YAAA,GACdA,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAAS1K,GAAOzvB,IAAI,aAAA,EAAA,CAAA,CAAA,GAEhCk2B,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAA,SAAA,MAAA,WAAA,GAEEm/B,KAAWn/B,GAAA,EAAA,cAAA,QAAA,MAAA,KAASm/B,IAAT,GAAA,IACAn/B,GAAA,EAAA,cAAC42G,IAAD,MAAK52G,GAAA,EAAA,cAACm9D,IAAD,EAAOjtF,MAAK,QAAO62D,UAAS,YAAWv9D,MAAK,YAAWuyF,UAAW/rF,KAAK+rF,UAAWg7C,WAAAA,KAAS,CAAA,CAAA,CAAA,GAG/G/2G,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAA,SAAA,MAAA,WAAA,GAEIm/B,KAAWn/B,GAAA,EAAA,cAAA,QAAA,MAAA,UAAA,IACAA,GAAA,EAAA,cAAC42G,IAAD,MAAK52G,GAAA,EAAA,cAACm9D,IAAD,EAAO65C,cAAa,gBACbxtI,MAAK,YACL0G,MAAK,YACL6rF,UAAW/rF,KAAK+rF,SAAAA,CAAAA,CAAAA,CAAAA,GAI3Cl8D,GAAA,EAAA11B,KAAAwvB,GAAOvN,SAAAA,CAAAA,EAAP,KAAAjiB,IAAuB,SAACsM,IAAOjM,IAAAA;AAC7B,qBAAOw1B,GAAA,EAAA,cAAC62G,IAAD,EAAWpgI,OAAQA,IACRjM,KAAMA,GAAAA,CAAAA;YAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAhFG44F,GAAAA,EAAM72D,SAAAA;ACK9B,iBAASkwD,GAAQhnE,IAAAA;AAC9B,cAAQwxD,KAAiDxxD,GAAjDwxD,SAASsgK,KAAwC9xN,GAAxC8xN,WAAW38J,KAA6Bn1D,GAA7Bm1D,cAAcx4C,KAAe3c,GAAf2c,YAEpCgqD,KAAWxR,GAAa,YAAA,IAAY,GACpC2R,KAAgB3R,GAAa,eAAA;AAEnC,iBAAI3D,KAGFjnD,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,UAAA,GACZoe,GAAQn9E,IAAI,aAAA,IACXk2B,GAAA,EAAA,cAAA,WAAA,EAAS6oC,WAAU,mBAAA,GACjB7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,0BAAA,GAAf,qBAAA,GACA7oC,GAAA,EAAA,cAAA,KAAA,MACEA,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAAQgjD,GAAQn9E,IAAI,aAAA,EAAA,CAAA,CAAA,CAAA,IAGhC,MACHy9O,MAAatgK,GAAQ/wE,IAAI,OAAA,IACxB8pB,GAAA,EAAA,cAAA,WAAA,EAAS6oC,WAAU,mBAAA,GACjB7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,0BAAA,GAAf,eAAA,GACA7oC,GAAA,EAAA,cAACu8D,IAAD,EAAenqD,YAAaA,IAAaloC,OAAO6pB,OAAAA,GAAAA,CAAAA,EAAUkzD,GAAQn9E,IAAI,OAAA,CAAA,EAAA,CAAA,CAAA,IAEtE,IAAA,IAjBY;QAAA;AAAA,YAAA,KAAAY,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GCND88O,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,aAsBP,SAACh9O,IAAAA;AAA6C,kBAADL,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAP,CAAA,GAAOO,KAAAP,GAArCs9O,mBAAAA,KAAAA,WAAqC/8O,MAAAA;AACpB,4BAAA,OAAxBX,GAAK0rB,MAAMkpE,YACpB50F,GAAK0rB,MAAMkpE,SAASn0F,IAAK,EACvBi9O,mBAAAA,GAAAA,CAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,gBAKS,SAAAx8O,IAAAA;AACb,kBAAmC,cAAA,OAAxBlB,GAAK0rB,MAAMkpE,UAAyB;AAC7C,oBACMn0F,KADUS,GAAEuqB,OAAOkyN,gBAAgB,CAAA,EACrBx5H,aAAa,OAAA;AAEjC,gBAAAnkH,GAAK49O,UAAUn9O,IAAK,EAClBi9O,mBAAAA,MAAmB,CAAA;cAAA;YAAA,CAAA,GAAAnvN,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,qBAKL,WAAA;AAClB,kBAAAkB,KAAwClB,GAAK0rB,OAArC+oE,KAARvzF,GAAQuzF,UAAUopJ,KAAlB38O,GAAkB28O,mBAEZC,KAAyBrpJ,GAAS10F,IAAI89O,EAAAA,GAEtCE,KAAmBtpJ,GAASnxE,OAAAA,EAASqE,MAAAA,GACrCq2N,KAAevpJ,GAAS10F,IAAIg+O,EAAAA;AAElC,qBAAOD,MAA0BE,MAAgB,GAAA,EAAI,CAAA,CAAA;YAAA,CAAA,GAAAh+O;UAAA;AAAA,iBAAAytB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,qBAAA,OAGvD,WAAA;AAOE,gBAAAO,KAA+B+E,KAAKylB,OAA5BkpE,KAAR1zF,GAAQ0zF,UAAUH,KAAlBvzF,GAAkBuzF;AAElB,gBAAwB,cAAA,OAAbG,IAAyB;AAClC,kBAAMopJ,KAAevpJ,GAAS9sE,MAAAA,GACxBs2N,KAAkBxpJ,GAASpsE,MAAM21N,EAAAA;AAEvC/3O,mBAAK23O,UAAUK,IAAiB,EAC9BP,mBAAAA,KAAmB,CAAA;YAAA;UAAA,EAAA,GAAA,EAAA,KAAA,oCAAA,OAKzB,SAAiCvyJ,IAAAA;AAC/B,gBAAQ0yJ,KAAgC1yJ,GAAhC0yJ,mBAAmBppJ,KAAatJ,GAAbsJ;AAC3B,gBAAIA,OAAaxuF,KAAKylB,MAAM+oE,YAAAA,CAAaA,GAAStoF,IAAI0xO,EAAAA,GAAoB;AAGxE,kBAAMG,KAAevpJ,GAAS9sE,MAAAA,GACxBs2N,KAAkBxpJ,GAASpsE,MAAM21N,EAAAA;AAEvC/3O,mBAAK23O,UAAUK,IAAiB,EAC9BP,mBAAAA,KAAmB,CAAA;YAAA;UAAA,EAAA,GAAA,EAAA,KAAA,UAAA,OAKzB,WAAA;AACE,gBAAAx8O,KAMI+E,KAAKylB,OALP+oE,KADFvzF,GACEuzF,UACAopJ,KAFF38O,GAEE28O,mBACAK,KAHFh9O,GAGEg9O,iBACAC,KAJFj9O,GAIEi9O,0BACAC,KALFl9O,GAKEk9O;AAGF,mBACEnoN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GAEXs/K,KACEnoN,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,iCAAA,GAAhB,YAAA,IACE,MAEN7oC,GAAA,EAAA,cAAA,UAAA,EACE6oC,WAAU,2BACVkzB,UAAU/rF,KAAKo4O,cACfl+O,OACEg+O,MAA4BD,KACxB,wBACCL,MAAqB,GAAA,GAG3BM,KACCloN,GAAA,EAAA,cAAA,UAAA,EAAQ91B,OAAM,sBAAA,GAAd,kBAAA,IACE,MACH21B,GAAA,EAAA2+D,EAAAA,EAAQ,KAARA,IACM,SAACvX,IAASohK,IAAAA;AACb,qBACEroN,GAAA,EAAA,cAAA,UAAA,EACEx1B,KAAK69O,IACLn+O,OAAOm+O,GAAAA,GAENphK,GAAQn9E,IAAI,SAAA,KAAcu+O,EAAAA;YAAAA,CAAAA,EAIhCj8N,SAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA5H+Bg3E,GAAAA,EAAMszC,aAAAA;AAAAA,QAAAA,GAAAA,EAA7B8wG,IAAAA,gBAUG,EACpBhpJ,UAAUxoE,GAAAA,EAAG7b,IAAI,CAAA,CAAA,GACjBwkF,UAAU,WAAA;AAAA,mBAAA1zF,IAAAd,IAAAO,KAAA,UAAA,QAAIs/C,KAAJ,IAAA,MAAAt/C,EAAA,GAAAhB,KAAA,GAAAA,KAAAgB,IAAAhB;AAAIsgD,YAAAA,GAAJtgD,EAAA,IAAA,UAAAA,EAAA;AAAA,kBACRuB,KAAA8tB,SAAQ68D,IAAR,MAAA3qF,IAAAD,GAAA,EAAAb,KAAA,CAAA,0DAAA,CAAA,EAAA,KAAAA,IAGK6/C,EAAAA,CAAAA;QAAAA,GAEP49L,mBAAmB,MACnBO,YAAAA,KAAY,CAAA;ACEhB,YAAMG,KAAsB,SAAA1nN,IAAAA;AAAK,iBAC/B1e,GAAAA,KAAKG,OAAOue,EAAAA,IAASA,KAAQ7M,OAAAA,GAAAA,CAAAA,EAAU6M,EAAAA;QAAAA,GAEpB47D,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAiCnB,mBAAA9xF,GAAY+qB,IAAAA;AAAQ,gBAAD1rB;AAAA,YAAA0tB,GAAA,EAAA,MAAA/sB,EAAA,GACjBX,KAAAI,GAAA,KAAA,MAAMsrB,EAAAA,GADW6C,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,gCAwBY,WAAA;AAC7B,kBAAQw+O,KAAqBx+O,GAAK0rB,MAA1B8yN;AAER,sBAAQx+O,GAAK6/C,MAAM2+L,EAAAA,KAAqBpuO,OAAAA,GAAAA,GAAAA,EAAAA,GAAOwV,SAAAA;YAAAA,CAAAA,GA3B9B2I,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,gCA8BY,SAAAmP,IAAAA;AAC7B,kBAAQqvO,KAAqBx+O,GAAK0rB,MAA1B8yN;AAER,qBAAOx+O,GAAKy+O,sBAAsBD,IAAkBrvO,EAAAA;YAAAA,CAAAA,GAjCnCof,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,yBAoCK,SAACisC,IAAW98B,IAAAA;AAClC,kBACMuvO,MADuB1+O,GAAK6/C,MAAM5T,EAAAA,KAAc77B,OAAAA,GAAAA,GAAAA,EAAAA,GACJ6B,UAAU9C,EAAAA;AAC5D,qBAAOnP,GAAKi5F,SAAL1qE,GAAA,EAAA,CAAA,GACJ0d,IAAYyyM,EAAAA,CAAAA;YAAAA,CAAAA,GAxCEnwN,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,yCA4CqB,WAAA;AACtC,kBAAQ20F,KAA0B30F,GAAK0rB,MAA/BipE;AAIR,qBAFyB30F,GAAK2+O,wBAAAA,MAEFhqJ;YAAAA,CAAAA,GAjDXpmE,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,uBAoDG,SAAC4+O,IAAYlzN,IAAAA;AAGjC,kBAAQ+oE,MAAa/oE,MAAS1rB,GAAK0rB,OAA3B+oE;AACR,qBAAO8pJ,IACJ9pJ,MAAYrkF,OAAAA,GAAAA,GAAAA,EAAI,CAAA,CAAA,GAAK0X,MAAM,CAAC82N,IAAY,OAAA,CAAA,CAAA;YAAA,CAAA,GAzD1BrwN,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,2BA6DO,SAAA0rB,IAAAA;AAGxB,kBAAQgpE,MAAehpE,MAAS1rB,GAAK0rB,OAA7BgpE;AACR,qBAAO10F,GAAK6+O,oBAAoBnqJ,IAAYhpE,MAAS1rB,GAAK0rB,KAAAA;YAAAA,CAAAA,GAjEzC6C,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,qBAoEC,SAACS,IAAAA;AAAmD,kBAADL,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAArB,CAAA,GAAtBs9O,KAA2Ct9O,GAA3Cs9O,mBAC1B/9O,KAKIK,GAAK0rB,OAJPkpE,KADFj1F,GACEi1F,UACAC,KAFFl1F,GAEEk1F,aACAF,KAHFh1F,GAGEg1F,uBACA/C,KAJFjyF,GAIEiyF,mBAEFzyF,KAAgCa,GAAK8+O,6BAAAA,GAA7BC,KAAR5/O,GAAQ4/O,qBAEFC,KAAmBh/O,GAAK6+O,oBAAoBp+O,EAAAA;AAElD,kBAAY,0BAARA;AAEF,uBADAo0F,GAAY0pJ,GAAoBQ,EAAAA,CAAAA,GACzB/+O,GAAKi/O,6BAA6B,EACvCC,yBAAAA,KAAyB,CAAA;AAI7B,kBAAwB,cAAA,OAAbtqJ,IAAyB;AAAA,yBAAApmF,IAAAhP,KAAA,UAAA,QAlBmB+zJ,KAkBnB,IAAA,MAAA/zJ,KAAA,IAAAA,KAAA,IAAA,CAAA,GAAA6G,KAAA,GAAAA,KAAA7G,IAAA6G;AAlBmBktJ,kBAAAA,GAkBnBltJ,KAAA,CAAA,IAAA,UAAAA,EAAA;AAClCuuF,gBAAAA,GAAQ,MAAA,QAAR3zF,GAAA,EAAAuN,KAAA,CAAS/N,IAAK,EAAEi9O,mBAAAA,GAAAA,CAAAA,CAAAA,EAAhB,KAAAlvO,IAAwC+kJ,EAAAA,CAAAA;cAAAA;AAG1C,cAAAvzJ,GAAKi/O,6BAA6B,EAChCE,qBAAqBH,IACrBE,yBACGxB,MAAqB9rJ,MAAAA,CAAAA,CACnB+C,MAAyBA,OAA0BqqJ,GAAAA,CAAAA,GAItDtB,MAEuB,cAAA,OAAhB7oJ,MACTA,GAAY0pJ,GAAoBS,EAAAA,CAAAA;YAAAA,CAAAA;AAlGlC,gBAAMA,KAAmBh/O,GAAK2+O,wBAAAA;AAHb,mBAKjB3+O,GAAK6/C,QAALtxB,GAAA,EAAA,CAAA,GAIG7C,GAAM8yN,kBAAmBpuO,OAAAA,GAAAA,GAAAA,EAAI,EAC5B2uO,qBAAqB/+O,GAAK0rB,MAAMipE,uBAChCwqJ,qBAAqBH,IACrBE,yBAEEl/O,GAAK0rB,MAAMkmE,qBACX5xF,GAAK0rB,MAAMipE,0BAA0BqqJ,GAAAA,CAAAA,CAAAA,GAf1Bh/O;UAAA;AAAA,iBAAAytB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,wBAAA,OAoBnB,WAAA;AACEsF,iBAAKylB,MAAMskB,8BAAAA,KAA8B;UAAA,EAAA,GAAA,EAAA,KAAA,oCAAA,OAoF3C,SAAiCm7C,IAAAA;AAG/B,gBACyB30E,KAIrB20E,GAJFwJ,uBACAF,KAGEtJ,GAHFsJ,UACAG,KAEEzJ,GAFFyJ,UACAhD,KACEzG,GADFyG,mBAGFnmF,KAGIxF,KAAK64O,6BAAAA,GAFPC,KADFtzO,GACEszO,qBACAI,KAFF1zO,GAEE0zO,qBAGIC,KAA0Bn5O,KAAK44O,oBACnC1zJ,GAAUuJ,YACVvJ,EAAAA,GAGIk0J,KAA2Br+O,GAAA,EAAAyzF,EAAAA,EAAQ,KAARA,IAC/B,SAACvX,IAAAA;AAAD,qBACEA,GAAQn9E,IAAI,OAAA,MAAayW,MAGzBwT,OAAAA,GAAAA,CAAAA,EAAUkzD,GAAQn9E,IAAI,OAAA,CAAA,MAAcyW;YAAAA,CAAAA;AAGpC6oO,YAAAA,GAAyB56O,OAQ3BmwF,GANGyqJ,GAAyBlzO,IAAIg/E,GAAUuJ,UAAAA,IAElCvJ,GAAUuJ,aAEV2qJ,GAAyB/7N,OAAAA,EAASqE,MAAAA,GAE5B,EACZ+1N,mBAAAA,KAAmB,CAAA,IAGrBlnO,OAAavQ,KAAKylB,MAAMipE,yBACxBn+E,OAAauoO,MACbvoO,OAAa2oO,OAEbl5O,KAAKylB,MAAMskB,8BAAAA,IAA8B,GACzC/pC,KAAKw4O,sBAAsBtzJ,GAAUqzJ,kBAAkB,EACrDO,qBAAqB5zJ,GAAUwJ,uBAC/BuqJ,yBACEttJ,MAAqBp7E,OAAa4oO,GAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAK1C,WAAA;AACE,gBAAAl+O,KAMI+E,KAAKylB,OALPipE,KADFzzF,GACEyzF,uBACAF,KAFFvzF,GAEEuzF,UACAC,KAHFxzF,GAGEwzF,YACA7T,KAJF3/E,GAIE2/E,cACA+Q,KALF1wF,GAKE0wF,mBAEF1yF,KAII+G,KAAK64O,6BAAAA,GAHPK,KADFjgP,GACEigP,qBACAJ,KAFF7/O,GAEE6/O,qBACAG,KAHFhgP,GAGEggP,yBAGIzB,KAAiB58J,GAAa,gBAAA;AAEpC,mBACE5qD,GAAA,EAAA,cAACwnN,IAAD,EACEhpJ,UAAUA,IACVopJ,mBAAmBnpJ,IACnBE,UAAU3uF,KAAKq5O,mBACfnB,0BAAAA,CAAAA,CACIY,MAAuBA,OAAwBI,IAEnDjB,iBAAAA,WACGvpJ,MACCuqJ,MACAvqJ,OAA0B1uF,KAAK04O,wBAAAA,KACjC/sJ,GAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA3N+CyH,GAAAA,EAAMszC,aAAAA;AAAAA,QAAAA,GAAAA,EAA1Cl6C,IAAAA,gBAcG,EACpBb,mBAAAA,OACA6C,UAAUrkF,OAAAA,GAAAA,GAAAA,EAAI,CAAA,CAAA,GACdouO,kBAAkB,0BAClBxuM,+BAA+B,WAAA;QAAA,GAG/B4kD,UAAU,WAAA;AAAA,mBAAA1zF,IAAAd,IAAAO,KAAA,UAAA,QAAIs/C,KAAJ,IAAA,MAAAt/C,EAAA,GAAAhB,KAAA,GAAAA,KAAAgB,IAAAhB;AAAIsgD,YAAAA,GAAJtgD,EAAA,IAAA,UAAAA,EAAA;AAAA,kBACRuB,KAAA8tB,SAAQ68D,IAAR,MAAA3qF,IAAAD,GAAA,EAAAb,KAAA,CACE,kEAAA,CAAA,EADF,KAAAA,IAEK6/C,EAAAA,CAAAA;QAAAA,GAEP40C,aAAa,WAAA;AAAA,mBAAA3zF,IAAAd,IAAAO,KAAA,UAAA,QAAIs/C,KAAJ,IAAA,MAAAt/C,EAAA,GAAAhB,KAAA,GAAAA,KAAAgB,IAAAhB;AAAIsgD,YAAAA,GAAJtgD,EAAA,IAAA,UAAAA,EAAA;AAAA,kBACXuB,KAAA8tB,SAAQ68D,IAAR,MAAA3qF,IAAAD,GAAA,EAAAb,KAAA,CACE,qEAAA,CAAA,EADF,KAAAA,IAEK6/C,EAAAA,CAAAA;QAAAA,EAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,YC1DU48L,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAenB,mBAAAl8O,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,YAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,SA2BpB,SAACuB,IAAAA;AACPA,cAAAA,GAAE+5K,eAAAA,GACoBt7K,GAAK+rB,MAArB6oC,YAEMH,gBAAAA,KAAgB;YAAA,CAAA,GA/BF7lC,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,aAkCjB,WAAA;AACT,kBAAAuB,KAA4EvB,GAAK+rB,OAA3E6oC,KAANrzD,GAAMqzD,aAAa9sB,KAAnBvmC,GAAmBumC,YAAYY,KAA/BnnC,GAA+BmnC,YAAYquB,KAA3Cx1D,GAA2Cw1D,eAAeprB,KAA1DpqC,GAA0DoqC,eACtDw0F,KAAUz3F,GAAAA,GACVk3M,KAAc7oL,GAAcruB,WAAAA;AAEhCZ,cAAAA,GAAWj2B,MAAM,EAACwjD,QAAQv1D,MAAK0G,MAAM,QAAQ+zB,QAAQ,OAAA,CAAA,GCrD1C,SAAAh5B,IAAA;AAAkG,oBAA3EwuD,KAA0ExuD,GAA1EwuD,MAAM6E,KAAoErzD,GAApEqzD,aAAa9sB,KAAuDvmC,GAAvDumC,YAAYq4F,KAA2C5+H,GAA3C4+H,SAA2Cr0H,KAAAvK,GAAlCq+O,aAAAA,KAAAA,WAAkC9zO,KAAtB,CAAA,IAAsBA,IAAlBy/H,KAAkBhqI,GAAlBgqI,eACtF17G,KAAmCkgC,GAAnClgC,QAAQomC,KAA2BlG,GAA3BkG,QAAQn2D,KAAmBiwD,GAAnBjwD,MAAM81D,KAAa7F,GAAb6F,UACxBT,KAAOtlC,GAAOzvB,IAAI,MAAA,GAClB+vD,KAAQ,CAAA;AAEZ,wBAAQgF,IAAAA;kBACN,KAAK;AAEH,2BAAA,KADAP,GAAYY,kBAAkBzF,EAAAA;kBAGhC,KAAK;AAEH,2BAAA,KADA6E,GAAY4B,qBAAqBzG,EAAAA;kBAGnC,KAAK;AACHI,oBAAAA,GAAMj6C,KAAK,oBAAA;AACX;kBAEF,KAAK;AACHi6C,oBAAAA,GAAMj6C,KAAK,qBAAA;AACX;kBAEF,KAAK;kBACL,KAAK;AAGH,2BAAA,KADA0+C,GAAY4B,qBAAqBzG,EAAAA;kBAGnC,KAAK;kBACL,KAAK;AAEHI,oBAAAA,GAAMj6C,KAAK,oBAAA;gBAAA;AAIS,4BAAA,OAAb0/C,MACTzF,GAAMj6C,KAAK,eAAeyf,mBAAmBigC,EAAAA,CAAAA;AAG/C,oBAAIc,KAAcypE,GAAQ0/G;AAG1B,oBAAA,WAAWnpL,IAAX;AASAvG,kBAAAA,GAAMj6C,KAAK,kBAAkByf,mBAAmB+gC,EAAAA,CAAAA;AAEhD,sBAAIopL,KAAc,CAAA;AAOlB,sBANI7wN,GAAA,EAAcgnC,EAAAA,IAChB6pL,KAAc7pL,KACL3pC,GAAAA,EAAG9T,KAAKG,OAAOs9C,EAAAA,MACxB6pL,KAAc7pL,GAAOrtD,QAAAA,IAGnBk3O,GAAYr7O,SAAS,GAAG;AAC1B,wBAAIs7O,KAAiBH,GAAYG,kBAAkB;AAEnD5vL,oBAAAA,GAAMj6C,KAAK,WAAWyf,mBAAmBmqN,GAAYv5N,KAAKw5N,EAAAA,CAAAA,CAAAA;kBAAAA;AAG5D,sBAAI7/L,KAAQlrB,OAAAA,GAAAA,CAAAA,EAAK,oBAAI7C,MAAAA;AAQrB,sBANAg+B,GAAMj6C,KAAK,WAAWyf,mBAAmBuqB,EAAAA,CAAAA,GAAAA,WAE9B0/L,GAAYI,SACrB7vL,GAAMj6C,KAAK,WAAWyf,mBAAmBiqN,GAAYI,KAAAA,CAAAA,IAGzC,wBAAT7qL,MAAyC,yBAATA,MAA0C,iBAATA,OAA0ByqL,GAAYK,mCAAmC;AAC3I,wBAAM9nN,KAAeJ,OAAAA,GAAAA,CAAAA,EAAAA,GACfmoN,KAAgBhoN,OAAAA,GAAAA,CAAAA,EAAoBC,EAAAA;AAE1Cg4B,oBAAAA,GAAMj6C,KAAK,oBAAoBgqO,EAAAA,GAC/B/vL,GAAMj6C,KAAK,4BAAA,GAIX65C,GAAK53B,eAAeA;kBAAAA;AAGxB,sBAAM6+B,KAAgC4oL,GAAhC5oL;AAEN,2BAASl2D,MAAOk2D,IAA6B;AACmB,wBAADjpC;AAAA,+BAAlDipC,GAA4Bl2D,EAAAA,KACrCqvD,GAAMj6C,KAAKigB,GAAA,EAAApI,KAAA,CAACjtB,IAAKk2D,GAA4Bl2D,EAAAA,CAAAA,CAAAA,EAAlC,KAAAitB,IAA4C4H,kBAAAA,EAAoBpP,KAAK,GAAA,CAAA;kBAAA;AAIpF,sBAiBIu7D,IAjBEgoD,KAAmBj6G,GAAOzvB,IAAI,kBAAA,GAYhC21B,KAAM,CAVNw1G,KAE0Bp/F,GAAAA,EAC1BrW,OAAAA,GAAAA,CAAAA,EAAYg0G,EAAAA,GACZyB,IAAAA,IACA,EACAvjI,SAAAA,IAE0B8tB,OAAAA,GAAAA,CAAAA,EAAYg0G,EAAAA,GAEJ35E,GAAM5pC,KAAK,GAAA,CAAA,EAAMA,KAAAA,OAAK,GAAA,EAAAujH,EAAAA,EAAgB,KAAhBA,IAAyB,GAAA,IAAc,MAAM,GAAA;AAOvGhoD,kBAAAA,KADW,eAAT3sB,KACSP,GAAYI,uBACd4qL,GAAYO,4CACVvrL,GAAYiC,6CAEZjC,GAAY6B,mCAGzB7pC,GAAAA,EAAIwoC,0BAA0B,EAC5BrF,MAAMA,IACN7P,OAAOA,IACPwW,aAAaA,IACborB,UAAUA,IACVs+J,OAAOt4M,GAAWkN,WAAAA,GAGpBpoB,GAAAA,EAAIkT,KAAK/J,EAAAA;gBAAAA;AArFP+R,kBAAAA,GAAWkN,WAAY,EACrBqgB,QAAQv1D,IACRy6B,QAAQ,cACRpgB,OAAO,SACP8tB,SAAS,2FAAA,CAAA;cAAA,EDOK,EACd8nB,MAAM/vD,GAAKkgD,OACXqrF,eAAe5/F,GAAcurB,qBAAqBvrB,GAAca,eAAAA,CAAAA,GAChEooB,aAAAA,IACA9sB,YAAAA,IACAq4F,SAAAA,IACAy/G,aAAAA,GAAAA,CAAAA;YAAAA,CAAAA,GA9CwBhxN,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,iBAkDb,SAACuB,IAAAA;AAAO,kBAADd,IAAAO,IACd8qB,KAAWvqB,GAAXuqB,QACAokD,KAAYpkD,GAAZokD,SACFla,KAAQlqC,GAAOu0N,QAAQ7/O;AAE3B,kBAAK0vE,MAAAA,OAAW,GAAA,EAAAzvE,KAAAT,GAAKkgD,MAAM+V,MAAAA,EAAX,KAAAx1D,IAA0Bu1D,EAAAA,GAAgB;AAAC,oBAAD1oC,IACpDgzN,KAAYh/O,GAAA,EAAAgsB,KAAAttB,GAAKkgD,MAAM+V,MAAAA,EAAX,KAAA3oC,IAAyB,CAAC0oC,EAAAA,CAAAA;AAC1C,gBAAAh2D,GAAKs5F,SAAS,EAAErjC,QAAQqqL,GAAAA,CAAAA;cAAAA,WACnB,CAAMpwK,MAAW,GAAA,EAAAlvE,KAAAhB,GAAKkgD,MAAM+V,MAAAA,EAAX,KAAAj1D,IAA0Bg1D,EAAAA,IAAAA,IAAa;AAAC,oBAADx2D;AAC7D,gBAAAQ,GAAKs5F,SAAS,EAAErjC,QAAQ50D,GAAA,EAAA7B,KAAAQ,GAAKkgD,MAAM+V,MAAAA,EAAX,KAAAz2D,IAAyB,SAACuO,IAAAA;AAAD,yBAASA,OAAQioD;gBAAAA,CAAAA,EAAAA,CAAAA;cAAAA;YAAAA,CAAAA,GA3D1CpnC,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,iBA+Db,SAACuB,IAAAA;AACd,kBAAAd,KAAiDc,GAA3CuqB,QAAuBhsB,KAA7BW,GAAiB4/O,QAAYvgP,MAAQU,KAArCC,GAAqCD,OACjC0/C,KAAQtxB,GAAA,EAAA,CAAA,GACT9uB,IAAOU,EAAAA;AAGV,cAAAR,GAAKs5F,SAASp5C,EAAAA;YAAAA,CAAAA,GArEYtxB,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,gBAwEd,SAACuB,IAAAA;AACc,kBAADd;AAAtBc,cAAAA,GAAEuqB,OAAOu0N,QAAQv2M,MACnB9pC,GAAKs5F,SAAS,EACZrjC,QAAQ,GAAA,EAAW,GAAA,EAAAx1D,KAACT,GAAK+rB,MAAM8D,OAAOzvB,IAAI,eAAA,KAAoBJ,GAAK+rB,MAAM8D,OAAOzvB,IAAI,QAAA,CAAA,EAAjE,KAAAK,EAAA,CAAA,EAAA,CAAA,IAGrBT,GAAKs5F,SAAS,EAAErjC,QAAQ,CAAA,EAAA,CAAA;YAAA,CAAA,GA9EArnC,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,UAkFpB,SAACuB,IAAAA;AACPA,cAAAA,GAAE+5K,eAAAA;AACF,kBAAA76K,KAAwCT,GAAK+rB,OAAvC6oC,KAANn0D,GAAMm0D,aAAa9sB,KAAnBrnC,GAAmBqnC,YAAYhoC,KAA/BW,GAA+BX;AAE/BgoC,cAAAA,GAAWj2B,MAAM,EAACwjD,QAAQv1D,IAAM0G,MAAM,QAAQ+zB,QAAQ,OAAA,CAAA,GACtDq6B,GAAYG,wBAAwB,CAAEj1D,EAAAA,CAAAA;YAAAA,CAAAA;AArFtC,gBAAAgM,KAAkD9L,GAAK+rB,OAAjDjsB,KAANgM,GAAMhM,MAAM+vB,KAAZ/jB,GAAY+jB,QAAQkoC,KAApBjsD,GAAoBisD,YAAYhB,KAAhCjrD,GAAgCirD,eAC5BhH,KAAOgI,MAAcA,GAAW33D,IAAIN,EAAAA,GACpC8/O,KAAc7oL,GAAcruB,WAAAA,KAAgB,CAAA,GAC5C+sB,KAAW1F,MAAQA,GAAK3vD,IAAI,UAAA,KAAe,IAC3Cw1D,KAAW7F,MAAQA,GAAK3vD,IAAI,UAAA,KAAew/O,GAAYhqL,YAAY,IACnEC,KAAe9F,MAAQA,GAAK3vD,IAAI,cAAA,KAAmBw/O,GAAY/pL,gBAAgB,IAC/EF,KAAe5F,MAAQA,GAAK3vD,IAAI,cAAA,KAAmB,SACnD61D,KAASlG,MAAQA,GAAK3vD,IAAI,QAAA,KAAaw/O,GAAY3pL,UAAU,CAAA;AATvC,mBAUJ,YAAA,OAAXA,OACTA,KAASA,GAAOlhC,MAAM6qN,GAAYG,kBAAkB,GAAA,IAGtD//O,GAAKkgD,QAAQ,EACXqgM,SAASX,GAAYW,SACrBzgP,MAAMA,IACN+vB,QAAQA,IACRomC,QAAQA,IACRL,UAAUA,IACVC,cAAcA,IACdJ,UAAUA,IACVC,UAAU,IACVC,cAAcA,GAAAA,GAvBU31D;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OA0F5B,WAAA;AAAU,gBAADO,IAAAd,IAAAO,KAAA,MACPX,KAEIiG,KAAKylB,OADP8D,KADFxvB,GACEwvB,QAAQqxD,KADV7gF,GACU6gF,cAAcnqB,KADxB12D,GACwB02D,eAAevtB,KADvCnpC,GACuCmpC,cAAc1pC,KADrDO,GACqDP,MAAMkjC,KAD3D3iC,GAC2D2iC,eAErDywD,KAAQvS,GAAa,OAAA,GACrB+rD,KAAM/rD,GAAa,KAAA,GACnBgsD,KAAMhsD,GAAa,KAAA,GACnBi8J,KAASj8J,GAAa,QAAA,GACtBisD,KAAYjsD,GAAa,WAAA,GACzBksD,KAAalsD,GAAa,cAAA,IAAc,GACxCwR,KAAWxR,GAAa,YAAA,IAAY,GACpCs/J,KAAmBt/J,GAAa,kBAAA,GAE9B3uD,KAAWyQ,GAAXzQ,QAEJkuN,KAAUluN,GAAAA,IAAW1C,GAAOzvB,IAAI,kBAAA,IAAsB,MAGpDsgP,KAAqB,YACrBC,KAAqB,YACrBC,KAAwBruN,GAAAA,IAAYkuN,KAAU,uBAAuB,sBAAuB,cAC5FI,KAAwBtuN,GAAAA,IAAYkuN,KAAU,uBAAuB,sBAAuB,eAG9FK,KAAAA,CAAAA,EADc/pL,GAAcruB,WAAAA,KAAgB,CAAA,GACZu3M,mCAEhC9qL,KAAOtlC,GAAOzvB,IAAI,MAAA,GAClB2gP,KAAgB5rL,OAASyrL,MAAyBE,KAAkB3rL,KAAO,eAAeA,IAC1Fc,KAASpmC,GAAOzvB,IAAI,eAAA,KAAoByvB,GAAOzvB,IAAI,QAAA,GAEnD+kI,KAAAA,CAAAA,CADiBpuE,GAAcgB,WAAAA,EAAa33D,IAAIN,EAAAA,GAEhDmwB,KAAS5uB,GAAA,EAAAE,KAAAioC,GAAaI,UAAAA,CAAAA,EAAb,KAAAroC,IAAiC,SAAAmwB,IAAAA;AAAG,qBAAIA,GAAItxB,IAAI,QAAA,MAAcN;YAAAA,CAAAA,GACvEo1D,KAAAA,CAAW7zD,GAAA,EAAA4uB,EAAAA,EAAM,KAANA,IAAe,SAAAyB,IAAAA;AAAG,qBAA0B,iBAAtBA,GAAItxB,IAAI,QAAA;YAAA,CAAA,EAA4B0E,MACrE6+B,KAAc9T,GAAOzvB,IAAI,aAAA;AAE7B,mBACEk2B,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MAAKx2B,IAAL,cAAsBihP,IAAtB,MAAuCzqN,GAAA,EAAA,cAAC82G,IAAD,EAAYpzG,MAAM,CAAE,uBAAuBl6B,EAAAA,EAAAA,CAAAA,CAAAA,GAC/EwG,KAAK45C,MAAMqgM,UAAiBjqN,GAAA,EAAA,cAAA,MAAA,MAAA,iBAAmBhwB,KAAK45C,MAAMqgM,SAA9B,GAAA,IAAP,MACtB58M,MAAerN,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAAS1K,GAAOzvB,IAAI,aAAA,EAAA,CAAA,GAE7C+kI,MAAgB7uG,GAAA,EAAA,cAAA,MAAA,MAAA,YAAA,GAEhBmqN,MAAWnqN,GAAA,EAAA,cAAA,KAAA,MAAA,wBAAuBA,GAAA,EAAA,cAAA,QAAA,MAAQmqN,EAAAA,CAAAA,IACxCtrL,OAASurL,MAAsBvrL,OAASyrL,OAA2BtqN,GAAA,EAAA,cAAA,KAAA,MAAA,uBAAsBA,GAAA,EAAA,cAAA,QAAA,MAAQzG,GAAOzvB,IAAI,kBAAA,CAAA,CAAA,IAC5G+0D,OAASwrL,MAAsBxrL,OAASyrL,MAAyBzrL,OAAS0rL,OAA2BvqN,GAAA,EAAA,cAAA,KAAA,MAAA,cAAaA,GAAA,EAAA,cAAA,QAAA,MAAA,KAASzG,GAAOzvB,IAAI,UAAA,CAAA,CAAA,GAC1Ik2B,GAAA,EAAA,cAAA,KAAA,EAAG6oC,WAAU,OAAA,GAAb,UAA0B7oC,GAAA,EAAA,cAAA,QAAA,MAAQyqN,EAAAA,CAAAA,GAGhC5rL,OAASwrL,KAAqB,OAC1BrqN,GAAA,EAAA,cAAC22G,IAAD,MACA32G,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAAQ,iBAAA,GAAf,WAAA,GAEEhH,KAAe7uG,GAAA,EAAA,cAAA,QAAA,MAAA,KAAShwB,KAAK45C,MAAMuV,UAApB,GAAA,IACXn/B,GAAA,EAAA,cAAC42G,IAAD,EAAK8zG,QAAQ,IAAIC,SAAS,GAAA,GAC1B3qN,GAAA,EAAA,cAAA,SAAA,EAAOwB,IAAG,kBAAiBtxB,MAAK,QAAO,aAAU,YAAW6rF,UAAW/rF,KAAK46O,eAAgB7zG,WAAAA,KAAS,CAAA,CAAA,CAAA,GAO7G/2G,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAAQ,iBAAA,GAAf,WAAA,GAEEhH,KAAe7uG,GAAA,EAAA,cAAA,QAAA,MAAA,UAAA,IACXA,GAAA,EAAA,cAAC42G,IAAD,EAAK8zG,QAAQ,IAAIC,SAAS,GAAA,GAC1B3qN,GAAA,EAAA,cAAA,SAAA,EAAOwB,IAAG,kBAAiBtxB,MAAK,YAAW,aAAU,YAAW6rF,UAAW/rF,KAAK46O,cAAAA,CAAAA,CAAAA,CAAAA,GAIxF5qN,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAAQ,gBAAA,GAAf,8BAAA,GAEEhH,KAAe7uG,GAAA,EAAA,cAAA,QAAA,MAAA,KAAShwB,KAAK45C,MAAMyV,cAApB,GAAA,IACXr/B,GAAA,EAAA,cAAC42G,IAAD,EAAK8zG,QAAQ,IAAIC,SAAS,GAAA,GAC1B3qN,GAAA,EAAA,cAAA,UAAA,EAAQwB,IAAG,iBAAgB,aAAU,gBAAeu6D,UAAW/rF,KAAK46O,cAAAA,GAClE5qN,GAAA,EAAA,cAAA,UAAA,EAAQ91B,OAAM,QAAA,GAAd,sBAAA,GACA81B,GAAA,EAAA,cAAA,UAAA,EAAQ91B,OAAM,eAAA,GAAd,cAAA,CAAA,CAAA,CAAA,CAAA,IAQZ20D,OAAS0rL,MAAyB1rL,OAASurL,MAAsBvrL,OAASyrL,MAAyBzrL,OAASwrL,QAAAA,CAC3Gx7G,MAAgBA,MAAgB7+H,KAAK45C,MAAM0V,aAAat/B,GAAA,EAAA,cAAC22G,IAAD,MACzD32G,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAAQ,YAAA,GAAf,YAAA,GAEEhH,KAAe7uG,GAAA,EAAA,cAAA,QAAA,MAAA,UAAA,IACAA,GAAA,EAAA,cAAC42G,IAAD,EAAK8zG,QAAQ,IAAIC,SAAS,GAAA,GACxB3qN,GAAA,EAAA,cAACkqN,IAAD,EAAkB1oN,IAAG,aACdtxB,MAAK,QACL62D,UAAWlI,OAASwrL,IACpBtsJ,cAAe/tF,KAAK45C,MAAM0V,UAC1B,aAAU,YACVy8B,UAAW/rF,KAAK46O,cAAAA,CAAAA,CAAAA,CAAAA,IAOzC/rL,OAAS0rL,MAAyB1rL,OAASyrL,MAAyBzrL,OAASwrL,OAAAA,CAAwBG,MAAmBxqN,GAAA,EAAA,cAAC22G,IAAD,MACzH32G,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAAQ,gBAAA,GAAf,gBAAA,GAEEhH,KAAe7uG,GAAA,EAAA,cAAA,QAAA,MAAA,UAAA,IACAA,GAAA,EAAA,cAAC42G,IAAD,EAAK8zG,QAAQ,IAAIC,SAAS,GAAA,GACxB3qN,GAAA,EAAA,cAACkqN,IAAD,EAAkB1oN,IAAG,iBACdu8D,cAAe/tF,KAAK45C,MAAM2V,cAC1BrvD,MAAK,YACL,aAAU,gBACV6rF,UAAW/rF,KAAK46O,cAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAQ3C/7G,MAAgBlvE,MAAUA,GAAOnxD,OAAOwxB,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,SAAA,GACtD7oC,GAAA,EAAA,cAAA,MAAA,MAAA,WAEEA,GAAA,EAAA,cAAA,KAAA,EAAGitG,SAASj9H,KAAK66O,cAAc,YAAA,KAAU,GAAzC,YAAA,GACA7qN,GAAA,EAAA,cAAA,KAAA,EAAGitG,SAASj9H,KAAK66O,aAAAA,GAAjB,aAAA,CAAA,GAEAhrN,GAAA,EAAA8/B,EAAAA,EAAM,KAANA,IAAW,SAACtyB,IAAa7jC,IAAAA;AAAU,kBAADO,IAAAL,IAAA8L,IAAAvM,IAAA+tB;AAClC,qBACEgJ,GAAA,EAAA,cAAC22G,IAAD,EAAKnsI,KAAMhB,GAAAA,GACTw2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,WAAA,GACb7oC,GAAA,EAAA,cAACm9D,IAAD,EAAO,cAAa3zF,IACdg4B,IAAEx2B,GAAA,EAAAjB,KAAAiB,GAAA,EAAAtB,KAAA,GAAA,OAAKF,IAAL,GAAA,CAAA,EAAA,KAAAE,IAAam1D,IAAb,YAAA,CAAA,EAAA,KAAA90D,IAA8BW,GAAKk/C,MAAMpgD,IAAAA,GAC1CsuI,UAAWjJ,IACXj1D,SAAU,GAAA,EAAApkE,KAAA9K,GAAKk/C,MAAM+V,MAAAA,EAAX,KAAAnqD,IAA2BhM,EAAAA,GACrC0G,MAAK,YACL6rF,UAAWrxF,GAAKogP,cAAAA,CAAAA,GAClB9qN,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAAO7qI,GAAA,EAAA/B,KAAA+B,GAAA,EAAAgsB,KAAA,GAAA,OAAKxtB,IAAL,GAAA,CAAA,EAAA,KAAAwtB,IAAa6nC,IAAb,YAAA,CAAA,EAAA,KAAA51D,IAA8ByB,GAAKk/C,MAAMpgD,IAAAA,EAAAA,GACrDw2B,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,OAAA,CAAA,GAChB7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,OAAA,GACb7oC,GAAA,EAAA,cAAA,KAAA,EAAG6oC,WAAU,OAAA,GAAQr/D,EAAAA,GACrBw2B,GAAA,EAAA,cAAA,KAAA,EAAG6oC,WAAU,cAAA,GAAex7B,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAAAA,CAAAA,EAMxC/6B,QAAAA,CAAAA,IAEE,MAITutB,GAAA,EAAA11B,KAAAwvB,GAAOvN,SAAAA,CAAAA,EAAP,KAAAjiB,IAAuB,SAACsM,IAAOjM,IAAAA;AAC7B,qBAAOw1B,GAAA,EAAA,cAAC62G,IAAD,EAAWpgI,OAAQA,IACRjM,KAAMA,GAAAA,CAAAA;YAAAA,CAAAA,GAG5Bw1B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,mBAAA,GACbjK,OACEiwE,KAAe7uG,GAAA,EAAA,cAAC6mN,IAAD,EAAQh+K,WAAU,gCAA+BokE,SAAUj9H,KAAKwuD,OAAAA,GAAhE,QAAA,IACjBx+B,GAAA,EAAA,cAAC6mN,IAAD,EAAQh+K,WAAU,gCAA+BokE,SAAUj9H,KAAKouD,UAAAA,GAAhE,WAAA,IAGAp+B,GAAA,EAAA,cAAC6mN,IAAD,EAAQh+K,WAAU,+BAA8BokE,SAAUj9H,KAAKy5B,MAAAA,GAA/D,OAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA/+B;QAAA,EA9Q0B04F,GAAAA,EAAM72D,SAAAA,GEDrBw+M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,WAEV,WAAA;AACP,kBAAA9/O,KAAoClB,GAAK0rB,OAAnC8b,KAANtmC,GAAMsmC,aAAa7N,KAAnBz4B,GAAmBy4B,MAAM1E,KAAzB/zB,GAAyB+zB;AACzBuS,cAAAA,GAAYmG,cAAehU,IAAM1E,EAAAA,GACjCuS,GAAYoG,aAAcjU,IAAM1E,EAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAGlC,WAAA;AACE,mBACEgB,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAU,sCAAqCokE,SAAUj9H,KAAKi9H,QAAAA,GAAtE,OAAA;UAAA,EAAA,CAAA,CAAA,GAAAviI;QAAA,EAV6B6hC,GAAAA,SAAAA,GCE7Bs6F,KAAU,SAAC57H,IAAA;AAAiB,cAAd20D,KAAa30D,GAAb20D;AAClB,iBACE5/B,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MAAA,kBAAA,GACAA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GAAcjJ,EAAAA,CAAAA;QAAAA,GAO7BorL,KAAW,SAAC//O,IAAA;AAAoB,cAAjBisC,KAAgBjsC,GAAhBisC;AACnB,iBACElX,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MAAA,kBAAA,GACAA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GAAc3xB,IAA7B,KAAA,CAAA;QAAA,GASe+zM,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,yBAAAA,OAWnB,SAAsB/1J,IAAAA;AAGpB,mBAAOllF,KAAKylB,MAAMsrC,aAAam0B,GAAUn0B,YACpC/wD,KAAKylB,MAAMiO,SAASwxD,GAAUxxD,QAC9B1zB,KAAKylB,MAAMuJ,WAAWk2D,GAAUl2D,UAChChvB,KAAKylB,MAAM2vN,2BAA2BlwJ,GAAUkwJ;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAGvD,WAAA;AAAU,gBAADn6O,IACPd,KAAoG6F,KAAKylB,OAAjGsrC,KAAR52D,GAAQ42D,UAAU6pB,KAAlBzgF,GAAkBygF,cAAcx4C,KAAhCjoC,GAAgCioC,YAAYgzM,KAA5Cj7O,GAA4Ci7O,wBAAwB14M,KAApEviC,GAAoEuiC,eAAehJ,KAAnFv5B,GAAmFu5B,MAAM1E,KAAzF70B,GAAyF60B,QACzF91B,KAAuDkpC,GAAAA,GAA/C84M,KAARhiP,GAAQgiP,oBAAoBC,KAA5BjiP,GAA4BiiP,wBAEtBC,KAAcF,KAAqBx+M,GAAcy3B,kBAAkBzgC,IAAM1E,EAAAA,IAAU0N,GAAcw3B,WAAWxgC,IAAM1E,EAAAA,GAClH6U,KAASktB,GAASj3D,IAAI,QAAA,GACtB21B,KAAM2rN,GAAYthP,IAAI,KAAA,GACtB81D,KAAUmB,GAASj3D,IAAI,SAAA,EAAW0lB,KAAAA,GAClC67N,KAAgBtqL,GAASj3D,IAAI,eAAA,GAC7B2uF,KAAU13B,GAASj3D,IAAI,OAAA,GACvBm2D,KAAOc,GAASj3D,IAAI,MAAA,GACpBotC,KAAW6pB,GAASj3D,IAAI,UAAA,GACxBwhP,KAAc/hP,GAAA,EAAYq2D,EAAAA,GAC1BxiC,KAAcwiC,GAAQ,cAAA,KAAmBA,GAAQ,cAAA,GAEjD2rL,KAAe3gK,GAAa,cAAA,GAC5B4gK,KAAe3rN,GAAA,EAAAyrN,EAAAA,EAAW,KAAXA,IAAgB,SAAA9gP,IAAAA;AACnC,kBAAIihP,KAAgB9yN,GAAA,EAAcinC,GAAQp1D,EAAAA,CAAAA,IAAQo1D,GAAQp1D,EAAAA,EAAKylB,KAAAA,IAAS2vC,GAAQp1D,EAAAA;AAChF,qBAAOw1B,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,cAAar+D,KAAKA,GAAAA,GAAlC,KAAyCA,IAAzC,MAAgDihP,IAAhD,GAAA;YAAA,CAAA,GAEHC,KAAqC,MAAxBF,GAAar9O,QAC1BiuF,KAAWxR,GAAa,YAAA,IAAY,GACpCigD,KAAkBjgD,GAAa,mBAAA,IAAmB,GAClD+gK,KAAO/gK,GAAa,MAAA;AAE1B,mBACE5qD,GAAA,EAAA,cAAA,OAAA,MACIorN,OAAAA,SAAgBD,MAA8D,WAA3BA,KACjDnrN,GAAA,EAAA,cAAC6qG,IAAD,EAAiBrxC,SAAU4xJ,GAAAA,CAAAA,IAC3BprN,GAAA,EAAA,cAAC2rN,IAAD,EAAMnyJ,SAAU4xJ,IAAch5M,YAAaA,GAAAA,CAAAA,IAC7C3S,MAAOO,GAAA,EAAA,cAAA,OAAA,MACLA,GAAA,EAAA,cAAA,MAAA,MAAA,aAAA,GACAA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,cAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GAAcppC,EAAAA,CAAAA,CAAAA,GAInCO,GAAA,EAAA,cAAA,MAAA,MAAA,iBAAA,GACAA,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAU,uCAAA,GACf7oC,GAAA,EAAA,cAAA,SAAA,MACAA,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,mBAAA,GACZ7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,iCAAA,GAAd,MAAA,GACA7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,sCAAA,GAAd,SAAA,CAAA,CAAA,GAGF7oC,GAAA,EAAA,cAAA,SAAA,MACEA,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,WAAA,GACZ7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,sBAAA,GACVh1B,IAEAw3M,KAAgBrrN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,wBAAA,GACb7oC,GAAA,EAAA,cAAA,KAAA,MAAA,gBAAA,CAAA,IAEF,IAAA,GAGpBA,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,2BAAA,GAEV4vB,KAAUz4D,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAAMj5B,GAAA,EAAAC,KAAA,GAAA,OAA8B,OAAzB81D,GAASj3D,IAAI,MAAA,IAAb,GAAA,OAAiCi3D,GAASj3D,IAAI,MAAA,GAA9C,IAAA,IAA4D,EAAA,CAAA,EAAjE,KAAAmB,IAAsE81D,GAASj3D,IAAI,SAAA,CAAA,EAAA,CAAA,IACnG,MAGVm2D,KAAOjgC,GAAA,EAAA,cAACurN,IAAD,EAAcz6K,SAAU7Q,IACV7iC,aAAcA,IACdqC,KAAMA,IACNmgC,SAAUA,IACVxtB,YAAaA,IACbw4C,cAAeA,GAAAA,CAAAA,IAC7B,MAGP8gK,KAAa1rN,GAAA,EAAA,cAAC,IAAD,EAAS4/B,SAAU4rL,GAAAA,CAAAA,IAAmB,MAGnDpG,MAA0BluM,KAAWlX,GAAA,EAAA,cAAC,IAAD,EAAUkX,UAAWA,GAAAA,CAAAA,IAAgB,IAAA,CAAA,CAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAAxsC;QAAA,EA9FlD04F,GAAAA,EAAM72D,SAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GCzB1Cq/M,KAA6B,CACjC,OAAO,OAAO,QAAQ,UAAU,WAAW,QAAQ,OAAA,GAG/CC,KAAyB7gP,GAAA,EAAA4gP,EAAAA,EAA0B,KAA1BA,IAAkC,CAAC,OAAA,CAAA,GAG7CE,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,sBAmCE,SAAC15G,IAAQzvF,IAAAA;AAC5B,kBAAAj4C,KAOIX,GAAK0rB,OANPiX,KADFhiC,GACEgiC,eACAk+C,KAFFlgF,GAEEkgF,cACAv1C,KAHF3qC,GAGE2qC,eACAu0F,KAJFl/H,GAIEk/H,iBACAiG,KALFnlI,GAKEmlI,eACAz9F,KANF1nC,GAME0nC,YAEIqiG,KAAqB7pD,GAAa,sBAAA,IAAsB,GACxDolD,KAAeplD,GAAa,cAAA,GAC5BpoB,KAAa4vE,GAAOtoI,IAAI,YAAA;AAC9B,qBACEk2B,GAAA,EAAA,cAACgwG,IAAD,EACExlI,KAAK,eAAem4C,IACpByvF,QAAQA,IACRzvF,KAAKA,IACLtN,eAAeA,IACfu0F,iBAAiBA,IACjBiG,eAAeA,IACfz9F,YAAYA,IACZw4C,cAAcA,IACdwkD,SAAS1iG,GAAcjN,IAAAA,EAAAA,GACvBO,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,wBAAA,GAEXhpC,GAAA,EAAA2iC,EAAAA,EAAU,KAAVA,IAAe,SAAAhtB,IAAAA;AAAO,oBAAD9qC,IACbg5B,KAAO8R,GAAG1rC,IAAI,MAAA,GACdk1B,KAASwW,GAAG1rC,IAAI,QAAA,GAChBgyF,KAAW9lE,GAAAA,EAAG9T,KAAK,CAAC,SAASwhB,IAAM1E,EAAAA,CAAAA,GAQnC+sN,KAAer/M,GAAczQ,OAAAA,IACjC4vN,KAAyBD;AAE3B,uBAAA,OAAI,GAAA,EAAAG,EAAAA,EAAY,KAAZA,IAAqB/sN,EAAAA,IAChB,OAIPgB,GAAA,EAAA,cAACy0G,IAAD,EACEjqI,KAAGQ,GAAA,EAAAN,KAAA,GAAA,OAAKg5B,IAAL,GAAA,CAAA,EAAA,KAAAh5B,IAAas0B,EAAAA,GAChB88D,UAAUA,IACVtmD,IAAIA,IACJ9R,MAAMA,IACN1E,QAAQA,IACR2jB,KAAKA,GAAAA,CAAAA;cAAAA,CAAAA,EAERrwC,QAAAA,CAAAA,CAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAvEb,WAAA;AACE,gBAIMq3H,KAFF35H,KAAKylB,MADPiX,cAG8Bi3B,iBAAAA;AAEhC,mBAAsB,MAAnBgmE,GAAUn7H,OACJwxB,GAAA,EAAA,cAAA,MAAA,MAAA,iCAAA,IAIPA,GAAA,EAAA,cAAA,OAAA,MACIH,GAAA,EAAA8pG,EAAAA,EAAS,KAATA,IAAc35H,KAAKg8O,kBAAAA,EAAoB15O,QAAAA,GACvCq3H,GAAUn7H,OAAO,IAAIwxB,GAAA,EAAA,cAAA,MAAA,MAAA,kCAAA,IAA4C,IAAA;UAAA,EAAA,CAAA,CAAA,GAAAt1B;QAAA,EA9BnC04F,GAAAA,EAAM72D,SAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA;ACXvC,iBAAS0/M,GAAcxsN,IAAAA;AAC5B,iBAAOA,GAAI5C,MAAM,oBAAA;QAAA;AASZ,iBAASqvN,GAAah2M,IAAgBk5F,IAAAA;AAC3C,iBAAKl5F,KACD+1M,GAAc/1M,EAAAA,KARQzW,KAQ4ByW,IAP7CrZ,MAAM,QAAA,IAEf7xB,GAAA,EAAAjB,KAAA,GAAA,OAAUy7B,OAAOlH,SAASi7B,QAAAA,CAAAA,EAA1B,KAAAxvD,IAAqC01B,EAAAA,IAFJA,KAS1B,IAAI,GAAA,EAAIyW,IAAgBk5F,EAAAA,EAASr1E,OAHZq1E;AAPvB,cAAqB3vG,IAAK11B;QAAA;AAa1B,iBAASovG,GAAS15E,IAAK2vG,IAAAA;AAAsC,cAAD1kI,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAJ,CAAA,GAAIX,KAAAW,GAA1BwrC,gBAAAA,KAAAA,WAA0BnsC,KAAX,KAAWA;AACjE,cAAK01B,IAAL;AACA,gBAAIwsN,GAAcxsN,EAAAA;AAAM,qBAAOA;AAE/B,gBAAM+/G,KAAU0sG,GAAah2M,IAAgBk5F,EAAAA;AAC7C,mBAAK68G,GAAczsG,EAAAA,IAGZ,IAAI,GAAA,EAAI//G,IAAK+/G,EAAAA,EAASzlF,OAFpB,IAAI,GAAA,EAAIt6B,IAAK+F,OAAOlH,SAASy7B,IAAAA,EAAMA;UAAAA;QAAAA;AASvC,iBAASoyL,GAAa1sN,IAAK2vG,IAAAA;AAAsC,cAAD1kI,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAJ,CAAA,GAAIX,KAAAW,GAA1BwrC,gBAAAA,KAAAA,WAA0BnsC,KAAX,KAAWA;AACrE,cAAA;AACE,mBAAOovG,GAAS15E,IAAK2vG,IAAS,EAAEl5F,gBAAAA,GAAAA,CAAAA;UAAAA,SAChCjrC,IAAA;AACA;UAAA;QAAA;AAAA,YC5BiB+kI,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAuBnB,WAAA;AACE,gBA2BIo8G,IA3BJjiP,KAUI6F,KAAKylB,OATP28G,KADFjoI,GACEioI,QACAzvF,KAFFx4C,GAEEw4C,KACA4mB,KAHFp/D,GAGEo/D,UACAl0B,KAJFlrC,GAIEkrC,eACAu0F,KALFz/H,GAKEy/H,iBACAiG,KANF1lI,GAME0lI,eACAz9F,KAPFjoC,GAOEioC,YACAw4C,KARFzgF,GAQEygF,cACAwkD,KATFjlI,GASEilI,SAGFn4G,KAGImb,GAAAA,GAFF8yM,KADFjuN,GACEiuN,cACA90G,KAFFn5G,GAEEm5G,aAGIk1G,KAAuBl1G,MAA+B,YAAhBA,IAEtCi8G,KAAWzhK,GAAa,UAAA,GACxBwR,KAAWxR,GAAa,YAAA,IAAY,GACpC0hK,KAAW1hK,GAAa,UAAA,GACxB2hK,KAAO3hK,GAAa,MAAA,GAEtB4hK,KAAiBp6G,GAAOvgH,MAAM,CAAC,cAAc,aAAA,GAAgB,IAAA,GAC7D46N,KAA6Br6G,GAAOvgH,MAAM,CAAC,cAAc,gBAAgB,aAAA,CAAA,GACzE66N,KAAwBt6G,GAAOvgH,MAAM,CAAC,cAAc,gBAAgB,KAAA,CAAA;AAGtEu6N,YAAAA,KADEh1N,OAAAA,GAAAA,CAAAA,EAAOie,EAAAA,KAAkBje,OAAAA,GAAAA,CAAAA,EAAOie,GAAca,cAAAA,IAC3Bi2M,GAAcO,IAAuBt9G,IAAS,EAAEl5F,gBAAgBb,GAAca,eAAAA,EAAAA,CAAAA,IAE9Ew2M;AAGvB,gBAAI97G,KAAa,CAAC,kBAAkBjuF,EAAAA,GAChCgqM,KAAU/iH,GAAgBR,QAAQwH,IAA6B,WAAjBs0G,MAA4C,WAAjBA,EAAAA;AAE7E,mBACEllN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAW8jL,KAAU,gCAAgC,sBAAA,GAExD3sN,GAAA,EAAA,cAAA,MAAA,EACEitG,SAAS,WAAA;AAAA,qBAAM4C,GAAcl9D,KAAKi+D,IAAAA,CAAa+7G,EAAAA;YAAAA,GAC/C9jL,WAAY2jL,KAAyC,gBAAxB,uBAC7BhrN,IAAI3B,GAAA,EAAA+wG,EAAAA,EAAU,KAAVA,IAAe,SAAAxgI,IAAAA;AAAC,qBAAIkwB,OAAAA,GAAAA,CAAAA,EAAmBlwB,EAAAA;YAAAA,CAAAA,EAAI6f,KAAK,GAAA,GACpD,YAAU0yB,IACV,gBAAcgqM,GAAAA,GAEd3sN,GAAA,EAAA,cAACssN,IAAD,EACExgJ,SAASw5I,IACTl8G,SAASujH,IACTjpN,MAAMtD,OAAAA,GAAAA,CAAAA,EAAmBuiB,EAAAA,GACzB3O,MAAM2O,GAAAA,CAAAA,GACL6pM,KACDxsN,GAAA,EAAA,cAAA,SAAA,MACIA,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAAQuoN,GAAAA,CAAAA,CAAAA,IAFJxsN,GAAA,EAAA,cAAA,SAAA,IAAA,GAMlBA,GAAA,EAAA,cAAA,OAAA,MACKysN,KACDzsN,GAAA,EAAA,cAAA,SAAA,MACMysN,IACEL,KAAqB,OAAO,MAC5BA,KACApsN,GAAA,EAAA,cAACusN,IAAD,EACIxyL,MAAMv6B,OAAAA,GAAAA,CAAAA,EAAY4sN,EAAAA,GAClBn/G,SAAS,SAAChiI,IAAAA;AAAD,qBAAOA,GAAEitM,gBAAAA;YAAAA,GAClB1iL,QAAO,SAAA,GACL42N,EAAAA,IAA6B,IAAA,IATb,IAAA,GAelCpsN,GAAA,EAAA,cAAA,UAAA,EACE,iBAAe2sN,IACf9jL,WAAU,oBACVma,OAAO2pK,KAAU,uBAAsB,oBACvC1/G,SAAS,WAAA;AAAA,qBAAM4C,GAAcl9D,KAAKi+D,IAAAA,CAAa+7G,EAAAA;YAAAA,EAAAA,GAE/C3sN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,SAAQtV,OAAM,MAAKq3D,QAAO,MAAK,eAAY,QAAOgiI,WAAU,QAAA,GACzE5sN,GAAA,EAAA,cAAA,OAAA,EAAK+5B,MAAM4yL,KAAU,oBAAoB,qBAAqBx/G,WAAWw/G,KAAU,oBAAoB,oBAAA,CAAA,CAAA,CAAA,CAAA,GAK/G3sN,GAAA,EAAA,cAACqsN,IAAD,EAAUQ,UAAUF,GAAAA,GACjBpjL,EAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA/G+B65B,GAAAA,EAAM72D,SAAAA;AAAAA,QAAAA,GAAAA,EAA3ByjG,IAAAA,gBAEG,EACpBoC,QAAQp8G,GAAAA,EAAGxhB,OAAO,CAAA,CAAA,GAClBmuC,KAAK,GAAA,CAAA;AAAA,YCHY8iM,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAkCnB,WAAA;AACE,gBAAAx6O,KAiBI+E,KAAKylB,OAhBPqmE,KADF7wF,GACE6wF,UACA/6B,KAFF91D,GAEE81D,UACAy4B,KAHFvuF,GAGEuuF,SACAqsJ,KAJF56O,GAIE46O,aACAC,KALF76O,GAKE66O,eACAC,KANF96O,GAME86O,eACAC,KAPF/6O,GAOE+6O,WACAzzO,KARFtH,GAQEsH,IACAq4E,KATF3/E,GASE2/E,cACAx4C,KAVFnnC,GAUEmnC,YACAb,KAXFtmC,GAWEsmC,aACA7E,KAZFzhC,GAYEyhC,eACA4xB,KAbFrzD,GAaEqzD,aACAmC,KAdFx1D,GAcEw1D,eACAoyE,KAfF5nI,GAeE4nI,aACAx9F,KAhBFpqC,GAgBEoqC,eAEEqwM,KAAiB11O,KAAKylB,MAAM8f,WAEhC9/B,KAYIiwO,GAAel2N,KAAAA,GAXjBi3D,KADFhxE,GACEgxE,YACA2iD,KAFF3zH,GAEE2zH,SACA1lG,KAHFjuB,GAGEiuB,MACA1E,KAJFvpB,GAIEupB,QACAwW,KALF//B,GAKE+/B,IACAmN,KANFltC,GAMEktC,KACA7M,KAPFrgC,GAOEqgC,aACAg/F,KARFr/H,GAQEq/H,eACAswG,KATF3vO,GASE2vO,wBACAJ,KAVFvvO,GAUEuvO,iBACAC,KAXFxvO,GAWEwvO,mBAIA53M,KAGEmI,GAHFnI,aACAi1B,KAEE9sB,GAFF8sB,cACAY,KACE1tB,GADF0tB,SAGI4pL,KAAkBxqL,KAAe6pL,GAAa7pL,GAAa7iC,KAAKiN,GAAcjN,IAAAA,GAAO,EAAEyW,gBAAgBb,GAAca,eAAAA,EAAAA,CAAAA,IAAsB,IAC7IX,KAAYmwM,GAAe7zN,MAAM,CAAC,IAAA,CAAA,GAClCsG,KAAYod,GAAUzrC,IAAI,WAAA,GAC1B4rC,KAAand,OAAAA,GAAAA,CAAAA,EAAQgd,IAAW,CAAC,YAAA,CAAA,GACjCgC,KAAkB7K,GAAc6K,gBAAgB7T,IAAM1E,EAAAA,GACtD4xG,KAAa,CAAC,cAAcjuF,IAAK7M,EAAAA,GACjCi3M,KAAavsN,OAAAA,GAAAA,CAAAA,EAAc+U,EAAAA,GAEzBy3M,KAAYpiK,GAAa,WAAA,GACzBqiK,KAAariK,GAAc,YAAA,GAC3BsiK,KAAUtiK,GAAc,SAAA,GACxBmgK,KAAQngK,GAAc,OAAA,GACtByhK,KAAWzhK,GAAc,UAAA,GACzBwR,KAAWxR,GAAa,YAAA,IAAY,GACpCuiK,KAAUviK,GAAc,SAAA,GACxBypD,KAAmBzpD,GAAc,kBAAA,GACjCwiK,KAAexiK,GAAc,cAAA,GAC7ByiK,KAAmBziK,GAAc,kBAAA,GACjC2hK,KAAO3hK,GAAc,MAAA,GAEnB0iK,MAAmBl7M,GAAAA,EAAnBk7M;AAGR,gBAAGn1N,MAAa4oC,MAAYA,GAASvyD,OAAO,GAAG;AAC7C,kBAAI68O,MAAAA,CAAiBlzN,GAAUruB,IAAIkqB,OAAO+sC,GAASj3D,IAAI,QAAA,CAAA,CAAA,KAAA,CAAgBquB,GAAUruB,IAAI,SAAA;AACrFi3D,cAAAA,KAAWA,GAASrnD,IAAI,iBAAiB2xO,GAAAA;YAAAA;AAG3C,gBAAIkC,MAAc,CAAE7pN,IAAM1E,EAAAA;AAE1B,mBACIgB,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAW4d,KAAa,+BAA+B2iD,KAAU,mBAAH,OAAsBpqG,IAAtB,UAAA,IAAA,mBAAA,OAA4DA,EAAAA,GAAUwC,IAAIlB,OAAAA,GAAAA,CAAAA,EAAmBswG,GAAW3gH,KAAK,GAAA,CAAA,EAAA,GAC9K+P,GAAA,EAAA,cAACqtN,IAAD,EAAkB3H,gBAAgBA,IAAgBt8G,SAASA,IAASy8G,aAAaA,IAAaj7J,cAAcA,IAActsB,aAAaA,IAAamC,eAAeA,IAAeq7B,UAAUA,GAAAA,CAAAA,GAC5L97D,GAAA,EAAA,cAACqsN,IAAD,EAAUQ,UAAUzjH,GAAAA,GAClBppG,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,eAAA,GACVtzB,MAAaA,GAAU/mC,QAAuB,SAAd+mC,KAAqB,OACtDvV,GAAA,EAAA,cAAA,OAAA,EAAK4qF,QAAQ,QAAQr3D,OAAO,QAAQrU,KAAKyrE,GAAQ,GAAA,GAAiC9hD,WAAU,4BAAA,CAAA,GAE5F4d,MAAczmD,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,uBAAA,GAAd,sBAAA,GACdx7B,MACArN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,8BAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,sBAAA,GACb7oC,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAASoJ,GAAAA,CAAAA,CAAAA,CAAAA,GAKvBy/M,KACA9sN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,gCAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,uBAAA,GAAd,mBAAA,GACA7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,wBAAA,GACb7oC,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,qCAAA,GACd7oC,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAASq+B,GAAaj1B,YAAAA,CAAAA,CAAAA,GAElCrN,GAAA,EAAA,cAACusN,IAAD,EAAM/2N,QAAO,UAASqzC,WAAU,+BAA8B9O,MAAMv6B,OAAAA,GAAAA,CAAAA,EAAYstN,EAAAA,EAAAA,GAAmBA,EAAAA,CAAAA,CAAAA,IAE9F,MAGRv3M,MAAcA,GAAU/mC,OACzBwxB,GAAA,EAAA,cAACitN,IAAD,EACEv3M,YAAYA,IACZomD,UAAUA,GAASl8E,KAAK,YAAA,GACxB21B,WAAWA,IACXg4M,aAAaA,KACbzH,eAAkBA,IAClBC,eAAkBA,IAClBf,iBAAoBA,IACpBlwG,eAAeA,IAEfviI,IAAIA,IACJq4E,cAAeA,IACfr5C,aAAcA,IACd7E,eAAgBA,IAChB8H,YAAa,CAAC9Q,IAAM1E,EAAAA,GACpBoT,YAAaA,IACbygG,aAAcA,IACdx9F,eAAgBA,GAAAA,CAAAA,IAlBc,MAsB/B2vM,KACDhlN,GAAA,EAAA,cAACq0G,IAAD,EACEzpD,cAAcA,IACdlnD,MAAMA,IACN1E,QAAQA,IACRm4G,kBAAkB5hG,GAAUzrC,IAAI,SAAA,GAChCstI,aAAa1qG,GAAc2P,MAAAA,EAAQxqB,MAAM,CAAC6R,IAAM,SAAA,CAAA,GAChDwzG,mBAAmB7hG,GAAca,gBACjC0D,mBAAmBi5F,GAAYj5F,mBAC/BU,wBAAwBu4F,GAAYv4F,wBACpC86F,mBAAmB//F,GAAc6gG,qBACjCP,yBAAyBtgG,GAAcurB,qBAAAA,CAAAA,IAXtB,MAenBokL,MAAoBlwG,MAAuB5xE,MAAWA,GAAQ10D,OAAOwxB,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GAChF7oC,GAAA,EAAA,cAACmtN,IAAD,EAASjqL,SAAUA,IACVx/B,MAAOA,IACP1E,QAASA,IACTuS,aAAcA,IACdi8M,eAAgBj2M,GAAAA,CAAAA,CAAAA,IALO,MASxCvX,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAam8K,MAAoBjkL,MAAa+zE,KAAqC,cAApB,kBAAA,GAC/DkwG,MAAoBlwG,KAEnB90G,GAAA,EAAA,cAACktN,IAAD,EACE33M,WAAYA,IACZhE,aAAcA,IACd7E,eAAgBA,IAChB2I,eAAgBA,IAChBw9F,aAAcA,IACdnvG,MAAOA,IACP1E,QAASA,IACTgnN,WAAYA,IACZluG,UAAUmtG,GAAAA,CAAAA,IAXuB,MAcnCD,MAAoBjkL,MAAa+zE,KACjC90G,GAAA,EAAA,cAAC+qN,IAAD,EACEx5M,aAAcA,IACd7N,MAAOA,IACP1E,QAASA,GAAAA,CAAAA,IAJuC,IAAA,GAQvDimN,KAAoBjlN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GAAoB7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,UAAA,CAAA,CAAA,IAAyB,MAE3F1wC,KACC6H,GAAA,EAAA,cAACgtN,IAAD,EACE70N,WAAYA,IACZqhE,SAAUA,IACVi0J,kBAAmB1sL,IACnB6pB,cAAeA,IACfx4C,YAAaA,IACb1F,eAAgBA,IAChBmmG,aAAaA,IACbx9F,eAAeA,IACf9D,aAAcA,IACdmxB,UAAUh2B,GAAci5B,mBAAmB,CAACjiC,IAAM1E,EAAAA,CAAAA,GAClDumC,eAAgB74B,GAAc84B,mBAAmB,CAAC9hC,IAAM1E,EAAAA,CAAAA,GACxD88D,UAAUA,GAASl8E,KAAK,WAAA,GACxB8jB,MAAOA,IACP1E,QAASA,IACTomN,wBAAyBA,IACzB7yO,IAAIA,GAAAA,CAAAA,IAjBK,MAoBZ+6O,OAAmBP,GAAWv+O,OAC/BwxB,GAAA,EAAA,cAACotN,IAAD,EAAcL,YAAaA,IAAaniK,cAAeA,GAAAA,CAAAA,IADjB,IAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA7gF;QAAA,EAjOf2sI,GAAAA,aAAAA;AAAAA,QAAAA,GAAAA,EAAlB+uG,IAAAA,gBA0BG,EACpBlwM,WAAW,MACXwrB,UAAU,MACVy4B,SAAS,MACTsC,UAAU55E,OAAAA,GAAAA,IAAAA,EAAAA,GACVyjO,SAAS,GAAA,CAAA;AAAA,YAAA,KAAAj7O,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GCjCQ2iP,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAmBnB,WAAA;AAAU,gBAADpiP,IAEPd,KAQI6F,KAAKylB,OAPP2zG,KADFj/H,GACEi/H,SACAy8G,KAFF17O,GAEE07O,aACAj7J,KAHFzgF,GAGEygF,cACAtsB,KAJFn0D,GAIEm0D,aACAmC,KALFt2D,GAKEs2D,eACAilL,KANFv7O,GAMEu7O,gBACA5pJ,KAPF3xF,GAOE2xF,UAGF5yF,KAUIw8O,GAAel2N,KAAAA,GATjBm2N,KADFz8O,GACEy8O,SACA92G,KAFF3lI,GAEE2lI,cACA7vG,KAHF91B,GAGE81B,QACAwW,KAJFtsC,GAIEssC,IACAi0F,KALFvgI,GAKEugI,aACA/lG,KANFx6B,GAMEw6B,MACAoS,KAPF5sC,GAOE4sC,aACA8vM,KARF18O,GAQE08O,qBACAT,KATFj8O,GASEi8O,oBAISuI,KACPl4M,GADFmwM,SAGEhjL,KAAW+iL,GAAe57O,IAAI,UAAA,GAE5B48O,KAAwB97J,GAAa,uBAAA,GACrC+iK,KAAyB/iK,GAAa,wBAAA,GACtCgjK,KAAuBhjK,GAAa,sBAAA,GACpCksD,KAAalsD,GAAa,cAAA,IAAc,GAExCijK,KAAclrL,MAAAA,CAAAA,CAAcA,GAAShlD,MAAAA,GACrCmwO,KAAqBD,MAAiC,MAAlBlrL,GAASn0D,QAAcm0D,GAASjxC,MAAAA,EAAQV,QAAAA,GAC5E+8N,KAAAA,CAAkBF,MAAeC;AACvC,mBACE9tN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAS,mCAAA,OAAqC7pC,EAAAA,EAAAA,GACjDgB,GAAA,EAAA,cAAA,UAAA,EACE,cAAAh1B,GAAA,EAAAC,KAAA,GAAA,OAAe+zB,IAAf,GAAA,CAAA,EAAA,KAAA/zB,IAAyBy4B,GAAKvK,QAAQ,OAAO,SAAA,CAAA,GAC7C,iBAAeiwG,IACfvgE,WAAU,2BACVokE,SAAS44G,GAAAA,GAET7lN,GAAA,EAAA,cAAC2tN,IAAD,EAAwB3uN,QAAQA,GAAAA,CAAAA,GAChCgB,GAAA,EAAA,cAAC4tN,IAAD,EAAsBhjK,cAAcA,IAAc86J,gBAAgBA,IAAgB5pJ,UAAUA,GAAAA,CAAAA,GAE1F2tC,KACAzpG,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,8BAAA,GACZn3D,GAAAA,EAASg8O,MAAmB/H,EAAAA,CAAAA,IAFjB,MAMfR,OAAuBS,MAAuB9vM,MAAe9V,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,+BAAA,GAAgC+8K,MAAuB9vM,EAAAA,IAAsB,MAE3J9V,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,SAAQtV,OAAM,MAAKq3D,QAAO,MAAK,eAAY,QAAOgiI,WAAU,QAAA,GACzE5sN,GAAA,EAAA,cAAA,OAAA,EAAK+5B,MAAMqvE,KAAU,oBAAoB,qBAAqB+D,WAAW/D,KAAU,oBAAoB,oBAAA,CAAA,CAAA,CAAA,GAKzG2kH,KAAiB,OACf/tN,GAAA,EAAA,cAAC0mN,IAAD,EACE73G,cAAcA,IACd5B,SAAS,WAAA;AACP,kBAAM+gH,KAAwBvtL,GAAciuE,2BAA2B/rE,EAAAA;AACvErE,cAAAA,GAAYH,gBAAgB6vL,EAAAA;YAAAA,EAAAA,CAAAA,GAIpChuN,GAAA,EAAA,cAAC82G,IAAD,EAAYpzG,MAAMo4D,GAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA3FoB46C,GAAAA,aAAAA;AAAAA,QAAAA,GAAAA,EAAzB22G,IAAAA,gBAaG,EACpB3H,gBAAgB,MAChB5pJ,UAAU55E,OAAAA,GAAAA,IAAAA,EAAAA,GACVyjO,SAAS,GAAA,CAAA;AAAA,YCnBQgI,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAUnB,WAAA;AAEE,gBACE3uN,KACEhvB,KAAKylB,MADPuJ;AAGF,mBACEgB,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,yBAAA,GAA0B7pC,GAAOud,YAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAjBHm6F,GAAAA,aAAAA;AAAAA,QAAAA,GAAAA,EAA/Bi3G,IAAAA,gBAOG,EACpBjI,gBAAgB,KAAA,CAAA;AAAA,YAAA,KAAAh7O,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GCNCkjP,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAQnB,WAAA;AAqBE,qBArBM3iP,IACNd,KAGI6F,KAAKylB,OAFPm1D,KADFzgF,GACEygF,cAKF7gF,KANAI,GAEEu7O,eAWiBl2N,KAAAA,GANjBi3D,KADF18E,GACE08E,YACA2iD,KAFFr/H,GAEEq/H,SACA1lG,KAHF35B,GAGE25B,MACAif,KAJF54C,GAIE44C,KACA7M,KALF/rC,GAKE+rC,aACAwvM,KANFv7O,GAMEu7O,sBAOI2I,KAAYvqN,GAAKjF,MAAM,SAAA,GACpBx1B,KAAI,GAAGA,KAAIglP,GAAU9/O,QAAQlF,MAAK;AACzC,iBAAA,EAAAglP,EAAAA,EAAS,KAATA,IAAiBhlP,IAAG,GAAG+2B,GAAA,EAAA,cAAA,OAAA,EAAKx1B,KAAKvB,GAAAA,CAAAA,CAAAA;AAGnC,gBAAMqjP,KAAW1hK,GAAc,UAAA;AAE/B,mBACE5qD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAY4d,KAAa,qCAAqC,wBAClE,aAAW/iD,GAAAA,GACX1D,GAAA,EAAA,cAACssN,IAAD,EACIxgJ,SAASw5I,IACTl8G,SAASA,IACT1lG,MAAMtD,OAAAA,GAAAA,CAAAA,EAAmBp1B,GAAA,EAAAC,KAAA,GAAA,OAAG03C,IAAJ,GAAA,CAAA,EAAA,KAAA13C,IAAW6qC,EAAAA,CAAAA,GACnC9B,MAAMi6M,GAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA1CgCv3G,GAAAA,aAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,EAAAA,GC4BnC02G,KA/Ba,SAACniP,IAAA;AAAkC,cAADd,IAA/B4iP,KAA+B9hP,GAA/B8hP,YACvBmB,MAAkBtjK,GADoC3/E,GAAnB2/E,cACJ,iBAAA;AACnC,iBACE5qD,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,yBAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,MAAA,YAAA,CAAA,GAEFA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GAEb7oC,GAAA,EAAA,cAAA,SAAA,MACEA,GAAA,EAAA,cAAA,SAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GAAd,OAAA,GACA7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GAAd,OAAA,CAAA,CAAA,GAGJ7oC,GAAA,EAAA,cAAA,SAAA,MAEQH,GAAA,EAAA11B,KAAA4iP,GAAWz7O,SAAAA,CAAAA,EAAX,KAAAnH,IAA0B,SAAAc,IAAA;AAAA,gBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAEkF,KAAFzF,GAAA,CAAA,GAAK0F,KAAL1F,GAAA,CAAA;AAAA,mBAAYs1B,GAAA,EAAA,cAACkuN,IAAD,EAAiB1jP,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKgG,IAAL,GAAA,CAAA,EAAA,KAAAhG,IAAUiG,EAAAA,GAAK6tF,MAAM9tF,IAAG+tF,MAAM9tF,GAAAA,CAAAA;UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAAAA,GCL7F89O,KAbgB,SAACjjP,IAAA;AAAoB,cAAlBgzF,KAAiBhzF,GAAjBgzF,MAAMC,KAAWjzF,GAAXizF,MAChCiwJ,KAAoBjwJ,KAAcA,GAAK1uE,OAAO0uE,GAAK1uE,KAAAA,IAAS0uE,KAAjC;AAE/B,iBAAQl+D,GAAA,EAAA,cAAA,MAAA,MACJA,GAAA,EAAA,cAAA,MAAA,MAAMi+D,EAAAA,GACNj+D,GAAA,EAAA,cAAA,MAAA,MAAM5vB,GAAA,EAAe+9O,EAAAA,CAAAA,CAAAA;QAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GCCvB5xJ,KAAgB,SAACtxF,IAAA;AAA+E,cAA9Ef,KAA6Ee,GAA7Ef,OAAOkkP,KAAsEnjP,GAAtEmjP,UAAUvlL,KAA4D59D,GAA5D49D,WAAWwlL,KAAiDpjP,GAAjDojP,cAAcj8M,KAAmCnnC,GAAnCmnC,YAAYk8M,KAAuBrjP,GAAvBqjP,SAASthL,KAAc/hE,GAAd+hE,UAC/E1wC,KAAS9F,GAAAA,EAAW4b,EAAAA,IAAcA,GAAAA,IAAe,MACjDm8M,KAAAA,UAAqBzkP,GAAAA,EAAIwyB,IAAQ,iBAAA,KAAgCxyB,GAAAA,EAAIwyB,IAAQ,6BAAA,IAA6B,GAC1GkyN,KAAUphE,OAAAA,GAAAA,MAAAA,EAAO,IAAA;AAEvBL,iBAAAA,GAAAA,SAAAA,EAAU,WAAA;AAAO,gBAAD9hL,IACRgqH,KAAalqH,GAAA,EAAAE,KAAA,GAAA,EACXujP,GAAQjzM,QAAQ05E,UAAAA,CAAAA,EADL,KAAAhqH,IAET,SAAA6O,IAAAA;AAAI,qBAAA,CAAA,CAAMA,GAAKD,YAAYC,GAAKoxN,UAAUx3M,SAAS,YAAA;YAAA,CAAA;AAK7D,mBAFA,GAAA,EAAAuhG,EAAAA,EAAU,KAAVA,IAAmB,SAAAn7G,IAAAA;AAAI,qBAAIA,GAAKujH,iBAAiB,cAAcoxH,IAAsC,EAAExsC,SAAAA,MAAS,CAAA;YAAA,CAAA,GAEzG,WAAA;AAEL,iBAAA,EAAAhtF,EAAAA,EAAU,KAAVA,IAAmB,SAAAn7G,IAAAA;AAAI,uBAAIA,GAAKyjH,oBAAoB,cAAckxH,EAAAA;cAAAA,CAAAA;YAAAA;UAAAA,GAEnE,CAACvkP,IAAO2+D,IAAWmE,EAAAA,CAAAA;AAEtB,cAIMyhL,KAAuC,SAACxjP,IAAAA;AAC5C,gBAAQuqB,KAAmBvqB,GAAnBuqB,QAAQ4nL,KAAWnyM,GAAXmyM,QACMsxC,KAA0Dl5N,GAAxE+sJ,cAA2CosE,KAA6Bn5N,GAA3Co5N,cAA6BnrE,KAAcjuJ,GAAdiuJ;AAEtCirE,YAAAA,KAAgBC,OACH,MAAdlrE,MAAmB25B,KAAS,KAFlCuxC,KAAgBlrE,MAGSirE,MAAiBtxC,KAAS,MAGtEnyM,GAAE+5K,eAAAA;UAAAA;AAIN,iBACEhlJ,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAiBn7D,KAAK8gP,GAAAA,GACjCH,KACAruN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,qBAAoBokE,SApBlB,WAAA;AACrB4hH,eAAAA,EAAO3kP,IAAOkkP,EAAAA;UAAAA,EAAAA,GAmBV,UAAA,IADe,MAMhBE,MACCtuN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GACb7oC,GAAA,EAAA,cAAC,GAAA,iBAAD,EAAiBgU,MAAM9pC,GAAAA,GAAO81B,GAAA,EAAA,cAAA,UAAA,IAAA,CAAA,CAAA,GAIjCuuN,KACGvuN,GAAA,EAAA,cAAC,GAAA,GAAD,EACAgtC,UAAUA,IACVnE,WAAW+/C,GAAAA,EAAG//C,IAAW,YAAA,GACzBzlB,OAAO2sB,OAAAA,GAAAA,CAAAA,EAASjmE,GAAAA,EAAIwyB,IAAQ,yBAAyB,OAAA,CAAA,EAAA,GAEpDpyB,EAAAA,IAED81B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAW+/C,GAAAA,EAAG//C,IAAW,YAAA,EAAA,GAAgB3+D,EAAAA,CAAAA;QAAAA;AAiBxDqyF,WAAc2sB,eAAe,EAC3BklI,UAAU,eAAA;AAGG7xJ,YAAAA,KAAAA;AAAAA,YCjFMywJ,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,2BAwCM,SAAEv1O,IAAAA;AAAF,qBAAW1N,GAAK0rB,MAAM8b,YAAYwD,oBAAoB,CAAChrC,GAAK0rB,MAAMiO,MAAM35B,GAAK0rB,MAAMuJ,MAAAA,GAASvnB,EAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,+BAEvF,SAAAxM,IAAA;AAAsC,kBAAnC6jP,KAAkC7jP,GAAlC6jP,sBAAsB5kP,KAAYe,GAAZf,OACrDR,KAAsCK,GAAK0rB,OAAnCo9G,KAARnpI,GAAQmpI,aAAanvG,KAArBh6B,GAAqBg6B,MAAM1E,KAA3Bt1B,GAA2Bs1B;AACxB8vN,cAAAA,MACDj8G,GAAYx4F,uBAAuB,EACjCnwC,OAAAA,IACAw5B,MAAAA,IACA1E,QAAAA,GAAAA,CAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAKN,WAAA;AAAU,gBAAD/zB,IAAAd,IAAAJ,KAAA,MACPL,KAcIsG,KAAKylB,OAbP0C,KADFzuB,GACEyuB,WACAs1N,KAFF/jP,GAEE+jP,kBACA7iK,KAHFlhF,GAGEkhF,cACAx4C,KAJF1oC,GAIE0oC,YACA1F,KALFhjC,GAKEgjC,eACAn6B,KANF7I,GAME6I,IACAgzD,KAPF77D,GAOE67D,eACA6/K,KARF17O,GAQE07O,wBACAtpJ,KATFpyF,GASEoyF,UACAp4D,KAVFh6B,GAUEg6B,MACA1E,KAXFt1B,GAWEs1B,QACAqW,KAZF3rC,GAYE2rC,eACAw9F,KAbFnpI,GAaEmpI,aAEEk8G,KAAc72N,OAAAA,GAAAA,CAAAA,EAAmBC,EAAAA,GAE/B62N,KAAcpkK,GAAc,aAAA,GAC5BqgK,KAAergK,GAAc,cAAA,GAC7BwmF,KAAWxmF,GAAc,UAAA,GAE3BloB,KAAW1yD,KAAKylB,MAAMitC,YAAY1yD,KAAKylB,MAAMitC,SAASl0D,OAAOwB,KAAKylB,MAAMitC,WAAWsqL,GAAU9jI,aAAaxmD,UAIxGusL,KAFaviN,GAAczQ,OAAAA,IAG/B6D,OAAAA,GAAAA,CAAAA,EAA6B3H,EAAAA,IAAa,MAEtC+2N,KClFK,SAA2B1tN,IAAAA;AAAwB,kBAApB+2H,KAAmB,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAL;AAC1D,qBAAO/2H,GAAGrI,QAAQ,WAAWo/H,EAAAA;YAAAA,EDiFQvtJ,GAAA,EAAAC,KAAA,GAAA,OAAG+zB,EAAAA,CAAAA,EAAJ,KAAA/zB,IAAay4B,IAAb,YAAA,CAAA,GAC5ByrN,KAAY,GAAH,OAAMD,IAAN,SAAA;AAEf,mBACElvN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,yBAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,MAAA,WAAA,GACI0M,GAAczQ,OAAAA,IAAW,OAAO+D,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAASs5G,GAAAA,GAChDnvN,GAAA,EAAA,cAAA,QAAA,MAAA,uBAAA,GACAA,GAAA,EAAA,cAACgvN,IAAD,EAAa9kP,OAAOq7D,IACT6pL,cAAcF,IACdG,WAAU,yBACVxmL,WAAU,wBACVymL,cAAc5sL,IACdysL,WAAWA,IACXpzJ,UAAU/rF,KAAKu/O,wBAAAA,CAAAA,CAAAA,CAAAA,GAGhCvvN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GAEV4kL,KACmBztN,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAACirN,IAAD,EAAclqL,UAAW0sL,IACX7iK,cAAeA,IACfx4C,YAAaA,IACb1F,eAAgBA,IAChBhJ,MAAO1zB,KAAKylB,MAAMiO,MAClB1E,QAAShvB,KAAKylB,MAAMuJ,QACpBomN,wBAAyBA,GAAAA,CAAAA,GACvCplN,GAAA,EAAA,cAAA,MAAA,MAAA,WAAA,CAAA,IATF,MActBA,GAAA,EAAA,cAAA,SAAA,EAAO,aAAU,UAAS6oC,WAAU,mBAAkBrnC,IAAI0tN,IAAUM,MAAK,SAAA,GACvExvN,GAAA,EAAA,cAAA,SAAA,MACEA,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,mBAAA,GACZ7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,iCAAA,GAAd,MAAA,GACA7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,sCAAA,GAAd,aAAA,GACEn8B,GAAczQ,OAAAA,IAAW+D,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,oCAAA,GAAd,OAAA,IAA+D,IAAA,CAAA,GAG9F7oC,GAAA,EAAA,cAAA,SAAA,MAEIH,GAAA,EAAA11B,KAAAguB,GAAU7mB,SAAAA,CAAAA,EAAV,KAAAnH,IAA0B,SAAAc,IAAA;AAAuB,kBAADd,KAAAo7I,IAAA,EAAAt6I,IAAA,CAAA,GAApBg8C,KAAoB98C,GAAA,CAAA,GAAd42D,KAAc52D,GAAA,CAAA,GAE1C0+D,KAAY4kL,MAAoBA,GAAiB3jP,IAAI,QAAA,KAAam9C,KAAO,qBAAqB;AAClG,qBACEjnB,GAAA,EAAA,cAACoxI,IAAD,EAAU5mK,KAAMy8C,IACNvjB,MAAMA,IACN1E,QAAQA,IACR88D,UAAUA,GAASl8E,KAAKqnC,EAAAA,GACxBwoM,WAAWV,OAAgB9nM,IAC3B10C,IAAIA,IACJs2D,WAAYA,IACZ5hB,MAAOA,IACP8Z,UAAWA,IACXr0B,eAAgBA,IAChBoiN,sBAAsB/tL,OAAakuL,IACnCS,qBAAqB3lP,GAAK4lP,6BAC1BvyN,aAAcmoC,IACdnzB,YAAaA,IACbgpD,mBAAmB/lD,GAAc+iG,qBAC/B10G,IACA1E,IACA,aACAioB,EAAAA,GAEF4rF,aAAaA,IACbjoD,cAAeA,GAAAA,CAAAA;YAAAA,CAAAA,EAE1Bt4E,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAzJoB8wF,GAAAA,EAAM72D,SAAAA;AAAAA,QAAAA,GAAAA,EAAxBygN,IAAAA,gBAmBG,EACpBS,kBAAkB,MAClB/qL,UAAUluD,OAAAA,GAAAA,MAAAA,EAAO,CAAC,kBAAA,CAAA,GAClB4wO,wBAAAA,MAAwB,CAAA;AAAA,YAAA,KAAA16O,GAAA,EAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA,KAAAA,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA,KAAAA,GAAA,GAAA,GEHP0mK,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AACnB,mBAAA1mK,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,mBAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,wBA+BL,SAACQ,IAAAA;AACtB,kBAAAC,KAAsDT,GAAK+rB,OAAnDi6N,KAARvlP,GAAQulP,qBAAqBZ,KAA7B3kP,GAA6B2kP;AAC7B,cAAAplP,GAAKs5F,SAAS,EAAEzsD,qBAAqBrsC,GAAAA,CAAAA,GACrCwlP,GAAoB,EAClBxlP,OAAOA,IACP4kP,sBAAAA,GAAAA,CAAAA;YAAAA,CAAAA,GApCwBx2N,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,wBAwCL,WAAA;AACrB,kBAAAuB,KAAqDvB,GAAK+rB,OAAlDsrC,KAAR91D,GAAQ81D,UAAU3jC,KAAlBnyB,GAAkBmyB,aAAag+D,KAA/BnwF,GAA+BmwF,mBAEzBw0J,KAAoBlmP,GAAKkgD,MAAMrT,uBAAuBnZ,IAItD0qN,KAHkB/mL,GAASlvC,MAAM,CAAC,WAAW+9N,EAAAA,GAAoBz1O,OAAAA,GAAAA,GAAAA,EAAI,CAAA,CAAA,CAAA,EAC9BrQ,IAAI,YAAY,IAAA,EAEfujB,OAAAA,EAASqE,MAAAA;AACvD,qBAAO0pE,MAAqB0sJ;YAAAA,CAAAA,GA7C5Bp+O,GAAKkgD,QAAQ,EACXrT,qBAAqB,GAAA,GAJG7sC;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAmD5B,WAAA;AAAU,gBAADO,IAAAd,IAmCHovB,IAAQs2N,IAiBRr0J,IAnDJhmF,KAcIxF,KAAKylB,OAbPiO,KADFluB,GACEkuB,MACA1E,KAFFxpB,GAEEwpB,QACAioB,KAHFzxC,GAGEyxC,MACA8Z,KAJFvrD,GAIEurD,UACA8H,KALFrzD,GAKEqzD,WACAizB,KANFtmF,GAMEsmF,UACAvpF,KAPFiD,GAOEjD,IACAq4E,KARFp1E,GAQEo1E,cACAx4C,KATF58B,GASE48B,YACA1F,KAVFl3B,GAUEk3B,eACAtP,KAXF5nB,GAWE4nB,aACA0xN,KAZFt5O,GAYEs5O,sBACAj8G,KAbFr9H,GAaEq9H,aAGItpD,KAAgBh3E,GAAhBg3E,aACFttD,KAASyQ,GAAczQ,OAAAA,GACnBqxN,KAAmBl7M,GAAAA,EAAnBk7M,gBAEJP,KAAaO,KAAiB9sN,OAAAA,GAAAA,CAAAA,EAAcugC,EAAAA,IAAY,MACxDnB,KAAUmB,GAASj3D,IAAI,SAAA,GACvBo+G,KAAQnnD,GAASj3D,IAAI,OAAA,GACnBgmP,KAAoBllK,GAAa,mBAAA,GACjCi8C,KAAUj8C,GAAa,SAAA,GACvB2R,KAAgB3R,GAAa,eAAA,GAC7ByR,KAAezR,GAAa,cAAA,GAC5BwR,KAAWxR,GAAa,YAAA,IAAY,GACpC2pD,KAAgB3pD,GAAa,eAAA,GAC7BokK,KAAcpkK,GAAa,aAAA,GAC3B48J,KAAiB58J,GAAa,gBAAA,GAC9B6R,KAAU7R,GAAa,SAAA,GAKvBglK,KAAoB5/O,KAAK45C,MAAMrT,uBAAuBnZ,IACtD2yN,KAAkBhvL,GAASlvC,MAAM,CAAC,WAAW+9N,EAAAA,GAAoBz1O,OAAAA,GAAAA,GAAAA,EAAI,CAAA,CAAA,CAAA,GACrE61O,KAAuBD,GAAgBjmP,IAAI,YAAY,IAAA;AAG7D,gBAAGmyB,IAAQ;AACT,kBAAMg0N,KAA2BF,GAAgBjmP,IAAI,QAAA;AAErDyvB,cAAAA,KAAS02N,KAA2B1mK,GAAY0mK,GAAyBzgO,KAAAA,CAAAA,IAAU,MACnFqgO,KAA6BI,KAA2B/tO,OAAAA,GAAAA,IAAAA,EAAK,CAAC,WAAWlS,KAAK45C,MAAMrT,qBAAqB,QAAA,CAAA,IAAaulD;YAAAA;AAEtHviE,cAAAA,KAASwnC,GAASj3D,IAAI,QAAA,GACtB+lP,KAA6B9uL,GAAS7qD,IAAI,QAAA,IAAY4lF,GAASl8E,KAAK,QAAA,IAAYk8E;AAIlF,gBACIo0J,IADAC,KAAAA,OAEAC,KAAkB,EACpBzpK,iBAAAA,KAAiB;AAInB,gBAAG1qD,IAAQ;AAAC,kBAADoT;AAET,kBADA6gN,KAAY,UAAA7gN,KAAG0gN,GAAgBjmP,IAAI,QAAA,MAAA,WAAvBulC,KAAA,SAAGA,GAA+B7f,KAAAA,GAC3CwgO,IAAsB;AACvB,oBAAMK,KAAoBrgP,KAAKsgP,qBAAAA,GAGzBC,KAAsB,SAACC,IAAAA;AAAD,yBAC1BA,GAAc1mP,IAAI,OAAA;gBAAA;AAAA,4BACpB0xF,KAAmB+0J,GAJGP,GACnBlmP,IAAIumP,IAAmBl2O,OAAAA,GAAAA,GAAAA,EAAI,CAAA,CAAA,CAAA,CAAA,OAK5BqhF,KAAmB+0J,GAAoB,GAAA,EAAAP,EAAAA,EAAoB,KAApBA,EAAAA,EAA8BjgP,KAAAA,EAAO7F,KAAAA,IAE9EimP,KAAAA;cAA8B;AAAA,2BACtBJ,GAAgBjmP,IAAI,SAAA,MAE5B0xF,KAAmBu0J,GAAgBjmP,IAAI,SAAA,GACvCqmP,KAAAA;YAA8B,OAE3B;AACLD,cAAAA,KAAe32N,IACf62N,KAAkB,GAAA,EAAA,GAAA,EAAA,CAAA,GAAIA,EAAAA,GAAP,CAAA,GAAA,EAAwBvpK,kBAAAA,KAAkB,CAAA;AACzD,kBAAM4pK,KAAyB1vL,GAASlvC,MAAM,CAAC,YAAY+9N,EAAAA,CAAAA;AACxDa,cAAAA,OACDj1J,KAAmBi1J,IACnBN,KAAAA;YAA8B;AAIlC,gBAOIlpK,KApKoB,SAAEypK,IAAgBn0J,IAAenqD,IAAAA;AAC3D,kBACEs+M,QAAAA,IAEA;AACA,oBAAI1jL,KAAW;AAKf,uBAJuBgF,OAAAA,GAAAA,CAAAA,EAAkC0+K,EAAAA,MAEvD1jL,KAAW,SAENhtC,GAAA,EAAA,cAAA,OAAA,MACLA,GAAA,EAAA,cAACu8D,IAAD,EAAe1zB,WAAU,WAAUz2B,YAAaA,IAAa46B,UAAWA,IAAW9iE,OAAQ6pB,OAAAA,GAAAA,CAAAA,EAAU28N,EAAAA,EAAAA,CAAAA,CAAAA;cAAAA;AAGzG,qBAAO;YAAA,EA+IkBvyN,OAAAA,GAAAA,CAAAA,EACrB+xN,IACAN,IACAQ,IACAD,KAA8B30J,KAAAA,MAAmBtnF,GAGAqoF,IAAenqD,EAAAA;AAElE,mBACEpS,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAY,eAAgBA,MAAa,KAAM,aAAW5hB,GAAAA,GAC5DjnB,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,sBAAA,GACV5hB,EAAAA,GAEJjnB,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,2BAAA,GAEZ7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kCAAA,GACb7oC,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAAS88B,GAASj3D,IAAK,aAAA,EAAA,CAAA,CAAA,GAGhCwjP,MAAmBP,GAAWv+O,OAAcqxB,GAAA,EAAA50B,KAAA8hP,GAAWz7O,SAAAA,CAAAA,EAAX,KAAArG,IAA0B,SAAAA,IAAA;AAAA,kBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAET,KAAFE,GAAA,CAAA,GAAO0F,KAAP1F,GAAA,CAAA;AAAA,qBAAcs1B,GAAA,EAAA,cAAC8vN,IAAD,EAAmBtlP,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKK,IAAL,GAAA,CAAA,EAAA,KAAAL,IAAYiG,EAAAA,GAAK6tF,MAAMzzF,IAAK0zF,MAAM9tF,GAAAA,CAAAA;YAAAA,CAAAA,IAAvG,MAEvC6rB,MAAU8kC,GAASj3D,IAAI,SAAA,IACtBk2B,GAAA,EAAA,cAAA,WAAA,EAAS6oC,WAAU,oBAAA,GACjB7oC,GAAA,EAAA,cAAA,OAAA,EACE6oC,WAAW+/C,GAAAA,EAAG,+BAA+B,EAC3C,kDAAkDkmI,GAAAA,CAAAA,EAAAA,GAGpD9uN,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAU,qCAAA,GAAjB,YAAA,GAGA7oC,GAAA,EAAA,cAACgvN,IAAD,EACE9kP,OAAO8F,KAAK45C,MAAMrT,qBAClB+4M,cACEvuL,GAASj3D,IAAI,SAAA,IACTi3D,GAASj3D,IAAI,SAAA,EAAWujB,OAAAA,IACxB1hB,OAAAA,GAAAA,GAAAA,EAAAA,GAENowF,UAAU/rF,KAAK2gP,sBACftB,WAAU,aAAA,CAAA,GAEXP,KACC9uN,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAU,8CAAA,GAAjB,aACW7oC,GAAA,EAAA,cAAA,QAAA,MAAA,QAAA,GADX,UAAA,IAGE,IAAA,GAELgwN,KACChwN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,4BAAA,GACb7oC,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAU,mCAAA,GAAjB,UAAA,GAGA7oC,GAAA,EAAA,cAACwnN,IAAD,EACEhpJ,UAAUwxJ,IACVpI,mBAAmB53O,KAAKsgP,qBAAAA,GACxB3xJ,UAAU,SAAAn0F,IAAAA;AAAG,qBACXqoI,GAAY54F,wBAAwB,EAClCzwC,MAAMgB,IACNgqC,YAAY,CAAC9Q,IAAM1E,EAAAA,GACnBkb,aAAa,aACbC,aAAa8M,GAAAA,CAAAA;YAAAA,GAGjBkhM,YAAAA,MAAY,CAAA,CAAA,IAGd,IAAA,IAEJ,MAEFlhK,MAAW1tD,KACXyG,GAAA,EAAA,cAACq8D,IAAD,EACEP,UAAU+zJ,IACVjlK,cAAeA,IACfx4C,YAAaA,IACb1F,eAAgBA,IAChBnT,QAASnD,OAAAA,GAAAA,CAAAA,EAAcmD,EAAAA,GACvB0tD,SAAUA,IACVN,iBAAAA,KAAkB,CAAA,IAClB,MAEF1qD,MAAU+zN,KACRhwN,GAAA,EAAA,cAACy8D,IAAD,EACExV,SAAS+oK,GAAqBlmP,IAAIkG,KAAKsgP,qBAAAA,GAAwBn2O,OAAAA,GAAAA,GAAAA,EAAI,CAAA,CAAA,CAAA,GACnEywE,cAAcA,IACdx4C,YAAYA,IACZw+M,WAAAA,KAAW,CAAA,IAEb,MAEFhxL,KACA5/B,GAAA,EAAA,cAAC6mG,IAAD,EACEjnE,SAAUA,IACVgrB,cAAeA,GAAAA,CAAAA,IAEf,IAAA,GAGL3uD,KAAS+D,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,qBAAA,GACpBq/C,KACAroF,GAAA,EAAA11B,KAAA+9G,GAAMj3G,MAAAA,EAAQK,SAAAA,CAAAA,EAAd,KAAAnH,IAA6B,SAAAc,IAAA;AAAkB,kBAADd,KAAAo7I,IAAA,EAAAt6I,IAAA,CAAA,GAAfT,KAAeL,GAAA,CAAA,GAAV+gG,KAAU/gG,GAAA,CAAA;AAC5C,qBAAO61B,GAAA,EAAA,cAACu0G,IAAD,EAAe/pI,KAAKA,IAAKhB,MAAMgB,IAAK0gG,MAAOA,IAAOtgB,cAAcA,GAAAA,CAAAA;YAAAA,CAAAA,IAEzE5qD,GAAA,EAAA,cAAA,KAAA,MAAA,UAAA,CAAA,IACI,IAAA;UAAA,EAAA,CAAA,CAAA,GAAAt1B;QAAA,EArPsB04F,GAAAA,EAAM72D,SAAAA;AAAAA,QAAAA,GAAAA,EAAvB6kI,IAAAA,gBA2BG,EACpBrwG,UAAUvsD,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,GACjBk7O,qBAAqB,WAAA;QAAA,EAAA,CAAA;ACpDlB,YAQQI,KARkB,SAAC7kP,IAAA;AAAoB,cAAlBgzF,KAAiBhzF,GAAjBgzF,MAAMC,KAAWjzF,GAAXizF;AACtC,iBAAOl+D,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,sBAAA,GAAwBo1B,IAAvC,MAAiDjqE,OAAOkqE,EAAAA,CAAAA;QAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCI9CqtJ,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,SACX,EACNsF,eAAe,KAAA,CAAA,GAAAv4N,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,uBAYK,SAAC+mP,IAAAA;AACrB,kBAAQhgL,KAAY/mE,GAAK0rB,MAAjBq7C;AAER,kBAAGggL,OAAgBhgL;AAInB,oBAAGA,MAAWA,cAAmBd,MAAM;AACrC,sBAAIggG,KAAS,IAAIE;AACjBF,kBAAAA,GAAOzsE,SAAS,WAAA;AACd,oBAAAx5F,GAAKi5F,SAAS,EACZ6tJ,eAAe7gF,GAAOvtI,OAAAA,CAAAA;kBAAAA,GAG1ButI,GAAOc,WAAWhgG,EAAAA;gBAAAA;AAElB,kBAAA/mE,GAAKi5F,SAAS,EACZ6tJ,eAAe//K,GAAQp/D,SAAAA,EAAAA,CAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,qBAAAA,OAK7B,WAAA;AACE1B,iBAAK+gP,oBAAoB,IAAA;UAAA,EAAA,GAAA,EAAA,KAAA,sBAAA,OAG3B,SAAmBrQ,IAAAA;AACjB1wO,iBAAK+gP,oBAAoBrQ,GAAU5vK,OAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAGrC,WAAA;AACE,gBAII7Q,IAAM+wL,IAJVtmP,KAA0EsF,KAAKylB,OAAzEq7C,KAANpmE,GAAMomE,SAAS1zC,KAAf1yB,GAAe0yB,aAAaqC,KAA5B/0B,GAA4B+0B,KAA5Bx2B,KAAAyB,GAAiCk1D,SAAAA,KAAAA,WAAjC32D,KAAyC,CAAA,IAAzCA,IAA6CmpC,KAA7C1nC,GAA6C0nC,YAAYw4C,KAAzDlgF,GAAyDkgF,cACjDimK,KAAkB7gP,KAAK45C,MAAvBinM,eACFt0J,KAAgB3R,GAAa,eAAA,GAC7BqmK,KAAe,eAAc,oBAAIp1N,QAAOirB,QAAAA;AAI9C,gBAFArnB,KAAMA,MAAO,IAGX,8BAA8BlE,KAAK6B,EAAAA,KAClCwiC,GAAQ,qBAAA,KAA2B,cAAerkC,KAAKqkC,GAAQ,qBAAA,CAAA,KAC/DA,GAAQ,qBAAA,KAA2B,cAAerkC,KAAKqkC,GAAQ,qBAAA,CAAA,KAC/DA,GAAQ,qBAAA,KAA2B,iBAAkBrkC,KAAKqkC,GAAQ,qBAAA,CAAA,KAClEA,GAAQ,qBAAA,KAA2B,iBAAkBrkC,KAAKqkC,GAAQ,qBAAA,CAAA;AAGnE,kBAAI,UAAUp6B,QAAQ;AACpB,oBAAIt1B,KAAOktB,MAAe,aACtB2/G,KAAQjsE,cAAmBd,OAAQc,KAAU,IAAId,KAAK,CAACc,EAAAA,GAAU,EAAC5gE,MAAMA,GAAAA,CAAAA,GACxE6pD,KAAO,GAAA,EAAWurH,gBAAgBvoC,EAAAA,GAElC7N,KAAW,CAACh/H,IADDuvB,GAAIjB,OAAOt1B,GAAA,EAAAu2B,EAAAA,EAAG,KAAHA,IAAgB,GAAA,IAAO,CAAA,GACjBs6B,EAAAA,EAAM9pC,KAAK,GAAA,GAIvCihO,KAActxL,GAAQ,qBAAA,KAA0BA,GAAQ,qBAAA;AAC5D,oBAAA,WAAWsxL,IAA6B;AACtC,sBAAIz4N,KAAmBD,OAAAA,GAAAA,CAAAA,EAA4C04N,EAAAA;AAC1C,2BAArBz4N,OACFy2G,KAAWz2G;gBAAAA;AAKXu4N,gBAAAA,KADD16N,GAAAA,EAAI4mH,aAAa5mH,GAAAA,EAAI4mH,UAAUi0G,mBACrBnxN,GAAA,EAAA,cAAA,OAAA,MAAKA,GAAA,EAAA,cAAA,KAAA,EAAG+5B,MAAOA,IAAOkzE,SAAS,WAAA;AAAA,yBAAM32G,GAAAA,EAAI4mH,UAAUi0G,iBAAiBp0G,IAAM7N,EAAAA;gBAAAA,EAAAA,GAAa,eAAA,CAAA,IAEvFlvG,GAAA,EAAA,cAAA,OAAA,MAAKA,GAAA,EAAA,cAAA,KAAA,EAAG+5B,MAAOA,IAAOm1E,UAAWA,GAAAA,GAAa,eAAA,CAAA;cAAA;AAG3D8hH,gBAAAA,KAAShxN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GAAf,gGAAA;qBAIF,QAAQttC,KAAK6B,EAAAA,GAAc;AAEpC,kBAAI4vC,KAAW;AACQgF,qBAAAA,GAAAA,CAAAA,EAAkClB,EAAAA,MAEvD9D,KAAW;AAEb,kBAAA;AACE/M,gBAAAA,KAAO7vD,GAAA,EAAe0jB,KAAKkH,MAAM81C,EAAAA,GAAU,MAAM,IAAA;cAAA,SAC1Cr6D,IAAP;AACAwpD,gBAAAA,KAAO,uCAAuC6Q;cAAAA;AAGhDkgL,cAAAA,KAAShxN,GAAA,EAAA,cAACu8D,IAAD,EAAevvB,UAAUA,IAAUqhL,cAAAA,MAAaD,UAAQ,GAAA,OAAK6C,IAAL,OAAA,GAA0B/mP,OAAQ+1D,IAAO7tB,YAAaA,IAAak8M,SAAAA,KAAO,CAAA;YAAA;AAGlI,qBAAO/yN,KAAK6B,EAAAA,KACrB6iC,KAAOmxL,GAAAA,EAAUtgL,IAAS,EACxBk1G,qBAAAA,MACAD,UAAU,KAAA,CAAA,GAEZirE,KAAShxN,GAAA,EAAA,cAACu8D,IAAD,EAAe8xJ,cAAAA,MAAaD,UAAQ,GAAA,OAAK6C,IAAL,MAAA,GAAyB/mP,OAAQ+1D,IAAO7tB,YAAaA,IAAak8M,SAAAA,KAAO,CAAA,KAItH0C,KADkC,gBAAzBx1M,GAAAA,EAAQpe,EAAAA,KAAgC,cAAc7B,KAAK6B,EAAAA,IAC3D4C,GAAA,EAAA,cAACu8D,IAAD,EAAe8xJ,cAAAA,MAAaD,UAAQ,GAAA,OAAK6C,IAAL,OAAA,GAA0B/mP,OAAQ4mE,IAAU1+B,YAAaA,IAAak8M,SAAAA,KAAO,CAAA,IAGxF,eAAzB9yM,GAAAA,EAAQpe,EAAAA,KAA+B,YAAY7B,KAAK6B,EAAAA,IACxD4C,GAAA,EAAA,cAACu8D,IAAD,EAAe8xJ,cAAAA,MAAaD,UAAQ,GAAA,OAAK6C,IAAL,MAAA,GAAyB/mP,OAAQ4mE,IAAU1+B,YAAaA,IAAak8M,SAAAA,KAAO,CAAA,IAGhH,YAAY/yN,KAAK6B,EAAAA,IACvB,GAAA,EAAAA,EAAAA,EAAW,KAAXA,IAAqB,KAAA,IACb4C,GAAA,EAAA,cAAA,OAAA,MAAA,KAAQ8wC,IAAR,GAAA,IAEA9wC,GAAA,EAAA,cAAA,OAAA,EAAKkf,KAAM,GAAA,EAAWomI,gBAAgBx0G,EAAAA,EAAAA,CAAAA,IAIxC,YAAYv1C,KAAK6B,EAAAA,IACjB4C,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GAAa7oC,GAAA,EAAA,cAAA,SAAA,EAAOqxN,UAAAA,KAAQ,GAACrxN,GAAA,EAAA,cAAA,UAAA,EAAQkf,KAAMzf,IAAMvvB,MAAOktB,GAAAA,CAAAA,CAAAA,CAAAA,IACpD,YAAA,OAAZ0zC,KACP9wC,GAAA,EAAA,cAACu8D,IAAD,EAAe8xJ,cAAAA,MAAaD,UAAQ,GAAA,OAAK6C,IAAL,MAAA,GAAyB/mP,OAAQ4mE,IAAU1+B,YAAaA,IAAak8M,SAAAA,KAAO,CAAA,IAC/Gx9K,GAAQtiE,OAAO,IAEtBqiP,KAGQ7wN,GAAA,EAAA,cAAA,OAAA,MACPA,GAAA,EAAA,cAAA,KAAA,EAAG6oC,WAAU,IAAA,GAAb,yDAAA,GAGA7oC,GAAA,EAAA,cAACu8D,IAAD,EAAe8xJ,cAAAA,MAAaD,UAAQ,GAAA,OAAK6C,IAAL,MAAA,GAAyB/mP,OAAQ2mP,IAAgBz+M,YAAaA,IAAak8M,SAAAA,KAAO,CAAA,CAAA,IAK/GtuN,GAAA,EAAA,cAAA,KAAA,EAAG6oC,WAAU,IAAA,GAAb,gDAAA,IAMF;AAGX,mBAAUmoL,KAAgBhxN,GAAA,EAAA,cAAA,OAAA,MACtBA,GAAA,EAAA,cAAA,MAAA,MAAA,eAAA,GACEgxN,EAAAA,IAFa;UAAA,EAAA,CAAA,CAAA,GAAAtmP;QAAA,EA1JmB04F,GAAAA,EAAMszC,aAAAA,GAAAA,KAAAA,GAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,GAAAA,GAAAA,GAAAA,MAAAA,GAAAA,EAAAA,GAAAA,GCH3Bu2G,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAEnB,mBAAAviP,GAAY+qB,IAAAA;AAAQ,gBAAD1rB;AAAA,mBAAA0tB,GAAA,EAAA,MAAA/sB,EAAA,GACjBX,KAAAI,GAAA,KAAA,MAAMsrB,EAAAA,GADW6C,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,YAqCR,SAACiyB,IAAO9xB,IAAOoqC,IAAAA;AACxB,kBAAA5qC,KAGIK,GAAK0rB;AAAAA,eAET8e,GALA7qC,GACE6nC,YAAegD,uBADjB7qC,GAEE6jP,aAGiCvxN,IAAO9xB,IAAOoqC,EAAAA;YAAAA,CAAAA,GA3ChChc,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,2BA8CO,SAAC0N,IAAAA;AACzB,kBAAAtN,KAGIJ,GAAK0rB;AAAAA,eAETqf,GALA3qC,GACEonC,YAAeuD,qBADjB3qC,GAEEojP,aAG+B91O,EAAAA;YAAAA,CAAAA,GApDhB6gB,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,aAuDP,SAACunP,IAAAA;AACX,qBAAY,iBAARA,KACKvnP,GAAKi5F,SAAS,EACnBuuJ,mBAAAA,MACAC,iBAAAA,MAAiB,CAAA,IAEF,gBAARF,KACFvnP,GAAKi5F,SAAS,EACnBwuJ,iBAAAA,MACAD,mBAAAA,MAAmB,CAAA,IAAA;YAHhB,CAAA,GA7DUj5N,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,qBAqEC,SAAAkB,IAAA;AAA4B,kBAAzBf,KAAwBe,GAAxBf,OAAOsqC,KAAiBvpC,GAAjBupC,YAC5B9qC,KAAkDK,GAAK0rB,OAAjD8b,KAAN7nC,GAAM6nC,aAAa8D,KAAnB3rC,GAAmB2rC,eAAew9F,KAAlCnpI,GAAkCmpI,aAC5Bl3C,KAAoBtmD,GAAc2iG,kBAAd,MAAA3iG,IAAay0G,IAAA,EAAsBt1G,EAAAA,CAAAA,GACvDujG,KAA+B1iG,GAAc0iG,6BAAd,MAAA1iG,IAAay0G,IAAA,EAAiCt1G,EAAAA,CAAAA;AACnFq+F,cAAAA,GAAYz4F,sBAAsB,EAAElwC,OAAAA,IAAOsqC,YAAAA,GAAAA,CAAAA,GAC3Cq+F,GAAYn4F,6BAA6B,EAAElG,YAAAA,GAAAA,CAAAA,GACtCmnD,OACCo8C,MACFlF,GAAY/4F,oBAAoB,EAAE5vC,OAAAA,QAAkBsqC,YAAAA,GAAAA,CAAAA,GAEtDjD,GAAYmG,cAAZ,MAAAnG,IAAWu4G,IAAA,EAAkBt1G,EAAAA,CAAAA,GAC7BjD,GAAYoG,aAAZ,MAAApG,IAAWu4G,IAAA,EAAiBt1G,EAAAA,CAAAA,GAC5BjD,GAAYsD,oBAAoBL,EAAAA;YAAAA,CAAAA,GA/ElCzqC,GAAK6/C,QAAQ,EACX4nM,iBAAAA,OACAD,mBAAAA,KAAmB,GAJJxnP;UAAA;AAAA,iBAAAytB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAqFnB,WAAA;AAAU,gBAADO,IAAAd,IAAAO,KAAA,MAEPX,KAeIiG,KAAKylB,OAdPqwN,KADF/7O,GACE+7O,eACApwM,KAFF3rC,GAEE2rC,YACAo/F,KAHF/qI,GAGE+qI,eACAkwG,KAJFj7O,GAIEi7O,iBACAlpJ,KALF/xF,GAKE+xF,UACAvpF,KANFxI,GAMEwI,IACAq4E,KAPF7gF,GAOE6gF,cACAx4C,KARFroC,GAQEqoC,YACA1F,KATF3iC,GASE2iC,eACA6E,KAVFxnC,GAUEwnC,aACAiD,KAXFzqC,GAWEyqC,YACAq+F,KAZF9oI,GAYE8oI,aACAx9F,KAbFtrC,GAaEsrC,eACAE,KAdFxrC,GAcEwrC,WAGIk8M,KAAe7mK,GAAa,cAAA,GAC5B8mK,KAAiB9mK,GAAa,gBAAA,GAC9BokK,KAAcpkK,GAAa,aAAA,GAC3BqpD,KAAYrpD,GAAa,aAAA,IAAa,GACtC8Q,KAAc9Q,GAAa,eAAA,IAAe,GAE1CiR,KAAYmpJ,MAAmBlwG,IAC/B74G,KAASyQ,GAAczQ,OAAAA,GAGvBua,KAAcjB,GAAUzrC,IAAI,aAAA,GAE5B6nP,KAAuBj0N,GAAA,EAAAzyB,KAAAg/I,IAAA,EAAcvsH,GAAA,EAAAgY,EAAAA,EAAU,KAAVA,IACjC,SAACo+F,IAAK5zH,IAAAA;AAAO,kBAADxV,IACZF,KAAM0V,GAAEpW,IAAI,IAAA;AAGlB,qBAFA,UAAAY,KAAAopI,GAAItpI,EAAAA,MAAAA,WAAJE,OAAAopI,GAAItpI,EAAAA,IAAS,CAAA,IACbspI,GAAItpI,EAAAA,EAAKoV,KAAKM,EAAAA,GACP4zH;YAAAA,GACN,CAAA,CAAA,CAAA,CAAA,EANwB,KAAA7oI,IAOnB,SAAC6oI,IAAK5zH,IAAAA;AAAN,qBAAYlV,GAAA,EAAA8oI,EAAAA,EAAG,KAAHA,IAAW5zH,EAAAA;YAAAA,GAAI,CAAA,CAAA;AAGrC,mBACE8f,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,yBAAA,GACZ5sC,KACC+D,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAKitG,SAAS,WAAA;AAAA,qBAAMviI,GAAKknP,UAAU,YAAA;YAAA,GAC9B/oL,WAAS,YAAA,OAAc74D,KAAK45C,MAAM2nM,qBAAqB,QAAA,EAAA,GAC1DvxN,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,gBAAA,GAAgB7oC,GAAA,EAAA,cAAA,QAAA,MAAA,YAAA,CAAA,CAAA,GAE/BuV,GAAUzrC,IAAI,WAAA,IAEXk2B,GAAA,EAAA,cAAA,OAAA,EAAKitG,SAAS,WAAA;AAAA,qBAAMviI,GAAKknP,UAAU,WAAA;YAAA,GAC9B/oL,WAAS,YAAA,OAAc74D,KAAK45C,MAAM4nM,mBAAmB,QAAA,EAAA,GACxDxxN,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,gBAAA,GAAgB7oC,GAAA,EAAA,cAAA,QAAA,MAAA,WAAA,CAAA,CAAA,IAE9B,IAAA,IAIRA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,gBAAA,GAAd,YAAA,CAAA,GAGHisE,KACC90G,GAAA,EAAA,cAAC0xN,IAAD,EACEz1N,QAAQyQ,GAAczQ,OAAAA,GACtB+7G,mBAAmB3iG,GAAc2iG,kBAAd,MAAA3iG,IAAay0G,IAAA,EAAsBt1G,EAAAA,CAAAA,GACtDs3D,SAASk5I,IACTe,eAAe/1O,KAAKylB,MAAMswN,eAC1BD,eAAeA,IACf+L,cAAc,WAAA;AAAA,qBAAMh/G,GAAY/4F,oBAAoB,EAAE5vC,OAAAA,QAAkBsqC,YAAAA,GAAAA,CAAAA;YAAAA,EAAAA,CAAAA,IACxE,IAAA,GAELxkC,KAAK45C,MAAM2nM,oBAAoBvxN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,uBAAA,GAC3C8oL,GAAqBxjP,SACrB6xB,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GACb7oC,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAU,aAAA,GACf7oC,GAAA,EAAA,cAAA,SAAA,MACAA,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,iCAAA,GAAd,MAAA,GACA7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,wCAAA,GAAd,aAAA,CAAA,CAAA,GAGF7oC,GAAA,EAAA,cAAA,SAAA,MAEEH,GAAA,EAAA8xN,EAAAA,EAAoB,KAApBA,IAAyB,SAACvmK,IAAWniF,IAAAA;AAAZ,kBAAAc;AAAA,qBACvBi2B,GAAA,EAAA,cAACyxN,IAAD,EACEl/O,IAAIA,IACJupF,UAAUA,GAASl8E,KAAK3W,GAAEyI,SAAAA,CAAAA,GAC1Bk5E,cAAcA,IACdx4C,YAAYA,IACZ0/M,UAAU1mK,IACVpvD,OAAO0Q,GAAc23B,4BAA4B7vB,IAAY42C,EAAAA,GAC7D5gF,KAAGQ,GAAA,EAAAjB,KAAA,GAAA,OAAKqhF,GAAUthF,IAAI,IAAA,GAAnB,GAAA,CAAA,EAAA,KAAAC,IAA4BqhF,GAAUthF,IAAI,MAAA,CAAA,GAC7CiyF,UAAUrxF,GAAKqxF,UACfg2J,kBAAkBrnP,GAAKsnP,yBACvBtlN,eAAeA,IACf6E,aAAaA,IACbshG,aAAaA,IACbx9F,eAAeA,IACfb,YAAYA,IACZqnD,WAAWA,GAAAA,CAAAA;YAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IA3BS77D,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,8BAAA,GAA8B7oC,GAAA,EAAA,cAAA,KAAA,MAAA,eAAA,CAAA,CAAA,IAkCtE,MAERhwB,KAAK45C,MAAM4nM,kBAAkBxxN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kDAAA,GAC3C7oC,GAAA,EAAA,cAACi0G,IAAD,EACEO,WAAWr6H,OAAAA,GAAAA,GAAAA,EAAIo7B,GAAUzrC,IAAI,WAAA,CAAA,GAC7BgyF,UAAU59D,GAAA,EAAA49D,EAAAA,EAAQ,KAARA,IAAe,GAAA,EAAI,EAAGl8E,KAAK,WAAA,EAAA,CAAA,CAAA,IAEhC,MAEPqc,MAAUua,MAAexmC,KAAK45C,MAAM2nM,qBACpCvxN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,+CAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,yBAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAS,iCAAA,OAAmCryB,GAAY1sC,IAAI,UAAA,KAAe,UAAA,EAAA,GAA/E,cAAA,GAEAk2B,GAAA,EAAA,cAAA,SAAA,MACEA,GAAA,EAAA,cAACgvN,IAAD,EACE9kP,OAAOmrC,GAAciB,mBAAd,MAAAjB,IAAay0G,IAAA,EAAuBt1G,EAAAA,CAAAA,GAC3C86M,cAAc94M,GAAY1sC,IAAI,WAAWoY,OAAAA,GAAAA,IAAAA,EAAAA,CAAAA,EAAQmL,OAAAA,GACjD0uE,UAAU,SAAC7xF,IAAAA;AACT,cAAAQ,GAAKunP,kBAAkB,EAAE/nP,OAAAA,IAAOsqC,YAAAA,GAAAA,CAAAA;YAAAA,GAElCq0B,WAAU,2BACVwmL,WAAU,uBAAA,CAAA,CAAA,CAAA,GAGhBrvN,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,8BAAA,GACb7oC,GAAA,EAAA,cAAC07D,IAAD,EACE3hD,+BAhGmC,SAAC9iB,IAAAA;AAAD,qBAAO47G,GAAY94F,8BAA8B,EAAE7vC,OAAO+sB,IAAGud,YAAAA,GAAAA,CAAAA;YAAAA,GAiGhGmnD,mBAAmBtmD,GAAc2iG,kBAAd,MAAA3iG,IAAay0G,IAAA,EAAsBt1G,EAAAA,CAAAA,GACtDsnD,UAAU59D,GAAA,EAAA49D,EAAAA,EAAQ,KAARA,IAAe,GAAA,EAAI,EAAGl8E,KAAK,aAAA,GACrC42B,aAAaA,IACbC,kBAAkBpB,GAAcoB,iBAAd,MAAApB,IAAay0G,IAAA,EAAqBt1G,EAAAA,CAAAA,GACpDkC,6BAA6BrB,GAAcqB,4BAAd,MAAArB,IAAay0G,IAAA,EAAgCt1G,EAAAA,CAAAA,GAC1EonD,mBAAmBvmD,GAAcumD,kBAAd,MAAAvmD,IAAay0G,IAAA,EAAsBt1G,EAAAA,CAAAA,GACtDqnD,WAAWA,IACXzpD,YAAYA,IACZgpD,mBAAmB/lD,GAAc+iG,qBAAd,MAAA/iG,IAAarqC,GAAA,EAAAb,KAAA2/I,IAAA,EAC3Bt1G,EAAAA,CAAAA,EAD2B,KAAArqC,IAAA,CAE9B,eACA,aAAA,CAAA,CAAA,GAEF8xF,yBAAyB,SAAAzxF,IAAAA;AACvB,cAAAE,GAAK+qB,MAAMo9G,YAAY54F,wBAAwB,EAC7CzwC,MAAMgB,IACNgqC,YAAY9pC,GAAK+qB,MAAM+e,YACvB0F,aAAa,eACbC,aAAa,cAAA,CAAA;YAAA,GAIjB4hD,UAAU,SAAC7xF,IAAOw5B,IAAAA;AAChB,kBAAIA,IAAM;AACR,oBAAMwuN,KAAY78M,GAAcoB,iBAAd,MAAApB,IAAay0G,IAAA,EAAqBt1G,EAAAA,CAAAA,GAC9C29M,KAAch4O,GAAAA,IAAIE,MAAM63O,EAAAA,IAAaA,KAAY/3O,OAAAA,GAAAA,GAAAA,EAAAA;AACvD,uBAAO04H,GAAY/4F,oBAAoB,EACrCtF,YAAAA,IACAtqC,OAAOioP,GAAYt3O,MAAM6oB,IAAMx5B,EAAAA,EAAAA,CAAAA;cAAAA;AAGnC2oI,cAAAA,GAAY/4F,oBAAoB,EAAE5vC,OAAAA,IAAOsqC,YAAAA,GAAAA,CAAAA;YAAAA,GAE3CwnD,sBAAsB,SAACxyF,IAAMU,IAAAA;AAC3B2oI,cAAAA,GAAY74F,wBAAwB,EAClCxF,YAAAA,IACAtqC,OAAAA,IACAV,MAAAA,GAAAA,CAAAA;YAAAA,GAGJ4zB,aAAaiY,GAAciB,mBAAd,MAAAjB,IAAay0G,IAAA,EAAuBt1G,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAxQzBjI,GAAAA,SAAAA;AAAAA,QAAAA,GAAAA,EAAnB0gN,IAAAA,gBA8BG,EACpBnH,eAAergN,SAAS56B,WACxBk7O,eAAetgN,SAAS56B,WACxBm6O,iBAAAA,OACAlwG,eAAAA,MACAy4G,aAAa,CAAA,GACbzxJ,UAAU,CAAA,EAAA,CAAA;ACtCP,YAQQwB,MARa,SAACryF,IAAA;AAAoB,cAAlBgzF,KAAiBhzF,GAAjBgzF,MAAMC,KAAWjzF,GAAXizF;AACjC,iBAAOl+D,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,uBAAA,GAAyBo1B,IAAxC,MAAkDjqE,OAAOkqE,EAAAA,CAAAA;QAAAA,GCU9Dk0J,KAAoC,EACxCr2J,UAVW,WAAA;QAAA,GAWXsC,mBAAmB,CAAA,EAAA,GAEA3B,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,oBAYA,SAAAzxF,IAAAA;AAAAA,eAEjB8wF,GADqBhyF,GAAK0rB,MAAlBsmE,UACC9wF,GAAEuqB,OAAOokD,OAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,qBAAAA,OAVpB,WAAA;AACE,gBAAA3uE,KAAwC+E,KAAKylB,OAArC4oE,KAARpzF,GAAQozF,mBAAmBtC,KAA3B9wF,GAA2B8wF,UACnBI,KAAqCkC,GAArClC,oBAAoB3uD,KAAiB6wD,GAAjB7wD;AACxB2uD,YAAAA,MACFJ,GAASvuD,EAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OASb,WAAA;AACE,gBAAAviC,KAAiC+E,KAAKylB,OAAhC2oE,KAANnzF,GAAMmzF,YAAYE,KAAlBrzF,GAAkBqzF;AAElB,mBACEt+D,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAW+/C,GAAAA,EAAG,iCAAiC,EACpD,UAAYtqB,GAAAA,CAAAA,EAAAA,GAEZt+D,GAAA,EAAA,cAAA,SAAA,EAAO9vB,MAAK,YACV4nI,UAAUx5C,IACV1kB,SAAAA,CAAU0kB,MAAcF,IACxBrC,UAAU/rF,KAAKqiP,iBAAAA,CAAAA,GANnB,kBAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA3nP;QAAA,EAtB2C6hC,GAAAA,SAAAA;AAAAA,QAAAA,GAAAA,EAA9BmwD,IAAAA,gBAEG01J,EAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GCZHX,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAkBnB,mBAAA/mP,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,mBAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,mBAuCV,SAACQ,IAAAA;AAA0B,kBAAnBoqC,KAAkB,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,KAAA,UAAA,CAAA,GAC1C5pC,KAA6BhB,GAAK+rB,OAA5BsmE,KAANrxF,GAAMqxF,UAAU+1J,KAAhBpnP,GAAgBonP;AAUhB,qBAAO/1J,GAAS+1J,IANH,OAAV5nP,MAAiBA,MAAwB,MAAfA,GAAMsE,OACd,OAEAtE,IAGuBoqC,EAAAA;YAAAA,CAAAA,GAlDlBhc,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,oBAqDT,SAACc,IAAAA;AAClB,cAAAd,GAAK+rB,MAAMo9G,YAAY54F,wBAAwB,EAC7CzwC,MAAMgB,IACNgqC,YAAY9qC,GAAK+rB,MAAM+e,YACvB0F,aAAa,cACbC,aAAazwC,GAAK4oP,YAAAA,EAAAA,CAAAA;YAAAA,CAAAA,GA1DMh6N,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,wBA8DL,SAAC6W,IAAAA;AACtB,kBAAApW,KAAyCT,GAAK+rB,OAAxC8b,KAANpnC,GAAMonC,aAAavV,KAAnB7xB,GAAmB6xB,OAAOwY,KAA1BrqC,GAA0BqqC,YACpBtT,KAAYlF,GAAMlyB,IAAI,MAAA,GACtBq3B,KAAUnF,GAAMlyB,IAAI,IAAA;AAC1B,qBAAOynC,GAAYoD,0BAA0BH,IAAYtT,IAAWC,IAAS5gB,EAAAA;YAAAA,CAAAA,GAlEnD+X,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,mBAqEV,WAAA;AAChB,kBAAAuB,KAA6DvB,GAAK+rB,OAA5DiX,KAANzhC,GAAMyhC,eAAe8H,KAArBvpC,GAAqBupC,YAAYs9M,KAAjC7mP,GAAiC6mP,UAAUz8M,KAA3CpqC,GAA2CoqC,eAErCk9M,KAAgB7lN,GAAc23B,4BAA4B7vB,IAAYs9M,EAAAA,KAAa33O,OAAAA,GAAAA,GAAAA,EAAAA,GACjFof,KAAW4C,OAAAA,GAAAA,CAAAA,EAAmBo2N,IAAe,EAAEt2N,QAAQyQ,GAAczQ,OAAAA,EAAAA,CAAAA,EAArE1C,QACFi5N,KAAqBD,GACxBzoP,IAAI,WAAWqQ,OAAAA,GAAAA,GAAAA,EAAAA,CAAAA,EACfkT,OAAAA,EACAqE,MAAAA,GAGG+gO,KAAuBl5N,KAAS4E,OAAAA,GAAAA,CAAAA,EAAgB5E,GAAO/J,KAAAA,GAAQgjO,IAAoB,EAEvF3rK,kBAAAA,KAAkB,CAAA,IACf;AAEL,kBAAK0rK,MAAAA,WAAiBA,GAAczoP,IAAI,OAAA,KAIR,WAA5ByoP,GAAczoP,IAAI,IAAA,GAAmB;AACvC,oBAAIi0F;AAIJ,oBAAIrxD,GAAcN,WAAAA;AAChB2xD,kBAAAA,KAAAA,WACEw0J,GAAczoP,IAAI,WAAA,IAChByoP,GAAczoP,IAAI,WAAA,IAAA,WAClByoP,GAAc1gO,MAAM,CAAC,UAAU,SAAA,CAAA,IAC/B0gO,GAAc1gO,MAAM,CAAC,UAAU,SAAA,CAAA,IAC9B0H,MAAUA,GAAO1H,MAAM,CAAC,SAAA,CAAA;yBACpB6a,GAAczQ,OAAAA,GAAU;AAAC,sBAADlxB,IAC3B68O,KAAoBvyM,GAAc+iG,qBAAd,MAAA/iG,IAAarqC,GAAA,EAAAD,KAAA++I,IAAA,EAAyBt1G,EAAAA,CAAAA,EAAzB,KAAAzpC,IAAA,CAAqC,cAAcrB,GAAK4oP,YAAAA,CAAAA,CAAAA,CAAAA;AAC/Fv0J,kBAAAA,KAAAA,WACEw0J,GAAc1gO,MAAM,CAAC,YAAY+1N,IAAmB,OAAA,CAAA,IAClD2K,GAAc1gO,MAAM,CAAC,YAAY+1N,IAAmB,OAAA,CAAA,IAAA,WACpD2K,GAAc1gO,MAAM,CAAC,WAAW2gO,IAAoB,SAAA,CAAA,IACpDD,GAAc1gO,MAAM,CAAC,WAAW2gO,IAAoB,SAAA,CAAA,IAAA,WACpDD,GAAczoP,IAAI,SAAA,IAClByoP,GAAczoP,IAAI,SAAA,IAAA,YACjByvB,MAAUA,GAAOzvB,IAAI,SAAA,KACrByvB,MAAUA,GAAOzvB,IAAI,SAAA,IAAA,YACrByvB,MAAUA,GAAOzvB,IAAI,SAAA,KACrByvB,MAAUA,GAAOzvB,IAAI,SAAA,IACtByoP,GAAczoP,IAAI,SAAA;gBAAA;AAAA,2BAKrBi0F,MAA+B77E,GAAAA,KAAKG,OAAO07E,EAAAA,MAE5CA,KAAehqE,OAAAA,GAAAA,CAAAA,EAAUgqE,EAAAA,IAAAA,WAKxBA,KACDr0F,GAAKgpP,gBAAgB30J,EAAAA,IAErBxkE,MAAiC,aAAvBA,GAAOzvB,IAAI,MAAA,KAClB2oP,MAAAA,CACCF,GAAczoP,IAAI,UAAA,KAOtBJ,GAAKgpP,gBACHxwO,GAAAA,KAAKG,OAAOowO,EAAAA,IACVA,KAEA1+N,OAAAA,GAAAA,CAAAA,EAAU0+N,EAAAA,CAAAA;cAAAA;YAAAA,CAAAA,GA3IlB/oP,GAAKipP,gBAAAA,GAHqBjpP;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,oCAAA,OAM5B,SAAiC+qB,IAAAA;AAC/B,gBAOIugH,IAPEtpG,KAAwCjX,GAAxCiX,eAAe8H,KAAyB/e,GAAzB+e,YAAYs9M,KAAar8N,GAAbq8N,UAC7B71N,KAASyQ,GAAczQ,OAAAA,GAEvB4oC,KAAoBn4B,GAAc23B,4BAA4B7vB,IAAYs9M,EAAAA,KAAa,IAAI33O,GAAAA;AAM/F,gBAJA0qD,KAAoBA,GAAkB7zC,QAAAA,IAAY8gO,KAAWjtL,IAI1D5oC,IAAQ;AACT,kBAAM1C,KAAW4C,OAAAA,GAAAA,CAAAA,EAAmB0oC,IAAmB,EAAE5oC,QAAAA,GAAAA,CAAAA,EAAnD1C;AACNy8G,cAAAA,KAAYz8G,KAASA,GAAOzvB,IAAI,MAAA,IAAA;YAAUoK;AAE1C8hI,cAAAA,KAAYnxE,KAAoBA,GAAkB/6D,IAAI,MAAA,IAAA;AAExD,gBAEII,IAFAyrC,KAAakvB,KAAoBA,GAAkB/6D,IAAI,OAAA,IAAA;AAAWoK,uBAIjEyhC,KACHzrC,KAAQyrC,KACEm8M,GAAShoP,IAAI,UAAA,KAAeksI,MAAaA,GAAUxnI,SAC7DtE,KAAQ8rI,GAAUtkH,MAAAA,IAAAA,WAGfxnB,MAAuBA,OAAUyrC,MACpC3lC,KAAK0iP,gBAAgB5xN,OAAAA,GAAAA,CAAAA,EAAe52B,EAAAA,CAAAA,GAGtC8F,KAAK2iP,gBAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,eAAAA,OAiHP,WAAA;AAAe,gBAAD1nP,IACJ+wB,KAAUhsB,KAAKylB,MAAfuG;AAER,mBAAIA,KAEJhxB,GAAA,EAAAC,KAAA,GAAA,OAAU+wB,GAAMlyB,IAAI,MAAA,GAApB,GAAA,CAAA,EAAA,KAAAmB,IAA+B+wB,GAAMlyB,IAAI,IAAA,CAAA,IAFvB;UAAA,EAAA,GAAA,EAAA,KAAA,UAAA,OAKpB,WAAA;AAAU,gBAADmB,IAAAd,IAAAO,IAAAX,IACPL,KAAuIsG,KAAKylB,OAAvIuG,KAALtyB,GAAKsyB,OAAO81N,KAAZpoP,GAAYooP,UAAUlnK,KAAtBlhF,GAAsBkhF,cAAcx4C,KAApC1oC,GAAoC0oC,YAAYypD,KAAhDnyF,GAAgDmyF,WAAWtpF,KAA3D7I,GAA2D6I,IAAIw/O,KAA/DroP,GAA+DqoP,kBAAkBrlN,KAAjFhjC,GAAiFgjC,eAAe8H,KAAhG9qC,GAAgG8qC,YAAYsnD,KAA5GpyF,GAA4GoyF,UAAUzmD,KAAtH3rC,GAAsH2rC,eAElHpZ,KAASyQ,GAAczQ,OAAAA,GAE3BhB,KAAiDmX,GAAAA,GAAzCk7M,KAARryN,GAAQqyN,gBAAgB3wJ,KAAxB1hE,GAAwB0hE;AAMxB,gBAJI3gE,OACFA,KAAQ81N,KAAAA,CAGNA;AAAU,qBAAO;AAGrB,gBAsCIc,IACAC,IACAC,IACAC,IAzCE11J,KAAiBzS,GAAa,gBAAA,GAC9BooK,KAAYpoK,GAAa,WAAA,GAC3B3lB,KAASjpC,GAAMlyB,IAAI,IAAA,GACnBmpP,KAAuB,WAAXhuL,KAAoB,OAChCjlC,GAAA,EAAA,cAACgzN,IAAD,EAAWpoK,cAAcA,IACdx4C,YAAaA,IACb7/B,IAAIA,IACJypB,OAAOA,IACPymC,UAAW/1B,GAAcq5B,mBAAmBvxB,EAAAA,GAC5C0+M,eAAgBxmN,GAAc8K,kBAAkBhD,EAAAA,EAAY1qC,IAAI,oBAAA,GAChEiyF,UAAU/rF,KAAK0iP,iBACfX,kBAAkBA,IAClBl2J,WAAYA,IACZnvD,eAAgBA,IAChB8H,YAAaA,GAAAA,CAAAA,GAGtB6nD,KAAezR,GAAa,cAAA,GAC5BwR,KAAWxR,GAAa,YAAA,IAAY,GACpC0S,KAAe1S,GAAa,cAAA,GAC5B8R,KAAwB9R,GAAa,uBAAA,GACrC4R,KAA8B5R,GAAa,6BAAA,GAC3C6R,KAAU7R,GAAa,SAAA,GAEvBrxD,KAAW4C,OAAAA,GAAAA,CAAAA,EAAmBH,IAAO,EAAEC,QAAAA,GAAAA,CAAAA,EAAvC1C,QACFg5N,KAAgB7lN,GAAc23B,4BAA4B7vB,IAAYs9M,EAAAA,KAAa33O,OAAAA,GAAAA,GAAAA,EAAAA,GAEnF6f,KAAST,KAASA,GAAOzvB,IAAI,QAAA,IAAY,MACzCoG,KAAOqpB,KAASA,GAAOzvB,IAAI,MAAA,IAAU,MACrCqpP,KAAW55N,KAASA,GAAO1H,MAAM,CAAC,SAAS,MAAA,CAAA,IAAW,MACtDuhO,KAAwB,eAAXnuL,IACbouL,KAAsB,cAAc/8N,GAAAA,GACpCywC,KAAW/qC,GAAMlyB,IAAI,UAAA,GAErBI,KAAQqoP,KAAgBA,GAAczoP,IAAI,OAAA,IAAW,IACrD0zF,KAAYb,KAAuBj8D,OAAAA,GAAAA,CAAAA,EAAoBnH,EAAAA,IAAU,MACjEwzN,KAAaO,KAAiB9sN,OAAAA,GAAAA,CAAAA,EAAcxE,EAAAA,IAAS,MAMrDs3N,KAAAA;AA+BJ,mBAAA,WA7BKt3N,MAAuBzC,OAC1Bq5N,KAAar5N,GAAOzvB,IAAI,OAAA,IAAA,WAGtB8oP,MACFC,KAAYD,GAAW9oP,IAAI,MAAA,GAC3BgpP,KAAoBF,GAAW9oP,IAAI,SAAA,KAC1ByvB,OACTs5N,KAAYt5N,GAAOzvB,IAAI,MAAA,IAGpB+oP,MAAaA,GAAUrkP,QAAQqkP,GAAUrkP,OAAO,MACnD8kP,KAAAA,OAAqB,WAIlBt3N,OACCzC,OACFu5N,KAAoBv5N,GAAOzvB,IAAI,SAAA,IAAA,WAE7BgpP,OACFA,KAAoB92N,GAAMlyB,IAAI,SAAA,IAAA,YAEhCipP,KAAe/2N,GAAMlyB,IAAI,SAAA,OAEvBipP,KAAe/2N,GAAMlyB,IAAI,WAAA,KAK3Bk2B,GAAA,EAAA,cAAA,MAAA,EAAI,mBAAiBhE,GAAMlyB,IAAI,MAAA,GAAS,iBAAekyB,GAAMlyB,IAAI,IAAA,EAAA,GAC/Dk2B,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,sBAAA,GACZ7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAW9B,KAAW,6BAA6B,kBAAA,GACpD/qC,GAAMlyB,IAAI,MAAA,GACTi9D,KAAkB/mC,GAAA,EAAA,cAAA,QAAA,MAAA,OAAA,IAAP,IAAA,GAEhBA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GACX34D,IACAijP,MAAY,IAAJ,OAAQA,IAAR,GAAA,GACRn5N,MAAUgG,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,cAAA,GAAhB,MAAiC7uC,IAAjC,GAAA,CAAA,GAEdgG,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,wBAAA,GACX5sC,MAAUD,GAAMlyB,IAAI,YAAA,IAAgB,eAAc,IAAA,GAEtDk2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,gBAAA,GAAf,KAAkC7sC,GAAMlyB,IAAI,IAAA,GAA5C,GAAA,GACG6yF,MAAyBa,GAAUhvF,OAAcqxB,GAAA,EAAA50B,KAAAuyF,GAAUlsF,SAAAA,CAAAA,EAAV,KAAArG,IAAyB,SAAAA,IAAA;AAAA,kBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAET,KAAFE,GAAA,CAAA,GAAO0F,KAAP1F,GAAA,CAAA;AAAA,qBAAcs1B,GAAA,EAAA,cAACs9D,IAAD,EAAc9yF,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKK,IAAL,GAAA,CAAA,EAAA,KAAAL,IAAYiG,EAAAA,GAAK6tF,MAAMzzF,IAAK0zF,MAAM9tF,GAAAA,CAAAA;YAAAA,CAAAA,IAAjG,MAC1Ck9O,MAAmBP,GAAWv+O,OAAcqxB,GAAA,EAAA11B,KAAA4iP,GAAWz7O,SAAAA,CAAAA,EAAX,KAAAnH,IAA0B,SAAAc,IAAA;AAAA,kBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAET,KAAFE,GAAA,CAAA,GAAO0F,KAAP1F,GAAA,CAAA;AAAA,qBAAcs1B,GAAA,EAAA,cAACs9D,IAAD,EAAc9yF,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKK,IAAL,GAAA,CAAA,EAAA,KAAAL,IAAYiG,EAAAA,GAAK6tF,MAAMzzF,IAAK0zF,MAAM9tF,GAAAA,CAAAA;YAAAA,CAAAA,IAAlG,IAAA,GAG1C4vB,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,6BAAA,GACV7sC,GAAMlyB,IAAI,aAAA,IAAiBk2B,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAASjI,GAAMlyB,IAAI,aAAA,EAAA,CAAA,IAAqB,MAAA,CAE5EmpP,MAAcp3J,MAAAA,CAAcy3J,KAK3B,OAJFtzN,GAAA,EAAA,cAACo8D,IAAD,EAAUvzB,WAAU,mBAAkB5kC,QAClC,+BAA+BpE,GAAA,EAAAgzN,EAAAA,EAAS,KAATA,IAAc,SAASl3N,IAAAA;AAClD,qBAAOA;YAAAA,CAAAA,EACNrpB,QAAAA,EAAU2d,KAAK,IAAA,EAAA,CAAA,GAAA,CAIvBgjO,MAAcp3J,MAAAA,WAAci3J,KAE3B,OADF9yN,GAAA,EAAA,cAACo8D,IAAD,EAAUvzB,WAAU,sBAAqB5kC,QAAQ,4BAA4B6uN,GAAAA,CAAAA,GAAAA,CAI5EG,MAAcp3J,MAAAA,WAAck3J,KAE3B,OADF/yN,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAAQ,sBAAsB8uN,GAAAA,CAAAA,GAIxCK,MAAAA,CAAeC,MAAwBrzN,GAAA,EAAA,cAAA,OAAA,MAAA,+CAAA,GAGvC/D,MAAUD,GAAMlyB,IAAI,UAAA,IAClBk2B,GAAA,EAAA,cAAA,WAAA,EAAS6oC,WAAU,qBAAA,GACjB7oC,GAAA,EAAA,cAACw8D,IAAD,EACEgC,UAAUxiE,GAAMlyB,IAAI,UAAA,GACpB60F,UAAU3uF,KAAKujP,kBACf30J,aAAa5uF,KAAK0iP,iBAClB9nK,cAAcA,IACdiU,uBAAAA,MACAJ,YAAYppD,GAAc+iG,qBAAd,MAAA/iG,IAAarqC,GAAA,EAAAN,KAAAo/I,IAAA,EAAyBt1G,EAAAA,CAAAA,EAAzB,KAAA9pC,IAAA,CAAqC,cAAcsF,KAAKsiP,YAAAA,CAAAA,CAAAA,CAAAA,GACjF5zJ,uBAAuBx0F,GAAAA,CAAAA,CAAAA,IAGzB,MAGJ+oP,KAAY,OACVjzN,GAAA,EAAA,cAACq9D,IAAD,EAAgB9qF,IAAIA,IACJq4E,cAAcA,IACd1gF,OAAQA,IACR68D,UAAWA,IACX+wE,UAAAA,CAAWj8C,IACXxuD,aAAarR,GAAMlyB,IAAI,MAAA,GACvBiyF,UAAW/rF,KAAK0iP,iBAChB/4N,QAAS44N,GAAczoP,IAAI,QAAA,GAC3ByvB,QAASA,GAAAA,CAAAA,GAK3B05N,MAAa15N,KAASyG,GAAA,EAAA,cAACq8D,IAAD,EAAczR,cAAeA,IACfkR,UAAUA,GAASl8E,KAAK,QAAA,GACxBwyB,YAAaA,IACbypD,WAAYA,IACZnvD,eAAgBA,IAChBnT,QAASA,IACT0tD,SAAUgsK,IACVpsK,kBAAAA,KAAmB,CAAA,IACnD,MAAA,CAIHosK,MAAap3J,MAAa7/D,GAAMlyB,IAAI,iBAAA,IACrCk2B,GAAA,EAAA,cAAC08D,IAAD,EACEX,UAAU/rF,KAAKgsF,sBACfoC,YAAY1xD,GAAc+I,6BAA6BjB,IAAYxY,GAAMlyB,IAAI,MAAA,GAASkyB,GAAMlyB,IAAI,IAAA,CAAA,GAChGw0F,YAAAA,CAAat8D,OAAAA,GAAAA,CAAAA,EAAa93B,EAAAA,EAAAA,CAAAA,IAC1B,MAIF+xB,MAAUD,GAAMlyB,IAAI,UAAA,IAClBk2B,GAAA,EAAA,cAACy8D,IAAD,EACExV,SAASjrD,GAAMnK,MAAM,CACnB,YACAwjB,GAAc+iG,qBAAd,MAAA/iG,IAAarqC,GAAA,EAAAjB,KAAA+/I,IAAA,EAAyBt1G,EAAAA,CAAAA,EAAzB,KAAAzqC,IAAA,CAAqC,cAAciG,KAAKsiP,YAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAEvE1nK,cAAcA,IACdx4C,YAAYA,GAAAA,CAAAA,IAEZ,IAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA1nC;QAAA,EA7W0B6hC,GAAAA,SAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,MAAAA,GAAAA,EAAAA,EAAAA,GCLrB2gN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,4BAcQ,WAAA;AACzB,kBAAAjiP,KAAmDlB,GAAK0rB,OAAlDiX,KAANzhC,GAAMyhC,eAAe6E,KAArBtmC,GAAqBsmC,aAAa7N,KAAlCz4B,GAAkCy4B,MAAM1E,KAAxC/zB,GAAwC+zB;AAExC,qBADAuS,GAAYmD,eAAe,CAAChR,IAAM1E,EAAAA,CAAAA,GAC3B0N,GAAc45B,sBAAsB,CAAC5iC,IAAM1E,EAAAA,CAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,6BAGxB,WAAA;AAC1B,kBAAA/zB,KAAkElB,GAAK0rB,OAAjEiO,KAANz4B,GAAMy4B,MAAM1E,KAAZ/zB,GAAY+zB,QAAQ0N,KAApBzhC,GAAoByhC,eAAe2I,KAAnCpqC,GAAmCoqC,eAAew9F,KAAlD5nI,GAAkD4nI,aAC9Cr4F,KAAmB,EACrB2+F,kBAAAA,OACAP,qBAAqB,CAAA,EAAA;AAGvB/F,cAAAA,GAAYp4F,8BAA8B,EAAE/W,MAAAA,IAAM1E,QAAAA,GAAAA,CAAAA;AAClD,kBAAIy5G,KAAqC/rG,GAAc65B,sCAAsC,CAAC7iC,IAAM1E,EAAAA,CAAAA,GAChG25G,KAAuBtjG,GAAcoB,iBAAiB/S,IAAM1E,EAAAA,GAC5Dw0N,KAAmCn+M,GAAcixB,sBAAsB,CAAC5iC,IAAM1E,EAAAA,CAAAA,GAC9E05G,KAAyBrjG,GAAciB,mBAAmB5S,IAAM1E,EAAAA;AAEpE,kBAAA,CAAKw0N;AAGH,uBAFAh5M,GAAiB2+F,mBAAAA,MACjBtG,GAAYt4F,4BAA4B,EAAE7W,MAAAA,IAAM1E,QAAAA,IAAQwb,kBAAAA,GAAAA,CAAAA,GAAAA;AAG1D,kBAAA,CAAKi+F;AACH,uBAAA;AAEF,kBAAIG,KAAsBvjG,GAAcmjG,wBAAwB,EAC9DC,oCAAAA,IACAC,wBAAAA,IACAC,sBAAAA,GAAAA,CAAAA;AAEF,qBAAA,CAAKC,MAAuBA,GAAoBzqI,SAAS,MAGzD,GAAA,EAAAyqI,EAAAA,EAAmB,KAAnBA,IAA4B,SAAC66G,IAAAA;AAC3Bj5M,gBAAAA,GAAiBo+F,oBAAoBh5H,KAAK6zO,EAAAA;cAAAA,CAAAA,GAE5C5gH,GAAYt4F,4BAA4B,EAAE7W,MAAAA,IAAM1E,QAAAA,IAAQwb,kBAAAA,GAAAA,CAAAA,GAAAA;YACjD,CAAA,GAAAliB,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,8BAGoB,WAAA;AAC3B,kBAAAkB,KAA+ClB,GAAK0rB,OAA9C8b,KAANtmC,GAAMsmC,aAAagE,KAAnBtqC,GAAmBsqC,WAAW7R,KAA9Bz4B,GAA8By4B,MAAM1E,KAApC/zB,GAAoC+zB;AAChC,cAAAj1B,GAAK0rB,MAAMuwN,aAEbj8O,GAAK0rB,MAAMuwN,UAAAA,GAEbz0M,GAAY0F,QAAQ,EAAE1B,WAAAA,IAAW7R,MAAAA,IAAM1E,QAAAA,GAAAA,CAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,8BAGZ,WAAA;AAC3B,kBAAA/zB,KAAoClB,GAAK0rB,OAAnC8b,KAANtmC,GAAMsmC,aAAa7N,KAAnBz4B,GAAmBy4B,MAAM1E,KAAzB/zB,GAAyB+zB;AAEzBuS,cAAAA,GAAYsD,oBAAoB,CAACnR,IAAM1E,EAAAA,CAAAA,GACvCzsB,IAAA,EAAW,WAAA;AACTg/B,gBAAAA,GAAYmD,eAAe,CAAChR,IAAM1E,EAAAA,CAAAA;cAAAA,GACjC,EAAA;YAAA,CAAA,GAAA1G,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,0BAGoB,SAAC2pP,IAAAA;AACpBA,cAAAA,KACF3pP,GAAK4pP,2BAAAA,IAEL5pP,GAAK6pP,2BAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,WAIC,WAAA;AACR,kBAAIC,KAAe9pP,GAAK+pP,yBAAAA,GACpBC,KAAoBhqP,GAAKiqP,0BAAAA,GACzBN,KAASG,MAAgBE;AAC7B,cAAAhqP,GAAKkqP,uBAAuBP,EAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,2BAGJ,SAAEj8O,IAAAA;AAAF,qBAAW1N,GAAK0rB,MAAM8b,YAAYwD,oBAAoB,CAAChrC,GAAK0rB,MAAMiO,MAAM35B,GAAK0rB,MAAMuJ,MAAAA,GAASvnB,EAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAEtH,WAAA;AACE,gBAAQqgI,KAAa9nI,KAAKylB,MAAlBqiH;AACR,mBACI93G,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAU,oCAAmCokE,SAAUj9H,KAAKi9H,SAAU6K,UAAUA,GAAAA,GAAxF,SAAA;UAAA,EAAA,CAAA,CAAA,GAAAptI;QAAA,EA9F6B6hC,GAAAA,SAAAA,GCGhBs6F,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAMnB,WAAA;AAAU,gBAAD57H,IACPd,KAAgC6F,KAAKylB,OAA/BmqC,KAANz1D,GAAMy1D,SAASgrB,KAAfzgF,GAAeygF,cAETspK,KAAWtpK,GAAa,UAAA,GACxBwR,KAAWxR,GAAa,YAAA,IAAY;AAE1C,mBAAMhrB,MAAYA,GAAQpxD,OAIxBwxB,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,iBAAA,GAAd,UAAA,GACA7oC,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAU,UAAA,GACf7oC,GAAA,EAAA,cAAA,SAAA,MACEA,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GACZ7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GAAd,MAAA,GACA7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GAAd,aAAA,GACA7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GAAd,MAAA,CAAA,CAAA,GAGJ7oC,GAAA,EAAA,cAAA,SAAA,MAEEH,GAAA,EAAA50B,KAAA20D,GAAQtuD,SAAAA,CAAAA,EAAR,KAAArG,IAAwB,SAAAA,IAAA;AAAsB,kBAADd,KAAAo7I,IAAA,EAAAt6I,IAAA,CAAA,GAAlBT,KAAkBL,GAAA,CAAA,GAAbgkI,KAAahkI,GAAA,CAAA;AAC3C,kBAAA,CAAI6rB,GAAAA,EAAG7b,IAAIE,MAAM8zH,EAAAA;AACf,uBAAO;AAGT,kBAAM9gG,KAAc8gG,GAAOrkI,IAAI,aAAA,GACzBoG,KAAOi+H,GAAOt8G,MAAM,CAAC,QAAA,CAAA,IAAas8G,GAAOt8G,MAAM,CAAC,UAAU,MAAA,CAAA,IAAWs8G,GAAOt8G,MAAM,CAAC,MAAA,CAAA,GACnFsiO,KAAgBhmH,GAAOt8G,MAAM,CAAC,UAAU,SAAA,CAAA;AAE9C,qBAAQmO,GAAA,EAAA,cAAA,MAAA,EAAIx1B,KAAMA,GAAAA,GAChBw1B,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GAAer+D,EAAAA,GAC7Bw1B,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GACXx7B,KAAqBrN,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAASoJ,GAAAA,CAAAA,IAA1B,IAAA,GAEjBrN,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,aAAA,GAAe34D,IAA7B,KAAsCikP,KAAgBn0N,GAAA,EAAA,cAACk0N,IAAD,EAAUh5N,SAAU,WAAYk5N,SAAUD,IAAgBE,WA5C9G,iBAAA,CAAA,IA4C2I,IAAA,CAAA;YAAA,CAAA,EAE9I/hP,QAAAA,CAAAA,CAAAA,CAAAA,IA/BF;UAAA,EAAA,CAAA,CAAA,GAAA5H;QAAA,EAbwB04F,GAAAA,EAAM72D,SAAAA,GCFtB+nN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAUnB,WAAA;AACE,gBAAArpP,KAAoF+E,KAAKylB,OAAnF8+N,KAANtpP,GAAMspP,eAAerhN,KAArBjoC,GAAqBioC,cAAc02F,KAAnC3+H,GAAmC2+H,iBAAiBiG,KAApD5kI,GAAoD4kI,eAE9Cw8G,MAAWzhK,GAFjB3/E,GAAmE2/E,cAErC,UAAA;AAE9B,gBAAG2pK,MAAiBA,GAAcC;AAChC,kBAAIA,KAAaD,GAAcC;AAGjC,gBAAI76N,KAASuZ,GAAaI,UAAAA,GAGtBmhN,KAAqB1pP,GAAA,EAAA4uB,EAAAA,EAAM,KAANA,IAAc,SAAAyB,IAAAA;AAAG,qBAAwB,aAApBA,GAAItxB,IAAI,MAAA,KAAkD,YAArBsxB,GAAItxB,IAAI,OAAA;YAAA,CAAA;AAE3F,gBAAA,CAAI2qP,MAAsBA,GAAmB92O,MAAAA,IAAU;AACrD,qBAAO;AAGT,gBAAI+2O,KAAY9qH,GAAgBR,QAAQ,CAAC,WAAA,GAAA,IAAc,GAGnDurH,KAAiBF,GAAmBh4O,OAAO,SAAA2e,IAAAA;AAAG,qBAAIA,GAAItxB,IAAI,MAAA;YAAA,CAAA;AAE9D,mBACEk2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,iBAAA,GACb7oC,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAU,QAAA,GAChB7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,gBAAA,GAAd,QAAA,GACA7oC,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAU,yBAAwBokE,SARzB,WAAA;AAAA,qBAAM4C,GAAcl9D,KAAK,CAAC,WAAA,GAAA,CAAe+hL,EAAAA;YAAAA,EAAAA,GAQeA,KAAY,SAAS,MAAA,CAAA,GAEhG10N,GAAA,EAAA,cAACqsN,IAAD,EAAUQ,UAAW6H,IAAYE,UAAAA,KAAQ,GACvC50N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,SAAA,GACXhpC,GAAA,EAAA80N,EAAAA,EAAc,KAAdA,IAAmB,SAACv5N,IAAKnyB,IAAAA;AACzB,kBAAIiH,KAAOkrB,GAAItxB,IAAI,MAAA;AACnB,qBAAY,aAAToG,MAA8B,WAATA,KACf8vB,GAAA,EAAA,cAAC,IAAD,EAAiBx1B,KAAMvB,IAAIwN,OAAQ2kB,GAAItxB,IAAI,OAAA,KAAYsxB,IAAMo5N,YAAYA,GAAAA,CAAAA,IAEtE,WAATtkP,KACM8vB,GAAA,EAAA,cAAC,IAAD,EAAex1B,KAAMvB,IAAIwN,OAAQ2kB,IAAMo5N,YAAYA,GAAAA,CAAAA,IAAAA;YAD5D,CAAA,CAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA9pP;QAAA,EA9CsB04F,GAAAA,EAAM72D,SAAAA,GAyDpCsoN,KAAkB,SAAC5pP,IAAA;AAA6B,cAA1BwL,KAAyBxL,GAAzBwL,OAAO+9O,KAAkBvpP,GAAlBupP;AACjC,cAAA,CAAI/9O;AACF,mBAAO;AAET,cAAIq+O,KAAYr+O,GAAM3M,IAAI,MAAA;AAE1B,iBACEk2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,gBAAA,GACVpyD,KACDupB,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MAAOvpB,GAAM3M,IAAI,QAAA,KAAa2M,GAAM3M,IAAI,OAAA,IACtCirP,GAAYt+O,GAAM3M,IAAI,QAAA,CAAA,IAAa,MAAM2M,GAAM3M,IAAI,OAAA,IAAW,IAC9D2M,GAAM3M,IAAI,MAAA,IAAUk2B,GAAA,EAAA,cAAA,SAAA,MAAA,QAAYvpB,GAAM3M,IAAI,MAAA,CAAA,IAAkB,IAAA,GAC9Dk2B,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,iBAAA,GACZpyD,GAAM3M,IAAI,SAAA,CAAA,GAEdk2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GACXisL,MAAaN,KAAax0N,GAAA,EAAA,cAAA,KAAA,EAAGitG,SAASr1G,GAAA,EAAA48N,EAAAA,EAAU,KAAVA,IAAgB,MAAMM,EAAAA,EAAAA,GAAlC,iBAA6DA,EAAAA,IAAkB,IAAA,CAAA,IATtG,IAAA;QAAA,GAiBXE,KAAgB,SAAC/pP,IAAA;AAA6B,cAA1BwL,KAAyBxL,GAAzBwL,OAAO+9O,KAAkBvpP,GAAlBupP,YAC3BS,KAAkB;AAYtB,iBAVGx+O,GAAM3M,IAAI,MAAA,IAETmrP,KADC/yO,GAAAA,KAAKG,OAAO5L,GAAM3M,IAAI,MAAA,CAAA,IACLk2B,GAAA,EAAA,cAAA,SAAA,MAAA,OAAYvpB,GAAM3M,IAAI,MAAA,EAAQmmB,KAAK,GAAA,CAAA,IAEnC+P,GAAA,EAAA,cAAA,SAAA,MAAA,OAAYvpB,GAAM3M,IAAI,MAAA,CAAA,IAElC2M,GAAM3M,IAAI,MAAA,KAAA,CAAY0qP,OAC9BS,KAAkBj1N,GAAA,EAAA,cAAA,SAAA,MAAA,YAAiBvpB,GAAM3M,IAAI,MAAA,CAAA,IAI7Ck2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,gBAAA,GACVpyD,KACDupB,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MAAM+0N,GAAYt+O,GAAM3M,IAAI,QAAA,CAAA,IAAa,MAAM2M,GAAM3M,IAAI,OAAA,GAAzD,QAA2EmrP,EAAAA,GAC3Ej1N,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,UAAA,GAAYpyD,GAAM3M,IAAI,SAAA,CAAA,GACtCk2B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GACX2rL,KACAx0N,GAAA,EAAA,cAAA,KAAA,EAAGitG,SAASr1G,GAAA,EAAA48N,EAAAA,EAAU,KAAVA,IAAgB,MAAM/9O,GAAM3M,IAAI,MAAA,CAAA,EAAA,GAA5C,iBAAqE2M,GAAM3M,IAAI,MAAA,CAAA,IAC7E,IAAA,CAAA,IAPC,IAAA;QAAA;AAejB,iBAASirP,GAAY77N,IAAAA;AAAM,cAAD/uB;AACxB,iBAAO01B,GAAA,EAAA11B,MAAC+uB,MAAO,IACZuF,MAAM,GAAA,CAAA,EADF,KAAAt0B,IAEA,SAAAq0B,IAAAA;AAAM,mBAAIA,GAAO,CAAA,EAAG+d,YAAAA,IAAgBre,GAAA,EAAAM,EAAAA,EAAM,KAANA,IAAa,CAAA;UAAA,CAAA,EACrDvO,KAAK,GAAA;QAAA;AAQV4kO,WAAgB3rI,eAAe,EAC7BsrI,YAAY,KAAA;AC5Hd,YAEqBxF,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,mBAmCD,SAAA/jP,IAAAA;AAAC,qBAAIlB,GAAK0rB,MAAMsmE,SAAS9wF,GAAEuqB,OAAOtrB,KAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,qBAAAA,OAjBpD,WAAA;AAEK8F,iBAAKylB,MAAM65N,gBACZt/O,KAAKylB,MAAMsmE,SAAS/rF,KAAKylB,MAAM65N,aAAa59N,MAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,oCAAAA,OAIhD,SAAiCwjE,IAAAA;AAAY,gBAAD/qF;AACtC+qF,YAAAA,GAAUo6J,gBAAiBp6J,GAAUo6J,aAAa9gP,SAIlD,GAAA,EAAArE,KAAA+qF,GAAUo6J,YAAAA,EAAV,KAAAnlP,IAAgC+qF,GAAUhrF,KAAAA,KAC5CgrF,GAAU6G,SAAS7G,GAAUo6J,aAAa59N,MAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAM9C,WAAA;AACE,gBAAAzmB,KAA6E+E,KAAKylB,OAA5E25N,KAANnkP,GAAMmkP,cAAcC,KAApBpkP,GAAoBokP,WAAWxmL,KAA/B59D,GAA+B49D,WAAWymL,KAA1CrkP,GAA0CqkP,cAAcH,KAAxDlkP,GAAwDkkP,WAAWjlP,KAAnEe,GAAmEf;AAEnE,mBAAMolP,MAAiBA,GAAa9gP,OAIlCwxB,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAY,2BAA4BA,MAAa,IAAA,GACxD7oC,GAAA,EAAA,cAAA,UAAA,EAAQ,iBAAeovN,IAAc,cAAYC,IAAWxmL,WAAU,gBAAernC,IAAI2tN,IAAWpzJ,UAAU/rF,KAAK0iP,iBAAiBxoP,OAAOA,MAAS,GAAA,GAChJ21B,GAAA,EAAAyvN,EAAAA,EAAY,KAAZA,IAAkB,SAAC73O,IAAAA;AACnB,qBAAOuoB,GAAA,EAAA,cAAA,UAAA,EAAQx1B,KAAMiN,IAAMvN,OAAQuN,GAAAA,GAAQA,EAAAA;YAAAA,CAAAA,EAC1CnF,QAAAA,CAAAA,CAAAA,IAPA;UAAA,EAAA,CAAA,CAAA,GAAA5H;QAAA,EAzC4B04F,GAAAA,EAAM72D,SAAAA;AAAAA,QAAAA,GAAAA,EAA1ByiN,IAAAA,gBAYG,EACpBjzJ,UAfS,WAAA;QAAA,GAgBT7xF,OAAO,MACPolP,cAAc96O,OAAAA,GAAAA,MAAAA,EAAO,CAAC,kBAAA,CAAA,EAAA,CAAA;AAAA,YAAA,KAAA9J,GAAA,EAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA,KAAAA,GAAA,EAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA,KAAAA,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GAAA,KAAA,CAAA,cAAA,MAAA,GAAA,KAAA,CAAA,QAAA,gBAAA,UAAA,UAAA,WAAA,OAAA;ACnB1B,iBAASwqP,KAAAA;AAAgB,mBAAAjqP,IAAAd,KAAA,UAAA,QAAN6/C,KAAM,IAAA,MAAA7/C,EAAA,GAAAJ,KAAA,GAAAA,KAAAI,IAAAJ;AAANigD,YAAAA,GAAMjgD,EAAA,IAAA,UAAAA,EAAA;AACvB,iBAAO,GAAA,EAAAkB,KAAAF,GAAA,EAAAi/C,EAAAA,EAAI,KAAJA,IAAY,SAAAx0C,IAAAA;AAAC,mBAAA,CAAA,CAAMA;UAAAA,CAAAA,EAAGya,KAAK,GAAA,CAAA,EAA3B,KAAAhlB,EAAA;QAAA;AAGF,YAAMkqP,KAAb,SAAAlqP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OACE,WAAA;AACE,gBAAAO,KAAoC+E,KAAKylB,OAAnC2/N,KAANnqP,GAAMmqP,YAAYC,KAAlBpqP,GAAkBoqP,MAASziO,KAA3B,GAAA,EAAA3nB,IAAA,EAAA;AAGA,gBAAGmqP;AACD,qBAAOp1N,GAAA,EAAA,cAAA,WAAapN,EAAAA;AAEtB,gBAAI0iO,KAAiB,uBAAuBD,KAAO,UAAU;AAC7D,mBACEr1N,GAAA,EAAA,cAAA,WAAA,GAAA,EAAA,CAAA,GAAapN,IAAb,EAAmBi2C,WAAWqsL,GAAOtiO,GAAKi2C,WAAWysL,EAAAA,EAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAV3D5qP;QAAA,EAA+B04F,GAAAA,EAAM72D,SAAAA,GAqB/BgpN,KAAU,EACd,QAAU,IACV,QAAU,WACV,SAAW,YACX,OAAS,MAAA,GAGE3+G,KAAb,SAAA3rI,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAEE,WAAA;AAAU,gBAADO,IACPd,KAYI6F,KAAKylB,OAXP+/N,KADFrrP,GACEqrP,MACAC,KAFFtrP,GAEEsrP,cASG7iO,MAXLzoB,GAMEurP,QANFvrP,GAOEugP,QAPFvgP,GAQEwgP,SARFxgP,GASEwrP,OATF,GAAA,EAAAxrP,IAAA,EAAA;AAcA,gBAAGqrP,MAAAA,CAASC;AACV,qBAAOz1N,GAAA,EAAA,cAAA,QAAA,IAAA;AAET,gBAAI41N,KAAY,CAAA;AAEhB,qBAASC,MAAUN;AACjB,kBAAK5rP,OAAOkB,UAAUC,eAAe1B,KAAKmsP,IAASM,EAAAA,GAAnD;AAGA,oBAAIC,KAAcP,GAAQM,EAAAA;AAC1B,oBAAGA,MAAU7lP,KAAKylB,OAAO;AACvB,sBAAIhe,KAAMzH,KAAKylB,MAAMogO,EAAAA;AAErB,sBAAGp+O,KAAM,GAAG;AACVm+O,oBAAAA,GAAUh2O,KAAK,SAASk2O,EAAAA;AACxB;kBAAA;AAGFF,kBAAAA,GAAUh2O,KAAK,UAAUk2O,EAAAA,GACzBF,GAAUh2O,KAAK,SAASnI,KAAMq+O,EAAAA;gBAAAA;cAAAA;AAI9BN,YAAAA,MACFI,GAAUh2O,KAAK,QAAA;AAGjB,gBAAIk4B,KAAUo9M,GAAM,MAAA,QAANlqP,GAAA,EAAAC,KAAA,CAAO2nB,GAAKi2C,SAAAA,CAAAA,EAAZ,KAAA59D,IAA0B2qP,EAAAA,CAAAA;AAExC,mBACE51N,GAAA,EAAA,cAAA,WAAA,GAAA,EAAA,CAAA,GAAapN,IAAb,EAAmBi2C,WAAW/wB,GAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GA/CpCptC;QAAA,EAAyB04F,GAAAA,EAAM72D,SAAAA,GA+DlBoqG,KAAb,SAAA1rI,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAEE,WAAA;AACE,mBAAOs1B,GAAA,EAAA,cAAA,OAAA,GAAA,EAAA,CAAA,GAAShwB,KAAKylB,OAAd,EAAqBozC,WAAWqsL,GAAOllP,KAAKylB,MAAMozC,WAAW,SAAA,EAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAHxEn+D;QAAA,EAAyB04F,GAAAA,EAAM72D,SAAAA,GAYlBs6M,KAAb,SAAA57O,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAUE,WAAA;AACE,mBAAOs1B,GAAA,EAAA,cAAA,UAAA,GAAA,EAAA,CAAA,GAAYhwB,KAAKylB,OAAjB,EAAwBozC,WAAWqsL,GAAOllP,KAAKylB,MAAMozC,WAAW,QAAA,EAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAX3En+D;QAAA,EAA4B04F,GAAAA,EAAM72D,SAAAA;AAAAA,QAAAA,GAAAA,EAArBs6M,IAAAA,gBAMW,EACpBh+K,WAAW,GAAA,CAAA;AAUR,YAAM0tE,KAAW,SAAC9gH,IAAAA;AAAD,iBAAWuK,GAAA,EAAA,cAAA,YAAcvK,EAAAA;QAAAA,GAEpC0nE,KAAQ,SAAC1nE,IAAAA;AAAD,iBAAWuK,GAAA,EAAA,cAAA,SAAWvK,EAAAA;QAAAA,GAE9BsgO,KAAb,SAAA9qP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAgBE,mBAAAA,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe,IAGtBQ;AAHsB,mBAAAutB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,YAcjB,SAACuB,IAAAA;AACV,kBAEIf,IAGUQ,IALdX,KAA6BL,GAAK+rB,OAA5BsmE,KAANhyF,GAAMgyF,UAAUq1H,KAAhBrnN,GAAgBqnN,UACZptL,KAAU9F,GAAA,EAAA,CAAA,CAAA,EAAS90B,KAAK6B,GAAEuqB,OAAOwO,OAAAA;AAIjCotL,cAAAA,KACFlnN,KAAQ21B,GAAA,EAAAn1B,KAAAK,GAAA,EAAAi5B,EAAAA,EAAO,KAAPA,IAAe,SAAUgyN,IAAAA;AAC7B,uBAAOA,GAAO//G;cAAAA,CAAAA,CAAAA,EADV,KAAAvrI,IAGD,SAAUsrP,IAAAA;AACb,uBAAOA,GAAO9rP;cAAAA,CAAAA,IAGlBA,KAAQe,GAAEuqB,OAAOtrB;AAGnB,cAAAR,GAAKs5F,SAAS,EAAC94F,OAAOA,GAAAA,CAAAA,GAEtB6xF,MAAYA,GAAS7xF,EAAAA;YAAAA,CAAAA,GA3BnBA,KADEurB,GAAMvrB,QACAurB,GAAMvrB,QAENurB,GAAM27L,WAAW,CAAC,EAAA,IAAM,IAGlC1nN,GAAKkgD,QAAQ,EAAE1/C,OAAOA,GAAAA,GAXIR;UAAA;AAhB9B,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,oCAAA,OAoDE,SAAiCwqF,IAAAA;AAE5BA,YAAAA,GAAUhrF,UAAU8F,KAAKylB,MAAMvrB,SAChC8F,KAAKgzF,SAAS,EAAE94F,OAAOgrF,GAAUhrF,MAAAA,CAAAA;UAAAA,EAAAA,GAvDvC,EAAA,KAAA,UAAA,OA2DE,WAAA;AAAS,gBAADe,IAAAd,IACNO,KAA6DsF,KAAKylB,OAA5DwgO,KAANvrP,GAAMurP,eAAe7kC,KAArB1mN,GAAqB0mN,UAAUpzE,KAA/BtzI,GAA+BszI,iBAAiBlG,KAAhDptI,GAAgDotI,UAC5C5tI,MAAQ,UAAAe,KAAA+E,KAAK45C,MAAM1/C,UAAAA,WAAXe,MAAA,UAAAd,KAAAc,GAAkBukB,SAAAA,WAAlBrlB,KAAA,SAAAA,GAAA,KAAAc,EAAA,MAA8B+E,KAAK45C,MAAM1/C;AAErD,mBACE81B,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAW74D,KAAKylB,MAAMozC,WAAWuoJ,UAAWA,IAAWlnN,OAAOA,IAAO6xF,UAAW/rF,KAAK+rF,UAAW+7C,UAAUA,GAAAA,GAC9GkG,KAAkBh+G,GAAA,EAAA,cAAA,UAAA,EAAQ91B,OAAM,GAAA,GAAd,IAAA,IAA+B,MAEjD21B,GAAA,EAAAo2N,EAAAA,EAAa,KAAbA,IAAkB,SAAUt6N,IAAMnxB,IAAAA;AAChC,qBAAOw1B,GAAA,EAAA,cAAA,UAAA,EAAQx1B,KAAMA,IAAMN,OAAQ8pB,OAAO2H,EAAAA,EAAAA,GAAU3H,OAAO2H,EAAAA,CAAAA;YAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GApEvEjxB;QAAA,EAA4B04F,GAAAA,EAAM72D,SAAAA;AAAAA,QAAAA,GAAAA,EAArBwpN,IAAAA,gBAWW,EACpB3kC,UAAAA,OACApzE,iBAAAA,KAAiB,CAAA;AA+Dd,YAAMuuG,KAAb,SAAAthP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAEE,WAAA;AACE,mBAAOs1B,GAAA,EAAA,cAAA,KAAA,GAAA,EAAA,CAAA,GAAOhwB,KAAKylB,OAAZ,EAAmB8mC,KAAI,uBAAsBsM,WAAWqsL,GAAOllP,KAAKylB,MAAMozC,WAAW,MAAA,EAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAHhGn+D;QAAA,EAA0B04F,GAAAA,EAAM72D,SAAAA,GAY1B2pN,KAAW,SAACjrP,IAAA;AAAD,cAAEs+D,KAAFt+D,GAAEs+D;AAAF,iBAAgBvpC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,YAAA,GAAf,KAA6BU,IAA7B,GAAA;QAAA,GAMpB8iL,KAAb,SAAAphP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,qBAAA,OAaE,WAAA;AACE,mBAAIsF,KAAKylB,MAAMo3N,WAGb7sN,GAAA,EAAA,cAAC,IAAD,MACGhwB,KAAKylB,MAAM8zC,QAAAA,IAHPvpC,GAAA,EAAA,cAAA,YAAA,IAAA;UAAA,EAAA,GAfb,EAAA,KAAA,UAAA,OAuBE,WAAA;AACE,gBAAA/0B,KAAuC+E,KAAKylB,OAAtCm/N,KAAN3pP,GAAM2pP,UAAU/H,KAAhB5hP,GAAgB4hP,UAAUtjL,KAA1Bt+D,GAA0Bs+D;AAE1B,mBAAIqrL,MAGJrrL,KAAWsjL,KAAWtjL,KAAW,MAE/BvpC,GAAA,EAAA,cAAC,IAAD,MACGupC,EAAAA,KALIv5D,KAAKmmP,kBAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GA3BlBzrP;QAAA,EAA8B04F,GAAAA,EAAM72D,SAAAA;AAAAA,QAAAA,GAAAA,EAAvB8/M,IAAAA,gBAQW,EACpBQ,UAAAA,OACA+H,UAAAA,MAAU,CAAA;AAAA,YCvOOwB,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAEnB,mBAAA1rP,KAAA;AAAsB,gBAADO,IAAAlB,IAAAL;AAAA,YAAA+tB,GAAA,EAAA,MAAA/sB,EAAA;AAAA,qBAAA8K,KAAA,UAAA,QAANw0C,KAAM,IAAA,MAAAx0C,EAAA,GAAAwhB,KAAA,GAAAA,KAAAxhB,IAAAwhB;AAANgzB,cAAAA,GAAMhzB,EAAA,IAAA,UAAAA,EAAA;AAAA,oBACnBttB,KAAAS,GAAA,KAAA,MAAAA,IAAAa,GAAA,EAAAC,KAAA,CAAA,IAAA,CAAA,EAAA,KAAAA,IAAS++C,EAAAA,CAAAA,GACJqsM,cAAcz+N,GAAA,EAAA7tB,KAAAL,GAAK4sP,YAAAA,EAAL,KAAAvsP,IAAA,GAAA,EAAAL,EAAA,CAAA,GAFAA;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,gBAAA,OAKrB,SAAa6rP,IAAW3jL,IAAAA;AACtB5iE,iBAAKylB,MAAMo6G,cAAcl9D,KAAK4jL,IAAW3jL,EAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAG3C,SAAOpoE,IAAKooE,IAAAA;AACc5iE,iBAAKylB,MAAvBo6G,cACQl9D,KAAKnoE,IAAKooE,EAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAG1B,WAAA;AACE,gBAAA3nE,KAAsE+E,KAAKylB,OAArEiX,KAANzhC,GAAMyhC,eAAek9F,KAArB3+H,GAAqB2+H,iBAAiBiG,KAAtC5kI,GAAsC4kI,eAAejlD,KAArD3/E,GAAqD2/E,cACjD++C,KAAYj9F,GAAci3B,iBAAAA,GAExB0oL,KAAWzhK,GAAa,UAAA;AAE9B,mBACI5qD,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,iBAAA,GAAd,UAAA,GAGEhpC,GAAA,EAAA8pG,EAAAA,EAAS,KAATA,IAAe,SAACyI,IAAQzvF,IAAAA;AACtB,kBAAI6f,KAAa4vE,GAAOtoI,IAAI,YAAA,GAExBysP,KAAY,CAAC,iBAAiB5zM,EAAAA,GAC9BgqM,KAAU/iH,GAAgBR,QAAQmtH,IAAAA,IAAW;AAGjD,qBACEv2N,GAAA,EAAA,cAAA,OAAA,EAAKx1B,KAAK,cAAYm4C,GAAAA,GAGpB3iB,GAAA,EAAA,cAAA,MAAA,EAAIitG,SANS,WAAA;AAAA,uBAAK4C,GAAcl9D,KAAK4jL,IAAAA,CAAY5J,EAAAA;cAAAA,GAMxB9jL,WAAU,oBAAA,GAAnC,KAAyD8jL,KAAU,MAAM,KAAKhqM,EAAAA,GAE9E3iB,GAAA,EAAA,cAACqsN,IAAD,EAAUQ,UAAUF,IAASiI,UAAAA,KAAQ,GAEjC/0N,GAAA,EAAA2iC,EAAAA,EAAU,KAAVA,IAAgB,SAAAhtB,IAAAA;AACd,oBAAArrC,KAA2BqrC,GAAG7lB,SAAAA,GAAxB+T,KAANv5B,GAAMu5B,MAAM1E,KAAZ70B,GAAY60B,QAAQwC,KAApBr3B,GAAoBq3B,IAChBg1N,KAAiB,cACjBC,KAAWj1N,IACXoxC,KAAQg3D,GAAgBR,QAAQ,CAACotH,IAAgBC,EAAAA,CAAAA;AACrD,uBAAOz2N,GAAA,EAAA,cAAC,IAAD,EAAex1B,KAAKg3B,IACLkC,MAAMA,IACN1E,QAAQA,IACRwC,IAAIkC,KAAO,MAAM1E,IACjB4zC,OAAOA,IACP6jL,UAAUA,IACVD,gBAAgBA,IAChBz8L,MAAI,cAAA,OAAgB08L,EAAAA,GACpBxpH,SAAS4C,GAAcl9D,KAAAA,CAAAA;cAAAA,CAAAA,EAC5CrgE,QAAAA,CAAAA,CAAAA;YAAAA,CAAAA,EAMVA,QAAAA,GAGHq3H,GAAUn7H,OAAO,KAAKwxB,GAAA,EAAA,cAAA,MAAA,MAAA,kCAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAAt1B;QAAA,EAjEI04F,GAAAA,EAAM72D,SAAAA,GA+E/BgoG,KAAb,SAAAtpI,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAEE,mBAAAA,GAAY+qB,IAAAA;AAAQ,gBAAD1rB,IAAAL;AAAA,mBAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,IACjBhB,KAAAS,GAAA,KAAA,MAAMsrB,EAAAA,GACDw3G,UAAUr1G,GAAA,EAAA7tB,KAAAL,GAAKgtP,QAAAA,EAAL,KAAA3sP,IAAA,GAAA,EAAAL,EAAA,CAAA,GAFEA;UAAA;AAFrB,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,YAAA,OAOE,WAAA;AACE,gBAAAO,KAAmD+E,KAAKylB,OAAlDghO,KAANxrP,GAAMwrP,UAAUD,KAAhBvrP,GAAgBurP;AAAAA,aAChBvpH,GADAhiI,GAAgCgiI,SACxB,CAACupH,IAAgBC,EAAAA,GAAAA,CADzBxrP,GAAyC2nE,KAAAA;UAAAA,EAAAA,GAR7C,EAAA,KAAA,UAAA,OAYE,WAAA;AACE,gBAAA3nE,KAAkC+E,KAAKylB,OAAjC+L,KAANv2B,GAAMu2B,IAAIxC,KAAV/zB,GAAU+zB,QAAQ4zC,KAAlB3nE,GAAkB2nE,OAAO7Y,KAAzB9uD,GAAyB8uD;AAEzB,mBACE/5B,GAAA,EAAA,cAAC,IAAD,EAAM+5B,MAAOA,IAAOkzE,SAASj9H,KAAKi9H,SAASpkE,WAAS,sBAAA,OAAwB+J,KAAQ,UAAU,EAAA,EAAA,GAC5F5yC,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAS,cAAA,OAAgB7pC,EAAAA,EAAAA,GAAWA,GAAOud,YAAAA,CAAAA,GAClDvc,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,aAAA,GAAernC,EAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAnBzC92B;QAAA,EAAmC04F,GAAAA,EAAM72D,SAAAA,GAAAA,KAAAA,CAAAA,SAAAA,gBAAAA,cAAAA,GCpEpB29M,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,qBAAAA,OACnB,WAAA;AAGKl6O,iBAAKylB,MAAMsoE,iBACZ/tF,KAAKixO,SAAS/2O,QAAQ8F,KAAKylB,MAAMsoE;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAIrC,WAAA;AAAU,gBAAD9yF,KAAA,MAIPd,KAA6D6F,KAAKylB,OAApBkhO,MAA9CxsP,GAAQD,OAARC,GAAeqjC,cAAfrjC,GAA6B4zF,cAA7B,GAAA,EAAA5zF,IAAA,EAAA;AACA,mBAAO61B,GAAA,EAAA,cAAA,SAAA,GAAA,EAAA,CAAA,GAAW22N,IAAX,EAAuBjpP,KAAK,SAAApE,IAAAA;AAAC,qBAAI2B,GAAKg2O,WAAW33O;YAAAA,EAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAdd85F,GAAAA,EAAM72D,SAAAA,GCRvCqqN,KAAb,SAAA3rP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAME,WAAA;AACE,gBAAAO,KAAyB+E,KAAKylB,OAAxBikC,KAANzuD,GAAMyuD,MAAMuJ,KAAZh4D,GAAYg4D;AAEZ,mBACEjjC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,WAAA,GAAf,gBACenP,IAAMuJ,IADrB,IAAA;UAAA,EAAA,CAAA,CAAA,GAVNv4D;QAAA,EAAkC04F,GAAAA,EAAM72D,SAAAA,GAkBlCsqN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OASJ,WAAA;AACE,gBAAA5rP,KAA0D+E,KAAKylB,OAAzD0J,KAANl0B,GAAMk0B,MAAMyrD,KAAZ3/E,GAAY2/E,cAAc10C,KAA1BjrC,GAA0BirC,gBAAqBk5F,KAA/CnkI,GAA0Cw0B,KACtCj2B,KAAO21B,GAAKr1B,IAAI,MAAA,KAAW,iBAC3B21B,KAAM0sN,GAAahtN,GAAKr1B,IAAI,KAAA,GAAQslI,IAAS,EAACl5F,gBAAAA,GAAAA,CAAAA,GAC9C+kE,KAAQ97E,GAAKr1B,IAAI,OAAA,GAEfyiP,KAAO3hK,GAAa,MAAA;AAE1B,mBACE5qD,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,gBAAA,GACXppC,MAAOO,GAAA,EAAA,cAAA,OAAA,MAAKA,GAAA,EAAA,cAACusN,IAAD,EAAMxyL,MAAOv6B,OAAAA,GAAAA,CAAAA,EAAYC,EAAAA,GAAOjK,QAAO,SAAA,GAAWhsB,IAAlD,YAAA,CAAA,GACZyxG,MACAj7E,GAAA,EAAA,cAACusN,IAAD,EAAMxyL,MAAMv6B,OAAAA,GAAAA,CAAAA,EAAY,UAAD,OAAWy7E,EAAAA,CAAAA,EAAAA,GAC9Bx7E,KAAM,iBAAH,OAAoBj2B,EAAAA,IAApB,WAAA,OAAwCA,EAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAtBnC45F,GAAAA,EAAM72D,SAAAA,GA8BtBuqN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OASJ,WAAA;AACE,gBAAA7rP,KAA8D+E,KAAKylB,OAA7DyiG,KAANjtH,GAAMitH,SAASttC,KAAf3/E,GAAe2/E,cAAc10C,KAA7BjrC,GAA6BirC,gBAAqBk5F,KAAlDnkI,GAA6Cw0B,KAEvC8sN,KAAO3hK,GAAa,MAAA,GACtBphF,KAAO0uH,GAAQpuH,IAAI,MAAA,KAAW,WAC9B21B,KAAM0sN,GAAaj0H,GAAQpuH,IAAI,KAAA,GAAQslI,IAAS,EAACl5F,gBAAAA,GAAAA,CAAAA;AAErD,mBACElW,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,gBAAA,GAEXppC,KAAMO,GAAA,EAAA,cAACusN,IAAD,EAAM/2N,QAAO,UAASukC,MAAOv6B,OAAAA,GAAAA,CAAAA,EAAYC,EAAAA,EAAAA,GAASj2B,EAAAA,IACxDw2B,GAAA,EAAA,cAAA,QAAA,MAAQx2B,EAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EApBI45F,GAAAA,EAAM72D,SAAAA,GA2BfwqN,KAAb,SAAA9rP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAOE,WAAA;AACE,gBAAAO,KAA8B+E,KAAKylB,OAA3BgK,KAARx0B,GAAQw0B,KAEF8sN,MAAO3hK,GAFb3/E,GAAa2/E,cAEa,MAAA;AAE1B,mBAAO5qD,GAAA,EAAA,cAACusN,IAAD,EAAM/2N,QAAO,UAASukC,MAAOv6B,OAAAA,GAAAA,CAAAA,EAAYC,EAAAA,EAAAA,GAAOO,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,MAAA,GAAhB,KAAyBppC,EAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAZpF/0B;QAAA,EAA6B04F,GAAAA,EAAMszC,aAAAA,GAgBdsgH,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAYnB,WAAA;AACE,gBAAA/rP,KAA8F+E,KAAKylB,OAA7FghC,KAANxrD,GAAMwrD,MAAMh3B,KAAZx0B,GAAYw0B,KAAKi6B,KAAjBzuD,GAAiByuD,MAAMuJ,KAAvBh4D,GAAuBg4D,UAAU2nB,KAAjC3/E,GAAiC2/E,cAActoB,KAA/Cr3D,GAA+Cq3D,cAAcpsB,KAA7DjrC,GAA6DirC,gBAAqBk5F,KAAlFnkI,GAA6Ew0B,KACzE0qB,KAAUsM,GAAK3sD,IAAI,SAAA,GACnBujC,KAAcopB,GAAK3sD,IAAI,aAAA,GACvBk5E,KAAQvsB,GAAK3sD,IAAI,OAAA,GACjBmtP,KAAoB9K,GAAa11L,GAAK3sD,IAAI,gBAAA,GAAmBslI,IAAS,EAACl5F,gBAAAA,GAAAA,CAAAA,GACvEghN,KAAUzgM,GAAK3sD,IAAI,SAAA,GACnBouH,KAAUzhE,GAAK3sD,IAAI,SAAA,GAEnBgjP,KAAkBX,GADG7pL,MAAgBA,GAAax4D,IAAI,KAAA,GACHslI,IAAS,EAACl5F,gBAAAA,GAAAA,CAAAA,GAC7DihN,KAA0B70L,MAAgBA,GAAax4D,IAAI,aAAA,GAEzDsyF,KAAWxR,GAAa,YAAA,IAAY,GACpC2hK,KAAO3hK,GAAa,MAAA,GACpB6sD,KAAe7sD,GAAa,cAAA,GAC5BmsK,KAAUnsK,GAAa,SAAA,GACvBgsK,KAAehsK,GAAa,cAAA;AAElC,mBACE5qD,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,OAAA,GACb7oC,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAU,OAAA,GAChB7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,QAAA,GAAWma,IACrB74B,MAAWnqB,GAAA,EAAA,cAACy3G,IAAD,EAActtF,SAASA,GAAAA,CAAAA,CAAAA,GAEpCuP,MAAQuJ,KAAWjjC,GAAA,EAAA,cAAC42N,IAAD,EAAcl9L,MAAOA,IAAOuJ,UAAWA,GAAAA,CAAAA,IAAgB,MAC1ExjC,MAAOO,GAAA,EAAA,cAAC+2N,IAAD,EAASnsK,cAAcA,IAAcnrD,KAAKA,GAAAA,CAAAA,CAAAA,GAGrDO,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,cAAA,GACb7oC,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAASoJ,GAAAA,CAAAA,CAAAA,GAInB4pN,MAAqBj3N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,YAAA,GAClC7oC,GAAA,EAAA,cAACusN,IAAD,EAAM/2N,QAAO,UAASukC,MAAOv6B,OAAAA,GAAAA,CAAAA,EAAYy3N,EAAAA,EAAAA,GAAzC,kBAAA,CAAA,GAIHC,MAAWA,GAAQ1oP,OAAOwxB,GAAA,EAAA,cAAC,IAAD,EAAS4qD,cAAcA,IAAczrD,MAAO+3N,IAAUhhN,gBAAgBA,IAAgBzW,KAAKA,GAAAA,CAAAA,IAAU,MAC/Hy4F,MAAWA,GAAQ1pH,OAAOwxB,GAAA,EAAA,cAAC,IAAD,EAAS4qD,cAAcA,IAAcstC,SAAUA,IAAUhiF,gBAAgBA,IAAgBzW,KAAKA,GAAAA,CAAAA,IAAS,MAChIqtN,KACE9sN,GAAA,EAAA,cAACusN,IAAD,EAAM1jL,WAAU,iBAAgBrzC,QAAO,UAASukC,MAAMv6B,OAAAA,GAAAA,CAAAA,EAAYstN,EAAAA,EAAAA,GAAmBqK,MAA2BrK,EAAAA,IAClH,IAAA;UAAA,EAAA,CAAA,CAAA,GAAApiP;QAAA,EAtDwB04F,GAAAA,EAAM72D,SAAAA,GC/FnB6qN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OASnB,WAAA;AACE,gBAAAnsP,KAAqD+E,KAAKylB,OAAnDiX,KAAPzhC,GAAOyhC,eAAek+C,KAAtB3/E,GAAsB2/E,cAAcv1C,KAApCpqC,GAAoCoqC,eAE9BohB,KAAO/pB,GAAc+pB,KAAAA,GACrBh3B,KAAMiN,GAAcjN,IAAAA,GACpBwjC,KAAWv2B,GAAcu2B,SAAAA,GACzBvJ,KAAOhtB,GAAcgtB,KAAAA,GACrB4I,KAAe51B,GAAc41B,aAAAA,GAC7BpsB,KAAiBb,GAAca,eAAAA,GAE/B8gN,KAAOpsK,GAAa,MAAA;AAE1B,mBACE5qD,GAAA,EAAA,cAAA,OAAA,MACGy2B,MAAQA,GAAK94C,MAAAA,IACZqiB,GAAA,EAAA,cAACg3N,IAAD,EAAMvgM,MAAMA,IAAMh3B,KAAKA,IAAKi6B,MAAMA,IAAMuJ,UAAUA,IAAUX,cAAcA,IACpEsoB,cAAcA,IAAc10C,gBAAgBA,GAAAA,CAAAA,IAChD,IAAA;UAAA,EAAA,CAAA,CAAA,GAAAxrC;QAAA,EA1B+B04F,GAAAA,EAAM72D,SAAAA,GCC5BuqG,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OACnB,WAAA;AACE,mBAAO;UAAA,EAAA,CAAA,CAAA,GAAApsI;QAAA,EAF6B04F,GAAAA,EAAM72D,SAAAA,GCFzB8qN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OACnB,WAAA;AACE,mBACEr3N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,SAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAAn+D;QAAA,EAHe04F,GAAAA,EAAM72D,SAAAA,GCCrB+qN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,kBASF,SAACrsP,IAAAA;AAChB,kBAAgBf,KAAUe,GAAnBuqB,OAAStrB;AAChB,cAAAH,GAAK0rB,MAAMo6G,cAAcn9D,aAAaxoE,EAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAGxC,WAAA;AACE,gBAAAe,KAAuD+E,KAAKylB,OAArDiX,KAAPzhC,GAAOyhC,eAAek9F,KAAtB3+H,GAAsB2+H,iBAChBgN,MAAMhsD,GADZ3/E,GAAuC2/E,cACd,KAAA,GAEnB2sK,KAA8C,cAAlC7qN,GAAc+iG,cAAAA,GAC1B+nH,KAA6C,aAAlC9qN,GAAc+iG,cAAAA,GACzBxvH,KAAS2pH,GAAgBN,cAAAA,GAEzBzxF,KAAa,CAAC,wBAAA;AAIpB,mBAHI2/M,MAAU3/M,GAAWj4B,KAAK,QAAA,GAC1B23O,MAAW1/M,GAAWj4B,KAAK,SAAA,GAG7BogB,GAAA,EAAA,cAAA,OAAA,MACc,SAAX/f,MAAAA,UAAmBA,MAA+B,YAAXA,KAAqB,OAC3D+f,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,mBAAA,GACb7oC,GAAA,EAAA,cAAC42G,IAAD,EAAK/tE,WAAU,kBAAiB6sL,QAAQ,GAAA,GACtC11N,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAWhxB,GAAW5nB,KAAK,GAAA,GAAMwnO,aAAY,iBAAgBvnP,MAAK,QAClE6rF,UAAU/rF,KAAK0nP,gBAAgBxtP,OAAAA,SAAO+V,MAA8B,WAAXA,KAAoB,KAAKA,IAClF63H,UAAUy/G,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAjCcn0J,GAAAA,EAAM72D,SAAAA,GCG7C4pG,KAAO1wG,SAAS56B,WAEDmoP,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAuBnB,mBAAAtoP,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,mBAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,gBAkBb,SAAC+rB,IAAAA;AACd,kBAAMuG,KAAuCvG,GAAvCuG,OAAO6/D,KAAgCpmE,GAAhComE,WAAb9xF,KAA6C0rB,GAArBy9N,eAAAA,KAAAA,WAAxBnpP,KAAsC,KAAtCA,IACIuqC,KAAQ,OAAO/Y,KAAK23N,EAAAA,GACpByE,KAAS,QAAQp8N,KAAK23N,EAAAA,GACtBv9M,KAAarB,KAAQtY,GAAMlyB,IAAI,WAAA,IAAekyB,GAAMlyB,IAAI,OAAA;AAE5D,kBAAA,WAAK6rC,IAA2B;AAC9B,oBAAIl+B,KAAAA,CAAOk+B,MAAcgiN,KAAS,OAAOhiN;AACzC,gBAAAjsC,GAAKs5F,SAAS,EAAE94F,OAAOuN,GAAAA,CAAAA,GACvB/N,GAAKqyF,SAAStkF,IAAK,EAAC68B,OAAOA,IAAOsjN,WAAW/7J,GAAAA,CAAAA;cAAAA;AAEzCvnD,gBAAAA,KACF5qC,GAAKqyF,SAASryF,GAAKi/E,OAAO,KAAA,GAAQ,EAACr0C,OAAOA,IAAOsjN,WAAW/7J,GAAAA,CAAAA,IAE5DnyF,GAAKqyF,SAASryF,GAAKi/E,OAAAA,GAAU,EAACivK,WAAW/7J,GAAAA,CAAAA;YAAAA,CAAAA,GAhCnBvjE,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,UAqCnB,SAAC8yB,IAAAA;AACR,kBAAAryB,KAAkCT,GAAK+rB,OAAjCuG,KAAN7xB,GAAM6xB,OACFzC,MAASgwD,GADbp/E,GAAaoI,GAAIg3E,aACQvtD,GAAMxM,KAAAA,CAAAA;AAE/B,qBAAO2O,OAAAA,GAAAA,CAAAA,EAAgB5E,IAAQiD,IAAK,EAClCqqD,kBAAAA,KAAkB,CAAA;YAAA,CAAA,GA1CMvuD,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,YA8CjB,SAACQ,IAADC,IAAA;AAAkC,kBAAxBytP,KAAuBztP,GAAvBytP,WAAWtjN,KAAYnqC,GAAZmqC;AAC9B,cAAA5qC,GAAKs5F,SAAS,EAAC94F,OAAAA,IAAO0tP,WAAAA,GAAAA,CAAAA,GACtBluP,GAAKmuP,UAAU3tP,IAAOoqC,EAAAA;YAAAA,CAAAA,GAhDIhc,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,aAmDhB,SAAC+N,IAAK68B,IAAAA;AAAAA,eAAa5qC,GAAK+rB,MAAMsmE,YAAYo6C,IAAM1+H,IAAK68B,EAAAA;YAAAA,CAAAA,GAnDrChc,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,kBAqDX,SAAAuB,IAAAA;AACf,kBAAOioP,KAAiBxpP,GAAK+rB,MAAtBy9N,eACD5+M,KAAQ,OAAO/Y,KAAK23N,EAAAA,GACpB98G,KAAanrI,GAAEuqB,OAAOtrB;AAC5B,cAAAR,GAAKqyF,SAASq6C,IAAY,EAAC9hG,OAAAA,IAAOsjN,WAAWluP,GAAKkgD,MAAMguM,UAAAA,CAAAA;YAAAA,CAAAA,GAzD9Bt/N,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,mBA4DV,WAAA;AAAA,qBAAMA,GAAKs5F,SAAU,SAAAp5C,IAAAA;AAAK,uBAAK,EAACguM,WAAAA,CAAYhuM,GAAMguM,UAAAA;cAAAA,CAAAA;YAAAA,CAAAA,GAzDlEluP,GAAKkgD,QAAQ,EACXguM,WAAAA,OACA1tP,OAAO,GAAA,GALiBR;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,qBAAA,OAU5B,WAAA;AACEsF,iBAAK8nP,aAAa1uP,KAAK4G,MAAMA,KAAKylB,KAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,oCAAAA,OAGpC,SAAiCy/D,IAAAA;AAC/BllF,iBAAK8nP,aAAa1uP,KAAK4G,MAAMklF,EAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OA+C/B,WAAA;AACE,gBAAAjqF,KAQI+E,KAAKylB,OAPPs8N,KADF9mP,GACE8mP,kBACA/1N,KAFF/wB,GAEE+wB,OACA6/D,KAHF5wF,GAGE4wF,WACAnvD,KAJFzhC,GAIEyhC,eACA8H,KALFvpC,GAKEupC,YACApC,KANFnnC,GAMEmnC,YACAw4C,KAPF3/E,GAOE2/E,cAGIi8J,KAASj8J,GAAa,QAAA,GACtB2rD,KAAW3rD,GAAa,UAAA,GACxB2R,KAAgB3R,GAAa,eAAA,GAC7BokK,KAAcpkK,GAAa,aAAA,GAG7BjxD,MADY+S,KAAgBA,GAAc23B,4BAA4B7vB,IAAYxY,EAAAA,IAASA,IACxElyB,IAAI,UAAUoY,OAAAA,GAAAA,IAAAA,EAAAA,CAAAA,GACjCgxO,KAAgBxmN,GAAc8K,kBAAkBhD,EAAAA,EAAY1qC,IAAI,oBAAA,GAChE24D,KAAWzyD,KAAKylB,MAAMgtC,YAAYzyD,KAAKylB,MAAMgtC,SAASj0D,OAAOwB,KAAKylB,MAAMgtC,WAAWuwL,GAAU+E,YAAYt1L,UAE7GryD,KAA2BJ,KAAK45C,OAA1B1/C,KAANkG,GAAMlG,OAAO0tP,KAAbxnP,GAAawnP,WACT5qL,KAAW;AAMf,mBALuBgF,OAAAA,GAAAA,CAAAA,EAAkC9nE,EAAAA,MAEvD8iE,KAAW,SAIXhtC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,cAAa,mBAAiB7sC,GAAMlyB,IAAI,MAAA,GAAS,iBAAekyB,GAAMlyB,IAAI,IAAA,EAAA,GAErF8tP,MAAa/7J,KACT77D,GAAA,EAAA,cAACu2G,IAAD,EAAU1tE,WAAY,sBAAuBlvC,GAAOhc,MAAAA,IAAU,aAAa,KAAKzT,OAAOA,IAAO6xF,UAAW/rF,KAAKgoP,eAAAA,CAAAA,IAC7G9tP,MAAS81B,GAAA,EAAA,cAACu8D,IAAD,EAAe1zB,WAAU,uBACvBmE,UAAWA,IACX56B,YAAaA,IACbloC,OAAQA,GAAAA,CAAAA,GAE1B81B,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,qBAAA,GAEVgzB,KACY77D,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,kBAAA,GAChB7oC,GAAA,EAAA,cAAC6mN,IAAD,EAAQh+K,WAAW+uL,KAAY,wCAAwC,qCAC9D3qH,SAASj9H,KAAKioP,gBAAAA,GAAmBL,KAAY,WAAW,MAAA,CAAA,IAHhE,MAOf53N,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAAQ,GAAA,GACb71G,GAAA,EAAA,cAAA,QAAA,MAAA,wBAAA,GACAA,GAAA,EAAA,cAACgvN,IAAD,EACE9kP,OAAQgpP,IACR5D,cAAe7sL,IACfs5B,UAAUg2J,IACVlpL,WAAU,2BACVwmL,WAAU,yBAAA,CAAA,CAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA3kP;QAAA,EA3IegsI,GAAAA,aAAAA;AAAAA,QAAAA,GAAAA,EAAlBs8G,IAAAA,eAgBE,EACnBvwL,UAAUjuD,OAAAA,GAAAA,MAAAA,EAAO,CAAC,kBAAA,CAAA,GAClBwnB,OAAOxnB,OAAAA,GAAAA,MAAAA,EAAO,CAAA,CAAA,GACdunF,UAAUo6C,IACV47G,kBAAkB57G,GAAAA,CAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GCrBDw1G,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAMnB,WAAA;AACE,gBAAA1gP,KAA8B+E,KAAKylB,OAA7B+jE,KAANvuF,GAAMuuF,SAASpnD,KAAfnnC,GAAemnC,YACX8lN,KAAO59J,OAAAA,GAAAA,iCAAAA,EAAkCd,EAAAA,GAEvCl9D,KAAS8V,GAAAA,GAET+lN,KAAYruP,GAAAA,EAAIwyB,IAAQ,2BAAA,IAC1B0D,GAAA,EAAA,cAAC,GAAA,GAAD,EACEgtC,UAAS,QACTnE,WAAU,mBACV+jE,SAAS58H,KAAK68H,gCACdzpF,OAAO2sB,OAAAA,GAAAA,CAAAA,EAASjmE,GAAAA,EAAIwyB,IAAQ,uBAAA,CAAA,EAAA,GAE3B47N,EAAAA,IAGLl4N,GAAA,EAAA,cAAA,YAAA,EAAU0mD,UAAAA,MAAgB7d,WAAU,QAAO3+D,OAAOguP,GAAAA,CAAAA;AAEpD,mBACEl4N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,eAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,MAAA,MAAA,GACAA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GACX7oC,GAAA,EAAA,cAAC,GAAA,iBAAD,EAAiBgU,MAAMkkN,GAAAA,GAAMl4N,GAAA,EAAA,cAAA,UAAA,IAAA,CAAA,CAAA,GAEjCA,GAAA,EAAA,cAAA,OAAA,MACGm4N,EAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA/BuB/0J,GAAAA,EAAM72D,SAAAA,GCJnB4gN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,YAyBT,SAAEliP,IAAAA;AACV,cAAAlB,GAAK6tC,UAAW3sC,GAAEuqB,OAAOtrB,KAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,aAGf,SAAEA,IAAAA;AACZ,kBAAAC,KAAoCJ,GAAK0rB,OAAnCiO,KAANv5B,GAAMu5B,MAAM1E,KAAZ70B,GAAY60B;AAAZ,cAAA70B,GAAoBonC,YAERqG,UAAW1tC,IAAOw5B,IAAM1E,EAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,6BAAAA,OAtBtC,WAAA;AACE,gBAAMkkC,KAAYlzD,KAAKylB,MAAjBytC;AAGNlzD,iBAAK4nC,UAAUsrB,GAAQxxC,MAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,oCAAAA,OAGzB,SAAiCwjE,IAAAA;AAAY,gBAAD/qF;AACpC6F,iBAAKylB,MAAM+3N,iBAAkB,GAAA,EAAArjP,KAAA+qF,GAAUhyB,OAAAA,EAAV,KAAA/4D,IAA2B6F,KAAKylB,MAAM+3N,aAAAA,KAGvEx9O,KAAK4nC,UAAUs9C,GAAUhyB,QAAQxxC,MAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAcrC,WAAA;AAAU,gBAADzmB,IACPd,KAAiC6F,KAAKylB,OAAhCytC,KAAN/4D,GAAM+4D,SAASsqL,KAAfrjP,GAAeqjP;AAEf,mBACExtN,GAAA,EAAA,cAAA,SAAA,EAAO61G,SAAQ,UAAA,GACb71G,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,gBAAA,GAAhB,SAAA,GACA7oC,GAAA,EAAA,cAAA,UAAA,EAAQ+7D,UAAW/rF,KAAK+rF,UAAW7xF,OAAOsjP,GAAAA,GACtC3tN,GAAA,EAAA50B,KAAAi4D,GAAQ92C,SAAAA,CAAAA,EAAR,KAAAnhB,IACA,SAAEwoC,IAAAA;AAAF,qBAAczT,GAAA,EAAA,cAAA,UAAA,EAAQ91B,OAAQupC,IAASjpC,KAAMipC,GAAAA,GAAWA,EAAAA;YAAAA,CAAAA,EACxDnhC,QAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA5CyB8wF,GAAAA,EAAM72D,SAAAA,GCAtB6rN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAQnB,WAAA;AACE,gBAAAntP,KAAmD+E,KAAKylB,OAAjD8b,KAAPtmC,GAAOsmC,aAAa7E,KAApBzhC,GAAoByhC,eAAek+C,KAAnC3/E,GAAmC2/E,cAE7B4iK,KAAgB9gN,GAAc6K,gBAAAA,GAC9B2rB,KAAUx2B,GAAcw2B,QAAAA,GAExBiqL,KAAUviK,GAAa,SAAA;AAI7B,mBAF0B1nB,MAAWA,GAAQ10D,OAGzCwxB,GAAA,EAAA,cAACmtN,IAAD,EACEK,eAAeA,IACftqL,SAASA,IACT3xB,aAAaA,GAAAA,CAAAA,IAEb;UAAA,EAAA,CAAA,CAAA,GAAA7mC;QAAA,EAxBoC04F,GAAAA,EAAM72D,SAAAA,GCE/B8rN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAwBnB,mBAAA3tP,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,YAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,mBA2BZ,WAAA;AACX,cAAAA,GAAK+rB,MAAM6iO,YACZ5uP,GAAK+rB,MAAM6iO,SAAS5uP,GAAK+rB,MAAM8iO,WAAAA,CAAW7uP,GAAKkgD,MAAM4hF,QAAAA,GAGvD9hI,GAAKs5F,SAAS,EACZwoC,UAAAA,CAAW9hI,GAAKkgD,MAAM4hF,SAAAA,CAAAA;YAAAA,CAAAA,GAjCElzG,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,UAqCnB,SAACgE,IAAAA;AACR,kBAAIA,MAAOhE,GAAK+rB,MAAMm0G,iBAAiB;AACrC,oBAAMsH,KAAcxnI,GAAK+rB,MAAMm0G,gBAAgBuH,eAAAA;AAE3Cn7G,gBAAAA,GAAAA,EAAG9gB,GAAGg8H,IAAaxnI,GAAK+rB,MAAMqmE,QAAAA,KAAYpyF,GAAK8uP,gBAAAA,GACnD9uP,GAAK+rB,MAAMo6G,cAAcoB,cAAcvnI,GAAK+rB,MAAMqmE,UAAUpuF,GAAIokI,aAAAA;cAAAA;YAAAA,CAAAA;AAvClE,gBAAAt8H,KAAqC9L,GAAK+rB,OAApC+1G,KAANh2H,GAAMg2H,UAAUitH,KAAhBjjP,GAAgBijP;AAHU,mBAK1B/uP,GAAKkgD,QAAQ,EACX4hF,UAAWA,IACXitH,kBAAkBA,MAAoBJ,GAAcnvI,aAAauvI,iBAAAA,GAPzC/uP;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,qBAAA,OAW5B,WAAA;AACE,gBAAAO,KAAkD+E,KAAKylB,OAA/CijO,KAARztP,GAAQytP,kBAAkBltH,KAA1BvgI,GAA0BugI,UAAU+sH,KAApCttP,GAAoCstP;AACjCG,YAAAA,MAAoBltH,MAIrBx7H,KAAKylB,MAAM6iO,SAASC,IAAW/sH,EAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,oCAAAA,OAInC,SAAiCt2C,IAAAA;AAC5BllF,iBAAKylB,MAAM+1G,aAAat2C,GAAUs2C,YACjCx7H,KAAKgzF,SAAS,EAACwoC,UAAUt2C,GAAUs2C,SAAAA,CAAAA;UAAAA,EAAAA,GAAAA,EAAAA,KAAAA,UAAAA,OAuBzC,WAAA;AACE,gBAAAvgI,KAA2B+E,KAAKylB,OAAxButD,KAAR/3E,GAAQ+3E,OAAOlrC,KAAf7sC,GAAe6sC;AAEf,mBAAG9nC,KAAK45C,MAAM4hF,YACTx7H,KAAKylB,MAAMijO,mBACL14N,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAW/wB,MAAW,GAAA,GAChC9nC,KAAKylB,MAAM8zC,QAAAA,IAMhBvpC,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAW/wB,MAAW,IAAIpqC,KAAKsC,KAAKkiI,OAAAA,GACxClyG,GAAA,EAAA,cAAA,UAAA,EAAQ,iBAAehwB,KAAK45C,MAAM4hF,UAAU3iE,WAAU,qBAAoBokE,SAASj9H,KAAKwoP,gBAAAA,GACpFx1K,MAAShjD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,UAAA,GAAWma,EAAAA,GACtChjD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAY,kBAAmB74D,KAAK45C,MAAM4hF,WAAW,KAAK,cAAA,CAAA,GAAA,CAC7Dx7H,KAAK45C,MAAM4hF,YAAYxrG,GAAA,EAAA,cAAA,QAAA,MAAOhwB,KAAK45C,MAAM6uM,gBAAAA,CAAAA,GAG5CzoP,KAAK45C,MAAM4hF,YAAYx7H,KAAKylB,MAAM8zC,QAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAzFDh9B,GAAAA,SAAAA;AAAAA,QAAAA,GAAAA,EAAtB8rN,IAAAA,gBAeG,EACpBI,kBAAkB,SAClBjtH,UAAAA,OACAxoD,OAAO,MACPs1K,UAAU,WAAA;QAAA,GACVI,kBAAAA,OACA58J,UAAU9lE,GAAAA,EAAG9T,KAAK,CAAA,CAAA,EAAA,CAAA;AAAA,YAAA,KAAAxX,GAAA,GAAA,GAAA,KAAAA,GAAA,EAAA,EAAA,GCpBD2xF,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAanB,mBAAA3xF,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,YAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,aAoBhB,SAAEuB,IAAAA;AACZ,kBAA6BzB,KAAayB,GAApCuqB,OAAWu0N,QAAYvgP;AAE7B,cAAAE,GAAKs5F,SAAS,EACZ21J,WAAWnvP,GAAAA,CAAAA;YAAAA,CAAAA;AAtBb,gBAAAgM,KAAgC9L,GAAK+rB,OAA/B2c,KAAN58B,GAAM48B,YAAYypD,KAAlBrmF,GAAkBqmF,WACZ+8J,KAA0BxmN,GAAAA,EAA1BwmN,uBAEFD,KAAYC;AALU,mBAOI,cAA1BA,MAAiE,YAA1BA,OACzCD,KAAY,YAGX98J,OACD88J,KAAY,YAGdjvP,GAAKkgD,QAAQ,EACX+uM,WAAAA,GAAAA,GAhBwBjvP;UAAA;AAAA,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,oCAAA,OA4B5B,SAAiCwqF,IAAAA;AAE7BA,YAAAA,GAAU2G,aAAAA,CACT7rF,KAAKylB,MAAMomE,aACZ7rF,KAAKylB,MAAMwxD,WAEXj3E,KAAKgzF,SAAS,EAAE21J,WAAW,UAAA,CAAA;UAAA,EAAA,GAAA,EAAA,KAAA,UAAA,OAI/B,WAAA;AACE,gBAAA1tP,KAA2H+E,KAAKylB,OAA1Hm1D,KAAN3/E,GAAM2/E,cAAcl+C,KAApBzhC,GAAoByhC,eAAenT,KAAnCtuB,GAAmCsuB,QAAQ0tD,KAA3Ch8E,GAA2Cg8E,SAAS4U,KAApD5wF,GAAoD4wF,WAAWzpD,KAA/DnnC,GAA+DmnC,YAAY0pD,KAA3E7wF,GAA2E6wF,UAAUnV,KAArF17E,GAAqF07E,iBAAiBE,KAAtG57E,GAAsG47E,kBAChGgyK,KAA4BzmN,GAAAA,EAA5BymN,yBACAC,KAAeluK,GAAa,cAAA,GAC5B2R,KAAgB3R,GAAa,eAAA,GAC7BmuK,KAAep3N,GAAAA,EAAY,CAAA,EAAGjwB,SAAS,QAAA,GACvCsnP,KAAiBr3N,GAAAA,EAAY,CAAA,EAAGjwB,SAAS,QAAA,GACzCunP,KAAat3N,GAAAA,EAAY,CAAA,EAAGjwB,SAAS,QAAA,GACrCwnP,KAAev3N,GAAAA,EAAY,CAAA,EAAGjwB,SAAS,QAAA,GAEzCuqB,KAASyQ,GAAczQ,OAAAA;AAE3B,mBACE+D,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,gBAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,OAAM2mL,MAAK,UAAA,GACvBxvN,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAW+/C,GAAAA,EAAG,WAAW,EAAEmyE,QAAiC,cAAzB/qL,KAAK45C,MAAM+uM,UAAAA,CAAAA,GAA4BnJ,MAAK,eAAA,GACjFxvN,GAAA,EAAA,cAAA,UAAA,EACE,iBAAeg5N,IACf,iBAAwC,cAAzBhpP,KAAK45C,MAAM+uM,WAC1B9vL,WAAU,YACV,aAAU,WACVrnC,IAAIu3N,IACJ9rH,SAAUj9H,KAAK2oP,WACfnJ,MAAK,MAAA,GAEJ3zJ,KAAY,eAAe,eAAA,CAAA,GAG9BtiE,MACAyG,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAW+/C,GAAAA,EAAG,WAAW,EAAEmyE,QAAiC,YAAzB/qL,KAAK45C,MAAM+uM,UAAAA,CAAAA,GAA0BnJ,MAAK,eAAA,GAC/ExvN,GAAA,EAAA,cAAA,UAAA,EACE,iBAAek5N,IACf,iBAAwC,YAAzBlpP,KAAK45C,MAAM+uM,WAC1B9vL,WAAW+/C,GAAAA,EAAG,YAAY,EAAEuwI,UAAUt9J,GAAAA,CAAAA,GACtC,aAAU,SACVr6D,IAAIy3N,IACJhsH,SAAUj9H,KAAK2oP,WACfnJ,MAAK,MAAA,GAEJvzN,KAAS,WAAW,OAAA,CAAA,CAAA,GAKH,cAAzBjsB,KAAK45C,MAAM+uM,aACV34N,GAAA,EAAA,cAAA,OAAA,EACE,eAAsC,cAAzBhwB,KAAK45C,MAAM+uM,WACxB,mBAAiBI,IACjB,aAAU,gBACVv3N,IAAIw3N,IACJxJ,MAAK,YACL4J,UAAS,IAAA,GAERnyK,MACCjnD,GAAA,EAAA,cAACu8D,IAAD,EAAeryF,OAAM,0BAAyBkoC,YAAaA,GAAAA,CAAAA,CAAAA,GAKvC,YAAzBpiC,KAAK45C,MAAM+uM,aACV34N,GAAA,EAAA,cAAA,OAAA,EACE,eAAsC,cAAzBhwB,KAAK45C,MAAM+uM,WACxB,mBAAiBM,IACjB,aAAU,cACVz3N,IAAI03N,IACJ1J,MAAK,YACL4J,UAAS,IAAA,GAETp5N,GAAA,EAAA,cAAC84N,IAAD,EACEv/N,QAASA,IACTqxD,cAAeA,IACfx4C,YAAaA,IACb1F,eAAgBA,IAChBoyD,aAAc+5J,IACd/8J,UAAUA,IACVnV,iBAAmBA,IACnBE,kBAAoBA,GAAAA,CAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA/HQuc,GAAAA,EAAM72D,SAAAA,GCF3BusN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,YAkBR,SAACtvP,IAAK4/H,IAAAA;AAEZ,cAAAr/H,GAAK0rB,MAAMo6G,iBACZ9lI,GAAK0rB,MAAMo6G,cAAcl9D,KAAK5oE,GAAK0rB,MAAMod,UAAUu2F,EAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAIvD,WAAA;AACE,gBAGIoC,IAHJrhI,KAAmC6F,KAAKylB,OAAlCm1D,KAANzgF,GAAMygF,cAAcx4C,KAApBjoC,GAAoBioC,YACd+3E,KAAQv/B,GAAa,OAAA;AAQ3B,mBALG56E,KAAKylB,MAAMm0G,oBAEZ4B,KAAWx7H,KAAKylB,MAAMm0G,gBAAgBR,QAAQp5H,KAAKylB,MAAMod,QAAAA,IAGpD7S,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,YAAA,GACpB7oC,GAAA,EAAA,cAACmqF,IAAD,GAAA,EAAA,CAAA,GAAYn6G,KAAKylB,OAAjB,EAAyB2c,YAAaA,IAAao5F,UAAUA,IAAUphH,OAAQ,GAAIkuO,UAAWtoP,KAAKsoP,UAAWx5J,aAAc9uF,KAAKylB,MAAMqpE,eAAe,EAAA,CAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAAp0F;QAAA,EApClH6hC,GAAAA,SAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GCArB8sN,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,gBAAAA,IAAAA;AAAAA,YAAAA,GAAAA,EAAAA,MAAAA,EAAAA;AAAAA,qBAAAA,KAAAA,UAAAA,QAAAA,KAAAA,IAAAA,MAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KAAAA,IAAAA;AAAAA,cAAAA,GAAAA,EAAAA,IAAAA,UAAAA,EAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAAA,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,qBAUC,WAAA;AAElB,qBADetvP,GAAK0rB,MAAMiX,cAAczQ,OAAAA,IACxB,CAAC,cAAc,SAAA,IAAa,CAAC,aAAA;YAAA,CAAA,GAAA3D,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,uBAGzB,WAAA;AACpB,qBAAO;YAAA,CAAA,GAAAuuB,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,gBAGM,SAACP,IAAM8vP,IAAAA;AAAgB,kBAAD5uP,IAGpBhB;AAAA,eAFWK,GAAK0rB,MAAvBo6G,cACMl9D,KAAd3nE,GAAA,EAAAN,KAAA,CAAA,CAAA,EAAA,KAAAA,IAAAo/I,IAAA,EAAuB//I,GAAKwvP,kBAAAA,CAAAA,GAA5B,CAAiD/vP,EAAAA,CAAAA,GAAO8vP,EAAAA,GACrDA,OACDvvP,GAAK0rB,MAAM8b,YAAY6C,uBAAvBppC,GAAA,EAAAtB,KAAA,CAAA,CAAA,EAAA,KAAAA,IAAAogJ,IAAA,EAAkD//I,GAAKwvP,kBAAAA,CAAAA,GAAvD,CAA4E/vP,EAAAA,CAAAA,CAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,gBAIjE,SAACkE,IAAAA;AACVA,cAAAA,MACF3D,GAAK0rB,MAAMo6G,cAAcoB,cAAclnI,GAAKwvP,kBAAAA,GAAqB7rP,EAAAA;YAAAA,CAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,eAIvD,SAACA,IAAAA;AACb,kBAAIA,IAAK;AAAC,oBAADvD,IACDX,KAAOkE,GAAIwgH,aAAa,WAAA;AAC9B,gBAAAnkH,GAAK0rB,MAAMo6G,cAAcoB,cAAzBjmI,GAAA,EAAAb,KAAA,CAAA,CAAA,EAAA,KAAAA,IAAA2/I,IAAA,EAA2C//I,GAAKwvP,kBAAAA,CAAAA,GAAhD,CAAqE/vP,EAAAA,CAAAA,GAAOkE,EAAAA;cAAAA;YAAAA,CAAAA,GAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAIhF,WAAA;AAAS,gBAADzC,IAAAd,KAAA,MACNO,KAAkFsF,KAAKylB,OAAjFiX,KAANhiC,GAAMgiC,eAAek+C,KAArBlgF,GAAqBkgF,cAAcg/C,KAAnCl/H,GAAmCk/H,iBAAiBiG,KAApDnlI,GAAoDmlI,eAAez9F,KAAnE1nC,GAAmE0nC,YAC/D4wB,KAAct2B,GAAcs2B,YAAAA,GAChC95D,KAAiDkpC,GAAAA,GAA3C8yM,KAANh8O,GAAMg8O,cAAcsU,KAApBtwP,GAAoBswP;AACpB,gBAAA,CAAKx2L,GAAYx0D,QAAQgrP,KAA2B;AAAG,qBAAO;AAE9D,gBAAMC,KAAezpP,KAAKupP,kBAAAA,GACtBG,KAAa9vH,GAAgBR,QAAQqwH,IAAcD,KAA2B,KAAsB,WAAjBtU,EAAAA,GACjFjpN,KAASyQ,GAAczQ,OAAAA,GAEvB68N,KAAeluK,GAAa,cAAA,GAC5ByhK,KAAWzhK,GAAa,UAAA,GACxBytK,KAAgBztK,GAAa,eAAA,GAC7BksD,KAAalsD,GAAa,cAAA,IAAc;AAE9C,mBAAO5qD,GAAA,EAAA,cAAA,WAAA,EAAS6oC,WAAY6wL,KAAa,mBAAmB,UAAUhsP,KAAKsC,KAAK2pP,aAAAA,GAC9E35N,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAAA,UAAA,EACE,iBAAe05N,IACf7wL,WAAU,kBACVokE,SAAS,WAAA;AAAA,qBAAM4C,GAAcl9D,KAAK8mL,IAAAA,CAAeC,EAAAA;YAAAA,EAAAA,GAEjD15N,GAAA,EAAA,cAAA,QAAA,MAAO/D,KAAS,YAAY,QAAA,GAC5B+D,GAAA,EAAA,cAAA,OAAA,EAAKuzB,OAAM,MAAKq3D,QAAO,MAAK,eAAY,QAAOgiI,WAAU,QAAA,GACvD5sN,GAAA,EAAA,cAAA,OAAA,EAAKmtG,WAAWusH,KAAa,oBAAoB,oBAAA,CAAA,CAAA,CAAA,CAAA,GAIvD15N,GAAA,EAAA,cAACqsN,IAAD,EAAUQ,UAAU6M,GAAAA,GAEhB75N,GAAA,EAAA50B,KAAA+3D,GAAY1xD,SAAAA,CAAAA,EAAZ,KAAArG,IAA2B,SAAAA,IAAA;AAAW,kBAADP,IAARlB,KAAQ+7I,IAAA,EAAAt6I,IAAA,CAAA,EAAA,CAAA,GAE7B4nC,KAAW7nC,GAAA,EAAAN,KAAA,CAAA,CAAA,EAAA,KAAAA,IAAAo/I,IAAA,EAAI2vG,EAAAA,GAAP,CAAqBjwP,EAAAA,CAAAA,GAC7BsyF,KAAW9lE,GAAAA,EAAG9T,KAAK2wB,EAAAA,GAEnB+mN,KAAcltN,GAAcuH,oBAAoBpB,EAAAA,GAChDgnN,KAAiBntN,GAAcC,SAAAA,EAAW9a,MAAMghB,EAAAA,GAEhDtZ,KAASpf,GAAAA,IAAIE,MAAMu/O,EAAAA,IAAeA,KAAc5jO,GAAAA,EAAG7b,IAAAA,GACnD2/O,KAAY3/O,GAAAA,IAAIE,MAAMw/O,EAAAA,IAAkBA,KAAiB7jO,GAAAA,EAAG7b,IAAAA,GAE5DotE,KAAchuD,GAAOzvB,IAAI,OAAA,KAAYgwP,GAAUhwP,IAAI,OAAA,KAAYN,IAC/D4/H,KAAUQ,GAAgBR,QAAQv2F,IAAAA,KAAU;AAE9Cu2F,cAAAA,MAA4B,MAAhB7vG,GAAO/qB,QAAcsrP,GAAUtrP,OAAO,KAGpDrE,GAAKsrB,MAAM8b,YAAY6C,uBAAuBvB,EAAAA;AAGhD,kBAAMi+B,KAAU9wC,GAAA,EAAA,cAAC84N,IAAD,EAActvP,MAAOA,IACnCs1F,aAAc06J,IACdjgO,QAASA,MAAUvD,GAAAA,EAAG7b,IAAAA,GACtBotE,aAAaA,IACb10C,UAAUA,IACVipD,UAAUA,IACVlR,cAAeA,IACfl+C,eAAgBA,IAChB0F,YAAcA,IACdw3F,iBAAmBA,IACnBiG,eAAiBA,IACjBlpD,iBAAAA,MACAE,kBAAAA,KAAoB,CAAA,GAEhB7D,KAAQhjD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,YAAA,GAC5B7oC,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,oBAAA,GACb0e,EAAAA,CAAAA;AAIL,qBAAOvnD,GAAA,EAAA,cAAA,OAAA,EAAKwB,IAAE,SAAA,OAAYh4B,EAAAA,GAASq/D,WAAU,mBAAkBr+D,KAAG,kBAAA,OAAqBhB,EAAAA,GAC/E,aAAWA,IAAMkE,KAAKvD,GAAK4vP,YAAAA,GACjC/5N,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,sBAAA,GAAsB7oC,GAAA,EAAA,cAAC82G,IAAD,EAAYh7C,UAAUA,GAAAA,CAAAA,CAAAA,GAC5D97D,GAAA,EAAA,cAACq4N,IAAD,EACEvgN,SAAQ,aACR2gN,kBAAkBtuP,GAAK6vP,oBAAoBxwP,EAAAA,GAC3C8uP,UAAUnuP,GAAK8vP,cACfj3K,OAAOA,IACPuE,aAAaA,IACbgxK,WAAW/uP,IACXsyF,UAAUA,IACV8tC,iBAAiBA,IACjBiG,eAAeA,IACf6oH,kBAAAA,MACAltH,UAAWguH,KAA2B,KAAKpwH,GAAAA,GACzCt4D,EAAAA,CAAAA;YAAAA,CAAAA,EAELx+D,QAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EA/HuBi6B,GAAAA,SAAAA,GCcrB2tN,KAfG,SAACjvP,IAAA;AAA6B,cAA3Bf,KAA0Be,GAA1Bf,OACfmuP,MAAgBztK,GADyB3/E,GAAnB2/E,cACO,eAAA,GAC7B6tK,KAAmBz4N,GAAA,EAAA,cAAA,QAAA,MAAA,YAAgB91B,GAAMyT,MAAAA,GAAtB,IAAA;AACvB,iBAAOqiB,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,YAAA,GAAhB,SACA7oC,GAAA,EAAA,cAAA,MAAA,IAAA,GACLA,GAAA,EAAA,cAACq4N,IAAD,EAAeI,kBAAmBA,GAAAA,GAAlC,MACMvuP,GAAM+lB,KAAK,IAAA,GADjB,IAAA,CAAA;QAAA,GAAA,KAAA,CAAA,UAAA,QAAA,eAAA,SAAA,gBAAA,cAAA,SAAA,YAAA,YAAA,UAAA,GCCiBq6F,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAkBnB,WAAA;AAAS,gBAADr/G,IAAAd,IAAAO,IAAAX,IACNL,KAAyHsG,KAAKylB,OAAxH8D,KAAN7vB,GAAM6vB,QAAQ/vB,KAAdE,GAAcF,MAAM+9E,KAApB79E,GAAoB69E,aAAa8iC,KAAjC3gH,GAAiC2gH,OAAOz/B,KAAxClhF,GAAwCkhF,cAAcx4C,KAAtD1oC,GAAsD0oC,YAAYhoB,KAAlE1gB,GAAkE0gB,OAAOkuO,KAAzE5uP,GAAyE4uP,UAAU9sH,KAAnF9hI,GAAmF8hI,UAAU1vC,KAA7FpyF,GAA6FoyF,UAAa66J,KAA1G,GAAA,EAAAjtP,IAAA,EAAA,GACMgjC,KAAgEiqN,GAAhEjqN,eAAcoyD,KAAkD63J,GAAlD73J,aAAanY,KAAqCgwK,GAArChwK,iBAAiBE,KAAoB8vK,GAApB9vK,kBAC1C5qD,KAAWyQ,GAAXzQ;AAER,gBAAA,CAAI1C;AACF,qBAAO;AAGT,gBAAQ+zN,KAAmBl7M,GAAAA,EAAnBk7M,gBAEJjgN,KAAc9T,GAAOzvB,IAAI,aAAA,GACzB6yB,KAAapD,GAAOzvB,IAAI,YAAA,GACxB8yB,KAAuBrD,GAAOzvB,IAAI,sBAAA,GAClCk5E,KAAQzpD,GAAOzvB,IAAI,OAAA,KAAYy9E,MAAe/9E,IAC9C2wP,KAAqB5gO,GAAOzvB,IAAI,UAAA,GAChCswP,KAAiBrvP,GAAA,EAAAwuB,EAAAA,EAAM,KAANA,IACV,SAAEnpB,IAAG5F,IAAAA;AAAL,kBAAAE;AAAA,qBAAA,OAAa,GAAA,EAAAA,KAAA,CAAC,iBAAiB,iBAAiB,YAAY,SAAA,CAAA,EAA/C,KAAAA,IAAkEF,EAAAA;YAAAA,CAAAA,GACtFi8E,KAAaltD,GAAOzvB,IAAI,YAAA,GAEtBgtI,KAAalsD,GAAa,cAAA,IAAc,GACxCwR,KAAWxR,GAAa,YAAA,IAAY,GACpCu/B,KAAQv/B,GAAa,OAAA,GACrBytK,KAAgBztK,GAAa,eAAA,GAC7BspK,KAAWtpK,GAAa,UAAA,GAExByvK,KAAoB,WAAA;AACxB,qBAAOr6N,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,qBAAA,GAAqB7oC,GAAA,EAAA,cAAC82G,IAAD,EAAYh7C,UAAUA,GAAAA,CAAAA,CAAAA;YAAAA,GAE9D28J,KAAoBz4N,GAAA,EAAA,cAAA,QAAA,MACtBA,GAAA,EAAA,cAAA,QAAA,MApDU,GAAA,GAmDY,OACOA,GAAA,EAAA,cAAA,QAAA,MAnDlB,GAAA,GAqDTqqF,KAAQrqF,GAAA,EAAA,cAACq6N,IAAD,IAAA,IAAwB,EAAA,GAIhChzK,KAAQ36C,GAAczQ,OAAAA,IAAW1C,GAAOzvB,IAAI,OAAA,IAAW,MACvDq9E,KAAQz6C,GAAczQ,OAAAA,IAAW1C,GAAOzvB,IAAI,OAAA,IAAW,MACvDgnB,KAAM4b,GAAczQ,OAAAA,IAAW1C,GAAOzvB,IAAI,KAAA,IAAS,MAEnDwwP,KAAUt3K,MAAShjD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,cAAA,GACrCwhD,MAAS9wF,GAAOzvB,IAAI,OAAA,KAAYk2B,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,aAAA,GAAetvC,GAAOzvB,IAAI,OAAA,CAAA,GAC5Ek2B,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,oBAAA,GAAsBma,EAAAA,CAAAA;AAGxC,mBAAOhjD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,QAAA,GACrB7oC,GAAA,EAAA,cAACq4N,IAAD,EACEE,WAAW/uP,IACXw5E,OAAOs3K,IACPhC,UAAYA,IACZ9sH,UAAAA,CAAAA,CAAWA,MAAkBphH,MAAS00E,IACtC25J,kBAAmBA,GAAAA,GAElBz4N,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,oBAAA,GA3EP,GAAA,GA6ELwhD,KAAerqF,GAAA,EAAA,cAACq6N,IAAD,IAAA,IAAP,MAEXr6N,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,eAAA,GAEZ7oC,GAAA,EAAA,cAAA,SAAA,EAAO6oC,WAAU,QAAA,GAAQ7oC,GAAA,EAAA,cAAA,SAAA,MAEtBqN,KAAqBrN,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,cAAA,GAChC7oC,GAAA,EAAA,cAAA,MAAA,MAAA,cAAA,GACAA,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAASoJ,GAAAA,CAAAA,CAAAA,CAAAA,IAHV,MAQdo5C,KACCzmD,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAW,WAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,MAAA,aAAA,GAGAA,GAAA,EAAA,cAAA,MAAA,MAAA,MAAA,CAAA,IALU,MAYZrD,MAAcA,GAAWnuB,OAAeqxB,GAAA,EAAA50B,KAAAF,GAAA,EAAAZ,KAAAwyB,GAAWrrB,SAAAA,CAAAA,EAAX,KAAAnH,IACtC,SAAAc,IAAA;AAAgB,kBAAZf,KAAWq7I,IAAA,EAAAt6I,IAAA,CAAA,EAAA,CAAA;AACb,sBAAA,CAASf,GAAMJ,IAAI,UAAA,KAAe68E,QAAAA,CAC9Bz8E,GAAMJ,IAAI,WAAA,KAAgB+8E;YAAAA,CAAAA,CAAAA,EAHM,KAAA57E,IAMtC,SAAAA,IAAA;AAAmB,kBAADd,IAAAO,IAAAX,KAAAw7I,IAAA,EAAAt6I,IAAA,CAAA,GAAhBT,KAAgBT,GAAA,CAAA,GAAXG,KAAWH,GAAA,CAAA,GACZwwP,KAAet+N,GAAAA,KAAY/xB,GAAMJ,IAAI,YAAA,GACrCmgC,KAAa/nB,GAAAA,KAAKG,OAAO83O,EAAAA,KAAuBA,GAAmBzmO,SAASlpB,EAAAA,GAE5EqtC,KAAa,CAAC,cAAA;AAUlB,qBARI0iN,MACF1iN,GAAWj4B,KAAK,YAAA,GAGdqqB,MACF4N,GAAWj4B,KAAK,UAAA,GAGVogB,GAAA,EAAA,cAAA,MAAA,EAAIx1B,KAAKA,IAAKq+D,WAAWhxB,GAAW5nB,KAAK,GAAA,EAAA,GAC/C+P,GAAA,EAAA,cAAA,MAAA,MACIx1B,IAAOy/B,MAAcjK,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,OAAA,GAAhB,GAAA,CAAA,GAEzB7oC,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAACmqF,IAAD,GAAA,EAAA,EAAO3/G,KAAGQ,GAAA,EAAAb,KAAAa,GAAA,EAAAN,KAAA,UAAA,OAAalB,IAAb,GAAA,CAAA,EAAA,KAAAkB,IAAqBF,IAArB,GAAA,CAAA,EAAA,KAAAL,IAA4BD,EAAAA,EAAAA,GAAeysP,IAArD,EACO5vL,UAAW98B,IACX2gD,cAAeA,IACfkR,UAAUA,GAASl8E,KAAK,cAAcpV,EAAAA,GACtC4nC,YAAaA,IACb7Y,QAASrvB,IACTkgB,OAAQA,KAAQ,EAAA,CAAA,CAAA,CAAA,CAAA;YAAA,CAAA,EAG1B9X,QAAAA,IAlC4B,MAsClCg7O,KAAwBttN,GAAA,EAAA,cAAA,MAAA,MAAIA,GAAA,EAAA,cAAA,MAAA,MAAA,MAAA,CAAA,IAAX,MAGjBstN,KACCztN,GAAA,EAAAn1B,KAAA6uB,GAAOjoB,SAAAA,CAAAA,EAAP,KAAA5G,IACE,SAAAO,IAAA;AAAmB,kBAADd,KAAAo7I,IAAA,EAAAt6I,IAAA,CAAA,GAAhBT,KAAgBL,GAAA,CAAA,GAAXD,KAAWC,GAAA,CAAA;AAChB,kBAAsB,SAAnB+zB,GAAA,EAAA1zB,EAAAA,EAAG,KAAHA,IAAU,GAAE,CAAA,GAAf;AAIA,oBAAMgwP,KAAmBtwP,KAAeA,GAAMslB,OAAOtlB,GAAMslB,KAAAA,IAAStlB,KAAnC;AAEjC,uBAAQ81B,GAAA,EAAA,cAAA,MAAA,EAAIx1B,KAAKA,IAAKq+D,WAAU,YAAA,GAC9B7oC,GAAA,EAAA,cAAA,MAAA,MACIx1B,EAAAA,GAEJw1B,GAAA,EAAA,cAAA,MAAA,MACI5vB,GAAA,EAAeoqP,EAAAA,CAAAA,CAAAA;cAAAA;YAAAA,CAAAA,EAGpBloP,QAAAA,IAjBW,MAoBjBsqB,MAAyBA,GAAqBpuB,OAC3CwxB,GAAA,EAAA,cAAA,MAAA,MACAA,GAAA,EAAA,cAAA,MAAA,MAAM,QAAA,GACNA,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAACmqF,IAAD,GAAA,EAAA,CAAA,GAAYwsI,IAAZ,EAAyB5vL,UAAAA,OAClB6jB,cAAeA,IACfkR,UAAUA,GAASl8E,KAAK,sBAAA,GACxBwyB,YAAaA,IACb7Y,QAASqD,IACTxS,OAAQA,KAAQ,EAAA,CAAA,CAAA,CAAA,CAAA,IATyB,MAcrDi9D,KACGrnD,GAAA,EAAA,cAAA,MAAA,MACAA,GAAA,EAAA,cAAA,MAAA,MAAM,UAAA,GACNA,GAAA,EAAA,cAAA,MAAA,MACGH,GAAA,EAAAwnD,EAAAA,EAAK,KAALA,IAAU,SAAC9tD,IAAQppB,IAAAA;AAClB,qBAAO6vB,GAAA,EAAA,cAAA,OAAA,EAAKx1B,KAAK2F,GAAAA,GAAG6vB,GAAA,EAAA,cAACmqF,IAAD,GAAA,EAAA,CAAA,GAAYwsI,IAAZ,EAAyB5vL,UAAAA,OACpC6jB,cAAeA,IACfkR,UAAUA,GAASl8E,KAAK,SAASzP,EAAAA,GACjCiiC,YAAaA,IACb7Y,QAASA,IACTnP,OAAQA,KAAQ,EAAA,CAAA,CAAA,CAAA;YAAA,CAAA,CAAA,CAAA,IAVxB,MAgBR+8D,KACGnnD,GAAA,EAAA,cAAA,MAAA,MACAA,GAAA,EAAA,cAAA,MAAA,MAAM,UAAA,GACNA,GAAA,EAAA,cAAA,MAAA,MACGH,GAAA,EAAAsnD,EAAAA,EAAK,KAALA,IAAU,SAAC5tD,IAAQppB,IAAAA;AAClB,qBAAO6vB,GAAA,EAAA,cAAA,OAAA,EAAKx1B,KAAK2F,GAAAA,GAAG6vB,GAAA,EAAA,cAACmqF,IAAD,GAAA,EAAA,CAAA,GAAYwsI,IAAZ,EAAyB5vL,UAAAA,OACpC6jB,cAAeA,IACfkR,UAAUA,GAASl8E,KAAK,SAASzP,EAAAA,GACjCiiC,YAAaA,IACb7Y,QAASA,IACTnP,OAAQA,KAAQ,EAAA,CAAA,CAAA,CAAA;YAAA,CAAA,CAAA,CAAA,IAVxB,MAgBR0G,KACGkP,GAAA,EAAA,cAAA,MAAA,MACAA,GAAA,EAAA,cAAA,MAAA,MAAM,QAAA,GACNA,GAAA,EAAA,cAAA,MAAA,MACEA,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAACmqF,IAAD,GAAA,EAAA,CAAA,GAAYwsI,IAAZ,EACO5vL,UAAAA,OACA6jB,cAAeA,IACfkR,UAAUA,GAASl8E,KAAK,KAAA,GACxBwyB,YAAaA,IACb7Y,QAASzI,IACT1G,OAAQA,KAAQ,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAXxB,IAAA,CAAA,CAAA,GAmBf4V,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,cAAA,GApOL,GAAA,CAAA,GAuOXuxL,GAAe5rP,OAAOqxB,GAAA,EAAA91B,KAAAqwP,GAAe9oP,SAAAA,CAAAA,EAAf,KAAAvH,IAA+B,SAAAkB,IAAA;AAAA,kBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAIT,KAAJE,GAAA,CAAA,GAAS0F,KAAT1F,GAAA,CAAA;AAAA,qBAAkBs1B,GAAA,EAAA,cAACk0N,IAAD,EAAU1pP,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKK,IAAL,GAAA,CAAA,EAAA,KAAAL,IAAYiG,EAAAA,GAAK8qB,SAAU1wB,IAAM4pP,SAAUhkP,IAAIikP,WAtOzH,WAAA,CAAA;YAAA,CAAA,IAsOuJ,IAAA;UAAA,EAAA,CAAA,CAAA,GAAA3pP;QAAA,EApOhI6hC,GAAAA,SAAAA,GCHpBg+E,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAgBnB,WAAA;AAAS,gBAADt/G,IACNd,KAA4F6F,KAAKylB,OAA3Fm1D,KAANzgF,GAAMygF,cAAcx4C,KAApBjoC,GAAoBioC,YAAY7Y,KAAhCpvB,GAAgCovB,QAAQnP,KAAxCjgB,GAAwCigB,OAAO00E,KAA/C30F,GAA+C20F,aAAat1F,KAA5DW,GAA4DX,MAAM+9E,KAAlEp9E,GAAkEo9E,aAAauU,KAA/E3xF,GAA+E2xF,UAC3EzuD,KAAc9T,GAAOzvB,IAAI,aAAA,GACzB4yB,KAAQnD,GAAOzvB,IAAI,OAAA,GACnBk5E,KAAQzpD,GAAOzvB,IAAI,OAAA,KAAYy9E,MAAe/9E,IAC9CmzB,KAAa5xB,GAAA,EAAAwuB,EAAAA,EAAM,KAANA,IAAe,SAAEnpB,IAAG5F,IAAAA;AAAL,kBAAAE;AAAA,qBAAA,OAAa,GAAA,EAAAA,KAAA,CAAC,QAAQ,SAAS,eAAe,OAAA,CAAA,EAAjC,KAAAA,IAAkDF,EAAAA;YAAAA,CAAAA,GAEzF4xF,KAAWxR,GAAa,YAAA,IAAY,GACpCytK,KAAgBztK,GAAa,eAAA,GAC7Bu/B,KAAQv/B,GAAa,OAAA,GACrBspK,KAAWtpK,GAAa,UAAA,GAExB0vK,KAAUt3K,MACdhjD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,cAAA,GACd7oC,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,oBAAA,GAAsBma,EAAAA,CAAAA;AAQ1C,mBAAOhjD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,QAAA,GACrB7oC,GAAA,EAAA,cAACq4N,IAAD,EAAer1K,OAAOs3K,IAAS9uH,UAAWphH,MAAS00E,IAAc25J,kBAAiB,QAAA,GAAlF,KAGM97N,GAAWnuB,OAAOqxB,GAAA,EAAA50B,KAAA0xB,GAAWrrB,SAAAA,CAAAA,EAAX,KAAArG,IAA2B,SAAAA,IAAA;AAAA,kBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAIT,KAAJE,GAAA,CAAA,GAAS0F,KAAT1F,GAAA,CAAA;AAAA,qBAAkBs1B,GAAA,EAAA,cAACk0N,IAAD,EAAU1pP,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKK,IAAL,GAAA,CAAA,EAAA,KAAAL,IAAYiG,EAAAA,GAAK8qB,SAAU1wB,IAAM4pP,SAAUhkP,IAAIikP,WA5CrH,WAAA,CAAA;YAAA,CAAA,IA4CmJ,MAGxJhnN,KACCrN,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAASoJ,GAAAA,CAAAA,IADL1Q,GAAWnuB,OAAOwxB,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,WAAA,CAAA,IAAoB,MAGvE7oC,GAAA,EAAA,cAAA,QAAA,MACEA,GAAA,EAAA,cAACmqF,IAAD,GAAA,EAAA,CAAA,GACOn6G,KAAKylB,OADZ,EAEE2c,YAAaA,IACb0pD,UAAUA,GAASl8E,KAAK,OAAA,GACxBpW,MAAM,MACN+vB,QAASmD,IACTqqC,UAAAA,OACA38C,OAAQA,KAAQ,EAAA,CAAA,CAAA,CAAA,GAjBxB,GAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA1f;QAAA,EAvCkC6hC,GAAAA,SAAAA,GCFlC8nN,KAAY,sBAEGoG,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAUnB,WAAA;AAAS,gBAADxvP,IAAAd,IAAAO,IACNX,KAAqEiG,KAAKylB,OAApE8D,KAANxvB,GAAMwvB,QAAQqxD,KAAd7gF,GAAc6gF,cAAcx4C,KAA5BroC,GAA4BqoC,YAAY5oC,KAAxCO,GAAwCP,MAAM+9E,KAA9Cx9E,GAA8Cw9E,aAAan9D,KAA3DrgB,GAA2DqgB,OAEnDkjO,KAAmBl7M,GAAAA,EAAnBk7M;AAER,gBAAA,CAAI/zN,MAAAA,CAAWA,GAAOzvB;AAEpB,qBAAOk2B,GAAA,EAAA,cAAA,OAAA,IAAA;AAGT,gBAAI9vB,KAAOqpB,GAAOzvB,IAAI,MAAA,GAClBkwB,KAAST,GAAOzvB,IAAI,QAAA,GACpB0yB,KAAMjD,GAAOzvB,IAAI,KAAA,GACjB4wP,KAAYnhO,GAAOzvB,IAAI,MAAA,GACvBk5E,KAAQzpD,GAAOzvB,IAAI,OAAA,KAAYy9E,MAAe/9E,IAC9C6jC,KAAc9T,GAAOzvB,IAAI,aAAA,GACzBijP,KAAavsN,OAAAA,GAAAA,CAAAA,EAAcjH,EAAAA,GAC3BoD,KAAa5xB,GAAA,EAAAwuB,EAAAA,EAAM,KAANA,IACN,SAAEnpB,IAAG5F,IAAAA;AAAL,kBAAAE;AAAA,qBAAA,OAAa,GAAA,EAAAA,KAAA,CAAC,QAAQ,QAAQ,UAAU,eAAe,OAAA,CAAA,EAA1C,KAAAA,IAA2DF,EAAAA;YAAAA,CAAAA,EAChF4mB,UAAW,SAAChhB,IAAG5F,IAAAA;AAAJ,qBAAYuiP,GAAW72O,IAAI1L,EAAAA;YAAAA,CAAAA,GACnC4xF,KAAWxR,GAAa,YAAA,IAAY,GACpCsvK,KAAYtvK,GAAa,WAAA,GACzBspK,KAAWtpK,GAAa,UAAA;AAE9B,mBAAO5qD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,QAAA,GACrB7oC,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,OAAA,GACZr/D,MAAQw2B,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAS,GAAA,OAAe,MAAVz+C,MAAe,eAApB,YAAA,EAAA,GAAiD44D,EAAAA,GAC1EhjD,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,YAAA,GAAc34D,EAAAA,GAC5B8pB,MAAUgG,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAU,cAAA,GAAhB,MAAiC7uC,IAAjC,GAAA,GAEV2C,GAAWnuB,OAAOqxB,GAAA,EAAA50B,KAAA0xB,GAAWrrB,SAAAA,CAAAA,EAAX,KAAArG,IAA2B,SAAAA,IAAA;AAAA,kBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAIT,KAAJE,GAAA,CAAA,GAAS0F,KAAT1F,GAAA,CAAA;AAAA,qBAAkBs1B,GAAA,EAAA,cAACk0N,IAAD,EAAU1pP,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKK,IAAL,GAAA,CAAA,EAAA,KAAAL,IAAYiG,EAAAA,GAAK8qB,SAAU1wB,IAAM4pP,SAAUhkP,IAAIikP,WAAYA,GAAAA,CAAAA;YAAAA,CAAAA,IAAkB,MAGzJ/G,MAAkBP,GAAWv+O,OAAOqxB,GAAA,EAAA11B,KAAA4iP,GAAWz7O,SAAAA,CAAAA,EAAX,KAAAnH,IAA2B,SAAAc,IAAA;AAAA,kBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAIT,KAAJE,GAAA,CAAA,GAAS0F,KAAT1F,GAAA,CAAA;AAAA,qBAAkBs1B,GAAA,EAAA,cAACk0N,IAAD,EAAU1pP,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKK,IAAL,GAAA,CAAA,EAAA,KAAAL,IAAYiG,EAAAA,GAAK8qB,SAAU1wB,IAAM4pP,SAAUhkP,IAAIikP,WAAYA,GAAAA,CAAAA;YAAAA,CAAAA,IAAkB,MAG1KhnN,KACCrN,GAAA,EAAA,cAACo8D,IAAD,EAAUn4D,QAASoJ,GAAAA,CAAAA,IADN,MAIf7Q,MAAOA,GAAIhuB,OAAQwxB,GAAA,EAAA,cAAA,QAAA,MAAMA,GAAA,EAAA,cAAA,MAAA,IAAA,GAAMA,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAYwrL,GAAAA,GAAlB,MAAA,GAE3Bx0N,GAAA,EAAAn1B,KAAA8xB,GAAIlrB,SAAAA,CAAAA,EAAJ,KAAA5G,IAAoB,SAAAO,IAAA;AAAA,kBAAAd,IAAAO,KAAA66I,IAAA,EAAAt6I,IAAA,CAAA,GAAIT,KAAJE,GAAA,CAAA,GAAS0F,KAAT1F,GAAA,CAAA;AAAA,qBAAkBs1B,GAAA,EAAA,cAAA,QAAA,EAAMx1B,KAAGQ,GAAA,EAAAb,KAAA,GAAA,OAAKK,IAAL,GAAA,CAAA,EAAA,KAAAL,IAAYiG,EAAAA,GAAKy4D,WAAYwrL,GAAAA,GAAYr0N,GAAA,EAAA,cAAA,MAAA,IAAA,GAAlD,gBAA0Ex1B,IAA1E,MAAkFwpB,OAAO5jB,EAAAA,CAAAA;YAAAA,CAAAA,EAAakC,QAAAA,CAAAA,IAEtI,MAGVooP,MAAa16N,GAAA,EAAA,cAACk6N,IAAD,EAAWhwP,OAAQwwP,IAAY9vK,cAAeA,GAAAA,CAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAAAA;QAAAA,EAzD9Br+C,GAAAA,SAAAA,GCSxB2nN,KAZS,SAACjpP,IAAA;AAAqC,cAAnCiwB,KAAkCjwB,GAAlCiwB,SAASk5N,KAAyBnpP,GAAzBmpP,SAASC,KAAgBppP,GAAhBopP;AACzC,iBACIr0N,GAAA,EAAA,cAAA,QAAA,EAAM6oC,WAAYwrL,GAAAA,GAChBr0N,GAAA,EAAA,cAAA,MAAA,IAAA,GAAQ9E,IADV,MACuBlH,OAAOogO,EAAAA,CAAAA;QAAAA,GCHjB1C,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAoBnB,WAAA;AACE,gBAAAzmP,KAA2F+E,KAAKylB,OAAxFqwN,KAAR76O,GAAQ66O,eAAeC,KAAvB96O,GAAuB86O,eAAe8L,KAAtC5mP,GAAsC4mP,cAAc/lJ,KAApD7gG,GAAoD6gG,SAASksC,KAA7D/sI,GAA6D+sI,mBAEvD2iH,KAFN1vP,GAAgFgxB,UAEpD+7G;AAC5B,mBACEh4G,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAW8xL,KAAY,sBAAsB,UAAA,GAE9C7uJ,KAAU9rE,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAU,2BAA0BokE,SAAU84G,GAAAA,GAAtD,QAAA,IACA/lN,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAU,oBAAmBokE,SAAU64G,GAAAA,GAA/C,aAAA,GAIV6U,MAAa36N,GAAA,EAAA,cAAA,UAAA,EAAQ6oC,WAAU,0BAAyBokE,SAAU4kH,GAAAA,GAArD,OAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAAnnP;QAAA,EAhCqB04F,GAAAA,EAAM72D,SAAAA;AAAAA,QAAAA,GAAAA,EAA7BmlN,IAAAA,gBAWG,EACpB5L,eAAergN,SAAS56B,WACxBk7O,eAAetgN,SAAS56B,WACxBgnP,cAAcpsN,SAAS56B,WACvBihG,SAAAA,OACAksC,mBAAAA,OACA/7G,QAAAA,MAAQ,CAAA;AAAA,YCjBS2+N,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAenB,WAAA;AACE,gBAAA3vP,KAAiD+E,KAAKylB,OAA9ColO,KAAR5vP,GAAQ4vP,QAAQzuN,KAAhBnhC,GAAgBmhC,YAAYnQ,KAA5BhxB,GAA4BgxB,QAAQ6+N,KAApC7vP,GAAoC6vP;AAEpC,mBAAGD,KACM76N,GAAA,EAAA,cAAA,OAAA,MAAOhwB,KAAKylB,MAAM8zC,QAAAA,IAGxBn9B,MAAcnQ,KACR+D,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,iBAAA,GACnBiyL,IACD96N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,6DAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MAAA,kCAAA,GACAA,GAAA,EAAA,cAAA,KAAA,MAAGA,GAAA,EAAA,cAAA,QAAA,MAAA,SAAA,GAAH,SAA4BA,GAAA,EAAA,cAAA,QAAA,MAAA,SAAA,GAA5B,uGAAA,GACAA,GAAA,EAAA,cAAA,KAAA,MAAA,iCAAgCA,GAAA,EAAA,cAAA,QAAA,MAAA,aAAgB,OAAA,GAAhD,0BAAuFA,GAAA,EAAA,cAAA,QAAA,MAAA,gBAAA,GAAvF,mBAAiIA,GAAA,EAAA,cAAA,QAAA,MAAA,gBAAA,GAAjI,IAAA,CAAA,CAAA,CAAA,IAMJoM,MAAenQ,KAaZ+D,GAAA,EAAA,cAAA,OAAA,MAAOhwB,KAAKylB,MAAM8zC,QAAAA,IAZhBvpC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,iBAAA,GACnBiyL,IACD96N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,2DAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,MAAA,MAAA,kCAAA,GACAA,GAAA,EAAA,cAAA,KAAA,MAAA,iEAAA,GACAA,GAAA,EAAA,cAAA,KAAA,MAAA,2FAA0FA,GAAA,EAAA,cAAA,QAAA,MAAA,aAAgB,OAAA,GAA1G,0BAAiJA,GAAA,EAAA,cAAA,QAAA,MAAA,gBAAA,GAAjJ,mBAA2LA,GAAA,EAAA,cAAA,QAAA,MAAA,gBAAA,GAA3L,IAAA,CAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAAt1B;QAAA,EA1CqC04F,GAAAA,EAAMszC,aAAAA;AAAAA,QAAAA,GAAAA,EAAlCkkH,IAAAA,gBASG,EACpBE,UAAU,MACVvxL,UAAU,MACVsxL,QAAAA,MAAQ,CAAA;ACZZ,YAQepjH,KARM,SAACxsI,IAAA;AAAiB,cAAfk/C,KAAcl/C,GAAdk/C;AACtB,iBAAOnqB,GAAA,EAAA,cAAA,SAAA,MAAOA,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,UAAA,GAAf,KAA4B1e,IAA5B,GAAA,CAAA;QAAA,GCeDmiM,KAhBS,SAACrhP,IAAA;AAA6B,cAA3B6gG,KAA0B7gG,GAA1B6gG,SAASpoE,KAAiBz4B,GAAjBy4B,MAAMsQ,KAAW/oC,GAAX+oC;AACtC,iBACIhU,GAAA,EAAA,cAAA,KAAA,EAAG6oC,WAAU,WACXokE,SAASnhC,KAAU,SAAC7gG,IAAAA;AAAD,mBAAOA,GAAE+5K,eAAAA;UAAAA,IAAmB,MAC/CjrH,MAAM+xC,KAAU,KAAH,OAAQpoE,EAAAA,IAAS,KAAA,GAC9B1D,GAAA,EAAA,cAAA,QAAA,MAAOgU,EAAAA,CAAAA;QAAAA,GCiCF+mN,KAxCG,WAAA;AAAA,iBAChB/6N,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAAA,OAAA,EAAKg7N,OAAM,8BAA6BC,YAAW,gCAA+BpyL,WAAU,aAAA,GAC1F7oC,GAAA,EAAA,cAAA,QAAA,MACEA,GAAA,EAAA,cAAA,UAAA,EAAQk7N,SAAQ,aAAY15N,IAAG,WAAA,GAC7BxB,GAAA,EAAA,cAAA,QAAA,EAAMz2B,GAAE,4TAAA,CAAA,CAAA,GAGVy2B,GAAA,EAAA,cAAA,UAAA,EAAQk7N,SAAQ,aAAY15N,IAAG,SAAA,GAC7BxB,GAAA,EAAA,cAAA,QAAA,EAAMz2B,GAAE,kUAAA,CAAA,CAAA,GAGVy2B,GAAA,EAAA,cAAA,UAAA,EAAQk7N,SAAQ,aAAY15N,IAAG,QAAA,GAC7BxB,GAAA,EAAA,cAAA,QAAA,EAAMz2B,GAAE,+UAAA,CAAA,CAAA,GAGVy2B,GAAA,EAAA,cAAA,UAAA,EAAQk7N,SAAQ,aAAY15N,IAAG,cAAA,GAC7BxB,GAAA,EAAA,cAAA,QAAA,EAAMz2B,GAAE,qLAAA,CAAA,CAAA,GAGVy2B,GAAA,EAAA,cAAA,UAAA,EAAQk7N,SAAQ,aAAY15N,IAAG,mBAAA,GAC7BxB,GAAA,EAAA,cAAA,QAAA,EAAMz2B,GAAE,kLAAA,CAAA,CAAA,GAGVy2B,GAAA,EAAA,cAAA,UAAA,EAAQk7N,SAAQ,aAAY15N,IAAG,iBAAA,GAC7BxB,GAAA,EAAA,cAAA,QAAA,EAAMz2B,GAAE,0RAAA,CAAA,CAAA,GAGVy2B,GAAA,EAAA,cAAA,UAAA,EAAQk7N,SAAQ,aAAY15N,IAAG,UAAA,GAC7BxB,GAAA,EAAA,cAAA,QAAA,EAAMz2B,GAAE,8DAAA,CAAA,CAAA,GAGVy2B,GAAA,EAAA,cAAA,UAAA,EAAQk7N,SAAQ,aAAY15N,IAAG,SAAA,GAC7BxB,GAAA,EAAA,cAAA,QAAA,EAAMz2B,GAAE,iDAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,GAAA,KAAAmB,GAAA,GAAA,GC/BGywP,KAAAA,SAAAA,IAAAA;AAAAA,aAAAA,EAAAA,IAAAA,EAAAA;AAAAA,cAAAA,KAAAA,GAAAA,EAAAA,EAAAA;AAAAA,mBAAAA,KAAAA;AAAAA,mBAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,MAAAA,MAAAA,SAAAA;UAAAA;AAAAA,iBAAAA,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAAA,UAAAA,OAWnB,WAAA;AACE,gBAAAlwP,KAAkD+E,KAAKylB,OAAlDyd,KAALjoC,GAAKioC,cAAcxG,KAAnBzhC,GAAmByhC,eAAek+C,KAAlC3/E,GAAkC2/E,cAE9BmwK,KAAYnwK,GAAa,WAAA,GACzBwsK,KAAgBxsK,GAAa,iBAAA,IAAiB,GAC9CgwK,KAAsBhwK,GAAa,qBAAA,GACnCkhK,KAAalhK,GAAa,cAAA,IAAc,GACxCyuK,KAASzuK,GAAa,UAAA,IAAU,GAChC+rD,KAAM/rD,GAAa,KAAA,GACnBgsD,KAAMhsD,GAAa,KAAA,GACnB0pK,KAAS1pK,GAAa,UAAA,IAAU,GAE9BwpD,KAAmBxpD,GAAa,oBAAA,IAAoB,GACpDwtK,KAAmBxtK,GAAa,oBAAA,IAAoB,GACpD47J,KAAwB57J,GAAa,yBAAA,IAAyB,GAC9D0sK,KAAkB1sK,GAAa,mBAAA,IAAmB,GACpDx+C,KAAaM,GAAcN,WAAAA,GAC3BnQ,KAASyQ,GAAczQ,OAAAA,GAErBm/N,KAAAA,CAAe1uN,GAAc+E,QAAAA,GAE7Bg+F,KAAgB/iG,GAAc+iG,cAAAA,GAEhC4rH,KAAiB;AAmBrB,gBAjBqB,cAAlB5rH,OACD4rH,KAAiBr7N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,OAAA,GAC9B7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GACb7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,UAAA,CAAA,CAAA,CAAA,IAKA,aAAlB4mE,OACD4rH,KAAiBr7N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,OAAA,GAC9B7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,QAAA,GAAd,gCAAA,GACA7oC,GAAA,EAAA,cAACs0N,IAAD,IAAA,CAAA,CAAA,IAKgB,mBAAlB7kH,IAAkC;AACpC,kBAAM6rH,KAAUpoN,GAAa6uB,UAAAA,GACvBw5L,KAAaD,KAAUA,GAAQxxP,IAAI,SAAA,IAAa;AACtDuxP,cAAAA,KAAiBr7N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,qBAAA,GAC9B7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GACb7oC,GAAA,EAAA,cAAA,MAAA,EAAI6oC,WAAU,QAAA,GAAd,sCAAA,GACA7oC,GAAA,EAAA,cAAA,KAAA,MAAIu7N,EAAAA,CAAAA,CAAAA;YAAAA;AASV,gBAAA,CAJIF,MAAkBD,OACpBC,KAAiBr7N,GAAA,EAAA,cAAA,MAAA,MAAA,6BAAA,IAGhBq7N;AACD,qBAAOr7N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GACpB7oC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GACZwyL,EAAAA,CAAAA;AAKP,gBAAMnoH,KAAUxmG,GAAcwmG,QAAAA,GACxBhwE,KAAUx2B,GAAcw2B,QAAAA,GAExBs4L,KAAatoH,MAAWA,GAAQ1kI,MAChCitP,KAAav4L,MAAWA,GAAQ10D,MAChCktP,KAAAA,CAAAA,CAA2BhvN,GAAck2B,oBAAAA;AAE/C,mBACE5iC,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,aAAA,GACb7oC,GAAA,EAAA,cAAC+6N,IAAD,IAAA,GACA/6N,GAAA,EAAA,cAAC46N,IAAD,EAAqBxuN,YAAYA,IAAYnQ,QAAQA,IAAQ6+N,UAAU96N,GAAA,EAAA,cAACs0N,IAAD,IAAA,EAAA,GACrEt0N,GAAA,EAAA,cAACs0N,IAAD,IAAA,GACAt0N,GAAA,EAAA,cAAC22G,IAAD,EAAK9tE,WAAU,wBAAA,GACb7oC,GAAA,EAAA,cAAC42G,IAAD,EAAK8+G,QAAQ,GAAA,GACX11N,GAAA,EAAA,cAACo3N,IAAD,IAAA,CAAA,CAAA,GAIHoE,MAAcC,MAAcC,KAC3B17N,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,mBAAA,GACb7oC,GAAA,EAAA,cAAC42G,IAAD,EAAK/tE,WAAU,mBAAkB6sL,QAAQ,GAAA,GACtC8F,KAAcx7N,GAAA,EAAA,cAACo0G,IAAD,IAAA,IAAwB,MACtCqnH,KAAcz7N,GAAA,EAAA,cAACo4N,IAAD,IAAA,IAAwB,MACtCsD,KAA0B17N,GAAA,EAAA,cAACwmN,IAAD,IAAA,IAA6B,IAAA,CAAA,IAG1D,MAEJxmN,GAAA,EAAA,cAACs3N,IAAD,IAAA,GAEAt3N,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAC42G,IAAD,EAAK8+G,QAAQ,IAAI/K,SAAS,GAAA,GACxB3qN,GAAA,EAAA,cAAC8rN,IAAD,IAAA,CAAA,CAAA,GAGJ9rN,GAAA,EAAA,cAAC22G,IAAD,MACE32G,GAAA,EAAA,cAAC42G,IAAD,EAAK8+G,QAAQ,IAAI/K,SAAS,GAAA,GACxB3qN,GAAA,EAAA,cAACq5N,IAAD,IAAA,CAAA,CAAA,CAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GAAA3uP;QAAA,EAjH0B04F,GAAAA,EAAM72D,SAAAA,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GCqBxCovN,KAAyB,EAC7BzxP,OAAO,IACP6xF,UAjBW,WAAA;QAAA,GAkBXxiE,QAAQ,CAAA,GACRqiO,SAAS,IACT70L,UAAAA,OACAptC,QAAQzX,OAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAGGm7E,KAAb,SAAApyF,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,mBAAA+sB,GAAA,EAAA,MAAA/sB,EAAA,GAAAP,GAAA,MAAA,MAAA,SAAA;UAAA;AAAA,iBAAAqtB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,qBAAA,OAKE,WAAA;AACE,gBAAAO,KAAkD+E,KAAKylB,OAA/C0oE,KAARlzF,GAAQkzF,sBAAsBj0F,KAA9Be,GAA8Bf,OAAO6xF,KAArC9wF,GAAqC8wF;AAClCoC,YAAAA,KACDpC,GAAS7xF,EAAAA,IAAAA,UACDi0F,MACRpC,GAAS,EAAA;UAAA,EAAA,GAVf,EAAA,KAAA,UAAA,OAcE,WAAA;AAAU,gBAAD9wF,IACPd,KAAsE6F,KAAKylB,OAArE8D,KAANpvB,GAAMovB,QAAQI,KAAdxvB,GAAcwvB,QAAQzvB,KAAtBC,GAAsBD,OAAO6xF,KAA7B5xF,GAA6B4xF,UAAUnR,KAAvCzgF,GAAuCygF,cAAcr4E,KAArDpI,GAAqDoI,IAAIulI,KAAzD3tI,GAAyD2tI,UACnD99G,KAAST,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,QAAA,IAAY,MACvDoG,KAAOqpB,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,MAAA,IAAU,MAErD+xP,KAAuB,SAACryP,IAAAA;AAAD,qBAAUohF,GAAaphF,IAAAA,OAAa,EAAEmsF,cAAAA,KAAc,CAAA;YAAA,GAC3EmmK,KAAO5rP,KACT2rP,GADgB7hO,KACKhvB,GAAA,EAAAC,KAAA,cAAA,OAAciF,IAAf,GAAA,CAAA,EAAA,KAAAjF,IAAuB+uB,EAAAA,IACtB,cAAD,OAAe9pB,EAAAA,CAAAA,IACnC06E,GAAa,mBAAA;AAIf,mBAHKkxK,OACHA,KAAOlxK,GAAa,mBAAA,IAEf5qD,GAAA,EAAA,cAAC87N,IAAD,GAAA,EAAA,CAAA,GAAW9rP,KAAKylB,OAAhB,EAAwBkE,QAAQA,IAAQpnB,IAAIA,IAAIq4E,cAAcA,IAAc1gF,OAAOA,IAAO6xF,UAAUA,IAAUxiE,QAAQA,IAAQu+G,UAAUA,GAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GA3BnJptI;QAAA,EAAoC6hC,GAAAA,SAAAA;AAAAA,QAAAA,GAAAA,EAAvB8wD,IAAAA,gBAGWs+J,EAAAA;AA4BjB,YAAMnkH,KAAb,SAAAvsI,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,gBAAAO,IAAAlB;AAAA,YAAA0tB,GAAA,EAAA,MAAA/sB,EAAA;AAAA,qBAAAhB,KAAA,UAAA,QAAA8L,KAAA,IAAA,MAAA9L,EAAA,GAAAT,KAAA,GAAAA,KAAAS,IAAAT;AAAA,cAAAuM,GAAAvM,EAAA,IAAA,UAAAA,EAAA;AAAA,mBAAAc,KAAAI,GAAA,KAAA,MAAAA,IAAAa,GAAA,EAAAC,KAAA,CAAA,IAAA,CAAA,EAAA,KAAAA,IAAAuK,EAAA,CAAA,GAAA8iB,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,YAGa,SAACkB,IAAAA;AACV,kBAAMf,KAAQH,GAAK0rB,MAAM8D,UAA4C,WAAlCxvB,GAAK0rB,MAAM8D,OAAOzvB,IAAI,MAAA,IAAqBmB,GAAEuqB,OAAO4nE,MAAM,CAAA,IAAKnyF,GAAEuqB,OAAOtrB;AAC3G,cAAAH,GAAK0rB,MAAMsmE,SAAS7xF,IAAOH,GAAK0rB,MAAMmmO,OAAAA;YAAAA,CAAAA,GAL1CtjO,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,gBAOiB,SAAC0N,IAAAA;AAAD,qBAAS1N,GAAK0rB,MAAMsmE,SAAStkF,EAAAA;YAAAA,CAAAA,GAP9C1N;UAAA;AAAA,iBAAAytB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAQE,WAAA;AACE,gBAAAO,KAA+E+E,KAAKylB,OAA9Em1D,KAAN3/E,GAAM2/E,cAAc1gF,KAApBe,GAAoBf,OAAOqvB,KAA3BtuB,GAA2BsuB,QAAQI,KAAnC1uB,GAAmC0uB,QAAQotC,KAA3C97D,GAA2C87D,UAAU15B,KAArDpiC,GAAqDoiC,aAAayqG,KAAlE7sI,GAAkE6sI,UAC5D9B,KAAYz8G,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,MAAA,IAAU,MACxDkwB,KAAST,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,QAAA,IAAY,MACvDoG,KAAOqpB,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,MAAA,IAAU,MACnDiyP,KAAWxiO,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,IAAA,IAAQ;AAM3D,gBALKI,OACHA,KAAQ,KAEVyvB,KAASA,GAAOnK,OAAOmK,GAAOnK,KAAAA,IAAS,CAAA,GAElCwmH,IAAY;AACf,kBAAM+/G,KAASnrK,GAAa,QAAA;AAC5B,qBAAQ5qD,GAAA,EAAA,cAAC+1N,IAAD,EAAQltL,WAAYlvC,GAAOxrB,SAAS,YAAY,IACxC60E,OAAQrpD,GAAOxrB,SAASwrB,KAAS,IACjCs8N,eAAgBjgH,IAChB9rI,OAAQA,IACR8zI,iBAAAA,CAAmBj3E,IACnB+wE,UAAUA,IACV/7C,UAAW/rF,KAAKgsP,aAAAA,CAAAA;YAAAA;AAGlC,gBAAM19J,KAAaw5C,MAAaikH,MAAyB,eAAbA,MAAAA,EAA6B,cAAcv2N,SACjF23D,KAAQvS,GAAa,OAAA;AAC3B,mBAAI16E,MAAiB,WAATA,KAER8vB,GAAA,EAAA,cAACm9D,IAAD,EAAOjtF,MAAK,QACV24D,WAAWlvC,GAAOxrB,SAAS,YAAY,IACvC60E,OAAOrpD,GAAOxrB,SAASwrB,KAAS,IAChCoiE,UAAU/rF,KAAK+rF,UACf+7C,UAAUx5C,GAAAA,CAAAA,IAKZt+D,GAAA,EAAA,cAAC,GAAA,GAAD,EACE9vB,MAAM8pB,MAAqB,eAAXA,KAAwB,aAAa,QACrD6uC,WAAWlvC,GAAOxrB,SAAS,YAAY,IACvC60E,OAAOrpD,GAAOxrB,SAASwrB,KAAS,IAChCzvB,OAAOA,IACPgwB,WAAW,GACXkmN,iBAAiB,KACjBqX,aAAapqN,IACb0uD,UAAU/rF,KAAK+rF,UACf+7C,UAAUx5C,GAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GApDpB5zF;QAAA,EAAuC6hC,GAAAA,SAAAA;AAAAA,QAAAA,GAAAA,EAA1BirG,IAAAA,gBAEWmkH,EAAAA;AAwDjB,YAAMM,KAAb,SAAAhxP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAKE,mBAAAA,GAAY+qB,IAAO3N,IAAAA;AAAU,gBAADpe;AAAA,mBAAA+tB,GAAA,EAAA,MAAA/sB,EAAA,GAC1BhB,KAAAS,GAAA,KAAA,MAAMsrB,IAAO3N,EAAAA,GADawQ,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,YAcjB,WAAA;AACT,cAAAA,GAAK+rB,MAAMsmE,SAASryF,GAAKkgD,MAAM1/C,KAAAA;YAAAA,CAAAA,GAfLouB,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,gBAkBb,SAACwyP,IAASjzP,IAAAA;AACvB,cAAAS,GAAKs5F,SAAS,SAAAt4F,IAAA;AAAA,uBAAgB,EAC5BR,OADYQ,GAAGR,MACFwP,IAAIzQ,IAAGizP,EAAAA,EAAAA;cAAAA,GAClBxyP,GAAKqyF,QAAAA;YAAAA,CAAAA,GArBiBzjE,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,cAwBf,SAACT,IAAAA;AACZ,cAAAS,GAAKs5F,SAAS,SAAA74F,IAAA;AAAA,uBAAgB,EAC5BD,OADYC,GAAGD,MACFmkI,OAAOplI,EAAAA,EAAAA;cAAAA,GAClBS,GAAKqyF,QAAAA;YAAAA,CAAAA,GA3BiBzjE,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,WA8BlB,WAAA;AACR,kBAAI6W,KAAW47O,GAAiBzyP,GAAKkgD,MAAM1/C,KAAAA;AAC3C,cAAAR,GAAKs5F,SAAS,WAAA;AAAA,uBAAO,EACnB94F,OAAOqW,GAASX,KAAKue,OAAAA,GAAAA,CAAAA,EAAgBz0B,GAAKkgD,MAAMrwB,OAAOzvB,IAAI,OAAA,GAAA,OAAiB,EAC1E+8E,kBAAAA,KAAkB,CAAA,CAAA,EAAA;cAAA,GAElBn9E,GAAKqyF,QAAAA;YAAAA,CAAAA,GApCiBzjE,GAAA,EAAA,GAAA,EAAA5uB,EAAA,GAAA,gBAuCb,SAACQ,IAAAA;AACd,cAAAR,GAAKs5F,SAAS,WAAA;AAAA,uBAAO,EACnB94F,OAAOA,GAAAA;cAAAA,GACLR,GAAKqyF,QAAAA;YAAAA,CAAAA,GAxCTryF,GAAKkgD,QAAQ,EAAE1/C,OAAOiyP,GAAiB1mO,GAAMvrB,KAAAA,GAAQqvB,QAAQ9D,GAAM8D,OAAAA,GAFzC7vB;UAAA;AAL9B,iBAAA8tB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,oCAAA,OAUE,SAAiC+qB,IAAAA;AAC/B,gBAAMvrB,KAAQiyP,GAAiB1mO,GAAMvrB,KAAAA;AAClCA,YAAAA,OAAU8F,KAAK45C,MAAM1/C,SACtB8F,KAAKgzF,SAAS,EAAE94F,OAAAA,GAAAA,CAAAA,GAEfurB,GAAM8D,WAAWvpB,KAAK45C,MAAMrwB,UAC7BvpB,KAAKgzF,SAAS,EAAEzpE,QAAQ9D,GAAM8D,OAAAA,CAAAA;UAAAA,EAAAA,GAhBpC,EAAA,KAAA,UAAA,OAkDE,WAAA;AAAU,gBAADtuB,IAAAd,KAAA,MACPO,KAA+DsF,KAAKylB,OAA9Dm1D,KAANlgF,GAAMkgF,cAAc7jB,KAApBr8D,GAAoBq8D,UAAUxtC,KAA9B7uB,GAA8B6uB,QAAQI,KAAtCjvB,GAAsCivB,QAAQpnB,KAA9C7H,GAA8C6H,IAAIulI,KAAlDptI,GAAkDotI;AAElDn+G,YAAAA,KAASA,GAAOnK,OAAOmK,GAAOnK,KAAAA,IAASmJ,GAAA,EAAcgB,EAAAA,IAAUA,KAAS,CAAA;AACxE,gBAUIyiO,IAGsCnlO,IAbpColO,KAActxP,GAAA,EAAA4uB,EAAAA,EAAM,KAANA,IAAc,SAAA1uB,IAAAA;AAAC,qBAAiB,YAAA,OAANA;YAAAA,CAAAA,GACxCqxP,KAAmBz8N,GAAA,EAAA50B,KAAAF,GAAA,EAAA4uB,EAAAA,EAAM,KAANA,IAAc,SAAA1uB,IAAAA;AAAC,qBAAA,WAAIA,GAAEuwB;YAAAA,CAAAA,CAAAA,EAArB,KAAAvwB,IAClB,SAAAA,IAAAA;AAAC,qBAAIA,GAAEwL;YAAAA,CAAAA,GACRvM,KAAQ8F,KAAK45C,MAAM1/C,OACnBqyP,KAAAA,CAAAA,EACJryP,MAASA,GAAMyT,SAASzT,GAAMyT,MAAAA,IAAU,IACpC6+O,KAAkBjjO,GAAO1H,MAAM,CAAC,SAAS,MAAA,CAAA,GACzC4qO,KAAkBljO,GAAO1H,MAAM,CAAC,SAAS,MAAA,CAAA,GACzC6qO,KAAoBnjO,GAAO1H,MAAM,CAAC,SAAS,QAAA,CAAA,GAC3C8qO,KAAoBpjO,GAAOzvB,IAAI,OAAA,GAEjC8yP,KAAAA,OACAC,KAAuC,WAApBJ,MAAmD,aAApBA,MAAsD,aAAtBC;AAClFD,YAAAA,MAAmBC,KACrBN,KAAsBxxK,GAAa5/E,GAAA,EAAAisB,KAAA,cAAA,OAAcwlO,IAAf,GAAA,CAAA,EAAA,KAAAxlO,IAAkCylO,EAAAA,CAAAA,IACvC,cAApBD,MAAqD,YAApBA,MAAmD,aAApBA,OACzEL,KAAsBxxK,GAAa,cAAD,OAAe6xK,EAAAA,CAAAA;AAQnD,gBAJKL,MAAwBS,OAC3BD,KAAAA,OAGGJ,IAAkB;AACrB,kBAAMzG,KAASnrK,GAAa,QAAA;AAC5B,qBAAQ5qD,GAAA,EAAA,cAAC+1N,IAAD,EAAQltL,WAAYlvC,GAAOxrB,SAAS,YAAY,IACxC60E,OAAQrpD,GAAOxrB,SAASwrB,KAAS,IACjCy3L,UAAAA,MACAlnN,OAAQA,IACR4tI,UAAUA,IACVm+G,eAAgBuG,IAChBx+G,iBAAAA,CAAmBj3E,IACnBg1B,UAAW/rF,KAAKgsP,aAAAA,CAAAA;YAAAA;AAGlC,gBAAMnV,KAASj8J,GAAa,QAAA;AAC5B,mBACE5qD,GAAA,EAAA,cAAA,OAAA,EAAK6oC,WAAU,oBAAA,GACZ0zL,KACE18N,GAAA,EAAA31B,EAAAA,EAAK,KAALA,IAAU,SAACyxB,IAAM1yB,IAAAA;AAAO,kBAADS,IAChBozP,KAAatoP,OAAAA,GAAAA,MAAAA,EAAOs1I,IAAA,EACrBjqH,GAAA,EAAAn2B,KAAAqB,GAAA,EAAA4uB,EAAAA,EAAM,KAANA,IAAc,SAACyB,IAAAA;AAAD,uBAASA,GAAIxsB,UAAU3F;cAAAA,CAAAA,CAAAA,EAArC,KAAAS,IACE,SAAAuB,IAAAA;AAAC,uBAAIA,GAAEwL;cAAAA,CAAAA,CAAAA,CAAAA;AAEd,qBACEupB,GAAA,EAAA,cAAA,OAAA,EAAKx1B,KAAKvB,IAAG4/D,WAAU,wBAAA,GAEnBg0L,KACE78N,GAAA,EAAA,cAAC,IAAD,EACA91B,OAAOyxB,IACPogE,UAAU,SAACtkF,IAAAA;AAAD,uBAAQtN,GAAK4yP,aAAatlP,IAAKxO,EAAAA;cAAAA,GACzC6uI,UAAUA,IACVn+G,QAAQmjO,IACRlyK,cAAcA,GAAAA,CAAAA,IAEZgyK,KACA58N,GAAA,EAAA,cAAC,IAAD,EACE91B,OAAOyxB,IACPogE,UAAU,SAACtkF,IAAAA;AAAD,uBAAStN,GAAK4yP,aAAatlP,IAAKxO,EAAAA;cAAAA,GAC1C6uI,UAAUA,IACVn+G,QAAQmjO,GAAAA,CAAAA,IAER98N,GAAA,EAAA,cAACo8N,IAAD,GAAA,EAAA,CAAA,GAAyBjyP,GAAKsrB,OAA9B,EACAvrB,OAAOyxB,IACPogE,UAAU,SAACtkF,IAAAA;AAAD,uBAAStN,GAAK4yP,aAAatlP,IAAKxO,EAAAA;cAAAA,GAC1C6uI,UAAUA,IACVn+G,QAAQmjO,IACRvjO,QAAQojO,IACR/xK,cAAcA,IACdr4E,IAAIA,GAAAA,CAAAA,CAAAA,GAGVulI,KAOE,OANF93G,GAAA,EAAA,cAAC6mN,IAAD,EACEh+K,WAAS,2CAAA,OAA6CyzL,GAAiBnuP,SAAS,YAAY,IAAA,GAC5F60E,OAAOs5K,GAAiBnuP,SAASmuP,KAAmB,IAEpDrvH,SAAS,WAAA;AAAA,uBAAM9iI,GAAK6yP,WAAW/zP,EAAAA;cAAAA,EAAAA,GAJjC,KAAA,CAAA;YAAA,CAAA,IAUJ,MAEJ6uI,KAQE,OAPF93G,GAAA,EAAA,cAAC6mN,IAAD,EACEh+K,WAAS,wCAAA,OAA0CwzL,GAAYluP,SAAS,YAAY,IAAA,GACpF60E,OAAOq5K,GAAYluP,SAASkuP,KAAc,IAC1CpvH,SAASj9H,KAAKitP,QAAAA,GAHhB,QAKOR,KAAkB,GAAH,OAAMA,IAAN,GAAA,IAA2B,IALjD,MAAA,CAAA;UAAA,EAAA,CAAA,CAAA,GA7IV/xP;QAAA,EAAsCgsI,GAAAA,aAAAA;AAAAA,QAAAA,GAAAA,EAAzBulH,IAAAA,gBAGWN,EAAAA;AAuJjB,YAAMuB,KAAb,SAAAjyP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,gBAAAO,IAAAlB;AAAA,YAAA0tB,GAAA,EAAA,MAAA/sB,EAAA;AAAA,qBAAAhB,KAAA,UAAA,QAAA8L,KAAA,IAAA,MAAA9L,EAAA,GAAAT,KAAA,GAAAA,KAAAS,IAAAT;AAAA,cAAAuM,GAAAvM,EAAA,IAAA,UAAAA,EAAA;AAAA,mBAAAc,KAAAI,GAAA,KAAA,MAAAA,IAAAa,GAAA,EAAAC,KAAA,CAAA,IAAA,CAAA,EAAA,KAAAA,IAAAuK,EAAA,CAAA,GAAA8iB,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,YAIa,SAACkB,IAAAA;AACV,kBAAMf,KAAQe,GAAEuqB,OAAOtrB;AACvB,cAAAH,GAAK0rB,MAAMsmE,SAAS7xF,IAAOH,GAAK0rB,MAAMmmO,OAAAA;YAAAA,CAAAA,GAN1C7xP;UAAA;AAAA,iBAAAytB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OASE,WAAA;AACE,gBAAAO,KAA+C+E,KAAKylB,OAA9CvrB,KAANe,GAAMf,OAAOyvB,KAAb1uB,GAAa0uB,QAAQ0T,KAArBpiC,GAAqBoiC,aAAayqG,KAAlC7sI,GAAkC6sI;AAMlC,mBALK5tI,OACHA,KAAQ,KAEVyvB,KAASA,GAAOnK,OAAOmK,GAAOnK,KAAAA,IAAS,CAAA,GAE/BwQ,GAAA,EAAA,cAAC,GAAA,GAAD,EACN9vB,MAAM,QACN24D,WAAWlvC,GAAOxrB,SAAS,YAAY,IACvC60E,OAAOrpD,GAAOxrB,SAASwrB,KAAS,IAChCzvB,OAAOA,IACPgwB,WAAW,GACXkmN,iBAAiB,KACjBqX,aAAapqN,IACb0uD,UAAU/rF,KAAK+rF,UACf+7C,UAAUA,GAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAzBhBptI;QAAA,EAA6C6hC,GAAAA,SAAAA;AAAAA,QAAAA,GAAAA,EAAhC2wN,IAAAA,gBAEWvB,EAAAA;AA2BjB,YAAMwB,KAAb,SAAAlyP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,gBAAAO,IAAAlB;AAAA,YAAA0tB,GAAA,EAAA,MAAA/sB,EAAA;AAAA,qBAAAhB,KAAA,UAAA,QAAA8L,KAAA,IAAA,MAAA9L,EAAA,GAAAT,KAAA,GAAAA,KAAAS,IAAAT;AAAA,cAAAuM,GAAAvM,EAAA,IAAA,UAAAA,EAAA;AAAA,mBAAAc,KAAAI,GAAA,KAAA,MAAAA,IAAAa,GAAA,EAAAC,KAAA,CAAA,IAAA,CAAA,EAAA,KAAAA,IAAAuK,EAAA,CAAA,GAAA8iB,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,gBAIiB,SAACkB,IAAAA;AACd,kBAAMf,KAAQe,GAAEuqB,OAAO4nE,MAAM,CAAA;AAC7B,cAAArzF,GAAK0rB,MAAMsmE,SAAS7xF,IAAOH,GAAK0rB,MAAMmmO,OAAAA;YAAAA,CAAAA,GAN1C7xP;UAAA;AAAA,iBAAAytB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OASE,WAAA;AACE,gBAAAO,KAAyC+E,KAAKylB,OAAxCm1D,KAAN3/E,GAAM2/E,cAAcjxD,KAApB1uB,GAAoB0uB,QAAQm+G,KAA5B7sI,GAA4B6sI,UACtB36C,KAAQvS,GAAa,OAAA,GACrB0T,KAAaw5C,MAAAA,EAAc,cAActyG;AAE/C,mBAAQxF,GAAA,EAAA,cAACm9D,IAAD,EAAOjtF,MAAK,QAClB24D,WAAWlvC,GAAOxrB,SAAS,YAAY,IACvC60E,OAAOrpD,GAAOxrB,SAASwrB,KAAS,IAChCoiE,UAAU/rF,KAAKotP,cACftlH,UAAUx5C,GAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAlBhB5zF;QAAA,EAA6C6hC,GAAAA,SAAAA;AAAAA,QAAAA,GAAAA,EAAhC4wN,IAAAA,gBAEWxB,EAAAA;AAoBjB,YAAM0B,KAAb,SAAApyP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AAAA,mBAAAA,KAAA;AAAA,gBAAAO,IAAAlB;AAAA,YAAA0tB,GAAA,EAAA,MAAA/sB,EAAA;AAAA,qBAAAhB,KAAA,UAAA,QAAA8L,KAAA,IAAA,MAAA9L,EAAA,GAAAT,KAAA,GAAAA,KAAAS,IAAAT;AAAA,cAAAuM,GAAAvM,EAAA,IAAA,UAAAA,EAAA;AAAA,mBAAAc,KAAAI,GAAA,KAAA,MAAAA,IAAAa,GAAA,EAAAC,KAAA,CAAA,IAAA,CAAA,EAAA,KAAAA,IAAAuK,EAAA,CAAA,GAAA8iB,GAAA,EAAA,GAAA,EAAAvuB,EAAA,GAAA,gBAIiB,SAAC0N,IAAAA;AAAD,qBAAS1N,GAAK0rB,MAAMsmE,SAAStkF,EAAAA;YAAAA,CAAAA,GAJ9C1N;UAAA;AAAA,iBAAAytB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAKE,WAAA;AACE,gBAAAO,KAAkE+E,KAAKylB,OAAjEm1D,KAAN3/E,GAAM2/E,cAAc1gF,KAApBe,GAAoBf,OAAOyvB,KAA3B1uB,GAA2B0uB,QAAQJ,KAAnCtuB,GAAmCsuB,QAAQwtC,KAA3C97D,GAA2C87D,UAAU+wE,KAArD7sI,GAAqD6sI;AACrDn+G,YAAAA,KAASA,GAAOnK,OAAOmK,GAAOnK,KAAAA,IAAS,CAAA;AACvC,gBAAIwmH,KAAYz8G,MAAUA,GAAOzvB,MAAMyvB,GAAOzvB,IAAI,MAAA,IAAU,MACxDk0I,KAAAA,CAAmBhI,MAAAA,CAAcjvE,IACjCu2L,KAAAA,CAAgBtnH,MAAaxhI,OAAAA,GAAAA,MAAAA,EAAO,CAAC,QAAQ,OAAA,CAAA,GAC3CuhP,KAASnrK,GAAa,QAAA;AAE5B,mBAAQ5qD,GAAA,EAAA,cAAC+1N,IAAD,EAAQltL,WAAYlvC,GAAOxrB,SAAS,YAAY,IACxC60E,OAAQrpD,GAAOxrB,SAASwrB,KAAS,IACjCzvB,OAAQ8pB,OAAO9pB,EAAAA,GACf4tI,UAAWA,IACXm+G,eAAgBjgH,MAAasnH,IAC7Bt/G,iBAAkBA,IAClBjiD,UAAW/rF,KAAKgsP,aAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GAnBpCtxP;QAAA,EAAwC6hC,GAAAA,SAAAA;AAAAA,QAAAA,GAAAA,EAA3B8wN,IAAAA,gBAEW1B,EAAAA;AAqBxB,YAAM4B,KAAwB,SAAC5jO,IAAAA;AAC7B,iBAAOkG,GAAA,EAAAlG,EAAAA,EAAM,KAANA,IAAW,SAAAyB,IAAAA;AAAQ,gBAADjxB,IACjB46D,KAAAA,WAAO3pC,GAAIF,UAAwBE,GAAIF,UAAUE,GAAIxsB,OACvD4uP,KAA6B,YAAA,OAARpiO,KAAmBA,KAA2B,YAAA,OAAdA,GAAI3kB,QAAqB2kB,GAAI3kB,QAAQ;AAE9F,gBAAA,CAAIsuD,MAAQy4L;AACV,qBAAOA;AAIT,qBAFIC,KAAeriO,GAAI3kB,OACnBitB,KAAO,IAAH,OAAOtI,GAAIF,OAAAA,GACW,aAAxBjyB,GAAA,EAAOw0P,EAAAA,KAA2B;AACtC,kBAAM3hM,KAAAA,WAAO2hM,GAAaviO,UAAwBuiO,GAAaviO,UAAUuiO,GAAa7uP;AACtF,kBAAA,WAAGktD;AACD;AAGF,kBADAp4B,MAAQ,IAAJ,OAAQo4B,EAAAA,GAAAA,CACP2hM,GAAahnP;AAChB;AAEFgnP,cAAAA,KAAeA,GAAahnP;YAAAA;AAE9B,mBAAAzL,GAAA,EAAAb,KAAA,GAAA,OAAUu5B,IAAV,IAAA,CAAA,EAAA,KAAAv5B,IAAmBszP,EAAAA;UAAAA,CAAAA;QAAAA,GAIVC,KAAb,SAAAzyP,IAAA;AAAA,aAAA,EAAAP,IAAAO,EAAA;AAAA,cAAAd,KAAA,GAAA,EAAAO,EAAA;AACE,mBAAAA,KAAA;AAAe,gBAADO;AAAA,mBAAAwsB,GAAA,EAAA,MAAA/sB,EAAA,GACZO,KAAAd,GAAA,KAAA,IAAA,GADYmuB,GAAA,EAAA,GAAA,EAAArtB,EAAA,GAAA,YAOH,SAACf,IAAAA;AACV,cAAAe,GAAKwqB,MAAMsmE,SAAS7xF,EAAAA;YAAAA,CAAAA,GARRouB,GAAA,EAAA,GAAA,EAAArtB,EAAA,GAAA,kBAWG,SAAAA,IAAAA;AACf,kBAAMmrI,KAAanrI,GAAEuqB,OAAOtrB;AAE5B,cAAAe,GAAK8wF,SAASq6C,EAAAA;YAAAA,CAAAA,GAdFnrI;UAAA;AADhB,iBAAAusB,GAAA,EAAA9sB,IAAA,CAAA,EAAA,KAAA,UAAA,OAkBE,WAAA;AACE,gBAAAO,KAKI+E,KAAKylB,OAJPm1D,KADF3/E,GACE2/E,cACA1gF,KAFFe,GAEEf,OACAyvB,KAHF1uB,GAGE0uB,QACAm+G,KAJF7sI,GAIE6sI,UAGIvB,KAAW3rD,GAAa,UAAA;AAG9B,mBAFAjxD,KAASA,GAAOnK,OAAOmK,GAAOnK,KAAAA,IAASmJ,GAAA,EAAcgB,EAAAA,IAAUA,KAAS,CAAA,GAGtEqG,GAAA,EAAA,cAAA,OAAA,MACEA,GAAA,EAAA,cAACu2G,IAAD,EACE1tE,WAAW+/C,GAAAA,EAAG,EAAE4tB,SAAS78G,GAAOxrB,OAAAA,CAAAA,GAChC60E,OAAQrpD,GAAOxrB,SAASovP,GAAsB5jO,EAAAA,EAAQ1J,KAAK,IAAA,IAAQ,IACnE/lB,OAAO6pB,OAAAA,GAAAA,CAAAA,EAAU7pB,EAAAA,GACjB4tI,UAAUA,IACV/7C,UAAW/rF,KAAKgoP,eAAAA,CAAAA,CAAAA;UAAAA,EAAAA,CAAAA,CAAAA,GApC1BttP;QAAA,EAAuCgsI,GAAAA,aAAAA;AA0CvC,iBAASylH,GAAiBjyP,IAAAA;AACxB,iBAAOgY,GAAAA,KAAKG,OAAOnY,EAAAA,IAASA,KAAQyuB,GAAA,EAAczuB,EAAAA,IAASsK,OAAAA,GAAAA,MAAAA,EAAOtK,EAAAA,IAASgY,OAAAA,GAAAA,IAAAA,EAAAA;QAAAA;AAAAA,QAAAA,GAAAA,EA3ChEw7O,IAAAA,gBAMW/B,EAAAA;AC/RT,YAAA,KAAA,WAAA;AAEb,cAAIgC,KAAiB,EACnB3iK,YAAY,EACVxF,KAAAA,IACAooK,oBAAoBxX,IACpByX,cAAcvX,IACdE,uBAAAA,IACAsX,uBAAuBpX,IACvBC,OAAON,IACP9uG,UAAUA,IACVwmH,WAAWlnH,IACXmnH,QAAQpX,IACRqX,YAAY5W,IACZ6W,WAAW5W,IACX/rO,OAAOwvO,IACPoT,cAAclT,IACdf,kBAAAA,IACAzzL,MAAMugM,IACNI,eAAAA,IACAtgH,YAAAA,IACAY,sBAAsB90C,GAAAA,GACtBpgC,YAAYspL,IACZv2M,WAAWkwM,IACX4H,kBAAAA,IACAM,wBAAAA,IACAC,sBAAAA,IACAwQ,eAAe7hK,IACfpkE,WAAW60N,IACXjsL,UAAUqwG,IACV0+E,mBAAmBA,IACnBuO,cAAc9S,IACd71M,YAAYu3M,IACZqR,cAAc7M,IACdx6M,SAASi2M,IACTttL,SAASinE,IACTltG,QAAQ26N,IACRl3N,aAAa4xN,IACbuP,UAAUnI,IACVoI,QAAQnH,IACRC,iBAAAA,IACAtE,WAAWA,IACXkF,MAAMvM,IACNzoL,SAASiqL,IACTiL,kBAAAA,IACAqG,cAAcpiK,IACdy8J,cAAAA,IACAT,eAAAA,IACAluI,OAAAA,GAAAA,GACAkvI,QAAAA,IACAa,WAAAA,IACA5vI,aAAAA,IACAC,YAAAA,IACAC,gBAAAA,IACA0pI,UAAAA,IACAxC,gBAAAA,IACAt1J,UAAAA,GAAAA,GACA++J,YAAAA,IACAP,qBAAAA,IACAnjH,cAAAA,IACA21G,cAAAA,IACAc,iBAAAA,IACA5wJ,cAAAA,KACAZ,uBAAAA,IACAszC,cAAAA,IACAyE,oBAAAA,IACA63G,UAAAA,IACAyK,SAAAA,IACAH,cAAAA,IACAmE,WAAAA,IACAt+J,SAAAA,IACA+qJ,gBAAAA,IACAhrJ,6BAAAA,GAAAA,EAAAA,GAIAkiK,KAAiB,EACnB1jK,YAAY2jK,GAAAA,GAGVC,KAAuB,EACzB5jK,YAAY6jK,GAAAA;AAGd,iBAAO,CACL5qG,GAAAA,SACA56F,GAAAA,SACAylM,GAAAA,SACAzuF,GAAAA,SACAt/H,GAAAA,SACA3V,GAAAA,SACAq3C,GAAAA,SACAssL,GAAAA,SACApB,IACAe,IACAM,GAAAA,SACAJ,IACAnlM,GAAAA,SACAu1E,GAAAA,SACAiwH,GAAAA,SACAh/O,GAAAA,SACAqyH,GAAAA,SACAxH,GAAAA,SACAo0H,OAAAA,GAAAA,OAAAA,EAAAA,CAAAA;QAAAA,GAAAA,KAAAA,GAAAA,GAAAA;AChMW,iBAASC,KAAAA;AAEtB,iBAAO,CACLC,IACAC,GAAAA,OAAAA;QAAAA;AAAAA,YAAAA,KAAAA,GAAAA,GAAAA,GCAIC,KAAAA,MAAWC,KAA4CC,YAAhCC,KAAgCD,SAAfE,KAAeF;AAEhD,iBAASG,GAAU/7G,IAAAA;AAAO,cAADz5I,IAAAO,IAAAX;AAEtCusB,UAAAA,GAAAA,EAAIoiD,WAAWpiD,GAAAA,EAAIoiD,YAAY,CAAA,GAC/BpiD,GAAAA,EAAIoiD,SAASknL,YAAY,EACvBz1M,SAASs1M,IACTI,aAAaN,IACbO,UAAUR,IACVS,gBAAgBL,GAAAA;AAGlB,cAAM1xB,KAAW,EAEfgyB,QAAQ,MACRzqK,SAAS,MACTxkD,MAAM,CAAA,GACNtR,KAAK,IACL8lF,MAAM,MACN9yC,QAAQ,cACRyyK,cAAc,QACdp7G,kBAAkB,MAClB7pH,QAAQ,MACR6iF,cAAc,0CACdymJ,mBAAmBv+O,GAAA,EAAAb,KAAAa,GAAA,EAAAN,KAAA,GAAA,OAAG86B,OAAOlH,SAASi7B,UAArB,IAAA,CAAA,EAAA,KAAA7uD,IAAkC86B,OAAOlH,SAASo7B,IAAAA,CAAAA,EAAlD,KAAAvvD,IAAyDq7B,OAAOlH,SAASw7B,SAAS7d,UAAU,GAAG/yC,GAAA,EAAAa,KAAAy7B,OAAOlH,SAASw7B,QAAAA,EAAhB,KAAA/vD,IAAqC,GAAA,CAAA,GAApI,uBAAA,GACjBy3D,sBAAAA,OACAqoE,SAAS,CAAA,GACTowD,QAAQ,CAAA,GACRkrD,oBAAAA,OACAC,wBAAAA,OACAh1G,aAAAA,OACA40G,iBAAAA,OACAzyM,oBAAqB,SAAA/8B,IAAAA;AAAC,mBAAIA;UAAAA,GAC1Bg9B,qBAAsB,SAAAh9B,IAAAA;AAAC,mBAAIA;UAAAA,GAC3B01O,oBAAAA,MACA0N,uBAAuB,WACvBC,yBAAyB,GACzBW,0BAA0B,GAC1BlM,gBAAAA,OACA3wJ,sBAAAA,OACAgxC,iBAAAA,QACAw9G,wBAAAA,OACArgH,iBAAiB,EACfG,YAAY,EACV,WAAa,EACXjoD,OAAO,eACP4zE,QAAQ,OAAA,GAEV,iBAAmB,EACjB5zE,OAAO,qBACP4zE,QAAQ,aAAA,GAEV,UAAY,EACV5zE,OAAO,cACP4zE,QAAQ,OAAA,EAAA,GAGZqpG,iBAAAA,MACAz4B,WAAW,KAAA,GAEb6d,wBAAwB,CACtB,OACA,OACA,QACA,UACA,WACA,QACA,SACA,OAAA,GAEF6a,oBAAAA,OAIAzqJ,SAAS,CACP0qJ,EAAAA,GAIFz1G,SAAS,CAAA,GAGT82F,gBAAgB,EAId2C,gBAAgB,SAAA,GAIlBO,cAAc,CAAA,GAGdnyO,IAAI,CAAA,GACJyoF,YAAY,CAAA,GAEZ0xC,iBAAiB,EACfC,WAAAA,MACAyzH,OAAO,QAAA,EAAA,GAIPC,KAAcz8G,GAAKs8G,qBAAqB9hO,OAAAA,GAAAA,CAAAA,EAAAA,IAAgB,CAAA,GAEtDm3D,KAAUquD,GAAKruD;AAAAA,iBACdquD,GAAKruD;AAEZ,cAAM+qK,KAAoBntL,GAAAA,EAAW,CAAA,GAAI66J,IAAUpqF,IAAMy8G,EAAAA,GAEnDE,KAAe,EACnB9zN,QAAQ,EACNo9F,SAASy2H,GAAkBz2H,QAAAA,GAE7B6gB,SAAS41G,GAAkB7qJ,SAC3B+rI,gBAAgB8e,GAAkB9e,gBAClC53L,OAAOupB,GAAAA,EAAW,EAChBV,QAAQ,EACNA,QAAQ6tL,GAAkB7tL,QAC1BxyD,QAAQlV,GAAA,EAAAu1P,EAAAA,EAAAA,GAEVvvN,MAAM,EACJA,MAAM,IACNtR,KAAK6gO,GAAkB7gO,IAAAA,GAEzBqrG,iBAAiBw1H,GAAkBx1H,gBAAAA,GAClCw1H,GAAkB5b,YAAAA,EAAAA;AAGvB,cAAG4b,GAAkB5b;AAInB,qBAASl6O,MAAO81P,GAAkB5b;AAE9B/6O,qBAAOkB,UAAUC,eAAe1B,KAAKk3P,GAAkB5b,cAAcl6O,EAAAA,KAAAA,WAClE81P,GAAkB5b,aAAal6O,EAAAA,KAAAA,OAE3B+1P,GAAa32M,MAAMp/C,EAAAA;AAKhC,cAQI0sD,KAAQ,IAAIspM,GAAOD,EAAAA;AACvBrpM,UAAAA,GAAM2qL,SAAS,CAACye,GAAkB51G,SATf,WAAA;AACjB,mBAAO,EACLn4I,IAAI+tP,GAAkB/tP,IACtByoF,YAAYslK,GAAkBtlK,YAC9BpxC,OAAO02M,GAAkB12M,MAAAA;UAAAA,CAAAA,CAAAA;AAO7B,cAAInd,KAASyqB,GAAMp/B,UAAAA,GAEb2oO,KAAe,SAACC,IAAAA;AACpB,gBAAIC,KAAcl0N,GAAOC,cAAcsnH,iBAAiBvnH,GAAOC,cAAcsnH,eAAAA,IAAmB,CAAA,GAC5F4sG,KAAeztL,GAAAA,EAAW,CAAA,GAAIwtL,IAAaL,IAAmBI,MAAiB,CAAA,GAAIL,EAAAA;AAqBvF,gBAlBG9qK,OACDqrK,GAAarrK,UAAUA,KAGzBr+B,GAAM2pM,WAAWD,EAAAA,GACjBn0N,GAAOq0N,eAAex2K,OAAAA,GAEA,SAAlBo2K,OAAAA,CACGL,GAAY5gO,OAAoC,aAA7Bx2B,GAAA,EAAO23P,GAAa7vN,IAAAA,KAAqBxnC,GAAA,EAAYq3P,GAAa7vN,IAAAA,EAAM5iC,UAC9Fs+B,GAAO8E,YAAYH,UAAU,EAAA,GAC7B3E,GAAO8E,YAAY49F,oBAAoB,SAAA,GACvC1iG,GAAO8E,YAAYT,WAAW1gC,GAAA,EAAewwP,GAAa7vN,IAAAA,CAAAA,KACjDtE,GAAO8E,YAAY29F,YAAY0xH,GAAanhO,OAAAA,CAAQmhO,GAAar7I,SAC1E94E,GAAO8E,YAAYH,UAAUwvN,GAAanhO,GAAAA,GAC1CgN,GAAO8E,YAAY29F,SAAS0xH,GAAanhO,GAAAA,KAI1CmhO,GAAarrK;AACd9oD,cAAAA,GAAO4oD,OAAOurK,GAAarrK,SAAS,KAAA;qBAC5BqrK,GAAaZ,QAAQ;AAC7B,kBAAIzqK,KAAU/jB,SAASuvL,cAAcH,GAAaZ,MAAAA;AAClDvzN,cAAAA,GAAO4oD,OAAOE,IAAS,KAAA;YAAA;AACS,uBAAxBqrK,GAAaZ,UAA4C,SAAzBY,GAAarrK,WAIrDx8D,QAAQtiB,MAAM,2DAAA;AAGhB,mBAAOg2B;UAAAA,GAGHu0N,KAAYX,GAAY/jO,UAAUgkO,GAAkBU;AAE1D,iBAAIA,MAAav0N,GAAO8E,eAAe9E,GAAO8E,YAAYo+F,kBACxDljG,GAAO8E,YAAYo+F,eAAe,EAChClwG,KAAKuhO,IACLC,kBAAAA,MACA1uN,oBAAoB+tN,GAAkB/tN,oBACtCC,qBAAqB8tN,GAAkB9tN,oBAAAA,GACtCiuN,EAAAA,GAKEh0N,MAHEg0N,GAAAA;QAAAA;AAOXd,WAAUlqJ,UAAU,EAClByrJ,MAAMf,GAAAA,GAIRR,GAAUj1G,UAAUy2G,GAAAA;AC9NLxB,QAAAA,GAAAA,UAAAA;MAAAA,CAAAA,CAAAA,EAAAA;;;;;ACFf;AAAA,6DAAAyB,SAAA;AACA,UAAIC,UAASD,QAAO,UAAU,OAAO,UAAU,eAAe,OAAO,QAAQ,OACzE,SAAS,OAAO,QAAQ,eAAe,KAAK,QAAQ,OAAO,OAE3D,SAAS,aAAa,EAAE;AAC5B,UAAI,OAAO,OAAO;AAAU,cAAMC;AAAA;AAAA;;;ACLlC;AAAA,2DAAAC,SAAA;AAAA,UAAI,OAAOA,QAAO,UAAU,EAAE,SAAS,SAAS;AAChD,UAAI,OAAO,OAAO;AAAU,cAAM;AAAA;AAAA;;;ACDlC;AAAA,gEAAAC,SAAA;AAAA,MAAAA,QAAO,UAAU,SAAU,IAAI;AAC7B,eAAO,OAAO,OAAO,WAAW,OAAO,OAAO,OAAO,OAAO;AAAA,MAC9D;AAAA;AAAA;;;ACFA;AAAA,gEAAAC,SAAA;AAAA,UAAIC,YAAW;AACf,MAAAD,QAAO,UAAU,SAAU,IAAI;AAC7B,YAAI,CAACC,UAAS,EAAE;AAAG,gBAAM,UAAU,KAAK,oBAAoB;AAC5D,eAAO;AAAA,MACT;AAAA;AAAA;;;ACJA;AAAA,4DAAAC,SAAA;AAAA,MAAAA,QAAO,UAAU,SAAU,MAAM;AAC/B,YAAI;AACF,iBAAO,CAAC,CAAC,KAAK;AAAA,QAChB,SAASC,IAAP;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA;AAAA;;;ACNA;AAAA,kEAAAC,SAAA;AACA,MAAAA,QAAO,UAAU,CAAC,gBAAoB,WAAY;AAChD,eAAO,OAAO,eAAe,CAAC,GAAG,KAAK,EAAE,KAAK,WAAY;AAAE,iBAAO;AAAA,QAAG,EAAE,CAAC,EAAE,KAAK;AAAA,MACjF,CAAC;AAAA;AAAA;;;ACHD;AAAA,iEAAAC,SAAA;AAAA,UAAIC,YAAW;AACf,UAAIC,YAAW,iBAAqB;AAEpC,UAAIC,MAAKF,UAASC,SAAQ,KAAKD,UAASC,UAAS,aAAa;AAC9D,MAAAF,QAAO,UAAU,SAAU,IAAI;AAC7B,eAAOG,MAAKD,UAAS,cAAc,EAAE,IAAI,CAAC;AAAA,MAC5C;AAAA;AAAA;;;ACNA;AAAA,qEAAAE,SAAA;AAAA,MAAAA,QAAO,UAAU,CAAC,yBAA6B,CAAC,gBAAoB,WAAY;AAC9E,eAAO,OAAO,eAAe,qBAAyB,KAAK,GAAG,KAAK,EAAE,KAAK,WAAY;AAAE,iBAAO;AAAA,QAAG,EAAE,CAAC,EAAE,KAAK;AAAA,MAC9G,CAAC;AAAA;AAAA;;;ACFD;AAAA,mEAAAC,SAAA;AACA,UAAIC,YAAW;AAGf,MAAAD,QAAO,UAAU,SAAU,IAAIE,IAAG;AAChC,YAAI,CAACD,UAAS,EAAE;AAAG,iBAAO;AAC1B,YAAIE,KAAI;AACR,YAAID,MAAK,QAAQC,MAAK,GAAG,aAAa,cAAc,CAACF,UAAS,MAAME,IAAG,KAAK,EAAE,CAAC;AAAG,iBAAO;AACzF,YAAI,QAAQA,MAAK,GAAG,YAAY,cAAc,CAACF,UAAS,MAAME,IAAG,KAAK,EAAE,CAAC;AAAG,iBAAO;AACnF,YAAI,CAACD,MAAK,QAAQC,MAAK,GAAG,aAAa,cAAc,CAACF,UAAS,MAAME,IAAG,KAAK,EAAE,CAAC;AAAG,iBAAO;AAC1F,cAAM,UAAU,yCAAyC;AAAA,MAC3D;AAAA;AAAA;;;ACXA;AAAA;AAAA,UAAI,WAAW;AACf,UAAI,iBAAiB;AACrB,UAAI,cAAc;AAClB,UAAI,KAAK,OAAO;AAEhB,cAAQ,IAAI,wBAA4B,OAAO,iBAAiB,SAAS,eAAeC,IAAGC,IAAG,YAAY;AACxG,iBAASD,EAAC;AACV,QAAAC,KAAI,YAAYA,IAAG,IAAI;AACvB,iBAAS,UAAU;AACnB,YAAI;AAAgB,cAAI;AACtB,mBAAO,GAAGD,IAAGC,IAAG,UAAU;AAAA,UAC5B,SAASC,IAAP;AAAA,UAAwB;AAC1B,YAAI,SAAS,cAAc,SAAS;AAAY,gBAAM,UAAU,0BAA0B;AAC1F,YAAI,WAAW;AAAY,UAAAF,GAAEC,EAAC,IAAI,WAAW;AAC7C,eAAOD;AAAA,MACT;AAAA;AAAA;;;ACfA;AAAA,oEAAAG,SAAA;AAAA,MAAAA,QAAO,UAAU,SAAU,QAAQ,OAAO;AACxC,eAAO;AAAA,UACL,YAAY,EAAE,SAAS;AAAA,UACvB,cAAc,EAAE,SAAS;AAAA,UACzB,UAAU,EAAE,SAAS;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA;AAAA;;;ACPA;AAAA,2DAAAC,SAAA;AAAA,UAAI,KAAK;AACT,UAAI,aAAa;AACjB,MAAAA,QAAO,UAAU,wBAA4B,SAAU,QAAQC,MAAK,OAAO;AACzE,eAAO,GAAG,EAAE,QAAQA,MAAK,WAAW,GAAG,KAAK,CAAC;AAAA,MAC/C,IAAI,SAAU,QAAQA,MAAK,OAAO;AAChC,eAAOA,IAAG,IAAI;AACd,eAAO;AAAA,MACT;AAAA;AAAA;;;ACPA,MAAAC,eAAA;AAAA,0DAAAC,SAAA;AAAA,UAAIC,kBAAiB,CAAC,EAAE;AACxB,MAAAD,QAAO,UAAU,SAAU,IAAIE,MAAK;AAClC,eAAOD,gBAAe,KAAK,IAAIC,IAAG;AAAA,MACpC;AAAA;AAAA;;;ACHA;AAAA,0DAAAC,SAAA;AAAA,UAAIC,MAAK;AACT,UAAI,KAAK,KAAK,OAAO;AACrB,MAAAD,QAAO,UAAU,SAAUE,MAAK;AAC9B,eAAO,UAAU,OAAOA,SAAQ,SAAY,KAAKA,MAAK,OAAO,EAAED,MAAK,IAAI,SAAS,EAAE,CAAC;AAAA,MACtF;AAAA;AAAA;;;ACJA;AAAA,8DAAAE,SAAA;AAAA,MAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA,6DAAAC,SAAA;AAAA,UAAI,OAAO;AACX,UAAIC,UAAS;AACb,UAAI,SAAS;AACb,UAAI,QAAQA,QAAO,MAAM,MAAMA,QAAO,MAAM,IAAI,CAAC;AAEjD,OAACD,QAAO,UAAU,SAAUE,MAAK,OAAO;AACtC,eAAO,MAAMA,IAAG,MAAM,MAAMA,IAAG,IAAI,UAAU,SAAY,QAAQ,CAAC;AAAA,MACpE,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK;AAAA,QACtB,SAAS,KAAK;AAAA,QACd,MAAM,oBAAwB,SAAS;AAAA,QACvC,WAAW;AAAA,MACb,CAAC;AAAA;AAAA;;;ACXD;AAAA,yEAAAC,SAAA;AAAA,MAAAA,QAAO,UAAU,iBAAqB,6BAA6B,SAAS,QAAQ;AAAA;AAAA;;;ACApF;AAAA,+DAAAC,SAAA;AAAA,UAAIC,UAAS;AACb,UAAIC,QAAO;AACX,UAAIC,OAAM;AACV,UAAI,MAAM,cAAkB,KAAK;AACjC,UAAI,YAAY;AAChB,UAAI,YAAY;AAChB,UAAI,OAAO,KAAK,WAAW,MAAM,SAAS;AAE1C,qBAAmB,gBAAgB,SAAU,IAAI;AAC/C,eAAO,UAAU,KAAK,EAAE;AAAA,MAC1B;AAEA,OAACH,QAAO,UAAU,SAAUI,IAAGC,MAAK,KAAK,MAAM;AAC7C,YAAIC,cAAa,OAAO,OAAO;AAC/B,YAAIA;AAAY,UAAAH,KAAI,KAAK,MAAM,KAAKD,MAAK,KAAK,QAAQG,IAAG;AACzD,YAAID,GAAEC,IAAG,MAAM;AAAK;AACpB,YAAIC;AAAY,UAAAH,KAAI,KAAK,GAAG,KAAKD,MAAK,KAAK,KAAKE,GAAEC,IAAG,IAAI,KAAKD,GAAEC,IAAG,IAAI,IAAI,KAAK,OAAOA,IAAG,CAAC,CAAC;AAC5F,YAAID,OAAMH,SAAQ;AAChB,UAAAG,GAAEC,IAAG,IAAI;AAAA,QACX,WAAW,CAAC,MAAM;AAChB,iBAAOD,GAAEC,IAAG;AACZ,UAAAH,MAAKE,IAAGC,MAAK,GAAG;AAAA,QAClB,WAAWD,GAAEC,IAAG,GAAG;AACjB,UAAAD,GAAEC,IAAG,IAAI;AAAA,QACX,OAAO;AACL,UAAAH,MAAKE,IAAGC,MAAK,GAAG;AAAA,QAClB;AAAA,MAEF,GAAG,SAAS,WAAW,WAAW,SAAS,WAAW;AACpD,eAAO,OAAO,QAAQ,cAAc,KAAK,GAAG,KAAK,UAAU,KAAK,IAAI;AAAA,MACtE,CAAC;AAAA;AAAA;;;AC9BD;AAAA,iEAAAE,SAAA;AAAA,MAAAA,QAAO,UAAU,SAAU,IAAI;AAC7B,YAAI,OAAO,MAAM;AAAY,gBAAM,UAAU,KAAK,qBAAqB;AACvE,eAAO;AAAA,MACT;AAAA;AAAA;;;ACHA;AAAA,0DAAAC,SAAA;AACA,UAAI,YAAY;AAChB,MAAAA,QAAO,UAAU,SAAUC,KAAI,MAAMC,SAAQ;AAC3C,kBAAUD,GAAE;AACZ,YAAI,SAAS;AAAW,iBAAOA;AAC/B,gBAAQC,SAAQ;AAAA,UACd,KAAK;AAAG,mBAAO,SAAUC,IAAG;AAC1B,qBAAOF,IAAG,KAAK,MAAME,EAAC;AAAA,YACxB;AAAA,UACA,KAAK;AAAG,mBAAO,SAAUA,IAAGC,IAAG;AAC7B,qBAAOH,IAAG,KAAK,MAAME,IAAGC,EAAC;AAAA,YAC3B;AAAA,UACA,KAAK;AAAG,mBAAO,SAAUD,IAAGC,IAAGC,IAAG;AAChC,qBAAOJ,IAAG,KAAK,MAAME,IAAGC,IAAGC,EAAC;AAAA,YAC9B;AAAA,QACF;AACA,eAAO,WAAyB;AAC9B,iBAAOJ,IAAG,MAAM,MAAM,SAAS;AAAA,QACjC;AAAA,MACF;AAAA;AAAA;;;ACnBA;AAAA,6DAAAK,SAAA;AAAA,UAAIC,UAAS;AACb,UAAI,OAAO;AACX,UAAIC,QAAO;AACX,UAAI,WAAW;AACf,UAAI,MAAM;AACV,UAAI,YAAY;AAEhB,UAAI,UAAU,SAAU,MAAMC,OAAM,QAAQ;AAC1C,YAAI,YAAY,OAAO,QAAQ;AAC/B,YAAI,YAAY,OAAO,QAAQ;AAC/B,YAAI,YAAY,OAAO,QAAQ;AAC/B,YAAI,WAAW,OAAO,QAAQ;AAC9B,YAAI,UAAU,OAAO,QAAQ;AAC7B,YAAI,SAAS,YAAYF,UAAS,YAAYA,QAAOE,KAAI,MAAMF,QAAOE,KAAI,IAAI,CAAC,MAAMF,QAAOE,KAAI,KAAK,CAAC,GAAG,SAAS;AAClH,YAAIC,WAAU,YAAY,OAAO,KAAKD,KAAI,MAAM,KAAKA,KAAI,IAAI,CAAC;AAC9D,YAAI,WAAWC,SAAQ,SAAS,MAAMA,SAAQ,SAAS,IAAI,CAAC;AAC5D,YAAIC,MAAK,KAAK,KAAK;AACnB,YAAI;AAAW,mBAASF;AACxB,aAAKE,QAAO,QAAQ;AAElB,gBAAM,CAAC,aAAa,UAAU,OAAOA,IAAG,MAAM;AAE9C,iBAAO,MAAM,SAAS,QAAQA,IAAG;AAEjC,gBAAM,WAAW,MAAM,IAAI,KAAKJ,OAAM,IAAI,YAAY,OAAO,OAAO,aAAa,IAAI,SAAS,MAAM,GAAG,IAAI;AAE3G,cAAI;AAAQ,qBAAS,QAAQI,MAAK,KAAK,OAAO,QAAQ,CAAC;AAEvD,cAAID,SAAQC,IAAG,KAAK;AAAK,YAAAH,MAAKE,UAASC,MAAK,GAAG;AAC/C,cAAI,YAAY,SAASA,IAAG,KAAK;AAAK,qBAASA,IAAG,IAAI;AAAA,QACxD;AAAA,MACF;AACA,MAAAJ,QAAO,OAAO;AAEd,cAAQ,IAAI;AACZ,cAAQ,IAAI;AACZ,cAAQ,IAAI;AACZ,cAAQ,IAAI;AACZ,cAAQ,IAAI;AACZ,cAAQ,IAAI;AACZ,cAAQ,IAAI;AACZ,cAAQ,IAAI;AACZ,MAAAD,QAAO,UAAU;AAAA;AAAA;;;AC1CjB;AAAA,0DAAAM,SAAA;AAAA,UAAI,WAAW,CAAC,EAAE;AAElB,MAAAA,QAAO,UAAU,SAAU,IAAI;AAC7B,eAAO,SAAS,KAAK,EAAE,EAAE,MAAM,GAAG,EAAE;AAAA,MACtC;AAAA;AAAA;;;ACJA;AAAA,8DAAAC,SAAA;AACA,UAAI,MAAM;AAEV,MAAAA,QAAO,UAAU,OAAO,GAAG,EAAE,qBAAqB,CAAC,IAAI,SAAS,SAAU,IAAI;AAC5E,eAAO,IAAI,EAAE,KAAK,WAAW,GAAG,MAAM,EAAE,IAAI,OAAO,EAAE;AAAA,MACvD;AAAA;AAAA;;;ACLA;AAAA,8DAAAC,SAAA;AACA,MAAAA,QAAO,UAAU,SAAU,IAAI;AAC7B,YAAI,MAAM;AAAW,gBAAM,UAAU,2BAA2B,EAAE;AAClE,eAAO;AAAA,MACT;AAAA;AAAA;;;ACJA;AAAA,gEAAAC,SAAA;AACA,UAAIC,WAAU;AACd,MAAAD,QAAO,UAAU,SAAU,IAAI;AAC7B,eAAO,OAAOC,SAAQ,EAAE,CAAC;AAAA,MAC3B;AAAA;AAAA;;;ACJA;AAAA,iEAAAC,SAAA;AACA,UAAI,OAAO,KAAK;AAChB,UAAI,QAAQ,KAAK;AACjB,MAAAA,QAAO,UAAU,SAAU,IAAI;AAC7B,eAAO,MAAM,KAAK,CAAC,EAAE,IAAI,KAAK,KAAK,IAAI,QAAQ,MAAM,EAAE;AAAA,MACzD;AAAA;AAAA;;;ACLA;AAAA,gEAAAC,SAAA;AACA,UAAI,YAAY;AAChB,UAAIC,OAAM,KAAK;AACf,MAAAD,QAAO,UAAU,SAAU,IAAI;AAC7B,eAAO,KAAK,IAAIC,KAAI,UAAU,EAAE,GAAG,gBAAgB,IAAI;AAAA,MACzD;AAAA;AAAA;;;ACLA;AAAA,+DAAAC,SAAA;AACA,UAAI,MAAM;AACV,MAAAA,QAAO,UAAU,MAAM,WAAW,SAASC,SAAQ,KAAK;AACtD,eAAO,IAAI,GAAG,KAAK;AAAA,MACrB;AAAA;AAAA;;;ACJA;AAAA,0DAAAC,SAAA;AAAA,UAAI,QAAQ,iBAAqB,KAAK;AACtC,UAAIC,OAAM;AACV,UAAIC,UAAS,iBAAqB;AAClC,UAAI,aAAa,OAAOA,WAAU;AAElC,UAAI,WAAWF,QAAO,UAAU,SAAUG,OAAM;AAC9C,eAAO,MAAMA,KAAI,MAAM,MAAMA,KAAI,IAC/B,cAAcD,QAAOC,KAAI,MAAM,aAAaD,UAASD,MAAK,YAAYE,KAAI;AAAA,MAC9E;AAEA,eAAS,QAAQ;AAAA;AAAA;;;ACVjB;AAAA,gFAAAC,SAAA;AAAA,UAAIC,YAAW;AACf,UAAIC,WAAU;AACd,UAAI,UAAU,cAAkB,SAAS;AAEzC,MAAAF,QAAO,UAAU,SAAU,UAAU;AACnC,YAAIG;AACJ,YAAID,SAAQ,QAAQ,GAAG;AACrB,UAAAC,KAAI,SAAS;AAEb,cAAI,OAAOA,MAAK,eAAeA,OAAM,SAASD,SAAQC,GAAE,SAAS;AAAI,YAAAA,KAAI;AACzE,cAAIF,UAASE,EAAC,GAAG;AACf,YAAAA,KAAIA,GAAE,OAAO;AACb,gBAAIA,OAAM;AAAM,cAAAA,KAAI;AAAA,UACtB;AAAA,QACF;AAAE,eAAOA,OAAM,SAAY,QAAQA;AAAA,MACrC;AAAA;AAAA;;;ACfA;AAAA,2EAAAC,SAAA;AACA,UAAI,qBAAqB;AAEzB,MAAAA,QAAO,UAAU,SAAU,UAAUC,SAAQ;AAC3C,eAAO,KAAK,mBAAmB,QAAQ,GAAGA,OAAM;AAAA,MAClD;AAAA;AAAA;;;ACLA;AAAA,oEAAAC,SAAA;AAOA,UAAI,MAAM;AACV,UAAI,UAAU;AACd,UAAI,WAAW;AACf,UAAI,WAAW;AACf,UAAI,MAAM;AACV,MAAAA,QAAO,UAAU,SAAU,MAAM,SAAS;AACxC,YAAI,SAAS,QAAQ;AACrB,YAAI,YAAY,QAAQ;AACxB,YAAI,UAAU,QAAQ;AACtB,YAAI,WAAW,QAAQ;AACvB,YAAI,gBAAgB,QAAQ;AAC5B,YAAI,WAAW,QAAQ,KAAK;AAC5B,YAAIC,UAAS,WAAW;AACxB,eAAO,SAAU,OAAO,YAAY,MAAM;AACxC,cAAIC,KAAI,SAAS,KAAK;AACtB,cAAIC,QAAO,QAAQD,EAAC;AACpB,cAAIE,KAAI,IAAI,YAAY,MAAM,CAAC;AAC/B,cAAIC,UAAS,SAASF,MAAK,MAAM;AACjC,cAAIG,SAAQ;AACZ,cAAI,SAAS,SAASL,QAAO,OAAOI,OAAM,IAAI,YAAYJ,QAAO,OAAO,CAAC,IAAI;AAC7E,cAAI,KAAK;AACT,iBAAMI,UAASC,QAAOA;AAAS,gBAAI,YAAYA,UAASH,OAAM;AAC5D,oBAAMA,MAAKG,MAAK;AAChB,oBAAMF,GAAE,KAAKE,QAAOJ,EAAC;AACrB,kBAAI,MAAM;AACR,oBAAI;AAAQ,yBAAOI,MAAK,IAAI;AAAA,yBACnB;AAAK,0BAAQ,MAAM;AAAA,oBAC1B,KAAK;AAAG,6BAAO;AAAA,oBACf,KAAK;AAAG,6BAAO;AAAA,oBACf,KAAK;AAAG,6BAAOA;AAAA,oBACf,KAAK;AAAG,6BAAO,KAAK,GAAG;AAAA,kBACzB;AAAA,yBAAW;AAAU,yBAAO;AAAA,cAC9B;AAAA,YACF;AACA,iBAAO,gBAAgB,KAAK,WAAW,WAAW,WAAW;AAAA,QAC/D;AAAA,MACF;AAAA;AAAA;;;AC3CA;AAAA,yEAAAC,SAAA;AACA,UAAI,cAAc,cAAkB,aAAa;AACjD,UAAI,aAAa,MAAM;AACvB,UAAI,WAAW,WAAW,KAAK;AAAW,uBAAmB,YAAY,aAAa,CAAC,CAAC;AACxF,MAAAA,QAAO,UAAU,SAAUC,MAAK;AAC9B,mBAAW,WAAW,EAAEA,IAAG,IAAI;AAAA,MACjC;AAAA;AAAA;;;ACNA;AAAA;AAAA;AAEA,UAAI,UAAU;AACd,UAAI,QAAQ,wBAA4B,CAAC;AACzC,UAAI,MAAM;AACV,UAAI,SAAS;AAEb,UAAI,OAAO,CAAC;AAAG,cAAM,CAAC,EAAE,GAAG,EAAE,WAAY;AAAE,mBAAS;AAAA,QAAO,CAAC;AAC5D,cAAQ,QAAQ,IAAI,QAAQ,IAAI,QAAQ,SAAS;AAAA,QAC/C,MAAM,SAASC,MAAK,YAAqC;AACvD,iBAAO,MAAM,MAAM,YAAY,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI,MAAS;AAAA,QAChF;AAAA,MACF,CAAC;AACD,mCAAiC,GAAG;AAAA;AAAA;;;ACbpC;AAAA,2DAAAC,SAAA;AAAA;AACA,MAAAA,QAAO,UAAU,eAA+B,MAAM;AAAA;AAAA;;;ACDtD;AAAA;AAAA;AAEA,UAAI,UAAU;AACd,UAAI,QAAQ,wBAA4B,CAAC;AACzC,UAAI,MAAM;AACV,UAAI,SAAS;AAEb,UAAI,OAAO,CAAC;AAAG,cAAM,CAAC,EAAE,GAAG,EAAE,WAAY;AAAE,mBAAS;AAAA,QAAO,CAAC;AAC5D,cAAQ,QAAQ,IAAI,QAAQ,IAAI,QAAQ,SAAS;AAAA,QAC/C,WAAW,SAASC,WAAU,YAAqC;AACjE,iBAAO,MAAM,MAAM,YAAY,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI,MAAS;AAAA,QAChF;AAAA,MACF,CAAC;AACD,mCAAiC,GAAG;AAAA;AAAA;;;ACbpC;AAAA,iEAAAC,SAAA;AAAA;AACA,MAAAA,QAAO,UAAU,eAA+B,MAAM;AAAA;AAAA;;;ACDtD;AAAA,gEAAAC,SAAA;AAAA,UAAI,YAAY;AAChB,UAAIC,WAAU;AAGd,MAAAD,QAAO,UAAU,SAAU,WAAW;AACpC,eAAO,SAAU,MAAM,KAAK;AAC1B,cAAIE,KAAI,OAAOD,SAAQ,IAAI,CAAC;AAC5B,cAAIE,KAAI,UAAU,GAAG;AACrB,cAAIC,KAAIF,GAAE;AACV,cAAIG,IAAGC;AACP,cAAIH,KAAI,KAAKA,MAAKC;AAAG,mBAAO,YAAY,KAAK;AAC7C,UAAAC,KAAIH,GAAE,WAAWC,EAAC;AAClB,iBAAOE,KAAI,SAAUA,KAAI,SAAUF,KAAI,MAAMC,OAAME,KAAIJ,GAAE,WAAWC,KAAI,CAAC,KAAK,SAAUG,KAAI,QACxF,YAAYJ,GAAE,OAAOC,EAAC,IAAIE,KAC1B,YAAYH,GAAE,MAAMC,IAAGA,KAAI,CAAC,KAAKE,KAAI,SAAU,OAAOC,KAAI,SAAU;AAAA,QAC1E;AAAA,MACF;AAAA;AAAA;;;AChBA;AAAA,gEAAAC,SAAA;AAAA,MAAAA,QAAO,UAAU,CAAC;AAAA;AAAA;;;ACAlB;AAAA,iEAAAC,SAAA;AACA,UAAI,UAAU;AACd,UAAIC,WAAU;AACd,MAAAD,QAAO,UAAU,SAAU,IAAI;AAC7B,eAAO,QAAQC,SAAQ,EAAE,CAAC;AAAA,MAC5B;AAAA;AAAA;;;ACLA;AAAA,wEAAAC,SAAA;AAAA,UAAI,YAAY;AAChB,UAAIC,OAAM,KAAK;AACf,UAAIC,OAAM,KAAK;AACf,MAAAF,QAAO,UAAU,SAAUG,QAAOC,SAAQ;AACxC,QAAAD,SAAQ,UAAUA,MAAK;AACvB,eAAOA,SAAQ,IAAIF,KAAIE,SAAQC,SAAQ,CAAC,IAAIF,KAAIC,QAAOC,OAAM;AAAA,MAC/D;AAAA;AAAA;;;ACNA;AAAA,qEAAAC,SAAA;AAEA,UAAI,YAAY;AAChB,UAAI,WAAW;AACf,UAAI,kBAAkB;AACtB,MAAAA,QAAO,UAAU,SAAU,aAAa;AACtC,eAAO,SAAU,OAAO,IAAI,WAAW;AACrC,cAAIC,KAAI,UAAU,KAAK;AACvB,cAAIC,UAAS,SAASD,GAAE,MAAM;AAC9B,cAAIE,SAAQ,gBAAgB,WAAWD,OAAM;AAC7C,cAAI;AAGJ,cAAI,eAAe,MAAM;AAAI,mBAAOA,UAASC,QAAO;AAClD,sBAAQF,GAAEE,QAAO;AAEjB,kBAAI,SAAS;AAAO,uBAAO;AAAA,YAE7B;AAAA;AAAO,mBAAMD,UAASC,QAAOA;AAAS,kBAAI,eAAeA,UAASF,IAAG;AACnE,oBAAIA,GAAEE,MAAK,MAAM;AAAI,yBAAO,eAAeA,UAAS;AAAA,cACtD;AAAE,iBAAO,CAAC,eAAe;AAAA,QAC3B;AAAA,MACF;AAAA;AAAA;;;ACtBA;AAAA,iEAAAC,SAAA;AAAA,UAAI,SAAS,iBAAqB,MAAM;AACxC,UAAIC,OAAM;AACV,MAAAD,QAAO,UAAU,SAAUE,MAAK;AAC9B,eAAO,OAAOA,IAAG,MAAM,OAAOA,IAAG,IAAID,KAAIC,IAAG;AAAA,MAC9C;AAAA;AAAA;;;ACJA;AAAA,2EAAAC,SAAA;AAAA,UAAIC,OAAM;AACV,UAAI,YAAY;AAChB,UAAI,eAAe,yBAA6B,KAAK;AACrD,UAAI,WAAW,qBAAyB,UAAU;AAElD,MAAAD,QAAO,UAAU,SAAU,QAAQE,QAAO;AACxC,YAAIC,KAAI,UAAU,MAAM;AACxB,YAAIC,KAAI;AACR,YAAI,SAAS,CAAC;AACd,YAAIC;AACJ,aAAKA,QAAOF;AAAG,cAAIE,QAAO;AAAU,YAAAJ,KAAIE,IAAGE,IAAG,KAAK,OAAO,KAAKA,IAAG;AAElE,eAAOH,OAAM,SAASE;AAAG,cAAIH,KAAIE,IAAGE,OAAMH,OAAME,IAAG,CAAC,GAAG;AACrD,aAAC,aAAa,QAAQC,IAAG,KAAK,OAAO,KAAKA,IAAG;AAAA,UAC/C;AACA,eAAO;AAAA,MACT;AAAA;AAAA;;;AChBA;AAAA,oEAAAC,SAAA;AACA,MAAAA,QAAO,UACL,gGACA,MAAM,GAAG;AAAA;AAAA;;;ACHX;AAAA,kEAAAC,SAAA;AACA,UAAI,QAAQ;AACZ,UAAI,cAAc;AAElB,MAAAA,QAAO,UAAU,OAAO,QAAQ,SAAS,KAAKC,IAAG;AAC/C,eAAO,MAAMA,IAAG,WAAW;AAAA,MAC7B;AAAA;AAAA;;;ACNA;AAAA,iEAAAC,SAAA;AAAA,UAAI,KAAK;AACT,UAAI,WAAW;AACf,UAAI,UAAU;AAEd,MAAAA,QAAO,UAAU,wBAA4B,OAAO,mBAAmB,SAAS,iBAAiBC,IAAG,YAAY;AAC9G,iBAASA,EAAC;AACV,YAAI,OAAO,QAAQ,UAAU;AAC7B,YAAIC,UAAS,KAAK;AAClB,YAAIC,KAAI;AACR,YAAIC;AACJ,eAAOF,UAASC;AAAG,aAAG,EAAEF,IAAGG,KAAI,KAAKD,IAAG,GAAG,WAAWC,EAAC,CAAC;AACvD,eAAOH;AAAA,MACT;AAAA;AAAA;;;ACZA;AAAA,2DAAAI,SAAA;AAAA,UAAIC,YAAW,iBAAqB;AACpC,MAAAD,QAAO,UAAUC,aAAYA,UAAS;AAAA;AAAA;;;ACDtC;AAAA,oEAAAC,SAAA;AACA,UAAI,WAAW;AACf,UAAI,MAAM;AACV,UAAI,cAAc;AAClB,UAAI,WAAW,qBAAyB,UAAU;AAClD,UAAI,QAAQ,WAAY;AAAA,MAAc;AACtC,UAAI,YAAY;AAGhB,UAAI,aAAa,WAAY;AAE3B,YAAI,SAAS,qBAAyB,QAAQ;AAC9C,YAAIC,KAAI,YAAY;AACpB,YAAI,KAAK;AACT,YAAI,KAAK;AACT,YAAI;AACJ,eAAO,MAAM,UAAU;AACvB,uBAAmB,YAAY,MAAM;AACrC,eAAO,MAAM;AAGb,yBAAiB,OAAO,cAAc;AACtC,uBAAe,KAAK;AACpB,uBAAe,MAAM,KAAK,WAAW,KAAK,sBAAsB,KAAK,YAAY,EAAE;AACnF,uBAAe,MAAM;AACrB,qBAAa,eAAe;AAC5B,eAAOA;AAAK,iBAAO,WAAW,SAAS,EAAE,YAAYA,EAAC,CAAC;AACvD,eAAO,WAAW;AAAA,MACpB;AAEA,MAAAD,QAAO,UAAU,OAAO,UAAU,SAASE,QAAOC,IAAG,YAAY;AAC/D,YAAI;AACJ,YAAIA,OAAM,MAAM;AACd,gBAAM,SAAS,IAAI,SAASA,EAAC;AAC7B,mBAAS,IAAI,MAAM;AACnB,gBAAM,SAAS,IAAI;AAEnB,iBAAO,QAAQ,IAAIA;AAAA,QACrB;AAAO,mBAAS,WAAW;AAC3B,eAAO,eAAe,SAAY,SAAS,IAAI,QAAQ,UAAU;AAAA,MACnE;AAAA;AAAA;;;ACxCA;AAAA,wEAAAC,SAAA;AAAA,UAAI,MAAM,oBAAwB;AAClC,UAAIC,OAAM;AACV,UAAI,MAAM,cAAkB,aAAa;AAEzC,MAAAD,QAAO,UAAU,SAAU,IAAI,KAAK,MAAM;AACxC,YAAI,MAAM,CAACC,KAAI,KAAK,OAAO,KAAK,GAAG,WAAW,GAAG;AAAG,cAAI,IAAI,KAAK,EAAE,cAAc,MAAM,OAAO,IAAI,CAAC;AAAA,MACrG;AAAA;AAAA;;;ACNA;AAAA,kEAAAC,SAAA;AAAA;AACA,UAAIC,UAAS;AACb,UAAI,aAAa;AACjB,UAAI,iBAAiB;AACrB,UAAI,oBAAoB,CAAC;AAGzB,qBAAmB,mBAAmB,cAAkB,UAAU,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC;AAEjG,MAAAD,QAAO,UAAU,SAAU,aAAaE,OAAMC,OAAM;AAClD,oBAAY,YAAYF,QAAO,mBAAmB,EAAE,MAAM,WAAW,GAAGE,KAAI,EAAE,CAAC;AAC/E,uBAAe,aAAaD,QAAO,WAAW;AAAA,MAChD;AAAA;AAAA;;;ACZA;AAAA,iEAAAE,SAAA;AACA,UAAIC,OAAM;AACV,UAAI,WAAW;AACf,UAAI,WAAW,qBAAyB,UAAU;AAClD,UAAI,cAAc,OAAO;AAEzB,MAAAD,QAAO,UAAU,OAAO,kBAAkB,SAAUE,IAAG;AACrD,QAAAA,KAAI,SAASA,EAAC;AACd,YAAID,KAAIC,IAAG,QAAQ;AAAG,iBAAOA,GAAE,QAAQ;AACvC,YAAI,OAAOA,GAAE,eAAe,cAAcA,cAAaA,GAAE,aAAa;AACpE,iBAAOA,GAAE,YAAY;AAAA,QACvB;AAAE,eAAOA,cAAa,SAAS,cAAc;AAAA,MAC/C;AAAA;AAAA;;;ACZA;AAAA,kEAAAC,SAAA;AAAA;AACA,UAAI,UAAU;AACd,UAAI,UAAU;AACd,UAAI,WAAW;AACf,UAAIC,QAAO;AACX,UAAI,YAAY;AAChB,UAAI,cAAc;AAClB,UAAI,iBAAiB;AACrB,UAAI,iBAAiB;AACrB,UAAI,WAAW,cAAkB,UAAU;AAC3C,UAAI,QAAQ,EAAE,CAAC,EAAE,QAAQ,UAAU,CAAC,EAAE,KAAK;AAC3C,UAAI,cAAc;AAClB,UAAI,OAAO;AACX,UAAI,SAAS;AAEb,UAAI,aAAa,WAAY;AAAE,eAAO;AAAA,MAAM;AAE5C,MAAAD,QAAO,UAAU,SAAUE,OAAMC,OAAM,aAAaC,OAAMC,UAAS,QAAQ,QAAQ;AACjF,oBAAY,aAAaF,OAAMC,KAAI;AACnC,YAAI,YAAY,SAAU,MAAM;AAC9B,cAAI,CAAC,SAAS,QAAQ;AAAO,mBAAO,MAAM,IAAI;AAC9C,kBAAQ,MAAM;AAAA,YACZ,KAAK;AAAM,qBAAO,SAAS,OAAO;AAAE,uBAAO,IAAI,YAAY,MAAM,IAAI;AAAA,cAAG;AAAA,YACxE,KAAK;AAAQ,qBAAO,SAAS,SAAS;AAAE,uBAAO,IAAI,YAAY,MAAM,IAAI;AAAA,cAAG;AAAA,UAC9E;AAAE,iBAAO,SAAS,UAAU;AAAE,mBAAO,IAAI,YAAY,MAAM,IAAI;AAAA,UAAG;AAAA,QACpE;AACA,YAAI,MAAMD,QAAO;AACjB,YAAI,aAAaE,YAAW;AAC5B,YAAI,aAAa;AACjB,YAAI,QAAQH,MAAK;AACjB,YAAI,UAAU,MAAM,QAAQ,KAAK,MAAM,WAAW,KAAKG,YAAW,MAAMA,QAAO;AAC/E,YAAI,WAAW,WAAW,UAAUA,QAAO;AAC3C,YAAI,WAAWA,WAAU,CAAC,aAAa,WAAW,UAAU,SAAS,IAAI;AACzE,YAAI,aAAaF,SAAQ,UAAU,MAAM,WAAW,UAAU;AAC9D,YAAIG,UAASC,MAAK;AAElB,YAAI,YAAY;AACd,8BAAoB,eAAe,WAAW,KAAK,IAAIL,MAAK,CAAC,CAAC;AAC9D,cAAI,sBAAsB,OAAO,aAAa,kBAAkB,MAAM;AAEpE,2BAAe,mBAAmB,KAAK,IAAI;AAE3C,gBAAI,CAAC,WAAW,OAAO,kBAAkB,QAAQ,KAAK;AAAY,cAAAD,MAAK,mBAAmB,UAAU,UAAU;AAAA,UAChH;AAAA,QACF;AAEA,YAAI,cAAc,WAAW,QAAQ,SAAS,QAAQ;AACpD,uBAAa;AACb,qBAAW,SAAS,SAAS;AAAE,mBAAO,QAAQ,KAAK,IAAI;AAAA,UAAG;AAAA,QAC5D;AAEA,aAAK,CAAC,WAAW,YAAY,SAAS,cAAc,CAAC,MAAM,QAAQ,IAAI;AACrE,UAAAA,MAAK,OAAO,UAAU,QAAQ;AAAA,QAChC;AAEA,kBAAUE,KAAI,IAAI;AAClB,kBAAU,GAAG,IAAI;AACjB,YAAIE,UAAS;AACX,UAAAC,WAAU;AAAA,YACR,QAAQ,aAAa,WAAW,UAAU,MAAM;AAAA,YAChD,MAAM,SAAS,WAAW,UAAU,IAAI;AAAA,YACxC,SAAS;AAAA,UACX;AACA,cAAI;AAAQ,iBAAKC,QAAOD,UAAS;AAC/B,kBAAI,EAAEC,QAAO;AAAQ,yBAAS,OAAOA,MAAKD,SAAQC,IAAG,CAAC;AAAA,YACxD;AAAA;AAAO,oBAAQ,QAAQ,IAAI,QAAQ,KAAK,SAAS,aAAaJ,OAAMG,QAAO;AAAA,QAC7E;AACA,eAAOA;AAAA,MACT;AAAA;AAAA;;;ACpEA;AAAA;AAAA;AACA,UAAI,MAAM,oBAAwB,IAAI;AAGtC,4BAA0B,QAAQ,UAAU,SAAU,UAAU;AAC9D,aAAK,KAAK,OAAO,QAAQ;AACzB,aAAK,KAAK;AAAA,MAEZ,GAAG,WAAY;AACb,YAAIE,KAAI,KAAK;AACb,YAAIC,SAAQ,KAAK;AACjB,YAAIC;AACJ,YAAID,UAASD,GAAE;AAAQ,iBAAO,EAAE,OAAO,QAAW,MAAM,KAAK;AAC7D,QAAAE,SAAQ,IAAIF,IAAGC,MAAK;AACpB,aAAK,MAAMC,OAAM;AACjB,eAAO,EAAE,OAAOA,QAAO,MAAM,MAAM;AAAA,MACrC,CAAC;AAAA;AAAA;;;AChBD;AAAA,gEAAAC,SAAA;AACA,UAAI,WAAW;AACf,MAAAA,QAAO,UAAU,SAAU,UAAUC,KAAI,OAAO,SAAS;AACvD,YAAI;AACF,iBAAO,UAAUA,IAAG,SAAS,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAIA,IAAG,KAAK;AAAA,QAE9D,SAASC,IAAP;AACA,cAAI,MAAM,SAAS,QAAQ;AAC3B,cAAI,QAAQ;AAAW,qBAAS,IAAI,KAAK,QAAQ,CAAC;AAClD,gBAAMA;AAAA,QACR;AAAA,MACF;AAAA;AAAA;;;ACXA;AAAA,oEAAAC,SAAA;AACA,UAAI,YAAY;AAChB,UAAI,WAAW,cAAkB,UAAU;AAC3C,UAAI,aAAa,MAAM;AAEvB,MAAAA,QAAO,UAAU,SAAU,IAAI;AAC7B,eAAO,OAAO,WAAc,UAAU,UAAU,MAAM,WAAW,QAAQ,MAAM;AAAA,MACjF;AAAA;AAAA;;;ACPA;AAAA,sEAAAC,SAAA;AAAA;AACA,UAAI,kBAAkB;AACtB,UAAI,aAAa;AAEjB,MAAAA,QAAO,UAAU,SAAU,QAAQC,QAAO,OAAO;AAC/C,YAAIA,UAAS;AAAQ,0BAAgB,EAAE,QAAQA,QAAO,WAAW,GAAG,KAAK,CAAC;AAAA;AACrE,iBAAOA,MAAK,IAAI;AAAA,MACvB;AAAA;AAAA;;;ACPA;AAAA,8DAAAC,SAAA;AACA,UAAI,MAAM;AACV,UAAI,MAAM,cAAkB,aAAa;AAEzC,UAAI,MAAM,IAAI,WAAY;AAAE,eAAO;AAAA,MAAW,EAAE,CAAC,KAAK;AAGtD,UAAI,SAAS,SAAU,IAAIC,MAAK;AAC9B,YAAI;AACF,iBAAO,GAAGA,IAAG;AAAA,QACf,SAASC,IAAP;AAAA,QAAwB;AAAA,MAC5B;AAEA,MAAAF,QAAO,UAAU,SAAU,IAAI;AAC7B,YAAIG,IAAGC,IAAGC;AACV,eAAO,OAAO,SAAY,cAAc,OAAO,OAAO,SAElD,QAAQD,KAAI,OAAOD,KAAI,OAAO,EAAE,GAAG,GAAG,MAAM,WAAWC,KAEvD,MAAM,IAAID,EAAC,KAEVE,KAAI,IAAIF,EAAC,MAAM,YAAY,OAAOA,GAAE,UAAU,aAAa,cAAcE;AAAA,MAChF;AAAA;AAAA;;;ACtBA;AAAA,8EAAAC,SAAA;AAAA,UAAI,UAAU;AACd,UAAI,WAAW,cAAkB,UAAU;AAC3C,UAAI,YAAY;AAChB,MAAAA,QAAO,UAAU,eAAmB,oBAAoB,SAAU,IAAI;AACpE,YAAI,MAAM;AAAW,iBAAO,GAAG,QAAQ,KAClC,GAAG,YAAY,KACf,UAAU,QAAQ,EAAE,CAAC;AAAA,MAC5B;AAAA;AAAA;;;ACPA;AAAA,kEAAAC,SAAA;AAAA,UAAI,WAAW,cAAkB,UAAU;AAC3C,UAAI,eAAe;AAEnB,UAAI;AACE,gBAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE;AAC1B,cAAM,QAAQ,IAAI,WAAY;AAAE,yBAAe;AAAA,QAAM;AAErD,cAAM,KAAK,OAAO,WAAY;AAAE,gBAAM;AAAA,QAAG,CAAC;AAAA,MAC5C,SAASC,IAAP;AAAA,MAAwB;AAJpB;AAMN,MAAAD,QAAO,UAAU,SAAU,MAAM,aAAa;AAC5C,YAAI,CAAC,eAAe,CAAC;AAAc,iBAAO;AAC1C,YAAI,OAAO;AACX,YAAI;AACF,cAAI,MAAM,CAAC,CAAC;AACZ,cAAI,OAAO,IAAI,QAAQ,EAAE;AACzB,eAAK,OAAO,WAAY;AAAE,mBAAO,EAAE,MAAM,OAAO,KAAK;AAAA,UAAG;AACxD,cAAI,QAAQ,IAAI,WAAY;AAAE,mBAAO;AAAA,UAAM;AAC3C,eAAK,GAAG;AAAA,QACV,SAASC,IAAP;AAAA,QAAwB;AAC1B,eAAO;AAAA,MACT;AAAA;AAAA;;;ACrBA;AAAA;AAAA;AACA,UAAI,MAAM;AACV,UAAI,UAAU;AACd,UAAI,WAAW;AACf,UAAI,OAAO;AACX,UAAI,cAAc;AAClB,UAAI,WAAW;AACf,UAAI,iBAAiB;AACrB,UAAI,YAAY;AAEhB,cAAQ,QAAQ,IAAI,QAAQ,IAAI,CAAC,sBAA0B,SAAU,MAAM;AAAE,cAAM,KAAK,IAAI;AAAA,MAAG,CAAC,GAAG,SAAS;AAAA;AAAA,QAE1G,MAAM,SAASC,MAAK,WAA0D;AAC5E,cAAIC,KAAI,SAAS,SAAS;AAC1B,cAAIC,KAAI,OAAO,QAAQ,aAAa,OAAO;AAC3C,cAAI,OAAO,UAAU;AACrB,cAAI,QAAQ,OAAO,IAAI,UAAU,CAAC,IAAI;AACtC,cAAIC,WAAU,UAAU;AACxB,cAAIC,SAAQ;AACZ,cAAI,SAAS,UAAUH,EAAC;AACxB,cAAII,SAAQ,QAAQ,MAAM;AAC1B,cAAIF;AAAS,oBAAQ,IAAI,OAAO,OAAO,IAAI,UAAU,CAAC,IAAI,QAAW,CAAC;AAEtE,cAAI,UAAU,UAAa,EAAED,MAAK,SAAS,YAAY,MAAM,IAAI;AAC/D,iBAAK,WAAW,OAAO,KAAKD,EAAC,GAAG,SAAS,IAAIC,GAAE,GAAG,EAAE,OAAO,SAAS,KAAK,GAAG,MAAME,UAAS;AACzF,6BAAe,QAAQA,QAAOD,WAAU,KAAK,UAAU,OAAO,CAAC,KAAK,OAAOC,MAAK,GAAG,IAAI,IAAI,KAAK,KAAK;AAAA,YACvG;AAAA,UACF,OAAO;AACL,YAAAC,UAAS,SAASJ,GAAE,MAAM;AAC1B,iBAAK,SAAS,IAAIC,GAAEG,OAAM,GAAGA,UAASD,QAAOA,UAAS;AACpD,6BAAe,QAAQA,QAAOD,WAAU,MAAMF,GAAEG,MAAK,GAAGA,MAAK,IAAIH,GAAEG,MAAK,CAAC;AAAA,YAC3E;AAAA,UACF;AACA,iBAAO,SAASA;AAChB,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA;AAAA;;;ACpCD;AAAA,2DAAAE,SAAA;AAAA;AACA;AACA,MAAAA,QAAO,UAAU,eAA+B,MAAM;AAAA;AAAA;;;ACFtD;AAAA;AAAA;AAEA,UAAI,UAAU;AACd,UAAI,OAAO,CAAC;AACZ,WAAK,cAAkB,aAAa,CAAC,IAAI;AACzC,UAAI,OAAO,MAAM,cAAc;AAC7B,2BAAuB,OAAO,WAAW,YAAY,SAAS,WAAW;AACvE,iBAAO,aAAa,QAAQ,IAAI,IAAI;AAAA,QACtC,GAAG,IAAI;AAAA,MACT;AAAA;AAAA;;;ACTA;AAAA,gEAAAC,SAAA;AAAA,MAAAA,QAAO,UAAU,SAAU,MAAM,OAAO;AACtC,eAAO,EAAE,OAAc,MAAM,CAAC,CAAC,KAAK;AAAA,MACtC;AAAA;AAAA;;;ACFA;AAAA,wEAAAC,SAAA;AAAA;AACA,UAAI,mBAAmB;AACvB,UAAI,OAAO;AACX,UAAI,YAAY;AAChB,UAAI,YAAY;AAMhB,MAAAA,QAAO,UAAU,sBAA0B,OAAO,SAAS,SAAU,UAAU,MAAM;AACnF,aAAK,KAAK,UAAU,QAAQ;AAC5B,aAAK,KAAK;AACV,aAAK,KAAK;AAAA,MAEZ,GAAG,WAAY;AACb,YAAIC,KAAI,KAAK;AACb,YAAI,OAAO,KAAK;AAChB,YAAIC,SAAQ,KAAK;AACjB,YAAI,CAACD,MAAKC,UAASD,GAAE,QAAQ;AAC3B,eAAK,KAAK;AACV,iBAAO,KAAK,CAAC;AAAA,QACf;AACA,YAAI,QAAQ;AAAQ,iBAAO,KAAK,GAAGC,MAAK;AACxC,YAAI,QAAQ;AAAU,iBAAO,KAAK,GAAGD,GAAEC,MAAK,CAAC;AAC7C,eAAO,KAAK,GAAG,CAACA,QAAOD,GAAEC,MAAK,CAAC,CAAC;AAAA,MAClC,GAAG,QAAQ;AAGX,gBAAU,YAAY,UAAU;AAEhC,uBAAiB,MAAM;AACvB,uBAAiB,QAAQ;AACzB,uBAAiB,SAAS;AAAA;AAAA;;;ACjC1B;AAAA;AAAA,UAAI,aAAa;AACjB,UAAI,UAAU;AACd,UAAI,WAAW;AACf,UAAIC,UAAS;AACb,UAAIC,QAAO;AACX,UAAI,YAAY;AAChB,UAAI,MAAM;AACV,UAAI,WAAW,IAAI,UAAU;AAC7B,UAAI,gBAAgB,IAAI,aAAa;AACrC,UAAI,cAAc,UAAU;AAE5B,UAAI,eAAe;AAAA,QACjB,aAAa;AAAA;AAAA,QACb,qBAAqB;AAAA,QACrB,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,aAAa;AAAA,QACb,eAAe;AAAA,QACf,cAAc;AAAA,QACd,sBAAsB;AAAA,QACtB,UAAU;AAAA,QACV,mBAAmB;AAAA,QACnB,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,WAAW;AAAA;AAAA,QACX,eAAe;AAAA,QACf,cAAc;AAAA,QACd,UAAU;AAAA,QACV,kBAAkB;AAAA,QAClB,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,eAAe;AAAA,QACf,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,eAAe;AAAA,QACf,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,QAClB,gBAAgB;AAAA;AAAA,QAChB,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,WAAW;AAAA,MACb;AAEA,WAAS,cAAc,QAAQ,YAAY,GAAGC,KAAI,GAAGA,KAAI,YAAY,QAAQA,MAAK;AAC5E,QAAAC,QAAO,YAAYD,EAAC;AACpB,mBAAW,aAAaC,KAAI;AAC5B,qBAAaH,QAAOG,KAAI;AACxB,gBAAQ,cAAc,WAAW;AAErC,YAAI,OAAO;AACT,cAAI,CAAC,MAAM,QAAQ;AAAG,YAAAF,MAAK,OAAO,UAAU,WAAW;AACvD,cAAI,CAAC,MAAM,aAAa;AAAG,YAAAA,MAAK,OAAO,eAAeE,KAAI;AAC1D,oBAAUA,KAAI,IAAI;AAClB,cAAI;AAAU,iBAAKC,QAAO;AAAY,kBAAI,CAAC,MAAMA,IAAG;AAAG,yBAAS,OAAOA,MAAK,WAAWA,IAAG,GAAG,IAAI;AAAA;AAAA,QACnG;AAAA,MACF;AAXM,UAAAD;AACA;AACA;AACA;AACA,UAAAC;AALG;AAAqC,UAAAF;AAAA;AAAA;;;AC7C9C;AAAA,mEAAAG,SAAA;AAAA,UAAI,WAAW;AACf,MAAAA,QAAO,UAAU,SAAU,QAAQ,KAAK,MAAM;AAC5C,iBAASC,QAAO;AAAK,mBAAS,QAAQA,MAAK,IAAIA,IAAG,GAAG,IAAI;AACzD,eAAO;AAAA,MACT;AAAA;AAAA;;;ACJA;AAAA,kEAAAC,SAAA;AAAA,MAAAA,QAAO,UAAU,SAAU,IAAI,aAAaC,OAAM,gBAAgB;AAChE,YAAI,EAAE,cAAc,gBAAiB,mBAAmB,UAAa,kBAAkB,IAAK;AAC1F,gBAAM,UAAUA,QAAO,yBAAyB;AAAA,QAClD;AAAE,eAAO;AAAA,MACX;AAAA;AAAA;;;ACJA;AAAA,6DAAAC,SAAA;AAAA,UAAI,MAAM;AACV,UAAI,OAAO;AACX,UAAI,cAAc;AAClB,UAAI,WAAW;AACf,UAAI,WAAW;AACf,UAAI,YAAY;AAChB,UAAI,QAAQ,CAAC;AACb,UAAI,SAAS,CAAC;AACd,UAAI,UAAUA,QAAO,UAAU,SAAU,UAAU,SAASC,KAAI,MAAM,UAAU;AAC9E,YAAI,SAAS,WAAW,WAAY;AAAE,iBAAO;AAAA,QAAU,IAAI,UAAU,QAAQ;AAC7E,YAAIC,KAAI,IAAID,KAAI,MAAM,UAAU,IAAI,CAAC;AACrC,YAAIE,SAAQ;AACZ,YAAIC,SAAQ,MAAM,UAAU;AAC5B,YAAI,OAAO,UAAU;AAAY,gBAAM,UAAU,WAAW,mBAAmB;AAE/E,YAAI,YAAY,MAAM;AAAG,eAAKA,UAAS,SAAS,SAAS,MAAM,GAAGA,UAASD,QAAOA,UAAS;AACzF,qBAAS,UAAUD,GAAE,SAAS,OAAO,SAASC,MAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAID,GAAE,SAASC,MAAK,CAAC;AACtF,gBAAI,WAAW,SAAS,WAAW;AAAQ,qBAAO;AAAA,UACpD;AAAA;AAAO,eAAK,WAAW,OAAO,KAAK,QAAQ,GAAG,EAAE,OAAO,SAAS,KAAK,GAAG,QAAO;AAC7E,qBAAS,KAAK,UAAUD,IAAG,KAAK,OAAO,OAAO;AAC9C,gBAAI,WAAW,SAAS,WAAW;AAAQ,qBAAO;AAAA,UACpD;AAAA,MACF;AACA,cAAQ,QAAQ;AAChB,cAAQ,SAAS;AAAA;AAAA;;;ACxBjB;AAAA,kEAAAG,SAAA;AAAA;AACA,UAAIC,UAAS;AACb,UAAI,KAAK;AACT,UAAI,cAAc;AAClB,UAAI,UAAU,cAAkB,SAAS;AAEzC,MAAAD,QAAO,UAAU,SAAU,KAAK;AAC9B,YAAIE,KAAID,QAAO,GAAG;AAClB,YAAI,eAAeC,MAAK,CAACA,GAAE,OAAO;AAAG,aAAG,EAAEA,IAAG,SAAS;AAAA,YACpD,cAAc;AAAA,YACd,KAAK,WAAY;AAAE,qBAAO;AAAA,YAAM;AAAA,UAClC,CAAC;AAAA,MACH;AAAA;AAAA;;;ACZA;AAAA,2DAAAC,SAAA;AAAA,UAAI,OAAO,cAAkB,MAAM;AACnC,UAAIC,YAAW;AACf,UAAIC,OAAM;AACV,UAAI,UAAU,oBAAwB;AACtC,UAAIC,MAAK;AACT,UAAI,eAAe,OAAO,gBAAgB,WAAY;AACpD,eAAO;AAAA,MACT;AACA,UAAI,SAAS,CAAC,gBAAoB,WAAY;AAC5C,eAAO,aAAa,OAAO,kBAAkB,CAAC,CAAC,CAAC;AAAA,MAClD,CAAC;AACD,UAAI,UAAU,SAAU,IAAI;AAC1B,gBAAQ,IAAI,MAAM,EAAE,OAAO;AAAA,UACzB,GAAG,MAAM,EAAEA;AAAA;AAAA,UACX,GAAG,CAAC;AAAA;AAAA,QACN,EAAE,CAAC;AAAA,MACL;AACA,UAAI,UAAU,SAAU,IAAIC,SAAQ;AAElC,YAAI,CAACH,UAAS,EAAE;AAAG,iBAAO,OAAO,MAAM,WAAW,MAAM,OAAO,MAAM,WAAW,MAAM,OAAO;AAC7F,YAAI,CAACC,KAAI,IAAI,IAAI,GAAG;AAElB,cAAI,CAAC,aAAa,EAAE;AAAG,mBAAO;AAE9B,cAAI,CAACE;AAAQ,mBAAO;AAEpB,kBAAQ,EAAE;AAAA,QAEZ;AAAE,eAAO,GAAG,IAAI,EAAE;AAAA,MACpB;AACA,UAAI,UAAU,SAAU,IAAIA,SAAQ;AAClC,YAAI,CAACF,KAAI,IAAI,IAAI,GAAG;AAElB,cAAI,CAAC,aAAa,EAAE;AAAG,mBAAO;AAE9B,cAAI,CAACE;AAAQ,mBAAO;AAEpB,kBAAQ,EAAE;AAAA,QAEZ;AAAE,eAAO,GAAG,IAAI,EAAE;AAAA,MACpB;AAEA,UAAI,WAAW,SAAU,IAAI;AAC3B,YAAI,UAAU,KAAK,QAAQ,aAAa,EAAE,KAAK,CAACF,KAAI,IAAI,IAAI;AAAG,kBAAQ,EAAE;AACzE,eAAO;AAAA,MACT;AACA,UAAI,OAAOF,QAAO,UAAU;AAAA,QAC1B,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA;AAAA;;;ACpDA;AAAA,0EAAAK,SAAA;AAAA,UAAIC,YAAW;AACf,MAAAD,QAAO,UAAU,SAAU,IAAI,MAAM;AACnC,YAAI,CAACC,UAAS,EAAE,KAAK,GAAG,OAAO;AAAM,gBAAM,UAAU,4BAA4B,OAAO,YAAY;AACpG,eAAO;AAAA,MACT;AAAA;AAAA;;;ACJA;AAAA,wEAAAC,SAAA;AAAA;AACA,UAAI,KAAK,oBAAwB;AACjC,UAAIC,UAAS;AACb,UAAI,cAAc;AAClB,UAAI,MAAM;AACV,UAAI,aAAa;AACjB,UAAI,QAAQ;AACZ,UAAI,cAAc;AAClB,UAAI,OAAO;AACX,UAAI,aAAa;AACjB,UAAI,cAAc;AAClB,UAAI,UAAU,eAAmB;AACjC,UAAI,WAAW;AACf,UAAI,OAAO,cAAc,OAAO;AAEhC,UAAI,WAAW,SAAU,MAAMC,MAAK;AAElC,YAAIC,SAAQ,QAAQD,IAAG;AACvB,YAAI;AACJ,YAAIC,WAAU;AAAK,iBAAO,KAAK,GAAGA,MAAK;AAEvC,aAAK,QAAQ,KAAK,IAAI,OAAO,QAAQ,MAAM,GAAG;AAC5C,cAAI,MAAM,KAAKD;AAAK,mBAAO;AAAA,QAC7B;AAAA,MACF;AAEA,MAAAF,QAAO,UAAU;AAAA,QACf,gBAAgB,SAAU,SAASI,OAAM,QAAQ,OAAO;AACtD,cAAIC,KAAI,QAAQ,SAAU,MAAM,UAAU;AACxC,uBAAW,MAAMA,IAAGD,OAAM,IAAI;AAC9B,iBAAK,KAAKA;AACV,iBAAK,KAAKH,QAAO,IAAI;AACrB,iBAAK,KAAK;AACV,iBAAK,KAAK;AACV,iBAAK,IAAI,IAAI;AACb,gBAAI,YAAY;AAAW,oBAAM,UAAU,QAAQ,KAAK,KAAK,GAAG,IAAI;AAAA,UACtE,CAAC;AACD,sBAAYI,GAAE,WAAW;AAAA;AAAA;AAAA,YAGvB,OAAO,SAASC,SAAQ;AACtB,uBAAS,OAAO,SAAS,MAAMF,KAAI,GAAGG,QAAO,KAAK,IAAI,QAAQ,KAAK,IAAI,OAAO,QAAQ,MAAM,GAAG;AAC7F,sBAAM,IAAI;AACV,oBAAI,MAAM;AAAG,wBAAM,IAAI,MAAM,EAAE,IAAI;AACnC,uBAAOA,MAAK,MAAM,CAAC;AAAA,cACrB;AACA,mBAAK,KAAK,KAAK,KAAK;AACpB,mBAAK,IAAI,IAAI;AAAA,YACf;AAAA;AAAA;AAAA,YAGA,UAAU,SAAUL,MAAK;AACvB,kBAAI,OAAO,SAAS,MAAME,KAAI;AAC9B,kBAAI,QAAQ,SAAS,MAAMF,IAAG;AAC9B,kBAAI,OAAO;AACT,oBAAIM,QAAO,MAAM;AACjB,oBAAIC,QAAO,MAAM;AACjB,uBAAO,KAAK,GAAG,MAAM,CAAC;AACtB,sBAAM,IAAI;AACV,oBAAIA;AAAM,kBAAAA,MAAK,IAAID;AACnB,oBAAIA;AAAM,kBAAAA,MAAK,IAAIC;AACnB,oBAAI,KAAK,MAAM;AAAO,uBAAK,KAAKD;AAChC,oBAAI,KAAK,MAAM;AAAO,uBAAK,KAAKC;AAChC,qBAAK,IAAI;AAAA,cACX;AAAE,qBAAO,CAAC,CAAC;AAAA,YACb;AAAA;AAAA;AAAA,YAGA,SAAS,SAASC,SAAQ,YAAqC;AAC7D,uBAAS,MAAMN,KAAI;AACnB,kBAAIO,KAAI,IAAI,YAAY,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI,QAAW,CAAC;AAC1E,kBAAI;AACJ,qBAAO,QAAQ,QAAQ,MAAM,IAAI,KAAK,IAAI;AACxC,gBAAAA,GAAE,MAAM,GAAG,MAAM,GAAG,IAAI;AAExB,uBAAO,SAAS,MAAM;AAAG,0BAAQ,MAAM;AAAA,cACzC;AAAA,YACF;AAAA;AAAA;AAAA,YAGA,KAAK,SAASC,KAAIV,MAAK;AACrB,qBAAO,CAAC,CAAC,SAAS,SAAS,MAAME,KAAI,GAAGF,IAAG;AAAA,YAC7C;AAAA,UACF,CAAC;AACD,cAAI;AAAa,eAAGG,GAAE,WAAW,QAAQ;AAAA,cACvC,KAAK,WAAY;AACf,uBAAO,SAAS,MAAMD,KAAI,EAAE,IAAI;AAAA,cAClC;AAAA,YACF,CAAC;AACD,iBAAOC;AAAA,QACT;AAAA,QACA,KAAK,SAAU,MAAMH,MAAK,OAAO;AAC/B,cAAI,QAAQ,SAAS,MAAMA,IAAG;AAC9B,cAAIO,OAAMN;AAEV,cAAI,OAAO;AACT,kBAAM,IAAI;AAAA,UAEZ,OAAO;AACL,iBAAK,KAAK,QAAQ;AAAA,cAChB,GAAGA,SAAQ,QAAQD,MAAK,IAAI;AAAA;AAAA,cAC5B,GAAGA;AAAA;AAAA,cACH,GAAG;AAAA;AAAA,cACH,GAAGO,QAAO,KAAK;AAAA;AAAA,cACf,GAAG;AAAA;AAAA,cACH,GAAG;AAAA;AAAA,YACL;AACA,gBAAI,CAAC,KAAK;AAAI,mBAAK,KAAK;AACxB,gBAAIA;AAAM,cAAAA,MAAK,IAAI;AACnB,iBAAK,IAAI;AAET,gBAAIN,WAAU;AAAK,mBAAK,GAAGA,MAAK,IAAI;AAAA,UACtC;AAAE,iBAAO;AAAA,QACX;AAAA,QACA;AAAA,QACA,WAAW,SAAUE,IAAGD,OAAM,QAAQ;AAGpC,sBAAYC,IAAGD,OAAM,SAAU,UAAU,MAAM;AAC7C,iBAAK,KAAK,SAAS,UAAUA,KAAI;AACjC,iBAAK,KAAK;AACV,iBAAK,KAAK;AAAA,UACZ,GAAG,WAAY;AACb,gBAAI,OAAO;AACX,gBAAI,OAAO,KAAK;AAChB,gBAAI,QAAQ,KAAK;AAEjB,mBAAO,SAAS,MAAM;AAAG,sBAAQ,MAAM;AAEvC,gBAAI,CAAC,KAAK,MAAM,EAAE,KAAK,KAAK,QAAQ,QAAQ,MAAM,IAAI,KAAK,GAAG,KAAK;AAEjE,mBAAK,KAAK;AACV,qBAAO,KAAK,CAAC;AAAA,YACf;AAEA,gBAAI,QAAQ;AAAQ,qBAAO,KAAK,GAAG,MAAM,CAAC;AAC1C,gBAAI,QAAQ;AAAU,qBAAO,KAAK,GAAG,MAAM,CAAC;AAC5C,mBAAO,KAAK,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA,UACnC,GAAG,SAAS,YAAY,UAAU,CAAC,QAAQ,IAAI;AAG/C,qBAAWA,KAAI;AAAA,QACjB;AAAA,MACF;AAAA;AAAA;;;AC/IA;AAAA;AAAA,cAAQ,IAAI,CAAC,EAAE;AAAA;AAAA;;;ACAf;AAAA;AAAA,UAAI,MAAM;AACV,UAAI,aAAa;AACjB,UAAI,YAAY;AAChB,UAAI,cAAc;AAClB,UAAIS,OAAM;AACV,UAAI,iBAAiB;AACrB,UAAI,OAAO,OAAO;AAElB,cAAQ,IAAI,wBAA4B,OAAO,SAAS,yBAAyBC,IAAGC,IAAG;AACrF,QAAAD,KAAI,UAAUA,EAAC;AACf,QAAAC,KAAI,YAAYA,IAAG,IAAI;AACvB,YAAI;AAAgB,cAAI;AACtB,mBAAO,KAAKD,IAAGC,EAAC;AAAA,UAClB,SAASC,IAAP;AAAA,UAAwB;AAC1B,YAAIH,KAAIC,IAAGC,EAAC;AAAG,iBAAO,WAAW,CAAC,IAAI,EAAE,KAAKD,IAAGC,EAAC,GAAGD,GAAEC,EAAC,CAAC;AAAA,MAC1D;AAAA;AAAA;;;ACfA;AAAA,gEAAAE,SAAA;AAEA,UAAIC,YAAW;AACf,UAAI,WAAW;AACf,UAAI,QAAQ,SAAUC,IAAG,OAAO;AAC9B,iBAASA,EAAC;AACV,YAAI,CAACD,UAAS,KAAK,KAAK,UAAU;AAAM,gBAAM,UAAU,QAAQ,2BAA2B;AAAA,MAC7F;AACA,MAAAD,QAAO,UAAU;AAAA,QACf,KAAK,OAAO,mBAAmB,eAAe,CAAC;AAAA;AAAA,UAC7C,SAAU,MAAM,OAAOG,MAAK;AAC1B,gBAAI;AACF,cAAAA,OAAM,cAAkB,SAAS,MAAM,sBAA0B,EAAE,OAAO,WAAW,WAAW,EAAE,KAAK,CAAC;AACxG,cAAAA,KAAI,MAAM,CAAC,CAAC;AACZ,sBAAQ,EAAE,gBAAgB;AAAA,YAC5B,SAASC,IAAP;AAAY,sBAAQ;AAAA,YAAM;AAC5B,mBAAO,SAAS,eAAeF,IAAG,OAAO;AACvC,oBAAMA,IAAG,KAAK;AACd,kBAAI;AAAO,gBAAAA,GAAE,YAAY;AAAA;AACpB,gBAAAC,KAAID,IAAG,KAAK;AACjB,qBAAOA;AAAA,YACT;AAAA,UACF,EAAE,CAAC,GAAG,KAAK;AAAA,YAAI;AAAA,QACjB;AAAA,MACF;AAAA;AAAA;;;ACxBA;AAAA,0EAAAG,SAAA;AAAA,UAAIC,YAAW;AACf,UAAI,iBAAiB,oBAAwB;AAC7C,MAAAD,QAAO,UAAU,SAAU,MAAM,QAAQE,IAAG;AAC1C,YAAIC,KAAI,OAAO;AACf,YAAIC;AACJ,YAAID,OAAMD,MAAK,OAAOC,MAAK,eAAeC,KAAID,GAAE,eAAeD,GAAE,aAAaD,UAASG,EAAC,KAAK,gBAAgB;AAC3G,yBAAe,MAAMA,EAAC;AAAA,QACxB;AAAE,eAAO;AAAA,MACX;AAAA;AAAA;;;ACRA;AAAA,iEAAAC,SAAA;AAAA;AACA,UAAIC,UAAS;AACb,UAAI,UAAU;AACd,UAAI,WAAW;AACf,UAAI,cAAc;AAClB,UAAI,OAAO;AACX,UAAI,QAAQ;AACZ,UAAI,aAAa;AACjB,UAAIC,YAAW;AACf,UAAI,QAAQ;AACZ,UAAI,cAAc;AAClB,UAAI,iBAAiB;AACrB,UAAI,oBAAoB;AAExB,MAAAF,QAAO,UAAU,SAAUG,OAAM,SAASC,UAAS,QAAQ,QAAQ,SAAS;AAC1E,YAAIC,QAAOJ,QAAOE,KAAI;AACtB,YAAIG,KAAID;AACR,YAAI,QAAQ,SAAS,QAAQ;AAC7B,YAAI,QAAQC,MAAKA,GAAE;AACnB,YAAIC,KAAI,CAAC;AACT,YAAI,YAAY,SAAU,KAAK;AAC7B,cAAIC,MAAK,MAAM,GAAG;AAClB;AAAA,YAAS;AAAA,YAAO;AAAA,YACd,OAAO,WAAW,SAAUC,IAAG;AAC7B,qBAAO,WAAW,CAACP,UAASO,EAAC,IAAI,QAAQD,IAAG,KAAK,MAAMC,OAAM,IAAI,IAAIA,EAAC;AAAA,YACxE,IAAI,OAAO,QAAQ,SAASC,KAAID,IAAG;AACjC,qBAAO,WAAW,CAACP,UAASO,EAAC,IAAI,QAAQD,IAAG,KAAK,MAAMC,OAAM,IAAI,IAAIA,EAAC;AAAA,YACxE,IAAI,OAAO,QAAQ,SAASE,KAAIF,IAAG;AACjC,qBAAO,WAAW,CAACP,UAASO,EAAC,IAAI,SAAYD,IAAG,KAAK,MAAMC,OAAM,IAAI,IAAIA,EAAC;AAAA,YAC5E,IAAI,OAAO,QAAQ,SAASG,KAAIH,IAAG;AAAE,cAAAD,IAAG,KAAK,MAAMC,OAAM,IAAI,IAAIA,EAAC;AAAG,qBAAO;AAAA,YAAM,IAC9E,SAASI,KAAIJ,IAAGK,IAAG;AAAE,cAAAN,IAAG,KAAK,MAAMC,OAAM,IAAI,IAAIA,IAAGK,EAAC;AAAG,qBAAO;AAAA,YAAM;AAAA,UAC3E;AAAA,QACF;AACA,YAAI,OAAOR,MAAK,cAAc,EAAE,WAAW,MAAM,WAAW,CAAC,MAAM,WAAY;AAC7E,cAAIA,GAAE,EAAE,QAAQ,EAAE,KAAK;AAAA,QACzB,CAAC,IAAI;AAEH,UAAAA,KAAI,OAAO,eAAe,SAASH,OAAM,QAAQ,KAAK;AACtD,sBAAYG,GAAE,WAAWF,QAAO;AAChC,eAAK,OAAO;AAAA,QACd,OAAO;AACL,cAAI,WAAW,IAAIE,GAAE;AAErB,cAAI,iBAAiB,SAAS,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK;AAE9D,cAAI,uBAAuB,MAAM,WAAY;AAAE,qBAAS,IAAI,CAAC;AAAA,UAAG,CAAC;AAEjE,cAAI,mBAAmB,YAAY,SAAU,MAAM;AAAE,gBAAIA,GAAE,IAAI;AAAA,UAAG,CAAC;AAEnE,cAAI,aAAa,CAAC,WAAW,MAAM,WAAY;AAE7C,gBAAI,YAAY,IAAIA,GAAE;AACtB,gBAAIS,SAAQ;AACZ,mBAAOA;AAAS,wBAAU,KAAK,EAAEA,QAAOA,MAAK;AAC7C,mBAAO,CAAC,UAAU,IAAI,EAAE;AAAA,UAC1B,CAAC;AACD,cAAI,CAAC,kBAAkB;AACrB,YAAAT,KAAI,QAAQ,SAAU,QAAQ,UAAU;AACtC,yBAAW,QAAQA,IAAGH,KAAI;AAC1B,kBAAI,OAAO,kBAAkB,IAAIE,MAAK,GAAG,QAAQC,EAAC;AAClD,kBAAI,YAAY;AAAW,sBAAM,UAAU,QAAQ,KAAK,KAAK,GAAG,IAAI;AACpE,qBAAO;AAAA,YACT,CAAC;AACD,YAAAA,GAAE,YAAY;AACd,kBAAM,cAAcA;AAAA,UACtB;AACA,cAAI,wBAAwB,YAAY;AACtC,sBAAU,QAAQ;AAClB,sBAAU,KAAK;AACf,sBAAU,UAAU,KAAK;AAAA,UAC3B;AACA,cAAI,cAAc;AAAgB,sBAAU,KAAK;AAEjD,cAAI,WAAW,MAAM;AAAO,mBAAO,MAAM;AAAA,QAC3C;AAEA,uBAAeA,IAAGH,KAAI;AAEtB,QAAAI,GAAEJ,KAAI,IAAIG;AACV,gBAAQ,QAAQ,IAAI,QAAQ,IAAI,QAAQ,KAAKA,MAAKD,QAAOE,EAAC;AAE1D,YAAI,CAAC;AAAS,iBAAO,UAAUD,IAAGH,OAAM,MAAM;AAE9C,eAAOG;AAAA,MACT;AAAA;AAAA;;;ACpFA;AAAA,6DAAAU,SAAA;AAAA;AACA,UAAI,SAAS;AACb,UAAI,WAAW;AACf,UAAI,MAAM;AAGV,MAAAA,QAAO,UAAU,qBAAyB,KAAK,SAAUC,MAAK;AAC5D,eAAO,SAASC,OAAM;AAAE,iBAAOD,KAAI,MAAM,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI,MAAS;AAAA,QAAG;AAAA,MAC7F,GAAG;AAAA;AAAA,QAED,KAAK,SAASA,KAAIE,MAAK;AACrB,cAAI,QAAQ,OAAO,SAAS,SAAS,MAAM,GAAG,GAAGA,IAAG;AACpD,iBAAO,SAAS,MAAM;AAAA,QACxB;AAAA;AAAA,QAEA,KAAK,SAASC,KAAID,MAAK,OAAO;AAC5B,iBAAO,OAAO,IAAI,SAAS,MAAM,GAAG,GAAGA,SAAQ,IAAI,IAAIA,MAAK,KAAK;AAAA,QACnE;AAAA,MACF,GAAG,QAAQ,IAAI;AAAA;AAAA;;;AClBf;AAAA,0EAAAE,SAAA;AAAA,UAAI,QAAQ;AAEZ,MAAAA,QAAO,UAAU,SAAU,MAAM,UAAU;AACzC,YAAI,SAAS,CAAC;AACd,cAAM,MAAM,OAAO,OAAO,MAAM,QAAQ,QAAQ;AAChD,eAAO;AAAA,MACT;AAAA;AAAA;;;ACNA;AAAA,yEAAAC,SAAA;AACA,UAAI,UAAU;AACd,UAAIC,QAAO;AACX,MAAAD,QAAO,UAAU,SAAUE,OAAM;AAC/B,eAAO,SAAS,SAAS;AACvB,cAAI,QAAQ,IAAI,KAAKA;AAAM,kBAAM,UAAUA,QAAO,uBAAuB;AACzE,iBAAOD,MAAK,IAAI;AAAA,QAClB;AAAA,MACF;AAAA;AAAA;;;ACRA;AAAA;AACA,UAAI,UAAU;AAEd,cAAQ,QAAQ,IAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,6BAAiC,KAAK,EAAE,CAAC;AAAA;AAAA;;;ACHzF;AAAA,wEAAAE,SAAA;AAAA;AAEA,UAAI,UAAU;AAEd,MAAAA,QAAO,UAAU,SAAU,YAAY;AACrC,gBAAQ,QAAQ,GAAG,YAAY,EAAE,IAAI,SAAS,KAAK;AACjD,cAAIC,UAAS,UAAU;AACvB,cAAIC,KAAI,IAAI,MAAMD,OAAM;AACxB,iBAAOA;AAAU,YAAAC,GAAED,OAAM,IAAI,UAAUA,OAAM;AAC7C,iBAAO,IAAI,KAAKC,EAAC;AAAA,QACnB,EAAE,CAAC;AAAA,MACL;AAAA;AAAA;;;ACXA;AAAA;AACA,kCAAgC,KAAK;AAAA;AAAA;;;ACDrC;AAAA,0EAAAC,SAAA;AAAA;AAEA,UAAI,UAAU;AACd,UAAI,YAAY;AAChB,UAAI,MAAM;AACV,UAAI,QAAQ;AAEZ,MAAAA,QAAO,UAAU,SAAU,YAAY;AACrC,gBAAQ,QAAQ,GAAG,YAAY,EAAE,MAAM,SAASC,MAAK,QAA+B;AAClF,cAAI,QAAQ,UAAU,CAAC;AACvB,cAAIC,UAASC,IAAGC,IAAG;AACnB,oBAAU,IAAI;AACd,UAAAF,WAAU,UAAU;AACpB,cAAIA;AAAS,sBAAU,KAAK;AAC5B,cAAI,UAAU;AAAW,mBAAO,IAAI,KAAK;AACzC,UAAAC,KAAI,CAAC;AACL,cAAID,UAAS;AACX,YAAAE,KAAI;AACJ,iBAAK,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC;AAC/B,kBAAM,QAAQ,OAAO,SAAU,UAAU;AACvC,cAAAD,GAAE,KAAK,GAAG,UAAUC,IAAG,CAAC;AAAA,YAC1B,CAAC;AAAA,UACH,OAAO;AACL,kBAAM,QAAQ,OAAOD,GAAE,MAAMA,EAAC;AAAA,UAChC;AACA,iBAAO,IAAI,KAAKA,EAAC;AAAA,QACnB,EAAE,CAAC;AAAA,MACL;AAAA;AAAA;;;AC3BA;AAAA;AACA,oCAAkC,KAAK;AAAA;AAAA;;;ACDvC;AAAA,oDAAAE,SAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAAA,QAAO,UAAU,eAA4B;AAAA;AAAA;;;ACP7C;AAAA;AAAA,cAAQ,IAAI,OAAO;AAAA;AAAA;;;ACAnB;AAAA,oEAAAC,SAAA;AAAA;AAEA,UAAI,cAAc;AAClB,UAAI,UAAU;AACd,UAAI,OAAO;AACX,UAAI,MAAM;AACV,UAAI,WAAW;AACf,UAAI,UAAU;AACd,UAAI,UAAU,OAAO;AAGrB,MAAAA,QAAO,UAAU,CAAC,WAAW,gBAAoB,WAAY;AAC3D,YAAIC,KAAI,CAAC;AACT,YAAIC,KAAI,CAAC;AAET,YAAIC,KAAI,OAAO;AACf,YAAIC,KAAI;AACR,QAAAH,GAAEE,EAAC,IAAI;AACP,QAAAC,GAAE,MAAM,EAAE,EAAE,QAAQ,SAAUC,IAAG;AAAE,UAAAH,GAAEG,EAAC,IAAIA;AAAA,QAAG,CAAC;AAC9C,eAAO,QAAQ,CAAC,GAAGJ,EAAC,EAAEE,EAAC,KAAK,KAAK,OAAO,KAAK,QAAQ,CAAC,GAAGD,EAAC,CAAC,EAAE,KAAK,EAAE,KAAKE;AAAA,MAC3E,CAAC,IAAI,SAAS,OAAO,QAAQ,QAAQ;AACnC,YAAIE,KAAI,SAAS,MAAM;AACvB,YAAI,OAAO,UAAU;AACrB,YAAIC,SAAQ;AACZ,YAAI,aAAa,KAAK;AACtB,YAAI,SAAS,IAAI;AACjB,eAAO,OAAOA,QAAO;AACnB,cAAIJ,KAAI,QAAQ,UAAUI,QAAO,CAAC;AAClC,cAAI,OAAO,aAAa,QAAQJ,EAAC,EAAE,OAAO,WAAWA,EAAC,CAAC,IAAI,QAAQA,EAAC;AACpE,cAAIK,UAAS,KAAK;AAClB,cAAIC,KAAI;AACR,cAAIC;AACJ,iBAAOF,UAASC,IAAG;AACjB,YAAAC,OAAM,KAAKD,IAAG;AACd,gBAAI,CAAC,eAAe,OAAO,KAAKN,IAAGO,IAAG;AAAG,cAAAJ,GAAEI,IAAG,IAAIP,GAAEO,IAAG;AAAA,UACzD;AAAA,QACF;AAAE,eAAOJ;AAAA,MACX,IAAI;AAAA;AAAA;;;ACrCJ;AAAA;AACA,UAAI,UAAU;AAEd,cAAQ,QAAQ,IAAI,QAAQ,GAAG,UAAU,EAAE,QAAQ,wBAA4B,CAAC;AAAA;AAAA;;;ACHhF;AAAA,8DAAAK,SAAA;AAAA;AACA,MAAAA,QAAO,UAAU,eAA+B,OAAO;AAAA;AAAA;;;ACDvD;AAAA,0EAAAC,SAAA;AACA,UAAI,WAAW;AACf,UAAI,YAAY;AAChB,UAAI,UAAU,cAAkB,SAAS;AACzC,MAAAA,QAAO,UAAU,SAAUC,IAAGC,IAAG;AAC/B,YAAIC,KAAI,SAASF,EAAC,EAAE;AACpB,YAAIG;AACJ,eAAOD,OAAM,WAAcC,KAAI,SAASD,EAAC,EAAE,OAAO,MAAM,SAAYD,KAAI,UAAUE,EAAC;AAAA,MACrF;AAAA;AAAA;;;ACRA;AAAA,6DAAAC,SAAA;AACA,MAAAA,QAAO,UAAU,SAAUC,KAAI,MAAM,MAAM;AACzC,YAAI,KAAK,SAAS;AAClB,gBAAQ,KAAK,QAAQ;AAAA,UACnB,KAAK;AAAG,mBAAO,KAAKA,IAAG,IACHA,IAAG,KAAK,IAAI;AAAA,UAChC,KAAK;AAAG,mBAAO,KAAKA,IAAG,KAAK,CAAC,CAAC,IACVA,IAAG,KAAK,MAAM,KAAK,CAAC,CAAC;AAAA,UACzC,KAAK;AAAG,mBAAO,KAAKA,IAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,IACnBA,IAAG,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,UAClD,KAAK;AAAG,mBAAO,KAAKA,IAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,IAC5BA,IAAG,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,UAC3D,KAAK;AAAG,mBAAO,KAAKA,IAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,IACrCA,IAAG,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,QACtE;AAAE,eAAOA,IAAG,MAAM,MAAM,IAAI;AAAA,MAC9B;AAAA;AAAA;;;ACfA;AAAA,2DAAAC,SAAA;AAAA,UAAI,MAAM;AACV,UAAI,SAAS;AACb,UAAIC,QAAO;AACX,UAAI,MAAM;AACV,UAAIC,UAAS;AACb,UAAI,UAAUA,QAAO;AACrB,UAAI,UAAUA,QAAO;AACrB,UAAI,YAAYA,QAAO;AACvB,UAAIC,kBAAiBD,QAAO;AAC5B,UAAI,WAAWA,QAAO;AACtB,UAAI,UAAU;AACd,UAAI,QAAQ,CAAC;AACb,UAAI,qBAAqB;AACzB,UAAI;AAAJ,UAAW;AAAX,UAAoB;AACpB,UAAI,MAAM,WAAY;AACpB,YAAIE,MAAK,CAAC;AAEV,YAAI,MAAM,eAAeA,GAAE,GAAG;AAC5B,cAAIC,MAAK,MAAMD,GAAE;AACjB,iBAAO,MAAMA,GAAE;AACf,UAAAC,IAAG;AAAA,QACL;AAAA,MACF;AACA,UAAI,WAAW,SAAU,OAAO;AAC9B,YAAI,KAAK,MAAM,IAAI;AAAA,MACrB;AAEA,UAAI,CAAC,WAAW,CAAC,WAAW;AAC1B,kBAAU,SAASC,cAAaD,KAAI;AAClC,cAAI,OAAO,CAAC;AACZ,cAAIE,KAAI;AACR,iBAAO,UAAU,SAASA;AAAG,iBAAK,KAAK,UAAUA,IAAG,CAAC;AACrD,gBAAM,EAAE,OAAO,IAAI,WAAY;AAE7B,mBAAO,OAAOF,OAAM,aAAaA,MAAK,SAASA,GAAE,GAAG,IAAI;AAAA,UAC1D;AACA,gBAAM,OAAO;AACb,iBAAO;AAAA,QACT;AACA,oBAAY,SAAS,eAAeD,KAAI;AACtC,iBAAO,MAAMA,GAAE;AAAA,QACjB;AAEA,YAAI,cAAkB,OAAO,KAAK,WAAW;AAC3C,kBAAQ,SAAUA,KAAI;AACpB,oBAAQ,SAAS,IAAI,KAAKA,KAAI,CAAC,CAAC;AAAA,UAClC;AAAA,QAEF,WAAW,YAAY,SAAS,KAAK;AACnC,kBAAQ,SAAUA,KAAI;AACpB,qBAAS,IAAI,IAAI,KAAKA,KAAI,CAAC,CAAC;AAAA,UAC9B;AAAA,QAEF,WAAWD,iBAAgB;AACzB,oBAAU,IAAIA,gBAAe;AAC7B,iBAAO,QAAQ;AACf,kBAAQ,MAAM,YAAY;AAC1B,kBAAQ,IAAI,KAAK,aAAa,MAAM,CAAC;AAAA,QAGvC,WAAWD,QAAO,oBAAoB,OAAO,eAAe,cAAc,CAACA,QAAO,eAAe;AAC/F,kBAAQ,SAAUE,KAAI;AACpB,YAAAF,QAAO,YAAYE,MAAK,IAAI,GAAG;AAAA,UACjC;AACA,UAAAF,QAAO,iBAAiB,WAAW,UAAU,KAAK;AAAA,QAEpD,WAAW,sBAAsB,IAAI,QAAQ,GAAG;AAC9C,kBAAQ,SAAUE,KAAI;AACpB,YAAAH,MAAK,YAAY,IAAI,QAAQ,CAAC,EAAE,kBAAkB,IAAI,WAAY;AAChE,cAAAA,MAAK,YAAY,IAAI;AACrB,kBAAI,KAAKG,GAAE;AAAA,YACb;AAAA,UACF;AAAA,QAEF,OAAO;AACL,kBAAQ,SAAUA,KAAI;AACpB,uBAAW,IAAI,KAAKA,KAAI,CAAC,GAAG,CAAC;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AACA,MAAAJ,QAAO,UAAU;AAAA,QACf,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA;AAAA;;;ACnFA;AAAA,gEAAAQ,SAAA;AAAA,UAAIC,UAAS;AACb,UAAI,YAAY,eAAmB;AACnC,UAAI,WAAWA,QAAO,oBAAoBA,QAAO;AACjD,UAAI,UAAUA,QAAO;AACrB,UAAIC,WAAUD,QAAO;AACrB,UAAI,SAAS,cAAkB,OAAO,KAAK;AAE3C,MAAAD,QAAO,UAAU,WAAY;AAC3B,YAAI,MAAM,MAAM;AAEhB,YAAI,QAAQ,WAAY;AACtB,cAAI,QAAQG;AACZ,cAAI,WAAW,SAAS,QAAQ;AAAS,mBAAO,KAAK;AACrD,iBAAO,MAAM;AACX,YAAAA,MAAK,KAAK;AACV,mBAAO,KAAK;AACZ,gBAAI;AACF,cAAAA,IAAG;AAAA,YACL,SAASC,IAAP;AACA,kBAAI;AAAM,uBAAO;AAAA;AACZ,uBAAO;AACZ,oBAAMA;AAAA,YACR;AAAA,UACF;AAAE,iBAAO;AACT,cAAI;AAAQ,mBAAO,MAAM;AAAA,QAC3B;AAGA,YAAI,QAAQ;AACV,mBAAS,WAAY;AACnB,oBAAQ,SAAS,KAAK;AAAA,UACxB;AAAA,QAEF,WAAW,YAAY,EAAEH,QAAO,aAAaA,QAAO,UAAU,aAAa;AACzE,cAAI,SAAS;AACb,cAAI,OAAO,SAAS,eAAe,EAAE;AACrC,cAAI,SAAS,KAAK,EAAE,QAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;AACzD,mBAAS,WAAY;AACnB,iBAAK,OAAO,SAAS,CAAC;AAAA,UACxB;AAAA,QAEF,WAAWC,YAAWA,SAAQ,SAAS;AAErC,cAAI,UAAUA,SAAQ,QAAQ,MAAS;AACvC,mBAAS,WAAY;AACnB,oBAAQ,KAAK,KAAK;AAAA,UACpB;AAAA,QAOF,OAAO;AACL,mBAAS,WAAY;AAEnB,sBAAU,KAAKD,SAAQ,KAAK;AAAA,UAC9B;AAAA,QACF;AAEA,eAAO,SAAUE,KAAI;AACnB,cAAI,OAAO,EAAE,IAAIA,KAAI,MAAM,OAAU;AACrC,cAAI;AAAM,iBAAK,OAAO;AACtB,cAAI,CAAC,MAAM;AACT,mBAAO;AACP,mBAAO;AAAA,UACT;AAAE,iBAAO;AAAA,QACX;AAAA,MACF;AAAA;AAAA;;;ACpEA;AAAA,6EAAAE,SAAA;AAAA;AAEA,UAAI,YAAY;AAEhB,eAAS,kBAAkBC,IAAG;AAC5B,YAAIC,UAAS;AACb,aAAK,UAAU,IAAID,GAAE,SAAU,WAAW,UAAU;AAClD,cAAIC,aAAY,UAAa,WAAW;AAAW,kBAAM,UAAU,yBAAyB;AAC5F,UAAAA,WAAU;AACV,mBAAS;AAAA,QACX,CAAC;AACD,aAAK,UAAU,UAAUA,QAAO;AAChC,aAAK,SAAS,UAAU,MAAM;AAAA,MAChC;AAEA,MAAAF,QAAO,QAAQ,IAAI,SAAUC,IAAG;AAC9B,eAAO,IAAI,kBAAkBA,EAAC;AAAA,MAChC;AAAA;AAAA;;;ACjBA;AAAA,8DAAAE,SAAA;AAAA,MAAAA,QAAO,UAAU,SAAU,MAAM;AAC/B,YAAI;AACF,iBAAO,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE;AAAA,QAC/B,SAASC,IAAP;AACA,iBAAO,EAAE,GAAG,MAAM,GAAGA,GAAE;AAAA,QACzB;AAAA,MACF;AAAA;AAAA;;;ACNA;AAAA,iEAAAC,SAAA;AAAA,UAAIC,UAAS;AACb,UAAIC,aAAYD,QAAO;AAEvB,MAAAD,QAAO,UAAUE,cAAaA,WAAU,aAAa;AAAA;AAAA;;;ACHrD;AAAA,sEAAAC,SAAA;AAAA,UAAI,WAAW;AACf,UAAIC,YAAW;AACf,UAAI,uBAAuB;AAE3B,MAAAD,QAAO,UAAU,SAAUE,IAAGC,IAAG;AAC/B,iBAASD,EAAC;AACV,YAAID,UAASE,EAAC,KAAKA,GAAE,gBAAgBD;AAAG,iBAAOC;AAC/C,YAAI,oBAAoB,qBAAqB,EAAED,EAAC;AAChD,YAAIE,WAAU,kBAAkB;AAChC,QAAAA,SAAQD,EAAC;AACT,eAAO,kBAAkB;AAAA,MAC3B;AAAA;AAAA;;;ACXA;AAAA;AAAA;AACA,UAAI,UAAU;AACd,UAAIE,UAAS;AACb,UAAI,MAAM;AACV,UAAI,UAAU;AACd,UAAI,UAAU;AACd,UAAIC,YAAW;AACf,UAAI,YAAY;AAChB,UAAI,aAAa;AACjB,UAAI,QAAQ;AACZ,UAAI,qBAAqB;AACzB,UAAI,OAAO,eAAmB;AAC9B,UAAI,YAAY,oBAAwB;AACxC,UAAI,6BAA6B;AACjC,UAAIC,WAAU;AACd,UAAIC,aAAY;AAChB,UAAI,iBAAiB;AACrB,UAAI,UAAU;AACd,UAAIC,aAAYJ,QAAO;AACvB,UAAI,UAAUA,QAAO;AACrB,UAAI,WAAW,WAAW,QAAQ;AAClC,UAAI,KAAK,YAAY,SAAS,MAAM;AACpC,UAAI,WAAWA,QAAO,OAAO;AAC7B,UAAI,SAAS,QAAQ,OAAO,KAAK;AACjC,UAAI,QAAQ,WAAY;AAAA,MAAc;AACtC,UAAI;AAAJ,UAAc;AAAd,UAA2C;AAA3C,UAAiE;AACjE,UAAI,uBAAuB,8BAA8B,2BAA2B;AAEpF,UAAI,aAAa,CAAC,CAAC,WAAY;AAC7B,YAAI;AAEF,cAAI,UAAU,SAAS,QAAQ,CAAC;AAChC,cAAI,eAAe,QAAQ,cAAc,CAAC,GAAG,cAAkB,SAAS,CAAC,IAAI,SAAU,MAAM;AAC3F,iBAAK,OAAO,KAAK;AAAA,UACnB;AAEA,kBAAQ,UAAU,OAAO,yBAAyB,eAC7C,QAAQ,KAAK,KAAK,aAAa,eAI/B,GAAG,QAAQ,KAAK,MAAM,KACtBG,WAAU,QAAQ,WAAW,MAAM;AAAA,QAC1C,SAASE,IAAP;AAAA,QAAwB;AAAA,MAC5B,EAAE;AAGF,UAAI,aAAa,SAAU,IAAI;AAC7B,YAAI;AACJ,eAAOJ,UAAS,EAAE,KAAK,QAAQ,OAAO,GAAG,SAAS,aAAa,OAAO;AAAA,MACxE;AACA,UAAI,SAAS,SAAU,SAAS,UAAU;AACxC,YAAI,QAAQ;AAAI;AAChB,gBAAQ,KAAK;AACb,YAAI,QAAQ,QAAQ;AACpB,kBAAU,WAAY;AACpB,cAAI,QAAQ,QAAQ;AACpB,cAAI,KAAK,QAAQ,MAAM;AACvB,cAAIK,KAAI;AACR,cAAI,MAAM,SAAU,UAAU;AAC5B,gBAAI,UAAU,KAAK,SAAS,KAAK,SAAS;AAC1C,gBAAIC,WAAU,SAAS;AACvB,gBAAI,SAAS,SAAS;AACtB,gBAAI,SAAS,SAAS;AACtB,gBAAI,QAAQ,MAAM;AAClB,gBAAI;AACF,kBAAI,SAAS;AACX,oBAAI,CAAC,IAAI;AACP,sBAAI,QAAQ,MAAM;AAAG,sCAAkB,OAAO;AAC9C,0BAAQ,KAAK;AAAA,gBACf;AACA,oBAAI,YAAY;AAAM,2BAAS;AAAA,qBAC1B;AACH,sBAAI;AAAQ,2BAAO,MAAM;AACzB,2BAAS,QAAQ,KAAK;AACtB,sBAAI,QAAQ;AACV,2BAAO,KAAK;AACZ,6BAAS;AAAA,kBACX;AAAA,gBACF;AACA,oBAAI,WAAW,SAAS,SAAS;AAC/B,yBAAOH,WAAU,qBAAqB,CAAC;AAAA,gBACzC,WAAW,OAAO,WAAW,MAAM,GAAG;AACpC,uBAAK,KAAK,QAAQG,UAAS,MAAM;AAAA,gBACnC;AAAO,kBAAAA,SAAQ,MAAM;AAAA,cACvB;AAAO,uBAAO,KAAK;AAAA,YACrB,SAASF,IAAP;AACA,kBAAI,UAAU,CAAC;AAAQ,uBAAO,KAAK;AACnC,qBAAOA,EAAC;AAAA,YACV;AAAA,UACF;AACA,iBAAO,MAAM,SAASC;AAAG,gBAAI,MAAMA,IAAG,CAAC;AACvC,kBAAQ,KAAK,CAAC;AACd,kBAAQ,KAAK;AACb,cAAI,YAAY,CAAC,QAAQ;AAAI,wBAAY,OAAO;AAAA,QAClD,CAAC;AAAA,MACH;AACA,UAAI,cAAc,SAAU,SAAS;AACnC,aAAK,KAAKN,SAAQ,WAAY;AAC5B,cAAI,QAAQ,QAAQ;AACpB,cAAI,YAAY,YAAY,OAAO;AACnC,cAAI,QAAQ,SAASQ;AACrB,cAAI,WAAW;AACb,qBAASN,SAAQ,WAAY;AAC3B,kBAAI,QAAQ;AACV,wBAAQ,KAAK,sBAAsB,OAAO,OAAO;AAAA,cACnD,WAAW,UAAUF,QAAO,sBAAsB;AAChD,wBAAQ,EAAE,SAAkB,QAAQ,MAAM,CAAC;AAAA,cAC7C,YAAYQ,WAAUR,QAAO,YAAYQ,SAAQ,OAAO;AACtD,gBAAAA,SAAQ,MAAM,+BAA+B,KAAK;AAAA,cACpD;AAAA,YACF,CAAC;AAED,oBAAQ,KAAK,UAAU,YAAY,OAAO,IAAI,IAAI;AAAA,UACpD;AAAE,kBAAQ,KAAK;AACf,cAAI,aAAa,OAAO;AAAG,kBAAM,OAAO;AAAA,QAC1C,CAAC;AAAA,MACH;AACA,UAAI,cAAc,SAAU,SAAS;AACnC,eAAO,QAAQ,OAAO,MAAM,QAAQ,MAAM,QAAQ,IAAI,WAAW;AAAA,MACnE;AACA,UAAI,oBAAoB,SAAU,SAAS;AACzC,aAAK,KAAKR,SAAQ,WAAY;AAC5B,cAAI;AACJ,cAAI,QAAQ;AACV,oBAAQ,KAAK,oBAAoB,OAAO;AAAA,UAC1C,WAAW,UAAUA,QAAO,oBAAoB;AAC9C,oBAAQ,EAAE,SAAkB,QAAQ,QAAQ,GAAG,CAAC;AAAA,UAClD;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,UAAU,SAAU,OAAO;AAC7B,YAAI,UAAU;AACd,YAAI,QAAQ;AAAI;AAChB,gBAAQ,KAAK;AACb,kBAAU,QAAQ,MAAM;AACxB,gBAAQ,KAAK;AACb,gBAAQ,KAAK;AACb,YAAI,CAAC,QAAQ;AAAI,kBAAQ,KAAK,QAAQ,GAAG,MAAM;AAC/C,eAAO,SAAS,IAAI;AAAA,MACtB;AACA,UAAI,WAAW,SAAU,OAAO;AAC9B,YAAI,UAAU;AACd,YAAI;AACJ,YAAI,QAAQ;AAAI;AAChB,gBAAQ,KAAK;AACb,kBAAU,QAAQ,MAAM;AACxB,YAAI;AACF,cAAI,YAAY;AAAO,kBAAMI,WAAU,kCAAkC;AACzE,cAAI,OAAO,WAAW,KAAK,GAAG;AAC5B,sBAAU,WAAY;AACpB,kBAAI,UAAU,EAAE,IAAI,SAAS,IAAI,MAAM;AACvC,kBAAI;AACF,qBAAK,KAAK,OAAO,IAAI,UAAU,SAAS,CAAC,GAAG,IAAI,SAAS,SAAS,CAAC,CAAC;AAAA,cACtE,SAASC,IAAP;AACA,wBAAQ,KAAK,SAASA,EAAC;AAAA,cACzB;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AACL,oBAAQ,KAAK;AACb,oBAAQ,KAAK;AACb,mBAAO,SAAS,KAAK;AAAA,UACvB;AAAA,QACF,SAASA,IAAP;AACA,kBAAQ,KAAK,EAAE,IAAI,SAAS,IAAI,MAAM,GAAGA,EAAC;AAAA,QAC5C;AAAA,MACF;AAGA,UAAI,CAAC,YAAY;AAEf,mBAAW,SAASI,SAAQ,UAAU;AACpC,qBAAW,MAAM,UAAU,SAAS,IAAI;AACxC,oBAAU,QAAQ;AAClB,mBAAS,KAAK,IAAI;AAClB,cAAI;AACF,qBAAS,IAAI,UAAU,MAAM,CAAC,GAAG,IAAI,SAAS,MAAM,CAAC,CAAC;AAAA,UACxD,SAAS,KAAP;AACA,oBAAQ,KAAK,MAAM,GAAG;AAAA,UACxB;AAAA,QACF;AAEA,mBAAW,SAASA,SAAQ,UAAU;AACpC,eAAK,KAAK,CAAC;AACX,eAAK,KAAK;AACV,eAAK,KAAK;AACV,eAAK,KAAK;AACV,eAAK,KAAK;AACV,eAAK,KAAK;AACV,eAAK,KAAK;AAAA,QACZ;AACA,iBAAS,YAAY,uBAA2B,SAAS,WAAW;AAAA;AAAA,UAElE,MAAM,SAAS,KAAK,aAAa,YAAY;AAC3C,gBAAI,WAAW,qBAAqB,mBAAmB,MAAM,QAAQ,CAAC;AACtE,qBAAS,KAAK,OAAO,eAAe,aAAa,cAAc;AAC/D,qBAAS,OAAO,OAAO,cAAc,cAAc;AACnD,qBAAS,SAAS,SAAS,QAAQ,SAAS;AAC5C,iBAAK,GAAG,KAAK,QAAQ;AACrB,gBAAI,KAAK;AAAI,mBAAK,GAAG,KAAK,QAAQ;AAClC,gBAAI,KAAK;AAAI,qBAAO,MAAM,KAAK;AAC/B,mBAAO,SAAS;AAAA,UAClB;AAAA;AAAA,UAEA,SAAS,SAAU,YAAY;AAC7B,mBAAO,KAAK,KAAK,QAAW,UAAU;AAAA,UACxC;AAAA,QACF,CAAC;AACD,+BAAuB,WAAY;AACjC,cAAI,UAAU,IAAI,SAAS;AAC3B,eAAK,UAAU;AACf,eAAK,UAAU,IAAI,UAAU,SAAS,CAAC;AACvC,eAAK,SAAS,IAAI,SAAS,SAAS,CAAC;AAAA,QACvC;AACA,mCAA2B,IAAI,uBAAuB,SAAUC,IAAG;AACjE,iBAAOA,OAAM,YAAYA,OAAM,UAC3B,IAAI,qBAAqBA,EAAC,IAC1B,4BAA4BA,EAAC;AAAA,QACnC;AAAA,MACF;AAEA,cAAQ,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,YAAY,EAAE,SAAS,SAAS,CAAC;AAC9E,kCAAgC,UAAU,OAAO;AACjD,4BAA0B,OAAO;AACjC,gBAAU,eAAmB,OAAO;AAGpC,cAAQ,QAAQ,IAAI,QAAQ,IAAI,CAAC,YAAY,SAAS;AAAA;AAAA,QAEpD,QAAQ,SAAS,OAAOC,IAAG;AACzB,cAAI,aAAa,qBAAqB,IAAI;AAC1C,cAAI,WAAW,WAAW;AAC1B,mBAASA,EAAC;AACV,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,CAAC;AACD,cAAQ,QAAQ,IAAI,QAAQ,KAAK,WAAW,CAAC,aAAa,SAAS;AAAA;AAAA,QAEjE,SAAS,SAASJ,SAAQK,IAAG;AAC3B,iBAAO,eAAe,WAAW,SAAS,UAAU,WAAW,MAAMA,EAAC;AAAA,QACxE;AAAA,MACF,CAAC;AACD,cAAQ,QAAQ,IAAI,QAAQ,IAAI,EAAE,cAAc,sBAA0B,SAAU,MAAM;AACxF,iBAAS,IAAI,IAAI,EAAE,OAAO,EAAE,KAAK;AAAA,MACnC,CAAC,IAAI,SAAS;AAAA;AAAA,QAEZ,KAAK,SAAS,IAAI,UAAU;AAC1B,cAAIF,KAAI;AACR,cAAI,aAAa,qBAAqBA,EAAC;AACvC,cAAIH,WAAU,WAAW;AACzB,cAAI,SAAS,WAAW;AACxB,cAAI,SAASL,SAAQ,WAAY;AAC/B,gBAAI,SAAS,CAAC;AACd,gBAAIW,SAAQ;AACZ,gBAAI,YAAY;AAChB,kBAAM,UAAU,OAAO,SAAU,SAAS;AACxC,kBAAI,SAASA;AACb,kBAAI,gBAAgB;AACpB,qBAAO,KAAK,MAAS;AACrB;AACA,cAAAH,GAAE,QAAQ,OAAO,EAAE,KAAK,SAAU,OAAO;AACvC,oBAAI;AAAe;AACnB,gCAAgB;AAChB,uBAAO,MAAM,IAAI;AACjB,kBAAE,aAAaH,SAAQ,MAAM;AAAA,cAC/B,GAAG,MAAM;AAAA,YACX,CAAC;AACD,cAAE,aAAaA,SAAQ,MAAM;AAAA,UAC/B,CAAC;AACD,cAAI,OAAO;AAAG,mBAAO,OAAO,CAAC;AAC7B,iBAAO,WAAW;AAAA,QACpB;AAAA;AAAA,QAEA,MAAM,SAAS,KAAK,UAAU;AAC5B,cAAIG,KAAI;AACR,cAAI,aAAa,qBAAqBA,EAAC;AACvC,cAAI,SAAS,WAAW;AACxB,cAAI,SAASR,SAAQ,WAAY;AAC/B,kBAAM,UAAU,OAAO,SAAU,SAAS;AACxC,cAAAQ,GAAE,QAAQ,OAAO,EAAE,KAAK,WAAW,SAAS,MAAM;AAAA,YACpD,CAAC;AAAA,UACH,CAAC;AACD,cAAI,OAAO;AAAG,mBAAO,OAAO,CAAC;AAC7B,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,CAAC;AAAA;AAAA;;;AC7RD;AAAA;AAAA;AAEA,UAAI,UAAU;AACd,UAAI,OAAO;AACX,UAAII,UAAS;AACb,UAAI,qBAAqB;AACzB,UAAI,iBAAiB;AAErB,cAAQ,QAAQ,IAAI,QAAQ,GAAG,WAAW,EAAE,WAAW,SAAU,WAAW;AAC1E,YAAIC,KAAI,mBAAmB,MAAM,KAAK,WAAWD,QAAO,OAAO;AAC/D,YAAIE,cAAa,OAAO,aAAa;AACrC,eAAO,KAAK;AAAA,UACVA,cAAa,SAAUC,IAAG;AACxB,mBAAO,eAAeF,IAAG,UAAU,CAAC,EAAE,KAAK,WAAY;AAAE,qBAAOE;AAAA,YAAG,CAAC;AAAA,UACtE,IAAI;AAAA,UACJD,cAAa,SAAUE,IAAG;AACxB,mBAAO,eAAeH,IAAG,UAAU,CAAC,EAAE,KAAK,WAAY;AAAE,oBAAMG;AAAA,YAAG,CAAC;AAAA,UACrE,IAAI;AAAA,QACN;AAAA,MACF,EAAE,CAAC;AAAA;AAAA;;;ACnBH;AAAA;AAAA;AAEA,UAAI,UAAU;AACd,UAAI,uBAAuB;AAC3B,UAAIC,WAAU;AAEd,cAAQ,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAU,YAAY;AAC3D,YAAI,oBAAoB,qBAAqB,EAAE,IAAI;AACnD,YAAI,SAASA,SAAQ,UAAU;AAC/B,SAAC,OAAO,IAAI,kBAAkB,SAAS,kBAAkB,SAAS,OAAO,CAAC;AAC1E,eAAO,kBAAkB;AAAA,MAC3B,EAAE,CAAC;AAAA;AAAA;;;ACXH;AAAA,wDAAAC,SAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,MAAAA,QAAO,UAAU,eAA4B;AAAA;AAAA;;;ACN7C;AAAA,6DAAAC,SAAA;AAAA;AACA,UAAI,SAAS;AACb,UAAI,WAAW;AACf,UAAI,MAAM;AAGV,MAAAA,QAAO,UAAU,qBAAyB,KAAK,SAAUC,MAAK;AAC5D,eAAO,SAASC,OAAM;AAAE,iBAAOD,KAAI,MAAM,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI,MAAS;AAAA,QAAG;AAAA,MAC7F,GAAG;AAAA;AAAA,QAED,KAAK,SAASE,KAAI,OAAO;AACvB,iBAAO,OAAO,IAAI,SAAS,MAAM,GAAG,GAAG,QAAQ,UAAU,IAAI,IAAI,OAAO,KAAK;AAAA,QAC/E;AAAA,MACF,GAAG,MAAM;AAAA;AAAA;;;ACbT;AAAA;AACA,UAAI,UAAU;AAEd,cAAQ,QAAQ,IAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,6BAAiC,KAAK,EAAE,CAAC;AAAA;AAAA;;;ACHzF;AAAA;AACA,kCAAgC,KAAK;AAAA;AAAA;;;ACDrC;AAAA;AACA,oCAAkC,KAAK;AAAA;AAAA;;;ACDvC;AAAA,oDAAAC,SAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAAA,QAAO,UAAU,eAA4B;AAAA;AAAA;;;ACP7C;AAAA,2CAAAC,SAAA;AAMA,OAAC,SAAUC,OAAM,SAAS;AACxB,YAAI,OAAO,WAAW,cAAc,OAAO,KAAK;AAE9C,iBAAO,CAAC,QAAQ,GAAG,SAAU,IAAI;AAC/B,mBAAQ,QAAQ,EAAE;AAAA,UACpB,CAAC;AAAA,QACH,WAAW,OAAO,YAAY,UAAU;AAItC,UAAAD,QAAO,UAAU,QAAQ,gBAAiB;AAAA,QAC5C,OAAO;AACL,kBAAQ,MAAM;AAAA,QAChB;AAAA,MACF,GAAE,SAAM,SAAUE,IAAG;AAIrB,YAAIC,YAAW;AAAA,UACb,WAAW;AAAA,UACX,mBAAmB;AAAA,UACnB,SAAS;AAAA,UACT,eAAe;AAAA,UACf,gBAAgB;AAAA,UAChB,OAAO;AAAA,UACP,OAAO;AAAA,UACP,YAAY,CAAC,KAAK,GAAG;AAAA,UACrB,cAAc;AAAA,UACd,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,eAAe;AAAA,UACf,gBAAgB;AAAA,UAChB,OAAO;AAAA,UACP,aAAa;AAAA,UACb,UAAU;AAAA;AAAA;AAAA,UAGV,QAAQ;AAAA,UACR,SAAS,CAAC,SAAS;AAAA,UACnB,oBAAoB;AAAA,UACpB,aAAa;AAAA,UACb,iBAAiB;AAAA,UACjB,OAAO,CAAC;AAAA,UACR,OAAO;AAAA,UACP,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,cAAc;AAAA,UACd,SAAS;AAAA,UACT,cAAc;AAAA,YACb,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,KAAK;AAAA,YACL,YAAY;AAAA,UACb;AAAA,UACA,aAAa;AAAA,YACZ,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,KAAK;AAAA,YACL,YAAY;AAAA,UACb;AAAA,UACA,iBAAiB;AAAA,UACjB,QAAQ;AAAA,QACT,GAIA,MAAO,OAAO,UAAU,cAAe,SAAS,MAEhD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,UAKL,oBAAoB,CAAC,EACpB,QACK,kBAAkB,OAClB,IAAI,iBAAiB,IAAI,oBAAoB,IAAI,iBAClD,IAAI,UAAU;AAAA,UAGnB,gBAAgB,kBAAkB;AAAA,UAClC,IAAI;AAAA;AAAA,UAEJ,QAAQ;AAAA,UACR,QAAQ;AAAA,QACT,GACA,OAAO,WAAW;AAKjB,eAAK,oBAAoBD,GAAE,CAAC,CAAC;AAC7B,eAAK,mBAAmBA,GAAE,CAAC,CAAC;AAC5B,eAAK,uBAAuB,CAAC;AAE7B,eAAK,YAAY,CAAC;AAElB,eAAK,OAAO;AAAA,QACb;AAGD,aAAK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWhB,UAAU,SAAS,aAAa,KAAKE,aAAY;AAGhD,gBAAI,CAAC,IAAIA,WAAU,GAAG;AAErB,kBAAIC,MAAK,WAAW;AAAA,cAAC;AACrB,cAAAA,IAAG,YAAY;AAEf,kBAAI,iBAAiB,IAAIA,IAAG;AAI5B,kBAAI,eAAe,QAAQ;AAC1B,+BAAe,OAAO,GAAG;AAAA,cAC1B;AAEA,cAAAH,GAAE,KAAK,aAAa,SAAS,YAAYG,KAAI;AAG5C,oBAAI,WAAW,QAAQ,IAAI,KAAK,GAAG;AAGlC,sBAAI,CAAC,IAAI,UAAU,GAAG;AAErB,wBAAI,UAAU,IAAI,WAAW;AAC5B,6BAAO,eAAe,UAAU,EAAE,MAAM,gBAAgB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAAA,oBAC/F;AAIA,wBAAI,UAAU,EAAE,UAAU;AAAA,kBAC3B,WACSF,UAAS,OAAO;AAExB,4BAAQ,IAAI,SAAQ,aAAY,oBAAmBC,cACjD,yDAAyD;AAAA,kBAC5D;AAAA,gBACD;AAAA,cACD,CAAC;AAED,kBAAIA,WAAU,IAAI;AAAA,YACnB;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,aAAa,SAASE,SAAQ;AAC7B,gBAAI,SAASA;AACb,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,WAAW,SAAS,UAAU;AAC7B,mBAAO,IAAI,MAAM,QAAQ;AAAA,UAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,MAAM,WAAW;AAChB,iBAAK,kBAAkB,IAAI,MAAM,KAAK,mBAAmB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC/F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,KAAK,WAAW;AACf,iBAAK,kBAAkB,GAAG,MAAM,KAAK,mBAAmB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC9F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,MAAM,WAAW;AAChB,iBAAK,kBAAkB,IAAI,MAAM,KAAK,mBAAmB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC/F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,SAAS,SAAS,QAAQ;AAEzB,gBAAIC,QAAO;AAGX,gBAAI,OAAO,UAAU,UAAU;AAE9B,kBAAIH,cAAa,QAChBI,KAAI;AAGL,kBAAIJ,YAAW,QAAQ,GAAG,IAAI,GAAG;AAChC,gBAAAI,KAAID,MAAK,UAAUH,WAAU;AAAA,cAC9B,OAEK;AACJ,gBAAAF,GAAE,KAAKK,MAAK,WAAW,SAASE,IAAGC,SAAQ;AAE1C,sBAAIA,QAAO,KAAK,UAAUA,QAAO,KAAK,SAASN,YAAW,SAAS,CAAC,KAAK,MAAKA,aAAY;AACzF,oBAAAI,KAAIE;AACJ,2BAAO;AAAA,kBACR;AAAA,gBACD,CAAC;AAAA,cACF;AAEA,qBAAOF;AAAA,YACR,OAEK;AAGJ,kBAAI,OAAO,KAAK,QAAQ,GAAG,IAAI,GAAG;AACjC,sBAAM,IAAI,MAAM,4BAA4B;AAAA,cAC7C;AAEA,cAAAD,MAAK,UAAU,OAAO,IAAI,IAAI;AAG9B,kBAAI,OAAO,MAAM;AAGhB,gBAAAA,MAAK,SAAS,OAAO,MAAMA,OAAM,OAAO,IAAI;AAAA,cAC7C;AAEA,qBAAO;AAAA,YACR;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,UAAU,WAAW;AAEpB,gBAAI,OAAO,MAAM,UAAU,MAAM,MAAM,SAAS;AAEhD,gBAAI,OAAO,KAAK,CAAC,KAAK,UAAU;AAC/B,mBAAK,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAAA,YAC3B;AAGA,iBAAK,kBAAkB,QAAQ,MAAM,KAAK,mBAAmB,IAAI;AACjE,iBAAK,iBAAiB,QAAQ,MAAM,KAAK,kBAAkB,IAAI;AAE/D,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAYA,WAAW,SAAS,UAAU;AAE7B,gBAAII,aAAY,CAAC,GAChB,MAAM,YAAY;AAEnB,YAAAT,GAAE,GAAG,EAAE,KAAK,WAAW;AAEtB,kBAAI,QAAQA,GAAE,IAAI,GACjBU,MAAK,MAAM,KAAK,gBAAgB;AAEjC,kBAAIA,KAAI;AAEP,gBAAAV,GAAE,KAAKU,KAAI,SAASH,IAAG,WAAW;AACjC,kBAAAE,WAAU,KAAK,MAAM,KAAK,SAAS,CAAC;AAAA,gBACrC,CAAC;AAAA,cACF;AAAA,YACD,CAAC;AAED,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,iBAAiB,WAAW;AAC3B,mBAAO,KAAK;AAAA,UACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,KAAK,WAAW;AACf,iBAAK,iBAAiB,IAAI,MAAM,KAAK,kBAAkB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC7F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,IAAI,WAAW;AACd,iBAAK,iBAAiB,GAAG,MAAM,KAAK,kBAAkB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC5F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,KAAK,WAAW;AACf,iBAAK,iBAAiB,IAAI,MAAM,KAAK,kBAAkB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC7F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,SAAS,SAAS,UAAU;AAE3B,gBAAI,MAAM,WACT,WAAU,MACV;AAED,mBAAOT,GAAE,MAAK,gBAAgB,EAAE,QAAQ;AAAA,UACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,aAAa,SAASW,IAAG;AACxB,YAAAX,GAAE,OAAOC,WAAUU,EAAC;AACpB,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,gBAAgB,WAAW;AAC1B,iBAAK,iBAAiB,eAAe,MAAM,KAAK,kBAAkB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AACxG,mBAAO;AAAA,UACR;AAAA,QACD;AAGA,QAAAX,GAAE,cAAc,IAAI,KAAK;AAGzB,QAAAA,GAAE,cAAc,SAAS,SAASY,UAAS;AAK1C,eAAK,cAAc;AAAA,YAClB,OAAO,CAAC;AAAA,YACR,MAAM,CAAC;AAAA,UACR;AAEA,eAAK;AAGL,eAAK;AAEL,eAAK;AAEL,eAAK,cAAc;AAKnB,eAAK,oBAAoBZ,GAAE,CAAC,CAAC;AAG7B,eAAK,mBAAmBA,GAAE,CAAC,CAAC;AAC5B,eAAK,YAAY;AAEjB,eAAK;AAEL,eAAK;AAEL,eAAK;AAEL,eAAK,cAAc,iBAAgB,KAAK,MAAM,KAAK,OAAO,IAAE,GAAO;AACnE,eAAK;AAEL,eAAK;AACL,eAAK,wBAAwB;AAE7B,eAAK,mBAAmB,CAAC;AAEzB,eAAK,UAAU;AAEf,eAAK,aAAa;AAAA,YACjB,OAAO,CAAC;AAAA,YACR,MAAM;AAAA,UACP;AAEA,eAAK,gBAAgB,CAAC;AAEtB,eAAK,YAAY;AAEjB,eAAK;AAGL,eAAK;AAGL,eAAK,OAAO,SAASY,QAAO;AAAA,QAC7B;AAEA,QAAAZ,GAAE,YAAY,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOzB,QAAQ,SAAS,QAAQY,UAAS;AAEjC,gBAAIP,QAAO;AAEX,YAAAA,MAAK,WAAWL,GAAE,MAAM;AACxB,YAAAK,MAAK,YAAYL,GAAE,OAAO,MAAM,CAAC,GAAGC,WAAUW,QAAO;AAGrD,YAAAP,MAAK,gBAAgB;AAGrB,gBAAK,CAAC,IAAI,MACN,IAAI,MAAMA,MAAK,UAAU,OAC3B;AAQD,kBAAI,eAAe;AAGnB,kBAAIA,MAAK,SAAS,KAAK,0BAA0B,MAAM,QAAW;AAEjE,+BAAeA,MAAK,SAAS,KAAK,OAAO;AAIzC,oBAAI,iBAAiB;AAAW,iCAAe;AAE/C,gBAAAA,MAAK,SAAS,KAAK,4BAA4B,YAAY;AAAA,cAC5D;AAQA,kBAAIA,MAAK,UAAU,YAAY,MAAM;AACpC,gBAAAA,MAAK,aAAaA,MAAK,UAAU,OAAO;AAAA,cACzC,OACK;AAEJ,oBAAI,WAAWA,MAAK,SAAS,KAAK,sBAAsB,GACvD;AAED,oBAAI,UAAS;AACZ,wBAAML,GAAE,QAAQ;AAAA,gBACjB;AAEA,oBAAI,OAAO,IAAI,CAAC,GAAG;AAClB,kBAAAK,MAAK,aAAa,IAAI,MAAM,CAAC;AAAA,gBAC9B,OACK;AACJ,kBAAAA,MAAK,aAAa,YAAY;AAAA,gBAC/B;AAAA,cACD;AAEA,cAAAA,MAAK,SAGH,WAAW,OAAO,EAGlB,SAAS,eAAe;AAG1B,cAAAA,MAAK,gBAAgB;AAGrB,cAAAA,MAAK,YAAY;AAGjB,cAAAL,GAAE,KAAKK,MAAK,UAAU,SAAS,SAASE,IAAGL,aAAY;AACtD,gBAAAG,MAAK,MAAMH,WAAU;AAAA,cACtB,CAAC;AAGD,kBAAI,IAAI,oBAAoB;AAC3B,gBAAAF,GAAE,IAAI,OAAO,SAAS,IAAI,EAAE,GAAG,eAAcK,MAAK,cAAa,gBAAgB,SAAS,OAAO;AAC9F,kBAAAA,MAAK,kBAAkB,KAAK;AAAA,gBAC7B,CAAC;AAAA,cACF;AAEA,cAAAA,MAGE,IAAI,WAAW,WAAW;AAC1B,gBAAAA,MAAK,iBAAiB;AAAA,cACvB,CAAC,EAEA,IAAI,gBAAgB,SAASQ,IAAG;AAChC,gBAAAR,MAAK,iBAAiBQ,GAAE;AAAA,cACzB,CAAC;AAAA,YACH,OACK;AACJ,cAAAR,MAAK,UAAU,WAAW;AAAA,YAC3B;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,iBAAiB,WAAW;AAE3B,gBAAIA,QAAO,MACV,MAAMA,MAAK,UAAU,KAAK,sBAAsB,GAChD,mBAAmBA,MAAK,WACxBS,UAAS,SAAS,SAAS;AAC1B,iCAAmB;AAAA,YACpB;AAED,YAAAT,MAAK,SAAS;AAAA,cACb,MAAM;AAAA,cACN,SAASA,MAAK;AAAA,cACd,QAAQS;AAAA,YACT,CAAC;AAED,gBAAIT,MAAK,UAAU,gBAAgB;AAElC,iCAAmBA,MAAK,UAAU,eAAe;AAAA,gBAChDA;AAAA,gBACAA;AAAA,gBACA,EAAE,QAAQA,MAAK,SAAS,CAAC,EAAE;AAAA,gBAC3BA,MAAK;AAAA,cACN;AAAA,YACD;AAEA,gBAAI,OAAO,qBAAqB,YAAY,CAACA,MAAK,UAAU,eAAe;AAC1E,kBAAI,KAAK,gBAAgB;AAAA,YAC1B,OACK;AACJ,kBACE,MAAM,EACN,OAAO,gBAAgB;AAAA,YAC1B;AAEA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,cAAc,SAAS,SAAS;AAM/B,gBAAI,mBAAmBL,MAAK,KAAK,UAAU,gBAAgB;AAC1D,wBAAU,QAAQ,MAAM,IAAI;AAAA,YAC7B;AAEA,iBAAK,YAAY;AAEjB,iBAAK,SAAS;AAAA,cACb,MAAM;AAAA,cACN;AAAA,YACD,CAAC;AAED,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,gBAAgB,WAAW;AAC1B,kBAAM,IAAI,MAAM,sEAAsE;AAAA,UACvF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,YAAY,WAAW;AAEtB,gBAAIK,QAAO,MACV,UAAUA,MAAK,UACf,eAAeA,MAAK,SAAS,GAAG,MAAM;AAKvC,gBAAI,cAAc;AAEjB,kBAAI,UAAUA,MAAK,SAAS,OAAO,EAAE,KAAK,MAAM;AAEhD,wBAAUL,GAAE,kBAAiB,UAAS,IAAI;AAAA,YAC3C;AAEA,gBAAI,MAAM,QAAQ,CAAC,EAAE,sBAAsB,GAC1C,YAAYA,GAAE,IAAI,OAAO,QAAQ,GACjC,UAAUA,GAAE,IAAI,MAAM,GACtB,UAAU,SAEV,MAAM;AAAA;AAAA,cAEL,WAAW;AAAA,gBACV,UAAU;AAAA,gBACV,QAAQ;AAAA,cACT;AAAA,cACA,UAAU;AAAA,gBACT,MAAM;AAAA,kBACL,QAAQ,UAAU,OAAO;AAAA,kBACzB,OAAO,UAAU,MAAM;AAAA,gBACxB;AAAA,cACD;AAAA,cACA,QAAQ;AAAA,gBACP,QAAQ;AAAA;AAAA,kBAEP,MAAM,IAAI,OAAO,WAAW,IAAI,OAAO,SAAS,gBAAgB;AAAA,kBAChE,KAAK,IAAI,OAAO,WAAW,IAAI,OAAO,SAAS,gBAAgB;AAAA,gBAChE;AAAA,gBACA,MAAM;AAAA,kBACL,QAAQ,QAAQ,OAAO;AAAA,kBACvB,OAAO,QAAQ,MAAM;AAAA,gBACtB;AAAA,cACD;AAAA,cACA,QAAQ;AAAA;AAAA;AAAA,gBAGP,cAAc;AAAA;AAAA,gBAEd,QAAQ,CAAC;AAAA,gBACT,MAAM;AAAA,kBACL,QAAQ,IAAI,SAAS,IAAI;AAAA,kBACzB,OAAO,IAAI,QAAQ,IAAI;AAAA,gBACxB;AAAA,gBACA,aAAa,eAAe,QAAQ,CAAC,IAAI;AAAA;AAAA,gBAEzC,cAAc;AAAA,kBACb,QAAQ,IAAI;AAAA,kBACZ,MAAM,IAAI;AAAA,kBACV,OAAO,IAAI;AAAA,kBACX,KAAK,IAAI;AAAA,gBACV;AAAA,cACD;AAAA,YACD,GACA,WAAW;AAIZ,gBAAI,cAAc;AAEjB,kBAAI,QAAQK,MAAK,SAAS,KAAK,OAAO,GACrC,SAASA,MAAK,SAAS,KAAK,QAAQ;AAErC,kBAAI,QAAQ;AAEX,yBAAS,OAAO,MAAM,GAAG;AAEzB,gBAAAL,GAAE,IAAI,QAAQ,SAAS,KAAKO,IAAG;AAC9B,yBAAOA,EAAC,IAAI,SAAS,GAAG;AAAA,gBACzB,CAAC;AAAA,cACF;AAGA,kBAAI,SAAS,WAAW;AAEvB,wBAAO,OAAO;AAAA,kBAEb,KAAK;AAEJ,wBAAI,mBAAmB,OAAO,CAAC,GAC9B,kBAAkB,OAAO,CAAC,GAC1B,eAAe,OAAO,CAAC,GACvB,gBAAgB,kBAAkB,cAClC,iBAAiB,mBAAmB;AAErC,wBAAI,OAAO,KAAK,SAAS,eAAe;AACxC,wBAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK;AAExC,wBAAI,OAAO,aAAa,QAAQ;AAChC,wBAAI,OAAO,aAAa,OAAO;AAE/B;AAAA,kBAED,KAAK;AAEJ,wBAAI,WAAW,OAAO,CAAC,GACtB,UAAU,OAAO,CAAC,GAClB,YAAY,OAAO,CAAC,GACpB,aAAa,OAAO,CAAC;AAEtB,wBAAI,OAAO,KAAK,SAAS,aAAa;AACtC,wBAAI,OAAO,KAAK,QAAQ,YAAY;AAEpC,wBAAI,OAAO,aAAa,QAAQ;AAChC,wBAAI,OAAO,aAAa,OAAO;AAE/B;AAAA,kBAED,KAAK;AAEJ,wBAAI,gBAAgB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB;AAElB,6BAASA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAEvC,0BAAI,aAAa,OAAOA,EAAC;AAEzB,0BAAI,kBAAkB,QAAQ;AAE7B,4BAAI,aAAa,eAAe;AAE/B,0CAAgB;AAEhB,8BAAIA,OAAM,GAAG;AACZ,4CAAgB;AAAA,0BACjB;AAAA,wBACD;AAEA,4BAAI,aAAa,eAAe;AAC/B,0CAAgB;AAAA,wBACjB;AAEA,yCAAiB;AAAA,sBAClB,OACK;AACJ,4BAAI,aAAa,eAAe;AAE/B,0CAAgB;AAEhB,8BAAIA,MAAK,GAAG;AACX,4CAAgB;AAAA,0BACjB;AAAA,wBACD;AAEA,4BAAI,aAAa,eAAe;AAC/B,0CAAgB;AAAA,wBACjB;AAEA,yCAAiB;AAAA,sBAClB;AAAA,oBACD;AAEA,wBAAI,OAAO,KAAK,SAAS,gBAAgB;AACzC,wBAAI,OAAO,KAAK,QAAQ,gBAAgB;AAExC,wBAAI,OAAO,aAAa,QAAQ;AAChC,wBAAI,OAAO,aAAa,OAAO;AAE/B;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAGA,gBAAI,OAAO,SAASQ,IAAG;AACtB,kBAAI,OAAO,KAAK,SAASA,GAAE,QAC1B,IAAI,OAAO,aAAa,OAAOA,GAAE,MACjC,IAAI,OAAO,aAAa,MAAMA,GAAE,KAChC,IAAI,OAAO,KAAK,QAAQA,GAAE;AAAA,YAC5B;AAEA,YAAAV,MAAK,SAAS;AAAA,cACb,MAAM;AAAA,cACN;AAAA,cACA,UAAU;AAAA,gBACT,QAAQ,IAAI,OAAO,KAAK;AAAA,gBACxB,MAAM,IAAI,OAAO,aAAa;AAAA,gBAC9B,KAAK,IAAI,OAAO,aAAa;AAAA,gBAC7B,OAAO,IAAI,OAAO,KAAK;AAAA,cACxB;AAAA,YACD,CAAC;AAID,gBAAI,OAAO,aAAa,QAAQ,IAAI,OAAO,aAAa,OAAO,IAAI,OAAO,KAAK;AAC/E,gBAAI,OAAO,aAAa,SAAS,IAAI,OAAO,aAAa,MAAM,IAAI,OAAO,KAAK;AAE/E,gBAAI,OAAO,OAAO,OAAO,IAAI,OAAO,aAAa,OAAO,IAAI,OAAO,OAAO;AAC1E,gBAAI,OAAO,OAAO,MAAM,IAAI,OAAO,aAAa,MAAM,IAAI,OAAO,OAAO;AACxE,gBAAI,OAAO,OAAO,SAAS,IAAI,OAAO,OAAO,MAAM,IAAI,OAAO,KAAK;AACnE,gBAAI,OAAO,OAAO,QAAQ,IAAI,OAAO,OAAO,OAAO,IAAI,OAAO,KAAK;AAGnE,gBAAI,UAAU,WAAW;AAAA,cACxB,QAAQ;AAAA,gBACP,QAAQ,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,OAAO;AAAA,gBACrD,OAAO,IAAI,SAAS,KAAK;AAAA,cAC1B;AAAA,cACA,MAAM;AAAA,gBACL,QAAQ,IAAI,SAAS,KAAK;AAAA,gBAC1B,OAAO,IAAI,OAAO,OAAO;AAAA,cAC1B;AAAA,cACA,OAAO;AAAA,gBACN,QAAQ,IAAI,SAAS,KAAK;AAAA,gBAC1B,OAAO,IAAI,SAAS,KAAK,QAAQ,IAAI,OAAO,OAAO;AAAA,cACpD;AAAA,cACA,KAAK;AAAA,gBACJ,QAAQ,IAAI,OAAO,OAAO;AAAA,gBAC1B,OAAO,IAAI,SAAS,KAAK;AAAA,cAC1B;AAAA,YACD;AAIA,gBAAI,UAAU,SAAS;AAAA,cACtB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKP,QAAQ,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,KAAK,IAAI,IAAI,OAAO,aAAa,QAAQ,CAAC,GAAG,CAAC;AAAA,gBACxF,OAAO,IAAI,OAAO,KAAK;AAAA,cACxB;AAAA,cACA,MAAM;AAAA,gBACL,QAAQ,IAAI,OAAO,KAAK;AAAA,gBACxB,OAAO,KAAK,IAAI,IAAI,OAAO,aAAa,MAAM,CAAC;AAAA,cAChD;AAAA,cACA,OAAO;AAAA,gBACN,QAAQ,IAAI,OAAO,KAAK;AAAA,gBACxB,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,KAAK,IAAI,IAAI,OAAO,aAAa,OAAO,CAAC,GAAG,CAAC;AAAA,cACtF;AAAA,cACA,KAAK;AAAA,gBACJ,QAAQ,KAAK,IAAI,IAAI,OAAO,aAAa,KAAK,CAAC;AAAA,gBAC/C,OAAO,IAAI,OAAO,KAAK;AAAA,cACxB;AAAA,YACD;AAEA,mBAAO,QAAQ,CAAC,EAAE,QAAQ,YAAY,KAAK,QAAQ;AAElD,kBAAI,QAAQ,IAAI,UAAU,KAAK,SAAS;AACvC,oBAAI,OAAO,eAAe;AAC1B;AAAA,cACD;AAEA,wBAAU,QAAQ,OAAO;AAAA,YAC1B;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,iBAAiB,WAAW;AAE3B,gBAAI,OAAO,KAAK,UAAU,qBAAqB,UAAU;AACxD,mBAAK,UAAU,oBAAoB,CAAC,KAAK,UAAU,mBAAmB,KAAK,UAAU,iBAAiB;AAAA,YACvG;AAEA,gBAAI,OAAO,KAAK,UAAU,SAAS,UAAU;AAC5C,mBAAK,UAAU,QAAQ,CAAC,KAAK,UAAU,OAAO,KAAK,UAAU,KAAK;AAAA,YACnE;AAEA,gBAAI,OAAO,KAAK,UAAU,cAAc,UAAU;AACjD,mBAAK,UAAU,aAAa,CAAC,KAAK,UAAU,YAAY,KAAK,UAAU,UAAU;AAAA,YAClF;AAEA,gBAAI,OAAO,KAAK,UAAU,SAAS,UAAU;AAC5C,mBAAK,UAAU,QAAQ,CAAC,KAAK,UAAU,KAAK;AAAA,YAC7C;AAGA,gBAAI,KAAK,UAAU,WAAW,MAAM;AACnC,mBAAK,UAAU,SAASL,GAAE,IAAI,OAAO,SAAS,IAAI;AAAA,YACnD,WACS,OAAO,KAAK,UAAU,UAAU,UAAU;AAClD,mBAAK,UAAU,SAASA,GAAE,KAAK,UAAU,MAAM;AAAA,YAChD;AAEA,gBAAI,KAAK,UAAU,WAAW,SAAS;AAEtC,mBAAK,UAAU,cAAc;AAAA,gBAC5B,YAAY;AAAA,gBACZ,YAAY;AAAA,cACb;AAEA,mBAAK,UAAU,eAAe;AAAA,gBAC7B,YAAY;AAAA,gBACZ,aAAa;AAAA,gBACb,YAAY;AAAA,cACb;AAAA,YACD,WACS,KAAK,UAAU,WAAW,SAAS;AAE3C,mBAAK,UAAU,cAAc;AAAA,gBAC5B,OAAO;AAAA,gBACP,KAAK;AAAA,cACN;AAEA,mBAAK,UAAU,eAAe;AAAA,gBAC7B,OAAO;AAAA,gBACP,KAAK;AAAA,cACN;AAAA,YACD;AAGA,iBAAK,SAAS,SAAS;AAEvB,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,aAAa,WAAW;AAEvB,gBAAIK,QAAO;AAGX,gBAAIA,MAAK,UAAU,iBAAiB;AAGnC,cAAAA,MAAK,qBAAqB,YAAY,WAAW;AAEhD,oBAAIW,QAAM,oBAAI,KAAK,GAAE,QAAQ;AAG7B,gBAAAX,MAAK,gBAAgBL,GAAE,KAAKK,MAAK,eAAe,SAAS,OAAOE,IAAG;AAElE,yBAAOS,OAAM,MAAM,OAAO;AAAA,gBAC3B,CAAC;AAGD,oBAAI,CAAC,aAAaX,MAAK,QAAQ,GAAG;AAEjC,kBAAAA,MAAK,MAAM,WAAU;AACpB,oBAAAA,MAAK,QAAQ;AAAA,kBACd,CAAC;AAAA,gBACF;AAAA,cACD,GAAG,GAAK;AAAA,YACT,OACK;AACJ,4BAAcA,MAAK,kBAAkB;AAAA,YACtC;AAEA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcA,iBAAiB,WAAW;AAE3B,gBAAIA,QAAO;AAGX,YAAAA,MAAK,SAAS,IAAI,MAAKA,MAAK,cAAa,cAAc;AAKvD,gBAAI,IAAI,oBAAoB;AAE3B,cAAAA,MAAK,SAAS;AAAA,gBACb,gBAAeA,MAAK,cAAa,2BACpBA,MAAK,cAAa,8BACfA,MAAK,cAAa;AAAA,gBAClC,SAAS,OAAM;AACd,kBAAAA,MAAK,kBAAkB,KAAK;AAAA,gBAC7B;AAAA,cACD;AAAA,YACD;AAGA,gBAAKA,MAAK,UAAU,YAAY,SAC3BA,MAAK,UAAU,YAAY,OAAO,IAAI,oBACzC;AAED,kBAAI,aAAa;AACjB,kBAAIA,MAAK,UAAU,YAAY,OAAO;AACrC,8BAAc,WAAUA,MAAK,cAAa;AAAA,cAC3C;AACA,kBAAIA,MAAK,UAAU,YAAY,OAAO,IAAI,oBAAoB;AAC7D,8BAAc,cAAaA,MAAK,cAAa;AAAA,cAC9C;AAEA,cAAAA,MAAK,SAAS,GAAG,YAAY,SAAS,OAAO;AAC5C,oBAAIA,MAAK,wBAAwB,KAAK,GAAG;AACxC,kBAAAA,MAAK,MAAM,KAAK;AAAA,gBACjB;AAAA,cACD,CAAC;AAAA,YACF;AAGA,gBAAKA,MAAK,UAAU,YAAY,cAC3BA,MAAK,UAAU,YAAY,cAAc,IAAI,oBAChD;AAED,kBAAI,aAAa;AACjB,kBAAIA,MAAK,UAAU,YAAY,YAAY;AAC1C,8BAAc,gBAAeA,MAAK,cAAa;AAAA,cAChD;AACA,kBAAIA,MAAK,UAAU,YAAY,cAAc,IAAI,oBAAoB;AACpE,8BAAc,gBAAeA,MAAK,cAAa;AAAA,cAChD;AAEA,cAAAA,MAAK,SAAS,GAAG,YAAY,SAAS,OAAO;AAC5C,oBAAKA,MAAK,mBAAmB,KAAK,KAC9B,CAACA,MAAK,sBAAsB,KAAK,GACnC;AACD,kBAAAA,MAAK,wBAAwB;AAC7B,kBAAAA,MAAK,aAAa,KAAK;AAAA,gBACxB;AAAA,cACD,CAAC;AAAA,YACF;AAGA,gBAAKA,MAAK,UAAU,aAAa,cAC5BA,MAAK,UAAU,aAAa,cAAc,IAAI,oBACjD;AAED,kBAAI,aAAa;AACjB,kBAAIA,MAAK,UAAU,aAAa,YAAY;AAC3C,8BAAc,gBAAeA,MAAK,cAAa;AAAA,cAChD;AACA,kBAAIA,MAAK,UAAU,aAAa,cAAc,IAAI,oBAAoB;AACrE,8BAAc,cAAaA,MAAK,cAAa,8BAA6BA,MAAK,cAAa;AAAA,cAC7F;AAEA,cAAAA,MAAK,SAAS,GAAG,YAAY,SAAS,OAAO;AAE5C,oBAAIA,MAAK,wBAAwB,KAAK,GAAG;AACxC,kBAAAA,MAAK,wBAAwB;AAAA,gBAC9B;AAAA,cACD,CAAC;AAAA,YACF;AAEA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaA,kBAAkB,WAAW;AAE5B,gBAAIA,QAAO,MACVC,KAAID,MAAK,UAAU,cAAc,SAAS;AAI3C,YAAAA,MAAK,UACH,KAAK,MAAMA,MAAK,WAAW,EAC3B,IAAI;AAAA;AAAA,cAEJ,kBAAkBC;AAAA,cAClB,QAAQD,MAAK,UAAU;AAAA,YACxB,CAAC;AAIF,YAAAL,GAAE,KAAKK,MAAK,kBAAkB,SAASE,IAAG,OAAO;AAChD,cAAAF,MAAK,UAAU,YAAY,KAAK;AAAA,YACjC,CAAC;AACD,YAAAL,GAAE,KAAKK,MAAK,UAAU,OAAO,SAASE,IAAG,OAAO;AAC/C,cAAAF,MAAK,UAAU,SAAS,KAAK;AAAA,YAC9B,CAAC;AAED,YAAAA,MAAK,mBAAmBL,GAAE,MAAM,CAAC,GAAGK,MAAK,UAAU,KAAK;AAExD,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,iBAAiB,SAAS,OAAO;AAEhC,gBAAIA,QAAO;AAEX,gBAAIA,MAAK,UAAU,aAAa,QAAQ;AACvC,cAAAA,MAAK,OAAO,KAAK;AAAA,YAClB,OACK;AAIJ,kBAAI,aAAaA,MAAK,QAAQ,KAAK,aAAaA,MAAK,SAAS,GAAG;AAEhE,oBAAI,MAAM;AAGV,oBAAI,MAAM,WAAW,IAAI,OAAO,UAAU;AAIzC,sBAAI,CAACA,MAAK,WAAW,OAAO,cAAc;AAKzC,wBAAIA,MAAK,UAAU,oBAAoB;AACtC,sBAAAA,MAAK,WAAW,KAAK;AAAA,oBACtB;AAAA,kBACD;AAAA,gBACD,OAMK;AAEJ,wBAAMA,MAAK,WAAW;AAEtB,sBAAI,YAAY;AAIhB,sBAAIA,MAAK,SAAS,IAAI,UAAU,KAAK,SAAS;AAE7C,oBAAAA,MAAK,iBAAiB,KAAK,SAASE,IAAG,IAAI;AAE1C,0BAAI,MAAMP,GAAE,EAAE,GACb,YAAY,IAAI,IAAI,YAAY,GAChC,YAAY,IAAI,IAAI,YAAY;AAEjC,0BAAI,aAAa,aAAa,aAAa,WAAW;AAErD,4BAAI,MAAM,GAAG,sBAAsB;AAEnC,4BAAI,aAAa,WAAW;AAE3B,8BAAK,IAAI,OAAO,aAAa,OAAO,IAAI,QACpC,IAAI,OAAO,aAAa,QAAQ,IAAI,OACtC;AACD,wCAAY;AACZ,mCAAO;AAAA,0BACR;AAAA,wBACD;AAEA,4BAAI,aAAa,WAAW;AAE3B,8BAAK,IAAI,OAAO,aAAa,MAAM,IAAI,OACnC,IAAI,OAAO,aAAa,SAAS,IAAI,QACvC;AACD,wCAAY;AACZ,mCAAO;AAAA,0BACR;AAAA,wBACD;AAAA,sBACD;AAGA,0BAAI,IAAI,IAAI,UAAU,KAAK,SAAS;AACnC,+BAAO;AAAA,sBACR;AAAA,oBACD,CAAC;AAAA,kBACF;AAEA,sBAAI,WAAW;AACd,oBAAAK,MAAK,UAAU,IAAI,cAAc,QAAQ;AAAA,kBAC1C,OACK;AAEJ,oBAAAA,MAAK,UAAU,IAAI,cAAc,SAAS;AAG1C,wBAAIA,MAAK,UAAU,oBAAoB;AACtC,sBAAAA,MAAK,WAAW,KAAK;AAAA,oBACtB,OAEK;AAMJ,0BAAI,aAAa,IAAI,OAAO,OAAO,OAAOA,MAAK,WAAW,OAAO,OAAO,MACvE,YAAY,IAAI,OAAO,OAAO,MAAMA,MAAK,WAAW,OAAO,OAAO;AAGnE,sBAAAA,MAAK,UAAU,IAAI;AAAA,wBAClB,MAAMA,MAAK,eAAe,MAAM,OAAO;AAAA,wBACvC,KAAKA,MAAK,eAAe,MAAM,MAAM;AAAA,sBACtC,CAAC;AAAA,oBACF;AAAA,kBACD;AAAA,gBACD;AAEA,gBAAAA,MAAK,SAAS;AAAA,kBACb,MAAM;AAAA,kBACN;AAAA,kBACA;AAAA,gBACD,CAAC;AAAA,cACF;AAAA,YACD;AAEA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,YAAY,SAAS,OAAO;AAE3B,iBAAK,UAAU;AAEf,iBAAK,SAAS;AAAA,cACb,MAAM;AAAA,cACN;AAAA,YACD,CAAC;AAED,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,iBAAiB,WAAW;AAI3B,yBAAa,KAAK,WAAW,IAAI;AACjC,iBAAK,WAAW,OAAO;AAIvB,YAAAL,GAAE,KAAK,KAAK,WAAW,OAAO,SAASO,IAAG,SAAS;AAClD,2BAAa,OAAO;AAAA,YACrB,CAAC;AACD,iBAAK,WAAW,QAAQ,CAAC;AAEzB,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,gBAAgB,WAAW;AAE1B,gBAAIF,QAAO,MACV,WAAWA,MAAK,UAAU,KAAK,sBAAsB;AAGtD,gBAAIA,MAAK,UAAU,cAAc;AAChC,cAAAA,MAAK,eAAe,SAAS,CAAC,EAAE,sBAAsB;AAAA,YACvD;AAEA,YAAAA,MAAK,YAAY,YAAY,WAAW;AAKvC,kBAAI,CAAC,aAAaA,MAAK,QAAQ,KAAK,CAAC,aAAaA,MAAK,SAAS,GAAG;AAClE,gBAAAA,MAAK,OAAO;AAAA,cACb,OAEK;AAIJ,oBAAIA,MAAK,UAAU,aAAa;AAE/B,sBAAIY,KAAIZ,MAAK,WAAW,GACvB,YAAY;AAGb,sBAAI,SAASY,GAAE,OAAO,MAAMZ,MAAK,WAAW,OAAO,IAAI,GAAG;AAIzD,wBAAIA,MAAK,WAAW,OAAO,cAAc;AACxC,0BAAI,SAASY,GAAE,OAAO,cAAcZ,MAAK,WAAW,OAAO,YAAY,GAAG;AACzE,oCAAY;AAAA,sBACb;AAAA,oBACD,OAEK;AACJ,0BAAI,SAASY,GAAE,OAAO,QAAQZ,MAAK,WAAW,OAAO,MAAM,GAAG;AAC7D,oCAAY;AAAA,sBACb;AAAA,oBACD;AAAA,kBACD;AAEA,sBAAI,CAAC,WAAW;AAIf,wBAAIA,MAAK,UAAU,aAAa,YAAY;AAC3C,sBAAAA,MAAK,OAAO;AAAA,oBACb,OACK;AACJ,sBAAAA,MAAK,WAAW;AAAA,oBACjB;AAAA,kBACD;AAAA,gBACD;AAEA,oBAAIA,MAAK,UAAU,cAAc;AAEhC,sBAAI,aAAa,SAAS,CAAC,EAAE,sBAAsB;AAEnD,sBAAK,WAAW,WAAWA,MAAK,aAAa,UACzC,WAAW,UAAUA,MAAK,aAAa,OACzC;AACD,oBAAAA,MAAK,WAAW;AAChB,oBAAAA,MAAK,eAAe;AAAA,kBACrB;AAAA,gBACD;AAAA,cACD;AAAA,YACD,GAAGA,MAAK,UAAU,eAAe;AAEjC,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWA,QAAQ,SAAS,OAAOa,WAAU,OAAO;AAExC,gBAAIb,QAAO,MACV,KAAK;AAEN,YAAAA,MAAK,SAAS;AAAA,cACb,MAAM;AAAA,cACN;AAAA,cACA,MAAM,WAAW;AAChB,qBAAK;AAAA,cACN;AAAA,YACD,CAAC;AAGD,gBAAI,MAAM,OAAO;AAGhB,kBAAIa;AAAU,gBAAAb,MAAK,YAAY,MAAM,KAAKa,SAAQ;AAClD,cAAAb,MAAK,YAAY,OAAO,CAAC;AAGzB,cAAAA,MAAK,gBAAgB;AAErB,kBAAI,kBAAkB,WAAW;AAGhC,gBAAAL,GAAE,KAAKK,MAAK,YAAY,OAAO,SAASE,IAAEY,IAAG;AAC5C,kBAAAA,GAAE,KAAKd,OAAMA,OAAM;AAAA,oBAClB;AAAA,oBACA,QAAQA,MAAK,SAAS,CAAC;AAAA,kBACxB,CAAC;AAAA,gBACF,CAAC;AAED,gBAAAA,MAAK,YAAY,QAAQ,CAAC;AAAA,cAC3B;AAEA,kBAAIA,MAAK,WAAW,UAAU;AAE7B,oBAAI,YAAY,MACfM,KAAI,oBAAI,KAAK,GACbK,OAAML,GAAE,QAAQ,GAChB,iBAAiBK,OAAMX,MAAK,UAAU,kBAAkB,CAAC;AAe1D,oBAAIA,MAAK,WAAW,gBAAgB;AAEnC,sBAAK,iBAAiBA,MAAK,iBAGvBA,MAAK,UAAU,kBAAkB,CAAC,IAAI,GACxC;AACD,gCAAY;AAAA,kBACb;AAAA,gBACD;AAEA,oBAAI,WAAW;AAEd,kBAAAA,MAAK,gBAAgB;AAErB,sBAAIA,MAAK,WAAW,gBAAgB;AACnC,oBAAAA,MAAK,WAAW,cAAc;AAAA,kBAC/B;AAEA,sBAAI,SAAS,WAAW;AAGvB,kCAAcA,MAAK,SAAS;AAU5B,oBAAAA,MAAK,SAAS;AAAA,sBACb,MAAM;AAAA,sBACN;AAAA,oBACD,CAAC;AAID,oBAAAA,MAAK,UACH,IAAI,MAAKA,MAAK,cAAa,eAAe,EAC1C,YAAY,mBAAmB;AAGjC,oBAAAL,GAAE,IAAI,MAAM,EAAE,IAAI,MAAKK,MAAK,cAAa,eAAe;AAGxD,oBAAAA,MAAK,iBAAiB,KAAK,SAASE,IAAG,IAAI;AAC1C,sBAAAP,GAAE,EAAE,EAAE,IAAI,YAAWK,MAAK,cAAa,eAAe;AAAA,oBACvD,CAAC;AAED,oBAAAA,MAAK,mBAAmB;AAExB,oBAAAL,GAAE,IAAI,OAAO,SAAS,IAAI,EAAE,IAAI,MAAKK,MAAK,cAAa,eAAe;AAEtE,oBAAAA,MAAK,SAAS,IAAI,MAAKA,MAAK,cAAa,eAAe;AAExD,oBAAAA,MAAK,KAAK,aAAa;AAIvB,oBAAAA,MAAK,WAAW,QAAQ;AAGxB,oBAAAA,MAAK,SAAS;AAAA,sBACb,MAAM;AAAA,sBACN;AAAA,oBACD,CAAC;AAGD,wBAAIA,MAAK,UAAU,eAAe;AACjC,sBAAAA,MAAK,UAAU,cAAc,KAAKA,OAAMA,OAAM;AAAA,wBAC7C;AAAA,wBACA,QAAQA,MAAK,SAAS,CAAC;AAAA,sBACxB,CAAC;AAAA,oBACF;AAGA,oCAAgB;AAAA,kBACjB;AAEA,sBAAI,IAAI,gBAAgB;AAEvB,oBAAAA,MAAK,UAAU,IAAI;AAAA,sBAClB,2BAA2BA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,sBACjE,0BAA0BA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,sBAChE,yBAAyBA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,sBAC/D,8BAA8BA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,sBACpE,sBAAsBA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,sBAC5D,uBAAuBA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,oBAC9D,CAAC;AAED,oBAAAA,MAAK,UAEH,WAAW,EACX,YAAY,kBAAkB,EAE9B,SAAS,mBAAmB;AAE9B,wBAAIA,MAAK,UAAU,kBAAkB,CAAC,IAAI,GAAG;AAC5C,sBAAAA,MAAK,UAAU,MAAMA,MAAK,UAAU,kBAAkB,CAAC,CAAC;AAAA,oBACzD;AAEA,oBAAAA,MAAK,UAAU,MAAM,MAAM;AAAA,kBAC5B,OACK;AAEJ,oBAAAA,MAAK,UACH,KAAK,EACL,QAAQA,MAAK,UAAU,kBAAkB,CAAC,GAAG,MAAM;AAAA,kBACtD;AAAA,gBACD;AAAA,cACD,OAGK;AACJ,gCAAgB;AAAA,cACjB;AAAA,YACD;AAEA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,MAAM,WAAW;AAChB,iBAAK,kBAAkB,IAAI,MAAM,KAAK,mBAAmB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC/F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,KAAK,WAAW;AACf,iBAAK,kBAAkB,GAAG,MAAM,KAAK,mBAAmB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC9F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,MAAM,WAAW;AAChB,iBAAK,kBAAkB,IAAI,MAAM,KAAK,mBAAmB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAC/F,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,OAAO,SAAS,OAAOa,WAAU;AAEhC,gBAAIb,QAAO;AAIX,gBAAI,CAACA,MAAK,cAAc;AAGvB,kBAAK,aAAaA,MAAK,QAAQ,KAE3BA,MAAK,WACP;AAED,oBAAI,KAAK;AAIT,oBAAIA,MAAK,WAAW,UAAU;AAI7B,kBAAAA,MAAK,SAAS;AAAA,oBACb,MAAM;AAAA,oBACN;AAAA,oBACA,MAAM,WAAW;AAChB,2BAAK;AAAA,oBACN;AAAA,kBACD,CAAC;AAED,sBAAI,MAAMA,MAAK,UAAU,gBAAgB;AAGxC,yBAAKA,MAAK,UAAU,eAAe,KAAKA,OAAMA,OAAM;AAAA,sBACnD;AAAA,sBACA,QAAQA,MAAK,SAAS,CAAC;AAAA,oBACxB,CAAC;AAAA,kBACF;AAAA,gBACD;AAEA,oBAAI,OAAO,OAAO;AAGjB,sBAAIA,MAAK,cAAc,MAAM;AAG5B,wBAAIa,WAAU;AACb,sBAAAb,MAAK,YAAY,KAAK,KAAKa,SAAQ;AAAA,oBACpC;AACA,oBAAAb,MAAK,YAAY,QAAQ,CAAC;AAG1B,oBAAAA,MAAK,gBAAgB;AAErB,wBAAI,WACH,SAAS,WAAW;AAEnB,0BAAIA,MAAK,WAAW,UAAU;AAC7B,wBAAAA,MAAK,WAAW,QAAQ;AAAA,sBACzB;AAGA,sBAAAL,GAAE,KAAKK,MAAK,YAAY,MAAM,SAASE,IAAEY,IAAG;AAC3C,wBAAAA,GAAE,KAAKd,OAAMA,OAAM;AAAA,0BAClB,QAAQA,MAAK,SAAS,CAAC;AAAA,0BACvB,SAASA,MAAK,UAAU,CAAC;AAAA,wBAC1B,CAAC;AAAA,sBACF,CAAC;AAED,sBAAAA,MAAK,YAAY,OAAO,CAAC;AAAA,oBAC1B;AAGD,wBAAIA,MAAK,YAAY,UAAU;AAG9B,kCAAY;AAGZ,0BAAIA,MAAK,YAAY,gBAAgB;AAEpC,wBAAAA,MAAK,WAAW,WAAW;AAE3B,4BAAI,IAAI,gBAAgB;AAEvB,0BAAAA,MAAK,UACH,WAAW,EACX,YAAY,mBAAmB,EAC/B,SAAS,kBAAkB;AAE7B,8BAAIA,MAAK,UAAU,kBAAkB,CAAC,IAAI,GAAG;AAC5C,4BAAAA,MAAK,UAAU,MAAMA,MAAK,UAAU,kBAAkB,CAAC,CAAC;AAAA,0BACzD;AAEA,0BAAAA,MAAK,UAAU,MAAM,MAAM;AAAA,wBAC5B,OACK;AAGJ,0BAAAA,MAAK,UACH,KAAK,EACL,OAAO,MAAM;AAAA,wBAChB;AAAA,sBACD,WAGSA,MAAK,WAAW,UAAU;AAClC,+BAAO;AAAA,sBACR;AAAA,oBACD,OAEK;AAGJ,sBAAAA,MAAK,WAAW,WAAW;AAI3B,kCAAYA,MAAK,UAAU,kBAAkB,CAAC;AAG9C,sBAAAA,MAAK,gBAAgB;AAGrB,sBAAAA,MAAK,WAAW,OAAO,IAAI;AAK3B,0BAAI,IAAI,gBAAgB;AAQvB,wBAAAA,MAAK,UACH,SAAS,iBAAgBA,MAAK,UAAU,SAAS,EACjD,SAAS,qBAAqB,EAC9B,IAAI;AAAA,0BACJ,2BAA2BA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,0BACjE,0BAA0BA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,0BAChE,yBAAyBA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,0BAC/D,8BAA8BA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,0BACpE,sBAAsBA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,0BAC5D,uBAAuBA,MAAK,UAAU,kBAAkB,CAAC,IAAI;AAAA,wBAC9D,CAAC;AAEF;AAAA,0BACC,WAAW;AAGV,gCAAIA,MAAK,WAAW,UAAU;AAE7B,8BAAAA,MAAK,UACH,SAAS,kBAAkB,EAC3B,YAAY,qBAAqB;AAEnC,kCAAIA,MAAK,UAAU,kBAAkB,CAAC,IAAI,GAAG;AAC5C,gCAAAA,MAAK,UAAU,MAAMA,MAAK,UAAU,kBAAkB,CAAC,CAAC;AAAA,8BACzD;AAEA,8BAAAA,MAAK,UAAU,MAAM,MAAM;AAAA,4BAC5B;AAAA,0BACD;AAAA,0BACA;AAAA,wBACD;AAAA,sBACD,OACK;AAGJ,wBAAAA,MAAK,UACH,IAAI,WAAW,MAAM,EACrB,OAAOA,MAAK,UAAU,kBAAkB,CAAC,GAAG,MAAM;AAAA,sBACrD;AAGA,sBAAAA,MAAK,eAAe;AAOpB,sBAAAL,GAAE,IAAI,MAAM,EAEV,GAAG,YAAWK,MAAK,cAAa,iBAAiB,SAASQ,IAAG;AAE7D,4BAAI,MAAMb,GAAE,SAAS,aAAa;AAKlC,4BAAM,CAAC,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,GAAG,UAAU,KACxC,CAACA,GAAE,SAASK,MAAK,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GACvC;AACD,0BAAAA,MAAK,WAAWQ,EAAC;AAAA,wBAClB;AAAA,sBACD,CAAC,EAEA,GAAG,YAAWR,MAAK,cAAa,iBAAiB,SAASQ,IAAG;AAC7D,wBAAAR,MAAK,gBAAgBQ,EAAC;AAAA,sBACvB,CAAC;AAEF,sBAAAR,MAAK,mBAAmBA,MAAK,SAAS,QAAQ;AAI9C,sBAAAA,MAAK,iBAAiB,KAAK,SAASE,IAAG,QAAQ;AAE9C,wBAAAP,GAAE,MAAM,EAAE,GAAG,YAAWK,MAAK,cAAa,iBAAiB,SAASQ,IAAG;AACtE,0BAAAR,MAAK,gBAAgBQ,EAAC;AAAA,wBACvB,CAAC;AAAA,sBACF,CAAC;AAED,0BAAKR,MAAK,UAAU,aAAa,cAC5BA,MAAK,UAAU,aAAa,cAAc,IAAI,oBACjD;AAMD,wBAAAA,MAAK,IAAI,eAAe,SAASe,QAAO;AAEvC,8BAAIA,OAAM,aAAa;AAEtB,gCAAIA,OAAM,OAAO;AAEhB,wCAAU,WAAW,WAAW;AAE/B,gCAAAf,MAAK,OAAOe,OAAM,KAAK;AAAA,8BACxB,GAAGA,OAAM,KAAK;AAEd,8BAAAf,MAAK,WAAW,MAAM,KAAK,OAAO;AAAA,4BACnC,OACK;AACJ,8BAAAA,MAAK,OAAOe,MAAK;AAAA,4BAClB;AAAA,0BACD,OACK;AACJ,yCAAa,OAAO;AAAA,0BACrB;AAAA,wBACD,CAAC;AAGD,4BAAI,YAAYf,MAAK,UACpB,eAAe,IACf,gBAAgB,IAChB,UAAU;AAGX,4BAAIA,MAAK,UAAU,aAAa;AAC/B,sCAAY,UAAU,IAAIA,MAAK,SAAS;AAAA,wBACzC;AAEA,4BAAIA,MAAK,UAAU,aAAa,YAAY;AAC3C,0CAAgB,gBAAeA,MAAK,cAAa;AACjD,2CAAiB,gBAAeA,MAAK,cAAa;AAAA,wBACnD;AACA,4BAAIA,MAAK,UAAU,aAAa,cAAc,IAAI,oBAAoB;AACrE,0CAAgB,gBAAeA,MAAK,cAAa;AACjD,2CAAiB,cAAaA,MAAK,cAAa,+BAA8BA,MAAK,cAAa;AAAA,wBACjG;AAEA,kCAEE,GAAG,eAAe,SAASe,QAAO;AAIlC,8BAAKf,MAAK,mBAAmBe,MAAK,KAC9B,CAACf,MAAK,sBAAsBe,MAAK,GACnC;AAED,gCAAI,QAASA,OAAM,QAAQ,eAC1Bf,MAAK,UAAU,QACfA,MAAK,UAAU;AAEhB,4BAAAA,MAAK,SAAS;AAAA,8BACb,OAAO,MAAM,CAAC;AAAA,8BACd,aAAa;AAAA,8BACb,OAAOe;AAAA,8BACP,MAAM;AAAA,4BACP,CAAC;AAAA,0BACF;AAAA,wBACD,CAAC,EAGA,GAAG,cAAc,SAASA,QAAO;AAGjC,8BAAKf,MAAK,mBAAmBe,MAAK,KAC9B,CAACf,MAAK,sBAAsBe,MAAK,GACnC;AACD,4BAAAf,MAAK,SAAS;AAAA,8BACb,aAAa;AAAA,8BACb,OAAOe;AAAA,8BACP,MAAM;AAAA,4BACP,CAAC;AAAA,0BACF;AAAA,wBACD,CAAC;AAAA,sBACH;AAIA,0BAAIf,MAAK,UAAU,aAAa,aAAa;AAE5C,wBAAAA,MAAK,SAAS,GAAG,WAAUA,MAAK,cAAc,iBAAiB,SAASe,QAAO;AAI9E,8BAAK,CAACf,MAAK,mBAAmBe,MAAK,KAC/B,CAACf,MAAK,sBAAsBe,MAAK,GACnC;AACD,4BAAAf,MAAK,OAAOe,MAAK;AAAA,0BAClB;AAAA,wBACD,CAAC;AAAA,sBACF;AAGA,0BAAKf,MAAK,UAAU,aAAa,SAC5BA,MAAK,UAAU,aAAa,OAAO,IAAI,oBAC1C;AAKD,mCAAW,WAAW;AAErB,8BAAIA,MAAK,WAAW,UAAU;AAE7B,gCAAI,aAAa,IAChB,QAAQL,GAAE,IAAI,OAAO,SAAS,IAAI;AAEnC,gCAAIK,MAAK,UAAU,aAAa,OAAO;AACtC,4CAAc,WAAUA,MAAK,cAAa;AAAA,4BAC3C;AACA,gCAAIA,MAAK,UAAU,aAAa,OAAO,IAAI,oBAAoB;AAC9D,4CAAc,cAAaA,MAAK,cAAa;AAAA,4BAC9C;AAEA,kCAAM,GAAG,YAAY,SAASe,QAAO;AAEpC,kCAAIf,MAAK,wBAAwBe,MAAK,GAAG;AAExC,gCAAAf,MAAK,kBAAkBe,MAAK;AAE5B,oCAAI,CAACf,MAAK,UAAU,eAAe,CAACL,GAAE,SAASK,MAAK,UAAU,CAAC,GAAGe,OAAM,MAAM,GAAG;AAChF,kCAAAf,MAAK,OAAOe,MAAK;AAAA,gCAClB;AAAA,8BACD;AAAA,4BACD,CAAC;AAGD,gCAAIf,MAAK,UAAU,aAAa,OAAO,IAAI,oBAAoB;AAE9D,oCAAM,GAAG,gBAAeA,MAAK,cAAa,iBAAiB,SAASe,QAAO;AAC1E,gCAAAf,MAAK,kBAAkBe,MAAK;AAAA,8BAC7B,CAAC;AAAA,4BACF;AAAA,0BACD;AAAA,wBACD,GAAG,CAAC;AAAA,sBACL;AAEA,sBAAAf,MAAK,SAAS,OAAO;AAGrB,0BAAIA,MAAK,UAAU,eAAe;AACjC,wBAAAA,MAAK,UAAU,cAAc,KAAKA,OAAMA,OAAM;AAAA,0BAC7C,QAAQA,MAAK,SAAS,CAAC;AAAA,0BACvB,SAASA,MAAK,UAAU,CAAC;AAAA,wBAC1B,CAAC;AAAA,sBACF;AAAA,oBACD;AAGA,wBAAIA,MAAK,UAAU,QAAQ,GAAG;AAE7B,0BAAI,UAAU,WAAW,WAAW;AACnC,wBAAAA,MAAK,OAAO;AAAA,sBACb,GAAGA,MAAK,UAAU,QAAQ,SAAS;AAEnC,sBAAAA,MAAK,WAAW,MAAM,KAAK,OAAO;AAAA,oBACnC;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,cAAc,SAAS,OAAO;AAE7B,gBAAIA,QAAO,MACV,KAAK;AAEN,gBAAIA,MAAK,WAAW,YAAYA,MAAK,WAAW,aAAa;AAG5D,kBAAI,CAACA,MAAK,WAAW,MAAM;AAE1B,gBAAAA,MAAK,SAAS;AAAA,kBACb,MAAM;AAAA,kBACN;AAAA,kBACA,MAAM,WAAW;AAChB,yBAAK;AAAA,kBACN;AAAA,gBACD,CAAC;AAED,oBAAI,IAAI;AAEP,sBAAI,QAAS,MAAM,KAAK,QAAQ,OAAO,KAAK,IAC3CA,MAAK,UAAU,aACfA,MAAK,UAAU;AAEhB,sBAAI,MAAM,CAAC,GAAG;AAEb,oBAAAA,MAAK,WAAW,OAAO,WAAW,WAAW;AAE5C,sBAAAA,MAAK,WAAW,OAAO;AAKvB,0BAAIA,MAAK,yBAAyBA,MAAK,wBAAwB,KAAK,GAAG;AAGtE,wBAAAA,MAAK,SAAS,UAAU;AAExB,wBAAAA,MAAK,MAAM,KAAK;AAAA,sBACjB,OACK;AAEJ,wBAAAA,MAAK,SAAS,aAAa;AAAA,sBAC5B;AAAA,oBACD,GAAG,MAAM,CAAC,CAAC;AAAA,kBACZ,OACK;AAEJ,oBAAAA,MAAK,SAAS,UAAU;AAExB,oBAAAA,MAAK,MAAM,KAAK;AAAA,kBACjB;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,iBAAiB,SAASH,aAAYmB,iBAAgB;AAErD,gBAAIhB,QAAO,MACVO,WAAUZ,GAAE,OAAO,MAAM,CAAC,GAAGqB,eAAc;AAI5C,gBAAI,gBAAgBhB,MAAK,UAAUH,WAAU;AAG7C,gBAAI,CAAC,eAAc;AAElB,8BAAgB,CAAC;AAEjB,cAAAF,GAAE,KAAKqB,iBAAgB,SAAS,YAAY,OAAO;AAElD,oBAAIC,KAAIjB,MAAK,UAAU,UAAU;AAEjC,oBAAIiB,OAAM,QAAW;AACpB,gCAAc,UAAU,IAAIA;AAAA,gBAC7B;AAAA,cACD,CAAC;AAAA,YACF;AAMA,YAAAtB,GAAE,KAAKY,UAAS,SAAS,YAAY,OAAO;AAE3C,kBAAI,cAAc,UAAU,MAAM,QAAW;AAE5C,oBAAO,OAAO,SAAS,YAClB,EAAE,iBAAiB,UACnB,SAAS,SAGV,OAAO,cAAc,UAAU,KAAK,YACnC,EAAE,cAAc,UAAU,aAAa,UACvC,cAAc,UAAU,KAAK,OAEhC;AACD,kBAAAZ,GAAE,OAAOY,SAAQ,UAAU,GAAG,cAAc,UAAU,CAAC;AAAA,gBACxD,OACK;AACJ,kBAAAA,SAAQ,UAAU,IAAI,cAAc,UAAU;AAAA,gBAC/C;AAAA,cACD;AAAA,YACD,CAAC;AAED,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,OAAO,SAASV,aAAY;AAE3B,gBAAI,SAASF,GAAE,YAAY,QAAQE,WAAU;AAE7C,gBAAI,QAAQ;AAGX,kBAAI,OAAO,UAAU;AAGpB,gBAAAF,GAAE,YAAY,SAAS,OAAO,UAAU,MAAM,OAAO,IAAI;AAAA,cAC1D;AAAA,YACD,OACK;AACJ,oBAAM,IAAI,MAAM,UAASE,cAAY,yBAAyB;AAAA,YAC/D;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcA,uBAAuB,SAAS,OAAO;AAEtC,gBAAI,aAAa,OAChBc,QAAM,oBAAI,KAAK,GAAE,QAAQ;AAE1B,qBAAST,KAAI,KAAK,cAAc,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAExD,kBAAIM,KAAI,KAAK,cAAcN,EAAC;AAK5B,kBAAIS,OAAMH,GAAE,OAAO,KAAK;AAEvB,oBAAIA,GAAE,WAAW,MAAM,QAAQ;AAC9B,+BAAa;AAAA,gBACd;AAAA,cACD,OACK;AACJ;AAAA,cACD;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,yBAAyB,SAAS,OAAO;AACxC,mBACG,KAAK,mBAAmB,KAAK,KAAK,CAAC,KAAK,aAAa,MAAM,MAAM,KAC/D,CAAC,KAAK,mBAAmB,KAAK,KAAK,CAAC,KAAK,sBAAsB,KAAK;AAAA,UAE1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,oBAAoB,SAAS,OAAM;AAClC,mBAAO,MAAM,KAAK,QAAQ,OAAO,KAAK;AAAA,UACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,mBAAmB,SAAS,OAAO;AAElC,gBAAI,KAAK,mBAAmB,KAAK,GAAG;AACnC,oBAAM,QAAO,oBAAI,KAAK,GAAE,QAAQ;AAChC,mBAAK,cAAc,KAAK,KAAK;AAAA,YAC9B;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcA,cAAc,SAAS,QAAQ;AAE9B,gBAAI,SAAS;AAEb,qBAASN,KAAI,KAAK,cAAc,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAExD,kBAAIM,KAAI,KAAK,cAAcN,EAAC;AAE5B,kBAAIM,GAAE,QAAQ,aAAa;AAC1B,yBAAS;AACT;AAAA,cACD,WAECA,GAAE,QAAQ,gBACP,WAAWA,GAAE,QACf;AACD;AAAA,cACD;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,UAAU,WAAW;AAEpB,gBAAI,OAAO,MAAM,UAAU,MAAM,MAAM,SAAS;AAEhD,gBAAI,OAAO,KAAK,CAAC,KAAK,UAAU;AAC/B,mBAAK,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAAA,YAC3B;AAGA,iBAAK,CAAC,EAAE,WAAW;AACnB,iBAAK,CAAC,EAAE,SAAS,KAAK,WAAW,KAAK,SAAS,CAAC,IAAI;AACpD,iBAAK,CAAC,EAAE,UAAU,KAAK,YAAY,KAAK,UAAU,CAAC,IAAI;AAGvD,iBAAK,kBAAkB,QAAQ,MAAM,KAAK,mBAAmB,IAAI;AACjE,YAAAb,GAAE,YAAY,SAAS,MAAMA,GAAE,aAAa,IAAI;AAChD,iBAAK,iBAAiB,QAAQ,MAAM,KAAK,kBAAkB,IAAI;AAE/D,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,SAAS,SAASE,aAAY;AAE7B,gBAAIG,QAAO;AAGX,gBAAIA,MAAKH,WAAU,GAAG;AAErB,kBAAI,SAASF,GAAE,YAAY,QAAQE,WAAU;AAG7C,kBAAI,OAAO,UAAU;AAGpB,gBAAAF,GAAE,KAAK,OAAO,UAAU,SAAS,YAAYG,KAAI;AAIhD,sBAAKE,MAAK,UAAU,KAChBA,MAAK,UAAU,EAAE,YAAYA,MAAKH,WAAU,GAC9C;AACD,2BAAOG,MAAK,UAAU;AAAA,kBACvB;AAAA,gBACD,CAAC;AAAA,cACF;AAGA,kBAAIA,MAAKH,WAAU,EAAE,WAAW;AAC/B,gBAAAG,MAAKH,WAAU,EAAE,UAAU;AAAA,cAC5B;AAGA,qBAAOG,MAAKH,WAAU;AAAA,YACvB;AAEA,mBAAOG;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,OAAO,SAASa,WAAU;AAEzB,gBAAI,CAAC,KAAK,aAAa;AACtB,mBAAK,OAAO,MAAMA,SAAQ;AAAA,YAC3B,OACK;AACJ,mBAAK,eAAe;AAAA,YACrB;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,SAAS,SAAS,SAAS;AAE1B,gBAAIb,QAAO;AAGX,gBAAI,YAAY,QAAW;AAC1B,qBAAOA,MAAK;AAAA,YACb,OAEK;AAEJ,kBAAI,CAACA,MAAK,aAAa;AAGtB,gBAAAA,MAAK,aAAa,OAAO;AAEzB,oBAAIA,MAAK,cAAc,MAAM;AAG5B,sBAAIA,MAAK,YAAY,UAAU;AAG9B,oBAAAA,MAAK,gBAAgB;AAGrB,oBAAAA,MAAK,WAAW;AAGhB,wBAAIA,MAAK,UAAU,iBAAiB;AAEnC,0BAAI,IAAI,gBAAgB;AAGvB,4BAAI,YAAYA,MAAK,UAAU;AAE/B,wBAAAA,MAAK,UAAU,SAAS,wBAAuB,SAAS;AAIxD,mCAAW,WAAW;AAErB,8BAAIA,MAAK,WAAW,UAAU;AAE7B,4BAAAA,MAAK,UAAU,YAAY,wBAAuB,SAAS;AAAA,0BAC5D;AAAA,wBACD,GAAG,GAAI;AAAA,sBACR,OACK;AACJ,wBAAAA,MAAK,UAAU,OAAO,KAAK,KAAK,WAAW;AAC1C,8BAAIA,MAAK,WAAW,UAAU;AAC7B,4BAAAA,MAAK,UAAU,OAAO,KAAK,CAAC;AAAA,0BAC7B;AAAA,wBACD,CAAC;AAAA,sBACF;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,OACK;AACJ,kBAAAA,MAAK,OAAO;AAAA,gBACb;AAAA,cACD,OACK;AACJ,gBAAAA,MAAK,eAAe;AAAA,cACrB;AAEA,qBAAOA;AAAA,YACR;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,SAAS,WAAW;AAEnB,gBAAIA,QAAO;AAEX,gBAAI,CAACA,MAAK,aAAa;AAEtB,kBAAGA,MAAK,WAAW,UAAS;AAG3B,gBAAAA,MAAK,OAAO,qBAAqB,CAAC,EAEhC,OAAO,MAAM,MAAM,IAAI;AAAA,cAC1B,OACK;AAEJ,gBAAAA,MAAK,gBAAgB;AAAA,cACtB;AAGA,cAAAA,MAAK,SAAS,SAAS;AAEvB,cAAAA,MAAK,cAAc;AAEnB,cAAAA,MAAK,SACH,WAAWA,MAAK,WAAW,EAE3B,IAAI,MAAKA,MAAK,cAAa,cAAc;AAG3C,cAAAL,GAAE,IAAI,OAAO,SAAS,IAAI,EAAE,IAAI,MAAMK,MAAK,cAAa,cAAc;AAEtE,kBAAIK,MAAKL,MAAK,SAAS,KAAK,gBAAgB;AAK5C,kBAAIK,KAAI;AAGP,oBAAIA,IAAG,WAAW,GAAG;AAGpB,sBAAI,QAAQ;AACZ,sBAAIL,MAAK,UAAU,eAAe,YAAY;AAC7C,4BAAQA,MAAK,SAAS,KAAK,0BAA0B;AAAA,kBACtD,WACSA,MAAK,UAAU,eAAe,WAAW;AAGjD,4BAAS,OAAOA,MAAK,aAAa,WACjCA,MAAK,YACLL,GAAE,aAAa,EAAE,OAAOK,MAAK,SAAS,EAAE,KAAK;AAAA,kBAC/C;AAEA,sBAAI,OAAO;AACV,oBAAAA,MAAK,SAAS,KAAK,SAAS,KAAK;AAAA,kBAClC;AAIA,kBAAAA,MAAK,SAAS,YAAY,eAAe;AAEzC,kBAAAA,MAAK,SACH,WAAW,gBAAgB,EAC3B,WAAW,0BAA0B;AAAA,gBACxC,OACK;AAGJ,kBAAAK,MAAKV,GAAE,KAAKU,KAAI,SAAS,IAAIH,IAAG;AAC/B,2BAAO,OAAOF,MAAK;AAAA,kBACpB,CAAC;AACD,kBAAAA,MAAK,SAAS,KAAK,kBAAkBK,GAAE;AAAA,gBACxC;AAAA,cACD;AAGA,cAAAL,MAAK,SAAS,WAAW;AAGzB,cAAAA,MAAK,KAAK;AACV,cAAAA,MAAK,IAAI;AAGT,cAAAA,MAAK,YAAY;AACjB,cAAAA,MAAK,oBAAoB;AACzB,cAAAA,MAAK,mBAAmB;AACxB,cAAAA,MAAK,UAAU,SAAS;AACxB,cAAAA,MAAK,WAAW;AAChB,cAAAA,MAAK,YAAY;AAIjB,cAAAL,GAAE,YAAY,uBAAuBA,GAAE,KAAKA,GAAE,YAAY,sBAAsB,SAAS,IAAIO,IAAG;AAC/F,uBAAOF,UAAS;AAAA,cACjB,CAAC;AAED,4BAAcA,MAAK,kBAAkB;AAAA,YACtC,OACK;AACJ,cAAAA,MAAK,eAAe;AAAA,YACrB;AAKA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,SAAS,WAAW;AAEnB,gBAAI,CAAC,KAAK,aAAa;AAItB,mBAAK,OAAO;AACZ,mBAAK,YAAY;AAEjB,qBAAO;AAAA,YACR,OACK;AACJ,mBAAK,eAAe;AAAA,YACrB;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,eAAe,WAAW;AAEzB,gBAAI,CAAC,KAAK,aAAa;AACtB,qBAAO,KAAK,SAAS,CAAC;AAAA,YACvB,OACK;AACJ,mBAAK,eAAe;AAAA,YACrB;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,gBAAgB,WAAW;AAC1B,mBAAO,KAAK,YAAY,KAAK,UAAU,CAAC,IAAI;AAAA,UAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,QAAQ,WAAW;AAClB,iBAAK,YAAY;AACjB,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,MAAM,SAASa,WAAU;AACxB,mBAAO,KAAK,MAAMA,SAAQ;AAAA,UAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,UAAU,WAAW;AACpB,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,KAAK,WAAW;AAEf,gBAAI,CAAC,KAAK,aAAa;AACtB,mBAAK,iBAAiB,IAAI,MAAM,KAAK,kBAAkB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAAA,YAC9F;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,IAAI,WAAW;AAEd,gBAAI,CAAC,KAAK,aAAa;AACtB,mBAAK,iBAAiB,GAAG,MAAM,KAAK,kBAAkB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAAA,YAC7F,OACK;AACJ,mBAAK,eAAe;AAAA,YACrB;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,KAAK,WAAW;AAEf,gBAAI,CAAC,KAAK,aAAa;AACtB,mBAAK,iBAAiB,IAAI,MAAM,KAAK,kBAAkB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAAA,YAC9F,OACK;AACJ,mBAAK,eAAe;AAAA,YACrB;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,MAAM,SAASA,WAAU;AAExB,gBAAI,CAAC,KAAK,aAAa;AACtB,mBAAK,MAAM,MAAMA,SAAQ;AAAA,YAC1B,OACK;AACJ,mBAAK,eAAe;AAAA,YACrB;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWA,QAAQ,SAASI,IAAG,KAAK;AAGxB,gBAAI,QAAQ,QAAW;AACtB,qBAAO,KAAK,UAAUA,EAAC;AAAA,YACxB,OAEK;AAEJ,kBAAI,CAAC,KAAK,aAAa;AAGtB,qBAAK,UAAUA,EAAC,IAAI;AAGpB,qBAAK,gBAAgB;AAGrB,oBAAItB,GAAE,QAAQsB,IAAG,CAAC,WAAW,gBAAgB,aAAa,CAAC,KAAK,GAAG;AAClE,uBAAK,gBAAgB;AAAA,gBACtB;AAEA,oBAAIA,OAAM,mBAAmB;AAC5B,uBAAK,YAAY;AAAA,gBAClB;AAAA,cACD,OACK;AACJ,qBAAK,eAAe;AAAA,cACrB;AAEA,qBAAO;AAAA,YACR;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBA,YAAY,SAAS,OAAO,mBAAmB;AAE9C,gBAAIjB,QAAO;AAEX,gBAAI,CAACA,MAAK,aAAa;AAGtB,kBAAIA,MAAK,WAAW,YAAY,aAAaA,MAAK,QAAQ,GAAG;AAI5D,oBAAI,qBAAqB,aAAaA,MAAK,SAAS,GAAG;AAEtD,sBAAI,CAAC,mBAAmB;AAGvB,oBAAAA,MAAK,UAAU,OAAO;AAAA,kBACvB;AAGA,kBAAAA,MAAK,aAAaA,MAAK,WAAW;AAGlC,kBAAAA,MAAK,SAAS;AAAA,oBACb,MAAM;AAAA,oBACN;AAAA,oBACA,QAAQ;AAAA,sBACP,KAAKA,MAAK;AAAA,oBACX;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD,OACK;AACJ,cAAAA,MAAK,eAAe;AAAA,YACrB;AAEA,mBAAOA;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,MAAM,SAASa,WAAU;AACxB,mBAAO,KAAK,KAAKA,SAAQ;AAAA,UAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,QAAQ,WAAW;AAElB,mBAAO;AAAA,cACN,WAAW,KAAK;AAAA,cAChB,SAAS,KAAK;AAAA,cACd,MAAM,KAAK,YAAY;AAAA,cACvB,OAAO,KAAK;AAAA,YACb;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,gBAAgB,WAAW;AAE1B,gBAAI,CAAC,KAAK,aAAa;AACtB,mBAAK,iBAAiB,eAAe,MAAM,KAAK,kBAAkB,MAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AAAA,YACzG,OACK;AACJ,mBAAK,eAAe;AAAA,YACrB;AAEA,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,QAAAlB,GAAE,GAAG,cAAc,WAAW;AAG7B,cAAI,OAAO,MAAM,UAAU,MAAM,MAAM,SAAS,GAE/C,wBAAwB;AAGzB,cAAI,KAAK,WAAW,GAAG;AAGtB,mBAAO;AAAA,UACR,OAGK;AAGJ,gBAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAEhC,kBAAIuB,KAAI;AAER,mBAAK,KAAK,WAAW;AAIpB,oBAAIb,MAAKV,GAAE,IAAI,EAAE,KAAK,gBAAgB,GAGrCK,QAAOK,MAAKV,GAAE,IAAI,EAAE,KAAKU,IAAG,CAAC,CAAC,IAAI;AAGnC,oBAAIL,OAAM;AAET,sBAAI,OAAOA,MAAK,KAAK,CAAC,CAAC,MAAM,YAAY;AAExC,wBAAK,KAAK,SAAS,KACf,KAAK,CAAC,KAAK,cACT,KAAK,CAAC,aAAaL,MACnB,OAAO,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC,EAAE,YAE3D,CAACK,MAAK,UAAU,kBAChBA,MAAK,UAAU,OACjB;AACD,8BAAQ,IAAI,qBAAqB;AAAA,oBAClC;AAGA,wBAAI,OAAOA,MAAK,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,kBAC1C,OACK;AACJ,0BAAM,IAAI,MAAM,qBAAoB,KAAK,CAAC,IAAG,GAAG;AAAA,kBACjD;AAIA,sBAAI,SAASA,SAAQ,KAAK,CAAC,MAAM,YAAY;AAE5C,oBAAAkB,KAAI;AAIJ,2BAAO;AAAA,kBACR;AAAA,gBACD,OACK;AACJ,wBAAM,IAAI,MAAM,+BAA+B,KAAK,CAAC,IAAG,sCAAsC;AAAA,gBAC/F;AAAA,cACD,CAAC;AAED,qBAAQA,OAAM,UAAWA,KAAI;AAAA,YAC9B,OAEK;AAGJ,cAAAvB,GAAE,YAAY,uBAAuB,CAAC;AAGtC,kBAAI,gBAAgB,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,aAAa,QAGnD,WAAY,iBAAiB,KAAK,CAAC,EAAE,YAAc,CAAC,iBAAiBC,UAAS,UAE9E,eAAe,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,YAAY,QAC9C,UAAW,gBAAgB,KAAK,CAAC,EAAE,WAAa,CAAC,gBAAgBA,UAAS,SAE1E,sBAAsB,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,mBAAmB,QAC5D,iBACG,uBAAuB,KAAK,CAAC,EAAE,kBAC7B,CAAC,uBAAuBA,UAAS,gBAEtC,aAAa,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,UAAU,QAC1C,QAAS,cAAc,KAAK,CAAC,EAAE,SAAW,CAAC,cAAcA,UAAS;AAEnE,kBAAK,KAAK,SAAS,MACb,mBAAmBD,MACnB,OAAO,WAAW,YAAY,WAAW,QAAQ,QAAQ,YAE3D,CAAC,kBACD,OACF;AACD,wBAAQ,IAAI,qBAAqB;AAAA,cAClC;AAKA,mBAAK,KAAK,WAAW;AAEpB,oBAAI,KAAK,OACR,QAAQA,GAAE,IAAI,GACdU,MAAK,MAAM,KAAK,gBAAgB,GAChC,MAAM;AAEP,oBAAI,CAACA,KAAI;AACR,uBAAK;AAAA,gBACN,WACS,UAAU;AAClB,uBAAK;AAAA,gBACN,WACS,OAAO;AACf,0BAAQ,IAAI,wFAAwF;AACpG,0BAAQ,IAAI,IAAI;AAAA,gBACjB;AAEA,oBAAI,IAAI;AACP,wBAAM,IAAIV,GAAE,YAAY,MAAM,KAAK,CAAC,CAAC;AAGrC,sBAAI,CAACU;AAAI,oBAAAA,MAAK,CAAC;AACf,kBAAAA,IAAG,KAAK,IAAI,WAAW;AACvB,wBAAM,KAAK,kBAAkBA,GAAE;AAG/B,wBAAM,KAAK,IAAI,aAAa,GAAG;AAM/B,sBAAI,IAAI,UAAU,cAAc;AAC/B,wBAAI,UAAU,aAAa,KAAK,KAAK,KAAK;AAAA,sBACzC,QAAQ;AAAA,oBACT,CAAC;AAAA,kBACF;AAGA,sBAAI,SAAS,MAAM;AAAA,gBACpB;AAEA,gBAAAV,GAAE,YAAY,qBAAqB,KAAK,GAAG;AAAA,cAC5C,CAAC;AAED,qBAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD;AASA,iBAAS,MAAM,UAAU;AAIxB,eAAK;AACL,eAAK,cAAc;AACnB,eAAK;AAEL,eAAK,OAAO,QAAQ;AAAA,QACrB;AAEA,cAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWjB,QAAQ,SAAS,UAAU;AAE1B,iBAAK,aAAa;AAElB,iBAAK,WACH,IAAI;AAAA;AAAA,cAEJ,MAAM;AAAA;AAAA,cAEN,UAAU;AAAA;AAAA,cAEV,UAAU;AAAA,cACV,KAAK;AAAA,YACN,CAAC,EAGA,KAAK,sBAAsB,EAC1B,IAAI,YAAY,MAAM;AAEzB,iBAAK,aAAaA,GAAE,uCAAuC,EACzD,OAAO,KAAK,UAAU,EACtB,SAAS,IAAI,OAAO,SAAS,IAAI;AAAA,UACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,eAAe,WAAW;AAQzB,gBAAI,KAAK,KAAK,WAAW,OAAO;AAChC,iBAAK,WAAW,OAAO;AACvB,iBAAK,WAAW,SAAS,EAAE;AAAA,UAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWA,WAAW,SAASwB,QAAOC,SAAQ;AAElC,iBAAK,cAAc;AAAA,cAClB,OAAOD;AAAA,cACP,QAAQC;AAAA,YACT;AAEA,iBAAK,WAAW,IAAI;AAAA;AAAA;AAAA,cAGnB,SAAS;AAAA;AAAA,cAET,QAAQ;AAAA;AAAA,cAER,UAAU;AAAA;AAAA;AAAA,cAGV,OAAOD;AAAA,YACR,CAAC;AAED,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,SAAS,WAAW;AAGnB,iBAAK,WACH,OAAO,EACP,KAAK,sBAAsB,EAC1B,IAAI;AAAA;AAAA,cAEJ,SAAS;AAAA,cACT,UAAU;AAAA,YACX,CAAC;AAEH,iBAAK,WAAW,OAAO;AAAA,UACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQA,MAAM,WAAW;AAEhB,iBAAK,cAAc;AAGnB,iBAAK,WAAW,IAAI;AAAA,cACnB,SAAS;AAAA,cACT,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,OAAO;AAAA,YACR,CAAC;AAED,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaA,SAAS,WAAW;AAEnB,iBAAK,cAAc;AAEnB,gBAAI,aAAa,KAAK,WAAW,CAAC,EAAE,sBAAsB,GACzD,SAAS,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMhB,QAAQ,WAAW,UAAW,WAAW,SAAS,WAAW;AAAA,cAC7D,OAAO,WAAW,SAAU,WAAW,QAAQ,WAAW;AAAA,YAC3D,EAAC;AAEF,gBAAI,KAAK,aAAa;AAYrB,kBAAI,WAAW,KAAK,WAAW,KAAK,sBAAsB,GACzDC,UAAS,KAAK,WAAW,YAAY,GACrC,aAAa,SAAS,CAAC,EAAE,sBAAsB,GAC/C,OAAO;AAAA,gBACN,QAAQA,WAAU,KAAK,YAAY;AAAA,gBACnC;AAAA;AAAA;AAAA,kBAGC,WAAW,SAAS,KAAK,YAAY,SAOlC,WAAW,SAAS,SAAS,CAAC,EAAE,cAAc;AAAA;AAAA,cAEnD;AAED,qBAAO,OAAO,KAAK,UAAU,KAAK;AAAA,YACnC;AAKA,gBAAK,IAAI,MACL,IAAI,MAAM,MACV,OAAO,KAAK,UAAU,IAAI,OAAO,SAAS,gBAAgB,aAC5D;AACD,qBAAO,KAAK,QAAQ,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI;AAAA,YACpD;AAEA,mBAAO;AAAA,UACR;AAAA,QACD;AAGA,iBAAS,SAASC,IAAEC,IAAG;AACtB,cAAI,OAAO;AACX,UAAA3B,GAAE,KAAK0B,IAAG,SAASnB,IAAGqB,IAAG;AACxB,gBAAID,GAAEpB,EAAC,MAAM,UAAamB,GAAEnB,EAAC,MAAMoB,GAAEpB,EAAC,GAAG;AACxC,qBAAO;AACP,qBAAO;AAAA,YACR;AAAA,UACD,CAAC;AACD,iBAAO;AAAA,QACR;AAWA,iBAAS,aAAa,MAAM;AAC3B,cAAIsB,MAAK,KAAK,KAAK,IAAI,GACtB,KAAKA,MAAK,IAAI,OAAO,SAAS,eAAeA,GAAE,IAAI;AAEpD,iBAAO,KAAK,OAAO,KAAK,CAAC,IAAI7B,GAAE,SAAS,IAAI,OAAO,SAAS,MAAM,KAAK,CAAC,CAAC;AAAA,QAC1E;AAGA,YAAI,KAAK,UAAU,UAAU,YAAY;AACzC,YAAI,GAAG,QAAQ,MAAM,KAAK;AAAI,cAAI,KAAK,SAAS,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;AAAA,iBAC1D,GAAG,YAAY,EAAE,QAAQ,SAAS,MAAM,MAAM,GAAG,QAAQ,QAAQ,MAAM;AAAI,cAAI,KAAK;AAAA,iBACpF,GAAG,YAAY,EAAE,QAAQ,OAAO,KAAK;AAAI,cAAI,KAAK,SAAS,GAAG,YAAY,EAAE,MAAM,OAAO,EAAE,CAAC,CAAC;AAGtG,iBAAS,oBAAoB;AAG5B,cAAI,CAAC;AAAK,mBAAO;AAEjB,cAAI2B,KAAI,IAAI,SAAS,QAAQ,IAAI,SAAS,iBACzCG,KAAIH,GAAE,OACNrB,KAAI,cACJiB,KAAI,CAAC,OAAO,UAAU,SAAS,KAAK,IAAI;AAEzC,cAAI,OAAOO,GAAExB,EAAC,KAAK,UAAU;AAAE,mBAAO;AAAA,UAAM;AAE5C,UAAAA,KAAIA,GAAE,OAAO,CAAC,EAAE,YAAY,IAAIA,GAAE,OAAO,CAAC;AAC1C,mBAASC,KAAE,GAAGA,KAAEgB,GAAE,QAAQhB,MAAK;AAC9B,gBAAI,OAAOuB,GAAEP,GAAEhB,EAAC,IAAID,EAAC,KAAK,UAAU;AAAE,qBAAO;AAAA,YAAM;AAAA,UACpD;AACA,iBAAO;AAAA,QACR;AAQA,YAAI,aAAa;AAEjB,QAAAN,GAAE,YAAY,QAAQ;AAAA,UACrB,MAAM;AAAA,UACN,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOT,YAAY,WAAW;AAEtB,qBAAO;AAAA;AAAA,gBAEN,OAAO;AAAA;AAAA,gBAEP,UAAU;AAAA;AAAA,gBAEV,kBAAkB;AAAA,gBAClB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAUV,iBAAiB;AAAA,gBACjB,UAAU;AAAA;AAAA,gBAEV,UAAU;AAAA,gBACV,MAAM;AAAA;AAAA;AAAA,gBAGN,eAAe;AAAA,cAChB;AAAA,YACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQA,QAAQ,SAAS,UAAU;AAE1B,kBAAIK,QAAO;AAIX,cAAAA,MAAK,aAAa;AAClB,cAAAA,MAAK,cAAc,yBAAwB,KAAK,MAAM,KAAK,OAAO,IAAE,GAAO;AAC3E,cAAAA,MAAK,kBAAkB;AACvB,cAAAA,MAAK;AAGL,cAAAA,MAAK,gBAAgB;AAErB,cAAAA,MAAK,WAAW,IAAI,WAAUA,MAAK,aAAa,SAAS,OAAO;AAE/D,oBAAI,MAAM,SAAS,UAAU;AAC5B,kBAAAA,MAAK,QAAQ;AAAA,gBACd,WACS,MAAM,SAAS,eAAeA,MAAK,mBAAmB,UAAU;AACxE,kBAAAA,MAAK,SAAS;AAAA,gBACf;AAEA,gBAAAA,MAAK,kBAAkB,MAAM;AAAA,cAC9B,CAAC;AAGD,cAAAA,MAAK,WAAW,IAAI,aAAYA,MAAK,aAAa,WAAW;AAC5D,gBAAAA,MAAK,gBAAgB;AAAA,cACtB,CAAC;AAED,cAAAA,MAAK,WAAW,IAAI,gBAAeA,MAAK,aAAa,SAASQ,IAAG;AAChE,gBAAAR,MAAK,aAAaQ,GAAE,OAAOA,GAAE,MAAM;AAAA,cACpC,CAAC;AAAA,YACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOA,SAAS,WAAW;AAInB,kBAAI,KAAK,WAAW,QAAQ,aAAab,IAAG;AAC3C,qBAAK,WAAW,QAAQ,EAAE,OAAO;AAAA,cAClC;AAGA,mBAAK,WAAW,UAAU,OAAO;AACjC,mBAAK,WAAW,YAAY;AAAA,YAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOA,UAAU,WAAW;AAIpB,kBAAI,QAAQA;AAAA,gBACX;AAAA,cAWD;AAGA,kBAAI,CAAC,KAAK,UAAU,OAAO;AAC1B,sBACE,KAAK,kBAAkB,EACtB,IAAI,UAAU,CAAC,EACf,IAAI,EACL,KAAK,oBAAoB,EACxB,KAAK;AAAA,cACT;AAGA,kBAAI,KAAK,UAAU,UAAU;AAC5B,sBAAM,IAAI,aAAa,KAAK,UAAU,WAAW,IAAI;AAAA,cACtD;AACA,kBAAI,KAAK,UAAU,UAAU;AAC5B,sBAAM,IAAI,aAAa,KAAK,UAAU,WAAW,IAAI;AAAA,cACtD;AAEA,mBAAK,WAAW,YAAY;AAG5B,mBAAK,WAAW,SAAS,SAAS;AAAA,YACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOA,WAAW,WAAW;AACrB,mBAAK,WAAW,KAAK,MAAK,KAAK,WAAW;AAAA,YAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOA,iBAAiB,WAAW;AAE3B,kBAAIK,QAAO;AAGX,cAAAA,MAAK,YAAYA,MAAK,WAAW,gBAAgB,YAAYA,MAAK,WAAW,CAAC;AAG9E,kBAAIA,MAAK,UAAU,UAAU;AAC5B,gBAAAA,MAAK,UAAU,OAAOA,MAAK,UAAU;AAAA,cACtC;AAMA,kBAAI,OAAOA,MAAK,UAAU,YAAY,UAAU;AAC/C,gBAAAA,MAAK,UAAU,WAAW,CAACA,MAAK,UAAU,QAAQ;AAAA,cACnD;AACA,kBAAIA,MAAK,UAAU,SAAS,SAAS,GAAG;AACvC,oBAAIA,MAAK,UAAU,SAAS,CAAC,MAAM;AAAW,kBAAAA,MAAK,UAAU,SAAS,CAAC,IAAIA,MAAK,UAAU,SAAS,CAAC;AACpG,oBAAIA,MAAK,UAAU,SAAS,CAAC,MAAM;AAAW,kBAAAA,MAAK,UAAU,SAAS,CAAC,IAAIA,MAAK,UAAU,SAAS,CAAC;AACpG,oBAAIA,MAAK,UAAU,SAAS,CAAC,MAAM;AAAW,kBAAAA,MAAK,UAAU,SAAS,CAAC,IAAIA,MAAK,UAAU,SAAS,CAAC;AAAA,cACrG;AAEA,cAAAA,MAAK,UAAU,WAAW;AAAA,gBACzB,KAAKA,MAAK,UAAU,SAAS,CAAC;AAAA,gBAC9B,OAAOA,MAAK,UAAU,SAAS,CAAC;AAAA,gBAChC,QAAQA,MAAK,UAAU,SAAS,CAAC;AAAA,gBACjC,MAAMA,MAAK,UAAU,SAAS,CAAC;AAAA,cAChC;AAOA,kBAAI,OAAOA,MAAK,UAAU,QAAQ,UAAU;AAE3C,oBAAI0B,aAAY;AAAA,kBACf,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACT;AAEA,gBAAA1B,MAAK,UAAU,OAAO,CAACA,MAAK,UAAU,MAAM0B,WAAU1B,MAAK,UAAU,IAAI,CAAC;AAE1E,oBAAIA,MAAK,UAAU,KAAK,CAAC,KAAK,UAAUA,MAAK,UAAU,KAAK,CAAC,KAAK,SAAS;AAC1E,kBAAAA,MAAK,UAAU,KAAK,KAAK,OAAO,QAAQ;AAAA,gBACzC,OACK;AACJ,kBAAAA,MAAK,UAAU,KAAK,KAAK,SAAS,MAAM;AAAA,gBACzC;AAAA,cACD;AAIA,kBAAKL,GAAE,YAAY,KAAK,OAAO,KAC3BK,MAAK,UAAU,UAAU,MAC3B;AACD,gBAAAA,MAAK,UAAU,QAAQ;AAAA,cACxB;AAAA,YACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAwBA,cAAc,SAAS,OAAO,QAAQ;AAErC,kBAAIA,QAAO,MACV,aAGA,UAAUA,MAAK,aAAa,MAAM,GAClC,cAAc,CAAC;AAGhB,cAAAA,MAAK,WAAW,UAAU,OAAO;AAKjC,kBAAI,SAASA,MAAK,WAAW,UAAU,MAAM,GAE5C,QAAQL,GAAE,YAAY,UAAU,MAAM,GACtC,YAAY,OACZ,YAAYK,MAAK,WAAW,OAAO,WAAW;AAG/C,kBAAI,WAAW;AACd,uBAAO,YAAY,iBAAgB,SAAS;AAAA,cAC7C;AAGA,cAAAL,GAAE,KAAK,CAAC,UAAU,UAAU,GAAG,SAASO,IAAG,WAAW;AAErD,oBAAI,WAAW;AAGf,gBAAAF,MAAK,WAAW,SAAS;AAAA,kBACxB;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,UAAU,SAAS,MAAM;AACxB,+BAAW;AAAA,kBACZ;AAAA,kBACA,SAAS;AAAA,kBACT,MAAM;AAAA,gBACP,CAAC;AAED,oBAAK,YAAY,QACX,YAAY,SACb,aAAa,UAIZ,aAAa,YAAYA,MAAK,UAAU,gBAE5C;AAGD,2BAASE,KAAE,GAAGA,KAAIF,MAAK,UAAU,KAAK,QAAQE,MAAK;AAElD,wBAAI,WAAW;AAAA,sBACb,YAAY;AAAA,sBACZ,UAAU;AAAA,oBACX,GACA,OAAOF,MAAK,UAAU,KAAKE,EAAC;AAE7B,wBAAI,QAAQ,SAAS,QAAQ,UAAU;AACtC,+BAAS,WAAWF,MAAK,UAAU,SAAS,IAAI;AAAA,oBACjD,OACK;AACJ,+BAAS,aAAaA,MAAK,UAAU,SAAS,IAAI;AAAA,oBACnD;AAIA,oBAAAA,MAAK,aAAa,QAAQ,IAAI;AAE9B,oBAAAL,GAAE,KAAK,CAAC,WAAW,aAAa,GAAG,SAASO,IAAG,MAAM;AAEpD,iCAAW;AAGX,sBAAAF,MAAK,WAAW,SAAS;AAAA,wBACxB;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA,SAAS;AAAA,wBACT;AAAA,wBACA;AAAA,wBACA,UAAU,SAAS,MAAM;AACxB,qCAAW;AAAA,wBACZ;AAAA,wBACA,MAAM;AAAA,sBACP,CAAC;AAED,0BAAK,YAAY,QACX,YAAY,SACb,aAAa,OAEhB;AAED,4BAAI,aAAa;AAAA,0BAChB;AAAA;AAAA;AAAA,0BAGA;AAAA;AAAA;AAAA,0BAGA,MAAM;AAAA,0BACN;AAAA,0BACA,WAAW;AAAA,0BACX;AAAA,0BACA,MAAM;AAAA,0BACN,QAAQ,QAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAOpB,OAAO;AAAA,wBACR;AAGA,4BAAI,kBAAmB,QAAQ,YAC7B,MAAM,KAAK,IACX,MAAM;AAAA,0BACL,OAAO,IAAI,UAAU,SAAS,EAAE,IAAI,EAAE,QAAQ,SAAS;AAAA,0BACvD,OAAO,IAAI,UAAU,SAAS,EAAE,IAAI,EAAE,SAAS,SAAS;AAAA,wBACzD,GACD,eAAe,gBAAgB,QAAQ;AAExC,mCAAW,OAAO,aAAa;AAC/B,mCAAW,YAAY;AAAA,0BACtB,QAAQ,aAAa,KAAK,SAAS,SAAS;AAAA,0BAC5C,OAAO,aAAa,KAAK,QAAQ,SAAS;AAAA,wBAC3C;AAEA,4BAAI,QAAQ,WAAW;AAEtB,8BAAK,OAAO,IAAI,UAAU,SAAS,EAAE,IAAI,EAAE,SAAS,WAAW,UAAU,SACrE,OAAO,IAAI,UAAU,SAAS,EAAE,IAAI,EAAE,UAAU,WAAW,UAAU,QACvE;AACD,uCAAW,OAAO;AAAA,0BACnB,OACK;AACJ,uCAAW,OAAO;AAAA,0BACnB;AAAA,wBACD,OACK;AACJ,qCAAW,OAAO,aAAa;AAAA,wBAChC;AAEA,4BAAI,aAAa,UAAU;AAE1B,8BAAI,CAAC,WAAW,MAAM;AACrB,uCAAW,QAAQ;AAAA,0BACpB,OACK;AACJ,gCAAI,QAAQ,SAAS,QAAQ,UAAU;AAEtC,yCAAW,QACT,OAAO,IAAI,OAAO,aAAa,SAASA,MAAK,UAAU,mBACrD,OAAO,IAAI,OAAO,KAAK,QAAQ,OAAO,IAAI,OAAO,aAAa,QAAQA,MAAK,UAAU;AAAA,4BAE1F,OACK;AACJ,yCAAW,QACT,OAAO,IAAI,OAAO,aAAa,UAAUA,MAAK,UAAU,mBACtD,OAAO,IAAI,OAAO,KAAK,SAAS,OAAO,IAAI,OAAO,aAAa,OAAOA,MAAK,UAAU;AAAA,4BAE1F;AAAA,0BACD;AAAA,wBACD;AAEA,oCAAY,KAAK,UAAU;AAG3B,4BAAI,WAAW,OAAO;AACrB,sCAAY;AAAA,wBACb,OACK;AAIJ,8BAAK,WAAW,QAAQ,cAClB,WAAW,QACZ,WAAW,KAAK,SAAS,OAAO,IAAI,UAAU,SAAS,EAAE,IAAI,EAAE,QAElE;AACD,mCAAO;AAAA,0BACR;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD,CAAC;AAAA,kBACF;AAAA,gBACD;AAAA,cACD,CAAC;AAKD,cAAAA,MAAK,WAAW,SAAS;AAAA,gBACxB,MAAM,SAASU,IAAG;AACjB,gCAAcA;AAAA,gBACf;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,SAAS;AAAA,gBACT,MAAM;AAAA,cACP,CAAC;AAwBD,0BAAY,KAAK,SAASW,IAAGC,IAAG;AAG/B,oBAAID,GAAE,SAAS,CAACC,GAAE,OAAO;AACxB,yBAAO;AAAA,gBACR,WACS,CAACD,GAAE,SAASC,GAAE,OAAO;AAC7B,yBAAO;AAAA,gBACR,WACSD,GAAE,SAASC,GAAE,OAAO;AAE5B,sBAAI,KAAKtB,MAAK,UAAU,KAAK,QAAQqB,GAAE,IAAI,GAC1C,KAAKrB,MAAK,UAAU,KAAK,QAAQsB,GAAE,IAAI;AAGxC,sBAAI,KAAK,IAAI;AACZ,2BAAO;AAAA,kBACR,WACS,KAAK,IAAI;AACjB,2BAAO;AAAA,kBACR,OACK;AAEJ,2BAAOD,GAAE,QAAQ,YAAY,KAAK;AAAA,kBACnC;AAAA,gBACD,OACK;AAGJ,sBAAIA,GAAE,QAAQ,CAACC,GAAE,MAAM;AACtB,2BAAO;AAAA,kBACR,WACS,CAACD,GAAE,QAAQC,GAAE,MAAM;AAC3B,2BAAO;AAAA,kBACR,WACSD,GAAE,QAAQC,GAAE,MAAM;AAE1B,wBAAI,KAAKtB,MAAK,UAAU,KAAK,QAAQqB,GAAE,IAAI,GAC1C,KAAKrB,MAAK,UAAU,KAAK,QAAQsB,GAAE,IAAI;AAGxC,wBAAI,KAAK,IAAI;AACZ,6BAAO;AAAA,oBACR,WACS,KAAK,IAAI;AACjB,6BAAO;AAAA,oBACR,OACK;AAEJ,6BAAOD,GAAE,QAAQ,YAAY,KAAK;AAAA,oBACnC;AAAA,kBACD,OACK;AAIJ,wBAAKA,GAAE,aAAa,cAChBA,GAAE,QAAQ,YACVA,GAAE,QAAQ,WACZ;AACD,6BAAO;AAAA,oBACR,OACK;AACJ,6BAAO;AAAA,oBACR;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAC;AAED,4BAAc,YAAY,CAAC;AAI3B,0BAAY,QAAQ,CAAC;AAErB,sBAAQ,YAAY,MAAM;AAAA,gBAEzB,KAAK;AAAA,gBACL,KAAK;AACJ,8BAAY,MAAM,MAAM,KAAK,MAAM,YAAY,SAAS,YAAY,KAAK,SAAS,CAAC;AACnF;AAAA,gBAED,KAAK;AAAA,gBACL,KAAK;AACJ,8BAAY,MAAM,OAAO,KAAK,MAAM,YAAY,SAAS,YAAY,KAAK,QAAQ,CAAC;AACnF;AAAA,cACF;AAEA,sBAAQ,YAAY,MAAM;AAAA,gBAEzB,KAAK;AACJ,8BAAY,MAAM,OAAO,OAAO,IAAI,OAAO,aAAa,OAAO,YAAY,UAAU;AACrF;AAAA,gBAED,KAAK;AACJ,8BAAY,MAAM,OAAO,OAAO,IAAI,OAAO,aAAa,QAAQ,YAAY,SAAS;AACrF;AAAA,gBAED,KAAK;AACJ,8BAAY,MAAM,MAAM,OAAO,IAAI,OAAO,aAAa,MAAM,YAAY,UAAU;AACnF;AAAA,gBAED,KAAK;AACJ,8BAAY,MAAM,MAAM,OAAO,IAAI,OAAO,aAAa,SAAS,YAAY,SAAS;AACrF;AAAA,cACF;AAIA,kBAAI,YAAY,aAAa,UAAU;AAKtC,oBAAI,YAAY,QAAQ,SAAS,YAAY,QAAQ,UAAU;AAG9D,sBAAI,YAAY,MAAM,OAAO,GAAG;AAI/B,wBAAI,OAAO,IAAI,OAAO,aAAa,QAAQ,KAAK,UAAU,mBAAmB,GAAG;AAC/E,kCAAY,MAAM,OAAO;AAAA,oBAC1B,OACK;AACJ,kCAAY,MAAM,OAAO,OAAO,IAAI,OAAO,aAAa,QAAQ,KAAK,UAAU,kBAAkB;AAAA,oBAClG;AAAA,kBACD,WAES,YAAY,MAAM,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO;AAExF,wBAAI,OAAO,IAAI,OAAO,aAAa,OAAO,KAAK,UAAU,mBAAmB,OAAO,IAAI,OAAO,KAAK,OAAO;AACzG,kCAAY,MAAM,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,YAAY,KAAK;AAAA,oBAC1E,OACK;AACJ,kCAAY,MAAM,OAAO,OAAO,IAAI,OAAO,aAAa,OAAO,KAAK,UAAU,kBAAkB,IAAI,YAAY,KAAK;AAAA,oBACtH;AAAA,kBACD;AAAA,gBACD,OACK;AAGJ,sBAAI,YAAY,MAAM,MAAM,GAAG;AAE9B,wBAAI,OAAO,IAAI,OAAO,aAAa,SAAS,KAAK,UAAU,mBAAmB,GAAG;AAChF,kCAAY,MAAM,MAAM;AAAA,oBACzB,OACK;AACJ,kCAAY,MAAM,MAAM,OAAO,IAAI,OAAO,aAAa,SAAS,KAAK,UAAU,kBAAkB;AAAA,oBAClG;AAAA,kBACD,WAES,YAAY,MAAM,MAAM,OAAO,IAAI,OAAO,KAAK,SAAS,YAAY,KAAK,QAAQ;AAEzF,wBAAI,OAAO,IAAI,OAAO,aAAa,MAAM,KAAK,UAAU,mBAAmB,OAAO,IAAI,OAAO,KAAK,QAAQ;AACzG,kCAAY,MAAM,MAAM,OAAO,IAAI,OAAO,KAAK,SAAS,YAAY,KAAK;AAAA,oBAC1E,OACK;AACJ,kCAAY,MAAM,MAAM,OAAO,IAAI,OAAO,aAAa,MAAM,KAAK,UAAU,kBAAkB,IAAI,YAAY,KAAK;AAAA,oBACpH;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,OACK;AAUJ,oBAAI,YAAY,MAAM,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO;AAGnF,8BAAY,MAAM,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,YAAY,KAAK;AAAA,gBAC1E;AAGA,oBAAI,YAAY,MAAM,OAAO,GAAG;AAG/B,8BAAY,MAAM,OAAO;AAAA,gBAC1B;AAAA,cACD;AAUA,cAAArB,MAAK,aAAa,QAAQ,YAAY,IAAI;AAG1C,qBAAO,eAAe,OAAO,CAAC;AAC9B,qBAAO,gBAAgBA,MAAK,WAAW,OAAO,QAAQ,EAAE,OAAO,CAAC;AAEhE,qBAAO,OAAO,YAAY;AAC1B,qBAAO,QAAQ,YAAY;AAI3B,qBAAO,SAASA,MAAK,WAAW,SAAS,CAAC;AAC1C,qBAAO,UAAUA,MAAK,WAAW,UAAU,CAAC;AAG5C,qBAAO,YAAY;AACnB,qBAAO,YAAY;AACnB,qBAAO,YAAY;AACnB,qBAAO,YAAY;AACnB,qBAAO,YAAY;AAGnB,0BAAY,WAAW,YAAY,SAAS,cAAc,YAAY,SAAS;AAI/E,kBAAI,mBAAmBL,GAAE,OAAO,MAAM,CAAC,GAAG,WAAW;AAGrD,cAAAK,MAAK,WAAW,SAAS;AAAA,gBACxB,MAAM,SAAS2B,SAAQ;AACtB,gCAAcA;AAAA,gBACf;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,UAAU;AAAA,gBACV,MAAM;AAAA,cACP,CAAC;AAED,kBAAI3B,MAAK,UAAU,kBAAkB;AAEpC,oBAAI,SAASA,MAAK,UAAU,iBAAiB,KAAKA,OAAMA,MAAK,YAAY,QAAQ,gBAAgB;AAEjG,oBAAI;AAAQ,gCAAc;AAAA,cAC3B;AAIA,oBAAM,QAAQ;AAId,kBAAI,YACH;AAED,kBAAI,YAAY,QAAQ,SAAS,YAAY,QAAQ,UAAU;AAE9D,6BAAa;AAAA,kBACZ,MAAM;AAAA,kBACN,KAAK,YAAY,SAAS,YAAY,MAAM;AAAA,gBAC7C;AACA,yBAAS,YAAY,KAAK,QAAQ,KAAK,UAAU;AAAA,cAClD,OACK;AAEJ,6BAAa;AAAA,kBACZ,MAAM;AAAA,kBACN,KAAK,YAAY,SAAS,YAAY,MAAM;AAAA,gBAC7C;AACA,yBAAS,YAAY,KAAK,SAAS,KAAK,UAAU;AAAA,cACnD;AAIA,kBAAI,WAAW,MAAM,KAAK,UAAU,iBAAiB;AACpD,2BAAW,MAAM,KAAK,UAAU;AAAA,cACjC,WACS,WAAW,MAAM,QAAQ;AACjC,2BAAW,MAAM;AAAA,cAClB;AAEA,kBAAI;AAIJ,kBAAI,OAAO,IAAI,OAAO,cAAc;AAGnC,qCAAqB,OAAO,IAAI,OAAO;AAAA,cACxC,OACK;AAQJ,qCAAqB;AAAA,kBACpB,MAAM,OAAO,IAAI,OAAO,aAAa,OAAO,OAAO,IAAI,OAAO,OAAO;AAAA,kBACrE,KAAK,OAAO,IAAI,OAAO,aAAa,MAAM,OAAO,IAAI,OAAO,OAAO;AAAA,gBACpE;AAAA,cACD;AAEA,0BAAY,QAAQ;AAAA,gBACnB,MAAM,mBAAmB,QAAQ,YAAY,MAAM,OAAO,OAAO,IAAI,OAAO,aAAa;AAAA,gBACzF,KAAK,mBAAmB,OAAO,YAAY,MAAM,MAAM,OAAO,IAAI,OAAO,aAAa;AAAA,cACvF;AAIA,cAAAA,MAAK,aAAaA,MAAK,WAAW,WAAW,YAAY,IAAI;AAE7D,kBAAI,OAAO,IAAI,OAAO,cAAc;AACnC,gBAAAA,MAAK,WAAW,UACd,IAAI,YAAY,OAAO;AAAA,cAC1B,OACK;AAEJ,gBAAAA,MAAK,WAAW,UACd,IAAI,YAAY,EAAE;AAAA,cACrB;AAEA,cAAAA,MAAK,WAAW,UACd,IAAI;AAAA,gBACJ,MAAM,YAAY,MAAM;AAAA,gBACxB,KAAK,YAAY,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAOvB,QAAQ,YAAY,KAAK;AAAA,gBACzB,OAAO,YAAY,KAAK;AAAA,cACzB,CAAC,EACA,KAAK,oBAAoB,EACxB,IAAI;AAAA,gBACJ,QAAQ;AAAA,gBACR,OAAO;AAAA,cACR,CAAC,EACA,IAAI,WAAW,MAAM,WAAW,GAAG;AAGtC,cAAAA,MAAK,WAAW,UAAU,SAASA,MAAK,WAAW,OAAO,QAAQ,CAAC;AAEnE,cAAAA,MAAK,WAAW,SAAS;AAAA,gBACxB,MAAM;AAAA,gBACN;AAAA,gBACA,UAAU;AAAA,cACX,CAAC;AAAA,YACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWA,cAAc,SAAS,MAAM,MAAM;AAElC,mBACE,YAAY,oBAAoB,EAChC,YAAY,kBAAkB,EAC9B,YAAY,mBAAmB,EAC/B,YAAY,iBAAiB,EAC7B,SAAS,iBAAgB,IAAI;AAAA,YAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAaA,cAAc,SAAS,QAAQ;AAE9B,kBAAI,SAAS,CAAC,GACb,QAAQ,KAAK,WAAW,SAAS,CAAC,EAAE,eAAe;AAGpD,kBAAI,MAAM,SAAS,GAAG;AACrB,oBAAI,UAAU,KAAK,WAAW,SAAS,IAAI,SAAS;AACpD,oBAAG,WAAW,GAAG;AAChB,uBAAK,WAAW,SAAS,IAAI,WAAW,IAAI;AAC5C,0BAAQ,KAAK,WAAW,SAAS,CAAC,EAAE,eAAe;AACnD,uBAAK,WAAW,SAAS,IAAI,WAAW,CAAC;AAAA,gBAC1C;AAAA,cACD;AAGA,kBAAI,MAAM,SAAS,GAAG;AAErB,uBAAO,MAAM,KAAK,MAAM,OAAO,IAAI,OAAO,aAAa,OAAQ,OAAO,IAAI,OAAO,KAAK,QAAQ,CAAE;AAChG,uBAAO,SAAS,OAAO;AAEvB,uBAAO,OAAO,KAAK,MAAM,OAAO,IAAI,OAAO,aAAa,MAAO,OAAO,IAAI,OAAO,KAAK,SAAS,CAAE;AACjG,uBAAO,QAAQ,OAAO;AAAA,cACvB,OAIK;AAGJ,oBAAI,aAAa,MAAM,CAAC;AACxB,uBAAO,MAAM,KAAK,MAAM,WAAW,QAAQ,WAAW,QAAQ,WAAW,QAAQ,CAAC;AAKlF,oBAAI,MAAM,SAAS,GAAG;AACrB,+BAAa,MAAM,KAAK,KAAK,MAAM,SAAS,CAAC,IAAI,CAAC;AAAA,gBACnD,OACK;AACJ,+BAAa,MAAM,CAAC;AAAA,gBACrB;AACA,uBAAO,QAAQ,KAAK,MAAM,WAAW,OAAO,WAAW,SAAS,WAAW,OAAO,CAAC;AAGnF,6BAAa,MAAM,MAAM,SAAS,CAAC;AACnC,uBAAO,SAAS,KAAK,MAAM,WAAW,QAAQ,WAAW,QAAQ,WAAW,QAAQ,CAAC;AAGrF,oBAAI,MAAM,SAAS,GAAG;AACrB,+BAAa,MAAM,KAAK,MAAM,MAAM,SAAS,KAAK,CAAC,IAAI,CAAC;AAAA,gBACzD,OACK;AACJ,+BAAa,MAAM,MAAM,SAAS,CAAC;AAAA,gBACpC;AAEA,uBAAO,OAAO,KAAK,MAAM,WAAW,OAAO,WAAW,SAAS,WAAW,OAAO,CAAC;AAAA,cACnF;AAEA,qBAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD,CAAC;AAGD,eAAOL;AAAA,MAEP,CAAC;AAAA;AAAA;;;AC/qID;AAAA,qDAAAiC,SAAA;AAMA,OAAC,SAAUC,OAAM,SAAS;AACtB,YAAI,OAAO,WAAW,cAAc,OAAO,KAAK;AAE5C,iBAAO,OAAO;AAAA,QAClB,WAAW,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,UAAU;AAE5E,UAAAD,QAAO,UAAU,QAAQ;AAAA,QAC7B,OAAO;AAEH,UAAAC,MAAK,UAAU,QAAQ;AAAA,QAC3B;AAAA,MACJ,GAAE,OAAO,SAAS,cAAc,OAAO,SAAM,WAAY;AAGrD,YAAI,OAAO,YAAY,YAAY;AAE/B,WAAC,SAASC,IAAE;AAAC,qBAASC,GAAED,IAAEC,IAAE;AAAC,qBAAO,WAAU;AAAC,gBAAAD,GAAE,MAAMC,IAAE,SAAS;AAAA,cAAC;AAAA,YAAC;AAAC,qBAASC,GAAEF,IAAE;AAAC,kBAAG,aAAW,OAAO;AAAK,sBAAM,IAAI,UAAU,sCAAsC;AAAE,kBAAG,eAAa,OAAOA;AAAE,sBAAM,IAAI,UAAU,gBAAgB;AAAE,mBAAK,SAAO,MAAK,KAAK,SAAO,MAAK,KAAK,aAAW,CAAC,GAAEG,GAAEH,IAAEC,GAAEG,IAAE,IAAI,GAAEH,GAAEI,IAAE,IAAI,CAAC;AAAA,YAAC;AAAC,qBAASC,GAAEN,IAAE;AAAC,kBAAIC,KAAE;AAAK,qBAAO,SAAO,KAAK,SAAO,KAAK,KAAK,WAAW,KAAKD,EAAC,IAAE,KAAKO,GAAE,WAAU;AAAC,oBAAIL,KAAED,GAAE,SAAOD,GAAE,cAAYA,GAAE;AAAW,oBAAG,SAAOE;AAAE,yBAAO,MAAKD,GAAE,SAAOD,GAAE,UAAQA,GAAE,QAAQC,GAAE,MAAM;AAAE,oBAAIK;AAAE,oBAAG;AAAC,kBAAAA,KAAEJ,GAAED,GAAE,MAAM;AAAA,gBAAC,SAAOG,IAAN;AAAS,yBAAO,KAAKJ,GAAE,OAAOI,EAAC;AAAA,gBAAC;AAAC,gBAAAJ,GAAE,QAAQM,EAAC;AAAA,cAAC,CAAC;AAAA,YAAC;AAAC,qBAASF,GAAEJ,IAAE;AAAC,kBAAG;AAAC,oBAAGA,OAAI;AAAK,wBAAM,IAAI,UAAU,2CAA2C;AAAE,oBAAGA,OAAI,aAAW,OAAOA,MAAG,eAAa,OAAOA,KAAG;AAAC,sBAAIE,KAAEF,GAAE;AAAK,sBAAG,eAAa,OAAOE;AAAE,2BAAO,KAAKC,GAAEF,GAAEC,IAAEF,EAAC,GAAEC,GAAEG,IAAE,IAAI,GAAEH,GAAEI,IAAE,IAAI,CAAC;AAAA,gBAAC;AAAC,qBAAK,SAAO,MAAG,KAAK,SAAOL,IAAEQ,GAAE,KAAK,IAAI;AAAA,cAAC,SAAOF,IAAN;AAAS,gBAAAD,GAAE,KAAK,MAAKC,EAAC;AAAA,cAAC;AAAA,YAAC;AAAC,qBAASD,GAAEL,IAAE;AAAC,mBAAK,SAAO,OAAG,KAAK,SAAOA,IAAEQ,GAAE,KAAK,IAAI;AAAA,YAAC;AAAC,qBAASA,KAAG;AAAC,uBAAQR,KAAE,GAAEC,KAAE,KAAK,WAAW,QAAOA,KAAED,IAAEA;AAAI,gBAAAM,GAAE,KAAK,MAAK,KAAK,WAAWN,EAAC,CAAC;AAAE,mBAAK,aAAW;AAAA,YAAI;AAAC,qBAASS,GAAET,IAAEC,IAAEC,IAAEI,IAAE;AAAC,mBAAK,cAAY,eAAa,OAAON,KAAEA,KAAE,MAAK,KAAK,aAAW,eAAa,OAAOC,KAAEA,KAAE,MAAK,KAAK,UAAQC,IAAE,KAAK,SAAOI;AAAA,YAAC;AAAC,qBAASH,GAAEH,IAAEC,IAAEC,IAAE;AAAC,kBAAII,KAAE;AAAG,kBAAG;AAAC,gBAAAN,GAAE,SAASA,IAAE;AAAC,kBAAAM,OAAIA,KAAE,MAAGL,GAAED,EAAC;AAAA,gBAAE,GAAE,SAASA,IAAE;AAAC,kBAAAM,OAAIA,KAAE,MAAGJ,GAAEF,EAAC;AAAA,gBAAE,CAAC;AAAA,cAAC,SAAOI,IAAN;AAAS,oBAAGE;AAAE;AAAO,gBAAAA,KAAE,MAAGJ,GAAEE,EAAC;AAAA,cAAC;AAAA,YAAC;AAAC,gBAAIM,KAAE,YAAWH,KAAE,eAAa,OAAO,gBAAc,gBAAc,SAASP,IAAE;AAAC,cAAAU,GAAEV,IAAE,CAAC;AAAA,YAAC,GAAEW,KAAE,MAAM,WAAS,SAASX,IAAE;AAAC,qBAAM,qBAAmB,OAAO,UAAU,SAAS,KAAKA,EAAC;AAAA,YAAC;AAAE,YAAAE,GAAE,UAAU,OAAO,IAAE,SAASF,IAAE;AAAC,qBAAO,KAAK,KAAK,MAAKA,EAAC;AAAA,YAAC,GAAEE,GAAE,UAAU,OAAK,SAASF,IAAEC,IAAE;AAAC,kBAAIG,KAAE;AAAK,qBAAO,IAAIF,GAAE,SAASA,IAAEG,IAAE;AAAC,gBAAAC,GAAE,KAAKF,IAAE,IAAIK,GAAET,IAAEC,IAAEC,IAAEG,EAAC,CAAC;AAAA,cAAC,CAAC;AAAA,YAAC,GAAEH,GAAE,MAAI,WAAU;AAAC,kBAAIF,KAAE,MAAM,UAAU,MAAM,KAAK,MAAI,UAAU,UAAQW,GAAE,UAAU,CAAC,CAAC,IAAE,UAAU,CAAC,IAAE,SAAS;AAAE,qBAAO,IAAIT,GAAE,SAASD,IAAEC,IAAE;AAAC,yBAASI,GAAED,IAAEG,IAAE;AAAC,sBAAG;AAAC,wBAAGA,OAAI,aAAW,OAAOA,MAAG,eAAa,OAAOA,KAAG;AAAC,0BAAIC,KAAED,GAAE;AAAK,0BAAG,eAAa,OAAOC;AAAE,+BAAO,KAAKA,GAAE,KAAKD,IAAE,SAASR,IAAE;AAAC,0BAAAM,GAAED,IAAEL,EAAC;AAAA,wBAAC,GAAEE,EAAC;AAAA,oBAAC;AAAC,oBAAAF,GAAEK,EAAC,IAAEG,IAAE,MAAI,EAAEJ,MAAGH,GAAED,EAAC;AAAA,kBAAC,SAAOG,IAAN;AAAS,oBAAAD,GAAEC,EAAC;AAAA,kBAAC;AAAA,gBAAC;AAAC,oBAAG,MAAIH,GAAE;AAAO,yBAAOC,GAAE,CAAC,CAAC;AAAE,yBAAQG,KAAEJ,GAAE,QAAOK,KAAE,GAAEA,KAAEL,GAAE,QAAOK;AAAI,kBAAAC,GAAED,IAAEL,GAAEK,EAAC,CAAC;AAAA,cAAC,CAAC;AAAA,YAAC,GAAEH,GAAE,UAAQ,SAASF,IAAE;AAAC,qBAAOA,MAAG,aAAW,OAAOA,MAAGA,GAAE,gBAAcE,KAAEF,KAAE,IAAIE,GAAE,SAASD,IAAE;AAAC,gBAAAA,GAAED,EAAC;AAAA,cAAC,CAAC;AAAA,YAAC,GAAEE,GAAE,SAAO,SAASF,IAAE;AAAC,qBAAO,IAAIE,GAAE,SAASD,IAAEC,IAAE;AAAC,gBAAAA,GAAEF,EAAC;AAAA,cAAC,CAAC;AAAA,YAAC,GAAEE,GAAE,OAAK,SAASF,IAAE;AAAC,qBAAO,IAAIE,GAAE,SAASD,IAAEC,IAAE;AAAC,yBAAQI,KAAE,GAAEF,KAAEJ,GAAE,QAAOI,KAAEE,IAAEA;AAAI,kBAAAN,GAAEM,EAAC,EAAE,KAAKL,IAAEC,EAAC;AAAA,cAAC,CAAC;AAAA,YAAC,GAAEA,GAAE,kBAAgB,SAASF,IAAE;AAAC,cAAAO,KAAEP;AAAA,YAAC,GAAE,gBAAc,OAAOF,WAAQA,QAAO,UAAQA,QAAO,UAAQI,KAAEF,GAAE,YAAUA,GAAE,UAAQE;AAAA,UAAE,EAAE,IAAI;AAAA,QAC73E;AAEA,YAAI,OAAO,WAAW,eAAe,OAAO,OAAO,gBAAgB,YAAY;AAC3E,WAAC,WAAU;AACP,qBAASU,aAAc,OAAOC,SAAS;AACnC,cAAAA,UAASA,WAAU,EAAE,SAAS,OAAO,YAAY,OAAO,QAAQ,OAAU;AAC1E,kBAAI,MAAM,SAAS,YAAa,aAAc;AAC9C,kBAAI,gBAAiB,OAAOA,QAAO,SAASA,QAAO,YAAYA,QAAO,MAAO;AAC7E,qBAAO;AAAA,YACX;AACA,YAAAD,aAAY,YAAY,OAAO,MAAM;AACrC,mBAAO,cAAcA;AAAA,UACzB,GAAE;AAAA,QACN;AAEA,YAAI,OAAO,sBAAsB,eAAe,CAAC,kBAAkB,UAAU,QAAQ;AACjF,iBAAO,eAAe,kBAAkB,WAAW,UAAU;AAAA,YACzD,OAAO,SAAUE,WAAU,MAAM,SAAS;AACtC,kBAAI,SAAS,KAAM,KAAK,UAAU,MAAM,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,CAAE,GAC/D,MAAM,OAAO,QACb,MAAM,IAAI,WAAW,GAAG;AAExB,uBAASX,KAAE,GAAGA,KAAE,KAAKA,MAAM;AACvB,oBAAIA,EAAC,IAAI,OAAO,WAAWA,EAAC;AAAA,cAChC;AAEA,cAAAW,UAAU,IAAI,KAAM,CAAC,GAAG,GAAG,EAAC,MAAM,QAAQ,YAAW,CAAE,CAAE;AAAA,YAC7D;AAAA,UACJ,CAAC;AAAA,QACL;AAGA,YAAI,cAAc,CAAC,UAAU,OAAO,IAAI,GACpC,cAAc,OAAO,aAAa,cAAc,SAAS,cAAc,KAAK,EAAE,QAAQ,CAAC,GACvF,YAAY,CAAC,GAAE,GAAE,GAAE,CAAC,GACpB,YAAY,CAAC,GAAE,GAAE,GAAE,CAAC,GACpB,eACA,eACA;AAEJ,iBAAS,aAAa,MAAM;AACxB,cAAI,QAAQ,aAAa;AACrB,mBAAO;AAAA,UACX;AAEA,cAAI,UAAU,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,GAC9CX,KAAI,YAAY;AAEpB,iBAAOA,MAAK;AACR,mBAAO,YAAYA,EAAC,IAAI;AACxB,gBAAI,QAAQ,aAAa;AACrB,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,QACJ;AAEA,wBAAgB,aAAa,WAAW;AACxC,wBAAgB,aAAa,iBAAiB;AAC9C,yBAAiB,aAAa,YAAY;AAE1C,iBAAS,cAAc,MAAMY,SAAQ;AACjC,cAAI,MAAM,UAAU,QAAQ,IAAI,IAAI,KAAK,YAAY,WACjDC,SAAQ,IAAI,QAAQ,IAAI,GACxBC,UAAUF,UAAS,KAAM,IAAI;AAEjC,iBAAO,KAAK,IAAI,SAASC,SAASC,UAAS,IAAI,UAAW,IAAI,MAAM;AAAA,QACxE;AAGA,iBAAS,WAAW,aAAa,QAAQ;AACrC,wBAAc,eAAe,CAAC;AAC9B,mBAAS,YAAY,QAAQ;AACzB,gBAAI,OAAO,QAAQ,KAAK,OAAO,QAAQ,EAAE,eAAe,OAAO,QAAQ,EAAE,gBAAgB,QAAQ;AAC7F,0BAAY,QAAQ,IAAI,YAAY,QAAQ,KAAK,CAAC;AAClD,yBAAW,YAAY,QAAQ,GAAG,OAAO,QAAQ,CAAC;AAAA,YACtD,OAAO;AACH,0BAAY,QAAQ,IAAI,OAAO,QAAQ;AAAA,YAC3C;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAASC,OAAM,QAAQ;AACnB,iBAAO,WAAW,CAAC,GAAG,MAAM;AAAA,QAChC;AAEA,iBAASC,UAAS,MAAMC,OAAM,WAAW;AACrC,cAAI;AACJ,iBAAO,WAAY;AACf,gBAAI,UAAU,MAAM,OAAO;AAC3B,gBAAI,QAAQ,WAAY;AACpB,wBAAU;AACV,kBAAI,CAAC;AAAW,qBAAK,MAAM,SAAS,IAAI;AAAA,YAC5C;AACA,gBAAI,UAAU,aAAa,CAAC;AAC5B,yBAAa,OAAO;AACpB,sBAAU,WAAW,OAAOA,KAAI;AAChC,gBAAI;AAAS,mBAAK,MAAM,SAAS,IAAI;AAAA,UACzC;AAAA,QACJ;AAEA,iBAAS,eAAe,SAAS;AAC7B,cAAI,iBAAiB,UAAU;AAC3B,gBAAI,MAAM,SAAS,YAAY,YAAY;AAC3C,gBAAI,UAAU,UAAU,OAAO,IAAI;AACnC,oBAAQ,cAAc,GAAG;AAAA,UAC7B,OACK;AACD,oBAAQ,UAAU,UAAU;AAAA,UAChC;AAAA,QACJ;AAGA,iBAASC,KAAI,IAAI,QAAQ,KAAK;AAC1B,cAAI,OAAQ,WAAY,UAAU;AAC9B,gBAAI,MAAM;AACV,qBAAS,CAAC;AACV,mBAAO,GAAG,IAAI;AAAA,UAClB;AAEA,mBAAS,QAAQ,QAAQ;AACrB,eAAG,MAAM,IAAI,IAAI,OAAO,IAAI;AAAA,UAChC;AAAA,QACJ;AAEA,iBAASC,UAAS,IAAIpB,IAAG;AACrB,cAAI,GAAG,WAAW;AACd,eAAG,UAAU,IAAIA,EAAC;AAAA,UACtB,OACK;AACD,eAAG,aAAa,MAAMA;AAAA,UAC1B;AAAA,QACJ;AAEA,iBAASqB,aAAY,IAAIrB,IAAG;AACxB,cAAI,GAAG,WAAW;AACd,eAAG,UAAU,OAAOA,EAAC;AAAA,UACzB,OACK;AACD,eAAG,YAAY,GAAG,UAAU,QAAQA,IAAG,EAAE;AAAA,UAC7C;AAAA,QACJ;AAEA,iBAAS,cAAc,IAAIsB,QAAO;AAC9B,mBAASC,QAAOD,QAAO;AACnB,eAAG,aAAaC,MAAKD,OAAMC,IAAG,CAAC;AAAA,UACnC;AAAA,QACJ;AAEA,iBAAS,IAAIC,IAAG;AACZ,iBAAO,SAASA,IAAG,EAAE;AAAA,QACzB;AAGA,iBAAS,UAAU,KAAK,QAAQ;AAC5B,cAAI,CAAC,KAAK;AAAE,kBAAM;AAAA,UAAwB;AAE1C,cAAI,MAAM,IAAI,MAAM;AACpB,cAAI,MAAM,UAAU;AACpB,iBAAO,IAAI,QAAQ,SAAUC,UAAS,QAAQ;AAC1C,qBAASC,YAAW;AAChB,kBAAI,MAAM,UAAU;AACpB,yBAAW,WAAY;AACnB,gBAAAD,SAAQ,GAAG;AAAA,cACf,GAAG,CAAC;AAAA,YACR;AAEA,gBAAI,gBAAgB,aAAa;AACjC,gBAAI,IAAI,MAAM,oBAAoB,GAAG;AACjC,kBAAI,aAAa,eAAe,WAAW;AAAA,YAC/C;AAEA,gBAAI,SAAS,WAAY;AACrB,kBAAI,QAAQ;AACR,qBAAK,QAAQ,KAAK,WAAY;AAC1B,kBAAAC,UAAS;AAAA,gBACb,CAAC;AAAA,cACL,OACK;AACD,gBAAAA,UAAS;AAAA,cACb;AAAA,YACJ;AACA,gBAAI,UAAU,SAAU,IAAI;AACxB,kBAAI,MAAM,UAAU;AACpB,yBAAW,WAAY;AACnB,uBAAO,EAAE;AAAA,cACb,GAAG,CAAC;AAAA,YACR;AACA,gBAAI,MAAM;AAAA,UACd,CAAC;AAAA,QACL;AAEA,iBAAS,uBAAuB,KAAK,MAAM;AACvC,cAAIC,KAAI,IAAI;AACZ,cAAIpB,KAAI,IAAI;AACZ,cAAI,SAAS,QAAQ,mBAAmB,GAAG;AAC3C,cAAI,UAAU,UAAU,GAAG;AACvB,gBAAIqB,KAAGD;AACP,YAAAA,KAAIpB;AACJ,YAAAA,KAAIqB;AAAA,UACR;AACA,iBAAO,EAAE,OAAOD,IAAG,QAAQpB,GAAE;AAAA,QACjC;AAGA,YAAI,iBAAiB;AAAA,UACjB,eAAe;AAAA,YACX,QAAQ;AAAA,UACZ;AAAA,UACA,aAAa;AAAA,YACT,QAAQ;AAAA,UACZ;AAAA,QACJ;AACA,YAAI,YAAY,SAAUqB,IAAGC,IAAGC,QAAO;AACnC,eAAK,IAAI,WAAWF,EAAC;AACrB,eAAK,IAAI,WAAWC,EAAC;AACrB,eAAK,QAAQ,WAAWC,MAAK;AAAA,QACjC;AAEA,kBAAU,QAAQ,SAAUN,IAAG;AAC3B,cAAIA,GAAE,OAAO;AACT,mBAAO,UAAU,MAAMA,GAAE,MAAM,aAAa,CAAC;AAAA,UACjD,WACSA,GAAE,QAAQ,QAAQ,IAAI,MAAMA,GAAE,QAAQ,MAAM,IAAI,IAAI;AACzD,mBAAO,UAAU,WAAWA,EAAC;AAAA,UACjC,OACK;AACD,mBAAO,UAAU,WAAWA,EAAC;AAAA,UACjC;AAAA,QACJ;AAEA,kBAAU,aAAa,SAAUA,IAAG;AAChC,cAAI,OAAOA,GAAE,UAAU,CAAC,EAAE,MAAM,GAAG;AACnC,cAAI,CAAC,KAAK,UAAUA,OAAM,QAAQ;AAC9B,mBAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,UAC5B;AAEA,iBAAO,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC;AAAA,QACxE;AAEA,kBAAU,aAAa,SAAUA,IAAG;AAChC,cAAI,SAASA,GAAE,MAAM,IAAI,GACrB,YAAY,OAAO,CAAC,EAAE,UAAU,QAAQ,QAAQ,UAAU,SAAS,CAAC,EAAE,MAAM,GAAG,GAC/EM,SAAQ,OAAO,SAAS,IAAI,OAAO,CAAC,EAAE,UAAU,CAAC,IAAI,GACrDF,KAAI,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI,GAC1CC,KAAI,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AAE9C,iBAAO,IAAI,UAAUD,IAAGC,IAAGC,MAAK;AAAA,QACpC;AAEA,kBAAU,UAAU,WAAW,WAAY;AACvC,cAAI,SAAS,eAAe,QAAQ,QAAQ,SAAS,EAAE,UAAU;AACjE,iBAAO,QAAQ,QAAQ,YAAY,MAAM,KAAK,IAAI,SAAS,KAAK,IAAI,OAAO,SAAS,aAAa,KAAK,QAAQ;AAAA,QAClH;AAEA,YAAI,kBAAkB,SAAU,IAAI;AAChC,cAAI,CAAC,MAAM,CAAC,GAAG,MAAM,aAAa,GAAG;AACjC,iBAAK,IAAI;AACT,iBAAK,IAAI;AACT;AAAA,UACJ;AACA,cAAIX,OAAM,GAAG,MAAM,aAAa,EAAE,MAAM,GAAG;AAC3C,eAAK,IAAI,WAAWA,KAAI,CAAC,CAAC;AAC1B,eAAK,IAAI,WAAWA,KAAI,CAAC,CAAC;AAAA,QAC9B;AAEA,wBAAgB,UAAU,WAAW,WAAY;AAC7C,iBAAO,KAAK,IAAI,QAAQ,KAAK,IAAI;AAAA,QACrC;AAEA,iBAAS,mBAAoB,KAAK;AAC9B,iBAAO,IAAI,YAAY,IAAI,SAAS,cAAc,IAAI,IAAI,SAAS,WAAW,IAAI;AAAA,QACtF;AAEA,iBAAS,WAAW,QAAQ,KAAK,aAAa;AAC1C,cAAIY,SAAQ,IAAI,OACZC,UAAS,IAAI,QACb,MAAM,OAAO,WAAW,IAAI;AAEhC,iBAAO,QAAQ,IAAI;AACnB,iBAAO,SAAS,IAAI;AAEpB,cAAI,KAAK;AACT,kBAAQ,aAAa;AAAA,YACnB,KAAK;AACF,kBAAI,UAAUD,QAAO,CAAC;AACtB,kBAAI,MAAM,IAAI,CAAC;AACf;AAAA,YAEH,KAAK;AACD,kBAAI,UAAUA,QAAOC,OAAM;AAC3B,kBAAI,OAAO,MAAI,KAAK,KAAG,GAAG;AAC1B;AAAA,YAEJ,KAAK;AACD,kBAAI,UAAU,GAAGA,OAAM;AACvB,kBAAI,MAAM,GAAG,EAAE;AACf;AAAA,YAEJ,KAAK;AACD,qBAAO,QAAQA;AACf,qBAAO,SAASD;AAChB,kBAAI,OAAO,KAAG,KAAK,KAAG,GAAG;AACzB,kBAAI,MAAM,GAAG,EAAE;AACf;AAAA,YAEJ,KAAK;AACD,qBAAO,QAAQC;AACf,qBAAO,SAASD;AAChB,kBAAI,OAAO,KAAG,KAAK,KAAG,GAAG;AACzB,kBAAI,UAAU,GAAG,CAACC,OAAM;AACxB;AAAA,YAEJ,KAAK;AACD,qBAAO,QAAQA;AACf,qBAAO,SAASD;AAChB,kBAAI,OAAO,MAAI,KAAK,KAAG,GAAG;AAC1B,kBAAI,UAAU,CAACA,QAAOC,OAAM;AAC5B,kBAAI,MAAM,GAAG,EAAE;AACf;AAAA,YAEJ,KAAK;AACD,qBAAO,QAAQA;AACf,qBAAO,SAASD;AAChB,kBAAI,UAAU,GAAGA,MAAK;AACtB,kBAAI,OAAO,MAAI,KAAK,KAAG,GAAG;AAC1B;AAAA,UACN;AACA,cAAI,UAAU,KAAK,GAAE,GAAGA,QAAOC,OAAM;AACrC,cAAI,QAAQ;AAAA,QAChB;AAGA,iBAAS,UAAU;AACf,cAAIC,QAAO,MACP,YAAY,qBACZ,sBAAsBA,MAAK,QAAQ,SAAS,OAAO,WAAWA,MAAK,QAAQ,SAAS,OAAO,MAC3F,UAAU,KAAKC,WAAU,SAAS,IAAI;AAE1C,UAAAD,MAAK,QAAQ,YAAYA,MAAK,QAAQ,qBAAqB,SAAS,KAAKA,KAAI;AAE7E,UAAAA,MAAK,OAAO,CAAC;AACb,UAAAA,MAAK,WAAW,CAAC;AAEjB,qBAAWA,MAAK,SAAS,WAAW,SAAS,cAAc,KAAK;AAChE,UAAAC,YAAWD,MAAK,SAAS,WAAW,SAAS,cAAc,KAAK;AAChE,gBAAMA,MAAK,SAAS,MAAM,SAAS,cAAc,KAAK;AACtD,oBAAUA,MAAK,SAAS,UAAU,SAAS,cAAc,KAAK;AAE9D,cAAIA,MAAK,QAAQ,WAAW;AACxB,YAAAA,MAAK,SAAS,SAAS,SAAS,cAAc,QAAQ;AACtD,YAAAA,MAAK,SAAS,UAAUA,MAAK,SAAS;AAAA,UAC1C,OACK;AACD,YAAAA,MAAK,SAAS,UAAU;AAAA,UAC5B;AAEA,UAAAb,UAAS,UAAU,aAAa;AAChC,mBAAS,aAAa,mBAAmB,MAAM;AAC/C,eAAKa,MAAK,QAAQ,SAAS;AAC3B,eAAKA,MAAK,QAAQ,SAAS;AAC3B,UAAAd,KAAI,UAAU;AAAA,YACV,OAAQ,MAAM,MAAM,EAAE,IAAI,KAAK;AAAA,YAC/B,QAAS,MAAM,MAAM,EAAE,IAAI,KAAK;AAAA,UACpC,CAAC;AAED,UAAAC,UAASc,WAAU,aAAa;AAChC,cAAI,qBAAqB;AACrB,YAAAd,UAASc,WAAU,mBAAmB;AAAA,UAC1C;AACA,UAAAf,KAAIe,WAAU;AAAA,YACV,OAAOD,MAAK,QAAQ,SAAS,QAAQ;AAAA,YACrC,QAAQA,MAAK,QAAQ,SAAS,SAAS;AAAA,UAC3C,CAAC;AACD,UAAAC,UAAS,aAAa,YAAY,CAAC;AAEnC,UAAAd,UAASa,MAAK,SAAS,SAAS,UAAU;AAC1C,wBAAcA,MAAK,SAAS,SAAS,EAAE,OAAO,WAAW,gBAAgB,QAAQ,CAAC;AAClF,UAAAb,UAAS,SAAS,YAAY;AAE9B,UAAAa,MAAK,QAAQ,YAAY,QAAQ;AACjC,mBAAS,YAAYA,MAAK,SAAS,OAAO;AAC1C,mBAAS,YAAYC,SAAQ;AAC7B,mBAAS,YAAY,OAAO;AAE5B,UAAAd,UAASa,MAAK,SAAS,SAAS;AAChC,cAAIA,MAAK,QAAQ,aAAa;AAC1B,YAAAb,UAASa,MAAK,SAASA,MAAK,QAAQ,WAAW;AAAA,UACnD;AAEA,yBAAe,KAAK,IAAI;AAExB,cAAIA,MAAK,QAAQ,YAAY;AACzB,4BAAgB,KAAKA,KAAI;AAAA,UAC7B;AAMA,cAAIA,MAAK,QAAQ,cAAc;AAC3B,8BAAkB,KAAKA,KAAI;AAAA,UAC/B;AAAA,QACJ;AAgCA,iBAAS,WAAW;AAChB,iBAAO,KAAK,QAAQ,cAAc,OAAO;AAAA,QAC7C;AAEA,iBAAS,oBAAqB;AAC1B,cAAIA,QAAO;AACX,cAAIE,QAAO,SAAS,cAAc,KAAK;AACvC,cAAI,aAAa;AACjB,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI,UAAU;AACd,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ,UAAAf,UAASe,OAAM,YAAY;AAC3B,UAAAhB,KAAIgB,OAAM;AAAA,YACN,OAAO,KAAK,QAAQ,SAAS,QAAQ;AAAA,YACrC,QAAQ,KAAK,QAAQ,SAAS,SAAS;AAAA,UAC3C,CAAC;AAED,cAAI,KAAK,QAAQ,eAAe,QAAQ;AACpC,iBAAK,SAAS,cAAc,KAAK;AACjC,YAAAf,UAAS,IAAI,qBAAqB;AAClC,YAAAe,MAAK,YAAY,EAAE;AAAA,UACvB;AAEA,cAAI,KAAK,QAAQ,eAAe,OAAO;AACnC,iBAAK,SAAS,cAAc,KAAK;AACjC,YAAAf,UAAS,IAAI,uBAAuB;AACpC,YAAAe,MAAK,YAAY,EAAE;AAAA,UACvB;AAEA,mBAAS,UAAU,IAAI;AACnB,gBAAI,GAAG,WAAW,UAAa,GAAG,WAAW;AAAG;AAEhD,eAAG,eAAe;AAClB,gBAAI,YAAY;AACZ;AAAA,YACJ;AAEA,gBAAI,cAAcF,MAAK,SAAS,QAAQ,sBAAsB;AAE9D,yBAAa;AACb,wBAAY,GAAG;AACf,wBAAY,GAAG;AACf,wBAAY,GAAG,cAAc,UAAU,QAAQ,UAAU,MAAM,KAAK,MAAM;AAC1E,uBAAW,YAAY;AACvB,wBAAY,YAAY;AAExB,gBAAI,GAAG,SAAS;AACZ,kBAAIG,WAAU,GAAG,QAAQ,CAAC;AAC1B,0BAAYA,SAAQ;AACpB,0BAAYA,SAAQ;AAAA,YACxB;AAEA,mBAAO,iBAAiB,aAAa,SAAS;AAC9C,mBAAO,iBAAiB,aAAa,SAAS;AAC9C,mBAAO,iBAAiB,WAAW,OAAO;AAC1C,mBAAO,iBAAiB,YAAY,OAAO;AAC3C,qBAAS,KAAK,MAAM,cAAc,IAAI;AAAA,UAC1C;AAEA,mBAAS,UAAU,IAAI;AACnB,gBAAI,QAAQ,GAAG;AACf,gBAAI,QAAQ,GAAG;AAEf,eAAG,eAAe;AAElB,gBAAI,GAAG,SAAS;AACZ,kBAAIA,WAAU,GAAG,QAAQ,CAAC;AAC1B,sBAAQA,SAAQ;AAChB,sBAAQA,SAAQ;AAAA,YACpB;AAEA,gBAAI,SAAS,QAAQ;AACrB,gBAAI,SAAS,QAAQ;AACrB,gBAAI,YAAYH,MAAK,QAAQ,SAAS,SAAS;AAC/C,gBAAI,WAAWA,MAAK,QAAQ,SAAS,QAAQ;AAE7C,gBAAI,cAAc,OAAO,aAAa,WAAW,aAAa,WAAW;AACrE,cAAAd,KAAIgB,OAAM;AAAA,gBACN,QAAQ,YAAY;AAAA,cACxB,CAAC;AAED,cAAAF,MAAK,QAAQ,SAAS,UAAU;AAChC,cAAAd,KAAIc,MAAK,SAAS,UAAU;AAAA,gBACxB,QAAQA,MAAK,QAAQ,SAAS,SAAS;AAAA,cAC3C,CAAC;AAED,cAAAA,MAAK,QAAQ,SAAS,UAAU;AAChC,cAAAd,KAAIc,MAAK,SAAS,UAAU;AAAA,gBACxB,QAAQA,MAAK,QAAQ,SAAS,SAAS;AAAA,cAC3C,CAAC;AAAA,YACL,WACS,cAAc,OAAO,YAAY,WAAW,YAAY,UAAU;AACvE,cAAAd,KAAIgB,OAAM;AAAA,gBACN,OAAO,WAAW;AAAA,cACtB,CAAC;AAED,cAAAF,MAAK,QAAQ,SAAS,SAAS;AAC/B,cAAAd,KAAIc,MAAK,SAAS,UAAU;AAAA,gBACxB,OAAOA,MAAK,QAAQ,SAAS,QAAQ;AAAA,cACzC,CAAC;AAED,cAAAA,MAAK,QAAQ,SAAS,SAAS;AAC/B,cAAAd,KAAIc,MAAK,SAAS,UAAU;AAAA,gBACxB,OAAOA,MAAK,QAAQ,SAAS,QAAQ;AAAA,cACzC,CAAC;AAAA,YACL;AAEA,2BAAe,KAAKA,KAAI;AACxB,8BAAkB,KAAKA,KAAI;AAC3B,+BAAmB,KAAKA,KAAI;AAC5B,2BAAe,KAAKA,KAAI;AACxB,wBAAY;AACZ,wBAAY;AAAA,UAChB;AAEA,mBAAS,UAAU;AACf,yBAAa;AACb,mBAAO,oBAAoB,aAAa,SAAS;AACjD,mBAAO,oBAAoB,aAAa,SAAS;AACjD,mBAAO,oBAAoB,WAAW,OAAO;AAC7C,mBAAO,oBAAoB,YAAY,OAAO;AAC9C,qBAAS,KAAK,MAAM,cAAc,IAAI;AAAA,UAC1C;AAEA,cAAI,IAAI;AACJ,eAAG,iBAAiB,aAAa,SAAS;AAC1C,eAAG,iBAAiB,cAAc,SAAS;AAAA,UAC/C;AAEA,cAAI,IAAI;AACJ,eAAG,iBAAiB,aAAa,SAAS;AAC1C,eAAG,iBAAiB,cAAc,SAAS;AAAA,UAC/C;AAEA,eAAK,SAAS,SAAS,YAAYE,KAAI;AAAA,QAC3C;AAEA,iBAAS,cAAcX,IAAG;AACtB,cAAI,KAAK,QAAQ,YAAY;AACzB,gBAAIa,KAAI,KAAK,SAAS,QAClB,MAAM,IAAIb,IAAG,CAAC;AAElB,YAAAa,GAAE,QAAQ,KAAK,IAAI,WAAWA,GAAE,GAAG,GAAG,KAAK,IAAI,WAAWA,GAAE,GAAG,GAAG,GAAG,CAAC,EAAE,SAAS;AAAA,UACrF;AAAA,QACJ;AAEA,iBAAS,kBAAkB;AACvB,cAAIJ,QAAO,MACPE,QAAOF,MAAK,SAAS,aAAa,SAAS,cAAc,KAAK,GAC9D,SAASA,MAAK,SAAS,SAAS,SAAS,cAAc,OAAO;AAElE,UAAAb,UAASe,OAAM,gBAAgB;AAC/B,UAAAf,UAAS,QAAQ,WAAW;AAC5B,iBAAO,OAAO;AACd,iBAAO,OAAO;AACd,iBAAO,QAAQ;AACf,iBAAO,MAAM,UAAUa,MAAK,QAAQ,aAAa,KAAK;AACtD,iBAAO,aAAa,cAAc,MAAM;AAExC,UAAAA,MAAK,QAAQ,YAAYE,KAAI;AAC7B,UAAAA,MAAK,YAAY,MAAM;AAEvB,UAAAF,MAAK,eAAe;AAEpB,mBAAS,SAAS;AACd,oBAAQ,KAAKA,OAAM;AAAA,cACf,OAAO,WAAW,OAAO,KAAK;AAAA,cAC9B,QAAQ,IAAI,gBAAgBA,MAAK,SAAS,OAAO;AAAA,cACjD,cAAcA,MAAK,SAAS,SAAS,sBAAsB;AAAA,cAC3D,WAAW,UAAU,MAAMA,MAAK,SAAS,OAAO;AAAA,YACpD,CAAC;AAAA,UACL;AAEA,mBAAS,OAAO,IAAI;AAChB,gBAAI,OAAO;AAEX,gBAAGA,MAAK,QAAQ,mBAAmB,UAAU,GAAG,YAAY,MAAK;AAC/D,qBAAO;AAAA,YACT,WAAW,GAAG,YAAY;AACtB,sBAAQ,GAAG,aAAa;AAAA,YAC5B,WAAW,GAAG,QAAQ;AAClB,sBAAQ,GAAG,SAAS;AAAA,YACxB,WAAW,GAAG,QAAQ;AAClB,sBAAQ,GAAG,SAAS;AAAA,YACxB,OAAO;AACH,sBAAQ;AAAA,YACZ;AAEA,yBAAaA,MAAK,eAAgB,QAAQA,MAAK;AAE/C,eAAG,eAAe;AAClB,0BAAc,KAAKA,OAAM,UAAU;AACnC,mBAAO,KAAKA,KAAI;AAAA,UACpB;AAEA,UAAAA,MAAK,SAAS,OAAO,iBAAiB,SAAS,MAAM;AACrD,UAAAA,MAAK,SAAS,OAAO,iBAAiB,UAAU,MAAM;AAEtD,cAAIA,MAAK,QAAQ,gBAAgB;AAC7B,YAAAA,MAAK,SAAS,SAAS,iBAAiB,cAAc,MAAM;AAC5D,YAAAA,MAAK,SAAS,SAAS,iBAAiB,kBAAkB,MAAM;AAAA,UACpE;AAAA,QACJ;AAEA,iBAAS,QAAQ,IAAI;AACjB,cAAIA,QAAO,MACPK,aAAY,KAAK,GAAG,YAAY,UAAU,MAAML,MAAK,SAAS,OAAO,GACrE,SAAS,KAAK,GAAG,eAAeA,MAAK,SAAS,SAAS,sBAAsB,GAC7E,SAAS,KAAK,GAAG,SAAS,IAAI,gBAAgBA,MAAK,SAAS,OAAO;AAEvE,mBAAS,WAAW;AAChB,gBAAI,WAAW,CAAC;AAChB,qBAAS,aAAa,IAAIK,WAAU,SAAS;AAC7C,qBAAS,aAAa,IAAI,OAAO,SAAS;AAC1C,YAAAnB,KAAIc,MAAK,SAAS,SAAS,QAAQ;AAAA,UACvC;AAEA,UAAAA,MAAK,eAAe,KAAK,GAAG,QAAQA,MAAK;AACzC,UAAAK,WAAU,QAAQL,MAAK;AACvB,UAAAA,MAAK,SAAS,OAAO,aAAa,iBAAiBA,MAAK,YAAY;AACpE,mBAAS;AAET,cAAIA,MAAK,QAAQ,iBAAiB;AAC9B,gBAAI,aAAa,sBAAsB,KAAKA,OAAM,MAAM,GACpD,kBAAkB,WAAW,WAC7B,cAAc,WAAW;AAE7B,gBAAIK,WAAU,KAAK,gBAAgB,MAAM;AACrC,qBAAO,IAAI,YAAY;AACvB,cAAAA,WAAU,IAAI,gBAAgB;AAAA,YAClC;AAEA,gBAAIA,WAAU,KAAK,gBAAgB,MAAM;AACrC,qBAAO,IAAI,YAAY;AACvB,cAAAA,WAAU,IAAI,gBAAgB;AAAA,YAClC;AAEA,gBAAIA,WAAU,KAAK,gBAAgB,MAAM;AACrC,qBAAO,IAAI,YAAY;AACvB,cAAAA,WAAU,IAAI,gBAAgB;AAAA,YAClC;AAEA,gBAAIA,WAAU,KAAK,gBAAgB,MAAM;AACrC,qBAAO,IAAI,YAAY;AACvB,cAAAA,WAAU,IAAI,gBAAgB;AAAA,YAClC;AAAA,UACJ;AACA,mBAAS;AACT,4BAAkB,KAAKL,KAAI;AAC3B,yBAAe,KAAKA,KAAI;AAAA,QAC5B;AAEA,iBAAS,sBAAsBC,WAAU;AACrC,cAAID,QAAO,MACPH,SAAQG,MAAK,cACb,UAAUC,UAAS,OACnB,WAAWA,UAAS,QACpB,sBAAsBD,MAAK,SAAS,SAAS,cAAc,GAC3D,sBAAsBA,MAAK,SAAS,SAAS,eAAe,GAC5D,UAAUA,MAAK,SAAS,QAAQ,sBAAsB,GACtD,cAAc,QAAQ,OACtB,eAAe,QAAQ,QACvB,YAAY,UAAU,GACtB,aAAa,WAAW;AAE5B,cAAI,QAAS,YAAYH,SAAS,uBAAuB;AACzD,cAAI,OAAO,QAAS,eAAe,IAAIA,UAAW,WAAW,IAAIA;AAEjE,cAAI,QAAS,aAAaA,SAAS,uBAAuB;AAC1D,cAAI,OAAO,QAAS,gBAAgB,IAAIA,UAAW,YAAY,IAAIA;AAEnE,cAAI,aAAc,IAAIA,SAAS;AAC/B,cAAI,aAAc,eAAe,IAAIA,UAAU;AAE/C,cAAI,aAAc,IAAIA,SAAS;AAC/B,cAAI,aAAc,gBAAgB,IAAIA,UAAU;AAEhD,iBAAO;AAAA,YACH,WAAW;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,YACA,QAAQ;AAAA,cACJ,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,mBAAmBjB,SAAQ;AAChC,cAAIoB,QAAO,MACPH,SAAQG,MAAK,cACbM,QAAON,MAAK,SAAS,QAAQ,sBAAsB,GACnD,SAASA,MAAK,SAAS,SAAS,sBAAsB,GACtDK,aAAY,UAAU,MAAML,MAAK,SAAS,QAAQ,MAAM,aAAa,CAAC,GACtE,KAAK,IAAI,gBAAgBA,MAAK,SAAS,OAAO,GAC9CO,OAAO,OAAO,MAAMD,MAAK,MAAQ,OAAO,SAAS,GACjDE,QAAQ,OAAO,OAAOF,MAAK,OAAS,OAAO,QAAQ,GACnDG,UAAS,CAAC,GACV,MAAM,CAAC;AAEX,cAAI7B,SAAQ;AACR,gBAAI8B,MAAK,GAAG;AACZ,gBAAIC,MAAK,GAAG;AACZ,gBAAI,KAAKN,WAAU;AACnB,gBAAI,KAAKA,WAAU;AAEnB,YAAAI,QAAO,IAAIC;AACX,YAAAD,QAAO,IAAIE;AACX,YAAAN,WAAU,IAAI;AACd,YAAAA,WAAU,IAAI;AAAA,UAClB,OACK;AACD,YAAAI,QAAO,IAAIF,OAAMV;AACjB,YAAAY,QAAO,IAAID,QAAOX;AAElB,gBAAI,KAAKY,QAAO,IAAI,GAAG,MAAM,IAAIZ;AACjC,gBAAI,KAAKY,QAAO,IAAI,GAAG,MAAM,IAAIZ;AAEjC,YAAAQ,WAAU,KAAK,IAAI;AACnB,YAAAA,WAAU,KAAK,IAAI;AAAA,UACvB;AAEA,cAAI,SAAS,CAAC;AACd,iBAAO,aAAa,IAAII,QAAO,IAAI,QAAQA,QAAO,IAAI;AACtD,iBAAO,aAAa,IAAIJ,WAAU,SAAS;AAC3C,UAAAnB,KAAIc,MAAK,SAAS,SAAS,MAAM;AAAA,QACrC;AAEA,iBAAS,iBAAiB;AACtB,cAAIA,QAAO,MACP,aAAa,OACb,WACA,WACA,kBACA,QACAK;AAEJ,mBAAS,2BAA2B,QAAQ,QAAQ;AAChD,gBAAI,UAAUL,MAAK,SAAS,QAAQ,sBAAsB,GACtDO,OAAMF,WAAU,IAAI,QACpBG,QAAOH,WAAU,IAAI;AAEzB,gBAAIL,MAAK,QAAQ,iBAAiB;AAC9B,kBAAI,OAAO,MAAM,QAAQ,MAAM,UAAU,OAAO,SAAS,QAAQ,SAAS,QAAQ;AAC9E,gBAAAK,WAAU,IAAIE;AAAA,cAClB;AAEA,kBAAI,OAAO,OAAO,QAAQ,OAAO,UAAU,OAAO,QAAQ,QAAQ,QAAQ,QAAQ;AAC9E,gBAAAF,WAAU,IAAIG;AAAA,cAClB;AAAA,YACJ,OACK;AACD,cAAAH,WAAU,IAAIE;AACd,cAAAF,WAAU,IAAIG;AAAA,YAClB;AAAA,UACJ;AAEA,mBAAS,gBAAgBI,aAAY;AACnC,YAAAZ,MAAK,SAAS,QAAQ,aAAa,gBAAgBY,WAAU;AAC7D,YAAAZ,MAAK,SAAS,SAAS,aAAa,mBAAmBY,cAAY,SAAQ,MAAM;AAAA,UACnF;AAEA,mBAAS,QAAQ,IAAI;AACjB,gBAAI,aAAc,IACd,WAAc,IACd,cAAc,IACd,aAAc;AAElB,gBAAI,GAAG,aAAa,GAAG,YAAY,YAAY,GAAG,YAAY,aAAa;AACvE,kBAAI;AACJ,kBAAI,GAAG,YAAY,UAAU;AACzB,uBAAO,WAAWZ,MAAK,SAAS,OAAO,KAAK,IAAI,WAAWA,MAAK,SAAS,OAAO,IAAI;AAAA,cACxF,OACK;AACD,uBAAO,WAAWA,MAAK,SAAS,OAAO,KAAK,IAAI,WAAWA,MAAK,SAAS,OAAO,IAAI;AAAA,cACxF;AACA,cAAAA,MAAK,QAAQ,IAAI;AAAA,YACrB,WACSA,MAAK,QAAQ,sBAAsB,GAAG,WAAW,MAAM,GAAG,WAAW,KAAK;AAC/E,iBAAG,eAAe;AAClB,kBAAI,WAAW,aAAa,GAAG,OAAO;AAEtC,cAAAK,aAAY,UAAU,MAAML,MAAK,SAAS,OAAO;AACjD,uBAAS,KAAK,MAAM,cAAc,IAAI;AACtC,uBAASA,MAAK,SAAS,SAAS,sBAAsB;AACtD,sBAAQ,QAAQ;AAAA,YACpB;AAEA,qBAAS,aAAaV,MAAK;AACvB,sBAAQA,MAAK;AAAA,gBACT,KAAK;AACD,yBAAO,CAAC,GAAG,CAAC;AAAA,gBAChB,KAAK;AACD,yBAAO,CAAC,GAAG,CAAC;AAAA,gBAChB,KAAK;AACD,yBAAO,CAAC,IAAI,CAAC;AAAA,gBACjB,KAAK;AACD,yBAAO,CAAC,GAAG,EAAE;AAAA,cACrB;AAAA,YACJ;AAAA,UACJ;AAEA,mBAAS,QAAQ,UAAU;AACvB,gBAAI,SAAS,SAAS,CAAC,GACnB,SAAS,SAAS,CAAC,GACnB,SAAS,CAAC;AAEd,uCAA2B,QAAQ,MAAM;AAEzC,mBAAO,aAAa,IAAIe,WAAU,SAAS;AAC3C,YAAAnB,KAAIc,MAAK,SAAS,SAAS,MAAM;AACjC,2BAAe,KAAKA,KAAI;AACxB,qBAAS,KAAK,MAAM,cAAc,IAAI;AACtC,+BAAmB,KAAKA,KAAI;AAC5B,2BAAe,KAAKA,KAAI;AACxB,+BAAmB;AAAA,UACvB;AAEA,mBAAS,UAAU,IAAI;AACnB,gBAAI,GAAG,WAAW,UAAa,GAAG,WAAW;AAAG;AAEhD,eAAG,eAAe;AAClB,gBAAI;AAAY;AAChB,yBAAa;AACb,wBAAY,GAAG;AACf,wBAAY,GAAG;AAEf,gBAAI,GAAG,SAAS;AACZ,kBAAIG,WAAU,GAAG,QAAQ,CAAC;AAC1B,0BAAYA,SAAQ;AACpB,0BAAYA,SAAQ;AAAA,YACxB;AACA,4BAAgB,UAAU;AAC1B,YAAAE,aAAY,UAAU,MAAML,MAAK,SAAS,OAAO;AACjD,mBAAO,iBAAiB,aAAa,SAAS;AAC9C,mBAAO,iBAAiB,aAAa,SAAS;AAC9C,mBAAO,iBAAiB,WAAW,OAAO;AAC1C,mBAAO,iBAAiB,YAAY,OAAO;AAC3C,qBAAS,KAAK,MAAM,cAAc,IAAI;AACtC,qBAASA,MAAK,SAAS,SAAS,sBAAsB;AAAA,UAC1D;AAEA,mBAAS,UAAU,IAAI;AACnB,eAAG,eAAe;AAClB,gBAAI,QAAQ,GAAG,OACX,QAAQ,GAAG;AAEf,gBAAI,GAAG,SAAS;AACZ,kBAAIG,WAAU,GAAG,QAAQ,CAAC;AAC1B,sBAAQA,SAAQ;AAChB,sBAAQA,SAAQ;AAAA,YACpB;AAEA,gBAAI,SAAS,QAAQ,WACjB,SAAS,QAAQ,WACjB,SAAS,CAAC;AAEd,gBAAI,GAAG,SAAS,aAAa;AACzB,kBAAI,GAAG,QAAQ,SAAS,GAAG;AACvB,oBAAI,SAAS,GAAG,QAAQ,CAAC;AACzB,oBAAI,SAAS,GAAG,QAAQ,CAAC;AACzB,oBAAIU,QAAO,KAAK,MAAM,OAAO,QAAQ,OAAO,UAAU,OAAO,QAAQ,OAAO,UAAU,OAAO,QAAQ,OAAO,UAAU,OAAO,QAAQ,OAAO,MAAM;AAElJ,oBAAI,CAAC,kBAAkB;AACnB,qCAAmBA,QAAOb,MAAK;AAAA,gBACnC;AAEA,oBAAIH,SAAQgB,QAAO;AAEnB,8BAAc,KAAKb,OAAMH,MAAK;AAC9B,+BAAeG,MAAK,SAAS,MAAM;AACnC;AAAA,cACJ;AAAA,YACJ;AAEA,uCAA2B,QAAQ,MAAM;AAEzC,mBAAO,aAAa,IAAIK,WAAU,SAAS;AAC3C,YAAAnB,KAAIc,MAAK,SAAS,SAAS,MAAM;AACjC,2BAAe,KAAKA,KAAI;AACxB,wBAAY;AACZ,wBAAY;AAAA,UAChB;AAEA,mBAAS,UAAU;AACf,yBAAa;AACb,4BAAgB,UAAU;AAC1B,mBAAO,oBAAoB,aAAa,SAAS;AACjD,mBAAO,oBAAoB,aAAa,SAAS;AACjD,mBAAO,oBAAoB,WAAW,OAAO;AAC7C,mBAAO,oBAAoB,YAAY,OAAO;AAC9C,qBAAS,KAAK,MAAM,cAAc,IAAI;AACtC,+BAAmB,KAAKA,KAAI;AAC5B,2BAAe,KAAKA,KAAI;AACxB,+BAAmB;AAAA,UACvB;AAEA,UAAAA,MAAK,SAAS,QAAQ,iBAAiB,aAAa,SAAS;AAC7D,UAAAA,MAAK,SAAS,SAAS,iBAAiB,WAAW,OAAO;AAC1D,UAAAA,MAAK,SAAS,QAAQ,iBAAiB,cAAc,SAAS;AAAA,QAClE;AAEA,iBAAS,iBAAiB;AACtB,cAAI,CAAC,KAAK;AAAU;AACpB,cAAIA,QAAO,MACP,YAAYA,MAAK,SAAS,SAAS,sBAAsB,GACzD,UAAUA,MAAK,SAAS,QAAQ,sBAAsB;AAE1D,UAAAd,KAAIc,MAAK,SAAS,SAAS;AAAA,YACvB,OAAO,QAAQ,QAAQ;AAAA,YACvB,QAAQ,QAAQ,SAAS;AAAA,YACzB,KAAM,QAAQ,MAAM,UAAU,MAAO;AAAA,YACrC,MAAO,QAAQ,OAAO,UAAU,OAAQ;AAAA,UAC5C,CAAC;AAAA,QACL;AACA,YAAI,oBAAoBhB,UAAS,gBAAgB,GAAG;AAEpD,iBAAS,iBAAiB;AACtB,cAAIgB,QAAO,MACPM,QAAON,MAAK,IAAI;AAEpB,cAAI,CAAC,WAAW,KAAKA,KAAI,GAAG;AACxB;AAAA,UACJ;AAEA,UAAAA,MAAK,QAAQ,OAAO,KAAKA,OAAMM,KAAI;AACnC,cAAIN,MAAK,KAAK,OAAO,cAAc,aAAa;AAC5C,YAAAA,MAAK,EAAEA,MAAK,OAAO,EAAE,QAAQ,kBAAkBM,KAAI;AAAA,UACvD,OACK;AACD,gBAAI;AACJ,gBAAI,OAAO,aAAa;AACpB,mBAAK,IAAI,YAAY,UAAU,EAAE,QAAQA,MAAK,CAAC;AAAA,YACnD,OAAO;AACH,mBAAK,SAAS,YAAY,aAAa;AACvC,iBAAG,gBAAgB,UAAU,MAAM,MAAMA,KAAI;AAAA,YACjD;AAEA,YAAAN,MAAK,QAAQ,cAAc,EAAE;AAAA,UACjC;AAAA,QACJ;AAEA,iBAAS,aAAa;AAClB,iBAAO,KAAK,SAAS,QAAQ,eAAe,KAAK,KAAK,SAAS,QAAQ,cAAc;AAAA,QACzF;AAEA,iBAAS,6BAA6B;AAClC,cAAIA,QAAO,MACP,cAAc,GACd,WAAW,CAAC,GACZ,MAAMA,MAAK,SAAS,SACpB,SACA,iBAAiB,IAAI,UAAU,GAAG,GAAG,WAAW,GAChD,cAAc,IAAI,gBAAgB,GAClCc,aAAY,WAAW,KAAKd,KAAI;AAEpC,cAAI,CAACc,cAAad,MAAK,KAAK,OAAO;AAC/B;AAAA,UACJ;AAEA,UAAAA,MAAK,KAAK,QAAQ;AAClB,mBAAS,aAAa,IAAI,eAAe,SAAS;AAClD,mBAAS,aAAa,IAAI,YAAY,SAAS;AAC/C,mBAAS,SAAS,IAAI;AACtB,UAAAd,KAAI,KAAK,QAAQ;AAEjB,oBAAUc,MAAK,SAAS,QAAQ,sBAAsB;AAEtD,UAAAA,MAAK,sBAAsB,QAAQ;AACnC,UAAAA,MAAK,uBAAuB,QAAQ;AACpC,UAAAA,MAAK,KAAK,cAAc,SAAS,KAAKA,KAAI,IAAI,mBAAmBA,MAAK,SAAS,GAAG,IAAIA,MAAK,KAAK;AAEhG,cAAIA,MAAK,QAAQ,YAAY;AACzB,8BAAkB,KAAKA,OAAM,IAAI;AAAA,UACrC,OACK;AACD,YAAAA,MAAK,eAAe;AAAA,UACxB;AAEA,yBAAe,QAAQA,MAAK;AAC5B,mBAAS,aAAa,IAAI,eAAe,SAAS;AAClD,UAAAd,KAAI,KAAK,QAAQ;AAEjB,cAAIc,MAAK,KAAK,OAAO,QAAQ;AACzB,wBAAY,KAAKA,OAAMA,MAAK,KAAK,MAAM;AAAA,UAC3C,OACK;AACD,yBAAa,KAAKA,KAAI;AAAA,UAC1B;AAEA,6BAAmB,KAAKA,KAAI;AAC5B,yBAAe,KAAKA,KAAI;AAAA,QAC5B;AAEA,iBAAS,kBAAmB,SAAS;AACjC,cAAIA,QAAO,MACP,UAAU,KAAK,IAAIA,MAAK,QAAQ,SAAS,CAAC,KAAK,GAC/C,UAAUA,MAAK,QAAQ,WAAW,KAClC,aACA,oBACA,SAASA,MAAK,SAAS,QACvBH,SAAQ,WAAW,OAAO,KAAK,GAC/B,eAAeG,MAAK,SAAS,SAAS,sBAAsB,GAC5D,UAAU,uBAAuBA,MAAK,SAAS,KAAKA,MAAK,KAAK,WAAW,GACzE,SAASA,MAAK,SAAS,SAAS,sBAAsB,GACtD,MACA;AACJ,cAAIA,MAAK,QAAQ,iBAAiB;AAC9B,mBAAO,OAAO,QAAQ,QAAQ;AAC9B,mBAAO,OAAO,SAAS,QAAQ;AAC/B,sBAAU,KAAK,IAAI,MAAM,IAAI;AAAA,UACjC;AAEA,cAAI,WAAW,SAAS;AACpB,sBAAU,UAAU;AAAA,UACxB;AAEA,iBAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,iBAAO,MAAM,IAAI,SAAS,CAAC;AAE3B,cAAI,CAAC,YAAYH,SAAQ,OAAO,OAAOA,SAAQ,OAAO,MAAM;AACxD,0BAAc,KAAKG,OAAMH,SAAQ,OAAO,MAAM,OAAO,MAAM,OAAO,GAAG;AAAA,UACzE,WACS,SAAS;AACd,iCAAqB,KAAK,IAAK,aAAa,QAAQ,QAAQ,OAAS,aAAa,SAAS,QAAQ,MAAO;AAC1G,0BAAcG,MAAK,KAAK,cAAc,OAAOA,MAAK,KAAK,YAAY;AACnE,0BAAc,KAAKA,OAAM,WAAW;AAAA,UACxC;AAEA,yBAAe,MAAM;AAAA,QACzB;AAEA,iBAAS,YAAY,QAAQ;AACzB,cAAI,OAAO,WAAW,GAAG;AACrB,kBAAM,kDAAkD;AAAA,UAC5D;AACA,cAAIA,QAAO,MACP,cAAc,OAAO,CAAC,IAAI,OAAO,CAAC,GAElC,SAASA,MAAK,SAAS,SAAS,sBAAsB,GACtD,YAAYA,MAAK,SAAS,SAAS,sBAAsB,GACzD,WAAW;AAAA,YACP,MAAM,OAAO,OAAO,UAAU;AAAA,YAC9B,KAAK,OAAO,MAAM,UAAU;AAAA,UAChC,GACAH,SAAQ,OAAO,QAAQ,aACvB,YAAY,OAAO,CAAC,GACpB,aAAa,OAAO,CAAC,GACrB,eAAgB,KAAK,OAAO,CAAC,IAAK,SAAS,KAC3C,gBAAiB,KAAK,OAAO,CAAC,IAAK,SAAS,MAC5C,SAAS,CAAC;AAEd,iBAAO,aAAa,IAAI,aAAa,QAAQ,YAAY;AACzD,iBAAO,aAAa,IAAI,IAAI,UAAU,eAAe,cAAcA,MAAK,EAAE,SAAS;AACnF,UAAAX,KAAIc,MAAK,SAAS,SAAS,MAAM;AAEjC,wBAAc,KAAKA,OAAMH,MAAK;AAC9B,UAAAG,MAAK,eAAeH;AAAA,QACxB;AAEA,iBAAS,eAAe;AACpB,cAAIG,QAAO,MACP,SAASA,MAAK,SAAS,QAAQ,sBAAsB,GACrD,QAAQA,MAAK,SAAS,SAAS,sBAAsB,GACrD,WAAWA,MAAK,SAAS,SAAS,sBAAsB,GACxD,SAAS,MAAM,OAAO,SAAS,MAC/B,QAAQ,MAAM,MAAM,SAAS,KAC7BN,KAAI,UAAW,OAAO,QAAQ,MAAM,SAAS,GAC7CpB,KAAI,SAAU,OAAO,SAAS,MAAM,UAAU,GAC9C+B,aAAY,IAAI,UAAUX,IAAGpB,IAAG0B,MAAK,YAAY;AAErD,UAAAd,KAAIc,MAAK,SAAS,SAAS,eAAeK,WAAU,SAAS,CAAC;AAAA,QAClE;AAEA,iBAAS,uBAAuB,mBAAmB;AAC/C,cAAIL,QAAO,MACP,SAASA,MAAK,SAAS,QACvB,MAAMA,MAAK,SAAS,KACpB,MAAM,OAAO,WAAW,IAAI;AAEhC,cAAI,UAAU,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAC/C,iBAAO,QAAQ,IAAI;AACnB,iBAAO,SAAS,IAAI;AAEpB,cAAI,cAAcA,MAAK,QAAQ,qBAAqB,qBAAqB,mBAAmB,GAAG;AAC/F,qBAAW,QAAQ,KAAK,WAAW;AAAA,QACvC;AAEA,iBAAS,WAAWM,OAAM;AACtB,cAAIN,QAAO,MACP,SAASM,MAAK,QACdE,QAAO,IAAI,OAAO,CAAC,CAAC,GACpBD,OAAM,IAAI,OAAO,CAAC,CAAC,GACnBQ,SAAQ,IAAI,OAAO,CAAC,CAAC,GACrBC,UAAS,IAAI,OAAO,CAAC,CAAC,GACtBlB,SAAQiB,SAAMP,OACdT,UAASiB,UAAOT,MAChB,SAASD,MAAK,QACd,SAAS,SAAS,cAAc,QAAQ,GACxC,MAAM,OAAO,WAAW,IAAI,GAC5B,SAAS,GACT,SAAS,GACT,cAAcA,MAAK,eAAeR,QAClC,eAAeQ,MAAK,gBAAgBP;AAExC,iBAAO,QAAQ;AACf,iBAAO,SAAS;AAEhB,cAAIO,MAAK,iBAAiB;AACtB,gBAAI,YAAYA,MAAK;AACrB,gBAAI,SAAS,GAAG,GAAG,aAAa,YAAY;AAAA,UAChD;AAIA,cAAI,KAAKE,OACL,KAAKD,MACL,SAAST,QACT,UAAUC,SACVkB,MAAK,GACLC,MAAK,GACL,SAAS,aACT,UAAU;AAQd,cAAIV,QAAO,GAAG;AACV,iBAAK;AACL,YAAAS,MAAM,KAAK,IAAIT,KAAI,IAAIV,SAAS;AAAA,UACpC;AAGA,cAAI,SAAS,KAAKE,MAAK,qBAAqB;AACxC,qBAASA,MAAK,sBAAsB;AACpC,qBAAW,SAASF,SAAS;AAAA,UACjC;AAOA,cAAIS,OAAM,GAAG;AACT,iBAAK;AACL,YAAAW,MAAM,KAAK,IAAIX,IAAG,IAAIR,UAAU;AAAA,UACpC;AAGA,cAAI,UAAU,KAAKC,MAAK,sBAAsB;AAC1C,sBAAUA,MAAK,uBAAuB;AACtC,sBAAW,UAAUD,UAAU;AAAA,UACnC;AAIA,cAAI,UAAU,KAAK,SAAS,SAAS,IAAI,IAAI,QAAQ,SAASkB,KAAIC,KAAI,QAAQ,OAAO;AACrF,cAAI,QAAQ;AACR,gBAAI,YAAY;AAChB,gBAAI,2BAA2B;AAC/B,gBAAI,UAAU;AACd,gBAAI,IAAI,OAAO,QAAQ,GAAG,OAAO,SAAS,GAAG,OAAO,QAAQ,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI;AACnF,gBAAI,UAAU;AACd,gBAAI,KAAK;AAAA,UACb;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,eAAeZ,OAAM;AAC1B,cAAI,SAASA,MAAK,QACd,MAAM,SAAS,cAAc,KAAK,GAClC,MAAM,SAAS,cAAc,KAAK,GAClCR,SAAQ,OAAO,CAAC,IAAI,OAAO,CAAC,GAC5BC,UAAS,OAAO,CAAC,IAAI,OAAO,CAAC;AAEjC,UAAAZ,UAAS,KAAK,gBAAgB;AAC9B,cAAI,YAAY,GAAG;AACnB,UAAAD,KAAI,KAAK;AAAA,YACL,MAAO,KAAK,OAAO,CAAC,IAAK;AAAA,YACzB,KAAM,KAAK,OAAO,CAAC,IAAK;AAAA,UAC5B,CAAC;AACD,cAAI,MAAMoB,MAAK;AACf,UAAApB,KAAI,KAAK;AAAA,YACL,OAAOY,SAAQ;AAAA,YACf,QAAQC,UAAS;AAAA,UACrB,CAAC;AAED,iBAAO;AAAA,QACX;AAEA,iBAAS,iBAAiBO,OAAM;AAC5B,iBAAO,WAAW,KAAK,MAAMA,KAAI,EAAE,UAAUA,MAAK,QAAQA,MAAK,OAAO;AAAA,QAC1E;AAEA,iBAAS,eAAeA,OAAM;AAC1B,cAAIN,QAAO;AACX,iBAAO,IAAI,QAAQ,SAAUR,UAAS;AAClC,uBAAW,KAAKQ,OAAMM,KAAI,EAAE,OAAO,SAAU,MAAM;AAC/C,cAAAd,SAAQ,IAAI;AAAA,YAChB,GAAGc,MAAK,QAAQA,MAAK,OAAO;AAAA,UAChC,CAAC;AAAA,QACL;AAEA,iBAAS,cAAc,KAAK;AACxB,cAAI,KAAK,SAAS,IAAI,YAAY;AAC9B,kBAAM,UAAU,QAAQ,KAAK,KAAK,SAAS,IAAI,WAAW,SAASvC,IAAG;AAAE,kBAAI,UAAU,IAAIA,EAAC;AAAA,YAAG,CAAC;AAC/F,iBAAK,SAAS,IAAI,WAAW,aAAa,KAAK,KAAK,SAAS,GAAG;AAChE,iBAAK,SAAS,UAAU;AAAA,UAC5B;AACA,eAAK,SAAS,MAAM;AAAA,QACxB;AAEA,iBAASoD,OAAMC,UAAS,IAAI;AACxB,cAAIpB,QAAO,MACP,KACA,SAAS,CAAC,GACV,OAAO,MACP,UAAU,SAAS,KAAKA,KAAI;AAEhC,cAAI,OAAQoB,aAAa,UAAU;AAC/B,kBAAMA;AACN,YAAAA,WAAU,CAAC;AAAA,UACf,WACS,MAAM,QAAQA,QAAO,GAAG;AAC7B,qBAASA,SAAQ,MAAM;AAAA,UAC3B,WACS,OAAQA,aAAa,eAAepB,MAAK,KAAK,KAAK;AACxD,uCAA2B,KAAKA,KAAI;AACpC,2BAAe,KAAKA,KAAI;AACxB,mBAAO;AAAA,UACX,OACK;AACD,kBAAMoB,SAAQ;AACd,qBAASA,SAAQ,UAAU,CAAC;AAC5B,mBAAO,OAAOA,SAAQ,SAAU,cAAc,OAAOA,SAAQ;AAAA,UACjE;AAEA,UAAApB,MAAK,KAAK,QAAQ;AAClB,UAAAA,MAAK,KAAK,MAAM,OAAOA,MAAK,KAAK;AACjC,UAAAA,MAAK,KAAK,YAAY;AAEtB,iBAAO,UAAU,KAAK,OAAO,EAAE,KAAK,SAAU,KAAK;AAC/C,0BAAc,KAAKA,OAAM,GAAG;AAC5B,gBAAI,CAAC,OAAO,QAAQ;AAChB,kBAAI,SAAS,uBAAuB,GAAG;AACvC,kBAAI,OAAOA,MAAK,SAAS,SAAS,sBAAsB;AACxD,kBAAI,cAAc,KAAK,QAAQ,KAAK;AACpC,kBAAI,iBAAiB,OAAO,QAAQ,OAAO;AAC3C,kBAAIF,QAAOC;AAEX,kBAAI,iBAAiB,aAAa;AAC9B,gBAAAA,UAAS,OAAO;AAChB,gBAAAD,SAAQC,UAAS;AAAA,cACrB,OACK;AACD,gBAAAD,SAAQ,OAAO;AACf,gBAAAC,UAAS,OAAO,SAAS;AAAA,cAC7B;AAEA,kBAAI,MAAM,OAAO,QAAQD,UAAS;AAClC,kBAAI,MAAM,OAAO,SAASC,WAAU;AACpC,kBAAI,KAAK,KAAKD;AACd,kBAAI,KAAK,KAAKC;AACd,cAAAC,MAAK,KAAK,SAAS,CAAC,IAAI,IAAI,IAAI,EAAE;AAAA,YACtC,WACSA,MAAK,QAAQ,UAAU;AAC5B,uBAAS;AAAA,gBACL,OAAO,CAAC,IAAI,IAAI,eAAe;AAAA,gBAC/B,OAAO,CAAC,IAAI,IAAI,gBAAgB;AAAA,gBAChC,OAAO,CAAC,IAAI,IAAI,eAAe;AAAA,gBAC/B,OAAO,CAAC,IAAI,IAAI,gBAAgB;AAAA,cACpC;AAAA,YACJ;AAEA,YAAAA,MAAK,KAAK,cAAcoB,SAAQ,eAAe;AAC/C,YAAApB,MAAK,KAAK,SAAS,OAAO,IAAI,SAAUqB,IAAG;AACvC,qBAAO,WAAWA,EAAC;AAAA,YACvB,CAAC;AACD,gBAAIrB,MAAK,QAAQ,WAAW;AACxB,qCAAuB,KAAKA,OAAMA,MAAK,KAAK,WAAW;AAAA,YAC3D;AACA,uCAA2B,KAAKA,KAAI;AACpC,2BAAe,KAAKA,KAAI;AACxB,kBAAM,GAAG;AAAA,UACb,CAAC;AAAA,QACL;AAEA,iBAAS,IAAIT,IAAG,eAAe;AAC3B,iBAAO,WAAWA,EAAC,EAAE,QAAQ,iBAAiB,CAAC;AAAA,QACnD;AAEA,iBAAS+B,QAAO;AACZ,cAAItB,QAAO,MACP,UAAUA,MAAK,SAAS,QAAQ,sBAAsB,GACtD,SAASA,MAAK,SAAS,SAAS,sBAAsB,GACtD,KAAK,OAAO,OAAO,QAAQ,MAC3B,KAAK,OAAO,MAAM,QAAQ,KAC1B,aAAa,OAAO,QAAQA,MAAK,SAAS,SAAS,eAAe,GAClE,cAAc,OAAO,SAASA,MAAK,SAAS,SAAS,gBAAgB,GACrEuB,MAAK,KAAKvB,MAAK,SAAS,SAAS,cAAc,WAC/CwB,MAAK,KAAKxB,MAAK,SAAS,SAAS,eAAe,YAChDH,SAAQG,MAAK;AAEjB,cAAIH,WAAU,YAAY,MAAMA,MAAK,GAAG;AACpC,YAAAA,SAAQ;AAAA,UACZ;AAEA,cAAI4B,OAAMzB,MAAK,QAAQ,kBAAkB,IAAI,OAAO;AACpD,eAAK,KAAK,IAAIyB,MAAK,KAAK5B,MAAK;AAC7B,eAAK,KAAK,IAAI4B,MAAK,KAAK5B,MAAK;AAC7B,UAAA0B,MAAK,KAAK,IAAIE,MAAKF,MAAK1B,MAAK;AAC7B,UAAA2B,MAAK,KAAK,IAAIC,MAAKD,MAAK3B,MAAK;AAE7B,iBAAO;AAAA,YACH,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI0B,GAAE,GAAG,IAAIC,GAAE,CAAC;AAAA,YAC3C,MAAM3B;AAAA,YACN,aAAaG,MAAK,KAAK;AAAA,UAC3B;AAAA,QACJ;AAEA,YAAI,kBAAkB;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,QACb,GACA,iBAAiB,CAAC,QAAQ,QAAQ,KAAK;AAE3C,iBAAS,QAAQoB,UAAS;AACtB,cAAIpB,QAAO,MACPM,QAAOgB,MAAK,KAAKtB,KAAI,GACrB,OAAO,WAAWjB,OAAM,eAAe,GAAGA,OAAMqC,QAAO,CAAC,GACxD,aAAc,OAAQA,aAAa,WAAWA,WAAW,KAAK,QAAQ,UACtEM,QAAO,KAAK,QAAQ,YACpBC,UAAS,KAAK,QACd,UAAU,KAAK,SACf,kBAAkB,KAAK,iBACvB,SAAS,OAAO,KAAK,WAAW,YAAY,KAAK,SAAU3B,MAAK,QAAQ,SAAS,SAAS,UAC1F,SAASA,MAAK,SAAS,SAAS,sBAAsB,GACtD,QAAQ,OAAO,QAAQ,OAAO,QAC9B;AAEJ,cAAI0B,UAAS,YAAY;AACrB,YAAApB,MAAK,cAAc,OAAO;AAC1B,YAAAA,MAAK,eAAe,OAAO;AAAA,UAC/B,WAAW,OAAOoB,UAAS,UAAU;AACjC,gBAAIA,MAAK,SAASA,MAAK,QAAQ;AAC3B,cAAApB,MAAK,cAAcoB,MAAK;AACxB,cAAApB,MAAK,eAAeoB,MAAK;AAAA,YAC7B,WAAWA,MAAK,OAAO;AACnB,cAAApB,MAAK,cAAcoB,MAAK;AACxB,cAAApB,MAAK,eAAeoB,MAAK,QAAQ;AAAA,YACrC,WAAWA,MAAK,QAAQ;AACpB,cAAApB,MAAK,cAAcoB,MAAK,SAAS;AACjC,cAAApB,MAAK,eAAeoB,MAAK;AAAA,YAC7B;AAAA,UACJ;AAEA,cAAI,eAAe,QAAQC,OAAM,IAAI,IAAI;AACrC,YAAArB,MAAK,SAAS,WAAWqB;AACzB,YAAArB,MAAK,UAAU;AAAA,UACnB;AAEA,UAAAA,MAAK,SAAS;AACd,UAAAA,MAAK,MAAMN,MAAK,KAAK;AACrB,UAAAM,MAAK,kBAAkB;AAEvB,iBAAO,IAAI,QAAQ,SAAUd,UAAS;AAClC,oBAAO,WAAW,YAAY,GAC9B;AAAA,cACI,KAAK;AACD,gBAAAA,SAAQ,WAAW,KAAKQ,OAAMM,KAAI,CAAC;AACnC;AAAA,cACJ,KAAK;AAAA,cACL,KAAK;AACD,gBAAAd,SAAQ,iBAAiB,KAAKQ,OAAMM,KAAI,CAAC;AACzC;AAAA,cACJ,KAAK;AACD,+BAAe,KAAKN,OAAMM,KAAI,EAAE,KAAKd,QAAO;AAC5C;AAAA,cACJ;AACI,gBAAAA,SAAQ,eAAe,KAAKQ,OAAMM,KAAI,CAAC;AACvC;AAAA,YACR;AAAA,UACJ,CAAC;AACD,iBAAO;AAAA,QACX;AAEA,iBAAS,WAAW;AAChB,qCAA2B,KAAK,IAAI;AAAA,QACxC;AAEA,iBAAS,QAAQ,KAAK;AAClB,cAAI,CAAC,KAAK,QAAQ,aAAa,CAAC,KAAK,QAAQ,mBAAmB;AAC5D,kBAAM;AAAA,UACV;AAEA,cAAIN,QAAO,MACP,SAASA,MAAK,SAAS;AAE3B,UAAAA,MAAK,KAAK,cAAc,cAAcA,MAAK,KAAK,aAAa,GAAG;AAChE,qBAAW,QAAQA,MAAK,SAAS,KAAKA,MAAK,KAAK,WAAW;AAC3D,6BAAmB,KAAKA,OAAM,IAAI;AAClC,4BAAkB,KAAKA,KAAI;AAG3B,cAAK,KAAK,IAAI,GAAG,IAAI,KAAM,MAAM,GAAG;AAChC,gBAAI,YAAYA,MAAK;AACrB,gBAAI,WAAWA,MAAK;AACpB,YAAAA,MAAK,sBAAsB;AAC3B,YAAAA,MAAK,uBAAuB;AAAA,UAChC;AAAA,QACJ;AAEA,iBAAS,WAAW;AAChB,cAAIA,QAAO;AACX,UAAAA,MAAK,QAAQ,YAAYA,MAAK,SAAS,QAAQ;AAC/C,UAAAZ,aAAYY,MAAK,SAAS,mBAAmB;AAC7C,cAAIA,MAAK,QAAQ,YAAY;AACzB,YAAAA,MAAK,QAAQ,YAAYA,MAAK,SAAS,UAAU;AAAA,UACrD;AACA,iBAAOA,MAAK;AAAA,QAChB;AAEA,YAAI,OAAO,WAAW,eAAe,OAAO,QAAQ;AAChD,cAAI4B,KAAI,OAAO;AACf,UAAAA,GAAE,GAAG,UAAU,SAAU,MAAM;AAC3B,gBAAI,KAAK,OAAO;AAEhB,gBAAI,OAAO,UAAU;AACjB,kBAAI,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAClD,kBAAI,aAAaA,GAAE,IAAI,EAAE,KAAK,SAAS;AAEvC,kBAAI,SAAS,OAAO;AAChB,uBAAO,WAAW,IAAI;AAAA,cAC1B,WACS,SAAS,UAAU;AACxB,uBAAO,WAAW,OAAO,MAAM,YAAY,IAAI;AAAA,cACnD,WACS,SAAS,QAAQ;AACtB,uBAAO,WAAW,KAAK,MAAM,YAAY,IAAI;AAAA,cACjD;AAEA,qBAAO,KAAK,KAAK,WAAY;AACzB,oBAAI5D,KAAI4D,GAAE,IAAI,EAAE,KAAK,SAAS;AAC9B,oBAAI,CAAC5D;AAAG;AAER,oBAAI,SAASA,GAAE,IAAI;AACnB,oBAAI4D,GAAE,WAAW,MAAM,GAAG;AACtB,yBAAO,MAAM5D,IAAG,IAAI;AACpB,sBAAI,SAAS,WAAW;AACpB,oBAAA4D,GAAE,IAAI,EAAE,WAAW,SAAS;AAAA,kBAChC;AAAA,gBACJ,OACK;AACD,wBAAM,aAAa,OAAO;AAAA,gBAC9B;AAAA,cACJ,CAAC;AAAA,YACL,OACK;AACD,qBAAO,KAAK,KAAK,WAAY;AACzB,oBAAI5D,KAAI,IAAI,QAAQ,MAAM,IAAI;AAC9B,gBAAAA,GAAE,IAAI4D;AACN,gBAAAA,GAAE,IAAI,EAAE,KAAK,WAAW5D,EAAC;AAAA,cAC7B,CAAC;AAAA,YACL;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,QAAQ,SAAS,MAAM;AAC5B,cAAI,QAAQ,UAAU,QAAQ,mBAAmB,IAAI,IAAI;AACrD,kBAAM,IAAI,MAAM,kDAAkD;AAAA,UACtE;AACA,eAAK,UAAU;AACf,eAAK,UAAU,WAAWe,OAAM,QAAQ,QAAQ,GAAG,IAAI;AAEvD,cAAI,KAAK,QAAQ,QAAQ,YAAY,MAAM,OAAO;AAC9C,gBAAI,YAAY,KAAK;AACrB,YAAAI,UAAS,WAAW,mBAAmB;AACvC,0BAAc,WAAW,EAAC,eAAgB,QAAQ,OAAQ,GAAG,CAAC;AAC9D,gBAAI,iBAAiB,SAAS,cAAc,KAAK;AACjD,iBAAK,QAAQ,WAAW,YAAY,cAAc;AAClD,2BAAe,YAAY,SAAS;AACpC,iBAAK,UAAU;AACf,iBAAK,QAAQ,MAAM,KAAK,QAAQ,OAAO,UAAU;AAAA,UACrD;AAEA,kBAAQ,KAAK,IAAI;AACjB,cAAI,KAAK,QAAQ,KAAK;AAClB,gBAAI,WAAW;AAAA,cACX,KAAK,KAAK,QAAQ;AAAA,cAClB,QAAQ,KAAK,QAAQ;AAAA,YACzB;AACA,mBAAO,KAAK,QAAQ,KAAK;AACzB,mBAAO,KAAK,QAAQ,QAAQ;AAC5B,YAAAgC,OAAM,KAAK,MAAM,QAAQ;AAAA,UAC7B;AAAA,QACJ;AAEA,gBAAQ,WAAW;AAAA,UACf,UAAU;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,UACV;AAAA,UACA,UAAU,CAAE;AAAA,UACZ,qBAAqB;AAAA,YACjB,SAAS;AAAA,YACT,WAAW;AAAA,YACX,YAAY;AAAA,UAChB;AAAA,UACA,gBAAgB;AAAA,YACZ,OAAO;AAAA,YACP,QAAQ;AAAA,UACZ;AAAA,UACA,aAAa;AAAA,UACb,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,gBAAgB;AAAA,UAChB,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,QAAQ,WAAY;AAAA,UAAE;AAAA,QAC1B;AAEA,gBAAQ,UAAU;AAAA,UACd,WAAW;AAAA,QACf;AAEA,mBAAW,QAAQ,WAAW;AAAA,UAC1B,MAAM,SAAUC,UAAS,IAAI;AACzB,mBAAOD,OAAM,KAAK,MAAMC,UAAS,EAAE;AAAA,UACvC;AAAA,UACA,KAAK,WAAY;AACb,gBAAId,QAAOgB,MAAK,KAAK,IAAI;AACzB,gBAAI,SAAShB,MAAK;AAClB,gBAAI,KAAK,QAAQ,UAAU;AACvB,qBAAO,CAAC,KAAK,KAAK,SAAS,IAAI,eAAe;AAC9C,qBAAO,CAAC,KAAK,KAAK,SAAS,IAAI,gBAAgB;AAC/C,qBAAO,CAAC,KAAK,KAAK,SAAS,IAAI,eAAe;AAC9C,qBAAO,CAAC,KAAK,KAAK,SAAS,IAAI,gBAAgB;AAAA,YACnD;AACA,mBAAOA;AAAA,UACX;AAAA,UACA,QAAQ,SAAU,MAAM;AACpB,mBAAO,QAAQ,KAAK,MAAM,IAAI;AAAA,UAClC;AAAA,UACA,SAAS,WAAY;AACjB,mBAAO,SAAS,KAAK,IAAI;AAAA,UAC7B;AAAA,UACA,SAAS,SAAUf,IAAG;AAClB,0BAAc,KAAK,MAAMA,EAAC;AAC1B,2BAAe,KAAK,SAAS,MAAM;AAAA,UACvC;AAAA,UACA,QAAQ,SAAU,KAAK;AACnB,oBAAQ,KAAK,MAAM,GAAG;AAAA,UAC1B;AAAA,UACA,SAAS,WAAY;AACjB,mBAAO,SAAS,KAAK,IAAI;AAAA,UAC7B;AAAA,QACJ,CAAC;AACD,eAAO;AAAA,MACX,CAAC;AAAA;AAAA;;;ACnmDD,sBAAmB;AACnB,SAAO,SAAS,cAAAsC;AAChB,SAAO,IAAI,cAAAA;;;ACFX,sBAAsB,MAAM;;;ACA5B,2BAAO;;;ACAP;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,SAASC,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;AAAY;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,UAASC,OAAM;AAC9C,YAAM,IAAI,iBAAiB,6DAA6DD,WAAU,KAAKC,KAAI;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,cAAc,OAAO;AAC1B,UAAM,YAAY,6BAA6B,MAAM,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,cAA2B,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,aAAa,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,yBAAyBD,OAAM;AAC3B,UAAIA,SAAQ,WAAW;AACnB,aAAK,SAAS,oBAAoB;AAAA,MACtC,WACSA,SAAQ,YAAY;AACzB,aAAK,SAAS,gBAAgB;AAAA,MAClC,WACSA,SAAQ,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,oBAAoBE,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,aAAaC,OAAMC,QAAO;AAC/B,WAAO,UAAUD,KAAI,EAAE,QAAQ,UAAUC,MAAK,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,YAAYC,WAAU;AAClB,WAAK,WAAWA;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,OAAOL,OAAM;AACT,aAAO,KAAK,SAAS,QAAQ,IAAIA,KAAI;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,MAAAA,OAAM,MAAM,KAAK,cAAc,YAAY;AACpD,yBAAmB,aAAaA,OAAM,KAAK;AAAA,IAC/C;AAAA,EACJ;AACA,WAAS,uBAAuBM,OAAM;AAClC,UAAMC,YAAW,SAAS,cAAc,UAAU;AAClD,IAAAA,UAAS,YAAYD;AACrB,WAAOC,UAAS;AAAA,EACpB;AACA,WAAS,SAAS,WAAW,EAAE,QAAQ,YAAY,OAAO,IAAI,CAAC,GAAG;AAC9D,UAAM,QAAQ,IAAI,YAAY,WAAW;AAAA,MACrC;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,MACV;AAAA,IACJ,CAAC;AACD,QAAI,UAAU,OAAO,aAAa;AAC9B,aAAO,cAAc,KAAK;AAAA,IAC9B,OACK;AACD,eAAS,gBAAgB,cAAc,KAAK;AAAA,IAChD;AACA,WAAO;AAAA,EACX;AACA,WAAS,qBAAqB;AAC1B,WAAO,IAAI,QAAQ,CAACC,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,kBAAkBF,QAAO,IAAI;AAClC,WAAO,IAAI,UAAU,EAAE,gBAAgBA,OAAM,WAAW;AAAA,EAC5D;AACA,WAAS,SAAS,YAAY,QAAQ;AAClC,UAAM,QAAQ,YAAY,SAAS,MAAM,EAAE,QAAQ,OAAO,EAAE,EAAE,MAAM,IAAI;AACxE,UAAMG,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,WAAS,YAAY,SAAS,QAAQ;AAClC,WAAO,QAAQ,OAAO,CAAC,QAAQ,QAAQC,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,CAACJ,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,kBAAkBI,WAAU;AACjC,UAAM,SAAS,aAAa,qBAAqB,GAAGA,SAAQ;AAC5D,WAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EACvC;AACA,WAAS,eAAeZ,OAAM;AAC1B,WAAO,SAAS,cAAc,cAAcA,SAAQ;AAAA,EACxD;AACA,WAAS,eAAeA,OAAM;AAC1B,UAAM,UAAU,eAAeA,KAAI;AACnC,WAAO,WAAW,QAAQ;AAAA,EAC9B;AACA,WAAS,eAAeA,OAAM,SAAS;AACnC,QAAI,UAAU,eAAeA,KAAI;AACjC,QAAI,CAAC,SAAS;AACV,gBAAU,SAAS,cAAc,MAAM;AACvC,cAAQ,aAAa,QAAQA,KAAI;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,SAAUa,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,QAAQX,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,cAAMG,YAAW,MAAM,MAAM,KAAK,IAAI,MAAM,YAAY;AACxD,eAAO,MAAM,KAAK,QAAQA,SAAQ;AAAA,MACtC,SACOS,QAAP;AACI,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,QAAQT,WAAU;AACpB,YAAM,gBAAgB,IAAI,cAAcA,SAAQ;AAChD,YAAM,QAAQ,SAAS,+BAA+B;AAAA,QAClD,YAAY;AAAA,QACZ,QAAQ,EAAE,cAAc;AAAA,QACxB,QAAQ,KAAK;AAAA,MACjB,CAAC;AACD,UAAI,MAAM,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,YAAM,QAAQ,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,UAAI,MAAM;AACN,cAAM;AAAA,IACd;AAAA,IACA,0BAA0BM,QAAO;AAC7B,YAAM,QAAQ,SAAS,6BAA6B;AAAA,QAChD,QAAQ,KAAK;AAAA,QACb,YAAY;AAAA,QACZ,QAAQ,EAAE,SAAS,MAAM,OAAOA,OAAM;AAAA,MAC1C,CAAC;AACD,aAAO,CAAC,MAAM;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,KAAKf,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,SAAUgB,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,MAAqB;AAAA,IACjB,OAAO,cAAcjB,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,CAACC,OAAM,KAAK,MAAM;AACzD,eAAO,QAAQ,OAAO,OAAO,SAAS,WAAW,CAAC,CAACA,OAAM,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,eAAe,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,eAAeiB,UAAS;AACpB,UAAI,CAACA,SAAQ,QAAQ;AACjB,cAAM,QAAQ,eAAe,eAAe,YAAY,CAAC,KAAK,eAAe,YAAY;AACzF,YAAI,OAAO;AACP,UAAAA,SAAQ,QAAQ,cAAc,IAAI;AAAA,QACtC;AAAA,MACJ;AACA,UAAI,KAAK,kCAAkCA,QAAO,GAAG;AACjD,QAAAA,SAAQ,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,iCAAiCA,UAASZ,WAAU;AAChD,WAAK,SAAS,EAAE,SAASA,UAAS,WAAW,eAAeA,UAAS;AAAA,IACzE;AAAA,IACA,6BAA6BY,UAASZ,WAAU;AAC5C,UAAIA,UAAS,eAAeA,UAAS,aAAa;AAC9C,aAAK,SAAS,iCAAiC,MAAMA,SAAQ;AAAA,MACjE,WACS,KAAK,oBAAoBY,QAAO,KAAK,iCAAiCZ,SAAQ,GAAG;AACtF,cAAMS,SAAQ,IAAI,MAAM,kDAAkD;AAC1E,aAAK,SAAS,sBAAsB,MAAMA,MAAK;AAAA,MACnD,OACK;AACD,aAAK,QAAQ,oBAAoB;AACjC,aAAK,SAAS,EAAE,SAAS,MAAM,eAAeT,UAAS;AACvD,aAAK,SAAS,oCAAoC,MAAMA,SAAQ;AAAA,MACpE;AAAA,IACJ;AAAA,IACA,0BAA0BY,UAASZ,WAAU;AACzC,WAAK,SAAS,EAAE,SAAS,OAAO,eAAeA,UAAS;AACxD,WAAK,SAAS,iCAAiC,MAAMA,SAAQ;AAAA,IACjE;AAAA,IACA,eAAeY,UAASH,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,oBAAoBG,UAAS;AACzB,aAAO,CAACA,SAAQ,UAAU,KAAK;AAAA,IACnC;AAAA,IACA,kCAAkCA,UAAS;AACvC,aAAO,CAACA,SAAQ,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,UAAMjB,QAAO,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,MAAM;AAChG,UAAM,QAAQ,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,OAAO;AAClG,QAAIA,OAAM;AACN,eAAS,OAAOA,OAAM,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,CAACkB,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,iCAAiCb,WAAU;AAChD,WAAOA,UAAS,cAAc,OAAO,CAACA,UAAS;AAAA,EACnD;AACA,WAAS,qBAAqB,KAAK,SAAS;AACxC,UAAM,eAAe,IAAI,gBAAgB;AACzC,eAAW,CAACL,OAAM,KAAK,KAAK,SAAS;AACjC,UAAI,iBAAiB;AACjB;AACJ,mBAAa,OAAOA,OAAM,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,qBAAqB,UAAU,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,wBAAwBmB,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,2BAA0B;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,CAAC,UAAU;AAC7B,YAAI,CAAC,MAAM,kBAAkB;AACzB,gBAAM,OAAO,MAAM,kBAAkB,kBAAkB,MAAM,SAAS;AACtE,gBAAM,YAAY,MAAM,aAAa;AACrC,cAAI,QACA,+BAA+B,MAAM,SAAS,KAC9C,8BAA8B,MAAM,SAAS,KAC7C,KAAK,SAAS,eAAe,MAAM,SAAS,GAAG;AAC/C,kBAAM,eAAe;AACrB,kBAAM,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,2BAA2BjB,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,GAAAkB,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,gBAAMc,WAAU,EAAE,QAAQ,KAAK,4BAA4B,QAAQ,KAAK,SAAS,cAAc;AAC/F,gBAAM,kBAAkB,KAAK,SAAS,sBAAsB,UAAUA,QAAO;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,CAAC,UAAU;AAC3B,YAAI,KAAK,sBAAsB,MAAM,MAAM,GAAG;AAC1C,eAAK,aAAa;AAAA,QACtB,OACK;AACD,iBAAO,KAAK;AAAA,QAChB;AAAA,MACJ;AACA,WAAK,cAAe,CAAC,UAAU;AAC3B,YAAI,KAAK,cAAc,KAAK,sBAAsB,MAAM,MAAM,KAAK,MAAM,kBAAkB,SAAS;AAChG,cAAI,KAAK,SAAS,yBAAyB,MAAM,QAAQ,MAAM,OAAO,KAAK,MAAM,OAAO,aAAa,GAAG;AACpG,iBAAK,WAAW,eAAe;AAC/B,kBAAM,eAAe;AACrB,iBAAK,SAAS,qBAAqB,MAAM,QAAQ,MAAM,OAAO,KAAK,MAAM,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,CAAC,UAAU;AAC3B,YAAI,iBAAiB,cAAc,KAAK,wBAAwB,KAAK,GAAG;AACpE,gBAAM,SAAU,MAAM,gBAAgB,MAAM,aAAa,EAAE,CAAC,KAAM,MAAM;AACxE,gBAAM,OAAO,KAAK,wBAAwB,MAAM;AAChD,cAAI,QAAQ,oBAAoB,IAAI,GAAG;AACnC,kBAAMpB,YAAW,KAAK,mBAAmB,IAAI;AAC7C,gBAAI,KAAK,SAAS,yBAAyB,MAAMA,WAAU,KAAK,GAAG;AAC/D,oBAAM,eAAe;AACrB,mBAAK,SAAS,uBAAuB,MAAMA,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,wBAAwB,OAAO;AAC3B,aAAO,EAAG,MAAM,UAAU,MAAM,OAAO,qBACnC,MAAM,oBACN,MAAM,QAAQ,KACd,MAAM,UACN,MAAM,WACN,MAAM,WACN,MAAM;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,MAAMA,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,CAACF,OAAM,KAAK,KAAKE,UAAS,cAAc;AAC/C,aAAK,OAAO,OAAO,OAAO,SAAS,cAAc,OAAO,GAAG,EAAE,MAAM,MAAAF,OAAM,MAAM,CAAC,CAAC;AAAA,MACrF;AACA,YAAM,SAAS,OAAO,OAAOE,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,qBAAqBqB,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,iBAAWJ,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,YAAMK,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,mBAAmBL,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,4BAA4Be,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,MAAkB;AAAA,IACd,WAAW,aAAa;AACpB,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAUG,YAAY;AAAA,oBACV,YAAY,oBAAoB,OAAO,YAAY,oBAAoB;AAAA;AAAA;AAAA;AAAA,IAIvF;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,YAAY,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,YAAY,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;AAAA,MAC5D,CAAC;AAAA,IACL;AAAA,IACA,0BAA0B;AACtB,YAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,cAAQ,OAAO;AACf,cAAQ,cAAc,YAAY;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,UAAAX,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,aAAaZ,OAAM;AACf,YAAM,UAAU,KAAK,sBAAsBA,KAAI;AAC/C,aAAO,UAAU,QAAQ,aAAa,SAAS,IAAI;AAAA,IACvD;AAAA,IACA,sBAAsBA,OAAM;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,SAASA,KAAI,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,SAASA,OAAM;AACjD,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW,UAAU,QAAQ,aAAa,MAAM,KAAKA;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,cAA2B,SAAS;AAAA,IAChC,OAAO,eAAeM,QAAO,IAAI;AAC7B,aAAO,KAAK,aAAa,kBAAkBA,KAAI,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,CAACmB,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,aAAa,eAAe,KAAK,YAAY;AAAA,IAC5D;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,aAAa;AAAA,IAC7B;AAAA,IACA,IAAI,eAAe;AACf,UAAI;AACJ,YAAMC,SAAQ,KAAK,KAAK,WAAW,MAAM,OAAO,QAAQ,OAAO,SAAS,KAAK;AAC7E,aAAO,UAAUA,KAAI;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,WAAW3B,OAAM;AACb,aAAO,KAAK,aAAa,aAAa,SAASA,OAAM;AAAA,IACzD;AAAA,EACJ;AAEA,MAAI;AACJ,GAAC,SAAU4B,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,MAAM,iBAAiB;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,UAAU5B,WAAU,uBAAuBoB,WAAU,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,WAAWpB;AAChB,WAAK,wBAAwB,yBAAyB,KAAK;AAC3D,YAAM,EAAE,QAAQ,gBAAgB,UAAU,UAAU,cAAc,UAAAG,WAAU,qBAAqB,YAAY,eAAe,qBAAqB,sBAAuB,IAAI,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,cAAc,GAAGiB,QAAO;AACpO,WAAK,SAAS;AACd,WAAK,iBAAiB;AACtB,WAAK,WAAW;AAChB,WAAK,WAAW;AAChB,WAAK,eAAe;AACpB,WAAK,WAAWjB;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,eAAeA,YAAW,KAAK,UAAU;AACrC,WAAK,WAAWA;AAChB,UAAIA,WAAU;AACV,cAAM,EAAE,WAAW,IAAIA;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,eAAeY,UAAS;AACpB,UAAI,KAAK,uBAAuB;AAC5B,QAAAA,SAAQ,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,6BAA6BA,UAASZ,WAAU;AAClD,YAAM,eAAe,MAAMA,UAAS;AACpC,YAAM,EAAE,YAAY,WAAW,IAAIA;AACnC,UAAI,gBAAgB,QAAW;AAC3B,aAAK,eAAe;AAAA,UAChB,YAAY,iBAAiB;AAAA,UAC7B;AAAA,QACJ,CAAC;AAAA,MACL,OACK;AACD,aAAK,uBAAuBA,UAAS,aAAaA,UAAS,WAAW;AACtE,aAAK,eAAe,EAAE,YAAwB,cAAc,WAAW,CAAC;AAAA,MAC5E;AAAA,IACJ;AAAA,IACA,MAAM,0BAA0BY,UAASZ,WAAU;AAC/C,YAAM,eAAe,MAAMA,UAAS;AACpC,YAAM,EAAE,YAAY,WAAW,IAAIA;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,OAAOkB,WAAU;AACnB,WAAK,aAAa;AAClB,YAAM,IAAI,QAAQ,CAACf,aAAY;AAC3B,aAAK,QAAQ,sBAAsB,MAAMA,SAAQ,CAAC;AAAA,MACtD,CAAC;AACD,YAAMe,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,wBAAwB7B,WAAUoB,UAAS;AACvC,WAAK,UAAU,WAAWpB,YAAWoB,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,0BAA0B,KAAK,GAAGA,QAAO;AAAA,IAC5I;AAAA,IACA,aAAaU,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,YAAMpB,YAAW,SAAS,iBAAiB,KAAK,kBAAkB;AAClE,UAAIA,UAAS,QAAQ;AACjB,gBAAQ,KAAK,OAAO,KAAK,0FAA0F,KAAK,mBAAmB;AAAA,MAC/I;AACA,aAAO,CAAC,GAAGA,SAAQ;AAAA,IACvB;AAAA,EACJ;AAEA,MAAM,kBAAN,MAAsB;AAAA,IAClB,YAAYmB,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,KAAK,OAAO;AACtC,YAAM,QAAQ,KAAK,iBAAiB,OAAO;AAC3C,UAAI,OAAO;AACP,cAAM,SAAS,qBAAqB,SAAS,KAAK,KAAK;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,YAAMZ,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,qBAAoB;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,CAAC,UAAU;AACzB,YAAI,KAAK,qBAAqB,GAAG;AAC7B,gBAAM,EAAE,MAAM,IAAI,MAAM,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,KAAKjB,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,WAAUoB,WAAU,CAAC,GAAG;AACjC,UAAI,KAAK,SAAS,iCAAiCpB,WAAUoB,SAAQ,MAAM,GAAG;AAC1E,YAAI,oBAAoBpB,WAAU,KAAK,KAAK,SAAS,YAAY,GAAG;AAChE,eAAK,SAAS,wBAAwBA,WAAUoB,QAAO;AAAA,QAC3D,OACK;AACD,iBAAO,SAAS,OAAOpB,UAAS,SAAS;AAAA,QAC7C;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,WAAW,WAAW,uBAAuBoB,WAAU,CAAC,GAAG;AACvD,WAAK,KAAK;AACV,WAAK,eAAe,IAAI,MAAM,MAAM,UAAU,SAAS,GAAG,uBAAuB,OAAO,OAAO,EAAE,UAAU,KAAK,SAAS,GAAGA,QAAO,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,gBAAgBR,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,aAAakB,QAAO;AAChB,WAAK,SAAS,aAAaA,MAAK;AAAA,IACpC;AAAA,IACA,eAAeA,QAAO;AAClB,WAAK,SAAS,eAAeA,MAAK;AAAA,IACtC;AAAA,IACA,6BAA6B9B,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,SAAU+B,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,eAAeC,WAAU;AACrB,WAAK,SAAS,sBAAsBA,SAAQ;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,IAAAf,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,CAAC,UAAU;AACpC,cAAMd,YAAW,uBAAuB,KAAK;AAC7C,YAAIA,aAAY,sBAAsBA,SAAQ,GAAG;AAC7C,gBAAM,eAAe;AACrB,eAAK,uBAAuBA,SAAQ;AAAA,QACxC;AAAA,MACJ;AACA,WAAK,sBAAsB,CAAC,UAAU;AAClC,YAAI,KAAK,WAAW,OAAO,MAAM,QAAQ,UAAU;AAC/C,eAAK,mBAAmB,MAAM,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,uBAAuBA,WAAU;AACnC,YAAMC,QAAO,MAAMD,UAAS;AAC5B,UAAIC,OAAM;AACN,aAAK,mBAAmBA,KAAI;AAAA,MAChC;AAAA,IACJ;AAAA,IACA,mBAAmBA,OAAM;AACrB,WAAK,SAAS,0BAA0B,cAAc,KAAKA,KAAI,CAAC;AAAA,IACpE;AAAA,EACJ;AACA,WAAS,uBAAuB,OAAO;AACnC,QAAI;AACJ,UAAM,iBAAiB,KAAK,MAAM,YAAY,QAAQ,OAAO,SAAS,SAAS,GAAG;AAClF,QAAI,yBAAyB,eAAe;AACxC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,WAAS,sBAAsBD,WAAU;AACrC,QAAI;AACJ,UAAM,eAAe,KAAKA,UAAS,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,CAACoB,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,YAAYU,OAAM;AACd,WAAK,OAAO,CAAC;AACb,WAAK,YAAY,CAAC;AAClB,WAAK,OAAOA;AAAA,IAChB;AAAA,IACA,IAAIjC,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,YAAMkC,OAAM,WAAWlC,SAAQ;AAC/B,YAAMuB,SAAQ,KAAK,KAAK,QAAQW,IAAG;AACnC,UAAIX,SAAQ;AACR,aAAK,KAAK,OAAOA,QAAO,CAAC;AAC7B,WAAK,KAAK,QAAQW,IAAG;AACrB,WAAK,KAAK;AAAA,IACd;AAAA,IACA,OAAO;AACH,iBAAWA,QAAO,KAAK,KAAK,OAAO,KAAK,IAAI,GAAG;AAC3C,eAAO,KAAK,UAAUA,IAAG;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,MAAMJ,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,sBAAsB9B,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,cAAMG,YAAW,MAAM,MAAMH,UAAS,SAAS,GAAG,EAAE,SAAS,EAAE,gBAAgB,QAAQ,QAAQ,YAAY,EAAE,CAAC;AAC9G,cAAM,eAAe,MAAMG,UAAS,KAAK;AACzC,cAAM,WAAW,aAAa,eAAe,YAAY;AACzD,aAAK,cAAc,IAAIH,WAAU,QAAQ;AAAA,MAC7C,SACOS,IAAP;AAAA,MACA;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,MAAMT,WAAUoB,WAAU,CAAC,GAAG;AAC1B,YAAM,eAAeA,SAAQ,QAAQ,SAAS,eAAeA,SAAQ,KAAK,IAAI;AAC9E,UAAI,wBAAwB,cAAc;AACtC,qBAAa,MAAMpB,UAAS,SAAS;AACrC,qBAAa;AAAA,MACjB,OACK;AACD,aAAK,UAAU,aAAa,UAAUA,SAAQ,GAAGoB,QAAO;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,oBAAoBvB,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,sBAAsBgC,WAAU;AAC5B,WAAK,QAAQ,sBAAsB,EAAE,gBAAgBA,UAAS,CAAC;AAAA,IACnE;AAAA,IACA,6BAA6B,MAAMhC,WAAU;AACzC,aAAO,KAAK,qBAAqB,IAAI,KAAK,oBAAoBA,WAAU,KAAK,SAAS,YAAY;AAAA,IACtG;AAAA,IACA,8BAA8B;AAAA,IAAE;AAAA,IAChC,yBAAyB,MAAMA,WAAU,OAAO;AAC5C,aAAQ,KAAK,qBAAqB,IAAI,KAClC,oBAAoBA,WAAU,KAAK,SAAS,YAAY,KACxD,KAAK,yCAAyC,MAAMA,WAAU,KAAK;AAAA,IAC3E;AAAA,IACA,uBAAuB,MAAMA,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,WAAUoB,UAAS;AACvC,wCAAkCpB,SAAQ;AAC1C,WAAK,QAAQ,wBAAwBA,WAAUoB,QAAO;AAAA,IAC1D;AAAA,IACA,aAAaU,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,6BAA6B9B,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,GAAGuB,UAAS;AACxC,YAAM,QAAQ,KAAK,8BAA8B,SAASA,QAAO;AACjE,YAAM,EAAE,kBAAkB,QAAQ,EAAE,QAAAe,QAAO,EAAG,IAAI;AAClD,UAAI,KAAK,KAAK,YAAYA,SAAQ;AAC9B,aAAK,KAAK,SAAS,gBAAgBA;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,MAAMnC,WAAU,IAAI;AACzD,YAAM,QAAQ,KAAK,6CAA6C,MAAMA,WAAU,EAAE;AAClF,aAAO,CAAC,MAAM;AAAA,IAClB;AAAA,IACA,kCAAkCA,WAAU;AACxC,YAAM,QAAQ,KAAK,wCAAwCA,SAAQ;AACnE,aAAO,CAAC,MAAM;AAAA,IAClB;AAAA,IACA,6CAA6C,MAAMA,WAAU,OAAO;AAChE,aAAO,SAAS,eAAe;AAAA,QAC3B,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAKA,UAAS,MAAM,eAAe,MAAM;AAAA,QACnD,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,wCAAwCA,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,SAASoB,UAAS;AAC5C,aAAO,SAAS,uBAAuB;AAAA,QACnC,QAAQ,OAAO,OAAO,EAAE,QAAQ,GAAGA,QAAO;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,YAAYS,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,CAACO,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,MAAMpC,WAAUoB,UAAS;AAC9B,YAAQ,MAAMpB,WAAUoB,QAAO;AAAA,EACnC;AACA,WAAS,oBAAoB,QAAQ;AACjC,YAAQ,oBAAoB,MAAM;AAAA,EACtC;AACA,WAAS,uBAAuB,QAAQ;AACpC,YAAQ,uBAAuB,MAAM;AAAA,EACzC;AACA,WAAS,oBAAoBvB,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,MAAIwC,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,cAAMlC,QAAO,MAAM,cAAc;AACjC,YAAIA,OAAM;AACN,gBAAMmC,YAAW,kBAAkBnC,KAAI;AACvC,gBAAM,eAAe,aAAa,aAAamC,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,SAASvC,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,eAAee,UAAS;AACpB,UAAI;AACJ,MAAAA,SAAQ,QAAQ,aAAa,IAAI,KAAK;AACtC,WAAK,KAAK,KAAK,8BAA8B,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,mBAAmB,GAAG;AAChH,QAAAA,SAAQ,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,6BAA6BA,UAASZ,WAAU;AAClD,YAAM,KAAK,aAAaA,SAAQ;AAChC,WAAK,oBAAoB;AAAA,IAC7B;AAAA,IACA,MAAM,0BAA0BY,UAASZ,WAAU;AAC/C,YAAM,KAAK,aAAaA,SAAQ;AAChC,WAAK,oBAAoB;AAAA,IAC7B;AAAA,IACA,eAAeY,UAASH,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,gBAAgBT,WAAU;AAC1D,YAAM,QAAQ,KAAK,iBAAiB,eAAe,aAAa,eAAe,SAAS;AACxF,YAAM,SAAS,kCAAkC,OAAO,eAAe,aAAa,eAAe,SAAS;AAC5G,YAAM,SAAS,aAAaA,SAAQ;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,gBAAgBS,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,GAAGQ,UAAS;AAClD,YAAM,QAAQ,SAAS,6BAA6B;AAAA,QAChD,QAAQ,KAAK;AAAA,QACb,QAAQ,OAAO,OAAO,EAAE,SAAS,GAAGA,QAAO;AAAA,QAC3C,YAAY;AAAA,MAChB,CAAC;AACD,YAAM,EAAE,kBAAkB,QAAQ,EAAE,QAAAe,QAAO,EAAG,IAAI;AAClD,UAAI,KAAK,KAAK,YAAYA,SAAQ;AAC9B,aAAK,KAAK,SAAS,gBAAgBA;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,eAAeI,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,YAAMxB,WAAU,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,sBAAsBA;AAC3B,aAAO,IAAI,QAAQ,CAACT,aAAY;AAC5B,aAAK,sBAAsB,MAAM;AAC7B,eAAK,sBAAsB,MAAM;AAAA,UAAE;AACnC,eAAK,sBAAsB;AAC3B,UAAAA,SAAQ;AAAA,QACZ;AACA,QAAAS,SAAQ,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,kBAAMZ,YAAW,EAAE,YAAY,YAAY,aAAa;AACxD,kBAAMiB,WAAU;AAAA,cACZ,UAAAjB;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,uBAAuB,KAAK;AAAA,cAC5B,UAAU;AAAA,YACd;AACA,gBAAI,KAAK;AACL,cAAAiB,SAAQ,SAAS,KAAK;AAC1B,oBAAQ,MAAM,MAAM,KAAKA,QAAO;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,qCAAqC,KAAK,QAAQ,kEAAkE;AAChK,YAAM,KAAK,cAAc,cAAc,QAAQ;AAAA,IACnD;AAAA,IACA,mCAAmC,eAAe;AAC9C,WAAK,QAAQ,aAAa,YAAY,EAAE;AACxC,YAAMjB,YAAW,cAAc;AAC/B,YAAM2B,SAAQ,OAAO,KAAKV,WAAU,CAAC,MAAM;AACvC,YAAI,eAAe,UAAU;AACzB,eAAK,cAAc,GAAG;AAAA,QAC1B,OACK;AACD,kBAAQ,MAAM,KAAKA,QAAO;AAAA,QAC9B;AAAA,MACJ;AACA,YAAM,QAAQ,SAAS,uBAAuB;AAAA,QAC1C,QAAQ,KAAK;AAAA,QACb,QAAQ,EAAE,UAAAjB,WAAU,OAAA2B,OAAM;AAAA,QAC1B,YAAY;AAAA,MAChB,CAAC;AACD,aAAO,CAAC,MAAM;AAAA,IAClB;AAAA,IACA,+BAA+B,eAAe;AAC1C,WAAK,KAAK,QAAQ;AAClB,WAAK,uBAAuB,aAAa;AAAA,IAC7C;AAAA,IACA,uBAAuB,eAAe;AAClC,YAAMjC,WAAU,iBAAiB,cAAc,6DAA6D,KAAK,QAAQ;AACzH,YAAM,IAAI,uBAAuBA,QAAO;AAAA,IAC5C;AAAA,IACA,MAAM,cAAcM,WAAU;AAC1B,YAAM,UAAU,IAAI,cAAcA,SAAQ;AAC1C,YAAM,eAAe,MAAM,QAAQ;AACnC,YAAM,EAAE,UAAAH,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,YAAMiB,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,KAAI,GAAG,KAAK,SAAS;AACtF,YAAI,SAAS;AACT,iBAAO;AAAA,QACX;AACA,kBAAU,gBAAgB,UAAU,cAAc,6BAA6BA,MAAK,GAAG,KAAK,SAAS;AACrG,YAAI,SAAS;AACT,gBAAM,QAAQ;AACd,iBAAO,MAAM,KAAK,2BAA2B,OAAO;AAAA,QACxD;AAAA,MACJ,SACOL,QAAP;AACI,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,YAAMK,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,YAAMQ,SAAQ,KAAK,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,aAAa,QAAQ,OAAO,SAAS,KAAK;AAC9G,aAAO,UAAUA,KAAI;AAAA,IACzB;AAAA,IACA,oBAAoB,eAAe;AAC/B,aAAO,KAAK,kBAAkB,IAAI,aAAa;AAAA,IACnD;AAAA,IACA,2BAA2B,eAAeJ,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,oBAAoBJ,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,uDAAuD;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,cAA4B,YAAY;AAAA,IACpC,aAAa,cAAc,YAAY;AACnC,YAAM,WAAW,cAAc;AAAA,IACnC;AAAA,IACA,MAAM,oBAAoB;AACtB,UAAI;AACA,cAAM,KAAK,OAAO;AAAA,MACtB,SACOL,QAAP;AACI,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,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,cAAc,KAAK,GAAG;AAC3B,gBAAM,mBAAmB;AACzB,gBAAM,MAAM,OAAO,OAAO,IAAI;AAAA,QAClC;AAAA,MACJ,GAAG;AAAA,IACP;AAAA,IACA,aAAa;AACT,UAAI;AACA,aAAK,OAAO;AAAA,MAChB,SACO,IAAP;AAAA,MAAa;AAAA,IACjB;AAAA,IACA,gCAAgC;AAC5B,WAAK,kBAAkB,QAAQ,CAAC4B,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,cAAMnC,YAAW,KAAK,cAAc,cAAc,UAAU;AAC5D,aAAK,YAAYA,SAAQ;AACzB,eAAOA;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,MAAMR,UAAS;AACX,YAAM,IAAI,MAAM,GAAG,KAAK,gBAAgBA,UAAS;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,cAAc,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,YAAMa,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,QAAQ2B;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;AAAU,aAAO;AAC5C,QAAI,eAAe,QAAQ,eAAe;AAAQ,aAAO;AACzD,QAAI,MAAM,QAAQ,GAAG;AAAG,aAAO,IAAI,IAAI,IAAI;AAC3C,WAAO,OAAO,KAAK,GAAG,EAAE,OAAO,SAAU,KAAKC,MAAK;AAC/C,UAAI,QAAQA,KAAI,CAAC,EAAE,YAAY,IAAIA,KAAI,MAAM,CAAC,EAAE,QAAQ,aAAa,SAAUC,IAAGC,IAAG;AACjF,eAAO,MAAMA,GAAE,YAAY;AAAA,MAC/B,CAAC;AACD,UAAI,KAAK,IAAI,KAAK,IAAIF,IAAG,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,aAAK,aAAa,YAAY;AAAA,IACvD;AAAA,IAEA,qBAAqBG,OAAM;AACzB,YAAM,QAAQ,IAAI,aAAa,WAAW,EAAE,MAAAA,MAAK,CAAC;AAClD,aAAO,KAAK,cAAc,KAAK;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,4BAA4B,OAAO;AACjD,QAAI,MAAM,kBAAkB,iBAAiB;AAC3C,YAAM,EAAE,QAAQ,MAAM,QAAQ,EAAE,aAAa,EAAE,IAAI;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;;;ACT1E,2BAAM,QAAQ,QAAQ;;;ACDtB,iCAAO;;;ACKP,GAAC,SAASC,IAAE;AAAC,kBAAY,OAAO,UAAQ,OAAO,MAAI,OAAO,CAAC,QAAQ,GAAEA,EAAC,IAAEA,GAAE,MAAM;AAAA,EAAC,EAAE,SAASC,IAAE;AAAC,QAAID,IAAEE,IAAEC,IAAEC;AAAE,aAASC,GAAEL,IAAEE,IAAE;AAAC,UAAIC,IAAEC,IAAEC,KAAEL,GAAE,SAAS,YAAY;AAAE,aAAM,WAASK,MAAGD,MAAGD,KAAEH,GAAE,YAAY,MAAK,EAAE,CAACA,GAAE,QAAM,CAACI,MAAG,UAAQD,GAAE,SAAS,YAAY,OAAK,CAAC,EAAEC,KAAEH,GAAE,kBAAgBG,KAAE,IAAI,EAAE,CAAC,MAAIE,GAAEF,EAAC,OAAK,0CAA0C,KAAKC,EAAC,IAAE,CAACL,GAAE,WAAS,QAAMK,MAAGL,GAAE,QAAME,OAAII,GAAEN,EAAC;AAAA,IAAC;AAAC,aAASM,GAAEN,IAAE;AAAC,aAAOC,GAAE,KAAK,QAAQ,QAAQD,EAAC,KAAG,CAACC,GAAED,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,WAAU;AAAC,eAAM,aAAWC,GAAE,IAAI,MAAK,YAAY;AAAA,MAAC,CAAC,EAAE;AAAA,IAAM;AAAC,IAAAA,GAAE,KAAGA,GAAE,MAAI,CAAC,GAAEA,GAAE,OAAOA,GAAE,IAAG,EAAC,SAAQ,UAAS,SAAQ,EAAC,WAAU,GAAE,OAAM,KAAI,QAAO,IAAG,MAAK,IAAG,KAAI,IAAG,OAAM,IAAG,QAAO,IAAG,MAAK,IAAG,MAAK,IAAG,WAAU,IAAG,SAAQ,IAAG,QAAO,KAAI,OAAM,IAAG,OAAM,IAAG,KAAI,GAAE,IAAG,GAAE,EAAC,CAAC,GAAEA,GAAE,GAAG,OAAO,EAAC,cAAa,SAASD,IAAE;AAAC,UAAIE,KAAE,KAAK,IAAI,UAAU,GAAEC,KAAE,eAAaD,IAAEE,KAAEJ,KAAE,yBAAuB,iBAAgBA,KAAE,KAAK,QAAQ,EAAE,OAAO,WAAU;AAAC,YAAIA,KAAEC,GAAE,IAAI;AAAE,gBAAO,CAACE,MAAG,aAAWH,GAAE,IAAI,UAAU,MAAII,GAAE,KAAKJ,GAAE,IAAI,UAAU,IAAEA,GAAE,IAAI,YAAY,IAAEA,GAAE,IAAI,YAAY,CAAC;AAAA,MAAC,CAAC,EAAE,GAAG,CAAC;AAAE,aAAM,YAAUE,MAAGF,GAAE,SAAOA,KAAEC,GAAE,KAAK,CAAC,EAAE,iBAAe,QAAQ;AAAA,IAAC,GAAE,WAAUD,KAAE,GAAE,WAAU;AAAC,aAAO,KAAK,KAAK,WAAU;AAAC,aAAK,OAAK,KAAK,KAAG,WAAU,EAAEA;AAAA,MAAE,CAAC;AAAA,IAAC,IAAG,gBAAe,WAAU;AAAC,aAAO,KAAK,KAAK,WAAU;AAAC,sBAAc,KAAK,KAAK,EAAE,KAAGC,GAAE,IAAI,EAAE,WAAW,IAAI;AAAA,MAAC,CAAC;AAAA,IAAC,EAAC,CAAC,GAAEA,GAAE,OAAOA,GAAE,KAAK,GAAG,GAAE,EAAC,MAAKA,GAAE,KAAK,eAAaA,GAAE,KAAK,aAAa,SAASC,IAAE;AAAC,aAAO,SAASF,IAAE;AAAC,eAAM,CAAC,CAACC,GAAE,KAAKD,IAAEE,EAAC;AAAA,MAAC;AAAA,IAAC,CAAC,IAAE,SAASF,IAAEE,IAAEC,IAAE;AAAC,aAAM,CAAC,CAACF,GAAE,KAAKD,IAAEG,GAAE,CAAC,CAAC;AAAA,IAAC,GAAE,WAAU,SAASH,IAAE;AAAC,aAAOK,GAAEL,IAAE,CAAC,MAAMC,GAAE,KAAKD,IAAE,UAAU,CAAC,CAAC;AAAA,IAAC,GAAE,UAAS,SAASA,IAAE;AAAC,UAAIE,KAAED,GAAE,KAAKD,IAAE,UAAU,GAAEG,KAAE,MAAMD,EAAC;AAAE,cAAOC,MAAG,KAAGD,OAAIG,GAAEL,IAAE,CAACG,EAAC;AAAA,IAAC,EAAC,CAAC,GAAEF,GAAE,KAAK,EAAE,WAAW,CAAC,EAAE,UAAQA,GAAE,KAAK,CAAC,SAAQ,QAAQ,GAAE,SAASD,IAAEG,IAAE;AAAC,UAAIE,KAAE,YAAUF,KAAE,CAAC,QAAO,OAAO,IAAE,CAAC,OAAM,QAAQ,GAAEC,KAAED,GAAE,YAAY,GAAEG,KAAE,EAAC,YAAWL,GAAE,GAAG,YAAW,aAAYA,GAAE,GAAG,aAAY,YAAWA,GAAE,GAAG,YAAW,aAAYA,GAAE,GAAG,YAAW;AAAE,eAASM,GAAEP,IAAEE,IAAEC,IAAEC,IAAE;AAAC,eAAOH,GAAE,KAAKI,IAAE,WAAU;AAAC,UAAAH,MAAG,WAAWD,GAAE,IAAID,IAAE,YAAU,IAAI,CAAC,KAAG,GAAEG,OAAID,MAAG,WAAWD,GAAE,IAAID,IAAE,WAAS,OAAK,OAAO,CAAC,KAAG,IAAGI,OAAIF,MAAG,WAAWD,GAAE,IAAID,IAAE,WAAS,IAAI,CAAC,KAAG;AAAA,QAAE,CAAC,GAAEE;AAAA,MAAC;AAAC,MAAAD,GAAE,GAAG,UAAQE,EAAC,IAAE,SAASH,IAAE;AAAC,eAAO,WAASA,KAAEM,GAAE,UAAQH,EAAC,EAAE,KAAK,IAAI,IAAE,KAAK,KAAK,WAAU;AAAC,UAAAF,GAAE,IAAI,EAAE,IAAIG,IAAEG,GAAE,MAAKP,EAAC,IAAE,IAAI;AAAA,QAAC,CAAC;AAAA,MAAC,GAAEC,GAAE,GAAG,UAAQE,EAAC,IAAE,SAASH,IAAEE,IAAE;AAAC,eAAM,YAAU,OAAOF,KAAEM,GAAE,UAAQH,EAAC,EAAE,KAAK,MAAKH,EAAC,IAAE,KAAK,KAAK,WAAU;AAAC,UAAAC,GAAE,IAAI,EAAE,IAAIG,IAAEG,GAAE,MAAKP,IAAE,MAAGE,EAAC,IAAE,IAAI;AAAA,QAAC,CAAC;AAAA,MAAC;AAAA,IAAC,CAAC,GAAED,GAAE,GAAG,YAAUA,GAAE,GAAG,UAAQ,SAASD,IAAE;AAAC,aAAO,KAAK,IAAI,QAAMA,KAAE,KAAK,aAAW,KAAK,WAAW,OAAOA,EAAC,CAAC;AAAA,IAAC,IAAGC,GAAE,KAAK,EAAE,KAAK,OAAM,GAAG,EAAE,WAAW,KAAK,EAAE,KAAK,KAAK,MAAIA,GAAE,GAAG,cAAYC,KAAED,GAAE,GAAG,YAAW,SAASD,IAAE;AAAC,aAAO,UAAU,SAAOE,GAAE,KAAK,MAAKD,GAAE,UAAUD,EAAC,CAAC,IAAEE,GAAE,KAAK,IAAI;AAAA,IAAC,KAAID,GAAE,GAAG,KAAG,CAAC,CAAC,cAAc,KAAK,UAAU,UAAU,YAAY,CAAC,GAAEA,GAAE,GAAG,OAAO,EAAC,QAAOG,KAAEH,GAAE,GAAG,OAAM,SAASC,IAAEC,IAAE;AAAC,aAAM,YAAU,OAAOD,KAAE,KAAK,KAAK,WAAU;AAAC,YAAIF,KAAE;AAAK,mBAAW,WAAU;AAAC,UAAAC,GAAED,EAAC,EAAE,MAAM,GAAEG,MAAGA,GAAE,KAAKH,EAAC;AAAA,QAAC,GAAEE,EAAC;AAAA,MAAC,CAAC,IAAEE,GAAE,MAAM,MAAK,SAAS;AAAA,IAAC,IAAG,mBAAkBD,KAAE,mBAAkB,SAAS,cAAc,KAAK,IAAE,gBAAc,aAAY,WAAU;AAAC,aAAO,KAAK,KAAKA,KAAE,wBAAuB,SAASH,IAAE;AAAC,QAAAA,GAAE,eAAe;AAAA,MAAC,CAAC;AAAA,IAAC,IAAG,iBAAgB,WAAU;AAAC,aAAO,KAAK,OAAO,sBAAsB;AAAA,IAAC,GAAE,QAAO,SAASA,IAAE;AAAC,UAAG,WAASA;AAAE,eAAO,KAAK,IAAI,UAASA,EAAC;AAAE,UAAG,KAAK;AAAO,iBAAQE,IAAEC,IAAEC,KAAEH,GAAE,KAAK,CAAC,CAAC,GAAEG,GAAE,UAAQA,GAAE,CAAC,MAAI,YAAU;AAAC,eAAI,gBAAcF,KAAEE,GAAE,IAAI,UAAU,MAAI,eAAaF,MAAG,YAAUA,QAAKC,KAAE,SAASC,GAAE,IAAI,QAAQ,GAAE,EAAE,GAAE,CAAC,MAAMD,EAAC,KAAG,MAAIA;AAAG,mBAAOA;AAAE,UAAAC,KAAEA,GAAE,OAAO;AAAA,QAAC;AAAC,aAAO;AAAA,IAAC,EAAC,CAAC,GAAEH,GAAE,GAAG,SAAO,EAAC,KAAI,SAASD,IAAEE,IAAEC,IAAE;AAAC,UAAIC,IAAEC,KAAEJ,GAAE,GAAGD,EAAC,EAAE;AAAU,WAAII,MAAKD;AAAE,QAAAE,GAAE,QAAQD,EAAC,IAAEC,GAAE,QAAQD,EAAC,KAAG,CAAC,GAAEC,GAAE,QAAQD,EAAC,EAAE,KAAK,CAACF,IAAEC,GAAEC,EAAC,CAAC,CAAC;AAAA,IAAC,GAAE,MAAK,SAASJ,IAAEE,IAAEC,IAAEC,IAAE;AAAC,UAAIC,IAAEC,KAAEN,GAAE,QAAQE,EAAC;AAAE,UAAGI,OAAIF,MAAGJ,GAAE,QAAQ,CAAC,EAAE,cAAY,OAAKA,GAAE,QAAQ,CAAC,EAAE,WAAW;AAAU,aAAIK,KAAE,GAAEA,KAAEC,GAAE,QAAOD;AAAI,UAAAL,GAAE,QAAQM,GAAED,EAAC,EAAE,CAAC,CAAC,KAAGC,GAAED,EAAC,EAAE,CAAC,EAAE,MAAML,GAAE,SAAQG,EAAC;AAAA,IAAC,EAAC;AAAE,QAAII,IAAEC,KAAE,GAAEC,KAAE,MAAM,UAAU;AAAM,IAAAR,GAAE,aAAWM,KAAEN,GAAE,WAAU,SAASD,IAAE;AAAC,eAAQE,IAAEC,IAAEC,KAAE,GAAE,SAAOD,KAAEH,GAAEI,EAAC,IAAGA;AAAI,YAAG;AAAC,WAACF,KAAED,GAAE,MAAME,IAAE,QAAQ,MAAID,GAAE,UAAQD,GAAEE,EAAC,EAAE,eAAe,QAAQ;AAAA,QAAC,SAAOH,IAAN;AAAA,QAAS;AAAC,MAAAO,GAAEP,EAAC;AAAA,IAAC,IAAGC,GAAE,SAAO,SAASD,IAAEG,IAAED,IAAE;AAAC,UAAIE,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,CAAC,GAAEC,KAAET,GAAE,MAAM,GAAG,EAAE,CAAC;AAAE,aAAOA,KAAEA,GAAE,MAAM,GAAG,EAAE,CAAC,GAAEI,KAAEK,KAAE,MAAIT,IAAEE,OAAIA,KAAEC,IAAEA,KAAEF,GAAE,SAAQA,GAAE,KAAK,GAAG,EAAEG,GAAE,YAAY,CAAC,IAAE,SAASJ,IAAE;AAAC,eAAM,CAAC,CAACC,GAAE,KAAKD,IAAEI,EAAC;AAAA,MAAC,GAAEH,GAAEQ,EAAC,IAAER,GAAEQ,EAAC,KAAG,CAAC,GAAEJ,KAAEJ,GAAEQ,EAAC,EAAET,EAAC,GAAEM,KAAEL,GAAEQ,EAAC,EAAET,EAAC,IAAE,SAASA,IAAEE,IAAE;AAAC,YAAG,CAAC,KAAK;AAAc,iBAAO,IAAII,GAAEN,IAAEE,EAAC;AAAE,kBAAU,UAAQ,KAAK,cAAcF,IAAEE,EAAC;AAAA,MAAC,GAAED,GAAE,OAAOK,IAAED,IAAE,EAAC,SAAQH,GAAE,SAAQ,QAAOD,GAAE,OAAO,CAAC,GAAEC,EAAC,GAAE,oBAAmB,CAAC,EAAC,CAAC,IAAGK,KAAE,IAAIJ,MAAG,UAAQF,GAAE,OAAO,OAAO,CAAC,GAAEM,GAAE,OAAO,GAAEN,GAAE,KAAKC,IAAE,SAASA,IAAEE,IAAE;AAAC,iBAASC,KAAG;AAAC,iBAAOF,GAAE,UAAUD,EAAC,EAAE,MAAM,MAAK,SAAS;AAAA,QAAC;AAAC,iBAASI,GAAEN,IAAE;AAAC,iBAAOG,GAAE,UAAUD,EAAC,EAAE,MAAM,MAAKF,EAAC;AAAA,QAAC;AAAC,QAAAC,GAAE,WAAWG,EAAC,IAAEI,GAAEN,EAAC,IAAE,WAAU;AAAC,cAAIF,IAAEE,KAAE,KAAK,QAAOC,KAAE,KAAK;AAAY,iBAAO,KAAK,SAAOE,IAAE,KAAK,cAAYC,IAAEN,KAAEI,GAAE,MAAM,MAAK,SAAS,GAAE,KAAK,SAAOF,IAAE,KAAK,cAAYC,IAAEH;AAAA,QAAC,IAAEQ,GAAEN,EAAC,IAAEE;AAAA,MAAC,CAAC,GAAEE,GAAE,YAAUL,GAAE,OAAO,OAAOM,IAAE,EAAC,mBAAkBF,MAAGE,GAAE,qBAAmBP,GAAC,GAAEQ,IAAE,EAAC,aAAYF,IAAE,WAAUG,IAAE,YAAWT,IAAE,gBAAeI,GAAC,CAAC,GAAEC,MAAGJ,GAAE,KAAKI,GAAE,oBAAmB,SAASL,IAAEE,IAAE;AAAC,YAAIC,KAAED,GAAE;AAAU,QAAAD,GAAE,OAAOE,GAAE,YAAU,MAAIA,GAAE,YAAWG,IAAEJ,GAAE,MAAM;AAAA,MAAC,CAAC,GAAE,OAAOG,GAAE,sBAAoBF,GAAE,mBAAmB,KAAKG,EAAC,GAAEL,GAAE,OAAO,OAAOD,IAAEM,EAAC,GAAEA;AAAA,IAAC,GAAEL,GAAE,OAAO,SAAO,SAASD,IAAE;AAAC,eAAQE,IAAEC,IAAEC,KAAEK,GAAE,KAAK,WAAU,CAAC,GAAEJ,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED;AAAI,aAAIH,MAAKE,GAAEC,EAAC;AAAE,UAAAF,KAAEC,GAAEC,EAAC,EAAEH,EAAC,GAAEE,GAAEC,EAAC,EAAE,eAAeH,EAAC,KAAG,WAASC,OAAIF,GAAE,cAAcE,EAAC,IAAEH,GAAEE,EAAC,IAAED,GAAE,cAAcD,GAAEE,EAAC,CAAC,IAAED,GAAE,OAAO,OAAO,CAAC,GAAED,GAAEE,EAAC,GAAEC,EAAC,IAAEF,GAAE,OAAO,OAAO,CAAC,GAAEE,EAAC,IAAEH,GAAEE,EAAC,IAAEC;AAAG,aAAOH;AAAA,IAAC,GAAEC,GAAE,OAAO,SAAO,SAASK,IAAEJ,IAAE;AAAC,UAAIK,KAAEL,GAAE,UAAU,kBAAgBI;AAAE,MAAAL,GAAE,GAAGK,EAAC,IAAE,SAASH,IAAE;AAAC,YAAIH,KAAE,YAAU,OAAOG,IAAEC,KAAEK,GAAE,KAAK,WAAU,CAAC,GAAEJ,KAAE;AAAK,eAAOL,KAAE,KAAK,KAAK,WAAU;AAAC,cAAIA,IAAEE,KAAED,GAAE,KAAK,MAAKM,EAAC;AAAE,iBAAM,eAAaJ,MAAGE,KAAEH,IAAE,SAAIA,KAAED,GAAE,WAAWC,GAAEC,EAAC,CAAC,KAAG,QAAMA,GAAE,OAAO,CAAC,KAAGH,KAAEE,GAAEC,EAAC,EAAE,MAAMD,IAAEE,EAAC,OAAKF,MAAG,WAASF,MAAGK,KAAEL,MAAGA,GAAE,SAAOK,GAAE,UAAUL,GAAE,IAAI,CAAC,IAAEA,IAAE,SAAI,SAAOC,GAAE,MAAM,qBAAmBE,KAAE,WAASG,KAAE,kBAAkB,IAAEL,GAAE,MAAM,4BAA0BK,KAAE,yDAAuDH,KAAE,GAAG;AAAA,QAAC,CAAC,KAAGC,GAAE,WAASD,KAAEF,GAAE,OAAO,OAAO,MAAM,MAAK,CAACE,EAAC,EAAE,OAAOC,EAAC,CAAC,IAAG,KAAK,KAAK,WAAU;AAAC,cAAIJ,KAAEC,GAAE,KAAK,MAAKM,EAAC;AAAE,UAAAP,MAAGA,GAAE,OAAOG,MAAG,CAAC,CAAC,GAAEH,GAAE,SAAOA,GAAE,MAAM,KAAGC,GAAE,KAAK,MAAKM,IAAE,IAAIL,GAAEC,IAAE,IAAI,CAAC;AAAA,QAAC,CAAC,IAAGE;AAAA,MAAC;AAAA,IAAC,GAAEJ,GAAE,SAAO,WAAU;AAAA,IAAC,GAAEA,GAAE,OAAO,qBAAmB,CAAC,GAAEA,GAAE,OAAO,YAAU,EAAC,YAAW,UAAS,mBAAkB,IAAG,gBAAe,SAAQ,SAAQ,EAAC,UAAS,OAAG,QAAO,KAAI,GAAE,eAAc,SAASD,IAAEE,IAAE;AAAC,MAAAA,KAAED,GAAEC,MAAG,KAAK,kBAAgB,IAAI,EAAE,CAAC,GAAE,KAAK,UAAQD,GAAEC,EAAC,GAAE,KAAK,OAAKM,MAAI,KAAK,iBAAe,MAAI,KAAK,aAAW,KAAK,MAAK,KAAK,WAASP,GAAE,GAAE,KAAK,YAAUA,GAAE,GAAE,KAAK,YAAUA,GAAE,GAAEC,OAAI,SAAOD,GAAE,KAAKC,IAAE,KAAK,gBAAe,IAAI,GAAE,KAAK,IAAI,MAAG,KAAK,SAAQ,EAAC,QAAO,SAASF,IAAE;AAAC,QAAAA,GAAE,WAASE,MAAG,KAAK,QAAQ;AAAA,MAAC,EAAC,CAAC,GAAE,KAAK,WAASD,GAAEC,GAAE,QAAMA,GAAE,gBAAcA,GAAE,YAAUA,EAAC,GAAE,KAAK,SAAOD,GAAE,KAAK,SAAS,CAAC,EAAE,eAAa,KAAK,SAAS,CAAC,EAAE,YAAY,IAAG,KAAK,UAAQA,GAAE,OAAO,OAAO,CAAC,GAAE,KAAK,SAAQ,KAAK,kBAAkB,GAAED,EAAC,GAAE,KAAK,QAAQ,GAAE,KAAK,SAAS,UAAS,MAAK,KAAK,oBAAoB,CAAC,GAAE,KAAK,MAAM;AAAA,IAAC,GAAE,mBAAkBC,GAAE,MAAK,qBAAoBA,GAAE,MAAK,SAAQA,GAAE,MAAK,OAAMA,GAAE,MAAK,SAAQ,WAAU;AAAC,WAAK,SAAS,GAAE,KAAK,QAAQ,OAAO,KAAK,cAAc,EAAE,WAAW,KAAK,cAAc,EAAE,WAAWA,GAAE,UAAU,KAAK,cAAc,CAAC,GAAE,KAAK,OAAO,EAAE,OAAO,KAAK,cAAc,EAAE,WAAW,eAAe,EAAE,YAAY,KAAK,iBAAe,6BAA6B,GAAE,KAAK,SAAS,OAAO,KAAK,cAAc,GAAE,KAAK,UAAU,YAAY,gBAAgB,GAAE,KAAK,UAAU,YAAY,gBAAgB;AAAA,IAAC,GAAE,UAASA,GAAE,MAAK,QAAO,WAAU;AAAC,aAAO,KAAK;AAAA,IAAO,GAAE,QAAO,SAASD,IAAEE,IAAE;AAAC,UAAIC,IAAEC,IAAEC,IAAEC,KAAEN;AAAE,UAAG,MAAI,UAAU;AAAO,eAAOC,GAAE,OAAO,OAAO,CAAC,GAAE,KAAK,OAAO;AAAE,UAAG,YAAU,OAAOD;AAAE,YAAGM,KAAE,CAAC,GAAEN,MAAGG,KAAEH,GAAE,MAAM,GAAG,GAAG,MAAM,GAAEG,GAAE,QAAO;AAAC,eAAIC,KAAEE,GAAEN,EAAC,IAAEC,GAAE,OAAO,OAAO,CAAC,GAAE,KAAK,QAAQD,EAAC,CAAC,GAAEK,KAAE,GAAEA,KAAEF,GAAE,SAAO,GAAEE;AAAI,YAAAD,GAAED,GAAEE,EAAC,CAAC,IAAED,GAAED,GAAEE,EAAC,CAAC,KAAG,CAAC,GAAED,KAAEA,GAAED,GAAEE,EAAC,CAAC;AAAE,cAAGL,KAAEG,GAAE,IAAI,GAAE,MAAI,UAAU;AAAO,mBAAO,WAASC,GAAEJ,EAAC,IAAE,OAAKI,GAAEJ,EAAC;AAAE,UAAAI,GAAEJ,EAAC,IAAEE;AAAA,QAAC,OAAK;AAAC,cAAG,MAAI,UAAU;AAAO,mBAAO,WAAS,KAAK,QAAQF,EAAC,IAAE,OAAK,KAAK,QAAQA,EAAC;AAAE,UAAAM,GAAEN,EAAC,IAAEE;AAAA,QAAC;AAAC,aAAO,KAAK,YAAYI,EAAC,GAAE;AAAA,IAAI,GAAE,aAAY,SAASN,IAAE;AAAC,eAAQE,MAAKF;AAAE,aAAK,WAAWE,IAAEF,GAAEE,EAAC,CAAC;AAAE,aAAO;AAAA,IAAI,GAAE,YAAW,SAASF,IAAEE,IAAE;AAAC,aAAO,KAAK,QAAQF,EAAC,IAAEE,IAAE,eAAaF,OAAI,KAAK,OAAO,EAAE,YAAY,KAAK,iBAAe,aAAY,CAAC,CAACE,EAAC,GAAEA,OAAI,KAAK,UAAU,YAAY,gBAAgB,GAAE,KAAK,UAAU,YAAY,gBAAgB,KAAI;AAAA,IAAI,GAAE,QAAO,WAAU;AAAC,aAAO,KAAK,YAAY,EAAC,UAAS,MAAE,CAAC;AAAA,IAAC,GAAE,SAAQ,WAAU;AAAC,aAAO,KAAK,YAAY,EAAC,UAAS,KAAE,CAAC;AAAA,IAAC,GAAE,KAAI,SAASG,IAAEC,IAAEN,IAAE;AAAC,UAAIO,IAAEC,KAAE;AAAK,mBAAW,OAAOH,OAAIL,KAAEM,IAAEA,KAAED,IAAEA,KAAE,QAAIL,MAAGM,KAAEC,KAAEN,GAAEK,EAAC,GAAE,KAAK,WAAS,KAAK,SAAS,IAAIA,EAAC,MAAIN,KAAEM,IAAEA,KAAE,KAAK,SAAQC,KAAE,KAAK,OAAO,IAAGN,GAAE,KAAKD,IAAE,SAASA,IAAEE,IAAE;AAAC,iBAASC,KAAG;AAAC,cAAGE,MAAG,SAAKG,GAAE,QAAQ,YAAU,CAACP,GAAE,IAAI,EAAE,SAAS,mBAAmB;AAAE,oBAAO,YAAU,OAAOC,KAAEM,GAAEN,EAAC,IAAEA,IAAG,MAAMM,IAAE,SAAS;AAAA,QAAC;AAAC,oBAAU,OAAON,OAAIC,GAAE,OAAKD,GAAE,OAAKA,GAAE,QAAMC,GAAE,QAAMF,GAAE;AAAQ,YAAIG,KAAEJ,GAAE,MAAM,oBAAoB,GAAEA,KAAEI,GAAE,CAAC,IAAEI,GAAE,gBAAeJ,KAAEA,GAAE,CAAC;AAAE,QAAAA,KAAEG,GAAE,SAASH,IAAEJ,IAAEG,EAAC,IAAEG,GAAE,KAAKN,IAAEG,EAAC;AAAA,MAAC,CAAC;AAAA,IAAC,GAAE,MAAK,SAASH,IAAEE,IAAE;AAAC,MAAAA,MAAGA,MAAG,IAAI,MAAM,GAAG,EAAE,KAAK,KAAK,iBAAe,GAAG,IAAE,KAAK,gBAAeF,GAAE,OAAOE,EAAC,EAAE,WAAWA,EAAC,GAAE,KAAK,WAASD,GAAE,KAAK,SAAS,IAAID,EAAC,EAAE,IAAI,CAAC,GAAE,KAAK,YAAUC,GAAE,KAAK,UAAU,IAAID,EAAC,EAAE,IAAI,CAAC,GAAE,KAAK,YAAUC,GAAE,KAAK,UAAU,IAAID,EAAC,EAAE,IAAI,CAAC;AAAA,IAAC,GAAE,QAAO,SAASA,IAAEE,IAAE;AAAC,UAAIC,KAAE;AAAK,aAAO,WAAW,WAAU;AAAC,gBAAO,YAAU,OAAOH,KAAEG,GAAEH,EAAC,IAAEA,IAAG,MAAMG,IAAE,SAAS;AAAA,MAAC,GAAED,MAAG,CAAC;AAAA,IAAC,GAAE,YAAW,SAASF,IAAE;AAAC,WAAK,YAAU,KAAK,UAAU,IAAIA,EAAC,GAAE,KAAK,IAAIA,IAAE,EAAC,YAAW,SAASA,IAAE;AAAC,QAAAC,GAAED,GAAE,aAAa,EAAE,SAAS,gBAAgB;AAAA,MAAC,GAAE,YAAW,SAASA,IAAE;AAAC,QAAAC,GAAED,GAAE,aAAa,EAAE,YAAY,gBAAgB;AAAA,MAAC,EAAC,CAAC;AAAA,IAAC,GAAE,YAAW,SAASA,IAAE;AAAC,WAAK,YAAU,KAAK,UAAU,IAAIA,EAAC,GAAE,KAAK,IAAIA,IAAE,EAAC,SAAQ,SAASA,IAAE;AAAC,QAAAC,GAAED,GAAE,aAAa,EAAE,SAAS,gBAAgB;AAAA,MAAC,GAAE,UAAS,SAASA,IAAE;AAAC,QAAAC,GAAED,GAAE,aAAa,EAAE,YAAY,gBAAgB;AAAA,MAAC,EAAC,CAAC;AAAA,IAAC,GAAE,UAAS,SAASA,IAAEE,IAAEC,IAAE;AAAC,UAAIC,IAAEC,IAAEC,KAAE,KAAK,QAAQN,EAAC;AAAE,UAAGG,KAAEA,MAAG,CAAC,IAAGD,KAAED,GAAE,MAAMC,EAAC,GAAG,QAAMF,OAAI,KAAK,oBAAkBA,KAAE,KAAK,oBAAkBA,IAAG,YAAY,GAAEE,GAAE,SAAO,KAAK,QAAQ,CAAC,GAAEG,KAAEH,GAAE;AAAc,aAAIE,MAAKC;AAAE,UAAAD,MAAKF,OAAIA,GAAEE,EAAC,IAAEC,GAAED,EAAC;AAAG,aAAO,KAAK,QAAQ,QAAQF,IAAEC,EAAC,GAAE,EAAEF,GAAE,WAAWK,EAAC,KAAG,UAAKA,GAAE,MAAM,KAAK,QAAQ,CAAC,GAAE,CAACJ,EAAC,EAAE,OAAOC,EAAC,CAAC,KAAGD,GAAE,mBAAmB;AAAA,IAAE,EAAC,GAAED,GAAE,KAAK,EAAC,MAAK,UAAS,MAAK,UAAS,GAAE,SAASK,IAAEC,IAAE;AAAC,MAAAN,GAAE,OAAO,UAAU,MAAIK,EAAC,IAAE,SAASJ,IAAEF,IAAEG,IAAE;AAAC,YAAIC,MAAGJ,KAAE,YAAU,OAAOA,KAAE,EAAC,QAAOA,GAAC,IAAEA,MAAG,SAAKA,MAAG,YAAU,OAAOA,MAAGA,GAAE,UAAQO,KAAED,IAAED,KAAE,CAACJ,GAAE,cAAcD,KAAE,YAAU,QAAOA,KAAEA,MAAG,CAAC,KAAG,EAAC,UAASA,GAAC,IAAEA,EAAC;AAAE,QAAAA,GAAE,WAASG,IAAEH,GAAE,SAAOE,GAAE,MAAMF,GAAE,KAAK,GAAEK,MAAGJ,GAAE,WAASA,GAAE,QAAQ,OAAOG,EAAC,IAAEF,GAAEI,EAAC,EAAEN,EAAC,IAAEI,OAAIE,MAAGJ,GAAEE,EAAC,IAAEF,GAAEE,EAAC,EAAEJ,GAAE,UAASA,GAAE,QAAOG,EAAC,IAAED,GAAE,MAAM,SAASF,IAAE;AAAC,UAAAC,GAAE,IAAI,EAAEK,EAAC,EAAE,GAAEH,MAAGA,GAAE,KAAKD,GAAE,CAAC,CAAC,GAAEF,GAAE;AAAA,QAAC,CAAC;AAAA,MAAC;AAAA,IAAC,CAAC;AAAE,IAAAC,GAAE;AAAO,QAAIS,KAAE;AAAG,IAAAT,GAAE,QAAQ,EAAE,QAAQ,WAAU;AAAC,MAAAS,KAAE;AAAA,IAAE,CAAC;AAAE,IAAAT,GAAE,OAAO,YAAW,EAAC,SAAQ,UAAS,SAAQ,EAAC,QAAO,uCAAsC,UAAS,GAAE,OAAM,EAAC,GAAE,YAAW,WAAU;AAAC,UAAIC,KAAE;AAAK,WAAK,QAAQ,KAAK,eAAa,KAAK,YAAW,SAASF,IAAE;AAAC,eAAOE,GAAE,WAAWF,EAAC;AAAA,MAAC,CAAC,EAAE,KAAK,WAAS,KAAK,YAAW,SAASA,IAAE;AAAC,YAAG,SAAKC,GAAE,KAAKD,GAAE,QAAOE,GAAE,aAAW,oBAAoB;AAAE,iBAAOD,GAAE,WAAWD,GAAE,QAAOE,GAAE,aAAW,oBAAoB,GAAEF,GAAE,yBAAyB,GAAE;AAAA,MAAE,CAAC,GAAE,KAAK,UAAQ;AAAA,IAAE,GAAE,eAAc,WAAU;AAAC,WAAK,QAAQ,OAAO,MAAI,KAAK,UAAU,GAAE,KAAK,sBAAoB,KAAK,SAAS,OAAO,eAAa,KAAK,YAAW,KAAK,kBAAkB,EAAE,OAAO,aAAW,KAAK,YAAW,KAAK,gBAAgB;AAAA,IAAC,GAAE,YAAW,SAASA,IAAE;AAAC,UAAG,CAACU,IAAE;AAAC,aAAK,cAAY,OAAG,KAAK,iBAAe,KAAK,SAASV,EAAC,GAAE,KAAK,kBAAgBA;AAAE,YAAIE,KAAE,MAAKC,KAAE,MAAIH,GAAE,OAAMI,KAAE,EAAE,YAAU,OAAO,KAAK,QAAQ,UAAQ,CAACJ,GAAE,OAAO,aAAWC,GAAED,GAAE,MAAM,EAAE,QAAQ,KAAK,QAAQ,MAAM,EAAE;AAAO,eAAOG,MAAG,CAACC,MAAG,KAAK,cAAcJ,EAAC,KAAG,KAAK,gBAAc,CAAC,KAAK,QAAQ,OAAM,KAAK,kBAAgB,KAAK,mBAAiB,WAAW,WAAU;AAAC,UAAAE,GAAE,gBAAc;AAAA,QAAE,GAAE,KAAK,QAAQ,KAAK,IAAG,KAAK,kBAAkBF,EAAC,KAAG,KAAK,eAAeA,EAAC,MAAI,KAAK,gBAAc,UAAK,KAAK,YAAYA,EAAC,GAAE,CAAC,KAAK,kBAAgBA,GAAE,eAAe,GAAE,SAAK,SAAKC,GAAE,KAAKD,GAAE,QAAO,KAAK,aAAW,oBAAoB,KAAGC,GAAE,WAAWD,GAAE,QAAO,KAAK,aAAW,oBAAoB,GAAE,KAAK,qBAAmB,SAASA,IAAE;AAAC,iBAAOE,GAAE,WAAWF,EAAC;AAAA,QAAC,GAAE,KAAK,mBAAiB,SAASA,IAAE;AAAC,iBAAOE,GAAE,SAASF,EAAC;AAAA,QAAC,GAAE,KAAK,SAAS,KAAK,eAAa,KAAK,YAAW,KAAK,kBAAkB,EAAE,KAAK,aAAW,KAAK,YAAW,KAAK,gBAAgB,GAAEA,GAAE,eAAe,GAAEU,KAAE,SAAK;AAAA,MAAE;AAAA,IAAC,GAAE,YAAW,SAASV,IAAE;AAAC,UAAG,KAAK,aAAY;AAAC,YAAGC,GAAE,GAAG,OAAK,CAAC,SAAS,gBAAc,SAAS,eAAa,MAAI,CAACD,GAAE;AAAO,iBAAO,KAAK,SAASA,EAAC;AAAE,YAAG,CAACA,GAAE;AAAM,iBAAO,KAAK,SAASA,EAAC;AAAA,MAAC;AAAC,cAAOA,GAAE,SAAOA,GAAE,YAAU,KAAK,cAAY,OAAI,KAAK,iBAAe,KAAK,WAAWA,EAAC,GAAEA,GAAE,eAAe,MAAI,KAAK,kBAAkBA,EAAC,KAAG,KAAK,eAAeA,EAAC,MAAI,KAAK,gBAAc,UAAK,KAAK,YAAY,KAAK,iBAAgBA,EAAC,GAAE,KAAK,gBAAc,KAAK,WAAWA,EAAC,IAAE,KAAK,SAASA,EAAC,IAAG,CAAC,KAAK;AAAA,IAAc,GAAE,UAAS,SAASA,IAAE;AAAC,aAAO,KAAK,SAAS,OAAO,eAAa,KAAK,YAAW,KAAK,kBAAkB,EAAE,OAAO,aAAW,KAAK,YAAW,KAAK,gBAAgB,GAAE,KAAK,kBAAgB,KAAK,gBAAc,OAAGA,GAAE,WAAS,KAAK,gBAAgB,UAAQC,GAAE,KAAKD,GAAE,QAAO,KAAK,aAAW,sBAAqB,IAAE,GAAE,KAAK,WAAWA,EAAC,IAAGU,KAAE;AAAA,IAAE,GAAE,mBAAkB,SAASV,IAAE;AAAC,aAAO,KAAK,IAAI,KAAK,IAAI,KAAK,gBAAgB,QAAMA,GAAE,KAAK,GAAE,KAAK,IAAI,KAAK,gBAAgB,QAAMA,GAAE,KAAK,CAAC,KAAG,KAAK,QAAQ;AAAA,IAAQ,GAAE,gBAAe,WAAU;AAAC,aAAO,KAAK;AAAA,IAAa,GAAE,aAAY,WAAU;AAAA,IAAC,GAAE,YAAW,WAAU;AAAA,IAAC,GAAE,YAAW,WAAU;AAAA,IAAC,GAAE,eAAc,WAAU;AAAC,aAAM;AAAA,IAAE,EAAC,CAAC;AAAE,KAAC,WAAU;AAAC,MAAAC,GAAE,KAAGA,GAAE,MAAI,CAAC;AAAE,UAAIG,IAAEO,IAAEC,KAAE,KAAK,KAAIC,KAAE,KAAK,KAAIC,KAAE,KAAK,OAAMT,KAAE,qBAAoBC,KAAE,qBAAoBC,KAAE,yBAAwBC,KAAE,QAAOC,KAAE,MAAKN,KAAEF,GAAE,GAAG;AAAS,eAASc,GAAEf,IAAEE,IAAEC,IAAE;AAAC,eAAM,CAAC,WAAWH,GAAE,CAAC,CAAC,KAAGS,GAAE,KAAKT,GAAE,CAAC,CAAC,IAAEE,KAAE,MAAI,IAAG,WAAWF,GAAE,CAAC,CAAC,KAAGS,GAAE,KAAKT,GAAE,CAAC,CAAC,IAAEG,KAAE,MAAI,EAAE;AAAA,MAAC;AAAC,eAASa,GAAEhB,IAAEE,IAAE;AAAC,eAAO,SAASD,GAAE,IAAID,IAAEE,EAAC,GAAE,EAAE,KAAG;AAAA,MAAC;AAAC,MAAAD,GAAE,WAAS,EAAC,gBAAe,WAAU;AAAC,YAAG,WAASG;AAAE,iBAAOA;AAAE,YAAIJ,IAAEE,KAAED,GAAE,yIAAyI,GAAEE,KAAED,GAAE,SAAS,EAAE,CAAC;AAAE,eAAOD,GAAE,MAAM,EAAE,OAAOC,EAAC,GAAEF,KAAEG,GAAE,aAAYD,GAAE,IAAI,YAAW,QAAQ,GAAEF,QAAKG,KAAEA,GAAE,iBAAeA,KAAED,GAAE,CAAC,EAAE,cAAaA,GAAE,OAAO,GAAEE,KAAEJ,KAAEG;AAAA,MAAC,GAAE,eAAc,SAASH,IAAE;AAAC,YAAIE,KAAEF,GAAE,YAAUA,GAAE,aAAW,KAAGA,GAAE,QAAQ,IAAI,YAAY,GAAEG,KAAEH,GAAE,YAAUA,GAAE,aAAW,KAAGA,GAAE,QAAQ,IAAI,YAAY,GAAEE,KAAE,aAAWA,MAAG,WAASA,MAAGF,GAAE,QAAMA,GAAE,QAAQ,CAAC,EAAE;AAAY,eAAM,EAAC,OAAM,aAAWG,MAAG,WAASA,MAAGH,GAAE,SAAOA,GAAE,QAAQ,CAAC,EAAE,eAAaC,GAAE,SAAS,eAAe,IAAE,GAAE,QAAOC,KAAED,GAAE,SAAS,eAAe,IAAE,EAAC;AAAA,MAAC,GAAE,eAAc,SAASD,IAAE;AAAC,YAAIE,KAAED,GAAED,MAAG,MAAM,GAAEG,KAAEF,GAAE,SAASC,GAAE,CAAC,CAAC,GAAEF,KAAE,CAAC,CAACE,GAAE,CAAC,KAAG,MAAIA,GAAE,CAAC,EAAE;AAAS,eAAM,EAAC,SAAQA,IAAE,UAASC,IAAE,YAAWH,IAAE,QAAOE,GAAE,OAAO,KAAG,EAAC,MAAK,GAAE,KAAI,EAAC,GAAE,YAAWA,GAAE,WAAW,GAAE,WAAUA,GAAE,UAAU,GAAE,OAAMC,MAAGH,KAAEE,GAAE,MAAM,IAAEA,GAAE,WAAW,GAAE,QAAOC,MAAGH,KAAEE,GAAE,OAAO,IAAEA,GAAE,YAAY,EAAC;AAAA,MAAC,EAAC,GAAED,GAAE,GAAG,WAAS,SAASgB,IAAE;AAAC,YAAG,CAACA,MAAG,CAACA,GAAE;AAAG,iBAAOd,GAAE,MAAM,MAAK,SAAS;AAAE,QAAAc,KAAEhB,GAAE,OAAO,CAAC,GAAEgB,EAAC;AAAE,YAAIC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEtB,IAAEuB,KAAEtB,GAAEgB,GAAE,EAAE,GAAEO,KAAEvB,GAAE,SAAS,cAAcgB,GAAE,MAAM,GAAEQ,KAAExB,GAAE,SAAS,cAAcuB,EAAC,GAAEE,MAAGT,GAAE,aAAW,QAAQ,MAAM,GAAG,GAAEU,KAAE,CAAC,GAAEzB,KAAE,OAAKF,MAAGE,KAAEqB,IAAG,CAAC,GAAG,WAAS,EAAC,OAAMrB,GAAE,MAAM,GAAE,QAAOA,GAAE,OAAO,GAAE,QAAO,EAAC,KAAI,GAAE,MAAK,EAAC,EAAC,IAAED,GAAE,SAASD,EAAC,IAAE,EAAC,OAAME,GAAE,MAAM,GAAE,QAAOA,GAAE,OAAO,GAAE,QAAO,EAAC,KAAIA,GAAE,UAAU,GAAE,MAAKA,GAAE,WAAW,EAAC,EAAC,IAAEF,GAAE,iBAAe,EAAC,OAAM,GAAE,QAAO,GAAE,QAAO,EAAC,KAAIA,GAAE,OAAM,MAAKA,GAAE,MAAK,EAAC,IAAE,EAAC,OAAME,GAAE,WAAW,GAAE,QAAOA,GAAE,YAAY,GAAE,QAAOA,GAAE,OAAO,EAAC;AAAE,eAAOqB,GAAE,CAAC,EAAE,mBAAiBN,GAAE,KAAG,aAAYE,KAAEjB,GAAE,OAAMkB,KAAElB,GAAE,QAAOoB,KAAErB,GAAE,OAAO,CAAC,GAAEoB,KAAEnB,GAAE,MAAM,GAAED,GAAE,KAAK,CAAC,MAAK,IAAI,GAAE,WAAU;AAAC,cAAID,IAAEE,IAAEC,MAAGc,GAAE,IAAI,KAAG,IAAI,MAAM,GAAG;AAAE,WAACd,KAAE,MAAIA,GAAE,SAAOE,GAAE,KAAKF,GAAE,CAAC,CAAC,IAAEA,GAAE,OAAO,CAAC,QAAQ,CAAC,IAAEG,GAAE,KAAKH,GAAE,CAAC,CAAC,IAAE,CAAC,QAAQ,EAAE,OAAOA,EAAC,IAAE,CAAC,UAAS,QAAQ,IAAEA,IAAG,CAAC,IAAEE,GAAE,KAAKF,GAAE,CAAC,CAAC,IAAEA,GAAE,CAAC,IAAE,UAASA,GAAE,CAAC,IAAEG,GAAE,KAAKH,GAAE,CAAC,CAAC,IAAEA,GAAE,CAAC,IAAE,UAASH,KAAEO,GAAE,KAAKJ,GAAE,CAAC,CAAC,GAAED,KAAEK,GAAE,KAAKJ,GAAE,CAAC,CAAC,GAAEwB,GAAE,IAAI,IAAE,CAAC3B,KAAEA,GAAE,CAAC,IAAE,GAAEE,KAAEA,GAAE,CAAC,IAAE,CAAC,GAAEe,GAAE,IAAI,IAAE,CAACT,GAAE,KAAKL,GAAE,CAAC,CAAC,EAAE,CAAC,GAAEK,GAAE,KAAKL,GAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAAA,QAAC,CAAC,GAAE,MAAIuB,GAAE,WAASA,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAG,YAAUT,GAAE,GAAG,CAAC,IAAEK,GAAE,QAAMH,KAAE,aAAWF,GAAE,GAAG,CAAC,MAAIK,GAAE,QAAMH,KAAE,IAAG,aAAWF,GAAE,GAAG,CAAC,IAAEK,GAAE,OAAKF,KAAE,aAAWH,GAAE,GAAG,CAAC,MAAIK,GAAE,OAAKF,KAAE,IAAGF,KAAEH,GAAEY,GAAE,IAAGR,IAAEC,EAAC,GAAEE,GAAE,QAAMJ,GAAE,CAAC,GAAEI,GAAE,OAAKJ,GAAE,CAAC,GAAE,KAAK,KAAK,WAAU;AAAC,cAAIf,IAAEH,IAAEO,KAAEN,GAAE,IAAI,GAAEO,KAAED,GAAE,WAAW,GAAEE,KAAEF,GAAE,YAAY,GAAEL,KAAEc,GAAE,MAAK,YAAY,GAAEZ,KAAEY,GAAE,MAAK,WAAW,GAAEX,KAAEG,KAAEN,KAAEc,GAAE,MAAK,aAAa,IAAES,GAAE,OAAMnB,KAAEG,KAAEL,KAAEY,GAAE,MAAK,cAAc,IAAES,GAAE,QAAOf,KAAET,GAAE,OAAO,CAAC,GAAEqB,EAAC,GAAEM,KAAEb,GAAEY,GAAE,IAAGpB,GAAE,WAAW,GAAEA,GAAE,YAAY,CAAC;AAAE,sBAAUU,GAAE,GAAG,CAAC,IAAEP,GAAE,QAAMF,KAAE,aAAWS,GAAE,GAAG,CAAC,MAAIP,GAAE,QAAMF,KAAE,IAAG,aAAWS,GAAE,GAAG,CAAC,IAAEP,GAAE,OAAKD,KAAE,aAAWQ,GAAE,GAAG,CAAC,MAAIP,GAAE,OAAKD,KAAE,IAAGC,GAAE,QAAMkB,GAAE,CAAC,GAAElB,GAAE,OAAKkB,GAAE,CAAC,GAAEjB,OAAID,GAAE,OAAKI,GAAEJ,GAAE,IAAI,GAAEA,GAAE,MAAII,GAAEJ,GAAE,GAAG,IAAGP,KAAE,EAAC,YAAWD,IAAE,WAAUE,GAAC,GAAEH,GAAE,KAAK,CAAC,QAAO,KAAK,GAAE,SAASD,IAAEE,IAAE;AAAC,YAAAD,GAAE,GAAG,SAASyB,GAAE1B,EAAC,CAAC,KAAGC,GAAE,GAAG,SAASyB,GAAE1B,EAAC,CAAC,EAAEE,EAAC,EAAEQ,IAAE,EAAC,aAAYS,IAAE,cAAaC,IAAE,WAAUZ,IAAE,YAAWC,IAAE,mBAAkBN,IAAE,gBAAeE,IAAE,iBAAgBC,IAAE,QAAO,CAACY,GAAE,CAAC,IAAEU,GAAE,CAAC,GAAEV,GAAE,CAAC,IAAEU,GAAE,CAAC,CAAC,GAAE,IAAGX,GAAE,IAAG,IAAGA,GAAE,IAAG,QAAOO,IAAE,MAAKjB,GAAC,CAAC;AAAA,UAAC,CAAC,GAAEU,GAAE,UAAQjB,KAAE,SAASA,IAAE;AAAC,gBAAIE,KAAEmB,GAAE,OAAKX,GAAE,MAAKP,KAAED,KAAEiB,KAAEX,IAAEJ,KAAEiB,GAAE,MAAIX,GAAE,KAAIL,KAAED,KAAEgB,KAAEX,IAAEH,KAAE,EAAC,QAAO,EAAC,SAAQiB,IAAE,MAAKF,GAAE,MAAK,KAAIA,GAAE,KAAI,OAAMF,IAAE,QAAOC,GAAC,GAAE,SAAQ,EAAC,SAAQb,IAAE,MAAKG,GAAE,MAAK,KAAIA,GAAE,KAAI,OAAMF,IAAE,QAAOC,GAAC,GAAE,YAAWN,KAAE,IAAE,SAAO,IAAED,KAAE,UAAQ,UAAS,UAASG,KAAE,IAAE,QAAM,IAAED,KAAE,WAAS,SAAQ;AAAE,YAAAe,KAAEX,MAAGK,GAAEX,KAAEC,EAAC,IAAEgB,OAAIb,GAAE,aAAW,WAAUc,KAAEX,MAAGI,GAAET,KAAEC,EAAC,IAAEe,OAAId,GAAE,WAAS,WAAUM,GAAEC,GAAEX,EAAC,GAAEW,GAAEV,EAAC,CAAC,IAAES,GAAEC,GAAET,EAAC,GAAES,GAAER,EAAC,CAAC,IAAEC,GAAE,YAAU,eAAaA,GAAE,YAAU,YAAWW,GAAE,MAAM,KAAK,MAAKjB,IAAEM,EAAC;AAAA,UAAC,IAAGC,GAAE,OAAON,GAAE,OAAOS,IAAE,EAAC,OAAMV,GAAC,CAAC,CAAC;AAAA,QAAC,CAAC;AAAA,MAAC,GAAEC,GAAE,GAAG,WAAS,EAAC,KAAI,EAAC,MAAK,SAASD,IAAEE,IAAE;AAAC,YAAIC,KAAED,GAAE,QAAOE,KAAED,GAAE,WAASA,GAAE,aAAWA,GAAE,OAAO,MAAKE,KAAEF,GAAE,OAAMG,KAAEN,GAAE,OAAKE,GAAE,kBAAkB,YAAWK,KAAEH,KAAEE,IAAEE,KAAEF,KAAEJ,GAAE,iBAAeG,KAAED;AAAE,QAAAF,GAAE,iBAAeG,KAAE,IAAEE,MAAGC,MAAG,KAAGL,KAAEH,GAAE,OAAKO,KAAEL,GAAE,iBAAeG,KAAED,IAAEJ,GAAE,QAAMO,KAAEJ,MAAGH,GAAE,OAAK,EAAE,IAAEQ,MAAGD,MAAG,MAAIC,KAAED,KAAEH,KAAEC,KAAEH,GAAE,iBAAeE,KAAE,IAAEG,KAAEP,GAAE,QAAMO,KAAE,IAAEC,KAAER,GAAE,QAAMQ,KAAER,GAAE,OAAKY,GAAEZ,GAAE,OAAKM,IAAEN,GAAE,IAAI;AAAA,MAAC,GAAE,KAAI,SAASA,IAAEE,IAAE;AAAC,YAAIC,KAAED,GAAE,QAAOE,KAAED,GAAE,WAASA,GAAE,YAAUA,GAAE,OAAO,KAAIE,KAAEH,GAAE,OAAO,QAAOI,KAAEN,GAAE,MAAIE,GAAE,kBAAkB,WAAUK,KAAEH,KAAEE,IAAEE,KAAEF,KAAEJ,GAAE,kBAAgBG,KAAED;AAAE,QAAAF,GAAE,kBAAgBG,KAAE,IAAEE,MAAGC,MAAG,KAAGL,KAAEH,GAAE,MAAIO,KAAEL,GAAE,kBAAgBG,KAAED,IAAEJ,GAAE,OAAKO,KAAEJ,MAAGH,GAAE,MAAI,EAAE,IAAEQ,MAAGD,MAAG,MAAIC,KAAED,KAAEH,KAAEC,KAAEH,GAAE,kBAAgBE,KAAE,IAAEG,KAAEP,GAAE,OAAKO,KAAE,IAAEC,KAAER,GAAE,OAAKQ,KAAER,GAAE,MAAIY,GAAEZ,GAAE,MAAIM,IAAEN,GAAE,GAAG;AAAA,MAAC,EAAC,GAAE,MAAK,EAAC,MAAK,SAASA,IAAEE,IAAE;AAAC,YAAIC,KAAED,GAAE,QAAOE,KAAED,GAAE,OAAO,OAAKA,GAAE,YAAWE,KAAEF,GAAE,OAAMG,KAAEH,GAAE,WAASA,GAAE,aAAWA,GAAE,OAAO,MAAKI,KAAEP,GAAE,OAAKE,GAAE,kBAAkB,YAAWM,KAAED,KAAED,IAAEG,KAAEF,KAAEL,GAAE,iBAAeG,KAAEC,IAAEI,KAAE,WAASR,GAAE,GAAG,CAAC,IAAE,CAACA,GAAE,YAAU,YAAUA,GAAE,GAAG,CAAC,IAAEA,GAAE,YAAU,GAAEC,KAAE,WAASD,GAAE,GAAG,CAAC,IAAEA,GAAE,cAAY,YAAUA,GAAE,GAAG,CAAC,IAAE,CAACA,GAAE,cAAY,GAAEK,KAAE,KAAGL,GAAE,OAAO,CAAC;AAAE,QAAAM,KAAE,MAAIJ,KAAEJ,GAAE,OAAKU,KAAEP,KAAEI,KAAEL,GAAE,iBAAeG,KAAED,MAAG,KAAGA,KAAES,GAAEL,EAAC,OAAKR,GAAE,QAAMU,KAAEP,KAAEI,MAAG,IAAEE,OAAI,KAAGH,KAAEN,GAAE,OAAKE,GAAE,kBAAkB,aAAWQ,KAAEP,KAAEI,KAAED,OAAIO,GAAEP,EAAC,IAAEG,QAAKT,GAAE,QAAMU,KAAEP,KAAEI;AAAA,MAAE,GAAE,KAAI,SAASP,IAAEE,IAAE;AAAC,YAAIC,KAAED,GAAE,QAAOE,KAAED,GAAE,OAAO,MAAIA,GAAE,WAAUE,KAAEF,GAAE,QAAOG,KAAEH,GAAE,WAASA,GAAE,YAAUA,GAAE,OAAO,KAAII,KAAEP,GAAE,MAAIE,GAAE,kBAAkB,WAAUM,KAAED,KAAED,IAAEG,KAAEF,KAAEL,GAAE,kBAAgBG,KAAEC,IAAEI,KAAE,UAAQR,GAAE,GAAG,CAAC,IAAE,CAACA,GAAE,aAAW,aAAWA,GAAE,GAAG,CAAC,IAAEA,GAAE,aAAW,GAAEC,KAAE,UAAQD,GAAE,GAAG,CAAC,IAAEA,GAAE,eAAa,aAAWA,GAAE,GAAG,CAAC,IAAE,CAACA,GAAE,eAAa,GAAEK,KAAE,KAAGL,GAAE,OAAO,CAAC;AAAE,QAAAM,KAAE,MAAIJ,KAAEJ,GAAE,MAAIU,KAAEP,KAAEI,KAAEL,GAAE,kBAAgBG,KAAED,MAAG,KAAGA,KAAES,GAAEL,EAAC,OAAKR,GAAE,OAAKU,KAAEP,KAAEI,MAAG,IAAEE,OAAI,KAAGH,KAAEN,GAAE,MAAIE,GAAE,kBAAkB,YAAUQ,KAAEP,KAAEI,KAAED,OAAIO,GAAEP,EAAC,IAAEG,QAAKT,GAAE,OAAKU,KAAEP,KAAEI;AAAA,MAAE,EAAC,GAAE,SAAQ,EAAC,MAAK,WAAU;AAAC,QAAAN,GAAE,GAAG,SAAS,KAAK,KAAK,MAAM,MAAK,SAAS,GAAEA,GAAE,GAAG,SAAS,IAAI,KAAK,MAAM,MAAK,SAAS;AAAA,MAAC,GAAE,KAAI,WAAU;AAAC,QAAAA,GAAE,GAAG,SAAS,KAAK,IAAI,MAAM,MAAK,SAAS,GAAEA,GAAE,GAAG,SAAS,IAAI,IAAI,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,EAAC,GAAE,WAAU;AAAC,YAAID,IAAEE,KAAE,SAAS,qBAAqB,MAAM,EAAE,CAAC,GAAEC,KAAE,SAAS,cAAc,KAAK,GAAEC,KAAE,SAAS,cAAcF,KAAE,QAAM,MAAM,GAAEG,KAAE,EAAC,YAAW,UAAS,OAAM,GAAE,QAAO,GAAE,QAAO,GAAE,QAAO,GAAE,YAAW,OAAM;AAAE,aAAIL,MAAKE,MAAGD,GAAE,OAAOI,IAAE,EAAC,UAAS,YAAW,MAAK,WAAU,KAAI,UAAS,CAAC,GAAEA;AAAE,UAAAD,GAAE,MAAMJ,EAAC,IAAEK,GAAEL,EAAC;AAAE,QAAAI,GAAE,YAAYD,EAAC,IAAGD,KAAEA,MAAG,SAAS,iBAAiB,aAAaE,IAAEF,GAAE,UAAU,GAAEC,GAAE,MAAM,UAAQ,2CAA0CA,KAAEF,GAAEE,EAAC,EAAE,OAAO,EAAE,MAAKQ,KAAE,KAAGR,MAAGA,KAAE,IAAGC,GAAE,YAAU,IAAGF,GAAE,YAAYE,EAAC;AAAA,MAAC,EAAE;AAAA,IAAC,EAAE;AAAE,IAAAH,GAAE,GAAG,UAASA,GAAE,OAAO,eAAcA,GAAE,GAAG,OAAM,EAAC,SAAQ,UAAS,mBAAkB,QAAO,OAAM,OAAG,SAAQ,EAAC,UAAS,UAAS,MAAK,OAAG,aAAY,OAAG,aAAY,OAAG,QAAO,QAAO,UAAS,OAAG,aAAY,MAAG,sBAAqB,OAAG,iBAAgB,OAAG,MAAK,OAAG,QAAO,OAAG,QAAO,YAAW,OAAM,OAAM,SAAQ,OAAG,aAAY,OAAG,QAAO,OAAG,QAAO,MAAG,mBAAkB,IAAG,aAAY,IAAG,OAAM,WAAU,WAAU,aAAY,QAAO,KAAI,UAAS,MAAK,YAAW,MAAK,QAAO,MAAK,YAAW,MAAK,KAAI,MAAK,MAAK,MAAK,SAAQ,MAAK,QAAO,MAAK,MAAK,MAAK,OAAM,MAAK,MAAK,MAAK,QAAO,KAAI,GAAE,aAAY,SAASD,IAAEE,IAAEC,IAAE;AAAC,aAAOD,MAAGF,MAAGA,KAAEE,KAAEC;AAAA,IAAC,GAAE,aAAY,SAASH,IAAE;AAAC,aAAM,aAAa,KAAKA,GAAE,IAAI,OAAO,CAAC,KAAG,oBAAoB,KAAKA,GAAE,IAAI,SAAS,CAAC;AAAA,IAAC,GAAE,SAAQ,WAAU;AAAC,WAAK,iBAAe,CAAC,GAAE,KAAK,QAAQ,SAAS,aAAa,GAAE,KAAK,QAAQ,GAAE,KAAK,SAAO,KAAK,QAAQ,OAAO,GAAE,KAAK,WAAW,GAAE,KAAK,oBAAoB,GAAE,KAAK,QAAM;AAAA,IAAE,GAAE,YAAW,SAASA,IAAEE,IAAE;AAAC,WAAK,OAAOF,IAAEE,EAAC,GAAE,aAAWF,MAAG,KAAK,oBAAoB;AAAA,IAAC,GAAE,qBAAoB,WAAU;AAAC,WAAK,QAAQ,KAAK,qBAAqB,EAAE,YAAY,oBAAoB,GAAEC,GAAE,KAAK,KAAK,OAAM,WAAU;AAAC,SAAC,KAAK,SAAS,QAAQ,SAAO,KAAK,KAAK,KAAK,KAAK,SAAS,QAAQ,MAAM,IAAE,KAAK,MAAM,SAAS,oBAAoB;AAAA,MAAC,CAAC;AAAA,IAAC,GAAE,UAAS,WAAU;AAAC,WAAK,QAAQ,YAAY,kCAAkC,EAAE,KAAK,qBAAqB,EAAE,YAAY,oBAAoB,GAAE,KAAK,cAAc;AAAE,eAAQD,KAAE,KAAK,MAAM,SAAO,GAAE,KAAGA,IAAEA;AAAI,aAAK,MAAMA,EAAC,EAAE,KAAK,WAAW,KAAK,aAAW,OAAO;AAAE,aAAO;AAAA,IAAI,GAAE,eAAc,SAASA,IAAEE,IAAE;AAAC,UAAIC,KAAE,MAAKC,KAAE,OAAGC,KAAE;AAAK,aAAM,CAAC,KAAK,cAAY,CAAC,KAAK,QAAQ,YAAU,aAAW,KAAK,QAAQ,SAAO,KAAK,cAAcL,EAAC,GAAEC,GAAED,GAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,WAAU;AAAC,YAAGC,GAAE,KAAK,MAAKI,GAAE,aAAW,OAAO,MAAIA;AAAE,iBAAOF,KAAEF,GAAE,IAAI,GAAE;AAAA,MAAE,CAAC,GAAE,CAAC,EAAEE,KAAEF,GAAE,KAAKD,GAAE,QAAOK,GAAE,aAAW,OAAO,MAAIA,KAAEJ,GAAED,GAAE,MAAM,IAAEG,QAAK,EAAE,KAAK,QAAQ,UAAQ,CAACD,OAAID,GAAE,KAAK,QAAQ,QAAOE,EAAC,EAAE,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,WAAU;AAAC,iBAAOH,GAAE,WAASI,KAAE;AAAA,MAAG,CAAC,GAAE,CAACA,SAAM,KAAK,cAAYD,IAAE,KAAK,yBAAyB,GAAE;AAAA,IAAM,GAAE,aAAY,SAASH,IAAEE,IAAEC,IAAE;AAAC,UAAIC,IAAEC,IAAEC,KAAE,KAAK;AAAQ,WAAI,KAAK,mBAAiB,MAAM,iBAAiB,GAAE,KAAK,SAAO,KAAK,cAAcN,EAAC,GAAE,KAAK,wBAAwB,GAAE,KAAK,cAAc,GAAE,KAAK,eAAa,KAAK,OAAO,aAAa,GAAE,KAAK,SAAO,KAAK,YAAY,OAAO,GAAE,KAAK,SAAO,EAAC,KAAI,KAAK,OAAO,MAAI,KAAK,QAAQ,KAAI,MAAK,KAAK,OAAO,OAAK,KAAK,QAAQ,KAAI,GAAEC,GAAE,OAAO,KAAK,QAAO,EAAC,OAAM,EAAC,MAAKD,GAAE,QAAM,KAAK,OAAO,MAAK,KAAIA,GAAE,QAAM,KAAK,OAAO,IAAG,GAAE,QAAO,KAAK,iBAAiB,GAAE,UAAS,KAAK,mBAAmB,EAAC,CAAC,GAAE,KAAK,OAAO,IAAI,YAAW,UAAU,GAAE,KAAK,cAAY,KAAK,OAAO,IAAI,UAAU,GAAE,KAAK,mBAAiB,KAAK,kBAAkBA,EAAC,GAAE,KAAK,gBAAcA,GAAE,OAAM,KAAK,gBAAcA,GAAE,OAAMM,GAAE,YAAU,KAAK,wBAAwBA,GAAE,QAAQ,GAAE,KAAK,cAAY,EAAC,MAAK,KAAK,YAAY,KAAK,EAAE,CAAC,GAAE,QAAO,KAAK,YAAY,OAAO,EAAE,CAAC,EAAC,GAAE,KAAK,OAAO,CAAC,MAAI,KAAK,YAAY,CAAC,KAAG,KAAK,YAAY,KAAK,GAAE,KAAK,mBAAmB,GAAEA,GAAE,eAAa,KAAK,gBAAgB,GAAEA,GAAE,UAAQ,WAASA,GAAE,WAASD,KAAE,KAAK,SAAS,KAAK,MAAM,GAAE,KAAK,eAAaA,GAAE,IAAI,QAAQ,GAAEA,GAAE,IAAI,UAASC,GAAE,MAAM,GAAE,KAAK,mBAAiBL,GAAE,uBAAqBK,GAAE,SAAO,wBAAwB,EAAE,SAASD,EAAC,IAAGC,GAAE,YAAU,KAAK,OAAO,IAAI,SAAS,MAAI,KAAK,iBAAe,KAAK,OAAO,IAAI,SAAS,IAAG,KAAK,OAAO,IAAI,WAAUA,GAAE,OAAO,IAAGA,GAAE,WAAS,KAAK,OAAO,IAAI,QAAQ,MAAI,KAAK,gBAAc,KAAK,OAAO,IAAI,QAAQ,IAAG,KAAK,OAAO,IAAI,UAASA,GAAE,MAAM,IAAG,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,KAAG,WAAS,KAAK,aAAa,CAAC,EAAE,YAAU,KAAK,iBAAe,KAAK,aAAa,OAAO,IAAG,KAAK,SAAS,SAAQN,IAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,8BAA4B,KAAK,wBAAwB,GAAE,CAACG;AAAE,aAAIC,KAAE,KAAK,WAAW,SAAO,GAAE,KAAGA,IAAEA;AAAI,eAAK,WAAWA,EAAC,EAAE,SAAS,YAAWJ,IAAE,KAAK,QAAQ,IAAI,CAAC;AAAE,aAAOC,GAAE,GAAG,cAAYA,GAAE,GAAG,UAAU,UAAQ,OAAMA,GAAE,GAAG,aAAW,CAACK,GAAE,iBAAeL,GAAE,GAAG,UAAU,eAAe,MAAKD,EAAC,GAAE,KAAK,WAAS,MAAG,KAAK,OAAO,SAAS,oBAAoB,GAAE,KAAK,WAAWA,EAAC,GAAE;AAAA,IAAE,GAAE,YAAW,SAASA,IAAE;AAAC,UAAIE,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,KAAK,SAAQC,KAAE;AAAG,WAAI,KAAK,WAAS,KAAK,kBAAkBP,EAAC,GAAE,KAAK,cAAY,KAAK,mBAAmB,UAAU,GAAE,KAAK,oBAAkB,KAAK,kBAAgB,KAAK,cAAa,KAAK,QAAQ,WAAS,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,KAAG,WAAS,KAAK,aAAa,CAAC,EAAE,WAAS,KAAK,eAAe,MAAI,KAAK,aAAa,CAAC,EAAE,eAAaA,GAAE,QAAMM,GAAE,oBAAkB,KAAK,aAAa,CAAC,EAAE,YAAUC,KAAE,KAAK,aAAa,CAAC,EAAE,YAAUD,GAAE,cAAYN,GAAE,QAAM,KAAK,eAAe,MAAIM,GAAE,sBAAoB,KAAK,aAAa,CAAC,EAAE,YAAUC,KAAE,KAAK,aAAa,CAAC,EAAE,YAAUD,GAAE,cAAa,KAAK,eAAe,OAAK,KAAK,aAAa,CAAC,EAAE,cAAYN,GAAE,QAAMM,GAAE,oBAAkB,KAAK,aAAa,CAAC,EAAE,aAAWC,KAAE,KAAK,aAAa,CAAC,EAAE,aAAWD,GAAE,cAAYN,GAAE,QAAM,KAAK,eAAe,OAAKM,GAAE,sBAAoB,KAAK,aAAa,CAAC,EAAE,aAAWC,KAAE,KAAK,aAAa,CAAC,EAAE,aAAWD,GAAE,iBAAeN,GAAE,QAAM,KAAK,SAAS,UAAU,IAAEM,GAAE,oBAAkBC,KAAE,KAAK,SAAS,UAAU,KAAK,SAAS,UAAU,IAAED,GAAE,WAAW,IAAE,KAAK,OAAO,OAAO,KAAGN,GAAE,QAAM,KAAK,SAAS,UAAU,KAAGM,GAAE,sBAAoBC,KAAE,KAAK,SAAS,UAAU,KAAK,SAAS,UAAU,IAAED,GAAE,WAAW,IAAGN,GAAE,QAAM,KAAK,SAAS,WAAW,IAAEM,GAAE,oBAAkBC,KAAE,KAAK,SAAS,WAAW,KAAK,SAAS,WAAW,IAAED,GAAE,WAAW,IAAE,KAAK,OAAO,MAAM,KAAGN,GAAE,QAAM,KAAK,SAAS,WAAW,KAAGM,GAAE,sBAAoBC,KAAE,KAAK,SAAS,WAAW,KAAK,SAAS,WAAW,IAAED,GAAE,WAAW,KAAI,UAAKC,MAAGN,GAAE,GAAG,aAAW,CAACK,GAAE,iBAAeL,GAAE,GAAG,UAAU,eAAe,MAAKD,EAAC,IAAG,KAAK,cAAY,KAAK,mBAAmB,UAAU,GAAE,KAAK,QAAQ,QAAM,QAAM,KAAK,QAAQ,SAAO,KAAK,OAAO,CAAC,EAAE,MAAM,OAAK,KAAK,SAAS,OAAK,OAAM,KAAK,QAAQ,QAAM,QAAM,KAAK,QAAQ,SAAO,KAAK,OAAO,CAAC,EAAE,MAAM,MAAI,KAAK,SAAS,MAAI,OAAME,KAAE,KAAK,MAAM,SAAO,GAAE,KAAGA,IAAEA;AAAI,YAAGE,MAAGD,KAAE,KAAK,MAAMD,EAAC,GAAG,KAAK,CAAC,IAAGG,KAAE,KAAK,uBAAuBF,EAAC,MAAIA,GAAE,aAAW,KAAK,oBAAkB,EAAEC,OAAI,KAAK,YAAY,CAAC,KAAG,KAAK,YAAY,MAAIC,KAAE,SAAO,MAAM,EAAE,EAAE,CAAC,MAAID,MAAGH,GAAE,SAAS,KAAK,YAAY,CAAC,GAAEG,EAAC,KAAG,mBAAiB,KAAK,QAAQ,QAAMH,GAAE,SAAS,KAAK,QAAQ,CAAC,GAAEG,EAAC,IAAG;AAAC,cAAG,KAAK,YAAU,MAAIC,KAAE,SAAO,MAAK,cAAY,KAAK,QAAQ,aAAW,CAAC,KAAK,qBAAqBF,EAAC;AAAE;AAAM,eAAK,WAAWH,IAAEG,EAAC,GAAE,KAAK,SAAS,UAASH,IAAE,KAAK,QAAQ,CAAC;AAAE;AAAA,QAAK;AAAC,aAAO,KAAK,mBAAmBA,EAAC,GAAEC,GAAE,GAAG,aAAWA,GAAE,GAAG,UAAU,KAAK,MAAKD,EAAC,GAAE,KAAK,SAAS,QAAOA,IAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,kBAAgB,KAAK,aAAY;AAAA,IAAE,GAAE,YAAW,SAASA,IAAEE,IAAE;AAAC,UAAIC,IAAEC,IAAEC,IAAEC;AAAE,UAAGN;AAAE,eAAOC,GAAE,GAAG,aAAW,CAAC,KAAK,QAAQ,iBAAeA,GAAE,GAAG,UAAU,KAAK,MAAKD,EAAC,GAAE,KAAK,QAAQ,UAAQI,MAAGD,KAAE,MAAM,YAAY,OAAO,GAAEG,KAAE,CAAC,IAAGD,KAAE,KAAK,QAAQ,SAAO,QAAMA,OAAIC,GAAE,OAAKF,GAAE,OAAK,KAAK,OAAO,OAAO,OAAK,KAAK,QAAQ,QAAM,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,EAAE,OAAK,IAAE,KAAK,aAAa,CAAC,EAAE,cAAaC,MAAG,QAAMA,OAAIC,GAAE,MAAIF,GAAE,MAAI,KAAK,OAAO,OAAO,MAAI,KAAK,QAAQ,OAAK,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,EAAE,OAAK,IAAE,KAAK,aAAa,CAAC,EAAE,aAAY,KAAK,YAAU,MAAGH,GAAE,KAAK,MAAM,EAAE,QAAQK,IAAE,SAAS,KAAK,QAAQ,QAAO,EAAE,KAAG,KAAI,WAAU;AAAC,UAAAH,GAAE,OAAOH,EAAC;AAAA,QAAC,CAAC,KAAG,KAAK,OAAOA,IAAEE,EAAC,GAAE;AAAA,IAAE,GAAE,QAAO,WAAU;AAAC,UAAG,KAAK,UAAS;AAAC,aAAK,SAAS,EAAC,QAAO,KAAI,CAAC,GAAE,eAAa,KAAK,QAAQ,SAAO,KAAK,YAAY,IAAI,KAAK,UAAU,EAAE,YAAY,oBAAoB,IAAE,KAAK,YAAY,KAAK;AAAE,iBAAQF,KAAE,KAAK,WAAW,SAAO,GAAE,KAAGA,IAAEA;AAAI,eAAK,WAAWA,EAAC,EAAE,SAAS,cAAa,MAAK,KAAK,QAAQ,IAAI,CAAC,GAAE,KAAK,WAAWA,EAAC,EAAE,eAAe,SAAO,KAAK,WAAWA,EAAC,EAAE,SAAS,OAAM,MAAK,KAAK,QAAQ,IAAI,CAAC,GAAE,KAAK,WAAWA,EAAC,EAAE,eAAe,OAAK;AAAA,MAAE;AAAC,aAAO,KAAK,gBAAc,KAAK,YAAY,CAAC,EAAE,cAAY,KAAK,YAAY,CAAC,EAAE,WAAW,YAAY,KAAK,YAAY,CAAC,CAAC,GAAE,eAAa,KAAK,QAAQ,UAAQ,KAAK,UAAQ,KAAK,OAAO,CAAC,EAAE,cAAY,KAAK,OAAO,OAAO,GAAEC,GAAE,OAAO,MAAK,EAAC,QAAO,MAAK,UAAS,OAAG,WAAU,OAAG,cAAa,KAAI,CAAC,GAAE,KAAK,YAAY,OAAKA,GAAE,KAAK,YAAY,IAAI,EAAE,MAAM,KAAK,WAAW,IAAEA,GAAE,KAAK,YAAY,MAAM,EAAE,QAAQ,KAAK,WAAW,IAAG;AAAA,IAAI,GAAE,WAAU,SAASC,IAAE;AAAC,UAAIF,KAAE,KAAK,kBAAkBE,MAAGA,GAAE,SAAS,GAAEC,KAAE,CAAC;AAAE,aAAOD,KAAEA,MAAG,CAAC,GAAED,GAAED,EAAC,EAAE,KAAK,WAAU;AAAC,YAAIA,MAAGC,GAAEC,GAAE,QAAM,IAAI,EAAE,KAAKA,GAAE,aAAW,IAAI,KAAG,IAAI,MAAMA,GAAE,cAAY,gBAAgB;AAAE,QAAAF,MAAGG,GAAE,MAAMD,GAAE,OAAKF,GAAE,CAAC,IAAE,QAAM,OAAKE,GAAE,OAAKA,GAAE,aAAWF,GAAE,CAAC,IAAEA,GAAE,CAAC,EAAE;AAAA,MAAC,CAAC,GAAE,CAACG,GAAE,UAAQD,GAAE,OAAKC,GAAE,KAAKD,GAAE,MAAI,GAAG,GAAEC,GAAE,KAAK,GAAG;AAAA,IAAC,GAAE,SAAQ,SAASH,IAAE;AAAC,UAAIE,KAAE,KAAK,kBAAkBF,MAAGA,GAAE,SAAS,GAAEG,KAAE,CAAC;AAAE,aAAOH,KAAEA,MAAG,CAAC,GAAEE,GAAE,KAAK,WAAU;AAAC,QAAAC,GAAE,KAAKF,GAAED,GAAE,QAAM,IAAI,EAAE,KAAKA,GAAE,aAAW,IAAI,KAAG,EAAE;AAAA,MAAC,CAAC,GAAEG;AAAA,IAAC,GAAE,iBAAgB,SAASH,IAAE;AAAC,UAAIE,KAAE,KAAK,YAAY,MAAKC,KAAED,KAAE,KAAK,kBAAkB,OAAME,KAAE,KAAK,YAAY,KAAIC,KAAED,KAAE,KAAK,kBAAkB,QAAOE,KAAEN,GAAE,MAAKO,KAAED,KAAEN,GAAE,OAAMQ,KAAER,GAAE,KAAIS,KAAED,KAAER,GAAE,QAAOU,KAAE,KAAK,OAAO,MAAM,KAAIkB,KAAE,KAAK,OAAO,MAAM,MAAKlB,KAAE,QAAM,KAAK,QAAQ,QAAMF,KAAEJ,KAAEM,MAAGN,KAAEM,KAAED,IAAEmB,KAAE,QAAM,KAAK,QAAQ,QAAMtB,KAAEJ,KAAE0B,MAAG1B,KAAE0B,KAAErB;AAAE,aAAM,cAAY,KAAK,QAAQ,aAAW,KAAK,QAAQ,6BAA2B,cAAY,KAAK,QAAQ,aAAW,KAAK,kBAAkB,KAAK,WAAS,UAAQ,QAAQ,IAAEP,GAAE,KAAK,WAAS,UAAQ,QAAQ,IAAEU,MAAGkB,KAAEtB,KAAEJ,KAAE,KAAK,kBAAkB,QAAM,KAAGC,KAAE,KAAK,kBAAkB,QAAM,IAAEI,MAAGC,KAAEJ,KAAE,KAAK,kBAAkB,SAAO,KAAGC,KAAE,KAAK,kBAAkB,SAAO,IAAEI;AAAA,IAAC,GAAE,wBAAuB,SAAST,IAAE;AAAC,UAAIE,KAAE,QAAM,KAAK,QAAQ,QAAM,KAAK,YAAY,KAAK,YAAY,MAAI,KAAK,OAAO,MAAM,KAAIF,GAAE,KAAIA,GAAE,MAAM,GAAEG,KAAE,QAAM,KAAK,QAAQ,QAAM,KAAK,YAAY,KAAK,YAAY,OAAK,KAAK,OAAO,MAAM,MAAKH,GAAE,MAAKA,GAAE,KAAK,GAAEA,KAAEE,MAAGC,IAAED,KAAE,KAAK,0BAA0B,GAAEC,KAAE,KAAK,4BAA4B;AAAE,aAAM,CAAC,CAACH,OAAI,KAAK,WAASG,MAAG,YAAUA,MAAG,WAASD,KAAE,IAAE,IAAEA,OAAI,WAASA,KAAE,IAAE;AAAA,IAAG,GAAE,sBAAqB,SAASF,IAAE;AAAC,UAAIE,KAAE,KAAK,YAAY,KAAK,YAAY,MAAI,KAAK,OAAO,MAAM,KAAIF,GAAE,MAAIA,GAAE,SAAO,GAAEA,GAAE,MAAM,GAAEG,KAAE,KAAK,YAAY,KAAK,YAAY,OAAK,KAAK,OAAO,MAAM,MAAKH,GAAE,OAAKA,GAAE,QAAM,GAAEA,GAAE,KAAK,GAAEI,KAAE,KAAK,0BAA0B,GAAEJ,KAAE,KAAK,4BAA4B;AAAE,aAAO,KAAK,YAAUA,KAAE,YAAUA,MAAGG,MAAG,WAASH,MAAG,CAACG,KAAEC,OAAI,WAASA,MAAGF,MAAG,SAAOE,MAAG,CAACF;AAAA,IAAE,GAAE,2BAA0B,WAAU;AAAC,UAAIF,KAAE,KAAK,YAAY,MAAI,KAAK,gBAAgB;AAAI,aAAO,KAAGA,OAAI,IAAEA,KAAE,SAAO;AAAA,IAAK,GAAE,6BAA4B,WAAU;AAAC,UAAIA,KAAE,KAAK,YAAY,OAAK,KAAK,gBAAgB;AAAK,aAAO,KAAGA,OAAI,IAAEA,KAAE,UAAQ;AAAA,IAAO,GAAE,SAAQ,SAASA,IAAE;AAAC,aAAO,KAAK,cAAcA,EAAC,GAAE,KAAK,oBAAoB,GAAE,KAAK,iBAAiB,GAAE;AAAA,IAAI,GAAE,cAAa,WAAU;AAAC,UAAIA,KAAE,KAAK;AAAQ,aAAOA,GAAE,YAAY,gBAAc,SAAO,CAACA,GAAE,WAAW,IAAEA,GAAE;AAAA,IAAW,GAAE,mBAAkB,SAASA,IAAE;AAAC,UAAIE,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEC,KAAE,KAAK,aAAa;AAAE,UAAGA,MAAGR;AAAE,aAAIE,KAAEM,GAAE,SAAO,GAAE,KAAGN,IAAEA;AAAI,eAAIC,MAAGC,KAAEH,GAAEO,GAAEN,EAAC,GAAE,KAAK,SAAS,CAAC,CAAC,GAAG,SAAO,GAAE,KAAGC,IAAEA;AAAI,aAACE,KAAEJ,GAAE,KAAKG,GAAED,EAAC,GAAE,KAAK,cAAc,MAAIE,OAAI,QAAM,CAACA,GAAE,QAAQ,YAAUE,GAAE,KAAK,CAACN,GAAE,WAAWI,GAAE,QAAQ,KAAK,IAAEA,GAAE,QAAQ,MAAM,KAAKA,GAAE,OAAO,IAAEJ,GAAEI,GAAE,QAAQ,OAAMA,GAAE,OAAO,EAAE,IAAI,qBAAqB,EAAE,IAAI,0BAA0B,GAAEA,EAAC,CAAC;AAAE,eAASI,KAAG;AAAC,QAAAH,GAAE,KAAK,IAAI;AAAA,MAAC;AAAC,WAAIC,GAAE,KAAK,CAACN,GAAE,WAAW,KAAK,QAAQ,KAAK,IAAE,KAAK,QAAQ,MAAM,KAAK,KAAK,SAAQ,MAAK,EAAC,SAAQ,KAAK,SAAQ,MAAK,KAAK,YAAW,CAAC,IAAEA,GAAE,KAAK,QAAQ,OAAM,KAAK,OAAO,EAAE,IAAI,qBAAqB,EAAE,IAAI,0BAA0B,GAAE,IAAI,CAAC,GAAEC,KAAEK,GAAE,SAAO,GAAE,KAAGL,IAAEA;AAAI,QAAAK,GAAEL,EAAC,EAAE,CAAC,EAAE,KAAKO,EAAC;AAAE,aAAOR,GAAEK,EAAC;AAAA,IAAC,GAAE,0BAAyB,WAAU;AAAC,UAAIH,KAAE,KAAK,YAAY,KAAK,WAAS,KAAK,aAAW,QAAQ;AAAE,WAAK,QAAMF,GAAE,KAAK,KAAK,OAAM,SAASD,IAAE;AAAC,iBAAQE,KAAE,GAAEA,KAAEC,GAAE,QAAOD;AAAI,cAAGC,GAAED,EAAC,MAAIF,GAAE,KAAK,CAAC;AAAE,mBAAM;AAAG,eAAM;AAAA,MAAE,CAAC;AAAA,IAAC,GAAE,eAAc,SAASA,IAAE;AAAC,WAAK,QAAM,CAAC,GAAE,KAAK,aAAW,CAAC,IAAI;AAAE,UAAIE,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,KAAK,OAAMkB,KAAE,CAAC,CAAC3B,GAAE,WAAW,KAAK,QAAQ,KAAK,IAAE,KAAK,QAAQ,MAAM,KAAK,KAAK,QAAQ,CAAC,GAAED,IAAE,EAAC,MAAK,KAAK,YAAW,CAAC,IAAEC,GAAE,KAAK,QAAQ,OAAM,KAAK,OAAO,GAAE,IAAI,CAAC,GAAEgB,KAAE,KAAK,aAAa;AAAE,UAAGA,MAAG,KAAK;AAAM,aAAIf,KAAEe,GAAE,SAAO,GAAE,KAAGf,IAAEA;AAAI,eAAIC,MAAGC,KAAEH,GAAEgB,GAAEf,EAAC,GAAE,KAAK,SAAS,CAAC,CAAC,GAAG,SAAO,GAAE,KAAGC,IAAEA;AAAI,aAACE,KAAEJ,GAAE,KAAKG,GAAED,EAAC,GAAE,KAAK,cAAc,MAAIE,OAAI,QAAM,CAACA,GAAE,QAAQ,aAAWuB,GAAE,KAAK,CAAC3B,GAAE,WAAWI,GAAE,QAAQ,KAAK,IAAEA,GAAE,QAAQ,MAAM,KAAKA,GAAE,QAAQ,CAAC,GAAEL,IAAE,EAAC,MAAK,KAAK,YAAW,CAAC,IAAEC,GAAEI,GAAE,QAAQ,OAAMA,GAAE,OAAO,GAAEA,EAAC,CAAC,GAAE,KAAK,WAAW,KAAKA,EAAC;AAAG,WAAIH,KAAE0B,GAAE,SAAO,GAAE,KAAG1B,IAAEA;AAAI,aAAII,KAAEsB,GAAE1B,EAAC,EAAE,CAAC,GAAEO,MAAGF,KAAEqB,GAAE1B,EAAC,EAAEC,KAAE,CAAC,GAAG,QAAOA,KAAEM,IAAEN;AAAI,WAACK,KAAEP,GAAEM,GAAEJ,EAAC,CAAC,GAAG,KAAK,KAAK,aAAW,SAAQG,EAAC,GAAEI,GAAE,KAAK,EAAC,MAAKF,IAAE,UAASF,IAAE,OAAM,GAAE,QAAO,GAAE,MAAK,GAAE,KAAI,EAAC,CAAC;AAAA,IAAC,GAAE,kBAAiB,SAASN,IAAE;AAAC,UAAIE,IAAEC,IAAEC,IAAEC;AAAE,WAAI,KAAK,WAAS,CAAC,CAAC,KAAK,MAAM,WAAS,QAAM,KAAK,QAAQ,QAAM,KAAK,YAAY,KAAK,MAAM,CAAC,EAAE,IAAI,IAAG,KAAK,gBAAc,KAAK,WAAS,KAAK,OAAO,SAAO,KAAK,iBAAiB,IAAGH,KAAE,KAAK,MAAM,SAAO,GAAE,KAAGA,IAAEA;AAAI,SAACC,KAAE,KAAK,MAAMD,EAAC,GAAG,aAAW,KAAK,oBAAkB,KAAK,oBAAkBC,GAAE,KAAK,CAAC,MAAI,KAAK,YAAY,CAAC,MAAIC,KAAE,KAAK,QAAQ,mBAAiBH,GAAE,KAAK,QAAQ,kBAAiBE,GAAE,IAAI,IAAEA,GAAE,MAAKH,OAAIG,GAAE,QAAMC,GAAE,WAAW,GAAED,GAAE,SAAOC,GAAE,YAAY,IAAGC,KAAED,GAAE,OAAO,GAAED,GAAE,OAAKE,GAAE,MAAKF,GAAE,MAAIE,GAAE;AAAK,UAAG,KAAK,QAAQ,UAAQ,KAAK,QAAQ,OAAO;AAAkB,aAAK,QAAQ,OAAO,kBAAkB,KAAK,IAAI;AAAA;AAAO,aAAIH,KAAE,KAAK,WAAW,SAAO,GAAE,KAAGA,IAAEA;AAAI,UAAAG,KAAE,KAAK,WAAWH,EAAC,EAAE,QAAQ,OAAO,GAAE,KAAK,WAAWA,EAAC,EAAE,eAAe,OAAKG,GAAE,MAAK,KAAK,WAAWH,EAAC,EAAE,eAAe,MAAIG,GAAE,KAAI,KAAK,WAAWH,EAAC,EAAE,eAAe,QAAM,KAAK,WAAWA,EAAC,EAAE,QAAQ,WAAW,GAAE,KAAK,WAAWA,EAAC,EAAE,eAAe,SAAO,KAAK,WAAWA,EAAC,EAAE,QAAQ,YAAY;AAAE,aAAO;AAAA,IAAI,GAAE,oBAAmB,SAASC,IAAE;AAAC,UAAIC,IAAEC,MAAGF,KAAEA,MAAG,MAAM;AAAQ,MAAAE,GAAE,eAAaA,GAAE,YAAY,gBAAc,WAASD,KAAEC,GAAE,aAAYA,GAAE,cAAY,EAAC,SAAQ,WAAU;AAAC,YAAIL,KAAEG,GAAE,YAAY,CAAC,EAAE,SAAS,YAAY,GAAED,KAAED,GAAE,MAAID,KAAE,KAAIG,GAAE,SAAS,CAAC,CAAC,EAAE,SAASC,MAAGD,GAAE,YAAY,CAAC,EAAE,YAAU,0BAA0B,EAAE,YAAY,oBAAoB;AAAE,eAAM,YAAUH,KAAEG,GAAE,qBAAqBA,GAAE,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,GAAEF,GAAE,QAAOE,GAAE,SAAS,CAAC,CAAC,EAAE,SAASD,EAAC,CAAC,IAAE,SAAOF,KAAEG,GAAE,qBAAqBA,GAAE,aAAYD,EAAC,IAAE,UAAQF,MAAGE,GAAE,KAAK,OAAMC,GAAE,YAAY,KAAK,KAAK,CAAC,GAAEC,MAAGF,GAAE,IAAI,cAAa,QAAQ,GAAEA;AAAA,MAAC,GAAE,QAAO,SAASF,IAAEE,IAAE;AAAC,QAAAE,MAAG,CAACC,GAAE,yBAAuBH,GAAE,OAAO,KAAGA,GAAE,OAAOC,GAAE,YAAY,YAAY,IAAE,SAASA,GAAE,YAAY,IAAI,YAAY,KAAG,GAAE,EAAE,IAAE,SAASA,GAAE,YAAY,IAAI,eAAe,KAAG,GAAE,EAAE,CAAC,GAAED,GAAE,MAAM,KAAGA,GAAE,MAAMC,GAAE,YAAY,WAAW,IAAE,SAASA,GAAE,YAAY,IAAI,aAAa,KAAG,GAAE,EAAE,IAAE,SAASA,GAAE,YAAY,IAAI,cAAc,KAAG,GAAE,EAAE,CAAC;AAAA,MAAE,EAAC,IAAGA,GAAE,cAAYF,GAAEI,GAAE,YAAY,QAAQ,KAAKF,GAAE,SAAQA,GAAE,WAAW,CAAC,GAAEA,GAAE,YAAY,MAAMA,GAAE,WAAW,GAAEE,GAAE,YAAY,OAAOF,IAAEA,GAAE,WAAW;AAAA,IAAC,GAAE,sBAAqB,SAASH,IAAEE,IAAE;AAAC,UAAIC,KAAE;AAAK,MAAAH,GAAE,SAAS,EAAE,KAAK,WAAU;AAAC,QAAAC,GAAE,mBAAkBE,GAAE,SAAS,CAAC,CAAC,EAAE,KAAK,WAAUF,GAAE,IAAI,EAAE,KAAK,SAAS,KAAG,CAAC,EAAE,SAASC,EAAC;AAAA,MAAC,CAAC;AAAA,IAAC,GAAE,oBAAmB,SAASF,IAAE;AAAC,eAAQE,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEkB,KAAE,MAAKX,KAAE,MAAKC,KAAE,KAAK,WAAW,SAAO,GAAE,KAAGA,IAAEA;AAAI,QAAAjB,GAAE,SAAS,KAAK,YAAY,CAAC,GAAE,KAAK,WAAWiB,EAAC,EAAE,QAAQ,CAAC,CAAC,MAAI,KAAK,gBAAgB,KAAK,WAAWA,EAAC,EAAE,cAAc,IAAEU,MAAG3B,GAAE,SAAS,KAAK,WAAWiB,EAAC,EAAE,QAAQ,CAAC,GAAEU,GAAE,QAAQ,CAAC,CAAC,MAAIA,KAAE,KAAK,WAAWV,EAAC,GAAED,KAAEC,MAAG,KAAK,WAAWA,EAAC,EAAE,eAAe,SAAO,KAAK,WAAWA,EAAC,EAAE,SAAS,OAAMlB,IAAE,KAAK,QAAQ,IAAI,CAAC,GAAE,KAAK,WAAWkB,EAAC,EAAE,eAAe,OAAK;AAAI,UAAGU;AAAE,YAAG,MAAI,KAAK,WAAW;AAAO,eAAK,WAAWX,EAAC,EAAE,eAAe,SAAO,KAAK,WAAWA,EAAC,EAAE,SAAS,QAAOjB,IAAE,KAAK,QAAQ,IAAI,CAAC,GAAE,KAAK,WAAWiB,EAAC,EAAE,eAAe,OAAK;AAAA,aAAO;AAAC,eAAId,KAAE,KAAIC,KAAE,MAAKC,MAAGI,KAAEmB,GAAE,YAAU,KAAK,YAAY,KAAK,WAAW,KAAG,SAAO,OAAMtB,KAAEG,KAAE,UAAQ,UAASC,KAAED,KAAE,YAAU,WAAUP,KAAE,KAAK,MAAM,SAAO,GAAE,KAAGA,IAAEA;AAAI,YAAAD,GAAE,SAAS,KAAK,WAAWgB,EAAC,EAAE,QAAQ,CAAC,GAAE,KAAK,MAAMf,EAAC,EAAE,KAAK,CAAC,CAAC,KAAG,KAAK,MAAMA,EAAC,EAAE,KAAK,CAAC,MAAI,KAAK,YAAY,CAAC,MAAIK,KAAE,KAAK,MAAML,EAAC,EAAE,KAAK,OAAO,EAAEG,EAAC,GAAEG,KAAE,OAAGR,GAAEU,EAAC,IAAEH,KAAE,KAAK,MAAML,EAAC,EAAEI,EAAC,IAAE,MAAIE,KAAE,OAAI,KAAK,IAAIR,GAAEU,EAAC,IAAEH,EAAC,IAAEJ,OAAIA,KAAE,KAAK,IAAIH,GAAEU,EAAC,IAAEH,EAAC,GAAEH,KAAE,KAAK,MAAMF,EAAC,GAAE,KAAK,YAAUM,KAAE,OAAK;AAAS,WAACJ,MAAG,KAAK,QAAQ,iBAAe,KAAK,qBAAmB,KAAK,WAAWa,EAAC,KAAGb,KAAE,KAAK,WAAWJ,IAAEI,IAAE,MAAK,IAAE,IAAE,KAAK,WAAWJ,IAAE,MAAK,KAAK,WAAWiB,EAAC,EAAE,SAAQ,IAAE,GAAE,KAAK,SAAS,UAASjB,IAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,WAAWiB,EAAC,EAAE,SAAS,UAASjB,IAAE,KAAK,QAAQ,IAAI,CAAC,GAAE,KAAK,mBAAiB,KAAK,WAAWiB,EAAC,GAAE,KAAK,QAAQ,YAAY,OAAO,KAAK,kBAAiB,KAAK,WAAW,GAAE,KAAK,WAAWA,EAAC,EAAE,SAAS,QAAOjB,IAAE,KAAK,QAAQ,IAAI,CAAC,GAAE,KAAK,WAAWiB,EAAC,EAAE,eAAe,OAAK,KAAG,KAAK,iBAAiB,eAAe,SAAO,KAAK,WAAWA,EAAC,EAAE,SAAS,QAAOjB,IAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,iBAAiB,eAAe,OAAK;AAAA,QAAG;AAAA,IAAC,GAAE,eAAc,SAASA,IAAE;AAAC,UAAIE,KAAE,KAAK,SAAQF,KAAEC,GAAE,WAAWC,GAAE,MAAM,IAAED,GAAEC,GAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAE,CAACF,IAAE,KAAK,WAAW,CAAC,CAAC,IAAE,YAAUE,GAAE,SAAO,KAAK,YAAY,MAAM,IAAE,KAAK;AAAY,aAAOF,GAAE,QAAQ,MAAM,EAAE,UAAQC,GAAE,aAAWC,GAAE,WAASA,GAAE,WAAS,KAAK,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAYF,GAAE,CAAC,CAAC,GAAEA,GAAE,CAAC,MAAI,KAAK,YAAY,CAAC,MAAI,KAAK,aAAW,EAAC,OAAM,KAAK,YAAY,CAAC,EAAE,MAAM,OAAM,QAAO,KAAK,YAAY,CAAC,EAAE,MAAM,QAAO,UAAS,KAAK,YAAY,IAAI,UAAU,GAAE,KAAI,KAAK,YAAY,IAAI,KAAK,GAAE,MAAK,KAAK,YAAY,IAAI,MAAM,EAAC,IAAGA,GAAE,CAAC,EAAE,MAAM,SAAO,CAACE,GAAE,mBAAiBF,GAAE,MAAM,KAAK,YAAY,MAAM,CAAC,GAAEA,GAAE,CAAC,EAAE,MAAM,UAAQ,CAACE,GAAE,mBAAiBF,GAAE,OAAO,KAAK,YAAY,OAAO,CAAC,GAAEA;AAAA,IAAC,GAAE,yBAAwB,SAASA,IAAE;AAAC,kBAAU,OAAOA,OAAIA,KAAEA,GAAE,MAAM,GAAG,IAAG,WAASA,KAAEC,GAAE,QAAQD,EAAC,IAAE,EAAC,MAAK,CAACA,GAAE,CAAC,GAAE,KAAI,CAACA,GAAE,CAAC,KAAG,EAAC,IAAEA,QAAK,KAAK,OAAO,MAAM,OAAKA,GAAE,OAAK,KAAK,QAAQ,OAAM,WAAUA,OAAI,KAAK,OAAO,MAAM,OAAK,KAAK,kBAAkB,QAAMA,GAAE,QAAM,KAAK,QAAQ,OAAM,SAAQA,OAAI,KAAK,OAAO,MAAM,MAAIA,GAAE,MAAI,KAAK,QAAQ,MAAK,YAAWA,OAAI,KAAK,OAAO,MAAM,MAAI,KAAK,kBAAkB,SAAOA,GAAE,SAAO,KAAK,QAAQ;AAAA,IAAI,GAAE,kBAAiB,WAAU;AAAC,WAAK,eAAa,KAAK,OAAO,aAAa;AAAE,UAAIA,KAAE,KAAK,aAAa,OAAO;AAAE,aAAM,eAAa,KAAK,eAAa,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,KAAGC,GAAE,SAAS,KAAK,aAAa,CAAC,GAAE,KAAK,aAAa,CAAC,CAAC,MAAID,GAAE,QAAM,KAAK,aAAa,WAAW,GAAEA,GAAE,OAAK,KAAK,aAAa,UAAU,IAAG,EAAC,MAAKA,KAAE,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,EAAE,QAAM,KAAK,aAAa,CAAC,EAAE,WAAS,WAAS,KAAK,aAAa,CAAC,EAAE,QAAQ,YAAY,KAAGC,GAAE,GAAG,KAAG,EAAC,KAAI,GAAE,MAAK,EAAC,IAAED,IAAG,OAAK,SAAS,KAAK,aAAa,IAAI,gBAAgB,GAAE,EAAE,KAAG,IAAG,MAAKA,GAAE,QAAM,SAAS,KAAK,aAAa,IAAI,iBAAiB,GAAE,EAAE,KAAG,GAAE;AAAA,IAAC,GAAE,oBAAmB,WAAU;AAAC,UAAG,eAAa,KAAK;AAAY,eAAM,EAAC,KAAI,GAAE,MAAK,EAAC;AAAE,UAAIA,KAAE,KAAK,YAAY,SAAS;AAAE,aAAM,EAAC,KAAIA,GAAE,OAAK,SAAS,KAAK,OAAO,IAAI,KAAK,GAAE,EAAE,KAAG,KAAG,KAAK,aAAa,UAAU,GAAE,MAAKA,GAAE,QAAM,SAAS,KAAK,OAAO,IAAI,MAAM,GAAE,EAAE,KAAG,KAAG,KAAK,aAAa,WAAW,EAAC;AAAA,IAAC,GAAE,eAAc,WAAU;AAAC,WAAK,UAAQ,EAAC,MAAK,SAAS,KAAK,YAAY,IAAI,YAAY,GAAE,EAAE,KAAG,GAAE,KAAI,SAAS,KAAK,YAAY,IAAI,WAAW,GAAE,EAAE,KAAG,EAAC;AAAA,IAAC,GAAE,yBAAwB,WAAU;AAAC,WAAK,oBAAkB,EAAC,OAAM,KAAK,OAAO,WAAW,GAAE,QAAO,KAAK,OAAO,YAAY,EAAC;AAAA,IAAC,GAAE,iBAAgB,WAAU;AAAC,UAAIA,IAAEE,IAAEC,KAAE,KAAK;AAAQ,mBAAWA,GAAE,gBAAcA,GAAE,cAAY,KAAK,OAAO,CAAC,EAAE,aAAY,eAAaA,GAAE,eAAa,aAAWA,GAAE,gBAAc,KAAK,cAAY,CAAC,IAAE,KAAK,OAAO,SAAS,OAAK,KAAK,OAAO,OAAO,MAAK,IAAE,KAAK,OAAO,SAAS,MAAI,KAAK,OAAO,OAAO,KAAI,eAAaA,GAAE,cAAY,KAAK,SAAS,MAAM,IAAE,KAAK,OAAO,MAAM,IAAE,KAAK,kBAAkB,QAAM,KAAK,QAAQ,OAAM,eAAaA,GAAE,cAAY,KAAK,SAAS,MAAM,IAAE,KAAK,OAAO,OAAO,KAAG,KAAK,SAAS,CAAC,EAAE,KAAK,WAAW,gBAAc,KAAK,kBAAkB,SAAO,KAAK,QAAQ,GAAG,IAAG,6BAA6B,KAAKA,GAAE,WAAW,MAAIH,KAAEC,GAAEE,GAAE,WAAW,EAAE,CAAC,GAAED,KAAED,GAAEE,GAAE,WAAW,EAAE,OAAO,GAAEA,KAAE,aAAWF,GAAED,EAAC,EAAE,IAAI,UAAU,GAAE,KAAK,cAAY,CAACE,GAAE,QAAM,SAASD,GAAED,EAAC,EAAE,IAAI,iBAAiB,GAAE,EAAE,KAAG,MAAI,SAASC,GAAED,EAAC,EAAE,IAAI,aAAa,GAAE,EAAE,KAAG,KAAG,KAAK,QAAQ,MAAKE,GAAE,OAAK,SAASD,GAAED,EAAC,EAAE,IAAI,gBAAgB,GAAE,EAAE,KAAG,MAAI,SAASC,GAAED,EAAC,EAAE,IAAI,YAAY,GAAE,EAAE,KAAG,KAAG,KAAK,QAAQ,KAAIE,GAAE,QAAMC,KAAE,KAAK,IAAIH,GAAE,aAAYA,GAAE,WAAW,IAAEA,GAAE,gBAAc,SAASC,GAAED,EAAC,EAAE,IAAI,iBAAiB,GAAE,EAAE,KAAG,MAAI,SAASC,GAAED,EAAC,EAAE,IAAI,cAAc,GAAE,EAAE,KAAG,KAAG,KAAK,kBAAkB,QAAM,KAAK,QAAQ,MAAKE,GAAE,OAAKC,KAAE,KAAK,IAAIH,GAAE,cAAaA,GAAE,YAAY,IAAEA,GAAE,iBAAe,SAASC,GAAED,EAAC,EAAE,IAAI,gBAAgB,GAAE,EAAE,KAAG,MAAI,SAASC,GAAED,EAAC,EAAE,IAAI,eAAe,GAAE,EAAE,KAAG,KAAG,KAAK,kBAAkB,SAAO,KAAK,QAAQ,GAAG;AAAA,IAAE,GAAE,oBAAmB,SAASA,IAAEE,IAAE;AAAC,MAAAA,KAAEA,MAAG,KAAK;AAAS,UAAIC,KAAE,eAAaH,KAAE,IAAE,IAAGI,KAAE,eAAa,KAAK,eAAa,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,KAAGH,GAAE,SAAS,KAAK,aAAa,CAAC,GAAE,KAAK,aAAa,CAAC,CAAC,IAAE,KAAK,eAAa,KAAK,cAAaD,KAAE,eAAe,KAAKI,GAAE,CAAC,EAAE,OAAO;AAAE,aAAM,EAAC,KAAIF,GAAE,MAAI,KAAK,OAAO,SAAS,MAAIC,KAAE,KAAK,OAAO,OAAO,MAAIA,MAAG,YAAU,KAAK,cAAY,CAAC,KAAK,aAAa,UAAU,IAAEH,KAAE,IAAEI,GAAE,UAAU,KAAGD,IAAE,MAAKD,GAAE,OAAK,KAAK,OAAO,SAAS,OAAKC,KAAE,KAAK,OAAO,OAAO,OAAKA,MAAG,YAAU,KAAK,cAAY,CAAC,KAAK,aAAa,WAAW,IAAEH,KAAE,IAAEI,GAAE,WAAW,KAAGD,GAAC;AAAA,IAAC,GAAE,mBAAkB,SAASH,IAAE;AAAC,UAAIE,KAAE,KAAK,SAAQC,KAAEH,GAAE,OAAMI,KAAEJ,GAAE,OAAMK,KAAE,eAAa,KAAK,eAAa,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,KAAGJ,GAAE,SAAS,KAAK,aAAa,CAAC,GAAE,KAAK,aAAa,CAAC,CAAC,IAAE,KAAK,eAAa,KAAK,cAAaK,KAAE,eAAe,KAAKD,GAAE,CAAC,EAAE,OAAO;AAAE,aAAM,eAAa,KAAK,eAAa,KAAK,aAAa,CAAC,MAAI,KAAK,SAAS,CAAC,KAAG,KAAK,aAAa,CAAC,MAAI,KAAK,aAAa,CAAC,MAAI,KAAK,OAAO,WAAS,KAAK,mBAAmB,IAAG,KAAK,qBAAmB,KAAK,gBAAcL,GAAE,QAAM,KAAK,OAAO,MAAM,OAAK,KAAK,YAAY,CAAC,MAAIG,KAAE,KAAK,YAAY,CAAC,IAAE,KAAK,OAAO,MAAM,OAAMH,GAAE,QAAM,KAAK,OAAO,MAAM,MAAI,KAAK,YAAY,CAAC,MAAII,KAAE,KAAK,YAAY,CAAC,IAAE,KAAK,OAAO,MAAM,MAAKJ,GAAE,QAAM,KAAK,OAAO,MAAM,OAAK,KAAK,YAAY,CAAC,MAAIG,KAAE,KAAK,YAAY,CAAC,IAAE,KAAK,OAAO,MAAM,OAAMH,GAAE,QAAM,KAAK,OAAO,MAAM,MAAI,KAAK,YAAY,CAAC,MAAII,KAAE,KAAK,YAAY,CAAC,IAAE,KAAK,OAAO,MAAM,OAAMF,GAAE,SAAOF,KAAE,KAAK,gBAAc,KAAK,OAAOI,KAAE,KAAK,iBAAeF,GAAE,KAAK,CAAC,CAAC,IAAEA,GAAE,KAAK,CAAC,GAAEE,KAAE,CAAC,KAAK,eAAaJ,KAAE,KAAK,OAAO,MAAM,OAAK,KAAK,YAAY,CAAC,KAAGA,KAAE,KAAK,OAAO,MAAM,OAAK,KAAK,YAAY,CAAC,IAAEA,KAAEA,KAAE,KAAK,OAAO,MAAM,OAAK,KAAK,YAAY,CAAC,IAAEA,KAAEE,GAAE,KAAK,CAAC,IAAEF,KAAEE,GAAE,KAAK,CAAC,GAAEF,KAAE,KAAK,gBAAc,KAAK,OAAOG,KAAE,KAAK,iBAAeD,GAAE,KAAK,CAAC,CAAC,IAAEA,GAAE,KAAK,CAAC,GAAEC,KAAE,CAAC,KAAK,eAAaH,KAAE,KAAK,OAAO,MAAM,QAAM,KAAK,YAAY,CAAC,KAAGA,KAAE,KAAK,OAAO,MAAM,QAAM,KAAK,YAAY,CAAC,IAAEA,KAAEA,KAAE,KAAK,OAAO,MAAM,QAAM,KAAK,YAAY,CAAC,IAAEA,KAAEE,GAAE,KAAK,CAAC,IAAEF,KAAEE,GAAE,KAAK,CAAC,KAAI,EAAC,KAAIE,KAAE,KAAK,OAAO,MAAM,MAAI,KAAK,OAAO,SAAS,MAAI,KAAK,OAAO,OAAO,OAAK,YAAU,KAAK,cAAY,CAAC,KAAK,aAAa,UAAU,IAAEE,KAAE,IAAED,GAAE,UAAU,IAAG,MAAKF,KAAE,KAAK,OAAO,MAAM,OAAK,KAAK,OAAO,SAAS,OAAK,KAAK,OAAO,OAAO,QAAM,YAAU,KAAK,cAAY,CAAC,KAAK,aAAa,WAAW,IAAEG,KAAE,IAAED,GAAE,WAAW,GAAE;AAAA,IAAC,GAAE,YAAW,SAASL,IAAEE,IAAEC,IAAEC,IAAE;AAAC,MAAAD,KAAEA,GAAE,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC,CAAC,IAAED,GAAE,KAAK,CAAC,EAAE,WAAW,aAAa,KAAK,YAAY,CAAC,GAAE,WAAS,KAAK,YAAUA,GAAE,KAAK,CAAC,IAAEA,GAAE,KAAK,CAAC,EAAE,WAAW,GAAE,KAAK,UAAQ,KAAK,UAAQ,EAAE,KAAK,UAAQ;AAAE,UAAIG,KAAE,KAAK;AAAQ,WAAK,OAAO,WAAU;AAAC,QAAAA,OAAI,KAAK,WAAS,KAAK,iBAAiB,CAACD,EAAC;AAAA,MAAC,CAAC;AAAA,IAAC,GAAE,QAAO,SAASJ,IAAEE,IAAE;AAAC,WAAK,YAAU;AAAG,UAAIC,IAAEC,KAAE,CAAC;AAAE,UAAG,CAAC,KAAK,gBAAc,KAAK,YAAY,OAAO,EAAE,UAAQ,KAAK,YAAY,OAAO,KAAK,WAAW,GAAE,KAAK,eAAa,MAAK,KAAK,OAAO,CAAC,MAAI,KAAK,YAAY,CAAC,GAAE;AAAC,aAAID,MAAK,KAAK;AAAW,qBAAS,KAAK,WAAWA,EAAC,KAAG,aAAW,KAAK,WAAWA,EAAC,MAAI,KAAK,WAAWA,EAAC,IAAE;AAAI,aAAK,YAAY,IAAI,KAAK,UAAU,EAAE,YAAY,oBAAoB;AAAA,MAAC;AAAM,aAAK,YAAY,KAAK;AAAE,eAASE,GAAEH,IAAEC,IAAEC,IAAE;AAAC,eAAO,SAASJ,IAAE;AAAC,UAAAI,GAAE,SAASF,IAAEF,IAAEG,GAAE,QAAQA,EAAC,CAAC;AAAA,QAAC;AAAA,MAAC;AAAC,WAAI,KAAK,eAAa,CAACD,MAAGE,GAAE,KAAK,SAASJ,IAAE;AAAC,aAAK,SAAS,WAAUA,IAAE,KAAK,QAAQ,KAAK,WAAW,CAAC;AAAA,MAAC,CAAC,GAAE,CAAC,KAAK,eAAa,KAAK,YAAY,SAAO,KAAK,YAAY,KAAK,EAAE,IAAI,qBAAqB,EAAE,CAAC,KAAG,KAAK,YAAY,WAAS,KAAK,YAAY,OAAO,EAAE,CAAC,KAAGE,MAAGE,GAAE,KAAK,SAASJ,IAAE;AAAC,aAAK,SAAS,UAASA,IAAE,KAAK,QAAQ,CAAC;AAAA,MAAC,CAAC,GAAE,SAAO,KAAK,qBAAmBE,OAAIE,GAAE,KAAK,SAASJ,IAAE;AAAC,aAAK,SAAS,UAASA,IAAE,KAAK,QAAQ,CAAC;AAAA,MAAC,CAAC,GAAEI,GAAE,KAAK,SAASF,IAAE;AAAC,eAAO,SAASF,IAAE;AAAC,UAAAE,GAAE,SAAS,WAAUF,IAAE,KAAK,QAAQ,IAAI,CAAC;AAAA,QAAC;AAAA,MAAC,EAAE,KAAK,MAAK,KAAK,gBAAgB,CAAC,GAAEI,GAAE,KAAK,SAASF,IAAE;AAAC,eAAO,SAASF,IAAE;AAAC,UAAAE,GAAE,SAAS,UAASF,IAAE,KAAK,QAAQ,IAAI,CAAC;AAAA,QAAC;AAAA,MAAC,EAAE,KAAK,MAAK,KAAK,gBAAgB,CAAC,KAAIG,KAAE,KAAK,WAAW,SAAO,GAAE,KAAGA,IAAEA;AAAI,QAAAD,MAAGE,GAAE,KAAKC,GAAE,cAAa,MAAK,KAAK,WAAWF,EAAC,CAAC,CAAC,GAAE,KAAK,WAAWA,EAAC,EAAE,eAAe,SAAOC,GAAE,KAAKC,GAAE,OAAM,MAAK,KAAK,WAAWF,EAAC,CAAC,CAAC,GAAE,KAAK,WAAWA,EAAC,EAAE,eAAe,OAAK;AAAG,UAAG,KAAK,iBAAe,KAAK,SAAS,KAAK,MAAM,EAAE,IAAI,UAAS,KAAK,YAAY,GAAE,KAAK,iBAAiB,OAAO,IAAG,KAAK,kBAAgB,KAAK,OAAO,IAAI,WAAU,KAAK,cAAc,GAAE,KAAK,iBAAe,KAAK,OAAO,IAAI,UAAS,WAAS,KAAK,gBAAc,KAAG,KAAK,aAAa,GAAE,KAAK,WAAS,OAAGD,MAAG,KAAK,SAAS,cAAaF,IAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,YAAY,CAAC,EAAE,WAAW,YAAY,KAAK,YAAY,CAAC,CAAC,GAAE,KAAK,wBAAsB,KAAK,OAAO,CAAC,MAAI,KAAK,YAAY,CAAC,KAAG,KAAK,OAAO,OAAO,GAAE,KAAK,SAAO,OAAM,CAACE,IAAE;AAAC,aAAIC,KAAE,GAAEA,KAAEC,GAAE,QAAOD;AAAI,UAAAC,GAAED,EAAC,EAAE,KAAK,MAAKH,EAAC;AAAE,aAAK,SAAS,QAAOA,IAAE,KAAK,QAAQ,CAAC;AAAA,MAAC;AAAC,aAAO,KAAK,cAAY,OAAG,CAAC,KAAK;AAAA,IAAmB,GAAE,UAAS,WAAU;AAAC,gBAAKC,GAAE,OAAO,UAAU,SAAS,MAAM,MAAK,SAAS,KAAG,KAAK,OAAO;AAAA,IAAC,GAAE,SAAQ,SAASD,IAAE;AAAC,UAAIE,KAAEF,MAAG;AAAK,aAAM,EAAC,QAAOE,GAAE,QAAO,aAAYA,GAAE,eAAaD,GAAE,CAAC,CAAC,GAAE,UAASC,GAAE,UAAS,kBAAiBA,GAAE,kBAAiB,QAAOA,GAAE,aAAY,MAAKA,GAAE,aAAY,QAAOF,KAAEA,GAAE,UAAQ,KAAI;AAAA,IAAC,EAAC,CAAC;AAAA,EAAC,CAAC;;;ACOhl1C,GAAC,SAAU,SAAU;AACpB;AAEA,QAAK,OAAO,WAAW,cAAc,OAAO,KAAM;AAGjD,aAAO;AAAA,QACN;AAAA;AAAA,MAED,GAAG,OAAQ;AAAA,IACZ,OAAO;AAGN,cAAS,OAAO,MAAO;AAAA,IACxB;AAAA,EACD,GAAE,SAAS6B,IAAG;AACb;AAEA,aAAS,WAAYC,IAAGC,YAAWC,OAAO;AACzC,aAASF,KAAIC,cAAiBD,KAAMC,aAAYC;AAAA,IACjD;AAEA,IAAAH,GAAE,OAAO,sBAAsBA,GAAE,OAAO,CAAC,GAAGA,GAAE,GAAG,SAAS,WAAW;AAAA,MAEpE,SAAS;AAAA,QACR,qBAAqB;AAAA,QACrB,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,WAAW,WAAW;AAAE,iBAAO;AAAA,QAAM;AAAA,QACrC,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,WAAW;AAAA,QACX,aAAa;AAAA,QACb,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,gBAAgB;AAAA,QAChB,SAAS;AAAA,QAET,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,eAAe;AAAA,QACf,WAAW;AAAA,QACX,eAAe;AAAA,MAChB;AAAA,MAEA,SAAS,WAAW;AACnB,YAAII,QAAO,MACV;AAED,aAAK,QAAQ,KAAK,eAAe,KAAK,QAAQ,KAAK,oBAAoB,CAAC;AAGxE,YAAI,CAAC,KAAK,QAAQ,GAAG,KAAK,QAAQ,QAAQ,GAAG;AAC5C,gBAAM;AAGN,gBAAM,IAAI,MAAM,GAAG;AAAA,QACpB;AAIA,YAAI,KAAK,QAAQ,UAAU,KAAK,QAAQ,eAAe;AACtD,eAAK,QAAQ,YAAY;AAAA,QAC1B;AAEA,QAAAJ,GAAE,GAAG,SAAS,UAAU,QAAQ,MAAM,MAAM,SAAS;AAIrD,YAAI,KAAK,QAAQ,QAAQ;AACxB,UAAAA,GAAE,KAAK,KAAK,EAAE,KAAK,WAAW;AAC7B,gBAAI,MAAM,KAAK,MACd,oBAAoB,IAAI,SAASI,MAAK,QAAQ,cAAc,GAC5D,mBAAmB,IAAI,SAASA,MAAK,QAAQ,aAAa;AAE3D,gBAAI,IAAI,SAASA,MAAK,QAAQ,QAAQ,EAAE,QAAQ;AAC/C,kBAAI,SAASA,MAAK,QAAQ,WAAW;AAGrC,kBAAK,CAAC,qBAAqB,CAAC,kBAAmB;AAC9C,oBAAIA,MAAK,QAAQ,gBAAgB;AAChC,sBAAI,SAASA,MAAK,QAAQ,cAAc;AAAA,gBACzC,OAAO;AACN,sBAAI,SAASA,MAAK,QAAQ,aAAa;AAAA,gBACxC;AAAA,cACD;AAAA,YACD,OAAO;AACN,kBAAI,SAASA,MAAK,QAAQ,SAAS;AAAA,YACpC;AAAA,UACD,CAAC;AAAA,QACF;AAAA,MACD;AAAA,MAEA,UAAU,WAAW;AACpB,aAAK,QACH,WAAW,oBAAoB,EAC/B,WAAW,aAAa;AAC1B,eAAOJ,GAAE,GAAG,SAAS,UAAU,SAAS,MAAM,MAAM,SAAS;AAAA,MAC9D;AAAA,MAEA,YAAY,SAAS,OAAO;AAC3B,YAAIK,IACH,MACA,aACA,cACAD,QAAO,MACPE,KAAI,KAAK,SACT,WAAW,OACX,YAAYN,GAAE,QAAQ,GACtB,mBACA,YACA,OACA,aACA,WACA,YACA,SACA,QACAO,IACA,cACA,UACA;AAGD,aAAK,WAAW,KAAK,kBAAkB,KAAK;AAC5C,aAAK,cAAc,KAAK,mBAAmB,UAAU;AAErD,YAAI,CAAC,KAAK,iBAAiB;AAC1B,eAAK,kBAAkB,KAAK;AAAA,QAC7B;AAGA,YAAI,KAAK,QAAQ,QAAQ;AACxB,cAAI,KAAK,aAAa,CAAC,MAAM,YAAY,KAAK,aAAa,CAAC,EAAE,YAAY,QAAQ;AAEjF,gBAEE,KAAK,eAAe,MACpB,KAAK,aAAa,CAAC,EAAE,eAEtB,MAAM,QACND,GAAE,mBACD;AACD,yBAAW,KAAK,aAAa,UAAU,IAAIA,GAAE;AAC7C,mBAAK,aAAa,UAAU,QAAQ;AAAA,YACrC,WACC,MAAM,QACN,KAAK,eAAe,MACpBA,GAAE,mBACD;AACD,yBAAW,KAAK,aAAa,UAAU,IAAIA,GAAE;AAC7C,mBAAK,aAAa,UAAU,QAAQ;AAAA,YACrC;AAEA,gBAEE,KAAK,eAAe,OACpB,KAAK,aAAa,CAAC,EAAE,cAEtB,MAAM,QACNA,GAAE,mBACD;AACD,yBAAW,KAAK,aAAa,WAAW,IAAIA,GAAE;AAC9C,mBAAK,aAAa,WAAW,QAAQ;AAAA,YACtC,WACC,MAAM,QACN,KAAK,eAAe,OACpBA,GAAE,mBACD;AACD,yBAAW,KAAK,aAAa,WAAW,IAAIA,GAAE;AAC9C,mBAAK,aAAa,WAAW,QAAQ;AAAA,YACtC;AAAA,UAED,OAAO;AAEN,gBACC,MAAM,QACN,UAAU,UAAU,IACpBA,GAAE,mBACD;AACD,yBAAW,UAAU,UAAU,IAAIA,GAAE;AACrC,wBAAU,UAAU,QAAQ;AAAA,YAC7B,WACCN,GAAE,MAAM,EAAE,OAAO,KAEhB,MAAM,QACN,UAAU,UAAU,KAErBM,GAAE,mBACD;AACD,yBAAW,UAAU,UAAU,IAAIA,GAAE;AACrC,wBAAU,UAAU,QAAQ;AAAA,YAC7B;AAEA,gBACC,MAAM,QACN,UAAU,WAAW,IACrBA,GAAE,mBACD;AACD,yBAAW,UAAU,WAAW,IAAIA,GAAE;AACtC,wBAAU,WAAW,QAAQ;AAAA,YAC9B,WACCN,GAAE,MAAM,EAAE,MAAM,KAEf,MAAM,QACN,UAAU,WAAW,KAEtBM,GAAE,mBACD;AACD,yBAAW,UAAU,WAAW,IAAIA,GAAE;AACtC,wBAAU,WAAW,QAAQ;AAAA,YAC9B;AAAA,UAED;AAEA,cAAI,aAAa,SAASN,GAAE,GAAG,aAAa,CAACM,GAAE,eAAe;AAC7D,YAAAN,GAAE,GAAG,UAAU,eAAe,MAAM,KAAK;AAAA,UAC1C;AAAA,QACD;AAGA,aAAK,cAAc,KAAK,mBAAmB,UAAU;AAGrD,4BAAoB,KAAK,YAAY,OAAO,EAAE;AAG9C,YAAI,CAAC,KAAK,QAAQ,QAAQ,KAAK,QAAQ,SAAS,KAAK;AACpD,eAAK,OAAO,CAAC,EAAE,MAAM,OAAO,KAAK,SAAS,OAAO;AAAA,QAClD;AACA,YAAI,CAAC,KAAK,QAAQ,QAAQ,KAAK,QAAQ,SAAS,KAAK;AACpD,eAAK,OAAO,CAAC,EAAE,MAAM,MAAO,KAAK,SAAS,MAAO;AAAA,QAClD;AAGA,aAAK,WAAW,KAAK,WAAW,KAAK,WAAW;AAChD,aAAK,eAAe,KAAK,eAAe,KAAK,eAAe;AAG5D,SAAC,WAAW;AACX,cAAI,cAAc,KAAK,YAAY,OAAO,EAAE,OAAO;AACnD,cAAI,eAAe,YAAY,QAAQ,cAAc,EAAE,QAAQ;AAC9D,yBAAa;AAAA,UACd;AAAA,QACD,GAAE,KAAK,IAAI;AAEX,gBAAQ,KAAK,UAAU,KAAK,WAAW;AACvC,sBAAc,KAAK,gBAAgB,KAAK,MAAM;AAC9C,kBAAU,SAAS,cAAcM,GAAE,QAAQ;AAG3C,aAAKD,KAAI,KAAK,MAAM,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAG5C,iBAAO,KAAK,MAAMA,EAAC;AACnB,wBAAc,KAAK,KAAK,CAAC;AACzB,yBAAe,KAAK,uBAAuB,IAAI;AAC/C,cAAI,CAAC,cAAc;AAClB;AAAA,UACD;AASA,cAAI,KAAK,aAAa,KAAK,kBAAkB;AAC5C;AAAA,UACD;AAIA,cAAI,YAAY,UAAU,QAAQC,GAAE,aAAa,MAAM,IAAI;AAG1D,gBAAI,iBAAiB,GAAG;AAEvB,0BAAY,KAAK,MAAMD,KAAI,CAAC;AAC5B,kBAAI,aAAa,UAAU,KAAK,SAASC,GAAE,aAAa,GAAG;AAC1D;AAAA,cACD;AAAA,YAED,WAAW,iBAAiB,GAAG;AAE9B,2BAAa,KAAK,MAAMD,KAAI,CAAC;AAC7B,kBAAI,cAAc,WAAW,KAAK,SAASC,GAAE,aAAa,GAAG;AAC5D;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,mBAAS,iBAAiB,IAAI,SAAS;AAKvC,cAAI,gBAAgB,KAAK,YAAY,CAAC,KACrC,KAAK,YAAY,MAAM,EAAE,EAAE,CAAC,MAAM,eAClC,CAACN,GAAE,SAAS,KAAK,YAAY,CAAC,GAAG,WAAW,MAE3C,KAAK,QAAQ,SAAS,iBACrB,CAACA,GAAE,SAAS,KAAK,QAAQ,CAAC,GAAG,WAAW,IACxC,OAED;AAID,gBAAI,CAAC,KAAK,cAAc;AACvB,cAAAA,GAAE,WAAW,EAAE,WAAW;AAC1B,mBAAK,eAAe;AAAA,YACrB;AAIA,gBAAIM,GAAE,UAAUN,GAAE,WAAW,EAAE,SAASM,GAAE,cAAc,KAAKA,GAAE,eAAe;AAC7E,kBAAI,CAAC,KAAK,UAAU;AACnB,gBAAAN,GAAE,WAAW,EAAE,SAASM,GAAE,aAAa;AACvC,qBAAK,WAAW,OAAO,WAAW,WAAW;AAC5C,kBAAAN,GAAE,WAAW,EACX,YAAYM,GAAE,cAAc,EAC5B,SAASA,GAAE,aAAa;AAE1B,kBAAAF,MAAK,iBAAiB;AACtB,kBAAAA,MAAK,SAAS,UAAU,OAAOA,MAAK,QAAQ,CAAC;AAAA,gBAC9C,GAAGE,GAAE,aAAa;AAAA,cACnB;AAAA,YACD;AAEA,iBAAK,YAAY,iBAAiB,IAAI,SAAS;AAG/C,gBAAI,KAAK,QAAQ,cAAc,aAAa,KAAK,qBAAqB,IAAI,GAAG;AAC5E,cAAAN,GAAE,WAAW,EAAE,WAAW;AAC1B,mBAAK,eAAe;AACpB,cAAAA,GAAE,WAAW,EAAE,YAAYM,GAAE,aAAa;AAC1C,kBAAI,KAAK,UAAU;AAClB,uBAAO,aAAa,KAAK,QAAQ;AAAA,cAClC;AACA,mBAAK,WAAW;AAKhB,kBAAIA,GAAE,eACL,EACC,KAAK,YAAY,CAAC,EAAE,eAAe,KAAK,QAAQ,CAAC;AAAA,cAEjD,YAAY,eAAe,KAAK,QAAQ,CAAC,IAGzC;AACD,oBAAI,KAAK,YAAY,CAAC,EAAE,eAAe,KAAK,QAAQ,CAAC,KACpD,YAAY,eAAe,KAAK,QAAQ,CAAC,GACxC;AAED,sBAAK,CAACN,GAAE,WAAW,EAAE,SAASM,GAAE,QAAQ,EAAE,QAAQ;AACjD,gCAAY,YAAY,OAAO;AAC/B,wBAAIA,GAAE,QAAQ;AACb,sBAAAN,GAAE,WAAW,EACX,YAAYM,GAAE,SAAS,EACvB,SAASA,GAAE,cAAc,MAAMA,GAAE,aAAa;AAAA,oBACjD;AAAA,kBACD;AAEA,sBAAI,KAAK,cAAc,QAAQ;AAC9B,oBAAAC,KAAIP,GAAE,WAAW,EAAE,KAAK,EAAE,SAASM,GAAE,QAAQ;AAAA,kBAC9C,OAAO;AACN,oBAAAC,KAAIP,GAAE,WAAW,EAAE,SAASM,GAAE,QAAQ;AAAA,kBACvC;AAEA,sBAAIC,GAAE,CAAC,MAAM,QAAW;AACvB,yBAAK,WAAW,OAAO,MAAMA,EAAC;AAAA,kBAC/B;AAAA,gBAED,OAAO;AACN,uBAAK,WAAW,OAAO,IAAI;AAAA,gBAC5B;AAAA,cACD,WAAW,CAACD,GAAE,aAAa;AAC1B,qBAAK,WAAW,OAAO,IAAI;AAAA,cAC5B;AAAA,YACD,OAAO;AACN;AAAA,YACD;AAGA,iBAAK,YAAY,WAAW;AAE5B,iBAAK,SAAS,UAAU,OAAO,KAAK,QAAQ,CAAC;AAC7C;AAAA,UACD;AAAA,QACD;AAIA,SAAC,WAAW;AACX,cAAI,gBAAgB,KAAK,YAAY,KAAK;AAC1C,cAAI,cAAc,QAAQ;AACzB,2BAAe;AAAA,UAChB,OAAO;AACN,2BAAe;AAAA,UAChB;AAAA,QACD,GAAE,KAAK,IAAI;AAEX,YAAI,gBAAgB,MAAM;AACzB,iBACC,aAAa,CAAC,EAAE,SAAS,YAAY,MAAM,QAC3C,aAAa,CAAC,EAAE,UAAU,QAAQA,GAAE,aAAa,MAAM,MACvD,aAAa,CAAC,MAAM,KAAK,YAAY,CAAC,KACtC,aAAa,CAAC,MAAM,KAAK,OAAO,CAAC,GAChC;AACD,gBAAI,aAAa,CAAC,EAAE,iBAAiB;AACpC,6BAAeN,GAAE,aAAa,CAAC,EAAE,eAAe;AAAA,YACjD,OAAO;AACN,6BAAe;AACf;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAIA,SAAC,WAAW;AACX,cAAI,YAAY,KAAK,YAAY,KAAK;AACtC,cAAI,UAAU,QAAQ;AACrB,uBAAW;AAAA,UACZ,OAAO;AACN,uBAAW;AAAA,UACZ;AAAA,QACD,GAAE,KAAK,IAAI;AAEX,YAAI,YAAY,MAAM;AACrB,iBACC,SAAS,CAAC,EAAE,SAAS,YAAY,MAAM,QACvC,SAAS,CAAC,EAAE,UAAU,QAAQM,GAAE,aAAa,MAAM,MACnD,SAAS,CAAC,MAAM,KAAK,YAAY,CAAC,KAClC,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,GAC5B;AACD,gBAAI,SAAS,CAAC,EAAE,aAAa;AAC5B,yBAAWN,GAAE,SAAS,CAAC,EAAE,WAAW;AAAA,YACrC,OAAO;AACN,yBAAW;AACX;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,aAAK,kBAAkB;AAIvB,YAAI,cAAc,QACjB,YAAY,QACZ,EAAEM,GAAE,eAAe,WAAW,CAAC,EAAE,cAAc,KAAK,QAAQ,CAAC,OAE5DA,GAAE,OAED,KAAK,YAAY,OACjB,KAAK,OAAO,WAAW,IAAI,WAAW,OAAO,EAAE,OAC/C,WAAW,WAAW,KAEvB,CAACA,GAAE,OAAQ,KAAK,YAAY,OAAO,WAAW,OAAO,EAAE,OAEvD;AAED,qBAAW,MAAM,KAAK,YAAY,CAAC,CAAC;AACpC,+BAAqB,CAAC,WACd,SAASA,GAAE,QAAQ,EACnB,SAAS,qCAAqC,EAC9C;AACR,cAAIA,GAAE,UAAU,oBAAoB;AACnC,uBACE,YAAY,KAAK,QAAQ,cAAc,MAAM,KAAK,QAAQ,aAAa,EACvE,SAAS,KAAK,QAAQ,SAAS;AAAA,UAClC;AACI,cAAG,OAAO,eAAe,aAAa;AACpC,iBAAK,YAAY,WAAW,CAAC,CAAC;AAAA,UAChC;AACJ,eAAK,SAAS,UAAU,OAAO,KAAK,QAAQ,CAAC;AAAA,QAG9C,WAAW,gBAAgB,QAC1B,CAAC,aAAa,SAASA,GAAE,mBAAmB,MAE3C,aAAa,SAASA,GAAE,QAAQ,EAAE,UAClC,aAAa,SAASA,GAAE,QAAQ,EAAE,GAAG,UAAU,KAC/C,CAAC,aAAa,SAASA,GAAE,QAAQ,EAAE,WAEpC,EAAEA,GAAE,eAAe,KAAK,YAAY,CAAC,EAAE,eAAe,KAAK,QAAQ,CAAC,OAEnEA,GAAE,OAED,KAAK,YAAY,OACjB,KAAK,OAAO,WAAW,IACvB,aAAa,OAAO,EAAE,OACtB,aAAa,WAAW,IACxBA,GAAE,WAEH,CAACA,GAAE,OACF,KAAK,YAAY,OAAO,aAAa,OAAO,EAAE,OAAOA,GAAE,UAExD;AAED,eAAK,WAAW,cAAc,OAAO,QAAQ,cAAc,CAAC;AAE5D,cAAI,CAAC,aAAa,SAASA,GAAE,QAAQ,EAAE,QAAQ;AAC9C,yBAAa,CAAC,EAAE,YAAY,OAAO;AACnC,gBAAIA,GAAE,QAAQ;AACb,2BACE,YAAYA,GAAE,SAAS,EACvB,SAASA,GAAE,cAAc,MAAMA,GAAE,aAAa;AAAA,YACjD;AAAA,UACD;AAGA,cAAI,qBAAsB,qBAAqB,aAAa,OAAO,EAAE,KAAM;AAC1E,yBAAa,SAASA,GAAE,QAAQ,EAAE,QAAQ,KAAK,WAAW;AAAA,UAC3D,OAAO;AAEN,yBAAa,SAASA,GAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC,CAAC;AAAA,UACrE;AACI,cAAG,OAAO,eAAe,aAAa;AACpC,iBAAK,YAAY,WAAW,CAAC,CAAC;AAAA,UAChC;AACJ,eAAK,SAAS,UAAU,OAAO,KAAK,QAAQ,CAAC;AAAA,QAC9C,OAAO;AACN,eAAK,WAAW,YAAY,OAAO,QAAQ,WAAW;AAAA,QACvD;AAGA,aAAK,mBAAmB,KAAK;AAG7B,YAAIN,GAAE,GAAG,WAAW;AACnB,UAAAA,GAAE,GAAG,UAAU,KAAK,MAAM,KAAK;AAAA,QAChC;AAGA,aAAK,SAAS,QAAQ,OAAO,KAAK,QAAQ,CAAC;AAE3C,aAAK,kBAAkB,KAAK;AAC5B,eAAO;AAAA,MAER;AAAA,MAEA,YAAY,SAAS,OAAO;AAE3B,YAAI,KAAK,iBAAiB;AAEzB,eAAK,YAAY,YAAY,KAAK,QAAQ,UAAU;AAEpD,cAAI,KAAK,YAAY,MAAM;AAC1B,YAAAA,GAAE,KAAK,YAAY,IAAI,EAAE,MAAM,KAAK,WAAW;AAAA,UAChD,OAAO;AACN,YAAAA,GAAE,KAAK,YAAY,MAAM,EAAE,QAAQ,KAAK,WAAW;AAAA,UACpD;AAEA,eAAK,SAAS,UAAU,OAAO,KAAK,QAAQ,CAAC;AAAA,QAE9C;AAGA,QAAAA,GAAE,MAAM,KAAK,QAAQ,aAAa,EAChC,WAAW,EACX,YAAY,KAAK,QAAQ,aAAa;AAExC,aAAK,eAAe;AACpB,YAAI,KAAK,UAAU;AAClB,iBAAO,aAAa,KAAK,QAAQ;AAAA,QAClC;AACA,aAAK,WAAW;AAEhB,aAAK,kBAAkB;AACvB,aAAK,eAAeA,GAAE,KAAK,YAAY,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI;AACjE,aAAK,gBAAgB,KAAK,YAAY,OAAOA,GAAE,KAAK,YAAY,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI;AACvF,QAAAA,GAAE,GAAG,SAAS,UAAU,WAAW,MAAM,MAAM,SAAS;AAAA,MACzD;AAAA;AAAA;AAAA,MAIA,sBAAsB,SAAS,MAAM;AAEpC,YAAI,OAAO,KAAK,QAAQ,SAAS,MAAK,KACrC,mBAAmB;AAAA,UAClB,KAAK,YAAY,MAAM,KAAK,OAAO,MAAM;AAAA,UACzC,KAAK,MAAO,KAAK,SAAS;AAAA,UAC1B,KAAK;AAAA,QACN,GACA,gBAAgB;AAAA,UACf,KAAK,YAAY,MAAM,KAAK,OAAO,MAAM;AAAA,UACzC,KAAK,MAAO,KAAK,SAAS;AAAA,UAC1B,KAAK;AAAA,QACN,GACA,kBAAkB;AAAA,UACjB,KAAK,YAAY,OAAO,KAAK,OAAO,MAAM;AAAA,UAC1C,KAAK,OAAQ,KAAK,QAAQ;AAAA,UAC1B,KAAK;AAAA,QACN,GACA,oBAAoB,KAAK,0BAA0B,GACnD,sBAAsB,KAAK,4BAA4B;AAExD,YAAI,KAAK,YAAY,qBAAqB;AACzC,iBACE,wBAAwB,WAAW,mBACnC,wBAAwB,UAAU,CAAC;AAAA,QAEtC,OAAO;AACN,iBAAO,sBACL,sBAAsB,UAAU,oBAChC,sBAAsB,QAAQ;AAAA,QAEjC;AAAA,MAED;AAAA,MAEA,oBAAoB,WAAW;AAE9B,YAAI,KAAK,QAAQ,eAAe,KAAK,YAAY,CAAC,EAAE,eAAe,KAAK,QAAQ,CAAC,GAAI;AACpF;AAAA,QACD;AAEA,QAAAA,GAAE,GAAG,SAAS,UAAU,mBAAmB,MAAM,MAAM,SAAS;AAAA,MAEjE;AAAA,MAEA,QAAQ,WAAW;AAClB,YAAIK,IACH;AAED,QAAAL,GAAE,GAAG,SAAS,UAAU,OAAO,MAAM,MAAM,SAAS;AAGpD,YAAI,EAAE,KAAK,iBAAiB,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,KAC1E,KAAK,kBAAkB,KAAK,QAAQ,EAAE,KAAK,MAAM,IAAI;AACrD,eAAK,SAAS,YAAY,KAAK,iBAAiB,KAAK,QAAQ,CAAC;AAAA,QAC/D;AAGA,aAAKK,KAAI,KAAK,MAAM,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAC5C,iBAAO,KAAK,MAAMA,EAAC,EAAE,KAAK,CAAC;AAC3B,eAAK,YAAY,IAAI;AAAA,QACtB;AAAA,MAED;AAAA,MAEA,WAAW,SAASG,UAAS;AAE5B,YAAIF,KAAIN,GAAE,OAAO,CAAC,GAAG,KAAK,SAASQ,QAAO,GACzC,QAAQ,KAAK,kBAAkBF,MAAKA,GAAE,SAAS,GAC/C,MAAM,CAAC;AAER,QAAAN,GAAE,KAAK,EAAE,KAAK,WAAW;AACxB,cAAI,OAAOA,GAAEM,GAAE,QAAQ,IAAI,EAAE,KAAKA,GAAE,aAAa,IAAI,KAAK,IACvD,MAAMA,GAAE,cAAe,eAAgB,GACzC,OAAON,GAAEM,GAAE,QAAQ,IAAI,EAAE,OAAOA,GAAE,QAAQ,EACxC,OAAOA,GAAE,KAAK,EACd,KAAKA,GAAE,aAAa,IAAI,KAAK,IAC7B,MAAMA,GAAE,cAAe,eAAgB;AAE1C,cAAI,KAAK;AACR,gBAAI;AAAA,eAEDA,GAAE,OAAO,IAAI,CAAC,KACf,OACCA,GAAE,OAAOA,GAAE,aAAa,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,QAG5C,MAAOA,GAAE,OAAOA,GAAE,aAAa,IAAI,CAAC,IAAI,IAAI,CAAC,IAAKA,GAAE;AAAA,YAAO;AAAA,UAC9D;AAAA,QACD,CAAC;AAED,YAAI,CAAC,IAAI,UAAUA,GAAE,KAAK;AACzB,cAAI,KAAKA,GAAE,MAAM,GAAG;AAAA,QACrB;AAEA,eAAO,IAAI,KAAK,GAAG;AAAA,MAEpB;AAAA,MAEA,aAAa,SAASE,UAAS;AAE9B,YAAIF,KAAIN,GAAE,OAAO,CAAC,GAAG,KAAK,SAASQ,QAAO,GACzC,MAAM,CAAC;AAER,QAAAR,GAAE,KAAK,OAAO,EAAE,SAASM,GAAE,KAAK,EAAE,KAAK,WAAW;AACjD,cAAI,QAAQ,gBAAgB,IAAI;AAChC,cAAI,KAAK,KAAK;AAAA,QACf,CAAC;AAED,eAAO;AAEP,iBAAS,gBAAgB,MAAM;AAC9B,cAAIG,OAAMT,GAAE,IAAI,EAAE,KAAKM,GAAE,aAAa,IAAI,KAAK,IAAI,MAAMA,GAAE,cAAe,eAAgB,GACzF;AAED,cAAII,QAAOV,GAAE,IAAI,EAAE,KAAK;AACxB,cAAIU,MAAK,oBAAoB;AAC5B,mBAAOA,MAAK;AAAA,UACb;AAEA,cAAID,KAAI;AACP,0BAAc;AAAA,cACb,MAAMA,IAAG,CAAC;AAAA,YACX;AAEA,0BAAcT,GAAE,OAAO,CAAC,GAAG,aAAaU,KAAI;AAE5C,gBAAIV,GAAE,IAAI,EAAE,SAASM,GAAE,QAAQ,EAAE,SAASA,GAAE,KAAK,EAAE,SAAS,GAAG;AAC9D,0BAAY,WAAW,CAAC;AACxB,cAAAN,GAAE,IAAI,EAAE,SAASM,GAAE,QAAQ,EAAE,SAASA,GAAE,KAAK,EAAE,KAAK,WAAW;AAC9D,oBAAI,QAAQ,gBAAgB,IAAI;AAChC,4BAAY,SAAS,KAAK,KAAK;AAAA,cAChC,CAAC;AAAA,YACF;AACA,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,MAEA,SAAS,SAASE,UAAS;AAE1B,YAAIF,KAAIN,GAAE,OAAO,CAAC,GAAG,KAAK,SAASQ,QAAO,GACzC,SAASF,GAAE,mBAAmB,GAC9B,MAAM,CAAC,GACPK,QAAO;AAER,YAAI,CAACL,GAAE,aAAa;AACnB,cAAI,KAAK;AAAA,YACR,WAAWA,GAAE;AAAA,YACb,aAAa;AAAA,YACb,SAAS;AAAA,YACT,QAAQK;AAAA,YACR,UAAUX,GAAEM,GAAE,OAAO,KAAK,OAAO,EAAE,SAAS,KAAK;AAAA,UAClD,CAAC;AACD,UAAAK;AAAA,QACD;AAEA,QAAAX,GAAE,KAAK,OAAO,EAAE,SAASM,GAAE,KAAK,EAAE,KAAK,WAAW;AACjD,UAAAK,QAAO,gBAAgB,MAAM,QAAQA,KAAI;AAAA,QAC1C,CAAC;AAED,cAAM,IAAI,KAAK,SAASJ,IAAGK,IAAG;AAAE,iBAAQL,GAAE,OAAOK,GAAE;AAAA,QAAO,CAAC;AAE3D,eAAO;AAEP,iBAAS,gBAAgB,MAAM,OAAOC,QAAO;AAE5C,cAAIC,SAAQD,SAAQ,GACnBJ,KACA,KACA;AAED,cAAIT,GAAE,IAAI,EAAE,SAASM,GAAE,QAAQ,EAAE,SAASA,GAAE,KAAK,EAAE,SAAS,GAAG;AAC9D;AACA,YAAAN,GAAE,IAAI,EAAE,SAASM,GAAE,QAAQ,EAAE,SAASA,GAAE,KAAK,EAAE,KAAK,WAAW;AAC9D,cAAAQ,SAAQ,gBAAgBd,GAAE,IAAI,GAAG,OAAOc,MAAK;AAAA,YAC9C,CAAC;AACD;AAAA,UACD;AAEA,UAAAL,MAAMT,GAAE,IAAI,EAAE,KAAKM,GAAE,aAAa,IAAI,EAAG,MAAMA,GAAE,cAAe,eAAgB;AAEhF,cAAI,UAAU,QAAQ;AACrB,kBAAMA,GAAE;AAAA,UACT,OAAO;AACN,yBAAcN,GAAE,IAAI,EAAE,OAAOM,GAAE,QAAQ,EAChC,OAAOA,GAAE,KAAK,EACd,KAAKA,GAAE,aAAa,IAAI,EACxB,MAAMA,GAAE,cAAe,eAAgB;AAC9C,kBAAM,WAAW,CAAC;AAAA,UACnB;AAEA,cAAIG,KAAI;AACP,gBAAIM,QAAOf,GAAE,IAAI,EAAE,KAAK,MAAM;AACzB,gBAAI,KAAK;AAAA,cACP,MAAMS,IAAG,CAAC;AAAA,cACV,aAAa;AAAA,cACb,SAAS;AAAA,cACT,QAAQI;AAAA,cACR,SAASC;AAAA,cACT,QAAOC;AAAA,YACT,CAAC;AAAA,UACP;AAEA,UAAAF,SAAQC,SAAQ;AAChB,iBAAOD;AAAA,QACR;AAAA,MAED;AAAA,MAEA,aAAa,SAAU,MAAM;AAC5B,iBAAS,aAAa,MAAM,QAAQ,SAASG,OAAM;AAClD,cAAIA,OAAM;AACT,qBAAS,CAAC,SAAS,UAAU,MAAM,EAAE,CAAC;AAAA,UACvC;AAEA,UAAAhB,GAAE,IAAI,EAAE,YAAY,MAAM,EAAE,SAAS,OAAO;AAAA,QAC7C;AAEA,YAAIM,KAAI,KAAK,SACZ,eAAeN,GAAE,IAAI,EAAE,SAASM,GAAE,QAAQ,GAC1C,cAAc,aAAa,GAAG,cAAc;AAE7C,YAAI,aACHA,GAAE,cACF,eACAA,GAAE,eAAeN,GAAE,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC;AAE/C,YAAIM,GAAE,QAAQ;AACb,uBAAa,MAAMA,GAAE,aAAaA,GAAE,WAAW,UAAU;AAEzD,cAAI,cAAc,aAAa;AAC9B,yBAAa,MAAMA,GAAE,gBAAgBA,GAAE,aAAa;AAAA,UACrD;AAAA,QACD;AAEA,YAAI,CAAC,YAAY;AAChB,uBAAa,OAAO;AAAA,QACrB;AAAA,MACD;AAAA,MAEA,WAAW,SAAS,MAAM;AAEzB,YAAI,QAAQ,GACX;AAED,YAAI,KAAK,QAAQ,UAAU;AAC1B,iBAAO,KAAK,QAAQ,KAAK,QAAQ,QAAQ;AACzC,iBAAO,QAAQ,KAAK,SAAS,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG;AAC3D;AACA,mBAAO,KAAK,OAAO,EAAE,QAAQ,KAAK,QAAQ,QAAQ;AAAA,UACnD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,MAEA,iBAAiB,SAAS,QAAQ,OAAO;AACxC,YAAIF,QAAO,MACVE,KAAI,KAAK,SACT,SAAS;AACV,gBAAQ,SAAS;AAEjB,QAAAN,GAAE,MAAM,EAAE,SAASM,GAAE,QAAQ,EAAE,SAASA,GAAE,KAAK,EAAE,KAAK,SAASW,QAAO,OAAO;AAC5E,mBAAS,KAAK,IAAIb,MAAK,gBAAgB,OAAO,QAAQ,CAAC,GAAG,MAAM;AAAA,QACjE,CAAC;AAED,eAAO,QAAQ,SAAS,IAAI;AAAA,MAC7B;AAAA,MAEA,YAAY,SAAS,YAAY,OAAO,QAAQ;AAC/C,YAAIE,KAAI,KAAK,SAEZ,YAAY,KACV,YACA,QAAQ,cAAc,EACtB,eAAe,UAAU,WAAW,GAGtC,YAAY,KAAK,YAAY,OAAO,EAAE,OAAO,GAC7C,yBAAyBA,GAAE;AAAA,SAE1B,OAAO,eAAe,eAAe,CAAC,UAAU,GAAG,UAAU,KAC7D,OAAO,eAAe,eAAe,UAAU,GAAG,IAAI;AAIxD,YACC,0BACA,CAACA,GAAE,UAAU,KAAK,aAAa,YAAY,KAAK,WAAW,GAC1D;AACD,eAAK,YAAY,SAASA,GAAE,UAAU;AACtC,cAAI,YAAY,UAAU,cAAc,GAAG;AAC1C,iBAAK,kBAAkB,SAAS;AAAA,UACjC,OAAO;AACN,iBAAK,kBAAkB;AAAA,UACxB;AAAA,QACD,OAAO;AACN,cAAI,YAAY,UAAU,cAAc,GAAG;AAC1C,iBAAK,YAAY,SAASA,GAAE,UAAU;AACtC,iBAAK,kBAAkB,SAAS;AAAA,UACjC,OAAO;AACN,iBAAK,YAAY,YAAYA,GAAE,UAAU;AACzC,iBAAK,kBAAkB;AAAA,UACxB;AAAA,QACD;AAAA,MACD;AAAA,IAED,CAAC,CAAC;AAEF,IAAAN,GAAE,IAAI,eAAe,UAAU,UAAUA,GAAE;AAAA,MAC1C,CAAC;AAAA,MACDA,GAAE,GAAG,SAAS,UAAU;AAAA,MACxBA,GAAE,IAAI,eAAe,UAAU;AAAA,IAChC;AAAA,EACD,CAAC;;;AC/4BD,sBAAmB;AACnB,SAAO,SAAS,cAAAkB;;;ACDhB,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,UAAMS,OAAM,SAASN,IAAG,GAAG,GAAG;AAC9B,QAAIO;AACJ,QAAIF,KAAIR,KAAI,GAAG;AACb,MAAAU,KAAI,KAAKF,KAAIR;AACb,MAAAQ,MAAKE;AACL,MAAAV,MAAKU;AAAA,IACP;AACA,SAAKA,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACtB,MAAAD,KAAIC,EAAC,KAAK,IAAIF,KAAIR;AAClB,MAAAS,KAAIC,EAAC,KAAKF;AAAA,IACZ;AACA,WAAOC;AAAA,EACT;AACA,WAAS,SAASE,IAAGC,IAAGZ,IAAGa,IAAGC,MAAK;AACjC,QAAIH,OAAMG,MAAK;AACb,cAASF,KAAIZ,MAAKa,MAAMD,KAAIZ,KAAI,IAAI;AAAA,IACtC;AACA,QAAIY,OAAME,MAAK;AACb,cAAQd,KAAIW,MAAKE,KAAI;AAAA,IACvB;AACA,YAAQF,KAAIC,MAAKC,KAAI;AAAA,EACvB;AACA,WAAS,QAAQd,IAAG;AAClB,UAAMgB,SAAQ;AACd,UAAMJ,KAAIZ,GAAE,IAAIgB;AAChB,UAAMH,KAAIb,GAAE,IAAIgB;AAChB,UAAMf,KAAID,GAAE,IAAIgB;AAChB,UAAMD,OAAM,KAAK,IAAIH,IAAGC,IAAGZ,EAAC;AAC5B,UAAMgB,OAAM,KAAK,IAAIL,IAAGC,IAAGZ,EAAC;AAC5B,UAAMK,MAAKS,OAAME,QAAO;AACxB,QAAIb,IAAGC,IAAGS;AACV,QAAIC,SAAQE,MAAK;AACf,MAAAH,KAAIC,OAAME;AACV,MAAAZ,KAAIC,KAAI,MAAMQ,MAAK,IAAIC,OAAME,QAAOH,MAAKC,OAAME;AAC/C,MAAAb,KAAI,SAASQ,IAAGC,IAAGZ,IAAGa,IAAGC,IAAG;AAC5B,MAAAX,KAAIA,KAAI,KAAK;AAAA,IACf;AACA,WAAO,CAACA,KAAI,GAAGC,MAAK,GAAGC,EAAC;AAAA,EAC1B;AACA,WAAS,MAAMH,IAAGD,IAAGD,IAAGiB,IAAG;AACzB,YACE,MAAM,QAAQhB,EAAC,IACXC,GAAED,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,IAClBC,GAAED,IAAGD,IAAGiB,EAAC,GACb,IAAI,GAAG;AAAA,EACX;AACA,WAAS,QAAQd,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,UAAMe,KAAI,OAAO,KAAK,GAAG;AACzB,QAAIjB,KAAI;AACR,QAAIF;AACJ,QAAI,CAACmB,IAAG;AACN;AAAA,IACF;AACA,QAAIA,GAAE,CAAC,MAAMnB,IAAG;AACd,MAAAE,KAAIiB,GAAE,CAAC,IAAI,IAAI,CAACA,GAAE,CAAC,CAAC,IAAI,IAAI,CAACA,GAAE,CAAC,CAAC;AAAA,IACnC;AACA,UAAMf,KAAI,IAAI,CAACe,GAAE,CAAC,CAAC;AACnB,UAAM,KAAK,CAACA,GAAE,CAAC,IAAI;AACnB,UAAMC,MAAK,CAACD,GAAE,CAAC,IAAI;AACnB,QAAIA,GAAE,CAAC,MAAM,OAAO;AAClB,MAAAnB,KAAI,QAAQI,IAAG,IAAIgB,GAAE;AAAA,IACvB,WAAWD,GAAE,CAAC,MAAM,OAAO;AACzB,MAAAnB,KAAI,QAAQI,IAAG,IAAIgB,GAAE;AAAA,IACvB,OAAO;AACL,MAAApB,KAAI,QAAQI,IAAG,IAAIgB,GAAE;AAAA,IACvB;AACA,WAAO;AAAA,MACL,GAAGpB,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,OAAMC,QAAOC,QAAO,IAAIN,GAAE,CAAC,OACnC,OAAOI,OAAMC,QAAOC;AAAA,EAC1B;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,QAAIK,IAAGU,IAAGb,IAAG,IAAI;AACjB,SAAKG,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,WAAK,KAAK,KAAKA,EAAC;AAChB,WAAKU,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACjC,QAAAb,KAAI,MAAMa,EAAC;AACX,aAAK,GAAG,QAAQb,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,UAAMiB,KAAI,OAAO,KAAK,GAAG;AACzB,QAAIjB,KAAI;AACR,QAAIU,IAAGC,IAAGZ;AACV,QAAI,CAACkB,IAAG;AACN;AAAA,IACF;AACA,QAAIA,GAAE,CAAC,MAAMP,IAAG;AACd,YAAMZ,KAAI,CAACmB,GAAE,CAAC;AACd,MAAAjB,KAAIiB,GAAE,CAAC,IAAI,IAAInB,EAAC,IAAI,IAAIA,KAAI,KAAK,GAAG,GAAG;AAAA,IACzC;AACA,IAAAY,KAAI,CAACO,GAAE,CAAC;AACR,IAAAN,KAAI,CAACM,GAAE,CAAC;AACR,IAAAlB,KAAI,CAACkB,GAAE,CAAC;AACR,IAAAP,KAAI,OAAOO,GAAE,CAAC,IAAI,IAAIP,EAAC,IAAI,IAAIA,IAAG,GAAG,GAAG;AACxC,IAAAC,KAAI,OAAOM,GAAE,CAAC,IAAI,IAAIN,EAAC,IAAI,IAAIA,IAAG,GAAG,GAAG;AACxC,IAAAZ,KAAI,OAAOkB,GAAE,CAAC,IAAI,IAAIlB,EAAC,IAAI,IAAIA,IAAG,GAAG,GAAG;AACxC,WAAO;AAAA,MACL,GAAGW;AAAA,MACH,GAAGC;AAAA,MACH,GAAGZ;AAAA,MACH,GAAGC;AAAA,IACL;AAAA,EACF;AACA,WAAS,UAAUF,IAAG;AACpB,WAAOA,OACLA,GAAE,IAAI,MACF,QAAQA,GAAE,MAAMA,GAAE,MAAMA,GAAE,MAAM,IAAIA,GAAE,CAAC,OACvC,OAAOA,GAAE,MAAMA,GAAE,MAAMA,GAAE;AAAA,EAEjC;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,WAASsB,aAAY,MAAM,MAAMC,IAAG;AAClC,UAAMX,KAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,UAAMC,KAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,UAAMZ,KAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,WAAO;AAAA,MACL,GAAG,IAAI,GAAGW,KAAIW,MAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAIX,GAAE,CAAC;AAAA,MAC1C,GAAG,IAAI,GAAGC,KAAIU,MAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAIV,GAAE,CAAC;AAAA,MAC1C,GAAG,IAAI,GAAGZ,KAAIsB,MAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAItB,GAAE,CAAC;AAAA,MAC1C,GAAG,KAAK,IAAIsB,MAAK,KAAK,IAAI,KAAK;AAAA,IACjC;AAAA,EACF;AAEA,WAAS,OAAOvB,IAAGW,IAAG,OAAO;AAC3B,QAAIX,IAAG;AACL,UAAI,MAAM,QAAQA,EAAC;AACnB,UAAIW,EAAC,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIA,EAAC,IAAI,IAAIA,EAAC,IAAI,OAAOA,OAAM,IAAI,MAAM,CAAC,CAAC;AACzE,YAAM,QAAQ,GAAG;AACjB,MAAAX,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,MAAY;AAAA,IACV,YAAY,OAAO;AACjB,UAAI,iBAAiB,OAAO;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,IAAIwB,QAAO,QAAQ;AACjB,UAAIA,QAAO;AACT,cAAM,KAAK,KAAK;AAChB,cAAMC,MAAKD,OAAM;AACjB,YAAIE;AACJ,cAAMC,KAAI,WAAWD,MAAK,MAAM;AAChC,cAAMjB,KAAI,IAAIkB,KAAI;AAClB,cAAMzB,KAAI,GAAG,IAAIuB,IAAG;AACpB,cAAM,OAAOhB,KAAIP,OAAM,KAAKO,MAAKA,KAAIP,OAAM,IAAIO,KAAIP,OAAM,KAAK;AAC9D,QAAAwB,MAAK,IAAI;AACT,WAAG,IAAI,MAAO,KAAK,GAAG,IAAIA,MAAKD,IAAG,IAAI;AACtC,WAAG,IAAI,MAAO,KAAK,GAAG,IAAIC,MAAKD,IAAG,IAAI;AACtC,WAAG,IAAI,MAAO,KAAK,GAAG,IAAIC,MAAKD,IAAG,IAAI;AACtC,WAAG,IAAIE,KAAI,GAAG,KAAK,IAAIA,MAAKF,IAAG;AAC/B,aAAK,MAAM;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAAA,IACA,YAAYD,QAAOD,IAAG;AACpB,UAAIC,QAAO;AACT,aAAK,OAAOF,aAAY,KAAK,MAAME,OAAM,MAAMD,EAAC;AAAA,MAClD;AACA,aAAO;AAAA,IACT;AAAA,IACA,QAAQ;AACN,aAAO,IAAI,MAAM,KAAK,GAAG;AAAA,IAC3B;AAAA,IACA,MAAMrB,IAAG;AACP,WAAK,KAAK,IAAI,IAAIA,EAAC;AACnB,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,OAAO;AACb,YAAMQ,OAAM,KAAK;AACjB,MAAAA,KAAI,KAAK,IAAI;AACb,aAAO;AAAA,IACT;AAAA,IACA,YAAY;AACV,YAAMA,OAAM,KAAK;AACjB,YAAM,MAAM,MAAMA,KAAI,IAAI,MAAMA,KAAI,IAAI,OAAOA,KAAI,IAAI,IAAI;AAC3D,MAAAA,KAAI,IAAIA,KAAI,IAAIA,KAAI,IAAI;AACxB,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,OAAO;AACb,YAAMA,OAAM,KAAK;AACjB,MAAAA,KAAI,KAAK,IAAI;AACb,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,YAAMV,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,WAAS4B,OAAO;EACrB;AAMK,MAAMC,OAAO,MAAM;AACxB,QAAIC,MAAK;AACT,WAAO,MAAMA;EACf,GAAA;AAOO,WAASC,cAAcC,OAA2C;AACvE,WAAOA,UAAU,QAAQA,UAAUC;EACrC;AAOO,WAASC,QAAqBF,OAA8B;AACjE,QAAIG,MAAMD,WAAWC,MAAMD,QAAQF,KAAQ,GAAA;AACzC,aAAO;;AAET,UAAMI,OAAOC,OAAOC,UAAUC,SAASC,KAAKR,KAAAA;AAC5C,QAAII,KAAKK,MAAM,GAAG,CAAA,MAAO,aAAaL,KAAKK,MAAM,EAAC,MAAO,UAAU;AACjE,aAAO;;AAET,WAAO;EACT;AAOO,WAASC,SAASV,OAAoC;AAC3D,WAAOA,UAAU,QAAQK,OAAOC,UAAUC,SAASC,KAAKR,KAAW,MAAA;EACrE;AAMA,WAASW,eAAeX,OAAiC;AACvD,YAAQ,OAAOA,UAAU,YAAYA,iBAAiBY,WAAWC,SAAS,CAACb,KAAAA;EAC7E;AAUO,WAASc,gBAAgBd,OAAgBe,cAAsB;AACpE,WAAOJ,eAAeX,KAASA,IAAAA,QAAQe;EACzC;AAOO,WAASC,eAAkBhB,OAAsBe,cAAiB;AACvE,WAAO,OAAOf,UAAU,cAAce,eAAef;EACvD;MAEaiB,eAAe,CAACjB,OAAwBkB,cACnD,OAAOlB,UAAU,YAAYA,MAAMmB,SAAS,GAAA,IAC1CC,WAAWpB,KAAAA,IAAS,MAClB,CAACA,QAAQkB;MAEFG,cAAc,CAACrB,OAAwBkB,cAClD,OAAOlB,UAAU,YAAYA,MAAMmB,SAAS,GAAA,IAC1CC,WAAWpB,KAAAA,IAAS,MAAMkB,YACxB,CAAClB;AASA,WAASsB,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,MAAa;AAC/B,WAAO;MAAC;MAAa;MAAa;MAAeC,QAAQD,IAAAA,MAAS;EACpE;AAOO,WAASE,QAAQF,MAAaL,QAAmBF,QAAmBU,UAAoB;AAC7F,QAAI,CAACJ,WAAWC,IAAM,GAAA;AACpB;;AAGF,UAAMI,OAAOT,OAAOK,IAAI;AACxB,UAAMK,OAAOZ,OAAOO,IAAI;AAExB,QAAIxC,SAAS4C,IAAS5C,KAAAA,SAAS6C,IAAO,GAAA;AAEpCC,YAAMF,MAAMC,MAAMF,QAAAA;WACb;AACLR,aAAOK,IAAI,IAAGR,OAAMa,IAAAA;;EAExB;AA0BO,WAASC,MAASX,QAAWF,QAAqBU,UAAmC;AAC1F,UAAMI,UAAUvD,QAAQyC,MAAAA,IAAUA,SAAS;MAACA;IAAO;AACnD,UAAMN,OAAOoB,QAAQxB;AAErB,QAAI,CAACvB,SAASmC,MAAS,GAAA;AACrB,aAAOA;;AAGTQ,IAAAA,WAAUA,YAAW,CAAA;AACrB,UAAMK,SAASL,SAAQK,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,QAAAA;MACnC;IACF;AAEA,WAAOR;EACT;AAgBO,WAASe,QAAWf,QAAWF,QAAgC;AAEpE,WAAOa,MAASX,QAAQF,QAAQ;MAACe,QAAQG;IAAS,CAAA;EACpD;AAMO,WAASA,UAAUX,MAAaL,QAAmBF,QAAmB;AAC3E,QAAI,CAACM,WAAWC,IAAM,GAAA;AACpB;;AAGF,UAAMI,OAAOT,OAAOK,IAAI;AACxB,UAAMK,OAAOZ,OAAOO,IAAI;AAExB,QAAIxC,SAAS4C,IAAS5C,KAAAA,SAAS6C,IAAO,GAAA;AACpCK,cAAQN,MAAMC,IAAAA;eACL,CAAClD,OAAOC,UAAUwD,eAAetD,KAAKqC,QAAQK,IAAM,GAAA;AAC7DL,aAAOK,IAAI,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,MAAa;AACrC,UAAMC,QAAQD,KAAIE,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,MAAa;AACpC,UAAMG,OAAOJ,UAAUC,IAAAA;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,MAAkB;AACjE,UAAMa,WAAWnB,aAAaM,IAAI,MAAKN,aAAaM,IAAAA,IAAOS,gBAAgBT,IAAG;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,QAAe;AACrC,UAAMC,eAAejB,KAAKkB,MAAMF,MAAAA;AAChCA,IAAAA,SAAQJ,aAAaI,QAAOC,cAAcD,SAAQ,GAAA,IAAQC,eAAeD;AACzE,UAAMG,YAAYnB,KAAKoB,IAAI,IAAIpB,KAAKqB,MAAMX,MAAMM,MAAAA,CAAAA,CAAAA;AAChD,UAAMM,WAAWN,SAAQG;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;AAKA,WAASK,eAAeC,IAAY;AAClC,WAAO,OAAOA,OAAM,YAAa,OAAOA,OAAM,YAAYA,OAAM,QAAQ,EAAEC,OAAOC,eAAeF,MAAK,cAAcA,MAAK,aAAaA;EACvI;AAEO,WAASG,SAASH,IAAyB;AAChD,WAAO,CAACD,eAAeC,EAAAA,KAAM,CAACI,MAAMC,WAAWL,EAAAA,CAAAA,KAAiBM,SAASN,EAAAA;EAC3E;AAEO,WAASO,YAAYzE,IAAWgD,SAAiB;AACtD,UAAM0B,UAAUvC,KAAKkB,MAAMrD,EAAAA;AAC3B,WAAO,UAAYgD,WAAYhD,MAAQ0E,UAAU1B,WAAYhD;EAC/D;AAKO,WAAS2E,mBACdC,QACAC,QACAC,UACA;AACA,QAAIhB,IAAWiB,MAAcxD;AAE7B,SAAKuC,KAAI,GAAGiB,OAAOH,OAAMI,QAAQlB,KAAIiB,MAAMjB,MAAK;AAC9CvC,cAAQqD,OAAMd,EAAE,EAACgB,QAAS;AAC1B,UAAI,CAACR,MAAM/C,KAAQ,GAAA;AACjBsD,eAAOI,MAAM9C,KAAK8C,IAAIJ,OAAOI,KAAK1D,KAAAA;AAClCsD,eAAOK,MAAM/C,KAAK+C,IAAIL,OAAOK,KAAK3D,KAAAA;;IAEtC;EACF;AAEO,WAAS4D,UAAUC,SAAiB;AACzC,WAAOA,WAAWlD,KAAK;EACzB;AAEO,WAASmD,UAAUC,UAAiB;AACzC,WAAOA,YAAW,MAAMpD;EAC1B;AASO,WAASqD,eAAevF,IAAW;AACxC,QAAI,CAACwF,eAAexF,EAAI,GAAA;AACtB;;AAEF,QAAIgC,KAAI;AACR,QAAIyD,KAAI;AACR,WAAOtD,KAAKkB,MAAMrD,KAAIgC,EAAAA,IAAKA,OAAMhC,IAAG;AAClCgC,MAAAA,MAAK;AACLyD,MAAAA;IACF;AACA,WAAOA;EACT;AAGO,WAASC,kBACdC,aACAC,YACA;AACA,UAAMC,sBAAsBD,WAAW5F,IAAI2F,YAAY3F;AACvD,UAAM8F,sBAAsBF,WAAW1F,IAAIyF,YAAYzF;AACvD,UAAM6F,2BAA2B5D,KAAK0B,KAAKgC,sBAAsBA,sBAAsBC,sBAAsBA,mBAAAA;AAE7G,QAAIE,QAAQ7D,KAAK8D,MAAMH,qBAAqBD,mBAAAA;AAE5C,QAAIG,QAAS,OAAO9D,IAAK;AACvB8D,eAAS5D;;AAGX,WAAO;MACL4D;MACAE,UAAUH;IACZ;EACF;AAEO,WAASI,sBAAsBC,KAAYC,KAAY;AAC5D,WAAOlE,KAAK0B,KAAK1B,KAAKoB,IAAI8C,IAAIrG,IAAIoG,IAAIpG,GAAG,CAAA,IAAKmC,KAAKoB,IAAI8C,IAAInG,IAAIkG,IAAIlG,GAAG,CAAA,CAAA;EACxE;AAMO,WAASoG,WAAW5E,IAAWC,IAAW;AAC/C,YAAQD,KAAIC,KAAIU,SAASD,MAAMF;EACjC;AAMO,WAASqE,gBAAgB7E,IAAW;AACzC,YAAQA,KAAIU,MAAMA,OAAOA;EAC3B;AAKO,WAASoE,cAAcR,OAAeS,QAAeC,MAAaC,uBAAiC;AACxG,UAAMjF,KAAI6E,gBAAgBP,KAAAA;AAC1B,UAAMY,KAAIL,gBAAgBE,MAAAA;AAC1B,UAAMzE,KAAIuE,gBAAgBG,IAAAA;AAC1B,UAAMG,eAAeN,gBAAgBK,KAAIlF,EAAAA;AACzC,UAAMoF,aAAaP,gBAAgBvE,KAAIN,EAAAA;AACvC,UAAMqF,eAAeR,gBAAgB7E,KAAIkF,EAAAA;AACzC,UAAMI,aAAaT,gBAAgB7E,KAAIM,EAAAA;AACvC,WAAON,OAAMkF,MAAKlF,OAAMM,MAAM2E,yBAAyBC,OAAM5E,MACvD6E,eAAeC,cAAcC,eAAeC;EACpD;AASO,WAASC,YAAY1F,OAAe0D,MAAaC,MAAa;AACnE,WAAO/C,KAAK+C,IAAID,MAAK9C,KAAK8C,IAAIC,MAAK3D,KAAAA,CAAAA;EACrC;AAMO,WAAS2F,YAAY3F,OAAe;AACzC,WAAO0F,YAAY1F,OAAO,QAAQ,KAAA;EACpC;AASO,WAAS4F,WAAW5F,OAAekF,QAAeC,MAAa1D,UAAU,MAAM;AACpF,WAAOzB,SAASY,KAAK8C,IAAIwB,QAAOC,IAAAA,IAAO1D,WAAWzB,SAASY,KAAK+C,IAAIuB,QAAOC,IAAO1D,IAAAA;EACpF;AC3LO,WAASoE,QACdC,OACA9F,OACA+F,KACA;AACAA,UAAMA,QAAQ,CAACC,WAAUF,MAAME,MAAAA,IAAShG;AACxC,QAAIiG,KAAKH,MAAMrC,SAAS;AACxB,QAAIyC,KAAK;AACT,QAAIC;AAEJ,WAAOF,KAAKC,KAAK,GAAG;AAClBC,YAAOD,KAAKD,MAAO;AACnB,UAAIF,IAAII,GAAM,GAAA;AACZD,aAAKC;aACA;AACLF,aAAKE;;IAET;AAEA,WAAO;MAACD;MAAID;IAAE;EAChB;AAUO,MAAMG,eAAe,CAC1BN,OACAjH,MACAmB,OACAqG,SAEAR,QAAQC,OAAO9F,OAAOqG,OAClBL,CAAAA,WAAS;AACT,UAAMM,KAAKR,MAAME,MAAAA,EAAOnH,IAAI;AAC5B,WAAOyH,KAAKtG,SAASsG,OAAOtG,SAAS8F,MAAME,SAAQ,CAAA,EAAGnH,IAAAA,MAASmB;MAE/DgG,CAAAA,WAASF,MAAME,MAAAA,EAAOnH,IAAAA,IAAOmB,KAAK;AAS3BuG,MAAAA,gBAAgB,CAC3BT,OACAjH,MACAmB,UAEA6F,QAAQC,OAAO9F,OAAOgG,CAAAA,WAASF,MAAME,MAAAA,EAAOnH,IAAAA,KAAQmB,KAAO;AAStD,WAASwG,eAAeC,QAAkB/C,MAAaC,MAAa;AACzE,QAAIuB,SAAQ;AACZ,QAAIC,OAAMsB,OAAOhD;AAEjB,WAAOyB,SAAQC,QAAOsB,OAAOvB,MAAAA,IAASxB,MAAK;AACzCwB,MAAAA;IACF;AACA,WAAOC,OAAMD,UAASuB,OAAOtB,OAAM,CAAA,IAAKxB,MAAK;AAC3CwB,MAAAA;IACF;AAEA,WAAOD,SAAQ,KAAKC,OAAMsB,OAAOhD,SAC7BgD,OAAOrH,MAAM8F,QAAOC,IAAAA,IACpBsB;EACN;AAEA,MAAMC,cAAc;IAAC;IAAQ;IAAO;IAAS;IAAU;EAAU;AAgB1D,WAASC,kBAAkBtD,QAAOuD,UAAU;AACjD,QAAIvD,OAAMwD,UAAU;AAClBxD,MAAAA,OAAMwD,SAASC,UAAUzH,KAAKuH,QAAAA;AAC9B;;AAGFG,WAAOC,eAAe3D,QAAO,YAAY;MACvC4D,cAAc;MACdC,YAAY;MACZlH,OAAO;QACL8G,WAAW;UAACF;QAAS;MACvB;IACF,CAAA;AAEAF,gBAAYS,QAAQ,CAACtI,SAAQ;AAC3B,YAAMuI,SAAS,YAAYzH,YAAYd,IAAAA;AACvC,YAAMwI,OAAOhE,OAAMxE,IAAI;AAEvBkI,aAAOC,eAAe3D,QAAOxE,MAAK;QAChCoI,cAAc;QACdC,YAAY;QACZlH,SAASsH,MAAM;AACb,gBAAMC,MAAMF,KAAKG,MAAM,MAAMF,IAAAA;AAE7BjE,UAAAA,OAAMwD,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,QAAOuD,UAAU;AACnD,UAAMe,OAAOtE,OAAMwD;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,CAACtI,SAAQ;AAC3B,aAAOwE,OAAMxE,IAAI;IACnB,CAAA;AAEA,WAAOwE,OAAMwD;EACf;AAKO,WAASiB,aAAgBC,OAAY;AAC1C,UAAMC,OAAM,IAAIC,IAAOF,KAAAA;AAEvB,QAAIC,KAAI3H,SAAS0H,MAAMtE,QAAQ;AAC7B,aAAOsE;;AAGT,WAAOG,MAAMC,KAAKH,IAAAA;EACpB;AClLaI,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,SAAgBH,UAAU,UAAUE,SAAQF,UAAU,QAAQG,QAAOD,SAAQC,QAAO;AAMxJC,MAAAA,SAAS,CAACJ,OAAoCK,OAAcC,QAAeC,QAAiB;AACvG,UAAMC,QAAQD,MAAM,SAAS;AAC7B,WAAOP,UAAUQ,QAAQF,SAAQN,UAAU,YAAYK,QAAOC,UAAS,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,QAAQC,QAAAA,IAAWT;AAClC,YAAMU,WAAWV,KAAKW,UAAUX,KAAKW,QAAQC,UAAUZ,KAAKW,QAAQC,QAAQF,WAAW,OAAO;AAC9F,YAAMG,OAAON,OAAOM;AACpB,YAAM,EAACC,KAAAA,MAAKC,KAAAA,MAAKC,YAAYC,WAAU,IAAIV,OAAOW,cAAa;AAE/D,UAAIF,YAAY;AACdxB,QAAAA,SAAQ2B,KAAKL;;UAEXM,aAAaX,SAASI,MAAMC,IAAKO,EAAAA;;UAEjCnB,qBAAqBC,aAAaiB,aAAanB,QAAQY,MAAMN,OAAOe,iBAAiBR,IAAAA,CAAAA,EAAMO;QAAE;AAC/F,YAAIX,UAAU;AACZ,gBAAMa,sBAAuBd,QAC1Be,MAAM,GAAGhC,SAAQ,CAAA,EACjBiC,QAAO,EACPC,UACCC,CAAAA,WAAS,CAACC,cAAcD,OAAMnB,OAAOK,IAAI,CAAC,CAAA;AAC9CrB,UAAAA,UAAS2B,KAAKJ,IAAI,GAAGQ,mBAAAA;;AAEvB/B,QAAAA,SAAQqC,YAAYrC,QAAO,GAAGW,aAAa,CAAA;;AAE7C,UAAIc,YAAY;AACd,YAAIxB,OAAM0B,KAAKJ;;UAEbK,aAAaX,SAASF,OAAOM,MAAME,MAAK,IAAI,EAAEe,KAAK;;UAEnD5B,qBAAqB,IAAIkB,aAAanB,QAAQY,MAAMN,OAAOe,iBAAiBP,IAAAA,GAAM,IAAI,EAAEe,KAAK;QAAC;AAChG,YAAIpB,UAAU;AACZ,gBAAMqB,sBAAuBtB,QAC1Be,MAAM/B,OAAM,CAAA,EACZiC,UACCC,CAAAA,WAAS,CAACC,cAAcD,OAAMnB,OAAOK,IAAI,CAAC,CAAA;AAC9CpB,UAAAA,QAAO0B,KAAKJ,IAAI,GAAGgB,mBAAAA;;AAErB1B,gBAAQwB,YAAYpC,MAAKD,QAAOW,UAAcX,IAAAA;aACzC;AACLa,gBAAQF,aAAaX;;;AAIzB,WAAO;MAACA,OAAAA;MAAOa;IAAK;EACtB;AAQO,WAAS2B,oBAAoBhC,MAAM;AACxC,UAAM,EAACiC,QAAQC,QAAQC,aAAAA,IAAgBnC;AACvC,UAAMoC,YAAY;MAChBC,MAAMJ,OAAOnB;MACbwB,MAAML,OAAOlB;MACbwB,MAAML,OAAOpB;MACb0B,MAAMN,OAAOnB;IACf;AACA,QAAI,CAACoB,cAAc;AACjBnC,WAAKmC,eAAeC;AACpB,aAAO;;AAET,UAAMK,UAAUN,aAAaE,SAASJ,OAAOnB,OAC1CqB,aAAaG,SAASL,OAAOlB,OAC7BoB,aAAaI,SAASL,OAAOpB,OAC7BqB,aAAaK,SAASN,OAAOnB;AAEhC2B,WAAOC,OAAOR,cAAcC,SAAAA;AAC5B,WAAOK;EACT;AChKA,MAAMG,SAAS,CAACC,OAAcA,OAAM,KAAKA,OAAM;AAC/C,MAAMC,YAAY,CAACD,IAAWE,IAAWC,OAAc,EAAE7B,KAAK8B,IAAI,GAAG,MAAMJ,MAAK,EAAM1B,IAAAA,KAAK+B,KAAKL,KAAIE,MAAKI,MAAMH,EAAC;AAChH,MAAMI,aAAa,CAACP,IAAWE,IAAWC,OAAc7B,KAAK8B,IAAI,GAAG,MAAMJ,EAAK1B,IAAAA,KAAK+B,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,CAAC1B,KAAKiD,IAAIvB,KAAIwB,OAAW,IAAA;IAEpDC,aAAa,CAACzB,OAAc1B,KAAK+B,IAAIL,KAAIwB,OAAAA;IAEzCE,eAAe,CAAC1B,OAAc,QAAQ1B,KAAKiD,IAAII,KAAK3B,EAAAA,IAAK;IAEzD4B,YAAY,CAAC5B,OAAcA,OAAO,IAAK,IAAI1B,KAAK8B,IAAI,GAAG,MAAMJ,KAAI,EAAG;IAEpE6B,aAAa,CAAC7B,OAAcA,OAAO,IAAK,IAAI,CAAC1B,KAAK8B,IAAI,GAAG,MAAMJ,EAAAA,IAAK;IAEpE8B,eAAe,CAAC9B,OAAcD,OAAOC,EAAAA,IAAKA,KAAIA,KAAI,MAC9C,MAAM1B,KAAK8B,IAAI,GAAG,MAAMJ,KAAI,IAAI,EAAA,IAChC,OAAO,CAAC1B,KAAK8B,IAAI,GAAG,OAAOJ,KAAI,IAAI,EAAA,IAAM;IAE7C+B,YAAY,CAAC/B,OAAcA,MAAM,IAAKA,KAAI,EAAE1B,KAAK0D,KAAK,IAAIhC,KAAIA,EAAAA,IAAK;IAEnEiC,aAAa,CAACjC,OAAc1B,KAAK0D,KAAK,KAAKhC,MAAK,KAAKA,EAAAA;IAErDkC,eAAe,CAAClC,QAAgBA,MAAK,OAAO,IACxC,QAAQ1B,KAAK0D,KAAK,IAAIhC,KAAIA,EAAAA,IAAK,KAC/B,OAAO1B,KAAK0D,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;MACxBxH,OAAOyH;MACPC,UAAU;MACVC,QAAQ;MACRnI,IAAIiI;MACJG,MAAMH;MACNI,MAAMJ;MACNK,IAAIL;MACJb,MAAMa;IACR,CAAA;AAEAF,IAAAA,UAASQ,SAAS,aAAa;MAC7BC,WAAW;MACXC,YAAY;MACZC,aAAa,CAACC,UAASA,UAAS,gBAAgBA,UAAS,gBAAgBA,UAAS;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;YACRnI,IAAIoJ,CAAAA,OAAKA,KAAI;UACf;QACF;MACF;IACF,CAAA;EACF;ACvEO,WAASC,qBAAqBtB,WAAU;AAC7CA,IAAAA,UAASC,IAAI,UAAU;MACrBsB,aAAa;MACbC,SAAS;QACPC,KAAK;QACLrI,OAAO;QACPsI,QAAQ;QACRvI,MAAM;MACR;IACF,CAAA;EACF;ACTA,MAAMwI,YAAY,oBAAIC,IAAAA;AAEtB,WAASC,gBAAgBC,QAAgB1H,UAAoC;AAC3EA,IAAAA,WAAUA,YAAW,CAAA;AACrB,UAAM2H,WAAWD,SAASE,KAAKC,UAAU7H,QAAAA;AACzC,QAAI8H,YAAYP,UAAUQ,IAAIJ,QAAAA;AAC9B,QAAI,CAACG,WAAW;AACdA,kBAAY,IAAIE,KAAKC,aAAaP,QAAQ1H,QAAAA;AAC1CuH,gBAAU1B,IAAI8B,UAAUG,SAAAA;;AAE1B,WAAOA;EACT;AAEO,WAASI,aAAaC,KAAaT,QAAgB1H,UAAoC;AAC5F,WAAOyH,gBAAgBC,QAAQ1H,QAASoI,EAAAA,OAAOD,GAAAA;EACjD;ACRA,MAAME,aAAa;IAOjBC,OAAOtD,OAAO;AACZ,aAAOuD,QAAQvD,KAAS,IAAyBA,QAAS,KAAKA;IACjE;IAUAwD,QAAQC,WAAWC,QAAOC,OAAO;AAC/B,UAAIF,cAAc,GAAG;AACnB,eAAO;;AAGT,YAAMf,SAAS,KAAKkB,MAAM5I,QAAQ0H;AAClC,UAAImB;AACJ,UAAIC,QAAQL;AAEZ,UAAIE,MAAMnJ,SAAS,GAAG;AAEpB,cAAMuJ,UAAUxI,KAAKJ,IAAII,KAAKyI,IAAIL,MAAM,CAAE,EAAC3D,KAAK,GAAGzE,KAAKyI,IAAIL,MAAMA,MAAMnJ,SAAS,CAAE,EAACwF,KAAK,CAAA;AACzF,YAAI+D,UAAU,QAAQA,UAAU,MAAO;AACrCF,qBAAW;;AAGbC,gBAAQG,eAAeR,WAAWE,KAAAA;;AAGpC,YAAMO,WAAWC,MAAM5I,KAAKyI,IAAIF,KAAAA,CAAAA;AAOhC,YAAMM,aAAaC,MAAMH,QAAAA,IAAY,IAAI3I,KAAKJ,IAAII,KAAKL,IAAI,KAAKK,KAAK+I,MAAMJ,QAAAA,GAAW,EAAA,GAAK,CAAE;AAE7F,YAAMlJ,WAAU;QAAC6I;QAAUU,uBAAuBH;QAAYI,uBAAuBJ;MAAU;AAC/FtH,aAAOC,OAAO/B,UAAS,KAAKA,QAAQ2I,MAAMP,MAAM;AAEhD,aAAOF,aAAaO,WAAWf,QAAQ1H,QAAAA;IACzC;IAWAyJ,YAAYhB,WAAWC,QAAOC,OAAO;AACnC,UAAIF,cAAc,GAAG;AACnB,eAAO;;AAET,YAAMiB,SAASf,MAAMD,MAAAA,EAAOiB,eAAgBlB,YAAalI,KAAK8B,IAAI,IAAI9B,KAAK+I,MAAMH,MAAMV,SAAAA,CAAAA,CAAAA;AACvF,UAAI;QAAC;QAAG;QAAG;QAAG;QAAG;QAAI;MAAG,EAACmB,SAASF,MAAAA,KAAWhB,SAAQ,MAAMC,MAAMnJ,QAAQ;AACvE,eAAO6I,WAAWG,QAAQtK,KAAK,MAAMuK,WAAWC,QAAOC,KAAAA;;AAEzD,aAAO;IACT;EAEF;AAGA,WAASM,eAAeR,WAAWE,OAAO;AAGxC,QAAIG,QAAQH,MAAMnJ,SAAS,IAAImJ,MAAM,CAAE,EAAC3D,QAAQ2D,MAAM,CAAE,EAAC3D,QAAQ2D,MAAM,CAAE,EAAC3D,QAAQ2D,MAAM,CAAE,EAAC3D;AAG3F,QAAIzE,KAAKyI,IAAIF,KAAAA,KAAU,KAAKL,cAAclI,KAAK+I,MAAMb,SAAY,GAAA;AAE/DK,cAAQL,YAAYlI,KAAK+I,MAAMb,SAAAA;;AAEjC,WAAOK;EACT;AAMA,MAAA,QAAe;IAACT;EAAU;ACnGnB,WAASwB,mBAAmBjE,WAAU;AAC3CA,IAAAA,UAASC,IAAI,SAAS;MACpBiE,SAAS;MACTC,QAAQ;MACRlJ,SAAS;MACTmJ,aAAa;MASbC,QAAQ;MAERC,MAAM;MAMNC,OAAO;MAGPC,MAAM;QACJN,SAAS;QACTO,WAAW;QACXC,iBAAiB;QACjBC,WAAW;QACXC,YAAY;QACZC,WAAW,CAACC,MAAM1K,aAAYA,SAAQqK;QACtCM,WAAW,CAACD,MAAM1K,aAAYA,SAAQmF;QACtC4E,QAAQ;MACV;MAEAa,QAAQ;QACNd,SAAS;QACTe,MAAM,CAAA;QACNC,YAAY;QACZC,OAAO;MACT;MAGAC,OAAO;QAELlB,SAAS;QAGTmB,MAAM;QAGN7D,SAAS;UACPC,KAAK;UACLC,QAAQ;QACV;MACF;MAGAqB,OAAO;QACLuC,aAAa;QACbC,aAAa;QACbC,QAAQ;QACRC,iBAAiB;QACjBC,iBAAiB;QACjBlE,SAAS;QACT0C,SAAS;QACTyB,UAAU;QACVC,iBAAiB;QACjBC,aAAa;QAEb/N,UAAUgO,MAAMrD,WAAWC;QAC3BqD,OAAO,CAAA;QACPC,OAAO,CAAA;QACPlN,OAAO;QACPmN,YAAY;QAEZC,mBAAmB;QACnBC,eAAe;QACfC,iBAAiB;MACnB;IACF,CAAA;AAEApG,IAAAA,UAASqG,MAAM,eAAe,SAAS,IAAI,OAAA;AAC3CrG,IAAAA,UAASqG,MAAM,cAAc,SAAS,IAAI,aAAA;AAC1CrG,IAAAA,UAASqG,MAAM,gBAAgB,SAAS,IAAI,aAAA;AAC5CrG,IAAAA,UAASqG,MAAM,eAAe,SAAS,IAAI,OAAA;AAE3CrG,IAAAA,UAASQ,SAAS,SAAS;MACzBC,WAAW;MACXE,aAAa,CAACC,UAAS,CAACA,MAAK0F,WAAW,QAAA,KAAa,CAAC1F,MAAK0F,WAAW,OAAY1F,KAAAA,UAAS,cAAcA,UAAS;MAClHF,YAAY,CAACE,UAASA,UAAS,gBAAgBA,UAAS,oBAAoBA,UAAS;IACvF,CAAA;AAEAZ,IAAAA,UAASQ,SAAS,UAAU;MAC1BC,WAAW;IACb,CAAA;AAEAT,IAAAA,UAASQ,SAAS,eAAe;MAC/BG,aAAa,CAACC,UAASA,UAAS,qBAAqBA,UAAS;MAC9DF,YAAY,CAACE,UAASA,UAAS;IACjC,CAAA;EACF;MClGa2F,YAAYrK,uBAAOsK,OAAO,IAAI;MAC9BC,cAAcvK,uBAAOsK,OAAO,IAAI;AAO7C,WAASE,WAASC,MAAMC,MAAK;AAC3B,QAAI,CAACA,MAAK;AACR,aAAOD;;AAET,UAAME,OAAOD,KAAIE,MAAM,GAAA;AACvB,aAASC,KAAI,GAAGC,KAAIH,KAAKjN,QAAQmN,KAAIC,IAAG,EAAED,IAAG;AAC3C,YAAME,KAAIJ,KAAKE,EAAE;AACjBJ,aAAOA,KAAKM,EAAE,MAAKN,KAAKM,EAAAA,IAAK/K,uBAAOsK,OAAO,IAAI;IACjD;AACA,WAAOG;EACT;AAEA,WAAS1G,IAAIiH,OAAMC,OAAOzE,QAAQ;AAChC,QAAI,OAAOyE,UAAU,UAAU;AAC7B,aAAOC,MAAMV,WAASQ,OAAMC,KAAQzE,GAAAA,MAAAA;;AAEtC,WAAO0E,MAAMV,WAASQ,OAAM,EAAKC,GAAAA,KAAAA;EACnC;AAMO,MAAME,WAAN,MAAMA;IACXC,YAAYC,eAAcC,WAAW;AACnC,WAAKzG,YAAYb;AACjB,WAAKuH,kBAAkB;AACvB,WAAKC,cAAc;AACnB,WAAKnI,QAAQ;AACb,WAAKoI,WAAW,CAAA;AAChB,WAAKC,mBAAmB,CAACC,YAAYA,QAAQ7E,MAAM8E,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,KAAKtO,aAAYqF,cAAcrF,SAAQqN,eAAe;AACnF,WAAKkB,mBAAmB,CAACD,KAAKtO,aAAYqF,cAAcrF,SAAQsN,WAAW;AAC3E,WAAKkB,aAAa,CAACF,KAAKtO,aAAYqF,cAAcrF,SAAQmF,KAAK;AAC/D,WAAKsJ,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,QAAQtJ;AACb,WAAKuJ,SAAS,CAAA;AACd,WAAKC,WAAW;AAChB,WAAKC,0BAA0B;AAE/B,WAAKnJ,SAAS+G,aAAAA;AACd,WAAKhP,MAAMiP,SAAAA;IACb;IAMAvH,IAAIkH,OAAOzE,QAAQ;AACjB,aAAOzC,IAAI,MAAMkH,OAAOzE,MAAAA;IAC1B;IAKAP,IAAIgF,OAAO;AACT,aAAOT,WAAS,MAAMS,KAAAA;IACxB;IAMA3G,SAAS2G,OAAOzE,QAAQ;AACtB,aAAOzC,IAAIwG,aAAaU,OAAOzE,MAAAA;IACjC;IAEAkH,SAASzC,OAAOzE,QAAQ;AACtB,aAAOzC,IAAIsG,WAAWY,OAAOzE,MAAAA;IAC/B;IAmBA2D,MAAMc,OAAOvG,OAAMiJ,aAAaC,YAAY;AAC1C,YAAMC,cAAcrD,WAAS,MAAMS,KAAAA;AACnC,YAAM6C,oBAAoBtD,WAAS,MAAMmD,WAAAA;AACzC,YAAMI,cAAc,MAAMrJ;AAE1B1E,aAAOgO,iBAAiBH,aAAa;QAEnC,CAACE,WAAAA,GAAc;UACb7K,OAAO2K,YAAYnJ,KAAK;UACxBuJ,UAAU;QACZ;QAEA,CAACvJ,KAAAA,GAAO;UACNwJ,YAAY;UACZjI,MAAM;AACJ,kBAAMkI,QAAQ,KAAKJ,WAAY;AAC/B,kBAAMK,SAASN,kBAAkBF,UAAW;AAC5C,gBAAIS,SAASF,KAAQ,GAAA;AACnB,qBAAOnO,OAAOC,OAAO,CAAA,GAAImO,QAAQD,KAAAA;;AAEnC,mBAAOG,eAAeH,OAAOC,MAAAA;UAC/B;UACArK,IAAIb,OAAO;AACT,iBAAK6K,WAAAA,IAAe7K;UACtB;QACF;MACF,CAAA;IACF;IAEA7G,MAAMkS,UAAU;AACdA,eAASC,QAAQ,CAACnS,UAAUA,MAAM,IAAI,CAAA;IACxC;EACF;AAGA,MAAA,WAA+B,oBAAI8O,SAAS;IAC1C1G,aAAa,CAACC,UAAS,CAACA,MAAK0F,WAAW,IAAA;IACxC5F,YAAY,CAACE,UAASA,UAAS;IAC/B4H,OAAO;MACL/H,WAAW;IACb;IACAqI,aAAa;MACXnI,aAAa;MACbD,YAAY;IACd;EACF,GAAG;IAACX;IAAyBuB;IAAsB2C;GAAmB;ACtJ/D,WAAS0G,aAAazC,MAAgB;AAC3C,QAAI,CAACA,QAAQ9M,cAAc8M,KAAKE,IAAI,KAAKhN,cAAc8M,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,WAASyC,aACdlC,KACAmC,OACAC,IACAC,SACAC,QACA;AACA,QAAIC,YAAYJ,MAAKG,MAAO;AAC5B,QAAI,CAACC,WAAW;AACdA,kBAAYJ,MAAKG,MAAO,IAAGtC,IAAIwC,YAAYF,MAAAA,EAAQ7F;AACnD2F,SAAGK,KAAKH,MAAAA;;AAEV,QAAIC,YAAYF,SAAS;AACvBA,gBAAUE;;AAEZ,WAAOF;EACT;AASO,WAASK,aACd1C,KACAR,MACAmD,eACAC,QACA;AACAA,IAAAA,SAAQA,UAAS,CAAA;AACjB,QAAIT,QAAOS,OAAMT,OAAOS,OAAMT,QAAQ,CAAA;AACtC,QAAIC,KAAKQ,OAAMC,iBAAiBD,OAAMC,kBAAkB,CAAA;AAExD,QAAID,OAAMpD,SAASA,MAAM;AACvB2C,MAAAA,QAAOS,OAAMT,OAAO,CAAA;AACpBC,WAAKQ,OAAMC,iBAAiB,CAAA;AAC5BD,MAAAA,OAAMpD,OAAOA;;AAGfQ,QAAI8C,KAAI;AAER9C,QAAIR,OAAOA;AACX,QAAI6C,UAAU;AACd,UAAMU,OAAOJ,cAAczR;AAC3B,QAAImN,IAAW2E,IAAWC,MAAcC,OAAwBC;AAChE,SAAK9E,KAAI,GAAGA,KAAI0E,MAAM1E,MAAK;AACzB6E,cAAQP,cAActE,EAAE;AAGxB,UAAI6E,UAAU1L,UAAa0L,UAAU,QAAQ,CAACjJ,QAAQiJ,KAAQ,GAAA;AAC5Db,kBAAUH,aAAalC,KAAKmC,OAAMC,IAAIC,SAASa,KAAAA;iBACtCjJ,QAAQiJ,KAAQ,GAAA;AAGzB,aAAKF,KAAI,GAAGC,OAAOC,MAAMhS,QAAQ8R,KAAIC,MAAMD,MAAK;AAC9CG,wBAAcD,MAAMF,EAAE;AAEtB,cAAIG,gBAAgB3L,UAAa2L,gBAAgB,QAAQ,CAAClJ,QAAQkJ,WAAc,GAAA;AAC9Ed,sBAAUH,aAAalC,KAAKmC,OAAMC,IAAIC,SAASc,WAAAA;;QAEnD;;IAEJ;AAEAnD,QAAIoD,QAAO;AAEX,UAAMC,QAAQjB,GAAGlR,SAAS;AAC1B,QAAImS,QAAQV,cAAczR,QAAQ;AAChC,WAAKmN,KAAI,GAAGA,KAAIgF,OAAOhF,MAAK;AAC1B,eAAO8D,MAAKC,GAAG/D,EAAAA,CAAE;MACnB;AACA+D,SAAGkB,OAAO,GAAGD,KAAAA;;AAEf,WAAOhB;EACT;AAUO,WAASkB,YAAYjJ,OAAckJ,OAAe/G,QAAe;AACtE,UAAMyC,mBAAmB5E,MAAMmJ;AAC/B,UAAMC,YAAYjH,WAAU,IAAIxK,KAAKJ,IAAI4K,SAAQ,GAAG,GAAA,IAAO;AAC3D,WAAOxK,KAAK0R,OAAOH,QAAQE,aAAaxE,gBAAAA,IAAoBA,mBAAmBwE;EACjF;AAKO,WAASE,YAAYC,QAA4B7D,KAAgC;AACtF,QAAI,CAACA,OAAO,CAAC6D,QAAQ;AACnB;;AAGF7D,UAAMA,OAAO6D,OAAOC,WAAW,IAAA;AAE/B9D,QAAI8C,KAAI;AAGR9C,QAAI+D,eAAc;AAClB/D,QAAIgE,UAAU,GAAG,GAAGH,OAAOpH,OAAOoH,OAAOI,MAAM;AAC/CjE,QAAIoD,QAAO;EACb;AASO,WAASc,UACdlE,KACAtO,UACAyS,IACAC,IACA;AAEAC,oBAAgBrE,KAAKtO,UAASyS,IAAGC,IAAG,IAAI;EAC1C;AAGO,WAASC,gBACdrE,KACAtO,UACAyS,IACAC,IACAE,IACA;AACA,QAAI3N,MAAc4N,SAAiBC,SAAiB9E,OAAc+E,cAAsBhI,QAAeiI,UAAkBC;AACzH,UAAMhF,QAAQjO,SAAQkT;AACtB,UAAMC,WAAWnT,SAAQmT;AACzB,UAAMC,SAASpT,SAAQoT;AACvB,QAAIC,OAAOF,YAAY,KAAKG;AAE5B,QAAIrF,SAAS,OAAOA,UAAU,UAAU;AACtChJ,aAAOgJ,MAAM/I,SAAQ;AACrB,UAAID,SAAS,+BAA+BA,SAAS,8BAA8B;AACjFqJ,YAAI8C,KAAI;AACR9C,YAAIiF,UAAUd,IAAGC,EAAAA;AACjBpE,YAAIkF,OAAOH,GAAAA;AACX/E,YAAImF,UAAUxF,OAAO,CAACA,MAAMlD,QAAQ,GAAG,CAACkD,MAAMsE,SAAS,GAAGtE,MAAMlD,OAAOkD,MAAMsE,MAAM;AACnFjE,YAAIoD,QAAO;AACX;;;AAIJ,QAAIrI,MAAM+J,MAAWA,KAAAA,UAAU,GAAG;AAChC;;AAGF9E,QAAIoF,UAAS;AAEb,YAAQzF,OAAAA;MAEN;AACE,YAAI2E,IAAG;AACLtE,cAAIqF,QAAQlB,IAAGC,IAAGE,KAAI,GAAGQ,QAAQ,GAAG,GAAG7Q,GAAAA;eAClC;AACL+L,cAAIsF,IAAInB,IAAGC,IAAGU,QAAQ,GAAG7Q,GAAAA;;AAE3B+L,YAAIuF,UAAS;AACb;MACF,KAAK;AACH9I,QAAAA,SAAQ6H,KAAIA,KAAI,IAAIQ;AACpB9E,YAAIwF,OAAOrB,KAAIlS,KAAK+B,IAAI+Q,GAAOtI,IAAAA,QAAO2H,KAAInS,KAAKiD,IAAI6P,GAAOD,IAAAA,MAAAA;AAC1DC,eAAOU;AACPzF,YAAI0F,OAAOvB,KAAIlS,KAAK+B,IAAI+Q,GAAOtI,IAAAA,QAAO2H,KAAInS,KAAKiD,IAAI6P,GAAOD,IAAAA,MAAAA;AAC1DC,eAAOU;AACPzF,YAAI0F,OAAOvB,KAAIlS,KAAK+B,IAAI+Q,GAAOtI,IAAAA,QAAO2H,KAAInS,KAAKiD,IAAI6P,GAAOD,IAAAA,MAAAA;AAC1D9E,YAAIuF,UAAS;AACb;MACF,KAAK;AAQHd,uBAAeK,SAAS;AACxBpF,QAAAA,QAAOoF,SAASL;AAChBF,kBAAUtS,KAAKiD,IAAI6P,MAAMY,UAAcjG,IAAAA;AACvCgF,mBAAWzS,KAAKiD,IAAI6P,MAAMY,UAAAA,KAAerB,KAAIA,KAAI,IAAIG,eAAe/E;AACpE8E,kBAAUvS,KAAK+B,IAAI+Q,MAAMY,UAAcjG,IAAAA;AACvCiF,mBAAW1S,KAAK+B,IAAI+Q,MAAMY,UAAAA,KAAerB,KAAIA,KAAI,IAAIG,eAAe/E;AACpEM,YAAIsF,IAAInB,KAAIO,UAAUN,KAAII,SAASC,cAAcM,MAAMzP,IAAIyP,MAAM5P,OAAAA;AACjE6K,YAAIsF,IAAInB,KAAIQ,UAAUP,KAAIG,SAASE,cAAcM,MAAM5P,SAAS4P,GAAAA;AAChE/E,YAAIsF,IAAInB,KAAIO,UAAUN,KAAII,SAASC,cAAcM,KAAKA,MAAM5P,OAAAA;AAC5D6K,YAAIsF,IAAInB,KAAIQ,UAAUP,KAAIG,SAASE,cAAcM,MAAM5P,SAAS4P,MAAMzP,EAAAA;AACtE0K,YAAIuF,UAAS;AACb;MACF,KAAK;AACH,YAAI,CAACV,UAAU;AACbnF,UAAAA,QAAOzN,KAAK2T,UAAUd;AACtBrI,UAAAA,SAAQ6H,KAAIA,KAAI,IAAI5E;AACpBM,cAAI6F,KAAK1B,KAAI1H,QAAO2H,KAAI1E,OAAM,IAAIjD,QAAO,IAAIiD,KAAAA;AAC7C;;AAEFqF,eAAOY;MAET,KAAK;AACHjB,mBAAWzS,KAAKiD,IAAI6P,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxCP,kBAAUtS,KAAKiD,IAAI6P,GAAOD,IAAAA;AAC1BN,kBAAUvS,KAAK+B,IAAI+Q,GAAOD,IAAAA;AAC1BH,mBAAW1S,KAAK+B,IAAI+Q,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxC9E,YAAIwF,OAAOrB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BxE,YAAI0F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BvE,YAAI0F,OAAOvB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BxE,YAAI0F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BvE,YAAIuF,UAAS;AACb;MACF,KAAK;AACHR,eAAOY;MAET,KAAK;AACHjB,mBAAWzS,KAAKiD,IAAI6P,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxCP,kBAAUtS,KAAKiD,IAAI6P,GAAOD,IAAAA;AAC1BN,kBAAUvS,KAAK+B,IAAI+Q,GAAOD,IAAAA;AAC1BH,mBAAW1S,KAAK+B,IAAI+Q,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxC9E,YAAIwF,OAAOrB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BxE,YAAI0F,OAAOvB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BxE,YAAIwF,OAAOrB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BvE,YAAI0F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7B;MACF,KAAK;AACHG,mBAAWzS,KAAKiD,IAAI6P,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxCP,kBAAUtS,KAAKiD,IAAI6P,GAAOD,IAAAA;AAC1BN,kBAAUvS,KAAK+B,IAAI+Q,GAAOD,IAAAA;AAC1BH,mBAAW1S,KAAK+B,IAAI+Q,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxC9E,YAAIwF,OAAOrB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BxE,YAAI0F,OAAOvB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BxE,YAAIwF,OAAOrB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BvE,YAAI0F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BQ,eAAOY;AACPjB,mBAAWzS,KAAKiD,IAAI6P,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxCP,kBAAUtS,KAAKiD,IAAI6P,GAAOD,IAAAA;AAC1BN,kBAAUvS,KAAK+B,IAAI+Q,GAAOD,IAAAA;AAC1BH,mBAAW1S,KAAK+B,IAAI+Q,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxC9E,YAAIwF,OAAOrB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BxE,YAAI0F,OAAOvB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BxE,YAAIwF,OAAOrB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BvE,YAAI0F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7B;MACF,KAAK;AACHA,kBAAUD,KAAIA,KAAI,IAAIrS,KAAKiD,IAAI6P,GAAAA,IAAOD;AACtCN,kBAAUvS,KAAK+B,IAAI+Q,GAAOD,IAAAA;AAC1B9E,YAAIwF,OAAOrB,KAAII,SAASH,KAAII,OAAAA;AAC5BxE,YAAI0F,OAAOvB,KAAII,SAASH,KAAII,OAAAA;AAC5B;MACF,KAAK;AACHxE,YAAIwF,OAAOrB,IAAGC,EAAAA;AACdpE,YAAI0F,OAAOvB,KAAIlS,KAAKiD,IAAI6P,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ,SAASV,KAAInS,KAAK+B,IAAI+Q,GAAOD,IAAAA,MAAAA;AACzE;MACF,KAAK;AACH9E,YAAIuF,UAAS;AACb;IACJ;AAEAvF,QAAI8F,KAAI;AACR,QAAIpU,SAAQqU,cAAc,GAAG;AAC3B/F,UAAIgG,OAAM;;EAEd;AASO,WAASC,eACdxT,QACAyT,MACAC,QACA;AACAA,aAASA,UAAU;AAEnB,WAAO,CAACD,QAASzT,UAASA,OAAM0R,IAAI+B,KAAKzV,OAAO0V,UAAU1T,OAAM0R,IAAI+B,KAAKxV,QAAQyV,UACjF1T,OAAM2R,IAAI8B,KAAKnN,MAAMoN,UAAU1T,OAAM2R,IAAI8B,KAAKlN,SAASmN;EACzD;AAEO,WAASC,SAASpG,KAA+BkG,MAAY;AAClElG,QAAI8C,KAAI;AACR9C,QAAIoF,UAAS;AACbpF,QAAI6F,KAAKK,KAAKzV,MAAMyV,KAAKnN,KAAKmN,KAAKxV,QAAQwV,KAAKzV,MAAMyV,KAAKlN,SAASkN,KAAKnN,GAAG;AAC5EiH,QAAIpE,KAAI;EACV;AAEO,WAASyK,WAAWrG,KAA+B;AACxDA,QAAIoD,QAAO;EACb;AAKO,WAASkD,eACdtG,KACAuG,UACA3E,QACA4E,OACAnG,MACA;AACA,QAAI,CAACkG,UAAU;AACb,aAAOvG,IAAI0F,OAAO9D,OAAOuC,GAAGvC,OAAOwC,CAAC;;AAEtC,QAAI/D,SAAS,UAAU;AACrB,YAAMoG,YAAYF,SAASpC,IAAIvC,OAAOuC,KAAK;AAC3CnE,UAAI0F,OAAOe,UAAUF,SAASnC,CAAC;AAC/BpE,UAAI0F,OAAOe,UAAU7E,OAAOwC,CAAC;IAC/B,WAAW/D,SAAS,YAAY,CAAC,CAACmG,OAAM;AACtCxG,UAAI0F,OAAOa,SAASpC,GAAGvC,OAAOwC,CAAC;WAC1B;AACLpE,UAAI0F,OAAO9D,OAAOuC,GAAGoC,SAASnC,CAAC;;AAEjCpE,QAAI0F,OAAO9D,OAAOuC,GAAGvC,OAAOwC,CAAC;EAC/B;AAKO,WAASsC,eACd1G,KACAuG,UACA3E,QACA4E,OACA;AACA,QAAI,CAACD,UAAU;AACb,aAAOvG,IAAI0F,OAAO9D,OAAOuC,GAAGvC,OAAOwC,CAAC;;AAEtCpE,QAAI2G,cACFH,QAAOD,SAASK,OAAOL,SAASM,MAChCL,QAAOD,SAASO,OAAOP,SAASQ,MAChCP,QAAO5E,OAAOiF,OAAOjF,OAAOgF,MAC5BJ,QAAO5E,OAAOmF,OAAOnF,OAAOkF,MAC5BlF,OAAOuC,GACPvC,OAAOwC,CAAC;EACZ;AAEA,WAAS4C,cAAchH,KAA+BiH,MAAsB;AAC1E,QAAIA,KAAKC,aAAa;AACpBlH,UAAIiF,UAAUgC,KAAKC,YAAY,CAAA,GAAID,KAAKC,YAAY,CAAE,CAAA;;AAGxD,QAAI,CAACxU,cAAcuU,KAAKpC,QAAQ,GAAG;AACjC7E,UAAIkF,OAAO+B,KAAKpC,QAAQ;;AAG1B,QAAIoC,KAAKpQ,OAAO;AACdmJ,UAAImH,YAAYF,KAAKpQ;;AAGvB,QAAIoQ,KAAKG,WAAW;AAClBpH,UAAIoH,YAAYH,KAAKG;;AAGvB,QAAIH,KAAKI,cAAc;AACrBrH,UAAIqH,eAAeJ,KAAKI;;EAE5B;AAEA,WAASC,aACPtH,KACAmE,IACAC,IACAmD,MACAN,MACA;AACA,QAAIA,KAAKO,iBAAiBP,KAAKQ,WAAW;AAQxC,YAAMC,UAAU1H,IAAIwC,YAAY+E,IAAAA;AAChC,YAAM9W,QAAO0T,KAAIuD,QAAQC;AACzB,YAAMjX,SAAQyT,KAAIuD,QAAQE;AAC1B,YAAM7O,OAAMqL,KAAIsD,QAAQG;AACxB,YAAM7O,UAASoL,KAAIsD,QAAQI;AAC3B,YAAMC,cAAcd,KAAKO,iBAAiBzO,OAAMC,WAAU,IAAIA;AAE9DgH,UAAIgI,cAAchI,IAAImH;AACtBnH,UAAIoF,UAAS;AACbpF,UAAIjE,YAAYkL,KAAKgB,mBAAmB;AACxCjI,UAAIwF,OAAO/U,OAAMsX,WAAAA;AACjB/H,UAAI0F,OAAOhV,QAAOqX,WAAAA;AAClB/H,UAAIgG,OAAM;;EAEd;AAEA,WAASkC,aAAalI,KAA+BiH,MAAuB;AAC1E,UAAMkB,WAAWnI,IAAImH;AAErBnH,QAAImH,YAAYF,KAAKpQ;AACrBmJ,QAAIoI,SAASnB,KAAKxW,MAAMwW,KAAKlO,KAAKkO,KAAKxK,OAAOwK,KAAKhD,MAAM;AACzDjE,QAAImH,YAAYgB;EAClB;AAKO,WAASE,WACdrI,KACArD,MACAwH,IACAC,IACA5E,MACAyH,OAAuB,CAAA,GACvB;AACA,UAAMqB,QAAQrO,QAAQ0C,IAAAA,IAAQA,OAAO;MAACA;IAAK;AAC3C,UAAMqJ,SAASiB,KAAKsB,cAAc,KAAKtB,KAAKuB,gBAAgB;AAC5D,QAAInK,IAAWkJ;AAEfvH,QAAI8C,KAAI;AACR9C,QAAIR,OAAOA,KAAK8C;AAChB0E,kBAAchH,KAAKiH,IAAAA;AAEnB,SAAK5I,KAAI,GAAGA,KAAIiK,MAAMpX,QAAQ,EAAEmN,IAAG;AACjCkJ,aAAOe,MAAMjK,EAAE;AAEf,UAAI4I,KAAKwB,UAAU;AACjBP,qBAAalI,KAAKiH,KAAKwB,QAAQ;;AAGjC,UAAIzC,QAAQ;AACV,YAAIiB,KAAKuB,aAAa;AACpBxI,cAAIgI,cAAcf,KAAKuB;;AAGzB,YAAI,CAAC9V,cAAcuU,KAAKsB,WAAW,GAAG;AACpCvI,cAAIjE,YAAYkL,KAAKsB;;AAGvBvI,YAAI0I,WAAWnB,MAAMpD,IAAGC,IAAG6C,KAAK0B,QAAQ;;AAG1C3I,UAAI4I,SAASrB,MAAMpD,IAAGC,IAAG6C,KAAK0B,QAAQ;AACtCrB,mBAAatH,KAAKmE,IAAGC,IAAGmD,MAAMN,IAAAA;AAE9B7C,MAAAA,MAAKyE,OAAOrJ,KAAKI,UAAU;IAC7B;AAEAI,QAAIoD,QAAO;EACb;AAOO,WAAS0F,mBACd9I,KACA6F,MACA;AACA,UAAM,EAAC1B,GAAAA,IAAGC,GAAAA,IAAGE,GAAAA,IAAGyE,GAAAA,IAAGjE,OAAM,IAAIe;AAG7B7F,QAAIsF,IAAInB,KAAIW,OAAOkE,SAAS5E,KAAIU,OAAOkE,SAASlE,OAAOkE,SAAS,MAAM1T,IAAIA,IAAI,IAAI;AAGlF0K,QAAI0F,OAAOvB,IAAGC,KAAI2E,KAAIjE,OAAOmE,UAAU;AAGvCjJ,QAAIsF,IAAInB,KAAIW,OAAOmE,YAAY7E,KAAI2E,KAAIjE,OAAOmE,YAAYnE,OAAOmE,YAAY3T,IAAIH,SAAS,IAAI;AAG9F6K,QAAI0F,OAAOvB,KAAIG,KAAIQ,OAAOoE,aAAa9E,KAAI2E,EAAAA;AAG3C/I,QAAIsF,IAAInB,KAAIG,KAAIQ,OAAOoE,aAAa9E,KAAI2E,KAAIjE,OAAOoE,aAAapE,OAAOoE,aAAa/T,SAAS,GAAG,IAAI;AAGpG6K,QAAI0F,OAAOvB,KAAIG,IAAGF,KAAIU,OAAOqE,QAAQ;AAGrCnJ,QAAIsF,IAAInB,KAAIG,KAAIQ,OAAOqE,UAAU/E,KAAIU,OAAOqE,UAAUrE,OAAOqE,UAAU,GAAG,CAAChU,SAAS,IAAI;AAGxF6K,QAAI0F,OAAOvB,KAAIW,OAAOkE,SAAS5E,EAAAA;EACjC;ACxgBA,MAAMgF,cAAc;AACpB,MAAMC,aAAa;AAcZ,WAASC,aAAa5S,OAAwBgJ,OAAsB;AACzE,UAAM6J,YAAW,KAAK7S,OAAO8S,MAAMJ,WAAAA;AACnC,QAAI,CAACG,YAAWA,SAAQ,CAAA,MAAO,UAAU;AACvC,aAAO7J,QAAO;;AAGhBhJ,YAAQ,CAAC6S,SAAQ,CAAE;AAEnB,YAAQA,SAAQ,CAAE,GAAA;MAChB,KAAK;AACH,eAAO7S;MACT,KAAK;AACHA,iBAAS;AACT;IAGJ;AAEA,WAAOgJ,QAAOhJ;EAChB;AAEA,MAAM+S,eAAe,CAAC9Q,OAAe,CAACA,MAAK;AAQpC,WAAS+Q,kBAAkBhT,OAAwCiT,OAA0C;AAClH,UAAMC,MAAM,CAAA;AACZ,UAAMC,WAAWhI,SAAS8H,KAAAA;AAC1B,UAAMxL,OAAO0L,WAAWrW,OAAO2K,KAAKwL,KAAAA,IAASA;AAC7C,UAAMG,QAAOjI,SAASnL,KAAAA,IAClBmT,WACEE,CAAAA,SAAQjI,eAAepL,MAAMqT,IAAAA,GAAOrT,MAAMiT,MAAMI,IAAK,CAAA,CAAC,IACtDA,CAAAA,SAAQrT,MAAMqT,IAAAA,IAChB,MAAMrT;AAEV,eAAWqT,QAAQ5L,MAAM;AACvByL,UAAIG,IAAAA,IAAQN,aAAaK,MAAKC,IAAAA,CAAAA;IAChC;AACA,WAAOH;EACT;AAUO,WAASI,OAAOtT,OAA8B;AACnD,WAAOgT,kBAAkBhT,OAAO;MAACqC,KAAK;MAAKrI,OAAO;MAAKsI,QAAQ;MAAKvI,MAAM;IAAG,CAAA;EAC/E;AASO,WAASwZ,cAAcvT,OAA6B;AACzD,WAAOgT,kBAAkBhT,OAAO;MAAC;MAAW;MAAY;MAAc;IAAc,CAAA;EACtF;AAUO,WAASwT,UAAUxT,OAAkC;AAC1D,UAAMyT,MAAMH,OAAOtT,KAAAA;AAEnByT,QAAI1N,QAAQ0N,IAAI1Z,OAAO0Z,IAAIzZ;AAC3ByZ,QAAIlG,SAASkG,IAAIpR,MAAMoR,IAAInR;AAE3B,WAAOmR;EACT;AAUO,WAASC,OAAO1Y,UAA4B2Y,UAA8B;AAC/E3Y,IAAAA,WAAUA,YAAW,CAAA;AACrB2Y,eAAWA,YAAY/S,SAASkI;AAEhC,QAAIE,QAAOoC,eAAepQ,SAAQgO,MAAM2K,SAAS3K,IAAI;AAErD,QAAI,OAAOA,UAAS,UAAU;AAC5BA,MAAAA,QAAO4K,SAAS5K,OAAM,EAAA;;AAExB,QAAIC,QAAQmC,eAAepQ,SAAQiO,OAAO0K,SAAS1K,KAAK;AACxD,QAAIA,SAAS,EAAE,KAAKA,OAAO6J,MAAMH,UAAa,GAAA;AAC5CkB,cAAQC,KAAK,oCAAoC7K,QAAQ,GAAA;AACzDA,cAAQnI;;AAGV,UAAMgI,OAAO;MACXC,QAAQqC,eAAepQ,SAAQ+N,QAAQ4K,SAAS5K,MAAM;MACtDG,YAAY0J,aAAaxH,eAAepQ,SAAQkO,YAAYyK,SAASzK,UAAU,GAAGF,KAAAA;MAClFA,MAAAA;MACAC;MACAE,QAAQiC,eAAepQ,SAAQmO,QAAQwK,SAASxK,MAAM;MACtDyC,QAAQ;IACV;AAEA9C,SAAK8C,SAASL,aAAazC,IAAAA;AAC3B,WAAOA;EACT;AAaO,WAASiL,QAAQC,QAAwBvL,SAAkB/E,QAAgBuQ,MAA+B;AAC/G,QAAIC,YAAY;AAChB,QAAIvM,IAAW0E,MAAcrM;AAE7B,SAAK2H,KAAI,GAAG0E,OAAO2H,OAAOxZ,QAAQmN,KAAI0E,MAAM,EAAE1E,IAAG;AAC/C3H,cAAQgU,OAAOrM,EAAE;AACjB,UAAI3H,UAAUc,QAAW;AACvB;;AAEF,UAAI2H,YAAY3H,UAAa,OAAOd,UAAU,YAAY;AACxDA,gBAAQA,MAAMyI,OAAAA;AACdyL,oBAAY;;AAEd,UAAIxQ,WAAU5C,UAAayC,QAAQvD,KAAQ,GAAA;AACzCA,gBAAQA,MAAM0D,SAAQ1D,MAAMxF,MAAM;AAClC0Z,oBAAY;;AAEd,UAAIlU,UAAUc,QAAW;AACvB,YAAImT,QAAQ,CAACC,WAAW;AACtBD,eAAKC,YAAY;;AAEnB,eAAOlU;;IAEX;EACF;AAQO,WAASmU,UAAUC,QAAuCjP,OAAwBH,aAAsB;AAC7G,UAAM,EAAC9J,KAAAA,MAAKC,KAAAA,KAAAA,IAAOiZ;AACnB,UAAMC,SAASC,YAAYnP,QAAQhK,OAAMD,QAAO,CAAA;AAChD,UAAMqZ,WAAW,CAACvU,OAAewU,SAAgBxP,eAAehF,UAAU,IAAI,IAAIA,QAAQwU;AAC1F,WAAO;MACLtZ,KAAKqZ,SAASrZ,MAAK,CAACK,KAAKyI,IAAIqQ,MAAAA,CAAAA;MAC7BlZ,KAAKoZ,SAASpZ,MAAKkZ,MAAAA;IACrB;EACF;AAUO,WAASI,cAAcC,eAAuBjM,SAAiB;AACpE,WAAO3L,OAAOC,OAAOD,OAAOsK,OAAOsN,aAAgBjM,GAAAA,OAAAA;EACrD;ACnLO,WAASkM,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,UAAM1I,SAA6B;MACjC,CAACgJ,OAAOC,WAAW,GAAG;MACtBC,YAAY;MACZC,SAAST;MACTU,aAAaN;MACb3T,WAAWsS;MACX4B,YAAYR;MACZvK,UAAU,CAACzC,UAAqB4M,gBAAgB;QAAC5M;QAAU6M,GAAAA;MAAO,GAAEC,UAAUG,iBAAiBrB,QAAAA;IACjG;AACA,WAAO,IAAI6B,MAAMtJ,QAAO;;;;MAItBuJ,eAAevK,QAAQmI,MAAc;AACnC,eAAOnI,OAAOmI,IAAK;AACnB,eAAOnI,OAAOwK;AACd,eAAOd,OAAO,CAAA,EAAGvB,IAAAA;AACjB,eAAO;MACT;;;;MAKAtQ,IAAImI,QAAQmI,MAAc;AACxB,eAAOsC,QAAQzK,QAAQmI,MACrB,MAAMuC,qBAAqBvC,MAAMwB,UAAUD,QAAQ1J,MAAAA,CAAAA;MACvD;;;;;MAMA2K,yBAAyB3K,QAAQmI,MAAM;AACrC,eAAOyC,QAAQD,yBAAyB3K,OAAOmK,QAAQ,CAAA,GAAIhC,IAAAA;MAC7D;;;;MAKA0C,iBAAiB;AACf,eAAOD,QAAQC,eAAenB,OAAO,CAAE,CAAA;MACzC;;;;MAKAoB,IAAI9K,QAAQmI,MAAc;AACxB,eAAO4C,qBAAqB/K,MAAQtG,EAAAA,SAASyO,IAAAA;MAC/C;;;;MAKA6C,QAAQhL,QAAQ;AACd,eAAO+K,qBAAqB/K,MAAAA;MAC9B;;;;MAKArK,IAAIqK,QAAQmI,MAAcrT,OAAO;AAC/B,cAAMmW,UAAUjL,OAAOkL,aAAalL,OAAOkL,WAAWrB,UAAU;AAChE7J,eAAOmI,IAAAA,IAAQ8C,QAAQ9C,IAAK,IAAGrT;AAC/B,eAAOkL,OAAOwK;AACd,eAAO;MACT;IACF,CAAA;EACF;AAUO,WAASW,eAIdC,OACA7N,SACA8N,UACAC,oBACA;AACA,UAAMtK,SAA4B;MAChCkJ,YAAY;MACZqB,QAAQH;MACRI,UAAUjO;MACVkO,WAAWJ;MACXK,QAAQ,oBAAIC,IAAAA;MACZ1O,cAAcA,aAAamO,OAAOE,kBAAAA;MAClCM,YAAY,CAACxN,QAAmB+M,eAAeC,OAAOhN,KAAKiN,UAAUC,kBAAAA;MACrEhM,UAAU,CAACzC,UAAqBsO,eAAeC,MAAM9L,SAASzC,KAAAA,GAAQU,SAAS8N,UAAUC,kBAAAA;IAC3F;AACA,WAAO,IAAIhB,MAAMtJ,QAAO;;;;MAItBuJ,eAAevK,QAAQmI,MAAM;AAC3B,eAAOnI,OAAOmI,IAAK;AACnB,eAAOiD,MAAMjD,IAAK;AAClB,eAAO;MACT;;;;MAKAtQ,IAAImI,QAAQmI,MAAc0D,UAAU;AAClC,eAAOpB,QAAQzK,QAAQmI,MACrB,MAAM2D,oBAAoB9L,QAAQmI,MAAM0D,QAAAA,CAAAA;MAC5C;;;;;MAMAlB,yBAAyB3K,QAAQmI,MAAM;AACrC,eAAOnI,OAAO/C,aAAa8O,UACvBnB,QAAQE,IAAIM,OAAOjD,IAAQ,IAAA;UAACrI,YAAY;UAAMkM,cAAc;QAAI,IAAIpW,SACpEgV,QAAQD,yBAAyBS,OAAOjD,IAAK;MACnD;;;;MAKA0C,iBAAiB;AACf,eAAOD,QAAQC,eAAeO,KAAAA;MAChC;;;;MAKAN,IAAI9K,QAAQmI,MAAM;AAChB,eAAOyC,QAAQE,IAAIM,OAAOjD,IAAAA;MAC5B;;;;MAKA6C,UAAU;AACR,eAAOJ,QAAQI,QAAQI,KAAAA;MACzB;;;;MAKAzV,IAAIqK,QAAQmI,MAAMrT,OAAO;AACvBsW,cAAMjD,IAAAA,IAAQrT;AACd,eAAOkL,OAAOmI,IAAK;AACnB,eAAO;MACT;IACF,CAAA;EACF;AAKO,WAASlL,aACdmO,OACA1V,YAA+B;IAACuW,YAAY;IAAMC,WAAW;EAAI,GACrD;AACZ,UAAM,EAAC7V,cAAcX,UAASuW,YAAY7V,aAAaV,UAASwW,WAAWC,WAAWzW,UAASqW,QAAO,IAAIX;AAC1G,WAAO;MACLW,SAASI;MACTF,YAAY5V;MACZ6V,WAAW9V;MACXgW,cAAcC,WAAWhW,WAAAA,IAAeA,cAAc,MAAMA;MAC5DiW,aAAaD,WAAWjW,UAAAA,IAAcA,aAAa,MAAMA;IAC3D;EACF;AAEA,MAAMmW,UAAU,CAACC,QAAgBlW,UAAiBkW,SAASA,SAASC,YAAYnW,KAAAA,IAAQA;AACxF,MAAMoW,mBAAmB,CAACvE,MAAcrT,UAAmBmL,SAASnL,KAAAA,KAAUqT,SAAS,eACpFvW,OAAOiZ,eAAe/V,KAAW,MAAA,QAAQA,MAAMkI,gBAAgBpL;AAElE,WAAS6Y,QACPzK,QACAmI,MACAU,UACA;AACA,QAAIjX,OAAO+a,UAAUC,eAAe5e,KAAKgS,QAAQmI,IAASA,KAAAA,SAAS,eAAe;AAChF,aAAOnI,OAAOmI,IAAK;;AAGrB,UAAMrT,QAAQ+T,SAAAA;AAEd7I,WAAOmI,IAAAA,IAAQrT;AACf,WAAOA;EACT;AAEA,WAASgX,oBACP9L,QACAmI,MACA0D,UACA;AACA,UAAM,EAACN,QAAQC,UAAUC,WAAWxO,cAAcd,aAAW,IAAI6D;AACjE,QAAIlL,QAAQyW,OAAOpD,IAAAA;AAGnB,QAAIkE,WAAWvX,KAAAA,KAAUqH,aAAYiQ,aAAajE,IAAO,GAAA;AACvDrT,cAAQ+X,mBAAmB1E,MAAMrT,OAAOkL,QAAQ6L,QAAAA;;AAElD,QAAIxT,QAAQvD,KAAAA,KAAUA,MAAMxF,QAAQ;AAClCwF,cAAQgY,cAAc3E,MAAMrT,OAAOkL,QAAQ7D,aAAYmQ,WAAW;;AAEpE,QAAII,iBAAiBvE,MAAMrT,KAAQ,GAAA;AAEjCA,cAAQqW,eAAerW,OAAO0W,UAAUC,aAAaA,UAAUtD,IAAAA,GAAOhM,YAAAA;;AAExE,WAAOrH;EACT;AAEA,WAAS+X,mBACP1E,MACA4E,UACA/M,QACA6L,UACA;AACA,UAAM,EAACN,QAAQC,UAAUC,WAAWC,OAAM,IAAI1L;AAC9C,QAAI0L,OAAOZ,IAAI3C,IAAO,GAAA;AACpB,YAAM,IAAI6E,MAAM,yBAAyBC,MAAMlX,KAAK2V,MAAAA,EAAQwB,KAAK,IAAQ,IAAA,OAAO/E,IAAM;;AAExFuD,WAAOpC,IAAInB,IAAAA;AACX,QAAIrT,QAAQiY,SAASvB,UAAUC,aAAaI,QAAAA;AAC5CH,WAAOyB,OAAOhF,IAAAA;AACd,QAAIuE,iBAAiBvE,MAAMrT,KAAQ,GAAA;AAEjCA,cAAQsY,kBAAkB7B,OAAOpB,SAASoB,QAAQpD,MAAMrT,KAAAA;;AAE1D,WAAOA;EACT;AAEA,WAASgY,cACP3E,MACArT,OACAkL,QACAsM,aACA;AACA,UAAM,EAACf,QAAQC,UAAUC,WAAWxO,cAAcd,aAAW,IAAI6D;AAEjE,QAAI,OAAOwL,SAAShT,UAAU,eAAe8T,YAAYnE,IAAO,GAAA;AAC9D,aAAOrT,MAAM0W,SAAShT,QAAQ1D,MAAMxF,MAAM;IAC5C,WAAW2Q,SAASnL,MAAM,CAAA,CAAE,GAAG;AAE7B,YAAMuY,MAAMvY;AACZ,YAAM4U,SAAS6B,OAAOpB,QAAQmD,OAAOrb,CAAAA,OAAKA,OAAMob,GAAAA;AAChDvY,cAAQ,CAAA;AACR,iBAAWyY,QAAQF,KAAK;AACtB,cAAMG,WAAWJ,kBAAkB1D,QAAQ6B,QAAQpD,MAAMoF,IAAAA;AACzDzY,cAAM+L,KAAKsK,eAAeqC,UAAUhC,UAAUC,aAAaA,UAAUtD,IAAAA,GAAOhM,YAAAA,CAAAA;MAC9E;;AAEF,WAAOrH;EACT;AAEA,WAAS2Y,gBACPhF,UACAN,MACArT,OACA;AACA,WAAOuX,WAAW5D,QAAAA,IAAYA,SAASN,MAAMrT,KAAAA,IAAS2T;EACxD;AAEA,MAAMrM,WAAW,CAACE,MAAwBoR,WAAsBpR,SAAQ,OAAOoR,SAC3E,OAAOpR,SAAQ,WAAWqR,iBAAiBD,QAAQpR,IAAAA,IAAO1G;AAE9D,WAASgY,UACPjY,MACAkY,cACAvR,MACAwR,gBACAhZ,OACA;AACA,eAAW4Y,UAAUG,cAAc;AACjC,YAAMhR,QAAQT,SAASE,MAAKoR,MAAAA;AAC5B,UAAI7Q,OAAO;AACTlH,QAAAA,KAAI2T,IAAIzM,KAAAA;AACR,cAAM4L,WAAWgF,gBAAgB5Q,MAAM1G,WAAWmG,MAAKxH,KAAAA;AACvD,YAAI,OAAO2T,aAAa,eAAeA,aAAanM,QAAOmM,aAAaqF,gBAAgB;AAGtF,iBAAOrF;;iBAEA5L,UAAU,SAAS,OAAOiR,mBAAmB,eAAexR,SAAQwR,gBAAgB;AAG7F,eAAO;;IAEX;AACA,WAAO;EACT;AAEA,WAASV,kBACPS,cACAL,UACArF,MACArT,OACA;AACA,UAAM8U,aAAa4D,SAASpD;AAC5B,UAAM3B,WAAWgF,gBAAgBD,SAASrX,WAAWgS,MAAMrT,KAAAA;AAC3D,UAAMiZ,YAAY;MAAIF,GAAAA;MAAiBjE,GAAAA;IAAW;AAClD,UAAMjU,OAAM,oBAAIgW,IAAAA;AAChBhW,IAAAA,KAAI2T,IAAIxU,KAAAA;AACR,QAAIwH,OAAM0R,iBAAiBrY,MAAKoY,WAAW5F,MAAMM,YAAYN,MAAMrT,KAAAA;AACnE,QAAIwH,SAAQ,MAAM;AAChB,aAAO;;AAET,QAAI,OAAOmM,aAAa,eAAeA,aAAaN,MAAM;AACxD7L,MAAAA,OAAM0R,iBAAiBrY,MAAKoY,WAAWtF,UAAUnM,MAAKxH,KAAAA;AACtD,UAAIwH,SAAQ,MAAM;AAChB,eAAO;;;AAGX,WAAOmN,gBAAgBwD,MAAMlX,KAAKJ,IAAM,GAAA;MAAC;IAAG,GAAEiU,YAAYnB,UACxD,MAAMwF,aAAaT,UAAUrF,MAAgBrT,KAAAA,CAAAA;EACjD;AAEA,WAASkZ,iBACPrY,MACAoY,WACAzR,MACAmM,UACA8E,MACA;AACA,WAAOjR,MAAK;AACVA,MAAAA,OAAMsR,UAAUjY,MAAKoY,WAAWzR,MAAKmM,UAAU8E,IAAAA;IACjD;AACA,WAAOjR;EACT;AAEA,WAAS2R,aACPT,UACArF,MACArT,OACA;AACA,UAAM4Y,SAASF,SAASnD,WAAU;AAClC,QAAI,EAAElC,QAAQuF,SAAS;AACrBA,aAAOvF,IAAK,IAAG,CAAA;;AAEjB,UAAMnI,SAAS0N,OAAOvF,IAAK;AAC3B,QAAI9P,QAAQ2H,MAAWC,KAAAA,SAASnL,KAAQ,GAAA;AAEtC,aAAOA;;AAET,WAAOkL,UAAU,CAAA;EACnB;AAEA,WAAS0K,qBACPvC,MACAwB,UACAD,QACA0B,OACA;AACA,QAAItW;AACJ,eAAW0X,UAAU7C,UAAU;AAC7B7U,cAAQiV,SAASwC,QAAQC,QAAQrE,IAAOuB,GAAAA,MAAAA;AACxC,UAAI,OAAO5U,UAAU,aAAa;AAChC,eAAO4X,iBAAiBvE,MAAMrT,KAC1BsY,IAAAA,kBAAkB1D,QAAQ0B,OAAOjD,MAAMrT,KAAAA,IACvCA;;IAER;EACF;AAEA,WAASiV,SAASzN,MAAaoN,QAAqB;AAClD,eAAW7M,SAAS6M,QAAQ;AAC1B,UAAI,CAAC7M,OAAO;AACV;;AAEF,YAAM/H,QAAQ+H,MAAMP,IAAI;AACxB,UAAI,OAAOxH,UAAU,aAAa;AAChC,eAAOA;;IAEX;EACF;AAEA,WAASiW,qBAAqB/K,QAAuB;AACnD,QAAIzD,OAAOyD,OAAOwK;AAClB,QAAI,CAACjO,MAAM;AACTA,aAAOyD,OAAOwK,QAAQ0D,yBAAyBlO,OAAOmK,OAAO;;AAE/D,WAAO5N;EACT;AAEA,WAAS2R,yBAAyBxE,QAAqB;AACrD,UAAM/T,OAAM,oBAAIgW,IAAAA;AAChB,eAAW9O,SAAS6M,QAAQ;AAC1B,iBAAWpN,QAAO1K,OAAO2K,KAAKM,KAAOyQ,EAAAA,OAAO3Q,CAAAA,OAAK,CAACA,GAAEX,WAAW,GAAO,CAAA,GAAA;AACpErG,QAAAA,KAAI2T,IAAIhN,IAAAA;MACV;IACF;AACA,WAAO2Q,MAAMlX,KAAKJ,IAAAA;EACpB;AAEO,WAASwY,4BACdjf,MACAqR,OACA7R,QACAa,OACA;AACA,UAAM,EAACE,OAAM,IAAIP;AACjB,UAAM,EAACoN,KAAAA,OAAM,IAAA,IAAO,KAAK8R;AACzB,UAAMC,SAAS,IAAIpB,MAAoB1d,KAAAA;AACvC,QAAIkN,IAAW0E,MAAc3I,QAAe+U;AAE5C,SAAK9Q,KAAI,GAAG0E,OAAO5R,OAAOkN,KAAI0E,MAAM,EAAE1E,IAAG;AACvCjE,MAAAA,SAAQiE,KAAI/N;AACZ6e,aAAOhN,MAAK/H,MAAM;AAClB6V,aAAO5R,EAAAA,IAAK;QACV6R,GAAG7e,OAAO8e,MAAMZ,iBAAiBJ,MAAMjR,IAAM9D,GAAAA,MAAAA;MAC/C;IACF;AACA,WAAO6V;EACT;AClcA,MAAMG,UAAUvH,OAAOuH,WAAW;AAGlC,MAAMC,WAAW,CAACtf,QAAuBsN,OAAmCA,KAAItN,OAAOG,UAAU,CAACH,OAAOsN,EAAE,EAACiS,QAAQvf,OAAOsN,EAAE;AAC7H,MAAMkS,eAAe,CAACpQ,cAAyBA,cAAc,MAAM,MAAM;AAElE,WAASqQ,YACdC,YACAC,aACAC,YACAhd,IAIE;AAMF,UAAM4S,WAAWkK,WAAWH,OAAOI,cAAcD;AACjD,UAAMG,UAAUF;AAChB,UAAMG,QAAOF,WAAWL,OAAOI,cAAcC;AAC7C,UAAMG,MAAMC,sBAAsBH,SAASrK,QAAAA;AAC3C,UAAMyK,MAAMD,sBAAsBF,OAAMD,OAAAA;AAExC,QAAIK,MAAMH,OAAOA,MAAME;AACvB,QAAIE,MAAMF,OAAOF,MAAME;AAGvBC,UAAMlW,MAAMkW,GAAO,IAAA,IAAIA;AACvBC,UAAMnW,MAAMmW,GAAO,IAAA,IAAIA;AAEvB,UAAMC,KAAKxd,KAAIsd;AACf,UAAMG,KAAKzd,KAAIud;AAEf,WAAO;MACL3K,UAAU;QACRpC,GAAGyM,QAAQzM,IAAIgN,MAAMN,MAAK1M,IAAIoC,SAASpC;QACvCC,GAAGwM,QAAQxM,IAAI+M,MAAMN,MAAKzM,IAAImC,SAASnC;MACzC;MACAyM,MAAM;QACJ1M,GAAGyM,QAAQzM,IAAIiN,MAAMP,MAAK1M,IAAIoC,SAASpC;QACvCC,GAAGwM,QAAQxM,IAAIgN,MAAMP,MAAKzM,IAAImC,SAASnC;MACzC;IACF;EACF;AAKA,WAASiN,eAAetgB,QAAuBugB,QAAkBC,IAAc;AAC7E,UAAMC,YAAYzgB,OAAOG;AAEzB,QAAIugB,QAAgBC,OAAeC,MAAcC,kBAA0BC;AAC3E,QAAIC,aAAazB,SAAStf,QAAQ,CAAA;AAClC,aAASsN,KAAI,GAAGA,KAAImT,YAAY,GAAG,EAAEnT,IAAG;AACtCwT,qBAAeC;AACfA,mBAAazB,SAAStf,QAAQsN,KAAI,CAAA;AAClC,UAAI,CAACwT,gBAAgB,CAACC,YAAY;AAChC;;AAGF,UAAIC,aAAaT,OAAOjT,EAAE,GAAE,GAAG+R,OAAU,GAAA;AACvCmB,WAAGlT,EAAE,IAAGkT,GAAGlT,KAAI,CAAA,IAAK;AACpB;;AAGFoT,eAASF,GAAGlT,EAAAA,IAAKiT,OAAOjT,EAAE;AAC1BqT,cAAQH,GAAGlT,KAAI,CAAA,IAAKiT,OAAOjT,EAAE;AAC7BuT,yBAAmB3f,KAAK8B,IAAI0d,QAAQ,CAAA,IAAKxf,KAAK8B,IAAI2d,OAAO,CAAA;AACzD,UAAIE,oBAAoB,GAAG;AACzB;;AAGFD,aAAO,IAAI1f,KAAK0D,KAAKic,gBAAAA;AACrBL,SAAGlT,EAAE,IAAGoT,SAASE,OAAOL,OAAOjT,EAAE;AACjCkT,SAAGlT,KAAI,CAAE,IAAGqT,QAAQC,OAAOL,OAAOjT,EAAE;IACtC;EACF;AAEA,WAAS2T,gBAAgBjhB,QAAuBwgB,IAAcpR,YAAuB,KAAK;AACxF,UAAM8R,YAAY1B,aAAapQ,SAAAA;AAC/B,UAAMqR,YAAYzgB,OAAOG;AACzB,QAAIsJ,OAAe0X,aAAkCL;AACrD,QAAIC,aAAazB,SAAStf,QAAQ,CAAA;AAElC,aAASsN,KAAI,GAAGA,KAAImT,WAAW,EAAEnT,IAAG;AAClC6T,oBAAcL;AACdA,qBAAeC;AACfA,mBAAazB,SAAStf,QAAQsN,KAAI,CAAA;AAClC,UAAI,CAACwT,cAAc;AACjB;;AAGF,YAAMM,SAASN,aAAa1R,SAAU;AACtC,YAAMiS,SAASP,aAAaI,SAAU;AACtC,UAAIC,aAAa;AACf1X,iBAAS2X,SAASD,YAAY/R,SAAAA,KAAc;AAC5C0R,qBAAa,MAAM1R,WAAW,IAAIgS,SAAS3X;AAC3CqX,qBAAa,MAAMI,WAAW,IAAIG,SAAS5X,QAAQ+W,GAAGlT,EAAE;;AAE1D,UAAIyT,YAAY;AACdtX,iBAASsX,WAAW3R,SAAU,IAAGgS,UAAU;AAC3CN,qBAAa,MAAM1R,WAAW,IAAIgS,SAAS3X;AAC3CqX,qBAAa,MAAMI,WAAW,IAAIG,SAAS5X,QAAQ+W,GAAGlT,EAAE;;IAE5D;EACF;AAQO,WAASgU,oBAAoBthB,QAAuBoP,YAAuB,KAAK;AACrF,UAAM8R,YAAY1B,aAAapQ,SAAAA;AAC/B,UAAMqR,YAAYzgB,OAAOG;AACzB,UAAMogB,SAAmBzC,MAAM2C,SAAW1L,EAAAA,KAAK,CAAA;AAC/C,UAAMyL,KAAe1C,MAAM2C,SAAAA;AAG3B,QAAInT,IAAG6T,aAAkCL;AACzC,QAAIC,aAAazB,SAAStf,QAAQ,CAAA;AAElC,SAAKsN,KAAI,GAAGA,KAAImT,WAAW,EAAEnT,IAAG;AAC9B6T,oBAAcL;AACdA,qBAAeC;AACfA,mBAAazB,SAAStf,QAAQsN,KAAI,CAAA;AAClC,UAAI,CAACwT,cAAc;AACjB;;AAGF,UAAIC,YAAY;AACd,cAAMQ,aAAaR,WAAW3R,SAAAA,IAAa0R,aAAa1R,SAAU;AAGlEmR,eAAOjT,EAAE,IAAGiU,eAAe,KAAKR,WAAWG,SAAAA,IAAaJ,aAAaI,SAAAA,KAAcK,aAAa;;AAElGf,SAAGlT,EAAE,IAAG,CAAC6T,cAAcZ,OAAOjT,EAAE,IAC5B,CAACyT,aAAaR,OAAOjT,KAAI,CAAA,IACtBkU,KAAKjB,OAAOjT,KAAI,CAAA,CAAE,MAAMkU,KAAKjB,OAAOjT,EAAE,CAAA,IAAK,KACzCiT,OAAOjT,KAAI,CAAA,IAAKiT,OAAOjT,EAAE,KAAI;IACxC;AAEAgT,mBAAetgB,QAAQugB,QAAQC,EAAAA;AAE/BS,oBAAgBjhB,QAAQwgB,IAAIpR,SAAAA;EAC9B;AAEA,WAASqS,gBAAgBC,IAAY7gB,MAAaC,MAAa;AAC7D,WAAOI,KAAKJ,IAAII,KAAKL,IAAI6gB,IAAI5gB,IAAMD,GAAAA,IAAAA;EACrC;AAEA,WAAS8gB,gBAAgB3hB,QAAuBmV,MAAiB;AAC/D,QAAI7H,IAAG0E,MAAMtQ,QAAOkgB,QAAQC;AAC5B,QAAIC,aAAa5M,eAAelV,OAAO,CAAA,GAAImV,IAAAA;AAC3C,SAAK7H,KAAI,GAAG0E,OAAOhS,OAAOG,QAAQmN,KAAI0E,MAAM,EAAE1E,IAAG;AAC/CuU,mBAAaD;AACbA,eAASE;AACTA,mBAAaxU,KAAI0E,OAAO,KAAKkD,eAAelV,OAAOsN,KAAI,CAAA,GAAI6H,IAAAA;AAC3D,UAAI,CAACyM,QAAQ;AACX;;AAEFlgB,MAAAA,SAAQ1B,OAAOsN,EAAE;AACjB,UAAIuU,YAAY;AACdngB,QAAAA,OAAMmU,OAAO4L,gBAAgB/f,OAAMmU,MAAMV,KAAKzV,MAAMyV,KAAKxV,KAAK;AAC9D+B,QAAAA,OAAMqU,OAAO0L,gBAAgB/f,OAAMqU,MAAMZ,KAAKnN,KAAKmN,KAAKlN,MAAM;;AAEhE,UAAI6Z,YAAY;AACdpgB,QAAAA,OAAMoU,OAAO2L,gBAAgB/f,OAAMoU,MAAMX,KAAKzV,MAAMyV,KAAKxV,KAAK;AAC9D+B,QAAAA,OAAMsU,OAAOyL,gBAAgB/f,OAAMsU,MAAMb,KAAKnN,KAAKmN,KAAKlN,MAAM;;IAElE;EACF;AAKO,WAAS8Z,2BACd/hB,QACAW,UACAwU,MACAtO,MACAuI,WACA;AACA,QAAI9B,IAAW0E,MAActQ,QAAoBsgB;AAGjD,QAAIrhB,SAAQF,UAAU;AACpBT,eAASA,OAAOme,OAAO,CAACuD,OAAO,CAACA,GAAGnC,IAAI;;AAGzC,QAAI5e,SAAQshB,2BAA2B,YAAY;AACjDX,0BAAoBthB,QAAQoP,SAAAA;WACvB;AACL,UAAI8S,QAAOrb,OAAO7G,OAAOA,OAAOG,SAAS,CAAE,IAAGH,OAAO,CAAE;AACvD,WAAKsN,KAAI,GAAG0E,OAAOhS,OAAOG,QAAQmN,KAAI0E,MAAM,EAAE1E,IAAG;AAC/C5L,QAAAA,SAAQ1B,OAAOsN,EAAE;AACjB0U,wBAAgBvC,YACdyC,OACAxgB,QACA1B,OAAOkB,KAAKL,IAAIyM,KAAI,GAAG0E,QAAQnL,OAAO,IAAI,EAAA,IAAMmL,IAAK,GACrDrR,SAAQwhB,OAAO;AAEjBzgB,QAAAA,OAAMmU,OAAOmM,cAAcxM,SAASpC;AACpC1R,QAAAA,OAAMqU,OAAOiM,cAAcxM,SAASnC;AACpC3R,QAAAA,OAAMoU,OAAOkM,cAAclC,KAAK1M;AAChC1R,QAAAA,OAAMsU,OAAOgM,cAAclC,KAAKzM;AAChC6O,QAAAA,QAAOxgB;MACT;;AAGF,QAAIf,SAAQghB,iBAAiB;AAC3BA,sBAAgB3hB,QAAQmV,IAAAA;;EAE5B;ACtNO,WAASiN,kBAA2B;AACzC,WAAO,OAAOhkB,WAAW,eAAe,OAAOikB,aAAa;EAC9D;AAKO,WAASC,eAAeC,SAA+C;AAC5E,QAAIhE,SAASgE,QAAQC;AACrB,QAAIjE,UAAUA,OAAO1Y,SAAQ,MAAO,uBAAuB;AACzD0Y,eAAUA,OAAsBkE;;AAElC,WAAOlE;EACT;AAOA,WAASmE,cAAcC,YAA6BzV,MAAmB0V,gBAAwB;AAC7F,QAAIC;AACJ,QAAI,OAAOF,eAAe,UAAU;AAClCE,sBAAgBtJ,SAASoJ,YAAY,EAAA;AAErC,UAAIA,WAAWG,QAAQ,GAAA,MAAS,IAAI;AAElCD,wBAAgB,gBAAiB,MAAO3V,KAAKsV,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,QAA6B7U,OAAe8U,QAA4B;AAClG,UAAMC,SAAS,CAAA;AACfD,aAASA,SAAS,MAAMA,SAAS;AACjC,aAASpW,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1B,YAAMsW,MAAML,UAAUjW,EAAE;AACxBqW,aAAOC,GAAI,IAAGC,WAAWJ,OAAO7U,QAAQ,MAAMgV,MAAMF,MAAAA,CAAO,KAAK;IAClE;AACAC,WAAOjY,QAAQiY,OAAOjkB,OAAOikB,OAAOhkB;AACpCgkB,WAAOzQ,SAASyQ,OAAO3b,MAAM2b,OAAO1b;AACpC,WAAO0b;EACT;AAEA,MAAMG,eAAe,CAAC1Q,IAAWC,IAAWxC,YACzCuC,KAAI,KAAKC,KAAI,OAAO,CAACxC,UAAU,CAAC,OAAwBkT;AAO3D,WAASC,kBACPC,IACAnR,QAKE;AACF,UAAMoR,WAAUD,GAAkBC;AAClC,UAAMC,SAAUD,YAAWA,SAAQ/jB,SAAS+jB,SAAQ,CAAE,IAAGD;AACzD,UAAM,EAACG,SAASC,QAAAA,IAAWF;AAC3B,QAAIG,MAAM;AACV,QAAIlR,IAAGC;AACP,QAAIyQ,aAAaM,SAASC,SAASJ,GAAEpT,MAAM,GAAG;AAC5CuC,MAAAA,KAAIgR;AACJ/Q,MAAAA,KAAIgR;WACC;AACL,YAAMvP,OAAOhC,OAAOyR,sBAAqB;AACzCnR,MAAAA,KAAI+Q,OAAOK,UAAU1P,KAAKpV;AAC1B2T,MAAAA,KAAI8Q,OAAOM,UAAU3P,KAAK9M;AAC1Bsc,YAAM;;AAER,WAAO;MAAClR,GAAAA;MAAGC,GAAAA;MAAGiR;IAAG;EACnB;AASO,WAASI,oBACdC,OACApb,OAC0B;AAC1B,QAAI,YAAYob,OAAO;AACrB,aAAOA;;AAGT,UAAM,EAAC7R,QAAQJ,wBAAAA,IAA2BnJ;AAC1C,UAAMqF,QAAQmU,kBAAiBjQ,MAAAA;AAC/B,UAAM8R,YAAYhW,MAAMiW,cAAc;AACtC,UAAMC,WAAWtB,mBAAmB5U,OAAO,SAAA;AAC3C,UAAMmW,UAAUvB,mBAAmB5U,OAAO,UAAU,OAAA;AACpD,UAAM,EAACwE,GAAAA,IAAGC,GAAAA,IAAGiR,IAAG,IAAIN,kBAAkBW,OAAO7R,MAAAA;AAC7C,UAAMU,UAAUsR,SAASplB,QAAQ4kB,OAAOS,QAAQrlB;AAChD,UAAM+T,UAAUqR,SAAS9c,OAAOsc,OAAOS,QAAQ/c;AAE/C,QAAI,EAAC0D,OAAAA,QAAOwH,QAAAA,QAAAA,IAAU3J;AACtB,QAAIqb,WAAW;AACblZ,MAAAA,UAASoZ,SAASpZ,QAAQqZ,QAAQrZ;AAClCwH,MAAAA,WAAU4R,SAAS5R,SAAS6R,QAAQ7R;;AAEtC,WAAO;MACLE,GAAGlS,KAAK0R,OAAOQ,KAAII,WAAW9H,SAAQoH,OAAOpH,QAAQgH,uBAAAA;MACrDW,GAAGnS,KAAK0R,OAAOS,KAAII,WAAWP,UAASJ,OAAOI,SAASR,uBAAAA;IACzD;EACF;AAEA,WAASsS,iBAAiBlS,QAA2BpH,QAAewH,SAAgC;AAClG,QAAI0E,UAAkBqN;AAEtB,QAAIvZ,WAAUjF,UAAayM,YAAWzM,QAAW;AAC/C,YAAMye,YAAYpS,UAAUwP,eAAexP,MAAAA;AAC3C,UAAI,CAACoS,WAAW;AACdxZ,QAAAA,SAAQoH,OAAOqS;AACfjS,QAAAA,UAASJ,OAAOsS;aACX;AACL,cAAMtQ,OAAOoQ,UAAUX,sBAAqB;AAC5C,cAAMc,iBAAiBtC,kBAAiBmC,SAAAA;AACxC,cAAMI,kBAAkB9B,mBAAmB6B,gBAAgB,UAAU,OAAA;AACrE,cAAME,mBAAmB/B,mBAAmB6B,gBAAgB,SAAA;AAC5D3Z,QAAAA,SAAQoJ,KAAKpJ,QAAQ6Z,iBAAiB7Z,QAAQ4Z,gBAAgB5Z;AAC9DwH,QAAAA,UAAS4B,KAAK5B,SAASqS,iBAAiBrS,SAASoS,gBAAgBpS;AACjE0E,mBAAW8K,cAAc2C,eAAezN,UAAUsN,WAAW,aAAA;AAC7DD,oBAAYvC,cAAc2C,eAAeJ,WAAWC,WAAW,cAAA;;;AAGnE,WAAO;MACLxZ,OAAAA;MACAwH,QAAAA;MACA0E,UAAUA,YAAY4N;MACtBP,WAAWA,aAAaO;IAC1B;EACF;AAEA,MAAMC,SAAS,CAAC7d,OAAc1G,KAAK0R,MAAMhL,KAAI,EAAM,IAAA;AAG5C,WAAS8d,eACd5S,QACA6S,SACAC,UACAC,aACmC;AACnC,UAAMjX,QAAQmU,kBAAiBjQ,MAAAA;AAC/B,UAAMgT,UAAUtC,mBAAmB5U,OAAO,QAAA;AAC1C,UAAMgJ,WAAW8K,cAAc9T,MAAMgJ,UAAU9E,QAAQ,aAAkB0S,KAAAA;AACzE,UAAMP,YAAYvC,cAAc9T,MAAMqW,WAAWnS,QAAQ,cAAmB0S,KAAAA;AAC5E,UAAMO,gBAAgBf,iBAAiBlS,QAAQ6S,SAASC,QAAAA;AACxD,QAAI,EAACla,OAAAA,QAAOwH,QAAAA,QAAAA,IAAU6S;AAEtB,QAAInX,MAAMiW,cAAc,eAAe;AACrC,YAAME,UAAUvB,mBAAmB5U,OAAO,UAAU,OAAA;AACpD,YAAMkW,WAAWtB,mBAAmB5U,OAAO,SAAA;AAC3ClD,MAAAA,UAASoZ,SAASpZ,QAAQqZ,QAAQrZ;AAClCwH,MAAAA,WAAU4R,SAAS5R,SAAS6R,QAAQ7R;;AAEtCxH,IAAAA,SAAQxK,KAAKJ,IAAI,GAAG4K,SAAQoa,QAAQpa,KAAK;AACzCwH,IAAAA,UAAShS,KAAKJ,IAAI,GAAG+kB,cAAcna,SAAQma,cAAc3S,UAAS4S,QAAQ5S,MAAM;AAChFxH,IAAAA,SAAQ+Z,OAAOvkB,KAAKL,IAAI6K,QAAOkM,UAAUmO,cAAcnO,QAAQ,CAAA;AAC/D1E,IAAAA,UAASuS,OAAOvkB,KAAKL,IAAIqS,SAAQ+R,WAAWc,cAAcd,SAAS,CAAA;AACnE,QAAIvZ,UAAS,CAACwH,SAAQ;AAGpBA,MAAAA,UAASuS,OAAO/Z,SAAQ,CAAA;;AAG1B,UAAMsa,iBAAiBL,YAAYlf,UAAamf,aAAanf;AAE7D,QAAIuf,kBAAkBH,eAAeE,cAAc7S,UAAUA,UAAS6S,cAAc7S,QAAQ;AAC1FA,MAAAA,UAAS6S,cAAc7S;AACvBxH,MAAAA,SAAQ+Z,OAAOvkB,KAAK+I,MAAMiJ,UAAS2S,WAAAA,CAAAA;;AAGrC,WAAO;MAACna,OAAAA;MAAOwH,QAAAA;IAAM;EACvB;AAQO,WAAS+S,YACd1c,OACA2c,YACAC,YACgB;AAChB,UAAMC,aAAaF,cAAc;AACjC,UAAMG,eAAenlB,KAAK+I,MAAMV,MAAM2J,SAASkT,UAAAA;AAC/C,UAAME,cAAcplB,KAAK+I,MAAMV,MAAMmC,QAAQ0a,UAAAA;AAE5C7c,UAAuB2J,SAAShS,KAAK+I,MAAMV,MAAM2J,MAAM;AACvD3J,UAAuBmC,QAAQxK,KAAK+I,MAAMV,MAAMmC,KAAK;AAEtD,UAAMoH,SAASvJ,MAAMuJ;AAKrB,QAAIA,OAAOlE,UAAUuX,cAAe,CAACrT,OAAOlE,MAAMsE,UAAU,CAACJ,OAAOlE,MAAMlD,QAAS;AACjFoH,aAAOlE,MAAMsE,SAAS,GAAG3J,MAAM2J;AAC/BJ,aAAOlE,MAAMlD,QAAQ,GAAGnC,MAAMmC;;AAGhC,QAAInC,MAAMmJ,4BAA4B0T,cAC/BtT,OAAOI,WAAWmT,gBAClBvT,OAAOpH,UAAU4a,aAAa;AAClC/c,YAAuBmJ,0BAA0B0T;AAClDtT,aAAOI,SAASmT;AAChBvT,aAAOpH,QAAQ4a;AACf/c,YAAM0F,IAAIsX,aAAaH,YAAY,GAAG,GAAGA,YAAY,GAAG,CAAA;AACxD,aAAO;;AAET,WAAO;EACT;AAOaI,MAAAA,+BAAgC,WAAW;AACtD,QAAIC,mBAAmB;AACvB,QAAI;AACF,YAAM9lB,WAAU;QACd,IAAI+lB,UAAU;AACZD,6BAAmB;AACnB,iBAAO;QACT;MACF;AAEA,UAAIrE,gBAAmB,GAAA;AACrBhkB,eAAOuoB,iBAAiB,QAAQ,MAAMhmB,QAAAA;AACtCvC,eAAOwoB,oBAAoB,QAAQ,MAAMjmB,QAAAA;;IAE7C,SAASsjB,IAAP;IAEF;AACA,WAAOwC;EACT,EAAK;AAYE,WAASI,aACd7D,SACAK,UACoB;AACpB,UAAM1d,QAAQwd,SAASH,SAASK,QAAAA;AAChC,UAAM7K,WAAU7S,SAASA,MAAM8S,MAAM,mBAAA;AACrC,WAAOD,WAAU,CAACA,SAAQ,CAAA,IAAK/R;EACjC;ACtRO,WAASqgB,aAAaC,IAAWC,KAAWpkB,IAAW0M,MAAO;AACnE,WAAO;MACL8D,GAAG2T,GAAG3T,IAAIxQ,MAAKokB,IAAG5T,IAAI2T,GAAG3T;MACzBC,GAAG0T,GAAG1T,IAAIzQ,MAAKokB,IAAG3T,IAAI0T,GAAG1T;IAC3B;EACF;AAKO,WAAS4T,sBACdF,IACAC,KACApkB,IAAW0M,MACX;AACA,WAAO;MACL8D,GAAG2T,GAAG3T,IAAIxQ,MAAKokB,IAAG5T,IAAI2T,GAAG3T;MACzBC,GAAG/D,SAAS,WAAW1M,KAAI,MAAMmkB,GAAG1T,IAAI2T,IAAG3T,IACvC/D,SAAS,UAAU1M,KAAI,IAAImkB,GAAG1T,IAAI2T,IAAG3T,IACnCzQ,KAAI,IAAIokB,IAAG3T,IAAI0T,GAAG1T;IAC1B;EACF;AAKO,WAAS6T,qBAAqBH,IAAiBC,KAAiBpkB,IAAW0M,MAAO;AACvF,UAAM6X,MAAM;MAAC/T,GAAG2T,GAAGjR;MAAMzC,GAAG0T,GAAG/Q;IAAI;AACnC,UAAMoR,MAAM;MAAChU,GAAG4T,IAAGnR;MAAMxC,GAAG2T,IAAGjR;IAAI;AACnC,UAAMsR,KAAIP,aAAaC,IAAII,KAAKvkB,EAAAA;AAChC,UAAM0kB,KAAIR,aAAaK,KAAKC,KAAKxkB,EAAAA;AACjC,UAAM2kB,KAAIT,aAAaM,KAAKJ,KAAIpkB,EAAAA;AAChC,UAAM4C,KAAIshB,aAAaO,IAAGC,IAAG1kB,EAAAA;AAC7B,UAAMqhB,KAAI6C,aAAaQ,IAAGC,IAAG3kB,EAAAA;AAC7B,WAAOkkB,aAAathB,IAAGye,IAAGrhB,EAAAA;EAC5B;AChCA,MAAM4kB,wBAAwB,SAASC,OAAe/b,QAA2B;AAC/E,WAAO;MACL0H,EAAEA,IAAG;AACH,eAAOqU,QAAQA,QAAQ/b,SAAQ0H;MACjC;MACAsU,SAASnU,IAAG;AACV7H,QAAAA,SAAQ6H;MACV;MACA8C,UAAUhX,OAAO;AACf,YAAIA,UAAU,UAAU;AACtB,iBAAOA;;AAET,eAAOA,UAAU,UAAU,SAAS;MACtC;MACAsoB,MAAMvU,IAAGzN,OAAO;AACd,eAAOyN,KAAIzN;MACb;MACAiiB,WAAWxU,IAAGyU,WAAW;AACvB,eAAOzU,KAAIyU;MACb;IACF;EACF;AAEA,MAAMC,wBAAwB,WAAuB;AACnD,WAAO;MACL1U,EAAEA,IAAG;AACH,eAAOA;MACT;MACAsU,SAASnU,IAAG;MAAA;MAEZ8C,UAAUhX,OAAO;AACf,eAAOA;MACT;MACAsoB,MAAMvU,IAAGzN,OAAO;AACd,eAAOyN,KAAIzN;MACb;MACAiiB,WAAWxU,IAAG2U,YAAY;AACxB,eAAO3U;MACT;IACF;EACF;AAEO,WAAS4U,cAAcpoB,KAAc6nB,OAAe/b,QAAe;AACxE,WAAO9L,MAAM4nB,sBAAsBC,OAAO/b,MAAAA,IAASoc,sBAAuB;EAC5E;AAEO,WAASG,sBAAsBhZ,KAA+BiZ,WAA0B;AAC7F,QAAItZ,OAA4BuZ;AAChC,QAAID,cAAc,SAASA,cAAc,OAAO;AAC9CtZ,cAAQK,IAAI6D,OAAOlE;AACnBuZ,iBAAW;QACTvZ,MAAM0U,iBAAiB,WAAA;QACvB1U,MAAMwZ,oBAAoB,WAAA;MAC3B;AAEDxZ,YAAMyZ,YAAY,aAAaH,WAAW,WAAA;AACzCjZ,UAAiDqZ,oBAAoBH;;EAE1E;AAEO,WAASI,qBAAqBtZ,KAA+BkZ,UAA6B;AAC/F,QAAIA,aAAa1hB,QAAW;AAC1B,aAAQwI,IAAiDqZ;AACzDrZ,UAAI6D,OAAOlE,MAAMyZ,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,WAAWzV,CAAAA,OAAKA;IAClB;EACF;AAEA,WAAS4V,iBAAiB,EAACzpB,OAAAA,QAAOC,KAAAA,MAAKY,OAAOyG,MAAM+H,MAAK,GAAG;AAC1D,WAAO;MACLrP,OAAOA,SAAQa;MACfZ,KAAKA,OAAMY;MACXyG,MAAMA,SAASrH,OAAMD,SAAQ,KAAKa,UAAU;MAC5CwO;IACF;EACF;AAEA,WAASqa,WAAWC,SAASlpB,QAAQ4K,QAAQ;AAC3C,UAAM,EAACyY,UAAU9jB,OAAO4pB,YAAY3pB,KAAK4pB,SAAQ,IAAIxe;AACrD,UAAM,EAAC6d,SAASI,UAAS,IAAIL,WAAWnF,QAAAA;AACxC,UAAMjjB,QAAQJ,OAAOG;AAErB,QAAI,EAACZ,OAAAA,QAAOC,KAAAA,MAAKqH,KAAAA,IAAQqiB;AACzB,QAAI5b,IAAG0E;AAEP,QAAInL,MAAM;AACRtH,MAAAA,UAASa;AACTZ,MAAAA,QAAOY;AACP,WAAKkN,KAAI,GAAG0E,OAAO5R,OAAOkN,KAAI0E,MAAM,EAAE1E,IAAG;AACvC,YAAI,CAACmb,QAAQI,UAAU7oB,OAAOT,SAAQa,KAAAA,EAAOijB,QAAAA,CAAS,GAAG8F,YAAYC,QAAW,GAAA;AAC9E;;AAEF7pB,QAAAA;AACAC,QAAAA;MACF;AACAD,MAAAA,UAASa;AACTZ,MAAAA,QAAOY;;AAGT,QAAIZ,OAAMD,QAAO;AACfC,MAAAA,QAAOY;;AAET,WAAO;MAACb,OAAAA;MAAOC,KAAAA;MAAKqH;MAAM+H,OAAOsa,QAAQta;IAAK;EAChD;AAgBO,WAASya,cAAcH,SAASlpB,QAAQ4K,QAAQ;AACrD,QAAI,CAACA,QAAQ;AACX,aAAO;QAACse;MAAQ;;AAGlB,UAAM,EAAC7F,UAAU9jB,OAAO4pB,YAAY3pB,KAAK4pB,SAAQ,IAAIxe;AACrD,UAAMxK,QAAQJ,OAAOG;AACrB,UAAM,EAACwoB,SAAAA,UAASF,SAASI,UAAS,IAAIL,WAAWnF,QAAAA;AACjD,UAAM,EAAC9jB,OAAAA,QAAOC,KAAAA,MAAKqH,MAAM+H,MAAAA,IAASqa,WAAWC,SAASlpB,QAAQ4K,MAAAA;AAE9D,UAAM+Y,SAAS,CAAA;AACf,QAAI2F,UAAS;AACb,QAAIC,WAAW;AACf,QAAI5jB,OAAOjE,QAAO8nB;AAElB,UAAMC,gBAAgB,MAAMhB,QAAQU,YAAYK,WAAW7jB,KAAUgjB,KAAAA,SAAQQ,YAAYK,SAAe,MAAA;AACxG,UAAME,cAAc,MAAMf,SAAQS,UAAUzjB,KAAAA,MAAW,KAAK8iB,QAAQW,UAAUI,WAAW7jB,KAAAA;AACzF,UAAMgkB,cAAc,MAAML,WAAUG,cAAAA;AACpC,UAAMG,aAAa,MAAM,CAACN,WAAUI,YAAAA;AAEpC,aAASpc,KAAI/N,QAAO2iB,QAAO3iB,QAAO+N,MAAK9N,MAAK,EAAE8N,IAAG;AAC/C5L,MAAAA,SAAQ1B,OAAOsN,KAAIlN,KAAM;AAEzB,UAAIsB,OAAM6d,MAAM;AACd;;AAGF5Z,cAAQkjB,UAAUnnB,OAAM2hB,QAAS,CAAA;AAEjC,UAAI1d,UAAU6jB,WAAW;AACvB;;AAGFF,MAAAA,UAASb,QAAQ9iB,OAAOwjB,YAAYC,QAAAA;AAEpC,UAAIG,aAAa,QAAQI,YAAe,GAAA;AACtCJ,mBAAWZ,SAAQhjB,OAAOwjB,UAAgB,MAAA,IAAI7b,KAAI4U;;AAGpD,UAAIqH,aAAa,QAAQK,WAAc,GAAA;AACrCjG,eAAOjS,KAAKsX,iBAAiB;UAACzpB,OAAOgqB;UAAU/pB,KAAK8N;UAAGzG;UAAMzG;UAAOwO;QAAK,CAAA,CAAA;AACzE2a,mBAAW;;AAEbrH,MAAAA,QAAO5U;AACPkc,kBAAY7jB;IACd;AAEA,QAAI4jB,aAAa,MAAM;AACrB5F,aAAOjS,KAAKsX,iBAAiB;QAACzpB,OAAOgqB;QAAU/pB,KAAAA;QAAKqH;QAAMzG;QAAOwO;MAAK,CAAA,CAAA;;AAGxE,WAAO+U;EACT;AAYO,WAASkG,eAAerT,MAAM5L,QAAQ;AAC3C,UAAM+Y,SAAS,CAAA;AACf,UAAMmG,WAAWtT,KAAKsT;AAEtB,aAASxc,KAAI,GAAGA,KAAIwc,SAAS3pB,QAAQmN,MAAK;AACxC,YAAMyc,MAAMV,cAAcS,SAASxc,EAAAA,GAAIkJ,KAAKxW,QAAQ4K,MAAAA;AACpD,UAAImf,IAAI5pB,QAAQ;AACdwjB,eAAOjS,KAAQqY,GAAAA,GAAAA;;IAEnB;AACA,WAAOpG;EACT;AAKA,WAASqG,gBAAgBhqB,QAAQI,OAAOyG,MAAMpG,UAAU;AACtD,QAAIlB,SAAQ;AACZ,QAAIC,OAAMY,QAAQ;AAElB,QAAIyG,QAAQ,CAACpG,UAAU;AAErB,aAAOlB,SAAQa,SAAS,CAACJ,OAAOT,MAAM,EAACggB,MAAM;AAC3ChgB,QAAAA;MACF;;AAIF,WAAOA,SAAQa,SAASJ,OAAOT,MAAM,EAACggB,MAAM;AAC1ChgB,MAAAA;IACF;AAGAA,IAAAA,UAASa;AAET,QAAIyG,MAAM;AAERrH,MAAAA,QAAOD;;AAGT,WAAOC,OAAMD,UAASS,OAAOR,OAAMY,KAAM,EAACmf,MAAM;AAC9C/f,MAAAA;IACF;AAGAA,IAAAA,QAAOY;AAEP,WAAO;MAACb,OAAAA;MAAOC,KAAAA;IAAG;EACpB;AASA,WAASyqB,cAAcjqB,QAAQT,QAAOuB,MAAK+F,MAAM;AAC/C,UAAMzG,QAAQJ,OAAOG;AACrB,UAAMwjB,SAAS,CAAA;AACf,QAAIuG,OAAO3qB;AACX,QAAI2iB,QAAOliB,OAAOT,MAAM;AACxB,QAAIC;AAEJ,SAAKA,OAAMD,SAAQ,GAAGC,QAAOsB,MAAK,EAAEtB,MAAK;AACvC,YAAM2qB,MAAMnqB,OAAOR,OAAMY,KAAM;AAC/B,UAAI+pB,IAAI5K,QAAQ4K,IAAIC,MAAM;AACxB,YAAI,CAAClI,MAAK3C,MAAM;AACd1Y,iBAAO;AACP8c,iBAAOjS,KAAK;YAACnS,OAAOA,SAAQa;YAAOZ,MAAMA,OAAM,KAAKY;YAAOyG;UAAI,CAAA;AAE/DtH,UAAAA,SAAQ2qB,OAAOC,IAAIC,OAAO5qB,OAAM;;aAE7B;AACL0qB,eAAO1qB;AACP,YAAI0iB,MAAK3C,MAAM;AACbhgB,UAAAA,SAAQC;;;AAGZ0iB,MAAAA,QAAOiI;IACT;AAEA,QAAID,SAAS,MAAM;AACjBvG,aAAOjS,KAAK;QAACnS,OAAOA,SAAQa;QAAOZ,KAAK0qB,OAAO9pB;QAAOyG;MAAI,CAAA;;AAG5D,WAAO8c;EACT;AAUO,WAAS0G,iBAAiB7T,MAAM8T,gBAAgB;AACrD,UAAMtqB,SAASwW,KAAKxW;AACpB,UAAMS,WAAW+V,KAAK7V,QAAQF;AAC9B,UAAML,QAAQJ,OAAOG;AAErB,QAAI,CAACC,OAAO;AACV,aAAO,CAAA;;AAGT,UAAMyG,OAAO,CAAC,CAAC2P,KAAK+T;AACpB,UAAM,EAAChrB,OAAAA,QAAOC,KAAAA,KAAAA,IAAOwqB,gBAAgBhqB,QAAQI,OAAOyG,MAAMpG,QAAAA;AAE1D,QAAIA,aAAa,MAAM;AACrB,aAAO+pB,cAAchU,MAAM;QAAC;UAACjX,OAAAA;UAAOC,KAAAA;UAAKqH;QAAI;MAAE,GAAE7G,QAAQsqB,cAAAA;;AAG3D,UAAMxpB,OAAMtB,OAAMD,SAAQC,OAAMY,QAAQZ;AACxC,UAAMirB,eAAe,CAAC,CAACjU,KAAKkU,aAAanrB,WAAU,KAAKC,SAAQY,QAAQ;AACxE,WAAOoqB,cAAchU,MAAMyT,cAAcjqB,QAAQT,QAAOuB,MAAK2pB,YAAAA,GAAezqB,QAAQsqB,cAAAA;EACtF;AAQA,WAASE,cAAchU,MAAMsT,UAAU9pB,QAAQsqB,gBAAgB;AAC7D,QAAI,CAACA,kBAAkB,CAACA,eAAe7N,cAAc,CAACzc,QAAQ;AAC5D,aAAO8pB;;AAET,WAAOa,gBAAgBnU,MAAMsT,UAAU9pB,QAAQsqB,cAAAA;EACjD;AASA,WAASK,gBAAgBnU,MAAMsT,UAAU9pB,QAAQsqB,gBAAgB;AAC/D,UAAMM,eAAepU,KAAKqU,OAAO9X,WAAU;AAC3C,UAAM+X,YAAYC,UAAUvU,KAAK7V,OAAO;AACxC,UAAM,EAACqqB,eAAeC,cAActqB,SAAS,EAACF,SAAQ,EAAC,IAAI+V;AAC3D,UAAMpW,QAAQJ,OAAOG;AACrB,UAAMwjB,SAAS,CAAA;AACf,QAAIuH,YAAYJ;AAChB,QAAIvrB,SAAQuqB,SAAS,CAAA,EAAGvqB;AACxB,QAAI+N,KAAI/N;AAER,aAAS4rB,SAASroB,IAAGmhB,IAAGmH,IAAGC,IAAI;AAC7B,YAAMC,MAAM7qB,WAAW,KAAK;AAC5B,UAAIqC,OAAMmhB,IAAG;AACX;;AAGFnhB,MAAAA,MAAK1C;AACL,aAAOJ,OAAO8C,KAAI1C,KAAM,EAACmf,MAAM;AAC7Bzc,QAAAA,MAAKwoB;MACP;AACA,aAAOtrB,OAAOikB,KAAI7jB,KAAM,EAACmf,MAAM;AAC7B0E,QAAAA,MAAKqH;MACP;AACA,UAAIxoB,KAAI1C,UAAU6jB,KAAI7jB,OAAO;AAC3BujB,eAAOjS,KAAK;UAACnS,OAAOuD,KAAI1C;UAAOZ,KAAKykB,KAAI7jB;UAAOyG,MAAMukB;UAAGxc,OAAOyc;QAAE,CAAA;AACjEH,oBAAYG;AACZ9rB,QAAAA,SAAQ0kB,KAAI7jB;;IAEhB;AAEA,eAAW8oB,WAAWY,UAAU;AAC9BvqB,MAAAA,SAAQkB,WAAWlB,SAAQ2pB,QAAQ3pB;AACnC,UAAI2iB,QAAOliB,OAAOT,SAAQa,KAAM;AAChC,UAAIwO;AACJ,WAAKtB,KAAI/N,SAAQ,GAAG+N,MAAK4b,QAAQ1pB,KAAK8N,MAAK;AACzC,cAAMoU,KAAK1hB,OAAOsN,KAAIlN,KAAM;AAC5BwO,gBAAQmc,UAAUT,eAAe7N,WAAWrC,cAAcwQ,cAAc;UACtEhlB,MAAM;UACN2lB,IAAIrJ;UACJ6E,IAAIrF;UACJ8J,cAAcle,KAAI,KAAKlN;UACvBqrB,aAAane,KAAIlN;UACjB6qB;QACF,CAAA,CAAA,CAAA;AACA,YAAIS,aAAa9c,OAAOsc,SAAY,GAAA;AAClCC,mBAAS5rB,QAAO+N,KAAI,GAAG4b,QAAQriB,MAAMqkB,SAAAA;;AAEvChJ,QAAAA,QAAOR;AACPwJ,oBAAYtc;MACd;AACA,UAAIrP,SAAQ+N,KAAI,GAAG;AACjB6d,iBAAS5rB,QAAO+N,KAAI,GAAG4b,QAAQriB,MAAMqkB,SAAAA;;IAEzC;AAEA,WAAOvH;EACT;AAEA,WAASoH,UAAUpqB,UAAS;AAC1B,WAAO;MACLqN,iBAAiBrN,SAAQqN;MACzB2d,gBAAgBhrB,SAAQgrB;MACxBC,YAAYjrB,SAAQirB;MACpBC,kBAAkBlrB,SAAQkrB;MAC1BC,iBAAiBnrB,SAAQmrB;MACzB9W,aAAarU,SAAQqU;MACrB/G,aAAatN,SAAQsN;IACvB;EACF;AAEA,WAASyd,aAAa9c,OAAOsc,WAAW;AACtC,QAAI,CAACA,WAAW;AACd,aAAO;;AAET,UAAMrZ,SAAQ,CAAA;AACd,UAAMka,WAAW,SAAS5e,MAAKxH,OAAO;AACpC,UAAI,CAACD,oBAAoBC,KAAQ,GAAA;AAC/B,eAAOA;;AAET,UAAI,CAACkM,OAAMtH,SAAS5E,KAAQ,GAAA;AAC1BkM,QAAAA,OAAMH,KAAK/L,KAAAA;;AAEb,aAAOkM,OAAMiR,QAAQnd,KAAAA;IACvB;AACA,WAAO4C,KAAKC,UAAUoG,OAAOmd,QAAAA,MAAcxjB,KAAKC,UAAU0iB,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,OAAOC,IAAI;AACvB,WAAKR,UAAUjC,KAAAA,EAAOK,UAAUmC,KAAAA,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,OAAO,KAAKD;AAClB,YAAMxB,MAAK,KAAK6B;AAChB,UAAI5B;AAEJ,WAAK9B,UAAU4B,UAASC,QAAOyB,QAASQ,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,QAAQxB,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,SAAQ;AACzB,WAAKC,SAAStG;AACd,WAAKuG,cAAc,oBAAI5G,IAAAA;AACvB,WAAK6G,UAAUH,OAAAA;IACjB;IAEAG,UAAUH,SAAQ;AAChB,UAAI,CAACI,SAASJ,OAAS,GAAA;AACrB;;AAGF,YAAMK,oBAAmBC,OAAOC,KAAKC,SAASC,SAAS;AACvD,YAAMC,gBAAgB,KAAKR;AAE3BI,aAAOK,oBAAoBX,OAAAA,EAAQ7F,QAAQyG,CAAAA,SAAO;AAChD,cAAM5C,MAAMgC,QAAOY,IAAI;AACvB,YAAI,CAACR,SAASpC,GAAM,GAAA;AAClB;;AAEF,cAAM6B,WAAW,CAAA;AACjB,mBAAWgB,WAAUR,mBAAkB;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,QAAO,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,WAAUC,qBAAqBnD,QAAQiD,UAAAA;AAC7C,UAAI,CAACC,UAAS;AACZ,eAAO,CAAA;;AAGT,YAAME,aAAa,KAAKC,kBAAkBH,UAASD,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,WAAUlD,OAAOkD;AACrB,QAAI,CAACA,UAAS;AACZlD,aAAOkD,UAAUD;AACjB;;AAEF,QAAIC,SAAQI,SAAS;AAGnBtD,aAAOkD,UAAUA,WAAUb,OAAOyB,OAAO,CAAA,GAAIZ,UAAS;QAACI,SAAS;QAAOE,aAAa,CAAA;MAAE,CAAA;;AAExF,WAAON;EACT;ACtJA,WAASgB,UAAUC,QAAOC,iBAAiB;AACzC,UAAMC,OAAOF,UAASA,OAAMjB,WAAW,CAAA;AACvC,UAAMoB,UAAUD,KAAKC;AACrB,UAAM/H,OAAM8H,KAAK9H,QAAQf,SAAY4I,kBAAkB;AACvD,UAAM1F,OAAM2F,KAAK3F,QAAQlD,SAAY4I,kBAAkB;AACvD,WAAO;MACL5H,OAAO8H,UAAU5F,OAAMnC;MACvBgI,KAAKD,UAAU/H,OAAMmC;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,WAAU,CAAA,GAAI;AACvD,UAAMZ,OAAOwD,MAAMxD;AACnB,UAAM0D,aAAa9C,SAAQ+C,SAAS;AACpC,QAAI7I,IAAGuI,MAAMO,cAAcC;AAE3B,QAAIvC,UAAU,MAAM;AAClB;;AAGF,QAAIwC,QAAQ;AACZ,SAAKhJ,KAAI,GAAGuI,OAAOrD,KAAKnF,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7C8I,qBAAe,CAAC5D,KAAKlF,EAAE;AACvB,UAAI8I,iBAAiBH,SAAS;AAC5BK,gBAAQ;AACR,YAAIlD,SAAQe,KAAK;AACf;;AAEF;;AAEFkC,mBAAaL,MAAM9C,OAAOkD,YAAa;AACvC,UAAIG,eAASF,UAAgBH,MAAAA,cAAepC,UAAU,KAAK0C,KAAK1C,KAAAA,MAAW0C,KAAKH,UAAAA,IAAe;AAC7FvC,iBAASuC;;IAEb;AAEA,QAAI,CAACC,SAAS,CAAClD,SAAQe,KAAK;AAC1B,aAAO;;AAGT,WAAOL;EACT;AAEA,WAAS2C,yBAAyBC,OAAMC,MAAM;AAC5C,UAAM,EAACC,QAAQC,OAAAA,IAAUF;AACzB,UAAMG,WAAWF,OAAOG,SAAS,MAAM,MAAM;AAC7C,UAAMC,WAAWH,OAAOE,SAAS,MAAM,MAAM;AAC7C,UAAMvE,OAAOD,OAAOC,KAAKkE,KAAAA;AACzB,UAAMO,QAAQ,IAAIC,MAAM1E,KAAKnF,MAAM;AACnC,QAAIC,IAAGuI,MAAMhD;AACb,SAAKvF,KAAI,GAAGuI,OAAOrD,KAAKnF,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7CuF,MAAAA,OAAML,KAAKlF,EAAE;AACb2J,YAAM3J,EAAAA,IAAK;QACT,CAACwJ,QAAAA,GAAWjE;QACZ,CAACmE,QAAS,GAAEN,MAAK7D,IAAI;MACvB;IACF;AACA,WAAOoE;EACT;AAEA,WAASE,UAAU9C,QAAOsC,MAAM;AAC9B,UAAMS,UAAU/C,UAASA,OAAMjB,QAAQgE;AACvC,WAAOA,WAAYA,YAAY1L,UAAaiL,KAAKX,UAAUtK;EAC7D;AAEA,WAAS2L,YAAYC,YAAYC,YAAYZ,MAAM;AACjD,WAAO,GAAGW,WAAWE,MAAMD,WAAWC,MAAMb,KAAKX,SAASW,KAAK5K;EACjE;AAEA,WAAS0L,cAAcpD,QAAO;AAC5B,UAAM,EAAC5H,KAAAA,MAAKmC,KAAAA,MAAK8I,YAAYC,WAAU,IAAItD,OAAMoD,cAAa;AAC9D,WAAO;MACLhL,KAAKiL,aAAajL,OAAMmL,OAAOC;MAC/BjJ,KAAK+I,aAAa/I,OAAMgJ,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,oBAAoBpC,OAAOa,QAAQwB,UAAUtM,MAAM;AAC1D,eAAW4K,QAAQE,OAAOyB,wBAAwBvM,IAAAA,EAAMyI,QAAO,GAAI;AACjE,YAAMV,QAAQkC,MAAMW,KAAKb,KAAK;AAC9B,UAAI,YAAahC,QAAQ,KAAO,CAACuE,YAAYvE,QAAQ,GAAI;AACvD,eAAO6C,KAAKb;;IAEhB;AAEA,WAAO;EACT;AAEA,WAASyC,aAAaC,YAAYC,QAAQ;AACxC,UAAM,EAAC7M,OAAO8M,aAAa/B,KAAAA,IAAQ6B;AACnC,UAAMR,SAASpM,MAAM+M,YAAY/M,MAAM+M,UAAU,CAAA;AACjD,UAAM,EAAC/B,QAAQC,QAAQf,OAAOM,aAAAA,IAAgBO;AAC9C,UAAMiC,QAAQhC,OAAOG;AACrB,UAAM8B,QAAQhC,OAAOE;AACrB,UAAMlE,OAAMwE,YAAYT,QAAQC,QAAQF,IAAAA;AACxC,UAAMd,OAAO4C,OAAOpL;AACpB,QAAI2I;AAEJ,aAAS1I,KAAI,GAAGA,KAAIuI,MAAM,EAAEvI,IAAG;AAC7B,YAAME,OAAOiL,OAAOnL,EAAE;AACtB,YAAM,EAAC,CAACsL,KAAAA,GAAQ9C,QAAO,CAAC+C,KAAM,GAAE/E,MAAK,IAAItG;AACzC,YAAMsL,aAAatL,KAAKmL,YAAYnL,KAAKmL,UAAU,CAAA;AACnD3C,cAAQ8C,WAAWD,KAAAA,IAASd,iBAAiBC,QAAQnF,MAAKiD,MAAAA;AAC1DE,YAAMI,YAAAA,IAAgBtC;AAEtBkC,YAAM+C,OAAOX,oBAAoBpC,OAAOa,QAAQ,MAAMF,KAAK5K,IAAI;AAC/DiK,YAAMgD,UAAUZ,oBAAoBpC,OAAOa,QAAQ,OAAOF,KAAK5K,IAAI;AAEnE,YAAMkN,eAAejD,MAAMkD,kBAAkBlD,MAAMkD,gBAAgB,CAAA;AACnED,mBAAa7C,YAAAA,IAAgBtC;IAC/B;EACF;AAEA,WAASqF,gBAAgBvN,OAAOmL,MAAM;AACpC,UAAMqC,UAASxN,MAAMwN;AACrB,WAAO7G,OAAOC,KAAK4G,OAAAA,EAAQC,OAAOxG,CAAAA,SAAOuG,QAAOvG,IAAI,EAACkE,SAASA,IAAAA,EAAMuC,MAAK;EAC3E;AAEA,WAASC,qBAAqBC,QAAQ1D,QAAO;AAC3C,WAAO2D,cAAcD,QACnB;MACEnI,QAAQ;MACRqI,SAAShO;MACT0K,cAAcN;MACdA,OAAAA;MACAK,MAAM;MACNpK,MAAM;IACR,CAAA;EAEJ;AAEA,WAAS4N,kBAAkBH,QAAQ1D,QAAO8D,SAAS;AACjD,WAAOH,cAAcD,QAAQ;MAC3BnI,QAAQ;MACRwI,WAAW/D;MACX2C,QAAQ/M;MACRoO,KAAKpO;MACLkO;MACA9D,OAAAA;MACAK,MAAM;MACNpK,MAAM;IACR,CAAA;EACF;AAEA,WAASgO,YAAYpD,MAAMvJ,OAAO;AAEhC,UAAMgJ,eAAeO,KAAK6B,WAAW1C;AACrC,UAAMiB,OAAOJ,KAAKE,UAAUF,KAAKE,OAAOE;AACxC,QAAI,CAACA,MAAM;AACT;;AAGF3J,YAAQA,SAASuJ,KAAKqD;AACtB,eAAWvB,UAAUrL,OAAO;AAC1B,YAAM4K,SAASS,OAAOE;AACtB,UAAI,CAACX,UAAUA,OAAOjB,IAAK,MAAKrL,UAAasM,OAAOjB,IAAAA,EAAMX,YAAAA,MAAkB1K,QAAW;AACrF;;AAEF,aAAOsM,OAAOjB,IAAK,EAACX,YAAa;AACjC,UAAI4B,OAAOjB,IAAK,EAACmC,kBAAkBxN,UAAasM,OAAOjB,IAAAA,EAAMmC,cAAc9C,YAAAA,MAAkB1K,QAAW;AACtG,eAAOsM,OAAOjB,IAAAA,EAAMmC,cAAc9C,YAAa;;IAEnD;EACF;AAEA,MAAM6D,qBAAqB,CAAC9D,SAASA,SAAS,WAAWA,SAAS;AAClE,MAAM+D,mBAAmB,CAACC,QAAQC,WAAWA,SAASD,SAAS5H,OAAOyB,OAAO,CAAA,GAAImG,MAAO;AACxF,MAAME,cAAc,CAACC,UAAU3D,MAAM/K,UAAU0O,YAAY,CAAC3D,KAAK4D,UAAU5D,KAAK6D,YAC3E;IAAChI,MAAMiD,wBAAwB7J,OAAO,IAAI;IAAGsH,QAAQ;EAAI;AAE/C,MAAMuH,oBAAN,MAAMA;IAqBnBrP,YAAYQ,OAAOwK,cAAc;AAC/B,WAAKxK,QAAQA;AACb,WAAK8O,OAAO9O,MAAM+O;AAClB,WAAK7E,QAAQM;AACb,WAAKwE,kBAAkB,CAAA;AACvB,WAAKlC,cAAc,KAAKmC,QAAO;AAC/B,WAAKC,QAAQ,KAAKpC,YAAY3M;AAC9B,WAAKqH,UAAU1H;AAEf,WAAKqP,WAAW;AAChB,WAAKC,QAAQtP;AACb,WAAKuP,cAAcvP;AACnB,WAAKwP,iBAAiBxP;AACtB,WAAKyP,aAAazP;AAClB,WAAK0P,aAAa1P;AAClB,WAAK2P,sBAAsB;AAC3B,WAAKC,qBAAqB;AAC1B,WAAKC,WAAW7P;AAChB,WAAK8P,YAAY,CAAA;AACjB,WAAKC,qBAAqB,WAAWA;AACrC,WAAKC,kBAAkB,WAAWA;AAElC,WAAKC,WAAU;IACjB;IAEAA,aAAa;AACX,YAAMhF,OAAO,KAAK+B;AAClB,WAAKtG,UAAS;AACd,WAAKwJ,WAAU;AACfjF,WAAK6D,WAAWrD,UAAUR,KAAKE,QAAQF,IAAAA;AACvC,WAAKkF,YAAW;AAEhB,UAAI,KAAKzI,QAAQ0I,QAAQ,CAAC,KAAKlQ,MAAMmQ,gBAAgB,QAAW,GAAA;AAC9DC,gBAAQC,KAAK,oKAAA;;IAEjB;IAEAC,YAAY9F,cAAc;AACxB,UAAI,KAAKN,UAAUM,cAAc;AAC/B2D,oBAAY,KAAKrB,WAAW;;AAE9B,WAAK5C,QAAQM;IACf;IAEAwF,aAAa;AACX,YAAMhQ,QAAQ,KAAKA;AACnB,YAAM+K,OAAO,KAAK+B;AAClB,YAAMgB,UAAU,KAAKyC,WAAU;AAE/B,YAAMC,WAAW,CAACrF,MAAMlC,IAAGC,IAAGO,OAAM0B,SAAS,MAAMlC,KAAIkC,SAAS,MAAM1B,KAAIP;AAE1E,YAAMuH,MAAM1F,KAAK2F,UAAUC,eAAe7C,QAAQ4C,SAASnD,gBAAgBvN,OAAO,GAAA,CAAA;AAClF,YAAM4Q,MAAM7F,KAAK8F,UAAUF,eAAe7C,QAAQ+C,SAAStD,gBAAgBvN,OAAO,GAAA,CAAA;AAClF,YAAM8Q,MAAM/F,KAAKgG,UAAUJ,eAAe7C,QAAQiD,SAASxD,gBAAgBvN,OAAO,GAAA,CAAA;AAClF,YAAMgR,YAAYjG,KAAKiG;AACvB,YAAMC,MAAMlG,KAAKmG,UAAUV,SAASQ,WAAWP,KAAKG,KAAKE,GAAAA;AACzD,YAAMK,MAAMpG,KAAKqG,UAAUZ,SAASQ,WAAWJ,KAAKH,KAAKK,GAAAA;AACzD/F,WAAKhC,SAAS,KAAKsI,cAAcZ,GAAAA;AACjC1F,WAAK/B,SAAS,KAAKqI,cAAcT,GAAAA;AACjC7F,WAAKuG,SAAS,KAAKD,cAAcP,GAAAA;AACjC/F,WAAKC,SAAS,KAAKqG,cAAcJ,GAAAA;AACjClG,WAAKE,SAAS,KAAKoG,cAAcF,GAAAA;IACnC;IAEAZ,aAAa;AACX,aAAO,KAAKvQ,MAAM8K,KAAKyG,SAAS,KAAKrH,KAAK;IAC5C;IAEA+E,UAAU;AACR,aAAO,KAAKjP,MAAMwR,eAAe,KAAKtH,KAAK;IAC7C;IAMAmH,cAAcI,SAAS;AACrB,aAAO,KAAKzR,MAAMwN,OAAOiE,OAAQ;IACnC;IAKAC,eAAejJ,QAAO;AACpB,YAAMsC,OAAO,KAAK+B;AAClB,aAAOrE,WAAUsC,KAAKC,SAClBD,KAAKE,SACLF,KAAKC;IACX;IAEA2G,QAAQ;AACN,WAAKxQ,QAAQ,OAAA;IACf;IAKAyQ,WAAW;AACT,YAAM7G,OAAO,KAAK+B;AAClB,UAAI,KAAKsC,OAAO;AACdyC,4BAAoB,KAAKzC,OAAO,IAAI;;AAEtC,UAAIrE,KAAK6D,UAAU;AACjBT,oBAAYpD,IAAAA;;IAEhB;IAKA+G,aAAa;AACX,YAAMhE,UAAU,KAAKyC,WAAU;AAC/B,YAAMzF,QAAOgD,QAAQhD,SAASgD,QAAQhD,OAAO,CAAA;AAC7C,YAAMsE,QAAQ,KAAKA;AAMnB,UAAI3I,SAASqE,KAAO,GAAA;AAClB,cAAMC,OAAO,KAAK+B;AAClB,aAAKsC,QAAQvE,yBAAyBC,OAAMC,IAAAA;iBACnCqE,UAAUtE,OAAM;AACzB,YAAIsE,OAAO;AAETyC,8BAAoBzC,OAAO,IAAI;AAE/B,gBAAMrE,OAAO,KAAK+B;AAClBqB,sBAAYpD,IAAAA;AACZA,eAAKqD,UAAU,CAAA;;AAEjB,YAAItD,SAAQnE,OAAOoL,aAAajH,KAAO,GAAA;AACrCkH,4BAAkBlH,OAAM,IAAI;;AAE9B,aAAK8E,YAAY,CAAA;AACjB,aAAKR,QAAQtE;;IAEjB;IAEAmF,cAAc;AACZ,YAAMlF,OAAO,KAAK+B;AAElB,WAAKgF,WAAU;AAEf,UAAI,KAAKjC,oBAAoB;AAC3B9E,aAAK+C,UAAU,IAAI,KAAK+B,mBAAkB;;IAE9C;IAEAoC,sBAAsBC,kBAAkB;AACtC,YAAMnH,OAAO,KAAK+B;AAClB,YAAMgB,UAAU,KAAKyC,WAAU;AAC/B,UAAI4B,eAAe;AAEnB,WAAKL,WAAU;AAGf,YAAMM,aAAarH,KAAK6D;AACxB7D,WAAK6D,WAAWrD,UAAUR,KAAKE,QAAQF,IAAAA;AAGvC,UAAIA,KAAKX,UAAU0D,QAAQ1D,OAAO;AAChC+H,uBAAe;AAEfhE,oBAAYpD,IAAAA;AACZA,aAAKX,QAAQ0D,QAAQ1D;;AAKvB,WAAKiI,gBAAgBH,gBAAAA;AAGrB,UAAIC,gBAAgBC,eAAerH,KAAK6D,UAAU;AAChDjC,qBAAa,MAAM5B,KAAKqD,OAAO;AAC/BrD,aAAK6D,WAAWrD,UAAUR,KAAKE,QAAQF,IAAAA;;IAE3C;IAMAvE,YAAY;AACV,YAAMH,UAAS,KAAKrG,MAAMqG;AAC1B,YAAMiM,YAAYjM,QAAOkM,iBAAiB,KAAKrD,KAAK;AACpD,YAAMsD,SAASnM,QAAOoM,gBAAgB,KAAKlC,WAAU,GAAI+B,WAAW,IAAI;AACxE,WAAK9K,UAAUnB,QAAOqM,eAAeF,QAAQ,KAAKG,WAAU,CAAA;AAC5D,WAAKxD,WAAW,KAAK3H,QAAQoL;AAC7B,WAAK5D,kBAAkB,CAAA;IACzB;IAMA6D,MAAM/R,QAAOgS,OAAO;AAClB,YAAM,EAAChG,aAAa/B,MAAMqE,OAAOtE,MAAI,IAAI;AACzC,YAAM,EAACE,QAAQ4D,SAAAA,IAAY7D;AAC3B,YAAMiC,QAAQhC,OAAOG;AAErB,UAAI4H,SAASjS,WAAU,KAAKgS,UAAUhI,MAAKrJ,SAAS,OAAOsJ,KAAKiI;AAChE,UAAIC,QAAOnS,SAAQ,KAAKiK,KAAKqD,QAAQtN,SAAQ,CAAE;AAC/C,UAAIY,IAAGqB,KAAK8J;AAEZ,UAAI,KAAKsC,aAAa,OAAO;AAC3BpE,aAAKqD,UAAUtD;AACfC,aAAKiI,UAAU;AACfnG,iBAAS/B;aACJ;AACL,YAAI3D,QAAQ2D,MAAKhK,MAAAA,CAAM,GAAG;AACxB+L,mBAAS,KAAKqG,eAAenI,MAAMD,OAAMhK,QAAOgS,KAAAA;QAClD,WAAWrM,SAASqE,MAAKhK,MAAAA,CAAM,GAAG;AAChC+L,mBAAS,KAAKsG,gBAAgBpI,MAAMD,OAAMhK,QAAOgS,KAAAA;eAC5C;AACLjG,mBAAS,KAAKuG,mBAAmBrI,MAAMD,OAAMhK,QAAOgS,KAAAA;;AAGtD,cAAMO,6BAA6B,MAAMtQ,IAAIiK,KAAAA,MAAW,QAASiG,SAAQlQ,IAAIiK,KAAAA,IAASiG,MAAKjG,KAAM;AACjG,aAAKtL,KAAI,GAAGA,KAAIoR,OAAO,EAAEpR,IAAG;AAC1BqJ,eAAKqD,QAAQ1M,KAAIZ,MAAAA,IAASiC,MAAM8J,OAAOnL,EAAE;AACzC,cAAIqR,QAAQ;AACV,gBAAIM,2BAA8B,GAAA;AAChCN,uBAAS;;AAEXE,YAAAA,QAAOlQ;;QAEX;AACAgI,aAAKiI,UAAUD;;AAGjB,UAAInE,UAAU;AACZjC,qBAAa,MAAME,MAAAA;;IAEvB;IAaAuG,mBAAmBrI,MAAMD,OAAMhK,QAAOgS,OAAO;AAC3C,YAAM,EAAC9H,QAAQC,OAAAA,IAAUF;AACzB,YAAMiC,QAAQhC,OAAOG;AACrB,YAAM8B,QAAQhC,OAAOE;AACrB,YAAMmI,SAAStI,OAAOuI,UAAS;AAC/B,YAAMC,cAAcxI,WAAWC;AAC/B,YAAM4B,SAAS,IAAIvB,MAAMwH,KAAAA;AACzB,UAAIpR,IAAGuI,MAAMC;AAEb,WAAKxI,KAAI,GAAGuI,OAAO6I,OAAOpR,KAAIuI,MAAM,EAAEvI,IAAG;AACvCwI,QAAAA,SAAQxI,KAAIZ;AACZ+L,eAAOnL,EAAAA,IAAK;UACV,CAACsL,KAAAA,GAAQwG,eAAexI,OAAO6H,MAAMS,OAAOpJ,MAAAA,GAAQA,MAAAA;UACpD,CAAC+C,KAAAA,GAAQhC,OAAO4H,MAAM/H,MAAKZ,MAAAA,GAAQA,MAAAA;QACrC;MACF;AACA,aAAO2C;IACT;IAaAqG,eAAenI,MAAMD,OAAMhK,QAAOgS,OAAO;AACvC,YAAM,EAAC/J,QAAQC,OAAAA,IAAU+B;AACzB,YAAM8B,SAAS,IAAIvB,MAAMwH,KAAAA;AACzB,UAAIpR,IAAGuI,MAAMC,QAAOtI;AAEpB,WAAKF,KAAI,GAAGuI,OAAO6I,OAAOpR,KAAIuI,MAAM,EAAEvI,IAAG;AACvCwI,QAAAA,SAAQxI,KAAIZ;AACZc,eAAOkJ,MAAKZ,MAAM;AAClB2C,eAAOnL,EAAAA,IAAK;UACVuH,GAAGF,OAAO8J,MAAMjR,KAAK,CAAA,GAAIsI,MAAAA;UACzBhB,GAAGF,OAAO6J,MAAMjR,KAAK,CAAA,GAAIsI,MAAAA;QAC3B;MACF;AACA,aAAO2C;IACT;IAaAsG,gBAAgBpI,MAAMD,OAAMhK,QAAOgS,OAAO;AACxC,YAAM,EAAC/J,QAAQC,OAAAA,IAAU+B;AACzB,YAAM,EAAC0I,WAAW,KAAKC,WAAW,IAAA,IAAO,KAAKvE;AAC9C,YAAMtC,SAAS,IAAIvB,MAAMwH,KAAAA;AACzB,UAAIpR,IAAGuI,MAAMC,QAAOtI;AAEpB,WAAKF,KAAI,GAAGuI,OAAO6I,OAAOpR,KAAIuI,MAAM,EAAEvI,IAAG;AACvCwI,QAAAA,SAAQxI,KAAIZ;AACZc,eAAOkJ,MAAKZ,MAAM;AAClB2C,eAAOnL,EAAAA,IAAK;UACVuH,GAAGF,OAAO8J,MAAMc,iBAAiB/R,MAAM6R,QAAWvJ,GAAAA,MAAAA;UAClDhB,GAAGF,OAAO6J,MAAMc,iBAAiB/R,MAAM8R,QAAWxJ,GAAAA,MAAAA;QACpD;MACF;AACA,aAAO2C;IACT;IAKA+G,UAAU1J,QAAO;AACf,aAAO,KAAK4C,YAAYsB,QAAQlE,MAAM;IACxC;IAKA2J,eAAe3J,QAAO;AACpB,aAAO,KAAK4C,YAAYhC,KAAKZ,MAAM;IACrC;IAKAC,WAAW1B,QAAOoE,QAAQtC,MAAM;AAC9B,YAAMvK,QAAQ,KAAKA;AACnB,YAAM+K,OAAO,KAAK+B;AAClB,YAAM5E,QAAQ2E,OAAOpE,OAAM0C,IAAI;AAC/B,YAAMf,QAAQ;QACZxD,MAAMiD,wBAAwB7J,OAAO,IAAI;QACzCsH,QAAQuF,OAAOE,QAAQtE,OAAM0C,IAAI,EAAEmC;MACrC;AACA,aAAOnD,WAAWC,OAAOlC,OAAO6C,KAAKb,OAAO;QAACK;MAAI,CAAA;IACnD;IAKAuJ,sBAAsBC,QAAOtL,QAAOoE,QAAQzC,OAAO;AACjD,YAAM4J,cAAcnH,OAAOpE,OAAM0C,IAAI;AACrC,UAAIjD,QAAQ8L,gBAAgB,OAAOC,MAAMD;AACzC,YAAM1M,SAAS8C,SAASyC,OAAOE,QAAQtE,OAAM0C,IAAI;AACjD,UAAIf,SAAS9C,QAAQ;AACnB8C,cAAM9C,SAASA;AACfY,gBAAQiC,WAAWC,OAAO4J,aAAa,KAAKlH,YAAY5C,KAAK;;AAE/D6J,MAAAA,OAAMlT,MAAMD,KAAKC,IAAIkT,OAAMlT,KAAKqH,KAAAA;AAChC6L,MAAAA,OAAM/Q,MAAMpC,KAAKoC,IAAI+Q,OAAM/Q,KAAKkF,KAAAA;IAClC;IAKAgM,UAAUzL,QAAOiG,UAAU;AACzB,YAAM3D,OAAO,KAAK+B;AAClB,YAAMsB,UAAUrD,KAAKqD;AACrB,YAAM2E,SAAShI,KAAKiI,WAAWvK,WAAUsC,KAAKC;AAC9C,YAAMf,OAAOmE,QAAQ3M;AACrB,YAAM0S,aAAa,KAAKzC,eAAejJ,MAAAA;AACvC,YAAM2B,QAAQqE,YAAYC,UAAU3D,MAAM,KAAK/K,KAAK;AACpD,YAAM+T,SAAQ;QAAClT,KAAKmL,OAAOE;QAAmBlJ,KAAKgJ,OAAOC;MAAiB;AAC3E,YAAM,EAACpL,KAAKuT,UAAUpR,KAAKqR,SAAQ,IAAIxI,cAAcsI,UAAAA;AACrD,UAAIzS,IAAGmL;AAEP,eAASyH,QAAQ;AACfzH,iBAASuB,QAAQ1M,EAAE;AACnB,cAAM+I,aAAaoC,OAAOsH,WAAWhJ,IAAI;AACzC,eAAO,CAACR,eAASkC,OAAOpE,OAAM0C,IAAI,CAAC,KAAKiJ,WAAW3J,cAAc4J,WAAW5J;MAC9E;AAEA,WAAK/I,KAAI,GAAGA,KAAIuI,MAAM,EAAEvI,IAAG;AACzB,YAAI4S,MAAS,GAAA;AACX;;AAEF,aAAKR,sBAAsBC,QAAOtL,QAAOoE,QAAQzC,KAAAA;AACjD,YAAI2I,QAAQ;AAEV;;MAEJ;AACA,UAAIA,QAAQ;AAEV,aAAKrR,KAAIuI,OAAO,GAAGvI,MAAK,GAAG,EAAEA,IAAG;AAC9B,cAAI4S,MAAS,GAAA;AACX;;AAEF,eAAKR,sBAAsBC,QAAOtL,QAAOoE,QAAQzC,KAAAA;AACjD;QACF;;AAEF,aAAO2J;IACT;IAEAQ,mBAAmB9L,QAAO;AACxB,YAAMoE,SAAS,KAAKC,YAAYsB;AAChC,YAAM9G,SAAS,CAAA;AACf,UAAI5F,IAAGuI,MAAM/B;AAEb,WAAKxG,KAAI,GAAGuI,OAAO4C,OAAOpL,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/CwG,gBAAQ2E,OAAOnL,EAAAA,EAAG+G,OAAM0C,IAAI;AAC5B,YAAIR,eAASzC,KAAQ,GAAA;AACnBZ,iBAAO5E,KAAKwF,KAAAA;;MAEhB;AACA,aAAOZ;IACT;IAMAkN,iBAAiB;AACf,aAAO;IACT;IAKAC,iBAAiBvK,QAAO;AACtB,YAAMa,OAAO,KAAK+B;AAClB,YAAM9B,SAASD,KAAKC;AACpB,YAAMC,SAASF,KAAKE;AACpB,YAAM4B,SAAS,KAAK+G,UAAU1J,MAAAA;AAC9B,aAAO;QACLwK,OAAO1J,SAAS,KAAKA,OAAO2J,iBAAiB9H,OAAO7B,OAAOG,IAAI,CAAC,IAAI;QACpEjD,OAAO+C,SAAS,KAAKA,OAAO0J,iBAAiB9H,OAAO5B,OAAOE,IAAI,CAAC,IAAI;MACtE;IACF;IAKAhK,QAAQoJ,MAAM;AACZ,YAAMQ,OAAO,KAAK+B;AAClB,WAAKpH,OAAO6E,QAAQ,SAAA;AACpBQ,WAAK6J,QAAQrL,OAAOoH,eAAe,KAAKnJ,QAAQqN,MAAM/L,YAAYiC,KAAKhC,QAAQgC,KAAK/B,QAAQ,KAAKwL,eAAc,CAAA,CAAA,CAAA;IACjH;IAKA9O,OAAO6E,MAAM;IAAA;IAEb5I,OAAO;AACL,YAAMoN,MAAM,KAAKD;AACjB,YAAM9O,QAAQ,KAAKA;AACnB,YAAM+K,OAAO,KAAK+B;AAClB,YAAMgI,YAAW/J,KAAKD,QAAQ,CAAA;AAC9B,YAAMiK,OAAO/U,MAAMgV;AACnB,YAAMvP,UAAS,CAAA;AACf,YAAM3E,SAAQ,KAAKyO,cAAc;AACjC,YAAMuD,QAAQ,KAAKtD,cAAesF,UAASrT,SAASX;AACpD,YAAMmU,0BAA0B,KAAKzN,QAAQyN;AAC7C,UAAIvT;AAEJ,UAAIqJ,KAAK+C,SAAS;AAChB/C,aAAK+C,QAAQnM,KAAKoN,KAAKgG,MAAMjU,QAAOgS,KAAAA;;AAGtC,WAAKpR,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAO,EAAEpR,IAAG;AACtC,cAAMsM,UAAU8G,UAASpT,EAAE;AAC3B,YAAIsM,QAAQW,QAAQ;AAClB;;AAEF,YAAIX,QAAQvI,UAAUwP,yBAAyB;AAC7CxP,UAAAA,QAAO/C,KAAKsL,OAAAA;eACP;AACLA,kBAAQrM,KAAKoN,KAAKgG,IAAAA;;MAEtB;AAEA,WAAKrT,KAAI,GAAGA,KAAI+D,QAAOhE,QAAQ,EAAEC,IAAG;AAClC+D,QAAAA,QAAO/D,EAAAA,EAAGC,KAAKoN,KAAKgG,IAAAA;MACtB;IACF;IASAG,SAAShL,QAAOzE,SAAQ;AACtB,YAAM8E,OAAO9E,UAAS,WAAW;AACjC,aAAOyE,WAAUpK,UAAa,KAAKgN,YAAYgB,UAC3C,KAAKqH,6BAA6B5K,IAAAA,IAClC,KAAK6K,0BAA0BlL,UAAS,GAAGK,IAAK;IACtD;IAKAoI,WAAWzI,QAAOzE,SAAQ8E,MAAM;AAC9B,YAAMuD,UAAU,KAAKyC,WAAU;AAC/B,UAAI8E;AACJ,UAAInL,UAAS,KAAKA,SAAQ,KAAK4C,YAAYhC,KAAKrJ,QAAQ;AACtD,cAAMuM,UAAU,KAAKlB,YAAYhC,KAAKZ,MAAM;AAC5CmL,kBAAUrH,QAAQ2B,aACf3B,QAAQ2B,WAAW5B,kBAAkB,KAAK4E,WAAU,GAAIzI,QAAO8D,OAAO;AACzEqH,gBAAQxI,SAAS,KAAK+G,UAAU1J,MAAAA;AAChCmL,gBAAQnH,MAAMJ,QAAQhD,KAAKZ,MAAM;AACjCmL,gBAAQnL,QAAQmL,QAAQpH,YAAY/D;aAC/B;AACLmL,kBAAU,KAAK1F,aACZ,KAAKA,WAAWhC,qBAAqB,KAAK3N,MAAM2S,WAAU,GAAI,KAAKzI,KAAK;AAC3EmL,gBAAQvH,UAAUA;AAClBuH,gBAAQnL,QAAQmL,QAAQ7K,eAAe,KAAKN;;AAG9CmL,cAAQ5P,SAAS,CAAC,CAACA;AACnB4P,cAAQ9K,OAAOA;AACf,aAAO8K;IACT;IAMAF,6BAA6B5K,MAAM;AACjC,aAAO,KAAK+K,uBAAuB,KAAKzF,mBAAmBjE,IAAIrB,IAAAA;IACjE;IAOA6K,0BAA0BlL,QAAOK,MAAM;AACrC,aAAO,KAAK+K,uBAAuB,KAAKxF,gBAAgBlE,IAAIrB,MAAML,MAAAA;IACpE;IAKAoL,uBAAuBC,cAAahL,OAAO,WAAWL,QAAO;AAC3D,YAAMzE,UAAS8E,SAAS;AACxB,YAAMiL,SAAQ,KAAKxG;AACnB,YAAMyG,WAAWF,eAAc,MAAMhL;AACrC,YAAMgE,SAASiH,OAAMC,QAAS;AAC9B,YAAMC,UAAU,KAAKjG,uBAAuBkG,QAAQzL,MAAAA;AACpD,UAAIqE,QAAQ;AACV,eAAOD,iBAAiBC,QAAQmH,OAAAA;;AAElC,YAAMrP,UAAS,KAAKrG,MAAMqG;AAC1B,YAAMiM,YAAYjM,QAAOuP,wBAAwB,KAAK1G,OAAOqG,YAAAA;AAC7D,YAAMM,WAAWpQ,UAAS;QAAC,GAAG8P;QAAoB;QAASA;QAAa;UAAM;QAACA;QAAa;MAAG;AAC/F,YAAM/C,SAASnM,QAAOoM,gBAAgB,KAAKlC,WAAU,GAAI+B,SAAAA;AACzD,YAAMwD,SAAQnP,OAAOC,KAAKC,SAASiO,SAASS,YAAY,CAAA;AAGxD,YAAMF,UAAU,MAAM,KAAK1C,WAAWzI,QAAOzE,SAAQ8E,IAAAA;AACrD,YAAMjD,SAASjB,QAAO0P,oBAAoBvD,QAAQsD,QAAOT,SAASQ,QAAAA;AAElE,UAAIvO,OAAOM,SAAS;AAGlBN,eAAOM,UAAU8N;AAKjBF,QAAAA,OAAMC,QAAS,IAAG9O,OAAOqP,OAAO1H,iBAAiBhH,QAAQoO,OAAAA,CAAAA;;AAG3D,aAAOpO;IACT;IAMA2O,mBAAmB/L,QAAOgM,YAAYzQ,SAAQ;AAC5C,YAAMzF,QAAQ,KAAKA;AACnB,YAAMwV,SAAQ,KAAKxG;AACnB,YAAMyG,WAAW,aAAaS;AAC9B,YAAM3H,SAASiH,OAAMC,QAAS;AAC9B,UAAIlH,QAAQ;AACV,eAAOA;;AAET,UAAI/G;AACJ,UAAIxH,MAAMwH,QAAQV,cAAc,OAAO;AACrC,cAAMT,UAAS,KAAKrG,MAAMqG;AAC1B,cAAMiM,YAAYjM,QAAO8P,0BAA0B,KAAKjH,OAAOgH,UAAAA;AAC/D,cAAM1D,SAASnM,QAAOoM,gBAAgB,KAAKlC,WAAU,GAAI+B,SAAAA;AACzD9K,QAAAA,WAAUnB,QAAOqM,eAAeF,QAAQ,KAAKG,WAAWzI,QAAOzE,SAAQyQ,UAAAA,CAAAA;;AAEzE,YAAMxO,aAAa,IAAItB,WAAWpG,OAAOwH,YAAWA,SAAQE,UAAU;AACtE,UAAIF,YAAWA,SAAQ4O,YAAY;AACjCZ,QAAAA,OAAMC,QAAAA,IAAY9O,OAAOqP,OAAOtO,UAAAA;;AAElC,aAAOA;IACT;IAMA2O,iBAAiB7O,UAAS;AACxB,UAAI,CAACA,SAAQI,SAAS;AACpB;;AAEF,aAAO,KAAK0H,mBAAmB,KAAKA,iBAAiB3I,OAAOyB,OAAO,CAAA,GAAIZ,QAAO;IAChF;IAMA8O,eAAe/L,MAAMgM,eAAe;AAClC,aAAO,CAACA,iBAAiBlI,mBAAmB9D,IAAAA,KAAS,KAAKvK,MAAMwW;IAClE;IAKAC,kBAAkB3V,QAAOyJ,MAAM;AAC7B,YAAMmM,YAAY,KAAKtB,0BAA0BtU,QAAOyJ,IAAAA;AACxD,YAAMoM,0BAA0B,KAAKrH;AACrC,YAAMiH,gBAAgB,KAAKF,iBAAiBK,SAAAA;AAC5C,YAAMJ,iBAAiB,KAAKA,eAAe/L,MAAMgM,aAAAA,KAAmBA,kBAAkBI;AACtF,WAAKC,oBAAoBL,eAAehM,MAAMmM,SAAAA;AAC9C,aAAO;QAACH;QAAeD;MAAc;IACvC;IAMAO,cAAc7I,SAAS9D,QAAO9C,YAAYmD,MAAM;AAC9C,UAAI8D,mBAAmB9D,IAAO,GAAA;AAC5B5D,eAAOyB,OAAO4F,SAAS5G,UAAAA;aAClB;AACL,aAAK6O,mBAAmB/L,QAAOK,IAAM7E,EAAAA,OAAOsI,SAAS5G,UAAAA;;IAEzD;IAMAwP,oBAAoBL,eAAehM,MAAMhD,YAAY;AACnD,UAAIgP,iBAAiB,CAAClI,mBAAmB9D,IAAO,GAAA;AAC9C,aAAK0L,mBAAmBnW,QAAWyK,IAAM7E,EAAAA,OAAO6Q,eAAehP,UAAAA;;IAEnE;IAKAuP,UAAU9I,SAAS9D,QAAOK,MAAM9E,SAAQ;AACtCuI,cAAQvI,SAASA;AACjB,YAAM+B,WAAU,KAAK0N,SAAShL,QAAOzE,OAAAA;AACrC,WAAKwQ,mBAAmB/L,QAAOK,MAAM9E,OAAQC,EAAAA,OAAOsI,SAAS;QAG3DxG,SAAS,CAAE/B,WAAU,KAAK4Q,iBAAiB7O,QAAaA,KAAAA;MAC1D,CAAA;IACF;IAEAuP,iBAAiB/I,SAASxD,cAAcN,QAAO;AAC7C,WAAK4M,UAAU9I,SAAS9D,QAAO,UAAU,KAAK;IAChD;IAEA8M,cAAchJ,SAASxD,cAAcN,QAAO;AAC1C,WAAK4M,UAAU9I,SAAS9D,QAAO,UAAU,IAAI;IAC/C;IAKA+M,2BAA2B;AACzB,YAAMjJ,UAAU,KAAKlB,YAAYgB;AAEjC,UAAIE,SAAS;AACX,aAAK8I,UAAU9I,SAASlO,QAAW,UAAU,KAAK;;IAEtD;IAKAoX,wBAAwB;AACtB,YAAMlJ,UAAU,KAAKlB,YAAYgB;AAEjC,UAAIE,SAAS;AACX,aAAK8I,UAAU9I,SAASlO,QAAW,UAAU,IAAI;;IAErD;IAKAuS,gBAAgBH,kBAAkB;AAChC,YAAMpH,QAAO,KAAKsE;AAClB,YAAM0F,YAAW,KAAKhI,YAAYhC;AAGlC,iBAAW,CAAC3E,QAAQgR,MAAMC,IAAAA,KAAS,KAAKxH,WAAW;AACjD,aAAKzJ,MAAO,EAACgR,MAAMC,IAAAA;MACrB;AACA,WAAKxH,YAAY,CAAA;AAEjB,YAAMyH,UAAUvC,UAASrT;AACzB,YAAM6V,UAAUxM,MAAKrJ;AACrB,YAAMqR,QAAQlS,KAAKC,IAAIyW,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,gBAAgBzW,QAAOgS,OAAOZ,mBAAmB,MAAM;AACrD,YAAMnH,OAAO,KAAK+B;AAClB,YAAMhC,QAAOC,KAAKD;AAClB,YAAMjC,OAAM/H,SAAQgS;AACpB,UAAIpR;AAEJ,YAAM+V,QAAO,CAACC,QAAQ;AACpBA,YAAIjW,UAAUqR;AACd,aAAKpR,KAAIgW,IAAIjW,SAAS,GAAGC,MAAKmH,MAAKnH,MAAK;AACtCgW,cAAIhW,EAAE,IAAGgW,IAAIhW,KAAIoR,KAAM;QACzB;MACF;AACA2E,MAAAA,MAAK3M,KAAAA;AAEL,WAAKpJ,KAAIZ,QAAOY,KAAImH,MAAK,EAAEnH,IAAG;AAC5BoJ,QAAAA,MAAKpJ,EAAE,IAAG,IAAI,KAAKoO,gBAAe;MACpC;AAEA,UAAI,KAAKX,UAAU;AACjBsI,QAAAA,MAAK1M,KAAKqD,OAAO;;AAEnB,WAAKyE,MAAM/R,QAAOgS,KAAAA;AAElB,UAAIZ,kBAAkB;AACpB,aAAKyF,eAAe7M,OAAMhK,QAAOgS,OAAO,OAAA;;IAE5C;IAEA6E,eAAe3J,SAASlN,QAAOgS,OAAOvI,MAAM;IAAA;IAK5CiN,gBAAgB1W,QAAOgS,OAAO;AAC5B,YAAM/H,OAAO,KAAK+B;AAClB,UAAI,KAAKqC,UAAU;AACjB,cAAMyI,UAAU7M,KAAKqD,QAAQyJ,OAAO/W,QAAOgS,KAAAA;AAC3C,YAAI/H,KAAK6D,UAAU;AACjBT,sBAAYpD,MAAM6M,OAAAA;;;AAGtB7M,WAAKD,KAAK+M,OAAO/W,QAAOgS,KAAAA;IAC1B;IAKAgF,MAAMC,MAAM;AACV,UAAI,KAAK5I,UAAU;AACjB,aAAKS,UAAUlN,KAAKqV,IAAAA;aACf;AACL,cAAM,CAAC5R,QAAQgR,MAAMC,IAAAA,IAAQW;AAC7B,aAAK5R,MAAO,EAACgR,MAAMC,IAAAA;;AAErB,WAAKpX,MAAMgY,aAAatV,KAAK;QAAC,KAAKwH;QAAU6N,GAAAA;MAAK,CAAA;IACpD;IAEAE,cAAc;AACZ,YAAMnF,QAAQoF,UAAUzW;AACxB,WAAKqW,MAAM;QAAC;QAAmB,KAAKvH,WAAU,EAAGzF,KAAKrJ,SAASqR;QAAOA;MAAM,CAAA;IAC9E;IAEAqF,aAAa;AACX,WAAKL,MAAM;QAAC;QAAmB,KAAKhL,YAAYhC,KAAKrJ,SAAS;QAAG;MAAE,CAAA;IACrE;IAEA2W,eAAe;AACb,WAAKN,MAAM;QAAC;QAAmB;QAAG;MAAE,CAAA;IACtC;IAEAO,cAAcvX,QAAOgS,OAAO;AAC1B,UAAIA,OAAO;AACT,aAAKgF,MAAM;UAAC;UAAmBhX;UAAOgS;QAAM,CAAA;;AAE9C,YAAMwF,WAAWJ,UAAUzW,SAAS;AACpC,UAAI6W,UAAU;AACZ,aAAKR,MAAM;UAAC;UAAmBhX;UAAOwX;QAAS,CAAA;;IAEnD;IAEAC,iBAAiB;AACf,WAAKT,MAAM;QAAC;QAAmB;QAAGI,UAAUzW;MAAO,CAAA;IACrD;EACF;AAt0BE,gBALmBoN,mBAKZhI,YAAW,CAAA;AAKlB,gBAVmBgI,mBAUZgB,sBAAqB;AAK5B,gBAfmBhB,mBAeZiB,mBAAkB;AClP3B,WAAS0I,kBAAkB/P,QAAOtI,MAAM;AACtC,QAAI,CAACsI,OAAMgQ,OAAOC,MAAM;AACtB,YAAMC,eAAelQ,OAAMiE,wBAAwBvM,IAAAA;AACnD,UAAImH,SAAS,CAAA;AAEb,eAAS5F,KAAI,GAAGuI,OAAO0O,aAAalX,QAAQC,KAAIuI,MAAMvI,MAAK;AACzD4F,iBAASA,OAAOsR,OAAOD,aAAajX,EAAAA,EAAGkL,WAAW2H,mBAAmB9L,MAAAA,CAAAA;MACvE;AACAA,MAAAA,OAAMgQ,OAAOC,OAAOG,aAAavR,OAAOwR,KAAK,CAACC,IAAGrP,OAAMqP,KAAIrP,EAAAA,CAAAA;;AAE7D,WAAOjB,OAAMgQ,OAAOC;EACtB;AAMA,WAASM,qBAAqBjO,MAAM;AAClC,UAAMtC,SAAQsC,KAAKC;AACnB,UAAM1D,SAASkR,kBAAkB/P,QAAOsC,KAAK5K,IAAI;AACjD,QAAIU,OAAM4H,OAAMwQ;AAChB,QAAIvX,IAAGuI,MAAMiP,MAAMjG;AACnB,UAAMkG,mBAAmB,MAAM;AAC7B,UAAID,SAAS,SAASA,SAAS,QAAQ;AAErC;;AAEF,UAAIvD,QAAQ1C,KAAO,GAAA;AAEjBpS,QAAAA,OAAMD,KAAKC,IAAIA,MAAKD,KAAKwY,IAAIF,OAAOjG,KAASpS,KAAAA,IAAAA;;AAE/CoS,MAAAA,QAAOiG;IACT;AAEA,SAAKxX,KAAI,GAAGuI,OAAO3C,OAAO7F,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/CwX,aAAOzQ,OAAM4Q,iBAAiB/R,OAAO5F,EAAE,CAAA;AACvCyX,uBAAAA;IACF;AAEAlG,IAAAA,QAAOnT;AACP,SAAK4B,KAAI,GAAGuI,OAAOxB,OAAM6Q,MAAM7X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACpDwX,aAAOzQ,OAAM8Q,gBAAgB7X,EAAAA;AAC7ByX,uBAAAA;IACF;AAEA,WAAOtY;EACT;AAQA,WAAS2Y,yBAAyBtP,QAAOuP,OAAOjS,UAASkS,YAAY;AACnE,UAAMC,YAAYnS,SAAQoS;AAC1B,QAAIzR,OAAM0R;AAEV,QAAIC,cAAcH,SAAY,GAAA;AAC5BxR,MAAAA,QAAOsR,MAAM5Y,MAAM2G,SAAQuS;AAC3BF,cAAQrS,SAAQwS;WACX;AAIL7R,MAAAA,QAAOwR,YAAYD;AACnBG,cAAQ;;AAGV,WAAO;MACLI,OAAO9R,QAAOuR;MACdG;MACA/Y,OAAO2Y,MAAMS,OAAOhQ,MAAAA,IAAU/B,QAAO;IACvC;EACF;AAQA,WAASgS,0BAA0BjQ,QAAOuP,OAAOjS,UAASkS,YAAY;AACpE,UAAMQ,SAAST,MAAMS;AACrB,UAAMhB,OAAOgB,OAAOhQ,MAAM;AAC1B,QAAI+I,QAAO/I,SAAQ,IAAIgQ,OAAOhQ,SAAQ,CAAA,IAAK;AAC3C,QAAIkQ,QAAOlQ,SAAQgQ,OAAOzY,SAAS,IAAIyY,OAAOhQ,SAAQ,CAAE,IAAG;AAC3D,UAAMmQ,UAAU7S,SAAQuS;AAExB,QAAI9G,UAAS,MAAM;AAGjBA,MAAAA,QAAOiG,QAAQkB,UAAS,OAAOX,MAAM5Q,MAAM4Q,MAAM3Y,QAAQsZ,QAAOlB;;AAGlE,QAAIkB,UAAS,MAAM;AAEjBA,MAAAA,QAAOlB,OAAOA,OAAOjG;;AAGvB,UAAMnS,SAAQoY,QAAQA,OAAOtY,KAAKC,IAAIoS,OAAMmH,KAAI,KAAK,IAAIC;AACzD,UAAMlS,QAAOvH,KAAKwY,IAAIgB,QAAOnH,KAAAA,IAAQ,IAAIoH;AAEzC,WAAO;MACLJ,OAAO9R,QAAOuR;MACdG,OAAOrS,SAAQwS;MACflZ,OAAAA;IACF;EACF;AAEA,WAASwZ,cAAcC,OAAO3Y,MAAMqJ,QAAQvJ,IAAG;AAC7C,UAAM8Y,aAAavP,OAAO4H,MAAM0H,MAAM,CAAA,GAAI7Y,EAAAA;AAC1C,UAAM+Y,WAAWxP,OAAO4H,MAAM0H,MAAM,CAAA,GAAI7Y,EAAAA;AACxC,UAAMb,OAAMD,KAAKC,IAAI2Z,YAAYC,QAAAA;AACjC,UAAMzX,OAAMpC,KAAKoC,IAAIwX,YAAYC,QAAAA;AACjC,QAAIC,WAAW7Z;AACf,QAAI8Z,SAAS3X;AAEb,QAAIpC,KAAKwY,IAAIvY,IAAAA,IAAOD,KAAKwY,IAAIpW,IAAM,GAAA;AACjC0X,iBAAW1X;AACX2X,eAAS9Z;;AAKXe,SAAKqJ,OAAOE,IAAI,IAAIwP;AAEpB/Y,SAAKgZ,UAAU;MACbF;MACAC;MACA7Z,OAAO0Z;MACP3R,KAAK4R;MACL5Z,KAAAA;MACAmC,KAAAA;IACF;EACF;AAEA,WAAS6X,WAAWN,OAAO3Y,MAAMqJ,QAAQvJ,IAAG;AAC1C,QAAIyF,QAAQoT,KAAQ,GAAA;AAClBD,oBAAcC,OAAO3Y,MAAMqJ,QAAQvJ,EAAAA;WAC9B;AACLE,WAAKqJ,OAAOE,IAAI,IAAIF,OAAO4H,MAAM0H,OAAO7Y,EAAAA;;AAE1C,WAAOE;EACT;AAEA,WAASkZ,sBAAsB/P,MAAMD,OAAMhK,QAAOgS,OAAO;AACvD,UAAM9H,SAASD,KAAKC;AACpB,UAAMC,SAASF,KAAKE;AACpB,UAAMqI,SAAStI,OAAOuI,UAAS;AAC/B,UAAMC,cAAcxI,WAAWC;AAC/B,UAAM4B,SAAS,CAAA;AACf,QAAInL,IAAGuI,MAAMrI,MAAM2Y;AAEnB,SAAK7Y,KAAIZ,QAAOmJ,OAAOnJ,SAAQgS,OAAOpR,KAAIuI,MAAM,EAAEvI,IAAG;AACnD6Y,cAAQzP,MAAKpJ,EAAE;AACfE,aAAO,CAAA;AACPA,WAAKoJ,OAAOG,IAAI,IAAIqI,eAAexI,OAAO6H,MAAMS,OAAO5R,EAAAA,GAAIA,EAAAA;AAC3DmL,aAAOnK,KAAKmY,WAAWN,OAAO3Y,MAAMqJ,QAAQvJ,EAAAA,CAAAA;IAC9C;AACA,WAAOmL;EACT;AAEA,WAASkO,WAAWC,QAAQ;AAC1B,WAAOA,UAAUA,OAAON,aAAa5a,UAAakb,OAAOL,WAAW7a;EACtE;AAEA,WAASmb,QAAQ9S,OAAM8C,QAAQiQ,YAAY;AACzC,QAAI/S,UAAS,GAAG;AACd,aAAOyC,KAAKzC,KAAAA;;AAEd,YAAQ8C,OAAOkQ,aAAY,IAAK,IAAI,OAAOlQ,OAAOpK,OAAOqa,aAAa,IAAI;EAC5E;AAEA,WAASE,YAAYhU,YAAY;AAC/B,QAAIwB,SAAS9H,QAAO+H,MAAKM,MAAKE;AAC9B,QAAIjC,WAAWiU,YAAY;AACzBzS,gBAAUxB,WAAWkU,OAAOlU,WAAW6B;AACvCnI,MAAAA,SAAQ;AACR+H,MAAAA,OAAM;WACD;AACLD,gBAAUxB,WAAWkU,OAAOlU,WAAW8B;AACvCpI,MAAAA,SAAQ;AACR+H,MAAAA,OAAM;;AAER,QAAID,SAAS;AACXO,MAAAA,OAAM;AACNE,MAAAA,UAAS;WACJ;AACLF,MAAAA,OAAM;AACNE,MAAAA,UAAS;;AAEX,WAAO;MAACvI,OAAAA;MAAO+H,KAAAA;MAAKD;MAASO,KAAAA;MAAKE,QAAAA;IAAM;EAC1C;AAEA,WAASkS,iBAAiBnU,YAAYI,UAAS4C,OAAOF,QAAO;AAC3D,QAAIsR,OAAOhU,SAAQiU;AACnB,UAAMzV,MAAM,CAAA;AAEZ,QAAI,CAACwV,MAAM;AACTpU,iBAAWqU,gBAAgBzV;AAC3B;;AAGF,QAAIwV,SAAS,MAAM;AACjBpU,iBAAWqU,gBAAgB;QAACtS,KAAK;QAAMC,OAAO;QAAMC,QAAQ;QAAMC,MAAM;MAAI;AAC5E;;AAGF,UAAM,EAACxI,OAAAA,QAAO+H,KAAAA,MAAKD,SAASO,KAAAA,MAAKE,QAAAA,QAAAA,IAAU+R,YAAYhU,UAAAA;AAEvD,QAAIoU,SAAS,YAAYpR,OAAO;AAC9BhD,iBAAWsU,qBAAqB;AAChC,WAAKtR,MAAM+C,QAAQ,OAAOjD,QAAO;AAC/BsR,eAAOrS;kBACGiB,MAAMgD,WAAW,OAAOlD,QAAO;AACzCsR,eAAOnS;aACF;AACLrD,YAAI2V,UAAUtS,SAAQvI,QAAO+H,MAAKD,OAAAA,CAAAA,IAAY;AAC9C4S,eAAOrS;;;AAIXnD,QAAI2V,UAAUH,MAAM1a,QAAO+H,MAAKD,OAAAA,CAAAA,IAAY;AAC5CxB,eAAWqU,gBAAgBzV;EAC7B;AAEA,WAAS2V,UAAUH,MAAMzC,IAAGrP,IAAGd,SAAS;AACtC,QAAIA,SAAS;AACX4S,aAAOI,KAAKJ,MAAMzC,IAAGrP,EAAAA;AACrB8R,aAAOK,SAASL,MAAM9R,IAAGqP,EAAAA;WACpB;AACLyC,aAAOK,SAASL,MAAMzC,IAAGrP,EAAAA;;AAE3B,WAAO8R;EACT;AAEA,WAASI,KAAKE,MAAMC,IAAIC,KAAI;AAC1B,WAAOF,SAASC,KAAKC,MAAKF,SAASE,MAAKD,KAAKD;EAC/C;AAEA,WAASD,SAASI,IAAGnb,QAAO+H,MAAK;AAC/B,WAAOoT,OAAM,UAAUnb,SAAQmb,OAAM,QAAQpT,OAAMoT;EACrD;AAEA,WAASC,iBAAiB9U,YAAY,EAAC+U,cAAAA,GAAgBtC,OAAO;AAC5DzS,eAAW+U,gBAAgBA,kBAAkB,SACzCtC,UAAU,IAAI,OAAO,IACrBsC;EACN;AAEe,MAAMC,gBAAN,cAA4BvN,kBAAAA;IAgDzCuE,mBAAmBrI,MAAMD,OAAMhK,QAAOgS,OAAO;AAC3C,aAAOgI,sBAAsB/P,MAAMD,OAAMhK,QAAOgS,KAAAA;IAClD;IAOAI,eAAenI,MAAMD,OAAMhK,QAAOgS,OAAO;AACvC,aAAOgI,sBAAsB/P,MAAMD,OAAMhK,QAAOgS,KAAAA;IAClD;IAOAK,gBAAgBpI,MAAMD,OAAMhK,QAAOgS,OAAO;AACxC,YAAM,EAAC9H,QAAQC,OAAAA,IAAUF;AACzB,YAAM,EAAC0I,WAAW,KAAKC,WAAW,IAAA,IAAO,KAAKvE;AAC9C,YAAMjE,WAAWF,OAAOG,SAAS,MAAMsI,WAAWC;AAClD,YAAMtI,WAAWH,OAAOE,SAAS,MAAMsI,WAAWC;AAClD,YAAM7G,SAAS,CAAA;AACf,UAAInL,IAAGuI,MAAMrI,MAAMya;AACnB,WAAK3a,KAAIZ,QAAOmJ,OAAOnJ,SAAQgS,OAAOpR,KAAIuI,MAAM,EAAEvI,IAAG;AACnD2a,cAAMvR,MAAKpJ,EAAE;AACbE,eAAO,CAAA;AACPA,aAAKoJ,OAAOG,IAAI,IAAIH,OAAO6H,MAAMc,iBAAiB0I,KAAKnR,QAAWxJ,GAAAA,EAAAA;AAClEmL,eAAOnK,KAAKmY,WAAWlH,iBAAiB0I,KAAKjR,QAAAA,GAAWxJ,MAAMqJ,QAAQvJ,EAAAA,CAAAA;MACxE;AACA,aAAOmL;IACT;IAKAiH,sBAAsBC,QAAOtL,QAAOoE,QAAQzC,OAAO;AACjD,YAAM0J,sBAAsBC,QAAOtL,QAAOoE,QAAQzC,KAAAA;AAClD,YAAM4Q,SAASnO,OAAO+N;AACtB,UAAII,UAAUvS,WAAU,KAAKqE,YAAY7B,QAAQ;AAE/C8I,QAAAA,OAAMlT,MAAMD,KAAKC,IAAIkT,OAAMlT,KAAKma,OAAOna,GAAG;AAC1CkT,QAAAA,OAAM/Q,MAAMpC,KAAKoC,IAAI+Q,OAAM/Q,KAAKgY,OAAOhY,GAAG;;IAE9C;IAMAwR,iBAAiB;AACf,aAAO;IACT;IAKAC,iBAAiBvK,QAAO;AACtB,YAAMa,OAAO,KAAK+B;AAClB,YAAM,EAAC9B,QAAQC,OAAAA,IAAUF;AACzB,YAAM8B,SAAS,KAAK+G,UAAU1J,MAAAA;AAC9B,YAAM8Q,SAASnO,OAAO+N;AACtB,YAAM1S,QAAQ6S,WAAWC,MACrB,IAAA,MAAMA,OAAOla,QAAQ,OAAOka,OAAOnS,MAAM,MACzC,KAAKoC,OAAO0J,iBAAiB9H,OAAO5B,OAAOE,IAAI,CAAC;AAEpD,aAAO;QACLuJ,OAAO,KAAK1J,OAAO2J,iBAAiB9H,OAAO7B,OAAOG,IAAI,CAAC;QACvDjD;MACF;IACF;IAEA6H,aAAa;AACX,WAAKN,sBAAsB;AAE3B,YAAMM,WAAU;AAEhB,YAAMhF,OAAO,KAAK+B;AAClB/B,WAAKX,QAAQ,KAAKmG,WAAU,EAAGnG;IACjC;IAEA1E,OAAO6E,MAAM;AACX,YAAMQ,OAAO,KAAK+B;AAClB,WAAK6K,eAAe5M,KAAKD,MAAM,GAAGC,KAAKD,KAAKrJ,QAAQ8I,IAAAA;IACtD;IAEAoN,eAAe2E,MAAMxb,QAAOgS,OAAOvI,MAAM;AACvC,YAAMoH,QAAQpH,SAAS;AACvB,YAAM,EAACL,OAAAA,QAAO4C,aAAa,EAAC7B,OAAAA,EAAO,IAAI;AACvC,YAAMqQ,OAAOrQ,OAAOsR,aAAY;AAChC,YAAMlB,aAAapQ,OAAOkQ,aAAY;AACtC,YAAM1B,QAAQ,KAAK+C,UAAS;AAC5B,YAAM,EAACjG,eAAeD,eAAc,IAAI,KAAKG,kBAAkB3V,QAAOyJ,IAAAA;AAEtE,eAAS7I,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAOpR,MAAK;AAC1C,cAAMmL,SAAS,KAAK+G,UAAUlS,EAAAA;AAC9B,cAAM+a,UAAU9K,SAASmI,cAAcjN,OAAO5B,OAAOE,IAAI,CAAC,IAAI;UAACmQ;UAAMoB,MAAMpB;QAAI,IAAI,KAAKqB,yBAAyBjb,EAAE;AACnH,cAAMkb,UAAU,KAAKC,yBAAyBnb,IAAG+X,KAAAA;AACjD,cAAMrP,SAASyC,OAAOE,WAAW,CAAA,GAAI9B,OAAOE,IAAI;AAEhD,cAAM/D,aAAa;UACjBiU;UACAC,MAAMmB,QAAQnB;UACdI,oBAAoB,CAACtR,SAAS2Q,WAAWlO,OAAO+N,OAAO,KAAM1Q,WAAUE,MAAM+C,QAAQjD,WAAUE,MAAMgD;UACrGnE,GAAGoS,aAAaoB,QAAQC,OAAOE,QAAQE;UACvC5T,GAAGmS,aAAauB,QAAQE,SAASL,QAAQC;UACzCK,QAAQ1B,aAAauB,QAAQzU,OAAOvH,KAAKwY,IAAIqD,QAAQtU,IAAI;UACzD6U,OAAO3B,aAAaza,KAAKwY,IAAIqD,QAAQtU,IAAI,IAAIyU,QAAQzU;QACvD;AAEA,YAAImO,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAG4a,KAAK5a,EAAE,EAAC+D,SAAS,WAAW8E,IAAI;;AAE1G,cAAM/C,WAAUJ,WAAWI,WAAW8U,KAAK5a,EAAAA,EAAG8F;AAC9C+T,yBAAiBnU,YAAYI,UAAS4C,OAAOF,MAAAA;AAC7CgS,yBAAiB9U,YAAYI,UAASiS,MAAMI,KAAK;AACjD,aAAKhD,cAAcyF,KAAK5a,EAAE,GAAEA,IAAG0F,YAAYmD,IAAAA;MAC7C;IACF;IASA0S,WAAWC,MAAMjP,WAAW;AAC1B,YAAM,EAACjD,OAAM,IAAI,KAAK8B;AACtB,YAAM/C,WAAWiB,OAAO0B,wBAAwB,KAAKwC,KAAK,EACvDzB,OAAO1C,CAAAA,SAAQA,KAAK6B,WAAWpF,QAAQ2V,OAAO;AACjD,YAAM3R,UAAUR,OAAOxD,QAAQgE;AAC/B,YAAMY,SAAS,CAAA;AACf,YAAMgR,gBAAgB,KAAKtQ,YAAYF,WAAWgH,UAAU3F,SAAAA;AAC5D,YAAMoP,cAAcD,iBAAiBA,cAAcpS,OAAOG,IAAI;AAE9D,YAAMmS,WAAW,CAACvS,SAAS;AACzB,cAAM8B,SAAS9B,KAAKqD,QAAQmP,KAAK3b,CAAAA,SAAQA,KAAKoJ,OAAOG,IAAI,MAAMkS,WAAAA;AAC/D,cAAMG,MAAM3Q,UAAUA,OAAO9B,KAAKE,OAAOE,IAAI;AAE7C,YAAI2O,cAAc0D,GAAQC,KAAAA,MAAMD,GAAM,GAAA;AACpC,iBAAO;;MAEX;AAEA,iBAAWzS,QAAQhB,UAAU;AAC3B,YAAIkE,cAAcnO,UAAawd,SAASvS,IAAO,GAAA;AAC7C;;AAQF,YAAIS,YAAY,SAASY,OAAOsR,QAAQ3S,KAAKX,KAAK,MAAM,MACzDoB,YAAY1L,UAAaiL,KAAKX,UAAUtK,QAAY;AACjDsM,iBAAO1J,KAAKqI,KAAKX,KAAK;;AAExB,YAAIW,KAAKb,UAAUgT,MAAM;AACvB;;MAEJ;AAKA,UAAI,CAAC9Q,OAAO3K,QAAQ;AAClB2K,eAAO1J,KAAK5C,MAAAA;;AAGd,aAAOsM;IACT;IAMAuR,eAAezT,QAAO;AACpB,aAAO,KAAK+S,WAAWnd,QAAWoK,MAAAA,EAAOzI;IAC3C;IAUAmc,eAAepT,cAAcqT,OAAM5P,WAAW;AAC5C,YAAM7B,SAAS,KAAK6Q,WAAWzS,cAAcyD,SAAAA;AAC7C,YAAM/D,SAAQ2T,UAAU/d,SACpBsM,OAAOsR,QAAQG,KACf,IAAA;AAEJ,aAAQ3T,WAAU,KACdkC,OAAO3K,SAAS,IAChByI;IACN;IAKAsS,YAAY;AACV,YAAM7T,OAAO,KAAKnB;AAClB,YAAMuD,OAAO,KAAK+B;AAClB,YAAM9B,SAASD,KAAKC;AACpB,YAAMkP,SAAS,CAAA;AACf,UAAIxY,IAAGuI;AAEP,WAAKvI,KAAI,GAAGuI,OAAOc,KAAKD,KAAKrJ,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAClDwY,eAAOxX,KAAKsI,OAAOqO,iBAAiB,KAAKzF,UAAUlS,EAAE,EAACsJ,OAAOG,IAAI,GAAGzJ,EAAAA,CAAAA;MACtE;AAEA,YAAMkY,eAAejR,KAAKiR;AAC1B,YAAM/Y,OAAM+Y,gBAAgBZ,qBAAqBjO,IAAAA;AAEjD,aAAO;QACLlK,KAAAA;QACAqZ;QACApZ,OAAOkK,OAAO8S;QACdjV,KAAKmC,OAAO+S;QACZrE,YAAY,KAAKiE,eAAc;QAC/BlV,OAAOuC;QACPmS,SAASxU,KAAKwU;QAEdtD,OAAOD,eAAe,IAAIjR,KAAKoR,qBAAqBpR,KAAKqR;MAC3D;IACF;IAMA2C,yBAAyBzS,QAAO;AAC9B,YAAM,EAAC4C,aAAa,EAAC7B,QAAQ2D,UAAU1E,OAAOM,aAAAA,GAAehD,SAAS,EAAC8T,MAAM0C,WAAWC,aAAAA,EAAa,IAAI;AACzG,YAAM/C,aAAa8C,aAAa;AAChC,YAAMnR,SAAS,KAAK+G,UAAU1J,MAAAA;AAC9B,YAAM8Q,SAASnO,OAAO+N;AACtB,YAAMsD,WAAWnD,WAAWC,MAAAA;AAC5B,UAAI9S,QAAQ2E,OAAO5B,OAAOE,IAAI;AAC9B,UAAIrK,SAAQ;AACZ,UAAIW,UAASmN,WAAW,KAAKzE,WAAWc,QAAQ4B,QAAQ+B,QAAAA,IAAY1G;AACpE,UAAIwU,MAAMvU;AAEV,UAAI1G,YAAWyG,OAAO;AACpBpH,QAAAA,SAAQW,UAASyG;AACjBzG,QAAAA,UAASyG;;AAGX,UAAIgW,UAAU;AACZhW,gBAAQ8S,OAAON;AACfjZ,QAAAA,UAASuZ,OAAOL,SAASK,OAAON;AAEhC,YAAIxS,UAAU,KAAK0C,KAAK1C,KAAAA,MAAW0C,KAAKoQ,OAAOL,MAAM,GAAG;AACtD7Z,UAAAA,SAAQ;;AAEVA,QAAAA,UAASoH;;AAGX,YAAMsS,aAAa,CAACV,cAAckE,SAAAA,KAAc,CAACE,WAAWF,YAAYld;AACxE,UAAIwa,OAAOrQ,OAAOoO,iBAAiBmB,UAAAA;AAEnC,UAAI,KAAKxa,MAAMme,kBAAkBjU,MAAQ,GAAA;AACvCwS,eAAOzR,OAAOoO,iBAAiBvY,SAAQW,OAAAA;aAClC;AAELib,eAAOpB;;AAGTnT,MAAAA,QAAOuU,OAAOpB;AAEd,UAAI1a,KAAKwY,IAAIjR,KAAAA,IAAQ8V,cAAc;AACjC9V,QAAAA,QAAO8S,QAAQ9S,OAAM8C,QAAQiQ,UAAc+C,IAAAA;AAC3C,YAAI/V,UAAUgT,YAAY;AACxBI,kBAAQnT,QAAO;;AAEjB,cAAMiW,aAAanT,OAAOoT,mBAAmB,CAAA;AAC7C,cAAMC,WAAWrT,OAAOoT,mBAAmB,CAAA;AAC3C,cAAMxd,OAAMD,KAAKC,IAAIud,YAAYE,QAAAA;AACjC,cAAMtb,OAAMpC,KAAKoC,IAAIob,YAAYE,QAAAA;AACjChD,eAAO1a,KAAKoC,IAAIpC,KAAKC,IAAIya,MAAMtY,IAAMnC,GAAAA,IAAAA;AACrC6b,eAAOpB,OAAOnT;AAEd,YAAIyG,YAAY,CAACsP,UAAU;AAEzBrR,iBAAOE,QAAQ9B,OAAOE,IAAI,EAAEmC,cAAc9C,YAAa,IAAGS,OAAOsT,iBAAiB7B,IAAQzR,IAAAA,OAAOsT,iBAAiBjD,IAAAA;;;AAItH,UAAIA,SAASrQ,OAAOoO,iBAAiB6B,UAAa,GAAA;AAChD,cAAMsD,WAAW5T,KAAKzC,KAAAA,IAAQ8C,OAAOwT,qBAAqBvD,UAAc,IAAA;AACxEI,gBAAQkD;AACRrW,QAAAA,SAAQqW;;AAGV,aAAO;QACLrW,MAAAA;QACAmT;QACAoB;QACAI,QAAQJ,OAAOvU,QAAO;MACxB;IACF;IAKA0U,yBAAyB3S,QAAOuP,OAAO;AACrC,YAAMhR,SAAQgR,MAAMhR;AACpB,YAAMjB,WAAU,KAAKA;AACrB,YAAM8V,WAAW9V,SAAQ8V;AACzB,YAAMoB,kBAAkB/N,eAAenJ,SAAQkX,iBAAiBC,QAAAA;AAChE,UAAI7B,SAAQ3U;AACZ,UAAIsR,MAAM0D,SAAS;AACjB,cAAMzD,aAAa4D,WAAW,KAAKK,eAAezT,MAAAA,IAASuP,MAAMC;AACjE,cAAM3F,SAAQvM,SAAQoS,iBAAiB,SACnCO,0BAA0BjQ,QAAOuP,OAAOjS,UAASkS,UACjDF,IAAAA,yBAAyBtP,QAAOuP,OAAOjS,UAASkS,UAAW;AAE/D,cAAMkF,aAAa,KAAKhB,eAAe,KAAK1T,OAAO,KAAK4C,YAAY1C,OAAOkT,WAAWpT,SAAQpK,MAAS;AACvGgd,QAAAA,UAAS/I,OAAMjT,QAASiT,OAAMkG,QAAQ2E,aAAe7K,OAAMkG,QAAQ;AACnE9R,QAAAA,QAAOvH,KAAKC,IAAI6d,iBAAiB3K,OAAMkG,QAAQlG,OAAM8F,KAAK;aACrD;AAELiD,QAAAA,UAASrU,OAAM4Q,iBAAiB,KAAKzF,UAAU1J,MAAAA,EAAOzB,OAAM0C,IAAI,GAAGjB,MAAAA;AACnE/B,QAAAA,QAAOvH,KAAKC,IAAI6d,iBAAiBjF,MAAM5Y,MAAM4Y,MAAMI,KAAK;;AAG1D,aAAO;QACLyB,MAAMwB,UAAS3U,QAAO;QACtBuU,MAAMI,UAAS3U,QAAO;QACtB2U,QAAAA;QACA3U,MAAAA;MACF;IACF;IAEAxG,OAAO;AACL,YAAMoJ,OAAO,KAAK+B;AAClB,YAAM7B,SAASF,KAAKE;AACpB,YAAM4T,QAAQ9T,KAAKD;AACnB,YAAMb,OAAO4U,MAAMpd;AACnB,UAAIC,KAAI;AAER,aAAOA,KAAIuI,MAAM,EAAEvI,IAAG;AACpB,YAAI,KAAKkS,UAAUlS,EAAE,EAACuJ,OAAOE,IAAI,MAAM,QAAQ,CAAC0T,MAAMnd,EAAE,EAACiN,QAAQ;AAC/DkQ,gBAAMnd,EAAE,EAACC,KAAK,KAAKmN,IAAI;;MAE3B;IACF;EAEF;AA9YE,gBAFmBsN,eAEZxQ,MAAK;AAKZ,gBAPmBwQ,eAOZvV,YAAW;IAChBgJ,oBAAoB;IACpBC,iBAAiB;IAEjBiK,oBAAoB;IACpBC,eAAe;IACfmD,SAAS;IAETzV,YAAY;MACVoX,SAAS;QACP3e,MAAM;QACNiH,YAAY;UAAC;UAAK;UAAK;UAAQ;UAAS;QAAS;MACnD;IACF;;AAMF,gBA1BmBgV,eA0BZ2C,aAAY;IACjBvR,QAAQ;MACNwR,SAAS;QACP7e,MAAM;QACN8e,QAAQ;QACRC,MAAM;UACJD,QAAQ;QACV;MACF;MACAE,SAAS;QACPhf,MAAM;QACNif,aAAa;MACf;IACF;;ACrSW,MAAMC,mBAAN,cAA+BxQ,kBAAAA;IAiC5CkB,aAAa;AACX,WAAKN,sBAAsB;AAC3B,YAAMM,WAAU;IAClB;IAMAqD,mBAAmBrI,MAAMD,OAAMhK,QAAOgS,OAAO;AAC3C,YAAMjG,SAAS,MAAMuG,mBAAmBrI,MAAMD,OAAMhK,QAAOgS,KAAAA;AAC3D,eAASpR,KAAI,GAAGA,KAAImL,OAAOpL,QAAQC,MAAK;AACtCmL,eAAOnL,EAAE,EAACkZ,UAAU,KAAKxF,0BAA0B1T,KAAIZ,MAAAA,EAAOwe;MAChE;AACA,aAAOzS;IACT;IAMAqG,eAAenI,MAAMD,OAAMhK,QAAOgS,OAAO;AACvC,YAAMjG,SAAS,MAAMqG,eAAenI,MAAMD,OAAMhK,QAAOgS,KAAAA;AACvD,eAASpR,KAAI,GAAGA,KAAImL,OAAOpL,QAAQC,MAAK;AACtC,cAAME,OAAOkJ,MAAKhK,SAAQY,EAAE;AAC5BmL,eAAOnL,EAAE,EAACkZ,UAAUjK,eAAe/O,KAAK,CAAE,GAAE,KAAKwT,0BAA0B1T,KAAIZ,MAAAA,EAAOwe,MAAM;MAC9F;AACA,aAAOzS;IACT;IAMAsG,gBAAgBpI,MAAMD,OAAMhK,QAAOgS,OAAO;AACxC,YAAMjG,SAAS,MAAMsG,gBAAgBpI,MAAMD,OAAMhK,QAAOgS,KAAAA;AACxD,eAASpR,KAAI,GAAGA,KAAImL,OAAOpL,QAAQC,MAAK;AACtC,cAAME,OAAOkJ,MAAKhK,SAAQY,EAAE;AAC5BmL,eAAOnL,EAAAA,EAAGkZ,UAAUjK,eAAe/O,QAAQA,KAAK6H,KAAK,CAAC7H,KAAK6H,GAAG,KAAK2L,0BAA0B1T,KAAIZ,MAAAA,EAAOwe,MAAM;MAChH;AACA,aAAOzS;IACT;IAKA2H,iBAAiB;AACf,YAAM1J,QAAO,KAAKgC,YAAYhC;AAE9B,UAAI9H,OAAM;AACV,eAAStB,KAAIoJ,MAAKrJ,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AACzCsB,QAAAA,OAAMpC,KAAKoC,IAAIA,MAAK8H,MAAKpJ,EAAAA,EAAGyG,KAAK,KAAKiN,0BAA0B1T,EAAM,CAAA,IAAA,CAAA;MACxE;AACA,aAAOsB,OAAM,KAAKA;IACpB;IAKAyR,iBAAiBvK,QAAO;AACtB,YAAMa,OAAO,KAAK+B;AAClB,YAAMwG,SAAS,KAAKtT,MAAM8K,KAAKwI,UAAU,CAAA;AACzC,YAAM,EAACvK,QAAQC,OAAAA,IAAU+B;AACzB,YAAM8B,SAAS,KAAK+G,UAAU1J,MAAAA;AAC9B,YAAMjB,KAAIF,OAAO4L,iBAAiB9H,OAAO5D,CAAC;AAC1C,YAAMC,KAAIF,OAAO2L,iBAAiB9H,OAAO3D,CAAC;AAC1C,YAAMO,KAAIoD,OAAO+N;AAEjB,aAAO;QACLlG,OAAOpB,OAAOpJ,MAAAA,KAAU;QACxBhC,OAAO,MAAMe,KAAI,OAAOC,MAAKO,KAAI,OAAOA,KAAI,MAAM;MACpD;IACF;IAEA/D,OAAO6E,MAAM;AACX,YAAMgV,SAAS,KAAKzS,YAAYhC;AAGhC,WAAK6M,eAAe4H,QAAQ,GAAGA,OAAO9d,QAAQ8I,IAAAA;IAChD;IAEAoN,eAAe4H,QAAQze,QAAOgS,OAAOvI,MAAM;AACzC,YAAMoH,QAAQpH,SAAS;AACvB,YAAM,EAACS,QAAQC,OAAAA,IAAU,KAAK6B;AAC9B,YAAM,EAACyJ,eAAeD,eAAc,IAAI,KAAKG,kBAAkB3V,QAAOyJ,IAAAA;AACtE,YAAMyC,QAAQhC,OAAOG;AACrB,YAAM8B,QAAQhC,OAAOE;AAErB,eAASzJ,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAOpR,MAAK;AAC1C,cAAM8d,SAAQD,OAAO7d,EAAE;AACvB,cAAMmL,SAAS,CAAC8E,SAAS,KAAKiC,UAAUlS,EAAAA;AACxC,cAAM0F,aAAa,CAAA;AACnB,cAAMqY,SAASrY,WAAW4F,KAAM,IAAG2E,QAAQ3G,OAAOqT,mBAAmB,GAAA,IAAOrT,OAAOqO,iBAAiBxM,OAAOG,KAAAA,CAAM;AACjH,cAAM0S,SAAStY,WAAW6F,KAAAA,IAAS0E,QAAQ1G,OAAOsR,aAAY,IAAKtR,OAAOoO,iBAAiBxM,OAAOI,KAAAA,CAAM;AAExG7F,mBAAWuY,OAAOlC,MAAMgC,MAAAA,KAAWhC,MAAMiC,MAAAA;AAEzC,YAAIpJ,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAG8d,OAAM/Z,SAAS,WAAW8E,IAAI;AAEtG,cAAIoH,OAAO;AACTvK,uBAAWI,QAAQ8X,SAAS;;;AAIhC,aAAKzI,cAAc2I,QAAO9d,IAAG0F,YAAYmD,IAAAA;MAC3C;IACF;IAOA6K,0BAA0BlL,QAAOK,MAAM;AACrC,YAAMsC,SAAS,KAAK+G,UAAU1J,MAAAA;AAC9B,UAAI5C,SAAS,MAAM8N,0BAA0BlL,QAAOK,IAAAA;AAGpD,UAAIjD,OAAOM,SAAS;AAClBN,iBAASX,OAAOyB,OAAO,CAAA,GAAId,QAAQ;UAACM,SAAS;QAAK,CAAA;;AAIpD,YAAM0X,SAAShY,OAAOgY;AACtB,UAAI/U,SAAS,UAAU;AACrBjD,eAAOgY,SAAS;;AAElBhY,aAAOgY,UAAU3O,eAAe9D,UAAUA,OAAO+N,SAAS0E,MAAAA;AAE1D,aAAOhY;IACT;EACF;AAnKE,gBAFmB+X,kBAEZzT,MAAK;AAKZ,gBAPmByT,kBAOZxY,YAAW;IAChBgJ,oBAAoB;IACpBC,iBAAiB;IAEjBpI,YAAY;MACVoX,SAAS;QACP3e,MAAM;QACNiH,YAAY;UAAC;UAAK;UAAK;UAAe;QAAS;MACjD;IACF;;AAMF,gBAtBmBiY,kBAsBZN,aAAY;IACjBvR,QAAQ;MACNvE,GAAG;QACD9I,MAAM;MACR;MACA+I,GAAG;QACD/I,MAAM;MACR;IACF;;ACxBJ,WAASyf,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,SAAS3f,KAAK4f,IAAIH,UAAAA;AACxB,YAAMI,SAAS7f,KAAK8f,IAAIL,UAAAA;AACxB,YAAMM,OAAO/f,KAAK4f,IAAIF,QAAAA;AACtB,YAAMM,OAAOhgB,KAAK8f,IAAIJ,QAAAA;AACtB,YAAMO,UAAU,CAACC,OAAO/H,IAAGrP,OAAMqX,cAAcD,OAAOT,YAAYC,UAAU,IAAI,IAAI,IAAI1f,KAAKoC,IAAI+V,IAAGA,KAAIgH,QAAQrW,IAAGA,KAAIqW,MAAO;AAC9H,YAAMiB,UAAU,CAACF,OAAO/H,IAAGrP,OAAMqX,cAAcD,OAAOT,YAAYC,UAAU,IAAI,IAAI,KAAK1f,KAAKC,IAAIkY,IAAGA,KAAIgH,QAAQrW,IAAGA,KAAIqW,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,cAAiC1S,kBAAAA;IA0F9CrP,YAAYQ,OAAOwK,cAAc;AAC/B,YAAMxK,OAAOwK,YAAAA;AAEb,WAAKiF,sBAAsB;AAC3B,WAAK+R,cAAc1hB;AACnB,WAAK2hB,cAAc3hB;AACnB,WAAKogB,UAAUpgB;AACf,WAAKqgB,UAAUrgB;IACjB;IAEAkQ,aAAa;IAAA;IAKb6C,MAAM/R,QAAOgS,OAAO;AAClB,YAAMhI,QAAO,KAAKyF,WAAU,EAAGzF;AAC/B,YAAMC,OAAO,KAAK+B;AAElB,UAAI,KAAKqC,aAAa,OAAO;AAC3BpE,aAAKqD,UAAUtD;aACV;AACL,YAAI4W,SAAS,CAAChgB,OAAM,CAACoJ,MAAKpJ,EAAE;AAE5B,YAAI+E,SAASqE,MAAKhK,MAAAA,CAAM,GAAG;AACzB,gBAAM,EAACmG,KAAAA,OAAM,QAAA,IAAW,KAAKkI;AAC7BuS,mBAAS,CAAChgB,OAAM,CAACiS,iBAAiB7I,MAAKpJ,EAAAA,GAAIuF,IAAAA;;AAG7C,YAAIvF,IAAGuI;AACP,aAAKvI,KAAIZ,QAAOmJ,OAAOnJ,SAAQgS,OAAOpR,KAAIuI,MAAM,EAAEvI,IAAG;AACnDqJ,eAAKqD,QAAQ1M,EAAE,IAAGggB,OAAOhgB,EAAAA;QAC3B;;IAEJ;IAKAigB,eAAe;AACb,aAAOC,UAAU,KAAKpa,QAAQqY,WAAW,EAAA;IAC3C;IAKAgC,oBAAoB;AAClB,aAAOD,UAAU,KAAKpa,QAAQsY,aAAa;IAC7C;IAMAgC,sBAAsB;AACpB,UAAIjhB,OAAMuf;AACV,UAAIpd,OAAM,CAACod;AAEX,eAAS1e,KAAI,GAAGA,KAAI,KAAK1B,MAAM8K,KAAKyG,SAAS9P,QAAQ,EAAEC,IAAG;AACxD,YAAI,KAAK1B,MAAM+hB,iBAAiBrgB,EAAAA,KAAM,KAAK1B,MAAMwR,eAAe9P,EAAGvB,EAAAA,SAAS,KAAK+O,OAAO;AACtF,gBAAMtC,aAAa,KAAK5M,MAAMwR,eAAe9P,EAAAA,EAAGkL;AAChD,gBAAMiT,WAAWjT,WAAW+U,aAAY;AACxC,gBAAM7B,gBAAgBlT,WAAWiV,kBAAiB;AAElDhhB,UAAAA,OAAMD,KAAKC,IAAIA,MAAKgf,QAAAA;AACpB7c,UAAAA,OAAMpC,KAAKoC,IAAIA,MAAK6c,WAAWC,aAAAA;;MAEnC;AAEA,aAAO;QACLD,UAAUhf;QACVif,eAAe9c,OAAMnC;MACvB;IACF;IAKA6E,OAAO6E,MAAM;AACX,YAAMvK,QAAQ,KAAKA;AACnB,YAAM,EAACgV,UAAS,IAAIhV;AACpB,YAAM+K,OAAO,KAAK+B;AAClB,YAAMkV,OAAOjX,KAAKD;AAClB,YAAMmX,UAAU,KAAKC,kBAAiB,IAAK,KAAKC,aAAaH,IAAQ,IAAA,KAAKxa,QAAQya;AAClF,YAAMG,UAAUxhB,KAAKoC,KAAKpC,KAAKC,IAAImU,UAAUgI,OAAOhI,UAAU+H,MAAM,IAAIkF,WAAW,GAAG,CAAA;AACtF,YAAMlC,SAASnf,KAAKC,IAAIwhB,aAAa,KAAK7a,QAAQuY,QAAQqC,OAAU,GAAA,CAAA;AACpE,YAAME,cAAc,KAAKC,eAAe,KAAKrY,KAAK;AAKlD,YAAM,EAAC4V,eAAeD,SAAAA,IAAY,KAAKiC,oBAAmB;AAC1D,YAAM,EAAC9B,QAAQC,QAAQC,SAASC,QAAAA,IAAWP,kBAAkBC,UAAUC,eAAeC,MAAAA;AACtF,YAAMyC,YAAYxN,UAAUgI,QAAQiF,WAAWjC;AAC/C,YAAMyC,aAAazN,UAAU+H,SAASkF,WAAWhC;AACjD,YAAMyC,YAAY9hB,KAAKoC,IAAIpC,KAAKC,IAAI2hB,UAAUC,SAAAA,IAAa,GAAG,CAAA;AAC9D,YAAMhB,cAAckB,YAAY,KAAKnb,QAAQ8X,QAAQoD,SAAAA;AACrD,YAAMlB,cAAc5gB,KAAKoC,IAAIye,cAAc1B,QAAQ,CAAA;AACnD,YAAM6C,gBAAgBnB,cAAcD,eAAe,KAAKqB,8BAA6B;AACrF,WAAK3C,UAAUA,UAAUuB;AACzB,WAAKtB,UAAUA,UAAUsB;AAEzB1W,WAAK+X,QAAQ,KAAKC,eAAc;AAEhC,WAAKtB,cAAcA,cAAcmB,eAAe,KAAKI,qBAAqB,KAAK9Y,KAAK;AACpF,WAAKsX,cAAc5gB,KAAKoC,IAAI,KAAKye,cAAcmB,eAAeN,aAAa,CAAA;AAE3E,WAAK3K,eAAeqK,MAAM,GAAGA,KAAKvgB,QAAQ8I,IAAAA;IAC5C;IAKA0Y,eAAevhB,IAAGiQ,OAAO;AACvB,YAAMhJ,OAAO,KAAKnB;AAClB,YAAMuD,OAAO,KAAK+B;AAClB,YAAMgT,gBAAgB,KAAK+B,kBAAiB;AAC5C,UAAI,SAAUlZ,KAAK7B,UAAUoc,iBAAkB,CAAC,KAAKljB,MAAMme,kBAAkBzc,EAAMqJ,KAAAA,KAAKqD,QAAQ1M,EAAE,MAAK,QAAQqJ,KAAKD,KAAKpJ,EAAAA,EAAGiN,QAAQ;AAClI,eAAO;;AAET,aAAO,KAAKwU,uBAAuBpY,KAAKqD,QAAQ1M,EAAE,IAAGoe,gBAAgBM,GAAAA;IACvE;IAEAzI,eAAeqK,MAAMlhB,QAAOgS,OAAOvI,MAAM;AACvC,YAAMoH,QAAQpH,SAAS;AACvB,YAAMvK,QAAQ,KAAKA;AACnB,YAAMgV,YAAYhV,MAAMgV;AACxB,YAAMrM,OAAO3I,MAAMwH;AACnB,YAAM4b,gBAAgBza,KAAK7B;AAC3B,YAAMuc,WAAWrO,UAAU1L,OAAO0L,UAAU5L,SAAS;AACrD,YAAMka,WAAWtO,UAAU7L,MAAM6L,UAAU3L,UAAU;AACrD,YAAMka,eAAe5R,SAASyR,cAAcG;AAC5C,YAAM/B,cAAc+B,eAAe,IAAI,KAAK/B;AAC5C,YAAMC,cAAc8B,eAAe,IAAI,KAAK9B;AAC5C,YAAM,EAAClL,eAAeD,eAAc,IAAI,KAAKG,kBAAkB3V,QAAOyJ,IAAAA;AACtE,UAAI8V,aAAa,KAAKsB,aAAY;AAClC,UAAIjgB;AAEJ,WAAKA,KAAI,GAAGA,KAAIZ,QAAO,EAAEY,IAAG;AAC1B2e,sBAAc,KAAK4C,eAAevhB,IAAGiQ,KAAAA;MACvC;AAEA,WAAKjQ,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAO,EAAEpR,IAAG;AACtC,cAAMoe,gBAAgB,KAAKmD,eAAevhB,IAAGiQ,KAAAA;AAC7C,cAAM6R,MAAMxB,KAAKtgB,EAAE;AACnB,cAAM0F,aAAa;UACjB6B,GAAGoa,UAAU,KAAKnD;UAClBhX,GAAGoa,UAAU,KAAKnD;UAClBE;UACAC,UAAUD,aAAaP;UACvBA;UACA2B;UACAD;QACF;AACA,YAAIlL,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAG8hB,IAAI/d,SAAS,WAAW8E,IAAI;;AAEtG8V,sBAAcP;AAEd,aAAKjJ,cAAc2M,KAAK9hB,IAAG0F,YAAYmD,IAAAA;MACzC;IACF;IAEAwY,iBAAiB;AACf,YAAMhY,OAAO,KAAK+B;AAClB,YAAM2W,WAAW1Y,KAAKD;AACtB,UAAIgY,QAAQ;AACZ,UAAIphB;AAEJ,WAAKA,KAAI,GAAGA,KAAI+hB,SAAShiB,QAAQC,MAAK;AACpC,cAAMwG,QAAQ6C,KAAKqD,QAAQ1M,EAAE;AAC7B,YAAIwG,UAAU,QAAQ,CAACuV,MAAMvV,KAAAA,KAAU,KAAKlI,MAAMme,kBAAkBzc,EAAAA,KAAM,CAAC+hB,SAAS/hB,EAAE,EAACiN,QAAQ;AAC7FmU,mBAASliB,KAAKwY,IAAIlR,KAAAA;;MAEtB;AAEA,aAAO4a;IACT;IAEAK,uBAAuBjb,OAAO;AAC5B,YAAM4a,QAAQ,KAAKhW,YAAYgW;AAC/B,UAAIA,QAAQ,KAAK,CAACrF,MAAMvV,KAAQ,GAAA;AAC9B,eAAOkY,OAAOxf,KAAKwY,IAAIlR,KAAAA,IAAS4a;;AAElC,aAAO;IACT;IAEArO,iBAAiBvK,QAAO;AACtB,YAAMa,OAAO,KAAK+B;AAClB,YAAM9M,QAAQ,KAAKA;AACnB,YAAMsT,SAAStT,MAAM8K,KAAKwI,UAAU,CAAA;AACpC,YAAMpL,QAAQwb,aAAa3Y,KAAKqD,QAAQlE,MAAAA,GAAQlK,MAAMwH,QAAQmc,MAAM;AAEpE,aAAO;QACLjP,OAAOpB,OAAOpJ,MAAAA,KAAU;QACxBhC;MACF;IACF;IAEAga,kBAAkBF,MAAM;AACtB,UAAIhf,OAAM;AACV,YAAMhD,QAAQ,KAAKA;AACnB,UAAI0B,IAAGuI,MAAMc,MAAM6B,YAAYpF;AAE/B,UAAI,CAACwa,MAAM;AAET,aAAKtgB,KAAI,GAAGuI,OAAOjK,MAAM8K,KAAKyG,SAAS9P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC5D,cAAI1B,MAAM+hB,iBAAiBrgB,EAAI,GAAA;AAC7BqJ,mBAAO/K,MAAMwR,eAAe9P,EAAAA;AAC5BsgB,mBAAOjX,KAAKD;AACZ8B,yBAAa7B,KAAK6B;AAClB;;QAEJ;;AAGF,UAAI,CAACoV,MAAM;AACT,eAAO;;AAGT,WAAKtgB,KAAI,GAAGuI,OAAO+X,KAAKvgB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7C8F,QAAAA,WAAUoF,WAAWwI,0BAA0B1T,EAAAA;AAC/C,YAAI8F,SAAQoc,gBAAgB,SAAS;AACnC5gB,UAAAA,OAAMpC,KAAKoC,IAAIA,MAAKwE,SAAQqc,eAAe,GAAGrc,SAAQsc,oBAAoB,CAAA;;MAE9E;AACA,aAAO9gB;IACT;IAEAmf,aAAaH,MAAM;AACjB,UAAIhf,OAAM;AAEV,eAAStB,KAAI,GAAGuI,OAAO+X,KAAKvgB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAM8F,WAAU,KAAK4N,0BAA0B1T,EAAAA;AAC/CsB,QAAAA,OAAMpC,KAAKoC,IAAIA,MAAKwE,SAAQyX,UAAU,GAAGzX,SAAQuc,eAAe,CAAA;MAClE;AACA,aAAO/gB;IACT;IAMAggB,qBAAqBxY,cAAc;AACjC,UAAIwZ,mBAAmB;AAEvB,eAAStiB,KAAI,GAAGA,KAAI8I,cAAc,EAAE9I,IAAG;AACrC,YAAI,KAAK1B,MAAM+hB,iBAAiBrgB,EAAI,GAAA;AAClCsiB,8BAAoB,KAAKzB,eAAe7gB,EAAAA;;MAE5C;AAEA,aAAOsiB;IACT;IAKAzB,eAAe/X,cAAc;AAC3B,aAAO5J,KAAKoC,IAAI2N,eAAe,KAAK3Q,MAAM8K,KAAKyG,SAAS/G,YAAAA,EAAcyZ,QAAQ,CAAI,GAAA,CAAA;IACpF;IAMApB,gCAAgC;AAC9B,aAAO,KAAKG,qBAAqB,KAAKhjB,MAAM8K,KAAKyG,SAAS9P,MAAM,KAAK;IACvE;EACF;AArWE,gBAFmB8f,oBAEZ3V,MAAK;AAKZ,gBAPmB2V,oBAOZ1a,YAAW;IAChBgJ,oBAAoB;IACpBC,iBAAiB;IACjBhJ,WAAW;MAEToc,eAAe;MAEfK,cAAc;IAChB;IACA7b,YAAY;MACVoX,SAAS;QACP3e,MAAM;QACNiH,YAAY;UAAC;UAAiB;UAAY;UAAe;UAAe;UAAc;UAAK;UAAK;UAAU;UAAe;QAAU;MACrI;IACF;IAEA2Y,QAAQ;IAGRF,UAAU;IAGVC,eAAe;IAGfR,QAAQ;IAGR2C,SAAS;IAETjR,WAAW;;AAGb,gBAxCmBuQ,oBAwCZ2C,eAAc;IACnBC,aAAa,CAACtG,UAASA,UAAS;IAChCuG,YAAY,CAACvG,UAASA,UAAS,aAAa,CAACA,MAAKwG,WAAW,YAAiB,KAAA,CAACxG,MAAKwG,WAAW,iBAAA;;AAMjG,gBAhDmB9C,oBAgDZxC,aAAY;IACjBuF,aAAa;IAGbC,SAAS;MACPC,QAAQ;QACNlR,QAAQ;UACNmR,eAAezkB,OAAO;AACpB,kBAAM8K,QAAO9K,MAAM8K;AACnB,gBAAIA,MAAKwI,OAAO7R,UAAUqJ,MAAKyG,SAAS9P,QAAQ;AAC9C,oBAAM,EAAC6R,QAAQ,EAACoR,YAAY9gB,OAAAA,OAAAA,EAAM,IAAI5D,MAAMwkB,OAAOhd;AAEnD,qBAAOsD,MAAKwI,OAAOqR,IAAI,CAACjQ,OAAOhT,OAAM;AACnC,sBAAMqJ,OAAO/K,MAAMwR,eAAe,CAAA;AAClC,sBAAMoT,QAAQ7Z,KAAK6B,WAAWsI,SAASxT,EAAAA;AAEvC,uBAAO;kBACLmjB,MAAMnQ;kBACNoQ,WAAWF,MAAMG;kBACjBC,aAAaJ,MAAMK;kBACnBC,WAAWthB;kBACXuhB,WAAWP,MAAMf;kBACjBa;kBACA/V,QAAQ,CAAC3O,MAAMme,kBAAkBzc,EAAAA;kBAGjCwI,OAAOxI;gBACT;cACF,CAAA;;AAEF,mBAAO,CAAA;UACT;QACF;QAEA0jB,QAAQC,IAAGC,YAAYd,QAAQ;AAC7BA,iBAAOxkB,MAAMulB,qBAAqBD,WAAWpb,KAAK;AAClDsa,iBAAOxkB,MAAM0F,OAAM;QACrB;MACF;IACF;;ACtHW,MAAM8f,iBAAN,cAA6B3W,kBAAAA;IA6B1CkB,aAAa;AACX,WAAKN,sBAAsB;AAC3B,WAAKC,qBAAqB;AAC1B,YAAMK,WAAU;IAClB;IAEArK,OAAO6E,MAAM;AACX,YAAMQ,OAAO,KAAK+B;AAClB,YAAM,EAACgB,SAAS2X,MAAM3a,MAAMyU,SAAS,CAAA,GAAImG,SAAQ,IAAI3a;AAErD,YAAM4a,qBAAqB,KAAK3lB,MAAMwW;AACtC,UAAI,EAAC1V,OAAAA,QAAOgS,MAAAA,IAAS8S,iCAAiC7a,MAAMwU,QAAQoG,kBAAAA;AAEpE,WAAKpW,aAAazO;AAClB,WAAK0O,aAAasD;AAElB,UAAI+S,oBAAoB9a,IAAO,GAAA;AAC7BjK,QAAAA,SAAQ;AACRgS,gBAAQyM,OAAO9d;;AAIjBgkB,WAAKnf,SAAS,KAAKtG;AACnBylB,WAAKK,gBAAgB,KAAK5b;AAC1Bub,WAAKM,aAAa,CAAC,CAACL,SAASK;AAC7BN,WAAKlG,SAASA;AAEd,YAAM/X,WAAU,KAAK2N,6BAA6B5K,IAAAA;AAClD,UAAI,CAAC,KAAK/C,QAAQwe,UAAU;AAC1Bxe,QAAAA,SAAQqc,cAAc;;AAExBrc,MAAAA,SAAQye,UAAU,KAAKze,QAAQye;AAC/B,WAAKpP,cAAc4O,MAAM3lB,QAAW;QAClComB,UAAU,CAACP;QACXne,SAAAA;SACC+C,IAAAA;AAGH,WAAKoN,eAAe4H,QAAQze,QAAOgS,OAAOvI,IAAAA;IAC5C;IAEAoN,eAAe4H,QAAQze,QAAOgS,OAAOvI,MAAM;AACzC,YAAMoH,QAAQpH,SAAS;AACvB,YAAM,EAACS,QAAQC,QAAQ2D,UAAU8W,SAAAA,IAAY,KAAK5Y;AAClD,YAAM,EAACyJ,eAAeD,eAAc,IAAI,KAAKG,kBAAkB3V,QAAOyJ,IAAAA;AACtE,YAAMyC,QAAQhC,OAAOG;AACrB,YAAM8B,QAAQhC,OAAOE;AACrB,YAAM,EAACgb,UAAUF,QAAAA,IAAW,KAAKze;AACjC,YAAM4e,eAAeC,SAASF,QAAYA,IAAAA,WAAWna,OAAOE;AAC5D,YAAMoa,eAAe,KAAKtmB,MAAMwW,uBAAuB7E,SAASpH,SAAS;AACzE,YAAM1B,OAAM/H,SAAQgS;AACpB,YAAMyT,cAAchH,OAAO9d;AAC3B,UAAI+kB,aAAa1lB,SAAQ,KAAK,KAAK8S,UAAU9S,SAAQ,CAAA;AAErD,eAASY,KAAI,GAAGA,KAAI6kB,aAAa,EAAE7kB,IAAG;AACpC,cAAM8d,SAAQD,OAAO7d,EAAE;AACvB,cAAM0F,aAAakf,eAAe9G,SAAQ,CAAA;AAE1C,YAAI9d,KAAIZ,UAASY,MAAKmH,MAAK;AACzBzB,qBAAWuY,OAAO;AAClB;;AAGF,cAAM9S,SAAS,KAAK+G,UAAUlS,EAAAA;AAC9B,cAAM+kB,WAAW3M,cAAcjN,OAAOI,KAAM,CAAA;AAC5C,cAAMwS,SAASrY,WAAW4F,KAAM,IAAGhC,OAAOqO,iBAAiBxM,OAAOG,KAAAA,GAAQtL,EAAAA;AAC1E,cAAMge,SAAStY,WAAW6F,KAAM,IAAG0E,SAAS8U,WAAWxb,OAAOsR,aAAY,IAAKtR,OAAOoO,iBAAiBzK,WAAW,KAAKzE,WAAWc,QAAQ4B,QAAQ+B,QAAAA,IAAY/B,OAAOI,KAAM,GAAEvL,EAAE;AAE/K0F,mBAAWuY,OAAOlC,MAAMgC,MAAAA,KAAWhC,MAAMiC,MAAW+G,KAAAA;AACpDrf,mBAAWlE,OAAOxB,KAAI,KAAK,KAAM0X,IAAIvM,OAAOG,KAAM,IAAGwZ,WAAWxZ,KAAAA,CAAM,IAAKoZ;AAC3E,YAAIH,SAAS;AACX7e,qBAAWyF,SAASA;AACpBzF,qBAAW8G,MAAMwX,SAAS5a,KAAKpJ,EAAE;;AAGnC,YAAI4U,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAG8d,OAAM/Z,SAAS,WAAW8E,IAAI;;AAGxG,YAAI,CAAC+b,cAAc;AACjB,eAAKzP,cAAc2I,QAAO9d,IAAG0F,YAAYmD,IAAAA;;AAG3Cic,qBAAa3Z;MACf;IACF;IAKA2H,iBAAiB;AACf,YAAMzJ,OAAO,KAAK+B;AAClB,YAAMgB,UAAU/C,KAAK+C;AACrB,YAAM4Y,SAAS5Y,QAAQtG,WAAWsG,QAAQtG,QAAQqc,eAAe;AACjE,YAAM/Y,QAAOC,KAAKD,QAAQ,CAAA;AAC1B,UAAI,CAACA,MAAKrJ,QAAQ;AAChB,eAAOilB;;AAET,YAAMC,aAAa7b,MAAK,CAAE,EAAC3C,KAAK,KAAKiN,0BAA0B,CAAA,CAAA;AAC/D,YAAMwR,YAAY9b,MAAKA,MAAKrJ,SAAS,CAAE,EAAC0G,KAAK,KAAKiN,0BAA0BtK,MAAKrJ,SAAS,CAAA,CAAA;AAC1F,aAAOb,KAAKoC,IAAI0jB,QAAQC,YAAYC,SAAa,IAAA;IACnD;IAEAjlB,OAAO;AACL,YAAMoJ,OAAO,KAAK+B;AAClB/B,WAAK+C,QAAQ+Y,oBAAoB,KAAK7mB,MAAMgV,WAAWjK,KAAKC,OAAOG,IAAI;AACvE,YAAMxJ,KAAI;IACZ;EACF;AAvIE,gBAFmB6jB,gBAEZ5Z,MAAK;AAKZ,gBAPmB4Z,gBAOZ3e,YAAW;IAChBgJ,oBAAoB;IACpBC,iBAAiB;IAEjBkW,UAAU;IACVG,UAAU;;AAMZ,gBAlBmBX,gBAkBZzG,aAAY;IACjBvR,QAAQ;MACNwR,SAAS;QACP7e,MAAM;MACR;MACAgf,SAAS;QACPhf,MAAM;MACR;IACF;;AC5BW,MAAM2mB,sBAAN,cAAkCjY,kBAAAA;IAoF/CrP,YAAYQ,OAAOwK,cAAc;AAC/B,YAAMxK,OAAOwK,YAAAA;AAEb,WAAKgX,cAAc1hB;AACnB,WAAK2hB,cAAc3hB;IACrB;IAEA2U,iBAAiBvK,QAAO;AACtB,YAAMa,OAAO,KAAK+B;AAClB,YAAM9M,QAAQ,KAAKA;AACnB,YAAMsT,SAAStT,MAAM8K,KAAKwI,UAAU,CAAA;AACpC,YAAMpL,QAAQwb,aAAa3Y,KAAKqD,QAAQlE,MAAAA,EAAOT,GAAGzJ,MAAMwH,QAAQmc,MAAM;AAEtE,aAAO;QACLjP,OAAOpB,OAAOpJ,MAAAA,KAAU;QACxBhC;MACF;IACF;IAEAiL,gBAAgBpI,MAAMD,OAAMhK,QAAOgS,OAAO;AACxC,aAAOiU,4BAA4BC,KAAK,IAAI,EAAEjc,MAAMD,OAAMhK,QAAOgS,KAAAA;IACnE;IAEApN,OAAO6E,MAAM;AACX,YAAMyX,OAAO,KAAKlV,YAAYhC;AAE9B,WAAKmc,cAAa;AAClB,WAAKtP,eAAeqK,MAAM,GAAGA,KAAKvgB,QAAQ8I,IAAAA;IAC5C;IAKA2J,YAAY;AACV,YAAMnJ,OAAO,KAAK+B;AAClB,YAAMiH,SAAQ;QAAClT,KAAKmL,OAAOE;QAAmBlJ,KAAKgJ,OAAOC;MAAiB;AAE3ElB,WAAKD,KAAKtK,QAAQ,CAACwN,SAAS9D,WAAU;AACpC,cAAM2C,SAAS,KAAK+G,UAAU1J,MAAAA,EAAOT;AAErC,YAAI,CAACgU,MAAM5Q,MAAW,KAAA,KAAK7M,MAAMme,kBAAkBjU,MAAQ,GAAA;AACzD,cAAI2C,SAASkH,OAAMlT,KAAK;AACtBkT,YAAAA,OAAMlT,MAAMgM;;AAGd,cAAIA,SAASkH,OAAM/Q,KAAK;AACtB+Q,YAAAA,OAAM/Q,MAAM6J;;;MAGlB,CAAA;AAEA,aAAOkH;IACT;IAKAkT,gBAAgB;AACd,YAAMjnB,QAAQ,KAAKA;AACnB,YAAMgV,YAAYhV,MAAMgV;AACxB,YAAMrM,OAAO3I,MAAMwH;AACnB,YAAM0f,UAAUtmB,KAAKC,IAAImU,UAAU5L,QAAQ4L,UAAU1L,MAAM0L,UAAU3L,SAAS2L,UAAU7L,GAAG;AAE3F,YAAMsY,cAAc7gB,KAAKoC,IAAIkkB,UAAU,GAAG,CAAA;AAC1C,YAAM1F,cAAc5gB,KAAKoC,IAAI2F,KAAKwe,mBAAmB,cAAe,MAAQxe,KAAKwe,mBAAoB,GAAG,CAAA;AACxG,YAAMvE,gBAAgBnB,cAAcD,eAAexhB,MAAMonB,uBAAsB;AAE/E,WAAK3F,cAAcA,cAAemB,eAAe,KAAK1Y;AACtD,WAAKsX,cAAc,KAAKC,cAAcmB;IACxC;IAEAjL,eAAeqK,MAAMlhB,QAAOgS,OAAOvI,MAAM;AACvC,YAAMoH,QAAQpH,SAAS;AACvB,YAAMvK,QAAQ,KAAKA;AACnB,YAAM2I,OAAO3I,MAAMwH;AACnB,YAAM4b,gBAAgBza,KAAK7B;AAC3B,YAAM2B,SAAQ,KAAKqE,YAAYwE;AAC/B,YAAM+R,UAAU5a,OAAM4e;AACtB,YAAM/D,UAAU7a,OAAM6e;AACtB,YAAMC,oBAAoB9e,OAAM+e,cAAc,CAAA,IAAK,MAAMnG;AACzD,UAAIP,QAAQyG;AACZ,UAAI7lB;AAEJ,YAAM+lB,eAAe,MAAM,KAAKC,qBAAoB;AAEpD,WAAKhmB,KAAI,GAAGA,KAAIZ,QAAO,EAAEY,IAAG;AAC1Bof,iBAAS,KAAK6G,cAAcjmB,IAAG6I,MAAMkd,YAAAA;MACvC;AACA,WAAK/lB,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAOpR,MAAK;AACtC,cAAM8hB,MAAMxB,KAAKtgB,EAAE;AACnB,YAAI2e,aAAaS;AACjB,YAAIR,WAAWQ,QAAQ,KAAK6G,cAAcjmB,IAAG6I,MAAMkd,YAAAA;AACnD,YAAIhG,cAAczhB,MAAMme,kBAAkBzc,EAAAA,IAAK+G,OAAMmf,8BAA8B,KAAKhU,UAAUlS,EAAG+H,EAAAA,CAAC,IAAI;AAC1GqX,gBAAQR;AAER,YAAI3O,OAAO;AACT,cAAIyR,cAAcG,cAAc;AAC9B9B,0BAAc;;AAEhB,cAAI2B,cAAcF,eAAe;AAC/B7C,yBAAaC,WAAWiH;;;AAI5B,cAAMngB,aAAa;UACjB6B,GAAGoa;UACHna,GAAGoa;UACH9B,aAAa;UACbC;UACApB;UACAC;UACA9Y,SAAS,KAAK4N,0BAA0B1T,IAAG8hB,IAAI/d,SAAS,WAAW8E,IAAI;QACzE;AAEA,aAAKsM,cAAc2M,KAAK9hB,IAAG0F,YAAYmD,IAAAA;MACzC;IACF;IAEAmd,uBAAuB;AACrB,YAAM3c,OAAO,KAAK+B;AAClB,UAAIgG,QAAQ;AAEZ/H,WAAKD,KAAKtK,QAAQ,CAACwN,SAAS9D,WAAU;AACpC,YAAI,CAACuT,MAAM,KAAK7J,UAAU1J,MAAAA,EAAOT,CAAC,KAAK,KAAKzJ,MAAMme,kBAAkBjU,MAAQ,GAAA;AAC1E4I;;MAEJ,CAAA;AAEA,aAAOA;IACT;IAKA6U,cAAczd,QAAOK,MAAMkd,cAAc;AACvC,aAAO,KAAKznB,MAAMme,kBAAkBjU,MAChC0X,IAAAA,UAAU,KAAKxM,0BAA0BlL,QAAOK,IAAAA,EAAMuW,SAAS2G,YAAAA,IAC/D;IACN;EACF;AA7NE,gBAFmBX,qBAEZlb,MAAK;AAKZ,gBAPmBkb,qBAOZjgB,YAAW;IAChBiJ,iBAAiB;IACjBhJ,WAAW;MACToc,eAAe;MACfK,cAAc;IAChB;IACA7b,YAAY;MACVoX,SAAS;QACP3e,MAAM;QACNiH,YAAY;UAAC;UAAK;UAAK;UAAc;UAAY;UAAe;QAAc;MAChF;IACF;IACA4J,WAAW;IACXqP,YAAY;;AAMd,gBA1BmByG,qBA0BZ/H,aAAY;IACjBuF,aAAa;IAEbC,SAAS;MACPC,QAAQ;QACNlR,QAAQ;UACNmR,eAAezkB,OAAO;AACpB,kBAAM8K,QAAO9K,MAAM8K;AACnB,gBAAIA,MAAKwI,OAAO7R,UAAUqJ,MAAKyG,SAAS9P,QAAQ;AAC9C,oBAAM,EAAC6R,QAAQ,EAACoR,YAAY9gB,OAAAA,OAAAA,EAAM,IAAI5D,MAAMwkB,OAAOhd;AAEnD,qBAAOsD,MAAKwI,OAAOqR,IAAI,CAACjQ,OAAOhT,OAAM;AACnC,sBAAMqJ,OAAO/K,MAAMwR,eAAe,CAAA;AAClC,sBAAMoT,QAAQ7Z,KAAK6B,WAAWsI,SAASxT,EAAAA;AAEvC,uBAAO;kBACLmjB,MAAMnQ;kBACNoQ,WAAWF,MAAMG;kBACjBC,aAAaJ,MAAMK;kBACnBC,WAAWthB;kBACXuhB,WAAWP,MAAMf;kBACjBa;kBACA/V,QAAQ,CAAC3O,MAAMme,kBAAkBzc,EAAAA;kBAGjCwI,OAAOxI;gBACT;cACF,CAAA;;AAEF,mBAAO,CAAA;UACT;QACF;QAEA0jB,QAAQC,IAAGC,YAAYd,QAAQ;AAC7BA,iBAAOxkB,MAAMulB,qBAAqBD,WAAWpb,KAAK;AAClDsa,iBAAOxkB,MAAM0F,OAAM;QACrB;MACF;IACF;IAEA8H,QAAQ;MACN/D,GAAG;QACDtJ,MAAM;QACN0nB,YAAY;UACVC,SAAS;QACX;QACA1I,aAAa;QACbF,MAAM;UACJ6I,UAAU;QACZ;QACAC,aAAa;UACXF,SAAS;QACX;QACAzH,YAAY;MACd;IACF;;ACjFW,MAAM4H,gBAAN,cAA4B1G,mBAAAA;EAoB3C;AAlBE,gBAFmB0G,eAEZrc,MAAK;AAKZ,gBAPmBqc,eAOZphB,YAAW;IAEhBkZ,QAAQ;IAGRF,UAAU;IAGVC,eAAe;IAGfR,QAAQ;;AClBG,MAAM4I,kBAAN,cAA8BrZ,kBAAAA;IAmC3C4F,iBAAiBvK,QAAO;AACtB,YAAMe,SAAS,KAAK6B,YAAY7B;AAChC,YAAM4B,SAAS,KAAK+G,UAAU1J,MAAAA;AAE9B,aAAO;QACLwK,OAAOzJ,OAAOsI,UAAS,EAAGrJ,MAAM;QAChChC,OAAO,KAAK+C,OAAO0J,iBAAiB9H,OAAO5B,OAAOE,IAAI,CAAC;MACzD;IACF;IAEAgI,gBAAgBpI,MAAMD,OAAMhK,QAAOgS,OAAO;AACxC,aAAOiU,4BAA4BC,KAAK,IAAI,EAAEjc,MAAMD,OAAMhK,QAAOgS,KAAAA;IACnE;IAEApN,OAAO6E,MAAM;AACX,YAAMQ,OAAO,KAAK+B;AAClB,YAAM2Y,OAAO1a,KAAK+C;AAClB,YAAMyR,SAASxU,KAAKD,QAAQ,CAAA;AAC5B,YAAMwI,SAASvI,KAAKC,OAAOuI,UAAS;AAGpCkS,WAAKlG,SAASA;AAEd,UAAIhV,SAAS,UAAU;AACrB,cAAM/C,WAAU,KAAK2N,6BAA6B5K,IAAAA;AAClD,YAAI,CAAC,KAAK/C,QAAQwe,UAAU;AAC1Bxe,UAAAA,SAAQqc,cAAc;;AAGxB,cAAMzc,aAAa;UACjBlC,OAAO;UACPijB,WAAW7U,OAAO7R,WAAW8d,OAAO9d;UACpC+F,SAAAA;QACF;AAEA,aAAKqP,cAAc4O,MAAM3lB,QAAWsH,YAAYmD,IAAAA;;AAIlD,WAAKoN,eAAe4H,QAAQ,GAAGA,OAAO9d,QAAQ8I,IAAAA;IAChD;IAEAoN,eAAe4H,QAAQze,QAAOgS,OAAOvI,MAAM;AACzC,YAAM9B,SAAQ,KAAKqE,YAAYwE;AAC/B,YAAMK,QAAQpH,SAAS;AAEvB,eAAS7I,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAOpR,MAAK;AAC1C,cAAM8d,SAAQD,OAAO7d,EAAE;AACvB,cAAM8F,WAAU,KAAK4N,0BAA0B1T,IAAG8d,OAAM/Z,SAAS,WAAW8E,IAAI;AAChF,cAAM6d,gBAAgB3f,OAAM4f,yBAAyB3mB,IAAG,KAAKkS,UAAUlS,EAAAA,EAAG+H,CAAC;AAE3E,cAAMR,KAAI0I,QAAQlJ,OAAM4e,UAAUe,cAAcnf;AAChD,cAAMC,KAAIyI,QAAQlJ,OAAM6e,UAAUc,cAAclf;AAEhD,cAAM9B,aAAa;UACjB6B,GAAAA;UACAC,GAAAA;UACA4X,OAAOsH,cAActH;UACrBnB,MAAMlC,MAAMxU,EAAAA,KAAMwU,MAAMvU,EAAAA;UACxB1B,SAAAA;QACF;AAEA,aAAKqP,cAAc2I,QAAO9d,IAAG0F,YAAYmD,IAAAA;MAC3C;IACF;EACF;AAlGE,gBAFmB2d,iBAEZtc,MAAK;AAKZ,gBAPmBsc,iBAOZrhB,YAAW;IAChBgJ,oBAAoB;IACpBC,iBAAiB;IACjBkB,WAAW;IACXgV,UAAU;IACVlR,UAAU;MACR2Q,MAAM;QACJvV,MAAM;MACR;IACF;;AAMF,gBAtBmBgY,iBAsBZnJ,aAAY;IACjBuF,aAAa;IAEb9W,QAAQ;MACN/D,GAAG;QACDtJ,MAAM;MACR;IACF;;AC3BW,MAAMmoB,oBAAN,cAAgCzZ,kBAAAA;IAoC7C4F,iBAAiBvK,QAAO;AACtB,YAAMa,OAAO,KAAK+B;AAClB,YAAMwG,SAAS,KAAKtT,MAAM8K,KAAKwI,UAAU,CAAA;AACzC,YAAM,EAACvK,QAAQC,OAAAA,IAAU+B;AACzB,YAAM8B,SAAS,KAAK+G,UAAU1J,MAAAA;AAC9B,YAAMjB,KAAIF,OAAO4L,iBAAiB9H,OAAO5D,CAAC;AAC1C,YAAMC,KAAIF,OAAO2L,iBAAiB9H,OAAO3D,CAAC;AAE1C,aAAO;QACLwL,OAAOpB,OAAOpJ,MAAAA,KAAU;QACxBhC,OAAO,MAAMe,KAAI,OAAOC,KAAI;MAC9B;IACF;IAEAxD,OAAO6E,MAAM;AACX,YAAMQ,OAAO,KAAK+B;AAClB,YAAM,EAAChC,MAAMyU,SAAS,CAAA,EAAE,IAAIxU;AAE5B,YAAM4a,qBAAqB,KAAK3lB,MAAMwW;AACtC,UAAI,EAAC1V,OAAAA,QAAOgS,MAAAA,IAAS8S,iCAAiC7a,MAAMwU,QAAQoG,kBAAAA;AAEpE,WAAKpW,aAAazO;AAClB,WAAK0O,aAAasD;AAElB,UAAI+S,oBAAoB9a,IAAO,GAAA;AAC7BjK,QAAAA,SAAQ;AACRgS,gBAAQyM,OAAO9d;;AAGjB,UAAI,KAAK+F,QAAQwe,UAAU;AAGzB,YAAI,CAAC,KAAKnW,oBAAoB;AAC5B,eAAKI,YAAW;;AAElB,cAAM,EAACnC,SAAS2X,MAAMC,SAAAA,IAAY3a;AAGlC0a,aAAKnf,SAAS,KAAKtG;AACnBylB,aAAKK,gBAAgB,KAAK5b;AAC1Bub,aAAKM,aAAa,CAAC,CAACL,SAASK;AAC7BN,aAAKlG,SAASA;AAEd,cAAM/X,WAAU,KAAK2N,6BAA6B5K,IAAAA;AAClD/C,QAAAA,SAAQye,UAAU,KAAKze,QAAQye;AAC/B,aAAKpP,cAAc4O,MAAM3lB,QAAW;UAClComB,UAAU,CAACP;UACXne,SAAAA;WACC+C,IAAAA;MACL,WAAW,KAAKsF,oBAAoB;AAElC,eAAO9E,KAAK+C;AACZ,aAAK+B,qBAAqB;;AAI5B,WAAK8H,eAAe4H,QAAQze,QAAOgS,OAAOvI,IAAAA;IAC5C;IAEA0F,cAAc;AACZ,YAAM,EAAC+V,SAAQ,IAAI,KAAKxe;AAExB,UAAI,CAAC,KAAKqI,sBAAsBmW,UAAU;AACxC,aAAKnW,qBAAqB,KAAK7P,MAAMuoB,SAASC,WAAW,MAAA;;AAG3D,YAAMvY,YAAW;IACnB;IAEA0H,eAAe4H,QAAQze,QAAOgS,OAAOvI,MAAM;AACzC,YAAMoH,QAAQpH,SAAS;AACvB,YAAM,EAACS,QAAQC,QAAQ2D,UAAU8W,SAAAA,IAAY,KAAK5Y;AAClD,YAAM4J,YAAY,KAAKtB,0BAA0BtU,QAAOyJ,IAAAA;AACxD,YAAMgM,gBAAgB,KAAKF,iBAAiBK,SAAAA;AAC5C,YAAMJ,iBAAiB,KAAKA,eAAe/L,MAAMgM,aAAAA;AACjD,YAAMvJ,QAAQhC,OAAOG;AACrB,YAAM8B,QAAQhC,OAAOE;AACrB,YAAM,EAACgb,UAAUF,QAAAA,IAAW,KAAKze;AACjC,YAAM4e,eAAeC,SAASF,QAAYA,IAAAA,WAAWna,OAAOE;AAC5D,YAAMoa,eAAe,KAAKtmB,MAAMwW,uBAAuB7E,SAASpH,SAAS;AACzE,UAAIic,aAAa1lB,SAAQ,KAAK,KAAK8S,UAAU9S,SAAQ,CAAA;AAErD,eAASY,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAO,EAAEpR,IAAG;AAC1C,cAAM8d,SAAQD,OAAO7d,EAAE;AACvB,cAAMmL,SAAS,KAAK+G,UAAUlS,EAAAA;AAC9B,cAAM0F,aAAakf,eAAe9G,SAAQ,CAAA;AAC1C,cAAMiH,WAAW3M,cAAcjN,OAAOI,KAAM,CAAA;AAC5C,cAAMwS,SAASrY,WAAW4F,KAAM,IAAGhC,OAAOqO,iBAAiBxM,OAAOG,KAAAA,GAAQtL,EAAAA;AAC1E,cAAMge,SAAStY,WAAW6F,KAAM,IAAG0E,SAAS8U,WAAWxb,OAAOsR,aAAY,IAAKtR,OAAOoO,iBAAiBzK,WAAW,KAAKzE,WAAWc,QAAQ4B,QAAQ+B,QAAAA,IAAY/B,OAAOI,KAAM,GAAEvL,EAAE;AAE/K0F,mBAAWuY,OAAOlC,MAAMgC,MAAAA,KAAWhC,MAAMiC,MAAW+G,KAAAA;AACpDrf,mBAAWlE,OAAOxB,KAAI,KAAK,KAAM0X,IAAIvM,OAAOG,KAAM,IAAGwZ,WAAWxZ,KAAAA,CAAM,IAAKoZ;AAC3E,YAAIH,SAAS;AACX7e,qBAAWyF,SAASA;AACpBzF,qBAAW8G,MAAMwX,SAAS5a,KAAKpJ,EAAE;;AAGnC,YAAI4U,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAG8d,OAAM/Z,SAAS,WAAW8E,IAAI;;AAGxG,YAAI,CAAC+b,cAAc;AACjB,eAAKzP,cAAc2I,QAAO9d,IAAG0F,YAAYmD,IAAAA;;AAG3Cic,qBAAa3Z;MACf;AAEA,WAAK+J,oBAAoBL,eAAehM,MAAMmM,SAAAA;IAChD;IAKAlC,iBAAiB;AACf,YAAMzJ,OAAO,KAAK+B;AAClB,YAAMhC,QAAOC,KAAKD,QAAQ,CAAA;AAE1B,UAAI,CAAC,KAAKtD,QAAQwe,UAAU;AAC1B,YAAIhjB,OAAM;AACV,iBAAStB,KAAIoJ,MAAKrJ,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AACzCsB,UAAAA,OAAMpC,KAAKoC,IAAIA,MAAK8H,MAAKpJ,EAAAA,EAAGyG,KAAK,KAAKiN,0BAA0B1T,EAAM,CAAA,IAAA,CAAA;QACxE;AACA,eAAOsB,OAAM,KAAKA;;AAGpB,YAAM8K,UAAU/C,KAAK+C;AACrB,YAAM4Y,SAAS5Y,QAAQtG,WAAWsG,QAAQtG,QAAQqc,eAAe;AAEjE,UAAI,CAAC/Y,MAAKrJ,QAAQ;AAChB,eAAOilB;;AAGT,YAAMC,aAAa7b,MAAK,CAAE,EAAC3C,KAAK,KAAKiN,0BAA0B,CAAA,CAAA;AAC/D,YAAMwR,YAAY9b,MAAKA,MAAKrJ,SAAS,CAAE,EAAC0G,KAAK,KAAKiN,0BAA0BtK,MAAKrJ,SAAS,CAAA,CAAA;AAC1F,aAAOb,KAAKoC,IAAI0jB,QAAQC,YAAYC,SAAa,IAAA;IACnD;EACF;AA3KE,gBAFmB0B,mBAEZ1c,MAAK;AAKZ,gBAPmB0c,mBAOZzhB,YAAW;IAChBgJ,oBAAoB;IACpBC,iBAAiB;IACjBkW,UAAU;IACV9V,MAAM;;AAMR,gBAjBmBoY,mBAiBZvJ,aAAY;IAEjB0J,aAAa;MACXle,MAAM;IACR;IAEAiD,QAAQ;MACNvE,GAAG;QACD9I,MAAM;MACR;MACA+I,GAAG;QACD/I,MAAM;MACR;IACF;;;;;;;;;;;;;AC6BJ,WAASuoB,WAAwB;AAC/B,UAAM,IAAIC,MAAM,iFAAmF;EACrG;AAQA,MAAMC,kBAAN,MAAMA;;;;;;;;;;;IAYJ,OAAOC,SACLC,SACA;AACAniB,aAAOyB,OAAOwgB,gBAAgBG,WAAWD,OAAAA;IAC3C;IAESthB;IAEThI,YAAYgI,UAAqB;AAC/B,WAAKA,UAAUA,YAAW,CAAA;IAC5B;;IAGAwhB,OAAO;IAAA;IAEPC,UAAiD;AAC/C,aAAOP,SAAAA;IACT;IAEA7V,QAAuB;AACrB,aAAO6V,SAAAA;IACT;IAEAQ,SAAiB;AACf,aAAOR,SAAAA;IACT;IAEA/lB,MAAc;AACZ,aAAO+lB,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;EAMT;ACpHA,WAASW,aAAaC,SAASre,MAAMjD,OAAOuhB,WAAW;AACrD,UAAM,EAAC7c,YAAY9B,MAAAA,OAAMkI,QAAAA,IAAWwW;AACpC,UAAMxe,SAAS4B,WAAWE,YAAY9B;AACtC,UAAMmb,WAAWqD,QAAQ1b,UAAU0b,QAAQ1b,QAAQtG,UAAUgiB,QAAQ1b,QAAQtG,QAAQ2e,WAAW,OAAO;AAEvG,QAAInb,UAAUG,SAASH,OAAOG,QAAQA,SAAS,OAAO6H,WAAWlI,MAAKrJ,QAAQ;AAC5E,YAAMioB,eAAe1e,OAAO2e,iBAAiBC,gBAAgBC;AAC7D,UAAI,CAACJ,WAAW;AACd,cAAMK,SAASJ,aAAa5e,OAAMK,MAAMjD,KAAAA;AACxC,YAAIie,UAAU;AACZ,gBAAM,EAAClb,OAAAA,IAAU2B,WAAWE;AAC5B,gBAAM,EAACsB,QAAO,IAAIob;AAElB,gBAAMO,sBAAuB3b,QAC1B4b,MAAM,GAAGF,OAAOG,KAAK,CACrBrhB,EAAAA,QAAO,EACPshB,UACC1K,CAAAA,WAAS,CAAC1F,cAAc0F,OAAMvU,OAAOE,IAAI,CAAC,CAAA;AAC9C2e,iBAAOG,MAAMrpB,KAAKoC,IAAI,GAAG+mB,mBAAAA;AAEzB,gBAAMI,sBAAuB/b,QAC1B4b,MAAMF,OAAOM,EAAE,EACfF,UACC1K,CAAAA,WAAS,CAAC1F,cAAc0F,OAAMvU,OAAOE,IAAI,CAAC,CAAA;AAC9C2e,iBAAOM,MAAMxpB,KAAKoC,IAAI,GAAGmnB,mBAAAA;;AAE3B,eAAOL;iBACEld,WAAW0C,gBAAgB;AAIpC,cAAM+a,KAAKvf,MAAK,CAAE;AAClB,cAAMiJ,SAAQ,OAAOsW,GAAGC,aAAa,cAAcD,GAAGC,SAASnf,IAAAA;AAC/D,YAAI4I,QAAO;AACT,gBAAMjT,SAAQ4oB,aAAa5e,OAAMK,MAAMjD,QAAQ6L,MAAAA;AAC/C,gBAAMlL,OAAM6gB,aAAa5e,OAAMK,MAAMjD,QAAQ6L,MAAAA;AAC7C,iBAAO;YAACkW,IAAInpB,OAAMmpB;YAAIG,IAAIvhB,KAAIuhB;UAAE;;;;AAKtC,WAAO;MAACH,IAAI;MAAGG,IAAItf,MAAKrJ,SAAS;IAAC;EACpC;AAUA,WAAS8oB,yBAAyBvqB,OAAOmL,MAAMqf,WAAUC,SAAShB,WAAW;AAC3E,UAAM1f,WAAW/J,MAAM0qB,6BAA4B;AACnD,UAAMxiB,QAAQsiB,UAASrf,IAAK;AAC5B,aAASzJ,KAAI,GAAGuI,OAAOF,SAAStI,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACrD,YAAM,EAACwI,OAAAA,QAAOY,MAAAA,MAAAA,IAAQf,SAASrI,EAAE;AACjC,YAAM,EAACuoB,IAAIG,GAAAA,IAAMb,aAAaxf,SAASrI,EAAAA,GAAIyJ,MAAMjD,OAAOuhB,SAAAA;AACxD,eAASkB,KAAIV,IAAIU,MAAKP,IAAI,EAAEO,IAAG;AAC7B,cAAM3c,UAAUlD,MAAK6f,EAAE;AACvB,YAAI,CAAC3c,QAAQ2R,MAAM;AACjB8K,kBAAQzc,SAAS9D,QAAOygB,EAAAA;;MAE5B;IACF;EACF;AAOA,WAASC,yBAAyBzf,MAAM;AACtC,UAAM0f,OAAO1f,KAAKuS,QAAQ,GAAA,MAAS;AACnC,UAAMoN,OAAO3f,KAAKuS,QAAQ,GAAA,MAAS;AAEnC,WAAO,SAASqN,KAAKC,KAAK;AACxB,YAAMC,SAASJ,OAAOjqB,KAAKwY,IAAI2R,IAAI9hB,IAAI+hB,IAAI/hB,CAAC,IAAI;AAChD,YAAMiiB,SAASJ,OAAOlqB,KAAKwY,IAAI2R,IAAI7hB,IAAI8hB,IAAI9hB,CAAC,IAAI;AAChD,aAAOtI,KAAKuqB,KAAKvqB,KAAKwqB,IAAIH,QAAQ,CAAKrqB,IAAAA,KAAKwqB,IAAIF,QAAQ,CAAA,CAAA;IAC1D;EACF;AAWA,WAASG,kBAAkBrrB,OAAOwqB,WAAUrf,MAAMmgB,kBAAkBC,kBAAkB;AACpF,UAAM/pB,QAAQ,CAAA;AAEd,QAAI,CAAC+pB,oBAAoB,CAACvrB,MAAMwrB,cAAchB,SAAW,GAAA;AACvD,aAAOhpB;;AAGT,UAAMiqB,iBAAiB,SAASzd,SAASxD,cAAcN,QAAO;AAC5D,UAAI,CAACqhB,oBAAoB,CAACG,eAAe1d,SAAShO,MAAMgV,WAAW,CAAI,GAAA;AACrE;;AAEF,UAAIhH,QAAQ2d,QAAQnB,UAASvhB,GAAGuhB,UAASthB,GAAGoiB,gBAAmB,GAAA;AAC7D9pB,cAAMkB,KAAK;UAACsL;UAASxD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEAqgB,6BAAyBvqB,OAAOmL,MAAMqf,WAAUiB,gBAAgB,IAAI;AACpE,WAAOjqB;EACT;AAUA,WAASoqB,sBAAsB5rB,OAAOwqB,WAAUrf,MAAMmgB,kBAAkB;AACtE,QAAI9pB,QAAQ,CAAA;AAEZ,aAASiqB,eAAezd,SAASxD,cAAcN,QAAO;AACpD,YAAM,EAACmW,YAAYC,SAAAA,IAAYtS,QAAQ6d,SAAS;QAAC;QAAc;SAAaP,gBAAAA;AAC5E,YAAM,EAACxK,MAAAA,IAASgL,kBAAkB9d,SAAS;QAAC/E,GAAGuhB,UAASvhB;QAAGC,GAAGshB,UAASthB;MAAC,CAAA;AAExE,UAAI6X,cAAcD,OAAOT,YAAYC,QAAW,GAAA;AAC9C9e,cAAMkB,KAAK;UAACsL;UAASxD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEAqgB,6BAAyBvqB,OAAOmL,MAAMqf,WAAUiB,cAAAA;AAChD,WAAOjqB;EACT;AAYA,WAASuqB,yBAAyB/rB,OAAOwqB,WAAUrf,MAAMse,WAAW6B,kBAAkBC,kBAAkB;AACtG,QAAI/pB,QAAQ,CAAA;AACZ,UAAMwqB,iBAAiBpB,yBAAyBzf,IAAAA;AAChD,QAAI8gB,cAAcjgB,OAAOE;AAEzB,aAASuf,eAAezd,SAASxD,cAAcN,QAAO;AACpD,YAAMyhB,WAAU3d,QAAQ2d,QAAQnB,UAASvhB,GAAGuhB,UAASthB,GAAGoiB,gBAAAA;AACxD,UAAI7B,aAAa,CAACkC,UAAS;AACzB;;AAGF,YAAM7O,UAAS9O,QAAQke,eAAeZ,gBAAAA;AACtC,YAAMa,cAAc,CAAC,CAACZ,oBAAoBvrB,MAAMwrB,cAAc1O,OAAAA;AAC9D,UAAI,CAACqP,eAAe,CAACR,UAAS;AAC5B;;AAGF,YAAMS,WAAWJ,eAAexB,WAAU1N,OAAAA;AAC1C,UAAIsP,WAAWH,aAAa;AAC1BzqB,gBAAQ;UAAC;YAACwM;YAASxD;YAAcN,OAAAA;UAAK;QAAE;AACxC+hB,sBAAcG;iBACLA,aAAaH,aAAa;AAEnCzqB,cAAMkB,KAAK;UAACsL;UAASxD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEAqgB,6BAAyBvqB,OAAOmL,MAAMqf,WAAUiB,cAAAA;AAChD,WAAOjqB;EACT;AAYA,WAAS6qB,gBAAgBrsB,OAAOwqB,WAAUrf,MAAMse,WAAW6B,kBAAkBC,kBAAkB;AAC7F,QAAI,CAACA,oBAAoB,CAACvrB,MAAMwrB,cAAchB,SAAW,GAAA;AACvD,aAAO,CAAA;;AAGT,WAAOrf,SAAS,OAAO,CAACse,YACpBmC,sBAAsB5rB,OAAOwqB,WAAUrf,MAAMmgB,gBAAAA,IAC7CS,yBAAyB/rB,OAAOwqB,WAAUrf,MAAMse,WAAW6B,kBAAkBC,gBAAiB;EACpG;AAWA,WAASe,aAAatsB,OAAOwqB,WAAUrf,MAAMse,WAAW6B,kBAAkB;AACxE,UAAM9pB,QAAQ,CAAA;AACd,UAAM+qB,cAAcphB,SAAS,MAAM,aAAa;AAChD,QAAIqhB,iBAAiB;AAErBjC,6BAAyBvqB,OAAOmL,MAAMqf,WAAU,CAACxc,SAASxD,cAAcN,WAAU;AAChF,UAAI8D,QAAQue,WAAY,KAAIve,QAAQue,WAAY,EAAC/B,UAASrf,IAAK,GAAEmgB,gBAAmB,GAAA;AAClF9pB,cAAMkB,KAAK;UAACsL;UAASxD;UAAcN,OAAAA;QAAK,CAAA;AACxCsiB,yBAAiBA,kBAAkBxe,QAAQ2d,QAAQnB,UAASvhB,GAAGuhB,UAASthB,GAAGoiB,gBAAAA;;IAE/E,CAAA;AAIA,QAAI7B,aAAa,CAAC+C,gBAAgB;AAChC,aAAO,CAAA;;AAET,WAAOhrB;EACT;AAMA,MAAA,cAAe;IAEb+oB;IAGAkC,OAAO;MAYLviB,MAAMlK,OAAOqlB,IAAG7d,UAAS8jB,kBAAkB;AACzC,cAAMd,YAAWkC,oBAAoBrH,IAAGrlB,KAAAA;AAExC,cAAMmL,OAAO3D,SAAQ2D,QAAQ;AAC7B,cAAMogB,mBAAmB/jB,SAAQ+jB,oBAAoB;AACrD,cAAM/pB,QAAQgG,SAAQiiB,YAClB4B,kBAAkBrrB,OAAOwqB,WAAUrf,MAAMmgB,kBAAkBC,gBAAAA,IAC3Dc,gBAAgBrsB,OAAOwqB,WAAUrf,MAAM,OAAOmgB,kBAAkBC,gBAAiB;AACrF,cAAMzW,YAAW,CAAA;AAEjB,YAAI,CAACtT,MAAMC,QAAQ;AACjB,iBAAO,CAAA;;AAGTzB,cAAM0qB,6BAA4B,EAAGlqB,QAAQ,CAACuK,SAAS;AACrD,gBAAMb,SAAQ1I,MAAM,CAAA,EAAG0I;AACvB,gBAAM8D,UAAUjD,KAAKD,KAAKZ,MAAM;AAGhC,cAAI8D,WAAW,CAACA,QAAQ2R,MAAM;AAC5B7K,YAAAA,UAASpS,KAAK;cAACsL;cAASxD,cAAcO,KAAKb;cAAOA,OAAAA;YAAK,CAAA;;QAE3D,CAAA;AAEA,eAAO4K;MACT;MAYAhH,QAAQ9N,OAAOqlB,IAAG7d,UAAS8jB,kBAAkB;AAC3C,cAAMd,YAAWkC,oBAAoBrH,IAAGrlB,KAAAA;AACxC,cAAMmL,OAAO3D,SAAQ2D,QAAQ;AAC7B,cAAMogB,mBAAmB/jB,SAAQ+jB,oBAAoB;AACrD,YAAI/pB,QAAQgG,SAAQiiB,YAChB4B,kBAAkBrrB,OAAOwqB,WAAUrf,MAAMmgB,kBAAkBC,gBAAAA,IAC7Dc,gBAAgBrsB,OAAOwqB,WAAUrf,MAAM,OAAOmgB,kBAAkBC,gBAAiB;AAEnF,YAAI/pB,MAAMC,SAAS,GAAG;AACpB,gBAAM+I,eAAehJ,MAAM,CAAA,EAAGgJ;AAC9B,gBAAMM,QAAO9K,MAAMwR,eAAehH,YAAAA,EAAcM;AAChDtJ,kBAAQ,CAAA;AACR,mBAASE,KAAI,GAAGA,KAAIoJ,MAAKrJ,QAAQ,EAAEC,IAAG;AACpCF,kBAAMkB,KAAK;cAACsL,SAASlD,MAAKpJ,EAAE;cAAE8I;cAAcN,OAAOxI;YAAC,CAAA;UACtD;;AAGF,eAAOF;MACT;MAYAge,MAAMxf,OAAOqlB,IAAG7d,UAAS8jB,kBAAkB;AACzC,cAAMd,YAAWkC,oBAAoBrH,IAAGrlB,KAAAA;AACxC,cAAMmL,OAAO3D,SAAQ2D,QAAQ;AAC7B,cAAMogB,mBAAmB/jB,SAAQ+jB,oBAAoB;AACrD,eAAOF,kBAAkBrrB,OAAOwqB,WAAUrf,MAAMmgB,kBAAkBC,gBAAAA;MACpE;MAWAoB,QAAQ3sB,OAAOqlB,IAAG7d,UAAS8jB,kBAAkB;AAC3C,cAAMd,YAAWkC,oBAAoBrH,IAAGrlB,KAAAA;AACxC,cAAMmL,OAAO3D,SAAQ2D,QAAQ;AAC7B,cAAMogB,mBAAmB/jB,SAAQ+jB,oBAAoB;AACrD,eAAOc,gBAAgBrsB,OAAOwqB,WAAUrf,MAAM3D,SAAQiiB,WAAW6B,kBAAkBC,gBAAAA;MACrF;MAWAtiB,EAAEjJ,OAAOqlB,IAAG7d,UAAS8jB,kBAAkB;AACrC,cAAMd,YAAWkC,oBAAoBrH,IAAGrlB,KAAAA;AACxC,eAAOssB,aAAatsB,OAAOwqB,WAAU,KAAKhjB,SAAQiiB,WAAW6B,gBAAAA;MAC/D;MAWApiB,EAAElJ,OAAOqlB,IAAG7d,UAAS8jB,kBAAkB;AACrC,cAAMd,YAAWkC,oBAAoBrH,IAAGrlB,KAAAA;AACxC,eAAOssB,aAAatsB,OAAOwqB,WAAU,KAAKhjB,SAAQiiB,WAAW6B,gBAAAA;MAC/D;IACF;EACF;AC3XA,MAAMsB,mBAAmB;IAAC;IAAQ;IAAO;IAAS;EAAS;AAE3D,WAASC,iBAAiBC,QAAOtC,WAAU;AACzC,WAAOsC,OAAMrf,OAAOwO,CAAAA,OAAKA,GAAE8Q,QAAQvC,SAAAA;EACrC;AAEA,WAASwC,4BAA4BF,QAAO3hB,MAAM;AAChD,WAAO2hB,OAAMrf,OAAOwO,CAAAA,OAAK2Q,iBAAiBlP,QAAQzB,GAAE8Q,GAAG,MAAM,MAAM9Q,GAAEgR,IAAI9hB,SAASA,IAAAA;EACpF;AAEA,WAAS+hB,aAAaJ,QAAOlkB,SAAS;AACpC,WAAOkkB,OAAMhU,KAAK,CAACC,IAAGrP,OAAM;AAC1B,YAAMyjB,KAAKvkB,UAAUc,KAAIqP;AACzB,YAAMgD,KAAKnT,UAAUmQ,KAAIrP;AACzB,aAAOyjB,GAAGlJ,WAAWlI,GAAGkI,SACtBkJ,GAAGjjB,QAAQ6R,GAAG7R,QACdijB,GAAGlJ,SAASlI,GAAGkI;IACnB,CAAA;EACF;AAEA,WAASmJ,UAAUC,OAAO;AACxB,UAAMC,cAAc,CAAA;AACpB,QAAI5rB,IAAGuI,MAAMgjB,KAAKF,KAAK3iB,OAAOmjB;AAE9B,SAAK7rB,KAAI,GAAGuI,QAAQojB,SAAS,CAAA,GAAI5rB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACtDurB,YAAMI,MAAM3rB,EAAE;AACb,OAAA,EAAC8oB,UAAUuC,KAAKvlB,SAAS,EAAC4C,OAAOmjB,cAAc,EAAC,EAAC,IAAIN;AACtDK,kBAAY5qB,KAAK;QACfwH,OAAOxI;QACPurB;QACAF;QACA1R,YAAY4R,IAAI9R,aAAY;QAC5B8I,QAAQgJ,IAAIhJ;QACZ7Z,OAAOA,SAAU2iB,MAAM3iB;QACvBmjB;MACF,CAAA;IACF;AACA,WAAOD;EACT;AAEA,WAASE,YAAYC,UAAS;AAC5B,UAAMrhB,SAAS,CAAA;AACf,eAAWshB,SAAQD,UAAS;AAC1B,YAAM,EAACrjB,OAAO2iB,KAAKQ,YAAAA,IAAeG;AAClC,UAAI,CAACtjB,SAAS,CAACwiB,iBAAiBe,SAASZ,GAAM,GAAA;AAC7C;;AAEF,YAAMa,SAASxhB,OAAOhC,KAAAA,MAAWgC,OAAOhC,KAAAA,IAAS;QAAC0I,OAAO;QAAG+a,QAAQ;QAAG5J,QAAQ;QAAG9b,MAAM;;AACxFylB,aAAO9a;AACP8a,aAAO3J,UAAUsJ;IACnB;AACA,WAAOnhB;EACT;AAKA,WAAS0hB,cAAcL,UAASM,SAAQ;AACtC,UAAM3hB,SAASohB,YAAYC,QAAAA;AAC3B,UAAM,EAACO,cAAcC,cAAAA,IAAiBF;AACtC,QAAIrsB,IAAGuI,MAAMikB;AACb,SAAKxsB,KAAI,GAAGuI,OAAOwjB,SAAQhsB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAChDwsB,eAAST,SAAQ/rB,EAAE;AACnB,YAAM,EAACysB,SAAAA,IAAYD,OAAOjB;AAC1B,YAAM7iB,QAAQgC,OAAO8hB,OAAO9jB,KAAK;AACjC,YAAMzG,SAASyG,SAAS8jB,OAAOX,cAAcnjB,MAAM6Z;AACnD,UAAIiK,OAAO7S,YAAY;AACrB6S,eAAOlR,QAAQrZ,SAASA,SAASqqB,eAAeG,YAAYJ,QAAOK;AACnEF,eAAOnR,SAASkR;aACX;AACLC,eAAOlR,QAAQgR;AACfE,eAAOnR,SAASpZ,SAASA,SAASsqB,gBAAgBE,YAAYJ,QAAOM;;IAEzE;AACA,WAAOjiB;EACT;AAEA,WAASkiB,iBAAiBjB,OAAO;AAC/B,UAAMC,cAAcF,UAAUC,KAAAA;AAC9B,UAAMc,WAAWjB,aAAaI,YAAY7f,OAAOigB,CAAAA,UAAQA,MAAKT,IAAIkB,QAAQ,GAAG,IAAI;AACjF,UAAM7kB,QAAO4jB,aAAaL,iBAAiBS,aAAa,MAAA,GAAS,IAAI;AACrE,UAAMlkB,SAAQ8jB,aAAaL,iBAAiBS,aAAa,OAAA,CAAA;AACzD,UAAMnkB,OAAM+jB,aAAaL,iBAAiBS,aAAa,KAAA,GAAQ,IAAI;AACnE,UAAMjkB,UAAS6jB,aAAaL,iBAAiBS,aAAa,QAAA,CAAA;AAC1D,UAAMiB,mBAAmBvB,4BAA4BM,aAAa,GAAA;AAClE,UAAMkB,iBAAiBxB,4BAA4BM,aAAa,GAAA;AAEhE,WAAO;MACLa;MACAM,YAAYnlB,MAAKsP,OAAOzP,IAAAA;MACxBulB,gBAAgBtlB,OAAMwP,OAAO4V,cAAAA,EAAgB5V,OAAOvP,OAAAA,EAAQuP,OAAO2V,gBAAAA;MACnEvZ,WAAW6X,iBAAiBS,aAAa,WAAA;MACzCqB,UAAUrlB,MAAKsP,OAAOxP,MAAAA,EAAOwP,OAAO4V,cAAAA;MACpCnT,YAAYlS,KAAIyP,OAAOvP,OAAAA,EAAQuP,OAAO2V,gBAAAA;IACxC;EACF;AAEA,WAASK,eAAeC,YAAY7Z,WAAW+D,IAAGrP,IAAG;AACnD,WAAO9I,KAAKoC,IAAI6rB,WAAW9V,EAAE,GAAE/D,UAAU+D,EAAAA,CAAE,IAAInY,KAAKoC,IAAI6rB,WAAWnlB,EAAAA,GAAIsL,UAAUtL,EAAE,CAAA;EACrF;AAEA,WAASolB,iBAAiBD,YAAYE,YAAY;AAChDF,eAAW1lB,MAAMvI,KAAKoC,IAAI6rB,WAAW1lB,KAAK4lB,WAAW5lB,GAAG;AACxD0lB,eAAWvlB,OAAO1I,KAAKoC,IAAI6rB,WAAWvlB,MAAMylB,WAAWzlB,IAAI;AAC3DulB,eAAWxlB,SAASzI,KAAKoC,IAAI6rB,WAAWxlB,QAAQ0lB,WAAW1lB,MAAM;AACjEwlB,eAAWzlB,QAAQxI,KAAKoC,IAAI6rB,WAAWzlB,OAAO2lB,WAAW3lB,KAAK;EAChE;AAEA,WAAS4lB,WAAWha,WAAW+Y,SAAQG,QAAQ9hB,QAAQ;AACrD,UAAM,EAAC2gB,KAAKE,IAAAA,IAAOiB;AACnB,UAAMW,aAAa7Z,UAAU6Z;AAG7B,QAAI,CAACpoB,SAASsmB,GAAM,GAAA;AAClB,UAAImB,OAAO/lB,MAAM;AAEf6M,kBAAU+X,GAAAA,KAAQmB,OAAO/lB;;AAE3B,YAAMiC,QAAQgC,OAAO8hB,OAAO9jB,KAAK,KAAK;QAACjC,MAAM;QAAG2K,OAAO;MAAC;AACxD1I,YAAMjC,OAAOvH,KAAKoC,IAAIoH,MAAMjC,MAAM+lB,OAAO7S,aAAa4R,IAAIlQ,SAASkQ,IAAIjQ,KAAK;AAC5EkR,aAAO/lB,OAAOiC,MAAMjC,OAAOiC,MAAM0I;AACjCkC,gBAAU+X,GAAAA,KAAQmB,OAAO/lB;;AAG3B,QAAI8kB,IAAIgC,YAAY;AAClBH,uBAAiBD,YAAY5B,IAAIgC,WAAU,CAAA;;AAG7C,UAAMC,WAAWtuB,KAAKoC,IAAI,GAAG+qB,QAAOoB,aAAaP,eAAeC,YAAY7Z,WAAW,QAAQ,OAAA,CAAA;AAC/F,UAAMoa,YAAYxuB,KAAKoC,IAAI,GAAG+qB,QAAOsB,cAAcT,eAAeC,YAAY7Z,WAAW,OAAO,QAAA,CAAA;AAChG,UAAMsa,eAAeJ,aAAala,UAAUua;AAC5C,UAAMC,gBAAgBJ,cAAcpa,UAAUya;AAC9Cza,cAAUua,IAAIL;AACdla,cAAUya,IAAIL;AAGd,WAAOlB,OAAO7S,aACV;MAACqU,MAAMJ;MAAcK,OAAOH;QAC5B;MAACE,MAAMF;MAAeG,OAAOL;;EACnC;AAEA,WAASM,iBAAiB5a,WAAW;AACnC,UAAM6Z,aAAa7Z,UAAU6Z;AAE7B,aAASgB,UAAU9C,KAAK;AACtB,YAAM+C,SAASlvB,KAAKoC,IAAI6rB,WAAW9B,GAAAA,IAAO/X,UAAU+X,GAAAA,GAAM,CAAA;AAC1D/X,gBAAU+X,GAAAA,KAAQ+C;AAClB,aAAOA;IACT;AACA9a,cAAU9L,KAAK2mB,UAAU,KAAA;AACzB7a,cAAU/L,KAAK4mB,UAAU,MAAA;AACzBA,cAAU,OAAA;AACVA,cAAU,QAAA;EACZ;AAEA,WAASE,WAAW1U,YAAYrG,WAAW;AACzC,UAAM6Z,aAAa7Z,UAAU6Z;AAE7B,aAASmB,mBAAmBC,YAAW;AACrC,YAAMC,SAAS;QAAC5mB,MAAM;QAAGH,KAAK;QAAGC,OAAO;QAAGC,QAAQ;MAAC;AACpD4mB,MAAAA,WAAUzvB,QAAQ,CAACusB,QAAQ;AACzBmD,eAAOnD,GAAAA,IAAOnsB,KAAKoC,IAAIgS,UAAU+X,GAAI,GAAE8B,WAAW9B,GAAI,CAAA;MACxD,CAAA;AACA,aAAOmD;IACT;AAEA,WAAO7U,aACH2U,mBAAmB;MAAC;MAAQ;IAAQ,CAAA,IACpCA,mBAAmB;MAAC;MAAO;KAAS;EAC1C;AAEA,WAASG,SAAS9C,OAAOrY,WAAW+Y,SAAQ3hB,QAAQ;AAClD,UAAMgkB,aAAa,CAAA;AACnB,QAAI1uB,IAAGuI,MAAMikB,QAAQjB,KAAKoD,OAAOC;AAEjC,SAAK5uB,KAAI,GAAGuI,OAAOojB,MAAM5rB,QAAQ4uB,QAAQ,GAAG3uB,KAAIuI,MAAM,EAAEvI,IAAG;AACzDwsB,eAASb,MAAM3rB,EAAE;AACjBurB,YAAMiB,OAAOjB;AAEbA,UAAIvnB,OACFwoB,OAAOlR,SAAShI,UAAUua,GAC1BrB,OAAOnR,UAAU/H,UAAUya,GAC3BM,WAAW7B,OAAO7S,YAAYrG,SAAAA,CAAAA;AAEhC,YAAM,EAAC0a,MAAMC,MAAAA,IAASX,WAAWha,WAAW+Y,SAAQG,QAAQ9hB,MAAAA;AAI5DikB,eAASX,QAAQU,WAAW3uB;AAG5B6uB,gBAAUA,WAAWX;AAErB,UAAI,CAAC1C,IAAIkB,UAAU;AACjBiC,mBAAW1tB,KAAKwrB,MAAAA;;IAEpB;AAEA,WAAOmC,SAASF,SAASC,YAAYpb,WAAW+Y,SAAQ3hB,MAAWkkB,KAAAA;EACrE;AAEA,WAASC,WAAWtD,KAAK3jB,OAAMH,MAAK6T,QAAOD,SAAQ;AACjDkQ,QAAI9jB,MAAMA;AACV8jB,QAAI3jB,OAAOA;AACX2jB,QAAI7jB,QAAQE,QAAO0T;AACnBiQ,QAAI5jB,SAASF,OAAM4T;AACnBkQ,QAAIjQ,QAAQA;AACZiQ,QAAIlQ,SAASA;EACf;AAEA,WAASyT,WAAWnD,OAAOrY,WAAW+Y,SAAQ3hB,QAAQ;AACpD,UAAMqkB,cAAc1C,QAAO2C;AAC3B,QAAI,EAACznB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK8L;AAEb,eAAWkZ,UAAUb,OAAO;AAC1B,YAAMJ,MAAMiB,OAAOjB;AACnB,YAAM7iB,QAAQgC,OAAO8hB,OAAO9jB,KAAK,KAAK;QAAC0I,OAAO;QAAG+a,QAAQ;QAAG5J,QAAQ;MAAC;AACrE,YAAMA,SAAS,OAAQsJ,cAAcnjB,MAAM6Z,UAAW;AACtD,UAAIiK,OAAO7S,YAAY;AACrB,cAAM2B,SAAQhI,UAAUua,IAAItL;AAC5B,cAAMlH,UAAS3S,MAAMjC,QAAQ8kB,IAAIlQ;AACjC,YAAIpH,QAAQvL,MAAMtJ,KAAK,GAAG;AACxBoI,UAAAA,KAAIkB,MAAMtJ;;AAEZ,YAAImsB,IAAIkB,UAAU;AAChBoC,qBAAWtD,KAAKwD,YAAYnnB,MAAMJ,IAAG6kB,QAAOoB,aAAasB,YAAYrnB,QAAQqnB,YAAYnnB,MAAMyT,OAAAA;eAC1F;AACLwT,qBAAWtD,KAAKjY,UAAU1L,OAAOc,MAAMyjB,QAAQ3kB,IAAG8T,QAAOD,OAAAA;;AAE3D3S,cAAMtJ,QAAQoI;AACdkB,cAAMyjB,UAAU7Q;AAChB9T,QAAAA,KAAI+jB,IAAI5jB;aACH;AACL,cAAM0T,UAAS/H,UAAUya,IAAIxL;AAC7B,cAAMjH,SAAQ5S,MAAMjC,QAAQ8kB,IAAIjQ;AAChC,YAAIrH,QAAQvL,MAAMtJ,KAAK,GAAG;AACxBmI,UAAAA,KAAImB,MAAMtJ;;AAEZ,YAAImsB,IAAIkB,UAAU;AAChBoC,qBAAWtD,KAAKhkB,IAAGwnB,YAAYtnB,KAAK6T,QAAO+Q,QAAOsB,cAAcoB,YAAYpnB,SAASonB,YAAYtnB,GAAG;eAC/F;AACLonB,qBAAWtD,KAAKhkB,IAAG+L,UAAU7L,MAAMiB,MAAMyjB,QAAQ7Q,QAAOD,OAAAA;;AAE1D3S,cAAMtJ,QAAQmI;AACdmB,cAAMyjB,UAAU9Q;AAChB9T,QAAAA,KAAIgkB,IAAI7jB;;IAEZ;AAEA4L,cAAU/L,IAAIA;AACd+L,cAAU9L,IAAIA;EAChB;AAwBA,MAAA,UAAe;IAQbynB,OAAO3wB,OAAO4B,MAAM;AAClB,UAAI,CAAC5B,MAAMqtB,OAAO;AAChBrtB,cAAMqtB,QAAQ,CAAA;;AAIhBzrB,WAAKusB,WAAWvsB,KAAKusB,YAAY;AACjCvsB,WAAK4oB,WAAW5oB,KAAK4oB,YAAY;AACjC5oB,WAAKqiB,SAASriB,KAAKqiB,UAAU;AAE7BriB,WAAKgvB,UAAUhvB,KAAKgvB,WAAW,WAAW;AACxC,eAAO;UAAC;YACNC,GAAG;YACHlvB,KAAKqT,WAAW;AACdpT,mBAAKD,KAAKqT,SAAAA;YACZ;UACF;QAAE;MACJ;AAEAhV,YAAMqtB,MAAM3qB,KAAKd,IAAAA;IACnB;IAOAkvB,UAAU9wB,OAAO+wB,YAAY;AAC3B,YAAM7mB,SAAQlK,MAAMqtB,QAAQrtB,MAAMqtB,MAAM3P,QAAQqT,UAAc,IAAA;AAC9D,UAAI7mB,WAAU,IAAI;AAChBlK,cAAMqtB,MAAMxV,OAAO3N,QAAO,CAAA;;IAE9B;IAQA1D,UAAUxG,OAAO4B,MAAM4F,UAAS;AAC9B5F,WAAKusB,WAAW3mB,SAAQ2mB;AACxBvsB,WAAK4oB,WAAWhjB,SAAQgjB;AACxB5oB,WAAKqiB,SAASzc,SAAQyc;IACxB;IAUAve,OAAO1F,OAAOgd,QAAOD,SAAQiU,YAAY;AACvC,UAAI,CAAChxB,OAAO;AACV;;AAGF,YAAM0wB,UAAUO,UAAUjxB,MAAMwH,QAAQ0mB,OAAOwC,OAAO;AACtD,YAAMtC,iBAAiBxtB,KAAKoC,IAAIga,SAAQ0T,QAAQ1T,OAAO,CAAA;AACvD,YAAMqR,kBAAkBztB,KAAKoC,IAAI+Z,UAAS2T,QAAQ3T,QAAQ,CAAA;AAC1D,YAAMsQ,QAAQiB,iBAAiBtuB,MAAMqtB,KAAK;AAC1C,YAAM6D,gBAAgB7D,MAAMsB;AAC5B,YAAMwC,kBAAkB9D,MAAMhS;AAI9B+V,WAAKpxB,MAAMqtB,OAAOJ,CAAAA,QAAO;AACvB,YAAI,OAAOA,IAAIoE,iBAAiB,YAAY;AAC1CpE,cAAIoE,aAAY;;MAEpB,CAAA;AA6BA,YAAMC,0BAA0BJ,cAAcruB,OAAO,CAACigB,OAAO4K,UAC3DA,MAAKT,IAAIzlB,WAAWkmB,MAAKT,IAAIzlB,QAAQsgB,YAAY,QAAQhF,QAAQA,QAAQ,GAAG,CAAM,KAAA;AAEpF,YAAMiL,UAASpnB,OAAOqP,OAAO;QAC3BmZ,YAAYnS;QACZqS,aAAatS;QACb2T;QACAtC;QACAC;QACAL,cAAcI,iBAAiB,IAAIkD;QACnCrD,eAAeI,kBAAkB;MACnC,CAAA;AACA,YAAMQ,aAAaloB,OAAOyB,OAAO,CAAA,GAAIsoB,OAAAA;AACrC5B,uBAAiBD,YAAYoC,UAAUD,UAAAA,CAAAA;AACvC,YAAMhc,YAAYrO,OAAOyB,OAAO;QAC9BymB;QACAU,GAAGnB;QACHqB,GAAGpB;QACHplB,GAAGynB,QAAQpnB;QACXJ,GAAGwnB,QAAQvnB;SACVunB,OAAAA;AAEH,YAAMtkB,SAAS0hB,cAAcoD,cAActY,OAAOuY,eAAkBpD,GAAAA,OAAAA;AAGpEoC,eAAS9C,MAAMc,UAAUnZ,WAAW+Y,SAAQ3hB,MAAAA;AAG5C+jB,eAASe,eAAelc,WAAW+Y,SAAQ3hB,MAAAA;AAG3C,UAAI+jB,SAASgB,iBAAiBnc,WAAW+Y,SAAQ3hB,MAAS,GAAA;AAExD+jB,iBAASe,eAAelc,WAAW+Y,SAAQ3hB,MAAAA;;AAG7CwjB,uBAAiB5a,SAAAA;AAGjBwb,iBAAWnD,MAAMoB,YAAYzZ,WAAW+Y,SAAQ3hB,MAAAA;AAGhD4I,gBAAU/L,KAAK+L,UAAUua;AACzBva,gBAAU9L,KAAK8L,UAAUya;AAEzBe,iBAAWnD,MAAMqB,gBAAgB1Z,WAAW+Y,SAAQ3hB,MAAAA;AAEpDpM,YAAMgV,YAAY;QAChB1L,MAAM0L,UAAU1L;QAChBH,KAAK6L,UAAU7L;QACfC,OAAO4L,UAAU1L,OAAO0L,UAAUua;QAClClmB,QAAQ2L,UAAU7L,MAAM6L,UAAUya;QAClC1S,QAAQ/H,UAAUya;QAClBzS,OAAOhI,UAAUua;MACnB;AAGA6B,WAAK/D,MAAMrY,WAAW,CAACkZ,WAAW;AAChC,cAAMjB,MAAMiB,OAAOjB;AACnBtmB,eAAOyB,OAAO6kB,KAAKjtB,MAAMgV,SAAS;AAClCiY,YAAIvnB,OAAOsP,UAAUua,GAAGva,UAAUya,GAAG;UAACnmB,MAAM;UAAGH,KAAK;UAAGC,OAAO;UAAGC,QAAQ;QAAC,CAAA;MAC5E,CAAA;IACF;EACF;AC9be,MAAMkoB,eAAN,MAAMA;IAOnBC,eAAeC,QAAQnN,aAAa;IAAA;IAQpCoN,eAAerc,SAAS;AACtB,aAAO;IACT;IASAsc,iBAAiB3xB,OAAOG,MAAMyxB,UAAU;IAAA;IAQxCC,oBAAoB7xB,OAAOG,MAAMyxB,UAAU;IAAA;IAK3CE,sBAAsB;AACpB,aAAO;IACT;IASAC,eAAe/jB,SAASgP,QAAOD,SAAQuH,aAAa;AAClDtH,MAAAA,SAAQpc,KAAKoC,IAAI,GAAGga,UAAShP,QAAQgP,KAAK;AAC1CD,MAAAA,UAASA,WAAU/O,QAAQ+O;AAC3B,aAAO;QACLC,OAAAA;QACAD,QAAQnc,KAAKoC,IAAI,GAAGshB,cAAc1jB,KAAKoE,MAAMgY,SAAQsH,WAAAA,IAAevH,OAAM;MAC5E;IACF;IAMAiV,WAAWP,QAAQ;AACjB,aAAO;IACT;IAMAQ,aAAa5rB,SAAQ;IAErB;EACF;ACtEe,MAAM6rB,gBAAN,cAA4BX,aAAAA;IACzCC,eAAe5vB,MAAM;AAInB,aAAOA,QAAQA,KAAK+Q,cAAc/Q,KAAK+Q,WAAW,IAAA,KAAS;IAC7D;IACAsf,aAAa5rB,SAAQ;AACnBA,MAAAA,QAAOmB,QAAQV,YAAY;IAC7B;EACF;ACTA,MAAMqrB,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,gBAAgB5qB,CAAAA,UAASA,UAAU,QAAQA,UAAU;AAQ3D,WAAS6qB,WAAWtB,QAAQnN,aAAa;AACvC,UAAMM,QAAQ6M,OAAO7M;AAIrB,UAAMoO,eAAevB,OAAOwB,aAAa,QAAA;AACzC,UAAMC,cAAczB,OAAOwB,aAAa,OAAA;AAGxCxB,WAAOU,WAAAA,IAAe;MACpBzxB,SAAS;QACPqc,QAAQiW;QACRhW,OAAOkW;QACPtO,OAAO;UACLkD,SAASlD,MAAMkD;UACf/K,QAAQ6H,MAAM7H;UACdC,OAAO4H,MAAM5H;QACf;MACF;IACF;AAKA4H,UAAMkD,UAAUlD,MAAMkD,WAAW;AAEjClD,UAAMuO,YAAYvO,MAAMuO,aAAa;AAErC,QAAIL,cAAcI,WAAc,GAAA;AAC9B,YAAME,eAAeC,aAAa5B,QAAQ,OAAA;AAC1C,UAAI2B,iBAAiBtzB,QAAW;AAC9B2xB,eAAOzU,QAAQoW;;;AAInB,QAAIN,cAAcE,YAAe,GAAA;AAC/B,UAAIvB,OAAO7M,MAAM7H,WAAW,IAAI;AAI9B0U,eAAO1U,SAAS0U,OAAOzU,SAASsH,eAAe;aAC1C;AACL,cAAMgP,gBAAgBD,aAAa5B,QAAQ,QAAA;AAC3C,YAAI6B,kBAAkBxzB,QAAW;AAC/B2xB,iBAAO1U,SAASuW;;;;AAKtB,WAAO7B;EACT;AAIA,MAAM8B,uBAAuBC,+BAA+B;IAACC,SAAS;EAAI,IAAI;AAE9E,WAASC,YAAYC,MAAMxzB,MAAMyxB,UAAU;AACzC,QAAI+B,MAAM;AACRA,WAAKhC,iBAAiBxxB,MAAMyxB,UAAU2B,oBAAAA;;EAE1C;AAEA,WAASK,eAAe5zB,OAAOG,MAAMyxB,UAAU;AAC7C,QAAI5xB,SAASA,MAAMyxB,QAAQ;AACzBzxB,YAAMyxB,OAAOI,oBAAoB1xB,MAAMyxB,UAAU2B,oBAAAA;;EAErD;AAEA,WAASM,gBAAgBrxB,OAAOxC,OAAO;AACrC,UAAMG,OAAOiyB,YAAY5vB,MAAMrC,IAAI,KAAKqC,MAAMrC;AAC9C,UAAM,EAAC8I,GAAAA,IAAGC,GAAAA,GAAAA,IAAKwjB,oBAAoBlqB,OAAOxC,KAAAA;AAC1C,WAAO;MACLG;MACAH;MACA8zB,QAAQtxB;MACRyG,GAAGA,OAAMnJ,SAAYmJ,KAAI;MACzBC,GAAGA,OAAMpJ,SAAYoJ,KAAI;IAC3B;EACF;AAEA,WAAS6qB,iBAAiBC,UAAUvC,QAAQ;AAC1C,eAAWkC,QAAQK,UAAU;AAC3B,UAAIL,SAASlC,UAAUkC,KAAKM,SAASxC,MAAS,GAAA;AAC5C,eAAO;;IAEX;EACF;AAEA,WAASyC,qBAAqBl0B,OAAOG,MAAMyxB,UAAU;AACnD,UAAMH,SAASzxB,MAAMyxB;AACrB,UAAM0C,WAAW,IAAIC,iBAAiBC,CAAAA,YAAW;AAC/C,UAAIC,UAAU;AACd,iBAAW/Z,SAAS8Z,SAAS;AAC3BC,kBAAUA,WAAWP,iBAAiBxZ,MAAMga,YAAY9C,MAAAA;AACxD6C,kBAAUA,WAAW,CAACP,iBAAiBxZ,MAAMia,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,qBAAqB70B,OAAOG,MAAMyxB,UAAU;AACnD,UAAMH,SAASzxB,MAAMyxB;AACrB,UAAM0C,WAAW,IAAIC,iBAAiBC,CAAAA,YAAW;AAC/C,UAAIC,UAAU;AACd,iBAAW/Z,SAAS8Z,SAAS;AAC3BC,kBAAUA,WAAWP,iBAAiBxZ,MAAMia,cAAc/C,MAAAA;AAC1D6C,kBAAUA,WAAW,CAACP,iBAAiBxZ,MAAMga,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,oBAAIn1B,IAAAA;AAC/B,MAAIo1B,sBAAsB;AAE1B,WAASC,iBAAiB;AACxB,UAAMC,MAAM/zB,OAAOg0B;AACnB,QAAID,QAAQF,qBAAqB;AAC/B;;AAEFA,0BAAsBE;AACtBH,uBAAmBt0B,QAAQ,CAAC20B,QAAQn1B,UAAU;AAC5C,UAAIA,MAAMo1B,4BAA4BH,KAAK;AACzCE,eAAAA;;IAEJ,CAAA;EACF;AAEA,WAASE,8BAA8Br1B,OAAOm1B,QAAQ;AACpD,QAAI,CAACL,mBAAmB3sB,MAAM;AAC5BjH,aAAOywB,iBAAiB,UAAUqD,cAAAA;;AAEpCF,uBAAmBxyB,IAAItC,OAAOm1B,MAAAA;EAChC;AAEA,WAASG,gCAAgCt1B,OAAO;AAC9C80B,uBAAmBzxB,OAAOrD,KAAAA;AAC1B,QAAI,CAAC80B,mBAAmB3sB,MAAM;AAC5BjH,aAAO2wB,oBAAoB,UAAUmD,cAAAA;;EAEzC;AAEA,WAASO,qBAAqBv1B,OAAOG,MAAMyxB,UAAU;AACnD,UAAMH,SAASzxB,MAAMyxB;AACrB,UAAM+D,YAAY/D,UAAUgE,eAAehE,MAAAA;AAC3C,QAAI,CAAC+D,WAAW;AACd;;AAEF,UAAML,SAASO,UAAU,CAAC1Y,QAAOD,YAAW;AAC1C,YAAMwS,KAAIiG,UAAUG;AACpB/D,eAAS5U,QAAOD,OAAAA;AAChB,UAAIwS,KAAIiG,UAAUG,aAAa;AAQ7B/D,iBAAAA;;OAED1wB,MAAAA;AAGH,UAAMizB,WAAW,IAAIyB,eAAevB,CAAAA,YAAW;AAC7C,YAAM9Z,QAAQ8Z,QAAQ,CAAE;AACxB,YAAMrX,SAAQzC,MAAMsb,YAAY7Y;AAChC,YAAMD,UAASxC,MAAMsb,YAAY9Y;AAIjC,UAAIC,WAAU,KAAKD,YAAW,GAAG;AAC/B;;AAEFoY,aAAOnY,QAAOD,OAAAA;IAChB,CAAA;AACAoX,aAASM,QAAQe,SAAAA;AACjBH,kCAA8Br1B,OAAOm1B,MAAAA;AAErC,WAAOhB;EACT;AAEA,WAAS2B,gBAAgB91B,OAAOG,MAAMg0B,UAAU;AAC9C,QAAIA,UAAU;AACZA,eAAS4B,WAAU;;AAErB,QAAI51B,SAAS,UAAU;AACrBm1B,sCAAgCt1B,KAAAA;;EAEpC;AAEA,WAASg2B,qBAAqBh2B,OAAOG,MAAMyxB,UAAU;AACnD,UAAMH,SAASzxB,MAAMyxB;AACrB,UAAMwE,QAAQP,UAAU,CAAClzB,UAAU;AAIjC,UAAIxC,MAAM+O,QAAQ,MAAM;AACtB6iB,iBAASiC,gBAAgBrxB,OAAOxC,KAAAA,CAAAA;;OAEjCA,KAAAA;AAEH0zB,gBAAYjC,QAAQtxB,MAAM81B,KAAAA;AAE1B,WAAOA;EACT;AAMe,MAAMC,cAAN,cAA0B3E,aAAAA;IAOvCC,eAAeC,QAAQnN,aAAa;AAIlC,YAAMjP,UAAUoc,UAAUA,OAAO9e,cAAc8e,OAAO9e,WAAW,IAAA;AASjE,UAAI0C,WAAWA,QAAQoc,WAAWA,QAAQ;AAGxCsB,mBAAWtB,QAAQnN,WAAAA;AACnB,eAAOjP;;AAGT,aAAO;IACT;IAKAqc,eAAerc,SAAS;AACtB,YAAMoc,SAASpc,QAAQoc;AACvB,UAAI,CAACA,OAAOU,WAAAA,GAAc;AACxB,eAAO;;AAGT,YAAMzxB,UAAU+wB,OAAOU,WAAAA,EAAazxB;AACpC;QAAC;QAAU;QAASF,QAAQ,CAAC+D,SAAS;AACpC,cAAM2D,QAAQxH,QAAQ6D,IAAK;AAC3B,YAAIuV,cAAc5R,KAAQ,GAAA;AACxBupB,iBAAO0E,gBAAgB5xB,IAAAA;eAClB;AACLktB,iBAAO2E,aAAa7xB,MAAM2D,KAAAA;;MAE9B,CAAA;AAEA,YAAM0c,QAAQlkB,QAAQkkB,SAAS,CAAA;AAC/Bje,aAAOC,KAAKge,KAAAA,EAAOpkB,QAAQ,CAACyG,SAAQ;AAClCwqB,eAAO7M,MAAM3d,IAAAA,IAAO2d,MAAM3d,IAAI;MAChC,CAAA;AAOAwqB,aAAOzU,QAAQyU,OAAOzU;AAEtB,aAAOyU,OAAOU,WAAY;AAC1B,aAAO;IACT;IAQAR,iBAAiB3xB,OAAOG,MAAMyxB,UAAU;AAEtC,WAAKC,oBAAoB7xB,OAAOG,IAAAA;AAEhC,YAAMk2B,UAAUr2B,MAAMs2B,aAAat2B,MAAMs2B,WAAW,CAAA;AACpD,YAAMC,YAAW;QACfC,QAAQtC;QACRuC,QAAQ5B;QACRM,QAAQI;MACV;AACA,YAAM9K,UAAU8L,UAASp2B,IAAAA,KAAS61B;AAClCK,cAAQl2B,IAAAA,IAAQsqB,QAAQzqB,OAAOG,MAAMyxB,QAAAA;IACvC;IAOAC,oBAAoB7xB,OAAOG,MAAM;AAC/B,YAAMk2B,UAAUr2B,MAAMs2B,aAAat2B,MAAMs2B,WAAW,CAAA;AACpD,YAAML,QAAQI,QAAQl2B,IAAK;AAE3B,UAAI,CAAC81B,OAAO;AACV;;AAGF,YAAMM,YAAW;QACfC,QAAQV;QACRW,QAAQX;QACRX,QAAQW;MACV;AACA,YAAMrL,UAAU8L,UAASp2B,IAAAA,KAASyzB;AAClCnJ,cAAQzqB,OAAOG,MAAM81B,KAAAA;AACrBI,cAAQl2B,IAAAA,IAAQL;IAClB;IAEAgyB,sBAAsB;AACpB,aAAO5wB,OAAOg0B;IAChB;IAQAnD,eAAeN,QAAQzU,QAAOD,SAAQuH,aAAa;AACjD,aAAOyN,eAAeN,QAAQzU,QAAOD,SAAQuH,WAAAA;IAC/C;IAKA0N,WAAWP,QAAQ;AACjB,YAAM+D,YAAY/D,UAAUgE,eAAehE,MAAAA;AAC3C,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;IAKnB7tB;IACAC;IACAzD,SAAS;IACT+B;IACAM;IAEAivB,gBAAgBzL,kBAAkC;AAChD,YAAM,EAACriB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAK2iB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAAO;QAACriB,GAAAA;QAAGC,GAAAA;MAAC;IACd;IAEA8tB,WAAW;AACT,aAAO3Q,SAAS,KAAKpd,CAAC,KAAKod,SAAS,KAAKnd,CAAC;IAC5C;IASA2iB,SAAS7jB,OAAiBivB,OAAmD;AAC3E,YAAMh3B,QAAQ,KAAK6H;AACnB,UAAI,CAACmvB,SAAS,CAACh3B,OAAO;AAEpB,eAAO;;AAET,YAAMi3B,MAA+B,CAAA;AACrClvB,YAAMxH,QAAQ,CAAC+D,SAAS;AACtB2yB,YAAI3yB,IAAAA,IAAQtE,MAAMsE,IAAK,KAAItE,MAAMsE,IAAAA,EAAMkB,OAAM,IAAKxF,MAAMsE,IAAAA,EAAMgB,MAAM,KAAKhB,IAAe;MAC1F,CAAA;AACA,aAAO2yB;IACT;EACF;AArCE,gBAFmBJ,UAEZjwB,YAAW,CAAA;AAClB,gBAHmBiwB,UAGZK;ACQF,WAASC,SAAS3uB,QAAO6Q,OAAO;AACrC,UAAM+d,WAAW5uB,OAAMjB,QAAQ8R;AAC/B,UAAMge,qBAAqBC,kBAAkB9uB,MAAAA;AAC7C,UAAM+uB,aAAa52B,KAAKC,IAAIw2B,SAASI,iBAAiBH,oBAAoBA,kBAAAA;AAC1E,UAAMI,eAAeL,SAASM,MAAMC,UAAUC,gBAAgBve,KAAAA,IAAS,CAAA;AACvE,UAAMwe,kBAAkBJ,aAAaj2B;AACrC,UAAMs2B,QAAQL,aAAa,CAAE;AAC7B,UAAMxa,OAAOwa,aAAaI,kBAAkB,CAAE;AAC9C,UAAME,WAAW,CAAA;AAGjB,QAAIF,kBAAkBN,YAAY;AAChCS,iBAAW3e,OAAO0e,UAAUN,cAAcI,kBAAkBN,UAAAA;AAC5D,aAAOQ;;AAGT,UAAM/V,UAAUiW,iBAAiBR,cAAcpe,OAAOke,UAAAA;AAEtD,QAAIM,kBAAkB,GAAG;AACvB,UAAIp2B,IAAGuI;AACP,YAAMkuB,kBAAkBL,kBAAkB,IAAIl3B,KAAKw3B,OAAOlb,OAAO6a,UAAUD,kBAAkB,EAAA,IAAM;AACnGnY,WAAKrG,OAAO0e,UAAU/V,SAASnI,cAAcqe,eAAAA,IAAmB,IAAIJ,QAAQI,iBAAiBJ,KAAAA;AAC7F,WAAKr2B,KAAI,GAAGuI,OAAO6tB,kBAAkB,GAAGp2B,KAAIuI,MAAMvI,MAAK;AACrDie,aAAKrG,OAAO0e,UAAU/V,SAASyV,aAAah2B,EAAAA,GAAIg2B,aAAah2B,KAAI,CAAE,CAAA;MACrE;AACAie,WAAKrG,OAAO0e,UAAU/V,SAAS/E,MAAMpD,cAAcqe,eAAAA,IAAmB7e,MAAM7X,SAASyb,OAAOib,eAAe;AAC3G,aAAOH;;AAETrY,SAAKrG,OAAO0e,UAAU/V,OAAAA;AACtB,WAAO+V;EACT;AAEA,WAAST,kBAAkB9uB,QAAO;AAChC,UAAMwW,UAASxW,OAAMjB,QAAQyX;AAC7B,UAAMoZ,aAAa5vB,OAAM6vB,UAAS;AAClC,UAAMC,WAAW9vB,OAAMwQ,UAAUof,cAAcpZ,UAAS,IAAI;AAC5D,UAAMuZ,WAAW/vB,OAAMgwB,aAAaJ;AACpC,WAAOz3B,KAAKoE,MAAMpE,KAAKC,IAAI03B,UAAUC,QAAAA,CAAAA;EACvC;AAOA,WAASN,iBAAiBR,cAAcpe,OAAOke,YAAY;AACzD,UAAMkB,mBAAmBC,eAAejB,YAAAA;AACxC,UAAMzV,UAAU3I,MAAM7X,SAAS+1B;AAI/B,QAAI,CAACkB,kBAAkB;AACrB,aAAO93B,KAAKoC,IAAIif,SAAS,CAAA;;AAG3B,UAAM2W,UAAUC,WAAWH,gBAAAA;AAC3B,aAASh3B,KAAI,GAAGuI,OAAO2uB,QAAQn3B,SAAS,GAAGC,KAAIuI,MAAMvI,MAAK;AACxD,YAAMiC,SAASi1B,QAAQl3B,EAAE;AACzB,UAAIiC,SAASse,SAAS;AACpB,eAAOte;;IAEX;AACA,WAAO/C,KAAKoC,IAAIif,SAAS,CAAA;EAC3B;AAKA,WAAS4V,gBAAgBve,OAAO;AAC9B,UAAMwQ,SAAS,CAAA;AACf,QAAIpoB,IAAGuI;AACP,SAAKvI,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAMvI,MAAK;AAC9C,UAAI4X,MAAM5X,EAAE,EAACi2B,OAAO;AAClB7N,eAAOpnB,KAAKhB,EAAAA;;IAEhB;AACA,WAAOooB;EACT;AAQA,WAASmO,WAAW3e,OAAO0e,UAAUN,cAAczV,SAAS;AAC1D,QAAInP,QAAQ;AACZ,QAAIsH,QAAOsd,aAAa,CAAE;AAC1B,QAAIh2B;AAEJugB,cAAUrhB,KAAKk4B,KAAK7W,OAAAA;AACpB,SAAKvgB,KAAI,GAAGA,KAAI4X,MAAM7X,QAAQC,MAAK;AACjC,UAAIA,OAAM0Y,OAAM;AACd4d,iBAASt1B,KAAK4W,MAAM5X,EAAE,CAAA;AACtBoR;AACAsH,QAAAA,QAAOsd,aAAa5kB,QAAQmP,OAAQ;;IAExC;EACF;AASA,WAAStC,KAAKrG,OAAO0e,UAAU/V,SAAS8W,YAAYC,UAAU;AAC5D,UAAMl4B,SAAQ6P,eAAeooB,YAAY,CAAA;AACzC,UAAMlwB,OAAMjI,KAAKC,IAAI8P,eAAeqoB,UAAU1f,MAAM7X,MAAM,GAAG6X,MAAM7X,MAAM;AACzE,QAAIqR,QAAQ;AACZ,QAAIrR,SAAQC,IAAG0Y;AAEf6H,cAAUrhB,KAAKk4B,KAAK7W,OAAAA;AACpB,QAAI+W,UAAU;AACZv3B,MAAAA,UAASu3B,WAAWD;AACpB9W,gBAAUxgB,UAASb,KAAKoE,MAAMvD,UAASwgB,OAAAA;;AAGzC7H,IAAAA,QAAOtZ;AAEP,WAAOsZ,QAAO,GAAG;AACftH;AACAsH,MAAAA,QAAOxZ,KAAKw3B,MAAMt3B,SAAQgS,QAAQmP,OAAAA;IACpC;AAEA,SAAKvgB,KAAId,KAAKoC,IAAIlC,QAAO,CAAIY,GAAAA,KAAImH,MAAKnH,MAAK;AACzC,UAAIA,OAAM0Y,OAAM;AACd4d,iBAASt1B,KAAK4W,MAAM5X,EAAE,CAAA;AACtBoR;AACAsH,QAAAA,QAAOxZ,KAAKw3B,MAAMt3B,SAAQgS,QAAQmP,OAAAA;;IAEtC;EACF;AAMA,WAAS0W,eAAejhB,KAAK;AAC3B,UAAMuhB,MAAMvhB,IAAIjW;AAChB,QAAIC,IAAGynB;AAEP,QAAI8P,MAAM,GAAG;AACX,aAAO;;AAGT,SAAK9P,OAAOzR,IAAI,CAAE,GAAEhW,KAAI,GAAGA,KAAIu3B,KAAK,EAAEv3B,IAAG;AACvC,UAAIgW,IAAIhW,EAAE,IAAGgW,IAAIhW,KAAI,CAAE,MAAKynB,MAAM;AAChC,eAAO;;IAEX;AACA,WAAOA;EACT;ACjKA,MAAM+P,eAAe,CAACC,UAAUA,UAAU,SAAS,UAAUA,UAAU,UAAU,SAASA;AAC1F,MAAMC,iBAAiB,CAAC3wB,QAAO+S,MAAMyD,YAAWzD,SAAS,SAASA,SAAS,SAAS/S,OAAM+S,IAAAA,IAAQyD,UAASxW,OAAM+S,IAAAA,IAAQyD;AACzH,MAAMoa,gBAAgB,CAACC,aAAa7B,kBAAkB72B,KAAKC,IAAI42B,iBAAiB6B,aAAaA,WAAAA;AAY7F,WAASC,OAAO7hB,KAAK8hB,UAAU;AAC7B,UAAM1P,SAAS,CAAA;AACf,UAAM2P,YAAY/hB,IAAIjW,SAAS+3B;AAC/B,UAAMP,MAAMvhB,IAAIjW;AAChB,QAAIC,KAAI;AAER,WAAOA,KAAIu3B,KAAKv3B,MAAK+3B,WAAW;AAC9B3P,aAAOpnB,KAAKgV,IAAI9W,KAAKoE,MAAMtD,EAAG,CAAA,CAAA;IAChC;AACA,WAAOooB;EACT;AAOA,WAAS4P,oBAAoBjxB,QAAOyB,QAAOyvB,iBAAiB;AAC1D,UAAMl4B,UAASgH,OAAM6Q,MAAM7X;AAC3B,UAAMm4B,cAAah5B,KAAKC,IAAIqJ,QAAOzI,UAAS,CAAA;AAC5C,UAAMX,SAAQ2H,OAAMqV;AACpB,UAAMjV,OAAMJ,OAAMsV;AAClB,UAAM8b,UAAU;AAChB,QAAIC,YAAYrxB,OAAM8Q,gBAAgBqgB,WAAAA;AACtC,QAAI3a;AAEJ,QAAI0a,iBAAiB;AACnB,UAAIl4B,YAAW,GAAG;AAChBwd,QAAAA,UAASre,KAAKoC,IAAI82B,YAAYh5B,QAAO+H,OAAMixB,SAAAA;iBAClC5vB,WAAU,GAAG;AACtB+U,QAAAA,WAAUxW,OAAM8Q,gBAAgB,CAAA,IAAKugB,aAAa;aAC7C;AACL7a,QAAAA,WAAU6a,YAAYrxB,OAAM8Q,gBAAgBqgB,cAAa,CAAA,KAAM;;AAEjEE,mBAAaF,cAAa1vB,SAAQ+U,UAAS,CAACA;AAG5C,UAAI6a,YAAYh5B,SAAQ+4B,WAAWC,YAAYjxB,OAAMgxB,SAAS;AAC5D;;;AAGJ,WAAOC;EACT;AAMA,WAASC,eAAeC,QAAQv4B,SAAQ;AACtC2vB,SAAK4I,QAAQ,CAACxkB,WAAU;AACtB,YAAMykB,KAAKzkB,OAAMykB;AACjB,YAAMC,QAAQD,GAAGx4B,SAAS;AAC1B,UAAIC;AACJ,UAAIw4B,QAAQz4B,SAAQ;AAClB,aAAKC,KAAI,GAAGA,KAAIw4B,OAAO,EAAEx4B,IAAG;AAC1B,iBAAO8T,OAAM1K,KAAKmvB,GAAGv4B,EAAAA,CAAE;QACzB;AACAu4B,WAAGpiB,OAAO,GAAGqiB,KAAAA;;IAEjB,CAAA;EACF;AAKA,WAASC,kBAAkB3yB,UAAS;AAClC,WAAOA,SAAQ4yB,YAAY5yB,SAAQ6wB,aAAa;EAClD;AAKA,WAASgC,eAAe7yB,UAAS8yB,UAAU;AACzC,QAAI,CAAC9yB,SAAQsgB,SAAS;AACpB,aAAO;;AAGT,UAAMyS,OAAOC,OAAOhzB,SAAQ+yB,MAAMD,QAAAA;AAClC,UAAM5J,UAAUO,UAAUzpB,SAAQkpB,OAAO;AACzC,UAAM+J,QAAQtzB,QAAQK,SAAQqd,IAAI,IAAIrd,SAAQqd,KAAKpjB,SAAS;AAE5D,WAAO,QAAS84B,KAAKG,aAAchK,QAAQ3T;EAC7C;AAEA,WAAS4d,mBAAmB/sB,QAAQnF,QAAO;AACzC,WAAOoF,cAAcD,QAAQ;MAC3BnF,OAAAA;MACAtI,MAAM;IACR,CAAA;EACF;AAEA,WAASy6B,kBAAkBhtB,QAAQ1D,QAAOnI,MAAM;AAC9C,WAAO8L,cAAcD,QAAQ;MAC3B7L;MACAmI,OAAAA;MACA/J,MAAM;IACR,CAAA;EACF;AAEA,WAAS06B,WAAW1B,OAAO3O,WAAU5hB,SAAS;AAE5C,QAAIsuB,MAAM4D,mBAAmB3B,KAAAA;AAC7B,QAAI,WAAY3O,cAAa,WAAa,CAAC5hB,WAAW4hB,cAAa,SAAU;AAC3E0M,YAAMgC,aAAahC,GAAAA;;AAErB,WAAOA;EACT;AAEA,WAAS6D,UAAUtyB,QAAOwW,SAAQuL,WAAU2O,OAAO;AACjD,UAAM,EAAChwB,KAAAA,MAAKG,MAAAA,OAAMD,QAAAA,SAAQD,OAAAA,QAAOpJ,MAAK,IAAIyI;AAC1C,UAAM,EAACuM,WAAWxH,QAAAA,QAAAA,IAAUxN;AAC5B,QAAI6f,WAAW;AACf,QAAI2C,UAAUwY,QAAQC;AACtB,UAAMle,UAAS1T,UAASF;AACxB,UAAM6T,SAAQ5T,SAAQE;AAEtB,QAAIb,OAAM0S,aAAY,GAAI;AACxB6f,eAASE,eAAe/B,OAAO7vB,OAAMF,MAAAA;AAErC,UAAI3C,SAAS+jB,SAAW,GAAA;AACtB,cAAM2Q,iBAAiBx0B,OAAOC,KAAK4jB,SAAAA,EAAU,CAAE;AAC/C,cAAMtiB,QAAQsiB,UAAS2Q,cAAe;AACtCF,iBAASztB,QAAO2tB,cAAAA,EAAgB9hB,iBAAiBnR,KAAAA,IAAS6U,UAASkC;iBAC1DuL,cAAa,UAAU;AAChCyQ,kBAAUjmB,UAAU3L,SAAS2L,UAAU7L,OAAO,IAAI4T,UAASkC;aACtD;AACLgc,iBAAS7B,eAAe3wB,QAAO+hB,WAAUvL,OAAAA;;AAE3CuD,iBAAWpZ,SAAQE;WACd;AACL,UAAI7C,SAAS+jB,SAAW,GAAA;AACtB,cAAM2Q,iBAAiBx0B,OAAOC,KAAK4jB,SAAAA,EAAU,CAAE;AAC/C,cAAMtiB,QAAQsiB,UAAS2Q,cAAe;AACtCH,iBAASxtB,QAAO2tB,cAAAA,EAAgB9hB,iBAAiBnR,KAAAA,IAAS8U,SAAQiC;iBACzDuL,cAAa,UAAU;AAChCwQ,kBAAUhmB,UAAU1L,OAAO0L,UAAU5L,SAAS,IAAI4T,SAAQiC;aACrD;AACL+b,iBAAS5B,eAAe3wB,QAAO+hB,WAAUvL,OAAAA;;AAE3Cgc,eAASC,eAAe/B,OAAO9vB,SAAQF,IAAAA;AACvC0W,iBAAW2K,cAAa,SAAS,CAACrJ,UAAUA;;AAE9C,WAAO;MAAC6Z;MAAQC;MAAQzY;MAAU3C;IAAQ;EAC5C;AAEe,MAAMub,QAAN,cAAoBtE,SAAAA;IAGjCt3B,YAAY6E,KAAK;AACf,YAAK;AAGL,WAAKuH,KAAKvH,IAAIuH;AAEd,WAAKzL,OAAOkE,IAAIlE;AAEhB,WAAKqH,UAAU1H;AAEf,WAAKiP,MAAM1K,IAAI0K;AAEf,WAAK/O,QAAQqE,IAAIrE;AAIjB,WAAKmJ,MAAMrJ;AAEX,WAAKuJ,SAASvJ;AAEd,WAAKwJ,OAAOxJ;AAEZ,WAAKsJ,QAAQtJ;AAEb,WAAKkd,QAAQld;AAEb,WAAKid,SAASjd;AACd,WAAKu7B,WAAW;QACd/xB,MAAM;QACNF,OAAO;QACPD,KAAK;QACLE,QAAQ;MACV;AAEA,WAAKmZ,WAAW1iB;AAEhB,WAAK2iB,YAAY3iB;AAEjB,WAAKw7B,aAAax7B;AAElB,WAAKy7B,gBAAgBz7B;AAErB,WAAK07B,cAAc17B;AAEnB,WAAK27B,eAAe37B;AAIpB,WAAKqL,OAAOrL;AAEZ,WAAK47B,gBAAgB57B;AACrB,WAAKe,MAAMf;AACX,WAAKkD,MAAMlD;AACX,WAAK67B,SAAS77B;AAEd,WAAKwZ,QAAQ,CAAA;AAEb,WAAKsiB,iBAAiB;AAEtB,WAAKC,cAAc;AAEnB,WAAKC,cAAc;AACnB,WAAK7iB,UAAU;AACf,WAAKwf,aAAa;AAClB,WAAKsD,oBAAoB,CAAA;AAEzB,WAAKje,cAAche;AAEnB,WAAKie,YAAYje;AACjB,WAAK6pB,iBAAiB;AACtB,WAAKqS,WAAWl8B;AAChB,WAAKm8B,WAAWn8B;AAChB,WAAKo8B,gBAAgBp8B;AACrB,WAAKq8B,gBAAgBr8B;AACrB,WAAKs8B,eAAe;AACpB,WAAKC,eAAe;AACpB,WAAK5jB,SAAS,CAAA;AACd,WAAK6jB,oBAAoB;AACzB,WAAK3sB,WAAW7P;IAClB;IAMAkpB,KAAKxhB,UAAS;AACZ,WAAKA,UAAUA,SAAQ+0B,WAAW,KAAK5pB,WAAU,CAAA;AAEjD,WAAKxH,OAAO3D,SAAQ2D;AAGpB,WAAK8wB,WAAW,KAAKppB,MAAMrL,SAAQ3G,GAAG;AACtC,WAAKm7B,WAAW,KAAKnpB,MAAMrL,SAAQxE,GAAG;AACtC,WAAKm5B,gBAAgB,KAAKtpB,MAAMrL,SAAQg1B,YAAY;AACpD,WAAKN,gBAAgB,KAAKrpB,MAAMrL,SAAQi1B,YAAY;IACtD;IAQA5pB,MAAM3E,KAAKhE,QAAO;AAChB,aAAOgE;IACT;IAOArC,gBAAgB;AACd,UAAI,EAACowB,UAAUD,UAAUG,eAAeD,cAAAA,IAAiB;AACzDD,iBAAWS,gBAAgBT,UAAUjwB,OAAOE,iBAAiB;AAC7D8vB,iBAAWU,gBAAgBV,UAAUhwB,OAAOC,iBAAiB;AAC7DkwB,sBAAgBO,gBAAgBP,eAAenwB,OAAOE,iBAAiB;AACvEgwB,sBAAgBQ,gBAAgBR,eAAelwB,OAAOC,iBAAiB;AACvE,aAAO;QACLpL,KAAK67B,gBAAgBT,UAAUE,aAAAA;QAC/Bn5B,KAAK05B,gBAAgBV,UAAUE,aAAAA;QAC/BpwB,YAAYnB,eAASsxB,QAAAA;QACrBlwB,YAAYpB,eAASqxB,QAAAA;MACvB;IACF;IAQA9nB,UAAUxF,UAAU;AAClB,UAAI,EAAC7N,KAAAA,MAAKmC,KAAAA,MAAK8I,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AAC3D,UAAIkI;AAEJ,UAAIjI,cAAcC,YAAY;AAC5B,eAAO;UAAClL,KAAAA;UAAKmC,KAAAA;QAAG;;AAGlB,YAAM25B,QAAQ,KAAKjwB,wBAAuB;AAC1C,eAAShL,KAAI,GAAGuI,OAAO0yB,MAAMl7B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAClDqS,QAAAA,SAAQ4oB,MAAMj7B,EAAE,EAACkL,WAAWsH,UAAU,MAAMxF,QAAAA;AAC5C,YAAI,CAAC5C,YAAY;AACfjL,UAAAA,OAAMD,KAAKC,IAAIA,MAAKkT,OAAMlT,GAAG;;AAE/B,YAAI,CAACkL,YAAY;AACf/I,UAAAA,OAAMpC,KAAKoC,IAAIA,MAAK+Q,OAAM/Q,GAAG;;MAEjC;AAGAnC,MAAAA,OAAMkL,cAAclL,OAAMmC,OAAMA,OAAMnC;AACtCmC,MAAAA,OAAM8I,cAAcjL,OAAMmC,OAAMnC,OAAMmC;AAEtC,aAAO;QACLnC,KAAK67B,gBAAgB77B,MAAK67B,gBAAgB15B,MAAKnC,IAAAA,CAAAA;QAC/CmC,KAAK05B,gBAAgB15B,MAAK05B,gBAAgB77B,MAAKmC,IAAAA,CAAAA;MACjD;IACF;IAOAisB,aAAa;AACX,aAAO;QACL3lB,MAAM,KAAKkyB,eAAe;QAC1BryB,KAAK,KAAKmyB,cAAc;QACxBlyB,OAAO,KAAKqyB,gBAAgB;QAC5BpyB,QAAQ,KAAKkyB,iBAAiB;MAChC;IACF;IAOAqB,WAAW;AACT,aAAO,KAAKtjB;IACd;IAKA/F,YAAY;AACV,YAAMzI,QAAO,KAAK9K,MAAM8K;AACxB,aAAO,KAAKtD,QAAQ8L,WAAW,KAAK6H,aAAY,IAAKrQ,MAAK+xB,UAAU/xB,MAAKgyB,YAAYhyB,MAAKwI,UAAU,CAAA;IACtG;IAKAypB,cAAc/nB,YAAY,KAAKhV,MAAMgV,WAAW;AAC9C,YAAMxT,QAAQ,KAAKq6B,gBAAgB,KAAKA,cAAc,KAAKmB,mBAAmBhoB,SAAS;AACvF,aAAOxT;IACT;IAGA6vB,eAAe;AACb,WAAK5Y,SAAS,CAAA;AACd,WAAK6jB,oBAAoB;IAC3B;IAMAW,eAAe;AACbh8B,eAAK,KAAKuG,QAAQy1B,cAAc;QAAC;MAAK,CAAA;IACxC;IAUAv3B,OAAO8c,UAAUC,WAAWya,SAAS;AACnC,YAAM,EAAC9d,aAAa+d,OAAO7jB,OAAO+d,SAAAA,IAAY,KAAK7vB;AACnD,YAAM41B,aAAa/F,SAAS+F;AAG5B,WAAKH,aAAY;AAGjB,WAAKza,WAAWA;AAChB,WAAKC,YAAYA;AACjB,WAAK4Y,WAAW6B,UAAUv2B,OAAOyB,OAAO;QACtCkB,MAAM;QACNF,OAAO;QACPD,KAAK;QACLE,QAAQ;SACP6zB,OAAAA;AAEH,WAAK5jB,QAAQ;AACb,WAAKwiB,cAAc;AACnB,WAAKF,iBAAiB;AACtB,WAAKC,cAAc;AAGnB,WAAKwB,oBAAmB;AACxB,WAAKC,cAAa;AAClB,WAAKC,mBAAkB;AAEvB,WAAK9E,aAAa,KAAKtd,aAAY,IAC/B,KAAK6B,QAAQkgB,QAAQ5zB,OAAO4zB,QAAQ9zB,QACpC,KAAK2T,SAASmgB,QAAQ/zB,MAAM+zB,QAAQ7zB;AAGxC,UAAI,CAAC,KAAKizB,mBAAmB;AAC3B,aAAKkB,iBAAgB;AACrB,aAAKC,oBAAmB;AACxB,aAAKC,gBAAe;AACpB,aAAK/B,SAASgC,UAAU,MAAMR,OAAO/d,WAAAA;AACrC,aAAKkd,oBAAoB;;AAG3B,WAAKsB,iBAAgB;AAErB,WAAKtkB,QAAQ,KAAKukB,WAAU,KAAM,CAAA;AAGlC,WAAKC,gBAAe;AAIpB,YAAMC,kBAAkBX,aAAa,KAAK9jB,MAAM7X;AAChD,WAAKu8B,sBAAsBD,kBAAkBxE,OAAO,KAAKjgB,OAAO8jB,UAAAA,IAAc,KAAK9jB,KAAK;AAMxF,WAAK9S,UAAS;AAGd,WAAKy3B,6BAA4B;AACjC,WAAKC,uBAAsB;AAC3B,WAAKC,4BAA2B;AAGhC,UAAI9G,SAASvP,YAAYuP,SAASD,YAAYC,SAAS+G,WAAW,SAAS;AACzE,aAAK9kB,QAAQ8d,SAAS,MAAM,KAAK9d,KAAK;AACtC,aAAKwiB,cAAc;AACnB,aAAKuC,cAAa;;AAGpB,UAAIN,iBAAiB;AAEnB,aAAKC,sBAAsB,KAAK1kB,KAAK;;AAGvC,WAAKglB,UAAS;AACd,WAAKC,IAAG;AACR,WAAKC,SAAQ;AAIb,WAAKC,YAAW;IAClB;IAKAj4B,YAAY;AACV,UAAIk4B,gBAAgB,KAAKl3B,QAAQoB;AACjC,UAAIwV,YAAYE;AAEhB,UAAI,KAAKnD,aAAY,GAAI;AACvBiD,qBAAa,KAAK9U;AAClBgV,mBAAW,KAAKlV;aACX;AACLgV,qBAAa,KAAKjV;AAClBmV,mBAAW,KAAKjV;AAEhBq1B,wBAAgB,CAACA;;AAEnB,WAAK5gB,cAAcM;AACnB,WAAKL,YAAYO;AACjB,WAAKqL,iBAAiB+U;AACtB,WAAKzlB,UAAUqF,WAAWF;AAC1B,WAAKugB,iBAAiB,KAAKn3B,QAAQo3B;IACrC;IAEAH,cAAc;AACZx9B,eAAK,KAAKuG,QAAQi3B,aAAa;QAAC;MAAK,CAAA;IACvC;IAIApB,sBAAsB;AACpBp8B,eAAK,KAAKuG,QAAQ61B,qBAAqB;QAAC;MAAK,CAAA;IAC/C;IACAC,gBAAgB;AAEd,UAAI,KAAKniB,aAAY,GAAI;AAEvB,aAAK6B,QAAQ,KAAKwF;AAClB,aAAKlZ,OAAO;AACZ,aAAKF,QAAQ,KAAK4T;aACb;AACL,aAAKD,SAAS,KAAK0F;AAGnB,aAAKtZ,MAAM;AACX,aAAKE,SAAS,KAAK0T;;AAIrB,WAAKye,cAAc;AACnB,WAAKF,aAAa;AAClB,WAAKG,eAAe;AACpB,WAAKF,gBAAgB;IACvB;IACAgC,qBAAqB;AACnBt8B,eAAK,KAAKuG,QAAQ+1B,oBAAoB;QAAC;MAAK,CAAA;IAC9C;IAEAsB,WAAWhhB,OAAM;AACf,WAAK7d,MAAM8+B,cAAcjhB,OAAM,KAAKlL,WAAU,CAAA;AAC9C1R,eAAK,KAAKuG,QAAQqW,KAAAA,GAAO;QAAC;MAAK,CAAA;IACjC;IAGA2f,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;AAC5B99B,eAAK,KAAKuG,QAAQu3B,6BAA6B;QAAC;MAAK,CAAA;IACvD;IAKAC,mBAAmB1lB,OAAO;AACxB,YAAM+d,WAAW,KAAK7vB,QAAQ8R;AAC9B,UAAI5X,IAAGuI,MAAMlI;AACb,WAAKL,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAMvI,MAAK;AAC9CK,eAAOuX,MAAM5X,EAAE;AACfK,aAAK2S,QAAQzT,SAAKo2B,SAAS4H,UAAU;UAACl9B,KAAKmG;UAAOxG;UAAG4X;QAAM,GAAE,IAAI;MACnE;IACF;IACA4lB,6BAA6B;AAC3Bj+B,eAAK,KAAKuG,QAAQ03B,4BAA4B;QAAC;MAAK,CAAA;IACtD;IAIAjB,+BAA+B;AAC7Bh9B,eAAK,KAAKuG,QAAQy2B,8BAA8B;QAAC;MAAK,CAAA;IACxD;IACAC,yBAAyB;AACvB,YAAM12B,WAAU,KAAKA;AACrB,YAAM6vB,WAAW7vB,SAAQ8R;AACzB,YAAM6lB,WAAW9F,cAAc,KAAK/f,MAAM7X,QAAQ+F,SAAQ8R,MAAMme,aAAa;AAC7E,YAAM2H,cAAc/H,SAAS+H,eAAe;AAC5C,YAAMC,cAAchI,SAASgI;AAC7B,UAAI3D,gBAAgB0D;AACpB,UAAIE,WAAW7c,WAAW8c;AAE1B,UAAI,CAAC,KAAKC,WAAU,KAAM,CAACnI,SAASvP,WAAWsX,eAAeC,eAAeF,YAAY,KAAK,CAAC,KAAKhkB,aAAY,GAAI;AAClH,aAAKugB,gBAAgB0D;AACrB;;AAGF,YAAMK,aAAa,KAAKC,eAAc;AACtC,YAAMC,gBAAgBF,WAAWG,OAAO5iB;AACxC,YAAM6iB,iBAAiBJ,WAAWK,QAAQ/iB;AAI1C,YAAMyF,WAAWud,YAAY,KAAK//B,MAAMgd,QAAQ2iB,eAAe,GAAG,KAAKnd,QAAQ;AAC/E8c,kBAAY93B,SAAQyX,SAAS,KAAKuD,WAAW2c,WAAW3c,YAAY2c,WAAW;AAG/E,UAAIQ,gBAAgB,IAAIL,WAAW;AACjCA,oBAAY9c,YAAY2c,YAAY33B,SAAQyX,SAAS,MAAM;AAC3DwD,oBAAY,KAAKA,YAAY0X,kBAAkB3yB,SAAQ0X,IAAI,IAC3DmY,SAAS3G,UAAU2J,eAAe7yB,SAAQw4B,OAAO,KAAKhgC,MAAMwH,QAAQ+yB,IAAI;AACxEgF,2BAAmB3+B,KAAKuqB,KAAKwU,gBAAgBA,gBAAgBE,iBAAiBA,cAAAA;AAC9EnE,wBAAgBuE,UAAUr/B,KAAKC,IAC7BD,KAAKs/B,KAAKH,aAAaN,WAAWK,QAAQ/iB,SAAS,KAAKuiB,WAAW,IAAI,CAAA,CAAA,GACvE1+B,KAAKs/B,KAAKH,YAAYtd,YAAY8c,kBAAkB,IAAI,CAAA,CAAA,IAAM3+B,KAAKs/B,KAAKH,YAAYF,iBAAiBN,kBAAkB,IAAI,CAAA,CAAA,CAAA,CAAA;AAE7H7D,wBAAgB96B,KAAKoC,IAAIo8B,aAAax+B,KAAKC,IAAIw+B,aAAa3D,aAAAA,CAAAA;;AAG9D,WAAKA,gBAAgBA;IACvB;IACAyC,8BAA8B;AAC5Bl9B,eAAK,KAAKuG,QAAQ22B,6BAA6B;QAAC;MAAK,CAAA;IACvD;IACAE,gBAAgB;IAAA;IAIhBC,YAAY;AACVr9B,eAAK,KAAKuG,QAAQ82B,WAAW;QAAC;MAAK,CAAA;IACrC;IACAC,MAAM;AAEJ,YAAMrX,UAAU;QACdlK,OAAO;QACPD,QAAQ;MACV;AAEA,YAAM,EAAC/c,OAAOwH,SAAS,EAAC8R,OAAO+d,UAAU2I,OAAOG,WAAWjhB,MAAMkhB,SAAAA,EAAS,IAAI;AAC9E,YAAMtY,UAAU,KAAK0X,WAAU;AAC/B,YAAMrkB,eAAe,KAAKA,aAAY;AAEtC,UAAI2M,SAAS;AACX,cAAMuY,cAAchG,eAAe8F,WAAWngC,MAAMwH,QAAQ+yB,IAAI;AAChE,YAAIpf,cAAc;AAChB+L,kBAAQlK,QAAQ,KAAKwF;AACrB0E,kBAAQnK,SAASod,kBAAkBiG,QAAYC,IAAAA;eAC1C;AACLnZ,kBAAQnK,SAAS,KAAK0F;AACtByE,kBAAQlK,QAAQmd,kBAAkBiG,QAAYC,IAAAA;;AAIhD,YAAIhJ,SAASvP,WAAW,KAAKxO,MAAM7X,QAAQ;AACzC,gBAAM,EAACs2B,OAAO7a,MAAM0iB,QAAQE,QAAAA,IAAW,KAAKJ,eAAc;AAC1D,gBAAMY,cAAcjJ,SAAS3G,UAAU;AACvC,gBAAM6P,eAAe3e,UAAU,KAAK8Z,aAAa;AACjD,gBAAMlb,MAAM5f,KAAK4f,IAAI+f,YAAAA;AACrB,gBAAM7f,MAAM9f,KAAK8f,IAAI6f,YAAAA;AAErB,cAAIplB,cAAc;AAEhB,kBAAMqlB,cAAcnJ,SAASoJ,SAAS,IAAI/f,MAAMkf,OAAO5iB,QAAQwD,MAAMsf,QAAQ/iB;AAC7EmK,oBAAQnK,SAASnc,KAAKC,IAAI,KAAK4hB,WAAWyE,QAAQnK,SAASyjB,cAAcF,WAAAA;iBACpE;AAGL,kBAAMI,aAAarJ,SAASoJ,SAAS,IAAIjgB,MAAMof,OAAO5iB,QAAQ0D,MAAMof,QAAQ/iB;AAE5EmK,oBAAQlK,QAAQpc,KAAKC,IAAI,KAAK2hB,UAAU0E,QAAQlK,QAAQ0jB,aAAaJ,WAAAA;;AAEvE,eAAKK,kBAAkB5I,OAAO7a,MAAMwD,KAAKF,GAAAA;;;AAI7C,WAAKogB,eAAc;AAEnB,UAAIzlB,cAAc;AAChB,aAAK6B,QAAQ,KAAK/D,UAAUjZ,MAAMgd,QAAQ,KAAKqe,SAAS/xB,OAAO,KAAK+xB,SAASjyB;AAC7E,aAAK2T,SAASmK,QAAQnK;aACjB;AACL,aAAKC,QAAQkK,QAAQlK;AACrB,aAAKD,SAAS,KAAK9D,UAAUjZ,MAAM+c,SAAS,KAAKse,SAASlyB,MAAM,KAAKkyB,SAAShyB;;IAElF;IAEAs3B,kBAAkB5I,OAAO7a,MAAMwD,KAAKF,KAAK;AACvC,YAAM,EAAClH,OAAO,EAAC6f,OAAOzI,QAAO,GAAGlG,UAAAA,UAAQ,IAAI,KAAKhjB;AACjD,YAAMq5B,YAAY,KAAKnF,kBAAkB;AACzC,YAAMoF,mBAAmBtW,cAAa,SAAS,KAAKrf,SAAS;AAE7D,UAAI,KAAKgQ,aAAY,GAAI;AACvB,cAAM4lB,aAAa,KAAKxnB,gBAAgB,CAAK,IAAA,KAAKjQ;AAClD,cAAM03B,cAAc,KAAK53B,QAAQ,KAAKmQ,gBAAgB,KAAKD,MAAM7X,SAAS,CAAA;AAC1E,YAAI+5B,cAAc;AAClB,YAAIC,eAAe;AAInB,YAAIoF,WAAW;AACb,cAAIC,kBAAkB;AACpBtF,0BAAchb,MAAMuX,MAAM/a;AAC1Bye,2BAAe/a,MAAMxD,KAAKH;iBACrB;AACLye,0BAAc9a,MAAMqX,MAAMhb;AAC1B0e,2BAAejb,MAAMtD,KAAKF;;mBAEnBmc,UAAU,SAAS;AAC5BsC,yBAAeve,KAAKF;mBACXmc,UAAU,OAAO;AAC1BqC,wBAAczD,MAAM/a;mBACXmc,UAAU,SAAS;AAC5BqC,wBAAczD,MAAM/a,QAAQ;AAC5Bye,yBAAeve,KAAKF,QAAQ;;AAI9B,aAAKwe,cAAc56B,KAAKoC,KAAKw4B,cAAcuF,aAAarQ,WAAW,KAAK1T,SAAS,KAAKA,QAAQ+jB,aAAa,CAAA;AAC3G,aAAKtF,eAAe76B,KAAKoC,KAAKy4B,eAAeuF,cAActQ,WAAW,KAAK1T,SAAS,KAAKA,QAAQgkB,cAAc,CAAA;aAC1G;AACL,YAAI1F,aAAape,KAAKH,SAAS;AAC/B,YAAIwe,gBAAgBxD,MAAMhb,SAAS;AAEnC,YAAIoc,UAAU,SAAS;AACrBmC,uBAAa;AACbC,0BAAgBxD,MAAMhb;mBACboc,UAAU,OAAO;AAC1BmC,uBAAape,KAAKH;AAClBwe,0BAAgB;;AAGlB,aAAKD,aAAaA,aAAa5K;AAC/B,aAAK6K,gBAAgBA,gBAAgB7K;;IAEzC;IAMAkQ,iBAAiB;AACf,UAAI,KAAKvF,UAAU;AACjB,aAAKA,SAAS/xB,OAAO1I,KAAKoC,IAAI,KAAKw4B,aAAa,KAAKH,SAAS/xB,IAAI;AAClE,aAAK+xB,SAASlyB,MAAMvI,KAAKoC,IAAI,KAAKs4B,YAAY,KAAKD,SAASlyB,GAAG;AAC/D,aAAKkyB,SAASjyB,QAAQxI,KAAKoC,IAAI,KAAKy4B,cAAc,KAAKJ,SAASjyB,KAAK;AACrE,aAAKiyB,SAAShyB,SAASzI,KAAKoC,IAAI,KAAKu4B,eAAe,KAAKF,SAAShyB,MAAM;;IAE5E;IAEAm1B,WAAW;AACTv9B,eAAK,KAAKuG,QAAQg3B,UAAU;QAAC;MAAK,CAAA;IACpC;IAMArjB,eAAe;AACb,YAAM,EAAChQ,MAAMqf,UAAAA,UAAAA,IAAY,KAAKhjB;AAC9B,aAAOgjB,cAAa,SAASA,cAAa,YAAYrf,SAAS;IACjE;IAIA81B,aAAa;AACX,aAAO,KAAKz5B,QAAQ2mB;IACtB;IAMA6P,sBAAsB1kB,OAAO;AAC3B,WAAKylB,4BAA2B;AAEhC,WAAKC,mBAAmB1lB,KAAAA;AAGxB,UAAI5X,IAAGuI;AACP,WAAKvI,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAMvI,MAAK;AAC9C,YAAIoY,cAAcR,MAAM5X,EAAE,EAACgT,KAAK,GAAG;AACjC4E,gBAAMzB,OAAOnW,IAAG,CAAA;AAChBuI;AACAvI,UAAAA;;MAEJ;AAEA,WAAKw9B,2BAA0B;IACjC;IAMAQ,iBAAiB;AACf,UAAID,aAAa,KAAK3D;AAEtB,UAAI,CAAC2D,YAAY;AACf,cAAMrC,aAAa,KAAK51B,QAAQ8R,MAAM8jB;AACtC,YAAI9jB,QAAQ,KAAKA;AACjB,YAAI8jB,aAAa9jB,MAAM7X,QAAQ;AAC7B6X,kBAAQigB,OAAOjgB,OAAO8jB,UAAAA;;AAGxB,aAAKtB,cAAc2D,aAAa,KAAKyB,mBAAmB5nB,OAAOA,MAAM7X,QAAQ,KAAK+F,QAAQ8R,MAAMme,aAAa;;AAG/G,aAAOgI;IACT;IAQAyB,mBAAmB5nB,OAAO7X,SAAQg2B,eAAe;AAC/C,YAAM,EAAC1oB,KAAKgtB,mBAAmB/B,OAAM,IAAI;AACzC,YAAMmH,SAAS,CAAA;AACf,YAAMC,UAAU,CAAA;AAChB,YAAM3H,YAAY74B,KAAKoE,MAAMvD,UAAS43B,cAAc53B,SAAQg2B,aAAAA,CAAAA;AAC5D,UAAI4J,kBAAkB;AACtB,UAAIC,mBAAmB;AACvB,UAAI5/B,IAAGipB,IAAG4W,MAAM7sB,OAAO8sB,UAAUC,YAAYjsB,QAAOklB,YAAY1d,QAAOD,SAAQ2kB;AAE/E,WAAKhgC,KAAI,GAAGA,KAAID,SAAQC,MAAK+3B,WAAW;AACtC/kB,gBAAQ4E,MAAM5X,EAAE,EAACgT;AACjB8sB,mBAAW,KAAKG,wBAAwBjgC,EAAAA;AACxCqN,YAAIwrB,OAAOkH,aAAaD,SAASI;AACjCpsB,QAAAA,SAAQwkB,OAAOyH,UAAAA,IAAczH,OAAOyH,UAAAA,KAAe;UAAC32B,MAAM,CAAA;UAAImvB,IAAI,CAAA;QAAE;AACpES,qBAAa8G,SAAS9G;AACtB1d,QAAAA,SAAQD,UAAS;AAEjB,YAAI,CAACjD,cAAcpF,KAAU,KAAA,CAACvN,QAAQuN,KAAQ,GAAA;AAC5CsI,UAAAA,SAAQ6kB,aAAa9yB,KAAKyG,OAAM1K,MAAM0K,OAAMykB,IAAIjd,QAAOtI,KAAAA;AACvDqI,UAAAA,UAAS2d;mBACAvzB,QAAQuN,KAAQ,GAAA;AAEzB,eAAKiW,KAAI,GAAG4W,OAAO7sB,MAAMjT,QAAQkpB,KAAI4W,MAAM,EAAE5W,IAAG;AAC9C+W,0BAAqChtB,MAAMiW,EAAE;AAE7C,gBAAI,CAAC7Q,cAAc4nB,WAAgB,KAAA,CAACv6B,QAAQu6B,WAAc,GAAA;AACxD1kB,cAAAA,SAAQ6kB,aAAa9yB,KAAKyG,OAAM1K,MAAM0K,OAAMykB,IAAIjd,QAAO0kB,WAAAA;AACvD3kB,cAAAA,WAAU2d;;UAEd;;AAEFyG,eAAOz+B,KAAKsa,MAAAA;AACZokB,gBAAQ1+B,KAAKqa,OAAAA;AACbskB,0BAAkBzgC,KAAKoC,IAAIga,QAAOqkB,eAAAA;AAClCC,2BAAmB1gC,KAAKoC,IAAI+Z,SAAQukB,gBAAAA;MACtC;AACAvH,qBAAeC,QAAQv4B,OAAAA;AAEvB,YAAMm+B,SAASuB,OAAOzjB,QAAQ2jB,eAAAA;AAC9B,YAAMvB,UAAUsB,QAAQ1jB,QAAQ4jB,gBAAAA;AAEhC,YAAMQ,UAAU,CAACC,SAAS;QAAC/kB,OAAOmkB,OAAOY,GAAAA,KAAQ;QAAGhlB,QAAQqkB,QAAQW,GAAAA,KAAQ;;AAE5E,aAAO;QACLhK,OAAO+J,QAAQ,CAAA;QACf5kB,MAAM4kB,QAAQrgC,UAAS,CAAA;QACvBm+B,QAAQkC,QAAQlC,MAAAA;QAChBE,SAASgC,QAAQhC,OAAAA;QACjBqB;QACAC;MACF;IACF;IAOAzsB,iBAAiBzM,OAAO;AACtB,aAAOA;IACT;IASAmR,iBAAiBnR,OAAOgC,QAAO;AAC7B,aAAO+J;IACT;IAQAsK,iBAAiByjB,OAAO;IAAA;IAQxBzoB,gBAAgBrP,QAAO;AACrB,YAAMoP,QAAQ,KAAKA;AACnB,UAAIpP,SAAQ,KAAKA,SAAQoP,MAAM7X,SAAS,GAAG;AACzC,eAAO;;AAET,aAAO,KAAK4X,iBAAiBC,MAAMpP,MAAAA,EAAOhC,KAAK;IACjD;IAQAmW,mBAAmB4jB,SAAS;AAC1B,UAAI,KAAKtY,gBAAgB;AACvBsY,kBAAU,IAAIA;;AAGhB,YAAMD,QAAQ,KAAKlkB,cAAcmkB,UAAU,KAAKhpB;AAChD,aAAOipB,YAAY,KAAKvD,iBAAiBwD,YAAY,KAAKniC,OAAOgiC,OAAO,CAAA,IAAKA,KAAK;IACpF;IAMAI,mBAAmBJ,OAAO;AACxB,YAAMC,WAAWD,QAAQ,KAAKlkB,eAAe,KAAK7E;AAClD,aAAO,KAAK0Q,iBAAiB,IAAIsY,UAAUA;IAC7C;IAOA1lB,eAAe;AACb,aAAO,KAAKlD,iBAAiB,KAAKgpB,aAAY,CAAA;IAChD;IAKAA,eAAe;AACb,YAAM,EAACxhC,KAAAA,MAAKmC,KAAAA,KAAG,IAAI;AAEnB,aAAOnC,OAAM,KAAKmC,OAAM,IAAIA,OAC1BnC,OAAM,KAAKmC,OAAM,IAAInC,OACrB;IACJ;IAKA8R,WAAWzI,QAAO;AAChB,YAAMoP,QAAQ,KAAKA,SAAS,CAAA;AAE5B,UAAIpP,UAAS,KAAKA,SAAQoP,MAAM7X,QAAQ;AACtC,cAAMM,OAAOuX,MAAMpP,MAAM;AACzB,eAAOnI,KAAK4N,aACb5N,KAAK4N,WAAWirB,kBAAkB,KAAKjoB,WAAU,GAAIzI,QAAOnI,IAAI;;AAEjE,aAAO,KAAK4N,aACZ,KAAKA,WAAWgrB,mBAAmB,KAAK36B,MAAM2S,WAAU,GAAI,IAAI;IAClE;IAMA2lB,YAAY;AACV,YAAMgK,cAAc,KAAK96B,QAAQ8R;AAGjC,YAAMipB,MAAM3gB,UAAU,KAAK8Z,aAAa;AACxC,YAAMlb,MAAM5f,KAAKwY,IAAIxY,KAAK4f,IAAI+hB,GAAAA,CAAAA;AAC9B,YAAM7hB,MAAM9f,KAAKwY,IAAIxY,KAAK8f,IAAI6hB,GAAAA,CAAAA;AAE9B,YAAM9C,aAAa,KAAKC,eAAc;AACtC,YAAMhP,UAAU4R,YAAYE,mBAAmB;AAC/C,YAAMjT,KAAIkQ,aAAaA,WAAWG,OAAO5iB,QAAQ0T,UAAU;AAC3D,YAAMjB,KAAIgQ,aAAaA,WAAWK,QAAQ/iB,SAAS2T,UAAU;AAG7D,aAAO,KAAKvV,aAAY,IACpBsU,KAAIjP,MAAM+O,KAAI7O,MAAM6O,KAAI/O,MAAMiP,KAAI/O,MAClC+O,KAAI/O,MAAM6O,KAAI/O,MAAMiP,KAAIjP,MAAM+O,KAAI7O;IACxC;IAMA8e,aAAa;AACX,YAAM1X,UAAU,KAAKtgB,QAAQsgB;AAE7B,UAAIA,YAAY,QAAQ;AACtB,eAAO,CAAC,CAACA;;AAGX,aAAO,KAAKpb,wBAAuB,EAAGjL,SAAS;IACjD;IAKAghC,sBAAsBztB,WAAW;AAC/B,YAAM7J,OAAO,KAAKA;AAClB,YAAMnL,QAAQ,KAAKA;AACnB,YAAMwH,WAAU,KAAKA;AACrB,YAAM,EAAC0X,MAAMsL,UAAAA,WAAU9D,OAAAA,IAAUlf;AACjC,YAAMyX,UAASC,KAAKD;AACpB,YAAM9D,eAAe,KAAKA,aAAY;AACtC,YAAM7B,QAAQ,KAAKA;AACnB,YAAMggB,cAAchgB,MAAM7X,UAAUwd,UAAS,IAAI;AACjD,YAAMyjB,KAAKvI,kBAAkBjb,IAAAA;AAC7B,YAAM1d,QAAQ,CAAA;AAEd,YAAMmhC,aAAajc,OAAO6V,WAAW,KAAK5pB,WAAU,CAAA;AACpD,YAAMiwB,YAAYD,WAAW7a,UAAU6a,WAAW3lB,QAAQ;AAC1D,YAAM6lB,gBAAgBD,YAAY;AAClC,YAAME,mBAAmB,SAASd,OAAO;AACvC,eAAOG,YAAYniC,OAAOgiC,OAAOY,SAAAA;MACnC;AACA,UAAIG,aAAarhC,IAAGo4B,WAAWkJ;AAC/B,UAAIC,KAAKC,KAAKC,KAAKC,KAAKC,IAAIC,IAAIC,KAAIC;AAEpC,UAAIhZ,cAAa,OAAO;AACtBuY,sBAAcD,iBAAiB,KAAKz5B,MAAM;AAC1C65B,cAAM,KAAK75B,SAASq5B;AACpBU,cAAML,cAAcF;AACpBS,aAAKR,iBAAiB9tB,UAAU7L,GAAG,IAAI05B;AACvCW,QAAAA,MAAKxuB,UAAU3L;iBACNmhB,cAAa,UAAU;AAChCuY,sBAAcD,iBAAiB,KAAK35B,GAAG;AACvCm6B,aAAKtuB,UAAU7L;AACfq6B,QAAAA,MAAKV,iBAAiB9tB,UAAU3L,MAAM,IAAIw5B;AAC1CK,cAAMH,cAAcF;AACpBO,cAAM,KAAKj6B,MAAMu5B;iBACRlY,cAAa,QAAQ;AAC9BuY,sBAAcD,iBAAiB,KAAK15B,KAAK;AACzC65B,cAAM,KAAK75B,QAAQs5B;AACnBS,cAAMJ,cAAcF;AACpBQ,aAAKP,iBAAiB9tB,UAAU1L,IAAI,IAAIu5B;AACxCU,QAAAA,MAAKvuB,UAAU5L;iBACNohB,cAAa,SAAS;AAC/BuY,sBAAcD,iBAAiB,KAAKx5B,IAAI;AACxC+5B,aAAKruB,UAAU1L;AACfi6B,QAAAA,MAAKT,iBAAiB9tB,UAAU5L,KAAK,IAAIy5B;AACzCI,cAAMF,cAAcF;AACpBM,cAAM,KAAK75B,OAAOo5B;iBACTv3B,SAAS,KAAK;AACvB,YAAIqf,cAAa,UAAU;AACzBuY,wBAAcD,kBAAkB9tB,UAAU7L,MAAM6L,UAAU3L,UAAU,IAAI,GAAA;mBAC/D5C,SAAS+jB,SAAW,GAAA;AAC7B,gBAAM2Q,iBAAiBx0B,OAAOC,KAAK4jB,SAAAA,EAAU,CAAE;AAC/C,gBAAMtiB,QAAQsiB,UAAS2Q,cAAe;AACtC4H,wBAAcD,iBAAiB,KAAK9iC,MAAMwN,OAAO2tB,cAAAA,EAAgB9hB,iBAAiBnR,KAAAA,CAAAA;;AAGpFo7B,aAAKtuB,UAAU7L;AACfq6B,QAAAA,MAAKxuB,UAAU3L;AACf65B,cAAMH,cAAcF;AACpBO,cAAMF,MAAMR;iBACHv3B,SAAS,KAAK;AACvB,YAAIqf,cAAa,UAAU;AACzBuY,wBAAcD,kBAAkB9tB,UAAU1L,OAAO0L,UAAU5L,SAAS,CAAA;mBAC3D3C,SAAS+jB,SAAW,GAAA;AAC7B,gBAAM2Q,iBAAiBx0B,OAAOC,KAAK4jB,SAAAA,EAAU,CAAE;AAC/C,gBAAMtiB,QAAQsiB,UAAS2Q,cAAe;AACtC4H,wBAAcD,iBAAiB,KAAK9iC,MAAMwN,OAAO2tB,cAAAA,EAAgB9hB,iBAAiBnR,KAAAA,CAAAA;;AAGpF+6B,cAAMF,cAAcF;AACpBM,cAAMF,MAAMP;AACZW,aAAKruB,UAAU1L;AACfi6B,QAAAA,MAAKvuB,UAAU5L;;AAGjB,YAAMq6B,QAAQ9yB,eAAenJ,SAAQ8R,MAAMme,eAAe6B,WAAAA;AAC1D,YAAMoK,OAAO9iC,KAAKoC,IAAI,GAAGpC,KAAKk4B,KAAKQ,cAAcmK,KAAAA,CAAAA;AACjD,WAAK/hC,KAAI,GAAGA,KAAI43B,aAAa53B,MAAKgiC,MAAM;AACtC,cAAMruB,UAAU,KAAK1C,WAAWjR,EAAAA;AAChC,cAAMiiC,cAAczkB,KAAKqd,WAAWlnB,OAAAA;AACpC,cAAMuuB,oBAAoBld,OAAO6V,WAAWlnB,OAAAA;AAE5C,cAAM8P,YAAYwe,YAAYxe;AAC9B,cAAM0e,YAAYF,YAAY//B;AAC9B,cAAMkgC,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,MAAMh4B,IAAGud,OAAAA;AAGzC,YAAI6a,cAAch6B,QAAW;AAC3B;;AAGFkjC,2BAAmBb,YAAYniC,OAAO85B,WAAW3U,SAAAA;AAEjD,YAAIhK,cAAc;AAChB8nB,gBAAME,MAAME,KAAKE,MAAKP;eACjB;AACLE,gBAAME,MAAME,KAAKE,MAAKR;;AAGxBxhC,cAAMkB,KAAK;UACTugC;UACAC;UACAC;UACAC;UACAC;UACAC;UACAC,IAAAA;UACAC,IAAAA;UACAxmB,OAAOmI;UACPvhB,OAAOigC;UACPC;UACAE;UACA1E;UACA4E;UACAC;UACAC;QACF,CAAA;MACF;AAEA,WAAKhI,eAAe9C;AACpB,WAAK+C,eAAe0G;AAEpB,aAAOvhC;IACT;IAKAw7B,mBAAmBhoB,WAAW;AAC5B,YAAM7J,OAAO,KAAKA;AAClB,YAAM3D,WAAU,KAAKA;AACrB,YAAM,EAACgjB,UAAAA,WAAUlR,OAAOgpB,YAAAA,IAAe96B;AACvC,YAAM2T,eAAe,KAAKA,aAAY;AACtC,YAAM7B,QAAQ,KAAKA;AACnB,YAAM,EAAC6f,OAAOkL,YAAY3T,SAAS+P,OAAM,IAAI6B;AAC7C,YAAMI,KAAKvI,kBAAkB3yB,SAAQ0X,IAAI;AACzC,YAAMolB,iBAAiB5B,KAAKhS;AAC5B,YAAM6T,kBAAkB9D,SAAS,CAAC/P,UAAU4T;AAC5C,YAAMzkB,WAAW,CAAC+B,UAAU,KAAK8Z,aAAa;AAC9C,YAAMl6B,QAAQ,CAAA;AACd,UAAIE,IAAGuI,MAAMlI,MAAM2S,OAAOzL,IAAGC,IAAGs7B,WAAWxC,OAAOzH,MAAMG,YAAY+J,WAAWC;AAC/E,UAAIC,eAAe;AAEnB,UAAIna,cAAa,OAAO;AACtBthB,QAAAA,KAAI,KAAKG,SAASk7B;AAClBC,oBAAY,KAAKI,wBAAuB;iBAC/Bpa,cAAa,UAAU;AAChCthB,QAAAA,KAAI,KAAKC,MAAMo7B;AACfC,oBAAY,KAAKI,wBAAuB;iBAC/Bpa,cAAa,QAAQ;AAC9B,cAAM0M,MAAM,KAAK2N,wBAAwBnC,EAAAA;AACzC8B,oBAAYtN,IAAIsN;AAChBv7B,QAAAA,KAAIiuB,IAAIjuB;iBACCuhB,cAAa,SAAS;AAC/B,cAAM0M,MAAM,KAAK2N,wBAAwBnC,EAAAA;AACzC8B,oBAAYtN,IAAIsN;AAChBv7B,QAAAA,KAAIiuB,IAAIjuB;iBACCkC,SAAS,KAAK;AACvB,YAAIqf,cAAa,UAAU;AACzBthB,UAAAA,MAAM8L,UAAU7L,MAAM6L,UAAU3L,UAAU,IAAKi7B;mBACtC79B,SAAS+jB,SAAW,GAAA;AAC7B,gBAAM2Q,iBAAiBx0B,OAAOC,KAAK4jB,SAAAA,EAAU,CAAE;AAC/C,gBAAMtiB,QAAQsiB,UAAS2Q,cAAe;AACtCjyB,UAAAA,KAAI,KAAKlJ,MAAMwN,OAAO2tB,cAAe,EAAC9hB,iBAAiBnR,KAASo8B,IAAAA;;AAElEE,oBAAY,KAAKI,wBAAuB;iBAC/Bz5B,SAAS,KAAK;AACvB,YAAIqf,cAAa,UAAU;AACzBvhB,UAAAA,MAAM+L,UAAU1L,OAAO0L,UAAU5L,SAAS,IAAKk7B;mBACtC79B,SAAS+jB,SAAW,GAAA;AAC7B,gBAAM2Q,iBAAiBx0B,OAAOC,KAAK4jB,SAAAA,EAAU,CAAE;AAC/C,gBAAMtiB,QAAQsiB,UAAS2Q,cAAe;AACtClyB,UAAAA,KAAI,KAAKjJ,MAAMwN,OAAO2tB,cAAAA,EAAgB9hB,iBAAiBnR,KAAAA;;AAEzDs8B,oBAAY,KAAKK,wBAAwBnC,EAAAA,EAAI8B;;AAG/C,UAAIr5B,SAAS,KAAK;AAChB,YAAIguB,UAAU,SAAS;AACrBwL,yBAAe;mBACNxL,UAAU,OAAO;AAC1BwL,yBAAe;;;AAInB,YAAMlF,aAAa,KAAKC,eAAc;AACtC,WAAKh+B,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CK,eAAOuX,MAAM5X,EAAE;AACfgT,gBAAQ3S,KAAK2S;AAEb,cAAMivB,cAAcrB,YAAY/F,WAAW,KAAK5pB,WAAWjR,EAAAA,CAAAA;AAC3DsgC,gBAAQ,KAAKzoB,gBAAgB7X,EAAAA,IAAK4gC,YAAYwC;AAC9CvK,eAAO,KAAKoH,wBAAwBjgC,EAAAA;AACpCg5B,qBAAaH,KAAKG;AAClB+J,oBAAYt9B,QAAQuN,KAAAA,IAASA,MAAMjT,SAAS;AAC5C,cAAMsjC,YAAYN,YAAY;AAC9B,cAAM7gC,SAAQ+/B,YAAY//B;AAC1B,cAAMohC,cAAcrB,YAAYsB;AAChC,cAAMC,cAAcvB,YAAYwB;AAChC,YAAIC,gBAAgBZ;AAEpB,YAAIrpB,cAAc;AAChBlS,UAAAA,KAAI+4B;AAEJ,cAAIwC,cAAc,SAAS;AACzB,gBAAI9iC,OAAMuI,OAAO,GAAG;AAClBm7B,8BAAgB,CAAC,KAAK59B,QAAQoB,UAAU,UAAU;uBACzClH,OAAM,GAAG;AAClB0jC,8BAAgB,CAAC,KAAK59B,QAAQoB,UAAU,SAAS;mBAC5C;AACLw8B,8BAAgB;;;AAIpB,cAAI5a,cAAa,OAAO;AACtB,gBAAI6Z,eAAe,UAAUxkB,aAAa,GAAG;AAC3C6kB,2BAAa,CAACD,YAAY/J,aAAaA,aAAa;uBAC3C2J,eAAe,UAAU;AAClCK,2BAAa,CAACjF,WAAWK,QAAQ/iB,SAAS,IAAIgoB,YAAYrK,aAAaA;mBAClE;AACLgK,2BAAa,CAACjF,WAAWK,QAAQ/iB,SAAS2d,aAAa;;iBAEpD;AAEL,gBAAI2J,eAAe,UAAUxkB,aAAa,GAAG;AAC3C6kB,2BAAahK,aAAa;uBACjB2J,eAAe,UAAU;AAClCK,2BAAajF,WAAWK,QAAQ/iB,SAAS,IAAIgoB,YAAYrK;mBACpD;AACLgK,2BAAajF,WAAWK,QAAQ/iB,SAAS0nB,YAAY/J;;;AAGzD,cAAI+F,QAAQ;AACViE,0BAAc;;AAEhB,cAAI7kB,aAAa,KAAK,CAAC8jB,YAAY0B,mBAAmB;AACpDp8B,YAAAA,MAAK,aAAc,IAAKrI,KAAK8f,IAAIb,QAAAA;;eAE9B;AACL3W,UAAAA,KAAI84B;AACJ0C,wBAAc,IAAID,aAAa/J,aAAa;;AAG9C,YAAI4K;AAEJ,YAAI3B,YAAY0B,mBAAmB;AACjC,gBAAME,eAAetU,UAAU0S,YAAY6B,eAAe;AAC1D,gBAAMzoB,UAAS0iB,WAAW2B,QAAQ1/B,EAAE;AACpC,gBAAMsb,SAAQyiB,WAAW0B,OAAOz/B,EAAE;AAElC,cAAIyH,OAAMu7B,aAAaa,aAAap8B;AACpC,cAAIG,QAAO,IAAIi8B,aAAaj8B;AAE5B,kBAAQq7B,cAAAA;YACR,KAAK;AACHx7B,cAAAA,QAAO4T,UAAS;AAChB;YACF,KAAK;AACH5T,cAAAA,QAAO4T;AACP;UAGF;AAEA,kBAAQynB,WAAAA;YACR,KAAK;AACHl7B,cAAAA,SAAQ0T,SAAQ;AAChB;YACF,KAAK;AACH1T,cAAAA,SAAQ0T;AACR;YACF,KAAK;AACH,kBAAItb,OAAMuI,OAAO,GAAG;AAClBX,gBAAAA,SAAQ0T;yBACCtb,KAAI,GAAG;AAChB4H,gBAAAA,SAAQ0T,SAAQ;;AAElB;UAGF;AAEAsoB,qBAAW;YACTh8B,MAAAA;YACAH,KAAAA;YACA6T,OAAOA,SAAQuoB,aAAavoB;YAC5BD,QAAQA,UAASwoB,aAAaxoB;YAE9BnZ,OAAO+/B,YAAY8B;UACrB;;AAGFjkC,cAAMkB,KAAK;UACTgS;UACA6lB;UACAmK;UACAl9B,SAAS;YACPqY;YACAjc,OAAAA;YACAohC;YACAE;YACAV,WAAWY;YACXT;YACAe,aAAa;cAACz8B;cAAGC;YAAE;YACnBo8B;UACF;QACF,CAAA;MACF;AAEA,aAAO9jC;IACT;IAEAojC,0BAA0B;AACxB,YAAM,EAACpa,UAAAA,WAAUlR,MAAAA,IAAS,KAAK9R;AAC/B,YAAMqY,WAAW,CAAC+B,UAAU,KAAK8Z,aAAa;AAE9C,UAAI7b,UAAU;AACZ,eAAO2K,cAAa,QAAQ,SAAS;;AAGvC,UAAI2O,QAAQ;AAEZ,UAAI7f,MAAM6f,UAAU,SAAS;AAC3BA,gBAAQ;MACV,WAAW7f,MAAM6f,UAAU,OAAO;AAChCA,gBAAQ;MACV,WAAW7f,MAAM6f,UAAU,SAAS;AAClCA,gBAAQ;;AAGV,aAAOA;IACT;IAEA0L,wBAAwBnC,IAAI;AAC1B,YAAM,EAAClY,UAAAA,WAAUlR,OAAO,EAAC+qB,YAAY5D,QAAQ/P,QAAAA,EAAQ,IAAI,KAAKlpB;AAC9D,YAAMi4B,aAAa,KAAKC,eAAc;AACtC,YAAM4E,iBAAiB5B,KAAKhS;AAC5B,YAAMkP,SAASH,WAAWG,OAAO5iB;AAEjC,UAAIwnB;AACJ,UAAIv7B;AAEJ,UAAIuhB,cAAa,QAAQ;AACvB,YAAIiW,QAAQ;AACVx3B,UAAAA,KAAI,KAAKG,QAAQsnB;AAEjB,cAAI2T,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZv7B,YAAAA,MAAM22B,SAAS;iBACV;AACL4E,wBAAY;AACZv7B,YAAAA,MAAK22B;;eAEF;AACL32B,UAAAA,KAAI,KAAKG,QAAQk7B;AAEjB,cAAID,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZv7B,YAAAA,MAAM22B,SAAS;iBACV;AACL4E,wBAAY;AACZv7B,YAAAA,KAAI,KAAKK;;;iBAGJkhB,cAAa,SAAS;AAC/B,YAAIiW,QAAQ;AACVx3B,UAAAA,KAAI,KAAKK,OAAOonB;AAEhB,cAAI2T,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZv7B,YAAAA,MAAM22B,SAAS;iBACV;AACL4E,wBAAY;AACZv7B,YAAAA,MAAK22B;;eAEF;AACL32B,UAAAA,KAAI,KAAKK,OAAOg7B;AAEhB,cAAID,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZv7B,YAAAA,MAAK22B,SAAS;iBACT;AACL4E,wBAAY;AACZv7B,YAAAA,KAAI,KAAKG;;;aAGR;AACLo7B,oBAAY;;AAGd,aAAO;QAACA;QAAWv7B,GAAAA;MAAC;IACtB;IAKA08B,oBAAoB;AAClB,UAAI,KAAKn+B,QAAQ8R,MAAMmnB,QAAQ;AAC7B;;AAGF,YAAMzgC,QAAQ,KAAKA;AACnB,YAAMwqB,YAAW,KAAKhjB,QAAQgjB;AAE9B,UAAIA,cAAa,UAAUA,cAAa,SAAS;AAC/C,eAAO;UAACrhB,KAAK;UAAGG,MAAM,KAAKA;UAAMD,QAAQrJ,MAAM+c;UAAQ3T,OAAO,KAAKA;QAAK;;AACxE,UAAIohB,cAAa,SAASA,cAAa,UAAU;AACjD,eAAO;UAACrhB,KAAK,KAAKA;UAAKG,MAAM;UAAGD,QAAQ,KAAKA;UAAQD,OAAOpJ,MAAMgd;QAAK;;IAE3E;IAKA4oB,iBAAiB;AACf,YAAM,EAAC72B,KAAKvH,SAAS,EAACud,gBAAAA,GAAkBzb,MAAAA,OAAMH,KAAAA,MAAK6T,OAAAA,QAAOD,QAAAA,QAAM,IAAI;AACpE,UAAIgI,iBAAiB;AACnBhW,YAAI82B,KAAI;AACR92B,YAAI+V,YAAYC;AAChBhW,YAAI+2B,SAASx8B,OAAMH,MAAK6T,QAAOD,OAAAA;AAC/BhO,YAAIg3B,QAAO;;IAEf;IAEAtnB,qBAAqBvW,OAAO;AAC1B,YAAMgX,OAAO,KAAK1X,QAAQ0X;AAC1B,UAAI,CAAC,KAAKsgB,WAAU,KAAM,CAACtgB,KAAK4I,SAAS;AACvC,eAAO;;AAET,YAAMxO,QAAQ,KAAKA;AACnB,YAAMpP,SAAQoP,MAAM4Q,UAAU1gB,CAAAA,OAAKA,GAAEtB,UAAUA,KAAAA;AAC/C,UAAIgC,UAAS,GAAG;AACd,cAAMvB,OAAOuW,KAAKqd,WAAW,KAAK5pB,WAAWzI,MAAAA,CAAAA;AAC7C,eAAOvB,KAAKwc;;AAEd,aAAO;IACT;IAKA6gB,SAAShxB,WAAW;AAClB,YAAMkK,OAAO,KAAK1X,QAAQ0X;AAC1B,YAAMnQ,MAAM,KAAKA;AACjB,YAAMvN,QAAQ,KAAKo6B,mBAAmB,KAAKA,iBAAiB,KAAK6G,sBAAsBztB,SAAS;AAChG,UAAItT,IAAGuI;AAEP,YAAMg8B,WAAW,CAACC,IAAIC,KAAIvhB,UAAU;AAClC,YAAI,CAACA,MAAM5H,SAAS,CAAC4H,MAAMhhB,OAAO;AAChC;;AAEFmL,YAAI82B,KAAI;AACR92B,YAAIoW,YAAYP,MAAM5H;AACtBjO,YAAIiW,cAAcJ,MAAMhhB;AACxBmL,YAAIq3B,YAAYxhB,MAAMkf,cAAc,CAAA,CAAE;AACtC/0B,YAAIs3B,iBAAiBzhB,MAAMof;AAE3Bj1B,YAAIu3B,UAAS;AACbv3B,YAAIw3B,OAAOL,GAAGj9B,GAAGi9B,GAAGh9B,CAAC;AACrB6F,YAAIy3B,OAAOL,IAAGl9B,GAAGk9B,IAAGj9B,CAAC;AACrB6F,YAAI03B,OAAM;AACV13B,YAAIg3B,QAAO;MACb;AAEA,UAAI7mB,KAAK4I,SAAS;AAChB,aAAKpmB,KAAI,GAAGuI,OAAOzI,MAAMC,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C,gBAAME,OAAOJ,MAAME,EAAE;AAErB,cAAIwd,KAAKwnB,iBAAiB;AACxBT,qBACE;cAACh9B,GAAGrH,KAAKyhC;cAAIn6B,GAAGtH,KAAK0hC;eACrB;cAACr6B,GAAGrH,KAAK2hC;cAAIr6B,GAAGtH,KAAK4hC;eACrB5hC,IAAAA;;AAIJ,cAAIsd,KAAKkb,WAAW;AAClB6L,qBACE;cAACh9B,GAAGrH,KAAKqhC;cAAK/5B,GAAGtH,KAAKshC;eACtB;cAACj6B,GAAGrH,KAAKuhC;cAAKj6B,GAAGtH,KAAKwhC;eACtB;cACEx/B,OAAOhC,KAAKsiC;cACZlnB,OAAOpb,KAAK09B;cACZwE,YAAYliC,KAAKuiC;cACjBH,kBAAkBpiC,KAAKwiC;YACzB,CAAA;;QAGN;;IAEJ;IAKAuC,aAAa;AACX,YAAM,EAAC3mC,OAAO+O,KAAKvH,SAAS,EAACkf,QAAQxH,KAAI,EAAC,IAAI;AAC9C,YAAMyjB,aAAajc,OAAO6V,WAAW,KAAK5pB,WAAU,CAAA;AACpD,YAAMiwB,YAAYlc,OAAOoB,UAAU6a,WAAW3lB,QAAQ;AACtD,UAAI,CAAC4lB,WAAW;AACd;;AAEF,YAAMgE,gBAAgB1nB,KAAKqd,WAAW,KAAK5pB,WAAW,CAAA,CAAA,EAAIwS;AAC1D,YAAM4d,cAAc,KAAK1G;AACzB,UAAIgH,IAAIE,KAAID,IAAIE;AAEhB,UAAI,KAAKroB,aAAY,GAAI;AACvBkoB,aAAKlB,YAAYniC,OAAO,KAAKsJ,MAAMs5B,SAAAA,IAAaA,YAAY;AAC5DW,QAAAA,MAAKpB,YAAYniC,OAAO,KAAKoJ,OAAOw9B,aAAAA,IAAiBA,gBAAgB;AACrEtD,aAAKE,MAAKT;aACL;AACLO,aAAKnB,YAAYniC,OAAO,KAAKmJ,KAAKy5B,SAAAA,IAAaA,YAAY;AAC3DY,QAAAA,MAAKrB,YAAYniC,OAAO,KAAKqJ,QAAQu9B,aAAAA,IAAiBA,gBAAgB;AACtEvD,aAAKE,MAAKR;;AAEZh0B,UAAI82B,KAAI;AACR92B,UAAIoW,YAAYwd,WAAW3lB;AAC3BjO,UAAIiW,cAAc2d,WAAW/+B;AAE7BmL,UAAIu3B,UAAS;AACbv3B,UAAIw3B,OAAOlD,IAAIC,EAAAA;AACfv0B,UAAIy3B,OAAOjD,KAAIC,GAAAA;AACfz0B,UAAI03B,OAAM;AAEV13B,UAAIg3B,QAAO;IACb;IAKAc,WAAW7xB,WAAW;AACpB,YAAMstB,cAAc,KAAK96B,QAAQ8R;AAEjC,UAAI,CAACgpB,YAAYxa,SAAS;AACxB;;AAGF,YAAM/Y,MAAM,KAAKA;AAEjB,YAAMgG,OAAO,KAAK4wB,kBAAiB;AACnC,UAAI5wB,MAAM;AACR+xB,iBAAS/3B,KAAKgG,IAAAA;;AAGhB,YAAMvT,QAAQ,KAAKu7B,cAAc/nB,SAAAA;AACjC,iBAAWpT,QAAQJ,OAAO;AACxB,cAAMulC,oBAAoBnlC,KAAK4F;AAC/B,cAAMg6B,WAAW5/B,KAAK24B;AACtB,cAAM7lB,QAAQ9S,KAAK8S;AACnB,cAAMxL,KAAItH,KAAK8iC;AACfsC,mBAAWj4B,KAAK2F,OAAO,GAAGxL,IAAGs4B,UAAUuF,iBAAAA;MACzC;AAEA,UAAIhyB,MAAM;AACRkyB,mBAAWl4B,GAAAA;;IAEf;IAKAm4B,YAAY;AACV,YAAM,EAACn4B,KAAKvH,SAAS,EAACgjB,UAAAA,WAAUwV,OAAOp3B,QAAO,EAAC,IAAI;AAEnD,UAAI,CAACo3B,MAAMlY,SAAS;AAClB;;AAGF,YAAMyS,OAAOC,OAAOwF,MAAMzF,IAAI;AAC9B,YAAM7J,UAAUO,UAAU+O,MAAMtP,OAAO;AACvC,YAAMyI,QAAQ6G,MAAM7G;AACpB,UAAIla,UAASsb,KAAKG,aAAa;AAE/B,UAAIlQ,cAAa,YAAYA,cAAa,YAAY/jB,SAAS+jB,SAAW,GAAA;AACxEvL,QAAAA,WAAUyR,QAAQrnB;AAClB,YAAIlC,QAAQ64B,MAAMnb,IAAI,GAAG;AACvB5F,UAAAA,WAAUsb,KAAKG,cAAcsF,MAAMnb,KAAKpjB,SAAS;;aAE9C;AACLwd,QAAAA,WAAUyR,QAAQvnB;;AAGpB,YAAM,EAAC6xB,QAAQC,QAAQzY,UAAU3C,SAAQ,IAAIkb,UAAU,MAAM9b,SAAQuL,WAAU2O,KAAAA;AAE/E6N,iBAAWj4B,KAAKixB,MAAMnb,MAAM,GAAG,GAAG0V,MAAM;QACtC32B,OAAOo8B,MAAMp8B;QACb4e;QACA3C;QACA2kB,WAAW3J,WAAW1B,OAAO3O,WAAU5hB,OAAAA;QACvC+7B,cAAc;QACde,aAAa;UAAC1K;UAAQC;QAAO;MAC/B,CAAA;IACF;IAEAt5B,KAAKqT,WAAW;AACd,UAAI,CAAC,KAAKwqB,WAAU,GAAI;AACtB;;AAGF,WAAKoG,eAAc;AACnB,WAAKI,SAAShxB,SAAAA;AACd,WAAK2xB,WAAU;AACf,WAAKO,UAAS;AACd,WAAKL,WAAW7xB,SAAAA;IAClB;IAMA4b,UAAU;AACR,YAAMjoB,OAAO,KAAKnB;AAClB,YAAM2/B,KAAKx+B,KAAK2Q,SAAS3Q,KAAK2Q,MAAMuX,KAAK;AACzC,YAAMuW,KAAKz2B,eAAehI,KAAKuW,QAAQvW,KAAKuW,KAAK2R,GAAG,EAAC;AACrD,YAAMwW,KAAK12B,eAAehI,KAAK+d,UAAU/d,KAAK+d,OAAOmK,GAAG,CAAA;AAExD,UAAI,CAAC,KAAK2O,WAAU,KAAM,KAAK79B,SAASy5B,MAAMrS,UAAUpnB,MAAM;AAE5D,eAAO;UAAC;YACNkvB,GAAGsW;YACHxlC,MAAM,CAACqT,cAAc;AACnB,mBAAKrT,KAAKqT,SAAAA;YACZ;UACF;QAAE;;AAGJ,aAAO;QAAC;UACN6b,GAAGuW;UACHzlC,MAAM,CAACqT,cAAc;AACnB,iBAAK4wB,eAAc;AACnB,iBAAKI,SAAShxB,SAAAA;AACd,iBAAKkyB,UAAS;UAChB;QACF;QAAG;UACDrW,GAAGwW;UACH1lC,MAAM,MAAM;AACV,iBAAKglC,WAAU;UACjB;QACF;QAAG;UACD9V,GAAGsW;UACHxlC,MAAM,CAACqT,cAAc;AACnB,iBAAK6xB,WAAW7xB,SAAAA;UAClB;QACF;MAAE;IACJ;IAOAtI,wBAAwBvM,MAAM;AAC5B,YAAMw8B,QAAQ,KAAK38B,MAAM0qB,6BAA4B;AACrD,YAAM4c,SAAS,KAAKn8B,OAAO;AAC3B,YAAM2e,SAAS,CAAA;AACf,UAAIpoB,IAAGuI;AAEP,WAAKvI,KAAI,GAAGuI,OAAO0yB,MAAMl7B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C,cAAMqJ,OAAO4xB,MAAMj7B,EAAE;AACrB,YAAIqJ,KAAKu8B,MAAO,MAAK,KAAK17B,OAAO,CAACzL,QAAQ4K,KAAK5K,SAASA,OAAO;AAC7D2pB,iBAAOpnB,KAAKqI,IAAAA;;MAEhB;AACA,aAAO+e;IACT;IAOA6X,wBAAwBz3B,QAAO;AAC7B,YAAMvB,OAAO,KAAKnB,QAAQ8R,MAAMijB,WAAW,KAAK5pB,WAAWzI,MAAAA,CAAAA;AAC3D,aAAOswB,OAAO7xB,KAAK4xB,IAAI;IACzB;IAKAgN,aAAa;AACX,YAAMC,WAAW,KAAK7F,wBAAwB,CAAA,EAAGjH;AACjD,cAAQ,KAAKvf,aAAY,IAAK,KAAK6B,QAAQ,KAAKD,UAAUyqB;IAC5D;EACF;ACtqDe,MAAMC,gBAAN,MAAMA;IACnBjoC,YAAYW,MAAMunC,OAAO7e,UAAU;AACjC,WAAK1oB,OAAOA;AACZ,WAAKunC,QAAQA;AACb,WAAK7e,WAAWA;AAChB,WAAKrnB,QAAQmF,uBAAOghC,OAAO,IAAI;IACjC;IAEAC,UAAUznC,MAAM;AACd,aAAOwG,OAAOoiB,UAAU8e,cAAc5mC,KAAK,KAAKd,KAAK4oB,WAAW5oB,KAAK4oB,SAAS;IAChF;IAMA+e,SAASlmC,MAAM;AACb,YAAMmmC,QAAQphC,OAAOqhC,eAAepmC,IAAAA;AACpC,UAAIqmC;AAEJ,UAAIC,kBAAkBH,KAAQ,GAAA;AAE5BE,sBAAc,KAAKH,SAASC,KAAAA;;AAG9B,YAAMvmC,QAAQ,KAAKA;AACnB,YAAMoK,MAAKhK,KAAKgK;AAChB,YAAM87B,QAAQ,KAAKA,QAAQ,MAAM97B;AAEjC,UAAI,CAACA,KAAI;AACP,cAAM,IAAI+c,MAAM,6BAA6B/mB,IAAM;;AAGrD,UAAIgK,OAAMpK,OAAO;AAEf,eAAOkmC;;AAGTlmC,YAAMoK,GAAAA,IAAMhK;AACZumC,uBAAiBvmC,MAAM8lC,OAAOO,WAAAA;AAC9B,UAAI,KAAKpf,UAAU;AACjBhiB,iBAASgiB,SAASjnB,KAAKgK,IAAIhK,KAAKmd,SAAS;;AAG3C,aAAO2oB;IACT;IAMAvlC,IAAIyJ,KAAI;AACN,aAAO,KAAKpK,MAAMoK,GAAG;IACvB;IAKAw8B,WAAWxmC,MAAM;AACf,YAAMJ,QAAQ,KAAKA;AACnB,YAAMoK,MAAKhK,KAAKgK;AAChB,YAAM87B,QAAQ,KAAKA;AAEnB,UAAI97B,OAAMpK,OAAO;AACf,eAAOA,MAAMoK,GAAG;;AAGlB,UAAI87B,SAAS97B,OAAM/E,SAAS6gC,KAAAA,GAAQ;AAClC,eAAO7gC,SAAS6gC,KAAM,EAAC97B,GAAG;AAC1B,YAAI,KAAKid,UAAU;AACjB,iBAAO9J,UAAUnT,GAAG;;;IAG1B;EACF;AAEA,WAASu8B,iBAAiBvmC,MAAM8lC,OAAOO,aAAa;AAElD,UAAMI,eAAeC,MAAM3hC,uBAAOghC,OAAO,IAAI,GAAG;MAC9CM,cAAcphC,SAAS1E,IAAI8lC,WAAAA,IAAe,CAAA;MAC1CphC,SAAS1E,IAAIulC,KAAAA;MACb9lC,KAAKiF;IACN,CAAA;AAEDA,aAASvE,IAAIolC,OAAOW,YAAAA;AAEpB,QAAIzmC,KAAKu1B,eAAe;AACtBoR,oBAAcb,OAAO9lC,KAAKu1B,aAAa;;AAGzC,QAAIv1B,KAAKsiB,aAAa;AACpBrd,eAAS2hC,SAASd,OAAO9lC,KAAKsiB,WAAW;;EAE7C;AAEA,WAASqkB,cAAcb,OAAOe,QAAQ;AACpC9hC,WAAOC,KAAK6hC,MAAAA,EAAQjoC,QAAQkoC,CAAAA,aAAY;AACtC,YAAMC,gBAAgBD,SAASE,MAAM,GAAA;AACrC,YAAMC,aAAaF,cAAc3mC,IAAG;AACpC,YAAM8mC,cAAc;QAACpB;MAAM,EAAC9uB,OAAO+vB,aAAeI,EAAAA,KAAK,GAAA;AACvD,YAAMC,QAAQP,OAAOC,QAAS,EAACE,MAAM,GAAA;AACrC,YAAMK,aAAaD,MAAMhnC,IAAG;AAC5B,YAAMknC,cAAcF,MAAMD,KAAK,GAAA;AAC/BliC,eAASsiC,MAAML,aAAaD,YAAYK,aAAaD,UAAAA;IACvD,CAAA;EACF;AAEA,WAASf,kBAAkBH,OAAO;AAChC,WAAO,QAAQA,SAAS,cAAcA;EACxC;AC1GO,MAAMqB,WAAN,MAAMA;IACX5pC,cAAc;AACZ,WAAK6pC,cAAc,IAAI5B,cAAc54B,mBAAmB,YAAY,IAAI;AACxE,WAAKiG,WAAW,IAAI2yB,cAAc3Q,UAAS,UAAA;AAC3C,WAAKvS,UAAU,IAAIkjB,cAAc9gC,QAAQ,SAAA;AACzC,WAAK6G,SAAS,IAAIi6B,cAAcrM,OAAO,QAAA;AAGvC,WAAKkO,mBAAmB;QAAC,KAAKD;QAAa,KAAK77B;QAAQ,KAAKsH;MAAS;IACxE;IAKAnS,OAAOoV,MAAM;AACX,WAAKwxB,MAAM,YAAYxxB,IAAAA;IACzB;IAEA3U,UAAU2U,MAAM;AACd,WAAKwxB,MAAM,cAAcxxB,IAAAA;IAC3B;IAKAyxB,kBAAkBzxB,MAAM;AACtB,WAAKwxB,MAAM,YAAYxxB,MAAM,KAAKsxB,WAAW;IAC/C;IAKAp5B,eAAe8H,MAAM;AACnB,WAAKwxB,MAAM,YAAYxxB,MAAM,KAAKjD,QAAQ;IAC5C;IAKA20B,cAAc1xB,MAAM;AAClB,WAAKwxB,MAAM,YAAYxxB,MAAM,KAAKwM,OAAO;IAC3C;IAKAmlB,aAAa3xB,MAAM;AACjB,WAAKwxB,MAAM,YAAYxxB,MAAM,KAAKvK,MAAM;IAC1C;IAMAm8B,cAAc/9B,KAAI;AAChB,aAAO,KAAKg+B,KAAKh+B,KAAI,KAAKy9B,aAAa,YAAA;IACzC;IAMA7gB,WAAW5c,KAAI;AACb,aAAO,KAAKg+B,KAAKh+B,KAAI,KAAKkJ,UAAU,SAAA;IACtC;IAMA+0B,UAAUj+B,KAAI;AACZ,aAAO,KAAKg+B,KAAKh+B,KAAI,KAAK2Y,SAAS,QAAA;IACrC;IAMAulB,SAASl+B,KAAI;AACX,aAAO,KAAKg+B,KAAKh+B,KAAI,KAAK4B,QAAQ,OAAA;IACpC;IAKAu8B,qBAAqBhyB,MAAM;AACzB,WAAKwxB,MAAM,cAAcxxB,MAAM,KAAKsxB,WAAW;IACjD;IAKAW,kBAAkBjyB,MAAM;AACtB,WAAKwxB,MAAM,cAAcxxB,MAAM,KAAKjD,QAAQ;IAC9C;IAKAm1B,iBAAiBlyB,MAAM;AACrB,WAAKwxB,MAAM,cAAcxxB,MAAM,KAAKwM,OAAO;IAC7C;IAKA2lB,gBAAgBnyB,MAAM;AACpB,WAAKwxB,MAAM,cAAcxxB,MAAM,KAAKvK,MAAM;IAC5C;IAKA+7B,MAAMpjC,QAAQ4R,MAAMoyB,eAAe;AACjC;QAAIpyB,GAAAA;QAAMvX,QAAQ4pC,CAAAA,QAAO;AACvB,cAAMC,MAAMF,iBAAiB,KAAKG,oBAAoBF,GAAAA;AACtD,YAAID,iBAAiBE,IAAIzC,UAAUwC,GAASC,KAAAA,QAAQ,KAAK9lB,WAAW6lB,IAAIx+B,IAAK;AAC3E,eAAK2+B,MAAMpkC,QAAQkkC,KAAKD,GAAAA;eACnB;AAKLhZ,eAAKgZ,KAAKxoC,CAAAA,SAAQ;AAOhB,kBAAM4oC,UAAUL,iBAAiB,KAAKG,oBAAoB1oC,IAAAA;AAC1D,iBAAK2oC,MAAMpkC,QAAQqkC,SAAS5oC,IAAAA;UAC9B,CAAA;;MAEJ,CAAA;IACF;IAKA2oC,MAAMpkC,QAAQoiB,WAAUkiB,WAAW;AACjC,YAAMC,cAAcC,YAAYxkC,MAAAA;AAChClF,eAAKwpC,UAAU,WAAWC,WAAAA,GAAc,CAAA,GAAID,SAAAA;AAC5CliB,MAAAA,UAASpiB,MAAAA,EAAQskC,SAAAA;AACjBxpC,eAAKwpC,UAAU,UAAUC,WAAAA,GAAc,CAAA,GAAID,SAAAA;IAC7C;IAKAH,oBAAoBnqC,MAAM;AACxB,eAASuB,KAAI,GAAGA,KAAI,KAAK4nC,iBAAiB7nC,QAAQC,MAAK;AACrD,cAAM2oC,MAAM,KAAKf,iBAAiB5nC,EAAE;AACpC,YAAI2oC,IAAIzC,UAAUznC,IAAO,GAAA;AACvB,iBAAOkqC;;MAEX;AAEA,aAAO,KAAK9lB;IACd;IAKAqlB,KAAKh+B,KAAIu+B,eAAehqC,MAAM;AAC5B,YAAMyB,OAAOuoC,cAAchoC,IAAIyJ,GAAAA;AAC/B,UAAIhK,SAAS9B,QAAW;AACtB,cAAM,IAAI6oB,MAAM,MAAM/c,MAAK,2BAA2BzL,OAAO,GAAK;;AAEpE,aAAOyB;IACT;EAEF;AAGA,MAAA,WAA+B,oBAAIwnC,SAAW;ACtK/B,MAAMwB,gBAAN,MAAMA;IACnBprC,cAAc;AACZ,WAAKqrC,QAAQ,CAAA;IACf;IAYAC,OAAO9qC,OAAO+qC,MAAMhzB,MAAMtK,SAAQ;AAChC,UAAIs9B,SAAS,cAAc;AACzB,aAAKF,QAAQ,KAAKG,mBAAmBhrC,OAAO,IAAI;AAChD,aAAKD,QAAQ,KAAK8qC,OAAO7qC,OAAO,SAAA;;AAGlC,YAAMkkB,eAAczW,UAAS,KAAKw9B,aAAajrC,KAAAA,EAAOyN,OAAOA,OAAU,IAAA,KAAKw9B,aAAajrC,KAAM;AAC/F,YAAM8pB,SAAS,KAAK/pB,QAAQmkB,cAAalkB,OAAO+qC,MAAMhzB,IAAAA;AAEtD,UAAIgzB,SAAS,gBAAgB;AAC3B,aAAKhrC,QAAQmkB,cAAalkB,OAAO,MAAA;AACjC,aAAKD,QAAQ,KAAK8qC,OAAO7qC,OAAO,WAAA;;AAElC,aAAO8pB;IACT;IAKA/pB,QAAQmkB,cAAalkB,OAAO+qC,MAAMhzB,MAAM;AACtCA,aAAOA,QAAQ,CAAA;AACf,iBAAWmzB,cAAchnB,cAAa;AACpC,cAAMinB,SAASD,WAAWC;AAC1B,cAAMhlC,SAASglC,OAAOJ,IAAK;AAC3B,cAAMhd,UAAS;UAAC/tB;UAAO+X;UAAMmzB,WAAW1jC;QAAQ;AAChD,YAAI4jC,SAAajlC,QAAQ4nB,SAAQod,MAAAA,MAAY,SAASpzB,KAAKszB,YAAY;AACrE,iBAAO;;MAEX;AAEA,aAAO;IACT;IAEAC,aAAa;AAMX,UAAI,CAACxxB,cAAc,KAAKrB,MAAM,GAAG;AAC/B,aAAK8yB,YAAY,KAAK9yB;AACtB,aAAKA,SAAS3Y;;IAElB;IAMAmrC,aAAajrC,OAAO;AAClB,UAAI,KAAKyY,QAAQ;AACf,eAAO,KAAKA;;AAGd,YAAMyL,eAAc,KAAKzL,SAAS,KAAKuyB,mBAAmBhrC,KAAAA;AAE1D,WAAKwrC,oBAAoBxrC,KAAAA;AAEzB,aAAOkkB;IACT;IAEA8mB,mBAAmBhrC,OAAOuI,KAAK;AAC7B,YAAMlC,UAASrG,SAASA,MAAMqG;AAC9B,YAAMmB,WAAUmJ,eAAetK,QAAOmB,WAAWnB,QAAOmB,QAAQ+c,SAAS,CAAA,CAAC;AAC1E,YAAMA,WAAUknB,WAAWplC,OAAAA;AAE3B,aAAOmB,aAAY,SAAS,CAACe,MAAM,CAAA,IAAKmjC,kBAAkB1rC,OAAOukB,UAAS/c,UAASe,GAAI;IACzF;IAMAijC,oBAAoBxrC,OAAO;AACzB,YAAM2rC,sBAAsB,KAAKJ,aAAa,CAAA;AAC9C,YAAMrnB,eAAc,KAAKzL;AACzB,YAAM0Q,OAAO,CAACpQ,IAAGrP,OAAMqP,GAAEtL,OAAOxE,CAAAA,OAAK,CAACS,GAAEkiC,KAAK1iC,CAAAA,OAAKD,GAAEkiC,OAAOv/B,OAAO1C,GAAEiiC,OAAOv/B,EAAE,CAAA;AAC7E,WAAK7L,QAAQopB,KAAKwiB,qBAAqBznB,YAAAA,GAAclkB,OAAO,MAAA;AAC5D,WAAKD,QAAQopB,KAAKjF,cAAaynB,mBAAAA,GAAsB3rC,OAAO,OAAA;IAC9D;EACF;AAKA,WAASyrC,WAAWplC,SAAQ;AAC1B,UAAMwlC,WAAW,CAAA;AACjB,UAAMtnB,WAAU,CAAA;AAChB,UAAM3d,OAAOD,OAAOC,KAAK2hB,SAAShE,QAAQ/iB,KAAK;AAC/C,aAASE,KAAI,GAAGA,KAAIkF,KAAKnF,QAAQC,MAAK;AACpC6iB,MAAAA,SAAQ7hB,KAAK6lB,SAASshB,UAAUjjC,KAAKlF,EAAE,CAAA,CAAA;IACzC;AAEA,UAAMoqC,QAAQzlC,QAAOke,WAAW,CAAA;AAChC,aAAS7iB,KAAI,GAAGA,KAAIoqC,MAAMrqC,QAAQC,MAAK;AACrC,YAAMypC,SAASW,MAAMpqC,EAAE;AAEvB,UAAI6iB,SAAQ7G,QAAQytB,MAAAA,MAAY,IAAI;AAClC5mB,QAAAA,SAAQ7hB,KAAKyoC,MAAAA;AACbU,iBAASV,OAAOv/B,EAAE,IAAI;;IAE1B;AAEA,WAAO;MAAC2Y,SAAAA;MAASsnB;IAAQ;EAC3B;AAEA,WAASE,QAAQvkC,UAASe,KAAK;AAC7B,QAAI,CAACA,OAAOf,aAAY,OAAO;AAC7B,aAAO;;AAET,QAAIA,aAAY,MAAM;AACpB,aAAO,CAAA;;AAET,WAAOA;EACT;AAEA,WAASkkC,kBAAkB1rC,OAAO,EAACukB,SAAAA,UAASsnB,SAAQ,GAAGrkC,UAASe,KAAK;AACnE,UAAMuhB,SAAS,CAAA;AACf,UAAMzU,UAAUrV,MAAM2S,WAAU;AAEhC,eAAWw4B,UAAU5mB,UAAS;AAC5B,YAAM3Y,MAAKu/B,OAAOv/B;AAClB,YAAMjD,OAAOojC,QAAQvkC,SAAQoE,GAAAA,GAAKrD,GAAAA;AAClC,UAAII,SAAS,MAAM;AACjB;;AAEFmhB,aAAOpnB,KAAK;QACVyoC;QACA3jC,SAASwkC,WAAWhsC,MAAMqG,QAAQ;UAAC8kC;UAAQW,OAAOD,SAASjgC,GAAG;QAAA,GAAGjD,MAAM0M,OAAAA;MACzE,CAAA;IACF;AAEA,WAAOyU;EACT;AAEA,WAASkiB,WAAW3lC,SAAQ,EAAC8kC,QAAQW,MAAK,GAAGnjC,MAAM0M,SAAS;AAC1D,UAAMzO,OAAOP,QAAO4lC,gBAAgBd,MAAAA;AACpC,UAAM34B,SAASnM,QAAOoM,gBAAgB9J,MAAM/B,IAAAA;AAC5C,QAAIklC,SAASX,OAAOtkC,UAAU;AAE5B2L,aAAO9P,KAAKyoC,OAAOtkC,QAAQ;;AAE7B,WAAOR,QAAOqM,eAAeF,QAAQ6C,SAAS;MAAC;OAAK;MAElD62B,YAAY;MACZC,WAAW;MACXC,SAAS;IACX,CAAA;EACF;AClLO,WAASC,aAAalsC,MAAMqH,UAAS;AAC1C,UAAM8kC,kBAAkBzlC,SAAS0K,SAASpR,IAAAA,KAAS,CAAA;AACnD,UAAMosC,kBAAkB/kC,SAAQ+J,YAAY,CAAA,GAAIpR,IAAK,KAAI,CAAA;AACzD,WAAOosC,eAAev7B,aAAaxJ,SAAQwJ,aAAas7B,gBAAgBt7B,aAAa;EACvF;AAEA,WAASw7B,0BAA0B5gC,KAAIoF,WAAW;AAChD,QAAI7F,OAAOS;AACX,QAAIA,QAAO,WAAW;AACpBT,aAAO6F;eACEpF,QAAO,WAAW;AAC3BT,aAAO6F,cAAc,MAAM,MAAM;;AAEnC,WAAO7F;EACT;AAEA,WAASshC,0BAA0BthC,MAAM6F,WAAW;AAClD,WAAO7F,SAAS6F,YAAY,YAAY;EAC1C;AAEA,WAAS07B,cAAc9gC,KAAI;AACzB,QAAIA,QAAO,OAAOA,QAAO,OAAOA,QAAO,KAAK;AAC1C,aAAOA;;EAEX;AAEA,WAAS+gC,iBAAiBniB,WAAU;AAClC,QAAIA,cAAa,SAASA,cAAa,UAAU;AAC/C,aAAO;;AAET,QAAIA,cAAa,UAAUA,cAAa,SAAS;AAC/C,aAAO;;EAEX;AAEO,WAASoiB,cAAchhC,QAAOihC,cAAc;AACjD,QAAIH,cAAc9gC,GAAK,GAAA;AACrB,aAAOA;;AAET,eAAWjD,QAAQkkC,cAAc;AAC/B,YAAM1hC,OAAOxC,KAAKwC,QACbwhC,iBAAiBhkC,KAAK6hB,QAAQ,KAC9B5e,IAAGnK,SAAS,KAAKirC,cAAc9gC,IAAG,CAAA,EAAGkhC,YAAW,CAAA;AACrD,UAAI3hC,MAAM;AACR,eAAOA;;IAEX;AACA,UAAM,IAAIwd,MAAM,6BAA6B/c,wDAAuD;EACtG;AAEA,WAASmhC,mBAAmBnhC,KAAIT,MAAM2C,SAAS;AAC7C,QAAIA,QAAQ3C,OAAO,QAAA,MAAcS,KAAI;AACnC,aAAO;QAACT;MAAI;;EAEhB;AAEA,WAAS6hC,yBAAyBphC,KAAIvF,SAAQ;AAC5C,QAAIA,QAAOyE,QAAQzE,QAAOyE,KAAKyG,UAAU;AACvC,YAAM07B,UAAU5mC,QAAOyE,KAAKyG,SAAS9D,OAAO,CAACy/B,OAAMA,GAAEx8B,YAAY9E,OAAMshC,GAAEr8B,YAAYjF,GAAAA;AACrF,UAAIqhC,QAAQxrC,QAAQ;AAClB,eAAOsrC,mBAAmBnhC,KAAI,KAAKqhC,QAAQ,CAAA,CAAE,KAAKF,mBAAmBnhC,KAAI,KAAKqhC,QAAQ,CAAE,CAAA;;;AAG5F,WAAO,CAAA;EACT;AAEA,WAASE,iBAAiB9mC,SAAQmB,UAAS;AACzC,UAAM4lC,gBAAgBruB,UAAU1Y,QAAOlG,IAAI,KAAK;MAACqN,QAAQ,CAAA;IAAE;AAC3D,UAAM6/B,eAAe7lC,SAAQgG,UAAU,CAAA;AACvC,UAAM8/B,iBAAiBjB,aAAahmC,QAAOlG,MAAMqH,QAAAA;AACjD,UAAMgG,UAAS7G,uBAAOghC,OAAO,IAAI;AAGjChhC,WAAOC,KAAKymC,YAAAA,EAAc7sC,QAAQoL,CAAAA,QAAM;AACtC,YAAM2hC,YAAYF,aAAazhC,GAAG;AAClC,UAAI,CAACnF,SAAS8mC,SAAY,GAAA;AACxB,eAAOn9B,QAAQo9B,MAAM,0CAA0C5hC,KAAI;;AAErE,UAAI2hC,UAAUE,QAAQ;AACpB,eAAOr9B,QAAQC,KAAK,kDAAkDzE,KAAI;;AAE5E,YAAMT,OAAOyhC,cAAchhC,KAAI2hC,WAAWP,yBAAyBphC,KAAIvF,OAASQ,GAAAA,SAAS2G,OAAO+/B,UAAUptC,IAAI,CAAC;AAC/G,YAAMutC,YAAYjB,0BAA0BthC,MAAMmiC,cAAAA;AAClD,YAAMK,sBAAsBP,cAAc5/B,UAAU,CAAA;AACpDA,MAAAA,QAAO5B,GAAAA,IAAMgiC,QAAQjnC,uBAAOghC,OAAO,IAAI,GAAG;QAAC;UAACx8B;QAAI;QAAGoiC;QAAWI,oBAAoBxiC,IAAK;QAAEwiC,oBAAoBD,SAAU;MAAC,CAAA;IAC1H,CAAA;AAGArnC,IAAAA,QAAOyE,KAAKyG,SAAS/Q,QAAQsN,CAAAA,YAAW;AACtC,YAAM3N,OAAO2N,QAAQ3N,QAAQkG,QAAOlG;AACpC,YAAM6Q,YAAYlD,QAAQkD,aAAaq7B,aAAalsC,MAAMqH,QAAAA;AAC1D,YAAM8kC,kBAAkBvtB,UAAU5e,IAAAA,KAAS,CAAA;AAC3C,YAAMwtC,sBAAsBrB,gBAAgB9+B,UAAU,CAAA;AACtD7G,aAAOC,KAAK+mC,mBAAAA,EAAqBntC,QAAQqtC,CAAAA,cAAa;AACpD,cAAM1iC,OAAOqhC,0BAA0BqB,WAAW78B,SAAAA;AAClD,cAAMpF,MAAKkC,QAAQ3C,OAAO,QAAA,KAAaA;AACvCqC,QAAAA,QAAO5B,GAAG,IAAG4B,QAAO5B,GAAAA,KAAOjF,uBAAOghC,OAAO,IAAI;AAC7CiG,gBAAQpgC,QAAO5B,GAAAA,GAAK;UAAC;YAACT;UAAI;UAAGkiC,aAAazhC,GAAG;UAAE+hC,oBAAoBE,SAAU;QAAC,CAAA;MAChF,CAAA;IACF,CAAA;AAGAlnC,WAAOC,KAAK4G,OAAAA,EAAQhN,QAAQyG,CAAAA,SAAO;AACjC,YAAMwB,SAAQ+E,QAAOvG,IAAI;AACzB2mC,cAAQnlC,QAAO;QAAC5B,SAAS2G,OAAO/E,OAAMtI,IAAI;QAAG0G,SAAS4B;MAAM,CAAA;IAC9D,CAAA;AAEA,WAAO+E;EACT;AAEA,WAASsgC,YAAYznC,SAAQ;AAC3B,UAAMmB,WAAUnB,QAAOmB,YAAYnB,QAAOmB,UAAU,CAAA;AAEpDA,IAAAA,SAAQ+c,UAAU5T,eAAenJ,SAAQ+c,SAAS,CAAA,CAAC;AACnD/c,IAAAA,SAAQgG,SAAS2/B,iBAAiB9mC,SAAQmB,QAAAA;EAC5C;AAEA,WAASumC,SAASjjC,OAAM;AACtBA,IAAAA,QAAOA,SAAQ,CAAA;AACfA,IAAAA,MAAKyG,WAAWzG,MAAKyG,YAAY,CAAA;AACjCzG,IAAAA,MAAKwI,SAASxI,MAAKwI,UAAU,CAAA;AAC7B,WAAOxI;EACT;AAEA,WAASkjC,WAAW3nC,SAAQ;AAC1BA,IAAAA,UAASA,WAAU,CAAA;AACnBA,IAAAA,QAAOyE,OAAOijC,SAAS1nC,QAAOyE,IAAI;AAElCgjC,gBAAYznC,OAAAA;AAEZ,WAAOA;EACT;AAEA,MAAM4nC,WAAW,oBAAItuC,IAAAA;AACrB,MAAMuuC,aAAa,oBAAIC,IAAAA;AAEvB,WAASC,WAAW34B,UAAU44B,UAAU;AACtC,QAAIznC,OAAOqnC,SAAS9rC,IAAIsT,QAAAA;AACxB,QAAI,CAAC7O,MAAM;AACTA,aAAOynC,SAAAA;AACPJ,eAAS3rC,IAAImT,UAAU7O,IAAAA;AACvBsnC,iBAAWvrC,IAAIiE,IAAAA;;AAEjB,WAAOA;EACT;AAEA,MAAM0nC,aAAa,CAAChsC,MAAK+Z,KAAKpV,SAAQ;AACpC,UAAM0B,OAAOgL,iBAAiB0I,KAAKpV,IAAAA;AACnC,QAAI0B,SAAS7I,QAAW;AACtBwC,MAAAA,KAAIK,IAAIgG,IAAAA;;EAEZ;AAEe,MAAM4lC,SAAN,MAAMA;IACnB/uC,YAAY6G,SAAQ;AAClB,WAAKmoC,UAAUR,WAAW3nC,OAAAA;AAC1B,WAAKooC,cAAc,oBAAI9uC,IAAAA;AACvB,WAAK+uC,iBAAiB,oBAAI/uC,IAAAA;IAC5B;IAEA,IAAIgvC,WAAW;AACb,aAAO,KAAKH,QAAQG;IACtB;IAEA,IAAIxuC,OAAO;AACT,aAAO,KAAKquC,QAAQruC;IACtB;IAEA,IAAIA,KAAKA,MAAM;AACb,WAAKquC,QAAQruC,OAAOA;IACtB;IAEA,IAAI2K,OAAO;AACT,aAAO,KAAK0jC,QAAQ1jC;IACtB;IAEA,IAAIA,KAAKA,OAAM;AACb,WAAK0jC,QAAQ1jC,OAAOijC,SAASjjC,KAAAA;IAC/B;IAEA,IAAItD,UAAU;AACZ,aAAO,KAAKgnC,QAAQhnC;IACtB;IAEA,IAAIA,QAAQA,UAAS;AACnB,WAAKgnC,QAAQhnC,UAAUA;IACzB;IAEA,IAAI+c,UAAU;AACZ,aAAO,KAAKiqB,QAAQjqB;IACtB;IAEA7e,SAAS;AACP,YAAMW,UAAS,KAAKmoC;AACpB,WAAKI,WAAU;AACfd,kBAAYznC,OAAAA;IACd;IAEAuoC,aAAa;AACX,WAAKH,YAAYI,MAAK;AACtB,WAAKH,eAAeG,MAAK;IAC3B;IAQAt8B,iBAAiBu8B,aAAa;AAC5B,aAAOV,WAAWU,aAChB,MAAM;QAAC;UACL,YAAYA;UACZ;QACD;MAAC,CAAA;IACN;IASA34B,0BAA0B24B,aAAa54B,YAAY;AACjD,aAAOk4B,WAAW,GAAGU,0BAA0B54B,cAC7C,MAAM;QACJ;UACE,YAAY44B,2BAA2B54B;UACvC,eAAeA;QAChB;QAED;UACE,YAAY44B;UACZ;QACD;MACF,CAAA;IACL;IAUAl5B,wBAAwBk5B,aAAav5B,cAAa;AAChD,aAAO64B,WAAW,GAAGU,eAAev5B,gBAClC,MAAM;QAAC;UACL,YAAYu5B,wBAAwBv5B;UACpC,YAAYu5B;UACZ,YAAYv5B;UACZ;QACD;MAAC,CAAA;IACN;IAOA02B,gBAAgBd,QAAQ;AACtB,YAAMv/B,MAAKu/B,OAAOv/B;AAClB,YAAMzL,OAAO,KAAKA;AAClB,aAAOiuC,WAAW,GAAGjuC,eAAeyL,OAClC,MAAM;QAAC;UACL,WAAWA;aACRu/B,OAAO4D,0BAA0B,CAAA;QACrC;MAAC,CAAA;IACN;IAKAC,cAAcC,WAAWC,YAAY;AACnC,YAAMT,cAAc,KAAKA;AACzB,UAAIj5B,SAAQi5B,YAAYtsC,IAAI8sC,SAAAA;AAC5B,UAAI,CAACz5B,UAAS05B,YAAY;AACxB15B,QAAAA,SAAQ,oBAAI7V,IAAAA;AACZ8uC,oBAAYnsC,IAAI2sC,WAAWz5B,MAAAA;;AAE7B,aAAOA;IACT;IAQA/C,gBAAgBw8B,WAAWE,UAAUD,YAAY;AAC/C,YAAM,EAAC1nC,SAAAA,UAASrH,KAAI,IAAI;AACxB,YAAMqV,SAAQ,KAAKw5B,cAAcC,WAAWC,UAAAA;AAC5C,YAAM3gC,SAASiH,OAAMrT,IAAIgtC,QAAAA;AACzB,UAAI5gC,QAAQ;AACV,eAAOA;;AAGT,YAAMiE,SAAS,oBAAI27B,IAAAA;AAEnBgB,eAAS3uC,QAAQoG,CAAAA,SAAQ;AACvB,YAAIqoC,WAAW;AACbz8B,iBAAO7P,IAAIssC,SAAAA;AACXroC,eAAKpG,QAAQyG,CAAAA,SAAOqnC,WAAW97B,QAAQy8B,WAAWhoC,IAAAA,CAAAA;;AAEpDL,aAAKpG,QAAQyG,CAAAA,SAAOqnC,WAAW97B,QAAQhL,UAASP,IAAAA,CAAAA;AAChDL,aAAKpG,QAAQyG,CAAAA,SAAOqnC,WAAW97B,QAAQuM,UAAU5e,IAAAA,KAAS,CAAA,GAAI8G,IAAAA,CAAAA;AAC9DL,aAAKpG,QAAQyG,CAAAA,SAAOqnC,WAAW97B,QAAQ3L,UAAUI,IAAAA,CAAAA;AACjDL,aAAKpG,QAAQyG,CAAAA,SAAOqnC,WAAW97B,QAAQ0R,aAAajd,IAAAA,CAAAA;MACtD,CAAA;AAEA,YAAM6lB,SAAQxhB,MAAM7H,KAAK+O,MAAAA;AACzB,UAAIsa,OAAMrrB,WAAW,GAAG;AACtBqrB,QAAAA,OAAMpqB,KAAKiE,uBAAOghC,OAAO,IAAI,CAAA;;AAE/B,UAAIuG,WAAWtrC,IAAIusC,QAAW,GAAA;AAC5B35B,QAAAA,OAAMlT,IAAI6sC,UAAUriB,MAAAA;;AAEtB,aAAOA;IACT;IAMAsiB,oBAAoB;AAClB,YAAM,EAAC5nC,SAAAA,UAASrH,KAAI,IAAI;AAExB,aAAO;QACLqH;QACAuX,UAAU5e,IAAK,KAAI,CAAA;QACnB0G,SAAS0K,SAASpR,IAAK,KAAI,CAAA;QAC3B;UAACA;QAAI;QACL0G;QACAqd;MACD;IACH;IASAnO,oBAAoBvD,QAAQsD,QAAOT,SAASQ,WAAW;MAAC;OAAK;AAC3D,YAAMiU,SAAS;QAACliB,SAAS;MAAI;AAC7B,YAAM,EAACynC,UAAUC,YAAW,IAAIC,YAAY,KAAKb,gBAAgBl8B,QAAQqD,QAAAA;AACzE,UAAIrO,WAAU6nC;AACd,UAAIG,YAAYH,UAAUv5B,MAAQ,GAAA;AAChCgU,eAAOliB,UAAU;AACjByN,kBAAUo6B,WAAWp6B,OAAWA,IAAAA,QAAAA,IAAYA;AAE5C,cAAMq6B,cAAc,KAAKh9B,eAAeF,QAAQ6C,SAASi6B,WAAAA;AACzD9nC,QAAAA,WAAUmoC,eAAeN,UAAUh6B,SAASq6B,WAAAA;;AAG9C,iBAAWnrC,QAAQuR,QAAO;AACxBgU,eAAOvlB,IAAAA,IAAQiD,SAAQjD,IAAK;MAC9B;AACA,aAAOulB;IACT;IAQApX,eAAeF,QAAQ6C,SAASQ,WAAW;MAAC;IAAG,GAAE+5B,oBAAoB;AACnE,YAAM,EAACP,SAAAA,IAAYE,YAAY,KAAKb,gBAAgBl8B,QAAQqD,QAAAA;AAC5D,aAAOpP,SAAS4O,OACZs6B,IAAAA,eAAeN,UAAUh6B,SAASvV,QAAW8vC,kBAAAA,IAC7CP;IACN;EACF;AAEA,WAASE,YAAYM,eAAer9B,QAAQqD,UAAU;AACpD,QAAIL,SAAQq6B,cAAc1tC,IAAIqQ,MAAAA;AAC9B,QAAI,CAACgD,QAAO;AACVA,MAAAA,SAAQ,oBAAI7V,IAAAA;AACZkwC,oBAAcvtC,IAAIkQ,QAAQgD,MAAAA;;AAE5B,UAAMC,WAAWI,SAASkzB,KAAI;AAC9B,QAAIx6B,SAASiH,OAAMrT,IAAIsT,QAAAA;AACvB,QAAI,CAAClH,QAAQ;AACX,YAAM8gC,WAAWS,gBAAgBt9B,QAAQqD,QAAAA;AACzCtH,eAAS;QACP8gC;QACAC,aAAaz5B,SAASpI,OAAOsiC,CAAAA,OAAK,CAACA,GAAEjD,YAAW,EAAGnf,SAAS,OAAA,CAAA;MAC9D;AACAnY,MAAAA,OAAMlT,IAAImT,UAAUlH,MAAAA;;AAEtB,WAAOA;EACT;AAEA,MAAMyhC,cAAc9nC,CAAAA,UAASzB,SAASyB,KAAAA,KACjCvB,OAAOK,oBAAoBkB,KAAO0jC,EAAAA,KAAK,CAAC3kC,SAAQwoC,WAAWvnC,MAAMjB,IAAI,CAAA,CAAA;AAE1E,WAASuoC,YAAYvZ,OAAOngB,QAAO;AACjC,UAAM,EAACm6B,cAAcC,YAAW,IAAIjF,aAAahV,KAAAA;AAEjD,eAAW1xB,QAAQuR,QAAO;AACxB,YAAMo2B,aAAa+D,aAAa1rC,IAAAA;AAChC,YAAM4nC,YAAY+D,YAAY3rC,IAAAA;AAC9B,YAAM2D,SAASikC,aAAaD,eAAejW,MAAM1xB,IAAK;AACtD,UAAK2nC,eAAeuD,WAAWvnC,KAAAA,KAAU8nC,YAAY9nC,KAAK,MACpDikC,aAAahlC,QAAQe,KAAS,GAAA;AAClC,eAAO;;IAEX;AACA,WAAO;EACT;;AC7YA,MAAMioC,kBAAkB;IAAC;IAAO;IAAU;IAAQ;IAAS;EAAY;AACvE,WAASC,qBAAqB5lB,WAAUrf,MAAM;AAC5C,WAAOqf,cAAa,SAASA,cAAa,YAAa2lB,gBAAgBzyB,QAAQ8M,SAAAA,MAAc,MAAMrf,SAAS;EAC9G;AAEA,WAASklC,cAAcC,IAAIC,KAAI;AAC7B,WAAO,SAASx3B,IAAGrP,IAAG;AACpB,aAAOqP,GAAEu3B,EAAG,MAAK5mC,GAAE4mC,EAAAA,IACfv3B,GAAEw3B,GAAAA,IAAM7mC,GAAE6mC,GAAAA,IACVx3B,GAAEu3B,EAAG,IAAG5mC,GAAE4mC,EAAG;IACnB;EACF;AAEA,WAASE,qBAAqBn7B,SAAS;AACrC,UAAMrV,QAAQqV,QAAQrV;AACtB,UAAM0G,oBAAmB1G,MAAMwH,QAAQV;AAEvC9G,UAAM8+B,cAAc,aAAA;AACpBsM,aAAa1kC,qBAAoBA,kBAAiB+pC,YAAY;MAACp7B;OAAUrV,KAAAA;EAC3E;AAEA,WAAS0wC,oBAAoBr7B,SAAS;AACpC,UAAMrV,QAAQqV,QAAQrV;AACtB,UAAM0G,oBAAmB1G,MAAMwH,QAAQV;AACvCskC,aAAa1kC,qBAAoBA,kBAAiBiqC,YAAY;MAACt7B;OAAUrV,KAAAA;EAC3E;AAMA,WAAS4wC,UAAUhvC,MAAM;AACvB,QAAIg1B,gBAAAA,KAAqB,OAAOh1B,SAAS,UAAU;AACjDA,aAAO8yB,SAASmc,eAAejvC,IAAAA;IACjC,WAAWA,QAAQA,KAAKH,QAAQ;AAE9BG,aAAOA,KAAK,CAAE;;AAGhB,QAAIA,QAAQA,KAAK6vB,QAAQ;AAEvB7vB,aAAOA,KAAK6vB;;AAEd,WAAO7vB;EACT;AAEA,MAAMkvC,YAAY,CAAA;AAClB,MAAMC,WAAW,CAAC9pC,SAAQ;AACxB,UAAMwqB,SAASmf,UAAU3pC,IAAAA;AACzB,WAAON,OAAOW,OAAOwpC,SAAAA,EAAWrjC,OAAO,CAACujC,OAAMA,GAAEvf,WAAWA,MAAAA,EAAQzvB,IAAG;EACxE;AAEA,WAASivC,gBAAgB50B,KAAKvb,QAAO2W,OAAM;AACzC,UAAM7Q,OAAOD,OAAOC,KAAKyV,GAAAA;AACzB,eAAWpV,QAAOL,MAAM;AACtB,YAAMsqC,SAAS,CAACjqC;AAChB,UAAIiqC,UAAUpwC,QAAO;AACnB,cAAMoH,QAAQmU,IAAIpV,IAAI;AACtB,eAAOoV,IAAIpV,IAAI;AACf,YAAIwQ,QAAO,KAAKy5B,SAASpwC,QAAO;AAC9Bub,cAAI60B,SAASz5B,KAAAA,IAAQvP;;;IAG3B;EACF;AASA,WAASipC,mBAAmB9rB,IAAG+rB,WAAWC,aAAaC,SAAS;AAC9D,QAAI,CAACD,eAAehsB,GAAEllB,SAAS,YAAY;AACzC,aAAO;;AAET,QAAImxC,SAAS;AACX,aAAOF;;AAET,WAAO/rB;EACT;AAEA,WAASksB,eAAe9oC,QAAOuM,WAAWw8B,OAAO;AAC/C,WAAO/oC,OAAMjB,QAAQqN,OAAOpM,OAAM+oC,KAAM,IAAGx8B,UAAUw8B,KAAM;EAC7D;AAEA,WAASC,eAAe1mC,MAAMiK,WAAW;AACvC,UAAM,EAACjM,QAAQC,OAAAA,IAAU+B;AACzB,QAAIhC,UAAUC,QAAQ;AACpB,aAAO;QACLM,MAAMioC,eAAexoC,QAAQiM,WAAW,MAAA;QACxC5L,OAAOmoC,eAAexoC,QAAQiM,WAAW,OAAA;QACzC7L,KAAKooC,eAAevoC,QAAQgM,WAAW,KAAA;QACvC3L,QAAQkoC,eAAevoC,QAAQgM,WAAW,QAAA;MAC5C;;AAEF,WAAOA;EACT;AAEA,MAAM08B,QAAN,MAAMA;IASJ,OAAO5J,YAAYtmC,OAAO;AACxB+mB,eAAS5lB,IAAOnB,GAAAA,KAAAA;AAChBmwC,wBAAAA;IACF;IAEA,OAAOvJ,cAAc5mC,OAAO;AAC1B+mB,eAASnlB,OAAU5B,GAAAA,KAAAA;AACnBmwC,wBAAAA;IACF;IAGAnyC,YAAYoC,MAAMgwC,YAAY;AAC5B,YAAMvrC,UAAS,KAAKA,SAAS,IAAIkoC,OAAOqD,UAAAA;AACxC,YAAMC,gBAAgBjB,UAAUhvC,IAAAA;AAChC,YAAMkwC,gBAAgBf,SAASc,aAAAA;AAC/B,UAAIC,eAAe;AACjB,cAAM,IAAInpB,MACR,8CAA+CmpB,cAAclmC,KAAK,oDAClBkmC,cAAcrgB,OAAO7lB,KAAK,kBAC1E;;AAGJ,YAAMpE,WAAUnB,QAAOqM,eAAerM,QAAO+oC,kBAAiB,GAAI,KAAKz8B,WAAU,CAAA;AAEjF,WAAKg8B,WAAW,KAAKtoC,QAAOsoC,YAAYhY,gBAAgBkb,aAAa,GAAA;AACrE,WAAKlD,SAAS1c,aAAa5rB,OAAAA;AAE3B,YAAMgP,UAAU,KAAKs5B,SAASnd,eAAeqgB,eAAerqC,SAAQ8c,WAAW;AAC/E,YAAMmN,SAASpc,WAAWA,QAAQoc;AAClC,YAAM1U,UAAS0U,UAAUA,OAAO1U;AAChC,YAAMC,SAAQyU,UAAUA,OAAOzU;AAE/B,WAAKpR,KAAKmmC,IAAAA;AACV,WAAKhjC,MAAMsG;AACX,WAAKoc,SAASA;AACd,WAAKzU,QAAQA;AACb,WAAKD,SAASA;AACd,WAAKi1B,WAAWxqC;AAIhB,WAAKyqC,eAAe,KAAK3tB;AACzB,WAAKsM,UAAU,CAAA;AACf,WAAKshB,YAAY,CAAA;AACjB,WAAKnlC,UAAUjN;AACf,WAAKutB,QAAQ,CAAA;AACb,WAAK+H,0BAA0Bt1B;AAC/B,WAAKkV,YAAYlV;AACjB,WAAK+B,UAAU,CAAA;AACf,WAAKswC,aAAaryC;AAClB,WAAKsyC,aAAa,CAAA;AAElB,WAAKC,uBAAuBvyC;AAC5B,WAAKwyC,kBAAkB,CAAA;AACvB,WAAK9kC,SAAS,CAAA;AACd,WAAK+kC,WAAW,IAAI3H,cAAAA;AACpB,WAAKtU,WAAW,CAAA;AAChB,WAAKkc,iBAAiB,CAAA;AACtB,WAAKC,WAAW;AAChB,WAAKj8B,sBAAsB1W;AAC3B,WAAK6P,WAAW7P;AAChB,WAAK4yC,YAAYC,SAASpoC,CAAAA,SAAQ,KAAK7E,OAAO6E,IAAO/C,GAAAA,SAAQorC,eAAe,CAAA;AAC5E,WAAK56B,eAAe,CAAA;AAGpB84B,gBAAU,KAAKllC,EAAE,IAAI;AAErB,UAAI,CAACyJ,WAAW,CAACoc,QAAQ;AAKvBrhB,gBAAQo9B,MAAM,mEAAA;AACd;;AAGFnlC,eAAS9F,OAAO,MAAM,YAAYiuC,oBAAAA;AAClCnoC,eAAS9F,OAAO,MAAM,YAAYmuC,mBAAAA;AAElC,WAAKmC,YAAW;AAChB,UAAI,KAAKJ,UAAU;AACjB,aAAK/sC,OAAM;;IAEf;IAEA,IAAI4e,cAAc;AAChB,YAAM,EAAC9c,SAAS,EAAC8c,aAAawuB,oBAAAA,GAAsB91B,OAAAA,QAAOD,QAAAA,SAAQk1B,aAAY,IAAI;AACnF,UAAI,CAACn4B,cAAcwK,WAAc,GAAA;AAE/B,eAAOA;;AAGT,UAAIwuB,uBAAuBb,cAAc;AAEvC,eAAOA;;AAIT,aAAOl1B,UAASC,SAAQD,UAAS;IACnC;IAEA,IAAIjS,OAAO;AACT,aAAO,KAAKzE,OAAOyE;IACrB;IAEA,IAAIA,KAAKA,OAAM;AACb,WAAKzE,OAAOyE,OAAOA;IACrB;IAEA,IAAItD,UAAU;AACZ,aAAO,KAAKwqC;IACd;IAEA,IAAIxqC,QAAQA,UAAS;AACnB,WAAKnB,OAAOmB,UAAUA;IACxB;IAEA,IAAI+gB,WAAW;AACb,aAAOA;IACT;IAKAsqB,cAAc;AAEZ,WAAK/T,cAAc,YAAA;AAEnB,UAAI,KAAKt3B,QAAQurC,YAAY;AAC3B,aAAK5d,OAAM;aACN;AACL6d,oBAAY,MAAM,KAAKxrC,QAAQ0tB,gBAAgB;;AAGjD,WAAK+d,WAAU;AAGf,WAAKnU,cAAc,WAAA;AAEnB,aAAO;IACT;IAEA+P,QAAQ;AACNqE,kBAAY,KAAKzhB,QAAQ,KAAK1iB,GAAG;AACjC,aAAO;IACT;IAEA7L,OAAO;AACLmF,eAASnF,KAAK,IAAI;AAClB,aAAO;IACT;IAOAiyB,OAAOnY,QAAOD,SAAQ;AACpB,UAAI,CAAC1U,SAAS9G,QAAQ,IAAI,GAAG;AAC3B,aAAK4xC,QAAQn2B,QAAOD,OAAAA;aACf;AACL,aAAKq2B,oBAAoB;UAACp2B,OAAAA;UAAOD,QAAAA;QAAM;;IAE3C;IAEAo2B,QAAQn2B,QAAOD,SAAQ;AACrB,YAAMvV,WAAU,KAAKA;AACrB,YAAMiqB,SAAS,KAAKA;AACpB,YAAMnN,cAAc9c,SAAQsrC,uBAAuB,KAAKxuB;AACxD,YAAM+uB,UAAU,KAAK1E,SAAS5c,eAAeN,QAAQzU,QAAOD,SAAQuH,WAAAA;AACpE,YAAMgvB,WAAW9rC,SAAQ0tB,oBAAoB,KAAKyZ,SAAS7c,oBAAmB;AAC9E,YAAMvnB,OAAO,KAAKyS,QAAQ,WAAW;AAErC,WAAKA,QAAQq2B,QAAQr2B;AACrB,WAAKD,SAASs2B,QAAQt2B;AACtB,WAAKk1B,eAAe,KAAK3tB;AACzB,UAAI,CAAC0uB,YAAY,MAAMM,UAAU,IAAI,GAAG;AACtC;;AAGF,WAAKxU,cAAc,UAAU;QAAC32B,MAAMkrC;MAAO,CAAA;AAE3CjI,eAAa5jC,SAAQ+rC,UAAU;QAAC;QAAMF;MAAQ,GAAE,IAAI;AAEpD,UAAI,KAAKZ,UAAU;AACjB,YAAI,KAAKC,UAAUnoC,IAAO,GAAA;AAExB,eAAKipC,OAAM;;;IAGjB;IAEAC,sBAAsB;AACpB,YAAMjsC,WAAU,KAAKA;AACrB,YAAMksC,gBAAgBlsC,SAAQgG,UAAU,CAAA;AAExC4jB,WAAKsiB,eAAe,CAACC,aAAarM,WAAW;AAC3CqM,oBAAY/nC,KAAK07B;MACnB,CAAA;IACF;IAKAsM,sBAAsB;AACpB,YAAMpsC,WAAU,KAAKA;AACrB,YAAMqsC,YAAYrsC,SAAQgG;AAC1B,YAAMA,UAAS,KAAKA;AACpB,YAAMsmC,UAAUntC,OAAOC,KAAK4G,OAAAA,EAAQ3K,OAAO,CAACwZ,KAAKzQ,QAAO;AACtDyQ,YAAIzQ,GAAG,IAAG;AACV,eAAOyQ;MACT,GAAG,CAAA,CAAC;AACJ,UAAI7a,QAAQ,CAAA;AAEZ,UAAIqyC,WAAW;AACbryC,gBAAQA,MAAMoX,OACZjS,OAAOC,KAAKitC,SAAWlvB,EAAAA,IAAI,CAAC/Y,QAAO;AACjC,gBAAMihC,eAAegH,UAAUjoC,GAAG;AAClC,gBAAMT,OAAOyhC,cAAchhC,KAAIihC,YAAAA;AAC/B,gBAAMkH,WAAW5oC,SAAS;AAC1B,gBAAMgQ,eAAehQ,SAAS;AAC9B,iBAAO;YACL3D,SAASqlC;YACTmH,WAAWD,WAAW,cAAc54B,eAAe,WAAW;YAC9D84B,OAAOF,WAAW,iBAAiB54B,eAAe,aAAa;UACjE;QACF,CAAA,CAAA;;AAIJiW,WAAK5vB,OAAO,CAACI,SAAS;AACpB,cAAMirC,eAAejrC,KAAK4F;AAC1B,cAAMoE,MAAKihC,aAAajhC;AACxB,cAAMT,OAAOyhC,cAAchhC,KAAIihC,YAAAA;AAC/B,cAAMqH,YAAYvjC,eAAek8B,aAAa1sC,MAAMyB,KAAKqyC,KAAK;AAE9D,YAAIpH,aAAariB,aAAa1qB,UAAaswC,qBAAqBvD,aAAariB,UAAUrf,IAAUilC,MAAAA,qBAAqBxuC,KAAKoyC,SAAS,GAAG;AACrInH,uBAAariB,WAAW5oB,KAAKoyC;;AAG/BF,gBAAQloC,GAAG,IAAG;AACd,YAAInD,SAAQ;AACZ,YAAImD,OAAM4B,WAAUA,QAAO5B,GAAAA,EAAIzL,SAAS+zC,WAAW;AACjDzrC,UAAAA,SAAQ+E,QAAO5B,GAAG;eACb;AACL,gBAAMuoC,aAAa5rB,SAASuhB,SAASoK,SAAAA;AACrCzrC,UAAAA,SAAQ,IAAI0rC,WAAW;YACrBvoC,IAAAA;YACAzL,MAAM+zC;YACNnlC,KAAK,KAAKA;YACV/O,OAAO;UACT,CAAA;AACAwN,UAAAA,QAAO/E,OAAMmD,EAAE,IAAInD;;AAGrBA,QAAAA,OAAMugB,KAAK6jB,cAAcrlC,QAAAA;MAC3B,CAAA;AAEA4pB,WAAK0iB,SAAS,CAACM,YAAYxoC,QAAO;AAChC,YAAI,CAACwoC,YAAY;AACf,iBAAO5mC,QAAO5B,GAAG;;MAErB,CAAA;AAEAwlB,WAAK5jB,SAAQ,CAAC/E,WAAU;AACtBglB,gBAAQjnB,UAAU,MAAMiC,QAAOA,OAAMjB,OAAO;AAC5CimB,gBAAQkD,OAAO,MAAMloB,MAAAA;MACvB,CAAA;IACF;IAKA4rC,kBAAkB;AAChB,YAAMtqC,WAAW,KAAKmoC;AACtB,YAAM56B,UAAU,KAAKxM,KAAKyG,SAAS9P;AACnC,YAAM4V,UAAUtN,SAAStI;AAEzBsI,eAAS+O,KAAK,CAACC,IAAGrP,OAAMqP,GAAE7O,QAAQR,GAAEQ,KAAK;AACzC,UAAImN,UAAUC,SAAS;AACrB,iBAAS5V,KAAI4V,SAAS5V,KAAI2V,SAAS,EAAE3V,IAAG;AACtC,eAAK4yC,oBAAoB5yC,EAAAA;QAC3B;AACAqI,iBAAS8N,OAAOP,SAASD,UAAUC,OAAAA;;AAErC,WAAKg7B,kBAAkBvoC,SAASigB,MAAM,CAAGlR,EAAAA,KAAKu3B,cAAc,SAAS,OAAA,CAAA;IACvE;IAKAkE,8BAA8B;AAC5B,YAAM,EAACrC,WAAWnoC,UAAUe,MAAM,EAACyG,SAAAA,EAAS,IAAI;AAChD,UAAIxH,SAAStI,SAAS8P,SAAS9P,QAAQ;AACrC,eAAO,KAAKsL;;AAEdhD,eAASvJ,QAAQ,CAACuK,MAAMb,WAAU;AAChC,YAAIqH,SAAS9D,OAAOxE,CAAAA,OAAKA,OAAM8B,KAAK2a,QAAQ,EAAEjkB,WAAW,GAAG;AAC1D,eAAK6yC,oBAAoBpqC,MAAAA;;MAE7B,CAAA;IACF;IAEAsqC,2BAA2B;AACzB,YAAMC,iBAAiB,CAAA;AACvB,YAAMljC,WAAW,KAAKzG,KAAKyG;AAC3B,UAAI7P,IAAGuI;AAEP,WAAKsqC,4BAA2B;AAEhC,WAAK7yC,KAAI,GAAGuI,OAAOsH,SAAS9P,QAAQC,KAAIuI,MAAMvI,MAAK;AACjD,cAAMoM,UAAUyD,SAAS7P,EAAE;AAC3B,YAAIqJ,OAAO,KAAKyG,eAAe9P,EAAAA;AAC/B,cAAMvB,OAAO2N,QAAQ3N,QAAQ,KAAKkG,OAAOlG;AAEzC,YAAI4K,KAAK5K,QAAQ4K,KAAK5K,SAASA,MAAM;AACnC,eAAKm0C,oBAAoB5yC,EAAAA;AACzBqJ,iBAAO,KAAKyG,eAAe9P,EAAAA;;AAE7BqJ,aAAK5K,OAAOA;AACZ4K,aAAKiG,YAAYlD,QAAQkD,aAAaq7B,aAAalsC,MAAM,KAAKqH,OAAO;AACrEuD,aAAK2pC,QAAQ5mC,QAAQ4mC,SAAS;AAC9B3pC,aAAKb,QAAQxI;AACbqJ,aAAK2J,QAAQ,KAAK5G,QAAQ4G;AAC1B3J,aAAK4pC,UAAU,KAAK5yB,iBAAiBrgB,EAAAA;AAErC,YAAIqJ,KAAK6B,YAAY;AACnB7B,eAAK6B,WAAW0D,YAAY5O,EAAAA;AAC5BqJ,eAAK6B,WAAWoD,WAAU;eACrB;AACL,gBAAM4kC,kBAAkBrsB,SAASohB,cAAcxpC,IAAAA;AAC/C,gBAAM,EAAC0P,oBAAoBC,gBAAAA,IAAmBjJ,SAAS0K,SAASpR,IAAK;AACrEwG,iBAAOyB,OAAOwsC,iBAAiB;YAC7B9kC,iBAAiByY,SAASC,WAAW1Y,eAAAA;YACrCD,oBAAoBA,sBAAsB0Y,SAASC,WAAW3Y,kBAAAA;UAChE,CAAA;AACA9E,eAAK6B,aAAa,IAAIgoC,gBAAgB,MAAMlzC,EAAAA;AAC5C+yC,yBAAe/xC,KAAKqI,KAAK6B,UAAU;;MAEvC;AAEA,WAAKynC,gBAAe;AACpB,aAAOI;IACT;IAMAI,iBAAiB;AACfzjB,WAAK,KAAKtmB,KAAKyG,UAAU,CAACzD,SAAStD,iBAAiB;AAClD,aAAKgH,eAAehH,YAAcoC,EAAAA,WAAW+E,MAAK;MACpD,GAAG,IAAI;IACT;IAKAA,QAAQ;AACN,WAAKkjC,eAAc;AACnB,WAAK/V,cAAc,OAAA;IACrB;IAEAp5B,OAAO6E,MAAM;AACX,YAAMlE,UAAS,KAAKA;AAEpBA,MAAAA,QAAOX,OAAM;AACb,YAAM8B,WAAU,KAAKwqC,WAAW3rC,QAAOqM,eAAerM,QAAO+oC,kBAAiB,GAAI,KAAKz8B,WAAU,CAAA;AACjG,YAAMmiC,gBAAgB,KAAKt+B,sBAAsB,CAAChP,SAAQV;AAE1D,WAAKiuC,cAAa;AAClB,WAAKC,oBAAmB;AACxB,WAAKC,qBAAoB;AAIzB,WAAK1C,SAASjH,WAAU;AAExB,UAAI,KAAKxM,cAAc,gBAAgB;QAACv0B;QAAM8gC,YAAY;MAAI,CAAA,MAAO,OAAO;AAC1E;;AAIF,YAAMoJ,iBAAiB,KAAKD,yBAAwB;AAEpD,WAAK1V,cAAc,sBAAA;AAGnB,UAAI9N,aAAa;AACjB,eAAStvB,KAAI,GAAGuI,OAAO,KAAKa,KAAKyG,SAAS9P,QAAQC,KAAIuI,MAAMvI,MAAK;AAC/D,cAAM,EAACkL,WAAU,IAAI,KAAK4E,eAAe9P,EAAAA;AACzC,cAAMiQ,QAAQ,CAACmjC,iBAAiBL,eAAe/2B,QAAQ9Q,UAAAA,MAAgB;AAGvEA,mBAAWqF,sBAAsBN,KAAAA;AACjCqf,qBAAapwB,KAAKoC,IAAI,CAAC4J,WAAW4H,eAAc,GAAIwc,UAAAA;MACtD;AACAA,mBAAa,KAAKkkB,cAAc1tC,SAAQ0mB,OAAOinB,cAAcnkB,aAAa;AAC1E,WAAKokB,cAAcpkB,UAAAA;AAGnB,UAAI,CAAC8jB,eAAe;AAGlB1jB,aAAKqjB,gBAAgB,CAAC7nC,eAAe;AACnCA,qBAAW+E,MAAK;QAClB,CAAA;;AAGF,WAAK0jC,gBAAgB9qC,IAAAA;AAGrB,WAAKu0B,cAAc,eAAe;QAACv0B;MAAI,CAAA;AAEvC,WAAKqmB,QAAQ9X,KAAKu3B,cAAc,KAAK,MAAA,CAAA;AAGrC,YAAM,EAACxuC,SAASswC,WAAU,IAAI;AAC9B,UAAIA,YAAY;AACd,aAAKmD,cAAcnD,YAAY,IAAI;iBAC1BtwC,QAAQJ,QAAQ;AACzB,aAAK8zC,mBAAmB1zC,SAASA,SAAS,IAAI;;AAGhD,WAAK2xC,OAAM;IACb;IAKAuB,gBAAgB;AACd3jB,WAAK,KAAK5jB,QAAQ,CAAC/E,WAAU;AAC3BglB,gBAAQqD,UAAU,MAAMroB,MAAAA;MAC1B,CAAA;AAEA,WAAKgrC,oBAAmB;AACxB,WAAKG,oBAAmB;IAC1B;IAKAoB,sBAAsB;AACpB,YAAMxtC,WAAU,KAAKA;AACrB,YAAMguC,iBAAiB,IAAIrH,IAAIxnC,OAAOC,KAAK,KAAKwrC,UAAU,CAAA;AAC1D,YAAMqD,YAAY,IAAItH,IAAI3mC,SAAQkuC,MAAM;AAExC,UAAI,CAACC,UAAUH,gBAAgBC,SAAAA,KAAc,CAAC,CAAC,KAAKpD,yBAAyB7qC,SAAQurC,YAAY;AAE/F,aAAK6C,aAAY;AACjB,aAAK3C,WAAU;;IAEnB;IAKAgC,uBAAuB;AACrB,YAAM,EAACzC,eAAAA,IAAkB;AACzB,YAAMqD,UAAU,KAAKC,uBAAsB,KAAM,CAAA;AACjD,iBAAW,EAAC3vC,QAAQrF,OAAAA,QAAOgS,MAAAA,KAAU+iC,SAAS;AAC5C,cAAMp+B,QAAOtR,WAAW,oBAAoB,CAAC2M,QAAQA;AACrDm+B,wBAAgBuB,gBAAgB1xC,QAAO2W,KAAAA;MACzC;IACF;IAKAq+B,yBAAyB;AACvB,YAAM99B,eAAe,KAAKA;AAC1B,UAAI,CAACA,gBAAgB,CAACA,aAAavW,QAAQ;AACzC;;AAGF,WAAKuW,eAAe,CAAA;AACpB,YAAM+9B,eAAe,KAAKjrC,KAAKyG,SAAS9P;AACxC,YAAMu0C,UAAU,CAACjU,QAAQ,IAAIoM,IAC3Bn2B,aACGvK,OAAOujC,CAAAA,OAAKA,GAAE,CAAA,MAAOjP,GAAAA,EACrBpd,IAAI,CAACqsB,IAAGtvC,OAAMA,KAAI,MAAMsvC,GAAEn5B,OAAO,CAAGkxB,EAAAA,KAAK,GAAA,CAAA,CAAA;AAG9C,YAAMkN,YAAYD,QAAQ,CAAA;AAC1B,eAASt0C,KAAI,GAAGA,KAAIq0C,cAAcr0C,MAAK;AACrC,YAAI,CAACi0C,UAAUM,WAAWD,QAAQt0C,EAAK,CAAA,GAAA;AACrC;;MAEJ;AACA,aAAO4J,MAAM7H,KAAKwyC,SACftxB,EAAAA,IAAIqsB,CAAAA,OAAKA,GAAEpI,MAAM,GACjBjkB,CAAAA,EAAAA,IAAI5L,CAAAA,QAAM;QAAC5S,QAAQ4S,GAAE,CAAE;QAAEjY,OAAO,CAACiY,GAAE,CAAE;QAAEjG,OAAO,CAACiG,GAAE,CAAE;QAAA;IACxD;IAOAq8B,cAAcpkB,YAAY;AACxB,UAAI,KAAK8N,cAAc,gBAAgB;QAACuM,YAAY;MAAI,CAAA,MAAO,OAAO;AACpE;;AAGF5d,cAAQ/nB,OAAO,MAAM,KAAKsX,OAAO,KAAKD,QAAQiU,UAAAA;AAE9C,YAAMjc,OAAO,KAAKC;AAClB,YAAMkhC,SAASnhC,KAAKiI,SAAS,KAAKjI,KAAKgI,UAAU;AAEjD,WAAK6T,UAAU,CAAA;AACfQ,WAAK,KAAK/D,OAAO,CAACJ,QAAQ;AACxB,YAAIipB,UAAUjpB,IAAIzC,aAAa,aAAa;AAE1C;;AAKF,YAAIyC,IAAIzmB,WAAW;AACjBymB,cAAIzmB,UAAS;;AAEf,aAAKoqB,QAAQluB,KAAI,GAAIuqB,IAAI2D,QAAO,CAAA;MAClC,GAAG,IAAI;AAEP,WAAKA,QAAQpwB,QAAQ,CAACoB,MAAMsI,WAAU;AACpCtI,aAAKu0C,OAAOjsC;MACd,CAAA;AAEA,WAAK40B,cAAc,aAAA;IACrB;IAOAuW,gBAAgB9qC,MAAM;AACpB,UAAI,KAAKu0B,cAAc,wBAAwB;QAACv0B;QAAM8gC,YAAY;MAAI,CAAA,MAAO,OAAO;AAClF;;AAGF,eAAS3pC,KAAI,GAAGuI,OAAO,KAAKa,KAAKyG,SAAS9P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/D,aAAK8P,eAAe9P,EAAGkL,EAAAA,WAAWpG,UAAS;MAC7C;AAEA,eAAS9E,KAAI,GAAGuI,OAAO,KAAKa,KAAKyG,SAAS9P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/D,aAAK00C,eAAe10C,IAAG+tC,WAAWllC,IAAAA,IAAQA,KAAK;UAACC,cAAc9I;QAAC,CAAA,IAAK6I,IAAI;MAC1E;AAEA,WAAKu0B,cAAc,uBAAuB;QAACv0B;MAAI,CAAA;IACjD;IAOA6rC,eAAelsC,QAAOK,MAAM;AAC1B,YAAMQ,OAAO,KAAKyG,eAAetH,MAAAA;AACjC,YAAM6N,OAAO;QAAChN;QAAMb,OAAAA;QAAOK;QAAM8gC,YAAY;MAAI;AAEjD,UAAI,KAAKvM,cAAc,uBAAuB/mB,IAAAA,MAAU,OAAO;AAC7D;;AAGFhN,WAAK6B,WAAWzL,QAAQoJ,IAAAA;AAExBwN,WAAKszB,aAAa;AAClB,WAAKvM,cAAc,sBAAsB/mB,IAAAA;IAC3C;IAEAy7B,SAAS;AACP,UAAI,KAAK1U,cAAc,gBAAgB;QAACuM,YAAY;MAAI,CAAA,MAAO,OAAO;AACpE;;AAGF,UAAIhjC,SAASzF,IAAI,IAAI,GAAG;AACtB,YAAI,KAAK6vC,YAAY,CAACpqC,SAAS9G,QAAQ,IAAI,GAAG;AAC5C8G,mBAASvH,MAAM,IAAI;;aAEhB;AACL,aAAKa,KAAI;AACT6uC,6BAAqB;UAACxwC,OAAO;QAAI,CAAA;;IAErC;IAEA2B,OAAO;AACL,UAAID;AACJ,UAAI,KAAK0xC,mBAAmB;AAC1B,cAAM,EAACp2B,OAAAA,QAAOD,QAAAA,QAAAA,IAAU,KAAKq2B;AAE7B,aAAKA,oBAAoB;AACzB,aAAKD,QAAQn2B,QAAOD,OAAAA;;AAEtB,WAAK8xB,MAAK;AAEV,UAAI,KAAK7xB,SAAS,KAAK,KAAKD,UAAU,GAAG;AACvC;;AAGF,UAAI,KAAK+hB,cAAc,cAAc;QAACuM,YAAY;MAAI,CAAA,MAAO,OAAO;AAClE;;AAMF,YAAMgL,SAAS,KAAKzlB;AACpB,WAAKlvB,KAAI,GAAGA,KAAI20C,OAAO50C,UAAU40C,OAAO30C,EAAAA,EAAGmvB,KAAK,GAAG,EAAEnvB,IAAG;AACtD20C,eAAO30C,EAAE,EAACC,KAAK,KAAKqT,SAAS;MAC/B;AAEA,WAAKshC,cAAa;AAGlB,aAAO50C,KAAI20C,OAAO50C,QAAQ,EAAEC,IAAG;AAC7B20C,eAAO30C,EAAE,EAACC,KAAK,KAAKqT,SAAS;MAC/B;AAEA,WAAK8pB,cAAc,WAAA;IACrB;IAKA90B,uBAAuBF,eAAe;AACpC,YAAMC,WAAW,KAAKuoC;AACtB,YAAMxoB,SAAS,CAAA;AACf,UAAIpoB,IAAGuI;AAEP,WAAKvI,KAAI,GAAGuI,OAAOF,SAAStI,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAMqJ,OAAOhB,SAASrI,EAAE;AACxB,YAAI,CAACoI,iBAAiBiB,KAAK4pC,SAAS;AAClC7qB,iBAAOpnB,KAAKqI,IAAAA;;MAEhB;AAEA,aAAO+e;IACT;IAMAY,+BAA+B;AAC7B,aAAO,KAAK1gB,uBAAuB,IAAI;IACzC;IAOAssC,gBAAgB;AACd,UAAI,KAAKxX,cAAc,sBAAsB;QAACuM,YAAY;MAAI,CAAA,MAAO,OAAO;AAC1E;;AAGF,YAAMthC,WAAW,KAAK2gB,6BAA4B;AAClD,eAAShpB,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,aAAK60C,aAAaxsC,SAASrI,EAAE,CAAA;MAC/B;AAEA,WAAKo9B,cAAc,mBAAA;IACrB;IAOAyX,aAAaxrC,MAAM;AACjB,YAAMgE,MAAM,KAAKA;AACjB,YAAM8F,OAAO9J,KAAK6J;AAClB,YAAM4hC,UAAU,CAAC3hC,KAAKjL;AACtB,YAAMmL,OAAO08B,eAAe1mC,MAAM,KAAKiK,SAAS;AAChD,YAAM+C,OAAO;QACXhN;QACAb,OAAOa,KAAKb;QACZmhC,YAAY;MACd;AAEA,UAAI,KAAKvM,cAAc,qBAAqB/mB,IAAAA,MAAU,OAAO;AAC3D;;AAGF,UAAIy+B,SAAS;AACX1P,iBAAS/3B,KAAK;UACZzF,MAAMuL,KAAKvL,SAAS,QAAQ,IAAIyL,KAAKzL,OAAOuL,KAAKvL;UACjDF,OAAOyL,KAAKzL,UAAU,QAAQ,KAAK4T,QAAQjI,KAAK3L,QAAQyL,KAAKzL;UAC7DD,KAAK0L,KAAK1L,QAAQ,QAAQ,IAAI4L,KAAK5L,MAAM0L,KAAK1L;UAC9CE,QAAQwL,KAAKxL,WAAW,QAAQ,KAAK0T,SAAShI,KAAK1L,SAASwL,KAAKxL;QACnE,CAAA;;AAGF0B,WAAK6B,WAAWjL,KAAI;AAEpB,UAAI60C,SAAS;AACXvP,mBAAWl4B,GAAAA;;AAGbgJ,WAAKszB,aAAa;AAClB,WAAKvM,cAAc,oBAAoB/mB,IAAAA;IACzC;IAOAyT,cAAchM,QAAO;AACnB,aAAOkM,eAAelM,QAAO,KAAKxK,WAAW,KAAKkgC,WAAW;IAC/D;IAEAuB,0BAA0BpxB,IAAG9a,MAAM/C,UAAS8jB,kBAAkB;AAC5D,YAAMnlB,SAASuwC,YAAYjqB,MAAMliB,IAAK;AACtC,UAAI,OAAOpE,WAAW,YAAY;AAChC,eAAOA,OAAO,MAAMkf,IAAG7d,UAAS8jB,gBAAAA;;AAGlC,aAAO,CAAA;IACT;IAEA9Z,eAAehH,cAAc;AAC3B,YAAMsD,UAAU,KAAKhD,KAAKyG,SAAS/G,YAAa;AAChD,YAAMT,WAAW,KAAKmoC;AACtB,UAAInnC,OAAOhB,SAAS0D,OAAOxE,CAAAA,OAAKA,MAAKA,GAAEyc,aAAa5X,OAAAA,EAAS9L,IAAG;AAEhE,UAAI,CAAC+I,MAAM;AACTA,eAAO;UACL5K,MAAM;UACN2K,MAAM,CAAA;UACNgD,SAAS;UACTlB,YAAY;UACZ+B,QAAQ;UACR+B,SAAS;UACTG,SAAS;UACT6jC,OAAO5mC,WAAWA,QAAQ4mC,SAAS;UACnCxqC,OAAOM;UACPkb,UAAU5X;UACVM,SAAS,CAAA;UACT4E,SAAS;QACX;AACAjJ,iBAASrH,KAAKqI,IAAAA;;AAGhB,aAAOA;IACT;IAEA4H,aAAa;AACX,aAAO,KAAKhD,aAAa,KAAKA,WAAW9B,cAAc,MAAM;QAAC7N,OAAO;QAAMG,MAAM;OAAQ;IAC3F;IAEAinB,yBAAyB;AACvB,aAAO,KAAKsD,6BAA4B,EAAGjpB;IAC7C;IAEAsgB,iBAAiBvX,cAAc;AAC7B,YAAMsD,UAAU,KAAKhD,KAAKyG,SAAS/G,YAAa;AAChD,UAAI,CAACsD,SAAS;AACZ,eAAO;;AAGT,YAAM/C,OAAO,KAAKyG,eAAehH,YAAAA;AAIjC,aAAO,OAAOO,KAAK4D,WAAW,YAAY,CAAC5D,KAAK4D,SAAS,CAACb,QAAQa;IACpE;IAEAgoC,qBAAqBnsC,cAAcmqC,UAAS;AAC1C,YAAM5pC,OAAO,KAAKyG,eAAehH,YAAAA;AACjCO,WAAK4D,SAAS,CAACgmC;IACjB;IAEApvB,qBAAqBrb,QAAO;AAC1B,WAAKsoC,eAAetoC,MAAM,IAAG,CAAC,KAAKsoC,eAAetoC,MAAM;IAC1D;IAEAiU,kBAAkBjU,QAAO;AACvB,aAAO,CAAC,KAAKsoC,eAAetoC,MAAM;IACpC;IAKA0sC,kBAAkBpsC,cAAcyD,WAAW0mC,UAAS;AAClD,YAAMpqC,OAAOoqC,WAAU,SAAS;AAChC,YAAM5pC,OAAO,KAAKyG,eAAehH,YAAAA;AACjC,YAAMvK,QAAQ8K,KAAK6B,WAAWqJ,mBAAmBnW,QAAWyK,IAAAA;AAE5D,UAAIoL,QAAQ1H,SAAY,GAAA;AACtBlD,aAAKD,KAAKmD,SAAAA,EAAWU,SAAS,CAACgmC;AAC/B,aAAKjvC,OAAM;aACN;AACL,aAAKixC,qBAAqBnsC,cAAcmqC,QAAAA;AAExC10C,cAAMyF,OAAOqF,MAAM;UAAC4pC,SAAAA;QAAO,CAAA;AAC3B,aAAKjvC,OAAO,CAACqJ,QAAQA,IAAIvE,iBAAiBA,eAAeD,OAAOzK,MAAS;;IAE7E;IAEA+2C,KAAKrsC,cAAcyD,WAAW;AAC5B,WAAK2oC,kBAAkBpsC,cAAcyD,WAAW,KAAK;IACvD;IAEA6oC,KAAKtsC,cAAcyD,WAAW;AAC5B,WAAK2oC,kBAAkBpsC,cAAcyD,WAAW,IAAI;IACtD;IAKAqmC,oBAAoB9pC,cAAc;AAChC,YAAMO,OAAO,KAAKmnC,UAAU1nC,YAAa;AACzC,UAAIO,QAAQA,KAAK6B,YAAY;AAC3B7B,aAAK6B,WAAWgF,SAAQ;;AAE1B,aAAO,KAAKsgC,UAAU1nC,YAAa;IACrC;IAEAusC,QAAQ;AACN,UAAIr1C,IAAGuI;AACP,WAAK/G,KAAI;AACTmF,eAASjF,OAAO,IAAI;AAEpB,WAAK1B,KAAI,GAAGuI,OAAO,KAAKa,KAAKyG,SAAS9P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC3D,aAAK4yC,oBAAoB5yC,EAAAA;MAC3B;IACF;IAEAs1C,UAAU;AACR,WAAKlY,cAAc,eAAA;AACnB,YAAM,EAACrN,QAAQ1iB,IAAG,IAAI;AAEtB,WAAKgoC,MAAK;AACV,WAAK1wC,OAAOuoC,WAAU;AAEtB,UAAInd,QAAQ;AACV,aAAKmkB,aAAY;AACjB1C,oBAAYzhB,QAAQ1iB,GAAAA;AACpB,aAAK4/B,SAASjd,eAAe3iB,GAAAA;AAC7B,aAAK0iB,SAAS;AACd,aAAK1iB,MAAM;;AAGb,aAAO+hC,UAAU,KAAKllC,EAAE;AAExB,WAAKkzB,cAAc,cAAA;IACrB;IAEAmY,iBAAiBl/B,MAAM;AACrB,aAAO,KAAK0Z,OAAOylB,UAAan/B,GAAAA,IAAAA;IAClC;IAKAk7B,aAAa;AACX,WAAKkE,eAAc;AACnB,UAAI,KAAK3vC,QAAQurC,YAAY;AAC3B,aAAKqE,qBAAoB;aACpB;AACL,aAAK3E,WAAW;;IAEpB;IAKA0E,iBAAiB;AACf,YAAM92C,YAAY,KAAK+xC;AACvB,YAAMzD,WAAW,KAAKA;AAEtB,YAAM0I,OAAO,CAACl3C,MAAMyxB,cAAa;AAC/B+c,iBAAShd,iBAAiB,MAAMxxB,MAAMyxB,SAAAA;AACtCvxB,kBAAUF,IAAAA,IAAQyxB;MACpB;AAEA,YAAMA,WAAW,CAACvM,IAAGpc,IAAGC,OAAM;AAC5Bmc,QAAAA,GAAEnF,UAAUjX;AACZoc,QAAAA,GAAElF,UAAUjX;AACZ,aAAKosC,cAAcjwB,EAAAA;MACrB;AAEA+L,WAAK,KAAK5pB,QAAQkuC,QAAQ,CAACv1C,SAASk3C,KAAKl3C,MAAMyxB,QAAAA,CAAAA;IACjD;IAKAwlB,uBAAuB;AACrB,UAAI,CAAC,KAAK/E,sBAAsB;AAC9B,aAAKA,uBAAuB,CAAA;;AAE9B,YAAMhyC,YAAY,KAAKgyC;AACvB,YAAM1D,WAAW,KAAKA;AAEtB,YAAM0I,OAAO,CAACl3C,MAAMyxB,cAAa;AAC/B+c,iBAAShd,iBAAiB,MAAMxxB,MAAMyxB,SAAAA;AACtCvxB,kBAAUF,IAAAA,IAAQyxB;MACpB;AACA,YAAM0lB,UAAU,CAACn3C,MAAMyxB,cAAa;AAClC,YAAIvxB,UAAUF,IAAAA,GAAO;AACnBwuC,mBAAS9c,oBAAoB,MAAM1xB,MAAMyxB,SAAAA;AACzC,iBAAOvxB,UAAUF,IAAK;;MAE1B;AAEA,YAAMyxB,WAAW,CAAC5U,QAAOD,YAAW;AAClC,YAAI,KAAK0U,QAAQ;AACf,eAAK0D,OAAOnY,QAAOD,OAAAA;;MAEvB;AAEA,UAAIw6B;AACJ,YAAM9E,WAAW,MAAM;AACrB6E,gBAAQ,UAAU7E,QAAAA;AAElB,aAAKA,WAAW;AAChB,aAAKtd,OAAM;AAEXkiB,aAAK,UAAUzlB,QAAAA;AACfylB,aAAK,UAAUE,QAAAA;MACjB;AAEAA,iBAAW,MAAM;AACf,aAAK9E,WAAW;AAEhB6E,gBAAQ,UAAU1lB,QAAAA;AAGlB,aAAKmlB,MAAK;AACV,aAAK5D,QAAQ,GAAG,CAAA;AAEhBkE,aAAK,UAAU5E,QAAAA;MACjB;AAEA,UAAI9D,SAAS3c,WAAW,KAAKP,MAAM,GAAG;AACpCghB,iBAAAA;aACK;AACL8E,iBAAAA;;IAEJ;IAKA3B,eAAe;AACbxkB,WAAK,KAAKghB,YAAY,CAACxgB,UAAUzxB,SAAS;AACxC,aAAKwuC,SAAS9c,oBAAoB,MAAM1xB,MAAMyxB,QAAAA;MAChD,CAAA;AACA,WAAKwgB,aAAa,CAAA;AAElBhhB,WAAK,KAAKihB,sBAAsB,CAACzgB,UAAUzxB,SAAS;AAClD,aAAKwuC,SAAS9c,oBAAoB,MAAM1xB,MAAMyxB,QAAAA;MAChD,CAAA;AACA,WAAKygB,uBAAuBvyC;IAC9B;IAEA03C,iBAAiBh2C,OAAO+I,MAAMqtB,SAAS;AACrC,YAAM6f,SAAS7f,UAAU,QAAQ;AACjC,UAAI7sB,MAAMnJ,MAAMF,IAAGuI;AAEnB,UAAIM,SAAS,WAAW;AACtBQ,eAAO,KAAKyG,eAAehQ,MAAM,CAAA,EAAGgJ,YAAY;AAChDO,aAAK6B,WAAW,MAAM6qC,SAAS,mBAAoB,EAAA;;AAGrD,WAAK/1C,KAAI,GAAGuI,OAAOzI,MAAMC,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CE,eAAOJ,MAAME,EAAE;AACf,cAAMkL,aAAahL,QAAQ,KAAK4P,eAAe5P,KAAK4I,YAAY,EAAEoC;AAClE,YAAIA,YAAY;AACdA,qBAAW6qC,SAAS,YAAA,EAAc71C,KAAKoM,SAASpM,KAAK4I,cAAc5I,KAAKsI,KAAK;;MAEjF;IACF;IAMAwtC,oBAAoB;AAClB,aAAO,KAAK71C,WAAW,CAAA;IACzB;IAMA81C,kBAAkBC,gBAAgB;AAChC,YAAMC,aAAa,KAAKh2C,WAAW,CAAA;AACnC,YAAM4D,UAASmyC,eAAejzB,IAAI,CAAC,EAACna,cAAcN,OAAAA,OAAK,MAAM;AAC3D,cAAMa,OAAO,KAAKyG,eAAehH,YAAAA;AACjC,YAAI,CAACO,MAAM;AACT,gBAAM,IAAI4d,MAAM,+BAA+Bne,YAAc;;AAG/D,eAAO;UACLA;UACAwD,SAASjD,KAAKD,KAAKZ,MAAM;UACzBA,OAAAA;QACF;MACF,CAAA;AACA,YAAMomB,UAAU,CAACwnB,eAAeryC,SAAQoyC,UAAAA;AAExC,UAAIvnB,SAAS;AACX,aAAKzuB,UAAU4D;AAEf,aAAK0sC,aAAa;AAClB,aAAKoD,mBAAmB9vC,SAAQoyC,UAAAA;;IAEpC;IAWA/Y,cAAciM,MAAMhzB,MAAMtK,SAAQ;AAChC,aAAO,KAAK8kC,SAASzH,OAAO,MAAMC,MAAMhzB,MAAMtK,OAAAA;IAChD;IAOA0C,gBAAgB4nC,UAAU;AACxB,aAAO,KAAKxF,SAAS95B,OAAOhL,OAAOsiC,CAAAA,OAAKA,GAAE5E,OAAOv/B,OAAOmsC,QAAAA,EAAUt2C,WAAW;IAC/E;IAKA8zC,mBAAmB9vC,SAAQoyC,YAAYG,QAAQ;AAC7C,YAAMC,eAAe,KAAKzwC,QAAQ0wC;AAClC,YAAM/uB,OAAO,CAACpQ,IAAGrP,OAAMqP,GAAEtL,OAAOxE,CAAAA,OAAK,CAACS,GAAEkiC,KAAK1iC,CAAAA,OAAKD,GAAEuB,iBAAiBtB,GAAEsB,gBAAgBvB,GAAEiB,UAAUhB,GAAEgB,KAAK,CAAA;AAC1G,YAAMiuC,cAAchvB,KAAK0uB,YAAYpyC,OAAAA;AACrC,YAAM2yC,YAAYJ,SAASvyC,UAAS0jB,KAAK1jB,SAAQoyC,UAAW;AAE5D,UAAIM,YAAY12C,QAAQ;AACtB,aAAK+1C,iBAAiBW,aAAaF,aAAa1tC,MAAM,KAAK;;AAG7D,UAAI6tC,UAAU32C,UAAUw2C,aAAa1tC,MAAM;AACzC,aAAKitC,iBAAiBY,WAAWH,aAAa1tC,MAAM,IAAI;;IAE5D;IAKA+qC,cAAcjwB,IAAG2yB,QAAQ;AACvB,YAAMjgC,OAAO;QACXvV,OAAO6iB;QACP2yB;QACA3M,YAAY;QACZgG,aAAa,KAAK7lB,cAAcnG,EAAAA;MAClC;AACA,YAAMgzB,cAAc,CAAClN,YAAYA,OAAO3jC,QAAQkuC,UAAU,KAAKluC,QAAQkuC,QAAQ/nB,SAAStI,GAAEyO,OAAO3zB,IAAI;AAErG,UAAI,KAAK2+B,cAAc,eAAe/mB,MAAMsgC,WAAAA,MAAiB,OAAO;AAClE;;AAGF,YAAM/nB,UAAU,KAAKgoB,aAAajzB,IAAG2yB,QAAQjgC,KAAKs5B,WAAW;AAE7Dt5B,WAAKszB,aAAa;AAClB,WAAKvM,cAAc,cAAc/mB,MAAMsgC,WAAAA;AAEvC,UAAI/nB,WAAWvY,KAAKuY,SAAS;AAC3B,aAAKkjB,OAAM;;AAGb,aAAO;IACT;IAUA8E,aAAajzB,IAAG2yB,QAAQ3G,aAAa;AACnC,YAAM,EAACxvC,SAASg2C,aAAa,CAAA,GAAIrwC,SAAAA,SAAAA,IAAW;AAe5C,YAAM8jB,mBAAmB0sB;AACzB,YAAMvyC,UAAS,KAAK8yC,mBAAmBlzB,IAAGwyB,YAAYxG,aAAa/lB,gBAAAA;AACnE,YAAMgmB,UAAUkH,cAAcnzB,EAAAA;AAC9B,YAAM+rB,YAAYD,mBAAmB9rB,IAAG,KAAK8sB,YAAYd,aAAaC,OAAAA;AAEtE,UAAID,aAAa;AAGf,aAAKc,aAAa;AAGlB/G,iBAAa5jC,SAAQixC,SAAS;UAACpzB;UAAG5f;UAAQ;QAAK,GAAE,IAAI;AAErD,YAAI6rC,SAAS;AACXlG,mBAAa5jC,SAAQ4d,SAAS;YAACC;YAAG5f;YAAQ;UAAK,GAAE,IAAI;;;AAIzD,YAAM6qB,UAAU,CAACwnB,eAAeryC,SAAQoyC,UAAAA;AACxC,UAAIvnB,WAAW0nB,QAAQ;AACrB,aAAKn2C,UAAU4D;AACf,aAAK8vC,mBAAmB9vC,SAAQoyC,YAAYG,MAAAA;;AAG9C,WAAK7F,aAAaf;AAElB,aAAO9gB;IACT;IAUAioB,mBAAmBlzB,IAAGwyB,YAAYxG,aAAa/lB,kBAAkB;AAC/D,UAAIjG,GAAEllB,SAAS,YAAY;AACzB,eAAO,CAAA;;AAGT,UAAI,CAACkxC,aAAa;AAEhB,eAAOwG;;AAGT,YAAMI,eAAe,KAAKzwC,QAAQ0wC;AAClC,aAAO,KAAKzB,0BAA0BpxB,IAAG4yB,aAAa1tC,MAAM0tC,cAAc3sB,gBAAAA;IAC5E;EACF;AA3oCE,gBAFIomB,OAEG7qC,YAAWA;AAClB,gBAHI6qC,OAGGZ,aAAYA;AACnB,gBAJIY,OAIG3yB,aAAYA;AACnB,gBALI2yB,OAKGnpB,YAAWA;AAClB,gBANImpB,OAMGgH,WAAUA;AACjB,gBAPIhH,OAOGX,YAAWA;AAyoCpB,WAASY,oBAAoB;AAC3B,WAAOvgB,KAAKsgB,MAAMZ,WAAW,CAAC9wC,UAAUA,MAAMuyC,SAASjH,WAAU,CAAA;EACnE;ACnwCA,WAASqN,QAAQ5pC,KAA+Bf,SAAqBsS,UAAkB;AACrF,UAAM,EAACD,YAAYu4B,aAAa3vC,GAAAA,IAAGC,GAAAA,IAAGuY,aAAaD,YAAAA,IAAexT;AAClE,QAAI6qC,cAAcD,cAAcn3B;AAIhC1S,QAAIu3B,UAAS;AACbv3B,QAAIyU,IAAIva,IAAGC,IAAGuY,aAAapB,aAAaw4B,aAAav4B,WAAWu4B,WAAAA;AAChE,QAAIr3B,cAAco3B,aAAa;AAC7BC,oBAAcD,cAAcp3B;AAC5BzS,UAAIyU,IAAIva,IAAGC,IAAGsY,aAAalB,WAAWu4B,aAAax4B,aAAaw4B,aAAa,IAAI;WAC5E;AACL9pC,UAAIyU,IAAIva,IAAGC,IAAG0vC,aAAat4B,WAAWa,SAASd,aAAac,OAAAA;;AAE9DpS,QAAI+pC,UAAS;AACb/pC,QAAI8F,KAAI;EACV;AAEA,WAASkkC,gBAAgB7wC,OAAO;AAC9B,WAAO8wC,kBAAkB9wC,OAAO;MAAC;MAAc;MAAY;MAAc;IAAW,CAAA;EACtF;AAKA,WAAS+wC,oBAAkBz1B,KAAiBhC,aAAqBC,aAAqBy3B,YAAoB;AACxG,UAAMC,KAAIJ,gBAAgBv1B,IAAIhc,QAAQ4xC,YAAY;AAClD,UAAMC,iBAAiB53B,cAAcD,eAAe;AACpD,UAAM83B,aAAa14C,KAAKC,IAAIw4C,eAAeH,aAAa13B,cAAc,CAAA;AAStE,UAAM+3B,oBAAoB,CAAC/7B,QAAQ;AACjC,YAAMg8B,iBAAiB/3B,cAAc7gB,KAAKC,IAAIw4C,eAAe77B,GAAG,KAAK07B,aAAa;AAClF,aAAOnZ,YAAYviB,KAAK,GAAG5c,KAAKC,IAAIw4C,eAAeG,aAAAA,CAAAA;IACrD;AAEA,WAAO;MACLC,YAAYF,kBAAkBJ,GAAEM,UAAU;MAC1CC,UAAUH,kBAAkBJ,GAAEO,QAAQ;MACtCC,YAAY5Z,YAAYoZ,GAAEQ,YAAY,GAAGL,UAAAA;MACzCM,UAAU7Z,YAAYoZ,GAAES,UAAU,GAAGN,UAAAA;IACvC;EACF;AAKA,WAASO,WAAWpwC,IAAWqwC,QAAe7wC,IAAWC,IAAW;AAClE,WAAO;MACLD,GAAGA,KAAIQ,KAAI7I,KAAK4f,IAAIs5B,MAAAA;MACpB5wC,GAAGA,KAAIO,KAAI7I,KAAK8f,IAAIo5B,MAAAA;IACtB;EACF;AAiBA,WAASC,QACPhrC,KACAf,SACAiR,SACAgD,SACApZ,MACAkf,UACA;AACA,UAAM,EAAC9e,GAAAA,IAAGC,GAAAA,IAAGmX,YAAYvf,QAAO83C,aAAap3B,aAAaw4B,OAAAA,IAAUhsC;AAEpE,UAAMyT,cAAc7gB,KAAKoC,IAAIgL,QAAQyT,cAAcQ,UAAUhD,UAAS25B,aAAa,CAAA;AACnF,UAAMp3B,cAAcw4B,SAAS,IAAIA,SAAS/3B,UAAUhD,UAAS25B,cAAc;AAE3E,QAAIqB,gBAAgB;AACpB,UAAMC,SAAQrxC,OAAM/H;AAEpB,QAAImhB,SAAS;AAIX,YAAMk4B,uBAAuBH,SAAS,IAAIA,SAAS/3B,UAAU;AAC7D,YAAMm4B,uBAAuB34B,cAAc,IAAIA,cAAcQ,UAAU;AACvE,YAAMo4B,sBAAsBF,uBAAuBC,wBAAwB;AAC3E,YAAME,gBAAgBD,uBAAuB,IAAIH,SAASG,sBAAuBA,qBAAqBp4B,WAAWi4B;AACjHD,uBAAiBC,SAAQI,iBAAiB;;AAG5C,UAAMC,OAAO35C,KAAKoC,IAAI,MAAOk3C,SAAQz4B,cAAcxC,UAASoC,EAAMI,IAAAA;AAClE,UAAM+4B,eAAeN,SAAQK,QAAQ;AACrC,UAAMl6B,aAAavf,SAAQ05C,cAAcP;AACzC,UAAM35B,WAAWzX,OAAM2xC,cAAcP;AACrC,UAAM,EAACR,YAAYC,UAAUC,YAAYC,SAAQ,IAAIX,oBAAkBjrC,SAASwT,aAAaC,aAAanB,WAAWD,UAAAA;AAErH,UAAMo6B,2BAA2Bh5B,cAAcg4B;AAC/C,UAAMiB,yBAAyBj5B,cAAci4B;AAC7C,UAAMiB,0BAA0Bt6B,aAAao5B,aAAagB;AAC1D,UAAMG,wBAAwBt6B,WAAWo5B,WAAWgB;AAEpD,UAAMG,2BAA2Br5B,cAAcm4B;AAC/C,UAAMmB,yBAAyBt5B,cAAco4B;AAC7C,UAAMmB,0BAA0B16B,aAAas5B,aAAakB;AAC1D,UAAMG,wBAAwB16B,WAAWs5B,WAAWkB;AAEpD/rC,QAAIu3B,UAAS;AAEb,QAAIve,UAAU;AAEZ,YAAMkzB,yBAAyBN,0BAA0BC,yBAAyB;AAClF7rC,UAAIyU,IAAIva,IAAGC,IAAGuY,aAAak5B,yBAAyBM,qBAAAA;AACpDlsC,UAAIyU,IAAIva,IAAGC,IAAGuY,aAAaw5B,uBAAuBL,qBAAAA;AAGlD,UAAIlB,WAAW,GAAG;AAChB,cAAMwB,UAAUrB,WAAWa,wBAAwBE,uBAAuB3xC,IAAGC,EAAAA;AAC7E6F,YAAIyU,IAAI03B,QAAQjyC,GAAGiyC,QAAQhyC,GAAGwwC,UAAUkB,uBAAuBt6B,WAAWa,OAAAA;;AAI5E,YAAMg6B,KAAKtB,WAAWiB,wBAAwBx6B,UAAUrX,IAAGC,EAAAA;AAC3D6F,UAAIy3B,OAAO2U,GAAGlyC,GAAGkyC,GAAGjyC,CAAC;AAGrB,UAAI0wC,WAAW,GAAG;AAChB,cAAMsB,UAAUrB,WAAWiB,wBAAwBE,uBAAuB/xC,IAAGC,EAAAA;AAC7E6F,YAAIyU,IAAI03B,QAAQjyC,GAAGiyC,QAAQhyC,GAAG0wC,UAAUt5B,WAAWa,SAAS65B,wBAAwBp6C,KAAKygB,EAAE;;AAI7F,YAAM+5B,yBAA0B96B,WAAYs5B,WAAWp4B,eAAiBnB,aAAcs5B,aAAan4B,gBAAiB;AACpHzS,UAAIyU,IAAIva,IAAGC,IAAGsY,aAAalB,WAAYs5B,WAAWp4B,aAAc45B,uBAAuB,IAAI;AAC3FrsC,UAAIyU,IAAIva,IAAGC,IAAGsY,aAAa45B,uBAAuB/6B,aAAcs5B,aAAan4B,aAAc,IAAI;AAG/F,UAAIm4B,aAAa,GAAG;AAClB,cAAMuB,UAAUrB,WAAWgB,0BAA0BE,yBAAyB9xC,IAAGC,EAAAA;AACjF6F,YAAIyU,IAAI03B,QAAQjyC,GAAGiyC,QAAQhyC,GAAGywC,YAAYoB,0BAA0Bn6C,KAAKygB,IAAIhB,aAAac,OAAAA;;AAI5F,YAAMk6B,KAAKxB,WAAWY,0BAA0Bp6B,YAAYpX,IAAGC,EAAAA;AAC/D6F,UAAIy3B,OAAO6U,GAAGpyC,GAAGoyC,GAAGnyC,CAAC;AAGrB,UAAIuwC,aAAa,GAAG;AAClB,cAAMyB,UAAUrB,WAAWY,0BAA0BE,yBAAyB1xC,IAAGC,EAAAA;AACjF6F,YAAIyU,IAAI03B,QAAQjyC,GAAGiyC,QAAQhyC,GAAGuwC,YAAYp5B,aAAac,SAASw5B,uBAAAA;;WAE7D;AACL5rC,UAAIw3B,OAAOt9B,IAAGC,EAAAA;AAEd,YAAMoyC,cAAc16C,KAAK4f,IAAIm6B,uBAAAA,IAA2Bl5B,cAAcxY;AACtE,YAAMsyC,cAAc36C,KAAK8f,IAAIi6B,uBAAAA,IAA2Bl5B,cAAcvY;AACtE6F,UAAIy3B,OAAO8U,aAAaC,WAAAA;AAExB,YAAMC,YAAY56C,KAAK4f,IAAIo6B,qBAAAA,IAAyBn5B,cAAcxY;AAClE,YAAMwyC,YAAY76C,KAAK8f,IAAIk6B,qBAAAA,IAAyBn5B,cAAcvY;AAClE6F,UAAIy3B,OAAOgV,WAAWC,SAAAA;;AAGxB1sC,QAAI+pC,UAAS;EACf;AAEA,WAAS4C,QACP3sC,KACAf,SACAiR,SACAgD,SACA8F,UACA;AACA,UAAM,EAAC4zB,aAAat7B,YAAYP,cAAAA,IAAiB9R;AACjD,QAAIsS,WAAWtS,QAAQsS;AACvB,QAAIq7B,aAAa;AACf5B,cAAQhrC,KAAKf,SAASiR,SAAQgD,SAAS3B,UAAUyH,QAAAA;AACjD,eAASrmB,KAAI,GAAGA,KAAIi6C,aAAa,EAAEj6C,IAAG;AACpCqN,YAAImB,KAAI;MACV;AACA,UAAI,CAACuN,MAAMqC,aAAgB,GAAA;AACzBQ,mBAAWD,cAAcP,gBAAgBM,OAAOA;;;AAGpD25B,YAAQhrC,KAAKf,SAASiR,SAAQgD,SAAS3B,UAAUyH,QAAAA;AACjDhZ,QAAImB,KAAI;AACR,WAAOoQ;EACT;AAEA,WAASqmB,WACP53B,KACAf,SACAiR,SACAgD,SACA8F,UACA;AACA,UAAM,EAAC4zB,aAAat7B,YAAYP,eAAetY,SAAAA,SAAO,IAAIwG;AAC1D,UAAM,EAAC6V,aAAa+3B,iBAAiB9X,YAAYE,iBAAgB,IAAIx8B;AACrE,UAAMq0C,QAAQr0C,SAAQoc,gBAAgB;AAEtC,QAAI,CAACC,aAAa;AAChB;;AAGF9U,QAAIq3B,YAAYtC,cAAc,CAAA,CAAE;AAChC/0B,QAAIs3B,iBAAiBrC;AAErB,QAAI6X,OAAO;AACT9sC,UAAIoW,YAAYtB,cAAc;AAC9B9U,UAAI+sC,WAAWF,mBAAmB;WAC7B;AACL7sC,UAAIoW,YAAYtB;AAChB9U,UAAI+sC,WAAWF,mBAAmB;;AAGpC,QAAIt7B,WAAWtS,QAAQsS;AACvB,QAAIq7B,aAAa;AACf5B,cAAQhrC,KAAKf,SAASiR,SAAQgD,SAAS3B,UAAUyH,QAAAA;AACjD,eAASrmB,KAAI,GAAGA,KAAIi6C,aAAa,EAAEj6C,IAAG;AACpCqN,YAAI03B,OAAM;MACZ;AACA,UAAI,CAAChpB,MAAMqC,aAAgB,GAAA;AACzBQ,mBAAWD,cAAcP,gBAAgBM,OAAOA;;;AAIpD,QAAIy7B,OAAO;AACTlD,cAAQ5pC,KAAKf,SAASsS,QAAAA;;AAGxB,QAAI,CAACq7B,aAAa;AAChB5B,cAAQhrC,KAAKf,SAASiR,SAAQgD,SAAS3B,UAAUyH,QAAAA;AACjDhZ,UAAI03B,OAAM;;EAEd;AAUe,MAAMsV,aAAN,cAAyBjlB,SAAAA;IA2BtChX;IACAQ;IACAq7B;IACAn6B;IACAC;IACAm3B;IACAv4B;IAEA7gB,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAKggB,gBAAgBhgB;AACrB,WAAKugB,aAAavgB;AAClB,WAAKwgB,WAAWxgB;AAChB,WAAK0hB,cAAc1hB;AACnB,WAAK2hB,cAAc3hB;AACnB,WAAK84C,cAAc;AACnB,WAAK+C,cAAc;AAEnB,UAAIt3C,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEAsnB,QAAQqwB,QAAgBC,QAAgB3wB,kBAA2B;AACjE,YAAM9L,SAAQ,KAAKqM,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACxC,YAAM,EAACxK,OAAOsL,SAAAA,IAAYN,kBAAkBtM,QAAO;QAACvW,GAAG+yC;QAAQ9yC,GAAG+yC;MAAM,CAAA;AACxE,YAAM,EAAC57B,YAAYC,UAAUkB,aAAaC,aAAa3B,cAAAA,IAAiB,KAAK+L,SAAS;QACpF;QACA;QACA;QACA;QACA;SACCP,gBAAAA;AACH,YAAM4wB,WAAW,KAAK10C,QAAQya,UAAU,KAAKza,QAAQqc,eAAe;AACpE,YAAMZ,iBAAiBtS,eAAemP,eAAeQ,WAAWD,UAAAA;AAChE,YAAM87B,iBAAiBp7B,cAAcD,OAAOT,YAAYC,QAAAA,KAAaD,eAAeC;AACpF,YAAM87B,gBAAgBn5B,kBAAkB7C,OAAO+7B;AAC/C,YAAME,eAAeC,WAAWlwB,UAAU5K,cAAc06B,SAASz6B,cAAcy6B,OAAAA;AAE/E,aAAQE,iBAAiBC;IAC3B;IAEAnwB,eAAeZ,kBAA2B;AACxC,YAAM,EAACriB,GAAAA,IAAGC,GAAAA,IAAGmX,YAAYC,UAAUkB,aAAaC,YAAW,IAAI,KAAKoK,SAAS;QAC3E;QACA;QACA;QACA;QACA;QACA;SACCP,gBAAAA;AACH,YAAM,EAACrM,QAAAA,SAAQgD,QAAAA,IAAW,KAAKza;AAC/B,YAAM+0C,aAAal8B,aAAaC,YAAY;AAC5C,YAAMk8B,cAAch7B,cAAcC,cAAcQ,UAAUhD,WAAU;AACpE,aAAO;QACLhW,GAAGA,KAAIrI,KAAK4f,IAAI+7B,SAAaC,IAAAA;QAC7BtzC,GAAGA,KAAItI,KAAK8f,IAAI67B,SAAaC,IAAAA;MAC/B;IACF;IAEAzlB,gBAAgBzL,kBAA2B;AACzC,aAAO,KAAKY,eAAeZ,gBAAAA;IAC7B;IAEA3pB,KAAKoN,KAA+B;AAClC,YAAM,EAACvH,SAAAA,UAASsY,cAAa,IAAI;AACjC,YAAMb,WAAUzX,SAAQyX,UAAU,KAAK;AACvC,YAAMgD,WAAWza,SAAQya,WAAW,KAAK;AACzC,YAAM8F,WAAWvgB,SAAQugB;AACzB,WAAK6wB,cAAepxC,SAAQoc,gBAAgB,UAAW,OAAO;AAC9D,WAAK+3B,cAAc77B,gBAAgBM,MAAMxf,KAAKoE,MAAM8a,gBAAgBM,GAAAA,IAAO;AAE3E,UAAIN,kBAAkB,KAAK,KAAK0B,cAAc,KAAK,KAAKC,cAAc,GAAG;AACvE;;AAGF1S,UAAI82B,KAAI;AAER,YAAM0W,aAAa,KAAKl8B,aAAa,KAAKC,YAAY;AACtDvR,UAAI0tC,UAAU77C,KAAK4f,IAAI+7B,SAAAA,IAAat9B,SAAQre,KAAK8f,IAAI67B,SAAat9B,IAAAA,OAAAA;AAClE,YAAMy9B,MAAM,IAAI97C,KAAK8f,IAAI9f,KAAKC,IAAIwgB,IAAIvB,iBAAiB,CAAA,CAAA;AACvD,YAAM68B,eAAe19B,UAASy9B;AAE9B3tC,UAAI+V,YAAYtd,SAAQud;AACxBhW,UAAIiW,cAAcxd,SAAQyd;AAE1By2B,cAAQ3sC,KAAK,MAAM4tC,cAAc16B,SAAS8F,QAAAA;AAC1C4e,iBAAW53B,KAAK,MAAM4tC,cAAc16B,SAAS8F,QAAAA;AAE7ChZ,UAAIg3B,QAAO;IACb;EACF;AAtHE,gBAFmBgW,YAEZnwC,MAAK;AAEZ,gBAJmBmwC,YAIZl1C,YAAW;IAChB+c,aAAa;IACbqB,aAAa;IACb6e,YAAY,CAAA;IACZE,kBAAkB;IAClB4X,iBAAiB97C;IACjBs5C,cAAc;IACdv1B,aAAa;IACb5E,QAAQ;IACRgD,SAAS;IACTnB,OAAOhhB;IACPioB,UAAU;;AAGZ,gBAlBmBg0B,YAkBZ5kB,iBAAgB;IACrBpS,iBAAiB;;AAGnB,gBAtBmBg3B,YAsBZ73B,eAAc;IACnBC,aAAa;IACbC,YAAY,CAACvG,UAASA,UAAS;;ACnRnC,WAAS++B,SAAS7tC,KAAKvH,UAASod,QAAQpd,UAAS;AAC/CuH,QAAI8tC,UAAUlsC,eAAeiU,MAAMk4B,gBAAgBt1C,SAAQs1C,cAAc;AACzE/tC,QAAIq3B,YAAYz1B,eAAeiU,MAAMkf,YAAYt8B,SAAQs8B,UAAU,CAAA;AACnE/0B,QAAIs3B,iBAAiB11B,eAAeiU,MAAMof,kBAAkBx8B,SAAQw8B,gBAAgB;AACpFj1B,QAAI+sC,WAAWnrC,eAAeiU,MAAMg3B,iBAAiBp0C,SAAQo0C,eAAe;AAC5E7sC,QAAIoW,YAAYxU,eAAeiU,MAAMf,aAAarc,SAAQqc,WAAW;AACrE9U,QAAIiW,cAAcrU,eAAeiU,MAAMK,aAAazd,SAAQyd,WAAW;EACzE;AAEA,WAASuhB,OAAOz3B,KAAKguC,UAAUz4C,QAAQ;AACrCyK,QAAIy3B,OAAOliC,OAAO2E,GAAG3E,OAAO4E,CAAC;EAC/B;AAKA,WAAS8zC,cAAcx1C,UAAS;AAC9B,QAAIA,SAAQy1C,SAAS;AACnB,aAAOC;;AAGT,QAAI11C,SAAQ21C,WAAW31C,SAAQ41C,2BAA2B,YAAY;AACpE,aAAOC;;AAGT,WAAO7W;EACT;AAEA,WAAS8W,SAAS/9B,QAAQ0G,SAAS8H,UAAS,CAAA,GAAI;AAC9C,UAAMjb,QAAQyM,OAAO9d;AACrB,UAAM,EAACX,OAAOy8C,cAAc,GAAG10C,KAAK20C,YAAY1qC,QAAQ,EAAC,IAAIib;AAC7D,UAAM,EAACjtB,OAAO28C,cAAc50C,KAAK60C,WAAAA,IAAcz3B;AAC/C,UAAMnlB,SAAQF,KAAKoC,IAAIu6C,aAAaE,YAAAA;AACpC,UAAM50C,OAAMjI,KAAKC,IAAI28C,WAAWE,UAAAA;AAChC,UAAMC,UAAUJ,cAAcE,gBAAgBD,YAAYC,gBAAgBF,cAAcG,cAAcF,YAAYE;AAElH,WAAO;MACL5qC;MACAhS,OAAAA;MACAqE,MAAM8gB,QAAQ9gB;MACd8E,MAAMpB,OAAM/H,UAAS,CAAC68C,UAAU7qC,QAAQjK,OAAM/H,SAAQ+H,OAAM/H;IAC9D;EACF;AAiBA,WAAS88C,YAAY7uC,KAAK0W,MAAMQ,SAAS8H,SAAQ;AAC/C,UAAM,EAACxO,QAAQ/X,SAAAA,SAAAA,IAAWie;AAC1B,UAAM,EAAC3S,OAAOhS,OAAAA,QAAOqE,MAAM8E,KAAAA,IAAQqzC,SAAS/9B,QAAQ0G,SAAS8H,OAAAA;AAC7D,UAAM8vB,aAAab,cAAcx1C,QAAAA;AAEjC,QAAI,EAACiQ,MAAAA,QAAO,MAAM7O,QAAO,IAAImlB,WAAU,CAAA;AACvC,QAAIrsB,IAAG8d,QAAOvM;AAEd,SAAKvR,KAAI,GAAGA,MAAKuI,MAAM,EAAEvI,IAAG;AAC1B8d,MAAAA,SAAQD,QAAQze,UAAS8H,UAAUqB,OAAOvI,KAAIA,OAAMoR,KAAM;AAE1D,UAAI0M,OAAMG,MAAM;AAEd;MACF,WAAWlI,OAAM;AACf1I,YAAIw3B,OAAO/mB,OAAMvW,GAAGuW,OAAMtW,CAAC;AAC3BuO,QAAAA,QAAO;aACF;AACLomC,mBAAW9uC,KAAKkE,OAAMuM,QAAO5W,SAASpB,SAAQy1C,OAAO;;AAGvDhqC,MAAAA,QAAOuM;IACT;AAEA,QAAIra,MAAM;AACRqa,MAAAA,SAAQD,QAAQze,UAAS8H,UAAUqB,OAAO,MAAM6I,KAAM;AACtD+qC,iBAAW9uC,KAAKkE,OAAMuM,QAAO5W,SAASpB,SAAQy1C,OAAO;;AAGvD,WAAO,CAAC,CAAC93C;EACX;AAiBA,WAAS24C,gBAAgB/uC,KAAK0W,MAAMQ,SAAS8H,SAAQ;AACnD,UAAMxO,SAASkG,KAAKlG;AACpB,UAAM,EAACzM,OAAOhS,OAAAA,QAAOmJ,KAAAA,IAAQqzC,SAAS/9B,QAAQ0G,SAAS8H,OAAAA;AACvD,UAAM,EAACtW,MAAAA,QAAO,MAAM7O,QAAO,IAAImlB,WAAU,CAAA;AACzC,QAAIgwB,OAAO;AACX,QAAIC,SAAS;AACb,QAAIt8C,IAAG8d,QAAOy+B,OAAO38B,MAAMJ,MAAMg9B;AAEjC,UAAMC,aAAa,CAACj0C,YAAWpJ,UAAS8H,UAAUqB,OAAOC,SAAQA,WAAU4I;AAC3E,UAAMsrC,QAAQ,MAAM;AAClB,UAAI98B,SAASJ,MAAM;AAEjBnS,YAAIy3B,OAAOuX,MAAM78B,IAAAA;AACjBnS,YAAIy3B,OAAOuX,MAAMz8B,IAAAA;AAGjBvS,YAAIy3B,OAAOuX,MAAMG,KAAAA;;IAErB;AAEA,QAAIzmC,OAAM;AACR+H,MAAAA,SAAQD,OAAO4+B,WAAW,CAAG,CAAA;AAC7BpvC,UAAIw3B,OAAO/mB,OAAMvW,GAAGuW,OAAMtW,CAAC;;AAG7B,SAAKxH,KAAI,GAAGA,MAAKuI,MAAM,EAAEvI,IAAG;AAC1B8d,MAAAA,SAAQD,OAAO4+B,WAAWz8C,EAAG,CAAA;AAE7B,UAAI8d,OAAMG,MAAM;AAEd;;AAGF,YAAM1W,KAAIuW,OAAMvW;AAChB,YAAMC,KAAIsW,OAAMtW;AAChB,YAAMm1C,SAASp1C,KAAI;AAEnB,UAAIo1C,WAAWJ,OAAO;AAEpB,YAAI/0C,KAAIoY,MAAM;AACZA,iBAAOpY;mBACEA,KAAIgY,MAAM;AACnBA,iBAAOhY;;AAGT60C,gBAAQC,SAASD,OAAO90C,MAAK,EAAE+0C;aAC1B;AACLI,cAAAA;AAGArvC,YAAIy3B,OAAOv9B,IAAGC,EAAAA;AAEd+0C,gBAAQI;AACRL,iBAAS;AACT18B,eAAOJ,OAAOhY;;AAGhBg1C,cAAQh1C;IACV;AACAk1C,UAAAA;EACF;AAOA,WAASE,kBAAkB74B,MAAM;AAC/B,UAAM9c,OAAO8c,KAAKje;AAClB,UAAMs8B,aAAan7B,KAAKm7B,cAAcn7B,KAAKm7B,WAAWriC;AACtD,UAAM88C,cAAc,CAAC94B,KAAKM,cAAc,CAACN,KAAKvgB,SAAS,CAACyD,KAAKw0C,WAAWx0C,KAAKy0C,2BAA2B,cAAc,CAACz0C,KAAKs0C,WAAW,CAACnZ;AACxI,WAAOya,cAAcT,kBAAkBF;EACzC;AAKA,WAASY,wBAAwBh3C,UAAS;AACxC,QAAIA,SAAQy1C,SAAS;AACnB,aAAOwB;;AAGT,QAAIj3C,SAAQ21C,WAAW31C,SAAQ41C,2BAA2B,YAAY;AACpE,aAAOsB;;AAGT,WAAOC;EACT;AAEA,WAASC,oBAAoB7vC,KAAK0W,MAAM3kB,QAAOgS,OAAO;AACpD,QAAI+rC,OAAOp5B,KAAKq5B;AAChB,QAAI,CAACD,MAAM;AACTA,aAAOp5B,KAAKq5B,QAAQ,IAAIC,OAAAA;AACxB,UAAIt5B,KAAKo5B,KAAKA,MAAM/9C,QAAOgS,KAAQ,GAAA;AACjC+rC,aAAK/F,UAAS;;;AAGlB8D,aAAS7tC,KAAK0W,KAAKje,OAAO;AAC1BuH,QAAI03B,OAAOoY,IAAAA;EACb;AAEA,WAASG,iBAAiBjwC,KAAK0W,MAAM3kB,QAAOgS,OAAO;AACjD,UAAM,EAACmsC,UAAUz3C,SAAAA,SAAAA,IAAWie;AAC5B,UAAMy5B,gBAAgBZ,kBAAkB74B,IAAAA;AAExC,eAAWQ,WAAWg5B,UAAU;AAC9BrC,eAAS7tC,KAAKvH,UAASye,QAAQrB,KAAK;AACpC7V,UAAIu3B,UAAS;AACb,UAAI4Y,cAAcnwC,KAAK0W,MAAMQ,SAAS;QAACnlB,OAAAA;QAAO+H,KAAK/H,SAAQgS,QAAQ;OAAK,GAAA;AACtE/D,YAAI+pC,UAAS;;AAEf/pC,UAAI03B,OAAM;IACZ;EACF;AAEA,MAAM0Y,YAAY,OAAOJ,WAAW;AAEpC,WAASp9C,KAAKoN,KAAK0W,MAAM3kB,QAAOgS,OAAO;AACrC,QAAIqsC,aAAa,CAAC15B,KAAKje,QAAQye,SAAS;AACtC24B,0BAAoB7vC,KAAK0W,MAAM3kB,QAAOgS,KAAAA;WACjC;AACLksC,uBAAiBjwC,KAAK0W,MAAM3kB,QAAOgS,KAAAA;;EAEvC;AAEe,MAAMssC,cAAN,cAA0BtoB,SAAAA;IAoCvCt3B,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAK6hB,WAAW;AAChB,WAAK1e,UAAU1H;AACf,WAAKwG,SAASxG;AACd,WAAKoF,QAAQpF;AACb,WAAKqoB,YAAYroB;AACjB,WAAKg/C,QAAQh/C;AACb,WAAKu/C,UAAUv/C;AACf,WAAKw/C,YAAYx/C;AACjB,WAAKimB,aAAa;AAClB,WAAKw5B,iBAAiB;AACtB,WAAKz5B,gBAAgBhmB;AAErB,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEAwiB,oBAAoB7R,WAAWhE,WAAW;AACxC,YAAMxJ,WAAU,KAAKA;AACrB,WAAKA,SAAQ21C,WAAW31C,SAAQ41C,2BAA2B,eAAe,CAAC51C,SAAQy1C,WAAW,CAAC,KAAKsC,gBAAgB;AAClH,cAAMp6C,OAAOqC,SAAQ2e,WAAW,KAAKjhB,QAAQ,KAAKijB;AAClDq3B,mCAA2B,KAAKH,SAAS73C,UAASwN,WAAW7P,MAAM6L,SAAAA;AACnE,aAAKuuC,iBAAiB;;IAE1B;IAEA,IAAIhgC,OAAOA,QAAQ;AACjB,WAAK8/B,UAAU9/B;AACf,aAAO,KAAK+/B;AACZ,aAAO,KAAKR;AACZ,WAAKS,iBAAiB;IACxB;IAEA,IAAIhgC,SAAS;AACX,aAAO,KAAK8/B;IACd;IAEA,IAAIJ,WAAW;AACb,aAAO,KAAKK,cAAc,KAAKA,YAAYG,iBAAiB,MAAM,KAAKj4C,QAAQye,OAAO;IACxF;IAMA8R,QAAQ;AACN,YAAMknB,WAAW,KAAKA;AACtB,YAAM1/B,SAAS,KAAKA;AACpB,aAAO0/B,SAASx9C,UAAU8d,OAAO0/B,SAAS,CAAA,EAAGn+C,KAAK;IACpD;IAMAoc,OAAO;AACL,YAAM+hC,WAAW,KAAKA;AACtB,YAAM1/B,SAAS,KAAKA;AACpB,YAAMzM,QAAQmsC,SAASx9C;AACvB,aAAOqR,SAASyM,OAAO0/B,SAASnsC,QAAQ,CAAA,EAAGjK,GAAG;IAChD;IASA62C,YAAYlgC,QAAOkpB,UAAU;AAC3B,YAAMlhC,WAAU,KAAKA;AACrB,YAAMU,QAAQsX,OAAMkpB,QAAS;AAC7B,YAAMnpB,SAAS,KAAKA;AACpB,YAAM0/B,WAAWU,eAAe,MAAM;QAACjX;QAAU5nC,OAAOoH;QAAOW,KAAKX;MAAK,CAAA;AAEzE,UAAI,CAAC+2C,SAASx9C,QAAQ;AACpB;;AAGF,YAAMqoB,SAAS,CAAA;AACf,YAAM81B,eAAepB,wBAAwBh3C,QAAAA;AAC7C,UAAI9F,IAAGuI;AACP,WAAKvI,KAAI,GAAGuI,OAAOg1C,SAASx9C,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAM,EAACZ,OAAAA,QAAO+H,KAAAA,KAAAA,IAAOo2C,SAASv9C,EAAE;AAChC,cAAMwkC,KAAK3mB,OAAOze,MAAM;AACxB,cAAMqlC,MAAK5mB,OAAO1W,IAAI;AACtB,YAAIq9B,OAAOC,KAAI;AACbrc,iBAAOpnB,KAAKwjC,EAAAA;AACZ;;AAEF,cAAM18B,KAAI5I,KAAKwY,KAAKlR,QAAQg+B,GAAGwC,QAAAA,MAAcvC,IAAGuC,QAAAA,IAAYxC,GAAGwC,QAAAA,EAAQ;AACvE,cAAMmX,eAAeD,aAAa1Z,IAAIC,KAAI38B,IAAGhC,SAAQy1C,OAAO;AAC5D4C,qBAAanX,QAAAA,IAAYlpB,OAAMkpB,QAAS;AACxC5e,eAAOpnB,KAAKm9C,YAAAA;MACd;AACA,aAAO/1B,OAAOroB,WAAW,IAAIqoB,OAAO,CAAA,IAAKA;IAC3C;IAgBA8zB,YAAY7uC,KAAKkX,SAAS8H,SAAQ;AAChC,YAAMmxB,gBAAgBZ,kBAAkB,IAAI;AAC5C,aAAOY,cAAcnwC,KAAK,MAAMkX,SAAS8H,OAAAA;IAC3C;IASA8wB,KAAK9vC,KAAKjO,QAAOgS,OAAO;AACtB,YAAMmsC,WAAW,KAAKA;AACtB,YAAMC,gBAAgBZ,kBAAkB,IAAI;AAC5C,UAAIn5C,OAAO,KAAKD;AAEhBpE,MAAAA,SAAQA,UAAS;AACjBgS,cAAQA,SAAU,KAAKyM,OAAO9d,SAASX;AAEvC,iBAAWmlB,WAAWg5B,UAAU;AAC9B95C,gBAAQ+5C,cAAcnwC,KAAK,MAAMkX,SAAS;UAACnlB,OAAAA;UAAO+H,KAAK/H,SAAQgS,QAAQ;QAAC,CAAA;MAC1E;AACA,aAAO,CAAC,CAAC3N;IACX;IASAxD,KAAKoN,KAAKiG,WAAWlU,QAAOgS,OAAO;AACjC,YAAMtL,WAAU,KAAKA,WAAW,CAAA;AAChC,YAAM+X,SAAS,KAAKA,UAAU,CAAA;AAE9B,UAAIA,OAAO9d,UAAU+F,SAAQqc,aAAa;AACxC9U,YAAI82B,KAAI;AAERlkC,aAAKoN,KAAK,MAAMjO,QAAOgS,KAAAA;AAEvB/D,YAAIg3B,QAAO;;AAGb,UAAI,KAAK7f,UAAU;AAEjB,aAAKq5B,iBAAiB;AACtB,aAAKT,QAAQh/C;;IAEjB;EACF;AAxME,gBAFmBs/C,aAEZxzC,MAAK;AAKZ,gBAPmBwzC,aAOZv4C,YAAW;IAChBi2C,gBAAgB;IAChBhZ,YAAY,CAAA;IACZE,kBAAkB;IAClB4X,iBAAiB;IACjB/3B,aAAa;IACbi8B,iBAAiB;IACjB1C,wBAAwB;IACxBltC,MAAM;IACNiW,UAAU;IACV82B,SAAS;IACTE,SAAS;;AAMX,gBAxBmBiC,aAwBZjoB,iBAAgB;IACrBpS,iBAAiB;IACjBE,aAAa;;AAIf,gBA9BmBm6B,aA8BZl7B,eAAc;IACnBC,aAAa;IACbC,YAAY,CAACvG,UAASA,UAAS,gBAAgBA,UAAS;;ACxQ5D,WAAS8N,UAAQtB,IAAkB0C,KAAa5hB,MAAiBmgB,kBAA4B;AAC3F,UAAM9jB,WAAU6iB,GAAG7iB;AACnB,UAAM,EAAC,CAAC2D,IAAK,GAAEjD,MAAAA,IAASmiB,GAAGwB,SAAS;MAAC1gB;OAAOmgB,gBAAAA;AAE5C,WAAQ1qB,KAAKwY,IAAI2T,MAAM7kB,KAAAA,IAASV,SAAQ8X,SAAS9X,SAAQu4C;EAC3D;AAIe,MAAMC,eAAN,cAA2BlpB,SAAAA;IAIxCjqB;IACA8S;IACAzc;IAuBA1D,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAK+M,SAAS/M;AACd,WAAK6f,OAAO7f;AACZ,WAAKoD,OAAOpD;AAEZ,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEAsnB,QAAQs0B,QAAgBC,QAAgB50B,kBAA4B;AAClE,YAAM9jB,WAAU,KAAKA;AACrB,YAAM,EAACyB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAK2iB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAAS1qB,KAAKwqB,IAAI60B,SAASh3C,IAAG,CAAA,IAAKrI,KAAKwqB,IAAI80B,SAASh3C,IAAG,CAAA,IAAMtI,KAAKwqB,IAAI5jB,SAAQu4C,YAAYv4C,SAAQ8X,QAAQ,CAAA;IAC7G;IAEA6gC,SAASF,QAAgB30B,kBAA4B;AACnD,aAAOK,UAAQ,MAAMs0B,QAAQ,KAAK30B,gBAAAA;IACpC;IAEA80B,SAASF,QAAgB50B,kBAA4B;AACnD,aAAOK,UAAQ,MAAMu0B,QAAQ,KAAK50B,gBAAAA;IACpC;IAEAY,eAAeZ,kBAA4B;AACzC,YAAM,EAACriB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAK2iB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAAO;QAACriB,GAAAA;QAAGC,GAAAA;MAAC;IACd;IAEAf,KAAKX,UAAqD;AACxDA,MAAAA,WAAUA,YAAW,KAAKA,WAAW,CAAA;AACrC,UAAI8X,SAAS9X,SAAQ8X,UAAU;AAC/BA,eAAS1e,KAAKoC,IAAIsc,QAAQA,UAAU9X,SAAQ64C,eAAe,CAAA;AAC3D,YAAMx8B,cAAcvE,UAAU9X,SAAQqc,eAAe;AACrD,cAAQvE,SAASuE,eAAe;IAClC;IAEAliB,KAAKoN,KAA+BgG,MAAiB;AACnD,YAAMvN,WAAU,KAAKA;AAErB,UAAI,KAAKmY,QAAQnY,SAAQ8X,SAAS,OAAO,CAACoM,eAAe,MAAM3W,MAAM,KAAK5M,KAAKX,QAAAA,IAAW,CAAI,GAAA;AAC5F;;AAGFuH,UAAIiW,cAAcxd,SAAQyd;AAC1BlW,UAAIoW,YAAY3d,SAAQqc;AACxB9U,UAAI+V,YAAYtd,SAAQud;AACxBu7B,gBAAUvxC,KAAKvH,UAAS,KAAKyB,GAAG,KAAKC,CAAC;IACxC;IAEAohB,WAAW;AACT,YAAM9iB,WAAU,KAAKA,WAAW,CAAA;AAEhC,aAAOA,SAAQ8X,SAAS9X,SAAQu4C;IAClC;EACF;AArFE,gBAFmBC,cAEZp0C,MAAK;AASZ;;;gBAXmBo0C,cAWZn5C,YAAW;IAChBgd,aAAa;IACbk8B,WAAW;IACXj8B,kBAAkB;IAClBu8B,aAAa;IACb37B,YAAY;IACZpF,QAAQ;IACRO,UAAU;;AAMZ;;;gBAxBmBmgC,cAwBZ7oB,iBAAgB;IACrBpS,iBAAiB;IACjBE,aAAa;;AC/BjB,WAASs7B,aAAaC,KAAKl1B,kBAAkB;AAC3C,UAAM,EAACriB,GAAAA,IAAGC,GAAAA,IAAGoS,MAAM0B,OAAAA,QAAOD,QAAAA,QAAAA,IAAmCyjC,IAAI30B,SAAS;MAAC;MAAK;MAAK;MAAQ;MAAS;OAAWP,gBAAAA;AAEjH,QAAIhiB,OAAMF,QAAOD,MAAKE,SAAQo3C;AAE9B,QAAID,IAAInlC,YAAY;AAClBolC,aAAO1jC,UAAS;AAChBzT,MAAAA,QAAO1I,KAAKC,IAAIoI,IAAGqS,IAAAA;AACnBlS,MAAAA,SAAQxI,KAAKoC,IAAIiG,IAAGqS,IAAAA;AACpBnS,MAAAA,OAAMD,KAAIu3C;AACVp3C,MAAAA,UAASH,KAAIu3C;WACR;AACLA,aAAOzjC,SAAQ;AACf1T,MAAAA,QAAOL,KAAIw3C;AACXr3C,MAAAA,SAAQH,KAAIw3C;AACZt3C,MAAAA,OAAMvI,KAAKC,IAAIqI,IAAGoS,IAAAA;AAClBjS,MAAAA,UAASzI,KAAKoC,IAAIkG,IAAGoS,IAAAA;;AAGvB,WAAO;MAAChS,MAAAA;MAAMH,KAAAA;MAAKC,OAAAA;MAAOC,QAAAA;IAAM;EAClC;AAEA,WAASq3C,YAAY/gC,OAAMzX,OAAOrH,MAAKmC,MAAK;AAC1C,WAAO2c,QAAO,IAAIogB,YAAY73B,OAAOrH,MAAKmC,IAAI;EAChD;AAEA,WAAS29C,iBAAiBH,KAAKI,MAAMC,MAAM;AACzC,UAAM34C,QAAQs4C,IAAIh5C,QAAQqc;AAC1B,UAAMlE,QAAO6gC,IAAI/kC;AACjB,UAAM09B,KAAI2H,OAAO54C,KAAAA;AAEjB,WAAO;MACLsB,GAAGk3C,YAAY/gC,MAAKxW,KAAKgwC,GAAEhwC,KAAK,GAAG03C,IAAAA;MACnCp3C,GAAGi3C,YAAY/gC,MAAKvW,OAAO+vC,GAAE/vC,OAAO,GAAGw3C,IAAAA;MACvCl3C,GAAGg3C,YAAY/gC,MAAKtW,QAAQ8vC,GAAE9vC,QAAQ,GAAGw3C,IAAAA;MACzCl3C,GAAG+2C,YAAY/gC,MAAKrW,MAAM6vC,GAAE7vC,MAAM,GAAGs3C,IAAAA;IACvC;EACF;AAEA,WAAS3H,kBAAkBuH,KAAKI,MAAMC,MAAM;AAC1C,UAAM,EAACnlC,mBAAkB,IAAI8kC,IAAI30B,SAAS;MAAC;IAAqB,CAAA;AAChE,UAAM3jB,QAAQs4C,IAAIh5C,QAAQ4xC;AAC1B,UAAMD,KAAI4H,cAAc74C,KAAAA;AACxB,UAAM84C,OAAOpgD,KAAKC,IAAI+/C,MAAMC,IAAAA;AAC5B,UAAMlhC,QAAO6gC,IAAI/kC;AAIjB,UAAMwlC,eAAevlC,sBAAsBjV,SAASyB,KAAAA;AAEpD,WAAO;MACLg5C,SAASR,YAAY,CAACO,gBAAgBthC,MAAKxW,OAAOwW,MAAKrW,MAAM6vC,GAAE+H,SAAS,GAAGF,IAAAA;MAC3EG,UAAUT,YAAY,CAACO,gBAAgBthC,MAAKxW,OAAOwW,MAAKvW,OAAO+vC,GAAEgI,UAAU,GAAGH,IAAAA;MAC9EI,YAAYV,YAAY,CAACO,gBAAgBthC,MAAKtW,UAAUsW,MAAKrW,MAAM6vC,GAAEiI,YAAY,GAAGJ,IAAAA;MACpFK,aAAaX,YAAY,CAACO,gBAAgBthC,MAAKtW,UAAUsW,MAAKvW,OAAO+vC,GAAEkI,aAAa,GAAGL,IAAAA;IACzF;EACF;AAEA,WAASM,cAAcd,KAAK;AAC1B,UAAMe,SAAShB,aAAaC,GAAAA;AAC5B,UAAMxjC,SAAQukC,OAAOn4C,QAAQm4C,OAAOj4C;AACpC,UAAMyT,UAASwkC,OAAOl4C,SAASk4C,OAAOp4C;AACtC,UAAMud,SAASi6B,iBAAiBH,KAAKxjC,SAAQ,GAAGD,UAAS,CAAA;AACzD,UAAMuC,SAAS25B,kBAAkBuH,KAAKxjC,SAAQ,GAAGD,UAAS,CAAA;AAE1D,WAAO;MACLykC,OAAO;QACLv4C,GAAGs4C,OAAOj4C;QACVJ,GAAGq4C,OAAOp4C;QACVomB,GAAGvS;QACHyS,GAAG1S;QACHuC;MACF;MACAu8B,OAAO;QACL5yC,GAAGs4C,OAAOj4C,OAAOod,OAAO/c;QACxBT,GAAGq4C,OAAOp4C,MAAMud,OAAOld;QACvB+lB,GAAGvS,SAAQ0J,OAAO/c,IAAI+c,OAAOjd;QAC7BgmB,GAAG1S,UAAS2J,OAAOld,IAAIkd,OAAOhd;QAC9B4V,QAAQ;UACN4hC,SAAStgD,KAAKoC,IAAI,GAAGsc,OAAO4hC,UAAUtgD,KAAKoC,IAAI0jB,OAAOld,GAAGkd,OAAO/c,CAAC,CAAA;UACjEw3C,UAAUvgD,KAAKoC,IAAI,GAAGsc,OAAO6hC,WAAWvgD,KAAKoC,IAAI0jB,OAAOld,GAAGkd,OAAOjd,CAAC,CAAA;UACnE23C,YAAYxgD,KAAKoC,IAAI,GAAGsc,OAAO8hC,aAAaxgD,KAAKoC,IAAI0jB,OAAOhd,GAAGgd,OAAO/c,CAAC,CAAA;UACvE03C,aAAazgD,KAAKoC,IAAI,GAAGsc,OAAO+hC,cAAczgD,KAAKoC,IAAI0jB,OAAOhd,GAAGgd,OAAOjd,CAAC,CAAA;QAC3E;MACF;IACF;EACF;AAEA,WAASkiB,QAAQ60B,KAAKv3C,IAAGC,IAAGoiB,kBAAkB;AAC5C,UAAMm2B,QAAQx4C,OAAM;AACpB,UAAMy4C,QAAQx4C,OAAM;AACpB,UAAMy4C,WAAWF,SAASC;AAC1B,UAAMH,SAASf,OAAO,CAACmB,YAAYpB,aAAaC,KAAKl1B,gBAAAA;AAErD,WAAOi2B,WACHE,SAASnF,WAAWrzC,IAAGs4C,OAAOj4C,MAAMi4C,OAAOn4C,KAAK,OAChDs4C,SAASpF,WAAWpzC,IAAGq4C,OAAOp4C,KAAKo4C,OAAOl4C,MAAM;EACtD;AAEA,WAASu4C,UAAUtiC,QAAQ;AACzB,WAAOA,OAAO4hC,WAAW5hC,OAAO6hC,YAAY7hC,OAAO8hC,cAAc9hC,OAAO+hC;EAC1E;AAOA,WAASQ,kBAAkB9yC,KAAK+yC,MAAM;AACpC/yC,QAAI+yC,KAAKA,KAAK74C,GAAG64C,KAAK54C,GAAG44C,KAAKvyB,GAAGuyB,KAAKryB,CAAC;EACzC;AAEA,WAASsyB,YAAYD,MAAME,QAAQC,UAAU,CAAA,GAAI;AAC/C,UAAMh5C,KAAI64C,KAAK74C,MAAMg5C,QAAQh5C,IAAI,CAAC+4C,SAAS;AAC3C,UAAM94C,KAAI44C,KAAK54C,MAAM+4C,QAAQ/4C,IAAI,CAAC84C,SAAS;AAC3C,UAAMzyB,MAAKuyB,KAAK74C,IAAI64C,KAAKvyB,MAAM0yB,QAAQh5C,IAAIg5C,QAAQ1yB,IAAIyyB,SAAS,KAAK/4C;AACrE,UAAMwmB,MAAKqyB,KAAK54C,IAAI44C,KAAKryB,MAAMwyB,QAAQ/4C,IAAI+4C,QAAQxyB,IAAIuyB,SAAS,KAAK94C;AACrE,WAAO;MACLD,GAAG64C,KAAK74C,IAAIA;MACZC,GAAG44C,KAAK54C,IAAIA;MACZqmB,GAAGuyB,KAAKvyB,IAAIA;MACZE,GAAGqyB,KAAKryB,IAAIA;MACZnQ,QAAQwiC,KAAKxiC;IACf;EACF;AAEe,MAAM4iC,aAAN,cAAyBprB,SAAAA;IAuBtCt3B,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAKub,aAAavb;AAClB,WAAKwb,OAAOxb;AACZ,WAAKkd,QAAQld;AACb,WAAKid,SAASjd;AACd,WAAKqc,gBAAgBrc;AAErB,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEA1C,KAAKoN,KAAK;AACR,YAAM,EAACoN,eAAe3U,SAAS,EAACyd,aAAaF,gBAAAA,EAAgB,IAAI;AACjE,YAAM,EAAC82B,OAAO2F,MAAAA,IAASF,cAAc,IAAI;AACzC,YAAMa,cAAcP,UAAUJ,MAAMliC,MAAM,IAAI8iC,qBAAqBP;AAEnE9yC,UAAI82B,KAAI;AAER,UAAI2b,MAAMjyB,MAAMssB,MAAMtsB,KAAKiyB,MAAM/xB,MAAMosB,MAAMpsB,GAAG;AAC9C1gB,YAAIu3B,UAAS;AACb6b,oBAAYpzC,KAAKgzC,YAAYP,OAAOrlC,eAAe0/B,KAAAA,CAAAA;AACnD9sC,YAAI8F,KAAI;AACRstC,oBAAYpzC,KAAKgzC,YAAYlG,OAAO,CAAC1/B,eAAeqlC,KAAAA,CAAAA;AACpDzyC,YAAI+V,YAAYG;AAChBlW,YAAImB,KAAK,SAAA;;AAGXnB,UAAIu3B,UAAS;AACb6b,kBAAYpzC,KAAKgzC,YAAYlG,OAAO1/B,aAAAA,CAAAA;AACpCpN,UAAI+V,YAAYC;AAChBhW,UAAImB,KAAI;AAERnB,UAAIg3B,QAAO;IACb;IAEApa,QAAQs0B,QAAQC,QAAQ50B,kBAAkB;AACxC,aAAOK,QAAQ,MAAMs0B,QAAQC,QAAQ50B,gBAAAA;IACvC;IAEA60B,SAASF,QAAQ30B,kBAAkB;AACjC,aAAOK,QAAQ,MAAMs0B,QAAQ,MAAM30B,gBAAAA;IACrC;IAEA80B,SAASF,QAAQ50B,kBAAkB;AACjC,aAAOK,QAAQ,MAAM,MAAMu0B,QAAQ50B,gBAAAA;IACrC;IAEAY,eAAeZ,kBAAkB;AAC/B,YAAM,EAACriB,GAAAA,IAAGC,GAAAA,IAAGoS,MAAMD,WAAU,IAA6B,KAAKwQ,SAAS;QAAC;QAAK;QAAK;QAAQ;SAAeP,gBAAAA;AAC1G,aAAO;QACLriB,GAAGoS,cAAcpS,KAAIqS,QAAQ,IAAIrS;QACjCC,GAAGmS,aAAanS,MAAKA,KAAIoS,QAAQ;MACnC;IACF;IAEAgP,SAASnf,MAAM;AACb,aAAOA,SAAS,MAAM,KAAK6R,QAAQ,IAAI,KAAKD,SAAS;IACvD;EACF;AAnFE,gBAFmBmlC,YAEZt2C,MAAK;AAKZ,gBAPmBs2C,YAOZr7C,YAAW;IAChB4U,eAAe;IACfoI,aAAa;IACbu1B,cAAc;IACdj9B,eAAe;IACfuI,YAAY5kB;;AAMd,gBAlBmBoiD,YAkBZ/qB,iBAAgB;IACrBpS,iBAAiB;IACjBE,aAAa;;;;;;;;;ACnJjB,MAAMo9B,gBAAgB;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;;EACD;AAGD,MAAMC,oBAAoCD,8BAAc19B,IAAI/gB,CAAAA,WAASA,OAAM2+C,QAAQ,QAAQ,OAASA,EAAAA,QAAQ,KAAK,QAAA,CAAA;AAEjH,WAASC,eAAe9gD,IAAW;AACjC,WAAO2gD,cAAc3gD,KAAI2gD,cAAc5gD,MAAM;EAC/C;AAEA,WAASghD,mBAAmB/gD,IAAW;AACrC,WAAO4gD,kBAAkB5gD,KAAI4gD,kBAAkB7gD,MAAM;EACvD;AAEA,WAASihD,uBAAuB50C,SAAuBpM,IAAW;AAChEoM,YAAQmX,cAAcu9B,eAAe9gD,EAAAA;AACrCoM,YAAQiX,kBAAkB09B,mBAAmB/gD,EAAAA;AAE7C,WAAO,EAAEA;EACX;AAEA,WAASihD,wBAAwB70C,SAAuBpM,IAAW;AACjEoM,YAAQiX,kBAAkBjX,QAAQhD,KAAK6Z,IAAI,MAAM69B,eAAe9gD,IAAAA,CAAAA;AAEhE,WAAOA;EACT;AAEA,WAASkhD,yBAAyB90C,SAAuBpM,IAAW;AAClEoM,YAAQiX,kBAAkBjX,QAAQhD,KAAK6Z,IAAI,MAAM89B,mBAAmB/gD,IAAAA,CAAAA;AAEpE,WAAOA;EACT;AAEA,WAASmhD,aAAa7iD,OAAc;AAClC,QAAI0B,KAAI;AAER,WAAO,CAACoM,SAAuBtD,iBAAyB;AACtD,YAAMoC,aAAa5M,MAAMwR,eAAehH,YAAAA,EAAcoC;AAEtD,UAAIA,sBAAsB2U,oBAAoB;AAC5C7f,QAAAA,KAAIihD,wBAAwB70C,SAASpM,EAAAA;iBAC5BkL,sBAAsBka,qBAAqB;AACpDplB,QAAAA,KAAIkhD,yBAAyB90C,SAASpM,EAAAA;MACxC,WAAWkL,YAAY;AACrBlL,QAAAA,KAAIghD,uBAAuB50C,SAASpM,EAAAA;;IAExC;EACF;AAEA,WAASohD,0BACP5+B,cACA;AACA,QAAI6+B;AAEJ,SAAKA,MAAK7+B,cAAa;AACrB,UAAIA,aAAY6+B,EAAAA,EAAG99B,eAAef,aAAY6+B,EAAAA,EAAGh+B,iBAAiB;AAChE,eAAO;;IAEX;AAEA,WAAO;EACT;AAEA,WAASi+B,yBACP9X,YACA;AACA,WAAOA,eAAeA,WAAWjmB,eAAeimB,WAAWnmB;EAC7D;AAEA,WAASk+B,mCAAmC;AAC1C,WAAOp8C,SAASoe,gBAAgB,qBAAqBpe,SAASke,oBAAoB;EACpF;AAEA,MAAA,gBAAe;IACbnZ,IAAI;IAEJ/E,UAAU;MACR+wB,SAAS;MACTsrB,eAAe;IACjB;IAEA7xB,aAAarxB,OAAcmjD,OAAO37C,UAA8B;AAC9D,UAAI,CAACA,SAAQowB,SAAS;AACpB;;AAGF,YAAM,EACJ9sB,MAAM,EAACyG,SAAAA,GACP/J,SAAS47C,aAAY,IACnBpjD,MAAMqG;AACV,YAAM,EAACyO,UAAAA,UAAQ,IAAIsuC;AAEnB,YAAMC,0BACJP,0BAA0BvxC,QAAAA,KAC1ByxC,yBAAyBI,YACxBtuC,KAAAA,aAAYguC,0BAA0BhuC,SACvCmuC,KAAAA,iCAAAA;AAEF,UAAI,CAACz7C,SAAQ07C,iBAAiBG,yBAAyB;AACrD;;AAGF,YAAMC,YAAYT,aAAa7iD,KAAAA;AAE/BuR,eAAS/Q,QAAQ8iD,SAAAA;IACnB;EACF;AC5HA,WAASC,eAAez4C,OAAMhK,QAAOgS,OAAOsb,gBAAgB5mB,UAAS;AASnE,UAAMg8C,UAAUh8C,SAAQg8C,WAAWp1B;AAEnC,QAAIo1B,WAAW1wC,OAAO;AACpB,aAAOhI,MAAKkf,MAAMlpB,QAAOA,SAAQgS,KAAAA;;AAGnC,UAAM2wC,YAAY,CAAA;AAElB,UAAMC,eAAe5wC,QAAQ,MAAM0wC,UAAU;AAC7C,QAAIG,eAAe;AACnB,UAAMC,WAAW9iD,SAAQgS,QAAQ;AAEjC,QAAIiG,KAAIjY;AACR,QAAIY,IAAGmiD,cAAcC,SAAS/uC,MAAMgvC;AAEpCN,cAAUE,cAAAA,IAAkB74C,MAAKiO,EAAE;AAEnC,SAAKrX,KAAI,GAAGA,KAAI8hD,UAAU,GAAG9hD,MAAK;AAChC,UAAIq8C,OAAO;AACX,UAAIiG,OAAO;AACX,UAAIr5B;AAGJ,YAAMs5B,gBAAgBrjD,KAAKoE,OAAOtD,KAAI,KAAKgiD,WAAAA,IAAe,IAAI5iD;AAC9D,YAAMojD,cAActjD,KAAKC,IAAID,KAAKoE,OAAOtD,KAAI,KAAKgiD,WAAAA,IAAe,GAAG5wC,KAAShS,IAAAA;AAC7E,YAAMqjD,iBAAiBD,cAAcD;AAErC,WAAKt5B,KAAIs5B,eAAet5B,KAAIu5B,aAAav5B,MAAK;AAC5CozB,gBAAQjzC,MAAK6f,EAAE,EAAC1hB;AAChB+6C,gBAAQl5C,MAAK6f,EAAE,EAACzhB;MAClB;AAEA60C,cAAQoG;AACRH,cAAQG;AAGR,YAAMC,YAAYxjD,KAAKoE,MAAMtD,KAAIgiD,WAAAA,IAAe,IAAI5iD;AACpD,YAAMujD,UAAUzjD,KAAKC,IAAID,KAAKoE,OAAOtD,KAAI,KAAKgiD,WAAAA,IAAe,GAAG5wC,KAAShS,IAAAA;AACzE,YAAM,EAACmI,GAAGq7C,SAASp7C,GAAGq7C,QAAAA,IAAWz5C,MAAKiO,EAAE;AAOxC+qC,gBAAU/uC,OAAO;AAEjB,WAAK4V,KAAIy5B,WAAWz5B,KAAI05B,SAAS15B,MAAK;AACpC5V,eAAO,MAAMnU,KAAKwY,KACfkrC,UAAUvG,SAASjzC,MAAK6f,EAAAA,EAAGzhB,IAAIq7C,YAC/BD,UAAUx5C,MAAK6f,EAAE,EAAC1hB,MAAM+6C,OAAOO,QAAM;AAGxC,YAAIxvC,OAAO+uC,SAAS;AAClBA,oBAAU/uC;AACV8uC,yBAAe/4C,MAAK6f,EAAE;AACtBo5B,kBAAQp5B;;MAEZ;AAEA84B,gBAAUE,cAAAA,IAAkBE;AAC5B9qC,MAAAA,KAAIgrC;IACN;AAGAN,cAAUE,cAAAA,IAAkB74C,MAAK84C,QAAS;AAE1C,WAAOH;EACT;AAEA,WAASe,iBAAiB15C,OAAMhK,QAAOgS,OAAOsb,gBAAgB;AAC5D,QAAI2vB,OAAO;AACX,QAAIC,SAAS;AACb,QAAIt8C,IAAG8d,QAAOvW,IAAGC,IAAG+0C,OAAOwG,UAAUC,UAAUC,YAAYrjC,MAAMJ;AACjE,UAAMuiC,YAAY,CAAA;AAClB,UAAMG,WAAW9iD,SAAQgS,QAAQ;AAEjC,UAAM8xC,OAAO95C,MAAKhK,MAAAA,EAAOmI;AACzB,UAAM47C,OAAO/5C,MAAK84C,QAAAA,EAAU36C;AAC5B,UAAM67C,MAAKD,OAAOD;AAElB,SAAKljD,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAO,EAAEpR,IAAG;AACtC8d,MAAAA,SAAQ1U,MAAKpJ,EAAE;AACfuH,MAAAA,MAAKuW,OAAMvW,IAAI27C,QAAQE,MAAK12B;AAC5BllB,MAAAA,KAAIsW,OAAMtW;AACV,YAAMm1C,SAASp1C,KAAI;AAEnB,UAAIo1C,WAAWJ,OAAO;AAEpB,YAAI/0C,KAAIoY,MAAM;AACZA,iBAAOpY;AACPu7C,qBAAW/iD;mBACFwH,KAAIgY,MAAM;AACnBA,iBAAOhY;AACPw7C,qBAAWhjD;;AAIbq8C,gBAAQC,SAASD,OAAOv+B,OAAMvW,KAAK,EAAE+0C;aAChC;AAEL,cAAM+G,YAAYrjD,KAAI;AAEtB,YAAI,CAACoY,cAAc2qC,QAAa,KAAA,CAAC3qC,cAAc4qC,QAAW,GAAA;AAKxD,gBAAMM,qBAAqBpkD,KAAKC,IAAI4jD,UAAUC,QAAAA;AAC9C,gBAAMO,qBAAqBrkD,KAAKoC,IAAIyhD,UAAUC,QAAAA;AAE9C,cAAIM,uBAAuBL,cAAcK,uBAAuBD,WAAW;AACzEtB,sBAAU/gD,KAAK;cACb,GAAGoI,MAAKk6C,kBAAmB;cAC3B/7C,GAAG80C;YACL,CAAA;;AAEF,cAAIkH,uBAAuBN,cAAcM,uBAAuBF,WAAW;AACzEtB,sBAAU/gD,KAAK;cACb,GAAGoI,MAAKm6C,kBAAmB;cAC3Bh8C,GAAG80C;YACL,CAAA;;;AAMJ,YAAIr8C,KAAI,KAAKqjD,cAAcJ,YAAY;AAErClB,oBAAU/gD,KAAKoI,MAAKi6C,SAAU,CAAA;;AAIhCtB,kBAAU/gD,KAAK8c,MAAAA;AACfy+B,gBAAQI;AACRL,iBAAS;AACT18B,eAAOJ,OAAOhY;AACdu7C,mBAAWC,WAAWC,aAAajjD;;IAEvC;AAEA,WAAO+hD;EACT;AAEA,WAASyB,sBAAsBp3C,SAAS;AACtC,QAAIA,QAAQiY,YAAY;AACtB,YAAMjb,QAAOgD,QAAQsB;AACrB,aAAOtB,QAAQiY;AACf,aAAOjY,QAAQsB;AACfzI,aAAOw+C,eAAer3C,SAAS,QAAQ;QACrCs3C,cAAc;QACdC,YAAY;QACZC,UAAU;QACVp9C,OAAO4C;MACT,CAAA;;EAEJ;AAEA,WAASy6C,mBAAmBvlD,OAAO;AACjCA,UAAM8K,KAAKyG,SAAS/Q,QAAQ,CAACsN,YAAY;AACvCo3C,4BAAsBp3C,OAAAA;IACxB,CAAA;EACF;AAEA,WAAS03C,0CAA0Cz6C,MAAMwU,QAAQ;AAC/D,UAAMkmC,aAAalmC,OAAO9d;AAE1B,QAAIX,SAAQ;AACZ,QAAIgS;AAEJ,UAAM,EAAC9H,OAAM,IAAID;AACjB,UAAM,EAAClK,KAAAA,MAAKmC,KAAAA,MAAK8I,YAAYC,WAAU,IAAIf,OAAOa,cAAa;AAE/D,QAAIC,YAAY;AACdhL,MAAAA,SAAQi/B,YAAYlW,aAAatK,QAAQvU,OAAOG,MAAMtK,IAAKopB,EAAAA,IAAI,GAAGw7B,aAAa,CAAA;;AAEjF,QAAI15C,YAAY;AACd+G,cAAQitB,YAAYlW,aAAatK,QAAQvU,OAAOG,MAAMnI,IAAAA,EAAKonB,KAAK,GAAGtpB,QAAO2kD,UAAc3kD,IAAAA;WACnF;AACLgS,cAAQ2yC,aAAa3kD;;AAGvB,WAAO;MAACA,OAAAA;MAAOgS;IAAK;EACtB;AAEA,MAAA,oBAAe;IACblH,IAAI;IAEJ/E,UAAU;MACR6+C,WAAW;MACX9tB,SAAS;IACX;IAEA+tB,sBAAsB,CAAC3lD,OAAO+X,MAAMvQ,aAAY;AAC9C,UAAI,CAACA,SAAQowB,SAAS;AAEpB2tB,2BAAmBvlD,KAAAA;AACnB;;AAIF,YAAMouB,iBAAiBpuB,MAAMgd;AAE7Bhd,YAAM8K,KAAKyG,SAAS/Q,QAAQ,CAACsN,SAAStD,iBAAiB;AACrD,cAAM,EAAC4E,OAAO4B,UAAAA,IAAalD;AAC3B,cAAM/C,OAAO/K,MAAMwR,eAAehH,YAAAA;AAClC,cAAMM,QAAOsE,SAAStB,QAAQhD;AAE9B,YAAIrG,QAAQ;UAACuM;UAAWhR,MAAMwH,QAAQwJ;QAAU,CAAA,MAAM,KAAK;AAEzD;;AAGF,YAAI,CAACjG,KAAK6B,WAAW8C,oBAAoB;AAEvC;;AAGF,cAAMk2C,QAAQ5lD,MAAMwN,OAAOzC,KAAK2F,OAAO;AACvC,YAAIk1C,MAAMzlD,SAAS,YAAYylD,MAAMzlD,SAAS,QAAQ;AAEpD;;AAGF,YAAIH,MAAMwH,QAAQoL,SAAS;AAEzB;;AAGF,YAAI,EAAC9R,OAAAA,QAAOgS,MAAAA,IAAS0yC,0CAA0Cz6C,MAAMD,KAAAA;AACrE,cAAM+6C,YAAYr+C,SAAQq+C,aAAa,IAAIz3B;AAC3C,YAAItb,SAAS+yC,WAAW;AAEtBX,gCAAsBp3C,OAAAA;AACtB;;AAGF,YAAIgM,cAAc1K,KAAQ,GAAA;AAIxBtB,kBAAQsB,QAAQtE;AAChB,iBAAOgD,QAAQhD;AACfnE,iBAAOw+C,eAAer3C,SAAS,QAAQ;YACrCs3C,cAAc;YACdC,YAAY;YACZljD,KAAK,WAAW;AACd,qBAAO,KAAK4jB;YACd;YACAzjB,KAAK,SAAS4qC,IAAG;AACf,mBAAK99B,QAAQ89B;YACf;UACF,CAAA;;AAIF,YAAIuW;AACJ,gBAAQj8C,SAAQk+C,WAAS;UACzB,KAAK;AACHjC,wBAAYF,eAAez4C,OAAMhK,QAAOgS,OAAOsb,gBAAgB5mB,QAAAA;AAC/D;UACF,KAAK;AACHi8C,wBAAYe,iBAAiB15C,OAAMhK,QAAOgS,OAAOsb,cAAAA;AACjD;UACF;AACE,kBAAM,IAAIzF,MAAM,qCAAqCnhB,SAAQk+C,YAAY;QAC3E;AAEA53C,gBAAQiY,aAAa09B;MACvB,CAAA;IACF;IAEAzM,QAAQh3C,OAAO;AACbulD,yBAAmBvlD,KAAAA;IACrB;EACF;AC5RO,WAASs/C,UAAU75B,MAAMnhB,QAAQokC,UAAU;AAChD,UAAMuW,WAAWx5B,KAAKw5B;AACtB,UAAM1/B,SAASkG,KAAKlG;AACpB,UAAMumC,UAAUxhD,OAAOib;AACvB,UAAMypB,QAAQ,CAAA;AAEd,eAAW/iB,WAAWg5B,UAAU;AAC9B,UAAI,EAACn+C,OAAAA,QAAO+H,KAAAA,KAAAA,IAAOod;AACnBpd,MAAAA,OAAMk9C,gBAAgBjlD,QAAO+H,MAAK0W,MAAAA;AAElC,YAAMgiC,SAASyE,WAAWtd,UAAUnpB,OAAOze,MAAAA,GAAQye,OAAO1W,IAAAA,GAAMod,QAAQ9gB,IAAI;AAE5E,UAAI,CAACb,OAAO26C,UAAU;AAGpBjW,cAAMtmC,KAAK;UACT07B,QAAQnY;UACR3hB,QAAQi9C;UACRzgD,OAAOye,OAAOze,MAAM;UACpB+H,KAAK0W,OAAO1W,IAAI;QAClB,CAAA;AACA;;AAIF,YAAMo9C,iBAAiBtG,eAAer7C,QAAQi9C,MAAAA;AAE9C,iBAAW2E,OAAOD,gBAAgB;AAChC,cAAME,YAAYH,WAAWtd,UAAUod,QAAQI,IAAIplD,KAAK,GAAGglD,QAAQI,IAAIr9C,GAAG,GAAGq9C,IAAI/gD,IAAI;AACrF,cAAMihD,cAAcC,cAAcpgC,SAAS1G,QAAQ4mC,SAAAA;AAEnD,mBAAWG,cAAcF,aAAa;AACpCpd,gBAAMtmC,KAAK;YACT07B,QAAQkoB;YACRhiD,QAAQ4hD;YACRplD,OAAO;cACL,CAAC4nC,QAAAA,GAAW6d,SAAShF,QAAQ4E,WAAW,SAASvlD,KAAKoC,GAAG;YAC3D;YACA6F,KAAK;cACH,CAAC6/B,QAAAA,GAAW6d,SAAShF,QAAQ4E,WAAW,OAAOvlD,KAAKC,GAAG;YACzD;UACF,CAAA;QACF;MACF;IACF;AACA,WAAOmoC;EACT;AAEO,WAASgd,WAAWtd,UAAU3Q,OAAO7a,MAAM/X,MAAM;AACtD,QAAIA,MAAM;AACR;;AAEF,QAAIrE,SAAQi3B,MAAM2Q,QAAS;AAC3B,QAAI7/B,OAAMqU,KAAKwrB,QAAS;AAExB,QAAIA,aAAa,SAAS;AACxB5nC,MAAAA,SAAQ0lD,gBAAgB1lD,MAAAA;AACxB+H,MAAAA,OAAM29C,gBAAgB39C,IAAAA;;AAExB,WAAO;MAAC6/B;MAAU5nC,OAAAA;MAAO+H,KAAAA;IAAG;EAC9B;AAEO,WAAS49C,oBAAoBC,UAAUjhC,MAAM;AAClD,UAAM,EAACxc,GAAAA,KAAI,MAAMC,GAAAA,KAAI,KAAI,IAAIw9C,YAAY,CAAA;AACzC,UAAMC,aAAalhC,KAAKlG;AACxB,UAAMA,SAAS,CAAA;AACfkG,SAAKw5B,SAASz+C,QAAQ,CAAC,EAACM,OAAAA,QAAO+H,KAAAA,KAAG,MAAM;AACtCA,MAAAA,OAAMk9C,gBAAgBjlD,QAAO+H,MAAK89C,UAAAA;AAClC,YAAM5uB,QAAQ4uB,WAAW7lD,MAAM;AAC/B,YAAMoc,OAAOypC,WAAW99C,IAAI;AAC5B,UAAIK,OAAM,MAAM;AACdqW,eAAO7c,KAAK;UAACuG,GAAG8uB,MAAM9uB;UAAGC,GAAAA;QAAC,CAAA;AAC1BqW,eAAO7c,KAAK;UAACuG,GAAGiU,KAAKjU;UAAGC,GAAAA;QAAC,CAAA;iBAChBD,OAAM,MAAM;AACrBsW,eAAO7c,KAAK;UAACuG,GAAAA;UAAGC,GAAG6uB,MAAM7uB;QAAC,CAAA;AAC1BqW,eAAO7c,KAAK;UAACuG,GAAAA;UAAGC,GAAGgU,KAAKhU;QAAC,CAAA;;IAE7B,CAAA;AACA,WAAOqW;EACT;AAEO,WAASwmC,gBAAgBjlD,QAAO+H,MAAK0W,QAAQ;AAClD,WAAM1W,OAAM/H,QAAO+H,QAAO;AACxB,YAAM2W,SAAQD,OAAO1W,IAAI;AACzB,UAAI,CAAC4U,MAAM+B,OAAMvW,CAAC,KAAK,CAACwU,MAAM+B,OAAMtW,CAAC,GAAG;AACtC;;IAEJ;AACA,WAAOL;EACT;AAEA,WAAS09C,SAASxtC,IAAGrP,IAAGnF,MAAM9D,KAAI;AAChC,QAAIsY,MAAKrP,IAAG;AACV,aAAOjJ,IAAGsY,GAAExU,IAAAA,GAAOmF,GAAEnF,IAAK,CAAA;;AAE5B,WAAOwU,KAAIA,GAAExU,IAAK,IAAGmF,KAAIA,GAAEnF,IAAK,IAAG;EACrC;ACnFO,WAASqiD,oBAAoBF,UAAUjhC,MAAM;AAClD,QAAIlG,SAAS,CAAA;AACb,QAAIra,QAAQ;AAEZ,QAAIiC,QAAQu/C,QAAW,GAAA;AACrBxhD,cAAQ;AAERqa,eAASmnC;WACJ;AACLnnC,eAASknC,oBAAoBC,UAAUjhC,IAAAA;;AAGzC,WAAOlG,OAAO9d,SAAS,IAAI29C,YAAY;MACrC7/B;MACA/X,SAAS;QAAC21C,SAAS;MAAC;MACpBj4C;MACAijB,WAAWjjB;IACb,CAAA,IAAK;EACP;AAEO,WAAS2hD,iBAAiBzoB,QAAQ;AACvC,WAAOA,UAAUA,OAAOluB,SAAS;EACnC;AC5BO,WAAS42C,eAAeC,SAAS78C,QAAO88C,WAAW;AACxD,UAAM5oB,SAAS2oB,QAAQ78C,MAAM;AAC7B,QAAIgG,QAAOkuB,OAAOluB;AAClB,UAAM+2C,UAAU;MAAC/8C;IAAM;AACvB,QAAI5F;AAEJ,QAAI,CAAC0iD,WAAW;AACd,aAAO92C;;AAGT,WAAOA,UAAS,SAAS+2C,QAAQvpC,QAAQxN,KAAAA,MAAU,IAAI;AACrD,UAAI,CAACvF,eAASuF,KAAO,GAAA;AACnB,eAAOA;;AAGT5L,eAASyiD,QAAQ72C,KAAK;AACtB,UAAI,CAAC5L,QAAQ;AACX,eAAO;;AAGT,UAAIA,OAAOqwC,SAAS;AAClB,eAAOzkC;;AAGT+2C,cAAQvkD,KAAKwN,KAAAA;AACbA,MAAAA,QAAO5L,OAAO4L;IAChB;AAEA,WAAO;EACT;AAOO,WAASg3C,YAAYzhC,MAAMvb,QAAO4I,OAAO;AAE9C,UAAM5C,QAAOi3C,gBAAgB1hC,IAAAA;AAE7B,QAAIhf,SAASyJ,KAAO,GAAA;AAClB,aAAOuN,MAAMvN,MAAKhI,KAAK,IAAI,QAAQgI;;AAGrC,QAAI5L,SAAS8iD,WAAWl3C,KAAAA;AAExB,QAAIvF,eAASrG,MAAW1D,KAAAA,KAAKoE,MAAMV,MAAAA,MAAYA,QAAQ;AACrD,aAAO+iD,kBAAkBn3C,MAAK,CAAE,GAAEhG,QAAO5F,QAAQwO,KAAAA;;AAGnD,WAAO;MAAC;MAAU;MAAS;MAAO;MAAS;MAAS4K,QAAQxN,KAAAA,KAAS,KAAKA;EAC5E;AAEA,WAASm3C,kBAAkBC,SAASp9C,QAAO5F,QAAQwO,OAAO;AACxD,QAAIw0C,YAAY,OAAOA,YAAY,KAAK;AACtChjD,eAAS4F,SAAQ5F;;AAGnB,QAAIA,WAAW4F,UAAS5F,SAAS,KAAKA,UAAUwO,OAAO;AACrD,aAAO;;AAGT,WAAOxO;EACT;AAOO,WAASijD,gBAAgBr3C,OAAMzH,QAAO;AAC3C,QAAIu5B,QAAQ;AACZ,QAAI9xB,UAAS,SAAS;AACpB8xB,cAAQv5B,OAAMY;eACL6G,UAAS,OAAO;AACzB8xB,cAAQv5B,OAAMU;eACL1C,SAASyJ,KAAO,GAAA;AAEzB8xB,cAAQv5B,OAAM4Q,iBAAiBnJ,MAAKhI,KAAK;eAChCO,OAAM8T,cAAc;AAC7BylB,cAAQv5B,OAAM8T,aAAY;;AAE5B,WAAOylB;EACT;AAQO,WAASwlB,gBAAgBt3C,OAAMzH,QAAO+R,YAAY;AACvD,QAAItS;AAEJ,QAAIgI,UAAS,SAAS;AACpBhI,cAAQsS;eACCtK,UAAS,OAAO;AACzBhI,cAAQO,OAAMjB,QAAQoB,UAAUH,OAAM5H,MAAM4H,OAAMzF;eACzCyD,SAASyJ,KAAO,GAAA;AAEzBhI,cAAQgI,MAAKhI;WACR;AACLA,cAAQO,OAAM45B,aAAY;;AAE5B,WAAOn6B;EACT;AAKA,WAASi/C,gBAAgB1hC,MAAM;AAC7B,UAAMje,WAAUie,KAAKje;AACrB,UAAMigD,aAAajgD,SAAQ0I;AAC3B,QAAIA,QAAOS,eAAe82C,cAAcA,WAAWnjD,QAAQmjD,UAAAA;AAE3D,QAAIv3C,UAASpQ,QAAW;AACtBoQ,MAAAA,QAAO,CAAC,CAAC1I,SAAQud;;AAGnB,QAAI7U,UAAS,SAASA,UAAS,MAAM;AACnC,aAAO;;AAGT,QAAIA,UAAS,MAAM;AACjB,aAAO;;AAET,WAAOA;EACT;AC1HO,WAASw3C,gBAAgBtpB,QAAQ;AACtC,UAAM,EAAC31B,OAAAA,QAAOyB,OAAAA,QAAOub,KAAAA,IAAQ2Y;AAC7B,UAAM7e,SAAS,CAAA;AACf,UAAM0/B,WAAWx5B,KAAKw5B;AACtB,UAAM0I,eAAeliC,KAAKlG;AAC1B,UAAMqoC,aAAaC,cAAcp/C,QAAOyB,MAAAA;AACxC09C,eAAWllD,KAAKkkD,oBAAoB;MAAC39C,GAAG;MAAMC,GAAGT,OAAMY;OAASoc,IAAAA,CAAAA;AAEhE,aAAS/jB,KAAI,GAAGA,KAAIu9C,SAASx9C,QAAQC,MAAK;AACxC,YAAMukB,UAAUg5B,SAASv9C,EAAE;AAC3B,eAASipB,KAAI1E,QAAQnlB,OAAO6pB,MAAK1E,QAAQpd,KAAK8hB,MAAK;AACjDm9B,uBAAevoC,QAAQooC,aAAah9B,EAAAA,GAAIi9B,UAAAA;MAC1C;IACF;AACA,WAAO,IAAIxI,YAAY;MAAC7/B;MAAQ/X,SAAS,CAAA;IAAE,CAAA;EAC7C;AAOA,WAASqgD,cAAcp/C,QAAOyB,QAAO;AACnC,UAAM69C,QAAQ,CAAA;AACd,UAAMprB,QAAQl0B,OAAMiE,wBAAwB,MAAA;AAE5C,aAAShL,KAAI,GAAGA,KAAIi7B,MAAMl7B,QAAQC,MAAK;AACrC,YAAMqJ,OAAO4xB,MAAMj7B,EAAE;AACrB,UAAIqJ,KAAKb,UAAUA,QAAO;AACxB;;AAEF,UAAI,CAACa,KAAK4D,QAAQ;AAChBo5C,cAAMC,QAAQj9C,KAAK+C,OAAO;;IAE9B;AACA,WAAOi6C;EACT;AAOA,WAASD,eAAevoC,QAAQ0oC,aAAaL,YAAY;AACvD,UAAMM,YAAY,CAAA;AAClB,aAASv9B,KAAI,GAAGA,KAAIi9B,WAAWnmD,QAAQkpB,MAAK;AAC1C,YAAMlF,OAAOmiC,WAAWj9B,EAAE;AAC1B,YAAM,EAACoN,OAAO7a,MAAMsC,OAAAA,OAAAA,IAAS2oC,UAAU1iC,MAAMwiC,aAAa,GAAA;AAE1D,UAAI,CAACzoC,UAAUuY,SAAS7a,MAAO;AAC7B;;AAEF,UAAI6a,OAAO;AAGTmwB,kBAAUF,QAAQxoC,MAAAA;aACb;AACLD,eAAO7c,KAAK8c,MAAAA;AACZ,YAAI,CAACtC,MAAM;AAET;;;IAGN;AACAqC,WAAO7c,KAAQwlD,GAAAA,SAAAA;EACjB;AAQA,WAASC,UAAU1iC,MAAMwiC,aAAavf,UAAU;AAC9C,UAAMlpB,SAAQiG,KAAKi6B,YAAYuI,aAAavf,QAAAA;AAC5C,QAAI,CAAClpB,QAAO;AACV,aAAO,CAAA;;AAGT,UAAM4oC,aAAa5oC,OAAMkpB,QAAS;AAClC,UAAMuW,WAAWx5B,KAAKw5B;AACtB,UAAM0H,aAAalhC,KAAKlG;AACxB,QAAIwY,QAAQ;AACZ,QAAI7a,OAAO;AACX,aAASxb,KAAI,GAAGA,KAAIu9C,SAASx9C,QAAQC,MAAK;AACxC,YAAMukB,UAAUg5B,SAASv9C,EAAE;AAC3B,YAAM2mD,aAAa1B,WAAW1gC,QAAQnlB,KAAK,EAAE4nC,QAAS;AACtD,YAAM4f,YAAY3B,WAAW1gC,QAAQpd,GAAG,EAAE6/B,QAAS;AACnD,UAAI4T,WAAW8L,YAAYC,YAAYC,SAAY,GAAA;AACjDvwB,gBAAQqwB,eAAeC;AACvBnrC,eAAOkrC,eAAeE;AACtB;;IAEJ;AACA,WAAO;MAACvwB;MAAO7a;MAAMsC,OAAAA;IAAK;EAC5B;AC1GO,MAAM+oC,YAAN,MAAMA;IACX/oD,YAAYmJ,MAAM;AAChB,WAAKM,IAAIN,KAAKM;AACd,WAAKC,IAAIP,KAAKO;AACd,WAAKoW,SAAS3W,KAAK2W;IACrB;IAEAs+B,YAAY7uC,KAAKwyC,QAAQ54C,MAAM;AAC7B,YAAM,EAACM,GAAAA,IAAGC,GAAAA,IAAGoW,OAAM,IAAI;AACvBiiC,eAASA,UAAU;QAACzgD,OAAO;QAAG+H,KAAKuX;MAAG;AACtCrR,UAAIyU,IAAIva,IAAGC,IAAGoW,QAAQiiC,OAAO14C,KAAK04C,OAAOzgD,OAAO,IAAI;AACpD,aAAO,CAAC6H,KAAK44C;IACf;IAEA7B,YAAYlgC,QAAO;AACjB,YAAM,EAACvW,GAAAA,IAAGC,GAAAA,IAAGoW,OAAM,IAAI;AACvB,YAAMwB,QAAQtB,OAAMsB;AACpB,aAAO;QACL7X,GAAGA,KAAIrI,KAAK4f,IAAIM,KAASxB,IAAAA;QACzBpW,GAAGA,KAAItI,KAAK8f,IAAII,KAASxB,IAAAA;QACzBwB;MACF;IACF;EACF;ACdO,WAAS0nC,WAAWpqB,QAAQ;AACjC,UAAM,EAACp+B,OAAOkQ,MAAAA,OAAMuV,KAAAA,IAAQ2Y;AAE5B,QAAIzzB,eAASuF,KAAO,GAAA;AAClB,aAAOu4C,eAAezoD,OAAOkQ,KAAAA;;AAG/B,QAAIA,UAAS,SAAS;AACpB,aAAOw3C,gBAAgBtpB,MAAAA;;AAGzB,QAAIluB,UAAS,SAAS;AACpB,aAAO;;AAGT,UAAMw2C,WAAWgC,gBAAgBtqB,MAAAA;AAEjC,QAAIsoB,oBAAoB6B,WAAW;AACjC,aAAO7B;;AAGT,WAAOE,oBAAoBF,UAAUjhC,IAAAA;EACvC;AAMA,WAASgjC,eAAezoD,OAAOkK,QAAO;AACpC,UAAMa,OAAO/K,MAAMwR,eAAetH,MAAAA;AAClC,UAAMyqC,WAAU5pC,QAAQ/K,MAAM+hB,iBAAiB7X,MAAAA;AAC/C,WAAOyqC,WAAU5pC,KAAK+C,UAAU;EAClC;AAEA,WAAS46C,gBAAgBtqB,QAAQ;AAC/B,UAAM31B,SAAQ21B,OAAO31B,SAAS,CAAA;AAE9B,QAAIA,OAAM4f,0BAA0B;AAClC,aAAOsgC,wBAAwBvqB,MAAAA;;AAEjC,WAAOwqB,sBAAsBxqB,MAAAA;EAC/B;AAGA,WAASwqB,sBAAsBxqB,QAAQ;AACrC,UAAM,EAAC31B,OAAAA,SAAQ,CAAA,GAAIyH,MAAAA,MAAAA,IAAQkuB;AAC3B,UAAM4D,QAAQulB,gBAAgBr3C,OAAMzH,MAAAA;AAEpC,QAAIkC,eAASq3B,KAAQ,GAAA;AACnB,YAAM3mB,aAAa5S,OAAM0S,aAAY;AAErC,aAAO;QACLlS,GAAGoS,aAAa2mB,QAAQ;QACxB94B,GAAGmS,aAAa,OAAO2mB;MACzB;;AAGF,WAAO;EACT;AAEA,WAAS2mB,wBAAwBvqB,QAAQ;AACvC,UAAM,EAAC31B,OAAAA,QAAOyH,MAAAA,MAAAA,IAAQkuB;AACtB,UAAM52B,WAAUiB,OAAMjB;AACtB,UAAM/F,UAASgH,OAAM8K,UAAS,EAAG9R;AACjC,UAAMX,SAAQ0G,SAAQoB,UAAUH,OAAMzF,MAAMyF,OAAM5H;AAClD,UAAMqH,QAAQs/C,gBAAgBt3C,OAAMzH,QAAO3H,MAAAA;AAC3C,UAAMwD,SAAS,CAAA;AAEf,QAAIkD,SAAQ0X,KAAK6I,UAAU;AACzB,YAAMjL,UAASrU,OAAM4f,yBAAyB,GAAGvnB,MAAAA;AACjD,aAAO,IAAIynD,UAAU;QACnBt/C,GAAG6T,QAAO7T;QACVC,GAAG4T,QAAO5T;QACVoW,QAAQ7W,OAAMmf,8BAA8B1f,KAAAA;MAC9C,CAAA;;AAGF,aAASxG,KAAI,GAAGA,KAAID,SAAQ,EAAEC,IAAG;AAC/B4C,aAAO5B,KAAK+F,OAAM4f,yBAAyB3mB,IAAGwG,KAAAA,CAAAA;IAChD;AACA,WAAO5D;EACT;ACzFO,WAASukD,UAAU95C,KAAKqvB,QAAQrpB,MAAM;AAC3C,UAAMzQ,SAASkkD,WAAWpqB,MAAAA;AAC1B,UAAM,EAAC3Y,MAAMhd,OAAAA,QAAO0C,KAAAA,IAAQizB;AAC5B,UAAM0qB,WAAWrjC,KAAKje;AACtB,UAAMigD,aAAaqB,SAAS54C;AAC5B,UAAMtM,SAAQklD,SAAS/jC;AACvB,UAAM,EAACgkC,QAAQnlD,QAAOmkD,QAAQnkD,OAAK,IAAI6jD,cAAc,CAAA;AACrD,QAAInjD,UAAUmhB,KAAKlG,OAAO9d,QAAQ;AAChCqlC,eAAS/3B,KAAKgG,IAAAA;AACdi0C,aAAOj6C,KAAK;QAAC0W;QAAMnhB;QAAQykD;QAAOhB;QAAOhzC;QAAMtM,OAAAA;QAAO0C;MAAI,CAAA;AAC1D87B,iBAAWl4B,GAAAA;;EAEf;AAEA,WAASi6C,OAAOj6C,KAAK1K,KAAK;AACxB,UAAM,EAACohB,MAAMnhB,QAAQykD,OAAOhB,OAAOhzC,MAAMtM,OAAAA,OAAAA,IAASpE;AAClD,UAAMqkC,WAAWjjB,KAAKvgB,QAAQ,UAAUb,IAAI8G;AAE5C4D,QAAI82B,KAAI;AAER,QAAI6C,aAAa,OAAOqf,UAAUgB,OAAO;AACvCE,mBAAal6C,KAAKzK,QAAQyQ,KAAK5L,GAAG;AAClC+G,WAAKnB,KAAK;QAAC0W;QAAMnhB;QAAQV,OAAOmlD;QAAOtgD,OAAAA;QAAOigC;MAAQ,CAAA;AACtD35B,UAAIg3B,QAAO;AACXh3B,UAAI82B,KAAI;AACRojB,mBAAal6C,KAAKzK,QAAQyQ,KAAK1L,MAAM;;AAEvC6G,SAAKnB,KAAK;MAAC0W;MAAMnhB;MAAQV,OAAOmkD;MAAOt/C,OAAAA;MAAOigC;IAAQ,CAAA;AAEtD35B,QAAIg3B,QAAO;EACb;AAEA,WAASkjB,aAAal6C,KAAKzK,QAAQ4kD,OAAO;AACxC,UAAM,EAACjK,UAAU1/B,OAAAA,IAAUjb;AAC3B,QAAIyzB,QAAQ;AACZ,QAAIoxB,WAAW;AAEfp6C,QAAIu3B,UAAS;AACb,eAAWrgB,WAAWg5B,UAAU;AAC9B,YAAM,EAACn+C,OAAAA,QAAO+H,KAAAA,KAAAA,IAAOod;AACrB,YAAMU,aAAapH,OAAOze,MAAM;AAChC,YAAM8lB,YAAYrH,OAAOwmC,gBAAgBjlD,QAAO+H,MAAK0W,MAAQ,CAAA;AAC7D,UAAIwY,OAAO;AACThpB,YAAIw3B,OAAO5f,WAAW1d,GAAG0d,WAAWzd,CAAC;AACrC6uB,gBAAQ;aACH;AACLhpB,YAAIy3B,OAAO7f,WAAW1d,GAAGigD,KAAAA;AACzBn6C,YAAIy3B,OAAO7f,WAAW1d,GAAG0d,WAAWzd,CAAC;;AAEvCigD,iBAAW,CAAC,CAAC7kD,OAAOs5C,YAAY7uC,KAAKkX,SAAS;QAACxO,MAAM0xC;MAAQ,CAAA;AAC7D,UAAIA,UAAU;AACZp6C,YAAI+pC,UAAS;aACR;AACL/pC,YAAIy3B,OAAO5f,UAAU3d,GAAGigD,KAAAA;;IAE5B;AAEAn6C,QAAIy3B,OAAOliC,OAAOyzB,MAAK,EAAG9uB,GAAGigD,KAAAA;AAC7Bn6C,QAAI+pC,UAAS;AACb/pC,QAAI8F,KAAI;EACV;AAEA,WAAS3E,KAAKnB,KAAK1K,KAAK;AACtB,UAAM,EAACohB,MAAMnhB,QAAQokC,UAAU9kC,OAAAA,QAAO6E,OAAAA,OAAK,IAAIpE;AAC/C,UAAM46C,WAAWK,UAAU75B,MAAMnhB,QAAQokC,QAAAA;AAEzC,eAAW,EAACtK,QAAQgrB,KAAK9kD,QAAQ4hD,KAAKplD,OAAAA,QAAO+H,KAAAA,KAAG,KAAKo2C,UAAU;AAC7D,YAAM,EAACr6B,OAAO,EAACG,kBAAkBnhB,OAAAA,IAAS,CAAA,EAAE,IAAIwlD;AAChD,YAAMC,WAAW/kD,WAAW;AAE5ByK,UAAI82B,KAAI;AACR92B,UAAI+V,YAAYC;AAEhBukC,iBAAWv6C,KAAKtG,QAAO4gD,YAAYrD,WAAWtd,UAAU5nC,QAAO+H,IAAAA,CAAAA;AAE/DkG,UAAIu3B,UAAS;AAEb,YAAM6iB,WAAW,CAAC,CAAC1jC,KAAKm4B,YAAY7uC,KAAKq6C,GAAAA;AAEzC,UAAIjkD;AACJ,UAAIkkD,UAAU;AACZ,YAAIF,UAAU;AACZp6C,cAAI+pC,UAAS;eACR;AACLyQ,6BAAmBx6C,KAAKzK,QAAQuE,MAAK6/B,QAAAA;;AAGvC,cAAM8gB,aAAa,CAAC,CAACllD,OAAOs5C,YAAY7uC,KAAKm3C,KAAK;UAACzuC,MAAM0xC;UAAUvgD,SAAS;QAAI,CAAA;AAChFzD,eAAOgkD,YAAYK;AACnB,YAAI,CAACrkD,MAAM;AACTokD,6BAAmBx6C,KAAKzK,QAAQxD,QAAO4nC,QAAAA;;;AAI3C35B,UAAI+pC,UAAS;AACb/pC,UAAImB,KAAK/K,OAAO,YAAY,SAAS;AAErC4J,UAAIg3B,QAAO;IACb;EACF;AAEA,WAASujB,WAAWv6C,KAAKtG,QAAO84C,QAAQ;AACtC,UAAM,EAACp4C,KAAAA,MAAKE,QAAAA,QAAAA,IAAUZ,OAAMzI,MAAMgV;AAClC,UAAM,EAAC0zB,UAAU5nC,OAAAA,QAAO+H,KAAAA,KAAG,IAAI04C,UAAU,CAAA;AACzC,QAAI7Y,aAAa,KAAK;AACpB35B,UAAIu3B,UAAS;AACbv3B,UAAI+yC,KAAKhhD,QAAOqI,MAAKN,OAAM/H,QAAOuI,UAASF,IAAAA;AAC3C4F,UAAI8F,KAAI;;EAEZ;AAEA,WAAS00C,mBAAmBx6C,KAAKzK,QAAQkb,QAAOkpB,UAAU;AACxD,UAAM+gB,oBAAoBnlD,OAAOo7C,YAAYlgC,QAAOkpB,QAAAA;AACpD,QAAI+gB,mBAAmB;AACrB16C,UAAIy3B,OAAOijB,kBAAkBxgD,GAAGwgD,kBAAkBvgD,CAAC;;EAEvD;AC7GA,MAAA,QAAe;IACb0C,IAAI;IAEJ89C,oBAAoB1pD,OAAOmjD,OAAO37C,UAAS;AACzC,YAAMsL,SAAS9S,MAAM8K,KAAKyG,YAAY,CAAA,GAAI9P;AAC1C,YAAMslD,UAAU,CAAA;AAChB,UAAIh8C,MAAMrJ,IAAG+jB,MAAM2Y;AAEnB,WAAK18B,KAAI,GAAGA,KAAIoR,OAAO,EAAEpR,IAAG;AAC1BqJ,eAAO/K,MAAMwR,eAAe9P,EAAAA;AAC5B+jB,eAAO1a,KAAK+C;AACZswB,iBAAS;AAET,YAAI3Y,QAAQA,KAAKje,WAAWie,gBAAgB25B,aAAa;AACvDhhB,mBAAS;YACPuW,SAAS30C,MAAM+hB,iBAAiBrgB,EAAAA;YAChCwI,OAAOxI;YACPwO,MAAMg3C,YAAYzhC,MAAM/jB,IAAGoR,KAAAA;YAC3B9S;YACAmL,MAAMJ,KAAK6B,WAAWpF,QAAQwJ;YAC9BvI,OAAOsC,KAAKE;YACZwa;UACF;;AAGF1a,aAAK4+C,UAAUvrB;AACf2oB,gBAAQrkD,KAAK07B,MAAAA;MACf;AAEA,WAAK18B,KAAI,GAAGA,KAAIoR,OAAO,EAAEpR,IAAG;AAC1B08B,iBAAS2oB,QAAQrlD,EAAE;AACnB,YAAI,CAAC08B,UAAUA,OAAOluB,SAAS,OAAO;AACpC;;AAGFkuB,eAAOluB,OAAO42C,eAAeC,SAASrlD,IAAG8F,SAAQw/C,SAAS;MAC5D;IACF;IAEA4C,WAAW5pD,OAAOmjD,OAAO37C,UAAS;AAChC,YAAM7F,QAAO6F,SAAQqiD,aAAa;AAClC,YAAM9/C,WAAW/J,MAAM0qB,6BAA4B;AACnD,YAAM3V,OAAO/U,MAAMgV;AACnB,eAAStT,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,cAAM08B,SAASr0B,SAASrI,EAAAA,EAAGioD;AAC3B,YAAI,CAACvrB,QAAQ;AACX;;AAGFA,eAAO3Y,KAAKoB,oBAAoB9R,MAAMqpB,OAAOjzB,IAAI;AACjD,YAAIxJ,SAAQy8B,OAAOluB,MAAM;AACvB24C,oBAAU7oD,MAAM+O,KAAKqvB,QAAQrpB,IAAAA;;MAEjC;IACF;IAEA+0C,mBAAmB9pD,OAAOmjD,OAAO37C,UAAS;AACxC,UAAIA,SAAQqiD,aAAa,sBAAsB;AAC7C;;AAGF,YAAM9/C,WAAW/J,MAAM0qB,6BAA4B;AACnD,eAAShpB,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,cAAM08B,SAASr0B,SAASrI,EAAAA,EAAGioD;AAE3B,YAAI9C,iBAAiBzoB,MAAS,GAAA;AAC5ByqB,oBAAU7oD,MAAM+O,KAAKqvB,QAAQp+B,MAAMgV,SAAS;;MAEhD;IACF;IAEA+0C,kBAAkB/pD,OAAO+X,MAAMvQ,UAAS;AACtC,YAAM42B,SAASrmB,KAAKhN,KAAK4+C;AAEzB,UAAI,CAAC9C,iBAAiBzoB,MAAAA,KAAW52B,SAAQqiD,aAAa,qBAAqB;AACzE;;AAGFhB,gBAAU7oD,MAAM+O,KAAKqvB,QAAQp+B,MAAMgV,SAAS;IAC9C;IAEAnO,UAAU;MACRmgD,WAAW;MACX6C,UAAU;IACZ;EACF;ACzEA,MAAMG,aAAa,CAACC,WAAWziB,aAAa;AAC1C,QAAI,EAAC0iB,YAAY1iB,UAAU2iB,WAAW3iB,SAAAA,IAAYyiB;AAElD,QAAIA,UAAUG,eAAe;AAC3BF,kBAAYtpD,KAAKC,IAAIqpD,WAAW1iB,QAAAA;AAChC2iB,iBAAWF,UAAUI,mBAAmBzpD,KAAKC,IAAIspD,UAAU3iB,QAAAA;;AAG7D,WAAO;MACL2iB;MACAD;MACAI,YAAY1pD,KAAKoC,IAAIwkC,UAAU0iB,SAAAA;IACjC;EACF;AAEA,MAAMK,aAAa,CAACxxC,IAAGrP,OAAMqP,OAAM,QAAQrP,OAAM,QAAQqP,GAAEvO,iBAAiBd,GAAEc,gBAAgBuO,GAAE7O,UAAUR,GAAEQ;AAErG,MAAMsgD,SAAN,cAAqB1zB,SAAAA;IAK1Bt3B,YAAY6G,SAAQ;AAClB,YAAK;AAEL,WAAKokD,SAAS;AAGd,WAAKC,iBAAiB,CAAA;AAKtB,WAAKC,eAAe;AAGpB,WAAKC,eAAe;AAEpB,WAAK5qD,QAAQqG,QAAOrG;AACpB,WAAKwH,UAAUnB,QAAOmB;AACtB,WAAKuH,MAAM1I,QAAO0I;AAClB,WAAK87C,cAAc/qD;AACnB,WAAKgrD,cAAchrD;AACnB,WAAKirD,aAAajrD;AAClB,WAAK2iB,YAAY3iB;AACjB,WAAK0iB,WAAW1iB;AAChB,WAAKqJ,MAAMrJ;AACX,WAAKuJ,SAASvJ;AACd,WAAKwJ,OAAOxJ;AACZ,WAAKsJ,QAAQtJ;AACb,WAAKid,SAASjd;AACd,WAAKkd,QAAQld;AACb,WAAKu7B,WAAWv7B;AAChB,WAAK0qB,WAAW1qB;AAChB,WAAKmkB,SAASnkB;AACd,WAAKquB,WAAWruB;IAClB;IAEA4F,OAAO8c,UAAUC,WAAWya,SAAS;AACnC,WAAK1a,WAAWA;AAChB,WAAKC,YAAYA;AACjB,WAAK4Y,WAAW6B;AAEhB,WAAKI,cAAa;AAClB,WAAK0tB,YAAW;AAChB,WAAKzsB,IAAG;IACV;IAEAjB,gBAAgB;AACd,UAAI,KAAKniB,aAAY,GAAI;AACvB,aAAK6B,QAAQ,KAAKwF;AAClB,aAAKlZ,OAAO,KAAK+xB,SAAS/xB;AAC1B,aAAKF,QAAQ,KAAK4T;aACb;AACL,aAAKD,SAAS,KAAK0F;AACnB,aAAKtZ,MAAM,KAAKkyB,SAASlyB;AACzB,aAAKE,SAAS,KAAK0T;;IAEvB;IAEAiuC,cAAc;AACZ,YAAMf,YAAY,KAAKziD,QAAQ8L,UAAU,CAAA;AACzC,UAAIu3C,cAAc5pD,SAAKgpD,UAAUxlC,gBAAgB;QAAC,KAAKzkB;SAAQ,IAAI,KAAK,CAAA;AAExE,UAAIiqD,UAAUx8C,QAAQ;AACpBo9C,sBAAcA,YAAYp9C,OAAO,CAAC7L,SAASqoD,UAAUx8C,OAAO7L,MAAM,KAAK5B,MAAM8K,IAAI,CAAA;;AAGnF,UAAIm/C,UAAUnxC,MAAM;AAClB+xC,sBAAcA,YAAY/xC,KAAK,CAACC,IAAGrP,OAAMugD,UAAUnxC,KAAKC,IAAGrP,IAAG,KAAK1J,MAAM8K,IAAI,CAAA;;AAG/E,UAAI,KAAKtD,QAAQoB,SAAS;AACxBiiD,oBAAYjiD,QAAO;;AAGrB,WAAKiiD,cAAcA;IACrB;IAEAtsB,MAAM;AACJ,YAAM,EAAC/2B,SAAAA,UAASuH,IAAG,IAAI;AAMvB,UAAI,CAACvH,SAAQsgB,SAAS;AACpB,aAAK9K,QAAQ,KAAKD,SAAS;AAC3B;;AAGF,YAAMktC,YAAYziD,SAAQ8L;AAC1B,YAAM23C,YAAYzwB,OAAOyvB,UAAU1vB,IAAI;AACvC,YAAMiN,WAAWyjB,UAAU9iD;AAC3B,YAAMk4B,cAAc,KAAK6qB,oBAAmB;AAC5C,YAAM,EAACf,UAAUG,WAAAA,IAAcN,WAAWC,WAAWziB,QAAAA;AAErD,UAAIxqB,QAAOD;AAEXhO,UAAIwrB,OAAO0wB,UAAUrpB;AAErB,UAAI,KAAKzmB,aAAY,GAAI;AACvB6B,QAAAA,SAAQ,KAAKwF;AACbzF,QAAAA,UAAS,KAAKouC,SAAS9qB,aAAamH,UAAU2iB,UAAUG,UAAc,IAAA;aACjE;AACLvtC,QAAAA,UAAS,KAAK0F;AACdzF,QAAAA,SAAQ,KAAKouC,SAAS/qB,aAAa4qB,WAAWd,UAAUG,UAAc,IAAA;;AAGxE,WAAKttC,QAAQpc,KAAKC,IAAImc,QAAOxV,SAAQgb,YAAY,KAAKA,QAAQ;AAC9D,WAAKzF,SAASnc,KAAKC,IAAIkc,SAAQvV,SAAQib,aAAa,KAAKA,SAAS;IACpE;IAKA0oC,SAAS9qB,aAAamH,UAAU2iB,UAAUG,YAAY;AACpD,YAAM,EAACv7C,KAAKyT,UAAUhb,SAAS,EAAC8L,QAAQ,EAACod,QAAAA,EAAQ,EAAC,IAAI;AACtD,YAAM26B,WAAW,KAAKX,iBAAiB,CAAA;AAEvC,YAAMK,aAAa,KAAKA,aAAa;QAAC;MAAE;AACxC,YAAMrwB,aAAa4vB,aAAa55B;AAChC,UAAI46B,cAAcjrB;AAElBtxB,UAAIy1B,YAAY;AAChBz1B,UAAI41B,eAAe;AAEnB,UAAI4mB,MAAM;AACV,UAAIpiD,OAAM,CAACuxB;AACX,WAAKmwB,YAAYrqD,QAAQ,CAAC8kB,YAAY5jB,OAAM;AAC1C,cAAM8pD,YAAYrB,WAAY3iB,WAAW,IAAKz4B,IAAI08C,YAAYnmC,WAAWT,IAAI,EAAE7H;AAE/E,YAAItb,OAAM,KAAKqpD,WAAWA,WAAWtpD,SAAS,CAAA,IAAK+pD,YAAY,IAAI96B,UAAUlO,UAAU;AACrF8oC,yBAAe5wB;AACfqwB,qBAAWA,WAAWtpD,UAAUC,KAAI,IAAI,IAAI,EAAA,IAAM;AAClDyH,UAAAA,QAAOuxB;AACP6wB;;AAGFF,iBAAS3pD,EAAAA,IAAK;UAAC4H,MAAM;UAAGH,KAAAA;UAAKoiD;UAAKvuC,OAAOwuC;UAAWzuC,QAAQutC;QAAU;AAEtES,mBAAWA,WAAWtpD,SAAS,CAAA,KAAM+pD,YAAY96B;MACnD,CAAA;AAEA,aAAO46B;IACT;IAEAF,SAAS/qB,aAAa4qB,WAAWd,UAAUuB,aAAa;AACtD,YAAM,EAAC38C,KAAK0T,WAAWjb,SAAS,EAAC8L,QAAQ,EAACod,QAAAA,EAAQ,EAAC,IAAI;AACvD,YAAM26B,WAAW,KAAKX,iBAAiB,CAAA;AACvC,YAAMI,cAAc,KAAKA,cAAc,CAAA;AACvC,YAAMa,cAAclpC,YAAY4d;AAEhC,UAAIurB,aAAal7B;AACjB,UAAIm7B,kBAAkB;AACtB,UAAIC,mBAAmB;AAEvB,UAAIxiD,QAAO;AACX,UAAIyiD,MAAM;AAEV,WAAKlB,YAAYrqD,QAAQ,CAAC8kB,YAAY5jB,OAAM;AAC1C,cAAM,EAAC8pD,WAAWlB,WAAU,IAAI0B,kBAAkB7B,UAAUc,WAAWl8C,KAAKuW,YAAYomC,WAAAA;AAGxF,YAAIhqD,KAAI,KAAKoqD,mBAAmBxB,aAAa,IAAI55B,UAAUi7B,aAAa;AACtEC,wBAAcC,kBAAkBn7B;AAChCo6B,sBAAYpoD,KAAK;YAACsa,OAAO6uC;YAAiB9uC,QAAQ+uC;UAAgB,CAAA;AAClExiD,UAAAA,SAAQuiD,kBAAkBn7B;AAC1Bq7B;AACAF,4BAAkBC,mBAAmB;;AAIvCT,iBAAS3pD,EAAAA,IAAK;UAAC4H,MAAAA;UAAMH,KAAK2iD;UAAkBC;UAAK/uC,OAAOwuC;UAAWzuC,QAAQutC;QAAU;AAGrFuB,0BAAkBjrD,KAAKoC,IAAI6oD,iBAAiBL,SAAAA;AAC5CM,4BAAoBxB,aAAa55B;MACnC,CAAA;AAEAk7B,oBAAcC;AACdf,kBAAYpoD,KAAK;QAACsa,OAAO6uC;QAAiB9uC,QAAQ+uC;MAAgB,CAAA;AAElE,aAAOF;IACT;IAEAK,iBAAiB;AACf,UAAI,CAAC,KAAKzkD,QAAQsgB,SAAS;AACzB;;AAEF,YAAMuY,cAAc,KAAK6qB,oBAAmB;AAC5C,YAAM,EAACR,gBAAgBW,UAAU7jD,SAAS,EAAC2xB,OAAO7lB,QAAQ,EAACod,QAAO,GAAGw7B,IAAAA,EAAI,IAAI;AAC7E,YAAMC,YAAYC,cAAcF,KAAK,KAAK5iD,MAAM,KAAK0T,KAAK;AAC1D,UAAI,KAAK7B,aAAY,GAAI;AACvB,YAAIowC,MAAM;AACV,YAAIjiD,QAAO4xB,eAAe/B,OAAO,KAAK7vB,OAAOonB,SAAS,KAAKtnB,QAAQ,KAAK2hD,WAAWQ,GAAI,CAAA;AACvF,mBAAWc,UAAUhB,UAAU;AAC7B,cAAIE,QAAQc,OAAOd,KAAK;AACtBA,kBAAMc,OAAOd;AACbjiD,YAAAA,QAAO4xB,eAAe/B,OAAO,KAAK7vB,OAAOonB,SAAS,KAAKtnB,QAAQ,KAAK2hD,WAAWQ,GAAI,CAAA;;AAErFc,iBAAOljD,OAAO,KAAKA,MAAMk3B,cAAc3P;AACvC27B,iBAAO/iD,OAAO6iD,UAAUG,WAAWH,UAAUljD,EAAEK,KAAO+iD,GAAAA,OAAOrvC,KAAK;AAClE1T,UAAAA,SAAQ+iD,OAAOrvC,QAAQ0T;QACzB;aACK;AACL,YAAIq7B,MAAM;AACV,YAAI5iD,OAAM+xB,eAAe/B,OAAO,KAAKhwB,MAAMk3B,cAAc3P,SAAS,KAAKrnB,SAAS,KAAKyhD,YAAYiB,GAAAA,EAAKhvC,MAAM;AAC5G,mBAAWsvC,UAAUhB,UAAU;AAC7B,cAAIgB,OAAON,QAAQA,KAAK;AACtBA,kBAAMM,OAAON;AACb5iD,YAAAA,OAAM+xB,eAAe/B,OAAO,KAAKhwB,MAAMk3B,cAAc3P,SAAS,KAAKrnB,SAAS,KAAKyhD,YAAYiB,GAAAA,EAAKhvC,MAAM;;AAE1GsvC,iBAAOljD,MAAMA;AACbkjD,iBAAO/iD,QAAQ,KAAKA,OAAOonB;AAC3B27B,iBAAO/iD,OAAO6iD,UAAUG,WAAWH,UAAUljD,EAAEojD,OAAO/iD,IAAI,GAAG+iD,OAAOrvC,KAAK;AACzE7T,UAAAA,QAAOkjD,OAAOtvC,SAAS2T;QACzB;;IAEJ;IAEAvV,eAAe;AACb,aAAO,KAAK3T,QAAQgjB,aAAa,SAAS,KAAKhjB,QAAQgjB,aAAa;IACtE;IAEA7oB,OAAO;AACL,UAAI,KAAK6F,QAAQsgB,SAAS;AACxB,cAAM/Y,MAAM,KAAKA;AACjB+3B,iBAAS/3B,KAAK,IAAI;AAElB,aAAKw9C,MAAK;AAEVtlB,mBAAWl4B,GAAAA;;IAEf;IAKAw9C,QAAQ;AACN,YAAM,EAAC/kD,SAASmB,MAAMmiD,aAAaC,YAAYh8C,IAAAA,IAAO;AACtD,YAAM,EAACoqB,OAAO7lB,QAAQ22C,UAAAA,IAAathD;AACnC,YAAM6jD,eAAe3lD,SAASjD;AAC9B,YAAMuoD,YAAYC,cAAczjD,KAAKujD,KAAK,KAAK5iD,MAAM,KAAK0T,KAAK;AAC/D,YAAMiuC,YAAYzwB,OAAOyvB,UAAU1vB,IAAI;AACvC,YAAM,EAAC7J,QAAO,IAAIu5B;AAClB,YAAMziB,WAAWyjB,UAAU9iD;AAC3B,YAAMskD,eAAejlB,WAAW;AAChC,UAAIklB;AAEJ,WAAKxlB,UAAS;AAGdn4B,UAAIy1B,YAAY2nB,UAAU3nB,UAAU,MAAA;AACpCz1B,UAAI41B,eAAe;AACnB51B,UAAIoW,YAAY;AAChBpW,UAAIwrB,OAAO0wB,UAAUrpB;AAErB,YAAM,EAACuoB,UAAUD,WAAWI,WAAU,IAAIN,WAAWC,WAAWziB,QAAAA;AAGhE,YAAMmlB,gBAAgB,SAAS1jD,IAAGC,IAAGoc,YAAY;AAC/C,YAAI7H,MAAM0sC,QAAaA,KAAAA,YAAY,KAAK1sC,MAAMysC,SAAAA,KAAcA,YAAY,GAAG;AACzE;;AAIFn7C,YAAI82B,KAAI;AAER,cAAM1gB,YAAYxU,eAAe2U,WAAWH,WAAW,CAAA;AACvDpW,YAAI+V,YAAYnU,eAAe2U,WAAWR,WAAW0nC,YAAAA;AACrDz9C,YAAI8tC,UAAUlsC,eAAe2U,WAAWu3B,SAAS,MAAA;AACjD9tC,YAAIs3B,iBAAiB11B,eAAe2U,WAAW+gB,gBAAgB,CAAA;AAC/Dt3B,YAAI+sC,WAAWnrC,eAAe2U,WAAWw2B,UAAU,OAAA;AACnD/sC,YAAIoW,YAAYA;AAChBpW,YAAIiW,cAAcrU,eAAe2U,WAAWN,aAAawnC,YAAAA;AAEzDz9C,YAAIq3B,YAAYz1B,eAAe2U,WAAWsnC,UAAU,CAAA,CAAE,CAAA;AAEtD,YAAI3C,UAAUG,eAAe;AAG3B,gBAAMyC,cAAc;YAClBvtC,QAAQ4qC,YAAYtpD,KAAKksD,QAAQ;YACjCpoC,YAAYY,WAAWZ;YACvB7E,UAAUyF,WAAWzF;YACrBgE,aAAasB;UACf;AACA,gBAAM9B,UAAU8oC,UAAUY,MAAM9jD,IAAGkhD,WAAW,CAAA;AAC9C,gBAAM7mC,UAAUpa,KAAIujD;AAGpBO,0BAAgBj+C,KAAK89C,aAAaxpC,SAASC,SAAS2mC,UAAUI,mBAAmBF,QAAAA;eAC5E;AAGL,gBAAM8C,UAAU/jD,KAAItI,KAAKoC,KAAKwkC,WAAW0iB,aAAa,GAAG,CAAA;AACzD,gBAAMgD,WAAWf,UAAUG,WAAWrjD,IAAGkhD,QAAAA;AACzC,gBAAM/Q,eAAe2H,cAAcz7B,WAAW8zB,YAAY;AAE1DrqC,cAAIu3B,UAAS;AAEb,cAAI3/B,OAAOW,OAAO8xC,YAAAA,EAAcxN,KAAK3vB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClDmmC,+BAAmBrzC,KAAK;cACtB9F,GAAGikD;cACHhkD,GAAG+jD;cACH19B,GAAG46B;cACH16B,GAAGy6B;cACH5qC,QAAQ85B;YACV,CAAA;iBACK;AACLrqC,gBAAI+yC,KAAKoL,UAAUD,SAAS9C,UAAUD,SAAAA;;AAGxCn7C,cAAImB,KAAI;AACR,cAAIiV,cAAc,GAAG;AACnBpW,gBAAI03B,OAAM;;;AAId13B,YAAIg3B,QAAO;MACb;AAEA,YAAMonB,WAAW,SAASlkD,IAAGC,IAAGoc,YAAY;AAC1C0hB,mBAAWj4B,KAAKuW,WAAWT,MAAM5b,IAAGC,KAAKohD,aAAa,GAAIW,WAAW;UACnEmC,eAAe9nC,WAAW3W;UAC1B61B,WAAW2nB,UAAU3nB,UAAUlf,WAAWkf,SAAS;QACrD,CAAA;MACF;AAGA,YAAMrpB,eAAe,KAAKA,aAAY;AACtC,YAAMklB,cAAc,KAAK6qB,oBAAmB;AAC5C,UAAI/vC,cAAc;AAChBuxC,iBAAS;UACPzjD,GAAGiyB,eAAe/B,OAAO,KAAK7vB,OAAOonB,SAAS,KAAKtnB,QAAQ2hD,WAAW,CAAE,CAAA;UACxE7hD,GAAG,KAAKC,MAAMunB,UAAU2P;UACxB5a,MAAM;QACR;aACK;AACLinC,iBAAS;UACPzjD,GAAG,KAAKK,OAAOonB;UACfxnB,GAAGgyB,eAAe/B,OAAO,KAAKhwB,MAAMk3B,cAAc3P,SAAS,KAAKrnB,SAASyhD,YAAY,CAAA,EAAG/tC,MAAM;UAC9F0I,MAAM;QACR;;AAGF4nC,4BAAsB,KAAKt+C,KAAKpG,KAAK2kD,aAAa;AAElD,YAAM5yB,aAAa4vB,aAAa55B;AAChC,WAAKm6B,YAAYrqD,QAAQ,CAAC8kB,YAAY5jB,OAAM;AAC1CqN,YAAIiW,cAAcM,WAAWJ;AAC7BnW,YAAI+V,YAAYQ,WAAWJ;AAE3B,cAAMqoC,YAAYx+C,IAAI08C,YAAYnmC,WAAWT,IAAI,EAAE7H;AACnD,cAAMwnB,YAAY2nB,UAAU3nB,UAAUlf,WAAWkf,cAAclf,WAAWkf,YAAYylB,UAAUzlB,UAAQ;AACxG,cAAMxnB,SAAQmtC,WAAWsC,eAAec;AACxC,YAAItkD,KAAIyjD,OAAOzjD;AACf,YAAIC,KAAIwjD,OAAOxjD;AAEfijD,kBAAUqB,SAAS,KAAKxwC,KAAK;AAE7B,YAAI7B,cAAc;AAChB,cAAIzZ,KAAI,KAAKuH,KAAI+T,SAAQ0T,UAAU,KAAKtnB,OAAO;AAC7CF,YAAAA,KAAIwjD,OAAOxjD,KAAKwxB;AAChBgyB,mBAAOjnC;AACPxc,YAAAA,KAAIyjD,OAAOzjD,IAAIiyB,eAAe/B,OAAO,KAAK7vB,OAAOonB,SAAS,KAAKtnB,QAAQ2hD,WAAW2B,OAAOjnC,IAAI,CAAC;;mBAEvF/jB,KAAI,KAAKwH,KAAIwxB,aAAa,KAAKrxB,QAAQ;AAChDJ,UAAAA,KAAIyjD,OAAOzjD,IAAIA,KAAI6hD,YAAY4B,OAAOjnC,IAAI,EAAEzI,QAAQ0T;AACpDg8B,iBAAOjnC;AACPvc,UAAAA,KAAIwjD,OAAOxjD,IAAIgyB,eAAe/B,OAAO,KAAKhwB,MAAMk3B,cAAc3P,SAAS,KAAKrnB,SAASyhD,YAAY4B,OAAOjnC,IAAI,EAAE1I,MAAM;;AAGtH,cAAM0wC,QAAQtB,UAAUljD,EAAEA,EAAAA;AAE1B0jD,sBAAcc,OAAOvkD,IAAGoc,UAAAA;AAExBrc,QAAAA,KAAIykD,OAAOlpB,WAAWv7B,KAAIkhD,WAAWsC,cAActxC,eAAelS,KAAI+T,SAAQ,KAAK5T,OAAOT,KAAKujD,GAAG;AAGlGiB,iBAAShB,UAAUljD,EAAEA,EAAAA,GAAIC,IAAGoc,UAAAA;AAE5B,YAAInK,cAAc;AAChBuxC,iBAAOzjD,KAAK+T,SAAQ0T;QACtB,WAAW,OAAOpL,WAAWT,SAAS,UAAU;AAC9C,gBAAM8oC,iBAAiB1C,UAAUvwB;AACjCgyB,iBAAOxjD,KAAK0kD,0BAA0BtoC,YAAYqoC,cAAkBj9B,IAAAA;eAC/D;AACLg8B,iBAAOxjD,KAAKwxB;;MAEhB,CAAA;AAEAmzB,2BAAqB,KAAK9+C,KAAKpG,KAAK2kD,aAAa;IACnD;IAKApmB,YAAY;AACV,YAAMv+B,OAAO,KAAKnB;AAClB,YAAM24B,YAAYx3B,KAAKq3B;AACvB,YAAM8tB,YAAYtzB,OAAO2F,UAAU5F,IAAI;AACvC,YAAMwzB,eAAe98B,UAAUkP,UAAUzP,OAAO;AAEhD,UAAI,CAACyP,UAAUrY,SAAS;AACtB;;AAGF,YAAMqkC,YAAYC,cAAczjD,KAAKujD,KAAK,KAAK5iD,MAAM,KAAK0T,KAAK;AAC/D,YAAMjO,MAAM,KAAKA;AACjB,YAAMyb,YAAW2V,UAAU3V;AAC3B,YAAMiiC,eAAeqB,UAAU3lD,OAAO;AACtC,YAAM6lD,6BAA6BD,aAAa5kD,MAAMsjD;AACtD,UAAIvjD;AAIJ,UAAII,QAAO,KAAKA;AAChB,UAAIkZ,WAAW,KAAKxF;AAEpB,UAAI,KAAK7B,aAAY,GAAI;AAEvBqH,mBAAW5hB,KAAKoC,IAAO,GAAA,KAAK+nD,UAAU;AACtC7hD,QAAAA,KAAI,KAAKC,MAAM6kD;AACf1kD,QAAAA,QAAO4xB,eAAevyB,KAAKwwB,OAAO7vB,OAAM,KAAKF,QAAQoZ,QAAAA;aAChD;AAEL,cAAMC,YAAY,KAAKqoC,YAAYjoD,OAAO,CAACC,KAAKqF,UAASvH,KAAKoC,IAAIF,KAAKqF,MAAK4U,MAAM,GAAG,CAAA;AACrF7T,QAAAA,KAAI8kD,6BAA6B9yB,eAAevyB,KAAKwwB,OAAO,KAAKhwB,KAAK,KAAKE,SAASoZ,YAAY9Z,KAAK2K,OAAOod,UAAU,KAAKw6B,oBAAmB,CAAA;;AAKhJ,YAAMjiD,KAAIiyB,eAAe1Q,WAAUlhB,OAAMA,QAAOkZ,QAAAA;AAGhDzT,UAAIy1B,YAAY2nB,UAAU3nB,UAAU1J,mBAAmBtQ,SAAAA,CAAAA;AACvDzb,UAAI41B,eAAe;AACnB51B,UAAIiW,cAAcmb,UAAUv8B;AAC5BmL,UAAI+V,YAAYqb,UAAUv8B;AAC1BmL,UAAIwrB,OAAOuzB,UAAUlsB;AAErBoF,iBAAWj4B,KAAKoxB,UAAUtb,MAAM5b,IAAGC,IAAG4kD,SAAAA;IACxC;IAKA5C,sBAAsB;AACpB,YAAM/qB,YAAY,KAAK34B,QAAQw4B;AAC/B,YAAM8tB,YAAYtzB,OAAO2F,UAAU5F,IAAI;AACvC,YAAMwzB,eAAe98B,UAAUkP,UAAUzP,OAAO;AAChD,aAAOyP,UAAUrY,UAAUgmC,UAAUpzB,aAAaqzB,aAAahxC,SAAS;IAC1E;IAKAkxC,iBAAiBhlD,IAAGC,IAAG;AACrB,UAAIxH,IAAGwsD,QAAQC;AAEf,UAAI7R,WAAWrzC,IAAG,KAAKK,MAAM,KAAKF,KAAK,KAClCkzC,WAAWpzC,IAAG,KAAKC,KAAK,KAAKE,MAAM,GAAG;AAEzC8kD,aAAK,KAAKzD;AACV,aAAKhpD,KAAI,GAAGA,KAAIysD,GAAG1sD,QAAQ,EAAEC,IAAG;AAC9BwsD,mBAASC,GAAGzsD,EAAE;AAEd,cAAI46C,WAAWrzC,IAAGilD,OAAO5kD,MAAM4kD,OAAO5kD,OAAO4kD,OAAOlxC,KAAK,KACpDs/B,WAAWpzC,IAAGglD,OAAO/kD,KAAK+kD,OAAO/kD,MAAM+kD,OAAOnxC,MAAM,GAAG;AAE1D,mBAAO,KAAK8tC,YAAYnpD,EAAE;;QAE9B;;AAGF,aAAO;IACT;IAMA0sD,YAAY/oC,IAAG;AACb,YAAM1c,OAAO,KAAKnB;AAClB,UAAI,CAAC6mD,WAAWhpC,GAAEllB,MAAMwI,IAAO,GAAA;AAC7B;;AAIF,YAAM2lD,cAAc,KAAKL,iBAAiB5oC,GAAEpc,GAAGoc,GAAEnc,CAAC;AAElD,UAAImc,GAAEllB,SAAS,eAAeklB,GAAEllB,SAAS,YAAY;AACnD,cAAM48C,WAAW,KAAK4N;AACtB,cAAM4D,WAAWhE,WAAWxN,UAAUuR,WAAAA;AACtC,YAAIvR,YAAY,CAACwR,UAAU;AACzBttD,mBAAK0H,KAAK6lD,SAAS;YAACnpC;YAAG03B;YAAU;UAAK,GAAE,IAAI;;AAG9C,aAAK4N,eAAe2D;AAEpB,YAAIA,eAAe,CAACC,UAAU;AAC5BttD,mBAAK0H,KAAK8vC,SAAS;YAACpzB;YAAGipC;YAAa;UAAK,GAAE,IAAI;;MAEnD,WAAWA,aAAa;AACtBrtD,iBAAK0H,KAAKyc,SAAS;UAACC;UAAGipC;UAAa;QAAK,GAAE,IAAI;;IAEnD;EACF;AAEA,WAAStC,kBAAkB7B,UAAUc,WAAWl8C,KAAKuW,YAAYomC,aAAa;AAC5E,UAAMF,YAAYiD,mBAAmBnpC,YAAY6kC,UAAUc,WAAWl8C,GAAAA;AACtE,UAAMu7C,aAAaoE,oBAAoBhD,aAAapmC,YAAY2lC,UAAUvwB,UAAU;AACpF,WAAO;MAAC8wB;MAAWlB;IAAU;EAC/B;AAEA,WAASmE,mBAAmBnpC,YAAY6kC,UAAUc,WAAWl8C,KAAK;AAChE,QAAI4/C,iBAAiBrpC,WAAWT;AAChC,QAAI8pC,kBAAkB,OAAOA,mBAAmB,UAAU;AACxDA,uBAAiBA,eAAe9rD,OAAO,CAACkW,IAAGrP,OAAMqP,GAAEtX,SAASiI,GAAEjI,SAASsX,KAAIrP,EAAC;;AAE9E,WAAOygD,WAAYc,UAAU9iD,OAAO,IAAK4G,IAAI08C,YAAYkD,cAAAA,EAAgB3xC;EAC3E;AAEA,WAAS0xC,oBAAoBhD,aAAapmC,YAAYqoC,gBAAgB;AACpE,QAAIrD,aAAaoB;AACjB,QAAI,OAAOpmC,WAAWT,SAAS,UAAU;AACvCylC,mBAAasD,0BAA0BtoC,YAAYqoC,cAAAA;;AAErD,WAAOrD;EACT;AAEA,WAASsD,0BAA0BtoC,YAAYqoC,gBAAgB;AAC7D,UAAMntB,cAAclb,WAAWT,OAAOS,WAAWT,KAAKpjB,SAAS;AAC/D,WAAOksD,iBAAiBntB;EAC1B;AAEA,WAAS6tB,WAAWluD,MAAMwI,MAAM;AAC9B,SAAKxI,SAAS,eAAeA,SAAS,gBAAgBwI,KAAK8vC,WAAW9vC,KAAK6lD,UAAU;AACnF,aAAO;;AAET,QAAI7lD,KAAKyc,YAAYjlB,SAAS,WAAWA,SAAS,YAAY;AAC5D,aAAO;;AAET,WAAO;EACT;AAEA,MAAA,gBAAe;IACbyL,IAAI;IAMJgjD,UAAUpE;IAEV1pD,MAAMd,OAAOmjD,OAAO37C,UAAS;AAC3B,YAAMgd,SAASxkB,MAAMwkB,SAAS,IAAIgmC,OAAO;QAACz7C,KAAK/O,MAAM+O;QAAKvH,SAAAA;QAASxH;MAAK,CAAA;AACxEytB,cAAQjnB,UAAUxG,OAAOwkB,QAAQhd,QAAAA;AACjCimB,cAAQkD,OAAO3wB,OAAOwkB,MAAAA;IACxB;IAEAthB,KAAKlD,OAAO;AACVytB,cAAQqD,UAAU9wB,OAAOA,MAAMwkB,MAAM;AACrC,aAAOxkB,MAAMwkB;IACf;IAKAyY,aAAaj9B,OAAOmjD,OAAO37C,UAAS;AAClC,YAAMgd,SAASxkB,MAAMwkB;AACrBiJ,cAAQjnB,UAAUxG,OAAOwkB,QAAQhd,QAAAA;AACjCgd,aAAOhd,UAAUA;IACnB;IAIAi3B,YAAYz+B,OAAO;AACjB,YAAMwkB,SAASxkB,MAAMwkB;AACrBA,aAAOwmC,YAAW;AAClBxmC,aAAOynC,eAAc;IACvB;IAGA4C,WAAW7uD,OAAO+X,MAAM;AACtB,UAAI,CAACA,KAAKigC,QAAQ;AAChBh4C,cAAMwkB,OAAO4pC,YAAYr2C,KAAKvV,KAAK;;IAEvC;IAEAqE,UAAU;MACRihB,SAAS;MACT0C,UAAU;MACV2O,OAAO;MACPhL,UAAU;MACVvlB,SAAS;MACTqb,QAAQ;MAGRmB,QAAQC,IAAGC,YAAYd,QAAQ;AAC7B,cAAMta,SAAQob,WAAW9a;AACzB,cAAMskD,KAAKtqC,OAAOxkB;AAClB,YAAI8uD,GAAG/sC,iBAAiB7X,MAAQ,GAAA;AAC9B4kD,aAAGjY,KAAK3sC,MAAAA;AACRob,qBAAW3W,SAAS;eACf;AACLmgD,aAAGhY,KAAK5sC,MAAAA;AACRob,qBAAW3W,SAAS;;MAExB;MAEA8pC,SAAS;MACT+V,SAAS;MAETl7C,QAAQ;QACN1P,OAAO,CAACmL,QAAQA,IAAI/O,MAAMwH,QAAQ5D;QAClCumD,UAAU;QACVz5B,SAAS;QAYTjM,eAAezkB,OAAO;AACpB,gBAAMuR,WAAWvR,MAAM8K,KAAKyG;AAC5B,gBAAM,EAAC+B,QAAQ,EAAC82C,eAAe1lC,YAAY8f,WAAW5gC,OAAAA,QAAOmrD,iBAAiB3V,aAAAA,EAAa,IAAIp5C,MAAMwkB,OAAOhd;AAE5G,iBAAOxH,MAAMgK,uBAAsB,EAAG2a,IAAI,CAAC5Z,SAAS;AAClD,kBAAM6Z,QAAQ7Z,KAAK6B,WAAWsI,SAASk1C,gBAAgB,IAAItqD,MAAS;AACpE,kBAAM+jB,cAAcoN,UAAUrM,MAAMf,WAAW;AAE/C,mBAAO;cACLgB,MAAMtT,SAASxG,KAAKb,KAAK,EAAEwK;cAC3BoQ,WAAWF,MAAMG;cACjBG,WAAWthB;cACX+K,QAAQ,CAAC5D,KAAK4pC;cACdkI,SAASj4B,MAAMk4B;cACf8P,UAAUhoC,MAAMkf;cAChBuC,gBAAgBzhB,MAAMof;cACtB8X,UAAUl3B,MAAMg3B;cAChBz2B,YAAYtB,YAAY7G,QAAQ6G,YAAY9G,UAAU;cACtDiI,aAAaJ,MAAMK;cACnBP,YAAYA,cAAcE,MAAMF;cAChC7E,UAAU+E,MAAM/E;cAChB2kB,WAAWA,aAAa5f,MAAM4f;cAC9B4U,cAAc2V,oBAAoB3V,gBAAgBx0B,MAAMw0B;cAGxD5uC,cAAcO,KAAKb;YACrB;UACF,GAAG,IAAI;QACT;MACF;MAEA81B,OAAO;QACLp8B,OAAO,CAACmL,QAAQA,IAAI/O,MAAMwH,QAAQ5D;QAClCkkB,SAAS;QACT0C,UAAU;QACV3F,MAAM;MACR;IACF;IAEAX,aAAa;MACXC,aAAa,CAACtG,UAAS,CAACA,MAAKwG,WAAW,IAAA;MACxC/Q,QAAQ;QACN6Q,aAAa,CAACtG,UAAS,CAAC;UAAC;UAAkB;UAAU;QAAO,EAAC8P,SAAS9P,KAAAA;MACxE;IACF;EACF;ACzsBO,MAAMmxC,QAAN,cAAoBl4B,SAAAA;IAIzBt3B,YAAY6G,SAAQ;AAClB,YAAK;AAEL,WAAKrG,QAAQqG,QAAOrG;AACpB,WAAKwH,UAAUnB,QAAOmB;AACtB,WAAKuH,MAAM1I,QAAO0I;AAClB,WAAKkgD,WAAWnvD;AAChB,WAAKqJ,MAAMrJ;AACX,WAAKuJ,SAASvJ;AACd,WAAKwJ,OAAOxJ;AACZ,WAAKsJ,QAAQtJ;AACb,WAAKkd,QAAQld;AACb,WAAKid,SAASjd;AACd,WAAK0qB,WAAW1qB;AAChB,WAAKmkB,SAASnkB;AACd,WAAKquB,WAAWruB;IAClB;IAEA4F,OAAO8c,UAAUC,WAAW;AAC1B,YAAM9Z,OAAO,KAAKnB;AAElB,WAAK8B,OAAO;AACZ,WAAKH,MAAM;AAEX,UAAI,CAACR,KAAKmf,SAAS;AACjB,aAAK9K,QAAQ,KAAKD,SAAS,KAAK3T,QAAQ,KAAKC,SAAS;AACtD;;AAGF,WAAK2T,QAAQ,KAAK5T,QAAQoZ;AAC1B,WAAKzF,SAAS,KAAK1T,SAASoZ;AAE5B,YAAMgiB,YAAYt9B,QAAQwB,KAAKkc,IAAI,IAAIlc,KAAKkc,KAAKpjB,SAAS;AAC1D,WAAKwtD,WAAWh+B,UAAUtoB,KAAK+nB,OAAO;AACtC,YAAMw+B,WAAWzqB,YAAYjK,OAAO7xB,KAAK4xB,IAAI,EAAEG,aAAa,KAAKu0B,SAASlyC;AAE1E,UAAI,KAAK5B,aAAY,GAAI;AACvB,aAAK4B,SAASmyC;aACT;AACL,aAAKlyC,QAAQkyC;;IAEjB;IAEA/zC,eAAe;AACb,YAAM4R,MAAM,KAAKvlB,QAAQgjB;AACzB,aAAOuC,QAAQ,SAASA,QAAQ;IAClC;IAEAoiC,UAAUlwC,SAAQ;AAChB,YAAM,EAAC9V,KAAAA,MAAKG,MAAAA,OAAMD,QAAAA,SAAQD,OAAAA,QAAO5B,SAAAA,SAAAA,IAAW;AAC5C,YAAM2xB,QAAQ3xB,SAAQ2xB;AACtB,UAAItZ,WAAW;AACf,UAAI2C,UAAUwY,QAAQC;AAEtB,UAAI,KAAK9f,aAAY,GAAI;AACvB6f,iBAASE,eAAe/B,OAAO7vB,OAAMF,MAAAA;AACrC6xB,iBAAS9xB,OAAM8V;AACfuD,mBAAWpZ,SAAQE;aACd;AACL,YAAI9B,SAAQgjB,aAAa,QAAQ;AAC/BwQ,mBAAS1xB,QAAO2V;AAChBgc,mBAASC,eAAe/B,OAAO9vB,SAAQF,IAAAA;AACvC0W,qBAAWwB,KAAK;eACX;AACL2Z,mBAAS5xB,SAAQ6V;AACjBgc,mBAASC,eAAe/B,OAAOhwB,MAAKE,OAAAA;AACpCwW,qBAAWwB,KAAK;;AAElBmB,mBAAWnZ,UAASF;;AAEtB,aAAO;QAAC6xB;QAAQC;QAAQzY;QAAU3C;MAAQ;IAC5C;IAEAle,OAAO;AACL,YAAMoN,MAAM,KAAKA;AACjB,YAAMpG,OAAO,KAAKnB;AAElB,UAAI,CAACmB,KAAKmf,SAAS;AACjB;;AAGF,YAAMsnC,WAAW50B,OAAO7xB,KAAK4xB,IAAI;AACjC,YAAMG,aAAa00B,SAAS10B;AAC5B,YAAMzb,UAASyb,aAAa,IAAI,KAAKu0B,SAAS9lD;AAC9C,YAAM,EAAC6xB,QAAQC,QAAQzY,UAAU3C,SAAAA,IAAY,KAAKsvC,UAAUlwC,OAAAA;AAE5D+nB,iBAAWj4B,KAAKpG,KAAKkc,MAAM,GAAG,GAAGuqC,UAAU;QACzCxrD,OAAO+E,KAAK/E;QACZ4e;QACA3C;QACA2kB,WAAW1J,mBAAmBnyB,KAAKwwB,KAAK;QACxCwL,cAAc;QACde,aAAa;UAAC1K;UAAQC;QAAO;MAC/B,CAAA;IACF;EACF;AAEA,WAASo0B,YAAYrvD,OAAOmgC,WAAW;AACrC,UAAMH,QAAQ,IAAIgvB,MAAM;MACtBjgD,KAAK/O,MAAM+O;MACXvH,SAAS24B;MACTngC;IACF,CAAA;AAEAytB,YAAQjnB,UAAUxG,OAAOggC,OAAOG,SAAAA;AAChC1S,YAAQkD,OAAO3wB,OAAOggC,KAAAA;AACtBhgC,UAAMsvD,aAAatvB;EACrB;AAEA,MAAA,eAAe;IACbp0B,IAAI;IAMJgjD,UAAUI;IAEVluD,MAAMd,OAAOmjD,OAAO37C,UAAS;AAC3B6nD,kBAAYrvD,OAAOwH,QAAAA;IACrB;IAEAtE,KAAKlD,OAAO;AACV,YAAMsvD,aAAatvD,MAAMsvD;AACzB7hC,cAAQqD,UAAU9wB,OAAOsvD,UAAAA;AACzB,aAAOtvD,MAAMsvD;IACf;IAEAryB,aAAaj9B,OAAOmjD,OAAO37C,UAAS;AAClC,YAAMw4B,QAAQhgC,MAAMsvD;AACpB7hC,cAAQjnB,UAAUxG,OAAOggC,OAAOx4B,QAAAA;AAChCw4B,YAAMx4B,UAAUA;IAClB;IAEAX,UAAU;MACRsyB,OAAO;MACPrR,SAAS;MACTyS,MAAM;QACJtW,QAAQ;MACV;MACAkK,UAAU;MACVuC,SAAS;MACTlG,UAAU;MACV3F,MAAM;MACNZ,QAAQ;IACV;IAEAkT,eAAe;MACbvzB,OAAO;IACT;IAEAsgB,aAAa;MACXC,aAAa;MACbC,YAAY;IACd;EACF;AClKA,MAAMO,OAAM,oBAAI4qC,QAAAA;AAEhB,MAAA,kBAAe;IACb3jD,IAAI;IAEJ9K,MAAMd,OAAOmjD,OAAO37C,UAAS;AAC3B,YAAMw4B,QAAQ,IAAIgvB,MAAM;QACtBjgD,KAAK/O,MAAM+O;QACXvH,SAAAA;QACAxH;MACF,CAAA;AAEAytB,cAAQjnB,UAAUxG,OAAOggC,OAAOx4B,QAAAA;AAChCimB,cAAQkD,OAAO3wB,OAAOggC,KAAAA;AACtBrb,MAAAA,KAAIriB,IAAItC,OAAOggC,KAAAA;IACjB;IAEA98B,KAAKlD,OAAO;AACVytB,cAAQqD,UAAU9wB,OAAO2kB,KAAIxiB,IAAInC,KAAAA,CAAAA;AACjC2kB,MAAAA,KAAIthB,OAAOrD,KAAAA;IACb;IAEAi9B,aAAaj9B,OAAOmjD,OAAO37C,UAAS;AAClC,YAAMw4B,QAAQrb,KAAIxiB,IAAInC,KAAAA;AACtBytB,cAAQjnB,UAAUxG,OAAOggC,OAAOx4B,QAAAA;AAChCw4B,YAAMx4B,UAAUA;IAClB;IAEAX,UAAU;MACRsyB,OAAO;MACPrR,SAAS;MACTyS,MAAM;QACJtW,QAAQ;MACV;MACAkK,UAAU;MACVuC,SAAS;MACTlG,UAAU;MACV3F,MAAM;MACNZ,QAAQ;IACV;IAEAkT,eAAe;MACbvzB,OAAO;IACT;IAEAsgB,aAAa;MACXC,aAAa;MACbC,YAAY;IACd;EACF;ACpCA,MAAMorC,cAAc;IAIlBC,QAAQjuD,OAAO;AACb,UAAI,CAACA,MAAMC,QAAQ;AACjB,eAAO;;AAGT,UAAIC,IAAGu3B;AACP,UAAIy2B,OAAO,oBAAIvhB,IAAAA;AACf,UAAIjlC,KAAI;AACR,UAAI4J,QAAQ;AAEZ,WAAKpR,KAAI,GAAGu3B,MAAMz3B,MAAMC,QAAQC,KAAIu3B,KAAK,EAAEv3B,IAAG;AAC5C,cAAM2oB,KAAK7oB,MAAME,EAAAA,EAAGsM;AACpB,YAAIqc,MAAMA,GAAG2M,SAAQ,GAAI;AACvB,gBAAMjK,MAAM1C,GAAG0M,gBAAe;AAC9B24B,eAAK/sD,IAAIoqB,IAAI9jB,CAAC;AACdC,UAAAA,MAAK6jB,IAAI7jB;AACT,YAAE4J;;MAEN;AAGA,UAAIA,UAAU,KAAK48C,KAAKvnD,SAAS,GAAG;AAClC,eAAO;;AAGT,YAAMwnD,WAAW;QAAID,GAAAA;QAAM7sD,OAAO,CAACkW,IAAGrP,OAAMqP,KAAIrP,EAAAA,IAAKgmD,KAAKvnD;AAE1D,aAAO;QACLc,GAAG0mD;QACHzmD,GAAGA,KAAI4J;MACT;IACF;IAKA6Z,QAAQnrB,OAAOouD,eAAe;AAC5B,UAAI,CAACpuD,MAAMC,QAAQ;AACjB,eAAO;;AAGT,UAAIwH,KAAI2mD,cAAc3mD;AACtB,UAAIC,KAAI0mD,cAAc1mD;AACtB,UAAI+iB,cAAcjgB,OAAOE;AACzB,UAAIxK,IAAGu3B,KAAK42B;AAEZ,WAAKnuD,KAAI,GAAGu3B,MAAMz3B,MAAMC,QAAQC,KAAIu3B,KAAK,EAAEv3B,IAAG;AAC5C,cAAM2oB,KAAK7oB,MAAME,EAAAA,EAAGsM;AACpB,YAAIqc,MAAMA,GAAG2M,SAAQ,GAAI;AACvB,gBAAMla,UAASuN,GAAG6B,eAAc;AAChC,gBAAMghB,KAAI4iB,sBAAsBF,eAAe9yC,OAAAA;AAE/C,cAAIowB,KAAIjhB,aAAa;AACnBA,0BAAcihB;AACd2iB,6BAAiBxlC;;;MAGvB;AAEA,UAAIwlC,gBAAgB;AAClB,cAAME,KAAKF,eAAe94B,gBAAe;AACzC9tB,QAAAA,KAAI8mD,GAAG9mD;AACPC,QAAAA,KAAI6mD,GAAG7mD;;AAGT,aAAO;QACLD,GAAAA;QACAC,GAAAA;MACF;IACF;EACF;AAGA,WAAS8mD,aAAa10C,MAAM20C,QAAQ;AAClC,QAAIA,QAAQ;AACV,UAAI9oD,QAAQ8oD,MAAS,GAAA;AAEnB3kD,cAAMyd,UAAUrmB,KAAKwtD,MAAM50C,MAAM20C,MAAAA;aAC5B;AACL30C,aAAK5Y,KAAKutD,MAAAA;;;AAId,WAAO30C;EACT;AAQA,WAAS60C,cAAcC,KAAK;AAC1B,SAAK,OAAOA,QAAQ,YAAYA,eAAeC,WAAWD,IAAI1yC,QAAQ,IAAA,IAAQ,IAAI;AAChF,aAAO0yC,IAAIxnB,MAAM,IAAA;;AAEnB,WAAOwnB;EACT;AASA,WAASE,kBAAkBtwD,OAAO4B,MAAM;AACtC,UAAM,EAACoM,SAASxD,cAAcN,OAAAA,OAAAA,IAAStI;AACvC,UAAMgL,aAAa5M,MAAMwR,eAAehH,YAAAA,EAAcoC;AACtD,UAAM,EAAC8H,OAAOxM,MAAAA,IAAS0E,WAAW6H,iBAAiBvK,MAAAA;AAEnD,WAAO;MACLlK;MACA0U;MACA7H,QAAQD,WAAWgH,UAAU1J,MAAAA;MAC7BgE,KAAKlO,MAAM8K,KAAKyG,SAAS/G,YAAa,EAACM,KAAKZ,MAAM;MAClDqmD,gBAAgBroD;MAChB4F,SAASlB,WAAW2D,WAAU;MAC9BtC,WAAW/D;MACXM;MACAwD;IACF;EACF;AAKA,WAASwiD,eAAeC,SAASjpD,UAAS;AACxC,UAAMuH,MAAM0hD,QAAQzwD,MAAM+O;AAC1B,UAAM,EAAC2hD,MAAMC,QAAQ3wB,MAAAA,IAASywB;AAC9B,UAAM,EAACtG,UAAUD,UAAAA,IAAa1iD;AAC9B,UAAMopD,WAAWp2B,OAAOhzB,SAAQopD,QAAQ;AACxC,UAAM9C,YAAYtzB,OAAOhzB,SAAQsmD,SAAS;AAC1C,UAAM+C,aAAar2B,OAAOhzB,SAAQqpD,UAAU;AAC5C,UAAMC,iBAAiB9wB,MAAMv+B;AAC7B,UAAMsvD,kBAAkBJ,OAAOlvD;AAC/B,UAAMuvD,oBAAoBN,KAAKjvD;AAE/B,UAAMivB,UAAUO,UAAUzpB,SAAQkpB,OAAO;AACzC,QAAI3T,UAAS2T,QAAQ3T;AACrB,QAAIC,SAAQ;AAGZ,QAAIi0C,qBAAqBP,KAAK7tD,OAAO,CAACiQ,OAAOo+C,aAAap+C,QAAQo+C,SAASC,OAAO1vD,SAASyvD,SAASz2B,MAAMh5B,SAASyvD,SAASE,MAAM3vD,QAAQ,CAAA;AAC1IwvD,0BAAsBR,QAAQY,WAAW5vD,SAASgvD,QAAQa,UAAU7vD;AAEpE,QAAIqvD,gBAAgB;AAClB/zC,MAAAA,WAAU+zC,iBAAiBhD,UAAUpzB,cACnCo2B,iBAAiB,KAAKtpD,SAAQ+pD,eAC/B/pD,SAAQgqD;;AAEX,QAAIP,oBAAoB;AAEtB,YAAMQ,iBAAiBjqD,SAAQkqD,gBAAgB9wD,KAAKoC,IAAIknD,WAAW0G,SAASl2B,UAAU,IAAIk2B,SAASl2B;AACnG3d,MAAAA,WAAUi0C,oBAAoBS,kBAC5BR,qBAAqBD,qBAAqBJ,SAASl2B,cACnDu2B,qBAAqB,KAAKzpD,SAAQmqD;;AAEtC,QAAIZ,iBAAiB;AACnBh0C,MAAAA,WAAUvV,SAAQoqD,kBACjBb,kBAAkBF,WAAWn2B,cAC5Bq2B,kBAAkB,KAAKvpD,SAAQqqD;;AAInC,QAAIC,eAAe;AACnB,UAAMC,eAAe,SAAStsC,MAAM;AAClCzI,MAAAA,SAAQpc,KAAKoC,IAAIga,QAAOjO,IAAI08C,YAAYhmC,IAAMzI,EAAAA,QAAQ80C,YAAAA;IACxD;AAEA/iD,QAAI82B,KAAI;AAER92B,QAAIwrB,OAAOuzB,UAAUlsB;AACrBxQ,SAAKq/B,QAAQzwB,OAAO+xB,YAAAA;AAGpBhjD,QAAIwrB,OAAOq2B,SAAShvB;AACpBxQ,SAAKq/B,QAAQY,WAAWz4C,OAAO63C,QAAQa,SAAS,GAAGS,YAAAA;AAGnDD,mBAAetqD,SAAQkqD,gBAAiBvH,WAAW,IAAI3iD,SAAQunB,aAAc;AAC7EqC,SAAKs/B,MAAM,CAACQ,aAAa;AACvB9/B,WAAK8/B,SAASC,QAAQY,YAAAA;AACtB3gC,WAAK8/B,SAASz2B,OAAOs3B,YAAAA;AACrB3gC,WAAK8/B,SAASE,OAAOW,YAAAA;IACvB,CAAA;AAGAD,mBAAe;AAGf/iD,QAAIwrB,OAAOs2B,WAAWjvB;AACtBxQ,SAAKq/B,QAAQE,QAAQoB,YAAAA;AAErBhjD,QAAIg3B,QAAO;AAGX/oB,IAAAA,UAAS0T,QAAQ1T;AAEjB,WAAO;MAACA,OAAAA;MAAOD,QAAAA;IAAM;EACvB;AAEA,WAASi1C,gBAAgBhyD,OAAOmI,OAAM;AACpC,UAAM,EAACe,GAAAA,IAAG6T,QAAAA,QAAAA,IAAU5U;AAEpB,QAAIe,KAAI6T,UAAS,GAAG;AAClB,aAAO;IACT,WAAW7T,KAAKlJ,MAAM+c,SAASA,UAAS,GAAI;AAC1C,aAAO;;AAET,WAAO;EACT;AAEA,WAASk1C,oBAAoBC,QAAQlyD,OAAOwH,UAASW,OAAM;AACzD,UAAM,EAACc,GAAAA,IAAG+T,OAAAA,OAAAA,IAAS7U;AACnB,UAAMgqD,QAAQ3qD,SAAQ4qD,YAAY5qD,SAAQ6qD;AAC1C,QAAIH,WAAW,UAAUjpD,KAAI+T,SAAQm1C,QAAQnyD,MAAMgd,OAAO;AACxD,aAAO;;AAGT,QAAIk1C,WAAW,WAAWjpD,KAAI+T,SAAQm1C,QAAQ,GAAG;AAC/C,aAAO;;EAEX;AAEA,WAASG,gBAAgBtyD,OAAOwH,UAASW,OAAMoqD,QAAQ;AACrD,UAAM,EAACtpD,GAAAA,IAAG+T,OAAAA,OAAAA,IAAS7U;AACnB,UAAM,EAAC6U,OAAOw1C,YAAYx9C,WAAW,EAAC1L,MAAAA,OAAMF,OAAAA,OAAK,EAAC,IAAIpJ;AACtD,QAAIkyD,SAAS;AAEb,QAAIK,WAAW,UAAU;AACvBL,eAASjpD,OAAMK,QAAOF,UAAS,IAAI,SAAS;eACnCH,MAAK+T,SAAQ,GAAG;AACzBk1C,eAAS;IACX,WAAWjpD,MAAKupD,aAAax1C,SAAQ,GAAG;AACtCk1C,eAAS;;AAGX,QAAID,oBAAoBC,QAAQlyD,OAAOwH,UAASW,KAAO,GAAA;AACrD+pD,eAAS;;AAGX,WAAOA;EACT;AAKA,WAASO,mBAAmBzyD,OAAOwH,UAASW,OAAM;AAChD,UAAMoqD,SAASpqD,MAAKoqD,UAAU/qD,SAAQ+qD,UAAUP,gBAAgBhyD,OAAOmI,KAAAA;AAEvE,WAAO;MACL+pD,QAAQ/pD,MAAK+pD,UAAU1qD,SAAQ0qD,UAAUI,gBAAgBtyD,OAAOwH,UAASW,OAAMoqD,MAAAA;MAC/EA;IACF;EACF;AAEA,WAASG,OAAOvqD,OAAM+pD,QAAQ;AAC5B,QAAI,EAACjpD,GAAAA,IAAG+T,OAAAA,OAAAA,IAAS7U;AACjB,QAAI+pD,WAAW,SAAS;AACtBjpD,MAAAA,MAAK+T;eACIk1C,WAAW,UAAU;AAC9BjpD,MAAAA,MAAM+T,SAAQ;;AAEhB,WAAO/T;EACT;AAEA,WAAS0pD,OAAOxqD,OAAMoqD,QAAQK,gBAAgB;AAE5C,QAAI,EAAC1pD,GAAAA,IAAG6T,QAAAA,QAAAA,IAAU5U;AAClB,QAAIoqD,WAAW,OAAO;AACpBrpD,MAAAA,MAAK0pD;eACIL,WAAW,UAAU;AAC9BrpD,MAAAA,MAAK6T,UAAS61C;WACT;AACL1pD,MAAAA,MAAM6T,UAAS;;AAEjB,WAAO7T;EACT;AAKA,WAAS2pD,mBAAmBrrD,UAASW,OAAM2qD,WAAW9yD,OAAO;AAC3D,UAAM,EAACoyD,WAAWC,cAAcU,aAAAA,IAAgBvrD;AAChD,UAAM,EAAC0qD,QAAQK,OAAAA,IAAUO;AACzB,UAAMF,iBAAiBR,YAAYC;AACnC,UAAM,EAACnR,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAcgS,YAAAA;AAEnE,QAAI9pD,KAAIypD,OAAOvqD,OAAM+pD,MAAAA;AACrB,UAAMhpD,KAAIypD,OAAOxqD,OAAMoqD,QAAQK,cAAAA;AAE/B,QAAIL,WAAW,UAAU;AACvB,UAAIL,WAAW,QAAQ;AACrBjpD,QAAAA,MAAK2pD;iBACIV,WAAW,SAAS;AAC7BjpD,QAAAA,MAAK2pD;;eAEEV,WAAW,QAAQ;AAC5BjpD,MAAAA,MAAKrI,KAAKoC,IAAIk+C,SAASE,UAAcgR,IAAAA;eAC5BF,WAAW,SAAS;AAC7BjpD,MAAAA,MAAKrI,KAAKoC,IAAIm+C,UAAUE,WAAe+Q,IAAAA;;AAGzC,WAAO;MACLnpD,GAAG82B,YAAY92B,IAAG,GAAGjJ,MAAMgd,QAAQ7U,MAAK6U,KAAK;MAC7C9T,GAAG62B,YAAY72B,IAAG,GAAGlJ,MAAM+c,SAAS5U,MAAK4U,MAAM;IACjD;EACF;AAEA,WAASi2C,YAAYvC,SAASt3B,OAAO3xB,UAAS;AAC5C,UAAMkpB,UAAUO,UAAUzpB,SAAQkpB,OAAO;AAEzC,WAAOyI,UAAU,WACbs3B,QAAQxnD,IAAIwnD,QAAQzzC,QAAQ,IAC5Bmc,UAAU,UACRs3B,QAAQxnD,IAAIwnD,QAAQzzC,QAAQ0T,QAAQtnB,QACpCqnD,QAAQxnD,IAAIynB,QAAQpnB;EAC5B;AAKA,WAAS2pD,wBAAwBh0B,WAAU;AACzC,WAAO+wB,aAAa,CAAA,GAAIG,cAAclxB,SAAAA,CAAAA;EACxC;AAEA,WAASi0B,qBAAqBtlD,QAAQ6iD,SAAS0C,cAAc;AAC3D,WAAOtlD,cAAcD,QAAQ;MAC3B6iD;MACA0C;MACAhzD,MAAM;IACR,CAAA;EACF;AAEA,WAASizD,kBAAkBhzD,WAAWiV,SAAS;AAC7C,UAAMwT,WAAWxT,WAAWA,QAAQvH,WAAWuH,QAAQvH,QAAQ2iD,WAAWp7C,QAAQvH,QAAQ2iD,QAAQrwD;AAClG,WAAOyoB,WAAWzoB,UAAUyoB,SAASA,QAAAA,IAAYzoB;EACnD;AAEA,MAAMizD,mBAAmB;IAEvBC,aAAaC;IACbvzB,MAAMmzB,cAAc;AAClB,UAAIA,aAAa1xD,SAAS,GAAG;AAC3B,cAAMG,OAAOuxD,aAAa,CAAE;AAC5B,cAAM7/C,SAAS1R,KAAK5B,MAAM8K,KAAKwI;AAC/B,cAAMkgD,aAAalgD,SAASA,OAAO7R,SAAS;AAE5C,YAAI,QAAQ,KAAK+F,WAAW,KAAKA,QAAQ+C,SAAS,WAAW;AAC3D,iBAAO3I,KAAKkM,QAAQ4G,SAAS;mBACpB9S,KAAK8S,OAAO;AACrB,iBAAO9S,KAAK8S;QACd,WAAW8+C,aAAa,KAAK5xD,KAAKqM,YAAYulD,YAAY;AACxD,iBAAOlgD,OAAO1R,KAAKqM,SAAS;;;AAIhC,aAAO;IACT;IACAwlD,YAAYF;IAGZlC,YAAYkC;IAGZG,aAAaH;IACb7+C,MAAMi/C,aAAa;AACjB,UAAI,QAAQ,KAAKnsD,WAAW,KAAKA,QAAQ+C,SAAS,WAAW;AAC3D,eAAOopD,YAAYj/C,QAAQ,OAAOi/C,YAAYpD,kBAAkBoD,YAAYpD;;AAG9E,UAAI77C,QAAQi/C,YAAY7lD,QAAQ4G,SAAS;AAEzC,UAAIA,OAAO;AACTA,iBAAS;;AAEX,YAAMxM,QAAQyrD,YAAYpD;AAC1B,UAAI,CAACz2C,cAAc5R,KAAQ,GAAA;AACzBwM,iBAASxM;;AAEX,aAAOwM;IACT;IACAk/C,WAAWD,aAAa;AACtB,YAAM5oD,OAAO4oD,YAAY3zD,MAAMwR,eAAemiD,YAAYnpD,YAAY;AACtE,YAAMhD,WAAUuD,KAAK6B,WAAWsI,SAASy+C,YAAY1lD,SAAS;AAC9D,aAAO;QACLgX,aAAazd,SAAQyd;QACrBF,iBAAiBvd,SAAQud;QACzBlB,aAAarc,SAAQqc;QACrBigB,YAAYt8B,SAAQs8B;QACpBE,kBAAkBx8B,SAAQw8B;QAC1BoV,cAAc;MAChB;IACF;IACAya,iBAAiB;AACf,aAAO,KAAKrsD,QAAQssD;IACtB;IACAC,gBAAgBJ,aAAa;AAC3B,YAAM5oD,OAAO4oD,YAAY3zD,MAAMwR,eAAemiD,YAAYnpD,YAAY;AACtE,YAAMhD,WAAUuD,KAAK6B,WAAWsI,SAASy+C,YAAY1lD,SAAS;AAC9D,aAAO;QACLyW,YAAYld,SAAQkd;QACpB7E,UAAUrY,SAAQqY;MACpB;IACF;IACAm0C,YAAYT;IAGZjC,WAAWiC;IAGXU,cAAcV;IACd5C,QAAQ4C;IACRW,aAAaX;EACf;AAWA,WAASY,2BAA2B/zD,WAAWyd,OAAM9O,KAAKq7B,KAAK;AAC7D,UAAMtgB,SAAS1pB,UAAUyd,KAAAA,EAAM5c,KAAK8N,KAAKq7B,GAAAA;AAEzC,QAAI,OAAOtgB,WAAW,aAAa;AACjC,aAAOupC,iBAAiBx1C,KAAAA,EAAM5c,KAAK8N,KAAKq7B,GAAAA;;AAG1C,WAAOtgB;EACT;AAEO,MAAMsqC,UAAN,cAAsBt9B,SAAAA;IAO3Bt3B,YAAY6G,SAAQ;AAClB,YAAK;AAEL,WAAKguD,UAAU;AACf,WAAKxyD,UAAU,CAAA;AACf,WAAKyyD,iBAAiBx0D;AACtB,WAAKy0D,QAAQz0D;AACb,WAAK00D,oBAAoB10D;AACzB,WAAK20D,gBAAgB,CAAA;AACrB,WAAK3sD,cAAchI;AACnB,WAAK6P,WAAW7P;AAChB,WAAKE,QAAQqG,QAAOrG;AACpB,WAAKwH,UAAUnB,QAAOmB;AACtB,WAAKktD,aAAa50D;AAClB,WAAKkgC,QAAQlgC;AACb,WAAKuxD,aAAavxD;AAClB,WAAK4wD,OAAO5wD;AACZ,WAAKwxD,YAAYxxD;AACjB,WAAK6wD,SAAS7wD;AACd,WAAKoyD,SAASpyD;AACd,WAAKyyD,SAASzyD;AACd,WAAKmJ,IAAInJ;AACT,WAAKoJ,IAAIpJ;AACT,WAAKid,SAASjd;AACd,WAAKkd,QAAQld;AACb,WAAK60D,SAAS70D;AACd,WAAK80D,SAAS90D;AAGd,WAAK+0D,cAAc/0D;AACnB,WAAKg1D,mBAAmBh1D;AACxB,WAAKi1D,kBAAkBj1D;IACzB;IAEAiQ,WAAWvI,UAAS;AAClB,WAAKA,UAAUA;AACf,WAAKgtD,oBAAoB10D;AACzB,WAAK6P,WAAW7P;IAClB;IAKAmW,qBAAqB;AACnB,YAAM1H,SAAS,KAAKimD;AAEpB,UAAIjmD,QAAQ;AACV,eAAOA;;AAGT,YAAMvO,QAAQ,KAAKA;AACnB,YAAMwH,WAAU,KAAKA,QAAQ+0B,WAAW,KAAK5pB,WAAU,CAAA;AACvD,YAAMhK,OAAOnB,SAAQowB,WAAW53B,MAAMwH,QAAQV,aAAaU,SAAQE;AACnE,YAAMA,aAAa,IAAItB,WAAW,KAAKpG,OAAO2I,IAAAA;AAC9C,UAAIA,KAAKyN,YAAY;AACnB,aAAKo+C,oBAAoB7tD,OAAOqP,OAAOtO,UAAAA;;AAGzC,aAAOA;IACT;IAKAiL,aAAa;AACX,aAAO,KAAKhD,aACZ,KAAKA,WAAWujD,qBAAqB,KAAKlzD,MAAM2S,WAAU,GAAI,MAAM,KAAK8hD,aAAa;IACxF;IAEAO,SAAS3/C,SAAS7N,UAAS;AACzB,YAAM,EAACpH,UAAS,IAAIoH;AAEpB,YAAM8rD,cAAca,2BAA2B/zD,WAAW,eAAe,MAAMiV,OAAAA;AAC/E,YAAM2qB,QAAQm0B,2BAA2B/zD,WAAW,SAAS,MAAMiV,OAAAA;AACnE,YAAMo+C,aAAaU,2BAA2B/zD,WAAW,cAAc,MAAMiV,OAAAA;AAE7E,UAAIolB,QAAQ,CAAA;AACZA,cAAQu1B,aAAav1B,OAAO01B,cAAcmD,WAAAA,CAAAA;AAC1C74B,cAAQu1B,aAAav1B,OAAO01B,cAAcnwB,KAAAA,CAAAA;AAC1CvF,cAAQu1B,aAAav1B,OAAO01B,cAAcsD,UAAAA,CAAAA;AAE1C,aAAOh5B;IACT;IAEAw6B,cAAc9B,cAAc3rD,UAAS;AACnC,aAAOyrD,wBACLkB,2BAA2B3sD,SAAQpH,WAAW,cAAc,MAAM+yD,YAAAA,CAAAA;IAEtE;IAEA+B,QAAQ/B,cAAc3rD,UAAS;AAC7B,YAAM,EAACpH,UAAS,IAAIoH;AACpB,YAAM2tD,YAAY,CAAA;AAElB/jC,WAAK+hC,cAAc,CAAC99C,YAAY;AAC9B,cAAM67C,WAAW;UACfC,QAAQ,CAAA;UACR12B,OAAO,CAAA;UACP22B,OAAO,CAAA;QACT;AACA,cAAMgE,SAAShC,kBAAkBhzD,WAAWiV,OAAAA;AAC5C26C,qBAAakB,SAASC,QAAQhB,cAAcgE,2BAA2BiB,QAAQ,eAAe,MAAM//C,OAAAA,CAAAA,CAAAA;AACpG26C,qBAAakB,SAASz2B,OAAO05B,2BAA2BiB,QAAQ,SAAS,MAAM//C,OAAAA,CAAAA;AAC/E26C,qBAAakB,SAASE,OAAOjB,cAAcgE,2BAA2BiB,QAAQ,cAAc,MAAM//C,OAAAA,CAAAA,CAAAA;AAElG8/C,kBAAUzyD,KAAKwuD,QAAAA;MACjB,CAAA;AAEA,aAAOiE;IACT;IAEAE,aAAalC,cAAc3rD,UAAS;AAClC,aAAOyrD,wBACLkB,2BAA2B3sD,SAAQpH,WAAW,aAAa,MAAM+yD,YAAAA,CAAAA;IAErE;IAGAmC,UAAUnC,cAAc3rD,UAAS;AAC/B,YAAM,EAACpH,UAAS,IAAIoH;AAEpB,YAAMysD,eAAeE,2BAA2B/zD,WAAW,gBAAgB,MAAM+yD,YAAAA;AACjF,YAAMxC,SAASwD,2BAA2B/zD,WAAW,UAAU,MAAM+yD,YAAAA;AACrE,YAAMe,cAAcC,2BAA2B/zD,WAAW,eAAe,MAAM+yD,YAAAA;AAE/E,UAAI14B,QAAQ,CAAA;AACZA,cAAQu1B,aAAav1B,OAAO01B,cAAc8D,YAAAA,CAAAA;AAC1Cx5B,cAAQu1B,aAAav1B,OAAO01B,cAAcQ,MAAAA,CAAAA;AAC1Cl2B,cAAQu1B,aAAav1B,OAAO01B,cAAc+D,WAAAA,CAAAA;AAE1C,aAAOz5B;IACT;IAKA86B,aAAa/tD,UAAS;AACpB,YAAM/B,UAAS,KAAK5D;AACpB,YAAMiJ,QAAO,KAAK9K,MAAM8K;AACxB,YAAM+pD,cAAc,CAAA;AACpB,YAAMC,mBAAmB,CAAA;AACzB,YAAMC,kBAAkB,CAAA;AACxB,UAAI5B,eAAe,CAAA;AACnB,UAAIzxD,IAAGu3B;AAEP,WAAKv3B,KAAI,GAAGu3B,MAAMxzB,QAAOhE,QAAQC,KAAIu3B,KAAK,EAAEv3B,IAAG;AAC7CyxD,qBAAazwD,KAAK4tD,kBAAkB,KAAKtwD,OAAOyF,QAAO/D,EAAE,CAAA,CAAA;MAC3D;AAGA,UAAI8F,SAAQiG,QAAQ;AAClB0lD,uBAAeA,aAAa1lD,OAAO,CAACO,SAAS9D,QAAO4iB,WAAUtlB,SAAQiG,OAAOO,SAAS9D,QAAO4iB,QAAOhiB,KAAAA,CAAAA;;AAItG,UAAItD,SAAQguD,UAAU;AACpBrC,uBAAeA,aAAar6C,KAAK,CAACC,IAAGrP,OAAMlC,SAAQguD,SAASz8C,IAAGrP,IAAGoB,KAAAA,CAAAA;;AAIpEsmB,WAAK+hC,cAAc,CAAC99C,YAAY;AAC9B,cAAM+/C,SAAShC,kBAAkB5rD,SAAQpH,WAAWiV,OAAAA;AACpDw/C,oBAAYnyD,KAAKyxD,2BAA2BiB,QAAQ,cAAc,MAAM//C,OAAAA,CAAAA;AACxEy/C,yBAAiBpyD,KAAKyxD,2BAA2BiB,QAAQ,mBAAmB,MAAM//C,OAAAA,CAAAA;AAClF0/C,wBAAgBryD,KAAKyxD,2BAA2BiB,QAAQ,kBAAkB,MAAM//C,OAAAA,CAAAA;MAClF,CAAA;AAEA,WAAKw/C,cAAcA;AACnB,WAAKC,mBAAmBA;AACxB,WAAKC,kBAAkBA;AACvB,WAAKL,aAAavB;AAClB,aAAOA;IACT;IAEAztD,OAAO4qB,SAAS0nB,QAAQ;AACtB,YAAMxwC,WAAU,KAAKA,QAAQ+0B,WAAW,KAAK5pB,WAAU,CAAA;AACvD,YAAMlN,UAAS,KAAK5D;AACpB,UAAIuF;AACJ,UAAI+rD,eAAe,CAAA;AAEnB,UAAI,CAAC1tD,QAAOhE,QAAQ;AAClB,YAAI,KAAK4yD,YAAY,GAAG;AACtBjtD,uBAAa;YACXitD,SAAS;UACX;;aAEG;AACL,cAAM7pC,YAAWglC,YAAYhoD,SAAQgjB,QAAQ,EAAEvpB,KAAK,MAAMwE,SAAQ,KAAK6uD,cAAc;AACrFnB,uBAAe,KAAKoC,aAAa/tD,QAAAA;AAEjC,aAAKw4B,QAAQ,KAAKg1B,SAAS7B,cAAc3rD,QAAAA;AACzC,aAAK6pD,aAAa,KAAK4D,cAAc9B,cAAc3rD,QAAAA;AACnD,aAAKkpD,OAAO,KAAKwE,QAAQ/B,cAAc3rD,QAAAA;AACvC,aAAK8pD,YAAY,KAAK+D,aAAalC,cAAc3rD,QAAAA;AACjD,aAAKmpD,SAAS,KAAK2E,UAAUnC,cAAc3rD,QAAAA;AAE3C,cAAMW,QAAO,KAAKosD,QAAQ/D,eAAe,MAAMhpD,QAAAA;AAC/C,cAAMiuD,kBAAkB9uD,OAAOyB,OAAO,CAAA,GAAIoiB,WAAUriB,KAAAA;AACpD,cAAM2qD,YAAYL,mBAAmB,KAAKzyD,OAAOwH,UAASiuD,eAAAA;AAC1D,cAAMC,kBAAkB7C,mBAAmBrrD,UAASiuD,iBAAiB3C,WAAW,KAAK9yD,KAAK;AAE1F,aAAKkyD,SAASY,UAAUZ;AACxB,aAAKK,SAASO,UAAUP;AAExBnrD,qBAAa;UACXitD,SAAS;UACTprD,GAAGysD,gBAAgBzsD;UACnBC,GAAGwsD,gBAAgBxsD;UACnB8T,OAAO7U,MAAK6U;UACZD,QAAQ5U,MAAK4U;UACb43C,QAAQnqC,UAASvhB;UACjB2rD,QAAQpqC,UAASthB;QACnB;;AAGF,WAAKurD,gBAAgBtB;AACrB,WAAKxjD,WAAW7P;AAEhB,UAAIsH,YAAY;AACd,aAAK6O,mBAAkB,EAAGvQ,OAAO,MAAM0B,UAAAA;;AAGzC,UAAIkpB,WAAW9oB,SAAQmuD,UAAU;AAC/BnuD,QAAAA,SAAQmuD,SAAS10D,KAAK,MAAM;UAACjB,OAAO,KAAKA;UAAOywD,SAAS;UAAMzY;QAAM,CAAA;;IAEzE;IAEA4d,UAAUC,cAAc9mD,KAAK5G,OAAMX,UAAS;AAC1C,YAAMsuD,gBAAgB,KAAKC,iBAAiBF,cAAc1tD,OAAMX,QAAAA;AAEhEuH,UAAIy3B,OAAOsvB,cAAczyB,IAAIyyB,cAAcxyB,EAAE;AAC7Cv0B,UAAIy3B,OAAOsvB,cAAcvyB,IAAIuyB,cAActyB,EAAE;AAC7Cz0B,UAAIy3B,OAAOsvB,cAAcE,IAAIF,cAAcG,EAAE;IAC/C;IAEAF,iBAAiBF,cAAc1tD,OAAMX,UAAS;AAC5C,YAAM,EAAC0qD,QAAQK,OAAM,IAAI;AACzB,YAAM,EAACH,WAAWW,aAAAA,IAAgBvrD;AAClC,YAAM,EAAC05C,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAcgS,YAAAA;AACnE,YAAM,EAAC9pD,GAAGitD,KAAKhtD,GAAGitD,IAAAA,IAAON;AACzB,YAAM,EAAC74C,OAAAA,QAAOD,QAAAA,QAAAA,IAAU5U;AACxB,UAAIk7B,IAAIE,KAAIyyB,KAAI1yB,IAAIE,KAAIyyB;AAExB,UAAI1D,WAAW,UAAU;AACvB/uB,QAAAA,MAAK2yB,MAAOp5C,UAAS;AAErB,YAAIm1C,WAAW,QAAQ;AACrB7uB,eAAK6yB;AACL3yB,UAAAA,MAAKF,KAAK+uB;AAGV9uB,eAAKE,MAAK4uB;AACV6D,UAAAA,MAAKzyB,MAAK4uB;eACL;AACL/uB,eAAK6yB,MAAMl5C;AACXumB,UAAAA,MAAKF,KAAK+uB;AAGV9uB,eAAKE,MAAK4uB;AACV6D,UAAAA,MAAKzyB,MAAK4uB;;AAGZ4D,QAAAA,MAAK3yB;aACA;AACL,YAAI6uB,WAAW,QAAQ;AACrB3uB,UAAAA,MAAK2yB,MAAMt1D,KAAKoC,IAAIk+C,SAASE,UAAegR,IAAAA;mBACnCF,WAAW,SAAS;AAC7B3uB,UAAAA,MAAK2yB,MAAMl5C,SAAQpc,KAAKoC,IAAIm+C,UAAUE,WAAe+Q,IAAAA;eAChD;AACL7uB,UAAAA,MAAK,KAAKoxB;;AAGZ,YAAIpC,WAAW,OAAO;AACpBjvB,eAAK6yB;AACL3yB,UAAAA,MAAKF,KAAK8uB;AAGV/uB,eAAKE,MAAK6uB;AACV4D,UAAAA,MAAKzyB,MAAK6uB;eACL;AACL9uB,eAAK6yB,MAAMp5C;AACXymB,UAAAA,MAAKF,KAAK8uB;AAGV/uB,eAAKE,MAAK6uB;AACV4D,UAAAA,MAAKzyB,MAAK6uB;;AAEZ6D,QAAAA,MAAK3yB;;AAEP,aAAO;QAACD;QAAIE,IAAAA;QAAIyyB,IAAAA;QAAI1yB;QAAIE,IAAAA;QAAIyyB,IAAAA;MAAE;IAChC;IAEA/uB,UAAUkvB,IAAIrnD,KAAKvH,UAAS;AAC1B,YAAMw4B,QAAQ,KAAKA;AACnB,YAAMv+B,UAASu+B,MAAMv+B;AACrB,UAAIqsD,WAAWyD,cAAc7vD;AAE7B,UAAID,SAAQ;AACV,cAAM0qD,YAAYC,cAAc5kD,SAAQ0kD,KAAK,KAAKjjD,GAAG,KAAK+T,KAAK;AAE/Do5C,WAAGntD,IAAI+pD,YAAY,MAAMxrD,SAAQqzB,YAAYrzB,QAAAA;AAE7CuH,YAAIy1B,YAAY2nB,UAAU3nB,UAAUh9B,SAAQqzB,UAAU;AACtD9rB,YAAI41B,eAAe;AAEnBmpB,oBAAYtzB,OAAOhzB,SAAQsmD,SAAS;AACpCyD,uBAAe/pD,SAAQ+pD;AAEvBxiD,YAAI+V,YAAYtd,SAAQ6uD;AACxBtnD,YAAIwrB,OAAOuzB,UAAUlsB;AAErB,aAAKlgC,KAAI,GAAGA,KAAID,SAAQ,EAAEC,IAAG;AAC3BqN,cAAIo+C,SAASntB,MAAMt+B,EAAAA,GAAIyqD,UAAUljD,EAAEmtD,GAAGntD,CAAC,GAAGmtD,GAAGltD,IAAI4kD,UAAUpzB,aAAa,CAAA;AACxE07B,aAAGltD,KAAK4kD,UAAUpzB,aAAa62B;AAE/B,cAAI7vD,KAAI,MAAMD,SAAQ;AACpB20D,eAAGltD,KAAK1B,SAAQgqD,oBAAoBD;;QAExC;;IAEJ;IAKA+E,cAAcvnD,KAAKqnD,IAAI10D,IAAGyqD,WAAW3kD,UAAS;AAC5C,YAAMosD,aAAa,KAAKiB,YAAYnzD,EAAE;AACtC,YAAMqyD,kBAAkB,KAAKe,iBAAiBpzD,EAAE;AAChD,YAAM,EAACwoD,WAAWC,SAAAA,IAAY3iD;AAC9B,YAAMopD,WAAWp2B,OAAOhzB,SAAQopD,QAAQ;AACxC,YAAM2F,SAASvD,YAAY,MAAM,QAAQxrD,QAAAA;AACzC,YAAMgvD,YAAYrK,UAAUljD,EAAEstD,MAAAA;AAC9B,YAAME,UAAUvM,YAAY0G,SAASl2B,cAAck2B,SAASl2B,aAAawvB,aAAa,IAAI;AAC1F,YAAMwM,SAASN,GAAGltD,IAAIutD;AAEtB,UAAIjvD,SAAQ4iD,eAAe;AACzB,cAAMyC,cAAc;UAClBvtC,QAAQ1e,KAAKC,IAAIspD,UAAUD,SAAa,IAAA;UACxCxlC,YAAYqvC,gBAAgBrvC;UAC5B7E,UAAUk0C,gBAAgBl0C;UAC1BgE,aAAa;QACf;AAGA,cAAMR,UAAU8oC,UAAUG,WAAWkK,WAAWrM,QAAAA,IAAYA,WAAW;AACvE,cAAM7mC,UAAUozC,SAASxM,YAAY;AAGrCn7C,YAAIiW,cAAcxd,SAAQmvD;AAC1B5nD,YAAI+V,YAAYtd,SAAQmvD;AACxBrW,kBAAUvxC,KAAK89C,aAAaxpC,SAASC,OAAAA;AAGrCvU,YAAIiW,cAAc4uC,WAAW3uC;AAC7BlW,YAAI+V,YAAY8uC,WAAW7uC;AAC3Bu7B,kBAAUvxC,KAAK89C,aAAaxpC,SAASC,OAAAA;aAChC;AAELvU,YAAIoW,YAAY1e,SAASmtD,WAAW/vC,WAAW,IAAIjjB,KAAKoC,IAAO2D,GAAAA,OAAOW,OAAOssD,WAAW/vC,WAAW,CAAM+vC,IAAAA,WAAW/vC,eAAe;AACnI9U,YAAIiW,cAAc4uC,WAAW3uC;AAC7BlW,YAAIq3B,YAAYwtB,WAAW9vB,cAAc,CAAA,CAAE;AAC3C/0B,YAAIs3B,iBAAiButB,WAAW5vB,oBAAoB;AAGpD,cAAM4yB,SAASzK,UAAUG,WAAWkK,WAAWrM,QAAAA;AAC/C,cAAM0M,SAAS1K,UAAUG,WAAWH,UAAUY,MAAMyJ,WAAW,CAAA,GAAIrM,WAAW,CAAA;AAC9E,cAAM/Q,eAAe2H,cAAc6S,WAAWxa,YAAY;AAE1D,YAAIzyC,OAAOW,OAAO8xC,YAAAA,EAAcxN,KAAK3vB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClDlN,cAAIu3B,UAAS;AACbv3B,cAAI+V,YAAYtd,SAAQmvD;AACxBvU,6BAAmBrzC,KAAK;YACtB9F,GAAG2tD;YACH1tD,GAAGwtD;YACHnnC,GAAG46B;YACH16B,GAAGy6B;YACH5qC,QAAQ85B;UACV,CAAA;AACArqC,cAAImB,KAAI;AACRnB,cAAI03B,OAAM;AAGV13B,cAAI+V,YAAY8uC,WAAW7uC;AAC3BhW,cAAIu3B,UAAS;AACb8b,6BAAmBrzC,KAAK;YACtB9F,GAAG4tD;YACH3tD,GAAGwtD,SAAS;YACZnnC,GAAG46B,WAAW;YACd16B,GAAGy6B,YAAY;YACf5qC,QAAQ85B;UACV,CAAA;AACArqC,cAAImB,KAAI;eACH;AAELnB,cAAI+V,YAAYtd,SAAQmvD;AACxB5nD,cAAI+2B,SAAS8wB,QAAQF,QAAQvM,UAAUD,SAAAA;AACvCn7C,cAAI+nD,WAAWF,QAAQF,QAAQvM,UAAUD,SAAAA;AAEzCn7C,cAAI+V,YAAY8uC,WAAW7uC;AAC3BhW,cAAI+2B,SAAS+wB,QAAQH,SAAS,GAAGvM,WAAW,GAAGD,YAAY,CAAA;;;AAK/Dn7C,UAAI+V,YAAY,KAAKiwC,gBAAgBrzD,EAAE;IACzC;IAEAq1D,SAASX,IAAIrnD,KAAKvH,UAAS;AACzB,YAAM,EAACkpD,KAAAA,IAAQ;AACf,YAAM,EAACiB,aAAaqF,WAAWtF,eAAexH,WAAWC,UAAUp7B,WAAAA,IAAcvnB;AACjF,YAAMopD,WAAWp2B,OAAOhzB,SAAQopD,QAAQ;AACxC,UAAIa,iBAAiBb,SAASl2B;AAC9B,UAAIu8B,eAAe;AAEnB,YAAM9K,YAAYC,cAAc5kD,SAAQ0kD,KAAK,KAAKjjD,GAAG,KAAK+T,KAAK;AAE/D,YAAMk6C,iBAAiB,SAASzxC,MAAM;AACpC1W,YAAIo+C,SAAS1nC,MAAM0mC,UAAUljD,EAAEmtD,GAAGntD,IAAIguD,YAAAA,GAAeb,GAAGltD,IAAIuoD,iBAAiB,CAAA;AAC7E2E,WAAGltD,KAAKuoD,iBAAiBE;MAC3B;AAEA,YAAMwF,0BAA0BhL,UAAU3nB,UAAUwyB,SAAAA;AACpD,UAAI9F,UAAUkG,WAAW38B,OAAO/4B,IAAGipB,IAAG1gB,MAAMs3B;AAE5CxyB,UAAIy1B,YAAYwyB;AAChBjoD,UAAI41B,eAAe;AACnB51B,UAAIwrB,OAAOq2B,SAAShvB;AAEpBw0B,SAAGntD,IAAI+pD,YAAY,MAAMmE,yBAAyB3vD,QAAAA;AAGlDuH,UAAI+V,YAAYtd,SAAQssD;AACxB1iC,WAAK,KAAKigC,YAAY6F,cAAAA;AAEtBD,qBAAevF,iBAAiByF,4BAA4B,UACxDH,cAAc,WAAY7M,WAAW,IAAIp7B,aAAeo7B,WAAW,IAAIp7B,aACvE;AAGJ,WAAKrtB,KAAI,GAAGuI,OAAOymD,KAAKjvD,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7CwvD,mBAAWR,KAAKhvD,EAAE;AAClB01D,oBAAY,KAAKrC,gBAAgBrzD,EAAE;AAEnCqN,YAAI+V,YAAYsyC;AAChBhmC,aAAK8/B,SAASC,QAAQ+F,cAAAA;AAEtBz8B,gBAAQy2B,SAASz2B;AAEjB,YAAIi3B,iBAAiBj3B,MAAMh5B,QAAQ;AACjC,eAAK60D,cAAcvnD,KAAKqnD,IAAI10D,IAAGyqD,WAAW3kD,QAAAA;AAC1CiqD,2BAAiB7wD,KAAKoC,IAAI4tD,SAASl2B,YAAYwvB,SAAAA;;AAGjD,aAAKv/B,KAAI,GAAG4W,OAAO9G,MAAMh5B,QAAQkpB,KAAI4W,MAAM,EAAE5W,IAAG;AAC9CusC,yBAAez8B,MAAM9P,EAAE,CAAA;AAEvB8mC,2BAAiBb,SAASl2B;QAC5B;AAEAtJ,aAAK8/B,SAASE,OAAO8F,cAAAA;MACvB;AAGAD,qBAAe;AACfxF,uBAAiBb,SAASl2B;AAG1BtJ,WAAK,KAAKkgC,WAAW4F,cAAAA;AACrBd,SAAGltD,KAAKyoD;IACV;IAEA0F,WAAWjB,IAAIrnD,KAAKvH,UAAS;AAC3B,YAAMmpD,SAAS,KAAKA;AACpB,YAAMlvD,UAASkvD,OAAOlvD;AACtB,UAAIovD,YAAYnvD;AAEhB,UAAID,SAAQ;AACV,cAAM0qD,YAAYC,cAAc5kD,SAAQ0kD,KAAK,KAAKjjD,GAAG,KAAK+T,KAAK;AAE/Do5C,WAAGntD,IAAI+pD,YAAY,MAAMxrD,SAAQ8vD,aAAa9vD,QAAAA;AAC9C4uD,WAAGltD,KAAK1B,SAAQoqD;AAEhB7iD,YAAIy1B,YAAY2nB,UAAU3nB,UAAUh9B,SAAQ8vD,WAAW;AACvDvoD,YAAI41B,eAAe;AAEnBksB,qBAAar2B,OAAOhzB,SAAQqpD,UAAU;AAEtC9hD,YAAI+V,YAAYtd,SAAQ+vD;AACxBxoD,YAAIwrB,OAAOs2B,WAAWjvB;AAEtB,aAAKlgC,KAAI,GAAGA,KAAID,SAAQ,EAAEC,IAAG;AAC3BqN,cAAIo+C,SAASwD,OAAOjvD,EAAAA,GAAIyqD,UAAUljD,EAAEmtD,GAAGntD,CAAC,GAAGmtD,GAAGltD,IAAI2nD,WAAWn2B,aAAa,CAAA;AAC1E07B,aAAGltD,KAAK2nD,WAAWn2B,aAAalzB,SAAQqqD;QAC1C;;IAEJ;IAEAjsB,eAAewwB,IAAIrnD,KAAKyoD,aAAahwD,UAAS;AAC5C,YAAM,EAAC0qD,QAAQK,OAAM,IAAI;AACzB,YAAM,EAACtpD,GAAAA,IAAGC,GAAAA,GAAAA,IAAKktD;AACf,YAAM,EAACp5C,OAAAA,QAAOD,QAAAA,QAAAA,IAAUy6C;AACxB,YAAM,EAACtW,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAcv5C,SAAQurD,YAAY;AAEvFhkD,UAAI+V,YAAYtd,SAAQud;AACxBhW,UAAIiW,cAAcxd,SAAQyd;AAC1BlW,UAAIoW,YAAY3d,SAAQqc;AAExB9U,UAAIu3B,UAAS;AACbv3B,UAAIw3B,OAAOt9B,KAAIi4C,SAASh4C,EAAAA;AACxB,UAAIqpD,WAAW,OAAO;AACpB,aAAKqD,UAAUQ,IAAIrnD,KAAKyoD,aAAahwD,QAAAA;;AAEvCuH,UAAIy3B,OAAOv9B,KAAI+T,SAAQmkC,UAAUj4C,EAAAA;AACjC6F,UAAI0oD,iBAAiBxuD,KAAI+T,QAAO9T,IAAGD,KAAI+T,QAAO9T,KAAIi4C,QAAAA;AAClD,UAAIoR,WAAW,YAAYL,WAAW,SAAS;AAC7C,aAAK0D,UAAUQ,IAAIrnD,KAAKyoD,aAAahwD,QAAAA;;AAEvCuH,UAAIy3B,OAAOv9B,KAAI+T,QAAO9T,KAAI6T,UAASskC,WAAAA;AACnCtyC,UAAI0oD,iBAAiBxuD,KAAI+T,QAAO9T,KAAI6T,SAAQ9T,KAAI+T,SAAQqkC,aAAan4C,KAAI6T,OAAAA;AACzE,UAAIw1C,WAAW,UAAU;AACvB,aAAKqD,UAAUQ,IAAIrnD,KAAKyoD,aAAahwD,QAAAA;;AAEvCuH,UAAIy3B,OAAOv9B,KAAIm4C,YAAYl4C,KAAI6T,OAAAA;AAC/BhO,UAAI0oD,iBAAiBxuD,IAAGC,KAAI6T,SAAQ9T,IAAGC,KAAI6T,UAASqkC,UAAAA;AACpD,UAAImR,WAAW,YAAYL,WAAW,QAAQ;AAC5C,aAAK0D,UAAUQ,IAAIrnD,KAAKyoD,aAAahwD,QAAAA;;AAEvCuH,UAAIy3B,OAAOv9B,IAAGC,KAAIg4C,OAAAA;AAClBnyC,UAAI0oD,iBAAiBxuD,IAAGC,IAAGD,KAAIi4C,SAASh4C,EAAAA;AACxC6F,UAAI+pC,UAAS;AAEb/pC,UAAImB,KAAI;AAER,UAAI1I,SAAQqc,cAAc,GAAG;AAC3B9U,YAAI03B,OAAM;;IAEd;IAMAixB,uBAAuBlwD,UAAS;AAC9B,YAAMxH,QAAQ,KAAKA;AACnB,YAAMC,QAAQ,KAAK6H;AACnB,YAAM6vD,QAAQ13D,SAASA,MAAMgJ;AAC7B,YAAM2uD,QAAQ33D,SAASA,MAAMiJ;AAC7B,UAAIyuD,SAASC,OAAO;AAClB,cAAMptC,YAAWglC,YAAYhoD,SAAQgjB,QAAQ,EAAEvpB,KAAK,MAAM,KAAKY,SAAS,KAAKyyD,cAAc;AAC3F,YAAI,CAAC9pC,WAAU;AACb;;AAEF,cAAMriB,QAAO,KAAKosD,QAAQ/D,eAAe,MAAMhpD,QAAAA;AAC/C,cAAMiuD,kBAAkB9uD,OAAOyB,OAAO,CAAA,GAAIoiB,WAAU,KAAK+pC,KAAK;AAC9D,cAAMzB,YAAYL,mBAAmBzyD,OAAOwH,UAASiuD,eAAAA;AACrD,cAAMj2C,SAAQqzC,mBAAmBrrD,UAASiuD,iBAAiB3C,WAAW9yD,KAAAA;AACtE,YAAI23D,MAAMpyD,QAAQia,OAAMvW,KAAK2uD,MAAMryD,QAAQia,OAAMtW,GAAG;AAClD,eAAKgpD,SAASY,UAAUZ;AACxB,eAAKK,SAASO,UAAUP;AACxB,eAAKv1C,QAAQ7U,MAAK6U;AAClB,eAAKD,SAAS5U,MAAK4U;AACnB,eAAK43C,SAASnqC,UAASvhB;AACvB,eAAK2rD,SAASpqC,UAASthB;AACvB,eAAK+M,mBAAkB,EAAGvQ,OAAO,MAAM8Z,MAAAA;;;IAG7C;IAMAq4C,cAAc;AACZ,aAAO,CAAC,CAAC,KAAKxD;IAChB;IAEA1yD,KAAKoN,KAAK;AACR,YAAMvH,WAAU,KAAKA,QAAQ+0B,WAAW,KAAK5pB,WAAU,CAAA;AACvD,UAAI0hD,UAAU,KAAKA;AAEnB,UAAI,CAACA,SAAS;AACZ;;AAGF,WAAKqD,uBAAuBlwD,QAAAA;AAE5B,YAAMgwD,cAAc;QAClBx6C,OAAO,KAAKA;QACZD,QAAQ,KAAKA;MACf;AACA,YAAMq5C,KAAK;QACTntD,GAAG,KAAKA;QACRC,GAAG,KAAKA;MACV;AAGAmrD,gBAAUzzD,KAAKwY,IAAIi7C,OAAW,IAAA,OAAO,IAAIA;AAEzC,YAAM3jC,UAAUO,UAAUzpB,SAAQkpB,OAAO;AAGzC,YAAMonC,oBAAoB,KAAK93B,MAAMv+B,UAAU,KAAK4vD,WAAW5vD,UAAU,KAAKivD,KAAKjvD,UAAU,KAAK6vD,UAAU7vD,UAAU,KAAKkvD,OAAOlvD;AAElI,UAAI+F,SAAQowB,WAAWkgC,mBAAmB;AACxC/oD,YAAI82B,KAAI;AACR92B,YAAIgpD,cAAc1D;AAGlB,aAAKzuB,eAAewwB,IAAIrnD,KAAKyoD,aAAahwD,QAAAA;AAE1C6lD,8BAAsBt+C,KAAKvH,SAAQ8lD,aAAa;AAEhD8I,WAAGltD,KAAKwnB,QAAQvnB;AAGhB,aAAK+9B,UAAUkvB,IAAIrnD,KAAKvH,QAAAA;AAGxB,aAAKuvD,SAASX,IAAIrnD,KAAKvH,QAAAA;AAGvB,aAAK6vD,WAAWjB,IAAIrnD,KAAKvH,QAAAA;AAEzBqmD,6BAAqB9+C,KAAKvH,SAAQ8lD,aAAa;AAE/Cv+C,YAAIg3B,QAAO;;IAEf;IAMA2R,oBAAoB;AAClB,aAAO,KAAK71C,WAAW,CAAA;IACzB;IAOA81C,kBAAkBC,gBAAgBgY,eAAe;AAC/C,YAAM/X,aAAa,KAAKh2C;AACxB,YAAM4D,UAASmyC,eAAejzB,IAAI,CAAC,EAACna,cAAcN,OAAAA,OAAK,MAAM;AAC3D,cAAMa,OAAO,KAAK/K,MAAMwR,eAAehH,YAAAA;AAEvC,YAAI,CAACO,MAAM;AACT,gBAAM,IAAI4d,MAAM,oCAAoCne,YAAc;;AAGpE,eAAO;UACLA;UACAwD,SAASjD,KAAKD,KAAKZ,MAAM;UACzBA,OAAAA;QACF;MACF,CAAA;AACA,YAAMomB,UAAU,CAACwnB,eAAeD,YAAYpyC,OAAAA;AAC5C,YAAMuyD,kBAAkB,KAAKC,iBAAiBxyD,SAAQmqD,aAAAA;AAEtD,UAAIt/B,WAAW0nC,iBAAiB;AAC9B,aAAKn2D,UAAU4D;AACf,aAAK6uD,iBAAiB1E;AACtB,aAAKsI,sBAAsB;AAC3B,aAAKxyD,OAAO,IAAI;;IAEpB;IASA0oD,YAAY/oC,IAAG2yB,QAAQ3G,cAAc,MAAM;AACzC,UAAI2G,UAAU,KAAKkgB,qBAAqB;AACtC,eAAO;;AAET,WAAKA,sBAAsB;AAE3B,YAAM1wD,WAAU,KAAKA;AACrB,YAAMqwC,aAAa,KAAKh2C,WAAW,CAAA;AACnC,YAAM4D,UAAS,KAAK8yC,mBAAmBlzB,IAAGwyB,YAAYG,QAAQ3G,WAAAA;AAK9D,YAAM2mB,kBAAkB,KAAKC,iBAAiBxyD,SAAQ4f,EAAAA;AAGtD,YAAMiL,UAAU0nB,UAAU,CAACF,eAAeryC,SAAQoyC,UAAemgB,KAAAA;AAGjE,UAAI1nC,SAAS;AACX,aAAKzuB,UAAU4D;AAEf,YAAI+B,SAAQowB,WAAWpwB,SAAQmuD,UAAU;AACvC,eAAKrB,iBAAiB;YACpBrrD,GAAGoc,GAAEpc;YACLC,GAAGmc,GAAEnc;UACP;AAEA,eAAKxD,OAAO,MAAMsyC,MAAAA;;;AAItB,aAAO1nB;IACT;IAWAioB,mBAAmBlzB,IAAGwyB,YAAYG,QAAQ3G,aAAa;AACrD,YAAM7pC,WAAU,KAAKA;AAErB,UAAI6d,GAAEllB,SAAS,YAAY;AACzB,eAAO,CAAA;;AAGT,UAAI,CAACkxC,aAAa;AAGhB,eAAOwG,WAAWpqC,OAAO/L,CAAAA,OACvB,KAAK1B,MAAM8K,KAAKyG,SAAS7P,GAAE8I,YAAY,KACvC,KAAKxK,MAAMwR,eAAe9P,GAAE8I,YAAY,EAAEoC,WAAWgH,UAAUlS,GAAEwI,KAAK,MAAMpK,MAAAA;;AAKhF,YAAM2F,UAAS,KAAKzF,MAAMy2C,0BAA0BpxB,IAAG7d,SAAQ+C,MAAM/C,UAASwwC,MAAAA;AAE9E,UAAIxwC,SAAQoB,SAAS;AACnBnD,QAAAA,QAAOmD,QAAO;;AAGhB,aAAOnD;IACT;IASAwyD,iBAAiBxyD,SAAQ4f,IAAG;AAC1B,YAAM,EAACsvC,QAAQC,QAAQptD,SAAAA,SAAO,IAAI;AAClC,YAAMgjB,YAAWglC,YAAYhoD,SAAQgjB,QAAQ,EAAEvpB,KAAK,MAAMwE,SAAQ4f,EAAAA;AAClE,aAAOmF,cAAa,UAAUmqC,WAAWnqC,UAASvhB,KAAK2rD,WAAWpqC,UAASthB;IAC7E;EACF;AAvvBE,gBALWkrD,SAKJ5E,eAAcA;AAyvBvB,MAAA,iBAAe;IACb5jD,IAAI;IACJgjD,UAAUwF;IACV5E;IAEA2I,UAAUn4D,OAAOmjD,OAAO37C,UAAS;AAC/B,UAAIA,UAAS;AACXxH,cAAMywD,UAAU,IAAI2D,QAAQ;UAACp0D;UAAOwH,SAAAA;QAAO,CAAA;;IAE/C;IAEAy1B,aAAaj9B,OAAOmjD,OAAO37C,UAAS;AAClC,UAAIxH,MAAMywD,SAAS;AACjBzwD,cAAMywD,QAAQ1gD,WAAWvI,QAAAA;;IAE7B;IAEAmK,MAAM3R,OAAOmjD,OAAO37C,UAAS;AAC3B,UAAIxH,MAAMywD,SAAS;AACjBzwD,cAAMywD,QAAQ1gD,WAAWvI,QAAAA;;IAE7B;IAEA4wD,UAAUp4D,OAAO;AACf,YAAMywD,UAAUzwD,MAAMywD;AAEtB,UAAIA,WAAWA,QAAQoH,YAAW,GAAI;AACpC,cAAM9/C,OAAO;UACX04C;QACF;AAEA,YAAIzwD,MAAM8+B,cAAc,qBAAqB;UAAC,GAAG/mB;UAAMszB,YAAY;QAAI,CAAA,MAAO,OAAO;AACnF;;AAGFolB,gBAAQ9uD,KAAK3B,MAAM+O,GAAG;AAEtB/O,cAAM8+B,cAAc,oBAAoB/mB,IAAAA;;IAE5C;IAEA82C,WAAW7uD,OAAO+X,MAAM;AACtB,UAAI/X,MAAMywD,SAAS;AAEjB,cAAMnlC,mBAAmBvT,KAAKigC;AAC9B,YAAIh4C,MAAMywD,QAAQrC,YAAYr2C,KAAKvV,OAAO8oB,kBAAkBvT,KAAKs5B,WAAW,GAAG;AAE7Et5B,eAAKuY,UAAU;;;IAGrB;IAEAzpB,UAAU;MACR+wB,SAAS;MACT+9B,UAAU;MACVnrC,UAAU;MACVzF,iBAAiB;MACjBsxC,YAAY;MACZvI,WAAW;QACT7pC,QAAQ;MACV;MACAstC,cAAc;MACdC,mBAAmB;MACnB32B,YAAY;MACZi5B,WAAW;MACXnC,aAAa;MACbf,UAAU,CAAA;MAEVoG,WAAW;MACXO,aAAa;MACb1F,eAAe;MACfD,iBAAiB;MACjBf,YAAY;QACV5sC,QAAQ;MACV;MACAqzC,aAAa;MACb5mC,SAAS;MACT2hC,cAAc;MACdD,WAAW;MACXW,cAAc;MACd7I,WAAW,CAACn7C,KAAKpG,SAASA,KAAKioD,SAASzoD;MACxCgiD,UAAU,CAACp7C,KAAKpG,SAASA,KAAKioD,SAASzoD;MACvCwuD,oBAAoB;MACpBjF,eAAe;MACf3iC,YAAY;MACZ9J,aAAa;MACbpB,aAAa;MACb/c,WAAW;QACTvG,UAAU;QACVsE,QAAQ;MACV;MACA6C,YAAY;QACVoX,SAAS;UACP3e,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAS;YAAU;YAAU;UAAS;QAC/D;QACAitD,SAAS;UACPxvD,QAAQ;UACRtE,UAAU;QACZ;MACF;MACAH,WAAWizD;IACb;IAEAl8B,eAAe;MACby5B,UAAU;MACVC,YAAY;MACZ/C,WAAW;IACb;IAEA5pC,aAAa;MACXC,aAAa,CAACtG,UAASA,UAAS,YAAYA,UAAS,cAAcA,UAAS;MAC5EuG,YAAY;MACZhkB,WAAW;QACT+jB,aAAa;QACbC,YAAY;MACd;MACAtd,WAAW;QACTuxD,WAAW;MACb;MACA3wD,YAAY;QACV2wD,WAAW;MACb;IACF;IAGAtpB,wBAAwB;MAAC;IAAc;EACzC;;;;;;;;;;;ACl0CA,MAAMupB,cAAc,CAAChlD,QAAQpF,KAAKhE,QAAOquD,gBAAgB;AACvD,QAAI,OAAOrqD,QAAQ,UAAU;AAC3BhE,MAAAA,SAAQoJ,OAAO5Q,KAAKwL,GAAO,IAAA;AAC3BqqD,kBAAYvQ,QAAQ;QAAC99C,OAAAA;QAAOwK,OAAOxG;MAAG,CAAA;eAC7BuP,MAAMvP,GAAM,GAAA;AACrBhE,MAAAA,SAAQ;;AAEV,WAAOA;EACT;AAEA,WAASsuD,eAAellD,QAAQpF,KAAKhE,QAAOquD,aAAa;AACvD,UAAMxgC,QAAQzkB,OAAOoK,QAAQxP,GAAAA;AAC7B,QAAI6pB,UAAU,IAAI;AAChB,aAAOugC,YAAYhlD,QAAQpF,KAAKhE,QAAOquD,WAAAA;;AAEzC,UAAMr7C,OAAO5J,OAAOmlD,YAAYvqD,GAAAA;AAChC,WAAO6pB,UAAU7a,OAAOhT,SAAQ6tB;EAClC;AAEA,MAAM6B,aAAa,CAAC1vB,QAAOlH,SAAQkH,WAAU,OAAO,OAAO61B,YAAYn/B,KAAKw3B,MAAMluB,MAAAA,GAAQ,GAAGlH,IAAI;AAEjG,WAAS01D,kBAAkBxwD,OAAO;AAChC,UAAMoL,SAAS,KAAKC,UAAS;AAE7B,QAAIrL,SAAS,KAAKA,QAAQoL,OAAO7R,QAAQ;AACvC,aAAO6R,OAAOpL,KAAM;;AAEtB,WAAOA;EACT;AAEe,MAAMywD,gBAAN,cAA4Bv9B,MAAAA;IAazC57B,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKu0D,cAAc94D;AACnB,WAAK+4D,cAAc;AACnB,WAAKC,eAAe,CAAA;IACtB;IAEA9vC,KAAK6jB,cAAc;AACjB,YAAMksB,QAAQ,KAAKD;AACnB,UAAIC,MAAMt3D,QAAQ;AAChB,cAAM6R,SAAS,KAAKC,UAAS;AAC7B,mBAAW,EAACrJ,OAAAA,QAAOwK,MAAK,KAAKqkD,OAAO;AAClC,cAAIzlD,OAAOpJ,MAAM,MAAKwK,OAAO;AAC3BpB,mBAAOuE,OAAO3N,QAAO,CAAA;;QAEzB;AACA,aAAK4uD,eAAe,CAAA;;AAEtB,YAAM9vC,KAAK6jB,YAAAA;IACb;IAEAh6B,MAAM3E,KAAKhE,QAAO;AAChB,UAAI4P,cAAc5L,GAAM,GAAA;AACtB,eAAO;;AAET,YAAMoF,SAAS,KAAKC,UAAS;AAC7BrJ,MAAAA,SAAQS,SAAST,MAAUoJ,KAAAA,OAAOpJ,MAAAA,MAAWgE,MAAMhE,SAC/CsuD,eAAellD,QAAQpF,KAAKyC,eAAezG,QAAOgE,GAAAA,GAAM,KAAK4qD,YAAY;AAC7E,aAAOl/B,WAAW1vB,QAAOoJ,OAAO7R,SAAS,CAAA;IAC3C;IAEAg8B,sBAAsB;AACpB,YAAM,EAAC3xB,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAI,EAAChL,KAAAA,MAAKmC,KAAAA,KAAG,IAAI,KAAKkR,UAAU,IAAI;AAEpC,UAAI,KAAK1M,QAAQ+5C,WAAW,SAAS;AACnC,YAAI,CAACz1C,YAAY;AACfjL,UAAAA,OAAM;;AAER,YAAI,CAACkL,YAAY;AACf/I,UAAAA,OAAM,KAAKuQ,UAAS,EAAG9R,SAAS;;;AAIpC,WAAKZ,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEA66B,aAAa;AACX,YAAMh9B,OAAM,KAAKA;AACjB,YAAMmC,OAAM,KAAKA;AACjB,YAAMic,UAAS,KAAKzX,QAAQyX;AAC5B,YAAM3F,QAAQ,CAAA;AACd,UAAIhG,SAAS,KAAKC,UAAS;AAG3BD,eAASzS,SAAS,KAAKmC,SAAQsQ,OAAO7R,SAAS,IAAK6R,SAASA,OAAO0W,MAAMnpB,MAAKmC,OAAM,CAAE;AAEvF,WAAK61D,cAAcj4D,KAAKoC,IAAIsQ,OAAO7R,UAAUwd,UAAS,IAAI,IAAI,CAAA;AAC9D,WAAK25C,cAAc,KAAK/3D,OAAOoe,UAAS,MAAM;AAE9C,eAAS/W,QAAQrH,MAAKqH,SAASlF,MAAKkF,SAAS;AAC3CoR,cAAM5W,KAAK;UAACwF;QAAK,CAAA;MACnB;AACA,aAAOoR;IACT;IAEA3E,iBAAiBzM,OAAO;AACtB,aAAOwwD,kBAAkBz3D,KAAK,MAAMiH,KAAAA;IACtC;IAKA1B,YAAY;AACV,YAAMA,UAAS;AAEf,UAAI,CAAC,KAAK2U,aAAY,GAAI;AAExB,aAAKwO,iBAAiB,CAAC,KAAKA;;IAEhC;IAGAtQ,iBAAiBnR,OAAO;AACtB,UAAI,OAAOA,UAAU,UAAU;AAC7BA,gBAAQ,KAAK2K,MAAM3K,KAAAA;;AAGrB,aAAOA,UAAU,OAAO+L,MAAM,KAAKoK,oBAAoBnW,QAAQ,KAAK0wD,eAAe,KAAKC,WAAW;IACrG;IAIAt/C,gBAAgBrP,QAAO;AACrB,YAAMoP,QAAQ,KAAKA;AACnB,UAAIpP,SAAQ,KAAKA,SAAQoP,MAAM7X,SAAS,GAAG;AACzC,eAAO;;AAET,aAAO,KAAK4X,iBAAiBC,MAAMpP,MAAAA,EAAOhC,KAAK;IACjD;IAEAqW,iBAAiByjB,OAAO;AACtB,aAAOphC,KAAKw3B,MAAM,KAAKwgC,cAAc,KAAKx2B,mBAAmBJ,KAAS,IAAA,KAAK62B,WAAW;IACxF;IAEAt8C,eAAe;AACb,aAAO,KAAKlT;IACd;EACF;AA1HE,gBAFmBsvD,eAEZ/sD,MAAK;AAKZ,gBAPmB+sD,eAOZ9xD,YAAW;IAChByS,OAAO;MACL2lB,UAAUy5B;IACZ;;ACnBJ,WAASM,gBAAcC,mBAAmBC,WAAW;AACnD,UAAM5/C,QAAQ,CAAA;AAKd,UAAM6/C,cAAc;AACpB,UAAM,EAAC5X,QAAQ7d,MAAM7iC,KAAAA,MAAKmC,KAAAA,MAAKo2D,WAAWtmD,OAAOumD,UAAUC,WAAWC,cAAAA,IAAiBN;AACvF,UAAMO,OAAO91B,QAAQ;AACrB,UAAM+1B,YAAYJ,WAAW;AAC7B,UAAM,EAACx4D,KAAK64D,MAAM12D,KAAK22D,KAAAA,IAAQT;AAC/B,UAAMptD,aAAa,CAACgO,cAAcjZ,IAAAA;AAClC,UAAMkL,aAAa,CAAC+N,cAAc9W,IAAAA;AAClC,UAAM42D,eAAe,CAAC9/C,cAAchH,KAAAA;AACpC,UAAM+mD,cAAcF,OAAOD,SAASJ,YAAY;AAChD,QAAIr3C,UAAU63C,SAASH,OAAOD,QAAQD,YAAYD,IAAQA,IAAAA;AAC1D,QAAI71D,QAAQo2D,SAASC,SAASC;AAI9B,QAAIh4C,UAAUk3C,eAAe,CAACrtD,cAAc,CAACC,YAAY;AACvD,aAAO;QAAC;UAAC7D,OAAOwxD;QAAI;QAAG;UAACxxD,OAAOyxD;QAAI;MAAE;;AAGvCM,gBAAYr5D,KAAKk4B,KAAK6gC,OAAO13C,OAAAA,IAAWrhB,KAAKoE,MAAM00D,OAAOz3C,OAAAA;AAC1D,QAAIg4C,YAAYR,WAAW;AAEzBx3C,gBAAU63C,QAAQG,YAAYh4C,UAAUw3C,YAAYD,IAAQA,IAAAA;;AAG9D,QAAI,CAAC1/C,cAAcs/C,SAAY,GAAA;AAE7Bz1D,eAAS/C,KAAKwqB,IAAI,IAAIguC,SAAAA;AACtBn3C,gBAAUrhB,KAAKk4B,KAAK7W,UAAUte,MAAUA,IAAAA;;AAG1C,QAAI49C,WAAW,SAAS;AACtBwY,gBAAUn5D,KAAKoE,MAAM00D,OAAOz3C,OAAWA,IAAAA;AACvC+3C,gBAAUp5D,KAAKk4B,KAAK6gC,OAAO13C,OAAWA,IAAAA;WACjC;AACL83C,gBAAUL;AACVM,gBAAUL;;AAGZ,QAAI7tD,cAAcC,cAAc23B,QAAQw2B,aAAal3D,OAAMnC,QAAO6iC,MAAMzhB,UAAU,GAAO,GAAA;AAKvFg4C,kBAAYr5D,KAAKw3B,MAAMx3B,KAAKC,KAAKmC,OAAMnC,QAAOohB,SAASo3C,QAAAA,CAAAA;AACvDp3C,iBAAWjf,OAAMnC,QAAOo5D;AACxBF,gBAAUl5D;AACVm5D,gBAAUh3D;IACZ,WAAW42D,cAAc;AAIvBG,gBAAUjuD,aAAajL,OAAMk5D;AAC7BC,gBAAUjuD,aAAa/I,OAAMg3D;AAC7BC,kBAAYnnD,QAAQ;AACpBmP,iBAAW+3C,UAAUD,WAAWE;WAC3B;AAELA,mBAAaD,UAAUD,WAAW93C;AAGlC,UAAIk4C,aAAaF,WAAWr5D,KAAKw3B,MAAM6hC,SAAAA,GAAYh4C,UAAU,GAAO,GAAA;AAClEg4C,oBAAYr5D,KAAKw3B,MAAM6hC,SAAAA;aAClB;AACLA,oBAAYr5D,KAAKk4B,KAAKmhC,SAAAA;;;AAM1B,UAAMG,gBAAgBx5D,KAAKoC,IACzBq3D,eAAep4C,OAAAA,GACfo4C,eAAeN,OAAAA,CAAAA;AAEjBp2D,aAAS/C,KAAKwqB,IAAI,IAAItR,cAAcs/C,SAAAA,IAAagB,gBAAgBhB,SAAS;AAC1EW,cAAUn5D,KAAKw3B,MAAM2hC,UAAUp2D,MAAUA,IAAAA;AACzCq2D,cAAUp5D,KAAKw3B,MAAM4hC,UAAUr2D,MAAUA,IAAAA;AAEzC,QAAIgnB,KAAI;AACR,QAAI7e,YAAY;AACd,UAAIytD,iBAAiBQ,YAAYl5D,MAAK;AACpCyY,cAAM5W,KAAK;UAACwF,OAAOrH;QAAG,CAAA;AAEtB,YAAIk5D,UAAUl5D,MAAK;AACjB8pB,UAAAA;;AAGF,YAAIwvC,aAAav5D,KAAKw3B,OAAO2hC,UAAUpvC,KAAI1I,WAAWte,MAAAA,IAAUA,QAAQ9C,MAAKy5D,kBAAkBz5D,MAAKg5D,YAAYZ,iBAAqB,CAAA,GAAA;AACnItuC,UAAAA;;iBAEOovC,UAAUl5D,MAAK;AACxB8pB,QAAAA;;;AAIJ,WAAOA,KAAIsvC,WAAW,EAAEtvC,IAAG;AACzB,YAAM4vC,YAAY35D,KAAKw3B,OAAO2hC,UAAUpvC,KAAI1I,WAAWte,MAAUA,IAAAA;AACjE,UAAIoI,cAAcwuD,YAAYv3D,MAAK;AACjC;;AAEFsW,YAAM5W,KAAK;QAACwF,OAAOqyD;MAAS,CAAA;IAC9B;AAEA,QAAIxuD,cAAcwtD,iBAAiBS,YAAYh3D,MAAK;AAElD,UAAIsW,MAAM7X,UAAU04D,aAAa7gD,MAAMA,MAAM7X,SAAS,CAAA,EAAGyG,OAAOlF,MAAKs3D,kBAAkBt3D,MAAK62D,YAAYZ,iBAAqB,CAAA,GAAA;AAC3H3/C,cAAMA,MAAM7X,SAAS,CAAE,EAACyG,QAAQlF;aAC3B;AACLsW,cAAM5W,KAAK;UAACwF,OAAOlF;QAAG,CAAA;;IAE1B,WAAW,CAAC+I,cAAciuD,YAAYh3D,MAAK;AACzCsW,YAAM5W,KAAK;QAACwF,OAAO8xD;MAAO,CAAA;;AAG5B,WAAO1gD;EACT;AAEA,WAASghD,kBAAkBpyD,OAAO2xD,YAAY,EAACx+C,YAAY+jB,YAAW,GAAG;AACvE,UAAMo7B,MAAM54C,UAAUwd,WAAAA;AACtB,UAAMvlB,SAASwB,aAAaza,KAAK8f,IAAI85C,GAAAA,IAAO55D,KAAK4f,IAAIg6C,GAAAA,MAAS;AAC9D,UAAM/4D,UAAS,OAAOo4D,cAAc,KAAK3xD,OAAOzG;AAChD,WAAOb,KAAKC,IAAIg5D,aAAahgD,OAAOpY,OAAAA;EACtC;AAEe,MAAMg5D,kBAAN,cAA8Br/B,MAAAA;IAE3C57B,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKvD,QAAQhB;AAEb,WAAK+I,MAAM/I;AAEX,WAAK84D,cAAc94D;AAEnB,WAAK46D,YAAY56D;AACjB,WAAK+4D,cAAc;IACrB;IAEAhmD,MAAM3E,KAAKhE,QAAO;AAChB,UAAI4P,cAAc5L,GAAM,GAAA;AACtB,eAAO;;AAET,WAAK,OAAOA,QAAQ,YAAYA,eAAelC,WAAW,CAACrB,SAAS,CAACuD,GAAM,GAAA;AACzE,eAAO;;AAGT,aAAO,CAACA;IACV;IAEAysD,yBAAyB;AACvB,YAAM,EAACv7C,YAAW,IAAI,KAAK5X;AAC3B,YAAM,EAACsE,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAI,EAAChL,KAAAA,MAAKmC,KAAAA,KAAG,IAAI;AAEjB,YAAM43D,SAAS3+C,CAAAA,OAAMpb,OAAMiL,aAAajL,OAAMob;AAC9C,YAAM4+C,SAAS5+C,CAAAA,OAAMjZ,OAAM+I,aAAa/I,OAAMiZ;AAE9C,UAAImD,aAAa;AACf,cAAM07C,UAAUlwD,KAAK/J,IAAAA;AACrB,cAAMk6D,UAAUnwD,KAAK5H,IAAAA;AAErB,YAAI83D,UAAU,KAAKC,UAAU,GAAG;AAC9BF,iBAAO,CAAA;QACT,WAAWC,UAAU,KAAKC,UAAU,GAAG;AACrCH,iBAAO,CAAA;;;AAIX,UAAI/5D,SAAQmC,MAAK;AACf,YAAIic,UAASjc,SAAQ,IAAI,IAAIpC,KAAKwY,IAAIpW,OAAM,IAAK;AAEjD63D,eAAO73D,OAAMic,OAAAA;AAEb,YAAI,CAACG,aAAa;AAChBw7C,iBAAO/5D,OAAMoe,OAAAA;;;AAGjB,WAAKpe,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEAg4D,eAAe;AACb,YAAM3jC,WAAW,KAAK7vB,QAAQ8R;AAE9B,UAAI,EAACme,eAAewjC,SAAAA,IAAY5jC;AAChC,UAAIgiC;AAEJ,UAAI4B,UAAU;AACZ5B,mBAAWz4D,KAAKk4B,KAAK,KAAK91B,MAAMi4D,QAAYr6D,IAAAA,KAAKoE,MAAM,KAAKnE,MAAMo6D,QAAY,IAAA;AAC9E,YAAI5B,WAAW,KAAM;AACnBjpD,kBAAQC,KAAK,UAAU,KAAKzE,sBAAsBqvD,0CAA0C5B,mCAAmC;AAC/HA,qBAAW;;aAER;AACLA,mBAAW,KAAK6B,iBAAgB;AAChCzjC,wBAAgBA,iBAAiB;;AAGnC,UAAIA,eAAe;AACjB4hC,mBAAWz4D,KAAKC,IAAI42B,eAAe4hC,QAAAA;;AAGrC,aAAOA;IACT;IAKA6B,mBAAmB;AACjB,aAAOlvD,OAAOE;IAChB;IAEA2xB,aAAa;AACX,YAAMl1B,OAAO,KAAKnB;AAClB,YAAM6vB,WAAW1uB,KAAK2Q;AAMtB,UAAI+/C,WAAW,KAAK2B,aAAY;AAChC3B,iBAAWz4D,KAAKoC,IAAI,GAAGq2D,QAAAA;AAEvB,YAAM8B,0BAA0B;QAC9B9B;QACA9X,QAAQ54C,KAAK44C;QACb1gD,KAAK8H,KAAK9H;QACVmC,KAAK2F,KAAK3F;QACVo2D,WAAW/hC,SAAS+hC;QACpB11B,MAAMrM,SAAS4jC;QACfnoD,OAAOukB,SAASvkB;QAChBwmD,WAAW,KAAK/xB,WAAU;QAC1BlsB,YAAY,KAAKF,aAAY;QAC7BikB,aAAa/H,SAAS+H,eAAe;QACrCm6B,eAAeliC,SAASkiC,kBAAkB;MAC5C;AACA,YAAML,YAAY,KAAKv9B,UAAU;AACjC,YAAMriB,QAAQ0/C,gBAAcmC,yBAAyBjC,SAAAA;AAIrD,UAAIvwD,KAAK44C,WAAW,SAAS;AAC3B6Z,2BAAmB9hD,OAAO,MAAM,OAAA;;AAGlC,UAAI3Q,KAAKC,SAAS;AAChB0Q,cAAM1Q,QAAO;AAEb,aAAK9H,QAAQ,KAAKkC;AAClB,aAAK6F,MAAM,KAAKhI;aACX;AACL,aAAKC,QAAQ,KAAKD;AAClB,aAAKgI,MAAM,KAAK7F;;AAGlB,aAAOsW;IACT;IAKA9S,YAAY;AACV,YAAM8S,QAAQ,KAAKA;AACnB,UAAIxY,SAAQ,KAAKD;AACjB,UAAIgI,OAAM,KAAK7F;AAEf,YAAMwD,UAAS;AAEf,UAAI,KAAKgB,QAAQyX,UAAU3F,MAAM7X,QAAQ;AACvC,cAAMwd,WAAUpW,OAAM/H,UAASF,KAAKoC,IAAIsW,MAAM7X,SAAS,GAAG,CAAK,IAAA;AAC/DX,QAAAA,UAASme;AACTpW,QAAAA,QAAOoW;;AAET,WAAK25C,cAAc93D;AACnB,WAAK45D,YAAY7xD;AACjB,WAAKgwD,cAAchwD,OAAM/H;IAC3B;IAEA6T,iBAAiBzM,OAAO;AACtB,aAAOwb,aAAaxb,OAAO,KAAKlI,MAAMwH,QAAQmc,QAAQ,KAAKnc,QAAQ8R,MAAM4P,MAAM;IACjF;EACF;ACnTe,MAAMmyC,cAAN,cAA0BZ,gBAAAA;IAcvCh9B,sBAAsB;AACpB,YAAM,EAAC58B,KAAAA,MAAKmC,KAAAA,KAAG,IAAI,KAAKkR,UAAU,IAAI;AAEtC,WAAKrT,MAAM8J,eAAS9J,IAAAA,IAAOA,OAAM;AACjC,WAAKmC,MAAM2H,eAAS3H,IAAAA,IAAOA,OAAM;AAGjC,WAAK23D,uBAAsB;IAC7B;IAMAO,mBAAmB;AACjB,YAAM7/C,aAAa,KAAKF,aAAY;AACpC,YAAM1Z,UAAS4Z,aAAa,KAAK2B,QAAQ,KAAKD;AAC9C,YAAMqiB,cAAcxd,UAAU,KAAKpa,QAAQ8R,MAAM8lB,WAAW;AAC5D,YAAMvlB,SAASwB,aAAaza,KAAK8f,IAAI0e,WAAAA,IAAex+B,KAAK4f,IAAI4e,WAAAA,MAAiB;AAC9E,YAAMoC,WAAW,KAAKG,wBAAwB,CAAA;AAC9C,aAAO/gC,KAAKk4B,KAAKr3B,UAASb,KAAKC,IAAI,IAAI2gC,SAAS9G,aAAa7gB,KAAAA,CAAAA;IAC/D;IAGAR,iBAAiBnR,OAAO;AACtB,aAAOA,UAAU,OAAO+L,MAAM,KAAKoK,oBAAoBnW,QAAQ,KAAK0wD,eAAe,KAAKC,WAAW;IACrG;IAEAt6C,iBAAiByjB,OAAO;AACtB,aAAO,KAAK42B,cAAc,KAAKx2B,mBAAmBJ,KAAAA,IAAS,KAAK62B;IAClE;EACF;AA3CE,gBAFmBwC,aAEZzvD,MAAK;AAKZ,gBAPmByvD,aAOZx0D,YAAW;IAChByS,OAAO;MACL2lB,UAAUq8B,MAAMC,WAAWC;IAC7B;;ACRJ,MAAMC,aAAax/C,CAAAA,OAAKrb,KAAKoE,MAAM02D,MAAMz/C,EAAAA,CAAAA;AACzC,MAAM0/C,iBAAiB,CAAC1/C,IAAG2/C,OAAMh7D,KAAKwqB,IAAI,IAAIqwC,WAAWx/C,EAAK2/C,IAAAA,EAAAA;AAE9D,WAASC,QAAQC,SAAS;AACxB,UAAMl2D,SAASk2D,UAAWl7D,KAAKwqB,IAAI,IAAIqwC,WAAWK,OAAAA,CAAAA;AAClD,WAAOl2D,WAAW;EACpB;AAEA,WAASm2D,MAAMl7D,MAAKmC,MAAKg5D,UAAU;AACjC,UAAMC,YAAYr7D,KAAKwqB,IAAI,IAAI4wC,QAAAA;AAC/B,UAAMl7D,SAAQF,KAAKoE,MAAMnE,OAAMo7D,SAAAA;AAC/B,UAAMpzD,OAAMjI,KAAKk4B,KAAK91B,OAAMi5D,SAAAA;AAC5B,WAAOpzD,OAAM/H;EACf;AAEA,WAASo7D,SAASr7D,MAAKmC,MAAK;AAC1B,UAAM+Q,SAAQ/Q,OAAMnC;AACpB,QAAIm7D,WAAWP,WAAW1nD,MAAAA;AAC1B,WAAOgoD,MAAMl7D,MAAKmC,MAAKg5D,QAAAA,IAAY,IAAI;AACrCA;IACF;AACA,WAAOD,MAAMl7D,MAAKmC,MAAKg5D,QAAAA,IAAY,IAAI;AACrCA;IACF;AACA,WAAOp7D,KAAKC,IAAIm7D,UAAUP,WAAW56D,IAAAA,CAAAA;EACvC;AASA,WAASm4D,cAAcC,mBAAmB,EAACp4D,KAAAA,MAAKmC,KAAAA,KAAG,GAAG;AACpDnC,IAAAA,OAAM67B,gBAAgBu8B,kBAAkBp4D,KAAKA,IAAAA;AAC7C,UAAMyY,QAAQ,CAAA;AACd,UAAM6iD,SAASV,WAAW56D,IAAAA;AAC1B,QAAIu7D,MAAMF,SAASr7D,MAAKmC,IAAAA;AACxB,QAAIo2D,YAAYgD,MAAM,IAAIx7D,KAAKwqB,IAAI,IAAIxqB,KAAKwY,IAAIgjD,GAAAA,CAAAA,IAAQ;AACxD,UAAMnB,WAAWr6D,KAAKwqB,IAAI,IAAIgxC,GAAAA;AAC9B,UAAM9gD,OAAO6gD,SAASC,MAAMx7D,KAAKwqB,IAAI,IAAI+wC,MAAAA,IAAU;AACnD,UAAMr7D,SAAQF,KAAKw3B,OAAOv3B,OAAMya,QAAQ89C,SAAaA,IAAAA;AACrD,UAAMn6C,UAASre,KAAKoE,OAAOnE,OAAMya,QAAQ2/C,WAAW,EAAA,IAAMA,WAAW;AACrE,QAAIoB,cAAcz7D,KAAKoE,OAAOlE,SAAQme,WAAUre,KAAKwqB,IAAI,IAAIgxC,GAAAA,CAAAA;AAC7D,QAAIl0D,QAAQw0B,gBAAgBu8B,kBAAkBp4D,KAAKD,KAAKw3B,OAAO9c,OAAO2D,UAASo9C,cAAcz7D,KAAKwqB,IAAI,IAAIgxC,GAAAA,KAAQhD,SAAaA,IAAAA,SAAAA;AAC/H,WAAOlxD,QAAQlF,MAAK;AAClBsW,YAAM5W,KAAK;QAACwF;QAAOyvB,OAAOkkC,QAAQ3zD,KAAAA;QAAQm0D;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;;AAE7BlxD,cAAQtH,KAAKw3B,OAAO9c,OAAO2D,UAASo9C,cAAcz7D,KAAKwqB,IAAI,IAAIgxC,GAAAA,KAAQhD,SAAaA,IAAAA;IACtF;AACA,UAAMkD,WAAW5/B,gBAAgBu8B,kBAAkBj2D,KAAKkF,KAAAA;AACxDoR,UAAM5W,KAAK;MAACwF,OAAOo0D;MAAU3kC,OAAOkkC,QAAQS,QAAAA;MAAWD;IAAW,CAAA;AAElE,WAAO/iD;EACT;AAEe,MAAMijD,mBAAN,cAA+BnhC,MAAAA;IAiB5C57B,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKvD,QAAQhB;AAEb,WAAK+I,MAAM/I;AAEX,WAAK84D,cAAc94D;AACnB,WAAK+4D,cAAc;IACrB;IAEAhmD,MAAM3E,KAAKhE,QAAO;AAChB,YAAMhC,QAAQuyD,gBAAgB1xC,UAAUlW,MAAMq9C,MAAM,MAAM;QAAChiD;QAAKhE;MAAM,CAAA;AACtE,UAAIhC,UAAU,GAAG;AACf,aAAKs0D,QAAQ;AACb,eAAO18D;;AAET,aAAO6K,eAASzC,KAAAA,KAAUA,QAAQ,IAAIA,QAAQ;IAChD;IAEAu1B,sBAAsB;AACpB,YAAM,EAAC58B,KAAAA,MAAKmC,KAAAA,KAAG,IAAI,KAAKkR,UAAU,IAAI;AAEtC,WAAKrT,MAAM8J,eAAS9J,IAAAA,IAAOD,KAAKoC,IAAI,GAAGnC,IAAAA,IAAO;AAC9C,WAAKmC,MAAM2H,eAAS3H,IAAAA,IAAOpC,KAAKoC,IAAI,GAAGA,IAAAA,IAAO;AAE9C,UAAI,KAAKwE,QAAQ4X,aAAa;AAC5B,aAAKo9C,QAAQ;;AAKf,UAAI,KAAKA,SAAS,KAAK37D,QAAQ,KAAKs7B,iBAAiB,CAACxxB,eAAS,KAAKsxB,QAAQ,GAAG;AAC7E,aAAKp7B,MAAMA,SAAQ86D,eAAe,KAAK96D,KAAK,CAAK86D,IAAAA,eAAe,KAAK96D,KAAK,EAAC,IAAK86D,eAAe,KAAK96D,KAAK,CAAE;;AAG7G,WAAK85D,uBAAsB;IAC7B;IAEAA,yBAAyB;AACvB,YAAM,EAAC7uD,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAIhL,OAAM,KAAKA;AACf,UAAImC,OAAM,KAAKA;AAEf,YAAM43D,SAAS3+C,CAAAA,OAAMpb,OAAMiL,aAAajL,OAAMob;AAC9C,YAAM4+C,SAAS5+C,CAAAA,OAAMjZ,OAAM+I,aAAa/I,OAAMiZ;AAE9C,UAAIpb,SAAQmC,MAAK;AACf,YAAInC,QAAO,GAAG;AACZ+5D,iBAAO,CAAA;AACPC,iBAAO,EAAA;eACF;AACLD,iBAAOe,eAAe96D,MAAK,EAAC,CAAA;AAC5Bg6D,iBAAOc,eAAe34D,MAAK,CAAC,CAAA;;;AAGhC,UAAInC,QAAO,GAAG;AACZ+5D,eAAOe,eAAe34D,MAAK,EAAC,CAAA;;AAE9B,UAAIA,QAAO,GAAG;AAEZ63D,eAAOc,eAAe96D,MAAK,CAAC,CAAA;;AAG9B,WAAKA,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEA66B,aAAa;AACX,YAAMl1B,OAAO,KAAKnB;AAElB,YAAMyxD,oBAAoB;QACxBp4D,KAAK,KAAKo7B;QACVj5B,KAAK,KAAKg5B;MACZ;AACA,YAAM1iB,QAAQ0/C,cAAcC,mBAAmB,IAAI;AAInD,UAAItwD,KAAK44C,WAAW,SAAS;AAC3B6Z,2BAAmB9hD,OAAO,MAAM,OAAA;;AAGlC,UAAI3Q,KAAKC,SAAS;AAChB0Q,cAAM1Q,QAAO;AAEb,aAAK9H,QAAQ,KAAKkC;AAClB,aAAK6F,MAAM,KAAKhI;aACX;AACL,aAAKC,QAAQ,KAAKD;AAClB,aAAKgI,MAAM,KAAK7F;;AAGlB,aAAOsW;IACT;IAMA3E,iBAAiBzM,OAAO;AACtB,aAAOA,UAAUpI,SACb,MACA4jB,aAAaxb,OAAO,KAAKlI,MAAMwH,QAAQmc,QAAQ,KAAKnc,QAAQ8R,MAAM4P,MAAM;IAC9E;IAKA1iB,YAAY;AACV,YAAM1F,SAAQ,KAAKD;AAEnB,YAAM2F,UAAS;AAEf,WAAKoyD,cAAc8C,MAAM56D,MAAAA;AACzB,WAAK+3D,cAAc6C,MAAM,KAAK14D,GAAG,IAAI04D,MAAM56D,MAAAA;IAC7C;IAEAuY,iBAAiBnR,OAAO;AACtB,UAAIA,UAAUpI,UAAaoI,UAAU,GAAG;AACtCA,gBAAQ,KAAKrH;;AAEf,UAAIqH,UAAU,QAAQuV,MAAMvV,KAAQ,GAAA;AAClC,eAAO+L;;AAET,aAAO,KAAKoK,mBAAmBnW,UAAU,KAAKrH,MAC1C,KACC66D,MAAMxzD,KAAAA,IAAS,KAAK0wD,eAAe,KAAKC,WAAW;IAC1D;IAEAt6C,iBAAiByjB,OAAO;AACtB,YAAMC,UAAU,KAAKG,mBAAmBJ,KAAAA;AACxC,aAAOphC,KAAKwqB,IAAI,IAAI,KAAKwtC,cAAc32B,UAAU,KAAK42B,WAAW;IACnE;EACF;AAtJE,gBAFmB0D,kBAEZ3wD,MAAK;AAKZ,gBAPmB2wD,kBAOZ11D,YAAW;IAChByS,OAAO;MACL2lB,UAAUq8B,MAAMC,WAAWkB;MAC3B9kC,OAAO;QACLC,SAAS;MACX;IACF;;AC9EJ,WAAS8kC,sBAAsB/zD,MAAM;AACnC,UAAM0uB,WAAW1uB,KAAK2Q;AAEtB,QAAI+d,SAASvP,WAAWnf,KAAKmf,SAAS;AACpC,YAAM4I,UAAUO,UAAUoG,SAASmO,eAAe;AAClD,aAAO70B,eAAe0mB,SAASkD,QAAQlD,SAASkD,KAAKpyB,MAAMtB,SAAS0zB,KAAKpyB,IAAI,IAAIuoB,QAAQ3T;;AAE3F,WAAO;EACT;AAEA,WAAS4/C,iBAAiB5tD,KAAKwrB,MAAM7lB,OAAO;AAC1CA,YAAQvN,QAAQuN,KAAAA,IAASA,QAAQ;MAACA;IAAM;AACxC,WAAO;MACL6a,GAAGqtC,aAAa7tD,KAAKwrB,KAAKqH,QAAQltB,KAAAA;MAClC+a,GAAG/a,MAAMjT,SAAS84B,KAAKG;IACzB;EACF;AAEA,WAASmiC,gBAAgB/7C,OAAOiM,KAAK5kB,OAAMtH,MAAKmC,MAAK;AACnD,QAAI8d,UAAUjgB,QAAOigB,UAAU9d,MAAK;AAClC,aAAO;QACLlC,OAAOisB,MAAO5kB,QAAO;QACrBU,KAAKkkB,MAAO5kB,QAAO;MACrB;IACF,WAAW2Y,QAAQjgB,QAAOigB,QAAQ9d,MAAK;AACrC,aAAO;QACLlC,OAAOisB,MAAM5kB;QACbU,KAAKkkB;MACP;;AAGF,WAAO;MACLjsB,OAAOisB;MACPlkB,KAAKkkB,MAAM5kB;IACb;EACF;AAKA,WAAS20D,mBAAmBr0D,QAAO;AA8BjC,UAAMqT,OAAO;MACXnS,GAAGlB,OAAMa,OAAOb,OAAMwmD,SAAS3lD;MAC/BG,GAAGhB,OAAMW,QAAQX,OAAMwmD,SAAS7lD;MAChCI,GAAGf,OAAMU,MAAMV,OAAMwmD,SAAS9lD;MAC9BO,GAAGjB,OAAMY,SAASZ,OAAMwmD,SAAS5lD;IACnC;AACA,UAAM0zD,SAASp2D,OAAOyB,OAAO,CAAA,GAAI0T,IAAAA;AACjC,UAAM2jB,aAAa,CAAA;AACnB,UAAM/O,UAAU,CAAA;AAChB,UAAMssC,aAAav0D,OAAMw0D,aAAax7D;AACtC,UAAMy7D,iBAAiBz0D,OAAMjB,QAAQwgB;AACrC,UAAMm1C,kBAAkBD,eAAeE,oBAAoB/7C,KAAK27C,aAAa;AAE7E,aAASt7D,KAAI,GAAGA,KAAIs7D,YAAYt7D,MAAK;AACnC,YAAMiH,OAAOu0D,eAAe3gC,WAAW9zB,OAAM40D,qBAAqB37D,EAAAA,CAAAA;AAClEgvB,cAAQhvB,EAAAA,IAAKiH,KAAK+nB;AAClB,YAAMtI,gBAAgB3f,OAAM60D,iBAAiB57D,IAAG+G,OAAM80D,cAAc7sC,QAAQhvB,EAAAA,GAAIy7D,eAAAA;AAChF,YAAMK,SAAShjC,OAAO7xB,KAAK4xB,IAAI;AAC/B,YAAM20B,WAAWyN,iBAAiBl0D,OAAMsG,KAAKyuD,QAAQ/0D,OAAMw0D,aAAav7D,EAAE,CAAA;AAC1E+9B,iBAAW/9B,EAAAA,IAAKwtD;AAEhB,YAAM3uB,eAAeimB,gBAAgB/9C,OAAM+e,cAAc9lB,EAAKy7D,IAAAA,eAAAA;AAC9D,YAAMr8C,QAAQlgB,KAAKw3B,MAAM6H,UAAUM,YAAAA,CAAAA;AACnC,YAAMk9B,UAAUZ,gBAAgB/7C,OAAOsH,cAAcnf,GAAGimD,SAAS3/B,GAAG,GAAG,GAAA;AACvE,YAAMmuC,UAAUb,gBAAgB/7C,OAAOsH,cAAclf,GAAGgmD,SAASz/B,GAAG,IAAI,GAAA;AACxEkuC,mBAAaZ,QAAQjhD,MAAMykB,cAAck9B,SAASC,OAAAA;IACpD;AAEAj1D,IAAAA,OAAMm1D,eACJ9hD,KAAKnS,IAAIozD,OAAOpzD,GAChBozD,OAAOtzD,IAAIqS,KAAKrS,GAChBqS,KAAKtS,IAAIuzD,OAAOvzD,GAChBuzD,OAAOrzD,IAAIoS,KAAKpS,CAAC;AAInBjB,IAAAA,OAAMo1D,mBAAmBC,qBAAqBr1D,QAAOg3B,YAAY/O,OAAAA;EACnE;AAEA,WAASitC,aAAaZ,QAAQjhD,MAAMgF,OAAO28C,SAASC,SAAS;AAC3D,UAAMh9C,MAAM9f,KAAKwY,IAAIxY,KAAK8f,IAAII,KAAAA,CAAAA;AAC9B,UAAMN,MAAM5f,KAAKwY,IAAIxY,KAAK4f,IAAIM,KAAAA,CAAAA;AAC9B,QAAI7X,KAAI;AACR,QAAIC,KAAI;AACR,QAAIu0D,QAAQ38D,QAAQgb,KAAKnS,GAAG;AAC1BV,MAAAA,MAAK6S,KAAKnS,IAAI8zD,QAAQ38D,SAAS4f;AAC/Bq8C,aAAOpzD,IAAI/I,KAAKC,IAAIk8D,OAAOpzD,GAAGmS,KAAKnS,IAAIV,EAAAA;IACzC,WAAWw0D,QAAQ50D,MAAMiT,KAAKrS,GAAG;AAC/BR,MAAAA,MAAKw0D,QAAQ50D,MAAMiT,KAAKrS,KAAKiX;AAC7Bq8C,aAAOtzD,IAAI7I,KAAKoC,IAAI+5D,OAAOtzD,GAAGqS,KAAKrS,IAAIR,EAAAA;;AAEzC,QAAIy0D,QAAQ58D,QAAQgb,KAAKtS,GAAG;AAC1BN,MAAAA,MAAK4S,KAAKtS,IAAIk0D,QAAQ58D,SAAS0f;AAC/Bu8C,aAAOvzD,IAAI5I,KAAKC,IAAIk8D,OAAOvzD,GAAGsS,KAAKtS,IAAIN,EAAAA;IACzC,WAAWw0D,QAAQ70D,MAAMiT,KAAKpS,GAAG;AAC/BR,MAAAA,MAAKw0D,QAAQ70D,MAAMiT,KAAKpS,KAAK8W;AAC7Bu8C,aAAOrzD,IAAI9I,KAAKoC,IAAI+5D,OAAOrzD,GAAGoS,KAAKpS,IAAIR,EAAAA;;EAE3C;AAEA,WAAS60D,qBAAqBt1D,QAAOyB,QAAO8zD,UAAU;AACpD,UAAMC,gBAAgBx1D,OAAM80D;AAC5B,UAAM,EAACW,OAAOf,iBAAiBzsC,SAASvoB,MAAAA,MAAI,IAAI61D;AAChD,UAAMG,qBAAqB11D,OAAM60D,iBAAiBpzD,QAAO+zD,gBAAgBC,QAAQxtC,SAASysC,eAAAA;AAC1F,UAAMr8C,QAAQlgB,KAAKw3B,MAAM6H,UAAUumB,gBAAgB2X,mBAAmBr9C,QAAQK,OAAAA,CAAAA,CAAAA;AAC9E,UAAMjY,KAAIk1D,UAAUD,mBAAmBj1D,GAAGf,MAAKsnB,GAAG3O,KAAAA;AAClD,UAAM0jB,YAAY65B,qBAAqBv9C,KAAAA;AACvC,UAAMxX,QAAOg1D,iBAAiBH,mBAAmBl1D,GAAGd,MAAKonB,GAAGiV,SAAAA;AAC5D,WAAO;MAELmQ,SAAS;MAGT1rC,GAAGk1D,mBAAmBl1D;MACtBC,GAAAA;MAGAs7B;MAGAl7B,MAAAA;MACAH,KAAKD;MACLE,OAAOE,QAAOnB,MAAKonB;MACnBlmB,QAAQH,KAAIf,MAAKsnB;IACnB;EACF;AAEA,WAAS8uC,gBAAgB38D,MAAMmT,MAAM;AACnC,QAAI,CAACA,MAAM;AACT,aAAO;;AAET,UAAM,EAACzL,MAAAA,OAAMH,KAAAA,MAAKC,OAAAA,QAAOC,QAAAA,QAAM,IAAIzH;AACnC,UAAM48D,eAAe9yC,eAAe;MAACziB,GAAGK;MAAMJ,GAAGC;IAAG,GAAG4L,IAAAA,KAAS2W,eAAe;MAACziB,GAAGK;MAAMJ,GAAGG;IAAM,GAAG0L,IAAAA,KACnG2W,eAAe;MAACziB,GAAGG;MAAOF,GAAGC;IAAG,GAAG4L,IAAAA,KAAS2W,eAAe;MAACziB,GAAGG;MAAOF,GAAGG;OAAS0L,IAAAA;AACpF,WAAO,CAACypD;EACV;AAEA,WAASV,qBAAqBr1D,QAAOg3B,YAAY/O,SAAS;AACxD,UAAMlvB,QAAQ,CAAA;AACd,UAAMw7D,aAAav0D,OAAMw0D,aAAax7D;AACtC,UAAMkH,OAAOF,OAAMjB;AACnB,UAAM,EAAC41D,mBAAmBt1C,QAAAA,IAAWnf,KAAKqf;AAC1C,UAAMg2C,WAAW;MACfE,OAAOxB,sBAAsB/zD,IAAQ,IAAA;MACrCw0D,iBAAiBC,oBAAoB/7C,KAAK27C,aAAa;IACzD;AACA,QAAIjoD;AAEJ,aAASrT,KAAI,GAAGA,KAAIs7D,YAAYt7D,MAAK;AACnCs8D,eAASttC,UAAUA,QAAQhvB,EAAE;AAC7Bs8D,eAAS71D,OAAOs3B,WAAW/9B,EAAE;AAE7B,YAAME,OAAOm8D,qBAAqBt1D,QAAO/G,IAAGs8D,QAAAA;AAC5Cx8D,YAAMkB,KAAKd,IAAAA;AACX,UAAIkmB,YAAY,QAAQ;AACtBlmB,aAAK+yC,UAAU4pB,gBAAgB38D,MAAMmT,IAAAA;AACrC,YAAInT,KAAK+yC,SAAS;AAChB5/B,iBAAOnT;;;IAGb;AACA,WAAOJ;EACT;AAEA,WAAS68D,qBAAqBv9C,OAAO;AACnC,QAAIA,UAAU,KAAKA,UAAU,KAAK;AAChC,aAAO;eACEA,QAAQ,KAAK;AACtB,aAAO;;AAGT,WAAO;EACT;AAEA,WAASw9C,iBAAiBr1D,IAAGsmB,IAAG4J,OAAO;AACrC,QAAIA,UAAU,SAAS;AACrBlwB,MAAAA,MAAKsmB;eACI4J,UAAU,UAAU;AAC7BlwB,MAAAA,MAAMsmB,KAAI;;AAEZ,WAAOtmB;EACT;AAEA,WAASm1D,UAAUl1D,IAAGumB,IAAG3O,OAAO;AAC9B,QAAIA,UAAU,MAAMA,UAAU,KAAK;AACjC5X,MAAAA,MAAMumB,KAAI;IACZ,WAAW3O,QAAQ,OAAOA,QAAQ,IAAI;AACpC5X,MAAAA,MAAKumB;;AAEP,WAAOvmB;EACT;AAEA,WAASu1D,kBAAkB1vD,KAAKpG,MAAM/G,MAAM;AAC1C,UAAM,EAAC0H,MAAAA,OAAMH,KAAAA,MAAKC,OAAAA,QAAOC,QAAAA,QAAM,IAAIzH;AACnC,UAAM,EAAC6jC,cAAa,IAAI98B;AAExB,QAAI,CAACmR,cAAc2rB,aAAgB,GAAA;AACjC,YAAM2T,eAAe2H,cAAcp4C,KAAKywC,YAAY;AACpD,YAAM1oB,UAAUO,UAAUtoB,KAAK68B,eAAe;AAC9Cz2B,UAAI+V,YAAY2gB;AAEhB,YAAMi5B,eAAep1D,QAAOonB,QAAQpnB;AACpC,YAAMq1D,cAAcx1D,OAAMunB,QAAQvnB;AAClC,YAAMy1D,gBAAgBx1D,SAAQE,QAAOonB,QAAQ1T;AAC7C,YAAM6hD,iBAAiBx1D,UAASF,OAAMunB,QAAQ3T;AAE9C,UAAIpW,OAAOW,OAAO8xC,YAAAA,EAAcxN,KAAK3vB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClDlN,YAAIu3B,UAAS;AACb8b,2BAAmBrzC,KAAK;UACtB9F,GAAGy1D;UACHx1D,GAAGy1D;UACHpvC,GAAGqvC;UACHnvC,GAAGovC;UACHv/C,QAAQ85B;QACV,CAAA;AACArqC,YAAImB,KAAI;aACH;AACLnB,YAAI+2B,SAAS44B,cAAcC,aAAaC,eAAeC,cAAAA;;;EAG7D;AAEA,WAASC,gBAAgBr2D,QAAO+qD,YAAY;AAC1C,UAAM,EAACzkD,KAAKvH,SAAS,EAACwgB,YAAW,EAAC,IAAIvf;AAEtC,aAAS/G,KAAI8xD,aAAa,GAAG9xD,MAAK,GAAGA,MAAK;AACxC,YAAME,OAAO6G,OAAMo1D,iBAAiBn8D,EAAE;AACtC,UAAI,CAACE,KAAK+yC,SAAS;AAEjB;;AAEF,YAAMhR,cAAc3b,YAAYuU,WAAW9zB,OAAM40D,qBAAqB37D,EAAAA,CAAAA;AACtE+8D,wBAAkB1vD,KAAK40B,aAAa/hC,IAAAA;AACpC,YAAM47D,SAAShjC,OAAOmJ,YAAYpJ,IAAI;AACtC,YAAM,EAACtxB,GAAAA,IAAGC,GAAAA,IAAGs7B,UAAAA,IAAa5iC;AAE1BolC,iBACEj4B,KACAtG,OAAMw0D,aAAav7D,EAAE,GACrBuH,IACAC,KAAKs0D,OAAO9iC,aAAa,GACzB8iC,QACA;QACE55D,OAAO+/B,YAAY//B;QACnB4gC;QACAG,cAAc;MAChB,CAAA;IAEJ;EACF;AAEA,WAASo6B,eAAet2D,QAAO6W,QAAQyI,UAAUyrC,YAAY;AAC3D,UAAM,EAACzkD,IAAG,IAAItG;AACd,QAAIsf,UAAU;AAEZhZ,UAAIyU,IAAI/a,OAAM4e,SAAS5e,OAAM6e,SAAShI,QAAQ,GAAGc,GAAAA;WAC5C;AAEL,UAAIgI,gBAAgB3f,OAAM60D,iBAAiB,GAAGh+C,MAAAA;AAC9CvQ,UAAIw3B,OAAOne,cAAcnf,GAAGmf,cAAclf,CAAC;AAE3C,eAASxH,KAAI,GAAGA,KAAI8xD,YAAY9xD,MAAK;AACnC0mB,wBAAgB3f,OAAM60D,iBAAiB57D,IAAG4d,MAAAA;AAC1CvQ,YAAIy3B,OAAOpe,cAAcnf,GAAGmf,cAAclf,CAAC;MAC7C;;EAEJ;AAEA,WAAS81D,eAAev2D,QAAOw2D,cAAc3/C,QAAQk0C,YAAY7wB,YAAY;AAC3E,UAAM5zB,MAAMtG,OAAMsG;AAClB,UAAMgZ,WAAWk3C,aAAal3C;AAE9B,UAAM,EAACnkB,OAAAA,QAAOuhB,UAAAA,IAAa85C;AAE3B,QAAK,CAACl3C,YAAY,CAACyrC,cAAe,CAAC5vD,UAAS,CAACuhB,aAAa7F,SAAS,GAAG;AACpE;;AAGFvQ,QAAI82B,KAAI;AACR92B,QAAIiW,cAAcphB;AAClBmL,QAAIoW,YAAYA;AAChBpW,QAAIq3B,YAAYzD,WAAWoB,QAAQ,CAAA,CAAE;AACrCh1B,QAAIs3B,iBAAiB1D,WAAWsB;AAEhCl1B,QAAIu3B,UAAS;AACby4B,mBAAet2D,QAAO6W,QAAQyI,UAAUyrC,UAAAA;AACxCzkD,QAAI+pC,UAAS;AACb/pC,QAAI03B,OAAM;AACV13B,QAAIg3B,QAAO;EACb;AAEA,WAASm5B,wBAAwBtxD,QAAQ1D,QAAOwK,OAAO;AACrD,WAAO7G,cAAcD,QAAQ;MAC3B8G;MACAxK,OAAAA;MACA/J,MAAM;IACR,CAAA;EACF;AAEe,MAAMg/D,oBAAN,cAAgC1E,gBAAAA;IA0E7Cj7D,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKgjB,UAAUvnB;AAEf,WAAKwnB,UAAUxnB;AAEf,WAAKy9D,cAAcz9D;AAEnB,WAAKm9D,eAAe,CAAA;AACpB,WAAKY,mBAAmB,CAAA;IAC1B;IAEAvgC,gBAAgB;AAEd,YAAM5M,UAAU,KAAKu+B,WAAWh+B,UAAUyrC,sBAAsB,KAAKl1D,OAAO,IAAI,CAAA;AAChF,YAAM+nB,KAAI,KAAKvS,QAAQ,KAAKwF,WAAWkO,QAAQ1T;AAC/C,YAAMyS,KAAI,KAAK1S,SAAS,KAAK0F,YAAYiO,QAAQ3T;AACjD,WAAKsK,UAAUzmB,KAAKoE,MAAM,KAAKsE,OAAOimB,KAAI,IAAImB,QAAQpnB,IAAI;AAC1D,WAAKge,UAAU1mB,KAAKoE,MAAM,KAAKmE,MAAMsmB,KAAI,IAAIiB,QAAQvnB,GAAG;AACxD,WAAKo0D,cAAc38D,KAAKoE,MAAMpE,KAAKC,IAAI0uB,IAAGE,EAAK,IAAA,CAAA;IACjD;IAEAgO,sBAAsB;AACpB,YAAM,EAAC58B,KAAAA,MAAKmC,KAAAA,KAAG,IAAI,KAAKkR,UAAU,KAAK;AAEvC,WAAKrT,MAAM8J,eAAS9J,IAAAA,KAAQ,CAAC4c,MAAM5c,IAAOA,IAAAA,OAAM;AAChD,WAAKmC,MAAM2H,eAAS3H,IAAAA,KAAQ,CAACya,MAAMza,IAAOA,IAAAA,OAAM;AAGhD,WAAK23D,uBAAsB;IAC7B;IAMAO,mBAAmB;AACjB,aAAOt6D,KAAKk4B,KAAK,KAAKykC,cAAcb,sBAAsB,KAAKl1D,OAAO,CAAA;IACxE;IAEAw3B,mBAAmB1lB,OAAO;AACxBmhD,sBAAgB1xC,UAAUiW,mBAAmB/9B,KAAK,MAAMqY,KAAAA;AAGxD,WAAK2jD,eAAe,KAAK1pD,UAAS,EAC/BoR,IAAI,CAACzc,OAAOgC,WAAU;AACrB,cAAMwK,QAAQ02B,SAAa,KAAK5jC,QAAQwgB,YAAYiX,UAAU;UAAC/2B;UAAOgC;QAAM,GAAE,IAAI;AAClF,eAAOwK,SAASA,UAAU,IAAIA,QAAQ;OAEvCjH,EAAAA,OAAO,CAACwO,IAAGva,OAAM,KAAK1B,MAAMme,kBAAkBzc,EAAAA,CAAAA;IACnD;IAEA68B,MAAM;AACJ,YAAM51B,OAAO,KAAKnB;AAElB,UAAImB,KAAKmf,WAAWnf,KAAKqf,YAAYF,SAAS;AAC5Cg1C,2BAAmB,IAAI;aAClB;AACL,aAAKc,eAAe,GAAG,GAAG,GAAG,CAAA;;IAEjC;IAEAA,eAAewB,cAAcC,eAAeC,aAAaC,gBAAgB;AACvE,WAAKl4C,WAAWzmB,KAAKoE,OAAOo6D,eAAeC,iBAAiB,CAAA;AAC5D,WAAK/3C,WAAW1mB,KAAKoE,OAAOs6D,cAAcC,kBAAkB,CAAA;AAC5D,WAAKhC,eAAe38D,KAAKC,IAAI,KAAK08D,cAAc,GAAG38D,KAAKoC,IAAIo8D,cAAcC,eAAeC,aAAaC,cAAAA,CAAAA;IACxG;IAEA/3C,cAActd,QAAO;AACnB,YAAMs1D,kBAAkBp/C,OAAO,KAAK68C,aAAax7D,UAAU;AAC3D,YAAM4e,aAAa,KAAK7Y,QAAQ6Y,cAAc;AAE9C,aAAOmmC,gBAAgBt8C,SAAQs1D,kBAAkB59C,UAAUvB,UAAAA,CAAAA;IAC7D;IAEAuH,8BAA8B1f,OAAO;AACnC,UAAI4R,cAAc5R,KAAQ,GAAA;AACxB,eAAO+L;;AAIT,YAAMwrD,gBAAgB,KAAKlC,eAAe,KAAKv6D,MAAM,KAAKnC;AAC1D,UAAI,KAAK2G,QAAQoB,SAAS;AACxB,gBAAQ,KAAK5F,MAAMkF,SAASu3D;;AAE9B,cAAQv3D,QAAQ,KAAKrH,OAAO4+D;IAC9B;IAEAC,8BAA8BtzC,UAAU;AACtC,UAAItS,cAAcsS,QAAW,GAAA;AAC3B,eAAOnY;;AAGT,YAAM0rD,iBAAiBvzC,YAAY,KAAKmxC,eAAe,KAAKv6D,MAAM,KAAKnC;AACvE,aAAO,KAAK2G,QAAQoB,UAAU,KAAK5F,MAAM28D,iBAAiB,KAAK9+D,MAAM8+D;IACvE;IAEAtC,qBAAqBnzD,QAAO;AAC1B,YAAM8d,cAAc,KAAKi1C,gBAAgB,CAAA;AAEzC,UAAI/yD,UAAS,KAAKA,SAAQ8d,YAAYvmB,QAAQ;AAC5C,cAAMm+D,aAAa53C,YAAY9d,MAAM;AACrC,eAAOg1D,wBAAwB,KAAKvsD,WAAU,GAAIzI,QAAO01D,UAAAA;;IAE7D;IAEAtC,iBAAiBpzD,QAAO21D,oBAAoB1C,kBAAkB,GAAG;AAC/D,YAAMr8C,QAAQ,KAAK0G,cAActd,MAAAA,IAASiX,UAAUg8C;AACpD,aAAO;QACLl0D,GAAGrI,KAAK4f,IAAIM,KAAAA,IAAS++C,qBAAqB,KAAKx4C;QAC/Cne,GAAGtI,KAAK8f,IAAII,KAAAA,IAAS++C,qBAAqB,KAAKv4C;QAC/CxG;MACF;IACF;IAEAuH,yBAAyBne,QAAOhC,OAAO;AACrC,aAAO,KAAKo1D,iBAAiBpzD,QAAO,KAAK0d,8BAA8B1f,KAAAA,CAAAA;IACzE;IAEA43D,gBAAgB51D,QAAO;AACrB,aAAO,KAAKme,yBAAyBne,UAAS,GAAG,KAAKm4B,aAAY,CAAA;IACpE;IAEA09B,sBAAsB71D,QAAO;AAC3B,YAAM,EAACZ,MAAAA,OAAMH,KAAAA,MAAKC,OAAAA,QAAOC,QAAAA,QAAM,IAAI,KAAKw0D,iBAAiB3zD,MAAM;AAC/D,aAAO;QACLZ,MAAAA;QACAH,KAAAA;QACAC,OAAAA;QACAC,QAAAA;MACF;IACF;IAKAu8B,iBAAiB;AACf,YAAM,EAAC7gB,iBAAiB7F,MAAM,EAAC6I,SAAAA,EAAS,IAAI,KAAKvgB;AACjD,UAAIud,iBAAiB;AACnB,cAAMhW,MAAM,KAAKA;AACjBA,YAAI82B,KAAI;AACR92B,YAAIu3B,UAAS;AACby4B,uBAAe,MAAM,KAAKn3C,8BAA8B,KAAK8yC,SAAS,GAAG3yC,UAAU,KAAKk1C,aAAax7D,MAAM;AAC3GsN,YAAI+pC,UAAS;AACb/pC,YAAI+V,YAAYC;AAChBhW,YAAImB,KAAI;AACRnB,YAAIg3B,QAAO;;IAEf;IAKAC,WAAW;AACT,YAAMj3B,MAAM,KAAKA;AACjB,YAAMpG,OAAO,KAAKnB;AAClB,YAAM,EAACqgB,YAAY3I,MAAMwH,OAAAA,IAAU/d;AACnC,YAAM6qD,aAAa,KAAKyJ,aAAax7D;AAErC,UAAIC,IAAGud,SAAQuL;AAEf,UAAI7hB,KAAKqf,YAAYF,SAAS;AAC5Bg3C,wBAAgB,MAAMtL,UAAAA;;AAGxB,UAAIt0C,KAAK4I,SAAS;AAChB,aAAKxO,MAAM9Y,QAAQ,CAACuB,MAAMmI,WAAU;AAClC,cAAIA,WAAU,KAAMA,WAAU,KAAK,KAAKrJ,MAAM,GAAI;AAChDoe,YAAAA,UAAS,KAAK2I,8BAA8B7lB,KAAKmG,KAAK;AACtD,kBAAMmN,UAAU,KAAK1C,WAAWzI,MAAAA;AAChC,kBAAMy5B,cAAczkB,KAAKqd,WAAWlnB,OAAAA;AACpC,kBAAMuuB,oBAAoBld,OAAO6V,WAAWlnB,OAAAA;AAE5C2pD,2BAAe,MAAMr7B,aAAa1kB,SAAQu0C,YAAY5vB,iBAAAA;;QAE1D,CAAA;;AAGF,UAAI/b,WAAWC,SAAS;AACtB/Y,YAAI82B,KAAI;AAER,aAAKnkC,KAAI8xD,aAAa,GAAG9xD,MAAK,GAAGA,MAAK;AACpC,gBAAMiiC,cAAc9b,WAAW0U,WAAW,KAAK8gC,qBAAqB37D,EAAAA,CAAAA;AACpE,gBAAM,EAACkC,OAAAA,QAAOuhB,UAAAA,IAAawe;AAE3B,cAAI,CAACxe,aAAa,CAACvhB,QAAO;AACxB;;AAGFmL,cAAIoW,YAAYA;AAChBpW,cAAIiW,cAAcphB;AAElBmL,cAAIq3B,YAAYzC,YAAYG,UAAU;AACtC/0B,cAAIs3B,iBAAiB1C,YAAYK;AAEjC/kB,UAAAA,UAAS,KAAK2I,8BAA8Bjf,KAAKC,UAAU,KAAK/H,MAAM,KAAKmC,GAAG;AAC9EwnB,UAAAA,YAAW,KAAK8yC,iBAAiB57D,IAAGud,OAAAA;AACpClQ,cAAIu3B,UAAS;AACbv3B,cAAIw3B,OAAO,KAAKlf,SAAS,KAAKC,OAAO;AACrCvY,cAAIy3B,OAAOhc,UAASvhB,GAAGuhB,UAASthB,CAAC;AACjC6F,cAAI03B,OAAM;QACZ;AAEA13B,YAAIg3B,QAAO;;IAEf;IAKAY,aAAa;IAAA;IAKbE,aAAa;AACX,YAAM93B,MAAM,KAAKA;AACjB,YAAMpG,OAAO,KAAKnB;AAClB,YAAM6vB,WAAW1uB,KAAK2Q;AAEtB,UAAI,CAAC+d,SAASvP,SAAS;AACrB;;AAGF,YAAMzH,aAAa,KAAKmH,cAAc,CAAA;AACtC,UAAIvI,SAAQjC;AAEZjO,UAAI82B,KAAI;AACR92B,UAAI0tC,UAAU,KAAKp1B,SAAS,KAAKC,OAAO;AACxCvY,UAAIixD,OAAO3/C,UAAAA;AACXtR,UAAIy1B,YAAY;AAChBz1B,UAAI41B,eAAe;AAEnB,WAAKrrB,MAAM9Y,QAAQ,CAACuB,MAAMmI,WAAU;AAClC,YAAKA,WAAU,KAAK,KAAKrJ,OAAO,KAAM,CAAC8H,KAAKC,SAAS;AACnD;;AAGF,cAAM+6B,cAActM,SAASkF,WAAW,KAAK5pB,WAAWzI,MAAAA,CAAAA;AACxD,cAAMs3B,WAAWhH,OAAOmJ,YAAYpJ,IAAI;AACxCtb,QAAAA,UAAS,KAAK2I,8BAA8B,KAAKtO,MAAMpP,MAAM,EAAChC,KAAK;AAEnE,YAAIy7B,YAAY0B,mBAAmB;AACjCt2B,cAAIwrB,OAAOiH,SAASI;AACpB5kB,UAAAA,SAAQjO,IAAI08C,YAAY1pD,KAAK2S,KAAK,EAAEsI;AACpCjO,cAAI+V,YAAY6e,YAAY8B;AAE5B,gBAAM/U,UAAUO,UAAU0S,YAAY6B,eAAe;AACrDz2B,cAAI+2B,SACF,CAAC9oB,SAAQ,IAAI0T,QAAQpnB,MACrB,CAAC2V,UAASuiB,SAASr5B,OAAO,IAAIuoB,QAAQvnB,KACtC6T,SAAQ0T,QAAQ1T,OAChBwkB,SAASr5B,OAAOuoB,QAAQ3T,MAAM;;AAIlCiqB,mBAAWj4B,KAAKhN,KAAK2S,OAAO,GAAG,CAACuK,SAAQuiB,UAAU;UAChD59B,OAAO+/B,YAAY//B;UACnBohC,aAAarB,YAAYsB;UACzBC,aAAavB,YAAYwB;QAC3B,CAAA;MACF,CAAA;AAEAp2B,UAAIg3B,QAAO;IACb;IAKAmB,YAAY;IAAA;EACd;AAxVE,gBAFmBi4B,mBAEZvzD,MAAK;AAKZ,gBAPmBuzD,mBAOZt4D,YAAW;IAChBihB,SAAS;IAGTm4C,SAAS;IACTz1C,UAAU;IAEV3C,YAAY;MACVC,SAAS;MACT3C,WAAW;MACX2e,YAAY,CAAA;MACZE,kBAAkB;IACpB;IAEA9kB,MAAM;MACJ6I,UAAU;IACZ;IAEA1H,YAAY;IAGZ/G,OAAO;MAEL+rB,mBAAmB;MAEnBpG,UAAUq8B,MAAMC,WAAWC;IAC7B;IAEAxzC,aAAa;MACXyd,eAAe3lC;MAGf0lC,iBAAiB;MAGjB1d,SAAS;MAGTyS,MAAM;QACJpyB,MAAM;MACR;MAGA82B,SAASvqB,OAAO;AACd,eAAOA;MACT;MAGAgc,SAAS;MAGT0sC,mBAAmB;IACrB;;AAGF,gBA9DmB+B,mBA8DZhoC,iBAAgB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,eAAe;;AAGjB,gBApEmBgoC,mBAoEZj7C,eAAc;IACnB2D,YAAY;MACVwwC,WAAW;IACb;;ACzYJ,MAAM6H,YAAY;IAChBC,aAAa;MAACC,QAAQ;MAAMj4D,MAAM;MAAG4zD,OAAO;IAAI;IAChDsE,QAAQ;MAACD,QAAQ;MAAMj4D,MAAM;MAAM4zD,OAAO;IAAE;IAC5CuE,QAAQ;MAACF,QAAQ;MAAMj4D,MAAM;MAAO4zD,OAAO;IAAE;IAC7CwE,MAAM;MAACH,QAAQ;MAAMj4D,MAAM;MAAS4zD,OAAO;IAAE;IAC7CyE,KAAK;MAACJ,QAAQ;MAAMj4D,MAAM;MAAU4zD,OAAO;IAAE;IAC7C0E,MAAM;MAACL,QAAQ;MAAOj4D,MAAM;MAAW4zD,OAAO;IAAC;IAC/C2E,OAAO;MAACN,QAAQ;MAAMj4D,MAAM;MAAS4zD,OAAO;IAAE;IAC9C4E,SAAS;MAACP,QAAQ;MAAOj4D,MAAM;MAAS4zD,OAAO;IAAC;IAChD6E,MAAM;MAACR,QAAQ;MAAMj4D,MAAM;IAAQ;EACrC;AAKA,MAAM04D,QAA6Cl6D,uBAAOC,KAAKs5D,SAAAA;AAM/D,WAASY,OAAO/nD,IAAGrP,IAAG;AACpB,WAAOqP,KAAIrP;EACb;AAOA,WAASmJ,MAAMpK,QAAOs4D,OAAO;AAC3B,QAAIjnD,cAAcinD,KAAQ,GAAA;AACxB,aAAO;;AAGT,UAAMC,UAAUv4D,OAAMw4D;AACtB,UAAM,EAACC,QAAAA,SAAQ9oC,OAAAA,QAAO+oC,WAAU,IAAI14D,OAAM24D;AAC1C,QAAIl5D,QAAQ64D;AAEZ,QAAI,OAAOG,YAAW,YAAY;AAChCh5D,cAAQg5D,QAAOh5D,KAAAA;;AAIjB,QAAI,CAACyC,eAASzC,KAAQ,GAAA;AACpBA,cAAQ,OAAOg5D,YAAW,WACtBF,QAAQnuD,MAAM3K,OAAOg5D,OACrBF,IAAAA,QAAQnuD,MAAM3K,KAAM;;AAG1B,QAAIA,UAAU,MAAM;AAClB,aAAO;;AAGT,QAAIkwB,QAAO;AACTlwB,cAAQkwB,WAAU,WAAW/R,SAAS86C,UAAeA,KAAAA,eAAe,QAChEH,QAAQ53C,QAAQlhB,OAAO,WAAWi5D,UAAAA,IAClCH,QAAQ53C,QAAQlhB,OAAOkwB,MAAM;;AAGnC,WAAO,CAAClwB;EACV;AAUA,WAASm5D,0BAA0BC,SAASzgE,MAAKmC,MAAKu+D,UAAU;AAC9D,UAAMt3D,OAAO42D,MAAMp/D;AAEnB,aAASC,KAAIm/D,MAAMnjD,QAAQ4jD,OAAAA,GAAU5/D,KAAIuI,OAAO,GAAG,EAAEvI,IAAG;AACtD,YAAM8/D,WAAWtB,UAAUW,MAAMn/D,EAAAA,CAAE;AACnC,YAAMiC,SAAS69D,SAASzF,QAAQyF,SAASzF,QAAQ/vD,OAAOy1D;AAExD,UAAID,SAASpB,UAAUx/D,KAAKk4B,MAAM91B,OAAMnC,SAAQ8C,SAAS69D,SAASr5D,KAAG,KAAOo5D,UAAU;AACpF,eAAOV,MAAMn/D,EAAE;;IAEnB;AAEA,WAAOm/D,MAAM52D,OAAO,CAAE;EACxB;AAWA,WAASy3D,2BAA2Bj5D,QAAO02B,UAAUmiC,SAASzgE,MAAKmC,MAAK;AACtE,aAAStB,KAAIm/D,MAAMp/D,SAAS,GAAGC,MAAKm/D,MAAMnjD,QAAQ4jD,OAAAA,GAAU5/D,MAAK;AAC/D,YAAM83D,OAAOqH,MAAMn/D,EAAE;AACrB,UAAIw+D,UAAU1G,IAAK,EAAC4G,UAAU33D,OAAMw4D,SAAS93C,KAAKnmB,MAAKnC,MAAK24D,IAAAA,KAASr6B,WAAW,GAAG;AACjF,eAAOq6B;;IAEX;AAEA,WAAOqH,MAAMS,UAAUT,MAAMnjD,QAAQ4jD,OAAAA,IAAW,CAAC;EACnD;AAMA,WAASK,mBAAmBnI,MAAM;AAChC,aAAS93D,KAAIm/D,MAAMnjD,QAAQ87C,IAAQ,IAAA,GAAGvvD,OAAO42D,MAAMp/D,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACxE,UAAIw+D,UAAUW,MAAMn/D,EAAAA,CAAE,EAAE0+D,QAAQ;AAC9B,eAAOS,MAAMn/D,EAAE;;IAEnB;EACF;AAOA,WAASkgE,QAAQtoD,OAAOuoD,MAAMC,YAAY;AACxC,QAAI,CAACA,YAAY;AACfxoD,YAAMuoD,IAAK,IAAG;eACLC,WAAWrgE,QAAQ;AAC5B,YAAM,EAACwoB,IAAIG,GAAAA,IAAM23C,QAAQD,YAAYD,IAAAA;AACrC,YAAMG,YAAYF,WAAW73C,EAAAA,KAAO43C,OAAOC,WAAW73C,EAAG,IAAG63C,WAAW13C,EAAG;AAC1E9Q,YAAM0oD,SAAU,IAAG;;EAEvB;AASA,WAASC,cAAcx5D,QAAO6Q,OAAOqL,MAAKu9C,WAAW;AACnD,UAAMlB,UAAUv4D,OAAMw4D;AACtB,UAAMlpC,QAAQ,CAACipC,QAAQ53C,QAAQ9P,MAAM,CAAA,EAAGpR,OAAOg6D,SAAAA;AAC/C,UAAMhlD,OAAO5D,MAAMA,MAAM7X,SAAS,CAAA,EAAGyG;AACrC,QAAIyvB,OAAOztB;AAEX,SAAKytB,QAAQI,OAAOJ,SAASza,MAAMya,QAAQ,CAACqpC,QAAQr+D,IAAIg1B,OAAO,GAAGuqC,SAAY,GAAA;AAC5Eh4D,MAAAA,SAAQya,KAAIgT,KAAM;AAClB,UAAIztB,UAAS,GAAG;AACdoP,cAAMpP,MAAAA,EAAOytB,QAAQ;;IAEzB;AACA,WAAOre;EACT;AAQA,WAAS6oD,oBAAoB15D,QAAOnB,QAAQ46D,WAAW;AACrD,UAAM5oD,QAAQ,CAAA;AAEd,UAAMqL,OAAM,CAAA;AACZ,UAAM1a,OAAO3C,OAAO7F;AACpB,QAAIC,IAAGwG;AAEP,SAAKxG,KAAI,GAAGA,KAAIuI,MAAM,EAAEvI,IAAG;AACzBwG,cAAQZ,OAAO5F,EAAE;AACjBijB,MAAAA,KAAIzc,KAAAA,IAASxG;AAEb4X,YAAM5W,KAAK;QACTwF;QACAyvB,OAAO;MACT,CAAA;IACF;AAIA,WAAQ1tB,SAAS,KAAK,CAACi4D,YAAa5oD,QAAQ2oD,cAAcx5D,QAAO6Q,OAAOqL,MAAKu9C,SAAU;EACzF;AAEe,MAAME,YAAN,cAAwBhnC,MAAAA;IAgDrC57B,YAAYwI,OAAO;AACjB,YAAMA,KAAAA;AAGN,WAAKyQ,SAAS;QACZ3N,MAAM,CAAA;QACNwI,QAAQ,CAAA;QACR/K,KAAK,CAAA;MACP;AAGA,WAAK85D,QAAQ;AAEb,WAAKC,aAAaxiE;AAClB,WAAKyiE,WAAW,CAAA;AAChB,WAAKC,cAAc;AACnB,WAAKpB,aAAathE;IACpB;IAEAkpB,KAAK6qB,WAAWlrC,OAAO,CAAA,GAAI;AACzB,YAAMk5D,OAAOhuB,UAAUguB,SAAShuB,UAAUguB,OAAO,CAAA;AAEjD,YAAMb,UAAU,KAAKC,WAAW,IAAIwB,SAASn5C,MAAMuqB,UAAU4uB,SAASviE,IAAI;AAE1E8gE,cAAQh4C,KAAKrgB,IAAAA;AAMbilC,cAAQi0B,KAAKa,gBAAgB1B,QAAQ/3C,QAAO,CAAA;AAE5C,WAAKm4C,aAAa;QAChBF,QAAQW,KAAKX;QACb9oC,OAAOypC,KAAKzpC;QACZ+oC,YAAYU,KAAKV;MACnB;AAEA,YAAMn4C,KAAK6qB,SAAAA;AAEX,WAAK2uB,cAAc75D,KAAKg6D;IAC1B;IAOA9vD,MAAM3E,KAAKhE,QAAO;AAChB,UAAIgE,QAAQpO,QAAW;AACrB,eAAO;;AAET,aAAO+S,MAAM,MAAM3E,GAAAA;IACrB;IAEAmjB,eAAe;AACb,YAAMA,aAAY;AAClB,WAAK5Y,SAAS;QACZ3N,MAAM,CAAA;QACNwI,QAAQ,CAAA;QACR/K,KAAK,CAAA;MACP;IACF;IAEAk1B,sBAAsB;AACpB,YAAMj2B,WAAU,KAAKA;AACrB,YAAMw5D,UAAU,KAAKC;AACrB,YAAMzH,OAAOhyD,SAAQq6D,KAAKrI,QAAQ;AAElC,UAAI,EAAC34D,KAAAA,MAAKmC,KAAAA,MAAK8I,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AAK3D,eAAS+2D,aAAarhB,QAAQ;AAC5B,YAAI,CAACz1C,cAAc,CAAC2R,MAAM8jC,OAAO1gD,GAAG,GAAG;AACrCA,UAAAA,OAAMD,KAAKC,IAAIA,MAAK0gD,OAAO1gD,GAAG;;AAEhC,YAAI,CAACkL,cAAc,CAAC0R,MAAM8jC,OAAOv+C,GAAG,GAAG;AACrCA,UAAAA,OAAMpC,KAAKoC,IAAIA,MAAKu+C,OAAOv+C,GAAG;;MAElC;AAGA,UAAI,CAAC8I,cAAc,CAACC,YAAY;AAE9B62D,qBAAa,KAAKC,gBAAe,CAAA;AAIjC,YAAIr7D,SAAQ+5C,WAAW,WAAW/5C,SAAQ8R,MAAM8kB,WAAW,UAAU;AACnEwkC,uBAAa,KAAK1uD,UAAU,KAAK,CAAA;;;AAIrCrT,MAAAA,OAAM8J,eAAS9J,IAAAA,KAAQ,CAAC4c,MAAM5c,IAAOA,IAAAA,OAAM,CAACmgE,QAAQ53C,QAAQhoB,KAAKC,IAAG,GAAIm4D,IAAK;AAC7Ex2D,MAAAA,OAAM2H,eAAS3H,IAAAA,KAAQ,CAACya,MAAMza,IAAAA,IAAOA,OAAM,CAACg+D,QAAQ33C,MAAMjoB,KAAKC,IAAG,GAAIm4D,IAAAA,IAAQ;AAG9E,WAAK34D,MAAMD,KAAKC,IAAIA,MAAKmC,OAAM,CAAA;AAC/B,WAAKA,MAAMpC,KAAKoC,IAAInC,OAAM,GAAGmC,IAAAA;IAC/B;IAKA6/D,kBAAkB;AAChB,YAAMnrD,MAAM,KAAKorD,mBAAkB;AACnC,UAAIjiE,OAAMmL,OAAOE;AACjB,UAAIlJ,OAAMgJ,OAAOC;AAEjB,UAAIyL,IAAIjW,QAAQ;AACdZ,QAAAA,OAAM6W,IAAI,CAAE;AACZ1U,QAAAA,OAAM0U,IAAIA,IAAIjW,SAAS,CAAE;;AAE3B,aAAO;QAACZ,KAAAA;QAAKmC,KAAAA;MAAG;IAClB;IAKA66B,aAAa;AACX,YAAMr2B,WAAU,KAAKA;AACrB,YAAMu7D,WAAWv7D,SAAQq6D;AACzB,YAAMxqC,WAAW7vB,SAAQ8R;AACzB,YAAMwoD,aAAazqC,SAAS+G,WAAW,WAAW,KAAK0kC,mBAAkB,IAAK,KAAKE,UAAS;AAE5F,UAAIx7D,SAAQ+5C,WAAW,WAAWugB,WAAWrgE,QAAQ;AACnD,aAAKZ,MAAM,KAAKo7B,YAAY6lC,WAAW,CAAE;AACzC,aAAK9+D,MAAM,KAAKg5B,YAAY8lC,WAAWA,WAAWrgE,SAAS,CAAE;;AAG/D,YAAMZ,OAAM,KAAKA;AACjB,YAAMmC,OAAM,KAAKA;AAEjB,YAAMsW,QAAQ2pD,eAAenB,YAAYjhE,MAAKmC,IAAAA;AAK9C,WAAKq/D,QAAQU,SAASvJ,SAASniC,SAASD,WACpCiqC,0BAA0B0B,SAASzB,SAAS,KAAKzgE,KAAK,KAAKmC,KAAK,KAAKkgE,kBAAkBriE,IACvF6gE,CAAAA,IAAAA,2BAA2B,MAAMpoD,MAAM7X,QAAQshE,SAASzB,SAAS,KAAKzgE,KAAK,KAAKmC,GAAG;AACvF,WAAKs/D,aAAa,CAACjrC,SAASM,MAAMC,WAAW,KAAKyqC,UAAU,SAASviE,SACjE6hE,mBAAmB,KAAKU,KAAK;AACjC,WAAKc,YAAYrB,UAAAA;AAEjB,UAAIt6D,SAAQoB,SAAS;AACnB0Q,cAAM1Q,QAAO;;AAGf,aAAOu5D,oBAAoB,MAAM7oD,OAAO,KAAKgpD,UAAU;IACzD;IAEAjkC,gBAAgB;AAGd,UAAI,KAAK72B,QAAQ47D,qBAAqB;AACpC,aAAKD,YAAY,KAAK7pD,MAAMqL,IAAI5iB,CAAAA,SAAQ,CAACA,KAAKmG,KAAK,CAAA;;IAEvD;IAUAi7D,YAAYrB,aAAa,CAAA,GAAI;AAC3B,UAAIhhE,SAAQ;AACZ,UAAI+H,OAAM;AACV,UAAIkvB,OAAO7a;AAEX,UAAI,KAAK1V,QAAQyX,UAAU6iD,WAAWrgE,QAAQ;AAC5Cs2B,gBAAQ,KAAKsrC,mBAAmBvB,WAAW,CAAE,CAAA;AAC7C,YAAIA,WAAWrgE,WAAW,GAAG;AAC3BX,UAAAA,SAAQ,IAAIi3B;eACP;AACLj3B,UAAAA,UAAS,KAAKuiE,mBAAmBvB,WAAW,CAAA,CAAE,IAAI/pC,SAAS;;AAE7D7a,eAAO,KAAKmmD,mBAAmBvB,WAAWA,WAAWrgE,SAAS,CAAE,CAAA;AAChE,YAAIqgE,WAAWrgE,WAAW,GAAG;AAC3BoH,UAAAA,OAAMqU;eACD;AACLrU,UAAAA,QAAOqU,OAAO,KAAKmmD,mBAAmBvB,WAAWA,WAAWrgE,SAAS,CAAA,CAAE,KAAK;;;AAGhF,YAAMgiC,QAAQq+B,WAAWrgE,SAAS,IAAI,MAAM;AAC5CX,MAAAA,SAAQi/B,YAAYj/B,QAAO,GAAG2iC,KAAAA;AAC9B56B,MAAAA,OAAMk3B,YAAYl3B,MAAK,GAAG46B,KAAAA;AAE1B,WAAK8+B,WAAW;QAACzhE,OAAAA;QAAO+H,KAAAA;QAAKlF,QAAQ,KAAK7C,SAAQ,IAAI+H;MAAI;IAC5D;IASAm6D,YAAY;AACV,YAAMhC,UAAU,KAAKC;AACrB,YAAMpgE,OAAM,KAAKA;AACjB,YAAMmC,OAAM,KAAKA;AACjB,YAAMwE,WAAU,KAAKA;AACrB,YAAMu7D,WAAWv7D,SAAQq6D;AAEzB,YAAMyB,QAAQP,SAASvJ,QAAQ6H,0BAA0B0B,SAASzB,SAASzgE,MAAKmC,MAAK,KAAKkgE,kBAAkBriE,IAAAA,CAAAA;AAC5G,YAAMo6D,WAAWtqD,eAAenJ,SAAQ8R,MAAM2hD,UAAU,CAAA;AACxD,YAAMsI,UAAUD,UAAU,SAASP,SAAS5B,aAAa;AACzD,YAAMqC,aAAan9C,SAASk9C,OAAYA,KAAAA,YAAY;AACpD,YAAMjqD,QAAQ,CAAA;AACd,UAAIye,QAAQl3B;AACZ,UAAIghE,MAAM/uD;AAGV,UAAI0wD,YAAY;AACdzrC,gBAAQ,CAACipC,QAAQ53C,QAAQ2O,OAAO,WAAWwrC,OAAAA;;AAI7CxrC,cAAQ,CAACipC,QAAQ53C,QAAQ2O,OAAOyrC,aAAa,QAAQF,KAAK;AAG1D,UAAItC,QAAQ73C,KAAKnmB,MAAKnC,MAAKyiE,KAAAA,IAAS,MAASrI,UAAU;AACrD,cAAM,IAAItyC,MAAM9nB,OAAM,UAAUmC,OAAM,yCAAyCi4D,WAAW,MAAMqI,KAAO;;AAGzG,YAAMxB,aAAat6D,SAAQ8R,MAAM8kB,WAAW,UAAU,KAAKqlC,kBAAiB;AAC5E,WAAK5B,OAAO9pC,OAAOjlB,QAAQ,GAAG+uD,OAAO7+D,MAAK6+D,OAAO,CAACb,QAAQr+D,IAAIk/D,MAAM5G,UAAUqI,KAAAA,GAAQxwD,SAAS;AAC7F8uD,gBAAQtoD,OAAOuoD,MAAMC,UAAAA;MACvB;AAEA,UAAID,SAAS7+D,QAAOwE,SAAQ+5C,WAAW,WAAWzuC,UAAU,GAAG;AAC7D8uD,gBAAQtoD,OAAOuoD,MAAMC,UAAAA;;AAIvB,aAAOn7D,OAAOC,KAAK0S,KAAOR,EAAAA,KAAKgoD,MAAAA,EAAQn8C,IAAI1b,CAAAA,OAAK,CAACA,EAAAA;IACnD;IAMA0L,iBAAiBzM,OAAO;AACtB,YAAM84D,UAAU,KAAKC;AACrB,YAAM8B,WAAW,KAAKv7D,QAAQq6D;AAE9B,UAAIkB,SAASW,eAAe;AAC1B,eAAO1C,QAAQ93C,OAAOhhB,OAAO66D,SAASW,aAAa;;AAErD,aAAO1C,QAAQ93C,OAAOhhB,OAAO66D,SAASL,eAAeiB,QAAQ;IAC/D;IAOAz6C,OAAOhhB,OAAOghB,SAAQ;AACpB,YAAM1hB,WAAU,KAAKA;AACrB,YAAMyhB,WAAUzhB,SAAQq6D,KAAKa;AAC7B,YAAMlJ,OAAO,KAAK6I;AAClB,YAAMuB,MAAM16C,WAAUD,SAAQuwC,IAAK;AACnC,aAAO,KAAKyH,SAAS/3C,OAAOhhB,OAAO07D,GAAAA;IACrC;IAWAC,oBAAoBhC,MAAM33D,QAAOoP,OAAO4P,SAAQ;AAC9C,YAAM1hB,WAAU,KAAKA;AACrB,YAAMs8D,YAAYt8D,SAAQ8R,MAAM2lB;AAEhC,UAAI6kC,WAAW;AACb,eAAO7iE,SAAK6iE,WAAW;UAACjC;UAAM33D;UAAOoP;QAAM,GAAE,IAAI;;AAGnD,YAAM2P,WAAUzhB,SAAQq6D,KAAKa;AAC7B,YAAMlJ,OAAO,KAAK6I;AAClB,YAAMH,YAAY,KAAKI;AACvB,YAAMyB,cAAcvK,QAAQvwC,SAAQuwC,IAAK;AACzC,YAAMwK,cAAc9B,aAAaj5C,SAAQi5C,SAAU;AACnD,YAAMngE,OAAOuX,MAAMpP,MAAM;AACzB,YAAMytB,QAAQuqC,aAAa8B,eAAejiE,QAAQA,KAAK41B;AAEvD,aAAO,KAAKspC,SAAS/3C,OAAO24C,MAAM34C,YAAWyO,QAAQqsC,cAAcD,YAAU;IAC/E;IAKA/kC,mBAAmB1lB,OAAO;AACxB,UAAI5X,IAAGuI,MAAMlI;AAEb,WAAKL,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CK,eAAOuX,MAAM5X,EAAE;AACfK,aAAK2S,QAAQ,KAAKmvD,oBAAoB9hE,KAAKmG,OAAOxG,IAAG4X,KAAAA;MACvD;IACF;IAMA+pD,mBAAmBn7D,OAAO;AACxB,aAAOA,UAAU,OAAO+L,OAAO/L,QAAQ,KAAKrH,QAAQ,KAAKmC,MAAM,KAAKnC;IACtE;IAMAwY,iBAAiBnR,OAAO;AACtB,YAAM+7D,UAAU,KAAK1B;AACrB,YAAMx1C,MAAM,KAAKs2C,mBAAmBn7D,KAAAA;AACpC,aAAO,KAAKmW,oBAAoB4lD,QAAQnjE,QAAQisB,OAAOk3C,QAAQtgE,MAAM;IACvE;IAMA4a,iBAAiByjB,OAAO;AACtB,YAAMiiC,UAAU,KAAK1B;AACrB,YAAMx1C,MAAM,KAAKqV,mBAAmBJ,KAAAA,IAASiiC,QAAQtgE,SAASsgE,QAAQp7D;AACtE,aAAO,KAAKhI,MAAMksB,OAAO,KAAK/pB,MAAM,KAAKnC;IAC3C;IAOAqjE,cAAcxvD,OAAO;AACnB,YAAMyvD,YAAY,KAAK38D,QAAQ8R;AAC/B,YAAM8qD,iBAAiB,KAAKr1D,IAAI08C,YAAY/2C,KAAAA,EAAOsI;AACnD,YAAM8D,QAAQc,UAAU,KAAKzG,aAAY,IAAKgpD,UAAU9kC,cAAc8kC,UAAU/kC,WAAW;AAC3F,YAAMilC,cAAczjE,KAAK4f,IAAIM,KAAAA;AAC7B,YAAMwjD,cAAc1jE,KAAK8f,IAAII,KAAAA;AAC7B,YAAMyjD,eAAe,KAAK5iC,wBAAwB,CAAA,EAAGx5B;AAErD,aAAO;QACLonB,GAAI60C,iBAAiBC,cAAgBE,eAAeD;QACpD70C,GAAI20C,iBAAiBE,cAAgBC,eAAeF;MACtD;IACF;IAOAnB,kBAAkBsB,aAAa;AAC7B,YAAMzB,WAAW,KAAKv7D,QAAQq6D;AAC9B,YAAMa,iBAAiBK,SAASL;AAGhC,YAAMx5C,UAASw5C,eAAeK,SAASvJ,IAAI,KAAKkJ,eAAevC;AAC/D,YAAMsE,eAAe,KAAKZ,oBAAoBW,aAAa,GAAGrC,oBAAoB,MAAM;QAACqC;SAAc,KAAKlC,UAAU,GAAGp5C,OAAAA;AACzH,YAAM/gB,QAAO,KAAK+7D,cAAcO,YAAAA;AAGhC,YAAMlD,WAAW3gE,KAAKoE,MAAM,KAAKmW,aAAY,IAAK,KAAK6B,QAAQ7U,MAAKonB,IAAI,KAAKxS,SAAS5U,MAAKsnB,CAAC,IAAI;AAChG,aAAO8xC,WAAW,IAAIA,WAAW;IACnC;IAKAkC,oBAAoB;AAClB,UAAI3B,aAAa,KAAKrpD,OAAO3N,QAAQ,CAAA;AACrC,UAAIpJ,IAAGuI;AAEP,UAAI63D,WAAWrgE,QAAQ;AACrB,eAAOqgE;;AAGT,YAAMnlC,QAAQ,KAAKjwB,wBAAuB;AAE1C,UAAI,KAAK81D,eAAe7lC,MAAMl7B,QAAQ;AACpC,eAAQ,KAAKgX,OAAO3N,OAAO6xB,MAAM,CAAA,EAAG/vB,WAAW2H,mBAAmB,IAAI;;AAGxE,WAAK7S,KAAI,GAAGuI,OAAO0yB,MAAMl7B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CogE,qBAAaA,WAAWlpD,OAAO+jB,MAAMj7B,EAAE,EAACkL,WAAW2H,mBAAmB,IAAI,CAAA;MAC5E;AAEA,aAAQ,KAAKkE,OAAO3N,OAAO,KAAK45D,UAAU5C,UAAAA;IAC5C;IAKAgB,qBAAqB;AACnB,YAAMhB,aAAa,KAAKrpD,OAAOnF,UAAU,CAAA;AACzC,UAAI5R,IAAGuI;AAEP,UAAI63D,WAAWrgE,QAAQ;AACrB,eAAOqgE;;AAGT,YAAMxuD,SAAS,KAAKC,UAAS;AAC7B,WAAK7R,KAAI,GAAGuI,OAAOqJ,OAAO7R,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/CogE,mBAAWp/D,KAAKmQ,MAAM,MAAMS,OAAO5R,EAAE,CAAA,CAAA;MACvC;AAEA,aAAQ,KAAK+W,OAAOnF,SAAS,KAAKkvD,cAAcV,aAAa,KAAK4C,UAAU5C,UAAW;IACzF;IAMA4C,UAAUp9D,QAAQ;AAEhB,aAAOuR,aAAavR,OAAOwR,KAAKgoD,MAAAA,CAAAA;IAClC;EACF;AA1dE,gBAFmBsB,WAEZx2D,MAAK;AAKZ,gBAPmBw2D,WAOZv7D,YAAW;IAQhB06C,QAAQ;IAERkhB,UAAU,CAAA;IACVZ,MAAM;MACJX,QAAQ;MACR1H,MAAM;MACNphC,OAAO;MACP+oC,YAAY;MACZG,SAAS;MACToB,gBAAgB,CAAA;IAClB;IACAppD,OAAO;MASL8kB,QAAQ;MAERa,UAAU;MAEVtH,OAAO;QACLC,SAAS;MACX;IACF;;ACrOJ,WAAS8nB,aAAYilB,OAAOnnD,KAAK5U,SAAS;AACxC,QAAIqhB,KAAK;AACT,QAAIG,KAAKu6C,MAAMljE,SAAS;AACxB,QAAImjE,YAAYC,YAAYC,YAAYC;AACxC,QAAIn8D,SAAS;AACX,UAAI4U,OAAOmnD,MAAM16C,EAAAA,EAAI8C,OAAOvP,OAAOmnD,MAAMv6C,EAAG,EAAC2C,KAAK;AAC/C,SAAA,EAAC9C,IAAIG,GAAAA,IAAMP,aAAa86C,OAAO,OAAOnnD,GAAG;;AAE3C,OAAA,EAACuP,KAAK63C,YAAY/C,MAAMiD,WAAU,IAAIH,MAAM16C,EAAAA;AAC5C,OAAA,EAAC8C,KAAK83C,YAAYhD,MAAMkD,WAAU,IAAIJ,MAAMv6C,EAAAA;WACxC;AACL,UAAI5M,OAAOmnD,MAAM16C,EAAAA,EAAI43C,QAAQrkD,OAAOmnD,MAAMv6C,EAAG,EAACy3C,MAAM;AACjD,SAAA,EAAC53C,IAAIG,GAAAA,IAAMP,aAAa86C,OAAO,QAAQnnD,GAAG;;AAE5C,OAAA,EAACqkD,MAAM+C,YAAY73C,KAAK+3C,WAAU,IAAIH,MAAM16C,EAAAA;AAC5C,OAAA,EAAC43C,MAAMgD,YAAY93C,KAAKg4C,WAAU,IAAIJ,MAAMv6C,EAAAA;;AAG/C,UAAM46C,OAAOH,aAAaD;AAC1B,WAAOI,OAAOF,cAAcC,aAAaD,eAAetnD,MAAMonD,cAAcI,OAAOF;EACrF;AAEA,MAAMG,kBAAN,cAA8B7C,UAAAA;IAY5B5iE,YAAYwI,OAAO;AACjB,YAAMA,KAAAA;AAGN,WAAKk9D,SAAS,CAAA;AAEd,WAAKC,UAAUrlE;AAEf,WAAKslE,cAActlE;IACrB;IAKAqjE,cAAc;AACZ,YAAMrB,aAAa,KAAKuD,uBAAsB;AAC9C,YAAMV,QAAQ,KAAKO,SAAS,KAAKI,iBAAiBxD,UAAAA;AAClD,WAAKqD,UAAUzlB,aAAYilB,OAAO,KAAK9jE,GAAG;AAC1C,WAAKukE,cAAc1lB,aAAYilB,OAAO,KAAK3hE,GAAG,IAAI,KAAKmiE;AACvD,YAAMhC,YAAYrB,UAAAA;IACpB;IAaAwD,iBAAiBxD,YAAY;AAC3B,YAAM,EAACjhE,KAAAA,MAAKmC,KAAAA,KAAG,IAAI;AACnB,YAAMxB,QAAQ,CAAA;AACd,YAAMmjE,QAAQ,CAAA;AACd,UAAIjjE,IAAGuI,MAAMgJ,OAAMiG,MAAMkB;AAEzB,WAAK1Y,KAAI,GAAGuI,OAAO63D,WAAWrgE,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACnDwX,eAAO4oD,WAAWpgE,EAAE;AACpB,YAAIwX,QAAQrY,QAAOqY,QAAQlW,MAAK;AAC9BxB,gBAAMkB,KAAKwW,IAAAA;;MAEf;AAEA,UAAI1X,MAAMC,SAAS,GAAG;AAEpB,eAAO;UACL;YAACogE,MAAMhhE;YAAKksB,KAAK;UAAC;UAClB;YAAC80C,MAAM7+D;YAAK+pB,KAAK;UAAC;QACnB;;AAGH,WAAKrrB,KAAI,GAAGuI,OAAOzI,MAAMC,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C0Y,QAAAA,QAAO5Y,MAAME,KAAI,CAAE;AACnBuR,QAAAA,QAAOzR,MAAME,KAAI,CAAE;AACnBwX,eAAO1X,MAAME,EAAE;AAGf,YAAId,KAAKw3B,OAAOhe,QAAOnH,SAAQ,CAAA,MAAOiG,MAAM;AAC1CyrD,gBAAMjiE,KAAK;YAACm/D,MAAM3oD;YAAM6T,KAAKrrB,MAAKuI,OAAO;UAAE,CAAA;;MAE/C;AACA,aAAO06D;IACT;IAQA3B,YAAY;AACV,YAAMniE,OAAM,KAAKA;AACjB,YAAMmC,OAAM,KAAKA;AACjB,UAAI8+D,aAAa,MAAM2B,kBAAiB;AACxC,UAAI,CAAC3B,WAAWn0C,SAAS9sB,IAAAA,KAAQ,CAACihE,WAAWrgE,QAAQ;AACnDqgE,mBAAWjqD,OAAO,GAAG,GAAGhX,IAAAA;;AAE1B,UAAI,CAACihE,WAAWn0C,SAAS3qB,IAAAA,KAAQ8+D,WAAWrgE,WAAW,GAAG;AACxDqgE,mBAAWp/D,KAAKM,IAAAA;;AAElB,aAAO8+D,WAAWhpD,KAAK,CAACC,IAAGrP,OAAMqP,KAAIrP,EAAAA;IACvC;IAOA27D,yBAAyB;AACvB,UAAIvD,aAAa,KAAKrpD,OAAOlQ,OAAO,CAAA;AAEpC,UAAIu5D,WAAWrgE,QAAQ;AACrB,eAAOqgE;;AAGT,YAAMh3D,QAAO,KAAK24D,kBAAiB;AACnC,YAAM/uD,QAAQ,KAAKouD,mBAAkB;AACrC,UAAIh4D,MAAKrJ,UAAUiT,MAAMjT,QAAQ;AAG/BqgE,qBAAa,KAAK4C,UAAU55D,MAAK8N,OAAOlE,KAAAA,CAAAA;aACnC;AACLotD,qBAAah3D,MAAKrJ,SAASqJ,QAAO4J;;AAEpCotD,mBAAa,KAAKrpD,OAAOlQ,MAAMu5D;AAE/B,aAAOA;IACT;IAMAuB,mBAAmBn7D,OAAO;AACxB,cAAQw3C,aAAY,KAAKwlB,QAAQh9D,KAAS,IAAA,KAAKi9D,WAAW,KAAKC;IACjE;IAMA7mD,iBAAiByjB,OAAO;AACtB,YAAMiiC,UAAU,KAAK1B;AACrB,YAAMtgC,UAAU,KAAKG,mBAAmBJ,KAAAA,IAASiiC,QAAQtgE,SAASsgE,QAAQp7D;AAC1E,aAAO62C,aAAY,KAAKwlB,QAAQjjC,UAAU,KAAKmjC,cAAc,KAAKD,SAAS,IAAI;IACjF;EACF;AA3IE,gBAFIF,iBAEGr5D,MAAK;AAKZ,gBAPIq5D,iBAOGp+D,YAAWu7D,UAAUv7D;;;;;;;;;;MCrBjB0+D,gBAAgB;IAC3Bl8B;IACAv0B;IACAyP;IACA/W;;;;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;AAAY,aAAO,KAAK,KAAK;AAEjD,QAAI,QAAQ,OAAO,SAAS,YAAY,uBAAuB;AAC7D,aAAO,KAAK,mBAAmB,EAAE,KAAK;AAExC,QAAI,gBAAgB;AAAM,aAAO,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,QAAQg4D,UAAS;AAC7C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,QAAI,MAAM,MAAM;AAAG,aAAO,cAAcA,UAAS,MAAM,MAAM,GAAG;AAGhE,QAAI,CAAC;AAAQ,aAAO;AAEpB,UAAM,QAAQ,MAAM,QAAQ,IAAI,MAAM;AACtC,WAAO;AAAA,EACT;;;ACLO,WAAS,UAAU,MAAM,QAAQC,UAAS;AAC/C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,QAAI,MAAM,MAAM;AAAG,aAAO,cAAcA,UAAS,MAAM,MAAM,GAAG;AAChE,QAAI,CAAC,QAAQ;AAEX,aAAO;AAAA,IACT;AACA,UAAM,aAAa,MAAM,QAAQ;AAUjC,UAAM,oBAAoB,cAAcA,UAAS,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,QAAQC,UAAS;AACrD,WAAO,cAAcA,UAAS,MAAM,MAAM,CAAC,OAAO,IAAI,IAAI,MAAM;AAAA,EAClE;;;ACFO,WAAS,SAAS,MAAM,QAAQC,UAAS;AAC9C,WAAO,gBAAgB,MAAM,SAAS,oBAAoBA,QAAO;AAAA,EACnE;;;AC/BA,MAAIC,kBAAiB,CAAC;AAEf,WAAS,oBAAoB;AAClC,WAAOA;AAAA,EACT;;;AC8BO,WAAS,YAAY,MAAMC,UAAS;AACzC,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,eACJD,UAAS,gBACTA,UAAS,QAAQ,SAAS,gBAC1BC,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,UAAM,QAAQ,OAAO,MAAMD,UAAS,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,MAAME,UAAS;AAC5C,WAAO,YAAY,MAAM,EAAE,GAAGA,UAAS,cAAc,EAAE,CAAC;AAAA,EAC1D;;;ACJO,WAAS,eAAe,MAAMC,UAAS;AAC5C,UAAM,QAAQ,OAAO,MAAMA,UAAS,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,MAAMC,UAAS;AACxC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;;;ACQO,WAAS,yBAAyB,WAAW,aAAaC,UAAS;AACxE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjCA,UAAS;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,MAAMC,UAAS;AAChD,UAAM,OAAO,eAAe,MAAMA,QAAO;AACzC,UAAM,kBAAkB,cAAcA,UAAS,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,QAAQC,UAAS;AAChD,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,QAAQ,MAAM,QAAQ,IAAI,SAAS,oBAAoB;AAC7D,WAAO;AAAA,EACT;;;ACLO,WAAS,YAAY,MAAM,QAAQC,UAAS;AACjD,WAAO,UAAU,MAAM,SAAS,GAAGA,QAAO;AAAA,EAC5C;;;ACFO,WAAS,WAAW,MAAM,QAAQC,UAAS;AAChD,WAAO,gBAAgB,MAAM,SAAS,KAAMA,QAAO;AAAA,EACrD;;;ACFO,WAAS,SAAS,MAAM,QAAQC,UAAS;AAC9C,WAAO,QAAQ,MAAM,SAAS,GAAGA,QAAO;AAAA,EAC1C;;;ACFO,WAAS,SAAS,MAAM,QAAQC,UAAS;AAC9C,WAAO,UAAU,MAAM,SAAS,IAAIA,QAAO;AAAA,EAC7C;;;ACIO,WAAS,WAAW,UAAU,WAAW;AAC9C,UAAM,OAAO,CAAC,OAAO,QAAQ,IAAI,CAAC,OAAO,SAAS;AAElD,QAAI,OAAO;AAAG,aAAO;AAAA,aACZ,OAAO;AAAG,aAAO;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,aAAaC,UAAS;AAC1E,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjCA,UAAS;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,aAAaC,UAAS;AACzE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjCA,UAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AACA,WAAO,WAAW,YAAY,IAAI,aAAa,YAAY;AAAA,EAC7D;;;ACyBO,WAAS,iBAAiB,WAAW,aAAaC,UAAS;AAChE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjCA,UAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAEA,UAAMC,QAAO,gBAAgB,YAAY,YAAY;AACrD,UAAMC,cAAa,KAAK;AAAA,MACtB,yBAAyB,YAAY,YAAY;AAAA,IACnD;AAEA,eAAW,QAAQ,WAAW,QAAQ,IAAID,QAAOC,WAAU;AAI3D,UAAM,mBAAmB;AAAA,MACvB,gBAAgB,YAAY,YAAY,MAAM,CAACD;AAAA,IACjD;AAEA,UAAM,SAASA,SAAQC,cAAa;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;AAAG,aAAO;AACrB,QAAI,OAAO;AAAG,aAAO;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,aAAaC,UAAS;AACjE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjCA,UAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AACA,UAAM,QAAQ,CAAC,aAAa,CAAC,gBAAgB;AAC7C,WAAO,kBAAkBA,UAAS,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,WAAWC,UAAS;AAChE,UAAM,OACJ,yBAAyB,UAAU,SAAS,IAAI;AAClD,WAAO,kBAAkBA,UAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACdO,WAAS,SAAS,MAAMC,UAAS;AACtC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,SAAS,IAAI,IAAI,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;;;ACJO,WAAS,WAAW,MAAMC,UAAS;AACxC,UAAM,QAAQ,OAAO,MAAMA,UAAS,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,MAAMC,UAAS;AAC9C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,WAAO,CAAC,SAAS,OAAOA,QAAO,MAAM,CAAC,WAAW,OAAOA,QAAO;AAAA,EACjE;;;ACAO,WAAS,mBAAmB,WAAW,aAAaC,UAAS;AAClE,UAAM,CAAC,YAAY,kBAAkB,YAAY,IAAI;AAAA,MACnDA,UAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAMC,QAAO,WAAW,kBAAkB,YAAY;AACtD,UAAMC,cAAa,KAAK;AAAA,MACtB,2BAA2B,kBAAkB,YAAY;AAAA,IAC3D;AAEA,QAAIA,cAAa;AAAG,aAAO;AAE3B,QAAI,iBAAiB,SAAS,MAAM,KAAK,iBAAiB,QAAQ,IAAI;AACpE,uBAAiB,QAAQ,EAAE;AAE7B,qBAAiB,SAAS,iBAAiB,SAAS,IAAID,QAAOC,WAAU;AAEzE,QAAI,qBAAqB,WAAW,kBAAkB,YAAY,MAAM,CAACD;AAEzE,QACE,iBAAiB,UAAU,KAC3BC,gBAAe,KACf,WAAW,YAAY,YAAY,MAAM,GACzC;AACA,2BAAqB;AAAA,IACvB;AAEA,UAAM,SAASD,SAAQC,cAAa,CAAC;AACrC,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B;;;AC/BO,WAAS,qBAAqB,WAAW,aAAaC,UAAS;AACpE,UAAM,OAAO,mBAAmB,WAAW,aAAaA,QAAO,IAAI;AACnE,WAAO,kBAAkBA,UAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACCO,WAAS,oBAAoB,WAAW,aAAaC,UAAS;AACnE,UAAM,OAAO,yBAAyB,WAAW,WAAW,IAAI;AAChE,WAAO,kBAAkBA,UAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACcO,WAAS,kBAAkB,WAAW,aAAaC,UAAS;AACjE,UAAM,OAAO,iBAAiB,WAAW,aAAaA,QAAO,IAAI;AACjE,WAAO,kBAAkBA,UAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACvBO,WAAS,kBAAkB,WAAW,aAAaC,UAAS;AACjE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjCA,UAAS;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,MAAMC,UAAS;AAC5C,UAAM,QAAQ,OAAO,MAAMA,UAAS,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,MAAMC,UAAS;AAC1C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,QAAQ,CAAC;AACf,UAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;;;ACNO,WAAS,UAAU,MAAMC,UAAS;AACvC,UAAM,QAAQ,OAAO,MAAMA,UAAS,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,MAAMC,UAAS;AACzC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,YAAY,MAAM,YAAY,GAAG,GAAG,CAAC;AAC3C,UAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;;;ACLO,WAAS,UAAU,MAAMC,UAAS;AACvC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,WAAW,IAAI,IAAI,GAAG;AAC5B,WAAO;AAAA,EACT;;;ACEO,WAAS,UAAU,MAAMC,UAAS;AACvC,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,eACJD,UAAS,gBACTA,UAAS,QAAQ,SAAS,gBAC1BC,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,UAAM,QAAQ,OAAO,MAAMD,UAAS,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,MAAME,UAAS;AACzC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,WAAW,IAAI,GAAG;AACxB,WAAO;AAAA,EACT;;;ACJO,WAAS,aAAa,MAAMC,UAAS;AAC1C,UAAM,QAAQ,OAAO,MAAMA,UAAS,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,MAAMC,UAAS;AACzC,UAAM,QAAQ,OAAO,MAAMA,UAAS,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,OAAOC,aAAY;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,QAAIA,UAAS,WAAW;AACtB,UAAIA,SAAQ,cAAcA,SAAQ,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,CAACC,WAAU,CAAC,MAAM;AAEvB,YAAMC,SAAQD,SAAQ,QAAQ,OAAOA,SAAQ,KAAK,IAAI,KAAK;AAC3D,YAAME,UAAS,KAAK,QAAQD,MAAK,KAAK,KAAK,QAAQ,KAAK,YAAY;AACpE,aAAOC;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,OAAOC,aAAY;AACzB,YAAM,UAAUA,UAAS,UAAU,OAAOA,SAAQ,OAAO,IAAI;AAE7D,UAAI;AACJ,UAAI,YAAY,gBAAgB,KAAK,kBAAkB;AACrD,cAAM,eAAe,KAAK,0BAA0B,KAAK;AACzD,cAAMC,SAAQD,UAAS,QAAQ,OAAOA,SAAQ,KAAK,IAAI;AAEvD,sBACE,KAAK,iBAAiBC,MAAK,KAAK,KAAK,iBAAiB,YAAY;AAAA,MACtE,OAAO;AACL,cAAM,eAAe,KAAK;AAC1B,cAAMA,SAAQD,UAAS,QAAQ,OAAOA,SAAQ,KAAK,IAAI,KAAK;AAE5D,sBAAc,KAAK,OAAOC,MAAK,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,QAAQC,WAAU,CAAC,MAAM;AAC/B,YAAMC,SAAQD,SAAQ;AAEtB,YAAM,eACHC,UAAS,KAAK,cAAcA,MAAK,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,gBACHA,UAAS,KAAK,cAAcA,MAAK,KAClC,KAAK,cAAc,KAAK,iBAAiB;AAE3C,YAAMC,OAAM,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,cAAcA,IAAG,IAAIA;AACvD,cAAQF,SAAQ;AAAA;AAAA,QAEZA,SAAQ,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,eAAWE,QAAO,QAAQ;AACxB,UACE,OAAO,UAAU,eAAe,KAAK,QAAQA,IAAG,KAChD,UAAU,OAAOA,IAAG,CAAC,GACrB;AACA,eAAOA;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,UAAUC,QAAO,WAAW;AACnC,aAASD,OAAM,GAAGA,OAAMC,OAAM,QAAQD,QAAO;AAC3C,UAAI,UAAUC,OAAMD,IAAG,CAAC,GAAG;AACzB,eAAOA;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;;;ACxDO,WAAS,oBAAoB,MAAM;AACxC,WAAO,CAAC,QAAQE,WAAU,CAAC,MAAM;AAC/B,YAAM,cAAc,OAAO,MAAM,KAAK,YAAY;AAClD,UAAI,CAAC;AAAa,eAAO;AACzB,YAAM,gBAAgB,YAAY,CAAC;AAEnC,YAAM,cAAc,OAAO,MAAM,KAAK,YAAY;AAClD,UAAI,CAAC;AAAa,eAAO;AACzB,UAAI,QAAQ,KAAK,gBACb,KAAK,cAAc,YAAY,CAAC,CAAC,IACjC,YAAY,CAAC;AAGjB,cAAQA,SAAQ,gBAAgBA,SAAQ,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,MAAMC,UAAS;AAC1C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,OAAO,yBAAyB,OAAO,YAAY,KAAK,CAAC;AAC/D,UAAM,YAAY,OAAO;AACzB,WAAO;AAAA,EACT;;;ACFO,WAAS,WAAW,MAAMC,UAAS;AACxC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,mBAAmB,KAAK;AAK/D,WAAO,KAAK,MAAM,OAAO,kBAAkB,IAAI;AAAA,EACjD;;;ACMO,WAAS,YAAY,MAAMC,UAAS;AACzC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,OAAO,MAAM,YAAY;AAE/B,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,wBACJD,UAAS,yBACTA,UAAS,QAAQ,SAAS,yBAC1BC,gBAAe,yBACfA,gBAAe,QAAQ,SAAS,yBAChC;AAEF,UAAM,sBAAsB,cAAcD,UAAS,MAAM,MAAM,CAAC;AAChE,wBAAoB,YAAY,OAAO,GAAG,GAAG,qBAAqB;AAClE,wBAAoB,SAAS,GAAG,GAAG,GAAG,CAAC;AACvC,UAAM,kBAAkB,YAAY,qBAAqBA,QAAO;AAEhE,UAAM,sBAAsB,cAAcA,UAAS,MAAM,MAAM,CAAC;AAChE,wBAAoB,YAAY,MAAM,GAAG,qBAAqB;AAC9D,wBAAoB,SAAS,GAAG,GAAG,GAAG,CAAC;AACvC,UAAM,kBAAkB,YAAY,qBAAqBA,QAAO;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,MAAME,UAAS;AAC7C,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,wBACJD,UAAS,yBACTA,UAAS,QAAQ,SAAS,yBAC1BC,gBAAe,yBACfA,gBAAe,QAAQ,SAAS,yBAChC;AAEF,UAAM,OAAO,YAAY,MAAMD,QAAO;AACtC,UAAM,YAAY,cAAcA,UAAS,MAAM,MAAM,CAAC;AACtD,cAAU,YAAY,MAAM,GAAG,qBAAqB;AACpD,cAAU,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7B,UAAM,QAAQ,YAAY,WAAWA,QAAO;AAC5C,WAAO;AAAA,EACT;;;AClBO,WAAS,QAAQ,MAAME,UAAS;AACrC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,OAAO,CAAC,YAAY,OAAOA,QAAO,IAAI,CAAC,gBAAgB,OAAOA,QAAO;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,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,IAAI,KAAK,EAAE,OAAO,cAAc,CAAC;AAAA,QAEnD,KAAK;AACH,iBAAOA,UAAS,IAAI,KAAK,EAAE,OAAO,SAAS,CAAC;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,WAAUC,UAAS;AAC3C,YAAM,iBAAiB,YAAY,MAAMA,QAAO;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,eAAOD,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,QAEb,KAAK;AACH,iBAAO,OAAO,OAAO;AAAA,QAEvB,KAAK;AACH,iBAAO,gBAAgB,SAAS,CAAC;AAAA,QAEnC,KAAK;AACH,iBAAOA,UAAS,cAAc,SAAS,EAAE,MAAM,UAAU,CAAC;AAAA,QAE5D,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,QAEb,KAAK;AACH,iBAAO,OAAO,OAAO;AAAA,QAEvB,KAAK;AACH,iBAAO,gBAAgB,SAAS,CAAC;AAAA,QAEnC,KAAK;AACH,iBAAOA,UAAS,cAAc,SAAS,EAAE,MAAM,UAAU,CAAC;AAAA,QAE5D,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,QAEtC,KAAK;AACH,iBAAOA,UAAS,cAAc,QAAQ,GAAG,EAAE,MAAM,QAAQ,CAAC;AAAA,QAE5D,KAAK;AACH,iBAAOA,UAAS,MAAM,OAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,MAAM,OAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,QAEb,KAAK;AACH,iBAAO,OAAO,QAAQ,CAAC;AAAA,QAEzB,KAAK;AACH,iBAAO,gBAAgB,QAAQ,GAAG,CAAC;AAAA,QAErC,KAAK;AACH,iBAAOA,UAAS,cAAc,QAAQ,GAAG,EAAE,MAAM,QAAQ,CAAC;AAAA,QAE5D,KAAK;AACH,iBAAOA,UAAS,MAAM,OAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,MAAM,OAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,WAAUC,UAAS;AAC3C,YAAM,OAAO,QAAQ,MAAMA,QAAO;AAElC,UAAI,UAAU,MAAM;AAClB,eAAOD,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,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,WAAUC,UAAS;AAC3C,YAAM,YAAY,KAAK,OAAO;AAC9B,YAAM,kBAAkB,YAAYA,SAAQ,eAAe,KAAK,KAAK;AACrE,cAAQ,OAAO;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,cAAc;AAAA,QAE9B,KAAK;AACH,iBAAO,gBAAgB,gBAAgB,CAAC;AAAA,QAE1C,KAAK;AACH,iBAAOD,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,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,WAAUC,UAAS;AAC3C,YAAM,YAAY,KAAK,OAAO;AAC9B,YAAM,kBAAkB,YAAYA,SAAQ,eAAe,KAAK,KAAK;AACrE,cAAQ,OAAO;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,cAAc;AAAA,QAE9B,KAAK;AACH,iBAAO,gBAAgB,gBAAgB,MAAM,MAAM;AAAA,QAErD,KAAK;AACH,iBAAOD,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,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,QAEb,KAAK;AACH,iBAAO,OAAO,YAAY;AAAA,QAE5B,KAAK;AACH,iBAAO,gBAAgB,cAAc,MAAM,MAAM;AAAA,QAEnD,KAAK;AACH,iBAAOA,UAAS,cAAc,cAAc,EAAE,MAAM,MAAM,CAAC;AAAA,QAE7D,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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;AAAG,kBAAQ;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;AAAG,gBAAQ;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,QAEb,KAAK;AACH,iBAAO,kCAAkC,cAAc;AAAA,QAKzD,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,eAAe,cAAc;AAAA,QAKtC,KAAK;AAAA,QACL,KAAK;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,QAEb,KAAK;AACH,iBAAO,kCAAkC,cAAc;AAAA,QAKzD,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,eAAe,cAAc;AAAA,QAKtC,KAAK;AAAA,QACL,KAAK;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,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,QAAQ,oBAAoB,gBAAgB,GAAG;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,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,QAAQ,oBAAoB,gBAAgB,GAAG;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,oBAAoBE,SAAQC,aAAY,IAAI;AACnD,UAAMC,QAAOF,UAAS,IAAI,MAAM;AAChC,UAAM,YAAY,KAAK,IAAIA,OAAM;AACjC,UAAM,QAAQ,KAAK,MAAM,YAAY,EAAE;AACvC,UAAM,UAAU,YAAY;AAC5B,QAAI,YAAY,GAAG;AACjB,aAAOE,QAAO,OAAO,KAAK;AAAA,IAC5B;AACA,WAAOA,QAAO,OAAO,KAAK,IAAID,aAAY,gBAAgB,SAAS,CAAC;AAAA,EACtE;AAEA,WAAS,kCAAkCD,SAAQC,YAAW;AAC5D,QAAID,UAAS,OAAO,GAAG;AACrB,YAAME,QAAOF,UAAS,IAAI,MAAM;AAChC,aAAOE,QAAO,gBAAgB,KAAK,IAAIF,OAAM,IAAI,IAAI,CAAC;AAAA,IACxD;AACA,WAAO,eAAeA,SAAQC,UAAS;AAAA,EACzC;AAEA,WAAS,eAAeD,SAAQC,aAAY,IAAI;AAC9C,UAAMC,QAAOF,UAAS,IAAI,MAAM;AAChC,UAAM,YAAY,KAAK,IAAIA,OAAM;AACjC,UAAM,QAAQ,gBAAgB,KAAK,MAAM,YAAY,EAAE,GAAG,CAAC;AAC3D,UAAM,UAAU,gBAAgB,YAAY,IAAI,CAAC;AACjD,WAAOE,QAAO,QAAQD,aAAY;AAAA,EACpC;;;ACvwBA,MAAM,oBAAoB,CAAC,SAASE,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;AAAG,YAAM,IAAI,WAAW,QAAQ;AAAA,EAChE;AAEA,WAAS,QAAQ,OAAOA,SAAQ,OAAO;AACrC,UAAM,UAAU,MAAM,CAAC,MAAM,MAAM,UAAU;AAC7C,WAAO,SAAS,MAAM,YAAY,oBAAoB,iBAAiBA,6BAA4B,0BAA0B;AAAA,EAC/H;;;ACKA,MAAM,yBACJ;AAIF,MAAM,6BAA6B;AAEnC,MAAM,sBAAsB;AAC5B,MAAM,oBAAoB;AAC1B,MAAM,gCAAgC;AAoS/B,WAAS,OAAO,MAAM,WAAWC,UAAS;AAC/C,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,SAASD,UAAS,UAAUC,gBAAe,UAAU;AAE3D,UAAM,wBACJD,UAAS,yBACTA,UAAS,QAAQ,SAAS,yBAC1BC,gBAAe,yBACfA,gBAAe,QAAQ,SAAS,yBAChC;AAEF,UAAM,eACJD,UAAS,gBACTA,UAAS,QAAQ,SAAS,gBAC1BC,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,UAAM,eAAe,OAAO,MAAMD,UAAS,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,UAAIE,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;AAAS,eAAO,KAAK;AAE/B,YAAM,QAAQ,KAAK;AAEnB,UACG,CAACF,UAAS,+BACT,yBAAyB,KAAK,KAC/B,CAACA,UAAS,gCACT,0BAA0B,KAAK,GACjC;AACA,kCAA0B,OAAO,WAAW,OAAO,IAAI,CAAC;AAAA,MAC1D;AAEA,YAAM,YAAYE,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,MAAMC,UAAS;AACvC,UAAM,MAAM,OAAO,MAAMA,UAAS,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,MAAMC,UAAS;AACtB,aAAO,KAAK,cAAc,MAAM,KAAK,OAAOA,QAAO;AAAA,IACrD;AAAA,IAEA,IAAI,MAAM,OAAOA,UAAS;AACxB,aAAO,KAAK,SAAS,MAAM,OAAO,KAAK,OAAOA,QAAO;AAAA,IACvD;AAAA,EACF;AAEO,MAAM,qBAAN,cAAiC,OAAO;AAAA,IAC7C,WAAW;AAAA,IACX,cAAc;AAAA,IAEd,YAAY,SAASC,YAAW;AAC9B,YAAM;AACN,WAAK,UAAU,YAAY,CAAC,SAAS,cAAcA,YAAW,IAAI;AAAA,IACpE;AAAA,IAEA,IAAI,MAAM,OAAO;AACf,UAAI,MAAM;AAAgB,eAAO;AACjC,aAAO,cAAc,MAAM,UAAU,MAAM,KAAK,OAAO,CAAC;AAAA,IAC1D;AAAA,EACF;;;ACtDO,MAAM,SAAN,MAAa;AAAA,IAClB,IAAI,YAAY,OAAOC,QAAOC,UAAS;AACrC,YAAM,SAAS,KAAK,MAAM,YAAY,OAAOD,QAAOC,QAAO;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,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,QAI7C,KAAK;AACH,iBAAOA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,CAAC;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,OAAOC,UAAS;AAC/B,YAAM,cAAc,YAAY,MAAMA,QAAO;AAE7C,UAAI,MAAM,gBAAgB;AACxB,cAAM,yBAAyB;AAAA,UAC7B,MAAM;AAAA,UACN;AAAA,QACF;AACA,aAAK;AAAA,UACH;AAAA,UACA;AAAA,UACAA,SAAQ;AAAA,QACV;AACA,aAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,eAAO,YAAY,MAAMA,QAAO;AAAA,MAClC;AAEA,YAAM,OACJ,EAAE,SAAS,UAAU,MAAM,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM;AAChE,WAAK,YAAY,MAAM,GAAGA,SAAQ,qBAAqB;AACvD,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO,YAAY,MAAMA,QAAO;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,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAE9C,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,UAAU,CAAC;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,QAIL,KAAK;AACH,iBAAOA,OAAM,QAAQ,YAAY;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAE9C,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,UAAU,CAAC;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,QAIL,KAAK;AACH,iBAAOA,OAAM,QAAQ,YAAY;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,QAEb,KAAK;AACH,iBAAO;AAAA,YACL,oBAAoB,gBAAgB,OAAO,UAAU;AAAA,YACrD;AAAA,UACF;AAAA,QAEF,KAAK;AACH,iBAAO,SAAS,aAAa,GAAG,UAAU,GAAG,aAAa;AAAA,QAE5D,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;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,QAItE,KAAK;AACH,iBAAOA,OAAM,MAAM,YAAY;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,QAEb,KAAK;AACH,iBAAO;AAAA,YACL,oBAAoB,gBAAgB,OAAO,UAAU;AAAA,YACrD;AAAA,UACF;AAAA,QAEF,KAAK;AACH,iBAAO,SAAS,aAAa,GAAG,UAAU,GAAG,aAAa;AAAA,QAE5D,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;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,QAItE,KAAK;AACH,iBAAOA,OAAM,MAAM,YAAY;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,MAAMC,UAAS;AAC3C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,OAAO,QAAQ,OAAOA,QAAO,IAAI;AACvC,UAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,CAAC;AACxC,WAAO,OAAO,OAAOA,UAAS,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,OAAOC,UAAS;AAChC,aAAO,YAAY,QAAQ,MAAM,OAAOA,QAAO,GAAGA,QAAO;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,MAAMC,UAAS;AAC9C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,OAAO,WAAW,OAAOA,QAAO,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,KAAKC,UAAS;AACzC,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,eACJD,UAAS,gBACTA,UAAS,QAAQ,SAAS,gBAC1BC,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,UAAM,QAAQ,OAAO,MAAMD,UAAS,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,MAAMA,QAAO;AAAA,EACrC;;;ACpDO,MAAM,YAAN,cAAwB,OAAO;AAAA,IACpC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOE,QAAO;AAC9B,cAAQ,OAAO;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,QAIpE,KAAK;AACH,iBAAOA,OAAM,IAAI,YAAY;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,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,OAAOC,UAAS;AAChC,aAAO,OAAO,MAAM,OAAOA,QAAO;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,QAAOC,UAAS;AACvC,YAAM,gBAAgB,CAAC,UAAU;AAE/B,cAAM,gBAAgB,KAAK,OAAO,QAAQ,KAAK,CAAC,IAAI;AACpD,gBAAS,QAAQA,SAAQ,eAAe,KAAK,IAAK;AAAA,MACpD;AAEA,cAAQ,OAAO;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,QAEvE,KAAK;AACH,iBAAO;AAAA,YACLD,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;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,QAIpE,KAAK;AACH,iBAAOA,OAAM,IAAI,YAAY;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,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,OAAOC,UAAS;AAChC,aAAO,OAAO,MAAM,OAAOA,QAAO;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,QAAOC,UAAS;AACvC,YAAM,gBAAgB,CAAC,UAAU;AAE/B,cAAM,gBAAgB,KAAK,OAAO,QAAQ,KAAK,CAAC,IAAI;AACpD,gBAAS,QAAQA,SAAQ,eAAe,KAAK,IAAK;AAAA,MACpD;AAEA,cAAQ,OAAO;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,QAEvE,KAAK;AACH,iBAAO;AAAA,YACLD,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;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,QAIpE,KAAK;AACH,iBAAOA,OAAM,IAAI,YAAY;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;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,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,OAAOC,UAAS;AAChC,aAAO,OAAO,MAAM,OAAOA,QAAO;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,KAAKC,UAAS;AAC5C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,aAAa,UAAU,OAAOA,QAAO;AAC3C,UAAM,OAAO,MAAM;AACnB,WAAO,QAAQ,OAAO,MAAMA,QAAO;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,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAE9C,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,MAAM,CAAC;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,QAEF,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,YACD;AAAA,UACF;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,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;AAAgB,eAAO;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;AAAgB,eAAO;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,eAAeC,UAAS;AAChE,UAAM,cAAc,MAAM,cAAcA,UAAS,MAAM,eAAe,GAAG;AACzE,UAAMC,kBAAiBC,mBAAkB;AACzC,UAAM,SAASF,UAAS,UAAUC,gBAAe,UAAU;AAE3D,UAAM,wBACJD,UAAS,yBACTA,UAAS,QAAQ,SAAS,yBAC1BC,gBAAe,yBACfA,gBAAe,QAAQ,SAAS,yBAChC;AAEF,UAAM,eACJD,UAAS,gBACTA,UAAS,QAAQ,SAAS,gBAC1BC,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,QAAI,CAAC;AACH,aAAO,UAAU,YAAY,IAAI,OAAO,eAAeD,UAAS,EAAE;AAEpE,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAIA,UAAM,UAAU,CAAC,IAAI,mBAAmBA,UAAS,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,CAACM,UAAS,+BACV,yBAAyB,KAAK,GAC9B;AACA,kCAA0B,OAAO,WAAW,OAAO;AAAA,MACrD;AACA,UACE,CAACA,UAAS,gCACV,0BAA0B,KAAK,GAC/B;AACA,kCAA0B,OAAO,WAAW,OAAO;AAAA,MACrD;AAEA,YAAM,iBAAiB,MAAM,CAAC;AAC9B,YAAMG,UAAS,QAAQ,cAAc;AACrC,UAAIA,SAAQ;AACV,cAAM,EAAE,mBAAmB,IAAIA;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,qBAAqB;AAAA,YAChF;AAAA,UACF;AAAA,QACF,WAAWA,QAAO,uBAAuB,OAAO,WAAW,SAAS,GAAG;AACrE,gBAAM,IAAI;AAAA,YACR,uCAAuC;AAAA,UACzC;AAAA,QACF;AAEA,mBAAW,KAAK,EAAE,OAAO,gBAAgB,WAAW,MAAM,CAAC;AAE3D,cAAM,cAAcA,QAAO;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,MAAML,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,kBAAQM,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,QAAOC,WAAUA,OAAM,QAAQ,QAAQ,MAAMD,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,eAAeL,UAAS,EAAE;AAE5C,QAAI,MAAM,CAAC,IAAI;AAAG,aAAO,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,WAASI,oBAAmB,OAAO;AACjC,WAAO,MAAM,MAAMR,oBAAmB,EAAE,CAAC,EAAE,QAAQC,oBAAmB,GAAG;AAAA,EAC3E;;;ACjeO,WAAS,YAAY,MAAMY,UAAS;AACzC,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,WAAW,GAAG,GAAG,CAAC;AACxB,WAAO;AAAA,EACT;;;ACJO,WAAS,cAAc,MAAMC,UAAS;AAC3C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,WAAW,GAAG,CAAC;AACrB,WAAO;AAAA,EACT;;;ACJO,WAAS,cAAc,MAAMC,UAAS;AAC3C,UAAM,QAAQ,OAAO,MAAMA,UAAS,EAAE;AACtC,UAAM,gBAAgB,CAAC;AACvB,WAAO;AAAA,EACT;;;ACYO,WAAS,SAAS,UAAUC,UAAS;AAC1C,UAAM,cAAc,MAAM,cAAcA,UAAS,IAAI,GAAG;AAExD,UAAM,mBAAmBA,UAAS,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;AAAG,aAAO,YAAY;AAE9C,UAAM,YAAY,CAAC;AACnB,QAAI,OAAO;AACX,QAAIC;AAEJ,QAAI,YAAY,MAAM;AACpB,aAAO,UAAU,YAAY,IAAI;AACjC,UAAI,MAAM,IAAI;AAAG,eAAO,YAAY;AAAA,IACtC;AAEA,QAAI,YAAY,UAAU;AACxB,MAAAA,UAAS,cAAc,YAAY,QAAQ;AAC3C,UAAI,MAAMA,OAAM;AAAG,eAAO,YAAY;AAAA,IACxC,OAAO;AACL,YAAM,UAAU,IAAI,KAAK,YAAY,IAAI;AACzC,YAAM,SAAS,OAAO,GAAGD,UAAS,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,OAAOC,SAAQD,UAAS,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,UAAME,SAAQ,WAAW,MAAM,SAAS,iBAAiB;AACzD,QAAI;AAIJ,QAAIA,OAAM,SAAS,GAAG;AACpB,aAAO;AAAA,IACT;AAEA,QAAI,IAAI,KAAKA,OAAM,CAAC,CAAC,GAAG;AACtB,mBAAaA,OAAM,CAAC;AAAA,IACtB,OAAO;AACL,kBAAY,OAAOA,OAAM,CAAC;AAC1B,mBAAaA,OAAM,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;AAAU,aAAO,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;AAAM,aAAO,oBAAI,KAAK,GAAG;AAEtC,UAAM,WAAW,WAAW,MAAM,SAAS;AAE3C,QAAI,CAAC;AAAU,aAAO,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;AAAU,aAAO;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;AAAK,aAAO;AAEnC,UAAM,WAAW,eAAe,MAAM,aAAa;AACnD,QAAI,CAAC;AAAU,aAAO;AAEtB,UAAMC,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,SAASC,MAAKC,MAAK,MAAM;AAC7B,cAAQ,MAAM;AAAA,QACd,KAAK;AAAe,iBAAO,yBAAyBD,MAAKC,IAAG;AAAA,QAC5D,KAAK;AAAU,iBAAO,oBAAoBD,MAAKC,IAAG;AAAA,QAClD,KAAK;AAAU,iBAAO,oBAAoBD,MAAKC,IAAG;AAAA,QAClD,KAAK;AAAQ,iBAAO,kBAAkBD,MAAKC,IAAG;AAAA,QAC9C,KAAK;AAAO,iBAAO,iBAAiBD,MAAKC,IAAG;AAAA,QAC5C,KAAK;AAAQ,iBAAO,kBAAkBD,MAAKC,IAAG;AAAA,QAC9C,KAAK;AAAS,iBAAO,mBAAmBD,MAAKC,IAAG;AAAA,QAChD,KAAK;AAAW,iBAAO,qBAAqBD,MAAKC,IAAG;AAAA,QACpD,KAAK;AAAQ,iBAAO,kBAAkBD,MAAKC,IAAG;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;;;AkMCnB,MAAAC,oBAAsB;AAFtB;AAIA,SAAO,YAAY,kBAAAC;;;;;;;;;;;;;;;;;;;;ACPnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAAC;AAAA,IAAA;AAAA,4BAAAA;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,MAAI,MAAM;AACV,MAAI,SAAS;AACb,MAAI,QAAQ;AACZ,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,iBAAiB,CAAC,KAAK,QAAQ,OAAO,IAAI;AAC9C,MAAIC,SAAQ;AACZ,MAAI,MAAM;AACV,MAAI,kBAAkB;AACtB,MAAI,WAAW;AACf,MAAI,SAAS;AACb,MAAI,YAAY;AAChB,MAAI,sBAAmC,+BAAe,OAAO,SAAU,KAAK,WAAW;AAC5F,WAAO,IAAI,OAAO,CAAC,YAAY,MAAMA,QAAO,YAAY,MAAM,GAAG,CAAC;AAAA,EACpE,GAAG,CAAC,CAAC;AACE,MAAI,aAA0B,iBAAC,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,SAAU,KAAK,WAAW;AACtG,WAAO,IAAI,OAAO,CAAC,WAAW,YAAY,MAAMA,QAAO,YAAY,MAAM,GAAG,CAAC;AAAA,EAC/E,GAAG,CAAC,CAAC;AAEE,MAAI,aAAa;AACjB,MAAI,OAAO;AACX,MAAI,YAAY;AAEhB,MAAI,aAAa;AACjB,MAAI,OAAO;AACX,MAAI,YAAY;AAEhB,MAAI,cAAc;AAClB,MAAI,QAAQ;AACZ,MAAI,aAAa;AACjB,MAAI,iBAAiB,CAAC,YAAY,MAAM,WAAW,YAAY,MAAM,WAAW,aAAa,OAAO,UAAU;;;AC9BtG,WAAR,YAA6B,SAAS;AAC3C,WAAO,WAAW,QAAQ,YAAY,IAAI,YAAY,IAAI;AAAA,EAC5D;;;ACFe,WAAR,UAA2B,MAAM;AACtC,QAAI,QAAQ,MAAM;AAChB,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,SAAS,MAAM,mBAAmB;AACzC,UAAI,gBAAgB,KAAK;AACzB,aAAO,gBAAgB,cAAc,eAAe,SAAS;AAAA,IAC/D;AAEA,WAAO;AAAA,EACT;;;ACTA,WAAS,UAAU,MAAM;AACvB,QAAI,aAAa,UAAU,IAAI,EAAE;AACjC,WAAO,gBAAgB,cAAc,gBAAgB;AAAA,EACvD;AAEA,WAAS,cAAc,MAAM;AAC3B,QAAI,aAAa,UAAU,IAAI,EAAE;AACjC,WAAO,gBAAgB,cAAc,gBAAgB;AAAA,EACvD;AAEA,WAAS,aAAa,MAAM;AAE1B,QAAI,OAAO,eAAe,aAAa;AACrC,aAAO;AAAA,IACT;AAEA,QAAI,aAAa,UAAU,IAAI,EAAE;AACjC,WAAO,gBAAgB,cAAc,gBAAgB;AAAA,EACvD;;;AChBA,WAAS,YAAY,MAAM;AACzB,QAAI,QAAQ,KAAK;AACjB,WAAO,KAAK,MAAM,QAAQ,EAAE,QAAQ,SAAUC,OAAM;AAClD,UAAI,QAAQ,MAAM,OAAOA,KAAI,KAAK,CAAC;AACnC,UAAI,aAAa,MAAM,WAAWA,KAAI,KAAK,CAAC;AAC5C,UAAI,UAAU,MAAM,SAASA,KAAI;AAEjC,UAAI,CAAC,cAAc,OAAO,KAAK,CAAC,YAAY,OAAO,GAAG;AACpD;AAAA,MACF;AAKA,aAAO,OAAO,QAAQ,OAAO,KAAK;AAClC,aAAO,KAAK,UAAU,EAAE,QAAQ,SAAUA,OAAM;AAC9C,YAAI,QAAQ,WAAWA,KAAI;AAE3B,YAAI,UAAU,OAAO;AACnB,kBAAQ,gBAAgBA,KAAI;AAAA,QAC9B,OAAO;AACL,kBAAQ,aAAaA,OAAM,UAAU,OAAO,KAAK,KAAK;AAAA,QACxD;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,WAAS,OAAO,OAAO;AACrB,QAAI,QAAQ,MAAM;AAClB,QAAI,gBAAgB;AAAA,MAClB,QAAQ;AAAA,QACN,UAAU,MAAM,QAAQ;AAAA,QACxB,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,MACA,WAAW,CAAC;AAAA,IACd;AACA,WAAO,OAAO,MAAM,SAAS,OAAO,OAAO,cAAc,MAAM;AAC/D,UAAM,SAAS;AAEf,QAAI,MAAM,SAAS,OAAO;AACxB,aAAO,OAAO,MAAM,SAAS,MAAM,OAAO,cAAc,KAAK;AAAA,IAC/D;AAEA,WAAO,WAAY;AACjB,aAAO,KAAK,MAAM,QAAQ,EAAE,QAAQ,SAAUA,OAAM;AAClD,YAAI,UAAU,MAAM,SAASA,KAAI;AACjC,YAAI,aAAa,MAAM,WAAWA,KAAI,KAAK,CAAC;AAC5C,YAAI,kBAAkB,OAAO,KAAK,MAAM,OAAO,eAAeA,KAAI,IAAI,MAAM,OAAOA,KAAI,IAAI,cAAcA,KAAI,CAAC;AAE9G,YAAI,QAAQ,gBAAgB,OAAO,SAAUC,QAAO,UAAU;AAC5D,UAAAA,OAAM,QAAQ,IAAI;AAClB,iBAAOA;AAAA,QACT,GAAG,CAAC,CAAC;AAEL,YAAI,CAAC,cAAc,OAAO,KAAK,CAAC,YAAY,OAAO,GAAG;AACpD;AAAA,QACF;AAEA,eAAO,OAAO,QAAQ,OAAO,KAAK;AAClC,eAAO,KAAK,UAAU,EAAE,QAAQ,SAAU,WAAW;AACnD,kBAAQ,gBAAgB,SAAS;AAAA,QACnC,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAGA,MAAO,sBAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,IACJ;AAAA,IACA,UAAU,CAAC,eAAe;AAAA,EAC5B;;;AClFe,WAAR,iBAAkC,WAAW;AAClD,WAAO,UAAU,MAAM,GAAG,EAAE,CAAC;AAAA,EAC/B;;;ACHO,MAAI,MAAM,KAAK;AACf,MAAI,MAAM,KAAK;AACf,MAAIC,SAAQ,KAAK;;;ACFT,WAAR,cAA+B;AACpC,QAAI,SAAS,UAAU;AAEvB,QAAI,UAAU,QAAQ,OAAO,UAAU,MAAM,QAAQ,OAAO,MAAM,GAAG;AACnE,aAAO,OAAO,OAAO,IAAI,SAAU,MAAM;AACvC,eAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,MACjC,CAAC,EAAE,KAAK,GAAG;AAAA,IACb;AAEA,WAAO,UAAU;AAAA,EACnB;;;ACTe,WAAR,mBAAoC;AACzC,WAAO,CAAC,iCAAiC,KAAK,YAAY,CAAC;AAAA,EAC7D;;;ACCe,WAAR,sBAAuC,SAAS,cAAc,iBAAiB;AACpF,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AAEA,QAAI,oBAAoB,QAAQ;AAC9B,wBAAkB;AAAA,IACpB;AAEA,QAAI,aAAa,QAAQ,sBAAsB;AAC/C,QAAI,SAAS;AACb,QAAI,SAAS;AAEb,QAAI,gBAAgB,cAAc,OAAO,GAAG;AAC1C,eAAS,QAAQ,cAAc,IAAIC,OAAM,WAAW,KAAK,IAAI,QAAQ,eAAe,IAAI;AACxF,eAAS,QAAQ,eAAe,IAAIA,OAAM,WAAW,MAAM,IAAI,QAAQ,gBAAgB,IAAI;AAAA,IAC7F;AAEA,QAAI,OAAO,UAAU,OAAO,IAAI,UAAU,OAAO,IAAI,QACjD,iBAAiB,KAAK;AAE1B,QAAI,mBAAmB,CAAC,iBAAiB,KAAK;AAC9C,QAAIC,MAAK,WAAW,QAAQ,oBAAoB,iBAAiB,eAAe,aAAa,MAAM;AACnG,QAAIC,MAAK,WAAW,OAAO,oBAAoB,iBAAiB,eAAe,YAAY,MAAM;AACjG,QAAIC,SAAQ,WAAW,QAAQ;AAC/B,QAAIC,UAAS,WAAW,SAAS;AACjC,WAAO;AAAA,MACL,OAAOD;AAAA,MACP,QAAQC;AAAA,MACR,KAAKF;AAAA,MACL,OAAOD,KAAIE;AAAA,MACX,QAAQD,KAAIE;AAAA,MACZ,MAAMH;AAAA,MACN,GAAGA;AAAA,MACH,GAAGC;AAAA,IACL;AAAA,EACF;;;ACrCe,WAAR,cAA+B,SAAS;AAC7C,QAAI,aAAa,sBAAsB,OAAO;AAG9C,QAAIG,SAAQ,QAAQ;AACpB,QAAIC,UAAS,QAAQ;AAErB,QAAI,KAAK,IAAI,WAAW,QAAQD,MAAK,KAAK,GAAG;AAC3C,MAAAA,SAAQ,WAAW;AAAA,IACrB;AAEA,QAAI,KAAK,IAAI,WAAW,SAASC,OAAM,KAAK,GAAG;AAC7C,MAAAA,UAAS,WAAW;AAAA,IACtB;AAEA,WAAO;AAAA,MACL,GAAG,QAAQ;AAAA,MACX,GAAG,QAAQ;AAAA,MACX,OAAOD;AAAA,MACP,QAAQC;AAAA,IACV;AAAA,EACF;;;ACvBe,WAAR,SAA0B,QAAQ,OAAO;AAC9C,QAAI,WAAW,MAAM,eAAe,MAAM,YAAY;AAEtD,QAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,aAAO;AAAA,IACT,WACS,YAAY,aAAa,QAAQ,GAAG;AACzC,UAAIC,QAAO;AAEX,SAAG;AACD,YAAIA,SAAQ,OAAO,WAAWA,KAAI,GAAG;AACnC,iBAAO;AAAA,QACT;AAGA,QAAAA,QAAOA,MAAK,cAAcA,MAAK;AAAA,MACjC,SAASA;AAAA,IACX;AAGF,WAAO;AAAA,EACT;;;ACrBe,WAARC,kBAAkC,SAAS;AAChD,WAAO,UAAU,OAAO,EAAE,iBAAiB,OAAO;AAAA,EACpD;;;ACFe,WAAR,eAAgC,SAAS;AAC9C,WAAO,CAAC,SAAS,MAAM,IAAI,EAAE,QAAQ,YAAY,OAAO,CAAC,KAAK;AAAA,EAChE;;;ACFe,WAAR,mBAAoC,SAAS;AAElD,aAAS,UAAU,OAAO,IAAI,QAAQ;AAAA;AAAA,MACtC,QAAQ;AAAA,UAAa,OAAO,UAAU;AAAA,EACxC;;;ACFe,WAAR,cAA+B,SAAS;AAC7C,QAAI,YAAY,OAAO,MAAM,QAAQ;AACnC,aAAO;AAAA,IACT;AAEA;AAAA;AAAA;AAAA;AAAA,MAGE,QAAQ;AAAA,MACR,QAAQ;AAAA,OACR,aAAa,OAAO,IAAI,QAAQ,OAAO;AAAA;AAAA,MAEvC,mBAAmB,OAAO;AAAA;AAAA,EAG9B;;;ACVA,WAAS,oBAAoB,SAAS;AACpC,QAAI,CAAC,cAAc,OAAO;AAAA,IAC1BC,kBAAiB,OAAO,EAAE,aAAa,SAAS;AAC9C,aAAO;AAAA,IACT;AAEA,WAAO,QAAQ;AAAA,EACjB;AAIA,WAAS,mBAAmB,SAAS;AACnC,QAAI,YAAY,WAAW,KAAK,YAAY,CAAC;AAC7C,QAAI,OAAO,WAAW,KAAK,YAAY,CAAC;AAExC,QAAI,QAAQ,cAAc,OAAO,GAAG;AAElC,UAAI,aAAaA,kBAAiB,OAAO;AAEzC,UAAI,WAAW,aAAa,SAAS;AACnC,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,cAAc,cAAc,OAAO;AAEvC,QAAI,aAAa,WAAW,GAAG;AAC7B,oBAAc,YAAY;AAAA,IAC5B;AAEA,WAAO,cAAc,WAAW,KAAK,CAAC,QAAQ,MAAM,EAAE,QAAQ,YAAY,WAAW,CAAC,IAAI,GAAG;AAC3F,UAAIC,OAAMD,kBAAiB,WAAW;AAItC,UAAIC,KAAI,cAAc,UAAUA,KAAI,gBAAgB,UAAUA,KAAI,YAAY,WAAW,CAAC,aAAa,aAAa,EAAE,QAAQA,KAAI,UAAU,MAAM,MAAM,aAAaA,KAAI,eAAe,YAAY,aAAaA,KAAI,UAAUA,KAAI,WAAW,QAAQ;AACpP,eAAO;AAAA,MACT,OAAO;AACL,sBAAc,YAAY;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAIe,WAAR,gBAAiC,SAAS;AAC/C,QAAIC,UAAS,UAAU,OAAO;AAC9B,QAAI,eAAe,oBAAoB,OAAO;AAE9C,WAAO,gBAAgB,eAAe,YAAY,KAAKF,kBAAiB,YAAY,EAAE,aAAa,UAAU;AAC3G,qBAAe,oBAAoB,YAAY;AAAA,IACjD;AAEA,QAAI,iBAAiB,YAAY,YAAY,MAAM,UAAU,YAAY,YAAY,MAAM,UAAUA,kBAAiB,YAAY,EAAE,aAAa,WAAW;AAC1J,aAAOE;AAAA,IACT;AAEA,WAAO,gBAAgB,mBAAmB,OAAO,KAAKA;AAAA,EACxD;;;ACpEe,WAAR,yBAA0C,WAAW;AAC1D,WAAO,CAAC,OAAO,QAAQ,EAAE,QAAQ,SAAS,KAAK,IAAI,MAAM;AAAA,EAC3D;;;ACDO,WAAS,OAAOC,MAAK,OAAOC,MAAK;AACtC,WAAO,IAAQD,MAAK,IAAQ,OAAOC,IAAG,CAAC;AAAA,EACzC;AACO,WAAS,eAAeD,MAAK,OAAOC,MAAK;AAC9C,QAAIC,KAAI,OAAOF,MAAK,OAAOC,IAAG;AAC9B,WAAOC,KAAID,OAAMA,OAAMC;AAAA,EACzB;;;ACPe,WAAR,qBAAsC;AAC3C,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;;;ACNe,WAAR,mBAAoC,eAAe;AACxD,WAAO,OAAO,OAAO,CAAC,GAAG,mBAAmB,GAAG,aAAa;AAAA,EAC9D;;;ACHe,WAAR,gBAAiC,OAAO,MAAM;AACnD,WAAO,KAAK,OAAO,SAAU,SAASC,MAAK;AACzC,cAAQA,IAAG,IAAI;AACf,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;;;ACKA,MAAI,kBAAkB,SAASC,iBAAgB,SAAS,OAAO;AAC7D,cAAU,OAAO,YAAY,aAAa,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,OAAO;AAAA,MAC/E,WAAW,MAAM;AAAA,IACnB,CAAC,CAAC,IAAI;AACN,WAAO,mBAAmB,OAAO,YAAY,WAAW,UAAU,gBAAgB,SAAS,cAAc,CAAC;AAAA,EAC5G;AAEA,WAAS,MAAM,MAAM;AACnB,QAAI;AAEJ,QAAI,QAAQ,KAAK,OACbC,QAAO,KAAK,MACZC,WAAU,KAAK;AACnB,QAAI,eAAe,MAAM,SAAS;AAClC,QAAIC,iBAAgB,MAAM,cAAc;AACxC,QAAI,gBAAgB,iBAAiB,MAAM,SAAS;AACpD,QAAI,OAAO,yBAAyB,aAAa;AACjD,QAAI,aAAa,CAAC,MAAM,KAAK,EAAE,QAAQ,aAAa,KAAK;AACzD,QAAI,MAAM,aAAa,WAAW;AAElC,QAAI,CAAC,gBAAgB,CAACA,gBAAe;AACnC;AAAA,IACF;AAEA,QAAI,gBAAgB,gBAAgBD,SAAQ,SAAS,KAAK;AAC1D,QAAI,YAAY,cAAc,YAAY;AAC1C,QAAI,UAAU,SAAS,MAAM,MAAM;AACnC,QAAI,UAAU,SAAS,MAAM,SAAS;AACtC,QAAI,UAAU,MAAM,MAAM,UAAU,GAAG,IAAI,MAAM,MAAM,UAAU,IAAI,IAAIC,eAAc,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG;AACrH,QAAI,YAAYA,eAAc,IAAI,IAAI,MAAM,MAAM,UAAU,IAAI;AAChE,QAAI,oBAAoB,gBAAgB,YAAY;AACpD,QAAI,aAAa,oBAAoB,SAAS,MAAM,kBAAkB,gBAAgB,IAAI,kBAAkB,eAAe,IAAI;AAC/H,QAAI,oBAAoB,UAAU,IAAI,YAAY;AAGlD,QAAIC,OAAM,cAAc,OAAO;AAC/B,QAAIC,OAAM,aAAa,UAAU,GAAG,IAAI,cAAc,OAAO;AAC7D,QAAIC,UAAS,aAAa,IAAI,UAAU,GAAG,IAAI,IAAI;AACnD,QAAIC,UAAS,OAAOH,MAAKE,SAAQD,IAAG;AAEpC,QAAI,WAAW;AACf,UAAM,cAAcJ,KAAI,KAAK,wBAAwB,CAAC,GAAG,sBAAsB,QAAQ,IAAIM,SAAQ,sBAAsB,eAAeA,UAASD,SAAQ;AAAA,EAC3J;AAEA,WAASE,QAAO,OAAO;AACrB,QAAI,QAAQ,MAAM,OACdN,WAAU,MAAM;AACpB,QAAI,mBAAmBA,SAAQ,SAC3B,eAAe,qBAAqB,SAAS,wBAAwB;AAEzE,QAAI,gBAAgB,MAAM;AACxB;AAAA,IACF;AAGA,QAAI,OAAO,iBAAiB,UAAU;AACpC,qBAAe,MAAM,SAAS,OAAO,cAAc,YAAY;AAE/D,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,MAAM,SAAS,QAAQ,YAAY,GAAG;AAClD;AAAA,IACF;AAEA,UAAM,SAAS,QAAQ;AAAA,EACzB;AAGA,MAAO,gBAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,QAAQM;AAAA,IACR,UAAU,CAAC,eAAe;AAAA,IAC1B,kBAAkB,CAAC,iBAAiB;AAAA,EACtC;;;ACzFe,WAAR,aAA8B,WAAW;AAC9C,WAAO,UAAU,MAAM,GAAG,EAAE,CAAC;AAAA,EAC/B;;;ACOA,MAAI,aAAa;AAAA,IACf,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACR;AAIA,WAAS,kBAAkB,MAAM,KAAK;AACpC,QAAIC,KAAI,KAAK,GACTC,KAAI,KAAK;AACb,QAAI,MAAM,IAAI,oBAAoB;AAClC,WAAO;AAAA,MACL,GAAGC,OAAMF,KAAI,GAAG,IAAI,OAAO;AAAA,MAC3B,GAAGE,OAAMD,KAAI,GAAG,IAAI,OAAO;AAAA,IAC7B;AAAA,EACF;AAEO,WAAS,YAAY,OAAO;AACjC,QAAI;AAEJ,QAAIE,UAAS,MAAM,QACf,aAAa,MAAM,YACnB,YAAY,MAAM,WAClB,YAAY,MAAM,WAClB,UAAU,MAAM,SAChBC,YAAW,MAAM,UACjB,kBAAkB,MAAM,iBACxB,WAAW,MAAM,UACjB,eAAe,MAAM,cACrB,UAAU,MAAM;AACpB,QAAI,aAAa,QAAQ,GACrBJ,KAAI,eAAe,SAAS,IAAI,YAChC,aAAa,QAAQ,GACrBC,KAAI,eAAe,SAAS,IAAI;AAEpC,QAAI,QAAQ,OAAO,iBAAiB,aAAa,aAAa;AAAA,MAC5D,GAAGD;AAAA,MACH,GAAGC;AAAA,IACL,CAAC,IAAI;AAAA,MACH,GAAGD;AAAA,MACH,GAAGC;AAAA,IACL;AAEA,IAAAD,KAAI,MAAM;AACV,IAAAC,KAAI,MAAM;AACV,QAAI,OAAO,QAAQ,eAAe,GAAG;AACrC,QAAI,OAAO,QAAQ,eAAe,GAAG;AACrC,QAAI,QAAQ;AACZ,QAAI,QAAQ;AACZ,QAAI,MAAM;AAEV,QAAI,UAAU;AACZ,UAAI,eAAe,gBAAgBE,OAAM;AACzC,UAAI,aAAa;AACjB,UAAI,YAAY;AAEhB,UAAI,iBAAiB,UAAUA,OAAM,GAAG;AACtC,uBAAe,mBAAmBA,OAAM;AAExC,YAAIE,kBAAiB,YAAY,EAAE,aAAa,YAAYD,cAAa,YAAY;AACnF,uBAAa;AACb,sBAAY;AAAA,QACd;AAAA,MACF;AAGA,qBAAe;AAEf,UAAI,cAAc,QAAQ,cAAc,QAAQ,cAAc,UAAU,cAAc,KAAK;AACzF,gBAAQ;AACR,YAAI,UAAU,WAAW,iBAAiB,OAAO,IAAI,iBAAiB,IAAI,eAAe;AAAA;AAAA,UACzF,aAAa,UAAU;AAAA;AACvB,QAAAH,MAAK,UAAU,WAAW;AAC1B,QAAAA,MAAK,kBAAkB,IAAI;AAAA,MAC7B;AAEA,UAAI,cAAc,SAAS,cAAc,OAAO,cAAc,WAAW,cAAc,KAAK;AAC1F,gBAAQ;AACR,YAAI,UAAU,WAAW,iBAAiB,OAAO,IAAI,iBAAiB,IAAI,eAAe;AAAA;AAAA,UACzF,aAAa,SAAS;AAAA;AACtB,QAAAD,MAAK,UAAU,WAAW;AAC1B,QAAAA,MAAK,kBAAkB,IAAI;AAAA,MAC7B;AAAA,IACF;AAEA,QAAI,eAAe,OAAO,OAAO;AAAA,MAC/B,UAAUI;AAAA,IACZ,GAAG,YAAY,UAAU;AAEzB,QAAI,QAAQ,iBAAiB,OAAO,kBAAkB;AAAA,MACpD,GAAGJ;AAAA,MACH,GAAGC;AAAA,IACL,GAAG,UAAUE,OAAM,CAAC,IAAI;AAAA,MACtB,GAAGH;AAAA,MACH,GAAGC;AAAA,IACL;AAEA,IAAAD,KAAI,MAAM;AACV,IAAAC,KAAI,MAAM;AAEV,QAAI,iBAAiB;AACnB,UAAI;AAEJ,aAAO,OAAO,OAAO,CAAC,GAAG,eAAe,iBAAiB,CAAC,GAAG,eAAe,KAAK,IAAI,OAAO,MAAM,IAAI,eAAe,KAAK,IAAI,OAAO,MAAM,IAAI,eAAe,aAAa,IAAI,oBAAoB,MAAM,IAAI,eAAeD,KAAI,SAASC,KAAI,QAAQ,iBAAiBD,KAAI,SAASC,KAAI,UAAU,eAAe;AAAA,IAClT;AAEA,WAAO,OAAO,OAAO,CAAC,GAAG,eAAe,kBAAkB,CAAC,GAAG,gBAAgB,KAAK,IAAI,OAAOA,KAAI,OAAO,IAAI,gBAAgB,KAAK,IAAI,OAAOD,KAAI,OAAO,IAAI,gBAAgB,YAAY,IAAI,gBAAgB;AAAA,EAC9M;AAEA,WAAS,cAAc,OAAO;AAC5B,QAAI,QAAQ,MAAM,OACdM,WAAU,MAAM;AACpB,QAAI,wBAAwBA,SAAQ,iBAChC,kBAAkB,0BAA0B,SAAS,OAAO,uBAC5D,oBAAoBA,SAAQ,UAC5B,WAAW,sBAAsB,SAAS,OAAO,mBACjD,wBAAwBA,SAAQ,cAChC,eAAe,0BAA0B,SAAS,OAAO;AAC7D,QAAI,eAAe;AAAA,MACjB,WAAW,iBAAiB,MAAM,SAAS;AAAA,MAC3C,WAAW,aAAa,MAAM,SAAS;AAAA,MACvC,QAAQ,MAAM,SAAS;AAAA,MACvB,YAAY,MAAM,MAAM;AAAA,MACxB;AAAA,MACA,SAAS,MAAM,QAAQ,aAAa;AAAA,IACtC;AAEA,QAAI,MAAM,cAAc,iBAAiB,MAAM;AAC7C,YAAM,OAAO,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM,OAAO,QAAQ,YAAY,OAAO,OAAO,CAAC,GAAG,cAAc;AAAA,QACvG,SAAS,MAAM,cAAc;AAAA,QAC7B,UAAU,MAAM,QAAQ;AAAA,QACxB;AAAA,QACA;AAAA,MACF,CAAC,CAAC,CAAC;AAAA,IACL;AAEA,QAAI,MAAM,cAAc,SAAS,MAAM;AACrC,YAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,OAAO,OAAO,YAAY,OAAO,OAAO,CAAC,GAAG,cAAc;AAAA,QACrG,SAAS,MAAM,cAAc;AAAA,QAC7B,UAAU;AAAA,QACV,UAAU;AAAA,QACV;AAAA,MACF,CAAC,CAAC,CAAC;AAAA,IACL;AAEA,UAAM,WAAW,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM,WAAW,QAAQ;AAAA,MACnE,yBAAyB,MAAM;AAAA,IACjC,CAAC;AAAA,EACH;AAGA,MAAO,wBAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,MAAM,CAAC;AAAA,EACT;;;ACtKA,MAAI,UAAU;AAAA,IACZ,SAAS;AAAA,EACX;AAEA,WAASC,QAAO,MAAM;AACpB,QAAI,QAAQ,KAAK,OACb,WAAW,KAAK,UAChBC,WAAU,KAAK;AACnB,QAAI,kBAAkBA,SAAQ,QAC1B,SAAS,oBAAoB,SAAS,OAAO,iBAC7C,kBAAkBA,SAAQ,QAC1B,SAAS,oBAAoB,SAAS,OAAO;AACjD,QAAIC,UAAS,UAAU,MAAM,SAAS,MAAM;AAC5C,QAAI,gBAAgB,CAAC,EAAE,OAAO,MAAM,cAAc,WAAW,MAAM,cAAc,MAAM;AAEvF,QAAI,QAAQ;AACV,oBAAc,QAAQ,SAAU,cAAc;AAC5C,qBAAa,iBAAiB,UAAU,SAAS,QAAQ,OAAO;AAAA,MAClE,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ;AACV,MAAAA,QAAO,iBAAiB,UAAU,SAAS,QAAQ,OAAO;AAAA,IAC5D;AAEA,WAAO,WAAY;AACjB,UAAI,QAAQ;AACV,sBAAc,QAAQ,SAAU,cAAc;AAC5C,uBAAa,oBAAoB,UAAU,SAAS,QAAQ,OAAO;AAAA,QACrE,CAAC;AAAA,MACH;AAEA,UAAI,QAAQ;AACV,QAAAA,QAAO,oBAAoB,UAAU,SAAS,QAAQ,OAAO;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AAGA,MAAO,yBAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI,SAAS,KAAK;AAAA,IAAC;AAAA,IACnB,QAAQF;AAAA,IACR,MAAM,CAAC;AAAA,EACT;;;AChDA,MAAI,OAAO;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,EACP;AACe,WAAR,qBAAsC,WAAW;AACtD,WAAO,UAAU,QAAQ,0BAA0B,SAAU,SAAS;AACpE,aAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAAA,EACH;;;ACVA,MAAIG,QAAO;AAAA,IACT,OAAO;AAAA,IACP,KAAK;AAAA,EACP;AACe,WAAR,8BAA+C,WAAW;AAC/D,WAAO,UAAU,QAAQ,cAAc,SAAU,SAAS;AACxD,aAAOA,MAAK,OAAO;AAAA,IACrB,CAAC;AAAA,EACH;;;ACPe,WAAR,gBAAiC,MAAM;AAC5C,QAAI,MAAM,UAAU,IAAI;AACxB,QAAI,aAAa,IAAI;AACrB,QAAI,YAAY,IAAI;AACpB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACNe,WAAR,oBAAqC,SAAS;AAQnD,WAAO,sBAAsB,mBAAmB,OAAO,CAAC,EAAE,OAAO,gBAAgB,OAAO,EAAE;AAAA,EAC5F;;;ACRe,WAAR,gBAAiC,SAAS,UAAU;AACzD,QAAI,MAAM,UAAU,OAAO;AAC3B,QAAIC,QAAO,mBAAmB,OAAO;AACrC,QAAI,iBAAiB,IAAI;AACzB,QAAIC,SAAQD,MAAK;AACjB,QAAIE,UAASF,MAAK;AAClB,QAAIG,KAAI;AACR,QAAIC,KAAI;AAER,QAAI,gBAAgB;AAClB,MAAAH,SAAQ,eAAe;AACvB,MAAAC,UAAS,eAAe;AACxB,UAAI,iBAAiB,iBAAiB;AAEtC,UAAI,kBAAkB,CAAC,kBAAkB,aAAa,SAAS;AAC7D,QAAAC,KAAI,eAAe;AACnB,QAAAC,KAAI,eAAe;AAAA,MACrB;AAAA,IACF;AAEA,WAAO;AAAA,MACL,OAAOH;AAAA,MACP,QAAQC;AAAA,MACR,GAAGC,KAAI,oBAAoB,OAAO;AAAA,MAClC,GAAGC;AAAA,IACL;AAAA,EACF;;;ACvBe,WAAR,gBAAiC,SAAS;AAC/C,QAAI;AAEJ,QAAIC,QAAO,mBAAmB,OAAO;AACrC,QAAI,YAAY,gBAAgB,OAAO;AACvC,QAAI,QAAQ,wBAAwB,QAAQ,kBAAkB,OAAO,SAAS,sBAAsB;AACpG,QAAIC,SAAQ,IAAID,MAAK,aAAaA,MAAK,aAAa,OAAO,KAAK,cAAc,GAAG,OAAO,KAAK,cAAc,CAAC;AAC5G,QAAIE,UAAS,IAAIF,MAAK,cAAcA,MAAK,cAAc,OAAO,KAAK,eAAe,GAAG,OAAO,KAAK,eAAe,CAAC;AACjH,QAAIG,KAAI,CAAC,UAAU,aAAa,oBAAoB,OAAO;AAC3D,QAAIC,KAAI,CAAC,UAAU;AAEnB,QAAIC,kBAAiB,QAAQL,KAAI,EAAE,cAAc,OAAO;AACtD,MAAAG,MAAK,IAAIH,MAAK,aAAa,OAAO,KAAK,cAAc,CAAC,IAAIC;AAAA,IAC5D;AAEA,WAAO;AAAA,MACL,OAAOA;AAAA,MACP,QAAQC;AAAA,MACR,GAAGC;AAAA,MACH,GAAGC;AAAA,IACL;AAAA,EACF;;;AC3Be,WAAR,eAAgC,SAAS;AAE9C,QAAI,oBAAoBE,kBAAiB,OAAO,GAC5C,WAAW,kBAAkB,UAC7B,YAAY,kBAAkB,WAC9B,YAAY,kBAAkB;AAElC,WAAO,6BAA6B,KAAK,WAAW,YAAY,SAAS;AAAA,EAC3E;;;ACLe,WAAR,gBAAiC,MAAM;AAC5C,QAAI,CAAC,QAAQ,QAAQ,WAAW,EAAE,QAAQ,YAAY,IAAI,CAAC,KAAK,GAAG;AAEjE,aAAO,KAAK,cAAc;AAAA,IAC5B;AAEA,QAAI,cAAc,IAAI,KAAK,eAAe,IAAI,GAAG;AAC/C,aAAO;AAAA,IACT;AAEA,WAAO,gBAAgB,cAAc,IAAI,CAAC;AAAA,EAC5C;;;ACJe,WAAR,kBAAmC,SAAS,MAAM;AACvD,QAAI;AAEJ,QAAI,SAAS,QAAQ;AACnB,aAAO,CAAC;AAAA,IACV;AAEA,QAAI,eAAe,gBAAgB,OAAO;AAC1C,QAAI,SAAS,mBAAmB,wBAAwB,QAAQ,kBAAkB,OAAO,SAAS,sBAAsB;AACxH,QAAI,MAAM,UAAU,YAAY;AAChC,QAAI,SAAS,SAAS,CAAC,GAAG,EAAE,OAAO,IAAI,kBAAkB,CAAC,GAAG,eAAe,YAAY,IAAI,eAAe,CAAC,CAAC,IAAI;AACjH,QAAI,cAAc,KAAK,OAAO,MAAM;AACpC,WAAO,SAAS;AAAA;AAAA,MAChB,YAAY,OAAO,kBAAkB,cAAc,MAAM,CAAC,CAAC;AAAA;AAAA,EAC7D;;;ACzBe,WAAR,iBAAkC,MAAM;AAC7C,WAAO,OAAO,OAAO,CAAC,GAAG,MAAM;AAAA,MAC7B,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,MACV,OAAO,KAAK,IAAI,KAAK;AAAA,MACrB,QAAQ,KAAK,IAAI,KAAK;AAAA,IACxB,CAAC;AAAA,EACH;;;ACQA,WAAS,2BAA2B,SAAS,UAAU;AACrD,QAAI,OAAO,sBAAsB,SAAS,OAAO,aAAa,OAAO;AACrE,SAAK,MAAM,KAAK,MAAM,QAAQ;AAC9B,SAAK,OAAO,KAAK,OAAO,QAAQ;AAChC,SAAK,SAAS,KAAK,MAAM,QAAQ;AACjC,SAAK,QAAQ,KAAK,OAAO,QAAQ;AACjC,SAAK,QAAQ,QAAQ;AACrB,SAAK,SAAS,QAAQ;AACtB,SAAK,IAAI,KAAK;AACd,SAAK,IAAI,KAAK;AACd,WAAO;AAAA,EACT;AAEA,WAAS,2BAA2B,SAAS,gBAAgB,UAAU;AACrE,WAAO,mBAAmB,WAAW,iBAAiB,gBAAgB,SAAS,QAAQ,CAAC,IAAI,UAAU,cAAc,IAAI,2BAA2B,gBAAgB,QAAQ,IAAI,iBAAiB,gBAAgB,mBAAmB,OAAO,CAAC,CAAC;AAAA,EAC9O;AAKA,WAAS,mBAAmB,SAAS;AACnC,QAAIC,mBAAkB,kBAAkB,cAAc,OAAO,CAAC;AAC9D,QAAI,oBAAoB,CAAC,YAAY,OAAO,EAAE,QAAQC,kBAAiB,OAAO,EAAE,QAAQ,KAAK;AAC7F,QAAI,iBAAiB,qBAAqB,cAAc,OAAO,IAAI,gBAAgB,OAAO,IAAI;AAE9F,QAAI,CAAC,UAAU,cAAc,GAAG;AAC9B,aAAO,CAAC;AAAA,IACV;AAGA,WAAOD,iBAAgB,OAAO,SAAU,gBAAgB;AACtD,aAAO,UAAU,cAAc,KAAK,SAAS,gBAAgB,cAAc,KAAK,YAAY,cAAc,MAAM;AAAA,IAClH,CAAC;AAAA,EACH;AAIe,WAAR,gBAAiC,SAAS,UAAU,cAAc,UAAU;AACjF,QAAI,sBAAsB,aAAa,oBAAoB,mBAAmB,OAAO,IAAI,CAAC,EAAE,OAAO,QAAQ;AAC3G,QAAIA,mBAAkB,CAAC,EAAE,OAAO,qBAAqB,CAAC,YAAY,CAAC;AACnE,QAAI,sBAAsBA,iBAAgB,CAAC;AAC3C,QAAI,eAAeA,iBAAgB,OAAO,SAAU,SAAS,gBAAgB;AAC3E,UAAI,OAAO,2BAA2B,SAAS,gBAAgB,QAAQ;AACvE,cAAQ,MAAM,IAAI,KAAK,KAAK,QAAQ,GAAG;AACvC,cAAQ,QAAQ,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC7C,cAAQ,SAAS,IAAI,KAAK,QAAQ,QAAQ,MAAM;AAChD,cAAQ,OAAO,IAAI,KAAK,MAAM,QAAQ,IAAI;AAC1C,aAAO;AAAA,IACT,GAAG,2BAA2B,SAAS,qBAAqB,QAAQ,CAAC;AACrE,iBAAa,QAAQ,aAAa,QAAQ,aAAa;AACvD,iBAAa,SAAS,aAAa,SAAS,aAAa;AACzD,iBAAa,IAAI,aAAa;AAC9B,iBAAa,IAAI,aAAa;AAC9B,WAAO;AAAA,EACT;;;ACjEe,WAAR,eAAgC,MAAM;AAC3C,QAAIE,aAAY,KAAK,WACjB,UAAU,KAAK,SACf,YAAY,KAAK;AACrB,QAAI,gBAAgB,YAAY,iBAAiB,SAAS,IAAI;AAC9D,QAAI,YAAY,YAAY,aAAa,SAAS,IAAI;AACtD,QAAI,UAAUA,WAAU,IAAIA,WAAU,QAAQ,IAAI,QAAQ,QAAQ;AAClE,QAAI,UAAUA,WAAU,IAAIA,WAAU,SAAS,IAAI,QAAQ,SAAS;AACpE,QAAI;AAEJ,YAAQ,eAAe;AAAA,MACrB,KAAK;AACH,kBAAU;AAAA,UACR,GAAG;AAAA,UACH,GAAGA,WAAU,IAAI,QAAQ;AAAA,QAC3B;AACA;AAAA,MAEF,KAAK;AACH,kBAAU;AAAA,UACR,GAAG;AAAA,UACH,GAAGA,WAAU,IAAIA,WAAU;AAAA,QAC7B;AACA;AAAA,MAEF,KAAK;AACH,kBAAU;AAAA,UACR,GAAGA,WAAU,IAAIA,WAAU;AAAA,UAC3B,GAAG;AAAA,QACL;AACA;AAAA,MAEF,KAAK;AACH,kBAAU;AAAA,UACR,GAAGA,WAAU,IAAI,QAAQ;AAAA,UACzB,GAAG;AAAA,QACL;AACA;AAAA,MAEF;AACE,kBAAU;AAAA,UACR,GAAGA,WAAU;AAAA,UACb,GAAGA,WAAU;AAAA,QACf;AAAA,IACJ;AAEA,QAAI,WAAW,gBAAgB,yBAAyB,aAAa,IAAI;AAEzE,QAAI,YAAY,MAAM;AACpB,UAAI,MAAM,aAAa,MAAM,WAAW;AAExC,cAAQ,WAAW;AAAA,QACjB,KAAKC;AACH,kBAAQ,QAAQ,IAAI,QAAQ,QAAQ,KAAKD,WAAU,GAAG,IAAI,IAAI,QAAQ,GAAG,IAAI;AAC7E;AAAA,QAEF,KAAK;AACH,kBAAQ,QAAQ,IAAI,QAAQ,QAAQ,KAAKA,WAAU,GAAG,IAAI,IAAI,QAAQ,GAAG,IAAI;AAC7E;AAAA,QAEF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;;;AC3De,WAAR,eAAgC,OAAOE,UAAS;AACrD,QAAIA,aAAY,QAAQ;AACtB,MAAAA,WAAU,CAAC;AAAA,IACb;AAEA,QAAI,WAAWA,UACX,qBAAqB,SAAS,WAC9B,YAAY,uBAAuB,SAAS,MAAM,YAAY,oBAC9D,oBAAoB,SAAS,UAC7B,WAAW,sBAAsB,SAAS,MAAM,WAAW,mBAC3D,oBAAoB,SAAS,UAC7B,WAAW,sBAAsB,SAAS,kBAAkB,mBAC5D,wBAAwB,SAAS,cACjC,eAAe,0BAA0B,SAAS,WAAW,uBAC7D,wBAAwB,SAAS,gBACjC,iBAAiB,0BAA0B,SAAS,SAAS,uBAC7D,uBAAuB,SAAS,aAChC,cAAc,yBAAyB,SAAS,QAAQ,sBACxD,mBAAmB,SAAS,SAC5B,UAAU,qBAAqB,SAAS,IAAI;AAChD,QAAI,gBAAgB,mBAAmB,OAAO,YAAY,WAAW,UAAU,gBAAgB,SAAS,cAAc,CAAC;AACvH,QAAI,aAAa,mBAAmB,SAAS,YAAY;AACzD,QAAI,aAAa,MAAM,MAAM;AAC7B,QAAI,UAAU,MAAM,SAAS,cAAc,aAAa,cAAc;AACtE,QAAI,qBAAqB,gBAAgB,UAAU,OAAO,IAAI,UAAU,QAAQ,kBAAkB,mBAAmB,MAAM,SAAS,MAAM,GAAG,UAAU,cAAc,QAAQ;AAC7K,QAAI,sBAAsB,sBAAsB,MAAM,SAAS,SAAS;AACxE,QAAIC,iBAAgB,eAAe;AAAA,MACjC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,UAAU;AAAA,MACV;AAAA,IACF,CAAC;AACD,QAAI,mBAAmB,iBAAiB,OAAO,OAAO,CAAC,GAAG,YAAYA,cAAa,CAAC;AACpF,QAAI,oBAAoB,mBAAmB,SAAS,mBAAmB;AAGvE,QAAI,kBAAkB;AAAA,MACpB,KAAK,mBAAmB,MAAM,kBAAkB,MAAM,cAAc;AAAA,MACpE,QAAQ,kBAAkB,SAAS,mBAAmB,SAAS,cAAc;AAAA,MAC7E,MAAM,mBAAmB,OAAO,kBAAkB,OAAO,cAAc;AAAA,MACvE,OAAO,kBAAkB,QAAQ,mBAAmB,QAAQ,cAAc;AAAA,IAC5E;AACA,QAAI,aAAa,MAAM,cAAc;AAErC,QAAI,mBAAmB,UAAU,YAAY;AAC3C,UAAIC,UAAS,WAAW,SAAS;AACjC,aAAO,KAAK,eAAe,EAAE,QAAQ,SAAUC,MAAK;AAClD,YAAI,WAAW,CAAC,OAAO,MAAM,EAAE,QAAQA,IAAG,KAAK,IAAI,IAAI;AACvD,YAAI,OAAO,CAAC,KAAK,MAAM,EAAE,QAAQA,IAAG,KAAK,IAAI,MAAM;AACnD,wBAAgBA,IAAG,KAAKD,QAAO,IAAI,IAAI;AAAA,MACzC,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;;;AC5De,WAAR,qBAAsC,OAAOE,UAAS;AAC3D,QAAIA,aAAY,QAAQ;AACtB,MAAAA,WAAU,CAAC;AAAA,IACb;AAEA,QAAI,WAAWA,UACX,YAAY,SAAS,WACrB,WAAW,SAAS,UACpB,eAAe,SAAS,cACxB,UAAU,SAAS,SACnB,iBAAiB,SAAS,gBAC1B,wBAAwB,SAAS,uBACjC,wBAAwB,0BAA0B,SAAS,aAAgB;AAC/E,QAAI,YAAY,aAAa,SAAS;AACtC,QAAIC,cAAa,YAAY,iBAAiB,sBAAsB,oBAAoB,OAAO,SAAUC,YAAW;AAClH,aAAO,aAAaA,UAAS,MAAM;AAAA,IACrC,CAAC,IAAI;AACL,QAAI,oBAAoBD,YAAW,OAAO,SAAUC,YAAW;AAC7D,aAAO,sBAAsB,QAAQA,UAAS,KAAK;AAAA,IACrD,CAAC;AAED,QAAI,kBAAkB,WAAW,GAAG;AAClC,0BAAoBD;AAAA,IACtB;AAGA,QAAI,YAAY,kBAAkB,OAAO,SAAU,KAAKC,YAAW;AACjE,UAAIA,UAAS,IAAI,eAAe,OAAO;AAAA,QACrC,WAAWA;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EAAE,iBAAiBA,UAAS,CAAC;AAC9B,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AACL,WAAO,OAAO,KAAK,SAAS,EAAE,KAAK,SAAUC,IAAGC,IAAG;AACjD,aAAO,UAAUD,EAAC,IAAI,UAAUC,EAAC;AAAA,IACnC,CAAC;AAAA,EACH;;;AClCA,WAAS,8BAA8B,WAAW;AAChD,QAAI,iBAAiB,SAAS,MAAM,MAAM;AACxC,aAAO,CAAC;AAAA,IACV;AAEA,QAAI,oBAAoB,qBAAqB,SAAS;AACtD,WAAO,CAAC,8BAA8B,SAAS,GAAG,mBAAmB,8BAA8B,iBAAiB,CAAC;AAAA,EACvH;AAEA,WAAS,KAAK,MAAM;AAClB,QAAI,QAAQ,KAAK,OACbC,WAAU,KAAK,SACfC,QAAO,KAAK;AAEhB,QAAI,MAAM,cAAcA,KAAI,EAAE,OAAO;AACnC;AAAA,IACF;AAEA,QAAI,oBAAoBD,SAAQ,UAC5B,gBAAgB,sBAAsB,SAAS,OAAO,mBACtD,mBAAmBA,SAAQ,SAC3B,eAAe,qBAAqB,SAAS,OAAO,kBACpD,8BAA8BA,SAAQ,oBACtC,UAAUA,SAAQ,SAClB,WAAWA,SAAQ,UACnB,eAAeA,SAAQ,cACvB,cAAcA,SAAQ,aACtB,wBAAwBA,SAAQ,gBAChC,iBAAiB,0BAA0B,SAAS,OAAO,uBAC3D,wBAAwBA,SAAQ;AACpC,QAAI,qBAAqB,MAAM,QAAQ;AACvC,QAAI,gBAAgB,iBAAiB,kBAAkB;AACvD,QAAI,kBAAkB,kBAAkB;AACxC,QAAI,qBAAqB,gCAAgC,mBAAmB,CAAC,iBAAiB,CAAC,qBAAqB,kBAAkB,CAAC,IAAI,8BAA8B,kBAAkB;AAC3L,QAAIE,cAAa,CAAC,kBAAkB,EAAE,OAAO,kBAAkB,EAAE,OAAO,SAAU,KAAKC,YAAW;AAChG,aAAO,IAAI,OAAO,iBAAiBA,UAAS,MAAM,OAAO,qBAAqB,OAAO;AAAA,QACnF,WAAWA;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,IAAIA,UAAS;AAAA,IAChB,GAAG,CAAC,CAAC;AACL,QAAI,gBAAgB,MAAM,MAAM;AAChC,QAAI,aAAa,MAAM,MAAM;AAC7B,QAAI,YAAY,oBAAI,IAAI;AACxB,QAAI,qBAAqB;AACzB,QAAI,wBAAwBD,YAAW,CAAC;AAExC,aAASE,KAAI,GAAGA,KAAIF,YAAW,QAAQE,MAAK;AAC1C,UAAI,YAAYF,YAAWE,EAAC;AAE5B,UAAI,iBAAiB,iBAAiB,SAAS;AAE/C,UAAI,mBAAmB,aAAa,SAAS,MAAMC;AACnD,UAAI,aAAa,CAAC,KAAK,MAAM,EAAE,QAAQ,cAAc,KAAK;AAC1D,UAAI,MAAM,aAAa,UAAU;AACjC,UAAI,WAAW,eAAe,OAAO;AAAA,QACnC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AACD,UAAI,oBAAoB,aAAa,mBAAmB,QAAQ,OAAO,mBAAmB,SAAS;AAEnG,UAAI,cAAc,GAAG,IAAI,WAAW,GAAG,GAAG;AACxC,4BAAoB,qBAAqB,iBAAiB;AAAA,MAC5D;AAEA,UAAI,mBAAmB,qBAAqB,iBAAiB;AAC7D,UAAI,SAAS,CAAC;AAEd,UAAI,eAAe;AACjB,eAAO,KAAK,SAAS,cAAc,KAAK,CAAC;AAAA,MAC3C;AAEA,UAAI,cAAc;AAChB,eAAO,KAAK,SAAS,iBAAiB,KAAK,GAAG,SAAS,gBAAgB,KAAK,CAAC;AAAA,MAC/E;AAEA,UAAI,OAAO,MAAM,SAAU,OAAO;AAChC,eAAO;AAAA,MACT,CAAC,GAAG;AACF,gCAAwB;AACxB,6BAAqB;AACrB;AAAA,MACF;AAEA,gBAAU,IAAI,WAAW,MAAM;AAAA,IACjC;AAEA,QAAI,oBAAoB;AAEtB,UAAI,iBAAiB,iBAAiB,IAAI;AAE1C,UAAI,QAAQ,SAASC,OAAMC,KAAI;AAC7B,YAAI,mBAAmBL,YAAW,KAAK,SAAUC,YAAW;AAC1D,cAAIK,UAAS,UAAU,IAAIL,UAAS;AAEpC,cAAIK,SAAQ;AACV,mBAAOA,QAAO,MAAM,GAAGD,GAAE,EAAE,MAAM,SAAU,OAAO;AAChD,qBAAO;AAAA,YACT,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAED,YAAI,kBAAkB;AACpB,kCAAwB;AACxB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,eAAS,KAAK,gBAAgB,KAAK,GAAG,MAAM;AAC1C,YAAI,OAAO,MAAM,EAAE;AAEnB,YAAI,SAAS;AAAS;AAAA,MACxB;AAAA,IACF;AAEA,QAAI,MAAM,cAAc,uBAAuB;AAC7C,YAAM,cAAcN,KAAI,EAAE,QAAQ;AAClC,YAAM,YAAY;AAClB,YAAM,QAAQ;AAAA,IAChB;AAAA,EACF;AAGA,MAAO,eAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,kBAAkB,CAAC,QAAQ;AAAA,IAC3B,MAAM;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,EACF;;;AC/IA,WAAS,eAAe,UAAU,MAAM,kBAAkB;AACxD,QAAI,qBAAqB,QAAQ;AAC/B,yBAAmB;AAAA,QACjB,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAEA,WAAO;AAAA,MACL,KAAK,SAAS,MAAM,KAAK,SAAS,iBAAiB;AAAA,MACnD,OAAO,SAAS,QAAQ,KAAK,QAAQ,iBAAiB;AAAA,MACtD,QAAQ,SAAS,SAAS,KAAK,SAAS,iBAAiB;AAAA,MACzD,MAAM,SAAS,OAAO,KAAK,QAAQ,iBAAiB;AAAA,IACtD;AAAA,EACF;AAEA,WAAS,sBAAsB,UAAU;AACvC,WAAO,CAAC,KAAK,OAAO,QAAQ,IAAI,EAAE,KAAK,SAAU,MAAM;AACrD,aAAO,SAAS,IAAI,KAAK;AAAA,IAC3B,CAAC;AAAA,EACH;AAEA,WAAS,KAAK,MAAM;AAClB,QAAI,QAAQ,KAAK,OACbQ,QAAO,KAAK;AAChB,QAAI,gBAAgB,MAAM,MAAM;AAChC,QAAI,aAAa,MAAM,MAAM;AAC7B,QAAI,mBAAmB,MAAM,cAAc;AAC3C,QAAI,oBAAoB,eAAe,OAAO;AAAA,MAC5C,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,oBAAoB,eAAe,OAAO;AAAA,MAC5C,aAAa;AAAA,IACf,CAAC;AACD,QAAI,2BAA2B,eAAe,mBAAmB,aAAa;AAC9E,QAAI,sBAAsB,eAAe,mBAAmB,YAAY,gBAAgB;AACxF,QAAI,oBAAoB,sBAAsB,wBAAwB;AACtE,QAAI,mBAAmB,sBAAsB,mBAAmB;AAChE,UAAM,cAAcA,KAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,UAAM,WAAW,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM,WAAW,QAAQ;AAAA,MACnE,gCAAgC;AAAA,MAChC,uBAAuB;AAAA,IACzB,CAAC;AAAA,EACH;AAGA,MAAO,eAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,kBAAkB,CAAC,iBAAiB;AAAA,IACpC,IAAI;AAAA,EACN;;;ACzDO,WAAS,wBAAwB,WAAW,OAAOC,SAAQ;AAChE,QAAI,gBAAgB,iBAAiB,SAAS;AAC9C,QAAI,iBAAiB,CAAC,MAAM,GAAG,EAAE,QAAQ,aAAa,KAAK,IAAI,KAAK;AAEpE,QAAI,OAAO,OAAOA,YAAW,aAAaA,QAAO,OAAO,OAAO,CAAC,GAAG,OAAO;AAAA,MACxE;AAAA,IACF,CAAC,CAAC,IAAIA,SACF,WAAW,KAAK,CAAC,GACjB,WAAW,KAAK,CAAC;AAErB,eAAW,YAAY;AACvB,gBAAY,YAAY,KAAK;AAC7B,WAAO,CAAC,MAAM,KAAK,EAAE,QAAQ,aAAa,KAAK,IAAI;AAAA,MACjD,GAAG;AAAA,MACH,GAAG;AAAA,IACL,IAAI;AAAA,MACF,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AAEA,WAAS,OAAO,OAAO;AACrB,QAAI,QAAQ,MAAM,OACdC,WAAU,MAAM,SAChBC,QAAO,MAAM;AACjB,QAAI,kBAAkBD,SAAQ,QAC1BD,UAAS,oBAAoB,SAAS,CAAC,GAAG,CAAC,IAAI;AACnD,QAAIG,QAAO,WAAW,OAAO,SAAU,KAAK,WAAW;AACrD,UAAI,SAAS,IAAI,wBAAwB,WAAW,MAAM,OAAOH,OAAM;AACvE,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AACL,QAAI,wBAAwBG,MAAK,MAAM,SAAS,GAC5CC,KAAI,sBAAsB,GAC1BC,KAAI,sBAAsB;AAE9B,QAAI,MAAM,cAAc,iBAAiB,MAAM;AAC7C,YAAM,cAAc,cAAc,KAAKD;AACvC,YAAM,cAAc,cAAc,KAAKC;AAAA,IACzC;AAEA,UAAM,cAAcH,KAAI,IAAIC;AAAA,EAC9B;AAGA,MAAO,iBAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU,CAAC,eAAe;AAAA,IAC1B,IAAI;AAAA,EACN;;;ACnDA,WAAS,cAAc,MAAM;AAC3B,QAAI,QAAQ,KAAK,OACbG,QAAO,KAAK;AAKhB,UAAM,cAAcA,KAAI,IAAI,eAAe;AAAA,MACzC,WAAW,MAAM,MAAM;AAAA,MACvB,SAAS,MAAM,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW,MAAM;AAAA,IACnB,CAAC;AAAA,EACH;AAGA,MAAO,wBAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,MAAM,CAAC;AAAA,EACT;;;ACxBe,WAAR,WAA4B,MAAM;AACvC,WAAO,SAAS,MAAM,MAAM;AAAA,EAC9B;;;ACUA,WAAS,gBAAgB,MAAM;AAC7B,QAAI,QAAQ,KAAK,OACbC,WAAU,KAAK,SACfC,QAAO,KAAK;AAChB,QAAI,oBAAoBD,SAAQ,UAC5B,gBAAgB,sBAAsB,SAAS,OAAO,mBACtD,mBAAmBA,SAAQ,SAC3B,eAAe,qBAAqB,SAAS,QAAQ,kBACrD,WAAWA,SAAQ,UACnB,eAAeA,SAAQ,cACvB,cAAcA,SAAQ,aACtB,UAAUA,SAAQ,SAClB,kBAAkBA,SAAQ,QAC1B,SAAS,oBAAoB,SAAS,OAAO,iBAC7C,wBAAwBA,SAAQ,cAChC,eAAe,0BAA0B,SAAS,IAAI;AAC1D,QAAI,WAAW,eAAe,OAAO;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,QAAI,gBAAgB,iBAAiB,MAAM,SAAS;AACpD,QAAI,YAAY,aAAa,MAAM,SAAS;AAC5C,QAAI,kBAAkB,CAAC;AACvB,QAAI,WAAW,yBAAyB,aAAa;AACrD,QAAI,UAAU,WAAW,QAAQ;AACjC,QAAIE,iBAAgB,MAAM,cAAc;AACxC,QAAI,gBAAgB,MAAM,MAAM;AAChC,QAAI,aAAa,MAAM,MAAM;AAC7B,QAAI,oBAAoB,OAAO,iBAAiB,aAAa,aAAa,OAAO,OAAO,CAAC,GAAG,MAAM,OAAO;AAAA,MACvG,WAAW,MAAM;AAAA,IACnB,CAAC,CAAC,IAAI;AACN,QAAI,8BAA8B,OAAO,sBAAsB,WAAW;AAAA,MACxE,UAAU;AAAA,MACV,SAAS;AAAA,IACX,IAAI,OAAO,OAAO;AAAA,MAChB,UAAU;AAAA,MACV,SAAS;AAAA,IACX,GAAG,iBAAiB;AACpB,QAAI,sBAAsB,MAAM,cAAc,SAAS,MAAM,cAAc,OAAO,MAAM,SAAS,IAAI;AACrG,QAAIC,QAAO;AAAA,MACT,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,QAAI,CAACD,gBAAe;AAClB;AAAA,IACF;AAEA,QAAI,eAAe;AACjB,UAAI;AAEJ,UAAI,WAAW,aAAa,MAAM,MAAM;AACxC,UAAI,UAAU,aAAa,MAAM,SAAS;AAC1C,UAAI,MAAM,aAAa,MAAM,WAAW;AACxC,UAAIE,UAASF,eAAc,QAAQ;AACnC,UAAIG,OAAMD,UAAS,SAAS,QAAQ;AACpC,UAAIE,OAAMF,UAAS,SAAS,OAAO;AACnC,UAAI,WAAW,SAAS,CAAC,WAAW,GAAG,IAAI,IAAI;AAC/C,UAAI,SAAS,cAAcG,SAAQ,cAAc,GAAG,IAAI,WAAW,GAAG;AACtE,UAAI,SAAS,cAAcA,SAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,GAAG;AAGxE,UAAI,eAAe,MAAM,SAAS;AAClC,UAAI,YAAY,UAAU,eAAe,cAAc,YAAY,IAAI;AAAA,QACrE,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AACA,UAAI,qBAAqB,MAAM,cAAc,kBAAkB,IAAI,MAAM,cAAc,kBAAkB,EAAE,UAAU,mBAAmB;AACxI,UAAI,kBAAkB,mBAAmB,QAAQ;AACjD,UAAI,kBAAkB,mBAAmB,OAAO;AAMhD,UAAI,WAAW,OAAO,GAAG,cAAc,GAAG,GAAG,UAAU,GAAG,CAAC;AAC3D,UAAI,YAAY,kBAAkB,cAAc,GAAG,IAAI,IAAI,WAAW,WAAW,kBAAkB,4BAA4B,WAAW,SAAS,WAAW,kBAAkB,4BAA4B;AAC5M,UAAI,YAAY,kBAAkB,CAAC,cAAc,GAAG,IAAI,IAAI,WAAW,WAAW,kBAAkB,4BAA4B,WAAW,SAAS,WAAW,kBAAkB,4BAA4B;AAC7M,UAAI,oBAAoB,MAAM,SAAS,SAAS,gBAAgB,MAAM,SAAS,KAAK;AACpF,UAAI,eAAe,oBAAoB,aAAa,MAAM,kBAAkB,aAAa,IAAI,kBAAkB,cAAc,IAAI;AACjI,UAAI,uBAAuB,wBAAwB,uBAAuB,OAAO,SAAS,oBAAoB,QAAQ,MAAM,OAAO,wBAAwB;AAC3J,UAAI,YAAYH,UAAS,YAAY,sBAAsB;AAC3D,UAAI,YAAYA,UAAS,YAAY;AACrC,UAAI,kBAAkB,OAAO,SAAS,IAAQC,MAAK,SAAS,IAAIA,MAAKD,SAAQ,SAAS,IAAQE,MAAK,SAAS,IAAIA,IAAG;AACnH,MAAAJ,eAAc,QAAQ,IAAI;AAC1B,MAAAC,MAAK,QAAQ,IAAI,kBAAkBC;AAAA,IACrC;AAEA,QAAI,cAAc;AAChB,UAAI;AAEJ,UAAI,YAAY,aAAa,MAAM,MAAM;AAEzC,UAAI,WAAW,aAAa,MAAM,SAAS;AAE3C,UAAI,UAAUF,eAAc,OAAO;AAEnC,UAAI,OAAO,YAAY,MAAM,WAAW;AAExC,UAAI,OAAO,UAAU,SAAS,SAAS;AAEvC,UAAI,OAAO,UAAU,SAAS,QAAQ;AAEtC,UAAI,eAAe,CAAC,KAAK,IAAI,EAAE,QAAQ,aAAa,MAAM;AAE1D,UAAI,wBAAwB,yBAAyB,uBAAuB,OAAO,SAAS,oBAAoB,OAAO,MAAM,OAAO,yBAAyB;AAE7J,UAAI,aAAa,eAAe,OAAO,UAAU,cAAc,IAAI,IAAI,WAAW,IAAI,IAAI,uBAAuB,4BAA4B;AAE7I,UAAI,aAAa,eAAe,UAAU,cAAc,IAAI,IAAI,WAAW,IAAI,IAAI,uBAAuB,4BAA4B,UAAU;AAEhJ,UAAI,mBAAmB,UAAU,eAAe,eAAe,YAAY,SAAS,UAAU,IAAI,OAAO,SAAS,aAAa,MAAM,SAAS,SAAS,aAAa,IAAI;AAExK,MAAAA,eAAc,OAAO,IAAI;AACzB,MAAAC,MAAK,OAAO,IAAI,mBAAmB;AAAA,IACrC;AAEA,UAAM,cAAcF,KAAI,IAAIE;AAAA,EAC9B;AAGA,MAAO,0BAAQ;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,kBAAkB,CAAC,QAAQ;AAAA,EAC7B;;;AC7Ie,WAAR,qBAAsC,SAAS;AACpD,WAAO;AAAA,MACL,YAAY,QAAQ;AAAA,MACpB,WAAW,QAAQ;AAAA,IACrB;AAAA,EACF;;;ACDe,WAAR,cAA+B,MAAM;AAC1C,QAAI,SAAS,UAAU,IAAI,KAAK,CAAC,cAAc,IAAI,GAAG;AACpD,aAAO,gBAAgB,IAAI;AAAA,IAC7B,OAAO;AACL,aAAO,qBAAqB,IAAI;AAAA,IAClC;AAAA,EACF;;;ACDA,WAAS,gBAAgB,SAAS;AAChC,QAAI,OAAO,QAAQ,sBAAsB;AACzC,QAAI,SAASK,OAAM,KAAK,KAAK,IAAI,QAAQ,eAAe;AACxD,QAAI,SAASA,OAAM,KAAK,MAAM,IAAI,QAAQ,gBAAgB;AAC1D,WAAO,WAAW,KAAK,WAAW;AAAA,EACpC;AAIe,WAAR,iBAAkC,yBAAyB,cAAc,SAAS;AACvF,QAAI,YAAY,QAAQ;AACtB,gBAAU;AAAA,IACZ;AAEA,QAAI,0BAA0B,cAAc,YAAY;AACxD,QAAI,uBAAuB,cAAc,YAAY,KAAK,gBAAgB,YAAY;AACtF,QAAI,kBAAkB,mBAAmB,YAAY;AACrD,QAAI,OAAO,sBAAsB,yBAAyB,sBAAsB,OAAO;AACvF,QAAI,SAAS;AAAA,MACX,YAAY;AAAA,MACZ,WAAW;AAAA,IACb;AACA,QAAI,UAAU;AAAA,MACZ,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,QAAI,2BAA2B,CAAC,2BAA2B,CAAC,SAAS;AACnE,UAAI,YAAY,YAAY,MAAM;AAAA,MAClC,eAAe,eAAe,GAAG;AAC/B,iBAAS,cAAc,YAAY;AAAA,MACrC;AAEA,UAAI,cAAc,YAAY,GAAG;AAC/B,kBAAU,sBAAsB,cAAc,IAAI;AAClD,gBAAQ,KAAK,aAAa;AAC1B,gBAAQ,KAAK,aAAa;AAAA,MAC5B,WAAW,iBAAiB;AAC1B,gBAAQ,IAAI,oBAAoB,eAAe;AAAA,MACjD;AAAA,IACF;AAEA,WAAO;AAAA,MACL,GAAG,KAAK,OAAO,OAAO,aAAa,QAAQ;AAAA,MAC3C,GAAG,KAAK,MAAM,OAAO,YAAY,QAAQ;AAAA,MACzC,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,IACf;AAAA,EACF;;;ACvDA,WAAS,MAAM,WAAW;AACxB,QAAIC,OAAM,oBAAI,IAAI;AAClB,QAAI,UAAU,oBAAI,IAAI;AACtB,QAAI,SAAS,CAAC;AACd,cAAU,QAAQ,SAAU,UAAU;AACpC,MAAAA,KAAI,IAAI,SAAS,MAAM,QAAQ;AAAA,IACjC,CAAC;AAED,aAASC,MAAK,UAAU;AACtB,cAAQ,IAAI,SAAS,IAAI;AACzB,UAAI,WAAW,CAAC,EAAE,OAAO,SAAS,YAAY,CAAC,GAAG,SAAS,oBAAoB,CAAC,CAAC;AACjF,eAAS,QAAQ,SAAU,KAAK;AAC9B,YAAI,CAAC,QAAQ,IAAI,GAAG,GAAG;AACrB,cAAI,cAAcD,KAAI,IAAI,GAAG;AAE7B,cAAI,aAAa;AACf,YAAAC,MAAK,WAAW;AAAA,UAClB;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO,KAAK,QAAQ;AAAA,IACtB;AAEA,cAAU,QAAQ,SAAU,UAAU;AACpC,UAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,GAAG;AAE/B,QAAAA,MAAK,QAAQ;AAAA,MACf;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAEe,WAAR,eAAgC,WAAW;AAEhD,QAAI,mBAAmB,MAAM,SAAS;AAEtC,WAAO,eAAe,OAAO,SAAU,KAAK,OAAO;AACjD,aAAO,IAAI,OAAO,iBAAiB,OAAO,SAAU,UAAU;AAC5D,eAAO,SAAS,UAAU;AAAA,MAC5B,CAAC,CAAC;AAAA,IACJ,GAAG,CAAC,CAAC;AAAA,EACP;;;AC3Ce,WAARC,UAA0BC,KAAI;AACnC,QAAI;AACJ,WAAO,WAAY;AACjB,UAAI,CAAC,SAAS;AACZ,kBAAU,IAAI,QAAQ,SAAUC,UAAS;AACvC,kBAAQ,QAAQ,EAAE,KAAK,WAAY;AACjC,sBAAU;AACV,YAAAA,SAAQD,IAAG,CAAC;AAAA,UACd,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAAA,EACF;;;ACde,WAAR,YAA6B,WAAW;AAC7C,QAAI,SAAS,UAAU,OAAO,SAAUE,SAAQ,SAAS;AACvD,UAAI,WAAWA,QAAO,QAAQ,IAAI;AAClC,MAAAA,QAAO,QAAQ,IAAI,IAAI,WAAW,OAAO,OAAO,CAAC,GAAG,UAAU,SAAS;AAAA,QACrE,SAAS,OAAO,OAAO,CAAC,GAAG,SAAS,SAAS,QAAQ,OAAO;AAAA,QAC5D,MAAM,OAAO,OAAO,CAAC,GAAG,SAAS,MAAM,QAAQ,IAAI;AAAA,MACrD,CAAC,IAAI;AACL,aAAOA;AAAA,IACT,GAAG,CAAC,CAAC;AAEL,WAAO,OAAO,KAAK,MAAM,EAAE,IAAI,SAAUC,MAAK;AAC5C,aAAO,OAAOA,IAAG;AAAA,IACnB,CAAC;AAAA,EACH;;;ACJA,MAAI,kBAAkB;AAAA,IACpB,WAAW;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,UAAU;AAAA,EACZ;AAEA,WAAS,mBAAmB;AAC1B,aAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,WAAK,IAAI,IAAI,UAAU,IAAI;AAAA,IAC7B;AAEA,WAAO,CAAC,KAAK,KAAK,SAAU,SAAS;AACnC,aAAO,EAAE,WAAW,OAAO,QAAQ,0BAA0B;AAAA,IAC/D,CAAC;AAAA,EACH;AAEO,WAAS,gBAAgB,kBAAkB;AAChD,QAAI,qBAAqB,QAAQ;AAC/B,yBAAmB,CAAC;AAAA,IACtB;AAEA,QAAI,oBAAoB,kBACpB,wBAAwB,kBAAkB,kBAC1CC,oBAAmB,0BAA0B,SAAS,CAAC,IAAI,uBAC3D,yBAAyB,kBAAkB,gBAC3CC,kBAAiB,2BAA2B,SAAS,kBAAkB;AAC3E,WAAO,SAASC,cAAaC,YAAWC,SAAQC,UAAS;AACvD,UAAIA,aAAY,QAAQ;AACtB,QAAAA,WAAUJ;AAAA,MACZ;AAEA,UAAI,QAAQ;AAAA,QACV,WAAW;AAAA,QACX,kBAAkB,CAAC;AAAA,QACnB,SAAS,OAAO,OAAO,CAAC,GAAG,iBAAiBA,eAAc;AAAA,QAC1D,eAAe,CAAC;AAAA,QAChB,UAAU;AAAA,UACR,WAAWE;AAAA,UACX,QAAQC;AAAA,QACV;AAAA,QACA,YAAY,CAAC;AAAA,QACb,QAAQ,CAAC;AAAA,MACX;AACA,UAAI,mBAAmB,CAAC;AACxB,UAAI,cAAc;AAClB,UAAI,WAAW;AAAA,QACb;AAAA,QACA,YAAY,SAAS,WAAW,kBAAkB;AAChD,cAAIC,WAAU,OAAO,qBAAqB,aAAa,iBAAiB,MAAM,OAAO,IAAI;AACzF,iCAAuB;AACvB,gBAAM,UAAU,OAAO,OAAO,CAAC,GAAGJ,iBAAgB,MAAM,SAASI,QAAO;AACxE,gBAAM,gBAAgB;AAAA,YACpB,WAAW,UAAUF,UAAS,IAAI,kBAAkBA,UAAS,IAAIA,WAAU,iBAAiB,kBAAkBA,WAAU,cAAc,IAAI,CAAC;AAAA,YAC3I,QAAQ,kBAAkBC,OAAM;AAAA,UAClC;AAGA,cAAI,mBAAmB,eAAe,YAAY,CAAC,EAAE,OAAOJ,mBAAkB,MAAM,QAAQ,SAAS,CAAC,CAAC;AAEvG,gBAAM,mBAAmB,iBAAiB,OAAO,SAAUM,IAAG;AAC5D,mBAAOA,GAAE;AAAA,UACX,CAAC;AACD,6BAAmB;AACnB,iBAAO,SAAS,OAAO;AAAA,QACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,aAAa,SAAS,cAAc;AAClC,cAAI,aAAa;AACf;AAAA,UACF;AAEA,cAAI,kBAAkB,MAAM,UACxBH,aAAY,gBAAgB,WAC5BC,UAAS,gBAAgB;AAG7B,cAAI,CAAC,iBAAiBD,YAAWC,OAAM,GAAG;AACxC;AAAA,UACF;AAGA,gBAAM,QAAQ;AAAA,YACZ,WAAW,iBAAiBD,YAAW,gBAAgBC,OAAM,GAAG,MAAM,QAAQ,aAAa,OAAO;AAAA,YAClG,QAAQ,cAAcA,OAAM;AAAA,UAC9B;AAMA,gBAAM,QAAQ;AACd,gBAAM,YAAY,MAAM,QAAQ;AAKhC,gBAAM,iBAAiB,QAAQ,SAAU,UAAU;AACjD,mBAAO,MAAM,cAAc,SAAS,IAAI,IAAI,OAAO,OAAO,CAAC,GAAG,SAAS,IAAI;AAAA,UAC7E,CAAC;AAED,mBAASG,SAAQ,GAAGA,SAAQ,MAAM,iBAAiB,QAAQA,UAAS;AAClE,gBAAI,MAAM,UAAU,MAAM;AACxB,oBAAM,QAAQ;AACd,cAAAA,SAAQ;AACR;AAAA,YACF;AAEA,gBAAI,wBAAwB,MAAM,iBAAiBA,MAAK,GACpDC,MAAK,sBAAsB,IAC3B,yBAAyB,sBAAsB,SAC/C,WAAW,2BAA2B,SAAS,CAAC,IAAI,wBACpDC,QAAO,sBAAsB;AAEjC,gBAAI,OAAOD,QAAO,YAAY;AAC5B,sBAAQA,IAAG;AAAA,gBACT;AAAA,gBACA,SAAS;AAAA,gBACT,MAAMC;AAAA,gBACN;AAAA,cACF,CAAC,KAAK;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA;AAAA;AAAA,QAGA,QAAQC,UAAS,WAAY;AAC3B,iBAAO,IAAI,QAAQ,SAAUC,UAAS;AACpC,qBAAS,YAAY;AACrB,YAAAA,SAAQ,KAAK;AAAA,UACf,CAAC;AAAA,QACH,CAAC;AAAA,QACD,SAAS,SAASC,WAAU;AAC1B,iCAAuB;AACvB,wBAAc;AAAA,QAChB;AAAA,MACF;AAEA,UAAI,CAAC,iBAAiBT,YAAWC,OAAM,GAAG;AACxC,eAAO;AAAA,MACT;AAEA,eAAS,WAAWC,QAAO,EAAE,KAAK,SAAUQ,QAAO;AACjD,YAAI,CAAC,eAAeR,SAAQ,eAAe;AACzC,UAAAA,SAAQ,cAAcQ,MAAK;AAAA,QAC7B;AAAA,MACF,CAAC;AAMD,eAAS,qBAAqB;AAC5B,cAAM,iBAAiB,QAAQ,SAAU,MAAM;AAC7C,cAAIJ,QAAO,KAAK,MACZ,eAAe,KAAK,SACpBJ,WAAU,iBAAiB,SAAS,CAAC,IAAI,cACzCS,UAAS,KAAK;AAElB,cAAI,OAAOA,YAAW,YAAY;AAChC,gBAAI,YAAYA,QAAO;AAAA,cACrB;AAAA,cACA,MAAML;AAAA,cACN;AAAA,cACA,SAASJ;AAAA,YACX,CAAC;AAED,gBAAI,SAAS,SAASU,UAAS;AAAA,YAAC;AAEhC,6BAAiB,KAAK,aAAa,MAAM;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA,MACH;AAEA,eAAS,yBAAyB;AAChC,yBAAiB,QAAQ,SAAUP,KAAI;AACrC,iBAAOA,IAAG;AAAA,QACZ,CAAC;AACD,2BAAmB,CAAC;AAAA,MACtB;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACO,MAAI,eAA4B,gCAAgB;;;AC/LvD,MAAI,mBAAmB,CAAC,wBAAgB,uBAAe,uBAAe,mBAAW;AACjF,MAAIQ,gBAA4B,gCAAgB;AAAA,IAC9C;AAAA,EACF,CAAC;;;ACED,MAAIC,oBAAmB,CAAC,wBAAgB,uBAAe,uBAAe,qBAAa,gBAAQ,cAAM,yBAAiB,eAAO,YAAI;AAC7H,MAAIC,gBAA4B,gCAAgB;AAAA,IAC9C,kBAAkBD;AAAA,EACpB,CAAC;;;ACND,MAAME,UAAU;AAChB,MAAMC,0BAA0B;AAChC,MAAMC,iBAAiB;AAGvB,MAAMC,SAASC,YAAU;AACvB,QAAIA,WAAW,QAAQA,WAAWC,QAAW;AAC3C,aAAQ,GAAED;IACX;AAED,WAAOE,OAAOC,UAAUC,SAASC,KAAKL,MAA/B,EAAuCM,MAAM,aAA7C,EAA4D,CAA5D,EAA+DC,YAA/D;EACR;AAMD,MAAMC,SAASC,YAAU;AACvB,OAAG;AACDA,gBAAUC,KAAKC,MAAMD,KAAKE,OAAL,IAAgBhB,OAA3B;IACX,SAAQiB,SAASC,eAAeL,MAAxB;AAET,WAAOA;EACR;AAED,MAAMM,cAAcC,aAAW;AAC7B,QAAIC,WAAWD,QAAQE,aAAa,gBAArB;AAEf,QAAI,CAACD,YAAYA,aAAa,KAAK;AACjC,UAAIE,gBAAgBH,QAAQE,aAAa,MAArB;AAMpB,UAAI,CAACC,iBAAkB,CAACA,cAAcC,SAAS,GAAvB,KAA+B,CAACD,cAAcE,WAAW,GAAzB,GAAgC;AACtF,eAAO;MACR;AAGD,UAAIF,cAAcC,SAAS,GAAvB,KAA+B,CAACD,cAAcE,WAAW,GAAzB,GAA+B;AACjEF,wBAAiB,IAAGA,cAAcG,MAAM,GAApB,EAAyB,CAAzB;MACrB;AAEDL,iBAAWE,iBAAiBA,kBAAkB,MAAMA,cAAcI,KAAd,IAAuB;IAC5E;AAED,WAAON;EACR;AAED,MAAMO,yBAAyBR,aAAW;AACxC,UAAMC,WAAWF,YAAYC,OAAD;AAE5B,QAAIC,UAAU;AACZ,aAAOJ,SAASY,cAAcR,QAAvB,IAAmCA,WAAW;IACtD;AAED,WAAO;EACR;AAED,MAAMS,yBAAyBV,aAAW;AACxC,UAAMC,WAAWF,YAAYC,OAAD;AAE5B,WAAOC,WAAWJ,SAASY,cAAcR,QAAvB,IAAmC;EACtD;AAED,MAAMU,mCAAmCX,aAAW;AAClD,QAAI,CAACA,SAAS;AACZ,aAAO;IACR;AAGD,QAAI;MAAEY;MAAoBC;IAAtB,IAA0CC,OAAOC,iBAAiBf,OAAxB;AAE9C,UAAMgB,0BAA0BC,OAAOC,WAAWN,kBAAlB;AAChC,UAAMO,uBAAuBF,OAAOC,WAAWL,eAAlB;AAG7B,QAAI,CAACG,2BAA2B,CAACG,sBAAsB;AACrD,aAAO;IACR;AAGDP,yBAAqBA,mBAAmBN,MAAM,GAAzB,EAA8B,CAA9B;AACrBO,sBAAkBA,gBAAgBP,MAAM,GAAtB,EAA2B,CAA3B;AAElB,YAAQW,OAAOC,WAAWN,kBAAlB,IAAwCK,OAAOC,WAAWL,eAAlB,KAAsChC;EACvF;AAED,MAAMuC,uBAAuBpB,aAAW;AACtCA,YAAQqB,cAAc,IAAIC,MAAMxC,cAAV,CAAtB;EACD;AAED,MAAMyC,aAAYvC,YAAU;AAC1B,QAAI,CAACA,UAAU,OAAOA,WAAW,UAAU;AACzC,aAAO;IACR;AAED,QAAI,OAAOA,OAAOwC,WAAW,aAAa;AACxCxC,eAASA,OAAO,CAAD;IAChB;AAED,WAAO,OAAOA,OAAOyC,aAAa;EACnC;AAED,MAAMC,aAAa1C,YAAU;AAE3B,QAAIuC,WAAUvC,MAAD,GAAU;AACrB,aAAOA,OAAOwC,SAASxC,OAAO,CAAD,IAAMA;IACpC;AAED,QAAI,OAAOA,WAAW,YAAYA,OAAO2C,SAAS,GAAG;AACnD,aAAO9B,SAASY,cAAczB,MAAvB;IACR;AAED,WAAO;EACR;AAED,MAAM4C,YAAY5B,aAAW;AAC3B,QAAI,CAACuB,WAAUvB,OAAD,KAAaA,QAAQ6B,eAAR,EAAyBF,WAAW,GAAG;AAChE,aAAO;IACR;AAED,UAAMG,mBAAmBf,iBAAiBf,OAAD,EAAU+B,iBAAiB,YAA3C,MAA6D;AAEtF,UAAMC,gBAAgBhC,QAAQiC,QAAQ,qBAAhB;AAEtB,QAAI,CAACD,eAAe;AAClB,aAAOF;IACR;AAED,QAAIE,kBAAkBhC,SAAS;AAC7B,YAAMkC,UAAUlC,QAAQiC,QAAQ,SAAhB;AAChB,UAAIC,WAAWA,QAAQC,eAAeH,eAAe;AACnD,eAAO;MACR;AAED,UAAIE,YAAY,MAAM;AACpB,eAAO;MACR;IACF;AAED,WAAOJ;EACR;AAED,MAAMM,aAAapC,aAAW;AAC5B,QAAI,CAACA,WAAWA,QAAQyB,aAAaY,KAAKC,cAAc;AACtD,aAAO;IACR;AAED,QAAItC,QAAQuC,UAAUC,SAAS,UAA3B,GAAwC;AAC1C,aAAO;IACR;AAED,QAAI,OAAOxC,QAAQyC,aAAa,aAAa;AAC3C,aAAOzC,QAAQyC;IAChB;AAED,WAAOzC,QAAQ0C,aAAa,UAArB,KAAoC1C,QAAQE,aAAa,UAArB,MAAqC;EACjF;AAED,MAAMyC,iBAAiB3C,aAAW;AAChC,QAAI,CAACH,SAAS+C,gBAAgBC,cAAc;AAC1C,aAAO;IACR;AAGD,QAAI,OAAO7C,QAAQ8C,gBAAgB,YAAY;AAC7C,YAAMC,QAAO/C,QAAQ8C,YAAR;AACb,aAAOC,iBAAgBC,aAAaD,QAAO;IAC5C;AAED,QAAI/C,mBAAmBgD,YAAY;AACjC,aAAOhD;IACR;AAGD,QAAI,CAACA,QAAQmC,YAAY;AACvB,aAAO;IACR;AAED,WAAOQ,eAAe3C,QAAQmC,UAAT;EACtB;AAED,MAAMc,QAAO,MAAM;EAAA;AAUnB,MAAMC,SAASlD,aAAW;AACxBA,YAAQmD;EACT;AAED,MAAMC,YAAY,MAAM;AACtB,QAAItC,OAAOuC,UAAU,CAACxD,SAASyD,KAAKZ,aAAa,mBAA3B,GAAiD;AACrE,aAAO5B,OAAOuC;IACf;AAED,WAAO;EACR;AAED,MAAME,4BAA4B,CAAA;AAElC,MAAMC,qBAAqBC,CAAAA,cAAY;AACrC,QAAI5D,SAAS6D,eAAe,WAAW;AAErC,UAAI,CAACH,0BAA0B5B,QAAQ;AACrC9B,iBAAS8D,iBAAiB,oBAAoB,MAAM;AAClD,qBAAWF,aAAYF,2BAA2B;AAChDE,YAAAA,UAAQ;UACT;SAHH;MAKD;AAEDF,gCAA0BK,KAAKH,SAA/B;IACD,OAAM;AACLA,MAAAA,UAAQ;IACT;EACF;AAED,MAAMI,QAAQ,MAAMhE,SAAS+C,gBAAgBkB,QAAQ;AAErD,MAAMC,qBAAqBC,YAAU;AACnCR,uBAAmB,MAAM;AACvB,YAAMS,KAAIb,UAAS;AAEnB,UAAIa,IAAG;AACL,cAAMC,QAAOF,OAAOG;AACpB,cAAMC,qBAAqBH,GAAEI,GAAGH,KAAL;AAC3BD,QAAAA,GAAEI,GAAGH,KAAL,IAAaF,OAAOM;AACpBL,QAAAA,GAAEI,GAAGH,KAAL,EAAWK,cAAcP;AACzBC,QAAAA,GAAEI,GAAGH,KAAL,EAAWM,aAAa,MAAM;AAC5BP,UAAAA,GAAEI,GAAGH,KAAL,IAAaE;AACb,iBAAOJ,OAAOM;;MAEjB;IACF,CAbiB;EAcnB;AAED,MAAMG,UAAUhB,CAAAA,cAAY;AAC1B,QAAI,OAAOA,cAAa,YAAY;AAClCA,MAAAA,UAAQ;IACT;EACF;AAED,MAAMiB,yBAAyB,CAACjB,WAAUkB,mBAAmBC,oBAAoB,SAAS;AACxF,QAAI,CAACA,mBAAmB;AACtBH,cAAQhB,SAAD;AACP;IACD;AAED,UAAMoB,kBAAkB;AACxB,UAAMC,mBAAmBnE,iCAAiCgE,iBAAD,IAAsBE;AAE/E,QAAIE,SAAS;AAEb,UAAMC,UAAU,CAAC;MAAEC;IAAF,MAAe;AAC9B,UAAIA,WAAWN,mBAAmB;AAChC;MACD;AAEDI,eAAS;AACTJ,wBAAkBO,oBAAoBpG,gBAAgBkG,OAAtD;AACAP,cAAQhB,SAAD;;AAGTkB,sBAAkBhB,iBAAiB7E,gBAAgBkG,OAAnD;AACAG,eAAW,MAAM;AACf,UAAI,CAACJ,QAAQ;AACX3D,6BAAqBuD,iBAAD;MACrB;OACAG,gBAJO;EAKX;AAWD,MAAMM,uBAAuB,CAACC,MAAMC,gBAAeC,eAAeC,mBAAmB;AACnF,UAAMC,aAAaJ,KAAK1D;AACxB,QAAI+D,SAAQL,KAAKM,QAAQL,cAAb;AAIZ,QAAII,WAAU,IAAI;AAChB,aAAO,CAACH,iBAAiBC,iBAAiBH,KAAKI,aAAa,CAAd,IAAmBJ,KAAK,CAAD;IACtE;AAEDK,IAAAA,UAASH,gBAAgB,IAAI;AAE7B,QAAIC,gBAAgB;AAClBE,MAAAA,UAASA,SAAQD,cAAcA;IAChC;AAED,WAAOJ,KAAK3F,KAAKkG,IAAI,GAAGlG,KAAKmG,IAAIH,QAAOD,aAAa,CAA7B,CAAZ,CAAD;EACZ;AC3SD,MAAMK,iBAAiB;AACvB,MAAMC,iBAAiB;AACvB,MAAMC,gBAAgB;AACtB,MAAMC,gBAAgB,CAAA;AACtB,MAAIC,WAAW;AACf,MAAMC,eAAe;IACnBC,YAAY;IACZC,YAAY;EAFO;AAKrB,MAAMC,eAAe,oBAAIC,IAAI,CAC3B,SACA,YACA,WACA,aACA,eACA,cACA,kBACA,aACA,YACA,aACA,eACA,aACA,WACA,YACA,SACA,qBACA,cACA,aACA,YACA,eACA,eACA,eACA,aACA,gBACA,iBACA,gBACA,iBACA,cACA,SACA,QACA,UACA,SACA,UACA,UACA,WACA,YACA,QACA,UACA,gBACA,UACA,QACA,oBACA,oBACA,SACA,SACA,QA9C2B,CAAR;AAqDrB,WAASC,aAAaxG,SAASyG,MAAK;AAClC,WAAQA,QAAQ,GAAEA,SAAQP,gBAAiBlG,QAAQkG,YAAYA;EAChE;AAED,WAASQ,iBAAiB1G,SAAS;AACjC,UAAMyG,OAAMD,aAAaxG,OAAD;AAExBA,YAAQkG,WAAWO;AACnBR,kBAAcQ,IAAD,IAAQR,cAAcQ,IAAD,KAAS,CAAA;AAE3C,WAAOR,cAAcQ,IAAD;EACrB;AAED,WAASE,iBAAiB3G,SAASqE,KAAI;AACrC,WAAO,SAASW,QAAQ4B,OAAO;AAC7BC,iBAAWD,OAAO;QAAEE,gBAAgB9G;MAAlB,CAAR;AAEV,UAAIgF,QAAQ+B,QAAQ;AAClBC,qBAAaC,IAAIjH,SAAS4G,MAAMM,MAAM7C,GAAtC;MACD;AAED,aAAOA,IAAG8C,MAAMnH,SAAS,CAAC4G,KAAD,CAAlB;;EAEV;AAED,WAASQ,2BAA2BpH,SAASC,UAAUoE,KAAI;AACzD,WAAO,SAASW,QAAQ4B,OAAO;AAC7B,YAAMS,cAAcrH,QAAQsH,iBAAiBrH,QAAzB;AAEpB,eAAS;QAAEgF;MAAF,IAAa2B,OAAO3B,UAAUA,WAAW,MAAMA,SAASA,OAAO9C,YAAY;AAClF,mBAAWoF,cAAcF,aAAa;AACpC,cAAIE,eAAetC,QAAQ;AACzB;UACD;AAED4B,qBAAWD,OAAO;YAAEE,gBAAgB7B;UAAlB,CAAR;AAEV,cAAID,QAAQ+B,QAAQ;AAClBC,yBAAaC,IAAIjH,SAAS4G,MAAMM,MAAMjH,UAAUoE,GAAhD;UACD;AAED,iBAAOA,IAAG8C,MAAMlC,QAAQ,CAAC2B,KAAD,CAAjB;QACR;MACF;;EAEJ;AAED,WAASY,YAAYC,SAAQC,UAAUC,qBAAqB,MAAM;AAChE,WAAOzI,OAAO0I,OAAOH,OAAd,EACJI,KAAKjB,WAASA,MAAMc,aAAaA,YAAYd,MAAMe,uBAAuBA,kBADtE;EAER;AAED,WAASG,oBAAoBC,mBAAmB/C,SAASgD,oBAAoB;AAC3E,UAAMC,cAAc,OAAOjD,YAAY;AAEvC,UAAM0C,WAAWO,cAAcD,qBAAsBhD,WAAWgD;AAChE,QAAIE,YAAYC,aAAaJ,iBAAD;AAE5B,QAAI,CAACzB,aAAa8B,IAAIF,SAAjB,GAA6B;AAChCA,kBAAYH;IACb;AAED,WAAO,CAACE,aAAaP,UAAUQ,SAAxB;EACR;AAED,WAASG,WAAWrI,SAAS+H,mBAAmB/C,SAASgD,oBAAoBjB,QAAQ;AACnF,QAAI,OAAOgB,sBAAsB,YAAY,CAAC/H,SAAS;AACrD;IACD;AAED,QAAI,CAACiI,aAAaP,UAAUQ,SAAxB,IAAqCJ,oBAAoBC,mBAAmB/C,SAASgD,kBAA7B;AAI5D,QAAID,qBAAqB5B,cAAc;AACrC,YAAMmC,eAAejE,CAAAA,QAAM;AACzB,eAAO,SAAUuC,OAAO;AACtB,cAAI,CAACA,MAAM2B,iBAAkB3B,MAAM2B,kBAAkB3B,MAAME,kBAAkB,CAACF,MAAME,eAAetE,SAASoE,MAAM2B,aAApC,GAAqD;AACjI,mBAAOlE,IAAGhF,KAAK,MAAMuH,KAAd;UACR;;;AAILc,iBAAWY,aAAaZ,QAAD;IACxB;AAED,UAAMD,UAASf,iBAAiB1G,OAAD;AAC/B,UAAMwI,YAAWf,QAAOS,SAAD,MAAgBT,QAAOS,SAAD,IAAc,CAAA;AAC3D,UAAMO,mBAAmBjB,YAAYgB,WAAUd,UAAUO,cAAcjD,UAAU,IAA7C;AAEpC,QAAIyD,kBAAkB;AACpBA,uBAAiB1B,SAAS0B,iBAAiB1B,UAAUA;AAErD;IACD;AAED,UAAMN,OAAMD,aAAakB,UAAUK,kBAAkBW,QAAQ5C,gBAAgB,EAA1C,CAAX;AACxB,UAAMzB,MAAK4D,cACTb,2BAA2BpH,SAASgF,SAAS0C,QAAnB,IAC1Bf,iBAAiB3G,SAAS0H,QAAV;AAElBrD,IAAAA,IAAGsD,qBAAqBM,cAAcjD,UAAU;AAChDX,IAAAA,IAAGqD,WAAWA;AACdrD,IAAAA,IAAG0C,SAASA;AACZ1C,IAAAA,IAAG6B,WAAWO;AACd+B,IAAAA,UAAS/B,IAAD,IAAQpC;AAEhBrE,YAAQ2D,iBAAiBuE,WAAW7D,KAAI4D,WAAxC;EACD;AAED,WAASU,cAAc3I,SAASyH,SAAQS,WAAWlD,SAAS2C,oBAAoB;AAC9E,UAAMtD,MAAKmD,YAAYC,QAAOS,SAAD,GAAalD,SAAS2C,kBAA7B;AAEtB,QAAI,CAACtD,KAAI;AACP;IACD;AAEDrE,YAAQkF,oBAAoBgD,WAAW7D,KAAIuE,QAAQjB,kBAAD,CAAlD;AACA,WAAOF,QAAOS,SAAD,EAAY7D,IAAG6B,QAArB;EACR;AAED,WAAS2C,yBAAyB7I,SAASyH,SAAQS,WAAWY,WAAW;AACvE,UAAMC,oBAAoBtB,QAAOS,SAAD,KAAe,CAAA;AAE/C,eAAWc,cAAc9J,OAAO+J,KAAKF,iBAAZ,GAAgC;AACvD,UAAIC,WAAW5I,SAAS0I,SAApB,GAAgC;AAClC,cAAMlC,QAAQmC,kBAAkBC,UAAD;AAC/BL,sBAAc3I,SAASyH,SAAQS,WAAWtB,MAAMc,UAAUd,MAAMe,kBAAnD;MACd;IACF;EACF;AAED,WAASQ,aAAavB,OAAO;AAE3BA,YAAQA,MAAM8B,QAAQ3C,gBAAgB,EAA9B;AACR,WAAOI,aAAaS,KAAD,KAAWA;EAC/B;AAED,MAAMI,eAAe;IACnBkC,GAAGlJ,SAAS4G,OAAO5B,SAASgD,oBAAoB;AAC9CK,iBAAWrI,SAAS4G,OAAO5B,SAASgD,oBAAoB,KAA9C;;IAGZmB,IAAInJ,SAAS4G,OAAO5B,SAASgD,oBAAoB;AAC/CK,iBAAWrI,SAAS4G,OAAO5B,SAASgD,oBAAoB,IAA9C;;IAGZf,IAAIjH,SAAS+H,mBAAmB/C,SAASgD,oBAAoB;AAC3D,UAAI,OAAOD,sBAAsB,YAAY,CAAC/H,SAAS;AACrD;MACD;AAED,YAAM,CAACiI,aAAaP,UAAUQ,SAAxB,IAAqCJ,oBAAoBC,mBAAmB/C,SAASgD,kBAA7B;AAC9D,YAAMoB,cAAclB,cAAcH;AAClC,YAAMN,UAASf,iBAAiB1G,OAAD;AAC/B,YAAM+I,oBAAoBtB,QAAOS,SAAD,KAAe,CAAA;AAC/C,YAAMmB,cAActB,kBAAkB1H,WAAW,GAA7B;AAEpB,UAAI,OAAOqH,aAAa,aAAa;AAEnC,YAAI,CAACxI,OAAO+J,KAAKF,iBAAZ,EAA+BpH,QAAQ;AAC1C;QACD;AAEDgH,sBAAc3I,SAASyH,SAAQS,WAAWR,UAAUO,cAAcjD,UAAU,IAA/D;AACb;MACD;AAED,UAAIqE,aAAa;AACf,mBAAWC,gBAAgBpK,OAAO+J,KAAKxB,OAAZ,GAAqB;AAC9CoB,mCAAyB7I,SAASyH,SAAQ6B,cAAcvB,kBAAkBwB,MAAM,CAAxB,CAAhC;QACzB;MACF;AAED,iBAAWC,eAAetK,OAAO+J,KAAKF,iBAAZ,GAAgC;AACxD,cAAMC,aAAaQ,YAAYd,QAAQ1C,eAAe,EAAnC;AAEnB,YAAI,CAACoD,eAAerB,kBAAkB3H,SAAS4I,UAA3B,GAAwC;AAC1D,gBAAMpC,QAAQmC,kBAAkBS,WAAD;AAC/Bb,wBAAc3I,SAASyH,SAAQS,WAAWtB,MAAMc,UAAUd,MAAMe,kBAAnD;QACd;MACF;;IAGH8B,QAAQzJ,SAAS4G,OAAO8C,MAAM;AAC5B,UAAI,OAAO9C,UAAU,YAAY,CAAC5G,SAAS;AACzC,eAAO;MACR;AAED,YAAMiE,KAAIb,UAAS;AACnB,YAAM8E,YAAYC,aAAavB,KAAD;AAC9B,YAAMwC,cAAcxC,UAAUsB;AAE9B,UAAIyB,cAAc;AAClB,UAAIC,UAAU;AACd,UAAIC,iBAAiB;AACrB,UAAIC,mBAAmB;AAEvB,UAAIV,eAAenF,IAAG;AACpB0F,sBAAc1F,GAAE3C,MAAMsF,OAAO8C,IAAf;AAEdzF,QAAAA,GAAEjE,OAAD,EAAUyJ,QAAQE,WAAnB;AACAC,kBAAU,CAACD,YAAYI,qBAAZ;AACXF,yBAAiB,CAACF,YAAYK,8BAAZ;AAClBF,2BAAmBH,YAAYM,mBAAZ;MACpB;AAED,UAAIC,MAAM,IAAI5I,MAAMsF,OAAO;QAAEgD;QAASO,YAAY;MAAvB,CAAjB;AACVD,YAAMrD,WAAWqD,KAAKR,IAAN;AAEhB,UAAII,kBAAkB;AACpBI,YAAIE,eAAJ;MACD;AAED,UAAIP,gBAAgB;AAClB7J,gBAAQqB,cAAc6I,GAAtB;MACD;AAED,UAAIA,IAAIJ,oBAAoBH,aAAa;AACvCA,oBAAYS,eAAZ;MACD;AAED,aAAOF;IACR;EArFkB;AAwFrB,WAASrD,WAAWwD,KAAKC,MAAM;AAC7B,eAAW,CAACC,MAAKC,KAAN,KAAgBtL,OAAOuL,QAAQH,QAAQ,CAAA,CAAvB,GAA4B;AACrD,UAAI;AACFD,YAAIE,IAAD,IAAQC;MACZ,SAAO,SAAN;AACAtL,eAAOwL,eAAeL,KAAKE,MAAK;UAC9BI,cAAc;UACdC,MAAM;AACJ,mBAAOJ;UACR;SAJH;MAMD;IACF;AAED,WAAOH;EACR;AClTD,MAAMQ,aAAa,oBAAIC,IAAJ;AAEnB,MAAA,OAAe;IACbC,IAAI/K,SAASuK,MAAKS,UAAU;AAC1B,UAAI,CAACH,WAAWzC,IAAIpI,OAAf,GAAyB;AAC5B6K,mBAAWE,IAAI/K,SAAS,oBAAI8K,IAAJ,CAAxB;MACD;AAED,YAAMG,cAAcJ,WAAWD,IAAI5K,OAAf;AAIpB,UAAI,CAACiL,YAAY7C,IAAImC,IAAhB,KAAwBU,YAAYC,SAAS,GAAG;AAEnDC,gBAAQC,MAAO,+EAA8EC,MAAMC,KAAKL,YAAYhC,KAAZ,CAAX,EAA+B,CAA/B,IAA7F;AACA;MACD;AAEDgC,kBAAYF,IAAIR,MAAKS,QAArB;;IAGFJ,IAAI5K,SAASuK,MAAK;AAChB,UAAIM,WAAWzC,IAAIpI,OAAf,GAAyB;AAC3B,eAAO6K,WAAWD,IAAI5K,OAAf,EAAwB4K,IAAIL,IAA5B,KAAoC;MAC5C;AAED,aAAO;;IAGTgB,OAAOvL,SAASuK,MAAK;AACnB,UAAI,CAACM,WAAWzC,IAAIpI,OAAf,GAAyB;AAC5B;MACD;AAED,YAAMiL,cAAcJ,WAAWD,IAAI5K,OAAf;AAEpBiL,kBAAYO,OAAOjB,IAAnB;AAGA,UAAIU,YAAYC,SAAS,GAAG;AAC1BL,mBAAWW,OAAOxL,OAAlB;MACD;IACF;EAxCY;ACNf,WAASyL,cAAcjB,OAAO;AAC5B,QAAIA,UAAU,QAAQ;AACpB,aAAO;IACR;AAED,QAAIA,UAAU,SAAS;AACrB,aAAO;IACR;AAED,QAAIA,UAAUvJ,OAAOuJ,KAAD,EAAQpL,SAAd,GAA0B;AACtC,aAAO6B,OAAOuJ,KAAD;IACd;AAED,QAAIA,UAAU,MAAMA,UAAU,QAAQ;AACpC,aAAO;IACR;AAED,QAAI,OAAOA,UAAU,UAAU;AAC7B,aAAOA;IACR;AAED,QAAI;AACF,aAAOkB,KAAKC,MAAMC,mBAAmBpB,KAAD,CAA7B;IACR,SAAO,SAAN;AACA,aAAOA;IACR;EACF;AAED,WAASqB,iBAAiBtB,MAAK;AAC7B,WAAOA,KAAI7B,QAAQ,UAAUoD,SAAQ,IAAGA,IAAIvM,YAAJ,GAAjC;EACR;AAED,MAAMwM,cAAc;IAClBC,iBAAiBhM,SAASuK,MAAKC,OAAO;AACpCxK,cAAQiM,aAAc,WAAUJ,iBAAiBtB,IAAD,KAASC,KAAzD;;IAGF0B,oBAAoBlM,SAASuK,MAAK;AAChCvK,cAAQmM,gBAAiB,WAAUN,iBAAiBtB,IAAD,GAAnD;;IAGF6B,kBAAkBpM,SAAS;AACzB,UAAI,CAACA,SAAS;AACZ,eAAO,CAAA;MACR;AAED,YAAMqM,aAAa,CAAA;AACnB,YAAMC,SAASpN,OAAO+J,KAAKjJ,QAAQuM,OAApB,EAA6BC,OAAOjC,CAAAA,SAAOA,KAAIlK,WAAW,IAAf,KAAwB,CAACkK,KAAIlK,WAAW,UAAf,CAApE;AAEf,iBAAWkK,QAAO+B,QAAQ;AACxB,YAAIG,UAAUlC,KAAI7B,QAAQ,OAAO,EAAnB;AACd+D,kBAAUA,QAAQC,OAAO,CAAf,EAAkBnN,YAAlB,IAAkCkN,QAAQlD,MAAM,GAAGkD,QAAQ9K,MAAzB;AAC5C0K,mBAAWI,OAAD,IAAYhB,cAAczL,QAAQuM,QAAQhC,IAAhB,CAAD;MACpC;AAED,aAAO8B;;IAGTM,iBAAiB3M,SAASuK,MAAK;AAC7B,aAAOkB,cAAczL,QAAQE,aAAc,WAAU2L,iBAAiBtB,IAAD,GAAhD,CAAD;IACrB;EA5BiB;ACzBpB,MAAMqC,UAAN,MAAa;;IAEO,WAAPC,UAAU;AACnB,aAAO,CAAA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAO,CAAA;IACR;IAEc,WAAJ3I,OAAO;AAChB,YAAM,IAAI4I,MAAM,qEAAV;IACP;IAEDC,WAAWC,SAAQ;AACjBA,MAAAA,UAAS,KAAKC,gBAAgBD,OAArB;AACTA,MAAAA,UAAS,KAAKE,kBAAkBF,OAAvB;AACT,WAAKG,iBAAiBH,OAAtB;AACA,aAAOA;IACR;IAEDE,kBAAkBF,SAAQ;AACxB,aAAOA;IACR;IAEDC,gBAAgBD,SAAQjN,SAAS;AAC/B,YAAMqN,aAAa9L,WAAUvB,OAAD,IAAY+L,YAAYY,iBAAiB3M,SAAS,QAAtC,IAAkD,CAAA;AAE1F,aAAO;QACL,GAAG,KAAKsN,YAAYT;QACpB,GAAI,OAAOQ,eAAe,WAAWA,aAAa,CAAA;QAClD,GAAI9L,WAAUvB,OAAD,IAAY+L,YAAYK,kBAAkBpM,OAA9B,IAAyC,CAAA;QAClE,GAAI,OAAOiN,YAAW,WAAWA,UAAS,CAAA;;IAE7C;IAEDG,iBAAiBH,SAAQM,cAAc,KAAKD,YAAYR,aAAa;AACnE,iBAAWU,YAAYtO,OAAO+J,KAAKsE,WAAZ,GAA0B;AAC/C,cAAME,gBAAgBF,YAAYC,QAAD;AACjC,cAAMhD,QAAQyC,QAAOO,QAAD;AACpB,cAAME,YAAYnM,WAAUiJ,KAAD,IAAU,YAAYzL,OAAOyL,KAAD;AAEvD,YAAI,CAAC,IAAImD,OAAOF,aAAX,EAA0BG,KAAKF,SAA/B,GAA2C;AAC9C,gBAAM,IAAIG,UACP,GAAE,KAAKP,YAAYnJ,KAAK2J,YAAtB,cAAgDN,4BAA4BE,iCAAiCD,iBAD5G;QAGP;MACF;IACF;EAhDU;ACEb,MAAMM,UAAU;AAMhB,MAAMC,gBAAN,cAA4BpB,QAAO;IACjCU,YAAYtN,SAASiN,SAAQ;AAC3B,YAAA;AAEAjN,gBAAU0B,WAAW1B,OAAD;AACpB,UAAI,CAACA,SAAS;AACZ;MACD;AAED,WAAKiO,WAAWjO;AAChB,WAAKkO,UAAU,KAAKlB,WAAWC,OAAhB;AAEfkB,WAAKpD,IAAI,KAAKkD,UAAU,KAAKX,YAAYc,UAAU,IAAnD;IACD;;IAGDC,UAAU;AACRF,WAAK5C,OAAO,KAAK0C,UAAU,KAAKX,YAAYc,QAA5C;AACApH,mBAAaC,IAAI,KAAKgH,UAAU,KAAKX,YAAYgB,SAAjD;AAEA,iBAAWC,gBAAgBrP,OAAOsP,oBAAoB,IAA3B,GAAkC;AAC3D,aAAKD,YAAL,IAAqB;MACtB;IACF;IAEDE,eAAehL,WAAUzD,SAAS0O,aAAa,MAAM;AACnDhK,6BAAuBjB,WAAUzD,SAAS0O,UAApB;IACvB;IAED1B,WAAWC,SAAQ;AACjBA,MAAAA,UAAS,KAAKC,gBAAgBD,SAAQ,KAAKgB,QAAlC;AACThB,MAAAA,UAAS,KAAKE,kBAAkBF,OAAvB;AACT,WAAKG,iBAAiBH,OAAtB;AACA,aAAOA;IACR;;IAGiB,OAAX0B,YAAY3O,SAAS;AAC1B,aAAOmO,KAAKvD,IAAIlJ,WAAW1B,OAAD,GAAW,KAAKoO,QAAnC;IACR;IAEyB,OAAnBQ,oBAAoB5O,SAASiN,UAAS,CAAA,GAAI;AAC/C,aAAO,KAAK0B,YAAY3O,OAAjB,KAA6B,IAAI,KAAKA,SAAS,OAAOiN,YAAW,WAAWA,UAAS,IAAxD;IACrC;IAEiB,WAAPc,UAAU;AACnB,aAAOA;IACR;IAEkB,WAARK,WAAW;AACpB,aAAQ,MAAK,KAAKjK;IACnB;IAEmB,WAATmK,YAAY;AACrB,aAAQ,IAAG,KAAKF;IACjB;IAEe,OAATS,UAAU3K,OAAM;AACrB,aAAQ,GAAEA,QAAO,KAAKoK;IACvB;EA3DgC;ACZnC,MAAMQ,uBAAuB,CAACC,WAAWC,SAAS,WAAW;AAC3D,UAAMC,aAAc,gBAAeF,UAAUT;AAC7C,UAAMpK,QAAO6K,UAAU5K;AAEvB6C,iBAAakC,GAAGrJ,UAAUoP,YAAa,qBAAoB/K,WAAU,SAAU0C,OAAO;AACpF,UAAI,CAAC,KAAK,MAAN,EAAcxG,SAAS,KAAK8O,OAA5B,GAAsC;AACxCtI,cAAMwD,eAAN;MACD;AAED,UAAIhI,WAAW,IAAD,GAAQ;AACpB;MACD;AAED,YAAM6C,SAASvE,uBAAuB,IAAD,KAAU,KAAKuB,QAAS,IAAGiC,OAAjB;AAC/C,YAAM8G,WAAW+D,UAAUH,oBAAoB3J,MAA9B;AAGjB+F,eAASgE,MAAD,EAAR;KAbF;EAeD;ACbD,MAAM7K,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AAEtB,MAAMe,cAAe,QAAOb;AAC5B,MAAMc,eAAgB,SAAQd;AAC9B,MAAMe,oBAAkB;AACxB,MAAMC,oBAAkB;AAMxB,MAAMC,QAAN,cAAoBvB,cAAc;;IAEjB,WAAJ7J,OAAO;AAChB,aAAOA;IACR;;IAGDqL,QAAQ;AACN,YAAMC,aAAazI,aAAayC,QAAQ,KAAKwE,UAAUkB,WAApC;AAEnB,UAAIM,WAAW3F,kBAAkB;AAC/B;MACD;AAED,WAAKmE,SAAS1L,UAAUgJ,OAAO+D,iBAA/B;AAEA,YAAMZ,aAAa,KAAKT,SAAS1L,UAAUC,SAAS6M,iBAAjC;AACnB,WAAKZ,eAAe,MAAM,KAAKiB,gBAAL,GAAwB,KAAKzB,UAAUS,UAAjE;IACD;;IAGDgB,kBAAkB;AAChB,WAAKzB,SAAS1C,OAAd;AACAvE,mBAAayC,QAAQ,KAAKwE,UAAUmB,YAApC;AACA,WAAKf,QAAL;IACD;;IAGqB,OAAf/J,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAOL,MAAMX,oBAAoB,IAA1B;AAEb,YAAI,OAAO3B,YAAW,UAAU;AAC9B;QACD;AAED,YAAI2C,MAAK3C,OAAD,MAAahO,UAAagO,QAAO5M,WAAW,GAAlB,KAA0B4M,YAAW,eAAe;AACpF,gBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;QACP;AAED2C,QAAAA,MAAK3C,OAAD,EAAS,IAAb;MACD,CAZM;IAaR;EA1C+B;AAiDlC6B,uBAAqBS,OAAO,OAAR;AAMpBxL,qBAAmBwL,KAAD;ACrElB,MAAMpL,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AACtB,MAAMyB,iBAAe;AAErB,MAAMC,sBAAoB;AAC1B,MAAMC,yBAAuB;AAC7B,MAAMC,yBAAwB,QAAO1B,cAAYuB;AAMjD,MAAMI,SAAN,cAAqBjC,cAAc;;IAElB,WAAJ7J,OAAO;AAChB,aAAOA;IACR;;IAGD+L,SAAS;AAEP,WAAKjC,SAAShC,aAAa,gBAAgB,KAAKgC,SAAS1L,UAAU2N,OAAOJ,mBAA/B,CAA3C;IACD;;IAGqB,OAAfxL,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAOK,OAAOrB,oBAAoB,IAA3B;AAEb,YAAI3B,YAAW,UAAU;AACvB2C,UAAAA,MAAK3C,OAAD,EAAJ;QACD;MACF,CANM;IAOR;EArBgC;AA4BnCjG,eAAakC,GAAGrJ,UAAUmQ,wBAAsBD,wBAAsBnJ,WAAS;AAC7EA,UAAMwD,eAAN;AAEA,UAAM+F,SAASvJ,MAAM3B,OAAOhD,QAAQ8N,sBAArB;AACf,UAAMH,QAAOK,OAAOrB,oBAAoBuB,MAA3B;AAEbP,IAAAA,MAAKM,OAAL;EACD,CAPD;AAaAnM,qBAAmBkM,MAAD;ACxDlB,MAAMG,iBAAiB;IACrBvI,KAAK5H,UAAUD,UAAUH,SAAS+C,iBAAiB;AACjD,aAAO,CAAA,EAAGyN,OAAO,GAAGC,QAAQnR,UAAUmI,iBAAiBjI,KAAKW,SAASC,QAAjD,CAAb;;IAGTsQ,QAAQtQ,UAAUD,UAAUH,SAAS+C,iBAAiB;AACpD,aAAO0N,QAAQnR,UAAUsB,cAAcpB,KAAKW,SAASC,QAA9C;;IAGTuQ,SAASxQ,SAASC,UAAU;AAC1B,aAAO,CAAA,EAAGoQ,OAAO,GAAGrQ,QAAQwQ,QAArB,EAA+BhE,OAAOiE,WAASA,MAAMC,QAAQzQ,QAAd,CAA/C;;IAGT0Q,QAAQ3Q,SAASC,UAAU;AACzB,YAAM0Q,UAAU,CAAA;AAChB,UAAIC,WAAW5Q,QAAQmC,WAAWF,QAAQhC,QAA3B;AAEf,aAAO2Q,UAAU;AACfD,gBAAQ/M,KAAKgN,QAAb;AACAA,mBAAWA,SAASzO,WAAWF,QAAQhC,QAA5B;MACZ;AAED,aAAO0Q;;IAGTE,KAAK7Q,SAASC,UAAU;AACtB,UAAI6Q,WAAW9Q,QAAQ+Q;AAEvB,aAAOD,UAAU;AACf,YAAIA,SAASJ,QAAQzQ,QAAjB,GAA4B;AAC9B,iBAAO,CAAC6Q,QAAD;QACR;AAEDA,mBAAWA,SAASC;MACrB;AAED,aAAO,CAAA;;;IAGTC,KAAKhR,SAASC,UAAU;AACtB,UAAI+Q,QAAOhR,QAAQiR;AAEnB,aAAOD,OAAM;AACX,YAAIA,MAAKN,QAAQzQ,QAAb,GAAwB;AAC1B,iBAAO,CAAC+Q,KAAD;QACR;AAEDA,QAAAA,QAAOA,MAAKC;MACb;AAED,aAAO,CAAA;;IAGTC,kBAAkBlR,SAAS;AACzB,YAAMmR,aAAa,CACjB,KACA,UACA,SACA,YACA,UACA,WACA,cACA,0BARiB,EASjBC,IAAInR,cAAa,GAAEA,+BATF,EASmCoR,KAAK,GATxC;AAWnB,aAAO,KAAKxJ,KAAKsJ,YAAYnR,OAAtB,EAA+BwM,OAAO8E,QAAM,CAAClP,WAAWkP,EAAD,KAAQ1P,UAAU0P,EAAD,CAAxE;IACR;EAlEoB;ACEvB,MAAMnN,SAAO;AACb,MAAMmK,cAAY;AAClB,MAAMiD,mBAAoB,aAAYjD;AACtC,MAAMkD,kBAAmB,YAAWlD;AACpC,MAAMmD,iBAAkB,WAAUnD;AAClC,MAAMoD,oBAAqB,cAAapD;AACxC,MAAMqD,kBAAmB,YAAWrD;AACpC,MAAMsD,qBAAqB;AAC3B,MAAMC,mBAAmB;AACzB,MAAMC,2BAA2B;AACjC,MAAMC,kBAAkB;AAExB,MAAMlF,YAAU;IACdmF,aAAa;IACbC,cAAc;IACdC,eAAe;EAHD;AAMhB,MAAMpF,gBAAc;IAClBkF,aAAa;IACbC,cAAc;IACdC,eAAe;EAHG;AAUpB,MAAMC,QAAN,cAAoBvF,QAAO;IACzBU,YAAYtN,SAASiN,SAAQ;AAC3B,YAAA;AACA,WAAKgB,WAAWjO;AAEhB,UAAI,CAACA,WAAW,CAACmS,MAAMC,YAAN,GAAqB;AACpC;MACD;AAED,WAAKlE,UAAU,KAAKlB,WAAWC,OAAhB;AACf,WAAKoF,UAAU;AACf,WAAKC,wBAAwB1J,QAAQ9H,OAAOyR,YAAR;AACpC,WAAKC,YAAL;IACD;;IAGiB,WAAP3F,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGDkK,UAAU;AACRrH,mBAAaC,IAAI,KAAKgH,UAAUK,WAAhC;IACD;;IAGDmE,OAAO7L,OAAO;AACZ,UAAI,CAAC,KAAK0L,uBAAuB;AAC/B,aAAKD,UAAUzL,MAAM8L,QAAQ,CAAd,EAAiBC;AAEhC;MACD;AAED,UAAI,KAAKC,wBAAwBhM,KAA7B,GAAqC;AACvC,aAAKyL,UAAUzL,MAAM+L;MACtB;IACF;IAEDE,KAAKjM,OAAO;AACV,UAAI,KAAKgM,wBAAwBhM,KAA7B,GAAqC;AACvC,aAAKyL,UAAUzL,MAAM+L,UAAU,KAAKN;MACrC;AAED,WAAKS,aAAL;AACArO,cAAQ,KAAKyJ,QAAQ8D,WAAd;IACR;IAEDe,MAAMnM,OAAO;AACX,WAAKyL,UAAUzL,MAAM8L,WAAW9L,MAAM8L,QAAQ/Q,SAAS,IACrD,IACAiF,MAAM8L,QAAQ,CAAd,EAAiBC,UAAU,KAAKN;IACnC;IAEDS,eAAe;AACb,YAAME,YAAYtT,KAAKuT,IAAI,KAAKZ,OAAd;AAElB,UAAIW,aAAajB,iBAAiB;AAChC;MACD;AAED,YAAMmB,YAAYF,YAAY,KAAKX;AAEnC,WAAKA,UAAU;AAEf,UAAI,CAACa,WAAW;AACd;MACD;AAEDzO,cAAQyO,YAAY,IAAI,KAAKhF,QAAQgE,gBAAgB,KAAKhE,QAAQ+D,YAA3D;IACR;IAEDO,cAAc;AACZ,UAAI,KAAKF,uBAAuB;AAC9BtL,qBAAakC,GAAG,KAAK+E,UAAUyD,mBAAmB9K,WAAS,KAAK6L,OAAO7L,KAAZ,CAA3D;AACAI,qBAAakC,GAAG,KAAK+E,UAAU0D,iBAAiB/K,WAAS,KAAKiM,KAAKjM,KAAV,CAAzD;AAEA,aAAKqH,SAAS1L,UAAU4Q,IAAIrB,wBAA5B;MACD,OAAM;AACL9K,qBAAakC,GAAG,KAAK+E,UAAUsD,kBAAkB3K,WAAS,KAAK6L,OAAO7L,KAAZ,CAA1D;AACAI,qBAAakC,GAAG,KAAK+E,UAAUuD,iBAAiB5K,WAAS,KAAKmM,MAAMnM,KAAX,CAAzD;AACAI,qBAAakC,GAAG,KAAK+E,UAAUwD,gBAAgB7K,WAAS,KAAKiM,KAAKjM,KAAV,CAAxD;MACD;IACF;IAEDgM,wBAAwBhM,OAAO;AAC7B,aAAO,KAAK0L,0BAA0B1L,MAAMwM,gBAAgBvB,oBAAoBjL,MAAMwM,gBAAgBxB;IACvG;;IAGiB,OAAXQ,cAAc;AACnB,aAAO,kBAAkBvS,SAAS+C,mBAAmByQ,UAAUC,iBAAiB;IACjF;EAnGwB;ACjB3B,MAAMnP,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AACtB,MAAMyB,iBAAe;AAErB,MAAM0D,mBAAiB;AACvB,MAAMC,oBAAkB;AACxB,MAAMC,yBAAyB;AAE/B,MAAMC,aAAa;AACnB,MAAMC,aAAa;AACnB,MAAMC,iBAAiB;AACvB,MAAMC,kBAAkB;AAExB,MAAMC,cAAe,QAAOxF;AAC5B,MAAMyF,aAAc,OAAMzF;AAC1B,MAAM0F,kBAAiB,UAAS1F;AAChC,MAAM2F,qBAAoB,aAAY3F;AACtC,MAAM4F,qBAAoB,aAAY5F;AACtC,MAAM6F,mBAAoB,YAAW7F;AACrC,MAAM8F,wBAAuB,OAAM9F,cAAYuB;AAC/C,MAAMG,yBAAwB,QAAO1B,cAAYuB;AAEjD,MAAMwE,sBAAsB;AAC5B,MAAMvE,sBAAoB;AAC1B,MAAMwE,mBAAmB;AACzB,MAAMC,iBAAiB;AACvB,MAAMC,mBAAmB;AACzB,MAAMC,kBAAkB;AACxB,MAAMC,kBAAkB;AAExB,MAAMC,kBAAkB;AACxB,MAAMC,gBAAgB;AACtB,MAAMC,uBAAuBF,kBAAkBC;AAC/C,MAAME,oBAAoB;AAC1B,MAAMC,sBAAsB;AAC5B,MAAMC,sBAAsB;AAC5B,MAAMC,qBAAqB;AAE3B,MAAMC,mBAAmB;IACvB,CAAC3B,gBAAD,GAAkBM;IAClB,CAACL,iBAAD,GAAmBI;EAFI;AAKzB,MAAM/G,YAAU;IACdsI,UAAU;IACVC,UAAU;IACVC,OAAO;IACPC,MAAM;IACNC,OAAO;IACPC,MAAM;EANQ;AAShB,MAAM1I,gBAAc;IAClBqI,UAAU;;IACVC,UAAU;IACVC,OAAO;IACPC,MAAM;IACNC,OAAO;IACPC,MAAM;EANY;AAapB,MAAMC,WAAN,cAAuBzH,cAAc;IACnCV,YAAYtN,SAASiN,SAAQ;AAC3B,YAAMjN,SAASiN,OAAf;AAEA,WAAKyI,YAAY;AACjB,WAAKC,iBAAiB;AACtB,WAAKC,aAAa;AAClB,WAAKC,eAAe;AACpB,WAAKC,eAAe;AAEpB,WAAKC,qBAAqB3F,eAAeG,QAAQwE,qBAAqB,KAAK9G,QAAjD;AAC1B,WAAK+H,mBAAL;AAEA,UAAI,KAAK9H,QAAQoH,SAASjB,qBAAqB;AAC7C,aAAK4B,MAAL;MACD;IACF;;IAGiB,WAAPpJ,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGD6M,OAAO;AACL,WAAKkF,OAAOxC,UAAZ;IACD;IAEDyC,kBAAkB;AAIhB,UAAI,CAACtW,SAASuW,UAAUxU,UAAU,KAAKqM,QAAN,GAAiB;AAChD,aAAK+C,KAAL;MACD;IACF;IAEDH,OAAO;AACL,WAAKqF,OAAOvC,UAAZ;IACD;IAED0B,QAAQ;AACN,UAAI,KAAKO,YAAY;AACnBxU,6BAAqB,KAAK6M,QAAN;MACrB;AAED,WAAKoI,eAAL;IACD;IAEDJ,QAAQ;AACN,WAAKI,eAAL;AACA,WAAKC,gBAAL;AAEA,WAAKZ,YAAYa,YAAY,MAAM,KAAKJ,gBAAL,GAAwB,KAAKjI,QAAQiH,QAA5C;IAC7B;IAEDqB,oBAAoB;AAClB,UAAI,CAAC,KAAKtI,QAAQoH,MAAM;AACtB;MACD;AAED,UAAI,KAAKM,YAAY;AACnB5O,qBAAamC,IAAI,KAAK8E,UAAU8F,YAAY,MAAM,KAAKkC,MAAL,CAAlD;AACA;MACD;AAED,WAAKA,MAAL;IACD;IAEDQ,GAAG/Q,QAAO;AACR,YAAMgR,QAAQ,KAAKC,UAAL;AACd,UAAIjR,SAAQgR,MAAM/U,SAAS,KAAK+D,SAAQ,GAAG;AACzC;MACD;AAED,UAAI,KAAKkQ,YAAY;AACnB5O,qBAAamC,IAAI,KAAK8E,UAAU8F,YAAY,MAAM,KAAK0C,GAAG/Q,MAAR,CAAlD;AACA;MACD;AAED,YAAMkR,cAAc,KAAKC,cAAc,KAAKC,WAAL,CAAnB;AACpB,UAAIF,gBAAgBlR,QAAO;AACzB;MACD;AAED,YAAMqR,SAAQrR,SAAQkR,cAAclD,aAAaC;AAEjD,WAAKuC,OAAOa,QAAOL,MAAMhR,MAAD,CAAxB;IACD;IAED2I,UAAU;AACR,UAAI,KAAKyH,cAAc;AACrB,aAAKA,aAAazH,QAAlB;MACD;AAED,YAAMA,QAAN;IACD;;IAGDlB,kBAAkBF,SAAQ;AACxBA,MAAAA,QAAO+J,kBAAkB/J,QAAOkI;AAChC,aAAOlI;IACR;IAED+I,qBAAqB;AACnB,UAAI,KAAK9H,QAAQkH,UAAU;AACzBpO,qBAAakC,GAAG,KAAK+E,UAAU+F,iBAAepN,WAAS,KAAKqQ,SAASrQ,KAAd,CAAvD;MACD;AAED,UAAI,KAAKsH,QAAQmH,UAAU,SAAS;AAClCrO,qBAAakC,GAAG,KAAK+E,UAAUgG,oBAAkB,MAAM,KAAKoB,MAAL,CAAvD;AACArO,qBAAakC,GAAG,KAAK+E,UAAUiG,oBAAkB,MAAM,KAAKsC,kBAAL,CAAvD;MACD;AAED,UAAI,KAAKtI,QAAQqH,SAASpD,MAAMC,YAAN,GAAqB;AAC7C,aAAK8E,wBAAL;MACD;IACF;IAEDA,0BAA0B;AACxB,iBAAWC,OAAO/G,eAAevI,KAAKiN,mBAAmB,KAAK7G,QAA5C,GAAuD;AACvEjH,qBAAakC,GAAGiO,KAAKhD,kBAAkBvN,WAASA,MAAMwD,eAAN,CAAhD;MACD;AAED,YAAMgN,cAAc,MAAM;AACxB,YAAI,KAAKlJ,QAAQmH,UAAU,SAAS;AAClC;QACD;AAUD,aAAKA,MAAL;AACA,YAAI,KAAKQ,cAAc;AACrBwB,uBAAa,KAAKxB,YAAN;QACb;AAED,aAAKA,eAAe1Q,WAAW,MAAM,KAAKqR,kBAAL,GAA0B/C,yBAAyB,KAAKvF,QAAQiH,QAAvE;;AAGhC,YAAMmC,cAAc;QAClBrF,cAAc,MAAM,KAAKiE,OAAO,KAAKqB,kBAAkB3D,cAAvB,CAAZ;QACpB1B,eAAe,MAAM,KAAKgE,OAAO,KAAKqB,kBAAkB1D,eAAvB,CAAZ;QACrB7B,aAAaoF;;AAGf,WAAKtB,eAAe,IAAI3D,MAAM,KAAKlE,UAAUqJ,WAAzB;IACrB;IAEDL,SAASrQ,OAAO;AACd,UAAI,kBAAkBgH,KAAKhH,MAAM3B,OAAOiK,OAApC,GAA8C;AAChD;MACD;AAED,YAAMgE,YAAYgC,iBAAiBtO,MAAM2D,GAAP;AAClC,UAAI2I,WAAW;AACbtM,cAAMwD,eAAN;AACA,aAAK8L,OAAO,KAAKqB,kBAAkBrE,SAAvB,CAAZ;MACD;IACF;IAED2D,cAAc7W,SAAS;AACrB,aAAO,KAAK2W,UAAL,EAAiBhR,QAAQ3F,OAAzB;IACR;IAEDwX,2BAA2B9R,QAAO;AAChC,UAAI,CAAC,KAAKqQ,oBAAoB;AAC5B;MACD;AAED,YAAM0B,kBAAkBrH,eAAeG,QAAQoE,iBAAiB,KAAKoB,kBAA7C;AAExB0B,sBAAgBlV,UAAUgJ,OAAOuE,mBAAjC;AACA2H,sBAAgBtL,gBAAgB,cAAhC;AAEA,YAAMuL,qBAAqBtH,eAAeG,QAAS,sBAAqB7K,YAAW,KAAKqQ,kBAA7D;AAE3B,UAAI2B,oBAAoB;AACtBA,2BAAmBnV,UAAU4Q,IAAIrD,mBAAjC;AACA4H,2BAAmBzL,aAAa,gBAAgB,MAAhD;MACD;IACF;IAEDqK,kBAAkB;AAChB,YAAMtW,UAAU,KAAK2V,kBAAkB,KAAKmB,WAAL;AAEvC,UAAI,CAAC9W,SAAS;AACZ;MACD;AAED,YAAM2X,kBAAkB1W,OAAO2W,SAAS5X,QAAQE,aAAa,kBAArB,GAA0C,EAA1D;AAExB,WAAKgO,QAAQiH,WAAWwC,mBAAmB,KAAKzJ,QAAQ8I;IACzD;IAEDd,OAAOa,QAAO/W,UAAU,MAAM;AAC5B,UAAI,KAAK4V,YAAY;AACnB;MACD;AAED,YAAMtQ,iBAAgB,KAAKwR,WAAL;AACtB,YAAMe,SAASd,WAAUrD;AACzB,YAAMoE,cAAc9X,WAAWoF,qBAAqB,KAAKuR,UAAL,GAAkBrR,gBAAeuS,QAAQ,KAAK3J,QAAQsH,IAAvD;AAEnD,UAAIsC,gBAAgBxS,gBAAe;AACjC;MACD;AAED,YAAMyS,mBAAmB,KAAKlB,cAAciB,WAAnB;AAEzB,YAAME,eAAenJ,eAAa;AAChC,eAAO7H,aAAayC,QAAQ,KAAKwE,UAAUY,WAAW;UACpDtG,eAAeuP;UACf5E,WAAW,KAAK+E,kBAAkBlB,MAAvB;UACXzL,MAAM,KAAKuL,cAAcvR,cAAnB;UACNmR,IAAIsB;QAJgD,CAA/C;;AAQT,YAAMG,aAAaF,aAAalE,WAAD;AAE/B,UAAIoE,WAAWpO,kBAAkB;AAC/B;MACD;AAED,UAAI,CAACxE,kBAAiB,CAACwS,aAAa;AAGlC;MACD;AAED,YAAMK,YAAYvP,QAAQ,KAAK8M,SAAN;AACzB,WAAKL,MAAL;AAEA,WAAKO,aAAa;AAElB,WAAK4B,2BAA2BO,gBAAhC;AACA,WAAKpC,iBAAiBmC;AAEtB,YAAMM,uBAAuBP,SAASrD,mBAAmBD;AACzD,YAAM8D,iBAAiBR,SAASpD,kBAAkBC;AAElDoD,kBAAYvV,UAAU4Q,IAAIkF,cAA1B;AAEAnV,aAAO4U,WAAD;AAENxS,MAAAA,eAAc/C,UAAU4Q,IAAIiF,oBAA5B;AACAN,kBAAYvV,UAAU4Q,IAAIiF,oBAA1B;AAEA,YAAME,mBAAmB,MAAM;AAC7BR,oBAAYvV,UAAUgJ,OAAO6M,sBAAsBC,cAAnD;AACAP,oBAAYvV,UAAU4Q,IAAIrD,mBAA1B;AAEAxK,QAAAA,eAAc/C,UAAUgJ,OAAOuE,qBAAmBuI,gBAAgBD,oBAAlE;AAEA,aAAKxC,aAAa;AAElBoC,qBAAajE,UAAD;;AAGd,WAAKtF,eAAe6J,kBAAkBhT,gBAAe,KAAKiT,YAAL,CAArD;AAEA,UAAIJ,WAAW;AACb,aAAKlC,MAAL;MACD;IACF;IAEDsC,cAAc;AACZ,aAAO,KAAKtK,SAAS1L,UAAUC,SAAS8R,gBAAjC;IACR;IAEDwC,aAAa;AACX,aAAO1G,eAAeG,QAAQsE,sBAAsB,KAAK5G,QAAlD;IACR;IAED0I,YAAY;AACV,aAAOvG,eAAevI,KAAK+M,eAAe,KAAK3G,QAAxC;IACR;IAEDoI,iBAAiB;AACf,UAAI,KAAKX,WAAW;AAClB8C,sBAAc,KAAK9C,SAAN;AACb,aAAKA,YAAY;MAClB;IACF;IAED6B,kBAAkBrE,WAAW;AAC3B,UAAIrP,MAAK,GAAI;AACX,eAAOqP,cAAcU,iBAAiBD,aAAaD;MACpD;AAED,aAAOR,cAAcU,iBAAiBF,aAAaC;IACpD;IAEDsE,kBAAkBlB,QAAO;AACvB,UAAIlT,MAAK,GAAI;AACX,eAAOkT,WAAUpD,aAAaC,iBAAiBC;MAChD;AAED,aAAOkD,WAAUpD,aAAaE,kBAAkBD;IACjD;;IAGqB,OAAftP,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAO6F,SAAS7G,oBAAoB,MAAM3B,OAAnC;AAEb,YAAI,OAAOA,YAAW,UAAU;AAC9B2C,UAAAA,MAAK6G,GAAGxJ,OAAR;AACA;QACD;AAED,YAAI,OAAOA,YAAW,UAAU;AAC9B,cAAI2C,MAAK3C,OAAD,MAAahO,UAAagO,QAAO5M,WAAW,GAAlB,KAA0B4M,YAAW,eAAe;AACpF,kBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;UACP;AAED2C,UAAAA,MAAK3C,OAAD,EAAJ;QACD;MACF,CAfM;IAgBR;EA7UkC;AAoVrCjG,eAAakC,GAAGrJ,UAAUmQ,wBAAsBgF,qBAAqB,SAAUpO,OAAO;AACpF,UAAM3B,SAASvE,uBAAuB,IAAD;AAErC,QAAI,CAACuE,UAAU,CAACA,OAAO1C,UAAUC,SAAS6R,mBAA1B,GAAgD;AAC9D;IACD;AAEDzN,UAAMwD,eAAN;AAEA,UAAMqO,WAAWhD,SAAS7G,oBAAoB3J,MAA7B;AACjB,UAAMyT,aAAa,KAAKxY,aAAa,kBAAlB;AAEnB,QAAIwY,YAAY;AACdD,eAAShC,GAAGiC,UAAZ;AACAD,eAASjC,kBAAT;AACA;IACD;AAED,QAAIzK,YAAYY,iBAAiB,MAAM,OAAnC,MAAgD,QAAQ;AAC1D8L,eAASzH,KAAT;AACAyH,eAASjC,kBAAT;AACA;IACD;AAEDiC,aAAS5H,KAAT;AACA4H,aAASjC,kBAAT;EACD,CA1BD;AA4BAxP,eAAakC,GAAGpI,QAAQsT,uBAAqB,MAAM;AACjD,UAAMuE,YAAYvI,eAAevI,KAAKoN,kBAApB;AAElB,eAAWwD,YAAYE,WAAW;AAChClD,eAAS7G,oBAAoB6J,QAA7B;IACD;EACF,CAND;AAYA1U,qBAAmB0R,QAAD;AClclB,MAAMtR,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AACtB,MAAMyB,iBAAe;AAErB,MAAM+I,eAAc,OAAMtK;AAC1B,MAAMuK,gBAAe,QAAOvK;AAC5B,MAAMwK,eAAc,OAAMxK;AAC1B,MAAMyK,iBAAgB,SAAQzK;AAC9B,MAAM0B,yBAAwB,QAAO1B,cAAYuB;AAEjD,MAAMP,oBAAkB;AACxB,MAAM0J,sBAAsB;AAC5B,MAAMC,wBAAwB;AAC9B,MAAMC,uBAAuB;AAC7B,MAAMC,6BAA8B,WAAUH,wBAAwBA;AACtE,MAAMI,wBAAwB;AAE9B,MAAMC,QAAQ;AACd,MAAMC,SAAS;AAEf,MAAMC,mBAAmB;AACzB,MAAMxJ,yBAAuB;AAE7B,MAAMlD,YAAU;IACd2M,QAAQ;IACRtJ,QAAQ;EAFM;AAKhB,MAAMpD,gBAAc;IAClB0M,QAAQ;IACRtJ,QAAQ;EAFU;AASpB,MAAMuJ,WAAN,cAAuBzL,cAAc;IACnCV,YAAYtN,SAASiN,SAAQ;AAC3B,YAAMjN,SAASiN,OAAf;AAEA,WAAKyM,mBAAmB;AACxB,WAAKC,gBAAgB,CAAA;AAErB,YAAMC,aAAaxJ,eAAevI,KAAKkI,sBAApB;AAEnB,iBAAW8J,QAAQD,YAAY;AAC7B,cAAM3Z,WAAWO,uBAAuBqZ,IAAD;AACvC,cAAMC,gBAAgB1J,eAAevI,KAAK5H,QAApB,EACnBuM,OAAOuN,kBAAgBA,iBAAiB,KAAK9L,QAD1B;AAGtB,YAAIhO,aAAa,QAAQ6Z,cAAcnY,QAAQ;AAC7C,eAAKgY,cAAc/V,KAAKiW,IAAxB;QACD;MACF;AAED,WAAKG,oBAAL;AAEA,UAAI,CAAC,KAAK9L,QAAQsL,QAAQ;AACxB,aAAKS,0BAA0B,KAAKN,eAAe,KAAKO,SAAL,CAAnD;MACD;AAED,UAAI,KAAKhM,QAAQgC,QAAQ;AACvB,aAAKA,OAAL;MACD;IACF;;IAGiB,WAAPrD,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGD+L,SAAS;AACP,UAAI,KAAKgK,SAAL,GAAiB;AACnB,aAAKC,KAAL;MACD,OAAM;AACL,aAAKC,KAAL;MACD;IACF;IAEDA,OAAO;AACL,UAAI,KAAKV,oBAAoB,KAAKQ,SAAL,GAAiB;AAC5C;MACD;AAED,UAAIG,iBAAiB,CAAA;AAGrB,UAAI,KAAKnM,QAAQsL,QAAQ;AACvBa,yBAAiB,KAAKC,uBAAuBf,gBAA5B,EACd/M,OAAOxM,aAAWA,YAAY,KAAKiO,QADrB,EAEdmD,IAAIpR,aAAWyZ,SAAS7K,oBAAoB5O,SAAS;UAAEkQ,QAAQ;QAAV,CAAtC,CAFD;MAGlB;AAED,UAAImK,eAAe1Y,UAAU0Y,eAAe,CAAD,EAAIX,kBAAkB;AAC/D;MACD;AAED,YAAMa,aAAavT,aAAayC,QAAQ,KAAKwE,UAAU2K,YAApC;AACnB,UAAI2B,WAAWzQ,kBAAkB;AAC/B;MACD;AAED,iBAAW0Q,kBAAkBH,gBAAgB;AAC3CG,uBAAeL,KAAf;MACD;AAED,YAAMM,YAAY,KAAKC,cAAL;AAElB,WAAKzM,SAAS1L,UAAUgJ,OAAOyN,mBAA/B;AACA,WAAK/K,SAAS1L,UAAU4Q,IAAI8F,qBAA5B;AAEA,WAAKhL,SAAS0M,MAAMF,SAApB,IAAiC;AAEjC,WAAKR,0BAA0B,KAAKN,eAAe,IAAnD;AACA,WAAKD,mBAAmB;AAExB,YAAMkB,WAAW,MAAM;AACrB,aAAKlB,mBAAmB;AAExB,aAAKzL,SAAS1L,UAAUgJ,OAAO0N,qBAA/B;AACA,aAAKhL,SAAS1L,UAAU4Q,IAAI6F,qBAAqB1J,iBAAjD;AAEA,aAAKrB,SAAS0M,MAAMF,SAApB,IAAiC;AAEjCzT,qBAAayC,QAAQ,KAAKwE,UAAU4K,aAApC;;AAGF,YAAMgC,uBAAuBJ,UAAU,CAAD,EAAI3M,YAAb,IAA6B2M,UAAUlR,MAAM,CAAhB;AAC1D,YAAMuR,aAAc,SAAQD;AAE5B,WAAKpM,eAAemM,UAAU,KAAK3M,UAAU,IAA7C;AACA,WAAKA,SAAS0M,MAAMF,SAApB,IAAkC,GAAE,KAAKxM,SAAS6M,UAAd;IACrC;IAEDX,OAAO;AACL,UAAI,KAAKT,oBAAoB,CAAC,KAAKQ,SAAL,GAAiB;AAC7C;MACD;AAED,YAAMK,aAAavT,aAAayC,QAAQ,KAAKwE,UAAU6K,YAApC;AACnB,UAAIyB,WAAWzQ,kBAAkB;AAC/B;MACD;AAED,YAAM2Q,YAAY,KAAKC,cAAL;AAElB,WAAKzM,SAAS0M,MAAMF,SAApB,IAAkC,GAAE,KAAKxM,SAAS8M,sBAAd,EAAsCN,SAAtC;AAEpCvX,aAAO,KAAK+K,QAAN;AAEN,WAAKA,SAAS1L,UAAU4Q,IAAI8F,qBAA5B;AACA,WAAKhL,SAAS1L,UAAUgJ,OAAOyN,qBAAqB1J,iBAApD;AAEA,iBAAW7F,WAAW,KAAKkQ,eAAe;AACxC,cAAM3Z,UAAUU,uBAAuB+I,OAAD;AAEtC,YAAIzJ,WAAW,CAAC,KAAKka,SAASla,OAAd,GAAwB;AACtC,eAAKia,0BAA0B,CAACxQ,OAAD,GAAW,KAA1C;QACD;MACF;AAED,WAAKiQ,mBAAmB;AAExB,YAAMkB,WAAW,MAAM;AACrB,aAAKlB,mBAAmB;AACxB,aAAKzL,SAAS1L,UAAUgJ,OAAO0N,qBAA/B;AACA,aAAKhL,SAAS1L,UAAU4Q,IAAI6F,mBAA5B;AACAhS,qBAAayC,QAAQ,KAAKwE,UAAU8K,cAApC;;AAGF,WAAK9K,SAAS0M,MAAMF,SAApB,IAAiC;AAEjC,WAAKhM,eAAemM,UAAU,KAAK3M,UAAU,IAA7C;IACD;IAEDiM,SAASla,UAAU,KAAKiO,UAAU;AAChC,aAAOjO,QAAQuC,UAAUC,SAAS8M,iBAA3B;IACR;;IAGDnC,kBAAkBF,SAAQ;AACxBA,MAAAA,QAAOiD,SAAStH,QAAQqE,QAAOiD,MAAR;AACvBjD,MAAAA,QAAOuM,SAAS9X,WAAWuL,QAAOuM,MAAR;AAC1B,aAAOvM;IACR;IAEDyN,gBAAgB;AACd,aAAO,KAAKzM,SAAS1L,UAAUC,SAAS4W,qBAAjC,IAA0DC,QAAQC;IAC1E;IAEDU,sBAAsB;AACpB,UAAI,CAAC,KAAK9L,QAAQsL,QAAQ;AACxB;MACD;AAED,YAAMhJ,WAAW,KAAK8J,uBAAuBvK,sBAA5B;AAEjB,iBAAW/P,WAAWwQ,UAAU;AAC9B,cAAMwK,WAAWta,uBAAuBV,OAAD;AAEvC,YAAIgb,UAAU;AACZ,eAAKf,0BAA0B,CAACja,OAAD,GAAW,KAAKka,SAASc,QAAd,CAA1C;QACD;MACF;IACF;IAEDV,uBAAuBra,UAAU;AAC/B,YAAMuQ,WAAWJ,eAAevI,KAAKsR,4BAA4B,KAAKjL,QAAQsL,MAA7D;AAEjB,aAAOpJ,eAAevI,KAAK5H,UAAU,KAAKiO,QAAQsL,MAA3C,EAAmDhN,OAAOxM,aAAW,CAACwQ,SAASpQ,SAASJ,OAAlB,CAAtE;IACR;IAEDia,0BAA0BgB,cAAcC,QAAQ;AAC9C,UAAI,CAACD,aAAatZ,QAAQ;AACxB;MACD;AAED,iBAAW3B,WAAWib,cAAc;AAClCjb,gBAAQuC,UAAU2N,OAAOgJ,sBAAsB,CAACgC,MAAhD;AACAlb,gBAAQiM,aAAa,iBAAiBiP,MAAtC;MACD;IACF;;IAGqB,OAAf5W,gBAAgB2I,SAAQ;AAC7B,YAAMiB,UAAU,CAAA;AAChB,UAAI,OAAOjB,YAAW,YAAY,YAAYW,KAAKX,OAAjB,GAA0B;AAC1DiB,gBAAQgC,SAAS;MAClB;AAED,aAAO,KAAKP,KAAK,WAAY;AAC3B,cAAMC,QAAO6J,SAAS7K,oBAAoB,MAAMV,OAAnC;AAEb,YAAI,OAAOjB,YAAW,UAAU;AAC9B,cAAI,OAAO2C,MAAK3C,OAAD,MAAa,aAAa;AACvC,kBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;UACP;AAED2C,UAAAA,MAAK3C,OAAD,EAAJ;QACD;MACF,CAVM;IAWR;EAtNkC;AA6NrCjG,eAAakC,GAAGrJ,UAAUmQ,wBAAsBD,wBAAsB,SAAUnJ,OAAO;AAErF,QAAIA,MAAM3B,OAAOiK,YAAY,OAAQtI,MAAME,kBAAkBF,MAAME,eAAeoI,YAAY,KAAM;AAClGtI,YAAMwD,eAAN;IACD;AAED,UAAMnK,WAAWO,uBAAuB,IAAD;AACvC,UAAM2a,mBAAmB/K,eAAevI,KAAK5H,QAApB;AAEzB,eAAWD,WAAWmb,kBAAkB;AACtC1B,eAAS7K,oBAAoB5O,SAAS;QAAEkQ,QAAQ;MAAV,CAAtC,EAAyDA,OAAzD;IACD;EACF,CAZD;AAkBAnM,qBAAmB0V,QAAD;AChRlB,MAAMtV,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AACtB,MAAMyB,iBAAe;AAErB,MAAMuL,eAAa;AACnB,MAAMC,YAAU;AAChB,MAAMC,iBAAe;AACrB,MAAMC,mBAAiB;AACvB,MAAMC,qBAAqB;AAE3B,MAAM1C,eAAc,OAAMxK;AAC1B,MAAMyK,iBAAgB,SAAQzK;AAC9B,MAAMsK,eAAc,OAAMtK;AAC1B,MAAMuK,gBAAe,QAAOvK;AAC5B,MAAM0B,yBAAwB,QAAO1B,cAAYuB;AACjD,MAAM4L,yBAA0B,UAASnN,cAAYuB;AACrD,MAAM6L,uBAAwB,QAAOpN,cAAYuB;AAEjD,MAAMP,oBAAkB;AACxB,MAAMqM,oBAAoB;AAC1B,MAAMC,qBAAqB;AAC3B,MAAMC,uBAAuB;AAC7B,MAAMC,2BAA2B;AACjC,MAAMC,6BAA6B;AAEnC,MAAMhM,yBAAuB;AAC7B,MAAMiM,6BAA8B,GAAEjM,0BAAwBT;AAC9D,MAAM2M,gBAAgB;AACtB,MAAMC,kBAAkB;AACxB,MAAMC,sBAAsB;AAC5B,MAAMC,yBAAyB;AAE/B,MAAMC,gBAAgBxY,MAAK,IAAK,YAAY;AAC5C,MAAMyY,mBAAmBzY,MAAK,IAAK,cAAc;AACjD,MAAM0Y,mBAAmB1Y,MAAK,IAAK,eAAe;AAClD,MAAM2Y,sBAAsB3Y,MAAK,IAAK,iBAAiB;AACvD,MAAM4Y,kBAAkB5Y,MAAK,IAAK,eAAe;AACjD,MAAM6Y,iBAAiB7Y,MAAK,IAAK,gBAAgB;AACjD,MAAM8Y,sBAAsB;AAC5B,MAAMC,yBAAyB;AAE/B,MAAM/P,YAAU;IACdgQ,WAAW;IACXC,UAAU;IACVC,SAAS;IACTC,QAAQ,CAAC,GAAG,CAAJ;IACRC,cAAc;IACdC,WAAW;EANG;AAShB,MAAMpQ,gBAAc;IAClB+P,WAAW;IACXC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,cAAc;IACdC,WAAW;EANO;AAapB,MAAMC,WAAN,cAAuBnP,cAAc;IACnCV,YAAYtN,SAASiN,SAAQ;AAC3B,YAAMjN,SAASiN,OAAf;AAEA,WAAKmQ,UAAU;AACf,WAAKC,UAAU,KAAKpP,SAAS9L;AAE7B,WAAKmb,QAAQlN,eAAeY,KAAK,KAAK/C,UAAUgO,aAAnC,EAAkD,CAAlD,KACX7L,eAAeS,KAAK,KAAK5C,UAAUgO,aAAnC,EAAkD,CAAlD,KACA7L,eAAeG,QAAQ0L,eAAe,KAAKoB,OAA3C;AACF,WAAKE,YAAY,KAAKC,cAAL;IAClB;;IAGiB,WAAP3Q,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGD+L,SAAS;AACP,aAAO,KAAKgK,SAAL,IAAkB,KAAKC,KAAL,IAAc,KAAKC,KAAL;IACxC;IAEDA,OAAO;AACL,UAAIhY,WAAW,KAAK6L,QAAN,KAAmB,KAAKiM,SAAL,GAAiB;AAChD;MACD;AAED,YAAM3R,gBAAgB;QACpBA,eAAe,KAAK0F;;AAGtB,YAAMwP,YAAYzW,aAAayC,QAAQ,KAAKwE,UAAU2K,cAAYrQ,aAAhD;AAElB,UAAIkV,UAAU3T,kBAAkB;AAC9B;MACD;AAED,WAAK4T,cAAL;AAMA,UAAI,kBAAkB7d,SAAS+C,mBAAmB,CAAC,KAAKya,QAAQpb,QAAQka,mBAArB,GAA2C;AAC5F,mBAAWnc,WAAW,CAAA,EAAGqQ,OAAO,GAAGxQ,SAASyD,KAAKkN,QAA3B,GAAsC;AAC1DxJ,uBAAakC,GAAGlJ,SAAS,aAAaiD,KAAtC;QACD;MACF;AAED,WAAKgL,SAAS0P,MAAd;AACA,WAAK1P,SAAShC,aAAa,iBAAiB,IAA5C;AAEA,WAAKqR,MAAM/a,UAAU4Q,IAAI7D,iBAAzB;AACA,WAAKrB,SAAS1L,UAAU4Q,IAAI7D,iBAA5B;AACAtI,mBAAayC,QAAQ,KAAKwE,UAAU4K,eAAatQ,aAAjD;IACD;IAED4R,OAAO;AACL,UAAI/X,WAAW,KAAK6L,QAAN,KAAmB,CAAC,KAAKiM,SAAL,GAAiB;AACjD;MACD;AAED,YAAM3R,gBAAgB;QACpBA,eAAe,KAAK0F;;AAGtB,WAAK2P,cAAcrV,aAAnB;IACD;IAED8F,UAAU;AACR,UAAI,KAAK+O,SAAS;AAChB,aAAKA,QAAQS,QAAb;MACD;AAED,YAAMxP,QAAN;IACD;IAEDyP,SAAS;AACP,WAAKP,YAAY,KAAKC,cAAL;AACjB,UAAI,KAAKJ,SAAS;AAChB,aAAKA,QAAQU,OAAb;MACD;IACF;;IAGDF,cAAcrV,eAAe;AAC3B,YAAMwV,YAAY/W,aAAayC,QAAQ,KAAKwE,UAAU6K,cAAYvQ,aAAhD;AAClB,UAAIwV,UAAUjU,kBAAkB;AAC9B;MACD;AAID,UAAI,kBAAkBjK,SAAS+C,iBAAiB;AAC9C,mBAAW5C,WAAW,CAAA,EAAGqQ,OAAO,GAAGxQ,SAASyD,KAAKkN,QAA3B,GAAsC;AAC1DxJ,uBAAaC,IAAIjH,SAAS,aAAaiD,KAAvC;QACD;MACF;AAED,UAAI,KAAKma,SAAS;AAChB,aAAKA,QAAQS,QAAb;MACD;AAED,WAAKP,MAAM/a,UAAUgJ,OAAO+D,iBAA5B;AACA,WAAKrB,SAAS1L,UAAUgJ,OAAO+D,iBAA/B;AACA,WAAKrB,SAAShC,aAAa,iBAAiB,OAA5C;AACAF,kBAAYG,oBAAoB,KAAKoR,OAAO,QAA5C;AACAtW,mBAAayC,QAAQ,KAAKwE,UAAU8K,gBAAcxQ,aAAlD;IACD;IAEDyE,WAAWC,SAAQ;AACjBA,MAAAA,UAAS,MAAMD,WAAWC,OAAjB;AAET,UAAI,OAAOA,QAAOiQ,cAAc,YAAY,CAAC3b,WAAU0L,QAAOiQ,SAAR,KACpD,OAAOjQ,QAAOiQ,UAAUnC,0BAA0B,YAClD;AAEA,cAAM,IAAIlN,UAAW,GAAE1J,OAAK2J,YAAL,iGAAjB;MACP;AAED,aAAOb;IACR;IAEDyQ,gBAAgB;AACd,UAAI,OAAOM,gBAAW,aAAa;AACjC,cAAM,IAAInQ,UAAU,8DAAd;MACP;AAED,UAAIoQ,mBAAmB,KAAKhQ;AAE5B,UAAI,KAAKC,QAAQgP,cAAc,UAAU;AACvCe,2BAAmB,KAAKZ;iBACf9b,WAAU,KAAK2M,QAAQgP,SAAd,GAA0B;AAC5Ce,2BAAmBvc,WAAW,KAAKwM,QAAQgP,SAAd;iBACpB,OAAO,KAAKhP,QAAQgP,cAAc,UAAU;AACrDe,2BAAmB,KAAK/P,QAAQgP;MACjC;AAED,YAAMD,eAAe,KAAKiB,iBAAL;AACrB,WAAKd,UAAiBe,cAAaF,kBAAkB,KAAKX,OAAOL,YAAlD;IAChB;IAED/C,WAAW;AACT,aAAO,KAAKoD,MAAM/a,UAAUC,SAAS8M,iBAA9B;IACR;IAED8O,gBAAgB;AACd,YAAMC,iBAAiB,KAAKhB;AAE5B,UAAIgB,eAAe9b,UAAUC,SAASoZ,kBAAlC,GAAuD;AACzD,eAAOa;MACR;AAED,UAAI4B,eAAe9b,UAAUC,SAASqZ,oBAAlC,GAAyD;AAC3D,eAAOa;MACR;AAED,UAAI2B,eAAe9b,UAAUC,SAASsZ,wBAAlC,GAA6D;AAC/D,eAAOa;MACR;AAED,UAAI0B,eAAe9b,UAAUC,SAASuZ,0BAAlC,GAA+D;AACjE,eAAOa;MACR;AAGD,YAAM0B,QAAQvd,iBAAiB,KAAKuc,KAAN,EAAavb,iBAAiB,eAA9C,EAA+DxB,KAA/D,MAA0E;AAExF,UAAI8d,eAAe9b,UAAUC,SAASmZ,iBAAlC,GAAsD;AACxD,eAAO2C,QAAQhC,mBAAmBD;MACnC;AAED,aAAOiC,QAAQ9B,sBAAsBD;IACtC;IAEDiB,gBAAgB;AACd,aAAO,KAAKvP,SAAShM,QAAQia,eAAtB,MAA2C;IACnD;IAEDqC,aAAa;AACX,YAAM;QAAEvB,QAAAA;MAAF,IAAa,KAAK9O;AAExB,UAAI,OAAO8O,YAAW,UAAU;AAC9B,eAAOA,QAAO1c,MAAM,GAAb,EAAkB8Q,IAAI5G,WAASvJ,OAAO2W,SAASpN,OAAO,EAAvB,CAA/B;MACR;AAED,UAAI,OAAOwS,YAAW,YAAY;AAChC,eAAOwB,gBAAcxB,QAAOwB,YAAY,KAAKvQ,QAAlB;MAC5B;AAED,aAAO+O;IACR;IAEDkB,mBAAmB;AACjB,YAAMO,wBAAwB;QAC5BC,WAAW,KAAKN,cAAL;QACXO,WAAW,CAAC;UACVza,MAAM;UACN0a,SAAS;YACP9B,UAAU,KAAK5O,QAAQ4O;UADhB;QAFC,GAMZ;UACE5Y,MAAM;UACN0a,SAAS;YACP5B,QAAQ,KAAKuB,WAAL;UADD;SARA;MAFiB;AAiB9B,UAAI,KAAKhB,aAAa,KAAKrP,QAAQ6O,YAAY,UAAU;AACvDhR,oBAAYC,iBAAiB,KAAKsR,OAAO,UAAU,QAAnD;AACAmB,8BAAsBE,YAAY,CAAC;UACjCza,MAAM;UACN2a,SAAS;QAFwB,CAAD;MAInC;AAED,aAAO;QACL,GAAGJ;QACH,GAAI,OAAO,KAAKvQ,QAAQ+O,iBAAiB,aAAa,KAAK/O,QAAQ+O,aAAawB,qBAA1B,IAAmD,KAAKvQ,QAAQ+O;;IAEzH;IAED6B,gBAAgB;MAAEvU,KAAAA;MAAKtF;IAAP,GAAiB;AAC/B,YAAMyR,QAAQtG,eAAevI,KAAKuU,wBAAwB,KAAKkB,KAAjD,EAAwD9Q,OAAOxM,aAAW4B,UAAU5B,OAAD,CAAnF;AAEd,UAAI,CAAC0W,MAAM/U,QAAQ;AACjB;MACD;AAIDyD,2BAAqBsR,OAAOzR,QAAQsF,SAAQgR,kBAAgB,CAAC7E,MAAMtW,SAAS6E,MAAf,CAAzC,EAAiE0Y,MAArF;IACD;;IAGqB,OAAfrZ,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAOuN,SAASvO,oBAAoB,MAAM3B,OAAnC;AAEb,YAAI,OAAOA,YAAW,UAAU;AAC9B;QACD;AAED,YAAI,OAAO2C,MAAK3C,OAAD,MAAa,aAAa;AACvC,gBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;QACP;AAED2C,QAAAA,MAAK3C,OAAD,EAAJ;MACD,CAZM;IAaR;IAEgB,OAAV8R,WAAWnY,OAAO;AACvB,UAAIA,MAAMuJ,WAAWqL,sBAAuB5U,MAAMM,SAAS,WAAWN,MAAM2D,QAAQ8Q,WAAU;AAC5F;MACD;AAED,YAAM2D,cAAc5O,eAAevI,KAAKmU,0BAApB;AAEpB,iBAAW9L,UAAU8O,aAAa;AAChC,cAAMC,UAAU9B,SAASxO,YAAYuB,MAArB;AAChB,YAAI,CAAC+O,WAAWA,QAAQ/Q,QAAQ2O,cAAc,OAAO;AACnD;QACD;AAED,cAAMqC,eAAetY,MAAMsY,aAAN;AACrB,cAAMC,eAAeD,aAAa9e,SAAS6e,QAAQ3B,KAA9B;AACrB,YACE4B,aAAa9e,SAAS6e,QAAQhR,QAA9B,KACCgR,QAAQ/Q,QAAQ2O,cAAc,YAAY,CAACsC,gBAC3CF,QAAQ/Q,QAAQ2O,cAAc,aAAasC,cAC5C;AACA;QACD;AAGD,YAAIF,QAAQ3B,MAAM9a,SAASoE,MAAM3B,MAA7B,MAA0C2B,MAAMM,SAAS,WAAWN,MAAM2D,QAAQ8Q,aAAY,qCAAqCzN,KAAKhH,MAAM3B,OAAOiK,OAAvD,IAAkE;AAClK;QACD;AAED,cAAM3G,gBAAgB;UAAEA,eAAe0W,QAAQhR;;AAE/C,YAAIrH,MAAMM,SAAS,SAAS;AAC1BqB,wBAAc0G,aAAarI;QAC5B;AAEDqY,gBAAQrB,cAAcrV,aAAtB;MACD;IACF;IAE2B,OAArB6W,sBAAsBxY,OAAO;AAIlC,YAAMyY,UAAU,kBAAkBzR,KAAKhH,MAAM3B,OAAOiK,OAApC;AAChB,YAAMoQ,gBAAgB1Y,MAAM2D,QAAQ6Q;AACpC,YAAMmE,kBAAkB,CAACjE,gBAAcC,gBAAf,EAA+Bnb,SAASwG,MAAM2D,GAA9C;AAExB,UAAI,CAACgV,mBAAmB,CAACD,eAAe;AACtC;MACD;AAED,UAAID,WAAW,CAACC,eAAe;AAC7B;MACD;AAED1Y,YAAMwD,eAAN;AAGA,YAAMoV,kBAAkB,KAAK9O,QAAQX,sBAAb,IACtB,OACCK,eAAeS,KAAK,MAAMd,sBAA1B,EAAgD,CAAhD,KACCK,eAAeY,KAAK,MAAMjB,sBAA1B,EAAgD,CAAhD,KACAK,eAAeG,QAAQR,wBAAsBnJ,MAAME,eAAe3E,UAAlE;AAEJ,YAAM6I,WAAWmS,SAASvO,oBAAoB4Q,eAA7B;AAEjB,UAAID,iBAAiB;AACnB3Y,cAAM6Y,gBAAN;AACAzU,iBAASoP,KAAT;AACApP,iBAAS8T,gBAAgBlY,KAAzB;AACA;MACD;AAED,UAAIoE,SAASkP,SAAT,GAAqB;AACvBtT,cAAM6Y,gBAAN;AACAzU,iBAASmP,KAAT;AACAqF,wBAAgB7B,MAAhB;MACD;IACF;EApVkC;AA2VrC3W,eAAakC,GAAGrJ,UAAU4b,wBAAwB1L,wBAAsBoN,SAASiC,qBAAjF;AACApY,eAAakC,GAAGrJ,UAAU4b,wBAAwBQ,eAAekB,SAASiC,qBAA1E;AACApY,eAAakC,GAAGrJ,UAAUmQ,wBAAsBmN,SAAS4B,UAAzD;AACA/X,eAAakC,GAAGrJ,UAAU6b,sBAAsByB,SAAS4B,UAAzD;AACA/X,eAAakC,GAAGrJ,UAAUmQ,wBAAsBD,wBAAsB,SAAUnJ,OAAO;AACrFA,UAAMwD,eAAN;AACA+S,aAASvO,oBAAoB,IAA7B,EAAmCsB,OAAnC;EACD,CAHD;AASAnM,qBAAmBoZ,QAAD;ACpblB,MAAMuC,yBAAyB;AAC/B,MAAMC,0BAA0B;AAChC,MAAMC,mBAAmB;AACzB,MAAMC,kBAAkB;AAMxB,MAAMC,kBAAN,MAAsB;IACpBxS,cAAc;AACZ,WAAKW,WAAWpO,SAASyD;IAC1B;;IAGDyc,WAAW;AAET,YAAMC,gBAAgBngB,SAAS+C,gBAAgBqd;AAC/C,aAAOvgB,KAAKuT,IAAInS,OAAOof,aAAaF,aAA7B;IACR;IAED7F,OAAO;AACL,YAAMgG,SAAQ,KAAKJ,SAAL;AACd,WAAKK,iBAAL;AAEA,WAAKC,sBAAsB,KAAKpS,UAAU2R,kBAAkBU,qBAAmBA,kBAAkBH,MAAjG;AAEA,WAAKE,sBAAsBX,wBAAwBE,kBAAkBU,qBAAmBA,kBAAkBH,MAA1G;AACA,WAAKE,sBAAsBV,yBAAyBE,iBAAiBS,qBAAmBA,kBAAkBH,MAA1G;IACD;IAEDI,QAAQ;AACN,WAAKC,wBAAwB,KAAKvS,UAAU,UAA5C;AACA,WAAKuS,wBAAwB,KAAKvS,UAAU2R,gBAA5C;AACA,WAAKY,wBAAwBd,wBAAwBE,gBAArD;AACA,WAAKY,wBAAwBb,yBAAyBE,eAAtD;IACD;IAEDY,gBAAgB;AACd,aAAO,KAAKV,SAAL,IAAkB;IAC1B;;IAGDK,mBAAmB;AACjB,WAAKM,sBAAsB,KAAKzS,UAAU,UAA1C;AACA,WAAKA,SAAS0M,MAAMgG,WAAW;IAChC;IAEDN,sBAAsBpgB,UAAU2gB,eAAend,WAAU;AACvD,YAAMod,iBAAiB,KAAKd,SAAL;AACvB,YAAMe,uBAAuB9gB,aAAW;AACtC,YAAIA,YAAY,KAAKiO,YAAYnN,OAAOof,aAAalgB,QAAQigB,cAAcY,gBAAgB;AACzF;QACD;AAED,aAAKH,sBAAsB1gB,SAAS4gB,aAApC;AACA,cAAMN,kBAAkBxf,OAAOC,iBAAiBf,OAAxB,EAAiC+B,iBAAiB6e,aAAlD;AACxB5gB,gBAAQ2a,MAAMoG,YAAYH,eAAgB,GAAEnd,UAASxC,OAAOC,WAAWof,eAAlB,CAAD,KAApD;;AAGF,WAAKU,2BAA2B/gB,UAAU6gB,oBAA1C;IACD;IAEDJ,sBAAsB1gB,SAAS4gB,eAAe;AAC5C,YAAMK,cAAcjhB,QAAQ2a,MAAM5Y,iBAAiB6e,aAA/B;AACpB,UAAIK,aAAa;AACflV,oBAAYC,iBAAiBhM,SAAS4gB,eAAeK,WAArD;MACD;IACF;IAEDT,wBAAwBvgB,UAAU2gB,eAAe;AAC/C,YAAME,uBAAuB9gB,aAAW;AACtC,cAAMwK,QAAQuB,YAAYY,iBAAiB3M,SAAS4gB,aAAtC;AAEd,YAAIpW,UAAU,MAAM;AAClBxK,kBAAQ2a,MAAMuG,eAAeN,aAA7B;AACA;QACD;AAED7U,oBAAYG,oBAAoBlM,SAAS4gB,aAAzC;AACA5gB,gBAAQ2a,MAAMoG,YAAYH,eAAepW,KAAzC;;AAGF,WAAKwW,2BAA2B/gB,UAAU6gB,oBAA1C;IACD;IAEDE,2BAA2B/gB,UAAUkhB,UAAU;AAC7C,UAAI5f,WAAUtB,QAAD,GAAY;AACvBkhB,iBAASlhB,QAAD;AACR;MACD;AAED,iBAAWmhB,OAAOhR,eAAevI,KAAK5H,UAAU,KAAKgO,QAAnC,GAA8C;AAC9DkT,iBAASC,GAAD;MACT;IACF;EAtFmB;ACTtB,MAAMjd,SAAO;AACb,MAAMkL,oBAAkB;AACxB,MAAMC,oBAAkB;AACxB,MAAM+R,kBAAmB,gBAAeld;AAExC,MAAM0I,YAAU;IACdyU,WAAW;IACXC,eAAe;IACf7S,YAAY;IACZ9M,WAAW;;IACX4f,aAAa;;EALC;AAQhB,MAAM1U,gBAAc;IAClBwU,WAAW;IACXC,eAAe;IACf7S,YAAY;IACZ9M,WAAW;IACX4f,aAAa;EALK;AAYpB,MAAMC,WAAN,cAAuB7U,QAAO;IAC5BU,YAAYL,SAAQ;AAClB,YAAA;AACA,WAAKiB,UAAU,KAAKlB,WAAWC,OAAhB;AACf,WAAKyU,cAAc;AACnB,WAAKzT,WAAW;IACjB;;IAGiB,WAAPpB,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGDiW,KAAK3W,WAAU;AACb,UAAI,CAAC,KAAKyK,QAAQtM,WAAW;AAC3B6C,gBAAQhB,SAAD;AACP;MACD;AAED,WAAKke,QAAL;AAEA,YAAM3hB,UAAU,KAAK4hB,YAAL;AAChB,UAAI,KAAK1T,QAAQQ,YAAY;AAC3BxL,eAAOlD,OAAD;MACP;AAEDA,cAAQuC,UAAU4Q,IAAI7D,iBAAtB;AAEA,WAAKuS,kBAAkB,MAAM;AAC3Bpd,gBAAQhB,SAAD;OADT;IAGD;IAED0W,KAAK1W,WAAU;AACb,UAAI,CAAC,KAAKyK,QAAQtM,WAAW;AAC3B6C,gBAAQhB,SAAD;AACP;MACD;AAED,WAAKme,YAAL,EAAmBrf,UAAUgJ,OAAO+D,iBAApC;AAEA,WAAKuS,kBAAkB,MAAM;AAC3B,aAAKxT,QAAL;AACA5J,gBAAQhB,SAAD;OAFT;IAID;IAED4K,UAAU;AACR,UAAI,CAAC,KAAKqT,aAAa;AACrB;MACD;AAED1a,mBAAaC,IAAI,KAAKgH,UAAUoT,eAAhC;AAEA,WAAKpT,SAAS1C,OAAd;AACA,WAAKmW,cAAc;IACpB;;IAGDE,cAAc;AACZ,UAAI,CAAC,KAAK3T,UAAU;AAClB,cAAM6T,WAAWjiB,SAASkiB,cAAc,KAAvB;AACjBD,iBAASR,YAAY,KAAKpT,QAAQoT;AAClC,YAAI,KAAKpT,QAAQQ,YAAY;AAC3BoT,mBAASvf,UAAU4Q,IAAI9D,iBAAvB;QACD;AAED,aAAKpB,WAAW6T;MACjB;AAED,aAAO,KAAK7T;IACb;IAEDd,kBAAkBF,SAAQ;AAExBA,MAAAA,QAAOuU,cAAc9f,WAAWuL,QAAOuU,WAAR;AAC/B,aAAOvU;IACR;IAED0U,UAAU;AACR,UAAI,KAAKD,aAAa;AACpB;MACD;AAED,YAAM1hB,UAAU,KAAK4hB,YAAL;AAChB,WAAK1T,QAAQsT,YAAYQ,OAAOhiB,OAAhC;AAEAgH,mBAAakC,GAAGlJ,SAASqhB,iBAAiB,MAAM;AAC9C5c,gBAAQ,KAAKyJ,QAAQqT,aAAd;OADT;AAIA,WAAKG,cAAc;IACpB;IAEDG,kBAAkBpe,WAAU;AAC1BiB,6BAAuBjB,WAAU,KAAKme,YAAL,GAAoB,KAAK1T,QAAQQ,UAA5C;IACvB;EAzG2B;ACzB9B,MAAMvK,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AACtB,MAAM6T,kBAAiB,UAAS3T;AAChC,MAAM4T,oBAAqB,cAAa5T;AAExC,MAAM+M,UAAU;AAChB,MAAM8G,kBAAkB;AACxB,MAAMC,mBAAmB;AAEzB,MAAMvV,YAAU;IACdwV,WAAW;IACXC,aAAa;;EAFC;AAKhB,MAAMxV,gBAAc;IAClBuV,WAAW;IACXC,aAAa;EAFK;AASpB,MAAMC,YAAN,cAAwB3V,QAAO;IAC7BU,YAAYL,SAAQ;AAClB,YAAA;AACA,WAAKiB,UAAU,KAAKlB,WAAWC,OAAhB;AACf,WAAKuV,YAAY;AACjB,WAAKC,uBAAuB;IAC7B;;IAGiB,WAAP5V,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGDue,WAAW;AACT,UAAI,KAAKF,WAAW;AAClB;MACD;AAED,UAAI,KAAKtU,QAAQmU,WAAW;AAC1B,aAAKnU,QAAQoU,YAAY3E,MAAzB;MACD;AAED3W,mBAAaC,IAAIpH,UAAUyO,WAA3B;AACAtH,mBAAakC,GAAGrJ,UAAUoiB,iBAAerb,WAAS,KAAK+b,eAAe/b,KAApB,CAAlD;AACAI,mBAAakC,GAAGrJ,UAAUqiB,mBAAmBtb,WAAS,KAAKgc,eAAehc,KAApB,CAAtD;AAEA,WAAK4b,YAAY;IAClB;IAEDK,aAAa;AACX,UAAI,CAAC,KAAKL,WAAW;AACnB;MACD;AAED,WAAKA,YAAY;AACjBxb,mBAAaC,IAAIpH,UAAUyO,WAA3B;IACD;;IAGDqU,eAAe/b,OAAO;AACpB,YAAM;QAAE0b;MAAF,IAAkB,KAAKpU;AAE7B,UAAItH,MAAM3B,WAAWpF,YAAY+G,MAAM3B,WAAWqd,eAAeA,YAAY9f,SAASoE,MAAM3B,MAA3B,GAAoC;AACnG;MACD;AAED,YAAM6d,YAAW1S,eAAec,kBAAkBoR,WAAjC;AAEjB,UAAIQ,UAASnhB,WAAW,GAAG;AACzB2gB,oBAAY3E,MAAZ;MACD,WAAU,KAAK8E,yBAAyBL,kBAAkB;AACzDU,QAAAA,UAASA,UAASnhB,SAAS,CAAnB,EAAsBgc,MAA9B;MACD,OAAM;AACLmF,QAAAA,UAAS,CAAD,EAAInF,MAAZ;MACD;IACF;IAEDiF,eAAehc,OAAO;AACpB,UAAIA,MAAM2D,QAAQ8Q,SAAS;AACzB;MACD;AAED,WAAKoH,uBAAuB7b,MAAMmc,WAAWX,mBAAmBD;IACjE;EAxE4B;ACnB/B,MAAMhe,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AACtB,MAAMyB,iBAAe;AACrB,MAAMuL,eAAa;AAEnB,MAAMtC,eAAc,OAAMxK;AAC1B,MAAM0U,yBAAwB,gBAAe1U;AAC7C,MAAMyK,iBAAgB,SAAQzK;AAC9B,MAAMsK,eAAc,OAAMtK;AAC1B,MAAMuK,gBAAe,QAAOvK;AAC5B,MAAM2U,iBAAgB,SAAQ3U;AAC9B,MAAM4U,sBAAuB,gBAAe5U;AAC5C,MAAM6U,0BAA2B,oBAAmB7U;AACpD,MAAM8U,0BAAyB,kBAAiB9U;AAChD,MAAM0B,yBAAwB,QAAO1B,cAAYuB;AAEjD,MAAMwT,kBAAkB;AACxB,MAAMhU,oBAAkB;AACxB,MAAMC,oBAAkB;AACxB,MAAMgU,oBAAoB;AAE1B,MAAMC,kBAAgB;AACtB,MAAMC,kBAAkB;AACxB,MAAMC,sBAAsB;AAC5B,MAAM1T,yBAAuB;AAE7B,MAAMlD,YAAU;IACdiV,UAAU;IACVnE,OAAO;IACPvI,UAAU;EAHI;AAMhB,MAAMtI,gBAAc;IAClBgV,UAAU;IACVnE,OAAO;IACPvI,UAAU;EAHQ;AAUpB,MAAMsO,QAAN,cAAoB1V,cAAc;IAChCV,YAAYtN,SAASiN,SAAQ;AAC3B,YAAMjN,SAASiN,OAAf;AAEA,WAAK0W,UAAUvT,eAAeG,QAAQiT,iBAAiB,KAAKvV,QAA7C;AACf,WAAK2V,YAAY,KAAKC,oBAAL;AACjB,WAAKC,aAAa,KAAKC,qBAAL;AAClB,WAAK7J,WAAW;AAChB,WAAKR,mBAAmB;AACxB,WAAKsK,aAAa,IAAIlE,gBAAJ;AAElB,WAAK9J,mBAAL;IACD;;IAGiB,WAAPnJ,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGD+L,OAAO3H,eAAe;AACpB,aAAO,KAAK2R,WAAW,KAAKC,KAAL,IAAc,KAAKC,KAAK7R,aAAV;IACtC;IAED6R,KAAK7R,eAAe;AAClB,UAAI,KAAK2R,YAAY,KAAKR,kBAAkB;AAC1C;MACD;AAED,YAAM+D,YAAYzW,aAAayC,QAAQ,KAAKwE,UAAU2K,cAAY;QAChErQ;MADgE,CAAhD;AAIlB,UAAIkV,UAAU3T,kBAAkB;AAC9B;MACD;AAED,WAAKoQ,WAAW;AAChB,WAAKR,mBAAmB;AAExB,WAAKsK,WAAW7J,KAAhB;AAEAta,eAASyD,KAAKf,UAAU4Q,IAAIkQ,eAA5B;AAEA,WAAKY,cAAL;AAEA,WAAKL,UAAUxJ,KAAK,MAAM,KAAK8J,aAAa3b,aAAlB,CAA1B;IACD;IAED4R,OAAO;AACL,UAAI,CAAC,KAAKD,YAAY,KAAKR,kBAAkB;AAC3C;MACD;AAED,YAAMqE,YAAY/W,aAAayC,QAAQ,KAAKwE,UAAU6K,YAApC;AAElB,UAAIiF,UAAUjU,kBAAkB;AAC9B;MACD;AAED,WAAKoQ,WAAW;AAChB,WAAKR,mBAAmB;AACxB,WAAKoK,WAAWjB,WAAhB;AAEA,WAAK5U,SAAS1L,UAAUgJ,OAAO+D,iBAA/B;AAEA,WAAKb,eAAe,MAAM,KAAK0V,WAAL,GAAmB,KAAKlW,UAAU,KAAKsK,YAAL,CAA5D;IACD;IAEDlK,UAAU;AACR,iBAAW+V,eAAe,CAACtjB,QAAQ,KAAK6iB,OAAd,GAAwB;AAChD3c,qBAAaC,IAAImd,aAAa9V,WAA9B;MACD;AAED,WAAKsV,UAAUvV,QAAf;AACA,WAAKyV,WAAWjB,WAAhB;AACA,YAAMxU,QAAN;IACD;IAEDgW,eAAe;AACb,WAAKJ,cAAL;IACD;;IAGDJ,sBAAsB;AACpB,aAAO,IAAIpC,SAAS;QAClB7f,WAAWgH,QAAQ,KAAKsF,QAAQ4T,QAAd;;QAClBpT,YAAY,KAAK6J,YAAL;MAFM,CAAb;IAIR;IAEDwL,uBAAuB;AACrB,aAAO,IAAIxB,UAAU;QACnBD,aAAa,KAAKrU;MADC,CAAd;IAGR;IAEDiW,aAAa3b,eAAe;AAE1B,UAAI,CAAC1I,SAASyD,KAAKd,SAAS,KAAKyL,QAA5B,GAAuC;AAC1CpO,iBAASyD,KAAK0e,OAAO,KAAK/T,QAA1B;MACD;AAED,WAAKA,SAAS0M,MAAMoC,UAAU;AAC9B,WAAK9O,SAAS9B,gBAAgB,aAA9B;AACA,WAAK8B,SAAShC,aAAa,cAAc,IAAzC;AACA,WAAKgC,SAAShC,aAAa,QAAQ,QAAnC;AACA,WAAKgC,SAASqW,YAAY;AAE1B,YAAMC,YAAYnU,eAAeG,QAAQkT,qBAAqB,KAAKE,OAAjD;AAClB,UAAIY,WAAW;AACbA,kBAAUD,YAAY;MACvB;AAEDphB,aAAO,KAAK+K,QAAN;AAEN,WAAKA,SAAS1L,UAAU4Q,IAAI7D,iBAA5B;AAEA,YAAMkV,qBAAqB,MAAM;AAC/B,YAAI,KAAKtW,QAAQyP,OAAO;AACtB,eAAKmG,WAAWpB,SAAhB;QACD;AAED,aAAKhJ,mBAAmB;AACxB1S,qBAAayC,QAAQ,KAAKwE,UAAU4K,eAAa;UAC/CtQ;SADF;;AAKF,WAAKkG,eAAe+V,oBAAoB,KAAKb,SAAS,KAAKpL,YAAL,CAAtD;IACD;IAEDvC,qBAAqB;AACnBhP,mBAAakC,GAAG,KAAK+E,UAAUmV,yBAAuBxc,WAAS;AAC7D,YAAIA,MAAM2D,QAAQ6Q,cAAY;AAC5B;QACD;AAED,YAAI,KAAKlN,QAAQkH,UAAU;AACzBxO,gBAAMwD,eAAN;AACA,eAAK+P,KAAL;AACA;QACD;AAED,aAAKsK,2BAAL;OAXF;AAcAzd,mBAAakC,GAAGpI,QAAQmiB,gBAAc,MAAM;AAC1C,YAAI,KAAK/I,YAAY,CAAC,KAAKR,kBAAkB;AAC3C,eAAKuK,cAAL;QACD;OAHH;AAMAjd,mBAAakC,GAAG,KAAK+E,UAAUkV,yBAAyBvc,WAAS;AAE/DI,qBAAamC,IAAI,KAAK8E,UAAUiV,qBAAqBwB,YAAU;AAC7D,cAAI,KAAKzW,aAAarH,MAAM3B,UAAU,KAAKgJ,aAAayW,OAAOzf,QAAQ;AACrE;UACD;AAED,cAAI,KAAKiJ,QAAQ4T,aAAa,UAAU;AACtC,iBAAK2C,2BAAL;AACA;UACD;AAED,cAAI,KAAKvW,QAAQ4T,UAAU;AACzB,iBAAK3H,KAAL;UACD;SAZH;OAFF;IAiBD;IAEDgK,aAAa;AACX,WAAKlW,SAAS0M,MAAMoC,UAAU;AAC9B,WAAK9O,SAAShC,aAAa,eAAe,IAA1C;AACA,WAAKgC,SAAS9B,gBAAgB,YAA9B;AACA,WAAK8B,SAAS9B,gBAAgB,MAA9B;AACA,WAAKuN,mBAAmB;AAExB,WAAKkK,UAAUzJ,KAAK,MAAM;AACxBta,iBAASyD,KAAKf,UAAUgJ,OAAO8X,eAA/B;AACA,aAAKsB,kBAAL;AACA,aAAKX,WAAWzD,MAAhB;AACAvZ,qBAAayC,QAAQ,KAAKwE,UAAU8K,cAApC;OAJF;IAMD;IAEDR,cAAc;AACZ,aAAO,KAAKtK,SAAS1L,UAAUC,SAAS6M,iBAAjC;IACR;IAEDoV,6BAA6B;AAC3B,YAAM1G,YAAY/W,aAAayC,QAAQ,KAAKwE,UAAU+U,sBAApC;AAClB,UAAIjF,UAAUjU,kBAAkB;AAC9B;MACD;AAED,YAAM8a,qBAAqB,KAAK3W,SAAS4W,eAAehlB,SAAS+C,gBAAgBkiB;AACjF,YAAMC,mBAAmB,KAAK9W,SAAS0M,MAAMqK;AAE7C,UAAID,qBAAqB,YAAY,KAAK9W,SAAS1L,UAAUC,SAAS8gB,iBAAjC,GAAqD;AACxF;MACD;AAED,UAAI,CAACsB,oBAAoB;AACvB,aAAK3W,SAAS0M,MAAMqK,YAAY;MACjC;AAED,WAAK/W,SAAS1L,UAAU4Q,IAAImQ,iBAA5B;AACA,WAAK7U,eAAe,MAAM;AACxB,aAAKR,SAAS1L,UAAUgJ,OAAO+X,iBAA/B;AACA,aAAK7U,eAAe,MAAM;AACxB,eAAKR,SAAS0M,MAAMqK,YAAYD;WAC/B,KAAKpB,OAFR;SAGC,KAAKA,OALR;AAOA,WAAK1V,SAAS0P,MAAd;IACD;;;;IAMDsG,gBAAgB;AACd,YAAMW,qBAAqB,KAAK3W,SAAS4W,eAAehlB,SAAS+C,gBAAgBkiB;AACjF,YAAMjE,iBAAiB,KAAKmD,WAAWjE,SAAhB;AACvB,YAAMkF,oBAAoBpE,iBAAiB;AAE3C,UAAIoE,qBAAqB,CAACL,oBAAoB;AAC5C,cAAMpX,WAAW3J,MAAK,IAAK,gBAAgB;AAC3C,aAAKoK,SAAS0M,MAAMnN,QAApB,IAAiC,GAAEqT;MACpC;AAED,UAAI,CAACoE,qBAAqBL,oBAAoB;AAC5C,cAAMpX,WAAW3J,MAAK,IAAK,iBAAiB;AAC5C,aAAKoK,SAAS0M,MAAMnN,QAApB,IAAiC,GAAEqT;MACpC;IACF;IAED8D,oBAAoB;AAClB,WAAK1W,SAAS0M,MAAMuK,cAAc;AAClC,WAAKjX,SAAS0M,MAAMwK,eAAe;IACpC;;IAGqB,OAAf7gB,gBAAgB2I,SAAQ1E,eAAe;AAC5C,aAAO,KAAKoH,KAAK,WAAY;AAC3B,cAAMC,QAAO8T,MAAM9U,oBAAoB,MAAM3B,OAAhC;AAEb,YAAI,OAAOA,YAAW,UAAU;AAC9B;QACD;AAED,YAAI,OAAO2C,MAAK3C,OAAD,MAAa,aAAa;AACvC,gBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;QACP;AAED2C,QAAAA,MAAK3C,OAAD,EAAS1E,aAAb;MACD,CAZM;IAaR;EA3Q+B;AAkRlCvB,eAAakC,GAAGrJ,UAAUmQ,wBAAsBD,wBAAsB,SAAUnJ,OAAO;AACrF,UAAM3B,SAASvE,uBAAuB,IAAD;AAErC,QAAI,CAAC,KAAK,MAAN,EAAcN,SAAS,KAAK8O,OAA5B,GAAsC;AACxCtI,YAAMwD,eAAN;IACD;AAEDpD,iBAAamC,IAAIlE,QAAQ2T,cAAY6E,eAAa;AAChD,UAAIA,UAAU3T,kBAAkB;AAE9B;MACD;AAED9C,mBAAamC,IAAIlE,QAAQ8T,gBAAc,MAAM;AAC3C,YAAInX,UAAU,IAAD,GAAQ;AACnB,eAAK+b,MAAL;QACD;OAHH;IAKD,CAXD;AAcA,UAAMyH,cAAchV,eAAeG,QAAQgT,eAAvB;AACpB,QAAI6B,aAAa;AACf1B,YAAM/U,YAAYyW,WAAlB,EAA+BjL,KAA/B;IACD;AAED,UAAMvK,QAAO8T,MAAM9U,oBAAoB3J,MAA1B;AAEb2K,IAAAA,MAAKM,OAAO,IAAZ;EACD,CA7BD;AA+BApB,uBAAqB4U,KAAD;AAMpB3f,qBAAmB2f,KAAD;AC7VlB,MAAMvf,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AACtB,MAAMyB,iBAAe;AACrB,MAAMuE,wBAAuB,OAAM9F,cAAYuB;AAC/C,MAAMuL,aAAa;AAEnB,MAAM9L,oBAAkB;AACxB,MAAM+V,uBAAqB;AAC3B,MAAMC,oBAAoB;AAC1B,MAAMC,sBAAsB;AAC5B,MAAMhC,gBAAgB;AAEtB,MAAM3K,eAAc,OAAMtK;AAC1B,MAAMuK,gBAAe,QAAOvK;AAC5B,MAAMwK,eAAc,OAAMxK;AAC1B,MAAM0U,uBAAwB,gBAAe1U;AAC7C,MAAMyK,iBAAgB,SAAQzK;AAC9B,MAAM2U,eAAgB,SAAQ3U;AAC9B,MAAM0B,yBAAwB,QAAO1B,cAAYuB;AACjD,MAAMuT,wBAAyB,kBAAiB9U;AAEhD,MAAMyB,yBAAuB;AAE7B,MAAMlD,YAAU;IACdiV,UAAU;IACV1M,UAAU;IACVoQ,QAAQ;EAHM;AAMhB,MAAM1Y,gBAAc;IAClBgV,UAAU;IACV1M,UAAU;IACVoQ,QAAQ;EAHU;AAUpB,MAAMC,YAAN,cAAwBzX,cAAc;IACpCV,YAAYtN,SAASiN,SAAQ;AAC3B,YAAMjN,SAASiN,OAAf;AAEA,WAAKiN,WAAW;AAChB,WAAK0J,YAAY,KAAKC,oBAAL;AACjB,WAAKC,aAAa,KAAKC,qBAAL;AAClB,WAAK/N,mBAAL;IACD;;IAGiB,WAAPnJ,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGD+L,OAAO3H,eAAe;AACpB,aAAO,KAAK2R,WAAW,KAAKC,KAAL,IAAc,KAAKC,KAAK7R,aAAV;IACtC;IAED6R,KAAK7R,eAAe;AAClB,UAAI,KAAK2R,UAAU;AACjB;MACD;AAED,YAAMuD,YAAYzW,aAAayC,QAAQ,KAAKwE,UAAU2K,cAAY;QAAErQ;MAAF,CAAhD;AAElB,UAAIkV,UAAU3T,kBAAkB;AAC9B;MACD;AAED,WAAKoQ,WAAW;AAChB,WAAK0J,UAAUxJ,KAAf;AAEA,UAAI,CAAC,KAAKlM,QAAQsX,QAAQ;AACxB,YAAI1F,gBAAJ,EAAsB3F,KAAtB;MACD;AAED,WAAKlM,SAAShC,aAAa,cAAc,IAAzC;AACA,WAAKgC,SAAShC,aAAa,QAAQ,QAAnC;AACA,WAAKgC,SAAS1L,UAAU4Q,IAAIkS,oBAA5B;AAEA,YAAM/M,mBAAmB,MAAM;AAC7B,YAAI,CAAC,KAAKpK,QAAQsX,UAAU,KAAKtX,QAAQ4T,UAAU;AACjD,eAAKgC,WAAWpB,SAAhB;QACD;AAED,aAAKzU,SAAS1L,UAAU4Q,IAAI7D,iBAA5B;AACA,aAAKrB,SAAS1L,UAAUgJ,OAAO8Z,oBAA/B;AACAre,qBAAayC,QAAQ,KAAKwE,UAAU4K,eAAa;UAAEtQ;SAAnD;;AAGF,WAAKkG,eAAe6J,kBAAkB,KAAKrK,UAAU,IAArD;IACD;IAEDkM,OAAO;AACL,UAAI,CAAC,KAAKD,UAAU;AAClB;MACD;AAED,YAAM6D,YAAY/W,aAAayC,QAAQ,KAAKwE,UAAU6K,YAApC;AAElB,UAAIiF,UAAUjU,kBAAkB;AAC9B;MACD;AAED,WAAKga,WAAWjB,WAAhB;AACA,WAAK5U,SAASyX,KAAd;AACA,WAAKxL,WAAW;AAChB,WAAKjM,SAAS1L,UAAU4Q,IAAImS,iBAA5B;AACA,WAAK1B,UAAUzJ,KAAf;AAEA,YAAMwL,mBAAmB,MAAM;AAC7B,aAAK1X,SAAS1L,UAAUgJ,OAAO+D,mBAAiBgW,iBAAhD;AACA,aAAKrX,SAAS9B,gBAAgB,YAA9B;AACA,aAAK8B,SAAS9B,gBAAgB,MAA9B;AAEA,YAAI,CAAC,KAAK+B,QAAQsX,QAAQ;AACxB,cAAI1F,gBAAJ,EAAsBS,MAAtB;QACD;AAEDvZ,qBAAayC,QAAQ,KAAKwE,UAAU8K,cAApC;;AAGF,WAAKtK,eAAekX,kBAAkB,KAAK1X,UAAU,IAArD;IACD;IAEDI,UAAU;AACR,WAAKuV,UAAUvV,QAAf;AACA,WAAKyV,WAAWjB,WAAhB;AACA,YAAMxU,QAAN;IACD;;IAGDwV,sBAAsB;AACpB,YAAMtC,gBAAgB,MAAM;AAC1B,YAAI,KAAKrT,QAAQ4T,aAAa,UAAU;AACtC9a,uBAAayC,QAAQ,KAAKwE,UAAU+U,oBAApC;AACA;QACD;AAED,aAAK7I,KAAL;MACD;AAGD,YAAMvY,aAAYgH,QAAQ,KAAKsF,QAAQ4T,QAAd;AAEzB,aAAO,IAAIL,SAAS;QAClBH,WAAWiE;QACX3jB,WAAAA;QACA8M,YAAY;QACZ8S,aAAa,KAAKvT,SAAS9L;QAC3Bof,eAAe3f,aAAY2f,gBAAgB;MALzB,CAAb;IAOR;IAEDwC,uBAAuB;AACrB,aAAO,IAAIxB,UAAU;QACnBD,aAAa,KAAKrU;MADC,CAAd;IAGR;IAED+H,qBAAqB;AACnBhP,mBAAakC,GAAG,KAAK+E,UAAUmV,uBAAuBxc,WAAS;AAC7D,YAAIA,MAAM2D,QAAQ6Q,YAAY;AAC5B;QACD;AAED,YAAI,CAAC,KAAKlN,QAAQkH,UAAU;AAC1BpO,uBAAayC,QAAQ,KAAKwE,UAAU+U,oBAApC;AACA;QACD;AAED,aAAK7I,KAAL;OAVF;IAYD;;IAGqB,OAAf7V,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAO6V,UAAU7W,oBAAoB,MAAM3B,OAApC;AAEb,YAAI,OAAOA,YAAW,UAAU;AAC9B;QACD;AAED,YAAI2C,MAAK3C,OAAD,MAAahO,UAAagO,QAAO5M,WAAW,GAAlB,KAA0B4M,YAAW,eAAe;AACpF,gBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;QACP;AAED2C,QAAAA,MAAK3C,OAAD,EAAS,IAAb;MACD,CAZM;IAaR;EAhKmC;AAuKtCjG,eAAakC,GAAGrJ,UAAUmQ,wBAAsBD,wBAAsB,SAAUnJ,OAAO;AACrF,UAAM3B,SAASvE,uBAAuB,IAAD;AAErC,QAAI,CAAC,KAAK,MAAN,EAAcN,SAAS,KAAK8O,OAA5B,GAAsC;AACxCtI,YAAMwD,eAAN;IACD;AAED,QAAIhI,WAAW,IAAD,GAAQ;AACpB;IACD;AAED4E,iBAAamC,IAAIlE,QAAQ8T,gBAAc,MAAM;AAE3C,UAAInX,UAAU,IAAD,GAAQ;AACnB,aAAK+b,MAAL;MACD;IACF,CALD;AAQA,UAAMyH,cAAchV,eAAeG,QAAQgT,aAAvB;AACpB,QAAI6B,eAAeA,gBAAgBngB,QAAQ;AACzCwgB,gBAAU9W,YAAYyW,WAAtB,EAAmCjL,KAAnC;IACD;AAED,UAAMvK,QAAO6V,UAAU7W,oBAAoB3J,MAA9B;AACb2K,IAAAA,MAAKM,OAAO,IAAZ;EACD,CA1BD;AA4BAlJ,eAAakC,GAAGpI,QAAQsT,uBAAqB,MAAM;AACjD,eAAWnU,YAAYmQ,eAAevI,KAAK0b,aAApB,GAAoC;AACzDkC,gBAAU7W,oBAAoB3O,QAA9B,EAAwCma,KAAxC;IACD;EACF,CAJD;AAMApT,eAAakC,GAAGpI,QAAQmiB,cAAc,MAAM;AAC1C,eAAWjjB,WAAWoQ,eAAevI,KAAK,8CAApB,GAAqE;AACzF,UAAI9G,iBAAiBf,OAAD,EAAU4lB,aAAa,SAAS;AAClDH,kBAAU7W,oBAAoB5O,OAA9B,EAAuCma,KAAvC;MACD;IACF;EACF,CAND;AAQArL,uBAAqB2W,SAAD;AAMpB1hB,qBAAmB0hB,SAAD;ACjRlB,MAAMI,gBAAgB,oBAAItf,IAAI,CAC5B,cACA,QACA,QACA,YACA,YACA,UACA,OACA,YAR4B,CAAR;AAWtB,MAAMuf,yBAAyB;AAO/B,MAAMC,mBAAmB;AAOzB,MAAMC,mBAAmB;AAEzB,MAAMC,mBAAmB,CAACC,WAAWC,yBAAyB;AAC5D,UAAMC,gBAAgBF,UAAUG,SAAS9mB,YAAnB;AAEtB,QAAI4mB,qBAAqB/lB,SAASgmB,aAA9B,GAA8C;AAChD,UAAIP,cAAczd,IAAIge,aAAlB,GAAkC;AACpC,eAAOxd,QAAQmd,iBAAiBnY,KAAKsY,UAAUI,SAAhC,KAA8CN,iBAAiBpY,KAAKsY,UAAUI,SAAhC,CAA/C;MACf;AAED,aAAO;IACR;AAGD,WAAOH,qBAAqB3Z,OAAO+Z,oBAAkBA,0BAA0B5Y,MAAxE,EACJ6Y,KAAKC,WAASA,MAAM7Y,KAAKwY,aAAX,CADV;EAER;AAEM,MAAMM,mBAAmB;;IAE9B,KAAK,CAAC,SAAS,OAAO,MAAM,QAAQ,QAAQZ,sBAAvC;IACLa,GAAG,CAAC,UAAU,QAAQ,SAAS,KAA5B;IACHC,MAAM,CAAA;IACNC,GAAG,CAAA;IACHC,IAAI,CAAA;IACJC,KAAK,CAAA;IACLC,MAAM,CAAA;IACNC,KAAK,CAAA;IACLC,IAAI,CAAA;IACJC,IAAI,CAAA;IACJC,IAAI,CAAA;IACJC,IAAI,CAAA;IACJC,IAAI,CAAA;IACJC,IAAI,CAAA;IACJC,IAAI,CAAA;IACJC,IAAI,CAAA;IACJC,GAAG,CAAA;IACHvQ,KAAK,CAAC,OAAO,UAAU,OAAO,SAAS,SAAS,QAA3C;IACLwQ,IAAI,CAAA;IACJC,IAAI,CAAA;IACJC,GAAG,CAAA;IACHC,KAAK,CAAA;IACLC,GAAG,CAAA;IACHC,OAAO,CAAA;IACPC,MAAM,CAAA;IACNC,KAAK,CAAA;IACLC,KAAK,CAAA;IACLC,QAAQ,CAAA;IACRC,GAAG,CAAA;IACHC,IAAI,CAAA;EA/B0B;AAkCzB,WAASC,aAAaC,YAAYC,WAAWC,kBAAkB;AACpE,QAAI,CAACF,WAAW7mB,QAAQ;AACtB,aAAO6mB;IACR;AAED,QAAIE,oBAAoB,OAAOA,qBAAqB,YAAY;AAC9D,aAAOA,iBAAiBF,UAAD;IACxB;AAED,UAAMG,YAAY,IAAI7nB,OAAO8nB,UAAX;AAClB,UAAMC,kBAAkBF,UAAUG,gBAAgBN,YAAY,WAAtC;AACxB,UAAM1F,YAAW,CAAA,EAAGzS,OAAO,GAAGwY,gBAAgBvlB,KAAKgE,iBAAiB,GAAtC,CAAb;AAEjB,eAAWtH,WAAW8iB,WAAU;AAC9B,YAAMiG,cAAc/oB,QAAQqmB,SAAS9mB,YAAjB;AAEpB,UAAI,CAACL,OAAO+J,KAAKwf,SAAZ,EAAuBroB,SAAS2oB,WAAhC,GAA8C;AACjD/oB,gBAAQuL,OAAR;AAEA;MACD;AAED,YAAMyd,gBAAgB,CAAA,EAAG3Y,OAAO,GAAGrQ,QAAQqM,UAArB;AACtB,YAAM4c,oBAAoB,CAAA,EAAG5Y,OAAOoY,UAAU,GAAD,KAAS,CAAA,GAAIA,UAAUM,WAAD,KAAiB,CAAA,CAA1D;AAE1B,iBAAW7C,aAAa8C,eAAe;AACrC,YAAI,CAAC/C,iBAAiBC,WAAW+C,iBAAZ,GAAgC;AACnDjpB,kBAAQmM,gBAAgB+Z,UAAUG,QAAlC;QACD;MACF;IACF;AAED,WAAOwC,gBAAgBvlB,KAAK4lB;EAC7B;ACrGD,MAAM/kB,SAAO;AAEb,MAAM0I,YAAU;IACd4b,WAAW/B;IACXyC,SAAS,CAAA;;IACTC,YAAY;IACZC,MAAM;IACNC,UAAU;IACVC,YAAY;IACZC,UAAU;EAPI;AAUhB,MAAM1c,gBAAc;IAClB2b,WAAW;IACXU,SAAS;IACTC,YAAY;IACZC,MAAM;IACNC,UAAU;IACVC,YAAY;IACZC,UAAU;EAPQ;AAUpB,MAAMC,qBAAqB;IACzBC,OAAO;IACPzpB,UAAU;EAFe;AAS3B,MAAM0pB,kBAAN,cAA8B/c,QAAO;IACnCU,YAAYL,SAAQ;AAClB,YAAA;AACA,WAAKiB,UAAU,KAAKlB,WAAWC,OAAhB;IAChB;;IAGiB,WAAPJ,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGDylB,aAAa;AACX,aAAO1qB,OAAO0I,OAAO,KAAKsG,QAAQib,OAA3B,EACJ/X,IAAInE,CAAAA,YAAU,KAAK4c,yBAAyB5c,OAA9B,CADV,EAEJT,OAAO5D,OAFH;IAGR;IAEDkhB,aAAa;AACX,aAAO,KAAKF,WAAL,EAAkBjoB,SAAS;IACnC;IAEDooB,cAAcZ,SAAS;AACrB,WAAKa,cAAcb,OAAnB;AACA,WAAKjb,QAAQib,UAAU;QAAE,GAAG,KAAKjb,QAAQib;QAAS,GAAGA;;AACrD,aAAO;IACR;IAEDc,SAAS;AACP,YAAMC,kBAAkBrqB,SAASkiB,cAAc,KAAvB;AACxBmI,sBAAgBhB,YAAY,KAAKiB,eAAe,KAAKjc,QAAQsb,QAAjC;AAE5B,iBAAW,CAACvpB,UAAUmqB,IAAX,KAAoBlrB,OAAOuL,QAAQ,KAAKyD,QAAQib,OAA5B,GAAsC;AACnE,aAAKkB,YAAYH,iBAAiBE,MAAMnqB,QAAxC;MACD;AAED,YAAMupB,YAAWU,gBAAgB1Z,SAAS,CAAzB;AACjB,YAAM4Y,aAAa,KAAKS,yBAAyB,KAAK3b,QAAQkb,UAA3C;AAEnB,UAAIA,YAAY;AACdI,QAAAA,UAASjnB,UAAU4Q,IAAI,GAAGiW,WAAW9oB,MAAM,GAAjB,CAA1B;MACD;AAED,aAAOkpB;IACR;;IAGDpc,iBAAiBH,SAAQ;AACvB,YAAMG,iBAAiBH,OAAvB;AACA,WAAK+c,cAAc/c,QAAOkc,OAA1B;IACD;IAEDa,cAAcM,KAAK;AACjB,iBAAW,CAACrqB,UAAUkpB,OAAX,KAAuBjqB,OAAOuL,QAAQ6f,GAAf,GAAqB;AACrD,cAAMld,iBAAiB;UAAEnN;UAAUypB,OAAOP;QAAnB,GAA8BM,kBAArD;MACD;IACF;IAEDY,YAAYb,WAAUL,SAASlpB,UAAU;AACvC,YAAMsqB,kBAAkBna,eAAeG,QAAQtQ,UAAUupB,SAAjC;AAExB,UAAI,CAACe,iBAAiB;AACpB;MACD;AAEDpB,gBAAU,KAAKU,yBAAyBV,OAA9B;AAEV,UAAI,CAACA,SAAS;AACZoB,wBAAgBhf,OAAhB;AACA;MACD;AAED,UAAIhK,WAAU4nB,OAAD,GAAW;AACtB,aAAKqB,sBAAsB9oB,WAAWynB,OAAD,GAAWoB,eAAhD;AACA;MACD;AAED,UAAI,KAAKrc,QAAQmb,MAAM;AACrBkB,wBAAgBrB,YAAY,KAAKiB,eAAehB,OAApB;AAC5B;MACD;AAEDoB,sBAAgBE,cAActB;IAC/B;IAEDgB,eAAeG,KAAK;AAClB,aAAO,KAAKpc,QAAQob,WAAWf,aAAa+B,KAAK,KAAKpc,QAAQua,WAAW,KAAKva,QAAQqb,UAA3C,IAAyDe;IACrG;IAEDT,yBAAyBS,KAAK;AAC5B,aAAO,OAAOA,QAAQ,aAAaA,IAAI,IAAD,IAASA;IAChD;IAEDE,sBAAsBxqB,SAASuqB,iBAAiB;AAC9C,UAAI,KAAKrc,QAAQmb,MAAM;AACrBkB,wBAAgBrB,YAAY;AAC5BqB,wBAAgBvI,OAAOhiB,OAAvB;AACA;MACD;AAEDuqB,sBAAgBE,cAAczqB,QAAQyqB;IACvC;EA7GkC;AC5BrC,MAAMtmB,SAAO;AACb,MAAMumB,wBAAwB,oBAAInkB,IAAI,CAAC,YAAY,aAAa,YAA1B,CAAR;AAE9B,MAAM8I,oBAAkB;AACxB,MAAMsb,mBAAmB;AACzB,MAAMrb,oBAAkB;AAExB,MAAMsb,yBAAyB;AAC/B,MAAMC,iBAAkB,IAAGF;AAE3B,MAAMG,mBAAmB;AAEzB,MAAMC,gBAAgB;AACtB,MAAMC,gBAAgB;AACtB,MAAMC,gBAAgB;AACtB,MAAMC,iBAAiB;AAEvB,MAAMpS,eAAa;AACnB,MAAMC,iBAAe;AACrB,MAAMH,eAAa;AACnB,MAAMC,gBAAc;AACpB,MAAMsS,iBAAiB;AACvB,MAAMC,gBAAc;AACpB,MAAMnJ,kBAAgB;AACtB,MAAMoJ,mBAAiB;AACvB,MAAMpX,mBAAmB;AACzB,MAAMC,mBAAmB;AAEzB,MAAMoX,gBAAgB;IACpBC,MAAM;IACNC,KAAK;IACLC,OAAO5nB,MAAK,IAAK,SAAS;IAC1B6nB,QAAQ;IACRC,MAAM9nB,MAAK,IAAK,UAAU;EALN;AAQtB,MAAMgJ,YAAU;IACd4b,WAAW/B;IACXkF,WAAW;IACX9O,UAAU;IACV+O,WAAW;IACXC,aAAa;IACbC,OAAO;IACPC,oBAAoB,CAAC,OAAO,SAAS,UAAU,MAA3B;IACpB3C,MAAM;IACNrM,QAAQ,CAAC,GAAG,CAAJ;IACR0B,WAAW;IACXzB,cAAc;IACdqM,UAAU;IACVC,YAAY;IACZtpB,UAAU;IACVupB,UAAU;IAIVyC,OAAO;IACPxiB,SAAS;EApBK;AAuBhB,MAAMqD,gBAAc;IAClB2b,WAAW;IACXmD,WAAW;IACX9O,UAAU;IACV+O,WAAW;IACXC,aAAa;IACbC,OAAO;IACPC,oBAAoB;IACpB3C,MAAM;IACNrM,QAAQ;IACR0B,WAAW;IACXzB,cAAc;IACdqM,UAAU;IACVC,YAAY;IACZtpB,UAAU;IACVupB,UAAU;IACVyC,OAAO;IACPxiB,SAAS;EAjBS;AAwBpB,MAAMyiB,WAAN,cAAsBle,cAAc;IAClCV,YAAYtN,SAASiN,SAAQ;AAC3B,UAAI,OAAO+Q,gBAAW,aAAa;AACjC,cAAM,IAAInQ,UAAU,6DAAd;MACP;AAED,YAAM7N,SAASiN,OAAf;AAGA,WAAKkf,aAAa;AAClB,WAAKC,WAAW;AAChB,WAAKC,aAAa;AAClB,WAAKC,iBAAiB,CAAA;AACtB,WAAKlP,UAAU;AACf,WAAKmP,mBAAmB;AACxB,WAAKC,cAAc;AAGnB,WAAKC,MAAM;AAEX,WAAKC,cAAL;AAEA,UAAI,CAAC,KAAKxe,QAAQjO,UAAU;AAC1B,aAAK0sB,UAAL;MACD;IACF;;IAGiB,WAAP9f,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGDyoB,SAAS;AACP,WAAKT,aAAa;IACnB;IAEDU,UAAU;AACR,WAAKV,aAAa;IACnB;IAEDW,gBAAgB;AACd,WAAKX,aAAa,CAAC,KAAKA;IACzB;IAEDjc,SAAS;AACP,UAAI,CAAC,KAAKic,YAAY;AACpB;MACD;AAED,WAAKG,eAAeS,QAAQ,CAAC,KAAKT,eAAeS;AACjD,UAAI,KAAK7S,SAAL,GAAiB;AACnB,aAAK8S,OAAL;AACA;MACD;AAED,WAAKC,OAAL;IACD;IAED5e,UAAU;AACRgJ,mBAAa,KAAK+U,QAAN;AAEZplB,mBAAaC,IAAI,KAAKgH,SAAShM,QAAQ4oB,cAAtB,GAAuCC,kBAAkB,KAAKoC,iBAA/E;AAEA,UAAI,KAAKjf,SAAS/N,aAAa,wBAA3B,GAAsD;AACxD,aAAK+N,SAAShC,aAAa,SAAS,KAAKgC,SAAS/N,aAAa,wBAA3B,CAApC;MACD;AAED,WAAKitB,eAAL;AACA,YAAM9e,QAAN;IACD;IAED+L,OAAO;AACL,UAAI,KAAKnM,SAAS0M,MAAMoC,YAAY,QAAQ;AAC1C,cAAM,IAAIhQ,MAAM,qCAAV;MACP;AAED,UAAI,EAAE,KAAKqgB,eAAL,KAAyB,KAAKjB,aAAa;AAC/C;MACD;AAED,YAAM1O,YAAYzW,aAAayC,QAAQ,KAAKwE,UAAU,KAAKX,YAAYuB,UAAU+J,YAA3B,CAApC;AAClB,YAAMyU,aAAa1qB,eAAe,KAAKsL,QAAN;AACjC,YAAMqf,cAAcD,cAAc,KAAKpf,SAASsf,cAAc3qB,iBAAiBJ,SAAS,KAAKyL,QAA1E;AAEnB,UAAIwP,UAAU3T,oBAAoB,CAACwjB,YAAY;AAC7C;MACD;AAGD,WAAKH,eAAL;AAEA,YAAMV,MAAM,KAAKe,eAAL;AAEZ,WAAKvf,SAAShC,aAAa,oBAAoBwgB,IAAIvsB,aAAa,IAAjB,CAA/C;AAEA,YAAM;QAAE2rB;MAAF,IAAgB,KAAK3d;AAE3B,UAAI,CAAC,KAAKD,SAASsf,cAAc3qB,gBAAgBJ,SAAS,KAAKiqB,GAA1D,GAAgE;AACnEZ,kBAAU7J,OAAOyK,GAAjB;AACAzlB,qBAAayC,QAAQ,KAAKwE,UAAU,KAAKX,YAAYuB,UAAUsc,cAA3B,CAApC;MACD;AAED,WAAK/N,UAAU,KAAKM,cAAc+O,GAAnB;AAEfA,UAAIlqB,UAAU4Q,IAAI7D,iBAAlB;AAMA,UAAI,kBAAkBzP,SAAS+C,iBAAiB;AAC9C,mBAAW5C,WAAW,CAAA,EAAGqQ,OAAO,GAAGxQ,SAASyD,KAAKkN,QAA3B,GAAsC;AAC1DxJ,uBAAakC,GAAGlJ,SAAS,aAAaiD,KAAtC;QACD;MACF;AAED,YAAM2X,WAAW,MAAM;AACrB5T,qBAAayC,QAAQ,KAAKwE,UAAU,KAAKX,YAAYuB,UAAUgK,aAA3B,CAApC;AAEA,YAAI,KAAKwT,eAAe,OAAO;AAC7B,eAAKW,OAAL;QACD;AAED,aAAKX,aAAa;;AAGpB,WAAK5d,eAAemM,UAAU,KAAK6R,KAAK,KAAKlU,YAAL,CAAxC;IACD;IAED4B,OAAO;AACL,UAAI,CAAC,KAAKD,SAAL,GAAiB;AACpB;MACD;AAED,YAAM6D,YAAY/W,aAAayC,QAAQ,KAAKwE,UAAU,KAAKX,YAAYuB,UAAUiK,YAA3B,CAApC;AAClB,UAAIiF,UAAUjU,kBAAkB;AAC9B;MACD;AAED,YAAM2iB,MAAM,KAAKe,eAAL;AACZf,UAAIlqB,UAAUgJ,OAAO+D,iBAArB;AAIA,UAAI,kBAAkBzP,SAAS+C,iBAAiB;AAC9C,mBAAW5C,WAAW,CAAA,EAAGqQ,OAAO,GAAGxQ,SAASyD,KAAKkN,QAA3B,GAAsC;AAC1DxJ,uBAAaC,IAAIjH,SAAS,aAAaiD,KAAvC;QACD;MACF;AAED,WAAKqpB,eAAerB,aAApB,IAAqC;AACrC,WAAKqB,eAAetB,aAApB,IAAqC;AACrC,WAAKsB,eAAevB,aAApB,IAAqC;AACrC,WAAKsB,aAAa;AAElB,YAAMzR,WAAW,MAAM;AACrB,YAAI,KAAK6S,qBAAL,GAA6B;AAC/B;QACD;AAED,YAAI,CAAC,KAAKpB,YAAY;AACpB,eAAKc,eAAL;QACD;AAED,aAAKlf,SAAS9B,gBAAgB,kBAA9B;AACAnF,qBAAayC,QAAQ,KAAKwE,UAAU,KAAKX,YAAYuB,UAAUkK,cAA3B,CAApC;;AAGF,WAAKtK,eAAemM,UAAU,KAAK6R,KAAK,KAAKlU,YAAL,CAAxC;IACD;IAEDuF,SAAS;AACP,UAAI,KAAKV,SAAS;AAChB,aAAKA,QAAQU,OAAb;MACD;IACF;;IAGDsP,iBAAiB;AACf,aAAOxkB,QAAQ,KAAK8kB,UAAL,CAAD;IACf;IAEDF,iBAAiB;AACf,UAAI,CAAC,KAAKf,KAAK;AACb,aAAKA,MAAM,KAAKkB,kBAAkB,KAAKnB,eAAe,KAAKoB,uBAAL,CAA3C;MACZ;AAED,aAAO,KAAKnB;IACb;IAEDkB,kBAAkBxE,SAAS;AACzB,YAAMsD,MAAM,KAAKoB,oBAAoB1E,OAAzB,EAAkCc,OAAlC;AAGZ,UAAI,CAACwC,KAAK;AACR,eAAO;MACR;AAEDA,UAAIlqB,UAAUgJ,OAAO8D,mBAAiBC,iBAAtC;AAEAmd,UAAIlqB,UAAU4Q,IAAK,MAAK,KAAK7F,YAAYnJ,WAAzC;AAEA,YAAM2pB,QAAQtuB,OAAO,KAAK8N,YAAYnJ,IAAlB,EAAwB/E,SAA9B;AAEdqtB,UAAIxgB,aAAa,MAAM6hB,KAAvB;AAEA,UAAI,KAAKvV,YAAL,GAAoB;AACtBkU,YAAIlqB,UAAU4Q,IAAI9D,iBAAlB;MACD;AAED,aAAOod;IACR;IAEDsB,WAAW5E,SAAS;AAClB,WAAKqD,cAAcrD;AACnB,UAAI,KAAKjP,SAAL,GAAiB;AACnB,aAAKiT,eAAL;AACA,aAAK/S,KAAL;MACD;IACF;IAEDyT,oBAAoB1E,SAAS;AAC3B,UAAI,KAAKoD,kBAAkB;AACzB,aAAKA,iBAAiBxC,cAAcZ,OAApC;MACD,OAAM;AACL,aAAKoD,mBAAmB,IAAI5C,gBAAgB;UAC1C,GAAG,KAAKzb;;;UAGRib;UACAC,YAAY,KAAKS,yBAAyB,KAAK3b,QAAQ4d,WAA3C;QAL8B,CAApB;MAOzB;AAED,aAAO,KAAKS;IACb;IAEDqB,yBAAyB;AACvB,aAAO;QACL,CAAChD,sBAAD,GAA0B,KAAK8C,UAAL;;IAE7B;IAEDA,YAAY;AACV,aAAO,KAAK7D,yBAAyB,KAAK3b,QAAQ+d,KAA3C,KAAqD,KAAKhe,SAAS/N,aAAa,wBAA3B;IAC7D;;IAGD8tB,6BAA6BpnB,OAAO;AAClC,aAAO,KAAK0G,YAAYsB,oBAAoBhI,MAAME,gBAAgB,KAAKmnB,mBAAL,CAA3D;IACR;IAED1V,cAAc;AACZ,aAAO,KAAKrK,QAAQ0d,aAAc,KAAKa,OAAO,KAAKA,IAAIlqB,UAAUC,SAAS6M,iBAA5B;IAC/C;IAED6K,WAAW;AACT,aAAO,KAAKuS,OAAO,KAAKA,IAAIlqB,UAAUC,SAAS8M,iBAA5B;IACpB;IAEDoO,cAAc+O,KAAK;AACjB,YAAM/N,YAAY,OAAO,KAAKxQ,QAAQwQ,cAAc,aAClD,KAAKxQ,QAAQwQ,UAAUrf,KAAK,MAAMotB,KAAK,KAAKxe,QAA5C,IACA,KAAKC,QAAQwQ;AACf,YAAMwP,aAAa5C,cAAc5M,UAAU5Q,YAAV,CAAD;AAChC,aAAcqQ,cAAa,KAAKlQ,UAAUwe,KAAK,KAAKvO,iBAAiBgQ,UAAtB,CAAxC;IACR;IAED3P,aAAa;AACX,YAAM;QAAEvB,QAAAA;MAAF,IAAa,KAAK9O;AAExB,UAAI,OAAO8O,YAAW,UAAU;AAC9B,eAAOA,QAAO1c,MAAM,GAAb,EAAkB8Q,IAAI5G,WAASvJ,OAAO2W,SAASpN,OAAO,EAAvB,CAA/B;MACR;AAED,UAAI,OAAOwS,YAAW,YAAY;AAChC,eAAOwB,gBAAcxB,QAAOwB,YAAY,KAAKvQ,QAAlB;MAC5B;AAED,aAAO+O;IACR;IAED6M,yBAAyBS,KAAK;AAC5B,aAAO,OAAOA,QAAQ,aAAaA,IAAIjrB,KAAK,KAAK4O,QAAd,IAA0Bqc;IAC9D;IAEDpM,iBAAiBgQ,YAAY;AAC3B,YAAMzP,wBAAwB;QAC5BC,WAAWwP;QACXvP,WAAW,CACT;UACEza,MAAM;UACN0a,SAAS;YACPoN,oBAAoB,KAAK9d,QAAQ8d;UAD1B;QAFX,GAMA;UACE9nB,MAAM;UACN0a,SAAS;YACP5B,QAAQ,KAAKuB,WAAL;UADD;QAFX,GAMA;UACEra,MAAM;UACN0a,SAAS;YACP9B,UAAU,KAAK5O,QAAQ4O;UADhB;QAFX,GAMA;UACE5Y,MAAM;UACN0a,SAAS;YACP5e,SAAU,IAAG,KAAKsN,YAAYnJ;UADvB;QAFX,GAMA;UACED,MAAM;UACN2a,SAAS;UACTsP,OAAO;UACP9pB,IAAIuL,CAAAA,UAAQ;AAGV,iBAAK4d,eAAL,EAAsBvhB,aAAa,yBAAyB2D,MAAKwe,MAAM1P,SAAvE;UACD;SAjCM;;AAsCb,aAAO;QACL,GAAGD;QACH,GAAI,OAAO,KAAKvQ,QAAQ+O,iBAAiB,aAAa,KAAK/O,QAAQ+O,aAAawB,qBAA1B,IAAmD,KAAKvQ,QAAQ+O;;IAEzH;IAEDyP,gBAAgB;AACd,YAAM2B,WAAW,KAAKngB,QAAQzE,QAAQnJ,MAAM,GAA3B;AAEjB,iBAAWmJ,WAAW4kB,UAAU;AAC9B,YAAI5kB,YAAY,SAAS;AACvBzC,uBAAakC,GAAG,KAAK+E,UAAU,KAAKX,YAAYuB,UAAUuc,aAA3B,GAAyC,KAAKld,QAAQjO,UAAU2G,WAAS;AACtG,kBAAMqY,UAAU,KAAK+O,6BAA6BpnB,KAAlC;AAChBqY,oBAAQ/O,OAAR;WAFF;QAID,WAAUzG,YAAYyhB,gBAAgB;AACrC,gBAAMoD,UAAU7kB,YAAYshB,gBAC1B,KAAKzd,YAAYuB,UAAUoF,gBAA3B,IACA,KAAK3G,YAAYuB,UAAUoT,eAA3B;AACF,gBAAMsM,WAAW9kB,YAAYshB,gBAC3B,KAAKzd,YAAYuB,UAAUqF,gBAA3B,IACA,KAAK5G,YAAYuB,UAAUwc,gBAA3B;AAEFrkB,uBAAakC,GAAG,KAAK+E,UAAUqgB,SAAS,KAAKpgB,QAAQjO,UAAU2G,WAAS;AACtE,kBAAMqY,UAAU,KAAK+O,6BAA6BpnB,KAAlC;AAChBqY,oBAAQqN,eAAe1lB,MAAMM,SAAS,YAAY8jB,gBAAgBD,aAAlE,IAAmF;AACnF9L,oBAAQgO,OAAR;WAHF;AAKAjmB,uBAAakC,GAAG,KAAK+E,UAAUsgB,UAAU,KAAKrgB,QAAQjO,UAAU2G,WAAS;AACvE,kBAAMqY,UAAU,KAAK+O,6BAA6BpnB,KAAlC;AAChBqY,oBAAQqN,eAAe1lB,MAAMM,SAAS,aAAa8jB,gBAAgBD,aAAnE,IACE9L,QAAQhR,SAASzL,SAASoE,MAAM2B,aAAhC;AAEF0W,oBAAQ+N,OAAR;WALF;QAOD;MACF;AAED,WAAKE,oBAAoB,MAAM;AAC7B,YAAI,KAAKjf,UAAU;AACjB,eAAKkM,KAAL;QACD;;AAGHnT,mBAAakC,GAAG,KAAK+E,SAAShM,QAAQ4oB,cAAtB,GAAuCC,kBAAkB,KAAKoC,iBAA9E;IACD;IAEDP,YAAY;AACV,YAAMV,QAAQ,KAAKhe,SAAS/N,aAAa,OAA3B;AAEd,UAAI,CAAC+rB,OAAO;AACV;MACD;AAED,UAAI,CAAC,KAAKhe,SAAS/N,aAAa,YAA3B,KAA4C,CAAC,KAAK+N,SAASwc,YAAYlqB,KAA1B,GAAkC;AAClF,aAAK0N,SAAShC,aAAa,cAAcggB,KAAzC;MACD;AAED,WAAKhe,SAAShC,aAAa,0BAA0BggB,KAArD;AACA,WAAKhe,SAAS9B,gBAAgB,OAA9B;IACD;IAED8gB,SAAS;AACP,UAAI,KAAK/S,SAAL,KAAmB,KAAKmS,YAAY;AACtC,aAAKA,aAAa;AAClB;MACD;AAED,WAAKA,aAAa;AAElB,WAAKmC,YAAY,MAAM;AACrB,YAAI,KAAKnC,YAAY;AACnB,eAAKjS,KAAL;QACD;MACF,GAAE,KAAKlM,QAAQ6d,MAAM3R,IAJtB;IAKD;IAED4S,SAAS;AACP,UAAI,KAAKS,qBAAL,GAA6B;AAC/B;MACD;AAED,WAAKpB,aAAa;AAElB,WAAKmC,YAAY,MAAM;AACrB,YAAI,CAAC,KAAKnC,YAAY;AACpB,eAAKlS,KAAL;QACD;MACF,GAAE,KAAKjM,QAAQ6d,MAAM5R,IAJtB;IAKD;IAEDqU,YAAYxpB,SAASypB,SAAS;AAC5BpX,mBAAa,KAAK+U,QAAN;AACZ,WAAKA,WAAWjnB,WAAWH,SAASypB,OAAV;IAC3B;IAEDhB,uBAAuB;AACrB,aAAOvuB,OAAO0I,OAAO,KAAK0kB,cAAnB,EAAmClsB,SAAS,IAA5C;IACR;IAED4M,WAAWC,SAAQ;AACjB,YAAMyhB,iBAAiB3iB,YAAYK,kBAAkB,KAAK6B,QAAnC;AAEvB,iBAAW0gB,iBAAiBzvB,OAAO+J,KAAKylB,cAAZ,GAA6B;AACvD,YAAIhE,sBAAsBtiB,IAAIumB,aAA1B,GAA0C;AAC5C,iBAAOD,eAAeC,aAAD;QACtB;MACF;AAED1hB,MAAAA,UAAS;QACP,GAAGyhB;QACH,GAAI,OAAOzhB,YAAW,YAAYA,UAASA,UAAS,CAAA;;AAEtDA,MAAAA,UAAS,KAAKC,gBAAgBD,OAArB;AACTA,MAAAA,UAAS,KAAKE,kBAAkBF,OAAvB;AACT,WAAKG,iBAAiBH,OAAtB;AACA,aAAOA;IACR;IAEDE,kBAAkBF,SAAQ;AACxBA,MAAAA,QAAO4e,YAAY5e,QAAO4e,cAAc,QAAQhsB,SAASyD,OAAO5B,WAAWuL,QAAO4e,SAAR;AAE1E,UAAI,OAAO5e,QAAO8e,UAAU,UAAU;AACpC9e,QAAAA,QAAO8e,QAAQ;UACb3R,MAAMnN,QAAO8e;UACb5R,MAAMlN,QAAO8e;;MAEhB;AAED,UAAI,OAAO9e,QAAOgf,UAAU,UAAU;AACpChf,QAAAA,QAAOgf,QAAQhf,QAAOgf,MAAM7sB,SAAb;MAChB;AAED,UAAI,OAAO6N,QAAOkc,YAAY,UAAU;AACtClc,QAAAA,QAAOkc,UAAUlc,QAAOkc,QAAQ/pB,SAAf;MAClB;AAED,aAAO6N;IACR;IAEDghB,qBAAqB;AACnB,YAAMhhB,UAAS,CAAA;AAEf,iBAAW1C,QAAO,KAAK2D,SAAS;AAC9B,YAAI,KAAKZ,YAAYT,QAAQtC,IAAzB,MAAkC,KAAK2D,QAAQ3D,IAAb,GAAmB;AACvD0C,UAAAA,QAAO1C,IAAD,IAAQ,KAAK2D,QAAQ3D,IAAb;QACf;MACF;AAED0C,MAAAA,QAAOhN,WAAW;AAClBgN,MAAAA,QAAOxD,UAAU;AAKjB,aAAOwD;IACR;IAEDkgB,iBAAiB;AACf,UAAI,KAAK/P,SAAS;AAChB,aAAKA,QAAQS,QAAb;AACA,aAAKT,UAAU;MAChB;AAED,UAAI,KAAKqP,KAAK;AACZ,aAAKA,IAAIlhB,OAAT;AACA,aAAKkhB,MAAM;MACZ;IACF;;IAGqB,OAAfnoB,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAOsc,SAAQtd,oBAAoB,MAAM3B,OAAlC;AAEb,YAAI,OAAOA,YAAW,UAAU;AAC9B;QACD;AAED,YAAI,OAAO2C,MAAK3C,OAAD,MAAa,aAAa;AACvC,gBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;QACP;AAED2C,QAAAA,MAAK3C,OAAD,EAAJ;MACD,CAZM;IAaR;EAzgBiC;AAghBpClJ,qBAAmBmoB,QAAD;ACxmBlB,MAAM/nB,SAAO;AAEb,MAAMyqB,iBAAiB;AACvB,MAAMC,mBAAmB;AAEzB,MAAMhiB,YAAU;IACd,GAAGqf,SAAQrf;IACXsc,SAAS;IACTnM,QAAQ,CAAC,GAAG,CAAJ;IACR0B,WAAW;IACX8K,UAAU;IAKV/f,SAAS;EAVK;AAahB,MAAMqD,gBAAc;IAClB,GAAGof,SAAQpf;IACXqc,SAAS;EAFS;AASpB,MAAM2F,UAAN,cAAsB5C,SAAQ;;IAEV,WAAPrf,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGDipB,iBAAiB;AACf,aAAO,KAAKM,UAAL,KAAoB,KAAKqB,YAAL;IAC5B;;IAGDnB,yBAAyB;AACvB,aAAO;QACL,CAACgB,cAAD,GAAkB,KAAKlB,UAAL;QAClB,CAACmB,gBAAD,GAAoB,KAAKE,YAAL;;IAEvB;IAEDA,cAAc;AACZ,aAAO,KAAKlF,yBAAyB,KAAK3b,QAAQib,OAA3C;IACR;;IAGqB,OAAf7kB,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAOkf,QAAQlgB,oBAAoB,MAAM3B,OAAlC;AAEb,YAAI,OAAOA,YAAW,UAAU;AAC9B;QACD;AAED,YAAI,OAAO2C,MAAK3C,OAAD,MAAa,aAAa;AACvC,gBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;QACP;AAED2C,QAAAA,MAAK3C,OAAD,EAAJ;MACD,CAZM;IAaR;EA9C2B;AAqD9BlJ,qBAAmB+qB,OAAD;AC9ElB,MAAM3qB,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AACtB,MAAMyB,eAAe;AAErB,MAAMmf,iBAAkB,WAAU1gB;AAClC,MAAM8c,cAAe,QAAO9c;AAC5B,MAAM8F,wBAAuB,OAAM9F,cAAYuB;AAE/C,MAAMof,2BAA2B;AACjC,MAAMnf,sBAAoB;AAE1B,MAAMof,oBAAoB;AAC1B,MAAMC,wBAAwB;AAC9B,MAAMC,0BAA0B;AAChC,MAAMC,qBAAqB;AAC3B,MAAMC,qBAAqB;AAC3B,MAAMC,sBAAsB;AAC5B,MAAMC,sBAAuB,GAAEH,uBAAuBC,wBAAwBD,uBAAuBE;AACrG,MAAME,oBAAoB;AAC1B,MAAMC,6BAA2B;AAEjC,MAAM7iB,YAAU;IACdmQ,QAAQ;;IACR2S,YAAY;IACZC,cAAc;IACd3qB,QAAQ;IACR4qB,WAAW,CAAC,KAAK,KAAK,CAAX;EALG;AAQhB,MAAM/iB,gBAAc;IAClBkQ,QAAQ;;IACR2S,YAAY;IACZC,cAAc;IACd3qB,QAAQ;IACR4qB,WAAW;EALO;AAYpB,MAAMC,YAAN,cAAwB9hB,cAAc;IACpCV,YAAYtN,SAASiN,SAAQ;AAC3B,YAAMjN,SAASiN,OAAf;AAGA,WAAK8iB,eAAe,oBAAIjlB,IAAJ;AACpB,WAAKklB,sBAAsB,oBAAIllB,IAAJ;AAC3B,WAAKmlB,eAAelvB,iBAAiB,KAAKkN,QAAN,EAAgB+W,cAAc,YAAY,OAAO,KAAK/W;AAC1F,WAAKiiB,gBAAgB;AACrB,WAAKC,YAAY;AACjB,WAAKC,sBAAsB;QACzBC,iBAAiB;QACjBC,iBAAiB;;AAEnB,WAAKC,QAAL;IACD;;IAGiB,WAAP1jB,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGDosB,UAAU;AACR,WAAKC,iCAAL;AACA,WAAKC,yBAAL;AAEA,UAAI,KAAKN,WAAW;AAClB,aAAKA,UAAUO,WAAf;MACD,OAAM;AACL,aAAKP,YAAY,KAAKQ,gBAAL;MAClB;AAED,iBAAWC,WAAW,KAAKZ,oBAAoBpoB,OAAzB,GAAmC;AACvD,aAAKuoB,UAAUU,QAAQD,OAAvB;MACD;IACF;IAEDviB,UAAU;AACR,WAAK8hB,UAAUO,WAAf;AACA,YAAMriB,QAAN;IACD;;IAGDlB,kBAAkBF,SAAQ;AAExBA,MAAAA,QAAOhI,SAASvD,WAAWuL,QAAOhI,MAAR,KAAmBpF,SAASyD;AAGtD2J,MAAAA,QAAO0iB,aAAa1iB,QAAO+P,SAAU,GAAE/P,QAAO+P,sBAAsB/P,QAAO0iB;AAE3E,UAAI,OAAO1iB,QAAO4iB,cAAc,UAAU;AACxC5iB,QAAAA,QAAO4iB,YAAY5iB,QAAO4iB,UAAUvvB,MAAM,GAAvB,EAA4B8Q,IAAI5G,WAASvJ,OAAOC,WAAWsJ,KAAlB,CAAzC;MACpB;AAED,aAAOyC;IACR;IAEDwjB,2BAA2B;AACzB,UAAI,CAAC,KAAKviB,QAAQ0hB,cAAc;AAC9B;MACD;AAGD5oB,mBAAaC,IAAI,KAAKiH,QAAQjJ,QAAQmmB,WAAtC;AAEApkB,mBAAakC,GAAG,KAAKgF,QAAQjJ,QAAQmmB,aAAa+D,uBAAuBvoB,WAAS;AAChF,cAAMkqB,oBAAoB,KAAKd,oBAAoBplB,IAAIhE,MAAM3B,OAAO8rB,IAA1C;AAC1B,YAAID,mBAAmB;AACrBlqB,gBAAMwD,eAAN;AACA,gBAAMrH,QAAO,KAAKktB,gBAAgBnvB;AAClC,gBAAMkwB,UAASF,kBAAkBG,YAAY,KAAKhjB,SAASgjB;AAC3D,cAAIluB,MAAKmuB,UAAU;AACjBnuB,YAAAA,MAAKmuB,SAAS;cAAEC,KAAKH;cAAQI,UAAU;aAAvC;AACA;UACD;AAGDruB,UAAAA,MAAKuhB,YAAY0M;QAClB;OAbH;IAeD;IAEDL,kBAAkB;AAChB,YAAM/R,WAAU;QACd7b,MAAM,KAAKktB;QACXJ,WAAW,KAAK3hB,QAAQ2hB;QACxBF,YAAY,KAAKzhB,QAAQyhB;;AAG3B,aAAO,IAAI0B,qBAAqB5mB,aAAW,KAAK6mB,kBAAkB7mB,OAAvB,GAAiCmU,QAArE;IACR;;IAGD0S,kBAAkB7mB,SAAS;AACzB,YAAM8mB,gBAAgB7H,WAAS,KAAKqG,aAAanlB,IAAK,IAAG8e,MAAMzkB,OAAOusB,IAAvC;AAC/B,YAAM9O,WAAWgH,WAAS;AACxB,aAAK0G,oBAAoBC,kBAAkB3G,MAAMzkB,OAAOgsB;AACxD,aAAKQ,SAASF,cAAc7H,KAAD,CAA3B;;AAGF,YAAM4G,mBAAmB,KAAKL,gBAAgBpwB,SAAS+C,iBAAiB0hB;AACxE,YAAMoN,kBAAkBpB,mBAAmB,KAAKF,oBAAoBE;AACpE,WAAKF,oBAAoBE,kBAAkBA;AAE3C,iBAAW5G,SAASjf,SAAS;AAC3B,YAAI,CAACif,MAAMiI,gBAAgB;AACzB,eAAKzB,gBAAgB;AACrB,eAAK0B,kBAAkBL,cAAc7H,KAAD,CAApC;AAEA;QACD;AAED,cAAMmI,2BAA2BnI,MAAMzkB,OAAOgsB,aAAa,KAAKb,oBAAoBC;AAEpF,YAAIqB,mBAAmBG,0BAA0B;AAC/CnP,mBAASgH,KAAD;AAER,cAAI,CAAC4G,iBAAiB;AACpB;UACD;AAED;QACD;AAGD,YAAI,CAACoB,mBAAmB,CAACG,0BAA0B;AACjDnP,mBAASgH,KAAD;QACT;MACF;IACF;IAED8G,mCAAmC;AACjC,WAAKT,eAAe,oBAAIjlB,IAAJ;AACpB,WAAKklB,sBAAsB,oBAAIllB,IAAJ;AAE3B,YAAMgnB,cAAc1hB,eAAevI,KAAKsnB,uBAAuB,KAAKjhB,QAAQjJ,MAAxD;AAEpB,iBAAW8sB,UAAUD,aAAa;AAEhC,YAAI,CAACC,OAAOhB,QAAQ3uB,WAAW2vB,MAAD,GAAU;AACtC;QACD;AAED,cAAMjB,oBAAoB1gB,eAAeG,QAAQwhB,OAAOhB,MAAM,KAAK9iB,QAAzC;AAG1B,YAAIrM,UAAUkvB,iBAAD,GAAqB;AAChC,eAAKf,aAAahlB,IAAIgnB,OAAOhB,MAAMgB,MAAnC;AACA,eAAK/B,oBAAoBjlB,IAAIgnB,OAAOhB,MAAMD,iBAA1C;QACD;MACF;IACF;IAEDW,SAASxsB,QAAQ;AACf,UAAI,KAAKirB,kBAAkBjrB,QAAQ;AACjC;MACD;AAED,WAAK2sB,kBAAkB,KAAK1jB,QAAQjJ,MAApC;AACA,WAAKirB,gBAAgBjrB;AACrBA,aAAO1C,UAAU4Q,IAAIrD,mBAArB;AACA,WAAKkiB,iBAAiB/sB,MAAtB;AAEA+B,mBAAayC,QAAQ,KAAKwE,UAAU+gB,gBAAgB;QAAEzmB,eAAetD;OAArE;IACD;IAED+sB,iBAAiB/sB,QAAQ;AAEvB,UAAIA,OAAO1C,UAAUC,SAASysB,wBAA1B,GAAqD;AACvD7e,uBAAeG,QAAQmf,4BAA0BzqB,OAAOhD,QAAQwtB,iBAAf,CAAjD,EACGltB,UAAU4Q,IAAIrD,mBADjB;AAEA;MACD;AAED,iBAAWmiB,aAAa7hB,eAAeO,QAAQ1L,QAAQmqB,uBAA/B,GAAyD;AAG/E,mBAAW8C,QAAQ9hB,eAAeS,KAAKohB,WAAWzC,mBAA/B,GAAqD;AACtE0C,eAAK3vB,UAAU4Q,IAAIrD,mBAAnB;QACD;MACF;IACF;IAED8hB,kBAAkBpY,QAAQ;AACxBA,aAAOjX,UAAUgJ,OAAOuE,mBAAxB;AAEA,YAAMqiB,cAAc/hB,eAAevI,KAAM,GAAEsnB,yBAAyBrf,uBAAqB0J,MAArE;AACpB,iBAAW4Y,QAAQD,aAAa;AAC9BC,aAAK7vB,UAAUgJ,OAAOuE,mBAAtB;MACD;IACF;;IAGqB,OAAfxL,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAOkgB,UAAUlhB,oBAAoB,MAAM3B,OAApC;AAEb,YAAI,OAAOA,YAAW,UAAU;AAC9B;QACD;AAED,YAAI2C,MAAK3C,OAAD,MAAahO,UAAagO,QAAO5M,WAAW,GAAlB,KAA0B4M,YAAW,eAAe;AACpF,gBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;QACP;AAED2C,QAAAA,MAAK3C,OAAD,EAAJ;MACD,CAZM;IAaR;EAxNmC;AA+NtCjG,eAAakC,GAAGpI,QAAQsT,uBAAqB,MAAM;AACjD,eAAWie,OAAOjiB,eAAevI,KAAKqnB,iBAApB,GAAwC;AACxDY,gBAAUlhB,oBAAoByjB,GAA9B;IACD;EACF,CAJD;AAUAtuB,qBAAmB+rB,SAAD;ACnRlB,MAAM3rB,SAAO;AACb,MAAMiK,aAAW;AACjB,MAAME,cAAa,IAAGF;AAEtB,MAAM0K,eAAc,OAAMxK;AAC1B,MAAMyK,iBAAgB,SAAQzK;AAC9B,MAAMsK,eAAc,OAAMtK;AAC1B,MAAMuK,gBAAe,QAAOvK;AAC5B,MAAM0B,uBAAwB,QAAO1B;AACrC,MAAM0F,gBAAiB,UAAS1F;AAChC,MAAM8F,sBAAuB,OAAM9F;AAEnC,MAAMiF,iBAAiB;AACvB,MAAMC,kBAAkB;AACxB,MAAM8H,eAAe;AACrB,MAAMC,iBAAiB;AAEvB,MAAMzL,oBAAoB;AAC1B,MAAMT,oBAAkB;AACxB,MAAMC,oBAAkB;AACxB,MAAMgjB,iBAAiB;AAEvB,MAAM5C,2BAA2B;AACjC,MAAM6C,yBAAyB;AAC/B,MAAMC,+BAA+B;AAErC,MAAMC,qBAAqB;AAC3B,MAAMC,iBAAiB;AACvB,MAAMC,iBAAkB,YAAWH,iDAAiDA,6CAA6CA;AACjI,MAAMziB,uBAAuB;AAC7B,MAAM6iB,sBAAuB,GAAED,mBAAmB5iB;AAElD,MAAM8iB,8BAA+B,IAAG/iB,6CAA6CA,8CAA8CA;AAMnI,MAAMgjB,MAAN,cAAkB9kB,cAAc;IAC9BV,YAAYtN,SAAS;AACnB,YAAMA,OAAN;AACA,WAAKqd,UAAU,KAAKpP,SAAShM,QAAQwwB,kBAAtB;AAEf,UAAI,CAAC,KAAKpV,SAAS;AACjB;MAGD;AAGD,WAAK0V,sBAAsB,KAAK1V,SAAS,KAAK2V,aAAL,CAAzC;AAEAhsB,mBAAakC,GAAG,KAAK+E,UAAU+F,eAAepN,WAAS,KAAKqQ,SAASrQ,KAAd,CAAvD;IACD;;IAGc,WAAJzC,OAAO;AAChB,aAAOA;IACR;;IAGDiW,OAAO;AACL,YAAM6Y,YAAY,KAAKhlB;AACvB,UAAI,KAAKilB,cAAcD,SAAnB,GAA+B;AACjC;MACD;AAGD,YAAME,UAAS,KAAKC,eAAL;AAEf,YAAMrV,YAAYoV,UAChBnsB,aAAayC,QAAQ0pB,SAAQra,cAAY;QAAEvQ,eAAe0qB;OAA1D,IACA;AAEF,YAAMxV,YAAYzW,aAAayC,QAAQwpB,WAAWra,cAAY;QAAErQ,eAAe4qB;MAAjB,CAA5C;AAElB,UAAI1V,UAAU3T,oBAAqBiU,aAAaA,UAAUjU,kBAAmB;AAC3E;MACD;AAED,WAAKupB,YAAYF,SAAQF,SAAzB;AACA,WAAKK,UAAUL,WAAWE,OAA1B;IACD;;IAGDG,UAAUtzB,SAASuzB,aAAa;AAC9B,UAAI,CAACvzB,SAAS;AACZ;MACD;AAEDA,cAAQuC,UAAU4Q,IAAIrD,iBAAtB;AAEA,WAAKwjB,UAAU5yB,uBAAuBV,OAAD,CAArC;AAEA,YAAM4a,WAAW,MAAM;AACrB,YAAI5a,QAAQE,aAAa,MAArB,MAAiC,OAAO;AAC1CF,kBAAQuC,UAAU4Q,IAAI7D,iBAAtB;AACA;QACD;AAEDtP,gBAAQmM,gBAAgB,UAAxB;AACAnM,gBAAQiM,aAAa,iBAAiB,IAAtC;AACA,aAAKunB,gBAAgBxzB,SAAS,IAA9B;AACAgH,qBAAayC,QAAQzJ,SAAS6Y,eAAa;UACzCtQ,eAAegrB;SADjB;;AAKF,WAAK9kB,eAAemM,UAAU5a,SAASA,QAAQuC,UAAUC,SAAS6M,iBAA3B,CAAvC;IACD;IAEDgkB,YAAYrzB,SAASuzB,aAAa;AAChC,UAAI,CAACvzB,SAAS;AACZ;MACD;AAEDA,cAAQuC,UAAUgJ,OAAOuE,iBAAzB;AACA9P,cAAQ0lB,KAAR;AAEA,WAAK2N,YAAY3yB,uBAAuBV,OAAD,CAAvC;AAEA,YAAM4a,WAAW,MAAM;AACrB,YAAI5a,QAAQE,aAAa,MAArB,MAAiC,OAAO;AAC1CF,kBAAQuC,UAAUgJ,OAAO+D,iBAAzB;AACA;QACD;AAEDtP,gBAAQiM,aAAa,iBAAiB,KAAtC;AACAjM,gBAAQiM,aAAa,YAAY,IAAjC;AACA,aAAKunB,gBAAgBxzB,SAAS,KAA9B;AACAgH,qBAAayC,QAAQzJ,SAAS+Y,gBAAc;UAAExQ,eAAegrB;SAA7D;;AAGF,WAAK9kB,eAAemM,UAAU5a,SAASA,QAAQuC,UAAUC,SAAS6M,iBAA3B,CAAvC;IACD;IAED4H,SAASrQ,OAAO;AACd,UAAI,CAAE,CAAC2M,gBAAgBC,iBAAiB8H,cAAcC,cAAhD,EAAgEnb,SAASwG,MAAM2D,GAA/E,GAAsF;AAC1F;MACD;AAED3D,YAAM6Y,gBAAN;AACA7Y,YAAMwD,eAAN;AACA,YAAMyN,SAAS,CAACrE,iBAAiB+H,cAAlB,EAAkCnb,SAASwG,MAAM2D,GAAjD;AACf,YAAMkpB,oBAAoBruB,qBAAqB,KAAK4tB,aAAL,EAAoBxmB,OAAOxM,aAAW,CAACoC,WAAWpC,OAAD,CAAjD,GAA6D4G,MAAM3B,QAAQ4S,QAAQ,IAApF;AAE9C,UAAI4b,mBAAmB;AACrBA,0BAAkB9V,MAAM;UAAE+V,eAAe;SAAzC;AACAZ,YAAIlkB,oBAAoB6kB,iBAAxB,EAA2CrZ,KAA3C;MACD;IACF;IAED4Y,eAAe;AACb,aAAO5iB,eAAevI,KAAK+qB,qBAAqB,KAAKvV,OAA9C;IACR;IAED+V,iBAAiB;AACf,aAAO,KAAKJ,aAAL,EAAoBnrB,KAAK4I,WAAS,KAAKyiB,cAAcziB,KAAnB,CAAlC,KAAgE;IACxE;IAEDsiB,sBAAsBvZ,QAAQhJ,UAAU;AACtC,WAAKmjB,yBAAyBna,QAAQ,QAAQ,SAA9C;AAEA,iBAAW/I,SAASD,UAAU;AAC5B,aAAKojB,6BAA6BnjB,KAAlC;MACD;IACF;IAEDmjB,6BAA6BnjB,OAAO;AAClCA,cAAQ,KAAKojB,iBAAiBpjB,KAAtB;AACR,YAAMqjB,WAAW,KAAKZ,cAAcziB,KAAnB;AACjB,YAAMsjB,YAAY,KAAKC,iBAAiBvjB,KAAtB;AAClBA,YAAMxE,aAAa,iBAAiB6nB,QAApC;AAEA,UAAIC,cAActjB,OAAO;AACvB,aAAKkjB,yBAAyBI,WAAW,QAAQ,cAAjD;MACD;AAED,UAAI,CAACD,UAAU;AACbrjB,cAAMxE,aAAa,YAAY,IAA/B;MACD;AAED,WAAK0nB,yBAAyBljB,OAAO,QAAQ,KAA7C;AAGA,WAAKwjB,mCAAmCxjB,KAAxC;IACD;IAEDwjB,mCAAmCxjB,OAAO;AACxC,YAAMxL,SAASvE,uBAAuB+P,KAAD;AAErC,UAAI,CAACxL,QAAQ;AACX;MACD;AAED,WAAK0uB,yBAAyB1uB,QAAQ,QAAQ,UAA9C;AAEA,UAAIwL,MAAM+gB,IAAI;AACZ,aAAKmC,yBAAyB1uB,QAAQ,mBAAoB,IAAGwL,MAAM+gB,IAAnE;MACD;IACF;IAEDgC,gBAAgBxzB,SAASk0B,MAAM;AAC7B,YAAMH,YAAY,KAAKC,iBAAiBh0B,OAAtB;AAClB,UAAI,CAAC+zB,UAAUxxB,UAAUC,SAAS8vB,cAA7B,GAA8C;AACjD;MACD;AAED,YAAMpiB,SAAS,CAACjQ,UAAUqhB,cAAc;AACtC,cAAMthB,WAAUoQ,eAAeG,QAAQtQ,UAAU8zB,SAAjC;AAChB,YAAI/zB,UAAS;AACXA,UAAAA,SAAQuC,UAAU2N,OAAOoR,WAAW4S,IAApC;QACD;;AAGHhkB,aAAOwf,0BAA0B5f,iBAA3B;AACNI,aAAOqiB,wBAAwBjjB,iBAAzB;AACNykB,gBAAU9nB,aAAa,iBAAiBioB,IAAxC;IACD;IAEDP,yBAAyB3zB,SAASkmB,WAAW1b,OAAO;AAClD,UAAI,CAACxK,QAAQ0C,aAAawjB,SAArB,GAAiC;AACpClmB,gBAAQiM,aAAaia,WAAW1b,KAAhC;MACD;IACF;IAED0oB,cAAcrZ,MAAM;AAClB,aAAOA,KAAKtX,UAAUC,SAASsN,iBAAxB;IACR;;IAGD+jB,iBAAiBha,MAAM;AACrB,aAAOA,KAAKnJ,QAAQkiB,mBAAb,IAAoC/Y,OAAOzJ,eAAeG,QAAQqiB,qBAAqB/Y,IAA5C;IACnD;;IAGDma,iBAAiBna,MAAM;AACrB,aAAOA,KAAK5X,QAAQywB,cAAb,KAAgC7Y;IACxC;;IAGqB,OAAfvV,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAOkjB,IAAIlkB,oBAAoB,IAAxB;AAEb,YAAI,OAAO3B,YAAW,UAAU;AAC9B;QACD;AAED,YAAI2C,MAAK3C,OAAD,MAAahO,UAAagO,QAAO5M,WAAW,GAAlB,KAA0B4M,YAAW,eAAe;AACpF,gBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;QACP;AAED2C,QAAAA,MAAK3C,OAAD,EAAJ;MACD,CAZM;IAaR;EAzN6B;AAgOhCjG,eAAakC,GAAGrJ,UAAUmQ,sBAAsBD,sBAAsB,SAAUnJ,OAAO;AACrF,QAAI,CAAC,KAAK,MAAN,EAAcxG,SAAS,KAAK8O,OAA5B,GAAsC;AACxCtI,YAAMwD,eAAN;IACD;AAED,QAAIhI,WAAW,IAAD,GAAQ;AACpB;IACD;AAED0wB,QAAIlkB,oBAAoB,IAAxB,EAA8BwL,KAA9B;EACD,CAVD;AAeApT,eAAakC,GAAGpI,QAAQsT,qBAAqB,MAAM;AACjD,eAAWpU,WAAWoQ,eAAevI,KAAKgrB,2BAApB,GAAkD;AACtEC,UAAIlkB,oBAAoB5O,OAAxB;IACD;EACF,CAJD;AASA+D,qBAAmB+uB,GAAD;AC9RlB,MAAM3uB,OAAO;AACb,MAAMiK,WAAW;AACjB,MAAME,YAAa,IAAGF;AAEtB,MAAM+lB,kBAAmB,YAAW7lB;AACpC,MAAM8lB,iBAAkB,WAAU9lB;AAClC,MAAM2T,gBAAiB,UAAS3T;AAChC,MAAM+c,iBAAkB,WAAU/c;AAClC,MAAMwK,aAAc,OAAMxK;AAC1B,MAAMyK,eAAgB,SAAQzK;AAC9B,MAAMsK,aAAc,OAAMtK;AAC1B,MAAMuK,cAAe,QAAOvK;AAE5B,MAAMe,kBAAkB;AACxB,MAAMglB,kBAAkB;AACxB,MAAM/kB,kBAAkB;AACxB,MAAM+V,qBAAqB;AAE3B,MAAMvY,cAAc;IAClB8e,WAAW;IACX0I,UAAU;IACVvI,OAAO;EAHW;AAMpB,MAAMlf,UAAU;IACd+e,WAAW;IACX0I,UAAU;IACVvI,OAAO;EAHO;AAUhB,MAAMwI,QAAN,cAAoBvmB,cAAc;IAChCV,YAAYtN,SAASiN,SAAQ;AAC3B,YAAMjN,SAASiN,OAAf;AAEA,WAAKmf,WAAW;AAChB,WAAKoI,uBAAuB;AAC5B,WAAKC,0BAA0B;AAC/B,WAAK/H,cAAL;IACD;;IAGiB,WAAP7f,UAAU;AACnB,aAAOA;IACR;IAEqB,WAAXC,cAAc;AACvB,aAAOA;IACR;IAEc,WAAJ3I,OAAO;AAChB,aAAOA;IACR;;IAGDiW,OAAO;AACL,YAAMqD,YAAYzW,aAAayC,QAAQ,KAAKwE,UAAU2K,UAApC;AAElB,UAAI6E,UAAU3T,kBAAkB;AAC9B;MACD;AAED,WAAK4qB,cAAL;AAEA,UAAI,KAAKxmB,QAAQ0d,WAAW;AAC1B,aAAK3d,SAAS1L,UAAU4Q,IAAI9D,eAA5B;MACD;AAED,YAAMuL,WAAW,MAAM;AACrB,aAAK3M,SAAS1L,UAAUgJ,OAAO8Z,kBAA/B;AACAre,qBAAayC,QAAQ,KAAKwE,UAAU4K,WAApC;AAEA,aAAK8b,mBAAL;;AAGF,WAAK1mB,SAAS1L,UAAUgJ,OAAO8oB,eAA/B;AACAnxB,aAAO,KAAK+K,QAAN;AACN,WAAKA,SAAS1L,UAAU4Q,IAAI7D,iBAAiB+V,kBAA7C;AAEA,WAAK5W,eAAemM,UAAU,KAAK3M,UAAU,KAAKC,QAAQ0d,SAA1D;IACD;IAEDzR,OAAO;AACL,UAAI,CAAC,KAAKya,QAAL,GAAgB;AACnB;MACD;AAED,YAAM7W,YAAY/W,aAAayC,QAAQ,KAAKwE,UAAU6K,UAApC;AAElB,UAAIiF,UAAUjU,kBAAkB;AAC9B;MACD;AAED,YAAM8Q,WAAW,MAAM;AACrB,aAAK3M,SAAS1L,UAAU4Q,IAAIkhB,eAA5B;AACA,aAAKpmB,SAAS1L,UAAUgJ,OAAO8Z,oBAAoB/V,eAAnD;AACAtI,qBAAayC,QAAQ,KAAKwE,UAAU8K,YAApC;;AAGF,WAAK9K,SAAS1L,UAAU4Q,IAAIkS,kBAA5B;AACA,WAAK5W,eAAemM,UAAU,KAAK3M,UAAU,KAAKC,QAAQ0d,SAA1D;IACD;IAEDvd,UAAU;AACR,WAAKqmB,cAAL;AAEA,UAAI,KAAKE,QAAL,GAAgB;AAClB,aAAK3mB,SAAS1L,UAAUgJ,OAAO+D,eAA/B;MACD;AAED,YAAMjB,QAAN;IACD;IAEDumB,UAAU;AACR,aAAO,KAAK3mB,SAAS1L,UAAUC,SAAS8M,eAAjC;IACR;;IAIDqlB,qBAAqB;AACnB,UAAI,CAAC,KAAKzmB,QAAQomB,UAAU;AAC1B;MACD;AAED,UAAI,KAAKE,wBAAwB,KAAKC,yBAAyB;AAC7D;MACD;AAED,WAAKrI,WAAWjnB,WAAW,MAAM;AAC/B,aAAKgV,KAAL;MACD,GAAE,KAAKjM,QAAQ6d,KAFU;IAG3B;IAED8I,eAAejuB,OAAOkuB,eAAe;AACnC,cAAQluB,MAAMM,MAAd;QACE,KAAK;QACL,KAAK,YAAY;AACf,eAAKstB,uBAAuBM;AAC5B;QACD;QAED,KAAK;QACL,KAAK,YAAY;AACf,eAAKL,0BAA0BK;AAC/B;QACD;MAXH;AAkBA,UAAIA,eAAe;AACjB,aAAKJ,cAAL;AACA;MACD;AAED,YAAM5c,cAAclR,MAAM2B;AAC1B,UAAI,KAAK0F,aAAa6J,eAAe,KAAK7J,SAASzL,SAASsV,WAAvB,GAAqC;AACxE;MACD;AAED,WAAK6c,mBAAL;IACD;IAEDjI,gBAAgB;AACd1lB,mBAAakC,GAAG,KAAK+E,UAAUkmB,iBAAiBvtB,WAAS,KAAKiuB,eAAejuB,OAAO,IAA3B,CAAzD;AACAI,mBAAakC,GAAG,KAAK+E,UAAUmmB,gBAAgBxtB,WAAS,KAAKiuB,eAAejuB,OAAO,KAA3B,CAAxD;AACAI,mBAAakC,GAAG,KAAK+E,UAAUgU,eAAerb,WAAS,KAAKiuB,eAAejuB,OAAO,IAA3B,CAAvD;AACAI,mBAAakC,GAAG,KAAK+E,UAAUod,gBAAgBzkB,WAAS,KAAKiuB,eAAejuB,OAAO,KAA3B,CAAxD;IACD;IAED8tB,gBAAgB;AACdrd,mBAAa,KAAK+U,QAAN;AACZ,WAAKA,WAAW;IACjB;;IAGqB,OAAf9nB,gBAAgB2I,SAAQ;AAC7B,aAAO,KAAK0C,KAAK,WAAY;AAC3B,cAAMC,QAAO2kB,MAAM3lB,oBAAoB,MAAM3B,OAAhC;AAEb,YAAI,OAAOA,YAAW,UAAU;AAC9B,cAAI,OAAO2C,MAAK3C,OAAD,MAAa,aAAa;AACvC,kBAAM,IAAIY,UAAW,oBAAmBZ,UAAlC;UACP;AAED2C,UAAAA,MAAK3C,OAAD,EAAS,IAAb;QACD;MACF,CAVM;IAWR;EA/J+B;AAsKlC6B,uBAAqBylB,KAAD;AAMpBxwB,qBAAmBwwB,KAAD;;;AC7NlB,SAAO,YAAY;;;ACDnB,gCAAO;;;ACIP,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,YAAY,OAAO;AACf,YAAM,gBAAgB,YAAY,KAAK;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,CAACQ,OAAMC,WAAU;AAC5D,cAAM,YAAYD,MAAK,OAAO,aAAaC,OAAM;AACjD,eAAO,YAAY,aAAa,KAAK,YAAY,aAAa,IAAI;AAAA,MACtE,CAAC;AAAA,IACL;AAAA,EACJ;AACA,WAAS,YAAY,OAAO;AACxB,QAAI,iCAAiC,OAAO;AACxC,aAAO;AAAA,IACX,OACK;AACD,YAAM,EAAE,yBAAyB,IAAI;AACrC,aAAO,OAAO,OAAO,OAAO;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,YAAW,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,CAACC,SAAQ;AAClB,cAAM,KAAK,GAAG,aAAaA,IAAG,IAAI,KAAK,MAAMA,MAAK;AAAA,MACtD,CAAC;AACD,aAAO,MAAM,KAAK,GAAG;AAAA,IACzB;AAAA,EACJ;AAEA,MAAM,iCAAiC;AAAA,IACnC,KAAK,EAAE,OAAO,MAAM,GAAG;AACnB,UAAI;AACA,cAAM,gBAAgB;AAC1B,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,EAAE,OAAO,MAAM,GAAG;AACtB,UAAI;AACA,cAAM,eAAe;AACzB,aAAO;AAAA,IACX;AAAA,IACA,KAAK,EAAE,OAAO,OAAO,QAAQ,GAAG;AAC5B,UAAI,OAAO;AACP,eAAO,YAAY,MAAM;AAAA,MAC7B,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACA,MAAM,oBAAoB;AAC1B,WAAS,4BAA4B,kBAAkB;AACnD,UAAM,SAAS,iBAAiB,KAAK;AACrC,UAAMC,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;AACjB,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,CAACC,UAAS,UAAU,OAAO,OAAOA,UAAS,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,GAAG;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,YAAYC,SAAQ;AAC5C,WAAK,UAAU;AACf,WAAK,QAAQD;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,SAASC;AAAA,IAClB;AAAA,IACA,OAAO,SAAS,OAAOA,SAAQ;AAC3B,aAAO,IAAI,KAAK,MAAM,SAAS,MAAM,OAAO,4BAA4B,MAAM,OAAO,GAAGA,OAAM;AAAA,IAClG;AAAA,IACA,WAAW;AACP,YAAM,cAAc,KAAK,YAAY,IAAI,KAAK,cAAc;AAC5D,YAAM,cAAc,KAAK,kBAAkB,IAAI,KAAK,oBAAoB;AACxE,aAAO,GAAG,KAAK,YAAY,cAAc,gBAAgB,KAAK,cAAc,KAAK;AAAA,IACrF;AAAA,IACA,0BAA0B,OAAO;AAC7B,UAAI,CAAC,KAAK,WAAW;AACjB,eAAO;AAAA,MACX;AACA,YAAM,UAAU,KAAK,UAAU,MAAM,GAAG;AACxC,UAAI,KAAK,sBAAsB,OAAO,OAAO,GAAG;AAC5C,eAAO;AAAA,MACX;AACA,YAAM,iBAAiB,QAAQ,OAAO,CAACL,SAAQ,CAAC,aAAa,SAASA,IAAG,CAAC,EAAE,CAAC;AAC7E,UAAI,CAAC,gBAAgB;AACjB,eAAO;AAAA,MACX;AACA,UAAI,CAAC,YAAY,KAAK,aAAa,cAAc,GAAG;AAChD,cAAM,gCAAgC,KAAK,WAAW;AAAA,MAC1D;AACA,aAAO,KAAK,YAAY,cAAc,EAAE,YAAY,MAAM,MAAM,IAAI,YAAY;AAAA,IACpF;AAAA,IACA,uBAAuB,OAAO;AAC1B,UAAI,CAAC,KAAK,WAAW;AACjB,eAAO;AAAA,MACX;AACA,YAAM,UAAU,CAAC,KAAK,SAAS;AAC/B,UAAI,KAAK,sBAAsB,OAAO,OAAO,GAAG;AAC5C,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,SAAS;AACT,YAAMM,UAAS,CAAC;AAChB,YAAM,UAAU,IAAI,OAAO,SAAS,KAAK,0BAA0B,GAAG;AACtE,iBAAW,EAAE,MAAAC,OAAM,MAAM,KAAK,MAAM,KAAK,KAAK,QAAQ,UAAU,GAAG;AAC/D,cAAMC,SAAQD,MAAK,MAAM,OAAO;AAChC,cAAMP,OAAMQ,UAASA,OAAM,CAAC;AAC5B,YAAIR,MAAK;AACL,UAAAM,QAAO,SAASN,IAAG,CAAC,IAAI,SAAS,KAAK;AAAA,QAC1C;AAAA,MACJ;AACA,aAAOM;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,sBAAsB,OAAO,SAAS;AAClC,YAAM,CAAC,MAAM,MAAM,KAAK,KAAK,IAAI,aAAa,IAAI,CAAC,aAAa,QAAQ,SAAS,QAAQ,CAAC;AAC1F,aAAO,MAAM,YAAY,QAAQ,MAAM,YAAY,QAAQ,MAAM,WAAW,OAAO,MAAM,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,CAACG,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,MAAMV,UAAS;AACpB,UAAM,IAAI,MAAMA,QAAO;AAAA,EAC3B;AACA,WAAS,SAAS,OAAO;AACrB,QAAI;AACA,aAAO,KAAK,MAAM,KAAK;AAAA,IAC3B,SACO,KAAP;AACI,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,YAAY,OAAO;AACf,YAAM,cAAc,KAAK,mBAAmB,KAAK;AACjD,UAAI,KAAK,qBAAqB,KAAK,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,wCAAwC,KAAK,aAAa;AAAA,IAC9F;AAAA,IACA,oBAAoB,OAAO;AACvB,YAAM,EAAE,QAAQ,IAAI,KAAK;AACzB,YAAM,EAAE,wBAAwB,IAAI,KAAK,QAAQ;AACjD,YAAM,EAAE,WAAW,IAAI,KAAK;AAC5B,UAAI,SAAS;AACb,iBAAW,CAACQ,OAAM,KAAK,KAAK,OAAO,QAAQ,KAAK,YAAY,GAAG;AAC3D,YAAIA,SAAQ,yBAAyB;AACjC,gBAAMG,UAAS,wBAAwBH,KAAI;AAC3C,mBAAS,UAAUG,QAAO,EAAE,MAAAH,OAAM,OAAO,OAAO,SAAS,WAAW,CAAC;AAAA,QACzE,OACK;AACD;AAAA,QACJ;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,IACA,mBAAmB,OAAO;AACtB,aAAO,OAAO,OAAO,OAAO,EAAE,QAAQ,KAAK,OAAO,OAAO,CAAC;AAAA,IAC9D;AAAA,IACA,gBAAgB,OAAO;AACnB,YAAM,EAAE,QAAQ,cAAc,IAAI;AAClC,UAAI;AACA,aAAK,OAAO,KAAK,KAAK,YAAY,KAAK;AACvC,aAAK,QAAQ,iBAAiB,KAAK,YAAY,EAAE,OAAO,QAAQ,eAAe,QAAQ,KAAK,WAAW,CAAC;AAAA,MAC5G,SACOT,QAAP;AACI,cAAM,EAAE,YAAY,YAAY,SAAS,OAAAM,OAAM,IAAI;AACnD,cAAM,SAAS,EAAE,YAAY,YAAY,SAAS,OAAAA,QAAO,MAAM;AAC/D,aAAK,QAAQ,YAAYN,QAAO,oBAAoB,KAAK,WAAW,MAAM;AAAA,MAC9E;AAAA,IACJ;AAAA,IACA,qBAAqB,OAAO;AACxB,YAAM,cAAc,MAAM;AAC1B,UAAI,iBAAiB,iBAAiB,KAAK,OAAO,0BAA0B,KAAK,GAAG;AAChF,eAAO;AAAA,MACX;AACA,UAAI,iBAAiB,cAAc,KAAK,OAAO,uBAAuB,KAAK,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,MAAMa,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,cAAMV,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,IACpB;AAAA,IACA,QAAQ;AACJ,WAAK,gBAAgB,MAAM;AAAA,IAC/B;AAAA,IACA,MAAMU,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,YAAMH,SAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAClD,YAAMP,WAAU,MAAM,KAAK,KAAK,iBAAiB,KAAK,QAAQ,CAAC;AAC/D,aAAOO,OAAM,OAAOP,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,IAAIJ,MAAKG,MAAK,OAAO;AAC1B,IAAAY,OAAMf,MAAKG,IAAG,EAAE,IAAI,KAAK;AAAA,EAC7B;AACA,WAAS,IAAIH,MAAKG,MAAK,OAAO;AAC1B,IAAAY,OAAMf,MAAKG,IAAG,EAAE,OAAO,KAAK;AAC5B,UAAMH,MAAKG,IAAG;AAAA,EAClB;AACA,WAASY,OAAMf,MAAKG,MAAK;AACrB,QAAI,SAASH,KAAI,IAAIG,IAAG;AACxB,QAAI,CAAC,QAAQ;AACT,eAAS,oBAAI,IAAI;AACjB,MAAAH,KAAI,IAAIG,MAAK,MAAM;AAAA,IACvB;AACA,WAAO;AAAA,EACX;AACA,WAAS,MAAMH,MAAKG,MAAK;AACrB,UAAM,SAASH,KAAI,IAAIG,IAAG;AAC1B,QAAI,UAAU,QAAQ,OAAO,QAAQ,GAAG;AACpC,MAAAH,KAAI,OAAOG,IAAG;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,QAAQa,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,CAACC,OAAMD,SAAQC,QAAOD,KAAI,MAAM,CAAC;AAAA,IACxD;AAAA,IACA,IAAIb,MAAK,OAAO;AACZ,UAAI,KAAK,aAAaA,MAAK,KAAK;AAAA,IACpC;AAAA,IACA,OAAOA,MAAK,OAAO;AACf,UAAI,KAAK,aAAaA,MAAK,KAAK;AAAA,IACpC;AAAA,IACA,IAAIA,MAAK,OAAO;AACZ,YAAM,SAAS,KAAK,YAAY,IAAIA,IAAG;AACvC,aAAO,UAAU,QAAQ,OAAO,IAAI,KAAK;AAAA,IAC7C;AAAA,IACA,OAAOA,MAAK;AACR,aAAO,KAAK,YAAY,IAAIA,IAAG;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,gBAAgBb,MAAK;AACjB,YAAM,SAAS,KAAK,YAAY,IAAIA,IAAG;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,CAACA,MAAK,OAAO,MAAMA,IAAG;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,MAAMe,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,YAAME,OAAM,KAAK,SAAS,4BAA4B,aAAa;AACnE,UAAIA,QAAO,MAAM;AACb,YAAI,CAAC,KAAK,UAAU,IAAI,aAAa,GAAG;AACpC,eAAK,kBAAkBA,MAAK,aAAa;AAAA,QAC7C;AACA,cAAM,QAAQ,KAAK,QAAQ,aAAa,aAAa;AACrD,YAAI,KAAK,UAAU,IAAI,aAAa,KAAK,OAAO;AAC5C,eAAK,sBAAsB,OAAOA,MAAK,QAAQ;AAAA,QACnD;AACA,YAAI,SAAS,MAAM;AACf,gBAAMC,YAAW,KAAK,UAAU,IAAI,aAAa;AACjD,eAAK,UAAU,OAAO,aAAa;AACnC,cAAIA;AACA,iBAAK,oBAAoBD,MAAK,eAAeC,SAAQ;AAAA,QAC7D,OACK;AACD,eAAK,UAAU,IAAI,eAAe,KAAK;AAAA,QAC3C;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,kBAAkBD,MAAK,eAAe;AAClC,UAAI,KAAK,SAAS,mBAAmB;AACjC,aAAK,SAAS,kBAAkBA,MAAK,aAAa;AAAA,MACtD;AAAA,IACJ;AAAA,IACA,sBAAsB,OAAOA,MAAK,UAAU;AACxC,UAAI,KAAK,SAAS,uBAAuB;AACrC,aAAK,SAAS,sBAAsB,OAAOA,MAAK,QAAQ;AAAA,MAC5D;AAAA,IACJ;AAAA,IACA,oBAAoBA,MAAK,eAAe,UAAU;AAC9C,UAAI,KAAK,SAAS,qBAAqB;AACnC,aAAK,SAAS,oBAAoBA,MAAK,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,SAASK,YAAW,EAAE,SAAS,eAAe,SAAS,OAAAA,OAAM,EAAE;AAAA,EAC7E;AACA,WAAS,IAAIC,OAAMC,QAAO;AACtB,UAAMC,UAAS,KAAK,IAAIF,MAAK,QAAQC,OAAM,MAAM;AACjD,WAAO,MAAM,KAAK,EAAE,QAAAC,QAAO,GAAG,CAACC,IAAGJ,WAAU,CAACC,MAAKD,MAAK,GAAGE,OAAMF,MAAK,CAAC,CAAC;AAAA,EAC3E;AACA,WAAS,eAAeC,OAAMC,QAAO;AACjC,WAAOD,SAAQC,UAASD,MAAK,SAASC,OAAM,SAASD,MAAK,WAAWC,OAAM;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,SACOG,QAAP;AACI,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,kBAAkBP,MAAK,eAAe;AAClC,YAAM,aAAa,KAAK,mBAAmB,aAAa;AACxD,UAAI,CAAC,KAAK,SAASA,IAAG,GAAG;AACrB,aAAK,sBAAsBA,MAAK,WAAW,OAAO,KAAK,SAASA,IAAG,CAAC,GAAG,WAAW,OAAO,WAAW,YAAY,CAAC;AAAA,MACrH;AAAA,IACJ;AAAA,IACA,sBAAsB,OAAOQ,OAAM,UAAU;AACzC,YAAM,aAAa,KAAK,uBAAuBA,KAAI;AACnD,UAAI,UAAU;AACV;AACJ,UAAI,aAAa,MAAM;AACnB,mBAAW,WAAW,OAAO,WAAW,YAAY;AAAA,MACxD;AACA,WAAK,sBAAsBA,OAAM,OAAO,QAAQ;AAAA,IACpD;AAAA,IACA,oBAAoBR,MAAK,eAAe,UAAU;AAC9C,YAAM,aAAa,KAAK,uBAAuBA,IAAG;AAClD,UAAI,KAAK,SAASA,IAAG,GAAG;AACpB,aAAK,sBAAsBA,MAAK,WAAW,OAAO,KAAK,SAASA,IAAG,CAAC,GAAG,QAAQ;AAAA,MACnF,OACK;AACD,aAAK,sBAAsBA,MAAK,WAAW,OAAO,WAAW,YAAY,GAAG,QAAQ;AAAA,MACxF;AAAA,IACJ;AAAA,IACA,yCAAyC;AACrC,iBAAW,EAAE,KAAAA,MAAK,MAAAQ,OAAM,cAAc,OAAO,KAAK,KAAK,kBAAkB;AACrE,YAAI,gBAAgB,UAAa,CAAC,KAAK,WAAW,KAAK,IAAIR,IAAG,GAAG;AAC7D,eAAK,sBAAsBQ,OAAM,OAAO,YAAY,GAAG,MAAS;AAAA,QACpE;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,sBAAsBA,OAAM,UAAU,aAAa;AAC/C,YAAM,oBAAoB,GAAGA;AAC7B,YAAM,gBAAgB,KAAK,SAAS,iBAAiB;AACrD,UAAI,OAAO,iBAAiB,YAAY;AACpC,cAAM,aAAa,KAAK,uBAAuBA,KAAI;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,SACOD,QAAP;AACI,cAAIA,kBAAiB,WAAW;AAC5B,YAAAA,OAAM,UAAU,mBAAmB,KAAK,QAAQ,cAAc,WAAW,WAAWA,OAAM;AAAA,UAC9F;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,CAACP,SAAQ,mBAAmBA,IAAG,CAAC;AAAA,IAC/E;AAAA,IACA,IAAI,yBAAyB;AACzB,YAAMS,eAAc,CAAC;AACrB,aAAO,KAAK,KAAK,kBAAkB,EAAE,QAAQ,CAACT,SAAQ;AAClD,cAAM,aAAa,KAAK,mBAAmBA,IAAG;AAC9C,QAAAS,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;AACtD,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,SAASD,MAAK,GAAG;AACrC,UAAI,KAAK,MAAM,gBAAgB,OAAO,GAAG;AACrC,aAAK,cAAc,SAASA,KAAI;AAAA,MACpC;AAAA,IACJ;AAAA,IACA,eAAe,EAAE,SAAS,SAASA,MAAK,GAAG;AACvC,WAAK,iBAAiB,SAASA,KAAI;AAAA,IACvC;AAAA,IACA,cAAc,SAASA,OAAM;AACzB,UAAI;AACJ,UAAI,CAAC,KAAK,cAAc,IAAIA,OAAM,OAAO,GAAG;AACxC,aAAK,cAAc,IAAIA,OAAM,OAAO;AACpC,SAAC,KAAK,KAAK,uBAAuB,QAAQ,OAAO,SAAS,SAAS,GAAG,MAAM,MAAM,KAAK,SAAS,gBAAgB,SAASA,KAAI,CAAC;AAAA,MAClI;AAAA,IACJ;AAAA,IACA,iBAAiB,SAASA,OAAM;AAC5B,UAAI;AACJ,UAAI,KAAK,cAAc,IAAIA,OAAM,OAAO,GAAG;AACvC,aAAK,cAAc,OAAOA,OAAM,OAAO;AACvC,SAAC,KAAK,KAAK,uBAAuB,QAAQ,OAAO,SAAS,SAAS,GAAG,MAAM,MAAM,KAAK,SAAS,mBAAmB,SAASA,KAAI,CAAC;AAAA,MACrI;AAAA,IACJ;AAAA,IACA,uBAAuB;AACnB,iBAAWA,SAAQ,KAAK,cAAc,MAAM;AACxC,mBAAW,WAAW,KAAK,cAAc,gBAAgBA,KAAI,GAAG;AAC5D,eAAK,iBAAiB,SAASA,KAAI;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,QAAQ,KAAK,QAAQ;AAAA,IAChC;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,QAAQE,iBAAgB;AACxD,8BAAwBA,cAAa,YAAY,EAAE,QAAQ,CAACF,UAAS,OAAO,IAAIA,KAAI,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,OAAOE,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,CAACV,SAAQ,CAACA,MAAK,WAAWA,IAAG,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,wBAAwB,aAAa;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,YAAMW,gBAAe,IAAI,SAAS;AAClC,WAAK,OAAO,QAAQ,QAAQ,CAACC,YAAW;AACpC,cAAM,cAAcA,QAAO,WAAW;AACtC,cAAM,UAAU,iCAAiC,aAAa,SAAS;AACvE,gBAAQ,QAAQ,CAAC,WAAWD,cAAa,IAAI,QAAQC,QAAO,UAAU,CAAC;AAAA,MAC3E,CAAC;AACD,aAAOD;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,YAAYC,SAAQ,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,SAASA;AACd,WAAK,QAAQ;AACb,WAAK,aAAa,IAAIA,QAAO,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,SACOL,QAAP;AACI,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,QAAP;AACI,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,QAAP;AACI,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,QAAOM,UAAS,SAAS,CAAC,GAAG;AACrC,YAAM,EAAE,YAAY,YAAY,QAAQ,IAAI;AAC5C,eAAS,OAAO,OAAO,EAAE,YAAY,YAAY,QAAQ,GAAG,MAAM;AAClE,WAAK,YAAY,YAAYN,QAAO,SAASM,YAAW,MAAM;AAAA,IAClE;AAAA,IACA,gBAAgB,SAASL,OAAM;AAC3B,WAAK,uBAAuB,GAAGA,wBAAuB,OAAO;AAAA,IACjE;AAAA,IACA,mBAAmB,SAASA,OAAM;AAC9B,WAAK,uBAAuB,GAAGA,2BAA0B,OAAO;AAAA,IACpE;AAAA,IACA,gBAAgB,QAAQ,SAASA,OAAM;AACnC,WAAK,uBAAuB,GAAG,kBAAkBA,KAAI,oBAAoB,QAAQ,OAAO;AAAA,IAC5F;AAAA,IACA,mBAAmB,QAAQ,SAASA,OAAM;AACtC,WAAK,uBAAuB,GAAG,kBAAkBA,KAAI,uBAAuB,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,oBAAoBM,QAAO,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,iBAAWd,QAAO,YAAY;AAC1B,cAAM,aAAa,kBAAkBA,IAAG,KAAK,CAAC;AAC9C,0BAAkBA,IAAG,IAAI,OAAO,OAAO,YAAY,WAAWA,IAAG,CAAC;AAAA,MACtE;AACA,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;AACA,WAAS,oBAAoB,WAAW,YAAY;AAChD,WAAO,WAAW,UAAU,EAAE,OAAO,CAAC,kBAAkBA,SAAQ;AAC5D,YAAM,aAAa,sBAAsB,WAAW,YAAYA,IAAG;AACnE,UAAI,YAAY;AACZ,eAAO,OAAO,kBAAkB,EAAE,CAACA,IAAG,GAAG,WAAW,CAAC;AAAA,MACzD;AACA,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;AACA,WAAS,sBAAsB,WAAW,YAAYA,MAAK;AACvD,UAAM,sBAAsB,OAAO,yBAAyB,WAAWA,IAAG;AAC1E,UAAM,kBAAkB,uBAAuB,WAAW;AAC1D,QAAI,CAAC,iBAAiB;AAClB,YAAM,aAAa,OAAO,yBAAyB,YAAYA,IAAG,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,MAAMc,WAAU,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,SACOT,QAAP;AACI,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,YAAYU,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,IAAIT,OAAM;AACN,aAAO,KAAK,KAAK,IAAI,KAAK,WAAWA,KAAI,CAAC;AAAA,IAC9C;AAAA,IACA,IAAIA,OAAM;AACN,aAAO,KAAK,OAAOA,KAAI,EAAE,CAAC;AAAA,IAC9B;AAAA,IACA,OAAOA,OAAM;AACT,YAAM,cAAc,KAAK,KAAK,IAAI,KAAK,WAAWA,KAAI,CAAC,KAAK;AAC5D,aAAO,SAAS,WAAW;AAAA,IAC/B;AAAA,IACA,iBAAiBA,OAAM;AACnB,aAAO,KAAK,KAAK,uBAAuB,KAAK,WAAWA,KAAI,CAAC;AAAA,IACjE;AAAA,IACA,WAAWA,OAAM;AACb,aAAO,GAAGA;AAAA,IACd;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,IAAIR,MAAK;AACL,YAAMQ,QAAO,KAAK,uBAAuBR,IAAG;AAC5C,aAAO,KAAK,QAAQ,aAAaQ,KAAI;AAAA,IACzC;AAAA,IACA,IAAIR,MAAK,OAAO;AACZ,YAAMQ,QAAO,KAAK,uBAAuBR,IAAG;AAC5C,WAAK,QAAQ,aAAaQ,OAAM,KAAK;AACrC,aAAO,KAAK,IAAIR,IAAG;AAAA,IACvB;AAAA,IACA,IAAIA,MAAK;AACL,YAAMQ,QAAO,KAAK,uBAAuBR,IAAG;AAC5C,aAAO,KAAK,QAAQ,aAAaQ,KAAI;AAAA,IACzC;AAAA,IACA,OAAOR,MAAK;AACR,UAAI,KAAK,IAAIA,IAAG,GAAG;AACf,cAAMQ,QAAO,KAAK,uBAAuBR,IAAG;AAC5C,aAAK,QAAQ,gBAAgBQ,KAAI;AACjC,eAAO;AAAA,MACX,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,uBAAuBR,MAAK;AACxB,aAAO,QAAQ,KAAK,cAAc,UAAUA,IAAG;AAAA,IACnD;AAAA,EACJ;AAEA,MAAM,QAAN,MAAY;AAAA,IACR,YAAYkB,SAAQ;AAChB,WAAK,qBAAqB,oBAAI,QAAQ;AACtC,WAAK,SAASA;AAAA,IAClB;AAAA,IACA,KAAK,QAAQlB,MAAKa,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,IAAIb,IAAG,GAAG;AACtB,mBAAW,IAAIA,IAAG;AAClB,aAAK,OAAO,KAAKa,UAAS,MAAM;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,4BAA4B,eAAe,OAAO;AACvD,WAAO,IAAI,mBAAmB;AAAA,EAClC;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,cAAc;AAC/C,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,cAAc,kBAAkB,kBAAkB,cAAc,oBAAoB,yBAAyB,oBACrI,4FAA4F;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,YAAMM,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,MAAY;AAAA,IACR,YAAYC,SAAQ,SAAS,YAAYF,SAAQ;AAC7C,WAAK,UAAU,IAAI,UAAU,IAAI;AACjC,WAAK,UAAU,IAAI,SAAS,IAAI;AAChC,WAAK,OAAO,IAAI,QAAQ,IAAI;AAC5B,WAAK,kBAAkB,CAACG,aAAY;AAChC,eAAOA,SAAQ,QAAQ,KAAK,kBAAkB,MAAM,KAAK;AAAA,MAC7D;AACA,WAAK,SAASD;AACd,WAAK,UAAU;AACf,WAAK,aAAa;AAClB,WAAK,QAAQ,IAAI,MAAMF,OAAM;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,MAAM,KAAK,QAAQ,SAAS,iBAAiB,KAAK,YAAY,KAAK,MAAM,MAAM;AAAA,IAC7F;AAAA,EACJ;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAChB,YAAY,SAASE,SAAQ,UAAU;AACnC,WAAK,UAAU;AACf,WAAK,SAASA;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,YAAYH,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,UAAUL,YAAW,SAAS,OAAOA,QAAO,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,YAAMA,UAAS,IAAI,OAAO,KAAK,aAAa,UAAU;AACtD,WAAK,cAAcA,OAAM;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,YAAMA,UAAS,KAAK,oBAAoB,IAAI,UAAU;AACtD,UAAIA,SAAQ;AACR,aAAK,iBAAiBA,OAAM;AAAA,MAChC;AAAA,IACJ;AAAA,IACA,kCAAkC,SAAS,YAAY;AACnD,YAAMA,UAAS,KAAK,oBAAoB,IAAI,UAAU;AACtD,UAAIA,SAAQ;AACR,eAAOA,QAAO,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,4BAA4B,OAAO;AAAA,MACvG;AAAA,IACJ;AAAA,IACA,YAAYL,QAAOM,UAAS,QAAQ;AAChC,WAAK,YAAY,YAAYN,QAAOM,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,YAAMD,UAAS,KAAK,oBAAoB,IAAI,MAAM,UAAU;AAC5D,UAAIA,SAAQ;AACR,QAAAA,QAAO,uBAAuB,KAAK;AAAA,MACvC;AAAA,IACJ;AAAA,IACA,kBAAkB,OAAO;AACrB,WAAK,mBAAmB,OAAO,MAAM,YAAY,KAAK;AACtD,YAAMA,UAAS,KAAK,oBAAoB,IAAI,MAAM,UAAU;AAC5D,UAAIA,SAAQ;AACR,QAAAA,QAAO,0BAA0B,KAAK;AAAA,MAC1C;AAAA,IACJ;AAAA,IACA,cAAcA,SAAQ;AAClB,WAAK,oBAAoB,IAAIA,QAAO,YAAYA,OAAM;AACtD,YAAM,SAAS,KAAK,mBAAmB,gBAAgBA,QAAO,UAAU;AACxE,aAAO,QAAQ,CAAC,UAAUA,QAAO,uBAAuB,KAAK,CAAC;AAAA,IAClE;AAAA,IACA,iBAAiBA,SAAQ;AACrB,WAAK,oBAAoB,OAAOA,QAAO,UAAU;AACjD,YAAM,SAAS,KAAK,mBAAmB,gBAAgBA,QAAO,UAAU;AACxE,aAAO,QAAQ,CAAC,UAAUA,QAAO,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;AAAA,IACjD,yBAAyB,CAAC,YAAY,WAAW,QAAQ,cAAc;AAAA,IACvE,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,CAACU,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,kBAAkBC,QAAO;AAC9B,WAAOA,OAAM,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,iBAAiBN,UAAS,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,SAASA;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,SAASA,SAAQ;AAC1B,YAAMH,eAAc,IAAI,KAAK,SAASG,OAAM;AAC5C,MAAAH,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,qBAAqBT,OAAMmB,SAAQ;AAC/B,WAAK,wBAAwBnB,KAAI,IAAImB;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,YAAYpB,QAAOM,UAAS,QAAQ;AAChC,UAAI;AACJ,WAAK,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA,KAAkBA,UAASN,QAAO,MAAM;AAC1D,OAAC,KAAK,OAAO,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAK,QAAQM,UAAS,IAAI,GAAG,GAAGN,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,eAAe,cAAc;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,CAACqB,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,6BAA6B7B,MAAK;AACvC,WAAO;AAAA,MACH,CAAC,GAAGA,WAAU,GAAG;AAAA,QACb,MAAM;AACF,gBAAM,EAAE,SAAA6B,SAAQ,IAAI;AACpB,cAAIA,SAAQ,IAAI7B,IAAG,GAAG;AAClB,mBAAO6B,SAAQ,IAAI7B,IAAG;AAAA,UAC1B,OACK;AACD,kBAAM,YAAY6B,SAAQ,iBAAiB7B,IAAG;AAC9C,kBAAM,IAAI,MAAM,sBAAsB,YAAY;AAAA,UACtD;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,GAAGA,aAAY,GAAG;AAAA,QACf,MAAM;AACF,iBAAO,KAAK,QAAQ,OAAOA,IAAG;AAAA,QAClC;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,WAAWA,IAAG,QAAQ,GAAG;AAAA,QAC5B,MAAM;AACF,iBAAO,KAAK,QAAQ,IAAIA,IAAG;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,8BAA8BQ,OAAM;AACzC,UAAM,gBAAgB,kBAAkBA,KAAI;AAC5C,WAAO;AAAA,MACH,CAAC,GAAG,qBAAqB,GAAG;AAAA,QACxB,MAAM;AACF,gBAAM,gBAAgB,KAAK,QAAQ,KAAKA,KAAI;AAC5C,gBAAM,WAAW,KAAK,QAAQ,yBAAyBA,KAAI;AAC3D,cAAI,eAAe;AACf,kBAAM,mBAAmB,qCAAqC,MAAM,eAAeA,KAAI;AACvF,gBAAI;AACA,qBAAO;AACX,kBAAM,IAAI,MAAM,gEAAgEA,wCAAuC,KAAK,aAAa;AAAA,UAC7I;AACA,gBAAM,IAAI,MAAM,2BAA2BA,+BAA8B,KAAK,iFAAiF,YAAY;AAAA,QAC/K;AAAA,MACJ;AAAA,MACA,CAAC,GAAG,sBAAsB,GAAG;AAAA,QACzB,MAAM;AACF,gBAAM,UAAU,KAAK,QAAQ,QAAQA,KAAI;AACzC,cAAI,QAAQ,SAAS,GAAG;AACpB,mBAAO,QACF,IAAI,CAAC,kBAAkB;AACxB,oBAAM,mBAAmB,qCAAqC,MAAM,eAAeA,KAAI;AACvF,kBAAI;AACA,uBAAO;AACX,sBAAQ,KAAK,gEAAgEA,wCAAuC,KAAK,eAAe,aAAa;AAAA,YACzJ,CAAC,EACI,OAAO,CAAC,eAAe,UAAU;AAAA,UAC1C;AACA,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,CAAC,GAAG,4BAA4B,GAAG;AAAA,QAC/B,MAAM;AACF,gBAAM,gBAAgB,KAAK,QAAQ,KAAKA,KAAI;AAC5C,gBAAM,WAAW,KAAK,QAAQ,yBAAyBA,KAAI;AAC3D,cAAI,eAAe;AACf,mBAAO;AAAA,UACX,OACK;AACD,kBAAM,IAAI,MAAM,2BAA2BA,+BAA8B,KAAK,iFAAiF,YAAY;AAAA,UAC/K;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,GAAG,6BAA6B,GAAG;AAAA,QAChC,MAAM;AACF,iBAAO,KAAK,QAAQ,QAAQA,KAAI;AAAA,QACpC;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,WAAW,aAAa,SAAS,GAAG;AAAA,QACvC,MAAM;AACF,iBAAO,KAAK,QAAQ,IAAIA,KAAI;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,8BAA8BA,OAAM;AACzC,WAAO;AAAA,MACH,CAAC,GAAGA,aAAY,GAAG;AAAA,QACf,MAAM;AACF,gBAAM,SAAS,KAAK,QAAQ,KAAKA,KAAI;AACrC,cAAI,QAAQ;AACR,mBAAO;AAAA,UACX,OACK;AACD,kBAAM,IAAI,MAAM,2BAA2BA,eAAc,KAAK,wBAAwB;AAAA,UAC1F;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,GAAGA,cAAa,GAAG;AAAA,QAChB,MAAM;AACF,iBAAO,KAAK,QAAQ,QAAQA,KAAI;AAAA,QACpC;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,WAAWA,KAAI,SAAS,GAAG;AAAA,QAC9B,MAAM;AACF,iBAAO,KAAK,QAAQ,IAAIA,KAAI;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,KAAAR,MAAK,MAAAQ,OAAM,QAAQsB,OAAM,QAAQC,OAAM,IAAI;AACnD,WAAO;AAAA,MACH,CAACvB,KAAI,GAAG;AAAA,QACJ,MAAM;AACF,gBAAM,QAAQ,KAAK,KAAK,IAAIR,IAAG;AAC/B,cAAI,UAAU,MAAM;AAChB,mBAAO8B,MAAK,KAAK;AAAA,UACrB,OACK;AACD,mBAAO,WAAW;AAAA,UACtB;AAAA,QACJ;AAAA,QACA,IAAI,OAAO;AACP,cAAI,UAAU,QAAW;AACrB,iBAAK,KAAK,OAAO9B,IAAG;AAAA,UACxB,OACK;AACD,iBAAK,KAAK,IAAIA,MAAK+B,OAAM,KAAK,CAAC;AAAA,UACnC;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,WAAWvB,KAAI,GAAG,GAAG;AAAA,QACxB,MAAM;AACF,iBAAO,KAAK,KAAK,IAAIR,IAAG,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,cAAc,UAAU;AAC7D,YAAM,IAAI,MAAM,uDAAuD,8CAA8C,mDAAmD,WAAW,wBAAwB,wBAAwB;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,cAAc,mBAAmB;AACtE,UAAM,IAAI,MAAM,uBAAuB,sBAAsB,cAAc;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,UAAMA,OAAM,GAAG,UAAU,KAAK;AAC9B,UAAM,OAAO,yBAAyB,OAAO;AAC7C,WAAO;AAAA,MACH;AAAA,MACA,KAAAA;AAAA,MACA,MAAM,SAASA,IAAG;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,YAAMwB,SAAQ,KAAK,MAAM,KAAK;AAC9B,UAAI,CAAC,MAAM,QAAQA,MAAK,GAAG;AACvB,cAAM,IAAI,UAAU,yDAAyD,mBAAmB,sBAAsBA,MAAK,IAAI;AAAA,MACnI;AACA,aAAOA;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,mBAAmB,sBAAsB,MAAM,IAAI;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;AAAA,EACd;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,UAAU,cAAc;AACjD,YAAM,QAAQ,IAAI,YAAY,MAAM,EAAE,QAAQ,SAAS,WAAW,CAAC;AACnE,aAAO,cAAc,KAAK;AAC1B,aAAO;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;;;AChgFrB,MAAIQ,YAAW;AAAA,IACb,QAAQ,OAAO,YAAY,cAAc,UAAU;AAAA,IACnD,WAAW,OAAO,cAAc,cAAc,YAAY;AAAA,EAC5D;AAEA,MAAI,SAAS;AAAA,IACX,OAAO,UAAU;AACf,UAAI,KAAK,SAAS;AAChB,iBAAS,KAAK,KAAK,IAAI,CAAC;AACxB,QAAAA,UAAS,OAAO,IAAI,iBAAiB,GAAG,QAAQ;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AAEA,MAAMC,OAAM,OAAO,oBAAI,QAAM,QAAQ;AAErC,MAAMC,gBAAe,WAASD,KAAI,IAAI,QAAQ;AAE9C,MAAME,qBAAN,MAAwB;AAAA,IACtB,YAAY,YAAY;AACtB,WAAK,sBAAsB,KAAK,oBAAoB,KAAK,IAAI;AAC7D,WAAK,aAAa;AAClB,WAAK,oBAAoB;AAAA,IAC3B;AAAA,IACA,QAAQ;AACN,UAAI,CAAC,KAAK,UAAU,GAAG;AACrB,aAAK,YAAYF,KAAI;AACrB,eAAO,KAAK;AACZ,aAAK,aAAa;AAClB,yBAAiB,oBAAoB,KAAK,mBAAmB;AAC7D,eAAO,IAAI,gDAAgD,KAAK,YAAY,kBAAkB;AAAA,MAChG;AAAA,IACF;AAAA,IACA,OAAO;AACL,UAAI,KAAK,UAAU,GAAG;AACpB,aAAK,YAAYA,KAAI;AACrB,aAAK,YAAY;AACjB,4BAAoB,oBAAoB,KAAK,mBAAmB;AAChE,eAAO,IAAI,2BAA2B;AAAA,MACxC;AAAA,IACF;AAAA,IACA,YAAY;AACV,aAAO,KAAK,aAAa,CAAC,KAAK;AAAA,IACjC;AAAA,IACA,gBAAgB;AACd,WAAK,WAAWA,KAAI;AAAA,IACtB;AAAA,IACA,gBAAgB;AACd,WAAK,oBAAoB;AACzB,aAAO,KAAK;AACZ,aAAO,IAAI,oCAAoC;AAAA,IACjD;AAAA,IACA,mBAAmB;AACjB,WAAK,iBAAiBA,KAAI;AAC1B,aAAO,IAAI,uCAAuC;AAAA,IACpD;AAAA,IACA,eAAe;AACb,WAAK,YAAY;AACjB,WAAK,KAAK;AAAA,IACZ;AAAA,IACA,cAAc;AACZ,mBAAa,KAAK,WAAW;AAAA,IAC/B;AAAA,IACA,OAAO;AACL,WAAK,cAAc,WAAY,MAAM;AACnC,aAAK,iBAAiB;AACtB,aAAK,KAAK;AAAA,MACZ,GAAI,KAAK,gBAAgB,CAAC;AAAA,IAC5B;AAAA,IACA,kBAAkB;AAChB,YAAM,EAAC,gBAAgC,wBAAgD,IAAI,KAAK;AAChG,YAAM,UAAU,KAAK,IAAI,IAAI,yBAAyB,KAAK,IAAI,KAAK,mBAAmB,EAAE,CAAC;AAC1F,YAAM,YAAY,KAAK,sBAAsB,IAAI,IAAI;AACrD,YAAM,SAAS,YAAY,KAAK,OAAO;AACvC,aAAO,iBAAiB,MAAM,WAAW,IAAI;AAAA,IAC/C;AAAA,IACA,mBAAmB;AACjB,UAAI,KAAK,kBAAkB,GAAG;AAC5B,eAAO,IAAI,oEAAoE,KAAK,mCAAmCC,cAAa,KAAK,WAAW,0BAA0B,KAAK,YAAY,kBAAkB;AACjN,aAAK;AACL,YAAI,KAAK,qBAAqB,GAAG;AAC/B,iBAAO,IAAI,+EAA+EA,cAAa,KAAK,cAAc,KAAK;AAAA,QACjI,OAAO;AACL,iBAAO,IAAI,6BAA6B;AACxC,eAAK,WAAW,OAAO;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,cAAc;AAChB,aAAO,KAAK,WAAW,KAAK,WAAW,KAAK;AAAA,IAC9C;AAAA,IACA,oBAAoB;AAClB,aAAOA,cAAa,KAAK,WAAW,IAAI,KAAK,YAAY;AAAA,IAC3D;AAAA,IACA,uBAAuB;AACrB,aAAO,KAAK,kBAAkBA,cAAa,KAAK,cAAc,IAAI,KAAK,YAAY;AAAA,IACrF;AAAA,IACA,sBAAsB;AACpB,UAAI,SAAS,oBAAoB,WAAW;AAC1C,mBAAY,MAAM;AAChB,cAAI,KAAK,kBAAkB,KAAK,CAAC,KAAK,WAAW,OAAO,GAAG;AACzD,mBAAO,IAAI,uFAAuF,SAAS,iBAAiB;AAC5H,iBAAK,WAAW,OAAO;AAAA,UACzB;AAAA,QACF,GAAI,GAAG;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,mBAAkB,iBAAiB;AAEnC,EAAAA,mBAAkB,0BAA0B;AAE5C,MAAI,WAAW;AAAA,IACb,eAAe;AAAA,MACb,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,IACA,oBAAoB;AAAA,MAClB,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,IACV;AAAA,IACA,oBAAoB;AAAA,IACpB,WAAW,CAAE,uBAAuB,yBAA0B;AAAA,EAChE;AAEA,MAAM,EAAC,eAAeC,gBAAe,WAAWC,WAAS,IAAI;AAE7D,MAAMC,sBAAqBD,WAAU,MAAM,GAAGA,WAAU,SAAS,CAAC;AAElE,MAAME,WAAU,CAAC,EAAE;AAEnB,MAAMC,cAAN,MAAiB;AAAA,IACf,YAAYC,WAAU;AACpB,WAAK,OAAO,KAAK,KAAK,KAAK,IAAI;AAC/B,WAAK,WAAWA;AAChB,WAAK,gBAAgB,KAAK,SAAS;AACnC,WAAK,UAAU,IAAIN,mBAAkB,IAAI;AACzC,WAAK,eAAe;AAAA,IACtB;AAAA,IACA,KAAKO,OAAM;AACT,UAAI,KAAK,OAAO,GAAG;AACjB,aAAK,UAAU,KAAK,KAAK,UAAUA,KAAI,CAAC;AACxC,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AACL,UAAI,KAAK,SAAS,GAAG;AACnB,eAAO,IAAI,uDAAuD,KAAK,SAAS,GAAG;AACnF,eAAO;AAAA,MACT,OAAO;AACL,cAAM,kBAAkB,CAAE,GAAGL,YAAW,GAAG,KAAK,SAAS,gBAAgB,CAAC,CAAE;AAC5E,eAAO,IAAI,uCAAuC,KAAK,SAAS,oBAAoB,iBAAiB;AACrG,YAAI,KAAK,WAAW;AAClB,eAAK,uBAAuB;AAAA,QAC9B;AACA,aAAK,YAAY,IAAIL,UAAS,UAAU,KAAK,SAAS,KAAK,eAAe;AAC1E,aAAK,qBAAqB;AAC1B,aAAK,QAAQ,MAAM;AACnB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,MAAM,EAAC,eAA8B,IAAI;AAAA,MACvC,gBAAgB;AAAA,IAClB,GAAG;AACD,UAAI,CAAC,gBAAgB;AACnB,aAAK,QAAQ,KAAK;AAAA,MACpB;AACA,UAAI,KAAK,OAAO,GAAG;AACjB,eAAO,KAAK,UAAU,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,SAAS;AACP,aAAO,IAAI,yCAAyC,KAAK,SAAS,GAAG;AACrE,UAAI,KAAK,SAAS,GAAG;AACnB,YAAI;AACF,iBAAO,KAAK,MAAM;AAAA,QACpB,SAASW,QAAP;AACA,iBAAO,IAAI,8BAA8BA,MAAK;AAAA,QAChD,UAAE;AACA,iBAAO,IAAI,0BAA0B,KAAK,YAAY,eAAe;AACrE,qBAAW,KAAK,MAAM,KAAK,YAAY,WAAW;AAAA,QACpD;AAAA,MACF,OAAO;AACL,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,IACA,cAAc;AACZ,UAAI,KAAK,WAAW;AAClB,eAAO,KAAK,UAAU;AAAA,MACxB;AAAA,IACF;AAAA,IACA,SAAS;AACP,aAAO,KAAK,QAAQ,MAAM;AAAA,IAC5B;AAAA,IACA,WAAW;AACT,aAAO,KAAK,QAAQ,QAAQ,YAAY;AAAA,IAC1C;AAAA,IACA,mBAAmB;AACjB,aAAO,KAAK,QAAQ,oBAAoB;AAAA,IAC1C;AAAA,IACA,sBAAsB;AACpB,aAAOJ,SAAQ,KAAKD,qBAAoB,KAAK,YAAY,CAAC,KAAK;AAAA,IACjE;AAAA,IACA,WAAW,QAAQ;AACjB,aAAOC,SAAQ,KAAK,QAAQ,KAAK,SAAS,CAAC,KAAK;AAAA,IAClD;AAAA,IACA,WAAW;AACT,UAAI,KAAK,WAAW;AAClB,iBAAS,SAASP,UAAS,WAAW;AACpC,cAAIA,UAAS,UAAU,KAAK,MAAM,KAAK,UAAU,YAAY;AAC3D,mBAAO,MAAM,YAAY;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,uBAAuB;AACrB,eAAS,aAAa,KAAK,QAAQ;AACjC,cAAM,UAAU,KAAK,OAAO,SAAS,EAAE,KAAK,IAAI;AAChD,aAAK,UAAU,KAAK,WAAW,IAAI;AAAA,MACrC;AAAA,IACF;AAAA,IACA,yBAAyB;AACvB,eAAS,aAAa,KAAK,QAAQ;AACjC,aAAK,UAAU,KAAK,WAAW,IAAI,WAAW;AAAA,QAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,EAAAQ,YAAW,cAAc;AAEzB,EAAAA,YAAW,UAAU,SAAS;AAAA,IAC5B,QAAQ,OAAO;AACb,UAAI,CAAC,KAAK,oBAAoB,GAAG;AAC/B;AAAA,MACF;AACA,YAAM,EAAC,YAAwB,SAASI,UAAS,QAAgB,WAAsB,KAAU,IAAI,KAAK,MAAM,MAAM,IAAI;AAC1H,WAAK,QAAQ,cAAc;AAC3B,cAAQ,MAAM;AAAA,QACb,KAAKR,eAAc;AAClB,cAAI,KAAK,iBAAiB,GAAG;AAC3B,iBAAK,qBAAqB;AAAA,UAC5B;AACA,eAAK,QAAQ,cAAc;AAC3B,iBAAO,KAAK,cAAc,OAAO;AAAA,QAElC,KAAKA,eAAc;AAClB,iBAAO,IAAI,0BAA0B,QAAQ;AAC7C,iBAAO,KAAK,MAAM;AAAA,YAChB,gBAAgB;AAAA,UAClB,CAAC;AAAA,QAEF,KAAKA,eAAc;AAClB,iBAAO;AAAA,QAER,KAAKA,eAAc;AAClB,eAAK,cAAc,oBAAoB,UAAU;AACjD,cAAI,KAAK,oBAAoB;AAC3B,iBAAK,qBAAqB;AAC1B,mBAAO,KAAK,cAAc,OAAO,YAAY,aAAa;AAAA,cACxD,aAAa;AAAA,YACf,CAAC;AAAA,UACH,OAAO;AACL,mBAAO,KAAK,cAAc,OAAO,YAAY,aAAa;AAAA,cACxD,aAAa;AAAA,YACf,CAAC;AAAA,UACH;AAAA,QAED,KAAKA,eAAc;AAClB,iBAAO,KAAK,cAAc,OAAO,UAAU;AAAA,QAE5C;AACC,iBAAO,KAAK,cAAc,OAAO,YAAY,YAAYQ,QAAO;AAAA,MAClE;AAAA,IACF;AAAA,IACA,OAAO;AACL,aAAO,IAAI,kCAAkC,KAAK,YAAY,gBAAgB;AAC9E,WAAK,eAAe;AACpB,UAAI,CAAC,KAAK,oBAAoB,GAAG;AAC/B,eAAO,IAAI,8DAA8D;AACzE,eAAO,KAAK,MAAM;AAAA,UAChB,gBAAgB;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,MAAM,OAAO;AACX,aAAO,IAAI,yBAAyB;AACpC,UAAI,KAAK,cAAc;AACrB;AAAA,MACF;AACA,WAAK,eAAe;AACpB,WAAK,QAAQ,iBAAiB;AAC9B,aAAO,KAAK,cAAc,UAAU,gBAAgB;AAAA,QAClD,sBAAsB,KAAK,QAAQ,UAAU;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,IACA,QAAQ;AACN,aAAO,IAAI,yBAAyB;AAAA,IACtC;AAAA,EACF;AAEA,MAAMC,UAAS,SAAS,QAAQ,YAAY;AAC1C,QAAI,cAAc,MAAM;AACtB,eAASC,QAAO,YAAY;AAC1B,cAAM,QAAQ,WAAWA,IAAG;AAC5B,eAAOA,IAAG,IAAI;AAAA,MAChB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAMC,gBAAN,MAAmB;AAAA,IACjB,YAAYN,WAAUO,UAAS,CAAC,GAAG,OAAO;AACxC,WAAK,WAAWP;AAChB,WAAK,aAAa,KAAK,UAAUO,OAAM;AACvC,MAAAH,QAAO,MAAM,KAAK;AAAA,IACpB;AAAA,IACA,QAAQ,QAAQH,QAAO,CAAC,GAAG;AACzB,MAAAA,MAAK,SAAS;AACd,aAAO,KAAK,KAAKA,KAAI;AAAA,IACvB;AAAA,IACA,KAAKA,OAAM;AACT,aAAO,KAAK,SAAS,KAAK;AAAA,QACxB,SAAS;AAAA,QACT,YAAY,KAAK;AAAA,QACjB,MAAM,KAAK,UAAUA,KAAI;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,IACA,cAAc;AACZ,aAAO,KAAK,SAAS,cAAc,OAAO,IAAI;AAAA,IAChD;AAAA,EACF;AAEA,MAAMO,yBAAN,MAA4B;AAAA,IAC1B,YAAY,eAAe;AACzB,WAAK,gBAAgB;AACrB,WAAK,uBAAuB,CAAC;AAAA,IAC/B;AAAA,IACA,UAAUC,eAAc;AACtB,UAAI,KAAK,qBAAqB,QAAQA,aAAY,KAAK,IAAI;AACzD,eAAO,IAAI,sCAAsCA,cAAa,YAAY;AAC1E,aAAK,qBAAqB,KAAKA,aAAY;AAAA,MAC7C,OAAO;AACL,eAAO,IAAI,8CAA8CA,cAAa,YAAY;AAAA,MACpF;AACA,WAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,OAAOA,eAAc;AACnB,aAAO,IAAI,oCAAoCA,cAAa,YAAY;AACxE,WAAK,uBAAuB,KAAK,qBAAqB,OAAQ,CAAAC,OAAKA,OAAMD,aAAa;AAAA,IACxF;AAAA,IACA,oBAAoB;AAClB,WAAK,iBAAiB;AACtB,WAAK,iBAAiB;AAAA,IACxB;AAAA,IACA,mBAAmB;AACjB,mBAAa,KAAK,YAAY;AAAA,IAChC;AAAA,IACA,mBAAmB;AACjB,WAAK,eAAe,WAAY,MAAM;AACpC,YAAI,KAAK,iBAAiB,OAAO,KAAK,cAAc,cAAc,YAAY;AAC5E,eAAK,qBAAqB,IAAK,CAAAA,kBAAgB;AAC7C,mBAAO,IAAI,uCAAuCA,cAAa,YAAY;AAC3E,iBAAK,cAAc,UAAUA,aAAY;AAAA,UAC3C,CAAE;AAAA,QACJ;AAAA,MACF,GAAI,GAAG;AAAA,IACT;AAAA,EACF;AAEA,MAAME,iBAAN,MAAoB;AAAA,IAClB,YAAYX,WAAU;AACpB,WAAK,WAAWA;AAChB,WAAK,YAAY,IAAIQ,uBAAsB,IAAI;AAC/C,WAAK,gBAAgB,CAAC;AAAA,IACxB;AAAA,IACA,OAAO,aAAa,OAAO;AACzB,YAAM,UAAU;AAChB,YAAMD,UAAS,OAAO,YAAY,WAAW,UAAU;AAAA,QACrD;AAAA,MACF;AACA,YAAME,gBAAe,IAAIH,cAAa,KAAK,UAAUC,SAAQ,KAAK;AAClE,aAAO,KAAK,IAAIE,aAAY;AAAA,IAC9B;AAAA,IACA,IAAIA,eAAc;AAChB,WAAK,cAAc,KAAKA,aAAY;AACpC,WAAK,SAAS,uBAAuB;AACrC,WAAK,OAAOA,eAAc,aAAa;AACvC,WAAK,UAAUA,aAAY;AAC3B,aAAOA;AAAA,IACT;AAAA,IACA,OAAOA,eAAc;AACnB,WAAK,OAAOA,aAAY;AACxB,UAAI,CAAC,KAAK,QAAQA,cAAa,UAAU,EAAE,QAAQ;AACjD,aAAK,YAAYA,eAAc,aAAa;AAAA,MAC9C;AACA,aAAOA;AAAA,IACT;AAAA,IACA,OAAO,YAAY;AACjB,aAAO,KAAK,QAAQ,UAAU,EAAE,IAAK,CAAAA,kBAAgB;AACnD,aAAK,OAAOA,aAAY;AACxB,aAAK,OAAOA,eAAc,UAAU;AACpC,eAAOA;AAAA,MACT,CAAE;AAAA,IACJ;AAAA,IACA,OAAOA,eAAc;AACnB,WAAK,UAAU,OAAOA,aAAY;AAClC,WAAK,gBAAgB,KAAK,cAAc,OAAQ,CAAAC,OAAKA,OAAMD,aAAa;AACxE,aAAOA;AAAA,IACT;AAAA,IACA,QAAQ,YAAY;AAClB,aAAO,KAAK,cAAc,OAAQ,CAAAC,OAAKA,GAAE,eAAe,UAAW;AAAA,IACrE;AAAA,IACA,SAAS;AACP,aAAO,KAAK,cAAc,IAAK,CAAAD,kBAAgB,KAAK,UAAUA,aAAY,CAAE;AAAA,IAC9E;AAAA,IACA,UAAU,iBAAiB,MAAM;AAC/B,aAAO,KAAK,cAAc,IAAK,CAAAA,kBAAgB,KAAK,OAAOA,eAAc,cAAc,GAAG,IAAI,CAAE;AAAA,IAClG;AAAA,IACA,OAAOA,eAAc,iBAAiB,MAAM;AAC1C,UAAI;AACJ,UAAI,OAAOA,kBAAiB,UAAU;AACpC,wBAAgB,KAAK,QAAQA,aAAY;AAAA,MAC3C,OAAO;AACL,wBAAgB,CAAEA,aAAa;AAAA,MACjC;AACA,aAAO,cAAc,IAAK,CAAAA,kBAAgB,OAAOA,cAAa,YAAY,MAAM,aAAaA,cAAa,YAAY,EAAE,GAAG,IAAI,IAAI,MAAU;AAAA,IAC/I;AAAA,IACA,UAAUA,eAAc;AACtB,UAAI,KAAK,YAAYA,eAAc,WAAW,GAAG;AAC/C,aAAK,UAAU,UAAUA,aAAY;AAAA,MACvC;AAAA,IACF;AAAA,IACA,oBAAoB,YAAY;AAC9B,aAAO,IAAI,0BAA0B,YAAY;AACjD,WAAK,QAAQ,UAAU,EAAE,IAAK,CAAAA,kBAAgB,KAAK,UAAU,OAAOA,aAAY,CAAE;AAAA,IACpF;AAAA,IACA,YAAYA,eAAc,SAAS;AACjC,YAAM,EAAC,WAAsB,IAAIA;AACjC,aAAO,KAAK,SAAS,KAAK;AAAA,QACxB;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAMG,YAAN,MAAe;AAAA,IACb,YAAY,KAAK;AACf,WAAK,OAAO;AACZ,WAAK,gBAAgB,IAAID,eAAc,IAAI;AAC3C,WAAK,aAAa,IAAIZ,YAAW,IAAI;AACrC,WAAK,eAAe,CAAC;AAAA,IACvB;AAAA,IACA,IAAI,MAAM;AACR,aAAOc,oBAAmB,KAAK,IAAI;AAAA,IACrC;AAAA,IACA,KAAKZ,OAAM;AACT,aAAO,KAAK,WAAW,KAAKA,KAAI;AAAA,IAClC;AAAA,IACA,UAAU;AACR,aAAO,KAAK,WAAW,KAAK;AAAA,IAC9B;AAAA,IACA,aAAa;AACX,aAAO,KAAK,WAAW,MAAM;AAAA,QAC3B,gBAAgB;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,IACA,yBAAyB;AACvB,UAAI,CAAC,KAAK,WAAW,SAAS,GAAG;AAC/B,eAAO,KAAK,WAAW,KAAK;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,eAAe,aAAa;AAC1B,WAAK,eAAe,CAAE,GAAG,KAAK,cAAc,WAAY;AAAA,IAC1D;AAAA,EACF;AAEA,WAASY,oBAAmB,KAAK;AAC/B,QAAI,OAAO,QAAQ,YAAY;AAC7B,YAAM,IAAI;AAAA,IACZ;AACA,QAAI,OAAO,CAAC,UAAU,KAAK,GAAG,GAAG;AAC/B,YAAMC,KAAI,SAAS,cAAc,GAAG;AACpC,MAAAA,GAAE,OAAO;AACT,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;AAEA,WAASC,gBAAe,MAAMC,WAAU,KAAK,KAAK,SAAS,oBAAoB;AAC7E,WAAO,IAAIJ,UAAS,GAAG;AAAA,EACzB;AAEA,WAASI,WAAUC,OAAM;AACvB,UAAM,UAAU,SAAS,KAAK,cAAc,2BAA2BA,SAAQ;AAC/E,QAAI,SAAS;AACX,aAAO,QAAQ,aAAa,SAAS;AAAA,IACvC;AAAA,EACF;;;AC5fA,MAAO,mBAAQC,gBAAe;;;ACE9B,MAAM,cAAc,YAAY,MAAM;AAGtC,cAAY,QAAQ;AACpB,cAAY,WAAW;AAEvB,SAAO,WAAa;;;ACTpB,MAAI,yBAAyB;AAE7B,WAAS,WAAW,UAAU,QAAQ;AAClC,QAAI,cAAc,OAAO;AACzB,QAAIC;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAGJ,QAAI,OAAO,aAAa,0BAA0B,SAAS,aAAa,wBAAwB;AAC9F;AAAA,IACF;AAGA,aAASC,KAAI,YAAY,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAC9C,MAAAD,QAAO,YAAYC,EAAC;AACpB,iBAAWD,MAAK;AAChB,yBAAmBA,MAAK;AACxB,kBAAYA,MAAK;AAEjB,UAAI,kBAAkB;AAClB,mBAAWA,MAAK,aAAa;AAC7B,oBAAY,SAAS,eAAe,kBAAkB,QAAQ;AAE9D,YAAI,cAAc,WAAW;AACzB,cAAIA,MAAK,WAAW,SAAQ;AACxB,uBAAWA,MAAK;AAAA,UACpB;AACA,mBAAS,eAAe,kBAAkB,UAAU,SAAS;AAAA,QACjE;AAAA,MACJ,OAAO;AACH,oBAAY,SAAS,aAAa,QAAQ;AAE1C,YAAI,cAAc,WAAW;AACzB,mBAAS,aAAa,UAAU,SAAS;AAAA,QAC7C;AAAA,MACJ;AAAA,IACJ;AAIA,QAAI,gBAAgB,SAAS;AAE7B,aAASE,KAAI,cAAc,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAChD,MAAAF,QAAO,cAAcE,EAAC;AACtB,iBAAWF,MAAK;AAChB,yBAAmBA,MAAK;AAExB,UAAI,kBAAkB;AAClB,mBAAWA,MAAK,aAAa;AAE7B,YAAI,CAAC,OAAO,eAAe,kBAAkB,QAAQ,GAAG;AACpD,mBAAS,kBAAkB,kBAAkB,QAAQ;AAAA,QACzD;AAAA,MACJ,OAAO;AACH,YAAI,CAAC,OAAO,aAAa,QAAQ,GAAG;AAChC,mBAAS,gBAAgB,QAAQ;AAAA,QACrC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI;AACJ,MAAI,WAAW;AAEf,MAAI,MAAM,OAAO,aAAa,cAAc,SAAY;AACxD,MAAI,uBAAuB,CAAC,CAAC,OAAO,aAAa,IAAI,cAAc,UAAU;AAC7E,MAAI,oBAAoB,CAAC,CAAC,OAAO,IAAI,eAAe,8BAA8B,IAAI,YAAY;AAElG,WAAS,2BAA2B,KAAK;AACrC,QAAIG,YAAW,IAAI,cAAc,UAAU;AAC3C,IAAAA,UAAS,YAAY;AACrB,WAAOA,UAAS,QAAQ,WAAW,CAAC;AAAA,EACxC;AAEA,WAAS,wBAAwB,KAAK;AAClC,QAAI,CAAC,OAAO;AACR,cAAQ,IAAI,YAAY;AACxB,YAAM,WAAW,IAAI,IAAI;AAAA,IAC7B;AAEA,QAAI,WAAW,MAAM,yBAAyB,GAAG;AACjD,WAAO,SAAS,WAAW,CAAC;AAAA,EAChC;AAEA,WAAS,uBAAuB,KAAK;AACjC,QAAI,WAAW,IAAI,cAAc,MAAM;AACvC,aAAS,YAAY;AACrB,WAAO,SAAS,WAAW,CAAC;AAAA,EAChC;AAUA,WAAS,UAAU,KAAK;AACpB,UAAM,IAAI,KAAK;AACf,QAAI,sBAAsB;AAIxB,aAAO,2BAA2B,GAAG;AAAA,IACvC,WAAW,mBAAmB;AAC5B,aAAO,wBAAwB,GAAG;AAAA,IACpC;AAEA,WAAO,uBAAuB,GAAG;AAAA,EACrC;AAYA,WAAS,iBAAiB,QAAQ,MAAM;AACpC,QAAI,eAAe,OAAO;AAC1B,QAAI,aAAa,KAAK;AACtB,QAAI,eAAe;AAEnB,QAAI,iBAAiB,YAAY;AAC7B,aAAO;AAAA,IACX;AAEA,oBAAgB,aAAa,WAAW,CAAC;AACzC,kBAAc,WAAW,WAAW,CAAC;AAMrC,QAAI,iBAAiB,MAAM,eAAe,IAAI;AAC1C,aAAO,iBAAiB,WAAW,YAAY;AAAA,IACnD,WAAW,eAAe,MAAM,iBAAiB,IAAI;AACjD,aAAO,eAAe,aAAa,YAAY;AAAA,IACnD,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ;AAWA,WAAS,gBAAgBC,OAAM,cAAc;AACzC,WAAO,CAAC,gBAAgB,iBAAiB,WACrC,IAAI,cAAcA,KAAI,IACtB,IAAI,gBAAgB,cAAcA,KAAI;AAAA,EAC9C;AAKA,WAAS,aAAa,QAAQ,MAAM;AAChC,QAAI,WAAW,OAAO;AACtB,WAAO,UAAU;AACb,UAAI,YAAY,SAAS;AACzB,WAAK,YAAY,QAAQ;AACzB,iBAAW;AAAA,IACf;AACA,WAAO;AAAA,EACX;AAEA,WAAS,oBAAoB,QAAQ,MAAMA,OAAM;AAC7C,QAAI,OAAOA,KAAI,MAAM,KAAKA,KAAI,GAAG;AAC7B,aAAOA,KAAI,IAAI,KAAKA,KAAI;AACxB,UAAI,OAAOA,KAAI,GAAG;AACd,eAAO,aAAaA,OAAM,EAAE;AAAA,MAChC,OAAO;AACH,eAAO,gBAAgBA,KAAI;AAAA,MAC/B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,oBAAoB;AAAA,IACpB,QAAQ,SAAS,QAAQ,MAAM;AAC3B,UAAI,aAAa,OAAO;AACxB,UAAI,YAAY;AACZ,YAAI,aAAa,WAAW,SAAS,YAAY;AACjD,YAAI,eAAe,YAAY;AAC3B,uBAAa,WAAW;AACxB,uBAAa,cAAc,WAAW,SAAS,YAAY;AAAA,QAC/D;AACA,YAAI,eAAe,YAAY,CAAC,WAAW,aAAa,UAAU,GAAG;AACjE,cAAI,OAAO,aAAa,UAAU,KAAK,CAAC,KAAK,UAAU;AAInD,mBAAO,aAAa,YAAY,UAAU;AAC1C,mBAAO,gBAAgB,UAAU;AAAA,UACrC;AAIA,qBAAW,gBAAgB;AAAA,QAC/B;AAAA,MACJ;AACA,0BAAoB,QAAQ,MAAM,UAAU;AAAA,IAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,OAAO,SAAS,QAAQ,MAAM;AAC1B,0BAAoB,QAAQ,MAAM,SAAS;AAC3C,0BAAoB,QAAQ,MAAM,UAAU;AAE5C,UAAI,OAAO,UAAU,KAAK,OAAO;AAC7B,eAAO,QAAQ,KAAK;AAAA,MACxB;AAEA,UAAI,CAAC,KAAK,aAAa,OAAO,GAAG;AAC7B,eAAO,gBAAgB,OAAO;AAAA,MAClC;AAAA,IACJ;AAAA,IAEA,UAAU,SAAS,QAAQ,MAAM;AAC7B,UAAI,WAAW,KAAK;AACpB,UAAI,OAAO,UAAU,UAAU;AAC3B,eAAO,QAAQ;AAAA,MACnB;AAEA,UAAI,aAAa,OAAO;AACxB,UAAI,YAAY;AAGZ,YAAI,WAAW,WAAW;AAE1B,YAAI,YAAY,YAAa,CAAC,YAAY,YAAY,OAAO,aAAc;AACvE;AAAA,QACJ;AAEA,mBAAW,YAAY;AAAA,MAC3B;AAAA,IACJ;AAAA,IACA,QAAQ,SAAS,QAAQ,MAAM;AAC3B,UAAI,CAAC,KAAK,aAAa,UAAU,GAAG;AAChC,YAAI,gBAAgB;AACpB,YAAIH,KAAI;AAKR,YAAI,WAAW,OAAO;AACtB,YAAI;AACJ,YAAI;AACJ,eAAM,UAAU;AACZ,qBAAW,SAAS,YAAY,SAAS,SAAS,YAAY;AAC9D,cAAI,aAAa,YAAY;AACzB,uBAAW;AACX,uBAAW,SAAS;AAAA,UACxB,OAAO;AACH,gBAAI,aAAa,UAAU;AACvB,kBAAI,SAAS,aAAa,UAAU,GAAG;AACnC,gCAAgBA;AAChB;AAAA,cACJ;AACA,cAAAA;AAAA,YACJ;AACA,uBAAW,SAAS;AACpB,gBAAI,CAAC,YAAY,UAAU;AACvB,yBAAW,SAAS;AACpB,yBAAW;AAAA,YACf;AAAA,UACJ;AAAA,QACJ;AAEA,eAAO,gBAAgB;AAAA,MAC3B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,eAAe;AACnB,MAAI,2BAA2B;AAC/B,MAAI,YAAY;AAChB,MAAI,eAAe;AAEnB,WAASI,QAAO;AAAA,EAAC;AAEjB,WAAS,kBAAkB,MAAM;AAC/B,QAAI,MAAM;AACN,aAAQ,KAAK,gBAAgB,KAAK,aAAa,IAAI,KAAM,KAAK;AAAA,IAClE;AAAA,EACF;AAEA,WAAS,gBAAgBC,aAAY;AAEjC,WAAO,SAASC,UAAS,UAAU,QAAQC,UAAS;AAChD,UAAI,CAACA,UAAS;AACV,QAAAA,WAAU,CAAC;AAAA,MACf;AAEA,UAAI,OAAO,WAAW,UAAU;AAC5B,YAAI,SAAS,aAAa,eAAe,SAAS,aAAa,UAAU,SAAS,aAAa,QAAQ;AACnG,cAAI,aAAa;AACjB,mBAAS,IAAI,cAAc,MAAM;AACjC,iBAAO,YAAY;AAAA,QACvB,OAAO;AACH,mBAAS,UAAU,MAAM;AAAA,QAC7B;AAAA,MACJ;AAEA,UAAI,aAAaA,SAAQ,cAAc;AACvC,UAAI,oBAAoBA,SAAQ,qBAAqBH;AACrD,UAAI,cAAcG,SAAQ,eAAeH;AACzC,UAAI,oBAAoBG,SAAQ,qBAAqBH;AACrD,UAAI,cAAcG,SAAQ,eAAeH;AACzC,UAAI,wBAAwBG,SAAQ,yBAAyBH;AAC7D,UAAI,kBAAkBG,SAAQ,mBAAmBH;AACjD,UAAI,4BAA4BG,SAAQ,6BAA6BH;AACrE,UAAI,eAAeG,SAAQ,iBAAiB;AAG5C,UAAI,kBAAkB,uBAAO,OAAO,IAAI;AACxC,UAAI,mBAAmB,CAAC;AAExB,eAAS,gBAAgBC,MAAK;AAC1B,yBAAiB,KAAKA,IAAG;AAAA,MAC7B;AAEA,eAAS,wBAAwB,MAAM,gBAAgB;AACnD,YAAI,KAAK,aAAa,cAAc;AAChC,cAAI,WAAW,KAAK;AACpB,iBAAO,UAAU;AAEb,gBAAIA,OAAM;AAEV,gBAAI,mBAAmBA,OAAM,WAAW,QAAQ,IAAI;AAGhD,8BAAgBA,IAAG;AAAA,YACvB,OAAO;AAIH,8BAAgB,QAAQ;AACxB,kBAAI,SAAS,YAAY;AACrB,wCAAwB,UAAU,cAAc;AAAA,cACpD;AAAA,YACJ;AAEA,uBAAW,SAAS;AAAA,UACxB;AAAA,QACJ;AAAA,MACJ;AAUA,eAAS,WAAW,MAAM,YAAY,gBAAgB;AAClD,YAAI,sBAAsB,IAAI,MAAM,OAAO;AACvC;AAAA,QACJ;AAEA,YAAI,YAAY;AACZ,qBAAW,YAAY,IAAI;AAAA,QAC/B;AAEA,wBAAgB,IAAI;AACpB,gCAAwB,MAAM,cAAc;AAAA,MAChD;AA8BA,eAAS,UAAU,MAAM;AACrB,YAAI,KAAK,aAAa,gBAAgB,KAAK,aAAa,0BAA0B;AAC9E,cAAI,WAAW,KAAK;AACpB,iBAAO,UAAU;AACb,gBAAIA,OAAM,WAAW,QAAQ;AAC7B,gBAAIA,MAAK;AACL,8BAAgBA,IAAG,IAAI;AAAA,YAC3B;AAGA,sBAAU,QAAQ;AAElB,uBAAW,SAAS;AAAA,UACxB;AAAA,QACJ;AAAA,MACJ;AAEA,gBAAU,QAAQ;AAElB,eAAS,gBAAgB,IAAI;AACzB,oBAAY,EAAE;AAEd,YAAI,WAAW,GAAG;AAClB,eAAO,UAAU;AACb,cAAI,cAAc,SAAS;AAE3B,cAAIA,OAAM,WAAW,QAAQ;AAC7B,cAAIA,MAAK;AACL,gBAAI,kBAAkB,gBAAgBA,IAAG;AAGzC,gBAAI,mBAAmB,iBAAiB,UAAU,eAAe,GAAG;AAChE,uBAAS,WAAW,aAAa,iBAAiB,QAAQ;AAC1D,sBAAQ,iBAAiB,QAAQ;AAAA,YACrC,OAAO;AACL,8BAAgB,QAAQ;AAAA,YAC1B;AAAA,UACJ,OAAO;AAGL,4BAAgB,QAAQ;AAAA,UAC1B;AAEA,qBAAW;AAAA,QACf;AAAA,MACJ;AAEA,eAAS,cAAc,QAAQ,kBAAkB,gBAAgB;AAI7D,eAAO,kBAAkB;AACrB,cAAI,kBAAkB,iBAAiB;AACvC,cAAK,iBAAiB,WAAW,gBAAgB,GAAI;AAGjD,4BAAgB,cAAc;AAAA,UAClC,OAAO;AAGH;AAAA,cAAW;AAAA,cAAkB;AAAA,cAAQ;AAAA;AAAA,YAA2B;AAAA,UACpE;AACA,6BAAmB;AAAA,QACvB;AAAA,MACJ;AAEA,eAAS,QAAQ,QAAQ,MAAMC,eAAc;AACzC,YAAI,UAAU,WAAW,IAAI;AAE7B,YAAI,SAAS;AAGT,iBAAO,gBAAgB,OAAO;AAAA,QAClC;AAEA,YAAI,CAACA,eAAc;AAEf,cAAI,kBAAkB,QAAQ,IAAI,MAAM,OAAO;AAC3C;AAAA,UACJ;AAGA,UAAAJ,YAAW,QAAQ,IAAI;AAEvB,sBAAY,MAAM;AAElB,cAAI,0BAA0B,QAAQ,IAAI,MAAM,OAAO;AACnD;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,OAAO,aAAa,YAAY;AAClC,wBAAc,QAAQ,IAAI;AAAA,QAC5B,OAAO;AACL,4BAAkB,SAAS,QAAQ,IAAI;AAAA,QACzC;AAAA,MACJ;AAEA,eAAS,cAAc,QAAQ,MAAM;AACjC,YAAI,iBAAiB,KAAK;AAC1B,YAAI,mBAAmB,OAAO;AAC9B,YAAI;AACJ,YAAI;AAEJ,YAAI;AACJ,YAAI;AACJ,YAAI;AAGJ;AAAO,iBAAO,gBAAgB;AAC1B,4BAAgB,eAAe;AAC/B,2BAAe,WAAW,cAAc;AAGxC,mBAAO,kBAAkB;AACrB,gCAAkB,iBAAiB;AAEnC,kBAAI,eAAe,cAAc,eAAe,WAAW,gBAAgB,GAAG;AAC1E,iCAAiB;AACjB,mCAAmB;AACnB,yBAAS;AAAA,cACb;AAEA,+BAAiB,WAAW,gBAAgB;AAE5C,kBAAI,kBAAkB,iBAAiB;AAGvC,kBAAI,eAAe;AAEnB,kBAAI,oBAAoB,eAAe,UAAU;AAC7C,oBAAI,oBAAoB,cAAc;AAGlC,sBAAI,cAAc;AAGd,wBAAI,iBAAiB,gBAAgB;AAIjC,0BAAK,iBAAiB,gBAAgB,YAAY,GAAI;AAClD,4BAAI,oBAAoB,gBAAgB;AAMpC,yCAAe;AAAA,wBACnB,OAAO;AAQH,iCAAO,aAAa,gBAAgB,gBAAgB;AAIpD,8BAAI,gBAAgB;AAGhB,4CAAgB,cAAc;AAAA,0BAClC,OAAO;AAGH;AAAA,8BAAW;AAAA,8BAAkB;AAAA,8BAAQ;AAAA;AAAA,4BAA2B;AAAA,0BACpE;AAEA,6CAAmB;AAAA,wBACvB;AAAA,sBACJ,OAAO;AAGH,uCAAe;AAAA,sBACnB;AAAA,oBACJ;AAAA,kBACJ,WAAW,gBAAgB;AAEvB,mCAAe;AAAA,kBACnB;AAEA,iCAAe,iBAAiB,SAAS,iBAAiB,kBAAkB,cAAc;AAC1F,sBAAI,cAAc;AAKd,4BAAQ,kBAAkB,cAAc;AAAA,kBAC5C;AAAA,gBAEJ,WAAW,oBAAoB,aAAa,mBAAmB,cAAc;AAEzE,iCAAe;AAGf,sBAAI,iBAAiB,cAAc,eAAe,WAAW;AACzD,qCAAiB,YAAY,eAAe;AAAA,kBAChD;AAAA,gBAEJ;AAAA,cACJ;AAEA,kBAAI,cAAc;AAGd,iCAAiB;AACjB,mCAAmB;AACnB,yBAAS;AAAA,cACb;AAQA,kBAAI,gBAAgB;AAGhB,gCAAgB,cAAc;AAAA,cAClC,OAAO;AAGH;AAAA,kBAAW;AAAA,kBAAkB;AAAA,kBAAQ;AAAA;AAAA,gBAA2B;AAAA,cACpE;AAEA,iCAAmB;AAAA,YACvB;AAMA,gBAAI,iBAAiB,iBAAiB,gBAAgB,YAAY,MAAM,iBAAiB,gBAAgB,cAAc,GAAG;AACtH,qBAAO,YAAY,cAAc;AAEjC,sBAAQ,gBAAgB,cAAc;AAAA,YAC1C,OAAO;AACH,kBAAI,0BAA0B,kBAAkB,cAAc;AAC9D,kBAAI,4BAA4B,OAAO;AACnC,oBAAI,yBAAyB;AACzB,mCAAiB;AAAA,gBACrB;AAEA,oBAAI,eAAe,WAAW;AAC1B,mCAAiB,eAAe,UAAU,OAAO,iBAAiB,GAAG;AAAA,gBACzE;AACA,uBAAO,YAAY,cAAc;AACjC,gCAAgB,cAAc;AAAA,cAClC;AAAA,YACJ;AAEA,6BAAiB;AACjB,+BAAmB;AAAA,UACvB;AAEA,sBAAc,QAAQ,kBAAkB,cAAc;AAEtD,YAAI,mBAAmB,kBAAkB,OAAO,QAAQ;AACxD,YAAI,kBAAkB;AAClB,2BAAiB,QAAQ,IAAI;AAAA,QACjC;AAAA,MACJ;AAEA,UAAI,cAAc;AAClB,UAAI,kBAAkB,YAAY;AAClC,UAAI,aAAa,OAAO;AAExB,UAAI,CAAC,cAAc;AAGf,YAAI,oBAAoB,cAAc;AAClC,cAAI,eAAe,cAAc;AAC7B,gBAAI,CAAC,iBAAiB,UAAU,MAAM,GAAG;AACrC,8BAAgB,QAAQ;AACxB,4BAAc,aAAa,UAAU,gBAAgB,OAAO,UAAU,OAAO,YAAY,CAAC;AAAA,YAC9F;AAAA,UACJ,OAAO;AAEH,0BAAc;AAAA,UAClB;AAAA,QACJ,WAAW,oBAAoB,aAAa,oBAAoB,cAAc;AAC1E,cAAI,eAAe,iBAAiB;AAChC,gBAAI,YAAY,cAAc,OAAO,WAAW;AAC5C,0BAAY,YAAY,OAAO;AAAA,YACnC;AAEA,mBAAO;AAAA,UACX,OAAO;AAEH,0BAAc;AAAA,UAClB;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,gBAAgB,QAAQ;AAGxB,wBAAgB,QAAQ;AAAA,MAC5B,OAAO;AACH,YAAI,OAAO,cAAc,OAAO,WAAW,WAAW,GAAG;AACrD;AAAA,QACJ;AAEA,gBAAQ,aAAa,QAAQ,YAAY;AAOzC,YAAI,kBAAkB;AAClB,mBAASL,KAAE,GAAG,MAAI,iBAAiB,QAAQA,KAAE,KAAKA,MAAK;AACnD,gBAAI,aAAa,gBAAgB,iBAAiBA,EAAC,CAAC;AACpD,gBAAI,YAAY;AACZ,yBAAW,YAAY,WAAW,YAAY,KAAK;AAAA,YACvD;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,CAAC,gBAAgB,gBAAgB,YAAY,SAAS,YAAY;AAClE,YAAI,YAAY,WAAW;AACvB,wBAAc,YAAY,UAAU,SAAS,iBAAiB,GAAG;AAAA,QACrE;AAMA,iBAAS,WAAW,aAAa,aAAa,QAAQ;AAAA,MAC1D;AAEA,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAI,WAAW,gBAAgB,UAAU;AAEzC,MAAO,uBAAQ;;;AChvBf,MAAIU,QAAO;AAEX,MAAIC,WAAU;AAEd,MAAI,cAAc;AAElB,MAAI,WAAW,CAAE,QAAQ,SAAS,cAAc,eAAe,SAAS,OAAO,mBAAmB,eAAe,KAAM;AAEvH,MAAI,WAAW;AAEf,MAAI,OAAO;AAEX,MAAI,aAAa;AAEjB,MAAI,UAAU;AAEd,MAAI,SAAS;AAEb,MAAI,eAAe,CAAE,8CAA8C,4CAA4C,uCAAuC,oCAAqC;AAE3L,MAAIC,QAAO;AAEX,MAAI,SAAS;AAEb,MAAI,UAAU;AAEd,MAAI,QAAQ;AAEZ,MAAI,MAAM;AAEV,MAAI,QAAQ,CAAE,UAAU,cAAe;AAEvC,MAAI,UAAU;AAAA,IACZ,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,gBAAgB;AAAA,EAClB;AAEA,MAAI,eAAe;AAAA,IACjB,UAAU;AAAA,EACZ;AAEA,MAAI,kBAAkB;AAAA,IACpB,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,IACvB,+BAA+B;AAAA,IAC/B,yBAAyB;AAAA,IACzB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,IACX,2BAA2B;AAAA,EAC7B;AAEA,MAAI,cAAc;AAAA,IAChB,MAAMF;AAAA,IACN,SAASC;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAMC;AAAA,IACN;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAM,YAAY;AAAA,IAChB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AAEA,MAAM,cAAc;AAAA,IAClB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AAEA,MAAM,iBAAiB;AAAA,IACrB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EACR;AAEA,MAAI;AAEJ,MAAI,gBAAgB;AAAA,IAClB,IAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAAA,IACA,IAAI,SAAS;AACX,sBAAgB;AAAA,IAClB;AAAA,EACF;AAIA,MAAM,cAAc,aAAW,UAAU,QAAQ,OAAO,KAAK,eAAe,QAAQ,IAAI;AAMxF,MAAM,cAAc,cAAY;AAC9B,UAAM,UAAU,YAAY,SAAS,aAAa,KAAK,eAAe,WAAW,SAAS,cAAc,QAAQ;AAChH,UAAM,eAAe,WAAW,cAAc;AAC9C,QAAI,gBAAgB,aAAa;AAAO,mBAAa,MAAM;AAAA,EAC7D;AAQA,MAAMC,YAAW,CAAC,SAASH,OAAM,SAAS,CAAC,MAAM;AAC/C,UAAM,OAAO;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,MACZ;AAAA,IACF;AACA,UAAM,QAAQ,IAAI,YAAYA,OAAM,IAAI;AACxC,YAAQ,cAAc,KAAK;AAC3B,QAAI,OAAO;AAAQ,aAAO,OAAO,OAAO,EAAE,QAAQA,OAAM,MAAM;AAAA,EAChE;AAIA,MAAM,iBAAiB,WAAS,SAAS,SAAS,OAAO,UAAU,MAAM,YAAY,yBAAyB,IAAI,EAAE;AAIpH,MAAM,sBAAsB,CAAC,OAAO,UAAU,UAAU;AACtD,UAAM,eAAe,SAAS,SAAS,OAAO,UAAU,MAAM,YAAY,4BAA4B,IAAI;AAC1G,UAAM,YAAY,CAAC;AACnB,aAASI,KAAI,GAAGA,KAAI,aAAa,gBAAgBA,MAAK;AACpD,gBAAU,KAAK,aAAa,aAAaA,EAAC,CAAC;AAAA,IAC7C;AACA,WAAO,UAAU,UAAU,QAAQ,IAAI;AAAA,EACzC;AAMA,MAAM,gBAAgB,CAAAC,WAAS,MAAM,KAAKA,MAAK,EAAE,KAAK;AAQtD,MAAM,kBAAkB,CAAC,WAAWC,cAAa;AAC/C,UAAM,KAAK,UAAU,YAAY,UAAU,UAAU,CAAE,UAAU,OAAQ,CAAC,EAAE,QAAQA,SAAQ;AAAA,EAC9F;AAOA,MAAM,WAAW,iBAAkB,SAAS,QAAQ,MAAMC,QAAO;AAC/D,WAAO,UAAUA,SAAQ,MAAM,MAAM,KAAK,YAAY;AAAA,EACxD,CAAE;AAEF,WAAS,iBAAiBD,WAAU;AAClC,WAAO,SAAS,KAAK;AACnB,aAAO,MAAM,GAAG,EAAE,OAAOA,WAAU,EAAE;AAAA,IACvC;AAAA,EACF;AAEA,MAAM,QAAQ,SAAO;AACnB,UAAM,OAAO,OAAO,KAAK;AACzB,WAAO,IAAI,MAAM,wCAAwC,KAAK,CAAC;AAAA,EACjE;AAKA,MAAM,UAAU,CAAC,WAAWA,cAAa;AACvC,QAAI,CAAC,UAAU,QAAQ;AACrB,gBAAU,QAAQ,WAAWA,WAAU,UAAU,KAAK,IAAIA,UAAS;AACnE,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAGA,MAAM,SAAS,CAAC,QAAQ,cAAcH,UAAS,QAAQ,sBAAsB,SAAS,UAAU,SAAS,KAAK,SAAS;AAEvH,MAAM,QAAQ,CAAC,QAAQ,cAAcA,UAAS,QAAQ,qBAAqB,SAAS,UAAU,SAAS,KAAK,SAAS;AAErH,WAASK,UAASC,KAAI,QAAQ,KAAK;AACjC,QAAI;AACJ,WAAO,IAAI,SAAS;AAClB,YAAMH,YAAW,MAAMG,IAAG,MAAM,MAAM,IAAI;AAC1C,UAAI;AAAO,qBAAa,KAAK;AAC7B,cAAQ,WAAWH,WAAU,KAAK;AAAA,IACpC;AAAA,EACF;AAEA,WAAS,aAAaI,WAAU;AAC9B,QAAI,CAACA,UAAS;AAAI,YAAM,MAAMA,UAAS,UAAU;AACjD,WAAOA;AAAA,EACT;AAEA,WAAS,WAAW,KAAK;AACvB,QAAI,QAAQ,UAAa,CAAC,CAAE,UAAU,UAAU,SAAU,EAAE,SAAS,OAAO,GAAG;AAAG,cAAQ,KAAK,0DAA0D,QAAQ,OAAO,MAAM;AAC9K,WAAO,OAAO,OAAO,MAAM;AAAA,EAC7B;AAEA,WAAS,WAAW,KAAK;AACvB,QAAI,QAAQ,UAAa,OAAO,QAAQ;AAAU,cAAQ,KAAK,uCAAuC,QAAQ,OAAO,MAAM;AAC3H,WAAO,OAAO,OAAO,OAAO,GAAG,IAAI;AAAA,EACrC;AAEA,WAAS,UAAU,KAAK;AACtB,QAAI,QAAQ,UAAa,CAAC,MAAM,QAAQ,GAAG;AAAG,cAAQ,KAAK,uCAAuC,QAAQ,OAAO,MAAM;AACvH,WAAO,OAAO,OAAO,MAAM,KAAK,GAAG,IAAI,CAAC;AAAA,EAC1C;AAEA,WAAS,WAAW,KAAK;AACvB,QAAI,QAAQ,UAAa,OAAO,QAAQ;AAAU,cAAQ,KAAK,wCAAwC,QAAQ,OAAO,MAAM;AAC5H,WAAO,OAAO,OAAO,OAAO,GAAG,IAAI,CAAC;AAAA,EACtC;AAEA,WAAS,kBAAkB,MAAM;AAC/B,QAAI,SAAS,UAAa,CAAC,MAAM,QAAQ,IAAI,KAAK,OAAO,SAAS;AAAU,cAAQ,KAAK,mDAAmD,SAAS,OAAO,OAAO;AACnK,WAAO,QAAQ,OAAO,KAAK,MAAM,QAAQ,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI;AAAA,EACjF;AAEA,WAAS,iBAAiB,UAAU;AAClC,WAAQ,IAAI,gBAAe,kBAAkB,QAAQ;AAAA,EACvD;AAOA,iBAAe,gBAAgB,KAAK,mBAAmB;AACrD,QAAI;AACF,YAAMA,YAAW,MAAM,MAAM,KAAK;AAAA,QAChC,SAAS;AAAA,UACP,oBAAoB;AAAA,UACpB,GAAG;AAAA,QACL;AAAA,MACF,CAAC;AACD,UAAIA,aAAY;AAAW;AAC3B,mBAAaA,SAAQ;AACrB,aAAOA;AAAA,IACT,SAASC,IAAP;AACA,cAAQ,MAAM,mBAAmB,KAAK;AAAA,IACxC;AAAA,EACF;AAEA,MAAM,eAAN,MAAmB;AAAA,IACjB,YAAY,SAAS;AACnB,WAAK,UAAU;AACf,WAAK,QAAQ,CAAC;AAAA,IAChB;AAAA,IACA,KAAK,MAAM;AACT,UAAI,KAAK,OAAO,GAAG;AAEjB,aAAK,MAAM;AAAA,MACb;AACA,WAAK,MAAM,KAAK,IAAI;AAAA,IACtB;AAAA,IACA,QAAQ;AACN,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B;AAAA,IACA,SAAS;AACP,aAAO,KAAK,MAAM,WAAW,KAAK;AAAA,IACpC;AAAA,EACF;AAEA,MAAI,QAAS,OAAO,OAAO;AAAA,IACzB,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAUH;AAAA,IACV,UAAUL;AAAA,IACV;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,EACF,CAAC;AAKD,MAAM,cAAc,eAAa,CAAC,QAAQ,SAAS,CAAC,qBAAqB,IAAK,CAAAG,cAAY,OAAOA,cAAa,aAAaA,UAAS,WAAW,QAAQ,IAAI,IAAI,IAAK,EAAE,SAAS,KAAK;AAKpL,MAAM,WAAW,eAAa,QAAM;AAClC,sBAAkB,QAAS,CAAAA,cAAY;AACrC,UAAI,OAAOA,cAAa;AAAY,QAAAA,UAAS,WAAW,EAAE;AAAA,IAC5D,CAAE;AAAA,EACJ;AAEA,MAAM,mBAAmB,CAAC,QAAQ,QAAQ,SAAS;AAGjD,QAAI,CAAC,YAAY,OAAO,OAAO,KAAK,OAAO,YAAY,IAAI;AAAG,aAAO;AACrE,WAAO;AAAA,EACT;AAEA,MAAM,2BAA2B,CAAC,QAAQ,QAAQ,SAAS;AACzD,QAAI,WAAW,cAAc,WAAW,OAAO;AAAmB,aAAO;AACzE,WAAO;AAAA,EACT;AAEA,MAAM,qBAAqB,CAAC,QAAQ,QAAQ,SAAS;AACnD,UAAM,EAAC,uBAA8C,IAAI;AACzD,QAAI,CAAC;AAAwB,aAAO;AACpC,UAAM,YAAY,OAAO,QAAQ,IAAI,yBAAyB;AAE5D,QAAI,CAAC,aAAa,WAAW,cAAc,WAAW,YAAY,MAAM,GAAG;AAC3E,YAAM,SAAS;AAAA,QACb,OAAO;AAAA,MACT;AACA,YAAM,KAAK,KAAK,UAAU,EAAE,QAAS,eAAa;AAChD,YAAI,CAAC,OAAO,UAAU,IAAI;AAAG,iBAAO,aAAa,UAAU,MAAM,UAAU,KAAK;AAAA,MAClF,CAAE;AACF,aAAO;AAAA,IACT;AACA,WAAO,CAAC;AAAA,EACV;AAEA,MAAM,uBAAuB,CAAE,kBAAkB,oBAAoB,wBAAyB;AAE9F,MAAM,oBAAoB,CAAC;AAE3B,MAAI,kBAAmB,OAAO,OAAO;AAAA,IACnC,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,aAAa;AAAA;AAAA,IAEf,QAAQ,eAAa;AACnB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMM,OAAM,cAA4B,IAAI;AACnD,kBAAQ,mBAAmB,aAAa,WAAWA,KAAI,CAAC;AACxD,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,OAAO,eAAa;AAClB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,QAAgB,cAA4B,IAAI;AACvD,gBAAM,gBAAgB,SAAS,cAAc,MAAM;AACnD,cAAI,eAAe;AACjB,0BAAc,YAAY,OAAO;AACjC,wBAAY,aAAa;AAAA,UAC3B;AAAA,QACF,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,WAAW,eAAa;AACtB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,cAA4B,IAAI;AACnD,kBAAQ,YAAY,WAAWA,KAAI;AACnC,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,oBAAoB,eAAa;AAC/B,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,UAAUC,WAAU,cAA4B,IAAI;AACvE,kBAAQ,mBAAmBA,aAAY,aAAa,WAAWD,KAAI,CAAC;AACpE,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,oBAAoB,eAAa;AAC/B,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAY,UAAUC,WAAU,cAA4B,IAAI;AACvE,kBAAQ,mBAAmBA,aAAY,aAAa,WAAW,IAAI,CAAC;AACpE,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,WAAW,eAAa;AACtB,sBAAgB,WAAY,aAAW;AACrC,cAAM,SAAS,QAAQ;AACvB,cAAM,MAAM,UAAU,MAAM,KAAK,OAAO,QAAQ,EAAE,QAAQ,OAAO;AACjE,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMD,OAAM,cAA4B,IAAI;AACnD,kBAAQ,YAAY,WAAWA,KAAI;AACnC,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,OAAO,SAAS,GAAG,IAAI,SAAS,iBAAiB,SAAS;AAAA,MAC3E,CAAE;AAAA,IACJ;AAAA,IACA,SAAS,eAAa;AACpB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,cAA4B,IAAI;AACnD,kBAAQ,mBAAmB,cAAc,WAAWA,KAAI,CAAC;AACzD,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,QAAQ,eAAa;AACnB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,cAA4B,IAAI;AACvC,kBAAQ,OAAO;AACf,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,UAAU,SAAS;AAAA,MAC3B,CAAE;AAAA,IACJ;AAAA,IACA,SAAS,eAAa;AACpB,sBAAgB,WAAY,aAAW;AACrC,cAAM,SAAS,QAAQ;AACvB,cAAM,MAAM,UAAU,MAAM,KAAK,OAAO,QAAQ,EAAE,QAAQ,OAAO;AACjE,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,cAA4B,IAAI;AACnD,kBAAQ,YAAY,WAAWA,KAAI;AACnC,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,OAAO,SAAS,GAAG,IAAI,SAAS,iBAAiB,SAAS;AAAA,MAC3E,CAAE;AAAA,IACJ;AAAA,IACA,aAAa,eAAa;AACxB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAY,cAA4B,IAAI;AACnD,kBAAQ,cAAc,WAAW,IAAI;AACrC,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA;AAAA,IAEA,aAAa,eAAa;AACxB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMZ,MAAI,IAAI;AACrB,kBAAQ,UAAU,IAAI,GAAG,cAAc,CAAE,kBAAkBA,KAAI,CAAE,CAAC,CAAC;AAAA,QACrE,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,iBAAiB,eAAa;AAC5B,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,MAAI,IAAI;AACrB,kBAAQ,gBAAgB,WAAWA,KAAI,CAAC;AAAA,QAC1C,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,gBAAgB,eAAa;AAC3B,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,MAAI,IAAI;AACrB,kBAAQ,UAAU,OAAO,GAAG,cAAc,CAAE,kBAAkBA,KAAI,CAAE,CAAC,CAAC;AACtE,cAAI,QAAQ,UAAU,WAAW;AAAG,oBAAQ,gBAAgB,OAAO;AAAA,QACrE,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,cAAc,eAAa;AACzB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,MAAY,IAAI;AACnC,kBAAQ,aAAa,WAAWA,KAAI,GAAG,WAAW,KAAK,CAAC;AAAA,QAC1D,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,oBAAoB,eAAa;AAC/B,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,MAAY,IAAI;AACnC,kBAAQ,QAAQ,WAAWA,KAAI,CAAC,IAAI,WAAW,KAAK;AAAA,QACtD,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,aAAa,eAAa;AACxB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,MAAY,IAAI;AACnC,cAAIA,SAAQ;AAAS,oBAAQ,WAAWA,KAAI,CAAC,IAAI,WAAW,KAAK;AAAA,QACnE,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,UAAU,eAAa;AACrB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,MAAY,IAAI;AACnC,kBAAQ,MAAM,WAAWA,KAAI,CAAC,IAAI,WAAW,KAAK;AAAA,QACpD,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,WAAW,eAAa;AACtB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,OAAc,IAAI;AACzB,mBAAS,CAACA,OAAM,KAAK,KAAK,OAAO,QAAQ,MAAM;AAAG,oBAAQ,MAAM,WAAWA,KAAI,CAAC,IAAI,WAAW,KAAK;AAAA,QACtG,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,UAAU,eAAa;AACrB,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAY,IAAI;AACvB,kBAAQ,QAAQ,WAAW,KAAK;AAAA,QAClC,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA;AAAA,IAEA,eAAe,eAAa;AAC1B,sBAAgB,WAAY,aAAW;AACrC,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,MAAMA,OAAM,OAAc,IAAI;AACrC,UAAAG,UAAS,SAAS,WAAWH,KAAI,GAAG,WAAW,MAAM,CAAC;AAAA,QACxD,CAAE;AACF,cAAM,SAAS,SAAS;AAAA,MAC1B,CAAE;AAAA,IACJ;AAAA,IACA,SAAS,eAAa;AACpB,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,MAAMA,OAAM,QAAgB,IAAI;AACvC,YAAI,OAAO,SAAS,KAAK,cAAc,cAAcA,SAAQ;AAC7D,YAAI,CAAC,MAAM;AACT,iBAAO,SAAS,cAAc,MAAM;AACpC,eAAK,OAAO,WAAWA,KAAI;AAC3B,mBAAS,KAAK,YAAY,IAAI;AAAA,QAChC;AACA,aAAK,UAAU,WAAW,OAAO;AAAA,MACnC,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA,IACA,UAAU,eAAa;AACrB,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,MAAY,IAAI;AACvB,iBAAS,QAAQ,WAAW,KAAK;AAAA,MACnC,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA;AAAA,IAEA,cAAc,eAAa;AACzB,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,KAAU,IAAI;AACrB,cAAM,UAAU,SAAS,YAAY,iBAAiB;AACtD,gBAAQ,MAAM;AAAA,MAChB,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA,IACA,IAAI,eAAa;AACf,aAAO,QAAQ,SAAS;AACxB,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,MAAY,IAAI;AACvB,gBAAQ,GAAG,KAAK;AAAA,MAClB,CAAE;AACF,YAAM,QAAQ,SAAS;AAAA,IACzB;AAAA,IACA,WAAW,eAAa;AACtB,aAAO,QAAQ,SAAS;AACxB,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,OAAc,OAAc,IAAQ,IAAI;AAC/C,gBAAQ,UAAU,WAAW,KAAK,GAAG,WAAW,KAAK,GAAG,WAAW,GAAG,CAAC;AAAA,MACzE,CAAE;AACF,YAAM,QAAQ,SAAS;AAAA,IACzB;AAAA,IACA,YAAY,eAAa;AACvB,aAAO,QAAQ,SAAS;AACxB,cAAQ,WAAY,MAAM;AACxB,YAAI,EAAC,KAAU,QAAgB,MAAY,IAAI;AAC/C,iBAAS,UAAU;AACnB,cAAM,WAAW,GAAG;AACpB,YAAI,UAAU;AAAW,kBAAQ;AACjC,YAAI,OAAO;AACT,cAAI,OAAO;AAAO,mBAAO,MAAM,MAAM,KAAK;AAAA,cACxC;AAAA,YACF,CAAC;AACD,cAAI,OAAO;AAAY,mBAAO,WAAW,MAAM,KAAK;AAAA,cAClD;AAAA,YACF,CAAC;AACD,cAAI,CAAC,OAAO,SAAS,CAAC,OAAO;AAAY,mBAAO,SAAS,OAAO;AAAA,QAClE,OAAO;AACL,iBAAO,SAAS,OAAO;AAAA,QACzB;AAAA,MACF,CAAE;AACF,YAAM,QAAQ,SAAS;AAAA,IACzB;AAAA,IACA,QAAQ,eAAa;AACnB,aAAO,QAAQ,SAAS;AACxB,cAAQ,WAAY,MAAM;AACxB,eAAO,SAAS,OAAO;AAAA,MACzB,CAAE;AACF,YAAM,QAAQ,SAAS;AAAA,IACzB;AAAA,IACA,mBAAmB,eAAa;AAC9B,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,KAAKc,MAAK,KAAU,IAAI;AAC/B,cAAM,UAAU,SAAS,YAAY,iBAAiB;AACtD,gBAAQ,WAAW,WAAWA,IAAG,CAAC;AAAA,MACpC,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA,IACA,cAAc,eAAa;AACzB,aAAO,QAAQ,SAAS;AACxB,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,OAAc,OAAc,IAAQ,IAAI;AAC/C,gBAAQ,aAAa,WAAW,KAAK,GAAG,WAAW,KAAK,GAAG,WAAW,GAAG,CAAC;AAAA,MAC5E,CAAE;AACF,YAAM,QAAQ,SAAS;AAAA,IACzB;AAAA,IACA,gBAAgB,eAAa;AAC3B,YAAM,EAAC,QAAgB,IAAI;AAC3B,aAAO,SAAS,SAAS;AACzB,cAAQ,WAAY,MAAM;AACxB,gBAAQ,eAAe,SAAS;AAAA,MAClC,CAAE;AACF,YAAM,SAAS,SAAS;AAAA,IAC1B;AAAA,IACA,WAAW,eAAa;AACtB,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,OAAc,IAAI;AACzB,iBAAS,SAAS,WAAW,MAAM;AAAA,MACrC,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA,IACA,UAAU,eAAa;AACrB,YAAM,EAAC,QAAgB,IAAI;AAC3B,aAAO,SAAS,SAAS;AACzB,cAAQ,WAAY,MAAM;AACxB,oBAAY,OAAO;AAAA,MACrB,CAAE;AACF,YAAM,SAAS,SAAS;AAAA,IAC1B;AAAA,IACA,gBAAgB,eAAa;AAC3B,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,KAAKA,MAAK,OAAc,KAAU,IAAI;AAC7C,cAAM,UAAU,SAAS,YAAY,iBAAiB;AACtD,gBAAQ,QAAQ,WAAWA,IAAG,GAAG,WAAW,KAAK,CAAC;AAAA,MACpD,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA;AAAA,IAEA,YAAY,eAAa;AACvB,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,SAASC,UAAS,MAAY,IAAI;AACzC,iBAAS,CAAE,QAAQ,QAAQ,OAAQ,EAAE,SAAS,KAAK,IAAI,QAAQ,KAAK,EAAEA,QAAO,IAAI,QAAQ,IAAIA,QAAO;AAAA,MACtG,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA,IACA,cAAc,eAAa;AACzB,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,MAAMC,OAAM,QAAgB,IAAI;AACvC,gBAAQ,MAAMA,OAAM,UAAU,OAAO,CAAC;AAAA,MACxC,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA,IACA,cAAc,eAAa;AACzB,aAAO,UAAU,SAAS;AAC1B,cAAQ,WAAY,MAAM;AACxB,cAAM,EAAC,OAAc,SAASC,SAAO,IAAI;AACzC,qBAAa,kBAAkB,EAAE,KAAM,YAAU;AAC/C,oBAAU,aAAa;AACvB,cAAI,WAAW;AAAW,gBAAI,aAAa,WAAW,KAAK,GAAG,WAAWA,QAAO,CAAC;AAAA,QACnF,CAAE;AAAA,MACJ,CAAE;AACF,YAAM,UAAU,SAAS;AAAA,IAC3B;AAAA;AAAA,IAEA,OAAO,eAAa;AAClB,sBAAgB,WAAY,aAAW;AACrC,cAAM,EAAC,MAAML,MAAI,IAAI;AACrB,cAAMM,YAAW,SAAS,cAAc,UAAU;AAClD,QAAAA,UAAS,YAAY,OAAO,WAAWN,KAAI,CAAC,EAAE,KAAK;AACnD,kBAAU,UAAUM,UAAS;AAC7B,cAAM,SAAS,QAAQ;AACvB,cAAM,MAAM,UAAU,MAAM,KAAK,OAAO,QAAQ,EAAE,QAAQ,OAAO;AACjE,eAAO,SAAS,SAAS;AACzB,gBAAQ,WAAY,MAAM;AACxB,gBAAM,EAAC,cAA4B,cAA4B,IAAI;AACnE,+BAAS,SAAS,eAAeA,UAAS,UAAUA,UAAS,WAAW;AAAA,YACtE,cAAc,CAAC,CAAC;AAAA,YAChB,mBAAmB,YAAY,SAAS;AAAA,YACxC,aAAa,SAAS,SAAS;AAAA,UACjC,CAAC;AACD,sBAAY,aAAa;AAAA,QAC3B,CAAE;AACF,cAAM,SAAS,OAAO,SAAS,GAAG,IAAI,SAAS,iBAAiB,SAAS;AAAA,MAC3E,CAAE;AAAA,IACJ;AAAA,EACF;AAEA,MAAI,aAAa;AAEjB,MAAMC,OAAM,mBAAiB;AAC3B,iBAAa;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AAEA,MAAM,gBAAgB,CAAAC,gBAAc;AAClC,IAAAD,KAAIC,WAAU;AAAA,EAChB;AAEA,MAAM,eAAe,CAACpB,OAAM,cAAc;AACxC,UAAMoB,cAAa,CAAC;AACpB,IAAAA,YAAWpB,KAAI,IAAI;AACnB,IAAAmB,KAAIC,WAAU;AAAA,EAChB;AAEA,MAAI,iBAAiB;AAAA,IACnB,IAAI,MAAM;AACR,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,iBAAiB;AAErB,MAAI,iBAAiB;AAAA,IACnB,IAAI,WAAW;AACb,aAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO;AACT,UAAI,CAAE,QAAQ,UAAU,SAAS,WAAY,EAAE,SAAS,KAAK;AAAG,yBAAiB;AAAA;AAAY,gBAAQ,KAAK,0DAA0D;AAAA,IACtK;AAAA,EACF;AAEA,MAAM,UAAU,CAACA,aAAYH,WAAU;AAAA,IACrC,kBAAkB,eAAe;AAAA,EACnC,MAAM;AACJ,UAAM,UAAU,CAAC;AACjB,IAAAG,YAAW,QAAS,eAAa;AAC/B,UAAI,CAAC,CAAC,UAAU;AAAO,gBAAQ,UAAU,KAAK,IAAI,QAAQ,UAAU,KAAK,IAAI,EAAE,QAAQ,UAAU,KAAK,IAAI;AAAA,IAC5G,CAAE;AACF,IAAAA,YAAW,QAAS,eAAa;AAC/B,YAAMpB,QAAO,UAAU;AACvB,UAAI;AACF,YAAI,UAAU,UAAU;AACtB,cAAI,UAAU,OAAO;AACnB,sBAAU,UAAU,UAAU,YAAY,oBAAoB,UAAU,QAAQ,IAAI,eAAe,UAAU,QAAQ;AAAA,UACvH,OAAO;AACL,sBAAU,UAAU,UAAU,YAAY,SAAS,iBAAiB,UAAU,QAAQ,IAAI,SAAS,cAAc,UAAU,QAAQ;AAAA,UACrI;AAAA,QACF,OAAO;AACL,oBAAU,UAAU;AAAA,QACtB;AACA,YAAI,UAAU,WAAWiB,SAAQ,qBAAqB,UAAU;AAC9D,wBAAc,IAAI,SAAS,aAAa;AACxC,gBAAM,sBAAsB,eAAe,IAAIjB,KAAI;AACnD,cAAI,qBAAqB;AACvB,gCAAoB,SAAS;AAC7B,gBAAI,CAAC,CAAC,UAAU,SAAS,EAAE,QAAQ,UAAU,KAAK,MAAM;AAAG,cAAAG,UAAS,UAAU,8BAA8B;AAAA,gBAC1G,OAAO,UAAU;AAAA,cACnB,CAAC;AAAA,UACH,OAAO;AACL,oBAAQ,MAAM,iCAAiCH,0FAAyF;AAAA,UAC1I;AAAA,QACF;AAAA,MACF,SAASW,IAAP;AACA,YAAI,UAAU,SAAS;AACrB,kBAAQ,MAAM,mCAAmCX,SAAQ,gBAAgBW,GAAE,iKAAiK;AAC5O,kBAAQ,MAAMA,EAAC;AAAA,QACjB,OAAO;AACL,gBAAM,UAAU,cAAcX,SAAQ,iEAAiE,UAAU;AACjH,kBAAQiB,SAAQ,kBAAkB;AAAA,YACjC,KAAK;AACJ;AAAA,YAED,KAAK;AACJ,cAAAd,UAAS,UAAU,+BAA+B;AAAA,gBAChD;AAAA,gBACA;AAAA,cACF,CAAC;AACD;AAAA,YAED,KAAK;AACJ,oBAAM;AAAA,YAEP;AACC,sBAAQ,KAAK,OAAO;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAE;AAAA,EACJ;AAEA,MAAM,eAAe,CAACiB,aAAYH,WAAU;AAAA,IAC1C,kBAAkB,eAAe;AAAA,EACnC,MAAM,IAAI,QAAS,CAACI,UAAS,WAAW;AACtC,QAAI;AACF,MAAAA,SAAQ,QAAQD,aAAYH,QAAO,CAAC;AAAA,IACtC,SAAS,KAAP;AACA,aAAO,GAAG;AAAA,IACZ;AAAA,EACF,CAAE;AAEF,MAAM,qBAAN,cAAiC,YAAY;AAAA,IAC3C,WAAW,UAAU;AACnB,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAAA,IACA,OAAO,SAAS;AACd,UAAI,CAAC,eAAe,IAAI,KAAK,OAAO,GAAG;AACrC,uBAAe,OAAO,KAAK,SAAS,IAAI;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,uBAAuB;AACrB,UAAI,KAAK;AAAS,aAAK,QAAQ,YAAY;AAAA,IAC7C;AAAA,IACA,mBAAmBK,WAAU,SAAS,kBAAkB;AACtD,WAAK,UAAUA,UAAS,cAAc,OAAO;AAAA,QAC3C;AAAA,QACA,YAAY,KAAK;AAAA,MACnB,GAAG;AAAA,QACD,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,SAAS,gBAAgB,aAAa,yBAAyB,KAAK,SAAS,gBAAgB,aAAa,oBAAoB;AAAA,IACvI;AAAA,IACA,IAAI,aAAa;AACf,aAAO,KAAK,aAAa,YAAY;AAAA,IACvC;AAAA,EACF;AAEA,MAAIA;AAEJ,MAAM,UAAU,CAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAI;AAEhE,MAAM,OAAO,QAAM,IAAI,QAAS,CAAAD,aAAW,WAAWA,UAAS,EAAE,CAAE;AAEnE,MAAM,uBAAuB,OAAO,QAAQ,MAAM;AAChD,QAAIC;AAAU,aAAOA;AACrB,QAAI,SAAS,QAAQ,QAAQ;AAC3B,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AACA,UAAM,KAAK,QAAQ,KAAK,CAAC;AACzB,WAAO,MAAM,qBAAqB,QAAQ,CAAC;AAAA,EAC7C;AAEA,MAAI,gBAAgB;AAAA,IAClB,YAAY,OAAO;AACjB,MAAAA,YAAW;AAAA,IACb;AAAA,IACA,IAAI,WAAW;AACb,aAAOA;AAAA,IACT;AAAA,IACA,MAAM,cAAc;AAClB,aAAO,MAAM,qBAAqB;AAAA,IACpC;AAAA,EACF;AAEA,MAAM,oBAAN,cAAgC,mBAAmB;AAAA,IACjD,WAAW,UAAU;AACnB,aAAO;AAAA,IACT;AAAA,IACA,MAAM,oBAAoB;AACxB,UAAI,KAAK;AAAS;AAClB,YAAMA,YAAW,MAAM,cAAc,YAAY;AACjD,UAAIA,WAAU;AACZ,aAAK,mBAAmBA,WAAU,sBAAsB,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAAA,MAC3F,OAAO;AACL,gBAAQ,MAAM,oHAAoH;AAAA,MACpI;AAAA,IACF;AAAA,IACA,kBAAkBN,OAAM;AACtB,UAAIA,MAAK;AAAY,gBAAQA,MAAK,YAAY;AAAA,UAC5C,kBAAkB,KAAK;AAAA,QACzB,CAAC;AAAA,IACH;AAAA,IACA,IAAI,mBAAmB;AACrB,YAAM,QAAQ,KAAK,aAAa,SAAS,KAAK,eAAe;AAEzD,UAAI,CAAE,QAAQ,UAAU,OAAQ,EAAE,SAAS,KAAK;AAAG,eAAO;AAAA,WAAY;AACxE,gBAAQ,KAAK,oDAAoD;AACjE,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY;AAEhB,MAAIO,SAAQ;AAAA,IACV,IAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW;AACb,aAAO,CAAC;AAAA,IACV;AAAA,IACA,IAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO;AACT,kBAAY,CAAC,CAAC;AAAA,IAChB;AAAA,IACA,IAAI,MAAM,OAAO;AACf,kBAAY,CAAC,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,MAAM,UAAU,CAACP,OAAM,WAAW;AAChC,QAAIO,OAAM;AAAU;AACpB,UAAMR,WAAU,sCAAiC,OAAO;AACxD,YAAQ,IAAIA,UAAS;AAAA,MACnB,UAAU,OAAO,IAAK,CAAAS,OAAKA,GAAE,OAAQ;AAAA,MACrC,aAAa,OAAO,IAAK,CAAAA,OAAKA,GAAE,QAAQ,aAAa,YAAY,CAAE;AAAA,MACnE,MAAMR;AAAA,IACR,CAAC;AACD,WAAOD;AAAA,EACT;AAEA,MAAM,SAAS,CAAC,WAAW,WAAW;AACpC,QAAIQ,OAAM;AAAU;AACpB,UAAME,YAAW,oBAAI,SAAO;AAC5B,UAAMV,WAAU,2CAAsCU,gBAAe;AACrE,YAAQ,IAAIV,QAAO;AACnB,WAAOA;AAAA,EACT;AAEA,MAAM,WAAW,CAAC,WAAW,SAAS,SAAS;AAC7C,QAAIQ,OAAM;AAAU;AACpB,UAAME,YAAW,oBAAI,SAAO;AAC5B,UAAMV,WAAU,kDAA6CU;AAC7D,YAAQ,IAAIV,UAAS;AAAA,MACnB;AAAA,MACA;AAAA,IACF,CAAC;AACD,WAAOA;AAAA,EACT;AAEA,MAAM,aAAa,CAAC,WAAW,YAAY;AACzC,QAAIQ,OAAM;AAAU;AACpB,UAAME,YAAW,oBAAI,SAAO;AAC5B,UAAMV,WAAU,0CAAqCU;AACrD,YAAQ,IAAIV,UAAS;AAAA,MACnB;AAAA,IACF,CAAC;AACD,WAAOA;AAAA,EACT;AAEA,MAAM,WAAW,CAAC,WAAW,YAAY;AACvC,QAAIQ,OAAM;AAAU;AACpB,UAAME,YAAW,oBAAI,SAAO;AAC5B,UAAMV,WAAU,2CAAsCU;AACtD,YAAQ,IAAIV,UAAS;AAAA,MACnB;AAAA,IACF,CAAC;AACD,WAAOA;AAAA,EACT;AAEA,MAAI,MAAM;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAMW,sBAAN,MAAyB;AAAA,IACvB,YAAY,UAAU,UAAU,MAAM;AACpC,WAAK,WAAW;AAChB,WAAK,UAAU,WAAW;AAC1B,WAAK,UAAU;AACf,WAAK,eAAe;AACpB,WAAK,uBAAuB,IAAI,qBAAqB,KAAK,SAAS;AAAA,IACrE;AAAA,IACA,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,UAAU;AACf,aAAK,qBAAqB,QAAQ,KAAK,OAAO;AAC9C,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA,IACA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,aAAK,UAAU;AACf,aAAK,qBAAqB,UAAU,KAAK,OAAO;AAChD,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,oBAAkB,MAAM;AACtB,eAAS,iBAAiB,oBAAoB,KAAK,sBAAsB;AAAA,IAC3E;AAAA,IACA,sBAAoB,MAAM;AACxB,eAAS,oBAAoB,oBAAoB,KAAK,sBAAsB;AAAA,IAC9E;AAAA,IACA,YAAU,aAAW;AACnB,cAAQ,QAAS,WAAS;AACxB,YAAI,MAAM,WAAW,KAAK,SAAS;AACjC,cAAI,MAAM,kBAAkB,SAAS,oBAAoB,WAAW;AAClE,iBAAK,eAAe;AACpB,iBAAK,SAAS,mBAAmB;AAAA,UACnC,OAAO;AACL,iBAAK,eAAe;AACpB,iBAAK,SAAS,wBAAwB;AAAA,UACxC;AAAA,QACF;AAAA,MACF,CAAE;AAAA,IACJ;AAAA,IACA,yBAAuB,WAAS;AAC9B,UAAI,SAAS,oBAAoB,aAAa,KAAK,cAAc;AAC/D,aAAK,SAAS,mBAAmB;AAAA,MACnC,OAAO;AACL,aAAK,SAAS,wBAAwB;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEA,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEjB,MAAM,oBAAN,cAAgC,mBAAmB;AAAA,IACjD,WAAW,UAAU;AACnB,aAAO;AAAA,IACT;AAAA,IACA,cAAc;AACZ,YAAM;AACN,YAAM,aAAa,KAAK,aAAa;AAAA,QACnC,MAAM;AAAA,MACR,CAAC;AACD,iBAAW,YAAY;AACvB,WAAK,oBAAoB,IAAI,aAAa,EAAE;AAC5C,WAAK,mBAAmB,IAAI,aAAa,EAAE;AAC3C,WAAK,qBAAqB,IAAIA,oBAAmB,IAAI;AACrD,WAAK,UAAU;AACf,WAAK,yBAAyB;AAAA,IAChC;AAAA,IACA,MAAM,oBAAoB;AACxB,UAAI,KAAK;AAAS;AAClB,WAAK,SAASlB,UAAS,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,QAAQ;AAC5D,YAAMc,YAAW,MAAM,cAAc,YAAY;AACjD,UAAIA,WAAU;AACZ,aAAK,mBAAmBA,WAAU,sBAAsB,KAAK,MAAM;AAAA,MACrE,OAAO;AACL,gBAAQ,MAAM,oHAAoH;AAAA,MACpI;AACA,UAAI,KAAK,mBAAmB;AAC1B,aAAK,mBAAmB,MAAM;AAAA,MAChC;AAAA,IACF;AAAA,IACA,uBAAuB;AACrB,YAAM,qBAAqB;AAC3B,UAAI,KAAK,mBAAmB;AAC1B,aAAK,mBAAmB,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,MAAM,OAAON,OAAM;AACjB,WAAK,sBAAsB,oBAAI;AAC/B,YAAM,SAAS,MAAM,KAAK,SAAS,iBAAiB,KAAK,KAAK,GAAI,aAAW,IAAI,MAAM,OAAO,CAAE,EAAE,OAAQ,WAAS,MAAM,aAAaA,KAAI,CAAE;AAC5I,WAAK,kBAAkB,KAAK,IAAI,oBAAI,QAAM,eAAe,MAAM,IAAI,QAAQA,OAAM,MAAM,GAAG;AAC1F,UAAI,OAAO,WAAW,GAAG;AACvB,aAAK,kBAAkB,KAAK,IAAI,oBAAI,QAAM,eAAe,MAAM,IAAI,OAAO,KAAK,qBAAqB,2BAA2B,GAAG;AAClI;AAAA,MACF;AAGI,UAAI,OAAO,CAAC,EAAE,YAAY,QAAQ,CAAC,KAAK,wBAAwB;AAClE,aAAK,kBAAkB,KAAK,IAAI,oBAAI,QAAM,eAAe,MAAM,IAAI,OAAO,KAAK,qBAAqB,0BAA0B,GAAG;AACjI;AAAA,MACF;AAEI,oBAAc,IAAI,SAAS,aAAa;AAExC,WAAK,OAAO,CAAC;AACjB,YAAM,aAAa,CAAE,GAAG,IAAI,IAAI,OAAO,IAAK,WAAS,MAAM,GAAI,CAAC,CAAE;AAClE,YAAM,QAAQ,IAAI,WAAW,IAAK,OAAM,QAAO;AAC7C,YAAI,CAAC,KAAK,KAAK,eAAe,GAAG,GAAG;AAClC,gBAAMN,YAAW,MAAM,gBAAgB,KAAK;AAAA,YAC1C,iBAAiB;AAAA,UACnB,CAAC;AACD,eAAK,KAAK,GAAG,IAAI,MAAMA,UAAS,KAAK;AAAA,QACvC;AAAA,MACF,CAAE,CAAC;AACH,WAAK,kBAAkB,KAAK,IAAI,oBAAI,QAAM,eAAe,MAAM,IAAI,SAAS,KAAK,qBAAqB,MAAM,UAAU,GAAG;AAErH,WAAK,QAAQ,CAAC;AAClB,aAAO,QAAS,WAAS;AAEvB,aAAK,MAAM,eAAe,MAAM,GAAG,IAAI,KAAK,MAAM,MAAM,GAAG,MAAM,KAAK,MAAM,MAAM,GAAG,IAAI;AACzF,cAAM,QAAQM,OAAM,KAAK,MAAM,KAAK,OAAO,KAAK,mBAAmB;AAAA,MACrE,CAAE;AAAA,IACJ;AAAA,IACA,qBAAqB;AACnB,UAAI,CAAC,KAAK,SAAS;AAEjB,aAAK,yBAAyB;AAC9B,aAAK,OAAO,CAAC,CAAC;AAAA,MAChB;AACA,WAAK,UAAU;AAAA,IACjB;AAAA,IACA,0BAA0B;AACxB,WAAK,UAAU;AAAA,IACjB;AAAA,IACA,IAAI,QAAQ;AACV,aAAO,GAAG,KAAK,uBAAuB,KAAK;AAAA,IAC7C;AAAA,IACA,IAAI,aAAa;AACf,aAAO,KAAK,aAAa,YAAY;AAAA,IACvC;AAAA,IACA,IAAI,WAAW;AACb,aAAO,KAAK,aAAa,UAAU,IAAI,SAAS,KAAK,aAAa,UAAU,CAAC,IAAI;AAAA,IACnF;AAAA,IACA,IAAI,oBAAoB;AACtB,aAAO,KAAK,aAAa,oBAAoB;AAAA,IAC/C;AAAA,EACF;AAEA,MAAM,QAAN,MAAY;AAAA,IACV,YAAY,SAAS;AACnB,WAAK,UAAU;AAAA,IACjB;AAAA,IACA,MAAM,QAAQA,OAAMJ,OAAM,gBAAgB,gBAAgB;AACxD,YAAM,aAAa,eAAe,KAAK,GAAG;AAC1C,YAAMM,YAAW,SAAS,cAAc,UAAU;AAClD,WAAK,QAAQ,aAAa,YAAY,UAAU;AAChD,MAAAA,UAAS,YAAY,OAAON,MAAK,KAAK,GAAG,CAAC,EAAE,KAAK;AACjD,YAAM,KAAK,mBAAmBM,UAAS,OAAO;AAC9C,YAAM,YAAYA,UAAS,QAAQ,iBAAiB,KAAK,KAAK;AAC9D,UAAI,UAAU,UAAU,YAAY;AAClC,gBAAQ,KAAK,+EAA+E,KAAK,kCAAkC,KAAK,OAAO;AAC/I;AAAA,MACF;AACA,YAAM,YAAY;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,MAAM,UAAU,UAAU;AAAA,QAC1B,wBAAwB;AAAA,MAC1B;AACA,MAAAf,UAAS,KAAK,SAAS,6BAA6B,SAAS;AAC7D,WAAK,QAAQ,iBAAiB,KAAK,IAAI,oBAAI,QAAM,eAAe,MAAM,IAAI,WAAW,gBAAgB,KAAK,OAAO,GAAG;AACpH,2BAAS,KAAK,SAAS,UAAU,UAAU,GAAG;AAAA,QAC5C,cAAc;AAAA,QACd,mBAAmB,YAAY,SAAS;AAAA,QACxC,aAAa,CAAAwB,OAAK;AAChB,eAAK,QAAQ,gBAAgB,UAAU;AACvC,eAAK,QAAQ,yBAAyB;AACtC,UAAAxB,UAAS,KAAK,SAAS,4BAA4B,SAAS;AAC5D,sBAAY,UAAU,aAAa;AAAA,QACrC;AAAA,MACF,CAAC;AACD,WAAK,QAAQ,iBAAiB,KAAK,IAAI,oBAAI,QAAM,eAAe,MAAM,IAAI,SAAS,gBAAgB,KAAK,OAAO,GAAG;AAAA,IACpH;AAAA,IACA,MAAM,mBAAmB,kBAAkB;AACzC,YAAM,uBAAuB,CAAE,GAAG,iBAAiB,iBAAiB,wCAAwC,CAAE;AAC9G,aAAO,QAAQ,IAAI,qBAAqB,IAAK,WAAS,IAAI,QAAS,OAAMkB,aAAW;AAClF,cAAM,gBAAgB,MAAM,gBAAgB,MAAM,aAAa,KAAK,GAAG;AAAA,UACrE,eAAe,MAAM;AAAA,UACrB,iBAAiB;AAAA,QACnB,CAAC;AACD,cAAM,gBAAgB,SAAS,cAAc,UAAU;AACvD,sBAAc,YAAY,MAAM,cAAc,KAAK;AAE7C,cAAM,KAAK,mBAAmB,cAAc,OAAO;AACzD,cAAM,WAAW,eAAe,MAAM;AACtC,cAAM,eAAe,cAAc,QAAQ,cAAc,QAAQ;AACjE,cAAM,UAAU,eAAe,aAAa,UAAU,KAAK,IAAI;AAC/D,yBAAiB,cAAc,QAAQ,EAAE,YAAY;AACrD,QAAAA,SAAQ;AAAA,MACV,CAAE,CAAE,CAAC;AAAA,IACP;AAAA,IACA,aAAaL,OAAM;AAEjB,aAAO,CAAC,KAAK,uBAAuB,KAAK,4BAA4BA,KAAI,MAAM,CAAC,KAAK,qBAAqB,KAAK;AAAA,IACjH;AAAA,IACA,4BAA4BA,OAAM;AAEhC,YAAM,OAAO,KAAK,QAAQ,aAAa,MAAM;AAC7C,aAAO,EAAE,QAAQA,MAAK,WAAW,CAAC,KAAK,MAAM,GAAG,EAAE,KAAM,eAAaA,MAAK,QAAQ,SAAS,SAAS,CAAE;AAAA,IACxG;AAAA,IACA,IAAI,sBAAsB;AAExB,aAAO,KAAK,QAAQ,aAAa,sBAAsB,KAAK,KAAK,QAAQ,aAAa,yBAAyB;AAAA,IACjH;AAAA,IACA,IAAI,MAAM;AACR,aAAO,KAAK,QAAQ,aAAa,KAAK,IAAI,KAAK,QAAQ,aAAa,KAAK,IAAI,SAAS;AAAA,IACxF;AAAA,IACA,IAAI,aAAa;AACf,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,IAAI,QAAQ;AACV,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,IAAI,oBAAoB;AACtB,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,EACF;AAEA,MAAM,uBAAuB,MAAM;AACjC,aAAS,iBAAiB,0BAA2B,WAAS;AAC5D,sCAAgC,MAAM,OAAO,OAAO;AAAA,IACtD,CAAE;AACF,aAAS,iBAAiB,yBAA0B,WAAS;AAC3D,iBAAY,MAAM;AAChB,0CAAkC,MAAM,OAAO,OAAO;AAAA,MACxD,CAAE;AAAA,IACJ,CAAE;AACF,aAAS,iBAAiB,sBAAuB,WAAS;AACxD,sCAAgC,MAAM,MAAM;AAAA,IAC9C,CAAE;AACF,aAAS,iBAAiB,oBAAqB,WAAS;AACtD,iBAAY,MAAM;AAChB,0CAAkC,MAAM,MAAM;AAAA,MAChD,CAAE;AAAA,IACJ,CAAE;AACF,aAAS,iBAAiB,6BAA8B,WAAS;AAC/D,sCAAgC,MAAM,MAAM;AAAA,IAC9C,CAAE;AACF,aAAS,iBAAiB,8BAA+B,WAAS;AAChE,iBAAY,MAAM;AAChB,0CAAkC,MAAM,MAAM;AAAA,MAChD,CAAE;AAAA,IACJ,CAAE;AACF,aAAS,iBAAiB,6BAA8B,WAAS;AAC/D,iBAAY,MAAM;AAChB,0CAAkC,MAAM,MAAM;AAAA,MAChD,CAAE;AAAA,IACJ,CAAE;AAAA,EACJ;AAEA,MAAM,kCAAkC,UAAQ;AAC9C,UAAM,oBAAoB,QAAQ,KAAK,iBAAiB,KAAK,cAAc,QAAQ,yBAAyB;AAC5G,QAAI,mBAAmB;AACrB,wBAAkB,aAAa,2BAA2B,EAAE;AAC5D,sCAAgC,iBAAiB;AAAA,IACnD;AAAA,EACF;AAEA,MAAM,oCAAoC,UAAQ;AAChD,UAAM,oBAAoB,QAAQ,KAAK,iBAAiB,KAAK,cAAc,QAAQ,yBAAyB;AAC5G,QAAI,mBAAmB;AACrB,wBAAkB,gBAAgB,yBAAyB;AAC3D,wCAAkC,iBAAiB;AAAA,IACrD;AAAA,EACF;AAEA,MAAM,iBAAiB,MAAM;AAC3B,yBAAqB;AACrB,sBAAkB,OAAO;AACzB,sBAAkB,OAAO;AAAA,EAC3B;AAEA,MAAM,aAAa,CAAC,oBAAoB,CAAC,MAAM;AAC7C,UAAM,EAAC,UAAUM,WAAU,kBAAoC,MAAY,IAAI;AAC/E,IAAAC,OAAM,IAAI,CAAC,CAAC,KAAK;AACjB,QAAID,WAAU;AACZ,oBAAc,YAAYA,SAAQ;AAAA,IACpC,OAAO;AACL,cAAQ,MAAM,0PAA0P;AAAA,IAC1Q;AACA,QAAI,kBAAkB;AACpB,qBAAe,IAAI,gBAAgB;AAAA,IACrC;AACA,mBAAe;AAAA,EACjB;AAEA,MAAMM,UAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,YAAY;AAAA,IACrB,OAAO;AAAA,IACP,IAAI,gBAAgB;AAClB,cAAQ,KAAK,sFAAsF;AACnG,aAAO,eAAe;AAAA,IACxB;AAAA,IACA,IAAI,aAAa;AACf,aAAO,eAAe;AAAA,IACxB;AAAA,IACA,IAAI,WAAW;AACb,aAAO,cAAc;AAAA,IACvB;AAAA,EACF;AAEA,SAAO,aAAaA;;;AC31ChB,MAAM,WAAN,MAAe;AAAA,IACjB,WAAS;AAAA,MACP,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU,WAAW;AAAA,MAAC;AAAA,MACtB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,aAAa;AAAA,MACb,SAAS,WAAW;AAAA,MAAC;AAAA,MACrB,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,QACL,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,YAAYC,UAAS;AACnB,WAAK,UAAU;AACf,WAAK,UAAU,CAAC;AAChB,WAAK,eAAe;AACpB,WAAK,eAAe,SAAS;AAC7B,WAAK,MAAMA,QAAO;AAAA,IACpB;AAAA,IACA,YAAY;AACV,WAAK,eAAe,KAAK,YAAY;AACrC,UAAI,OAAO,KAAK,QAAQ,aAAa,UAAU;AAC7C,aAAK,eAAe,SAAS,eAAe,KAAK,QAAQ,QAAQ;AAAA,MACnE,WAAW,KAAK,QAAQ,oBAAoB,eAAe,KAAK,QAAQ,oBAAoB,YAAY;AACtG,aAAK,eAAe,KAAK,QAAQ;AAAA,MACnC,OAAO;AACL,aAAK,eAAe,SAAS;AAAA,MAC/B;AACA,UAAI,CAAC,KAAK,cAAc;AACtB,cAAM;AAAA,MACR;AACA,WAAK,aAAa,aAAa,KAAK,cAAc,KAAK,aAAa,UAAU;AAC9E,WAAK,YAAY;AACjB,UAAI,KAAK,QAAQ,WAAW,GAAG;AAC7B,aAAK,aAAa,eAAe,OAAO,WAAY,MAAM;AACxD,eAAK,eAAe,KAAK,YAAY;AAAA,QACvC,GAAI,KAAK,QAAQ,QAAQ;AAAA,MAC3B;AACA,aAAO;AAAA,IACT;AAAA,IACA,YAAY;AACV,UAAI,KAAK,aAAa,cAAc;AAClC,qBAAa,KAAK,aAAa,YAAY;AAAA,MAC7C;AACA,WAAK,eAAe,KAAK,YAAY;AAAA,IACvC;AAAA,IACA,MAAMA,UAAS;AACb,WAAK,UAAU,OAAO,OAAO,KAAK,UAAUA,QAAO;AACnD,UAAI,KAAK,QAAQ,iBAAiB;AAChC,gBAAQ,KAAK,wGAAwG;AAAA,MACvH;AACA,WAAK,eAAe;AACpB,WAAK,QAAQ,UAAUA,SAAQ,YAAY,WAAW,oBAAoB;AAC1E,WAAK,QAAQ,cAAcA,SAAQ,gBAAgB,SAAY,OAAOA,SAAQ;AAC9E,UAAIA,SAAQ,iBAAiB;AAC3B,aAAK,QAAQ,MAAM,aAAaA,SAAQ;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,cAAc;AACZ,UAAI,CAAC,KAAK,SAAS;AACjB,cAAM;AAAA,MACR;AACA,UAAI,aAAa,SAAS,cAAc,KAAK;AAC7C,iBAAW,YAAY,eAAe,KAAK,QAAQ;AACnD,iBAAW,aAAa,aAAa,KAAK,QAAQ;AAClD,iBAAW,aAAa,IAAI,KAAK,QAAQ;AACzC,iBAAW,YAAY,KAAK,QAAQ,OAAO;AACzC,mBAAW,MAAM,QAAQ,IAAI,KAAK,QAAQ,MAAM,QAAQ;AAAA,MAC1D;AACA,UAAI,KAAK,QAAQ,UAAU;AACzB,mBAAW,aAAa,aAAa,KAAK,QAAQ,QAAQ;AAAA,MAC5D;AACA,UAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,KAAK,aAAa,KAAK,cAAc;AACzE,mBAAW,YAAY,KAAK,QAAQ,IAAI;AAAA,MAC1C,OAAO;AACL,YAAI,KAAK,QAAQ,cAAc;AAC7B,qBAAW,YAAY,KAAK,QAAQ;AAAA,QACtC,OAAO;AACL,qBAAW,YAAY,KAAK,QAAQ;AAAA,QACtC;AACA,YAAI,KAAK,QAAQ,WAAW,IAAI;AAC9B,cAAI,gBAAgB,SAAS,cAAc,KAAK;AAChD,wBAAc,MAAM,KAAK,QAAQ;AACjC,wBAAc,YAAY;AAC1B,cAAI,KAAK,QAAQ,YAAY,QAAQ;AACnC,uBAAW,YAAY,aAAa;AAAA,UACtC,OAAO;AACL,uBAAW,sBAAsB,cAAc,aAAa;AAAA,UAC9D;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,QAAQ,UAAU,MAAM;AAC/B,YAAI,eAAe,SAAS,cAAc,QAAQ;AAClD,qBAAa,OAAO;AACpB,qBAAa,aAAa,cAAc,OAAO;AAC/C,qBAAa,YAAY;AACzB,qBAAa,YAAY;AACzB,qBAAa,iBAAiB,SAAU,WAAS;AAC/C,gBAAM,gBAAgB;AACtB,eAAK,eAAe,KAAK,YAAY;AACrC,iBAAO,aAAa,KAAK,aAAa,YAAY;AAAA,QACpD,CAAE;AACF,cAAMC,SAAQ,OAAO,aAAa,IAAI,OAAO,aAAa,OAAO;AACjE,YAAI,KAAK,QAAQ,YAAY,UAAUA,SAAQ,KAAK;AAClD,qBAAW,sBAAsB,cAAc,YAAY;AAAA,QAC7D,OAAO;AACL,qBAAW,YAAY,YAAY;AAAA,QACrC;AAAA,MACF;AACA,UAAI,KAAK,QAAQ,eAAe,KAAK,QAAQ,WAAW,GAAG;AACzD,mBAAW,iBAAiB,aAAc,WAAS;AACjD,iBAAO,aAAa,WAAW,YAAY;AAAA,QAC7C,CAAE;AACF,mBAAW,iBAAiB,cAAe,MAAM;AAC/C,qBAAW,eAAe,OAAO,WAAY,MAAM;AACjD,iBAAK,eAAe,UAAU;AAAA,UAChC,GAAI,KAAK,QAAQ,QAAQ;AAAA,QAC3B,CAAE;AAAA,MACJ;AACA,UAAI,OAAO,KAAK,QAAQ,gBAAgB,aAAa;AACnD,mBAAW,iBAAiB,SAAU,WAAS;AAC7C,gBAAM,gBAAgB;AACtB,cAAI,KAAK,QAAQ,cAAc,MAAM;AACnC,mBAAO,KAAK,KAAK,QAAQ,aAAa,QAAQ;AAAA,UAChD,OAAO;AACL,mBAAO,WAAW,KAAK,QAAQ;AAAA,UACjC;AAAA,QACF,CAAE;AAAA,MACJ;AACA,UAAI,OAAO,KAAK,QAAQ,YAAY,cAAc,OAAO,KAAK,QAAQ,gBAAgB,aAAa;AACjG,mBAAW,iBAAiB,SAAU,WAAS;AAC7C,gBAAM,gBAAgB;AACtB,eAAK,QAAQ,QAAQ;AAAA,QACvB,CAAE;AAAA,MACJ;AACA,UAAI,OAAO,KAAK,QAAQ,WAAW,UAAU;AAC3C,cAAMC,KAAI,KAAK,qBAAqB,KAAK,KAAK,OAAO;AACrD,cAAMC,KAAI,KAAK,qBAAqB,KAAK,KAAK,OAAO;AACrD,cAAM,UAAU,KAAK,QAAQ,YAAY,SAASD,KAAI,IAAIA;AAC1D,cAAM,UAAU,KAAK,QAAQ,WAAW,iBAAiBC,KAAI,IAAIA;AACjE,mBAAW,MAAM,YAAY,aAAa,WAAW;AAAA,MACvD;AACA,aAAO;AAAA,IACT;AAAA,IACA,eAAe,cAAc;AAC3B,mBAAa,YAAY,aAAa,UAAU,QAAQ,OAAO,EAAE;AACjE,aAAO,WAAY,MAAM;AACvB,YAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,KAAK,YAAY;AACrD,eAAK,QAAQ,KAAK,WAAW,YAAY,KAAK,QAAQ,IAAI;AAAA,QAC5D;AACA,YAAI,aAAa,YAAY;AAC3B,uBAAa,WAAW,YAAY,YAAY;AAAA,QAClD;AACA,aAAK,QAAQ,SAAS,KAAK,YAAY;AACvC,aAAK,YAAY;AAAA,MACnB,GAAI,GAAG;AAAA,IACT;AAAA,IACA,cAAc;AACZ,UAAI,oBAAoB;AAAA,QACtB,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AACA,UAAI,qBAAqB;AAAA,QACvB,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AACA,UAAIC,cAAa;AAAA,QACf,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AACA,UAAI,YAAY,KAAK,aAAa,iBAAiB,WAAW;AAC9D,UAAI;AACJ,eAASC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,YAAI,UAAUA,EAAC,EAAE,UAAU,SAAS,cAAc,MAAM,MAAM;AAC5D,sBAAY;AAAA,QACd,OAAO;AACL,sBAAY;AAAA,QACd;AACA,YAAIC,UAAS,UAAUD,EAAC,EAAE;AAC1B,oBAAY,UAAU,OAAO,GAAG,UAAU,SAAS,CAAC;AACpD,YAAIE,UAAS;AACb,YAAIN,SAAQ,OAAO,aAAa,IAAI,OAAO,aAAa,OAAO;AAC/D,YAAIA,UAAS,KAAK;AAChB,oBAAUI,EAAC,EAAE,MAAM,SAAS,IAAI,GAAGD,YAAW,SAAS;AACvD,UAAAA,YAAW,SAAS,KAAKE,UAASC;AAAA,QACpC,OAAO;AACL,cAAI,UAAUF,EAAC,EAAE,UAAU,SAAS,eAAe,MAAM,MAAM;AAC7D,sBAAUA,EAAC,EAAE,MAAM,SAAS,IAAI,GAAG,kBAAkB,SAAS;AAC9D,8BAAkB,SAAS,KAAKC,UAASC;AAAA,UAC3C,OAAO;AACL,sBAAUF,EAAC,EAAE,MAAM,SAAS,IAAI,GAAG,mBAAmB,SAAS;AAC/D,+BAAmB,SAAS,KAAKC,UAASC;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,qBAAqB,MAAMP,UAAS;AAClC,UAAIA,SAAQ,OAAO,IAAI,GAAG;AACxB,YAAI,MAAMA,SAAQ,OAAO,IAAI,CAAC,GAAG;AAC/B,iBAAOA,SAAQ,OAAO,IAAI;AAAA,QAC5B,OAAO;AACL,iBAAO,GAAGA,SAAQ,OAAO,IAAI;AAAA,QAC/B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,sBAAsBA,UAAS;AACtC,WAAO,IAAI,SAASA,QAAO;AAAA,EAC7B;AAEA,EAAAQ,QAAW,WAAW,gCAAgC,eAAa;AACjE,UAAM,SAAS;AAAA,MACb,MAAM,CAAC;AAAA,MACP,SAAS;AAAA,QACP,YAAY;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,IACF;AACA,UAAMC,YAAW;AAAA,MACf,UAAU,cAAc;AAAA,MACxB,OAAO;AAAA,MACP,UAAU,KAAK;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,MACX,OAAO,OAAO,UAAU,SAAS,MAAM;AAAA,IACzC;AACA,0BAAsB;AAAA,MACpB,GAAGA;AAAA,MACH,GAAG;AAAA,IACL,CAAC,EAAE,UAAU;AAAA,EACf;AAEA,WAAS,gBAAgB;AACvB,UAAMC,MAAK;AACX,QAAI,UAAU,SAAS,cAAc,IAAIA,KAAI;AAC7C,QAAI,CAAC,SAAS;AACZ,gBAAU,SAAS,cAAc,KAAK;AACtC,cAAQ,KAAKA;AACb,eAAS,gBAAgB,YAAY,OAAO;AAC5C,YAAM,SAAS,SAAS,cAAc,OAAO;AAC7C,aAAO,YAAY;AAAA,SAAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAA8kBA;AAAA;AAAA;AAAA;AAAA,SAA6DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC1qB,eAAS,KAAK,YAAY,MAAM;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AAEA,MAAI,sBAAsB;AAE1B,MAAI,YAAY;AAAA,IACd,IAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW;AACb,aAAO,CAAC;AAAA,IACV;AAAA,IACA,IAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO;AACT,4BAAsB,CAAC,CAAC;AAAA,IAC1B;AAAA,IACA,IAAI,UAAU,OAAO;AACnB,4BAAsB,CAAC,CAAC;AAAA,IAC1B;AAAA,EACF;AAEA,MAAIC,aAAY;AAEhB,MAAI,UAAU;AAAA,IACZ,IAAI,UAAU;AACZ,aAAOA;AAAA,IACT;AAAA,IACA,IAAI,WAAW;AACb,aAAO,CAACA;AAAA,IACV;AAAA,IACA,IAAI,QAAQ;AACV,aAAOA;AAAA,IACT;AAAA,IACA,IAAI,OAAO;AACT,MAAAA,aAAY,CAAC,CAAC;AAAA,IAChB;AAAA,IACA,IAAI,MAAM,OAAO;AACf,MAAAA,aAAY,CAAC,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,MAAMC,iBAAgB;AAAA,IACpB,iBAAiB;AAAA,IACjB,0BAA0B;AAAA,IAC1B,qBAAqB;AAAA,IACrB,gCAAgC;AAAA,IAChC,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,8BAA8B;AAAA,IAC9B,6BAA6B;AAAA,IAC7B,iCAAiC;AAAA,IACjC,mCAAmC;AAAA,EACrC;AAEA,MAAI,SAAS,CAAC;AAEd,MAAI,SAAS;AAAA,IACX,IAAIC,cAAa;AACf,eAAS;AAAA,QACP,GAAGD;AAAA,QACH,GAAGC,aAAY;AAAA,MACjB;AACA,iBAAW,aAAa,QAAQ;AAC9B,cAAM,gBAAgB,UAAU,MAAM,GAAG,EAAE;AAC3C,eAAO,eAAe,MAAM,eAAe;AAAA,UACzC,KAAK,MAAM,OAAO,SAAS;AAAA,UAC3B,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,MAAM,EAAC,UAAUC,WAAU,UAAUC,WAAU,gBAAgBC,iBAAgB,qBAAqBC,qBAAmB,IAAI;AAE3H,MAAM,SAAS,MAAM;AACnB,UAAMC,UAAS,OAAO,UAAU,OAAO;AACvC,YAAQ,CAAE,GAAI,IAAI,OAAO,OAAO,OAAO,OAAO,QAAQ,UAAW,CAAAC,QAAMA,KAAID,QAAO,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,MAAMC,KAAI,GAAG,SAAS,EAAE,CAAE;AAAA,EACtJ;AAEA,MAAM,gBAAgB,CAAC,MAAMnB,WAAU,CAAC,MAAM;AAC5C,QAAI,CAAC;AAAM,aAAO;AAClB,UAAMoB,KAAIpB,SAAQ,KAAK;AACvB,UAAM,EAAC,QAAgB,IAAIA;AAC3B,UAAM,WAAW,IAAIoB,GAAE,SAAS,IAAI;AACpC,UAAMC,QAAO,MAAM,KAAK,UAAW,CAAAC,OAAKA,GAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG,CAAE;AAC5E,UAAM,eAAe,KAAK,cAAc,oBAAoB;AAC5D,QAAI,WAAW,QAAQ,QAAQ,QAAQ,aAAa,WAAW,QAAQ,SAAS,UAAU;AACxF,MAAAD,MAAK,KAAK,GAAG,mBAAmB,QAAQ,IAAI,KAAK,mBAAmB,QAAQ,KAAK,GAAG;AAAA,IACtF,WAAW,gBAAgB,aAAa,MAAM;AAC5C,MAAAA,MAAK,KAAK,GAAG,mBAAmB,aAAa,IAAI,KAAK,mBAAmB,aAAa,KAAK,GAAG;AAAA,IAChG;AACA,WAAO,MAAM,KAAKA,KAAI,EAAE,KAAK,GAAG;AAAA,EAClC;AAEA,MAAME,YAAW,CAAC,OAAO,uBAAuB,SAAS;AACvD,QAAI,OAAO,UAAU;AAAU,aAAO;AACtC,YAAQ,MAAM,QAAQ,aAAc,QAAM,GAAG,YAAY,CAAE,EAAE,QAAQ,UAAU,EAAE,EAAE,QAAQ,QAAS,QAAM,GAAG,YAAY,CAAE;AAC3H,QAAI;AAAsB,cAAQ,MAAM,OAAO,GAAG,CAAC,EAAE,YAAY,IAAI,MAAM,OAAO,CAAC;AACnF,WAAO;AAAA,EACT;AAEA,MAAM,iBAAiBP;AAEvB,MAAM,eAAeC;AAErB,MAAM,YAAY,CAACO,OAAM,SAAS,CAAC,MAAMT,UAAS,UAAUS,OAAM,MAAM;AAExE,MAAM,oBAAoB,kBAAgB;AACxC,UAAMC,SAAQ,aAAa,MAAM,4BAA4B;AAC7D,WAAOA,SAAQA,OAAM,CAAC,IAAI;AAAA,EAC5B;AAEA,MAAM,iBAAiB,aAAW;AAChC,QAAI,QAAQ,OAAO;AAAI,aAAO,cAAc,QAAQ,KAAK;AACzD,QAAI,YAAY,SAAS;AAAM,aAAO;AACtC,QAAI,QAAQ,aAAa;AAAQ,aAAO;AACxC,QAAI,KAAK;AACT,UAAMC,YAAW,WAAW,QAAQ,aAAa,QAAQ,WAAW,aAAa,CAAC;AAClF,aAASrB,KAAI,GAAGA,KAAIqB,UAAS,QAAQrB,MAAK;AACxC,YAAM,UAAUqB,UAASrB,EAAC;AAC1B,UAAI,YAAY,SAAS;AACvB,cAAM,eAAe,eAAe,QAAQ,UAAU;AACtD,cAAM,UAAU,QAAQ,QAAQ,YAAY;AAC5C,cAAM,QAAQ,KAAK;AACnB,eAAO,GAAG,gBAAgB,WAAW;AAAA,MACvC;AACA,UAAI,QAAQ,aAAa,KAAK,QAAQ,YAAY,QAAQ,SAAS;AACjE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAM,iBAAiB,aAAW,QAAQ,SAAS,YAAY,QAAQ,YAAY,QAAQ,SAAS;AAEpG,MAAM,mBAAmB,CAAC,MAAM,YAAY,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,aAAa,KAAK,eAAe,KAAK,MAAM,IAAI;AAE/G,MAAM,mBAAmB,UAAQ;AAC/B,UAAML,WAAU,CAAC;AACjB,QAAI,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,MAAM,YAAY,OAAO,KAAK,KAAK,CAAC,CAAC,EAAE,OAAQ,CAAA2B,SAAO,CAAE,MAAM,SAAS,aAAa,YAAY,eAAe,iBAAiB,mBAAmB,oBAAoB,oBAAqB,EAAE,SAASA,IAAG,CAAE,EAAE,QAAQ;AAChP,YAAM,OAAO,KAAK,MAAM;AACxB,aAAO,KAAK,IAAI,EAAE,QAAS,CAAAC,OAAK;AAC9B,YAAIA,OAAM,YAAY;AACpB,cAAI,UAAU;AAAS,oBAAQ,KAAK,wDAAwD;AAC5F,UAAA5B,SAAQ,IAAI,IAAI,KAAK,UAAU;AAAA,QACjC;AAAO,UAAAA,SAAQ4B,EAAC,IAAI,KAAKA,EAAC;AAAA,MAC5B,CAAE;AAAA,IACJ;AACA,WAAO5B;AAAA,EACT;AAEA,MAAM,iBAAiB,aAAW;AAChC,QAAI,OAAO,CAAC;AACZ,WAAO,KAAK,WAAW,KAAK,SAAS;AACnC,UAAI,aAAa,QAAQ,aAAa,OAAO,UAAU;AACvD,UAAI,YAAY;AACd,YAAI,WAAW,WAAW,KAAK,QAAQ;AAAI,uBAAa,IAAI,QAAQ;AACpE,cAAM,YAAY,WAAW,MAAM,GAAG,EAAE,OAAQ,CAAA6B,OAAKA,GAAE,KAAK,EAAE,MAAO;AACrE,YAAI,QAAQ,WAAW,UAAU,WAAW,GAAG;AAC7C,kBAAQ,MAAM,sBAAsB,OAAO,gEAAgE,OAAO,eAAe,OAAO;AAAA,QAC1I;AACA,eAAO,KAAK,OAAO,UAAU,OAAQ,CAAAA,OAAK,SAAS,cAAcA,EAAC,CAAE,CAAC;AAAA,MACvE;AACA,gBAAU,QAAQ,gBAAgB,QAAQ,cAAc,QAAQ,IAAI,OAAO,aAAa,IAAI;AAAA,IAC9F;AACA,WAAO;AAAA,EACT;AAEA,MAAM,mCAAmC,gBAAc,WAAW,QAAQ,sBAAsB,OAAO,EAAE,QAAQ,SAAS,IAAI,EAAE,QAAQ,cAAc,EAAE,EAAE,YAAY;AAEtK,MAAM,SAAS,CAAE,WAAW,UAAU,aAAa,UAAU,SAAS,aAAa,WAAW,SAAS,UAAU,WAAY;AAE7H,MAAI;AAEJ,MAAM,WAAW,IAAI,MAAM,CAAC,GAAG;AAAA,IAC7B,KAAK,SAAS,QAAQ,MAAM;AAC1B,UAAI,OAAO,SAAS,IAAI;AAAG,eAAO,OAAO,YAAY,OAAO,QAAQ,MAAM,EAAE,OAAQ,CAAC,CAACC,IAAG,MAAM,MAAM,OAAO,UAAU,IAAK,CAAC;AAAA,eAAY,SAAS;AAAQ,eAAO;AAAA,eAAqB,SAAS;AAAO,eAAO;AAC5M,aAAO,QAAQ,IAAI,GAAG,SAAS;AAAA,IACjC;AAAA,IACA,KAAK,SAAS,QAAQ,MAAM,OAAO;AACjC,aAAO,IAAI,IAAI;AACf,mBAAa;AACb,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,MAAM,wBAAwB,CAAC,QAAQ,UAAU;AAC/C,UAAM,0BAA0B,OAAO,WAAW,CAAE,UAAU,SAAS,UAAW,EAAE,SAAS,KAAK,IAAI,GAAG,QAAQP,UAAS,OAAO,MAAM,MAAM,GAAGA,UAAS,OAAO,QAAQ,KAAK,IAAIA,UAAS,KAAK,GAAG;AAClM,UAAM,yBAAyB,OAAO,WAAW,CAAE,UAAU,SAAS,UAAW,EAAE,SAAS,KAAK,IAAI,GAAG,gBAAgB,SAASA,UAAS,KAAK,GAAG;AAClJ,QAAI,OAAO,4BAA4B,YAAY;AACjD,8BAAwB,KAAK,OAAO,YAAY,OAAO,SAAS,OAAO,QAAQ,OAAO,OAAO,OAAO,IAAI,OAAO,OAAO;AAAA,IACxH;AACA,QAAI,OAAO,2BAA2B,YAAY;AAChD,6BAAuB,KAAK,OAAO,YAAY,OAAO,SAAS,OAAO,QAAQ,OAAO,OAAO,OAAO,IAAI,OAAO,OAAO;AAAA,IACvH;AAAA,EACF;AAEA,MAAM,yBAAyB,CAAC,QAAQ,UAAU;AAChD,QAAI,CAAC,OAAO,WAAW,QAAQ,eAAe;AAC5C,UAAI,QAAQ,WAAW,CAAC,OAAO,QAAQ;AACrC,gBAAQ,KAAK,qEAAqE,0MAA0M;AAC5R,eAAO,SAAS;AAAA,MAClB;AACA;AAAA,IACF;AACA,WAAO,QAAQ;AACf,WAAO,UAAU,KAAK,KAAK;AAC3B,UAAM,QAAQ,mBAAmB;AACjC,UAAM,SAAS,GAAG,SAAS,OAAO;AAClC,UAAM,SAAS;AAAA,MACb,QAAQ,OAAO;AAAA,MACf,YAAY,OAAO;AAAA,MACnB,IAAI,OAAO;AAAA,MACX,SAAS,OAAO;AAAA,MAChB,SAAS,OAAO;AAAA,IAClB;AACA,UAAMvB,WAAU;AAAA,MACd,SAAS;AAAA,MACT,YAAY;AAAA,MACZ;AAAA,IACF;AACA,WAAO,WAAW,QAAQ,cAAc,IAAI,YAAY,OAAOA,QAAO,CAAC;AACvE,WAAO,WAAW,QAAQ,cAAc,IAAI,YAAY,QAAQA,QAAO,CAAC;AACxE,QAAI,OAAO,QAAQ;AACjB,aAAO,OAAO,OAAO,WAAW,OAAO,EAAE,QAAQ,OAAO,MAAM;AAC9D,aAAO,OAAO,OAAO,WAAW,OAAO,EAAE,QAAQ,QAAQ,MAAM;AAAA,IACjE;AAAA,EACF;AAEA,WAAS,iBAAiB,0BAA2B,WAAS,sBAAsB,SAAS,MAAM,OAAO,EAAE,GAAG,QAAQ,GAAI,IAAI;AAE/H,WAAS,iBAAiB,0BAA2B,WAAS,sBAAsB,SAAS,MAAM,OAAO,EAAE,GAAG,QAAQ,GAAI,IAAI;AAE/H,WAAS,iBAAiB,6BAA8B,WAAS,sBAAsB,SAAS,MAAM,OAAO,EAAE,GAAG,WAAW,GAAI,IAAI;AAErI,WAAS,iBAAiB,2BAA4B,WAAS;AAC7D,UAAM,SAAS,SAAS,MAAM,OAAO,EAAE;AACvC,0BAAsB,QAAQ,SAAS;AACvC,2BAAuB,QAAQ,OAAO;AAAA,EACxC,GAAI,IAAI;AAER,WAAS,iBAAiB,2BAA4B,WAAS,uBAAuB,SAAS,MAAM,OAAO,EAAE,GAAG,SAAS,GAAI,IAAI;AAElI,WAAS,iBAAiB,yBAA0B,WAAS;AAC3D,UAAM,SAAS,SAAS,MAAM,OAAO,EAAE;AACvC,0BAAsB,QAAQ,OAAO;AACrC,2BAAuB,QAAQ,OAAO;AAAA,EACxC,GAAI,IAAI;AAER,WAAS,iBAAiB,0BAA2B,WAAS,sBAAsB,SAAS,MAAM,OAAO,EAAE,GAAG,QAAQ,GAAI,IAAI;AAE/H,WAAS,iBAAiB,6BAA8B,WAAS,sBAAsB,SAAS,MAAM,OAAO,EAAE,GAAG,WAAW,GAAI,IAAI;AAErI,WAAS,iBAAiB,yBAA0B,WAAS,sBAAsB,SAAS,MAAM,OAAO,EAAE,GAAG,OAAO,GAAI,IAAI;AAE7H,WAAS,iBAAiB,4BAA6B,WAAS,sBAAsB,SAAS,MAAM,OAAO,EAAE,GAAG,UAAU,GAAI,IAAI;AAEnI,MAAI,MAAM,CAAC;AAEX,MAAI,MAAM;AAAA,IACR,IAAI,MAAM;AACR,aAAO;AAAA,IACT;AAAA,IACA,IAAIa,cAAa;AACf,YAAMA;AAAA,IACR;AAAA,EACF;AAEA,MAAI,gBAAgB;AAEpB,MAAI,gBAAgB;AAAA,IAClB,IAAI,WAAW;AACb,aAAO,CAAC;AAAA,IACV;AAAA,IACA,IAAI,OAAO;AACT,sBAAgB;AAChB,UAAI,UAAU,WAAW,CAAC,eAAe;AACvC,iBAAS,iBAAiB,oBAAqB,MAAM,QAAQ,KAAK,sRAAsR,GAAI;AAAA,UAC1V,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,MAAM,SAAN,MAAa;AAAA,IACX,YAAYQ,OAAM,YAAY;AAC5B,WAAK,OAAOA,MAAK,QAAQ;AACzB,WAAK,aAAa;AAClB,WAAK,UAAUA,MAAK;AACpB,WAAK,KAAKA,MAAK;AACf,WAAK,QAAQ;AACb,WAAK,UAAU;AACf,WAAK,QAAQ;AACb,WAAK,YAAY,CAAE,SAAU;AAC7B,WAAK,SAAS;AACd,WAAK,SAASA,MAAK;AACnB,WAAK,SAASA,MAAK,OAAO,MAAM,GAAG,EAAE,CAAC;AACtC,WAAK,WAAW;AAChB,WAAK,QAAQ;AACb,WAAK,YAAY;AACjB,WAAK,YAAY,oBAAI;AACrB,WAAK,SAAS;AAAA,IAChB;AAAA,IACA,IAAI,aAAa;AACf,YAAM,UAAU,IAAI,QAAS,CAACU,UAAS,WAAW;AAChD,aAAK,UAAU;AAAA,UACb,SAASA;AAAA,UACT;AAAA,UACA,MAAM,KAAK;AAAA,QACb;AAAA,MACF,CAAE;AACF,cAAQ,KAAK,KAAK;AAClB,aAAO,eAAe,SAAS,YAAY;AAAA,QACzC,MAAM;AACJ,cAAI,UAAU;AAAS,oBAAQ,KAAK,qEAAqE;AACzG,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,CAAC;AACD,cAAQ,SAAS;AACjB,UAAI,QAAQ;AAAS,gBAAQ,MAAO,MAAM;AAAA,QAAC,CAAE;AAC7C,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,WAAW,CAAAV,UAAQ;AACvB,QAAI,CAACA,MAAK;AAAY;AACtB,QAAIA,MAAK,QAAQ,QAAQ,QAAQ,MAAM,EAAE,QAAQ,OAAO,KAAK,MAAMb,QAAW,SAAS;AACrF,YAAM,WAAW;AAAA;AAAA,mBAA+Ka,MAAK;AAAA,mBAA6Bb,QAAW;AAC7O,cAAQ,MAAM,QAAQ;AACtB,UAAI,QAAQ,SAAS;AACnB,QAAAA,QAAW,WAAW,8BAA8B;AAAA,UAClD,MAAM;AAAA,UACN,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA;AAAA,IACF;AACA,QAAI,mBAAmB,CAAC;AACxB,aAASH,KAAIgB,MAAK,WAAW,SAAS,GAAGhB,MAAK,GAAGA,MAAK;AACpD,UAAIgB,MAAK,WAAWhB,EAAC,EAAE,gBAAgB;AACrC,yBAAiB,KAAKgB,MAAK,WAAWhB,EAAC,CAAC;AACxC,QAAAgB,MAAK,WAAW,OAAOhB,IAAG,CAAC;AAAA,MAC7B;AAAA,IACF;AACA,QAAI,iBAAiB,KAAM,eAAa,UAAU,eAAe,QAAQ,SAAS,IAAK,GAAG;AACxF,UAAI,QAAQ,SAAS;AACnB,gBAAQ,MAAM,sCAAsC;AACpD;AAAA,MACF;AAAA,IACF;AACA,QAAI;AACJ,QAAI,iBAAiB,QAAQ;AAC3B,mBAAa,iBAAiB,CAAC,EAAE;AACjC,iBAAW,UAAU,iBAAiB,CAAC,EAAE;AAAA,IAC3C;AACA,QAAI,YAAY;AACd,YAAM,EAAC,IAAIK,KAAI,QAAgB,IAAI;AACnC,UAAI;AACJ,UAAI,CAAC,SAASA,GAAE,KAAK,cAAc,UAAU;AAC3C,cAAM,oBAAoB,eAAe,WAAW,eAAe;AACnE,cAAM,gBAAgB,eAAe,WAAW,YAAY;AAC5D,0BAAkB,mBAAmB,kBAAkB,oBAAoB,CAAC;AAC5E,0BAAkB,aAAa,kBAAkB,cAAc,CAAC;AAChE,0BAAkB,cAAc,kBAAkB,eAAe,CAAC;AAClE,cAAM,aAAa,IAAI,IAAI,qCAAqC,mBAAmB,WAAW,gBAAgB;AAC9G,0BAAkB,iBAAiBA,GAAE,IAAI;AACzC,0BAAkB,WAAWA,GAAE,IAAI;AACnC,iBAAS,IAAI,OAAO,YAAY,UAAU;AAC1C,iBAASA,GAAE,IAAI;AACf,eAAO,SAAS;AAChB,eAAO,UAAU;AACjB,mBAAW,aAAa;AACxB,+BAAuB,QAAQ,QAAQ;AACvC,eAAO;AAAA,MACT,OAAO;AACL,iBAAS,SAASA,GAAE;AAAA,MACtB;AACA,UAAI,QAAQ;AACV,eAAO,UAAU;AACjB,eAAO,kBAAkB,iBAAiB;AAC1C,eAAO,oBAAoB,iBAAiB;AAC5C,eAAO,sBAAsB;AAC7B,eAAO,sBAAsBW,MAAK;AAClC,QAAAb,QAAW,QAAQ,gBAAgB;AAAA,MACrC;AAAA,IACF,OAAO;AACL,UAAIa,MAAK,WAAW,UAAU,SAASA,MAAK,WAAW,CAAC,EAAE,QAAQ,GAAG;AACnE,QAAAb,QAAW,QAAQa,MAAK,UAAU;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAEA,MAAIW;AAEJ,MAAI;AAEJ,MAAI;AAEJ,MAAI;AAEJ,MAAM,eAAe,CAAC,eAAe,gBAAgB;AACnD,IAAAA,YAAW;AACX,aAAS;AACT,aAAS,iBAAiB,oBAAqB,MAAM;AACnD,eAAS;AACT,4BAAsB;AACtB,UAAI,UAAU,WAAW;AAAe,gBAAQ,KAAK,yUAAyU;AAAA,IAChY,CAAE;AACF,aAAS,iBAAiB,mBAAmB,qBAAqB;AAClE,aAAS,iBAAiB,cAAc,qBAAqB;AAAA,EAC/D;AAEA,MAAM,YAAY,gBAAc;AAC9B,QAAI;AAAc;AAClB,IAAAA,YAAWA,aAAY,WAAW,YAAY,YAAYC,gBAAe;AACzE,UAAM,EAAC,QAAgB,IAAI,WAAW;AACtC,UAAMC,WAAU;AAAA,MACd;AAAA,MACA,GAAG;AAAA,IACL;AACA,UAAM,aAAa,KAAK,UAAUA,QAAO;AACzC,mBAAeF,UAAS,cAAc,QAAQ,UAAU,EAAE,CAAC,KAAKA,UAAS,cAAc,OAAOE,UAAS;AAAA,MACrG;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAM,YAAY,MAAM;AACtB,aAAS;AACT,0BAAsB;AACtB,cAAU,2BAA2B;AACrC,WAAO,OAAO,SAAS,MAAM,EAAE,QAAS,YAAU;AAChD,mBAAa,KAAK,OAAO,IAAI;AAC7B,6BAAuB,QAAQ,WAAW;AAAA,IAC5C,CAAE;AAAA,EACJ;AAEA,MAAM,WAAW,MAAM;AACrB,aAAS;AACT,0BAAsB;AACtB,cAAU,0BAA0B;AACpC,QAAI,MAAM;AAAS,cAAQ,KAAK,oCAAoC;AAAA,EACtE;AAEA,MAAM,eAAe,0BAAwB;AAC3C,aAAS;AACT,0BAAsB;AACtB,cAAU,gCAAgC,oBAAoB;AAAA,EAChE;AAEA,MAAM,UAAU,YAAU;AACxB,QAAI,QAAQ;AACV,mBAAa,KAAK,OAAO,IAAI;AAC7B,6BAAuB,QAAQ,WAAW;AAAA,IAC5C;AAAO,6BAAuB,QAAQ,QAAQ;AAAA,EAChD;AAEA,MAAM,wBAAwB,MAAM;AAClC,UAAM,OAAO,SAAS,KAAK;AAC3B,QAAI,EAAE,KAAK,SAAS,2BAA2B,KAAK,KAAK,SAAS,8BAA8B,IAAI;AAClG,WAAK,IAAI,SAAS,8BAA8B,8BAA8B;AAC9E;AAAA,IACF;AACA,QAAI,QAAQ;AACV,WAAK,QAAQ,gCAAgC,2BAA2B;AAAA,IAC1E,OAAO;AACL,WAAK,QAAQ,6BAA6B,8BAA8B;AAAA,IAC1E;AAAA,EACF;AAEA,MAAI,uBAAuB;AAAA,IACzB;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd;AAEA,MAAMA,WAAU,YAAU;AACxB,QAAI,QAAQ,YAAY,OAAO,KAAK;AAAiB;AACrD,YAAQ,IAAI,0BAAgB,OAAO,UAAU;AAAA,MAC3C,IAAI,OAAO;AAAA,MACX,MAAM,OAAO,KAAK;AAAA,MAClB,YAAY,OAAO,WAAW;AAAA,MAC9B,SAAS,OAAO;AAAA,MAChB,mBAAmB,OAAO,WAAW;AAAA,IACvC,CAAC;AAAA,EACH;AAEA,MAAM,UAAU,YAAU;AACxB,QAAI,QAAQ,YAAY,OAAO,KAAK;AAAiB;AACrD,UAAM,SAAS;AAAA,MACb,IAAI,OAAO;AAAA,MACX,OAAO,OAAO;AAAA,MACd,SAAS,OAAO;AAAA,IAClB;AACA,QAAI,OAAO,cAAc;AAAkB,aAAO,YAAY,OAAO;AACrE,YAAQ,IAAI,wBAAc,OAAO,iBAAY,OAAO,YAAY,WAAM,SAAS,MAAM,KAAK,SAAS,MAAM,KAAK,MAAM;AAAA,EACtH;AAEA,MAAM,WAAW,YAAU;AACzB,QAAI,QAAQ,YAAY,OAAO,KAAK;AAAiB;AACrD,YAAQ,IAAI,wBAAc,OAAO,UAAU,SAAS,MAAM,cAAc,mBAAmB;AAAA,MACzF,IAAI,OAAO;AAAA,MACX,SAAS,OAAO;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,MAAM,cAAc,YAAU;AAC5B,QAAI,QAAQ,YAAY,OAAO,KAAK;AAAiB;AACrD,YAAQ,IAAI,wBAAc,OAAO,UAAU,SAAS,MAAM,iBAAiB,mBAAmB;AAAA,MAC5F,IAAI,OAAO;AAAA,MACX,SAAS,OAAO;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,MAAM,UAAU,YAAU;AACxB,QAAI,QAAQ,YAAY,OAAO,KAAK;AAAiB;AACrD,YAAQ,IAAI,wBAAc,OAAO,UAAU,SAAS,MAAM,cAAc,OAAO,SAAS,gBAAgB;AAAA,MACtG,IAAI,OAAO;AAAA,MACX,SAAS,OAAO;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,MAAM,WAAW,YAAU,CAAC,OAAO,SAAS,MAAM,oBAAI,SAAO,OAAO,gBAAgB;AAEpF,MAAM,WAAW,YAAU,OAAO,kBAAkB,IAAI,IAAI,OAAO,uBAAuB,OAAO,oBAAoB;AAErH,MAAIC,OAAM;AAAA,IACR,SAASD;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AAEA,MAAM,oBAAoB,aAAW;AACnC,QAAI,CAAE,YAAY,OAAQ,EAAE,SAAS,QAAQ,IAAI,GAAG;AAClD,aAAO,SAAS,iBAAiB,eAAe,QAAQ,gBAAgB,QAAQ,QAAQ,EAAE,SAAS;AAAA,IACrG;AACA,WAAO;AAAA,EACT;AAEA,MAAM,wBAAwB,aAAW,MAAM,KAAK,QAAQ,iBAAiB,gBAAgB,CAAC,EAAE,OAAO,MAAM,KAAK,SAAS,iBAAiB,eAAe,QAAQ,gBAAgB,QAAQ,QAAQ,CAAC,EAAE,OAAQ,UAAQ,KAAK,OAAQ,CAAC,EAAE,IAAK,CAAAN,OAAKA,GAAE,KAAM;AAExP,MAAM,iBAAiB,CAAC,SAAS,CAAC,MAAM;AACtC,UAAM,QAAQ,MAAM,KAAK,IAAI,IAAI,OAAO,OAAQ,CAAAQ,OAAKA,MAAK,OAAOA,EAAC,EAAE,MAAO,EAAE,IAAK,CAAAA,OAAKA,GAAE,KAAK,CAAE,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,KAAK;AACnH,WAAO,MAAM,SAAS,IAAI,QAAQ;AAAA,EACpC;AAEA,MAAM,kBAAkB,WAAS;AAC/B,QAAI,CAAC;AAAO,aAAO,CAAC;AACpB,QAAI,CAAC,MAAM;AAAQ,aAAO,CAAC;AAC3B,WAAO,MAAM,MAAM,GAAG,EAAE,OAAQ,CAAAA,OAAKA,GAAE,KAAK,EAAE,MAAO;AAAA,EACvD;AAEA,MAAM,2BAA2B,aAAW;AAC1C,QAAIC,SAAQ,MAAM,KAAK,QAAQ,UAAU,EAAE,OAAQ,CAAC,MAAMC,UAAS;AACjE,WAAKA,MAAK,IAAI,IAAIA,MAAK;AACvB,aAAO;AAAA,IACT,GAAI,CAAC,CAAC;AACN,IAAAD,OAAM,UAAU,CAAC,CAAC,QAAQ;AAC1B,IAAAA,OAAM,WAAW,CAAC,CAAC,QAAQ;AAC3B,IAAAA,OAAM,WAAW,QAAQ;AACzB,QAAI,QAAQ,QAAQ,MAAM,SAAS,KAAK,kBAAkB,OAAO,GAAG;AAClE,YAAM,mBAAmB,sBAAsB,OAAO;AACtD,MAAAA,OAAM,SAAS;AACf,MAAAA,OAAM,QAAQ,iBAAiB,KAAK,GAAG;AAAA,IACzC,OAAO;AACL,MAAAA,OAAM,QAAQ,QAAQ;AAAA,IACxB;AACA,WAAOA;AAAA,EACT;AAEA,MAAM,wBAAwB,CAAC,SAAS,WAAW;AACjD,QAAI,CAAC,UAAU,OAAO,WAAW;AAAG,aAAO,CAAC;AAC5C,QAAIE,YAAW,CAAE,OAAQ;AACzB,UAAM,QAAQ,eAAe,OAAO;AACpC,WAAO,QAAS,WAAS;AACvB,UAAI;AACF,gBAAQ,OAAO;AAAA,UACd,KAAK;AACJ,gBAAI,UAAU;AAAS,sBAAQ,KAAK,8GAA8G;AAClJ,YAAAA,YAAW,CAAE,GAAGA,WAAU,GAAG,aAAa,GAAG,qBAAqB,IAAI,CAAE;AACxE;AAAA,UAED,KAAK;AACJ,YAAAA,YAAW,CAAE,GAAGA,WAAU,GAAG,aAAa,GAAG,qBAAqB,IAAI,CAAE;AACxE;AAAA,UAED,KAAK;AACJ,YAAAA,YAAW,CAAE,GAAGA,WAAU,GAAG,aAAa,GAAG,iBAAiB,CAAE;AAChE;AAAA,UAED,KAAK;AACJ,YAAAA,YAAW,CAAE,GAAGA,WAAU,GAAG,aAAa,GAAG,8BAA8B,4BAA4B,CAAE;AACzG;AAAA,UAED,KAAK;AACJ,YAAAA,YAAW,CAAE,GAAGA,WAAU,GAAG,aAAa,GAAG,gBAAgB,CAAE;AAC/D;AAAA,UAED,KAAK;AACJ,YAAAA,YAAW,CAAE,GAAGA,WAAU,GAAG,aAAa,GAAG,qBAAqB,CAAE;AACpE;AAAA,UAED;AACC,YAAAA,YAAW,CAAE,GAAGA,WAAU,GAAG,SAAS,iBAAiB,KAAK,CAAE;AAAA,QAChE;AAAA,MACF,SAASC,QAAP;AACA,YAAI,QAAQ;AAAS,kBAAQ,MAAMA,MAAK;AAAA,MAC1C;AAAA,IACF,CAAE;AACF,WAAOD;AAAA,EACT;AAEA,MAAM,wBAAwB,aAAW;AACvC,UAAM,UAAU,QAAQ,WAAW,OAAO,aAAa;AACvD,UAAM,aAAa,QAAQ,WAAW,OAAO,gBAAgB;AAC7D,UAAM,SAAS,WAAW,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC;AACvD,UAAM,YAAY,cAAc,WAAW,MAAM,MAAM,GAAG,KAAK,CAAC;AAChE,UAAM,kBAAkB,sBAAsB,SAAS,MAAM;AAC7D,UAAM,qBAAqB,sBAAsB,SAAS,SAAS;AACnE,UAAM,oBAAoB,gBAAgB,OAAQ,CAAC,KAAK,SAAS;AAAA,MAC/D,GAAG,sBAAsB,GAAG;AAAA,MAC5B,GAAG;AAAA,IACL,IAAK,CAAC,CAAC;AACP,UAAM,0BAA0B,sBAAsB,OAAO;AAC7D,UAAM,iBAAiB;AAAA,MACrB,SAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,YAAY,CAAC;AAAA,IACf;AACA,uBAAmB,QAAS,CAAAE,aAAW;AACrC,YAAM,oBAAoB,sBAAsBA,QAAO;AACvD,aAAO,KAAK,iBAAiB,EAAE,QAAS,CAAAd,SAAO;AAC7C,cAAM,QAAQ,kBAAkBA,IAAG;AACnC,YAAI,eAAe,WAAWA,IAAG,KAAK,MAAM,QAAQ,eAAe,WAAWA,IAAG,CAAC,GAAG;AACnF,yBAAe,WAAWA,IAAG,EAAE,KAAK,KAAK;AAAA,QAC3C,OAAO;AACL,yBAAe,WAAWA,IAAG,IAAI,CAAE,KAAM;AAAA,QAC3C;AAAA,MACF,CAAE;AAAA,IACJ,CAAE;AACF,WAAO;AAAA,EACT;AAEA,MAAM,wBAAwB,aAAW;AACvC,QAAIU,SAAQ,CAAC;AACb,QAAI,WAAW,QAAQ,YAAY;AACjC,YAAM,KAAK,QAAQ,UAAU,EAAE,QAAS,CAAAC,UAAQ;AAC9C,YAAIA,MAAK,KAAK,WAAW,OAAO,GAAG;AACjC,UAAAD,OAAMC,MAAK,IAAI,IAAIA,MAAK;AAAA,QAC1B;AAAA,MACF,CAAE;AAAA,IACJ;AACA,WAAOD;AAAA,EACT;AAEA,MAAIb,QAAO;AAEX,MAAIkB,WAAU;AAEd,MAAIC,eAAc;AAElB,MAAIC,YAAW,CAAE,QAAQ,SAAS,cAAc,eAAe,cAAc,YAAY,SAAS,OAAO,OAAO,YAAY,UAAU,mBAAmB,OAAO,UAAW;AAE3K,MAAIC,YAAW;AAEf,MAAIC,QAAO;AAEX,MAAIC,cAAa;AAEjB,MAAIC,WAAU;AAEd,MAAIC,UAAS;AAEb,MAAIC,gBAAe,CAAE,8CAA8C,4CAA4C,uCAAuC,oCAAqC;AAE3L,MAAIC,QAAO;AAEX,MAAIC,UAAS;AAEb,MAAIC,WAAU;AAEd,MAAIC,SAAQ;AAEZ,MAAIC,OAAM;AAEV,MAAIC,SAAQ,CAAE,UAAU,cAAe;AAEvC,MAAIC,WAAU;AAAA,IACZ,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,eAAe;AAAA,IACf,OAAO;AAAA,IACP,MAAM;AAAA,IACN,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,gBAAgB;AAAA,EAClB;AAEA,MAAI,mBAAmB;AAAA,IACrB,sBAAsB;AAAA,EACxB;AAEA,MAAIC,gBAAe;AAAA,IACjB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,aAAa;AAAA,EACf;AAEA,MAAIC,mBAAkB;AAAA,IACpB,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,IACvB,+BAA+B;AAAA,IAC/B,yBAAyB;AAAA,IACzB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,WAAW;AAAA,EACb;AAEA,MAAIC,eAAc;AAAA,IAChB,MAAMpC;AAAA,IACN,SAASkB;AAAA,IACT,aAAaC;AAAA,IACb,UAAUC;AAAA,IACV,UAAUC;AAAA,IACV,MAAMC;AAAA,IACN,YAAYC;AAAA,IACZ,SAASC;AAAA,IACT,QAAQC;AAAA,IACR,cAAcC;AAAA,IACd,MAAMC;AAAA,IACN,QAAQC;AAAA,IACR,SAASC;AAAA,IACT,QAAQ;AAAA,IACR,OAAOC;AAAA,IACP,KAAKC;AAAA,IACL,OAAOC;AAAA,IACP,SAASC;AAAA,IACT;AAAA,IACA,cAAcC;AAAA,IACd,iBAAiBC;AAAA,EACnB;AAEA,MAAM,aAAN,MAAiB;AAAA,IACf,YAAY3D,UAAS,eAAe,mBAAmB,kBAAkB,wBAAwB,QAAQ,MAAM,KAAK6D,QAAO;AACzH,WAAK,UAAU7D;AACf,WAAK,gBAAgB;AACrB,WAAK,oBAAoB;AACzB,WAAK,mBAAmB;AACxB,WAAK,yBAAyB;AAC9B,WAAK,SAAS;AACd,WAAK,OAAO;AACZ,WAAK,MAAM;AACX,WAAK,QAAQ6D;AAAA,IACf;AAAA,IACA,IAAI,QAAQ;AACV,WAAK,SAAS,KAAK,UAAU,KAAK,QAAQ,OAAO,KAAK,yBAAyB,KAAK,aAAa;AACjG,aAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,KAAK;AACP,WAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,IAAI,KAAK,OAAO;AACpD,aAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,YAAY;AACd,WAAK,aAAa,KAAK,cAAc,KAAK,QAAQ,WAAW,KAAK,eAAe,KAAK,aAAa;AACnG,aAAO,OAAO,KAAK,eAAe,WAAW,CAAE,KAAK,UAAW,IAAI,KAAK;AAAA,IAC1E;AAAA,IACA,IAAI,cAAc;AAChB,aAAO,KAAK,QAAQ,aAAa,KAAK;AAAA,IACxC;AAAA,IACA,IAAI,UAAU;AACZ,WAAK,WAAW,KAAK,YAAY,sBAAsB,KAAK,aAAa;AACzE,aAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,YAAY;AACd,aAAO,KAAK,mBAAmB,KAAK,cAAc,YAAY;AAAA,IAChE;AAAA,IACA,IAAI,cAAc;AAChB,aAAO,KAAK,qBAAqB,KAAK,cAAc,cAAc;AAAA,IACpE;AAAA,IACA,IAAI,kBAAkB;AACpB,aAAO,eAAe,KAAK,iBAAiB;AAAA,IAC9C;AAAA,IACA,IAAI,eAAe;AACjB,aAAO,eAAe,KAAK,aAAa;AAAA,IAC1C;AAAA,IACA,IAAI,eAAe;AACjB,YAAMvB,QAAO,KAAK,cAAc,WAAW,OAAO,kBAAkB,IAAI,KAAK,cAAc,WAAW,OAAO,kBAAkB,EAAE,QAAQ;AACzI,aAAO,KAAK,QAAQ,cAAc,KAAKA;AAAA,IACzC;AAAA,IACA,IAAI,mBAAmB;AACrB,YAAMA,QAAO,KAAK,cAAc,WAAW,OAAO,sBAAsB,KAAK;AAC7E,aAAO,KAAK,QAAQ,kBAAkB,KAAKA,QAAOA,MAAK,UAAU,UAAU;AAAA,IAC7E;AAAA,IACA,IAAI,qBAAqB;AACvB,YAAMA,QAAO,KAAK,cAAc,WAAW,OAAO,wBAAwB,KAAK;AAC/E,aAAO,KAAK,QAAQ,oBAAoB,KAAKA,QAAOA,MAAK,UAAU,UAAU;AAAA,IAC/E;AAAA,IACA,IAAI,kBAAkB;AACpB,aAAO,KAAK,QAAQ,iBAAiB,KAAK,KAAK,cAAc,WAAW,OAAO,qBAAqB,KAAK;AAAA,IAC3G;AAAA,IACA,UAAU;AACR,aAAO;AAAA,QACL,OAAO,KAAK;AAAA,QACZ,SAAS,KAAK;AAAA,QACd,WAAW,KAAK;AAAA,QAChB,IAAI,KAAK;AAAA,QACT,aAAa,KAAK;AAAA,QAClB,iBAAiB,KAAK;AAAA,QACtB,iBAAiB,KAAK;AAAA,QACtB,cAAc,KAAK;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,cAAc,KAAK;AAAA,QACnB,cAAc,KAAK;AAAA,QACnB,kBAAkB,KAAK;AAAA,QACvB,wBAAwB,KAAK;AAAA,QAC7B,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,QACX,KAAK,KAAK;AAAA,QACV,OAAO,KAAK;AAAA,QACZ,SAASsB,aAAY;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY,CAAC;AAEjB,MAAI,YAAY;AAAA,IACd,IAAI,SAAS;AACX,aAAO;AAAA,IACT;AAAA,IACA,IAAI,cAAc;AAChB,kBAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAM,kBAAkB,WAAS;AAC/B,UAAM,EAAC,eAA8B,IAAI,MAAM,UAAU,CAAC;AAC1D,QAAI,CAAC;AAAgB;AACrB,UAAM,SAAS,SAAS,eAAe,EAAE;AACzC,WAAO;AACP,QAAI,OAAO,oBAAoB;AAAG;AAClC,QAAI,CAAC,eAAe;AAAa,iBAAY,MAAM,OAAO,QAAQ,QAAQ;AAAA,QACxE,SAAS,OAAO;AAAA,QAChB;AAAA,QACA,MAAM,OAAO;AAAA,QACb,SAAS,OAAO;AAAA,QAChB,IAAI,OAAO;AAAA,QACX,UAAU,MAAM;AAAA,MAClB,CAAC,CAAE;AACH,eAAY,MAAM,uBAAuB,QAAQ,SAAS,CAAE;AAAA,EAC9D;AAEA,MAAM,iBAAiB,WAAS;AAC9B,UAAM,EAAC,eAA8B,IAAI,MAAM,UAAU,CAAC;AAC1D,QAAI,CAAC;AAAgB;AACrB,UAAM,SAAS,SAAS,eAAe,EAAE;AACzC,WAAO;AACP,WAAO,WAAW,MAAM,OAAO;AAC/B,WAAO,QAAQ,MAAM,OAAO,eAAe;AAC3C,WAAO,YAAY,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG;AACxE,IAAAzB,KAAI,QAAQ,MAAM;AAClB,QAAI,OAAO,sBAAsB,OAAO;AAAiB;AACzD,QAAI,eAAe;AAAa,iBAAY,MAAM,OAAO,QAAQ,QAAQ;AAAA,QACvE,SAAS,OAAO;AAAA,QAChB;AAAA,QACA,MAAM,OAAO;AAAA,QACb,SAAS,OAAO;AAAA,QAChB,IAAI,OAAO;AAAA,QACX,UAAU,MAAM;AAAA,MAClB,CAAC,CAAE;AACH,eAAY,MAAM,uBAAuB,QAAQ,UAAU,CAAE;AAC7D,QAAI,OAAO,oBAAoB;AAAQ,MAAA3B,QAAW,QAAQ,OAAO,mBAAmB;AAAA,EACtF;AAEA,MAAM,mBAAmB,WAAS;AAChC,UAAM,EAAC,gBAAgC,MAAMgB,MAAI,IAAI,MAAM,UAAU,CAAC;AACtE,UAAM,YAAYA,MAAK,MAAM,GAAG,EAAE,CAAC;AACnC,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAOgB;AAAA,IACT;AACA,QAAI,CAAC,kBAAkB,CAAC,OAAO,KAAK,UAAU,EAAE,SAAS,SAAS;AAAG;AACrE,UAAM,SAAS,SAAS,eAAe,EAAE;AACzC,WAAO;AACP,WAAO;AACP,WAAO,WAAW,MAAM,OAAO;AAC/B,WAAO,QAAQ,MAAM,OAAO,eAAe;AAC3C,WAAO,YAAY,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG;AACxE,QAAI,cAAc;AAAS,aAAO,QAAQ,MAAM,OAAO;AACvD,eAAW,SAAS,EAAE,QAAQ,KAAK;AACnC,eAAY,MAAM,uBAAuB,QAAQ,SAAS,CAAE;AAC5D,QAAI,OAAO,oBAAoB;AAAQ,MAAAhC,QAAW,QAAQ,OAAO,mBAAmB;AAAA,EACtF;AAEA,MAAM,UAAU,CAAC,QAAQ,UAAU;AACjC,IAAA2B,KAAI,QAAQ,MAAM;AAClB,eAAY,MAAM,OAAO,QAAQ,QAAQ;AAAA,MACvC,MAAM,OAAO;AAAA,MACb,SAAS,OAAO;AAAA,MAChB;AAAA,MACA,SAAS,OAAO;AAAA,MAChB,IAAI,OAAO;AAAA,MACX,UAAU,MAAM;AAAA,IAClB,CAAC,CAAE;AAAA,EACL;AAEA,MAAM,SAAS,CAAC,QAAQ,UAAU;AAChC,IAAAA,KAAI,OAAO,QAAQ,KAAK;AACxB,eAAY,MAAM,OAAO,QAAQ,QAAQ;AAAA,MACvC,MAAM,OAAO;AAAA,MACb,SAAS,OAAO;AAAA,MAChB;AAAA,MACA,SAAS,OAAO;AAAA,MAChB,IAAI,OAAO;AAAA,MACX,UAAU,MAAM;AAAA,IAClB,CAAC,CAAE;AAAA,EACL;AAEA,MAAM,YAAY,CAAC,QAAQ,UAAU;AACnC,IAAAA,KAAI,UAAU,QAAQ,KAAK;AAC3B,eAAY,MAAM,OAAO,QAAQ,QAAQ;AAAA,MACvC,MAAM,OAAO;AAAA,MACb,SAAS,OAAO;AAAA,MAChB;AAAA,MACA,SAAS,OAAO;AAAA,MAChB,IAAI,OAAO;AAAA,MACX,UAAU,MAAM;AAAA,IAClB,CAAC,CAAE;AAAA,EACL;AAEA,MAAMK,SAAQ,CAAC,QAAQ,UAAU;AAC/B,IAAAL,KAAI,MAAM,QAAQ,KAAK;AACvB,eAAY,MAAM,OAAO,QAAQ,OAAO;AAAA,MACtC,MAAM,OAAO;AAAA,MACb,SAAS,OAAO;AAAA,MAChB;AAAA,MACA,SAAS,OAAO;AAAA,MAChB,IAAI,OAAO;AAAA,MACX,OAAO,OAAO;AAAA,MACd,UAAU,MAAM,OAAO;AAAA,IACzB,CAAC,CAAE;AAAA,EACL;AAEA,MAAM,yBAAyB,aAAW;AACxC,UAAM,uBAAuB,gBAAgB,QAAQ,aAAa,OAAO,UAAU,CAAC;AACpF,UAAM,uBAAuB,qBAAqB,IAAK,gBAAc,IAAI,IAAI,qCAAqC,SAAS,UAAU,CAAE;AACvI,WAAO,qBAAqB,OAAQ,gBAAc,cAAc,WAAW,cAAe;AAAA,EAC5F;AAEA,MAAM,uBAAuB,aAAW;AACtC,QAAI2B,eAAc,CAAC;AACnB,WAAO,SAAS;AACd,MAAAA,eAAcA,aAAY,OAAO,uBAAuB,OAAO,CAAC;AAChE,gBAAU,QAAQ;AAAA,IACpB;AACA,WAAOA;AAAA,EACT;AAEA,MAAM,6BAA6B,CAAC,YAAYA,iBAAgB;AAC9D,UAAM,aAAaA,aAAY,KAAM,CAAAC,gBAAc;AACjD,UAAI,CAACA,eAAc,CAACA,YAAW;AAAY;AAC3C,YAAM,aAAa,iCAAiC,kBAAkB,UAAU,CAAC;AACjF,aAAO,eAAeA,YAAW;AAAA,IACnC,CAAE;AACF,WAAO;AAAA,EACT;AAEA,MAAM,kBAAkBjD,UAAU,MAAM;AACtC,UAAM,iBAAiB,SAAS,iBAAiB,IAAI,OAAO,SAAS;AACrE,mBAAe,QAAS,aAAW,yBAAyB,OAAO,CAAE;AAAA,EACvE,GAAI,EAAE;AAEN,MAAM,2BAA2B,CAAC,SAAS,aAAa,SAAS;AAC/D,UAAM,sBAAsB,QAAQ,aAAa,OAAO,UAAU;AAClE,UAAMgD,eAAc,gBAAgB,mBAAmB,EAAE,OAAQ,CAAAC,gBAAcA,gBAAe,iBAAkB;AAChH,UAAM,kBAAkB,QAAQ,aAAa,OAAO,MAAM;AAC1D,UAAM,uBAAuB,gBAAgB,eAAe;AAC5D,UAAM,kBAAkB,QAAQ,aAAa,OAAO,MAAM;AAC1D,UAAM,UAAU,gBAAgB,eAAe,EAAE,OAAQ,YAAU,CAAC,OAAO,SAAS,YAAY,CAAE;AAClG,yBAAqB,QAAS,gBAAc;AAC1C,YAAM,uBAAuB,CAAE,UAAW,EAAE,OAAO,qBAAqB,OAAO,CAAC;AAChF,mBAAa,2BAA2B,YAAY,oBAAoB;AACxE,YAAM,iBAAiB,aAAa,WAAW,aAAa;AAC5D,cAAQ,KAAK,GAAG,WAAW,MAAM,IAAI,EAAE,CAAC,MAAM,0BAA0B;AACxE,YAAM,0BAA0B,QAAQ,QAAQ,qBAAqB,iBAAiB;AACtF,YAAM,+CAA+C,YAAY,2BAA2B,mBAAmB;AAC/G,UAAI,CAAC,2BAA2B,8CAA8C;AAC5E,QAAAD,aAAY,KAAK,cAAc;AAAA,MACjC;AAAA,IACF,CAAE;AACF,UAAM,kBAAkB,eAAeA,YAAW;AAClD,UAAM,cAAc,eAAe,OAAO;AAC1C,QAAI,iBAAiB;AACrB,QAAI,mBAAmB,QAAQ,aAAa,OAAO,UAAU,KAAK,iBAAiB;AACjF,cAAQ,aAAa,OAAO,YAAY,eAAe;AACvD,uBAAiB;AAAA,IACnB;AACA,QAAI,eAAe,QAAQ,aAAa,OAAO,MAAM,KAAK,aAAa;AACrE,cAAQ,aAAa,OAAO,QAAQ,WAAW;AAC/C,uBAAiB;AAAA,IACnB;AACA,QAAI,gBAAgB;AAClB,MAAA/C,UAAS,SAAS,yBAAyB;AAAA,QACzC,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAM,2BAAN,cAAuC,WAAW;AAAA,IAChD,eAAe,MAAM;AACnB,YAAM,GAAG,IAAI;AACb,eAAS,IAAI;AAAA,IACf;AAAA,EACF;AAEA,MAAM,QAAQ,OAAO;AAErB,MAAMiD,cAAa,CAACnD,cAAa,EAAC,YAAwB,UAAUmB,WAAU,OAAc,QAAQiC,SAAQ,SAAkB,WAAsB,WAAWC,WAAS,IAAI,CAAC,MAAM;AACjL,cAAU,IAAIA,cAAa,oBAAoB;AAC/C,cAAU,OAAO,WAAWlC,WAAUiC,OAAM;AAC5C,kBAAc,IAAI,CAAC,CAAC,OAAO;AAC3B,QAAI,IAAIpD,YAAW;AACnB,WAAO,IAAIA,YAAW;AACtB,QAAI,IAAI,SAAS,mBAAmB,cAAc,wBAAwB;AAC1E,YAAQ,IAAI,CAAC,CAAC,KAAK;AACnB,QAAI,OAAO,cAAc;AAAa,gBAAU,IAAI,SAAS;AAC7D,UAAM,WAAW,IAAI,iBAAiB,eAAe;AACrD,aAAS,QAAQ,SAAS,iBAAiB;AAAA,MACzC,iBAAiB,CAAE,OAAO,QAAQ,OAAO,MAAO;AAAA,MAChD,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AACD,cAAU,6BAA6B;AAAA,EACzC;AAEA,MAAM,WAAW,CAAC,YAAYb,WAAU,CAAC,MAAM;AAC7C,UAAM,UAAU;AAChB,eAAW,iBAAiB;AAAA,MAC1B,GAAGA;AAAA,MACH;AAAA,IACF;AACA,cAAU,OAAO,UAAU,UAAU;AACrC,WAAO,OAAO,YAAY;AAAA,MACxB,YAAY;AACV,cAAM,MAAM,SAAS;AACrB,cAAM,oBAAoB,KAAK;AAC/B,cAAM,OAAO,MAAM,KAAK,SAAS;AACjC,cAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,cAAM,gBAAgB,iBAAiB,MAAM,iBAAiB;AAC9D,YAAI,eAAe,aAAa,GAAG;AACjC,cAAI,QAAQ;AAAS,oBAAQ,KAAK,uCAAuC;AACzE;AAAA,QACF;AACA,cAAMA,WAAU,iBAAiB,IAAI;AACrC,cAAM,aAAa,IAAI,WAAWA,UAAS,eAAe,mBAAmB,KAAK,YAAY,OAAO,iBAAiB,QAAQ,MAAM,KAAK,KAAK;AAC9I,cAAMU,MAAK,WAAW;AACtB,0BAAkB,mBAAmB,kBAAkB,oBAAoB,CAAC;AAC5E,0BAAkB,aAAa,kBAAkB,cAAc,CAAC;AAChE,0BAAkB,cAAc,kBAAkB,eAAe,CAAC;AAClE,0BAAkB,iBAAiBA,GAAE,IAAI;AACzC,0BAAkB,WAAWA,GAAE,IAAI,WAAW,QAAQ;AACtD,cAAM,SAAS,IAAI,OAAO,YAAY,IAAI;AAC1C,iBAASA,GAAE,IAAI;AACf,aAAK,aAAa;AAClB,+BAAuB,QAAQ,QAAQ;AACvC,mBAAY,MAAM;AAChB,gBAAM,EAAC,QAAQuD,QAAM,IAAI,kBAAkB,WAAWvD,GAAE,KAAK,CAAC;AAC9D,gBAAM,QAAQ,cAAc,WAAW,OAAO,mBAAmB;AACjE,cAAI,OAAO;AACT,YAAAV,SAAQ,eAAe,IAAI,MAAM,UAAU;AAAA,UAC7C;AACA,gBAAM,OAAO,cAAc,QAAQ,WAAW,YAAY,KAAK,SAAS,cAAc,WAAW,YAAY,KAAK,cAAc,QAAQ,MAAM;AAC9I,cAAI,UAAU,WAAWA,SAAQ,eAAe,MAAM,UAAa;AAAM,oBAAQ,KAAK;AAAA,aAA4G,OAAO,yHAAyH;AAClU,gBAAM,WAAWA,SAAQ,eAAe,MAAM,QAAQ,KAAK,cAAc,MAAM;AAAA,YAC7E,SAAS;AAAA,UACX,CAAC;AACD,iBAAO,OAAO;AAAA,YACZ,GAAG,WAAW,QAAQ;AAAA,YACtB,QAAQiE;AAAA,YACR;AAAA,UACF;AACA,4BAAkB,WAAWvD,GAAE,IAAI,OAAO;AAC1C,oBAAU,OAAO,QAAQ,MAAM;AAAA,QACjC,CAAE;AACF,QAAAyB,KAAI,QAAQ,MAAM;AAClB,eAAO,OAAO;AAAA,MAChB;AAAA,MACA,UAAU,OAAO;AACf,YAAI,UAAU,MAAM;AACpB,YAAI;AACJ,eAAO,WAAW,CAAC,QAAQ;AACzB,mBAAS,QAAQ,aAAa,OAAO,MAAM;AAC3C,cAAI,CAAC,UAAU,CAAC,OAAO,KAAK,EAAE;AAAQ,sBAAU,QAAQ;AAAA,QAC1D;AACA,cAAMV,SAAQ,gBAAgB,MAAM,EAAE,KAAM,CAAA0C,YAAUA,QAAO,MAAM,IAAI,EAAE,CAAC,MAAM,MAAM,IAAK;AAC3F,YAAI1C,QAAO;AACT,gBAAM,eAAe;AACrB,gBAAM,gBAAgB;AACtB,eAAK,UAAUA,OAAM,MAAM,IAAI,EAAE,CAAC,GAAG,OAAO;AAAA,QAC9C;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,WAAW;AAAU,aAAO,eAAe,YAAY,YAAY;AAAA,QACtE,MAAM;AACJ,iBAAO,IAAI,MAAM,UAAU;AAAA,YACzB,KAAK,SAAS,QAAQ,MAAM;AAC1B,kBAAI,SAAS;AAAQ,uBAAO,KAAK;AACjC,qBAAO,OAAO,YAAY,OAAO,QAAQ,OAAO,IAAI,CAAC,EAAE,OAAQ,CAAC,CAACK,IAAG,MAAM,MAAM,OAAO,eAAe,IAAK,CAAC;AAAA,YAC9G,EAAE,KAAK,IAAI;AAAA,UACb,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AACD,6BAAyB,WAAW,SAAS,UAAU;AACvD,cAAU,yCAAyC;AAAA,MACjD,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAM,YAAY,CAAC,YAAY9B,WAAU,CAAC,MAAM;AAC9C,aAAS,YAAYA,QAAO;AAAA,EAC9B;AAEA,WAAS,iBAAiB,oCAAoC,gBAAgB;AAE9E,WAAS,iBAAiB,iCAAiC,eAAe;AAE1E,WAAS,iBAAiB,4BAA4B,eAAe;AAErE,WAAS,iBAAiB,gCAAgC,cAAc;AAExE,WAAS,iBAAiB,2BAA2B,cAAc;AAEnE,WAAS,iBAAiB,oBAAqB,MAAM;AACnD,QAAI,SAAS,eAAe,YAAY;AACtC,sBAAgB;AAAA,IAClB;AAAA,EACF,CAAE;AAEF,MAAI,iBAAiB,OAAO,OAAO;AAAA,IACjC,WAAW;AAAA,IACX;AAAA,IACA,YAAYgE;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAMxD,UAAS;AAAA,IACb,SAASoD,aAAY;AAAA,IACrB,GAAG;AAAA,IACH,IAAI,QAAQ;AACV,aAAO,QAAQ;AAAA,IACjB;AAAA,IACA,IAAI,MAAM,OAAO;AACf,cAAQ,IAAI,CAAC,CAAC,KAAK;AAAA,IACrB;AAAA,IACA,IAAI,YAAY;AACd,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,IAAI,UAAU,OAAO;AACnB,gBAAU,IAAI,CAAC,CAAC,KAAK;AAAA,IACvB;AAAA,EACF;AAEA,SAAO,iBAAiBpD;;;AC77CxB;AAAA;AAAA;AAAA;;;ACAO,WAAS,aAAa4D,OAAM;AACjC,UAAM,UAAU,SAAS,KAAK,cAAc,cAAcA,SAAQ;AAClE,WAAO,QAAQ,aAAa,SAAS;AAAA,EACvC;AAEO,WAAS,MAAM,OAAO,YAAY,KAAK;AAC5C,QAAI,OAAO;AACT,UAAIC,SAAQ,MAAM,MAAM,SAAS;AACjC,aAAOA,OAAM,OAAO,SAAUC,IAAG;AAC/B,eAAOA,OAAM;AAAA,MACf,CAAC;AAAA,IACH,OAAO;AACL,aAAO,IAAI,MAAM;AAAA,IACnB;AAAA,EACF;AAEO,WAAS,YAAYC,OAAM,UAAU;AAC1C,QAAI,OAAOA,SAAQ,UAAU;AAC3B,iBAAWA;AACX,MAAAA,QAAO;AAAA,IACT;AACA,WAAOA,MAAK,cAAc,QAAQ;AAAA,EACpC;AAEO,WAAS,cAAc,IAAI;AAChC,QAAI,MAAM,GAAG,YAAY;AACvB,SAAG,WAAW,YAAY,EAAE;AAAA,IAC9B;AAAA,EACF;AAEO,WAAS,YAAY,IAAI,eAAe;AAC3C,WAAO,cAAc,WAAW,aAAa,IAAI,cAAc,WAAW;AAAA,EAC9E;;;AChCA;AAAA,MAAqB,UAArB,MAA4B;AAAA;AAAA,IAO1B,YAAY,WAAW,QAAO,mBAAmB;AAgBjD;AAmBA;AAIA;AAIA;AAIA;AA9CE,WAAK,WAAW;AAAA,IAClB;AAAA,IAEA,KAAK,KAAKC,UAAS;AACjB,4BAAK,4BAAL,WAAiB,KAAKA,UAAS,QAAO;AAAA,IACxC;AAAA,IAEA,KAAK,KAAKA,UAAS;AACjB,4BAAK,4BAAL,WAAiB,KAAKA,UAAS,QAAO;AAAA,IACxC;AAAA,IAEA,MAAM,KAAKA,UAAS;AAClB,4BAAK,4BAAL,WAAiB,KAAKA,UAAS,QAAO;AAAA,IACxC;AAAA,EAoCF;AAzDA,MAAqB,SAArB;AAuBE;AAAA,kBAAW,SAAC,KAAKA,UAAS,OAAO;AAC/B,QAAG,QAAQ,KAAK,UAAU;AACxB;AAAA,IACF;AACA,YAAO,OAAO;AAAA,MACZ,KAAK;AACH,8BAAK,8BAAL,WAAkB,IAAI,QAAQA;AAC9B;AAAA,MACF,KAAK;AACH,8BAAK,8BAAL,WAAkB,IAAI,QAAQA;AAC9B;AAAA,MACF,KAAK;AACH,8BAAK,gCAAL,WAAmB,IAAI,QAAQA;AAC/B;AAAA,MACF;AACE;AAAA,IACJ;AAAA,EACF;AAEA;AAAA,mBAAY,SAACA,UAAS;AACpB,0BAAK,4BAAL,WAAiBA,UAAS;AAAA,EAC5B;AAEA;AAAA,mBAAY,SAACA,UAAS;AACpB,0BAAK,4BAAL,WAAiBA,UAAS;AAAA,EAC5B;AAEA;AAAA,oBAAa,SAACA,UAAS;AACrB,0BAAK,4BAAL,WAAiBA,UAAS;AAAA,EAC5B;AAEA;AAAA,kBAAW,SAACA,UAASC,QAAO;AAC1B,YAAQ,IAAI,KAAKD,YAAW,SAASC,SAAQ;AAAA,EAC/C;AAtDA,gBAFmB,QAEZ,qBAAoB;AAC3B,gBAHmB,QAGZ,qBAAoB;AAC3B,gBAJmB,QAIZ,mBAAkB;;;AFC3B,MAAqB,wBAArB,cAAmD,WAAW;AAAA,IAG5D,SAAS,IAAI,OAAO;AAAA;AAAA;AAAA;AAAA,IAKpB,aAAa;AACX,WAAK,YAAY;AAAA,IAEnB;AAAA,IAEA,UAAU;AAER,UAAG,KAAK,WAAW;AACjB,QAAAC,QAAe,SAAS,IAAI;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,aAAa;AACX,WAAK,QAAQ,cAAc;AAAA,IAC7B;AAAA,IAEA,QAAQC,UAAS;AACf,WAAK,OAAO,KAAK,KAAK,YAAYA,QAAO;AAAA,IAC3C;AAAA,IAEA,WAAWA,UAAS;AAClB,WAAK,OAAO,KAAK,KAAK,YAAYA,QAAO;AAAA,IAC3C;AAAA,IAEA,SAASA,UAAS;AAChB,WAAK,OAAO,MAAM,KAAK,YAAYA,QAAO;AAAA,IAC5C;AAAA,IAEA,WAAWA,UAAS,QAAQ,MAAM,WAAW,QAAQ;AACnD,MAAAA,WAAU,GAAG,SAAS,OAAO,QAAQ,OAAO,KAAKA;AAEjD,cAAO,UAAU;AAAA,QACf,KAAK;AACH,eAAK,WAAWA,QAAO;AACvB;AAAA,QACF,KAAK;AACH,eAAK,SAASA,QAAO;AACrB;AAAA,QACF;AACE,eAAK,QAAQA,QAAO;AAAA,MACxB;AAAA,IACF;AAAA;AAAA,IAGA,eAAe;AACb,QAAE,UAAU,EAAE,SAAS,SAAS;AAAA,IAClC;AAAA;AAAA,IAGA,cAAc;AACZ,QAAE,UAAU,EAAE,YAAY,SAAS;AAAA,IACrC;AAAA,IAEA,aAAa;AACX,aAAO,OAAO,SAAS,WAAW,OAAO,OAAO,SAAS,OAAO,OAAO,SAAS;AAAA,IAClF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,mBAAmB;AACjB,QAAE,2BAA2B,EAAE,IAAI,aAAa,YAAY,CAAC;AAAA,IAC/D;AAAA,IAEA,4BAA4BC,OAAM;AAChC,UAAG,EAAEA,KAAI,EAAE,KAAK,2BAA2B,EAAE,UAAU,GAAG;AACxD,UAAE,yDAAyD,EAAE,SAAS,EAAEA,KAAI,CAAC;AAAA,MAC/E;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,mBAAmB;AACjB,YAAMC,QAAO;AACb,UAAI,cAAc,KAAK,UAAU,MAAM,GAAG;AAC1C,UAAG,YAAY,CAAC,KAAK,IAAI;AACvB,sBAAc,CAAC;AAAA,MACjB;AAEA,kBAAY,QAAQ,SAAU,aAAaC,QAAO;AAChD,QAAAD,MAAK,aAAa,WAAW,EAAE,KAAKA,KAAI,EAAE;AAAA,MAC5C,CAAC;AAAA,IAEH;AAAA;AAAA,IAGA,SAAS,WAAW;AAClB,aAAO,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IAAI,SAAS;AAAA,IAClE;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,kBAAkB;AAChB,YAAM,YAAY,EAAE,kBAAkB,EAAE,KAAK,YAAY,KAAK,EAAE,4BAA4B,EAAE,KAAK,YAAY;AAC/G,aAAO;AAAA,IACT;AAAA,EAEF;;;AG9GA,EAAAE,QAAe,WAAW,aAAa,EAAE,mCAAY,SAAS,KAAK,CAAC;;;ACHpE,mBAAgB;AAChB,mBAAgB;AAChB,qBAAkB;;;ACJlB,oBAAiB;AA0BV,MAAM,wBAAwC,CACnDC,OACA,WACY;AACZ,UAAM,UAAU,CAAA;AAChB,UAAM,OAAiB,CAAA;AAIvB,YAAQ,KAAK,MAAM;AAGnB,QAAI,CAAC,QAAQ;AACX,cAAQ,KAAKA,MAAK,MAAM;IAC1B;AAGA,QAAIA,MAAK,gBAAgB;AACvB,cAAQ,KAAKA,MAAK,aAAa;IACjC;AAQA,YACG,OAAO,OAAO,EACd,IAAI,CAAC,UAAU,MAAM,SAAQ,CAAE,EAC/B,QAAQ,SAAU,eAAqB;AACtC,UAAI,CAAC,KAAK,SAAS,aAAa,GAAG;AACjC,aAAK,KAAK,aAAa;MACzB;AAEA,UAAI,CAACA,MAAK,gBAAgB;AACxB;MACF;AAEA,YAAM,QAAQ,cAAc,MAAM,GAAG;AAErC,UAAI,MAAM,WAAW,GAAG;AACtB,aAAK,KAAK,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG;MACrC;AAEA,WAAK,KAAK,MAAM,CAAC,CAAC;IACpB,CAAC;AAEH,eAAO,YAAAC,SAAK,IAAI;EAClB;AAEM,MAAO,UAAP,MAAc;IAIlB,YAAYD,OAAU;AACpB,WAAK,OAAOA;AACZ,WAAK,WAAW,CAAA;AAEhB,WAAK,SAAS,WAAW,qBAAqB;IAChD;IAoBO,SACL,QACA,gBAAkD;AAElD,UAAI,OAAO,mBAAmB,YAAY;AACxC,cAAM,SAAS;AACf,yBAAkB,MAAM;MAC1B;AAEA,WAAK,SAAS,MAAM,IAAI;IAC1B;IAgBO,IAAI,QAAc;AACvB,UAAI,UACF,KAAK,SAAS,MAAM,KACpB,KAAK,SAAS,KAAK,KAAK,MAAM,KAC9B,KAAK,SAAS;AAEhB,UAAI,OAAO,YAAY,YAAY;AACjC,kBAAU,QAAQ,KAAK,MAAM,MAAM;MACrC;AAEA,UAAI,EAAE,mBAAmB,QAAQ;AAC/B,kBAAU,CAAC,OAAO;MACpB;AACA,aAAO;IACT;;;;AC+BK,MAAM,KAAK,CAACE,IAAG,QAAQ;AAC5B,UAAMC,KAAI,OAAOD,EAAC,EAAE,MAAM,GAAG,GAAG,KAAK,CAACC,GAAE,CAAC,GAAG,KAAK,OAAOA,GAAE,CAAC,CAAC,KAAKD,IAAG,MAAM,MAAMC,GAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,MAAMA,GAAE,CAAC,EAAE,MAAM,EAAE;AAC1H,QAAI;AAAK,aAAO,OAAO,KAAK,QAAQ,KAAK,QACrC,OAAO,KAAK,QAAQ,KAAK,QACzB,OAAO,KAAK,QAAQ,KAAK,QACzB;AACJ,WAAOD,MAAK,KAAK,KAAK,QAAQ;AAAA,EAChC;;;ACxKM,WAAU,cAAc,EAC5B,YACA,cAAc,MACd,UAAU,MAAK,GAKhB;AACC,WAAO,SAAU,OAAa,OAAa;AACzC,aAAO;QACL,eAAe,UAAU,IAAI,SAAS;QACtC,WAAW,OAAO,OAAO;QACzB,OAAO,OAAO;IAClB;EACF;AAqBO,MAAM,oBAAgC,cAAc;IACzD,YAAY;IACZ,aAAa;GACd;AAwCK,MAAO,gBAAP,MAAoB;IAIxB,YAAYE,OAAU;AACpB,WAAK,OAAOA;AACZ,WAAK,WAAW,CAAA;AAEhB,WAAK,SAAS,WAAW,iBAAiB;IAC5C;IAqCO,SAAS,QAAgB,YAAsB;AACpD,WAAK,SAAS,MAAM,IAAI;IAC1B;IAYO,IAAI,QAAc;AACvB,aACE,KAAK,SAAS,MAAM,KACpB,KAAK,SAAS,KAAK,KAAK,MAAM,KAC9B,KAAK,SAAS,SAAS;IAE3B;;;;ACjKF,yBAAsB;AAchB,WAAU,cAAwB,QAAe;AACrD,QAAI,CAAC,QAAQ;AACX,aAAO,CAAA;IACT;AAEA,WAAO,OAAO,KAAK,MAAc,EAAE,OAAO,CAAC,QAAQC,SAAO;AACvD,iBAAgB,iBAAAC,SAAUD,IAAG,CAAC,IAAK,OAAgBA,IAAG;AACvD,aAAO;IACT,GAAG,CAAA,CAAO;EACZ;;;ACdM,WAAU,MAAM,OAAc;AAClC,WAAO,UAAU,UAAa,UAAU;EAC1C;;;ACQM,WAAU,yBACdE,OACA,OACAC,UAAa;AAEb,QAAI,qBAA6B,CAAC,EAAE,MAAK,CAAE;AAI3C,QAAI,MAAMA,SAAQ,QAAQ,GAAG;AAC3B,2BAAqB,mBAAmB,OAAOA,SAAQ,QAAQ;IACjE;AAIA,QAAI,MAAMA,SAAQ,YAAY,GAAG;AAC/B,YAAMC,WACJ,OAAOD,SAAQ,iBAAiB,aAC5BA,SAAQ,aAAaD,OAAM,OAAOC,QAAO,IACzCA,SAAQ;AAEd,yBAAmB,KAAK,EAAE,SAAAC,SAAO,CAAE;AACnC,aAAOD,SAAQ;IACjB;AAEA,WAAO;EACT;;;ACGA,MACE,YAAY;AADd,MAEE,WAAW,KAAK;AAFlB,MAGE,YAAY,KAAK;AAHnB,MAKE,iBAAiB;AALnB,MAME,gBAAgB,iBAAiB;AANnC,MAQE,OAAO;AART,MASE,WAAW;AATb,MAUE,mBAAmB;AAVrB,MAYE,WAAW,CAAC,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI;AAZnF,MAaE,YAAY;AAbd,MAkBE,MAAM;AAMR,WAASE,OAAM,cAAc;AAC3B,QAAI,KAAK,aAAa,cACpBC,KAAIC,WAAU,YAAY,EAAE,aAAaA,YAAW,UAAU,MAAM,SAAS,KAAK,GAClF,MAAM,IAAIA,WAAU,CAAC,GAUrB,iBAAiB,IAajB,gBAAgB,GAMhB,aAAa,IAIb,aAAa,IAMb,UAAU,MAKV,UAAU,KAGV,SAAS,OAkBT,cAAc,GAId,gBAAgB,GAGhB,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,wBAAwB;AAAA;AAAA,MACxB,QAAQ;AAAA,IACV,GAKA,WAAW,wCACX,iCAAiC;AAgBnC,aAASA,WAAUC,IAAGC,IAAG;AACvB,UAAI,UAAUC,IAAG,aAAaC,IAAGC,IAAG,OAAO,KAAK,KAC9CC,KAAI;AAGN,UAAI,EAAEA,cAAaN;AAAY,eAAO,IAAIA,WAAUC,IAAGC,EAAC;AAExD,UAAIA,MAAK,MAAM;AAEb,YAAID,MAAKA,GAAE,iBAAiB,MAAM;AAChC,UAAAK,GAAE,IAAIL,GAAE;AAER,cAAI,CAACA,GAAE,KAAKA,GAAE,IAAI,SAAS;AACzB,YAAAK,GAAE,IAAIA,GAAE,IAAI;AAAA,UACd,WAAWL,GAAE,IAAI,SAAS;AACxB,YAAAK,GAAE,IAAI,CAACA,GAAE,IAAI,CAAC;AAAA,UAChB,OAAO;AACL,YAAAA,GAAE,IAAIL,GAAE;AACR,YAAAK,GAAE,IAAIL,GAAE,EAAE,MAAM;AAAA,UAClB;AAEA;AAAA,QACF;AAEA,aAAK,QAAQ,OAAOA,MAAK,aAAaA,KAAI,KAAK,GAAG;AAGhD,UAAAK,GAAE,IAAI,IAAIL,KAAI,KAAKA,KAAI,CAACA,IAAG,MAAM;AAGjC,cAAIA,OAAM,CAAC,CAACA,IAAG;AACb,iBAAKG,KAAI,GAAGC,KAAIJ,IAAGI,MAAK,IAAIA,MAAK,IAAID;AAAI;AAEzC,gBAAIA,KAAI,SAAS;AACf,cAAAE,GAAE,IAAIA,GAAE,IAAI;AAAA,YACd,OAAO;AACL,cAAAA,GAAE,IAAIF;AACN,cAAAE,GAAE,IAAI,CAACL,EAAC;AAAA,YACV;AAEA;AAAA,UACF;AAEA,gBAAM,OAAOA,EAAC;AAAA,QAChB,OAAO;AAEL,cAAI,CAAC,UAAU,KAAK,MAAM,OAAOA,EAAC,CAAC;AAAG,mBAAO,aAAaK,IAAG,KAAK,KAAK;AAEvE,UAAAA,GAAE,IAAI,IAAI,WAAW,CAAC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,GAAG,MAAM;AAAA,QAC7D;AAGA,aAAKF,KAAI,IAAI,QAAQ,GAAG,KAAK;AAAI,gBAAM,IAAI,QAAQ,KAAK,EAAE;AAG1D,aAAKC,KAAI,IAAI,OAAO,IAAI,KAAK,GAAG;AAG9B,cAAID,KAAI;AAAG,YAAAA,KAAIC;AACf,UAAAD,MAAK,CAAC,IAAI,MAAMC,KAAI,CAAC;AACrB,gBAAM,IAAI,UAAU,GAAGA,EAAC;AAAA,QAC1B,WAAWD,KAAI,GAAG;AAGhB,UAAAA,KAAI,IAAI;AAAA,QACV;AAAA,MAEF,OAAO;AAGL,iBAASF,IAAG,GAAG,SAAS,QAAQ,MAAM;AAItC,YAAIA,MAAK,MAAM,gCAAgC;AAC7C,UAAAI,KAAI,IAAIN,WAAUC,EAAC;AACnB,iBAAOM,OAAMD,IAAG,iBAAiBA,GAAE,IAAI,GAAG,aAAa;AAAA,QACzD;AAEA,cAAM,OAAOL,EAAC;AAEd,YAAI,QAAQ,OAAOA,MAAK,UAAU;AAGhC,cAAIA,KAAI,KAAK;AAAG,mBAAO,aAAaK,IAAG,KAAK,OAAOJ,EAAC;AAEpD,UAAAI,GAAE,IAAI,IAAIL,KAAI,KAAK,MAAM,IAAI,MAAM,CAAC,GAAG,MAAM;AAG7C,cAAID,WAAU,SAAS,IAAI,QAAQ,aAAa,EAAE,EAAE,SAAS,IAAI;AAC/D,kBAAM,MACJ,gBAAgBC,EAAC;AAAA,UACrB;AAAA,QACF,OAAO;AACL,UAAAK,GAAE,IAAI,IAAI,WAAW,CAAC,MAAM,MAAM,MAAM,IAAI,MAAM,CAAC,GAAG,MAAM;AAAA,QAC9D;AAEA,mBAAW,SAAS,MAAM,GAAGJ,EAAC;AAC9B,QAAAE,KAAIC,KAAI;AAIR,aAAK,MAAM,IAAI,QAAQA,KAAI,KAAKA,MAAK;AACnC,cAAI,SAAS,QAAQF,KAAI,IAAI,OAAOE,EAAC,CAAC,IAAI,GAAG;AAC3C,gBAAIF,MAAK,KAAK;AAGZ,kBAAIE,KAAID,IAAG;AACT,gBAAAA,KAAI;AACJ;AAAA,cACF;AAAA,YACF,WAAW,CAAC,aAAa;AAGvB,kBAAI,OAAO,IAAI,YAAY,MAAM,MAAM,IAAI,YAAY,MACnD,OAAO,IAAI,YAAY,MAAM,MAAM,IAAI,YAAY,IAAI;AACzD,8BAAc;AACd,gBAAAC,KAAI;AACJ,gBAAAD,KAAI;AACJ;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,aAAaE,IAAG,OAAOL,EAAC,GAAG,OAAOC,EAAC;AAAA,UAC5C;AAAA,QACF;AAGA,gBAAQ;AACR,cAAM,YAAY,KAAKA,IAAG,IAAII,GAAE,CAAC;AAGjC,aAAKF,KAAI,IAAI,QAAQ,GAAG,KAAK;AAAI,gBAAM,IAAI,QAAQ,KAAK,EAAE;AAAA;AACrD,UAAAA,KAAI,IAAI;AAAA,MACf;AAGA,WAAKC,KAAI,GAAG,IAAI,WAAWA,EAAC,MAAM,IAAIA;AAAI;AAG1C,WAAK,MAAM,IAAI,QAAQ,IAAI,WAAW,EAAE,GAAG,MAAM;AAAI;AAErD,UAAI,MAAM,IAAI,MAAMA,IAAG,EAAE,GAAG,GAAG;AAC7B,eAAOA;AAGP,YAAI,SAASL,WAAU,SACrB,MAAM,OAAOC,KAAI,oBAAoBA,OAAM,UAAUA,EAAC,IAAI;AACxD,gBAAM,MACJ,gBAAiBK,GAAE,IAAIL,EAAE;AAAA,QAC/B;AAGA,aAAKG,KAAIA,KAAIC,KAAI,KAAK,SAAS;AAG7B,UAAAC,GAAE,IAAIA,GAAE,IAAI;AAAA,QAGd,WAAWF,KAAI,SAAS;AAGtB,UAAAE,GAAE,IAAI,CAACA,GAAE,IAAI,CAAC;AAAA,QAChB,OAAO;AACL,UAAAA,GAAE,IAAIF;AACN,UAAAE,GAAE,IAAI,CAAC;AAMP,UAAAD,MAAKD,KAAI,KAAK;AACd,cAAIA,KAAI;AAAG,YAAAC,MAAK;AAEhB,cAAIA,KAAI,KAAK;AACX,gBAAIA;AAAG,cAAAC,GAAE,EAAE,KAAK,CAAC,IAAI,MAAM,GAAGD,EAAC,CAAC;AAEhC,iBAAK,OAAO,UAAUA,KAAI,OAAM;AAC9B,cAAAC,GAAE,EAAE,KAAK,CAAC,IAAI,MAAMD,IAAGA,MAAK,QAAQ,CAAC;AAAA,YACvC;AAEA,YAAAA,KAAI,YAAY,MAAM,IAAI,MAAMA,EAAC,GAAG;AAAA,UACtC,OAAO;AACL,YAAAA,MAAK;AAAA,UACP;AAEA,iBAAOA,MAAK,OAAO;AAAI;AACvB,UAAAC,GAAE,EAAE,KAAK,CAAC,GAAG;AAAA,QACf;AAAA,MACF,OAAO;AAGL,QAAAA,GAAE,IAAI,CAACA,GAAE,IAAI,CAAC;AAAA,MAChB;AAAA,IACF;AAMA,IAAAN,WAAU,QAAQF;AAElB,IAAAE,WAAU,WAAW;AACrB,IAAAA,WAAU,aAAa;AACvB,IAAAA,WAAU,aAAa;AACvB,IAAAA,WAAU,cAAc;AACxB,IAAAA,WAAU,gBAAgB;AAC1B,IAAAA,WAAU,kBAAkB;AAC5B,IAAAA,WAAU,kBAAkB;AAC5B,IAAAA,WAAU,kBAAkB;AAC5B,IAAAA,WAAU,mBAAmB;AAC7B,IAAAA,WAAU,SAAS;AAqCnB,IAAAA,WAAU,SAASA,WAAU,MAAM,SAAU,KAAK;AAChD,UAAIQ,IAAGP;AAEP,UAAI,OAAO,MAAM;AAEf,YAAI,OAAO,OAAO,UAAU;AAI1B,cAAI,IAAI,eAAeO,KAAI,gBAAgB,GAAG;AAC5C,YAAAP,KAAI,IAAIO,EAAC;AACT,qBAASP,IAAG,GAAG,KAAKO,EAAC;AACrB,6BAAiBP;AAAA,UACnB;AAIA,cAAI,IAAI,eAAeO,KAAI,eAAe,GAAG;AAC3C,YAAAP,KAAI,IAAIO,EAAC;AACT,qBAASP,IAAG,GAAG,GAAGO,EAAC;AACnB,4BAAgBP;AAAA,UAClB;AAMA,cAAI,IAAI,eAAeO,KAAI,gBAAgB,GAAG;AAC5C,YAAAP,KAAI,IAAIO,EAAC;AACT,gBAAIP,MAAKA,GAAE,KAAK;AACd,uBAASA,GAAE,CAAC,GAAG,CAAC,KAAK,GAAGO,EAAC;AACzB,uBAASP,GAAE,CAAC,GAAG,GAAG,KAAKO,EAAC;AACxB,2BAAaP,GAAE,CAAC;AAChB,2BAAaA,GAAE,CAAC;AAAA,YAClB,OAAO;AACL,uBAASA,IAAG,CAAC,KAAK,KAAKO,EAAC;AACxB,2BAAa,EAAE,aAAaP,KAAI,IAAI,CAACA,KAAIA;AAAA,YAC3C;AAAA,UACF;AAKA,cAAI,IAAI,eAAeO,KAAI,OAAO,GAAG;AACnC,YAAAP,KAAI,IAAIO,EAAC;AACT,gBAAIP,MAAKA,GAAE,KAAK;AACd,uBAASA,GAAE,CAAC,GAAG,CAAC,KAAK,IAAIO,EAAC;AAC1B,uBAASP,GAAE,CAAC,GAAG,GAAG,KAAKO,EAAC;AACxB,wBAAUP,GAAE,CAAC;AACb,wBAAUA,GAAE,CAAC;AAAA,YACf,OAAO;AACL,uBAASA,IAAG,CAAC,KAAK,KAAKO,EAAC;AACxB,kBAAIP,IAAG;AACL,0BAAU,EAAE,UAAUA,KAAI,IAAI,CAACA,KAAIA;AAAA,cACrC,OAAO;AACL,sBAAM,MACJ,iBAAiBO,KAAI,sBAAsBP,EAAC;AAAA,cAChD;AAAA,YACF;AAAA,UACF;AAKA,cAAI,IAAI,eAAeO,KAAI,QAAQ,GAAG;AACpC,YAAAP,KAAI,IAAIO,EAAC;AACT,gBAAIP,OAAM,CAAC,CAACA,IAAG;AACb,kBAAIA,IAAG;AACL,oBAAI,OAAO,UAAU,eAAe,WAClC,OAAO,mBAAmB,OAAO,cAAc;AAC/C,2BAASA;AAAA,gBACX,OAAO;AACL,2BAAS,CAACA;AACV,wBAAM,MACJ,iBAAiB,oBAAoB;AAAA,gBACzC;AAAA,cACF,OAAO;AACL,yBAASA;AAAA,cACX;AAAA,YACF,OAAO;AACL,oBAAM,MACJ,iBAAiBO,KAAI,yBAAyBP,EAAC;AAAA,YACnD;AAAA,UACF;AAIA,cAAI,IAAI,eAAeO,KAAI,aAAa,GAAG;AACzC,YAAAP,KAAI,IAAIO,EAAC;AACT,qBAASP,IAAG,GAAG,GAAGO,EAAC;AACnB,0BAAcP;AAAA,UAChB;AAIA,cAAI,IAAI,eAAeO,KAAI,eAAe,GAAG;AAC3C,YAAAP,KAAI,IAAIO,EAAC;AACT,qBAASP,IAAG,GAAG,KAAKO,EAAC;AACrB,4BAAgBP;AAAA,UAClB;AAIA,cAAI,IAAI,eAAeO,KAAI,QAAQ,GAAG;AACpC,YAAAP,KAAI,IAAIO,EAAC;AACT,gBAAI,OAAOP,MAAK;AAAU,uBAASA;AAAA;AAC9B,oBAAM,MACT,iBAAiBO,KAAI,qBAAqBP,EAAC;AAAA,UAC/C;AAIA,cAAI,IAAI,eAAeO,KAAI,UAAU,GAAG;AACtC,YAAAP,KAAI,IAAIO,EAAC;AAIT,gBAAI,OAAOP,MAAK,YAAY,CAAC,wBAAwB,KAAKA,EAAC,GAAG;AAC5D,+CAAiCA,GAAE,MAAM,GAAG,EAAE,KAAK;AACnD,yBAAWA;AAAA,YACb,OAAO;AACL,oBAAM,MACJ,iBAAiBO,KAAI,eAAeP,EAAC;AAAA,YACzC;AAAA,UACF;AAAA,QAEF,OAAO;AAGL,gBAAM,MACJ,iBAAiB,sBAAsB,GAAG;AAAA,QAC9C;AAAA,MACF;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,gBAAgB,CAAC,YAAY,UAAU;AAAA,QACvC,OAAO,CAAC,SAAS,OAAO;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAYA,IAAAD,WAAU,cAAc,SAAUC,IAAG;AACnC,UAAI,CAACA,MAAKA,GAAE,iBAAiB;AAAM,eAAO;AAC1C,UAAI,CAACD,WAAU;AAAO,eAAO;AAE7B,UAAIK,IAAGI,IACLN,KAAIF,GAAE,GACNG,KAAIH,GAAE,GACNS,KAAIT,GAAE;AAER;AAAK,YAAI,CAAC,EAAE,SAAS,KAAKE,EAAC,KAAK,kBAAkB;AAEhD,eAAKO,OAAM,KAAKA,OAAM,OAAON,MAAK,CAAC,OAAOA,MAAK,OAAOA,OAAM,UAAUA,EAAC,GAAG;AAGxE,gBAAID,GAAE,CAAC,MAAM,GAAG;AACd,kBAAIC,OAAM,KAAKD,GAAE,WAAW;AAAG,uBAAO;AACtC,oBAAM;AAAA,YACR;AAGA,YAAAE,MAAKD,KAAI,KAAK;AACd,gBAAIC,KAAI;AAAG,cAAAA,MAAK;AAIhB,gBAAI,OAAOF,GAAE,CAAC,CAAC,EAAE,UAAUE,IAAG;AAE5B,mBAAKA,KAAI,GAAGA,KAAIF,GAAE,QAAQE,MAAK;AAC7B,gBAAAI,KAAIN,GAAEE,EAAC;AACP,oBAAII,KAAI,KAAKA,MAAK,QAAQA,OAAM,UAAUA,EAAC;AAAG,wBAAM;AAAA,cACtD;AAGA,kBAAIA,OAAM;AAAG,uBAAO;AAAA,YACtB;AAAA,UACF;AAAA,QAGF,WAAWN,OAAM,QAAQC,OAAM,SAASM,OAAM,QAAQA,OAAM,KAAKA,OAAM,KAAK;AAC1E,iBAAO;AAAA,QACT;AAEA,YAAM,MACH,iBAAiB,wBAAwBT,EAAC;AAAA,IAC/C;AAQA,IAAAD,WAAU,UAAUA,WAAU,MAAM,WAAY;AAC9C,aAAO,SAAS,WAAW,EAAE;AAAA,IAC/B;AAQA,IAAAA,WAAU,UAAUA,WAAU,MAAM,WAAY;AAC9C,aAAO,SAAS,WAAW,CAAC;AAAA,IAC9B;AAaA,IAAAA,WAAU,SAAU,WAAY;AAC9B,UAAI,UAAU;AAMd,UAAI,iBAAkB,KAAK,OAAO,IAAI,UAAW,UAC9C,WAAY;AAAE,eAAO,UAAU,KAAK,OAAO,IAAI,OAAO;AAAA,MAAG,IACzD,WAAY;AAAE,gBAAS,KAAK,OAAO,IAAI,aAAa,KAAK,WACxD,KAAK,OAAO,IAAI,UAAW;AAAA,MAAI;AAEnC,aAAO,SAAU,IAAI;AACnB,YAAIW,IAAGT,IAAGE,IAAGQ,IAAGX,IACdI,KAAI,GACJF,KAAI,CAAC,GACL,OAAO,IAAIH,WAAU,GAAG;AAE1B,YAAI,MAAM;AAAM,eAAK;AAAA;AAChB,mBAAS,IAAI,GAAG,GAAG;AAExB,QAAAY,KAAI,SAAS,KAAK,QAAQ;AAE1B,YAAI,QAAQ;AAGV,cAAI,OAAO,iBAAiB;AAE1B,YAAAD,KAAI,OAAO,gBAAgB,IAAI,YAAYC,MAAK,CAAC,CAAC;AAElD,mBAAOP,KAAIO,MAAI;AAQb,cAAAX,KAAIU,GAAEN,EAAC,IAAI,UAAWM,GAAEN,KAAI,CAAC,MAAM;AAMnC,kBAAIJ,MAAK,MAAM;AACb,gBAAAC,KAAI,OAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC;AAC7C,gBAAAS,GAAEN,EAAC,IAAIH,GAAE,CAAC;AACV,gBAAAS,GAAEN,KAAI,CAAC,IAAIH,GAAE,CAAC;AAAA,cAChB,OAAO;AAIL,gBAAAC,GAAE,KAAKF,KAAI,IAAI;AACf,gBAAAI,MAAK;AAAA,cACP;AAAA,YACF;AACA,YAAAA,KAAIO,KAAI;AAAA,UAGV,WAAW,OAAO,aAAa;AAG7B,YAAAD,KAAI,OAAO,YAAYC,MAAK,CAAC;AAE7B,mBAAOP,KAAIO,MAAI;AAMb,cAAAX,MAAMU,GAAEN,EAAC,IAAI,MAAM,kBAAoBM,GAAEN,KAAI,CAAC,IAAI,gBAC9CM,GAAEN,KAAI,CAAC,IAAI,aAAgBM,GAAEN,KAAI,CAAC,IAAI,YACtCM,GAAEN,KAAI,CAAC,KAAK,OAAOM,GAAEN,KAAI,CAAC,KAAK,KAAKM,GAAEN,KAAI,CAAC;AAE/C,kBAAIJ,MAAK,MAAM;AACb,uBAAO,YAAY,CAAC,EAAE,KAAKU,IAAGN,EAAC;AAAA,cACjC,OAAO;AAGL,gBAAAF,GAAE,KAAKF,KAAI,IAAI;AACf,gBAAAI,MAAK;AAAA,cACP;AAAA,YACF;AACA,YAAAA,KAAIO,KAAI;AAAA,UACV,OAAO;AACL,qBAAS;AACT,kBAAM,MACJ,iBAAiB,oBAAoB;AAAA,UACzC;AAAA,QACF;AAGA,YAAI,CAAC,QAAQ;AAEX,iBAAOP,KAAIO,MAAI;AACb,YAAAX,KAAI,eAAe;AACnB,gBAAIA,KAAI;AAAM,cAAAE,GAAEE,IAAG,IAAIJ,KAAI;AAAA,UAC7B;AAAA,QACF;AAEA,QAAAW,KAAIT,GAAE,EAAEE,EAAC;AACT,cAAM;AAGN,YAAIO,MAAK,IAAI;AACX,UAAAX,KAAI,SAAS,WAAW,EAAE;AAC1B,UAAAE,GAAEE,EAAC,IAAI,UAAUO,KAAIX,EAAC,IAAIA;AAAA,QAC5B;AAGA,eAAOE,GAAEE,EAAC,MAAM,GAAGF,GAAE,IAAI,GAAGE;AAAI;AAGhC,YAAIA,KAAI,GAAG;AACT,UAAAF,KAAI,CAACC,KAAI,CAAC;AAAA,QACZ,OAAO;AAGL,eAAKA,KAAI,IAAKD,GAAE,CAAC,MAAM,GAAGA,GAAE,OAAO,GAAG,CAAC,GAAGC,MAAK;AAAS;AAGxD,eAAKC,KAAI,GAAGJ,KAAIE,GAAE,CAAC,GAAGF,MAAK,IAAIA,MAAK,IAAII;AAAI;AAG5C,cAAIA,KAAI;AAAU,YAAAD,MAAK,WAAWC;AAAA,QACpC;AAEA,aAAK,IAAID;AACT,aAAK,IAAID;AACT,eAAO;AAAA,MACT;AAAA,IACF,EAAG;AAQH,IAAAH,WAAU,MAAM,WAAY;AAC1B,UAAIK,KAAI,GACN,OAAO,WACP,MAAM,IAAIL,WAAU,KAAK,CAAC,CAAC;AAC7B,aAAOK,KAAI,KAAK;AAAS,cAAM,IAAI,KAAK,KAAKA,IAAG,CAAC;AACjD,aAAO;AAAA,IACT;AAOA,kBAAe,WAAY;AACzB,UAAI,UAAU;AAOd,eAAS,UAAU,KAAK,QAAQ,SAAS,UAAU;AACjD,YAAIQ,IACF,MAAM,CAAC,CAAC,GACR,MACAR,KAAI,GACJ,MAAM,IAAI;AAEZ,eAAOA,KAAI,OAAM;AACf,eAAK,OAAO,IAAI,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAAO;AAEpD,cAAI,CAAC,KAAK,SAAS,QAAQ,IAAI,OAAOA,IAAG,CAAC;AAE1C,eAAKQ,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AAE/B,gBAAI,IAAIA,EAAC,IAAI,UAAU,GAAG;AACxB,kBAAI,IAAIA,KAAI,CAAC,KAAK;AAAM,oBAAIA,KAAI,CAAC,IAAI;AACrC,kBAAIA,KAAI,CAAC,KAAK,IAAIA,EAAC,IAAI,UAAU;AACjC,kBAAIA,EAAC,KAAK;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAEA,eAAO,IAAI,QAAQ;AAAA,MACrB;AAKA,aAAO,SAAU,KAAK,QAAQ,SAASC,OAAM,kBAAkB;AAC7D,YAAI,UAAUC,IAAGX,IAAGQ,IAAGI,IAAGV,IAAG,IAAIW,IAC/BZ,KAAI,IAAI,QAAQ,GAAG,GACnB,KAAK,gBACL,KAAK;AAGP,YAAIA,MAAK,GAAG;AACV,UAAAO,KAAI;AAGJ,0BAAgB;AAChB,gBAAM,IAAI,QAAQ,KAAK,EAAE;AACzB,UAAAK,KAAI,IAAIjB,WAAU,MAAM;AACxB,UAAAM,KAAIW,GAAE,IAAI,IAAI,SAASZ,EAAC;AACxB,0BAAgBO;AAKhB,UAAAK,GAAE,IAAI;AAAA,YAAU,aAAa,cAAcX,GAAE,CAAC,GAAGA,GAAE,GAAG,GAAG;AAAA,YACxD;AAAA,YAAI;AAAA,YAAS;AAAA,UAAO;AACrB,UAAAW,GAAE,IAAIA,GAAE,EAAE;AAAA,QACZ;AAIA,aAAK,UAAU,KAAK,QAAQ,SAAS,oBACjC,WAAW,UAAU,YACrB,WAAW,SAAS,SAAS;AAGjC,QAAAb,KAAIQ,KAAI,GAAG;AAGX,eAAO,GAAG,EAAEA,EAAC,KAAK,GAAG,GAAG,IAAI;AAAE;AAG9B,YAAI,CAAC,GAAG,CAAC;AAAG,iBAAO,SAAS,OAAO,CAAC;AAGpC,YAAIP,KAAI,GAAG;AACT,YAAED;AAAA,QACJ,OAAO;AACL,UAAAE,GAAE,IAAI;AACN,UAAAA,GAAE,IAAIF;AAGN,UAAAE,GAAE,IAAIQ;AACN,UAAAR,KAAI,IAAIA,IAAGW,IAAG,IAAI,IAAI,OAAO;AAC7B,eAAKX,GAAE;AACP,UAAAU,KAAIV,GAAE;AACN,UAAAF,KAAIE,GAAE;AAAA,QACR;AAKA,QAAAS,KAAIX,KAAI,KAAK;AAGb,QAAAC,KAAI,GAAGU,EAAC;AAIR,QAAAH,KAAI,UAAU;AACd,QAAAI,KAAIA,MAAKD,KAAI,KAAK,GAAGA,KAAI,CAAC,KAAK;AAE/B,QAAAC,KAAI,KAAK,KAAKX,MAAK,QAAQW,QAAO,MAAM,KAAK,OAAOV,GAAE,IAAI,IAAI,IAAI,MAC1DD,KAAIO,MAAKP,MAAKO,OAAK,MAAM,KAAKI,MAAK,MAAM,KAAK,GAAGD,KAAI,CAAC,IAAI,KAC3D,OAAOT,GAAE,IAAI,IAAI,IAAI;AAK5B,YAAIS,KAAI,KAAK,CAAC,GAAG,CAAC,GAAG;AAGnB,gBAAMC,KAAI,aAAa,SAAS,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,OAAO,CAAC,CAAC,IAAI,SAAS,OAAO,CAAC;AAAA,QACzF,OAAO;AAGL,aAAG,SAASD;AAGZ,cAAIC,IAAG;AAGL,iBAAK,EAAE,SAAS,EAAE,GAAG,EAAED,EAAC,IAAI,WAAU;AACpC,iBAAGA,EAAC,IAAI;AAER,kBAAI,CAACA,IAAG;AACN,kBAAEX;AACF,qBAAK,CAAC,CAAC,EAAE,OAAO,EAAE;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AAGA,eAAKQ,KAAI,GAAG,QAAQ,CAAC,GAAG,EAAEA,EAAC;AAAG;AAG9B,eAAKP,KAAI,GAAG,MAAM,IAAIA,MAAKO,IAAG,OAAO,SAAS,OAAO,GAAGP,IAAG,CAAC;AAAE;AAG9D,gBAAM,aAAa,KAAKD,IAAG,SAAS,OAAO,CAAC,CAAC;AAAA,QAC/C;AAGA,eAAO;AAAA,MACT;AAAA,IACF,EAAG;AAIH,UAAO,WAAY;AAGjB,eAAS,SAASE,IAAGM,IAAG,MAAM;AAC5B,YAAIM,IAAG,MAAM,KAAK,KAChB,QAAQ,GACRb,KAAIC,GAAE,QACN,MAAMM,KAAI,WACV,MAAMA,KAAI,YAAY;AAExB,aAAKN,KAAIA,GAAE,MAAM,GAAGD,QAAM;AACxB,gBAAMC,GAAED,EAAC,IAAI;AACb,gBAAMC,GAAED,EAAC,IAAI,YAAY;AACzB,UAAAa,KAAI,MAAM,MAAM,MAAM;AACtB,iBAAO,MAAM,MAAQA,KAAI,YAAa,YAAa;AACnD,mBAAS,OAAO,OAAO,MAAMA,KAAI,YAAY,KAAK,MAAM;AACxD,UAAAZ,GAAED,EAAC,IAAI,OAAO;AAAA,QAChB;AAEA,YAAI;AAAO,UAAAC,KAAI,CAAC,KAAK,EAAE,OAAOA,EAAC;AAE/B,eAAOA;AAAA,MACT;AAEA,eAASa,SAAQR,IAAGT,IAAG,IAAI,IAAI;AAC7B,YAAIG,IAAG;AAEP,YAAI,MAAM,IAAI;AACZ,gBAAM,KAAK,KAAK,IAAI;AAAA,QACtB,OAAO;AAEL,eAAKA,KAAI,MAAM,GAAGA,KAAI,IAAIA,MAAK;AAE7B,gBAAIM,GAAEN,EAAC,KAAKH,GAAEG,EAAC,GAAG;AAChB,oBAAMM,GAAEN,EAAC,IAAIH,GAAEG,EAAC,IAAI,IAAI;AACxB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAASe,UAAST,IAAGT,IAAG,IAAI,MAAM;AAChC,YAAIG,KAAI;AAGR,eAAO,QAAO;AACZ,UAAAM,GAAE,EAAE,KAAKN;AACT,UAAAA,KAAIM,GAAE,EAAE,IAAIT,GAAE,EAAE,IAAI,IAAI;AACxB,UAAAS,GAAE,EAAE,IAAIN,KAAI,OAAOM,GAAE,EAAE,IAAIT,GAAE,EAAE;AAAA,QACjC;AAGA,eAAO,CAACS,GAAE,CAAC,KAAKA,GAAE,SAAS,GAAGA,GAAE,OAAO,GAAG,CAAC;AAAE;AAAA,MAC/C;AAGA,aAAO,SAAUL,IAAGW,IAAG,IAAI,IAAI,MAAM;AACnC,YAAI,KAAKb,IAAGC,IAAG,MAAMI,IAAG,MAAM,OAAOY,IAAG,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,KACnE,IAAI,IACJX,KAAIJ,GAAE,KAAKW,GAAE,IAAI,IAAI,IACrB,KAAKX,GAAE,GACP,KAAKW,GAAE;AAGT,YAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;AAElC,iBAAO,IAAIjB;AAAA;AAAA,YAGV,CAACM,GAAE,KAAK,CAACW,GAAE,MAAM,KAAK,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM;AAAA;AAAA,cAGnD,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,KAAKP,KAAI,IAAIA,KAAI;AAAA;AAAA,UACzC;AAAA,QACD;AAEA,QAAAW,KAAI,IAAIrB,WAAUU,EAAC;AACnB,aAAKW,GAAE,IAAI,CAAC;AACZ,QAAAjB,KAAIE,GAAE,IAAIW,GAAE;AACZ,QAAAP,KAAI,KAAKN,KAAI;AAEb,YAAI,CAAC,MAAM;AACT,iBAAO;AACP,UAAAA,KAAI,SAASE,GAAE,IAAI,QAAQ,IAAI,SAASW,GAAE,IAAI,QAAQ;AACtD,UAAAP,KAAIA,KAAI,WAAW;AAAA,QACrB;AAIA,aAAKL,KAAI,GAAG,GAAGA,EAAC,MAAM,GAAGA,EAAC,KAAK,IAAIA;AAAI;AAEvC,YAAI,GAAGA,EAAC,KAAK,GAAGA,EAAC,KAAK;AAAI,UAAAD;AAE1B,YAAIM,KAAI,GAAG;AACT,aAAG,KAAK,CAAC;AACT,iBAAO;AAAA,QACT,OAAO;AACL,eAAK,GAAG;AACR,eAAK,GAAG;AACR,UAAAL,KAAI;AACJ,UAAAK,MAAK;AAIL,UAAAD,KAAI,UAAU,QAAQ,GAAG,CAAC,IAAI,EAAE;AAIhC,cAAIA,KAAI,GAAG;AACT,iBAAK,SAAS,IAAIA,IAAG,IAAI;AACzB,iBAAK,SAAS,IAAIA,IAAG,IAAI;AACzB,iBAAK,GAAG;AACR,iBAAK,GAAG;AAAA,UACV;AAEA,eAAK;AACL,gBAAM,GAAG,MAAM,GAAG,EAAE;AACpB,iBAAO,IAAI;AAGX,iBAAO,OAAO,IAAI,IAAI,MAAM,IAAI;AAAE;AAClC,eAAK,GAAG,MAAM;AACd,eAAK,CAAC,CAAC,EAAE,OAAO,EAAE;AAClB,gBAAM,GAAG,CAAC;AACV,cAAI,GAAG,CAAC,KAAK,OAAO;AAAG;AAIvB,aAAG;AACD,YAAAA,KAAI;AAGJ,kBAAMU,SAAQ,IAAI,KAAK,IAAI,IAAI;AAG/B,gBAAI,MAAM,GAAG;AAIX,qBAAO,IAAI,CAAC;AACZ,kBAAI,MAAM;AAAM,uBAAO,OAAO,QAAQ,IAAI,CAAC,KAAK;AAGhD,cAAAV,KAAI,UAAU,OAAO,GAAG;AAaxB,kBAAIA,KAAI,GAAG;AAGT,oBAAIA,MAAK;AAAM,kBAAAA,KAAI,OAAO;AAG1B,uBAAO,SAAS,IAAIA,IAAG,IAAI;AAC3B,wBAAQ,KAAK;AACb,uBAAO,IAAI;AAMX,uBAAOU,SAAQ,MAAM,KAAK,OAAO,IAAI,KAAK,GAAG;AAC3C,kBAAAV;AAGA,kBAAAW,UAAS,MAAM,KAAK,QAAQ,KAAK,IAAI,OAAO,IAAI;AAChD,0BAAQ,KAAK;AACb,wBAAM;AAAA,gBACR;AAAA,cACF,OAAO;AAML,oBAAIX,MAAK,GAAG;AAGV,wBAAMA,KAAI;AAAA,gBACZ;AAGA,uBAAO,GAAG,MAAM;AAChB,wBAAQ,KAAK;AAAA,cACf;AAEA,kBAAI,QAAQ;AAAM,uBAAO,CAAC,CAAC,EAAE,OAAO,IAAI;AAGxC,cAAAW,UAAS,KAAK,MAAM,MAAM,IAAI;AAC9B,qBAAO,IAAI;AAGX,kBAAI,OAAO,IAAI;AAMb,uBAAOD,SAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG;AACrC,kBAAAV;AAGA,kBAAAW,UAAS,KAAK,KAAK,OAAO,KAAK,IAAI,MAAM,IAAI;AAC7C,yBAAO,IAAI;AAAA,gBACb;AAAA,cACF;AAAA,YACF,WAAW,QAAQ,GAAG;AACpB,cAAAX;AACA,oBAAM,CAAC,CAAC;AAAA,YACV;AAGA,eAAGJ,IAAG,IAAII;AAGV,gBAAI,IAAI,CAAC,GAAG;AACV,kBAAI,MAAM,IAAI,GAAG,EAAE,KAAK;AAAA,YAC1B,OAAO;AACL,oBAAM,CAAC,GAAG,EAAE,CAAC;AACb,qBAAO;AAAA,YACT;AAAA,UACF,UAAU,OAAO,MAAM,IAAI,CAAC,KAAK,SAASC;AAE1C,iBAAO,IAAI,CAAC,KAAK;AAGjB,cAAI,CAAC,GAAG,CAAC;AAAG,eAAG,OAAO,GAAG,CAAC;AAAA,QAC5B;AAEA,YAAI,QAAQ,MAAM;AAGhB,eAAKL,KAAI,GAAGK,KAAI,GAAG,CAAC,GAAGA,MAAK,IAAIA,MAAK,IAAIL;AAAI;AAE7C,UAAAE,OAAMc,IAAG,MAAMA,GAAE,IAAIhB,KAAID,KAAI,WAAW,KAAK,GAAG,IAAI,IAAI;AAAA,QAG1D,OAAO;AACL,UAAAiB,GAAE,IAAIjB;AACN,UAAAiB,GAAE,IAAI,CAAC;AAAA,QACT;AAEA,eAAOA;AAAA,MACT;AAAA,IACF,EAAG;AAYH,aAASC,QAAOb,IAAGJ,IAAG,IAAIkB,KAAI;AAC5B,UAAI,IAAInB,IAAG,IAAI,KAAK;AAEpB,UAAI,MAAM;AAAM,aAAK;AAAA;AAChB,iBAAS,IAAI,GAAG,CAAC;AAEtB,UAAI,CAACK,GAAE;AAAG,eAAOA,GAAE,SAAS;AAE5B,WAAKA,GAAE,EAAE,CAAC;AACV,WAAKA,GAAE;AAEP,UAAIJ,MAAK,MAAM;AACb,cAAM,cAAcI,GAAE,CAAC;AACvB,cAAMc,OAAM,KAAKA,OAAM,MAAM,MAAM,cAAc,MAAM,cACpD,cAAc,KAAK,EAAE,IACrB,aAAa,KAAK,IAAI,GAAG;AAAA,MAC9B,OAAO;AACL,QAAAd,KAAIF,OAAM,IAAIP,WAAUS,EAAC,GAAGJ,IAAG,EAAE;AAGjC,QAAAD,KAAIK,GAAE;AAEN,cAAM,cAAcA,GAAE,CAAC;AACvB,cAAM,IAAI;AAOV,YAAIc,OAAM,KAAKA,OAAM,MAAMlB,MAAKD,MAAKA,MAAK,aAAa;AAGrD,iBAAO,MAAMC,IAAG,OAAO,KAAK;AAAM;AAClC,gBAAM,cAAc,KAAKD,EAAC;AAAA,QAG5B,OAAO;AACL,UAAAC,MAAK;AACL,gBAAM,aAAa,KAAKD,IAAG,GAAG;AAG9B,cAAIA,KAAI,IAAI,KAAK;AACf,gBAAI,EAAEC,KAAI;AAAG,mBAAK,OAAO,KAAKA,MAAK,OAAO;AAAI;AAAA,UAChD,OAAO;AACL,YAAAA,MAAKD,KAAI;AACT,gBAAIC,KAAI,GAAG;AACT,kBAAID,KAAI,KAAK;AAAK,uBAAO;AACzB,qBAAOC,MAAK,OAAO;AAAI;AAAA,YACzB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAOI,GAAE,IAAI,KAAK,KAAK,MAAM,MAAM;AAAA,IACrC;AAKA,aAAS,SAAS,MAAMA,IAAG;AACzB,UAAIG,IAAGK,IACLZ,KAAI,GACJC,KAAI,IAAIN,WAAU,KAAK,CAAC,CAAC;AAE3B,aAAOK,KAAI,KAAK,QAAQA,MAAK;AAC3B,QAAAY,KAAI,IAAIjB,WAAU,KAAKK,EAAC,CAAC;AACzB,YAAI,CAACY,GAAE,MAAML,KAAI,QAAQN,IAAGW,EAAC,OAAOR,MAAKG,OAAM,KAAKN,GAAE,MAAMG,IAAG;AAC7D,UAAAH,KAAIW;AAAA,QACN;AAAA,MACF;AAEA,aAAOX;AAAA,IACT;AAOA,aAAS,UAAUG,IAAGN,IAAGC,IAAG;AAC1B,UAAIC,KAAI,GACNQ,KAAIV,GAAE;AAGR,aAAO,CAACA,GAAE,EAAEU,EAAC,GAAGV,GAAE,IAAI;AAAE;AAGxB,WAAKU,KAAIV,GAAE,CAAC,GAAGU,MAAK,IAAIA,MAAK,IAAIR;AAAI;AAGrC,WAAKD,KAAIC,KAAID,KAAI,WAAW,KAAK,SAAS;AAGxC,QAAAK,GAAE,IAAIA,GAAE,IAAI;AAAA,MAGd,WAAWL,KAAI,SAAS;AAGtB,QAAAK,GAAE,IAAI,CAACA,GAAE,IAAI,CAAC;AAAA,MAChB,OAAO;AACL,QAAAA,GAAE,IAAIL;AACN,QAAAK,GAAE,IAAIN;AAAA,MACR;AAEA,aAAOM;AAAA,IACT;AAIA,mBAAgB,WAAY;AAC1B,UAAI,aAAa,+BACf,WAAW,eACX,YAAY,eACZ,kBAAkB,sBAClB,mBAAmB;AAErB,aAAO,SAAUH,IAAG,KAAK,OAAOJ,IAAG;AACjC,YAAI,MACFQ,KAAI,QAAQ,MAAM,IAAI,QAAQ,kBAAkB,EAAE;AAGpD,YAAI,gBAAgB,KAAKA,EAAC,GAAG;AAC3B,UAAAJ,GAAE,IAAI,MAAMI,EAAC,IAAI,OAAOA,KAAI,IAAI,KAAK;AAAA,QACvC,OAAO;AACL,cAAI,CAAC,OAAO;AAGV,YAAAA,KAAIA,GAAE,QAAQ,YAAY,SAAUQ,IAAG,IAAIM,KAAI;AAC7C,sBAAQA,MAAKA,IAAG,YAAY,MAAM,MAAM,KAAKA,OAAM,MAAM,IAAI;AAC7D,qBAAO,CAACtB,MAAKA,MAAK,OAAO,KAAKgB;AAAA,YAChC,CAAC;AAED,gBAAIhB,IAAG;AACL,qBAAOA;AAGP,cAAAQ,KAAIA,GAAE,QAAQ,UAAU,IAAI,EAAE,QAAQ,WAAW,MAAM;AAAA,YACzD;AAEA,gBAAI,OAAOA;AAAG,qBAAO,IAAIV,WAAUU,IAAG,IAAI;AAAA,UAC5C;AAIA,cAAIV,WAAU,OAAO;AACnB,kBAAM,MACH,iBAAiB,WAAWE,KAAI,WAAWA,KAAI,MAAM,cAAc,GAAG;AAAA,UAC3E;AAGA,UAAAI,GAAE,IAAI;AAAA,QACR;AAEA,QAAAA,GAAE,IAAIA,GAAE,IAAI;AAAA,MACd;AAAA,IACF,EAAG;AAOH,aAASC,OAAMD,IAAG,IAAI,IAAIU,IAAG;AAC3B,UAAID,IAAGV,IAAGQ,IAAGD,IAAGH,IAAG,IAAI,IACrB,KAAKH,GAAE,GACP,SAAS;AAGX,UAAI,IAAI;AAQN,aAAK;AAGH,eAAKS,KAAI,GAAGH,KAAI,GAAG,CAAC,GAAGA,MAAK,IAAIA,MAAK,IAAIG;AAAI;AAC7C,UAAAV,KAAI,KAAKU;AAGT,cAAIV,KAAI,GAAG;AACT,YAAAA,MAAK;AACL,YAAAQ,KAAI;AACJ,YAAAJ,KAAI,GAAG,KAAK,CAAC;AAGb,iBAAK,UAAUA,KAAI,OAAOM,KAAIF,KAAI,CAAC,IAAI,EAAE;AAAA,UAC3C,OAAO;AACL,iBAAK,UAAUR,KAAI,KAAK,QAAQ;AAEhC,gBAAI,MAAM,GAAG,QAAQ;AAEnB,kBAAIW,IAAG;AAGL,uBAAO,GAAG,UAAU,IAAI,GAAG,KAAK,CAAC;AAAE;AACnC,gBAAAP,KAAI,KAAK;AACT,gBAAAM,KAAI;AACJ,gBAAAV,MAAK;AACL,gBAAAQ,KAAIR,KAAI,WAAW;AAAA,cACrB,OAAO;AACL,sBAAM;AAAA,cACR;AAAA,YACF,OAAO;AACL,cAAAI,KAAIG,KAAI,GAAG,EAAE;AAGb,mBAAKG,KAAI,GAAGH,MAAK,IAAIA,MAAK,IAAIG;AAAI;AAGlC,cAAAV,MAAK;AAIL,cAAAQ,KAAIR,KAAI,WAAWU;AAGnB,mBAAKF,KAAI,IAAI,IAAI,UAAUJ,KAAI,OAAOM,KAAIF,KAAI,CAAC,IAAI,EAAE;AAAA,YACvD;AAAA,UACF;AAEA,UAAAG,KAAIA,MAAK,KAAK;AAAA;AAAA;AAAA,UAKb,GAAG,KAAK,CAAC,KAAK,SAASH,KAAI,IAAIJ,KAAIA,KAAI,OAAOM,KAAIF,KAAI,CAAC;AAExD,UAAAG,KAAI,KAAK,KACL,MAAMA,QAAO,MAAM,KAAK,OAAOV,GAAE,IAAI,IAAI,IAAI,MAC9C,KAAK,KAAK,MAAM,MAAM,MAAM,KAAKU,MAAK,MAAM;AAAA,WAG3CX,KAAI,IAAIQ,KAAI,IAAIJ,KAAI,OAAOM,KAAIF,EAAC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,KAAM,KAC7D,OAAOP,GAAE,IAAI,IAAI,IAAI;AAExB,cAAI,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG;AACpB,eAAG,SAAS;AAEZ,gBAAIU,IAAG;AAGL,oBAAMV,GAAE,IAAI;AAGZ,iBAAG,CAAC,IAAI,QAAQ,WAAW,KAAK,YAAY,QAAQ;AACpD,cAAAA,GAAE,IAAI,CAAC,MAAM;AAAA,YACf,OAAO;AAGL,iBAAG,CAAC,IAAIA,GAAE,IAAI;AAAA,YAChB;AAEA,mBAAOA;AAAA,UACT;AAGA,cAAID,MAAK,GAAG;AACV,eAAG,SAAS;AACZ,YAAAO,KAAI;AACJ;AAAA,UACF,OAAO;AACL,eAAG,SAAS,KAAK;AACjB,YAAAA,KAAI,OAAO,WAAWP,EAAC;AAIvB,eAAG,EAAE,IAAIQ,KAAI,IAAI,UAAUJ,KAAI,OAAOM,KAAIF,EAAC,IAAI,OAAOA,EAAC,CAAC,IAAID,KAAI;AAAA,UAClE;AAGA,cAAII,IAAG;AAEL,uBAAU;AAGR,kBAAI,MAAM,GAAG;AAGX,qBAAKX,KAAI,GAAGQ,KAAI,GAAG,CAAC,GAAGA,MAAK,IAAIA,MAAK,IAAIR;AAAI;AAC7C,gBAAAQ,KAAI,GAAG,CAAC,KAAKD;AACb,qBAAKA,KAAI,GAAGC,MAAK,IAAIA,MAAK,IAAID;AAAI;AAGlC,oBAAIP,MAAKO,IAAG;AACV,kBAAAN,GAAE;AACF,sBAAI,GAAG,CAAC,KAAK;AAAM,uBAAG,CAAC,IAAI;AAAA,gBAC7B;AAEA;AAAA,cACF,OAAO;AACL,mBAAG,EAAE,KAAKM;AACV,oBAAI,GAAG,EAAE,KAAK;AAAM;AACpB,mBAAG,IAAI,IAAI;AACX,gBAAAA,KAAI;AAAA,cACN;AAAA,YACF;AAAA,UACF;AAGA,eAAKP,KAAI,GAAG,QAAQ,GAAG,EAAEA,EAAC,MAAM,GAAG,GAAG,IAAI;AAAE;AAAA,QAC9C;AAGA,YAAIC,GAAE,IAAI,SAAS;AACjB,UAAAA,GAAE,IAAIA,GAAE,IAAI;AAAA,QAGd,WAAWA,GAAE,IAAI,SAAS;AACxB,UAAAA,GAAE,IAAI,CAACA,GAAE,IAAI,CAAC;AAAA,QAChB;AAAA,MACF;AAEA,aAAOA;AAAA,IACT;AAGA,aAAS,QAAQG,IAAG;AAClB,UAAI,KACFL,KAAIK,GAAE;AAER,UAAIL,OAAM;AAAM,eAAOK,GAAE,SAAS;AAElC,YAAM,cAAcA,GAAE,CAAC;AAEvB,YAAML,MAAK,cAAcA,MAAK,aAC1B,cAAc,KAAKA,EAAC,IACpB,aAAa,KAAKA,IAAG,GAAG;AAE5B,aAAOK,GAAE,IAAI,IAAI,MAAM,MAAM;AAAA,IAC/B;AASA,IAAAV,GAAE,gBAAgBA,GAAE,MAAM,WAAY;AACpC,UAAIO,KAAI,IAAIN,WAAU,IAAI;AAC1B,UAAIM,GAAE,IAAI;AAAG,QAAAA,GAAE,IAAI;AACnB,aAAOA;AAAA,IACT;AAUA,IAAAP,GAAE,aAAa,SAAUkB,IAAGf,IAAG;AAC7B,aAAO,QAAQ,MAAM,IAAIF,WAAUiB,IAAGf,EAAC,CAAC;AAAA,IAC1C;AAgBA,IAAAH,GAAE,gBAAgBA,GAAE,KAAK,SAAU,IAAI,IAAI;AACzC,UAAII,IAAGM,IAAGR,IACRK,KAAI;AAEN,UAAI,MAAM,MAAM;AACd,iBAAS,IAAI,GAAG,GAAG;AACnB,YAAI,MAAM;AAAM,eAAK;AAAA;AAChB,mBAAS,IAAI,GAAG,CAAC;AAEtB,eAAOC,OAAM,IAAIP,WAAUM,EAAC,GAAG,KAAKA,GAAE,IAAI,GAAG,EAAE;AAAA,MACjD;AAEA,UAAI,EAAEH,KAAIG,GAAE;AAAI,eAAO;AACvB,MAAAG,OAAMR,KAAIE,GAAE,SAAS,KAAK,SAAS,KAAK,IAAI,QAAQ,KAAK;AAGzD,UAAIF,KAAIE,GAAEF,EAAC;AAAG,eAAOA,KAAI,MAAM,GAAGA,MAAK,IAAIQ;AAAI;AAC/C,UAAIA,KAAI;AAAG,QAAAA,KAAI;AAEf,aAAOA;AAAA,IACT;AAuBA,IAAAV,GAAE,YAAYA,GAAE,MAAM,SAAUkB,IAAGf,IAAG;AACpC,aAAO,IAAI,MAAM,IAAIF,WAAUiB,IAAGf,EAAC,GAAG,gBAAgB,aAAa;AAAA,IACrE;AAOA,IAAAH,GAAE,qBAAqBA,GAAE,OAAO,SAAUkB,IAAGf,IAAG;AAC9C,aAAO,IAAI,MAAM,IAAIF,WAAUiB,IAAGf,EAAC,GAAG,GAAG,CAAC;AAAA,IAC5C;AAkBA,IAAAH,GAAE,kBAAkBA,GAAE,MAAM,SAAUU,IAAGS,IAAG;AAC1C,UAAI,MAAM,UAAUb,IAAGO,IAAG,MAAM,QAAQ,QAAQ,QAAQK,IACtDX,KAAI;AAEN,MAAAG,KAAI,IAAIT,WAAUS,EAAC;AAGnB,UAAIA,GAAE,KAAK,CAACA,GAAE,UAAU,GAAG;AACzB,cAAM,MACH,iBAAiB,8BAA8B,QAAQA,EAAC,CAAC;AAAA,MAC9D;AAEA,UAAIS,MAAK;AAAM,QAAAA,KAAI,IAAIlB,WAAUkB,EAAC;AAGlC,eAAST,GAAE,IAAI;AAGf,UAAI,CAACH,GAAE,KAAK,CAACA,GAAE,EAAE,CAAC,KAAKA,GAAE,EAAE,CAAC,KAAK,KAAK,CAACA,GAAE,KAAKA,GAAE,EAAE,UAAU,KAAK,CAACG,GAAE,KAAK,CAACA,GAAE,EAAE,CAAC,GAAG;AAIhF,QAAAQ,KAAI,IAAIjB,WAAU,KAAK,IAAI,CAAC,QAAQM,EAAC,GAAG,SAASG,GAAE,KAAK,IAAI,MAAMA,EAAC,KAAK,CAAC,QAAQA,EAAC,CAAC,CAAC;AACpF,eAAOS,KAAID,GAAE,IAAIC,EAAC,IAAID;AAAA,MACxB;AAEA,eAASR,GAAE,IAAI;AAEf,UAAIS,IAAG;AAGL,YAAIA,GAAE,IAAI,CAACA,GAAE,EAAE,CAAC,IAAI,CAACA,GAAE;AAAG,iBAAO,IAAIlB,WAAU,GAAG;AAElD,mBAAW,CAAC,UAAUM,GAAE,UAAU,KAAKY,GAAE,UAAU;AAEnD,YAAI;AAAU,UAAAZ,KAAIA,GAAE,IAAIY,EAAC;AAAA,MAI3B,WAAWT,GAAE,IAAI,MAAMH,GAAE,IAAI,KAAKA,GAAE,IAAI,OAAOA,GAAE,KAAK,IAElDA,GAAE,EAAE,CAAC,IAAI,KAAK,UAAUA,GAAE,EAAE,CAAC,KAAK,OAElCA,GAAE,EAAE,CAAC,IAAI,QAAQ,UAAUA,GAAE,EAAE,CAAC,KAAK,aAAa;AAGpD,QAAAM,KAAIN,GAAE,IAAI,KAAK,MAAMG,EAAC,IAAI,KAAK;AAG/B,YAAIH,GAAE,IAAI;AAAI,UAAAM,KAAI,IAAIA;AAGtB,eAAO,IAAIZ,WAAU,SAAS,IAAIY,KAAIA,EAAC;AAAA,MAEzC,WAAW,eAAe;AAKxB,QAAAA,KAAI,SAAS,gBAAgB,WAAW,CAAC;AAAA,MAC3C;AAEA,UAAI,QAAQ;AACV,eAAO,IAAIZ,WAAU,GAAG;AACxB,YAAI;AAAQ,UAAAS,GAAE,IAAI;AAClB,iBAAS,MAAMA,EAAC;AAAA,MAClB,OAAO;AACL,QAAAJ,KAAI,KAAK,IAAI,CAAC,QAAQI,EAAC,CAAC;AACxB,iBAASJ,KAAI;AAAA,MACf;AAEA,MAAAY,KAAI,IAAIjB,WAAU,GAAG;AAGrB,iBAAU;AAER,YAAI,QAAQ;AACV,UAAAiB,KAAIA,GAAE,MAAMX,EAAC;AACb,cAAI,CAACW,GAAE;AAAG;AAEV,cAAIL,IAAG;AACL,gBAAIK,GAAE,EAAE,SAASL;AAAG,cAAAK,GAAE,EAAE,SAASL;AAAA,UACnC,WAAW,UAAU;AACnB,YAAAK,KAAIA,GAAE,IAAIC,EAAC;AAAA,UACb;AAAA,QACF;AAEA,YAAIb,IAAG;AACL,UAAAA,KAAI,UAAUA,KAAI,CAAC;AACnB,cAAIA,OAAM;AAAG;AACb,mBAASA,KAAI;AAAA,QACf,OAAO;AACL,UAAAI,KAAIA,GAAE,MAAM,IAAI;AAChB,UAAAF,OAAME,IAAGA,GAAE,IAAI,GAAG,CAAC;AAEnB,cAAIA,GAAE,IAAI,IAAI;AACZ,qBAAS,MAAMA,EAAC;AAAA,UAClB,OAAO;AACL,YAAAJ,KAAI,CAAC,QAAQI,EAAC;AACd,gBAAIJ,OAAM;AAAG;AACb,qBAASA,KAAI;AAAA,UACf;AAAA,QACF;AAEA,QAAAC,KAAIA,GAAE,MAAMA,EAAC;AAEb,YAAIM,IAAG;AACL,cAAIN,GAAE,KAAKA,GAAE,EAAE,SAASM;AAAG,YAAAN,GAAE,EAAE,SAASM;AAAA,QAC1C,WAAW,UAAU;AACnB,UAAAN,KAAIA,GAAE,IAAIY,EAAC;AAAA,QACb;AAAA,MACF;AAEA,UAAI;AAAU,eAAOD;AACrB,UAAI;AAAQ,QAAAA,KAAI,IAAI,IAAIA,EAAC;AAEzB,aAAOC,KAAID,GAAE,IAAIC,EAAC,IAAIN,KAAIL,OAAMU,IAAG,eAAe,eAAe,IAAI,IAAIA;AAAA,IAC3E;AAWA,IAAAlB,GAAE,eAAe,SAAU,IAAI;AAC7B,UAAIU,KAAI,IAAIT,WAAU,IAAI;AAC1B,UAAI,MAAM;AAAM,aAAK;AAAA;AAChB,iBAAS,IAAI,GAAG,CAAC;AACtB,aAAOO,OAAME,IAAGA,GAAE,IAAI,GAAG,EAAE;AAAA,IAC7B;AAOA,IAAAV,GAAE,YAAYA,GAAE,KAAK,SAAUkB,IAAGf,IAAG;AACnC,aAAO,QAAQ,MAAM,IAAIF,WAAUiB,IAAGf,EAAC,CAAC,MAAM;AAAA,IAChD;AAMA,IAAAH,GAAE,WAAW,WAAY;AACvB,aAAO,CAAC,CAAC,KAAK;AAAA,IAChB;AAOA,IAAAA,GAAE,gBAAgBA,GAAE,KAAK,SAAUkB,IAAGf,IAAG;AACvC,aAAO,QAAQ,MAAM,IAAIF,WAAUiB,IAAGf,EAAC,CAAC,IAAI;AAAA,IAC9C;AAOA,IAAAH,GAAE,yBAAyBA,GAAE,MAAM,SAAUkB,IAAGf,IAAG;AACjD,cAAQA,KAAI,QAAQ,MAAM,IAAIF,WAAUiB,IAAGf,EAAC,CAAC,OAAO,KAAKA,OAAM;AAAA,IAEjE;AAMA,IAAAH,GAAE,YAAY,WAAY;AACxB,aAAO,CAAC,CAAC,KAAK,KAAK,SAAS,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,SAAS;AAAA,IACnE;AAOA,IAAAA,GAAE,aAAaA,GAAE,KAAK,SAAUkB,IAAGf,IAAG;AACpC,aAAO,QAAQ,MAAM,IAAIF,WAAUiB,IAAGf,EAAC,CAAC,IAAI;AAAA,IAC9C;AAOA,IAAAH,GAAE,sBAAsBA,GAAE,MAAM,SAAUkB,IAAGf,IAAG;AAC9C,cAAQA,KAAI,QAAQ,MAAM,IAAIF,WAAUiB,IAAGf,EAAC,CAAC,OAAO,MAAMA,OAAM;AAAA,IAClE;AAMA,IAAAH,GAAE,QAAQ,WAAY;AACpB,aAAO,CAAC,KAAK;AAAA,IACf;AAMA,IAAAA,GAAE,aAAa,WAAY;AACzB,aAAO,KAAK,IAAI;AAAA,IAClB;AAMA,IAAAA,GAAE,aAAa,WAAY;AACzB,aAAO,KAAK,IAAI;AAAA,IAClB;AAMA,IAAAA,GAAE,SAAS,WAAY;AACrB,aAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,KAAK;AAAA,IAClC;AAuBA,IAAAA,GAAE,QAAQ,SAAUkB,IAAGf,IAAG;AACxB,UAAIG,IAAGQ,IAAGY,IAAG,MACXnB,KAAI,MACJK,KAAIL,GAAE;AAER,MAAAW,KAAI,IAAIjB,WAAUiB,IAAGf,EAAC;AACtB,MAAAA,KAAIe,GAAE;AAGN,UAAI,CAACN,MAAK,CAACT;AAAG,eAAO,IAAIF,WAAU,GAAG;AAGtC,UAAIW,MAAKT,IAAG;AACV,QAAAe,GAAE,IAAI,CAACf;AACP,eAAOI,GAAE,KAAKW,EAAC;AAAA,MACjB;AAEA,UAAI,KAAKX,GAAE,IAAI,UACb,KAAKW,GAAE,IAAI,UACX,KAAKX,GAAE,GACP,KAAKW,GAAE;AAET,UAAI,CAAC,MAAM,CAAC,IAAI;AAGd,YAAI,CAAC,MAAM,CAAC;AAAI,iBAAO,MAAMA,GAAE,IAAI,CAACf,IAAGe,MAAK,IAAIjB,WAAU,KAAKM,KAAI,GAAG;AAGtE,YAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AAGpB,iBAAO,GAAG,CAAC,KAAKW,GAAE,IAAI,CAACf,IAAGe,MAAK,IAAIjB,WAAU,GAAG,CAAC,IAAIM;AAAA;AAAA,YAGpD,iBAAiB,IAAI,KAAK;AAAA,WAAC;AAAA,QAC9B;AAAA,MACF;AAEA,WAAK,SAAS,EAAE;AAChB,WAAK,SAAS,EAAE;AAChB,WAAK,GAAG,MAAM;AAGd,UAAIK,KAAI,KAAK,IAAI;AAEf,YAAI,OAAOA,KAAI,GAAG;AAChB,UAAAA,KAAI,CAACA;AACL,UAAAc,KAAI;AAAA,QACN,OAAO;AACL,eAAK;AACL,UAAAA,KAAI;AAAA,QACN;AAEA,QAAAA,GAAE,QAAQ;AAGV,aAAKvB,KAAIS,IAAGT,MAAKuB,GAAE,KAAK,CAAC;AAAE;AAC3B,QAAAA,GAAE,QAAQ;AAAA,MACZ,OAAO;AAGL,QAAAZ,MAAK,QAAQF,KAAI,GAAG,WAAWT,KAAI,GAAG,WAAWS,KAAIT;AAErD,aAAKS,KAAIT,KAAI,GAAGA,KAAIW,IAAGX,MAAK;AAE1B,cAAI,GAAGA,EAAC,KAAK,GAAGA,EAAC,GAAG;AAClB,mBAAO,GAAGA,EAAC,IAAI,GAAGA,EAAC;AACnB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA,UAAI,MAAM;AACR,QAAAuB,KAAI;AACJ,aAAK;AACL,aAAKA;AACL,QAAAR,GAAE,IAAI,CAACA,GAAE;AAAA,MACX;AAEA,MAAAf,MAAKW,KAAI,GAAG,WAAWR,KAAI,GAAG;AAI9B,UAAIH,KAAI;AAAG,eAAOA,MAAK,GAAGG,IAAG,IAAI;AAAE;AACnC,MAAAH,KAAI,OAAO;AAGX,aAAOW,KAAIF,MAAI;AAEb,YAAI,GAAG,EAAEE,EAAC,IAAI,GAAGA,EAAC,GAAG;AACnB,eAAKR,KAAIQ,IAAGR,MAAK,CAAC,GAAG,EAAEA,EAAC,GAAG,GAAGA,EAAC,IAAIH;AAAE;AACrC,YAAE,GAAGG,EAAC;AACN,aAAGQ,EAAC,KAAK;AAAA,QACX;AAEA,WAAGA,EAAC,KAAK,GAAGA,EAAC;AAAA,MACf;AAGA,aAAO,GAAG,CAAC,KAAK,GAAG,GAAG,OAAO,GAAG,CAAC,GAAG,EAAE;AAAG;AAGzC,UAAI,CAAC,GAAG,CAAC,GAAG;AAIV,QAAAI,GAAE,IAAI,iBAAiB,IAAI,KAAK;AAChC,QAAAA,GAAE,IAAI,CAACA,GAAE,IAAI,CAAC;AACd,eAAOA;AAAA,MACT;AAIA,aAAO,UAAUA,IAAG,IAAI,EAAE;AAAA,IAC5B;AAwBA,IAAAlB,GAAE,SAASA,GAAE,MAAM,SAAUkB,IAAGf,IAAG;AACjC,UAAImB,IAAGX,IACLJ,KAAI;AAEN,MAAAW,KAAI,IAAIjB,WAAUiB,IAAGf,EAAC;AAGtB,UAAI,CAACI,GAAE,KAAK,CAACW,GAAE,KAAKA,GAAE,KAAK,CAACA,GAAE,EAAE,CAAC,GAAG;AAClC,eAAO,IAAIjB,WAAU,GAAG;AAAA,MAG1B,WAAW,CAACiB,GAAE,KAAKX,GAAE,KAAK,CAACA,GAAE,EAAE,CAAC,GAAG;AACjC,eAAO,IAAIN,WAAUM,EAAC;AAAA,MACxB;AAEA,UAAI,eAAe,GAAG;AAIpB,QAAAI,KAAIO,GAAE;AACN,QAAAA,GAAE,IAAI;AACN,QAAAI,KAAI,IAAIf,IAAGW,IAAG,GAAG,CAAC;AAClB,QAAAA,GAAE,IAAIP;AACN,QAAAW,GAAE,KAAKX;AAAA,MACT,OAAO;AACL,QAAAW,KAAI,IAAIf,IAAGW,IAAG,GAAG,WAAW;AAAA,MAC9B;AAEA,MAAAA,KAAIX,GAAE,MAAMe,GAAE,MAAMJ,EAAC,CAAC;AAGtB,UAAI,CAACA,GAAE,EAAE,CAAC,KAAK,eAAe;AAAG,QAAAA,GAAE,IAAIX,GAAE;AAEzC,aAAOW;AAAA,IACT;AAuBA,IAAAlB,GAAE,eAAeA,GAAE,QAAQ,SAAUkB,IAAGf,IAAG;AACzC,UAAIC,IAAGC,IAAGC,IAAGQ,IAAGD,IAAGM,IAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAClD,MAAM,UACNZ,KAAI,MACJ,KAAKA,GAAE,GACP,MAAMW,KAAI,IAAIjB,WAAUiB,IAAGf,EAAC,GAAG;AAGjC,UAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AAGlC,YAAI,CAACI,GAAE,KAAK,CAACW,GAAE,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AAC9D,UAAAA,GAAE,IAAIA,GAAE,IAAIA,GAAE,IAAI;AAAA,QACpB,OAAO;AACL,UAAAA,GAAE,KAAKX,GAAE;AAGT,cAAI,CAAC,MAAM,CAAC,IAAI;AACd,YAAAW,GAAE,IAAIA,GAAE,IAAI;AAAA,UAGd,OAAO;AACL,YAAAA,GAAE,IAAI,CAAC,CAAC;AACR,YAAAA,GAAE,IAAI;AAAA,UACR;AAAA,QACF;AAEA,eAAOA;AAAA,MACT;AAEA,MAAAb,KAAI,SAASE,GAAE,IAAI,QAAQ,IAAI,SAASW,GAAE,IAAI,QAAQ;AACtD,MAAAA,GAAE,KAAKX,GAAE;AACT,YAAM,GAAG;AACT,YAAM,GAAG;AAGT,UAAI,MAAM,KAAK;AACb,aAAK;AACL,aAAK;AACL,aAAK;AACL,QAAAD,KAAI;AACJ,cAAM;AACN,cAAMA;AAAA,MACR;AAGA,WAAKA,KAAI,MAAM,KAAK,KAAK,CAAC,GAAGA,MAAK,GAAG,KAAK,CAAC;AAAE;AAE7C,aAAO;AACP,iBAAW;AAEX,WAAKA,KAAI,KAAK,EAAEA,MAAK,KAAI;AACvB,QAAAF,KAAI;AACJ,cAAM,GAAGE,EAAC,IAAI;AACd,cAAM,GAAGA,EAAC,IAAI,WAAW;AAEzB,aAAKO,KAAI,KAAKC,KAAIR,KAAIO,IAAGC,KAAIR,MAAI;AAC/B,gBAAM,GAAG,EAAEO,EAAC,IAAI;AAChB,gBAAM,GAAGA,EAAC,IAAI,WAAW;AACzB,UAAAM,KAAI,MAAM,MAAM,MAAM;AACtB,gBAAM,MAAM,MAAQA,KAAI,WAAY,WAAY,GAAGL,EAAC,IAAIV;AACxD,UAAAA,MAAK,MAAM,OAAO,MAAMe,KAAI,WAAW,KAAK,MAAM;AAClD,aAAGL,IAAG,IAAI,MAAM;AAAA,QAClB;AAEA,WAAGA,EAAC,IAAIV;AAAA,MACV;AAEA,UAAIA,IAAG;AACL,UAAEC;AAAA,MACJ,OAAO;AACL,WAAG,OAAO,GAAG,CAAC;AAAA,MAChB;AAEA,aAAO,UAAUa,IAAG,IAAIb,EAAC;AAAA,IAC3B;AAOA,IAAAL,GAAE,UAAU,WAAY;AACtB,UAAIO,KAAI,IAAIN,WAAU,IAAI;AAC1B,MAAAM,GAAE,IAAI,CAACA,GAAE,KAAK;AACd,aAAOA;AAAA,IACT;AAuBA,IAAAP,GAAE,OAAO,SAAUkB,IAAGf,IAAG;AACvB,UAAIuB,IACFnB,KAAI,MACJK,KAAIL,GAAE;AAER,MAAAW,KAAI,IAAIjB,WAAUiB,IAAGf,EAAC;AACtB,MAAAA,KAAIe,GAAE;AAGN,UAAI,CAACN,MAAK,CAACT;AAAG,eAAO,IAAIF,WAAU,GAAG;AAGrC,UAAIW,MAAKT,IAAG;AACX,QAAAe,GAAE,IAAI,CAACf;AACP,eAAOI,GAAE,MAAMW,EAAC;AAAA,MAClB;AAEA,UAAI,KAAKX,GAAE,IAAI,UACb,KAAKW,GAAE,IAAI,UACX,KAAKX,GAAE,GACP,KAAKW,GAAE;AAET,UAAI,CAAC,MAAM,CAAC,IAAI;AAGd,YAAI,CAAC,MAAM,CAAC;AAAI,iBAAO,IAAIjB,WAAUW,KAAI,CAAC;AAI1C,YAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAAG,iBAAO,GAAG,CAAC,IAAIM,KAAI,IAAIjB,WAAU,GAAG,CAAC,IAAIM,KAAIK,KAAI,CAAC;AAAA,MAC1E;AAEA,WAAK,SAAS,EAAE;AAChB,WAAK,SAAS,EAAE;AAChB,WAAK,GAAG,MAAM;AAGd,UAAIA,KAAI,KAAK,IAAI;AACf,YAAIA,KAAI,GAAG;AACT,eAAK;AACL,UAAAc,KAAI;AAAA,QACN,OAAO;AACL,UAAAd,KAAI,CAACA;AACL,UAAAc,KAAI;AAAA,QACN;AAEA,QAAAA,GAAE,QAAQ;AACV,eAAOd,MAAKc,GAAE,KAAK,CAAC;AAAE;AACtB,QAAAA,GAAE,QAAQ;AAAA,MACZ;AAEA,MAAAd,KAAI,GAAG;AACP,MAAAT,KAAI,GAAG;AAGP,UAAIS,KAAIT,KAAI,GAAG;AACb,QAAAuB,KAAI;AACJ,aAAK;AACL,aAAKA;AACL,QAAAvB,KAAIS;AAAA,MACN;AAGA,WAAKA,KAAI,GAAGT,MAAI;AACd,QAAAS,MAAK,GAAG,EAAET,EAAC,IAAI,GAAGA,EAAC,IAAI,GAAGA,EAAC,IAAIS,MAAK,OAAO;AAC3C,WAAGT,EAAC,IAAI,SAAS,GAAGA,EAAC,IAAI,IAAI,GAAGA,EAAC,IAAI;AAAA,MACvC;AAEA,UAAIS,IAAG;AACL,aAAK,CAACA,EAAC,EAAE,OAAO,EAAE;AAClB,UAAE;AAAA,MACJ;AAIA,aAAO,UAAUM,IAAG,IAAI,EAAE;AAAA,IAC5B;AAkBA,IAAAlB,GAAE,YAAYA,GAAE,KAAK,SAAU,IAAI,IAAI;AACrC,UAAII,IAAGM,IAAGR,IACRK,KAAI;AAEN,UAAI,MAAM,QAAQ,OAAO,CAAC,CAAC,IAAI;AAC7B,iBAAS,IAAI,GAAG,GAAG;AACnB,YAAI,MAAM;AAAM,eAAK;AAAA;AAChB,mBAAS,IAAI,GAAG,CAAC;AAEtB,eAAOC,OAAM,IAAIP,WAAUM,EAAC,GAAG,IAAI,EAAE;AAAA,MACvC;AAEA,UAAI,EAAEH,KAAIG,GAAE;AAAI,eAAO;AACvB,MAAAL,KAAIE,GAAE,SAAS;AACf,MAAAM,KAAIR,KAAI,WAAW;AAEnB,UAAIA,KAAIE,GAAEF,EAAC,GAAG;AAGZ,eAAOA,KAAI,MAAM,GAAGA,MAAK,IAAIQ;AAAI;AAGjC,aAAKR,KAAIE,GAAE,CAAC,GAAGF,MAAK,IAAIA,MAAK,IAAIQ;AAAI;AAAA,MACvC;AAEA,UAAI,MAAMH,GAAE,IAAI,IAAIG;AAAG,QAAAA,KAAIH,GAAE,IAAI;AAEjC,aAAOG;AAAA,IACT;AAWA,IAAAV,GAAE,YAAY,SAAUa,IAAG;AACzB,eAASA,IAAG,CAAC,kBAAkB,gBAAgB;AAC/C,aAAO,KAAK,MAAM,OAAOA,EAAC;AAAA,IAC5B;AAcA,IAAAb,GAAE,aAAaA,GAAE,OAAO,WAAY;AAClC,UAAImB,IAAGT,IAAGO,IAAG,KAAKS,IAChBnB,KAAI,MACJH,KAAIG,GAAE,GACNI,KAAIJ,GAAE,GACNF,KAAIE,GAAE,GACN,KAAK,iBAAiB,GACtB,OAAO,IAAIN,WAAU,KAAK;AAG5B,UAAIU,OAAM,KAAK,CAACP,MAAK,CAACA,GAAE,CAAC,GAAG;AAC1B,eAAO,IAAIH,WAAU,CAACU,MAAKA,KAAI,MAAM,CAACP,MAAKA,GAAE,CAAC,KAAK,MAAMA,KAAIG,KAAI,IAAI,CAAC;AAAA,MACxE;AAGA,MAAAI,KAAI,KAAK,KAAK,CAAC,QAAQJ,EAAC,CAAC;AAIzB,UAAII,MAAK,KAAKA,MAAK,IAAI,GAAG;AACxB,QAAAD,KAAI,cAAcN,EAAC;AACnB,aAAKM,GAAE,SAASL,MAAK,KAAK;AAAG,UAAAK,MAAK;AAClC,QAAAC,KAAI,KAAK,KAAK,CAACD,EAAC;AAChB,QAAAL,KAAI,UAAUA,KAAI,KAAK,CAAC,KAAKA,KAAI,KAAKA,KAAI;AAE1C,YAAIM,MAAK,IAAI,GAAG;AACd,UAAAD,KAAI,OAAOL;AAAA,QACb,OAAO;AACL,UAAAK,KAAIC,GAAE,cAAc;AACpB,UAAAD,KAAIA,GAAE,MAAM,GAAGA,GAAE,QAAQ,GAAG,IAAI,CAAC,IAAIL;AAAA,QACvC;AAEA,QAAAY,KAAI,IAAIhB,WAAUS,EAAC;AAAA,MACrB,OAAO;AACL,QAAAO,KAAI,IAAIhB,WAAUU,KAAI,EAAE;AAAA,MAC1B;AAMA,UAAIM,GAAE,EAAE,CAAC,GAAG;AACV,QAAAZ,KAAIY,GAAE;AACN,QAAAN,KAAIN,KAAI;AACR,YAAIM,KAAI;AAAG,UAAAA,KAAI;AAGf,mBAAU;AACR,UAAAe,KAAIT;AACJ,UAAAA,KAAI,KAAK,MAAMS,GAAE,KAAK,IAAInB,IAAGmB,IAAG,IAAI,CAAC,CAAC,CAAC;AAEvC,cAAI,cAAcA,GAAE,CAAC,EAAE,MAAM,GAAGf,EAAC,OAAOD,KAAI,cAAcO,GAAE,CAAC,GAAG,MAAM,GAAGN,EAAC,GAAG;AAK3E,gBAAIM,GAAE,IAAIZ;AAAG,gBAAEM;AACf,YAAAD,KAAIA,GAAE,MAAMC,KAAI,GAAGA,KAAI,CAAC;AAKxB,gBAAID,MAAK,UAAU,CAAC,OAAOA,MAAK,QAAQ;AAItC,kBAAI,CAAC,KAAK;AACR,gBAAAF,OAAMkB,IAAGA,GAAE,IAAI,iBAAiB,GAAG,CAAC;AAEpC,oBAAIA,GAAE,MAAMA,EAAC,EAAE,GAAGnB,EAAC,GAAG;AACpB,kBAAAU,KAAIS;AACJ;AAAA,gBACF;AAAA,cACF;AAEA,oBAAM;AACN,cAAAf,MAAK;AACL,oBAAM;AAAA,YACR,OAAO;AAIL,kBAAI,CAAC,CAACD,MAAK,CAAC,CAACA,GAAE,MAAM,CAAC,KAAKA,GAAE,OAAO,CAAC,KAAK,KAAK;AAG7C,gBAAAF,OAAMS,IAAGA,GAAE,IAAI,iBAAiB,GAAG,CAAC;AACpC,gBAAAE,KAAI,CAACF,GAAE,MAAMA,EAAC,EAAE,GAAGV,EAAC;AAAA,cACtB;AAEA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAOC,OAAMS,IAAGA,GAAE,IAAI,iBAAiB,GAAG,eAAeE,EAAC;AAAA,IAC5D;AAYA,IAAAnB,GAAE,gBAAgB,SAAU,IAAI,IAAI;AAClC,UAAI,MAAM,MAAM;AACd,iBAAS,IAAI,GAAG,GAAG;AACnB;AAAA,MACF;AACA,aAAOuB,QAAO,MAAM,IAAI,IAAI,CAAC;AAAA,IAC/B;AAeA,IAAAvB,GAAE,UAAU,SAAU,IAAI,IAAI;AAC5B,UAAI,MAAM,MAAM;AACd,iBAAS,IAAI,GAAG,GAAG;AACnB,aAAK,KAAK,KAAK,IAAI;AAAA,MACrB;AACA,aAAOuB,QAAO,MAAM,IAAI,EAAE;AAAA,IAC5B;AA4BA,IAAAvB,GAAE,WAAW,SAAU,IAAI,IAAIuB,SAAQ;AACrC,UAAI,KACFhB,KAAI;AAEN,UAAIgB,WAAU,MAAM;AAClB,YAAI,MAAM,QAAQ,MAAM,OAAO,MAAM,UAAU;AAC7C,UAAAA,UAAS;AACT,eAAK;AAAA,QACP,WAAW,MAAM,OAAO,MAAM,UAAU;AACtC,UAAAA,UAAS;AACT,eAAK,KAAK;AAAA,QACZ,OAAO;AACL,UAAAA,UAAS;AAAA,QACX;AAAA,MACF,WAAW,OAAOA,WAAU,UAAU;AACpC,cAAM,MACH,iBAAiB,6BAA6BA,OAAM;AAAA,MACzD;AAEA,YAAMhB,GAAE,QAAQ,IAAI,EAAE;AAEtB,UAAIA,GAAE,GAAG;AACP,YAAID,IACF,MAAM,IAAI,MAAM,GAAG,GACnB,KAAK,CAACiB,QAAO,WACbI,MAAK,CAACJ,QAAO,oBACb,iBAAiBA,QAAO,kBAAkB,IAC1C,UAAU,IAAI,CAAC,GACf,eAAe,IAAI,CAAC,GACpB,QAAQhB,GAAE,IAAI,GACd,YAAY,QAAQ,QAAQ,MAAM,CAAC,IAAI,SACvC,MAAM,UAAU;AAElB,YAAIoB,KAAI;AACN,UAAArB,KAAI;AACJ,eAAKqB;AACL,UAAAA,MAAKrB;AACL,iBAAOA;AAAA,QACT;AAEA,YAAI,KAAK,KAAK,MAAM,GAAG;AACrB,UAAAA,KAAI,MAAM,MAAM;AAChB,oBAAU,UAAU,OAAO,GAAGA,EAAC;AAC/B,iBAAOA,KAAI,KAAKA,MAAK;AAAI,uBAAW,iBAAiB,UAAU,OAAOA,IAAG,EAAE;AAC3E,cAAIqB,MAAK;AAAG,uBAAW,iBAAiB,UAAU,MAAMrB,EAAC;AACzD,cAAI;AAAO,sBAAU,MAAM;AAAA,QAC7B;AAEA,cAAM,eACH,WAAWiB,QAAO,oBAAoB,QAAQI,MAAK,CAACJ,QAAO,qBAC1D,aAAa;AAAA,UAAQ,IAAI,OAAO,SAASI,MAAK,QAAQ,GAAG;AAAA,UAC1D,QAAQJ,QAAO,0BAA0B;AAAA,QAAG,IAC3C,gBACD;AAAA,MACL;AAEA,cAAQA,QAAO,UAAU,MAAM,OAAOA,QAAO,UAAU;AAAA,IACzD;AAcA,IAAAvB,GAAE,aAAa,SAAU,IAAI;AAC3B,UAAIgB,IAAG,IAAI,IAAIY,KAAIvB,IAAG,KAAKK,IAAG,IAAI,IAAIY,IAAGL,IAAGN,IAC1CJ,KAAI,MACJ,KAAKA,GAAE;AAET,UAAI,MAAM,MAAM;AACd,QAAAG,KAAI,IAAIT,WAAU,EAAE;AAGpB,YAAI,CAACS,GAAE,UAAU,MAAMA,GAAE,KAAKA,GAAE,MAAM,MAAMA,GAAE,GAAG,GAAG,GAAG;AACrD,gBAAM,MACH,iBAAiB,eACfA,GAAE,UAAU,IAAI,mBAAmB,sBAAsB,QAAQA,EAAC,CAAC;AAAA,QAC1E;AAAA,MACF;AAEA,UAAI,CAAC;AAAI,eAAO,IAAIT,WAAUM,EAAC;AAE/B,MAAAS,KAAI,IAAIf,WAAU,GAAG;AACrB,WAAK,KAAK,IAAIA,WAAU,GAAG;AAC3B,WAAK,KAAK,IAAIA,WAAU,GAAG;AAC3B,MAAAU,KAAI,cAAc,EAAE;AAIpB,MAAAN,KAAIW,GAAE,IAAIL,GAAE,SAASJ,GAAE,IAAI;AAC3B,MAAAS,GAAE,EAAE,CAAC,IAAI,UAAU,MAAMX,KAAI,YAAY,IAAI,WAAW,MAAM,GAAG;AACjE,WAAK,CAAC,MAAMK,GAAE,WAAWM,EAAC,IAAI,IAAKX,KAAI,IAAIW,KAAI,KAAMN;AAErD,YAAM;AACN,gBAAU,IAAI;AACd,MAAAA,KAAI,IAAIT,WAAUU,EAAC;AAGnB,SAAG,EAAE,CAAC,IAAI;AAEV,iBAAW;AACT,QAAAW,KAAI,IAAIZ,IAAGM,IAAG,GAAG,CAAC;AAClB,QAAAY,MAAK,GAAG,KAAKN,GAAE,MAAM,EAAE,CAAC;AACxB,YAAIM,IAAG,WAAW,EAAE,KAAK;AAAG;AAC5B,aAAK;AACL,aAAKA;AACL,aAAK,GAAG,KAAKN,GAAE,MAAMM,MAAK,EAAE,CAAC;AAC7B,aAAKA;AACL,QAAAZ,KAAIN,GAAE,MAAMY,GAAE,MAAMM,MAAKZ,EAAC,CAAC;AAC3B,QAAAN,KAAIkB;AAAA,MACN;AAEA,MAAAA,MAAK,IAAI,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC;AAC/B,WAAK,GAAG,KAAKA,IAAG,MAAM,EAAE,CAAC;AACzB,WAAK,GAAG,KAAKA,IAAG,MAAM,EAAE,CAAC;AACzB,SAAG,IAAI,GAAG,IAAIrB,GAAE;AAChB,MAAAF,KAAIA,KAAI;AAGR,MAAAY,KAAI,IAAI,IAAI,IAAIZ,IAAG,aAAa,EAAE,MAAME,EAAC,EAAE,IAAI,EAAE;AAAA,QAC7C,IAAI,IAAI,IAAIF,IAAG,aAAa,EAAE,MAAME,EAAC,EAAE,IAAI;AAAA,MAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAE1E,gBAAU;AAEV,aAAOU;AAAA,IACT;AAMA,IAAAjB,GAAE,WAAW,WAAY;AACvB,aAAO,CAAC,QAAQ,IAAI;AAAA,IACtB;AAcA,IAAAA,GAAE,cAAc,SAAU,IAAI,IAAI;AAChC,UAAI,MAAM;AAAM,iBAAS,IAAI,GAAG,GAAG;AACnC,aAAOuB,QAAO,MAAM,IAAI,IAAI,CAAC;AAAA,IAC/B;AAcA,IAAAvB,GAAE,WAAW,SAAUG,IAAG;AACxB,UAAI,KACFO,KAAI,MACJC,KAAID,GAAE,GACNL,KAAIK,GAAE;AAGR,UAAIL,OAAM,MAAM;AACd,YAAIM,IAAG;AACL,gBAAM;AACN,cAAIA,KAAI;AAAG,kBAAM,MAAM;AAAA,QACzB,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF,OAAO;AACL,YAAIR,MAAK,MAAM;AACb,gBAAME,MAAK,cAAcA,MAAK,aAC3B,cAAc,cAAcK,GAAE,CAAC,GAAGL,EAAC,IACnC,aAAa,cAAcK,GAAE,CAAC,GAAGL,IAAG,GAAG;AAAA,QAC5C,WAAWF,OAAM,MAAM,gCAAgC;AACrD,UAAAO,KAAIF,OAAM,IAAIP,WAAUS,EAAC,GAAG,iBAAiBL,KAAI,GAAG,aAAa;AACjE,gBAAM,aAAa,cAAcK,GAAE,CAAC,GAAGA,GAAE,GAAG,GAAG;AAAA,QACjD,OAAO;AACL,mBAASP,IAAG,GAAG,SAAS,QAAQ,MAAM;AACtC,gBAAM,YAAY,aAAa,cAAcO,GAAE,CAAC,GAAGL,IAAG,GAAG,GAAG,IAAIF,IAAGQ,IAAG,IAAI;AAAA,QAC5E;AAEA,YAAIA,KAAI,KAAKD,GAAE,EAAE,CAAC;AAAG,gBAAM,MAAM;AAAA,MACnC;AAEA,aAAO;AAAA,IACT;AAOA,IAAAV,GAAE,UAAUA,GAAE,SAAS,WAAY;AACjC,aAAO,QAAQ,IAAI;AAAA,IACrB;AAGA,IAAAA,GAAE,eAAe;AAEjB,IAAAA,GAAE,OAAO,WAAW,IAAI;AAGxB,IAAAA,GAAE,OAAO,IAAI,4BAA4B,CAAC,IAAIA,GAAE;AAEhD,QAAI,gBAAgB;AAAM,MAAAC,WAAU,IAAI,YAAY;AAEpD,WAAOA;AAAA,EACT;AASA,WAAS,SAASS,IAAG;AACnB,QAAIJ,KAAII,KAAI;AACZ,WAAOA,KAAI,KAAKA,OAAMJ,KAAIA,KAAIA,KAAI;AAAA,EACpC;AAIA,WAAS,cAAcM,IAAG;AACxB,QAAID,IAAGkB,IACLvB,KAAI,GACJQ,KAAIF,GAAE,QACNK,KAAIL,GAAE,CAAC,IAAI;AAEb,WAAON,KAAIQ,MAAI;AACb,MAAAH,KAAIC,GAAEN,IAAG,IAAI;AACb,MAAAuB,KAAI,WAAWlB,GAAE;AACjB,aAAOkB,MAAKlB,KAAI,MAAMA;AAAE;AACxB,MAAAM,MAAKN;AAAA,IACP;AAGA,SAAKG,KAAIG,GAAE,QAAQA,GAAE,WAAW,EAAEH,EAAC,MAAM;AAAI;AAE7C,WAAOG,GAAE,MAAM,GAAGH,KAAI,KAAK,CAAC;AAAA,EAC9B;AAIA,WAAS,QAAQP,IAAGW,IAAG;AACrB,QAAIN,IAAGT,IACL,KAAKI,GAAE,GACP,KAAKW,GAAE,GACPZ,KAAIC,GAAE,GACNO,KAAII,GAAE,GACNL,KAAIN,GAAE,GACNuB,KAAIZ,GAAE;AAGR,QAAI,CAACZ,MAAK,CAACQ;AAAG,aAAO;AAErB,IAAAF,KAAI,MAAM,CAAC,GAAG,CAAC;AACf,IAAAT,KAAI,MAAM,CAAC,GAAG,CAAC;AAGf,QAAIS,MAAKT;AAAG,aAAOS,KAAIT,KAAI,IAAI,CAACW,KAAIR;AAGpC,QAAIA,MAAKQ;AAAG,aAAOR;AAEnB,IAAAM,KAAIN,KAAI;AACR,IAAAH,KAAIU,MAAKiB;AAGT,QAAI,CAAC,MAAM,CAAC;AAAI,aAAO3B,KAAI,IAAI,CAAC,KAAKS,KAAI,IAAI;AAG7C,QAAI,CAACT;AAAG,aAAOU,KAAIiB,KAAIlB,KAAI,IAAI;AAE/B,IAAAE,MAAKD,KAAI,GAAG,WAAWiB,KAAI,GAAG,UAAUjB,KAAIiB;AAG5C,SAAKxB,KAAI,GAAGA,KAAIQ,IAAGR;AAAK,UAAI,GAAGA,EAAC,KAAK,GAAGA,EAAC;AAAG,eAAO,GAAGA,EAAC,IAAI,GAAGA,EAAC,IAAIM,KAAI,IAAI;AAG3E,WAAOC,MAAKiB,KAAI,IAAIjB,KAAIiB,KAAIlB,KAAI,IAAI;AAAA,EACtC;AAMA,WAAS,SAASF,IAAGqB,MAAKC,MAAKC,OAAM;AACnC,QAAIvB,KAAIqB,QAAOrB,KAAIsB,QAAOtB,OAAM,UAAUA,EAAC,GAAG;AAC5C,YAAM,MACJ,kBAAkBuB,SAAQ,eAAe,OAAOvB,MAAK,WAClDA,KAAIqB,QAAOrB,KAAIsB,OAAM,oBAAoB,sBACzC,+BAA+B,OAAOtB,EAAC,CAAC;AAAA,IAC/C;AAAA,EACF;AAIA,WAAS,MAAMA,IAAG;AAChB,QAAIG,KAAIH,GAAE,EAAE,SAAS;AACrB,WAAO,SAASA,GAAE,IAAI,QAAQ,KAAKG,MAAKH,GAAE,EAAEG,EAAC,IAAI,KAAK;AAAA,EACxD;AAGA,WAAS,cAAc,KAAKR,IAAG;AAC7B,YAAQ,IAAI,SAAS,IAAI,IAAI,OAAO,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,QAC5DA,KAAI,IAAI,MAAM,QAAQA;AAAA,EAC1B;AAGA,WAAS,aAAa,KAAKA,IAAGwB,IAAG;AAC/B,QAAI,KAAK;AAGT,QAAIxB,KAAI,GAAG;AAGT,WAAK,KAAKwB,KAAI,KAAK,EAAExB,IAAG,MAAMwB;AAAE;AAChC,YAAM,KAAK;AAAA,IAGb,OAAO;AACL,YAAM,IAAI;AAGV,UAAI,EAAExB,KAAI,KAAK;AACb,aAAK,KAAKwB,IAAGxB,MAAK,KAAK,EAAEA,IAAG,MAAMwB;AAAE;AACpC,eAAO;AAAA,MACT,WAAWxB,KAAI,KAAK;AAClB,cAAM,IAAI,MAAM,GAAGA,EAAC,IAAI,MAAM,IAAI,MAAMA,EAAC;AAAA,MAC3C;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAMO,MAAI,YAAYN,OAAM;;;ACr1F7B,MAAK;AAAL,GAAA,SAAKmC,kBAAe;AAClB,IAAAA,iBAAAA,iBAAA,IAAA,IAAO,UAAU,QAAQ,IAAA;AACzB,IAAAA,iBAAAA,iBAAA,MAAA,IAAS,UAAU,UAAU,IAAA;AAC7B,IAAAA,iBAAAA,iBAAA,UAAA,IAAa,UAAU,UAAU,IAAA;AACjC,IAAAA,iBAAAA,iBAAA,QAAA,IAAW,UAAU,aAAa,IAAA;AAClC,IAAAA,iBAAAA,iBAAA,SAAA,IAAY,UAAU,aAAa,IAAA;AACnC,IAAAA,iBAAAA,iBAAA,UAAA,IAAa,UAAU,eAAe,IAAA;AACtC,IAAAA,iBAAAA,iBAAA,UAAA,IAAa,UAAU,eAAe,IAAA;AACtC,IAAAA,iBAAAA,iBAAA,QAAA,IAAW,UAAU,eAAe,IAAA;AACpC,IAAAA,iBAAAA,iBAAA,SAAA,IAAY,UAAU,UAAU,IAAA;AAChC,IAAAA,iBAAAA,iBAAA,MAAA,IAAS,UAAU,UAAU,IAAA;AAC7B,IAAAA,iBAAAA,iBAAA,OAAA,IAAU,UAAU,WAAW,IAAA;EACjC,GAZK,oBAAA,kBAAe,CAAA,EAAA;AAmBd,WAAU,gBACd,WAAuB;;AAEvB,YAAQ,KAAA,gBAAgB,SAAS,OAAC,QAAA,OAAA,SAAA,KAChC,gBAAgB;EACpB;;;AC1BA,sBAAmB;;;ACUnB,WAAS,WAAW,SAAkB;AACpC,QAAI,QAAQ,OAAM,GAAI;AACpB,aAAO;IACT;AAEA,WAAO,KAAK,MAAM,KAAK,MAAM,QAAQ,IAAG,EAAG,SAAQ,CAAE,IAAI,CAAC;EAC5D;AAEA,WAAS,qBACP,SACA,EAAE,WAAW,YAAW,GAAmB;AAE3C,QAAI,eAAe,cAAc,QAAQ,YAAY,GAAG;AACtD,aAAO,YAAY,WAAW,OAAO;IACvC;AAEA,WAAO;EACT;AAaM,WAAU,YACd,SACAC,UAAwB;AAExB,UAAM,YAAY,qBAAqB,SAASA,QAAO;AAEvD,QAAI,cAAc,MAAM;AACtB,aAAO,QAAQ,SAAQ;IACzB;AAEA,UAAM,YAAY,gBAAgBA,SAAQ,SAAS;AAEnD,QAAI,aAAa,GAAG;AAClB,aAAO,QAAQ,QAAQ,WAAW,SAAS;IAC7C;AAIA,UAAM,UAAU,KAAA,IAAA,IAAM,KAAK,IAAI,SAAS,CAAC;AAEzC,cAAU,IAAI,UAAU,QAAQ,IAAI,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC,EAAE,MAClE,OAAO;AAGT,WAAO,QAAQ,SAAQ;EACzB;;;AD5DA,WAAS,gBACPC,SACA,EAAE,iBAAiB,KAAI,GAA6C;AAEpE,WAAOA,QAAO,QAAQ,MAAM,eAAe,EAAE,QAAQ,MAAM,IAAI;EACjE;AAEA,WAAS,mBAAmB,EAC1B,aACA,OACA,UAAS,GAKV;AACC,QAAI,UAAU,OAAO,cAAc,MAAM;AACvC,aAAO;IACT;AAEA,UAAM,QAAQ,KAAK,IAAI,GAAG,YAAY,MAAM,MAAM;AAElD,YAAQ,gBAAW,QAAX,gBAAW,SAAX,cAAe,IAAI,OAAO,GAAG,KAAK;EAC5C;AAWM,WAAUC,cACd,OACAC,UAA4B;;AAE5B,UAAM,iBAAiB,IAAI,UAAU,KAAK;AAE1C,QAAIA,SAAQ,SAAS,CAAC,eAAe,SAAQ,GAAI;AAC/C,YAAM,IAAI,MAAM,IAAI,qCAAqC;IAC3D;AAEA,UAAM,gBAAgB,YAAY,gBAAgBA,QAAO;AACzD,UAAM,UAAU,IAAI,UAAU,aAAa;AAC3C,UAAM,aAAa,QAAQ,GAAG,CAAC;AAC/B,UAAM,SAAS,QAAQ,OAAM;AAC7B,QAAI,CAAC,OAAO,WAAW,IAAI,cAAc,MAAM,GAAG;AAClD,UAAM,SAAmB,CAAA;AACzB,QAAI;AACJ,UAAM,kBAAiB,KAAAA,SAAQ,YAAM,QAAA,OAAA,SAAA,KAAI;AACzC,UAAM,kBAAiB,KAAAA,SAAQ,oBAAc,QAAA,OAAA,SAAA,KAAI,IAAI;AACrD,UAAMF,UAAS,cAAc,CAAC,SAAS,iBAAiB;AAExD,YAAQ,MAAM,QAAQ,KAAK,EAAE;AAE7B,WAAO,MAAM,SAAS,GAAG;AACvB,aAAO,QAAQ,MAAM,OAAO,KAAK,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7D,cAAQ,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC;IAC1C;AAEA,YAAQ,OAAO,KAAK,EAAE;AACtB,sBAAkB,OAAO,KAAKE,SAAQ,SAAS;AAE/C,QAAIA,SAAQ,aAAa;AACvB,oBAAc,mBAAmB;QAC/B;QACA;QACA,WAAWA,SAAQ;OACpB;IACH,OAAO;AACL,oBAAc,gBAAW,QAAX,gBAAW,SAAX,kBAAe,cAAAC,SAAO,MAAK,KAAAD,SAAQ,eAAS,QAAA,OAAA,SAAA,KAAI,CAAC;IACjE;AAEA,QAAIA,SAAQ,2BAA2B,aAAa;AAClD,oBAAc,YAAY,QAAQ,OAAO,EAAE;IAC7C;AAEA,QAAI,eAAe,MAAK,GAAI;AAC1B,wBAAkB,MAAM,SAAQ;IAClC;AAEA,QAAI,eAAe,eAAe,SAAQ,GAAI;AAC5C,0BAAoBA,SAAQ,aAAa,OAAO;IAClD;AAEA,WAAO,gBAAgBF,SAAQ;MAC7B;MACA,MAAME,SAAQ;KACf;EACH;;;AEpFM,WAAU,aAAaE,OAAY,OAAcC,UAAa;AAClE,QAAI,SAAS;AAGb,QAAI,iBAAiB,UAAU,OAAO,UAAU,UAAU;AACxD,eAAS;IACX;AAGA,QAAI,iBAAiB,OAAO;AAC1B,eAAU,MAAmB,KAAKD,MAAK,gBAAgB;IACzD;AAMA,QAAIC,SAAQ,OAAO;AACjB,eAAS,CAACA,SAAQ,OAAO,MAAM,EAAE,KAAKD,MAAK,gBAAgB;IAC7D;AAEA,WAAO;EACT;;;AC1BM,WAAU,UAAU,UAAiB;;AACzC,QAAI,aAAa,MAAM;AACrB,aAAO;IACT;AAEA,UAAM,OAAO,OAAO;AAEpB,QAAI,SAAS,UAAU;AACrB,aAAO;IACT;AAEA,aAAO,MAAA,KAAC,aAAgB,QAAhB,aAAQ,SAAA,SAAR,SAAkB,iBAAW,QAAA,OAAA,SAAA,SAAA,GAAE,UAAI,QAAA,OAAA,SAAA,SAAA,GAAE,YAAW,MAAM;EAChE;;;ACHM,WAAUE,aACdC,OACAC,UACAC,UAAyB;AAEzB,IAAAA,WAAU,OAAO,KAAKA,QAAO,EAAE,OAAO,CAAC,QAAQC,SAAO;AACpD,aAAOH,MAAK,aAAaG,IAAG,CAAC,IAAID,SAAQC,IAAG;AAC5C,aAAO;IACT,GAAG,CAAA,CAAsB;AACzB,UAAMC,WAAUH,SAAQ,MAAMD,MAAK,WAAW;AAE9C,QAAI,CAACI,UAAS;AACZ,aAAOH;IACT;AAEA,WAAOG,SAAQ,QAAQ;AACrB,UAAI;AACJ,YAAM,cAAcA,SAAQ,MAAK;AACjC,YAAMC,QAAO,YAAY,QAAQL,MAAK,aAAa,IAAI;AAEvD,UAAI,MAAME,SAAQG,KAAI,CAAC,GAAG;AACxB,gBAAQH,SAAQG,KAAI,EAAE,SAAQ,EAAG,QAAQ,QAAQ,OAAO;MAC1D,WAAWA,SAAQH,UAAS;AAC1B,gBAAQF,MAAK,gBAAgBA,OAAM,aAAaC,UAASC,QAAO;MAClE,OAAO;AACL,gBAAQF,MAAK,mBAAmBA,OAAM,aAAaC,UAASC,QAAO;MACrE;AAEA,YAAM,QAAQ,IAAI,OAChB,YAAY,QAAQ,QAAQ,KAAK,EAAE,QAAQ,QAAQ,KAAK,GACxD,GAAG;AAGL,MAAAD,WAAUA,SAAQ,QAAQ,OAAO,KAAK;IACxC;AAEA,WAAOA,SAAQ,QAAQ,WAAW,GAAG;EACvC;;;AClCM,WAAU,OAAOK,OAAY,OAAcC,WAAgB,CAAA,GAAE;AACjE,IAAAA,WAAO,OAAA,OAAA,CAAA,GAAQA,QAAO;AAEtB,UAAM,SAAS,YAAYA,WAAUA,SAAQ,SAASD,MAAK;AAC3D,UAAM,aAAa,UAAU,MAAM;AAEnC,UAAM,UAAUA,MAAK,QAClB,IAAI,eAAe,WAAW,SAAS,OAAO,MAAM,EACpD,MAAK;AAER,UAAM,OAAO,aAAaA,OAAM,OAAOC,QAAO,EAC3C,MAAMD,MAAK,gBAAgB,EAC3B,IAAI,CAAC,cAAcA,MAAK,aAAa,SAAS,CAAC;AAElD,UAAM,UAAU,QAAQ,IAAI,CAACE,YAC3B,KAAK,OAAO,CAAC,MAAMC,SAAQ,QAAQ,KAAKA,IAAG,GAAGH,MAAK,aAAaE,OAAM,CAAC,CAAC;AAG1E,YAAQ,KAAKD,SAAQ,YAAY;AAEjC,WAAO,QAAQ,KAAK,CAAC,UAAU,MAAM,KAAK,CAAC;EAC7C;;;AC3BM,WAAU,kBACd,OACAG,UAAiC;AAEjC,UAAM,UAAU,IAAI,UAAU,KAAK;AAEnC,QAAI,CAAC,QAAQ,SAAQ,GAAI;AACvB,aAAO,MAAM,SAAQ;IACvB;AAEA,QAAI,CAACA,SAAQ,iBAAiB,QAAQ;AACpC,YAAM,IAAI,MACR,0EAA0EA,SAAQ,kBAAkB;IAExG;AAGA,QAAI,CAACC,OAAMC,MAAK,IAAI,QAAQ,SAAQ,EAAG,MAAM,GAAG;AAEhD,IAAAD,QAAOA,MAAK,QACVD,SAAQ,kBACR,CAAC,qBAAqB,GAAG,mBAAmBA,SAAQ,WAAW;AAGjE,WAAO,CAACC,OAAMC,MAAK,EAAE,OAAO,OAAO,EAAE,KAAKF,SAAQ,SAAS;EAC7D;;;ACvCA,sBAAmB;AACnB,yBAAsB;AAYtB,MAAM,gBAAgB;IACpB,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;;AAGT,MAAM,6BAAyB,iBAAAG,SAC7B,OAAO,OAAO,aAAa,GAC3B,OAAO,KAAK,aAAa,EAAE,IAAI,CAACC,SAAQ,SAASA,MAAK,EAAE,CAAC,CAAC;AAiBtD,WAAU,cACdC,OACA,OACAC,UAA6B;AAE7B,UAAM,eAAe;MACnB,WAAWA,SAAQ;MACnB,WAAWA,SAAQ;MACnB,aAAaA,SAAQ;;AAGvB,QAAI;AAEJ,QAAI,UAAUA,SAAQ,KAAK,MAAM,UAAU;AACzC,YAAM,QAAQA,SAAQ;AACtB,cAAQ,OAAOD,OAAM,KAAK;AAE1B,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,MACR,cAAcA,MAAK,SAASA,MAAK,mBAAmB,aAClDA,OACA,OACA,CAAA,CAAE,sBACkB;MAE1B;IACF,OAAO;AACL,cAAQC,SAAQ;IAClB;AAEA,QAAI,kBAAkB,YAAY,IAAI,UAAU,KAAK,GAAG,YAAY;AAEpE,UAAM,gBAAgB,CAACC,eACrB,cAAAC,SACE,OAAO,KAAKD,MAAK,EAAE,IAAI,CAACE,UAAS,uBAAuBA,KAAI,CAAC,GAC7D,CAAC,YAAY,UAAU,EAAE;AAG7B,UAAM,oBAAoB,CAAC,KAAgBF,WAA6B;AACtE,YAAMG,YAAW,IAAI,OAAM,IACvB,IACA,KAAK,MAAM,KAAK,MAAM,IAAI,IAAG,EAAG,SAAQ,CAAE,CAAC;AAE/C,aAAO,cAAcH,MAAK,EAAE,KAAK,CAAC,QAAQG,aAAY,GAAG,KAAK;IAChE;AAEA,UAAM,gBAAgB,CAACH,QAA2BG,cAAoB;AAGpE,YAAM,UAAU,cAAcA,UAAS,SAAQ,CAAE;AAEjD,aAAOH,OAAM,OAAO,KAAK;IAC3B;AAEA,UAAM,WAAW,kBAAkB,IAAI,UAAU,eAAe,GAAG,KAAK;AACxE,UAAM,OAAO,cAAc,OAAO,QAAQ;AAE1C,sBAAkB,YAChB,IAAI,UAAU,eAAe,EAAE,IAAI,KAAA,IAAA,IAAM,QAAQ,CAAA,GACjD,YAAY;AAGd,QAAID,SAAQ,yBAAyB;AAEnC,UAAI,CAAC,OAAO,WAAW,IAAI,gBAAgB,MAAM,GAAG;AACpD,qBAAe,eAAe,IAAI,QAAQ,OAAO,EAAE;AAEnD,wBAAkB;AAElB,UAAI,aAAa;AACf,2BAAmB,GAAGA,SAAQ,YAAY;MAC5C;IACF;AAEA,WAAOA,SAAQ,OACZ,QAAQ,MAAM,mBAAmB,GAAG,EACpC,QAAQ,MAAM,IAAI,EAClB,KAAI;EACT;;;ACvHA,MAAM,gBAAgB,CAAC,QAAQ,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAa3D,WAAU,kBACdK,OACA,OACAC,UAAiC;AAEjC,UAAM,YAAY,gBAAgBA,SAAQ,SAAS;AACnD,UAAM,OAAO;AACb,UAAM,MAAM,IAAI,UAAU,KAAK,EAAE,IAAG;AACpC,UAAM,kBAAkB,IAAI,GAAG,IAAI;AACnC,QAAI;AAEJ,UAAM,kBAAkB,CAAC,SAAoB,UAAmB;AAC9D,YAAMC,OAAM,MAAM,SAAS;AAC3B,YAAM,MAAM,IAAI,UAAU,KAAK,IAAI,QAAQ,SAAQ,CAAE,CAAC,EACnD,IAAI,KAAK,IAAI,IAAI,CAAC,EAClB,aAAa,UAAU,UAAU,EACjC,SAAQ;AAEX,aAAO,KAAK,IAAIA,MAAK,GAAG;IAC1B;AAEA,UAAM,iBAAiB,CAAC,UAAmB;AACzC,YAAM,SAAS,kBAAkB,SAAS,MAAM,QAAQ;AACxD,aAAO,oCAAoC;IAC7C;AAEA,UAAM,WAAW,gBAAgB,KAAK,aAAa;AAEnD,QAAI,iBAAiB;AACnB,4BAAsB,IAAI,aAAY;IACxC,OAAO;AACL,4BAAsB,IAAI,UACxB,YAAY,IAAI,IAAI,KAAA,IAAA,MAAQ,QAAQ,CAAA,GAAG;QACrC,aAAaD,SAAQ;QACrB,WAAWA,SAAQ;QACnB,WAAWA,SAAQ;OACpB,CAAC;IAEN;AAEA,UAAME,UAASH,MAAK,UAAU,qCAAqC;MACjE,cAAc;KACf;AAED,UAAM,OAAOA,MAAK,UAAU,eAAe,aAAa,GAAG;MACzD,OAAO,IAAI,aAAY,EAAG,SAAQ;KACnC;AAED,QAAI,kBAAkB,oBAAoB,QACxCC,SAAQ,WACR,SAAS;AAGX,QAAIA,SAAQ,yBAAyB;AACnC,wBAAkB,gBACf,QAAQ,cAAc,IAAI,EAC1B,QAAQ,OAAO,EAAE;IACtB;AAEA,WAAOE,QAAO,QAAQ,MAAM,eAAe,EAAE,QAAQ,MAAM,IAAI;EACjE;;;ACjDM,WAAUC,WAAU,OAAe;AAEvC,QAAI,iBAAiB,MAAM;AACzB,aAAO;IACT;AAEA,QAAI,OAAO,UAAU,UAAU;AAE7B,YAAMC,QAAO,oBAAI,KAAI;AACrB,MAAAA,MAAK,QAAQ,KAA0B;AACvC,aAAOA;IACT;AAEA,UAAMC,WAAU,IAAI,OAAO,KAAK,EAAE,MAChC,wFAAwF;AAG1F,QAAIA,UAAS;AACX,YAAM,QAAQA,SAAQ,MAAM,GAAG,CAAC,EAAE,IAAI,CAACC,WAAU,SAASA,QAAO,EAAE,KAAK,CAAC;AAGzE,YAAM,CAAC,KAAK;AAEZ,YAAM,CAAC,MAAM,OAAO,KAAK,MAAM,QAAQ,QAAQ,YAAY,IAAI;AAC/D,YAAM,WAAWD,SAAQ,CAAC;AAE1B,UAAI,UAAU;AACZ,eAAO,IAAI,KACT,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,QAAQ,QAAQ,YAAY,CAAC;MAElE,OAAO;AACL,eAAO,IAAI,KAAK,MAAM,OAAO,KAAK,MAAM,QAAQ,QAAQ,YAAY;MACtE;IACF;AAEA,QACE,MAAM,MACJ,qEAAqE,GAEvE;AAGA,YAAMD,QAAO,oBAAI,KAAI;AACrB,MAAAA,MAAK,QACH,KAAK,MACH,CAAC,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE,EAAE,KACjE,GAAG,CACJ,CACF;IAEL;AAGA,UAAM,OAAO,oBAAI,KAAI;AACrB,SAAK,QAAQ,KAAK,MAAM,KAAK,CAAC;AAE9B,WAAO;EACT;;;ACpEM,WAAU,UAAU,EACxB,MAAAG,OACA,OACA,OACA,SAAAC,UACA,UAAS,GAOV;AACC,IAAAA,WAAO,OAAA,OAAA,CAAA,GAAQA,QAAO;AACtB,QAAI;AACJ,QAAIC;AAEJ,QAAI,OAAO,UAAU,YAAY,OAAO;AACtC,qBAAe;IACjB,OAAO;AACL,qBAAe,OAAOF,OAAM,OAAOC,QAAO;IAC5C;AAEA,QAAI,CAAC,cAAc;AACjB,aAAOD,MAAK,mBAAmB,IAAI,OAAOC,QAAO;IACnD;AAEA,UAAM,aAAaD,MAAK,cAAc,IAAIC,SAAQ,MAAM;AACxD,UAAM,OAAO,WAAWD,OAAM,KAAK;AACnC,UAAM,cAA2B,CAAA;AAEjC,WAAO,KAAK,QAAQ;AAClB,YAAMG,OAAM,KAAK,MAAK;AAEtB,UAAI,MAAM,aAAaA,IAAG,CAAC,GAAG;AAC5B,QAAAD,WAAU,aAAaC,IAAG;AAC1B;MACF;AAEA,kBAAY,KAAKA,IAAG;IACtB;AAEA,QAAI,CAAC,MAAMD,QAAO,GAAG;AACnB,aAAOF,MAAK,mBAAmB,IAC7B,UAAU,MAAMA,MAAK,gBAAgB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAC9DC,QAAO;IAEX;AAEA,IAAAA,SAAQ,QAAQ;AAEhB,WAAOD,MAAK,YAAYA,OAAME,UAASD,QAAO;EAChD;;;ACzEA,MAAMG,mBAAmC;IACvC,UAAU,EAAE,IAAI,MAAM,IAAI,KAAI;IAC9B,UAAU;MACR;MACA;MACA;MACA;MACA;MACA;MACA;;IAEF,cAAc,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;IAC9D,YAAY;MACV;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;IAEF,gBAAgB;MACd;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;;AAoDE,WAAU,SACd,MACAC,SACAC,WAAoC,CAAA,GAAE;AAEtC,UAAM,EACJ,cACA,UACA,gBACA,YACA,UAAU,OACV,IAAG,IACJ,OAAA,OAAA,OAAA,OAAA,CAAA,GAAQF,gBAAe,GAAKE,QAAO;AAEpC,QAAI,MAAM,KAAK,QAAO,CAAE,GAAG;AACzB,YAAM,IAAI,MACR,wEAAwE;IAE5E;AAEA,UAAM,UAAU,MAAM,KAAK,UAAS,IAAK,KAAK,OAAM;AACpD,UAAM,MAAM,MAAM,KAAK,WAAU,IAAK,KAAK,QAAO;AAClD,UAAM,OAAO,MAAM,KAAK,eAAc,IAAK,KAAK,YAAW;AAC3D,UAAM,SAAS,MAAM,KAAK,YAAW,IAAK,KAAK,SAAQ,KAAM;AAC7D,UAAM,OAAO,MAAM,KAAK,YAAW,IAAK,KAAK,SAAQ;AACrD,QAAI,SAAS;AACb,UAAM,WAAW,OAAO,KAAK,OAAO;AACpC,UAAM,OAAO,MAAM,KAAK,cAAa,IAAK,KAAK,WAAU;AACzD,UAAM,OAAO,MAAM,KAAK,cAAa,IAAK,KAAK,WAAU;AACzD,UAAMC,UAAS,MAAM,IAAI,KAAK,kBAAiB;AAC/C,UAAM,iBAAiB,KAAK,MAAM,KAAK,IAAIA,UAAS,EAAE,CAAC;AACvD,UAAM,mBAAmB,KAAK,IAAIA,OAAM,IAAI,iBAAiB;AAC7D,UAAM,kBACHA,UAAS,IAAI,MAAM,QACnB,eAAe,SAAQ,EAAG,SAAS,IAChC,MAAM,iBACN,mBACH,iBAAiB,SAAQ,EAAG,SAAS,IAClC,MAAM,mBACN;AAEN,QAAI,SAAS,IAAI;AACf,eAAS,SAAS;IACpB,WAAW,WAAW,GAAG;AACvB,eAAS;IACX;AAEA,IAAAF,UAASA,QAAO,QAAQ,MAAM,aAAa,OAAO,CAAC;AACnD,IAAAA,UAASA,QAAO,QAAQ,MAAM,SAAS,OAAO,CAAC;AAC/C,IAAAA,UAASA,QAAO,QAAQ,MAAM,eAAe,KAAK,CAAW;AAC7D,IAAAA,UAASA,QAAO,QAAQ,MAAM,WAAW,KAAK,CAAW;AACzD,IAAAA,UAASA,QAAO,QAAQ,MAAM,IAAI,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAC7D,IAAAA,UAASA,QAAO,QAAQ,MAAM,IAAI,SAAQ,CAAE;AAC5C,IAAAA,UAASA,QAAO,QAAQ,OAAO,IAAI,SAAQ,CAAE;AAC7C,IAAAA,UAASA,QAAO,QAAQ,MAAM,KAAK,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAC9D,IAAAA,UAASA,QAAO,QAAQ,OAAO,KAAK,SAAQ,CAAE;AAC9C,IAAAA,UAASA,QAAO,QAAQ,MAAM,KAAK,SAAQ,CAAE;AAC7C,IAAAA,UAASA,QAAO,QAAQ,MAAM,OAAO,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAChE,IAAAA,UAASA,QAAO,QAAQ,OAAO,OAAO,SAAQ,CAAE;AAChD,IAAAA,UAASA,QAAO,QAAQ,MAAM,OAAO,SAAQ,CAAE;AAC/C,IAAAA,UAASA,QAAO,QAAQ,MAAM,MAAM,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAC/D,IAAAA,UAASA,QAAO,QAAQ,OAAO,MAAM,SAAQ,CAAE;AAC/C,IAAAA,UAASA,QAAO,QAAQ,MAAM,KAAK,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAC9D,IAAAA,UAASA,QAAO,QAAQ,OAAO,KAAK,SAAQ,CAAE;AAC9C,IAAAA,UAASA,QAAO,QAAQ,MAAM,MAAM,QAAQ,CAAC;AAC7C,IAAAA,UAASA,QAAO,QAAQ,MAAM,MAAM,QAAQ,EAAE,YAAW,CAAE;AAC3D,IAAAA,UAASA,QAAO,QAAQ,MAAM,KAAK,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAC9D,IAAAA,UAASA,QAAO,QAAQ,OAAO,KAAK,SAAQ,CAAE;AAC9C,IAAAA,UAASA,QAAO,QAAQ,MAAM,QAAQ,SAAQ,CAAE;AAChD,IAAAA,UAASA,QAAO,QAAQ,MAAM,KAAK,SAAQ,EAAG,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;AACzE,IAAAA,UAASA,QAAO,QACd,OACA,KAAK,SAAQ,EAAG,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,OAAO,EAAE,CAAC;AAEhE,IAAAA,UAASA,QAAO,QAAQ,MAAM,KAAK,SAAQ,CAAE;AAC7C,IAAAA,UAASA,QAAO,QAAQ,OAAO,cAAc;AAE7C,WAAOA;EACT;;;AC5KA,qBAAkB;AAMlB,MAAMG,UAAS,CAACC,QAAeC,MAAa,WAC1C,UAAUD,UAAS,UAAUC;AAiBzB,WAAU,eACdC,OACA,UACA,QACAC,WAAiC,CAAA,GAAE;AAEnC,UAAM,QAAQA,SAAQ,SAAS;AAC/B,UAAMC,KAAI,CAACC,OAAc,QAAQ,MAAcH,MAAK,EAAEG,OAAM,EAAE,OAAO,MAAK,CAAE;AAE5E,eAAWC,WAAU,QAAQ;AAC7B,aAASA,WAAU,MAAM;AAEzB,QAAI,gBAAgB,SAAS,QAAO,IAAK;AACzC,QAAI,cAAc,OAAO,QAAO,IAAK;AAErC,QAAI,gBAAgB,aAAa;AAC/B,OAAC,UAAU,QAAQ,eAAe,WAAW,IAAI;QAC/C;QACA;QACA;QACA;;IAEJ;AAEA,UAAM,oBAAoB,KAAK,MAAM,cAAc,aAAa;AAChE,UAAM,oBAAoB,KAAK,OAAO,cAAc,iBAAiB,EAAE;AACvE,UAAM,kBAAkB,oBAAoB;AAC5C,UAAM,iBAAiB,kBAAkB;AAEzC,UAAM,yBAAyB,KAAK,MAAM,oBAAoB,EAAE;AAChE,UAAM,wBAAwB,KAAK,MAAM,cAAc;AACvD,UAAM,0BAA0B,KAAK,MAAM,wBAAwB,EAAE;AAErE,QAAIP,QAAO,GAAG,GAAG,iBAAiB,GAAG;AACnC,UAAI,CAACI,SAAQ,gBAAgB;AAC3B,eAAO,sBAAsB,IACzBC,GAAE,uBAAuB,CAAC,IAC1BA,GAAE,aAAa,iBAAiB;MACtC;AAEA,UAAIL,QAAO,GAAG,GAAG,iBAAiB,GAAG;AACnC,eAAOK,GAAE,uBAAuB,CAAC;MACnC;AAEA,UAAIL,QAAO,GAAG,GAAG,iBAAiB,GAAG;AACnC,eAAOK,GAAE,uBAAuB,EAAE;MACpC;AAEA,UAAIL,QAAO,IAAI,IAAI,iBAAiB,GAAG;AACrC,eAAOK,GAAE,uBAAuB,EAAE;MACpC;AAEA,UAAIL,QAAO,IAAI,IAAI,iBAAiB,GAAG;AACrC,eAAOK,GAAE,eAAe;MAC1B;AAEA,UAAIL,QAAO,IAAI,IAAI,iBAAiB,GAAG;AACrC,eAAOK,GAAE,uBAAuB,CAAC;MACnC;AAEA,aAAOA,GAAE,aAAa,CAAC;IACzB;AAEA,QAAIL,QAAO,GAAG,IAAI,iBAAiB,GAAG;AACpC,aAAOK,GAAE,aAAa,iBAAiB;IACzC;AAEA,QAAIL,QAAO,IAAI,IAAI,iBAAiB,GAAG;AACrC,aAAOK,GAAE,iBAAiB,CAAC;IAC7B;AAEA,QAAIL,QAAO,IAAI,MAAM,iBAAiB,GAAG;AACvC,aAAOK,GAAE,iBAAiB,sBAAsB;IAClD;AAEA,QAAIL,QAAO,MAAM,MAAM,iBAAiB,GAAG;AACzC,aAAOK,GAAE,UAAU,CAAC;IACtB;AAEA,QAAIL,QAAO,MAAM,OAAQ,iBAAiB,GAAG;AAC3C,aAAOK,GAAE,UAAU,qBAAqB;IAC1C;AAEA,QAAIL,QAAO,OAAQ,OAAQ,iBAAiB,GAAG;AAC7C,aAAOK,GAAE,kBAAkB,KAAK,MAAM,oBAAoB,KAAK,CAAC;IAClE;AAEA,QAAIL,QAAO,OAAQ,QAAS,iBAAiB,GAAG;AAC9C,aAAOK,GAAE,YAAY,uBAAuB;IAC9C;AAEA,QAAI,WAAW,SAAS,YAAW;AAEnC,QAAI,SAAS,SAAQ,IAAK,KAAK,GAAG;AAChC,kBAAY;IACd;AAEA,QAAI,SAAS,OAAO,YAAW;AAE/B,QAAI,OAAO,SAAQ,IAAK,IAAI,GAAG;AAC7B,gBAAU;IACZ;AAEA,UAAM,YACJ,WAAW,SACP,QACA,aAAAG,SAAM,UAAU,MAAM,EAAE,OACtB,CAAC,SAAS,IAAI,KAAK,MAAM,GAAG,EAAE,EAAE,SAAQ,KAAM,CAAC,EAC/C;AAER,UAAM,gBAAgB;AACtB,UAAM,0BAA0B,YAAY;AAC5C,UAAM,oBAAoB,oBAAoB;AAC9C,UAAM,kBAAkB,KAAK,MAAM,oBAAoB,aAAa;AAEpE,UAAM,OAAO,YACV,oBAAoB,gBAAgB,iBAAiB,YAAY,CAAC,CAAC;AAGtE,QAAI,OAAO,MAAM;AACf,aAAOH,GAAE,iBAAiB,eAAe;IAC3C;AAEA,QAAI,OAAO,MAAM;AACf,aAAOA,GAAE,gBAAgB,eAAe;IAC1C;AAEA,WAAOA,GAAE,kBAAkB,kBAAkB,CAAC;EAChD;;;ACxIO,MAAM,gBAA4C,SACvDI,OACA,OAAK;AAEL,QAAI,iBAAiB,OAAO;AAC1B,cAAQ,MAAM,KAAKA,MAAK,gBAAgB;IAC1C;AAGA,UAAMC,WAAU,MAAM,MAAMD,MAAK,gBAAgB,EAAE,MAAM,EAAE,EAAE,CAAC;AAI9D,WACEA,MAAK,2BACLC,SACG,QAAQ,KAAK,GAAG,EAChB,QACC,mBACA,CAAC,QAAgB,IAAYC,QAAe,GAAG,MAAMA,IAAG,YAAW,GAAI;EAG/E;AAiBO,MAAM,kBAA8C,CACzDF,OACA,OACAG,aACE;AACF,UAAM,YAAY,aAAaH,OAAM,OAAOG,QAAO;AACnD,UAAM,SAAS,YAAYA,WAAUA,SAAQ,SAASH,MAAK;AAC3D,UAAM,aAAa,UAAU,MAAM;AAEnC,UAAM,sBAAsB;MAC1B,cAAc,WAAW,SAAS;MAClC;MACA,KAAKA,MAAK,gBAAgB;AAE5B,WAAO,aAAa;EACtB;AAiBO,MAAM,gBAA4C,CACvDA,OACA,OACAG,aACE;AACF,UAAM,YAAY,aAAaH,OAAM,OAAOG,QAAO;AACnD,UAAM,sBAAsB,CAACH,MAAK,QAAQ,SAAS,EAAE,KACnDA,MAAK,gBAAgB;AAGvB,UAAM,IAAI,MAAM,wBAAwB,qBAAqB;EAC/D;AAEM,MAAO,qBAAP,MAAyB;IAI7B,YAAYA,OAAU;AACpB,WAAK,OAAOA;AACZ,WAAK,WAAW,CAAA;AAEhB,WAAK,SAAS,SAAS,aAAa;AACpC,WAAK,SAAS,WAAW,eAAe;AACxC,WAAK,SAAS,SAAS,aAAa;IACtC;IA0BO,SAASI,OAAc,UAAoC;AAChE,WAAK,SAASA,KAAI,IAAI;IACxB;IAWO,IAAI,OAAcD,UAAa;;AACpC,aAAO,KAAK,UAAS,KAAAA,SAAQ,qBAAe,QAAA,OAAA,SAAA,KAAI,KAAK,KAAK,eAAe,EACvE,KAAK,MACL,OACAA,QAAO;IAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AtB5GF,MAAM,uBAAoC;IACxC,eAAe;IACf,QAAQ;IACR,kBAAkB;IAClB,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,0BAA0B;IAE1B,oBAAoB,CAAC,OAAa,gBAChC,aAAa;IAEf,iBAAiB,CACfE,OACA,aACAC,UACAC,aACWF,MAAK,mBAAmBA,OAAM,aAAaC,UAASC,QAAO;IAExE,cAAc,CAACC,SAAwBA;;AAGnC,MAAOC,QAAP,MAAW;IAoIf,YAAY,eAAqB,CAAA,GAAIF,WAAgC,CAAA,GAAE;AAnI/D,WAAA,UAAkB,qBAAqB;AACvC,WAAA,iBAAyB,qBAAqB;AAC9C,WAAA,WAAW;AAOZ,WAAA,mBAAsC,CAAA;AAwGtC,WAAA,eAAqB,CAAA;AA6NrB,WAAA,IAAI,KAAK;AAgCT,WAAA,IAAI,KAAK;AAkET,WAAA,IAAI,KAAK;AAq3BT,WAAA,wBAAwB,KAAK;AAjqClC,YAAM,EACJ,QACA,gBACA,iBACA,0BACA,oBACA,iBACA,eACA,kBACA,aACA,aAAY,IACb,OAAA,OAAA,OAAA,OAAA,CAAA,GACI,oBAAoB,GACpBA,QAAO;AAGZ,WAAK,SAAS;AACd,WAAK,gBAAgB;AACrB,WAAK,mBAAmB;AACxB,WAAK,iBAAiB;AACtB,WAAK,SAAS;AACd,WAAK,kBAAkB;AACvB,WAAK,2BAA2B;AAChC,WAAK,qBAAqB;AAC1B,WAAK,kBAAkB;AACvB,WAAK,cAAc;AACnB,WAAK,gBAAgB,IAAI,cAAc,IAAI;AAC3C,WAAK,UAAU,IAAI,QAAQ,IAAI;AAC/B,WAAK,qBAAqB,IAAI,mBAAmB,IAAI;AACrD,WAAK,eAAe;AACpB,WAAK,cAAcG;AAEnB,WAAK,MAAM,YAAY;IACzB;IAWO,MAAM,cAAkB;AAC7B,uBAAAC,SAAM,KAAK,cAAc,YAAY;AACrC,WAAK,WAAU;IACjB;IASA,IAAW,SAAM;AACf,aAAO,KAAK,WAAW,KAAK,iBAAiB;IAC/C;IAOA,IAAW,OAAO,WAAiB;AACjC,UAAI,OAAO,cAAc,UAAU;AACjC,cAAM,IAAI,MACR,0CAA0C,UAAU,SAAS,GAAG;MAEpE;AAEA,YAAM,UAAU,KAAK,YAAY;AAEjC,WAAK,UAAU;AAEf,UAAI,SAAS;AACX,aAAK,WAAU;MACjB;IACF;IASA,IAAW,gBAAa;AACtB,aAAO,KAAK,kBAAkB;IAChC;IAOA,IAAW,cAAc,WAAiB;AACxC,UAAI,OAAO,cAAc,UAAU;AACjC,cAAM,IAAI,MACR,0CAA0C,UAAU,SAAS,GAAG;MAEpE;AAEA,YAAM,UAAU,KAAK,mBAAmB;AAExC,WAAK,iBAAiB;AAEtB,UAAI,SAAS;AACX,aAAK,WAAU;MACjB;IACF;IA6BO,UACL,OACAJ,UAA0B;AAE1B,MAAAA,WAAO,OAAA,OAAA,CAAA,GAAQA,QAAO;AAEtB,YAAM,qBAAyC,yBAC7C,MACA,OACAA,QAAO;AAGT,UAAI;AAIJ,YAAM,sBAAsB,mBAAmB,KAC7C,CAAC,sBAAuC;AACtC,YAAI,MAAM,kBAAkB,KAAK,GAAG;AAClC,wBAAc,OAAO,MAAM,kBAAkB,OAAgBA,QAAO;QACtE,WAAW,MAAM,kBAAkB,OAAO,GAAG;AAC3C,wBAAc,kBAAkB;QAClC;AAEA,eAAO,gBAAgB,UAAa,gBAAgB;MACtD,CAAC;AAGH,UAAI,CAAC,qBAAqB;AACxB,eAAO,KAAK,mBAAmB,IAAI,OAAOA,QAAO;MACnD;AAEA,UAAI,OAAO,gBAAgB,UAAU;AACnC,sBAAc,KAAK,YAAY,MAAM,aAAaA,QAAO;MAC3D,WACE,OAAO,gBAAgB,YACvB,eACA,MAAMA,SAAQ,KAAK,GACnB;AACA,sBAAc,UAAU;UACtB,MAAM;UACN,OAAOA,SAAQ,SAAS;UACxB,OAAO;UACP,SAAAA;UACA,WAAW,aAAa,MAAM,OAAOA,QAAO;SAC7C;MACH;AAEA,UAAIA,YAAW,uBAAuB,OAAO;AAC3C,sBAAc,YAAY,IAAI,CAAC,UAC7B,OAAO,UAAU,WACbG,aAAY,MAAM,OAAOH,QAA2B,IACpD,KAAK;MAEb;AAEA,aAAO;IACT;IAoBO,UACL,OACA,OACAA,UAA0B;AAE1B,aAAO,UAAU;QACf,MAAM;QACN;QACA;QACA,SAAO,OAAA,OAAA,CAAA,GAAOA,QAAO;QACrB,WAAW,aAAa,MAAM,OAAOA,aAAO,QAAPA,aAAO,SAAPA,WAAW,CAAA,CAAE;OACnD;IACH;IA0BO,SACL,MACA,OACAA,UAAc;AAEd,MAAAA,WAAO,OAAA,OAAA,CAAA,GAAQA,QAAO;AAEtB,UAAI,UAAU,UAAa,UAAU,MAAM;AACzC,eAAO;MACT;AAEA,cAAQ,MAAM;QACZ,KAAK;AACH,iBAAO,KAAK,iBAAiB,KAAe;QAE9C,KAAK;AACH,iBAAOK,cAAa,OAAe,OAAA,OAAA,EACjC,WAAW,KACX,WAAW,GACX,WAAW,KACX,aAAa,OACb,yBAAyB,MAAK,GAC3B,OAAO,MAAM,eAAe,CAAC,CAAA;QAGpC,KAAK;AACH,iBAAO,KAAK,mBAAmB,KAAe;QAEhD,SAAS;AACP,cAAI;AAEJ,cAAI,KAAK,MAAM,cAAc,GAAG;AAC9B,6BAAiB,KAAK,OAAO,MAAM,KAAiB;UACtD,OAAO;AACL,6BAAkB,MAAiC,SAAQ;UAC7D;AAEA,iBAAOF,aAAY,MAAM,gBAAgBH,QAAO;QAClD;MACF;IACF;IAgBO,OAAO,OAAc,OAAe;AACzC,YAAM,OAAOM,WAAU,KAAK;AAC5B,YAAMC,UAAiB,OAAO,MAAM,KAAK;AAEzC,UAAI,KAAK,SAAQ,EAAG,MAAM,UAAU,GAAG;AACrC,eAAO,KAAK,SAAQ;MACtB;AAEA,UAAI,CAACA,SAAQ;AACX,eAAO,KAAK,SAAQ;MACtB;AAEA,aAAO,KAAK,SAAS,MAAMA,OAAM;IACnC;IA+FO,iBACL,OACAP,WAA4C,CAAA,GAAE;AAE9C,aAAOK,cAAa,OAAO,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,EACzB,WAAW,KACX,QAAQ,QACR,WAAW,GACX,WAAW,KACX,aAAa,OACb,yBAAyB,OACzB,MAAM,IAAG,GACN,cAA4C,KAAK,IAAI,eAAe,CAAC,CAAC,GACtE,cACD,KAAK,IAAI,wBAAwB,CAAC,CACnC,GACEL,QAAO,CACY;IAC1B;IAkEO,mBACL,OACAA,WAA8C,CAAA,GAAE;AAEhD,aAAOK,cAAa,OAAO,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,EACzB,WAAW,IACX,QAAQ,OACR,WAAW,GACX,yBAAyB,OACzB,WAAW,KACX,aAAa,MAAK,GACf,cAA4C,KAAK,IAAI,eAAe,CAAC,CAAC,GACtE,cACD,KAAK,IAAI,0BAA0B,CAAC,CACrC,GACEL,QAAO,CACY;IAC1B;IA6EO,kBACL,OACAA,WAA6C,CAAA,GAAE;AAE/C,aAAO,kBAAkB,MAAM,OAAO,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,EACpC,WAAW,IACX,WAAW,GACX,aAAa,MACb,yBAAyB,MACzB,OAAO;QACL,SAAS;QACT,SAAS;QACT,aAAa;QACb,UAAU;QACV,UAAU;QACV,MAAM;QACP,GACE,cACD,KAAK,IAAI,qBAAqB,CAAC,CAChC,GACE,cACD,KAAK,IAAI,4BAA4B,CAAC,CACvC,GACEA,QAAO,CACiB;IAC/B;IA4JO,cACL,OACAA,WAAyC,CAAA,GAAE;AAE3C,aAAO,cAAc,MAAM,OAAO,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,EAChC,WAAW,IACX,WAAW,KACX,WAAW,GACX,aAAa,MACb,yBAAyB,MACzB,QAAQ,SACR,WAAW,WACX,OAAO;QACL,SAAS;QACT,SAAS;QACT,aAAa;QACb,UAAU;QACV,UAAU;QACV,MAAM;QACP,GACE,cACD,KAAK,IAAI,qBAAqB,CAAC,CAChC,GACE,cACD,KAAK,IAAI,4BAA4B,CAAC,CACvC,GACEA,QAAO,CACa;IAC3B;IA0EO,gBACL,OACAA,UAAyC;AAEzC,aAAOK,cAAa,OAAO,OAAA,OAAA,EACzB,MAAM,IACN,WAAW,GACX,aAAa,OACb,WAAW,KACX,WAAW,IACX,yBAAyB,MAAK,GAC3BL,QAAO,CACY;IAC1B;IAsDO,kBACL,OACAA,WAA6C,CAAA,GAAE;AAE/C,aAAO,kBAAkB,OAAO,OAAA,OAAA,EAC9B,kBAAkB,4BAClB,WAAW,KACX,WAAW,IAAG,GACXA,QAAO,CACiB;IAC/B;IAyBa,WAAW,QAAgBQ,WAAoB;;AAC1D,cAAM,iBAAiB,KAAK;AAE5B,YAAI;AACF,eAAK,SAAS;AACd,gBAAMA,UAAQ;QAChB;AACE,eAAK,SAAS;QAChB;MACF,CAAC;;IAiBM,SACL,MACAD,SACAP,WAAoC,CAAA,GAAE;AAEtC,aAAO,SAAS,MAAMO,SAAM,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,CAAA,GACvB,cAAc,OAAO,MAAM,MAAM,CAAC,CAAC,GAAA,EACtC,UAAU;QACR,IAAI,OAAO,MAAM,SAAS,KAAK;QAC/B,IAAI,OAAO,MAAM,SAAS,KAAK;QAChC,CAAA,GACEP,QAAO,CAAA;IAEd;IA+BO,OACL,MAEA,UACAA,WAA+B,EAAE,QAAQ,MAAK,GAAE;AAEhD,UAAIA,SAAQ,UAAU,KAAC,WAAAS,SAAI,KAAK,cAAc,IAAI,GAAG;AACnD,cAAM,IAAI,MAAM,aAAa,gCAAgC;MAC/D;AAEA,YAAM,kBAAc,WAAAC,SAAI,KAAK,cAAc,IAAI;AAC/C,YAAM,cAAc,UAAU,WAAW;AACzC,YAAM,eAAe,UAAU,QAAQ;AAEvC,UAAIV,SAAQ,UAAU,gBAAgB,cAAc;AAClD,cAAM,IAAI,MACR,yBAAyB,aAAa,wDAAwD,eAAe;MAEjH;AAEA,UAAI;AAEJ,UAAI,iBAAiB,UAAU;AAC7B,kBAAO,OAAA,OAAA,OAAA,OAAA,CAAA,GAAQ,WAAW,GAAK,QAAQ;MACzC,OAAO;AACL,kBAAU;MACZ;AAEA,YAAM,aAAa,KAAK,MAAM,KAAK,gBAAgB;AACnD,YAAM,OAAO,WAAW,IAAG;AAC3B,UAAI,SAAS,KAAK;AAElB,iBAAW,aAAa,YAAY;AAClC,YAAI,CAAC,OAAO,SAAS,GAAG;AACtB,iBAAO,SAAS,IAAI,CAAA;QACtB;AAEA,iBAAS,OAAO,SAAS;MAC3B;AAEA,aAAO,IAA2B,IAAI;AAEtC,WAAK,WAAU;IACjB;IA2BO,WACL,OACAA,WAAsC,CAAA,GAAE;AAExC,YAAM,EAAE,gBAAgB,mBAAmB,kBAAiB,IAAK,OAAA,OAAA,OAAA,OAAA,EAC/D,gBAAgB,MAChB,mBAAmB,SACnB,mBAAmB,SAAQ,GACxB,cACD,OAAO,MAAM,eAAe,CAAC,CAC9B,GACEA,QAAO;AAGZ,YAAMW,QAAO,MAAM;AAEnB,cAAQA,OAAM;QACZ,KAAK;AACH,iBAAO;QAET,KAAK;AACH,iBAAO,GAAG,MAAM,CAAC;QAEnB,KAAK;AACH,iBAAO,MAAM,KAAK,iBAAiB;QAErC;AACE,iBAAO;YACL,MAAM,MAAM,GAAGA,QAAO,CAAC,EAAE,KAAK,cAAc;YAC5C;YACA,MAAMA,QAAO,CAAC;YACd,KAAK,EAAE;MACb;IACF;IAmBO,eACL,UACA,QACAX,WAAiC,CAAA,GAAE;AAEnC,aAAO,eAAe,MAAM,UAAU,QAAQA,QAAO;IACvD;IAiBO,SAASQ,WAAyB;AACvC,WAAK,iBAAiB,KAAKA,SAAQ;AAEnC,aAAO,MAAK;AACV,aAAK,iBAAiB,OAAO,KAAK,iBAAiB,QAAQA,SAAQ,GAAG,CAAC;MACzE;IACF;IAOA,IAAW,UAAO;AAChB,aAAO,KAAK;IACd;IAmBO,aACL,OACAR,WAAwC,CAAA,GAAE;AAE1C,MAAAA,WAAO,OAAA,OAAA,OAAA,OAAA,EACL,WAAW,KACX,WAAW,GACX,WAAW,KACX,MAAM,IACN,QAAQ,QACR,aAAa,OACb,yBAAyB,MAAK,GAC3B,cAA4C,KAAK,IAAI,eAAe,CAAC,CAAC,GACtEA,QAAO;AAGZ,aAAOK,cAAa,OAAOL,QAA8B;IAC3D;IAOO,IAAI,OAAY;AACrB,aAAO,OAAO,MAAM,KAAK;IAC3B;IAOQ,eAAY;AAClB,WAAK,iBAAiB,QAAQ,CAACQ,cAAaA,UAAS,IAAI,CAAC;IAC5D;IAOQ,aAAU;AAChB,WAAK,YAAY;AAEjB,WAAK,aAAY;IACnB;;;;AuBx8CF;AAAA,IACE,IAAM;AAAA,MACJ,MAAQ;AAAA,QACN,gBAAkB;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,kBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAa;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,UACT,SAAW;AAAA,UACX,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN,QAAU;AAAA,QACV,QAAU;AAAA,QACV,OAAS;AAAA,QACT,SAAW;AAAA,QACX,YAAc;AAAA,QACd,KAAO;AAAA,QACP,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,oBAAsB;AAAA,QACtB,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,WAAa;AAAA,QACb,QAAU;AAAA,QACV,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,eAAiB;AAAA,QACjB,OAAS;AAAA,QACT,OAAS;AAAA,QACT,OAAS;AAAA,QACT,SAAW;AAAA,UACT,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,SAAW;AAAA,QACX,gBAAkB;AAAA,QAClB,WAAa;AAAA,UACX,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,SAAW;AAAA,QACX,QAAU;AAAA,QACV,SAAW;AAAA,QACX,KAAO;AAAA,QACP,IAAM;AAAA,QACN,QAAU;AAAA,QACV,iBAAmB;AAAA,QACnB,aAAe;AAAA,QACf,kBAAoB;AAAA,QACpB,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,QACT,IAAM;AAAA,QACN,IAAM;AAAA,QACN,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,QACf,WAAa;AAAA,QACb,aAAe;AAAA,QACf,qBAAuB;AAAA,UACrB,MAAQ;AAAA,UACR,QAAU;AAAA,UACV,SAAW;AAAA,UACX,QAAU;AAAA,QACZ;AAAA,QACA,IAAM;AAAA,QACN,WAAa;AAAA,QACb,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,KAAO;AAAA,QACP,sBAAwB;AAAA,QACxB,MAAQ;AAAA,QACR,MAAQ;AAAA,QACR,IAAM;AAAA,QACN,aAAe;AAAA,QACf,QAAU;AAAA,QACV,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,oBAAsB;AAAA,QACtB,SAAW;AAAA,QACX,WAAa;AAAA,QACb,QAAU;AAAA,QACV,IAAM;AAAA,QACN,SAAW;AAAA,UACT,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,mBAAqB;AAAA,UACnB,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,iBAAmB;AAAA,QACnB,UAAY;AAAA,UACV,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,UACZ,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,QACd,aAAe;AAAA,QACf,YAAc;AAAA,UACZ,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,WAAa;AAAA,UACX,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,WAAa;AAAA,QACb,iBAAmB;AAAA,QACnB,gBAAkB;AAAA,QAClB,UAAY;AAAA,UACV,uCAAyC;AAAA,UACzC,gCAAkC;AAAA,UAClC,yBAA2B;AAAA,UAC3B,gCAAkC;AAAA,UAClC,gCAAkC;AAAA,UAClC,6BAA+B;AAAA,UAC/B,oBAAsB;AAAA,UACtB,4BAA8B;AAAA,UAC9B,yCAA2C;AAAA,UAC3C,2BAA6B;AAAA,UAC7B,wBAA0B;AAAA,UAC1B,gCAAkC;AAAA,UAClC,uBAAyB;AAAA,UACzB,6CAA+C;AAAA,UAC/C,8BAAgC;AAAA,UAChC,wBAA0B;AAAA,UAC1B,gCAAkC;AAAA,UAClC,uBAAyB;AAAA,UACzB,mCAAqC;AAAA,UACrC,+BAAiC;AAAA,UACjC,SAAW;AAAA,UACX,MAAQ;AAAA,UACR,oBAAsB;AAAA,UACtB,QAAU;AAAA,QACZ;AAAA,QACA,QAAU;AAAA,QACV,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,QACT,MAAQ;AAAA,UACN,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,kBAAoB;AAAA,QACpB,mBAAqB;AAAA,QACrB,WAAa;AAAA,QACb,YAAc;AAAA,QACd,SAAW;AAAA,QACX,aAAe;AAAA,QACf,SAAW;AAAA,QACX,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,UAAY;AAAA,QACZ,QAAU;AAAA,QACV,cAAgB;AAAA,QAChB,0BAA4B;AAAA,UAC1B,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,UACZ,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,QAChB,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,gBAAkB;AAAA,QAClB,SAAW;AAAA,QACX,SAAW;AAAA,QACX,SAAW;AAAA,QACX,UAAY;AAAA,QACZ,SAAW;AAAA,UACT,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,oBAAsB;AAAA,QACtB,UAAY;AAAA,UACV,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,WAAa;AAAA,QACb,QAAU;AAAA,QACV,OAAS;AAAA,QACT,kBAAoB;AAAA,QACpB,SAAW;AAAA,QACX,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb,SAAW;AAAA,UACX,QAAU;AAAA,UACV,KAAO;AAAA,QACT;AAAA,QACA,MAAQ;AAAA,QACR,WAAa;AAAA,UACX,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,gBAAkB;AAAA,QAClB,QAAU;AAAA,QACV,WAAa;AAAA,QACb,MAAQ;AAAA,QACR,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,kBAAoB;AAAA,QACpB,mBAAqB;AAAA,QACrB,QAAU;AAAA,QACV,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,gBAAkB;AAAA,UAChB,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,UACd,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,QACT,YAAc;AAAA,QACd,MAAQ;AAAA,QACR,kBAAoB;AAAA,QACpB,mBAAqB;AAAA,QACrB,mBAAqB;AAAA,QACrB,KAAO;AAAA,UACL,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,kBAAoB;AAAA,QACpB,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,UACd,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,QACd,oBAAsB;AAAA,UACpB,QAAU;AAAA,UACV,SAAW;AAAA,UACX,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,cAAgB;AAAA,QAChB,MAAQ;AAAA,UACN,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,QACT,aAAe;AAAA,QACf,KAAO;AAAA,QACP,gBAAkB;AAAA,QAClB,wBAA0B;AAAA,UACxB,QAAU;AAAA,UACV,QAAU;AAAA,UACV,KAAO;AAAA,QACT;AAAA,QACA,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,MAAQ;AAAA,QACR,UAAY;AAAA,MACd;AAAA,MACA,YAAc;AAAA,QACZ,QAAU;AAAA,UACR,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAU;AAAA,QACR,yBAA2B;AAAA,UACzB,aAAe;AAAA,UACf,aAAe;AAAA,UACf,wBAA0B;AAAA,UAC1B,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,QACA,iBAAmB;AAAA,QACnB,oBAAsB;AAAA,QACtB,sBAAwB;AAAA,UACtB,QAAU;AAAA,UACV,UAAY;AAAA,QACd;AAAA,QACA,kCAAoC;AAAA,QACpC,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,oBAAsB;AAAA,QACtB,uBAAyB;AAAA,QACzB,UAAY;AAAA,QACZ,iBAAmB;AAAA,QACnB,qBAAuB;AAAA,UACrB,wBAA0B;AAAA,UAC1B,oBAAsB;AAAA,QACxB;AAAA,QACA,0BAA4B;AAAA,UAC1B,kBAAoB;AAAA,UACpB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,aAAe;AAAA,UACf,aAAe;AAAA,UACf,cAAgB;AAAA,UAChB,4BAA8B;AAAA,UAC9B,kCAAoC;AAAA,UACpC,gBAAkB;AAAA,UAClB,aAAe;AAAA,UACf,aAAe;AAAA,UACf,kBAAoB;AAAA,UACpB,iBAAmB;AAAA,UACnB,sBAAwB;AAAA,UACxB,kBAAoB;AAAA,QACtB;AAAA,QACA,0BAA4B;AAAA,QAC5B,cAAgB;AAAA,QAChB,4BAA8B;AAAA,QAC9B,6BAA+B;AAAA,QAC/B,6BAA+B;AAAA,QAC/B,oBAAsB;AAAA,UACpB,gBAAkB;AAAA,UAClB,OAAS;AAAA,QACX;AAAA,QACA,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;;;AC3aA;AAAA,IACE,IAAM;AAAA,MACJ,MAAQ;AAAA,QACN,gBAAkB;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,kBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAa;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,UACT,SAAW;AAAA,UACX,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN,QAAU;AAAA,QACV,QAAU;AAAA,QACV,OAAS;AAAA,QACT,SAAW;AAAA,QACX,YAAc;AAAA,QACd,KAAO;AAAA,QACP,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,oBAAsB;AAAA,QACtB,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,WAAa;AAAA,QACb,QAAU;AAAA,QACV,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,eAAiB;AAAA,QACjB,OAAS;AAAA,QACT,OAAS;AAAA,QACT,OAAS;AAAA,QACT,SAAW;AAAA,UACT,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,SAAW;AAAA,QACX,gBAAkB;AAAA,QAClB,WAAa;AAAA,UACX,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,SAAW;AAAA,QACX,QAAU;AAAA,QACV,SAAW;AAAA,QACX,KAAO;AAAA,QACP,IAAM;AAAA,QACN,QAAU;AAAA,QACV,iBAAmB;AAAA,QACnB,aAAe;AAAA,QACf,kBAAoB;AAAA,QACpB,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,QACT,IAAM;AAAA,QACN,IAAM;AAAA,QACN,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,QACf,WAAa;AAAA,QACb,aAAe;AAAA,QACf,qBAAuB;AAAA,UACrB,MAAQ;AAAA,UACR,QAAU;AAAA,UACV,SAAW;AAAA,UACX,QAAU;AAAA,QACZ;AAAA,QACA,IAAM;AAAA,QACN,WAAa;AAAA,QACb,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,KAAO;AAAA,QACP,sBAAwB;AAAA,QACxB,MAAQ;AAAA,QACR,MAAQ;AAAA,QACR,IAAM;AAAA,QACN,aAAe;AAAA,QACf,QAAU;AAAA,QACV,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,oBAAsB;AAAA,QACtB,SAAW;AAAA,QACX,WAAa;AAAA,QACb,QAAU;AAAA,QACV,IAAM;AAAA,QACN,SAAW;AAAA,UACT,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,mBAAqB;AAAA,UACnB,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,iBAAmB;AAAA,QACnB,UAAY;AAAA,UACV,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,UACZ,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,QACd,aAAe;AAAA,QACf,YAAc;AAAA,UACZ,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,WAAa;AAAA,UACX,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,WAAa;AAAA,QACb,iBAAmB;AAAA,QACnB,gBAAkB;AAAA,QAClB,UAAY;AAAA,UACV,uCAAyC;AAAA,UACzC,gCAAkC;AAAA,UAClC,yBAA2B;AAAA,UAC3B,gCAAkC;AAAA,UAClC,gCAAkC;AAAA,UAClC,6BAA+B;AAAA,UAC/B,oBAAsB;AAAA,UACtB,4BAA8B;AAAA,UAC9B,yCAA2C;AAAA,UAC3C,2BAA6B;AAAA,UAC7B,wBAA0B;AAAA,UAC1B,gCAAkC;AAAA,UAClC,uBAAyB;AAAA,UACzB,6CAA+C;AAAA,UAC/C,8BAAgC;AAAA,UAChC,wBAA0B;AAAA,UAC1B,gCAAkC;AAAA,UAClC,uBAAyB;AAAA,UACzB,mCAAqC;AAAA,UACrC,+BAAiC;AAAA,UACjC,SAAW;AAAA,UACX,MAAQ;AAAA,UACR,oBAAsB;AAAA,UACtB,QAAU;AAAA,QACZ;AAAA,QACA,QAAU;AAAA,QACV,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,QACT,MAAQ;AAAA,UACN,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,kBAAoB;AAAA,QACpB,mBAAqB;AAAA,QACrB,WAAa;AAAA,QACb,YAAc;AAAA,QACd,SAAW;AAAA,QACX,aAAe;AAAA,QACf,SAAW;AAAA,QACX,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,UAAY;AAAA,QACZ,QAAU;AAAA,QACV,cAAgB;AAAA,QAChB,0BAA4B;AAAA,UAC1B,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,UACZ,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,QAChB,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,gBAAkB;AAAA,QAClB,SAAW;AAAA,QACX,SAAW;AAAA,QACX,SAAW;AAAA,QACX,UAAY;AAAA,QACZ,SAAW;AAAA,UACT,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,oBAAsB;AAAA,QACtB,UAAY;AAAA,UACV,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,WAAa;AAAA,QACb,QAAU;AAAA,QACV,OAAS;AAAA,QACT,kBAAoB;AAAA,QACpB,SAAW;AAAA,QACX,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb,SAAW;AAAA,UACX,QAAU;AAAA,UACV,KAAO;AAAA,QACT;AAAA,QACA,MAAQ;AAAA,QACR,WAAa;AAAA,UACX,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,gBAAkB;AAAA,QAClB,QAAU;AAAA,QACV,WAAa;AAAA,QACb,MAAQ;AAAA,QACR,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,kBAAoB;AAAA,QACpB,mBAAqB;AAAA,QACrB,QAAU;AAAA,QACV,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,gBAAkB;AAAA,UAChB,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,UACd,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,QACT,YAAc;AAAA,QACd,MAAQ;AAAA,QACR,kBAAoB;AAAA,QACpB,mBAAqB;AAAA,QACrB,mBAAqB;AAAA,QACrB,KAAO;AAAA,UACL,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,kBAAoB;AAAA,QACpB,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,UACd,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,QACd,oBAAsB;AAAA,UACpB,QAAU;AAAA,UACV,SAAW;AAAA,UACX,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,cAAgB;AAAA,QAChB,MAAQ;AAAA,UACN,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,QACT,aAAe;AAAA,QACf,KAAO;AAAA,QACP,gBAAkB;AAAA,QAClB,wBAA0B;AAAA,UACxB,QAAU;AAAA,UACV,QAAU;AAAA,UACV,KAAO;AAAA,QACT;AAAA,QACA,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,MAAQ;AAAA,QACR,UAAY;AAAA,MACd;AAAA,MACA,YAAc;AAAA,QACZ,QAAU;AAAA,UACR,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAU;AAAA,QACR,yBAA2B;AAAA,UACzB,aAAe;AAAA,UACf,aAAe;AAAA,UACf,wBAA0B;AAAA,UAC1B,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,QACA,iBAAmB;AAAA,QACnB,oBAAsB;AAAA,QACtB,sBAAwB;AAAA,UACtB,QAAU;AAAA,UACV,UAAY;AAAA,QACd;AAAA,QACA,kCAAoC;AAAA,QACpC,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,oBAAsB;AAAA,QACtB,uBAAyB;AAAA,QACzB,UAAY;AAAA,QACZ,iBAAmB;AAAA,QACnB,qBAAuB;AAAA,UACrB,wBAA0B;AAAA,UAC1B,oBAAsB;AAAA,QACxB;AAAA,QACA,0BAA4B;AAAA,UAC1B,kBAAoB;AAAA,UACpB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,aAAe;AAAA,UACf,aAAe;AAAA,UACf,4BAA8B;AAAA,UAC9B,kCAAoC;AAAA,UACpC,gBAAkB;AAAA,UAClB,aAAe;AAAA,UACf,aAAe;AAAA,UACf,kBAAoB;AAAA,UACpB,iBAAmB;AAAA,UACnB,sBAAwB;AAAA,UACxB,kBAAoB;AAAA,QACtB;AAAA,QACA,0BAA4B;AAAA,QAC5B,cAAgB;AAAA,QAChB,4BAA8B;AAAA,QAC9B,6BAA+B;AAAA,QAC/B,6BAA+B;AAAA,QAC/B,oBAAsB;AAAA,UACpB,gBAAkB;AAAA,UAClB,OAAS;AAAA,QACX;AAAA,QACA,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;;;ACraA,MAAM,OAAO,IAAII,MAAK;AACtB,SAAO,OAAO;AACd,SAAO,cAAc;AAAA,IACnB,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;;;ACVA,MAAM,iBAAN,MAAqB;AAAA,IACnB,cAAc;AACZ,WAAK,YAAY,oBAAI,IAAI;AACzB,WAAK,gBAAgB,oBAAI,IAAI;AAC7B,WAAK,iBAAiB,oBAAI,IAAI;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,OAAOC,WAAU;AAC3B,UAAI,KAAK,eAAe,IAAI,KAAK,GAAG;AAClC,QAAAA,UAAS,KAAK,eAAe,IAAI,KAAK,CAAC;AACvC,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,OAAOA,WAAU,YAAY,OAAO;AACrC,WAAK,UAAU,IAAI,KAAK,KAAK,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC;AACzD,WAAK,UAAU,IAAI,KAAK,EAAE,KAAKA,SAAQ;AACvC,UAAI;AACF,aAAK,YAAY,OAAOA,SAAQ;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA,IAKA,QAAQ,OAAOA,WAAU;AACvB,WAAK,GAAG,OAAOA,WAAU,IAAI;AAAA,IAC/B;AAAA;AAAA,IAGA,KAAK,OAAOA,WAAU,YAAY,OAAO;AACvC,WAAK,cAAc,IAAI,KAAK,KAAK,KAAK,cAAc,IAAI,OAAO,CAAC,CAAC;AACjE,UAAI,EAAE,aAAa,KAAK,YAAY,OAAOA,SAAQ,IAAI;AAGrD,aAAK,cAAc,IAAI,KAAK,EAAE,KAAKA,SAAQ;AAAA,MAC7C;AAAA,IACF;AAAA;AAAA;AAAA,IAGA,UAAU,OAAOA,WAAU;AACzB,WAAK,KAAK,OAAOA,WAAU,IAAI;AAAA,IACjC;AAAA;AAAA,IAGA,IAAI,OAAOA,YAAW,MAAM;AAC1B,UAAIA,cAAa,MAAM;AAErB,aAAK,UAAU,OAAO,KAAK;AAC3B,aAAK,cAAc,OAAO,KAAK;AAAA,MACjC,OAAO;AAEL,YAAI,OAAO,CAAC,eAAe;AACzB,cAAI,YAAY,WAAW,IAAI,KAAK;AACpC,cAAI,WAAW;AACb,uBAAW,IAAI,OAAO,UAAU,OAAO,CAAC,UAAU,EAAE,UAAUA,UAAS,CAAC;AAAA,UAC1E;AAAA,QACF;AACA,aAAK,KAAK,SAAS;AACnB,aAAK,KAAK,aAAa;AAAA,MACzB;AAAA,IACF;AAAA;AAAA,IAGA,QAAQ,UAAU,MAAM;AACtB,UAAI,MAAM;AACV,WAAK,eAAe,IAAI,OAAO,GAAG,IAAI;AACtC,UAAI,WAAW,CAAC,YAAYC,WAAUC,UAAS;AAC7C,YAAI,YAAY,WAAW,IAAID,MAAK;AACpC,YAAI,aAAa,UAAU,QAAQ;AACjC,oBAAU,QAAQ,CAAC,aAAa;AAC9B,qBAAS,GAAGC,KAAI;AAAA,UAClB,CAAC;AACD,gBAAM;AAAA,QACR;AAAA,MACF;AACA,eAAS,KAAK,eAAe,OAAO,GAAG,IAAI;AAC3C,eAAS,KAAK,WAAW,OAAO,GAAG,IAAI;AACvC,WAAK,cAAc,OAAO,KAAK;AAC/B,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAqBC,eAArB,cAAyC,eAAe;AAAA,IAEtD,aAAa,KAAK,EAAC,eAAc,MAAM,aAAY,KAAI,IAAI,CAAC,GAAG;AAAA,IAc/D;AAAA,IAEA,YAAY,EAAC,IAAAC,KAAI,KAAK,KAAI,IAAI,CAAC,GAAG;AAChC,YAAM;AACN,WAAK,KAAKA;AACV,WAAK,MAAM;AACX,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,UAAU;AACR,aAAO,QAAQ,KAAK,KAAK,GAAG;AAAA,IAC9B;AAAA,IAEA,eAAe;AACb,UAAIC,QAAO;AACX,UAAG,KAAK,QAAQ,SAAS;AACvB,gBAAQ,IAAI,wBAAwB;AACpC,aAAK,SAAS,IAAI,MAAM,OAAO,KAAK,IAAI;AAAA,UACtC,KAAK,KAAK;AAAA,UACV,YAAY;AAAA,QACd,CAAC;AACD,aAAK,OAAO,GAAG,SAAS,WAAW;AACjC,UAAAA,MAAK,QAAQ,OAAO;AAAA,QACtB,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,0BAA0B;AACtC,aAAK,SAAS,IAAI,GAAG,OAAO,KAAK,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,UAAU;AAAE,UAAAA,MAAK,aAAa,OAAOA,KAAI;AAAA,QAAE,GAAG,iBAAiB,CAAC,UAAU;AAAE,UAAAA,MAAK,kBAAkB,OAAOA,KAAI;AAAA,QAAE,EAAE,EAAE,CAAC;AAAA,MAEpL;AAAA,IACF;AAAA,IAEA,YAAY;AACV,UAAG,KAAK,QAAQ,SAAS;AACvB,aAAK,OAAO,MAAM;AAAA,MACpB,OAAO;AACL,aAAK,OAAO,WAAW;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,aAAa;AACX,UAAG,KAAK,QAAQ,SAAS;AACvB,aAAK,OAAO,KAAK;AAAA,MACnB,OAAO;AACL,aAAK,OAAO,UAAU;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,aAAa,OAAOA,OAAM;AACxB,UAAI,SAAS,MAAM;AACnB,UAAI,YAAY,aAAaA,MAAK,GAAG;AACrC,aAAO,cAAc,SAAS;AAC9B,cAAQ,IAAI,uBAAuB,KAAK;AACxC,YAAM,WAAW,OAAO,UAAU,EAAE,GAAG,QAAQ,iBAAiB,EAAE;AAElE,YAAM,UAAU,IAAI,YAAY,iBAAiB;AAAA,QAC/C,QAAQ,EAAC,UAAoB,OAAc;AAAA,QAC3C,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ,CAAC;AAED,eAAS,cAAc,OAAO;AAAA,IAEhC;AAAA,IAEA,kBAAkB,OAAOA,OAAM;AAC7B,UAAI,QAAQ,MAAM;AAElB,cAAO,OAAO;AAAA,QACZ,KAAK,GAAG,YAAY;AAClB,UAAAA,MAAK,QAAQ,OAAO;AACpB;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACA,WAAS,aAAa,KAAK;AACzB,QAAI,QAAQ;AACZ,QAAIC,SAAQ,IAAI,MAAM,KAAK;AAC3B,WAAOA,OAAM,CAAC;AAAA,EAChB;;;ACrLA,SAAO,cAAcC;AACrB,EAAAA,aAAY,KAAK;;;ACHjB,oBAAiB;AACjB,mBAAkB;AAElB,cAAAC,QAAK,OAAO,gBAAgB,WAAW;AAAA,IACrC,SAAS;AAAA,IACT,UAAU;AAAA,IACV,eAAe;AAAA,IACf,OAAO;AAAA,EACT;AAEA,cAAAA,QAAK,OAAO,gBAAgB,WAAW;AAAA,IACrC,SAAS;AAAA,IACT,UAAU;AAAA,IACV,eAAe;AAAA,IACf,OAAO;AAAA,EACT;AAEA,cAAAA,QAAK,OAAO,gBAAgB,mBAAmB;AAAA,IAC7C,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AAEA,cAAAA,QAAK,OAAO,gBAAgB,sBAAsB;AAAA,IAChD,SAAS;AAAA,IACT,eAAe;AAAA,IACf,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ,SAAU,SAAS;AACvB,aAAO,YAAAA,QAAK,QAAQ,QAAQ,UAAU,MAAM,YAAAA,QAAK,OAAO,gBAAgB,KAAK,aAAa,EAAE;AAAA,IAChG;AAAA,EACF;AAEA,cAAAA,QAAK,OAAO,gBAAgB,+BAA+B;AAAA,IACzD,SAAS;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAGA,MAAI,CAAC,YAAAA,QAAK,OAAO,eAAe,OAAO;AACrC,gBAAAA,QAAK,OAAO,eAAe,QAAQ;AAAA,MACjC,eAAe;AAAA;AAAA,MACf,aAAa;AAAA,IACf;AAAA,EACF;AAGA,MAAI,CAAC,YAAAA,QAAK,OAAO,eAAe,UAAU;AACxC,gBAAAA,QAAK,OAAO,eAAe,WAAW;AAAA,MACpC,eAAe;AAAA;AAAA,MACf,aAAa;AAAA,IACf;AAAA,EACF;AAEA,WAAS,iBAAiB,mBAAmB,WAAS;AACpD,UAAM,EAAE,eAAe,IAAI,MAAM;AAGjC,UAAM,WAAW,EAAE,kCAAkC,cAAc;AACnE,aAAS,YAAY,+CAA+C;AACpE,aAAS,KAAK,IAAI;AAClB,aAAS,CAAC,EAAE,mBAAmB,YAAY;AAAA;AAAA;AAAA,GAG1C;AACD,UAAM,cAAc,EAAE,oCAAoC,cAAc;AAExE,gBAAY,CAAC,EAAE;AAAA,MAAmB;AAAA,MAC5B;AAAA,IAML;AACD,QAAI,KAAK,IAAI,gBAAgB,MAAM,MAAM;AACzC,UAAM,KAAK,IAAI,iBAAiB,KAAK;AAErC,UAAM,MAAM,IAAI,yBAAyB,KAAK;AAAA,EAEhD,CAAC;AAKD,MAAM,2BAAN,MAA+B;AAAA,IAE7B,YAAY,qBAAqB;AAC/B,WAAK,oBAAoB,oBAAoB;AAC7C,WAAK,aAAa,KAAK,kBAAkB;AAEzC,WAAK,cAAc,KAAK,kBAAkB;AAE1C,WAAK,cAAc;AACnB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,gBAAgB;AACd,YAAM,kBAAkB,EAAE,kCAAkC,KAAK,WAAW;AAC5E,YAAM,YAAY,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACrD,YAAM,kBAAkB,UAAU,IAAI,CAAAC,UAAQ,kBAAkBA,YAAWA,UAAS,KAAK,aAAa,MAAMA,mBAAkB,EAAE,KAAK,EAAE;AAEvI,sBAAgB,CAAC,EAAE;AAAA,QAAmB;AAAA,QACpC,kNAEI;AAAA,MAEN;AAAA,IACF;AAAA,IAEA,yBAAyB;AAEvB,eAAS,iBAAiB,yBAAyB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AACxF,WAAK,YAAY,iBAAiB,SAAS,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,IACxE;AAAA,IAEA,sBAAsB,OAAO;AAC3B,UAAI,WAAW,KAAK,YAAY,cAAc,mBAAmB;AAEjE,UAAI,KAAK,cAAc,UAAU;AAC/B,YAAI,YAAY,OAAO,aAAa;AACpC,YAAI,UAAU,aAAa,GAAG;AAC5B,cAAIC,SAAQ,UAAU,WAAW,CAAC;AAClC,cAAI,eAAeA,OAAM,eAAe;AAExC,cAAI,mBAAmB,OAAO,iBAAiB,YAAY,EAAE;AAC7D,mBAAS,QAAQ,oBAAoB;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,YAAY,OAAO;AACjB,UAAI,SAAS,MAAM;AAGnB,UAAI,OAAO,QAAQ,eAAe,GAAG;AACnC,YAAI,KAAK,YAAY;AACnB,eAAK,WAAW,kBAAkB,SAAS,OAAO,KAAK;AAAA,QACzD;AAAA,MACF;AAGA,UAAI,OAAO,QAAQ,mBAAmB,GAAG;AACvC,YAAI,KAAK,YAAY;AACnB,eAAK,WAAW,kBAAkB,YAAY,OAAO,KAAK;AAAA,QAC5D;AAAA,MACF;AAAA,IACF;AAAA,EAEF;AAMA,MAAM,mBAAN,MAAuB;AAAA,IACrB,YAAY,qBAAqB;AAC/B,WAAK,aAAa,oBAAoB;AACtC,WAAK,cAAc;AAAA,IACrB;AAAA,IAEA,gBAAgB;AACd,WAAK,iBAAiB,EAAE,KAAK,kDAAkD,EAAE,OAAO,KAAK,kBAAkB,uBAAuB,6EAA6E,CAAC;AACpN,WAAK,iBAAiB,EAAE,KAAK,kDAAkD,EAAE,OAAO,KAAK,qBAAqB,8BAA8B,0FAA0F,sCAAsC,2CAA2C,CAAC;AAAA,IAC9T;AAAA,IAEA,kBAAkBC,OAAM,SAAQ;AAC5B,aAAO,kEAAkEA,yBAAwBA,wBAAuB;AAAA,IAC5H;AAAA,IAEA,qBAAqBA,OAAM,SAAS,QAAQ,cAAc,IAAG;AAC3D,YAAMC,WAAU,eAAe;AAC7B,aAAO,gCAAgCA,0BAAyB,yBAAyB;AAAA,IAE7F;AAAA,IAEA,YAAY;AACV,aAAO,KAAK,WAAW;AAAA,IACzB;AAAA,IAEA,iBAAiB;AACf,aAAO,EAAE,KAAK,UAAU;AAAA,IAC1B;AAAA,IAEA,mBAAmB;AACjB,aAAO,KAAK,eAAe,EAAE,OAAO;AAAA,IACtC;AAAA,EAEF;AAOA,MAAM,kBAAN,MAAsB;AAAA,IACpB,YAAY,SAAS;AACnB,WAAK,UAAU;AAEf,WAAK,UAAU;AACf,WAAK,SAAS,QAAQ;AACtB,WAAK,UAAU,QAAQ;AACvB,WAAK,cAAc,KAAK,QAAQ,cAAc,gCAAgC;AAC9E,WAAK,wBAAwB,KAAK,QAAQ,cAAc,mCAAmC;AAC3F,WAAK,eAAe,KAAK,QAAQ,cAAc,6BAA6B;AAE5E,WAAK,MAAM;AACX,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,uBAAuB;AACrB,WAAK,YAAY,iBAAiB,SAAS,KAAK,SAAS,KAAK,IAAI,CAAC;AACnE,WAAK,YAAY,iBAAiB,WAAW,KAAK,SAAS,KAAK,IAAI,CAAC;AACrE,WAAK,aAAa,iBAAiB,SAAS,KAAK,MAAM,KAAK,IAAI,CAAC;AAAA,IACnE;AAAA,IAEA,SAAS,OAAO;AACd,UAAI,QAAQ,MAAM,OAAO,MAAM,KAAK;AACpC,UAAIC,WAAU,MAAM,MAAM,KAAK,OAAO;AAItC,UAAIA,YAAW,MAAM;AACnB,aAAK,MAAMA,SAAQ,CAAC,CAAC;AAAA,MAGvB,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAAA,IAEA,MAAM,OAAO;AACX,QAAE,KAAK;AAAA,QACL,KAAK,gBAAgB,mBAAmB,KAAK;AAAA,QAC7C,MAAM;AAAA,QACN,OAAO,KAAK,MAAM,KAAK,IAAI;AAAA,QAC3B,SAAS,KAAK,UAAU,KAAK,IAAI;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,OAAO;AACX,UAAI,KAAK,gBAAgB,MAAM;AAAE;AAAA,MAAO;AAExC,UAAI,aAAa,IAAI,YAAAL,QAAK,WAAW,KAAK,YAAY;AACtD,WAAK,OAAO,iBAAiB,UAAU;AACvC,WAAK,QAAQ,MAAM;AAAA,IACrB;AAAA,IAEA,UAAU,OAAO;AACf,WAAK,eAAe;AACpB,WAAK,sBAAsB,MAAM,UAAU;AAAA,IAC7C;AAAA,IAEA,QAAQ;AACN,WAAK,sBAAsB,MAAM,UAAU;AAC3C,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;;;ACjQA;AACA;;;ACDA,SAAO,oBAAoB,YAAY,MAAM;AAC3C,UAAM,QAAQ,SAAS,YAAY,QAAQ;AAC3C,UAAM,UAAU,wBAAwB,MAAM,IAAI;AAClD,UAAM,OAAO;AACb,WAAO,cAAc,KAAK;AAAA,EAC5B;AAEA,SAAO,aAAa;AAAA,IAClB,sBAAsB;AAAA,MACpB,QAAQ,EAAE,KAAK,WAAW,KAAK,UAAU;AAAA,MACzC,MAAM;AAAA,IACR;AAAA,IACA,oBAAoB,CAAC,QAAQ,OAAO,WAAW;AAC7C,UAAG,MAAM,SAAS,UAAU;AAC1B,eAAO,UAAU,MAAM,SAAS,QAAQ;AAAA,MAC1C,OACK;AACH,eAAO,QAAQ,EAAE;AAAA,MACnB;AACA,aAAO,UAAU,MAAM,SAAS,QAAQ;AAExC,UAAG,QAAQ;AACT,eAAO,SAAS,EAAE,SAAS,MAAM,UAAU,UAAU,MAAM,SAAS,SAAS,CAAC;AAC9E,eAAO,WAAW,IAAI;AAAA,MACxB;AAAA,IACF;AAAA,EACF;;;AC1BA,MAAAM,iBAAc;AACd,uBAAoB;AAEpB,qBAAAC,SAAQ,eAAAC,OAAC;;;ACHT,SAAO,6BAA6B,CAAC;AAErC,SAAO,+BAA+B,SAAS,SAAS;AACtD,+BAA2B,KAAK,OAAO;AACvC,WAAO,QAAQ,SAAS,IAAI;AAAA,EAC9B;AAEA,SAAO,oBAAoB,SAAS,SAAS;AAC3C,QAAIC,IAAG,KAAK,SAAS;AACrB,YAAQ,IAAI,uBAAuB;AACnC,IAAAA,KAAI;AACJ,UAAM;AACN,cAAU;AACV,IAAAA,KAAI;AACJ,UAAM,2BAA2B;AACjC,cAAU,CAAC;AACX,WAAOA,KAAI,KAAK;AACd,gBAAU,2BAA2BA,EAAC;AACtC,cAAQ,OAAO;AACf,cAAQ,KAAKA,IAAG;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AAOA,SAAO,aAAa;AAAA,IAClB,aAAa;AAAA,IACb,wBAAwB,CAAC;AAAA,IACzB,sBAAsB;AAAA,MACpB,QAAQ;AAAA,QACN,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAAA,MACA,MAAM;AAAA,IACR;AAAA,IACA,0BAA0B,SAAS,SAAS;AAC1C,WAAK,uBAAuB,KAAK,OAAO;AACxC,UAAI,KAAK,aAAa;AACpB,eAAO,EAAE,WAAW;AAClB,iBAAO,QAAQ,SAAS,IAAI;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,oBAAoB,SAAS,QAAQ,OAAO,QAAQ;AAClD,UAAI,MAAM,SAAS,UAAU;AAC3B,eAAO,UAAU,MAAM,SAAS,QAAQ;AAAA,MAC1C,OAAO;AACL,eAAO,QAAQ,EAAE;AAAA,MACnB;AACA,aAAO,UAAU,MAAM,SAAS,QAAQ;AACxC,UAAI,QAAQ;AACV,eAAO,SAAS;AAAA,UACd,SAAS,MAAM;AAAA,UACf,UAAU,MAAM,SAAS;AAAA,QAC3B,CAAC;AACD,eAAO,OAAO,WAAW,IAAI;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAEA,SAAO,uBAAuB,WAAW;AACvC,eAAW,cAAc;AACzB,WAAO,EAAE,WAAW;AAClB,UAAIC,IAAG,MAAM,KAAK,SAAS;AAC3B,YAAM,WAAW;AACjB,gBAAU,CAAC;AACX,WAAKA,KAAI,GAAG,OAAO,IAAI,QAAQA,KAAI,MAAMA,MAAK;AAC5C,kBAAU,IAAIA,EAAC;AACf,gBAAQ,KAAK,QAAQ,SAAS,IAAI,CAAC;AAAA,MACrC;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,+BAA6B,SAAS,SAAS;AAC7C,QAAI,WAAW,aAAa;AAC1B,aAAO,EAAE,WAAW;AAClB,YAAIA,IAAG,MAAM,KAAK,SAAS;AAC3B,cAAM,WAAW;AACjB,kBAAU,CAAC;AACX,aAAKA,KAAI,GAAG,OAAO,IAAI,QAAQA,KAAI,MAAMA,MAAK;AAC5C,oBAAU,IAAIA,EAAC;AACf,kBAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,QAC/B;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF,CAAC;;;ACzFD,uBAAO;;;ACFP,IAAE,WAAW;AACX,QAAI,QAAQ,QAAQ,eAAeC,KAAI;AACvC,aAAS,EAAE,uBAAuB;AAClC,aAAS,EAAE,uBAAuB;AAClC,oBAAgB,OAAO,KAAK,mBAAmB;AAC/C,gBAAY,SAASC,OAAM;AACzB,oBAAc,KAAKA,KAAI;AACvB,aAAO,MAAM;AACb,aAAO,kBAAkB,aAAa;AAAA,IACxC;AACA,MAAE,8BAA8B,EAAE,GAAG,gBAAgB,SAAS,OAAOC,OAAM,QAAQ,KAAK;AACtF,aAAO,UAAUA,KAAI;AAAA,IACvB,CAAC;AACD,WAAO,GAAG,gBAAgB,4BAA4B,SAAS,OAAOA,OAAM,QAAQ,KAAK;AACvF,aAAO,KAAKA,KAAI;AAChB,aAAO,OAAO,MAAM,MAAM;AAAA,IAC5B,CAAC;AACD,WAAO,GAAG,cAAc,4BAA4B,SAAS,OAAO,KAAK,QAAQC,QAAO;AACtF,aAAO,UAAU,IAAI,YAAY;AAAA,IACnC,CAAC;AACD,WAAO,GAAG,gBAAgB,iCAAiC,SAAS,OAAOD,OAAM,QAAQ,KAAK;AAC5F,aAAO,UAAUA,KAAI;AAAA,IACvB,CAAC;AACD,WAAO,GAAG,gBAAgB,iCAAiC,SAAS,OAAOA,OAAM,QAAQ,KAAK;AAC5F,aAAO,UAAUA,KAAI;AAAA,IACvB,CAAC;AACD,WAAO,GAAG,gBAAgB,0BAA0B,SAAS,OAAOA,OAAM,QAAQ,KAAK;AACrF,aAAO,OAAO,KAAKA,KAAI;AAAA,IACzB,CAAC;AACD,QAAI,SAAS,KAAK,MAAM,aAAa,GAAG;AACtC,MAAAF,MAAK,SAAS,KAAK,OAAO,aAAa,QAAQ,SAAS,KAAK,MAAM;AACnE,aAAO,KAAK,iBAAiBA,MAAK,IAAI,EAAE,KAAK,+BAA+B,EAAE,MAAM;AACpF,eAAS,OAAO;AAAA,IAClB;AACA,MAAE,cAAc,EAAE,GAAG,SAAS,qBAAqB,SAAS,OAAO;AACjE,UAAI,aAAa;AACjB,YAAM,EAAE,IAAI,EAAE,KAAK,KAAK;AACxB,oBAAc,EAAE,IAAI,EAAE,KAAK,YAAY;AACvC,aAAO,EAAE,KAAK,KAAK;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,WAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,iBAAiB,SAAS,OAAO;AAC9D,UAAI,OAAO,MAAM,OAAOI,UAASC;AACjC,cAAQ,EAAE,aAAa;AACvB,aAAO,MAAM,KAAK,KAAK;AACvB,MAAAD,WAAU,MAAM,KAAK,0BAA0B,EAAE,IAAI;AACrD,MAAAC,QAAO,MAAM,KAAK,oBAAoB,EAAE,IAAI;AAC5C,cAAQ,MAAM,KAAK,qBAAqB,EAAE,IAAI;AAC9C,MAAAL,MAAK,MAAM,KAAK,aAAa,EAAE,IAAI;AACnC,aAAO,EAAE,KAAK,MAAM;AAAA,QAClB,IAAIA;AAAA,QACJ,SAASI;AAAA,QACT;AAAA,QACA,MAAMC;AAAA,MACR,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;;;ACzDD,4BAAO;;;ACUP,GAAC,SAAUC,IAAG;AAEd,QAAI,mBAAmB;AAAA;AAAA,MAEnB,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,eAAe;AAAA;AAAA,MAGf,UAAU;AAAA,MACV,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,iBAAiB;AAAA;AAAA,MAGjB,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,mBAAmB;AAAA;AAAA,MAGnB,YAAY;AAAA;AAAA,MAGZ,aAAa;AAAA,MACb,oBAAoB;AAAA;AAAA,MAGpB,UAAU;AAAA;AAAA,MAGV,kBAAkB,SAAS,MAAK;AAAE,eAAO,SAAS,KAAK,KAAK,gBAAgB,IAAG;AAAA,MAAQ;AAAA,MACvF,gBAAgB,SAAS,MAAM;AAAE,eAAO,YAAY,KAAK,KAAK,gBAAgB,IAAI;AAAA,MAAY;AAAA;AAAA,MAG9F,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,IACb;AAGA,QAAI,kBAAkB;AAAA,MAClB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,aAAa;AAAA,MACb,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,cAAc;AAAA,MACd,eAAe;AAAA,MACf,sBAAsB;AAAA,MACtB,YAAY;AAAA,IAChB;AAGA,QAAI,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK;AAAA,IACT;AAGA,QAAI,MAAM;AAAA,MACN,WAAW;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,OAAO;AAAA,IACX;AAGA,QAAIC,WAAU;AAAA,MACV,MAAM,SAAS,yBAAyBC,UAAS;AAC7C,YAAI,WAAWF,GAAE,OAAO,CAAC,GAAG,kBAAkBE,YAAW,CAAC,CAAC;AAE3D,eAAO,KAAK,KAAK,WAAY;AACzB,UAAAF,GAAE,IAAI,EAAE,KAAK,oBAAoB,IAAIA,GAAE,UAAU,MAAM,yBAAyB,QAAQ,CAAC;AAAA,QAC7F,CAAC;AAAA,MACL;AAAA,MACA,OAAO,WAAW;AACd,aAAK,KAAK,kBAAkB,EAAE,MAAM;AACpC,eAAO;AAAA,MACX;AAAA,MACA,KAAK,SAAS,MAAM;AAChB,aAAK,KAAK,kBAAkB,EAAE,IAAI,IAAI;AACtC,eAAO;AAAA,MACX;AAAA,MACA,QAAQ,SAAS,MAAM;AACnB,aAAK,KAAK,kBAAkB,EAAE,OAAO,IAAI;AACzC,eAAO;AAAA,MACX;AAAA,MACA,KAAK,WAAW;AACf,eAAO,KAAK,KAAK,kBAAkB,EAAE,UAAU;AAAA,MAChD;AAAA,IACJ;AAGA,IAAAA,GAAE,GAAG,aAAa,SAAU,QAAQ;AAEhC,UAAGC,SAAQ,MAAM,GAAG;AAChB,eAAOA,SAAQ,MAAM,EAAE,MAAM,MAAM,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC,CAAC;AAAA,MAC/E,OAAO;AACH,eAAOA,SAAQ,KAAK,MAAM,MAAM,SAAS;AAAA,MAC7C;AAAA,IACJ;AAGA,IAAAD,GAAE,YAAY,SAAU,OAAO,aAAa,UAAU;AAMlD,UAAGA,GAAE,KAAK,WAAW,MAAM,YAAYA,GAAE,KAAK,WAAW,MAAM,YAAY;AAEvE,iBAAS,MAAM;AAGf,YAAI,MAAM,WAAW;AAGrB,YAAG,SAAS,gBAAgB,QAAW;AACnC,cAAG,IAAI,QAAQ,KAAK,MAAM,IAAI;AAC1B,qBAAS,cAAc;AAAA,UAC3B,OAAO;AACH,qBAAS,cAAe,SAAS,KAAK,MAAM,MAAM,EAAE,CAAC,MAAM,IAAI,MAAM,MAAM,EAAE,CAAC;AAAA,UAClF;AAAA,QACJ;AAAA,MACJ,WAAU,OAAO,gBAAiB,UAAU;AAExC,iBAAS,aAAa;AAAA,MAC1B;AAGA,UAAG,SAAS,SAAS;AAEjB,iBAAS,UAAUA,GAAE,OAAO,CAAC,GAAG,iBAAiB,SAAS,OAAO;AAAA,MACrE,WAAU,SAAS,OAAO;AAEtB,iBAAS,UAAU,CAAC;AACpB,QAAAA,GAAE,KAAK,iBAAiB,SAASG,MAAK,OAAO;AACzC,mBAAS,QAAQA,IAAG,IAAI,QAAQ,MAAM,SAAS;AAAA,QACnD,CAAC;AAAA,MACL,OAAO;AACH,iBAAS,UAAU;AAAA,MACvB;AAIA,UAAI,eAAe,CAAC;AAGpB,UAAI,cAAc;AAGlB,UAAIC,SAAQ,IAAIJ,GAAE,UAAU,MAAM;AAGlC,UAAI;AACJ,UAAI;AAGJ,UAAI,YAAYA,GAAE,yCAA6C,EAC1D,IAAI;AAAA,QACD,SAAS;AAAA,MACb,CAAC,EACA,KAAK,MAAM,SAAS,WAAW,MAAM,EAAE,EACvC,MAAM,WAAY;AACf,YAAI,SAAS,eAAe,QAAQ,SAAS,eAAe,aAAa;AACrE,6BAAmB;AAAA,QACvB;AAAA,MACJ,CAAC,EACA,KAAK,WAAY;AACd,sBAAc;AACd,QAAAA,GAAE,IAAI,EAAE,IAAI,EAAE;AAAA,MAClB,CAAC,EACA,KAAK,6BAA6B,YAAY,EAC9C,QAAQ,SAAU,OAAO;AACtB,YAAI;AACJ,YAAI;AAEJ,gBAAO,MAAM,SAAS;AAAA,UAClB,KAAK,IAAI;AAAA,UACT,KAAK,IAAI;AAAA,UACT,KAAK,IAAI;AAAA,UACT,KAAK,IAAI;AACL,gBAAG,CAACA,GAAE,IAAI,EAAE,IAAI,GAAG;AACf,+BAAiB,YAAY,KAAK;AAClC,2BAAa,YAAY,KAAK;AAE9B,kBAAI,eAAe,UAAU,eAAe,IAAI,CAAC,MAAM,kBAAoB,WAAW,UAAU,WAAW,IAAI,CAAC,MAAM,gBAAiB;AAEnI,oBAAG,MAAM,YAAY,IAAI,QAAQ,MAAM,YAAY,IAAI,IAAI;AACvD,iCAAeA,GAAE,cAAc,GAAG,SAAS,MAAM;AAAA,gBACrD,OAAO;AACH,iCAAeA,GAAE,cAAc,GAAG,SAAS,KAAK;AAAA,gBACpD;AAAA,cACJ,YAAW,MAAM,YAAY,IAAI,QAAQ,MAAM,YAAY,IAAI,OAAO,eAAe,QAAQ;AAEzF,6BAAaA,GAAE,eAAe,IAAI,CAAC,CAAC,CAAC;AAAA,cACzC,YAAW,MAAM,YAAY,IAAI,SAAS,MAAM,YAAY,IAAI,SAAS,WAAW,QAAQ;AAExF,6BAAaA,GAAE,WAAW,IAAI,CAAC,CAAC,CAAC;AAAA,cACrC;AAAA,YACJ,OAAO;AACH,kBAAI,gBAAgB;AAEpB,kBAAG,MAAM,YAAY,IAAI,QAAQ,MAAM,YAAY,IAAI,OAAO;AAC1D,gCAAgBA,GAAE,sBAAsB,EAAE,KAAK;AAAA,cACnD,OAAO;AACH,gCAAgBA,GAAE,sBAAsB,EAAE,KAAK;AAAA,cACnD;AAEA,kBAAG,cAAc,QAAQ;AACrB,qCAAqB,aAAa;AAAA,cACtC;AACA,qBAAO;AAAA,YACX;AACA;AAAA,UAEJ,KAAK,IAAI;AACL,6BAAiB,YAAY,KAAK;AAElC,gBAAG,CAACA,GAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;AACtB,kBAAG,gBAAgB;AACf,6BAAaA,GAAE,cAAc,CAAC;AAC9B,6BAAa,OAAO;AAAA,cACxB,WAAU,eAAe,QAAQ;AAC7B,6BAAaA,GAAE,eAAe,IAAI,CAAC,CAAC,CAAC;AAAA,cACzC;AAEA,qBAAO;AAAA,YACX,WAAUA,GAAE,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG;AAClC,4BAAc;AAAA,YAClB,OAAO;AAEH,yBAAW,WAAU;AAAC,0BAAU;AAAA,cAAE,GAAG,CAAC;AAAA,YAC1C;AACA;AAAA,UAEJ,KAAK,IAAI;AAAA,UACT,KAAK,IAAI;AAAA,UACT,KAAK,IAAI;AAAA,UACT,KAAK,IAAI;AACP,gBAAG,wBAAwB;AACzB,wBAAUA,GAAE,sBAAsB,EAAE,KAAK,YAAY,CAAC;AACtD,2BAAa,OAAO;AACpB,qBAAO;AAAA,YACT;AACA;AAAA,UAEF,KAAK,IAAI;AACP,0BAAc;AACd,mBAAO;AAAA,UAET;AACI,gBAAG,OAAO,aAAa,MAAM,KAAK,GAAG;AAEjC,yBAAW,WAAU;AAAC,0BAAU;AAAA,cAAE,GAAG,CAAC;AAAA,YAC1C;AACA;AAAA,QACR;AAAA,MACJ,CAAC;AAGL,UAAI,eAAeA,GAAE,KAAK,EACF,KAAK,EACL,IAAI,EAAE,EACN,MAAM,WAAY;AACf,kBAAU,MAAM;AAAA,MACpB,CAAC,EACA,KAAK,WAAY;AACd,kBAAU,KAAK;AAAA,MACnB,CAAC;AAGxB,UAAI,iBAAiB;AACrB,UAAI,uBAAuB;AAC3B,UAAI,yBAAyB;AAG7B,UAAI,aAAaA,GAAE,QAAQ,EACtB,SAAS,SAAS,QAAQ,SAAS,EACnC,MAAM,SAAU,OAAO;AACpB,YAAI,KAAKA,GAAE,MAAM,MAAM,EAAE,QAAQ,IAAI;AACrC,YAAG,MAAM,GAAG,IAAI,CAAC,KAAKA,GAAE,KAAK,GAAG,IAAI,CAAC,GAAG,YAAY,GAAG;AACnD,8BAAoB,EAAE;AAAA,QAC1B,OAAO;AAEH,cAAG,gBAAgB;AACf,2BAAeA,GAAE,cAAc,GAAG,SAAS,GAAG;AAAA,UAClD;AAGA,oBAAU,MAAM;AAAA,QACpB;AAAA,MACJ,CAAC,EACA,UAAU,SAAU,OAAO;AACxB,YAAI,KAAKA,GAAE,MAAM,MAAM,EAAE,QAAQ,IAAI;AACrC,YAAG,MAAM,mBAAmB,MAAM;AAC9B,aAAG,SAAS,SAAS,QAAQ,gBAAgB;AAAA,QACjD;AAAA,MACJ,CAAC,EACA,SAAS,SAAU,OAAO;AACvB,YAAI,KAAKA,GAAE,MAAM,MAAM,EAAE,QAAQ,IAAI;AACrC,YAAG,MAAM,mBAAmB,MAAM;AAC9B,aAAG,YAAY,SAAS,QAAQ,gBAAgB;AAAA,QACpD;AAAA,MACJ,CAAC,EACA,aAAa,YAAY;AAG9B,UAAI,cAAcA,GAAE,QAAQ,EACvB,SAAS,SAAS,QAAQ,UAAU,EACpC,SAAS,UAAU,EACnB,OAAO,SAAS;AAGrB,UAAI,WAAWA,GAAE,OAAO,EACnB,SAAS,SAAS,QAAQ,QAAQ,EAClC,SAAS,MAAM,EACf,KAAK;AAGV,UAAI,gBAAgBA,GAAE,WAAW,EAC5B,YAAY,SAAS,EACrB,IAAI;AAAA,QACD,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU,UAAU,IAAI,UAAU;AAAA,QAClC,YAAY,UAAU,IAAI,YAAY;AAAA,QACtC,YAAY,UAAU,IAAI,YAAY;AAAA,QACtC,eAAe,UAAU,IAAI,eAAe;AAAA,QAC5C,YAAY;AAAA,MAChB,CAAC;AAGL,mBAAa,IAAI,EAAE;AACnB,UAAI,UAAU,SAAS,eAAe,aAAa,KAAK,KAAK;AAC7D,UAAG,SAAS,sBAAsBA,GAAE,WAAW,SAAS,QAAQ,GAAG;AAC/D,kBAAU,SAAS,SAAS,KAAK,cAAc,OAAO;AAAA,MAC1D;AACA,UAAG,WAAW,QAAQ,QAAQ;AAC1B,QAAAA,GAAE,KAAK,SAAS,SAAUK,QAAO,OAAO;AACpC,uBAAa,KAAK;AAClB,0BAAgB;AAAA,QACpB,CAAC;AAAA,MACL;AAGA,UAAGL,GAAE,WAAW,SAAS,OAAO,GAAG;AAC/B,iBAAS,QAAQ,KAAK;AAAA,MAC1B;AAMA,WAAK,QAAQ,WAAW;AACpB,mBAAW,SAAS,IAAI,EAAE,KAAK,WAAW;AACtC,cAAIA,GAAE,IAAI,EAAE,SAAS,OAAO,EAAE,WAAW,GAAG;AACxC,yBAAaA,GAAE,IAAI,CAAC;AAAA,UACxB;AAAA,QACJ,CAAC;AAAA,MACL;AAEA,WAAK,MAAM,SAAS,MAAM;AACtB,kBAAU,IAAI;AAAA,MAClB;AAEA,WAAK,SAAS,SAAS,MAAM;AACzB,mBAAW,SAAS,IAAI,EAAE,KAAK,WAAW;AACtC,cAAIA,GAAE,IAAI,EAAE,SAAS,OAAO,EAAE,WAAW,GAAG;AACxC,gBAAI,YAAYA,GAAE,IAAI,EAAE,KAAK,YAAY;AACzC,gBAAIM,SAAQ;AACZ,qBAAS,QAAQ,MAAM;AACnB,kBAAI,KAAK,IAAI,MAAM,UAAU,IAAI,GAAG;AAChC,gBAAAA,SAAQ;AACR;AAAA,cACJ;AAAA,YACJ;AACA,gBAAIA,QAAO;AACP,2BAAaN,GAAE,IAAI,CAAC;AAAA,YACxB;AAAA,UACJ;AAAA,QACJ,CAAC;AAAA,MACL;AAEA,WAAK,YAAY,WAAW;AAC3B,eAAO;AAAA,MACR;AAMA,eAAS,kBAAkB;AACvB,YAAG,SAAS,eAAe,QAAQ,eAAe,SAAS,YAAY;AACnE,oBAAU,KAAK;AACf,wBAAc;AACd;AAAA,QACJ;AAAA,MACJ;AAEA,eAAS,eAAe;AACpB,YAAG,eAAe,YAAY,UAAU,IAAI,IAAI;AAAC;AAAA,QAAO;AAGxD,YAAI,UAAU,UAAU,QAAQ,MAAM,OAAO,EAAE,QAAQ,OAAM,GAAG,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAC5G,sBAAc,KAAK,OAAO;AAC1B,kBAAU,MAAM,cAAc,MAAM,IAAI,EAAE;AAAA,MAC9C;AAEA,eAAS,uBAAuB,SAAS;AACrC,eAAS,WAAW,MAAM,WAAW;AAAA,QAC5B,WAAW,MAAM,WAAW;AAAA,QAC5B,WAAW,OAAO,WAAW;AAAA,QAC7B,WAAW,OAAO,WAAW;AAAA,MAC1C;AAGA,eAAS,aAAa,MAAM;AACxB,YAAI,aAAa,SAAS,eAAe,IAAI;AAC7C,qBAAaA,GAAE,UAAU,EACtB,SAAS,SAAS,QAAQ,KAAK,EAC/B,aAAa,WAAW;AAG3B,QAAAA,GAAE,WAAW,SAAS,aAAa,SAAS,EACvC,SAAS,SAAS,QAAQ,WAAW,EACrC,SAAS,UAAU,EACnB,MAAM,WAAY;AACf,uBAAaA,GAAE,IAAI,EAAE,OAAO,CAAC;AAC7B,uBAAa,OAAO;AACpB,iBAAO;AAAA,QACX,CAAC;AAGL,YAAI,aAAa,EAAC,MAAM,KAAK,GAAE;AAC/B,mBAAW,SAAS,gBAAgB,IAAI,KAAK,SAAS,gBAAgB;AACtE,QAAAA,GAAE,KAAK,WAAW,IAAI,CAAC,GAAG,cAAc,IAAI;AAG5C,uBAAe,aAAa,MAAM,GAAE,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC9H;AAGA,4BAAoB,cAAc,YAAY;AAE9C,uBAAe;AAGf,YAAG,SAAS,eAAe,QAAQ,eAAe,SAAS,YAAY;AACnE,oBAAU,KAAK;AACf,wBAAc;AAAA,QAClB;AAEA,eAAO;AAAA,MACX;AAGA,eAAS,UAAW,MAAM;AACtB,YAAIO,YAAW,SAAS;AAGxB,YAAG,cAAc,KAAK,SAAS,mBAAmB;AAC9C,cAAI,uBAAuB;AAC3B,qBAAW,SAAS,EAAE,KAAK,WAAY;AACnC,gBAAI,iBAAiBP,GAAE,IAAI;AAC3B,gBAAI,gBAAgBA,GAAE,KAAK,eAAe,IAAI,CAAC,GAAG,YAAY;AAC9D,gBAAG,iBAAiB,cAAc,OAAO,KAAK,IAAI;AAC9C,qCAAuB;AACvB,qBAAO;AAAA,YACX;AAAA,UACJ,CAAC;AAED,cAAG,sBAAsB;AACrB,yBAAa,oBAAoB;AACjC,wBAAY,YAAY,oBAAoB;AAC5C,sBAAU,MAAM;AAChB;AAAA,UACJ;AAAA,QACJ;AAGA,YAAG,SAAS,cAAc,QAAQ,cAAc,SAAS,YAAY;AACjE,uBAAa,IAAI;AACjB,0BAAgB;AAAA,QACpB;AAGA,kBAAU,IAAI,EAAE;AAGhB,sBAAc;AAGd,YAAGA,GAAE,WAAWO,SAAQ,GAAG;AACvB,UAAAA,UAAS,KAAK,cAAa,IAAI;AAAA,QACnC;AAAA,MACJ;AAGA,eAAS,aAAc,OAAO;AAC1B,cAAM,SAAS,SAAS,QAAQ,aAAa;AAC7C,yBAAiB,MAAM,IAAI,CAAC;AAG5B,kBAAU,IAAI,EAAE;AAGhB,sBAAc;AAAA,MAClB;AAGA,eAAS,eAAgB,OAAOC,WAAU;AACtC,cAAM,YAAY,SAAS,QAAQ,aAAa;AAChD,yBAAiB;AAEjB,YAAGA,cAAa,SAAS,QAAQ;AAC7B,sBAAY,aAAa,KAAK;AAC9B;AAAA,QACJ,WAAUA,cAAa,SAAS,OAAO;AACnC,sBAAY,YAAY,KAAK;AAC7B;AAAA,QACJ,OAAO;AACH,sBAAY,SAAS,UAAU;AAC/B,iCAAuB;AAAA,QAC3B;AAGA,kBAAU,MAAM;AAAA,MACpB;AAGA,eAAS,oBAAoB,OAAO;AAChC,YAAI,0BAA0B;AAE9B,YAAG,gBAAgB;AACf,yBAAeR,GAAE,cAAc,GAAG,SAAS,GAAG;AAAA,QAClD;AAEA,YAAG,4BAA4B,MAAM,IAAI,CAAC,GAAG;AACzC,yBAAe,OAAO,SAAS,GAAG;AAAA,QACtC,OAAO;AACH,uBAAa,KAAK;AAAA,QACtB;AAAA,MACJ;AAGA,eAAS,aAAc,OAAO;AAE1B,YAAI,aAAaA,GAAE,KAAK,MAAM,IAAI,CAAC,GAAG,YAAY;AAClD,YAAIO,YAAW,SAAS;AAExB,YAAIF,SAAQ,MAAM,QAAQ,EAAE;AAC5B,YAAGA,SAAQ;AAAsB,UAAAA;AAGjC,cAAM,OAAO;AACb,yBAAiB;AAGjB,kBAAU,MAAM;AAGhB,uBAAe,aAAa,MAAM,GAAEA,MAAK,EAAE,OAAO,aAAa,MAAMA,SAAM,CAAC,CAAC;AAC7E,YAAGA,SAAQ;AAAsB;AAGjC,4BAAoB,cAAc,YAAY;AAE9C,uBAAe;AAEf,YAAG,SAAS,eAAe,MAAM;AAC7B,oBACK,KAAK,EACL,IAAI,EAAE,EACN,MAAM;AAAA,QACf;AAGA,YAAGL,GAAE,WAAWO,SAAQ,GAAG;AACvB,UAAAA,UAAS,KAAK,cAAa,UAAU;AAAA,QACzC;AAAA,MACJ;AAGA,eAAS,oBAAoBE,eAAcC,eAAc;AACrD,YAAI,eAAeV,GAAE,IAAIS,eAAc,SAAU,IAAI;AACjD,iBAAO,GAAG,SAAS,UAAU;AAAA,QACjC,CAAC;AACD,QAAAC,cAAa,IAAI,aAAa,KAAK,SAAS,cAAc,CAAC;AAAA,MAE/D;AAGA,eAAS,gBAAiB;AACtB,iBAAS,KAAK,EAAE,MAAM;AACtB,iCAAyB;AAAA,MAC7B;AAEA,eAAS,gBAAgB;AACrB,iBACK,IAAI;AAAA,UACD,UAAU;AAAA,UACV,KAAKV,GAAE,UAAU,EAAE,OAAO,EAAE,MAAMA,GAAE,UAAU,EAAE,YAAY;AAAA,UAC5D,MAAMA,GAAE,UAAU,EAAE,OAAO,EAAE;AAAA,UAC7B,QAAQ;AAAA,QACZ,CAAC,EACA,KAAK;AAAA,MACd;AAEA,eAAS,0BAA2B;AAChC,YAAG,SAAS,eAAe;AACvB,mBAAS,KAAK,QAAM,SAAS,gBAAc,MAAM;AACjD,wBAAc;AAAA,QAClB;AAAA,MACJ;AAEA,eAAS,qBAAsB;AAC3B,YAAG,SAAS,UAAU;AAClB,mBAAS,KAAK,QAAM,SAAS,WAAS,MAAM;AAC5C,wBAAc;AAAA,QAClB;AAAA,MACJ;AAGA,eAAS,eAAe,OAAO,MAAM;AACjC,eAAO,MAAM,QAAQ,IAAI,OAAO,4BAA4B,OAAO,2BAA2B,IAAI,GAAG,WAAW;AAAA,MACpH;AAEA,eAAS,8BAA8BW,WAAU,OAAO,MAAM;AAC1D,eAAOA,UAAS,QAAQ,IAAI,OAAO,4BAA4B,QAAQ,2BAA2B,GAAG,GAAG,eAAe,OAAO,IAAI,CAAC;AAAA,MACvI;AAGA,eAAS,kBAAmB,OAAO,SAAS;AACxC,YAAG,WAAW,QAAQ,QAAQ;AAC1B,mBAAS,MAAM;AACf,cAAI,cAAcX,GAAE,MAAM,EACrB,SAAS,QAAQ,EACjB,UAAU,SAAU,OAAO;AACxB,iCAAqBA,GAAE,MAAM,MAAM,EAAE,QAAQ,IAAI,CAAC;AAAA,UACtD,CAAC,EACA,UAAU,SAAU,OAAO;AACxB,sBAAUA,GAAE,MAAM,MAAM,EAAE,QAAQ,IAAI,EAAE,KAAK,YAAY,CAAC;AAC1D,yBAAa,OAAO;AACpB,mBAAO;AAAA,UACX,CAAC,EACA,KAAK;AAEV,UAAAA,GAAE,KAAK,SAAS,SAASK,QAAO,OAAO;AACnC,gBAAI,UAAU,SAAS,iBAAiB,KAAK;AAE7C,sBAAU,8BAA8B,SAAS,MAAM,SAAS,gBAAgB,GAAG,KAAK;AAExF,sBAAUL,GAAE,OAAO,EAAE,SAAS,WAAW;AAEzC,gBAAGK,SAAQ,GAAG;AACV,sBAAQ,SAAS,SAAS,QAAQ,YAAY;AAAA,YAClD,OAAO;AACH,sBAAQ,SAAS,SAAS,QAAQ,aAAa;AAAA,YACnD;AAEA,gBAAGA,WAAU,GAAG;AACZ,mCAAqB,OAAO;AAAA,YAChC;AAEA,YAAAL,GAAE,KAAK,QAAQ,IAAI,CAAC,GAAG,cAAc,KAAK;AAAA,UAC9C,CAAC;AAED,wBAAc;AAEd,cAAG,SAAS,iBAAiB;AACzB,wBAAY,UAAU,MAAM;AAAA,UAChC,OAAO;AACH,wBAAY,KAAK;AAAA,UACrB;AAAA,QACJ,OAAO;AACH,cAAG,SAAS,eAAe;AACvB,qBAAS,KAAK,QAAM,SAAS,gBAAc,MAAM;AACjD,0BAAc;AAAA,UAClB;AAAA,QACJ;AAAA,MACJ;AAGA,eAAS,qBAAsB,MAAM;AACjC,YAAG,MAAM;AACL,cAAG,wBAAwB;AACvB,mCAAuBA,GAAE,sBAAsB,CAAC;AAAA,UACpD;AAEA,eAAK,SAAS,SAAS,QAAQ,oBAAoB;AACnD,mCAAyB,KAAK,IAAI,CAAC;AAAA,QACvC;AAAA,MACJ;AAGA,eAAS,uBAAwB,MAAM;AACnC,aAAK,YAAY,SAAS,QAAQ,oBAAoB;AACtD,iCAAyB;AAAA,MAC7B;AAIA,eAAS,YAAY;AACjB,YAAI,QAAQ,UAAU,IAAI,EAAE,YAAY;AAExC,YAAG,SAAS,MAAM,QAAQ;AACtB,cAAG,gBAAgB;AACf,2BAAeA,GAAE,cAAc,GAAG,SAAS,KAAK;AAAA,UACpD;AAEA,cAAG,MAAM,UAAU,SAAS,UAAU;AAClC,oCAAwB;AACxB,yBAAa,OAAO;AAEpB,sBAAU,WAAW,WAAU;AAC3B,yBAAW,KAAK;AAAA,YACpB,GAAG,SAAS,WAAW;AAAA,UAC3B,OAAO;AACH,0BAAc;AAAA,UAClB;AAAA,QACJ;AAAA,MACJ;AAGA,eAAS,WAAW,OAAO;AACvB,YAAI,YAAY,QAAQ,WAAW;AACnC,YAAI,iBAAiBI,OAAM,IAAI,SAAS;AACxC,YAAG,gBAAgB;AACf,4BAAkB,OAAO,cAAc;AAAA,QAC3C,OAAO;AAEH,cAAG,SAAS,KAAK;AACb,gBAAIQ,OAAM,WAAW;AAErB,gBAAI,cAAc,CAAC;AACnB,wBAAY,OAAO,CAAC;AACpB,gBAAGA,KAAI,QAAQ,GAAG,IAAI,IAAI;AACtB,kBAAI,QAAQA,KAAI,MAAM,GAAG;AACzB,0BAAY,MAAM,MAAM,CAAC;AAEzB,kBAAI,cAAc,MAAM,CAAC,EAAE,MAAM,GAAG;AACpC,cAAAZ,GAAE,KAAK,aAAa,SAAUK,QAAO,OAAO;AACxC,oBAAI,KAAK,MAAM,MAAM,GAAG;AACxB,4BAAY,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AAAA,cAClC,CAAC;AAAA,YACL,OAAO;AACH,0BAAY,MAAMO;AAAA,YACtB;AAGA,wBAAY,KAAK,SAAS,UAAU,IAAI;AACxC,wBAAY,OAAO,SAAS;AAC5B,wBAAY,WAAW,SAAS;AAChC,gBAAG,SAAS,aAAa;AACrB,0BAAY,WAAW;AAAA,YAC3B;AAGA,wBAAY,UAAU,SAASC,UAAS;AACtC,kBAAGb,GAAE,WAAW,SAAS,QAAQ,GAAG;AAChC,gBAAAa,WAAU,SAAS,SAAS,KAAK,cAAcA,QAAO;AAAA,cAC1D;AACA,cAAAT,OAAM,IAAI,WAAW,SAAS,gBAAgBS,SAAQ,SAAS,aAAa,IAAIA,QAAO;AAGvF,kBAAG,UAAU,IAAI,EAAE,YAAY,MAAM,OAAO;AACxC,kCAAkB,OAAO,SAAS,gBAAgBA,SAAQ,SAAS,aAAa,IAAIA,QAAO;AAAA,cAC/F;AAAA,YACF;AAGA,YAAAb,GAAE,KAAK,WAAW;AAAA,UACtB,WAAU,SAAS,YAAY;AAE3B,gBAAI,UAAUA,GAAE,KAAK,SAAS,YAAY,SAAU,KAAK;AACrD,qBAAO,IAAI,SAAS,gBAAgB,EAAE,YAAY,EAAE,QAAQ,MAAM,YAAY,CAAC,IAAI;AAAA,YACvF,CAAC;AAED,gBAAGA,GAAE,WAAW,SAAS,QAAQ,GAAG;AAChC,wBAAU,SAAS,SAAS,KAAK,cAAc,OAAO;AAAA,YAC1D;AACA,YAAAI,OAAM,IAAI,WAAW,OAAO;AAC5B,8BAAkB,OAAO,OAAO;AAAA,UACpC;AAAA,QACJ;AAAA,MACJ;AAGA,eAAS,aAAa;AAClB,YAAIQ,OAAM,SAAS;AACnB,YAAG,OAAO,SAAS,OAAO,YAAY;AAClC,UAAAA,OAAM,SAAS,IAAI,KAAK;AAAA,QAC5B;AACA,eAAOA;AAAA,MACX;AAAA,IACJ;AAGA,IAAAZ,GAAE,UAAU,QAAQ,SAAUE,UAAS;AACnC,UAAI,WAAWF,GAAE,OAAO;AAAA,QACpB,UAAU;AAAA,MACd,GAAGE,QAAO;AAEV,UAAIY,QAAO,CAAC;AACZ,UAAIC,QAAO;AAEX,UAAI,QAAQ,WAAY;AACpB,QAAAD,QAAO,CAAC;AACR,QAAAC,QAAO;AAAA,MACX;AAEA,WAAK,MAAM,SAAU,OAAO,SAAS;AACjC,YAAGA,QAAO,SAAS,UAAU;AACzB,gBAAM;AAAA,QACV;AAEA,YAAG,CAACD,MAAK,KAAK,GAAG;AACb,UAAAC,SAAQ;AAAA,QACZ;AAEA,QAAAD,MAAK,KAAK,IAAI;AAAA,MAClB;AAEA,WAAK,MAAM,SAAU,OAAO;AACxB,eAAOA,MAAK,KAAK;AAAA,MACrB;AAAA,IACJ;AAAA,EACA,GAAE,MAAM;;;AC31BR,+BAA6B,WAAW;AACtC,WAAO,EAAE,gCAAgC,EAAE,KAAK,SAASE,IAAG,IAAI;AAC9D,cAAQ,IAAI,sCAAsC;AAClD,UAAI,KAAKC;AACT,YAAM,EAAE,EAAE;AACV,UAAI,CAAC,IAAI,KAAK,uBAAuB,GAAG;AACtC,YAAI,KAAK,yBAAyB,IAAI;AACtC,YAAI,WAAW,IAAI,KAAK,UAAU,GAAG;AAAA,UACnC,aAAa,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI;AAAA,UACzC,YAAa,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI;AAAA,UAC9C,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,uBAAuB;AAAA,UACvB,UAAU;AAAA,UACV,OAAO;AAAA,UACP,iBAAiB;AAAA,QACnB,CAAC;AACD,YAAI,IAAI,KAAK,eAAe,GAAG;AAC7B,UAAAA,QAAO,IAAI,KAAK,MAAM,IAAI;AAC1B,iBAAO,IAAI,KAAK,QAAQ,WAAW,EAAE,OAAO,WAAW;AACrD,gBAAIC,KAAIC,IAAG,KAAK,KAAK;AACrB,gBAAI,SAAS,sBAAsB,EAAE,OAAO;AAC5C,kBAAM,IAAI,IAAI,EAAE,MAAM,GAAG;AACzB,sBAAU,CAAC;AACX,iBAAKA,KAAI,GAAG,MAAM,IAAI,QAAQA,KAAI,KAAKA,MAAK;AAC1C,cAAAD,MAAK,IAAIC,EAAC;AACV,sBAAQ,KAAK,EAAE,SAAS,EAAE,KAAK,QAAQ,QAAQ,EAAE,KAAK,QAAQF,KAAI,EAAE,IAAIC,GAAE,EAAE,KAAK,eAAe,MAAM,EAAE,YAAY,GAAG,CAAC;AAAA,YAC1H;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;;;ACnCD;AAAA;AAAA;AAAA;;;ACAA,MAAqB,OAArB,MAA0B;AAAA,IACxB,YAAY,KAAK;AACf,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,MAAM,OAAO,QAAQ,MAAM;AAEzB,UAAI;AAEJ,UAAI;AACF,iBAAS,MAAM,EAAE,KAAK;AAAA,UACpB,KAAK,KAAK;AAAA,UACV;AAAA,UACA,MAAM,EAAE,OAAO,MAAM,EAAC,oBAAoB,EAAE,qBAAqB,EAAE,CAAC,EAAE,QAAO,CAAC;AAAA,QAChF,CAAC;AAED,eAAO;AAAA,MACT,SAASE,QAAP;AACA,gBAAQ,MAAMA,MAAK;AAAA,MACrB;AAAA,IACF;AAAA,EACF;;;ADlBA,MAAO,gCAAP,cAA6B,WAAW;AAAA,IAEtC,MAAM,IAAI,OAAO;AACf,UAAI,UAAU,EAAE,MAAM,MAAM;AAC5B,UAAI,gBAAgB,QAAQ,QAAQ,oBAAoB;AAExD,UAAI,qBAAqB,EAAE,KAAK,OAAO;AACvC,UAAIC,SAAQ,mBAAmB,KAAK,YAAY,EAAE;AAElD,UAAI,YAAY,MAAM,IAAI,KAAK,yBAAyB,EAAE,OAAO,OAAO,EAAE,SAASA,OAAM,CAAC;AAE1F,QAAE,SAAS,EAAE,aAAa,aAAa;AAAA,IACzC;AAAA,IAEA,OAAO,OAAO;AACZ,UAAI,UAAU,EAAE,MAAM,MAAM;AAC5B,UAAI,aAAa,QAAQ,QAAQ,YAAY;AAC7C,iBAAW,OAAO;AAAA,IACpB;AAAA,EACF;;;AEtBA;AAAA;AAAA;AAAA;;;ACAA,MAAqB,QAArB,MAA2B;AAAA,IACzB,YAAY,SAAS;AACnB,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,aAAaC,MAAK,OAAOC,UAAS;AAChC,UAAIC,UAAS,KAAK,UAAU;AAE5B,MAAAA,UAAS,KAAK,SAASA,SAAQF,MAAK,OAAOC,QAAO;AAElD,UAAI,eAAe,KAAK,gBAAgBC,OAAM;AAE9C,UAAI,QAAQ,WAAW;AACrB,YAAI,SAAS,KAAK,UAAU;AAC5B,eAAO,QAAQ,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,MAAM;AAAA,MACvD;AAAA,IACF;AAAA,IAEA,WAAWF,MAAK;AACd,UAAIE,UAAS,KAAK,UAAU;AAE5B,aAAOA,QAAOF,IAAG;AAEjB,UAAI,eAAe,KAAK,gBAAgBE,OAAM;AAE9C,UAAI,QAAQ,WAAW;AACrB,YAAI,SAAS,KAAK,UAAU;AAC5B,eAAO,QAAQ,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,MAAM;AAAA,MACvD;AAAA,IACF;AAAA,IAEA,YAAY;AACV,UAAI,aAAa,OAAO,SAAS,MAC/B,UAAU,KAAK;AAEjB,UAAI,gBAAgB,WAAW,MAAM,OAAO,EAAE,OAAO,SAAUC,IAAG;AAChE,eAAOA,OAAM,MAAMA,OAAM;AAAA,MAC3B,CAAC;AAED,aAAO,cAAc,OAAO,SAAUC,OAAM,OAAO;AACjD,YAAIJ,OAAM,MAAM,MAAM,GAAG,EAAE,CAAC,GAC1B,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAE5B,YAAIA,KAAI,SAAS,IAAI,GAAG;AACtB,UAAAA,OAAMA,KAAI,UAAU,GAAGA,KAAI,SAAS,CAAC;AACrC,cAAI,EAAEA,QAAOI,QAAO;AAClB,YAAAA,MAAKJ,IAAG,IAAI,IAAI,MAAM;AAAA,UACxB;AACA,UAAAI,MAAKJ,IAAG,EAAE,KAAK,UAAU,KAAK,CAAC;AAAA,QACjC,OAAO;AACL,UAAAI,MAAKJ,IAAG,IAAI,UAAU,KAAK;AAAA,QAC7B;AACA,eAAOI;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,IAEA,gBAAgBF,SAAQ;AACtB,UAAI,OAAO,CAAC;AAEZ,eAASF,QAAO,OAAO,KAAKE,OAAM,GAAG;AACnC,YAAI,QAAQA,QAAOF,IAAG;AACtB,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,mBAAS,QAAQ,OAAO;AACtB,iBAAK,KAAK,GAAGA,UAAS,UAAU,IAAI,GAAG;AAAA,UACzC;AAAA,QACF,OAAO;AACL,eAAK,KAAK,GAAGA,QAAO,UAAU,KAAK,GAAG;AAAA,QACxC;AAAA,MACF;AACA,UAAI,KAAK,WAAW,GAAG;AACrB,eAAO,MAAM,KAAK,KAAK,GAAG;AAAA,MAC5B,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,SAASE,SAAQF,MAAK,OAAOC,UAAS;AACpC,UAAIG,QAAOF,QAAOF,IAAG;AAErB,UAAI,MAAM,QAAQI,KAAI,GAAG;AACvB,YAAI,CAACA,MAAK,SAAS,KAAK,GAAG;AACzB,UAAAF,QAAOF,IAAG,EAAE,KAAK,KAAK;AAAA,QACxB;AAAA,MACF,OAAO;AACL,YAAIC,UAAS;AACX,UAAAC,QAAOF,IAAG,IAAI,IAAI,MAAM;AACxB,UAAAE,QAAOF,IAAG,EAAE,KAAK,KAAK;AAAA,QACxB,OAAO;AACL,UAAAE,QAAOF,IAAG,IAAI;AAAA,QAChB;AAAA,MACF;AAEA,aAAOE;AAAA,IACT;AAAA,EACF;;;AD3FA,MAAO,kCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AAAA,IAC1C;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,OAAO;AACT,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,UAAU,QAAQ,KAAK,UAAU;AACrC,WAAK,aAAa;AAClB,WAAK,UAAU,mBAAmB,OAAO,EAAE,KAAK,aAAW;AACzD,0BAAkB,EAAE,mBAAmB,CAAC;AACxC,aAAK,iBAAiB;AACtB,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B,OAAO;AAC/B,WAAK,aAAa;AAClB,WAAK,UAAU,4CAA4C,MAAM,aAAa,EAAE,KAAK,MAAM;AACzF,0BAAkB,EAAE,gCAAgC,CAAC;AACrD,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,OAAO;AACjB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,aAAa,QAAQ,KAAK,SAAS;AACvC,WAAK,MAAM,aAAa,YAAY,YAAY,KAAK;AACrD,WAAK,UAAU,qBAAqB;AAAA,IACtC;AAAA;AAAA;AAAA,IAIA,OAAO,OAAO;AACZ,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,QAAQ,QAAQ,KAAK,QAAQ;AAEjC,WAAK,UAAU,sBAAsB,KAAK;AAAA,IAC5C;AAAA;AAAA;AAAA,IAIA,cAAc,SAAS,QAAQG,QAAO,UAAU;AAC9C,QAAE,OAAO,EAAE,OAAO;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,SAAS,QAAQA,QAAO,UAAU;AAE5C,UAAI,MAAM,EAAE,OAAO,EAAE,KAAK,oBAAoB;AAC9C,UAAI,KAAK,SAAS,KAAK,EAAEA,MAAK,CAAC;AAC/B,UAAI,QAAQ,MAAM;AAAA,IACpB;AAAA,EAIF;;;AEzEA;AAAA;AAAA;AAAA;AAEA,MAAO,6BAAP,cAA6B,sBAAsB;AAAA,IASjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,cAAc;AAAA,QACjB,wBAAwB,CAAC,UAAU;AACjC,eAAK,qBAAqB,KAAK;AAAA,QACjC;AAAA,QACA,WAAW,CAAC,UAAU;AACpB,eAAK,QAAQ,KAAK;AAAA,QACpB;AAAA,QACA,WAAW,CAAC,UAAU;AACpB,eAAK,QAAQ,KAAK,IAAI,EAAE,KAAK;AAAA,QAC/B;AAAA,MACF;AAEA,WAAK,eAAe;AAAA,QAClB,UAAU,KAAK;AAAA,QACf,cAAc,KAAK;AAAA,MACrB;AAEA,WAAK,UAAU;AACf,WAAK,oBAAoB;AAAA,IAC3B;AAAA,IAEA,UAAU;AACR,UAAIC,QAAO;AACX,WAAK,QAAQ,EAAE,KAAK,OAAO;AAC3B,UAAI,cAAc,KAAK,UAAU,MAAM,GAAG;AAC1C,kBAAY,QAAQ,SAAU,aAAaC,QAAO;AAChD,QAAAD,MAAK,aAAa,WAAW,EAAE,KAAKA,KAAI,EAAE;AAAA,MAC5C,CAAC;AACD,YAAM,QAAQ;AAAA,IAChB;AAAA,IAEA,qBAAqB;AACnB,cAAQ,IAAI,sBAAsB;AAAA,IACpC;AAAA,IAEA,wBAAwB;AACtB,UAAIA,QAAO;AAEX,UAAG,KAAK,MAAM,KAAK,mBAAmB,EAAE,UAAU,GAAG;AACnD,aAAK,UAAU;AAAA,MACjB,OAAO;AACL,aAAK,MAAM,GAAG,UAAU,qBAAqB,SAAU,OAAO;AAC5D,UAAAA,MAAK,YAAYA,MAAK,uBAAuB,EAAE,KAAK;AAAA,QACtD,CAAC;AAAA,MACH;AAIA,YAAM,UAAU,EAAE,KAAK,YAAY;AACnC,YAAM,QAAQ,QAAQ,QAAQ,MAAM;AACpC,WAAK,aAAa,MAAM,KAAK,QAAQ;AAGrC,WAAK,kBAAkB,KAAK,MAAM,KAAK,sCAAsC,EAAE,QAAQ;AACvF,UAAG,KAAK,WAAW,KAAK,gBAAgB,UAAU,GAAG;AACnD,gBAAQ,KAAK,YAAY,KAAK;AAAA,MAChC;AAAA,IAIF;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,OAAO;AACV,YAAM,eAAe;AACrB,UAAIA,QAAO;AACX,UAAI,UAAU,EAAE,MAAM,aAAa;AAMnC,UAAI,cAAc,EAAE,kCAAkC;AAEtD,UAAI,WAAW,YAAY,QAAQ,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,GAAG;AAC3E,eAAS,YAAY,UAAU;AAE/B,eAAS,KAAK,kBAAkB,KAAK;AAIrC,UAAI,cAAc,QAAQ,KAAK,mBAAmB;AAClD,UAAG,aAAa;AACd,iBAAS,GAAG,gBAAgB,SAAUE,QAAO;AAC3C,UAAAF,MAAK,YAAY,WAAW,EAAEE,MAAK;AAAA,QACrC,CAAC;AAAA,MACH;AAEA,eAAS,QAAQ,OAAO;AACxB,eAAS,IAAI,MAAM;AAAA,IACrB;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,OAAO;AACV,YAAM,eAAe;AACrB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,cAAc,EAAE,kCAAkC;AAEtD,UAAI,WAAW,YAAY,QAAQ,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,GAAG;AAC3E,UAAG,SAAS,QAAQ,GAAG;AACrB;AAAA,MACF;AAEA,eAAS,IAAI,MAAM;AACnB,eAAS,QAAQ,OAAO;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,OAAO;AAC1B,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,cAAc,QAAQ,QAAQ,WAAW;AAE7C,UAAI,kBAAkB,YAAY,KAAK,4BAA4B;AAEnE,sBAAgB,YAAY,UAAU;AACtC,sBAAgB,KAAK,YAAY,KAAK;AAAA,IACxC;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,OAAO;AACzB,YAAM,eAAe;AACrB,UAAI,UAAU,EAAE,MAAM,aAAa;AAEnC,UAAI,sBAAsB,QAAQ,QAAQ,WAAW,EAAE,KAAK,eAAe;AAC3E,UAAI,OAAO;AAEX,UAAG,QAAQ,KAAK,SAAS,GAAG;AAC1B,YAAI,QAAQ,oBAAoB,KAAK,8BAA8B,EAAE,IAAI;AAGzE,YAAI,YAAY,oBAAoB,KAAK,mCAAmC,EAAE,IAAI;AAClF,YAAI,WAAW,oBAAoB,KAAK,kCAAkC,EAAE,IAAI;AAChF,eAAO,EAAE,SAAS,OAAO,EAAE,aAAa,OAAO,EAAE,YAAY;AAC7D,YAAG,MAAM;AAGP,cAAI,YAAY,EAAE,+BAA+B;AACjD,cAAI,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,UAAU,IAAI,CAAC;AACzD,uBAAa,KAAK,2CAA2C,EAAE,IAAI,KAAK,EAAE,KAAK,YAAY,IAAI,EAAE,KAAK,MAAM,IAAI;AAChH,uBAAa,KAAK,gDAAgD,EAAE,IAAI,SAAS,EAAE,KAAK,YAAY,IAAI,EAAE,KAAK,MAAM,IAAI;AACzH,uBAAa,KAAK,+CAA+C,EAAE,IAAI,QAAQ,EAAE,KAAK,YAAY,IAAI,EAAE,KAAK,MAAM,IAAI;AACvH,uBAAa,KAAK,gBAAgB,EAAE,OAAO;AAE3C,YAAE,oBAAoB,EAAE,QAAQ,YAAY;AAAA,QAC9C,OAAO;AACL,kBAAQ,IAAI,iBAAiB;AAC7B,kBAAQ,KAAM,WAAW,CAAC,QAAQ,KAAK,SAAS,CAAE;AAClD,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,UAAE,oBAAoB,EAAE,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO;AAAA,MACxD;AAEA,WAAK,mCAAmC,KAAK;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe,OAAO;AACpB,YAAM,eAAe;AACrB,UAAI,UAAU,EAAE,MAAM,aAAa;AAEnC,UAAI,oBAAoB,EAAE,oBAAoB;AAC9C,UAAI,YAAY,EAAE,+BAA+B;AACjD,UAAI,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,UAAU,IAAI,CAAC;AACzD,UAAI,SAAS,aAAa,KAAK,SAAS;AACxC,aAAO,KAAK,kBAAkB,SAAS,KAAK,EAAE,SAAS,CAAC;AACxD,mBAAa,KAAK,2CAA2C,EAAE,KAAK,MAAM,IAAI;AAC9E,mBAAa,KAAK,gDAAgD,EAAE,KAAK,MAAM,IAAI;AACnF,mBAAa,KAAK,+CAA+C,EAAE,KAAK,MAAM,IAAI;AAElF,wBAAkB,OAAO,YAAY;AAAA,IACvC;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,OAAO;AACvB,YAAM,eAAe;AACrB,UAAI,UAAU,EAAE,MAAM,aAAa;AAEnC,UAAI,eAAe,QAAQ,QAAQ,IAAI;AACvC,mBAAa,OAAO;AAAA,IACtB;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,OAAO;AAC1B,UAAI,UAAU,EAAE,MAAM,MAAM;AAE5B,UAAI,eAAe,EAAE,sBAAsB;AAC3C,mBAAa,KAAK,EAAE;AACpB,UAAI,oBAAoB,EAAE,2BAA2B;AACrD,wBAAkB,KAAK,EAAE;AACzB,UAAI,qBAAqB,EAAE,sBAAsB;AAGjD,UAAI,kBAAkB,EAAE,UAAU;AAClC,QAAG,yBAAyB,eAAgB,EAAE,KAAK,SAAUD,QAAQ;AACnE,YAAI,SAAS,EAAE,IAAI;AAEnB,YAAI,SAAS,OAAO,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM;AAEjD,qBAAa,OAAO,MAAM;AAAA,MAC5B,CAAC;AAGD,UAAI,uBAAuB,EAAE,oBAAoB;AACjD,UAAI,OAAO,WAAW,UAAU;AAChC,UAAI,eAAe,CAAC;AACpB,QAAG,MAAM,oBAAqB,EAAE,KAAK,SAAUA,QAAQ;AACrD,YAAI,MAAM,EAAE,IAAI;AAChB,gBAAQ,IAAI,KAAK,4CAA4C,EAAE,IAAI;AAGnE,oBAAY,IAAI,KAAK,iDAAiD,EAAE,IAAI;AAC5E,mBAAW,IAAI,KAAK,gDAAgD,EAAE,IAAI;AAC1E,mBAAW,GAAG,aAAa;AAC3B,qBAAa,KAAK,GAAG,aAAa,OAAO;AAAA,MAE3C,CAAC;AACD,UAAI,oBAAoB;AACxB,mBAAa,QAAQ,SAAS,MAAK;AACjC,6BAAqB,OAAO;AAAA,MAC9B,CAAC;AACD,2BAAqB;AACrB,wBAAkB,KAAK,iBAAiB;AAGxC,UAAI,eAAe,EAAE,eAAe;AACpC,UAAI,eAAe,aAAa,KAAK,sCAAsC,EAAE,IAAI;AACjF,UAAI,mBAAmB,aAAa,KAAK,2CAA2C,EAAE,IAAI;AAC1F,UAAI,kBAAkB,aAAa,KAAK,0CAA0C,EAAE,IAAI;AACxF,UAAI,UAAU,aAAa,KAAK,wCAAwC,EAAE,IAAI;AAC9E,UAAI,oBAAoB,aAAa,KAAK,mDAAmD,EAAE,IAAI;AACnG,UAAI,MAAM,aAAa,KAAK,oCAAoC,EAAE,IAAI;AACtE,UAAI,gBAAgB,aAAa,KAAK,uCAAuC,EAAE,IAAI;AACnF,UAAI,qBAAqB,aAAa,KAAK,6CAA6C,EAAE,IAAI;AAC9F,UAAIE,OAAM,aAAa,KAAK,oCAAoC,EAAE,IAAI;AACtE,UAAI,OAAO,aAAa,KAAK,qCAAqC,EAAE,IAAI;AACxE,UAAI,MAAM,aAAa,KAAK,sCAAsC,EAAE,IAAI;AACxE,UAAI,QAAQ,aAAa,KAAK,iDAAiD,EAAE,IAAI;AAErF,UAAI,UAAU;AACd,UAAI,UAAU,GAAG,UAAU,UAAU,oBAAoB,kBAAkB;AAC3E,UAAI,mBAAmB;AACrB,mBAAW,GAAG,oBAAoB;AAAA,MACpC;AACA,UAAI,KAAK;AACP,mBAAW;AAAA,MACb,OAAO;AACL,mBAAW,GAAG,iBAAiB;AAAA,MACjC;AACA,gBAAU,GAAG,UAAU,UAAUA,QAAO;AAExC,yBAAmB,KAAK,qBAAqB,EAAE,KAAK,YAAY;AAChE,yBAAmB,KAAK,uBAAuB,EAAE,KAAK,OAAO;AAC7D,UAAG,KAAK;AACN,2BAAmB,KAAK,mBAAmB,EAAE,KAAK,GAAG;AAAA,MACvD;AACA,UAAG,OAAO;AACR,2BAAmB,KAAK,qBAAqB,EAAE,KAAK,KAAK;AAAA,MAC3D;AAIA,WAAK,cAAc;AAAA,IACrB;AAAA;AAAA;AAAA;AAAA,IAKA,mCAAmC,OAAO;AAExC,UAAI,QAAQ;AAEZ,UAAI,cAAc,EAAE,cAAc;AAClC,UAAI,eAAe,YAAY,KAAK,8BAA8B,EAAE,IAAI;AACxE,cAAQ,SAAS,gBAAgB;AACjC,UAAI,mBAAmB,YAAY,KAAK,mCAAmC,EAAE,IAAI;AACjF,cAAQ,SAAS,oBAAoB;AACrC,UAAI,kBAAkB,YAAY,KAAK,kCAAkC,EAAE,IAAI;AAC/E,cAAQ,SAAS,mBAAmB;AAEpC,UAAI,uBAAuB,EAAE,oBAAoB;AACjD,UAAI,OAAO,WAAW;AACtB,QAAG,MAAM,oBAAqB,EAAE,KAAK,SAAUF,QAAQ;AACrD,YAAI,MAAM,EAAE,IAAI;AAChB,gBAAQ,IAAI,KAAK,4CAA4C,EAAE,IAAI;AAEnE,gBAAQ,SAAS,SAAS;AAE1B,oBAAY,IAAI,KAAK,iDAAiD,EAAE,IAAI;AAC5E,gBAAQ,SAAS,aAAa;AAC9B,mBAAW,IAAI,KAAK,gDAAgD,EAAE,IAAI;AAC1E,gBAAQ,SAAS,YAAY;AAC7B,YAAI,OAAO;AACT;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAG,OAAO;AACR,aAAK,qBAAqB,KAAK;AAAA,MACjC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,8BAA8B,OAAO;AAEnC,UAAI,QAAQ;AAEZ,UAAI,eAAe,EAAE,eAAe;AACpC,UAAI,iBAAiB,aAAa,KAAK,gBAAgB;AACvD,qBAAe,KAAK,SAAUA,QAAQ;AACpC,YAAI,SAAS,EAAE,IAAI;AACnB,gBAAQ,SAAS,OAAO,IAAI,KAAK;AACjC,YAAI,CAAC,OAAO;AACV;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAG,OAAO;AACR,aAAK,qBAAqB,KAAK;AAAA,MACjC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,QAAQ,OAAO;AACb,UAAI,UAAU,EAAE,MAAM,MAAM;AAG5B,UAAI,cAAc,EAAE,cAAc;AAClC,UAAI,QAAQ,YAAY,KAAK,8BAA8B,EAAE,IAAI;AAEjE,UAAI,YAAY,YAAY,KAAK,mCAAmC,EAAE,IAAI;AAC1E,UAAI,WAAW,YAAY,KAAK,kCAAkC,EAAE,IAAI;AAGxE,UAAI,eAAe,EAAE,eAAe;AACpC,mBAAa,KAAK,sCAAsC,EAAE,IAAI,KAAK;AACnE,mBAAa,KAAK,2CAA2C,EAAE,IAAI,SAAS;AAC5E,mBAAa,KAAK,0CAA0C,EAAE,IAAI,QAAQ;AAAA,IAG5E;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,OAAO;AACnB,UAAI,cAAc,EAAE,wBAAwB;AAC5C,UAAI,kBAAkB,EAAE,sCAAsC,EAAE,QAAQ;AAGxE,UAAI,UAAU,kBAAkB;AAChC,iBAAW,EAAE,sBAAsB,EAAE,KAAK,OAAO,EAAE,SAAS;AAC5D,wBAAkB,EAAE,iCAAiC,EAAE,SAAS;AAEhE,UAAI,YAAY,iBAAiB;AAE/B,YAAG,gBAAgB,SAAS,GAAG;AAC7B,sBAAY,KAAK,YAAY,CAAC,gBAAgB,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC,CAAC;AAAA,QAClG,OAAO;AACL,sBAAY,KAAK,YAAY,KAAK;AAAA,QACpC;AAAA,MACF,OAAO;AACL,oBAAY,KAAK,YAAY,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,KAAKG,IAAG;AACN,MAAAA,GAAE,eAAe;AACjB,WAAK,UAAU,wBAAwB,EAAE,KAAK,MAAM;AAAA,MAEpD,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAO;AACb,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,UAAU,EAAE,KAAK,YAAY;AACnC,YAAM,QAAQ,QAAQ,QAAQ,MAAM;AACpC,UAAI,SAAS,GAAG,KAAK,iCAAiC,QAAQ,IAAI;AAElE,YAAM,KAAK,UAAU,MAAM;AAC3B,WAAK,UAAU;AACf,UAAG,KAAK,mBAAmB;AACzB,gBAAQ,KAAK,YAAY,KAAK;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,kBAAkB;AAEhB,WAAK,oBAAoB,KAAK,gBAAgB,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC;AAC/F,UAAG,KAAK,SAAS;AACf,cAAM,UAAU,EAAE,KAAK,YAAY;AACnC,YAAG,KAAK,gBAAgB,SAAS,GAAG;AAClC,kBAAQ,KAAK,YAAY,CAAC,KAAK,iBAAiB;AAAA,QAClD,OAAO;AACL,kBAAQ,KAAK,YAAY,KAAK;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,EAEF;AAnbE,gBAFK,4BAEE,WAAU,CAAC,QAAQ;AAE1B,gBAJK,4BAIE,UAAS;AAAA,IACd,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;;;ACTF;AAAA;AAAA;AAAA;;;ACMA,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,SAAUC,MAAK;AACnD,0BAAgB,QAAQA,MAAK,OAAOA,IAAG,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,SAAUA,MAAK;AAC7C,iBAAO,eAAe,QAAQA,MAAK,OAAO,yBAAyB,QAAQA,IAAG,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,KAAKD,MAAK,OAAO;AACxC,QAAIA,QAAO,KAAK;AACd,aAAO,eAAe,KAAKA,MAAK;AAAA,QAC9B;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,UAAU;AAAA,MACZ,CAAC;AAAA,IACH,OAAO;AACL,UAAIA,IAAG,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,iBAASC,QAAO,QAAQ;AACtB,cAAI,OAAO,UAAU,eAAe,KAAK,QAAQA,IAAG,GAAG;AACrD,mBAAOA,IAAG,IAAI,OAAOA,IAAG;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;AAAM,aAAO,CAAC;AAC5B,QAAI,SAAS,CAAC;AACd,QAAI,aAAa,OAAO,KAAK,MAAM;AACnC,QAAIA,MAAKD;AACT,SAAKA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACtC,MAAAC,OAAM,WAAWD,EAAC;AAClB,UAAI,SAAS,QAAQC,IAAG,KAAK;AAAG;AAChC,aAAOA,IAAG,IAAI,OAAOA,IAAG;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AACA,WAAS,yBAAyB,QAAQ,UAAU;AAClD,QAAI,UAAU;AAAM,aAAO,CAAC;AAC5B,QAAI,SAAS,8BAA8B,QAAQ,QAAQ;AAC3D,QAAIA,MAAKD;AACT,QAAI,OAAO,uBAAuB;AAChC,UAAI,mBAAmB,OAAO,sBAAsB,MAAM;AAC1D,WAAKA,KAAI,GAAGA,KAAI,iBAAiB,QAAQA,MAAK;AAC5C,QAAAC,OAAM,iBAAiBD,EAAC;AACxB,YAAI,SAAS,QAAQC,IAAG,KAAK;AAAG;AAChC,YAAI,CAAC,OAAO,UAAU,qBAAqB,KAAK,QAAQA,IAAG;AAAG;AAC9D,eAAOA,IAAG,IAAI,OAAOA,IAAG;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,IAAI,OAAOC,KAAI;AACzB,OAAG,iBAAiB,OAAOA,KAAI,CAAC,cAAc,WAAW;AAAA,EAC3D;AACA,WAAS,IAAI,IAAI,OAAOA,KAAI;AAC1B,OAAG,oBAAoB,OAAOA,KAAI,CAAC,cAAc,WAAW;AAAA,EAC9D;AACA,WAAS,QAAyB,IAAe,UAAU;AACzD,QAAI,CAAC;AAAU;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,IAAP;AACA,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;AAAK;AAAA,MAElB,SAAS,KAAK,gBAAgB,EAAE;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AACA,MAAI,UAAU;AACd,WAAS,YAAY,IAAIC,OAAM,OAAO;AACpC,QAAI,MAAMA,OAAM;AACd,UAAI,GAAG,WAAW;AAChB,WAAG,UAAU,QAAQ,QAAQ,QAAQ,EAAEA,KAAI;AAAA,MAC7C,OAAO;AACL,YAAI,aAAa,MAAM,GAAG,YAAY,KAAK,QAAQ,SAAS,GAAG,EAAE,QAAQ,MAAMA,QAAO,KAAK,GAAG;AAC9F,WAAG,aAAa,aAAa,QAAQ,MAAMA,QAAO,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,YAAIC,aAAY,IAAI,IAAI,WAAW;AACnC,YAAIA,cAAaA,eAAc,QAAQ;AACrC,8BAAoBA,aAAY,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;AAAQ;AAChD,QAAI,QAAQE,MAAKC,OAAMC,SAAQC,QAAOC,SAAQC;AAC9C,QAAI,OAAO,UAAU,GAAG,cAAc,OAAO,0BAA0B,GAAG;AACxE,eAAS,GAAG,sBAAsB;AAClC,MAAAL,OAAM,OAAO;AACb,MAAAC,QAAO,OAAO;AACd,MAAAC,UAAS,OAAO;AAChB,MAAAC,SAAQ,OAAO;AACf,MAAAC,UAAS,OAAO;AAChB,MAAAC,SAAQ,OAAO;AAAA,IACjB,OAAO;AACL,MAAAL,OAAM;AACN,MAAAC,QAAO;AACP,MAAAC,UAAS,OAAO;AAChB,MAAAC,SAAQ,OAAO;AACf,MAAAC,UAAS,OAAO;AAChB,MAAAC,SAAQ,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,YAAAL,QAAO,cAAc,MAAM,SAAS,IAAI,WAAW,kBAAkB,CAAC;AACtE,YAAAC,SAAQ,cAAc,OAAO,SAAS,IAAI,WAAW,mBAAmB,CAAC;AACzE,YAAAC,UAASF,OAAM,OAAO;AACtB,YAAAG,SAAQF,QAAO,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,QAAAD,QAAO;AACP,QAAAC,SAAQ;AACR,QAAAI,UAAS;AACT,QAAAD,WAAU;AACV,QAAAF,UAASF,OAAMI;AACf,QAAAD,SAAQF,QAAOI;AAAA,MACjB;AAAA,IACF;AACA,WAAO;AAAA,MACL,KAAKL;AAAA,MACL,MAAMC;AAAA,MACN,QAAQC;AAAA,MACR,OAAOC;AAAA,MACP,OAAOE;AAAA,MACP,QAAQD;AAAA,IACV;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,GAC5CE,WAAU;AACZ,UAAI,eAAe,SAAS,eAAe,QAAQ;AACjD,QAAAA,WAAU,aAAa;AAAA,MACzB,OAAO;AACL,QAAAA,WAAU,aAAa;AAAA,MACzB;AACA,UAAI,CAACA;AAAS,eAAO;AACrB,UAAI,WAAW,0BAA0B;AAAG;AAC5C,eAAS,2BAA2B,QAAQ,KAAK;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAUA,WAAS,SAAS,IAAI,UAAUC,UAAS,eAAe;AACtD,QAAI,eAAe,GACjBT,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,GAAGS,SAAQ,WAAW,IAAI,KAAK,GAAG;AACvL,YAAI,iBAAiB,UAAU;AAC7B,iBAAO,SAAST,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,WAASU,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,aAASV,MAAK,KAAK;AACjB,UAAI,CAAC,IAAI,eAAeA,EAAC;AAAG;AAC5B,eAASW,QAAO,KAAK;AACnB,YAAI,IAAI,eAAeA,IAAG,KAAK,IAAIA,IAAG,MAAM,IAAIX,EAAC,EAAEW,IAAG;AAAG,iBAAO,OAAOX,EAAC;AAAA,MAC1E;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,2BAA2B,IAAI,aAAa;AAEnD,QAAI,CAAC,MAAM,CAAC,GAAG;AAAuB,aAAO,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;AAAM,mBAAO,0BAA0B;AAC5F,cAAI,WAAW;AAAa,mBAAO;AACnC,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,IAEF,SAAS,OAAO,KAAK;AACrB,WAAO,0BAA0B;AAAA,EACnC;AACA,WAASY,QAAO,KAAK,KAAK;AACxB,QAAI,OAAO,KAAK;AACd,eAASD,QAAO,KAAK;AACnB,YAAI,IAAI,eAAeA,IAAG,GAAG;AAC3B,cAAIA,IAAG,IAAI,IAAIA,IAAG;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,SAASE,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,WAAWC,UAASC,UAAS;AACtE,QAAI,OAAO,CAAC;AACZ,UAAM,KAAK,UAAU,QAAQ,EAAE,QAAQ,SAAU,OAAO;AACtD,UAAI,YAAY,WAAW,aAAa;AACxC,UAAI,CAAC,QAAQ,OAAOD,SAAQ,WAAW,WAAW,KAAK,KAAK,MAAM,YAAY,UAAUC;AAAS;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;AAAW;AAC7B,YAAI,WAAW,CAAC,EAAE,MAAM,KAAK,KAAK,GAAG,QAAQ;AAC7C,iBAAS,QAAQ,SAAU,OAAO;AAChC,cAAI,IAAI,OAAO,SAAS,MAAM,UAAU,UAAU,SAAS;AAAO;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;AAAY,YAAAA,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;AAAY,YAAAA,UAAS;AAAA,QAC/C,OAAO;AACL,gCAAsB,WAAW,WAAY;AAC3C,gBAAI,OAAOA,cAAa;AAAY,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,QAAQH,UAAS;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,IAAIA,SAAQ;AAAA,EAC7N;AAEA,MAAII,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;AAAG;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,WAAUL,UAAS;AAC7E,MAAAI,SAAQ,QAAQ,SAAU,QAAQ;AAChC,YAAI,aAAa,OAAO;AACxB,YAAI,CAAC,SAAS,QAAQ,UAAU,KAAK,CAAC,OAAO;AAAqB;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;AAAG;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,mBAAmBE,OAAM,UAAU;AAC9D,UAAI,kBAAkB,CAAC;AACvB,MAAAJ,SAAQ,QAAQ,SAAU,QAAQ;AAChC,YAAI,OAAO,OAAO,oBAAoB;AAAY;AAClD,iBAAS,iBAAiB,OAAO,gBAAgB,KAAK,SAAS,OAAO,UAAU,GAAGI,KAAI,CAAC;AAAA,MAC1F,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,cAAc,SAAS,aAAa,UAAUA,OAAM,OAAO;AACzD,UAAI;AACJ,MAAAJ,SAAQ,QAAQ,SAAU,QAAQ;AAEhC,YAAI,CAAC,SAAS,OAAO,UAAU;AAAG;AAGlC,YAAI,OAAO,mBAAmB,OAAO,OAAO,gBAAgBI,KAAI,MAAM,YAAY;AAChF,0BAAgB,OAAO,gBAAgBA,KAAI,EAAE,KAAK,SAAS,OAAO,UAAU,GAAG,KAAK;AAAA,QACtF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAASC,eAAc,MAAM;AAC3B,QAAI,WAAW,KAAK,UAClBC,UAAS,KAAK,QACdF,QAAO,KAAK,MACZ,WAAW,KAAK,UAChBG,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;AAAU;AACf,QAAI,KACFV,WAAU,SAAS,SACnB,SAAS,OAAOQ,MAAK,OAAO,CAAC,EAAE,YAAY,IAAIA,MAAK,OAAO,CAAC;AAE9D,QAAI,OAAO,eAAe,CAAC,cAAc,CAAC,MAAM;AAC9C,YAAM,IAAI,YAAYA,OAAM;AAAA,QAC1B,SAAS;AAAA,QACT,YAAY;AAAA,MACd,CAAC;AAAA,IACH,OAAO;AACL,YAAM,SAAS,YAAY,OAAO;AAClC,UAAI,UAAUA,OAAM,MAAM,IAAI;AAAA,IAChC;AACA,QAAI,KAAK,QAAQE;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,mBAAmBR,OAAM,QAAQ,CAAC;AAClI,aAASF,WAAU,oBAAoB;AACrC,UAAIA,OAAM,IAAI,mBAAmBA,OAAM;AAAA,IACzC;AACA,QAAII,SAAQ;AACV,MAAAA,QAAO,cAAc,GAAG;AAAA,IAC1B;AACA,QAAIV,SAAQ,MAAM,GAAG;AACnB,MAAAA,SAAQ,MAAM,EAAE,KAAK,UAAU,GAAG;AAAA,IACpC;AAAA,EACF;AAEA,MAAI,YAAY,CAAC,KAAK;AACtB,MAAIiB,eAAc,SAASA,aAAY,WAAW,UAAU;AAC1D,QAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC9E,gBAAgB,KAAK,KACrBC,QAAO,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,sBAAsBV,OAAM;AAC1D,uBAAe;AAAA,UACb;AAAA,UACA,MAAMA;AAAA,UACN;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAGU,KAAI,CAAC;AAAA,EACV;AACA,WAAS,eAAe,MAAM;AAC5B,IAAAT,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;AAAgB;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,SAASU,kBAAiB,IAAInB,UAAS;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,GAAGA,QAAO,GAChC,SAAS,SAAS,IAAI,GAAGA,QAAO,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,SAASoB,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;AAAG;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,eAAcxB,UAAS;AAC9C,aAAS,KAAK,OAAO,MAAM;AACzB,aAAO,SAAUyB,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,gBAAgB1B,SAAQ;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,IAAAA,SAAQ,QAAQ;AAAA,EAClB;AAjGF,MAkGE,sBAAsB,SAAS4B,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,YAAI,QAAQ,CAAC;AACb,iBAASC,MAAK,KAAK;AACjB,cAAI,IAAI,eAAeA,EAAC,GAAG;AACzB,kBAAMA,EAAC,IAAI,IAAIA,EAAC;AAAA,UAClB;AAAA,QACF;AACA,cAAM,SAAS,MAAM,SAAS;AAC9B,cAAM,iBAAiB;AACvB,cAAM,kBAAkB;AACxB,gBAAQ,OAAO,EAAE,YAAY,KAAK;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACA,MAAI,wBAAwB,SAASC,uBAAsB,KAAK;AAC9D,QAAI,QAAQ;AACV,aAAO,WAAW,OAAO,EAAE,iBAAiB,IAAI,MAAM;AAAA,IACxD;AAAA,EACF;AAOA,WAAS,SAAS,IAAIhC,UAAS;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,UAAUA,WAAU,SAAS,CAAC,GAAGA,QAAO;AAG7C,OAAG,OAAO,IAAI;AACd,QAAIK,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,cAAcsB,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,IAAItB,SAAQ;AAGlD,aAASG,SAAQH,WAAU;AACzB,QAAEG,SAAQR,cAAaA,SAAQQ,KAAI,IAAIH,UAASG,KAAI;AAAA,IACtD;AACA,kBAAcR,QAAO;AAGrB,aAASiC,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,kBAAkBjC,SAAQ,gBAAgB,QAAQ;AACvD,QAAI,KAAK,iBAAiB;AAExB,WAAK,QAAQ,sBAAsB;AAAA,IACrC;AAGA,QAAIA,SAAQ,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,IAAAA,SAAQ,SAASA,SAAQ,MAAM,OAAO,KAAK,KAAKA,SAAQ,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;AAAY;AACrB,UAAI,QAAQ,MACV,KAAK,KAAK,IACVA,WAAU,KAAK,SACf,kBAAkBA,SAAQ,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,QACpHkC,UAASlC,SAAQ;AACnB,6BAAuB,EAAE;AAGzB,UAAI,QAAQ;AACV;AAAA,MACF;AACA,UAAI,wBAAwB,KAAK,IAAI,KAAK,IAAI,WAAW,KAAKA,SAAQ,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,QAAQA,SAAQ,WAAW,IAAI,KAAK;AACrD,UAAI,UAAU,OAAO,UAAU;AAC7B;AAAA,MACF;AACA,UAAI,eAAe,QAAQ;AAEzB;AAAA,MACF;AAGA,iBAAWmC,OAAM,MAAM;AACvB,0BAAoBA,OAAM,QAAQnC,SAAQ,SAAS;AAGnD,UAAI,OAAOkC,YAAW,YAAY;AAChC,YAAIA,QAAO,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,WAAWiB,SAAQ;AACjB,QAAAA,UAASA,QAAO,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,YAAAjB,aAAY,UAAU,OAAO;AAAA,cAC3B;AAAA,YACF,CAAC;AACD,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,YAAIiB,SAAQ;AACV,6BAAmB,IAAI,eAAe;AACtC;AAAA,QACF;AAAA,MACF;AACA,UAAIlC,SAAQ,UAAU,CAAC,QAAQ,gBAAgBA,SAAQ,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,IACXA,WAAU,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,sBAAcA,SAAQ;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,SAASoC,eAAc;AACnC,UAAAnB,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,QAAQjB,SAAQ,aAAa,IAAI;AAAA,QAC/C;AAGA,QAAAA,SAAQ,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,YAAIA,SAAQ,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,QAAAiB,aAAY,cAAc,MAAM;AAAA,UAC9B;AAAA,QACF,CAAC;AAGD,YAAIjB,SAAQ,UAAU,CAACA,SAAQ,oBAAoB,WAAW,CAAC,KAAK,mBAAmB,EAAE,QAAQ,cAAc;AAC7G,cAAI,SAAS,eAAe;AAC1B,iBAAK,QAAQ;AACb;AAAA,UACF;AAIA,cAAIA,SAAQ,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,UAAAA,SAAQ,kBAAkB,GAAG,eAAe,eAAe,MAAM,4BAA4B;AAC7F,gBAAM,kBAAkB,WAAW,aAAaA,SAAQ,KAAK;AAAA,QAC/D,OAAO;AACL,sBAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,IACA,8BAA8B,SAAS,6BAA6DqC,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,KAAP;AAAA,MAAa;AAAA,IACjB;AAAA,IACA,cAAc,SAAS,aAAa,UAAU,KAAK;AACjD,4BAAsB;AACtB,UAAI,UAAU,QAAQ;AACpB,QAAApB,aAAY,eAAe,MAAM;AAAA,UAC/B;AAAA,QACF,CAAC;AACD,YAAI,KAAK,iBAAiB;AACxB,aAAG,UAAU,YAAY,qBAAqB;AAAA,QAChD;AACA,YAAIjB,WAAU,KAAK;AAGnB,SAAC,YAAY,YAAY,QAAQA,SAAQ,WAAW,KAAK;AACzD,oBAAY,QAAQA,SAAQ,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;AAAQ;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,YAAIA,WAAU,KAAK,SACjB,oBAAoBA,SAAQ,mBAC5B,iBAAiBA,SAAQ,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,GACpHsC,OAAM,MAAM,UAAU,OAAO,UAAU,eAAe,MAAM,UAAU,MAAM,uBAAuB,qBAAqB,CAAC,IAAI,iCAAiC,CAAC,IAAI,MAAM,UAAU,IACnLC,OAAM,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,KAAKD,OAAM,UAAU;AACjC,wBAAY,KAAKC,OAAM,UAAU;AAAA,UACnC,OAAO;AACL,0BAAc;AAAA,cACZ,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAGD;AAAA,cACH,GAAGC;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,mBAASD;AACT,mBAASC;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,GACrEvC,WAAU,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;AAAU,oCAAsB,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,SAASA,SAAQ,YAAY,KAAK;AAC9C,oBAAY,SAASA,SAAQ,eAAe,IAAI;AAChD,oBAAY,SAASA,SAAQ,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,UAAIA,WAAU,MAAM;AACpB,MAAAiB,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,kBAAUuB,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,QAAAvB,aAAY,SAAS,KAAK;AAC1B,YAAI,SAAS;AAAe;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,QAAQjB,SAAQ,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,UAAAA,SAAQ,WAAWA,SAAQ,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,QACAA,WAAU,KAAK,SACf,QAAQA,SAAQ,OAChB,iBAAiB,SAAS,QAC1B,UAAU,gBAAgB,OAC1B,UAAUA,SAAQ,MAClB,eAAe,eAAe,gBAC9B,UACA,QAAQ,MACR,iBAAiB;AACnB,UAAI;AAAS;AACb,eAAS,cAAcQ,OAAM,OAAO;AAClC,QAAAS,aAAYT,OAAM,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,OAAOiC,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,QAAQ1C,SAAQ,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,CAACA,SAAQ,kBAAkB,CAAC,IAAI,UAAU,WAAW,UAAU;AACjE,iBAAO,WAAW,OAAO,EAAE,iBAAiB,IAAI,MAAM;AAGtD,WAAC,aAAa,8BAA8B,GAAG;AAAA,QACjD;AACA,SAACA,SAAQ,kBAAkB,IAAI,mBAAmB,IAAI,gBAAgB;AACtE,eAAO,iBAAiB;AAAA,MAC1B;AAGA,eAAS,UAAU;AACjB,mBAAWmC,OAAM,MAAM;AACvB,4BAAoBA,OAAM,QAAQnC,SAAQ,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,QAAQA,SAAQ,WAAW,IAAI,IAAI;AACpD,oBAAc,UAAU;AACxB,UAAI,SAAS;AAAe,eAAO;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,CAACA,SAAQ,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;AAAe,iBAAO;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,IAAIA,SAAQ,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,GAAGA,UAAS,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,mBAAmBA,SAAQ,cAAc;AAAA,UACrE;AACA,sBAAY,kBAAkB,KAAK,QAAQ,YAAY,UAAU,kBAAkB,IAAIA,SAAQ,eAAeA,SAAQ,yBAAyB,OAAOA,SAAQ,gBAAgBA,SAAQ,uBAAuB,wBAAwB,eAAe,MAAM;AAC1P,cAAI;AACJ,cAAI,cAAc,GAAG;AAEnB,gBAAI,YAAYmC,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,oBACvBO,SAAQ;AACV,UAAAA,SAAQ,cAAc;AACtB,cAAI,aAAa,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ,YAAY,KAAKA,MAAK;AACrF,cAAI,eAAe,OAAO;AACxB,gBAAI,eAAe,KAAK,eAAe,IAAI;AACzC,cAAAA,SAAQ,eAAe;AAAA,YACzB;AACA,sBAAU;AACV,uBAAW,WAAW,EAAE;AACxB,oBAAQ;AACR,gBAAIA,UAAS,CAAC,aAAa;AACzB,iBAAG,YAAY,MAAM;AAAA,YACvB,OAAO;AACL,qBAAO,WAAW,aAAa,QAAQA,SAAQ,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,IACZ1C,WAAU,KAAK;AAGjB,iBAAWmC,OAAM,MAAM;AACvB,0BAAoBA,OAAM,QAAQnC,SAAQ,SAAS;AACnD,MAAAiB,aAAY,QAAQ,MAAM;AAAA,QACxB;AAAA,MACF,CAAC;AACD,iBAAW,UAAU,OAAO;AAG5B,iBAAWkB,OAAM,MAAM;AACvB,0BAAoBA,OAAM,QAAQnC,SAAQ,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,WAACA,SAAQ,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,MAAAiB,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,UAAI0B,SAAQ,CAAC,GACX,IACA,WAAW,KAAK,GAAG,UACnBZ,KAAI,GACJa,KAAI,SAAS,QACb5C,WAAU,KAAK;AACjB,aAAO+B,KAAIa,IAAGb,MAAK;AACjB,aAAK,SAASA,EAAC;AACf,YAAI,QAAQ,IAAI/B,SAAQ,WAAW,KAAK,IAAI,KAAK,GAAG;AAClD,UAAA2C,OAAM,KAAK,GAAG,aAAa3C,SAAQ,UAAU,KAAK,YAAY,EAAE,CAAC;AAAA,QACnE;AAAA,MACF;AACA,aAAO2C;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,SAAS,KAAKA,QAAO,cAAc;AACvC,UAAI,QAAQ,CAAC,GACXjC,UAAS,KAAK;AAChB,WAAK,QAAQ,EAAE,QAAQ,SAAUmC,KAAId,IAAG;AACtC,YAAI,KAAKrB,QAAO,SAASqB,EAAC;AAC1B,YAAI,QAAQ,IAAI,KAAK,QAAQ,WAAWrB,SAAQ,KAAK,GAAG;AACtD,gBAAMmC,GAAE,IAAI;AAAA,QACd;AAAA,MACF,GAAG,IAAI;AACP,sBAAgB,KAAK,sBAAsB;AAC3C,MAAAF,OAAM,QAAQ,SAAUE,KAAI;AAC1B,YAAI,MAAMA,GAAE,GAAG;AACb,UAAAnC,QAAO,YAAY,MAAMmC,GAAE,CAAC;AAC5B,UAAAnC,QAAO,YAAY,MAAMmC,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,OAAOrC,OAAM,OAAO;AACnC,UAAIR,WAAU,KAAK;AACnB,UAAI,UAAU,QAAQ;AACpB,eAAOA,SAAQQ,KAAI;AAAA,MACrB,OAAO;AACL,YAAI,gBAAgB,cAAc,aAAa,MAAMA,OAAM,KAAK;AAChE,YAAI,OAAO,kBAAkB,aAAa;AACxC,UAAAR,SAAQQ,KAAI,IAAI;AAAA,QAClB,OAAO;AACL,UAAAR,SAAQQ,KAAI,IAAI;AAAA,QAClB;AACA,YAAIA,UAAS,SAAS;AACpB,wBAAcR,QAAO;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAIA,SAAS,SAAS,UAAU;AAC1B,MAAAiB,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,SAAU6B,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,QAAA7B,aAAY,aAAa,IAAI;AAC7B,YAAI,SAAS;AAAe;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;AAAe;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,MAAMU,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,aAC1DJ,KAAI,IAAI,QACR,MAAM;AACR,WAAOA,MAAK;AACV,aAAO,IAAI,WAAWA,EAAC;AAAA,IACzB;AACA,WAAO,IAAI,SAAS,EAAE;AAAA,EACxB;AACA,WAAS,uBAAuBgB,OAAM;AACpC,sBAAkB,SAAS;AAC3B,QAAI,SAASA,MAAK,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,UAAUd,KAAI;AACrB,WAAO,WAAWA,KAAI,CAAC;AAAA,EACzB;AACA,WAAS,gBAAgBY,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,QAAQG;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAOR;AAAA,IACP,OAAOL;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,QAAQ/B,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;AAAO,MAAAA,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;AAAO,iBAAS,QAAQ,eAAe,eAAe,CAAC,GAAG,SAAS,KAAK,GAAG,OAAO,KAAK;AAClG,oBAAc,MAAM,MAAM;AAAA,IAC5B,CAAC;AAAA,EACH;AAOA,WAAS,SAAS,SAAU,IAAIJ,UAAS;AACvC,WAAO,IAAI,SAAS,IAAIA,QAAO;AAAA,EACjC;AAGA,WAAS,UAAUiD;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,eAAShB,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,SAASiB,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,YAAI5B,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,SAAU4B,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,KAAKnD,UAASU,SAAQ,YAAY;AAEpE,QAAI,CAACV,SAAQ;AAAQ;AACrB,QAAIsB,MAAK,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SAC3CC,MAAK,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SACzC,OAAOvB,SAAQ,mBACf,QAAQA,SAAQ,aAChB,cAAc,0BAA0B;AAC1C,QAAI,qBAAqB,OACvB;AAGF,QAAI,iBAAiBU,SAAQ;AAC3B,qBAAeA;AACf,uBAAiB;AACjB,iBAAWV,SAAQ;AACnB,uBAAiBA,SAAQ;AACzB,UAAI,aAAa,MAAM;AACrB,mBAAW,2BAA2BU,SAAQ,IAAI;AAAA,MACpD;AAAA,IACF;AACA,QAAI,YAAY;AAChB,QAAI,gBAAgB;AACpB,OAAG;AACD,UAAI,KAAK,eACP,OAAO,QAAQ,EAAE,GACjB0C,OAAM,KAAK,KACXC,UAAS,KAAK,QACdC,QAAO,KAAK,MACZC,SAAQ,KAAK,OACbC,SAAQ,KAAK,OACbC,UAAS,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,qBAAaD,SAAQ,gBAAgB,MAAM,cAAc,UAAU,MAAM,cAAc,YAAY,MAAM,cAAc;AACvH,qBAAaC,UAAS,iBAAiB,MAAM,cAAc,UAAU,MAAM,cAAc,YAAY,MAAM,cAAc;AAAA,MAC3H,OAAO;AACL,qBAAaD,SAAQ,gBAAgB,MAAM,cAAc,UAAU,MAAM,cAAc;AACvF,qBAAaC,UAAS,iBAAiB,MAAM,cAAc,UAAU,MAAM,cAAc;AAAA,MAC3F;AACA,UAAI,KAAK,eAAe,KAAK,IAAIF,SAAQjC,EAAC,KAAK,QAAQ,aAAakC,SAAQ,gBAAgB,KAAK,IAAIF,QAAOhC,EAAC,KAAK,QAAQ,CAAC,CAAC;AAC5H,UAAI,KAAK,eAAe,KAAK,IAAI+B,UAAS9B,EAAC,KAAK,QAAQ,aAAakC,UAAS,iBAAiB,KAAK,IAAIL,OAAM7B,EAAC,KAAK,QAAQ,CAAC,CAAC;AAC9H,UAAI,CAAC,YAAY,SAAS,GAAG;AAC3B,iBAASQ,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/B,SAAQ,gBAAgB,kBAAkB,gBAAgB,gBAAgB,2BAA2B,eAAe,KAAK;AAClI,gBAAY;AAAA,EACd,GAAG,EAAE;AAEL,MAAI,OAAO,SAASkD,MAAK,MAAM;AAC7B,QAAI,gBAAgB,KAAK,eACvBlC,eAAc,KAAK,aACnBW,UAAS,KAAK,QACd,iBAAiB,KAAK,gBACtB,wBAAwB,KAAK,uBAC7B,qBAAqB,KAAK,oBAC1B,uBAAuB,KAAK;AAC9B,QAAI,CAAC;AAAe;AACpB,QAAI,aAAaX,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,QAAQW;AAAA,QACR,aAAaX;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,UAAIa,UAAS,MAAM,QACjBX,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,aAAaW,SAAQ,WAAW;AAAA,MACnD,OAAO;AACL,aAAK,SAAS,GAAG,YAAYA,OAAM;AAAA,MACrC;AACA,WAAK,SAAS,WAAW;AACzB,UAAIX,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,SAAS0C,SAAQ,OAAO;AAC/B,UAAI/B,UAAS,MAAM,QACjBX,eAAc,MAAM;AACtB,UAAI,iBAAiBA,gBAAe,KAAK;AACzC,qBAAe,sBAAsB;AACrC,MAAAW,QAAO,cAAcA,QAAO,WAAW,YAAYA,OAAM;AACzD,qBAAe,WAAW;AAAA,IAC5B;AAAA,IACA;AAAA,EACF;AACA,WAAS,QAAQ;AAAA,IACf,YAAY;AAAA,EACd,CAAC;AAED,MAAI;AACJ,WAAS,aAAa;AACpB,aAAS,OAAO;AACd,WAAK,WAAW;AAAA,QACd,WAAW;AAAA,MACb;AAAA,IACF;AACA,SAAK,YAAY;AAAA,MACf,WAAW,SAASgC,WAAU,MAAM;AAClC,YAAIhC,UAAS,KAAK;AAClB,qBAAaA;AAAA,MACf;AAAA,MACA,eAAe,SAAS,cAAc,OAAO;AAC3C,YAAI,YAAY,MAAM,WACpB,SAAS,MAAM,QACf,SAAS,MAAM,QACf,iBAAiB,MAAM,gBACvB,UAAU,MAAM,SAChBiC,UAAS,MAAM;AACjB,YAAI,CAAC,eAAe,QAAQ;AAAM;AAClC,YAAI,KAAK,KAAK,SAAS,IACrB5D,WAAU,KAAK;AACjB,YAAI,UAAU,WAAW,IAAI;AAC3B,cAAI,aAAa;AACjB,cAAI,OAAO,MAAM,MAAM,OAAO;AAC5B,wBAAY,QAAQA,SAAQ,WAAW,IAAI;AAC3C,yBAAa;AAAA,UACf,OAAO;AACL,yBAAa;AAAA,UACf;AACA,cAAI,cAAc,eAAe,YAAY;AAC3C,wBAAY,YAAYA,SAAQ,WAAW,KAAK;AAAA,UAClD;AAAA,QACF;AACA,gBAAQ;AACR,kBAAU,IAAI;AACd,QAAA4D,QAAO;AAAA,MACT;AAAA,MACA,MAAM,SAASV,MAAK,OAAO;AACzB,YAAI,iBAAiB,MAAM,gBACzBlC,eAAc,MAAM,aACpBW,UAAS,MAAM;AACjB,YAAI,aAAaX,gBAAe,KAAK;AACrC,YAAIhB,WAAU,KAAK;AACnB,sBAAc,YAAY,YAAYA,SAAQ,WAAW,KAAK;AAC9D,YAAI,eAAeA,SAAQ,QAAQgB,gBAAeA,aAAY,QAAQ,OAAO;AAC3E,cAAIW,YAAW,YAAY;AACzB,uBAAW,sBAAsB;AACjC,gBAAI,eAAe;AAAgB,6BAAe,sBAAsB;AACxE,sBAAUA,SAAQ,UAAU;AAC5B,uBAAW,WAAW;AACtB,gBAAI,eAAe;AAAgB,6BAAe,WAAW;AAAA,UAC/D;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS,SAAS,UAAU;AAC1B,qBAAa;AAAA,MACf;AAAA,IACF;AACA,WAAO,SAAS,MAAM;AAAA,MACpB,YAAY;AAAA,MACZ,iBAAiB,SAAS,kBAAkB;AAC1C,eAAO;AAAA,UACL,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAAS,UAAU,IAAI,IAAI;AACzB,QAAI,KAAK,GAAG,YACVkC,MAAK,GAAG,YACR,IACAC;AACF,QAAI,CAAC,MAAM,CAACD,OAAM,GAAG,YAAY,EAAE,KAAKA,IAAG,YAAY,EAAE;AAAG;AAC5D,SAAK1B,OAAM,EAAE;AACb,IAAA2B,MAAK3B,OAAM,EAAE;AACb,QAAI,GAAG,YAAY0B,GAAE,KAAK,KAAKC,KAAI;AACjC,MAAAA;AAAA,IACF;AACA,OAAG,aAAa,IAAI,GAAG,SAAS,EAAE,CAAC;AACnC,IAAAD,IAAG,aAAa,IAAIA,IAAG,SAASC,GAAE,CAAC;AAAA,EACrC;AA+kBA,WAAS,MAAM,IAAI,iBAAiB,CAAC;AACrC,WAAS,MAAM,QAAQ,MAAM;AAE7B,MAAO,uBAAQ;;;AD7yGf,MAAO,+BAAP,cAA6B,sBAAsB;AAAA,IAMjD,aAAa;AACX,YAAM,WAAW;AAEjB,WAAK,eAAe;AAAA,QAClB,aAAa,KAAK;AAAA,MACpB;AACA,WAAK,eAAe,CAAC;AAAA,IACvB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,YAAMC,QAAO;AACb,YAAM,cAAc,KAAK,UAAU,MAAM,GAAG;AAE5C,kBAAY,QAAQ,SAAU,aAAaC,QAAO;AAChD,gBAAQ,IAAI,4BAA4B,WAAW;AACnD,YAAI,eAAe,IAAI;AAAC;AAAA,QAAM;AAAC;AAC/B,QAAAD,MAAK,aAAa,WAAW,EAAE,KAAKA,KAAI,EAAE;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA,IAEA,yBAAyB;AACvB,WAAK,QAAQ,yBAAyB;AAEtC,YAAM,kBAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,6BAA6B;AAE1E,sBAAgB,KAAK,SAAUC,QAAO;AACpC,cAAM,kBAAkB,EAAE,IAAI;AAC9B,cAAM,cAAc,EAAE,gBAAgB,KAAK,WAAW,CAAC;AAEvD,oBAAY,GAAG,qBAAqB,WAAY;AAE9C,0BAAgB,SAAS,WAAW;AAAA,QACtC,CAAC;AACD,oBAAY,GAAG,sBAAsB,WAAY;AAE/C,0BAAgB,YAAY,WAAW;AAAA,QACzC,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EAEF;AA7CE,gBAFK,8BAEE,UAAS;AAAA,IACd,MAAM;AAAA,EACR;;;AEPF;AAAA;AAAA;AAAA;AAGA,MAAO,oCAAP,cAA6B,WAAW;AAAA,IACtC,UAAU;AACR,MAAAC,QAAe,SAAS,IAAI;AAAA,IAC9B;AAAA,IAEA,WAAW,OAAO;AAChB,YAAM,eAAe,MAAM,OAAO,UAAU;AAC5C,YAAM,aAAa,SAAS,eAAe,mBAAmB;AAC9D,YAAM,gBAAgB,SAAS,eAAe,oBAAoB;AAElE,UAAI,cAAc;AAEhB,mBAAW,UAAU,IAAI,QAAQ;AACjC,sBAAc,UAAU,OAAO,QAAQ;AAGvC,cAAM,UAAU,SAAS,eAAe,mBAAmB,EAAE;AAC7D,YAAI,SAAS;AACX,eAAK,UAAU,kCAAkC;AAAA,YAC/C;AAAA,YACA,eAAe;AAAA,UACjB,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AAEL,mBAAW,UAAU,OAAO,QAAQ;AACpC,sBAAc,UAAU,IAAI,QAAQ;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,gBAAgB;AAEd,YAAM,aAAa,SAAS,iBAAiB,uDAAuD;AACpG,YAAM,eAAe,MAAM,KAAK,UAAU,EAAE,IAAI,QAAM,GAAG,KAAK;AAG9D,YAAM,cAAc,SAAS,eAAe,sBAAsB;AAClE,UAAI,aAAa;AACf,oBAAY,QAAQ,aAAa,KAAK,GAAG;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;;;AC5CA;AAAA;AAAA;AAAA;AAGA,MAAO,mCAAP,cAA6B,WAAW;AAAA,IAGtC,UAAU;AACR,MAAAC,QAAe,SAAS,IAAI;AAG5B,YAAM,iBAAiB,SAAS,eAAe,sBAAsB;AACrE,UAAI,gBAAgB;AAClB,uBAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAAA,IAEA,WAAW,OAAO;AAChB,YAAM,eAAe,MAAM,OAAO,UAAU;AAC5C,YAAM,aAAa,SAAS,eAAe,mBAAmB;AAC9D,YAAM,gBAAgB,SAAS,eAAe,oBAAoB;AAGlE,YAAM,cAAc,WAAW,cAAc,2BAA2B;AACxE,YAAM,iBAAiB,SAAS,eAAe,sBAAsB;AAErE,UAAI,cAAc;AAEhB,mBAAW,UAAU,IAAI,QAAQ;AACjC,sBAAc,UAAU,OAAO,QAAQ;AAGvC,YAAI;AAAa,sBAAY,WAAW;AACxC,YAAI;AAAgB,yBAAe,WAAW;AAG9C,cAAM,UAAU,KAAK,cAAc;AACnC,YAAI,SAAS;AACX,eAAK,UAAU,kCAAkC,OAAO;AAAA,QAC1D;AAAA,MACF,OAAO;AAEL,mBAAW,UAAU,OAAO,QAAQ;AACpC,sBAAc,UAAU,IAAI,QAAQ;AAGpC,YAAI;AAAa,sBAAY,WAAW;AACxC,YAAI;AAAgB,yBAAe,WAAW;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,gBAAgB;AAEd,YAAM,aAAa,SAAS,iBAAiB,uDAAuD;AACpG,YAAM,eAAe,MAAM,KAAK,UAAU,EAAE,IAAI,QAAM,GAAG,KAAK;AAG9D,YAAM,cAAc,SAAS,eAAe,sBAAsB;AAClE,UAAI,aAAa;AACf,oBAAY,QAAQ,aAAa,KAAK,GAAG;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AAzDE,gBADK,kCACE,WAAU,CAAC,SAAS;;;ACJ7B;AAAA;AAAA;AAAA;AAEA,MAAO,oCAAP,cAA6B,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,IAMtC,SAAS,OAAO;AACd,UAAG,EAAE,MAAM,MAAM,EAAE,QAAQ,GAAG,EAAE,SAAS,KAAK,MAAM,UAAU,MAAM,eAAe;AAEjF,gBAAQ,IAAI,EAAE,MAAM,MAAM,EAAE,QAAQ,GAAG,CAAC;AAAA,MAC1C,OAAO;AACL,cAAM,gBAAgB;AACtB,cAAM,eAAe;AACrB,YAAI,iBAAiB,EAAE,MAAM,aAAa;AAE1C,YAAG,eAAe,KAAK,QAAQ,GAAG;AAChC,kBAAQ,IAAI,eAAe,KAAK,QAAQ,CAAC;AACzC,2BAAiB,EAAE,IAAI,eAAe,KAAK,QAAQ,GAAG;AAAA,QACxD;AAEA,cAAMC,YAAW,eAAe,SAAS,UAAU;AAEnD,UAAE,gBAAgB,EAAE,IAAI;AAAA,UACtB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,QACtB,CAAC;AACD,UAAE,gBAAgB,EAAE,YAAY,UAAU;AAC1C,YAAI,CAACA,WAAU;AACb,yBAAe,SAAS,UAAU;AAClC,gBAAMC,SAAQ,eAAe,KAAK,YAAY;AAC9C,gBAAM,kBAAkB,eAAe,KAAK,uBAAuB;AACnE,cAAIA,QAAO;AACT,2BAAe,IAAI;AAAA,cACjB,gBAAgBA;AAAA,YAClB,CAAC;AAAA,UACH;AACA,cAAG,iBAAiB;AAClB,2BAAe,IAAI;AAAA,cACjB,oBAAoB;AAAA,YACtB,CAAC;AAAA,UACH;AACA,cAAI,aAAa,eAAe,QAAQ,6BAA6B,EAAE,MAAM;AAC7E,0BAAgB,UAAU;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc,OAAO;AACnB,YAAM,gBAAgB;AACtB,YAAM,eAAe;AACrB,UAAI,iBAAiB,EAAE,MAAM,aAAa;AAC1C,UAAI,aAAa,eAAe,QAAQ,6BAA6B,EAAE,MAAM;AAI7E,sBAAgB,UAAU;AAAA,IAC5B;AAAA,EAEF;AAEA,WAAS,gBAAgB,YAAY;AACnC,MAAE,6BAA6B,EAAE,IAAI;AAAA,MACnC,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,IACtB,CAAC;AAGD,UAAMA,SAAQ,WAAW,KAAK,YAAY;AAC1C,UAAM,kBAAkB,WAAW,KAAK,uBAAuB;AAC/D,QAAIA,QAAO;AACT,iBAAW,IAAI;AAAA,QACb,gBAAgBA;AAAA,MAClB,CAAC;AAAA,IACH;AACA,QAAI,iBAAiB;AACnB,iBAAW,IAAI;AAAA,QACb,oBAAoB;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;;;ACrFA;AAAA;AAAA;AAAA;AAEA,MAAO,+CAAP,cAA6B,sBAAsB;AAAA,IASjD,aAAa;AACX,YAAM,WAAW;AAAA,IAEnB;AAAA;AAAA,IAGA,IAAI,eAAe;AACjB,YAAM,YAAY,KAAK,QAAQ,cAAc,gCAAgC;AAC7E,UAAI,CAAC;AAAW,eAAO,KAAK,YAAY;AAExC,YAAM,iBAAiB,SAAS,UAAU,MAAM,KAAK,KAAK;AAC1D,aAAO,kBAAkB,MAAM,KAAK,YAAY,kBAAkB,KAAK,YAAY;AAAA,IACrF;AAAA,IAEA,IAAI,sBAAsB;AACxB,YAAM,YAAY,KAAK,QAAQ,cAAc,gCAAgC;AAC7E,UAAI,CAAC;AAAW,eAAO;AAGvB,YAAM,iBAAiB,WAAW,UAAU,MAAM,KAAK,KAAK,UAAU;AACtE,YAAM,WAAW,WAAW,UAAU,QAAQ,KAAK;AAGnD,aAAO,WAAW;AAAA,IACpB;AAAA,IAEA,IAAI,iBAAiB;AAEnB,aAAO,KAAK,eAAe,KAAK;AAAA,IAClC;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAEd,UAAI;AACF,aAAK,kBAAkB;AACvB,aAAK,aAAa;AAClB,aAAK,aAAa;AAClB,aAAK,gBAAgB,EAAE,GAAG,GAAG,GAAG,EAAE;AAClC,aAAK,uBAAuB,EAAE,GAAG,GAAG,GAAG,EAAE;AACzC,aAAK,mBAAmB,EAAE,OAAO,GAAG,QAAQ,EAAE;AAC9C,aAAK,kBAAkB;AAGvB,YAAI,OAAO,OAAO,SAAS,aAAa;AACtC,iBAAO,OAAO,EAAE,GAAG,CAACC,SAAQA,KAAI;AAAA,QAClC;AAEA,aAAK,oBAAoB;AACzB,aAAK,4BAA4B;AACjC,aAAK,qBAAqB;AAC1B,aAAK,kBAAkB;AAAA,MAEzB,SAASC,QAAP;AACA,gBAAQ,MAAM,iDAAiDA,MAAK;AAAA,MACtE;AAAA,IACF;AAAA,IAEA,aAAa;AACX,WAAK,wBAAwB;AAC7B,YAAM,WAAW;AAAA,IACnB;AAAA,IAIA,sBAAsB;AACpB,YAAM,YAAY,KAAK,QAAQ,cAAc,gCAAgC;AAC7E,UAAI,WAAW;AACb,cAAMC,SAAQ,KAAK;AACnB,kBAAU,MAAM,YAAY,SAASA;AACrC,kBAAU,MAAM,kBAAkB;AAElC,cAAM,eAAe,UAAU,eAAeA;AAC9C,kBAAU,MAAM,eAAe,GAAG,eAAe,UAAU,eAAe;AAAA,MAC5E;AAAA,IACF;AAAA,IAEA,8BAA8B;AAC5B,WAAK,wBAAwB,QAAQ,CAAC,SAASC,WAAU;AACvD,aAAK,qBAAqB,OAAO;AACjC,aAAK,qBAAqB,OAAO;AACjC,aAAK,sBAAsB,OAAO;AAGlC,aAAK,yBAAyB,OAAO;AAAA,MACvC,CAAC;AAAA,IACH;AAAA,IAEA,yBAAyB,SAAS;AAChC,YAAMC,KAAI,WAAW,QAAQ,QAAQ,KAAK,CAAC;AAC3C,YAAMC,KAAI,WAAW,QAAQ,QAAQ,KAAK,CAAC;AAC3C,YAAMC,SAAQ,WAAW,QAAQ,QAAQ,SAAS,EAAE;AACpD,YAAMC,UAAS,WAAW,QAAQ,QAAQ,UAAU,EAAE;AAEtD,cAAQ,MAAM,WAAW;AACzB,cAAQ,MAAM,OAAO,GAAGH;AACxB,cAAQ,MAAM,MAAM,GAAGC;AACvB,cAAQ,MAAM,QAAQ,GAAGC;AACzB,cAAQ,MAAM,SAAS,GAAGC;AAG1B,cAAQ,QAAQ,IAAIH;AACpB,cAAQ,QAAQ,IAAIC;AACpB,cAAQ,QAAQ,QAAQC;AACxB,cAAQ,QAAQ,SAASC;AAGzB,YAAM,YAAY,QAAQ,QAAQ;AAClC,UAAI,cAAc,eAAe;AAC/B,cAAM,aAAa,QAAQ,QAAQ,cAAc;AACjD,cAAM,WAAW,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AACzD,cAAMC,SAAQ,QAAQ,QAAQ,SAAS;AACvC,cAAM,YAAY,QAAQ,QAAQ,aAAa;AAC/C,cAAM,gBAAgB,QAAQ,QAAQ,iBAAiB;AACvD,cAAM,aAAa,QAAQ,QAAQ,cAAc;AAGjD,gBAAQ,QAAQ,aAAa;AAC7B,gBAAQ,QAAQ,WAAW;AAC3B,gBAAQ,QAAQ,QAAQA;AACxB,gBAAQ,QAAQ,YAAY;AAC5B,gBAAQ,QAAQ,gBAAgB;AAChC,gBAAQ,QAAQ,aAAa;AAG7B,YAAI,cAAc,oBAAoB;AACpC,gBAAM,iBAAiB,QAAQ,cAAc,kBAAkB;AAC/D,cAAI,gBAAgB;AAElB,2BAAe,MAAM,YAAY,WAAW,QAAQ,WAAW;AAC/D,2BAAe,MAAM,YAAY,kBAAkB,UAAU,WAAW;AACxE,2BAAe,MAAM,YAAY,UAAU,QAAQ,WAAW;AAC9D,2BAAe,MAAM,YAAY,mBAAmB,cAAc,WAAW;AAG7E,kBAAM,eAAe,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AAC7D,kBAAM,iBAAiB,WAAW,QAAQ,QAAQ,cAAc,KAAK;AACrE,kBAAM,oBAAoB,KAAK,MAAM,eAAe,iBAAiB,GAAG;AAGxE,kBAAM,eAAe,eAAe,iBAAiB,0CAA0C;AAC/F,yBAAa,QAAQ,YAAU;AAC7B,qBAAO,MAAM,YAAY,aAAa,GAAG,eAAe,KAAK,oBAAoB,WAAW;AAAA,YAC9F,CAAC;AAGD,kBAAM,mBAAmB,eAAe,cAAc,iBAAiB;AACvE,gBAAI,kBAAkB;AACpB,+BAAiB,MAAM,YAAY,aAAa,GAAG,oBAAoB,KAAK,oBAAoB,WAAW;AAC3G,+BAAiB,MAAM,YAAY,eAAe,QAAQ,WAAW;AAAA,YACvE;AAAA,UACF;AAAA,QACF,WAES,CAAC,eAAe,sBAAsB,kBAAkB,EAAE,SAAS,SAAS,GAAG;AAEtF,gBAAM,iBAAiB,QAAQ,QAAQ,kBAAkB;AACzD,gBAAM,eAAe,WAAW,QAAQ,QAAQ,YAAY,KAAK;AACjE,gBAAM,YAAY,QAAQ,QAAQ,aAAaA;AAG/C,gBAAM,kBAAkB,QAAQ,cAAc,6BAA6B;AAC3E,cAAI,iBAAiB;AAEnB,kBAAM,eAAe,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AAC7D,kBAAM,YAAY,WAAW,QAAQ,QAAQ,SAAS,KAAK;AAC3D,kBAAM,qBAAqB,KAAK,MAAM,eAAe,YAAY,GAAG;AAEpE,4BAAgB,MAAM,YAAY,eAAe,IAAI,+BAA+B,WAAW;AAC/F,4BAAgB,MAAM,YAAY,aAAa,GAAG,qBAAqB,KAAK,oBAAoB,WAAW;AAC3G,4BAAgB,MAAM,YAAY,SAAS,WAAW,WAAW;AACjE,4BAAgB,MAAM,YAAY,eAAe,YAAY,WAAW;AACxE,4BAAgB,MAAM,YAAY,cAAc,eAAe,WAAW;AAC1E,4BAAgB,MAAM,YAAY,WAAW,KAAK,WAAW;AAAA,UAC/D;AAGA,gBAAM,iBAAiB,QAAQ,cAAc,4BAA4B;AACzE,cAAI,gBAAgB;AAElB,kBAAM,eAAe,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AAC7D,kBAAM,YAAY,WAAW,QAAQ,QAAQ,SAAS,KAAK;AAC3D,kBAAM,WAAW,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AACzD,kBAAM,cAAc,KAAK,MAAM,eAAe,WAAW,GAAG;AAE5D,2BAAe,MAAM,YAAY,eAAe,2BAA2B,WAAW;AACtF,2BAAe,MAAM,YAAY,aAAa,GAAG,cAAc,KAAK,oBAAoB,WAAW;AACnG,2BAAe,MAAM,YAAY,SAAS,QAAQ,WAAW;AAC7D,2BAAe,MAAM,YAAY,eAAe,UAAU,WAAW;AAAA,UACvE;AAGA,gBAAM,iBAAiB,QAAQ,cAAc,kBAAkB;AAC/D,cAAI,gBAAgB;AAElB,2BAAe,MAAM,YAAY,WAAW,QAAQ,WAAW;AAC/D,2BAAe,MAAM,YAAY,kBAAkB,UAAU,WAAW;AACxE,2BAAe,MAAM,YAAY,UAAU,QAAQ,WAAW;AAG9D,oBAAQ,eAAe;AAAA,cACrB,KAAK;AACH,+BAAe,MAAM,YAAY,mBAAmB,UAAU,WAAW;AACzE;AAAA,cACF,KAAK;AACH,+BAAe,MAAM,YAAY,mBAAmB,cAAc,WAAW;AAC7E;AAAA,cACF,KAAK;AACH,+BAAe,MAAM,YAAY,mBAAmB,YAAY,WAAW;AAC3E;AAAA,cACF;AACE,+BAAe,MAAM,YAAY,mBAAmB,YAAY,WAAW;AAAA,YAC/E;AAGA,oBAAQ,WAAW;AAAA,cACjB,KAAK;AACH,+BAAe,MAAM,YAAY,eAAe,UAAU,WAAW;AACrE;AAAA,cACF,KAAK;AACH,+BAAe,MAAM,YAAY,eAAe,YAAY,WAAW;AACvE;AAAA,cACF;AACE,+BAAe,MAAM,YAAY,eAAe,cAAc,WAAW;AAAA,YAC7E;AAGA,kBAAM,cAAc,eAAe,cAAc,eAAe;AAChE,gBAAI,aAAa;AACf,kBAAI;AAIJ,sBAAQ,eAAe;AAAA,gBACrB,KAAK;AAEH,iCAAe;AACf;AAAA,gBACF,KAAK;AAEH,iCAAe;AACf;AAAA,gBACF;AAEE,iCAAe;AACf;AAAA,cACJ;AAEA,0BAAY,MAAM,YAAY,UAAU,cAAc,WAAW;AAAA,YACnE;AAAA,UACF;AAAA,QACF,OAAO;AAEL,gBAAM,iBAAiB,QAAQ,cAAc,kBAAkB;AAC/D,cAAI,gBAAgB;AAElB,2BAAe,MAAM,YAAY,SAAS,QAAQ,WAAW;AAC7D,2BAAe,MAAM,YAAY,UAAU,QAAQ,WAAW;AAC9D,2BAAe,MAAM,YAAY,YAAY,UAAU,WAAW;AAClE,2BAAe,MAAM,YAAY,WAAW,KAAK,WAAW;AAC5D,2BAAe,MAAM,YAAY,cAAc,cAAc,WAAW;AACxE,2BAAe,MAAM,YAAY,YAAY,YAAY,WAAW;AAGtE,2BAAe,MAAM,YAAY,eAAe,IAAI,2BAA2B,WAAW;AAC1F,2BAAe,MAAM,YAAY,aAAa,GAAG,WAAW,KAAK,oBAAoB,WAAW;AAC9F,2BAAe,MAAM,YAAY,SAASA,QAAO,WAAW;AAC5D,2BAAe,MAAM,YAAY,eAAe,YAAY,WAAW;AACvE,2BAAe,MAAM,YAAY,cAAc,WAAW,WAAW;AAGrE,2BAAe,MAAM,YAAY,WAAW,QAAQ,WAAW;AAC/D,2BAAe,MAAM,YAAY,kBAAkB,UAAU,WAAW;AAExE,oBAAQ,eAAe;AAAA,cACrB,KAAK;AACH,+BAAe,MAAM,YAAY,mBAAmB,UAAU,WAAW;AACzE;AAAA,cACF,KAAK;AACH,+BAAe,MAAM,YAAY,mBAAmB,YAAY,WAAW;AAC3E;AAAA,cACF;AACE,+BAAe,MAAM,YAAY,mBAAmB,cAAc,WAAW;AAAA,YACjF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,uBAAuB;AAErB,YAAM,YAAY,KAAK,QAAQ,cAAc,gCAAgC;AAC7E,UAAI,WAAW;AACb,kBAAU,iBAAiB,SAAS,CAACC,OAAM;AACzC,cAAIA,GAAE,WAAW,aAAaA,GAAE,OAAO,UAAU,SAAS,sBAAsB,GAAG;AACjF,iBAAK,YAAY;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,cAAc;AACZ,WAAK,wBAAwB,QAAQ,QAAM;AACzC,WAAG,UAAU,OAAO,UAAU;AAAA,MAChC,CAAC;AACD,WAAK,kBAAkB;AACvB,WAAK,2BAA2B,MAAM,UAAU;AAGhD,UAAI,KAAK,qBAAqB;AAC5B,aAAK,iBAAiB,MAAM,UAAU;AAAA,MACxC;AAAA,IACF;AAAA,IAEA,qBAAqB,SAAS;AAC5B,cAAQ,iBAAiB,aAAa,CAACA,OAAM;AAC3C,YAAIA,GAAE,OAAO,UAAU,SAAS,eAAe;AAAG;AAClD,YAAIA,GAAE,OAAO,UAAU,SAAS,oBAAoB;AAAG;AACvD,YAAIA,GAAE,OAAO,aAAa,aAAa;AAAG;AAE1C,aAAK,cAAc,OAAO;AAC1B,aAAK,cAAcA,IAAG,OAAO;AAC7B,QAAAA,GAAE,eAAe;AAAA,MACnB,CAAC;AAGD,cAAQ,iBAAiB,eAAe,CAACA,OAAM;AAC7C,QAAAA,GAAE,eAAe;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,qBAAqB,SAAS;AAC5B,YAAM,gBAAgB,QAAQ,iBAAiB,gBAAgB;AAC/D,oBAAc,QAAQ,YAAU;AAC9B,eAAO,iBAAiB,aAAa,CAACA,OAAM;AAC1C,UAAAA,GAAE,gBAAgB;AAClB,eAAK,cAAcA,IAAG,SAAS,OAAO,UAAU,CAAC,CAAC;AAClD,UAAAA,GAAE,eAAe;AAAA,QACnB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IAEA,sBAAsB,SAAS;AAC7B,cAAQ,iBAAiB,SAAS,CAACA,OAAM;AACvC,YAAIA,GAAE,OAAO,UAAU,SAAS,oBAAoB;AAAG;AACvD,YAAIA,GAAE,OAAO,aAAa,aAAa;AAAG;AAE1C,QAAAA,GAAE,gBAAgB;AAClB,aAAK,cAAc,OAAO;AAAA,MAC5B,CAAC;AAGD,cAAQ,MAAM,SAAS;AAAA,IACzB;AAAA,IAEA,cAAc,SAAS;AAErB,UAAI,KAAK,mBAAmB,KAAK,oBAAoB,SAAS;AAC5D,aAAK,wBAAwB;AAAA,MAC/B;AAGA,WAAK,wBAAwB,QAAQ,QAAM;AACzC,WAAG,UAAU,OAAO,UAAU;AAAA,MAChC,CAAC;AAGD,cAAQ,UAAU,IAAI,UAAU;AAChC,WAAK,kBAAkB;AAGvB,WAAK,sBAAsB,OAAO;AAAA,IACpC;AAAA,IAEA,sBAAsB,SAAS;AAC7B,YAAM,YAAY,QAAQ,QAAQ;AAClC,YAAML,KAAI,WAAW,QAAQ,QAAQ,CAAC;AACtC,YAAMC,KAAI,WAAW,QAAQ,QAAQ,CAAC;AACtC,YAAMC,SAAQ,WAAW,QAAQ,QAAQ,KAAK;AAC9C,YAAMC,UAAS,WAAW,QAAQ,QAAQ,MAAM;AAChD,YAAM,aAAa,QAAQ,QAAQ,cAAc;AACjD,YAAM,WAAW,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AACzD,YAAMC,SAAQ,QAAQ,QAAQ,SAAS;AACvC,YAAM,YAAY,QAAQ,QAAQ,aAAa;AAC/C,YAAM,gBAAgB,QAAQ,QAAQ,iBAAiB;AACvD,YAAM,aAAa,QAAQ,QAAQ,cAAc;AACjD,YAAM,UAAU,QAAQ,QAAQ,WAAW;AAE3C,YAAM,cAAc,KAAK,sBAAsB,SAAS;AAExD,WAAK,0BAA0B,QAAQ;AACvC,WAAK,aAAa,QAAQJ,GAAE,QAAQ,CAAC;AACrC,WAAK,aAAa,QAAQC,GAAE,QAAQ,CAAC;AACrC,WAAK,iBAAiB,QAAQC,OAAM,QAAQ,CAAC;AAC7C,WAAK,kBAAkB,QAAQC,QAAO,QAAQ,CAAC;AAG/C,YAAM,gBAAgB,cAAc;AACpC,WAAK,sBAAsB,MAAM,UAAU,gBAAgB,UAAU;AAGrE,YAAM,gBAAgB,UAAU,MAAM,qBAAqB;AAC3D,UAAI,KAAK,yBAAyB;AAChC,aAAK,qBAAqB,MAAM,UAAU,gBAAgB,UAAU;AAAA,MACtE;AAGA,YAAM,qBAAqB,UAAU,MAAM,sBAAsB;AACjE,UAAI,KAAK,8BAA8B;AACrC,aAAK,0BAA0B,MAAM,UAAU,qBAAqB,UAAU;AAAA,MAChF;AAGA,YAAM,2BAA2B,cAAc;AAC/C,UAAI,KAAK,oCAAoC;AAC3C,aAAK,gCAAgC,MAAM,UAAU,2BAA2B,UAAU;AAAA,MAC5F;AAGA,YAAM,2BAA2B,cAAc;AAC/C,UAAI,KAAK,iCAAiC;AACxC,aAAK,6BAA6B,MAAM,UAAU,2BAA2B,UAAU;AAAA,MACzF;AAGA,YAAM,qBAAqB,CAAC,eAAe,sBAAsB,kBAAkB,EAAE,SAAS,SAAS;AACvG,UAAI,KAAK,2BAA2B;AAClC,aAAK,uBAAuB,MAAM,UAAU,qBAAqB,UAAU;AAAA,MAC7E;AAEA,UAAI,eAAe;AACjB,aAAK,sBAAsB,QAAQ;AACnC,aAAK,oBAAoB,QAAQ;AACjC,aAAK,iBAAiB,QAAQC;AAC9B,aAAK,qBAAqB,QAAQ;AAClC,aAAK,yBAAyB,QAAQ;AACtC,aAAK,sBAAsB,QAAQ;AAGnC,YAAI,4BAA4B,KAAK,8BAA8B;AACjE,gBAAM,iBAAiB,WAAW,QAAQ,QAAQ,cAAc,KAAK;AACrE,eAAK,0BAA0B,QAAQ;AACvC,eAAK,2BAA2B,UAAU,cAAc;AAAA,QAC1D;AAEA,YAAI,oBAAoB;AACtB,cAAI,KAAK,yBAAyB;AAChC,kBAAM,YAAY,WAAW,QAAQ,QAAQ,SAAS,KAAK;AAC3D,iBAAK,qBAAqB,QAAQ;AAClC,iBAAK,sBAAsB,UAAU,SAAS;AAAA,UAChD;AACA,cAAI,KAAK,wBAAwB;AAC/B,kBAAM,WAAW,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AACzD,iBAAK,oBAAoB,QAAQ;AACjC,iBAAK,qBAAqB,UAAU,QAAQ;AAAA,UAC9C;AACA,cAAI,KAAK,2BAA2B;AAClC,iBAAK,uBAAuB,UAAU,QAAQ,QAAQ,gBAAgB;AAAA,UACxE;AAAA,QACF;AAAA,MACF;AAGA,UAAI,iBAAiB,KAAK,uBAAuB;AAC/C,aAAK,mBAAmB,QAAQ;AAAA,MAClC;AAGA,UAAI,sBAAsB,KAAK,yBAAyB;AACtD,cAAM,YAAY,QAAQ,QAAQ,aAAa;AAC/C,aAAK,qBAAqB,QAAQ;AAAA,MACpC;AAGA,UAAI,4BAA4B,KAAK,wCAAwC;AAC3E,aAAK,oCAAoC,UAAU,QAAQ,QAAQ,cAAc;AAAA,MACnF;AAEA,WAAK,2BAA2B,MAAM,UAAU;AAGhD,UAAI,KAAK,qBAAqB;AAC5B,aAAK,iBAAiB,MAAM,UAAU;AAAA,MACxC;AAGA,iBAAW,MAAM;AACf,aAAK,6BAA6B;AAAA,MACpC,GAAG,EAAE;AAAA,IACP;AAAA,IAEA,+BAA+B;AAC7B,YAAM,kBAAkB,KAAK;AAC7B,UAAI,CAAC;AAAiB;AAGtB,YAAM,sBAAsB,gBAAgB,QAAQ,uBAAuB;AAC3E,UAAI,uBAAuB,oBAAoB,QAAQ,aAAa,QAAQ;AAC1E;AAAA,MACF;AAEA,YAAM,OAAO,gBAAgB,sBAAsB;AACnD,YAAM,iBAAiB,OAAO;AAC9B,YAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,QAAQ,cAAc,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC;AAC/F,YAAM,cAAc,KAAK;AACzB,YAAM,kBAAkB,gBAAgB;AAGxC,UAAI,kBAAkB,KAAK;AACzB,aAAK,uBAAuB;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,yBAAyB;AAEvB,WAAK,wBAAwB;AAE7B,YAAM,sBAAsB,KAAK,iBAAiB,QAAQ,uBAAuB;AACjF,YAAM,gBAAgB,KAAK,QAAQ,cAAc,WAAW;AAE5D,UAAI,CAAC,uBAAuB,CAAC,eAAe;AAC1C;AAAA,MACF;AAGA,UAAI,cAAc,MAAM,aAAa,YAAY;AAC/C,sBAAc,MAAM,WAAW;AAAA,MACjC;AAGA,YAAM,cAAc,oBAAoB,sBAAsB;AAC9D,YAAM,eAAe,YAAY;AACjC,YAAM,iBAAiB,OAAO;AAE9B,YAAM,aAAa,KAAK,QAAQ,cAAc,WAAW;AACzD,YAAM,cAAc,aAAa,WAAW,sBAAsB,IAAI;AAGtE,YAAM,sBAAsB,KAAK,IAAI,IAAI,iBAAiB,GAAG;AAC7D,YAAM,wBAAwB;AAG9B,WAAK,2BAA2B;AAAA,QAC9B,UAAU,oBAAoB,MAAM;AAAA,QACpC,KAAK,oBAAoB,MAAM;AAAA,QAC/B,OAAO,oBAAoB,MAAM;AAAA,QACjC,MAAM,oBAAoB,MAAM;AAAA,QAChC,OAAO,oBAAoB,MAAM;AAAA,QACjC,QAAQ,oBAAoB,MAAM;AAAA,QAClC,WAAW,oBAAoB,MAAM;AAAA,QACrC,WAAW,oBAAoB,MAAM;AAAA,QACrC,YAAY,oBAAoB,MAAM;AAAA,QACtC,WAAW,oBAAoB,MAAM;AAAA,QACrC,iBAAiB,oBAAoB,MAAM;AAAA,QAC3C,QAAQ,oBAAoB,MAAM;AAAA,QAClC,cAAc,oBAAoB,MAAM;AAAA,MAC1C;AAGA,0BAAoB,MAAM,YAAY,YAAY,SAAS,WAAW;AACtE,0BAAoB,MAAM,YAAY,OAAO,GAAG,yBAAyB,WAAW;AACpF,0BAAoB,MAAM,YAAY,SAAS,GAAG,2BAA2B,WAAW;AACxF,0BAAoB,MAAM,YAAY,QAAQ,QAAQ,WAAW;AACjE,0BAAoB,MAAM,YAAY,SAAS,GAAG,KAAK,IAAI,cAAc,GAAG,OAAO,WAAW;AAC9F,0BAAoB,MAAM,YAAY,WAAW,QAAQ,WAAW;AACpE,0BAAoB,MAAM,YAAY,cAAc,GAAG,iBAAiB,sBAAsB,QAAQ,WAAW;AACjH,0BAAoB,MAAM,YAAY,cAAc,QAAQ,WAAW;AACvE,0BAAoB,MAAM,YAAY,cAAc,iBAAiB,WAAW;AAChF,0BAAoB,MAAM,YAAY,cAAc,+BAA+B,WAAW;AAC9F,0BAAoB,MAAM,YAAY,oBAAoB,WAAW,WAAW;AAChF,0BAAoB,MAAM,YAAY,UAAU,qBAAqB,WAAW;AAChF,0BAAoB,MAAM,YAAY,iBAAiB,OAAO,WAAW;AAGzE,0BAAoB,QAAQ,WAAW;AAGvC,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,oBAAoB;AAElB,WAAK,iBAAiB,OAAO;AAG7B,WAAK,gBAAgB,MAAM;AACzB,cAAM,cAAc,KAAK,IAAI,OAAO,UAAU,KAAK,cAAc;AACjE,YAAI,cAAc,KAAK;AACrB,eAAK,wBAAwB;AAAA,QAC/B;AAAA,MACF;AACA,aAAO,iBAAiB,UAAU,KAAK,eAAe,EAAE,SAAS,KAAK,CAAC;AAGvE,WAAK,gBAAgB,CAACC,OAAM;AAC1B,YAAIA,GAAE,QAAQ,UAAU;AACtB,eAAK,wBAAwB;AAAA,QAC/B;AAAA,MACF;AACA,eAAS,iBAAiB,WAAW,KAAK,aAAa;AAGvD,WAAK,sBAAsB,CAACA,OAAM;AAChC,cAAM,sBAAsB,KAAK,kBAAkB,QAAQ,uBAAuB;AAClF,YAAI,uBAAuB,oBAAoB,QAAQ,aAAa,QAAQ;AAE1E,cAAI,CAAC,oBAAoB,SAASA,GAAE,MAAM,GAAG;AAC3C,iBAAK,wBAAwB;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AACA,eAAS,iBAAiB,SAAS,KAAK,mBAAmB;AAAA,IAC7D;AAAA,IAEA,0BAA0B;AACxB,YAAM,sBAAsB,KAAK,kBAAkB,QAAQ,uBAAuB;AAClF,UAAI,CAAC,uBAAuB,oBAAoB,QAAQ,aAAa;AAAQ;AAG7E,aAAO,oBAAoB,QAAQ;AAGnC,UAAI,KAAK,0BAA0B;AACjC,eAAO,KAAK,KAAK,wBAAwB,EAAE,QAAQ,CAAAT,SAAO;AACxD,8BAAoB,MAAMA,IAAG,IAAI,KAAK,yBAAyBA,IAAG;AAAA,QACpE,CAAC;AACD,aAAK,2BAA2B;AAAA,MAClC;AAGA,UAAI,KAAK,eAAe;AACtB,eAAO,oBAAoB,UAAU,KAAK,aAAa;AACvD,aAAK,gBAAgB;AAAA,MACvB;AAEA,UAAI,KAAK,eAAe;AACtB,iBAAS,oBAAoB,WAAW,KAAK,aAAa;AAC1D,aAAK,gBAAgB;AAAA,MACvB;AAEA,UAAI,KAAK,qBAAqB;AAC5B,iBAAS,oBAAoB,SAAS,KAAK,mBAAmB;AAC9D,aAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,sBAAsB,WAAW;AAC/B,YAAM,gBAAgB,UAAU,MAAM,IAAI,EAAE,CAAC;AAI7C,UAAI,OAAO,QAAQ,OAAO,KAAK,GAAG;AAChC,cAAM,iBAAiB,mCAAmC;AAC1D,cAAM,cAAc,OAAO,KAAK,EAAE,cAAc;AAEhD,YAAI,eAAe,gBAAgB,gBAAgB;AACjD,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,YAAMU,SAAQ;AAAA,QACZ,qBAAqB;AAAA,QACrB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,QACpB,iBAAiB;AAAA,QACjB,sBAAsB;AAAA,QACtB,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,eAAe;AAAA,QACf,eAAe;AAAA,QACf,eAAe;AAAA,QACf,aAAa;AAAA,MACf;AAEA,aAAOA,OAAM,aAAa,KAAK,cAAc,QAAQ,MAAM,GAAG,EAAE,QAAQ,SAAS,CAAAC,OAAKA,GAAE,YAAY,CAAC;AAAA,IACvG;AAAA,IAEA,cAAcF,IAAG,SAAS;AACxB,WAAK,aAAa;AAClB,WAAK,gBAAgB,EAAE,GAAGA,GAAE,SAAS,GAAGA,GAAE,QAAQ;AAClD,WAAK,uBAAuB;AAAA,QAC1B,GAAG,WAAW,QAAQ,QAAQ,CAAC;AAAA,QAC/B,GAAG,WAAW,QAAQ,QAAQ,CAAC;AAAA,MACjC;AAGA,cAAQ,UAAU,IAAI,UAAU;AAChC,eAAS,KAAK,MAAM,SAAS;AAC7B,eAAS,KAAK,MAAM,aAAa;AAGjC,WAAK,sBAAsB,KAAK,eAAe,KAAK,IAAI;AACxD,WAAK,oBAAoB,KAAK,aAAa,KAAK,IAAI;AAEpD,eAAS,iBAAiB,aAAa,KAAK,mBAAmB;AAC/D,eAAS,iBAAiB,WAAW,KAAK,iBAAiB;AAE3D,MAAAA,GAAE,eAAe;AAAA,IACnB;AAAA,IAEA,eAAeA,IAAG;AAChB,UAAI,CAAC,KAAK,cAAc,CAAC,KAAK;AAAiB;AAE/C,YAAM,YAAY,KAAK,gBAAgB,QAAQ,gCAAgC;AAC/E,YAAM,gBAAgB,UAAU,sBAAsB;AAGtD,YAAMP,SAAQ,KAAK;AACnB,YAAM,cAAc,cAAc,QAAQA;AAC1C,YAAM,eAAe,cAAc,SAASA;AAE5C,YAAM,UAAWO,GAAE,UAAU,KAAK,cAAc,KAAK,cAAe;AACpE,YAAM,UAAWA,GAAE,UAAU,KAAK,cAAc,KAAK,eAAgB;AAErE,YAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,qBAAqB,IAAI,MAAM,CAAC;AAC3E,YAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,qBAAqB,IAAI,MAAM,CAAC;AAE3E,WAAK,sBAAsB,KAAK,iBAAiB,MAAM,IAAI;AAAA,IAC7D;AAAA,IAEA,eAAe;AACb,WAAK,aAAa;AAGlB,UAAI,KAAK,iBAAiB;AACxB,aAAK,gBAAgB,UAAU,OAAO,UAAU;AAChD,aAAK,gBAAgB,MAAM,SAAS;AAAA,MACtC;AAEA,eAAS,KAAK,MAAM,SAAS;AAC7B,eAAS,KAAK,MAAM,aAAa;AAGjC,eAAS,oBAAoB,aAAa,KAAK,mBAAmB;AAClE,eAAS,oBAAoB,WAAW,KAAK,iBAAiB;AAAA,IAChE;AAAA,IAEA,cAAcA,IAAG,SAAS,WAAW;AACnC,WAAK,aAAa;AAClB,WAAK,kBAAkB;AACvB,WAAK,gBAAgB,EAAE,GAAGA,GAAE,SAAS,GAAGA,GAAE,QAAQ;AAClD,WAAK,uBAAuB;AAAA,QAC1B,GAAG,WAAW,QAAQ,QAAQ,CAAC;AAAA,QAC/B,GAAG,WAAW,QAAQ,QAAQ,CAAC;AAAA,MACjC;AACA,WAAK,mBAAmB;AAAA,QACtB,OAAO,WAAW,QAAQ,QAAQ,KAAK;AAAA,QACvC,QAAQ,WAAW,QAAQ,QAAQ,MAAM;AAAA,MAC3C;AAEA,eAAS,iBAAiB,aAAa,KAAK,iBAAiB,KAAK,IAAI,CAAC;AACvE,eAAS,iBAAiB,WAAW,KAAK,aAAa,KAAK,IAAI,CAAC;AAEjE,MAAAA,GAAE,eAAe;AAAA,IACnB;AAAA,IAEA,iBAAiBA,IAAG;AAClB,UAAI,CAAC,KAAK,cAAc,CAAC,KAAK;AAAiB;AAE/C,YAAM,YAAY,KAAK,gBAAgB,QAAQ,gCAAgC;AAC/E,YAAM,gBAAgB,UAAU,sBAAsB;AAGtD,YAAMP,SAAQ,KAAK;AACnB,YAAM,cAAc,cAAc,QAAQA;AAC1C,YAAM,eAAe,cAAc,SAASA;AAE5C,YAAM,UAAWO,GAAE,UAAU,KAAK,cAAc,KAAK,cAAe;AACpE,YAAM,UAAWA,GAAE,UAAU,KAAK,cAAc,KAAK,eAAgB;AAErE,WAAK,kBAAkB,QAAQ,MAAM;AAAA,IACvC;AAAA,IAEA,kBAAkB,QAAQ,QAAQ;AAChC,YAAM,YAAY,KAAK;AACvB,UAAI,OAAO,KAAK,qBAAqB;AACrC,UAAI,OAAO,KAAK,qBAAqB;AACrC,UAAI,WAAW,KAAK,iBAAiB;AACrC,UAAI,YAAY,KAAK,iBAAiB;AAGtC,UAAI,UAAU,SAAS,GAAG,GAAG;AAC3B,mBAAW,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,MAAM,KAAK,iBAAiB,QAAQ,MAAM,CAAC;AAAA,MACnF,WAAW,UAAU,SAAS,GAAG,GAAG;AAClC,cAAM,YAAY,KAAK,qBAAqB;AAC5C,cAAM,kBAAkB,KAAK,IAAI,CAAC,WAAW,KAAK,IAAI,KAAK,iBAAiB,QAAQ,GAAG,MAAM,CAAC;AAC9F,eAAO,KAAK,qBAAqB,IAAI;AACrC,mBAAW,KAAK,iBAAiB,QAAQ;AAAA,MAC3C;AAGA,UAAI,UAAU,SAAS,GAAG,GAAG;AAC3B,oBAAY,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,MAAM,KAAK,iBAAiB,SAAS,MAAM,CAAC;AAAA,MACrF,WAAW,UAAU,SAAS,GAAG,GAAG;AAClC,cAAM,YAAY,KAAK,qBAAqB;AAC5C,cAAM,kBAAkB,KAAK,IAAI,CAAC,WAAW,KAAK,IAAI,KAAK,iBAAiB,SAAS,GAAG,MAAM,CAAC;AAC/F,eAAO,KAAK,qBAAqB,IAAI;AACrC,oBAAY,KAAK,iBAAiB,SAAS;AAAA,MAC7C;AAEA,WAAK,oBAAoB,KAAK,iBAAiB,MAAM,MAAM,UAAU,SAAS;AAAA,IAChF;AAAA,IAEA,eAAe;AACb,WAAK,aAAa;AAClB,WAAK,kBAAkB;AAEvB,eAAS,oBAAoB,aAAa,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAC1E,eAAS,oBAAoB,WAAW,KAAK,aAAa,KAAK,IAAI,CAAC;AAAA,IACtE;AAAA,IAEA,sBAAsB,SAASL,IAAGC,IAAG;AACnC,YAAMC,SAAQ,WAAW,QAAQ,QAAQ,KAAK;AAC9C,YAAMC,UAAS,WAAW,QAAQ,QAAQ,MAAM;AAChD,WAAK,oBAAoB,SAASH,IAAGC,IAAGC,QAAOC,OAAM;AAAA,IACvD;AAAA,IAEA,oBAAoB,SAASH,IAAGC,IAAGC,QAAOC,SAAQ,uBAAuB,OAAO;AAC9E,cAAQ,QAAQ,IAAIH;AACpB,cAAQ,QAAQ,IAAIC;AACpB,cAAQ,QAAQ,QAAQC;AACxB,cAAQ,QAAQ,SAASC;AAEzB,cAAQ,MAAM,OAAO,GAAGH;AACxB,cAAQ,MAAM,MAAM,GAAGC;AACvB,cAAQ,MAAM,QAAQ,GAAGC;AACzB,cAAQ,MAAM,SAAS,GAAGC;AAG1B,UAAI,YAAY,KAAK,mBAAmB,CAAC,sBAAsB;AAC7D,aAAK,sBAAsB,OAAO;AAAA,MACpC;AAAA,IACF;AAAA,IAEA,yBAAyB;AACvB,UAAI,CAAC,KAAK;AAAiB;AAE3B,YAAMH,KAAI,WAAW,KAAK,aAAa,KAAK;AAC5C,YAAMC,KAAI,WAAW,KAAK,aAAa,KAAK;AAC5C,YAAMC,SAAQ,WAAW,KAAK,iBAAiB,KAAK;AACpD,YAAMC,UAAS,WAAW,KAAK,kBAAkB,KAAK;AAGtD,WAAK,oBAAoB,KAAK,iBAAiBH,IAAGC,IAAGC,QAAOC,SAAQ,IAAI;AAGxE,YAAM,YAAY,KAAK,gBAAgB,QAAQ;AAC/C,UAAI,cAAc,eAAe;AAC/B,aAAK,qBAAqB,KAAK,eAAe;AAAA,MAChD;AAGA,WAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,qBAAqB,SAAS;AAC5B,UAAI,CAAC,WAAW,QAAQ,QAAQ,cAAc;AAAe;AAE7D,YAAM,YAAY,QAAQ,QAAQ;AAClC,YAAM,aAAa,KAAK,sBAAsB;AAC9C,YAAM,WAAW,WAAW,KAAK,oBAAoB,KAAK;AAC1D,YAAMC,SAAQ,KAAK,iBAAiB;AACpC,YAAM,YAAY,KAAK,qBAAqB;AAC5C,YAAM,gBAAgB,KAAK,yBAAyB;AACpD,YAAM,aAAa,KAAK,sBAAsB;AAG9C,cAAQ,IAAI,wBAAwB,cAAc;AAAA,QAChD;AAAA,QAAY;AAAA,QAAU,OAAAA;AAAA,QAAO;AAAA,QAAW;AAAA,QAAe;AAAA,MACzD,CAAC;AAGD,cAAQ,QAAQ,aAAa;AAC7B,cAAQ,QAAQ,WAAW;AAC3B,cAAQ,QAAQ,QAAQA;AACxB,cAAQ,QAAQ,YAAY;AAC5B,cAAQ,QAAQ,gBAAgB;AAChC,cAAQ,QAAQ,aAAa;AAG7B,UAAI,cAAc,sBAAsB,KAAK,8BAA8B;AACzE,cAAM,iBAAiB,WAAW,KAAK,0BAA0B,KAAK,KAAK;AAC3E,gBAAQ,QAAQ,iBAAiB;AAAA,MACnC;AAEA,UAAI,CAAC,eAAe,sBAAsB,kBAAkB,EAAE,SAAS,SAAS,GAAG;AACjF,YAAI,KAAK,yBAAyB;AAChC,gBAAM,YAAY,WAAW,KAAK,qBAAqB,KAAK,KAAK;AACjE,kBAAQ,QAAQ,YAAY;AAAA,QAC9B;AACA,YAAI,KAAK,wBAAwB;AAC/B,gBAAM,WAAW,WAAW,KAAK,oBAAoB,KAAK,KAAK;AAC/D,kBAAQ,QAAQ,WAAW;AAAA,QAC7B;AAAA,MACF;AAGA,UAAI,cAAc,oBAAoB;AACpC,cAAM,iBAAiB,QAAQ,cAAc,kBAAkB;AAC/D,YAAI,gBAAgB;AAElB,yBAAe,MAAM,YAAY,WAAW,QAAQ,WAAW;AAC/D,yBAAe,MAAM,YAAY,kBAAkB,UAAU,WAAW;AACxE,yBAAe,MAAM,YAAY,UAAU,QAAQ,WAAW;AAC9D,yBAAe,MAAM,YAAY,mBAAmB,cAAc,WAAW;AAG7E,gBAAM,eAAe,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AAC7D,gBAAM,iBAAiB,WAAW,QAAQ,QAAQ,cAAc,KAAK;AACrE,gBAAM,oBAAoB,KAAK,MAAM,eAAe,iBAAiB,GAAG;AAGxE,gBAAM,kBAAkB,eAAe,iBAAiB,2DAA2D;AACnH,0BAAgB,QAAQ,YAAU;AAEhC,mBAAO,MAAM,YAAY,eAAe,IAAI,2BAA2B,WAAW;AAClF,mBAAO,MAAM,YAAY,SAASA,QAAO,WAAW;AAAA,UACtD,CAAC;AAGD,gBAAM,mBAAmB,eAAe,cAAc,iBAAiB;AACvE,cAAI,kBAAkB;AACpB,6BAAiB,MAAM,YAAY,aAAa,GAAG,oBAAoB,KAAK,oBAAoB,WAAW;AAC3G,6BAAiB,MAAM,YAAY,eAAe,QAAQ,WAAW;AAAA,UACvE;AAGA,gBAAM,eAAe,eAAe,iBAAiB,0CAA0C;AAC/F,uBAAa,QAAQ,YAAU;AAC7B,mBAAO,MAAM,YAAY,aAAa,GAAG,eAAe,KAAK,oBAAoB,WAAW;AAAA,UAC9F,CAAC;AAGD,gBAAM,gBAAgB,eAAe,cAAc,mBAAmB;AACtE,cAAI,eAAe;AACjB,0BAAc,MAAM,YAAY,eAAe,OAAO,WAAW;AAAA,UACnE;AAAA,QACF;AAAA,MACF,WAES,CAAC,eAAe,sBAAsB,kBAAkB,EAAE,SAAS,SAAS,GAAG;AAEtF,cAAM,eAAe,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AAC7D,cAAM,YAAY,WAAW,QAAQ,QAAQ,SAAS,KAAK;AAC3D,cAAM,WAAW,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AAEzD,cAAM,eAAe,KAAK,MAAM,eAAe,YAAY,GAAG;AAC9D,cAAM,cAAc,KAAK,MAAM,eAAe,WAAW,GAAG;AAG5D,cAAM,iBAAiB,QAAQ,QAAQ,kBAAkB;AACzD,cAAM,YAAY,QAAQ,QAAQ,aAAaA;AAG/C,cAAM,kBAAkB,QAAQ,cAAc,6BAA6B;AAC3E,YAAI,iBAAiB;AACnB,cAAI,cAAc,eAAe;AAC/B,4BAAgB,MAAM,YAAY,eAAe,IAAI,4BAA4B,WAAW;AAC5F,4BAAgB,MAAM,YAAY,SAAS,WAAW,WAAW;AAAA,UACnE,OAAO;AACL,4BAAgB,MAAM,YAAY,eAAe,IAAI,2BAA2B,WAAW;AAC3F,4BAAgB,MAAM,YAAY,SAASA,QAAO,WAAW;AAAA,UAC/D;AACA,0BAAgB,MAAM,YAAY,aAAa,GAAG,eAAe,KAAK,oBAAoB,WAAW;AACrG,0BAAgB,MAAM,YAAY,eAAe,YAAY,WAAW;AACxE,0BAAgB,MAAM,YAAY,cAAc,eAAe,WAAW;AAC1E,0BAAgB,MAAM,YAAY,WAAW,KAAK,WAAW;AAAA,QAC/D;AAGA,cAAM,iBAAiB,QAAQ,cAAc,4BAA4B;AACzE,YAAI,gBAAgB;AAClB,yBAAe,MAAM,YAAY,eAAe,2BAA2B,WAAW;AACtF,yBAAe,MAAM,YAAY,aAAa,GAAG,cAAc,KAAK,oBAAoB,WAAW;AACnG,yBAAe,MAAM,YAAY,SAAS,QAAQ,WAAW;AAC7D,yBAAe,MAAM,YAAY,eAAe,UAAU,WAAW;AAAA,QACvE;AAGA,cAAM,iBAAiB,QAAQ,cAAc,kBAAkB;AAC/D,YAAI,gBAAgB;AAElB,yBAAe,MAAM,YAAY,WAAW,QAAQ,WAAW;AAC/D,yBAAe,MAAM,YAAY,kBAAkB,UAAU,WAAW;AACxE,yBAAe,MAAM,YAAY,UAAU,QAAQ,WAAW;AAG9D,kBAAQ,eAAe;AAAA,YACrB,KAAK;AACH,6BAAe,MAAM,YAAY,mBAAmB,UAAU,WAAW;AACzE;AAAA,YACF,KAAK;AACH,6BAAe,MAAM,YAAY,mBAAmB,cAAc,WAAW;AAC7E;AAAA,YACF,KAAK;AACH,6BAAe,MAAM,YAAY,mBAAmB,YAAY,WAAW;AAC3E;AAAA,YACF;AACE,6BAAe,MAAM,YAAY,mBAAmB,YAAY,WAAW;AAAA,UAC/E;AAGE,kBAAQ,WAAW;AAAA,YACjB,KAAK;AACH,6BAAe,MAAM,YAAY,eAAe,UAAU,WAAW;AACrE;AAAA,YACF,KAAK;AACH,6BAAe,MAAM,YAAY,eAAe,YAAY,WAAW;AACvE;AAAA,YACF;AACE,6BAAe,MAAM,YAAY,eAAe,cAAc,WAAW;AAAA,UAC7E;AAGA,gBAAM,cAAc,eAAe,cAAc,eAAe;AAChE,cAAI,aAAa;AACf,gBAAI;AAIJ,oBAAQ,eAAe;AAAA,cACrB,KAAK;AAEH,+BAAe;AACf;AAAA,cACF,KAAK;AAEH,+BAAe;AACf;AAAA,cACF;AAEE,+BAAe;AACf;AAAA,YACQ;AAEZ,wBAAY,MAAM,YAAY,UAAU,cAAc,WAAW;AAAA,UACnE;AAAA,QACF;AAAA,MACF,OAAO;AAEP,cAAM,iBAAiB,QAAQ,cAAc,kBAAkB;AAC/D,YAAI,gBAAgB;AAElB,yBAAe,MAAM,YAAY,SAAS,QAAQ,WAAW;AAC7D,yBAAe,MAAM,YAAY,UAAU,QAAQ,WAAW;AAC9D,yBAAe,MAAM,YAAY,YAAY,UAAU,WAAW;AAClE,yBAAe,MAAM,YAAY,WAAW,KAAK,WAAW;AAC5D,yBAAe,MAAM,YAAY,cAAc,cAAc,WAAW;AACxE,yBAAe,MAAM,YAAY,YAAY,YAAY,WAAW;AAGpE,yBAAe,MAAM,YAAY,eAAe,IAAI,2BAA2B,WAAW;AAC1F,yBAAe,MAAM,YAAY,aAAa,GAAG,WAAW,KAAK,oBAAoB,WAAW;AAChG,yBAAe,MAAM,YAAY,SAASA,QAAO,WAAW;AAC5D,yBAAe,MAAM,YAAY,eAAe,YAAY,WAAW;AACvE,yBAAe,MAAM,YAAY,cAAc,WAAW,WAAW;AAGrE,yBAAe,MAAM,YAAY,WAAW,QAAQ,WAAW;AAC/D,yBAAe,MAAM,YAAY,kBAAkB,UAAU,WAAW;AAExE,kBAAQ,eAAe;AAAA,YACrB,KAAK;AACH,6BAAe,MAAM,YAAY,mBAAmB,UAAU,WAAW;AACzE;AAAA,YACF,KAAK;AACH,6BAAe,MAAM,YAAY,mBAAmB,YAAY,WAAW;AAC3E;AAAA,YACF;AACE,6BAAe,MAAM,YAAY,mBAAmB,cAAc,WAAW;AAAA,UACjF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,8BAA8B;AAC5B,UAAI,CAAC,KAAK;AAAiB;AAG3B,YAAM,YAAY,KAAK,gBAAgB,QAAQ;AAE/C,UAAI,cAAc,sBAAsB,KAAK,8BAA8B;AACzE,cAAM,iBAAiB,WAAW,KAAK,0BAA0B,KAAK,KAAK;AAC3E,aAAK,gBAAgB,QAAQ,iBAAiB;AAAA,MAChD;AAEA,UAAI,CAAC,eAAe,sBAAsB,kBAAkB,EAAE,SAAS,SAAS,GAAG;AACjF,YAAI,KAAK,yBAAyB;AAChC,gBAAM,YAAY,WAAW,KAAK,qBAAqB,KAAK,KAAK;AACjE,eAAK,gBAAgB,QAAQ,YAAY;AAAA,QAC3C;AACA,YAAI,KAAK,wBAAwB;AAC/B,gBAAM,WAAW,WAAW,KAAK,oBAAoB,KAAK,KAAK;AAC/D,eAAK,gBAAgB,QAAQ,WAAW;AAAA,QAC1C;AAAA,MACF;AAGA,UAAI,cAAc,eAAe;AAC/B,aAAK,qBAAqB,KAAK,eAAe;AAAA,MAChD;AAGA,WAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,qBAAqB;AACnB,UAAI,CAAC,KAAK;AAAiB;AAE3B,YAAM,YAAY,KAAK,gBAAgB,QAAQ;AAC/C,YAAM,eAAe,WAAW,KAAK,gBAAgB,QAAQ,QAAQ,KAAK;AAE1E,UAAI,cAAc,sBAAsB,KAAK,8BAA8B;AACzE,cAAM,iBAAiB,WAAW,KAAK,0BAA0B,KAAK,KAAK;AAC3E,aAAK,2BAA2B,cAAc,cAAc;AAAA,MAC9D;AAEA,UAAI,CAAC,eAAe,sBAAsB,kBAAkB,EAAE,SAAS,SAAS,GAAG;AACjF,YAAI,KAAK,yBAAyB;AAChC,gBAAM,YAAY,WAAW,KAAK,qBAAqB,KAAK,KAAK;AACjE,eAAK,sBAAsB,cAAc,SAAS;AAAA,QACpD;AACA,YAAI,KAAK,wBAAwB;AAC/B,gBAAM,WAAW,WAAW,KAAK,oBAAoB,KAAK,KAAK;AAC/D,eAAK,qBAAqB,cAAc,QAAQ;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,2BAA2B,cAAcN,QAAO;AAC9C,UAAI,CAAC,KAAK;AAA+B;AACzC,YAAM,aAAa,KAAK,MAAO,eAAeA,SAAS,GAAG;AAC1D,WAAK,2BAA2B,cAAc,KAAK;AAAA,IACrD;AAAA,IAEA,sBAAsB,cAAcA,QAAO;AACzC,UAAI,CAAC,KAAK;AAA0B;AACpC,YAAM,aAAa,KAAK,MAAO,eAAeA,SAAS,GAAG;AAC1D,WAAK,sBAAsB,cAAc,KAAK;AAAA,IAChD;AAAA,IAEA,qBAAqB,cAAcA,QAAO;AACxC,UAAI,CAAC,KAAK;AAAyB;AACnC,YAAM,aAAa,KAAK,MAAO,eAAeA,SAAS,GAAG;AAC1D,WAAK,qBAAqB,cAAc,KAAK;AAAA,IAC/C;AAAA,IAEA,MAAM,eAAe;AACnB,UAAI,CAAC,KAAK;AAAiB;AAE3B,YAAM,YAAY,KAAK,gBAAgB,QAAQ;AAE/C,UAAI;AAEF,cAAMU,YAAW,MAAM,MAAM,oCAAoC,KAAK,iCAAiC;AAAA,UACrG,SAAS;AAAA,YACP,UAAU;AAAA,YACV,gBAAgB,SAAS,cAAc,qBAAqB,EAAE;AAAA,UAChE;AAAA,QACF,CAAC;AAED,YAAIA,UAAS,IAAI;AACf,gBAAMC,QAAO,MAAMD,UAAS,KAAK;AACjC,gBAAM,kBAAkBC,MAAK,wBAAwB,SAAS;AAE9D,cAAI,iBAAiB;AACnB,iBAAK;AAAA,cACH,KAAK;AAAA,cACL,gBAAgB;AAAA,cAChB,gBAAgB;AAAA,cAChB,gBAAgB;AAAA,cAChB,gBAAgB;AAAA,YAClB;AACA,iBAAK,iBAAiB,iDAA8C,SAAS;AAAA,UAC/E;AAAA,QACF;AAAA,MACF,SAASZ,QAAP;AAEA,cAAMa,YAAW,KAAK,oBAAoB;AAC1C,cAAM,kBAAkBA,UAAS,SAAS;AAE1C,YAAI,iBAAiB;AACnB,eAAK;AAAA,YACH,KAAK;AAAA,YACL,gBAAgB;AAAA,YAChB,gBAAgB;AAAA,YAChB,gBAAgB;AAAA,YAChB,gBAAgB;AAAA,UAClB;AACA,eAAK,iBAAiB,iDAA8C,SAAS;AAAA,QAC/E;AAAA,MACF;AAAA,IACF;AAAA,IAEA,sBAAsB;AAEpB,aAAO;AAAA,QACL,qBAAqB,EAAE,GAAG,IAAI,GAAG,GAAG,OAAO,IAAI,QAAQ,GAAG;AAAA,QAC1D,gBAAgB,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAE;AAAA,QACrD,iBAAiB,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAE;AAAA,QACtD,kBAAkB,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,GAAG;AAAA,QACxD,eAAe,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAE;AAAA,QACpD,oBAAoB,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,GAAG;AAAA,QAC1D,eAAe,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,GAAG;AAAA,MACvD;AAAA,IACF;AAAA,IAEA,MAAM,aAAa;AACjB,YAAM,aAAa,CAAC;AAEpB,WAAK,wBAAwB,QAAQ,aAAW;AAC9C,cAAM,YAAY,QAAQ,QAAQ;AAClC,cAAM,cAAc;AAAA,UAClB,GAAG,WAAW,QAAQ,QAAQ,CAAC;AAAA,UAC/B,GAAG,WAAW,QAAQ,QAAQ,CAAC;AAAA,UAC/B,OAAO,WAAW,QAAQ,QAAQ,KAAK;AAAA,UACvC,QAAQ,WAAW,QAAQ,QAAQ,MAAM;AAAA,QAC3C;AAGA,YAAI,cAAc,eAAe;AAC/B,sBAAY,cAAc,QAAQ,QAAQ,cAAc;AACxD,sBAAY,YAAY,WAAW,QAAQ,QAAQ,QAAQ,KAAK;AAChE,sBAAY,QAAQ,QAAQ,QAAQ,SAAS;AAC7C,sBAAY,aAAa,QAAQ,QAAQ,aAAa;AACtD,sBAAY,iBAAiB,QAAQ,QAAQ,iBAAiB;AAC9D,sBAAY,cAAc,QAAQ,QAAQ,cAAc;AAGxD,cAAI,cAAc,oBAAoB;AACpC,gBAAI,QAAQ,QAAQ,gBAAgB;AAClC,0BAAY,kBAAkB,WAAW,QAAQ,QAAQ,cAAc;AAAA,YACzE;AAAA,UACF;AAGA,cAAI,CAAC,eAAe,sBAAsB,kBAAkB,EAAE,SAAS,SAAS,GAAG;AACjF,gBAAI,QAAQ,QAAQ,WAAW;AAC7B,0BAAY,aAAa,WAAW,QAAQ,QAAQ,SAAS;AAAA,YAC/D;AACA,gBAAI,QAAQ,QAAQ,UAAU;AAC5B,0BAAY,YAAY,WAAW,QAAQ,QAAQ,QAAQ;AAAA,YAC7D;AACA,wBAAY,eAAe,QAAQ,QAAQ,gBAAgB;AAG3D,gBAAI,cAAc,eAAe;AAC/B,kBAAI,QAAQ,QAAQ,gBAAgB;AAClC,4BAAY,mBAAmB,QAAQ,QAAQ;AAAA,cACjD;AACA,kBAAI,QAAQ,QAAQ,WAAW;AAC7B,4BAAY,aAAa,QAAQ,QAAQ;AAAA,cAC3C;AAAA,YACF;AAAA,UACF;AAGA,gBAAM,gBAAgB,UAAU,MAAM,IAAI,EAAE,CAAC;AAC7C,cAAI,kBAAkB,eAAe,QAAQ,QAAQ,SAAS;AAC5D,wBAAY,WAAW,QAAQ,QAAQ;AAAA,UACzC;AAGA,cAAI,kBAAkB,gBAAgB,QAAQ,QAAQ,WAAW;AAC/D,wBAAY,aAAa,QAAQ,QAAQ;AAAA,UAC3C;AAGA,cAAI,cAAc,oBAAoB;AACpC,wBAAY,aAAa,QAAQ,QAAQ,cAAc;AAAA,UACzD;AAAA,QACF;AAEA,mBAAW,SAAS,IAAI;AAAA,MAC1B,CAAC;AAED,UAAI;AACF,cAAMF,YAAW,MAAM,MAAM,KAAK,gBAAgB;AAAA,UAChD,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,gBAAgB,SAAS,cAAc,qBAAqB,EAAE;AAAA,UAChE;AAAA,UACA,MAAM,KAAK,UAAU,EAAE,iBAAiB,WAAW,CAAC;AAAA,QACtD,CAAC;AAED,cAAM,SAAS,MAAMA,UAAS,KAAK;AAEnC,YAAI,OAAO,SAAS;AAClB,eAAK,iBAAiB,uBAAuB,SAAS;AAAA,QACxD,OAAO;AACL,eAAK,iBAAiB,6BAA6B,OAAO,SAAS,OAAO,SAAS,OAAO;AAAA,QAC5F;AAAA,MACF,SAASX,QAAP;AACA,aAAK,iBAAiB,4BAA4BA,OAAM,SAAS,OAAO;AAAA,MAC1E;AAAA,IACF;AAAA,IAEA,iBAAiBc,UAAS,MAAM;AAE9B,YAAM,eAAe,SAAS,cAAc,KAAK;AACjD,mBAAa,YAAY,eAAe,SAAS,YAAY,YAAY;AACzE,mBAAa,MAAM,UAAU;AAC7B,mBAAa,cAAcA;AAE3B,eAAS,KAAK,YAAY,YAAY;AAEtC,iBAAW,MAAM;AACf,qBAAa,OAAO;AAAA,MACtB,GAAG,GAAI;AAAA,IACT;AAAA,IAIA,MAAM,iBAAiB;AACrB,UAAI;AAEF,cAAM,KAAK,WAAW;AAGtB,cAAM,gBAAgB,OAAO,KAAK,IAAI,UAAU,oDAAoD;AAGpG,cAAM,aAAa,CAAC;AACpB,aAAK,wBAAwB,QAAQ,aAAW;AAC9C,gBAAM,YAAY,QAAQ,QAAQ;AAClC,qBAAW,SAAS,IAAI;AAAA,YACtB,GAAG,WAAW,QAAQ,QAAQ,CAAC;AAAA,YAC/B,GAAG,WAAW,QAAQ,QAAQ,CAAC;AAAA,YAC/B,OAAO,WAAW,QAAQ,QAAQ,KAAK;AAAA,YACvC,QAAQ,WAAW,QAAQ,QAAQ,MAAM;AAAA,UAC3C;AAAA,QACF,CAAC;AAGD,cAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAWF,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mEAsCqB,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA,cAIrE,KAAK,uBAAuB;AAAA;AAAA,gBAE1B,OAAO,QAAQ,UAAU,EAAE,IAAI,CAAC,CAAC,WAAW,GAAG,MAAM;AAAA,gEACL,IAAI,YAAY,IAAI,cAAc,IAAI,mBAAmB,IAAI;AAAA,+CAC9E,KAAK,sBAAsB,SAAS;AAAA,yBAC1D,KAAK,yBAAyB,SAAS;AAAA;AAAA,eAEjD,EAAE,KAAK,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBlB,sBAAc,SAAS,MAAM,WAAW;AACxC,sBAAc,SAAS,MAAM;AAAA,MAE/B,SAASd,QAAP;AACA,gBAAQ,MAAM,8BAA8BA,MAAK;AACjD,aAAK,iBAAiB,gCAAgCA,OAAM,SAAS,OAAO;AAAA,MAC9E;AAAA,IACF;AAAA,IAEA,gBAAgB;AAEd,aAAO;AAAA,IACT;AAAA,IAEA,yBAAyB;AAEvB,YAAM,YAAY,KAAK,QAAQ,cAAc,kDAAkD;AAC/F,UAAI,WAAW;AACb,cAAM,UAAU,UAAU,aAAa,OAAO;AAC9C,eAAO,eAAe;AAAA,MACxB;AACA,aAAO;AAAA,IACT;AAAA,IAEA,yBAAyB,WAAW;AAClC,YAAM,UAAU,KAAK,QAAQ,cAAc,YAAY,4BAA4B;AACnF,UAAI,SAAS;AACX,eAAO,QAAQ;AAAA,MACjB;AACA,aAAO,IAAI;AAAA,IACb;AAAA,IAEA,oBAAoB;AAElB,WAAK,4BAA4B;AAAA,IACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,wBAAwB,OAAO;AAC7B,YAAM,gBAAgB;AAEtB,YAAM,kBAAkB,MAAM,OAAO,QAAQ,oBAAoB;AACjE,UAAI,CAAC;AAAiB;AAEtB,YAAM,YAAY,gBAAgB,QAAQ;AAG1C,sBAAgB,MAAM,UAAU;AAChC,sBAAgB,MAAM,gBAAgB;AAGtC,UAAI,KAAK,oBAAoB,iBAAiB;AAC5C,aAAK,kBAAkB;AACvB,aAAK,2BAA2B,MAAM,UAAU;AAGhD,YAAI,KAAK,qBAAqB;AAC5B,eAAK,iBAAiB,MAAM,UAAU;AAAA,QACxC;AAAA,MACF;AAGA,YAAM,cAAc,QAAQ,aAAa,KAAK;AAG9C,WAAK,UAAU,0CAA0C,MAAM,aAAa,EAAE,KAAK,CAACe,WAAU;AAG5F,aAAK,WAAW;AAChB,aAAK,QAAQ;AAGb,wBAAgB,OAAO;AAAA,MAEzB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,qBAAqB,OAAO;AAC1B,YAAM,OAAO,MAAM,OAAO,QAAQ,eAAe;AACjD,UAAI,CAAC;AAAM;AAEX,YAAM,YAAY,KAAK,QAAQ;AAG/B,YAAM,mBAAmB,CAAC,WAAW;AACrC,UAAI,CAAC,iBAAiB,SAAS,SAAS,GAAG;AACzC,aAAK,MAAM,UAAU;AACrB,aAAK,MAAM,gBAAgB;AAAA,MAC7B;AAGA,YAAM,cAAc,OAAO,SAAS;AAEpC,YAAM,eAAe,YAAY,QAAQ,kBAAkB,EAAE;AAC7D,YAAM,gBAAgB,GAAG;AAEzB,YAAM,eAAe;AAAA,QACnB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,gBAAgB,SAAS,cAAc,yBAAyB,EAAE;AAAA,QACpE;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB,YAAY;AAAA,QACd,CAAC;AAAA,MACH,CAAC,EACA,KAAK,CAAAJ,cAAYA,UAAS,KAAK,CAAC,EAChC,KAAK,CAAAC,UAAQ;AACZ,YAAIA,MAAK,SAAS;AAEhB,gBAAM,kBAAkBA,MAAK,cAAc;AAG3C,eAAK,gBAAgB,eAAe;AAGpC,cAAIA,MAAK,iBAAiB;AACxB,iBAAK,0BAA0BA,MAAK,eAAe;AAAA,UACrD;AAAA,QACF,OAAO;AAEL,eAAK,MAAM,UAAU;AACrB,eAAK,MAAM,gBAAgB;AAC3B,kBAAQ,MAAM,0BAA0BA,MAAK,KAAK;AAAA,QACpD;AAAA,MACF,CAAC,EACA,MAAM,CAAAZ,WAAS;AAEd,aAAK,MAAM,UAAU;AACrB,aAAK,MAAM,gBAAgB;AAC3B,gBAAQ,MAAM,yBAAyBA,MAAK;AAAA,MAC9C,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAgB,WAAW;AACzB,YAAM,mBAAmB,KAAK,oBAAoB;AAClD,YAAMgB,YAAW,iBAAiB,SAAS,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,GAAG;AAGtF,YAAM,kBAAkB,cAAc,gBAAgB;AAAA,QACpD,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,QACP,WAAW;AAAA,QACX,eAAe;AAAA,QACf,YAAY;AAAA,MACd,IAAI,CAAC;AAGL,UAAI,YAAY;AAAA;AAAA,8BAEU;AAAA,qBACTA,UAAS;AAAA,qBACTA,UAAS;AAAA,yBACLA,UAAS;AAAA,0BACRA,UAAS;AAE/B,UAAI,cAAc,eAAe;AAC/B,qBAAa;AAAA,+BACY,gBAAgB;AAAA,6BAClB,gBAAgB;AAAA,yBACpB,gBAAgB;AAAA,8BACX,gBAAgB;AAAA,kCACZ,gBAAgB;AAAA,+BACnB,gBAAgB;AAGzC,YAAI,UAAU,MAAM,qBAAqB,GAAG;AAC1C,uBAAa;AAAA;AAAA,QAEf;AAGA,YAAI,UAAU,MAAM,sBAAsB,GAAG;AAC3C,uBAAa;AAAA;AAAA,QAEf;AAGA,YAAI,cAAc,oBAAoB;AACpC,uBAAa;AAAA;AAAA,QAEf;AAGA,YAAI,CAAC,eAAe,sBAAsB,kBAAkB,EAAE,SAAS,SAAS,GAAG;AACjF,gBAAM,cAAcA,UAAS,iBAAiB,SAASA,UAAS,iBAAiB,UAAU,UAAU;AACrG,uBAAa;AAAA,8BACSA,UAAS,cAAc;AAAA,6BACxBA,UAAS,aAAa;AAAA,gCACnB;AAAA,QAC1B;AAAA,MACF;AAGA,YAAM,cAAc;AAAA;AAAA,yBAEC,aAAa;AAAA,8CACQA,UAAS,YAAYA,UAAS,cAAcA,UAAS,mBAAmBA,UAAS;AAAA;AAAA;AAAA;AAAA,gCAI/F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWpB,KAAK,+BAA+B,SAAS;AAAA;AAAA;AAAA;AAMrD,YAAM,YAAY,KAAK,QAAQ,cAAc,uBAAuB;AACpE,UAAI,WAAW;AACb,kBAAU,mBAAmB,aAAa,WAAW;AAGrD,cAAM,aAAa,UAAU,cAAc,YAAY,WAAW;AAClE,YAAI,YAAY;AAEd,cAAI,CAAC,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAEtD,iBAAK,wBAAwB,KAAK,UAAU;AAAA,UAC9C;AAGA,eAAK,qBAAqB,UAAU;AACpC,eAAK,qBAAqB,UAAU;AACpC,eAAK,sBAAsB,UAAU;AACrC,eAAK,yBAAyB,UAAU;AAAA,QAG1C;AAAA,MACF;AAAA,IACF;AAAA,IAEA,+BAA+B,WAAW;AAExC,YAAM,WAAW;AAAA,QACf,qBAAqB;AAAA,QACrB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,QACpB,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,eAAe;AAAA,QACf,aAAa;AAAA,MACf;AAGA,UAAI,UAAU,MAAM,qBAAqB,GAAG;AAC1C,eAAO;AAAA,MACT;AAGA,UAAI,UAAU,MAAM,sBAAsB,GAAG;AAC3C,eAAO;AAAA,MACT;AAEA,UAAI,cAAc,oBAAoB;AACpC,eAAO;AAAA,MACT;AAEA,aAAO,SAAS,SAAS,KAAK,QAAQ,UAAU,QAAQ,MAAM,GAAG,EAAE,QAAQ,SAAS,CAAAN,OAAKA,GAAE,YAAY,CAAC;AAAA,IAC1G;AAAA;AAAA,IAGA,6BAA6B;AAC3B,UAAI,CAAC,KAAK;AAAiB;AAE3B,YAAM,UAAU,KAAK,mBAAmB;AAGxC,WAAK,gBAAgB,QAAQ,UAAU;AAGvC,WAAK,sBAAsB,KAAK,iBAAiB,OAAO;AAGxD,mBAAa,KAAK,WAAW;AAC7B,WAAK,cAAc,WAAW,MAAM;AAClC,aAAK,WAAW;AAAA,MAClB,GAAG,GAAI;AAAA,IACT;AAAA;AAAA,IAGA,kCAAkC;AAChC,UAAI,CAAC,KAAK;AAAiB;AAE3B,YAAM,YAAY,KAAK,qBAAqB;AAG5C,WAAK,gBAAgB,QAAQ,YAAY;AAGzC,WAAK,uBAAuB,KAAK,iBAAiB,SAAS;AAG3D,mBAAa,KAAK,WAAW;AAC7B,WAAK,cAAc,WAAW,MAAM;AAClC,aAAK,WAAW;AAAA,MAClB,GAAG,GAAI;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,0CAA0C;AACxC,UAAI,CAAC,KAAK;AAAiB;AAE3B,YAAM,YAAY,KAAK,oCAAoC;AAC3D,WAAK,gBAAgB,QAAQ,YAAY,YAAY,SAAS;AAC9D,WAAK,6BAA6B,KAAK,iBAAiB,SAAS;AAEjE,mBAAa,KAAK,WAAW;AAC7B,WAAK,cAAc,WAAW,MAAM;AAClC,aAAK,WAAW;AAAA,MAClB,GAAG,GAAG;AAAA,IACR;AAAA;AAAA;AAAA;AAAA,IAKA,6BAA6B;AAC3B,UAAI,CAAC,KAAK;AAAiB;AAE3B,YAAM,cAAc,KAAK,uBAAuB;AAChD,WAAK,gBAAgB,QAAQ,cAAc,cAAc,SAAS;AAClE,WAAK,wBAAwB,KAAK,iBAAiB,WAAW;AAE9D,mBAAa,KAAK,WAAW;AAC7B,WAAK,cAAc,WAAW,MAAM;AAClC,aAAK,WAAW;AAAA,MAClB,GAAG,GAAG;AAAA,IACR;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,wBAAwB,SAAS,aAAa;AAC5C,YAAM,UAAU,QAAQ,cAAc,kBAAkB;AACxD,UAAI,CAAC;AAAS;AAEd,UAAI,cAAc,QAAQ,cAAc,eAAe;AACvD,UAAI,aAAa;AACf,YAAI,CAAC,aAAa;AAChB,wBAAc,SAAS,cAAc,KAAK;AAC1C,sBAAY,YAAY;AACxB,sBAAY,MAAM,UAAU;AAC5B,gBAAM,WAAW,QAAQ,cAAc,YAAY;AACnD,cAAI,YAAY,SAAS,aAAa;AACpC,qBAAS,WAAW,aAAa,aAAa,SAAS,WAAW;AAAA,UACpE,WAAW,UAAU;AACnB,qBAAS,WAAW,YAAY,WAAW;AAAA,UAC7C,OAAO;AACL,oBAAQ,YAAY,WAAW;AAAA,UACjC;AAAA,QACF;AACA,oBAAY,MAAM,UAAU;AAC5B,aAAK,qBAAqB,OAAO;AAAA,MACnC,WAAW,aAAa;AACtB,oBAAY,OAAO;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,6BAA6B,SAAS,WAAW;AAC/C,YAAM,UAAU,QAAQ,cAAc,kBAAkB;AACxD,UAAI,CAAC;AAAS;AAEd,YAAM,WAAW;AACjB,YAAM,QAAS,OAAO,QAAQ,OAAO,KAAK,IACtC,OAAO,KAAK,EAAE,kDAAkD,IAChE;AAEJ,cAAQ,YAAY,YAChB,gEAAgE,YAAY,mBAC5E,gEAAgE;AAAA,IACtE;AAAA,IAEA,sBAAsB,SAAS,SAAS;AACtC,YAAM,cAAc,QAAQ,cAAc,6BAA6B;AACvE,UAAI,eAAe,SAAS;AAG1B,cAAM,WAAW,QAAQ,MAAM,GAAG;AAClC,YAAI,cAAc;AAElB,YAAI,SAAS,UAAU,KAAK,SAAS,CAAC,MAAM,YAAY,SAAS,CAAC,MAAM,2BAA2B;AACjG,gBAAM,UAAU,SAAS,CAAC;AAG1B,cAAI,OAAO,QAAQ,OAAO,KAAK,GAAG;AAChC,0BAAc,OAAO,KAAK,EAAE,OAAO;AAAA,UACrC,OAAO;AAEL,0BAAc,QAAQ,QAAQ,MAAM,GAAG,EAAE,QAAQ,SAAS,CAAAA,OAAKA,GAAE,YAAY,CAAC;AAAA,UAChF;AAAA,QACF,OAAO;AAEL,wBAAc,SAAS,SAAS,SAAS,CAAC,EAAE,QAAQ,MAAM,GAAG,EAAE,QAAQ,SAAS,CAAAA,OAAKA,GAAE,YAAY,CAAC;AAAA,QACtG;AAEA,oBAAY,cAAc,eAAe,QAAQ,MAAM,GAAG,EAAE,IAAI;AAAA,MAClE;AAAA,IACF;AAAA,IAEA,uBAAuB,SAAS,WAAW;AACzC,YAAM,cAAc,QAAQ,cAAc,8BAA8B;AACxE,UAAI,aAAa;AACf,oBAAY,cAAc,aAAa;AAAA,MACzC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,0BAA0B,gBAAgB;AACxC,YAAM,kBAAkB,SAAS,cAAc,kBAAkB;AACjE,UAAI,CAAC;AAAiB;AAGtB,YAAM,WAAW,gBAAgB,iBAAiB,eAAe;AACjE,eAAS,QAAQ,UAAQ;AACvB,aAAK,MAAM,UAAU;AAAA,MACvB,CAAC;AAGD,qBAAe,QAAQ,eAAa;AAClC,cAAM,OAAO,gBAAgB,cAAc,qBAAqB,aAAa;AAC7E,YAAI,MAAM;AACR,eAAK,MAAM,UAAU;AACrB,eAAK,MAAM,UAAU;AACrB,eAAK,MAAM,gBAAgB;AAAA,QAC7B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB,WAAW;AAC7B,YAAM,gBAAgB,UAAU,MAAM,IAAI,EAAE,CAAC;AAC7C,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,2BAA2B;AAElF,uBAAiB,QAAQ,WAAS;AAChC,cAAM,YAAY,MAAM,QAAQ;AAChC,YAAI,cAAc,eAAe;AAC/B,gBAAM,UAAU,OAAO,QAAQ;AAG/B,cAAI,kBAAkB,aAAa;AACjC,iBAAK,mBAAmB,SAAS;AAAA,UACnC,WAAW,kBAAkB,cAAc;AACzC,iBAAK,wBAAwB,SAAS;AAAA,UACxC;AAAA,QACF,OAAO;AACL,gBAAM,UAAU,IAAI,QAAQ;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,mBAAmB,WAAW;AAE5B,YAAM,UAAU,KAAK,QAAQ,cAAc,qBAAqB,aAAa;AAC7E,UAAI,CAAC;AAAS;AAGd,YAAM,iBAAiB,QAAQ,QAAQ,WAAW;AAGlD,UAAI,KAAK,uBAAuB;AAC9B,aAAK,mBAAmB,QAAQ;AAAA,MAClC;AAAA,IACF;AAAA,IAEA,wBAAwB,WAAW;AAEjC,YAAM,UAAU,KAAK,QAAQ,cAAc,qBAAqB,aAAa;AAC7E,UAAI,CAAC;AAAS;AAGd,YAAM,mBAAmB,QAAQ,QAAQ,aAAa;AAGtD,UAAI,KAAK,yBAAyB;AAChC,aAAK,qBAAqB,QAAQ;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AA54DE;AAAA;AAAA,gBAHK,8CAGE,kBAAiB;AACxB;AAAA,gBAJK,8CAIE,mBAAkB;AAEzB;AAAA,gBANK,8CAME,WAAU,CAAC,oBAAoB,cAAc,wBAAwB,uBAAuB,UAAU,UAAU,cAAc,eAAe,mBAAmB,iBAAiB,cAAc,kBAAkB,sBAAsB,mBAAmB,mBAAmB,kBAAkB,eAAe,gBAAgB,kBAAkB,kBAAkB,uBAAuB,6BAA6B,iCAAiC,0BAA0B,uBAAuB,wBAAwB,oBAAoB,kBAAkB,mBAAmB,iBAAiB,kBAAkB,kBAAkB;AACrnB,gBAPK,8CAOE,UAAS,EAAE,YAAY,QAAQ,WAAW,OAAO;;;ACT1D;AAAA;AAAA;AAAA;AACA,MAAO,uCAAP,cAA6B,WAAW;AAAA,IAGtC,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IAEpB,UAAU;AACR,cAAQ,IAAI,+BAA+B;AAC3C,UAAG,KAAK,qBAAqB;AAE3B,aAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,IAAI,EAAE;AAExD,aAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW;AAE9D,aAAK,uBAAuB;AAAA,MAC9B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW;AACT,WAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,IAAI,EAAE;AACxD,WAAK,uBAAuB;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AACvB,UAAG,KAAK,2BAA2B;AACjC,UAAE,KAAK,sBAAsB,EAAE,KAAK,GAAG,KAAK,qBAAqB,KAAK,eAAe;AAAA,MACvF;AAAA,IACF;AAAA,EACF;AAjCE,gBADK,sCACE,WAAU,CAAC,cAAc,kBAAkB;;;ACFpD;AAAA;AAAA;AAAA;AAEA,MAAqB,iBAArB,cAA4C,WAAW;AAAA,IAIrD,UAAU;AACR,WAAK,eAAe;AACpB,UAAI,KAAK,oBAAoB;AAC3B,YAAIO,QAAO;AACX,cAAM,WAAW,IAAI,iBAAiB,CAAC,kBAAkB;AACvD,qBAAW,YAAY,eAAe;AACpC,gBAAI,SAAS,SAAS,eAAe,SAAS,WAAW,SAAS,GAAG;AACvE,uBAAS,WAAW,QAAQ,CAAC,SAAS;AACpC,oBAAI,KAAK,aAAa,KAAK,gBAAgB,KAAK,UAAU,SAAS,WAAW,GAAG;AAE/E,kBAAAA,MAAK,YAAYA,OAAM,EAAE,QAAQ,KAAK,CAAC;AAAA,gBACzC;AAAA,cACF,CAAC;AAAA,YACC;AAAA,UACF;AAAA,QACF,CAAC;AAED,iBAAS,QAAQ,KAAK,iBAAiB,EAAE,WAAW,MAAM,SAAS,KAAK,CAAC;AAAA,MAC3E;AAAA,IACF;AAAA,IAEA,mBAAmB,OAAO;AACxB,UAAG,KAAK,uBAAuB;AAC7B,UAAE,KAAK,kBAAkB,EAAE,YAAY,QAAQ;AAAA,MACjD;AAAA,IACF;AAAA,IAGA,YAAYA,OAAM,OAAO;AAEvB,UAAG,EAAE,MAAM,MAAM,EAAE,SAAS,WAAW,GAAG;AACxC,QAAAA,MAAK,eAAe,QAAQ;AAAA,MAC9B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe,WAAW,QAAQ;AAChC,UAAI,KAAK,oBAAoB;AAC3B,aAAK,gBAAgB,SAAS;AAAA,UAC5B,KAAK,KAAK,gBAAgB;AAAA,UAC1B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAjDE,gBAFmB,gBAEZ,WAAU,CAAC,aAAa,QAAQ,cAAc;;;ACJvD;AAAA;AAAA;AAAA;AAEA,MAAqB,wBAArB,cAAmD,sBAAsB;AAAA,IAEvE,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,aAAa,OAAO;AAClB,YAAM,eAAe;AAGrB,aAAO,SAAS,OAAO,OAAO,SAAS;AAAA,IACzC;AAAA,EACF;;;ACzBA;AAAA;AAAA;AAAA;AAEA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IAItC,UAAU;AACR,UAAIC,QAAO;AACX,WAAK,eAAe,EAAE,KAAK,aAAa;AACxC,WAAK,UAAU,EAAE,KAAK,YAAY;AAGlC,WAAK,aAAa,GAAG,oBAAoB,WAAY;AAEnD,QAAAA,MAAK,QAAQ,KAAK,iBAAiB,EAAE,YAAY,QAAQ;AAAA,MAC3D,CAAC;AACD,WAAK,aAAa,GAAG,oBAAoB,WAAY;AAEnD,QAAAA,MAAK,QAAQ,KAAK,iBAAiB,EAAE,YAAY,QAAQ;AAAA,MAC3D,CAAC;AAAA,IACH;AAAA,IAEA,OAAO,OAAO;AAAA,IAEd;AAAA,EAEF;AAtBE,gBAFK,gCAEE,WAAU,CAAC,WAAW,QAAQ;;;ACJvC;AAAA;AAAA;AAAA;AAEA,MAAO,mCAAP,cAA6B,WAAW;AAAA,IAEtC,UAAU;AACR,YAAMC,QAAO;AACb,QAAE,sBAAsB,EAAE,QAAQ;AAAA,QAChC,aAAa;AAAA;AAAA,QACb,gBAAgBA,MAAK;AAAA,QACrB,mBAAmBA,MAAK;AAAA,MAC1B,CAAC;AAAA,IAEH;AAAA,IAEA,eAAgBC,QAAO;AACrB,UAAI,CAACA,OAAM,IAAI;AAAE,eAAOA,OAAM;AAAA,MAAM;AACpC,UAAI,SAAS,EAAE,wBAAwBA,OAAM,QAAQ,QAAQ,gBAAgB;AAC7E,aAAO;AAAA,IACT;AAAA,EAEF;;;ACpBA;AAAA;AAAA;AAAA;;;ACAA,MAAM,UAAU,CAAC;AACjB,MAAMC,SAAQ,CAAC;AAER,WAAS,gBAAgBC,OAAMC,IAAG;AACvC,QAAI,MAAM,QAAQD,KAAI,GAAG;AACvB,iBAAW,SAASA,OAAM;AACxB,wBAAgB,OAAOC,EAAC;AAAA,MAC1B;AACA;AAAA,IACF;AAEA,QAAI,OAAOD,UAAS,UAAU;AAC5B,iBAAW,SAASA,OAAM;AACxB,wBAAgB,OAAOA,MAAK,KAAK,CAAC;AAAA,MACpC;AACA;AAAA,IACF;AAEA,mBAAe,OAAO,oBAAoBC,EAAC,CAAC;AAC5C,YAAQD,KAAI,IAAI,OAAO,OAAO,QAAQA,KAAI,KAAK,CAAC,GAAGC,EAAC;AAAA,EACtD;AAEO,WAAS,cAAcD,OAAM;AAClC,WAAO,QAAQA,KAAI,KAAK,CAAC;AAAA,EAC3B;AAEO,WAAS,iBAAiB;AAC/B,WAAO,CAAC,GAAG,IAAI,IAAID,MAAK,CAAC;AAAA,EAC3B;AAEO,WAAS,eAAe,QAAQ;AACrC,IAAAA,OAAM,KAAK,GAAG,MAAM;AAAA,EACtB;;;AC/BO,WAASG,KAAIC,QAAO,OAAO;AAChC,QAAIC;AACJ,UAAM,KAAKD,OAAM;AACjB,UAAM,SAAS,CAAC;AAEhB,SAAKC,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACvB,aAAO,KAAK,MAAMD,OAAMC,EAAC,CAAC,CAAC;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AAGO,WAAS,OAAOD,QAAO,OAAO;AACnC,QAAIC;AACJ,UAAM,KAAKD,OAAM;AACjB,UAAM,SAAS,CAAC;AAEhB,SAAKC,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACvB,UAAI,MAAMD,OAAMC,EAAC,CAAC,GAAG;AACnB,eAAO,KAAKD,OAAMC,EAAC,CAAC;AAAA,MACtB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAGO,WAAS,QAAQC,IAAG;AACzB,WAASA,KAAI,MAAO,KAAK,KAAM;AAAA,EACjC;AAQO,WAAS,YAAYC,IAAG;AAC7B,WAAOA,GAAE,QAAQ,YAAY,SAAUC,IAAGC,IAAG;AAC3C,aAAO,MAAMA,GAAE,YAAY;AAAA,IAC7B,CAAC;AAAA,EACH;AAGO,WAASC,YAAWH,IAAG;AAC5B,WAAOA,GAAE,OAAO,CAAC,EAAE,YAAY,IAAIA,GAAE,MAAM,CAAC;AAAA,EAC9C;AAGO,WAAS,iBAAiB,SAASI,QAAOC,SAAQ,KAAK;AAC5D,QAAID,UAAS,QAAQC,WAAU,MAAM;AACnC,YAAM,OAAO,QAAQ,KAAK;AAE1B,UAAID,UAAS,MAAM;AACjB,QAAAA,SAAS,IAAI,QAAQ,IAAI,SAAUC;AAAA,MACrC,WAAWA,WAAU,MAAM;AACzB,QAAAA,UAAU,IAAI,SAAS,IAAI,QAASD;AAAA,MACtC;AAAA,IACF;AAEA,WAAO;AAAA,MACL,OAAOA;AAAA,MACP,QAAQC;AAAA,IACV;AAAA,EACF;AAOO,WAAS,UAAUC,IAAG,SAAS;AACpC,UAAM,SAASA,GAAE;AAEjB,QAAI,KAAKA,GAAE,MAAM,OAAOA,GAAE,KAAKA,GAAE,WAAW,OAAOA,GAAE,UAAU;AAC/D,QAAI,KAAKA,GAAE,MAAM,OAAOA,GAAE,KAAKA,GAAE,WAAW,OAAOA,GAAE,UAAU;AAG/D,QAAI,UAAU,MAAM;AAClB;AAAC,OAAC,IAAI,EAAE,IAAI,MAAM,QAAQ,MAAM,IAC5B,SACA,OAAO,WAAW,WAChB,CAAC,OAAO,GAAG,OAAO,CAAC,IACnB,CAAC,QAAQ,MAAM;AAAA,IACvB;AAGA,UAAM,QAAQ,OAAO,OAAO;AAC5B,UAAM,QAAQ,OAAO,OAAO;AAC5B,QAAI,SAAS,OAAO;AAClB,YAAM,EAAE,QAAAD,SAAQ,OAAAD,QAAO,GAAAG,IAAG,GAAAC,GAAE,IAAI,QAAQ,KAAK;AAG7C,UAAI,OAAO;AACT,aAAK,GAAG,SAAS,MAAM,IACnBD,KACA,GAAG,SAAS,OAAO,IACjBA,KAAIH,SACJG,KAAIH,SAAQ;AAAA,MACpB;AAEA,UAAI,OAAO;AACT,aAAK,GAAG,SAAS,KAAK,IAClBI,KACA,GAAG,SAAS,QAAQ,IAClBA,KAAIH,UACJG,KAAIH,UAAS;AAAA,MACrB;AAAA,IACF;AAGA,WAAO,CAAC,IAAI,EAAE;AAAA,EAChB;AAEA,MAAM,sBAAsB,oBAAI,IAAI,CAAC,QAAQ,YAAY,OAAO,CAAC;AAC1D,MAAM,gBAAgB,CAAC,YAC5B,oBAAoB,IAAI,QAAQ,QAAQ;AAEnC,MAAM,iBAAiB,CAAC,SAASI,OAAMC,YAAW,CAAC,MAAM;AAC9D,UAAM,SAAS,EAAE,GAAGD,MAAK;AAEzB,eAAWE,QAAO,QAAQ;AACxB,UAAI,OAAOA,IAAG,EAAE,QAAQ,MAAMD,UAASC,IAAG,GAAG;AAC3C,eAAO,OAAOA,IAAG;AAAA,MACnB;AAAA,IACF;AAEA,QAAI,OAAO,KAAK,MAAM,EAAE,QAAQ;AAC9B,cAAQ,KAAK,aAAa,cAAc,KAAK,UAAU,MAAM,CAAC;AAAA,IAChE,OAAO;AACL,cAAQ,KAAK,gBAAgB,YAAY;AACzC,cAAQ,KAAK,gBAAgB,YAAY;AAAA,IAC3C;AAAA,EACF;;;ACtIO,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,QAAQ;AACd,MAAM,QAAQ;;;ACJd,MAAM,UAAU;AAAA,IACrB,QAAQ,OAAO,WAAW,cAAc,OAAO;AAAA,IAC/C,UAAU,OAAO,aAAa,cAAc,OAAO;AAAA,EACrD;AA0BO,WAASC,aAAY;AAC1B,WAAO,QAAQ;AAAA,EACjB;;;AC/BA,MAAqB,OAArB,MAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS1B;;;ACHA,MAAMC,YAAW,CAAC;AACX,MAAM,OAAO;AAGb,WAAS,OAAOC,OAAMC,MAAK,KAAK;AAErC,WAAO,QAAQ,SAAS,gBAAgBA,KAAID,KAAI;AAAA,EAClD;AAEO,WAAS,aAAa,SAASE,UAAS,OAAO;AACpD,QAAI,mBAAmB;AAAM,aAAO;AAEpC,QAAI,OAAO,YAAY,UAAU;AAC/B,aAAO,QAAQ,OAAO;AAAA,IACxB;AAEA,QAAI,WAAW,MAAM;AACnB,aAAO,IAAIH,UAAS,IAAI,EAAE;AAAA,IAC5B;AAEA,QAAI,OAAO,YAAY,YAAY,QAAQ,OAAO,CAAC,MAAM,KAAK;AAC5D,aAAO,QAAQ,QAAQ,SAAS,cAAc,OAAO,CAAC;AAAA,IACxD;AAGA,UAAM,UAAUG,UAAS,QAAQ,SAAS,cAAc,KAAK,IAAI,OAAO,KAAK;AAC7E,YAAQ,YAAY;AAIpB,cAAU,QAAQ,QAAQ,UAAU;AAGpC,YAAQ,YAAY,QAAQ,UAAU;AACtC,WAAO;AAAA,EACT;AAEO,WAAS,UAAUF,OAAM,MAAM;AACpC,WAAO,SACJ,gBAAgB,QAAQ,OAAO,QAC7B,KAAK,iBACJ,gBAAgB,KAAK,cAAc,YAAY,QACjD,OACA,OAAOA,KAAI;AAAA,EACjB;AAGO,WAAS,MAAM,MAAM;AAE1B,QAAI,CAAC;AAAM,aAAO;AAGlB,QAAI,KAAK,oBAAoB;AAAM,aAAO,KAAK;AAE/C,QAAI,KAAK,aAAa,sBAAsB;AAC1C,aAAO,IAAID,UAAS,SAAS,IAAI;AAAA,IACnC;AAGA,QAAI,YAAYI,YAAW,KAAK,YAAY,KAAK;AAGjD,QAAI,cAAc,oBAAoB,cAAc,kBAAkB;AACpE,kBAAY;AAAA,IAGd,WAAW,CAACJ,UAAS,SAAS,GAAG;AAC/B,kBAAY;AAAA,IACd;AAEA,WAAO,IAAIA,UAAS,SAAS,EAAE,IAAI;AAAA,EACrC;AAEA,MAAI,UAAU;AAMP,WAASK,UAAS,SAASC,QAAO,QAAQ,MAAM,SAAS,OAAO;AACrE,IAAAC,UAASD,KAAI,IAAI;AACjB,QAAI;AAAQ,MAAAC,UAAS,IAAI,IAAI;AAE7B,mBAAe,OAAO,oBAAoB,QAAQ,SAAS,CAAC;AAE5D,WAAO;AAAA,EACT;AAEO,WAAS,SAASD,OAAM;AAC7B,WAAOC,UAASD,KAAI;AAAA,EACtB;AAGA,MAAI,MAAM;AAGH,WAAS,IAAIA,OAAM;AACxB,WAAO,UAAUE,YAAWF,KAAI,IAAI;AAAA,EACtC;AAGO,WAAS,YAAY,MAAM;AAEhC,aAASG,KAAI,KAAK,SAAS,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAClD,kBAAY,KAAK,SAASA,EAAC,CAAC;AAAA,IAC9B;AAEA,QAAI,KAAK,IAAI;AACX,WAAK,KAAK,IAAI,KAAK,QAAQ;AAC3B,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAGO,WAASC,QAAOC,UAASC,UAAS;AACvC,QAAIC,MAAKJ;AAET,IAAAE,WAAU,MAAM,QAAQA,QAAO,IAAIA,WAAU,CAACA,QAAO;AAErD,SAAKF,KAAIE,SAAQ,SAAS,GAAGF,MAAK,GAAGA,MAAK;AACxC,WAAKI,QAAOD,UAAS;AACnB,QAAAD,SAAQF,EAAC,EAAE,UAAUI,IAAG,IAAID,SAAQC,IAAG;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEO,WAAS,kBAAkBC,KAAI;AACpC,WAAO,YAAa,MAAM;AACxB,YAAMC,KAAI,KAAK,KAAK,SAAS,CAAC;AAE9B,UAAIA,MAAKA,GAAE,gBAAgB,UAAU,EAAEA,cAAa,QAAQ;AAC1D,eAAOD,IAAG,MAAM,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE,KAAKC,EAAC;AAAA,MACjD,OAAO;AACL,eAAOD,IAAG,MAAM,MAAM,IAAI;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;;;AC5IO,WAAS,WAAW;AACzB,WAAO,KAAK,OAAO,EAAE,SAAS;AAAA,EAChC;AAGO,WAAS,WAAW;AACzB,WAAO,KAAK,OAAO,EAAE,MAAM,IAAI;AAAA,EACjC;AAGO,WAAS,OAAO;AACrB,WAAO,KAAK,SAAS,EAAE,KAAK,SAAS,IAAI,CAAC;AAAA,EAC5C;AAGO,WAAS,OAAO;AACrB,WAAO,KAAK,SAAS,EAAE,KAAK,SAAS,IAAI,CAAC;AAAA,EAC5C;AAGO,WAAS,UAAU;AACxB,UAAME,KAAI,KAAK,SAAS;AACxB,UAAMC,KAAI,KAAK,OAAO;AAGtB,IAAAA,GAAE,IAAI,KAAK,OAAO,GAAGD,KAAI,CAAC;AAE1B,WAAO;AAAA,EACT;AAGO,WAAS,WAAW;AACzB,UAAMA,KAAI,KAAK,SAAS;AACxB,UAAMC,KAAI,KAAK,OAAO;AAEtB,IAAAA,GAAE,IAAI,KAAK,OAAO,GAAGD,KAAIA,KAAI,IAAI,CAAC;AAElC,WAAO;AAAA,EACT;AAGO,WAAS,QAAQ;AACtB,UAAMC,KAAI,KAAK,OAAO;AAGtB,IAAAA,GAAE,IAAI,KAAK,OAAO,CAAC;AAEnB,WAAO;AAAA,EACT;AAGO,WAAS,OAAO;AACrB,UAAMA,KAAI,KAAK,OAAO;AAGtB,IAAAA,GAAE,IAAI,KAAK,OAAO,GAAG,CAAC;AAEtB,WAAO;AAAA,EACT;AAGO,WAASC,QAAO,SAAS;AAC9B,cAAU,aAAa,OAAO;AAC9B,YAAQ,OAAO;AAEf,UAAMF,KAAI,KAAK,SAAS;AAExB,SAAK,OAAO,EAAE,IAAI,SAASA,EAAC;AAE5B,WAAO;AAAA,EACT;AAGO,WAASG,OAAM,SAAS;AAC7B,cAAU,aAAa,OAAO;AAC9B,YAAQ,OAAO;AAEf,UAAMH,KAAI,KAAK,SAAS;AAExB,SAAK,OAAO,EAAE,IAAI,SAASA,KAAI,CAAC;AAEhC,WAAO;AAAA,EACT;AAEO,WAAS,aAAa,SAAS;AACpC,cAAU,aAAa,OAAO;AAC9B,YAAQ,OAAO,IAAI;AACnB,WAAO;AAAA,EACT;AAEO,WAASI,aAAY,SAAS;AACnC,cAAU,aAAa,OAAO;AAC9B,YAAQ,MAAM,IAAI;AAClB,WAAO;AAAA,EACT;AAEA,kBAAgB,OAAO;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAAF;AAAA,IACA,OAAAC;AAAA,IACA;AAAA,IACA,aAAAC;AAAA,EACF,CAAC;;;AChHM,MAAM,gBACX;AAGK,MAAMC,OAAM;AAGZ,MAAM,MAAM;AAGZ,MAAMC,aAAY;AAGlB,MAAM,aAAa;AAGnB,MAAM,aAAa;AAGnB,MAAM,QAAQ;AAGd,MAAM,QAAQ;AAGd,MAAM,UAAU;AAGhB,MAAMC,YAAW;AAGjB,MAAM,UAAU;AAGhB,MAAM,YAAY;AAGlB,MAAM,eAAe;;;AClCrB,WAAS,UAAU;AACxB,UAAMC,QAAO,KAAK,KAAK,OAAO;AAC9B,WAAOA,SAAQ,OAAO,CAAC,IAAIA,MAAK,KAAK,EAAE,MAAM,SAAS;AAAA,EACxD;AAGO,WAAS,SAASC,OAAM;AAC7B,WAAO,KAAK,QAAQ,EAAE,QAAQA,KAAI,MAAM;AAAA,EAC1C;AAGO,WAAS,SAASA,OAAM;AAC7B,QAAI,CAAC,KAAK,SAASA,KAAI,GAAG;AACxB,YAAMC,SAAQ,KAAK,QAAQ;AAC3B,MAAAA,OAAM,KAAKD,KAAI;AACf,WAAK,KAAK,SAASC,OAAM,KAAK,GAAG,CAAC;AAAA,IACpC;AAEA,WAAO;AAAA,EACT;AAGO,WAAS,YAAYD,OAAM;AAChC,QAAI,KAAK,SAASA,KAAI,GAAG;AACvB,WAAK;AAAA,QACH;AAAA,QACA,KAAK,QAAQ,EACV,OAAO,SAAUE,IAAG;AACnB,iBAAOA,OAAMF;AAAA,QACf,CAAC,EACA,KAAK,GAAG;AAAA,MACb;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAGO,WAASG,aAAYH,OAAM;AAChC,WAAO,KAAK,SAASA,KAAI,IAAI,KAAK,YAAYA,KAAI,IAAI,KAAK,SAASA,KAAI;AAAA,EAC1E;AAEA,kBAAgB,OAAO;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAAG;AAAA,EACF,CAAC;;;AChDM,WAASC,KAAI,OAAO,KAAK;AAC9B,UAAM,MAAM,CAAC;AACb,QAAI,UAAU,WAAW,GAAG;AAE1B,WAAK,KAAK,MAAM,QACb,MAAM,SAAS,EACf,OAAO,SAAU,IAAI;AACpB,eAAO,CAAC,CAAC,GAAG;AAAA,MACd,CAAC,EACA,QAAQ,SAAU,IAAI;AACrB,cAAMC,KAAI,GAAG,MAAM,SAAS;AAC5B,YAAIA,GAAE,CAAC,CAAC,IAAIA,GAAE,CAAC;AAAA,MACjB,CAAC;AACH,aAAO;AAAA,IACT;AAEA,QAAI,UAAU,SAAS,GAAG;AAExB,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,mBAAWC,SAAQ,OAAO;AACxB,gBAAM,QAAQA;AACd,cAAIA,KAAI,IAAI,KAAK,KAAK,MAAM,iBAAiB,KAAK;AAAA,QACpD;AACA,eAAO;AAAA,MACT;AAGA,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO,KAAK,KAAK,MAAM,iBAAiB,KAAK;AAAA,MAC/C;AAGA,UAAI,OAAO,UAAU,UAAU;AAC7B,mBAAWA,SAAQ,OAAO;AAExB,eAAK,KAAK,MAAM;AAAA,YACdA;AAAA,YACA,MAAMA,KAAI,KAAK,QAAQ,QAAQ,KAAK,MAAMA,KAAI,CAAC,IAAI,KAAK,MAAMA,KAAI;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,QAAI,UAAU,WAAW,GAAG;AAC1B,WAAK,KAAK,MAAM;AAAA,QACd;AAAA,QACA,OAAO,QAAQ,QAAQ,KAAK,GAAG,IAAI,KAAK;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAGO,WAAS,OAAO;AACrB,WAAO,KAAK,IAAI,WAAW,EAAE;AAAA,EAC/B;AAGO,WAASC,QAAO;AACrB,WAAO,KAAK,IAAI,WAAW,MAAM;AAAA,EACnC;AAGO,WAAS,UAAU;AACxB,WAAO,KAAK,IAAI,SAAS,MAAM;AAAA,EACjC;AAEA,kBAAgB,OAAO;AAAA,IACrB,KAAAH;AAAA,IACA;AAAA,IACA,MAAAG;AAAA,IACA;AAAA,EACF,CAAC;;;AC1EM,WAAS,KAAKC,IAAGC,IAAGC,IAAG;AAC5B,QAAIF,MAAK,MAAM;AAEb,aAAO,KAAK;AAAA,QACVG;AAAA,UACE;AAAA,YACE,KAAK,KAAK;AAAA,YACV,CAAC,OAAO,GAAG,SAAS,QAAQ,OAAO,MAAM;AAAA,UAC3C;AAAA,UACA,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,WAAWH,cAAa,OAAO;AAC7B,YAAMI,QAAO,CAAC;AACd,iBAAWC,QAAOL,IAAG;AACnB,QAAAI,MAAKC,IAAG,IAAI,KAAK,KAAKA,IAAG;AAAA,MAC3B;AACA,aAAOD;AAAA,IACT,WAAW,OAAOJ,OAAM,UAAU;AAChC,WAAKC,MAAKD,IAAG;AACX,aAAK,KAAKC,IAAGD,GAAEC,EAAC,CAAC;AAAA,MACnB;AAAA,IACF,WAAW,UAAU,SAAS,GAAG;AAC/B,UAAI;AACF,eAAO,KAAK,MAAM,KAAK,KAAK,UAAUD,EAAC,CAAC;AAAA,MAC1C,SAASM,IAAP;AACA,eAAO,KAAK,KAAK,UAAUN,EAAC;AAAA,MAC9B;AAAA,IACF,OAAO;AACL,WAAK;AAAA,QACH,UAAUA;AAAA,QACVC,OAAM,OACF,OACAC,OAAM,QAAQ,OAAOD,OAAM,YAAY,OAAOA,OAAM,WAClDA,KACA,KAAK,UAAUA,EAAC;AAAA,MACxB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,kBAAgB,OAAO,EAAE,KAAK,CAAC;;;AC3CxB,WAAS,SAASM,IAAGC,IAAG;AAE7B,QAAI,OAAO,UAAU,CAAC,MAAM,UAAU;AACpC,iBAAWC,QAAOF,IAAG;AACnB,aAAK,SAASE,MAAKF,GAAEE,IAAG,CAAC;AAAA,MAC3B;AAAA,IACF,WAAW,UAAU,WAAW,GAAG;AAEjC,aAAO,KAAK,OAAO,EAAEF,EAAC;AAAA,IACxB,OAAO;AAEL,WAAK,OAAO,EAAEA,EAAC,IAAIC;AAAA,IACrB;AAEA,WAAO;AAAA,EACT;AAGO,WAAS,SAAS;AACvB,QAAI,UAAU,WAAW,GAAG;AAC1B,WAAK,UAAU,CAAC;AAAA,IAClB,OAAO;AACL,eAASE,KAAI,UAAU,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAC9C,eAAO,KAAK,OAAO,EAAE,UAAUA,EAAC,CAAC;AAAA,MACnC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAKO,WAAS,SAAS;AACvB,WAAQ,KAAK,UAAU,KAAK,WAAW,CAAC;AAAA,EAC1C;AAEA,kBAAgB,OAAO,EAAE,UAAU,QAAQ,OAAO,CAAC;;;ACrCnD,WAAS,YAAYC,MAAK;AACxB,WAAOA,KAAI,WAAW,IAClB;AAAA,MACE;AAAA,MACAA,KAAI,UAAU,GAAG,CAAC;AAAA,MAClBA,KAAI,UAAU,GAAG,CAAC;AAAA,MAClBA,KAAI,UAAU,GAAG,CAAC;AAAA,MAClBA,KAAI,UAAU,GAAG,CAAC;AAAA,MAClBA,KAAI,UAAU,GAAG,CAAC;AAAA,MAClBA,KAAI,UAAU,GAAG,CAAC;AAAA,IACpB,EAAE,KAAK,EAAE,IACTA;AAAA,EACN;AAEA,WAAS,aAAa,WAAW;AAC/B,UAAM,UAAU,KAAK,MAAM,SAAS;AACpC,UAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,OAAO,CAAC;AAClD,UAAMA,OAAM,QAAQ,SAAS,EAAE;AAC/B,WAAOA,KAAI,WAAW,IAAI,MAAMA,OAAMA;AAAA,EACxC;AAEA,WAASC,IAAG,QAAQ,OAAO;AACzB,aAASC,KAAI,MAAM,QAAQA,QAAO;AAChC,UAAI,OAAO,MAAMA,EAAC,CAAC,KAAK,MAAM;AAC5B,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,cAAcC,IAAGC,IAAG;AAC3B,UAAMC,UAASJ,IAAGE,IAAG,KAAK,IACtB,EAAE,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAI,GAAG,OAAO,MAAM,IACjDF,IAAGE,IAAG,KAAK,IACT,EAAE,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAI,GAAG,OAAO,MAAM,IACjDF,IAAGE,IAAG,KAAK,IACT,EAAE,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAI,GAAG,OAAO,MAAM,IACjDF,IAAGE,IAAG,KAAK,IACT,EAAE,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAI,GAAG,OAAO,MAAM,IACjDF,IAAGE,IAAG,KAAK,IACT,EAAE,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAI,GAAG,OAAO,MAAM,IACjDF,IAAGE,IAAG,MAAM,IACV,EAAE,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,IAAIA,GAAE,GAAG,OAAO,OAAO,IACpD,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,MAAM;AAElD,IAAAE,QAAO,QAAQD,MAAKC,QAAO;AAC3B,WAAOA;AAAA,EACT;AAEA,WAAS,SAAS,OAAO;AACvB,QAAI,UAAU,SAAS,UAAU,SAAS,UAAU,OAAO;AACzD,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,SAASC,IAAGC,IAAGC,IAAG;AACzB,QAAIA,KAAI;AAAG,MAAAA,MAAK;AAChB,QAAIA,KAAI;AAAG,MAAAA,MAAK;AAChB,QAAIA,KAAI,IAAI;AAAG,aAAOF,MAAKC,KAAID,MAAK,IAAIE;AACxC,QAAIA,KAAI,IAAI;AAAG,aAAOD;AACtB,QAAIC,KAAI,IAAI;AAAG,aAAOF,MAAKC,KAAID,OAAM,IAAI,IAAIE,MAAK;AAClD,WAAOF;AAAA,EACT;AAEA,MAAqBG,SAArB,MAA2B;AAAA,IACzB,eAAe,QAAQ;AACrB,WAAK,KAAK,GAAG,MAAM;AAAA,IACrB;AAAA;AAAA,IAGA,OAAO,QAAQC,QAAO;AACpB,aACEA,WAAUA,kBAAiBD,UAAS,KAAK,MAAMC,MAAK,KAAK,KAAK,KAAKA,MAAK;AAAA,IAE5E;AAAA;AAAA,IAGA,OAAO,MAAMA,QAAO;AAClB,aACEA,UACA,OAAOA,OAAM,MAAM,YACnB,OAAOA,OAAM,MAAM,YACnB,OAAOA,OAAM,MAAM;AAAA,IAEvB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAAO,OAAO,WAAWF,IAAG;AAEjC,YAAM,EAAE,QAAQ,OAAAG,QAAO,KAAK,IAAI,GAAG,IAAI;AAGvC,UAAI,SAAS,WAAW;AACtB,cAAMC,MAAK,KAAK,MAAM,OAAO,IAAI;AACjC,cAAMC,MAAK,KAAK,MAAM,OAAO,IAAI;AACjC,cAAMC,KAAI,MAAM,OAAO;AACvB,cAAMJ,SAAQ,IAAID,OAAMG,IAAGC,IAAGC,IAAG,KAAK;AACtC,eAAOJ;AAAA,MACT,WAAW,SAAS,QAAQ;AAC1B,QAAAF,KAAIA,MAAK,OAAO,OAAO,IAAIA;AAC3B,cAAMO,KAAIJ,OAAM,KAAK,IAAK,IAAI,KAAKH,KAAK,MAAM,IAAI,IAAI,GAAG;AACzD,cAAMQ,KAAIL,OAAM,KAAK,IAAK,IAAI,KAAKH,KAAK,MAAM,GAAG,IAAI,GAAG;AACxD,cAAMJ,KAAIO,OAAM,MAAM,IAAK,IAAI,KAAKH,KAAK,MAAM,GAAG,IAAI,GAAG;AACzD,cAAME,SAAQ,IAAID,OAAMM,IAAGC,IAAGZ,EAAC;AAC/B,eAAOM;AAAA,MACT,WAAW,SAAS,UAAU;AAC5B,cAAME,MAAK,KAAK,MAAM,OAAO,IAAI;AACjC,cAAMC,MAAK,KAAK,KAAK,OAAO,IAAI;AAChC,cAAMC,KAAI,MAAM,OAAO;AACvB,cAAMJ,SAAQ,IAAID,OAAMG,IAAGC,IAAGC,IAAG,KAAK;AACtC,eAAOJ;AAAA,MACT,WAAW,SAAS,QAAQ;AAC1B,cAAME,KAAI,KAAK,KAAK,OAAO;AAC3B,cAAMC,MAAK,MAAM,MAAM,OAAO,IAAI;AAClC,cAAMC,KAAI,MAAM,OAAO;AACvB,cAAMJ,SAAQ,IAAID,OAAMG,IAAGC,IAAGC,IAAG,KAAK;AACtC,eAAOJ;AAAA,MACT,WAAW,SAAS,OAAO;AACzB,cAAMK,KAAI,MAAM,OAAO;AACvB,cAAMC,KAAI,MAAM,OAAO;AACvB,cAAMZ,KAAI,MAAM,OAAO;AACvB,cAAMM,SAAQ,IAAID,OAAMM,IAAGC,IAAGZ,EAAC;AAC/B,eAAOM;AAAA,MACT,WAAW,SAAS,OAAO;AACzB,cAAME,KAAI,MAAM,OAAO;AACvB,cAAMT,KAAI,MAAM,OAAO,IAAI;AAC3B,cAAMC,KAAI,MAAM,OAAO,IAAI;AAC3B,cAAMM,SAAQ,IAAID,OAAMG,IAAGT,IAAGC,IAAG,KAAK;AACtC,eAAOM;AAAA,MACT,WAAW,SAAS,QAAQ;AAC1B,cAAM,OAAO,MAAM,OAAO;AAC1B,cAAMA,SAAQ,IAAID,OAAM,MAAM,MAAM,IAAI;AACxC,eAAOC;AAAA,MACT,OAAO;AACL,cAAM,IAAI,MAAM,+BAA+B;AAAA,MACjD;AAAA,IACF;AAAA;AAAA,IAGA,OAAO,KAAKA,QAAO;AACjB,aAAO,OAAOA,WAAU,aAAa,MAAM,KAAKA,MAAK,KAAK,MAAM,KAAKA,MAAK;AAAA,IAC5E;AAAA,IAEA,OAAO;AAEL,YAAM,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI;AAChC,YAAM,CAACK,IAAGC,IAAGZ,EAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAACa,OAAMA,KAAI,GAAG;AAGjD,YAAMC,KAAI,KAAK,IAAI,IAAIH,IAAG,IAAIC,IAAG,IAAIZ,EAAC;AAEtC,UAAIc,OAAM,GAAG;AAEX,eAAO,IAAIT,OAAM,GAAG,GAAG,GAAG,GAAG,MAAM;AAAA,MACrC;AAEA,YAAMI,MAAK,IAAIE,KAAIG,OAAM,IAAIA;AAC7B,YAAMC,MAAK,IAAIH,KAAIE,OAAM,IAAIA;AAC7B,YAAME,MAAK,IAAIhB,KAAIc,OAAM,IAAIA;AAG7B,YAAMR,SAAQ,IAAID,OAAMI,IAAGM,IAAGC,IAAGF,IAAG,MAAM;AAC1C,aAAOR;AAAA,IACT;AAAA,IAEA,MAAM;AAEJ,YAAM,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI;AAChC,YAAM,CAACK,IAAGC,IAAGZ,EAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAACa,OAAMA,KAAI,GAAG;AAGjD,YAAMI,OAAM,KAAK,IAAIN,IAAGC,IAAGZ,EAAC;AAC5B,YAAMkB,OAAM,KAAK,IAAIP,IAAGC,IAAGZ,EAAC;AAC5B,YAAMQ,MAAKS,OAAMC,QAAO;AAGxB,YAAM,SAASD,SAAQC;AAGvB,YAAM,QAAQD,OAAMC;AACpB,YAAMC,KAAI,SACN,IACAX,KAAI,MACF,SAAS,IAAIS,OAAMC,QACnB,SAASD,OAAMC;AACrB,YAAMR,KAAI,SACN,IACAO,SAAQN,OACJC,KAAIZ,MAAK,SAASY,KAAIZ,KAAI,IAAI,MAAM,IACtCiB,SAAQL,OACJZ,KAAIW,MAAK,QAAQ,KAAK,IACxBM,SAAQjB,OACJW,KAAIC,MAAK,QAAQ,KAAK,IACxB;AAGV,YAAMN,SAAQ,IAAID,OAAM,MAAMK,IAAG,MAAMS,IAAG,MAAMX,IAAG,KAAK;AACxD,aAAOF;AAAA,IACT;AAAA,IAEA,KAAKP,KAAI,GAAGC,KAAI,GAAGS,KAAI,GAAGW,KAAI,GAAG,QAAQ,OAAO;AAE9C,MAAArB,KAAI,CAACA,KAAI,IAAIA;AAGb,UAAI,KAAK,OAAO;AACd,mBAAW,aAAa,KAAK,OAAO;AAClC,iBAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAAA,QACnC;AAAA,MACF;AAEA,UAAI,OAAOA,OAAM,UAAU;AAEzB,gBAAQ,OAAOqB,OAAM,WAAWA,KAAI;AACpC,QAAAA,KAAI,OAAOA,OAAM,WAAW,IAAIA;AAGhC,eAAO,OAAO,MAAM,EAAE,IAAIrB,IAAG,IAAIC,IAAG,IAAIS,IAAG,IAAIW,IAAG,MAAM,CAAC;AAAA,MAE3D,WAAWrB,cAAa,OAAO;AAC7B,aAAK,QAAQC,OAAM,OAAOD,GAAE,CAAC,MAAM,WAAWA,GAAE,CAAC,IAAIA,GAAE,CAAC,MAAM;AAC9D,eAAO,OAAO,MAAM,EAAE,IAAIA,GAAE,CAAC,GAAG,IAAIA,GAAE,CAAC,GAAG,IAAIA,GAAE,CAAC,GAAG,IAAIA,GAAE,CAAC,KAAK,EAAE,CAAC;AAAA,MACrE,WAAWA,cAAa,QAAQ;AAE9B,cAAM,SAAS,cAAcA,IAAGC,EAAC;AACjC,eAAO,OAAO,MAAM,MAAM;AAAA,MAC5B,WAAW,OAAOD,OAAM,UAAU;AAChC,YAAI,MAAM,KAAKA,EAAC,GAAG;AACjB,gBAAM,eAAeA,GAAE,QAAQ,YAAY,EAAE;AAC7C,gBAAM,CAACsB,KAAIC,KAAIC,GAAE,IAAI,IAClB,KAAK,YAAY,EACjB,MAAM,GAAG,CAAC,EACV,IAAI,CAACV,OAAM,SAASA,EAAC,CAAC;AACzB,iBAAO,OAAO,MAAM,EAAE,IAAAQ,KAAI,IAAAC,KAAI,IAAAC,KAAI,IAAI,GAAG,OAAO,MAAM,CAAC;AAAA,QACzD,WAAW,MAAM,KAAKxB,EAAC,GAAG;AACxB,gBAAMyB,YAAW,CAACX,OAAM,SAASA,IAAG,EAAE;AACtC,gBAAM,CAAC,EAAEQ,KAAIC,KAAIC,GAAE,IAAI3B,KAAI,KAAK,YAAYG,EAAC,CAAC,EAAE,IAAIyB,SAAQ;AAC5D,iBAAO,OAAO,MAAM,EAAE,IAAAH,KAAI,IAAAC,KAAI,IAAAC,KAAI,IAAI,GAAG,OAAO,MAAM,CAAC;AAAA,QACzD;AAAO,gBAAM,MAAM,kDAAkD;AAAA,MACvE;AAGA,YAAM,EAAE,IAAI,IAAI,IAAI,IAAAE,IAAG,IAAI;AAC3B,YAAM,aACJ,KAAK,UAAU,QACX,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IACtB,KAAK,UAAU,QACb,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IACtB,KAAK,UAAU,QACb,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IACtB,KAAK,UAAU,QACb,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IACtB,KAAK,UAAU,QACb,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IACtB,KAAK,UAAU,SACb,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAGA,IAAG,IAC7B,CAAC;AACjB,aAAO,OAAO,MAAM,UAAU;AAAA,IAChC;AAAA,IAEA,MAAM;AAEJ,YAAM,EAAE,GAAAC,IAAG,GAAAV,IAAG,GAAAW,GAAE,IAAI,KAAK,IAAI;AAG7B,YAAMnB,KAAI,MAAMQ,KAAI;AACpB,YAAMjB,KAAI,OAAO2B,KAAIV;AACrB,YAAMhB,KAAI,OAAOgB,KAAIW;AAGrB,YAAMrB,SAAQ,IAAID,OAAMG,IAAGT,IAAGC,IAAG,KAAK;AACtC,aAAOM;AAAA,IACT;AAAA,IAEA,MAAM;AAEJ,YAAM,EAAE,GAAAE,IAAG,GAAAT,IAAG,GAAAC,GAAE,IAAI,KAAK,IAAI;AAG7B,YAAMS,KAAI,KAAK,KAAKV,MAAK,IAAIC,MAAK,CAAC;AACnC,UAAIU,KAAK,MAAM,KAAK,MAAMV,IAAGD,EAAC,IAAK,KAAK;AACxC,UAAIW,KAAI,GAAG;AACT,QAAAA,MAAK;AACL,QAAAA,KAAI,MAAMA;AAAA,MACZ;AAGA,YAAMJ,SAAQ,IAAID,OAAMG,IAAGC,IAAGC,IAAG,KAAK;AACtC,aAAOJ;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM;AACJ,UAAI,KAAK,UAAU,OAAO;AACxB,eAAO;AAAA,MACT,WAAW,SAAS,KAAK,KAAK,GAAG;AAE/B,YAAI,EAAE,GAAAoB,IAAG,GAAAV,IAAG,GAAAW,GAAE,IAAI;AAClB,YAAI,KAAK,UAAU,SAAS,KAAK,UAAU,OAAO;AAEhD,cAAI,EAAE,GAAAnB,IAAG,GAAAT,IAAG,GAAAC,GAAE,IAAI;AAClB,cAAI,KAAK,UAAU,OAAO;AACxB,kBAAM,EAAE,GAAAS,IAAG,GAAAC,GAAE,IAAI;AACjB,kBAAM,OAAO,KAAK,KAAK;AACvB,YAAAX,KAAIU,KAAI,KAAK,IAAI,OAAOC,EAAC;AACzB,YAAAV,KAAIS,KAAI,KAAK,IAAI,OAAOC,EAAC;AAAA,UAC3B;AAGA,gBAAM,MAAMF,KAAI,MAAM;AACtB,gBAAM,KAAKT,KAAI,MAAM;AACrB,gBAAM,KAAK,KAAKC,KAAI;AAGpB,gBAAM,KAAK,KAAK;AAChB,gBAAM,KAAK;AACX,gBAAM,KAAK;AACX,UAAA0B,KAAI,WAAW,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,MAAM;AACpD,UAAAV,KAAI,KAAO,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,MAAM;AAChD,UAAAW,KAAI,WAAW,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,MAAM;AAAA,QACtD;AAGA,cAAM,KAAKD,KAAI,SAASV,KAAI,UAAUW,KAAI;AAC1C,cAAM,KAAKD,KAAI,UAAUV,KAAI,SAASW,KAAI;AAC1C,cAAM,KAAKD,KAAI,SAASV,KAAI,SAASW,KAAI;AAGzC,cAAM,MAAM,KAAK;AACjB,cAAM,KAAK;AACX,cAAMhB,KAAI,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ;AAC/D,cAAMC,KAAI,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ;AAC/D,cAAMZ,KAAI,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ;AAG/D,cAAMM,SAAQ,IAAID,OAAM,MAAMM,IAAG,MAAMC,IAAG,MAAMZ,EAAC;AACjD,eAAOM;AAAA,MACT,WAAW,KAAK,UAAU,OAAO;AAG/B,YAAI,EAAE,GAAAI,IAAG,GAAAS,IAAG,GAAAX,GAAE,IAAI;AAClB,QAAAE,MAAK;AACL,QAAAS,MAAK;AACL,QAAAX,MAAK;AAGL,YAAIW,OAAM,GAAG;AACX,UAAAX,MAAK;AACL,gBAAMF,SAAQ,IAAID,OAAMG,IAAGA,IAAGA,EAAC;AAC/B,iBAAOF;AAAA,QACT;AAGA,cAAMH,KAAIK,KAAI,MAAMA,MAAK,IAAIW,MAAKX,KAAIW,KAAIX,KAAIW;AAC9C,cAAMjB,KAAI,IAAIM,KAAIL;AAGlB,cAAMQ,KAAI,MAAM,SAAST,IAAGC,IAAGO,KAAI,IAAI,CAAC;AACxC,cAAME,KAAI,MAAM,SAASV,IAAGC,IAAGO,EAAC;AAChC,cAAMV,KAAI,MAAM,SAASE,IAAGC,IAAGO,KAAI,IAAI,CAAC;AAGxC,cAAMJ,SAAQ,IAAID,OAAMM,IAAGC,IAAGZ,EAAC;AAC/B,eAAOM;AAAA,MACT,WAAW,KAAK,UAAU,QAAQ;AAGhC,cAAM,EAAE,GAAAG,IAAG,GAAAM,IAAG,GAAAC,IAAG,GAAAF,GAAE,IAAI;AAGvB,cAAMH,KAAI,OAAO,IAAI,KAAK,IAAI,GAAGF,MAAK,IAAIK,MAAKA,EAAC;AAChD,cAAMF,KAAI,OAAO,IAAI,KAAK,IAAI,GAAGG,MAAK,IAAID,MAAKA,EAAC;AAChD,cAAMd,KAAI,OAAO,IAAI,KAAK,IAAI,GAAGgB,MAAK,IAAIF,MAAKA,EAAC;AAGhD,cAAMR,SAAQ,IAAID,OAAMM,IAAGC,IAAGZ,EAAC;AAC/B,eAAOM;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,UAAU;AACR,YAAM,EAAE,IAAI,IAAI,IAAI,IAAAmB,KAAI,MAAM,IAAI;AAClC,aAAO,CAAC,IAAI,IAAI,IAAIA,KAAI,KAAK;AAAA,IAC/B;AAAA,IAEA,QAAQ;AACN,YAAM,CAACd,IAAGC,IAAGZ,EAAC,IAAI,KAAK,SAAS,EAAE,IAAI,YAAY;AAClD,aAAO,IAAIW,KAAIC,KAAIZ;AAAA,IACrB;AAAA,IAEA,QAAQ;AACN,YAAM,CAAC,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS;AACnC,YAAM,SAAS,OAAO,MAAM,MAAM;AAClC,aAAO;AAAA,IACT;AAAA,IAEA,WAAW;AACT,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,IAEA,MAAM;AAEJ,YAAM,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI;AAClD,YAAM,CAACW,IAAGC,IAAGZ,EAAC,IAAI,CAAC,MAAM,MAAM,IAAI,EAAE,IAAI,CAACa,OAAMA,KAAI,GAAG;AAGvD,YAAM,KAAKF,KAAI,UAAU,KAAK,KAAKA,KAAI,SAAS,OAAO,GAAG,IAAIA,KAAI;AAClE,YAAM,KAAKC,KAAI,UAAU,KAAK,KAAKA,KAAI,SAAS,OAAO,GAAG,IAAIA,KAAI;AAClE,YAAM,KAAKZ,KAAI,UAAU,KAAK,KAAKA,KAAI,SAAS,OAAO,GAAG,IAAIA,KAAI;AAGlE,YAAM,MAAM,KAAK,SAAS,KAAK,SAAS,KAAK,UAAU;AACvD,YAAM,MAAM,KAAK,SAAS,KAAK,SAAS,KAAK,UAAU;AACvD,YAAM,MAAM,KAAK,SAAS,KAAK,SAAS,KAAK,UAAU;AAGvD,YAAM0B,KAAI,KAAK,UAAW,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,QAAQ,KAAK,KAAK;AAClE,YAAMV,KAAI,KAAK,UAAW,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,QAAQ,KAAK,KAAK;AAClE,YAAMW,KAAI,KAAK,UAAW,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,QAAQ,KAAK,KAAK;AAGlE,YAAMrB,SAAQ,IAAID,OAAMqB,IAAGV,IAAGW,IAAG,KAAK;AACtC,aAAOrB;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAMA,WAAW;AACT,YAAM,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI;AAChC,YAAM,EAAE,KAAAW,MAAK,KAAAC,MAAK,OAAAX,OAAM,IAAI;AAC5B,YAAMqB,UAAS,CAACf,OAAMI,KAAI,GAAGC,KAAIX,OAAMM,EAAC,GAAG,GAAG,CAAC;AAC/C,aAAO,CAAC,IAAI,IAAI,EAAE,EAAE,IAAIe,OAAM;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,EAKF;;;AC/bA,MAAqB,QAArB,MAA2B;AAAA;AAAA,IAEzB,eAAe,MAAM;AACnB,WAAK,KAAK,GAAG,IAAI;AAAA,IACnB;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB;AAAA,IAEA,KAAKC,IAAGC,IAAG;AACT,YAAM,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAG1B,YAAM,SAAS,MAAM,QAAQD,EAAC,IAC1B,EAAE,GAAGA,GAAE,CAAC,GAAG,GAAGA,GAAE,CAAC,EAAE,IACnB,OAAOA,OAAM,WACX,EAAE,GAAGA,GAAE,GAAG,GAAGA,GAAE,EAAE,IACjB,EAAE,GAAGA,IAAG,GAAGC,GAAE;AAGnB,WAAK,IAAI,OAAO,KAAK,OAAO,KAAK,IAAI,OAAO;AAC5C,WAAK,IAAI,OAAO,KAAK,OAAO,KAAK,IAAI,OAAO;AAE5C,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,aAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AAAA,IACxB;AAAA,IAEA,UAAUC,IAAG;AACX,aAAO,KAAK,MAAM,EAAE,WAAWA,EAAC;AAAA,IAClC;AAAA;AAAA,IAGA,WAAWA,IAAG;AACZ,UAAI,CAAC,OAAO,aAAaA,EAAC,GAAG;AAC3B,QAAAA,KAAI,IAAI,OAAOA,EAAC;AAAA,MAClB;AAEA,YAAM,EAAE,GAAAF,IAAG,GAAAC,GAAE,IAAI;AAGjB,WAAK,IAAIC,GAAE,IAAIF,KAAIE,GAAE,IAAID,KAAIC,GAAE;AAC/B,WAAK,IAAIA,GAAE,IAAIF,KAAIE,GAAE,IAAID,KAAIC,GAAE;AAE/B,aAAO;AAAA,IACT;AAAA,EACF;AAEO,WAAS,MAAMF,IAAGC,IAAG;AAC1B,WAAO,IAAI,MAAMD,IAAGC,EAAC,EAAE,WAAW,KAAK,UAAU,EAAE,SAAS,CAAC;AAAA,EAC/D;;;AClDA,WAAS,YAAYE,IAAGC,IAAG,WAAW;AACpC,WAAO,KAAK,IAAIA,KAAID,EAAC,KAAK,aAAa;AAAA,EACzC;AAEA,MAAqB,SAArB,MAA4B;AAAA,IAC1B,eAAe,MAAM;AACnB,WAAK,KAAK,GAAG,IAAI;AAAA,IACnB;AAAA,IAEA,OAAO,iBAAiBE,IAAG;AAEzB,YAAM,WAAWA,GAAE,SAAS,UAAUA,GAAE,SAAS;AACjD,YAAM,QAAQA,GAAE,SAAS,YAAYA,GAAE,SAAS,OAAO,KAAK;AAC5D,YAAM,QAAQA,GAAE,SAAS,YAAYA,GAAE,SAAS,OAAO,KAAK;AAC5D,YAAM,QACJA,GAAE,QAAQA,GAAE,KAAK,SACbA,GAAE,KAAK,CAAC,IACR,SAASA,GAAE,IAAI,IACbA,GAAE,OACF,SAASA,GAAE,KAAK,IACdA,GAAE,QACF;AACV,YAAM,QACJA,GAAE,QAAQA,GAAE,KAAK,SACbA,GAAE,KAAK,CAAC,IACR,SAASA,GAAE,IAAI,IACbA,GAAE,OACF,SAASA,GAAE,KAAK,IACdA,GAAE,QACF;AACV,YAAM,SACJA,GAAE,SAASA,GAAE,MAAM,SACfA,GAAE,MAAM,CAAC,IAAI,QACb,SAASA,GAAE,KAAK,IACdA,GAAE,QAAQ,QACV,SAASA,GAAE,MAAM,IACfA,GAAE,SAAS,QACX;AACV,YAAM,SACJA,GAAE,SAASA,GAAE,MAAM,SACfA,GAAE,MAAM,CAAC,IAAI,QACb,SAASA,GAAE,KAAK,IACdA,GAAE,QAAQ,QACV,SAASA,GAAE,MAAM,IACfA,GAAE,SAAS,QACX;AACV,YAAM,QAAQA,GAAE,SAAS;AACzB,YAAMC,SAAQD,GAAE,UAAUA,GAAE,SAAS;AACrC,YAAM,SAAS,IAAI;AAAA,QACjBA,GAAE,UAAUA,GAAE,UAAUA,GAAE,MAAMA,GAAE;AAAA,QAClCA,GAAE,MAAMA,GAAE;AAAA,MACZ;AACA,YAAM,KAAK,OAAO;AAClB,YAAM,KAAK,OAAO;AAElB,YAAME,YAAW,IAAI;AAAA,QACnBF,GAAE,YAAYA,GAAE,MAAMA,GAAE,aAAa;AAAA,QACrCA,GAAE,MAAMA,GAAE,aAAa;AAAA,MACzB;AACA,YAAM,KAAKE,UAAS;AACpB,YAAM,KAAKA,UAAS;AACpB,YAAM,YAAY,IAAI;AAAA,QACpBF,GAAE,aAAaA,GAAE,MAAMA,GAAE;AAAA,QACzBA,GAAE,MAAMA,GAAE;AAAA,MACZ;AACA,YAAM,KAAK,UAAU;AACrB,YAAM,KAAK,UAAU;AACrB,YAAM,WAAW,IAAI;AAAA,QACnBA,GAAE,YAAYA,GAAE,MAAMA,GAAE;AAAA,QACxBA,GAAE,MAAMA,GAAE;AAAA,MACZ;AACA,YAAMG,MAAK,SAAS;AACpB,YAAMC,MAAK,SAAS;AAGpB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAAH;AAAA,QACA,IAAAE;AAAA,QACA,IAAAC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO,UAAUN,IAAG;AAClB,aAAO,EAAE,GAAGA,GAAE,CAAC,GAAG,GAAGA,GAAE,CAAC,GAAG,GAAGA,GAAE,CAAC,GAAG,GAAGA,GAAE,CAAC,GAAG,GAAGA,GAAE,CAAC,GAAG,GAAGA,GAAE,CAAC,EAAE;AAAA,IAChE;AAAA,IAEA,OAAO,aAAaE,IAAG;AACrB,aACEA,GAAE,KAAK,QACPA,GAAE,KAAK,QACPA,GAAE,KAAK,QACPA,GAAE,KAAK,QACPA,GAAE,KAAK,QACPA,GAAE,KAAK;AAAA,IAEX;AAAA;AAAA,IAGA,OAAO,eAAeK,IAAGC,IAAGN,IAAG;AAE7B,YAAMF,KAAIO,GAAE,IAAIC,GAAE,IAAID,GAAE,IAAIC,GAAE;AAC9B,YAAMP,KAAIM,GAAE,IAAIC,GAAE,IAAID,GAAE,IAAIC,GAAE;AAC9B,YAAMC,KAAIF,GAAE,IAAIC,GAAE,IAAID,GAAE,IAAIC,GAAE;AAC9B,YAAME,KAAIH,GAAE,IAAIC,GAAE,IAAID,GAAE,IAAIC,GAAE;AAC9B,YAAMG,KAAIJ,GAAE,IAAIA,GAAE,IAAIC,GAAE,IAAID,GAAE,IAAIC,GAAE;AACpC,YAAMI,KAAIL,GAAE,IAAIA,GAAE,IAAIC,GAAE,IAAID,GAAE,IAAIC,GAAE;AAGpC,MAAAN,GAAE,IAAIF;AACN,MAAAE,GAAE,IAAID;AACN,MAAAC,GAAE,IAAIO;AACN,MAAAP,GAAE,IAAIQ;AACN,MAAAR,GAAE,IAAIS;AACN,MAAAT,GAAE,IAAIU;AAEN,aAAOV;AAAA,IACT;AAAA,IAEA,OAAOW,KAAIC,KAAIC,SAAQ;AACrB,aAAO,KAAK,MAAM,EAAE,QAAQF,KAAIC,KAAIC,OAAM;AAAA,IAC5C;AAAA;AAAA,IAGA,QAAQF,KAAIC,KAAIC,SAAQ;AACtB,YAAMC,MAAKH,OAAM;AACjB,YAAMI,MAAKH,OAAM;AACjB,aAAO,KAAK,WAAW,CAACE,KAAI,CAACC,GAAE,EAAE,WAAWF,OAAM,EAAE,WAAWC,KAAIC,GAAE;AAAA,IACvE;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,IAAI,OAAO,IAAI;AAAA,IACxB;AAAA;AAAA,IAGA,UAAUJ,MAAK,GAAGC,MAAK,GAAG;AAExB,YAAMd,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMQ,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AAGf,YAAM,cAAcZ,KAAIU,KAAIT,KAAIQ;AAChC,YAAM,MAAM,cAAc,IAAI,IAAI;AAIlC,YAAM,KAAK,MAAM,KAAK,KAAKT,KAAIA,KAAIC,KAAIA,EAAC;AACxC,YAAM,WAAW,KAAK,MAAM,MAAMA,IAAG,MAAMD,EAAC;AAC5C,YAAMG,SAAS,MAAM,KAAK,KAAM;AAChC,YAAM,KAAK,KAAK,IAAI,QAAQ;AAC5B,YAAM,KAAK,KAAK,IAAI,QAAQ;AAI5B,YAAM,OAAOH,KAAIS,KAAIR,KAAIS,MAAK;AAC9B,YAAM,KAAMD,KAAI,MAAO,MAAMT,KAAIC,OAAOS,KAAI,MAAO,MAAMT,KAAID;AAG7D,YAAM,KAAKW,KAAIE,MAAKA,MAAK,KAAK,KAAKC,OAAM,MAAM,KAAK,KAAK,KAAK;AAC9D,YAAM,KAAKF,KAAIE,MAAKD,MAAK,KAAK,KAAKC,OAAM,MAAM,KAAK,KAAK,KAAK;AAG9D,aAAO;AAAA;AAAA,QAEL,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQX;AAAA,QACR,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,SAASU;AAAA,QACT,SAASC;AAAA;AAAA,QAGT,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACV;AAAA,IACF;AAAA;AAAA,IAGA,OAAO,OAAO;AACZ,UAAI,UAAU;AAAM,eAAO;AAC3B,YAAM,OAAO,IAAI,OAAO,KAAK;AAC7B,aACE,YAAY,KAAK,GAAG,KAAK,CAAC,KAC1B,YAAY,KAAK,GAAG,KAAK,CAAC,KAC1B,YAAY,KAAK,GAAG,KAAK,CAAC,KAC1B,YAAY,KAAK,GAAG,KAAK,CAAC,KAC1B,YAAY,KAAK,GAAG,KAAK,CAAC,KAC1B,YAAY,KAAK,GAAG,KAAK,CAAC;AAAA,IAE9B;AAAA;AAAA,IAGA,KAAK,MAAM,QAAQ;AACjB,aAAO,KAAK,MAAM,EAAE,MAAM,MAAM,MAAM;AAAA,IACxC;AAAA,IAEA,MAAM,MAAM,QAAQ;AAClB,aAAO,SAAS,MACZ,KAAK,OAAO,IAAI,GAAG,QAAQ,CAAC,IAC5B,SAAS,MACP,KAAK,OAAO,GAAG,IAAI,GAAG,MAAM,IAC5B,KAAK,OAAO,IAAI,IAAI,MAAM,UAAU,IAAI;AAAA,IAChD;AAAA;AAAA,IAGA,KAAK,QAAQ;AACX,YAAM,OAAO,OAAO,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAGhD,eACE,kBAAkBI,WACd,OAAO,UAAU,IACjB,OAAO,WAAW,WAChB,OAAO,UAAU,OAAO,MAAM,SAAS,EAAE,IAAI,UAAU,CAAC,IACxD,MAAM,QAAQ,MAAM,IAClB,OAAO,UAAU,MAAM,IACvB,OAAO,WAAW,YAAY,OAAO,aAAa,MAAM,IACtD,SACA,OAAO,WAAW,WAChB,IAAI,OAAO,EAAE,UAAU,MAAM,IAC7B,UAAU,WAAW,IACnB,OAAO,UAAU,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,IACzC;AAGhB,WAAK,IAAI,OAAO,KAAK,OAAO,OAAO,IAAI,KAAK;AAC5C,WAAK,IAAI,OAAO,KAAK,OAAO,OAAO,IAAI,KAAK;AAC5C,WAAK,IAAI,OAAO,KAAK,OAAO,OAAO,IAAI,KAAK;AAC5C,WAAK,IAAI,OAAO,KAAK,OAAO,OAAO,IAAI,KAAK;AAC5C,WAAK,IAAI,OAAO,KAAK,OAAO,OAAO,IAAI,KAAK;AAC5C,WAAK,IAAI,OAAO,KAAK,OAAO,OAAO,IAAI,KAAK;AAE5C,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,aAAO,KAAK,MAAM,EAAE,SAAS;AAAA,IAC/B;AAAA;AAAA,IAGA,WAAW;AAET,YAAMlB,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMQ,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AAGf,YAAM,MAAMZ,KAAIU,KAAIT,KAAIQ;AACxB,UAAI,CAAC;AAAK,cAAM,IAAI,MAAM,mBAAmB,IAAI;AAGjD,YAAM,KAAKC,KAAI;AACf,YAAM,KAAK,CAACT,KAAI;AAChB,YAAM,KAAK,CAACQ,KAAI;AAChB,YAAM,KAAKT,KAAI;AAGf,YAAM,KAAK,EAAE,KAAKW,KAAI,KAAKC;AAC3B,YAAM,KAAK,EAAE,KAAKD,KAAI,KAAKC;AAG3B,WAAK,IAAI;AACT,WAAK,IAAI;AACT,WAAK,IAAI;AACT,WAAK,IAAI;AACT,WAAK,IAAI;AACT,WAAK,IAAI;AAET,aAAO;AAAA,IACT;AAAA,IAEA,UAAUG,SAAQ;AAChB,aAAO,KAAK,MAAM,EAAE,WAAWA,OAAM;AAAA,IACvC;AAAA,IAEA,WAAWA,SAAQ;AACjB,YAAMP,KAAI;AACV,YAAMD,KAAIQ,mBAAkB,SAASA,UAAS,IAAI,OAAOA,OAAM;AAE/D,aAAO,OAAO,eAAeR,IAAGC,IAAG,IAAI;AAAA,IACzC;AAAA;AAAA,IAGA,SAASO,SAAQ;AACf,aAAO,KAAK,MAAM,EAAE,UAAUA,OAAM;AAAA,IACtC;AAAA,IAEA,UAAUA,SAAQ;AAEhB,YAAMR,KAAI;AACV,YAAMC,KAAIO,mBAAkB,SAASA,UAAS,IAAI,OAAOA,OAAM;AAE/D,aAAO,OAAO,eAAeR,IAAGC,IAAG,IAAI;AAAA,IACzC;AAAA;AAAA,IAGA,OAAOA,IAAGK,KAAIC,KAAI;AAChB,aAAO,KAAK,MAAM,EAAE,QAAQN,IAAGK,KAAIC,GAAE;AAAA,IACvC;AAAA,IAEA,QAAQN,IAAGK,MAAK,GAAGC,MAAK,GAAG;AAEzB,MAAAN,KAAI,QAAQA,EAAC;AAEb,YAAM,MAAM,KAAK,IAAIA,EAAC;AACtB,YAAM,MAAM,KAAK,IAAIA,EAAC;AAEtB,YAAM,EAAE,GAAAR,IAAG,GAAAC,IAAG,GAAAQ,IAAG,GAAAC,IAAG,GAAAC,IAAG,GAAAC,GAAE,IAAI;AAE7B,WAAK,IAAIZ,KAAI,MAAMC,KAAI;AACvB,WAAK,IAAIA,KAAI,MAAMD,KAAI;AACvB,WAAK,IAAIS,KAAI,MAAMC,KAAI;AACvB,WAAK,IAAIA,KAAI,MAAMD,KAAI;AACvB,WAAK,IAAIE,KAAI,MAAMC,KAAI,MAAME,MAAK,MAAMD,MAAK,MAAMA;AACnD,WAAK,IAAID,KAAI,MAAMD,KAAI,MAAME,MAAK,MAAMC,MAAK,MAAMA;AAEnD,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,KAAK,MAAM,EAAE,OAAO,GAAG,SAAS;AAAA,IACzC;AAAA,IAEA,OAAOK,IAAGC,KAAID,IAAGN,MAAK,GAAGC,MAAK,GAAG;AAE/B,UAAI,UAAU,WAAW,GAAG;AAC1B,QAAAA,MAAKD;AACL,QAAAA,MAAKO;AACL,QAAAA,KAAID;AAAA,MACN;AAEA,YAAM,EAAE,GAAAnB,IAAG,GAAAC,IAAG,GAAAQ,IAAG,GAAAC,IAAG,GAAAC,IAAG,GAAAC,GAAE,IAAI;AAE7B,WAAK,IAAIZ,KAAImB;AACb,WAAK,IAAIlB,KAAImB;AACb,WAAK,IAAIX,KAAIU;AACb,WAAK,IAAIT,KAAIU;AACb,WAAK,IAAIT,KAAIQ,KAAIN,MAAKM,KAAIN;AAC1B,WAAK,IAAID,KAAIQ,KAAIN,MAAKM,KAAIN;AAE1B,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAMd,IAAGa,KAAIC,KAAI;AACf,aAAO,KAAK,MAAM,EAAE,OAAOd,IAAGa,KAAIC,GAAE;AAAA,IACtC;AAAA;AAAA,IAGA,OAAO,IAAID,MAAK,GAAGC,MAAK,GAAG;AACzB,YAAM,EAAE,GAAAd,IAAG,GAAAC,IAAG,GAAAQ,IAAG,GAAAC,IAAG,GAAAC,IAAG,GAAAC,GAAE,IAAI;AAE7B,WAAK,IAAIZ,KAAIC,KAAI;AACjB,WAAK,IAAIQ,KAAIC,KAAI;AACjB,WAAK,IAAIC,KAAIC,KAAI,KAAKE,MAAK;AAE3B,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,OAAO;AACL,aAAO,KAAK,MAAM,EAAE,MAAM,GAAG,SAAS;AAAA,IACxC;AAAA,IAEA,MAAMK,IAAGC,KAAID,IAAGN,MAAK,GAAGC,MAAK,GAAG;AAE9B,UAAI,UAAU,WAAW,GAAG;AAC1B,QAAAA,MAAKD;AACL,QAAAA,MAAKO;AACL,QAAAA,KAAID;AAAA,MACN;AAGA,MAAAA,KAAI,QAAQA,EAAC;AACb,MAAAC,KAAI,QAAQA,EAAC;AAEb,YAAM,KAAK,KAAK,IAAID,EAAC;AACrB,YAAM,KAAK,KAAK,IAAIC,EAAC;AAErB,YAAM,EAAE,GAAApB,IAAG,GAAAC,IAAG,GAAAQ,IAAG,GAAAC,IAAG,GAAAC,IAAG,GAAAC,GAAE,IAAI;AAE7B,WAAK,IAAIZ,KAAIC,KAAI;AACjB,WAAK,IAAIA,KAAID,KAAI;AACjB,WAAK,IAAIS,KAAIC,KAAI;AACjB,WAAK,IAAIA,KAAID,KAAI;AACjB,WAAK,IAAIE,KAAIC,KAAI,KAAKE,MAAK;AAC3B,WAAK,IAAIF,KAAID,KAAI,KAAKE,MAAK;AAE3B,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAMM,IAAGN,KAAIC,KAAI;AACf,aAAO,KAAK,KAAKK,IAAG,GAAGN,KAAIC,GAAE;AAAA,IAC/B;AAAA;AAAA,IAGA,MAAMM,IAAGP,KAAIC,KAAI;AACf,aAAO,KAAK,KAAK,GAAGM,IAAGP,KAAIC,GAAE;AAAA,IAC/B;AAAA,IAEA,UAAU;AACR,aAAO,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA,IACxD;AAAA;AAAA,IAGA,WAAW;AACT,aACE,YACA,KAAK,IACL,MACA,KAAK,IACL,MACA,KAAK,IACL,MACA,KAAK,IACL,MACA,KAAK,IACL,MACA,KAAK,IACL;AAAA,IAEJ;AAAA;AAAA,IAGA,UAAUZ,IAAG;AAEX,UAAI,OAAO,aAAaA,EAAC,GAAG;AAC1B,cAAMa,UAAS,IAAI,OAAOb,EAAC;AAC3B,eAAOa,QAAO,UAAU,IAAI;AAAA,MAC9B;AAGA,YAAMM,KAAI,OAAO,iBAAiBnB,EAAC;AACnC,YAAM,UAAU;AAChB,YAAM,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,MAAMmB,GAAE,IAAIA,GAAE,EAAE,EAAE,UAAU,OAAO;AAGhE,YAAM,cAAc,IAAI,OAAO,EAC5B,WAAWA,GAAE,IAAIA,GAAE,EAAE,EACrB,WAAW,OAAO,EAClB,WAAW,CAAC,IAAI,CAAC,EAAE,EACnB,OAAOA,GAAE,QAAQA,GAAE,MAAM,EACzB,MAAMA,GAAE,OAAOA,GAAE,KAAK,EACtB,OAAOA,GAAE,KAAK,EACd,QAAQA,GAAE,KAAK,EACf,WAAW,IAAI,EAAE;AAGpB,UAAI,SAASA,GAAE,EAAE,KAAK,SAASA,GAAE,EAAE,GAAG;AACpC,cAAM,SAAS,IAAI,MAAM,IAAI,EAAE,EAAE,UAAU,WAAW;AAGtD,cAAML,MAAK,SAASK,GAAE,EAAE,IAAIA,GAAE,KAAK,OAAO,IAAI;AAC9C,cAAMJ,MAAK,SAASI,GAAE,EAAE,IAAIA,GAAE,KAAK,OAAO,IAAI;AAC9C,oBAAY,WAAWL,KAAIC,GAAE;AAAA,MAC/B;AAGA,kBAAY,WAAWI,GAAE,IAAIA,GAAE,EAAE;AACjC,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,UAAUF,IAAGC,IAAG;AACd,aAAO,KAAK,MAAM,EAAE,WAAWD,IAAGC,EAAC;AAAA,IACrC;AAAA,IAEA,WAAWD,IAAGC,IAAG;AACf,WAAK,KAAKD,MAAK;AACf,WAAK,KAAKC,MAAK;AACf,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,aAAO;AAAA,QACL,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAEO,WAAS,MAAM;AACpB,WAAO,IAAI,OAAO,KAAK,KAAK,OAAO,CAAC;AAAA,EACtC;AAEO,WAAS,YAAY;AAC1B,QAAI;AAKF,UAAI,OAAO,KAAK,WAAW,cAAc,CAAC,KAAK,OAAO,GAAG;AACvD,cAAM,OAAO,KAAK,KAAK,GAAG,CAAC;AAC3B,cAAME,KAAI,KAAK,KAAK,aAAa;AACjC,aAAK,OAAO;AACZ,eAAO,IAAI,OAAOA,EAAC;AAAA,MACrB;AACA,aAAO,IAAI,OAAO,KAAK,KAAK,aAAa,CAAC;AAAA,IAC5C,SAASX,IAAP;AACA,cAAQ;AAAA,QACN,gCAAgC,KAAK,KAAK;AAAA,MAC5C;AACA,aAAO,IAAI,OAAO;AAAA,IACpB;AAAA,EACF;AAEA,EAAAY,UAAS,QAAQ,QAAQ;;;AC3hBV,WAAR,SAA0B;AAE/B,QAAI,CAAC,OAAO,OAAO;AACjB,YAAMC,OAAM,aAAa,EAAE,KAAK,GAAG,CAAC;AACpC,MAAAA,KAAI,KAAK,MAAM,UAAU;AAAA,QACvB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAEV,MAAAA,KAAI,KAAK,aAAa,OAAO;AAC7B,MAAAA,KAAI,KAAK,eAAe,MAAM;AAE9B,YAAM,OAAOA,KAAI,KAAK,EAAE;AAExB,aAAO,QAAQ,EAAE,KAAAA,MAAK,KAAK;AAAA,IAC7B;AAEA,QAAI,CAAC,OAAO,MAAM,IAAI,KAAK,YAAY;AACrC,YAAMC,KAAI,QAAQ,SAAS,QAAQ,QAAQ,SAAS;AACpD,aAAO,MAAM,IAAI,MAAMA,EAAC;AAAA,IAC1B;AAEA,WAAO,OAAO;AAAA,EAChB;;;ACrBO,WAAS,YAAY,KAAK;AAC/B,WAAO,CAAC,IAAI,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI;AAAA,EACrD;AAEO,WAAS,YAAY,MAAM;AAChC,WACE,SAAS,QAAQ,aAEf,QAAQ,SAAS,gBAAgB,YACjC,SAAUC,OAAM;AAEd,aAAOA,MAAK,YAAY;AACtB,QAAAA,QAAOA,MAAK;AAAA,MACd;AACA,aAAOA,UAAS,QAAQ;AAAA,IAC1B,GACA,KAAK,QAAQ,SAAS,iBAAiB,IAAI;AAAA,EAEjD;AAEA,MAAqB,MAArB,MAAyB;AAAA,IACvB,eAAe,MAAM;AACnB,WAAK,KAAK,GAAG,IAAI;AAAA,IACnB;AAAA,IAEA,YAAY;AAEV,WAAK,KAAK,QAAQ,OAAO;AACzB,WAAK,KAAK,QAAQ,OAAO;AACzB,aAAO,IAAI,IAAI,IAAI;AAAA,IACrB;AAAA,IAEA,KAAK,QAAQ;AACX,YAAM,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACxB,eACE,OAAO,WAAW,WACd,OAAO,MAAM,SAAS,EAAE,IAAI,UAAU,IACtC,MAAM,QAAQ,MAAM,IAClB,SACA,OAAO,WAAW,WAChB;AAAA,QACE,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO;AAAA,QAC3C,OAAO,OAAO,OAAO,OAAO,MAAM,OAAO;AAAA,QACzC,OAAO;AAAA,QACP,OAAO;AAAA,MACT,IACA,UAAU,WAAW,IACnB,CAAC,EAAE,MAAM,KAAK,SAAS,IACvB;AAEZ,WAAK,IAAI,OAAO,CAAC,KAAK;AACtB,WAAK,IAAI,OAAO,CAAC,KAAK;AACtB,WAAK,QAAQ,KAAK,IAAI,OAAO,CAAC,KAAK;AACnC,WAAK,SAAS,KAAK,IAAI,OAAO,CAAC,KAAK;AAGpC,WAAK,KAAK,KAAK,IAAI,KAAK;AACxB,WAAK,KAAK,KAAK,IAAI,KAAK;AACxB,WAAK,KAAK,KAAK,IAAI,KAAK,IAAI;AAC5B,WAAK,KAAK,KAAK,IAAI,KAAK,IAAI;AAE5B,aAAO;AAAA,IACT;AAAA,IAEA,WAAW;AACT,aAAO,YAAY,IAAI;AAAA,IACzB;AAAA;AAAA,IAGA,MAAM,KAAK;AACT,YAAMC,KAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC;AAChC,YAAMC,KAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC;AAChC,YAAMC,SAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI,IAAI,KAAK,IAAIF;AACjE,YAAMG,UAAS,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAIF;AAEpE,aAAO,IAAI,IAAID,IAAGC,IAAGC,QAAOC,OAAM;AAAA,IACpC;AAAA,IAEA,UAAU;AACR,aAAO,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM;AAAA,IACjD;AAAA,IAEA,WAAW;AACT,aAAO,KAAK,IAAI,MAAM,KAAK,IAAI,MAAM,KAAK,QAAQ,MAAM,KAAK;AAAA,IAC/D;AAAA,IAEA,UAAUC,IAAG;AACX,UAAI,EAAEA,cAAa,SAAS;AAC1B,QAAAA,KAAI,IAAI,OAAOA,EAAC;AAAA,MAClB;AAEA,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AAEX,YAAM,MAAM;AAAA,QACV,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC;AAAA,QACxB,IAAI,MAAM,KAAK,IAAI,KAAK,CAAC;AAAA,QACzB,IAAI,MAAM,KAAK,GAAG,KAAK,EAAE;AAAA,QACzB,IAAI,MAAM,KAAK,IAAI,KAAK,EAAE;AAAA,MAC5B;AAEA,UAAI,QAAQ,SAAUC,IAAG;AACvB,QAAAA,KAAIA,GAAE,UAAUD,EAAC;AACjB,eAAO,KAAK,IAAI,MAAMC,GAAE,CAAC;AACzB,eAAO,KAAK,IAAI,MAAMA,GAAE,CAAC;AACzB,eAAO,KAAK,IAAI,MAAMA,GAAE,CAAC;AACzB,eAAO,KAAK,IAAI,MAAMA,GAAE,CAAC;AAAA,MAC3B,CAAC;AAED,aAAO,IAAI,IAAI,MAAM,MAAM,OAAO,MAAM,OAAO,IAAI;AAAA,IACrD;AAAA,EACF;AAEA,WAAS,OAAO,IAAI,WAAW,OAAO;AACpC,QAAI;AAEJ,QAAI;AAEF,YAAM,UAAU,GAAG,IAAI;AAIvB,UAAI,YAAY,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,GAAG;AAC7C,cAAM,IAAI,MAAM,wBAAwB;AAAA,MAC1C;AAAA,IACF,SAASC,IAAP;AAEA,YAAM,MAAM,EAAE;AAAA,IAChB;AAEA,WAAO;AAAA,EACT;AAEO,WAAS,OAAO;AAErB,UAAM,UAAU,CAAC,SAAS,KAAK,QAAQ;AAIvC,UAAM,QAAQ,CAAC,OAAO;AACpB,UAAI;AACF,cAAMC,SAAQ,GAAG,MAAM,EAAE,MAAM,OAAO,EAAE,GAAG,EAAE,KAAK;AAClD,cAAMC,OAAMD,OAAM,KAAK,QAAQ;AAC/B,QAAAA,OAAM,OAAO;AACb,eAAOC;AAAA,MACT,SAASF,IAAP;AAEA,cAAM,IAAI;AAAA,UACR,4BACE,GAAG,KAAK,8BACYA,GAAE,SAAS;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM,OAAO,MAAM,SAAS,KAAK;AACvC,UAAMG,QAAO,IAAI,IAAI,GAAG;AAExB,WAAOA;AAAA,EACT;AAEO,WAAS,KAAK,IAAI;AACvB,UAAM,UAAU,CAAC,SAAS,KAAK,sBAAsB;AACrD,UAAM,QAAQ,CAACC,QAAO;AAGpB,YAAM,IAAI;AAAA,QACR,4BAA4BA,IAAG,KAAK;AAAA,MACtC;AAAA,IACF;AAEA,UAAM,MAAM,OAAO,MAAM,SAAS,KAAK;AACvC,UAAMC,QAAO,IAAI,IAAI,GAAG;AAGxB,QAAI,IAAI;AACN,aAAOA,MAAK,UAAU,GAAG,UAAU,EAAE,SAAS,CAAC;AAAA,IACjD;AAIA,WAAOA,MAAK,UAAU;AAAA,EACxB;AAGO,WAAS,OAAOX,IAAGC,IAAG;AAC3B,UAAM,MAAM,KAAK,KAAK;AAEtB,WACED,KAAI,IAAI,KAAKC,KAAI,IAAI,KAAKD,KAAI,IAAI,IAAI,IAAI,SAASC,KAAI,IAAI,IAAI,IAAI;AAAA,EAEvE;AAEA,kBAAgB;AAAA,IACd,SAAS;AAAA,MACP,QAAQD,IAAGC,IAAGC,QAAOC,SAAQ;AAE3B,YAAIH,MAAK;AAAM,iBAAO,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAGlD,eAAO,KAAK,KAAK,WAAW,IAAI,IAAIA,IAAGC,IAAGC,QAAOC,OAAM,CAAC;AAAA,MAC1D;AAAA,MAEA,KAAK,OAAOS,QAAO;AAQjB,YAAI,EAAE,OAAAV,QAAO,QAAAC,QAAO,IAAI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;AAIrD,YACG,CAACD,UAAS,CAACC,WACZ,OAAOD,WAAU,YACjB,OAAOC,YAAW,UAClB;AACA,UAAAD,SAAQ,KAAK,KAAK;AAClB,UAAAC,UAAS,KAAK,KAAK;AAAA,QACrB;AAGA,YAAI,CAACD,UAAS,CAACC,SAAQ;AACrB,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,cAAMU,KAAI,KAAK,QAAQ;AAEvB,cAAM,QAAQX,SAAQW,GAAE;AACxB,cAAM,QAAQV,UAASU,GAAE;AACzB,cAAM,OAAO,KAAK,IAAI,OAAO,KAAK;AAElC,YAAI,SAAS,MAAM;AACjB,iBAAO;AAAA,QACT;AAEA,YAAI,aAAa,OAAO;AAIxB,YAAI,eAAe;AAAU,uBAAa,OAAO,mBAAmB;AAEpE,QAAAD,SACEA,UAAS,IAAI,MAAMV,SAAQ,IAAI,QAAQW,GAAE,GAAGV,UAAS,IAAI,QAAQU,GAAE,CAAC;AAEtE,cAAM,MAAM,IAAI,IAAIA,EAAC,EAAE;AAAA,UACrB,IAAI,OAAO,EAAE,OAAO,YAAY,QAAQD,OAAM,CAAC;AAAA,QACjD;AAEA,eAAO,KAAK,QAAQ,GAAG;AAAA,MACzB;AAAA,IACF;AAAA,EACF,CAAC;AAED,EAAAE,UAAS,KAAK,KAAK;;;AC1QnB,MAAM,OAAN,cAAmB,MAAM;AAAA,IACvB,YAAY,MAAM,CAAC,MAAM,MAAM;AAC7B,YAAM,KAAK,GAAG,IAAI;AAClB,UAAI,OAAO,QAAQ;AAAU,eAAO;AACpC,WAAK,SAAS;AACd,WAAK,KAAK,GAAG,GAAG;AAAA,IAClB;AAAA,EACF;AASA,MAAO,eAAQ;AAEf,EAAAC,QAAO,CAAC,IAAI,GAAG;AAAA,IACb,KAAK,mBAAmB,MAAM;AAC5B,UAAI,OAAO,mBAAmB,YAAY;AACxC,eAAO,KAAK,IAAI,CAAC,IAAIC,IAAG,QAAQ;AAC9B,iBAAO,eAAe,KAAK,IAAI,IAAIA,IAAG,GAAG;AAAA,QAC3C,CAAC;AAAA,MACH,OAAO;AACL,eAAO,KAAK,IAAI,CAAC,OAAO;AACtB,iBAAO,GAAG,cAAc,EAAE,GAAG,IAAI;AAAA,QACnC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,UAAU;AACR,aAAO,MAAM,UAAU,OAAO,MAAM,CAAC,GAAG,IAAI;AAAA,IAC9C;AAAA,EACF,CAAC;AAED,MAAM,WAAW,CAAC,WAAW,eAAe,MAAM;AAElD,OAAK,SAAS,SAAUC,UAAS;AAC/B,IAAAA,WAAUA,SAAQ,OAAO,CAAC,KAAKC,UAAS;AAEtC,UAAI,SAAS,SAASA,KAAI;AAAG,eAAO;AAGpC,UAAIA,MAAK,CAAC,MAAM;AAAK,eAAO;AAG5B,UAAIA,SAAQ,MAAM,WAAW;AAC3B,YAAI,MAAMA,KAAI,IAAI,MAAM,UAAUA,KAAI;AAAA,MACxC;AAGA,UAAIA,KAAI,IAAI,YAAaC,QAAO;AAC9B,eAAO,KAAK,KAAKD,OAAM,GAAGC,MAAK;AAAA,MACjC;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAEL,IAAAJ,QAAO,CAAC,IAAI,GAAGE,QAAO;AAAA,EACxB;;;ACzDe,WAAR,SAA0B,OAAO,QAAQ;AAC9C,WAAO,IAAI;AAAA,MACTG,MAAK,UAAU,QAAQ,UAAU,iBAAiB,KAAK,GAAG,SAAU,MAAM;AACxE,eAAO,MAAM,IAAI;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EACF;AAGO,WAASC,MAAK,OAAO;AAC1B,WAAO,SAAS,OAAO,KAAK,IAAI;AAAA,EAClC;AAEO,WAAS,QAAQ,OAAO;AAC7B,WAAO,MAAM,KAAK,KAAK,cAAc,KAAK,CAAC;AAAA,EAC7C;;;AChBA,MAAI,aAAa;AACV,MAAM,eAAe,CAAC;AAEtB,WAAS,UAAU,UAAU;AAClC,QAAIC,KAAI,SAAS,eAAe;AAGhC,QAAIA,OAAM,QAAQ;AAAQ,MAAAA,KAAI;AAC9B,QAAI,CAACA,GAAE;AAAQ,MAAAA,GAAE,SAAS,CAAC;AAC3B,WAAOA,GAAE;AAAA,EACX;AAEO,WAAS,eAAe,UAAU;AACvC,WAAO,SAAS,eAAe;AAAA,EACjC;AAEO,WAAS,YAAY,UAAU;AACpC,QAAIA,KAAI,SAAS,eAAe;AAChC,QAAIA,OAAM,QAAQ;AAAQ,MAAAA,KAAI;AAC9B,QAAIA,GAAE;AAAQ,MAAAA,GAAE,SAAS,CAAC;AAAA,EAC5B;AAGO,WAASC,IAAG,MAAMC,SAAQ,UAAU,SAASC,UAAS;AAC3D,UAAMC,KAAI,SAAS,KAAK,WAAW,IAAI;AACvC,UAAM,WAAW,aAAa,IAAI;AAClC,UAAM,MAAM,UAAU,QAAQ;AAC9B,UAAMJ,KAAI,eAAe,QAAQ;AAGjC,IAAAE,UAAS,MAAM,QAAQA,OAAM,IAAIA,UAASA,QAAO,MAAM,SAAS;AAGhE,QAAI,CAAC,SAAS,kBAAkB;AAC9B,eAAS,mBAAmB,EAAE;AAAA,IAChC;AAEA,IAAAA,QAAO,QAAQ,SAAU,OAAO;AAC9B,YAAM,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC;AAC7B,YAAMG,MAAK,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK;AAGlC,UAAI,EAAE,IAAI,IAAI,EAAE,KAAK,CAAC;AACtB,UAAI,EAAE,EAAEA,GAAE,IAAI,IAAI,EAAE,EAAEA,GAAE,KAAK,CAAC;AAG9B,UAAI,EAAE,EAAEA,GAAE,EAAE,SAAS,gBAAgB,IAAID;AAGzC,MAAAJ,GAAE,iBAAiB,IAAII,IAAGD,YAAW,KAAK;AAAA,IAC5C,CAAC;AAAA,EACH;AAGO,WAASG,KAAI,MAAMJ,SAAQ,UAAUC,UAAS;AACnD,UAAM,WAAW,aAAa,IAAI;AAClC,UAAM,MAAM,UAAU,QAAQ;AAC9B,UAAMH,KAAI,eAAe,QAAQ;AAGjC,QAAI,OAAO,aAAa,YAAY;AAClC,iBAAW,SAAS;AACpB,UAAI,CAAC;AAAU;AAAA,IACjB;AAGA,IAAAE,UAAS,MAAM,QAAQA,OAAM,IAAIA,WAAUA,WAAU,IAAI,MAAM,SAAS;AAExE,IAAAA,QAAO,QAAQ,SAAU,OAAO;AAC9B,YAAM,KAAK,SAAS,MAAM,MAAM,GAAG,EAAE,CAAC;AACtC,YAAMG,MAAK,SAAS,MAAM,MAAM,GAAG,EAAE,CAAC;AACtC,UAAI,WAAWD;AAEf,UAAI,UAAU;AAEZ,YAAI,IAAI,EAAE,KAAK,IAAI,EAAE,EAAEC,OAAM,GAAG,GAAG;AAEjC,UAAAL,GAAE;AAAA,YACA;AAAA,YACA,IAAI,EAAE,EAAEK,OAAM,GAAG,EAAE,QAAQ;AAAA,YAC3BF,YAAW;AAAA,UACb;AAEA,iBAAO,IAAI,EAAE,EAAEE,OAAM,GAAG,EAAE,QAAQ;AAAA,QACpC;AAAA,MACF,WAAW,MAAMA,KAAI;AAEnB,YAAI,IAAI,EAAE,KAAK,IAAI,EAAE,EAAEA,GAAE,GAAG;AAC1B,eAAKD,MAAK,IAAI,EAAE,EAAEC,GAAE,GAAG;AACrB,YAAAC,KAAIN,IAAG,CAAC,IAAIK,GAAE,EAAE,KAAK,GAAG,GAAGD,EAAC;AAAA,UAC9B;AAEA,iBAAO,IAAI,EAAE,EAAEC,GAAE;AAAA,QACnB;AAAA,MACF,WAAWA,KAAI;AAEb,aAAK,SAAS,KAAK;AACjB,eAAK,aAAa,IAAI,KAAK,GAAG;AAC5B,gBAAIA,QAAO,WAAW;AACpB,cAAAC,KAAIN,IAAG,CAAC,OAAOK,GAAE,EAAE,KAAK,GAAG,CAAC;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,IAAI;AAEb,YAAI,IAAI,EAAE,GAAG;AACX,eAAK,aAAa,IAAI,EAAE,GAAG;AACzB,YAAAC,KAAIN,IAAG,CAAC,IAAI,SAAS,EAAE,KAAK,GAAG,CAAC;AAAA,UAClC;AAEA,iBAAO,IAAI,EAAE;AAAA,QACf;AAAA,MACF,OAAO;AAEL,aAAK,SAAS,KAAK;AACjB,UAAAM,KAAIN,IAAG,KAAK;AAAA,QACd;AAEA,oBAAY,QAAQ;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AAEO,WAASO,UAAS,MAAM,OAAOC,OAAML,UAAS;AACnD,UAAMH,KAAI,eAAe,IAAI;AAG7B,QAAI,iBAAiB,QAAQ,OAAO,OAAO;AACzC,MAAAA,GAAE,cAAc,KAAK;AAAA,IACvB,OAAO;AACL,cAAQ,IAAI,QAAQ,OAAO,YAAY,OAAO;AAAA,QAC5C,QAAQQ;AAAA,QACR,YAAY;AAAA,QACZ,GAAGL;AAAA,MACL,CAAC;AACD,MAAAH,GAAE,cAAc,KAAK;AAAA,IACvB;AACA,WAAO;AAAA,EACT;;;AC1IA,MAAqB,cAArB,cAAyC,KAAK;AAAA,IAC5C,mBAAmB;AAAA,IAAC;AAAA,IAEpB,SAAS,OAAOS,OAAMC,UAAS;AAC7B,aAAOC,UAAS,MAAM,OAAOF,OAAMC,QAAO;AAAA,IAC5C;AAAA,IAEA,cAAc,OAAO;AACnB,YAAM,MAAM,KAAK,eAAe,EAAE;AAClC,UAAI,CAAC;AAAK,eAAO;AAEjB,YAAME,UAAS,IAAI,MAAM,IAAI;AAE7B,iBAAWC,MAAKD,SAAQ;AACtB,mBAAWE,MAAKF,QAAOC,EAAC,GAAG;AACzB,UAAAD,QAAOC,EAAC,EAAEC,EAAC,EAAE,KAAK;AAAA,QACpB;AAAA,MACF;AAEA,aAAO,CAAC,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,KAAK,OAAOL,OAAMC,UAAS;AACzB,WAAK,SAAS,OAAOD,OAAMC,QAAO;AAClC,aAAO;AAAA,IACT;AAAA,IAEA,iBAAiB;AACf,aAAO;AAAA,IACT;AAAA,IAEA,iBAAiB;AACf,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,IAAI,OAAO,UAAUA,UAAS;AAC5B,MAAAK,KAAI,MAAM,OAAO,UAAUL,QAAO;AAClC,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,GAAG,OAAO,UAAU,SAASA,UAAS;AACpC,MAAAM,IAAG,MAAM,OAAO,UAAU,SAASN,QAAO;AAC1C,aAAO;AAAA,IACT;AAAA,IAEA,sBAAsB;AAAA,IAAC;AAAA,EACzB;AAEA,EAAAO,UAAS,aAAa,aAAa;;;ACvD5B,WAASC,QAAO;AAAA,EAAC;AAGjB,MAAM,WAAW;AAAA,IACtB,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAGO,MAAM,QAAQ;AAAA;AAAA,IAEnB,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA;AAAA,IAGT,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA;AAAA,IAGJ,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,IAGR,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA;AAAA,IAGJ,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,cAAc;AAAA;AAAA,IAGd,eAAe;AAAA,EACjB;;;ACzCA,MAAqB,WAArB,cAAsC,MAAM;AAAA,IAC1C,eAAe,MAAM;AACnB,YAAM,GAAG,IAAI;AACb,WAAK,KAAK,GAAG,IAAI;AAAA,IACnB;AAAA,IAEA,QAAQ;AACN,aAAO,IAAI,KAAK,YAAY,IAAI;AAAA,IAClC;AAAA,IAEA,KAAK,KAAK;AAER,UAAI,OAAO,QAAQ;AAAU,eAAO;AACpC,WAAK,SAAS;AACd,WAAK,KAAK,GAAG,KAAK,MAAM,GAAG,CAAC;AAC5B,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAMC,SAAQ,CAAC,GAAG;AAEhB,UAAIA,kBAAiB;AAAO,eAAOA;AAEnC,aAAOA,OAAM,KAAK,EAAE,MAAM,SAAS,EAAE,IAAI,UAAU;AAAA,IACrD;AAAA,IAEA,UAAU;AACR,aAAO,MAAM,UAAU,OAAO,MAAM,CAAC,GAAG,IAAI;AAAA,IAC9C;AAAA,IAEA,QAAQ;AACN,aAAO,IAAI,IAAI,IAAI;AAAA,IACrB;AAAA,IAEA,WAAW;AACT,aAAO,KAAK,KAAK,GAAG;AAAA,IACtB;AAAA;AAAA,IAGA,UAAU;AACR,YAAM,MAAM,CAAC;AACb,UAAI,KAAK,GAAG,IAAI;AAChB,aAAO;AAAA,IACT;AAAA,EACF;;;AC3CA,MAAqB,YAArB,MAA+B;AAAA;AAAA,IAE7B,eAAe,MAAM;AACnB,WAAK,KAAK,GAAG,IAAI;AAAA,IACnB;AAAA,IAEA,QAAQ,MAAM;AACZ,aAAO,IAAI,UAAU,KAAK,OAAO,IAAI;AAAA,IACvC;AAAA;AAAA,IAGA,OAAO,QAAQ;AACb,eAAS,IAAI,UAAU,MAAM;AAC7B,aAAO,IAAI,UAAU,OAAO,QAAQ,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC9D;AAAA,IAEA,KAAK,OAAO,MAAM;AAChB,aAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,CAAC,IAAI;AACzC,cAAQ,MAAM,QAAQ,KAAK,IAAI,MAAM,CAAC,IAAI;AAG1C,WAAK,QAAQ;AACb,WAAK,OAAO,QAAQ;AAGpB,UAAI,OAAO,UAAU,UAAU;AAE7B,aAAK,QAAQ,MAAM,KAAK,IACpB,IACA,CAAC,SAAS,KAAK,IACb,QAAQ,IACN,SACA,QACF;AAAA,MACR,WAAW,OAAO,UAAU,UAAU;AACpC,eAAO,MAAM,MAAM,aAAa;AAEhC,YAAI,MAAM;AAER,eAAK,QAAQ,WAAW,KAAK,CAAC,CAAC;AAG/B,cAAI,KAAK,CAAC,MAAM,KAAK;AACnB,iBAAK,SAAS;AAAA,UAChB,WAAW,KAAK,CAAC,MAAM,KAAK;AAC1B,iBAAK,SAAS;AAAA,UAChB;AAGA,eAAK,OAAO,KAAK,CAAC;AAAA,QACpB;AAAA,MACF,OAAO;AACL,YAAI,iBAAiB,WAAW;AAC9B,eAAK,QAAQ,MAAM,QAAQ;AAC3B,eAAK,OAAO,MAAM;AAAA,QACpB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAM,QAAQ;AACZ,eAAS,IAAI,UAAU,MAAM;AAC7B,aAAO,IAAI,UAAU,OAAO,QAAQ,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC9D;AAAA;AAAA,IAGA,KAAK,QAAQ;AACX,eAAS,IAAI,UAAU,MAAM;AAC7B,aAAO,IAAI,UAAU,OAAO,QAAQ,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC9D;AAAA;AAAA,IAGA,MAAM,QAAQ;AACZ,eAAS,IAAI,UAAU,MAAM;AAC7B,aAAO,IAAI,UAAU,OAAO,QAAQ,KAAK,QAAQ,OAAO,IAAI;AAAA,IAC9D;AAAA,IAEA,UAAU;AACR,aAAO,CAAC,KAAK,OAAO,KAAK,IAAI;AAAA,IAC/B;AAAA,IAEA,SAAS;AACP,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,WAAW;AACT,cACG,KAAK,SAAS,MACX,CAAC,EAAE,KAAK,QAAQ,OAAO,MACvB,KAAK,SAAS,MACZ,KAAK,QAAQ,MACb,KAAK,SAAS,KAAK;AAAA,IAE7B;AAAA,IAEA,UAAU;AACR,aAAO,KAAK;AAAA,IACd;AAAA,EACF;;;ACjGA,MAAM,kBAAkB,oBAAI,IAAI;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAM,QAAQ,CAAC;AACR,WAAS,iBAAiBC,KAAI;AACnC,UAAM,KAAKA,GAAE;AAAA,EACf;AAGe,WAAR,KAAsBC,OAAM,KAAKC,KAAI;AAE1C,QAAID,SAAQ,MAAM;AAEhB,MAAAA,QAAO,CAAC;AACR,YAAM,KAAK,KAAK;AAEhB,iBAAW,QAAQ,KAAK;AACtB,QAAAA,MAAK,KAAK,QAAQ,IAAIE,UAAS,KAAK,KAAK,SAAS,IAC9C,WAAW,KAAK,SAAS,IACzB,KAAK;AAAA,MACX;AAEA,aAAOF;AAAA,IACT,WAAWA,iBAAgB,OAAO;AAEhC,aAAOA,MAAK,OAAO,CAAC,MAAM,SAAS;AACjC,aAAK,IAAI,IAAI,KAAK,KAAK,IAAI;AAC3B,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP,WAAW,OAAOA,UAAS,YAAYA,MAAK,gBAAgB,QAAQ;AAElE,WAAK,OAAOA;AAAM,aAAK,KAAK,KAAKA,MAAK,GAAG,CAAC;AAAA,IAC5C,WAAW,QAAQ,MAAM;AAEvB,WAAK,KAAK,gBAAgBA,KAAI;AAAA,IAChC,WAAW,OAAO,MAAM;AAEtB,YAAM,KAAK,KAAK,aAAaA,KAAI;AACjC,aAAO,OAAO,OACV,MAASA,KAAI,IACbE,UAAS,KAAK,GAAG,IACf,WAAW,GAAG,IACd;AAAA,IACR,OAAO;AAEL,YAAM,MAAM,OAAO,CAAC,MAAM,SAAS;AACjC,eAAO,KAAKF,OAAM,MAAM,IAAI;AAAA,MAC9B,GAAG,GAAG;AAGN,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAM,IAAI,UAAU,GAAG;AAAA,MACzB,WAAW,gBAAgB,IAAIA,KAAI,KAAKG,OAAM,QAAQ,GAAG,GAAG;AAE1D,cAAM,IAAIA,OAAM,GAAG;AAAA,MACrB,WAAW,IAAI,gBAAgB,OAAO;AAEpC,cAAM,IAAI,SAAS,GAAG;AAAA,MACxB;AAGA,UAAIH,UAAS,WAAW;AAEtB,YAAI,KAAK,SAAS;AAChB,eAAK,QAAQ,GAAG;AAAA,QAClB;AAAA,MACF,OAAO;AAEL,eAAOC,QAAO,WACV,KAAK,KAAK,eAAeA,KAAID,OAAM,IAAI,SAAS,CAAC,IACjD,KAAK,KAAK,aAAaA,OAAM,IAAI,SAAS,CAAC;AAAA,MACjD;AAGA,UAAI,KAAK,YAAYA,UAAS,eAAeA,UAAS,MAAM;AAC1D,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAEA,WAAO;AAAA,EACT;;;AC5EA,MAAqB,MAArB,cAAiC,YAAY;AAAA,IAC3C,YAAY,MAAMI,QAAO;AACvB,YAAM;AACN,WAAK,OAAO;AACZ,WAAK,OAAO,KAAK;AAEjB,UAAIA,UAAS,SAASA,QAAO;AAC3B,aAAK,KAAKA,MAAK;AAAA,MACjB;AAAA,IACF;AAAA;AAAA,IAGA,IAAI,SAASC,IAAG;AACd,gBAAU,aAAa,OAAO;AAG9B,UACE,QAAQ,mBACR,KAAK,gBAAgB,QAAQ,OAAO,YACpC;AACA,gBAAQ,gBAAgB;AAAA,MAC1B;AAEA,UAAIA,MAAK,MAAM;AACb,aAAK,KAAK,YAAY,QAAQ,IAAI;AAAA,MACpC,WAAW,QAAQ,SAAS,KAAK,KAAK,WAAWA,EAAC,GAAG;AACnD,aAAK,KAAK,aAAa,QAAQ,MAAM,KAAK,KAAK,WAAWA,EAAC,CAAC;AAAA,MAC9D;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAM,QAAQA,IAAG;AACf,aAAO,aAAa,MAAM,EAAE,IAAI,MAAMA,EAAC;AAAA,IACzC;AAAA;AAAA,IAGA,WAAW;AACT,aAAO,IAAI;AAAA,QACTC,KAAI,KAAK,KAAK,UAAU,SAAU,MAAM;AACtC,iBAAO,MAAM,IAAI;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA,IAGA,QAAQ;AAEN,aAAO,KAAK,KAAK,cAAc,GAAG;AAChC,aAAK,KAAK,YAAY,KAAK,KAAK,SAAS;AAAA,MAC3C;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAM,OAAO,MAAM,eAAe,MAAM;AAEtC,WAAK,eAAe;AAGpB,UAAI,YAAY,KAAK,KAAK,UAAU,IAAI;AACxC,UAAI,cAAc;AAEhB,oBAAY,YAAY,SAAS;AAAA,MACnC;AACA,aAAO,IAAI,KAAK,YAAY,SAAS;AAAA,IACvC;AAAA;AAAA,IAGA,KAAK,OAAO,MAAM;AAChB,YAAM,WAAW,KAAK,SAAS;AAC/B,UAAID,IAAG;AAEP,WAAKA,KAAI,GAAG,KAAK,SAAS,QAAQA,KAAI,IAAIA,MAAK;AAC7C,cAAM,MAAM,SAASA,EAAC,GAAG,CAACA,IAAG,QAAQ,CAAC;AAEtC,YAAI,MAAM;AACR,mBAASA,EAAC,EAAE,KAAK,OAAO,IAAI;AAAA,QAC9B;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,QAAQ,UAAUD,QAAO;AACvB,aAAO,KAAK,IAAI,IAAI,IAAI,OAAO,QAAQ,GAAGA,MAAK,CAAC;AAAA,IAClD;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,MAAM,KAAK,KAAK,UAAU;AAAA,IACnC;AAAA;AAAA,IAGA,IAAIC,IAAG;AACL,aAAO,MAAM,KAAK,KAAK,WAAWA,EAAC,CAAC;AAAA,IACtC;AAAA,IAEA,iBAAiB;AACf,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,iBAAiB;AACf,aAAO,KAAK;AAAA,IACd;AAAA;AAAA,IAGA,IAAI,SAAS;AACX,aAAO,KAAK,MAAM,OAAO,KAAK;AAAA,IAChC;AAAA,IAEA,KAAK,UAAU,WAAW;AACxB,aAAO,KAAK,IAAI,UAAU,WAAW,IAAI;AAAA,IAC3C;AAAA;AAAA,IAGA,GAAGE,KAAI;AAEL,UAAI,OAAOA,QAAO,eAAe,CAAC,KAAK,KAAK,IAAI;AAC9C,aAAK,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,MAC9B;AAGA,aAAO,KAAK,KAAK,MAAMA,GAAE;AAAA,IAC3B;AAAA;AAAA,IAGA,MAAM,SAAS;AACb,aAAO,CAAC,EAAE,MAAM,KAAK,KAAK,KAAK,UAAU,EAAE,QAAQ,QAAQ,IAAI;AAAA,IACjE;AAAA;AAAA,IAGA,OAAO;AACL,aAAO,MAAM,KAAK,KAAK,SAAS;AAAA,IAClC;AAAA;AAAA,IAGA,QAAQ,UAAU;AAChB,YAAM,KAAK,KAAK;AAChB,YAAM,UACJ,GAAG,WACH,GAAG,mBACH,GAAG,qBACH,GAAG,sBACH,GAAG,yBACH,GAAG,oBACH;AACF,aAAO,WAAW,QAAQ,KAAK,IAAI,QAAQ;AAAA,IAC7C;AAAA;AAAA,IAGA,OAAO,MAAM;AACX,UAAI,SAAS;AAGb,UAAI,CAAC,OAAO,KAAK;AAAY,eAAO;AAGpC,eAAS,MAAM,OAAO,KAAK,UAAU;AAErC,UAAI,CAAC;AAAM,eAAO;AAGlB,SAAG;AACD,YACE,OAAO,SAAS,WAAW,OAAO,QAAQ,IAAI,IAAI,kBAAkB;AAEpE,iBAAO;AAAA,MACX,SAAU,SAAS,MAAM,OAAO,KAAK,UAAU;AAE/C,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,IAAI,SAASF,IAAG;AACd,gBAAU,aAAa,OAAO;AAC9B,WAAK,IAAI,SAASA,EAAC;AACnB,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAM,QAAQA,IAAG;AACf,aAAO,aAAa,MAAM,EAAE,IAAI,MAAMA,EAAC;AAAA,IACzC;AAAA;AAAA,IAGA,SAAS;AACP,UAAI,KAAK,OAAO,GAAG;AACjB,aAAK,OAAO,EAAE,cAAc,IAAI;AAAA,MAClC;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,cAAc,SAAS;AACrB,WAAK,KAAK,YAAY,QAAQ,IAAI;AAElC,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,QAAQ,SAAS;AACf,gBAAU,aAAa,OAAO;AAE9B,UAAI,KAAK,KAAK,YAAY;AACxB,aAAK,KAAK,WAAW,aAAa,QAAQ,MAAM,KAAK,IAAI;AAAA,MAC3D;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,YAAY,GAAGC,OAAM,MAAM;AAC/B,YAAM,SAAS,MAAM;AACrB,YAAMF,SAAQ,KAAK,KAAKE,IAAG;AAE3B,iBAAWD,MAAKD,QAAO;AACrB,YAAI,OAAOA,OAAMC,EAAC,MAAM,UAAU;AAChC,UAAAD,OAAMC,EAAC,IAAI,KAAK,MAAMD,OAAMC,EAAC,IAAI,MAAM,IAAI;AAAA,QAC7C;AAAA,MACF;AAEA,WAAK,KAAKD,MAAK;AACf,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,IAAI,SAAS,UAAU;AACrB,aAAO,KAAK,IAAI,SAAS,UAAU,GAAG;AAAA,IACxC;AAAA;AAAA,IAGA,WAAW;AACT,aAAO,KAAK,GAAG;AAAA,IACjB;AAAA,IAEA,MAAM,MAAM;AAEV,WAAK,KAAK,cAAc;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,MAAM;AACT,YAAM,SAAS,KAAK,OAAO;AAE3B,UAAI,CAAC,QAAQ;AACX,eAAO,KAAK,MAAM,IAAI;AAAA,MACxB;AAEA,YAAMI,YAAW,OAAO,MAAM,IAAI;AAClC,aAAO,OAAO,IAAI,MAAMA,SAAQ,EAAE,IAAI,IAAI;AAAA,IAC5C;AAAA;AAAA,IAGA,iBAAiB;AAEf,WAAK,KAAK,WAAY;AACpB,aAAK,eAAe;AAAA,MACtB,CAAC;AAED,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,IAAI,SAAS,UAAUC,KAAI;AACzB,UAAI,OAAO,YAAY,WAAW;AAChC,QAAAA,MAAK;AACL,mBAAW;AACX,kBAAU;AAAA,MACZ;AAGA,UAAI,WAAW,QAAQ,OAAO,YAAY,YAAY;AAEpD,mBAAW,YAAY,OAAO,OAAO;AAGrC,aAAK,eAAe;AACpB,YAAI,UAAU;AAGd,YAAI,WAAW,MAAM;AACnB,oBAAU,MAAM,QAAQ,KAAK,UAAU,IAAI,CAAC;AAG5C,cAAI,UAAU;AACZ,kBAAM,SAAS,QAAQ,OAAO;AAC9B,sBAAU,UAAU;AAGpB,gBAAI,WAAW;AAAO,qBAAO;AAAA,UAC/B;AAGA,kBAAQ,KAAK,WAAY;AACvB,kBAAM,SAAS,QAAQ,IAAI;AAC3B,kBAAM,QAAQ,UAAU;AAGxB,gBAAI,WAAW,OAAO;AACpB,mBAAK,OAAO;AAAA,YAGd,WAAW,UAAU,SAAS,OAAO;AACnC,mBAAK,QAAQ,KAAK;AAAA,YACpB;AAAA,UACF,GAAG,IAAI;AAAA,QACT;AAGA,eAAO,WAAW,QAAQ,KAAK,YAAY,QAAQ,KAAK;AAAA,MAC1D;AAKA,iBAAW,YAAY,OAAO,QAAQ;AAGtC,YAAM,OAAO,OAAO,WAAWA,GAAE;AACjC,YAAM,WAAW,QAAQ,SAAS,uBAAuB;AAGzD,WAAK,YAAY;AAGjB,eAAS,MAAM,KAAK,SAAS,QAAQ,SAAS;AAC5C,iBAAS,YAAY,KAAK,iBAAiB;AAAA,MAC7C;AAEA,YAAM,SAAS,KAAK,OAAO;AAG3B,aAAO,WAAW,KAAK,QAAQ,QAAQ,KAAK,SAAS,KAAK,IAAI,QAAQ;AAAA,IACxE;AAAA,EACF;AAEA,EAAAC,QAAO,KAAK,EAAE,MAAM,MAAAC,OAAM,QAAQ,CAAC;AACnC,EAAAC,UAAS,KAAK,KAAK;;;ACpVnB,MAAqBC,WAArB,cAAqC,IAAI;AAAA,IACvC,YAAY,MAAMC,QAAO;AACvB,YAAM,MAAMA,MAAK;AAGjB,WAAK,MAAM,CAAC;AAGZ,WAAK,KAAK,WAAW;AAErB,UAAI,KAAK,aAAa,YAAY,KAAK,KAAK,aAAa,YAAY,GAAG;AAEtE,aAAK;AAAA,UACH,KAAK,MAAM,KAAK,aAAa,YAAY,CAAC,KACxC,KAAK,MAAM,KAAK,aAAa,YAAY,CAAC,KAC1C,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAGA,OAAOC,IAAGC,IAAG;AACX,aAAO,KAAK,GAAGD,EAAC,EAAE,GAAGC,EAAC;AAAA,IACxB;AAAA;AAAA,IAGA,GAAGD,IAAG;AACJ,aAAOA,MAAK,OACR,KAAK,EAAE,IAAI,KAAK,MAAM,IAAI,IAC1B,KAAK,EAAEA,KAAI,KAAK,MAAM,IAAI,CAAC;AAAA,IACjC;AAAA;AAAA,IAGA,GAAGC,IAAG;AACJ,aAAOA,MAAK,OACR,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,IAC3B,KAAK,EAAEA,KAAI,KAAK,OAAO,IAAI,CAAC;AAAA,IAClC;AAAA;AAAA,IAGA,OAAO;AACL,YAAMC,QAAO,KAAK,KAAK;AACvB,aAAOA,SAAQA,MAAK,KAAK;AAAA,IAC3B;AAAA;AAAA,IAGA,MAAMF,IAAGC,IAAG;AACV,aAAO,KAAK,GAAGD,EAAC,EAAE,GAAGC,EAAC;AAAA,IACxB;AAAA;AAAA,IAGA,GAAGD,KAAI,GAAG;AACR,aAAO,KAAK,EAAE,IAAI,UAAUA,EAAC,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC;AAAA,IAC/C;AAAA;AAAA,IAGA,GAAGC,KAAI,GAAG;AACR,aAAO,KAAK,EAAE,IAAI,UAAUA,EAAC,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC;AAAA,IAC/C;AAAA,IAEA,iBAAiB;AACf,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,OAAOE,SAAQ;AACb,aAAO,KAAK,KAAK,UAAUA,OAAM;AAAA,IACnC;AAAA;AAAA,IAGA,KAAKH,IAAGC,IAAG;AACT,aAAO,KAAK,EAAED,EAAC,EAAE,EAAEC,EAAC;AAAA,IACtB;AAAA;AAAA,IAGA,QAAQ,QAAQ,KAAK,KAAK,GAAG;AAC3B,YAAM,aAAa,OAAO,UAAU;AACpC,UAAI,CAAC,YAAY;AACf,gBAAQ,aAAa,KAAK;AAAA,MAC5B;AACA,YAAM,UAAU,IAAI,aAAK;AACzB,UAAI,SAAS;AAEb,cACG,SAAS,OAAO,OAAO,MACxB,OAAO,SAAS,QAAQ,YACxB,OAAO,aAAa,sBACpB;AACA,gBAAQ,KAAK,MAAM;AAEnB,YAAI,CAAC,cAAc,OAAO,SAAS,MAAM,MAAM;AAC7C;AAAA,QACF;AACA,YAAI,cAAc,OAAO,QAAQ,KAAK,GAAG;AACvC;AAAA,QACF;AACA,YAAI,OAAO,SAAS,KAAK,KAAK,EAAE,MAAM;AAEpC,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,UAAUG,OAAM;AACd,MAAAA,QAAO,KAAK,KAAKA,KAAI;AACrB,UAAI,CAACA;AAAM,eAAO;AAElB,YAAMC,MAAKD,QAAO,IAAI,MAAME,UAAS;AACrC,aAAOD,KAAI,aAAaA,GAAE,CAAC,CAAC,IAAI;AAAA,IAClC;AAAA;AAAA,IAGA,OAAO;AACL,YAAME,KAAI,KAAK,OAAO,SAAS,IAAI,CAAC;AACpC,aAAOA,MAAKA,GAAE,KAAK;AAAA,IACrB;AAAA;AAAA,IAGA,QAAQC,IAAG;AACT,WAAK,MAAMA;AACX,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,KAAKC,QAAON,SAAQ;AAClB,YAAMI,KAAI,iBAAiB,MAAME,QAAON,OAAM;AAE9C,aAAO,KAAK,MAAM,IAAI,UAAUI,GAAE,KAAK,CAAC,EAAE,OAAO,IAAI,UAAUA,GAAE,MAAM,CAAC;AAAA,IAC1E;AAAA;AAAA,IAGA,MAAME,QAAO;AACX,aAAO,KAAK,KAAK,SAASA,MAAK;AAAA,IACjC;AAAA;AAAA,IAGA,iBAAiB;AACf,qBAAe,MAAM,KAAK,GAAG;AAC7B,aAAO,MAAM,eAAe;AAAA,IAC9B;AAAA;AAAA,IAGA,EAAET,IAAG;AACH,aAAO,KAAK,KAAK,KAAKA,EAAC;AAAA,IACzB;AAAA;AAAA,IAGA,EAAEC,IAAG;AACH,aAAO,KAAK,KAAK,KAAKA,EAAC;AAAA,IACzB;AAAA,EACF;AAEA,EAAAS,QAAOZ,UAAS;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,EAAAa,UAASb,UAAS,SAAS;;;AC7K3B,MAAM,QAAQ;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,CAAC,SAAS,WAAW,MAAM;AAAA,IACjC,QAAQ,SAAUc,IAAGC,IAAG;AACtB,aAAOA,OAAM,UAAUD,KAAIA,KAAI,MAAMC;AAAA,IACvC;AAAA,EACF;AAGC,GAAC,QAAQ,QAAQ,EAAE,QAAQ,SAAUC,IAAG;AACvC,UAAM,YAAY,CAAC;AACnB,QAAIC;AAEJ,cAAUD,EAAC,IAAI,SAAUE,IAAG;AAC1B,UAAI,OAAOA,OAAM,aAAa;AAC5B,eAAO,KAAK,KAAKF,EAAC;AAAA,MACpB;AACA,UACE,OAAOE,OAAM,YACbA,cAAaC,UACbA,OAAM,MAAMD,EAAC,KACbA,cAAaE,UACb;AACA,aAAK,KAAKJ,IAAGE,EAAC;AAAA,MAChB,OAAO;AAEL,aAAKD,KAAI,MAAMD,EAAC,EAAE,SAAS,GAAGC,MAAK,GAAGA,MAAK;AACzC,cAAIC,GAAE,MAAMF,EAAC,EAAEC,EAAC,CAAC,KAAK,MAAM;AAC1B,iBAAK,KAAK,MAAM,OAAOD,IAAG,MAAMA,EAAC,EAAEC,EAAC,CAAC,GAAGC,GAAE,MAAMF,EAAC,EAAEC,EAAC,CAAC,CAAC;AAAA,UACxD;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,oBAAgB,CAAC,WAAW,QAAQ,GAAG,SAAS;AAAA,EAClD,CAAC;AAED,kBAAgB,CAAC,WAAW,QAAQ,GAAG;AAAA;AAAA,IAErC,QAAQ,SAAU,KAAKI,IAAGC,IAAGC,IAAGC,IAAGC,IAAG;AAEpC,UAAI,OAAO,MAAM;AACf,eAAO,IAAI,OAAO,IAAI;AAAA,MACxB;AAGA,aAAO,KAAK,KAAK,aAAa,IAAI,OAAO,KAAKJ,IAAGC,IAAGC,IAAGC,IAAGC,EAAC,CAAC;AAAA,IAC9D;AAAA;AAAA,IAGA,QAAQ,SAAU,OAAOC,KAAIC,KAAI;AAC/B,aAAO,KAAK,UAAU,EAAE,QAAQ,OAAO,IAAID,KAAI,IAAIC,IAAG,GAAG,IAAI;AAAA,IAC/D;AAAA;AAAA,IAGA,MAAM,SAAUC,IAAGC,IAAGH,KAAIC,KAAI;AAC5B,aAAO,UAAU,WAAW,KAAK,UAAU,WAAW,IAClD,KAAK,UAAU,EAAE,MAAMC,IAAG,IAAIC,IAAG,IAAIH,IAAG,GAAG,IAAI,IAC/C,KAAK,UAAU,EAAE,MAAM,CAACE,IAAGC,EAAC,GAAG,IAAIH,KAAI,IAAIC,IAAG,GAAG,IAAI;AAAA,IAC3D;AAAA,IAEA,OAAO,SAAU,KAAKD,KAAIC,KAAI;AAC5B,aAAO,KAAK,UAAU,EAAE,OAAO,KAAK,IAAID,KAAI,IAAIC,IAAG,GAAG,IAAI;AAAA,IAC5D;AAAA;AAAA,IAGA,OAAO,SAAUC,IAAGC,IAAGH,KAAIC,KAAI;AAC7B,aAAO,UAAU,WAAW,KAAK,UAAU,WAAW,IAClD,KAAK,UAAU,EAAE,OAAOC,IAAG,IAAIC,IAAG,IAAIH,IAAG,GAAG,IAAI,IAChD,KAAK,UAAU,EAAE,OAAO,CAACE,IAAGC,EAAC,GAAG,IAAIH,KAAI,IAAIC,IAAG,GAAG,IAAI;AAAA,IAC5D;AAAA;AAAA,IAGA,WAAW,SAAUC,IAAGC,IAAG;AACzB,aAAO,KAAK,UAAU,EAAE,WAAW,CAACD,IAAGC,EAAC,EAAE,GAAG,IAAI;AAAA,IACnD;AAAA;AAAA,IAGA,UAAU,SAAUD,IAAGC,IAAG;AACxB,aAAO,KAAK,UAAU,EAAE,UAAU,CAACD,IAAGC,EAAC,EAAE,GAAG,IAAI;AAAA,IAClD;AAAA;AAAA,IAGA,MAAM,SAAU,YAAY,QAAQ,SAAS,UAAU;AACrD,UAAI,aAAa,QAAQ,SAAS,MAAM,IAAI;AAC1C,iBAAS;AACT,oBAAY;AAAA,MACd;AAEA,aAAO,KAAK,UAAU,EAAE,MAAM,WAAW,OAAe,GAAG,IAAI;AAAA,IACjE;AAAA;AAAA,IAGA,SAAS,SAAU,OAAO;AACxB,aAAO,KAAK,KAAK,WAAW,KAAK;AAAA,IACnC;AAAA,EACF,CAAC;AAED,kBAAgB,UAAU;AAAA;AAAA,IAExB,QAAQ,SAAUD,IAAGC,KAAID,IAAG;AAC1B,YAAM,QAAQ,KAAK,YAAY,MAAM;AACrC,aAAO,SAAS,mBACZ,KAAK,KAAK,KAAK,IAAI,UAAUA,EAAC,CAAC,IAC/B,KAAK,GAAGA,EAAC,EAAE,GAAGC,EAAC;AAAA,IACrB;AAAA,EACF,CAAC;AAED,kBAAgB,QAAQ;AAAA;AAAA,IAEtB,QAAQ,WAAY;AAClB,aAAO,KAAK,KAAK,eAAe;AAAA,IAClC;AAAA;AAAA,IAEA,SAAS,SAAUC,SAAQ;AACzB,aAAO,IAAI,MAAM,KAAK,KAAK,iBAAiBA,OAAM,CAAC;AAAA,IACrD;AAAA,EACF,CAAC;AAED,kBAAgB,CAAC,WAAW,QAAQ,GAAG;AAAA;AAAA,IAErC,MAAM,SAAUf,IAAGgB,IAAG;AACpB,UAAI,OAAOhB,OAAM,UAAU;AACzB,aAAKgB,MAAKhB;AAAG,eAAK,KAAKgB,IAAGhB,GAAEgB,EAAC,CAAC;AAC9B,eAAO;AAAA,MACT;AAEA,aAAOhB,OAAM,YACT,KAAK,QAAQgB,EAAC,IACdhB,OAAM,WACJ,KAAK,KAAK,eAAegB,EAAC,IAC1BhB,OAAM,UACJA,OAAM,YACNA,OAAM,YACNA,OAAM,aACNA,OAAM,aACNA,OAAM,UACN,KAAK,KAAK,UAAUA,IAAGgB,EAAC,IACxB,KAAK,KAAKhB,IAAGgB,EAAC;AAAA,IACxB;AAAA,EACF,CAAC;AAGD,MAAMC,WAAU;AAAA,IACd;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,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,OAAO,SAAU,MAAM,OAAO;AAE9B,UAAMC,MAAK,SAAUR,IAAG;AACtB,UAAIA,OAAM,MAAM;AACd,aAAK,IAAI,KAAK;AAAA,MAChB,OAAO;AACL,aAAK,GAAG,OAAOA,EAAC;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,SAAK,KAAK,IAAIQ;AACd,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,kBAAgB,WAAWD,QAAO;;;ACjM3B,WAAS,cAAc;AAC5B,WAAO,KAAK,KAAK,aAAa,IAAI;AAAA,EACpC;AAGO,WAAS,YAAY;AAC1B,UAAME,WAAU,KAAK,KAAK,WAAW,KAAK,IAEvC,MAAM,UAAU,EAChB,MAAM,GAAG,EAAE,EACX,IAAI,SAAU,KAAK;AAElB,YAAM,KAAK,IAAI,KAAK,EAAE,MAAM,GAAG;AAC/B,aAAO;AAAA,QACL,GAAG,CAAC;AAAA,QACJ,GAAG,CAAC,EAAE,MAAM,SAAS,EAAE,IAAI,SAAUC,MAAK;AACxC,iBAAO,WAAWA,IAAG;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,IACF,CAAC,EACA,QAAQ,EAER,OAAO,SAAUD,SAAQE,YAAW;AACnC,UAAIA,WAAU,CAAC,MAAM,UAAU;AAC7B,eAAOF,QAAO,UAAU,OAAO,UAAUE,WAAU,CAAC,CAAC,CAAC;AAAA,MACxD;AACA,aAAOF,QAAOE,WAAU,CAAC,CAAC,EAAE,MAAMF,SAAQE,WAAU,CAAC,CAAC;AAAA,IACxD,GAAG,IAAI,OAAO,CAAC;AAEjB,WAAOF;AAAA,EACT;AAGO,WAAS,SAAS,QAAQG,IAAG;AAClC,QAAI,SAAS;AAAQ,aAAO;AAE5B,QAAI,cAAc,KAAK,IAAI;AAAG,aAAO,KAAK,MAAM,QAAQA,EAAC;AAEzD,UAAMC,OAAM,KAAK,UAAU;AAC3B,UAAM,OAAO,OAAO,UAAU,EAAE,QAAQ;AAExC,SAAK,MAAM,QAAQD,EAAC,EAAE,YAAY,EAAE,UAAU,KAAK,SAASC,IAAG,CAAC;AAEhE,WAAO;AAAA,EACT;AAGO,WAAS,OAAOD,IAAG;AACxB,WAAO,KAAK,SAAS,KAAK,KAAK,GAAGA,EAAC;AAAA,EACrC;AAGO,WAAS,UAAUE,IAAG,UAAU;AAErC,QAAIA,MAAK,QAAQ,OAAOA,OAAM,UAAU;AACtC,YAAM,aAAa,IAAI,OAAO,IAAI,EAAE,UAAU;AAC9C,aAAOA,MAAK,OAAO,aAAa,WAAWA,EAAC;AAAA,IAC9C;AAEA,QAAI,CAAC,OAAO,aAAaA,EAAC,GAAG;AAE3B,MAAAA,KAAI,EAAE,GAAGA,IAAG,QAAQ,UAAUA,IAAG,IAAI,EAAE;AAAA,IACzC;AAGA,UAAM,gBAAgB,aAAa,OAAO,OAAO,YAAY;AAC7D,UAAM,SAAS,IAAI,OAAO,aAAa,EAAE,UAAUA,EAAC;AACpD,WAAO,KAAK,KAAK,aAAa,MAAM;AAAA,EACtC;AAEA,kBAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;;;AC/ED,MAAqB,YAArB,cAAuCC,SAAQ;AAAA,IAC7C,UAAU;AACR,WAAK,KAAK,WAAY;AACpB,YAAI,gBAAgB,WAAW;AAC7B,iBAAO,KAAK,QAAQ,EAAE,QAAQ;AAAA,QAChC;AAAA,MACF,CAAC;AAED,aAAO;AAAA,IACT;AAAA,IAEA,QAAQ,SAAS,KAAK,OAAO,GAAGC,SAAQ,OAAO,MAAM,IAAI,GAAG;AAE1D,MAAAA,SAAQA,WAAU,KAAK,OAAO,SAAS,EAAE,SAASA;AAElD,WAAK,KAAK,SAAUC,IAAG,UAAU;AAE/B,eAAO,SAAS,SAAS,SAASA,KAAI,CAAC,EAAE,SAAS,QAAQD,MAAK;AAAA,MACjE,CAAC;AAED,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA,EACF;AAEA,EAAAE,UAAS,WAAW,WAAW;;;ACxB/B,MAAqB,OAArB,cAAkC,UAAU;AAAA,IAC1C,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,QAAQ,IAAI,GAAGA,MAAK;AAAA,IACtC;AAAA,IAEA,UAAU;AACR,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,aAAO;AAAA,IACT;AAAA,EACF;AAEA,EAAAC,UAAS,MAAM,MAAM;;;ACdrB,MAAqB,QAArB,cAAmCC,SAAQ;AAAA,EAAC;AAE5C,EAAAC,UAAS,OAAO,OAAO;;;ACLvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,WAAS,GAAGC,KAAI;AACrB,WAAO,KAAK,KAAK,MAAMA,GAAE;AAAA,EAC3B;AAGO,WAAS,GAAGC,KAAI;AACrB,WAAO,KAAK,KAAK,MAAMA,GAAE;AAAA,EAC3B;AAGO,WAAS,EAAEC,IAAG;AACnB,WAAOA,MAAK,OAAO,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,GAAGA,KAAI,KAAK,GAAG,CAAC;AAAA,EAClE;AAGO,WAAS,EAAEC,IAAG;AACnB,WAAOA,MAAK,OAAO,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,GAAGA,KAAI,KAAK,GAAG,CAAC;AAAA,EAClE;AAGO,WAAS,GAAGD,IAAG;AACpB,WAAO,KAAK,KAAK,MAAMA,EAAC;AAAA,EAC1B;AAGO,WAAS,GAAGC,IAAG;AACpB,WAAO,KAAK,KAAK,MAAMA,EAAC;AAAA,EAC1B;AAGO,WAAS,MAAMC,QAAO;AAC3B,WAAOA,UAAS,OAAO,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,UAAUA,MAAK,EAAE,OAAO,CAAC,CAAC;AAAA,EAC/E;AAGO,WAAS,OAAOC,SAAQ;AAC7B,WAAOA,WAAU,OACb,KAAK,GAAG,IAAI,IACZ,KAAK,GAAG,IAAI,UAAUA,OAAM,EAAE,OAAO,CAAC,CAAC;AAAA,EAC7C;;;AC9BA,MAAqB,UAArB,cAAqC,MAAM;AAAA,IACzC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,WAAW,IAAI,GAAGA,MAAK;AAAA,IACzC;AAAA,IAEA,KAAKC,QAAOC,SAAQ;AAClB,YAAMC,KAAI,iBAAiB,MAAMF,QAAOC,OAAM;AAE9C,aAAO,KAAK,GAAG,IAAI,UAAUC,GAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE;AAAA,QAC/C,IAAI,UAAUA,GAAE,MAAM,EAAE,OAAO,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,QAAO,SAAS,eAAO;AAEvB,kBAAgB,aAAa;AAAA;AAAA,IAE3B,SAAS,kBAAkB,SAAUH,SAAQ,GAAGC,UAASD,QAAO;AAC9D,aAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,EAAE,KAAKA,QAAOC,OAAM,EAAE,KAAK,GAAG,CAAC;AAAA,IAC9D,CAAC;AAAA,EACH,CAAC;AAED,EAAAG,UAAS,SAAS,SAAS;;;AC/B3B,MAAM,WAAN,cAAuB,IAAI;AAAA,IACzB,YAAY,OAAO,QAAQ,SAAS,uBAAuB,GAAG;AAC5D,YAAM,IAAI;AAAA,IACZ;AAAA;AAAA,IAGA,IAAI,SAAS,UAAUC,KAAI;AACzB,UAAI,OAAO,YAAY,WAAW;AAChC,QAAAA,MAAK;AACL,mBAAW;AACX,kBAAU;AAAA,MACZ;AAIA,UAAI,WAAW,QAAQ,OAAO,YAAY,YAAY;AACpD,cAAM,UAAU,IAAI,IAAI,OAAO,WAAWA,GAAE,CAAC;AAC7C,gBAAQ,IAAI,KAAK,KAAK,UAAU,IAAI,CAAC;AAErC,eAAO,QAAQ,IAAI,OAAOA,GAAE;AAAA,MAC9B;AAGA,aAAO,MAAM,IAAI,SAAS,OAAOA,GAAE;AAAA,IACrC;AAAA,EACF;AAEA,EAAAC,UAAS,UAAU,UAAU;AAE7B,MAAO,mBAAQ;;;ACjCf;AAAA;AAAA,gBAAAC;AAAA,IAAA,UAAAC;AAAA;AAEO,WAASC,MAAKC,IAAGC,IAAG;AACzB,YAAQ,KAAK,YAAY,MAAM,SAAS,mBACpC,KAAK,KAAK,EAAE,IAAI,IAAI,UAAUD,EAAC,GAAG,IAAI,IAAI,UAAUC,EAAC,EAAE,CAAC,IACxD,KAAK,KAAK,EAAE,IAAI,IAAI,UAAUD,EAAC,GAAG,IAAI,IAAI,UAAUC,EAAC,EAAE,CAAC;AAAA,EAC9D;AAEO,WAASC,IAAGF,IAAGC,IAAG;AACvB,YAAQ,KAAK,YAAY,MAAM,SAAS,mBACpC,KAAK,KAAK,EAAE,IAAI,IAAI,UAAUD,EAAC,GAAG,IAAI,IAAI,UAAUC,EAAC,EAAE,CAAC,IACxD,KAAK,KAAK,EAAE,IAAI,IAAI,UAAUD,EAAC,GAAG,IAAI,IAAI,UAAUC,EAAC,EAAE,CAAC;AAAA,EAC9D;;;ACAA,MAAqB,WAArB,cAAsC,UAAU;AAAA,IAC9C,YAAY,MAAME,QAAO;AACvB;AAAA,QACE,UAAU,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,IAAI;AAAA,QACnEA;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAGA,KAAKC,IAAGC,IAAGC,IAAG;AACZ,UAAIF,OAAM;AAAa,QAAAA,KAAI;AAC3B,aAAO,MAAM,KAAKA,IAAGC,IAAGC,EAAC;AAAA,IAC3B;AAAA,IAEA,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,IAEA,UAAU;AACR,aAAO,SAAS,gBAAgB,KAAK,GAAG,IAAI,GAAG;AAAA,IACjD;AAAA;AAAA,IAGA,WAAW;AACT,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA;AAAA,IAGA,OAAO,OAAO;AAEZ,WAAK,MAAM;AAGX,UAAI,OAAO,UAAU,YAAY;AAC/B,cAAM,KAAK,MAAM,IAAI;AAAA,MACvB;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAM;AACJ,aAAO,UAAU,KAAK,GAAG,IAAI;AAAA,IAC/B;AAAA,EACF;AAEA,EAAAC,QAAO,UAAU,kBAAU;AAE3B,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,YAAY,MAAM;AAChB,eAAO,KAAK,KAAK,EAAE,SAAS,GAAG,IAAI;AAAA,MACrC;AAAA,IACF;AAAA;AAAA,IAEA,MAAM;AAAA,MACJ,UAAU,kBAAkB,SAAU,MAAM,OAAO;AACjD,eAAO,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE,OAAO,KAAK;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,UAAU,UAAU;;;ACrE7B,MAAqB,UAArB,cAAqC,UAAU;AAAA;AAAA,IAE7C,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,WAAW,IAAI,GAAGA,MAAK;AAAA,IACzC;AAAA;AAAA,IAGA,KAAKC,IAAGC,IAAGC,IAAG;AACZ,UAAIF,OAAM;AAAa,QAAAA,KAAI;AAC3B,aAAO,MAAM,KAAKA,IAAGC,IAAGC,EAAC;AAAA,IAC3B;AAAA,IAEA,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,IAEA,UAAU;AACR,aAAO,SAAS,gBAAgB,KAAK,GAAG,IAAI,GAAG;AAAA,IACjD;AAAA;AAAA,IAGA,WAAW;AACT,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA;AAAA,IAGA,OAAO,OAAO;AAEZ,WAAK,MAAM;AAGX,UAAI,OAAO,UAAU,YAAY;AAC/B,cAAM,KAAK,MAAM,IAAI;AAAA,MACvB;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAM;AACJ,aAAO,UAAU,KAAK,GAAG,IAAI;AAAA,IAC/B;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,WAAW,MAAM;AACf,eAAO,KAAK,KAAK,EAAE,QAAQ,GAAG,IAAI;AAAA,MACpC;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,SAAS,kBAAkB,SAAUC,QAAOC,SAAQ,OAAO;AACzD,eAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,EAAE,OAAO,KAAK,EAAE,KAAK;AAAA,UAChD,GAAG;AAAA,UACH,GAAG;AAAA,UACH,OAAOD;AAAA,UACP,QAAQC;AAAA,UACR,cAAc;AAAA,QAChB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,SAAS,SAAS;;;AC5D3B,MAAqBC,SAArB,cAAmC,MAAM;AAAA,IACvC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,SAAS,IAAI,GAAGA,MAAK;AAAA,IACvC;AAAA;AAAA,IAGA,KAAK,KAAKC,WAAU;AAClB,UAAI,CAAC;AAAK,eAAO;AAEjB,YAAM,MAAM,IAAI,QAAQ,OAAO,MAAM;AAErC,MAAAC;AAAA,QACE;AAAA,QACA;AAAA,QACA,SAAUC,IAAG;AACX,gBAAMC,KAAI,KAAK,OAAO,OAAO;AAG7B,cAAI,KAAK,MAAM,MAAM,KAAK,KAAK,OAAO,MAAM,GAAG;AAC7C,iBAAK,KAAK,IAAI,OAAO,IAAI,MAAM;AAAA,UACjC;AAEA,cAAIA,cAAa,SAAS;AAExB,gBAAIA,GAAE,MAAM,MAAM,KAAKA,GAAE,OAAO,MAAM,GAAG;AACvC,cAAAA,GAAE,KAAK,KAAK,MAAM,GAAG,KAAK,OAAO,CAAC;AAAA,YACpC;AAAA,UACF;AAEA,cAAI,OAAOH,cAAa,YAAY;AAClC,YAAAA,UAAS,KAAK,MAAME,EAAC;AAAA,UACvB;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAEA,MAAAD,IAAG,KAAK,cAAc,WAAY;AAEhC,QAAAG,KAAI,GAAG;AAAA,MACT,CAAC;AAED,aAAO,KAAK,KAAK,QAAS,IAAI,MAAM,KAAM,KAAK;AAAA,IACjD;AAAA,EACF;AAEA,mBAAiB,SAAUC,OAAM,KAAK,OAAO;AAE3C,QAAIA,UAAS,UAAUA,UAAS,UAAU;AACxC,UAAI,QAAQ,KAAK,GAAG,GAAG;AACrB,cAAM,MAAM,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG;AAAA,MACrC;AAAA,IACF;AAEA,QAAI,eAAeP,QAAO;AACxB,YAAM,MACH,KAAK,EACL,KAAK,EACL,QAAQ,GAAG,GAAG,CAAC,YAAY;AAC1B,gBAAQ,IAAI,GAAG;AAAA,MACjB,CAAC;AAAA,IACL;AAEA,WAAO;AAAA,EACT,CAAC;AAED,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,OAAO,kBAAkB,SAAU,QAAQE,WAAU;AACnD,eAAO,KAAK,IAAI,IAAIF,OAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,QAAQE,SAAQ;AAAA,MAC/D,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAM,UAASR,QAAO,OAAO;;;AC/EvB,MAAqB,aAArB,cAAwC,SAAS;AAAA;AAAA,IAE/C,OAAO;AACL,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,WAAK,QAAQ,SAAU,IAAI;AACzB,eAAO,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI;AAC3B,eAAO,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI;AAC3B,eAAO,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI;AAC3B,eAAO,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI;AAAA,MAC7B,CAAC;AACD,aAAO,IAAI,IAAI,MAAM,MAAM,OAAO,MAAM,OAAO,IAAI;AAAA,IACrD;AAAA;AAAA,IAGA,KAAKS,IAAGC,IAAG;AACT,YAAM,MAAM,KAAK,KAAK;AAGtB,MAAAD,MAAK,IAAI;AACT,MAAAC,MAAK,IAAI;AAGT,UAAI,CAAC,MAAMD,EAAC,KAAK,CAAC,MAAMC,EAAC,GAAG;AAC1B,iBAASC,KAAI,KAAK,SAAS,GAAGA,MAAK,GAAGA,MAAK;AACzC,eAAKA,EAAC,IAAI,CAAC,KAAKA,EAAC,EAAE,CAAC,IAAIF,IAAG,KAAKE,EAAC,EAAE,CAAC,IAAID,EAAC;AAAA,QAC3C;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAME,SAAQ,CAAC,GAAG,CAAC,GAAG;AACpB,YAAM,SAAS,CAAC;AAGhB,UAAIA,kBAAiB,OAAO;AAC1B,QAAAA,SAAQ,MAAM,UAAU,OAAO,MAAM,CAAC,GAAGA,MAAK;AAAA,MAChD,OAAO;AAGL,QAAAA,SAAQA,OAAM,KAAK,EAAE,MAAM,SAAS,EAAE,IAAI,UAAU;AAAA,MACtD;AAIA,UAAIA,OAAM,SAAS,MAAM;AAAG,QAAAA,OAAM,IAAI;AAGtC,eAASD,KAAI,GAAG,MAAMC,OAAM,QAAQD,KAAI,KAAKA,KAAIA,KAAI,GAAG;AACtD,eAAO,KAAK,CAACC,OAAMD,EAAC,GAAGC,OAAMD,KAAI,CAAC,CAAC,CAAC;AAAA,MACtC;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,KAAKE,QAAOC,SAAQ;AAClB,UAAIH;AACJ,YAAM,MAAM,KAAK,KAAK;AAGtB,WAAKA,KAAI,KAAK,SAAS,GAAGA,MAAK,GAAGA,MAAK;AACrC,YAAI,IAAI;AACN,eAAKA,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKE,SAAS,IAAI,QAAQ,IAAI;AAChE,YAAI,IAAI;AACN,eAAKF,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKG,UAAU,IAAI,SAAS,IAAI;AAAA,MACpE;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,SAAS;AACP,aAAO;AAAA,QACL,IAAI,KAAK,CAAC,EAAE,CAAC;AAAA,QACb,IAAI,KAAK,CAAC,EAAE,CAAC;AAAA,QACb,IAAI,KAAK,CAAC,EAAE,CAAC;AAAA,QACb,IAAI,KAAK,CAAC,EAAE,CAAC;AAAA,MACf;AAAA,IACF;AAAA;AAAA,IAGA,WAAW;AACT,YAAMF,SAAQ,CAAC;AAEf,eAASD,KAAI,GAAG,KAAK,KAAK,QAAQA,KAAI,IAAIA,MAAK;AAC7C,QAAAC,OAAM,KAAK,KAAKD,EAAC,EAAE,KAAK,GAAG,CAAC;AAAA,MAC9B;AAEA,aAAOC,OAAM,KAAK,GAAG;AAAA,IACvB;AAAA,IAEA,UAAUG,IAAG;AACX,aAAO,KAAK,MAAM,EAAE,WAAWA,EAAC;AAAA,IAClC;AAAA;AAAA,IAGA,WAAWA,IAAG;AACZ,UAAI,CAAC,OAAO,aAAaA,EAAC,GAAG;AAC3B,QAAAA,KAAI,IAAI,OAAOA,EAAC;AAAA,MAClB;AAEA,eAASJ,KAAI,KAAK,QAAQA,QAAO;AAE/B,cAAM,CAACF,IAAGC,EAAC,IAAI,KAAKC,EAAC;AACrB,aAAKA,EAAC,EAAE,CAAC,IAAII,GAAE,IAAIN,KAAIM,GAAE,IAAIL,KAAIK,GAAE;AACnC,aAAKJ,EAAC,EAAE,CAAC,IAAII,GAAE,IAAIN,KAAIM,GAAE,IAAIL,KAAIK,GAAE;AAAA,MACrC;AAEA,aAAO;AAAA,IACT;AAAA,EACF;;;ACxHA;AAAA;AAAA;AAAA,kBAAAC;AAAA,IAAA,aAAAC;AAAA,IAAA,SAAAC;AAAA,IAAA,SAAAC;AAAA;AAEO,MAAM,aAAa;AAGnB,WAASC,GAAEA,IAAG;AACnB,WAAOA,MAAK,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAKA,IAAG,KAAK,KAAK,EAAE,CAAC;AAAA,EAC/D;AAGO,WAASC,GAAEA,IAAG;AACnB,WAAOA,MAAK,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,GAAGA,EAAC;AAAA,EAC/D;AAGO,WAASC,OAAMA,QAAO;AAC3B,UAAMC,KAAI,KAAK,KAAK;AACpB,WAAOD,UAAS,OAAOC,GAAE,QAAQ,KAAK,KAAKD,QAAOC,GAAE,MAAM;AAAA,EAC5D;AAGO,WAASC,QAAOA,SAAQ;AAC7B,UAAMD,KAAI,KAAK,KAAK;AACpB,WAAOC,WAAU,OAAOD,GAAE,SAAS,KAAK,KAAKA,GAAE,OAAOC,OAAM;AAAA,EAC9D;;;ACZA,MAAqB,OAArB,cAAkC,MAAM;AAAA;AAAA,IAEtC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,QAAQ,IAAI,GAAGA,MAAK;AAAA,IACtC;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,IAAI,WAAW;AAAA,QACpB,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC;AAAA,QACjC,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC;AAAA,MACnC,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,KAAKC,IAAGC,IAAG;AACT,aAAO,KAAK,KAAK,KAAK,MAAM,EAAE,KAAKD,IAAGC,EAAC,EAAE,OAAO,CAAC;AAAA,IACnD;AAAA;AAAA,IAGA,KAAK,IAAI,IAAIC,KAAIC,KAAI;AACnB,UAAI,MAAM,MAAM;AACd,eAAO,KAAK,MAAM;AAAA,MACpB,WAAW,OAAO,OAAO,aAAa;AACpC,aAAK,EAAE,IAAI,IAAI,IAAAD,KAAI,IAAAC,IAAG;AAAA,MACxB,OAAO;AACL,aAAK,IAAI,WAAW,EAAE,EAAE,OAAO;AAAA,MACjC;AAEA,aAAO,KAAK,KAAK,EAAE;AAAA,IACrB;AAAA;AAAA,IAGA,KAAKC,QAAOC,SAAQ;AAClB,YAAMC,KAAI,iBAAiB,MAAMF,QAAOC,OAAM;AAC9C,aAAO,KAAK,KAAK,KAAK,MAAM,EAAE,KAAKC,GAAE,OAAOA,GAAE,MAAM,EAAE,OAAO,CAAC;AAAA,IAChE;AAAA,EACF;AAEA,EAAAC,QAAO,MAAM,eAAO;AAEpB,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,MAAM,kBAAkB,YAAa,MAAM;AAGzC,eAAO,KAAK,UAAU,KAAK;AAAA,UACzB,KAAK,IAAI,IAAI,KAAK,CAAC;AAAA,UACnB,KAAK,CAAC,KAAK,OAAO,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,MAAM,MAAM;;;AC/DrB,MAAqB,SAArB,cAAoC,UAAU;AAAA;AAAA,IAE5C,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,UAAU,IAAI,GAAGA,MAAK;AAAA,IACxC;AAAA;AAAA,IAGA,OAAOC,SAAQ;AACb,aAAO,KAAK,KAAK,gBAAgBA,OAAM;AAAA,IACzC;AAAA,IAEA,OAAO,QAAQ;AACb,aAAO,KAAK,KAAK,UAAU,MAAM;AAAA,IACnC;AAAA;AAAA,IAGA,IAAIC,IAAGC,IAAG;AACR,aAAO,KAAK,KAAK,QAAQD,EAAC,EAAE,KAAK,QAAQC,EAAC;AAAA,IAC5C;AAAA;AAAA,IAGA,WAAW;AACT,aAAO,UAAU,KAAK,GAAG,IAAI;AAAA,IAC/B;AAAA;AAAA,IAGA,OAAO,OAAO;AAEZ,WAAK,MAAM;AAGX,UAAI,OAAO,UAAU,YAAY;AAC/B,cAAM,KAAK,MAAM,IAAI;AAAA,MACvB;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAMC,QAAO;AACX,aAAO,KAAK,KAAK,eAAeA,MAAK;AAAA,IACvC;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA,MACT,UAAU,MAAM;AAEd,eAAO,KAAK,KAAK,EAAE,OAAO,GAAG,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,IACA,MAAM;AAAA;AAAA,MAEJ,QAAQ,kBAAkB,SAAUA,QAAOH,SAAQ,OAAO;AAExD,eAAO,KAAK,IAAI,IAAI,OAAO,CAAC,EACzB,KAAKG,QAAOH,OAAM,EAClB,IAAIG,SAAQ,GAAGH,UAAS,CAAC,EACzB,QAAQ,GAAG,GAAGG,QAAOH,OAAM,EAC3B,KAAK,UAAU,MAAM,EACrB,OAAO,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,IACA,QAAQ;AAAA;AAAA,MAEN,OAAO,QAAQG,QAAOH,SAAQ,OAAO;AACnC,YAAII,QAAO,CAAC,QAAQ;AAGpB,YAAI,WAAW;AAAO,UAAAA,MAAK,KAAK,MAAM;AACtC,QAAAA,QAAOA,MAAK,KAAK,GAAG;AAGpB,iBACE,UAAU,CAAC,aAAa,SACpB,UAAU,CAAC,IACX,KAAK,KAAK,EAAE,OAAOD,QAAOH,SAAQ,KAAK;AAE7C,eAAO,KAAK,KAAKI,OAAM,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,QAAQ,QAAQ;;;AC9EzB,WAAS,iBAAiBC,IAAGC,IAAG;AAC9B,WAAO,SAAUC,IAAG;AAClB,UAAIA,MAAK;AAAM,eAAO,KAAKF,EAAC;AAC5B,WAAKA,EAAC,IAAIE;AACV,UAAID;AAAG,QAAAA,GAAE,KAAK,IAAI;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AAEO,MAAM,SAAS;AAAA,IACpB,KAAK,SAAU,KAAK;AAClB,aAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAU,KAAK;AACnB,aAAO,CAAC,KAAK,IAAI,MAAM,KAAK,EAAE,IAAI,IAAI;AAAA,IACxC;AAAA,IACA,KAAK,SAAU,KAAK;AAClB,aAAO,KAAK,IAAK,MAAM,KAAK,KAAM,CAAC;AAAA,IACrC;AAAA,IACA,KAAK,SAAU,KAAK;AAClB,aAAO,CAAC,KAAK,IAAK,MAAM,KAAK,KAAM,CAAC,IAAI;AAAA,IAC1C;AAAA,IACA,QAAQ,SAAU,IAAI,IAAIE,KAAIC,KAAI;AAEhC,aAAO,SAAUC,IAAG;AAClB,YAAIA,KAAI,GAAG;AACT,cAAI,KAAK,GAAG;AACV,mBAAQ,KAAK,KAAMA;AAAA,UACrB,WAAWF,MAAK,GAAG;AACjB,mBAAQC,MAAKD,MAAME;AAAA,UACrB,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF,WAAWA,KAAI,GAAG;AAChB,cAAIF,MAAK,GAAG;AACV,oBAAS,IAAIC,QAAO,IAAID,OAAOE,MAAKD,MAAKD,QAAO,IAAIA;AAAA,UACtD,WAAW,KAAK,GAAG;AACjB,oBAAS,IAAI,OAAO,IAAI,MAAOE,MAAK,KAAK,OAAO,IAAI;AAAA,UACtD,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,iBAAO,IAAIA,MAAK,IAAIA,OAAM,IAAI,KAAK,IAAIA,MAAK,KAAK,IAAIA,MAAKD,MAAKC,MAAK;AAAA,QACtE;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAEA,OAAO,SAAUC,QAAO,eAAe,OAAO;AAE5C,qBAAe,aAAa,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC;AAElD,UAAI,QAAQA;AACZ,UAAI,iBAAiB,QAAQ;AAC3B,UAAE;AAAA,MACJ,WAAW,iBAAiB,QAAQ;AAClC,UAAE;AAAA,MACJ;AAGA,aAAO,CAACD,IAAG,aAAa,UAAU;AAEhC,YAAI,OAAO,KAAK,MAAMA,KAAIC,MAAK;AAC/B,cAAM,UAAWD,KAAI,OAAQ,MAAM;AAEnC,YAAI,iBAAiB,WAAW,iBAAiB,QAAQ;AACvD,YAAE;AAAA,QACJ;AAEA,YAAI,cAAc,SAAS;AACzB,YAAE;AAAA,QACJ;AAEA,YAAIA,MAAK,KAAK,OAAO,GAAG;AACtB,iBAAO;AAAA,QACT;AAEA,YAAIA,MAAK,KAAK,OAAO,OAAO;AAC1B,iBAAO;AAAA,QACT;AAEA,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAEO,MAAM,UAAN,MAAc;AAAA,IACnB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAOO,MAAM,OAAN,cAAmB,QAAQ;AAAA,IAChC,YAAYE,MAAK,SAAS,MAAM;AAC9B,YAAM;AACN,WAAK,OAAO,OAAOA,GAAE,KAAKA;AAAA,IAC5B;AAAA,IAEA,KAAKC,OAAMC,KAAI,KAAK;AAClB,UAAI,OAAOD,UAAS,UAAU;AAC5B,eAAO,MAAM,IAAIA,QAAOC;AAAA,MAC1B;AACA,aAAOD,SAAQC,MAAKD,SAAQ,KAAK,KAAK,GAAG;AAAA,IAC3C;AAAA,EACF;AAOO,MAAME,cAAN,cAAyB,QAAQ;AAAA,IACtC,YAAYH,KAAI;AACd,YAAM;AACN,WAAK,UAAUA;AAAA,IACjB;AAAA,IAEA,KAAKI,IAAG;AACN,aAAOA,GAAE;AAAA,IACX;AAAA,IAEA,KAAK,SAAS,QAAQ,IAAIA,IAAG;AAC3B,aAAO,KAAK,QAAQ,SAAS,QAAQ,IAAIA,EAAC;AAAA,IAC5C;AAAA,EACF;AAEA,WAAS,cAAc;AAErB,UAAMC,aAAY,KAAK,aAAa,OAAO;AAC3C,UAAM,YAAY,KAAK,cAAc;AAGrC,UAAM,MAAM;AACZ,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK,IAAI,YAAY,MAAM,GAAG;AACzC,UAAM,OAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AAC9C,UAAM,KAAK,OAAO,OAAOA;AAGzB,SAAK,IAAI,IAAI,OAAO;AACpB,SAAK,IAAI,KAAK;AAAA,EAChB;AAEO,MAAM,SAAN,cAAqBF,YAAW;AAAA,IACrC,YAAYE,YAAW,KAAK,YAAY,GAAG;AACzC,YAAM;AACN,WAAK,SAASA,SAAQ,EAAE,UAAU,SAAS;AAAA,IAC7C;AAAA,IAEA,KAAK,SAAS,QAAQ,IAAID,IAAG;AAC3B,UAAI,OAAO,YAAY;AAAU,eAAO;AACxC,MAAAA,GAAE,OAAO,OAAO;AAChB,UAAI,OAAO;AAAU,eAAO;AAC5B,UAAI,OAAO;AAAG,eAAO;AAErB,UAAI,KAAK;AAAK,aAAK;AAEnB,YAAM;AAGN,YAAM,WAAWA,GAAE,YAAY;AAG/B,YAAM,eAAe,CAAC,KAAK,IAAI,WAAW,KAAK,KAAK,UAAU;AAC9D,YAAM,cAAc,UAAU,WAAW,KAAM,eAAe,KAAK,KAAM;AAGzE,MAAAA,GAAE,WAAW,WAAW,eAAe;AAGvC,MAAAA,GAAE,OAAO,KAAK,IAAI,SAAS,WAAW,IAAI,KAAK,IAAI,QAAQ,IAAI;AAC/D,aAAOA,GAAE,OAAO,SAAS;AAAA,IAC3B;AAAA,EACF;AAEA,EAAAE,QAAO,QAAQ;AAAA,IACb,UAAU,iBAAiB,aAAa,WAAW;AAAA,IACnD,WAAW,iBAAiB,cAAc,WAAW;AAAA,EACvD,CAAC;AAEM,MAAM,MAAN,cAAkBH,YAAW;AAAA,IAClC,YAAYI,KAAI,KAAKC,KAAI,MAAMC,KAAI,GAAG,SAAS,KAAM;AACnD,YAAM;AACN,WAAK,EAAEF,EAAC,EAAE,EAAEC,EAAC,EAAE,EAAEC,EAAC,EAAE,OAAO,MAAM;AAAA,IACnC;AAAA,IAEA,KAAK,SAAS,QAAQ,IAAIL,IAAG;AAC3B,UAAI,OAAO,YAAY;AAAU,eAAO;AACxC,MAAAA,GAAE,OAAO,OAAO;AAEhB,UAAI,OAAO;AAAU,eAAO;AAC5B,UAAI,OAAO;AAAG,eAAO;AAErB,YAAMG,KAAI,SAAS;AACnB,UAAIC,MAAKJ,GAAE,YAAY,KAAKG,KAAI;AAChC,YAAME,MAAKF,MAAKH,GAAE,SAAS,MAAM;AACjC,YAAM,SAAS,KAAK;AAGpB,UAAI,WAAW,OAAO;AACpB,QAAAI,KAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAIA,IAAG,MAAM,CAAC;AAAA,MAC3C;AAEA,MAAAJ,GAAE,QAAQG;AACV,MAAAH,GAAE,WAAWI;AAEb,MAAAJ,GAAE,OAAO,KAAK,IAAIG,EAAC,IAAI;AAEvB,aAAOH,GAAE,OAAO,SAAS,WAAW,KAAK,IAAIG,KAAI,KAAK,IAAIC,KAAI,KAAK,IAAIC;AAAA,IACzE;AAAA,EACF;AAEA,EAAAH,QAAO,KAAK;AAAA,IACV,QAAQ,iBAAiB,SAAS;AAAA,IAClC,GAAG,iBAAiB,GAAG;AAAA,IACvB,GAAG,iBAAiB,GAAG;AAAA,IACvB,GAAG,iBAAiB,GAAG;AAAA,EACzB,CAAC;;;ACnOD,MAAM,oBAAoB;AAAA,IACxB,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,EACL;AAEA,MAAM,eAAe;AAAA,IACnB,GAAG,SAAUI,IAAGC,IAAG,IAAI;AACrB,MAAAA,GAAE,IAAI,GAAG,IAAID,GAAE,CAAC;AAChB,MAAAC,GAAE,IAAI,GAAG,IAAID,GAAE,CAAC;AAEhB,aAAO,CAAC,KAAKC,GAAE,GAAGA,GAAE,CAAC;AAAA,IACvB;AAAA,IACA,GAAG,SAAUD,IAAGC,IAAG;AACjB,MAAAA,GAAE,IAAID,GAAE,CAAC;AACT,MAAAC,GAAE,IAAID,GAAE,CAAC;AACT,aAAO,CAAC,KAAKA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,IACzB;AAAA,IACA,GAAG,SAAUA,IAAGC,IAAG;AACjB,MAAAA,GAAE,IAAID,GAAE,CAAC;AACT,aAAO,CAAC,KAAKA,GAAE,CAAC,CAAC;AAAA,IACnB;AAAA,IACA,GAAG,SAAUA,IAAGC,IAAG;AACjB,MAAAA,GAAE,IAAID,GAAE,CAAC;AACT,aAAO,CAAC,KAAKA,GAAE,CAAC,CAAC;AAAA,IACnB;AAAA,IACA,GAAG,SAAUA,IAAGC,IAAG;AACjB,MAAAA,GAAE,IAAID,GAAE,CAAC;AACT,MAAAC,GAAE,IAAID,GAAE,CAAC;AACT,aAAO,CAAC,KAAKA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,IACjD;AAAA,IACA,GAAG,SAAUA,IAAGC,IAAG;AACjB,MAAAA,GAAE,IAAID,GAAE,CAAC;AACT,MAAAC,GAAE,IAAID,GAAE,CAAC;AACT,aAAO,CAAC,KAAKA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,IACrC;AAAA,IACA,GAAG,SAAUA,IAAGC,IAAG;AACjB,MAAAA,GAAE,IAAID,GAAE,CAAC;AACT,MAAAC,GAAE,IAAID,GAAE,CAAC;AACT,aAAO,CAAC,KAAKA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,IACrC;AAAA,IACA,GAAG,SAAUA,IAAGC,IAAG;AACjB,MAAAA,GAAE,IAAID,GAAE,CAAC;AACT,MAAAC,GAAE,IAAID,GAAE,CAAC;AACT,aAAO,CAAC,KAAKA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,IACzB;AAAA,IACA,GAAG,SAAUA,IAAGC,IAAG,IAAI;AACrB,MAAAA,GAAE,IAAI,GAAG;AACT,MAAAA,GAAE,IAAI,GAAG;AACT,aAAO,CAAC,GAAG;AAAA,IACb;AAAA,IACA,GAAG,SAAUD,IAAGC,IAAG;AACjB,MAAAA,GAAE,IAAID,GAAE,CAAC;AACT,MAAAC,GAAE,IAAID,GAAE,CAAC;AACT,aAAO,CAAC,KAAKA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,IACvD;AAAA,EACF;AAEA,MAAM,aAAa,aAAa,MAAM,EAAE;AAExC,WAASE,KAAI,GAAG,KAAK,WAAW,QAAQA,KAAI,IAAI,EAAEA,IAAG;AACnD,iBAAa,WAAWA,EAAC,CAAC,IAAK,SAAUA,IAAG;AAC1C,aAAO,SAAUF,IAAGC,IAAG,IAAI;AACzB,YAAIC,OAAM;AAAK,UAAAF,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIC,GAAE;AAAA,iBACtBC,OAAM;AAAK,UAAAF,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIC,GAAE;AAAA,iBAC3BC,OAAM,KAAK;AAClB,UAAAF,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIC,GAAE;AAChB,UAAAD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIC,GAAE;AAAA,QAClB,OAAO;AACL,mBAASE,KAAI,GAAG,KAAKH,GAAE,QAAQG,KAAI,IAAI,EAAEA,IAAG;AAC1C,YAAAH,GAAEG,EAAC,IAAIH,GAAEG,EAAC,KAAKA,KAAI,IAAIF,GAAE,IAAIA,GAAE;AAAA,UACjC;AAAA,QACF;AAEA,eAAO,aAAaC,EAAC,EAAEF,IAAGC,IAAG,EAAE;AAAA,MACjC;AAAA,IACF,EAAG,WAAWC,EAAC,EAAE,YAAY,CAAC;AAAA,EAChC;AAEA,WAAS,YAAYE,SAAQ;AAC3B,UAAM,UAAUA,QAAO,QAAQ,CAAC;AAChC,WAAO,aAAa,OAAO,EAAEA,QAAO,QAAQ,MAAM,CAAC,GAAGA,QAAO,GAAGA,QAAO,EAAE;AAAA,EAC3E;AAEA,WAAS,gBAAgBA,SAAQ;AAC/B,WACEA,QAAO,QAAQ,UACfA,QAAO,QAAQ,SAAS,MACtB,kBAAkBA,QAAO,QAAQ,CAAC,EAAE,YAAY,CAAC;AAAA,EAEvD;AAEA,WAAS,gBAAgBA,SAAQ,OAAO;AACtC,IAAAA,QAAO,YAAY,eAAeA,SAAQ,KAAK;AAC/C,UAAM,aAAa,aAAa,KAAK,KAAK;AAE1C,QAAI,YAAY;AACd,MAAAA,QAAO,UAAU,CAAC,KAAK;AAAA,IACzB,OAAO;AACL,YAAM,cAAcA,QAAO;AAC3B,YAAM,QAAQ,YAAY,YAAY;AACtC,YAAM,UAAU,gBAAgB;AAChC,MAAAA,QAAO,UAAU,CAAC,UAAU,MAAO,UAAU,MAAM,MAAO,WAAW;AAAA,IACvE;AAEA,IAAAA,QAAO,YAAY;AACnB,IAAAA,QAAO,cAAcA,QAAO,QAAQ,CAAC;AAErC,WAAO;AAAA,EACT;AAEA,WAAS,eAAeA,SAAQ,UAAU;AACxC,QAAI,CAACA,QAAO;AAAU,YAAM,IAAI,MAAM,cAAc;AACpD,IAAAA,QAAO,UAAUA,QAAO,QAAQ,KAAK,WAAWA,QAAO,MAAM,CAAC;AAC9D,IAAAA,QAAO,WAAW;AAClB,IAAAA,QAAO,SAAS;AAChB,IAAAA,QAAO,YAAY;AACnB,IAAAA,QAAO,cAAc;AAErB,QAAI,gBAAgBA,OAAM,GAAG;AAC3B,sBAAgBA,OAAM;AAAA,IACxB;AAAA,EACF;AAEA,WAAS,gBAAgBA,SAAQ;AAC/B,IAAAA,QAAO,YAAY;AACnB,QAAIA,QAAO,UAAU;AACnB,MAAAA,QAAO,UAAU,YAAYA,OAAM;AAAA,IACrC;AACA,IAAAA,QAAO,SAAS,KAAKA,QAAO,OAAO;AAAA,EACrC;AAEA,WAAS,UAAUA,SAAQ;AACzB,QAAI,CAACA,QAAO,QAAQ;AAAQ,aAAO;AACnC,UAAM,QAAQA,QAAO,QAAQ,CAAC,EAAE,YAAY,MAAM;AAClD,UAAMC,UAASD,QAAO,QAAQ;AAE9B,WAAO,UAAUC,YAAW,KAAKA,YAAW;AAAA,EAC9C;AAEA,WAAS,cAAcD,SAAQ;AAC7B,WAAOA,QAAO,UAAU,YAAY,MAAM;AAAA,EAC5C;AAEA,MAAM,iBAAiB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAM,MAAM,MAAM,IAAI,CAAC;AAC1D,WAAS,WAAWE,IAAG,aAAa,MAAM;AAC/C,QAAIC,SAAQ;AACZ,QAAI,QAAQ;AACZ,UAAMH,UAAS;AAAA,MACb,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,WAAW;AAAA,MACX,UAAU,CAAC;AAAA,MACX,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,MACV,IAAI,IAAI,MAAM;AAAA,MACd,GAAG,IAAI,MAAM;AAAA,IACf;AAEA,WAASA,QAAO,YAAY,OAAS,QAAQE,GAAE,OAAOC,QAAO,GAAK;AAChE,UAAI,CAACH,QAAO,WAAW;AACrB,YAAI,gBAAgBA,SAAQ,KAAK,GAAG;AAClC;AAAA,QACF;AAAA,MACF;AAEA,UAAI,UAAU,KAAK;AACjB,YAAIA,QAAO,aAAaA,QAAO,aAAa;AAC1C,yBAAeA,SAAQ,KAAK;AAC5B,YAAEG;AACF;AAAA,QACF;AACA,QAAAH,QAAO,WAAW;AAClB,QAAAA,QAAO,YAAY;AACnB,QAAAA,QAAO,UAAU;AACjB;AAAA,MACF;AAEA,UAAI,CAAC,MAAM,SAAS,KAAK,CAAC,GAAG;AAC3B,YAAIA,QAAO,WAAW,OAAO,UAAUA,OAAM,GAAG;AAC9C,UAAAA,QAAO,WAAW;AAClB,UAAAA,QAAO,SAAS;AAChB,yBAAeA,SAAQ,IAAI;AAC3B;AAAA,QACF;AAEA,QAAAA,QAAO,WAAW;AAClB,QAAAA,QAAO,UAAU;AACjB;AAAA,MACF;AAEA,UAAI,eAAe,IAAI,KAAK,GAAG;AAC7B,YAAIA,QAAO,UAAU;AACnB,yBAAeA,SAAQ,KAAK;AAAA,QAC9B;AACA;AAAA,MACF;AAEA,UAAI,UAAU,OAAO,UAAU,KAAK;AAClC,YAAIA,QAAO,YAAY,CAAC,cAAcA,OAAM,GAAG;AAC7C,yBAAeA,SAAQ,KAAK;AAC5B,YAAEG;AACF;AAAA,QACF;AACA,QAAAH,QAAO,UAAU;AACjB,QAAAA,QAAO,WAAW;AAClB;AAAA,MACF;AAEA,UAAI,MAAM,YAAY,MAAM,KAAK;AAC/B,QAAAA,QAAO,UAAU;AACjB,QAAAA,QAAO,cAAc;AACrB;AAAA,MACF;AAEA,UAAI,aAAa,KAAK,KAAK,GAAG;AAC5B,YAAIA,QAAO,UAAU;AACnB,yBAAeA,SAAQ,KAAK;AAAA,QAC9B,WAAW,CAAC,gBAAgBA,OAAM,GAAG;AACnC,gBAAM,IAAI,MAAM,cAAc;AAAA,QAChC,OAAO;AACL,0BAAgBA,OAAM;AAAA,QACxB;AACA,UAAEG;AAAA,MACJ;AAAA,IACF;AAEA,QAAIH,QAAO,UAAU;AACnB,qBAAeA,SAAQ,KAAK;AAAA,IAC9B;AAEA,QAAIA,QAAO,aAAa,gBAAgBA,OAAM,GAAG;AAC/C,sBAAgBA,OAAM;AAAA,IACxB;AAEA,WAAOA,QAAO;AAAA,EAChB;;;ACpPA,WAAS,cAAcI,IAAG;AACxB,QAAIC,KAAI;AACR,aAASC,KAAI,GAAG,KAAKF,GAAE,QAAQE,KAAI,IAAIA,MAAK;AAC1C,MAAAD,MAAKD,GAAEE,EAAC,EAAE,CAAC;AAEX,UAAIF,GAAEE,EAAC,EAAE,CAAC,KAAK,MAAM;AACnB,QAAAD,MAAKD,GAAEE,EAAC,EAAE,CAAC;AAEX,YAAIF,GAAEE,EAAC,EAAE,CAAC,KAAK,MAAM;AACnB,UAAAD,MAAK;AACL,UAAAA,MAAKD,GAAEE,EAAC,EAAE,CAAC;AAEX,cAAIF,GAAEE,EAAC,EAAE,CAAC,KAAK,MAAM;AACnB,YAAAD,MAAK;AACL,YAAAA,MAAKD,GAAEE,EAAC,EAAE,CAAC;AACX,YAAAD,MAAK;AACL,YAAAA,MAAKD,GAAEE,EAAC,EAAE,CAAC;AAEX,gBAAIF,GAAEE,EAAC,EAAE,CAAC,KAAK,MAAM;AACnB,cAAAD,MAAK;AACL,cAAAA,MAAKD,GAAEE,EAAC,EAAE,CAAC;AACX,cAAAD,MAAK;AACL,cAAAA,MAAKD,GAAEE,EAAC,EAAE,CAAC;AAEX,kBAAIF,GAAEE,EAAC,EAAE,CAAC,KAAK,MAAM;AACnB,gBAAAD,MAAK;AACL,gBAAAA,MAAKD,GAAEE,EAAC,EAAE,CAAC;AAAA,cACb;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAOD,KAAI;AAAA,EACb;AAEA,MAAqB,YAArB,cAAuC,SAAS;AAAA;AAAA,IAE9C,OAAO;AACL,aAAO,EAAE,KAAK,aAAa,KAAK,KAAK,SAAS,CAAC;AAC/C,aAAO,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC;AAAA,IAC5C;AAAA;AAAA,IAGA,KAAKE,IAAGC,IAAG;AAET,YAAM,MAAM,KAAK,KAAK;AAGtB,MAAAD,MAAK,IAAI;AACT,MAAAC,MAAK,IAAI;AAET,UAAI,CAAC,MAAMD,EAAC,KAAK,CAAC,MAAMC,EAAC,GAAG;AAE1B,iBAASC,IAAGH,KAAI,KAAK,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAC5C,UAAAG,KAAI,KAAKH,EAAC,EAAE,CAAC;AAEb,cAAIG,OAAM,OAAOA,OAAM,OAAOA,OAAM,KAAK;AACvC,iBAAKH,EAAC,EAAE,CAAC,KAAKC;AACd,iBAAKD,EAAC,EAAE,CAAC,KAAKE;AAAA,UAChB,WAAWC,OAAM,KAAK;AACpB,iBAAKH,EAAC,EAAE,CAAC,KAAKC;AAAA,UAChB,WAAWE,OAAM,KAAK;AACpB,iBAAKH,EAAC,EAAE,CAAC,KAAKE;AAAA,UAChB,WAAWC,OAAM,OAAOA,OAAM,OAAOA,OAAM,KAAK;AAC9C,iBAAKH,EAAC,EAAE,CAAC,KAAKC;AACd,iBAAKD,EAAC,EAAE,CAAC,KAAKE;AACd,iBAAKF,EAAC,EAAE,CAAC,KAAKC;AACd,iBAAKD,EAAC,EAAE,CAAC,KAAKE;AAEd,gBAAIC,OAAM,KAAK;AACb,mBAAKH,EAAC,EAAE,CAAC,KAAKC;AACd,mBAAKD,EAAC,EAAE,CAAC,KAAKE;AAAA,YAChB;AAAA,UACF,WAAWC,OAAM,KAAK;AACpB,iBAAKH,EAAC,EAAE,CAAC,KAAKC;AACd,iBAAKD,EAAC,EAAE,CAAC,KAAKE;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,MAAME,KAAI,QAAQ;AAChB,UAAI,MAAM,QAAQA,EAAC,GAAG;AACpB,QAAAA,KAAI,MAAM,UAAU,OAAO,MAAM,CAAC,GAAGA,EAAC,EAAE,SAAS;AAAA,MACnD;AAEA,aAAO,WAAWA,EAAC;AAAA,IACrB;AAAA;AAAA,IAGA,KAAKC,QAAOC,SAAQ;AAElB,YAAM,MAAM,KAAK,KAAK;AACtB,UAAIN,IAAGG;AAIP,UAAI,QAAQ,IAAI,UAAU,IAAI,IAAI,IAAI;AACtC,UAAI,SAAS,IAAI,WAAW,IAAI,IAAI,IAAI;AAGxC,WAAKH,KAAI,KAAK,SAAS,GAAGA,MAAK,GAAGA,MAAK;AACrC,QAAAG,KAAI,KAAKH,EAAC,EAAE,CAAC;AAEb,YAAIG,OAAM,OAAOA,OAAM,OAAOA,OAAM,KAAK;AACvC,eAAKH,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKK,SAAS,IAAI,QAAQ,IAAI;AAC9D,eAAKL,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKM,UAAU,IAAI,SAAS,IAAI;AAAA,QAClE,WAAWH,OAAM,KAAK;AACpB,eAAKH,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKK,SAAS,IAAI,QAAQ,IAAI;AAAA,QAChE,WAAWF,OAAM,KAAK;AACpB,eAAKH,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKM,UAAU,IAAI,SAAS,IAAI;AAAA,QAClE,WAAWH,OAAM,OAAOA,OAAM,OAAOA,OAAM,KAAK;AAC9C,eAAKH,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKK,SAAS,IAAI,QAAQ,IAAI;AAC9D,eAAKL,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKM,UAAU,IAAI,SAAS,IAAI;AAChE,eAAKN,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKK,SAAS,IAAI,QAAQ,IAAI;AAC9D,eAAKL,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKM,UAAU,IAAI,SAAS,IAAI;AAEhE,cAAIH,OAAM,KAAK;AACb,iBAAKH,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKK,SAAS,IAAI,QAAQ,IAAI;AAC9D,iBAAKL,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKM,UAAU,IAAI,SAAS,IAAI;AAAA,UAClE;AAAA,QACF,WAAWH,OAAM,KAAK;AAEpB,eAAKH,EAAC,EAAE,CAAC,IAAK,KAAKA,EAAC,EAAE,CAAC,IAAIK,SAAS,IAAI;AACxC,eAAKL,EAAC,EAAE,CAAC,IAAK,KAAKA,EAAC,EAAE,CAAC,IAAIM,UAAU,IAAI;AAGzC,eAAKN,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKK,SAAS,IAAI,QAAQ,IAAI;AAC9D,eAAKL,EAAC,EAAE,CAAC,KAAM,KAAKA,EAAC,EAAE,CAAC,IAAI,IAAI,KAAKM,UAAU,IAAI,SAAS,IAAI;AAAA,QAClE;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,WAAW;AACT,aAAO,cAAc,IAAI;AAAA,IAC3B;AAAA,EACF;;;ACzIA,MAAM,kBAAkB,CAAC,UAAU;AACjC,UAAM,OAAO,OAAO;AAEpB,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT,WAAW,SAAS,UAAU;AAC5B,UAAIC,OAAM,QAAQ,KAAK,GAAG;AACxB,eAAOA;AAAA,MACT,WAAW,UAAU,KAAK,KAAK,GAAG;AAChC,eAAO,aAAa,KAAK,KAAK,IAAI,YAAY;AAAA,MAChD,WAAW,cAAc,KAAK,KAAK,GAAG;AACpC,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,WAAW,eAAe,QAAQ,MAAM,WAAW,IAAI,IAAI;AACzD,aAAO,MAAM;AAAA,IACf,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,aAAO;AAAA,IACT,WAAW,SAAS,UAAU;AAC5B,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAqB,YAArB,MAA+B;AAAA,IAC7B,YAAY,SAAS;AACnB,WAAK,WAAW,WAAW,IAAI,KAAK,GAAG;AAEvC,WAAK,QAAQ;AACb,WAAK,MAAM;AACX,WAAK,QAAQ;AACb,WAAK,WAAW;AAChB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,GAAG,KAAK;AACN,aAAO,KAAK,UAAU;AAAA,QACpB,KAAK;AAAA,QACL,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAAA,IACF;AAAA,IAEA,OAAO;AACL,YAAM,WAAW,KAAK,SAAS,IAAI,KAAK,SAAS,IAAI,EAAE,OAAO,SAC5D,MACA,MACA;AACA,eAAO,QAAQ;AAAA,MACjB,GAAG,IAAI;AACP,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,KAAK;AACR,UAAI,OAAO,MAAM;AACf,eAAO,KAAK;AAAA,MACd;AAEA,WAAK,QAAQ,KAAK,KAAK,GAAG;AAC1B,aAAO;AAAA,IACT;AAAA,IAEA,QAAQ,SAAS;AACf,UAAI,WAAW;AAAM,eAAO,KAAK;AACjC,WAAK,WAAW;AAChB,aAAO;AAAA,IACT;AAAA,IAEA,GAAG,KAAK;AACN,UAAI,OAAO,MAAM;AACf,eAAO,KAAK;AAAA,MACd;AAEA,WAAK,MAAM,KAAK,KAAK,GAAG;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,MAAM;AAET,UAAI,QAAQ,MAAM;AAChB,eAAO,KAAK;AAAA,MACd;AAGA,WAAK,QAAQ;AACb,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,OAAO;AACV,UAAI,CAAC,KAAK,OAAO;AACf,aAAK,KAAK,gBAAgB,KAAK,CAAC;AAAA,MAClC;AAEA,UAAI,SAAS,IAAI,KAAK,MAAM,KAAK;AACjC,UAAI,KAAK,UAAUA,QAAO;AACxB,iBAAS,KAAK,MACV,OAAO,KAAK,IAAI,CAAC,CAAC,EAAE,IACpB,KAAK,QACH,OAAO,KAAK,MAAM,CAAC,CAAC,EAAE,IACtB;AAAA,MACR;AAEA,UAAI,KAAK,UAAU,WAAW;AAC5B,iBAAS,KAAK,MACV,OAAO,MAAM,KAAK,GAAG,IACrB,KAAK,QACH,OAAO,MAAM,KAAK,KAAK,IACvB;AAAA,MACR;AAEA,eAAS,OAAO,aAAa;AAE7B,WAAK,YAAY,KAAK,aAAa,IAAI,KAAK,MAAM;AAClD,WAAK,WACH,KAAK,YACL,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,CAAC,EACnC,IAAI,MAAM,EACV,IAAI,SAAUC,IAAG;AAChB,QAAAA,GAAE,OAAO;AACT,eAAOA;AAAA,MACT,CAAC;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEO,MAAM,eAAN,MAAmB;AAAA,IACxB,eAAe,MAAM;AACnB,WAAK,KAAK,GAAG,IAAI;AAAA,IACnB;AAAA,IAEA,KAAK,KAAK;AACR,YAAM,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI;AACpC,WAAK,QAAQ;AACb,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,aAAO,CAAC,KAAK,KAAK;AAAA,IACpB;AAAA,IAEA,UAAU;AACR,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAEO,MAAM,eAAN,MAAmB;AAAA,IACxB,eAAe,MAAM;AACnB,WAAK,KAAK,GAAG,IAAI;AAAA,IACnB;AAAA,IAEA,KAAK,KAAK;AACR,UAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,cAAM;AAAA,UACJ,QAAQ,IAAI,CAAC;AAAA,UACb,QAAQ,IAAI,CAAC;AAAA,UACb,OAAO,IAAI,CAAC;AAAA,UACZ,QAAQ,IAAI,CAAC;AAAA,UACb,YAAY,IAAI,CAAC;AAAA,UACjB,YAAY,IAAI,CAAC;AAAA,UACjB,SAAS,IAAI,CAAC;AAAA,UACd,SAAS,IAAI,CAAC;AAAA,QAChB;AAAA,MACF;AAEA,aAAO,OAAO,MAAM,aAAa,UAAU,GAAG;AAC9C,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,YAAMC,KAAI;AAEV,aAAO;AAAA,QACLA,GAAE;AAAA,QACFA,GAAE;AAAA,QACFA,GAAE;AAAA,QACFA,GAAE;AAAA,QACFA,GAAE;AAAA,QACFA,GAAE;AAAA,QACFA,GAAE;AAAA,QACFA,GAAE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAEA,eAAa,WAAW;AAAA,IACtB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAEA,MAAM,YAAY,CAACC,IAAGC,OAAM;AAC1B,WAAOD,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAI,KAAKD,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAI,IAAI;AAAA,EAC9C;AAEO,MAAM,YAAN,MAAgB;AAAA,IACrB,eAAe,MAAM;AACnB,WAAK,KAAK,GAAG,IAAI;AAAA,IACnB;AAAA,IAEA,MAAM,OAAO;AACX,YAAM,SAAS,KAAK;AACpB,eAASC,KAAI,GAAG,KAAK,OAAO,QAAQA,KAAI,IAAI,EAAEA,IAAG;AAE/C,YAAI,OAAOA,KAAI,CAAC,MAAM,MAAMA,KAAI,CAAC,GAAG;AAClC,cAAI,OAAOA,KAAI,CAAC,MAAML,UAAS,MAAMK,KAAI,CAAC,MAAM,OAAOA,KAAI,CAAC,GAAG;AAC7D,kBAAM,QAAQ,MAAMA,KAAI,CAAC;AACzB,kBAAMC,SAAQ,IAAIN,OAAM,KAAK,OAAO,OAAOK,KAAI,GAAG,CAAC,CAAC,EACjD,KAAK,EAAE,EACP,QAAQ;AACX,iBAAK,OAAO,OAAOA,KAAI,GAAG,GAAG,GAAGC,MAAK;AAAA,UACvC;AAEA,UAAAD,MAAK,OAAOA,KAAI,CAAC,IAAI;AACrB;AAAA,QACF;AAEA,YAAI,CAAC,MAAMA,KAAI,CAAC,GAAG;AACjB,iBAAO;AAAA,QACT;AAIA,cAAM,gBAAgB,IAAI,MAAMA,KAAI,CAAC,EAAE,EAAE,QAAQ;AAGjD,cAAM,WAAW,OAAOA,KAAI,CAAC,IAAI;AAEjC,eAAO;AAAA,UACLA;AAAA,UACA;AAAA,UACA,MAAMA,EAAC;AAAA,UACP,MAAMA,KAAI,CAAC;AAAA,UACX,MAAMA,KAAI,CAAC;AAAA,UACX,GAAG;AAAA,QACL;AAEA,QAAAA,MAAK,OAAOA,KAAI,CAAC,IAAI;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,UAAU;AACb,WAAK,SAAS,CAAC;AAEf,UAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,aAAK,SAAS,SAAS,MAAM;AAC7B;AAAA,MACF;AAEA,iBAAW,YAAY,CAAC;AACxB,YAAM,UAAU,CAAC;AAEjB,iBAAWA,MAAK,UAAU;AACxB,cAAM,OAAO,gBAAgB,SAASA,EAAC,CAAC;AACxC,cAAM,MAAM,IAAI,KAAK,SAASA,EAAC,CAAC,EAAE,QAAQ;AAC1C,gBAAQ,KAAK,CAACA,IAAG,MAAM,IAAI,QAAQ,GAAG,GAAG,CAAC;AAAA,MAC5C;AAEA,cAAQ,KAAK,SAAS;AAEtB,WAAK,SAAS,QAAQ,OAAO,CAAC,MAAM,SAAS,KAAK,OAAO,IAAI,GAAG,CAAC,CAAC;AAClE,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,UAAU;AACR,YAAM,MAAM,CAAC;AACb,YAAM,MAAM,KAAK;AAGjB,aAAO,IAAI,QAAQ;AACjB,cAAME,OAAM,IAAI,MAAM;AACtB,cAAM,OAAO,IAAI,MAAM;AACvB,cAAM,MAAM,IAAI,MAAM;AACtB,cAAM,SAAS,IAAI,OAAO,GAAG,GAAG;AAChC,YAAIA,IAAG,IAAI,IAAI,KAAK,MAAM;AAAA,MAC5B;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,iBAAiB,CAAC,cAAc,cAAc,SAAS;AAEtD,WAAS,sBAAsB,OAAO,CAAC,GAAG;AAC/C,mBAAe,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;AAAA,EACxC;AAEO,WAAS,gBAAgB;AAC9B,IAAAC,QAAO,gBAAgB;AAAA,MACrB,GAAG,KAAK;AACN,eAAO,IAAI,UAAU,EAClB,KAAK,KAAK,WAAW,EACrB,KAAK,KAAK,QAAQ,CAAC,EACnB,GAAG,GAAG;AAAA,MACX;AAAA,MACA,UAAU,KAAK;AACb,aAAK,KAAK,GAAG;AACb,eAAO;AAAA,MACT;AAAA,MACA,eAAe;AACb,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MACA,MAAMC,OAAMC,KAAI,KAAK,SAAS,SAAS;AACrC,cAAM,SAAS,SAAUL,IAAGM,QAAO;AACjC,iBAAO,QAAQ,KAAKN,IAAGK,IAAGC,MAAK,GAAG,KAAK,QAAQA,MAAK,GAAG,OAAO;AAAA,QAChE;AAEA,eAAO,KAAK,UAAUF,MAAK,IAAI,MAAM,CAAC;AAAA,MACxC;AAAA,IACF,CAAC;AAAA,EACH;;;ACzUA,MAAqB,OAArB,cAAkC,MAAM;AAAA;AAAA,IAEtC,YAAY,MAAMG,SAAQ,MAAM;AAC9B,YAAM,UAAU,QAAQ,IAAI,GAAGA,MAAK;AAAA,IACtC;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,KAAK,WAAW,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,GAAG,CAAC;AAAA,IACnE;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,KAAK;AACZ,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,OAAOC,SAAQ;AACb,aAAOA,WAAU,OACb,KAAK,KAAK,EAAE,SACZ,KAAK,KAAK,KAAK,KAAK,EAAE,OAAOA,OAAM;AAAA,IACzC;AAAA;AAAA,IAGA,KAAKC,IAAGC,IAAG;AACT,aAAO,KAAK,KAAK,KAAK,KAAK,MAAM,EAAE,KAAKD,IAAGC,EAAC,CAAC;AAAA,IAC/C;AAAA;AAAA,IAGA,KAAKC,IAAG;AACN,aAAOA,MAAK,OACR,KAAK,MAAM,IACX,KAAK,MAAM,EAAE;AAAA,QACX;AAAA,QACA,OAAOA,OAAM,WAAWA,KAAK,KAAK,SAAS,IAAI,UAAUA,EAAC;AAAA,MAC5D;AAAA,IACN;AAAA;AAAA,IAGA,KAAKC,QAAOJ,SAAQ;AAClB,YAAMK,KAAI,iBAAiB,MAAMD,QAAOJ,OAAM;AAC9C,aAAO,KAAK,KAAK,KAAK,KAAK,MAAM,EAAE,KAAKK,GAAE,OAAOA,GAAE,MAAM,CAAC;AAAA,IAC5D;AAAA;AAAA,IAGA,MAAMD,QAAO;AACX,aAAOA,UAAS,OACZ,KAAK,KAAK,EAAE,QACZ,KAAK,KAAKA,QAAO,KAAK,KAAK,EAAE,MAAM;AAAA,IACzC;AAAA;AAAA,IAGA,EAAEH,IAAG;AACH,aAAOA,MAAK,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAKA,IAAG,KAAK,KAAK,EAAE,CAAC;AAAA,IAC/D;AAAA;AAAA,IAGA,EAAEC,IAAG;AACH,aAAOA,MAAK,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,GAAGA,EAAC;AAAA,IAC/D;AAAA,EACF;AAGA,OAAK,UAAU,aAAa;AAG5B,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,MAAM,kBAAkB,SAAUC,IAAG;AAEnC,eAAO,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAKA,MAAK,IAAI,UAAU,CAAC;AAAA,MACvD,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAG,UAAS,MAAM,MAAM;;;ACnFrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,WAAS,QAAQ;AACtB,WAAO,KAAK,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,KAAK,QAAQ,CAAC;AAAA,EACzE;AAGO,WAAS,QAAQ;AACtB,WAAO,KAAK;AACZ,WAAO;AAAA,EACT;AAGO,WAAS,KAAKC,IAAGC,IAAG;AACzB,WAAO,KAAK,KAAK,UAAU,KAAK,MAAM,EAAE,KAAKD,IAAGC,EAAC,CAAC;AAAA,EACpD;AAGO,WAAS,KAAKC,IAAG;AACtB,WAAOA,MAAK,OACR,KAAK,MAAM,IACX,KAAK,MAAM,EAAE;AAAA,MACX;AAAA,MACA,OAAOA,OAAM,WAAWA,KAAK,KAAK,SAAS,IAAI,WAAWA,EAAC;AAAA,IAC7D;AAAA,EACN;AAGO,WAAS,KAAKC,QAAOC,SAAQ;AAClC,UAAMF,KAAI,iBAAiB,MAAMC,QAAOC,OAAM;AAC9C,WAAO,KAAK,KAAK,UAAU,KAAK,MAAM,EAAE,KAAKF,GAAE,OAAOA,GAAE,MAAM,CAAC;AAAA,EACjE;;;ACrBA,MAAqB,UAArB,cAAqC,MAAM;AAAA;AAAA,IAEzC,YAAY,MAAMG,SAAQ,MAAM;AAC9B,YAAM,UAAU,WAAW,IAAI,GAAGA,MAAK;AAAA,IACzC;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,SAAS,kBAAkB,SAAUC,IAAG;AAEtC,eAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,EAAE,KAAKA,MAAK,IAAI,WAAW,CAAC;AAAA,MAC3D,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,QAAO,SAAS,eAAO;AACvB,EAAAA,QAAO,SAAS,YAAI;AACpB,EAAAC,UAAS,SAAS,SAAS;;;ACnB3B,MAAqB,WAArB,cAAsC,MAAM;AAAA;AAAA,IAE1C,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,YAAY,IAAI,GAAGA,MAAK;AAAA,IAC1C;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,UAAU,kBAAkB,SAAUC,IAAG;AAEvC,eAAO,KAAK,IAAI,IAAI,SAAS,CAAC,EAAE,KAAKA,MAAK,IAAI,WAAW,CAAC;AAAA,MAC5D,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,QAAO,UAAU,eAAO;AACxB,EAAAA,QAAO,UAAU,YAAI;AACrB,EAAAC,UAAS,UAAU,UAAU;;;ACrB7B,MAAqB,OAArB,cAAkC,MAAM;AAAA;AAAA,IAEtC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,QAAQ,IAAI,GAAGA,MAAK;AAAA,IACtC;AAAA,EACF;AAEA,EAAAC,QAAO,MAAM,EAAE,IAAI,GAAG,CAAC;AAEvB,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,MAAM,kBAAkB,SAAUC,QAAOC,SAAQ;AAC/C,eAAO,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAKD,QAAOC,OAAM;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,MAAM,MAAM;;;AC5BrB,MAAqB,QAArB,MAA2B;AAAA,IACzB,cAAc;AACZ,WAAK,SAAS;AACd,WAAK,QAAQ;AAAA,IACf;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,KAAK,UAAU,KAAK,OAAO;AAAA,IACpC;AAAA;AAAA,IAGA,OAAO;AACL,aAAO,KAAK,SAAS,KAAK,MAAM;AAAA,IAClC;AAAA,IAEA,KAAK,OAAO;AAEV,YAAM,OACJ,OAAO,MAAM,SAAS,cAClB,QACA,EAAE,OAAc,MAAM,MAAM,MAAM,KAAK;AAG7C,UAAI,KAAK,OAAO;AACd,aAAK,OAAO,KAAK;AACjB,aAAK,MAAM,OAAO;AAClB,aAAK,QAAQ;AAAA,MACf,OAAO;AACL,aAAK,QAAQ;AACb,aAAK,SAAS;AAAA,MAChB;AAGA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,OAAO,MAAM;AAEX,UAAI,KAAK;AAAM,aAAK,KAAK,OAAO,KAAK;AACrC,UAAI,KAAK;AAAM,aAAK,KAAK,OAAO,KAAK;AACrC,UAAI,SAAS,KAAK;AAAO,aAAK,QAAQ,KAAK;AAC3C,UAAI,SAAS,KAAK;AAAQ,aAAK,SAAS,KAAK;AAG7C,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,QAAQ;AAEN,YAAMC,UAAS,KAAK;AACpB,UAAI,CAACA;AAAQ,eAAO;AAGpB,WAAK,SAASA,QAAO;AACrB,UAAI,KAAK;AAAQ,aAAK,OAAO,OAAO;AACpC,WAAK,QAAQ,KAAK,SAAS,KAAK,QAAQ;AACxC,aAAOA,QAAO;AAAA,IAChB;AAAA,EACF;;;AC1DA,MAAMC,YAAW;AAAA,IACf,UAAU;AAAA,IACV,QAAQ,IAAI,MAAM;AAAA,IAClB,UAAU,IAAI,MAAM;AAAA,IACpB,YAAY,IAAI,MAAM;AAAA,IACtB,OAAO,MAAM,QAAQ,OAAO,eAAe,QAAQ,OAAO;AAAA,IAC1D,YAAY,CAAC;AAAA,IAEb,MAAMC,KAAI;AAER,YAAM,OAAOD,UAAS,OAAO,KAAK,EAAE,KAAKC,IAAG,CAAC;AAG7C,UAAID,UAAS,aAAa,MAAM;AAC9B,QAAAA,UAAS,WAAW,QAAQ,OAAO,sBAAsBA,UAAS,KAAK;AAAA,MACzE;AAGA,aAAO;AAAA,IACT;AAAA,IAEA,QAAQC,KAAI,OAAO;AACjB,cAAQ,SAAS;AAGjB,YAAM,OAAOD,UAAS,MAAM,EAAE,IAAI,IAAI;AAGtC,YAAM,OAAOA,UAAS,SAAS,KAAK,EAAE,KAAKC,KAAI,KAAW,CAAC;AAG3D,UAAID,UAAS,aAAa,MAAM;AAC9B,QAAAA,UAAS,WAAW,QAAQ,OAAO,sBAAsBA,UAAS,KAAK;AAAA,MACzE;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,UAAUC,KAAI;AAEZ,YAAM,OAAOD,UAAS,WAAW,KAAKC,GAAE;AAExC,UAAID,UAAS,aAAa,MAAM;AAC9B,QAAAA,UAAS,WAAW,QAAQ,OAAO,sBAAsBA,UAAS,KAAK;AAAA,MACzE;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,YAAY,MAAM;AAChB,cAAQ,QAAQA,UAAS,OAAO,OAAO,IAAI;AAAA,IAC7C;AAAA,IAEA,aAAa,MAAM;AACjB,cAAQ,QAAQA,UAAS,SAAS,OAAO,IAAI;AAAA,IAC/C;AAAA,IAEA,gBAAgB,MAAM;AACpB,cAAQ,QAAQA,UAAS,WAAW,OAAO,IAAI;AAAA,IACjD;AAAA,IAEA,MAAME,MAAK;AAGT,UAAI,cAAc;AAClB,YAAM,cAAcF,UAAS,SAAS,KAAK;AAC3C,aAAQ,cAAcA,UAAS,SAAS,MAAM,GAAI;AAEhD,YAAIE,QAAO,YAAY,MAAM;AAC3B,sBAAY,IAAI;AAAA,QAClB,OAAO;AACL,UAAAF,UAAS,SAAS,KAAK,WAAW;AAAA,QACpC;AAGA,YAAI,gBAAgB;AAAa;AAAA,MACnC;AAGA,UAAI,YAAY;AAChB,YAAM,YAAYA,UAAS,OAAO,KAAK;AACvC,aAAO,cAAc,cAAc,YAAYA,UAAS,OAAO,MAAM,IAAI;AACvE,kBAAU,IAAIE,IAAG;AAAA,MACnB;AAEA,UAAI,gBAAgB;AACpB,aAAQ,gBAAgBF,UAAS,WAAW,MAAM,GAAI;AACpD,sBAAc;AAAA,MAChB;AAGA,MAAAA,UAAS,WACPA,UAAS,SAAS,MAAM,KAAKA,UAAS,OAAO,MAAM,IAC/C,QAAQ,OAAO,sBAAsBA,UAAS,KAAK,IACnD;AAAA,IACR;AAAA,EACF;AAEA,MAAO,mBAAQA;;;AChGf,MAAM,eAAe,SAAU,YAAY;AACzC,UAAMG,SAAQ,WAAW;AACzB,UAAMC,YAAW,WAAW,OAAO,SAAS;AAC5C,UAAMC,OAAMF,SAAQC;AACpB,WAAO;AAAA,MACL,OAAOD;AAAA,MACP,UAAUC;AAAA,MACV,KAAKC;AAAA,MACL,QAAQ,WAAW;AAAA,IACrB;AAAA,EACF;AAEA,MAAM,gBAAgB,WAAY;AAChC,UAAMC,KAAI,QAAQ;AAClB,YAAQA,GAAE,eAAeA,GAAE,MAAM,IAAI;AAAA,EACvC;AAEA,MAAqB,WAArB,cAAsC,YAAY;AAAA;AAAA,IAEhD,YAAY,aAAa,eAAe;AACtC,YAAM;AAEN,WAAK,cAAc;AAGnB,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,SAAS;AACP,aAAO,CAAC,CAAC,KAAK;AAAA,IAChB;AAAA,IAEA,SAAS;AAEP,WAAK,KAAK,KAAK,qBAAqB,IAAI,CAAC;AACzC,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA;AAAA,IAGA,aAAa;AACX,YAAM,iBAAiB,KAAK,kBAAkB;AAC9C,YAAM,eAAe,iBAAiB,eAAe,OAAO,SAAS,IAAI;AACzE,YAAM,gBAAgB,iBAAiB,eAAe,QAAQ,KAAK;AACnE,aAAO,gBAAgB;AAAA,IACzB;AAAA,IAEA,uBAAuB;AACrB,YAAM,WAAW,KAAK,SAAS,IAAI,CAACC,OAAMA,GAAE,QAAQA,GAAE,OAAO,SAAS,CAAC;AACvE,aAAO,KAAK,IAAI,GAAG,GAAG,QAAQ;AAAA,IAChC;AAAA,IAEA,oBAAoB;AAClB,aAAO,KAAK,kBAAkB,KAAK,aAAa;AAAA,IAClD;AAAA,IAEA,kBAAkBC,KAAI;AACpB,aAAO,KAAK,SAAS,KAAK,WAAW,QAAQA,GAAE,CAAC,KAAK;AAAA,IACvD;AAAA,IAEA,QAAQ;AACN,WAAK,UAAU;AACf,aAAO,KAAK,UAAU;AAAA,IACxB;AAAA,IAEA,QAAQ,aAAa;AACnB,UAAI,eAAe;AAAM,eAAO,KAAK;AACrC,WAAK,WAAW;AAChB,aAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAEL,WAAK,UAAU;AACf,aAAO,KAAK,WAAW,EAAE,UAAU;AAAA,IACrC;AAAA,IAEA,QAAQ,KAAK;AACX,YAAM,eAAe,KAAK,MAAM;AAChC,UAAI,OAAO;AAAM,eAAO,KAAK,MAAM,CAAC,YAAY;AAEhD,YAAM,WAAW,KAAK,IAAI,YAAY;AACtC,aAAO,KAAK,MAAM,MAAM,CAAC,WAAW,QAAQ;AAAA,IAC9C;AAAA;AAAA,IAGA,SAAS,QAAQ,OAAO,MAAM;AAC5B,UAAI,UAAU,MAAM;AAClB,eAAO,KAAK,SAAS,IAAI,YAAY;AAAA,MACvC;AAMA,UAAI,oBAAoB;AACxB,YAAM,UAAU,KAAK,WAAW;AAChC,cAAQ,SAAS;AAGjB,UAAI,QAAQ,QAAQ,SAAS,UAAU,SAAS,SAAS;AAEvD,4BAAoB;AAAA,MACtB,WAAW,SAAS,cAAc,SAAS,SAAS;AAClD,4BAAoB;AACpB,gBAAQ;AAAA,MACV,WAAW,SAAS,OAAO;AACzB,4BAAoB,KAAK;AAAA,MAC3B,WAAW,SAAS,YAAY;AAC9B,cAAMC,cAAa,KAAK,kBAAkB,OAAO,EAAE;AACnD,YAAIA,aAAY;AACd,8BAAoBA,YAAW,QAAQ;AACvC,kBAAQ;AAAA,QACV;AAAA,MACF,WAAW,SAAS,aAAa;AAC/B,cAAM,iBAAiB,KAAK,kBAAkB;AAC9C,cAAM,gBAAgB,iBAAiB,eAAe,QAAQ,KAAK;AACnE,4BAAoB;AAAA,MACtB,OAAO;AACL,cAAM,IAAI,MAAM,wCAAwC;AAAA,MAC1D;AAGA,aAAO,WAAW;AAClB,aAAO,SAAS,IAAI;AAEpB,YAAM,UAAU,OAAO,QAAQ;AAC/B,YAAM,aAAa;AAAA,QACjB,SAAS,YAAY,OAAO,KAAK,WAAW;AAAA,QAC5C,OAAO,oBAAoB;AAAA,QAC3B;AAAA,MACF;AAEA,WAAK,gBAAgB,OAAO;AAE5B,WAAK,SAAS,KAAK,UAAU;AAC7B,WAAK,SAAS,KAAK,CAACC,IAAGC,OAAMD,GAAE,QAAQC,GAAE,KAAK;AAC9C,WAAK,aAAa,KAAK,SAAS,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;AAE5D,WAAK,WAAW,EAAE,UAAU;AAC5B,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,IAAI;AACP,aAAO,KAAK,KAAK,KAAK,QAAQ,EAAE;AAAA,IAClC;AAAA,IAEA,OAAOC,KAAI;AACT,UAAIA,OAAM;AAAM,eAAO,KAAK;AAC5B,WAAK,cAAcA;AACnB,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,OAAO;AACX,UAAI,SAAS;AAAM,eAAO,KAAK;AAC/B,WAAK,SAAS;AACd,aAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAEL,WAAK,KAAK,CAAC;AACX,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,IAEA,KAAK,MAAM;AACT,UAAI,QAAQ;AAAM,eAAO,KAAK;AAC9B,WAAK,QAAQ;AACb,aAAO,KAAK,UAAU,IAAI;AAAA,IAC5B;AAAA;AAAA,IAGA,WAAW,QAAQ;AACjB,YAAMC,SAAQ,KAAK,WAAW,QAAQ,OAAO,EAAE;AAC/C,UAAIA,SAAQ;AAAG,eAAO;AAEtB,WAAK,SAAS,OAAOA,QAAO,CAAC;AAC7B,WAAK,WAAW,OAAOA,QAAO,CAAC;AAE/B,aAAO,SAAS,IAAI;AACpB,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,aAAa;AACX,UAAI,CAAC,KAAK,OAAO,GAAG;AAClB,aAAK,kBAAkB,KAAK,YAAY;AAAA,MAC1C;AACA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,UAAU,gBAAgB,OAAO;AAC/B,uBAAS,YAAY,KAAK,UAAU;AACpC,WAAK,aAAa;AAElB,UAAI;AAAe,eAAO,KAAK,eAAe;AAC9C,UAAI,KAAK;AAAS,eAAO;AAEzB,WAAK,aAAa,iBAAS,MAAM,KAAK,KAAK;AAC3C,aAAO;AAAA,IACT;AAAA,IAEA,QAAQ,gBAAgB,OAAO;AAE7B,YAAM,OAAO,KAAK,YAAY;AAC9B,UAAI,WAAW,OAAO,KAAK;AAE3B,UAAI;AAAe,mBAAW;AAE9B,YAAM,SAAS,KAAK,SAAS,YAAY,KAAK,QAAQ,KAAK;AAC3D,WAAK,kBAAkB;AAIvB,UAAI,CAAC,eAAe;AAElB,aAAK,SAAS;AACd,aAAK,QAAQ,KAAK,QAAQ,IAAI,IAAI,KAAK;AAAA,MACzC;AACA,WAAK,gBAAgB,KAAK;AAC1B,WAAK,KAAK,QAAQ,KAAK,KAAK;AAa5B,eAASC,KAAI,KAAK,SAAS,QAAQA,QAAO;AAExC,cAAM,aAAa,KAAK,SAASA,EAAC;AAClC,cAAM,SAAS,WAAW;AAI1B,cAAM,YAAY,KAAK,QAAQ,WAAW;AAI1C,YAAI,aAAa,GAAG;AAClB,iBAAO,MAAM;AAAA,QACf;AAAA,MACF;AAGA,UAAI,cAAc;AAClB,eAASP,KAAI,GAAG,MAAM,KAAK,SAAS,QAAQA,KAAI,KAAKA,MAAK;AAExD,cAAM,aAAa,KAAK,SAASA,EAAC;AAClC,cAAM,SAAS,WAAW;AAC1B,YAAI,KAAK;AAIT,cAAM,YAAY,KAAK,QAAQ,WAAW;AAG1C,YAAI,aAAa,GAAG;AAClB,wBAAc;AACd;AAAA,QACF,WAAW,YAAY,IAAI;AAEzB,eAAK;AAAA,QACP;AAEA,YAAI,CAAC,OAAO,OAAO;AAAG;AAItB,cAAM,WAAW,OAAO,KAAK,EAAE,EAAE;AACjC,YAAI,CAAC,UAAU;AACb,wBAAc;AAAA,QAEhB,WAAW,WAAW,YAAY,MAAM;AAEtC,gBAAM,UAAU,OAAO,SAAS,IAAI,OAAO,KAAK,IAAI,KAAK;AAEzD,cAAI,UAAU,WAAW,UAAU,KAAK,OAAO;AAE7C,mBAAO,WAAW;AAClB,cAAEA;AACF,cAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAIA,UACG,eAAe,EAAE,KAAK,SAAS,KAAK,KAAK,UAAU,MACnD,KAAK,WAAW,UAAU,KAAK,SAAS,KAAK,KAAK,QAAQ,GAC3D;AACA,aAAK,UAAU;AAAA,MACjB,OAAO;AACL,aAAK,MAAM;AACX,aAAK,KAAK,UAAU;AAAA,MACtB;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,YAAY;AAIV,WAAK,aAAa;AAClB,WAAK,SAAS;AAGd,WAAK,WAAW;AAGhB,WAAK,aAAa;AAClB,WAAK,UAAU;AACf,WAAK,WAAW,CAAC;AACjB,WAAK,aAAa,CAAC;AACnB,WAAK,gBAAgB;AACrB,WAAK,QAAQ;AACb,WAAK,kBAAkB;AACvB,WAAK,gBAAgB;AAGrB,WAAK,QAAQ,KAAK,QAAQ,KAAK,MAAM,KAAK;AAC1C,WAAK,iBAAiB,KAAK,QAAQ,KAAK,MAAM,IAAI;AAAA,IACpD;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,SAAS;AAAA,MACP,UAAU,SAAUQ,WAAU;AAC5B,YAAIA,aAAY,MAAM;AACpB,eAAK,YAAY,KAAK,aAAa,IAAI,SAAS;AAChD,iBAAO,KAAK;AAAA,QACd,OAAO;AACL,eAAK,YAAYA;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;;;AC7UD,MAAqB,SAArB,cAAoC,YAAY;AAAA,IAC9C,YAAYC,UAAS;AACnB,YAAM;AAGN,WAAK,KAAK,OAAO;AAGjB,MAAAA,WAAUA,YAAW,OAAO,SAAS,WAAWA;AAGhD,MAAAA,WAAU,OAAOA,aAAY,aAAa,IAAIC,YAAWD,QAAO,IAAIA;AAGpE,WAAK,WAAW;AAChB,WAAK,YAAY;AACjB,WAAK,OAAO;AACZ,WAAK,SAAS,CAAC;AAGf,WAAK,YAAY,OAAOA,aAAY,YAAYA;AAChD,WAAK,iBAAiBA,oBAAmBC;AACzC,WAAK,WAAW,KAAK,iBAAiBD,WAAU,IAAI,KAAK;AAGzD,WAAK,WAAW,CAAC;AAGjB,WAAK,UAAU;AACf,WAAK,QAAQ;AACb,WAAK,YAAY;AAGjB,WAAK,WAAW;AAGhB,WAAK,aAAa,IAAI,OAAO;AAC7B,WAAK,cAAc;AAGnB,WAAK,gBAAgB;AACrB,WAAK,WAAW;AAChB,WAAK,aAAa;AAClB,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,SAAS;AAEd,WAAK,WAAW;AAGhB,WAAK,WAAW,KAAK,iBAAiB,OAAO;AAAA,IAC/C;AAAA,IAEA,OAAO,SAASE,WAAU,OAAO,MAAM;AAErC,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,UAAIC,QAAO;AACX,MAAAD,YAAWA,aAAY,SAAS;AAChC,cAAQ,SAAS,SAAS;AAC1B,aAAO,QAAQ;AAGf,UAAI,OAAOA,cAAa,YAAY,EAAEA,qBAAoB,UAAU;AAClE,gBAAQA,UAAS,SAAS;AAC1B,eAAOA,UAAS,QAAQ;AACxB,gBAAQA,UAAS,SAAS;AAC1B,gBAAQA,UAAS,SAAS;AAC1B,QAAAC,QAAOD,UAAS,QAAQC;AACxB,QAAAD,YAAWA,UAAS,YAAY,SAAS;AAAA,MAC3C;AAEA,aAAO;AAAA,QACL,UAAUA;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAMC;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO,SAAS;AACd,UAAI,WAAW;AAAM,eAAO,KAAK;AACjC,WAAK,UAAU;AACf,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aAAaC,YAAW;AACtB,WAAK,WAAW,WAAWA,UAAS;AACpC,aAAO;AAAA,IACT;AAAA,IAEA,MAAMC,KAAI;AACR,aAAO,KAAK,GAAG,YAAYA,GAAE;AAAA,IAC/B;AAAA,IAEA,QAAQH,WAAU,OAAO,MAAM;AAC7B,YAAMI,KAAI,OAAO,SAASJ,WAAU,OAAO,IAAI;AAC/C,YAAM,SAAS,IAAI,OAAOI,GAAE,QAAQ;AACpC,UAAI,KAAK;AAAW,eAAO,SAAS,KAAK,SAAS;AAClD,UAAI,KAAK;AAAU,eAAO,QAAQ,KAAK,QAAQ;AAC/C,aAAO,OAAO,KAAKA,EAAC,EAAE,SAASA,GAAE,OAAOA,GAAE,IAAI;AAAA,IAChD;AAAA,IAEA,iBAAiB;AACf,WAAK,aAAa,IAAI,OAAO;AAC7B,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,2BAA2B;AACzB,UACE,CAAC,KAAK,QACN,CAAC,KAAK,aACN,CAAC,KAAK,UAAU,WAAW,SAAS,KAAK,EAAE,GAC3C;AACA,aAAK,SAAS,KAAK,OAAO,OAAO,CAAC,SAAS;AACzC,iBAAO,CAAC,KAAK;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,MAAM,OAAO;AACX,aAAO,KAAK,QAAQ,GAAG,KAAK;AAAA,IAC9B;AAAA,IAEA,WAAW;AACT,aAAO,KAAK,UAAU,KAAK,QAAQ,KAAK,aAAa,KAAK;AAAA,IAC5D;AAAA,IAEA,OAAOD,KAAI;AACT,aAAO,KAAK,MAAM,MAAMA,GAAE;AAAA,IAC5B;AAAA,IAEA,KAAKA,KAAI;AACP,WAAK,WAAW,IAAI,KAAKA,GAAE;AAC3B,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,QAAQ,SAAS;AACf,UAAI,WAAW;AAAM,eAAO,KAAK;AACjC,WAAK,WAAW;AAChB,cAAQ,eAAe;AACvB,aAAO;AAAA,IACT;AAAA,IAEA,SAAS;AACP,aAAO,KAAK,KAAK,QAAQ;AAAA,IAC3B;AAAA,IAEA,KAAK,OAAO,OAAOF,OAAM;AAEvB,UAAI,OAAO,UAAU,UAAU;AAC7B,gBAAQ,MAAM;AACd,QAAAA,QAAO,MAAM;AACb,gBAAQ,MAAM;AAAA,MAChB;AAGA,WAAK,SAAS,SAAS;AACvB,WAAK,SAAS,SAAS;AACvB,WAAK,QAAQA,SAAQ;AAGrB,UAAI,KAAK,WAAW,MAAM;AACxB,aAAK,SAAS;AAAA,MAChB;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,MAAMI,IAAG;AACP,YAAM,eAAe,KAAK,YAAY,KAAK;AAC3C,UAAIA,MAAK,MAAM;AACb,cAAM,YAAY,KAAK,MAAM,KAAK,QAAQ,YAAY;AACtD,cAAM,eAAe,KAAK,QAAQ,YAAY;AAC9C,cAAMC,YAAW,eAAe,KAAK;AACrC,eAAO,KAAK,IAAI,YAAYA,WAAU,KAAK,MAAM;AAAA,MACnD;AACA,YAAM,QAAQ,KAAK,MAAMD,EAAC;AAC1B,YAAM,UAAUA,KAAI;AACpB,YAAM,OAAO,eAAe,QAAQ,KAAK,YAAY;AACrD,aAAO,KAAK,KAAK,IAAI;AAAA,IACvB;AAAA,IAEA,QAAQ,aAAa;AACnB,UAAI,eAAe;AAAM,eAAO,KAAK;AACrC,WAAK,WAAW;AAChB,aAAO;AAAA,IACT;AAAA,IAEA,SAASA,IAAG;AAEV,YAAME,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,YAAMC,KAAI,KAAK;AACf,UAAIN;AAEJ,UAAID,MAAK,MAAM;AASb,cAAMQ,KAAI,SAAUN,IAAG;AACrB,gBAAM,WAAWI,KAAI,KAAK,MAAOJ,MAAK,KAAKE,KAAID,QAAQC,KAAID,GAAE;AAC7D,gBAAM,YAAa,YAAY,CAACI,MAAO,CAAC,YAAYA;AACpD,gBAAM,WACH,KAAK,IAAI,IAAI,SAAS,KAAKL,MAAKE,KAAID,OAAOA,KAAI;AAClD,gBAAM,UAAU,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC;AACjD,iBAAO;AAAA,QACT;AAGA,cAAM,UAAUE,MAAKD,KAAID,MAAKC;AAC9B,QAAAH,YACEC,MAAK,IACD,KAAK,MAAMM,GAAE,IAAI,CAAC,IAClBN,KAAI,UACFM,GAAEN,EAAC,IACH,KAAK,MAAMM,GAAE,UAAU,IAAI,CAAC;AACpC,eAAOP;AAAA,MACT;AAGA,YAAM,YAAY,KAAK,MAAM,KAAK,MAAM,CAAC;AACzC,YAAM,eAAeK,MAAK,YAAY,MAAM;AAC5C,YAAM,WAAY,gBAAgB,CAACC,MAAOA,MAAK;AAC/C,MAAAN,YAAW,aAAa,WAAWD,KAAI,IAAIA;AAC3C,aAAO,KAAK,MAAMC,SAAQ;AAAA,IAC5B;AAAA,IAEA,SAASD,IAAG;AACV,UAAIA,MAAK,MAAM;AACb,eAAO,KAAK,IAAI,GAAG,KAAK,QAAQ,KAAK,SAAS,CAAC;AAAA,MACjD;AACA,aAAO,KAAK,KAAKA,KAAI,KAAK,SAAS,CAAC;AAAA,IACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,QAAQ,OAAO,YAAY,aAAa;AAC5C,WAAK,OAAO,KAAK;AAAA,QACf,aAAa,UAAUS;AAAA,QACvB,QAAQ,SAASA;AAAA,QACjB,UAAU;AAAA,QACV;AAAA,QACA,aAAa;AAAA,QACb,UAAU;AAAA,MACZ,CAAC;AACD,YAAMC,YAAW,KAAK,SAAS;AAC/B,MAAAA,aAAY,KAAK,SAAS,EAAE,UAAU;AACtC,aAAO;AAAA,IACT;AAAA,IAEA,QAAQ;AACN,UAAI,KAAK;AAAU,eAAO;AAC1B,WAAK,KAAK,CAAC;AACX,WAAK,WAAW;AAChB,aAAO;AAAA,IACT;AAAA,IAEA,QAAQ,SAAS;AACf,WAAK,WAAW,WAAW,OAAO,CAAC,KAAK,WAAW;AACnD,aAAO;AAAA,IACT;AAAA,IAEA,SAASA,WAAU,OAAO,MAAM;AAE9B,UAAI,EAAEA,qBAAoB,WAAW;AACnC,eAAO;AACP,gBAAQA;AACR,QAAAA,YAAW,KAAK,SAAS;AAAA,MAC3B;AAGA,UAAI,CAACA,WAAU;AACb,cAAM,MAAM,6CAA6C;AAAA,MAC3D;AAGA,MAAAA,UAAS,SAAS,MAAM,OAAO,IAAI;AACnC,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,IAAI;AAEP,UAAI,CAAC,KAAK;AAAS,eAAO;AAG1B,WAAK,MAAM,OAAO,KAAK;AACvB,WAAK,SAAS;AACd,YAAMT,YAAW,KAAK,SAAS;AAG/B,YAAM,UAAU,KAAK,kBAAkBA,aAAY,KAAK,SAAS;AACjE,WAAK,gBAAgBA;AAGrB,YAAMN,YAAW,KAAK,SAAS;AAC/B,YAAM,cAAc,KAAK,aAAa,KAAK,KAAK,QAAQ;AACxD,YAAM,eAAe,KAAK,YAAYA,aAAY,KAAK,SAASA;AAEhE,WAAK,YAAY,KAAK;AACtB,UAAI,aAAa;AACf,aAAK,KAAK,SAAS,IAAI;AAAA,MACzB;AAKA,YAAM,cAAc,KAAK;AACzB,WAAK,OAAO,CAAC,eAAe,CAAC,gBAAgB,KAAK,SAASA;AAG3D,WAAK,WAAW;AAEhB,UAAI,YAAY;AAEhB,UAAI,WAAW,aAAa;AAC1B,aAAK,YAAY,OAAO;AAGxB,aAAK,aAAa,IAAI,OAAO;AAC7B,oBAAY,KAAK,KAAK,cAAc,KAAKM,SAAQ;AAEjD,aAAK,KAAK,QAAQ,IAAI;AAAA,MACxB;AAGA,WAAK,OAAO,KAAK,QAAS,aAAa;AACvC,UAAI,cAAc;AAChB,aAAK,KAAK,YAAY,IAAI;AAAA,MAC5B;AACA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,KAAK,MAAM;AACT,UAAI,QAAQ,MAAM;AAChB,eAAO,KAAK;AAAA,MACd;AACA,YAAM,KAAK,OAAO,KAAK;AACvB,WAAK,KAAK,EAAE;AACZ,aAAO;AAAA,IACT;AAAA,IAEA,SAASS,WAAU;AAEjB,UAAI,OAAOA,cAAa;AAAa,eAAO,KAAK;AACjD,WAAK,YAAYA;AACjB,aAAO;AAAA,IACT;AAAA,IAEA,aAAa;AACX,YAAMA,YAAW,KAAK,SAAS;AAC/B,MAAAA,aAAYA,UAAS,WAAW,IAAI;AACpC,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,YAAY,SAAS;AAEnB,UAAI,CAAC,WAAW,CAAC,KAAK;AAAgB;AAGtC,eAASC,KAAI,GAAG,MAAM,KAAK,OAAO,QAAQA,KAAI,KAAK,EAAEA,IAAG;AAEtD,cAAM,UAAU,KAAK,OAAOA,EAAC;AAG7B,cAAM,UAAU,KAAK,kBAAmB,CAAC,QAAQ,eAAe;AAChE,kBAAU,CAAC,QAAQ;AAGnB,YAAI,WAAW,SAAS;AACtB,kBAAQ,YAAY,KAAK,IAAI;AAC7B,kBAAQ,cAAc;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAGA,iBAAiB,QAAQ,SAAS;AAChC,WAAK,SAAS,MAAM,IAAI;AAAA,QACtB;AAAA,QACA,QAAQ,KAAK,OAAO,KAAK,OAAO,SAAS,CAAC;AAAA,MAC5C;AAQA,UAAI,KAAK,gBAAgB;AACvB,cAAMD,YAAW,KAAK,SAAS;AAC/B,QAAAA,aAAYA,UAAS,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA;AAAA;AAAA,IAIA,KAAK,cAAc;AAEjB,UAAI,cAAc;AAClB,eAASC,KAAI,GAAG,MAAM,KAAK,OAAO,QAAQA,KAAI,KAAK,EAAEA,IAAG;AAEtD,cAAM,UAAU,KAAK,OAAOA,EAAC;AAI7B,cAAM,YAAY,QAAQ,OAAO,KAAK,MAAM,YAAY;AACxD,gBAAQ,WAAW,QAAQ,YAAY,cAAc;AACrD,sBAAc,eAAe,QAAQ;AAAA,MACvC;AAGA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,aAAa,QAAQ,QAAQ,OAAO;AAClC,UAAI,KAAK,SAAS,MAAM,GAAG;AAEzB,YAAI,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,aAAa;AAC7C,gBAAMC,SAAQ,KAAK,OAAO,QAAQ,KAAK,SAAS,MAAM,EAAE,MAAM;AAC9D,eAAK,OAAO,OAAOA,QAAO,CAAC;AAC3B,iBAAO;AAAA,QACT;AAIA,YAAI,KAAK,SAAS,MAAM,EAAE,OAAO,UAAU;AACzC,eAAK,SAAS,MAAM,EAAE,OAAO,SAAS,KAAK,MAAM,QAAQ,KAAK;AAAA,QAEhE,OAAO;AACL,eAAK,SAAS,MAAM,EAAE,QAAQ,GAAG,MAAM;AAAA,QACzC;AAEA,aAAK,SAAS,MAAM,EAAE,OAAO,WAAW;AACxC,cAAMF,YAAW,KAAK,SAAS;AAC/B,QAAAA,aAAYA,UAAS,KAAK;AAC1B,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,KAAK;AAEL,MAAM,aAAN,MAAiB;AAAA,IACtB,YAAYG,cAAa,IAAI,OAAO,GAAGC,MAAK,IAAI,OAAO,MAAM;AAC3D,WAAK,aAAaD;AAClB,WAAK,KAAKC;AACV,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,2BAA2B;AAAA,IAAC;AAAA,EAC9B;AAEA,EAAAC,QAAO,CAAC,QAAQ,UAAU,GAAG;AAAA,IAC3B,UAAU,QAAQ;AAChB,aAAO,IAAI;AAAA,QACT,OAAO,WAAW,UAAU,KAAK,UAAU;AAAA,QAC3C,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAID,MAAM,YAAY,CAAC,MAAM,SAAS,KAAK,WAAW,IAAI;AACtD,MAAM,qBAAqB,CAAC,WAAW,OAAO;AAE9C,WAAS,kBAAkB;AAEzB,UAAM,UAAU,KAAK,uBAAuB;AAC5C,UAAM,eAAe,QAClB,IAAI,kBAAkB,EACtB,OAAO,WAAW,IAAI,OAAO,CAAC;AAEjC,SAAK,UAAU,YAAY;AAE3B,SAAK,uBAAuB,MAAM;AAElC,QAAI,KAAK,uBAAuB,OAAO,MAAM,GAAG;AAC9C,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AAEO,MAAM,cAAN,MAAkB;AAAA,IACvB,cAAc;AACZ,WAAK,UAAU,CAAC;AAChB,WAAK,MAAM,CAAC;AAAA,IACd;AAAA,IAEA,IAAI,QAAQ;AACV,UAAI,KAAK,QAAQ,SAAS,MAAM;AAAG;AACnC,YAAMD,MAAK,OAAO,KAAK;AAEvB,WAAK,QAAQ,KAAK,MAAM;AACxB,WAAK,IAAI,KAAKA,GAAE;AAEhB,aAAO;AAAA,IACT;AAAA,IAEA,YAAYA,KAAI;AACd,YAAM,YAAY,KAAK,IAAI,QAAQA,MAAK,CAAC,KAAK;AAC9C,WAAK,IAAI,OAAO,GAAG,WAAW,CAAC;AAC/B,WAAK,QACF,OAAO,GAAG,WAAW,IAAI,WAAW,CAAC,EACrC,QAAQ,CAACP,OAAMA,GAAE,yBAAyB,CAAC;AAC9C,aAAO;AAAA,IACT;AAAA,IAEA,KAAKO,KAAI,WAAW;AAClB,YAAMF,SAAQ,KAAK,IAAI,QAAQE,MAAK,CAAC;AACrC,WAAK,IAAI,OAAOF,QAAO,GAAGE,MAAK,CAAC;AAChC,WAAK,QAAQ,OAAOF,QAAO,GAAG,SAAS;AACvC,aAAO;AAAA,IACT;AAAA,IAEA,QAAQE,KAAI;AACV,aAAO,KAAK,QAAQ,KAAK,IAAI,QAAQA,MAAK,CAAC,CAAC;AAAA,IAC9C;AAAA,IAEA,SAAS;AACP,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,IAEA,QAAQ;AACN,UAAI,aAAa;AACjB,eAASH,KAAI,GAAGA,KAAI,KAAK,QAAQ,QAAQ,EAAEA,IAAG;AAC5C,cAAM,SAAS,KAAK,QAAQA,EAAC;AAE7B,cAAM,YACJ,cACA,OAAO,QACP,WAAW;AAAA,SAEV,CAAC,OAAO,aACP,CAAC,OAAO,UAAU,WAAW,SAAS,OAAO,EAAE,OAChD,CAAC,WAAW,aACX,CAAC,WAAW,UAAU,WAAW,SAAS,WAAW,EAAE;AAE3D,YAAI,WAAW;AAEb,eAAK,OAAO,OAAO,EAAE;AACrB,gBAAM,YAAY,OAAO,UAAU,UAAU;AAC7C,eAAK,KAAK,WAAW,IAAI,SAAS;AAClC,uBAAa;AACb,YAAEA;AAAA,QACJ,OAAO;AACL,uBAAa;AAAA,QACf;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,OAAOG,KAAI;AACT,YAAMF,SAAQ,KAAK,IAAI,QAAQE,MAAK,CAAC;AACrC,WAAK,IAAI,OAAOF,QAAO,CAAC;AACxB,WAAK,QAAQ,OAAOA,QAAO,CAAC;AAC5B,aAAO;AAAA,IACT;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,SAAS;AAAA,MACP,QAAQjB,WAAU,OAAO,MAAM;AAC7B,cAAMI,KAAI,OAAO,SAASJ,WAAU,OAAO,IAAI;AAC/C,cAAMe,YAAW,KAAK,SAAS;AAC/B,eAAO,IAAI,OAAOX,GAAE,QAAQ,EACzB,KAAKA,EAAC,EACN,QAAQ,IAAI,EACZ,SAASW,UAAS,KAAK,CAAC,EACxB,SAASX,GAAE,OAAOA,GAAE,IAAI;AAAA,MAC7B;AAAA,MAEA,MAAM,IAAI,MAAM;AACd,eAAO,KAAK,QAAQ,GAAG,IAAI,IAAI;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,6BAA6B,eAAe;AAC1C,aAAK,uBAAuB,YAAY,cAAc,EAAE;AAAA,MAC1D;AAAA,MAEA,kBAAkB,SAAS;AACzB,eACE,KAAK,uBAAuB,QAIzB,OAAO,CAAC,WAAW,OAAO,MAAM,QAAQ,EAAE,EAC1C,IAAI,kBAAkB,EACtB,OAAO,WAAW,IAAI,OAAO,CAAC;AAAA,MAErC;AAAA,MAEA,WAAW,QAAQ;AACjB,aAAK,uBAAuB,IAAI,MAAM;AAKtC,yBAAS,gBAAgB,KAAK,QAAQ;AACtC,aAAK,WAAW,iBAAS,UAAU,gBAAgB,KAAK,IAAI,CAAC;AAAA,MAC/D;AAAA,MAEA,iBAAiB;AACf,YAAI,KAAK,YAAY,MAAM;AACzB,eAAK,yBAAyB,IAAI,YAAY,EAAE;AAAA,YAC9C,IAAI,WAAW,IAAI,OAAO,IAAI,CAAC;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAGD,MAAM,aAAa,CAACiB,IAAGC,OAAMD,GAAE,OAAO,CAACd,OAAM,CAACe,GAAE,SAASf,EAAC,CAAC;AAE3D,EAAAa,QAAO,QAAQ;AAAA,IACb,KAAKC,IAAGE,IAAG;AACT,aAAO,KAAK,UAAU,QAAQF,IAAGE,EAAC;AAAA,IACpC;AAAA;AAAA,IAGA,IAAIZ,IAAGY,IAAG;AACR,aAAO,KAAK,UAAU,OAAOZ,IAAGY,EAAC;AAAA,IACnC;AAAA,IAEA,UAAU,MAAM,aAAa,KAAK;AAChC,UAAI,OAAO,gBAAgB,UAAU;AACnC,eAAO,KAAK,UAAU,MAAM,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;AAAA,MACpD;AAEA,UAAIC,SAAQ;AACZ,UAAI,KAAK,aAAa,MAAMA,MAAK;AAAG,eAAO;AAE3C,UAAI,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,GAAGA,MAAK;AACnD,UAAI,OAAO,OAAO,KAAKA,MAAK;AAE5B,WAAK;AAAA,QACH,WAAY;AACV,oBAAU,QAAQ,KAAK,KAAK,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,QACnD;AAAA,QACA,SAAU,KAAK;AACb,eAAK,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC;AAC9C,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,QACA,SAAU,YAAY;AAEpB,gBAAM,UAAU,OAAO,KAAK,UAAU;AACtC,gBAAM,cAAc,WAAW,SAAS,IAAI;AAG5C,cAAI,YAAY,QAAQ;AAEtB,kBAAM,iBAAiB,KAAK,QAAQ,EAAE,IAAI,EAAE,WAAW;AAGvD,kBAAM,eAAe,IAAI,UAAU,QAAQ,KAAK,CAAC,EAAE,QAAQ;AAG3D,mBAAO,OAAO,cAAc,cAAc;AAC1C,oBAAQ,KAAK,YAAY;AAAA,UAC3B;AAGA,gBAAM,aAAa,IAAI,UAAU,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAGvD,iBAAO,OAAO,YAAY,UAAU;AAGpC,kBAAQ,GAAG,UAAU;AAGrB,iBAAO;AACP,UAAAA,SAAQ;AAAA,QACV;AAAA,MACF;AAEA,WAAK,iBAAiB,MAAM,OAAO;AACnC,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,OAAOC,QAAO;AACjB,UAAI,KAAK,aAAa,QAAQ,OAAOA,MAAK;AAAG,eAAO;AAEpD,UAAI,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,GAAG,IAAI,UAAU,KAAK,CAAC;AAElE,WAAK;AAAA,QACH,WAAY;AACV,oBAAU,QAAQ,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC;AAAA,QAC9C;AAAA,QACA,SAAU,KAAK;AACb,eAAK,QAAQ,EAAE,KAAK,QAAQ,GAAG,GAAG,GAAGA,MAAK;AAC1C,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,QACA,SAAU,UAAU,UAAU;AAC5B,UAAAA,SAAQ;AACR,kBAAQ,GAAG,QAAQ;AAAA,QACrB;AAAA,MACF;AAEA,WAAK,iBAAiB,QAAQ,OAAO;AACrC,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmBA,UAAUP,aAAY,UAAU,QAAQ;AAEtC,iBAAWA,YAAW,YAAY;AAClC,UACE,KAAK,kBACL,CAAC,YACD,KAAK,aAAa,aAAaA,WAAU,GACzC;AACA,eAAO;AAAA,MACT;AAGA,YAAM,WAAW,OAAO,aAAaA,WAAU;AAC/C,eACEA,YAAW,UAAU,OACjBA,YAAW,SACX,UAAU,OACR,SACA,CAAC;AAGT,YAAM,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE;AAAA,QAC3C,SAAS,eAAe;AAAA,MAC1B;AAEA,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,eAAS,QAAQ;AAEf,kBAAU,WAAW,KAAK,QAAQ;AAClC,iBAAS,UAAU,UAAUA,aAAY,OAAO;AAEhD,yBAAiB,IAAI,OAAO,WAAW,SAAY,OAAO;AAG1D,gBAAQ,WAAW,IAAI;AAGvB,YAAI,CAAC,UAAU;AACb,kBAAQ,6BAA6B,IAAI;AAAA,QAC3C;AAAA,MACF;AAEA,eAAS,IAAI,KAAK;AAGhB,YAAI,CAAC;AAAU,eAAK,eAAe;AAEnC,cAAM,EAAE,GAAAX,IAAG,GAAAmB,GAAE,IAAI,IAAI,MAAM,MAAM,EAAE;AAAA,UACjC,QAAQ,kBAAkB,IAAI;AAAA,QAChC;AAEA,YAAI,SAAS,IAAI,OAAO,EAAE,GAAGR,aAAY,QAAQ,CAACX,IAAGmB,EAAC,EAAE,CAAC;AACzD,YAAIC,SAAQ,KAAK,kBAAkB,UAAU,UAAU;AAEvD,YAAI,QAAQ;AACV,mBAAS,OAAO,UAAUpB,IAAGmB,EAAC;AAC9B,UAAAC,SAAQA,OAAM,UAAUpB,IAAGmB,EAAC;AAG5B,gBAAM,UAAU,OAAO;AACvB,gBAAM,WAAWC,OAAM;AAGvB,gBAAM,gBAAgB,CAAC,UAAU,KAAK,SAAS,UAAU,GAAG;AAC5D,gBAAM,YAAY,cAAc,IAAI,CAACN,OAAM,KAAK,IAAIA,KAAI,QAAQ,CAAC;AACjE,gBAAM,WAAW,KAAK,IAAI,GAAG,SAAS;AACtC,gBAAMJ,SAAQ,UAAU,QAAQ,QAAQ;AACxC,iBAAO,SAAS,cAAcA,MAAK;AAAA,QACrC;AAEA,YAAI,UAAU;AAGZ,cAAI,CAAC,UAAU;AACb,mBAAO,SAASC,YAAW,UAAU;AAAA,UACvC;AACA,cAAI,KAAK,kBAAkB,cAAc;AACvC,YAAAS,OAAM,SAAS;AAAA,UACjB;AAAA,QACF;AAEA,gBAAQ,KAAKA,MAAK;AAClB,gBAAQ,GAAG,MAAM;AAEjB,cAAM,mBAAmB,QAAQ,GAAG,GAAG;AACvC,uBAAe,iBAAiB;AAChC,kBAAU,IAAI,OAAO,gBAAgB;AAErC,aAAK,aAAa,OAAO;AACzB,gBAAQ,WAAW,IAAI;AACvB,eAAO,QAAQ,KAAK;AAAA,MACtB;AAEA,eAAS,SAAS,eAAe;AAE/B,aACG,cAAc,UAAU,UAAU,SAAS,OAC3CT,YAAW,UAAU,UAAU,SAAS,GACzC;AACA,mBAAS,UAAU,eAAe,OAAO;AAAA,QAC3C;AAGA,QAAAA,cAAa,EAAE,GAAG,eAAe,OAAO;AAAA,MAC1C;AAEA,WAAK,MAAM,OAAO,KAAK,UAAU,IAAI;AACrC,WAAK,kBAAkB,KAAK,iBAAiB,aAAa,OAAO;AACjE,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,EAAEX,IAAG;AACH,aAAO,KAAK,aAAa,KAAKA,EAAC;AAAA,IACjC;AAAA;AAAA,IAGA,EAAEmB,IAAG;AACH,aAAO,KAAK,aAAa,KAAKA,EAAC;AAAA,IACjC;AAAA,IAEA,GAAGnB,IAAG;AACJ,aAAO,KAAK,aAAa,MAAMA,EAAC;AAAA,IAClC;AAAA,IAEA,GAAGmB,IAAG;AACJ,aAAO,KAAK,aAAa,MAAMA,EAAC;AAAA,IAClC;AAAA,IAEA,GAAGnB,KAAI,GAAG;AACR,aAAO,KAAK,kBAAkB,KAAKA,EAAC;AAAA,IACtC;AAAA,IAEA,GAAGmB,KAAI,GAAG;AACR,aAAO,KAAK,kBAAkB,KAAKA,EAAC;AAAA,IACtC;AAAA,IAEA,MAAMnB,IAAGmB,IAAG;AACV,aAAO,KAAK,GAAGnB,EAAC,EAAE,GAAGmB,EAAC;AAAA,IACxB;AAAA,IAEA,kBAAkB,QAAQE,KAAI;AAC5B,MAAAA,MAAK,IAAI,UAAUA,GAAE;AAGrB,UAAI,KAAK,aAAa,QAAQA,GAAE;AAAG,eAAO;AAG1C,YAAM,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,GAAGA,GAAE;AAClD,UAAIC,QAAO;AACX,WAAK;AAAA,QACH,WAAY;AACV,UAAAA,QAAO,KAAK,QAAQ,EAAE,MAAM,EAAE;AAC9B,kBAAQ,KAAKA,KAAI;AACjB,kBAAQ,GAAGA,QAAOD,GAAE;AAAA,QACtB;AAAA,QACA,SAAU,KAAK;AACb,eAAK,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,GAAG,CAAC;AACtC,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,QACA,SAAU,OAAO;AACf,kBAAQ,GAAGC,QAAO,IAAI,UAAU,KAAK,CAAC;AAAA,QACxC;AAAA,MACF;AAGA,WAAK,iBAAiB,QAAQ,OAAO;AACrC,aAAO;AAAA,IACT;AAAA,IAEA,aAAa,QAAQD,KAAI;AAEvB,UAAI,KAAK,aAAa,QAAQA,GAAE;AAAG,eAAO;AAG1C,YAAM,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,GAAGA,GAAE;AAClD,WAAK;AAAA,QACH,WAAY;AACV,kBAAQ,KAAK,KAAK,QAAQ,EAAE,MAAM,EAAE,CAAC;AAAA,QACvC;AAAA,QACA,SAAU,KAAK;AACb,eAAK,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,GAAG,CAAC;AACtC,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,MACF;AAGA,WAAK,iBAAiB,QAAQ,OAAO;AACrC,aAAO;AAAA,IACT;AAAA,IAEA,aAAa,QAAQ,OAAO;AAC1B,aAAO,KAAK,aAAa,QAAQ,IAAI,UAAU,KAAK,CAAC;AAAA,IACvD;AAAA;AAAA,IAGA,GAAGrB,IAAG;AACJ,aAAO,KAAK,aAAa,MAAMA,EAAC;AAAA,IAClC;AAAA;AAAA,IAGA,GAAGmB,IAAG;AACJ,aAAO,KAAK,aAAa,MAAMA,EAAC;AAAA,IAClC;AAAA;AAAA,IAGA,KAAKnB,IAAGmB,IAAG;AACT,aAAO,KAAK,EAAEnB,EAAC,EAAE,EAAEmB,EAAC;AAAA,IACtB;AAAA,IAEA,MAAMnB,IAAGmB,IAAG;AACV,aAAO,KAAK,GAAGnB,EAAC,EAAE,GAAGmB,EAAC;AAAA,IACxB;AAAA;AAAA,IAGA,OAAOnB,IAAGmB,IAAG;AACX,aAAO,KAAK,GAAGnB,EAAC,EAAE,GAAGmB,EAAC;AAAA,IACxB;AAAA;AAAA,IAGA,KAAKI,QAAOC,SAAQ;AAElB,UAAI;AAEJ,UAAI,CAACD,UAAS,CAACC,SAAQ;AACrB,cAAM,KAAK,SAAS,KAAK;AAAA,MAC3B;AAEA,UAAI,CAACD,QAAO;AACV,QAAAA,SAAS,IAAI,QAAQ,IAAI,SAAUC;AAAA,MACrC;AAEA,UAAI,CAACA,SAAQ;AACX,QAAAA,UAAU,IAAI,SAAS,IAAI,QAASD;AAAA,MACtC;AAEA,aAAO,KAAK,MAAMA,MAAK,EAAE,OAAOC,OAAM;AAAA,IACxC;AAAA;AAAA,IAGA,MAAMD,QAAO;AACX,aAAO,KAAK,aAAa,SAASA,MAAK;AAAA,IACzC;AAAA;AAAA,IAGA,OAAOC,SAAQ;AACb,aAAO,KAAK,aAAa,UAAUA,OAAM;AAAA,IAC3C;AAAA;AAAA,IAGA,KAAKV,IAAGC,IAAGU,IAAGxB,IAAG;AAEf,UAAI,UAAU,WAAW,GAAG;AAC1B,eAAO,KAAK,KAAK,CAACa,IAAGC,IAAGU,IAAGxB,EAAC,CAAC;AAAA,MAC/B;AAEA,UAAI,KAAK,aAAa,QAAQa,EAAC;AAAG,eAAO;AAEzC,YAAM,UAAU,IAAI,UAAU,KAAK,QAAQ,EACxC,KAAK,KAAK,SAAS,UAAU,EAC7B,GAAGA,EAAC;AAEP,WAAK;AAAA,QACH,WAAY;AACV,kBAAQ,KAAK,KAAK,SAAS,MAAM,CAAC;AAAA,QACpC;AAAA,QACA,SAAU,KAAK;AACb,eAAK,SAAS,KAAK,QAAQ,GAAG,GAAG,CAAC;AAClC,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,MACF;AAEA,WAAK,iBAAiB,QAAQ,OAAO;AACrC,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,QAAQ,OAAO;AACb,aAAO,KAAK,aAAa,WAAW,KAAK;AAAA,IAC3C;AAAA;AAAA,IAGA,QAAQd,IAAGmB,IAAGI,QAAOC,SAAQ;AAC3B,aAAO,KAAK,aAAa,WAAW,IAAI,IAAIxB,IAAGmB,IAAGI,QAAOC,OAAM,CAAC;AAAA,IAClE;AAAA,IAEA,OAAO3B,IAAG;AACR,UAAI,OAAOA,OAAM,UAAU;AACzB,eAAO,KAAK,OAAO;AAAA,UACjB,QAAQ,UAAU,CAAC;AAAA,UACnB,OAAO,UAAU,CAAC;AAAA,UAClB,SAAS,UAAU,CAAC;AAAA,QACtB,CAAC;AAAA,MACH;AAEA,UAAIA,GAAE,WAAW;AAAM,aAAK,KAAK,gBAAgBA,GAAE,OAAO;AAC1D,UAAIA,GAAE,SAAS;AAAM,aAAK,KAAK,cAAcA,GAAE,KAAK;AACpD,UAAIA,GAAE,UAAU;AAAM,aAAK,KAAK,UAAUA,GAAE,MAAM;AAElD,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,EAAAgB,QAAO,QAAQ,EAAE,IAAI,IAAI,MAAAS,OAAM,IAAAD,IAAG,CAAC;AACnC,EAAAK,UAAS,QAAQ,QAAQ;;;AChjCzB,MAAqB,MAArB,cAAiC,UAAU;AAAA,IACzC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,OAAO,IAAI,GAAGA,MAAK;AACnC,WAAK,UAAU;AAAA,IACjB;AAAA;AAAA,IAGA,OAAO;AACL,UAAI,CAAC,KAAK,OAAO;AAAG,eAAO,KAAK,KAAK,EAAE,KAAK;AAE5C,aAAO,MAAM,KAAK,KAAK,cAAc,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC;AAAA,IACtE;AAAA,IAEA,SAAS;AACP,aACE,CAAC,KAAK,KAAK,cACV,EAAE,KAAK,KAAK,sBAAsB,QAAQ,OAAO,eAChD,KAAK,KAAK,WAAW,aAAa;AAAA,IAExC;AAAA;AAAA,IAGA,YAAY;AACV,UAAI,CAAC,KAAK,OAAO;AAAG,eAAO,KAAK,KAAK,EAAE,UAAU;AACjD,aAAO,KAAK,KAAK,EAAE,OAAO,KAAK,SAAS,MAAM,CAAC,EAAE;AAAA,QAC/C;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB,aAAO,KAAK,KAAK,EAAE,OAAO,MAAM,SAAS,KAAK,CAAC,EAC5C,KAAK,eAAe,MAAM,KAAK,EAC/B,KAAK,eAAe,MAAM,KAAK;AAAA,IACpC;AAAA;AAAA;AAAA,IAIA,OAAO;AACL,UAAI,KAAK,OAAO;AAAG,eAAO;AAC1B,aAAO,MAAM,KAAK;AAAA,IACpB;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,QAAQ,kBAAkB,WAAY;AACpC,eAAO,KAAK,IAAI,IAAI,IAAI,CAAC;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,KAAK,OAAO,IAAI;;;AC9DzB,MAAqBC,UAArB,cAAoC,UAAU;AAAA;AAAA,IAE5C,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,UAAU,IAAI,GAAGA,MAAK;AAAA,IACxC;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA,MACT,QAAQ,kBAAkB,WAAY;AACpC,eAAO,KAAK,IAAI,IAAID,QAAO,CAAC;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAE,UAASF,SAAQ,QAAQ;;;ACnBzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAG;AAAA,IAAA,UAAAC;AAAA,IAAA,cAAAC;AAAA,IAAA,YAAAC;AAAA,IAAA;AAAA,aAAAC;AAAA,IAAA,SAAAC;AAAA;AAGO,WAAS,MAAM,MAAM;AAE1B,QAAI,KAAK,WAAW,OAAO;AACzB,WAAK,MAAM;AAAA,IACb;AAGA,SAAK,KAAK,YAAY,QAAQ,SAAS,eAAe,IAAI,CAAC;AAE3D,WAAO;AAAA,EACT;AAGO,WAASC,UAAS;AACvB,WAAO,KAAK,KAAK,sBAAsB;AAAA,EACzC;AAKO,WAASC,GAAEA,IAAG,MAAM,KAAK,KAAK,GAAG;AACtC,QAAIA,MAAK,MAAM;AACb,aAAO,IAAI;AAAA,IACb;AAEA,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAIA,KAAI,IAAI,CAAC;AAAA,EAClD;AAGO,WAASC,GAAEA,IAAG,MAAM,KAAK,KAAK,GAAG;AACtC,QAAIA,MAAK,MAAM;AACb,aAAO,IAAI;AAAA,IACb;AAEA,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAIA,KAAI,IAAI,CAAC;AAAA,EAClD;AAEO,WAASC,MAAKF,IAAGC,IAAG,MAAM,KAAK,KAAK,GAAG;AAC5C,WAAO,KAAK,EAAED,IAAG,GAAG,EAAE,EAAEC,IAAG,GAAG;AAAA,EAChC;AAGO,WAASE,IAAGH,IAAG,MAAM,KAAK,KAAK,GAAG;AACvC,QAAIA,MAAK,MAAM;AACb,aAAO,IAAI;AAAA,IACb;AAEA,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAIA,KAAI,IAAI,EAAE;AAAA,EACnD;AAGO,WAASI,IAAGH,IAAG,MAAM,KAAK,KAAK,GAAG;AACvC,QAAIA,MAAK,MAAM;AACb,aAAO,IAAI;AAAA,IACb;AAEA,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAIA,KAAI,IAAI,EAAE;AAAA,EACnD;AAEO,WAAS,OAAOD,IAAGC,IAAG,MAAM,KAAK,KAAK,GAAG;AAC9C,WAAO,KAAK,GAAGD,IAAG,GAAG,EAAE,GAAGC,IAAG,GAAG;AAAA,EAClC;AAEO,WAAS,GAAGD,IAAG;AACpB,WAAO,KAAK,KAAK,KAAKA,EAAC;AAAA,EACzB;AAEO,WAAS,GAAGC,IAAG;AACpB,WAAO,KAAK,KAAK,KAAKA,EAAC;AAAA,EACzB;AAEO,WAAS,MAAMD,IAAGC,IAAG;AAC1B,WAAO,KAAK,GAAGD,EAAC,EAAE,GAAGC,EAAC;AAAA,EACxB;AAGO,WAAS,MAAMI,QAAO;AAC3B,SAAK,SAAS,CAAC,CAACA;AAChB,WAAO;AAAA,EACT;;;ACpEA,MAAqB,OAArB,cAAkC,MAAM;AAAA;AAAA,IAEtC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,QAAQ,IAAI,GAAGA,MAAK;AAEpC,WAAK,IAAI,UAAU,KAAK,IAAI,WAAW,IAAI,UAAU,GAAG;AACxD,WAAK,WAAW;AAChB,WAAK,SAAS;AAAA,IAChB;AAAA;AAAA,IAGA,QAAQ,OAAO;AAEb,UAAI,SAAS,MAAM;AACjB,eAAO,KAAK,IAAI;AAAA,MAClB;AAGA,WAAK,IAAI,UAAU,IAAI,UAAU,KAAK;AAEtC,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA;AAAA,IAGA,QAAQ,SAAS;AAEf,UAAI,OAAO,YAAY,WAAW;AAChC,aAAK,WAAW;AAAA,MAClB;AAGA,UAAI,KAAK,UAAU;AACjB,cAAMC,QAAO;AACb,YAAI,kBAAkB;AACtB,cAAM,UAAU,KAAK,IAAI;AAEzB,aAAK,KAAK,SAAUC,IAAG;AACrB,cAAI,cAAc,KAAK,IAAI;AAAG;AAE9B,gBAAM,WAAW,QAAQ,OACtB,iBAAiB,KAAK,IAAI,EAC1B,iBAAiB,WAAW;AAE/B,gBAAMC,MAAK,UAAU,IAAI,UAAU,QAAQ;AAE3C,cAAI,KAAK,IAAI,UAAU;AACrB,iBAAK,KAAK,KAAKF,MAAK,KAAK,GAAG,CAAC;AAE7B,gBAAI,KAAK,KAAK,MAAM,MAAM;AACxB,iCAAmBE;AAAA,YACrB,OAAO;AACL,mBAAK,KAAK,MAAMD,KAAIC,MAAK,kBAAkB,CAAC;AAC5C,gCAAkB;AAAA,YACpB;AAAA,UACF;AAAA,QACF,CAAC;AAED,aAAK,KAAK,SAAS;AAAA,MACrB;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,QAAQC,IAAG;AACT,WAAK,MAAMA;AACX,WAAK,IAAI,UAAU,IAAI,UAAUA,GAAE,WAAW,GAAG;AACjD,aAAO;AAAA,IACT;AAAA,IAEA,iBAAiB;AACf,qBAAe,MAAM,KAAK,KAAK,EAAE,SAAS,IAAI,CAAC;AAC/C,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,KAAK,MAAM;AAET,UAAI,SAAS,QAAW;AACtB,cAAM,WAAW,KAAK,KAAK;AAC3B,YAAI,YAAY;AAChB,eAAO;AAEP,iBAASF,KAAI,GAAG,MAAM,SAAS,QAAQA,KAAI,KAAK,EAAEA,IAAG;AAEnD,cAAI,SAASA,EAAC,EAAE,aAAa,cAAc,cAAc,SAASA,EAAC,CAAC,GAAG;AACrE,gBAAIA,OAAM;AAAG,0BAAYA,KAAI;AAC7B;AAAA,UACF;AAGA,cACEA,OAAM,aACN,SAASA,EAAC,EAAE,aAAa,KACzB,MAAM,SAASA,EAAC,CAAC,EAAE,IAAI,aAAa,MACpC;AACA,oBAAQ;AAAA,UACV;AAGA,kBAAQ,SAASA,EAAC,EAAE;AAAA,QACtB;AAEA,eAAO;AAAA,MACT;AAGA,WAAK,MAAM,EAAE,MAAM,IAAI;AAEvB,UAAI,OAAO,SAAS,YAAY;AAE9B,aAAK,KAAK,MAAM,IAAI;AAAA,MACtB,OAAO;AAEL,gBAAQ,OAAO,IAAI,MAAM,IAAI;AAG7B,iBAASG,KAAI,GAAG,KAAK,KAAK,QAAQA,KAAI,IAAIA,MAAK;AAC7C,eAAK,QAAQ,KAAKA,EAAC,CAAC;AAAA,QACtB;AAAA,MACF;AAGA,aAAO,KAAK,MAAM,KAAK,EAAE,QAAQ;AAAA,IACnC;AAAA,EACF;AAEA,EAAAC,QAAO,MAAM,gBAAQ;AAErB,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,MAAM,kBAAkB,SAAU,OAAO,IAAI;AAC3C,eAAO,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI;AAAA,MACvC,CAAC;AAAA;AAAA,MAGD,OAAO,kBAAkB,SAAU,OAAO,IAAI;AAC5C,eAAO,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,MAAM,IAAI;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,MAAM,MAAM;;;AChJrB,MAAqB,QAArB,cAAmC,MAAM;AAAA;AAAA,IAEvC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,SAAS,IAAI,GAAGA,MAAK;AACrC,WAAK,SAAS;AAAA,IAChB;AAAA;AAAA,IAGA,GAAGC,KAAI;AACL,aAAO,KAAK,KAAK,MAAMA,GAAE;AAAA,IAC3B;AAAA;AAAA,IAGA,GAAGC,KAAI;AACL,aAAO,KAAK,KAAK,MAAMA,GAAE;AAAA,IAC3B;AAAA;AAAA,IAGA,UAAU;AAER,WAAK,IAAI,WAAW;AAGpB,YAAM,OAAO,KAAK,OAAO;AAGzB,UAAI,EAAE,gBAAgB,OAAO;AAC3B,eAAO;AAAA,MACT;AAEA,YAAMC,KAAI,KAAK,MAAM,IAAI;AAEzB,YAAM,WAAW,QAAQ,OACtB,iBAAiB,KAAK,IAAI,EAC1B,iBAAiB,WAAW;AAC/B,YAAMD,MAAK,KAAK,IAAI,UAAU,IAAI,UAAU,QAAQ;AAGpD,aAAO,KAAK,GAAGC,KAAID,MAAK,CAAC,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,IAC/C;AAAA;AAAA,IAGA,KAAK,MAAM;AACT,UAAI,QAAQ;AACV,eAAO,KAAK,KAAK,eAAe,KAAK,IAAI,WAAW,OAAO;AAE7D,UAAI,OAAO,SAAS,YAAY;AAC9B,aAAK,MAAM,EAAE,MAAM,IAAI;AACvB,aAAK,KAAK,MAAM,IAAI;AACpB,aAAK,MAAM,KAAK;AAAA,MAClB,OAAO;AACL,aAAK,MAAM,IAAI;AAAA,MACjB;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,EAAAE,QAAO,OAAO,gBAAQ;AAEtB,kBAAgB;AAAA,IACd,OAAO;AAAA,MACL,OAAO,kBAAkB,SAAU,OAAO,IAAI;AAC5C,cAAM,QAAQ,IAAI,MAAM;AAGxB,YAAI,CAAC,KAAK,QAAQ;AAChB,eAAK,MAAM;AAAA,QACb;AAGA,eAAO,KAAK,IAAI,KAAK,EAAE,KAAK,IAAI;AAAA,MAClC,CAAC;AAAA,IACH;AAAA,IACA,MAAM;AAAA,MACJ,SAAS,SAAU,OAAO,IAAI;AAC5B,eAAO,KAAK,MAAM,IAAI,EAAE,QAAQ;AAAA,MAClC;AAAA,IACF;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,OAAO,OAAO;;;ACnFvB,MAAqB,SAArB,cAAoC,MAAM;AAAA,IACxC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,UAAU,IAAI,GAAGA,MAAK;AAAA,IACxC;AAAA,IAEA,OAAOC,IAAG;AACR,aAAO,KAAK,KAAK,KAAKA,EAAC;AAAA,IACzB;AAAA;AAAA,IAGA,GAAGC,KAAI;AACL,aAAO,KAAK,KAAK,KAAKA,GAAE;AAAA,IAC1B;AAAA;AAAA,IAGA,GAAGC,KAAI;AACL,aAAO,KAAK,GAAGA,GAAE;AAAA,IACnB;AAAA,IAEA,KAAKC,OAAM;AACT,aAAO,KAAK,OAAO,IAAI,UAAUA,KAAI,EAAE,OAAO,CAAC,CAAC;AAAA,IAClD;AAAA,EACF;AAEA,EAAAC,QAAO,QAAQ,EAAE,GAAG,GAAG,IAAI,IAAI,OAAO,OAAO,CAAC;AAE9C,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,QAAQ,kBAAkB,SAAUD,QAAO,GAAG;AAC5C,eAAO,KAAK,IAAI,IAAI,OAAO,CAAC,EAAE,KAAKA,KAAI,EAAE,KAAK,GAAG,CAAC;AAAA,MACpD,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAE,UAAS,QAAQ,QAAQ;;;ACzCzB,MAAqB,WAArB,cAAsC,UAAU;AAAA,IAC9C,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,YAAY,IAAI,GAAGA,MAAK;AAAA,IAC1C;AAAA;AAAA,IAGA,SAAS;AAEP,WAAK,QAAQ,EAAE,QAAQ,SAAU,IAAI;AACnC,WAAG,OAAO;AAAA,MACZ,CAAC;AAGD,aAAO,MAAM,OAAO;AAAA,IACtB;AAAA,IAEA,UAAU;AACR,aAAO,SAAS,qBAAqB,KAAK,GAAG,IAAI,GAAG;AAAA,IACtD;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,MAAM,kBAAkB,WAAY;AAClC,eAAO,KAAK,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC;AAAA,MACvC,CAAC;AAAA,IACH;AAAA,IACA,SAAS;AAAA;AAAA,MAEP,UAAU;AACR,eAAO,KAAK,UAAU,WAAW;AAAA,MACnC;AAAA,MAEA,SAAS,SAAS;AAEhB,cAAM,UACJ,mBAAmB,WACf,UACA,KAAK,OAAO,EAAE,KAAK,EAAE,IAAI,OAAO;AAGtC,eAAO,KAAK,KAAK,aAAa,UAAU,QAAQ,GAAG,IAAI,GAAG;AAAA,MAC5D;AAAA;AAAA,MAGA,SAAS;AACP,eAAO,KAAK,KAAK,aAAa,IAAI;AAAA,MACpC;AAAA,IACF;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,UAAU,UAAU;;;ACrD7B,MAAqB,gBAArB,cAA2CC,SAAQ;AAAA,IACjD,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,iBAAiB,IAAI,GAAGA,MAAK;AAAA,IAC/C;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA,MACT,eAAe,kBAAkB,SAAUC,QAAOC,SAAQ;AACxD,eAAO,KAAK,IAAI,IAAI,cAAc,CAAC,EAAE,KAAKD,QAAOC,OAAM;AAAA,MACzD,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,eAAe,eAAe;;;AClBvC;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,IAAA,YAAAC;AAAA,IAAA,YAAAC;AAAA,IAAA,aAAAC;AAAA,IAAA,SAAAC;AAAA,IAAA,SAAAC;AAAA;AAMO,WAAS,MAAMC,KAAIC,KAAI;AAC5B,SAAK,SAAS,EAAE,QAAQ,CAAC,UAAU;AACjC,UAAIC;AAIJ,UAAI;AAOF,QAAAA,QACE,MAAM,gBAAgBC,WAAU,EAAE,gBAC9B,IAAI,IAAI,MAAM,KAAK,CAAC,KAAK,KAAK,SAAS,QAAQ,CAAC,CAAC,IACjD,MAAM,KAAK;AAAA,MACnB,SAASC,IAAP;AACA;AAAA,MACF;AAGA,YAAMC,KAAI,IAAI,OAAO,KAAK;AAG1B,YAAMC,UAASD,GAAE,UAAUL,KAAIC,GAAE,EAAE,UAAUI,GAAE,QAAQ,CAAC;AAExD,YAAME,KAAI,IAAI,MAAML,MAAK,GAAGA,MAAK,CAAC,EAAE,UAAUI,OAAM;AAEpD,YAAM,KAAKC,GAAE,GAAGA,GAAE,CAAC;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,EACT;AAEO,WAAS,GAAGP,KAAI;AACrB,WAAO,KAAK,MAAMA,KAAI,CAAC;AAAA,EACzB;AAEO,WAAS,GAAGC,KAAI;AACrB,WAAO,KAAK,MAAM,GAAGA,GAAE;AAAA,EACzB;AAEO,WAASO,QAAOA,SAAQ,MAAM,KAAK,KAAK,GAAG;AAChD,QAAIA,WAAU;AAAM,aAAO,IAAI;AAC/B,WAAO,KAAK,KAAK,IAAI,OAAOA,SAAQ,GAAG;AAAA,EACzC;AAEO,WAASC,MAAKC,KAAI,GAAGC,KAAI,GAAG,MAAM,KAAK,KAAK,GAAG;AACpD,UAAMX,MAAKU,KAAI,IAAI;AACnB,UAAMT,MAAKU,KAAI,IAAI;AAEnB,WAAO,KAAK,MAAMX,KAAIC,GAAE;AAAA,EAC1B;AAEO,WAASW,MAAKC,QAAOL,SAAQ,MAAM,KAAK,KAAK,GAAG;AACrD,UAAMD,KAAI,iBAAiB,MAAMM,QAAOL,SAAQ,GAAG;AACnD,UAAM,SAASD,GAAE,QAAQ,IAAI;AAC7B,UAAM,SAASA,GAAE,SAAS,IAAI;AAE9B,SAAK,SAAS,EAAE,QAAQ,CAAC,UAAU;AACjC,YAAMO,KAAI,IAAI,MAAM,GAAG,EAAE,UAAU,IAAI,OAAO,KAAK,EAAE,QAAQ,CAAC;AAC9D,YAAM,MAAM,QAAQ,QAAQA,GAAE,GAAGA,GAAE,CAAC;AAAA,IACtC,CAAC;AAED,WAAO;AAAA,EACT;AAEO,WAASD,OAAMA,QAAO,MAAM,KAAK,KAAK,GAAG;AAC9C,QAAIA,UAAS;AAAM,aAAO,IAAI;AAC9B,WAAO,KAAK,KAAKA,QAAO,IAAI,QAAQ,GAAG;AAAA,EACzC;AAEO,WAASH,GAAEA,IAAG,MAAM,KAAK,KAAK,GAAG;AACtC,QAAIA,MAAK;AAAM,aAAO,IAAI;AAC1B,WAAO,KAAK,KAAKA,IAAG,IAAI,GAAG,GAAG;AAAA,EAChC;AAEO,WAASC,GAAEA,IAAG,MAAM,KAAK,KAAK,GAAG;AACtC,QAAIA,MAAK;AAAM,aAAO,IAAI;AAC1B,WAAO,KAAK,KAAK,IAAI,GAAGA,IAAG,GAAG;AAAA,EAChC;;;AC7EA,MAAqB,IAArB,cAA+B,UAAU;AAAA,IACvC,YAAY,MAAMI,SAAQ,MAAM;AAC9B,YAAM,UAAU,KAAK,IAAI,GAAGA,MAAK;AAAA,IACnC;AAAA,EACF;AAEA,EAAAC,QAAO,GAAG,yBAAiB;AAE3B,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,OAAO,kBAAkB,WAAY;AACnC,eAAO,KAAK,IAAI,IAAI,EAAE,CAAC;AAAA,MACzB,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,GAAG,GAAG;;;AChBf,MAAqB,IAArB,cAA+B,UAAU;AAAA,IACvC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,KAAK,IAAI,GAAGA,MAAK;AAAA,IACnC;AAAA;AAAA,IAGA,OAAO,QAAQ;AACb,aAAO,KAAK,KAAK,UAAU,MAAM;AAAA,IACnC;AAAA;AAAA,IAGA,GAAG,KAAK;AACN,aAAO,KAAK,KAAK,QAAQ,KAAK,KAAK;AAAA,IACrC;AAAA,EACF;AAEA,EAAAC,QAAO,GAAG,yBAAiB;AAE3B,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,MAAM,kBAAkB,SAAU,KAAK;AACrC,eAAO,KAAK,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AACP,cAAM,OAAO,KAAK,OAAO;AAEzB,YAAI,CAAC;AAAM,iBAAO;AAElB,cAAM,SAAS,KAAK,OAAO;AAE3B,YAAI,CAAC,QAAQ;AACX,iBAAO,KAAK,OAAO;AAAA,QACrB;AAEA,cAAMC,SAAQ,OAAO,MAAM,IAAI;AAC/B,eAAO,IAAI,MAAMA,MAAK;AAEtB,aAAK,OAAO;AACZ,eAAO;AAAA,MACT;AAAA,MACA,OAAO,KAAK;AAEV,YAAI,OAAO,KAAK,OAAO;AAEvB,YAAI,CAAC,MAAM;AACT,iBAAO,IAAI,EAAE;AACb,eAAK,KAAK,IAAI;AAAA,QAChB;AAEA,YAAI,OAAO,QAAQ,YAAY;AAC7B,cAAI,KAAK,MAAM,IAAI;AAAA,QACrB,OAAO;AACL,eAAK,GAAG,GAAG;AAAA,QACb;AAEA,eAAO;AAAA,MACT;AAAA,MACA,SAAS;AACP,cAAM,OAAO,KAAK,OAAO;AACzB,YAAI,QAAQ,KAAK,KAAK,SAAS,YAAY,MAAM,KAAK;AACpD,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,GAAG,GAAG;;;AC7Ef,MAAqB,OAArB,cAAkC,UAAU;AAAA;AAAA,IAE1C,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,QAAQ,IAAI,GAAGA,MAAK;AAAA,IACtC;AAAA;AAAA,IAGA,SAAS;AAEP,WAAK,QAAQ,EAAE,QAAQ,SAAU,IAAI;AACnC,WAAG,OAAO;AAAA,MACZ,CAAC;AAGD,aAAO,MAAM,OAAO;AAAA,IACtB;AAAA,IAEA,UAAU;AACR,aAAO,SAAS,gBAAgB,KAAK,GAAG,IAAI,GAAG;AAAA,IACjD;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA,MACT,MAAM,kBAAkB,WAAY;AAClC,eAAO,KAAK,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,IACA,SAAS;AAAA;AAAA,MAEP,SAAS;AACP,eAAO,KAAK,UAAU,MAAM;AAAA,MAC9B;AAAA,MAEA,SAAS,SAAS;AAEhB,cAAM,SACJ,mBAAmB,OAAO,UAAU,KAAK,OAAO,EAAE,KAAK,EAAE,IAAI,OAAO;AAGtE,eAAO,KAAK,KAAK,QAAQ,UAAU,OAAO,GAAG,IAAI,GAAG;AAAA,MACtD;AAAA;AAAA,MAGA,SAAS;AACP,eAAO,KAAK,KAAK,QAAQ,IAAI;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,MAAM,MAAM;;;AClDrB,MAAqB,OAArB,cAAkCC,SAAQ;AAAA,IACxC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,QAAQ,IAAI,GAAGA,MAAK;AAAA,IACtC;AAAA;AAAA,IAGA,OAAOC,IAAG;AACR,UAAI,OAAOA,OAAM,YAAYA,cAAa,WAAW;AACnD,QAAAA,KAAI;AAAA,UACF,QAAQ,UAAU,CAAC;AAAA,UACnB,OAAO,UAAU,CAAC;AAAA,UAClB,SAAS,UAAU,CAAC;AAAA,QACtB;AAAA,MACF;AAGA,UAAIA,GAAE,WAAW;AAAM,aAAK,KAAK,gBAAgBA,GAAE,OAAO;AAC1D,UAAIA,GAAE,SAAS;AAAM,aAAK,KAAK,cAAcA,GAAE,KAAK;AACpD,UAAIA,GAAE,UAAU;AAAM,aAAK,KAAK,UAAU,IAAI,UAAUA,GAAE,MAAM,CAAC;AAEjE,aAAO;AAAA,IACT;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,UAAU;AAAA;AAAA,MAER,MAAM,SAAUC,SAAQC,QAAO,SAAS;AACtC,eAAO,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,OAAOD,SAAQC,QAAO,OAAO;AAAA,MAC3D;AAAA,IACF;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,MAAM,MAAM;;;ACjCrB,WAAS,QAAQ,UAAU,MAAM;AAC/B,QAAI,CAAC;AAAU,aAAO;AACtB,QAAI,CAAC;AAAM,aAAO;AAElB,QAAI,MAAM,WAAW;AAErB,eAAWC,MAAK,MAAM;AACpB,aAAO,YAAYA,EAAC,IAAI,MAAM,KAAKA,EAAC,IAAI;AAAA,IAC1C;AAEA,WAAO;AAEP,WAAO;AAAA,EACT;AAEA,MAAqB,QAArB,cAAmCC,SAAQ;AAAA,IACzC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,SAAS,IAAI,GAAGA,MAAK;AAAA,IACvC;AAAA,IAEA,QAAQC,KAAI,IAAI;AACd,WAAK,KAAK,eAAeA;AACzB,aAAO;AAAA,IACT;AAAA,IAEA,KAAKC,OAAM,KAAKC,UAAS,CAAC,GAAG;AAC3B,aAAO,KAAK,KAAK,cAAc;AAAA,QAC7B,YAAYD;AAAA,QACZ;AAAA,QACA,GAAGC;AAAA,MACL,CAAC;AAAA,IACH;AAAA,IAEA,KAAK,UAAU,KAAK;AAClB,aAAO,KAAK,QAAQ,QAAQ,UAAU,GAAG,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,kBAAgB,OAAO;AAAA,IACrB,MAAM,UAAU,KAAK;AACnB,aAAO,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU,GAAG;AAAA,IACjD;AAAA,IACA,SAASD,OAAM,KAAKC,SAAQ;AAC1B,aAAO,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,KAAKD,OAAM,KAAKC,OAAM;AAAA,IACrD;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,OAAO,OAAO;;;AC5CvB,MAAqB,WAArB,cAAsC,KAAK;AAAA;AAAA,IAEzC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,YAAY,IAAI,GAAGA,MAAK;AAAA,IAC1C;AAAA;AAAA,IAGA,QAAQ;AACN,YAAM,QAAQ,KAAK,MAAM;AAEzB,aAAO,QAAQ,MAAM,MAAM,IAAI;AAAA,IACjC;AAAA;AAAA,IAGA,KAAKC,IAAG;AACN,YAAM,QAAQ,KAAK,MAAM;AACzB,UAAI,YAAY;AAEhB,UAAI,OAAO;AACT,oBAAY,MAAM,KAAKA,EAAC;AAAA,MAC1B;AAEA,aAAOA,MAAK,OAAO,YAAY;AAAA,IACjC;AAAA;AAAA,IAGA,QAAQ;AACN,aAAO,KAAK,UAAU,MAAM;AAAA,IAC9B;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA,MACT,UAAU,kBAAkB,SAAU,MAAM,MAAM;AAEhD,YAAI,EAAE,gBAAgB,OAAO;AAC3B,iBAAO,KAAK,KAAK,IAAI;AAAA,QACvB;AAEA,eAAO,KAAK,KAAK,IAAI;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,IACA,MAAM;AAAA;AAAA,MAEJ,MAAM,kBAAkB,SAAU,OAAO,cAAc,MAAM;AAC3D,cAAM,WAAW,IAAI,SAAS;AAG9B,YAAI,EAAE,iBAAiB,OAAO;AAE5B,kBAAQ,KAAK,KAAK,EAAE,KAAK,KAAK;AAAA,QAChC;AAGA,iBAAS,KAAK,QAAQ,MAAM,OAAO,KAAK;AAGxC,YAAI;AACJ,YAAI,aAAa;AACf,iBAAQ,OAAO,KAAK,KAAK,YAAa;AACpC,qBAAS,KAAK,YAAY,IAAI;AAAA,UAChC;AAAA,QACF;AAGA,eAAO,KAAK,IAAI,QAAQ;AAAA,MAC1B,CAAC;AAAA;AAAA,MAGD,WAAW;AACT,eAAO,KAAK,QAAQ,UAAU;AAAA,MAChC;AAAA,IACF;AAAA,IACA,MAAM;AAAA;AAAA,MAEJ,MAAM,kBAAkB,SAAU,MAAM;AAEtC,YAAI,EAAE,gBAAgB,OAAO;AAC3B,iBAAO,IAAI,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI;AAAA,QAClD;AAGA,eAAO,KAAK,KAAK,IAAI;AAAA,MACvB,CAAC;AAAA,MAED,UAAU;AACR,eAAO,SAAS,cAAc,EAAE,OAAO,CAAC,SAAS;AAC/C,kBAAQ,KAAK,KAAK,MAAM,KAAK,IAAI,SAAS,KAAK,GAAG,CAAC;AAAA,QACrD,CAAC;AAAA,MAIH;AAAA,IACF;AAAA,EACF,CAAC;AAED,WAAS,UAAU,aAAa;AAChC,EAAAC,UAAS,UAAU,UAAU;;;ACpG7B,MAAqB,MAArB,cAAiC,MAAM;AAAA,IACrC,YAAY,MAAMC,SAAQ,MAAM;AAC9B,YAAM,UAAU,OAAO,IAAI,GAAGA,MAAK;AAAA,IACrC;AAAA;AAAA,IAGA,IAAI,SAAS,MAAM;AAEjB,aAAO,KAAK,KAAK,SAAS,QAAQ,MAAM,MAAM,SAAS,KAAK;AAAA,IAC9D;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd,WAAW;AAAA;AAAA,MAET,KAAK,kBAAkB,SAAU,SAAS,MAAM;AAC9C,eAAO,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,SAAS,IAAI;AAAA,MAC9C,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,EAAAC,UAAS,KAAK,KAAK;;;AC4GnB,EAAAC,QAAO,CAAC,KAAKC,SAAQC,QAAO,SAAS,MAAM,GAAG,cAAc,SAAS,CAAC;AAEtE,EAAAF,QAAO,CAAC,MAAM,UAAU,SAAS,IAAI,GAAG,cAAc,QAAQ,CAAC;AAE/D,EAAAA,QAAO,MAAM,cAAc,MAAM,CAAC;AAClC,EAAAA,QAAO,MAAM,cAAc,MAAM,CAAC;AAElC,EAAAA,QAAO,MAAM,cAAc,MAAM,CAAC;AAElC,EAAAA,QAAO,CAAC,MAAM,KAAK,GAAG,cAAc,OAAO,CAAC;AAE5C,EAAAA,QAAO,CAAC,MAAM,SAAS,UAAU,MAAM,GAAG,cAAc,QAAQ,CAAC;AAEjE,EAAAA,QAAO,aAAa,cAAc,aAAa,CAAC;AAChD,EAAAA,QAAO,KAAK,cAAc,KAAK,CAAC;AAChC,EAAAA,QAAOG,UAAS,cAAc,SAAS,CAAC;AACxC,EAAAH,QAAO,OAAO,cAAc,OAAO,CAAC;AACpC,EAAAA,QAAO,CAAC,WAAW,gBAAQ,GAAG,cAAc,WAAW,CAAC;AACxD,EAAAA,QAAO,UAAU,cAAc,UAAU,CAAC;AAE1C,EAAAA,QAAO,QAAQ,cAAc,QAAQ,CAAC;AAEtC,eAAK,OAAO,eAAe,CAAC;AAE5B,wBAAsB;AAAA,IACpB;AAAA,IACAI;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,gBAAc;;;AzEtKd,MAAO,kCAAP,cAA6B,WAAW;AAAA,IAGtC,UAAU;AACR,WAAK,QAAQ,iBAAiB,iBAAiB,CAAC,UAAU;AACxD,cAAMC,SAAQ,MAAM,OAAO;AAE3B,UAAE,KAAK,WAAW,EAAE,IAAI;AAAA,UACxB,oBAAoBA;AAAA,QACpB,CAAC;AACD,cAAM,UAAU,KAAK,YAAY,QAAQ,gBAAgB,EAAE,KAAK,OAAO;AACvE,gBAAQ,IAAI,aAAa,OAAO;AAChC,UAAE,KAAK,WAAW,EAAE,KAAKA,MAAK;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IAEA,OAAO,OAAO;AACZ,UAAI,UAAU,EAAE,MAAM,aAAa,GACnCA,SAAQ,QAAQ,IAAI;AAEpB,QAAE,KAAK,WAAW,EAAE,IAAI;AAAA,QACtB,oBAAoBA;AAAA,MACtB,CAAC;AAED,QAAE,KAAK,WAAW,EAAE,KAAKA,MAAK;AAAA,IAChC;AAAA,EAEF;AA1BE,gBADK,iCACE,WAAU,CAAC,SAAS,OAAO;;;A0EJpC;AAAA;AAAA;AAAA;AAEA,MAAO,oCAAP,cAA6B,WAAW;AAAA,IAGtC,UAAU;AACR,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,aAAa;AAEX,UAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,GAAG;AACvC,UAAE,KAAK,WAAW,EAAE,QAAQ,SAAS;AAAA,MACvC;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,QAAE,KAAK,WAAW,EAAE,QAAQ;AAAA,QAC1B,MAAM;AAAA,UACJ,KAAK;AAAA,UACL,UAAU;AAAA,UACV,OAAO;AAAA,UACP,MAAM,SAAUC,SAAQ;AACtB,mBAAO;AAAA,cACL,GAAGA,QAAO;AAAA;AAAA,cACV,MAAMA,QAAO,QAAQ;AAAA,YACvB;AAAA,UACF;AAAA,UACA,gBAAgB,SAAUC,OAAM;AAC9B,mBAAO;AAAA,cACL,SAASA,MAAK;AAAA,YAChB;AAAA,UACF;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,oBAAoB;AAAA,QACpB,MAAM;AAAA;AAAA,QACN,WAAW,SAAUD,SAAQ;AAC3B,gBAAM,OAAO,EAAE,KAAKA,QAAO,IAAI;AAE/B,cAAI,SAAS,IAAI;AACf,mBAAO;AAAA,UACT;AAEA,iBAAO;AAAA,YACL,IAAI;AAAA,YACJ,MAAM;AAAA,YACN,QAAQ;AAAA;AAAA,UACV;AAAA,QACF;AAAA,QACA,gBAAgB,SAAUC,OAAM;AAC9B,cAAIA,MAAK,SAAS;AAChB,mBAAO;AAAA,UACT;AAGA,cAAIA,MAAK,QAAQ;AACf,mBAAO,EAAE,oCAAoCA,MAAK,OAAO,uBAAuB;AAAA,UAClF;AAEA,iBAAOA,MAAK;AAAA,QACd;AAAA,QACA,mBAAmB,SAAUA,OAAM;AAEjC,iBAAOA,MAAK,QAAQA,MAAK;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAnEE,gBADK,mCACE,WAAU,CAAC,OAAO;;;ACH3B;AAAA;AAAA;AAAA;AAGA,MAAO,gCAAP,cAA6B,sBAAsB;AAAA;AAAA,IAIjD,UAAU;AAER,YAAM,QAAQ;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO;AACX,YAAM,SAAS,MAAM;AAGrB,YAAM,cAAc,SAAS,eAAe,mBAAmB;AAC/D,UAAI,aAAa;AACf,eAAO,QAAQ,aAAa,YAAY,QAAQ,cAAc;AAC9D,eAAO,QAAQ,eAAe,YAAY,QAAQ,gBAAgB;AAClE,eAAO,QAAQ,gBAAgB,YAAY,QAAQ,iBAAiB;AACpE,eAAO,QAAQ,gBAAgB,YAAY,QAAQ,iBAAiB;AAAA,MACtE;AAEA,WAAK,UAAU,oBAAoB,MAAM;AAAA,IAC3C;AAAA,EACF;AAxBE;AAAA,gBAFK,+BAEE,UAAS,EAAE,IAAI,OAAO;;;ACL/B;AAAA;AAAA;AAAA;AAGA,MAAO,sCAAP,cAA6B,sBAAsB;AAAA,IAEjD,iBAAiB,OAAO;AACtB,UAAI,SAAS,EAAE,MAAM,aAAa;AAClC,UAAI,gBAAgB,SAAS,OAAO,KAAK,eAAe,CAAC,GACvD,sBAAsB,SAAS,OAAO,KAAK,qBAAqB,CAAC,GACjE,gBAAgB,SAAS,OAAO,KAAK,eAAe,CAAC,GACrD,OAAO,OAAO,KAAK,MAAM;AAC3B,WAAK;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IAEA,0BAA0B;AACxB,QAAE,2BAA2B,EAAE,MAAM,MAAM;AAAA,IAC7C;AAAA,IAEA,OAAO,OAAO;AACZ,UAAI,SAAS,EAAE,MAAM,aAAa;AAClC,UAAI,sBAAsB,SAAS,OAAO,KAAK,qBAAqB,CAAC;AACrE,WAAK,UAAU,gCAAgC,mBAAmB;AAAA,IACpE;AAAA,EACF;;;AC7BA;AAAA;AAAA;AAAA;AAEA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IAEtC,UAAU;AACR,cAAQ,IAAI,mCAAmC;AAC/C,YAAMC,QAAO;AACb,WAAK,cAAc,EAAE,KAAK,OAAO,CAAC;AAClC,QAAE,KAAK,OAAO,EAAE,GAAG,iBAAiB,WAAY;AAE9C,QAAAA,MAAK,cAAc,EAAEA,MAAK,OAAO,CAAC;AAAA,MACpC,CAAC;AAAA,IACH;AAAA,IAEA,cAAc,OAAO;AACnB,YAAM,KAAK,iBAAiB,EAAE,KAAK,WAAW;AAC5C,eAAO,EAAE,IAAI,EAAE,KAAK,SAAS,QAAQ,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC,CAAC;AAAA,MAClE,CAAC;AAED,YAAM,KAAK,aAAa,EAAE,KAAK,WAAY;AAEzC,eAAO,EAAE,IAAI,EAAE,KAAK,SAAS,YAAY,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC,CAAC;AAAA,MACtE,CAAC;AAED,YAAM,KAAK,aAAa,EAAE,KAAK,WAAW;AACxC,eAAO,EAAE,IAAI,EAAE,KAAK,SAAS,YAAY,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC,CAAC;AAAA,MACtE,CAAC;AAAA,IAEH;AAAA,EACF;;;AC7BA;AAAA;AAAA;AAAA;AAGA,MAAO,oCAAP,cAA6B,WAAW;AAAA,IAEtC,UAAU;AACR,gBAAU,UAAU,EAAC,UAAU,KAAK,OAAM,CAAC;AAC3C,cAAQ,IAAI,qBAAqB,KAAK,sBAAsB;AAAA,IAC9D;AAAA,IAEA,QAAQ,OAAO;AACb,YAAM,gBAAgB;AACtB,YAAM,eAAe;AACrB,UAAI,UAAU,EAAE,MAAM,MAAM;AAC5B,cAAQ,IAAI,YAAY,OAAO;AAC/B,UAAI,mBAAmB,QAAQ,KAAK,IAAI;AACxC,cAAQ,IAAI,uBAAuB,gBAAgB;AACnD,UAAI,eAAe,yBAAyB,gBAAgB;AAC5D,sBAAgB,EAAE,cAAc,EAAE,IAAI;AACtC,gCAA0B,EAAE,iBAAiB,EAAE,IAAI;AACnD,uBAAiB,EAAE,eAAe,EAAE,IAAI;AAExC,UAAI;AACJ,cAAO,kBAAkB;AAAA,QACvB,KAAK;AACH,mBAAS,KAAK,EAAE,WAAW;AAC3B;AAAA,QACF,KAAK;AACH,mBAAS;AACT;AAAA,QAEF;AACE,mBAAS,KAAK,EAAE,WAAW;AAC3B;AAAA,MACJ;AAGA,UAAI,qBAAqB,kBAAkB;AACzC,yBAAiB;AACjB,UAAE,eAAe,EAAE,IAAI,cAAc;AAAA,MACvC,OAAO;AACL,YAAI,qBAAqB,gBAAgB;AACvC,cAAI,4BAA4B,MAAM;AACpC,uBAAW;AAAA,cACT,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,IAAI;AAAA,YACN;AACA,sCAA0B,SAAS,cAAc;AACjD,cAAE,iBAAiB,EAAE,IAAI,uBAAuB;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAGA,UAAI,YAAYC,QAAO,MAAMC;AAC7B,YAAM,cAAc;AACpB,gBAAU,UAAW,SAAS,OAAO;AACnC,gBAAQ,IAAI,sBAAsB,KAAM;AACxC,gBAAQ,IAAI,aAAa,MAAM,OAAQ;AACvC,qBAAa,MAAM;AAEnB,QAAAD,SAAQ,WAAW,MAAM,KAAK,CAAC;AAC/B,eAAOA,OAAM,CAAC;AACd,QAAAC,UAAS,YAAY,MAAMD,OAAM,CAAC,CAAC;AAEnC,QAAAC,QAAO,OAAO;AACd,QAAAA,QAAO,QAAQ;AACf,QAAAA,QAAO,UAAU;AACjB,gBAAQ,IAAI,4BAA4B,EAAE,MAAM,OAAO,EAAE,KAAK,IAAI,OAAO,YAAY,UAAUA,OAAM,GAAG;AACxG,cAAM,aAAa,GAAG,QAAQ,YAAY,UAAUA,OAAM;AAC1D,YAAIC,WAAU,MAAM,WAAW;AAC/B,cAAM,WAAW,EAAC,GAAGA,UAAS,GAAG,EAAC,UAAU,OAAM,EAAC,CAAC;AACpD,cAAM,YAAY;AAAA,MACpB,CAAC;AAAA,IAEH;AAAA,EAEF;;;ACvFA;AAAA;AAAA;AAAA;AAEA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IAGtC,UAAU;AACR,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,OAAO,OAAO;AACZ,YAAM,UAAU,MAAM,OAAO;AAE7B,YAAM,uBAAuB;AAAA,QAC3B,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,gBAAgB,SAAS,cAAc,yBAAyB,EAAE;AAAA,QACpE;AAAA,QACA,MAAM,KAAK,UAAU,EAAE,QAAiB,CAAC;AAAA,MAC3C,CAAC,EACA,KAAK,CAAAC,cAAYA,UAAS,KAAK,CAAC,EAChC,KAAK,CAAAC,UAAQ;AACZ,YAAIA,MAAK,YAAY,QAAW;AAC9B,iBAAO,SAAS,OAAO;AAAA,QACzB;AAAA,MACF,CAAC,EACA,MAAM,CAAAC,WAAS;AACd,gBAAQ,MAAM,uBAAuBA,MAAK;AAC1C,cAAM,OAAO,UAAU,CAAC;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IAEA,QAAQ;AAEN,UAAI,KAAK,iBAAiB;AACxB,aAAK,aAAa,UAAU;AAE5B,aAAK,OAAO,EAAE,QAAQ,KAAK,aAAa,CAAC;AAAA,MAC3C,OAAO;AAEL,cAAM,SAAS,SAAS,cAAc,cAAc;AACpD,YAAI,QAAQ;AACV,iBAAO,UAAU;AACjB,eAAK,OAAO,EAAE,QAAQ,OAAO,CAAC;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,oBAAoB;AAGlB,UAAI,KAAK,iBAAiB;AAGxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAtDE,gBADK,iCACE,WAAU,CAAC,UAAU,OAAO;;;ACHrC;AAAA;AAAA;AAAA;AAIA,MAAO,gCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,qBAAqB;AAG1B,eAAS,iBAAiB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IACrF;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AACjB,eAAS,oBAAoB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IACxF;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAEtB,YAAM,SAAS,MAAM;AACrB,WAAK,qBAAqB,OAAO,QAAQ;AAEzC,cAAQ,IAAI,2CAA2C,KAAK,kBAAkB;AAG9E,YAAM,QAAQ,SAAS,eAAe,yBAAyB;AAC/D,UAAI,OAAO;AACT,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB,OAAO;AAC3B,cAAQ,IAAI,6DAA6D,KAAK,kBAAkB;AAEhG,UAAI,CAAC,KAAK,oBAAoB;AAE5B;AAAA,MACF;AAEA,WAAK,cAAc,KAAK,kBAAkB;AAC1C,WAAK,qBAAqB;AAAA,IAC5B;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,OAAO;AACnB,WAAK,aAAa;AAClB,YAAM,UAAU,SAAS,eAAe,mBAAmB,OAAO;AAElE,WAAK,UAAU,sCAAsC,KAAK,EAAE,KAAK,MAAM;AACrE,YAAI,SAAS;AACX,kBAAQ,OAAO;AAAA,QACjB;AACA,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,OAAO;AACT,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,QAAQ,QAAQ,QAAQ,QAAQ;AACpC,UAAI,eAAe,MAAM,KAAK,WAAW;AACzC,UAAI,OAAO,aAAa,KAAK,WAAW;AACxC,UAAI,UAAU,aAAa,KAAK,cAAc;AAC9C,UAAI,WAAW,QAAQ,KAAK,eAAe;AAC3C,WAAK,UAAU,wBAAwB,MAAM,SAAS,QAAQ,EAAE,KAAK,MAAM;AACzE,aAAK,+BAA+B;AACpC,cAAM,MAAM,MAAM;AAClB,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,iBAAiB,OAAO;AACtB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,QAAQ,QAAQ,KAAK,QAAQ;AACjC,UAAI,UAAU,EAAE,sBAAsB,KAAK;AAG3C,WAAK,UAAU,sCAAsC,KAAK,EAAE,KAAK,MAAM;AACrE,gBAAQ,OAAO;AACf,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,iCAAiC;AAC/B,UAAI,QAAQ,EAAE,6BAA6B;AAC3C,UAAI,kBAAkB,EAAE,kCAAkC,KAAK,EAAE,MAAM;AACvE,sBAAgB,IAAI,aAAa,YAAY,CAAC;AAC9C,cAAQ,IAAI,iCAAiC;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBF;;;ACnIA;AAAA;AAAA;AAAA;AA+EA,MAAO,4BAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,YAAY,OAAO;AACjB,YAAM,iBAAiB,KAAK,QAAQ,QAAQ;AAE5C,UAAI,kBAAkB,CAAC,QAAQ,cAAc,GAAG;AAE9C,cAAM,eAAe;AACrB,cAAM,gBAAgB;AACtB,eAAO;AAAA,MACT;AAGA,WAAK,aAAa;AAAA,IAEpB;AAAA,EACF;;;AC1GA;AAAA;AAAA;AAAA;;;ACAA,MAAI,eAAeC;AA8BnB,WAASA,UAAyC;AAChD,QAAI,OAAO,CAAC,EAAE,MAAM,KAAK,SAAS;AAClC,QAAI,OAAO;AACX,QAAI,OAAO,KAAK,CAAC,KAAK,WAAW;AAC/B,aAAO,KAAK,MAAM;AAAA,IACpB;AACA,QAAI,SAAS,KAAK,CAAC;AACnB,QAAI,eAAe,MAAM,GAAG;AAC1B,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AACA,QAAI,YAAY,KAAK,MAAM,CAAC;AAC5B,QAAI,MAAM,UAAU;AACpB,aAASC,KAAI,GAAGA,KAAI,KAAKA,MAAK;AAC5B,UAAI,WAAW,UAAUA,EAAC;AAC1B,eAASC,QAAO,UAAU;AACxB,YAAI,OAAO,UAAU,eAAe,KAAK,UAAUA,IAAG,GAAG;AACvD,cAAI,QAAQ,SAASA,IAAG;AACxB,cAAI,QAAQ,YAAY,KAAK,GAAG;AAC9B,gBAAI,OAAO,MAAM,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC;AACxC,mBAAOA,IAAG,IAAIF;AAAA,cACZ;AAAA,cACA,OAAO,UAAU,eAAe,KAAK,QAAQE,IAAG,KAAK,CAAC,eAAe,OAAOA,IAAG,CAAC,IAC5E,OAAOA,IAAG,IACV;AAAA,cACJ;AAAA,YACF;AAAA,UACF,OAAO;AACL,mBAAOA,IAAG,IAAI;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,YAAY,KAAK;AACxB,WAAO,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,SAAS,KAAK,GAAG,KAAK;AAAA,EACxD;AAEA,WAAS,eAAe,KAAK;AAC3B,WAAO,CAAC,OAAQ,OAAO,OAAO,YAAY,OAAO,OAAO;AAAA,EAC1D;;;;;;MEnEqB,iDAAO;;IAE1B,GAAG,OAAOC,KAAI;AACZ,WAAK,aAAa,KAAK,cAAc,CAAC;AAEtC,UAAE,CAAG,KAAK,WAAW,KAAK;AACxB,aAAK,WAAW,KAAK,IAAI,CAAC;AAE5B,WAAK,WAAW,KAAK,EAAE,KAAKA,GAAE;AAC9B,aAAO;IACT;IAEA,KAAK,UAAU,MAAM;AACnB,WAAK,aAAa,KAAK,cAAc,CAAC;AACtC,UAAI,YAAY,KAAK,WAAW,KAAK;AAErC,UAAI;AACF,iBAASC,aAAY;AACnB,UAAAA,UAAS,MAAM,MAAM,IAAI;AAI7B,UAAI,KAAK;AACP,aAAK,QAAQ,cACX,KAAK,UAAU,cAAc,OAAO;UAAE;QAAW,CAAC,CAAA;AAGtD,aAAO;IACT;IAEA,UAAU,WAAW,QAAQ;AAC3B,UAAIC,UAAS;QAAE,SAAS;QAAM,YAAY;QAAM;MAAe;AAE/D,UAAI,OAAO,OAAO,gBAAgB;AAChC,eAAO,IAAI,YAAY,WAAWA,OAAM;WACnC;AAGL,YAAI,MAAM,SAAS,YAAY,aAAa;AAC5C,YAAI,gBACF,WACAA,QAAO,SACPA,QAAO,YACPA,QAAO,MAAM;AAEf,eAAO;MACT;IACF;;;;IAKA,IAAI,OAAOF,KAAI;AACb,UAAE,CAAG,KAAK,cAAc,UAAU,WAAW,GAAG;AAC9C,aAAK,aAAa,CAAC;AACnB,eAAO;MACT;AAGA,UAAI,YAAY,KAAK,WAAW,KAAK;AACrC,UAAE,CAAG;AACH,eAAO;AAIT,UAAI,UAAU,WAAW,GAAG;AAC1B,eAAO,KAAK,WAAW,KAAK;AAC5B,eAAO;MACT;AAGA,eAASG,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,YAAIF,YAAW,UAAUE,EAAC;AAC1B,YAAIF,cAAaD,KAAI;AACnB,oBAAU,OAAOG,IAAG,CAAC;AACrB;QACF;MACF;AAEA,aAAO;IACT;;;AEpFF,8BAAiB;ADGjB,MAAI,uCAAiB;;;;;;;;IAQnB,KAAK;;;;;IAML,QAAQ;;;;IAKR,iBAAiB;;;;;IAMjB,SAAS;;;;;IAMT,iBAAiB;;;;;;;;IASjB,gBAAgB;;;;;;;IAQhB,UAAU;;;;;;IAOV,eAAe;;;;IAKf,WAAW;;;;IAKX,sBAAsB;;;;IAKtB,aAAa;;;;IAKb,kBAAkB;;;;IAKlB,aAAa;;;;;;IAOb,WAAW;;;;IAKX,uBAAuB;;;;IAKvB,sBAAsB;;;;IAKtB,gBAAgB;;;;IAKhB,iBAAiB;;;;;IAMjB,iBAAiB;;;;;;;;;IAUjB,aAAa;;;;IAKb,cAAc;;;;;;IAOd,gBAAgB;;;;IAKhB,eAAe;;;;;IAMf,cAAc;;;;;;;;IASd,cAAc;;;;;;;IAQd,UAAU;;;;;IAMV,SAAS;;;;;;;IAQT,gBAAgB;;;;;;;;;IAUhB,WAAW;;;;IAKX,mBAAmB;;;;;;;;;;;;IAanB,eAAe;;;;;IAMf,mBAAmB;;;;;;;;;;;IAYnB,kBAAkB;;;;;IAMlB,WAAW;;;;;;IAOX,gBAAgB;;;;;;;IAQhB,mBAAmB;;;;IAKnB,iBAAiB;;;;;;;;IASjB,sBAAsB;;;;;;;;;IAUtB,SAAS;;;;IAKT,gBAAgB;;;;;;IAOhB,YAAY;;;;;;;IAQZ,eAAe;;;;IAKf,oBAAoB;;;;IAKpB,qBACE;;;;;;IAOF,kBACE;;;;;IAMF,gBACE;;;;IAKF,qBAAqB;;;;;IAMrB,mBAAmB;;;;IAKnB,kBAAkB;;;;IAKlB,oBAAoB;;;;IAKpB,8BAA8B;;;;IAK9B,gBAAgB;;;;IAKhB,4BAA4B;;;;;IAM5B,sBAAsB;;;;;IAMtB,mBAAmB;MAAE,IAAI;MAAM,IAAI;MAAM,IAAI;MAAM,IAAI;MAAM,GAAG;IAAI;;;;;IAKpE,OAAO;IAAC;;;;;;;;;;;IAYR,OAAOC,QAAO,KAAK,OAAO;AACxB,UAAI;AACF,eAAO;UACL,QAAQ,MAAM,KAAK,OAAO;UAC1B,cAAc,MAAM;UACpB,iBAAiB,MAAM,KAAK;UAC5B,aAAa,KAAK,QAAQ;UAC1B,mBAAmB,MAAM,KAAK,OAAO;UACrC,mBAAmB,MAAM,QAAQ,KAAK,QAAQ;QAChD;IAEJ;;;;;;;;;;IAWA,OAAO,MAAM,MAAM;AACjB,aAAO,KAAI;IACb;;;;;;;IAQA,gBAAgB,SAAU,MAAM,MAAM;AACpC,WAAI;IACN;;;;;;;IAQA,YAAY;;;;;;IAOZ,WAAW;AAET,UAAI;AACJ,WAAK,QAAQ,YAAS,GAAM,KAAK,QAAQ;AAEzC,eAAS,SAAS,KAAK,QAAQ,qBAAqB,KAAK;AACvD,YAAE,uBAAyB,KAAK,MAAM,SAAS,GAAG;AAChD,2BAAiB;AACjB,gBAAM,YAAY;AAClB;QACF;AAEF,UAAE,CAAG,gBAAgB;AACnB,yBAAiB,yCAAS,cACxB,6CAA6C;AAE/C,aAAK,QAAQ,YAAY,cAAc;MACzC;AAEA,UAAI,OAAO,eAAe,qBAAqB,MAAM,EAAE,CAAC;AACxD,UAAI,MAAM;AACR,YAAI,KAAK,eAAe;AACtB,eAAK,cAAc,KAAK,QAAQ;iBACvB,KAAK,aAAa;AAC3B,eAAK,YAAY,KAAK,QAAQ;MAElC;AAEA,aAAO,KAAK,QAAQ,YAAY,KAAK,gBAAe,CAAA;IACtD;;;;;;;;;;;;;IAcA,OAAO,MAAMC,QAAOC,SAAQ,cAAc;AACxC,UAAI,OAAO;QACT,MAAM;QACN,MAAM;QACN,UAAU,KAAK;QACf,WAAW,KAAK;MAClB;AAEA,UAAI,WAAW,KAAK,QAAQ,KAAK;AAGjC,UAAID,UAAS,QAAQC,WAAU,MAAM;AACnC,QAAAD,SAAQ,KAAK;AACb,QAAAC,UAAS,KAAK;MAChB,WAAWD,UAAS;AAClB,QAAAA,SAAQC,UAAS;eACRA,WAAU;AACnB,QAAAA,UAASD,SAAQ;AAInB,MAAAA,SAAQ,KAAK,IAAIA,QAAO,KAAK,QAAQ;AACrC,MAAAC,UAAS,KAAK,IAAIA,SAAQ,KAAK,SAAS;AAExC,UAAI,WAAWD,SAAQC;AAEvB,UAAI,KAAK,WAAWD,UAAS,KAAK,YAAYC,SAAQ;AAEpD,YAAI,iBAAiB,QAAM;AACzB,cAAI,WAAW,UAAU;AACvB,iBAAK,YAAY,KAAK;AACtB,iBAAK,WAAW,KAAK,YAAY;UACnC,OAAO;AACL,iBAAK,WAAW,KAAK;AACrB,iBAAK,YAAY,KAAK,WAAW;UACnC;mBACS,iBAAiB,WAAS;AAEnC,cAAI,WAAW;AACb,YAAAA,UAASD,SAAQ;;AAEjB,YAAAA,SAAQC,UAAS;;AAGnB,gBAAM,IAAI,MAAK,yBAA0B,eAAc;MAE3D;AAEA,WAAK,QAAQ,KAAK,QAAQ,KAAK,YAAY;AAC3C,WAAK,QAAQ,KAAK,SAAS,KAAK,aAAa;AAE7C,WAAK,WAAWD;AAChB,WAAK,YAAYC;AAEjB,aAAO;IACT;;;;;;;;;;IAWA,cAAc,MAAM,MAAM;AACxB,WACG,KAAK,QAAQ,eAAe,KAAK,QAAQ,iBAC1C,KAAK,KAAK,MAAK,SAAA;AAEf,eAAO,KAAK,YACV,MACA,KAAK,QAAQ,aACb,KAAK,QAAQ,cACb,KAAK,QAAQ,cACb,IAAI;;AAGN,eAAO,KAAK,IAAI;IAEpB;;;;;;;;;;;;;;;IAgBA,iBAAiB,uCAAA,yBAAA;;;;;;;;;;IAYjB,KAAKC,IAAG;AACN,aAAO,KAAK,QAAQ,UAAU,OAAO,eAAe;IACtD;IACA,UAAUA,IAAG;IAAC;IACd,QAAQA,IAAG;AACT,aAAO,KAAK,QAAQ,UAAU,OAAO,eAAe;IACtD;IACA,UAAUA,IAAG;AACX,aAAO,KAAK,QAAQ,UAAU,IAAI,eAAe;IACnD;IACA,SAASA,IAAG;AACV,aAAO,KAAK,QAAQ,UAAU,IAAI,eAAe;IACnD;IACA,UAAUA,IAAG;AACX,aAAO,KAAK,QAAQ,UAAU,OAAO,eAAe;IACtD;IAEA,MAAMA,IAAG;IAAC;;;IAIV,QAAQ;AACN,aAAO,KAAK,QAAQ,UAAU,OAAO,YAAY;IACnD;;;IAIA,UAAU,MAAM;AACd,UAAI,KAAK,YAAY,KAAK;AACxB,aAAK,QAAQ,UAAU,IAAI,YAAY;AAGzC,UAAI,KAAK,qBAAiB,CAAK,KAAK,QAAQ,iBAAiB;AAC3D,aAAK,iBAAiB,yCAAS,cAC7B,KAAK,QAAQ,gBAAgB,KAAI,CAAA;AAEnC,aAAK,kBAAkB,KAAK;AAE5B,aAAK,kBAAkB,YAAY,KAAK,cAAc;AACtD,iBAAS,QAAQ,KAAK,eAAe,iBAAiB,gBAAgB;AACpE,eAAK,cAAc,KAAK;AAE1B,aAAK,QAAQ,KAAK,eAAe,iBAAiB,gBAAgB;AAChE,eAAK,YAAY,KAAK,SAAS,KAAK,IAAI;AAG1C,YAAI,KAAK,QAAQ,gBAAgB;AAC/B,eAAK,cAAc,yCAAS,cAAa,oEAC6B,KAAK,QAAQ,oBAAmB;AAEtG,eAAK,eAAe,YAAY,KAAK,WAAW;QAClD;AAEA,YAAI,kBAAe,CAAIA,OAAM;AAC3B,UAAAA,GAAE,eAAc;AAChB,UAAAA,GAAE,gBAAe;AACjB,cAAI,KAAK,WAAW,yCAAS;AAC3B,mBAAO,yCAAS;cACd,KAAK,QAAQ;cAA4B,MACnC,KAAK,WAAW,IAAI;;eAEvB;AACL,gBAAI,KAAK,QAAQ;AACf,qBAAO,yCAAS;gBACd,KAAK,QAAQ;gBAA0B,MACjC,KAAK,WAAW,IAAI;;;AAG5B,qBAAO,KAAK,WAAW,IAAI;UAE/B;QACF;AAEA,iBAAS,cAAc,KAAK,eAAe,iBACzC,kBAAkB;AAElB,qBAAW,iBAAiB,SAAS,eAAe;MAExD;IACF;;IAGA,YAAY,MAAM;AAChB,UAAI,KAAK,kBAAkB,QAAQ,KAAK,eAAe,cAAc;AACnE,aAAK,eAAe,WAAW,YAAY,KAAK,cAAc;AAEhE,aAAO,KAAK,4BAA2B;IACzC;;;IAIA,UAAU,MAAM,SAAS;AACvB,UAAI,KAAK,gBAAgB;AACvB,aAAK,eAAe,UAAU,OAAO,iBAAiB;AACtD,iBAAS,oBAAoB,KAAK,eAAe,iBAC/C,qBAAqB,GACpB;AACD,2BAAiB,MAAM,KAAK;AAC5B,2BAAiB,MAAM;QACzB;AAEA,eAAO;UAAU,MACT,KAAK,eAAe,UAAU,IAAI,kBAAkB;UAC1D;QAAC;MAEL;IACF;;;IAIA,MAAM,MAAMC,UAAS;AACnB,UAAI,KAAK,gBAAgB;AACvB,aAAK,eAAe,UAAU,IAAI,UAAU;AAC5C,YAAI,OAAOA,aAAY,YAAYA,SAAQ;AACzC,UAAAA,WAAUA,SAAQ;AAEpB,iBAAS,QAAQ,KAAK,eAAe,iBACnC,wBAAwB;AAExB,eAAK,cAAcA;MAEvB;IACF;IAEA,gBAAgB;IAAC;;;;IAKjB,WAAW,MAAM;AACf,UAAI,KAAK,gBAAgB;AACvB,aAAK,eAAe,UAAU,IAAI,eAAe;AACjD,YAAI,KAAK;AACP,iBAAQ,KAAK,YAAY,YAAY,KAAK,QAAQ;MAEtD;IACF;IAEA,qBAAqB;IAAC;;;;IAKtB,eAAe,MAAMC,WAAU,WAAW;AACxC,UAAI,KAAK;AACP,iBAAS,QAAQ,KAAK,eAAe,iBACnC,0BAA0B;AAE1B,eAAK,aAAa,aACb,KAAK,QAAQA,YACb,KAAK,MAAM,QAAK,GAAMA;IAGjC;;;IAIA,sBAAsB;IAAC;;;;IAKvB,UAAU;IAAC;IAEX,kBAAkB;IAAC;;;IAInB,QAAQ,MAAM;AACZ,UAAI,KAAK;AACP,eAAO,KAAK,eAAe,UAAU,IAAI,YAAY;IAEzD;IAEA,kBAAkB;IAAC;;IAGnB,SAAS,MAAM;AACb,aAAO,KAAK,KAAK,SAAS,MAAM,KAAK,QAAQ,kBAAkB;IACjE;IAEA,mBAAmB;IAAC;;;IAIpB,SAAS,MAAM;AACb,UAAI,KAAK;AACP,aAAK,YAAY,YAAY,KAAK,QAAQ;AAE5C,UAAI,KAAK;AACP,eAAO,KAAK,eAAe,UAAU,IAAI,aAAa;IAE1D;IAEA,mBAAmB;IAAC;IAEpB,mBAAmB;IAAC;IAEpB,kBAAkB;IAAC;IAEnB,gBAAgB;IAAC;IAEjB,aAAa;IAAC;EAChB;MAEA,2CAAe;MFhxBM,yDAAiB,yCAAO;WACpC,YAAY;AAEjB,WAAK,UAAU,UAAU;AAUzB,WAAK,UAAU,SAAS;QACtB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF;AAEA,WAAK,UAAU,kBAAkB,CAAC;AAClC,WAAK,UAAU,uBAAuB;IACxC;;IA0HA,mBAAmB;AACjB,aAAO,KAAK,MAAM;QAAM,CAAE,SAAS,KAAK;QAAU;QAAG,CAAE,SAAS;;IAClE;;;IAIA,mBAAmB;AACjB,aAAO,KAAK,MAAM;QAAM,CAAE,SAAI,CAAM,KAAK;QAAU;QAAG,CAAE,SAAS;;IACnE;IAEA,mBAAmB,QAAQ;AACzB,aAAO,KAAK,MACT;QAAM,CAAE,SAAS,KAAK,WAAW;QACjC;QAAG,CAAE,SAAS;;IACnB;;IAGA,iBAAiB;AACf,aAAO,KAAK,mBAAmB,yCAAS,MAAM;IAChD;IAEA,oBAAoB;AAClB,aAAO,KAAK,mBAAmB,yCAAS,SAAS;IACnD;IAEA,gBAAgB;AACd,aAAO,KAAK,mBAAmB,yCAAS,KAAK;IAC/C;;IAGA,iBAAiB;AACf,aAAO,KAAK,MACT;QAAM,CACJ,SACC,KAAK,WAAW,yCAAS,aAAa,KAAK,WAAW,yCAAS;QAElE;QAAG,CAAE,SAAS;;IACnB;;;IAIA,OAAO;AAEL,UAAI,KAAK,QAAQ,YAAY;AAC3B,aAAK,QAAQ,aAAa,WAAW,qBAAqB;AAG5D,UACE,KAAK,QAAQ,UAAU,SAAS,UAAU,KAAA,CACzC,KAAK,QAAQ,cAAc,aAAa;AAEzC,aAAK,QAAQ,YACX,yCAAS,cAAa,8EAC0D,KAAK,QAAQ,mCAAkC,CAAA;AAKnI,UAAI,KAAK,kBAAkB,QAAQ;AACjC,YAAI,uBAAoB,MAAS;AAC/B,cAAI,KAAK;AACP,iBAAK,gBAAgB,WAAW,YAAY,KAAK,eAAe;AAElE,eAAK,kBAAkB,SAAS,cAAc,OAAO;AACrD,eAAK,gBAAgB,aAAa,QAAQ,MAAM;AAChD,cAAI,KAAK,QAAQ,aAAa,QAAQ,KAAK,QAAQ,WAAW;AAC5D,iBAAK,gBAAgB,aAAa,YAAY,UAAU;AAE1D,eAAK,gBAAgB,YAAY;AAEjC,cAAI,KAAK,QAAQ,kBAAkB;AACjC,iBAAK,gBAAgB,aACnB,UACA,KAAK,QAAQ,aAAa;AAG9B,cAAI,KAAK,QAAQ,YAAY;AAC3B,iBAAK,gBAAgB,aAAa,WAAW,KAAK,QAAQ,OAAO;AAInE,eAAK,gBAAgB,aAAa,YAAY,IAAI;AAIlD,eAAK,gBAAgB,MAAM,aAAa;AACxC,eAAK,gBAAgB,MAAM,WAAW;AACtC,eAAK,gBAAgB,MAAM,MAAM;AACjC,eAAK,gBAAgB,MAAM,OAAO;AAClC,eAAK,gBAAgB,MAAM,SAAS;AACpC,eAAK,gBAAgB,MAAM,QAAQ;AACnC,mDAAS,WACP,KAAK,QAAQ,sBACb,sBAAsB,EACtB,YAAY,KAAK,eAAe;AAClC,eAAK,gBAAgB,iBAAiB,UAAQ,MAAQ;AACpD,gBAAI,EAAC,OAACL,OAAM,IAAI,KAAK;AACrB,gBAAIA,OAAM;AACR,uBAAS,QAAQA;AACf,qBAAK,QAAQ,IAAI;AAGrB,iBAAK,KAAK,cAAcA,MAAK;AAC7B,iCAAoB;UACtB,CAAC;QACH;AACA,6BAAoB;MACtB;AAEA,WAAK,MAAM,OAAO,QAAQ,OAAO,OAAO,MAAM,OAAO;AAKrD,eAAS,aAAa,KAAK;AACzB,aAAK,GAAG,WAAW,KAAK,QAAQ,SAAS,CAAA;AAG3C,WAAK;QAAG;QAAgB,MAAQ,KAAK,0BAAyB;;AAE9D,WAAK;QAAG;QAAa,MAAQ,KAAK,0BAAyB;;AAE3D,WAAK;QAAG;QAAU,CAAG,SAAS,KAAK,KAAK,YAAY,IAAI;;AAGxD,WAAK,GAAG,YAAU,CAAG,SAAS;AAC5B,YACE,KAAK,cAAa,EAAG,WAAW,KAChC,KAAK,kBAAiB,EAAG,WAAW,KACpC,KAAK,eAAc,EAAG,WAAW;AAGjC,iBAAO;YAAU,MAAO,KAAK,KAAK,eAAe;YAAG;UAAC;MAEzD,CAAC;AAED,YAAM,gBAAgB,SAAUG,IAAG;AACjC,YAAIA,GAAE,aAAa;AAIjB,mBAASJ,KAAI,GAAGA,KAAII,GAAE,aAAa,MAAM,QAAQJ,MAAK;AACpD,gBAAII,GAAE,aAAa,MAAMJ,EAAC,MAAM;AAAS,qBAAO;UAClD;AAEF,eAAO;MACT;AAEA,UAAI,gBAAgB,SAAUI,IAAG;AAI/B,YAAE,CAAG,cAAcA,EAAC;AAAG;AACvB,QAAAA,GAAE,gBAAe;AACjB,YAAIA,GAAE;AACJ,iBAAOA,GAAE,eAAc;;AAEvB,iBAAQA,GAAE,cAAc;MAE5B;AAGA,WAAK,YAAY;QACf;UACE,SAAS,KAAK;UACd,QAAQ;YACN,WAAS,CAAGA,OAAM;AAChB,qBAAO,KAAK,KAAK,aAAaA,EAAC;YACjC;YACA,WAAS,CAAGA,OAAM;AAChB,4BAAcA,EAAC;AACf,qBAAO,KAAK,KAAK,aAAaA,EAAC;YACjC;YACA,UAAQ,CAAGA,OAAM;AAIf,kBAAI;AACJ,kBAAI;AACF,uBAAOA,GAAE,aAAa;cACxB,SAASG,QAAP;cAAe;AACjB,cAAAH,GAAE,aAAa,aACb,WAAW,QAAQ,eAAe,OAAO,SAAS;AAEpD,4BAAcA,EAAC;AACf,qBAAO,KAAK,KAAK,YAAYA,EAAC;YAChC;YACA,WAAS,CAAGA,OAAM;AAChB,qBAAO,KAAK,KAAK,aAAaA,EAAC;YACjC;YACA,MAAI,CAAGA,OAAM;AACX,4BAAcA,EAAC;AACf,qBAAO,KAAK,KAAKA,EAAC;YACpB;YACA,SAAO,CAAGA,OAAM;AACd,qBAAO,KAAK,KAAK,WAAWA,EAAC;YAC/B;UACF;QAMF;MACF;AAEA,WAAK,kBAAkB,QAAO,CAAE,qBAAqB;AACnD,eAAO,KAAK,UAAU,KAAK;UACzB,SAAS;UACT,QAAQ;YACN,OAAK,CAAG,QAAQ;AAEd,kBACE,qBAAqB,KAAK,WAC1B,IAAI,WAAW,KAAK,WACpB,yCAAS,cACP,IAAI,QACJ,KAAK,QAAQ,cAAc,aAAa,CAAA;AAG1C,qBAAK,gBAAgB,MAAK;AAE5B,qBAAO;YACT;UACF;QACF,CAAC;MACH,CAAC;AAED,WAAK,OAAM;AAEX,aAAO,KAAK,QAAQ,KAAK,KAAK,IAAI;IACpC;;IAGA,UAAU;AACR,WAAK,QAAO;AACZ,WAAK,eAAe,IAAI;AACxB,UACE,KAAK,mBAAmB,OAAO,KAAK,gBAAgB,aAAa,QACjE;AACA,aAAK,gBAAgB,WAAW,YAAY,KAAK,eAAe;AAChE,aAAK,kBAAkB;MACzB;AACA,aAAO,KAAK,QAAQ;AACpB,aAAO,yCAAS,UAAU,OAAO,yCAAS,UAAU,QAAQ,IAAI,GAAG,CAAC;IACtE;IAEA,4BAA4B;AAC1B,UAAI;AACJ,UAAI,iBAAiB;AACrB,UAAI,aAAa;AAEjB,UAAI,cAAc,KAAK,eAAc;AAErC,UAAI,YAAY,QAAQ;AACtB,iBAAS,QAAQ,KAAK,eAAc,GAAI;AACtC,4BAAkB,KAAK,OAAO;AAC9B,wBAAc,KAAK,OAAO;QAC5B;AACA,8BAAuB,MAAM,iBAAkB;MACjD;AACE,8BAAsB;AAGxB,aAAO,KAAK,KACV,uBACA,qBACA,YACA,cAAc;IAElB;;;IAIA,cAAcI,IAAG;AACf,UAAI,OAAO,KAAK,QAAQ,cAAc;AACpC,eAAO,KAAK,QAAQ,UAAUA,EAAC;;AAE/B,eAAM,GAAI,KAAK,QAAQ,YACrB,KAAK,QAAQ,iBAAc,IAAOA,QAAO;IAG/C;;;IAIA,YAAY,MAAM;AAChB,UAAI,OAAO,KAAK,QAAQ,eAAe;AACrC,eAAO,KAAK;AAEd,aAAO,KAAK,QAAQ,WAAW,IAAI;IACrC;;;;;IAMA,kBAAkB;AAChB,UAAI,kBAAkB;AACtB,UAAK,mBAAmB,KAAK,oBAAmB;AAC9C,eAAO;AAGT,UAAI,eAAe;AACnB,UAAI,KAAK,QAAQ;AACf,wBAAY,MAAU,KAAK,QAAQ;AAErC,sBAAY,4BAAgC,KAAK,cAAc,CAAC,MAC9D,KAAK,QAAQ,iBAAiB,wBAAwB;AAGxD,UAAI,SAAS,yCAAS,cAAc,YAAY;AAChD,UAAI,KAAK,QAAQ,YAAY,QAAQ;AACnC,eAAO,yCAAS,cAAa,iBACV,KAAK,QAAQ,8CAA8C,KAAK,QAAQ,iBAAgB;AAE3G,aAAK,YAAY,MAAM;MACzB,OAAO;AAEL,aAAK,QAAQ,aAAa,WAAW,qBAAqB;AAC1D,aAAK,QAAQ,aAAa,UAAU,KAAK,QAAQ,MAAM;MACzD;AACA,aAAO,QAAQ,OAAO,OAAO;IAC/B;;;;IAKA,sBAAsB;AACpB,UAAI,cAAc,SAAUC,WAAU;AACpC,iBAAS,MAAMA,WAAU;AACvB,cAAE,qBAAuB,KAAK,GAAG,SAAS;AACxC,mBAAO;QAEX;MACF;AAEA,eAAS,WAAW;QAAC;QAAO;MAAM,GAAG;AACnC,YAAI;AACJ,YACG,WAAW,YAAY,KAAK,QAAQ,qBAAqB,OAAO,CAAA;AAEjE,iBAAO;MAEX;IACF;;IAGA,sBAAsB;AACpB,aAAO,KAAK,UAAU;QAAG,CAAE,sBAAgB,MAClC;AACL,cAAI,SAAS,CAAC;AACd,mBAAS,SAAS,iBAAiB,QAAQ;AACzC,gBAAI,WAAW,iBAAiB,OAAO,KAAK;AAC5C,mBAAO,KACL,iBAAiB,QAAQ,iBAAiB,OAAO,UAAU,KAAK,CAAA;UAEpE;AACA,iBAAO;QACT,GAAC;;IAEL;;IAGA,uBAAuB;AACrB,aAAO,KAAK,UAAU;QAAG,CAAE,sBAAgB,MAClC;AACL,cAAI,SAAS,CAAC;AACd,mBAAS,SAAS,iBAAiB,QAAQ;AACzC,gBAAI,WAAW,iBAAiB,OAAO,KAAK;AAC5C,mBAAO,KACL,iBAAiB,QAAQ,oBAAoB,OAAO,UAAU,KAAK,CAAA;UAEvE;AACA,iBAAO;QACT,GAAC;;IAEL;;IAGA,UAAU;AACR,WAAK,kBAAkB;QAAO,CAAE,YAC9B,QAAQ,UAAU,OAAO,cAAc;;AAEzC,WAAK,qBAAoB;AACzB,WAAK,WAAW;AAEhB,aAAO,KAAK,MAAM;QAAG,CAAE,SAAS,KAAK,aAAa,IAAI;;IACxD;IAEA,SAAS;AACP,aAAO,KAAK;AACZ,WAAK,kBAAkB;QAAO,CAAE,YAC9B,QAAQ,UAAU,IAAI,cAAc;;AAEtC,aAAO,KAAK,oBAAmB;IACjC;;IAGA,SAASC,OAAM;AACb,UAAI,eAAe;AACnB,UAAI,eAAe;AAEnB,UAAIA,QAAO,GAAG;AACZ,YAAI,QAAQ;UAAC;UAAM;UAAM;UAAM;UAAM;QAAG;AAExC,iBAASV,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,cAAI,OAAO,MAAMA,EAAC;AAClB,cAAI,SAAS,KAAK,IAAI,KAAK,QAAQ,cAAc,IAAIA,EAAC,IAAI;AAE1D,cAAIU,SAAQ,QAAQ;AAClB,2BAAeA,QAAO,KAAK,IAAI,KAAK,QAAQ,cAAc,IAAIV,EAAC;AAC/D,2BAAe;AACf;UACF;QACF;AAEA,uBAAe,KAAK,MAAM,KAAK,YAAY,IAAI;MACjD;AAEA,aAAM,WAAY,yBAAyB,KAAK,QAAQ,kBAAkB,YAAY;IACxF;;IAGA,8BAA8B;AAC5B,UACE,KAAK,QAAQ,YAAY,QACzB,KAAK,iBAAgB,EAAG,UAAU,KAAK,QAAQ,UAC/C;AACA,YAAI,KAAK,iBAAgB,EAAG,WAAW,KAAK,QAAQ;AAClD,eAAK,KAAK,mBAAmB,KAAK,KAAK;AAEzC,eAAO,KAAK,QAAQ,UAAU,IAAI,sBAAsB;MAC1D;AACE,eAAO,KAAK,QAAQ,UAAU,OAAO,sBAAsB;IAE/D;IAEA,KAAKI,IAAG;AACN,UAAE,CAAGA,GAAE;AACL;AAEF,WAAK,KAAK,QAAQA,EAAC;AAInB,UAAIH,SAAQ,CAAC;AACb,eAASD,KAAI,GAAGA,KAAII,GAAE,aAAa,MAAM,QAAQJ;AAC/C,QAAAC,OAAMD,EAAC,IAAII,GAAE,aAAa,MAAMJ,EAAC;AAInC,UAAIC,OAAM,QAAQ;AAChB,YAAI,EAAC,MAAO,IAAIG,GAAE;AAClB,YAAI,SAAS,MAAM,UAAU,MAAM,CAAC,EAAE,oBAAoB;AAExD,eAAK,mBAAmB,KAAK;;AAE7B,eAAK,YAAYH,MAAK;MAE1B;AAEA,WAAK,KAAK,cAAcA,MAAK;IAC/B;IAEA,MAAMG,IAAG;AACP,UACE;QAAUA,MAAK,OAAOA,GAAE,gBAAgB;QAAS,CAAGO,OAAMA,GAAE;WAAU;AAEtE;AAGF,WAAK,KAAK,SAASP,EAAC;AACpB,UAAI,EAAC,MAAO,IAAIA,GAAE;AAElB,UAAI,MAAM;AACR,eAAO,KAAK,mBAAmB,KAAK;IAExC;IAEA,YAAYH,QAAO;AACjB,eAAS,QAAQA;AACf,aAAK,QAAQ,IAAI;IAErB;;;IAIA,mBAAmB,OAAO;AACxB,cAAM,MAAQ;AACZ,YAAI,SAAS,CAAC;AACd,iBAAS,QAAQ,OAAO;AACtB,cAAI;AACJ,cACE,KAAK,oBAAoB,SACxB,QAAQ,KAAK,iBAAgB,IAC9B;AACA,gBAAI,MAAM;AACR,qBAAO,KAAK,KAAK,QAAQ,KAAK,UAAS,CAAA,CAAA;qBAC9B,MAAM;AAEf,qBAAO,KAAK,KAAK,uBAAuB,OAAO,MAAM,IAAI,CAAA;;AAEzD,qBAAO,KAAK,MAAS;UAEzB,WAAW,KAAK,aAAa,MAAI;AAC/B,gBAAI,KAAK,QAAQ,QAAQ,KAAK,SAAS;AACrC,qBAAO,KAAK,KAAK,QAAQ,KAAK,UAAS,CAAA,CAAA;;AAEvC,qBAAO,KAAK,MAAS;;AAGvB,mBAAO,KAAK,MAAS;QAEzB;AACA,eAAO;MACT,GAAC;IACH;;IAGA,uBAAuB,WAAW,MAAM;AACtC,UAAI,YAAY,UAAU,aAAY;AAEtC,UAAI,eAAY,CAAIM,WAClB;QAAgB;QAAS;QAAK,CAAGK,OAAMA,GAAE,IAAIL,MAAK;;AAEpD,UAAI,cAAW,MAAS;AACtB,eAAO,UAAU,YAAW,CAAE,YAAY;AACxC,cAAI,QAAQ,SAAS,GAAG;AACtB,qBAAS,SAAS,SAAS;AACzB,kBAAI,MAAM;AACR,sBAAM,KAAI,CAAE,SAAS;AACnB,sBACE,KAAK,QAAQ,qBACb,KAAK,KAAK,UAAU,GAAG,CAAC,MAAM;AAE9B;AAEF,uBAAK,WAAQ,GAAM,QAAQ,KAAK;AAChC,yBAAO,KAAK,QAAQ,IAAI;gBAC1B,CAAC;uBACQ,MAAM;AACf,qBAAK,uBAAuB,OAAK,GAAK,QAAQ,MAAM,MAAI;YAE5D;AAKA,wBAAW;UACb;AACA,iBAAO;QACT,GAAG,YAAY;MACjB;AAEA,aAAO,YAAW;IACpB;;;;;;;IAQA,OAAO,MAAM,MAAM;AACjB,UACE,KAAK,QAAQ,eACb,KAAK,OAAO,KAAK,QAAQ,cAAb;AAEZ,aACE,KAAK,QAAQ,eACV,QAAQ,gBAAgB,KAAK,MAAM,KAAK,OAAO,OAAO,KAAK,IAAI,GAAG,EAClE,QAAQ,mBAAmB,KAAK,QAAQ,WAAW,CAAA;eAEjD,CAAG,yCAAS,YAAY,MAAM,KAAK,QAAQ,aAAa;AAC/D,aAAK,KAAK,QAAQ,mBAAmB;eAErC,KAAK,QAAQ,YAAY,QACzB,KAAK,iBAAgB,EAAG,UAAU,KAAK,QAAQ,UAC/C;AACA,aACE,KAAK,QAAQ,qBAAqB,QAChC,gBACA,KAAK,QAAQ,QAAQ,CAAA;AAGzB,aAAK,KAAK,oBAAoB,IAAI;MACpC;AACE,aAAK,QAAQ,OAAO,KAAK,MAAM,MAAM,IAAI;IAE7C;IAEA,QAAQ,MAAM;AACZ,WAAK,SAAS;QACZ,MAAM,yCAAS,OAAM;QACrB,UAAU;;;QAGV,OAAO,KAAK;QACZ,WAAW;QACX,UAAU,KAAK,YAAY,IAAI;MAIjC;AACA,WAAK,MAAM,KAAK,IAAI;AAEpB,WAAK,SAAS,yCAAS;AAEvB,WAAK,KAAK,aAAa,IAAI;AAE3B,WAAK,kBAAkB,IAAI;AAE3B,WAAK,OAAO,MAAI,CAAGA,WAAU;AAC3B,YAAIA,QAAO;AACT,eAAK,WAAW;AAChB,eAAK,iBAAiB;YAAC;UAAI,GAAGA,MAAK;QACrC,OAAO;AACL,eAAK,WAAW;AAChB,cAAI,KAAK,QAAQ;AACf,iBAAK,YAAY,IAAI;QAEzB;AACA,aAAK,4BAA2B;MAClC,CAAC;IACH;;IAGA,aAAaN,QAAO;AAClB,eAAS,QAAQA;AACf,aAAK,YAAY,IAAI;AAEvB,aAAO;IACT;IAEA,YAAY,MAAM;AAChB,UAAI,KAAK,WAAW,yCAAS,SAAS,KAAK,aAAa,MAAM;AAC5D,aAAK,SAAS,yCAAS;AACvB,YAAI,KAAK,QAAQ;AACf,iBAAO;YAAU,MAAO,KAAK,aAAY;YAAI;UAAC;MAElD;AACE,cAAM,IAAI,MACR,kFAAkF;IAGxF;IAEA,kBAAkB,MAAM;AACtB,UACE,KAAK,QAAQ,yBACb,KAAK,KAAK,MAAK,SAAA,KACf,KAAK,QAAQ,KAAK,QAAQ,uBAAb,SACb;AACA,aAAK,gBAAgB,KAAK,IAAI;AAC9B,eAAO;UAAU,MAAO,KAAK,uBAAsB;UAAI;QAAC;MAC1D;IACF;IAEA,yBAAyB;AACvB,UAAI,KAAK,wBAAwB,KAAK,gBAAgB,WAAW;AAC/D;AAGF,WAAK,uBAAuB;AAC5B,UAAI,OAAO,KAAK,gBAAgB,MAAK;AACrC,aAAO,KAAK,gBACV,MACA,KAAK,QAAQ,gBACb,KAAK,QAAQ,iBACb,KAAK,QAAQ,iBACb,MAAI,CACH,YAAY;AACX,aAAK,KAAK,aAAa,MAAM,OAAO;AACpC,aAAK,uBAAuB;AAC5B,eAAO,KAAK,uBAAsB;MACpC,CAAC;IAEL;;IAGA,WAAW,MAAM;AACf,UAAI,KAAK,WAAW,yCAAS;AAC3B,aAAK,aAAa,IAAI;AAExB,WAAK,QAAQ,8BAAQ,KAAK,OAAO,IAAI;AAErC,WAAK,KAAK,eAAe,IAAI;AAC7B,UAAI,KAAK,MAAM,WAAW;AACxB,eAAO,KAAK,KAAK,OAAO;IAE5B;;IAGA,eAAe,mBAAmB;AAEhC,UAAI,qBAAqB;AACvB,4BAAoB;AAEtB,eAAS,QAAQ,KAAK,MAAM,MAAK;AAC/B,YAAI,KAAK,WAAW,yCAAS,aAAa;AACxC,eAAK,WAAW,IAAI;AAGxB,aAAO;IACT;;;;IAKA,YAAY,MAAMC,QAAOC,SAAQ,cAAcL,WAAU;AACvD,aAAO,KAAK,gBACV,MACAI,QACAC,SACA,cACA,MAAI,CACH,SAAS,WAAW;AACnB,YAAI,UAAU;AAEZ,iBAAOL,UAAS,IAAI;aACf;AACL,cAAI,EAAC,eAAgB,IAAI,KAAK;AAC9B,cAAI,kBAAkB;AACpB,6BAAiB,KAAK;AAExB,cAAI,iBAAiB,OAAO,UAC1B,gBACA,KAAK,QAAQ,aAAa;AAE5B,cACE,mBAAmB,gBACnB,mBAAmB;AAGnB,6BAAiB,kCAAY,QAAQ,KAAK,SAAS,cAAc;AAEnE,iBAAOA,UAAS,yCAAS,cAAc,cAAc,CAAA;QACvD;MACF,CAAC;IAEL;IAEA,gBAAgB,MAAMI,QAAOC,SAAQ,cAAc,gBAAgBL,WAAU;AAC3E,UAAI,aAAa,IAAI,WAAU;AAE/B,iBAAW,SAAM,MAAS;AACxB,aAAK,UAAU,WAAW;AAG1B,YAAI,KAAK,SAAS,iBAAiB;AACjC,cAAIA,aAAY;AACd,YAAAA,UAAS,WAAW,MAAM;AAE5B;QACF;AAEA,aAAK,uBACH,MACAI,QACAC,SACA,cACA,gBACAL,SAAQ;MAEZ;AAEA,iBAAW,cAAc,IAAI;IAC/B;;;;;;;IAQA,oBACE,UACA,UACAA,WACA,aACA,kBAAkB,MAClB;AACA,WAAK,KAAK,aAAa,QAAQ;AAC/B,WAAK,KAAK,YAAY,QAAQ;AAE9B,UAAE,CAAG,iBAAiB;AACpB,aAAK,KAAK,aAAa,UAAU,QAAQ;AACzC,YAAIA;AAAU,UAAAA,UAAQ;MACxB,OAAO;AACL,YAAI,SAAM,CAAI,cAAc;AAC1B,eAAK,KAAK,aAAa,UAAU,SAAS;AAC1C,cAAIA;AAAU,YAAAA,UAAQ;QACxB;AACA,iBAAS,UAAU;AAEnB,aAAK,uBACH,UACA,KAAK,QAAQ,gBACb,KAAK,QAAQ,iBACb,KAAK,QAAQ,iBACb,KAAK,QAAQ,gBACb,QACA,WAAW;MAEf;IACF;IAEA,uBACE,MACAI,QACAC,SACA,cACA,gBACAL,WACA,aACA;AAGA,UAAI,MAAM,SAAS,cAAc,KAAK;AAEtC,UAAI;AACF,YAAI,cAAc;AAIpB,uBACE,iBAAiB,SAAS,IAAI,EAAE,kBAAkB,KAAK,eACnD,QACA;AAEN,UAAI,SAAM,MAAS;AACjB,YAAI,WAAQ,CAAIA,cAAaA,UAAS,CAAC;AACvC,YAAI,OAAO,SAAS,eAAe,SAAS,QAAQ;AAClD,qBAAQ,CAAIA,cACV,KAAK,QAAQ,KAAK,WAAY;AAC5B,mBAAOA,UAAS,KAAK,OAAO,MAAM,aAAa,CAAA;UACjD,CAAC;AAGL,eAAO,SAAQ,CAAE,gBAAgB;AAC/B,eAAK,QAAQ,IAAI;AACjB,eAAK,SAAS,IAAI;AAElB,cAAI,aAAa,KAAK,QAAQ,OAAO,KACnC,MACA,MACAI,QACAC,SACA,YAAY;AAGd,cAAI,SAAS,SAAS,cAAc,QAAQ;AAC5C,cAAI,MAAM,OAAO,WAAW,IAAI;AAEhC,iBAAO,QAAQ,WAAW;AAC1B,iBAAO,SAAS,WAAW;AAE3B,cAAI,cAAc,GAAG;AACnB,mBAAO,QAAQ,WAAW;AAC1B,mBAAO,SAAS,WAAW;UAC7B;AAEA,kBAAQ,aAAW;YACjB,KAAK;AAEH,kBAAI,UAAU,OAAO,OAAO,CAAC;AAC7B,kBAAI,MAAM,IAAI,CAAC;AACf;YACF,KAAK;AAEF,kBAAG,UAAU,OAAO,OAAO,OAAO,MAAM;AACzC,kBAAI,OAAO,KAAK,EAAE;AAClB;YACF,KAAK;AAEH,kBAAI,UAAU,GAAG,OAAO,MAAM;AAC9B,kBAAI,MAAM,GAAG,EAAE;AACf;YACF,KAAK;AAEH,kBAAI,OAAO,MAAM,KAAK,EAAE;AACxB,kBAAI,MAAM,GAAG,EAAE;AACf;YACF,KAAK;AAEF,kBAAG,OAAO,MAAM,KAAK,EAAE;AACxB,kBAAI,UAAU,GAAC,CAAG,OAAO,KAAK;AAC9B;YACF,KAAK;AAEH,kBAAI,OAAO,MAAM,KAAK,EAAE;AACxB,kBAAI,UAAU,OAAO,QAAM,CAAG,OAAO,KAAK;AAC1C,kBAAI,MAAM,IAAI,CAAC;AACf;YACF,KAAK;AAEH,kBAAI,OAAO,OAAO,KAAK,EAAE;AACzB,kBAAI,UAAS,CAAE,OAAO,QAAQ,CAAC;AAC/B;;AAIJ,gDACE,KACA,KACA,WAAW,QAAQ,OAAO,WAAW,OAAO,GAC5C,WAAW,QAAQ,OAAO,WAAW,OAAO,GAC5C,WAAW,UACX,WAAW,WACX,WAAW,QAAQ,OAAO,WAAW,OAAO,GAC5C,WAAW,QAAQ,OAAO,WAAW,OAAO,GAC5C,WAAW,UACX,WAAW,SAAS;AAGtB,cAAI,YAAY,OAAO,UAAU,WAAW;AAE5C,cAAIL,aAAY;AACd,mBAAOA,UAAS,WAAW,MAAM;QAErC,CAAC;MACH;AAEA,UAAIA,aAAY;AACd,YAAI,UAAUA;AAGhB,aAAQ,IAAI,MAAM,KAAK;IACzB;;IAGA,eAAe;AACb,UAAI,EAAC,gBAAiB,IAAI,KAAK;AAC/B,UAAI,mBAAmB,KAAK,kBAAiB,EAAG;AAChD,UAAIE,KAAI;AAGR,UAAI,oBAAoB;AACtB;AAGF,UAAI,cAAc,KAAK,eAAc;AAErC,UAAE,EAAI,YAAY,SAAS;AACzB;AAGF,UAAI,KAAK,QAAQ;AAEf,eAAO,KAAK,aACV,YAAY,MAAM,GAAG,kBAAkB,gBAAgB,CAAA;;eAGlDA,KAAI,iBAAiB;AAC1B,cAAE,CAAG,YAAY;AACf;AAEF,eAAK,YAAY,YAAY,MAAK,CAAA;AAClC,UAAAA;QACF;IAEJ;;IAGA,YAAY,MAAM;AAChB,aAAO,KAAK,aAAa;QAAC;MAAI,CAAC;IACjC;;IAGA,aAAaC,QAAO;AAClB,eAAS,QAAQA,QAAO;AACtB,aAAK,aAAa;AAClB,aAAK,SAAS,yCAAS;AAEvB,aAAK,KAAK,cAAc,IAAI;MAC9B;AAEA,UAAI,KAAK,QAAQ;AACf,aAAK,KAAK,sBAAsBA,MAAK;AAGvC,aAAO,KAAK,YAAYA,MAAK;IAC/B;IAEA,iBAAiB,KAAK;AACpB,UAAIA;AACJ,aAAQA,SAAQ,KAAK,MAClB;QAAM,CAAE,SAAS,KAAK,QAAQ;QAC9B;QAAG,CAAE,SAAS;;IACnB;;;;;IAMA,aAAa,MAAM;AACjB,UAAI,KAAK,WAAW,yCAAS,WAAW;AACtC,YAAI,eAAe,KAAK,iBAAiB,KAAK,GAAG;AACjD,iBAAS,eAAe;AACtB,sBAAY,SAAS,yCAAS;AAEhC,YAAI,OAAO,KAAK,QAAQ;AACtB,eAAK,IAAI,MAAK;AAEhB,iBAAS,gBAAe;AACtB,eAAK,KAAK,YAAY,YAAW;AAEnC,YAAI,KAAK,QAAQ;AACf,eAAK,KAAK,oBAAoB,YAAY;MAE9C,WACE,KAAK,WAAW,yCAAS,SACzB,KAAK,WAAW,yCAAS,QACzB;AACA,aAAK,SAAS,yCAAS;AACvB,aAAK,KAAK,YAAY,IAAI;AAC1B,YAAI,KAAK,QAAQ;AACf,eAAK,KAAK,oBAAoB;YAAC;UAAI,CAAC;MAExC;AAEA,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK,aAAY;IAE5B;IAEA,cAAcY,YAAW,MAAM;AAC7B,UAAI,OAAOA,YAAW;AACpB,eAAOA,QAAO,MAAM,MAAM,IAAI;AAEhC,aAAOA;IACT;IAEA,WAAW,MAAM;AACf,aAAO,KAAK,YAAY;QAAC;MAAI,CAAC;IAChC;IAEA,YAAYZ,QAAO;AACjB,WAAK,gBAAgBA,QAAK,CAAG,qBAAqB;AAChD,YAAI,KAAK,QAAQ,UAAU;AAGzB,cAAI,kBAAkB,iBAAiB,CAAC;AACxC,UAAAA,OAAM,CAAC,EAAE,OAAO,UACd,KAAK,QAAQ,aACZ,KAAK,QAAQ,iBACZ,gBAAgB,OAAO,KAAK,QAAQ;AACxC,UAAAA,OAAM,CAAC,EAAE,OAAO,kBAAkB,KAAK,KACrC,gBAAgB,OAAO,KAAK,QAAQ,SAAS;QAEjD;AAEA,YAAIA,OAAM,CAAC,EAAE,OAAO,SAAS;AAK3B,cAAI,OAAOA,OAAM,CAAC;AAClB,cAAI,kBAAkB,iBAAiB,CAAC;AACxC,cAAI,oBAAoB;AAExB,eAAK,OAAO,SAAS,CAAC;AAEtB,cAAI,kBAAe,MAAS;AAC1B,gBAAI,aAAa;mBAGV,KAAK,OAAO,OAAO,UAAU,MAAM;AACxC;AAIF,gBAAI,cAAc,KAAK,OAAO;AAAiB;AAE/C;AAEA,gBAAIa,SAAQ,aAAa,KAAK,QAAQ;AACtC,gBAAIC,OAAM,KAAK,IACbD,SAAQ,KAAK,QAAQ,WACrB,gBAAgB,IAAI;AAGtB,gBAAI,YAAY;cACd,MAAM,KAAK,cAAc,CAAC;cAC1B,MAAM,gBAAgB,cAClB,gBAAgB,YAAYA,QAAOC,IAAG,IACtC,gBAAgB,MAAMD,QAAOC,IAAG;cACpC,UAAU,KAAK,OAAO;cACtB;YACF;AAEA,iBAAK,OAAO,OAAO,UAAU,IAAI;cAC/B;cACA,OAAO;cACP;cACA,QAAQ,yCAAS;cACjB,UAAU;cACV,SAAS;YACX;AAEA,iBAAK,YAAYd,QAAO;cAAC;YAAS,CAAC;UACrC;AAEA,eAAK,OAAO,sBAAmB,CAAI,OAAOe,cAAa;AACrD,gBAAI,cAAc;AAClB,kBAAM,SAAS,yCAAS;AAGxB,kBAAM,YAAY;AAClB,kBAAM,WAAW,MAAM,IAAI;AAC3B,kBAAM,kBAAkB,MAAM,IAAI,sBAAqB;AAEvD,kBAAM,MAAM;AAEZ,qBAAShB,KAAI,GAAGA,KAAI,KAAK,OAAO,iBAAiBA,MAAK;AACpD,kBAAI,KAAK,OAAO,OAAOA,EAAC,MAAM;AAC5B,uBAAO,gBAAe;AAExB,kBAAI,KAAK,OAAO,OAAOA,EAAC,EAAE,WAAW,yCAAS;AAC5C,8BAAc;YAElB;AAEA,gBAAI;AACF,mBAAK,QAAQ,eAAe,MAAI,MAAQ;AACtC,qBAAK,UAAUC,QAAOe,WAAU,IAAI;cACtC,CAAC;UAEL;AAEA,cAAI,KAAK,QAAQ;AACf,qBAAShB,KAAI,GAAGA,KAAI,KAAK,OAAO,iBAAiBA;AAC/C,8BAAe;;AAGjB,4BAAe;QAEnB,OAAO;AACL,cAAI,aAAa,CAAC;AAClB,mBAASA,KAAI,GAAGA,KAAIC,OAAM,QAAQD;AAChC,uBAAWA,EAAC,IAAI;cACd,MAAM,KAAK,cAAcA,EAAC;cAC1B,MAAM,iBAAiBA,EAAC;cACxB,UAAUC,OAAMD,EAAC,EAAE,OAAO;YAC5B;AAEF,eAAK,YAAYC,QAAO,UAAU;QACpC;MACF,CAAC;IACH;;IAGA,UAAU,MAAM,KAAK;AACnB,eAASD,KAAI,GAAGA,KAAI,KAAK,OAAO,iBAAiBA,MAAK;AACpD,YACE,KAAK,OAAO,OAAOA,EAAC,MAAM,UAC1B,KAAK,OAAO,OAAOA,EAAC,EAAE,QAAQ;AAE9B,iBAAO,KAAK,OAAO,OAAOA,EAAC;MAE/B;IACF;;;;;;IAOA,YAAYC,QAAO,YAAY;AAC7B,UAAI,MAAM,IAAI,eAAc;AAG5B,eAAS,QAAQA;AACf,aAAK,MAAM;AAEb,UAAIA,OAAM,CAAC,EAAE,OAAO;AAGlB,QAAAA,OAAM,CAAC,EAAE,OAAO,OAAO,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM;AAGzD,UAAI,SAAS,KAAK,cAAc,KAAK,QAAQ,QAAQA,QAAO,UAAU;AACtE,UAAI,MAAM,KAAK,cAAc,KAAK,QAAQ,KAAKA,QAAO,UAAU;AAChE,UAAI,KAAK,QAAQ,KAAK,IAAI;AAG1B,UAAI,UAAU,KAAK,cAAc,KAAK,QAAQ,SAASA,MAAK;AAC5D,UAAI;AAAS,YAAI,UAAU,KAAK,cAAc,KAAK,QAAQ,SAASA,MAAK;AAGzE,UAAI,kBAAe,CAAA,CAAK,KAAK,QAAQ;AAErC,UAAI,SAAM,CAAIG,OAAM;AAClB,aAAK,mBAAmBH,QAAO,KAAKG,EAAC;MACvC;AAEA,UAAI,YAAS,MAAS;AACpB,aAAK,mBACHH,QACA,KAAG,0BACuB,KAAK,QAAQ,UAAU,aAAa;MAElE;AAEA,UAAI,UAAO,MAAS;AAClB,aAAK,mBAAmBA,QAAO,GAAG;MACpC;AAGA,UAAI,cAAc,IAAI,UAAU,OAAO,IAAI,SAAS;AACpD,kBAAY,aAAU,CAAIG,OACxB,KAAK,2BAA2BH,QAAO,KAAKG,EAAC;AAE/C,UAAI,UAAU,KAAK,QAAQ,iBACvB;QACE,QAAQ;QACR,iBAAiB;QACjB,oBAAoB;MACtB,IACA,CAAC;AAEL,UAAI,KAAK,QAAQ;AACf,gBAAQ,cAAc,IAAIH,OAAM,CAAC,EAAE;AAGrC,UAAI,KAAK,QAAQ;AACf,qBAAO,SAAS,KAAK,QAAQ,OAAO;AAGtC,eAAS,cAAc,SAAS;AAC9B,YAAI,cAAc,QAAQ,UAAU;AACpC,YAAI;AACF,cAAI,iBAAiB,YAAY,WAAW;MAEhD;AAEA,UAAI,KAAK,QAAQ,YAAY;AAG3B,iBAAS,QAAQA;AACf,eAAK,KAAK,WAAW,MAAM,GAAG;AAEhC,YAAI,KAAK,QAAQ;AACf,eAAK,KAAK,mBAAmBA,QAAO,GAAG;AAEzC,aAAK,cAAc,KAAK,MAAMA,MAAK;MACrC,OAAO;AACL,YAAI,WAAW,IAAI,SAAQ;AAG3B,YAAI,KAAK,QAAQ,QAAQ;AACvB,cAAI,mBAAmB,KAAK,QAAQ;AACpC,cAAI,OAAO,qBAAqB;AAC9B,+BAAmB,iBAAiB,KAClC,MACAA,QACA,KACAA,OAAM,CAAC,EAAE,OAAO,UAAU,KAAK,UAAUA,OAAM,CAAC,GAAG,GAAG,IAAI,IAAI;AAIlE,mBAASgB,QAAO,kBAAkB;AAChC,gBAAI,QAAQ,iBAAiBA,IAAG;AAChC,gBAAI,MAAM,QAAQ,KAAK;AAIrB,uBAASjB,KAAI,GAAGA,KAAI,MAAM,QAAQA;AAChC,yBAAS,OAAOiB,MAAK,MAAMjB,EAAC,CAAA;;AAG9B,uBAAS,OAAOiB,MAAK,KAAK;UAE9B;QACF;AAGA,iBAAS,QAAQhB;AACf,eAAK,KAAK,WAAW,MAAM,KAAK,QAAQ;AAE1C,YAAI,KAAK,QAAQ;AACf,eAAK,KAAK,mBAAmBA,QAAO,KAAK,QAAQ;AAGnD,aAAK,oBAAoB,QAAQ;AAIjC,iBAASD,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AAC1C,cAAI,YAAY,WAAWA,EAAC;AAC5B,mBAAS,OAAO,UAAU,MAAM,UAAU,MAAM,UAAU,QAAQ;QACpE;AAEA,aAAK,cAAc,KAAK,UAAUC,MAAK;MACzC;IACF;;IAGA,gBAAgBA,QAAO,MAAM;AAC3B,UAAI,mBAAmB,CAAC;AAExB,UAAI,cAAc;AAClB,eAASD,KAAI,GAAGA,KAAIC,OAAM,QAAQD;AAChC,aAAK,QAAQ,cAAc,KAAK,MAAMC,OAAMD,EAAC,GAAA,CAAI,oBAAoB;AACnE,2BAAiBA,EAAC,IAAI;AACtB,cAAE,EAAI,gBAAgBC,OAAM;AAC1B,iBAAK,gBAAgB;QAEzB,CAAC;IAEL;;IAGA,oBAAoB,UAAU;AAE5B,UAAI,KAAK,QAAQ,YAAY;AAC3B,iBAAS,SAAS,KAAK,QAAQ,iBAC7B,iCAAiC,GAChC;AACD,cAAI,YAAY,MAAM,aAAa,MAAM;AACzC,cAAI,YAAY,MAAM,aAAa,MAAM;AACzC,cAAI;AAAW,wBAAY,UAAU,YAAW;AAGhD,cAAI,OAAO,cAAc,eAAe,cAAc;AAAM;AAE5D,cAAI,MAAM,YAAY,YAAY,MAAM,aAAa,UAAU,GAAG;AAEhE,qBAASY,WAAU,MAAM;AACvB,kBAAIA,QAAO;AACT,yBAAS,OAAO,WAAWA,QAAO,KAAK;UAG7C,WAAS,CACN,aACA,cAAc,cAAc,cAAc,WAC3C,MAAM;AAEN,qBAAS,OAAO,WAAW,MAAM,KAAK;QAE1C;IAEJ;;;IAIA,2BAA2BZ,QAAO,KAAKG,IAAG;AACxC,UAAE,CAAGH,OAAM,CAAC,EAAE,OAAO;AAEnB,iBAAS,QAAQA,QAAO;AACtB,cACE,KAAK,OAAO,SACZ,KAAK,OAAO,aACZ,KAAK,OAAO,aAAa,KAAK,OAAO;AAKrC;AAGF,cAAIG,IAAG;AACL,iBAAK,OAAO,WAAY,MAAMA,GAAE,SAAUA,GAAE;AAC5C,iBAAK,OAAO,QAAQA,GAAE;AACtB,iBAAK,OAAO,YAAYA,GAAE;UAC5B,OAAO;AAEL,iBAAK,OAAO,WAAW;AACvB,iBAAK,OAAO,YAAY,KAAK,OAAO;UACtC;AAEA,eAAK,KACH,kBACA,MACA,KAAK,OAAO,UACZ,KAAK,OAAO,SAAS;QAEzB;WACK;AAKL,YAAI,OAAOH,OAAM,CAAC;AAIlB,YAAI,QAAQ,KAAK,UAAU,MAAM,GAAG;AAEpC,YAAIG,IAAG;AACL,gBAAM,WAAY,MAAMA,GAAE,SAAUA,GAAE;AACtC,gBAAM,QAAQA,GAAE;AAChB,gBAAM,YAAYA,GAAE;QACtB,OAAO;AAEL,gBAAM,WAAW;AACjB,gBAAM,YAAY,MAAM;QAC1B;AAGA,aAAK,OAAO,WAAW;AACvB,aAAK,OAAO,QAAQ;AACpB,aAAK,OAAO,YAAY;AACxB,iBAASJ,KAAI,GAAGA,KAAI,KAAK,OAAO,iBAAiBA;AAC/C,cACE,KAAK,OAAO,OAAOA,EAAC,KACpB,OAAO,KAAK,OAAO,OAAOA,EAAC,EAAE,aAAa,aAC1C;AACA,iBAAK,OAAO,YAAY,KAAK,OAAO,OAAOA,EAAC,EAAE;AAC9C,iBAAK,OAAO,SAAS,KAAK,OAAO,OAAOA,EAAC,EAAE;AAC3C,iBAAK,OAAO,aAAa,KAAK,OAAO,OAAOA,EAAC,EAAE;UACjD;AAIF,aAAK,OAAO,WAAW,KAAK,OAAO,WAAW,KAAK,OAAO;AAE1D,aAAK,KACH,kBACA,MACA,KAAK,OAAO,UACZ,KAAK,OAAO,SAAS;MAEzB;IACF;IAEA,mBAAmBC,QAAO,KAAKG,IAAG;AAChC,UAAIY;AAEJ,UAAIf,OAAM,CAAC,EAAE,WAAW,yCAAS;AAC/B;AAGF,UAAI,IAAI,eAAe;AACrB;AAGF,UAAI,IAAI,iBAAiB,iBAAiB,IAAI,iBAAiB,QAAQ;AACrE,QAAAe,YAAW,IAAI;AAEf,YACE,IAAI,kBAAkB,cAAc,KAAA,CACnC,IAAI,kBAAkB,cAAc,EAAE,QAAQ,kBAAkB;AAEjE,cAAI;AACF,YAAAA,YAAW,KAAK,MAAMA,SAAQ;UAChC,SAAST,QAAP;AACA,YAAAH,KAAIG;AACJ,YAAAS,YAAW;UACb;MAEJ;AAEA,WAAK,2BAA2Bf,QAAO,GAAG;AAE1C,UAAE,EAAI,OAAO,IAAI,UAAU,IAAI,SAAS;AACtC,aAAK,mBAAmBA,QAAO,KAAKe,SAAQ;eAExCf,OAAM,CAAC,EAAE,OAAO;AAClB,QAAAA,OAAM,CAAC,EAAE,OAAO,oBACd,KAAK,UAAUA,OAAM,CAAC,GAAG,GAAG,GAC5Be,SAAQ;;AAGV,aAAK,UAAUf,QAAOe,WAAUZ,EAAC;IAGvC;IAEA,mBAAmBH,QAAO,KAAKe,WAAU;AACvC,UAAIf,OAAM,CAAC,EAAE,WAAW,yCAAS;AAC/B;AAGF,UAAIA,OAAM,CAAC,EAAE,OAAO,WAAW,KAAK,QAAQ,aAAa;AACvD,YAAI,QAAQ,KAAK,UAAUA,OAAM,CAAC,GAAG,GAAG;AACxC,YAAI,MAAM,YAAY,KAAK,QAAQ,kBAAkB;AACnD,eAAK,YAAYA,QAAO;YAAC,MAAM;UAAS,CAAC;AACzC;QACF;AACE,kBAAQ,KAAK,0CAA0C;MAE3D;AAEA,WAAK,iBACHA,QACAe,aACE,KAAK,QAAQ,kBAAkB,QAAQ,kBAAkB,IAAI,MAAM,GACrE,GAAG;IAEP;IAEA,cAAc,KAAK,UAAUf,QAAO;AAClC,UAAI,IAAI,cAAc,GAAG;AACvB,gBAAQ,KACN,+EAA+E;AAEjF;MACF;AACA,UAAI,KAAK,QAAQ,YAAU;AACzB,YAAIA,OAAM,CAAC,EAAE,OAAO,SAAS;AAC3B,gBAAM,QAAQ,KAAK,UAAUA,OAAM,CAAC,GAAG,GAAG;AAC1C,cAAI,KAAK,MAAM,UAAU,IAAI;QAC/B;AACE,cAAI,KAAKA,OAAM,CAAC,CAAA;;AAGlB,YAAI,KAAK,QAAQ;IAErB;;;IAIA,UAAUA,QAAO,cAAcG,IAAG;AAChC,eAAS,QAAQH,QAAO;AACtB,aAAK,SAAS,yCAAS;AACvB,aAAK,KAAK,WAAW,MAAM,cAAcG,EAAC;AAC1C,aAAK,KAAK,YAAY,IAAI;MAC5B;AACA,UAAI,KAAK,QAAQ,gBAAgB;AAC/B,aAAK,KAAK,mBAAmBH,QAAO,cAAcG,EAAC;AACnD,aAAK,KAAK,oBAAoBH,MAAK;MACrC;AAEA,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK,aAAY;IAE5B;;;IAIA,iBAAiBA,QAAOI,UAAS,KAAK;AACpC,eAAS,QAAQJ,QAAO;AACtB,aAAK,SAAS,yCAAS;AACvB,aAAK,KAAK,SAAS,MAAMI,UAAS,GAAG;AACrC,aAAK,KAAK,YAAY,IAAI;MAC5B;AACA,UAAI,KAAK,QAAQ,gBAAgB;AAC/B,aAAK,KAAK,iBAAiBJ,QAAOI,UAAS,GAAG;AAC9C,aAAK,KAAK,oBAAoBJ,MAAK;MACrC;AAEA,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK,aAAY;IAE5B;WAEO,SAAS;AACd,aAAO,uCAAuC,QAAO,SAEnD,SAAUiB,IAAG;AACX,YAAIC,KAAK,KAAK,OAAM,IAAK,KAAM,GAC7BC,KAAIF,OAAM,MAAMC,KAAKA,KAAI,IAAO;AAClC,eAAOC,GAAE,SAAS,EAAE;MACtB,CAAC;IAEL;gBA7oDY,IAAIC,UAAS;AACvB,YAAK;AACL,UAAI,UAAUC;AACd,WAAK,UAAU;AAEf,WAAK,oBAAoB,CAAC;AAC1B,WAAK,YAAY,CAAC;AAClB,WAAK,QAAQ,CAAC;AAEd,UAAI,OAAO,KAAK,YAAY;AAC1B,aAAK,UAAU,SAAS,cAAc,KAAK,OAAO;AAIpD,UAAE,CAAG,KAAK,WAAW,KAAK,QAAQ,YAAY;AAC5C,cAAM,IAAI,MAAM,2BAA2B;AAG7C,UAAI,KAAK,QAAQ;AACf,cAAM,IAAI,MAAM,4BAA4B;AAI9C,+CAAS,UAAU,KAAK,IAAI;AAG5B,WAAK,QAAQ,WAAW;AAExB,UAAI,kBACDA,QAAO,yCAAS,kBAAkB,KAAK,OAAO,MAAM,OAAOA,QAAO,CAAC;AAEtE,WAAK,UAAU,aACb,MACA,CAAC,GACD,0CACA,gBACAD,YAAW,OAAOA,WAAU,CAAC,CAAC;AAGhC,WAAK,QAAQ,kBAAkB,KAAK,QAAQ,gBAAgB,QAAO,QAEjE,EAAE;AAIJ,UAAI,KAAK,QAAQ,iBAAa,CAAK,yCAAS,mBAAkB;AAC5D,eAAO,KAAK,QAAQ,SAAS,KAAK,IAAI;AAIxC,UAAI,KAAK,QAAQ,OAAO;AACtB,aAAK,QAAQ,MAAM,KAAK,QAAQ,aAAa,QAAQ;AAGvD,UAAE,CAAG,KAAK,QAAQ;AAChB,cAAM,IAAI,MAAM,kBAAkB;AAGpC,UAAI,KAAK,QAAQ,iBAAiB,KAAK,QAAQ;AAC7C,cAAM,IAAI,MACR,oGAAoG;AAIxG,UAAI,KAAK,QAAQ,kBAAkB,KAAK,QAAQ;AAC9C,cAAM,IAAI,MAAM,mDAAmD;AAGrE,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ;AAC1C,cAAM,IAAI,MAAM,qDAAqD;AAIvE,UAAI,KAAK,QAAQ,mBAAmB;AAClC,aAAK,QAAQ,gBAAgB,KAAK,QAAQ;AAC1C,eAAO,KAAK,QAAQ;MACtB;AAGA,UAAI,KAAK,QAAQ,kBAAkB;AACjC,aAAK,QAAQ,aAAU,CAAI,SACzB,KAAK,QAAQ,eAAe,KAAK,MAAM,KAAK,MAAM,IAAI;AAG1D,UAAI,OAAO,KAAK,QAAQ,WAAW;AACjC,aAAK,QAAQ,SAAS,KAAK,QAAQ,OAAO,YAAW;AAGvD,WAAK,WAAW,KAAK,oBAAmB,MAAO,SAAS;AAEtD,iBAAS,WAAW,YAAY,QAAQ;AAI1C,UAAI,KAAK,QAAQ,sBAAsB,OAAK;AAC1C,YAAI,KAAK,QAAQ;AACf,eAAK,oBAAoB,yCAAS,WAChC,KAAK,QAAQ,mBACb,mBAAmB;;AAGrB,eAAK,oBAAoB,KAAK;;AAIlC,UAAI,KAAK,QAAQ,WAAS;AACxB,YAAI,KAAK,QAAQ,cAAc;AAC7B,eAAK,oBAAoB;YAAC,KAAK;UAAO;;AAEtC,eAAK,oBAAoB,yCAAS,YAChC,KAAK,QAAQ,WACb,WAAW;;AAKjB,WAAK,KAAI;IACX;;AA0hDF,2CAAS,UAAS;AAYlB,2CAAS,UAAU,CAAC;AAGpB,2CAAS,oBAAoB,SAAU,SAAS;AAE9C,QAAI,QAAQ,aAAa,IAAI;AAC3B,aAAO,yCAAS,QAAQ,+BAAS,QAAQ,aAAa,IAAI,CAAA,CAAA;;AAE1D,aAAO;EAEX;AAGA,2CAAS,YAAY,CAAC;AAGtB,2CAAS,aAAa,SAAU,SAAS;AACvC,QAAI,OAAO,YAAY;AACrB,gBAAU,SAAS,cAAc,OAAO;AAE1C,SAAK,WAAW,OAAO,QAAQ,WAAW,WAAc;AACtD,YAAM,IAAI,MACR,gNAAgN;AAGpN,WAAO,QAAQ;EACjB;AAGA,2CAAS,WAAW,WAAY;AAC9B,QAAI;AACJ,QAAI,SAAS;AACX,kBAAY,SAAS,iBAAiB,WAAW;SAC5C;AACL,kBAAY,CAAC;AAEb,UAAI,gBAAa,CAAIZ,eAAQ,MACpB;AACL,YAAI,SAAS,CAAC;AACd,iBAAS,MAAMA;AACb,cAAE,qBAAuB,KAAK,GAAG,SAAS;AACxC,mBAAO,KAAK,UAAU,KAAK,EAAE,CAAA;;AAE7B,mBAAO,KAAK,MAAS;AAGzB,eAAO;MACT,GAAC;AACH,oBAAc,SAAS,qBAAqB,KAAK,CAAA;AACjD,oBAAc,SAAS,qBAAqB,MAAM,CAAA;IACpD;AAEA,YAAM,MAAQ;AACZ,UAAI,SAAS,CAAC;AACd,eAAS,YAAY;AAEnB,YAAI,yCAAS,kBAAkB,QAAQ,MAAM;AAC3C,iBAAO,KAAK,IAAI,yCAAS,QAAQ,CAAA;;AAEjC,iBAAO,KAAK,MAAS;AAGzB,aAAO;IACT,GAAC;EACH;AAYA,2CAAS,kBAAkB;;;EAG3B;AAGA,2CAAS,qBAAqB,WAAY;AACxC,QAAI,iBAAiB;AAErB,QACE,OAAO,QACP,OAAO,cACP,OAAO,YACP,OAAO,QACP,OAAO,YACP,SAAS,eAAa;AAEtB,UAAE,EAAI,eAAe,SAAS,cAAc,GAAG;AAC7C,yBAAiB;WACZ;AACL,YAAI,yCAAS,wBAAwB;AAGnC,mDAAS,kBAAkB,yCAAS;AAGtC,iBAAS,SAAS,yCAAS;AACzB,cAAI,MAAM,KAAK,UAAU,SAAS,GAAG;AACnC,6BAAiB;AACjB;UACF;MAEJ;;AAEA,uBAAiB;AAGnB,WAAO;EACT;AAEA,2CAAS,gBAAgB,SAAU,SAAS;AAG1C,QAAI,aAAa,KAAK,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAA;AAG1C,QAAI,aAAa,QAAQ,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAGjE,QAAI,KAAK,IAAI,YAAY,WAAW,MAAM;AAC1C,QAAI,KAAK,IAAI,WAAW,EAAE;AAC1B,aACMT,KAAI,GAAGe,OAAM,WAAW,QAAQ,MAAM,KAAKA,MAC/C,MAAMf,MAAKe,OAAMf,MAAKe,MACtB,MAAMf,OAAMA;AAEZ,SAAGA,EAAC,IAAI,WAAW,WAAWA,EAAC;AAIjC,WAAO,IAAI,KAAK;MAAC;IAAE,GAAG;MAAE,MAAM;IAAW,CAAC;EAC5C;AAGA,MAAM,gCAAO,CAAI,MAAM,iBACrB,KAAK;IAAM,CAAE,SAAS,SAAS;IAAc;IAAG,CAAE,SAAS;;AAG7D,MAAM,iCAAQ,CAAI,QAChB,IAAI;IAAO;IAAA,CAAgBuB,WAAUA,OAAM,OAAO,CAAC,EAAE,YAAW;;AAGlE,2CAAS,gBAAgB,SAAU,QAAQ;AACzC,QAAI,MAAM,SAAS,cAAc,KAAK;AACtC,QAAI,YAAY;AAChB,WAAO,IAAI,WAAW,CAAC;EACzB;AAGA,2CAAS,gBAAgB,SAAU,SAAS,WAAW;AACrD,QAAI,YAAY;AACd,aAAO;WAED,UAAU,QAAQ,YAAa;AACrC,UAAI,YAAY;AACd,eAAO;IAEX;AACA,WAAO;EACT;AAEA,2CAAS,aAAa,SAAU,IAAIC,OAAM;AACxC,QAAI;AACJ,QAAI,OAAO,OAAO;AAChB,gBAAU,SAAS,cAAc,EAAE;aAC1B,GAAG,YAAY;AACxB,gBAAU;AAEZ,QAAI,WAAW;AACb,YAAM,IAAI,MAAK,aACAA,iFAA+E;AAGhG,WAAO;EACT;AAEA,2CAAS,cAAc,SAAU,KAAKA,OAAM;AAC1C,QAAI,IAAIf;AACR,QAAI,eAAe,OAAO;AACxB,MAAAA,YAAW,CAAC;AACZ,UAAI;AACF,aAAK,MAAM;AACT,UAAAA,UAAS,KAAK,KAAK,WAAW,IAAIe,KAAI,CAAA;MAE1C,SAASpB,IAAP;AACA,QAAAK,YAAW;MACb;IACF,WAAW,OAAO,QAAQ,UAAU;AAClC,MAAAA,YAAW,CAAC;AACZ,WAAK,MAAM,SAAS,iBAAiB,GAAG;AACtC,QAAAA,UAAS,KAAK,EAAE;IAEpB,WAAW,IAAI,YAAY;AACzB,MAAAA,YAAW;QAAC;MAAG;AAGjB,QAAIA,aAAY,QAAI,CAAKA,UAAS;AAChC,YAAM,IAAI,MAAK,aACAe,kGAAgG;AAIjH,WAAOf;EACT;AAMA,2CAAS,UAAU,SAAU,UAAU,UAAUgB,WAAU;AACzD,QAAI,OAAO,QAAQ,QAAQ;AACzB,aAAO,SAAQ;aACNA,aAAY;AACrB,aAAOA,UAAQ;EAEnB;AAKA,2CAAS,cAAc,SAAU,MAAM,eAAe;AACpD,QAAE,CAAG;AACH,aAAO;AAET,oBAAgB,cAAc,MAAM,GAAG;AAEvC,QAAI,WAAW,KAAK;AACpB,QAAI,eAAe,SAAS,QAAO,SAAU,EAAE;AAE/C,aAAS,aAAa,eAAe;AACnC,kBAAY,UAAU,KAAI;AAC1B,UAAI,UAAU,OAAO,CAAC,MAAM,KAAK;AAC/B,YACE,KAAK,KACF,YAAW,EACX,QACC,UAAU,YAAW,GACrB,KAAK,KAAK,SAAS,UAAU,MAAM,MAC/B;AAER,iBAAO;MAEX,WAAS,QAAU,KAAK,SAAS,GAAG;AAElC,YAAI,iBAAiB,UAAU,QAAO,SAAU,EAAE;AAChD,iBAAO;MAEX,OAAO;AACL,YAAI,aAAa;AACf,iBAAO;MAEX;IACF;AAEA,WAAO;EACT;AAGA,MAAI,OAAO,WAAW,eAAe,WAAW;AAC9C,WAAO,GAAG,WAAW,SAAUJ,UAAS;AACtC,aAAO,KAAK,KAAK,WAAY;AAC3B,eAAO,IAAI,yCAAS,MAAMA,QAAO;MACnC,CAAC;IACH;AAIF,2CAAS,QAAQ;AAEjB,2CAAS,SAAS;AAGlB,2CAAS,WAAW,yCAAS;AAE7B,2CAAS,YAAY;AACrB,2CAAS,aAAa,yCAAS;AAE/B,2CAAS,WAAW;AACpB,2CAAS,QAAQ;AACjB,2CAAS,UAAU;AAanB,MAAI,6CAAuB,SAAU,KAAK;AACxC,QAAI,KAAK,IAAI;AACb,QAAI,KAAK,IAAI;AACb,QAAI,SAAS,SAAS,cAAc,QAAQ;AAC5C,WAAO,QAAQ;AACf,WAAO,SAAS;AAChB,QAAI,MAAM,OAAO,WAAW,IAAI;AAChC,QAAI,UAAU,KAAK,GAAG,CAAC;AACvB,QAAI,EAAC,MAACK,MAAK,IAAI,IAAI,aAAa,GAAG,GAAG,GAAG,EAAE;AAG3C,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,KAAK;WACF,KAAK,IAAI;AACd,UAAIC,SAAQD,OAAM,KAAK,KAAK,IAAI,CAAC;AAEjC,UAAIC,WAAU;AACZ,aAAK;;AAEL,aAAK;AAGP,WAAM,KAAK,MAAO;IACpB;AACA,QAAI,QAAQ,KAAK;AAEjB,QAAI,UAAU;AACZ,aAAO;;AAEP,aAAO;EAEX;AAIA,MAAI,wCAAkB,SAAU,KAAK,KAAK,IAAI,IAAI,IAAI,IAAIC,KAAIC,KAAI,IAAI,IAAI;AACxE,QAAI,kBAAkB,2CAAqB,GAAG;AAC9C,WAAO,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,IAAID,KAAIC,KAAI,IAAI,KAAK,eAAe;EAC5E;MAKM,0CAAW;WACR,YAAY;AACjB,WAAK,UACH;IACJ;WAEO,SAAS,OAAO;AACrB,UAAI,SAAS;AACb,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI7B,KAAI;aACD,MAAM;AACX,eAAO,MAAMA,IAAC;AACd,eAAO,MAAMA,IAAC;AACd,eAAO,MAAMA,IAAC;AACd,eAAO,QAAQ;AACf,gBAAS,OAAO,MAAM,IAAM,QAAQ;AACpC,gBAAS,OAAO,OAAO,IAAM,QAAQ;AACrC,eAAO,OAAO;AACd,YAAI,MAAM,IAAI;AACZ,iBAAO,OAAO;iBACL,MAAM,IAAI;AACnB,iBAAO;AAET,iBACE,SACA,KAAK,QAAQ,OAAO,IAAI,IACxB,KAAK,QAAQ,OAAO,IAAI,IACxB,KAAK,QAAQ,OAAO,IAAI,IACxB,KAAK,QAAQ,OAAO,IAAI;AAC1B,eAAO,OAAO,OAAO;AACrB,eAAO,OAAO,OAAO,OAAO;AAC5B,YAAE,EAAIA,KAAI,MAAM;AACd;MAEJ;AACA,aAAO;IACT;WAEO,QAAQ,gBAAgB,mBAAmB;AAChD,UAAE,CAAG,eAAe,MAAM,yBAAyB;AACjD,eAAO;AAET,UAAI,WAAW,KAAK,SAClB,eAAe,QAAQ,2BAA2B,EAAE,CAAA;AAEtD,UAAI,WAAW,KAAK,eAAe,QAAQ;AAC3C,UAAI,QAAQ,KAAK,iBAAiB,mBAAmB,QAAQ;AAC7D,aAAM,0BAA2B,KAAK,SAAS,KAAK;IACtD;WAEO,iBAAiB,mBAAmB,UAAU;AACnD,UAAI,YAAY,KAAK,aAAa,QAAQ;AAC1C,UAAI,gBAAgB,KAAK,WAAW,mBAAmB,SAAS;AAChE,UAAI,UAAU,IAAI,WAAW,aAAa;AAC1C,aAAO;IACT;WAEO,aAAa,UAAU;AAC5B,UAAI,MAAM;AACV,UAAIW,KAAI;aACDA,KAAI,SAAS,QAAQ;AAC1B,cAAM,SAASA,EAAC;AAChB,YAAK,IAAI,CAAC,MAAM,MAAQ,IAAI,CAAC,MAAM;AACjC,iBAAO;AAET,QAAAA;MACF;AACA,aAAO,CAAC;IACV;WAEO,WAAW,mBAAmB,WAAW;AAC9C,UAAI,YAAY,kBAAkB,QAAQ,2BAA2B,EAAE;AACvE,UAAI,MAAM,KAAK,SAAS,SAAS;AACjC,UAAI,gBAAgB,IAAI,QAAQ,KAAK,CAAC;AACtC,UAAI,MAAM,IAAI,MAAM,GAAG,aAAa;AACpC,UAAI,MAAM,IAAI,MAAM,aAAa;AACjC,UAAImB,SAAQ;AACZ,MAAAA,SAAQA,OAAM,OAAO,SAAS;AAC9B,MAAAA,SAAQA,OAAM,OAAO,GAAG;AACxB,aAAOA;IACT;WAEO,eAAe,eAAe;AACnC,UAAI,OAAO;AACX,UAAI,WAAW,CAAC;aACT,MAAM;AACX,YAAIC;AACJ,YAAK,cAAc,IAAI,MAAM,MAAQ,cAAc,OAAO,CAAC,MAAM;AAC/D;AAEF,YAAK,cAAc,IAAI,MAAM,MAAQ,cAAc,OAAO,CAAC,MAAM;AAC/D,kBAAQ;aACH;AACL,UAAAA,UAAS,cAAc,OAAO,CAAC,IAAI,MAAM,cAAc,OAAO,CAAC;AAC/D,cAAI,WAAW,OAAOA,UAAS;AAC/B,cAAI,MAAM,cAAc,MAAM,MAAM,QAAQ;AAC5C,mBAAS,KAAK,GAAG;AACjB,iBAAO;QACT;AACA,YAAI,OAAO,cAAc;AACvB;MAEJ;AACA,aAAO;IACT;WAEO,SAAS,OAAO;AACrB,UAAI,SAAS;AACb,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI/B,KAAI;AACR,UAAI,MAAM,CAAC;AAEX,UAAI,aAAU;AACd,UAAI,WAAW,KAAK,KAAK;AACvB,gBAAQ,KACN,kJAAkJ;AAGtJ,cAAQ,MAAM,QAAO,uBAAwB,EAAE;aACxC,MAAM;AACX,eAAO,KAAK,QAAQ,QAAQ,MAAM,OAAOA,IAAC,CAAA;AAC1C,eAAO,KAAK,QAAQ,QAAQ,MAAM,OAAOA,IAAC,CAAA;AAC1C,eAAO,KAAK,QAAQ,QAAQ,MAAM,OAAOA,IAAC,CAAA;AAC1C,eAAO,KAAK,QAAQ,QAAQ,MAAM,OAAOA,IAAC,CAAA;AAC1C,eAAQ,QAAQ,IAAM,QAAQ;AAC9B,gBAAS,OAAO,OAAO,IAAM,QAAQ;AACrC,gBAAS,OAAO,MAAM,IAAK;AAC3B,YAAI,KAAK,IAAI;AACb,YAAI,SAAS;AACX,cAAI,KAAK,IAAI;AAEf,YAAI,SAAS;AACX,cAAI,KAAK,IAAI;AAEf,eAAO,OAAO,OAAO;AACrB,eAAO,OAAO,OAAO,OAAO;AAC5B,YAAE,EAAIA,KAAI,MAAM;AACd;MAEJ;AACA,aAAO;IACT;;AAEF,oCAAY,UAAS;WA6DZ,gCAAU,OAAOgC,YAAW;AACnC,WAAO,OAAO,UAAU,eAAe,UAAU,OAC7CA,WAAU,KAAK,IACf;EACN;WACS,sCAAgB,KAAK,YAAYA,YAAW;AACnD,QACE,OAAO,QAAQ,eACf,QAAQ,QACR,OAAO,IAAI,UAAU,MAAM;AAE3B,aAAOA,WAAU,KAAK,UAAU;;AAEhC,aAAO;EAEX;;;AFzwEA,MAAO,+BAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AAEjB,WAAK,mBAAmB,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe;AAC5D,WAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY;AAElD,YAAM,WAAW,IAAI,yCAAS,KAAK,SAAS;AAAA,QAC1C,KAAK,KAAK;AAAA,QAAW,gBAAgB;AAAA,QACrC,WAAW;AAAA,QAAO,eAAe,KAAK;AAAA,QACtC,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,MACnB,CAAC;AAED,eAAS,GAAG,aAAa,CAAC,SAAS;AACjC,aAAK,aAAa;AAAA,MACpB,CAAC;AAED,eAAS,GAAG,SAAS,CAAC,MAAMC,aAAY;AACtC,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EACF;;;AMzBA;AAAA;AAAA;AAAA;AAEA,MAAO,6BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,OAAO;AACZ,UAAIC,QAAO;AACX,UAAI,QAAQ,MAAM;AAClB,UAAI,MAAM,SAAS,MAAM,MAAM,CAAC,GAAG;AACjC,QAAAA,MAAK,YAAY,KAAK;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,YAAY,OAAO;AACjB,UAAI,SAAS,IAAI,WAAW;AAC5B,UAAI,OAAO,MAAM,MAAM,CAAC;AAExB,aAAO,SAAS,SAAUC,IAAG;AAC3B,YAAIC,QAAO,EAAE,KAAK,EAAE,KAAK;AACzB,YAAI,KAAK,KAAK,WAAW,OAAO,GAAG;AAEjC,cAAI,EAAEA,KAAI,EAAE,GAAG,OAAO,GAAG;AACvB,cAAEA,KAAI,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAAA,UACrC,OAAO;AACL,cAAEC,KAAI,EAAE,OAAO;AACf,gBAAI,eAAe,SAAS,cAAc,OAAO;AACjD,cAAE,YAAY,EAAE,KAAK;AAAA,cACnB,KAAKD,GAAE,OAAO;AAAA,cACd,UAAU;AAAA,cACV,OAAO;AAAA,cACP,MAAM;AAAA,YACR,CAAC;AACD,cAAE,YAAY,EAAE,YAAY,KAAK;AAAA,UACnC;AAAA,QACF,OAAO;AAEL,cAAI,EAAEC,KAAI,EAAE,GAAG,KAAK,GAAG;AACrB,cAAEA,KAAI,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAAA,UACrC,OAAO;AACL,cAAEC,KAAI,EAAE,OAAO;AACf,gBAAI,eAAe,SAAS,cAAc,KAAK;AAC/C,cAAE,YAAY,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAC3C,cAAE,YAAY,EAAE,YAAY,KAAK;AAAA,UACnC;AAAA,QACF;AAAA,MACF;AAEA,aAAO,cAAc,IAAI;AAAA,IAC3B;AAAA,EACF;;;AC/CA;AAAA;AAAA;AAAA;AAEA,MAAO,8BAAP,cAA6B,WAAW;AAAA,IAItC,SAAS,OAAO;AACd,UAAI,QAAQ,EAAE,MAAM,aAAa,EAAE,KAAK,OAAO;AAC/C,QAAE,KAAK,WAAW,EAAE,IAAI,KAAK;AAC7B,QAAE,KAAK,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO;AAAA,IAChC;AAAA,EACF;AAPE,gBAFK,6BAEE,WAAU,CAAC,OAAO;;;ACJ3B;AAAA;AAAA;AAAA;AACA,MAAAE,wBAA6B;AAI7B,2CAAS,eAAe;AASxB,MAAO,8BAAP,cAA6B,sBAAsB;AAAA,IAIjD,UAAU;AACN,YAAM;AACN,WAAK,WAAW,eAAe,IAAI;AACnC,WAAK,cAAc;AACnB,WAAK,WAAW;AAAA,IAClB;AAAA;AAAA,IAGA,gBAAgB;AACd,WAAK,YAAY,WAAW;AAC5B,WAAK,YAAY,MAAM,UAAU;AAAA,IACnC;AAAA,IAEA,aAAa;AACX,WAAK,SAAS,GAAG,aAAa,CAAC,SAAS;AACtC,mBAAW,MAAM;AACf,eAAK,YAAY,6BAA6B,MAAM,IAAI,EAAE,MAAM;AAChE,gBAAM,eAAe,IAAI,YAAY,sBAAsB;AAAA,YACzD,QAAQ;AAAA,cACN;AAAA,YACF;AAAA,UACF,CAAC;AACD,eAAK,QAAQ,cAAc,YAAY;AAAA,QACzC,GAAG,GAAG;AAAA,MACR,CAAC;AAED,WAAK,SAAS,GAAG,eAAe,CAAC,SAAS;AACxC,cAAM,cAAc,IAAI,YAAY,wBAAwB;AAAA,UAC1D,QAAQ;AAAA,YACN;AAAA,UACF;AAAA,QACF,CAAC;AACD,aAAK,cAAc,cAAc,KAAK,WAAW,WAAW;AAC5D,aAAK,QAAQ,cAAc,WAAW;AAAA,MACxC,CAAC;AAED,WAAK,SAAS,GAAG,YAAY,CAAC,SAAS;AACrC,aAAK,cAAc,KAAK,WAAW,IAAI,MAAM;AAAA,MAC/C,CAAC;AAED,WAAK,SAAS,GAAG,cAAc,CAAC,SAAS;AACvC,YAAG,KAAK,cAAc;AACpB,eAAK,aAAa,WAAW;AAAA,QAC/B;AAAA,MACF,CAAC;AAED,WAAK,SAAS,GAAG,iBAAiB,CAAC,SAAS;AAC1C,YAAG,KAAK,cAAc;AACpB,eAAK,aAAa,WAAW;AAAA,QAC/B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEF,IAAI,UAAU;AAAE,aAAO,EAAE,gBAAgB,aAAa,YAAY,EAAE;AAAA,IAAE;AAAA;AAAA,IAGtE,IAAI,MAAM;AACR,YAAM,OAAO,GAAG,OAAO,SAAS;AAEhC,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,WAAW;AAAE,aAAO,KAAK,KAAK,IAAI,UAAU,KAAK;AAAA,IAAE;AAAA,IAEvD,IAAI,cAAc;AAAE,aAAO,KAAK,KAAK,IAAI,aAAa,KAAK;AAAA,IAAI;AAAA,IAE/D,IAAI,gBAAgB;AAAE,aAAO,KAAK,KAAK,IAAI,eAAe;AAAA,IAAE;AAAA,IAE5D,IAAI,iBAAiB;AAAE,aAAO,KAAK,KAAK,IAAI,gBAAgB,KAAK;AAAA,IAAK;AAAA,IAEtE,IAAI,OAAO;AAAE,aAAO,KAAK,QAAQ,QAAQ,MAAM;AAAA,IAAE;AAAA,IAEjD,IAAI,eAAe;AAAE,aAAO,YAAY,KAAK,MAAM,yCAAyC;AAAA,IAAE;AAAA,EAEhG;AA5EE,gBAFK,6BAEE,WAAU,CAAE,OAAQ;AA8E7B,MAAM,yBAAN,MAA6B;AAAA,IAC3B,YAAY,QAAQ,MAAM;AACxB,WAAK,eAAe,mBAAmB,MAAM,OAAO,KAAK,IAAI;AAC7D,WAAK,SAAS;AACd,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,QAAQ;AACN,WAAK,KAAK,aAAa;AACvB,WAAK,cAAc,KAAK,kBAAkB;AAC1C,WAAK,aAAa,OAAO,CAACC,QAAO,eAAe;AAC9C,YAAIA,QAAO;AACT,wBAAc,KAAK,WAAW;AAC9B,eAAK,kBAAkBA,MAAK;AAAA,QAC9B,OAAO;AACL,eAAK,YAAY,QAAQ,WAAW;AACpC,eAAK,oBAAoB;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,oBAAoB;AAClB,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,YAAM,OAAO;AACb,YAAM,OAAO,KAAK,OAAO,YAAY;AACrC,kBAAY,OAAO,KAAK,OAAO,WAAW;AAC1C,aAAO;AAAA,IACT;AAAA,IAEA,iCAAiC,KAAK;AACpC,WAAK,kBAAkB,GAAG;AAC1B,WAAK,sBAAsB;AAAA,IAC7B;AAAA,IAEA,kBAAkB,KAAK;AACrB,WAAK,MAAM;AACX,WAAK,IAAI,OAAO,iBAAiB,YAAY,WAAS,KAAK,yBAAyB,KAAK,CAAC;AAAA,IAC5F;AAAA,IAEA,yBAAyB,OAAO;AAG9B,YAAMC,YAAW,MAAM,SAAS,MAAM,QAAQ;AAC9C,kBAAY,KAAK,KAAK,iBAAiB,oCAAoC,EAAE,MAAM,QAAQ,GAAGA;AAAA,IAChG;AAAA,IAEA,wBAAwB;AACtB,WAAK,KAAK,SAAS,yCAAS;AAC5B,WAAK,OAAO,SAAS,KAAK,cAAc,KAAK,IAAI;AAAA,IACnD;AAAA,IAEA,kBAAkBD,QAAO;AACvB,WAAK,KAAK,SAAS,yCAAS;AAC5B,WAAK,OAAO,SAAS,KAAK,SAAS,KAAK,MAAMA,MAAK;AACnD,WAAK,OAAO,SAAS,KAAK,YAAY,KAAK,IAAI;AAAA,IACjD;AAAA,IAEA,sBAAsB;AACpB,WAAK,KAAK,SAAS,yCAAS;AAC5B,WAAK,OAAO,SAAS,KAAK,WAAW,KAAK,IAAI;AAC9C,WAAK,OAAO,SAAS,KAAK,YAAY,KAAK,IAAI;AAAA,IACjD;AAAA,EACF;AAGA,WAAS,6BAA6B,QAAQ,MAAM;AAClD,WAAO,IAAI,uBAAuB,QAAQ,IAAI;AAAA,EAChD;AAEA,WAAS,mBAAmB,MAAM,KAAK,YAAY;AACjD,WAAO,IAAI,mCAAa,MAAM,KAAK,UAAU;AAAA,EAC/C;AAEA,WAAS,eAAe,YAAY;AAElC,QAAI,YAAY,WAAW,KAAK,IAAI,WAAW;AAC/C,QAAI,gBAAgB,WAAW,KAAK,IAAI,eAAe;AACvD,QAAI,iBAAiB;AACrB,sBAAgB;AAChB,QAAI,kBAAkB,WAAW,KAAK,IAAI,iBAAiB;AAC3D,QAAI,mBAAmB;AACrB,wBAAkB;AACpB,UAAM,YAAY,eAAe;AACjC,QAAI,cAAc,EAAE,SAAS;AAC7B,QAAI,kBAAkB,YAAY,CAAC,EAAE,WAAW;AAChD,UAAM,WAAW,IAAI,yCAAS,WAAW,SAAS;AAAA,MAChD,KAAK,WAAW;AAAA,MAChB,SAAS,WAAW;AAAA,MACpB,UAAU,WAAW;AAAA,MACrB,aAAa,WAAW;AAAA,MACxB,eAAe,WAAW;AAAA;AAAA,MAE1B,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,gBAAgB;AAAA,MAChB;AAAA,MACA,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA;AAAA,IAEnB,CAAC;AACD,gBAAY,OAAO;AACnB,WAAO;AAAA,EACT;;;ACvMA;AAAA;AAAA;AAAA;AAEA,MAAO,gCAAP,cAA6B,sBAAsB;AAAA,IAGjD,WAAW,YAAY;AACrB,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,OAAO;AACd,YAAM,eAAe;AACrB,WAAK,UAAU,uCAAuC,KAAK,YAAY,KAAK;AAAA,IAC9E;AAAA,EACF;AAVE,gBADK,+BACE,WAAU,CAAC,OAAO;;;ACH3B;AAAA;AAAA;AAAA;AAEA,MAAO,qCAAP,cAA6B,sBAAsB;AAAA,IAEjD,OAAO,OAAO;AACZ,UAAI,UAAU,EAAE,MAAM,aAAa,GACjCE,MAAK,QAAQ,KAAK,IAAI,GACtB,OAAO,QAAQ,IAAI,GACnB,cAAc,QAAQ,KAAK,aAAa;AAE1C,WAAK,UAAU,+BAA+BA,KAAI,aAAa,IAAI,EAAE,KAAK,MAAM;AAC9E,0BAAkB;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,EAEF;;;ACfA;AAAA;AAAA;AAAA;AAEA,MAAO,0BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,OAAO;AACZ,UAAIC,QAAO;AACX,UAAI,QAAQ,MAAM;AAClB,UAAI,MAAM,SAAS,MAAM,MAAM,CAAC,GAAG;AACjC,YAAI,SAAS,IAAI,WAAW;AAE5B,eAAO,SAAS,SAAUC,IAAG;AAC3B,cAAIC,QAAO,EAAE,KAAK,EAAE,KAAK;AACzB,cAAG,EAAEA,KAAI,EAAE,GAAG,KAAK,GAAG;AACpB,cAAEA,KAAI,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAAA,UACrC,OAAO;AACL,cAAEC,KAAI,EAAE,OAAO;AACf,gBAAI,eAAe,SAAS,cAAc,KAAK;AAC/C,cAAE,YAAY,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAC3C,cAAE,YAAY,EAAE,YAAY,KAAK;AAAA,UACnC;AAAA,QACF;AAEA,eAAO,cAAc,MAAM,MAAM,CAAC,CAAC;AAAA,MACrC;AAAA,IACF;AAAA,EACF;;;ACxBA;AAAA;AAAA;AAAA;AAGA,MAAO,iCAAP,cAA6B,sBAAsB;AAAA,IAMjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AAAA,IAC1C;AAAA,IAEA,OAAO,OAAO;AACZ,UAAI,SAAS,EAAE,MAAM,aAAa,GAClC,WAAW,OAAO,KAAK,OAAO,GAC9BE,SAAQ,OAAO,KAAK,OAAO,GAC3BC,SAAQ,OAAO,KAAK,OAAO,GAC3B,QAAQ,EAAE,KAAK,OAAO,KAAK,CAAC;AAE5B,UAAG,OAAO,GAAG,QAAQ,GAAG;AACtB,gBAAQ,EAAE,KAAK,OAAO,IAAI,CAAC;AAAA,MAC7B;AAEA,UAAGA,QAAO;AACR,aAAK,MAAM,WAAW,UAAU,KAAK;AAAA,MACvC,OAAO;AACL,aAAK,MAAM,aAAa,UAAU,OAAOD,MAAK;AAAA,MAChD;AAEA,WAAK,UAAU,2BAA2B,KAAK,MAAM,UAAU,CAAC;AAAA,IAClE;AAAA,IAEA,OAAO,OAAO;AACZ,UAAI,SAAS,EAAE,MAAM,aAAa,GAClC,WAAW,OAAO,KAAK,OAAO,GAC9B,QAAQ,EAAE,KAAK,OAAO,IAAI,CAAC;AAE3B,WAAK,MAAM,aAAa,UAAU,OAAO,KAAK;AAE9C,WAAK,UAAU,2BAA2B,KAAK,MAAM,UAAU,CAAC;AAAA,IAClE;AAAA,IAEA,KAAK,OAAO;AACV,UAAI,iBAAiB,CAAC,OAAO,MAAM,GACnC,SAAS,EAAE,MAAM,aAAa,GAC9BE,QAAO,OAAO,KAAK,qBAAqB,GACxC,YAAY,OAAO,KAAK,iBAAiB;AACzC,UAAI,QAAQ,EAAE,gBAAgB,EAAE,KAAK,8BAA8B;AACnE,UAAGA,UAAS,QAAQ;AAClB,QAAAA,QAAO,eAAe,CAAC;AAAA,MACzB,OAAO;AACL,QAAAA,QAAO,eAAe,CAAC;AAAA,MACzB;AAEA,QAAE,uBAAuB,EAAE,KAAK,uBAAuB,IAAI;AAE3D,aAAO,KAAK,uBAAuBA,KAAI;AAEvC,UAAI,OAAO,KAAK,MAAM,MAAM,gBAAgBA,UAAS;AAErD,WAAK,MAAM,aAAa,QAAQ,KAAK,UAAU,IAAI,GAAG,KAAK;AAC3D,UAAG,OAAO;AACR,aAAK,MAAM,aAAa,SAAS,OAAO,KAAK;AAAA,MAC/C,OAAO;AACL,aAAK,MAAM,WAAW,OAAO;AAAA,MAC/B;AAEA,WAAK,UAAU,2BAA2B,KAAK,MAAM,UAAU,CAAC;AAAA,IAElE;AAAA,IAEA,cAAc,OAAO;AACnB,aAAO,kBAAkB,SAAS,IAAI;AAAA,IACxC;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,OAAO;AACjB,UAAI,SAAS,EAAE,MAAM,aAAa;AAClC,UAAI,YAAY,OAAO,KAAK,WAAW;AACvC,UAAG,aAAa,QAAW;AACzB,oBAAY;AAAA,MACd;AACA,UAAI,OAAO,EAAE,KAAK,OAAO,IAAI,CAAC;AAE9B,WAAK,MAAM,WAAW,QAAQ,KAAK;AACnC,UAAG,MAAM;AACP,aAAK,MAAM,aAAa,WAAW,MAAM,KAAK;AAAA,MAChD,OAAO;AACL,aAAK,MAAM,WAAW,SAAS;AAAA,MACjC;AAEA,eAAS,OAAO;AAAA,IAClB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAAO;AACZ,UAAI,SAAS,EAAE,MAAM,aAAa,GAClCA,QAAO,OAAO,KAAK,qBAAqB,GACxC,YAAY,OAAO,KAAK,iBAAiB;AAEzC,UAAGA,UAAS,QAAQ;AAClB,QAAAA,QAAO;AAAA,MACT,OAAO;AACL,QAAAA,QAAO;AAAA,MACT;AACA,QAAE,uBAAuB,EAAE,KAAK,uBAAuB,IAAI;AAC3D,aAAO,KAAK,uBAAuBA,KAAI;AAEvC,WAAK,MAAM,aAAa,QAAQ,GAAG,aAAaA,SAAQ,KAAK;AAC7D,WAAK,UAAU,8BAA8B;AAAA,IAC/C;AAAA,EAEF;AAjHE,gBAFK,gCAEE,UAAS;AAAA,IACd,OAAO;AAAA,EACT;;;ACPF;AAAA;AAAA;AAAA;;;ACAO,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,QAAQC,SAAQ;AACvC,QAAIA,YAAW,QAAQ;AAAE,MAAAA,UAAS;AAAA,IAAG;AACrC,YAAQ,QAAQ,QAAQ,MAAMA,UAAS,EAAE;AAAA,EAC7C;AACO,MAAI,MAAM,SAAU,MAAM;AAAE,WAAQ,SAAS,OAAO,IAAI;AAAA,EAAI;AAC5D,WAASC,UAASC,KAAIC,OAAM;AAC/B,QAAIC;AACJ,WAAO,WAAY;AACf,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,mBAAaA,EAAC;AACd,MAAAA,KAAI,WAAW,WAAY;AAAE,eAAOF,IAAG,MAAM,OAAO,IAAI;AAAA,MAAG,GAAGC,KAAI;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,WAAS,cAAc,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,UAAU,cAAc,OAAO,iBAAiB,GAAG,WAAW,cAAc,SAAS,cAAc,cAAc,GAAG,UAAU,cAAc,QAAQ,SAAS,GAAG,YAAY,cAAc,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,eAASC,QAAO;AACZ,iBAAS,aAAaA,MAAK,KAAKA,IAAG,CAAC;AAC5C,YAAQ,YAAY,QAAQ;AAC5B,YAAQ,YAAY,OAAO;AAC3B,YAAQ,YAAY,SAAS;AAC7B,WAAO;AAAA,EACX;AACO,WAASC,gBAAe,OAAO;AAClC,QAAI;AACA,UAAI,OAAO,MAAM,iBAAiB,YAAY;AAC1C,YAAI,OAAO,MAAM,aAAa;AAC9B,eAAO,KAAK,CAAC;AAAA,MACjB;AACA,aAAO,MAAM;AAAA,IACjB,SACOC,QAAP;AACI,aAAO,MAAM;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,SAAUC,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,QAAQC,UAAS;AAChC,aAAO,OAAO,SAAS,UAAU,QAAQ,EAAE,MAAM,QAAQA,QAAO,CAAC;AAAA,IACrE;AAAA,IACA,GAAG,SAAU,MAAM,QAAQA,UAAS;AAChC,aAAO,WAAW,QAAQ,EAAE,MAAM,QAAQA,QAAO,IAAI,GAAG,OAAO,MAAM;AAAA,IACzE;AAAA,IACA,GAAG,SAAU,MAAM,QAAQA,UAAS;AAChC,aAAO,IAAI,QAAQ,EAAE,MAAM,QAAQA,QAAO,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,MAAMD,IAAGC,UAAS;AAC3B,aAAOA,SAAQ,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,QAAQC,UAAS,OAAO,SAASC,YAAW,IAAI,KAAK,GAAG,MAAM,OAAO,OAAO,SAAS,UAAU,IAAIC,MAAK,GAAG,UAAUC,YAAWD,QAAO,SAAS,QAAQA;AACpK,WAAO,SAAU,SAAS,MAAM,gBAAgB;AAC5C,UAAI,SAAS,kBAAkB;AAC/B,UAAIF,QAAO,eAAe,UAAa,CAACG,WAAU;AAC9C,eAAOH,QAAO,WAAW,SAAS,MAAM,MAAM;AAAA,MAClD;AACA,aAAO,KACF,MAAM,EAAE,EACR,IAAI,SAAUI,IAAGC,IAAG,KAAK;AAC1B,eAAO,QAAQD,EAAC,KAAK,IAAIC,KAAI,CAAC,MAAM,OAC9B,QAAQD,EAAC,EAAE,SAAS,QAAQJ,OAAM,IAClCI,OAAM,OACFA,KACA;AAAA,MACd,CAAC,EACI,KAAK,EAAE;AAAA,IAChB;AAAA,EACJ;AACO,MAAI,mBAAmB,SAAU,IAAI;AACxC,QAAI,KAAK,GAAG,QAAQJ,UAAS,OAAO,SAASC,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,YAAIK,UAAS,gBAAgBN,WAAUC,WAAU;AACjD,YAAI,UAAU,OAAO,IAAI,EAAE,KAAK;AAChC,YAAI,YAAY,SAAS;AACrB,uBAAa,oBAAI,KAAK;AACtB,qBAAW;AAAA,QACf,WACSD,WAAUA,QAAO,WAAW;AACjC,uBAAaA,QAAO,UAAU,MAAMM,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,CAACP,WAAU,CAACA,QAAO,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,SAAUQ,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,QAAAT,QAAO,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,MAAIU,YAAW;AAAA,IAClB,KAAK;AAAA,EACT;AACO,WAAS,gBAAgBC,SAAQ;AACpC,QAAI,QAAQA,QAAO;AACnB,QAAI,UAAUA,QAAO;AACrB,QAAI,UAAUA,QAAO;AACrB,QAAIA,QAAO,YAAY,QAAW;AAC9B,UAAI,UAAUA,QAAO,QAAQ,SAAS;AACtC,UAAI,aAAaA,QAAO,QAAQ,WAAW;AAC3C,UAAI,aAAaA,QAAO,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,kBAAUA,QAAO,QAAQ,WAAW;AAAA,IAC5C;AACA,QAAIA,QAAO,YAAY,QAAW;AAC9B,UAAI,QAAQA,QAAO,QAAQ,SAAS;AACpC,UAAI,aAAaA,QAAO,QAAQ,WAAW;AAC3C,cAAQ,KAAK,IAAI,OAAO,KAAK;AAC7B,UAAI,UAAU;AACV,kBAAU,KAAK,IAAI,YAAY,OAAO;AAC1C,UAAI,UAAU,SAAS,YAAY;AAC/B,kBAAUA,QAAO,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,eAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM;AAC1C,aAAK,KAAK,CAAC,IAAI,UAAU,EAAE;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,SAAUC,MAAK;AAAE,mBAAQ,OAAOA,IAAG,IAAID,QAAOC,IAAG;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;AAAG,cAAI,OAAO,UAAU,eAAe,KAAKA,IAAGG,EAAC;AAC1D,YAAAJ,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;AAAK,MAAAD,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,QAAQE;AACb,IAAAF,MAAK,QAAQ;AACb,IAAAA,MAAK,cAAc;AACnB,IAAAA,MAAK,iBAAiB;AACtB,IAAAA,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,OAAO,IAAI;AACjC,cAAI,UAAU,QAAQ;AAAE,oBAAQA,MAAK;AAAA,UAAc;AACnD,cAAI,OAAO,QAAQ;AAAE,iBAAKA,MAAK;AAAA,UAAa;AAC5C,cAAI,UAAU,MAAO,KAAK,MAAM,KAAK,KAAK,QAAQ,KAAM,KAAK,QAAQ;AACjE,mBAAO;AACX,iBAAOA,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,QAAAK,OAAM;AACV,iBAAW;AACX,UAAIL,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,UAAIO,UAASP,MAAK;AAClB,UAAIO,QAAO,gBAAgB,SAASA,QAAO,eAAe,GAAG;AACzD;AAAA,MACJ,WACSA,QAAO,eAAe,MAAM;AACjC,eAAO,sBAAsB,WAAY;AACrC,cAAIP,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,KAAKO,QAAO;AACrD,YAAAP,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,WAAWQ,IAAG;AACnB,UAAIR,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,UAAIQ,OAAM,UAAaA,GAAE,SAAS,QAAQ;AACtC,oBAAYA,EAAC;AAAA,MACjB;AACA,UAAI,YAAYR,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,cAAIS,WAAUT,MAAK,OAAO,YAAY,SAChCA,MAAK,OAAO,UACZA,MAAK,OAAO;AAClB,kBAAQ,KAAK,IAAI,OAAOS,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,WAAUV,MAAK,OAAO,YAAY,SAChCA,MAAK,OAAO,UACZA,MAAK,OAAO;AAClB,kBAAQ,KAAK,IAAI,OAAOU,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,WAAWV,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,YAAY,OAAO;AACxB,UAAI,cAAcW,gBAAe,KAAK;AACtC,UAAI,OAAO,SAAS,YAAY,KAAK,KAAK,MAAM,SAAS;AACzD,UAAI,OAAO,MAAO,KACb,MAAM,QAAQ,WAAW,CAAC,QAAQ,KAAK,KAAK,SAAS,CAAC,GAAI;AAC3D,mBAAW,IAAI;AAAA,MACnB;AAAA,IACJ;AACA,aAAS,KAAKC,UAAS,OAAO,SAASC,UAAS;AAC5C,UAAI,iBAAiB;AACjB,eAAO,MAAM,QAAQ,SAAU,IAAI;AAAE,iBAAO,KAAKD,UAAS,IAAI,SAASC,QAAO;AAAA,QAAG,CAAC;AACtF,UAAID,oBAAmB;AACnB,eAAOA,SAAQ,QAAQ,SAAU,IAAI;AAAE,iBAAO,KAAK,IAAI,OAAO,SAASC,QAAO;AAAA,QAAG,CAAC;AACtF,MAAAD,SAAQ,iBAAiB,OAAO,SAASC,QAAO;AAChD,MAAAb,MAAK,UAAU,KAAK;AAAA,QAChB,QAAQ,WAAY;AAAE,iBAAOY,SAAQ,oBAAoB,OAAO,SAASC,QAAO;AAAA,QAAG;AAAA,MACvF,CAAC;AAAA,IACL;AACA,aAAS,gBAAgB;AACrB,mBAAa,UAAU;AAAA,IAC3B;AACA,aAAS,aAAa;AAClB,UAAIb,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,kBAAkBc,UAAS,UAAU,EAAE;AAC3C,MAAAd,MAAK,mBAAmBc,UAAS,eAAe,mBAAmB;AACnE,UAAId,MAAK,iBAAiB,CAAC,oBAAoB,KAAK,UAAU,SAAS;AACnE,aAAKA,MAAK,eAAe,aAAa,SAAUQ,IAAG;AAC/C,cAAIR,MAAK,OAAO,SAAS;AACrB,wBAAYW,gBAAeH,EAAC,CAAC;AAAA,QACrC,CAAC;AACL,WAAKR,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,SAAUQ,IAAG;AACvB,iBAAOG,gBAAeH,EAAC,EAAE,OAAO;AAAA,QACpC;AACA,aAAKR,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,SAAUQ,IAAG;AAClC,uBAAWA,EAAC;AAAA,UAChB,CAAC;AAAA,QACL;AAAA,MACJ;AACA,UAAIR,MAAK,OAAO,YAAY;AACxB,aAAKA,MAAK,QAAQ,QAAQ,MAAM;AAAA,MACpC;AAAA,IACJ;AACA,aAAS,WAAW,UAAUe,gBAAe;AACzC,UAAI,SAAS,aAAa,SACpBf,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,SACOQ,IAAP;AACI,QAAAA,GAAE,UAAU,4BAA4B;AACxC,QAAAR,MAAK,OAAO,aAAaQ,EAAC;AAAA,MAC9B;AACA,UAAIO,kBAAiBf,MAAK,gBAAgB,SAAS;AAC/C,qBAAa,cAAc;AAC3B,yBAAiB;AAAA,MACrB;AACA,UAAIe,mBACCf,MAAK,gBAAgB,WAAWA,MAAK,iBAAiB,WAAW;AAClE,qBAAa,eAAe;AAAA,MAChC;AACA,MAAAA,MAAK,OAAO;AAAA,IAChB;AACA,aAAS,cAAcQ,IAAG;AACtB,UAAI,cAAcG,gBAAeH,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,MAAKG,gBAAeH,EAAC;AAClC,UAAI,QAAQ,aACP,UAAU,OAAO,cAAc,OAAO,WAAW;AACtD,UAAI,QAAQ,YAAY,WAAW;AACnC,YAAM,QAAQ;AACd,eAAS,MAAM,cAAc,KAAK;AAAA,IACtC;AACA,aAASH,SAAQ;AACb,UAAI,WAAW,OAAO,SAAS,uBAAuB;AACtD,MAAAL,MAAK,oBAAoB,cAAc,OAAO,oBAAoB;AAClE,MAAAA,MAAK,kBAAkB,WAAW;AAClC,UAAI,CAACA,MAAK,OAAO,YAAY;AACzB,iBAAS,YAAY,cAAc,CAAC;AACpC,QAAAA,MAAK,iBAAiB,cAAc,OAAO,0BAA0B;AACrE,YAAIA,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,aAAa,cAAc,OAAO,sBAAsB;AAC7D,QAAAA,MAAK,WAAW,YAAY,cAAc,CAAC;AAC3C,YAAI,CAACA,MAAK,eAAe;AACrB,UAAAA,MAAK,gBAAgB,cAAc,OAAO,gBAAgB;AAC1D,UAAAA,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,MAAAgB,aAAYhB,MAAK,mBAAmB,aAAaA,MAAK,OAAO,SAAS,OAAO;AAC7E,MAAAgB,aAAYhB,MAAK,mBAAmB,WAAWA,MAAK,OAAO,YAAY,IAAI;AAC3E,MAAAgB,aAAYhB,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,UAAU,cAAc,OAAO,mBAAmB;AACtD,cAAIA,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,aAAa,cAAc,QAAQ,WAAW,KAAK,QAAQ,EAAE,SAAS,CAAC;AAClH,iBAAW,UAAU;AACrB,iBAAW,KAAKA;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,YAAAgB,aAAY,YAAY,cAAchB,MAAK,cAAc,CAAC,KACtD,aAAa,MAAMA,MAAK,cAAc,CAAC,GAAG,IAAI,MAAM,CAAC;AACzD,YAAAgB,aAAY,YAAY,YAAYhB,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,eAASiB,KAAI,YAAYA,MAAK,UAAUA,MAAK,OAAO;AAChD,YAAI,QAAQjB,MAAK,cAAc,SAASiB,EAAC;AACzC,YAAI,aAAa,QAAQ,IAAI,IAAI,MAAM,SAAS,SAAS;AACzD,YAAI,WAAW,QAAQ,IAAI,MAAM,SAAS,SAAS;AACnD,iBAASxB,KAAI,YAAYA,MAAK,UAAUA,MAAK,OAAO;AAChD,cAAIyB,KAAI,MAAM,SAASzB,EAAC;AACxB,cAAIyB,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,IACzBlB,MAAK;AACX,UAAI,WAAW,QAAQ,IAAIA,MAAK,OAAO,aAAa;AACpD,UAAI,YAAY,QAAQ,IAAI,IAAI;AAChC,eAASiB,KAAI,aAAajB,MAAK,cAAciB,MAAK,UAAUA,MAAK,WAAW;AACxE,YAAI,QAAQjB,MAAK,cAAc,SAASiB,EAAC;AACzC,YAAI,aAAa,aAAajB,MAAK,iBAAiBiB,KAC9C,QAAQ,KAAK,QACb,QAAQ,IACJ,MAAM,SAAS,SAAS,IACxB;AACV,YAAI,eAAe,MAAM,SAAS;AAClC,iBAASxB,KAAI,YAAYA,MAAK,KAAKA,KAAI,gBAAgBA,OAAM,QAAQ,IAAI,eAAe,KAAKA,MAAK,WAAW;AACzG,cAAIyB,KAAI,MAAM,SAASzB,EAAC;AACxB,cAAIyB,GAAE,UAAU,QAAQ,QAAQ,MAAM,MAClC,UAAUA,GAAE,OAAO,KACnB,KAAK,IAAI,QAAQ,KAAKzB,EAAC,KAAK,KAAK,IAAI,KAAK;AAC1C,mBAAO,eAAeyB,EAAC;AAAA,QAC/B;AAAA,MACJ;AACA,MAAAlB,MAAK,YAAY,SAAS;AAC1B,iBAAW,qBAAqB,SAAS,GAAG,CAAC;AAC7C,aAAO;AAAA,IACX;AACA,aAAS,WAAW,SAASmB,SAAQ;AACjC,UAAIC,iBAAgB,wBAAwB;AAC5C,UAAI,aAAa,SAASA,kBAAiB,SAAS,IAAI;AACxD,UAAI,YAAY,YAAY,SACtB,UACA,aACIA,iBACApB,MAAK,qBAAqB,UAAa,SAASA,MAAK,gBAAgB,IACjEA,MAAK,mBACLA,MAAK,kBAAkB,UAAa,SAASA,MAAK,aAAa,IAC3DA,MAAK,gBACL,qBAAqBmB,UAAS,IAAI,IAAI,EAAE;AAC1D,UAAI,cAAc,QAAW;AACzB,QAAAnB,MAAK,OAAO,MAAM;AAAA,MACtB,WACS,CAAC,YAAY;AAClB,uBAAe,SAAS;AAAA,MAC5B,OACK;AACD,4BAAoB,WAAWmB,OAAM;AAAA,MACzC;AAAA,IACJ;AACA,aAAS,eAAe,MAAM,OAAO;AACjC,UAAI,gBAAgB,IAAI,KAAK,MAAM,OAAO,CAAC,EAAE,OAAO,IAAInB,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,eAAe,cAAc,OAAO,cAAc;AACtD,mBAAa,YAAY,IAAI;AAC7B,aAAO;AAAA,IACX;AACA,aAAS,YAAY;AACjB,UAAIA,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,YAAI4B,KAAI,IAAI,KAAKrB,MAAK,aAAaA,MAAK,cAAc,CAAC;AACvD,QAAAqB,GAAE,SAASrB,MAAK,eAAeP,EAAC;AAChC,aAAK,YAAY,eAAe4B,GAAE,YAAY,GAAGA,GAAE,SAAS,CAAC,CAAC;AAAA,MAClE;AACA,MAAArB,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,SAAUsB,QAAO;AACpC,YAAItB,MAAK,OAAO,YAAY,UACxBA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,YAAY,KACrDsB,SAAQtB,MAAK,OAAO,QAAQ,SAAS,GAAG;AACxC,iBAAO;AAAA,QACX;AACA,eAAO,EAAEA,MAAK,OAAO,YAAY,UAC7BA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,YAAY,KACrDsB,SAAQtB,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,QAAQ,cAAc,UAAU,+BAA+B;AACnE,cAAM,QAAQ,IAAI,KAAKO,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,YAAY,cAAc,OAAO,iBAAiB;AACtD,UAAI,mBAAmB,OAAO,SAAS,uBAAuB;AAC9D,UAAI;AACJ,UAAIA,MAAK,OAAO,aAAa,KACzBA,MAAK,OAAO,sBAAsB,UAAU;AAC5C,uBAAe,cAAc,QAAQ,WAAW;AAAA,MACpD,OACK;AACD,QAAAA,MAAK,0BAA0B,cAAc,UAAU,gCAAgC;AACvF,QAAAA,MAAK,wBAAwB,aAAa,cAAcA,MAAK,KAAK,cAAc;AAChF,aAAKA,MAAK,yBAAyB,UAAU,SAAUQ,IAAG;AACtD,cAAI,SAASG,gBAAeH,EAAC;AAC7B,cAAI,gBAAgB,SAAS,OAAO,OAAO,EAAE;AAC7C,UAAAR,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,eAAe,cAAc,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,gBAAUA,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,eAASiB,KAAIjB,MAAK,OAAO,YAAYiB,QAAM;AACvC,YAAI,QAAQ,WAAW;AACvB,QAAAjB,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,WAAW,cAAc,OAAO,kBAAkB;AACvD,MAAAA,MAAK,eAAe,CAAC;AACrB,MAAAA,MAAK,gBAAgB,CAAC;AACtB,MAAAA,MAAK,eAAe,cAAc,QAAQ,sBAAsB;AAChE,MAAAA,MAAK,aAAa,YAAYA,MAAK,OAAO;AAC1C,MAAAA,MAAK,eAAe,cAAc,QAAQ,sBAAsB;AAChE,MAAAA,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,YAAAgB,aAAYhB,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,YAAAgB,aAAYhB,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,gBAAgB,cAAc,OAAO,gBAAgB;AAC1D,MAAAA,MAAK,cAAc,WAAW;AAC9B,UAAI,YAAY,cAAc,QAAQ,4BAA4B,GAAG;AACrE,UAAI,YAAY,kBAAkB,kBAAkB;AAAA,QAChD,cAAcA,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,YAAY,cAAc,QAAQ,4BAA4B,GAAG,CAAC;AACrF,QAAAA,MAAK,cAAc,YAAY,WAAW;AAAA,MAC9C;AACA,UAAI,CAACA,MAAK,OAAO,WAAW;AACxB,QAAAA,MAAK,OAAO,cAAc,QAAQ,mBAAmBA,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,mBAAmB,cAAc,OAAO,oBAAoB;AAAA;AAEjE,kBAAUA,MAAK,gBAAgB;AACnC,eAASP,KAAIO,MAAK,OAAO,YAAYP,QAAM;AACvC,YAAI,YAAY,cAAc,OAAO,4BAA4B;AACjE,QAAAO,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,cAAc,cAAc,OAAO,uBAAuB;AAC9D,kBAAY,YAAY,cAAc,QAAQ,qBAAqBA,MAAK,KAAK,gBAAgB,CAAC;AAC9F,UAAI,cAAc,cAAc,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,QAAQA,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,aAASE,OAAM,oBAAoB,WAAW;AAC1C,UAAI,uBAAuB,QAAQ;AAAE,6BAAqB;AAAA,MAAM;AAChE,UAAI,cAAc,QAAQ;AAAE,oBAAY;AAAA,MAAM;AAC9C,MAAAF,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,SACO0B,IAAP;AAAA,QAAY;AAAA,MAChB,CAAC;AAAA,IACL;AACA,aAAS,eAAe,MAAM;AAC1B,aAAOvB,MAAK,kBAAkB,SAAS,IAAI;AAAA,IAC/C;AACA,aAAS,cAAcQ,IAAG;AACtB,UAAIR,MAAK,UAAU,CAACA,MAAK,OAAO,QAAQ;AACpC,YAAI,gBAAgBW,gBAAeH,EAAC;AACpC,YAAI,oBAAoB,eAAe,aAAa;AACpD,YAAI,UAAU,kBAAkBR,MAAK,SACjC,kBAAkBA,MAAK,YACvBA,MAAK,QAAQ,SAAS,aAAa,KAClCQ,GAAE,QACCA,GAAE,KAAK,YACN,CAACA,GAAE,KAAK,QAAQR,MAAK,KAAK,KACvB,CAACQ,GAAE,KAAK,QAAQR,MAAK,QAAQ;AACzC,YAAI,YAAY,CAAC,WACb,CAAC,qBACD,CAAC,eAAeQ,GAAE,aAAa;AACnC,YAAI,YAAY,CAACR,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,QAAQwB,UAAS,KAAKxB,MAAK,OAAO,YAAY,QAAQ,OAAO,SAAS,KAAKA,MAAK,OAAO;AAChH,eAASP,KAAI,GAAG4B,KAAI,QAAQ5B,KAAI+B,OAAM,QAAQ/B,MAAK;AAC/C,QAAA4B,KAAIG,OAAM/B,EAAC;AACX,YAAI,OAAO4B,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,SAASrB,MAAK,UAAUqB,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,UAAIrB,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,OAAOQ,IAAG;AACf,UAAI,UAAUA,GAAE,WAAWR,MAAK;AAChC,UAAI,eAAeA,MAAK,OAAO,MAAM,QAAQ,MAAM,WAAW;AAC9D,UAAI,WACA,gBACA,EAAEQ,GAAE,iBAAiB,eAAeA,GAAE,aAAa,IAAI;AACvD,QAAAR,MAAK,QAAQA,MAAK,OAAO,OAAO,MAAMQ,GAAE,WAAWR,MAAK,WAClDA,MAAK,OAAO,YACZA,MAAK,OAAO,UAAU;AAAA,MAChC;AAAA,IACJ;AACA,aAAS,UAAUQ,IAAG;AAClB,UAAI,cAAcG,gBAAeH,EAAC;AAClC,UAAI,UAAUR,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,UAAIQ,GAAE,YAAY,MAAM,SAAS;AAC7B,YAAI,YAAY;AACZ,UAAAR,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,gBAAQQ,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,CAACR,MAAK,OAAO,YAAY;AACpC,cAAAQ,GAAE,eAAe;AACjB,cAAAR,MAAK,MAAM;AAAA,YACf;AACA;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,CAAC,aAAa,CAAC,SAAS;AACxB,cAAAQ,GAAE,eAAe;AACjB,kBAAIY,iBAAgB,wBAAwB;AAC5C,kBAAIpB,MAAK,kBAAkB,WACtB,eAAe,SACXoB,kBAAiB,SAASA,cAAa,IAAK;AACjD,oBAAI,UAAUZ,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,WACSR,MAAK;AACV,cAAAA,MAAK,YAAY,MAAM;AAC3B;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,YAAAQ,GAAE,eAAe;AACjB,gBAAI,QAAQA,GAAE,YAAY,KAAK,IAAI;AACnC,gBAAKR,MAAK,iBACN,YAAY,OAAO,UACnB,gBAAgBA,MAAK,SACrB,gBAAgBA,MAAK,UAAU;AAC/B,kBAAIQ,GAAE,SAAS;AACX,gBAAAA,GAAE,gBAAgB;AAClB,2BAAWR,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,yBAAWQ,EAAC;AACZ,cAAAR,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,SAAUyB,IAAG;AAAE,uBAAOA;AAAA,cAAG,CAAC;AACtC,kBAAIhC,KAAI,MAAM,QAAQ,WAAW;AACjC,kBAAIA,OAAM,IAAI;AACV,oBAAI,SAAS,MAAMA,MAAKe,GAAE,WAAW,KAAK,EAAE;AAC5C,gBAAAA,GAAE,eAAe;AACjB,iBAAC,UAAUR,MAAK,QAAQ,MAAM;AAAA,cAClC;AAAA,YACJ,WACS,CAACA,MAAK,OAAO,cAClBA,MAAK,iBACLA,MAAK,cAAc,SAAS,WAAW,KACvCQ,GAAE,UAAU;AACZ,cAAAA,GAAE,eAAe;AACjB,cAAAR,MAAK,OAAO,MAAM;AAAA,YACtB;AACA;AAAA,UACJ;AACI;AAAA,QACR;AAAA,MACJ;AACA,UAAIA,MAAK,SAAS,UAAa,gBAAgBA,MAAK,MAAM;AACtD,gBAAQQ,GAAE,KAAK;AAAA,UACX,KAAKR,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,aAAaQ,EAAC;AAAA,MAC/B;AAAA,IACJ;AACA,aAAS,YAAY,MAAM,WAAW;AAClC,UAAI,cAAc,QAAQ;AAAE,oBAAY;AAAA,MAAiB;AACzD,UAAIR,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,MAAKmC,UAAS,KAAK;AAC9D,YAAI,CAAC,UAAU,IAAI,KAAKnC,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,SAAUkB,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,aAAalB,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,aAAS,WAAW;AAChB,UAAIA,MAAK,UAAU,CAACA,MAAK,OAAO,UAAU,CAACA,MAAK,OAAO;AACnD,yBAAiB;AAAA,IACzB;AACA,aAAS,KAAKQ,IAAG,iBAAiB;AAC9B,UAAI,oBAAoB,QAAQ;AAAE,0BAAkBR,MAAK;AAAA,MAAkB;AAC3E,UAAIA,MAAK,aAAa,MAAM;AACxB,YAAIQ,IAAG;AACH,UAAAA,GAAE,eAAe;AACjB,cAAI,cAAcG,gBAAeH,EAAC;AAClC,cAAI,aAAa;AACb,wBAAY,KAAK;AAAA,UACrB;AAAA,QACJ;AACA,YAAIR,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,UAC1BQ,OAAM,UACH,CAACR,MAAK,cAAc,SAASQ,GAAE,aAAa,IAAI;AACpD,qBAAW,WAAY;AAAE,mBAAOR,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,SAAUqB,IAAG;AAAE,mBAAO,UAAUA,EAAC;AAAA,UAAG,CAAC;AACpF,cAAI,CAACrB,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,UAAI2B,WAAU,CAAC;AACf,MAAA3B,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,QAAA0B,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,aAAa1B,UAAe;AAC3E,QAAA0B,SAAQ,YACJ,WAAW,cAAc,WACnB,SAAS,WAAW,gBAAgB,SAAS,QAC7C,oBAAoB,UAAU,WAAW,gBAAgB,OAAO,MAAM;AAAA,MACpF;AACA,aAAO,eAAe3B,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,QAAQ2B,UAAS,UAAU;AAC9C,eAASlC,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,iBAAS4B,QAAO,YAAY;AACxB,cAAI,MAAM,QAAQA,IAAG,IAAI,IAAI;AACzB,YAAA5B,MAAK,OAAO4B,IAAG,IAAI,SAAS,WAAWA,IAAG,CAAC,EACtC,IAAI,cAAc,EAClB,OAAO5B,MAAK,OAAO4B,IAAG,CAAC;AAAA,UAChC,WACS,OAAO,WAAWA,IAAG,MAAM;AAChC,YAAA5B,MAAK,OAAO4B,IAAG,IAAI,WAAWA,IAAG;AAAA,QACzC;AAAA,MACJ;AACA,UAAI,CAAC,WAAW,eAAe;AAC3B,QAAA5B,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,UAAI6B,OAAM,OAAO,cACb,YAAY,OACX,CAAC,YAAY,gBAAgB,eAAe,IAAI,CAAC,iBAAiB;AACvE,MAAAb,aAAYhB,MAAK,mBAAmB,YAAY,CAAC,SAAS;AAC1D,MAAAgB,aAAYhB,MAAK,mBAAmB,eAAe,SAAS;AAC5D,UAAIA,MAAK,OAAO;AACZ;AACJ,UAAI8B,QAAO,OAAO,cAAc,YAAY;AAC5C,UAAI,WAAW;AACf,UAAI,UAAU;AACd,UAAI,wBAAwB,UAAU;AAClC,QAAAA,UAAS,gBAAgB,YAAY,SAAS;AAC9C,mBAAW;AAAA,MACf,WACS,wBAAwB,SAAS;AACtC,QAAAA,SAAQ,gBAAgB,YAAY;AACpC,kBAAU;AAAA,MACd;AACA,MAAAd,aAAYhB,MAAK,mBAAmB,aAAa,CAAC,YAAY,CAAC,OAAO;AACtE,MAAAgB,aAAYhB,MAAK,mBAAmB,eAAe,QAAQ;AAC3D,MAAAgB,aAAYhB,MAAK,mBAAmB,cAAc,OAAO;AACzD,UAAI+B,SAAQ,OAAO,SAAS,KAAK,eAC5B,OAAO,cAAc,YAAY;AACtC,UAAI,YAAYD,QAAO,gBAAgB,OAAO,SAAS,KAAK;AAC5D,UAAI,aAAaC,SAAQ,gBAAgB,OAAO,SAAS,KAAK;AAC9D,MAAAf,aAAYhB,MAAK,mBAAmB,aAAa,SAAS;AAC1D,UAAIA,MAAK,OAAO;AACZ;AACJ,MAAAA,MAAK,kBAAkB,MAAM,MAAM6B,OAAM;AACzC,UAAI,CAAC,WAAW;AACZ,QAAA7B,MAAK,kBAAkB,MAAM,OAAO8B,QAAO;AAC3C,QAAA9B,MAAK,kBAAkB,MAAM,QAAQ;AAAA,MACzC,WACS,CAAC,YAAY;AAClB,QAAAA,MAAK,kBAAkB,MAAM,OAAO;AACpC,QAAAA,MAAK,kBAAkB,MAAM,QAAQ+B,SAAQ;AAAA,MACjD,OACK;AACD,YAAIC,OAAM,sBAAsB;AAChC,YAAIA,SAAQ;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,cAAcA,KAAI,SAAS;AAC/B,YAAI,cAAc,WAAW,YAAY,OAAO;AAChD,QAAAhB,aAAYhB,MAAK,mBAAmB,aAAa,KAAK;AACtD,QAAAgB,aAAYhB,MAAK,mBAAmB,cAAc,IAAI;AACtD,QAAAgC,KAAI,WAAW,eAAe,MAAM,cAAc,aAAa,WAAW;AAC1E,QAAAhC,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,KAAP;AACI;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,WAAWQ,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,UAAIjB,KAAI,WAAWoB,gBAAeH,EAAC,GAAG,YAAY;AAClD,UAAIjB,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,IAAGmC,IAAG;AAAE,mBAAOnC,GAAE,QAAQ,IAAImC,GAAE,QAAQ;AAAA,UAAG,CAAC;AAAA,MACrF;AACA,yBAAmB;AACnB,UAAI,mBAAmB;AACnB,YAAI,YAAYjC,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,YAAIkC,SAAQlC,MAAK,OAAO,SAAS,WAC7BA,MAAK,cAAc,WAAW,KAC9B,CAACA,MAAK,OAAO;AACjB,YAAI,UAAUkC,QAAO;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,cAAIlC,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,KAAI+B,SAAQ,OAAO;AACxB,UAAIA,YAAW,QAAQ,OAAOA,YAAW,UAAU;AAC/C,eAAO,OAAOnC,MAAK,QAAQmC,OAAM;AACjC,iBAASP,QAAOO,SAAQ;AACpB,cAAI,UAAUP,IAAG,MAAM;AACnB,sBAAUA,IAAG,EAAE,QAAQ,SAAUH,IAAG;AAAE,qBAAOA,GAAE;AAAA,YAAG,CAAC;AAAA,QAC3D;AAAA,MACJ,OACK;AACD,QAAAzB,MAAK,OAAOmC,OAAM,IAAI;AACtB,YAAI,UAAUA,OAAM,MAAM;AACtB,oBAAUA,OAAM,EAAE,QAAQ,SAAUV,IAAG;AAAE,mBAAOA,GAAE;AAAA,UAAG,CAAC;AAAA,iBACjD,MAAM,QAAQU,OAAM,IAAI;AAC7B,UAAAnC,MAAK,OAAOmC,OAAM,IAAI,SAAS,KAAK;AAAA,MAC5C;AACA,MAAAnC,MAAK,OAAO;AACZ,kBAAY,IAAI;AAAA,IACpB;AACA,aAAS,gBAAgB,WAAWoC,SAAQ;AACxC,UAAI,QAAQ,CAAC;AACb,UAAI,qBAAqB;AACrB,gBAAQ,UAAU,IAAI,SAAUf,IAAG;AAAE,iBAAOrB,MAAK,UAAUqB,IAAGe,OAAM;AAAA,QAAG,CAAC;AAAA,eACnE,qBAAqB,QAAQ,OAAO,cAAc;AACvD,gBAAQ,CAACpC,MAAK,UAAU,WAAWoC,OAAM,CAAC;AAAA,eACrC,OAAO,cAAc,UAAU;AACpC,gBAAQpC,MAAK,OAAO,MAAM;AAAA,UACtB,KAAK;AAAA,UACL,KAAK;AACD,oBAAQ,CAACA,MAAK,UAAU,WAAWoC,OAAM,CAAC;AAC1C;AAAA,UACJ,KAAK;AACD,oBAAQ,UACH,MAAMpC,MAAK,OAAO,WAAW,EAC7B,IAAI,SAAU,MAAM;AAAE,qBAAOA,MAAK,UAAU,MAAMoC,OAAM;AAAA,YAAG,CAAC;AACjE;AAAA,UACJ,KAAK;AACD,oBAAQ,UACH,MAAMpC,MAAK,KAAK,cAAc,EAC9B,IAAI,SAAU,MAAM;AAAE,qBAAOA,MAAK,UAAU,MAAMoC,OAAM;AAAA,YAAG,CAAC;AACjE;AAAA,UACJ;AACI;AAAA,QACR;AAAA,MACJ;AAEI,QAAApC,MAAK,OAAO,aAAa,IAAI,MAAM,4BAA4B,KAAK,UAAU,SAAS,CAAC,CAAC;AAC7F,MAAAA,MAAK,gBAAiBA,MAAK,OAAO,sBAC5B,QACA,MAAM,OAAO,SAAUqB,IAAG;AAAE,eAAOA,cAAa,QAAQ,UAAUA,IAAG,KAAK;AAAA,MAAG,CAAC;AACpF,UAAIrB,MAAK,OAAO,SAAS;AACrB,QAAAA,MAAK,cAAc,KAAK,SAAUF,IAAGmC,IAAG;AAAE,iBAAOnC,GAAE,QAAQ,IAAImC,GAAE,QAAQ;AAAA,QAAG,CAAC;AAAA,IACrF;AACA,aAAS,QAAQ,MAAMlB,gBAAeqB,SAAQ;AAC1C,UAAIrB,mBAAkB,QAAQ;AAAE,QAAAA,iBAAgB;AAAA,MAAO;AACvD,UAAIqB,YAAW,QAAQ;AAAE,QAAAA,UAASpC,MAAK,OAAO;AAAA,MAAY;AAC1D,UAAK,SAAS,KAAK,CAAC,QAAU,gBAAgB,SAAS,KAAK,WAAW;AACnE,eAAOA,MAAK,MAAMe,cAAa;AACnC,sBAAgB,MAAMqB,OAAM;AAC5B,MAAApC,MAAK,wBACDA,MAAK,cAAcA,MAAK,cAAc,SAAS,CAAC;AACpD,MAAAA,MAAK,OAAO;AACZ,iBAAW,QAAWe,cAAa;AACnC,uBAAiB;AACjB,UAAIf,MAAK,cAAc,WAAW,GAAG;AACjC,QAAAA,MAAK,MAAM,KAAK;AAAA,MACpB;AACA,kBAAYe,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,iBAAOf,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,SAAUyB,IAAG;AAAE,eAAOA;AAAA,MAAG,CAAC;AAAA,IAC1C;AACA,aAAS,aAAa;AAClB,MAAAzB,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,WAAW,cAAcA,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,cAAc,cAAc,SAASA,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,IAAP;AAAA,MAAa;AACb,WAAKA,MAAK,aAAa,UAAU,SAAUQ,IAAG;AAC1C,QAAAR,MAAK,QAAQW,gBAAeH,EAAC,EAAE,OAAO,OAAOR,MAAK,eAAe;AACjE,qBAAa,UAAU;AACvB,qBAAa,SAAS;AAAA,MAC1B,CAAC;AAAA,IACL;AACA,aAAS,OAAOQ,IAAG;AACf,UAAIR,MAAK,WAAW;AAChB,eAAOA,MAAK,MAAM;AACtB,MAAAA,MAAK,KAAKQ,EAAC;AAAA,IACf;AACA,aAAS,aAAa,OAAO6B,OAAM;AAC/B,UAAIrC,MAAK,WAAW;AAChB;AACJ,UAAIsC,SAAQtC,MAAK,OAAO,KAAK;AAC7B,UAAIsC,WAAU,UAAaA,OAAM,SAAS,GAAG;AACzC,iBAAS7C,KAAI,GAAG6C,OAAM7C,EAAC,KAAKA,KAAI6C,OAAM,QAAQ7C;AAC1C,UAAA6C,OAAM7C,EAAC,EAAEO,MAAK,eAAeA,MAAK,MAAM,OAAOA,OAAMqC,KAAI;AAAA,MACjE;AACA,UAAI,UAAU,YAAY;AACtB,QAAArC,MAAK,MAAM,cAAc,YAAY,QAAQ,CAAC;AAC9C,QAAAA,MAAK,MAAM,cAAc,YAAY,OAAO,CAAC;AAAA,MACjD;AAAA,IACJ;AACA,aAAS,YAAYuC,OAAM;AACvB,UAAI/B,KAAI,SAAS,YAAY,OAAO;AACpC,MAAAA,GAAE,UAAU+B,OAAM,MAAM,IAAI;AAC5B,aAAO/B;AAAA,IACX;AACA,aAAS,eAAe,MAAM;AAC1B,eAASf,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,YAAI4B,KAAI,IAAI,KAAKrB,MAAK,aAAaA,MAAK,cAAc,CAAC;AACvD,QAAAqB,GAAE,SAASrB,MAAK,eAAeP,EAAC;AAChC,YAAIO,MAAK,OAAO,aAAa,KACzBA,MAAK,OAAO,sBAAsB,UAAU;AAC5C,UAAAA,MAAK,cAAcP,EAAC,EAAE,cAClB,WAAW4B,GAAE,SAAS,GAAGrB,MAAK,OAAO,uBAAuBA,MAAK,IAAI,IAAI;AAAA,QACjF,OACK;AACD,UAAAA,MAAK,wBAAwB,QAAQqB,GAAE,SAAS,EAAE,SAAS;AAAA,QAC/D;AACA,oBAAY,QAAQA,GAAE,YAAY,EAAE,SAAS;AAAA,MACjD,CAAC;AACD,MAAArB,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,UAAIoC,UAAS,mBACRpC,MAAK,OAAO,WAAWA,MAAK,OAAO,YAAYA,MAAK,OAAO;AAChE,aAAOA,MAAK,cACP,IAAI,SAAU,MAAM;AAAE,eAAOA,MAAK,WAAW,MAAMoC,OAAM;AAAA,MAAG,CAAC,EAC7D,OAAO,SAAUf,IAAG5B,IAAG,KAAK;AAC7B,eAAOO,MAAK,OAAO,SAAS,WACxBA,MAAK,OAAO,cACZ,IAAI,QAAQqB,EAAC,MAAM5B;AAAA,MAC3B,CAAC,EACI,KAAKO,MAAK,OAAO,SAAS,UACzBA,MAAK,OAAO,cACZA,MAAK,KAAK,cAAc;AAAA,IAClC;AACA,aAAS,YAAYe,gBAAe;AAChC,UAAIA,mBAAkB,QAAQ;AAAE,QAAAA,iBAAgB;AAAA,MAAM;AACtD,UAAIf,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,UAAIe,mBAAkB;AAClB,qBAAa,eAAe;AAAA,IACpC;AACA,aAAS,gBAAgBP,IAAG;AACxB,UAAI,cAAcG,gBAAeH,EAAC;AAClC,UAAI,cAAcR,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,YAAYQ,IAAG;AACpB,MAAAA,GAAE,eAAe;AACjB,UAAI,YAAYA,GAAE,SAAS,WAAW,cAAcG,gBAAeH,EAAC,GAAG,QAAQ;AAC/E,UAAIR,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,UAAIwC,OAAM,WAAW,MAAM,aAAa,KAAK,CAAC,GAAGC,OAAM,WAAW,MAAM,aAAa,KAAK,CAAC,GAAG,OAAO,WAAW,MAAM,aAAa,MAAM,CAAC,GAAG,WAAW,SAAS,MAAM,OAAO,EAAE,GAAG,QAAQjC,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,UAAUR,MAAK,aAAa,eAAe,UAAUA,MAAK;AAC3E,YAAI,WAAWwC,MAAK;AAChB,qBACIC,OACI,WACA,IAAI,CAAC,UAAU,KACd,IAAI,UAAU,KAAK,IAAI,CAACzC,MAAK,IAAI;AAC1C,cAAI;AACA,8BAAkB,QAAW,IAAIA,MAAK,WAAW;AAAA,QACzD,WACS,WAAWyC,MAAK;AACrB,qBACI,UAAUzC,MAAK,cAAc,WAAWyC,OAAM,IAAI,CAACzC,MAAK,IAAI,IAAIwC;AACpE,cAAI;AACA,8BAAkB,QAAW,GAAGxC,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,UAAUO,SAAQ;AAClC,QAAI,QAAQ,MAAM,UAAU,MACvB,KAAK,QAAQ,EACb,OAAO,SAAUkB,IAAG;AAAE,aAAOA,cAAa;AAAA,IAAa,CAAC;AAC7D,QAAIiB,aAAY,CAAC;AACjB,aAASjD,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,MAAMc,WAAU,CAAC,CAAC;AACtD,QAAAmC,WAAU,KAAK,KAAK,UAAU;AAAA,MAClC,SACOlC,IAAP;AACI,gBAAQ,MAAMA,EAAC;AAAA,MACnB;AAAA,IACJ;AACA,WAAOkC,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,SAAUnC,SAAQ;AAClF,aAAO,WAAW,MAAMA,OAAM;AAAA,IAClC;AACA,gBAAY,UAAU,YAAY,SAAUA,SAAQ;AAChD,aAAO,WAAW,CAAC,IAAI,GAAGA,OAAM;AAAA,IACpC;AAAA,EACJ;AACA,MAAI,YAAY,SAAU,UAAUA,SAAQ;AACxC,QAAI,OAAO,aAAa,UAAU;AAC9B,aAAO,WAAW,OAAO,SAAS,iBAAiB,QAAQ,GAAGA,OAAM;AAAA,IACxE,WACS,oBAAoB,MAAM;AAC/B,aAAO,WAAW,CAAC,QAAQ,GAAGA,OAAM;AAAA,IACxC,OACK;AACD,aAAO,WAAW,UAAUA,OAAM;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,SAAUA,SAAQ;AACtC,cAAU,gBAAgB,SAAS,SAAS,CAAC,GAAG,UAAU,aAAa,GAAGA,OAAM;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,SAAUA,SAAQ;AACpC,aAAO,WAAW,MAAMA,OAAM;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/1Df,WAASoC,UAASC,OAAO;AACrB,WAAOA,MAAMC,QAAQ,uBAAuB,CAACC,IAAGC,SAASA,KAAKC,YAAL,CAAlD;EACV;AACD,WAASC,YAAWL,OAAO;AACvB,WAAOA,MAAMM,OAAO,CAAb,EAAgBF,YAAhB,IAAgCJ,MAAMO,MAAM,CAAZ;EAC1C;AACD,WAASC,WAAUR,OAAO;AACtB,WAAOA,MAAMC,QAAQ,YAAY,CAACC,IAAGC,SAAU,IAAGA,KAAKM,YAAL,GAA3C;EACV;AAw6BD,WAASC,kCAAiCC,aAAaC,cAAc;AACjE,UAAMC,YAAYC,4BAA2BH,WAAD;AAC5C,WAAOI,MAAMC,KAAKH,UAAUI,OAAO,CAACC,QAAQP,iBAAgB;AACxDQ,MAAAA,yBAAwBR,cAAaC,YAAd,EAA4BQ,QAAQC,CAAAA,UAAQH,OAAOI,IAAID,KAAX,CAAnE;AACA,aAAOH;IACV,GAAE,oBAAIK,IAAJ,CAHe,CAAX;EAIV;AACD,WAASC,kCAAiCb,aAAaC,cAAc;AACjE,UAAMC,YAAYC,4BAA2BH,WAAD;AAC5C,WAAOE,UAAUI,OAAO,CAACQ,OAAOd,iBAAgB;AAC5Cc,YAAMC,KAAK,GAAGC,yBAAwBhB,cAAaC,YAAd,CAArC;AACA,aAAOa;IACV,GAAE,CAAA,CAHI;EAIV;AACD,WAASX,4BAA2BH,aAAa;AAC7C,UAAME,YAAY,CAAA;AAClB,WAAOF,aAAa;AAChBE,gBAAUa,KAAKf,WAAf;AACAA,oBAAciB,OAAOC,eAAelB,WAAtB;IACjB;AACD,WAAOE,UAAUiB,QAAV;EACV;AACD,WAASX,yBAAwBR,aAAaC,cAAc;AACxD,UAAMmB,aAAapB,YAAYC,YAAD;AAC9B,WAAOG,MAAMiB,QAAQD,UAAd,IAA4BA,aAAa,CAAA;EACnD;AACD,WAASJ,yBAAwBhB,aAAaC,cAAc;AACxD,UAAMmB,aAAapB,YAAYC,YAAD;AAC9B,WAAOmB,aAAaH,OAAOK,KAAKF,UAAZ,EAAwBG,IAAIC,CAAAA,SAAO,CAACA,MAAKJ,WAAWI,IAAD,CAAhB,CAAnC,IAA6D,CAAA;EACpF;AAsDD,MAAMC,WAAU,MAAM;AAClB,aAASC,kBAAkB1B,aAAa;AACpC,eAAS2B,WAAW;AAChB,eAAOC,QAAQC,UAAU7B,aAAa8B,WAAWC,UAA1C;MACV;AACDJ,eAASK,YAAYf,OAAOgB,OAAOjC,YAAYgC,WAAW;QACtDhC,aAAa;UAAEX,OAAOsC;QAAT;MADyC,CAArC;AAGrBC,cAAQM,eAAeP,UAAU3B,WAAjC;AACA,aAAO2B;IACV;AACD,aAASQ,uBAAuB;AAC5B,YAAMC,KAAI,WAAY;AAAE,aAAKA,EAAEC,KAAK,IAAZ;MAAoB;AAC5C,YAAMC,KAAIZ,kBAAkBU,EAAD;AAC3BE,MAAAA,GAAEN,UAAUI,IAAI,WAAY;MAAA;AAC5B,aAAO,IAAIE,GAAJ;IACV;AACD,QAAI;AACAH,2BAAoB;AACpB,aAAOT;IACV,SACMa,QAAP;AACI,aAAQvC,iBAAgB,MAAM2B,iBAAiB3B,YAAY;MAAA;IAE9D;EACJ,GAzBc;AAwdf,WAASwC,yBAAwBxC,aAAa;AAC1C,UAAMyC,WAAU1C,kCAAiCC,aAAa,SAAd;AAChD,WAAOyC,SAAQnC,OAAO,CAACoC,YAAYC,oBAAoB;AACnD,aAAO1B,OAAO2B,OAAOF,YAAYG,8BAA6BF,eAAD,CAAtD;IACV,GAAE,CAAA,CAFI;EAGV;AACD,WAASE,8BAA6BrB,MAAK;AACvC,WAAO;MACH,CAAE,GAAEA,WAAJ,GAAiB;QACbsB,MAAM;AACF,gBAAM;YAAEL,SAAAA;UAAF,IAAc;AACpB,cAAIA,SAAQM,IAAIvB,IAAZ,GAAkB;AAClB,mBAAOiB,SAAQK,IAAItB,IAAZ;UACV,OACI;AACD,kBAAMwB,YAAYP,SAAQQ,iBAAiBzB,IAAzB;AAClB,kBAAM,IAAI0B,MAAO,sBAAqBF,YAAhC;UACT;QACJ;MAVY;MAYjB,CAAE,GAAExB,aAAJ,GAAmB;QACfsB,MAAM;AACF,iBAAO,KAAKL,QAAQU,OAAO3B,IAApB;QACV;MAHc;MAKnB,CAAE,MAAK9B,YAAW8B,IAAD,QAAjB,GAAgC;QAC5BsB,MAAM;AACF,iBAAO,KAAKL,QAAQM,IAAIvB,IAAjB;QACV;MAH2B;IAlB7B;EAwBV;AAED,WAAS4B,0BAAyBpD,aAAa;AAC3C,UAAMqD,UAAUtD,kCAAiCC,aAAa,SAAd;AAChD,WAAOqD,QAAQ/C,OAAO,CAACoC,YAAYY,qBAAqB;AACpD,aAAOrC,OAAO2B,OAAOF,YAAYa,+BAA8BD,gBAAD,CAAvD;IACV,GAAE,CAAA,CAFI;EAGV;AACD,WAASC,+BAA8B7C,OAAM;AACzC,WAAO;MACH,CAAE,GAAEA,aAAJ,GAAmB;QACfoC,MAAM;AACF,gBAAMU,SAAS,KAAKH,QAAQI,KAAK/C,KAAlB;AACf,cAAI8C,QAAQ;AACR,mBAAOA;UACV,OACI;AACD,kBAAM,IAAIN,MAAO,2BAA0BxC,eAAc,KAAKgD,wBAAxD;UACT;QACJ;MATc;MAWnB,CAAE,GAAEhD,cAAJ,GAAoB;QAChBoC,MAAM;AACF,iBAAO,KAAKO,QAAQM,QAAQjD,KAArB;QACV;MAHe;MAKpB,CAAE,MAAKhB,YAAWgB,KAAD,SAAjB,GAAkC;QAC9BoC,MAAM;AACF,iBAAO,KAAKO,QAAQN,IAAIrC,KAAjB;QACV;MAH6B;IAjB/B;EAuBV;AAED,WAASkD,yBAAwB5D,aAAa;AAC1C,UAAM6D,uBAAuBhD,kCAAiCb,aAAa,QAAd;AAC7D,UAAM8D,wBAAwB;MAC1BC,oBAAoB;QAChBjB,MAAM;AACF,iBAAOe,qBAAqBvD,OAAO,CAAC0D,QAAQC,wBAAwB;AAChE,kBAAMC,kBAAkBC,0BAAyBF,mBAAD;AAChD,kBAAMG,gBAAgB,KAAKC,KAAKC,uBAAuBJ,gBAAgB1C,GAAjD;AACtB,mBAAOP,OAAO2B,OAAOoB,QAAQ;cAAE,CAACI,aAAD,GAAiBF;YAAnB,CAAtB;UACV,GAAE,CAAA,CAJI;QAKV;MAPe;IADM;AAW9B,WAAOL,qBAAqBvD,OAAO,CAACoC,YAAYuB,wBAAwB;AACpE,aAAOhD,OAAO2B,OAAOF,YAAY6B,kCAAiCN,mBAAD,CAA1D;IACV,GAAEH,qBAFI;EAGV;AACD,WAASS,kCAAiCN,qBAAqB;AAC3D,UAAM7C,aAAa+C,0BAAyBF,mBAAD;AAC3C,UAAM;MAAEzC,KAAAA;MAAKd,MAAAA;MAAM8D,QAAQC;MAAMC,QAAQC;IAAnC,IAA6CvD;AACnD,WAAO;MACH,CAACV,KAAD,GAAQ;QACJoC,MAAM;AACF,gBAAMzD,QAAQ,KAAKgF,KAAKvB,IAAItB,IAAd;AACd,cAAInC,UAAU,MAAM;AAChB,mBAAOoF,MAAKpF,KAAD;UACd,OACI;AACD,mBAAO+B,WAAWwD;UACrB;QACJ;QACDC,IAAIxF,OAAO;AACP,cAAIA,UAAUyF,QAAW;AACrB,iBAAKT,KAAKU,OAAOvD,IAAjB;UACH,OACI;AACD,iBAAK6C,KAAKQ,IAAIrD,MAAKmD,OAAMtF,KAAD,CAAxB;UACH;QACJ;MAjBG;MAmBR,CAAE,MAAKK,YAAWgB,KAAD,GAAjB,GAA4B;QACxBoC,MAAM;AACF,iBAAO,KAAKuB,KAAKtB,IAAIvB,IAAd,KAAsBJ,WAAW4D;QAC3C;MAHuB;IApBzB;EA0BV;AACD,WAASb,0BAAyB,CAACc,OAAOC,cAAR,GAAyB;AACvD,WAAOC,0CAAyCF,OAAOC,cAAR;EAClD;AACD,WAASE,wBAAuBC,UAAU;AACtC,YAAQA,UAAR;MACI,KAAKjF;AAAO,eAAO;MACnB,KAAKkF;AAAS,eAAO;MACrB,KAAKC;AAAQ,eAAO;MACpB,KAAKtE;AAAQ,eAAO;MACpB,KAAKuE;AAAQ,eAAO;IALxB;EAOH;AACD,WAASC,uBAAsBb,cAAc;AACzC,YAAQ,OAAOA,cAAf;MACI,KAAK;AAAW,eAAO;MACvB,KAAK;AAAU,eAAO;MACtB,KAAK;AAAU,eAAO;IAH1B;AAKA,QAAIxE,MAAMiB,QAAQuD,YAAd;AACA,aAAO;AACX,QAAI3D,OAAOe,UAAU0D,SAASrD,KAAKuC,YAA/B,MAAiD;AACjD,aAAO;EACd;AACD,WAASe,sBAAqBC,YAAY;AACtC,UAAMC,iBAAiBT,wBAAuBQ,WAAWE,IAAZ;AAC7C,QAAID,gBAAgB;AAChB,YAAME,mBAAmBN,uBAAsBG,WAAWI,OAAZ;AAC9C,UAAIH,mBAAmBE,kBAAkB;AACrC,cAAM,IAAI7C,MAAO,SAAQ2C,mFAAmFD,WAAWI,gBAAgBD,mBAAjI;MACT;AACD,aAAOF;IACV;EACJ;AACD,WAASI,0BAAyBf,gBAAgB;AAC9C,UAAMW,iBAAiBF,sBAAqBT,cAAD;AAC3C,UAAMgB,uBAAuBT,uBAAsBP,cAAD;AAClD,UAAMiB,mBAAmBf,wBAAuBF,cAAD;AAC/C,UAAMY,OAAOD,kBAAkBK,wBAAwBC;AACvD,QAAIL;AACA,aAAOA;AACX,UAAM,IAAI5C,MAAO,uBAAsBgC,iBAAjC;EACT;AACD,WAASkB,2BAA0BlB,gBAAgB;AAC/C,UAAMG,WAAWD,wBAAuBF,cAAD;AACvC,QAAIG;AACA,aAAOgB,qBAAoBhB,QAAD;AAC9B,UAAMT,eAAeM,eAAec;AACpC,QAAIpB,iBAAiBE;AACjB,aAAOF;AACX,WAAOM;EACV;AACD,WAASC,0CAAyCF,OAAOC,gBAAgB;AACrE,UAAM1D,OAAO,GAAE3B,WAAUoF,KAAD;AACxB,UAAMa,OAAOG,0BAAyBf,cAAD;AACrC,WAAO;MACHY;MACAtE,KAAAA;MACAd,MAAMtB,UAASoC,IAAD;MACd,IAAIoD,eAAe;AAAE,eAAOwB,2BAA0BlB,cAAD;MAAmB;MACxE,IAAIF,wBAAwB;AAAE,eAAOS,uBAAsBP,cAAD,MAAqBJ;MAAY;MAC3FN,QAAQ8B,SAAQR,IAAD;MACfpB,QAAQ6B,SAAQT,IAAD,KAAUS,SAAQP;IAP9B;EASV;AACD,MAAMK,uBAAsB;IACxB,IAAIG,QAAQ;AAAE,aAAO,CAAA;IAAK;IAC1BC,SAAS;IACTC,QAAQ;IACR,IAAIC,SAAS;AAAE,aAAO,CAAA;IAAK;IAC3BC,QAAQ;EALgB;AAO5B,MAAMN,WAAU;IACZE,MAAMnH,OAAO;AACT,YAAMmH,SAAQK,KAAKC,MAAMzH,KAAX;AACd,UAAI,CAACe,MAAMiB,QAAQmF,MAAd,GAAsB;AACvB,cAAM,IAAIO,UAAU,gBAAd;MACT;AACD,aAAOP;IACV;IACDC,QAAQpH,OAAO;AACX,aAAO,EAAEA,SAAS,OAAOA,SAAS;IACrC;IACDqH,OAAOrH,OAAO;AACV,aAAOkG,OAAOlG,KAAD;IAChB;IACDsH,OAAOtH,OAAO;AACV,YAAMsH,SAASE,KAAKC,MAAMzH,KAAX;AACf,UAAIsH,WAAW,QAAQ,OAAOA,UAAU,YAAYvG,MAAMiB,QAAQsF,MAAd,GAAuB;AACvE,cAAM,IAAII,UAAU,iBAAd;MACT;AACD,aAAOJ;IACV;IACDC,OAAOvH,OAAO;AACV,aAAOA;IACV;EAvBW;AAyBhB,MAAMkH,WAAU;IACZP,SAASgB;IACTR,OAAOS;IACPN,QAAQM;EAHI;AAKhB,WAASA,WAAU5H,OAAO;AACtB,WAAOwH,KAAKK,UAAU7H,KAAf;EACV;AACD,WAAS2H,aAAY3H,OAAO;AACxB,WAAQ,GAAEA;EACb;AAED,MAAM8H,cAAN,MAAiB;IACbnH,YAAYoH,SAAS;AACjB,WAAKA,UAAUA;IAClB;IACD,WAAWC,aAAa;AACpB,aAAO;IACV;IACD,IAAIC,cAAc;AACd,aAAO,KAAKF,QAAQE;IACvB;IACD,IAAIC,QAAQ;AACR,aAAO,KAAKH,QAAQG;IACvB;IACD,IAAIC,UAAU;AACV,aAAO,KAAKD,MAAMC;IACrB;IACD,IAAI9D,aAAa;AACb,aAAO,KAAK6D,MAAM7D;IACrB;IACD,IAAIL,UAAU;AACV,aAAO,KAAKkE,MAAMlE;IACrB;IACD,IAAIZ,UAAU;AACV,aAAO,KAAK8E,MAAM9E;IACrB;IACD,IAAI4B,OAAO;AACP,aAAO,KAAKkD,MAAMlD;IACrB;IACDoD,aAAa;IAAA;IAEbC,UAAU;IAAA;IAEVC,aAAa;IAAA;IAEbC,SAASC,WAAW;MAAErE,SAAS,KAAKgE;MAASM,SAAS,CAAA;MAAIC,SAAS,KAAKrE;MAAYsE,UAAU;MAAMC,aAAa;IAA7F,IAAsG,CAAA,GAAI;AAC1H,YAAMnC,OAAOiC,SAAU,GAAEA,UAAUF,cAAcA;AACjD,YAAMK,QAAQ,IAAIC,YAAYrC,MAAM;QAAEgC;QAAQE;QAASC;MAAnB,CAAtB;AACdzE,aAAO4E,cAAcF,KAArB;AACA,aAAOA;IACV;EAvCY;AAyCjBf,EAAAA,YAAWkB,YAAY,CAAC7F,0BAAyBY,2BAA0BQ,wBAApD;AACvBuD,EAAAA,YAAW9D,UAAU,CAAA;AACrB8D,EAAAA,YAAW5G,SAAS,CAAA;ACh4Db,MAAM+H,YAAY1B,YACvBA,OACGtH,QAAQ,mBAAmB,OAD9B,EAEGA,QAAQ,WAAW,GAFtB,EAGGQ,YAHH;AAKK,MAAMJ,eAAakH,YAAU;AAClC,WAAOA,OAAOjH,OAAO,CAAd,EAAiBF,YAAjB,IAAiCmH,OAAOhH,MAAM,CAAb;EACzC;ACRD,MAAM2I,iBAAiB,CACrB,cACA,YACA,WACA,cACA,iBACA,iBACA,iBACA,cACA,UACA,cACA,yBACA,UACA,aACA,eACA,MAfqB;AAkBvB,MAAMC,gBAAgB,CACpB,iBACA,eACA,QACA,aACA,YACA,aACA,mBAPoB;AAUtB,MAAMC,gBAAgB,CACpB,eACA,iBACA,kBACA,iBACA,mBACA,YANoB;AAStB,MAAMC,eAAe,CAAC,WAAW,UAAU,qBAAqB,kBAA3C;AAErB,MAAMC,uBAAuB,CAAC,aAAD;AAE7B,MAAMC,cAAc,CAAC,WAAW,WAAW,WAAW,WAAW,KAA7C;AAEb,MAAMC,eAAc,CAAC,aAAa,kBAAkB,YAAhC;AAEpB,MAAMC,UAAU;IACrBlC,QAAQ4B;IACR/B,SAAS8B;IACTQ,MAAMH;IACNpC,OAAOkC;IACPhC,QAAQ+B;IACRO,eAAeL;EANM;AC7ChB,MAAMM,SAAS,CAAC,UAAU,QAAQ,SAAS,eAAe,cAAc,SAAS,eAAe,WAAjF;ACAf,MAAMC,YAAW,CACtB,qBACA,sBACA,QACA,iBACA,SACA,gBACA,YACA,gBACA,cACA,oBACA,iBACA,kBAZsB;ACAjB,MAAMC,UAAU;IACrB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;EA3Be;AA8BvB,MAAMC,gBAAgB,IAAIC,OACxBpI,OAAOK,KAAK6H,OAAZ,EACGG,KAAK,GADR,EAEGhK,QAAQ,IAAI+J,OAAO,OAAO,GAAlB,GAAwB,KAFnC,GAGA,GAJoB;AAOf,MAAME,oBAAqBC,CAAAA,YAAW;AAC3C,WAAOA,QAAOlK,QAAQ8J,eAAgBK,CAAAA,WAAU;AAC9C,aAAON,QAAQM,MAAD;IACf,CAFM;EAGR;MCjCKC,oBAAAA,yBAAAA,aAAAA;;;;;;;;;oCAGS;AACX,aAAKC,SAAS,CAAA;MACf;;;gCAES;AACR,aAAKC,kBAAL;AACA,aAAKC,mBAAL;AACA,aAAKC,uBAAL;AAEA,aAAKC,KAAKC,YAAU,KAAKC,kBAANC,gBAAA,CAAA,GACd,KAAKP,MADS,CAAA;AAInB,aAAKQ,oBAAL;MACD;;;mCAEY;AACX,cAAM9K,QAAQ,KAAK+K,YAAY/K;AAC/B,aAAK0K,GAAGM,QAAR;AACA,aAAKD,YAAY/K,QAAQA;MAC1B;;;0CAEmB;AAClB4J,eAAOxI,QAASyH,WAAU;AACxB,cAAI,KAAKA,KAAL,GAAa;AACf,kBAAMoC,OAAQ,KAAI5K,aAAWwI,KAAD;AAC5B,iBAAKyB,OAAOW,IAAZ,IAAoB,KAAKpC,KAAL,EAAYqC,KAAK,IAAjB;UACrB;QACF,CALD;MAMD;;;2CAEoB;AACnBtJ,eAAOK,KAAKwH,OAAZ,EAAqBrI,QAAS+J,gBAAe;AAC3C,gBAAMC,mBAAmB3B,QAAQ0B,UAAD;AAChCC,2BAAiBhK,QAASiK,CAAAA,YAAW;AACnC,kBAAMC,cAAcrC,UAAUoC,OAAD;AAC7B,gBAAI,KAAKrG,KAAKtB,IAAI4H,WAAd,GAA4B;AAC9B,mBAAKhB,OAAOe,OAAZ,IAAsB,KAAM,IAAGF,YAAT,EAAuBG,WAAvB;YACvB;UACF,CALD;QAMD,CARD;AASA,aAAKC,kBAAL;MACD;;;0CAEmB;AAClB,YAAI,KAAKjB,OAAOkB,mBAAmB;AACjC,eAAKlB,OAAOkB,oBAAoB,KAAKC,oBAAoB,KAAKnB,OAAOkB,iBAArC;AAChC,eAAKlB,OAAOoB,UAAU,CAAC,GAAI,KAAKpB,OAAOoB,WAAW,CAAA,GAAK,KAAKC,SAAST,KAAK,IAAnB,CAAjC;QACvB;AAED,YAAI,KAAKZ,OAAOsB,kBAAkB;AAChC,eAAKtB,OAAOsB,mBAAmB,KAAKH,oBAAoB,KAAKnB,OAAOsB,gBAArC;AAC/B,eAAKtB,OAAOuB,SAAS,CAAC,GAAI,KAAKvB,OAAOuB,UAAU,CAAA,GAAK,KAAKC,QAAQZ,KAAK,IAAlB,CAAhC;QACtB;MACF;;;0CAEmBa,MAAM;AACxB,YAAIhL,MAAMiB,QAAQ+J,IAAd,GAAqB;AACvB,iBAAOA,KAAK7J,IAAK8J,SAAQC,SAASD,GAAD,CAA1B;QACR,OAAM;AACLE,kBAAQhJ,MAAM,oCAAd;AACA,iBAAO,CAAA;QACR;MACF;;;+BAEQwG,MAAM;AACb,cAAMyC,eAAe,KAAK7B,OAAOkB;AACjC,eAAOW,aAAaC,SAAS1C,KAAK2C,OAAL,CAAtB;MACR;;;8BAEO3C,MAAM;AACZ,cAAM4C,cAAc,KAAKhC,OAAOsB;AAChC,eAAOU,YAAYF,SAAS1C,KAAK2C,OAAL,CAArB;MACR;;;+CAEwB;AACvB7C,QAAAA,aAAYpI,QAASmL,gBAAe;AAClC,cAAI,KAAKvH,KAAKtB,IAAI6I,UAAd,GAA2B;AAC7B,iBAAKjC,OAAOiC,UAAZ,IAA0BrC,kBAAkB,KAAKlF,KAAKvB,IAAI8I,UAAd,CAAD;UAC5C;QACF,CAJD;MAKD;;;4CAEqB;AACpB1C,QAAAA,UAASzI,QAAS+G,aAAY;AAC5B,eAAM,GAAEA,eAAR,IAA2B,KAAKuC,GAAGvC,OAAR;QAC5B,CAFD;MAGD;;;8BAEOkD,SAAQ;AACd,eAAO,KAAKrG,KAAKvB,IAAI4H,OAAd;MACR;;;4BAEKA,SAAQ;AACZ,eAAO,KAAKrG,KAAKvB,IAAI4H,OAAd;MACR;;;+BAEQA,SAAQ;AACf,eAAO,EAAE,KAAKrG,KAAKvB,IAAI4H,OAAd,KAAyB,OAAO,KAAKrG,KAAKvB,IAAI4H,OAAd,KAAyB;MACnE;;;6BAEMA,SAAQ;AACb,eAAO7D,KAAKC,MAAM,KAAKzC,KAAKvB,IAAI4H,OAAd,CAAX;MACR;;;8BAEOA,SAAQ;AACd,eAAOY,SAAS,KAAKjH,KAAKvB,IAAI4H,OAAd,CAAD;MAChB;;;qCAEcA,SAAQ;AACrB,cAAMmB,MAAM,KAAKxH,KAAKvB,IAAI4H,OAAd;AACZ,YAAI;AACF,iBAAO7D,KAAKC,MAAM+E,GAAX;QACR,SAAQC,IAAP;AACA,iBAAOD;QACR;MACF;;;sBAEsB;AACrB,eAAQ,KAAKE,qBAAqB,KAAKC,kBAAmB,KAAKxE;MAChE;;;IA3H6BL,WAAAA;mBAA1BuC,mBAAAA,WACa,CAAC,UAAD,CAAA;;;;AfNnB,MAAAuC,kBAAwB;AACxB,MAAAC,aAAuB;AAEvB,MAAO,+BAAP,cAA6B,gBAAU;AAAA,IAMrC,UAAU;AAER,WAAK,SAAS;AAAA,QACZ,GAAG,KAAK;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,UAAU;AAAA,QACV,WAAW;AAAA,MACb;AACA,YAAM,QAAQ;AAAA,IAChB;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AArBE,gBADK,8BACE,WAAU;AAAA,IACf,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;;;AgBVF;AAAA;AAAA;AAAA;AAEA,MAAO,0BAAP,cAA6B,sBAAsB;AAAA,IAMjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,SAAS,EAAE,KAAK,OAAO;AAC5B,WAAK,YAAY;AACjB,WAAK,eAAe;AAAA,QAClB,SAAS,KAAK;AAAA,MAChB;AAAA,IAEF;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,UAAIC,QAAO;AACX,UAAI,cAAc,KAAK,UAAU,MAAM,GAAG;AAC1C,kBAAY,QAAQ,SAAU,aAAaC,QAAO;AAChD,QAAAD,MAAK,aAAa,WAAW,EAAE,KAAKA,KAAI,EAAE;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB;AAClB,wBAAkB,KAAK,MAAM;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,SAAS,OAAO;AACd,UAAI,4BAA4B,EAAE,0BAA0B;AAC5D,UAAI,wBAAwB;AAAA,QAC1B,iBAAiB,EAAE,MAAM,aAAa,EAAE,KAAK,SAAS;AAAA,MACxD;AAEA,gCAA0B,SAAS,QAAQ;AAC3C,UACE,0BAA0B,KAAK,IAAI,KAAK,sBAAsB,KAAK,IAAI,GACvE;AACA,8BAAsB,YAAY,QAAQ;AAAA,MAC5C;AAAA,IACF;AAAA;AAAA,IAGA,OAAO,OAAO;AACZ,UAAI,UAAU,EAAE,MAAM,aAAa,GACnCE,MAAK,QAAQ,KAAK,IAAI,GACtB,YAAY,QAAQ,KAAK,WAAW,GACpC,aAAa,QAAQ,SAAS,UAAU;AAExC,QAAE,eAAe,EAAE,SAAS,QAAQ;AAEpC,UAAI,OAAO,EAAE,IAAI,YAAYA,KAAI;AACjC,UAAG,YAAY;AACb,aAAK,YAAY,QAAQ;AAAA,MAC3B,OAAO;AACL,aAAK,SAAS,QAAQ;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,mBAAmB,OAAO;AACxB,WAAK,aAAa;AAAA,IACpB;AAAA,EAEF;AApEE,gBAFK,yBAEE,UAAS;AAAA,IACd,MAAM;AAAA,EACR;;;ACNF;AAAA;AAAA;AAAA;AAEA,MAAO,gCAAP,cAA6B,WAAW;AAAA,IACtC,YAAY,OAAO;AACjB,QAAE,kBAAkB,EAAE,KAAK,SAASC,QAAO,SAAS;AAClD,YAAI,eAAe,EAAE,OAAO,EAAE,KAAK,aAAa;AAChD,YAAI,oBAAoB,EAAE,iBAAiBA,QAAO,EAAE,KAAK,UAAU;AACnE,YAAG,kBAAkB,IAAI,KAAK,IAAI;AAChC,uBAAa,SAAS,UAAU,EAAE,YAAY,SAAS;AAAA,QACzD,OAAO;AACL,uBAAa,SAAS,SAAS,EAAE,YAAY,UAAU;AAAA,QACzD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;;;ACdA;AAAA;AAAA;AAAA;;;ACgBA,MAAI,gBAAgB,SAASC,IAAGC,IAAG;AACjC,oBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUD,IAAGC,IAAG;AAAE,MAAAD,GAAE,YAAYC;AAAA,IAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,eAASC,MAAKD;AAAG,YAAI,OAAO,UAAU,eAAe,KAAKA,IAAGC,EAAC;AAAG,UAAAF,GAAEE,EAAC,IAAID,GAAEC,EAAC;AAAA,IAAG;AACpG,WAAO,cAAcF,IAAGC,EAAC;AAAA,EAC3B;AAEO,WAAS,UAAUD,IAAGC,IAAG;AAC9B,QAAI,OAAOA,OAAM,cAAcA,OAAM;AACjC,YAAM,IAAI,UAAU,yBAAyB,OAAOA,EAAC,IAAI,+BAA+B;AAC5F,kBAAcD,IAAGC,EAAC;AAClB,aAAS,KAAK;AAAE,WAAK,cAAcD;AAAA,IAAG;AACtC,IAAAA,GAAE,YAAYC,OAAM,OAAO,OAAO,OAAOA,EAAC,KAAK,GAAG,YAAYA,GAAE,WAAW,IAAI,GAAG;AAAA,EACpF;AAEO,MAAIE,YAAW,WAAW;AAC/B,IAAAA,YAAW,OAAO,UAAU,SAASA,UAASC,IAAG;AAC7C,eAASC,IAAGC,KAAI,GAAGC,KAAI,UAAU,QAAQD,KAAIC,IAAGD,MAAK;AACjD,QAAAD,KAAI,UAAUC,EAAC;AACf,iBAASJ,MAAKG;AAAG,cAAI,OAAO,UAAU,eAAe,KAAKA,IAAGH,EAAC;AAAG,YAAAE,GAAEF,EAAC,IAAIG,GAAEH,EAAC;AAAA,MAC/E;AACA,aAAOE;AAAA,IACX;AACA,WAAOD,UAAS,MAAM,MAAM,SAAS;AAAA,EACvC;AA6KO,WAAS,cAAcK,KAAIC,OAAM,MAAM;AAC5C,QAAI,QAAQ,UAAU,WAAW;AAAG,eAASC,KAAI,GAAGC,KAAIF,MAAK,QAAQ,IAAIC,KAAIC,IAAGD,MAAK;AACjF,YAAI,MAAM,EAAEA,MAAKD,QAAO;AACpB,cAAI,CAAC;AAAI,iBAAK,MAAM,UAAU,MAAM,KAAKA,OAAM,GAAGC,EAAC;AACnD,aAAGA,EAAC,IAAID,MAAKC,EAAC;AAAA,QAClB;AAAA,MACJ;AACA,WAAOF,IAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAKC,KAAI,CAAC;AAAA,EACzD;;;MCnMaG;MCfPC;MCRFC;MA6FSC;MCiDFC;MC4BPC;MAWAC;MAEEC;MCxLKC;MCFEC,IAAY,CAAlB;MACMC,IAAY,CAAA;MACZC,IAAqB;ANOlBC,WAAAA,EAAOC,IAAKC,IAAAA;AAE3B,aAASN,MAAKM;AAAOD,MAAAA,GAAIL,EAAAA,IAAKM,GAAMN,EAAAA;AACpC,WAA6BK;EAC7B;AAQM,WAASE,EAAWC,IAAAA;AAC1B,QAAIC,KAAaD,GAAKC;AAClBA,IAAAA,MAAYA,GAAWC,YAAYF,EAAAA;EACvC;AEXM,WAASG,GAAcC,IAAMN,IAAOO,IAAAA;AAC1C,QACCC,IACAC,IACAf,IAHGgB,KAAkB,CAAA;AAItB,SAAKhB,MAAKM;AACA,eAALN,KAAYc,KAAMR,GAAMN,EAAAA,IACd,SAALA,KAAYe,KAAMT,GAAMN,EAAAA,IAC5BgB,GAAgBhB,EAAAA,IAAKM,GAAMN,EAAAA;AAUjC,QAPIiB,UAAUC,SAAS,MACtBF,GAAgBH,WACfI,UAAUC,SAAS,IAAI1B,EAAM2B,KAAKF,WAAW,CAAA,IAAKJ,KAKjC,cAAA,OAARD,MAA2C,QAArBA,GAAKQ;AACrC,WAAKpB,MAAKY,GAAKQ;AAAAA,mBACVJ,GAAgBhB,EAAAA,MACnBgB,GAAgBhB,EAAAA,IAAKY,GAAKQ,aAAapB,EAAAA;AAK1C,WAAOqB,EAAYT,IAAMI,IAAiBF,IAAKC,IAAK,IAAA;EACpD;AAAA,WAceM,EAAYT,IAAMN,IAAOQ,IAAKC,IAAKO,IAAAA;AAGlD,QAAMC,KAAQ,EACbX,MAAAA,IACAN,OAAAA,IACAQ,KAAAA,IACAC,KAAAA,IACAS,KAAW,MACXC,IAAS,MACTC,KAAQ,GACRC,KAAM,MAKNC,KAAAA,QACAC,KAAY,MACZC,KAAY,MACZC,aAAAA,QACAC,KAAuB,QAAZV,KAAAA,EAAqB5B,IAAU4B,GAAAA;AAM3C,WAFgB,QAAZA,MAAqC,QAAjB7B,EAAQ8B,SAAe9B,EAAQ8B,MAAMA,EAAAA,GAEtDA;EACP;AAEM,WAASU,IAAAA;AACf,WAAO,EAAEC,SAAS,KAAA;EAClB;AAEM,WAASC,EAAS7B,IAAAA;AACxB,WAAOA,GAAMO;EACb;AC7EM,WAASuB,EAAUC,IAAKC,IAAUC,IAAUC,IAAOC,IAAAA;AACzD,QAAIzC;AAEJ,SAAKA,MAAKuC;AACC,qBAANvC,MAA0B,UAANA,MAAiBA,MAAKsC,MAC7CI,EAAYL,IAAKrC,IAAG,MAAMuC,GAASvC,EAAAA,GAAIwC,EAAAA;AAIzC,SAAKxC,MAAKsC;AAENG,MAAAA,MAAiC,cAAA,OAAfH,GAAStC,EAAAA,KACvB,eAANA,MACM,UAANA,MACM,YAANA,MACM,cAANA,MACAuC,GAASvC,EAAAA,MAAOsC,GAAStC,EAAAA,KAEzB0C,EAAYL,IAAKrC,IAAGsC,GAAStC,EAAAA,GAAIuC,GAASvC,EAAAA,GAAIwC,EAAAA;EAGhD;AAED,WAASG,EAASC,IAAO9B,IAAK+B,IAAAA;AACd,YAAX/B,GAAI,CAAA,IACP8B,GAAMF,YAAY5B,IAAc,QAAT+B,KAAgB,KAAKA,EAAAA,IAE5CD,GAAM9B,EAAAA,IADa,QAAT+B,KACG,KACa,YAAA,OAATA,MAAqB1C,EAAmB2C,KAAKhC,EAAAA,IACjD+B,KAEAA,KAAQ;EAEtB;AAAA,WAUeH,EAAYL,IAAKU,IAAMF,IAAOG,IAAUR,IAAAA;AAAAA,QACnDS;AAEJC;AAAG,UAAa,YAATH;AACN,YAAoB,YAAA,OAATF;AACVR,UAAAA,GAAIO,MAAMO,UAAUN;aACd;AAKN,cAJuB,YAAA,OAAZG,OACVX,GAAIO,MAAMO,UAAUH,KAAW,KAG5BA;AACH,iBAAKD,MAAQC;AACNH,cAAAA,MAASE,MAAQF,MACtBF,EAASN,GAAIO,OAAOG,IAAM,EAAA;AAK7B,cAAIF;AACH,iBAAKE,MAAQF;AACPG,cAAAA,MAAYH,GAAME,EAAAA,MAAUC,GAASD,EAAAA,KACzCJ,EAASN,GAAIO,OAAOG,IAAMF,GAAME,EAAAA,CAAAA;QAInC;eAGmB,QAAZA,GAAK,CAAA,KAA0B,QAAZA,GAAK,CAAA;AAChCE,QAAAA,KAAaF,QAAUA,KAAOA,GAAKK,QAAQ,YAAY,EAAA,IAGxBL,KAA3BA,GAAKM,YAAAA,KAAiBhB,KAAYU,GAAKM,YAAAA,EAAc7D,MAAM,CAAA,IACnDuD,GAAKvD,MAAM,CAAA,GAElB6C,GAALiB,MAAqBjB,GAAGiB,IAAc,CAAA,IACtCjB,GAAAiB,EAAeP,KAAOE,EAAAA,IAAcJ,IAEhCA,KACEG,MAEJX,GAAIkB,iBAAiBR,IADLE,KAAaO,IAAoBC,GACbR,EAAAA,IAIrCZ,GAAIqB,oBAAoBX,IADRE,KAAaO,IAAoBC,GACVR,EAAAA;eAErB,8BAATF,IAAoC;AAC9C,YAAIP;AAIHO,UAAAA,KAAOA,GAAKK,QAAQ,eAAe,GAAA,EAAKA,QAAQ,UAAU,GAAA;iBAEjD,YAATL,MACS,aAATA,MACS,WAATA,MACS,WAATA,MACS,WAATA,MAGS,eAATA,MACS,eAATA,MACAA,MAAQV;AAER,cAAA;AACCA,YAAAA,GAAIU,EAAAA,IAAiB,QAATF,KAAgB,KAAKA;AAEjC,kBAAMK;UACK,SAAHS,IAAP;UAAU;AAUQ,sBAAA,OAAVd,OAES,QAATA,MAAAA,UAAkBA,MAAAA,MAAmBE,GAAKa,QAAQ,GAAA,IAG5DvB,GAAIwB,gBAAgBd,EAAAA,IAFpBV,GAAIyB,aAAaf,IAAMF,EAAAA;MAIxB;EACD;AASD,WAASY,EAAWE,IAAAA;AACnB/D,QAAAA;AACA,QAAA;AACC,aAAOmE,KAAAT,EAAgBK,GAAE/C,OAAAA,KAAO,EAC/BnB,EAAQuE,QAAQvE,EAAQuE,MAAML,EAAAA,IAAKA,EAAAA;IAIpC,UAND;AAKC/D,UAAAA;IACA;EACD;AAED,WAAS4D,EAAkBG,IAAAA;AAC1B/D,QAAAA;AACA,QAAA;AACC,aAAuB+D,KAAAA,EAAAA,GAAE/C,OAAAA,IAAO,EAAMnB,EAAQuE,QAAQvE,EAAQuE,MAAML,EAAAA,IAAKA,EAAAA;IAGzE,UAJD;AAGC/D,UAAAA;IACA;EACD;AC7JeqE,WAAAA,GAAU3D,IAAO4D,IAAAA;AAChCH,SAAKzD,QAAQA,IACbyD,KAAKG,UAAUA;EACf;AA0EM,WAASC,GAAc5C,IAAO6C,IAAAA;AACpC,QAAkB,QAAdA;AAEH,aAAO7C,GAAAE,KACJ0C,GAAc5C,GAAeA,IAAAA,GAAAA,GAAwBqC,IAAAA,QAAQrC,EAAAA,IAAS,CAAA,IACtE;AAIJ,aADI8C,IACGD,KAAa7C,GAAKC,IAAWN,QAAQkD;AAG3C,UAAe,SAFfC,KAAU9C,GAAKC,IAAW4C,EAAAA,MAEa,QAAhBC,GAAO1C;AAI7B,eAAO0C,GAAP1C;AASF,WAA4B,cAAA,OAAdJ,GAAMX,OAAqBuD,GAAc5C,EAAAA,IAAS;EAChE;AAsCD,WAAS+C,EAAwB/C,IAAAA;AAAjC,QAGWvB,IACJuE;AAHN,QAA+B,SAA1BhD,KAAQA,GAAAA,OAA8C,QAApBA,GAAKM,KAAqB;AAEhE,WADAN,GAAAA,MAAaA,GAAAA,IAAiBiD,OAAO,MAC5BxE,KAAI,GAAGA,KAAIuB,GAAAC,IAAgBN,QAAQlB;AAE3C,YAAa,SADTuE,KAAQhD,GAAAA,IAAgBvB,EAAAA,MACO,QAAduE,GAAAA,KAAoB;AACxChD,UAAAA,GAAAA,MAAaA,GAAAM,IAAiB2C,OAAOD,GAAAA;AACrC;QACA;AAGF,aAAOD,EAAwB/C,EAAAA;IAC/B;EACD;AAuBD,WAASkD,EAAMC,IAAAA;AACV9E,QACH+E,WAAWD,EAAAA,IAEX3E,EAAU2E,EAAAA;EAEX;AAMeE,WAAAA,EAAcC,IAAAA;AAAAA,KAAAA,CAE1BA,GAAAA,QACAA,GAACjD,MAAAA,SACF/B,EAAciF,KAAKD,EAAAA,KAAAA,CAClBE,GAAAC,SACFlF,MAAiBL,EAAQwF,wBAEzBnF,IAAeL,EAAQwF,sBACNR,GAAOM,EAAAA;EAEzB;AAGD,WAASA,KAAAA;AAAT,QACKF,IAMEK,IArGkBC,IAMnBC,IACEC,IANH9D,IACH+D,IACAC;AAgGD,SAHA1F,EAAc2F,KAAK,SAACC,IAAGC,IAAAA;AAAJ,aAAUD,GAACzD,IAAAA,MAAiB0D,GAAlB1D,IAAAN;IAAV,CAAA,GAGXmD,KAAIhF,EAAc8F,MAAAA;AACrBd,MAAAA,GAAAA,QACCK,KAAoBrF,EAAcqB,QA/FnCkE,KAAAA,QACEC,KAAAA,QALNC,MADG/D,MADoB4D,KAsGNN,IAAAA,KApGXlD,MACN4D,KAAYJ,GAAHS,SAGLR,KAAc,CAAA,IACZC,KAAWjF,EAAO,CAAA,GAAImB,EAAAA,GAC5BS,MAAqBT,GAAAS,MAAkB,GAEvC6D,EACCN,IACAhE,IACA8D,IACAF,GACAI,KAAAA,WAAAA,GAAUO,iBACU,QAApBvE,GAAAO,MAA2B,CAACwD,EAAAA,IAAU,MACtCF,IACU,QAAVE,KAAiBnB,GAAc5C,EAAAA,IAAS+D,IACxC/D,GATDO,GAAAA,GAWAiE,EAAWX,IAAa7D,EAAAA,GAEpBA,GAAAI,OAAc2D,MACjBhB,EAAwB/C,EAAAA,IA+EpB1B,EAAcqB,SAASgE,MAI1BrF,EAAc2F,KAAK,SAACC,IAAGC,IAAAA;AAAMD,eAAAA,GAAAzD,IAAAN,MAAkBgE,GAA5B1D,IAAAN;MAAA,CAAA;AAItBqD,IAAAA,GAAAA,MAAyB;EACzB;AGjNM,WAASiB,EACfT,IACAU,IACAC,IACAC,IACAC,IACA5D,IACA6D,IACAjB,IACAE,IACAgB,IAAAA;AAVM,QAYFtG,IAAGuG,IAAGlB,IAAUmB,IAAYC,IAAQC,IAAeC,IAInDC,KAAeT,MAAkBA,GAAnB3E,OAAgDtB,GAE9D2G,KAAoBD,GAAY1F;AAGpC,SADAgF,GAAA1E,MAA2B,CAAA,GACtBxB,KAAI,GAAGA,KAAIiG,GAAa/E,QAAQlB;AAgDpC,UAAkB,SA5CjBwG,KAAaN,GAAA1E,IAAyBxB,EAAAA,IADrB,SAFlBwG,KAAaP,GAAajG,EAAAA,MAEqB,aAAA,OAAdwG,KACW,OAMtB,YAAA,OAAdA,MACc,YAAA,OAAdA,MAEc,YAAA,OAAdA,KAEoCnF,EAC1C,MACAmF,IACA,MACA,MACAA,EAAAA,IAESM,MAAMC,QAAQP,EAAAA,IACmBnF,EAC1Cc,GACA,EAAEtB,UAAU2F,GAAAA,GACZ,MACA,MACA,IAAA,IAESA,GAAA9E,MAAoB,IAKaL,EAC1CmF,GAAW5F,MACX4F,GAAWlG,OACXkG,GAAW1F,KACX0F,GAAWzF,MAAMyF,GAAWzF,MAAM,MAClCyF,GALqDxE,GAAAA,IAQXwE,KAK5C;AAaA,YATAA,GAAA/E,KAAqByE,IACrBM,GAAU9E,MAAUwE,GAAAxE,MAAwB,GAS9B,UAHd2D,KAAWuB,GAAY5G,EAAAA,MAIrBqF,MACAmB,GAAW1F,OAAOuE,GAASvE,OAC3B0F,GAAW5F,SAASyE,GAASzE;AAE9BgG,UAAAA,GAAY5G,EAAAA,IAAAA;;AAIZ,eAAKuG,KAAI,GAAGA,KAAIM,IAAmBN,MAAK;AAIvC,iBAHAlB,KAAWuB,GAAYL,EAAAA,MAKtBC,GAAW1F,OAAOuE,GAASvE,OAC3B0F,GAAW5F,SAASyE,GAASzE,MAC5B;AACDgG,cAAAA,GAAYL,EAAAA,IAAAA;AACZ;YACA;AACDlB,YAAAA,KAAW;UACX;AAMFQ,UACCN,IACAiB,IALDnB,KAAWA,MAAYpF,GAOtBmG,IACA5D,IACA6D,IACAjB,IACAE,IACAgB,EAAAA,GAGDG,KAASD,GAAH7E,MAED4E,KAAIC,GAAWzF,QAAQsE,GAAStE,OAAOwF,OACtCI,OAAMA,KAAO,CAAA,IACdtB,GAAStE,OAAK4F,GAAK7B,KAAKO,GAAStE,KAAK,MAAMyF,EAAAA,GAChDG,GAAK7B,KAAKyB,IAAGC,GAAAA,OAAyBC,IAAQD,EAAAA,IAGjC,QAAVC,MACkB,QAAjBC,OACHA,KAAgBD,KAIU,cAAA,OAAnBD,GAAW5F,QAClB4F,GAAAhF,QAAyB6D,GAF1B7D,MAICgF,GAAA5E,MAAsB0D,KAAS0B,EAC9BR,IACAlB,IACAC,EAAAA,IAGDD,KAAS2B,EACR1B,IACAiB,IACAnB,IACAuB,IACAH,IACAnB,EAAAA,GAIgC,cAAA,OAAvBY,GAAetF,SAQzBsF,GAAAtE,MAA0B0D,OAG3BA,MACAD,GAAQ1D,OAAS2D,MACjBA,GAAO7E,cAAc8E,OAIrBD,KAASnB,GAAckB,EAAAA;MAtGvB;AA6GF,SAHAa,GAAAvE,MAAsB+E,IAGjB1G,KAAI6G,IAAmB7G;AACL,cAAlB4G,GAAY5G,EAAAA,MAEgB,cAAA,OAAvBkG,GAAetF,QACC,QAAvBgG,GAAY5G,EAAAA,EAAZ2B,OACAiF,GAAY5G,EAAAA,EAAAA,OAAWkG,GAAvBtE,QAKAsE,GAActE,MAAYsF,EAAWf,EAAAA,EAAgBgB,cAGtDC,EAAQR,GAAY5G,EAAAA,GAAI4G,GAAY5G,EAAAA,CAAAA;AAKtC,QAAI2G;AACH,WAAK3G,KAAI,GAAGA,KAAI2G,GAAKzF,QAAQlB;AAC5BqH,UAASV,GAAK3G,EAAAA,GAAI2G,GAAAA,EAAO3G,EAAAA,GAAI2G,GAAAA,EAAO3G,EAAAA,CAAAA;EAGtC;AAED,WAASgH,EAAgBR,IAAYlB,IAAQC,IAAAA;AAI5C,aACKhE,IAHDsD,KAAI2B,GAAAA,KACJc,KAAM,GACHzC,MAAKyC,KAAMzC,GAAE3D,QAAQoG;AAAAA,OACvB/F,KAAQsD,GAAEyC,EAAAA,OAMb/F,GAAAE,KAAgB+E,IAGflB,KADwB,cAAA,OAAd/D,GAAMX,OACPoG,EAAgBzF,IAAO+D,IAAQC,EAAAA,IAE/B0B,EAAW1B,IAAWhE,IAAOA,IAAOsD,IAAGtD,GAA7BI,KAAyC2D,EAAAA;AAK/D,WAAOA;EACP;AAAA,WAQeiC,EAAa1G,IAAU2G,IAAAA;AAUtC,WATAA,KAAMA,MAAO,CAAA,GACG,QAAZ3G,MAAuC,aAAA,OAAZA,OACpBiG,MAAMC,QAAQlG,EAAAA,IACxBA,GAAS4G,KAAK,SAAAlD,IAAAA;AACbgD,QAAahD,IAAOiD,EAAAA;IACpB,CAAA,IAEDA,GAAI1C,KAAKjE,EAAAA,IAEH2G;EACP;AAED,WAASP,EACR1B,IACAiB,IACAnB,IACAuB,IACAH,IACAnB,IAAAA;AAND,QAQKoC,IAuBGC,IAAiBpB;AAtBxB,QAAA,WAAIC,GAAA5E;AAIH8F,MAAAA,KAAUlB,GAAV5E,KAMA4E,GAAU5E,MAAAA;aAEE,QAAZyD,MACAoB,MAAUnB,MACW,QAArBmB,GAAOhG;AAEPmH;AAAO,YAAc,QAAVtC,MAAkBA,GAAO7E,eAAe8E;AAClDA,UAAAA,GAAUsC,YAAYpB,EAAAA,GACtBiB,KAAU;aACJ;AAEN,eACKC,KAASrC,IAAQiB,KAAI,IACxBoB,KAASA,GAAOR,gBAAgBZ,KAAIK,GAAY1F,QACjDqF,MAAK;AAEL,gBAAIoB,MAAUlB;AACb,oBAAMmB;AAGRrC,UAAAA,GAAUuC,aAAarB,IAAQnB,EAAAA,GAC/BoC,KAAUpC;QACV;AAYF,WAAA,WANIoC,KACMA,KAEAjB,GAAOU;EAIjB;AAKD,WAASD,EAAW3F,IAAAA;AAApB,QAMWvB,IACJuE,IAECwD;AARP,QAAkB,QAAdxG,GAAMX,QAAsC,YAAA,OAAfW,GAAMX;AACtC,aAAOW,GACPI;AAED,QAAIJ,GAAiBC;AACpB,WAASxB,KAAIuB,GAAKC,IAAWN,SAAS,GAAGlB,MAAK,GAAGA;AAEhD,aADIuE,KAAQhD,GAAKC,IAAWxB,EAAAA,OAEvB+H,KAAUb,EAAW3C,EAAAA;AAExB,iBAAOwD;;AAMX,WACA;EAAA;ACtUelC,WAAAA,EACfN,IACAyC,IACA3C,IACAe,IACA5D,IACA6D,IACAjB,IACAE,IACAgB,IAAAA;AATeT,QAWXyB,IAoBEzC,IAAGoD,IAAO1F,IAAU2F,IAAUC,IAAUC,IACxC9F,IAKA+F,IACAC,IAmGOtI,IA2BPuI,IACHC,IASSxI,IA6BNiG,IA/LLwC,KAAUT,GAASpH;AAIpB,QAAA,WAAIoH,GAASjG;AAA2B,aAAA;AAGb,YAAvBsD,GAAAvD,QACHwE,KAAcjB,GAAHvD,KACXwD,KAAS0C,GAAArG,MAAgB0D,GAAhB1D,KAETqG,GAAAlG,MAAsB,MACtBuE,KAAoB,CAACf,EAAAA,KAGjBgC,KAAM7H,EAAAA,QAAgB6H,GAAIU,EAAAA;AAE/B,QAAA;AACCJ;AAAO,YAAsB,cAAA,OAAXa,IAAuB;AA6DxC,cA3DInG,KAAW0F,GAAS1H,OAKpB+H,MADJf,KAAMmB,GAAQC,gBACQtC,GAAckB,GAApCzF,GAAAA,GACIyG,KAAmBhB,KACpBe,KACCA,GAAS/H,MAAMuC,QACfyE,GAHsB7F,KAIvB2E,IAGCf,GAAqBxD,MAExBuG,MADAvD,KAAImD,GAAQnG,MAAcwD,GAA1BxD,KAC4BJ,KAAwBoD,GACpD8D,OAEI,eAAeF,MAAWA,GAAQG,UAAUC,SAE/Cb,GAAQnG,MAAcgD,KAAI,IAAI4D,GAAQnG,IAAUgG,EAAAA,KAGhDN,GAAAnG,MAAsBgD,KAAI,IAAIZ,GAAU3B,IAAUgG,EAAAA,GAClDzD,GAAE9C,cAAc0G,IAChB5D,GAAEgE,SAASC,IAERT,MAAUA,GAASU,IAAIlE,EAAAA,GAE3BA,GAAEvE,QAAQgC,IACLuC,GAAEmE,UAAOnE,GAAEmE,QAAQ,CAAA,IACxBnE,GAAEX,UAAUoE,IACZzD,GAAAA,MAAmBuB,IACnB6B,KAAQpD,GAAAjD,MAAAA,MACRiD,GAAC/C,MAAoB,CAAA,GACrB+C,GAAAoE,MAAoB,CAAA,IAID,QAAhBpE,GAAAqE,QACHrE,GAAAqE,MAAerE,GAAEmE,QAGsB,QAApCP,GAAQU,6BACPtE,GAACqE,OAAerE,GAAEmE,UACrBnE,GAACqE,MAAc9I,EAAO,CAAA,GAAIyE,GAC1BqE,GAAAA,IAED9I,EACCyE,GACA4D,KAAAA,GAAQU,yBAAyB7G,IAAUuC,GAFtCqE,GAAAA,CAAAA,IAMP3G,KAAWsC,GAAEvE,OACb4H,KAAWrD,GAAEmE,OACbnE,GAAA7C,MAAWgG,IAGPC;AAEkC,oBAApCQ,GAAQU,4BACgB,QAAxBtE,GAAEuE,sBAEFvE,GAAEuE,mBAAAA,GAGwB,QAAvBvE,GAAEwE,qBACLxE,GAAA/C,IAAmBgD,KAAKD,GAAEwE,iBAAAA;eAErB;AASN,gBAPqC,QAApCZ,GAAQU,4BACR7G,OAAaC,MACkB,QAA/BsC,GAAEyE,6BAEFzE,GAAEyE,0BAA0BhH,IAAUgG,EAAAA,GAAAA,CAIpCzD,GACDA,OAA2B,QAA3BA,GAAE0E,yBAAAA,UACF1E,GAAE0E,sBACDjH,IACAuC,GACAyD,KAAAA,EAAAA,KAEFN,GAAAA,QAAuB3C,GARxBrD,KASE;AAiBD,mBAfIgG,GAAQhG,QAAeqD,GAA3BrD,QAKC6C,GAAEvE,QAAQgC,IACVuC,GAAEmE,QAAQnE,GACVA,KAAAA,GAAAjD,MAAAA,QAEDoG,GAAArG,MAAgB0D,GAAhB1D,KACAqG,GAAQxG,MAAa6D,GACrB2C,KAAAA,GAAAxG,IAAmBgI,QAAQ,SAAAjI,IAAAA;AACtBA,gBAAAA,OAAOA,GAAAE,KAAgBuG;cAC3B,CAAA,GAEQhI,KAAI,GAAGA,KAAI6E,GAAAoE,IAAkB/H,QAAQlB;AAC7C6E,gBAAAA,GAAC/C,IAAkBgD,KAAKD,GAAAoE,IAAkBjJ,EAAAA,CAAAA;AAE3C6E,cAAAA,GAACoE,MAAmB,CAAA,GAEhBpE,GAAA/C,IAAmBZ,UACtBkE,GAAYN,KAAKD,EAAAA;AAGlB,oBAAM+C;YACN;AAE4B,oBAAzB/C,GAAE4E,uBACL5E,GAAE4E,oBAAoBnH,IAAUuC,GAAcyD,KAAAA,EAAAA,GAGnB,QAAxBzD,GAAE6E,sBACL7E,GAAC/C,IAAkBgD,KAAK,WAAA;AACvBD,cAAAA,GAAE6E,mBAAmBnH,IAAU2F,IAAUC,EAAAA;YACzC,CAAA;UAEF;AAQD,cANAtD,GAAEX,UAAUoE,IACZzD,GAAEvE,QAAQgC,IACVuC,GAACe,MAAcL,IAEXgD,KAAa9I,EAAjBuF,KACCwD,KAAQ,GACL,eAAeC,MAAWA,GAAQG,UAAUC,QAAQ;AAQvD,iBAPAhE,GAAEmE,QAAQnE,GACVA,KAAAA,GAAAjD,MAAAA,OAEI2G,MAAYA,GAAWP,EAAAA,GAE3BV,KAAMzC,GAAEgE,OAAOhE,GAAEvE,OAAOuE,GAAEmE,OAAOnE,GAAEX,OAAAA,GAE1BlE,KAAI,GAAGA,KAAI6E,GAACoE,IAAiB/H,QAAQlB;AAC7C6E,cAAAA,GAAC/C,IAAkBgD,KAAKD,GAAAoE,IAAkBjJ,EAAAA,CAAAA;AAE3C6E,YAAAA,GAACoE,MAAmB,CAAA;UACpB;AACA,eAAA;AACCpE,cAAAA,GAAAjD,MAAAA,OACI2G,MAAYA,GAAWP,EAAAA,GAE3BV,KAAMzC,GAAEgE,OAAOhE,GAAEvE,OAAOuE,GAAEmE,OAAOnE,GAAEX,OAAAA,GAGnCW,GAAEmE,QAAQnE,GACVqE;YAAAA,SAAQrE,GAAAjD,OAAAA,EAAc4G,KAAQ;AAIhC3D,UAAAA,GAAEmE,QAAQnE,GAAVqE,KAEyB,QAArBrE,GAAE8E,oBACLvD,KAAgBhG,EAAOA,EAAO,CAAA,GAAIgG,EAAAA,GAAgBvB,GAAE8E,gBAAAA,CAAAA,IAGhD1B,MAAsC,QAA7BpD,GAAE+E,4BACfzB,KAAWtD,GAAE+E,wBAAwBrH,IAAU2F,EAAAA,IAK5CjC,KADI,QAAPqB,MAAeA,GAAI1G,SAASuB,KAAuB,QAAXmF,GAAIxG,MACLwG,GAAIhH,MAAMO,WAAWyG,IAE7DtB,EACCT,IACAuB,MAAMC,QAAQd,EAAAA,IAAgBA,KAAe,CAACA,EAAAA,GAC9C+B,IACA3C,IACAe,IACA5D,IACA6D,IACAjB,IACAE,IACAgB,EAAAA,GAGDzB,GAAEL,OAAOwD,GAGTA,KAAAA,GAAAlG,MAAsB,MAElB+C,GAAA/C,IAAmBZ,UACtBkE,GAAYN,KAAKD,EAAAA,GAGduD,OACHvD,GAAC8D,MAAiB9D,GAAApD,KAAyB,OAG5CoD,GAAClD,MAAAA;QACD;AACqB,kBAArB0E,MACA2B,GAAAhG,QAAuBqD,GAAvBrD,OAEAgG,GAAAxG,MAAqB6D,GAArB7D,KACAwG,GAAQrG,MAAQ0D,GAChB1D,OACAqG,GAAQrG,MAAQkI,EACfxE,GACA2C,KAAAA,IACA3C,IACAe,IACA5D,IACA6D,IACAjB,IACAkB,EAAAA;AAAAA,OAIGgB,KAAM7H,EAAQqK,WAASxC,GAAIU,EAAAA;IAYhC,SAXQrE,IAAP;AACDqE,MAAAA,GAAAhG,MAAqB,OAEjBsE,MAAoC,QAArBD,QAClB2B,GAAArG,MAAgB2D,IAChB0C,GAAQlG,MAAAA,CAAAA,CAAgBwE,IACxBD,GAAkBA,GAAkBzC,QAAQ0B,EAAAA,CAAAA,IAAW,OAIxD7F,EAAAkC,IAAoBgC,IAAGqE,IAAU3C,EAAAA;IACjC;EACD;AAOeU,WAAAA,EAAWX,IAAa2E,IAAAA;AACnCtK,MAAJoC,OAAqBpC,EAAOoC,IAASkI,IAAM3E,EAAAA,GAE3CA,GAAYqC,KAAK,SAAA5C,IAAAA;AAChB,UAAA;AAECO,QAAAA,KAAcP,GAAH/C,KACX+C,GAAA/C,MAAqB,CAAA,GACrBsD,GAAYqC,KAAK,SAAA/C,IAAAA;AAEhBA,UAAAA,GAAGvD,KAAK0D,EAAAA;QACR,CAAA;MAGD,SAFQlB,IAAP;AACDlE,UAAOkC,IAAagC,IAAGkB,GACvB7C,GAAAA;MAAA;IACD,CAAA;EACD;AAgBD,WAAS6H,EACRxH,IACA2F,IACA3C,IACAe,IACA5D,IACA6D,IACAjB,IACAkB,IAAAA;AARD,QAoBS/B,IAsDHyF,IACAC,IAjED1H,KAAW8C,GAAS/E,OACpBgC,KAAW0F,GAAS1H,OACpB4J,KAAWlC,GAASpH,MACpBZ,KAAI;AAKR,QAFiB,UAAbkK,OAAoB1H,KAAAA,OAEC,QAArB6D;AACH,aAAOrG,KAAIqG,GAAkBnF,QAAQlB;AAMpC,aALMuE,KAAQ8B,GAAkBrG,EAAAA,MAO/B,kBAAkBuE,MAAAA,CAAAA,CAAY2F,OAC7BA,KAAW3F,GAAM4F,cAAcD,KAA8B,MAAnB3F,GAAM2F,WAChD;AACD7H,UAAAA,KAAMkC,IACN8B,GAAkBrG,EAAAA,IAAK;AACvB;QACA;;AAIH,QAAW,QAAPqC,IAAa;AAChB,UAAiB,SAAb6H;AAEH,eAAOE,SAASC,eAAe/H,EAAAA;AAI/BD,MAAAA,KADGG,KACG4H,SAASE,gBACd,8BAEAJ,EAAAA,IAGKE,SAASzJ,cAEduJ,IACA5H,GAASiI,MAAMjI,EAAAA,GAKjB+D,KAAoB,MAEpBC,KAAAA;IACA;AAED,QAAiB,SAAb4D;AAEC3H,MAAAA,OAAaD,MAAcgE,MAAejE,GAAImI,SAASlI,OAC1DD,GAAImI,OAAOlI;SAEN;AAWN,UATA+D,KAAoBA,MAAqB7G,EAAM2B,KAAKkB,GAAIoI,UAAAA,GAIpDT,MAFJzH,KAAW8C,GAAS/E,SAASL,GAENyK,yBACnBT,KAAU3H,GAASoI,yBAAAA,CAIlBpE,IAAa;AAGjB,YAAyB,QAArBD;AAEH,eADA9D,KAAW,CAAX,GACKvC,KAAI,GAAGA,KAAIqC,GAAIsI,WAAWzJ,QAAQlB;AACtCuC,YAAAA,GAASF,GAAIsI,WAAW3K,EAAAA,EAAG+C,IAAAA,IAAQV,GAAIsI,WAAW3K,EAAAA,EAAG6C;AAAAA,SAInDoH,MAAWD,QAGZC,OACED,MAAWC,GAAAW,UAAkBZ,GAA/BY,UACAX,GAAOW,WAAYvI,GAAIwI,eAExBxI,GAAIwI,YAAaZ,MAAWA,GAAJW,UAAuB;MAGjD;AAKD,UAHAxI,EAAUC,IAAKC,IAAUC,IAAUC,IAAO8D,EAAAA,GAGtC2D;AACHjC,QAAAA,GAAAxG,MAAqB,CAAA;eAErBxB,KAAIgI,GAAS1H,MAAMO,UACnBmF,EACC3D,IACAyE,MAAMC,QAAQ/G,EAAAA,IAAKA,KAAI,CAACA,EAAAA,GACxBgI,IACA3C,IACAe,IACA5D,MAAsB,oBAAb0H,IACT7D,IACAjB,IACAiB,KACGA,GAAkB,CAAA,IAClBhB,GAAA7D,OAAsB2C,GAAckB,IAAU,CAAA,GACjDiB,EAAAA,GAIwB,QAArBD;AACH,aAAKrG,KAAIqG,GAAkBnF,QAAQlB;AACN,kBAAxBqG,GAAkBrG,EAAAA,KAAYO,EAAW8F,GAAkBrG,EAAAA,CAAAA;AAM7DsG,MAAAA,OAEH,WAAWhE,MAAAA,YACVtC,KAAIsC,GAASO,WAKb7C,OAAMqC,GAAIQ,SACI,eAAbqH,MAAAA,CAA4BlK,MAIf,aAAbkK,MAAyBlK,OAAMuC,GAASM,UAE1CH,EAAYL,IAAK,SAASrC,IAAGuC,GAASM,OAAAA,KAAO,GAG7C,aAAaP,MAAAA,YACZtC,KAAIsC,GAASwI,YACd9K,OAAMqC,GAAIyI,WAEVpI,EAAYL,IAAK,WAAWrC,IAAGuC,GAASuI,SAAAA,KAAS;IAGnD;AAED,WAAOzI;EACP;AAQegF,WAAAA,EAAStG,IAAK8B,IAAOtB,IAAAA;AACpC,QAAA;AACmB,oBAAA,OAAPR,KAAmBA,GAAI8B,EAAAA,IAC7B9B,GAAImB,UAAUW;IAGnB,SAFQc,IAAP;AACDlE,QAAAkC,IAAoBgC,IAAGpC,EAAAA;IACvB;EACD;AAUM,WAAS6F,EAAQ7F,IAAOwJ,IAAaC,IAAAA;AAArC,QACFC,IAuBMjL;AAdV,QARIP,EAAQ2H,WAAS3H,EAAQ2H,QAAQ7F,EAAAA,IAEhC0J,KAAI1J,GAAMR,SACTkK,GAAE/I,WAAW+I,GAAE/I,YAAYX,GAAdI,OACjB0F,EAAS4D,IAAG,MAAMF,EAAAA,IAIU,SAAzBE,KAAI1J,GAAHM,MAA8B;AACnC,UAAIoJ,GAAEC;AACL,YAAA;AACCD,UAAAA,GAAEC,qBAAAA;QAGF,SAFQvH,IAAP;AACDlE,YAAOkC,IAAagC,IAAGoH,EAAAA;QACvB;AAGFE,MAAAA,GAAEzG,OAAOyG,GAAArF,MAAe,MACxBrE,GAAKM,MAAAA;IACL;AAED,QAAKoJ,KAAI1J,GAAHC;AACL,WAASxB,KAAI,GAAGA,KAAIiL,GAAE/J,QAAQlB;AACzBiL,QAAAA,GAAEjL,EAAAA,KACLoH,EACC6D,GAAEjL,EAAAA,GACF+K,IACAC,MAAoC,cAAA,OAAfzJ,GAAMX,IAAAA;AAM1BoK,IAAAA,MAA4B,QAAdzJ,GAAKI,OACvBpB,EAAWgB,GAADI,GAAAA,GAKXJ,GAAAE,KAAgBF,GAAKI,MAAQJ,GAAAK,MAAAA;EAC7B;AAGD,WAASkH,EAASxI,IAAO0I,IAAO9E,IAAAA;AAC/B,WAAYnC,KAAAA,YAAYzB,IAAO4D,EAAAA;EAC/B;ACjiBM,WAAS2E,EAAOtH,IAAOgE,IAAW4F,IAAAA;AAAlC,QAMF7E,IAOAjB,IAUAD;AAtBA3F,MAAeA,MAAAA,EAAAgC,GAAcF,IAAOgE,EAAAA,GAYpCF,MAPAiB,KAAqC,cAAA,OAAhB6E,MAQtB,OACCA,MAAeA,GAAAA,OAA0B5F,GAAAA,KAQzCH,KAAc,CAAA,GAClBS,EACCN,IARDhE,MAAAA,CACG+E,MAAe6E,MACjB5F,IAFO/D,MAGMb,GAAcwB,GAAU,MAAM,CAACZ,EAAAA,CAAAA,GAS5C8D,MAAYpF,GACZA,GAAAA,WACAsF,GAAUO,iBAAAA,CACTQ,MAAe6E,KACb,CAACA,EAAAA,IACD9F,KACA,OACAE,GAAU6F,aACV5L,EAAM2B,KAAKoE,GAAUkF,UAAAA,IACrB,MACHrF,IAAAA,CACCkB,MAAe6E,KACbA,KACA9F,KACAA,GACAE,MAAAA,GAAU6F,YACb9E,EAAAA,GAIDP,EAAWX,IAAa7D,EAAAA;EACxB;AJ5De8J,WAAAA,GAAcC,IAAcC,IAAAA;AAG3C,QAAMC,KAAU,EACfC,KAHDF,KAAY,SAASG,KAIpBC,IAAeL,IAEfM,UAJe,SAINC,IAAOC,IAAAA;AAIf,aAAOD,GAAME,SAASD,EAAAA;IACtB,GAEDE,UAAAA,SAASH,IAAAA;AAAAA,UAGHI,IACAC;AAsCL,aAzCKC,KAAKC,oBAELH,KAAO,CAAA,IACPC,KAAM,CAAV,GACIX,EAAAA,IAAaY,MAEjBA,KAAKC,kBAAkB,WAAA;AAAA,eAAMF;MAAN,GAEvBC,KAAKE,wBAAwB,SAASC,IAAAA;AACjCH,aAAKN,MAAMU,UAAUD,GAAOC,SAe/BN,GAAKO,KAAK,SAAAC,IAAAA;AACTA,UAAAA,GAACC,MAAAA,MACDC,EAAcF,EAAAA;QACd,CAAA;MAEF,GAEDN,KAAKS,MAAM,SAAAH,IAAAA;AACVR,QAAAA,GAAKY,KAAKJ,EAAAA;AACV,YAAIK,KAAML,GAAEM;AACZN,QAAAA,GAAEM,uBAAuB,WAAA;AACxBd,UAAAA,GAAKe,OAAOf,GAAKgB,QAAQR,EAAAA,GAAI,CAAA,GACzBK,MAAKA,GAAII,KAAKT,EAAAA;QAClB;MACD,IAGKZ,GAAME;IACb,EAAA;AASF,WAAQP,GAAQQ,SAAuBR,KAAAA,GAAQI,SAASuB,cAAc3B;EACtE;AL7CY4B,MAAQC,EAAUD,OCfzBE,IAAU,EACfZ,KUHM,SAAqBa,IAAOC,IAAOC,IAAUC,IAAAA;AAInD,aAFIC,IAAWC,IAAMC,IAEbL,KAAQA,GAAhB7B;AACC,WAAKgC,KAAYH,GAAH/B,QAAAA,CAAyBkC,GAADhC;AACrC,YAAA;AAcC,eAbAiC,KAAOD,GAAUG,gBAE4B,QAAjCF,GAAKG,6BAChBJ,GAAUK,SAASJ,GAAKG,yBAAyBR,EAAAA,CAAAA,GACjDM,KAAUF,GAAHM,MAG2B,QAA/BN,GAAUO,sBACbP,GAAUO,kBAAkBX,IAAOG,MAAa,CAAhD,CAAA,GACAG,KAAUF,GACVM,MAGGJ;AACH,mBAAQF,GAASQ,MAAiBR;QAInC,SAFQS,IAAP;AACDb,UAAAA,KAAQa;QACR;AAIH,UAAMb;EACN,EAAA,GTpCGc,IAAU,GA6FDC,IAAiB,SAAAd,IAAAA;AAAAA,WACpB,QAATA,MAAAA,WAAiBA,GAAMM;EADW,GCiDxBS,IAAAA,OCtHXC,GAAUC,UAAUT,WAAW,SAASU,IAAQC,IAAAA;AAE/C,QAAIC;AAEHA,IAAAA,KADsB,QAAnBzC,KAAA0C,OAA2B1C,KAAA0C,QAAoB1C,KAAK2C,QACnD3C,KAAH0C,MAEG1C,KAAA0C,MAAkBE,EAAO,CAAA,GAAI5C,KAAK2C,KAAAA,GAGlB,cAAA,OAAVJ,OAGVA,KAASA,GAAOK,EAAO,CAAD,GAAKH,EAAAA,GAAIzC,KAAKN,KAAAA,IAGjC6C,MACHK,EAAOH,IAAGF,EAAAA,GAIG,QAAVA,MAEAvC,KAAJ6C,QACKL,MACHxC,KAAA8C,IAAqBpC,KAAK8B,EAAAA,GAE3BhC,EAAcR,IAAAA;EAEf,GAQDqC,GAAUC,UAAUS,cAAc,SAASP,IAAAA;AACtCxC,SAAAA,QAIHA,KAAAO,MAAAA,MACIiC,MAAUxC,KAAAgD,IAAsBtC,KAAK8B,EAAAA,GACzChC,EAAcR,IAAAA;EAEf,GAYDqC,GAAUC,UAAUW,SAASC,GAyFzBC,IAAgB,CAAA,GAadC,IACa,cAAA,OAAXC,UACJA,QAAQf,UAAUgB,KAAKC,KAAKF,QAAQG,QAAAA,CAAAA,IACpCC,YA+CJC,GAAOC,MAAkB,GC1OdpE,IAAI;;;AOCf,MAAIqE;AAAJ,MAGIC;AAHJ,MAMIC;AANJ,MAuBIC;AAvBJ,MAYIC,KAAoB,CAAA;AAZxB,MAcIC,KAAQ,CAAA;AAdZ,MAgBIC,KAAgBC,EAAAA;AAhBpB,MAiBIC,KAAkBD,EAAAA;AAjBtB,MAkBIE,KAAeF,EAAQG;AAlB3B,MAmBIC,KAAYJ,EAAhBK;AAnBA,MAoBIC,KAAmBN,EAAQO;AA6W/B,WAASC,KAAAA;AAER,aADIC,IACIA,KAAYC,GAAkBC,MAAAA;AACrC,UAAKF,GAAAA,OAAyBA,GAA9BG;AACA,YAAA;AACCH,UAAAA,GAASG,IAAyBC,IAAAA,QAAQC,EAAAA,GAC1CL,GAASG,IAAyBC,IAAAA,QAAQE,EAAAA,GAC1CN,GAASG,IAA2BI,MAAA,CAAA;QAIpC,SAHQC,IAAP;AACDR,UAAAA,GAASG,IAA2BI,MAAA,CAAA,GACpCE,EAAOC,IAAaF,IAAGR,GAAAA,GAAAA;QACvB;EAEF;AArXDS,IAAAE,MAAgB,SAAAC,IAAAA;AACfC,IAAAA,KAAmB,MACfC,MAAeA,GAAcF,EAAAA;EACjC,GAEDH,EAAAA,MAAkB,SAAAG,IAAAA;AACbG,IAAAA,MAAiBA,GAAgBH,EAAAA,GAGrCI,KAAe;AAEf,QAAMC,MAHNJ,KAAmBD,GAAnBM,KAAAA;AAIID,IAAAA,OACCE,OAAsBN,MACzBI,GAAKV,MAAmB,CAAA,GACxBM,GAAgBN,MAAoB,CAAA,GACpCU,GAAKG,GAAOhB,QAAQ,SAAAiB,IAAAA;AACfA,MAAAA,GAAqBC,QACxBD,GAAAD,KAAkBC,GAAlBC,MAEDD,GAAAA,MAAyBE,IACzBF,GAAAC,MAAsBD,GAASG,IAAAA;IAC/B,CAAA,MAEDP,GAAKV,IAAiBH,QAAQC,EAAAA,GAC9BY,GAAKV,IAAiBH,QAAQE,EAAAA,GAC9BW,GAAKV,MAAmB,CAAA,KAG1BY,KAAoBN;EACpB,GAEDJ,EAAQgB,SAAS,SAAAb,IAAAA;AACZc,IAAAA,MAAcA,GAAad,EAAAA;AAE/B,QAAMe,KAAIf,GAAVM;AACIS,IAAAA,MAAKA,GAAAA,QACJA,GAAAxB,IAAAI,IAA0BqB,WAoXR,MApX2B3B,GAAkB4B,KAAKF,EAAAA,KAoX7CG,OAAYrB,EAAQsB,2BAC/CD,KAAUrB,EAAQsB,0BACNC,IAAgBjC,EAAAA,IArX5B4B,GAACxB,IAAAA,GAAeC,QAAQ,SAAAiB,IAAAA;AACnBA,MAAAA,GAASG,MACZH,GAAAA,MAAiBA,GAASG,IAEvBH,GAAAY,QAA2BV,OAC9BF,GAAAA,KAAkBA,GAClBY,MACDZ,GAASG,IAAAA,QACTH,GAAAY,MAAyBV;IACzB,CAAA,IAEFJ,KAAoBN,KAAmB;EACvC,GAEDJ,EAAAS,MAAkB,SAACN,IAAOsB,IAAAA;AACzBA,IAAAA,GAAYC,KAAK,SAAAnC,IAAAA;AAChB,UAAA;AACCA,QAAAA,GAAAO,IAA2BH,QAAQC,EAAAA,GACnCL,GAAAO,MAA6BP,GAASO,IAAkB6B,OAAO,SAAAC,IAAAA;AAC9DA,iBAAAA,CAAAA,GAAAjB,MAAYd,GAAa+B,EAAAA;QADuC,CAAA;MASjE,SANQ7B,IAAP;AACD0B,QAAAA,GAAYC,KAAK,SAAAR,IAAAA;AACZA,UAAAA,GAAoBA,QAAAA,GAAAA,MAAqB,CAAA;QAC7C,CAAA,GACDO,KAAc,CAAA,GACdzB,EAAAC,IAAoBF,IAAGR,GACvBsC,GAAAA;MAAA;IACD,CAAA,GAEGC,MAAWA,GAAU3B,IAAOsB,EAAAA;EAChC,GAEDzB,EAAQ+B,UAAU,SAAA5B,IAAAA;AACb6B,IAAAA,MAAkBA,GAAiB7B,EAAAA;AAEvC,QAEK8B,IAFCf,KAAIf,GAAHM;AACHS,IAAAA,MAAKA,GAATxB,QAECwB,GAACxB,IAAAA,GAAeC,QAAQ,SAAAuC,IAAAA;AACvB,UAAA;AACCtC,QAAAA,GAAcsC,EAAAA;MAGd,SAFQnC,IAAP;AACDkC,QAAAA,KAAalC;MACb;IACD,CAAA,GACDmB,GAAAxB,MAAAA,QACIuC,MAAYjC,EAAOC,IAAagC,IAAYf,GAAAA,GAAAA;EAEjD;AAgSD,MAAIiB,KAA0C,cAAA,OAAzBb;AAYrB,WAASC,GAAea,IAAAA;AACvB,QAOIC,IAPEC,KAAO,WAAA;AACZC,mBAAaC,EAAAA,GACTL,MAASM,qBAAqBJ,EAAAA,GAClCK,WAAWN,EAAAA;IACX,GACKI,KAAUE,WAAWJ,IA5YR,GAAA;AA+YfH,IAAAA,OACHE,KAAMf,sBAAsBgB,EAAAA;EAE7B;AAmBD,WAAS1C,GAAc+C,IAAAA;AAGtB,QAAMC,KAAOxC,IACTyC,KAAUF,GAAdlC;AACsB,kBAAA,OAAXoC,OACVF,GAAAA,MAAAA,QACAE,GAAAA,IAGDzC,KAAmBwC;EACnB;AAMD,WAAS/C,GAAa8C,IAAAA;AAGrB,QAAMC,KAAOxC;AACbuC,IAAAA,GAAIlC,MAAYkC,GAAAA,GAAAA,GAChBvC,KAAmBwC;EACnB;;;AC9ceE,WAAAA,GAAOC,IAAKC,IAAAA;AAC3B,aAASC,MAAKD;AAAOD,MAAAA,GAAIE,EAAAA,IAAKD,GAAMC,EAAAA;AACpC,WAA6BF;EAC7B;AAQeG,WAAAA,GAAeC,IAAGC,IAAAA;AACjC,aAASH,MAAKE;AAAG,UAAU,eAANF,MAAAA,EAAsBA,MAAKG;AAAI,eAAA;AACpD,aAASH,MAAKG;AAAG,UAAU,eAANH,MAAoBE,GAAEF,EAAAA,MAAOG,GAAEH,EAAAA;AAAI,eAAA;AACxD,WAAA;EACA;AChBeI,WAAAA,GAAcC,IAAAA;AAC7BC,SAAKC,QAAQF;EACb;ACyBA,GDxBDG,GAAcC,YAAY,IAAIC,MAENC,uBAAAA,MACxBH,GAAcC,UAAUG,wBAAwB,SAASC,IAAOC,IAAAA;AAC/D,WAAOC,GAAeC,KAAKH,OAAOA,EAAAA,KAAUE,GAAeC,KAAKF,OAAOA,EAAAA;EACvE;AEXD,MAAIG,KAAcC,EAAlBC;AACAD,IAAAC,MAAgB,SAAAC,IAAAA;AACXA,IAAAA,GAAMC,QAAQD,GAAMC,KAApBC,OAAuCF,GAAMG,QAChDH,GAAMP,MAAMU,MAAMH,GAAMG,KACxBH,GAAMG,MAAM,OAETN,MAAaA,GAAYG,EAAAA;EAC7B;AAEYI,MAAAA,KACM,eAAA,OAAVC,UACPA,OAAOC,OACPD,OAAOC,IAAI,mBAAA,KACZ;ACdD,MCCMC,KAAgBC,EAAHC;AACnBD,IAAAC,MAAsB,SAASC,IAAOC,IAAUC,IAAUC,IAAAA;AACzD,QAAIH,GAAMI;AAKT,eAHIC,IACAC,KAAQL,IAEJK,KAAQA,GAAAA;AACf,aAAKD,KAAYC,GAAbC,QAAkCF,GAAtCE;AAMC,iBALqB,QAAjBN,GAAQF,QACXE,GAAAF,MAAgBG,GAChBD,KAAAA,GAAAO,MAAqBN,GAArBM,MAGMH,GAASE,IAAkBP,IAAOC,EAAAA;;AAI5CJ,IAAAA,GAAcG,IAAOC,IAAUC,IAAUC,EAAAA;EACzC;AAED,MAAMM,KAAaX,EAAQY;AAmB3B,WAASC,GAAcL,IAAOM,IAAgBC,IAAAA;AAyB7C,WAxBIP,OACCA,GAAKC,OAAeD,GAAAA,IAAAA,QACvBA,GAAKC,IAA0BO,IAAAA,GAAAA,QAAQ,SAAAC,IAAAA;AACR,oBAAA,OAAnBA,GAAPR,OAAsCQ,GAAMR,IAAAA;IAChD,CAAA,GAEDD,GAAKC,IAAsBS,MAAA,OAIJ,SADxBV,KAAQW,GAAO,CAAD,GAAKX,EAAAA,GACVC,QACJD,GAAKC,IAAAA,QAA2BM,OACnCP,GAAAC,IAAAW,MAA8BN,KAE/BN,GAAAA,MAAmB,OAGpBA,GAAKE,MACJF,GAAAE,OACAF,GAAAE,IAAgBW,IAAI,SAAAC,IAAAA;AAAAA,aACnBT,GAAcS,IAAOR,IAAgBC,EAAAA;IADb,CAAA,IAKpBP;EACP;AAED,WAASe,EAAef,IAAOM,IAAgBU,IAAAA;AAoB9C,WAnBIhB,OACHA,GAAKiB,MAAa,MAClBjB,GAAKE,MACJF,GAAAA,OACAA,GAAAE,IAAgBW,IAAI,SAAAC,IAAAA;AAAK,aACxBC,EAAeD,IAAOR,IAAgBU,EAAAA;IADd,CAAA,GAItBhB,GAAAA,OACCA,GAAAC,IAAAW,QAAgCN,OAC/BN,GAAYP,OACfuB,GAAeE,aAAalB,GAAYA,KAAAA,GACxCmB,GAAAA,GACDnB,GAAKC,IAAAA,MAAAA,MACLD,GAAKC,IAAyBe,MAAAA,MAK1BhB;EACP;AAGeoB,WAAAA,KAAAA;AAEfC,SAAAC,MAA+B,GAC/BD,KAAKE,IAAc,MACnBF,KAAAA,MAA2B;EAC3B;AAmIM,WAASG,GAAUxB,IAAAA;AAEzB,QAAID,KAAYC,GAAHyB,GAAAxB;AACb,WAAOF,MAAaA,GAAJ2B,OAA4B3B,GAAAA,IAAqBC,EAAAA;EACjE;AClOe2B,WAAAA,KAAAA;AACfC,SAAKC,IAAQ,MACbD,KAAKE,IAAO;EACZ;ADaDC,IAAQC,UAAU,SAASC,IAAAA;AAE1B,QAAMC,KAAYD,GAAlBE;AACID,IAAAA,MAAaA,GAAJE,OACZF,GAAAE,IAAAA,GAOGF,MAAAA,SAAaD,GAAAI,QAChBJ,GAAMK,OAAO,OAGVC,MAAYA,GAAWN,EAAAA;EAC3B,IAgEDO,GAASC,YAAY,IAAIC,MAOaP,MAAA,SAASQ,IAASC,IAAAA;AACvD,QAAMC,KAAsBD,GAAHT,KAGnBW,KAAIlB;AAEW,YAAjBkB,GAAEC,MACLD,GAAEC,IAAc,CAAA,IAEjBD,GAAEC,EAAYC,KAAKH,EAAAA;AAEnB,QAAMI,KAAUC,GAAUJ,GAADK,GAAAA,GAErBC,KAAAA,OACEC,KAAa,WAAA;AACdD,MAAAA,OAEJA,KAAAA,MACAP,GAAAT,MAAiC,MAE7Ba,KACHA,GAAQK,EAAAA,IAERA,GAAAA;IAED;AAEDT,IAAAA,GAAAT,MAAiCiB;AAEjC,QAAMC,KAAuB,WAAA;AAC5B,UAAA,CAAA,EAAOR,GAAPS,KAAkC;AAGjC,YAAIT,GAAEU,MAAkBC,KAAA;AACvB,cAAMC,KAAiBZ,GAAEU,MAAAA;AACzBV,UAAAA,GAAAK,IAAAQ,IAAmB,CAAA,IAAKC,EACvBF,IACAA,GACAA,IAAAA,KAAAA,GAAAA,IAAAA,GAAAA;QAED;AAID,YAAIR;AACJ,aAHAJ,GAAEe,SAAS,EAAEJ,KAAaX,GAACgB,MAAuB,KAAA,CAAA,GAG1CZ,KAAYJ,GAAEC,EAAYgB,IAAAA;AACjCb,UAAAA,GAAUc,YAAAA;MAEX;IACD,GAOKC,KAAAA,SAAerB,GAAAP;AAChBS,IAAAA,GAAAS,SAAgCU,MACpCnB,GAAEe,SAAS,EAAEJ,KAAaX,GAAAgB,MAAwBhB,GAAAK,IAAAQ,IAAmB,CAAA,EAAA,CAAA,GAEtEhB,GAAQuB,KAAKb,IAAYA,EAAAA;EACzB,GAEDb,GAASC,UAAU0B,uBAAuB,WAAA;AACzCvC,SAAKmB,IAAc,CAAA;EACnB,GAODP,GAASC,UAAU2B,SAAS,SAASC,IAAOb,IAAAA;AAC3C,QAAI5B,KAA0BkC,KAAA;AAI7B,UAAIlC,KAAuBuB,IAAAQ,KAAA;AAC1B,YAAMW,KAAiBC,SAASC,cAAc,KAAA,GACxCC,KAAoB7C,KAAAuB,IAAAQ,IAAsB,CAAA,EAAhDxB;AACAP,aAAAA,IAAAA,IAAsB,CAAA,IAAK8C,GAC1B9C,KADuCkC,KAEvCQ,IACCG,GAAAE,MAAuCF,GAAvCG,GAAAA;MAEF;AAEDhD,WAAAkC,MAA2B;IAC3B;AAID,QAAMe,KACLrB,GAAAC,OAAoBe,GAAcM,GAAU,MAAMT,GAAMQ,QAAAA;AAGzD,WAFIA,OAAUA,GAAAA,MAAsB,OAE7B,CACNL,GAAcM,GAAU,MAAMtB,GAAKC,MAAc,OAAOY,GAAMU,QAAAA,GAC9DF,EAAAA;EAED;AClMD,MAAM5B,IAAU,SAAC+B,IAAMC,IAAOC,IAAAA;AAc7B,QAAA,EAbMA,GAdgB,CAAA,MAcSA,GAfR,CAAA,KAqBtBF,GAAKlD,EAAKqD,OAAOF,EAAAA,GAQhBD,GAAKX,MAAMe,gBACmB,QAA9BJ,GAAKX,MAAMe,YAAY,CAAA,KAAA,CAAcJ,GAAKlD,EAAKuD;AASjD,WADAH,KAAOF,GAAKnD,GACLqD,MAAM;AACZ,eAAOA,GAAKI,SAAS;AACpBJ,UAAAA,GAAKnB,IAAAA,EAALmB;AAED,YAAIA,GA1CiB,CAAA,IA0CMA,GA3CL,CAAA;AA4CrB;AAEDF,QAAAA,GAAKnD,IAAQqD,KAAOA,GA5CJ,CAAA;MA6ChB;EACD;AC/CD,WAASK,GAAgBlB,IAAAA;AAExB,WADAzC,KAAK4D,kBAAkB,WAAA;AAAA,aAAMnB,GAAMoB;IAAZ,GAChBpB,GAAMU;EACb;AASD,WAASW,GAAOrB,IAAAA;AACf,QAAMsB,KAAQ/D,MACVgE,KAAYvB,GAAMwB;AAEtBF,IAAAA,GAAMxB,uBAAuB,WAAA;AAC5BC,QAAO,MAAMuB,GAAMG,CAAAA,GACnBH,GAAMG,IAAQ,MACdH,GAAME,IAAa;IACnB,GAIGF,GAAME,KAAcF,GAAME,MAAeD,MAC5CD,GAAMxB,qBAAAA,GAKHE,GAAJlB,OACMwC,GAAMG,MACVH,GAAME,IAAaD,IAGnBD,GAAMG,IAAQ,EACbC,UAAU,GACVC,YAAYJ,IACZK,YAAY,CAAA,GACZC,aAAYjB,SAAAA,IAAAA;AACXrD,WAAKqE,WAAWjD,KAAKiC,EAAAA,GACrBU,GAAME,EAAWK,YAAYjB,EAAAA;IAC7B,GACDkB,cARa,SAQAlB,IAAOmB,IAAAA;AACnBxE,WAAKqE,WAAWjD,KAAKiC,EAAAA,GACrBU,GAAME,EAAWK,YAAYjB,EAAAA;IAC7B,GACDoB,aAAYpB,SAAAA,IAAAA;AACXrD,WAAKqE,WAAWK,OAAO1E,KAAKqE,WAAWM,QAAQtB,EAAAA,MAAW,GAAG,CAAA,GAC7DU,GAAME,EAAWQ,YAAYpB,EAAAA;IAC7B,EAAA,IAKHb,EACCI,GAAce,IAAiB,EAAEE,SAASE,GAAMF,QAAAA,GAAWpB,GAA9ClB,GAAAA,GACbwC,GAAMG,CAAAA,KAKCH,GAAMG,KACdH,GAAMxB,qBAAAA;EAEP;AAOM,WAASqC,GAAavE,IAAO2D,IAAAA;AACnC,QAAMa,KAAKjC,GAAckB,IAAQ,EAAEvC,KAAQlB,IAAO4D,GAAYD,GAAAA,CAAAA;AAE9D,WADAa,GAAGC,gBAAgBd,IACZa;EACP;AAAA,GDxBD9E,GAAac,YAAY,IAAIC,MAEOe,MAAA,SAASwB,IAAAA;AAC5C,QAAMD,KAAOpD,MACP+E,KAAYzD,GAAU8B,GAA5B7B,GAAAA,GAEI+B,KAAOF,GAAKlD,EAAK8E,IAAI3B,EAAAA;AAGzB,WAFAC,GA5DuB,CAAA,KAAA,SA8DhB2B,IAAAA;AACN,UAAMC,KAAmB,WAAA;AACnB9B,QAAAA,GAAKX,MAAMe,eAKfF,GAAKlC,KAAK6D,EAAAA,GACV5D,EAAQ+B,IAAMC,IAAOC,EAAAA,KAHrB2B,GAAAA;MAKD;AACGF,MAAAA,KACHA,GAAUG,EAAAA,IAEVA,GAAAA;IAED;EACD,GAEDnF,GAAac,UAAU2B,SAAS,SAASC,IAAAA;AACxCzC,SAAKC,IAAQ,MACbD,KAAKE,IAAO,oBAAIiF;AAEhB,QAAMhC,KAAWiC,EAAa3C,GAAMU,QAAAA;AAChCV,IAAAA,GAAMe,eAAwC,QAAzBf,GAAMe,YAAY,CAAA,KAI1CL,GAASkC,QAAAA;AAIV,aAASC,KAAInC,GAASO,QAAQ4B;AAY7BtF,WAAKE,EAAKqF,IAAIpC,GAASmC,EAAAA,GAAKtF,KAAKC,IAAQ,CAAC,GAAG,GAAGD,KAAKC,CAAAA,CAAAA;AAEtD,WAAOwC,GAAMU;EACb,GAEDpD,GAAac,UAAU2E,qBAAqBzF,GAAac,UAAU4E,oBAAoB,WAAA;AAAW,QAAA1B,KAAA/D;AAOjGA,SAAKE,EAAKwF,QAAQ,SAACpC,IAAMD,IAAAA;AACxBhC,QAAQ0C,IAAMV,IAAOC,EAAAA;IACrB,CAAA;EACD;AAAA,MErHYqC,KACM,eAAA,OAAVC,UAAyBA,OAAOC,OAAOD,OAAOC,IAAI,eAAA,KAC1D;AFmHA,MEjHKC,KAAc;AFiHnB,ME/GKC,KAA6B,eAAA,OAAbpD;AF+GrB,ME1GKqD,IAAoB,SAAAtF,IAAAA;AACzB,YAAkB,eAAA,OAAVkF,UAA4C,YAAA,OAAZA,OAAAA,IACrC,iBACA,eACDK,KAAKvF,EAAAA;EAJsB;AAO9BwF,EAAAA,GAAUC,UAAUC,mBAAmB,CAAvC,GASA,CACC,sBACA,6BACA,qBAAA,EACCC,QAAQ,SAAAC,IAAAA;AACTC,WAAOC,eAAeN,GAAUC,WAAWG,IAAK,EAC/CG,cAAAA,MACAC,KAAM,WAAA;AACL,aAAOC,KAAK,YAAYL,EAAAA;IACxB,GACDM,KAL+C,SAK3CC,IAAAA;AACHN,aAAOC,eAAeG,MAAML,IAAK,EAChCG,cAAAA,MACAK,UAAAA,MACAC,OAAOF,GAAAA,CAAAA;IAER,EAAA,CAAA;EAEF,CAAA;AA6BD,MAAIG,KAAeC,EAAQC;AAS3B,WAASC,IAAAA;EAET;AAAA,WAASC,IAAAA;AACR,WAAOT,KAAKU;EACZ;AAED,WAASC,IAAAA;AACR,WAAOX,KAAKY;EACZ;AAhBDN,IAAQC,QAAQ,SAAAM,IAAAA;AAKf,WAJIR,OAAcQ,KAAIR,GAAaQ,EAAAA,IACnCA,GAAEC,UAAUN,GACZK,GAAEJ,uBAAuBA,GACzBI,GAAEF,qBAAqBA,GACfE,GAAEE,cAAcF;EACxB;AAYD,MAmHIG;AAnHJ,MAAIC,KAAsB,EACzBnB,cAAAA,MACAC,KAFyB,WAAA;AAGxB,WAAYmB,KAAAA;EACZ,EAAA;AAJF,MAOIC,KAAeb,EAAQc;AAC3Bd,IAAQc,QAAQ,SAAAA,IAAAA;AACf,QAAIC,KAAOD,GAAMC,MACbC,KAAQF,GAAME,OACdC,KAAkBD;AAGtB,QAAoB,YAAA,OAATD,IAAmB;AAC7B,UAAMG,KAAAA,OAAmBH,GAAKI,QAAQ,GAAA;AAGtC,eAASC,MAFTH,KAAkB,CAAlB,GAEcD,IAAO;AACpB,YAAIlB,KAAQkB,GAAMI,EAAAA;AAEdC,QAAAA,MAAgB,eAAND,MAA6B,eAATL,MAGjB,YAANK,MAAiB,kBAAkBJ,MAAkB,QAATlB,OAKhD,mBAANsB,MACA,WAAWJ,MACI,QAAfA,GAAMlB,QAINsB,KAAI,UACY,eAANA,MAAAA,SAAoBtB,KAM9BA,KAAQ,KACE,iBAAiBwB,KAAKF,EAAAA,IAChCA,KAAI,eAEJ,6BAA6BE,KAAKF,KAAIL,EAAAA,KAAAA,CACrCQ,EAAkBP,GAAMD,IAAAA,IAEzBK,KAAI,YACM,aAAaE,KAAKF,EAAAA,IAC5BA,KAAI,cACM,YAAYE,KAAKF,EAAAA,IAC3BA,KAAI,eACM,mCAAmCE,KAAKF,EAAAA,IAClDA,KAAIA,GAAEI,YAAAA,IACIN,MAAoBO,GAAYH,KAAKF,EAAAA,IAC/CA,KAAIA,GAAEM,QAAQ,aAAa,KAAA,EAAOF,YAAAA,IACd,SAAV1B,OACVA,KAAAA,SAKG,aAAawB,KAAKF,EAAAA,MACrBA,KAAIA,GAAEI,YAAAA,GACFP,GAAgBG,EAAAA,MACnBA,KAAI,oBAINH,GAAgBG,EAAAA,IAAKtB;MACrB;AAIQ,kBAARiB,MACAE,GAAgBU,YAChBC,MAAMC,QAAQZ,GAAgBnB,KAAAA,MAG9BmB,GAAgBnB,QAAQgC,EAAad,GAAMe,QAAAA,EAAU3C,QAAQ,SAAA4C,IAAAA;AAC5DA,QAAAA,GAAMhB,MAAMiB,WAAAA,MACXhB,GAAgBnB,MAAMqB,QAAQa,GAAMhB,MAAMlB,KAAAA;MAC3C,CAAA,IAIU,YAARiB,MAAoD,QAAhCE,GAAgBiB,iBACvCjB,GAAgBnB,QAAQgC,EAAad,GAAMe,QAAAA,EAAU3C,QAAQ,SAAA4C,IAAAA;AAE3DA,QAAAA,GAAMhB,MAAMiB,WADThB,GAAgBU,WAAAA,MAElBV,GAAgBiB,aAAaf,QAAQa,GAAMhB,MAAMlB,KAAAA,IAGjDmB,GAAgBiB,gBAAgBF,GAAMhB,MAAMlB;MAE9C,CAAA,IAGFgB,GAAME,QAAQC,IAEVD,GAAMJ,SAASI,GAAMmB,cACxBxB,GAAoByB,aAAa,eAAepB,IACzB,QAAnBA,GAAMmB,cAAmBlB,GAAgBL,QAAQI,GAAMmB,YAC3D7C,OAAOC,eAAe0B,IAAiB,aAAaN,EAAAA;IAErD;AAEDG,IAAAA,GAAMuB,WAAWC,IAEbzB,MAAcA,GAAaC,EAAAA;EAC/B;AAID,MAAMyB,MAAkBvC,EAAHwC;AACrBxC,IAAAwC,MAAkB,SAAS1B,IAAAA;AACtByB,IAAAA,OACHA,IAAgBzB,EAAAA,GAEjBJ,IAAmBI,GACnB2B;EAAA;;;AE3ND,MAAI,YAAY,OAAO,eAAe,cAAc,aAAa;AACjE,MAAI,UAAU,kBAAkB;AAC5B,YAAQ,KAAK,kCAAkC;AAAA,EACnD,OACK;AACD,cAAU,mBAAmB;AAAA,MACzB,WAAkBC;AAAA,MAClB,eAAsBC;AAAA,MACtB,QAAe;AAAA,MACf,WAAkB;AAAA,MAClB,UAAiB;AAAA,MACjB,eAAeC;AAAA,MACf,cAA2BC;AAAA,MAC3B;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAIA,WAAS,UAAU,gBAAgB;AAC/B,mBAAe;AACf,QAAI,uBAA8B,EAAQ;AAC1C,QAAI,YAAY,CAAC;AACjB,aAAS,iBAAiBC,WAAU;AAChC,gBAAU,KAAKA,SAAQ;AAAA,IAC3B;AACA,IAAO,EAAQ,oBAAoB;AACnC,IAAO,EAAcH,GAAc,eAAe,CAAC,CAAC,GAAG,SAAS,cAAc,KAAK,CAAC;AACpF,WAAO,UAAU,QAAQ;AACrB,gBAAU,MAAM,EAAE;AAAA,IACtB;AACA,IAAO,EAAQ,oBAAoB;AAAA,EACvC;AACA,MAAI;AAAA;AAAA,IAA+B,SAAU,QAAQ;AACjD,gBAAUI,gBAAe,MAAM;AAC/B,eAASA,iBAAgB;AACrB,eAAO,WAAW,QAAQ,OAAO,MAAM,MAAM,SAAS,KAAK;AAAA,MAC/D;AACA,MAAAA,eAAc,UAAU,SAAS,WAAY;AAAE,eAAcJ,GAAc,OAAO,CAAC,CAAC;AAAA,MAAG;AACvF,MAAAI,eAAc,UAAU,oBAAoB,WAAY;AAAE,aAAK,SAAS,CAAC,CAAC;AAAA,MAAG;AAC7E,aAAOA;AAAA,IACX,EAASL,EAAS;AAAA;AAClB,WAASE,eAAc,cAAc;AACjC,QAAI,cAAqBI,GAAc,YAAY;AACnD,QAAI,eAAe,YAAY;AAC/B,gBAAY,WAAW,WAAY;AAC/B,UAAI,QAAQ;AACZ,UAAI,QAAQ,CAAC,KAAK;AAClB,UAAI,WAAW,aAAa,MAAM,MAAM,SAAS;AACjD,UAAI,OAAO;AACP,YAAI,SAAS,CAAC;AACd,aAAK,wBAAwB,SAAU,QAAQ;AAC3C,cAAI,MAAM,MAAM,UAAU,OAAO,OAAO;AACpC,mBAAO,QAAQ,SAAUC,IAAG;AACxB,cAAAA,GAAE,UAAU,OAAO;AACnB,cAAAA,GAAE,YAAY;AAAA,YAClB,CAAC;AAAA,UACL;AAAA,QACJ;AACA,aAAK,MAAM,SAAUA,IAAG;AACpB,iBAAO,KAAKA,EAAC;AACb,cAAI,MAAMA,GAAE;AACZ,UAAAA,GAAE,uBAAuB,WAAY;AACjC,mBAAO,OAAO,OAAO,QAAQA,EAAC,GAAG,CAAC;AAClC,mBAAO,IAAI,KAAKA,EAAC;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACA,WAAS,uBAAuB,MAAM;AAClC,IAAO,EAAO,MAAM,IAAI;AAAA,EAC5B;;;AC9EA,MAAI,OAAO,qBAAqB,aAAa;AACzC,UAAM,IAAI,MAAM,oFAAoF;AAAA,EACxG;AACA,MAAI,YAAY,iBAAiB;AACjC,MAAIC,iBAAgB,iBAAiB;AACrC,MAAI,SAAS,iBAAiB;AAC9B,MAAI,YAAY,iBAAiB;AACjC,MAAIC,YAAW,iBAAiB;AAChC,MAAIC,iBAAgB,iBAAiB;AACrC,MAAI,eAAe,iBAAiB;AACpC,MAAIC,aAAY,iBAAiB;AACjC,MAAIC,0BAAyB,iBAAiB;;;;;;ACL5C,eAAAC,gBACU,SACD,qBAAqC;AADpC,aAAA,UAAA;AACD,aAAA,sBAAA;;AAIT,MAAAA,gBAAA,UAAA,SAAA,WAAA;AACE,aAAK,QAAQ,SAAS;UACpB,MAAM;UACN,UAAU,KAAK,oBAAoB;SACpC;;AAGH,MAAAA,gBAAA,UAAA,UAAA,WAAA;AACE,aAAK,QAAQ,SAAS;UACpB,MAAM;UACN,WAAW,CAAC,KAAK,oBAAoB,QAAQ;UAC7C,WAAW;SACZ;;AAGH,aAAA,eAAIA,gBAAA,WAAA,MAAE;aAAN,WAAA;AACE,iBAAO,KAAK,oBAAoB;;;;;AAGlC,aAAA,eAAIA,gBAAA,WAAA,OAAG;aAAP,WAAA;AACE,iBAAO,KAAK,oBAAoB,KAAK;;;;;AAGvC,aAAA,eAAIA,gBAAA,WAAA,UAAM;aAAV,WAAA;AACE,iBAAO,KAAK,oBAAoB,KAAK;;;;;AAEzC,aAAAA;IAAA,EAAC;;WCrCeC,eAAc,IAAe;AAC3C,QAAI,GAAG,YAAY;AACjB,SAAG,WAAW,YAAY,EAAE;;EAEhC;WAKgB,eAAe,IAAiB,UAAgB;AAC9D,QAAI,GAAG,SAAS;AACd,aAAO,GAAG,QAAQ,QAAQ;;AAK5B,QAAI,CAAC,SAAS,gBAAgB,SAAS,EAAE,GAAG;AAC1C,aAAO;;AAET,OAAG;AACD,UAAI,eAAe,IAAI,QAAQ,GAAG;AAChC,eAAO;;AAET,WAAM,GAAG,iBAAiB,GAAG;aACtB,OAAO,QAAQ,GAAG,aAAa;AACxC,WAAO;EACT;WAEgB,eAAe,IAAiB,UAAgB;AAC9D,QAAI,SAAS,GAAG,WAAY,GAAW,mBAAoB,GAAW;AAEtE,WAAO,OAAO,KAAK,IAAI,QAAQ;EACjC;WAKgB,aAAa,WAAkE,UAAgB;AAC7G,QAAI,aAAa,qBAAqB,cAAc,CAAC,SAAS,IAAI;AAClE,QAAI,aAA4B,CAAA;AAEhC,aAASC,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK,GAAG;AAC7C,UAAIC,WAAU,WAAWD,EAAC,EAAE,iBAAiB,QAAQ;AAErD,eAASE,KAAI,GAAGA,KAAID,SAAQ,QAAQC,MAAK,GAAG;AAC1C,mBAAW,KAAKD,SAAQC,EAAC,CAAgB;;;AAI7C,WAAO;EACT;AA0BA,MAAM,gBAAgB;WAEN,WAAW,IAAiB,OAAiB;AAC3D,aAAS,YAAY,OAAO;AAC1B,qBAAe,IAAI,UAAU,MAAM,QAAQ,CAAC;;EAEhD;WAEgB,eAAe,IAAiBC,OAAc,KAAG;AAC/D,QAAI,OAAO,MAAM;AACf,SAAG,MAAMA,KAAI,IAAI;eACR,OAAO,QAAQ,YAAY,cAAc,KAAKA,KAAI,GAAG;AAC9D,SAAG,MAAMA,KAAI,IAAO,MAAG;WAClB;AACL,SAAG,MAAMA,KAAI,IAAI;;EAErB;WAQgB,sBAAsB,IAAS;;AAC7C,YAAO,MAAA,KAAA,GAAG,kBAAY,QAAA,OAAA,SAAA,SAAA,GAAA,KAAf,EAAE,EAAkB,CAAC,OAAC,QAAA,OAAA,SAAA,KAAI,GAAG;EACtC;WAKgB,UAAU,IAAe;AACvC,WAAO,GAAG,cAAc,GAAG,YAAW,IAAmB;EAC3D;AAIA,MAAIC,SAAO;WAEK,iBAAc;AAC5BA,cAAQ;AACR,WAAO,YAAYA;EACrB;WCpHgB,eAAe,IAAE;AAC/B,OAAG,eAAc;EACnB;WAKgB,uBACd,UACA,SAA4D;AAE5D,WAAO,SAAC,IAAa;AACnB,UAAI,eAAe,eAAe,GAAG,QAAuB,QAAQ;AAEpE,UAAI,cAAc;AAChB,gBAAQ,KAAK,cAAc,IAAI,YAAY;;;EAGjD;WAEgB,iBACd,WACA,WACA,UACA,SAAwD;AAExD,QAAI,kBAAkB,uBAAuB,UAAU,OAAO;AAE9D,cAAU,iBAAiB,WAAW,eAAe;AAErD,WAAO,WAAA;AACL,gBAAU,oBAAoB,WAAW,eAAe;;EAE5D;WAEgB,wBACd,WACA,UACA,cACA,cAA6D;AAE7D,QAAI;AAEJ,WAAO,iBAAiB,WAAW,aAAa,UAAU,SAAC,aAAa,cAAY;AAClF,UAAI,iBAAiB,qBAAqB;AACxC,8BAAsB;AACtB,qBAAa,aAAa,YAAY;AAEtC,YAAI,qBAAmB,SAAC,cAAY;AAClC,gCAAsB;AACtB,uBAAa,cAAc,YAAY;AACvC,uBAAa,oBAAoB,cAAc,kBAAgB;;AAIjE,qBAAa,iBAAiB,cAAc,kBAAgB;;KAE/D;EACH;AAKA,MAAM,uBAAuB;IAC3B;IACA;IACA;IACA;IACA;;WAIc,mBAAmB,IAAiBC,WAA6B;AAC/E,QAAI,eAAe,SAAC,IAAE;AACpB,MAAAA,UAAS,EAAE;AACX,2BAAqB,QAAQ,SAAC,WAAS;AACrC,WAAG,oBAAoB,WAAW,YAAY;OAC/C;;AAGH,yBAAqB,QAAQ,SAAC,WAAS;AACrC,SAAG,iBAAiB,WAAW,YAAY;KAC5C;EACH;WAKgB,qBAAqB,SAAgC;AACnE,WAAAC,UAAA,EACE,SAAS,QAAO,GACb,wBAAwB,OAAO,CAAC;EAEvC;WAEgB,wBAAwB,SAAgC;AACtE,WAAO;MACL,UAAU;MACV,WAAA,SAAU,IAAiB;AACzB,YAAI,GAAG,QAAQ,WAAW,GAAG,QAAQ,KAAK;AACxC,kBAAQ,EAAE;AACV,aAAG,eAAc;;;;EAIzB;ACzGA,MAAI,aAAa;WAED,OAAI;AAClB,kBAAc;AACd,WAAO,OAAO,UAAU;EAC1B;WAMgB,gBAAa;AAC3B,aAAS,KAAK,UAAU,IAAI,gBAAgB;EAC9C;WAGgB,eAAY;AAC1B,aAAS,KAAK,UAAU,OAAO,gBAAgB;EACjD;WAKgB,iBAAiB,IAAe;AAC9C,OAAG,UAAU,IAAI,iBAAiB;AAClC,OAAG,iBAAiB,eAAe,cAAc;EACnD;WAEgB,eAAe,IAAe;AAC5C,OAAG,UAAU,OAAO,iBAAiB;AACrC,OAAG,oBAAoB,eAAe,cAAc;EACtD;WAKgB,mBAAmB,IAAe;AAChD,OAAG,iBAAiB,eAAe,cAAc;EACnD;WAEgB,iBAAiB,IAAe;AAC9C,OAAG,oBAAoB,eAAe,cAAc;EACtD;WAcgB,gBAAyB,OAA8B;AACrE,QAAI,QAA8B,CAAA;AAClC,QAAI,SAAS,CAAA;AACb,QAAIC;AACJ,QAAI;AAEJ,QAAI,OAAO,UAAU,UAAU;AAC7B,eAAS,MAAM,MAAM,SAAS;eACrB,OAAO,UAAU,YAAY;AACtC,eAAS,CAAC,KAAK;eACN,MAAM,QAAQ,KAAK,GAAG;AAC/B,eAAS;;AAGX,SAAKA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACrC,cAAQ,OAAOA,EAAC;AAEhB,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,KACJ,MAAM,OAAO,CAAC,MAAM,MAClB,EAAE,OAAO,MAAM,UAAU,CAAC,GAAG,OAAO,GAAE,IACtC,EAAE,OAAO,OAAO,OAAO,EAAC,CAAE;iBAErB,OAAO,UAAU,YAAY;AACtC,cAAM,KAAK,EAAE,MAAM,MAAK,CAAE;;;AAI9B,WAAO;EACT;WAEgB,oBAA6B,MAAe,MAAe,YAAgC;AACzG,QAAIA;AACJ,QAAI;AAEJ,SAAKA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK,GAAG;AACzC,YAAM,mBAAmB,MAAM,MAAM,WAAWA,EAAC,CAAC;AAClD,UAAI,KAAK;AACP,eAAO;;;AAIX,WAAO;EACT;WAEgB,mBAA4B,MAAe,MAAe,WAA6B;AACrG,QAAI,UAAU,MAAM;AAClB,aAAO,UAAU,KAAK,MAAM,IAAI;;AAGlC,WAAO,gBAAgB,KAAK,UAAU,KAAK,GAAG,KAAK,UAAU,KAAK,CAAC,KAC9D,UAAU,SAAS;EAC1B;WAEgB,gBAAgBC,IAAGC,IAAC;AAClC,QAAI,CAACD,MAAK,CAACC,IAAG;AACZ,aAAO;;AAET,QAAIA,MAAK,MAAM;AACb,aAAO;;AAET,QAAID,MAAK,MAAM;AACb,aAAO;;AAET,QAAI,OAAOA,OAAM,YAAY,OAAOC,OAAM,UAAU;AAClD,aAAO,OAAOD,EAAC,EAAE,cAAc,OAAOC,EAAC,CAAC;;AAE1C,WAAOD,KAAIC;EACb;WAKgB,SAAS,KAAK,KAAG;AAC/B,QAAIC,KAAI,OAAO,GAAG;AAClB,WAAO,MAAM,OAAO,GAAG,MAAMA,GAAE,MAAM,IAAIA;EAC3C;WAEgB,mBACd,WACA,MACA,cAAoB;AAEpB,QAAI,OAAO,cAAc,YAAY;AACnC,aAAO,UAAS,MAAA,QAAI,IAAI;;AAE1B,QAAI,OAAO,cAAc,UAAU;AACjC,aAAO,KAAK,OAAO,SAAC,KAAK,KAAKC,QAAK;AAAK,eACtC,IAAI,QAAQ,MAAMA,QAAO,OAAO,EAAE;MAAC,GAClC,SAAS;;AAEd,WAAO;EACT;WAKgB,eAAeH,IAAGC,IAAC;AACjC,WAAOD,KAAIC;EACb;WAEgB,MAAMG,IAAC;AACrB,WAAOA,KAAI,MAAM;EACnB;WAiBgB,yBAAyB,QAAmB;AAC1D,QAAI,aAAa,OAAO,cAAc,6BAA6B;AACnE,QAAI,iBAAiB,OAAO,cAAc,+BAA+B;AAEzE,QAAI,CAAC,YAAY;AACf,YAAM,IAAI,MAAM,4CAA4C;;AAE9D,QAAI,CAAC,gBAAgB;AACnB,YAAM,IAAI,MAAM,8CAA8C;;AAGhE,WAAO,OAAO,sBAAqB,EAAG,QAAQ,WAAW,sBAAqB,EAAG;IAC/E,eAAe,sBAAqB,EAAG;EAC3C;AC7LO,MAAM,UAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;WAIvDC,UAASC,IAAeF,IAAS;AAC/C,QAAIJ,KAAI,eAAeM,EAAC;AACxB,IAAAN,GAAE,CAAC,KAAKI,KAAI;AACZ,WAAO,eAAeJ,EAAC;EACzB;WAEgBO,SAAQD,IAAeF,IAAS;AAC9C,QAAIJ,KAAI,eAAeM,EAAC;AACxB,IAAAN,GAAE,CAAC,KAAKI;AACR,WAAO,eAAeJ,EAAC;EACzB;WAEgB,MAAMM,IAAeF,IAAS;AAC5C,QAAIJ,KAAI,eAAeM,EAAC;AACxB,IAAAN,GAAE,CAAC,KAAKI;AACR,WAAO,eAAeJ,EAAC;EACzB;WAKgB,UAAU,IAAI,IAAE;AAC9B,WAAO,SAAS,IAAI,EAAE,IAAI;EAC5B;WAEgB,SAAS,IAAI,IAAE;AAC7B,YAAQ,GAAG,QAAO,IAAK,GAAG,QAAO,MAAO,MAAO,KAAK,KAAK;EAC3D;WAEgB,UAAU,IAAI,IAAE;AAC9B,YAAQ,GAAG,QAAO,IAAK,GAAG,QAAO,MAAO,MAAO,KAAK;EACtD;WAEgB,YAAY,IAAI,IAAE;AAChC,YAAQ,GAAG,QAAO,IAAK,GAAG,QAAO,MAAO,MAAO;EACjD;WAEgB,YAAY,IAAI,IAAE;AAChC,YAAQ,GAAG,QAAO,IAAK,GAAG,QAAO,KAAM;EACzC;WAEgB,eAAe,IAAgB,IAAc;AAC3D,QAAI,QAAQQ,YAAW,EAAE;AACzB,QAAI,QAAQA,YAAW,EAAE;AAEzB,WAAO;MACL,OAAO;MACP,QAAQ;MACR,MAAM,KAAK,MAAM,SAAS,OAAO,KAAK,CAAC;MACvC,cAAe,GAAG,QAAO,IAAK,MAAM,QAAO,KAAO,GAAG,QAAO,IAAK,MAAM,QAAO;;EAElF;WAIgB,eAAe,IAAgB,IAAc;AAC3D,QAAIC,KAAI,cAAc,IAAI,EAAE;AAE5B,QAAIA,OAAM,QAAQA,KAAI,MAAM,GAAG;AAC7B,aAAOA,KAAI;;AAGb,WAAO;EACT;WAEgB,cAAc,IAAgB,IAAc;AAC1D,QAAI,SAAS,EAAE,MAAM,SAAS,EAAE,GAAG;AACjC,aAAO,KAAK,MAAM,SAAS,IAAI,EAAE,CAAC;;AAEpC,WAAO;EACT;WAIgBD,YAAWF,IAAa;AACtC,WAAO,eAAe;MACpBA,GAAE,eAAc;MAChBA,GAAE,YAAW;MACbA,GAAE,WAAU;KACb;EACH;WAEgBI,aAAYJ,IAAa;AACvC,WAAO,eAAe;MACpBA,GAAE,eAAc;MAChBA,GAAE,YAAW;MACbA,GAAE,WAAU;MACZA,GAAE,YAAW;KACd;EACH;WAEgBK,eAAcL,IAAa;AACzC,WAAO,eAAe;MACpBA,GAAE,eAAc;MAChBA,GAAE,YAAW;MACbA,GAAE,WAAU;MACZA,GAAE,YAAW;MACbA,GAAE,cAAa;KAChB;EACH;WAEgBM,eAAcN,IAAa;AACzC,WAAO,eAAe;MACpBA,GAAE,eAAc;MAChBA,GAAE,YAAW;MACbA,GAAE,WAAU;MACZA,GAAE,YAAW;MACbA,GAAE,cAAa;MACfA,GAAE,cAAa;KAChB;EACH;WAIgB,WAAW,QAAQ,KAAK,KAAG;AACzC,QAAIO,KAAI,OAAO,eAAc;AAC7B,QAAIC,KAAI,gBAAgB,QAAQD,IAAG,KAAK,GAAG;AAE3C,QAAIC,KAAI,GAAG;AACT,aAAO,gBAAgB,QAAQD,KAAI,GAAG,KAAK,GAAG;;AAGhD,QAAI,QAAQ,gBAAgB,QAAQA,KAAI,GAAG,KAAK,GAAG;AACnD,QAAI,SAAS,GAAG;AACd,aAAO,KAAK,IAAIC,IAAG,KAAK;;AAG1B,WAAOA;EACT;AAEA,WAAS,gBAAgB,QAAQ,MAAM,KAAK,KAAG;AAC7C,QAAI,iBAAiB,eAAe,CAAC,MAAM,GAAG,IAAI,gBAAgB,MAAM,KAAK,GAAG,CAAC,CAAC;AAClF,QAAI,WAAWN,YAAW,MAAM;AAChC,QAAI,OAAO,KAAK,MAAM,SAAS,gBAAgB,QAAQ,CAAC;AAExD,WAAO,KAAK,MAAM,OAAO,CAAC,IAAI;EAChC;AAGA,WAAS,gBAAgB,MAAM,KAAK,KAAG;AAErC,QAAI,MAAM,IAAI,MAAM;AAGpB,QAAI,SAAS,IAAI,eAAe,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,UAAS,IAAK,OAAO;AAErE,WAAO,CAAC,QAAQ,MAAM;EACxB;WAIgB,iBAAiB,MAAI;AACnC,WAAO;MACL,KAAK,YAAW;MAChB,KAAK,SAAQ;MACb,KAAK,QAAO;MACZ,KAAK,SAAQ;MACb,KAAK,WAAU;MACf,KAAK,WAAU;MACf,KAAK,gBAAe;;EAExB;WAEgB,iBAAiBR,IAAC;AAChC,WAAO,IAAI;MACTA,GAAE,CAAC;MACHA,GAAE,CAAC,KAAK;MACRA,GAAE,CAAC,KAAK,OAAO,IAAIA,GAAE,CAAC;;MACtBA,GAAE,CAAC,KAAK;MACRA,GAAE,CAAC,KAAK;MACRA,GAAE,CAAC,KAAK;IAAC;EAEb;WAEgB,eAAe,MAAI;AACjC,WAAO;MACL,KAAK,eAAc;MACnB,KAAK,YAAW;MAChB,KAAK,WAAU;MACf,KAAK,YAAW;MAChB,KAAK,cAAa;MAClB,KAAK,cAAa;MAClB,KAAK,mBAAkB;;EAE3B;WAEgB,eAAeA,IAAC;AAG9B,QAAIA,GAAE,WAAW,GAAG;AAClB,MAAAA,KAAIA,GAAE,OAAO,CAAC,CAAC,CAAC;;AAGlB,WAAO,IAAI,KAAK,KAAK,IAAG,MAAR,MAAaA,EAAgB,CAAA;EAC/C;WAIgB,YAAYM,IAAa;AACvC,WAAO,CAAC,MAAMA,GAAE,QAAO,CAAE;EAC3B;WAEgB,SAASA,IAAa;AACpC,WAAOA,GAAE,YAAW,IAAK,MAAO,KAAK,KACnCA,GAAE,cAAa,IAAK,MAAO,KAC3BA,GAAE,cAAa,IAAK,MACpBA,GAAE,mBAAkB;EACxB;WC1MgB,oBACd,OACAS,QACA,gBACA,cAAqB;AAErB,WAAO;MACL,YAAY,KAAI;MAChB;MACA,OAAKA;MACL,gBAAgB,kBAAkB,OAAO,OAAO;MAChD,cAAc,gBAAgB,OAAO,OAAO;;EAEhD;AC1BQ,MAAAC,kBAAmB,OAAO,UAAS;WAI3B,WAAW,UAAU,iBAAgB;AACnD,QAAI,OAAO,CAAA;AAEX,QAAI,iBAAiB;AACnB,eAAS,UAAQ,iBAAiB;AAChC,YAAI,cAAc,CAAA;AAGlB,iBAASjB,KAAI,SAAS,SAAS,GAAGA,MAAK,GAAGA,MAAK,GAAG;AAChD,cAAI,MAAM,SAASA,EAAC,EAAE,MAAI;AAE1B,cAAI,OAAO,QAAQ,YAAY,KAAK;AAClC,wBAAY,QAAQ,GAAG;qBACd,QAAQ,QAAW;AAC5B,iBAAK,MAAI,IAAI;AACb;;;AAKJ,YAAI,YAAY,QAAQ;AACtB,eAAK,MAAI,IAAI,WAAW,WAAW;;;;AAMzC,aAASA,KAAI,SAAS,SAAS,GAAGA,MAAK,GAAGA,MAAK,GAAG;AAChD,UAAI,QAAQ,SAASA,EAAC;AAEtB,eAAS,UAAQ,OAAO;AACtB,YAAI,EAAE,UAAQ,OAAO;AACnB,eAAK,MAAI,IAAI,MAAM,MAAI;;;;AAK7B,WAAO;EACT;WAEgB,WAAWkB,OAAM,MAAI;AACnC,QAAI,WAAW,CAAA;AAEf,aAASC,QAAOD,OAAM;AACpB,UAAI,KAAKA,MAAKC,IAAG,GAAGA,IAAG,GAAG;AACxB,iBAASA,IAAG,IAAID,MAAKC,IAAG;;;AAI5B,WAAO;EACT;WAEgB,QACdD,OACA,MAAmD;AAEnD,QAAI,UAAU,CAAA;AAEd,aAASC,QAAOD,OAAM;AACpB,cAAQC,IAAG,IAAI,KAAKD,MAAKC,IAAG,GAAGA,IAAG;;AAGpC,WAAO;EACT;WAEgB,YAAYlB,IAAC;AAC3B,QAAIiB,QAAO,CAAA;AAEX,aAAiB,KAAA,GAAA,MAAAjB,IAAA,KAAA,IAAA,QAAA,MAAG;AAAf,UAAI,OAAI,IAAA,EAAA;AACX,MAAAiB,MAAK,IAAI,IAAI;;AAGf,WAAOA;EACT;WAcgB,kBAAkB,KAAG;AACnC,QAAIE,KAAI,CAAA;AAER,aAASC,QAAO,KAAK;AACnB,MAAAD,GAAE,KAAK,IAAIC,IAAG,CAAC;;AAGjB,WAAOD;EACT;WAEgB,aAAa,MAAM,MAAI;AACrC,QAAI,SAAS,MAAM;AACjB,aAAO;;AAGT,aAASC,QAAO,MAAM;AACpB,UAAIC,gBAAe,KAAK,MAAMD,IAAG,GAAG;AAClC,YAAI,EAAEA,QAAO,OAAO;AAClB,iBAAO;;;;AAKb,aAASA,QAAO,MAAM;AACpB,UAAIC,gBAAe,KAAK,MAAMD,IAAG,GAAG;AAClC,YAAI,KAAKA,IAAG,MAAM,KAAKA,IAAG,GAAG;AAC3B,iBAAO;;;;AAKb,WAAO;EACT;WAEgB,gBAAgB,MAAM,MAAI;AACxC,QAAI,OAAiB,CAAA;AAErB,aAASA,QAAO,MAAM;AACpB,UAAIC,gBAAe,KAAK,MAAMD,IAAG,GAAG;AAClC,YAAI,EAAEA,QAAO,OAAO;AAClB,eAAK,KAAKA,IAAG;;;;AAKnB,aAASA,QAAO,MAAM;AACpB,UAAIC,gBAAe,KAAK,MAAMD,IAAG,GAAG;AAClC,YAAI,KAAKA,IAAG,MAAM,KAAKA,IAAG,GAAG;AAC3B,eAAK,KAAKA,IAAG;;;;AAKnB,WAAO;EACT;WASgB,YAAY,UAAU,UAAU,eAAsC;AAAtC,QAAA,kBAAA,QAAA;AAAA,sBAAA,CAAA;IAAsC;AACpF,QAAI,aAAa,UAAU;AACzB,aAAO;;AAGT,aAASA,QAAO,UAAU;AACxB,UAAIA,QAAO,YAAY,eAAe,SAASA,IAAG,GAAG,SAASA,IAAG,GAAG,cAAcA,IAAG,CAAC;AAAG;WAElF;AACL,eAAO;;;AAKX,aAASA,QAAO,UAAU;AACxB,UAAI,EAAEA,QAAO,WAAW;AACtB,eAAO;;;AAIX,WAAO;EACT;AAKA,WAAS,eAAkB,MAAS,MAAS,YAA4B;AACvE,QAAI,SAAS,QAAQ,eAAe,MAAM;AACxC,aAAO;;AAET,QAAI,YAAY;AACd,aAAO,WAAW,MAAM,IAAI;;AAE9B,WAAO;EACT;WAEgB,gBACdE,OACA,YACA,UACA,MAAQ;AAFR,QAAA,eAAA,QAAA;AAAA,mBAAA;IAAc;AAEd,QAAA,SAAA,QAAA;AAAA,aAAA;IAAQ;AAER,QAAI,MAAc,CAAA;AAElB,QAAI,YAAY,MAAM;AACpB,iBAAW,OAAO,KAAKA,KAAI,EAAE;;AAG/B,aAASC,KAAI,YAAYA,KAAI,UAAUA,MAAK,MAAM;AAChD,UAAI,MAAMD,MAAKC,EAAC;AAEhB,UAAI,QAAQ,QAAW;AACrB,YAAI,KAAK,GAAG;;;AAIhB,WAAO;EACT;WCzLgB,eACd,SACA,eACA,SACA,gBAAoC;AAEpC,aAASA,KAAI,GAAGA,KAAI,eAAe,QAAQA,MAAK,GAAG;AACjD,UAAI,SAAS,eAAeA,EAAC,EAAE,MAAM,SAAS,OAAO;AAErD,UAAI,QAAQ;AACJ,YAAA,SAAW,QAAO;AACxB,YAAI,UAAU,MAAM;AAClB,mBAAS;AACT,cAAI,UAAU,MAAM;AAClB,qBAAS,OAAO;AAChB,gBAAI,UAAU,MAAM;AAClB,uBAAS;;;;AAKf,eAAO;UACL;UACA,UAAU,OAAO;UACjB,UAAU,OAAO;UACjB,QAAQA;;;;AAKd,WAAO;EACT;WAEgB,gBAAgB,YAAwB,cAAyB,SAAwB;AACjG,QAAA,UAAkC,QAAO,SAAhC,cAAyB,QAAO,aAAnBC,WAAY,QAAO;AACzC,QAAA,OAAoB,WAAU,MAAxBC,aAAc,WAAU;AAIpC,IAAAA,aAAY,WAAWA,YAAW,SAACC,WAAuB;AAAK,aAAA,CAAC,KAAKA,UAAS,KAAK,EAAE;IAAY,CAAA;AAEjG,aAAS,SAAS,MAAM;AACtB,UAAI,MAAM,KAAK,KAAK;AAEpB,UAAI,IAAI,cAAc;AACd,YAAAC,YAAa,IAAI,aAAY;AAEnC,YAAI,CAACA,WAAU;AACb,UAAAA,YAAW,IAAI,SACbH,SAAQ,6BACRA,SAAQ;;AAGZ,YAAI,SAAS,sBAAsB,KAAKG,WAAU,cAAc,SAAS,YAAY,cAAc;AAEnG,iBAAkB,KAAA,GAAA,WAAA,QAAA,KAAA,SAAA,QAAA,MAAQ;AAArB,cAAIC,SAAK,SAAA,EAAA;AACZ,cAAI,WAAW,oBAAoB,OAAO;YACxC,OAAKA;YACL,KAAK,QAAQ,IAAIA,QAAOD,SAAQ;WACjC;AACD,UAAAF,WAAU,SAAS,UAAU,IAAI;;;;AAKvC,WAAO,EAAE,MAAM,WAASA,WAAA;EAC1B;AAKA,WAAS,sBACP,UACAE,WACA,cACA,SACA,gBAAoC;AAEpC,QAAI,UAAU,eAAe,SAAS,aAAa,MAAM;AACzD,QAAI,UAAU,QAAQ,OACpB,SAAS,aAAa,UACtB;MACE,OAAO,QAAQ,SAAS,aAAa,OAAOA,SAAQ;MACpD,KAAK,aAAa;OAEpB,OAAO;AAIT,QAAI,SAAS,QAAQ;AACnB,gBAAU,QAAQ,IAAIE,WAAU;;AAGlC,WAAO;EACT;ACvFA,MAAM,WAAW;WAID,eAAe,OAAsB,MAAa;;AAChE,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,YAAY,KAAK;;AAG1B,QAAI,OAAO,UAAU,YAAY,OAAO;AACtC,aAAO,YAAY,KAAK;;AAG1B,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,aAAW,KAAA,CAAA,GAAG,GAAC,QAAQ,cAAc,IAAG,OAAK,GAAA;;AAEtD,WAAO;EACT;AAEA,WAAS,YAAYC,IAAS;AAC5B,QAAIC,KAAI,SAAS,KAAKD,EAAC;AACvB,QAAIC,IAAG;AACL,UAAIC,QAAOD,GAAE,CAAC,IAAI,KAAK;AACvB,aAAO;QACL,OAAO;QACP,QAAQ;QACR,MAAMC,SAAQD,GAAE,CAAC,IAAI,SAASA,GAAE,CAAC,GAAG,EAAE,IAAI;QAC1C,cAAcC,UACXD,GAAE,CAAC,IAAI,SAASA,GAAE,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,KAAK;SAC3CA,GAAE,CAAC,IAAI,SAASA,GAAE,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK;SACtCA,GAAE,CAAC,IAAI,SAASA,GAAE,CAAC,GAAG,EAAE,IAAI,KAAK;SACjCA,GAAE,CAAC,IAAI,SAASA,GAAE,CAAC,GAAG,EAAE,IAAI;;;AAInC,WAAO;EACT;AAEA,WAAS,YAAY,KAAwB;AAC3C,QAAIE,YAAqB;MACvB,OAAO,IAAI,SAAS,IAAI,QAAQ;MAChC,QAAQ,IAAI,UAAU,IAAI,SAAS;MACnC,MAAM,IAAI,QAAQ,IAAI,OAAO;MAC7B,eACG,IAAI,SAAS,IAAI,QAAQ,KAAK,KAAK,KAAK;OACxC,IAAI,WAAW,IAAI,UAAU,KAAK,KAAK;OACvC,IAAI,WAAW,IAAI,UAAU,KAAK;OAClC,IAAI,gBAAgB,IAAI,eAAe,IAAI,MAAM;;;AAGtD,QAAI,QAAQ,IAAI,SAAS,IAAI;AAC7B,QAAI,OAAO;AACT,MAAAA,UAAS,QAAQ,QAAQ;AACzB,MAAAA,UAAS,iBAAiB;;AAG5B,WAAOA;EACT;WAIgB,eAAe,IAAc,IAAY;AACvD,WAAO,GAAG,UAAU,GAAG,SACrB,GAAG,WAAW,GAAG,UACjB,GAAG,SAAS,GAAG,QACf,GAAG,iBAAiB,GAAG;EAC3B;WAoBgB,kBAAkB,IAAc,IAAY;AAC1D,WAAO;MACL,OAAO,GAAG,QAAQ,GAAG;MACrB,QAAQ,GAAG,SAAS,GAAG;MACvB,MAAM,GAAG,OAAO,GAAG;MACnB,cAAc,GAAG,eAAe,GAAG;;EAEvC;WAcgB,aAAa,KAAa;AACxC,WAAO,YAAY,GAAG,IAAI;EAC5B;WAEgB,cAAc,KAAa;AACzC,WAAO,YAAY,GAAG,IAAI;EAC5B;WAEgB,YAAY,KAAa;AACvC,WAAO,UAAU,GAAG,IAAI;EAC1B;WAcgB,UAAU,KAAa;AACrC,WAAO,IAAI,SAAS,MAAM,SACxB,IAAI,UAAU,KAAK,SACnB,IAAI,OAAO,QACX,IAAI;EACR;WA2BgB,4BAA4B,KAAa;AACvD,QAAI,KAAK,IAAI;AACb,QAAI,IAAI;AACN,UAAI,KAAK,QAAS,GAAG;AACnB,eAAO,EAAE,MAAM,eAAe,OAAO,GAAE;;AAEzC,UAAI,MAAM,MAAO,QAAQ,GAAG;AAC1B,eAAO,EAAE,MAAM,UAAU,OAAO,KAAK,IAAI;;AAE3C,UAAI,MAAM,MAAO,KAAK,QAAQ,GAAG;AAC/B,eAAO,EAAE,MAAM,UAAU,OAAO,MAAM,MAAO,IAAG;;AAElD,UAAI,IAAI;AACN,eAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,MAAO,KAAK,IAAG;;;AAGvD,QAAI,IAAI,MAAM;AACZ,UAAI,IAAI,kBAAkB,IAAI,OAAO,MAAM,GAAG;AAC5C,eAAO,EAAE,MAAM,QAAQ,OAAO,IAAI,OAAO,EAAC;;AAE5C,aAAO,EAAE,MAAM,OAAO,OAAO,IAAI,KAAI;;AAEvC,QAAI,IAAI,QAAQ;AACd,aAAO,EAAE,MAAM,SAAS,OAAO,IAAI,OAAM;;AAE3C,QAAI,IAAI,OAAO;AACb,aAAO,EAAE,MAAM,QAAQ,OAAO,IAAI,MAAK;;AAEzC,WAAO,EAAE,MAAM,eAAe,OAAO,EAAC;EACxC;WC7NgB,eAAe,QAAoB,gBAAyB,eAA8B;AAA9B,QAAA,kBAAA,QAAA;AAAA,sBAAA;IAA8B;AACxG,QAAIC,KAAI,OAAO,YAAW;AAE1B,IAAAA,KAAIA,GAAE,QAAQ,QAAQ,EAAE;AAExB,QAAI,eAAe;AACjB,MAAAA,KAAIA,GAAE,QAAQ,cAAc,EAAE;;AAGhC,QAAIA,GAAE,SAAS,IAAI;AACjB,UAAI,kBAAkB,MAAM;AAC1B,QAAAA,KAAIA,GAAE,QAAQ,KAAK,EAAE;iBACZ,mBAAmB,GAAG;AAC/B,QAAAA,KAAIA,GAAE,QAAQ,KAAK,qBAAqB,gBAAgB,IAAI,CAAC;;;AAKjE,WAAOA;EACT;WAKgB,gBAAgB,QAAkB;AAChD,WAAO,OAAO,YAAW,EAAG,QAAQ,QAAQ,EAAE;EAChD;WASgB,qBAAqB,SAAiB,OAAa;AAAb,QAAA,UAAA,QAAA;AAAA,cAAA;IAAa;AACjE,QAAIC,QAAO,UAAU,IAAI,MAAM;AAC/B,QAAI,MAAM,KAAK,IAAI,OAAO;AAC1B,QAAI,QAAQ,KAAK,MAAM,MAAM,EAAE;AAC/B,QAAI,OAAO,KAAK,MAAM,MAAM,EAAE;AAE9B,QAAI,OAAO;AACT,aAAUA,QAAO,SAAS,OAAO,CAAC,IAAC,MAAI,SAAS,MAAM,CAAC;;AAEzD,WAAO,QAAMA,QAAO,SAAQ,OAAO,MAAI,SAAS,MAAM,CAAC,IAAM;EAC/D;WCdgB,cAAc,IAAI,IAAI,cAAkC;AACtE,QAAI,OAAO,IAAI;AACb,aAAO;;AAGT,QAAI,MAAM,GAAG;AACb,QAAIC;AAEJ,QAAI,QAAQ,GAAG,QAAQ;AACrB,aAAO;;AAGT,SAAKA,KAAI,GAAGA,KAAI,KAAKA,MAAK,GAAG;AAC3B,UAAI,EAAE,eAAe,aAAa,GAAGA,EAAC,GAAG,GAAGA,EAAC,CAAC,IAAI,GAAGA,EAAC,MAAM,GAAGA,EAAC,IAAI;AAClE,eAAO;;;AAIX,WAAO;EACT;WClDgB,QACd,YACA,aACA,cAAiC;AAEjC,QAAI;AACJ,QAAI;AAEJ,WAAO,WAAA;AAAU,UAAA,UAAA,CAAA;eAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAgB;AAAhB,gBAAA,EAAA,IAAA,UAAA,EAAA;;AACf,UAAI,CAAC,aAAa;AAChB,qBAAa,WAAW,MAAM,MAAM,OAAO;iBAClC,CAAC,cAAc,aAAa,OAAO,GAAG;AAC/C,YAAI,cAAc;AAChB,uBAAa,UAAU;;AAGzB,YAAI,MAAM,WAAW,MAAM,MAAM,OAAO;AAExC,YAAI,CAAC,eAAe,CAAC,YAAY,KAAK,UAAU,GAAG;AACjD,uBAAa;;;AAIjB,oBAAc;AAEd,aAAO;;EAEX;WAEgB,cACd,YACA,aACA,cAAiC;AAHnC,QAAA,QAAA;AAKE,QAAI;AACJ,QAAI;AAEJ,WAAO,SAAC,QAAW;AACjB,UAAI,CAAC,YAAY;AACf,qBAAa,WAAW,KAAK,OAAM,MAAM;iBAChC,CAAC,aAAa,YAAY,MAAM,GAAG;AAC5C,YAAI,cAAc;AAChB,uBAAa,UAAU;;AAGzB,YAAI,MAAM,WAAW,KAAK,OAAM,MAAM;AAEtC,YAAI,CAAC,eAAe,CAAC,YAAY,KAAK,UAAU,GAAG;AACjD,uBAAa;;;AAIjB,mBAAa;AAEb,aAAO;;EAEX;ACpDA,MAAM,mCAAmC;IACvC,MAAM;IACN,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,YAAY;;AAGd,MAAM,gCAAgC;IACpC,cAAc;IACd,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,SAAS;IACT,MAAM;IACN,QAAQ;IACR,QAAQ;;AAGV,MAAM,cAAc;AACpB,MAAM,WAAW;AACjB,MAAM,iBAAiB;AACvB,MAAM,SAAS;AACf,MAAM,SAAS;AAUf,MAAA;;IAAA,WAAA;AAME,eAAAC,iBAAY,gBAAsC;AAChD,YAAI,oBAAyB,CAAA;AAC7B,YAAI,mBAAwB,CAAA;AAC5B,YAAI,WAAW;AAEf,iBAAS,UAAQ,gBAAgB;AAC/B,cAAI,UAAQ,kCAAkC;AAC5C,6BAAiB,MAAI,IAAI,eAAe,MAAI;AAC5C,uBAAW,KAAK,IAAI,iCAAiC,MAAI,GAAG,QAAQ;iBAC/D;AACL,8BAAkB,MAAI,IAAI,eAAe,MAAI;AAE7C,gBAAI,UAAQ,+BAA+B;AACzC,yBAAW,KAAK,IAAI,8BAA8B,MAAI,GAAG,QAAQ;;;;AAKvE,aAAK,oBAAoB;AACzB,aAAK,mBAAmB;AACxB,aAAK,WAAW;AAEhB,aAAK,sBAAsB,QAAQ,mBAAmB;;AAGxD,MAAAA,iBAAA,UAAA,SAAA,SAAO,MAAmB,SAA8B;AACtD,eAAO,KAAK,oBAAoB,KAAK,mBAAmB,KAAK,kBAAkB,OAAO,EAAE,IAAI;;AAG9F,MAAAA,iBAAA,UAAA,cAAA,SAAYC,QAAoBC,MAAkB,SAAgC,wBAA+B;AAC3G,YAAA,KAA0C,MAAxC,oBAAiB,GAAA,mBAAE,mBAAgB,GAAA;AAEzC,YAAI,eAAe,0BAA0BD,OAAM,QAAQC,KAAI,QAAQ,QAAQ,cAAc;AAC7F,YAAI,CAAC,cAAc;AACjB,iBAAO,KAAK,OAAOD,QAAO,OAAO;;AAGnC,YAAI,wBAAwB;AAC5B,YACE,wBAAwB;SACvB,kBAAkB,SAAS,aAAa,kBAAkB,SAAS,eACnE,kBAAkB,UAAU,aAAa,kBAAkB,UAAU,eACrE,kBAAkB,QAAQ,aAAa,kBAAkB,QAAQ,YAClE;AACA,kCAAwB;;AAG1B,YAAI,QAAQ,KAAK,OAAOA,QAAO,OAAO;AACtC,YAAI,QAAQ,KAAK,OAAOC,MAAK,OAAO;AAEpC,YAAI,UAAU,OAAO;AACnB,iBAAO;;AAGT,YAAI,mBAAmB,gCAAgC,mBAAmB,qBAAqB;AAC/F,YAAI,wBAAwB,oBAAoB,kBAAkB,kBAAkB,OAAO;AAC3F,YAAI,WAAW,sBAAsBD,MAAK;AAC1C,YAAI,WAAW,sBAAsBC,IAAG;AAExC,YAAI,YAAY,oBAAoB,OAAO,UAAU,OAAO,QAAQ;AACpE,YAAI,YAAY,iBAAiB,aAAa,0BAA0B,QAAQ,oBAAoB;AAEpG,YAAI,WAAW;AACb,iBAAO,UAAU,SAAS,WAAW,YAAY,WAAW,UAAU;;AAGxE,eAAO,QAAQ,YAAY;;AAG7B,MAAAF,iBAAA,UAAA,iBAAA,WAAA;AACE,gBAAQ,KAAK,UAAQ;UACnB,KAAK;UACL,KAAK;UACL,KAAK;AACH,mBAAO;UACT,KAAK;AACH,mBAAO;UACT,KAAK;AACH,mBAAO;UACT,KAAK;AACH,mBAAO;UACT;AACE,mBAAO;;;AAGf,aAAAA;IAAA,EAAC;;AAED,WAAS,oBACP,mBACA,kBACA,SAA8B;AAE9B,QAAI,sBAAsB,OAAO,KAAK,iBAAiB,EAAE;AAEzD,QAAI,wBAAwB,KAAK,kBAAkB,iBAAiB,SAAS;AAC3E,aAAO,SAAC,MAAiB;AAAK,eAC5B,qBAAqB,KAAK,cAAc;MAAC;;AAI7C,QAAI,wBAAwB,KAAK,iBAAiB,MAAM;AACtD,aAAO,SAAC,MAAiB;AAAK,eAC5B,iBACE,QAAQ,kBAAkB,KAAK,MAAM,GACrC,QAAQ,UACR,QAAQ,cACR,QAAQ,QACR,iBAAiB,IAAI;MACtB;;AAIL,WAAO,0BAA0B,mBAAmB,kBAAkB,OAAO;EAC/E;AAEA,WAAS,0BACP,mBACA,kBACA,SAA8B;AAE9B,wBAAiBG,UAAA,CAAA,GAAQ,iBAAiB;AAC1C,uBAAgBA,UAAA,CAAA,GAAQ,gBAAgB;AAExC,qBAAiB,mBAAmB,gBAAgB;AAEpD,sBAAkB,WAAW;AAE7B,QAAI,eAAe,IAAI,KAAK,eAAe,QAAQ,OAAO,OAAO,iBAAiB;AAClF,QAAI;AAEJ,QAAI,iBAAiB,gBAAgB;AACnC,UAAI,YAASA,UAAA,CAAA,GAAQ,iBAAiB;AACtC,aAAO,UAAU;AACjB,mBAAa,IAAI,KAAK,eAAe,QAAQ,OAAO,OAAO,SAAS;;AAGtE,WAAO,SAAC,MAAiB;AACjB,UAAA,SAAW,KAAI;AACrB,UAAIC;AAEJ,UAAI,cAAc,CAAC,OAAO,cAAa,GAAI;AACzC,QAAAA,UAAS;aACJ;AACL,QAAAA,UAAS;;AAGX,UAAIC,KAAID,QAAO,OAAO,MAAM;AAE5B,aAAO,YAAYC,IAAG,MAAM,mBAAmB,kBAAkB,OAAO;;EAE5E;AAEA,WAAS,iBAAiB,mBAAmB,kBAAgB;AAG3D,QAAI,kBAAkB,cAAc;AAClC,UAAI,CAAC,kBAAkB,MAAM;AAC3B,0BAAkB,OAAO;;AAE3B,UAAI,CAAC,kBAAkB,QAAQ;AAC7B,0BAAkB,SAAS;;;AAK/B,QAAI,kBAAkB,iBAAiB,QAAQ;AAC7C,wBAAkB,eAAe;;AAInC,QAAI,iBAAiB,mBAAmB,kBAAkB,UAAU,kBAAkB,cAAc;AAClG,aAAO,iBAAiB;;EAE5B;AAEA,WAAS,YAAYA,IAAW,MAAmB,mBAAmB,kBAAkB,SAA8B;AACpH,IAAAA,KAAIA,GAAE,QAAQ,QAAQ,EAAE;AAExB,QAAI,kBAAkB,iBAAiB,SAAS;AAC9C,MAAAA,KAAI,aACFA,IACC,QAAQ,aAAa,SAAS,KAAK,kBAAkB,OACpD;;QACA,qBAAqB,KAAK,cAAc;OAAC;;AAI/C,QAAI,iBAAiB,YAAY;AAC/B,MAAAA,KAAIA,GAAE,QAAQ,UAAU,EAAE,EAAE,KAAI;;AAGlC,QAAI,iBAAiB,gBAAgB;AACnC,MAAAA,KAAIA,GAAE,QAAQ,OAAO,EAAE;;AAMzB,QAAI,iBAAiB,aAAa,OAAO;AACvC,MAAAA,KAAIA,GAAE,QAAQ,aAAa,EAAE,EAAE,KAAI;eAC1B,iBAAiB,aAAa,UAAU;AACjD,MAAAA,KAAIA,GAAE,QAAQ,aAAa,SAAC,IAAI,IAAE;AAAK,eAAA,GAAG,kBAAiB;MAAE,CAAA;eACpD,iBAAiB,aAAa,SAAS;AAChD,MAAAA,KAAIA,GAAE,QAAQ,aAAa,SAAC,IAAI,IAAE;AAAK,eAAG,GAAG,kBAAiB,IAAE;MAAG,CAAA;eAC1D,iBAAiB,aAAa,aAAa;AACpD,MAAAA,KAAIA,GAAE,QAAQ,aAAa,SAAC,IAAE;AAAK,eAAA,GAAG,kBAAiB;MAAE,CAAA;;AAG3D,IAAAA,KAAIA,GAAE,QAAQ,gBAAgB,GAAG;AACjC,IAAAA,KAAIA,GAAE,KAAI;AAEV,WAAOA;EACT;AAEA,WAAS,aAAaA,IAAW,QAAc;AAC7C,QAAI,WAAW;AAEf,IAAAA,KAAIA,GAAE,QAAQ,QAAQ,WAAA;AACpB,iBAAW;AACX,aAAO;KACR;AAGD,QAAI,CAAC,UAAU;AACb,MAAAA,MAAK,MAAI;;AAGX,WAAOA;EACT;AAEA,WAAS,iBACP,KACA,UACA,cACA,QACA,SAAiD;AAEjD,QAAI,QAAQ,CAAA;AAEZ,QAAI,YAAY,QAAQ;AACtB,YAAM,KAAK,YAAY;eACd,YAAY,WAAW,YAAY,UAAU;AACtD,YAAM,KAAK,QAAQ;;AAGrB,QAAI,YAAY,UAAU,YAAY,SAAS;AAC7C,YAAM,KAAK,GAAG;;AAGhB,UAAM,KAAK,OAAO,mBAAmB,OAAO,GAAG,CAAC;AAEhD,QAAI,OAAO,QAAQ,cAAc,OAAO;AACtC,YAAM,QAAO;;AAGf,WAAO,MAAM,KAAK,EAAE;EACtB;AAOA,WAAS,0BAA0B,IAAgB,IAAgB,IAAkB;AACnF,QAAI,GAAG,cAAc,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG;AACjD,aAAO;;AAET,QAAI,GAAG,eAAe,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG;AACnD,aAAO;;AAET,QAAI,GAAG,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG;AAC/C,aAAO;;AAET,QAAI,SAAS,EAAE,MAAM,SAAS,EAAE,GAAG;AACjC,aAAO;;AAET,WAAO;EACT;AAEA,WAAS,gCAAgCC,UAAS,aAAW;AAC3D,QAAI,iBAAiB,CAAA;AAErB,aAAS,UAAQA,UAAS;AACxB,UACE,EAAE,UAAQ;MACV,8BAA8B,MAAI,KAAK,aACvC;AACA,uBAAe,MAAI,IAAIA,SAAQ,MAAI;;;AAIvC,WAAO;EACT;AAEA,WAAS,oBAAoB,OAAO,UAAU,OAAO,UAAQ;AAC3D,QAAI,KAAK;AACT,WAAO,KAAK,MAAM,QAAQ;AACxB,UAAI,SAAS,MAAM,QAAQ,UAAU,EAAE;AACvC,UAAI,WAAW,IAAI;AACjB;;AAGF,UAAI,UAAU,MAAM,OAAO,GAAG,MAAM;AACpC,WAAK,SAAS,SAAS;AACvB,UAAI,SAAS,MAAM,OAAO,EAAE;AAE5B,UAAI,KAAK;AACT,aAAO,KAAK,MAAM,QAAQ;AACxB,YAAI,SAAS,MAAM,QAAQ,UAAU,EAAE;AACvC,YAAI,WAAW,IAAI;AACjB;;AAGF,YAAI,UAAU,MAAM,OAAO,GAAG,MAAM;AACpC,aAAK,SAAS,SAAS;AACvB,YAAI,SAAS,MAAM,OAAO,EAAE;AAE5B,YAAI,YAAY,WAAW,WAAW,QAAQ;AAC5C,iBAAO;YACL,QAAQ;YACR,OAAO;;;;;AAMf,WAAO;EACT;WCpWgB,kBAAkB,UAAuB,gBAA8B;AACrF,QAAIC,KAAI,eAAe,cAAc,SAAS,MAAM;AAEpD,WAAO;MACL,QAAQ,SAAS;MACjB,gBAAgB,SAAS;MACzB,OAAOA;MACP,MAAMA,GAAE,CAAC;MACT,OAAOA,GAAE,CAAC;MACV,KAAKA,GAAE,CAAC;MACR,MAAMA,GAAE,CAAC;MACT,QAAQA,GAAE,CAAC;MACX,QAAQA,GAAE,CAAC;MACX,aAAaA,GAAE,CAAC;;EAEpB;WCpBgB,2BACdN,QACAC,MACA,SACA,wBAA+B;AAE/B,QAAI,YAAY,kBAAkBD,QAAO,QAAQ,cAAc;AAC/D,QAAI,UAAUC,OAAM,kBAAkBA,MAAK,QAAQ,cAAc,IAAI;AAErE,WAAO;MACL,MAAM;MACN,OAAO;MACP,KAAK;MACL,UAAU,QAAQ;MAClB,aAAa,QAAQ,OAAO;MAC5B,kBAAkB,0BAA0B,QAAQ;;EAExD;ACpBA,MAAA;;IAAA,WAAA;AAGE,eAAAM,cAAY,QAAc;AACxB,aAAK,SAAS;;AAGhB,MAAAA,cAAA,UAAA,SAAA,SAAO,MAAmB,SAAgC,wBAA+B;AACvF,eAAO,QAAQ,aAAa,KAAK,QAAQ,2BAA2B,MAAM,MAAM,SAAS,sBAAsB,CAAC;;AAGlH,MAAAA,cAAA,UAAA,cAAA,SAAYP,QAAoBC,MAAkB,SAAgC,wBAA+B;AAC/G,eAAO,QAAQ,aAAa,KAAK,QAAQ,2BAA2BD,QAAOC,MAAK,SAAS,sBAAsB,CAAC;;AAEpH,aAAAM;IAAA,EAAC;;ACpBD,MAAA;;IAAA,WAAA;AAGE,eAAAC,eAAY,MAAuB;AACjC,aAAK,OAAO;;AAGd,MAAAA,eAAA,UAAA,SAAA,SAAO,MAAmB,SAAgC,wBAA+B;AACvF,eAAO,KAAK,KAAK,2BAA2B,MAAM,MAAM,SAAS,sBAAsB,CAAC;;AAG1F,MAAAA,eAAA,UAAA,cAAA,SAAYR,QAAoBC,MAAkB,SAAgC,wBAA+B;AAC/G,eAAO,KAAK,KAAK,2BAA2BD,QAAOC,MAAK,SAAS,sBAAsB,CAAC;;AAE5F,aAAAO;IAAA,EAAC;;WCZe,gBAAgB,OAAqB;AACnD,QAAI,OAAO,UAAU,YAAY,OAAO;AACtC,aAAO,IAAI,gBAAgB,KAAK;;AAGlC,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,IAAI,aAAa,KAAK;;AAG/B,QAAI,OAAO,UAAU,YAAY;AAC/B,aAAO,IAAI,cAAc,KAA0B;;AAGrD,WAAO;EACT;MC4Ba,uBAAuB;IAClC,iBAAiB;IACjB,kBAAkB;IAClB,UAAU;IACV,sBAAsB;IACtB,aAAa;IACb,eAAe;IACf,4BAA4B;IAC5B,2BAA2B;IAC3B,kBAAkB;IAClB,YAAY;IACZ,iBAAiB;IACjB,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IAEpB,YAAY;IACZ,iBAAiB;IACjB,qBAAqB;IACrB,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IAEtB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,oBAAoB;IAEpB,aAAa;IACb,aAAa;IACb,UAAU;IAEV,uBAAuB;IACvB,aAAa;IACb,sBAAsB;IACtB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;IAEvB,UAAU;IAEV,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IAEjB,cAAc;IACd,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,yBAAyB;IAEzB,qBAAqB;IACrB,cAAc;IACd,YAAY;IACZ,UAAU;IACV,eAAe;IACf,UAAU;IACV,SAAS;IACT,QAAQ;IACR,aAAa;IACb,oBAAoB;IACpB,YAAY;IACZ,wBAAwB;IACxB,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,kBAAkB;IAElB,oBAAoB;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,YAAY;IACZ,QAAQ;IACR,eAAe;IACf,WAAW;IACX,kBAAkB;IAClB,yBAAyB;IACzB,kBAAkB;IAClB,iBAAiB;IACjB,UAAU;IACV,cAAc;IACd,2BAA2B;IAC3B,eAAe;IACf,aAAa;IACb,KAAK;IACL,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,YAAY;IACZ,eAAe;IACf,oBAAoB;IACpB,oBAAoB;IAEpB,cAAc;IACd,oBAAoB;IACpB,uBAAuB;IACvB,cAAc;IACd,iBAAiB;IACjB,YAAY;IACZ,sBAAsB;IACtB,kBAAkB;IAClB,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,kBAAkB;IAElB,kBAAkB;IAClB,eAAe;IACf,aAAa;IAEb,WAAW;IACX,gBAAgB;IAEhB,iBAAiB;IAEjB,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IAErB,qBAAqB;IACrB,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IAEtB,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,mBAAmB;IAEnB,YAAY;IACZ,kBAAkB;IAClB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IAEnB,cAAc;IACd,UAAU;IACV,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,cAAc;IACd,mBAAmB;IACnB,YAAY;IACZ,sBAAsB;IACtB,qBAAqB;IAErB,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,SAAS;IACT,UAAU;IACV,UAAU;IACV,eAAe;IACf,eAAe;IACf,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,aAAa;IAEb,kBAAkB;;IAGlB,cAAc;IAEd,UAAU;IACV,aAAa;IACb,WAAW;IACX,UAAU;IACV,WAAW;IAEX,eAAe;IACf,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;;MAeV,uBAAuB;IAClC,cAAc;IACd,uBAAuB;IACvB,qBAAqB;IACrB,2BAA2B;IAC3B,4BAA4B,EAAE,KAAK,EAAC;IACpC,oBAAoB;IACpB,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,eAAe;MACb,OAAO;MACP,QAAQ;MACR,KAAK;;IAEP,UAAU;IACV,aAAa;IACb,uBAAuB;IACvB,UAAU;IACV,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,cAAc;IACd,YAAY;IACZ,UAAU;IACV,eAAe;IACf,UAAU;IACV,SAAS,CAAA;IACT,QAAQ;IACR,aAAa;IACb,oBAAoB;IACpB,YAAY;IACZ,wBAAwB;IACxB,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,kBAAkB,EAAE,OAAO,QAAQ,KAAK,WAAW,MAAM,UAAS;IAClE,oBAAoB;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,kBAAkB;;AAWb,MAAM,6BAA6B;IACxC,UAAU;IACV,WAAW;IACX,UAAU;IACV,aAAa;IACb,aAAa;IACb,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,QAAQ;IACR,UAAU;IACV,SAAS;;IAGT,UAAU;IACV,cAAc;IACd,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,SAAS;IACT,gBAAgB;;AAeX,MAAM,2BAA2B;IACtC,YAAY;IACZ,aAAa;IACb,OAAO;IACP,SAAS;IACT,eAAe;IACf,QAAQ;IACR,cAAc;;AAmBT,MAAM,6BAET;IACF,eAAe;IACf,eAAe;IACf,YAAY;IACZ,aAAa;IACb,aAAa;IACb,eAAe;;AAGjB,WAAS,oBAAoBF,IAAGG,IAAC;AAC/B,QAAI,OAAOH,OAAM,YAAY,OAAOG,OAAM,YAAYH,MAAKG,IAAG;AAC5D,aAAO,aAAaH,IAAGG,EAAC;;AAE1B,WAAOH,OAAMG;EACf;AAKO,MAAM,uBAET;IACF,MAAM;IACN,WAAW;IACX,YAAY;IACZ,eAAe;IACf,2BAA2B;IAC3B,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,UAAU;IACV,aAAa;;WAsBC,gBAAgB,YAAwB;AACtD,WAAO,WAAW,YAAY,0BAA0B;EAC1D;WAEgB,YACd,OACA,UAAkB;AAKlB,QAAI,UAAU,CAAA;AACd,QAAI,QAAQ,CAAA;AAEZ,aAAS,YAAY,UAAU;AAC7B,UAAI,YAAY,OAAO;AACrB,gBAAQ,QAAQ,IAAI,SAAS,QAAQ,EAAE,MAAM,QAAQ,CAAC;;;AAI1D,aAAS,YAAY,OAAO;AAC1B,UAAI,EAAE,YAAY,WAAW;AAC3B,cAAM,QAAQ,IAAI,MAAM,QAAQ;;;AAIpC,WAAO,EAAE,SAAS,MAAK;EACzB;WAiCgB,SAAY,KAAM;AAChC,WAAO;EACT;WC5dgB,YACd,WACA,aACA,SACA,gBAAwB;AAExB,QAAI,aAAa,sBAAqB;AACtC,QAAI,gBAAgB,mBAAmB,OAAO;AAE9C,aAAqB,KAAA,GAAA,cAAA,WAAA,KAAA,YAAA,QAAA,MAAW;AAA3B,UAAI,WAAQ,YAAA,EAAA;AACf,UAAI,QAAQ,WAAW,UAAU,aAAa,SAAS,gBAAgB,aAAa;AAEpF,UAAI,OAAO;AACT,0BAAkB,OAAO,UAAU;;;AAIvC,WAAO;EACT;WAEgB,kBAAkB,OAAmB,YAAgD;AAAhD,QAAA,eAAA,QAAA;AAAA,mBAAyB,sBAAqB;IAAE;AACnG,eAAW,KAAK,MAAM,IAAI,KAAK,IAAI,MAAM;AAEzC,QAAI,MAAM,UAAU;AAClB,iBAAW,UAAU,MAAM,SAAS,UAAU,IAAI,MAAM;;AAG1D,WAAO;EACT;WAKgB,kBAAkB,YAAwB,YAAkB;AAC1E,QAAI,WAAW,WAAW,UAAU,UAAU;AAE9C,QAAI,UAAU;AACZ,UAAI,QAAM,WAAW,KAAK,SAAS,KAAK;AAGxC,UAAI,WAAW,qBAAqB,YAAY,SAAC,SAAO;AAAK,eAAA,mBAAmB,OAAK,OAAO;MAAC,CAAA;AAI7F,eAAS,KAAK,MAAI,KAAK,IAAI;AAC3B,eAAS,UAAU,SAAS,UAAU,IAAI;AAE1C,aAAO;;AAGT,WAAO,sBAAqB;EAC9B;AAEA,WAAS,mBAAmB,MAAgB,MAAc;AACxD,WAAO,QAAQ,KAAK,WAAW,KAAK,YAAY,KAAK,OAAO;EAC9D;WAEgB,wBAAqB;AACnC,WAAO,EAAE,MAAM,CAAA,GAAI,WAAW,CAAA,EAAE;EAClC;WAEgB,iBAAiB,QAAoB,QAAkB;AACrE,WAAO;MACL,MAAIP,UAAAA,UAAA,CAAA,GAAO,OAAO,IAAI,GAAK,OAAO,IAAI;MACtC,WAASA,UAAAA,UAAA,CAAA,GAAO,OAAO,SAAS,GAAK,OAAO,SAAS;;EAEzD;WAEgB,qBAAqB,YAAwB,YAA2C;AACtG,QAAI,OAAO,WAAW,WAAW,MAAM,UAAU;AACjD,QAAIQ,aAAY,WAAW,WAAW,WAAW,SAAC,UAAuB;AAAK,aAC5E,KAAK,SAAS,KAAK;KACpB;AACD,WAAO,EAAE,MAAM,WAASA,WAAA;EAC1B;WAEgB,qBAAqB,QAAoB,KAAe;AAChE,QAAA,OAAoB,OAAM,MAApBA,aAAc,OAAM;AAChC,QAAI,eAA8C,CAAA;AAClD,QAAI,oBAA6D,CAAA;AAEjE,aAAS,SAAS,MAAM;AACtB,UAAI,CAAC,IAAI,KAAK,KAAK,GAAG;AACpB,qBAAa,KAAK,IAAI,KAAK,KAAK;;;AAIpC,aAAS,cAAcA,YAAW;AAChC,UACE,CAAC,IAAI,UAAU,UAAU;MACzB,aAAaA,WAAU,UAAU,EAAE,KAAK,GACxC;AACA,0BAAkB,UAAU,IAAIA,WAAU,UAAU;;;AAIxD,WAAO;MACL,MAAM;MACN,WAAW;;EAEf;WCxGgB,oBAAoB,OAAwB,SAAwB;AAClF,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,YAAY,OAAO,MAAM,SAAS,IAAI;;AAC7C,QAAI,OAAO,UAAU,YAAY,OAAO;AACxC,aAAO,YAAY,CAAC,KAAK,GAAG,MAAM,SAAS,IAAI;;AAC/C,QAAI,SAAS,MAAM;AACnB,aAAO,OAAO,KAAK;;AAErB,WAAO;EACT;WCrBgB,gBAAgB,KAAoB;AAClD,QAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,aAAO;;AAGT,QAAI,OAAO,QAAQ,UAAU;AAC3B,aAAO,IAAI,MAAM,KAAK;;AAGxB,WAAO,CAAA;EACT;ACHO,MAAM,oBAAoB;IAC/B,SAAS;IACT,UAAU;IACV,eAAe;IACf,kBAAkB;IAClB,YAAY;IACZ,SAAS;IACT,OAAO;IACP,WAAW;IACX,YAAY;IACZ,OAAO;IACP,iBAAiB;IACjB,aAAa;IACb,WAAW;;AAGb,MAAM,iBAA0B;IAC9B,SAAS;IACT,eAAe;IACf,kBAAkB;IAClB,aAAa,CAAA;IACb,SAAS;IACT,QAAQ,CAAA;IACR,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,YAAY,CAAA;;WA2BE,cAAc,SAAyB,SAAwB;AAC7E,QAAI,aAAa,oBAAoB,QAAQ,YAAY,OAAO;AAEhE,WAAO;MACL,SAAS,QAAQ,WAAW;MAC5B,eAAe,QAAQ,iBAAiB,OAAO,QAAQ,gBAAgB,QAAQ;MAC/E,kBAAkB,QAAQ,oBAAoB,OAAO,QAAQ,mBAAmB,QAAQ;MACxF,aAAa,cAAc,OAAO,CAAC,UAAU,IAAI,CAAA;MACjD,SAAS,QAAQ,WAAW,OAAO,QAAQ,UAAU;MACrD,QAAQ,QAAQ,SAAS,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAA;MAClD,iBAAiB,QAAQ,mBAAmB,QAAQ,SAAS;MAC7D,aAAa,QAAQ,eAAe,QAAQ,SAAS;MACrD,WAAW,QAAQ,aAAa;MAChC,aAAa,QAAQ,aAAa,CAAA,GAAI,OAAO,QAAQ,cAAc,CAAA,CAAE;;;EAEzE;WAGgB,gBAAgB,KAAc;AAC5C,WAAO,IAAI,OAAO,oBAAoB,cAAc;EACtD;AAEA,WAAS,mBAAmB,OAAgB,OAAc;AACxD,WAAO;MACL,SAAS,MAAM,WAAW,OAAO,MAAM,UAAU,MAAM;MACvD,eAAe,MAAM,iBAAiB,OAAO,MAAM,gBAAgB,MAAM;MACzE,kBAAkB,MAAM,oBAAoB,OAAO,MAAM,mBAAmB,MAAM;MAClF,aAAa,MAAM,YAAY,OAAO,MAAM,WAAW;MACvD,SAAS,OAAO,MAAM,YAAY,YAAY,MAAM,UAAU,MAAM;MACpE,QAAQ,MAAM,OAAO,OAAO,MAAM,MAAM;MACxC,iBAAiB,MAAM,mBAAmB,MAAM;MAChD,aAAa,MAAM,eAAe,MAAM;MACxC,WAAW,MAAM,aAAa,MAAM;MACpC,YAAY,MAAM,WAAW,OAAO,MAAM,UAAU;;EAExD;ACrFO,MAAM,0BAA0B;IACrC,IAAI;IACJ,SAAS;IACT,OAAO;IACP,KAAK;IACL,aAAa;;AAGR,MAAM,sBAAsB;IACjC,OAAO;IACP,KAAK;IACL,MAAM;IACN,QAAQ;;AAGV,MAAM,iBAAcR,UAAAA,UAAAA,UAAA,CAAA,GACf,uBAAuB,GACvB,mBAAmB,GAAA,EACtB,eAAe,SAAgC,CAAA;WA0BjC,WACd,KACA,aACA,SACA,gBACA,UAAsC;AAAtC,QAAA,aAAA,QAAA;AAAA,iBAAW,mBAAmB,OAAO;IAAC;AAElC,QAAA,KAAqB,eAAe,KAAK,SAAS,QAAQ,GAAxD,UAAO,GAAA,SAAE,QAAK,GAAA;AAEpB,QAAI,gBAAgB,uBAAuB,aAAa,OAAO;AAC/D,QAAI,eAAe,eACjB,SACA,eACA,QAAQ,SACR,QAAQ,YAAY,cAAc;AAGpC,QAAI,cAAc;AAChB,UAAI,MAAM,cACR,SACA,OACA,cAAc,YAAY,WAAW,IACrC,aAAa,QACb,QAAQ,aAAa,QAAQ,GAC7B,OAAO;AAGT,UAAI,eAAe;QACjB,QAAQ,aAAa;QACrB,UAAU,aAAa;QACvB,UAAU,aAAa;;AAGzB,aAAO,EAAE,KAAK,UAAU,KAAI;;AAE9B,QAAI,YAAY,YAAY,SAAS,eAAe,SAAS,cAAc;AAE3E,QAAI,WAAW;AACb,UAAI,MAAM,cAAc,SAAS,OAAO,cAAc,YAAY,WAAW,IAAI,UAAU,QAAQ,UAAU,QAAQ,OAAO;AAC5H,UAAI,WAAW,oBAAoB,IAAI,OAAO,UAAU,OAAO,UAAU,gBAAgB,UAAU,YAAY;AAE/G,aAAO,EAAE,KAAK,SAAQ;;AAGxB,WAAO;EACT;WAEgB,eAAe,KAAiB,SAA0B,UAAsC;AAAtC,QAAA,aAAA,QAAA;AAAA,iBAAW,mBAAmB,OAAO;IAAC;AAC9G,WAAO,YAAY,KAAK,QAAQ;EAClC;WAEgB,mBAAmB,SAAwB;AACzD,WAAAA,UAAAA,UAAAA,UAAA,CAAA,GAAY,iBAAiB,GAAK,cAAc,GAAK,QAAQ,YAAY,aAAa;EACxF;WAMgB,cACd,SACA,OACA,UACA,QACA,QACA,SAAwB;AAExB,QAAI,MAAgB;MAClB,OAAO,QAAQ,SAAS;MACxB,SAAS,QAAQ,WAAW;MAC5B,UAAU,QAAQ,MAAM;MACxB,KAAK,QAAQ,OAAO;MACpB,cAAc;MACd,OAAO,KAAI;MACX;MACA;MACA;MACA,aAAa,QAAQ;MACrB,IAAI,cAAc,SAAS,OAAO;MAClC,eAAaA,UAAAA,UAAA,CAAA,GACP,QAAQ,iBAAiB,CAAA,CAAE,GAC5B,KAAK;;AAIZ,aAAwB,KAAA,GAAA,KAAA,QAAQ,YAAY,sBAApB,KAAA,GAAA,QAAA,MAA0C;AAA7D,UAAI,cAAW,GAAA,EAAA;AAClB,MAAAA,UAAS,KAAK,YAAY,OAAO,CAAC;;AAIpC,WAAO,OAAO,IAAI,GAAG,UAAU;AAC/B,WAAO,OAAO,IAAI,aAAa;AAE/B,WAAO;EACT;AAEA,WAAS,YAAY,SAAuB,eAA+B,SAA0B,gBAAwB;AACrH,QAAA,SAAW,QAAO;AACxB,QAAI;AACJ,QAAI,cAAc;AAClB,QAAI,SAAS;AACb,QAAI;AACJ,QAAI,YAAY;AAEhB,QAAI,aAAa,QAAQ,SAAS,OAAO,QAAQ,QAAQ,QAAQ;AACjE,gBAAY,QAAQ,QAAQ,iBAAiB,UAAU;AAEvD,QAAI,WAAW;AACb,oBAAc,UAAU;eACf,CAAC,gBAAgB;AAC1B,aAAO;;AAGT,QAAI,QAAQ,OAAO,MAAM;AACvB,gBAAU,QAAQ,QAAQ,iBAAiB,QAAQ,GAAG;;AAGxD,QAAI,UAAU,MAAM;AAClB,UAAI,iBAAiB,MAAM;AACzB,iBAAS;aACJ;AAEL,kBAAU,CAAC,aAAa,UAAU,uBAC/B,CAAC,WAAW,QAAQ;;;AAI3B,QAAI,UAAU,aAAa;AACzB,oBAAcS,YAAW,WAAW;;AAGtC,QAAI,SAAS;AACX,kBAAY,QAAQ;AAEpB,UAAI,QAAQ;AACV,oBAAYA,YAAW,SAAS;;AAGlC,UAAI,eAAe,aAAa,aAAa;AAC3C,oBAAY;;;AAIhB,QAAI,WAAW;AACb,eAAS;eACA,CAAC,gBAAgB;AAC1B,eAAS,QAAQ,QAAQ,sBAAsB;AAE/C,kBAAY,QAAQ,QAAQ,IAC1B,aACA,SACE,QAAQ,QAAQ,6BAChB,QAAQ,QAAQ,yBAAyB;;AAI/C,WAAO;MACL;MACA;MACA,OAAO,EAAE,OAAO,aAAa,KAAK,UAAS;MAC3C,gBAAgB,YAAY,UAAU,YAAY;MAClD,cAAc,UAAU,QAAQ,YAAY;;EAEhD;AAEA,WAAS,uBAAuB,aAAsC,SAAwB;AAC5F,QAAI,MAAM;AAEV,QAAI,aAAa;AACf,YAAM,YAAY;;AAGpB,QAAI,OAAO,MAAM;AACf,YAAM,QAAQ,QAAQ;;AAGxB,WAAO;EACT;WC/NgB,uBAAuB,YAAqB;AAC1D,QAAI,SAAS,KAAK,MAAM,SAAS,WAAW,OAAO,WAAW,GAAG,CAAC,KAAK;AACvE,QAAIX,SAAQW,YAAW,WAAW,KAAK;AACvC,QAAIV,OAAMW,SAAQZ,QAAO,MAAM;AAC/B,WAAO,EAAE,OAAKA,QAAE,KAAGC,KAAA;EACrB;WAIgB,uBAAuB,YAA2B,kBAA8C;AAA9C,QAAA,qBAAA,QAAA;AAAA,yBAA6B,eAAe,CAAC;IAAC;AAC9G,QAAI,WAAuB;AAC3B,QAAI,SAAqB;AAEzB,QAAI,WAAW,KAAK;AAClB,eAASU,YAAW,WAAW,GAAG;AAElC,UAAI,YAAoB,WAAW,IAAI,QAAO,IAAK,OAAO,QAAO;AAKjE,UAAI,aAAa,aAAa,UAAU,gBAAgB,GAAG;AACzD,iBAASC,SAAQ,QAAQ,CAAC;;;AAI9B,QAAI,WAAW,OAAO;AACpB,iBAAWD,YAAW,WAAW,KAAK;AAGtC,UAAI,UAAU,UAAU,UAAU;AAChC,iBAASC,SAAQ,UAAU,CAAC;;;AAIhC,WAAO,EAAE,OAAO,UAAU,KAAK,OAAM;EACvC;WASgB,UAAU,OAAmB,OAAmB,SAAkB,WAAkB;AAClG,QAAI,cAAc,QAAQ;AACxB,aAAO,eAAe,QAAQ,eAAe,OAAO,KAAK,GAAG,MAAM;;AAGpE,QAAI,cAAc,SAAS;AACzB,aAAO,eAAe,QAAQ,gBAAgB,OAAO,KAAK,GAAG,OAAO;;AAGtE,WAAO,eAAe,OAAO,KAAK;EACpC;WC/CgB,WAAW,OAAuB,SAAgB;AAChE,QAAIC,SAAQ;AACZ,QAAIC,OAAM;AAEV,QAAI,MAAM,OAAO;AACf,MAAAD,SAAQ,QAAQ,aAAa,MAAM,KAAK;;AAG1C,QAAI,MAAM,KAAK;AACb,MAAAC,OAAM,QAAQ,aAAa,MAAM,GAAG;;AAGtC,QAAI,CAACD,UAAS,CAACC,MAAK;AAClB,aAAO;;AAGT,QAAID,UAASC,QAAOA,OAAMD,QAAO;AAC/B,aAAO;;AAGT,WAAO,EAAE,OAAKA,QAAE,KAAGC,KAAA;EACrB;WAIgB,aAAa,QAAqB,iBAA0B;AAC1E,QAAI,iBAA8B,CAAA;AAC5B,QAAAD,SAAU,gBAAe;AAC/B,QAAIE;AACJ,QAAI;AAGJ,WAAO,KAAK,aAAa;AAEzB,SAAKA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACrC,kBAAY,OAAOA,EAAC;AAGpB,UAAI,UAAU,QAAQF,QAAO;AAC3B,uBAAe,KAAK,EAAE,OAAKA,QAAE,KAAK,UAAU,MAAK,CAAE;;AAGrD,UAAI,UAAU,MAAMA,QAAO;AACzB,QAAAA,SAAQ,UAAU;;;AAKtB,QAAIA,SAAQ,gBAAgB,KAAK;AAC/B,qBAAe,KAAK,EAAE,OAAKA,QAAE,KAAK,gBAAgB,IAAG,CAAE;;AAGzD,WAAO;EACT;AAEA,WAAS,cAAc,QAAmB,QAAiB;AACzD,WAAO,OAAO,MAAM,QAAO,IAAK,OAAO,MAAM,QAAO;EACtD;WAEgB,gBAAgB,QAAuB,QAAqB;AACpE,QAAAA,SAAe,OAAM,OAAdC,OAAQ,OAAM;AAC3B,QAAI,WAAW;AAEf,QAAI,OAAO,UAAU,MAAM;AACzB,UAAID,WAAU,MAAM;AAClB,QAAAA,SAAQ,OAAO;aACV;AACL,QAAAA,SAAQ,IAAI,KAAK,KAAK,IAAIA,OAAM,QAAO,GAAI,OAAO,MAAM,QAAO,CAAE,CAAC;;;AAItE,QAAI,OAAO,OAAO,MAAM;AACtB,UAAIC,SAAQ,MAAM;AAChB,QAAAA,OAAM,OAAO;aACR;AACL,QAAAA,OAAM,IAAI,KAAK,KAAK,IAAIA,KAAI,QAAO,GAAI,OAAO,IAAI,QAAO,CAAE,CAAC;;;AAIhE,QAAID,WAAU,QAAQC,SAAQ,QAAQD,SAAQC,MAAK;AACjD,iBAAW,EAAE,OAAKD,QAAE,KAAGC,KAAA;;AAGzB,WAAO;EACT;WAEgB,YAAY,QAAuB,QAAqB;AACtE,YAAQ,OAAO,UAAU,OAAO,OAAO,OAAO,MAAM,QAAO,QAAS,OAAO,UAAU,OAAO,OAAO,OAAO,MAAM,QAAO,OACpH,OAAO,QAAQ,OAAO,OAAO,OAAO,IAAI,QAAO,QAAS,OAAO,QAAQ,OAAO,OAAO,OAAO,IAAI,QAAO;EAC5G;WAEgB,gBAAgB,QAAuB,QAAqB;AAC1E,YAAQ,OAAO,QAAQ,QAAQ,OAAO,UAAU,QAAQ,OAAO,MAAM,OAAO,WACzE,OAAO,UAAU,QAAQ,OAAO,QAAQ,QAAQ,OAAO,QAAQ,OAAO;EAC3E;WAEgB,mBAAmB,YAA2B,YAAyB;AACrF,YAAQ,WAAW,UAAU,QAAS,WAAW,UAAU,QAAQ,WAAW,SAAS,WAAW,WAC/F,WAAW,QAAQ,QAAS,WAAW,QAAQ,QAAQ,WAAW,OAAO,WAAW;EACzF;WAEgB,oBAAoBE,QAAsB,MAAyB;AACjF,YAAQA,OAAM,UAAU,QAAQ,QAAQA,OAAM,WAC3CA,OAAM,QAAQ,QAAQ,OAAOA,OAAM;EACxC;WAIgB,uBAAuB,MAAkBA,QAAgB;AACvE,QAAIA,OAAM,SAAS,QAAQ,OAAOA,OAAM,OAAO;AAC7C,aAAOA,OAAM;;AAGf,QAAIA,OAAM,OAAO,QAAQ,QAAQA,OAAM,KAAK;AAC1C,aAAO,IAAI,KAAKA,OAAM,IAAI,QAAO,IAAK,CAAC;;AAGzC,WAAO;EACT;WC5GgB,gBAAgB,YAAwB,cAA2B,cAAyB,kBAA2B;AACrI,QAAI,qBAAyD,CAAA;AAC7D,QAAI,mBAAqD,CAAA;AACzD,QAAI,eAAgD,CAAA;AACpD,QAAI,WAA+B,CAAA;AACnC,QAAI,WAA+B,CAAA;AACnC,QAAI,WAAW,gBAAgB,WAAW,MAAM,YAAY;AAE5D,aAAS,SAAS,WAAW,MAAM;AACjC,UAAI,MAAM,WAAW,KAAK,KAAK;AAC/B,UAAI,KAAK,SAAS,IAAI,KAAK;AAE3B,UAAI,GAAG,YAAY,sBAAsB;AACvC,YAAI,IAAI,SAAS;AACf,6BAAmB,IAAI,OAAO,IAAI,CAAA;AAElC,cAAI,CAAC,aAAa,IAAI,OAAO,GAAG;AAC9B,yBAAa,IAAI,OAAO,IAAI;;eAEzB;AACL,2BAAiB,KAAK,IAAI,CAAA;;;;AAKhC,aAAS,cAAc,WAAW,WAAW;AAC3C,UAAI,WAAW,WAAW,UAAU,UAAU;AAC9C,UAAI,MAAM,WAAW,KAAK,SAAS,KAAK;AACxC,UAAI,KAAK,SAAS,IAAI,KAAK;AAC3B,UAAI,YAAY,SAAS;AAEzB,UAAI,cAAe,CAAC,IAAI,UAAU,mBAChC,uBAAuB,WAAW,gBAAgB,IAClD;AAEF,UAAI,cAAc,gBAAgB,aAAa,YAAY;AAE3D,UAAI,aAAa;AACf,YAAI,GAAG,YAAY,sBAAsB;AACvC,cAAI,IAAI,SAAS;AACf,+BAAmB,IAAI,OAAO,EAAE,KAAK,WAAW;iBAC3C;AACL,6BAAiB,SAAS,KAAK,EAAE,KAAK,WAAW;;mBAE1C,GAAG,YAAY,QAAQ;AAChC,WAAC,GAAG,YAAY,eAAe,WAAW,UAAU,KAAK;YACvD;YACA;YACA;YACA,OAAO;YACP,SAAS,YAAY,SAAS,YAAY,MAAM,QAAO,MAAO,YAAY,MAAM,QAAO;YACvF,OAAO,YAAY,OAAO,YAAY,IAAI,QAAO,MAAO,YAAY,IAAI,QAAO;WAChF;;;;AAKP,aAAS,WAAW,oBAAoB;AACtC,UAAI,SAAS,mBAAmB,OAAO;AACvC,UAAI,iBAAiB,aAAa,QAAQ,YAAY;AAEtD,eAA0B,KAAA,GAAA,mBAAA,gBAAA,KAAA,iBAAA,QAAA,MAAgB;AAArC,YAAI,gBAAa,iBAAA,EAAA;AACpB,YAAI,MAAM,aAAa,OAAO;AAC9B,YAAI,KAAK,SAAS,IAAI,KAAK;AAE3B,iBAAS,KAAK;UACZ;UACA;UACA,UAAU;UACV,OAAO;UACP,SAAS;UACT,OAAO;SACR;;;AAIL,aAAS,SAAS,kBAAkB;AAClC,UAAI,SAAS,iBAAiB,KAAK;AACnC,UAAI,iBAAiB,aAAa,QAAQ,YAAY;AAEtD,eAA0B,KAAA,GAAA,mBAAA,gBAAA,KAAA,iBAAA,QAAA,MAAgB;AAArC,YAAI,gBAAa,iBAAA,EAAA;AACpB,iBAAS,KAAK;UACZ,KAAK,WAAW,KAAK,KAAK;UAC1B,IAAI,SAAS,KAAK;UAClB,UAAU;UACV,OAAO;UACP,SAAS;UACT,OAAO;SACR;;;AAIL,WAAO,EAAE,IAAI,UAAU,IAAI,SAAQ;EACrC;WAMgB,SAAS,IAAiB,KAAQ;AAC/C,OAAW,QAAQ;EACtB;WAEgB,SAAS,IAAe;AACtC,WAAQ,GAAW,SAChB,GAAG,WAAmB;IACvB;EACJ;WAIgB,gBAAgB,WAAyB,cAAyB;AAChF,WAAO,QAAQ,WAAW,SAAC,UAAkB;AAAK,aAAA,eAAe,UAAU,YAAY;IAAC,CAAA;EAC1F;WAEgB,eAAe,UAAoB,cAAyB;AAC1E,QAAI,MAAM,CAAA;AAEV,QAAI,aAAa,EAAE,GAAG;AACpB,UAAI,KAAK,aAAa,EAAE,CAAC;;AAG3B,QAAI,aAAa,SAAS,KAAK,GAAG;AAChC,UAAI,KAAK,aAAa,SAAS,KAAK,CAAC;;AAGvC,QAAI,KAAK,SAAS,EAAE;AAEpB,WAAO,gBAAgB,GAAG;EAC5B;WAEgB,cAAc,MAAM,iBAAsC;AACxE,QAAI,OAAO,KAAK,IAAI,kBAAkB;AAEtC,SAAK,KAAK,SAAC,MAAM,MAAI;AAAK,aAAA,oBAAoB,MAAM,MAAM,eAAe;IAAC,CAAA;AAE1E,WAAO,KAAK,IAAI,SAACC,IAAC;AAAK,aAAAA,GAAE;IAAI,CAAA;EAC/B;WAGgB,mBAAmB,KAAQ;AACnC,QAAA,aAAe,IAAG;AACxB,QAAI,WAAW,WAAW;AAC1B,QAAIC,SAAQ,WAAW,WAAW,WAAW,SAAS,QAAQ,WAAW;AACzE,QAAIC,SAAQD,OAAM,QAAQA,OAAM,MAAM,QAAO,IAAK;AAClD,QAAIE,OAAMF,OAAM,MAAMA,OAAM,IAAI,QAAO,IAAK;AAE5C,WAAAG,UAAAA,UAAAA,UAAA,CAAA,GACK,SAAS,aAAa,GACtB,QAAQ,GAAA;MACX,IAAI,SAAS;MACb,OAAKF;MACL,KAAGC;MACH,UAAUA,OAAMD;MAChB,QAAQ,OAAO,SAAS,MAAM;MAC9B,MAAM;IAAG,CAAA;EAEb;WA2BgB,oBAAoB,KAAU,SAAoB;AAC1D,QAAA,cAAgB,QAAO;AAC7B,QAAI,eAAe,YAAY;AAC3B,QAAA,KAAc,IAAI,YAAhB,MAAG,GAAA,KAAE,KAAE,GAAA;AACb,QAAI,MAAM,GAAG;AAEb,aAAwB,KAAA,GAAA,iBAAA,cAAA,KAAA,eAAA,QAAA,MAAc;AAAjC,UAAI,cAAW,eAAA,EAAA;AAClB,YAAM,YAAY,KAAK,KAAK,IAAI,OAAO;;AAGzC,WAAO;EACT;WAEgB,yBAAyB,KAAU,SAAoB;AACrE,WAAO,IAAI,WAAW,IAAI,WAAW,GAAG,oBAAoB,QAAQ,QAAQ;EAC9E;WAEgB,uBAAuB,KAAU,SAAoB;AACnE,WAAO,IAAI,SAAS,IAAI,WAAW,GAAG;EACxC;WAEgB,iBACd,KACA,YACA,SACA,yBACA,wBACA,eACA,aAAwB;AAElB,QAAA,UAAqB,QAAO,SAAnBG,WAAY,QAAO;AAC5B,QAAA,mBAAsCA,SAAO,kBAA3B,kBAAoBA,SAAO;AACnD,QAAI,WAAW,IAAI,WAAW;AAC9B,QAAI,gBAAgB,IAAI,WAAW;AAEnC,QAAI,oBAAoB,MAAM;AAAE,yBAAmB,4BAA4B;;AAC/E,QAAI,mBAAmB,MAAM;AAAE,wBAAkB,2BAA2B;;AAE5E,QAAI,kBAAkB,cAAc,MAAM;AAC1C,QAAI,gBAAgB,cAAc,MAAM;AACxC,QAAI,WAAW,iBAAiB,IAAI,SAAS,IAAI,WAAW,MAAM;AAClE,QAAI,SAAS,eAAe,IAAI,OAAO,IAAI,WAAW,MAAM;AAC5D,QAAI,aAAaC,YAAW,eAAe,EAAE,QAAO,MAAOA,YAAW,QAAQ,EAAE,QAAO;AACvF,QAAI,WAAWA,YAAW,MAAM,eAAe,EAAE,CAAC,EAAE,QAAO,MAAOA,YAAW,MAAM,QAAQ,EAAE,CAAC,EAAE,QAAO;AAEvG,QAAI,oBAAoB,CAAC,SAAS,WAAW,cAAc,WAAW;AACpE,iBAAW,aAAa,kBAAkB;AAC1C,eAAS,WAAW,gBAAgB;AAEpC,UAAI,mBAAmB,SAAS,QAAQ;AACtC,eAAO,QAAQ,YAAY,UAAU,QAAQ,YAAY;UACvD,gBAAgB,gBAAgB,OAAO,cAAc;UACrD,cAAc,cAAc,OAAO,cAAc;SAClD;;AAEH,aAAO,QAAQ,OAAO,UAAU,YAAY;QAC1C,WAAW,gBAAgB,OAAO,cAAc;;OACjD;;AAGH,WAAO;EACT;WAEgB,WAAW,KAAU,YAAuB,SAAoB;AAC9E,QAAI,WAAW,IAAI,WAAW;AAE9B,WAAO;MACL,QAAQ,SAAS,OAAO,WAAW,WAAW;MAC9C,UAAU,SAAS,UAAU,WAAW,WAAW;MACnD,SAAS,cAAc,oBAAoB,YAAY,SAAS,KAAK;;EAEzE;WAEgB,mBAAmB,OAAsB;AACvD,QAAI,aAAuB,CAAC,UAAU;AAEtC,QAAI,MAAM,UAAU;AAClB,iBAAW,KAAK,iBAAiB;;AAGnC,QAAI,MAAM,aAAa;AACrB,iBAAW,KAAK,oBAAoB;;AAGtC,QAAI,MAAM,oBAAoB,MAAM,gBAAgB;AAClD,iBAAW,KAAK,oBAAoB;;AAGtC,QAAI,MAAM,YAAY;AACpB,iBAAW,KAAK,mBAAmB;;AAGrC,QAAI,MAAM,YAAY;AACpB,iBAAW,KAAK,mBAAmB;;AAGrC,QAAI,MAAM,YAAY;AACpB,iBAAW,KAAK,mBAAmB;;AAGrC,QAAI,MAAM,SAAS;AACjB,iBAAW,KAAK,gBAAgB;;AAGlC,QAAI,MAAM,OAAO;AACf,iBAAW,KAAK,cAAc;;AAGhC,QAAI,MAAM,QAAQ;AAChB,iBAAW,KAAK,eAAe;;AAGjC,QAAI,MAAM,SAAS;AACjB,iBAAW,KAAK,gBAAgB;;AAGlC,QAAI,MAAM,UAAU;AAClB,iBAAW,KAAK,iBAAiB;;AAGnC,WAAO;EACT;WAEgB,mBAAmB,YAA4B;AAC7D,WAAO,WAAW,WACd,WAAW,SAAS,aACjB,WAAW,IAAI,QAAK,MAAI,WAAW,MAAM,MAAM,YAAW;EAEnE;WAEgB,kBAAkB,KAAU,SAAoB;AAC1D,QAAA,KAAoB,IAAI,YAAtB,MAAG,GAAA,KAAE,WAAQ,GAAA;AACb,QAAA,MAAQ,IAAG;AAEjB,QAAI,KAAK;AACP,aAAO,EAAE,MAAM,IAAG;;AAGd,QAAA,UAAqB,QAAO,SAAnBD,WAAY,QAAO;AAC5B,QAAA,mBAAqBA,SAAO;AAElC,QAAI,oBAAoB,MAAM;AAC5B,yBAAmB,IAAI;AACvB,UAAI,oBAAoB,MAAM;AAC5B,2BAAmB,QAAQ,QAAQ,YAAY,YAAY,CAAC;;;AAKhE,QAAI,kBAAkB;AAEpB,aAAO,wBAAwB,SAAC,IAAW;AACzC,gBAAQ,QAAQ,cAAc;UAC5B,IAAI,GAAG;UACP,OAAO,IAAI,SAAS,SAAS,KAAK,QAAQ;UAC1C,SAAS;UACT,MAAM,QAAQ;SACf;OACF;;AAGH,WAAO,CAAA;EACT;AC1TA,MAAM,iBAAiB;IACrB,OAAO;IACP,KAAK;IACL,QAAQ;;WAGM,cAAc,KAAoB,SAAkB,iBAA0B;AAC5F,QAAI,OAAO,kBAAkB,KAAK,OAAO;AACnC,QAAAJ,SAAU,KAAI;AAEpB,QAAI,CAACA,OAAM,OAAO;AAChB,aAAO;;AAGT,QAAI,CAACA,OAAM,KAAK;AACd,UAAI,mBAAmB,MAAM;AAC3B,eAAO;;AAET,MAAAA,OAAM,MAAM,QAAQ,IAAIA,OAAM,OAAO,eAAe;;AAGtD,WAAO;EACT;WAMgB,kBAAkB,KAAwB,SAAgB;AACpE,QAAA,KAAoC,YAAY,KAAK,cAAc,GAAxD,gBAAa,GAAA,SAAE,QAAK,GAAA;AACnC,QAAI,YAAY,cAAc,QAAQ,QAAQ,iBAAiB,cAAc,KAAK,IAAI;AACtF,QAAI,UAAU,cAAc,MAAM,QAAQ,iBAAiB,cAAc,GAAG,IAAI;AAC1E,QAAA,SAAW,cAAa;AAE9B,QAAI,UAAU,MAAM;AAClB,eAAU,aAAa,UAAU,sBAC9B,CAAC,WAAW,QAAQ;;AAGzB,WAAAG,UAAA,EACE,OAAO;MACL,OAAO,YAAY,UAAU,SAAS;MACtC,KAAK,UAAU,QAAQ,SAAS;OAElC,OAAM,GACH,KAAK;EAEZ;WAEgB,iBAAiB,OAAiB,OAAe;AAC/D,WAAO,YAAY,MAAM,OAAO,MAAM,KAAK,KACzC,MAAM,WAAW,MAAM,UACvB,iBAAiB,OAAO,KAAK;EACjC;AAGA,WAAS,iBAAiB,OAAiB,OAAe;AACxD,aAAS,YAAY,OAAO;AAC1B,UAAI,aAAa,WAAW,aAAa,UAAU;AACjD,YAAI,MAAM,QAAQ,MAAM,MAAM,QAAQ,GAAG;AACvC,iBAAO;;;;AAOb,aAAS,YAAY,OAAO;AAC1B,UAAI,EAAE,YAAY,QAAQ;AACxB,eAAO;;;AAIX,WAAO;EACT;WAEgB,iBAAiB,MAAgB,SAAgB;AAC/D,WAAAA,UAAAA,UAAA,CAAA,GACK,cAAc,KAAK,OAAO,SAAS,KAAK,MAAM,CAAC,GAAA,EAClD,QAAQ,KAAK,OAAM,CAAA;EAEvB;WAEgB,0BAA0BH,QAAkB,SAAkB,UAAkB;AAC9F,WAAAG,UAAAA,UAAA,CAAA,GACK,cAAcH,QAAO,SAAS,QAAQ,CAAC,GAAA,EAC1C,UAAU,QAAQ,SAAQ,CAAA;EAE9B;WAEgB,cAAcA,QAAkB,SAAkB,UAAkB;AAClF,WAAO;MACL,OAAO,QAAQ,OAAOA,OAAM,KAAK;MACjC,KAAK,QAAQ,OAAOA,OAAM,GAAG;MAC7B,UAAU,QAAQ,UAAUA,OAAM,OAAO,EAAE,SAAQ,CAAE;MACrD,QAAQ,QAAQ,UAAUA,OAAM,KAAK,EAAE,SAAQ,CAAE;;EAErD;WAEgB,oBAAoB,UAAoB,cAA2B,SAAwB;AACzG,QAAI,MAAM,eAAe,EAAE,UAAU,MAAK,GAAI,OAAO;AACrD,QAAI,MAAM;MACR,IAAI;MACJ,IAAI;MACJ;;MACA,SAAS;MACT;;MACA;IAAO;AAGT,WAAO;MACL;MACA,IAAI,eAAe,KAAK,YAAY;MACpC,UAAU,oBAAoB,IAAI,OAAO,SAAS,KAAK;MACvD,OAAO,SAAS;MAChB,SAAS;MACT,OAAO;;EAEX;WClJgB,kBAAkB,WAAqB,KAA8B,SAAgD;AACnI,YAAQ,QAAQ,QAAQ,UAAUM,UAAAA,UAAAA,CAAAA,GAC7B,4BAA4B,WAAW,OAAO,CAAC,GAAA,EAClD,SAAS,MAAM,IAAI,YAA0B,MAC7C,MAAM,QAAQ,WAAW,QAAQ,YAAY,KAAI,CAAA,CACjC;EACpB;WAOgB,oBAAoB,KAA8B,SAAgD;AAChH,YAAQ,QAAQ,QAAQ,YAAY;MAClC,SAAS,MAAM,IAAI,YAAY;MAC/B,MAAM,QAAQ,WAAW,QAAQ,YAAY;KAC3B;EACtB;WAEgB,4BAA4B,UAAoB,SAAwB;AACtF,QAAI,QAAQ,CAAA;AAEZ,aAAsB,KAAA,GAAA,KAAA,QAAQ,YAAY,oBAApB,KAAA,GAAA,QAAA,MAAwC;AAAzD,UAAIC,aAAS,GAAA,EAAA;AAChB,MAAAJ,UAAS,OAAOI,WAAU,UAAU,OAAO,CAAC;;AAG9C,IAAAJ,UAAS,OAAO,iBAAiB,UAAU,QAAQ,OAAO,CAAC;AAE3D,WAAO;EACT;WAIgB,mBAAmB,QAAiB,QAAoB,SAAwB;AACxF,QAAA,UAAqB,QAAO,SAAnBC,WAAY,QAAO;AAClC,QAAIF,OAAM;AAEV,QAAI,QAAQ;AACV,MAAAA,OAAMG,YAAWH,IAAG;AACpB,MAAAA,OAAM,QAAQ,IAAIA,MAAKE,SAAQ,0BAA0B;WACpD;AACL,MAAAF,OAAM,QAAQ,IAAIA,MAAKE,SAAQ,yBAAyB;;AAG1D,WAAOF;EACT;WCtDgB,0BACd,YACA,iBACA,UACA,SAAwB;AAExB,QAAI,eAAe,gBAAgB,WAAW,MAAM,eAAe;AACnE,QAAI,OAAO,sBAAqB;AAEhC,aAAS,SAAS,WAAW,MAAM;AACjC,UAAI,MAAM,WAAW,KAAK,KAAK;AAE/B,WAAK,KAAK,KAAK,IAAI,wBAAwB,KAAK,aAAa,KAAK,GAAG,UAAU,OAAO;;AAGxF,aAAS,cAAc,WAAW,WAAW;AAC3C,UAAI,WAAW,WAAW,UAAU,UAAU;AAC9C,UAAI,MAAM,KAAK,KAAK,SAAS,KAAK;AAElC,WAAK,UAAU,UAAU,IAAI,6BAA6B,UAAU,KAAK,aAAa,SAAS,KAAK,GAAG,UAAU,OAAO;;AAG1H,WAAO;EACT;AAIA,WAAS,wBAAwB,UAAoB,aAAsB,UAAyB,SAAwB;AAC1H,QAAI,gBAAgB,SAAS,iBAAiB,CAAA;AAK9C,QACE,cAAc,UAAU,QACxB,YAAY,qBACX,SAAS,cAAc,SAAS,WACjC;AACA,oBAAc,SAAS;;AAGzB,QAAI,OAAIC,UAAAA,UAAAA,UAAA,CAAA,GACH,QAAQ,GACR,aAAa,GAAA,EAChB,IAAEA,UAAAA,UAAA,CAAA,GAAO,SAAS,EAAE,GAAK,cAAc,EAAE,EAAA,CAAA;AAG3C,QAAI,SAAS,eAAe;AAC1B,WAAK,gBAAaA,UAAAA,UAAA,CAAA,GAAQ,KAAK,aAAa,GAAK,SAAS,aAAa;;AAGzE,aAAoB,KAAA,GAAA,KAAA,QAAQ,YAAY,0BAApB,KAAA,GAAA,QAAA,MAA8C;AAA7D,UAAI,UAAO,GAAA,EAAA;AACd,cAAQ,MAAM,UAAU,OAAO;;AAGjC,QAAI,CAAC,KAAK,UAAU,QAAQ,QAAQ,oBAAoB;AACtD,WAAK,SAAS;;AAGhB,WAAO;EACT;AAEA,WAAS,6BACP,eACA,UACA,aACA,UACA,SAAwB;AAElB,QAAA,UAAY,QAAO;AACzB,QAAI,cAAc,SAAS,iBAAiB,SAAS,cAAc,WAAW;AAC9E,QAAI,WAAW,SAAS,iBAAiB,SAAS,cAAc,WAAW;AAC3E,QAAI,OAAOA,UAAA,CAAA,GAAK,aAAa;AAE7B,QAAI,aAAa;AACf,WAAK,QAAQ,uBAAuB,KAAK,KAAK;;AAGhD,QAAI,SAAS,cAAc,YAAY,eAAe;AACpD,WAAK,QAAQ;QACX,OAAO,QAAQ,IAAI,KAAK,MAAM,OAAO,SAAS,UAAU;QACxD,KAAK,QAAQ,IAAI,KAAK,MAAM,KAAK,SAAS,UAAU;;;AAIxD,QAAI,SAAS,cAAc,YAAY,kBAAkB;AACvD,WAAK,QAAQ;QACX,OAAO,QAAQ,IAAI,KAAK,MAAM,OAAO,SAAS,UAAU;QACxD,KAAK,KAAK,MAAM;;;AAIpB,QAAI,SAAS,YAAY,YAAY,kBAAkB;AACrD,WAAK,QAAQ;QACX,OAAO,KAAK,MAAM;QAClB,KAAK,QAAQ,IAAI,KAAK,MAAM,KAAK,SAAS,QAAQ;;;AAItD,QAAI,UAAU;AACZ,WAAK,QAAQ;QACX,OAAO,KAAK,MAAM;QAClB,KAAK,mBAAmB,SAAS,QAAQ,KAAK,MAAM,OAAO,OAAO;;;AAMtE,QAAI,SAAS,QAAQ;AACnB,WAAK,QAAQ;QACX,OAAOE,YAAW,KAAK,MAAM,KAAK;QAClC,KAAKA,YAAW,KAAK,MAAM,GAAG;;;AAKlC,QAAI,KAAK,MAAM,MAAM,KAAK,MAAM,OAAO;AACrC,WAAK,MAAM,MAAM,mBAAmB,SAAS,QAAQ,KAAK,MAAM,OAAO,OAAO;;AAGhF,WAAO;EACT;;;;AC1IE,eAAAG,SACS,MACC,gBACA,SAAgB;AAFjB,aAAA,OAAA;AACC,aAAA,iBAAA;AACA,aAAA,UAAA;;AAIV,aAAA,eAAIA,SAAA,WAAA,YAAQ;aAAZ,WAAA;AACE,iBAAO,KAAK,eAAc,EAAG;;;;;AAG/B,aAAA,eAAIA,SAAA,WAAA,SAAK;aAAT,WAAA;AACE,iBAAO,KAAK,eAAc,EAAG;;;;;AAG/B,aAAA,eAAIA,SAAA,WAAA,eAAW;aAAf,WAAA;AACE,iBAAO,KAAK,QAAQ,OAAO,KAAK,eAAc,EAAG,YAAY,YAAY,KAAK;;;;;AAGhF,aAAA,eAAIA,SAAA,WAAA,aAAS;aAAb,WAAA;AACE,iBAAO,KAAK,QAAQ,OAAO,KAAK,eAAc,EAAG,YAAY,YAAY,GAAG;;;;;AAG9E,aAAA,eAAIA,SAAA,WAAA,gBAAY;aAAhB,WAAA;AACE,iBAAO,KAAK,QAAQ,OAAO,KAAK,eAAc,EAAG,YAAY,aAAa,KAAK;;;;;AAGjF,aAAA,eAAIA,SAAA,WAAA,cAAU;aAAd,WAAA;AACE,iBAAO,KAAK,QAAQ,OAAO,KAAK,eAAc,EAAG,YAAY,aAAa,GAAG;;;;;AAG/E,MAAAA,SAAA,UAAA,YAAA,SAAUC,OAAY;AACpB,eAAO,KAAK,eAAc,EAAG,QAAQA,KAAI;;AAE7C,aAAAD;IAAA,EAAC;;AChCD,MAAM,wBAAwB;IAC5B,IAAI;IACJ,eAAe;IACf,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,oBAAoB;;IAGpB,SAAS;IACT,SAAS;;WAwBK,iBACd,KACA,SACA,UAA4C;AAA5C,QAAA,aAAA,QAAA;AAAA,iBAAW,yBAAyB,OAAO;IAAC;AAE5C,QAAI;AAEJ,QAAI,OAAO,QAAQ,UAAU;AAC3B,eAAS,EAAE,KAAK,IAAG;eACV,OAAO,QAAQ,cAAc,MAAM,QAAQ,GAAG,GAAG;AAC1D,eAAS,EAAE,QAAQ,IAAG;eACb,OAAO,QAAQ,YAAY,KAAK;AACzC,eAAS;;AAGX,QAAI,QAAQ;AACN,UAAA,KAAqB,YAAY,QAAQ,QAAQ,GAA/C,UAAO,GAAA,SAAE,QAAK,GAAA;AACpB,UAAI,UAAU,qBAAqB,SAAS,OAAO;AAEnD,UAAI,SAAS;AACX,eAAO;UACL,MAAM;UACN,YAAY;UACZ,eAAe;UACf,YAAY;UACZ,eAAe,QAAQ;UACvB,oBAAoB,QAAQ;UAC5B,SAAS,QAAQ;UACjB,SAAS,QAAQ;UACjB,UAAU,QAAQ,MAAM;UACxB,UAAU,KAAI;UACd,aAAa,QAAQ;UACrB,MAAM,QAAQ;UACd,IAAI,cAAc,SAAS,OAAO;UAClC,eAAe;;;;AAKrB,WAAO;EACT;WAEgB,yBAAyB,SAAwB;AAC/D,WAAAL,UAAAA,UAAAA,UAAA,CAAA,GAAY,iBAAiB,GAAK,qBAAqB,GAAK,QAAQ,YAAY,mBAAmB;EACrG;AAEA,WAAS,qBAAqB,KAAyB,SAAwB;AAC7E,QAAI,OAAO,QAAQ,YAAY;AAE/B,aAASO,KAAI,KAAK,SAAS,GAAGA,MAAK,GAAGA,MAAK,GAAG;AAC5C,UAAI,MAAM,KAAKA,EAAC;AAChB,UAAI,OAAO,IAAI,UAAU,GAAG;AAE5B,UAAI,MAAM;AACR,eAAO,EAAE,aAAaA,IAAG,KAAI;;;AAIjC,WAAO;EACT;WCjGgB,kBAAkB,aAAyB,QAAc;AACvE,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAO,OAAO;MAChB;AACE,eAAO;;EAEb;WAEgB,eAAeN,UAA6B,SAAgB;AAC1E,QAAI,mBAAmBA,SAAQ;AAG/B,QAAI,oBAAoB,MAAM;AAC5B,aAAO,QAAQ,aAAa,gBAAgB;;AAE9C,WAAO,OAAOA,SAAQ,KAAK,OAAO;EACpC;WAEgB,OAAO,UAAyC,SAAgB;AAC9E,QAAI,OAAO,aAAa,YAAY;AAClC,iBAAW,SAAQ;;AAGrB,QAAI,YAAY,MAAM;AACpB,aAAO,QAAQ,gBAAe;;AAGhC,WAAO,QAAQ,aAAa,QAAQ;EACtC;;;;ACFA,eAAAO,eAAA;;AAGE,MAAAA,aAAA,UAAA,iBAAA,WAAA;AACE,eAAO,KAAK,mBAAoB,eAAc;;AAGhD,MAAAA,aAAA,UAAA,WAAA,SAAS,QAAc;AACrB,eAAO,KAAK,mBAAoB,SAAS,MAAM;;AAGjD,aAAA,eAAIA,aAAA,WAAA,QAAI;aAAR,WAAA;AAAsB,iBAAO,KAAK,eAAc,EAAG;QAAO;;;;AAE1D,MAAAA,aAAA,UAAA,iBAAA,SAAeC,WAAoB;AACjC,QAAAA,UAAQ;;AAGV,MAAAD,aAAA,UAAA,aAAA,WAAA;AACE,aAAK,QAAQ,WAAW,IAAI;;AAM9B,MAAAA,aAAA,UAAA,YAAA,SAAoDF,OAAkB,KAAgC;AACpG,aAAK,SAAS;UACZ,MAAM;UACN,YAAYA;UACZ,gBAAgB;SACjB;;AAGH,MAAAE,aAAA,UAAA,YAAA,SAAoDF,OAAgB;AAClE,eAAO,KAAK,mBAAoB,4BAA4BA,KAAI;;AAGlE,MAAAE,aAAA,UAAA,0BAAA,WAAA;AACE,eAAO,OAAO,KAAK,KAAK,eAAc,EAAG,mBAAmB;;AAM9D,MAAAA,aAAA,UAAA,KAAA,SAAiD,aAA2B,SAAwC;AAC5G,YAAA,qBAAuB,KAAI;AAEjC,YAAI,mBAAmB,+BAA+B,WAAW,GAAG;AAClE,6BAAmB,QAAQ,GAAG,aAAa,OAAO;eAC7C;AACL,kBAAQ,KAAK,4BAA0B,cAAW,GAAG;;;AAIzD,MAAAA,aAAA,UAAA,MAAA,SAAkD,aAA2B,SAAwC;AACnH,aAAK,mBAAoB,QAAQ,IAAI,aAAa,OAAO;;AAI3D,MAAAA,aAAA,UAAA,UAAA,SAAsD,aAAyB;;AAAE,YAAA,OAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAoD;AAApD,eAAA,KAAA,CAAA,IAAA,UAAA,EAAA;;AAC/E,SAAA,KAAA,KAAK,mBAAoB,SAAQ,QAAO,MAAA,IAAA,cAAA,CAAC,WAAW,GAAK,IAAI,CAAA;;AAM/D,MAAAA,aAAA,UAAA,aAAA,SAAW,UAAkB,aAAwC;AAArE,YAAA,QAAA;AACE,aAAK,eAAe,WAAA;AAClB,gBAAK,SAAQ;AAEb,cAAI,aAAa;AACf,gBAAK,YAA+B,SAAU,YAA+B,KAAK;AAChF,oBAAK,SAAS;gBACZ,MAAM;gBACN;eACD;AACD,oBAAK,SAAS;gBACZ,MAAM;gBACN,YAAY;gBACZ,gBAAgB;eACjB;mBACI;AACC,kBAAA,UAAY,MAAK,eAAc,EAAE;AAEvC,oBAAK,SAAS;gBACZ,MAAM;gBACN;gBACA,YAAY,QAAQ,aAAa,WAAwB;eAC1D;;iBAEE;AACL,kBAAK,SAAS;cACZ,MAAM;cACN;aACD;;SAEJ;;AAMH,MAAAA,aAAA,UAAA,SAAA,SAAO,YAAwB,UAAiB;AAC9C,YAAI,QAAQ,KAAK,eAAc;AAC/B,YAAI;AAEJ,mBAAW,YAAY;AACvB,eAAO,MAAM,UAAU,QAAQ,KAAK,KAAK,gBAAgB,QAAQ;AAEjE,aAAK,SAAQ;AAEb,YAAI,MAAM;AACR,eAAK,SAAS;YACZ,MAAM;YACN,UAAU,KAAK;YACf;WACD;eACI;AACL,eAAK,SAAS;YACZ,MAAM;YACN;WACD;;;AAMG,MAAAA,aAAA,UAAA,kBAAR,SAAwB,MAAY;AAC9B,YAAA,KAA+B,KAAK,eAAc,GAAhD,YAAS,GAAA,WAAE,gBAAa,GAAA;AAC9B,YAAI,YAAY,CAAA,EAAG,OACjB,cAAc,SAAS,cAAc,OAAO,mBAAmB,CAAA,GAC/D,cAAc,SAAS,cAAc,OAAO,mBAAmB,CAAA,CAAE;AAEnE,YAAID;AACJ,YAAI;AAEJ,iBAAS,YAAY,WAAW;AAC9B,oBAAU,KAAK,QAAQ;;AAGzB,aAAKA,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK,GAAG;AACxC,iBAAO,UAAU,UAAUA,EAAC,CAAC;AAC7B,cAAI,MAAM;AACR,gBAAI,KAAK,eAAe,MAAM;AAC5B,qBAAO;;;;AAKb,eAAO;;AAMT,MAAAC,aAAA,UAAA,OAAA,WAAA;AACE,aAAK,SAAQ;AACb,aAAK,SAAS,EAAE,MAAM,OAAM,CAAE;;AAGhC,MAAAA,aAAA,UAAA,OAAA,WAAA;AACE,aAAK,SAAQ;AACb,aAAK,SAAS,EAAE,MAAM,OAAM,CAAE;;AAGhC,MAAAA,aAAA,UAAA,WAAA,WAAA;AACE,YAAI,QAAQ,KAAK,eAAc;AAC/B,aAAK,SAAQ;AACb,aAAK,SAAS;UACZ,MAAM;UACN,YAAY,MAAM,QAAQ,SAAS,MAAM,aAAa,EAAE;SACzD;;AAGH,MAAAA,aAAA,UAAA,WAAA,WAAA;AACE,YAAI,QAAQ,KAAK,eAAc;AAE/B,aAAK,SAAQ;AACb,aAAK,SAAS;UACZ,MAAM;UACN,YAAY,MAAM,QAAQ,SAAS,MAAM,aAAa,CAAC;SACxD;;AAGH,MAAAA,aAAA,UAAA,QAAA,WAAA;AACE,YAAI,QAAQ,KAAK,eAAc;AAE/B,aAAK,SAAQ;AACb,aAAK,SAAS;UACZ,MAAM;UACN,YAAY,OAAO,MAAM,gBAAgB,KAAK,MAAM,OAAO;SAC5D;;AAGH,MAAAA,aAAA,UAAA,WAAA,SAAS,gBAAc;AACrB,YAAI,QAAQ,KAAK,eAAc;AAE/B,aAAK,SAAQ;AACb,aAAK,SAAS;UACZ,MAAM;UACN,YAAY,MAAM,QAAQ,aAAa,cAAc;SACtD;;AAGH,MAAAA,aAAA,UAAA,gBAAA,SAAc,YAAU;AACtB,YAAI,QAAQ,KAAK,eAAc;AAC/B,YAAI,QAAQ,eAAe,UAAU;AAErC,YAAI,OAAO;AACT,eAAK,SAAQ;AACb,eAAK,SAAS;YACZ,MAAM;YACN,YAAY,MAAM,QAAQ,IAAI,MAAM,aAAa,KAAK;WACvD;;;AAKL,MAAAA,aAAA,UAAA,UAAA,WAAA;AACE,YAAI,QAAQ,KAAK,eAAc;AAC/B,eAAO,MAAM,QAAQ,OAAO,MAAM,WAAW;;AAM/C,MAAAA,aAAA,UAAA,aAAA,SAAWE,IAAc,WAAS;AAC1B,YAAA,UAAY,KAAK,eAAc,EAAE;AAEvC,eAAO,QAAQ,OACb,QAAQ,aAAaA,EAAC,GACtB,gBAAgB,SAAS,CAAC;;AAK9B,MAAAF,aAAA,UAAA,cAAA,SAAY,IAAe,IAAe,UAAQ;AAC1C,YAAA,UAAY,KAAK,eAAc,EAAE;AAEvC,eAAO,QAAQ,YACb,QAAQ,aAAa,EAAE,GACvB,QAAQ,aAAa,EAAE,GACvB,gBAAgB,QAAQ,GACxB,QAAQ;;AAIZ,MAAAA,aAAA,UAAA,YAAA,SAAUE,IAAc,UAAkB;AAClC,YAAA,UAAY,KAAK,eAAc,EAAE;AAEvC,eAAO,QAAQ,UAAU,QAAQ,aAAaA,EAAC,GAAG,EAAE,SAAQ,CAAE;;AAQhE,MAAAF,aAAA,UAAA,SAAA,SAAO,WAA4B,SAAmB;AACpD,YAAI;AAEJ,YAAI,WAAW,MAAM;AACnB,cAAI,UAAU,SAAS,MAAM;AAC3B,6BAAiB;iBACZ;AACL,6BAAiB;cACf,OAAO;cACP,KAAK;;;eAGJ;AACL,2BAAiB;YACf,OAAO;YACP,KAAK;;;AAIT,YAAI,QAAQ,KAAK,eAAc;AAC/B,YAAI,YAAY,cACd,gBACA,MAAM,SACN,eAAe,EAAE,MAAM,EAAC,CAAE,CAAC;AAG7B,YAAI,WAAW;AACb,eAAK,SAAS,EAAE,MAAM,gBAAgB,UAAS,CAAE;AACjD,4BAAkB,WAAW,MAAM,KAAK;;;AAK5C,MAAAA,aAAA,UAAA,WAAA,SAAS,KAAsB;AAC7B,YAAI,QAAQ,KAAK,eAAc;AAE/B,YAAI,MAAM,eAAe;AACvB,eAAK,SAAS,EAAE,MAAM,iBAAgB,CAAE;AACxC,8BAAoB,KAAK,KAAK;;;AAOlC,MAAAA,aAAA,UAAA,WAAA,SAAS,YAAwB,aAA+C;AAC9E,YAAI,sBAAsB,UAAU;AAClC,cAAI,MAAM,WAAW;AACrB,cAAI,WAAW,WAAW;AAC1B,cAAI,cAAc,KAAK,eAAc;AAGrC,cAAI,CAAC,YAAY,WAAW,KAAK,IAAI,KAAK,GAAG;AAC3C,iBAAK,SAAS;cACZ,MAAM;cACN,YAAY,kBAAkB,EAAE,KAAK,SAAQ,CAAE;;aAChD;AACD,iBAAK,gBAAgB,UAAU;;AAGjC,iBAAO;;AAGT,YAAI,QAAQ,KAAK,eAAc;AAC/B,YAAI;AAEJ,YAAI,uBAAuB,gBAAgB;AACzC,wBAAc,YAAY;mBACjB,OAAO,gBAAgB,WAAW;AAC3C,cAAI,aAAa;AACd,0BAAe,kBAAkB,MAAM,YAAY,EAAC,CAAA;;mBAE9C,eAAe,MAAM;AAC9B,cAAI,YAAY,KAAK,mBAAmB,WAAW;AAEnD,cAAI,CAAC,WAAW;AACd,oBAAQ,KAAK,6CAA2C,cAAW,GAAG;AACtE,mBAAO;;AAET,wBAAc,UAAU;;AAG1B,YAAI,QAAQ,WAAW,YAAY,aAAa,OAAO,KAAK;AAE5D,YAAI,OAAO;AACT,cAAI,cAAc,IAAI,SACpB,OACA,MAAM,KACN,MAAM,IAAI,eAAe,OAAO,MAAM,QAAQ;AAEhD,eAAK,SAAS;YACZ,MAAM;YACN,YAAY,kBAAkB,KAAK;WACpC;AACD,eAAK,gBAAgB,WAAW;AAEhC,iBAAO;;AAGT,eAAO;;AAGD,MAAAA,aAAA,UAAA,kBAAR,SAAwB,UAAkB;AAA1C,YAAA,QAAA;AACQ,YAAA,UAAY,KAAK,eAAc,EAAE;AAEvC,gBAAQ,QAAQ,YAAY;UAC1B,OAAO;UACP,eAAe,CAAA;UACf,QAAQ,WAAA;AACN,kBAAK,SAAS;cACZ,MAAM;cACN,YAAY,gBAAgB,QAAQ;aACrC;;SAEJ;;AAIH,MAAAA,aAAA,UAAA,eAAA,SAAaG,KAAU;AACrB,YAAI,QAAQ,KAAK,eAAc;AAC3B,YAAA,KAAsB,MAAM,YAA1B,OAAI,GAAA,MAAEC,aAAS,GAAA;AACrB,QAAAD,MAAK,OAAOA,GAAE;AAEd,iBAAS,SAAS,MAAM;AACtB,cAAI,MAAM,KAAK,KAAK;AAEpB,cAAI,IAAI,aAAaA,KAAI;AACvB,gBAAI,IAAI,cAAc;AACpB,qBAAO,IAAI,SAAS,OAAO,KAAK,IAAI;;AAGtC,qBAAS,cAAcC,YAAW;AAChC,kBAAI,WAAWA,WAAU,UAAU;AAEnC,kBAAI,SAAS,UAAU,IAAI,OAAO;AAChC,uBAAO,IAAI,SAAS,OAAO,KAAK,QAAQ;;;;;AAMhD,eAAO;;AAGT,MAAAJ,aAAA,UAAA,YAAA,WAAA;AACE,YAAI,cAAc,KAAK,eAAc;AAErC,eAAO,eAAe,YAAY,YAAY,WAAW;;AAG3D,MAAAA,aAAA,UAAA,kBAAA,WAAA;AACE,aAAK,SAAS,EAAE,MAAM,oBAAmB,CAAE;;AAM7C,MAAAA,aAAA,UAAA,kBAAA,WAAA;AACE,YAAI,QAAQ,KAAK,eAAc;AAC/B,YAAI,aAAa,MAAM;AACvB,YAAI,aAA+B,CAAA;AAEnC,iBAAS,cAAc,YAAY;AACjC,qBAAW,KAAK,IAAI,eAAe,OAAO,WAAW,UAAU,CAAC,CAAC;;AAGnE,eAAO;;AAGT,MAAAA,aAAA,UAAA,qBAAA,SAAmBG,KAAU;AAC3B,YAAI,QAAQ,KAAK,eAAc;AAC/B,YAAI,aAAa,MAAM;AACvB,QAAAA,MAAK,OAAOA,GAAE;AAEd,iBAAS,YAAY,YAAY;AAC/B,cAAI,WAAW,QAAQ,EAAE,aAAaA,KAAI;AACxC,mBAAO,IAAI,eAAe,OAAO,WAAW,QAAQ,CAAC;;;AAIzD,eAAO;;AAGT,MAAAH,aAAA,UAAA,iBAAA,SAAe,aAA6B;AAC1C,YAAI,QAAQ,KAAK,eAAc;AAE/B,YAAI,uBAAuB,gBAAgB;AAEzC,cAAI,CAAC,MAAM,aAAa,YAAY,oBAAoB,QAAQ,GAAG;AACjE,iBAAK,SAAS;cACZ,MAAM;cACN,SAAS,CAAC,YAAY,mBAAmB;aAC1C;;AAGH,iBAAO;;AAGT,YAAI,cAAc,iBAAiB,aAAa,KAAK;AAErD,YAAI,aAAa;AACf,eAAK,SAAS,EAAE,MAAM,qBAAqB,SAAS,CAAC,WAAW,EAAC,CAAE;AAEnE,iBAAO,IAAI,eAAe,OAAO,WAAW;;AAG9C,eAAO;;AAGT,MAAAA,aAAA,UAAA,wBAAA,WAAA;AACE,aAAK,SAAS,EAAE,MAAM,2BAA0B,CAAE;;AAGpD,MAAAA,aAAA,UAAA,gBAAA,WAAA;AACE,aAAK,SAAS,EAAE,MAAM,uBAAuB,WAAW,KAAI,CAAE;;AAMhE,MAAAA,aAAA,UAAA,eAAA,SAAa,WAAwB;AACnC,YAAI,OAAO,eAAe,SAAS;AAEnC,YAAI,MAAM;AACR,eAAK,QAAQ,kBAAkB,EAAE,KAAI,CAAE;;;AAG7C,aAAAA;IAAA,EAAC;;;;;ACxeC,eAAAK,UAAY,SAA0B,KAAe,UAAwB;AAC3E,aAAK,WAAW;AAChB,aAAK,OAAO;AACZ,aAAK,YAAY,YAAY;;AAM/B,MAAAA,UAAA,UAAA,UAAA,SAAQP,OAAc,KAAQ;;AAC5B,YAAIA,SAAQ,qBAAqB;AAC/B,kBAAQ,KAAK,sFAAwF;mBAE5FA,UAAS,MAAM;AACxB,gBAAM,wBAAwBA,KAAI,EAAE,GAAG;AAEvC,eAAK,OAAO;YACV,eAAe,EAAE,UAAU,IAAG;;WAC/B;mBACQA,SAAQ,yBAAyB;AAC1C,gBAAM,wBAAwBA,KAAI,EAAE,GAAG;AAEvC,eAAK,OAAO;YACV,gBAAa,KAAA,CAAA,GAAI,GAACA,KAAI,IAAG,KAAG;WAC7B;mBACQA,SAAQ,mBAAmB;AACpC,cAAI,KAAK,kBAAkBA,KAAI,EAAE,GAAG;AAEpC,cAAIA,UAAS,SAAS;AACpB,iBAAK,EAAE,iBAAiB,KAAK,aAAa,IAAG;qBACpCA,UAAS,YAAY;AAC9B,iBAAK,EAAE,eAAe,KAAK,kBAAkB,IAAG;iBAC3C;AACL,kBAAE,KAAA,CAAA,GAAK,GAACA,KAAI,IAAG,KAAG;;AAGpB,eAAK,OAAO;YACV,eAAe,EAAE,GAAE;WACpB;eACI;AACL,kBAAQ,KAAK,yBAAuBA,QAAI,iCAAiC;;;AAI7E,MAAAO,UAAA,UAAA,kBAAA,SAAgBP,OAAc,KAAQ;;AACpC,aAAK,OAAO;UACV,gBAAa,KAAA,CAAA,GAAI,GAACA,KAAI,IAAG,KAAG;SAC7B;;AAGH,MAAAO,UAAA,UAAA,WAAA,SAAS,YAAuBZ,UAAkE;AAAlE,YAAAA,aAAA,QAAA;AAAA,UAAAA,WAAA,CAAA;QAAkE;AAC1F,YAAA,UAAY,KAAK,SAAQ;AAC/B,YAAIH,SAAQ,QAAQ,aAAa,UAAU;AAE3C,YAAIA,UAAS,KAAK,WAAW;AAC3B,cAAI,gBAAgB,KAAK,UAAU;AACnC,cAAI,aAAa,UAAU,cAAc,OAAOA,QAAO,SAASG,SAAQ,WAAW;AAEnF,cAAIA,SAAQ,kBAAkB;AAC5B,iBAAK,OAAO,EAAE,YAAY,WAAU,CAAE;iBACjC;AACL,iBAAK,OAAO,EAAE,WAAU,CAAE;;;;AAKhC,MAAAY,UAAA,UAAA,SAAA,SAAO,UAA4BZ,UAAsC;AAAtC,YAAAA,aAAA,QAAA;AAAA,UAAAA,WAAA,CAAA;QAAsC;AACjE,YAAA,UAAY,KAAK,SAAQ;AAC/B,YAAIF;AAEJ,YAAI,YAAY,MAAM;AACpB,UAAAA,OAAM,QAAQ,aAAa,QAAQ;AAEnC,cAAI,CAACA,MAAK;AACR;;;AAIJ,YAAI,KAAK,WAAW;AAClB,cAAIA,MAAK;AACP,gBAAI,WAAW,UAAU,KAAK,UAAU,MAAM,KAAKA,MAAK,SAASE,SAAQ,WAAW;AACpF,iBAAK,OAAO,EAAE,SAAQ,CAAE;iBACnB;AACL,iBAAK,OAAO,EAAE,eAAe,EAAE,QAAQ,MAAK,EAAE,CAAE;;;;AAKtD,MAAAY,UAAA,UAAA,WAAA,SAAS,YAAuB,UAA4BZ,UAAwD;AAAxD,YAAAA,aAAA,QAAA;AAAA,UAAAA,WAAA,CAAA;QAAwD;AAC5G,YAAA,UAAY,KAAK,SAAQ;AAC/B,YAAI,gBAAgB,EAAE,QAAQA,SAAQ,OAAM;AAC5C,YAAIH,SAAQ,QAAQ,aAAa,UAAU;AAC3C,YAAIC;AAEJ,YAAI,CAACD,QAAO;AACV;;AAGF,YAAI,YAAY,MAAM;AACpB,UAAAC,OAAM,QAAQ,aAAa,QAAQ;AAEnC,cAAI,CAACA,MAAK;AACR;;;AAIJ,YAAI,KAAK,WAAW;AAClB,cAAI,gBAAgB,KAAK,UAAU;AAInC,cAAIE,SAAQ,WAAW,MAAM;AAC3B,4BAAgB,uBAAuB,aAAa;;AAGtD,cAAI,aAAa,UAAU,cAAc,OAAOH,QAAO,SAASG,SAAQ,WAAW;AAEnF,cAAIF,MAAK;AACP,gBAAI,WAAW,UAAU,cAAc,KAAKA,MAAK,SAASE,SAAQ,WAAW;AAE7E,gBAAI,eAAe,YAAY,QAAQ,GAAG;AACxC,mBAAK,OAAO,EAAE,YAAY,YAAY,cAAa,CAAE;mBAChD;AACL,mBAAK,OAAO,EAAE,YAAY,UAAU,cAAa,CAAE;;iBAEhD;AACL,0BAAc,SAAS;AACvB,iBAAK,OAAO,EAAE,YAAY,YAAY,cAAa,CAAE;;;;AAK3D,MAAAY,UAAA,UAAA,YAAA,SAAU,YAAyB;AACjC,YAAI,QAAQ,eAAe,UAAU;AAErC,YAAI,OAAO;AACT,eAAK,OAAO,EAAE,YAAY,MAAK,CAAE;;;AAIrC,MAAAA,UAAA,UAAA,UAAA,SAAQ,YAAyB;AAC/B,YAAI,QAAQ,eAAe,UAAU;AAErC,YAAI,OAAO;AACT,eAAK,OAAO,EAAE,UAAU,MAAK,CAAE;;;AAInC,MAAAA,UAAA,UAAA,YAAA,SAAU,YAAyB;AACjC,YAAI,QAAQ,eAAe,UAAU;AAErC,YAAI,OAAO;AACT,eAAK,OAAO,EAAE,YAAY,MAAK,CAAE;;;AAIrC,MAAAA,UAAA,UAAA,YAAA,SAAU,QAAiBZ,UAA4C;AAA5C,YAAAA,aAAA,QAAA;AAAA,UAAAA,WAAA,CAAA;QAA4C;AACrE,YAAI,gBAAgB,EAAE,OAAM;AACtB,YAAA,mBAAqBA,SAAO;AAElC,YAAI,oBAAoB,MAAM;AAC5B,6BAAmB,KAAK,SAAS,QAAQ;;AAG3C,YAAI,KAAK,KAAK,WAAW,QAAQ;AAC/B,wBAAc,SAAS;;AAGzB,aAAK,OAAO,EAAE,cAAa,CAAE;;AAG/B,MAAAY,UAAA,UAAA,cAAA,SAAY,aAA2B;AAC/B,YAAA,UAAY,KAAK,SAAQ;AAC/B,YAAI,WAAW,KAAK;AACpB,YAAI,YAAY,gBAAgB,WAAW;AAE3C,YAAI,KAAK,KAAK,QAAQ;AACpB,iBAAO,QAAQ,YAAY,SAAS,MAAM,OAAO,SAAS,MAAM,KAAK,WAAW;YAC9E,gBAAgB,SAAS;YACzB,cAAc,SAAS;WACxB;;AAEH,eAAO,QAAQ,OAAO,SAAS,MAAM,OAAO,WAAW;UACrD,WAAW,SAAS;SACrB;;AAGH,MAAAA,UAAA,UAAA,SAAA,SAAO,UAAuB;AAC5B,YAAI,WAAW,KAAK;AAEpB,YAAI,UAAU;AACZ,cAAI,MAAM,KAAK;AACf,cAAI,YAAU,KAAK;AACb,cAAA,eAAe,UAAQ,eAAc,EAAE;AAC7C,cAAI,iBAAiB,kBAAkB,cAAY,SAAS,UAAU;AACtE,cAAI,kBAAkB;YACpB,IAAI;cACF,SAAS;cACT,eAAe;cACf,kBAAkB;cAClB,aAAa,CAAA;cACb,SAAS;cACT,QAAQ,CAAA;cACR,iBAAiB;cACjB,aAAa;cACb,WAAW;cACX,YAAY,CAAA;;;AAIhB,2BAAiB,0BAA0B,gBAAgB,iBAAiB,UAAU,SAAO;AAE7F,cAAI,WAAW,IAAIA,UAAS,WAAS,KAAK,QAAQ;AAClD,eAAK,OAAO,eAAe,KAAK,IAAI,KAAK;AACzC,eAAK,YAAY,eAAe,UAAU,SAAS,UAAU;AAE7D,oBAAQ,SAAS;YACf,MAAM;YACN,YAAY;WACb;AAED,oBAAQ,QAAQ,QAAQ,eAAe;YACrC;YACA,OAAO;YACP,eAAe,eAAe,gBAAgB,WAAS,QAAQ;YAC/D,QAAM,WAAA;AACJ,wBAAQ,SAAS;gBACf,MAAM;gBACN,YAAU;eACX;;WAEJ;;;AAIL,MAAAA,UAAA,UAAA,SAAA,WAAA;AACE,YAAI,UAAU,KAAK;AACnB,YAAI,UAAU,gBAAgB,IAAI;AAElC,gBAAQ,SAAS;UACf,MAAM;UACN,YAAY;SACb;AAED,gBAAQ,QAAQ,QAAQ,eAAe;UACrC,OAAO;UACP,eAAe,CAAA;UACf,QAAM,WAAA;AACJ,oBAAQ,SAAS;cACf,MAAM;cACN,YAAY;aACb;;SAEJ;;AAGH,aAAA,eAAIA,UAAA,WAAA,UAAM;aAAV,WAAA;AACQ,cAAA,WAAa,KAAK,KAAI;AAE5B,cAAI,UAAU;AACZ,mBAAO,IAAI,eACT,KAAK,UACL,KAAK,SAAS,eAAc,EAAG,aAAa,QAAQ,CAAC;;AAGzD,iBAAO;;;;;AAGT,aAAA,eAAIA,UAAA,WAAA,SAAK;aAAT,WAAA;AACE,iBAAO,KAAK,YACV,KAAK,SAAS,QAAQ,OAAO,KAAK,UAAU,MAAM,KAAK,IACvD;;;;;AAGJ,aAAA,eAAIA,UAAA,WAAA,OAAG;aAAP,WAAA;AACE,iBAAQ,KAAK,aAAa,KAAK,KAAK,SAClC,KAAK,SAAS,QAAQ,OAAO,KAAK,UAAU,MAAM,GAAG,IACrD;;;;;AAGJ,aAAA,eAAIA,UAAA,WAAA,YAAQ;aAAZ,WAAA;AACE,cAAI,WAAW,KAAK;AACpB,cAAI,UAAU;AACZ,mBAAO,KAAK,SAAS,QAAQ,UAAU,SAAS,MAAM,OAAO;cAC3D,UAAU,KAAK,KAAK;cACpB,WAAW,SAAS;aACrB;;AAEH,iBAAO;;;;;AAGT,aAAA,eAAIA,UAAA,WAAA,UAAM;aAAV,WAAA;AACE,cAAI,WAAW,KAAK;AACpB,cAAI,YAAY,KAAK,KAAK,QAAQ;AAChC,mBAAO,KAAK,SAAS,QAAQ,UAAU,SAAS,MAAM,KAAK;cACzD,UAAU,KAAK,KAAK;cACpB,WAAW,SAAS;aACrB;;AAEH,iBAAO;;;;;AAKT,aAAA,eAAIA,UAAA,WAAA,MAAE;;;aAAN,WAAA;AAAW,iBAAO,KAAK,KAAK;QAAQ;;;;AACpC,aAAA,eAAIA,UAAA,WAAA,WAAO;aAAX,WAAA;AAAgB,iBAAO,KAAK,KAAK;QAAO;;;;AACxC,aAAA,eAAIA,UAAA,WAAA,UAAM;aAAV,WAAA;AAAe,iBAAO,KAAK,KAAK;QAAM;;;;AACtC,aAAA,eAAIA,UAAA,WAAA,SAAK;aAAT,WAAA;AAAc,iBAAO,KAAK,KAAK;QAAK;;;;AACpC,aAAA,eAAIA,UAAA,WAAA,OAAG;aAAP,WAAA;AAAY,iBAAO,KAAK,KAAK;QAAG;;;;AAChC,aAAA,eAAIA,UAAA,WAAA,WAAO;aAAX,WAAA;AAAgB,iBAAO,KAAK,KAAK,GAAG,WAAW;QAAM;;;;AACrD,aAAA,eAAIA,UAAA,WAAA,iBAAa;aAAjB,WAAA;AAAsB,iBAAO,KAAK,KAAK,GAAG;QAAa;;;;AACvD,aAAA,eAAIA,UAAA,WAAA,oBAAgB;aAApB,WAAA;AAAyB,iBAAO,KAAK,KAAK,GAAG;QAAgB;;;;AAC7D,aAAA,eAAIA,UAAA,WAAA,cAAU;aAAd,WAAA;AAAmB,iBAAO,KAAK,KAAK,GAAG,YAAY,CAAC,KAAK;QAAI;;;;AAC7D,aAAA,eAAIA,UAAA,WAAA,WAAO;aAAX,WAAA;AAAgB,iBAAO,KAAK,KAAK,GAAG;QAAO;;;;AAC3C,aAAA,eAAIA,UAAA,WAAA,SAAK;aAAT,WAAA;AAAc,iBAAO,KAAK,KAAK,GAAG,OAAO,CAAC,KAAK;QAAI;;;;AACnD,aAAA,eAAIA,UAAA,WAAA,mBAAe;aAAnB,WAAA;AAAwB,iBAAO,KAAK,KAAK,GAAG;QAAe;;;;AAC3D,aAAA,eAAIA,UAAA,WAAA,eAAW;aAAf,WAAA;AAAoB,iBAAO,KAAK,KAAK,GAAG;QAAW;;;;AACnD,aAAA,eAAIA,UAAA,WAAA,aAAS;aAAb,WAAA;AAAkB,iBAAO,KAAK,KAAK,GAAG;QAAS;;;;AAG/C,aAAA,eAAIA,UAAA,WAAA,cAAU;;aAAd,WAAA;AAAmB,iBAAO,KAAK,KAAK,GAAG;QAAU;;;;AACjD,aAAA,eAAIA,UAAA,WAAA,iBAAa;aAAjB,WAAA;AAAsB,iBAAO,KAAK,KAAK;QAAa;;;;AAEpD,MAAAA,UAAA,UAAA,gBAAA,SAAc,UAA2E;AAA3E,YAAA,aAAA,QAAA;AAAA,qBAAA,CAAA;QAA2E;AACvF,YAAI,MAAM,KAAK;AACT,YAAA,KAAO,IAAG;AACZ,YAAA,KAAuB,MAArB,WAAQ,GAAA,UAAE,SAAM,GAAA;AACtB,YAAI,MAAkB,CAAA;AAEtB,YAAI,IAAI,OAAO;AACb,cAAI,QAAQ,IAAI;;AAGlB,YAAI,UAAU;AACZ,cAAI,QAAQ;;AAGd,YAAI,QAAQ;AACV,cAAI,MAAM;;AAGZ,YAAI,IAAI,UAAU;AAChB,cAAI,KAAK,IAAI;;AAGf,YAAI,IAAI,SAAS;AACf,cAAI,UAAU,IAAI;;AAGpB,YAAI,IAAI,KAAK;AACX,cAAI,MAAM,IAAI;;AAGhB,YAAI,GAAG,WAAW,GAAG,YAAY,QAAQ;AACvC,cAAI,UAAU,GAAG;;AAMnB,YAAI,SAAS,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,aAAa;AACzF,cAAI,QAAQ,GAAG;eACV;AACL,cAAI,GAAG,iBAAiB;AACtB,gBAAI,kBAAkB,GAAG;;AAE3B,cAAI,GAAG,aAAa;AAClB,gBAAI,cAAc,GAAG;;;AAIzB,YAAI,GAAG,WAAW;AAChB,cAAI,YAAY,GAAG;;AAGrB,YAAI,GAAG,WAAW,QAAQ;AACxB,cAAI,aAAa,GAAG;;AAGtB,YAAI,OAAO,KAAK,IAAI,aAAa,EAAE,QAAQ;AACzC,cAAI,SAAS,uBAAuB;AAClC,YAAAb,UAAS,KAAK,IAAI,aAAa;iBAC1B;AACL,gBAAI,gBAAgB,IAAI;;;AAI5B,eAAO;;AAGT,MAAAa,UAAA,UAAA,SAAA,WAAA;AACE,eAAO,KAAK,cAAa;;AAE7B,aAAAA;IAAA,EAAC;;WAEe,gBAAgB,UAAkB;;AAChD,QAAI,MAAM,SAAS;AACnB,QAAI,WAAW,SAAS;AAExB,WAAO;MACL,OAAI,KAAA,CAAA,GAAI,GAAC,IAAI,KAAK,IAAG,KAAG;MACxB,WAAW,qBACL,GAAC,SAAS,UAAU,IAAG,UAAQ,MACjC,CAAA;;EAER;WAEgB,eAAe,YAAwB,SAA0B,iBAA+B;AACxG,QAAA,OAAoB,WAAU,MAAxBD,aAAc,WAAU;AACpC,QAAI,YAAwB,CAAA;AAC5B,QAAI,oBAAoB,kBAAkB,gBAAgB,aAAa;AAEvE,aAASD,OAAMC,YAAW;AACxB,UAAI,WAAWA,WAAUD,GAAE;AAC3B,UAAI,MAAM,KAAK,SAAS,KAAK;AAE7B,UAAI,SAAS,eAAe,mBAAmB;AAC7C,kBAAU,KAAK,IAAI,SAAS,SAAS,KAAK,QAAQ,CAAC;;;AAIvD,WAAO;EACT;ACxbA,MAAI,yBAAyB,CAAA;WAEb,uBAAuBL,OAAM,UAAQ;AACnD,2BAAuBA,KAAI,IAAI;EACjC;WAEgB,qBAAqBA,OAAI;AACvC,WAAO,IAAI,uBAAuBA,KAAI,EAAC;EACzC;AAEA,MAAA;;IAAA,WAAA;AAAA,eAAAQ,2BAAA;;AACE,MAAAA,yBAAA,UAAA,gBAAA,SAAcJ,IAAa;AACzB,eAAOA,GAAE,eAAc;;AAGzB,MAAAI,yBAAA,UAAA,iBAAA,SAAeJ,IAAa;AAC1B,eAAOA,GAAE,YAAW;;AAGtB,MAAAI,yBAAA,UAAA,eAAA,SAAaJ,IAAa;AACxB,eAAOA,GAAE,WAAU;;AAGrB,MAAAI,yBAAA,UAAA,gBAAA,SAAc,KAAG;AACf,eAAO,eAAe,GAAG;;AAG3B,MAAAA,yBAAA,UAAA,gBAAA,SAAc,QAAM;AAClB,eAAO,eAAe,MAAM;;AAEhC,aAAAA;IAAA,EAAC;;AAED,yBAAuB,WAAW,uBAAuB;ACxCzD,MAAM,SAAS;WAECC,OAAM,KAAG;AACvB,QAAIC,KAAI,OAAO,KAAK,GAAG;AAEvB,QAAIA,IAAG;AACL,UAAI,SAAS,IAAI,KAAK,KAAK,IACzB,OAAOA,GAAE,CAAC,CAAC,GACXA,GAAE,CAAC,IAAI,OAAOA,GAAE,CAAC,CAAC,IAAI,IAAI,GAC1B,OAAOA,GAAE,CAAC,KAAK,CAAC,GAChB,OAAOA,GAAE,CAAC,KAAK,CAAC,GAChB,OAAOA,GAAE,CAAC,KAAK,CAAC,GAChB,OAAOA,GAAE,EAAE,KAAK,CAAC,GACjBA,GAAE,EAAE,IAAI,OAAO,OAAKA,GAAE,EAAE,CAAG,IAAI,MAAO,CAAC,CACxC;AAED,UAAI,YAAY,MAAM,GAAG;AACvB,YAAI,iBAAiB;AAErB,YAAIA,GAAE,EAAE,GAAG;AACT,4BAAkBA,GAAE,EAAE,MAAM,MAAM,KAAK,MACrC,OAAOA,GAAE,EAAE,KAAK,CAAC,IAAI,KACrB,OAAOA,GAAE,EAAE,KAAK,CAAC;;AAIrB,eAAO;UACL;UACA,mBAAmB,CAACA,GAAE,CAAC;UACvB;;;;AAKN,WAAO;EACT;;;;ACgBE,eAAAC,SAAY,UAAyB;AACnC,YAAI,WAAW,KAAK,WAAW,SAAS;AACxC,YAAI,kBAAkB,aAAa,WAAW,aAAa;AAE3D,YAAI,SAAS,qBAAqB,iBAAiB;AACjD,eAAK,oBAAoB,IAAI,SAAS,kBAAkB,QAAQ;;AAGlE,aAAK,mBAAmB,QAAQ,CAAC,mBAAmB,KAAK,iBAAiB;AAE1E,aAAK,iBAAiB,qBAAqB,SAAS,cAAc;AAClE,aAAK,SAAS,SAAS;AACvB,aAAK,UAAU,SAAS,OAAO,KAAK;AACpC,aAAK,UAAU,SAAS,OAAO,KAAK;AAEpC,YAAI,SAAS,0BAA0B,OAAO;AAC5C,eAAK,UAAU;AACf,eAAK,UAAU;;AAGjB,YAAI,OAAO,SAAS,aAAa,UAAU;AACzC,eAAK,UAAU,SAAS;;AAG1B,YAAI,OAAO,SAAS,0BAA0B,YAAY;AACxD,eAAK,iBAAiB,SAAS;;AAGjC,aAAK,WAAW,SAAS,YAAY,OAAO,SAAS,WAAW,SAAS,OAAO,QAAQ;AACxF,aAAK,gBAAgB,SAAS,gBAAgB,OAAO,SAAS,eAAe,SAAS,OAAO,QAAQ,iBAAiB,KAAK;AAE3H,aAAK,eAAe,SAAS;AAC7B,aAAK,mBAAmB,SAAS;;AAKnC,MAAAA,SAAA,UAAA,eAAA,SAAa,OAAgB;AAC3B,YAAI,OAAO,KAAK,iBAAiB,KAAK;AACtC,YAAI,SAAS,MAAM;AACjB,iBAAO;;AAET,eAAO,KAAK;;AAGd,MAAAA,SAAA,UAAA,kBAAA,WAAA;AACE,YAAI,KAAK,kBAAkB;AACzB,iBAAO,KAAK,mBAAkB,oBAAI,KAAI,GAAG,QAAO,CAAE;;AAIpD,eAAO,eAAe,iBAAiB,oBAAI,KAAI,CAAE,CAAC;;AAGpD,MAAAA,SAAA,UAAA,mBAAA,SAAiB,OAAgB;AAC/B,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO,KAAK,MAAM,KAAK;;AAGzB,YAAI,SAAS;AAEb,YAAI,OAAO,UAAU,UAAU;AAC7B,mBAAS,KAAK,kBAAkB,KAAK;mBAC5B,iBAAiB,MAAM;AAChC,kBAAQ,MAAM,QAAO;AAErB,cAAI,CAAC,MAAM,KAAK,GAAG;AACjB,qBAAS,KAAK,kBAAkB,KAAK;;mBAE9B,MAAM,QAAQ,KAAK,GAAG;AAC/B,mBAAS,eAAe,KAAK;;AAG/B,YAAI,WAAW,QAAQ,CAAC,YAAY,MAAM,GAAG;AAC3C,iBAAO;;AAGT,eAAO,EAAE,QAAQ,mBAAmB,OAAO,WAAW,KAAI;;AAG5D,MAAAA,SAAA,UAAA,QAAA,SAAMC,IAAS;AACb,YAAI,QAAQH,OAAMG,EAAC;AACnB,YAAI,UAAU,MAAM;AAClB,iBAAO;;AAGH,YAAA,SAAW,MAAK;AACtB,YAAI,YAAY;AAEhB,YAAI,MAAM,mBAAmB,MAAM;AACjC,cAAI,KAAK,kBAAkB;AACzB,qBAAS,KAAK,kBAAkB,OAAO,QAAO,IAAK,MAAM,iBAAiB,KAAK,GAAI;iBAC9E;AACL,wBAAY,MAAM;;;AAItB,eAAO,EAAE,QAAQ,mBAAmB,MAAM,mBAAmB,UAAS;;AAKxE,MAAAD,SAAA,UAAA,UAAA,SAAQ,QAAkB;AACxB,eAAO,KAAK,eAAe,cAAc,MAAM;;AAGjD,MAAAA,SAAA,UAAA,WAAA,SAAS,QAAkB;AACzB,eAAO,KAAK,eAAe,eAAe,MAAM;;AAKlD,MAAAA,SAAA,UAAA,MAAA,SAAI,QAAoB,KAAa;AACnC,YAAIE,KAAI,KAAK,eAAe,cAAc,MAAM;AAChD,QAAAA,GAAE,CAAC,KAAK,IAAI;AACZ,QAAAA,GAAE,CAAC,KAAK,IAAI;AACZ,QAAAA,GAAE,CAAC,KAAK,IAAI;AACZ,QAAAA,GAAE,CAAC,KAAK,IAAI;AACZ,eAAO,KAAK,eAAe,cAAcA,EAAC;;AAG5C,MAAAF,SAAA,UAAA,WAAA,SAAS,QAAoB,KAAa;AACxC,YAAIE,KAAI,KAAK,eAAe,cAAc,MAAM;AAChD,QAAAA,GAAE,CAAC,KAAK,IAAI;AACZ,QAAAA,GAAE,CAAC,KAAK,IAAI;AACZ,QAAAA,GAAE,CAAC,KAAK,IAAI;AACZ,QAAAA,GAAE,CAAC,KAAK,IAAI;AACZ,eAAO,KAAK,eAAe,cAAcA,EAAC;;AAG5C,MAAAF,SAAA,UAAA,WAAA,SAAS,QAAoBG,IAAS;AACpC,YAAID,KAAI,KAAK,eAAe,cAAc,MAAM;AAChD,QAAAA,GAAE,CAAC,KAAKC;AACR,eAAO,KAAK,eAAe,cAAcD,EAAC;;AAG5C,MAAAF,SAAA,UAAA,YAAA,SAAU,QAAoBG,IAAS;AACrC,YAAID,KAAI,KAAK,eAAe,cAAc,MAAM;AAChD,QAAAA,GAAE,CAAC,KAAKC;AACR,eAAO,KAAK,eAAe,cAAcD,EAAC;;AAK5C,MAAAF,SAAA,UAAA,iBAAA,SAAe,IAAgB,IAAc;AACrC,YAAA,iBAAmB,KAAI;AAE7B,YACE,SAAS,EAAE,MAAM,SAAS,EAAE,KAC5B,eAAe,aAAa,EAAE,MAAM,eAAe,aAAa,EAAE,KAClE,eAAe,eAAe,EAAE,MAAM,eAAe,eAAe,EAAE,GACtE;AACA,iBAAO,eAAe,cAAc,EAAE,IAAI,eAAe,cAAc,EAAE;;AAE3E,eAAO;;AAGT,MAAAA,SAAA,UAAA,kBAAA,SAAgB,IAAgB,IAAc;AACtC,YAAA,iBAAmB,KAAI;AAE7B,YACE,SAAS,EAAE,MAAM,SAAS,EAAE,KAC5B,eAAe,aAAa,EAAE,MAAM,eAAe,aAAa,EAAE,GAClE;AACA,iBAAQ,eAAe,eAAe,EAAE,IAAI,eAAe,eAAe,EAAE,KACvE,eAAe,cAAc,EAAE,IAAI,eAAe,cAAc,EAAE,KAAK;;AAE9E,eAAO;;AAKT,MAAAA,SAAA,UAAA,oBAAA,SAAkB,IAAgB,IAAc;AAC9C,YAAIG,KAAI,KAAK,eAAe,IAAI,EAAE;AAElC,YAAIA,OAAM,MAAM;AACd,iBAAO,EAAE,MAAM,QAAQ,OAAOA,GAAC;;AAGjC,QAAAA,KAAI,KAAK,gBAAgB,IAAI,EAAE;AAE/B,YAAIA,OAAM,MAAM;AACd,iBAAO,EAAE,MAAM,SAAS,OAAOA,GAAC;;AAGlC,QAAAA,KAAI,eAAe,IAAI,EAAE;AAEzB,YAAIA,OAAM,MAAM;AACd,iBAAO,EAAE,MAAM,QAAQ,OAAOA,GAAC;;AAGjC,QAAAA,KAAI,cAAc,IAAI,EAAE;AAExB,YAAIA,OAAM,MAAM;AACd,iBAAO,EAAE,MAAM,OAAO,OAAOA,GAAC;;AAGhC,QAAAA,KAAI,UAAU,IAAI,EAAE;AAEpB,YAAI,MAAMA,EAAC,GAAG;AACZ,iBAAO,EAAE,MAAM,QAAQ,OAAOA,GAAC;;AAGjC,QAAAA,KAAI,YAAY,IAAI,EAAE;AAEtB,YAAI,MAAMA,EAAC,GAAG;AACZ,iBAAO,EAAE,MAAM,UAAU,OAAOA,GAAC;;AAGnC,QAAAA,KAAI,YAAY,IAAI,EAAE;AAEtB,YAAI,MAAMA,EAAC,GAAG;AACZ,iBAAO,EAAE,MAAM,UAAU,OAAOA,GAAC;;AAGnC,eAAO,EAAE,MAAM,eAAe,OAAO,GAAG,QAAO,IAAK,GAAG,QAAO,EAAE;;AAGlE,MAAAH,SAAA,UAAA,wBAAA,SAAsB,IAAgB,IAAgBP,IAAW;AAE/D,YAAI;AAEJ,YAAIA,GAAE,OAAO;AACX,iBAAO,KAAK,eAAe,IAAI,EAAE;AACjC,cAAI,SAAS,MAAM;AACjB,mBAAO,OAAO,aAAaA,EAAC;;;AAIhC,YAAIA,GAAE,QAAQ;AACZ,iBAAO,KAAK,gBAAgB,IAAI,EAAE;AAClC,cAAI,SAAS,MAAM;AACjB,mBAAO,OAAO,cAAcA,EAAC;;;AAIjC,YAAIA,GAAE,MAAM;AACV,iBAAO,cAAc,IAAI,EAAE;AAC3B,cAAI,SAAS,MAAM;AACjB,mBAAO,OAAO,YAAYA,EAAC;;;AAI/B,gBAAQ,GAAG,QAAO,IAAK,GAAG,QAAO,KAAM,UAAUA,EAAC;;AAMpD,MAAAO,SAAA,UAAA,UAAA,SAAQD,IAAe,MAAY;AACjC,YAAI,SAAS,QAAQ;AACnB,iBAAO,KAAK,YAAYA,EAAC;;AAE3B,YAAI,SAAS,SAAS;AACpB,iBAAO,KAAK,aAAaA,EAAC;;AAE5B,YAAI,SAAS,QAAQ;AACnB,iBAAO,KAAK,YAAYA,EAAC;;AAE3B,YAAI,SAAS,OAAO;AAClB,iBAAOd,YAAWc,EAAC;;AAErB,YAAI,SAAS,QAAQ;AACnB,iBAAOK,aAAYL,EAAC;;AAEtB,YAAI,SAAS,UAAU;AACrB,iBAAOM,eAAcN,EAAC;;AAExB,YAAI,SAAS,UAAU;AACrB,iBAAOO,eAAcP,EAAC;;AAExB,eAAO;;AAGT,MAAAC,SAAA,UAAA,cAAA,SAAYD,IAAa;AACvB,eAAO,KAAK,eAAe,cAAc;UACvC,KAAK,eAAe,cAAcA,EAAC;SACpC;;AAGH,MAAAC,SAAA,UAAA,eAAA,SAAaD,IAAa;AACxB,eAAO,KAAK,eAAe,cAAc;UACvC,KAAK,eAAe,cAAcA,EAAC;UACnC,KAAK,eAAe,eAAeA,EAAC;SACrC;;AAGH,MAAAC,SAAA,UAAA,cAAA,SAAYD,IAAa;AACvB,eAAO,KAAK,eAAe,cAAc;UACvC,KAAK,eAAe,cAAcA,EAAC;UACnC,KAAK,eAAe,eAAeA,EAAC;UACpCA,GAAE,WAAU,KAAOA,GAAE,UAAS,IAAK,KAAK,UAAU,KAAK;SACxD;;AAKH,MAAAC,SAAA,UAAA,oBAAA,SAAkB,QAAkB;AAClC,YAAI,KAAK,gBAAgB;AACvB,iBAAO,KAAK,eAAe,KAAK,OAAO,MAAM,CAAC;;AAEhD,eAAO,WAAW,QAAQ,KAAK,SAAS,KAAK,OAAO;;AAItD,MAAAA,SAAA,UAAA,SAAA,SAAO,QAAoB,WAA0BO,cAAwC;AAAxC,YAAAA,iBAAA,QAAA;AAAA,UAAAA,eAAA,CAAA;QAAwC;AAC3F,eAAO,UAAU,OACf;UACE;UACA,gBAAgBA,aAAY,aAAa,OACvCA,aAAY,YACZ,KAAK,gBAAgB,MAAM;WAE/B,IAAI;;AAIR,MAAAP,SAAA,UAAA,cAAA,SACEnB,QACAC,MACA,WACAyB,cAAyH;AAAzH,YAAAA,iBAAA,QAAA;AAAA,UAAAA,eAAA,CAAA;QAAyH;AAEzH,YAAIA,aAAY,gBAAgB;AAC9B,UAAAzB,OAAM,MAAMA,MAAK,EAAE;;AAGrB,eAAO,UAAU,YACf;UACE,QAAQD;UACR,gBAAgB0B,aAAY,kBAAkB,OAC5CA,aAAY,iBACZ,KAAK,gBAAgB1B,MAAK;WAE9B;UACE,QAAQC;UACR,gBAAgByB,aAAY,gBAAgB,OAC1CA,aAAY,eACZ,KAAK,gBAAgBzB,IAAG;WAE5B,MACAyB,aAAY,gBAAgB;;AAQhC,MAAAP,SAAA,UAAA,YAAA,SAAU,QAAoB,cAAsB;AAAtB,YAAA,iBAAA,QAAA;AAAA,yBAAA,CAAA;QAAsB;AAClD,YAAI,iBAAiB;AAErB,YAAI,CAAC,aAAa,oBAAoB;AACpC,cAAI,aAAa,aAAa,MAAM;AAClC,6BAAiB,aAAa;iBACzB;AACL,6BAAiB,KAAK,gBAAgB,MAAM;;;AAIhD,eAAO,eAAe,QAAQ,gBAAgB,aAAa,QAAQ;;AAKrE,MAAAA,SAAA,UAAA,oBAAA,SAAkB,IAAU;AAC1B,YAAI,KAAK,aAAa,SAAS;AAC7B,iBAAO,eAAe,iBAAiB,IAAI,KAAK,EAAE,CAAC,CAAC;;AACpD,YAAI,KAAK,aAAa,SAAS,CAAC,KAAK,mBAAmB;AACxD,iBAAO,IAAI,KAAK,EAAE;;AAEpB,eAAO,eAAe,KAAK,kBAAkB,iBAAiB,EAAE,CAAC;;AAGnE,MAAAA,SAAA,UAAA,kBAAA,SAAgBD,IAAa;AAC3B,YAAI,KAAK,aAAa,SAAS;AAC7B,iBAAO,CAAC,iBAAiB,eAAeA,EAAC,CAAC,EAAE,kBAAiB;;AAC7D,YAAI,KAAK,aAAa,OAAO;AAC7B,iBAAO;;AACP,YAAI,KAAK,mBAAmB;AAC5B,iBAAO,KAAK,kBAAkB,eAAe,eAAeA,EAAC,CAAC;;AAEhE,eAAO;;AAKT,MAAAC,SAAA,UAAA,SAAA,SAAOD,IAAe,WAAkB;AACtC,YAAI,KAAK,aAAa,SAAS;AAC7B,iBAAO,iBAAiB,eAAeA,EAAC,CAAC;;AAG3C,YAAI,KAAK,aAAa,OAAO;AAC3B,iBAAO,IAAI,KAAKA,GAAE,QAAO,CAAE;;AAG7B,YAAI,CAAC,KAAK,mBAAmB;AAC3B,iBAAO,IAAI,KAAKA,GAAE,QAAO,KAAM,aAAa,EAAE;;AAGhD,eAAO,IAAI,KACTA,GAAE,QAAO,IACP,KAAK,kBAAkB,eAAe,eAAeA,EAAC,CAAC,IAAI,MAAO,EAAE;;AAG5E,aAAAC;IAAA,EAAC;;MCxcY,gBAA+B,CAAA;ACwB5C,MAAM,wBAAwB;IAC5B,MAAM;IACN,MAAM;MACJ,KAAK;MACL,KAAK;;;IAEP,WAAW;IACX,YAAY;MACV,MAAM;MACN,MAAM;MACN,UAAU;MACV,UAAU;MACV,MAAM;MACN,OAAO;MACP,OAAO;MACP,MAAM;MACN,KAAK;MACL,MAAM;;IAER,UAAU;IACV,cAAc;IACd,WAAW;IACX,UAAU;IACV,WAAW;IACX,YAAY;IACZ,cAAc;IACd,cAAc;;AAGhB,MAAM,gBAAajB,UAAAA,UAAA,CAAA,GACd,qBAAqB,GAAA;;;IAGxB,aAAa;MACX,MAAM;MACN,MAAM;MACN,OAAK,SAAC,YAAY,MAAI;AACpB,eAAQ,SAAS,QACb,UACA,UAAQ;;;IAGhB,UAAU;IACV,aAAa;IACb,cAAA,SAAa,UAAgB;AAC3B,aAAO,UAAQ,WAAQ,iBAAc,aAAa,IAAI,KAAK;;EAC5D,CAAA;WAGa,mBAAmB,oBAAiC;AAClE,QAAI,cAAc,mBAAmB,SAAS,IAAI,mBAAmB,CAAC,EAAE,OAAO;AAC/E,QAAI,gBAAgB,cAAc,OAAO,kBAAkB;AAC3D,QAAI,eAA+B;MACjC,IAAI;;AAGN,aAAsB,KAAA,GAAA,kBAAA,eAAA,KAAA,gBAAA,QAAA,MAAe;AAAhC,UAAI,YAAS,gBAAA,EAAA;AAChB,mBAAa,UAAU,IAAI,IAAI;;AAGjC,WAAO;MACL,KAAK;MACL;;EAEJ;WAEgB,YAAY,eAAkC,WAAyB;AACrF,QAAI,OAAO,kBAAkB,YAAY,CAAC,MAAM,QAAQ,aAAa,GAAG;AACtE,aAAO,YACL,cAAc,MACd,CAAC,cAAc,IAAI,GACnB,aAAa;;AAGjB,WAAO,YAAY,eAAe,SAAS;EAC7C;AAEA,WAAS,YAAY,SAAwB,WAAyB;AACpE,QAAI,QAAQ,CAAA,EAAG,OAAO,WAAW,CAAA,CAAE;AACnC,QAAI,MAAM,eAAe,OAAO,SAAS,KAAK;AAE9C,WAAO,YAAY,SAAS,OAAO,GAAG;EACxC;AAEA,WAAS,eAAe,OAAiB,WAAyB;AAChE,aAASO,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK,GAAG;AACxC,UAAI,QAAQ,MAAMA,EAAC,EAAE,kBAAiB,EAAG,MAAM,GAAG;AAElD,eAASkB,KAAI,MAAM,QAAQA,KAAI,GAAGA,MAAK,GAAG;AACxC,YAAI,WAAW,MAAM,MAAM,GAAGA,EAAC,EAAE,KAAK,GAAG;AAEzC,YAAI,UAAU,QAAQ,GAAG;AACvB,iBAAO,UAAU,QAAQ;;;;AAI/B,WAAO;EACT;AAEA,WAAS,YAAY,SAAwB,OAAiB,KAAgB;AAC5E,QAAI,SAAS,WAAW,CAAC,uBAAuB,GAAG,GAAG,CAAC,YAAY,CAAC;AAEpE,WAAO,OAAO;AACR,QAAA,OAAS,OAAM;AACrB,WAAO,OAAO;AAEd,WAAO;MACL;MACA;MACA;MACA,oBAAoB,IAAI,KAAK,aAAa,OAAO;MACjD,SAAS;;EAEb;AEhIA,MAAM,eAAe;IACnB,WAAW;IACX,SAAS;IACT,YAAY,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1B,SAAS;IACT,YAAY;IACZ,SAAS;;;WAMK,mBAAmB,OAA2B,SAAwB;AACpF,WAAO,YACL,aAAa,KAAK,GAClB,MACA,OAAO;EAEX;AAEA,WAAS,aAAa,OAAyB;AAC7C,QAAI;AAEJ,QAAI,UAAU,MAAM;AAClB,gBAAU,CAAC,CAAA,CAAE;eACJ,MAAM,QAAQ,KAAK,GAAG;AAE/B,gBAAU,MAAM,OAAO,SAAC,QAAM;AAAK,eAAA,OAAO;MAAU,CAAA;eAC3C,OAAO,UAAU,YAAY,OAAO;AAC7C,gBAAU,CAAC,KAAK;WACX;AACL,gBAAU,CAAA;;AAGZ,cAAU,QAAQ,IAAI,SAAC,QAAM;AAAK,aAAAC,UAAAA,UAAA,CAAA,GAAM,YAAY,GAAK,MAAM;IAAA,CAAG;AAElE,WAAO;EACT;WCpCgB,gBAAgBC,QAAc,MAAU;AACtD,WAAOA,OAAM,QAAQ,KAAK,QACxBA,OAAM,OAAO,KAAK,SAClBA,OAAM,OAAO,KAAK,OAClBA,OAAM,MAAM,KAAK;EACrB;WAGgB,eAAe,OAAa,OAAW;AACrD,QAAI,MAAM;MACR,MAAM,KAAK,IAAI,MAAM,MAAM,MAAM,IAAI;MACrC,OAAO,KAAK,IAAI,MAAM,OAAO,MAAM,KAAK;MACxC,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,GAAG;MAClC,QAAQ,KAAK,IAAI,MAAM,QAAQ,MAAM,MAAM;;AAG7C,QAAI,IAAI,OAAO,IAAI,SAAS,IAAI,MAAM,IAAI,QAAQ;AAChD,aAAO;;AAGT,WAAO;EACT;WAYgB,eAAeC,QAAc,MAAU;AACrD,WAAO;MACL,MAAM,KAAK,IAAI,KAAK,IAAIA,OAAM,MAAM,KAAK,IAAI,GAAG,KAAK,KAAK;MAC1D,KAAK,KAAK,IAAI,KAAK,IAAIA,OAAM,KAAK,KAAK,GAAG,GAAG,KAAK,MAAM;;EAE5D;WAGgB,cAAc,MAAU;AACtC,WAAO;MACL,OAAO,KAAK,OAAO,KAAK,SAAS;MACjC,MAAM,KAAK,MAAM,KAAK,UAAU;;EAEpC;WAGgB,WAAW,QAAe,QAAa;AACrD,WAAO;MACL,MAAM,OAAO,OAAO,OAAO;MAC3B,KAAK,OAAO,MAAM,OAAO;;EAE7B;AClEA,MAAI;WAEY,wBAAqB;AACnC,QAAI,sBAAsB,MAAM;AAC9B,2BAAqB,0BAAyB;;AAEhD,WAAO;EACT;AAEA,WAAS,4BAAyB;AAGhC,QAAI,OAAO,aAAa,aAAa;AACnC,aAAO;;AAGT,QAAI,KAAK,SAAS,cAAc,KAAK;AACrC,OAAG,MAAM,WAAW;AACpB,OAAG,MAAM,MAAM;AACf,OAAG,MAAM,OAAO;AAChB,OAAG,YAAY;AACf,OAAG,cAAc,OAAO,EAAE,MAAM,SAAS;AACzC,OAAG,cAAc,KAAK,EAAE,MAAM,SAAS;AAEvC,aAAS,KAAK,YAAY,EAAE;AAE5B,QAAI,MAAM,GAAG,cAAc,KAAK;AAChC,QAAI,WAAW,IAAI,eAAe;AAClC,aAAS,KAAK,YAAY,EAAE;AAC5B,WAAO;EACT;ACXA,MAAM,oBAAoB,sBAAqB;;;;AAE/C,eAAAC,YAAA;AACU,aAAA,sBAAsB,QAAQ,KAAK,oBAAoB;AACvD,aAAA,qBAAqB,QAAQ,KAAK,cAAc;AAChD,aAAA,kBAAkB,QAAQ,KAAK,gBAAgB;AAC/C,aAAA,oBAAoB,QAAQ,KAAK,kBAAkB;AACnD,aAAA,iBAAiB,QAAQ,KAAK,iBAAiB;AAC/C,aAAA,mBAAmB,QAAQ,KAAK,iBAAiB;AACjD,aAAA,kBAAkB,CAAA;;AAM1B,MAAAA,UAAA,UAAA,aAAA,SAAW,OAAgB;AAA3B,YAAA,QAAA;AACE,YAAI,WAAW,KAAK,WAAW,KAAK;AACpC,YAAI,UAAU,KAAK,oBAAoB,MAAM,UAAU;AACvD,YAAI,iBAAiB,KAAK,mBAAmB,MAAM,aAAa;AAChE,YAAI,eAAe,KAAK,kBAAkB,MAAM,cAAc,OAAO;AACrE,YAAI,cAAc,KAAK,gBAAgB,MAAM,YAAY,OAAO;AAChE,YAAI,aAAa,KAAK,eAAe,MAAM,SAAS;AACpD,YAAI,eAAe,KAAK,iBAAiB,MAAM,WAAW;AAC1D,YAAI,aAAiD,CAAA;AAErD,aAAK,kBAAkB,QAAQ,UAAU,SAAC,MAAMC,MAAG;AAAK,iBAAA,MAAK,gBAAgBA,IAAG,KAAK,QAAQ,kBAAkB;QAAC,CAAA;AAEhH,iBAASA,QAAO,UAAU;AACxB,cAAI,UAAU,SAASA,IAAG;AAC1B,cAAI,aAAa,YAAYA,IAAG,KAAK;AACrC,cAAI,eAAe,KAAK,gBAAgBA,IAAG;AAE3C,qBAAWA,IAAG,IAAI;YAChB,eAAe,QAAQ,iBAAiB,MAAM;YAC9C,eAAe,eAAeA,IAAG,KAAK;YACtC;YACA,cAAc,aAAa,MAAM,aAAa,EAAE,GAAG,QAAQ,IAAI,aAAaA,IAAG,CAAC;YAChF,gBAAgB,WAAW,UAAU,MAAM,cAAc,IAAI,MAAM,iBAAiB;YACpF,WAAW,WAAWA,IAAG,KAAK;YAC9B,aAAa,aAAaA,IAAG,KAAK;;;AAItC,eAAO;;AAGD,MAAAD,UAAA,UAAA,iBAAR,SAAuB,UAAyB;AAC9C,YAAI,YAAY,CAAA;AAEhB,YAAI,UAAU;AACZ,cAAI,OAAO,KAAK,mBAAmB,QAAQ;AAE3C,mBAAgB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAjB,gBAAIC,OAAG,OAAA,EAAA;AACV,sBAAUA,IAAG,IAAI;;;AAIrB,eAAO;;AAGD,MAAAD,UAAA,UAAA,uBAAR,SAA6B,YAAsB;AAAnD,YAAA,QAAA;AACE,eAAO,QAAQ,WAAW,MAAM,SAAC,UAAkB;AAAK,iBAAA,MAAK,mBAAmB,QAAQ;QAAC,CAAA;;AAGnF,MAAAA,UAAA,UAAA,mBAAR,SAAyB,YAAwB,SAAO;AAChD,YAAA,OAAoB,WAAU,MAAxBE,aAAc,WAAU;AACpC,YAAI,cAAc,CAAA;AAElB,iBAAS,SAAS,MAAM;AACtB,mBAAgB,KAAA,GAAA,KAAA,QAAQ,KAAK,GAAb,KAAA,GAAA,QAAA,MAAgB;AAA3B,gBAAID,OAAG,GAAA,EAAA;AACV,gBAAI,CAAC,YAAYA,IAAG,GAAG;AACrB,0BAAYA,IAAG,IAAI,sBAAqB;;AAG1C,wBAAYA,IAAG,EAAE,KAAK,KAAK,IAAI,KAAK,KAAK;;;AAI7C,iBAAS,cAAcC,YAAW;AAChC,cAAI,WAAWA,WAAU,UAAU;AAEnC,mBAAgB,KAAA,GAAA,KAAA,QAAQ,SAAS,KAAK,GAAtB,KAAA,GAAA,QAAA,MAAyB;AAApC,gBAAID,OAAG,GAAA,EAAA;AACV,gBAAI,YAAYA,IAAG,GAAG;AACpB,0BAAYA,IAAG,EAAE,UAAU,UAAU,IAAI;;;;AAK/C,eAAO;;AAGD,MAAAD,UAAA,UAAA,qBAAR,SAA2B,cAA2B,SAAO;AAC3D,YAAI,cAA8C,CAAA;AAElD,iBAAS,SAAS,cAAc;AAC9B,cAAI,OAAO;AACT,qBAAgB,KAAA,GAAA,KAAA,QAAQ,KAAK,GAAb,KAAA,GAAA,QAAA,MAAgB;AAA3B,kBAAIC,OAAG,GAAA,EAAA;AACV,kBAAI,CAAC,YAAYA,IAAG,GAAG;AACrB,4BAAYA,IAAG,IAAI,CAAA;;AAGrB,0BAAYA,IAAG,EAAE,KAAK,IAAI,aAAa,KAAK;;;;AAKlD,eAAO;;AAGD,MAAAD,UAAA,UAAA,oBAAR,SAA0B,aAAyC;AACjE,YAAI,cAAwD,CAAA;AAE5D,YAAI,aAAa;AACf,cAAI,mBAAiB,KAAK,iBACxB,YAAY,gBACZ,KAAK,qBAAqB,YAAY,cAAc,CAAC;AAIvD,cAAI,qBAAqB,KAAK,qBAAqB,YAAY,aAAa;AAC5E,cAAI,kBAAgB,KAAK,iBAAiB,YAAY,eAAe,kBAAkB;AAEvF,cAAIG,YAAW,SAACF,MAAG;AACjB,gBAAI,CAAC,YAAYA,IAAG,GAAG;AACrB,0BAAYA,IAAG,IAAI;gBACjB,gBAAgB,iBAAeA,IAAG,KAAK;gBACvC,eAAe,gBAAcA,IAAG,KAAK;gBACrC,SAAS,YAAY;;;;AAK3B,mBAASA,QAAO,kBAAgB;AAC9B,YAAAE,UAASF,IAAG;;AAGd,mBAASA,QAAO,iBAAe;AAC7B,YAAAE,UAASF,IAAG;;;AAIhB,eAAO;;AAEX,aAAAD;IAAA,EAAC;;AAED,WAAS,mBAAmB,OAAuB,eAA+B,cAAgC;AAChH,QAAI,YAAY,CAAA;AAEhB,QAAI,OAAO;AACT,gBAAU,KAAK,KAAK;;AAGtB,QAAI,eAAe;AACjB,gBAAU,KAAK,aAAa;;AAG9B,QAAI,QAAQ;MACV,IAAI,gBAAgB,SAAS;;AAG/B,QAAI,cAAc;AAChB,MAAAI,UAAS,OAAO,YAAY;;AAG9B,WAAO;EACT;WC1KgB,YAAY,MAAkB,YAAwB,SAAsB,aAAyB;AACnH,WAAO;MACL,KAAK,KAAK,UAAS;MACnB,YAAY,QAAQ,eAAe,CAAC,oBAAoB,YAAY,aAAa,IAAI,CAAC;MACtF,SAAS,QAAQ,eAAe,CAAC,oBAAoB,YAAY,cAAc,IAAI,CAAC;MACpF,SAAS,QAAQ,cAAc,oBAAoB,YAAY,IAAI,CAAC;MACpE,QAAQ,QAAQ,UAAW,OAAO,UAAW,aAAc,OAAO,WAAW,QAAS,KAAK;MAC3F,UAAU,QAAQ,UAAW,OAAO,UAAW,aAAc,QAAQ,WAAW,MAAO,KAAK;;EAEhG;WAEgB,iBAAiB,MAAgB,OAAY;AAC3D,QAAI,aAAuB;MACzB;MACA,YAAU,QAAQ,KAAK,GAAG;;AAG5B,QAAI,KAAK,YAAY;AACnB,iBAAW,KAAK,iBAAiB;WAC5B;AACL,UAAI,KAAK,SAAS;AAChB,mBAAW,KAAK,cAAc;AAC9B,mBAAW,KAAK,MAAM,SAAS,OAAO,CAAC;;AAGzC,UAAI,KAAK,QAAQ;AACf,mBAAW,KAAK,aAAa;;AAG/B,UAAI,KAAK,UAAU;AACjB,mBAAW,KAAK,eAAe;;AAGjC,UAAI,KAAK,SAAS;AAChB,mBAAW,KAAK,cAAc;;;AAIlC,WAAO;EACT;AC/CA,MAAM,aAAa,gBAAgB,EAAE,MAAM,WAAW,OAAO,QAAQ,KAAK,UAAS,CAAE;AACrF,MAAM,cAAc,gBAAgB,EAAE,MAAM,OAAM,CAAE;WAEpC,kBACd,SACA,YACA,UACA,YAAiB;AADjB,QAAA,aAAA,QAAA;AAAA,iBAAA;IAAgB;AAChB,QAAA,eAAA,QAAA;AAAA,mBAAA;IAAiB;AAET,QAAA,UAAkC,QAAO,SAAhCC,WAAyB,QAAO,SAAvB,cAAgB,QAAO;AACjD,QAAI,UAAU,QAAQ,OAAO,YAAY,aAAa,SAAS,cAAc,UAAU;AAEvF,QAAIA,SAAQ,UAAU;AACpB,UAAI,YAAY,QAAQ,OAAO,UAAU;AAEzC,UAAM,oBAAoB,SAAC,IAAW;AACpC,YAAI,eACF,aAAa,QAAQA,SAAQ,kBAC3B,aAAa,SAASA,SAAQ,mBAAmB;AAErD,YAAI,OAAO,iBAAiB,YAAY;AACtC,uBAAa,KAAK,aAAa,QAAQ,OAAO,UAAU,GAAG,EAAE;eACxD;AACL,cAAI,OAAO,iBAAiB,UAAU;AACpC,uBAAW;;AAEb,sBAAY,OAAO,YAAY,QAAQ;;;AAI3C,aAAAC,UAAA,EACE,OAAO,mBAAmBD,SAAQ,aAAa,CAAC,SAAS,SAAS,GAAG,OAAO,GAC5E,gBAAgB,GAAE,GACd,aACA,qBAAqB,iBAAiB,IACtC,EAAE,SAAS,kBAAiB,CAAE;;AAKtC,WAAO,EAAE,cAAc,QAAO;EAChC;AC7CA,MAAI,wBAAwC;WAE5B,0BAAuB;AACrC,QAAI,0BAA0B,MAAM;AAClC,8BAAwB,4BAA2B;;AAErD,WAAO;EACT;AAEA,WAAS,8BAA2B;AAClC,QAAI,UAAU,SAAS,cAAc,KAAK;AAC1C,eAAW,SAAS;MAClB,UAAU;MACV,KAAK;MACL,MAAM;MACN,QAAQ;MACR,SAAS;MACT,UAAU;MACV,WAAW;KACZ;AACD,YAAQ,YAAY;AAEpB,aAAS,KAAK,YAAY,OAAO;AACjC,QAAI,UAAU,QAAQ;AACtB,QAAI,MAAM,QAAQ,sBAAqB,EAAG,OAAO,QAAQ,sBAAqB,EAAG;AAEjF,IAAAE,eAAc,OAAO;AACrB,WAAO;EACT;ACzBA,MAAI;WAEY,qBAAkB;AAChC,QAAI,CAAC,kBAAkB;AACrB,yBAAmB,uBAAsB;;AAG3C,WAAO;EACT;AAEA,WAAS,yBAAsB;AAC7B,QAAI,KAAK,SAAS,cAAc,KAAK;AACrC,OAAG,MAAM,WAAW;AACpB,OAAG,MAAM,WAAW;AACpB,OAAG,MAAM,MAAM;AACf,OAAG,MAAM,OAAO;AAChB,aAAS,KAAK,YAAY,EAAE;AAC5B,QAAI,MAAM,4BAA4B,EAAE;AACxC,aAAS,KAAK,YAAY,EAAE;AAC5B,WAAO;EACT;WAGgB,4BAA4B,IAAe;AACzD,WAAO;MACL,GAAG,GAAG,eAAe,GAAG;MACxB,GAAG,GAAG,cAAc,GAAG;;EAE3B;WCfgB,aAAa,IAAiB,YAAkB;AAAlB,QAAA,eAAA,QAAA;AAAA,mBAAA;IAAkB;AAC9D,QAAI,gBAAgB,OAAO,iBAAiB,EAAE;AAC9C,QAAI,aAAa,SAAS,cAAc,iBAAiB,EAAE,KAAK;AAChE,QAAI,cAAc,SAAS,cAAc,kBAAkB,EAAE,KAAK;AAClE,QAAI,YAAY,SAAS,cAAc,gBAAgB,EAAE,KAAK;AAC9D,QAAI,eAAe,SAAS,cAAc,mBAAmB,EAAE,KAAK;AACpE,QAAI,qBAAqB,4BAA4B,EAAE;AACvD,QAAI,qBAAqB,mBAAmB,IAAI,aAAa;AAC7D,QAAI,kBAAkB,mBAAmB,IAAI,YAAY;AAEzD,QAAI,MAAgB;MAClB;MACA;MACA;MACA;MACA;MACA,eAAe;MACf,gBAAgB;;AAGlB,QAAI,wBAAuB,KAAM,cAAc,cAAc,OAAO;AAClE,UAAI,gBAAgB;WACf;AACL,UAAI,iBAAiB;;AAGvB,QAAI,YAAY;AACd,UAAI,cAAc,SAAS,cAAc,aAAa,EAAE,KAAK;AAC7D,UAAI,eAAe,SAAS,cAAc,cAAc,EAAE,KAAK;AAC/D,UAAI,aAAa,SAAS,cAAc,YAAY,EAAE,KAAK;AAC3D,UAAI,gBAAgB,SAAS,cAAc,eAAe,EAAE,KAAK;;AAGnE,WAAO;EACT;WAEgB,iBAAiB,IAAI,iBAAyB,sBAA8B;AAAvD,QAAA,oBAAA,QAAA;AAAA,wBAAA;IAAuB;AAC1D,QAAI,YAAY,uBAAuB,GAAG,sBAAqB,IAAK,YAAY,EAAE;AAClF,QAAI,QAAQ,aAAa,IAAI,eAAe;AAC5C,QAAI,MAAM;MACR,MAAM,UAAU,OAAO,MAAM,aAAa,MAAM;MAChD,OAAO,UAAU,QAAQ,MAAM,cAAc,MAAM;MACnD,KAAK,UAAU,MAAM,MAAM;MAC3B,QAAQ,UAAU,SAAS,MAAM,eAAe,MAAM;;AAGxD,QAAI,iBAAiB;AACnB,UAAI,QAAQ,MAAM;AAClB,UAAI,SAAS,MAAM;AACnB,UAAI,OAAO,MAAM;AACjB,UAAI,UAAU,MAAM;;AAGtB,WAAO;EACT;WAEgB,YAAY,IAAE;AAC5B,QAAI,OAAO,GAAG,sBAAqB;AAEnC,WAAO;MACL,MAAM,KAAK,OAAO,OAAO;MACzB,KAAK,KAAK,MAAM,OAAO;MACvB,OAAO,KAAK,QAAQ,OAAO;MAC3B,QAAQ,KAAK,SAAS,OAAO;;EAEjC;WAEgB,yBAAyB,IAAe;AACtD,QAAIC,mBAAkBC,oBAAmB,EAAE;AAC3C,QAAI,OAAa,GAAG,sBAAqB;AAEzC,aAA2B,KAAA,GAAA,oBAAAD,kBAAA,KAAA,kBAAA,QAAA,MAAiB;AAAvC,UAAI,iBAAc,kBAAA,EAAA;AACrB,UAAI,eAAe,eAAe,MAAM,eAAe,sBAAqB,CAAE;AAC9E,UAAI,cAAc;AAChB,eAAO;aACF;AACL,eAAO;;;AAIX,WAAO;EACT;WAcgBE,oBAAmB,IAAe;AAChD,QAAI,UAAyB,CAAA;AAE7B,WAAO,cAAc,aAAa;AAChC,UAAI,gBAAgB,OAAO,iBAAiB,EAAE;AAE9C,UAAI,cAAc,aAAa,SAAS;AACtC;;AAGF,UAAK,gBAAiB,KAAK,cAAc,WAAW,cAAc,YAAY,cAAc,SAAS,GAAG;AACtG,gBAAQ,KAAK,EAAE;;AAGjB,WAAK,GAAG;;AAGV,WAAO;EACT;WC/HgB,YAAY,MAAMC,UAAS,SAAQ;AAGjD,QAAI,aAAa;AACjB,QAAI,iBAAiB,WAAA;AACnB,UAAI,CAAC,YAAY;AACf,qBAAa;AACb,QAAAA,SAAQ,MAAM,MAAM,SAAS;;;AAGjC,QAAI,iBAAiB,WAAA;AACnB,UAAI,CAAC,YAAY;AACf,qBAAa;AACb,YAAI,SAAS;AACX,kBAAQ,MAAM,MAAM,SAAS;;;;AAKnC,QAAI,MAAM,KAAK,gBAAgB,cAAc;AAC7C,QAAI,OAAO,OAAO,IAAI,SAAS,YAAY;AACzC,UAAI,KAAK,gBAAgB,cAAc;;EAE3C;;;;ACvBA,eAAAC,WAAA;AACU,aAAA,WAAoE,CAAA;AAIpE,aAAA,cAAmB;;AAE3B,MAAAA,SAAA,UAAA,iBAAA,SAAe,aAAW;AACxB,aAAK,cAAc;;AAGrB,MAAAA,SAAA,UAAA,aAAA,SAAWC,UAA8B;AACvC,aAAK,UAAUA;;AAGjB,MAAAD,SAAA,UAAA,KAAA,SAAoC,MAAY,SAA2B;AACzE,kBAAU,KAAK,UAAU,MAAM,OAAO;;AAGxC,MAAAA,SAAA,UAAA,MAAA,SAAqC,MAAY,SAA4B;AAC3E,uBAAe,KAAK,UAAU,MAAM,OAAO;;AAG7C,MAAAA,SAAA,UAAA,UAAA,SAAyC,MAAU;AAAE,YAAA,OAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAuC;AAAvC,eAAA,KAAA,CAAA,IAAA,UAAA,EAAA;;AACnD,YAAI,mBAAmB,KAAK,SAAS,IAAI,KAAK,CAAA;AAC9C,YAAI,gBAAgB,KAAK,WAAW,KAAK,QAAQ,IAAI;AACrD,YAAIE,YAAW,CAAA,EAAG,OAAO,iBAAiB,CAAA,GAAI,gBAAgB;AAE9D,iBAAoB,KAAA,GAAA,aAAAA,WAAA,KAAA,WAAA,QAAA,MAAU;AAAzB,cAAI,UAAO,WAAA,EAAA;AACd,kBAAQ,MAAM,KAAK,aAAa,IAAI;;;AAIxC,MAAAF,SAAA,UAAA,cAAA,SAAY,MAAwB;AAClC,eAAO,QACJ,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,EAAE,UAC3C,KAAK,WAAW,KAAK,QAAQ,IAAI,CAAE;;AAG1C,aAAAA;IAAA,EAAC;;AAED,WAAS,UAAUG,OAAM,MAAM,SAAO;AACpC,KAACA,MAAK,IAAI,MAAMA,MAAK,IAAI,IAAI,CAAA,IAC1B,KAAK,OAAO;EACjB;AAEA,WAAS,eAAeA,OAAM,MAAM,SAAQ;AAC1C,QAAI,SAAS;AACX,UAAIA,MAAK,IAAI,GAAG;AACd,QAAAA,MAAK,IAAI,IAAIA,MAAK,IAAI,EAAE,OAAO,SAAC,MAAI;AAAK,iBAAA,SAAS;QAAO,CAAA;;WAEtD;AACL,aAAOA,MAAK,IAAI;;EAEpB;;;;AC1CE,eAAAC,eAAY,UAAuB,KAAoB,cAAuB,YAAmB;AAC/F,aAAK,MAAM;AAEX,YAAI,mBAAmB,KAAK,mBAAmB,SAAS,sBAAqB;AAE7E,YAAI,cAAc;AAChB,eAAK,mBAAmB,iBAAiB,IAAI;;AAG/C,YAAI,YAAY;AACd,eAAK,iBAAiB,iBAAiB,GAAG;;;AAK9C,MAAAA,eAAA,UAAA,qBAAA,SAAmB,kBAAwB;AACzC,YAAI,QAAQ,CAAA;AACZ,YAAI,SAAS,CAAA;AAEb,iBAAe,KAAA,GAAA,KAAA,KAAK,KAAL,KAAA,GAAA,QAAA,MAAU;AAApB,cAAI,KAAE,GAAA,EAAA;AACT,cAAI,OAAO,GAAG,sBAAqB;AACnC,gBAAM,KAAK,KAAK,OAAO,gBAAgB;AACvC,iBAAO,KAAK,KAAK,QAAQ,gBAAgB;;AAG3C,aAAK,QAAQ;AACb,aAAK,SAAS;;AAIhB,MAAAA,eAAA,UAAA,mBAAA,SAAiB,iBAAuB;AACtC,YAAI,OAAO,CAAA;AACX,YAAI,UAAU,CAAA;AAEd,iBAAe,KAAA,GAAA,KAAA,KAAK,KAAL,KAAA,GAAA,QAAA,MAAU;AAApB,cAAI,KAAE,GAAA,EAAA;AACT,cAAI,OAAO,GAAG,sBAAqB;AACnC,eAAK,KAAK,KAAK,MAAM,eAAe;AACpC,kBAAQ,KAAK,KAAK,SAAS,eAAe;;AAG5C,aAAK,OAAO;AACZ,aAAK,UAAU;;AAKjB,MAAAA,eAAA,UAAA,cAAA,SAAY,cAAoB;AAC1B,YAAA,KAAoB,MAAlB,QAAK,GAAA,OAAE,SAAM,GAAA;AACnB,YAAI,MAAM,MAAM;AAChB,YAAIC;AAEJ,aAAKA,KAAI,GAAGA,KAAI,KAAKA,MAAK,GAAG;AAC3B,cAAI,gBAAgB,MAAMA,EAAC,KAAK,eAAe,OAAOA,EAAC,GAAG;AACxD,mBAAOA;;;AAIX,eAAO;;AAKT,MAAAD,eAAA,UAAA,aAAA,SAAW,aAAmB;AACxB,YAAA,KAAoB,MAAlB,OAAI,GAAA,MAAE,UAAO,GAAA;AACnB,YAAI,MAAM,KAAK;AACf,YAAIC;AAEJ,aAAKA,KAAI,GAAGA,KAAI,KAAKA,MAAK,GAAG;AAC3B,cAAI,eAAe,KAAKA,EAAC,KAAK,cAAc,QAAQA,EAAC,GAAG;AACtD,mBAAOA;;;AAIX,eAAO;;AAIT,MAAAD,eAAA,UAAA,WAAA,SAAS,WAAiB;AACxB,eAAO,KAAK,OAAO,SAAS,IAAI,KAAK,MAAM,SAAS;;AAItD,MAAAA,eAAA,UAAA,YAAA,SAAU,UAAgB;AACxB,eAAO,KAAK,QAAQ,QAAQ,IAAI,KAAK,KAAK,QAAQ;;AAEtD,aAAAA;IAAA,EAAC;;;;;AC9FD,eAAAE,oBAAA;;AAUE,MAAAA,kBAAA,UAAA,kBAAA,WAAA;AACE,eAAO,KAAK,gBAAe,IAAK,KAAK,gBAAe;;AAGtD,MAAAA,kBAAA,UAAA,mBAAA,WAAA;AACE,eAAO,KAAK,eAAc,IAAK,KAAK,eAAc;;AAGpD,MAAAA,kBAAA,UAAA,sBAAA,WAAA;AACE,eAAO,KAAK,gBAAe,IAAK;;AAGlC,MAAAA,kBAAA,UAAA,wBAAA,WAAA;AACE,eAAO,KAAK,iBAAgB,IAAK;;AAGnC,MAAAA,kBAAA,UAAA,cAAA,WAAA;AACE,eAAO,KAAK,aAAY,IAAK;;AAG/B,MAAAA,kBAAA,UAAA,gBAAA,WAAA;AACE,eAAO,KAAK,aAAY,IAAK,KAAK,gBAAe;;AAGnD,MAAAA,kBAAA,UAAA,gBAAA,WAAA;AACE,eAAO,KAAK,cAAa,IAAK;;AAGhC,MAAAA,kBAAA,UAAA,iBAAA,WAAA;AACE,eAAO,KAAK,cAAa,IAAK,KAAK,iBAAgB;;AAEvD,aAAAA;IAAA,EAAC;;;;;AAE4C,gBAAAC,0BAAA,MAAA;AAG3C,eAAAA,yBAAY,IAAe;AAA3B,YAAA,QACE,OAAA,KAAA,IAAA,KAAO;AACP,cAAK,KAAK;;;AAGZ,MAAAA,yBAAA,UAAA,eAAA,WAAA;AACE,eAAO,KAAK,GAAG;;AAGjB,MAAAA,yBAAA,UAAA,gBAAA,WAAA;AACE,eAAO,KAAK,GAAG;;AAGjB,MAAAA,yBAAA,UAAA,eAAA,SAAaC,MAAW;AACtB,aAAK,GAAG,YAAYA;;AAGtB,MAAAD,yBAAA,UAAA,gBAAA,SAAcE,OAAY;AACxB,aAAK,GAAG,aAAaA;;AAGvB,MAAAF,yBAAA,UAAA,iBAAA,WAAA;AACE,eAAO,KAAK,GAAG;;AAGjB,MAAAA,yBAAA,UAAA,kBAAA,WAAA;AACE,eAAO,KAAK,GAAG;;AAGjB,MAAAA,yBAAA,UAAA,kBAAA,WAAA;AACE,eAAO,KAAK,GAAG;;AAGjB,MAAAA,yBAAA,UAAA,iBAAA,WAAA;AACE,eAAO,KAAK,GAAG;;AAEnB,aAAAA;IAAA,EAvC6C,gBAAgB;;;;;AAyCjB,gBAAAG,yBAAA,MAAA;AAA5C,eAAAA,0BAAA;;;AACE,MAAAA,wBAAA,UAAA,eAAA,WAAA;AACE,eAAO,OAAO;;AAGhB,MAAAA,wBAAA,UAAA,gBAAA,WAAA;AACE,eAAO,OAAO;;AAGhB,MAAAA,wBAAA,UAAA,eAAA,SAAaC,IAAS;AACpB,eAAO,OAAO,OAAO,aAAaA,EAAC;;AAGrC,MAAAD,wBAAA,UAAA,gBAAA,SAAcC,IAAS;AACrB,eAAO,OAAOA,IAAG,OAAO,WAAW;;AAGrC,MAAAD,wBAAA,UAAA,iBAAA,WAAA;AACE,eAAO,SAAS,gBAAgB;;AAGlC,MAAAA,wBAAA,UAAA,kBAAA,WAAA;AACE,eAAO,SAAS,gBAAgB;;AAGlC,MAAAA,wBAAA,UAAA,kBAAA,WAAA;AACE,eAAO,SAAS,gBAAgB;;AAGlC,MAAAA,wBAAA,UAAA,iBAAA,WAAA;AACE,eAAO,SAAS,gBAAgB;;AAEpC,aAAAA;IAAA,EAhC4C,gBAAgB;;;;;AC/E1D,eAAAE,OAAY,iBAAuC;AACjD,YAAI,KAAK,oBAAoB;AAC3B,eAAK,gBACH,gBAAgB,KAAK,kBAAkB,CAAC;;;AAK9C,MAAAA,OAAA,UAAA,kBAAA,SAAgB,kBAAgB;AAC9B,YAAI;AACJ,YAAI;AAEJ,YAAI,OAAO,qBAAqB,YAAY,kBAAkB;AAC5D,4BAAeC,UAAA,CAAA,GAAQ,KAAK,WAAW;AAEvC,eAAK,cAAc,kBAAkB;AACnC,4BAAgB,UAAU,IAAI,KAAK,wBACjC,iBAAiB,UAAU,CAAC;;AAIhC,eAAK,cAAc;mBACV,qBAAqB,OAAO;AACrC,eAAK,cAAc,CAAA;;;AAIvB,MAAAD,OAAA,UAAA,0BAAA,SAAwB,WAAS;AAC/B,YAAI,SAAS,KAAK;AAElB,YAAI,UAAU,UAAU,QAAQ,MAAM,MAAM,GAAG;AAC7C,sBAAY,SAAS;;AAGvB,eAAO;;AAGT,MAAAA,OAAA,UAAA,WAAA,SAASE,MAAG;AACV,eAAO,KAAK,QAAQA,IAAG,KAAK;;AAG9B,MAAAF,OAAA,UAAA,eAAA,SAAa,YAAY,OAAe;AACtC,YAAI;AAEJ,YAAI,SAAS,KAAK,gBAAgB;AAChC,sBAAY,KAAK,eAAe,UAAU,KAAK,KAAK,YAAY,UAAU;eACrE;AACL,sBAAY,KAAK,YAAY,UAAU;;AAGzC,YAAI,WAAW;AACb,iBAAU,KAAK,gBAAa,MAAI;;AAGlC,eAAO;;AAGT,MAAAA,OAAA,UAAA,2BAAA,SAAyB,mBAAiB;AACxC,YAAI;AAEJ,YAAI,KAAK,gCAAgC;AACvC,sBAAY,kBAAkB,KAAK,8BAA8B;AAEjE,cAAI,WAAW;AACb,mBAAU,KAAK,gBAAa,MAAI,KAAK,wBAAwB,SAAS;;;AAI1E,eAAO;;AAEX,aAAAA;IAAA,EAAC;;AAED,QAAM,UAAU,UAAU,CAAA;AAC1B,QAAM,UAAU,cAAc,CAAA;AAC9B,QAAM,UAAU,gBAAgB;AAChC,QAAM,UAAU,qBAAqB;;;;ACxEnC,eAAAG,iBACU,UACA,SACA,YACA,iBAAwB;AAJlC,YAAA,QAAA;AACU,aAAA,WAAA;AACA,aAAA,UAAA;AACA,aAAA,aAAA;AACA,aAAA,kBAAA;AAwBF,aAAA,sBAAsB,SAACC,UAAsB;AACnD,gBAAK,gBAAgBH,UAAS,CAAA,GAAI,MAAK,iBAAiB,CAAA,GAAIG,QAAO;AACnE,gBAAK,MAAK;;AAxBV,gBAAQ,GAAG,kBAAkB,KAAK,mBAAmB;AACrD,aAAK,kBAAiB;;AAGxB,MAAAD,iBAAA,UAAA,SAAA,WAAA;AACE,aAAK,QAAQ,IAAI,kBAAkB,KAAK,mBAAmB;;AAG7D,MAAAA,iBAAA,UAAA,SAAA,SAAO,YAAmB;AACxB,YAAI,cAAc,KAAK,iBAAiB;AACtC,eAAK,kBAAiB;eACjB;AACL,eAAK,MAAK;;;AAIN,MAAAA,iBAAA,UAAA,oBAAR,WAAA;AACE,aAAK,oBAAoB;UACvB,MAAM,KAAK;SACZ;;AAQK,MAAAA,iBAAA,UAAA,QAAR,WAAA;AACE,YAAI,KAAK,iBAAiB,KAAK,SAAS,KAAK,aAAa,GAAG;AAC3D,eAAK,gBAAgB;;;AAG3B,aAAAA;IAAA,EAAC;;MCnCY,kBAAgCE,eAA2B,CAAA,CAAS;WAqBjE,iBACd,UACA,SACA,aACA,sBACA,SACA,OACA,aACAC,WACA,gBACA,SACA,aACA,8BACA,gCAAuE;AAEvE,WAAO;MACL;MACA,SAAS;MACT;MACA;MACA,UAAQA;MACR;MACA;MACA;MACA;MACA;MACA;MACA,OAAO,YAAY,cAAc;MACjC,kBAAA,SAAiB,SAAsB;AACrC,gBAAQ,GAAG,WAAW,OAAO;;MAE/B,qBAAA,SAAoB,SAAsB;AACxC,gBAAQ,IAAI,WAAW,OAAO;;MAEhC,uBAAA,SAAsB,UAA8B;AAClD,eAAO,IAAI,gBACT,UACA,SACA,eAAe,YAAY,UAAU,GACrC,YAAY,eAAe;;MAG/B;MACA;;EAEJ;AC5EA,MAAA;;IAAA,SAAA,QAAA;AAAgF,gBAAAC,gBAAA,MAAA;AAAhF,eAAAA,iBAAA;;;AAWE,MAAAA,eAAA,UAAA,wBAAA,SAAsB,WAAkB,WAAgB;AACtD,YAAI,KAAK,OAAO;AAEd,kBAAQ,IAAI,gBAAgB,WAAW,KAAK,KAAK,GAAG,gBAAgB,WAAW,KAAK,KAAK,CAAC;;AAG5F,eAAO,CAAC,YAAY,KAAK,OAAO,WAAW,KAAK,YAAY,KAC1D,CAAC,YAAY,KAAK,OAAO,WAAW,KAAK,aAAa;;AAI1D,MAAAA,eAAA,UAAA,eAAA,SAAa,UAAwB;AACnC,YAAI,CAAC,YAAY,KAAK,OAAKN,UAAAA,UAAA,CAAA,GAAO,KAAK,KAAK,GAAK,QAAQ,GAAI,KAAK,aAAa,GAAG;AAChF,eAAK,SAAS,QAAQ;;;AAvBnB,MAAAM,eAAA,mBAAmB;AACnB,MAAAA,eAAA,mBAAmB;AACnB,MAAAA,eAAA,cAAmB;AAwB5B,aAAAA;MA3BgF,SAAS;;AA6BzF,gBAAc,UAAU,eAAe,CAAA;AACvC,gBAAc,UAAU,gBAAgB,CAAA;;;;AAEwC,gBAAAC,gBAAA,MAAA;AAAhF,eAAAA,iBAAA;;;AACS,MAAAA,eAAA,cAAmB;AAG5B,aAAAA;MAJgF,aAAa;;AAM7F,WAAS,iBAA6D,cAAY;AAChF,QAAIjB,QAAO,OAAO,OAAO,KAAK,UAAU,YAAY;AACpD,IAAAU,UAASV,OAAM,YAAY;AAC3B,SAAK,UAAU,eAAeA;EAChC;AAEA,WAAS,iBAA8D,eAAa;AAClF,QAAIA,QAAO,OAAO,OAAO,KAAK,UAAU,aAAa;AACrD,IAAAU,UAASV,OAAM,aAAa;AAC5B,SAAK,UAAU,gBAAgBA;EACjC;WAGgB,OAAgB,KAA0B,SAAgB;AACxE,QAAI,OAAO,QAAQ,YAAY;AAC7B,UAAI,OAAO;eACF,KAAK;AAEb,UAAY,UAAU;;EAE3B;;;;AC/BgF,gBAAAkB,gBAAA,MAAA;AAAhF,eAAAA,iBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,MAAM,KAAI;;;AAKV,MAAAA,eAAA,UAAA,cAAA,WAAA;;AAGA,MAAAA,eAAA,UAAA,WAAA,SAAS,cAAsB,aAAqB,SAAiB,UAAgB;AACnF,eAAO;;AAMT,MAAAA,eAAA,UAAA,mBAAA,SAAiB,IAAe;AAC9B,eAAO,CAAE,KAAK,MAAc;QAC1B,CAAE,KAAK,MAAc;QACrB,CAAC,eAAe,IAAI,kBAAkB;;AAG1C,MAAAA,eAAA,UAAA,oBAAA,SAAkB,IAAe;AAC/B,eAAO,CAAC,eAAe,IAAI,6BAA6B,KACtD,CAAC,eAAe,IAAI,eAAe;QACnC,CAAC,eAAe,IAAI,iBAAiB;QACrC,CAAC,eAAe,IAAI,aAAa;;AAEvC,aAAAA;IAAA,EA5BgFD,cAAa;;WC7B7E,aAAa,OAAqB;AAChD,WAAO;MACL,IAAI,KAAI;MACR,MAAM,MAAM,QAAQ,CAAA;MACpB,UAAU,MAAM,YAAY,CAAA;MAC5B,gBAAgB,MAAM,kBAAkB,CAAA;MACxC,aAAa,CAAA,EAAG,OAAO,MAAM,eAAe,CAAA,CAAE;MAC9C,eAAe,MAAM,iBAAiB,CAAA;MACtC,sBAAsB,MAAM,wBAAwB,CAAA;MACpD,qBAAqB,MAAM,uBAAuB,CAAA;MAClD,yBAAyB,MAAM,2BAA2B,CAAA;MAC1D,4BAA4B,MAAM,8BAA8B,CAAA;MAChE,0BAA0B,MAAM,4BAA4B,CAAA;MAC5D,2BAA2B,MAAM,6BAA6B,CAAA;MAC9D,qBAAqB,MAAM,uBAAuB,CAAA;MAClD,oBAAoB,MAAM,sBAAsB,CAAA;MAChD,OAAO,MAAM,SAAS,CAAA;MACtB,uBAAuB,MAAM,yBAAyB,CAAA;MACtD,cAAc,MAAM,gBAAgB;MACpC,uBAAuB,MAAM,yBAAyB,CAAA;MACtD,sBAAsB,MAAM,wBAAwB,CAAA;MACpD,uBAAuB,MAAM,yBAAyB,CAAA;MACtD,uBAAuB,MAAM,yBAAyB,CAAA;MACtD,sBAAsB,MAAM,wBAAwB,CAAA;MACpD,cAAc,MAAM,gBAAgB,CAAA;MACpC,iBAAiB,MAAM,mBAAmB,CAAA;MAC1C,cAAc,MAAM;MACpB,gBAAgB,MAAM,kBAAkB,CAAA;MACxC,oBAAoB,MAAM;MAC1B,aAAa,MAAM,eAAe;MAClC,qBAAqB,MAAM;MAC3B,sBAAsB,MAAM,wBAAwB,CAAA;MACpD,gBAAgB,MAAM,kBAAkB;MACxC,qBAAqB,MAAM,uBAAuB,CAAA;MAClD,kBAAkB,MAAM,oBAAoB,CAAA;MAC5C,gBAAgB,MAAM,kBAAkB,CAAA;MACxC,iBAAiB,MAAM,mBAAmB,CAAA;;EAE9C;AAEA,WAAS,iBAAiB,YAAyB,YAAuB;AACxE,QAAI,UAA2C,CAAA;AAC/C,QAAIE,SAAqB;MACvB,UAAU,CAAA;MACV,gBAAgB,CAAA;MAChB,aAAa,CAAA;MACb,eAAe,CAAA;MACf,sBAAsB,CAAA;MACtB,qBAAqB,CAAA;MACrB,yBAAyB,CAAA;MACzB,4BAA4B,CAAA;MAC5B,0BAA0B,CAAA;MAC1B,2BAA2B,CAAA;MAC3B,qBAAqB,CAAA;MACrB,oBAAoB,CAAA;MACpB,OAAO,CAAA;MACP,uBAAuB,CAAA;MACvB,cAAc;MACd,uBAAuB,CAAA;MACvB,sBAAsB,CAAA;MACtB,uBAAuB,CAAA;MACvB,uBAAuB,CAAA;MACvB,sBAAsB,CAAA;MACtB,cAAc,CAAA;MACd,iBAAiB,CAAA;MACjB,cAAc;MACd,gBAAgB,CAAA;MAChB,oBAAoB;MACpB,aAAa;MACb,qBAAqB;MACrB,sBAAsB,CAAA;MACtB,gBAAgB;MAChB,qBAAqB,CAAA;MACrB,kBAAkB,CAAA;MAClB,gBAAgB,CAAA;MAChB,iBAAiB,CAAA;;AAGnB,aAAS,QAAQ,MAAiB;AAChC,eAAgB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAjB,YAAI,MAAG,OAAA,EAAA;AACV,YAAI,CAAC,QAAQ,IAAI,EAAE,GAAG;AACpB,kBAAQ,IAAI,EAAE,IAAI;AAClB,kBAAQ,IAAI,IAAI;AAChB,UAAAA,SAAQ,aAAaA,QAAO,GAAG;;;;AAKrC,QAAI,YAAY;AACd,cAAQ,UAAU;;AAGpB,YAAQ,UAAU;AAElB,WAAOA;EACT;WAEgB,wBAAqB;AACnC,QAAI,sBAAmC,CAAA;AACvC,QAAI,oBAAiC,CAAA;AACrC,QAAI;AAEJ,WAAO,SAAC,cAA2B,YAAuB;AACxD,UAAI,CAAC,gBAAgB,CAAC,cAAc,cAAc,mBAAmB,KAAK,CAAC,cAAc,YAAY,iBAAiB,GAAG;AACvH,uBAAe,iBAAiB,cAAc,UAAU;;AAE1D,4BAAsB;AACtB,0BAAoB;AACpB,aAAO;;EAEX;AAEA,WAAS,aAAa,QAAqB,QAAmB;AAC5D,WAAO;MACL,UAAU,OAAO,SAAS,OAAO,OAAO,QAAQ;MAChD,gBAAgB,OAAO,eAAe,OAAO,OAAO,cAAc;MAClE,aAAa,OAAO,YAAY,OAAO,OAAO,WAAW;MACzD,eAAaT,UAAAA,UAAA,CAAA,GAAO,OAAO,aAAa,GAAK,OAAO,aAAa;MACjE,sBAAsB,OAAO,qBAAqB,OAAO,OAAO,oBAAoB;MACpF,qBAAmBA,UAAAA,UAAA,CAAA,GAAO,OAAO,mBAAmB,GAAK,OAAO,mBAAmB;MACnF,yBAAyB,OAAO,wBAAwB,OAAO,OAAO,uBAAuB;MAC7F,4BAA4B,OAAO,2BAA2B,OAAO,OAAO,0BAA0B;MACtG,0BAA0B,OAAO,yBAAyB,OAAO,OAAO,wBAAwB;MAChG,2BAA2B,OAAO,0BAA0B,OAAO,OAAO,yBAAyB;MACnG,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,mBAAmB;MACjF,oBAAoB,OAAO,mBAAmB,OAAO,OAAO,kBAAkB;MAC9E,OAAKA,UAAAA,UAAA,CAAA,GAAO,OAAO,KAAK,GAAK,OAAO,KAAK;MACzC,uBAAuB,OAAO,sBAAsB,OAAO,OAAO,qBAAqB;MACvF,cAAc,OAAO,gBAAgB,OAAO;MAC5C,uBAAuB,OAAO,sBAAsB,OAAO,OAAO,qBAAqB;MACvF,sBAAsB,OAAO,qBAAqB,OAAO,OAAO,oBAAoB;MACpF,uBAAuB,OAAO,sBAAsB,OAAO,OAAO,qBAAqB;MACvF,sBAAsB,OAAO,qBAAqB,OAAO,OAAO,oBAAoB;MACpF,uBAAuB,OAAO,sBAAsB,OAAO,OAAO,qBAAqB;MACvF,cAAYA,UAAAA,UAAA,CAAA,GAAO,OAAO,YAAY,GAAK,OAAO,YAAY;MAC9D,iBAAiB,OAAO,gBAAgB,OAAO,OAAO,eAAe;MACrE,cAAc,OAAO,gBAAgB,OAAO;MAC5C,gBAAgB,OAAO,eAAe,OAAO,OAAO,cAAc;MAClE,oBAAoB,OAAO,sBAAsB,OAAO;MACxD,aAAa,OAAO,eAAe,OAAO;MAC1C,qBAAqB,OAAO,uBAAuB,OAAO;MAC1D,sBAAoBA,UAAAA,UAAA,CAAA,GAAO,OAAO,oBAAoB,GAAK,OAAO,oBAAoB;MACtF,gBAAgB,OAAO,kBAAkB,OAAO;MAChD,qBAAmBA,UAAAA,UAAA,CAAA,GAAO,OAAO,mBAAmB,GAAK,OAAO,mBAAmB;MACnF,kBAAgBA,UAAAA,UAAA,CAAA,GAAO,OAAO,gBAAgB,GAAK,OAAO,gBAAgB;MAC1E,gBAAcA,UAAAA,UAAA,CAAA,GAAO,OAAO,cAAc,GAAK,OAAO,cAAc;MACpE,iBAAeA,UAAAA,UAAA,CAAA,GAAO,OAAO,eAAe,GAAK,OAAO,eAAe;;EAE3E;ACxJA,MAAA;;IAAA,SAAA,QAAA;AAAmC,gBAAAU,gBAAA,MAAA;AAAnC,eAAAA,iBAAA;;;AACA,aAAAA;IAAA,EADmC,KAAK;;AAGxC,gBAAc,UAAU,UAAU;IAChC,MAAM;IACN,iBAAiB;IACjB,aAAa;IACb,QAAQ;IACR,cAAc;;AAGhB,gBAAc,UAAU,gBAAgB;AACxC,gBAAc,UAAU,cAAc;IACpC,OAAO;IACP,MAAM;IACN,MAAM;IACN,UAAU;IACV,UAAU;;AAEZ,gBAAc,UAAU,iBAAiB;IACvC,MAAM;IACN,MAAM;IACN,UAAU;IACV,UAAU;;AAGZ,gBAAc,UAAU,qBAAqB;AAC7C,gBAAc,UAAU,iCAAiC;AACzD,gBAAc,UAAU,qBAAqB;WCd7B,gBAAgB,gBAAgC,iBAA+B;AAC7F,QAAIpB,QAAoB,CAAA;AACxB,QAAI;AAEJ,SAAK,YAAY,gBAAgB;AAC/B,oBAAc,UAAUA,OAAM,gBAAgB,eAAe;;AAG/D,SAAK,YAAY,iBAAiB;AAChC,oBAAc,UAAUA,OAAM,gBAAgB,eAAe;;AAG/D,WAAOA;EACT;AAEA,WAAS,cACP,UACAA,OACA,gBACA,iBAA+B;AAE/B,QAAIA,MAAK,QAAQ,GAAG;AAClB,aAAOA,MAAK,QAAQ;;AAGtB,QAAI,UAAU,aAAa,UAAUA,OAAM,gBAAgB,eAAe;AAE1E,QAAI,SAAS;AACX,MAAAA,MAAK,QAAQ,IAAI;;AAGnB,WAAO;EACT;AAEA,WAAS,aACP,UACAA,OACA,gBACA,iBAA+B;AAE/B,QAAI,gBAAgB,eAAe,QAAQ;AAC3C,QAAI,iBAAiB,gBAAgB,QAAQ;AAE7C,QAAI,YAAY,SAACqB,OAAI;AAAK,aACvB,iBAAiB,cAAcA,KAAI,MAAM,OAAQ,cAAcA,KAAI,IAChE,kBAAkB,eAAeA,KAAI,MAAM,OAAQ,eAAeA,KAAI,IAAI;IAAK;AAGrF,QAAI,eAAe,UAAU,WAAW;AACxC,QAAI,YAAY,UAAU,WAAW;AACrC,QAAI,WAA2B;AAE/B,QAAI,WAAW;AACb,UAAI,cAAc,UAAU;AAC1B,cAAM,IAAI,MAAM,sDAAuD;;AAGzE,iBAAW,cAAc,WAAWrB,OAAM,gBAAgB,eAAe;;AAG3E,QAAI,CAAC,gBAAgB,UAAU;AAC7B,qBAAe,SAAS;;AAG1B,QAAI,CAAC,cAAc;AACjB,aAAO;;AAGT,WAAO;MACL,MAAM;MACN,WAAW;MACX,UAAQU,UAAAA,UAAA,CAAA,GACF,WAAW,SAAS,WAAW,CAAA,CAAE,GACjC,gBAAgB,cAAc,aAAa,CAAA,CAAE;MAEnD,WAASA,UAAAA,UAAA,CAAA,GACH,WAAW,SAAS,YAAY,CAAA,CAAE,GAClC,iBAAiB,eAAe,aAAa,CAAA,CAAE;;EAGzD;;;;AC3D2C,gBAAAY,aAAA,MAAA;AAA3C,eAAAA,cAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,YAAY,UAAS;AAsB7B,cAAA,eAAe,SAAC,IAAsB;AACpC,iBAAO,MAAK,WAAW,EAAE;AAEzB,cAAI,MAAK,MAAM,OAAO;AACpB,mBAAO,MAAK,MAAM,OAAO,EAAE;;;;;AAxB/B,MAAAA,YAAA,UAAA,SAAA,WAAA;AAAA,YAAA,QAAA;AACQ,YAAA,QAAU,KAAI;AACd,YAAA,YAAc,MAAK;AAEzB,eACEC,eAAC,WAAS,EAAC,WAAsB,UAAU,MAAM,UAAU,aAAa,MAAM,aAAa,OAAO,KAAK,aAAY,GAChH,SAAC,WAAS;AAAK,iBACdA,eAAC,aAAW,EAAC,WAAsB,SAAS,MAAM,SAAS,gBAAgB,MAAM,gBAAgB,aAAa,MAAK,UAAS,GACzH,SAAC,YAAY,cAAY;AAAK,mBAAA,MAAM,SACnC,WACA,oBAAoB,MAAM,YAAY,SAAS,GAC/C,YACA,YAAY;UACb,CAAA;QACW,CACf;;AAYT,aAAAD;IAAA,EA9B2CL,cAAa;;MA6C3C,6BAA8CH,eAAsB,CAAC;WAiBlE,YAAuB,OAAkC;AACvE,WACES,eAAC,2BAA2B,UAAQ,MACjC,SAAC,UAAQ;AAAK,aACbA,eAAC,kBAAgBb,UAAA,EAAC,SAAkB,GAAM,KAAK,CAAA;IAAI,CACpD;EAGP;AAEA,MAAA;;IAAA,SAAA,QAAA;AAA0C,gBAAAc,mBAAA,MAAA;AAA1C,eAAAA,oBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,aAAa,UAAS;;;AAS9B,MAAAA,kBAAA,UAAA,SAAA,WAAA;AACE,eAAO,KAAK,MAAM,SAAS,KAAK,YAAY,KAAK,mBAAkB,CAAE;;AAGvE,MAAAA,kBAAA,UAAA,oBAAA,WAAA;AACE,aAAK,oBAAmB;;AAG1B,MAAAA,kBAAA,UAAA,qBAAA,WAAA;AACE,aAAK,oBAAmB;;AAG1B,MAAAA,kBAAA,UAAA,uBAAA,WAAA;AACE,YAAI,KAAK,qBAAqB,KAAK,kBAAkB,SAAS;AAC5D,eAAK,kBAAkB,QAAO;;;AAI1B,MAAAA,kBAAA,UAAA,qBAAR,WAAA;AACQ,YAAA,oBAAsB,KAAI;AAChC,YAAI,eAAe,KAAK,gBAAe;AACvC,YAAI,OAAO,KAAK,eAAe,YAAY;AAG3C,YAAI,CAAC,qBAAqB,kBAAkB,eAAe,KAAK,YAAY;AAE1E,cAAI,mBAAmB;AACrB,gBAAI,kBAAkB,SAAS;AAC7B,gCAAkB,QAAO;;AAE3B,gCAAoB,KAAK,oBAAoB;;AAG/C,cAAI,KAAK,YAAY;AACnB,gCAAoB,KAAK,oBAAiBd,UAAA,EACxC,YAAY,KAAK,YACjB,YAAY,aAAa,KAAK,UAAU,EAAC,GACtC,KAAK,oBAAmB,CAAE;;mBAIxB,mBAAmB;AAC5B,4BAAkB,aAAa,aAAa,KAAK,UAAU;;AAG7D,eAAO,oBACH,CAAA,IACA;;AAGE,MAAAc,kBAAA,UAAA,kBAAR,WAAA;AACQ,YAAA,QAAU,KAAI;AACpB,YAAI,eAAe,iBAAiB,MAAM,SAAS,MAAM,SAAS;AAElE,YAAI,iBAAiB,QAAW;AAC9B,yBAAe,iBAAiB,MAAM,gBAAgB,MAAM,SAAS;;AAGvE,eAAO,gBAAgB,OAAO,OAAO;;AAG/B,MAAAA,kBAAA,UAAA,iBAAR,SAAuB,cAAiB;AAChC,YAAA,sBAAwB,KAAK,QAAQ,YAAW;AACtD,YAAI,aAAa;AACjB,YAAI,sBAAsB;AAE1B,YAAI,cAAc;AAChB,mBAAS,aAAa,qBAAqB;AACzC,gBAAI,aAAa,SAAS,MAAM,QAAW;AACzC,2BAAa;AACb,oCAAsB,oBAAoB,SAAS;AACnD;;;;AAKN,eAAO,EAAE,YAAY,oBAAmB;;AAGlC,MAAAA,kBAAA,UAAA,sBAAR,WAAA;AACE,YAAI,KAAK,mBAAmB;AAC1B,eAAK,kBAAkB;YACrB,KAAK,WAAW,WAAW,KAAK,MAAM,YAAY;;YAClD,KAAK,kBAAkB;UAAU;;;AAIzC,aAAAA;IAAA,EAjG0CP,cAAa;;;;;AA2GZ,gBAAAQ,YAAA,MAAA;AAA3C,eAAAA,aAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AAuBU,cAAA,eAAe,SAACC,SAAmB;AACzC,gBAAK,SAASA;AAEd,cAAI,MAAK,MAAM,OAAO;AACpB,mBAAO,MAAK,MAAM,OAAOA,OAAM;;;;;AAxBnC,MAAAD,WAAA,UAAA,SAAA,WAAA;AACE,eAAO,KAAK,MAAM,SAAS,KAAK,YAAY;;AAG9C,MAAAA,WAAA,UAAA,oBAAA,WAAA;AACE,YAAIE,YAAW,KAAK,MAAM;AAE1B,YAAIA,WAAU;AACZ,UAAAA,UAAQjB,UAAAA,UAAA,CAAA,GAAM,KAAK,MAAM,SAAS,GAAA,EAAE,IAAI,KAAK,OAAM,CAAA,CAAA;;;AAIvD,MAAAe,WAAA,UAAA,uBAAA,WAAA;AACE,YAAIE,YAAW,KAAK,MAAM;AAE1B,YAAIA,WAAU;AACZ,UAAAA,UAAQjB,UAAAA,UAAA,CAAA,GAAM,KAAK,MAAM,SAAS,GAAA,EAAE,IAAI,KAAK,OAAM,CAAA,CAAA;;;AAWzD,aAAAe;IAAA,EA9B2CR,cAAa;;WAgCxC,2BAAwB;AACtC,QAAI;AACJ,QAAI;AACJ,QAAI,oBAA8B,CAAA;AAElC,WAAO,SAAC,WAA2C,WAAoB;AACrE,UAAI,CAAC,oBAAoB,CAAC,aAAa,kBAAkB,SAAS,KAAK,cAAc,kBAAkB;AACrG,2BAAmB;AACnB,2BAAmB;AACnB,4BAAoB,oBAAoB,WAAW,SAAS;;AAG9D,aAAO;;EAEX;AAIA,WAAS,oBAA+B,YAA4C,WAAoB;AACtG,QAAI,OAAO,eAAe,YAAY;AACpC,mBAAa,WAAW,SAAS;;AAGnC,WAAO,gBAAgB,UAAU;EACnC;AAEA,WAAS,iBAAiB,OAAO,WAAS;AACxC,QAAI,OAAO,UAAU,YAAY;AAC/B,aAAO,MAAM,WAAWM,cAAa;;AAEvC,WAAO;EACT;;;;ACrQ8B,gBAAAK,WAAA,MAAA;AAA9B,eAAAA,YAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,sBAAsB,yBAAwB;;;AAE9C,MAAAA,UAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACd,YAAA9B,WAAY,QAAO;AACzB,YAAI,YAA4B,EAAE,MAAM,QAAQ,QAAO;AACvD,YAAI,mBAAmB,KAAK,oBAAoBA,SAAQ,gBAAgB,SAAS;AAEjF,eACEyB,eAAC,WAAS,EACR,WACA,UAAUzB,SAAQ,cAClB,aAAaA,SAAQ,iBACrB,OAAO,MAAM,MAAK,GAEjB,SAAC,WAAS;AAAK,iBAAA,MAAM,SACpB,WACA,CAAC,QAAM,MAAM,SAAS,OAAI,SAAS,SAAS,EAAE,OAAO,gBAAgB,CAAC;QACvE,CAAA;;AAIT,aAAA8B;IAAA,EAvB8BX,cAAa;;WCW3B,iBAAiB,QAA2B;AAC1D,WAAO,QAAQ,QAAQ,eAAe;EACxC;AAEA,WAAS,gBAAgB,OAAsB;AAC7C,QAAI,aAA0B,OAAO,UAAU,aAC7C,EAAE,WAAW,MAAK,IAClB;AACI,QAAA,YAAc,WAAU;AAE9B,QAAI,WAAW,SAAS;AACtB,kBAAY,wBAAwB,UAAU;;AAIhD,WAAO;MACL,WAAW,WAAW;MACtB;MACA;;EAEJ;AAQA,WAAS,wBAAwBnB,UAAoB;AACnD,WAAO,SAAC,WAAoB;AAAK,aAC/ByB,eAAC,gBAAgB,UAAQ,MACtB,SAAC,SAAoB;AAAK,eACzBA,eAAC,UAAQ,EAAC,UAAU,QAAQ,SAAQ,GACjC,SAAC,WAAW,gBAAc;AACzB,cAAI,YAASb,UAAAA,UAAA,CAAA,GACR,SAAS,GAAA,EACZ,kBAAkB,QAAQ,QAAQ,iBAAgB,CAAA;AAEpD,iBACEa,eAAC,YAAU,EACT,WACA,YAAYzB,SAAQ,YACpB,SAASA,SAAQ,SACjB,UAAUA,SAAQ,UAClB,aAAaA,SAAQ,aACrB,OAAO,UAAS,GAEf,SAAC,WAAW,kBAAkB,YAAY,cAAY;AAAK,mBAC1DyB,eAAA,OAAA,EAAK,WAAW,eAAe,OAAO,gBAAgB,EAAE,KAAK,GAAG,GAAG,KAAK,UAAS,GAC9E,YAAY;UACT,CACP;SAGN;MACQ,CACZ;IACwB;EAE/B;WC1DgB,eACd,eACA,iBACA,wBACA,gBAAc;AAEd,QAAI,iBAAiB,iBAAiB,aAAa;AACnD,QAAI,kBAAkB,iBAAiB,gBAAgB,KAAK;AAC5D,QAAI,WAAW,gBAAgB,gBAAgB,eAAe;AAE9D,WAAO,QAAQ,UAAU,SAAC,SAAO;AAAK,aAAA,cAAc,SAAS,iBAAiB,iBAAiB,wBAAwB,cAAc;IAAC,CAAA;EACxI;AAEA,WAAS,cACP,SACA,iBACA,iBACA,wBACA,gBAAc;AAEd,QAAI,gBACF,QAAQ,UAAU,YAClB,QAAQ,SAAS,YACjB,uBAAuB,YACvB,gBAAgB;AAElB,QAAIM,YAAW;AACf,QAAI,eAAe;AACnB,QAAI,aAAa;AACjB,QAAI,sBAAmC,CAAA;AAEvC,QAAI,eAAe;AACjB,MAAAA,YAAW,qBAAqB,aAAa;AAE7C,UAAIA,WAAU;AACZ,YAAI,QAAQ,4BAA4BA,SAAQ;AAChD,uBAAe,MAAM;AAErB,YAAI,MAAM,UAAU,GAAG;AACrB,uBAAa;AACb,gCAAsB,gBAAgB,YAAY,IAAI,gBAAgB,YAAY,EAAE,aAAa,CAAA;;;;AAKvG,QAAI,kBAAkB,SAAC,eAAa;AAClC,UAAI,gBAAgB,cAAc,cAAc,CAAA;AAChD,UAAI,gBAAgB,QAAQ,SAAS;AAErC,UAAI,iBAAiB,QAAQ,cAAc,aAAa,KAAK,MAAM;AACjE,eAAO,cAAc,aAAa;;AAEpC,UAAI,cAAc,QAAQ,IAAI,KAAK,MAAM;AACvC,eAAO,cAAc,QAAQ,IAAI;;AAEnC,UAAI,cAAc,UAAU,KAAK,MAAM;AACrC,eAAO,cAAc,UAAU;;AAEjC,aAAO;;AAGT,QAAI,mBAAmB,SAAC,eAAa;AACnC,UAAI,cAAc,cAAc,eAAe,CAAA;AAC/C,UAAI,YAAY,QAAQ,SAAS;AAEjC,UAAI,aAAa,QAAQ,YAAY,SAAS,KAAK,MAAM;AACvD,eAAO,YAAY,SAAS;;AAE9B,UAAI,YAAY,QAAQ,IAAI,KAAK,MAAM;AACrC,eAAO,YAAY,QAAQ,IAAI;;AAEjC,UAAI,YAAY,UAAU,KAAK,MAAM;AACnC,eAAO,YAAY,UAAU;;AAE/B,aAAO;;AAGT,WAAO;MACL,MAAM,QAAQ;MACd,WAAW,QAAQ;MACnB,UAAQA;MACR;MACA;MACA,gBAAgB,QAAQ;MACxB,iBAAenB,UAAAA,UAAA,CAAA,GAAO,mBAAmB,GAAK,QAAQ,SAAS;MAE/D,oBACE,gBAAgB,sBAAsB,KACtC,gBAAgB,eAAe;MAC/B,QAAQ,UAAU;MACpB,mBACE,gBAAgB,cAAc,KAC9B,QAAQ,SAAS,cACjB,gBAAgB,oBAAoB,KACpC,QAAQ;;MAGV,qBACE,iBAAiB,sBAAsB,KACvC,iBAAiB,eAAe,KAChC,QAAQ,UAAU;MACpB,oBACE,iBAAiB,cAAc,KAC/B,QAAQ,SAAS,cACjB,iBAAiB,oBAAoB;;;EAG3C;AAIA,MAAI,mBAAiD,CAAA;AAErD,WAAS,qBAAqB,eAA4B;AACxD,QAAI,OAAO,KAAK,UAAU,aAAa;AACvC,QAAI,MAAM,iBAAiB,IAAI;AAE/B,QAAI,QAAQ,QAAW;AACrB,YAAM,eAAe,aAAa;AAClC,uBAAiB,IAAI,IAAI;;AAG3B,WAAO;EACT;;;;AC1FE,eAAAoB,sBAAsB,OAAgC;AAAhC,aAAA,QAAA;AACpB,aAAK,UAAU,OAAO,MAAM,UAAU,MAAM,OAAO;AACnD,aAAK,eAAc;;AAOrB,MAAAA,sBAAA,UAAA,YAAA,SAAU,oBAAiC,aAAyB,cAAsB;AAClF,YAAA,UAAY,KAAK,MAAK;AAE5B,YAAI,WAAW,QAAQ;UACrB,QAAQ,QAAQ,aAAa,mBAAmB,gBAAgB;;UAChE,mBAAmB;QAAa;AAGlC,eAAO,KAAK,MAAM,UAAU,IAAI,YAAY;;AAI9C,MAAAA,sBAAA,UAAA,YAAA,SAAU,oBAAiC,aAAyB,cAAsB;AAClF,YAAA,UAAY,KAAK,MAAK;AAE5B,YAAI,WAAW,QAAQ;UACrB,QAAQ,QAAQ,aAAa,mBAAmB,gBAAgB;;UAChE,mBAAmB;QAAa;AAGlC,eAAO,KAAK,MAAM,UAAU,GAAG,YAAY;;AAM7C,MAAAA,sBAAA,UAAA,QAAA,SAAM,aAAyB,WAAY,cAAmB;AAAnB,YAAA,iBAAA,QAAA;AAAA,yBAAA;QAAmB;AACtD,YAAA,QAAU,KAAI;AACpB,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAIC;AAEJ,qBAAa,KAAK,gBAAe;AACjC,qBAAa,KAAK,eAAe,UAAU;AAE3C,YAAI,cAAc;AAChB,wBAAc,uBAAuB,aAAa,UAAU;;AAG9D,sBAAc,KAAK,sBAAsB,aAAa,SAAS;AAC/D,wBAAgB,0BAA0B,KAAK,YAAY,IAAI;AAC/D,sBAAc,KAAK,iBACjB,KAAK,eAAe,YAAY,KAAK,GACrC,YAAY,MACZ,aAAa;AAEf,sBAAc,KAAK,eAAe,WAAW;AAC7C,sBAAc;AAEd,YAAI,CAAC,MAAM,qBAAqB;AAC9B,wBAAc,gBAAgB,aAAa,YAAY,KAAK;;AAG9D,sBAAc,KAAK,kBAAkB,WAAW;AAChD,sBAAc,gBAAgB,aAAa,UAAU;AAIrD,QAAAA,WAAU,gBAAgB,YAAY,OAAO,UAAU;AAEvD,eAAO;;;UAGL;;;UAIA,cAAc,YAAY;;UAG1B,kBAAkB,YAAY;UAE9B;;;UAIA;;;UAIA;;UAGA,aAAa,MAAM;;UAGnB,aAAa,MAAM;UAEnB,SAAOA;;UAGP,eAAe,KAAK,mBAAmB,YAAY,QAAQ;;;;AAQ/D,MAAAD,sBAAA,UAAA,kBAAA,WAAA;AACE,YAAI,QAAQ,KAAK,MAAM;AACvB,YAAI,cAAc,OAAO,UAAU,aAC/B,MAAM,KAAK,KAAK,MAAM,aAAa,KAAK,OAAO,IAC/C;AAEJ,eAAO,KAAK,YAAY,WAAW,KACjC,EAAE,OAAO,MAAM,KAAK,KAAI;;AAO5B,MAAAA,sBAAA,UAAA,wBAAA,SAAsB,MAAkB,WAAS;AACzC,YAAA,QAAU,KAAI;AACpB,YAAID,YAAW;AACf,YAAI,OAAO;AACX,YAAIG,SAAQ;AACZ,YAAI;AAEJ,YAAI,MAAM,UAAU;AAClB,UAAAH,YAAW,MAAM;AACjB,iBAAO,MAAM;AACb,UAAAG,SAAQ,KAAK,uBAAuB,MAAM,WAAWH,WAAU,IAAI;mBACzD,WAAW,KAAK,MAAM,UAAW;AAC3C,iBAAO;AACP,UAAAG,SAAQ,KAAK,uBAAuB,MAAM,WAAW,QAAQ;mBACnDA,SAAQ,KAAK,wBAAwB,IAAI,GAAI;AACvD,iBAAO,MAAM,QAAQ,kBAAkBA,OAAM,OAAOA,OAAM,GAAG,EAAE;eAC1D;AACL,UAAAH,YAAW,KAAK,oBAAmB;AACnC,iBAAO,4BAA4BA,SAAQ,EAAE;AAC7C,UAAAG,SAAQ,KAAK,uBAAuB,MAAM,WAAWH,WAAU,IAAI;;AAGrE,eAAO,EAAE,UAAQA,WAAE,MAAM,OAAKG,OAAA;;AAGhC,MAAAF,sBAAA,UAAA,sBAAA,WAAA;AACE,eAAO,eAAe,EAAE,KAAK,EAAC,CAAE;;AAKlC,MAAAA,sBAAA,UAAA,oBAAA,SAAkBE,QAAgB;AAC5B,YAAA,KAAwD,KAAK,OAA3D,UAAO,GAAA,SAAE,iBAAc,GAAA,gBAAE,cAAW,GAAA,aAAE,cAAW,GAAA;AACjD,YAAAC,SAAeD,OAAK,OAAbE,OAAQF,OAAK;AAE1B,YAAI,gBAAgB;AAElB,cAAI,YAAY,WAAW,IAAI,GAAG;AAChC,YAAAC,SAAQE,YAAWF,MAAK;AACxB,YAAAA,SAAQ,QAAQ,IAAIA,QAAO,WAAW;;AAIxC,cAAI,YAAY,WAAW,IAAI,GAAG;AAChC,YAAAC,OAAMC,YAAWD,IAAG;AACpB,YAAAA,OAAME,SAAQF,MAAK,EAAE;AACrB,YAAAA,OAAM,QAAQ,IAAIA,MAAK,WAAW;;;AAItC,eAAO,EAAE,OAAKD,QAAE,KAAGC,KAAA;;AAKrB,MAAAJ,sBAAA,UAAA,yBAAA,SAAuB,MAAkB,WAAWD,WAAoB,MAAI;AACtE,YAAA,KAA6B,KAAK,OAAhC,UAAO,GAAA,SAAE,gBAAa,GAAA;AAC5B,YAAII;AACJ,YAAIC;AACJ,YAAI;AAGJ,YAAI,CAAC,eAAe;AACZ,cAAA,gBAAkB,KAAK,MAAK;AAElC,cAAI,eAAe;AAEjB,gBAAI,UAAU,aAAa,IAAI,UAAUL,SAAQ,GAAG;AAClD,8BAAgB,4BAA4B,aAAa,EAAE;mBACtD;AACL,8BAAgB;;iBAEb;AACL,4BAAgB;;;AAKpB,YAAI,YAAYA,SAAQ,KAAK,GAAG;AAC9B,cAAI,KAAK,YAAYI,MAAK,GAAG;AAC3B,YAAAA,SAAQ,KAAK,eAAeA,QAAO,SAAS;AAC5C,YAAAA,SAAQE,YAAWF,MAAK;;;AAI5B,iBAAS,aAAU;AACjB,UAAAA,SAAQ,QAAQ,QAAQ,MAAM,aAAa;AAC3C,UAAAC,OAAM,QAAQ,IAAID,QAAOJ,SAAQ;AACjC,gBAAM,EAAE,OAAKI,QAAE,KAAGC,KAAA;;AAGpB,mBAAU;AAGV,YAAI,CAAC,KAAK,eAAe,GAAG,GAAG;AAC7B,iBAAO,KAAK,eAAe,MAAM,SAAS;AAC1C,qBAAU;;AAGZ,eAAO;;AAIT,MAAAJ,sBAAA,UAAA,yBAAA,SAAuB,MAAkB,WAAW,UAAQ;AACtD,YAAA,KAA6B,KAAK,OAAhC,UAAO,GAAA,SAAE,gBAAa,GAAA;AAC5B,YAAI,eAAe;AACnB,YAAIG,SAAoB;AACxB,YAAIC;AAEJ,YAAI,eAAe;AACjB,UAAAD,SAAQ,QAAQ,QAAQA,QAAO,aAAa;;AAG9C,QAAAA,SAAQE,YAAWF,MAAK;AACxB,QAAAA,SAAQ,KAAK,eAAeA,QAAO,SAAS;AAE5C,QAAAC,OAAMD;AACN,WAAG;AACD,UAAAC,OAAME,SAAQF,MAAK,CAAC;AACpB,cAAI,CAAC,KAAK,YAAYA,IAAG,GAAG;AAC1B,4BAAgB;;iBAEX,eAAe;AAExB,eAAO,EAAE,OAAKD,QAAE,KAAGC,KAAA;;AAKrB,MAAAJ,sBAAA,UAAA,0BAAA,SAAwB,MAAgB;AAChC,YAAA,QAAU,KAAI;AACpB,YAAI,QAAQ,MAAM;AAClB,YAAI,cAAc,OAAO,UAAU,aAC/B,MAAM,KAAK,MAAM,aAAa,MAAM,QAAQ,OAAO,IAAI,CAAC,IACxD;AAEJ,YAAIE,SAAQ,KAAK,YAAY,WAAW;AAExC,YAAIA,WAAUA,OAAM,SAAS,QAAQA,OAAM,OAAO,OAAO;AACvD,iBAAO;;AAGT,eAAOA;;AAMT,MAAAF,sBAAA,UAAA,mBAAA,SAAiB,cAAyB,kBAAkB,eAAa;AACvE,eAAO;;AAKT,MAAAA,sBAAA,UAAA,qBAAA,SAAmB,UAAQ;AACnB,YAAA,gBAAkB,KAAK,MAAK;AAClC,YAAI;AAEJ,YAAI,eAAe;AACjB,iBAAO;;AAGT,YAAK,kBAAkB,KAAK,MAAM,eAAgB;AAChD,iBAAO,eAAe,GAAG,eAAe;;AAG1C,YAAI,UAAU;AACZ,iBAAO;;AAGT,eAAO,eAAe,EAAE,MAAM,EAAC,CAAE;;AAGnC,MAAAA,sBAAA,UAAA,cAAA,SAAY,YAAsC;AAChD,YAAI,YAAY;AACd,cAAIE,SAAQ,WAAW,YAAY,KAAK,MAAM,OAAO;AAErD,cAAIA,QAAO;AACT,YAAAA,SAAQ,uBAAuBA,MAAK;;AAGtC,iBAAOA;;AAGT,eAAO;;AAOT,MAAAF,sBAAA,UAAA,iBAAA,WAAA;AACE,YAAI,aAAa,KAAK,MAAM,cAAc,CAAA;AAC1C,YAAI,kBAAkB,CAAA;AACtB,YAAI,SAAS;AACb,YAAI5B;AAEJ,YAAI,KAAK,MAAM,aAAa,OAAO;AACjC,qBAAW,KAAK,GAAG,CAAC;;AAGtB,aAAKA,KAAI,GAAGA,KAAI,GAAGA,MAAK,GAAG;AACzB,cACE,EAAE,gBAAgBA,EAAC,IAAI,WAAW,QAAQA,EAAC,MAAM,KACjD;AACA,sBAAU;;;AAId,YAAI,CAAC,QAAQ;AACX,gBAAM,IAAI,MAAM,oBAAoB;;AAGtC,aAAK,kBAAkB;;AAKzB,MAAA4B,sBAAA,UAAA,iBAAA,SAAeE,QAAgB;AACvB,YAAAC,SAAeD,OAAK,OAAbE,OAAQF,OAAK;AAE1B,YAAIC,QAAO;AACT,UAAAA,SAAQ,KAAK,eAAeA,MAAK;;AAGnC,YAAIC,MAAK;AACP,UAAAA,OAAM,KAAK,eAAeA,MAAK,IAAI,IAAI;;AAGzC,YAAID,UAAS,QAAQC,QAAO,QAAQD,SAAQC,MAAK;AAC/C,iBAAO,EAAE,OAAKD,QAAE,KAAGC,KAAA;;AAGrB,eAAO;;AAKT,MAAAJ,sBAAA,UAAA,cAAA,SAAY,KAAG;AACb,YAAI,eAAe,MAAM;AACvB,gBAAM,IAAI,UAAS;;AAErB,eAAO,KAAK,gBAAgB,GAAG;;AAQjC,MAAAA,sBAAA,UAAA,iBAAA,SAAe,MAAkB,KAAS,aAAmB;AAA5B,YAAA,QAAA,QAAA;AAAA,gBAAA;QAAO;AAAE,YAAA,gBAAA,QAAA;AAAA,wBAAA;QAAmB;AAC3D,eACE,KAAK,iBAAiB,KAAK,UAAS,KAAM,cAAc,MAAM,KAAK,KAAK,CAAC,GACzE;AACA,iBAAOM,SAAQ,MAAM,GAAG;;AAE1B,eAAO;;AAEX,aAAAN;IAAA,EAAC;;WC5be,eAAe,UAAkB,QAAc;AAC7D,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,mBAAW,OAAO;;AAGtB,WAAO;EACT;WCPgB,6BAA6B,wBAAwB,QAAc;;AACjF,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAApB,UAAAA,UAAA,CAAA,GAAY,sBAAsB,IAAA,KAAA,CAAA,GAAA,GAAG,OAAO,UAAU,IAAG,OAAO,gBAAc,GAAA;MAChF;AACE,eAAO;;EAEb;WCLgB,kBACd,oBACA,QACA,aACA,sBAA0C;AAE1C,QAAI;AAEJ,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAO,qBAAqB,MAAM,OAAO,cAAc,WAAW;MAEpE,KAAK;AACH,eAAO,qBAAqB,MAAM,OAAO,UAAU;MAErD,KAAK;AACH,aAAK,qBAAqB,UAAU,oBAAoB,WAAW;AACnE,YAAI,GAAG,SAAS;AACd,iBAAO;;AAET;MAEF,KAAK;AACH,aAAK,qBAAqB,UAAU,oBAAoB,WAAW;AACnE,YAAI,GAAG,SAAS;AACd,iBAAO;;AAET;;AAGJ,WAAO;EACT;WCzBgB,iBAAiB,iBAAiB,aAA0B,SAAwB;AAClG,QAAI,cAAc,cAAc,YAAY,cAAc;AAE1D,WAAO,WACL,CAAA,GACA,oBAAoB,iBAAiB,OAAO,GAC5C,aACA,OAAO;EAEX;WAEgB,mBACd,cACA,QACA,aACA,SAAwB;AAExB,QAAI,cAAc,cAAc,YAAY,cAAc;AAE1D,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAO,WAAW,cAAc,OAAO,SAAS,aAAa,OAAO;MAEtE,KAAK;AACH,eAAO,aAAa,cAAc,OAAO,QAAQ;MAEnD,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;AACH,YAAI,aAAa;AACf,iBAAO,kBAAkB,cAAc,aAAa,OAAO;;AAE7D,eAAO;MAET,KAAK;AACH,eAAO,kBACL,cACC,OAAe;;UACd,YAAa,OAAe,SAAS;YACrC,qBAAqB,cAAc,OAAO,GAC5C,aACA,OAAO,aAAa,OACpB,OAAO;MAGX,KAAK;MACL,KAAK;AACH,eAAO,gBAAgB,cAAc,OAAO,UAAU,OAAO,SAAS,OAAO,UAAU;MAEzF,KAAK;AACH,eAAO,CAAA;MAET;AACE,eAAO;;EAEb;WAEgB,8BAA8B,cAA+B,aAA0B,SAAwB;AAC7H,QAAI,cAAc,cAAc,YAAY,cAAc;AAE1D,WAAO,kBACL,cACA,qBAAqB,cAAc,OAAO,GAC1C,aACA,MACA,OAAO;EAEX;WAEgB,2BAA2B,cAA6B;AACtE,aAAS,YAAY,cAAc;AACjC,UAAI,aAAa,QAAQ,EAAE,YAAY;AACrC,eAAO;;;AAIX,WAAO;EACT;AAEA,WAAS,WACP,iBACA,SACA,YACA,SAAwB;AAExB,QAAIV,QAAwB,CAAA;AAE5B,aAAmB,KAAA,GAAA,YAAA,SAAA,KAAA,UAAA,QAAA,MAAS;AAAvB,UAAI,SAAM,UAAA,EAAA;AACb,MAAAA,MAAK,OAAO,QAAQ,IAAI;;AAG1B,QAAI,YAAY;AACd,MAAAA,QAAO,kBAAkBA,OAAM,YAAY,OAAO;;AAGpD,WAAAU,UAAAA,UAAA,CAAA,GAAY,eAAe,GAAKV,KAAI;EACtC;AAEA,WAAS,aAAa,iBAAkC,UAAgB;AACtE,WAAO,WAAW,iBAAiB,SAAC,aAA6B;AAAK,aAAA,YAAY,aAAa;IAAQ,CAAA;EACzG;AAEA,WAAS,kBAAkB,YAA6B,YAAuB,SAAwB;AACrG,WAAO,kBACL,YACA,WAAW,YAAY,SAAC,aAAW;AAAK,aAAA,cAAc,aAAa,YAAY,OAAO;IAAC,CAAA,GACvF,YACA,OACA,OAAO;EAEX;AAEA,WAAS,cAAc,aAA+B,YAAuB,SAAwB;AACnG,QAAI,CAAC,oBAAoB,aAAa,OAAO,GAAG;AAC9C,aAAO,CAAC,YAAY;;AAEtB,WAAO,CAAC,QAAQ,QAAQ,gBACpB,CAAC,YAAY,cACb,YAAY;IACZ,WAAW,QAAQ,YAAY,WAAW,SAC1C,WAAW,MAAM,YAAY,WAAW;EAC9C;AAEA,WAAS,kBACP,aACA,cACA,YACA,WACA,SAAwB;AAExB,QAAI,cAA+B,CAAA;AAEnC,aAAS,YAAY,aAAa;AAChC,UAAI,SAAS,YAAY,QAAQ;AAEjC,UAAI,aAAa,QAAQ,GAAG;AAC1B,oBAAY,QAAQ,IAAI,YAAY,QAAQ,YAAY,WAAW,OAAO;aACrE;AACL,oBAAY,QAAQ,IAAI;;;AAI5B,WAAO;EACT;AAEA,WAAS,YAAY,aAA+B,YAAuB,WAAoB,SAAwB;AAC/G,QAAAF,WAAyB,QAAO,SAAvB,cAAgB,QAAO;AACtC,QAAI,YAAY,QAAQ,YAAY,gBAAgB,YAAY,WAAW;AAC3E,QAAI,UAAU,KAAI;AAElB,cAAU,MACR;MACE;MACA,OAAO;MACP;MACA;OAEF,SAAC,KAAG;AACI,UAAA,YAAc,IAAG;AAEvB,UAAIA,SAAQ,oBAAoB;AAC9B,oBAAYA,SAAQ,mBAAmB,KAAK,aAAa,WAAW,IAAI,GAAG,KAAK;;AAGlF,UAAI,YAAY,SAAS;AACvB,oBAAY,YAAY,QAAQ,KAAK,aAAa,WAAW,IAAI,GAAG,KAAK;;AAG3E,cAAQ,SAAS;QACf,MAAM;QACN,UAAU,YAAY;QACtB;QACA;QACA;OACD;OAEH,SAACuC,QAAK;AACJ,cAAQ,KAAKA,OAAM,SAASA,MAAK;AAEjC,UAAIvC,SAAQ,oBAAoB;AAC9B,QAAAA,SAAQ,mBAAmB,KAAK,aAAauC,MAAK;;AAGpD,UAAI,YAAY,SAAS;AACvB,oBAAY,QAAQA,MAAK;;AAG3B,cAAQ,SAAS;QACf,MAAM;QACN,UAAU,YAAY;QACtB;QACA;QACA,OAAKA;OACN;KACF;AAGH,WAAA3B,UAAAA,UAAA,CAAA,GACK,WAAW,GAAA,EACd,YAAY,MACZ,eAAe,QAAO,CAAA;EAE1B;AAEA,WAAS,gBAAgB,YAA6B,UAAkB,SAAiB,YAAqB;;AAC5G,QAAI,cAAgC,WAAW,QAAQ;AAEvD,QACE;IACA,YAAY,YAAY,eACxB;AACA,aAAAA,UAAAA,UAAA,CAAA,GACK,UAAU,IAAA,KAAA,CAAA,GAAA,GACZ,QAAQ,IAAAA,UAAAA,UAAA,CAAA,GACJ,WAAW,GAAA,EACd,YAAY,OACZ,WAAU,CAAA,GAAA,GAAA;;AAKhB,WAAO;EACT;AAEA,WAAS,qBAAqB,cAA+B,SAAwB;AACnF,WAAO,WAAW,cAAc,SAAC,aAAW;AAAK,aAAA,oBAAoB,aAAa,OAAO;IAAC,CAAA;EAC5F;AAEA,WAAS,oBAAoB,YAA6B,SAAwB;AAChF,QAAI,WAAW,yBAAyB,OAAO;AAC/C,QAAI,aAAa,CAAA,EAAG,OAAO,WAAW,gBAAgB,CAAA,CAAE;AACxD,QAAI,UAAU,CAAA;AAEd,QAAI,WAAW,eAAe;AAC5B,iBAAW,QAAQ,WAAW,aAAa;;AAG7C,QAAI,WAAW,QAAQ;AACrB,iBAAW,QAAQ,WAAW,MAAM;;AAGtC,aAAsB,KAAA,GAAA,eAAA,YAAA,KAAA,aAAA,QAAA,MAAY;AAA7B,UAAI,YAAS,aAAA,EAAA;AAChB,UAAI,SAAS,iBAAiB,WAAW,SAAS,QAAQ;AAC1D,UAAI,QAAQ;AACV,gBAAQ,KAAK,MAAM;;;AAIvB,WAAO;EACT;AAEA,WAAS,oBAAoB,aAA+B,SAAwB;AAClF,QAAI,OAAO,QAAQ,YAAY;AAE/B,WAAO,CAAC,KAAK,YAAY,WAAW,EAAE;EACxC;WCtPgB,iBACd,YACA,QACA,cACA,aACA,SAAwB;AAExB,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAO,iBACL,YACA,aAAa,OAAO,QAAQ,GAC5B,OAAO,SACP,OAAO,YACP,OAAO,WACP,OAAO;MAGX,KAAK;AACH,eAAO;UACL;UACA,OAAO;;UACP,cAAc,YAAY,cAAc;UACxC;QAAO;MAGX,KAAK;AACH,eAAO,OAAO;MAEhB,KAAK;AACH,eAAO,iBAAiB,YAAY,OAAO,UAAU;MAEvD,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;AACH,YAAI,aAAa;AACf,iBAAO,gBAAgB,YAAY,YAAY,aAAa,OAAO;;AAErE,eAAO;MAET,KAAK;AACH,eAAO,qBAAqB,YAAY,OAAO,UAAU;MAE3D,KAAK;AACH,eAAO,wBAAwB,YAAY,OAAO,QAAQ;MAE5D,KAAK;AACH,eAAO,qBAAqB,YAAY,SAAC,UAAkB;AAAK,iBAC9D,CAAC,SAAS;SACX;MAEH,KAAK;AACH,eAAO,sBAAqB;MAE9B;AACE,eAAO;;EAEb;AAEA,WAAS,iBACP,YACA,aACA,SACA,YACA,WACA,SAAwB;AAExB,QACE;IACA,YAAY,YAAY,eACxB;AACA,UAAI,SAAS,YACX,mBAAmB,WAAW,aAAa,OAAO,GAClD,aACA,OAAO;AAGT,UAAI,YAAY;AACd,iBAAS,gBAAgB,QAAQ,YAAY,OAAO;;AAGtD,aAAO,iBACL,wBAAwB,YAAY,YAAY,QAAQ,GACxD,MAAM;;AAIV,WAAO;EACT;AAEA,WAAS,mBAAmB,WAAW,aAA+B,SAAwB;AAC5F,QAAI,mBAAmB,QAAQ,QAAQ;AACvC,QAAI,sBAAsB,cAAc,YAAY,qBAAqB;AAEzE,QAAI,qBAAqB;AACvB,kBAAY,sBAAsB,WAAW,mBAAmB;;AAGlE,QAAI,kBAAkB;AACpB,kBAAY,sBAAsB,WAAW,gBAAgB;;AAG/D,WAAO;EACT;AAEA,WAAS,sBAAsB,WAAW,MAAI;AAC5C,QAAI;AAEJ,QAAI,CAAC,MAAM;AACT,sBAAgB;WACX;AACL,sBAAgB,CAAA;AAEhB,eAAqB,KAAA,GAAA,cAAA,WAAA,KAAA,YAAA,QAAA,MAAW;AAA3B,YAAI,WAAQ,YAAA,EAAA;AACf,YAAI,eAAe,KAAK,QAAQ;AAEhC,YAAI,cAAc;AAChB,wBAAc,KAAK,YAAY;mBACtB,gBAAgB,MAAM;AAC/B,wBAAc,KAAK,QAAQ;;;;AAKjC,WAAO;EACT;AAEA,WAAS,SAAS,YAAwB,QAAoB,aAA+B,SAAwB;AACnH,QAAI,aAAa;AACf,eAAS,gBAAgB,QAAQ,aAAa,OAAO;;AAGvD,WAAO,iBAAiB,YAAY,MAAM;EAC5C;WAEgB,sBAAsB,YAAwB,YAAqB,YAAmB;AAC9F,QAAA,OAAS,WAAU;AAEzB,QAAI4B,aAAY,QAAQ,WAAW,WAAW,SAAC,UAAuB;AACpE,UAAI,MAAM,KAAK,SAAS,KAAK;AAE7B,UAAI,IAAI,UAAU,IAAI,cAAc;AAClC,eAAO;;AAET,aAAA5B,UAAAA,UAAA,CAAA,GACK,QAAQ,GAAA,EACX,OAAO;QACL,OAAO,WAAW,aAAa,WAAW,OAAO,SAAS,MAAM,OAAO,SAAS,cAAc,CAAC;QAC/F,KAAK,WAAW,aAAa,WAAW,OAAO,SAAS,MAAM,KAAK,SAAS,YAAY,CAAC;SAE3F,gBAAgB,WAAW,mBAAmB,OAAO,SAAS,gBAC9D,cAAc,WAAW,mBAAmB,OAAO,SAAS,aAAY,CAAA;KAE3E;AAED,WAAO,EAAE,MAAM,WAAS4B,WAAA;EAC1B;AAEA,WAAS,wBAAwB,YAAwB,UAAgB;AACvE,WAAO,qBAAqB,YAAY,SAAC,UAAkB;AAAK,aAAA,SAAS,aAAa;IAAQ,CAAA;EAChG;WAGgB,iBAAiB,YAAwB,UAA2B;AAClF,WAAO;MACL,MAAM,WAAW;MACjB,WAAW,WAAW,WAAW,WAAW,SAAC,UAAuB;AAAK,eAAA,CAAC,SAAS,SAAS,UAAU;MAAC,CAAA;;EAE3G;WC1LgB,oBAAoB,kBAAmC,QAAc;AACnF,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAO;MAET,KAAK;AACH,eAAO,OAAO;MAEhB;AACE,eAAO;;EAEb;WCZgB,oBAAoB,mBAA2B,QAAc;AAC3E,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAO;MAET,KAAK;AACH,eAAO,OAAO;MAEhB;AACE,eAAO;;EAEb;WCVgB,gBAAgB,aAA2C,QAAc;AACvF,QAAI;AAEJ,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAO;MAET,KAAK;AACH,kBAAU,OAAO;AAEjB,eAAO;UACL,gBAAgB,QAAQ;UACxB,eAAe,QAAQ;UACvB,SAAS,QAAQ;;MAGrB;AACE,eAAO;;EAEb;WCnBgB,kBAAkB,eAA6C,QAAc;AAC3F,QAAI;AAEJ,YAAQ,OAAO,MAAI;MACjB,KAAK;AACH,eAAO;MAET,KAAK;AACH,oBAAY,OAAO;AAEnB,eAAO;UACL,gBAAgB,UAAU;UAC1B,eAAe,UAAU;UACzB,SAAS,UAAU;;MAGvB;AACE,eAAO;;EAEb;WCfgB,cACd,iBACA,yBACA,OACA,WACA,aAAwB;AAExB,QAAI,SAAS,gBAAgB,gBAAgB,aAC3C,gBAAgB,eAChB,iBACA,yBACA,OACA,WACA,WAAW,IACT;AACJ,QAAI,SAAS,gBAAgB,gBAAgB,aAC3C,gBAAgB,eAChB,iBACA,yBACA,OACA,WACA,WAAW,IACT;AAEJ,WAAO,EAAE,QAAQ,OAAM;EACzB;AAEA,WAAS,aACP,gBACA,iBACA,yBACA,OACA,WACA,aAAwB;AAExB,QAAI,iBAA+D,CAAA;AACnE,QAAI,mBAA6B,CAAA;AACjC,QAAI,WAAW;AAEf,aAAS,eAAe,gBAAgB;AACtC,UAAI,aAAa,eAAe,WAAW;AAC3C,UAAI,aAAa,aAAa,YAAY,iBAAiB,yBAAyB,OAAO,WAAW,WAAW;AACjH,qBAAe,WAAW,IAAI,WAAW;AACzC,uBAAiB,KAAI,MAArB,kBAAyB,WAAW,gBAAgB;AACpD,iBAAW,YAAY,WAAW;;AAGpC,WAAO,EAAE,gBAAgB,kBAAkB,SAAQ;EACrD;AAKA,WAAS,aACP,YACA,iBACA,yBACA,OACA,WACA,aAAwB;AAExB,QAAI,QAAQ,gBAAgB,cAAc;AAC1C,QAAI,wBAAwB,gBAAgB,iBAAiB,CAAA;AAC7D,QAAI,8BAA8B,wBAAwB,cAAc,CAAA;AACxE,QAAI,qBAAqB,gBAAgB,cAAc,CAAA;AACvD,QAAI,8BAA8B,wBAAwB,eAAe,CAAA;AACzE,QAAI,sBAAsB,gBAAgB,eAAe,CAAA;AACzD,QAAI,iBAAiB,aAAa,WAAW,MAAM,GAAG,IAAI,CAAA;AAC1D,QAAI,mBAA6B,CAAA;AACjC,QAAI,WAAW;AAEf,QAAI,UAAU,eAAe,IAC3B,SAAC,gBAAc;AAAsB,aACnC,eAAe,MAAM,GAAG,EAAE,IAAI,SAAC,YAAU;AACvC,YAAI,eAAe,SAAS;AAC1B,qBAAW;AACX,iBAAO,EAAE,WAAU;;AAGrB,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI;AAGJ,YAAK,oBAAoB,sBAAsB,UAAU,GAAI;AAC3D,wBAAc,SAAC,IAAW;AACxB,gBAAI,kBAAkB,OAAO;AAC3B,gCAAkB,MAAM,KAAK,GAAG,QAAQ,IAAI,GAAG,MAAM;;;AAIzD,WAAC,aAAa,MAAM,yBAAyB,iBAAiB,OAC3D,aAAa,MAAM,aAAa,YAAY,KAAK,OACjD,aAAa,kBAAkB;AAElC,uBAAa,kBAAkB,QAAQ,kBAAkB;mBAC/C,WAAW,UAAU,UAAU,GAAI;AAC7C,2BAAiB,KAAK,UAAU;AAEhC,wBAAc,WAAA;AACZ,wBAAY,WAAW,UAAU;;AAGnC,WAAC,aAAa,SAAS,wBACpB,aAAa,MAAM,aAAa,YAAY,KAAK,OACjD,aAAa,SAAS;AAEzB,cAAI,eACF,SAAS,sBACT,SAAS;AAEX,uBAAa;YACX,SAAS,uBACT,SAAS,sBACT,gBAAgB;YAChB,CAAC,cAAc,UAAU;;YACzB;UAAY;mBAEL,YAAY,UAAU,GAAG;AAClC,wBAAc,WAAA;AACZ,wBAAY,UAAU,EAAC;;AAGzB,WAAC,aAAa,4BAA4B,UAAU,OACjD,aAAa,MAAM,aAAa,YAAY,KAAK,OACjD,aAAa,mBAAmB,UAAU;AAE7C,cAAI,eAAe,cAAc,eAAe,YAAY;AAC1D,gBAAI,aAAa,eAAe,aAAa,SAAS;AACtD,yBAAa,mBACX,4BAA4B,UAAU,KACtC,oBAAoB,UAAU,GAC9B;cACE,mBAAmB,QAAQ;cAC3B;eAEF,mBAAmB,UAAU,CAAC;iBAE3B;AACL,yBAAa,SAAC,SAAe;AAAK,qBAAA,mBAChC,4BAA4B,UAAU,KACtC,oBAAoB,UAAU,GAC9B;gBACE,mBAAmB,OAAO,KAAK;gBAC/B;iBAEF,mBAAmB,UAAU,CAAC;YAC/B;;;AAIL,eAAO,EAAE,YAAY,aAAa,YAAY,YAAY,WAAU;OACrE;IAAC,CACH;AAGH,WAAO,EAAE,SAAS,kBAAkB,SAAQ;EAC9C;ACnKA,MAAIC,mBAA+C;IACjD,aAAa;IAEb,WAAS,SAAC,SAAO;AACf,UAAI,MAAM,QAAQ,QAAQ,MAAM,GAAG;AACjC,eAAO,QAAQ;;AAEjB,aAAO;;IAGT,OAAK,SAAC,KAAK3C,UAAO;AAChB,MAAAA,SAAQ;QACN,WAAW,IAAI,YAAY;OAC5B;;;AAIE,MAAM,yBAAyB,aAAa;IACjD,iBAAiB,CAAC2C,gBAAc;GACjC;ACJD,MAAIA,mBAAkD;IAEpD,WAAS,SAAC,SAAO;AACf,UAAI,OAAO,QAAQ,WAAW,YAAY;AACxC,eAAO,QAAQ;;AAEjB,aAAO;;IAGT,OAAK,SAAC,KAAK3C,UAAS,SAAO;AACnB,UAAA,UAAY,IAAI,QAAO;AAC7B,UAAI,OAAO,IAAI,YAAY;AAE3B,kBACE,KAAK,KAAK,MAAM,0BAA0B,IAAI,OAAO,OAAO,CAAC,GAC7D,SAAC,WAAS;AACR,QAAAA,SAAQ,EAAE,UAAS,CAAE;SAEvB,OAAO;;;AAMN,MAAM,wBAAwB,aAAa;IAChD,iBAAiB,CAAC2C,gBAAc;GACjC;WC3Ce,YAAY,QAAgB,KAAaC,SAAoB,iBAAiB,iBAAe;AAC3G,aAAS,OAAO,YAAW;AAE3B,QAAI,OAAO;AAEX,QAAI,WAAW,OAAO;AACpB,YAAM,wBAAwB,KAAKA,OAAM;WACpC;AACL,aAAO,aAAaA,OAAM;;AAG5B,QAAI,MAAM,IAAI,eAAc;AAC5B,QAAI,KAAK,QAAQ,KAAK,IAAI;AAE1B,QAAI,WAAW,OAAO;AACpB,UAAI,iBAAiB,gBAAgB,mCAAmC;;AAG1E,QAAI,SAAS,WAAA;AACX,UAAI,IAAI,UAAU,OAAO,IAAI,SAAS,KAAK;AACzC,YAAI,SAAS;AACb,YAAI,MAAG;AAEP,YAAI;AACF,gBAAM,KAAK,MAAM,IAAI,YAAY;AACjC,mBAAS;iBACF,KAAP;;AAIF,YAAI,QAAQ;AACV,0BAAgB,KAAK,GAAG;eACnB;AACL,0BAAgB,wBAAwB,GAAG;;aAExC;AACL,wBAAgB,kBAAkB,GAAG;;;AAIzC,QAAI,UAAU,WAAA;AACZ,sBAAgB,kBAAkB,GAAG;;AAGvC,QAAI,KAAK,IAAI;EACf;AAEA,WAAS,wBAAwB,KAAaA,SAAM;AAClD,WAAO,OACJ,IAAI,QAAQ,GAAG,MAAM,KAAK,MAAM,OACjC,aAAaA,OAAM;EACvB;AAEA,WAAS,aAAaA,SAAM;AAC1B,QAAI,QAAQ,CAAA;AAEZ,aAAS7B,QAAO6B,SAAQ;AACtB,YAAM,KAAQ,mBAAmB7B,IAAG,IAAC,MAAI,mBAAmB6B,QAAO7B,IAAG,CAAC,CAAG;;AAG5E,WAAO,MAAM,KAAK,GAAG;EACvB;AC7DO,MAAM,kCAAkC;IAC7C,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,UAAU;IACV,eAAe;;ACWjB,MAAI,iBAA+C;IAEjD,WAAS,SAAC,SAAO;AACf,UAAI,QAAQ,QAAQ,QAAQ,WAAW,UAAU,CAAC,QAAQ,SAAS;AACjE,eAAO;UACL,KAAK,QAAQ;UACb,QAAQ;UACR,SAAS,QAAQ,UAAU,OAAO,YAAW;UAC7C,aAAa,QAAQ;UACrB,YAAY,QAAQ;UACpB,UAAU,QAAQ;UAClB,eAAe,QAAQ;;;AAG3B,aAAO;;IAGT,OAAK,SAAC,KAAKf,UAAS,SAAO;AACnB,UAAA,OAAS,IAAI,YAAW;AAC9B,UAAI,gBAAgB,mBAAmB,MAAM,IAAI,OAAO,IAAI,OAAO;AAEnE,kBACE,KAAK,QAAQ,KAAK,KAAK,eACvB,SAAC,WAAW,KAAG;AACb,QAAAA,SAAQ,EAAE,WAAW,IAAG,CAAE;SAE5B,SAAC,cAAc,KAAG;AAChB,gBAAQ,EAAE,SAAS,cAAc,IAAG,CAAE;OACvC;;;AAMA,MAAM,4BAA4B,aAAa;IACpD,qBAAqB;IACrB,iBAAiB,CAAC,cAAc;GACjC;AAED,WAAS,mBAAmB,MAAoBoC,QAAkB,SAAwB;AAClF,QAAA,UAAqB,QAAO,SAAnBlC,WAAY,QAAO;AAClC,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI0C,UAAS,CAAA;AAEb,iBAAa,KAAK;AAClB,QAAI,cAAc,MAAM;AACtB,mBAAa1C,SAAQ;;AAGvB,eAAW,KAAK;AAChB,QAAI,YAAY,MAAM;AACpB,iBAAWA,SAAQ;;AAGrB,oBAAgB,KAAK;AACrB,QAAI,iBAAiB,MAAM;AACzB,sBAAgBA,SAAQ;;AAI1B,QAAI,OAAO,KAAK,gBAAgB,YAAY;AAE1C,4BAAsB,KAAK,YAAW;WACjC;AAEL,4BAAsB,KAAK,eAAe,CAAA;;AAG5C,IAAAY,UAAS8B,SAAQ,mBAAmB;AAEpC,IAAAA,QAAO,UAAU,IAAI,QAAQ,UAAUR,OAAM,KAAK;AAClD,IAAAQ,QAAO,QAAQ,IAAI,QAAQ,UAAUR,OAAM,GAAG;AAE9C,QAAI,QAAQ,aAAa,SAAS;AAChC,MAAAQ,QAAO,aAAa,IAAI,QAAQ;;AAGlC,WAAOA;EACT;AC/FO,MAAM,4BAA4B;IACvC,YAAY;IACZ,WAAW;IACX,SAAS;IACT,UAAU;IACV,YAAY;IACZ,UAAU;;ACaZ,MAAI,YAAgD;IAElD,OAAA,SAAM,SAAuB,SAAgB;AAC3C,UAAI,QAAQ,cAAc,QAAQ,aAAa,QAAQ,WAAW,QAAQ,cAAc,QAAQ,UAAU;AACxG,YAAI,gBAAqC;UACvC,YAAY,QAAQ,cAAc;UAClC,WAAW,QAAQ,aAAa;UAChC,SAAS,QAAQ,WAAW;UAC5B,YAAY,QAAQ,aAAa,QAAQ,aAAa,QAAQ,UAAU,IAAI;UAC5E,UAAU,QAAQ,WAAW,QAAQ,aAAa,QAAQ,QAAQ,IAAI;;AAGxE,YAAIX,YAAQ;AAEZ,YAAI,QAAQ,UAAU;AACpB,UAAAA,YAAW,QAAQ;;AAErB,YAAI,CAACA,aAAY,QAAQ,aAAa,QAAQ,SAAS;AACrD,UAAAA,YAAW,kBAAkB,QAAQ,SAAS,QAAQ,SAAS;;AAGjE,eAAO;UACL,aAAa,QAAQ,CAAC,QAAQ,aAAa,CAAC,QAAQ,OAAO;UAC3D,UAAQA;UACR,UAAU;;;;AAId,aAAO;;IAGT,QAAA,SAAO,UAA+B,cAAyB,SAAgB;AAC7E,UAAI,sBAAsB,gBACxB,cACA,EAAE,OAAO,SAAS,YAAY,KAAK,SAAS,SAAQ,CAAE;AAGxD,UAAI,qBAAqB;AACvB,eAAO,aACL,SAAS,YACT,SAAS,WACT,qBACA,OAAO;;AAGX,aAAO,CAAA;;;AAKJ,MAAM,8BAA8B,aAAa;IACtD,gBAAgB,CAAC,SAAS;IAC1B,eAAe;GAChB;AAED,WAAS,aACP,YACA,WACA,cACA,SAAgB;AAEhB,QAAI,UAA0C,aAAa,YAAY,UAAU,IAAI;AACrF,QAAI,YAAYM,YAAW,aAAa,KAAK;AAC7C,QAAI,YAAY,aAAa;AAC7B,QAAI,iBAA+B,CAAA;AAEnC,WAAO,YAAY,WAAW;AAC5B,UAAI;AAGJ,UAAI,CAAC,WAAW,QAAQ,UAAU,UAAS,CAAE,GAAG;AAC9C,YAAI,WAAW;AACb,0BAAgB,QAAQ,IAAI,WAAW,SAAS;eAC3C;AACL,0BAAgB;;AAGlB,uBAAe,KAAK,aAAa;;AAGnC,kBAAYC,SAAQ,WAAW,CAAC;;AAGlC,WAAO;EACT;ACtGO,MAAM,sBAAsB,aAAa;IAC9C,sBAAsB;MACpB,QAAM,SAACK,SAAQ,SAAO;AACpB,2BAAmB,CAACA,OAAM,GAAG,OAAO;;MAEtC,cAAc;;GAEjB;AAKD,WAAS,mBAAmB,QAAQ,SAAwB;AAC1D,QAAI,iBAAqC,kBAAkB,QAAQ,eAAc,EAAG,YAAY;AAChG,QAAI,YAAY,CAAA;AAEhB,aAAkB,KAAA,GAAA,WAAA,QAAA,KAAA,SAAA,QAAA,MAAQ;AAArB,UAAI,QAAK,SAAA,EAAA;AACZ,UAAI,aAAa;AAEjB,eAASvC,KAAI,GAAGA,KAAI,eAAe,QAAQA,MAAK,GAAG;AACjD,YAAI,eAAeA,EAAC,EAAE,SAAS,OAAO;AACpC,yBAAe,OAAOA,IAAG,CAAC;AAC1B,uBAAa;AACb;;;AAIJ,UAAI,CAAC,YAAY;AACf,kBAAU,KAAK,KAAK;;;AAIxB,aAA0B,KAAA,GAAA,mBAAA,gBAAA,KAAA,iBAAA,QAAA,MAAgB;AAArC,UAAI,gBAAa,iBAAA,EAAA;AACpB,cAAQ,SAAS;QACf,MAAM;QACN,UAAU,cAAc;OACzB;;AAGH,aAAqB,KAAA,GAAA,cAAA,WAAA,KAAA,YAAA,QAAA,MAAW;AAA3B,UAAI,WAAQ,YAAA,EAAA;AACf,cAAQ,YAAY,eAAe,QAAQ;;EAE/C;WCxCgB,kBAAkB,aAA0B,SAAqB;AAC/E,YAAQ,QAAQ,QAAQ,YAAUQ,UAAAA,UAAA,CAAA,GAC7B,0BAA0B,YAAY,aAAa,QAAQ,OAAO,CAAC,GAAA,EACtE,MAAM,QAAQ,QAAO,CAAA,CAAA;EAEzB;WCqBgB,iBAAiB,YAAwB,SAAqB;AACtE,QAAA,UAAY,QAAO;AAEzB,QAAI,QAAQ,YAAY,WAAW,GAAG;AACpC,cAAQ,QAAQ,aAAa,eAAe,YAAY,OAAO,CAAC;;EAEpE;MCrBa,gBAA6B;IACxC;IACA;IACA;IACA;IACA;IACA,aAAa;MACX,gBAAgB;QACd,SAAC,OAA+B;AAAK,iBAAA,2BAA2B,MAAM,YAAY;QAAC;;MAErF,qBAAqB;QACnB,MAAM;QACN,UAAU;;MAEZ,iBAAiB;QACf,aAAa;QACb,YAAY;;KAEf;;AAGH,WAAS,oBAAiB;AACxB,QAAI,YAAgC;AACpC,QAAI,cAAsB;AAE1B,aAASgC,QAAO,IAAiBC,OAAY;AAC3C,UAAI,OAAO,aAAaA,UAAS,aAAa;AAC5C,WAAG,YAAYA;;AAEjB,kBAAY;AACZ,oBAAcA;;AAGhB,aAASC,WAAO;AACd,gBAAU,YAAY;AACtB,kBAAY;AACZ,oBAAc;;AAGhB,WAAO,EAAE,QAAMF,SAAE,SAAOE,SAAA;EAC1B;AAEA,WAAS,uBAAoB;AAC3B,QAAI,YAAgC;AACpC,QAAI,kBAA0B,CAAA;AAE9B,aAASF,QAAO,IAAiB,UAA2B;AAC1D,UAAI,cAAc,MAAM,UAAU,MAAM,KAAK,QAAQ;AAErD,UAAI,OAAO,aAAa,CAAC,cAAc,iBAAiB,WAAW,GAAG;AAEpE,iBAAoB,KAAA,GAAA,gBAAA,aAAA,KAAA,cAAA,QAAA,MAAa;AAA5B,cAAI,UAAO,cAAA,EAAA;AACd,aAAG,YAAY,OAAO;;AAExB,QAAAE,SAAO;;AAGT,kBAAY;AACZ,wBAAkB;;AAGpB,aAASA,WAAO;AACd,sBAAgB,QAAQC,cAAa;AACrC,wBAAkB,CAAA;AAClB,kBAAY;;AAGd,WAAO,EAAE,QAAMH,SAAE,SAAOE,SAAA;EAC1B;;;;AChFE,eAAAE,eACU,eAA0B;AAA1B,aAAA,gBAAA;AANF,aAAA,YAAY;AACZ,aAAA,UAAU;AACV,aAAA,cAA2C,CAAA;AAC3C,aAAA,YAAoB;;AAO5B,MAAAA,eAAA,UAAA,UAAA,SAAQ,OAAc;AACpB,aAAK,UAAU;AAEf,YAAI,CAAC,KAAK,SAAQ,GAAI;AACpB,eAAK,aAAY;AAEjB,cAAI,SAAS,MAAM;AACjB,iBAAK,SAAQ;iBACR;AACL,iBAAK,YAAY;;cACf,KAAK,SAAS,KAAK,IAAI;cACvB;YAAK;;;;AAMb,MAAAA,eAAA,UAAA,QAAA,SAAM,OAAU;AAAV,YAAA,UAAA,QAAA;AAAA,kBAAA;QAAU;AACR,YAAA,cAAgB,KAAI;AAE1B,oBAAY,KAAK,KAAK,YAAY,KAAK,KAAK,KAAK;AAEjD,aAAK,aAAY;;AAGnB,MAAAA,eAAA,UAAA,SAAA,SAAO,OAAY,OAAe;AAA3B,YAAA,UAAA,QAAA;AAAA,kBAAA;QAAU;AACT,YAAA,cAAgB,KAAI;AAE1B,YAAI,SAAS,aAAa;AACxB,cAAI,OAAO;AACT,mBAAO,YAAY,KAAK;iBACnB;AACL,wBAAY,KAAK,KAAK;AACtB,gBAAI,QAAQ,YAAY,KAAK;AAE7B,gBAAI,SAAS,GAAG;AACd,qBAAO,YAAY,KAAK;;;AAI5B,eAAK,SAAQ;;;AAIjB,MAAAA,eAAA,UAAA,WAAA,WAAA;AACE,eAAO,OAAO,KAAK,KAAK,WAAW,EAAE;;AAGvC,MAAAA,eAAA,UAAA,WAAA,WAAA;AACE,YAAI,CAAC,KAAK,aAAa,CAAC,KAAK,SAAQ,GAAI;AACvC,eAAK,YAAY;AAEjB,iBAAO,KAAK,SAAS;AACnB,iBAAK,UAAU;AACf,iBAAK,QAAO;;AAGd,eAAK,YAAY;;;AAIrB,MAAAA,eAAA,UAAA,QAAA,WAAA;AACE,aAAK,aAAY;AACjB,aAAK,UAAU;AACf,aAAK,cAAc,CAAA;;AAGb,MAAAA,eAAA,UAAA,eAAR,WAAA;AACE,YAAI,KAAK,WAAW;AAClB,uBAAa,KAAK,SAAS;AAC3B,eAAK,YAAY;;;AAIX,MAAAA,eAAA,UAAA,UAAV,WAAA;AACE,YAAI,KAAK,eAAe;AACtB,eAAK,cAAa;;;AAGxB,aAAAA;IAAA,EAAC;;ACxFD,MAAA;;IAAA,WAAA;AAKE,eAAAC,YACU,eACA,eAAgD;AADhD,aAAA,gBAAA;AACA,aAAA,gBAAA;AANF,aAAA,QAAgB,CAAA;AAQtB,aAAK,gBAAgB,IAAI,cAAc,KAAK,MAAM,KAAK,IAAI,CAAC;;AAG9D,MAAAA,YAAA,UAAA,UAAA,SAAQ,MAAY,OAAc;AAChC,aAAK,MAAM,KAAK,IAAI;AACpB,aAAK,cAAc,QAAQ,KAAK;;AAGlC,MAAAA,YAAA,UAAA,QAAA,SAAM,OAAc;AAClB,aAAK,cAAc,MAAM,KAAK;;AAGhC,MAAAA,YAAA,UAAA,SAAA,SAAO,OAAgB,OAAe;AACpC,aAAK,cAAc,OAAO,OAAO,KAAK;;AAGxC,MAAAA,YAAA,UAAA,QAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AAEpB,eAAO,MAAM,QAAQ;AACnB,cAAI,iBAAyB,CAAA;AAC7B,cAAI,OAAI;AAER,iBAAQ,OAAO,MAAM,MAAK,GAAK;AAC7B,iBAAK,QAAQ,IAAI;AACjB,2BAAe,KAAK,IAAI;;AAG1B,eAAK,QAAQ,cAAc;;;AAIrB,MAAAA,YAAA,UAAA,UAAV,SAAkB,MAAU;AAC1B,YAAI,KAAK,eAAe;AACtB,eAAK,cAAc,IAAI;;;AAIjB,MAAAA,YAAA,UAAA,UAAV,SAAkB,gBAAsB;AACtC,YAAI,KAAK,eAAe;AACtB,eAAK,cAAc,cAAc;;;AAGvC,aAAAA;IAAA,EAAC;;WC9Ce,WAAW,aAA0B,aAA0B,SAAgB;AAC7F,QAAIf;AAGJ,QAAI,iBAAiB,KAAK,YAAY,gBAAgB,GAAG;AACvD,MAAAA,SAAQ,YAAY;WACf;AACL,MAAAA,SAAQ,YAAY;;AAGtB,WAAO,QAAQ,YACbA,OAAM,OACNA,OAAM,KACN,gBAAgB,YAAY,eAAe,iBAAiB,WAAW,CAAC,GACxE;MACE,gBAAgB,YAAY;MAC5B,kBAAkB,YAAY;KAC/B;EAEL;AAIA,WAAS,iBAAiB,aAAwB;AAC1C,QAAA,mBAAqB,YAAW;AAEtC,QAAI,qBAAqB,QAAQ;AAC/B,aAAO,EAAE,MAAM,UAAS;;AAG1B,QAAI,qBAAqB,SAAS;AAChC,aAAO,EAAE,MAAM,WAAW,OAAO,OAAM;;AAGzC,QAAI,OAAO,cACT,YAAY,aAAa,OACzB,YAAY,aAAa,GAAG;AAG9B,QAAI,SAAS,QAAQ,OAAO,GAAG;AAE7B,aAAO,EAAE,MAAM,WAAW,OAAO,SAAS,KAAK,UAAS;;AAI1D,WAAO,EAAE,MAAM,WAAW,OAAO,QAAQ,KAAK,UAAS;EACzD;;;;ACqCE,eAAAgB,qBAAY,OAA+B;AAA3C,YAAA,QAAA;AA7BQ,aAAA,qBAAqB,QAAQ,KAAK,mBAAmB;AACrD,aAAA,yBAAyB,QAAQ,KAAK,uBAAuB;AAC7D,aAAA,qBAAqB,QAAQ,kBAAkB;AAC/C,aAAA,cAAc,QAAQ,WAAW;AACjC,aAAA,mBAAmB,sBAAqB;AACxC,aAAA,eAAe,QAAQ,YAAY;AACnC,aAAA,aAAa,QAAQ,UAAU;AAC/B,aAAA,gBAAgB,QAAQ,aAAa;AACrC,aAAA,iBAAiB,QAAQ,cAAc;AACvC,aAAA,4BAA4B,cAAc,yBAAyB;AACnE,aAAA,eAAe,QAAQ,YAAY;AACnC,aAAA,mBAAmB,cAAc,gBAAgB;AACjD,aAAA,uBAAuB,QAAQ,sBAAsB,YAAY;AACjE,aAAA,oBAAoB,QAAQ,iBAAiB;AAC7C,aAAA,4BAA4B,cAAc,yBAAyB;AACnE,aAAA,aAAa,QAAQ,UAAU;AAEhC,aAAA,UAAU,IAAI,QAAO;AACpB,aAAA,eAAe,IAAI,WAAW,KAAK,cAAc,KAAK,IAAI,GAAG,KAAK,WAAW,KAAK,IAAI,CAAC;AAKxF,aAAA,8BAA+C,CAAA;AAC9C,aAAA,gCAAyD,CAAA;AACzD,aAAA,0BAAuC,CAAA;AACvC,aAAA,4BAAiD,CAAA;AAClD,aAAA,iCAAsC,CAAA;AAmF7C,aAAA,iBAAiB,WAAA;AAAM,iBAAA,MAAK;QAAI;AAEhC,aAAA,WAAW,SAAC,QAAc;AACxB,gBAAK,aAAa,QAAQ,MAAM;;AAnFhC,aAAK,QAAQ;AACb,aAAK,aAAa,MAAK;AAEvB,YAAI,yBAA0C,CAAA;AAC9C,YAAI,cAAc,KAAK,mBACrB,MAAM,iBACN,wBACA,MAAM,WAAW;AAGnB,YAAI,kBAAkB,YAAY,gBAAgB,eAAe,YAAY,YAAY;AACzF,YAAI,kBAAkB,KAAK,uBACzB,iBACA,aACA,MAAM,iBACN,sBAAsB;AAKxB,cAAM,YAAY,qBAAqB;AACvC,aAAK,QAAQ,eAAe,MAAM,WAAW;AAC7C,aAAK,QAAQ,WAAW,gBAAgB,OAAO;AAE/C,YAAI,cAAc,eAAe,YAAY,iBAAiB,YAAY,OAAO;AACjF,YAAI,cAAc,gBAAgB,qBAAqB,MAAM,WAAW;AAExE,YAAI,CAAC,oBAAoB,YAAY,aAAa,WAAW,GAAG;AAC9D,wBAAc,YAAY,aAAa;;AAGzC,YAAI,kBAAmC;UACrC,SAAS,YAAY;UACrB,SAAS,YAAY;UACrB,aAAa,YAAY;UACzB,aAAa,MAAM;UACnB,UAAU,KAAK;UACf,SAAS,KAAK;UACd,gBAAgB,KAAK;;AAIvB,iBAAqB,KAAA,GAAA,KAAA,YAAY,YAAY,aAAxB,KAAA,GAAA,QAAA,MAAqC;AAArD,cAAIrB,YAAQ,GAAA,EAAA;AACf,UAAAA,UAAS,eAAe;;AAI1B,YAAI,eAAe,iBAAiB,YAAY,iBAAiB,aAAa,eAAe;AAE7F,YAAI,eAAyC;UAC3C;UACA;UACA;UACA;UACA,eAAe,KAAK,0BAA0B,eAAe;UAC7D;UACA,cAAc,CAAA;UACd,YAAY,sBAAqB;UACjC,sBAAsB,sBAAqB;UAC3C,eAAe;UACf,gBAAgB;UAChB,WAAW;UACX,aAAa;UACb,iBAAiB,KAAK,iBAAiB,eAAe,EAAE;;AAE1D,YAAI,kBAAejB,UAAAA,UAAA,CAAA,GAAQ,eAAe,GAAK,YAAY;AAE3D,iBAAoB,KAAA,GAAA,KAAA,YAAY,YAAY,UAAxB,KAAA,GAAA,QAAA,MAAkC;AAAjD,cAAI,UAAO,GAAA,EAAA;AACd,UAAAA,UAAS,cAAc,QAAQ,MAAM,MAAM,eAAe,CAAC;;AAG7D,YAAI,iBAAiB,cAAc,eAAe,GAAG;AACnD,eAAK,QAAQ,QAAQ,WAAW,IAAI;;AAGtC,aAAK,QAAQ;AACb,aAAK,WAAU;AACf,aAAK,aAAa,OAAM;;AAS1B,MAAAsC,qBAAA,UAAA,eAAA,SAAa,iBAAkC,QAAgB;AACvD,YAAA,QAAU,KAAI;AAEpB,cAAM,kBAAkB,iCACf,MAAM,eAAe,GAAK,eAAe,IAC9C;AAEJ,aAAK,aAAa,QAAQ;UACxB,MAAM;SACP;;AAGH,MAAAA,qBAAA,UAAA,gBAAA,SAAc,QAAc;AACtB,YAAA,KAA4B,MAA1B,QAAK,GAAA,OAAE,QAAK,GAAA,OAAE,UAAO,GAAA;AAE3B,YAAI,yBAAyB,6BAA6B,MAAM,wBAAwB,MAAM;AAC9F,YAAI,cAAc,KAAK,mBACrB,MAAM,iBACN,wBACA,MAAM,WAAW;AAGnB,YAAI,kBAAkB,eAAe,MAAM,iBAAiB,MAAM;AAClE,YAAI,kBAAkB,KAAK,uBACzB,iBACA,aACA,MAAM,iBACN,sBAAsB;AAKxB,cAAM,YAAY,qBAAqB;AACvC,gBAAQ,eAAe,MAAM,WAAW;AACxC,gBAAQ,WAAW,gBAAgB,OAAO;AAE1C,YAAI,kBAAmC;UACrC,SAAS,YAAY;UACrB,SAAS,YAAY;UACrB,aAAa,YAAY;UACzB,aAAa,MAAM;UACnB,UAAU,KAAK;UACf;UACA,gBAAgB,KAAK;;AAGjB,YAAA,cAA6B,MAAK,aAArB,cAAgB,MAAK;AAExC,YAAI,KAAK,QAAQ,KAAK,KAAK,yBAAyB,gBAAgB,sBAAsB;AACxF,wBAAc,gBAAgB,qBAAqB,MAAM,WAAW;;AAGtE,sBAAc,kBAAkB,aAAa,MAAM;AACnD,sBAAc,kBAAkB,aAAa,QAAQ,aAAa,gBAAgB,oBAAoB;AAEtG,YACE,OAAO,SAAS;QAChB,OAAO,SAAS;QAChB,CAAC,oBAAoB,YAAY,cAAc,WAAW,GAC1D;AACA,wBAAc,YAAY,aAAa;;AAGzC,YAAI,eAAe,mBAAmB,MAAM,cAAc,QAAQ,aAAa,eAAe;AAC9F,YAAI,aAAa,iBAAiB,MAAM,YAAY,QAAQ,cAAc,aAAa,eAAe;AACtG,YAAI,kBAAkB,2BAA2B,YAAY;AAE7D,YAAI,uBACD,mBAAmB,CAAC,gBAAgB,QAAQ,4BAC1C,MAAM,wBAAwB;;UAC/B;;AAEA,YAAA,KAAyC,KAAK,iBAAiB,eAAe,GAA5E,oBAAiB,GAAA,mBAAE,kBAAe,GAAA;AACxC,YAAI,kBAAkB,KAAK,qBAAqB,YAAY;AAC5D,YAAI,eAAe,KAAK,kBAAkB,qBAAqB,MAAM,mBAAmB,eAAe;AAEvG,YAAI,WAAqC;UACvC;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,eAAe,KAAK,0BAA0B,eAAe;UAC7D,eAAe,oBAAoB,MAAM,eAAe,MAAM;UAC9D,gBAAgB,oBAAoB,MAAM,gBAAgB,MAAM;UAChE,WAAW,gBAAgB,MAAM,WAAW,MAAM;UAClD,aAAa,kBAAkB,MAAM,aAAa,MAAM;;AAE1D,YAAI,kBAAetC,UAAAA,UAAA,CAAA,GAAQ,eAAe,GAAK,QAAQ;AAEvD,iBAAoB,KAAA,GAAA,KAAA,YAAY,YAAY,UAAxB,KAAA,GAAA,QAAA,MAAkC;AAAjD,cAAI,UAAO,GAAA,EAAA;AACd,UAAAA,UAAS,UAAU,QAAQ,OAAO,QAAQ,eAAe,CAAC;;AAG5D,YAAI,aAAa,iBAAiB,OAAO,eAAe;AACxD,YAAI,YAAY,iBAAiB,UAAU,eAAe;AAG1D,YAAI,CAAC,cAAc,WAAW;AAC5B,kBAAQ,QAAQ,WAAW,IAAI;mBACtB,cAAc,CAAC,WAAW;AACnC,kBAAQ,QAAQ,WAAW,KAAK;;AAGlC,aAAK,QAAQ;AAEb,YAAI,MAAM,UAAU;AAClB,gBAAM,SAAS,MAAM;;;AAIzB,MAAAsC,qBAAA,UAAA,aAAA,WAAA;AACM,YAAA,KAAmB,MAAjB,QAAK,GAAA,OAAE,QAAK,GAAA;AAClB,YAAI,UAAU,KAAK;AAEnB,YAAI,cAAc,KAAK,mBACrB,MAAM,iBACN,MAAM,wBACN,MAAM,WAAW;AAGnB,YAAI,kBAAkB,KAAK,uBACzB,MAAM,iBACN,aACA,MAAM,iBACN,MAAM,sBAAsB;AAG9B,YAAIC,QAAqB,KAAK,OAAIvC,UAAAA,UAAAA,UAAA,EAChC,WAAW,KAAK,WAAW,MAAM,aAAa,gBAAgB,SAAS,YAAY,OAAO,GAC1F,aAAa,MAAM,aACnB,UAAU,KAAK,UACf,SAAS,KAAK,SACd,gBAAgB,KAAK,eAAc,GAChC,WAAW,GACX,eAAe,GACf,KAAK;AAGV,YAAI,iBAAiB,YAAY,YAAY;AAC7C,YAAI,qBAAqB,WAAW,QAAQ;AAC5C,YAAI,qBAAqB,YAAY;AAErC,YAAI,sBAAsB,uBAAuB,oBAAoB;AACnE,cAAI,mBAAmB,aAAa,mBAAmB,UAAU;AAE/D,kBAAM,eAAeuC,MAAK,eAAe,8BAA8BA,MAAK,cAAc,MAAM,aAAaA,KAAI;AACjH,kBAAM,aAAaA,MAAK,aAAa,sBAAsBA,MAAK,YAAY,QAAQ,SAASA,MAAK,OAAO;;AAG3G,mBAAS,cAAc,gBAAgB;AACrC,gBAAI,mBAAmB,UAAU,MAAM,mBAAmB,UAAU,GAAG;AACrE,6BAAe,UAAU,EAAE,mBAAmB,UAAU,GAAGA,KAAI;;;;AAKrE,YAAI,MAAM,QAAQ;AAChB,gBAAM,OAAOA,KAAI;;;AAIrB,MAAAD,qBAAA,UAAA,sBAAA,SACE,iBACA,wBACA,aAAwB;AAIpB,YAAA,KAEA,KAAK,0BAA0B,iBAAiB,sBAAsB,GADxE,iBAAc,GAAA,gBAAE,cAAW,GAAA,aAAE,iBAAc,GAAA,gBAAE,sBAAmB,GAAA,qBAAE,QAAK,GAAA;AAGzE,2BAAmB,KAAK;AAExB,YAAI,UAAU,KAAK,aACjB,eAAe,UACf,eAAe,QACf,eAAe,uBACf,eAAe,UACf,eAAe,UACf,aACA,qBACA,eAAe,qBAAqB;AAGtC,YAAI,YAAY,KAAK,eAAe,YAAY,OAAO,iBAAiB,wBAAwB,cAAc;AAC9G,YAAI,QAAQ,KAAK,WAAW,gBAAgB,WAAW;AACvD,YAAI,gBAAgB,KAAK,cAAc,gBAAgB,iBAAiB,OAAO,WAAW,WAAW;AAErG,eAAO;UACL,iBAAiB;UACjB;UACA;UACA;UACA;UACA;UACA;UACA,qBAAqB,oBAAoB;;;AAK7C,MAAAA,qBAAA,UAAA,4BAAA,SAA0B,iBAAkC,wBAAuC;AAC7F,YAAA,KAAsB,gBAAgB;UACxC;UACA;UACA;SACD,GAJK,UAAO,GAAA,SAAE,SAAM,GAAA;AAKrB,YAAI,sBAAsB,KAAK,mBAAmB,OAAO;AACzD,YAAI,sBAAsB,oBAAoB;AAC9C,YAAI,iBAAiB,KAAK,YAAY,UAAU,oBAAoB,aAAa,mBAAmB,EAAE;AACtG,YAAI,cAAc,KAAK,iBAAiB,gBAAgB,WAAW,CAAA,GAAI,aAAa;AACpF,YAAI,WAAW,KAAK,iCAA8BtC,UAAAA,UAAAA,UAAAA,UAAAA,UAAA,CAAA,GAC7C,oBAAoB,GACpB,0BAA0B,GAC1B,wBAAwB,GACxB,YAAY,gBAAgB,GAC5B,YAAY,cAAc;AAE/B,YAAI,QAAQ,CAAA;AAEZ,YAAI,MAAM,gBAAgB;UACxB;UACA;UACA;UACA;SACD;AACD,YAAI,UAA2C,CAAA;AAC/C,YAAI,aAAa,KAAK;AACtB,YAAI,iBAAiB,KAAK;AAC1B,YAAI,aAAa;AAEjB,iBAAS,cAAc,KAAK;AAC1B,cAAI,eAAe,WAAW;AAC5B,gBACE,IAAI,UAAU,MAAM,WAAW,UAAU,KAEvC,2BAA2B,UAAU,KACpC,cAAc,cACf,2BAA2B,UAAU,EAAE,WAAW,UAAU,GAAG,IAAI,UAAU,CAAC,GAEhF;AACA,sBAAQ,UAAU,IAAI,eAAe,UAAU;uBACtC,SAAS,UAAU,GAAG;AAC/B,sBAAQ,UAAU,IAAI,SAAS,UAAU,EAAE,IAAI,UAAU,CAAC;AAC1D,2BAAa;mBACR;AACL,oBAAM,UAAU,IAAI,WAAW,UAAU;;;;AAK/C,YAAI,YAAY;AACd,eAAK,8BAA8B;AACnC,eAAK,gCAAgC;;AAGvC,eAAO;UACL,YAAY,KAAK;UACjB,gBAAgB,KAAK;UACrB;UACA;UACA;UACA;;;AAIJ,MAAAsC,qBAAA,UAAA,0BAAA,SACE,UACA,aACA,iBACA,wBAAuC;AAEvC,YAAI,WAAW,YAAY,UAAU,QAAQ;AAE7C,YAAI,CAAC,UAAU;AACb,gBAAM,IAAI,MAAM,eAAa,WAAQ,2EAA2E;;AAG9G,YAAA,KAA4B,KAAK,sBACnC,UACA,YAAY,aACZ,YAAY,gBACZ,iBACA,sBAAsB,GALlB,iBAAc,GAAA,gBAAE,QAAK,GAAA;AAQ3B,2BAAmB,KAAK;AAExB,YAAI,uBAAuB,KAAK,0BAA0B;UACxD,2BAA2B,SAAS,eAAe;UACnD,UAAU,SAAS;UACnB,cAAc,SAAS;UACvB,gBAAgB,SAAS,eAAe;UACxC,SAAS,YAAY;UACrB,aAAa,KAAK,MAAM;UACxB,aAAa,eAAe;UAC5B,aAAa,eAAe;UAC5B,qBAAqB,eAAe;UACpC,UAAU,eAAe;UACzB,eAAe,eAAe;UAC9B,eAAe,eAAe;UAC9B,YAAY,eAAe;UAC3B,UAAU,eAAe;UACzB,UAAU,eAAe;UACzB,iBAAiB,eAAe;UAChC,mBAAmB,eAAe;UAClC,WAAW,eAAe;UAC1B,gBAAgB,eAAe;SAChC;AAED,YAAI,UAAU,KAAK,aAAa,UAAU,KAAK,gBAAgB,YAAY,OAAO;AAElF,eAAO,EAAE,UAAU,SAAS,gBAAgB,sBAAsB,QAAO;;AAG3E,MAAAA,qBAAA,UAAA,wBAAA,SACE,UACA,aACA,gBACA,iBACA,wBAAuC;AAEvC,YAAI,MAAM,gBAAgB;UACxB;UACA,SAAS;UACT;UACA;UACA,SAAS;UACT;SACD;AACD,YAAI,WAAQtC,UAAAA,UAAAA,UAAAA,UAAAA,UAAAA,UAAA,CAAA,GACP,oBAAoB,GACpB,0BAA0B,GAC1B,wBAAwB,GACxB,oBAAoB,GACpB,YAAY,gBAAgB,GAC5B,YAAY,cAAc;AAE/B,YAAI,UAAuC,CAAA;AAC3C,YAAI,aAAa,KAAK;AACtB,YAAI,iBAAiB,KAAK;AAC1B,YAAI,aAAa;AACjB,YAAI,QAAQ,CAAA;AAEZ,iBAAS,cAAc,KAAK;AAC1B,cACE,IAAI,UAAU,MAAM,WAAW,UAAU,KACxC,2BAA2B,UAAU,KACpC,2BAA2B,UAAU,EAAE,IAAI,UAAU,GAAG,WAAW,UAAU,CAAC,GAChF;AACA,oBAAQ,UAAU,IAAI,eAAe,UAAU;iBAC1C;AACL,gBACE,IAAI,UAAU,MAAM,KAAK,4BAA4B,UAAU,KAC9D,2BAA2B,UAAU,KACpC,2BAA2B,UAAU,EAAE,IAAI,UAAU,GAAG,KAAK,4BAA4B,UAAU,CAAC,GACtG;AACA,kBAAI,cAAc,KAAK,+BAA+B;AACpD,wBAAQ,UAAU,IAAI,KAAK,8BAA8B,UAAU;;uBAE5D,SAAS,UAAU,GAAG;AAC/B,sBAAQ,UAAU,IAAI,SAAS,UAAU,EAAE,IAAI,UAAU,CAAC;mBACrD;AACL,oBAAM,UAAU,IAAI,IAAI,UAAU;;AAGpC,yBAAa;;;AAIjB,YAAI,YAAY;AACd,eAAK,0BAA0B;AAC/B,eAAK,4BAA4B;;AAGnC,eAAO;UACL,YAAY,KAAK;UACjB,gBAAgB,KAAK;UACrB;;;AAGN,aAAAsC;IAAA,EAAC;;AAED,WAAS,aACP,UACA,gBACA,uBACA,UACA,UACA,aACA,qBACA,kBAAwB;AAExB,QAAI,SAAS,YAAY,kBAAkB,oBAAoB,aAAa,oBAAoB,GAAG;AAEnG,WAAO,IAAI,QAAQ;MACjB,gBAAgB;MAChB;MACA,mBAAmB,YAAY;MAC/B;MACA;MACA;MACA;MACA,cAAc,YAAY;MAC1B;KACD;EACH;AAEA,WAAS,WAAWlD,UAAiC,aAAwB;AAC3E,QAAI,aAAa,YAAY,aAAaA,SAAQ,WAAW,KAAK;AAElE,WAAO,IAAI,WAAWA,QAAO;EAC/B;AAEA,WAAS,0BAA0B,OAAgC;AACjE,QAAI,4BAA4B,MAAM,6BAA6B;AAEnE,WAAO,IAAI,0BAA0B,KAAK;EAC5C;AAEA,WAAS,aAAa,MAAc,gBAAoC,SAAgB;AACtF,WAAO,IAAI,QAAQ,MAAM,gBAAgB,OAAO;EAClD;AAEA,WAAS,qBAAqB,cAA6B;AACzD,WAAO,QAAQ,cAAc,SAAC,aAAW;AAAK,aAAA,YAAY;IAAE,CAAA;EAC9D;AAEA,WAAS,kBAAkB,WAAyB,mBAA4B,iBAA4B;AAC1G,QAAI,eAA4B,EAAE,IAAI,kBAAiB;AAEvD,aAAS,SAAS,WAAW;AAC3B,UAAI,MAAM,UAAU,KAAK;AAEzB,UAAI,IAAI,YAAY,gBAAgB,IAAI,QAAQ,GAAG;AACjD,qBAAa,KAAK,IAAI,gBAAgB,IAAI,QAAQ;;;AAItD,WAAO;EACT;AAEA,WAAS,iBAAiB,iBAAgC;AAClD,QAAAA,WAAY,gBAAe;AAEjC,WAAO;MACL,mBAAmB,cACjB;QACE,SAASA,SAAQ;QACjB,UAAUA,SAAQ;QAClB,eAAeA,SAAQ;QACvB,kBAAkBA,SAAQ;QAC1B,YAAYA,SAAQ;QACpB,SAAS,OAAOA,SAAQ,iBAAiB,YAAYA,SAAQ,eAAe;QAC5E,OAAOA,SAAQ;QACf,iBAAiBA,SAAQ;QACzB,aAAaA,SAAQ;QACrB,WAAWA,SAAQ;QACnB,OAAOA,SAAQ;;SAGjB,eAAe;MAEjB,iBAAiB,cACf;QACE,YAAYA,SAAQ;QACpB,SAAS,OAAOA,SAAQ,kBAAkB,YAAYA,SAAQ,gBAAgB;QAC9E,OAAOA,SAAQ;SAEjB,eAAe;;EAGrB;AAEA,WAAS,iBAAiB,OAAiC,SAAwB;AACjF,aAA0B,KAAA,GAAA,KAAA,QAAQ,YAAY,gBAApB,KAAA,GAAA,QAAA,MAAoC;AAAzD,UAAI,gBAAa,GAAA,EAAA;AACpB,UAAI,cAAc,KAAK,GAAG;AACxB,eAAO;;;AAIX,WAAO;EACT;AAEA,WAAS,0BAA0B,iBAAgC;AACjE,WAAO,mBAAmB,gBAAgB,QAAQ,eAAe,eAAe;EAClF;AAEA,WAAS,mBAAmBA,UAAc,UAAiB;AACzD,aAAS,cAAcA,UAAS;AAC9B,cAAQ,KACN,qBAAmB,aAAU,OAC5B,WAAW,gBAAc,WAAQ,MAAM,GAAG;;EAGjD;;;;AC3pB0C,gBAAAoD,uBAAA,MAAA;AAGxC,eAAAA,sBAAY,OAAgC;AAA5C,YAAA,QACE,OAAA,KAAA,MAAM,KAAK,KAAC;AASd,cAAA,aAAa,SAACD,OAAkB;AAC9B,cAAI,CAAC,MAAK,aAAa;AAErB,kBAAK,QAAQA;iBACR;AACL,kBAAK,SAASA,KAAI;;;AAZpB,cAAK,cAAc,IAAI,oBAAoB;UACzC,iBAAiB,MAAM;UACvB,aAAa,MAAM;UACnB,QAAQ,MAAK;SACd;;;AAYH,MAAAC,sBAAA,UAAA,SAAA,WAAA;AACE,eAAO,KAAK,MAAM,SAAS,KAAK,KAAK;;AAGvC,MAAAA,sBAAA,UAAA,qBAAA,SAAmB,WAAoC;AACrD,YAAI,qBAAqB,KAAK,MAAM;AAEpC,YAAI,uBAAuB,UAAU,iBAAiB;AACpD,eAAK,YAAY,aAAa,kBAAkB;;;AAGtD,aAAAA;IAAA,EAjC0C,SAAS;;;;;AETjD,eAAAC,mBAAY,cAAoB;AAC9B,aAAK,eAAe;;AAMxB,aAAAA;IAAA,EAAC;;;;;ACqBD,eAAAC,gBAAA;AAEE,aAAA,cAAuB;AACvB,aAAA,iBAA0B;AAC1B,aAAA,WAAmB;AACnB,aAAA,cAAsB;AAEtB,aAAA,cAAwB,CAAA;AACxB,aAAA,iBAA+B,CAAA;AAC/B,aAAA,YAA2C,CAAA;;AAE3C,MAAAA,cAAA,UAAA,UAAA,SAAQ,QAAkB;AACxB,YAAI,gBAA4B,CAAA;AAEhC,iBAAkB,KAAA,GAAA,WAAA,QAAA,KAAA,SAAA,QAAA,MAAQ;AAArB,cAAI,QAAK,SAAA,EAAA;AACZ,eAAK,YAAY,OAAO,aAAa;;AAGvC,eAAO;;AAGT,MAAAA,cAAA,UAAA,cAAA,SAAY,OAAiB,eAAyB;AACpD,YAAI,YAAY,KAAK,cAAc,KAAK;AAExC,YAAI,KAAK,iBAAiB,WAAW,KAAK,GAAG;AAC3C,eAAK,cAAc,OAAO,SAAS;AACnC,iBAAO;;AAGT,eAAO,KAAK,uBAAuB,WAAW,OAAO,aAAa;;AAGpE,MAAAA,cAAA,UAAA,mBAAA,SAAiB,WAAyB,OAAe;AACvD,gBAAQ,KAAK,aAAa,MAAM,UAAU,aAAa,MAAM,aAAa,KAAK,cAC5E,KAAK,gBAAgB,MAAM,UAAU,WAAW,KAAK;;AAI1D,MAAAA,cAAA,UAAA,yBAAA,SAAuB,WAAyB,OAAiB,eAAyB;AACxF,YAAI,KAAK,kBAAkB,UAAU,eAAe;AAClD,iBAAO,KAAK,WAAW,OAAO,UAAU,eAAe,aAAa;;AAGtE,sBAAc,KAAK,KAAK;AACxB,eAAO;;AAGT,MAAAA,cAAA,UAAA,aAAA,SAAW,OAAiB,SAAmB,eAAyB;AACtE,YAAI,UAAU;AACd,YAAI,qBAAiC,CAAA;AACrC,YAAI,YAAY,MAAM;AACtB,YAAI,cAAc,QAAQ;AAE1B,YAAI,UAAU,QAAQ,YAAY,OAAO;AACvC,qBAAW,KAAK,YAAY;YAC1B,OAAO,MAAM;YACb,WAAW,MAAM;YACjB,MAAM,EAAE,OAAO,UAAU,OAAO,KAAK,YAAY,MAAK;aACrD,kBAAkB;;AAGvB,YAAI,UAAU,MAAM,YAAY,KAAK;AACnC,qBAAW,KAAK,YAAY;YAC1B,OAAO,MAAM;YACb,WAAW,MAAM;YACjB,MAAM,EAAE,OAAO,YAAY,KAAK,KAAK,UAAU,IAAG;aACjD,kBAAkB;;AAGvB,YAAI,SAAS;AACX,wBAAc,KAAI,MAAlB,eAAa,cAAA,CAAM;YACjB,OAAO,MAAM;YACb,WAAW,MAAM;YACjB,MAAM,eAAe,aAAa,SAAS;;WAC5C,GAAK,kBAAkB,CAAA;AACxB,iBAAO;;AAGT,sBAAc,KAAK,KAAK;AACxB,eAAO;;AAGT,MAAAA,cAAA,UAAA,gBAAA,SAAc,OAAiB,WAAuB;AAChD,YAAA,KAAkC,MAAhC,iBAAc,GAAA,gBAAE,cAAW,GAAA;AAEjC,YAAI,UAAU,YAAY,IAAI;AAE5B,mBAAS,aAAa,UAAU,OAAO,UAAU,UAAU;AAC3D,mBAAS,gBAAgB,UAAU,OAAO,CAAC,KAAK,CAAC;eAC5C;AAEL,mBAAS,eAAe,UAAU,KAAK,GAAG,UAAU,SAAS,KAAK;;AAGpE,aAAK,UAAU,cAAc,KAAK,CAAC,IAAI,UAAU;;AAGnD,MAAAA,cAAA,UAAA,gBAAA,SAAc,UAAkB;AAC1B,YAAA,KAA0D,MAAxD,cAAW,GAAA,aAAE,iBAAc,GAAA,gBAAE,cAAW,GAAA,aAAE,YAAS,GAAA;AACzD,YAAI,WAAW,YAAY;AAC3B,YAAI,iBAAiB;AACrB,YAAI,gBAAwB;AAC5B,YAAI,kBAA0B;AAC9B,YAAI,gBAA0B;AAC9B,YAAI,WAAW;AAEf,iBAAS,gBAAgB,GAAG,gBAAgB,UAAU,iBAAiB,GAAG;AACxE,cAAI,gBAAgB,YAAY,aAAa;AAI7C,cAAI,CAAC,eAAe,iBAAiB,iBAAiB,SAAS,WAAW;AACxE;;AAGF,cAAI,kBAAkB,eAAe,aAAa;AAClD,cAAI,gBAAa;AACjB,cAAI,YAAYC,cAAa,iBAAiB,SAAS,KAAK,OAAO,eAAe;AAClF,cAAI,eAAe,UAAU,CAAC,IAAI,UAAU,CAAC;AAE7C;;aACG,gBAAgB,gBAAgB,YAAY;YAC7C,cAAc,KAAK,QAAQ,SAAS,KAAK;YACzC;AACA,gBAAI,sBAAsB,gBAAgB,cAAc;AAExD,gBAAI,sBAAsB,gBAAgB;AACxC,+BAAiB;AACjB,8BAAgB;AAChB,8BAAgB;AAChB,gCAAkB;;AAGpB,gBAAI,wBAAwB,gBAAgB;AAE1C,yBAAW,KAAK,IAAI,UAAU,UAAU,cAAc,aAAa,CAAC,IAAI,CAAC;;AAE3E,4BAAgB;;;AAKpB,YAAI,YAAY;AAChB,YAAI,eAAe;AACjB,sBAAY,gBAAgB;AAC5B,iBAAO,YAAY,YAAY,YAAY,SAAS,IAAI,gBAAgB;AACtE,yBAAa;;;AAKjB,YAAI,cAAc;AAClB,YAAI,YAAY,YAAY,YAAY,SAAS,MAAM,gBAAgB;AACrE,wBAAcA,cAAa,eAAe,SAAS,GAAG,SAAS,KAAK,KAAK,eAAe,EAAE,CAAC;;AAG7F,eAAO;UACL;UACA;UACA;UACA;UACA,YAAY;UACZ,OAAO;UACP,SAAS;;;AAKb,MAAAD,cAAA,UAAA,UAAA,WAAA;AACM,YAAA,KAAkC,MAAhC,iBAAc,GAAA,gBAAE,cAAW,GAAA;AACjC,YAAI,WAAW,eAAe;AAC9B,YAAI,QAAmB,CAAA;AAEvB,iBAAS,QAAQ,GAAG,QAAQ,UAAU,SAAS,GAAG;AAChD,cAAI,UAAU,eAAe,KAAK;AAClC,cAAI,aAAa,YAAY,KAAK;AAElC,mBAAkB,KAAA,GAAA,YAAA,SAAA,KAAA,UAAA,QAAA,MAAS;AAAtB,gBAAI,QAAK,UAAA,EAAA;AACZ,kBAAM,KAAIE,UAAAA,UAAA,CAAA,GAAM,KAAK,GAAA,EAAE,WAAU,CAAA,CAAA;;;AAIrC,eAAO;;AAEX,aAAAF;IAAA,EAAC;;WAEe,gBAAgB,OAAe;AAC7C,WAAO,MAAM,KAAK;EACpB;WAEgB,cAAc,OAAe;AAC3C,WAAO,MAAM,QAAQ,MAAM,MAAM,KAAK;EACxC;WAsCgB,eAAe,OAAgB,OAAc;AAC3D,QAAIG,SAAQ,KAAK,IAAI,MAAM,OAAO,MAAM,KAAK;AAC7C,QAAIC,OAAM,KAAK,IAAI,MAAM,KAAK,MAAM,GAAG;AAEvC,QAAID,SAAQC,MAAK;AACf,aAAO,EAAE,OAAKD,QAAE,KAAGC,KAAA;;AAGrB,WAAO;EACT;AAKA,WAAS,SAAe,KAAaC,QAAe,MAAU;AAC5D,QAAI,OAAOA,QAAO,GAAG,IAAI;EAC3B;WAEgBC,cACdC,IACA,WACA,YAAkC;AAElC,QAAI,aAAa;AACjB,QAAI,WAAWA,GAAE;AAEjB,QAAI,CAAC,YAAY,YAAY,WAAWA,GAAE,UAAU,CAAC,GAAG;AACtD,aAAO,CAAC,GAAG,CAAC;;AAEd,QAAI,YAAY,WAAWA,GAAE,WAAW,CAAC,CAAC,GAAG;AAC3C,aAAO,CAAC,UAAU,CAAC;;AAGrB,WAAO,aAAa,UAAU;AAC5B,UAAI,cAAc,KAAK,MAAM,cAAc,WAAW,cAAc,CAAC;AACrE,UAAI,YAAY,WAAWA,GAAE,WAAW,CAAC;AAEzC,UAAI,YAAY,WAAW;AACzB,mBAAW;iBACF,YAAY,WAAW;AAChC,qBAAa,cAAc;aACtB;AACL,eAAO,CAAC,aAAa,CAAC;;;AAI1B,WAAO,CAAC,YAAY,CAAC;EACvB;;;;AC7SE,eAAAC,aAAY,UAA6B;AACvC,aAAK,YAAY,SAAS;AAC1B,aAAK,oBAAoB,SAAS,qBAAqB;;AAGzD,MAAAA,aAAA,UAAA,UAAA,WAAA;;AAEF,aAAAA;IAAA,EAAC;;WAmBe,yBAAyB,WAA+B,OAA+B;AACrG,WAAO;MACL;MACA,IAAI,MAAM;MACV,gBAAgB,MAAM,kBAAkB,OAAO,MAAM,iBAAiB;MACtE,mBAAmB,MAAM,qBAAqB;;EAElD;WAEgB,2BAA2B,UAA6B;;AACtE,WAAA,KAAA,CAAA,GACE,GAAC,SAAS,UAAU,GAAG,IAAG;EAE9B;MAGa,2BAAqD,CAAA;;;;AC/BhE,eAAAC,iBAAY,IAAiB,UAAiB;AAC5C,aAAK,UAAU,IAAI,QAAO;;AAG5B,MAAAA,iBAAA,UAAA,UAAA,WAAA;;AAMA,MAAAA,iBAAA,UAAA,qBAAA,SAAmB,MAAa;;AAIhC,MAAAA,iBAAA,UAAA,uBAAA,SAAqB,MAAa;;AAIlC,MAAAA,iBAAA,UAAA,uBAAA,SAAqB,MAAa;;AAGpC,aAAAA;IAAA,EAAC;;MCrCY,SAAS,CAAA;ACMtB,MAAM,qBAAqB;IACzB,WAAW;IACX,UAAU;IACV,QAAQ;IACR,UAAU;;WAeI,cAAc,KAAkB;AAC1C,QAAA,KAAqB,YAAY,KAAK,kBAAkB,GAAtD,UAAO,GAAA,SAAE,QAAK,GAAA;AAEpB,WAAO;MACL,WAAW,QAAQ,aAAa;MAChC,UAAU,QAAQ,YAAY;MAC9B,QAAQ,QAAQ,UAAU,OAAO,QAAQ,SAAS;MAClD,UAAU,QAAQ;MAClB,eAAe;;EAEnB;ACnBA,MAAA;;IAAA,SAAA,QAAA;AAAoC,gBAAAC,iBAAA,MAAA;AAApC,eAAAA,kBAAA;;;AACE,MAAAA,gBAAA,UAAA,SAAA,WAAA;AAAA,YAAA,QAAA;AACE,YAAI,WAAW,KAAK,MAAM,aAAa,IAAI,SAAC,aAAW;AAAK,iBAAA,MAAK,kBAAkB,WAAW;QAAC,CAAA;AAE/F,eAAOC,eAAa,MAAA,QAAA,cAAA,CAAC,OAAO,EAAE,WAAW,mBAAkB,CAAE,GAAK,QAAQ,CAAA;;AAG5E,MAAAD,gBAAA,UAAA,oBAAA,SAAkB,aAA4B;AACtC,YAAA,QAAU,KAAI;AACd,YAAA,QAAU,KAAK,QAAO;AAC5B,YAAI,WAAoB,CAAA;AACxB,YAAI,gBAAgB;AAEpB,iBAAmB,KAAA,GAAA,gBAAA,aAAA,KAAA,cAAA,QAAA,MAAa;AAA3B,cAAI,SAAM,cAAA,EAAA;AACP,cAAA,aAAgE,OAAM,YAA1D,cAAoD,OAAM,aAA7C,aAAuC,OAAM,YAAjC,aAA2B,OAAM,YAArB,aAAe,OAAM;AAE5E,cAAI,eAAe,SAAS;AAC1B,4BAAgB;AAChB,qBAAS,KACPC,eAAA,MAAA,EAAI,WAAU,oBAAmB,IAAI,MAAM,QAAO,GAAG,MAAM,KAAK,CAAM;iBAEnE;AACL,gBAAI,YAAY,eAAe,MAAM;AACrC,gBAAIC,cACD,CAAC,MAAM,kBAAkB,eAAe,WACxC,CAAC,MAAM,iBAAiB,eAAe,UACvC,CAAC,MAAM,iBAAiB,eAAe;AAE1C,gBAAI,gBAAgB,CAAC,QAAM,aAAU,WAAW,MAAM,SAAS,QAAQ,CAAC;AACxE,gBAAI,WAAW;AACb,4BAAc,KAAK,MAAM,SAAS,cAAc,CAAC;;AAGnD,qBAAS,KACPD,eAAA,UAAA,EACE,MAAK,UACL,OAAO,OAAO,eAAe,aAAa,WAAW,MAAM,OAAO,IAAI,YACtE,UAAUC,aAAU,gBACN,WACd,WAAW,cAAc,KAAK,GAAG,GACjC,SAAS,YAAW,GAEnB,eAAe,aAAaD,eAAA,QAAA,EAAM,WAAW,WAAU,CAAA,IAAO,GAAG,CAC3D;;;AAKf,YAAI,SAAS,SAAS,GAAG;AACvB,cAAI,iBAAkB,iBAAiB,MAAM,SAAS,aAAa,KAAM;AAEzE,iBAAOA,eAAa,MAAA,QAAA,cAAA,CAAC,OAAO,EAAE,WAAW,eAAc,CAAE,GAAK,QAAQ,CAAA;;AAExE,eAAO,SAAS,CAAC;;AAErB,aAAAD;IAAA,EAvDoCG,cAAa;;ACPjD,MAAA;;IAAA,SAAA,QAAA;AAA6B,gBAAAC,UAAA,MAAA;AAA7B,eAAAA,WAAA;;;AACE,MAAAA,SAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAA4B,KAAK,OAA/B,QAAK,GAAA,OAAE,iBAAc,GAAA;AAC3B,YAAI,WAAW;AACf,YAAI;AACJ,YAAI;AACJ,YAAI,iBAAiB,MAAM;AAC3B,YAAI,gBAAgB,eAAe;AAEnC,YAAI,eAAe,MAAM;AACvB,qBAAW;AACX,yBAAe,eAAe;eACzB;AACL,yBAAe,eAAe;;AAGhC,YAAI,eAAe,OAAO;AACxB,qBAAW;AACX,uBAAa,eAAe;eACvB;AACL,uBAAa,eAAe;;AAG9B,YAAI,aAAa;UACf,kBAAkB;UAClB;UACA,WAAW,mBAAmB;;AAGhC,eACEH;UAAA;UAAA,EAAK,WAAW,WAAW,KAAK,GAAG,EAAC;UACjC,KAAK,cAAc,SAAS,gBAAgB,CAAA,CAAE;UAC9C,KAAK,cAAc,UAAU,iBAAiB,CAAA,CAAE;UAChD,KAAK,cAAc,OAAO,cAAc,CAAA,CAAE;QAAC;;AAKlD,MAAAG,SAAA,UAAA,gBAAA,SAAcC,MAAa,cAA+B;AAClD,YAAA,QAAU,KAAI;AAEpB,eACEJ,eAAC,gBAAc,EACb,KAAKI,MACL,cACA,OAAO,MAAM,OACb,SAAS,MAAM,SACf,cAAc,MAAM,cACpB,gBAAgB,MAAM,gBACtB,eAAe,MAAM,eACrB,eAAe,MAAM,eACrB,SAAS,MAAM,QAAO,CAAA;;AAI9B,aAAAD;IAAA,EAvD6BD,cAAa;;ACO1C,MAAA;;IAAA,SAAA,QAAA;AAAmC,gBAAAG,gBAAA,MAAA;AAAnC,eAAAA,iBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AAGE,cAAA,QAA4B;UAC1B,gBAAgB;;AAkDlB,cAAA,WAAW,SAAC,IAAsB;AAChC,gBAAK,KAAK;AACV,iBAAO,MAAK,MAAM,OAAO,EAAE;AAC3B,gBAAK,qBAAoB;;AAG3B,cAAA,eAAe,WAAA;AACb,gBAAK,qBAAoB;;;;AAtD3B,MAAAA,eAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAmB,MAAjB,QAAK,GAAA,OAAE,QAAK,GAAA;AACZ,YAAA,cAAgB,MAAK;AAE3B,YAAI,aAAa;UACf;UACC,eAAe,MAAM,UAAU,MAAM,SAClC,2BACA;;;AAEN,YAAIC,UAAsB;AAC1B,YAAI,gBAA6B;AAEjC,YAAI,aAAa;AACf,cAAI,MAAM,mBAAmB,MAAM;AACjC,YAAAA,UAAS,MAAM,iBAAiB;iBAC3B;AAKL,4BAAoB,IAAI,cAAe,MAAG;;eAEvC;AACL,UAAAA,UAAS,MAAM,UAAU;;AAG3B,eACEN,eAAA,OAAA,EAAA,mBACmB,MAAM,aACvB,KAAK,KAAK,UACV,WAAW,WAAW,KAAK,GAAG,GAC9B,OAAO,EAAE,QAAMM,SAAE,cAAa,EAAE,GAE/B,MAAM,QAAQ;;AAKrB,MAAAD,eAAA,UAAA,oBAAA,WAAA;AACE,aAAK,QAAQ,iBAAiB,KAAK,YAAY;;AAGjD,MAAAA,eAAA,UAAA,uBAAA,WAAA;AACE,aAAK,QAAQ,oBAAoB,KAAK,YAAY;;AAapD,MAAAA,eAAA,UAAA,uBAAA,WAAA;AACE,YACE,KAAK;QACL,KAAK,MAAM,aACX;AACA,eAAK,SAAS,EAAE,gBAAgB,KAAK,GAAG,YAAW,CAAE;;;AAG3D,aAAAA;IAAA,EAxEmCH,cAAa;;ACDhD,MAAA;;IAAA,SAAA,QAAA;AAAmC,gBAAAK,gBAAA,MAAA;AACjC,eAAAA,eAAY,UAA6B;AAAzC,YAAA,QACE,OAAA,KAAA,MAAM,QAAQ,KAAC;AAUjB,cAAA,iBAAiB,SAAC,IAAW,OAAkB;AACvC,cAAA,YAAc,MAAI;AAClB,cAAA,UAAY,UAAS;AAC3B,cAAI,MAAM,SAAS,KAAK;AAExB,cACE;UACA,UAAU,iBAAiB,GAAG,MAAqB,GACnD;AAGA,gBAAI,kBAAkB,eAAe,GAAG,QAAuB,sBAAsB;AACrF,gBAAI,MAAM,kBAAmB,gBAAgB,cAAc,SAAS,EAAU,OAAO;AAErF,oBAAQ,QAAQ,QAAQ,cAAc;cACpC,IAAI;cACJ,OAAO,IAAI,SACT,UAAU,SACV,IAAI,WAAW,KACf,IAAI,WAAW,QAAQ;cAEzB,SAAS;cACT,MAAM,QAAQ;aACE;AAElB,gBAAI,OAAO,CAAC,GAAG,kBAAkB;AAC/B,qBAAO,SAAS,OAAO;;;;AAlC3B,cAAK,UAAU;UACb,SAAS;UACT;UACA;;UACA,MAAK;QAAc;;;AAkCzB,aAAAA;IAAA,EA1CmCV,YAAW;;ACA9C,MAAA;;IAAA,SAAA,QAAA;AAAmC,gBAAAW,gBAAA,MAAA;AAKjC,eAAAA,eAAY,UAA6B;AAAzC,YAAA,QACE,OAAA,KAAA,MAAM,QAAQ,KAAC;AAejB,cAAA,sBAAsB,SAAC,IAAe;AACpC,cAAI,OAAO,MAAK,cAAc;AAC5B,kBAAK,eAAe,MAAM,MAAK,YAAY;;;AAI/C,cAAA,iBAAiB,SAAC,IAAW,OAAkB;AAC7C,cAAI,SAAS,KAAK,GAAG;AACnB,kBAAK,eAAe;AACpB,kBAAK,aAAa,mBAAmB,IAAI,KAAK;;;AAIlD,cAAA,iBAAiB,SAAC,IAAkB,OAAkB;AACpD,cAAI,MAAK,cAAc;AACrB,kBAAK,eAAe;AACpB,kBAAK,aAAa,mBAAmB,IAAI,KAAK;;;AA7BhD,cAAK,uBAAuB;UAC1B,SAAS;UACT;;UACA,MAAK;UACL,MAAK;QAAc;;;AAIvB,MAAAA,eAAA,UAAA,UAAA,WAAA;AACE,aAAK,qBAAoB;;AAwB3B,MAAAA,eAAA,UAAA,eAAA,SAAa,cAAqD,IAAkB,OAAkB;AAC9F,YAAA,YAAc,KAAI;AAClB,YAAA,UAAY,UAAS;AAC3B,YAAI,MAAM,SAAS,KAAK;AAExB,YAAI,CAAC,MAAM,UAAU,iBAAiB,GAAG,MAAqB,GAAG;AAC/D,kBAAQ,QAAQ,QAAQ,cAAc;YACpC,IAAI;YACJ,OAAO,IAAI,SACT,SACA,IAAI,WAAW,KACf,IAAI,WAAW,QAAQ;YAEzB,SAAS;YACT,MAAM,QAAQ;WACK;;;AAG3B,aAAAA;IAAA,EA3DmCX,YAAW;;;;;ACiBT,gBAAAY,kBAAA,MAAA;AAArC,eAAAA,mBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,mBAAmB,QAAQ,gBAAgB;AAC3C,cAAA,4BAA4B,QAAQ,yBAAyB;AAC7D,cAAA,oBAAoB,QAAQ,iBAAiB;AAC7C,cAAA,YAAY,UAAS;AACrB,cAAA,YAAY,UAAS;AACrB,cAAA,oBAA+D,CAAA;AAIvE,cAAA,QAAQ;UACN,aAAa,eAAc;;AAwK7B,cAAA,+BAA+B,SAAC,WAA+B,eAAuC;AACpG,cAAI,WAAW,yBAAyB,WAAW,aAAa;AAChE,cAAI,uBAA2C;YAC7C;YACA;;AAEF,cAAI,qBAAyC,qBAAqB,OAChE,MAAK,MAAM,YAAY,qBAAqB;AAE9C,cAAI,eAAe,mBAAmB,IAAI,SAAC,qBAAmB;AAAK,mBAAA,IAAI,oBAAoB,QAAQ;UAAC,CAAA;AAEpG,gBAAK,kBAAkB,UAAU,GAAG,IAAI;AACxC,mCAAyB,UAAU,GAAG,IAAI;;AAG5C,cAAA,iCAAiC,SAAC,WAA6B;AAC7D,cAAI,YAAY,MAAK,kBAAkB,UAAU,GAAG;AAEpD,cAAI,WAAW;AACb,qBAAqB,KAAA,GAAA,cAAA,WAAA,KAAA,YAAA,QAAA,MAAW;AAA3B,kBAAI,WAAQ,YAAA,EAAA;AACf,uBAAS,QAAO;;AAElB,mBAAO,MAAK,kBAAkB,UAAU,GAAG;;AAG7C,iBAAO,yBAAyB,UAAU,GAAG;;AAM/C,cAAA,eAAe,IAAI,cAAc,WAAA;AAC/B,gBAAK,MAAM,QAAQ,QAAQ,WAAW,IAAI;AAC1C,gBAAK,MAAM,QAAQ,QAAQ,gBAAgB,EAAE,MAAM,MAAK,MAAM,QAAO,CAAE;SACxE;AAED,cAAA,qBAAqB,SAAC,IAAW;AACzB,cAAAC,WAAY,MAAK,MAAK;AAE5B,cACEA,SAAQ,sBACR,GAAG,WAAW,QACd;AACA,kBAAK,aAAa,QAAQA,SAAQ,iBAAiB;;;;;AA7MvD,MAAAD,iBAAA,UAAA,SAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AACd,YAAA,gBAA2B,MAAK,eAAjBC,WAAY,MAAK;AAEtC,YAAI,eAAe,KAAK;UACtB,MAAM;UACN,MAAM;UACN,MAAM;UACN,MAAM;UACN,OAAO,MAAM,QAAQ,KAAK,MAAM,OAAO;;UACvC,MAAM;QAAS;AAGjB,YAAI,YAAY;AAChB,YAAI,aAA8B;AAClC,YAAI;AAEJ,YAAI,MAAM,gBAAgB,MAAM,UAAU;AACxC,uBAAa;mBACJA,SAAQ,UAAU,MAAM;AACjC,sBAAY;mBACHA,SAAQ,iBAAiB,MAAM;AACxC,uBAAaA,SAAQ;eAChB;AACL,4BAAkB,KAAK,IAAIA,SAAQ,aAAa,GAAG;;AAGrD,YAAI,cAAc,KAAK,iBACrB,MAAM,UACN,MAAM,SACN,MAAM,SACN,MAAM,sBACN,MAAM,SACN,MAAM,OACN,MAAM,aACN,MAAM,UACN,MAAM,gBACN,MAAM,SACN,MAAM,aACN,KAAK,8BACL,KAAK,8BAA8B;AAGrC,YAAI,cAAe,cAAc,UAAU,cAAc,OAAO,WAC5D,KAAK,MAAM,cACX;AAEJ,eACEV;UAAC,gBAAgB;UAAQ,EAAC,OAAO,YAAW;UACzC,cAAc,UACbA,eAAC,SAAOW,UAAA,EACN,KAAK,KAAK,WACV,gBAAe,qBACf,OAAO,cAAc,QACrB,SAAS,YAAW,GAChB,YAAY,CAAA;UAGpBX;YAAC;YAAa,EACZ,QAAQ,WACR,QAAQ,YACR,aAAa,iBACb,aAAa,YAAW;YAEvB,KAAK,WAAW,KAAK;YACrB,KAAK,mBAAkB;UAAE;UAE3B,cAAc,UACbA,eAAC,SAAOW,UAAA,EACN,KAAK,KAAK,WACV,gBAAe,qBACf,OAAO,cAAc,QACrB,SAAQ,GAAE,GACN,YAAY,CAAA;QAEnB;;AAKP,MAAAF,iBAAA,UAAA,oBAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AAEpB,aAAK,uBAAuB,MAAM,YAAY,qBAC3C,IAAI,SAAC,0BAAwB;AAAK,iBAAA,IAAI,yBAAyB,KAAK;QAAC,CAAA;AAExE,eAAO,iBAAiB,UAAU,KAAK,kBAAkB;AAEnD,YAAA,kBAAoB,MAAM,YAAW;AAC3C,iBAAS,YAAY,iBAAiB;AACpC,0BAAgB,QAAQ,EAAE,MAAM,QAAQ,GAAG,KAAK;;;AAIpD,MAAAA,iBAAA,UAAA,qBAAA,SAAmB,WAA+B;AAC1C,YAAA,QAAU,KAAI;AAEd,YAAA,kBAAoB,MAAM,YAAW;AAC3C,iBAAS,YAAY,iBAAiB;AACpC,cAAI,MAAM,QAAQ,MAAM,UAAU,QAAQ,GAAG;AAC3C,4BAAgB,QAAQ,EAAE,MAAM,QAAQ,GAAG,KAAK;;;;AAKtD,MAAAA,iBAAA,UAAA,uBAAA,WAAA;AACE,eAAO,oBAAoB,UAAU,KAAK,kBAAkB;AAC5D,aAAK,aAAa,MAAK;AAEvB,iBAAwB,KAAA,GAAA,KAAA,KAAK,sBAAL,KAAA,GAAA,QAAA,MAA2B;AAA9C,cAAI,cAAW,GAAA,EAAA;AAClB,sBAAY,QAAO;;AAGrB,aAAK,MAAM,QAAQ,QAAQ,UAAU;;AAGvC,MAAAA,iBAAA,UAAA,qBAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AAEpB,YAAI,WAAW,MAAM,YAAY,qBAAqB,IACpD,SAAC,oBAAkB;AAAK,iBAAA,mBAAmB,KAAK;QAAC,CAAA;AAGnD,eAAOT,eAAa,MAAA,QAAA,cAAA,CAACY,WAAU,CAAA,CAAE,GAAK,QAAQ,CAAA;;AAGhD,MAAAH,iBAAA,UAAA,aAAA,SAAW,OAA2B;AAC9B,YAAA,cAAgB,MAAK;AACrB,YAAA,WAAa,MAAK;AAExB,YAAI,YAAuB;UACzB,aAAa,MAAM;UACnB,eAAe,MAAM;UACrB,YAAY,MAAM;UAClB,cAAc,MAAM;UACpB,eAAe,MAAM;UACrB,gBAAgB,MAAM;UACtB,WAAW,MAAM;UACjB,aAAa,MAAM;UACnB,cAAc,MAAM;UACpB,UAAU,MAAM;;AAGlB,YAAI,eAAe,KAAK,0BAA0B,YAAY,qBAAqB;AAEnF,iBAAwB,KAAA,GAAA,iBAAA,cAAA,KAAA,eAAA,QAAA,MAAc;AAAjC,cAAI,cAAW,eAAA,EAAA;AAClB,UAAAE,UACE,WACA,YAAY,UAAU,WAAW,KAAK,CAAC;;AAI3C,YAAI,gBAAgB,SAAS;AAE7B,eACEX,eAAC,eAAaW,UAAA,CAAA,GAAK,SAAS,CAAA;;AAqDlC,aAAAF;IAAA,EAjOqC,aAAa;;AAmOlD,WAAS,kBACP,UACA,aACA,sBACA,aACAI,MACA,OAAa;AAGb,QAAI,YAAY,qBAAqB,MAAMA,MAAK,QAAW,KAAK;AAChE,QAAI,WAAW,qBAAqB,UAAU,aAAa,aAAa,KAAK;AAC7E,QAAI,WAAW,qBAAqB,UAAU,aAAa,aAAa,KAAK;AAE7E,WAAO;MACL;MACA,cAAc,SAAS;MACvB,SAAS,SAAS;MAClB,gBAAgB,UAAU,WAAW,CAAC,oBAAoB,YAAY,cAAcA,IAAG;MACvF,eAAe,SAAS;MACxB,eAAe,SAAS;;EAE5B;AAKA,WAAS,0BAA0B,YAAuC;AACxE,WAAO,WAAW,IAAI,SAAC,UAAQ;AAAK,aAAA,IAAI,SAAQ;IAAE,CAAA;EACpD;;;;AC9QkC,gBAAAC,eAAA,MAAA;AAAlC,eAAAA,gBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,QAAQ;UACN,UAAU;;AAqCZ,cAAA,oBAAoB,WAAA;AAClB,gBAAK,SAAS,EAAE,UAAU,KAAI,CAAE;;AAGlC,cAAA,mBAAmB,WAAA;AACjB,gBAAK,SAAS,EAAE,UAAU,MAAK,CAAE;;;;AAvCnC,MAAAA,cAAA,UAAA,SAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AACd,YAAAJ,WAAY,MAAK;AACjB,YAAA,WAAa,KAAK,MAAK;AAE7B,YAAI,eAAe,YAAYA,SAAQ,WAAW,UAAUA,SAAQ,kBAAkB;AACtF,YAAIJ,UAAU,CAAC,gBAAgBI,SAAQ,UAAU,OAAQA,SAAQ,SAAS;AAE1E,YAAI,aAAuB;UACzB;UACA,WAAW,mBAAmB;UAC9B,kBAAgBA,SAAQ;UACxB,MAAM,MAAM,SAAS,MAAM;;AAG7B,YAAI,CAAC,sBAAqB,GAAI;AAC5B,qBAAW,KAAK,gBAAgB;;AAGlC,eAAO,MAAM,SAAS,YAAYJ,SAAQ,cAAc,QAAQ;;AAGlE,MAAAQ,cAAA,UAAA,oBAAA,WAAA;AACQ,YAAA,UAAY,KAAK,MAAK;AAC5B,gBAAQ,GAAG,gBAAgB,KAAK,iBAAiB;AACjD,gBAAQ,GAAG,eAAe,KAAK,gBAAgB;;AAGjD,MAAAA,cAAA,UAAA,uBAAA,WAAA;AACQ,YAAA,UAAY,KAAK,MAAK;AAC5B,gBAAQ,IAAI,gBAAgB,KAAK,iBAAiB;AAClD,gBAAQ,IAAI,eAAe,KAAK,gBAAgB;;AAUpD,aAAAA;IAAA,EA9CkCZ,cAAa;;WChB/B,4BAA4B,sBAA+B,QAAc;AAGvF,QAAI,CAAC,wBAAwB,SAAS,IAAI;AACxC,aAAO,gBAAgB,EAAE,SAAS,QAAO,CAAE;;AAG7C,QAAI,SAAS,GAAG;AACd,aAAO,gBAAgB,EAAE,SAAS,SAAS,OAAO,WAAW,KAAK,WAAW,YAAY,KAAI,CAAE;;AAGjG,WAAO,gBAAgB,EAAE,SAAS,OAAM,CAAE;EAC5C;ACbO,MAAM,aAAa;WAEVa,cAAY,WAA8B;AACxD,WAAO,UAAU;EACnB;;;;ACoBmC,gBAAAC,gBAAA,MAAA;AAAnC,eAAAA,iBAAA;;;AACE,MAAAA,eAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAuC,KAAK,SAA1C,UAAO,GAAA,SAAEN,WAAO,GAAA,SAAE,QAAK,GAAA,OAAE,UAAO,GAAA;AAChC,YAAA,QAAU,KAAI;AACd,YAAA,OAAsB,MAAK,MAArB,cAAgB,MAAK;AACjC,YAAI,UAAU,YAAY,MAAM,MAAM,YAAY,MAAM,WAAW;AAEnE,YAAI,aAAa,CAAC,UAAU,EAAE,OAC5B,iBAAiB,SAAS,KAAK,CAAC;AAElC,YAAI,OAAO,QAAQ,OAAO,MAAM,MAAM,eAAe;AAGrD,YAAI,eAAgB,CAAC,QAAQ,cAAc,MAAM,SAAS,IACtD,kBAAkB,KAAK,SAAS,IAAI,IACpC,CAAA;AAEJ,YAAI,YAASC,UAAAA,UAAAA,UAAA,EACX,MAAM,QAAQ,OAAO,IAAI,GACzB,MAAM,QAAO,GACV,MAAM,cAAc,GAAA,EACvB,KAAI,CAAA,GACD,OAAO;AAGZ,eACEX,eAAC,YAAU,EACT,WACA,YAAYU,SAAQ,qBACpB,SAASA,SAAQ,kBACjB,gBAAgBK,eAChB,UAAUL,SAAQ,mBAClB,aAAaA,SAAQ,qBAAoB,GAExC,SAAC,WAAW,kBAAkB,YAAY,cAAY;AAAK,iBAC1DV;YAAA;YAAAW,UAAA,EACE,KAAK,WACL,MAAK,gBACL,WAAW,WAAW,OAAO,gBAAgB,EAAE,KAAK,GAAG,GAAC,aAC7C,CAAC,QAAQ,aAAa,gBAAgB,IAAI,IAAI,QACzD,SAAS,MAAM,QAAO,GAClB,MAAM,cAAc;YAExBX,eAAA,OAAA,EAAK,WAAU,2BAA0B,GACtC,CAAC,QAAQ,cACRA,eAAA,KAAAW,UAAA,EACE,KAAK,YACL,WAAW;cACT;cACA,MAAM,WAAW,cAAc;cAC/B,KAAK,GAAG,EAAC,GACP,YAAY,GAEf,YAAY,CAEhB;UACG;QACH,CACN;;AAIT,aAAAK;IAAA,EA9DmCd,cAAa;;ACLhD,MAAM,iBAAiB,gBAAgB,EAAE,SAAS,OAAM,CAAE;;;;AAExB,gBAAAe,eAAA,MAAA;AAAlC,eAAAA,gBAAA;;;AACE,MAAAA,cAAA,UAAA,SAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AAChB,YAAA,KAAuC,KAAK,SAA1C,UAAO,GAAA,SAAE,QAAK,GAAA,OAAE,UAAO,GAAA,SAAEP,WAAO,GAAA;AACtC,YAAI,OAAOQ,SAAQ,oBAAI,KAAK,MAAS,GAAG,MAAM,GAAG;AACjD,YAAI,WAAqB;UACvB,KAAK,MAAM;UACX,YAAY;UACZ,UAAU;UACV,QAAQ;UACR,SAAS;UACT,SAAS;;AAEX,YAAI,aAAa,CAAC,UAAU,EAAE,OAC5B,iBAAiB,UAAU,KAAK,GAChC,MAAM,mBAAmB,CAAA,CAAE;AAE7B,YAAI,OAAO,QAAQ,OAAO,MAAM,MAAM,eAAe;AACrD,YAAI,YAASP,UAAAA,UAAAA,UAAAA,UAAA;;UACX;QAAI,GACD,QAAQ,GAAA,EACX,MAAM,QAAO,CAAA,GACV,MAAM,cAAc,GAAA,EACvB,KAAI,CAAA;AAGN,eACEX,eAAC,YAAU,EACT,WACA,YAAYU,SAAQ,qBACpB,SAASA,SAAQ,kBACjB,gBAAgBK,eAChB,UAAUL,SAAQ,mBAClB,aAAaA,SAAQ,qBAAoB,GAExC,SAAC,WAAW,kBAAkB,YAAY,cAAY;AAAK,iBAC1DV;YAAA;YAAAW,UAAA,EACE,KAAK,WACL,MAAK,gBACL,WAAW,WAAW,OAAO,gBAAgB,EAAE,KAAK,GAAG,GACvD,SAAS,MAAM,QAAO,GAClB,MAAM,cAAc;YAExBX;cAAA;cAAA,EAAK,WAAU,2BAA0B;cACvCA,eAAA,KAAA,EAAA,cACc,QAAQ,OAAO,MAAM,cAAc,GAC/C,WAAW;gBACT;gBACA,MAAM,WAAW,cAAc;gBAC/B,KAAK,GAAG,GACV,KAAK,WAAU,GAEd,YAAY;YACX;UACA;QACH,CACN;;AAIT,aAAAiB;IAAA,EA5DkCf,cAAa;;;;;ACNjB,gBAAAiB,WAAA,MAAA;AAO5B,eAAAA,UAAY,OAAsB,SAAoB;AAAtD,YAAA,QACE,OAAA,KAAA,MAAM,OAAO,OAAO,KAAC;AAErB,cAAK,iBAAiB,OAAO,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACjE,cAAK,uBAAsB,oBAAI,KAAI,GAAG,QAAO;AAE7C,cAAK,QAAQ,MAAK,cAAa,EAAG;;;AAGpC,MAAAA,UAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAmB,MAAjB,QAAK,GAAA,OAAE,QAAK,GAAA;AAClB,eAAO,MAAM,SAAS,MAAM,SAAS,MAAM,UAAU;;AAGvD,MAAAA,UAAA,UAAA,oBAAA,WAAA;AACE,aAAK,WAAU;;AAGjB,MAAAA,UAAA,UAAA,qBAAA,SAAmB,WAAwB;AACzC,YAAI,UAAU,SAAS,KAAK,MAAM,MAAM;AACtC,eAAK,aAAY;AACjB,eAAK,WAAU;;;AAInB,MAAAA,UAAA,UAAA,uBAAA,WAAA;AACE,aAAK,aAAY;;AAGX,MAAAA,UAAA,UAAA,gBAAR,WAAA;AACM,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACpB,YAAI,eAAe,MAAM,KAAK,iBAAgB,oBAAI,KAAI,GAAG,QAAO,IAAK,KAAK,mBAAmB;AAC7F,YAAI,mBAAmB,QAAQ,QAAQ,QAAQ,cAAc,MAAM,IAAI;AACvE,YAAI,gBAAgB,QAAQ,QAAQ,IAAI,kBAAkB,eAAe,GAAG,MAAM,IAAI,CAAC;AACvF,YAAI,SAAS,cAAc,QAAO,IAAK,aAAa,QAAO;AAI3D,iBAAS,KAAK,IAAI,MAAO,KAAK,KAAK,IAAI,MAAM;AAE7C,eAAO;UACL,cAAc,EAAE,SAAS,kBAAkB,YAAY,cAAc,gBAAgB,EAAC;UACtF,WAAW,EAAE,SAAS,eAAe,YAAY,cAAc,aAAa,EAAC;UAC7E;;;AAII,MAAAA,UAAA,UAAA,aAAR,WAAA;AAAA,YAAA,QAAA;AACM,YAAA,KAAwB,KAAK,cAAa,GAAxC,YAAS,GAAA,WAAE,SAAM,GAAA;AAEvB,aAAK,YAAY,WAAW,WAAA;AAC1B,gBAAK,SAAS,WAAW,WAAA;AACvB,kBAAK,WAAU;WAChB;WACA,MAAM;;AAGH,MAAAA,UAAA,UAAA,eAAR,WAAA;AACE,YAAI,KAAK,WAAW;AAClB,uBAAa,KAAK,SAAS;;;AAjExB,MAAAA,UAAA,cAAmB;AAoE5B,aAAAA;MArE8B,SAAS;;AAuEvC,WAAS,cAAc,MAAgB;AACrC,QAAI3B,SAAQ4B,YAAW,IAAI;AAC3B,QAAI3B,OAAMyB,SAAQ1B,QAAO,CAAC;AAE1B,WAAO,EAAE,OAAKA,QAAE,KAAGC,KAAA;EACrB;;;;AC1E+B,gBAAA4B,YAAA,MAAA;AAA/B,eAAAA,aAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,2BAA2B,QAAQ,wBAAwB;;;AAE3D,MAAAA,WAAA,UAAA,SAAA,WAAA;AACQ,YAAA,UAAY,KAAI;AAClB,YAAA,KAA4D,KAAK,OAA/D,QAAK,GAAA,OAAE,cAAW,GAAA,aAAE,uBAAoB,GAAA,sBAAE,cAAW,GAAA;AAE3D,YAAI,kBAAkB,KAAK,yBACzB,QAAQ,QAAQ,iBAChB,sBACA,MAAM,MAAM;AAGd,eACErB,eAAC,UAAQ,EAAC,MAAK,MAAK,GACjB,SAAC,SAAqB,YAAqB;AAAK,iBAC/CA;YAAA;YAAA,EAAI,MAAK,MAAK;YACX,eAAe,YAAY,KAAK;YAChC,MAAM,IAAI,SAAC,MAAI;AAAK,qBACnB,uBACEA,eAAC,eAAa,EACZ,KAAK,KAAK,YAAW,GACrB,MACA,aACA,YACA,QAAQ,MAAM,QACd,gBAAgC,CAAA,IAGlCA,eAAC,cAAY,EACX,KAAK,KAAK,UAAS,GACnB,KAAK,KAAK,UAAS,GACnB,gBAAgC,CAAA;YAEnC,CACF;UAAC;QACC,CACN;;AAIT,aAAAqB;IAAA,EAzC+BnB,cAAa;;AA2C5C,WAAS,yBAAyB,gBAA+B,sBAAsB,SAAO;AAC5F,WAAO,kBAAkB,4BAA4B,sBAAsB,OAAO;EACpF;;;;AChDE,eAAAoB,gBAAYC,QAAkB,sBAA0C;AACtE,YAAI,OAAmBA,OAAM;AACvB,YAAA9B,OAAQ8B,OAAK;AACnB,YAAI,UAAoB,CAAA;AACxB,YAAI,QAAsB,CAAA;AAC1B,YAAI,WAAW;AAEf,eAAO,OAAO9B,MAAK;AACjB,cAAI,qBAAqB,YAAY,IAAI,GAAG;AAC1C,oBAAQ,KAAK,WAAW,GAAG;iBACtB;AACL,wBAAY;AACZ,oBAAQ,KAAK,QAAQ;AACrB,kBAAM,KAAK,IAAI;;AAEjB,iBAAOyB,SAAQ,MAAM,CAAC;;AAGxB,aAAK,QAAQ;AACb,aAAK,UAAU;AACf,aAAK,MAAM,MAAM;;AAGnB,MAAAI,gBAAA,UAAA,aAAA,SAAWC,QAAgB;AACzB,YAAI,aAAa,KAAK,gBAAgBA,OAAM,KAAK;AACjD,YAAI,YAAY,KAAK,gBAAgBL,SAAQK,OAAM,KAAK,EAAE,CAAC;AAE3D,YAAI,oBAAoB,KAAK,IAAI,GAAG,UAAU;AAC9C,YAAI,mBAAmB,KAAK,IAAI,KAAK,MAAM,GAAG,SAAS;AAGvD,4BAAoB,KAAK,KAAK,iBAAiB;AAC/C,2BAAmB,KAAK,MAAM,gBAAgB;AAE9C,YAAI,qBAAqB,kBAAkB;AACzC,iBAAO;YACL,YAAY;YACZ,WAAW;YACX,SAAS,eAAe;YACxB,OAAO,cAAc;;;AAGzB,eAAO;;AAQD,MAAAD,gBAAA,UAAA,kBAAR,SAAwB,MAAgB;AAChC,YAAA,UAAY,KAAI;AACtB,YAAI,YAAY,KAAK,MAAM,SAAS,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC;AAExD,YAAI,YAAY,GAAG;AACjB,iBAAO,QAAQ,CAAC,IAAI;;AAGtB,YAAI,aAAa,QAAQ,QAAQ;AAC/B,iBAAO,QAAQ,QAAQ,SAAS,CAAC,IAAI;;AAGvC,eAAO,QAAQ,SAAS;;AAE5B,aAAAA;IAAA,EAAC;;;;;ACnDC,eAAAE,eAAY,WAA2B,cAAqB;AACpD,YAAA,QAAU,UAAS;AACzB,YAAI;AACJ,YAAI;AACJ,YAAI;AAEJ,YAAI,cAAc;AAEhB,qBAAW,MAAM,CAAC,EAAE,UAAS;AAC7B,eAAK,aAAa,GAAG,aAAa,MAAM,QAAQ,cAAc,GAAG;AAC/D,gBAAI,MAAM,UAAU,EAAE,UAAS,MAAO,UAAU;AAC9C;;;AAGJ,mBAAS,KAAK,KAAK,MAAM,SAAS,UAAU;eACvC;AACL,mBAAS;AACT,uBAAa,MAAM;;AAGrB,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,YAAY;AACjB,aAAK,QAAQ,KAAK,WAAU;AAC5B,aAAK,cAAc,KAAK,iBAAgB;;AAGlC,MAAAA,eAAA,UAAA,aAAR,WAAA;AACE,YAAI,OAAO,CAAA;AAEX,iBAAS,MAAM,GAAG,MAAM,KAAK,QAAQ,OAAO,GAAG;AAC7C,cAAI,QAAQ,CAAA;AAEZ,mBAAS,MAAM,GAAG,MAAM,KAAK,QAAQ,OAAO,GAAG;AAC7C,kBAAM,KACJ,KAAK,UAAU,KAAK,GAAG,CAAC;;AAI5B,eAAK,KAAK,KAAK;;AAGjB,eAAO;;AAGD,MAAAA,eAAA,UAAA,YAAR,SAAkB,KAAK,KAAG;AACxB,YAAI,OAAO,KAAK,UAAU,MAAM,MAAM,KAAK,SAAS,GAAG;AACvD,eAAO;UACL,KAAK,KAAK,YAAW;UACrB;;;AAII,MAAAA,eAAA,UAAA,mBAAR,WAAA;AACE,YAAI,QAAQ,CAAA;AAEZ,iBAAS,MAAM,GAAG,MAAM,KAAK,QAAQ,OAAO,GAAG;AAC7C,gBAAM,KAAK,KAAK,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI;;AAGpC,eAAO;;AAGT,MAAAA,eAAA,UAAA,aAAA,SAAWD,QAAgB;AACnB,YAAA,SAAW,KAAI;AACrB,YAAI,YAAY,KAAK,UAAU,WAAWA,MAAK;AAC/C,YAAI,OAAsB,CAAA;AAE1B,YAAI,WAAW;AACP,cAAA,aAA0B,UAAS,YAAvB,YAAc,UAAS;AACzC,cAAI7B,SAAQ;AAEZ,iBAAOA,UAAS,WAAW;AACzB,gBAAI,MAAM,KAAK,MAAMA,SAAQ,MAAM;AACnC,gBAAI,YAAY,KAAK,KAAK,MAAM,KAAK,QAAQ,YAAY,CAAC;AAE1D,iBAAK,KAAK;cACR;cACA,UAAUA,SAAQ;cAClB,UAAU,YAAY,KAAK;cAC3B,SAAS,UAAU,WAAWA,WAAU;cACxC,OAAO,UAAU,SAAU,YAAY,MAAO;aAC/C;AAED,YAAAA,SAAQ;;;AAIZ,eAAO;;AAEX,aAAA8B;IAAA,EAAC;;;;;ACrFD,eAAAC,UAAA;AACU,aAAA,qBAAqB,QAAQ,KAAK,mBAAmB;AACrD,aAAA,qBAAqB,QAAQ,KAAK,cAAc;AAChD,aAAA,kBAAkB,QAAQ,KAAK,gBAAgB;AAC/C,aAAA,iBAAiB,QAAQ,KAAK,iBAAiB;AAC/C,aAAA,mBAAmB,QAAQ,KAAK,iBAAiB;AAG/C,aAAA,qBAAqB;;AAE/B,MAAAA,QAAA,UAAA,aAAA,SACE,OACA,aACA,kBACA,SAAwB;AACxB,YAAA,YAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAuB;AAAvB,oBAAA,KAAA,CAAA,IAAA,UAAA,EAAA;;AAEM,YAAA,eAAiB,MAAK;AAC5B,YAAI,YAAY,KAAK,gBAAe,MAApB,MAAI,cAAA,CAAiB,MAAM,YAAY,cAAc,aAAa,gBAAgB,GAAK,SAAS,CAAA;AAEhH,eAAO;UACL,mBAAmB,KAAK,mBAAkB,MAAvB,MAAI,cAAA,CAAoB,MAAM,eAAe,cAAc,OAAO,GAAK,SAAS,CAAA;UACnG,kBAAkB,KAAK,mBAAkB,MAAvB,MAAI,cAAA,CAAoB,MAAM,eAAe,aAAa,kBAAkB,OAAO,GAAK,SAAS,CAAA;UACnH,aAAa,UAAU;UACvB,aAAa,UAAU;UACvB,WAAW,KAAK,eAAc,MAAnB,MAAI,cAAA,CAAgB,MAAM,WAAW,cAAc,aAAa,gBAAgB,GAAK,SAAS,CAAA;UACzG,aAAa,KAAK,iBAAgB,MAArB,MAAI,cAAA,CAAkB,MAAM,aAAa,cAAc,aAAa,gBAAgB,GAAK,SAAS,CAAA;UAC/G,gBAAgB,MAAM;;;AAI1B,MAAAA,QAAA,UAAA,eAAA,SACE,MACA,SAAwB;AACxB,YAAA,YAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAuB;AAAvB,oBAAA,KAAA,CAAA,IAAA,UAAA,EAAA;;AAEA,eAAO,KAAK,eAAc,MAAnB,MAAI,cAAA;UACT,EAAE,OAAO,EAAE,OAAO,MAAM,KAAK,MAAM,MAAM,CAAC,EAAC,GAAI,QAAQ,MAAK;UAC5D,CAAA;UACA;QAAO,GACJ,SAAS,CAAA;;AAIR,MAAAA,QAAA,UAAA,sBAAR,SACE,eACA,aACA,kBACA,SAAwB;AACxB,YAAA,YAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAuB;AAAvB,oBAAA,KAAA,CAAA,IAAA,UAAA,EAAA;;AAEA,YAAI,CAAC,eAAe;AAClB,iBAAO,CAAA;;AAGT,eAAO,KAAK,iBAAgB,MAArB,MAAI,cAAA;UACT,gBACE,eACA,mBAAmB,aAAa,QAAQ,gBAAgB,CAAC,GACzD,OAAO;UAET,CAAA;UACA;UACA;QAAgB,GACb,SAAS,CAAA,EACZ;;AAGI,MAAAA,QAAA,UAAA,mBAAR,SACE,YACA,cACA,aACA,kBAAiC;AACjC,YAAA,YAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAuB;AAAvB,oBAAA,KAAA,CAAA,IAAA,UAAA,EAAA;;AAEA,YAAI,YAAY;AACd,cAAI,WAAW,gBACb,YACA,cACA,mBAAmB,aAAa,QAAQ,gBAAgB,CAAC,GACzD,gBAAgB;AAGlB,iBAAO;YACL,IAAI,KAAK,iBAAiB,SAAS,IAAI,SAAS;YAChD,IAAI,KAAK,iBAAiB,SAAS,IAAI,SAAS;;;AAGpD,eAAO,EAAE,IAAI,CAAA,GAAI,IAAI,CAAA,EAAE;;AAGjB,MAAAA,QAAA,UAAA,oBAAR,SACE,aACA,cACA,aACA,kBAAiC;AACjC,YAAA,YAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAuB;AAAvB,oBAAA,KAAA,CAAA,IAAA,UAAA,EAAA;;AAEA,YAAI,CAAC,aAAa;AAChB,iBAAO;;AAGT,YAAI,WAAW,gBACb,YAAY,eACZ,cACA,mBAAmB,aAAa,QAAQ,gBAAgB,CAAC,GACzD,gBAAgB;AAGlB,eAAO;UACL,MAAM,KAAK,iBAAiB,SAAS,IAAI,SAAS;UAClD,mBAAmB,YAAY,eAAe;UAC9C,SAAS,YAAY;;;AAIjB,MAAAA,QAAA,UAAA,iBAAR,SACE,UACA,cACA,SAAwB;AACxB,YAAA,YAAA,CAAA;iBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAuB;AAAvB,oBAAA,KAAA,CAAA,IAAA,UAAA,EAAA;;AAEA,YAAI,CAAC,UAAU;AACb,iBAAO,CAAA;;AAGT,YAAI,aAAa,oBAAoB,UAAU,cAAc,OAAO;AACpE,YAAI,OAAO,KAAK,WAAU,MAAf,MAAI,cAAA,CAAY,SAAS,KAAK,GAAK,SAAS,CAAA;AAEvD,iBAAgB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAjB,cAAI,MAAG,OAAA,EAAA;AACV,cAAI,aAAa;;AAGnB,eAAO;;AAMD,MAAAA,QAAA,UAAA,mBAAR,SACE,aACA,WAAoB;AAEpB,YAAI,OAAkB,CAAA;AAEtB,iBAAuB,KAAA,GAAA,gBAAA,aAAA,KAAA,cAAA,QAAA,MAAa;AAA/B,cAAI,aAAU,cAAA,EAAA;AACjB,eAAK,KAAI,MAAT,MAAa,KAAK,gBAAgB,YAAY,SAAS,CAAC;;AAG1D,eAAO;;AAMD,MAAAA,QAAA,UAAA,kBAAR,SACE,YACA,WAAoB;AAEpB,YAAI,YAAY,WAAW;AAG3B,YAAI,KAAK,sBAAsB,WAAW,GAAG,YAAY,aAAa;AACpE,sBAAY;YACV,OAAO,UAAU;YACjB,KAAKP,SAAQ,UAAU,OAAO,CAAC;;;AAInC,YAAI,OAAO,KAAK,WAAU,MAAf,MAAI,cAAA,CAAY,SAAS,GAAK,SAAS,CAAA;AAElD,iBAAgB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAjB,cAAI,MAAG,OAAA,EAAA;AACV,cAAI,aAAa;AACjB,cAAI,UAAU,WAAW,WAAW,IAAI;AACxC,cAAI,QAAQ,WAAW,SAAS,IAAI;;AAGtC,eAAO;;AAEX,aAAAO;IAAA,EAAC;;AAOD,WAAS,mBAAmB,aAA0B,mBAA0B;AAC9E,QAAIF,SAAQ,YAAY;AAExB,QAAI,mBAAmB;AACrB,aAAOA;;AAGT,WAAO;MACL,OAAO,MAAMA,OAAM,OAAO,YAAY,YAAY,YAAY;MAC9D,KAAK,MAAMA,OAAM,KAAK,YAAY,YAAY,eAAe,KAAK;;;EAEtE;WCrNgB,mBACd,aACA,aACA,SAAwB;AAElB,QAAAG,aAAc,YAAY,cAAa;AAC7C,aAAS,cAAcA,YAAW;AAChC,UAAI,CAAC,mBAAmB,YAAY,YAAYA,WAAU,UAAU,EAAE,KAAK,GAAG;AAC5E,eAAO;;;AAGX,WAAO,gBAAgB,EAAE,WAAW,YAAW,GAAI,OAAO;EAC5D;WAEgB,qBACd,eACA,aACA,SAAwB;AAExB,QAAI,CAAC,mBAAmB,YAAY,YAAY,cAAc,KAAK,GAAG;AACpE,aAAO;;AAET,WAAO,gBAAgB,EAAE,cAAa,GAAI,OAAO;EACnD;AAEA,WAAS,gBAAgB,UAAU,SAAwB;AACzD,QAAI,gBAAgB,QAAQ,eAAc;AAE1C,QAAI,QAAKf,UAAA,EACP,eAAe,cAAc,eAC7B,eAAe,IACf,YAAY,cAAc,YAC1B,cAAc,cAAc,cAC5B,gBAAgB,IAChB,WAAW,MACX,aAAa,KAAI,GACd,QAAQ;AAGb,YAAQ,QAAQ,YAAY,gBAAgB,cAAc,OAAO,OAAO;EAC1E;WAEgB,aAAa,OAAwB,SAA0B,cAAmB,cAAa;AAAhC,QAAA,iBAAA,QAAA;AAAA,qBAAA,CAAA;IAAiB;AAC9F,QAAI,MAAM,aAAa,CAAC,wBAAwB,OAAO,SAAS,cAAc,YAAY,GAAG;AAC3F,aAAO;;AAGT,QAAI,MAAM,iBAAiB,CAAC,0BAA0B,OAAO,SAAS,cAAc,YAAY,GAAG;AACjG,aAAO;;AAGT,WAAO;EACT;AAKA,WAAS,wBAAwB,OAAwB,SAA0B,cAAmB,cAAY;AAChH,QAAI,eAAe,QAAQ,eAAc;AACzC,QAAI,cAAc,MAAM;AAExB,QAAI,oBAAoB,YAAY;AACpC,QAAI,cAAc,kBAAkB;AACpC,QAAI,mBAAmB,kBAAkB;AACzC,QAAI,iBAAiB,gBACnB,aACA,YAAY,UACV,MAAM,eACN,EAAE,IAAI,aAAa,gBAAe,CAAE;AAGxC,QAAI,cAAc;AAChB,uBAAiB,QAAQ,gBAAgB,YAAY;;AAIvD,QAAI,kBAAkB,iBAAiB,MAAM,YAAY,YAAY,eAAe,SAAS;AAE7F,QAAI,YAAY,gBAAgB;AAChC,QAAI,iBAAiB,gBAAgB;AACrC,QAAI,eAAe,gBAAgB,WAAW,MAAM,YAAY;AAEhE,aAAS,qBAAqB,kBAAkB;AAC9C,UAAI,kBAAkB,iBAAiB,iBAAiB;AACxD,UAAI,eAAe,gBAAgB;AACnC,UAAI,gBAAgB,eAAe,gBAAgB,KAAK;AACxD,UAAI,aAAa,YAAY,gBAAgB,KAAK;AAGlD,UAAI,CAAC,mBAAmB,cAAc,aAAa,cAAc,iBAAiB,MAAM,eAAe,OAAO,GAAG;AAC/G,eAAO;;AAKH,UAAA,eAAiB,QAAQ,QAAO;AACtC,UAAI,mBAAmB,OAAO,iBAAiB,aAAa,eAAe;AAE3E,eAAS,mBAAmB,gBAAgB;AAC1C,YAAI,gBAAgB,eAAe,eAAe;AAGlD,YAAI,gBAAgB,cAAc,cAAc,KAAK,GAAG;AACtD,cAAI,eAAe,aAAa,cAAc,KAAK,EAAE;AAGrD,cAAI,iBAAiB,SAAS,YAAY,SAAS;AACjD,mBAAO;;AAGT,cAAI,cAAc,YAAY,OAAO;AACnC,mBAAO;;AAGT,cAAI,oBAAoB,CAAC;YACvB,IAAI,SAAS,SAAS,UAAU,cAAc,KAAK,GAAG,aAAa;;YACnE,IAAI,SAAS,SAAS,YAAY,eAAe;UAAC,GACjD;AACD,mBAAO;;;;AAOb,UAAI,qBAAqB,aAAa;AAEtC,eAAyB,KAAA,GAAA,KAAA,cAAc,QAAd,KAAA,GAAA,QAAA,MAAsB;AAA1C,YAAI,eAAY,GAAA,EAAA;AACnB,YAAI,kBAAeA,UAAAA,UAAA,CAAA,GACd,YAAY,GAAA,EACf,OAAO,gBAAgB,OACvB,QAAQ,WAAW,OAAM,CAAA;AAG3B,YAAI,UAAU,mBAAmB,KAAK,WAAW,KAAK;AACtD,YAAI,eAAe,mBAAmB,UAAU,iBAAiB;AACjE,YAAI,WAAQ;AAEZ,YAAI,SAAS;AACX,qBAAW,IAAI,SAAS,SAAS,SAAS,YAAY;eACjD;AACL,qBAAW,IAAI,SAAS,SAAS,UAAU;;AAG7C,YAAI,CAAC,aACH,4BAA4B,iBAAiB,OAAO,GACpD,QAAQ,GACP;AACD,iBAAO;;;;AAKb,WAAO;EACT;AAKA,WAAS,0BAA0B,OAAwB,SAA0B,cAAmB,cAAY;AAClH,QAAI,qBAAqB,MAAM;AAC/B,QAAI,eAAe,mBAAmB;AACtC,QAAI,oBAAoB,mBAAmB;AAE3C,QAAI,YAAY,MAAM;AACtB,QAAI,iBAAiB,UAAU;AACzB,QAAA,kBAAoB,QAAQ,eAAc,EAAE;AAElD,QAAI,cAAc;AAChB,wBAAkB,aAAa,eAAe;;AAIhD,QAAI,CAAC,mBAAmB,gBAAgB,aAAa,gBAAgB,oBAAoB,MAAM,eAAe,OAAO,GAAG;AACtH,aAAO;;AAKH,QAAA,gBAAkB,QAAQ,QAAO;AACvC,QAAI,oBAAoB,OAAO,kBAAkB,aAAa,gBAAgB;AAE9E,aAAS,sBAAsB,mBAAmB;AAChD,UAAI,mBAAmB,kBAAkB,kBAAkB;AAG3D,UAAI,gBAAgB,gBAAgB,iBAAiB,KAAK,GAAG;AAC3D,YAAI,gBAAgB,YAAY,OAAO;AACrC,iBAAO;;AAGT,YAAI,qBAAqB,CAAC,kBACxB,IAAI,SAAS,SAAS,aAAa,iBAAiB,KAAK,GAAG,gBAAgB,GAC5E,IAAI,GACH;AACD,iBAAO;;;;AAMb,aAA2B,KAAA,GAAA,KAAA,gBAAgB,QAAhB,KAAA,GAAA,QAAA,MAAwB;AAA9C,UAAI,iBAAc,GAAA,EAAA;AACrB,UAAI,eAAYA,UAAAA,UAAA,CAAA,GAAQ,YAAY,GAAK,SAAS;AAElD,UAAI,CAAC,eACH,4BAA4B,cAAc,OAAO,GACjD,IAAI,GACH;AACD,eAAO;;;AAIX,WAAO;EACT;AAKA,WAAS,mBACP,aACA,cACA,iBACA,yBACA,SAAwB;AAExB,aAAuB,KAAA,GAAA,gBAAA,aAAA,KAAA,cAAA,QAAA,MAAa;AAA/B,UAAI,aAAU,cAAA,EAAA;AACjB,UAAI,CAAC,sBACH,mBAAmB,YAAY,cAAc,iBAAiB,yBAAyB,OAAO,GAC9F,YAAY,GACX;AACD,eAAO;;;AAIX,WAAO;EACT;AAEA,WAAS,mBACP,YACA,cACA,iBACA,yBACA,SAAwB;AAExB,QAAI,eAAe,iBAAiB;AAClC,aAAO,mBACL,gBAAgB,yBAAyB,cAAc,OAAO,CAAC;;AAInE,QAAI,OAAO,eAAe,UAAU;AAClC,aAAO,mBACL,qBAAqB,iBAAiB,SAAC,UAAQ;AAAK,eAAA,SAAS,YAAY;MAAU,CAAA,CAAC;;AAIxF,QAAI,OAAO,eAAe,YAAY,YAAY;AAChD,aAAO,mBACL,gBAAgB,YAAY,cAAc,OAAO,CAAC;;AAItD,WAAO,CAAA;EACT;AAGA,WAAS,mBAAmB,YAAsB;AAC1C,QAAAe,aAAc,WAAU;AAC9B,QAAI,SAAsB,CAAA;AAE1B,aAAS,cAAcA,YAAW;AAChC,aAAO,KAAKA,WAAU,UAAU,EAAE,KAAK;;AAGzC,WAAO;EACT;AAGA,WAAS,sBAAsB,aAA0B,YAAqB;AAC5E,aAAuB,KAAA,GAAA,gBAAA,aAAA,KAAA,cAAA,QAAA,MAAa;AAA/B,UAAI,aAAU,cAAA,EAAA;AACjB,UAAI,mBAAmB,YAAY,UAAU,GAAG;AAC9C,eAAO;;;AAIX,WAAO;EACT;AC7RA,MAAM,oBAAoB;;;;AAEI,gBAAAC,WAAA,MAAA;AAA9B,eAAAA,YAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AAsCE,cAAA,WAAW,SAAC,IAAe;AACzB,gBAAK,KAAK;AACV,iBAAO,MAAK,MAAM,OAAO,EAAE;;;;AArC7B,MAAAA,UAAA,UAAA,SAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AACd,YAAA,SAA6B,MAAK,QAA1B,mBAAqB,MAAK;AACxC,YAAI,aAAa,UAAU;AAC3B,YAAI,YAAY,CAAC,aAAa;AAE9B,YAAI,QAAQ;AACV,cAAI,kBAAkB;AACpB,sBAAU,KAAK,6BAA6B;iBACvC;AACL,sBAAU,KAAK,oBAAoB;;;AAIvC,eACE3B,eAAA,OAAA,EACE,KAAK,KAAK,UACV,WAAW,UAAU,KAAK,GAAG,GAC7B,OAAO;UACL,WAAW,MAAM;UACjB,WAAW,MAAM;UACjB,MAAO,cAAc,EAAE,MAAM,gBAAgB,MAAO;UACpD,OAAQ,cAAc,EAAE,MAAM,iBAAiB,MAAO;UACtD,QAAS,cAAc,EAAE,MAAM,kBAAkB,MAAO;UACxD,YAAa,CAAC,cAAc,EAAE,MAAM,gBAAgB,MAAO;UAC3D,aAAc,CAAC,cAAc,EAAE,MAAM,iBAAiB,MAAO;UAC7D,cAAe,CAAC,cAAc,EAAE,MAAM,kBAAkB,MAAO;UAC/D,WAAW,MAAM,aAAa;UAC/B,GAEA,MAAM,QAAQ;;AAUrB,MAAA2B,UAAA,UAAA,kBAAA,WAAA;AACE,YAAI,kBAAkB,KAAK,KAAK,MAAM,SAAS,GAAG;AAChD,iBAAO;;AAOH,YAAA,KAAO,KAAI;AACjB,YAAI,kBAAkB,KAAK,GAAG,sBAAqB,EAAG,QAAQ,KAAK,mBAAkB;AAC/E,YAAA,WAAa,GAAE;AAErB,iBAASC,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK,GAAG;AAC3C,cAAI,UAAU,SAASA,EAAC;AAExB,cAAI,QAAQ,sBAAqB,EAAG,QAAQ,iBAAiB;AAC3D,mBAAO;;;AAIX,eAAO;;AAGT,MAAAD,UAAA,UAAA,kBAAA,WAAA;AACE,YAAI,kBAAkB,KAAK,KAAK,MAAM,SAAS,GAAG;AAChD,iBAAO;;AAOH,YAAA,KAAO,KAAI;AACjB,YAAI,mBAAmB,KAAK,GAAG,sBAAqB,EAAG,SAAS,KAAK,mBAAkB;AACjF,YAAA,WAAa,GAAE;AAErB,iBAASC,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK,GAAG;AAC3C,cAAI,UAAU,SAASA,EAAC;AAExB,cAAI,QAAQ,sBAAqB,EAAG,SAAS,kBAAkB;AAC7D,mBAAO;;;AAIX,eAAO;;AAGT,MAAAD,UAAA,UAAA,qBAAA,WAAA;AACE,YAAI,kBAAkB,KAAK,KAAK,MAAM,SAAS,GAAG;AAChD,iBAAO;;AAET,eAAO,KAAK,GAAG,eAAe,KAAK,GAAG;;AAGxC,MAAAA,UAAA,UAAA,qBAAA,WAAA;AACE,YAAI,kBAAkB,KAAK,KAAK,MAAM,SAAS,GAAG;AAChD,iBAAO;;AAET,eAAO,KAAK,GAAG,cAAc,KAAK,GAAG;;AAEzC,aAAAA;IAAA,EAxG8BzB,cAAa;;;;;ACVzC,eAAA2B,QAAmB,gBAA2D;AAA9E,YAAA,QAAA;AAAmB,aAAA,iBAAA;AAJZ,aAAA,aAAyC,CAAA;AACxC,aAAA,SAAoC,CAAA;AACpC,aAAA,cAAgE,CAAA;AAiBxE,aAAA,cAAc,SAAC,KAAqBzB,MAAW;AACzC,cAAA,KAAyB,OAAvB,SAAM,GAAA,QAAE,aAAU,GAAA;AACxB,cAAI,UAAU;AACd,cAAI,QAAQ;AAEZ,cAAI,QAAQ,MAAM;AAEhB,sBAAWA,QAAO;AAElB,uBAAWA,IAAG,IAAI;AAClB,mBAAOA,IAAG,KAAK,OAAOA,IAAG,KAAK,KAAK;AACnC,oBAAQ;iBACH;AACL,mBAAOA,IAAG,KAAK;AAEf,gBAAI,CAAC,OAAOA,IAAG,GAAG;AAChB,qBAAO,WAAWA,IAAG;AACrB,qBAAO,MAAK,YAAYA,IAAG;AAC3B,wBAAU;;;AAId,cAAI,MAAK,gBAAgB;AACvB,gBAAI,SAAS;AACX,oBAAK,eAAe,MAAM,OAAOA,IAAG,CAAC;;AAEvC,gBAAI,OAAO;AACT,oBAAK,eAAe,KAAK,OAAOA,IAAG,CAAC;;;;;AAvC1C,MAAAyB,QAAA,UAAA,YAAA,SAAUzB,MAAoB;AAA9B,YAAA,QAAA;AACE,YAAI,cAAc,KAAK,YAAYA,IAAG;AAEtC,YAAI,CAAC,aAAa;AAChB,wBAAc,KAAK,YAAYA,IAAG,IAAI,SAAC,KAAmB;AACxD,kBAAK,YAAY,KAAK,OAAOA,IAAG,CAAC;;;AAIrC,eAAO;;AAsCT,MAAAyB,QAAA,UAAA,UAAA,SACE,YACA,UACA,MAAa;AAEb,eAAO,gBAAgB,KAAK,YAAY,YAAY,UAAU,IAAI;;AAGpE,MAAAA,QAAA,UAAA,SAAA,WAAA;AACE,eAAO,kBAAkB,KAAK,UAAU;;AAE5C,aAAAA;IAAA,EAAC;;WCtBe,mBAAmB,UAAuB;AACxD,QAAI,cAAc,aAAa,UAAU,uBAAuB;AAChE,QAAI,eAAe;AAEnB,aAAuB,KAAA,GAAA,gBAAA,aAAA,KAAA,cAAA,QAAA,MAAa;AAA/B,UAAI,aAAU,cAAA,EAAA;AACjB,qBAAe,KAAK,IAClB,cACA,yBAAyB,UAAU,CAAC;;AAIxC,WAAO,KAAK,KAAK,YAAY;EAC/B;WAOgB,0BAA0B,OAA4B,eAA4B;AAChG,WAAO,MAAM,UAAU,cAAc;EACvC;WAEgB,mBAAmB,OAA4B,eAA4B;AACzF,WAAO,cAAc,aAAa;IAChC,0BAA0B,OAAO,aAAa;EAClD;WAGgB,mBACd,eACA,aACA,KACA,UAAiB;AAEX,QAAA,aAAe,IAAG;AAExB,QAAI,UAAiB,OAAO,YAAY,YAAY,aAClD,YAAY,QAAQ,GAAG,IACvB7B,eACE,SACA;MACE,MAAM;MACN,WAAW;QACT,YAAY;QACZ,cAAc,iBAAiB,6BAA6B;QAC5D,KAAK,GAAG;MACV,OAAO;QACL,UAAU,IAAI;QACd,OAAO,IAAI;QACX,QAAQ,aAAa,IAAI,eAAe;;;OAG5C,IAAI,mBACJA,eACE,WAAW,UAAU,SACrB;MACE,MAAM;OAER,OAAO,YAAY,eAAe,aAC9B,YAAY,WAAW,GAAG,IAC1B,YAAY,UAAU,CAC3B;AAGL,WAAO;EACT;WAEgB,gBAAgB,OAAmB,OAAiB;AAClE,WAAO,cAAc,OAAO,OAAO,YAAY;EACjD;WAEgB,oBAAoB,MAAkB,aAAoB;AACxE,QAAI,WAAoB,CAAA;AAOxB,aAAqB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAtB,UAAI,WAAQ,OAAA,EAAA;AACf,UAAI,OAAO,SAAS,QAAQ;AAE5B,eAAS4B,KAAI,GAAGA,KAAI,MAAMA,MAAK,GAAG;AAChC,iBAAS,KACP5B,eAAA,OAAA,EACE,OAAO;UACL,OAAO,SAAS,UAAU,WAAW,oBAAoB,WAAW,IAAK,SAAS,SAAS;UAC3F,UAAU,SAAS,YAAY;UAChC,CAAA,CACD;;;AAKR,WAAOA,eAAa,MAAA,QAAA,cAAA,CAAC,YAAY,CAAA,CAAE,GAAK,QAAQ,CAAA;EAClD;WAEgB,oBAAoB,aAAoB;AAGtD,WAAO,eAAe,OAAO,IAAI;EACnC;WAEgB,eAAe,MAAgB;AAC7C,aAAgB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAjB,UAAI,MAAG,OAAA,EAAA;AACV,UAAI,IAAI,UAAU,UAAU;AAC1B,eAAO;;;AAIX,WAAO;EACT;WAEgB,wBAAwB,QAAiB,SAAoB;AAC3E,QAAI,aAAa;MACf;MACA,QAAQ,MAAM,SAAS,OAAO;;AAGhC,QAAI,QAAQ;AACV,iBAAW,KAAK,sBAAsB;;AAGxC,WAAO;EACT;WAEgB,qBAAqB,eAA8B,iBAAwB;AACzF,QAAI,aAAa;MACf;MACA,2BAAyB,cAAc;MACvC,cAAc;;;AAGhB,QAAI,mBAAmB,cAAc,UAAU,cAAc,aAAa,MAAM;AAC9E,iBAAW,KAAK,8BAA8B;;AAGhD,QAAI,cAAc,UAAU;AAC1B,iBAAW,KAAK,8BAA8B;;AAGhD,WAAO;EACT;WAEgB,iBAAiB,KAA6B;AAC5D,WACEA,eAAA,OAAA,EACE,WAAU,6BACV,OAAO;MACL,OAAO,IAAI;MACX,UAAU,IAAI;MACf,CAAA;EAGP;WAEgB,qBAAqBU,UAA2B;AACxD,QAAA,oBAAsBA,SAAO;AAEnC,QAAI,qBAAqB,QAAQ,sBAAsB,QAAQ;AAC7D,0BAAoBA,SAAQ,WAAW,UAAUA,SAAQ,eAAe;;AAG1E,WAAO;EACT;WAEgB,yBAAyBA,UAA2B;AAC5D,QAAA,wBAA0BA,SAAO;AAEvC,QAAI,yBAAyB,QAAQ,0BAA0B,QAAQ;AACrE,8BAAwBA,SAAQ,WAAW,UAAUA,SAAQ,eAAe;;AAG9E,WAAO;EACT;;;;AC/LsC,gBAAAoB,mBAAA,MAAA;AAAtC,eAAAA,oBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,cAAc,QAAQ,SAAClC,IAAC;AAAK,iBAAAA;QAAC,GAAE,eAAe;AAG/C,cAAA,sBAAkD,QAAQ,mBAAmB;AAE7E,cAAA,eAAe,IAAI,OAAM;AACzB,cAAA,iBAAiB,IAAI,OAAoB,MAAK,kBAAkB,KAAK,KAAI,CAAC;AAE1E,cAAA,QAA+B;UAC7B,aAAa;UACb,kBAAkB;UAClB,sBAAsB,CAAA;UACtB,uBAAuB,CAAA;;AAmJzB,cAAA,eAAe,WAAA;AACb,gBAAK,aAAYe,UAAA,EACf,aAAa,MAAK,mBAAkB,EAAE,GACnC,MAAK,oBAAmB,CAAE,CAAA;;;;AAnJjC,MAAAmB,kBAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAA4B,MAA1B,QAAK,GAAA,OAAE,QAAK,GAAA,OAAE,UAAO,GAAA;AAC3B,YAAI,iBAAiB,MAAM,YAAY,CAAA;AACvC,YAAI,OAAO,KAAK,YAAY,MAAM,IAAI;AAEtC,YAAI,oBAAoB,KAAK,oBAAoB,MAAM,MAAM,WAAW;AACxE,YAAI,aAAa,wBAAwB,MAAM,QAAQ,OAAO;AAE9D,YAAI,MAAM,kBAAkB;AAC1B,qBAAW,KAAK,2BAA2B;;AAI7C,YAAI,YAAY,eAAe;AAC/B,YAAI,UAAU;AACd,YAAI;AACJ,YAAI,mBAA4B,CAAA;AAChC,YAAI,mBAA4B,CAAA;AAChC,YAAI,mBAA4B,CAAA;AAEhC,eAAO,UAAU,cAAc,gBAAgB,eAAe,OAAO,GAAG,SAAS,UAAU;AACzF,2BAAiB,KAAK,KAAK,cAAc,eAAe,mBAAmB,IAAI,CAAC;AAChF,qBAAW;;AAGb,eAAO,UAAU,cAAc,gBAAgB,eAAe,OAAO,GAAG,SAAS,QAAQ;AACvF,2BAAiB,KAAK,KAAK,cAAc,eAAe,mBAAmB,KAAK,CAAC;AACjF,qBAAW;;AAGb,eAAO,UAAU,cAAc,gBAAgB,eAAe,OAAO,GAAG,SAAS,UAAU;AACzF,2BAAiB,KAAK,KAAK,cAAc,eAAe,mBAAmB,IAAI,CAAC;AAChF,qBAAW;;AAOb,YAAI,UAAU,CAAC,sBAAqB;AAEpC,YAAM,YAAY,EAAE,MAAM,WAAU;AAEpC,eAAO9B,eACL,SACA;UACE,MAAM;UACN,WAAW,WAAW,KAAK,GAAG;UAC9B,OAAO,EAAE,QAAQ,MAAM,OAAM;WAE/B,QAAQ,CAAC,WAAW,iBAAiB,MAAM,KAAKA,eAAa,MAAA,QAAA,cAAA,CAAC,SAAS,SAAS,GAAK,gBAAgB,CAAA,GACrG,QAAQ,CAAC,WAAW,iBAAiB,MAAM,KAAKA,eAAa,MAAA,QAAA,cAAA,CAAC,SAAS,SAAS,GAAK,gBAAgB,CAAA,GACrG,QAAQ,CAAC,WAAW,iBAAiB,MAAM,KAAKA,eAAa,MAAA,QAAA,cAAA,CAAC,SAAS,SAAS,GAAK,gBAAgB,CAAA,GACrG,WAAWA,eAAa,MAAA,QAAA,cAAA,cAAA,cAAA,CAAC,SAAS,SAAS,GAAK,gBAAgB,GAAK,gBAAgB,GAAK,gBAAgB,CAAA,CAAC;;AAI/G,MAAA8B,kBAAA,UAAA,gBAAA,SAAc,eAAwC,mBAA0B,UAAiB;AAC/F,YAAI,kBAAkB,eAAe;AACnC,iBACE9B,eAACY,WAAQ,EAAC,KAAK,cAAc,IAAG,GAC7B,cAAc,YAAY;;AAKjC,eACEZ,eAAA,MAAA,EACE,KAAK,cAAc,KACnB,MAAK,gBACL,WAAW,qBAAqB,eAAe,KAAK,MAAM,MAAM,EAAE,KAAK,GAAG,EAAC,GAE1E,KAAK,cAAc,eAAe,mBAAmB,cAAc,OAAO,QAAQ,CAAC;;AAK1F,MAAA8B,kBAAA,UAAA,gBAAA,SACE,eACA,mBACA,aACA,UAAiB;AAEjB,YAAI,kBAAkB,aAAa;AACjC,iBAAO,YAAY;;AAGf,YAAA,QAAU,KAAI;AAChB,YAAA,KAAoE,KAAK,OAAvE,mBAAgB,GAAA,kBAAE,uBAAoB,GAAA,sBAAE,wBAAqB,GAAA;AAEnE,YAAI,kBAAkB,mBAAmB,OAAO,aAAa;AAC7D,YAAI,WAAW,0BAA0B,OAAO,aAAa;AAI7D,YAAI,YACF,CAAC,MAAM,SAAS,YACd,mBAAmB,WACjB,CAAC,kBAAkB,WACjB;AAER,YAAI,aAAa,cAAc;AAC/B,YAAI,UAAU,mBAAmB,eAAe,aAAa;UAC3D,mBAAmB;UACnB,eAAe;UACf,aAAc,CAAC,MAAM,oBAAoB,qBAAqB,UAAU,MAAM,SAAa,qBAAqB,UAAU,IAAI;UAC9H,cAAc,sBAAsB,UAAU,MAAM,SAAY,sBAAsB,UAAU,IAAI;UACpG,YAAY,cAAc;UAC1B,gBAAgB;UAChB,gBAAgB,CAAA;UAChB,uBAAuB,WAAA;UAAA;WACtB,QAAQ;AAEX,eAAO9B,eACL,WAAW,OAAO,MAClB;UACE,KAAK,YAAY;UACjB,MAAM;WAERA;UAAA;UAAA,EAAK,WAAW,yBAAsB,WAAW,gCAAgC,IAAI;UACnFA,eAAC,UAAQ,EACP,KAAK,KAAK,aAAa,UAAU,UAAU,GAC3C,OAAO,KAAK,eAAe,UAAU,UAAU,GAC/C,WACA,WAAW,CAAC,MAAM,SAAS,YAAY,UACvC,WAAW,cAAc,WACzB,QAAQ,UACR,0BAEC,OAAO;QACC,CACP;;AAIV,MAAA8B,kBAAA,UAAA,oBAAA,SAAkB,YAAgC1B,MAAW;AAC3D,YAAI,UAAU,gBAAgB,KAAK,MAAM,UAAUA,IAAG;AAEtD,YAAI,SAAS;AACX,iBAAO,QAAQ,MAAM,eAAe,UAAU;;;AAYlD,MAAA0B,kBAAA,UAAA,oBAAA,WAAA;AACE,aAAK,aAAY;AACjB,aAAK,QAAQ,iBAAiB,KAAK,YAAY;;AAGjD,MAAAA,kBAAA,UAAA,qBAAA,WAAA;AAEE,aAAK,aAAY;;AAGnB,MAAAA,kBAAA,UAAA,uBAAA,WAAA;AACE,aAAK,QAAQ,oBAAoB,KAAK,YAAY;;AAGpD,MAAAA,kBAAA,UAAA,qBAAA,WAAA;AACE,eAAO,eAAe,KAAK,MAAM,IAAI,IACjC,mBAAmB,KAAK,eAAe,OAAM,CAAE,IAC/C;;AAGN,MAAAA,kBAAA,UAAA,sBAAA,WAAA;AACE,YAAI,iBAAiB,mBAAkB;AACnC,YAAA,KAAmC,MAAjC,eAAY,GAAA,cAAE,iBAAc,GAAA;AAElC,YAAI,mBAAmB;AACvB,YAAI,uBAAoD,CAAA;AACxD,YAAI,wBAAqD,CAAA;AAEzD,iBAAS,cAAc,aAAa,YAAY;AAC9C,cAAI,WAAW,aAAa,WAAW,UAAU;AAEjD,cAAI,YAAY,SAAS,gBAAe,GAAI;AAC1C,+BAAmB;AACnB;;;AAIJ,iBAAoB,KAAA,GAAA,KAAA,KAAK,MAAM,UAAX,KAAA,GAAA,QAAA,MAAqB;AAApC,cAAI,UAAO,GAAA,EAAA;AACd,cAAI,aAAa,QAAQ;AACzB,cAAI,aAAa,eAAe,WAAW,UAAU;AAErD,cAAI,YAAY;AACd,gBAAI,YAAY,WAAW;AAE3B,iCAAqB,UAAU,IAAI,KAAK,MACtC,UAAU,sBAAqB,EAAG,SAChC,mBACI,eAAe,IACf,EACL;AAGH,kCAAsB,UAAU,IAAI,KAAK,MACvC,UAAU,sBAAqB,EAAG,MAAM;;;AAK9C,eAAO,EAAE,kBAAkB,sBAAsB,sBAAqB;;AAE1E,aAAAA;IAAA,EAnOsC5B,cAAa;;AAqOnD,mBAAiB,iBAAiB;IAChC,sBAAsB;IACtB,uBAAuB;GACxB;AAED,WAAS,gBAAgB,UAAqCE,MAAW;AACvE,aAAoB,KAAA,GAAA,aAAA,UAAA,KAAA,WAAA,QAAA,MAAU;AAAzB,UAAI,UAAO,WAAA,EAAA;AACd,UAAI,QAAQ,QAAQA,MAAK;AACvB,eAAO;;;AAIX,WAAO;EACT;;;;AC7O+B,gBAAA2B,YAAA,MAAA;AAA/B,eAAAA,aAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,QAAgC,UAAS;;;AAEzC,MAAAA,WAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACd,YAAArB,WAAY,QAAO;AACnB,YAAA,MAAQ,MAAK;AACb,YAAA,aAAe,IAAG;AAClB,YAAA,KAAO,WAAU;AAEvB,YAAI,YAA6B;UAC/B,OAAO,IAAI,SAAS,SAAS,WAAW,KAAK,WAAW,QAAQ;UAChE,MAAM,QAAQ;UACd,UAAU,MAAM;UAChB,WAAW,GAAG;UACd,iBAAiB,GAAG;UACpB,aAAa,GAAG;UAChB,aAAa,CAAC,MAAM,mBAAmB,oBAAoB,KAAK,OAAO;UACvE,kBAAkB,CAAC,MAAM,mBAAmB,yBAAyB,KAAK,OAAO;UACjF,gBAAgB,CAAC,MAAM,mBAAmB,uBAAuB,GAAY;UAC7E,UAAU,QAAQ,MAAM,cAAc,MAAM,cAAc,MAAM,eAAe;UAC/E,SAAS,QAAQ,IAAI,OAAO;UAC5B,OAAO,QAAQ,IAAI,KAAK;UACxB,QAAQ,QAAQ,MAAM,MAAM;UAC5B,UAAU,QAAQ,MAAM,QAAQ;UAChC,SAAS,QAAQ,MAAM,OAAO;UAC9B,YAAY,QAAQ,MAAM,UAAU;UACpC,YAAY,QAAQ,MAAM,UAAU;UACpC,YAAY,QAAQ,MAAM,UAAU;;AAGtC,YAAI,qBAAqB,mBAAmB,SAAS,EAAE,OAAO,GAAG,UAAU;AAE3E,eACEV,eAAC,YAAU,EACT,WACA,YAAYU,SAAQ,iBACpB,SAASA,SAAQ,cACjB,gBAAgB,MAAM,gBACtB,UAAUA,SAAQ,eAClB,aAAaA,SAAQ,kBACrB,OAAO,KAAK,MAAK,GAEhB,SAAC,WAAW,kBAAkB,YAAY,cAAY;AAAK,iBAAA,MAAM,SAChE,WAAW,mBAAmB,OAAO,gBAAgB,GAAG,YAAY,cAAc,SAAS;QAC5F,CAAA;;AAKP,MAAAqB,WAAA,UAAA,oBAAA,WAAA;AACE,iBAAS,KAAK,MAAM,SAAS,KAAK,MAAM,GAAG;;AAM7C,MAAAA,WAAA,UAAA,qBAAA,SAAmB,WAAyB;AACpC,YAAA,MAAQ,KAAK,MAAK;AAExB,YAAI,QAAQ,UAAU,KAAK;AACzB,mBAAS,KAAK,MAAM,SAAS,GAAG;;;AAGtC,aAAAA;IAAA,EAhE+B7B,cAAa;;;;;ACtBT,gBAAA8B,gBAAA,MAAA;AAAnC,eAAAA,iBAAA;;;AACE,MAAAA,eAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACd,YAAA,MAAQ,MAAK;AACnB,YAAI,aAAa,QAAQ,QAAQ,mBAAmB,MAAM;AAC1D,YAAI,WAAW,iBACb,KACA,YACA,SACA,MAAM,yBACN,MAAM,sBAAsB;AAG9B,eACEhC,eAAC,WAAS,EACR,KACA,UACA,iBAAiB,MAAM,iBACvB,iBAAiB,MAAM,iBACvB,gBAAgB,MAAM,kBAAkBiC,sBACxC,YAAY,MAAM,YAClB,YAAY,MAAM,YAClB,iBAAiB,MAAM,iBACvB,YAAY,MAAM,YAClB,QAAQ,MAAM,QACd,UAAU,MAAM,UAChB,SAAS,MAAM,QAAO,GAErB,SAAC,WAAW,YAAY,YAAY,cAAc,WAAS;AAAK,iBAC/DjC;YAAA;YAAAW,UAAA,EACE,WAAW,MAAM,gBAAgB,OAAO,UAAU,EAAE,KAAK,GAAG,GAC5D,OAAO;cACL,aAAa,UAAU;cACvB,iBAAiB,UAAU;eAE7B,KAAK,UAAS,GACV,kBAAkB,KAAK,OAAO,CAAC;YAEnCX,eAAA,OAAA,EAAK,WAAU,iBAAgB,KAAK,YAAY,OAAO,EAAE,OAAO,UAAU,UAAS,EAAE,GAClF,YAAY;YAEd,UAAU,oBACTA,eAAA,OAAA,EAAK,WAAU,0CAAyC,CAAA;YACzD,UAAU,kBACTA,eAAA,OAAA,EAAK,WAAU,wCAAuC,CAAA;UAAG;QACzD,CACL;;AAIT,aAAAgC;IAAA,EAlDmC9B,cAAa;;AAoDhD,WAAS+B,qBAAmB,YAA2B;AACrD,WACEjC;MAAA;MAAA,EAAK,WAAU,sBAAqB;MACjC,WAAW,YACVA,eAAA,OAAA,EAAK,WAAU,gBAAe,GAAE,WAAW,QAAQ;MAErDA;QAAA;QAAA,EAAK,WAAU,2BAA0B;QACvCA,eAAA,OAAA,EAAK,WAAU,2BAA0B,GACtC,WAAW,MAAM,SAASA,eAACY,WAAQ,MAAA,MAAA,CAAkB;MAClD;IACF;EAGZ;AEtEA,MAAM,iBAAiB,gBAAgB,EAAE,KAAK,UAAS,CAAE;;;;AAgCrB,gBAAAsB,iBAAA,MAAA;AAApC,eAAAA,kBAAA;;;AACE,MAAAA,gBAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACd,YAAAC,WAAY,QAAO;AACzB,YAAI,YAAY,uBAAuB;UACrC,MAAM,MAAM;UACZ,aAAa,MAAM;UACnB,YAAY,MAAM;UAClB,eAAe,MAAM;UACrB,YAAY,MAAM;UAClB,SAAS,QAAQ;UACjB,SAAS,QAAQ;SAClB;AAED,eACEC,eAAC,aAAW,EACV,WACA,SAASD,SAAQ,gBACjB,gBAAgB,MAAM,eAAc,GAEnC,MAAM,QAAQ;;AAIvB,aAAAD;IAAA,EAxBoCG,cAAa;;WA0BjC,uBAAuB,KAA0B;AACzD,QAAA,OAAkB,IAAG,MAAf,UAAY,IAAG;AAC3B,QAAI,UAAU,YAAY,MAAM,IAAI,YAAY,MAAM,IAAI,WAAW;AAErE,WAAAC,UAAAA,UAAAA,UAAA,EACE,MAAM,QAAQ,OAAO,IAAI,GACzB,MAAM,IAAI,QAAO,GACd,OAAO,GAAA,EACV,eAAe,IAAI,gBAAgB,QAAQ,OAAO,MAAM,cAAc,IAAI,GAAE,CAAA,GACzE,IAAI,UAAU;EAErB;;;;AC7CiC,gBAAAC,cAAA,MAAA;AAAjC,eAAAA,eAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,kBAAkB,cAAc,sBAAsB;AACtD,cAAA,sBAAsB,yBAAwB;;;AAE9C,MAAAA,aAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACd,YAAAJ,WAAY,QAAO;AACzB,YAAI,YAAY,KAAK,gBAAgB;UACnC,MAAM,MAAM;UACZ,aAAa,MAAM;UACnB,YAAY,MAAM;UAClB,eAAe,MAAM;UACrB,YAAY,MAAM;UAClB,SAAS,QAAQ;UACjB,SAAS,QAAQ;SAClB;AAED,YAAI,aAAa,iBAAiB,WAAW,QAAQ,KAAK,EAAE,OAC1D,UAAU,aACN,CAAA,IACA,KAAK,oBAAoBA,SAAQ,mBAAmB,SAAS,CAAC;AAGpE,YAAI,YAAY,UAAU,aAAa,CAAA,IAAK;UAC1C,aAAa,gBAAgB,MAAM,IAAI;;AAGzC,eACEC,eAAC,WAAS,EACR,WACA,UAAUD,SAAQ,iBAClB,aAAaA,SAAQ,oBACrB,OAAO,MAAM,MAAK,GAEjB,SAAC,WAAS;AAAK,iBAAA,MAAM,SAAS,WAAW,YAAY,WAAW,UAAU,UAAU;QAAC,CAAA;;AAI9F,aAAAI;IAAA,EAtCiCF,cAAa;;WC/B9B,WAAW,UAAgB;AACzC,WACED,eAAA,OAAA,EAAK,WAAW,QAAM,SAAU,CAAA;EAEpC;MASa,UAAU,SAAC,OAAmB;AAAK,WAC9CA,eAAC,WAAS,EACR,gBAAgB,oBAChB,KAAK,MAAM,KACX,UAAS,IACT,iBAAe,MACf,iBAAe,MACf,YAAY,OACZ,YAAY,OACZ,iBAAiB,OACjB,YAAY,OACZ,QAAQ,MAAM,QACd,UAAU,MAAM,UAChB,SAAS,MAAM,QAAO,GAErB,SAAC,WAAW,YAAY,YAAY,cAAc,WAAS;AAAK,aAC/DA,eAAA,OAAA,EACE,KAAK,WACL,WAAW,CAAC,aAAa,EAAE,OAAO,UAAU,EAAE,KAAK,GAAG,GACtD,OAAO;QACL,iBAAiB,UAAU;QAC5B,GAEA,YAAY;IACT,CACP;EACS;AAGd,WAAS,mBAAmB,OAAsB;AAC1C,QAAA,QAAU,MAAM,MAAK;AAE3B,WAAO,SACLA,eAAA,OAAA,EAAK,WAAU,iBAAgB,GAAE,MAAM,MAAM,KAAK;EAEtD;MClCa,iBAAiB,SAAC,OAA0B;AAAK,WAC5DA,eAAC,gBAAgB,UAAQ,MACtB,SAAC,SAAoB;AACd,UAAA,UAAqB,QAAO,SAAnBD,WAAY,QAAO;AAC5B,UAAA,OAAS,MAAK;AACpB,UAAIK,UAASL,SAAQ,oBAAoB,MAAM;AAC/C,UAAI,MAAM,QAAQ,kBAAkB,IAAI;AACxC,UAAI,OAAO,QAAQ,OAAO,MAAMK,OAAM;AACtC,UAAI,YAAkC,EAAE,KAAK,MAAM,KAAI;AAEvD,aACEJ,eAAC,YAAU,EACT,WACA,YAAYD,SAAQ,sBACpB,SAASA,SAAQ,mBACjB,gBAAgB,aAChB,UAAUA,SAAQ,oBAClB,aAAaA,SAAQ,sBAAqB,GAEzC,MAAM,QAAQ;IAGrB,CAAC;EACwB;AAG7B,WAAS,YAAY,YAAU;AAC7B,WAAO,WAAW;EACpB;AC5BA,MAAM,wBAAwB;AAE9B,MAAAM;;IAAA,SAAA,QAAA;AAA6B,gBAAAA,UAAA,MAAA;AAA7B,eAAAA,WAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AAEE,cAAA,QAAQ;UACN,SAAS,eAAc;;AAkDzB,cAAA,eAAe,SAAC,IAAsB;AACpC,gBAAK,SAAS;AAEd,cAAI,MAAK,MAAM,OAAO;AACpB,mBAAO,MAAK,MAAM,OAAO,EAAE;;;AAK/B,cAAA,0BAA0B,SAAC,IAAE;AAE3B,cAAM,SAAS,sBAAsB,EAAE;AACvC,cAAI,CAAC,MAAK,OAAO,SAAS,MAAM,GAAG;AACjC,kBAAK,iBAAgB;;;AAIzB,cAAA,wBAAwB,SAAC,IAAE;AACzB,cAAI,GAAG,QAAQ,UAAU;AACvB,kBAAK,iBAAgB;;;AAIzB,cAAA,mBAAmB,WAAA;AACX,cAAA,UAAY,MAAK,MAAK;AAC5B,cAAI,SAAS;AACX,oBAAO;;;;;AAzEX,MAAAA,SAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAqB,KAAK,SAAxB,QAAK,GAAA,OAAEN,WAAO,GAAA;AAChB,YAAA,KAAmB,MAAjB,QAAK,GAAA,OAAE,QAAK,GAAA;AAClB,YAAI,aAAa;UACf;UACA,MAAM,SAAS,SAAS;UACxB,OACA,MAAM,mBAAmB,CAAA,CAAE;AAG7B,eAAO,aACLC;UAAA;UAAAE,UAAA,EACE,IAAI,MAAM,IACV,WAAW,WAAW,KAAK,GAAG,GAAC,mBACd,MAAM,QAAO,GAC1B,MAAM,YAAU,EACpB,KAAK,KAAK,aAAY,CAAA;UAEtBF;YAAA;YAAA,EAAK,WAAW,uBAAuB,MAAM,SAAS,eAAe,EAAC;YACpEA,eAAA,QAAA,EAAM,WAAU,oBAAmB,IAAI,MAAM,QAAO,GACjD,MAAM,KAAK;YAEdA,eAAA,QAAA,EACE,WAAW,sBAAsB,MAAM,aAAa,OAAO,GAC3D,OAAOD,SAAQ,WACf,SAAS,KAAK,iBAAgB,CAAA;UAC9B;UAEJC,eAAA,OAAA,EAAK,WAAW,qBAAqB,MAAM,SAAS,gBAAgB,EAAC,GAClE,MAAM,QAAQ;QACX,GAER,MAAM,QAAQ;;AAIlB,MAAAK,SAAA,UAAA,oBAAA,WAAA;AACE,iBAAS,iBAAiB,aAAa,KAAK,uBAAuB;AACnE,iBAAS,iBAAiB,WAAW,KAAK,qBAAqB;AAC/D,aAAK,WAAU;;AAGjB,MAAAA,SAAA,UAAA,uBAAA,WAAA;AACE,iBAAS,oBAAoB,aAAa,KAAK,uBAAuB;AACtE,iBAAS,oBAAoB,WAAW,KAAK,qBAAqB;;AAiC5D,MAAAA,SAAA,UAAA,aAAR,WAAA;AACQ,YAAA,QAAU,KAAK,QAAO;AACxB,YAAA,KAAgC,KAAK,OAAnC,cAAW,GAAA,aAAE,eAAY,GAAA;AACzB,YAAAC,UAAW,KAAI;AAErB,YAAI,gBAAgB,yBAAyB,WAAW;AACxD,YAAI,eAAe;AACjB,cAAI,cAAcA,QAAO,sBAAqB;AAG9C,cAAI,aAAa,eACb,eAAe,aAAa,gBAAgB,EAAE,sBAAqB,EAAG,MACtE,cAAc;AAClB,cAAI,cAAc,QAAQ,cAAc,QAAQ,YAAY,QAAQ,cAAc;AAGlF,uBAAa,KAAK,IAAI,YAAY,qBAAqB;AACvD,wBAAc,KAAK,IAAI,aAAa,SAAS,gBAAgB,cAAc,wBAAwB,YAAY,KAAK;AACpH,wBAAc,KAAK,IAAI,aAAa,qBAAqB;AAEzD,cAAI,WAASA,QAAO,aAAa,sBAAqB;AACtD,qBAAWA,SAAQ;YACjB,KAAK,aAAa,SAAO;YACzB,MAAM,cAAc,SAAO;WAC5B;;;AAGP,aAAAD;IAAA,EA9G6BJ,cAAa;;ACI1C,MAAA;;IAAA,SAAA,QAAA;AAAiC,gBAAAM,cAAA,MAAA;AAAjC,eAAAA,eAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AAmCE,cAAA,eAAe,SAACD,SAA6B;AAC3C,gBAAK,SAASA;AACd,cAAIA,SAAQ;AACV,kBAAK,QAAQ,6BAA6B,OAAM;cAC9C,IAAIA;cACJ,gBAAgB;aACjB;iBACI;AACL,kBAAK,QAAQ,+BAA+B,KAAI;;;;;AAxCpD,MAAAC,aAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAuB,KAAK,SAA1BR,WAAO,GAAA,SAAE,UAAO,GAAA;AAChB,YAAA,QAAU,KAAI;AACd,YAAA,YAAuC,MAAK,WAAjC,aAA4B,MAAK,YAArB,cAAgB,MAAK;AAClD,YAAI,QAAQ,QAAQ,OAAO,WAAWA,SAAQ,gBAAgB;AAC9D,eACEC,eAAC,aAAW,EAAC,MAAM,WAAW,aAA0B,YAAwB,OAAO,KAAK,aAAY,GACrG,SAAC,WAAW,eAAe,WAAS;AAAK,iBACxCA;YAACK;YAAO,EACN,OAAO,WACP,IAAI,MAAM,IACV,OACA,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,aAAa,GACzD,YAAY,WACZ,UAAU,MAAM,UAChB,aAAa,MAAM,aACnB,cAAc,MAAM,cACpB,SAAS,MAAM,QAAO;YAEtBL,eAAC,gBAAc,EAAC,MAAM,WAAW,aAA0B,WAAsB,GAC9E,SAAC,YAAY,cAAY;AAAK,qBAC7B,gBACEA,eAAA,OAAA,EAAK,WAAU,wBAAuB,KAAK,WAAU,GAAG,YAAY;YAAO,CAC9E;YAEF,MAAM;UAAQ;QACP,CACX;;AAiBP,MAAAO,aAAA,UAAA,WAAA,SAAS,cAAsB,aAAqB,SAAiB,UAAgB;AAC/E,YAAA,KAAoB,MAAlBD,UAAM,GAAA,QAAE,QAAK,GAAA;AAEnB,YACE,gBAAgB,KAAK,eAAe,WACpC,eAAe,KAAK,cAAc,UAClC;AACA,iBAAO;YACL,aAAa,MAAM;YACnB,UAAQJ,UAAA,EACN,QAAQ,MACR,OAAO;cACL,OAAO,MAAM;cACb,KAAK,MAAM;cACZ,GACE,MAAM,aAAa;YAExB,OAAOI;YACP,MAAM;cACJ,MAAM;cACN,KAAK;cACL,OAAO;cACP,QAAQ;;YAEV,OAAO;;;;AAIX,eAAO;;AAEX,aAAAC;IAAA,EA7EiC,aAAa;;;;;AC+BZ,gBAAAC,eAAA,MAAA;AAAlC,eAAAA,gBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,YAAY,UAAS;AAG7B,cAAA,QAAQ;UACN,eAAe;UACf,WAAW,eAAc;;AAqF3B,cAAA,cAAc,SAAC,IAAc;AACvB,cAAA,KAAqB,OAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACd,cAAA,gBAAkB,QAAQ,QAAO;AACvC,cAAI,OAAO,aAAa,KAAK,EAAE;AAE/B,mBAAS,eAAe,KAAQ;AAC1B,gBAAAC,MAA2B,IAAI,YAA7B,MAAGA,IAAA,KAAE,WAAQA,IAAA,UAAEC,SAAKD,IAAA;AAC1B,mBAAO;cACL,OAAO,IAAI,SAAS,SAAS,KAAK,QAAQ;cAC1C,OAAO,QAAQ,QAAQ,OAAOC,OAAM,KAAK;cACzC,KAAK,QAAQ,QAAQ,OAAOA,OAAM,GAAG;cACrC,SAAS,IAAI;cACb,OAAO,IAAI;;;AAIf,cAAI,OAAO,kBAAkB,YAAY;AACvC,4BAAgB,cAAc;cAC5B;cACA,QAAQ,QAAQ,MAAM,UAAU;cAChC,SAAS,MAAM,QAAQ,IAAI,cAAc;cACzC,YAAY,MAAM,WAAW,IAAI,cAAc;cAC/C,SAAS;cACT,MAAM,QAAQ;aACf;;AAGH,cAAI,CAAC,iBAAiB,kBAAkB,WAAW;AACjD,kBAAK,SAAS,EAAE,eAAe,KAAI,CAAE;qBAC5B,OAAO,kBAAkB,UAAU;AAC5C,oBAAQ,YAAY,OAAO,MAAM,aAAa;;;AAIlD,cAAA,qBAAqB,WAAA;AACnB,gBAAK,SAAS,EAAE,eAAe,MAAK,CAAE;;;;AArHxC,MAAAF,cAAA,UAAA,SAAA,WAAA;AAAA,YAAA,QAAA;AACM,YAAA,KAAmB,MAAjB,QAAK,GAAA,OAAE,QAAK,GAAA;AAClB,eACER,eAAC,gBAAgB,UAAQ,MACtB,SAAC,SAAoB;AACd,cAAA,UAAkC,QAAO,SAAhCD,WAAyB,QAAO,SAAvB,cAAgB,QAAO;AACzC,cAAA,eAAiBA,SAAO;AACxB,cAAA,UAAY,MAAK;AACvB,cAAIW,SAAQ,aAAa,KAAK;AAE9B,cAAI,OAAO,OAAO,iBAAiB,aAC/B,aAAa,KAAK,aAAa,OAAO,IACtC,MAAI,UAAO,MAAI;AACnB,cAAI,QAAQ,mBAAmBX,SAAQ,cAAc,CAAC,OAAO,GAAG,IAAI;AACpE,cAAI,YAAgC;YAClC,KAAK;YACL,WAAW,MAAI;YACf;YACA,MAAM;;AAGR,iBACEC;YAACW;YAAQ;YACN,QAAQ,MAAM,OAAO,KACpBX,eAAC,YAAU,EACT,OAAO,MAAK,WACZ,WACA,YAAYD,SAAQ,oBACpB,SAASA,SAAQ,iBACjB,gBAAgB,MAAM,kBAAkB,qBACxC,UAAUA,SAAQ,kBAClB,aAAaA,SAAQ,oBAAmB,GAEvC,SAAC,WAAW,kBAAkB,YAAY,cAAY;AAAK,qBAAA,MAAM,SAChE,WACA,CAAC,cAAc,EAAE,OAAO,gBAAgB,GACxC,YACA,cACA,MAAK,aACL,OACA,MAAM,eACN,MAAM,gBAAgB,MAAM,YAAY,EAAE;YAC3C,CAAA;YAGJ,MAAM,iBACLC,eAAC,aAAW,EACV,IAAI,MAAM,WACV,WAAWU,OAAM,OACjB,SAASA,OAAM,KACf,aAAa,MAAM,aACnB,YAAY,MAAM,YAClB,eAAe,MAAM,eACrB,UAAU,MAAK,UACf,aAAa,MAAM,eAAe,SAClC,cAAc,MAAM,cACpB,SAAS,MAAK,mBAAkB,GAE/B,MAAM,eAAc,CAAE;UAE1B;SAGN;;AAKP,MAAAF,cAAA,UAAA,oBAAA,WAAA;AACE,aAAK,eAAc;;AAGrB,MAAAA,cAAA,UAAA,qBAAA,WAAA;AACE,aAAK,eAAc;;AAGrB,MAAAA,cAAA,UAAA,iBAAA,WAAA;AACE,YAAI,KAAK,UAAU,SAAS;AAC1B,eAAK,WAAW,eAAe,KAAK,UAAU,SAAS,kBAAkB;;;AAyC/E,aAAAA;IAAA,EAhIkCP,cAAa;;AAkI/C,WAAS,oBAAoB,OAAyB;AACpD,WAAO,MAAM;EACf;AAEA,WAAS,aAAa,OAAwB;AAC5C,QAAI,MAAM,YAAY;AACpB,aAAO;QACL,OAAO,MAAM;QACb,KAAKW,SAAQ,MAAM,YAAY,CAAC;;;AAI9B,QAAA,aAAe,MAAK;AAC1B,WAAO;MACL,OAAO,wBAAwB,UAAU;MACzC,KAAK,oBAAoB,UAAU;;EAEvC;WAEgB,wBAAwB,MAAW;AACjD,WAAO,KAAK,OAAO,iBAAiB,EAAE,WAAW,MAAM;EACzD;AAEA,WAAS,kBAAkB,MAAW,MAAS;AAC7C,WAAO,KAAK,WAAW,MAAM,QAAQ,KAAK,WAAW,MAAM,QAAQ,OAAO;EAC5E;AAEA,WAAS,oBAAoB,MAAW;AACtC,WAAO,KAAK,OAAO,aAAa,EAAE,WAAW,MAAM;EACrD;AAEA,WAAS,cAAc,MAAW,MAAS;AACzC,WAAO,KAAK,WAAW,MAAM,MAAM,KAAK,WAAW,MAAM,MAAM,OAAO;EACxE;;;;;;AErN8B,gBAAAC,WAAA,MAAA;AAW5B,eAAAA,UAAY,IAAiB,iBAAqC;AAArC,YAAA,oBAAA,QAAA;AAAA,4BAAA,CAAA;QAAqC;AAAlE,YAAA,QACE,OAAA,KAAA,IAAA,KAAO;AART,cAAA,cAAc;AACd,cAAA,aAAa;AACb,cAAA,oBAA8B,CAAA;AAC9B,cAAA,wBAAwB;AAkBxB,cAAA,eAAe,SAAC,QAAc;AAE5B,kBAAQ,OAAO,MAAI;YACjB,KAAK;YACL,KAAK;AACH,oBAAK,aAAa,SAAQ;;;AAIhC,cAAA,aAAa,SAACC,OAAkB;AAC9B,gBAAK,cAAcA;AACnB,gBAAK,aAAa,QAAQA,MAAK,gBAAgB,aAAa;;AAG9D,cAAA,sBAAsB,WAAA;AACpB,cAAI,MAAK,aAAa;AACpB,kBAAK,aAAa;AACZ,gBAAA,gBAAgB,MAAI;AAE1B,YAAAC,WAAU,WAAA;AACR,qBACEC,eAAC,cAAY,EAAC,SAAS,cAAY,iBAAiB,OAAO,cAAY,OAAO,SAAS,cAAY,QAAO,GACvG,SAAC,YAAYC,SAAQ,cAAc,UAAQ;AAC1C,sBAAK,cAAc,UAAU;AAC7B,sBAAK,UAAUA,OAAM;AAErB,uBACED;kBAAC,2BAA2B;kBAAQ,EAAC,OAAO,MAAK,sBAAqB;kBACpEA,eAAC,iBAAeE,UAAA,EACd,cACA,SAAkB,GACd,aAAW,CAAA;gBACf;eAGP,GAEH,MAAK,EAAE;aAEV;qBACQ,MAAK,YAAY;AAC1B,kBAAK,aAAa;AAClB,YAAAC,wBAAuB,MAAK,EAAE;AAC9B,kBAAK,cAAc,CAAA,CAAE;AACrB,kBAAK,UAAU,EAAE;;;AAvDnB,cAAK,KAAK;AACV,cAAK,eAAe,IAAI,cAAc,MAAK,mBAAmB;AAE9D,YAAI,oBAAoB;UACtB;UACA,aAAa;UACb,UAAU,MAAK;UACf,QAAQ,MAAK;SACd;;;AAbH,aAAA,eAAIN,UAAA,WAAA,QAAI;aAAR,WAAA;AAAa,iBAAO,KAAK,YAAY;QAAO;;;;AAgE5C,MAAAA,UAAA,UAAA,SAAA,WAAA;AACE,YAAI,eAAe,KAAK;AAExB,YAAI,CAAC,cAAc;AACjB,eAAK,cAAc;eACd;AACL,eAAK,yBAAyB;;AAGhC,aAAK,aAAa,QAAO;AAEzB,YAAI,cAAc;AAChB,eAAK,WAAU;;;AAInB,MAAAA,UAAA,UAAA,UAAA,WAAA;AACE,YAAI,KAAK,aAAa;AACpB,eAAK,cAAc;AACnB,eAAK,aAAa,QAAO;;;AAI7B,MAAAA,UAAA,UAAA,aAAA,WAAA;AAAA,YAAA,QAAA;AACE,QAAAE,WAAU,WAAA;AACR,iBAAA,UAAM,WAAU,KAAA,KAAA;SACjB;;AAGH,MAAAF,UAAA,UAAA,iBAAA,SAAe,MAAI;AACjB,aAAK,aAAa,MAAM,gBAAgB;AACxC,aAAI;AACJ,aAAK,aAAa,OAAO,gBAAgB;;AAG3C,MAAAA,UAAA,UAAA,iBAAA,WAAA;AACE,aAAK,aAAa,MAAM,gBAAgB;;AAG1C,MAAAA,UAAA,UAAA,kBAAA,WAAA;AACE,aAAK,aAAa,OAAO,kBAAkB,IAAI;;AAGjD,MAAAA,UAAA,UAAA,eAAA,SAAa,iBAAiB,QAAO;AACnC,aAAK,mBAAmB,aAAa,iBAAiB,MAAM;;AAG9D,MAAAA,UAAA,UAAA,gBAAA,SAAc,YAAoB;AAChC,YAAI,CAAC,cAAc,YAAY,KAAK,iBAAiB,GAAG;AAChD,cAAAO,aAAc,KAAK,GAAE;AAE3B,mBAAsB,KAAA,GAAA,KAAA,KAAK,mBAAL,KAAA,GAAA,QAAA,MAAwB;AAAzC,gBAAI,YAAS,GAAA,EAAA;AAChB,YAAAA,WAAU,OAAO,SAAS;;AAG5B,mBAAsB,KAAA,GAAA,eAAA,YAAA,KAAA,aAAA,QAAA,MAAY;AAA7B,gBAAI,YAAS,aAAA,EAAA;AAChB,YAAAA,WAAU,IAAI,SAAS;;AAGzB,eAAK,oBAAoB;;;AAI7B,MAAAP,UAAA,UAAA,YAAA,SAAUI,SAAmB;AAC3B,uBAAe,KAAK,IAAI,UAAUA,OAAM;;AAE5C,aAAAJ;IAAA,EA3I8B,WAAW;;;;;;;ACiBiB,gBAAAQ,YAAA,MAAA;AAA1D,eAAAA,aAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACY,cAAA,cAA+C,UAAS;;;AAElE,MAAAA,WAAA,UAAA,qBAAA,SACE,kBACA,aAA4D;AAExD,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACpB,YAAI,WAAsC,CAAA;AAC1C,YAAI,oBAAoB,qBAAqB,QAAQ,OAAO;AAE5D,YAAI,kBAAkB;AACpB,mBAAS,KAAK;YACZ,MAAM;YACN,KAAK;YACL,UAAU;YACV,OAAO;cACL,OAAO,KAAK;cACZ,gBAAgB;cAChB,YAAY;;WAEf;;AAGH,iBAAS,KAAK;UACZ,MAAM;UACN,KAAK;UACL,QAAQ;UACR,OAAO,EAAE,SAAS,YAAW;SAC9B;AAED,eACEC,eAAC,UAAQ,EAAC,UAAU,QAAQ,SAAQ,GACjC,SAAC,WAAW,YAAU;AAAK,iBAC1BA;YAAA;YAAA,EAAK,KAAK,WAAW,WAAW,CAAC,YAAY,EAAE,OAAO,UAAU,EAAE,KAAK,GAAG,EAAC;YACzEA,eAAC,kBAAgB,EACf,QAAQ,CAAC,MAAM,gBAAgB,CAAC,MAAM,UACtC,kBAAkB,MAAM,UACxB,MAAM,CAAA,GACN,SAAkB,CAAA;UAClB;QACE,CACP;;AAKP,MAAAD,WAAA,UAAA,sBAAA,SACE,kBACA,aACA,QACA,aAAmB;AAEnB,YAAI,aAAa,KAAK,QAAQ,YAAY;AAE1C,YAAI,CAAC,YAAY;AACf,gBAAM,IAAI,MAAM,8BAA8B;;AAG5C,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACpB,YAAI,oBAAoB,CAAC,MAAM,YAAY,qBAAqB,QAAQ,OAAO;AAC/E,YAAI,wBAAwB,CAAC,MAAM,YAAY,yBAAyB,QAAQ,OAAO;AACvF,YAAI,WAAsC,CAAA;AAE1C,YAAI,kBAAkB;AACpB,mBAAS,KAAK;YACZ,MAAM;YACN,KAAK;YACL,UAAU;YACV,QAAQ,CAAC;cACP,KAAK;cACL,OAAO,KAAK;cACZ,gBAAgB;cAChB,YAAY;aACb;WACF;;AAGH,iBAAS,KAAK;UACZ,MAAM;UACN,KAAK;UACL,QAAQ;UACR,QAAQ,CAAC;YACP,KAAK;YACL,SAAS;WACV;SACF;AAED,YAAI,uBAAuB;AACzB,mBAAS,KAAK;YACZ,MAAM;YACN,KAAK;YACL,UAAU;YACV,QAAQ,CAAC;cACP,KAAK;cACL,SAAS;aACV;WACF;;AAGH,eACEC,eAAC,UAAQ,EAAC,UAAU,QAAQ,SAAQ,GACjC,SAAC,WAAW,YAAU;AAAK,iBAC1BA;YAAA;YAAA,EAAK,KAAK,WAAW,WAAW,CAAC,YAAY,EAAE,OAAO,UAAU,EAAE,KAAK,GAAG,EAAC;YACzEA,eAAC,YAAU,EACT,QAAQ,CAAC,MAAM,gBAAgB,CAAC,MAAM,UACtC,kBAAkB,MAAM,UACxB,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,QAAQ,UAAU,YAAW,CAAE,EAAC,CAAE,GAC/D,SAAkB,CAAA;UAClB;QACE,CACP;;AAIT,aAAAD;IAAA,EAnH0D,aAAa;;WCbvD,eAAe,MAAkB,QAAc;AAC7D,QAAI,QAAsB,CAAA;AAE1B,aAASE,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAClC,YAAMA,EAAC,IAAI,CAAA;;AAGb,aAAgB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAjB,UAAI,MAAG,OAAA,EAAA;AACV,YAAM,IAAI,GAAG,EAAE,KAAK,GAAG;;AAGzB,WAAO;EACT;WAEgB,oBAAoB,MAAkB,QAAc;AAClE,QAAI,QAAsB,CAAA;AAE1B,aAASA,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAClC,YAAMA,EAAC,IAAI,CAAA;;AAGb,aAAgB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAjB,UAAI,MAAG,OAAA,EAAA;AACV,YAAM,IAAI,QAAQ,EAAE,KAAK,GAAG;;AAG9B,WAAO;EACT;WAEgB,sBAAsB,IAAuC,QAAc;AACzF,QAAI,QAAsC,CAAA;AAE1C,QAAI,CAAC,IAAI;AACP,eAASA,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAClC,cAAMA,EAAC,IAAI;;WAER;AACL,eAASA,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAClC,cAAMA,EAAC,IAAI;UACT,mBAAmB,GAAG;UACtB,SAAS,GAAG;UACZ,MAAM,CAAA;;;AAIV,eAAgB,KAAA,GAAA,KAAA,GAAG,MAAH,KAAA,GAAA,QAAA,MAAS;AAApB,YAAI,MAAG,GAAA,EAAA;AACV,cAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG;;;AAIhC,WAAO;EACT;ACrCA,MAAA;;IAAA,SAAA,QAAA;AAAkC,gBAAAC,eAAA,MAAA;AAAlC,eAAAA,gBAAA;;;AACE,MAAAA,cAAA,UAAA,SAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AACpB,YAAI,eAAe,kBAAkB,KAAK,SAAS,MAAM,IAAI;AAE7D,eACEF,eAAC,gBAAc,EACb,MAAM,MAAM,MACZ,aAAa,MAAM,aACnB,YAAY,MAAM,YAClB,eAAe,MAAM,eACrB,gBAAgB,MAAM,gBACtB,gBAAgB,eAAc,GAE7B,SAAC,YAAY,cAAY;AAAK,kBAC5B,gBAAgB,MAAM,gBACrBA;YAAA;YAAA,EAAK,WAAU,sBAAqB,KAAK,WAAU;YACjDA,eAAA,KAAAG,UAAA,EACE,IAAI,MAAM,aACV,WAAU,wBAAuB,GAC7B,YAAY,GAEf,gBAAgBH,eAACI,WAAQ,MAAA,MAAA,CAAkB;UAC1C;QAEP,CACF;;AAIT,aAAAF;IAAA,EA9BkCG,cAAa;;AAgC/C,WAAS,eAAe,OAAwB;AAC9C,WAAO,MAAM;EACf;ACtDO,MAAM,kCAAkC,gBAAgB;IAC7D,MAAM;IACN,QAAQ;IACR,gBAAgB;IAChB,UAAU;GACX;WAEe,mBAAmB,KAAa;AACxC,QAAA,UAAY,IAAI,WAAW,GAAE;AAEnC,WAAO,YAAY,eACjB,YAAY,UACZ,CAAC,IAAI,WAAW,IAAI,UACpB,IAAI,aAAa,IAAI;IACrB,IAAI;IACJ,IAAI;EAER;ACbA,MAAA;;IAAA,SAAA,QAAA;AAAqC,gBAAAC,kBAAA,MAAA;AAArC,eAAAA,mBAAA;;;AACE,MAAAA,iBAAA,UAAA,SAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AAEpB,eACEN,eAAC,eAAaG,UAAA,CAAA,GACR,OAAK,EACT,iBAAiB,CAAC,oBAAoB,0BAA0B,YAAY,GAC5E,mBAAmB,iCACnB,wBAAwB,MAAM,wBAC9B,iBAAiB,CAAC,MAAM,IAAI,WAAW,IAAI,OAAM,CAAA,CAAA;;AAIzD,aAAAG;IAAA,EAdqCD,cAAa;;ACelD,MAAA;;IAAA,SAAA,QAAA;AAAwC,gBAAAE,qBAAA,MAAA;AAAxC,eAAAA,sBAAA;;;AACE,MAAAA,oBAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AACpB,YAAI,aAAa,QAAQ,QAAQ,mBAAmB;AACpD,YAAI,WAAW,iBACb,MAAM,KACN,YACA,SACA,MACA,MAAM,sBAAsB;AAG9B,eACEP,eAAC,WAAS,EACR,KAAK,MAAM,KACX,UACA,gBAAgBQ,qBAChB,YAAY,MAAM,YAClB,YAAY,OACZ,iBAAiB,OACjB,YAAY,MAAM,YAClB,QAAQ,MAAM,QACd,UAAU,MAAM,UAChB,SAAS,MAAM,QAAO,GAErB,SAAC,WAAW,YAAY,YAAY,cAAY;AAAK;;YACpDR,eAAA,KAAAG,UAAA,EACE,WAAW,CAAC,oBAAoB,sBAAsB,EAAE,OAAO,UAAU,EAAE,KAAK,GAAG,GACnF,KAAK,UAAS,GACV,kBAAkB,MAAM,KAAK,OAAO,CAAC,GAExC,YAAY;;QACX,CACL;;AAIT,aAAAI;IAAA,EArCwCF,cAAa;;AAuCrD,WAASG,oBAAmB,YAA2B;AACrD,WACER;MAACI;MAAQ;MACPJ,eAAA,OAAA,EACE,WAAU,wBACV,OAAO,EAAE,aAAa,WAAW,eAAe,WAAW,gBAAe,EAAE,CAAA;MAE7E,WAAW,YACVA,eAAA,OAAA,EAAK,WAAU,gBAAe,GAAE,WAAW,QAAQ;MAErDA,eAAA,OAAA,EAAK,WAAU,iBAAgB,GAC5B,WAAW,MAAM,SAASA,eAACI,WAAQ,MAAA,MAAA,CAAkB;IAClD;EAGZ;ACzCA,MAAA;;IAAA,SAAA,QAAA;AAAuC,gBAAAK,oBAAA,MAAA;AAAvC,eAAAA,qBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,cAAc,QAAQ,WAAW;;;AAEjC,MAAAA,mBAAA,UAAA,SAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AAChB,YAAA,KAA6B,KAAK,YAAY,MAAM,gBAAgB,GAAlE,UAAO,GAAA,SAAE,gBAAa,GAAA;AAE5B,eACET,eAAC,cAAY,EACX,aAAa,MAAM,aACnB,YAAY,MAAM,YAClB,YAAY,MAAM,YAClB,SAAS,MAAM,SACf,SACA,YAAY,eACZ,gBAAgB,MAAM,gBACtB,cAAc,MAAM,cACpB,eAAe,MAAM,eACrB,gBAAgB,WAAA;AACd,cAAI,qBACD,MAAM,YAAY,MAAM,UAAU,oBAAoB,UACtD,MAAM,cAAc,MAAM,YAAY,oBAAoB,SAC3D,CAAA;AACF,iBACEA,eAACI,WAAQ,MACN,QAAQ,IAAI,SAAC,KAAG;AACf,gBAAI,aAAa,IAAI,WAAW,SAAS;AACzC,mBACEJ,eAAA,OAAA,EACE,WAAU,4BACV,KAAK,YACL,OAAO;cACL,YAAY,kBAAkB,UAAU,IAAI,WAAY;cACzD,GAEA,mBAAmB,GAAG,IACrBA,eAAC,oBAAkBG,UAAA,EACjB,KACA,YAAY,OACZ,YAAY,eAAe,MAAM,gBACjC,wBAAwB,MAAK,GACzB,WAAW,KAAK,MAAM,UAAU,CAAC,CAAA,IAGvCH,eAAC,iBAAeG,UAAA,EACd,KACA,YAAY,OACZ,YAAY,OACZ,iBAAiB,OACjB,YAAY,eAAe,MAAM,gBACjC,wBAAwB,MAAK,GACzB,WAAW,KAAK,MAAM,UAAU,CAAC,CAAA,CAExC;WAGN,CAAC;UAGP,GAEA,SAAC,WAAW,YAAY,YAAY,cAAc,aAAa,OAAO,YAAY,WAAS;AAAK,iBAC/FH,eAAA,KAAAG,UAAA,EACE,KAAK,WACL,WAAW,CAAC,sBAAsB,EAAE,OAAO,UAAU,EAAE,KAAK,GAAG,GAC/D,OAAY,iBACG,YAAU,iBACV,UAAS,GACpB,qBAAqB,WAAW,CAAC,GAEpC,YAAY;QACX,CACL;;AAIT,aAAAM;IAAA,EA5EuCJ,cAAa;;AA8EpD,WAAS,YAAY,kBAAqC;AAIxD,QAAI,UAAsB,CAAA;AAC1B,QAAI,gBAA4B,CAAA;AAEhC,aAAsB,KAAA,GAAA,qBAAA,kBAAA,KAAA,mBAAA,QAAA,MAAkB;AAAnC,UAAI,YAAS,mBAAA,EAAA;AAChB,cAAQ,KAAK,UAAU,GAAG;AAE1B,UAAI,CAAC,UAAU,WAAW;AACxB,sBAAc,KAAK,UAAU,GAAG;;;AAIpC,WAAO,EAAE,SAAS,cAAa;EACjC;ACnFA,MAAM,0BAA0B,gBAAgB,EAAE,MAAM,SAAQ,CAAE;AAElE,MAAA;;IAAA,SAAA,QAAA;AAA+B,gBAAAK,YAAA,MAAA;AAA/B,eAAAA,aAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,YAAY,UAAS;AAC7B,cAAA,QAAQ;UACN,aAAa,eAAc;;AAkF7B,cAAA,eAAe,SAAC,IAAe;AAC7B,iBAAO,MAAK,WAAW,EAAE;AACzB,iBAAO,MAAK,MAAM,OAAO,EAAE;;;;AAjF7B,MAAAA,WAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAuC,MAArC,UAAO,GAAA,SAAE,QAAK,GAAA,OAAE,QAAK,GAAA,OAAE,YAAS,GAAA;AAChC,YAAA,OAAsB,MAAK,MAArB,cAAgB,MAAK;AACjC,YAAI,eAAe,kBAAkB,SAAS,MAAM,MAAM;AAE1D,eACEV,eAAC,aAAW,EACV,MACA,aACA,YAAY,MAAM,YAClB,eAAe,MAAM,eACrB,gBAAgB,MAAM,gBACtB,OAAO,KAAK,aAAY,GAEvB,SAAC,UAAU,eAAe,eAAeW,aAAU;AAAK,iBACvDX;YAAA;YAAAG,UAAA,EACE,KAAK,UACL,MAAK,YACL,WAAW,CAAC,gBAAgB,EAAE,OAAO,eAAe,MAAM,mBAAmB,CAAA,CAAE,EAAE,KAAK,GAAG,EAAC,GACtF,eACA,MAAM,gBACL,MAAM,gBAAgB,EAAE,mBAAmB,MAAM,YAAW,IAAK,CAAA,CAAE;YAExEH;cAAA;cAAA;gBAAK,WAAU;gBAAgD,KAAK,MAAM;;cAAU;cACjF,MAAM,kBACLA,eAAC,gBAAc,EAAC,MAAY,eAAe,wBAAuB,GAC/D,SAAC,WAAW,gBAAgB,YAAY,cAAY;AAAK,uBACxDA,eAAA,KAAAG,UAAA,EACE,KAAK,WACL,WAAW,CAAC,wBAAwB,EAAE,OAAO,cAAc,EAAE,KAAK,GAAG,EAAC,GAClE,YAAY,GAEf,YAAY;cACX,CACL;cAGJ,CAACQ,eACAX,eAAC,cAAY,EACX,MACA,aACA,eAAe,MAAM,eACrB,aAAa,MAAM,aACnB,aAAa,MAAM,aACnB,YAAY,MAAM,YAClB,gBAAgB,MAAM,eAAc,CAAA;cAGxCA;gBAAA;gBAAA,EACE,WAAU,yBACV,KAAK,MAAM,eAAc;gBAExB,MAAM;gBACPA;kBAAA;kBAAA,EAAK,WAAU,yBAAwB,OAAO,EAAE,WAAW,MAAM,cAAa,EAAE;kBAC9EA,eAAC,mBAAiB,EAChB,YAAY,MACZ,kBAAkB,MAAM,kBACxB,SAAS,MAAM,SACf,gBAAgB,WAChB,cAAc,CAAC,MAAM,eACrB,eAAe,MAAM,eACrB,aAAa,MAAM,aACnB,gBAAgB,MAAM,gBACtB,WAAW,MAAM,WACjB,aAAa,MAAM,aACnB,YAAY,MAAM,WAAU,CAAA;gBAC5B;cACE;cAERA,eAAA,OAAA,EAAK,WAAU,oBAAmB,GAC/B,MAAM,SAAS;YACZ;UACF;QACH,CACN;;AAST,aAAAU;IAAA,EAzF+B,aAAa;;WC1B5B,sBACd,MACA,cACA,iBACA,aACA,sBACA,kBACA,OAAqB;AAErB,QAAI,YAAY,IAAI,oBAAmB;AACvC,cAAU,iBAAiB;AAC3B,cAAU,cAAc;AAExB,QAAI,iBAAiB,QAAQ,oBAAoB,MAAM;AACrD,gBAAU,WAAW;AACrB,gBAAU,iBAAiB;eAClB,OAAO,iBAAiB,UAAU;AAC3C,gBAAU,cAAc;eACf,OAAO,oBAAoB,UAAU;AAC9C,gBAAU,cAAc;AACxB,gBAAU,iBAAiB;;AAI7B,QAAI,YAAwB,CAAA;AAC5B,QAAI,oBAAgC,CAAA;AACpC,aAAST,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK,GAAG;AACvC,UAAI,MAAM,KAAKA,EAAC;AACV,UAAA,aAAe,IAAI,WAAW,SAAQ;AAC5C,UAAI,cAAc,qBAAqB,UAAU;AAEjD,UAAI,eAAe,MAAM;AACvB,kBAAU,KAAK;UACb,OAAOA;UACP,WAAW;UACX,MAAM;YACJ,OAAO,IAAI;YACX,KAAK,IAAI,UAAU;;SAEtB;aACI;AACL,0BAAkB,KAAK,GAAG;;;AAI9B,QAAI,gBAAgB,UAAU,QAAQ,SAAS;AAC/C,QAAI,WAAW,UAAU,QAAO;AAC5B,QAAA,KAA+D,WAAW,UAAU,MAAM,KAAK,GAA7F,sBAAmB,GAAA,qBAAE,qBAAkB,GAAA,oBAAE,kBAAe,GAAA;AAE9D,QAAI,WAAqB,CAAA;AACzB,QAAI,iBAA2B,CAAA;AAG/B,aAAgB,KAAA,GAAA,sBAAA,mBAAA,KAAA,oBAAA,QAAA,MAAmB;AAA9B,UAAI,MAAG,oBAAA,EAAA;AACV,yBAAmB,IAAI,QAAQ,EAAE,KAAK;QACpC;QACA,WAAW;QACX,YAAY;QACZ,aAAa;QACb,WAAW;OACZ;AAED,eAAS,MAAM,IAAI,UAAU,OAAO,IAAI,SAAS,OAAO,GAAG;AACzD,4BAAoB,GAAG,EAAE,KAAK;UAC5B,KAAK,WAAW,KAAK,KAAK,MAAM,GAAG,KAAK;UACxC,WAAW;UACX,YAAY;UACZ,aAAa;UACb,WAAW;SACZ;;;AAKL,aAAS,MAAM,GAAG,MAAM,MAAM,QAAQ,OAAO,GAAG;AAC9C,eAAS,KAAK,CAAC;;AAEjB,aAAwB,KAAA,GAAA,kBAAA,eAAA,KAAA,gBAAA,QAAA,MAAe;AAAlC,UAAI,cAAW,gBAAA,EAAA;AAClB,UAAI,MAAM,KAAK,YAAY,KAAK;AAChC,UAAI,aAAa,YAAY;AAE7B,yBAAmB,WAAW,KAAK,EAAE,KAAK;QACxC,KAAK,WAAW,KAAK,WAAW,OAAO,WAAW,KAAK,KAAK;QAC5D,WAAW;QACX,YAAY;QACZ,aAAa;QACb,WAAW;OACZ;AAED,eAAS,MAAM,WAAW,OAAO,MAAM,WAAW,KAAK,OAAO,GAAG;AAC/D,iBAAS,GAAG,KAAK;AACjB,4BAAoB,GAAG,EAAE,KAAK;UAC5B,KAAK,WAAW,KAAK,KAAK,MAAM,GAAG,KAAK;UACxC,WAAW;UACX,YAAY;UACZ,aAAa;UACb,WAAW;SACZ;;;AAKL,aAAS,MAAM,GAAG,MAAM,MAAM,QAAQ,OAAO,GAAG;AAC9C,qBAAe,KAAK,gBAAgB,GAAG,CAAC;;AAG1C,WAAO,EAAE,qBAAqB,oBAAoB,UAAU,eAAc;EAC5E;AAGA,WAAS,WAAW,UAAqB,MAAkB,OAAqB;AAC9E,QAAI,iBAAiB,oBAAoB,UAAU,MAAM,MAAM;AAC/D,QAAI,sBAA6C,CAAA;AACjD,QAAI,qBAA4C,CAAA;AAChD,QAAI,kBAA4B,CAAA;AAEhC,aAAS,MAAM,GAAG,MAAM,MAAM,QAAQ,OAAO,GAAG;AAC9C,UAAI,QAAQ,eAAe,GAAG;AAG9B,UAAI,mBAAwC,CAAA;AAC5C,UAAI,gBAAgB;AACpB,UAAI,mBAAmB;AACvB,eAAiB,KAAA,GAAA,UAAA,OAAA,KAAA,QAAA,QAAA,MAAO;AAAnB,YAAI,OAAI,QAAA,EAAA;AACX,YAAI,MAAM,KAAK,KAAK,KAAK;AACzB,yBAAiB,KAAK;UACpB,KAAK,WAAW,KAAK,KAAK,MAAM,GAAG,KAAK;UACxC,WAAW;UACX,YAAY;UACZ,aAAa,KAAK;UAClB,WAAW,KAAK,aAAa;SAC9B;AACD,wBAAgB,KAAK,aAAa,KAAK;;AAIzC,UAAI,kBAAuC,CAAA;AAC3C,sBAAgB;AAChB,yBAAmB;AACnB,eAAiB,KAAA,GAAA,UAAA,OAAA,KAAA,QAAA,QAAA,MAAO;AAAnB,YAAI,OAAI,QAAA,EAAA;AACX,YAAI,MAAM,KAAK,KAAK,KAAK;AACzB,YAAI,aAAa,KAAK,KAAK,MAAM,KAAK,KAAK,QAAQ;AACnD,YAAI,aAAa,KAAK,KAAK,UAAU;AAErC,4BAAoB,KAAK,aAAa;AACtC,wBAAgB,KAAK,aAAa,KAAK;AAEvC,YAAI,YAAY;AACd,8BAAoB,KAAK;AACzB,cAAI,YAAY;AACd,4BAAgB,KAAK;cACnB,KAAK,WAAW,KAAK,KAAK,KAAK,OAAO,KAAK,KAAK,KAAK,KAAK;cAC1D,WAAW;cACX,YAAY;cACZ,aAAa,KAAK;cAClB,WAAW;aACZ;;mBAEM,YAAY;AACrB,0BAAgB,KAAK;YACnB,KAAK,WAAW,KAAK,KAAK,KAAK,OAAO,KAAK,KAAK,KAAK,KAAK;YAC1D,WAAW;YACX,YAAY;YACZ,aAAa,KAAK;YAClB,WAAW;;WACZ;AACD,6BAAmB;;;AAIvB,0BAAoB,KAAK,gBAAgB;AACzC,yBAAmB,KAAK,eAAe;AACvC,sBAAgB,KAAK,gBAAgB;;AAGvC,WAAO,EAAE,qBAAqB,oBAAoB,gBAAe;EACnE;AAEA,WAAS,oBAAoB,OAAkB,QAAc;AAC3D,QAAI,iBAA8B,CAAA;AAElC,aAAS,MAAM,GAAG,MAAM,QAAQ,OAAO,GAAG;AACxC,qBAAe,KAAK,CAAA,CAAE;;AAGxB,aAAiB,KAAA,GAAA,UAAA,OAAA,KAAA,QAAA,QAAA,MAAO;AAAnB,UAAI,OAAI,QAAA,EAAA;AACX,eAAS,MAAM,KAAK,KAAK,OAAO,MAAM,KAAK,KAAK,KAAK,OAAO,GAAG;AAC7D,uBAAe,GAAG,EAAE,KAAK,IAAI;;;AAIjC,WAAO;EACT;AAEA,WAAS,WAAW,KAAe,WAAmB,SAAiB,OAAqB;AAC1F,QAAI,IAAI,aAAa,aAAa,IAAI,YAAY,UAAU,GAAG;AAC7D,aAAO;;AAGT,QAAI,aAAa,IAAI;AACrB,QAAI,YAAY,WAAW;AAC3B,QAAI,cAAc,gBAAgB,WAAW;MAC3C,OAAO,MAAM,SAAS,EAAE;MACxB,KAAKW,SAAQ,MAAM,UAAU,CAAC,EAAE,MAAM,CAAC;KACxC;AAED,WAAAT,UAAAA,UAAA,CAAA,GACK,GAAG,GAAA,EACN,UAAU,WACV,SAAS,UAAU,GACnB,YAAY;MACV,KAAK,WAAW;MAChB,IAAEA,UAAAA,UAAA,CAAA,GAAO,WAAW,EAAE,GAAA,EAAE,kBAAkB,MAAK,CAAA;MAC/C,UAAU,WAAW;MACrB,OAAO;OAET,SAAS,IAAI,WAAW,YAAY,MAAM,QAAO,MAAO,UAAU,MAAM,QAAO,GAC/E,OAAO,IAAI,SAAS,YAAY,IAAI,QAAO,MAAO,UAAU,IAAI,QAAO,EAAE,CAAA;EAE7E;AAEA,MAAA;;IAAA,SAAA,QAAA;AAAkC,gBAAAU,sBAAA,MAAA;AAAlC,eAAAA,uBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AAEE,cAAA,iBAA0B;AAG1B,cAAA,cAA2C,CAAA;;;AAE3C,MAAAA,qBAAA,UAAA,UAAA,SAAQ,WAAqB;AAA7B,YAAA,QAAA;AACE,YAAM,aAAa,OAAA,UAAM,QAAO,KAAA,MAAC,SAAS;AAClC,YAAA,iBAAmB,KAAI;AAC/B,YAAM,gBAAgB,SAAC,OAAe;AAAK,iBAAA,CAAC,MAAK,YAAY,cAAc,KAAK,CAAC;QAAC;AAGlF,iBAAS,QAAQ,GAAG,QAAQ,eAAe,QAAQ,SAAS,GAAG;AAC7D,yBAAe,KAAK,IAAI,eAAe,KAAK,EAAE,OAAO,aAAa;;AAGpE,eAAO;;AAGT,MAAAA,qBAAA,UAAA,yBAAA,SAAuB,WAAyB,OAAiB,eAAyB;AAClF,YAAA,KAAkC,MAAhC,iBAAc,GAAA,gBAAE,cAAW,GAAA;AAC3B,YAAA,gBAAkD,UAAS,eAA5C,gBAAmC,UAAS,eAA7B,kBAAoB,UAAS;AAEnE,YAAI,KAAK,kBAAkB,eAAe;AACxC,cAAM,kBAAkB,cAAc,aAAa;AAEnD,cAAI,CAAC,YAAY,eAAe,GAAG;AACjC,gBAAI,KAAK,gBAAgB;AACvB,kBAAM,mBAAgBV,UAAAA,UAAA,CAAA,GACjB,aAAa,GAAA,EAChB,MAAM,eAAe,cAAc,MAAM,MAAM,IAAI,EAAC,CAAA;AAEtD,kBAAM,qBAAqB,cAAc,gBAAgB;AACzD,0BAAY,kBAAkB,IAAI;AAClC,6BAAe,aAAa,EAAE,eAAe,IAAI;AACjD,mBAAK,WAAW,eAAe,OAAO,aAAa;mBAC9C;AACL,0BAAY,eAAe,IAAI;AAC/B,4BAAc,KAAK,aAAa;;;;AAKtC,eAAO,OAAA,UAAM,uBAAsB,KAAA,MAAC,WAAW,OAAO,aAAa;;AAEvE,aAAAU;IAAA,EA9CkC,YAAY;;AC3L9C,MAAA;;IAAA,SAAA,QAAA;AAA8B,gBAAAC,WAAA,MAAA;AAA9B,eAAAA,YAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,aAAa,IAAI,OAAM;AACvB,cAAA,cAAc,IAAI,OAAM;AACxB,cAAA,WAAW,IAAI,OAAM;AACrB,cAAA,iBAAiB,IAAI,OAAM;AAC3B,cAAA,YAAY,UAAS;AAE7B,cAAA,QAAuB;UACrB,gBAAgB;UAChB,kBAAkB;UAClB,sBAAsB,CAAA;;;;AAGxB,MAAAA,UAAA,UAAA,SAAA,WAAA;AAAA,YAAA,QAAA;AACM,YAAA,KAA4B,MAA1B,QAAK,GAAA,OAAE,QAAK,GAAA,OAAE,UAAO,GAAA;AACrB,YAAAC,WAAY,QAAO;AACzB,YAAI,SAAS,MAAM,MAAM;AAEzB,YAAI,qBAAqB,oBAAoB,MAAM,kBAAkB,MAAM;AAC3E,YAAI,mBAAmB,oBAAoB,MAAM,aAAa,MAAM;AACpE,YAAI,qBAAqB,oBAAoB,KAAK,iBAAgB,GAAI,MAAM;AAC5E,YAAI,kBAAkB,oBAAoB,KAAK,cAAa,GAAI,MAAM;AAElE,YAAA,KAAwE,sBAC1E,cAAc,MAAM,aAAaA,SAAQ,UAAU,GACnD,MAAM,cACN,MAAM,iBACNA,SAAQ,kBACR,MAAM,sBACN,MAAM,kBACN,MAAM,KAAK,GAPP,sBAAmB,GAAA,qBAAE,qBAAkB,GAAA,oBAAE,WAAQ,GAAA,UAAE,iBAAc,GAAA;AAUvE,YAAI;;UACD,MAAM,aAAa,MAAM,UAAU,qBACnC,MAAM,eAAe,MAAM,YAAY,qBACxC,CAAA;;AAEF,eACEf;UAAA;UAAA,EAAI,KAAK,KAAK,WAAW,MAAK,MAAK;UAChC,MAAM,eAAe,MAAM,YAAW;UACtC,MAAM,MAAM,IAAI,SAAC,MAAM,KAAG;AACzB,gBAAI,gBAAgB,MAAK,aACvB,KACA,MAAM,WAAW,oBAAoB,GAAG,IAAI,mBAAmB,GAAG,GAClE,MAAM,YACN,iBAAiB;AAGnB,gBAAI,gBAAgB,MAAK,aACvB,KACA,sBAAsB,gBAAgB,GAAG,GAAG,kBAAkB,GAC9D,MAAM,YACN,CAAA,GACA,QAAQ,MAAM,SAAS,GACvB,QAAQ,MAAM,WAAW,GACzB,KAAK;AAGP,mBACEA,eAAC,WAAS,EACR,KAAK,KAAK,KACV,OAAO,MAAK,WAAW,UAAU,KAAK,GAAG,GACzC,YAAY,MAAK,YAAY,UAAU,KAAK,GAAG,GAC/C,aAAa,MAAM,aACnB,MAAM,KAAK,MACX,eAAe,MAAM,gBACrB,gBAAgB,MAAM,mBAAmB,QAAQ,GACjD,aAAa,MAAM,iBACnB,YAAY,MAAM,YAClB,gBAAgB,MAAM,gBACtB,WAAW,MAAM,WACjB,aAAa,MAAM,aACnB,gBAAgB,KAAK,gBACrB,gBAAgB,KAAK,gBACrB,iBAAiB,KAAK,iBACtB,eAAe,KAAK,eACpB,SAAS,SAAS,GAAG,GACrB,eAAe,eAAe,GAAG,GACjC,kBAAkB,oBAAoB,GAAG,GACzC,gBAAgB,MAAK,SAAS,UAAU,KAAK,GAAG,GAChD;;cACEA;gBAACI;gBAAQ;gBACPJ,eAACI,WAAQ,MAAE,aAAa;gBACxBJ,eAACI,WAAQ,MAAE,aAAa;cAAY;eAGxC;;cACEJ;gBAACI;gBAAQ;gBACN,MAAK,eAAe,mBAAmB,GAAG,GAAG,WAAW;gBACxD,MAAK,eAAe,mBAAmB,GAAG,GAAG,cAAc;gBAC3D,MAAK,eAAe,iBAAiB,GAAG,GAAG,UAAU;cAAC;cAE1D,CAAA;WAGN;QAAC;;AAKR,MAAAU,UAAA,UAAA,oBAAA,WAAA;AACE,aAAK,aAAa,IAAI;;AAGxB,MAAAA,UAAA,UAAA,qBAAA,SAAmB,WAA0B,WAAwB;AACnE,YAAI,eAAe,KAAK;AAExB,aAAK,aACH,CAAC,aAAa,WAAW,YAAY,CAAC;;AAI1C,MAAAA,UAAA,UAAA,mBAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AAEpB,YAAI,MAAM,aAAa,MAAM,UAAU,KAAK,QAAQ;AAClD,iBAAO,MAAM,UAAU;;AAGzB,YAAI,MAAM,eAAe,MAAM,YAAY,KAAK,QAAQ;AACtD,iBAAO,MAAM,YAAY;;AAG3B,eAAO,MAAM;;AAGf,MAAAA,UAAA,UAAA,gBAAA,WAAA;AACQ,YAAA,QAAU,KAAI;AAEpB,YAAI,MAAM,eAAe,MAAM,YAAY,KAAK,QAAQ;AACtD,iBAAO,MAAM,YAAY;;AAG3B,eAAO,CAAA;;AAGT,MAAAA,UAAA,UAAA,eAAA,SACE,KACA,eACA,YACA,mBACA,YACA,YACA,iBAAyB;AAEnB,YAAA,UAAY,KAAI;AAChB,YAAA,iBAAmB,KAAK,MAAK;AAC7B,YAAA,iBAAmB,KAAK,MAAK;AACnC,YAAI,yBAAyB,KAAK,MAAM,MAAM,WAAW;AACzD,YAAI,WAAW,cAAc,cAAc;AAC3C,YAAI,QAAiB,CAAA;AAErB,YAAI,gBAAgB;AAClB,mBAAsB,KAAA,GAAA,kBAAA,eAAA,KAAA,gBAAA,QAAA,MAAe;AAAhC,gBAAI,YAAS,gBAAA,EAAA;AACV,gBAAA,MAAQ,UAAS;AACjB,gBAAA,aAAe,IAAI,WAAW,SAAQ;AAC5C,gBAAIE,OAAM,aAAa,MAAM;AAC7B,gBAAIC,aAAY,UAAU,aAAa,CAAC,kBAAkB,UAAU;AACpE,gBAAI,aAAa,UAAU;AAC3B,gBAAIC,QAAoB;AACxB,gBAAIC,SAAqB;AAEzB,gBAAI,YAAY;AACd,kBAAI,QAAQ,OAAO;AACjB,gBAAAA,SAAQ;AACR,gBAAAD,QAAO,eAAe,MAAM,IAAI,OAAO,IAAI,eAAe,MAAM,IAAI,QAAQ;qBACvE;AACL,gBAAAA,QAAO;AACP,gBAAAC,SAAQ,eAAe,OAAO,IAAI,QAAQ,IAAI,eAAe,OAAO,IAAI,OAAO;;;AAQnF,kBAAM,KACJnB,eAAA,OAAA,EACE,WAAW,8BAA8B,aAAa,kCAAkC,KACxF,KAAKgB,MACL,KAAK,WAAW,OAAO,KAAK,eAAe,UAAUA,IAAG,GACxD,OAAO;cACL,YAAYC,aAAa,KAAa;cACtC,WAAW,aAAa,KAAK,UAAU;cACvC,KAAK,aAAa,UAAU,cAAc;cAC1C,MAAIC;cACJ,OAAKC;cACN,GAEA,mBAAmB,GAAG,IACrBnB,eAAC,oBAAkBG,UAAA,EACjB,KACA,YACA,YAAY,eAAe,gBAC3B,uBAA8C,GAC1C,WAAW,KAAK,UAAU,CAAC,CAAA,IAGjCH,eAAC,iBAAeG,UAAA,EACd,KACA,YACA,YACA,iBACA,YAAY,eAAe,gBAC3B,uBAA8C,GAC1C,WAAW,KAAK,UAAU,CAAC,CAAA,CAElC,CACG;;;AAKZ,eAAO;;AAGT,MAAAW,UAAA,UAAA,iBAAA,SAAe,MAAkB,UAAgB;AACzC,YAAA,QAAU,KAAK,QAAO;AACtB,YAAA,aAAe,KAAK,MAAK;AACzB,YAAA,iBAAmB,KAAK,MAAK;AACnC,YAAI,QAAiB,CAAA;AAErB,YAAI,gBAAgB;AAClB,mBAAgB,KAAA,GAAA,SAAA,MAAA,KAAA,OAAA,QAAA,MAAM;AAAjB,gBAAI,MAAG,OAAA,EAAA;AACV,gBAAI,eAAe,QAAQ;cACzB,OAAO;cACP,MAAM,eAAe,MAAM,IAAI,OAAO,IAAI,eAAe,MAAM,IAAI,QAAQ;gBACzE;cACF,MAAM;cACN,OAAO,eAAe,OAAO,IAAI,QAAQ,IAAI,eAAe,OAAO,IAAI,OAAO;;AAGhF,kBAAM,KACJd,eAAA,OAAA,EACE,KAAK,mBAAmB,IAAI,UAAU,GACtC,WAAU,yBACV,OAAO,aAAY,GAElB,aAAa,aACZA,eAAC,SAAOG,UAAA,EAAC,IAAQ,GAAM,WAAW,KAAK,UAAU,CAAC,CAAA,IAClD,WAAW,QAAQ,CAAC,CAClB;;;AAKZ,eAAOH,eAAa,MAAA,QAAA,cAAA,CAACI,WAAU,CAAA,CAAE,GAAK,KAAK,CAAA;;AAG7C,MAAAU,UAAA,UAAA,eAAA,SAAa,wBAAsB;AAC7B,YAAA,KAAyB,MAAvB,QAAK,GAAA,OAAE,cAAW,GAAA;AAExB,YACE,CAAC,MAAM,YACP,MAAM,gBAAgB,MACtB;AACA,cAAI,wBAAwB;AAC1B,gBAAI,WAAW,MAAM,MAAM,IAAI,SAAC,MAAI;AAAK,qBAAA,YAAY,WAAW,KAAK,GAAG;YAAC,CAAA;AAEzE,gBAAI,SAAS,QAAQ;AACnB,kBAAI,WAAW,KAAK,UAAU;AAE9B,mBAAK,SAAS;gBACZ,gBAAgB,IAAI;kBAClB;kBACA;kBACA;;kBACA;gBAAK;eAER;;;AAIL,cAAM,qBAAqB,KAAK,MAAM;AACtC,cAAM,qBAAqB,KAAK,0BAAyB;AACzD,cAAM,uBAAuB,MAAM,iBAAiB,QAAQ,MAAM,oBAAoB;AAEtF,eAAK,aAAa;;;;YAIhB,sBAAoBX,UAAAA,UAAA,CAAA,GAAO,kBAAkB,GAAK,kBAAkB;YAEpE,kBAAkB,uBAAuB,KAAK,wBAAuB,IAAK;WAC3E;;;AAIL,MAAAW,UAAA,UAAA,4BAAA,WAAA;AACE,YAAI,WAAW,KAAK,eAAe;AACnC,YAAI,uBAAkD,CAAA;AAGtD,iBAASE,QAAO,UAAU;AACxB,cAAII,UAAS,KAAK,MAAM,SAASJ,IAAG,EAAE,sBAAqB,EAAG,MAAM;AACpE,cAAI,aAAaA,KAAI,MAAM,GAAG,EAAE,CAAC;AACjC,+BAAqB,UAAU,IAAI,KAAK,IAAI,qBAAqB,UAAU,KAAK,GAAGI,OAAM;;AAG3F,eAAO;;AAGT,MAAAN,UAAA,UAAA,0BAAA,WAAA;AACE,YAAI,WAAW,KAAK,MAAM,MAAM,CAAC,EAAE;AACnC,YAAI,SAAS,KAAK,WAAW,WAAW,QAAQ;AAChD,YAAI,gBAAgB,KAAK,SAAS,WAAW,QAAQ;AAErD,eAAO,OAAO,sBAAqB,EAAG,SAAS,cAAc,sBAAqB,EAAG;;AAGhF,MAAAA,UAAA,UAAA,aAAP,WAAA;AACE,YAAI,QAAQ,KAAK,WAAW;AAE5B,eAAO,KAAK,MAAM,MAAM,IAAI,SAAC,MAAI;AAAK,iBAAA,MAAM,KAAK,GAAG;QAAC,CAAA;;AAEzD,aAAAA;IAAA,EA5T8B,aAAa;;AA8T3C,WAAS,iBAAiB;IACxB,sBAAsB;GACvB;AAED,WAAS,sBAAsB,YAAwB,eAAoC;AACzF,QAAI,CAAC,WAAW,QAAQ;AACtB,aAAO,CAAA;;AAET,QAAI,mBAAmB,qBAAqB,aAAa;AACzD,WAAO,WAAW,IAAI,SAAC,KAAa;AAAK,aAAC;QACxC;QACA,WAAW;QACX,YAAY;QACZ,aAAa,iBAAiB,IAAI,WAAW,SAAS,UAAU;QAChE,WAAW;;IACZ,CAAC;EACJ;AAEA,WAAS,qBAAqB,eAAoC;AAChE,QAAI,mBAAqD,CAAA;AAEzD,aAAuB,KAAA,GAAA,kBAAA,eAAA,KAAA,gBAAA,QAAA,MAAe;AAAjC,UAAIO,cAAU,gBAAA,EAAA;AACjB,eAAsB,KAAA,GAAA,eAAAA,aAAA,KAAA,aAAA,QAAA,MAAY;AAA7B,YAAI,YAAS,aAAA,EAAA;AAChB,yBAAiB,UAAU,IAAI,WAAW,SAAS,UAAU,IAAI,UAAU;;;AAI/E,WAAO;EACT;;;;ACpW2B,gBAAAC,QAAA,MAAA;AAA3B,eAAAA,SAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,wBAAwB,QAAQ,cAAc;AAC9C,cAAA,mBAAmB,QAAQ,cAAc;AACzC,cAAA,mBAAmB,QAAQ,cAAc;AACzC,cAAA,yBAAyB,QAAQ,cAAc;AAC/C,cAAA,iBAAiB,QAAQ,qBAAqB;AAC9C,cAAA,mBAAmB,QAAQ,qBAAqB;AAEhD,cAAA,UAAU,IAAI,OAAM;AA8F5B,cAAA,eAAe,SAACC,SAA0B;AACxC,gBAAK,SAASA;AAEd,cAAIA,SAAQ;AACV,kBAAK,QAAQ,6BAA6B,OAAM;cAC9C,IAAIA;cACJ,mBAAmB,MAAK,MAAM;aAC/B;iBACI;AACL,kBAAK,QAAQ,+BAA+B,KAAI;;;;;AAnGpD,MAAAD,OAAA,UAAA,SAAA,WAAA;AAAA,YAAA,QAAA;AACQ,YAAA,QAAU,KAAI;AACd,YAAA,cAA2D,MAAK,aAAnD,kBAA8C,MAAK,iBAAlC,eAA6B,MAAK,cAApB,aAAe,MAAK;AACtE,YAAI,SAAS,MAAM,MAAM;AAEzB,YAAI,wBAAwB,KAAK,sBAAsB,MAAM,kBAAkB,MAAM;AACrF,YAAI,mBAAmB,KAAK,iBAAiB,MAAM,aAAa,MAAM;AACtE,YAAI,mBAAmB,KAAK,iBAAiB,MAAM,aAAa,MAAM;AACtE,YAAI,yBAAyB,KAAK,uBAAuB,MAAM,mBAAmB,MAAM;AACxF,YAAI,iBAAiB,KAAK,eAAe,MAAM,WAAW,MAAM;AAChE,YAAI,mBAAmB,KAAK,iBAAiB,MAAM,aAAa,MAAM;AAEtE,YAAI,mBAAmB,iBAAiB,QAAQ,oBAAoB;AAIpE,YAAI,oBAAoB,CAAC,YAAY;AACnC,6BAAmB;AACnB,4BAAkB;AAClB,yBAAe;;AAGjB,YAAI,aAAa;UACf;UACA,mBAAmB,6BAA6B;UAChD,aAAa,KAAK;;;AAGpB,eACEtB;UAAA;UAAA,EACE,WAAW,WAAW,KAAK,GAAG,GAC9B,KAAK,KAAK,cACV,OAAO;;;YAGL,OAAO,MAAM;YACb,UAAU,MAAM;YACjB;UAEDA,eAAC,UAAQ,EAAC,MAAK,MAAK,GACjB,SAAC,SAAqB,YAAqB;AAAK,mBAC/CA;cAACI;cAAQ;cACPJ;gBAAA;gBAAA,EACE,MAAK,gBACL,WAAU,4BACV,OAAO;kBACL,OAAO,MAAM;kBACb,UAAU,MAAM;kBAChB,QAAQ,aAAa,MAAM,eAAe;kBAC3C;gBAEA,MAAM;gBACPA,eAAA,SAAA,EAAO,MAAK,eAAc,GACvB,MAAM,MAAM,IAAI,SAAC,OAAO,KAAG;AAAK,yBAC/BA,eAAC,UAAQ;oBACP,KAAK,MAAK,QAAQ,UAAU,GAAG;oBAC/B,KACE,MAAM,SACF,MAAM,CAAC,EAAE,KAAK,YAAW,IACzB;oBAEN,gBAAgB,SAAS;oBACzB,iBAAiB,MAAM;oBACvB;oBACA;oBACA;oBACA,aAAa,MAAM;oBACnB,kBAAkB,sBAAsB,GAAG;oBAC3C,gBAAgB,MAAM;oBACtB,aAAa,iBAAiB,GAAG,EAAE,OAAO,WAAW;oBACrD,aAAa,iBAAiB,GAAG;oBACjC,mBAAmB,uBAAuB,GAAG;oBAC7C,WAAW,eAAe,GAAG;oBAC7B,aAAa,iBAAiB,GAAG;oBACjC;oBACA;oBACA,aAAa,MAAM;oBACnB,cAAc,MAAM;oBACpB,UAAU,MAAM;kBAAQ,CAAA;gBACxB,CACH,CAAC;cACI;YACF;UACC,CACZ;QACQ;;AAqBjB,MAAAsB,OAAA,UAAA,cAAA,WAAA;AACE,aAAK,eAAe,IAAI;UACtB,KAAK;UACL,KAAK,QAAQ,QAAO,EAAG,IAAI,SAAC,QAAM;AAAK,mBAAA,OAAO,WAAU,EAAG,CAAC;UAAC,CAAA;;UAC7D;UACA;QAAI;AAGN,aAAK,eAAe,IAAI;UACtB,KAAK;UACL,KAAK,QAAQ,WAAW,CAAC,EAAE,WAAU;;UACrC;;UACA;QAAK;;AAIT,MAAAA,OAAA,UAAA,WAAA,SAAS,cAAsB,aAAmB;AAC5C,YAAA,KAAiC,MAA/B,eAAY,GAAA,cAAE,eAAY,GAAA;AAChC,YAAI,MAAM,aAAa,YAAY,YAAY;AAC/C,YAAI,MAAM,aAAa,WAAW,WAAW;AAE7C,YAAI,OAAO,QAAQ,OAAO,MAAM;AAC9B,cAAI,OAAO,KAAK,MAAM,MAAM,GAAG,EAAE,GAAG;AAEpC,iBAAO;YACL,aAAa,KAAK,MAAM;YACxB,UAAQnB,UAAA,EACN,OAAO,KAAK,aAAa,KAAK,GAAG,GACjC,QAAQ,KAAI,GACT,KAAK,aAAa;YAEvB,OAAO,KAAK,UAAU,KAAK,GAAG;YAC9B,MAAM;cACJ,MAAM,aAAa,MAAM,GAAG;cAC5B,OAAO,aAAa,OAAO,GAAG;cAC9B,KAAK,aAAa,KAAK,GAAG;cAC1B,QAAQ,aAAa,QAAQ,GAAG;;YAElC,OAAO;;;AAIX,eAAO;;AAGD,MAAAmB,OAAA,UAAA,YAAR,SAAkB,KAAK,KAAG;AACxB,eAAO,KAAK,QAAQ,WAAW,GAAG,EAAE,WAAU,EAAG,GAAG;;AAG9C,MAAAA,OAAA,UAAA,eAAR,SAAqB,KAAK,KAAG;AAC3B,YAAIE,SAAQ,KAAK,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE;AACvC,YAAIC,OAAMb,SAAQY,QAAO,CAAC;AAC1B,eAAO,EAAE,OAAKA,QAAE,KAAGC,KAAA;;AAEvB,aAAAH;IAAA,EA5K2B,aAAa;;AA8KxC,WAAS,YAAY,KAAa;AAChC,WAAO,IAAI,WAAW,IAAI;EAC5B;;;;AC3NoC,gBAAAI,iBAAA,MAAA;AAApC,eAAAA,kBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACE,cAAA,qBAAqB;;;AAErB,MAAAA,gBAAA,UAAA,aAAA,SAAW,WAAsB,eAA4B;AAC3D,eAAO,cAAc,WAAW,SAAS;;AAE7C,aAAAA;IAAA,EANoC,MAAM;;;;;ACsCZ,gBAAAC,WAAA,MAAA;AAA9B,eAAAA,YAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,SAAS,IAAI,eAAc;AAC3B,cAAA,WAAW,UAAS;;;AAE5B,MAAAA,UAAA,UAAA,SAAA,WAAA;AACM,YAAA,KAAqB,MAAnB,QAAK,GAAA,OAAE,UAAO,GAAA;AAEpB,eACE3B,eAAC,OAAKG,UAAA,EACJ,KAAK,KAAK,SAAQ,GACd,KAAK,OAAO,WAAW,OAAO,MAAM,aAAa,MAAM,kBAAkB,SAAS,MAAM,aAAa,GAAC,EAC1G,aAAa,MAAM,aACnB,OAAO,MAAM,cAAc,OAC3B,cAAc,MAAM,cACpB,eAAe,MAAM,eACrB,gBAAgB,MAAM,gBACtB,cAAc,MAAM,cACpB,iBAAiB,MAAM,iBACvB,iBAAiB,MAAM,iBACvB,YAAY,MAAM,YAClB,kBAAkB,MAAM,kBACxB,aAAa,MAAM,aACnB,cAAc,MAAM,cACpB,UAAU,MAAM,SAAQ,CAAA,CAAA;;AAIhC,aAAAwB;IAAA,EA3B8B,aAAa;;;;;AC5BT,gBAAAC,eAAA,MAAA;AAAlC,eAAAA,gBAAA;AAAA,YAAA,QAAA,WAAA,QAAA,OAAA,MAAA,MAAA,SAAA,KAAA;AACU,cAAA,qBAAqB,QAAQ,kBAAkB;AAC/C,cAAA,YAAY,UAAS;AACrB,cAAA,WAAW,UAAS;;;AAE5B,MAAAA,cAAA,UAAA,SAAA,WAAA;AAAA,YAAA,QAAA;AACM,YAAA,KAAoC,KAAK,SAAvCb,WAAO,GAAA,SAAE,uBAAoB,GAAA;AAC7B,YAAA,QAAU,KAAI;AACpB,YAAI,gBAAgB,KAAK,mBAAmB,MAAM,aAAa,oBAAoB;AAEnF,YAAI,gBAAgBA,SAAQ,cAC1Bf,eAAC,WAAS,EACR,KAAK,KAAK,WACV,aAAa,MAAM,aACnB,OAAO,cAAc,aACrB,sBAAsB,cAAc,WAAW,EAAC,CAAA;AAIpD,YAAI,cAAc,SAAC,YAAoC;AAAK,iBAC1DA,eAAC,UAAQ,EACP,KAAK,MAAK,UACV,aAAa,MAAM,aACnB,eACA,eAAe,MAAM,eACrB,eAAe,MAAM,eACrB,YAAY,MAAM,YAClB,cAAc,MAAM,cACpB,gBAAgB,MAAM,gBACtB,WAAW,MAAM,WACjB,aAAa,MAAM,aACnB,kBAAkBe,SAAQ,kBAC1B,cAAc,WAAW,mBACzB,eAAe,WAAW,eAC1B,cAAcA,SAAQ,cACtB,iBAAiBA,SAAQ,iBACzB,iBAAiBA,SAAQ,aACzB,YAAY,CAAC,MAAM,cACnB,kBAAkB,MAAK,aACvB,aAAa,WAAW,aACxB,cAAc,WAAW,cACzB,UAAU,MAAM,SAAQ,CAAA;QACxB;AAGJ,eAAOA,SAAQ,cACX,KAAK,oBAAoB,eAAe,aAAa,cAAc,QAAQA,SAAQ,WAAW,IAC9F,KAAK,mBAAmB,eAAe,WAAW;;AAE1D,aAAAa;IAAA,EAjDkC,SAAS;;WAmD3B,mBAAmB,aAA0B,sBAA0C;AACrG,QAAI,YAAY,IAAI,eAAe,YAAY,aAAa,oBAAoB;AAEhF,WAAO,IAAI,cACT,WACA,kBAAkB,KAAK,YAAY,gBAAgB,CAAC;EAExD;ACjEA,MAAA;;IAAA,SAAA,QAAA;AAA+C,gBAAAC,4BAAA,MAAA;AAA/C,eAAAA,6BAAA;;;AAEE,MAAAA,2BAAA,UAAA,mBAAA,SAAiB,cAAc,kBAAkB,eAAa;AACtD,YAAA,UAAY,KAAK,MAAK;AAC5B,YAAI,cAAc,OAAA,UAAM,iBAAgB,KAAA,MAAC,cAAc,kBAAkB,aAAa;AACtF,YAAIL,SAAQ,YAAY;AACxB,YAAIC,OAAM,YAAY;AACtB,YAAIK;AAGJ,YAAI,iBAAiB,KAAK,gBAAgB,GAAG;AAC3C,UAAAN,SAAQ,QAAQ,YAAYA,MAAK;AAGjC,UAAAM,aAAY,QAAQ,YAAYL,IAAG;AACnC,cAAIK,WAAU,QAAO,MAAOL,KAAI,QAAO,GAAI;AACzC,YAAAA,OAAMM,UAASD,YAAW,CAAC;;;AAK/B,YACE,KAAK,MAAM,aACX,KAAK,MAAM,gBACX;AACA,cAAI,SAAS,KAAK;;YAChB,UAAUN,QAAOC,IAAG;UAAC;AAEvB,UAAAA,OAAMM,UAASN,MAAK,IAAI,MAAM;;AAGhC,eAAO,EAAE,OAAKD,QAAE,KAAGC,KAAA;;AAEvB,aAAAI;IAAA,EAjC+C,oBAAoB;;ACOnE,MAAAG,QAAe,aAAa;IAC1B,aAAa;IACb,OAAO;MAEL,SAAS;QACP,WAAW;QACX,2BAA2B;;MAG7B,YAAY;QACV,MAAM;QACN,UAAU,EAAE,MAAM,EAAC;;MAGrB,aAAa;QACX,MAAM;QACN,UAAU,EAAE,OAAO,EAAC;;MAGtB,cAAc;QACZ,MAAM;QACN,UAAU,EAAE,QAAQ,EAAC;QACrB,WAAW;QACX,gBAAgB;;;GAIrB;;;;ACtCD,SAAO,uBAAuB;AAE9B,MAAI,mBAAmB;AACvB,MAAI,cAAc;AAClB,MAAI,6BAA6B;;;;AAqC/B,eAAAC,iBAAY,aAAwB;AAApC,YAAA,QAAA;AApBA,aAAA,YAAgC;AAIhC,aAAA,WAAmB;AACnB,aAAA,iBAAyB;AACzB,aAAA,mBAA4B;AAC5B,aAAA,oBAA6B;AAG7B,aAAA,aAAsB;AACtB,aAAA,kBAA2B;AAC3B,aAAA,iBAA0B;AA0D1B,aAAA,kBAAkB,SAAC,IAAc;AAC/B,cACE,CAAC,MAAK,kBAAiB,KACvB,qBAAqB,EAAE,KACvB,MAAK,SAAS,EAAE,GAChB;AACA,gBAAI,MAAM,MAAK,qBAAqB,IAAI,IAAI;AAC5C,kBAAK,QAAQ,QAAQ,eAAe,GAAG;AACvC,kBAAK,gBAAgB,GAAG;AAExB,gBAAI,CAAC,MAAK,kBAAkB;AAC1B,uBAAS,iBAAiB,aAAa,MAAK,eAAe;;AAG7D,qBAAS,iBAAiB,WAAW,MAAK,aAAa;;;AAI3D,aAAA,kBAAkB,SAAC,IAAc;AAC/B,cAAI,MAAM,MAAK,qBAAqB,EAAE;AACtC,gBAAK,aAAa,GAAG;AACrB,gBAAK,QAAQ,QAAQ,eAAe,GAAG;;AAGzC,aAAA,gBAAgB,SAAC,IAAc;AAC7B,mBAAS,oBAAoB,aAAa,MAAK,eAAe;AAC9D,mBAAS,oBAAoB,WAAW,MAAK,aAAa;AAE1D,gBAAK,QAAQ,QAAQ,aAAa,MAAK,qBAAqB,EAAE,CAAC;AAE/D,gBAAK,QAAO;;AAUd,aAAA,mBAAmB,SAAC,IAAc;AAChC,cAAI,MAAK,SAAS,EAAE,GAAG;AACrB,kBAAK,kBAAkB;AAEvB,gBAAI,MAAM,MAAK,qBAAqB,IAAI,IAAI;AAC5C,kBAAK,QAAQ,QAAQ,eAAe,GAAG;AACvC,kBAAK,gBAAgB,GAAG;AAIxB,gBAAI,WAAW,GAAG;AAElB,gBAAI,CAAC,MAAK,kBAAkB;AAC1B,uBAAS,iBAAiB,aAAa,MAAK,eAAe;;AAG7D,qBAAS,iBAAiB,YAAY,MAAK,cAAc;AACzD,qBAAS,iBAAiB,eAAe,MAAK,cAAc;AAK5D,mBAAO,iBACL,UACA,MAAK,mBACL,IAAI;;;AAKV,aAAA,kBAAkB,SAAC,IAAc;AAC/B,cAAI,MAAM,MAAK,qBAAqB,EAAE;AACtC,gBAAK,aAAa,GAAG;AACrB,gBAAK,QAAQ,QAAQ,eAAe,GAAG;;AAGzC,aAAA,iBAAiB,SAAC,IAAc;AAC9B,cAAI,MAAK,YAAY;AACnB,gBAAI,WAAW,GAAG;AAElB,qBAAS,oBAAoB,aAAa,MAAK,eAAe;AAC9D,qBAAS,oBAAoB,YAAY,MAAK,cAAc;AAC5D,qBAAS,oBAAoB,eAAe,MAAK,cAAc;AAC/D,mBAAO,oBAAoB,UAAU,MAAK,mBAAmB,IAAI;AAEjE,kBAAK,QAAQ,QAAQ,aAAa,MAAK,qBAAqB,EAAE,CAAC;AAE/D,kBAAK,QAAO;AACZ,kBAAK,kBAAkB;AACvB,+BAAkB;;;AAItB,aAAA,oBAAoB,WAAA;AAClB,gBAAK,iBAAiB;;AA6BxB,aAAA,eAAe,SAAC,IAAW;AACzB,cAAI,CAAC,MAAK,kBAAkB;AAC1B,gBAAI,QAAS,OAAO,cAAc,MAAK,cAAe,MAAK;AAC3D,gBAAI,QAAS,OAAO,cAAc,MAAK,cAAe,MAAK;AAE3D,kBAAK,QAAQ,QAAQ,eAAe;cAClC,WAAW;cACX,SAAS,MAAK;cACd,WAAW,MAAK;cAChB;cACA;cACA,QAAQ,QAAQ,MAAK;cACrB,QAAQ,QAAQ,MAAK;aACF;;;AAzLvB,aAAK,cAAc;AACnB,aAAK,UAAU,IAAI,QAAO;AAC1B,oBAAY,iBAAiB,aAAa,KAAK,eAAgC;AAC/E,oBAAY,iBAAiB,cAAc,KAAK,kBAAmC,EAAE,SAAS,KAAI,CAAE;AACpG,wBAAe;;AAGjB,MAAAA,iBAAA,UAAA,UAAA,WAAA;AACE,aAAK,YAAY,oBAAoB,aAAa,KAAK,eAAgC;AACvF,aAAK,YAAY,oBAAoB,cAAc,KAAK,kBAAmC,EAAE,SAAS,KAAI,CAA6B;AACvI,0BAAiB;;AAGnB,MAAAA,iBAAA,UAAA,WAAA,SAAS,IAAW;AAClB,YAAI,YAAY,KAAK,eAAe,EAAE;AACtC,YAAI,SAAS,GAAG;AAEhB,YACE,cACC,CAAC,KAAK,kBAAkB,eAAe,QAAQ,KAAK,cAAc,IACnE;AACA,eAAK,YAAY;AACjB,eAAK,aAAa;AAClB,eAAK,iBAAiB;AAEtB,iBAAO;;AAGT,eAAO;;AAGT,MAAAA,iBAAA,UAAA,UAAA,WAAA;AACE,qCAA6B;AAC7B,aAAK,aAAa;AAClB,aAAK,YAAY;AAEjB,aAAK,mBAAkB;;AAGzB,MAAAA,iBAAA,UAAA,iBAAA,SAAe,IAAW;AACxB,YAAI,KAAK,UAAU;AACjB,iBAAO,eAAe,GAAG,QAAuB,KAAK,QAAQ;;AAE/D,eAAO,KAAK;;AAuCd,MAAAA,iBAAA,UAAA,oBAAA,WAAA;AACE,eAAO,oBAAoB,KAAK;;AAgElC,MAAAA,iBAAA,UAAA,oBAAA,WAAA;AACE,YAAI,KAAK,YAAY;AACnB,uCAA6B;;;AAOjC,MAAAA,iBAAA,UAAA,kBAAA,SAAgB,IAAoB;AAClC,YAAI,KAAK,mBAAmB;AAC1B,eAAK,aAAa,EAAE;AACpB,iBAAO,iBAAiB,UAAU,KAAK,cAAc,IAAI;;;AAI7D,MAAAA,iBAAA,UAAA,eAAA,SAAa,IAAoB;AAC/B,YAAI,KAAK,mBAAmB;AAC1B,eAAK,YAAa,GAAW;AAC7B,eAAK,YAAa,GAAW;AAC7B,eAAK,cAAc,OAAO;AAC1B,eAAK,cAAc,OAAO;;;AAqB9B,MAAAA,iBAAA,UAAA,qBAAA,WAAA;AACE,YAAI,KAAK,mBAAmB;AAC1B,iBAAO,oBAAoB,UAAU,KAAK,cAAc,IAAI;;;AAOhE,MAAAA,iBAAA,UAAA,uBAAA,SAAqB,IAAgB,SAAiB;AACpD,YAAI,SAAS;AACb,YAAI,SAAS;AAGb,YAAI,SAAS;AACX,eAAK,YAAY,GAAG;AACpB,eAAK,YAAY,GAAG;eACf;AACL,mBAAS,GAAG,QAAQ,KAAK;AACzB,mBAAS,GAAG,QAAQ,KAAK;;AAG3B,eAAO;UACL,WAAW;UACX,SAAS;UACT,WAAW,KAAK;UAChB,OAAO,GAAG;UACV,OAAO,GAAG;UACV;UACA;;;AAIJ,MAAAA,iBAAA,UAAA,uBAAA,SAAqB,IAAgB,SAAiB;AACpD,YAAIC,WAAU,GAAG;AACjB,YAAI;AACJ,YAAI;AACJ,YAAI,SAAS;AACb,YAAI,SAAS;AAIb,YAAIA,YAAWA,SAAQ,QAAQ;AAC7B,kBAAQA,SAAQ,CAAC,EAAE;AACnB,kBAAQA,SAAQ,CAAC,EAAE;eACd;AACL,kBAAS,GAAW;AACpB,kBAAS,GAAW;;AAItB,YAAI,SAAS;AACX,eAAK,YAAY;AACjB,eAAK,YAAY;eACZ;AACL,mBAAS,QAAQ,KAAK;AACtB,mBAAS,QAAQ,KAAK;;AAGxB,eAAO;UACL,WAAW;UACX,SAAS;UACT,WAAW,KAAK;UAChB;UACA;UACA;UACA;;;AAGN,aAAAD;IAAA,EAAC;;AAGD,WAAS,qBAAqB,IAAc;AAC1C,WAAO,GAAG,WAAW,KAAK,CAAC,GAAG;EAChC;AAKA,WAAS,qBAAkB;AACzB,wBAAoB;AAEpB,eAAW,WAAA;AACT,0BAAoB;OACnB,OAAO,oBAAoB;EAChC;AAKA,WAAS,kBAAe;AACtB,mBAAe;AAEf,QAAI,gBAAgB,GAAG;AACrB,aAAO,iBAAiB,aAAa,mBAAmB,EAAE,SAAS,MAAK,CAAE;;EAE9E;AAEA,WAAS,oBAAiB;AACxB,mBAAe;AAEf,QAAI,CAAC,aAAa;AAChB,aAAO,oBAAoB,aAAa,mBAAmB,EAAE,SAAS,MAAK,CAA6B;;EAE5G;AAEA,WAAS,kBAAkB,IAAW;AACpC,QAAI,4BAA4B;AAC9B,SAAG,eAAc;;EAErB;AChVA,MAAA;;IAAA,WAAA;AAAA,eAAAE,iBAAA;AACE,aAAA,YAAqB;AAKrB,aAAA,WAA+B;AAC/B,aAAA,WAA+B;AAC/B,aAAA,eAA4B;AAG5B,aAAA,aAA0B,SAAS;AACnC,aAAA,SAAiB;AACjB,aAAA,iBAAyB;;AAEzB,MAAAA,eAAA,UAAA,QAAA,SAAM,UAAuB,OAAe,OAAa;AACvD,aAAK,WAAW;AAChB,aAAK,eAAe,KAAK,SAAS,sBAAqB;AACvD,aAAK,cAAc,QAAQ,OAAO;AAClC,aAAK,cAAc,QAAQ,OAAO;AAClC,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,iBAAgB;;AAGvB,MAAAA,eAAA,UAAA,aAAA,SAAW,OAAe,OAAa;AACrC,aAAK,SAAU,QAAQ,OAAO,cAAe,KAAK;AAClD,aAAK,SAAU,QAAQ,OAAO,cAAe,KAAK;AAClD,aAAK,iBAAgB;;AAIvB,MAAAA,eAAA,UAAA,eAAA,SAAa,MAAa;AACxB,YAAI,MAAM;AACR,cAAI,CAAC,KAAK,WAAW;AACnB,gBAAI,KAAK,UAAU;AACjB,mBAAK,SAAS,MAAM,UAAU;;AAGhC,iBAAK,YAAY;AACjB,iBAAK,iBAAgB;;mBAEd,KAAK,WAAW;AACzB,cAAI,KAAK,UAAU;AACjB,iBAAK,SAAS,MAAM,UAAU;;AAGhC,eAAK,YAAY;;;AAKrB,MAAAA,eAAA,UAAA,OAAA,SAAK,sBAA+BC,WAAoB;AAAxD,YAAA,QAAA;AACE,YAAI,OAAO,WAAA;AACT,gBAAK,QAAO;AACZ,UAAAA,UAAQ;;AAGV,YACE,wBACA,KAAK,YACL,KAAK,aACL,KAAK;SACJ,KAAK,UAAU,KAAK,SACrB;AACA,eAAK,kBAAkB,MAAM,KAAK,cAAc;eAC3C;AACL,qBAAW,MAAM,CAAC;;;AAItB,MAAAD,eAAA,UAAA,oBAAA,SAAkBC,WAAsB,gBAAsB;AAC5D,YAAI,WAAW,KAAK;AACpB,YAAI,oBAAoB,KAAK,SAAU,sBAAqB;AAE5D,iBAAS,MAAM,aACb,SAAS,iBAAiB,aAChB,iBAAiB;AAE7B,mBAAW,UAAU;UACnB,MAAM,kBAAkB;UACxB,KAAK,kBAAkB;SACxB;AAED,2BAAmB,UAAU,WAAA;AAC3B,mBAAS,MAAM,aAAa;AAC5B,UAAAA,UAAQ;SACT;;AAGH,MAAAD,eAAA,UAAA,UAAA,WAAA;AACE,YAAI,KAAK,UAAU;AACjB,UAAAE,eAAc,KAAK,QAAQ;AAC3B,eAAK,WAAW;;AAGlB,aAAK,WAAW;;AAGlB,MAAAF,eAAA,UAAA,mBAAA,WAAA;AACE,YAAI,KAAK,YAAY,KAAK,WAAW;AACnC,qBAAW,KAAK,YAAW,GAAI;YAC7B,MAAM,KAAK,aAAc,OAAO,KAAK;YACrC,KAAK,KAAK,aAAc,MAAM,KAAK;WACpC;;;AAIL,MAAAA,eAAA,UAAA,cAAA,WAAA;AACE,YAAI,eAAe,KAAK;AACxB,YAAI,WAAW,KAAK;AAEpB,YAAI,CAAC,UAAU;AACb,qBAAW,KAAK,WAAW,KAAK,SAAU,UAAU,IAAI;AAIxD,mBAAS,UAAU,IAAI,iBAAiB;AAExC,mBAAS,UAAU,IAAI,mBAAmB;AAE1C,qBAAW,UAAU;YACnB,UAAU;YACV,QAAQ,KAAK;YACb,YAAY;YACZ,WAAW;YACX,OAAO,aAAa,QAAQ,aAAa;YACzC,QAAQ,aAAa,SAAS,aAAa;YAC3C,OAAO;YACP,QAAQ;YACR,QAAQ;WACT;AAED,eAAK,WAAW,YAAY,QAAQ;;AAGtC,eAAO;;AAEX,aAAAA;IAAA,EAAC;;ACvID,MAAA;;IAAA,SAAA,QAAA;AAA8C,gBAAAG,kBAAA,MAAA;AAc5C,eAAAA,iBAAY,kBAAoC,eAAsB;AAAtE,YAAA,QACE,OAAA,KAAA,IAAA,KAAO;AAyBT,cAAA,eAAe,WAAA;AACb,gBAAK,YAAY,MAAK,iBAAiB,aAAY;AACnD,gBAAK,aAAa,MAAK,iBAAiB,cAAa;AACrD,gBAAK,mBAAkB;;AA3BvB,cAAK,mBAAmB;AACxB,cAAK,gBAAgB;AACrB,cAAK,YAAY,MAAK,gBAAgB,iBAAiB,aAAY;AACnE,cAAK,aAAa,MAAK,iBAAiB,iBAAiB,cAAa;AACtE,cAAK,cAAc,iBAAiB,eAAc;AAClD,cAAK,eAAe,iBAAiB,gBAAe;AACpD,cAAK,cAAc,iBAAiB,eAAc;AAClD,cAAK,eAAe,iBAAiB,gBAAe;AACpD,cAAK,aAAa,MAAK,kBAAiB;AAExC,YAAI,MAAK,eAAe;AACtB,gBAAK,eAAc,EAAG,iBAAiB,UAAU,MAAK,YAAY;;;;AAOtE,MAAAA,iBAAA,UAAA,UAAA,WAAA;AACE,YAAI,KAAK,eAAe;AACtB,eAAK,eAAc,EAAG,oBAAoB,UAAU,KAAK,YAAY;;;AAUzE,MAAAA,iBAAA,UAAA,eAAA,WAAA;AACE,eAAO,KAAK;;AAGd,MAAAA,iBAAA,UAAA,gBAAA,WAAA;AACE,eAAO,KAAK;;AAGd,MAAAA,iBAAA,UAAA,eAAA,SAAaC,MAAW;AACtB,aAAK,iBAAiB,aAAaA,IAAG;AAEtC,YAAI,CAAC,KAAK,eAAe;AAGvB,eAAK,YAAY,KAAK,IAAI,KAAK,IAAIA,MAAK,KAAK,gBAAe,CAAE,GAAG,CAAC;AAElE,eAAK,mBAAkB;;;AAI3B,MAAAD,iBAAA,UAAA,gBAAA,SAAcC,MAAW;AACvB,aAAK,iBAAiB,cAAcA,IAAG;AAEvC,YAAI,CAAC,KAAK,eAAe;AAGvB,eAAK,aAAa,KAAK,IAAI,KAAK,IAAIA,MAAK,KAAK,iBAAgB,CAAE,GAAG,CAAC;AAEpE,eAAK,mBAAkB;;;AAI3B,MAAAD,iBAAA,UAAA,iBAAA,WAAA;AACE,eAAO,KAAK;;AAGd,MAAAA,iBAAA,UAAA,kBAAA,WAAA;AACE,eAAO,KAAK;;AAGd,MAAAA,iBAAA,UAAA,iBAAA,WAAA;AACE,eAAO,KAAK;;AAGd,MAAAA,iBAAA,UAAA,kBAAA,WAAA;AACE,eAAO,KAAK;;AAGd,MAAAA,iBAAA,UAAA,qBAAA,WAAA;;AAEF,aAAAA;IAAA,EAhG8C,gBAAgB;;ACP9D,MAAA;;IAAA,SAAA,QAAA;AAA4C,gBAAAE,yBAAA,MAAA;AAC1C,eAAAA,wBAAY,IAAiB,eAAsB;eACjD,OAAA,KAAA,MAAM,IAAI,wBAAwB,EAAE,GAAG,aAAa,KAAC;;AAGvD,MAAAA,wBAAA,UAAA,iBAAA,WAAA;AACE,eAAQ,KAAK,iBAA6C;;AAG5D,MAAAA,wBAAA,UAAA,oBAAA,WAAA;AACE,eAAO,iBAAkB,KAAK,iBAA6C,EAAE;;AAEjF,aAAAA;IAAA,EAZ4C,eAAe;;ACA3D,MAAA;;IAAA,SAAA,QAAA;AAA2C,gBAAAC,wBAAA,MAAA;AACzC,eAAAA,uBAAY,eAAsB;eAChC,OAAA,KAAA,MAAM,IAAI,uBAAsB,GAAI,aAAa,KAAC;;AAGpD,MAAAA,uBAAA,UAAA,iBAAA,WAAA;AACE,eAAO;;AAGT,MAAAA,uBAAA,UAAA,oBAAA,WAAA;AACE,eAAO;UACL,MAAM,KAAK;UACX,OAAO,KAAK,aAAa,KAAK;UAC9B,KAAK,KAAK;UACV,QAAQ,KAAK,YAAY,KAAK;;;AAMlC,MAAAA,uBAAA,UAAA,qBAAA,WAAA;AACE,aAAK,aAAa,KAAK,kBAAiB;;AAE5C,aAAAA;IAAA,EAvB2C,eAAe;;ACW1D,MAAM,UAAU,OAAO,gBAAgB,aAAc,YAAoB,MAAM,KAAK;AAQpF,MAAA;;IAAA,WAAA;AAAA,eAAAC,gBAAA;AAAA,YAAA,QAAA;AAEE,aAAA,YAAqB;AACrB,aAAA,cAAmC,CAAC,QAAQ,cAAc;AAC1D,aAAA,gBAAwB;AACxB,aAAA,cAAsB;AAGtB,aAAA,iBAAgC;AAChC,aAAA,iBAAgC;AAChC,aAAA,cAAuB;AACvB,aAAA,eAAyC;AAIzC,aAAA,cAAuB;AACvB,aAAA,gBAAyB;AACzB,aAAA,gBAAyB;AACzB,aAAA,iBAA0B;AA8DlB,aAAA,UAAU,WAAA;AAChB,cAAI,MAAK,aAAa;AACpB,gBAAI,OAAO,MAAK,gBACd,MAAK,iBAAkB,OAAO,aAC9B,MAAK,iBAAkB,OAAO,WAAW;AAG3C,gBAAI,MAAM;AACR,kBAAIC,OAAM,QAAO;AACjB,oBAAK,WAAW,OAAOA,OAAM,MAAK,kBAAmB,GAAI;AACzD,oBAAK,iBAAiBA,IAAG;mBACpB;AACL,oBAAK,cAAc;;;;;AAxEzB,MAAAD,cAAA,UAAA,QAAA,SAAM,OAAe,OAAe,eAA0B;AAC5D,YAAI,KAAK,WAAW;AAClB,eAAK,eAAe,KAAK,YAAY,aAAa;AAClD,eAAK,iBAAiB;AACtB,eAAK,iBAAiB;AACtB,eAAK,cAAc;AACnB,eAAK,gBAAgB;AACrB,eAAK,gBAAgB;AACrB,eAAK,iBAAiB;AACtB,eAAK,WAAW,OAAO,KAAK;;;AAIhC,MAAAA,cAAA,UAAA,aAAA,SAAW,OAAe,OAAa;AACrC,YAAI,KAAK,WAAW;AAClB,cAAI,iBAAiB,QAAQ,OAAO;AACpC,cAAI,iBAAiB,QAAQ,OAAO;AAEpC,cAAI,SAAS,KAAK,mBAAmB,OAAO,IAAI,iBAAiB,KAAK;AACtE,cAAI,SAAS,KAAK,mBAAmB,OAAO,IAAI,iBAAiB,KAAK;AAEtE,cAAI,SAAS,GAAG;AACd,iBAAK,cAAc;qBACV,SAAS,GAAG;AACrB,iBAAK,gBAAgB;;AAGvB,cAAI,SAAS,GAAG;AACd,iBAAK,gBAAgB;qBACZ,SAAS,GAAG;AACrB,iBAAK,iBAAiB;;AAGxB,eAAK,iBAAiB;AACtB,eAAK,iBAAiB;AAEtB,cAAI,CAAC,KAAK,aAAa;AACrB,iBAAK,cAAc;AACnB,iBAAK,iBAAiB,QAAO,CAAE;;;;AAKrC,MAAAA,cAAA,UAAA,OAAA,WAAA;AACE,YAAI,KAAK,WAAW;AAClB,eAAK,cAAc;AAEnB,mBAAwB,KAAA,GAAA,KAAA,KAAK,cAAL,KAAA,GAAA,QAAA,MAAoB;AAAvC,gBAAI,cAAW,GAAA,EAAA;AAClB,wBAAY,QAAO;;AAGrB,eAAK,eAAe;;;AAIxB,MAAAA,cAAA,UAAA,mBAAA,SAAiBC,MAAW;AAC1B,aAAK,iBAAiBA;AACtB,8BAAsB,KAAK,OAAO;;AAoB5B,MAAAD,cAAA,UAAA,aAAR,SAAmB,MAAY,SAAe;AACtC,YAAA,cAAgB,KAAI;AACpB,YAAA,gBAAkB,KAAI;AAC5B,YAAI,cAAc,gBAAgB,KAAK;AACvC,YAAI;;UACA,cAAc,eAAgB,gBAAgB;UAChD,KAAK,cAAc;;AACrB,YAAIE,QAAO;AAEX,gBAAQ,KAAK,MAAI;UACf,KAAK;AACH,YAAAA,QAAO;UAET,KAAK;AACH,wBAAY,cAAc,YAAY,cAAa,IAAK,WAAWA,KAAI;AACvE;UAEF,KAAK;AACH,YAAAA,QAAO;UAET,KAAK;AACH,wBAAY,aAAa,YAAY,aAAY,IAAK,WAAWA,KAAI;AACrE;;;AAKE,MAAAF,cAAA,UAAA,kBAAR,SAAwBG,OAAcN,MAAW;AACzC,YAAA,gBAAkB,KAAI;AAC5B,YAAI,WAAwB;AAC5B,YAAI,eAAe,KAAK,gBAAgB,CAAA;AAExC,iBAAwB,KAAA,GAAA,iBAAA,cAAA,KAAA,eAAA,QAAA,MAAc;AAAjC,cAAI,cAAW,eAAA,EAAA;AAClB,cAAI,OAAO,YAAY;AACvB,cAAI,WAAWM,QAAO,KAAK;AAC3B,cAAI,YAAY,KAAK,QAAQA;AAC7B,cAAI,UAAUN,OAAM,KAAK;AACzB,cAAI,aAAa,KAAK,SAASA;AAG/B,cAAI,YAAY,KAAK,aAAa,KAAK,WAAW,KAAK,cAAc,GAAG;AACtE,gBACE,WAAW,iBAAiB,KAAK,eAAe,YAAY,YAAW,MACtE,CAAC,YAAY,SAAS,WAAW,UAClC;AACA,yBAAW,EAAE,aAAa,MAAM,OAAO,UAAU,QAAO;;AAG1D,gBACE,cAAc,iBAAiB,KAAK,iBAAiB,YAAY,cAAa,MAC7E,CAAC,YAAY,SAAS,WAAW,aAClC;AACA,yBAAW,EAAE,aAAa,MAAM,UAAU,UAAU,WAAU;;AAGhE,gBACE,YAAY,iBAAiB,KAAK,iBAAiB,YAAY,cAAa,MAC3E,CAAC,YAAY,SAAS,WAAW,WAClC;AACA,yBAAW,EAAE,aAAa,MAAM,QAAQ,UAAU,SAAQ;;AAG5D,gBACE,aAAa,iBAAiB,KAAK,kBAAkB,YAAY,eAAc,MAC9E,CAAC,YAAY,SAAS,WAAW,YAClC;AACA,yBAAW,EAAE,aAAa,MAAM,SAAS,UAAU,UAAS;;;;AAKlE,eAAO;;AAGD,MAAAG,cAAA,UAAA,cAAR,SAAoB,eAA0B;AAC5C,eAAO,KAAK,eAAe,aAAa,EAAE,IAAI,SAAC,IAAE;AAC/C,cAAI,OAAO,QAAQ;AACjB,mBAAO,IAAI,sBAAsB,KAAK;;AAExC,iBAAO,IAAI,uBAAuB,IAAI,KAAK;SAC5C;;AAGK,MAAAA,cAAA,UAAA,iBAAR,SAAuB,eAA0B;AAC/C,YAAI,MAAM,CAAA;AAEV,iBAAkB,KAAA,GAAA,KAAA,KAAK,aAAL,KAAA,GAAA,QAAA,MAAkB;AAA/B,cAAI,QAAK,GAAA,EAAA;AACZ,cAAI,OAAO,UAAU,UAAU;AAC7B,gBAAI,KAAK,KAAK;iBACT;AACL,gBAAI,KAAI,MAAR,KAAY,MAAM,UAAU,MAAM,KAChC,UAAU,aAAa,EAAE,iBAAiB,KAAK,CAAC,CACjD;;;AAIL,eAAO;;AAEX,aAAAA;IAAA,EAAC;;;;;ACvM8C,gBAAAI,4BAAA,MAAA;AAkB7C,eAAAA,2BAAoB,aAA0B,UAAiB;AAA/D,YAAA,QACE,OAAA,KAAA,MAAM,WAAW,KAAC;AADA,cAAA,cAAA;AAXpB,cAAA,QAAuB;AACvB,cAAA,cAAsB;AACtB,cAAA,qBAA8B;AAE9B,cAAA,oBAA6B;AAC7B,cAAA,gBAAyB;AACzB,cAAA,aAAsB;AACtB,cAAA,eAAwB;AACxB,cAAA,sBAA+B;AAC/B,cAAA,iBAAgC;AA0BhC,cAAA,gBAAgB,SAAC,IAAoB;AACnC,cAAI,CAAC,MAAK,YAAY;AACpB,kBAAK,gBAAgB;AACrB,kBAAK,eAAe;AACpB,kBAAK,sBAAsB;AAE3B,6BAAiB,SAAS,IAAI;AAC9B,+BAAmB,SAAS,IAAI;AAKhC,gBAAI,CAAC,GAAG,SAAS;AACf,iBAAG,UAAU,eAAc;;AAG7B,kBAAK,QAAQ,QAAQ,eAAe,EAAE;AAEtC,gBACE,MAAK;YACL,CAAC,MAAK,QAAQ,kBACd;AAGA,oBAAK,OAAO,aAAa,KAAK;AAC9B,oBAAK,OAAO,MAAM,GAAG,WAA0B,GAAG,OAAO,GAAG,KAAK;AAEjE,oBAAK,WAAW,EAAE;AAElB,kBAAI,CAAC,MAAK,aAAa;AACrB,sBAAK,wBAAwB,EAAE;;;;;AAMvC,cAAA,gBAAgB,SAAC,IAAoB;AACnC,cAAI,MAAK,eAAe;AACtB,kBAAK,QAAQ,QAAQ,eAAe,EAAE;AAEtC,gBAAI,CAAC,MAAK,qBAAqB;AAC7B,kBAAI,cAAc,MAAK;AACvB,kBAAI,aAAU;AACR,kBAAA,SAAmB,GAAE,QAAb,SAAW,GAAE;AAE3B,2BAAa,SAAS,SAAS,SAAS;AACxC,kBAAI,cAAc,cAAc,aAAa;AAC3C,sBAAK,wBAAwB,EAAE;;;AAInC,gBAAI,MAAK,YAAY;AAEnB,kBAAI,GAAG,UAAU,SAAS,UAAU;AAClC,sBAAK,OAAO,WAAW,GAAG,OAAO,GAAG,KAAK;AACzC,sBAAK,aAAa,WAAW,GAAG,OAAO,GAAG,KAAK;;AAGjD,oBAAK,QAAQ,QAAQ,YAAY,EAAE;;;;AAKzC,cAAA,cAAc,SAAC,IAAoB;AACjC,cAAI,MAAK,eAAe;AACtB,kBAAK,gBAAgB;AAErB,2BAAe,SAAS,IAAI;AAC5B,6BAAiB,SAAS,IAAI;AAE9B,kBAAK,QAAQ,QAAQ,aAAa,EAAE;AAEpC,gBAAI,MAAK,YAAY;AACnB,oBAAK,aAAa,KAAI;AACtB,oBAAK,YAAY,EAAE;;AAGrB,gBAAI,MAAK,gBAAgB;AACvB,2BAAa,MAAK,cAAc;AAChC,oBAAK,iBAAiB;;;;AApG1B,YAAI,UAAU,MAAK,UAAU,IAAI,gBAAgB,WAAW;AAC5D,gBAAQ,QAAQ,GAAG,eAAe,MAAK,aAAa;AACpD,gBAAQ,QAAQ,GAAG,eAAe,MAAK,aAAa;AACpD,gBAAQ,QAAQ,GAAG,aAAa,MAAK,WAAW;AAEhD,YAAI,UAAU;AACZ,kBAAQ,WAAW;;AAGrB,cAAK,SAAS,IAAI,cAAa;AAC/B,cAAK,eAAe,IAAI,aAAY;;;AAGtC,MAAAA,2BAAA,UAAA,UAAA,WAAA;AACE,aAAK,QAAQ,QAAO;AAIpB,aAAK,YAAY,CAAA,CAAS;;AAuF5B,MAAAA,2BAAA,UAAA,aAAA,SAAW,IAAoB;AAA/B,YAAA,QAAA;AACE,YAAI,OAAO,KAAK,UAAU,UAAU;AAClC,eAAK,iBAAiB,WAAW,WAAA;AAC/B,kBAAK,iBAAiB;AACtB,kBAAK,eAAe,EAAE;aACrB,KAAK,KAAK;eACR;AACL,eAAK,eAAe,EAAE;;;AAI1B,MAAAA,2BAAA,UAAA,iBAAA,SAAe,IAAoB;AACjC,aAAK,eAAe;AACpB,aAAK,aAAa,EAAE;;AAGtB,MAAAA,2BAAA,UAAA,0BAAA,SAAwB,IAAoB;AAC1C,aAAK,sBAAsB;AAC3B,aAAK,aAAa,EAAE;;AAGtB,MAAAA,2BAAA,UAAA,eAAA,SAAa,IAAoB;AAC/B,YAAI,KAAK,gBAAgB,KAAK,qBAAqB;AACjD,cAAI,CAAC,KAAK,QAAQ,kBAAkB,KAAK,oBAAoB;AAC3D,iBAAK,aAAa;AAClB,iBAAK,oBAAoB;AAEzB,iBAAK,aAAa,MAAM,GAAG,OAAO,GAAG,OAAO,KAAK,WAAW;AAC5D,iBAAK,QAAQ,QAAQ,aAAa,EAAE;AAEpC,gBAAI,KAAK,uBAAuB,OAAO;AACrC,mBAAK,QAAQ,kBAAiB;;;;;AAMtC,MAAAA,2BAAA,UAAA,cAAA,SAAY,IAAoB;AAG9B,aAAK,OAAO,KACV,KAAK,mBACL,KAAK,SAAS,KAAK,MAAM,EAAE,CAAC;;AAIhC,MAAAA,2BAAA,UAAA,WAAA,SAAS,IAAoB;AAC3B,aAAK,aAAa;AAClB,aAAK,QAAQ,QAAQ,WAAW,EAAE;;AAKpC,MAAAA,2BAAA,UAAA,gBAAA,SAAc,MAAa;AACzB,aAAK,QAAQ,mBAAmB;;AAGlC,MAAAA,2BAAA,UAAA,qBAAA,SAAmB,MAAa;AAC9B,aAAK,OAAO,aAAa,IAAI;;AAG/B,MAAAA,2BAAA,UAAA,uBAAA,SAAqB,MAAa;AAChC,aAAK,oBAAoB;;AAG3B,MAAAA,2BAAA,UAAA,uBAAA,SAAqB,MAAa;AAChC,aAAK,aAAa,YAAY;;AAElC,aAAAA;IAAA,EAlM+C,eAAe;;ACJ9D,MAAA;;IAAA,WAAA;AAIE,eAAAC,eAAY,IAAe;AACzB,aAAK,WAAW,YAAY,EAAE;AAG9B,aAAK,eAAeC,oBAAmB,EAAE,EAAE,IACzC,SAACC,WAAQ;AAAK,iBAAA,IAAI,uBAAuBA,WAAU,IAAI;QAAC,CAAA;;AAI5D,MAAAF,eAAA,UAAA,UAAA,WAAA;AACE,iBAAwB,KAAA,GAAA,KAAA,KAAK,cAAL,KAAA,GAAA,QAAA,MAAmB;AAAtC,cAAI,cAAW,GAAA,EAAA;AAClB,sBAAY,QAAO;;;AAIvB,MAAAA,eAAA,UAAA,cAAA,WAAA;AACE,YAAIF,QAAO,KAAK,SAAS;AAEzB,iBAAwB,KAAA,GAAA,KAAA,KAAK,cAAL,KAAA,GAAA,QAAA,MAAmB;AAAtC,cAAI,cAAW,GAAA,EAAA;AAClB,UAAAA,SAAQ,YAAY,iBAAiB,YAAY,cAAa;;AAGhE,eAAOA;;AAGT,MAAAE,eAAA,UAAA,aAAA,WAAA;AACE,YAAIR,OAAM,KAAK,SAAS;AAExB,iBAAwB,KAAA,GAAA,KAAA,KAAK,cAAL,KAAA,GAAA,QAAA,MAAmB;AAAtC,cAAI,cAAW,GAAA,EAAA;AAClB,UAAAA,QAAO,YAAY,gBAAgB,YAAY,aAAY;;AAG7D,eAAOA;;AAGT,MAAAQ,eAAA,UAAA,mBAAA,SAAiB,OAAe,OAAa;AAC3C,YAAIG,SAAQ,EAAE,MAAM,OAAO,KAAK,MAAK;AAErC,iBAAwB,KAAA,GAAA,KAAA,KAAK,cAAL,KAAA,GAAA,QAAA,MAAmB;AAAtC,cAAI,cAAW,GAAA,EAAA;AAClB,cACE,CAAC,kBAAkB,YAAY,eAAc,CAAE,KAC/C,CAAC,gBAAgBA,QAAO,YAAY,UAAU,GAC9C;AACA,mBAAO;;;AAIX,eAAO;;AAEX,aAAAH;IAAA,EAAC;;AAID,WAAS,kBAAkB,MAAiB;AAC1C,QAAI,UAAW,KAAqB;AAEpC,WAAO,YAAY,UAAU,YAAY;EAC3C;ACjDA,MAAA;;IAAA,WAAA;AAgBE,eAAAI,aAAY,UAA2B,gBAAwC;AAA/E,YAAA,QAAA;AAVA,aAAA,mBAA4B;AAC5B,aAAA,iBAA0B;AAI1B,aAAA,aAAyB;AACzB,aAAA,YAAwB;AACxB,aAAA,WAAuB;AAgBvB,aAAA,oBAAoB,SAAC,IAAoB;AACjC,cAAAC,YAAa,MAAI;AAEvB,gBAAK,aAAa;AAClB,gBAAK,YAAY;AACjB,gBAAK,WAAW;AAEhB,gBAAK,YAAW;AAChB,gBAAK,kBAAkB,EAAE;AAEzB,cAAI,MAAK,cAAc,CAAC,MAAK,gBAAgB;AAC3C,YAAAA,UAAS,cAAc,KAAK;AAG5B,kBAAK,QAAQ,QAAQ,eAAe,EAAE;iBACjC;AACL,YAAAA,UAAS,cAAc,IAAI;;;AAgC/B,aAAA,kBAAkB,SAAC,IAAoB;AACrC,gBAAK,QAAQ,QAAQ,aAAa,EAAE;AACpC,gBAAK,WAAW,IAAI,IAAI;;AAG1B,aAAA,iBAAiB,SAAC,IAAoB;AACpC,gBAAK,QAAQ,QAAQ,YAAY,EAAE;AACnC,gBAAK,WAAW,EAAE;;AAGpB,aAAA,kBAAkB,SAAC,IAAoB;AACrC,gBAAK,YAAW;AAChB,gBAAK,QAAQ,QAAQ,aAAa,EAAE;;AAGtC,aAAA,gBAAgB,SAAC,IAAoB;AACnC,cAAI,MAAK,WAAW;AAClB,kBAAK,QAAQ,QAAQ,aAAa,MAAM,MAAM,EAAE;;AAGlD,gBAAK,WAAW,MAAK;AACrB,gBAAK,YAAY;AACjB,gBAAK,QAAQ,QAAQ,WAAW,EAAE;;AAlFlC,aAAK,iBAAiB;AAEtB,iBAAS,QAAQ,GAAG,eAAe,KAAK,iBAAiB;AACzD,iBAAS,QAAQ,GAAG,aAAa,KAAK,eAAe;AACrD,iBAAS,QAAQ,GAAG,YAAY,KAAK,cAAc;AACnD,iBAAS,QAAQ,GAAG,aAAa,KAAK,eAAe;AACrD,iBAAS,QAAQ,GAAG,WAAW,KAAK,aAAa;AAEjD,aAAK,WAAW;AAChB,aAAK,UAAU,IAAI,QAAO;;AAyB5B,MAAAD,aAAA,UAAA,oBAAA,SAAkB,IAAoB;AACpC,YAAI,YAAY,EAAE,MAAM,GAAG,OAAO,KAAK,GAAG,MAAK;AAC/C,YAAI,gBAAgB;AACpB,YAAI,YAAY,GAAG;AACnB,YAAI;AAEJ,YAAI,qBAAqB,aAAa;AACpC,wBAAc,YAAY,SAAS;AACnC,0BAAgB,eAAe,eAAe,WAAW;;AAG3D,YAAI,aAAa,KAAK,aAAa,KAAK,kBAAkB,cAAc,MAAM,cAAc,GAAG;AAC/F,YAAI,YAAY;AACd,cAAI,KAAK,oBAAoB,aAAa;AACxC,gBAAI,oBAAoB,eAAe,aAAa,WAAW,IAAI;AACnE,gBAAI,mBAAmB;AACrB,8BAAgB,cAAc,iBAAiB;;;AAInD,eAAK,cAAc,WAAW,eAAe,SAAS;eACjD;AACL,eAAK,cAAc,EAAE,MAAM,GAAG,KAAK,EAAC;;;AA6BxC,MAAAA,aAAA,UAAA,aAAA,SAAW,IAAsB,aAAqB;AACpD,YAAI,MAAM,KAAK,kBACb,GAAG,QAAQ,KAAK,YAAa,MAC7B,GAAG,QAAQ,KAAK,YAAa,GAAG;AAGlC,YAAI,eAAe,CAAC,YAAY,KAAK,WAAW,GAAG,GAAG;AACpD,eAAK,YAAY;AACjB,eAAK,QAAQ,QAAQ,aAAa,KAAK,OAAO,EAAE;;;AAIpD,MAAAA,aAAA,UAAA,cAAA,WAAA;AACE,aAAK,iBAAiB,QAAQ,KAAK,gBAAgB,SAAC,qBAAmB;AACrE,8BAAoB,UAAU,YAAW;AACzC,iBAAO,IAAI,cAAc,oBAAoB,EAAE;SAChD;;AAGH,MAAAA,aAAA,UAAA,cAAA,WAAA;AACQ,YAAA,iBAAmB,KAAI;AAE7B,iBAASE,OAAM,gBAAgB;AAC7B,yBAAeA,GAAE,EAAE,QAAO;;AAG5B,aAAK,iBAAiB,CAAA;;AAGxB,MAAAF,aAAA,UAAA,oBAAA,SAAkB,YAAoB,WAAiB;AACjD,YAAA,KAAqC,MAAnC,iBAAc,GAAA,gBAAE,iBAAc,GAAA;AACpC,YAAI,UAAsB;AAE1B,iBAASE,OAAM,gBAAgB;AAC7B,cAAI,YAAY,eAAeA,GAAE,EAAE;AACnC,cAAI,gBAAgB,eAAeA,GAAE;AAErC,cACE;UACA,cAAc,iBAAiB,YAAY,SAAS,GACpD;AACA,gBAAI,aAAa,cAAc,YAAW;AAC1C,gBAAI,YAAY,cAAc,WAAU;AACxC,gBAAI,eAAe,aAAa;AAChC,gBAAI,cAAc,YAAY;AACxB,gBAAA,WAAa,cAAa;AAChC,gBAAIC,SAAQ,SAAS,QAAQ,SAAS;AACtC,gBAAIC,UAAS,SAAS,SAAS,SAAS;AAExC;;cAEE,gBAAgB,KAAK,eAAeD,UACpC,eAAe,KAAK,cAAcC;cAClC;AACA,kBAAI,MAAM,UAAU,SAAS,cAAc,aAAaD,QAAOC,OAAM;AACrE,kBACE;cAEE,mBAAmB,IAAI,YAAY,aAAa,IAAI,SAAS,KAAK,MAEnE,CAAC,WAAW,IAAI,QAAQ,QAAQ,QACjC;AACA,oBAAI,cAAcF;AAClB,oBAAI,UAAU,UAAU;AAGxB,oBAAI,KAAK,QAAQ;AACjB,oBAAI,KAAK,SAAS;AAClB,oBAAI,KAAK,OAAO;AAChB,oBAAI,KAAK,UAAU;AAEnB,0BAAU;;;;;AAMlB,eAAO;;AAEX,aAAAF;IAAA,EAAC;;WAEe,YAAY,MAAkB,MAAgB;AAC5D,QAAI,CAAC,QAAQ,CAAC,MAAM;AAClB,aAAO;;AAGT,QAAI,QAAQ,IAAI,MAAM,QAAQ,IAAI,GAAG;AACnC,aAAO;;AAGT,WAAO,iBAAiB,KAAM,UAAU,KAAM,QAAQ;EACxD;WCxMgB,6BAA6B,UAAoB,SAAwB;AACvF,QAAI,QAAQ,CAAA;AAEZ,aAAsB,KAAA,GAAA,KAAA,QAAQ,YAAY,qBAApB,KAAA,GAAA,QAAA,MAAyC;AAA1D,UAAIK,aAAS,GAAA,EAAA;AAChB,MAAAC,UAAS,OAAOD,WAAU,UAAU,OAAO,CAAC;;AAG9C,IAAAC,UAAS,OAAO,kBAAkB,UAAU,QAAQ,OAAO,CAAC;AAE5D,WAAO;EACT;WAEgB,kBAAkB,MAAgB,SAAgB;AAChE,WAAO;MACL,MAAM,QAAQ,OAAO,KAAK,MAAM,KAAK;MACrC,SAAS,QAAQ,UAAU,KAAK,MAAM,OAAO,EAAE,UAAU,KAAK,OAAM,CAAE;MACtE,QAAQ,KAAK;;EAEjB;AClBA,MAAA;;IAAA,SAAA,QAAA;AAAkC,gBAAAC,eAAA,MAAA;AAIhC,eAAAA,cAAY,UAA6B;AAAzC,YAAA,QACE,OAAA,KAAA,MAAM,QAAQ,KAAC;AAejB,cAAA,oBAAoB,SAAC,KAAqB;AAClC,cAAA,WAAa,MAAI;AACvB,cAAI,SAAS,IAAI,UAAU;AAG3B,mBAAS,cACP,CAAC,MAAK,UAAU,kBAAkB,MAAM,CAAC;;AAK7C,cAAA,gBAAgB,SAAC,IAAoB;AAC7B,cAAA,YAAc,MAAI;AAClB,cAAA,UAAY,MAAK,SAAQ;AAE/B,cAAI,CAAC,QAAQ,gBAAgB;AACvB,gBAAA,KAA2B,MAAK,aAA9B,aAAU,GAAA,YAAE,WAAQ,GAAA;AAE1B,gBAAI,cAAc,YAAY,YAAY,YAAY,QAAQ,GAAG;AACzD,kBAAA,UAAY,UAAS;AAC3B,kBAAI,MAAGD,UAAAA,UAAA,CAAA,GACF,6BAA6B,WAAW,UAAU,OAAO,CAAC,GAAA,EAC7D,OAAO,WAAW,OAClB,SAAS,GAAG,WACZ,MAAM,QAAQ,WAAW,QAAQ,YAAY,KAAI,CAAA;AAGnD,sBAAQ,QAAQ,QAAQ,aAAa,GAAG;;;;AAvC5C,cAAK,WAAW,IAAI,0BAA0B,SAAS,EAAE;AACzD,cAAK,SAAS,aAAa,YAAY;AAEvC,YAAI,cAAc,MAAK,cAAc,IAAI,YAAY,MAAK,UAAU,2BAA2B,QAAQ,CAAC;AACxG,oBAAY,QAAQ,GAAG,eAAe,MAAK,iBAAiB;AAC5D,oBAAY,QAAQ,GAAG,WAAW,MAAK,aAAa;;;AAGtD,MAAAC,cAAA,UAAA,UAAA,WAAA;AACE,aAAK,SAAS,QAAO;;AAkCzB,aAAAA;IAAA,EAnDkCC,YAAW;;ACL7C,MAAA;;IAAA,SAAA,QAAA;AAAmC,gBAAAC,gBAAA,MAAA;AAKjC,eAAAA,eAAY,UAA6B;AAAzC,YAAA,QACE,OAAA,KAAA,MAAM,QAAQ,KAAC;AAHjB,cAAA,gBAAiC;AAuBjC,cAAA,oBAAoB,SAAC,IAAoB;AACnC,cAAA,KAA0B,OAAxBC,aAAS,GAAA,WAAET,YAAQ,GAAA;AACnB,cAAAU,WAAYD,WAAU,QAAO;AAEnC,cAAI,YAAYC,SAAQ,cACtBD,WAAU,kBAAkB,GAAG,UAAU,MAAqB;AAGhE,UAAAT,UAAS,cAAc,CAAC,SAAS;AAGjC,UAAAA,UAAS,QAAQ,GAAG,UAAUW,yBAAuBF,UAAS,IAAI;;AAGpE,cAAA,kBAAkB,SAAC,IAAoB;AACrC,gBAAK,UAAU,QAAQ,YAAY,SAAS,EAAE;;AAGhD,cAAA,kBAAkB,SAAC,KAAiB,SAAgB;AAC5C,cAAA,UAAY,MAAK,UAAS;AAChC,cAAI,gBAAiC;AACrC,cAAI,YAAY;AAEhB,cAAI,KAAK;AACP,gBAAI,aAAa,MAAK,YAAY;AAClC,gBAAI,aAAa,IAAI,gBAAgB,WAAW,eAC3C,MAAK,qBACL,CAAC,MAAK,kBAAkB,YAAY,GAAG;AAE5C,gBAAI,CAAC,YAAY;AACf,8BAAgB,sBACd,YACA,KACA,QAAQ,YAAY,yBAAyB;;AAIjD,gBAAI,CAAC,iBAAiB,CAAC,qBAAqB,eAAe,IAAI,aAAa,OAAO,GAAG;AACpF,0BAAY;AACZ,8BAAgB;;;AAIpB,cAAI,eAAe;AACjB,oBAAQ,SAAS,EAAE,MAAM,gBAAgB,WAAW,cAAa,CAAE;qBAC1D,CAAC,SAAS;AACnB,oBAAQ,SAAS,EAAE,MAAM,iBAAgB,CAAE;;AAG7C,cAAI,CAAC,WAAW;AACd,yBAAY;iBACP;AACL,0BAAa;;AAGf,cAAI,CAAC,SAAS;AACZ,kBAAK,gBAAgB;;;AAIzB,cAAA,kBAAkB,SAAC,KAAqB;AACtC,cAAI,MAAK,eAAe;AAEtB,8BAAkB,MAAK,eAAe,KAAK,MAAK,UAAU,OAAO;AAEjE,kBAAK,gBAAgB;;;AApFjB,YAAA,YAAc,SAAQ;AACtB,YAAAC,WAAY,UAAU,QAAO;AAEnC,YAAI,WAAW,MAAK,WAAW,IAAI,0BAA0B,SAAS,EAAE;AACxE,iBAAS,qBAAqB;AAC9B,iBAAS,cAAcA,SAAQ,qBAAqB;AACpD,iBAAS,aAAa,YAAYA,SAAQ;AAE1C,YAAI,cAAc,MAAK,cAAc,IAAI,YAAY,MAAK,UAAU,2BAA2B,QAAQ,CAAC;AACxG,oBAAY,QAAQ,GAAG,eAAe,MAAK,iBAAiB;AAC5D,oBAAY,QAAQ,GAAG,aAAa,MAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,aAAa,MAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,aAAa,MAAK,eAAe;;;AAG1D,MAAAF,eAAA,UAAA,UAAA,WAAA;AACE,aAAK,SAAS,QAAO;;AAuEzB,aAAAA;IAAA,EA9FmCD,YAAW;;AAgG9C,WAASI,yBAAuB,WAA6B;AACrD,QAAAD,WAAY,UAAU,QAAO;AACnC,QAAI,QAAQA,SAAQ;AAEpB,QAAI,SAAS,MAAM;AACjB,cAAQA,SAAQ;;AAGlB,WAAO;EACT;AAEA,WAAS,sBAAsB,MAAW,MAAW,2BAAyD;AAC5G,QAAI,YAAY,KAAK;AACrB,QAAI,YAAY,KAAK;AACrB,QAAI,KAAK;MACP,UAAU,MAAM;MAChB,UAAU,MAAM;MAChB,UAAU,MAAM;MAChB,UAAU,MAAM;;AAGlB,OAAG,KAAK,cAAc;AAEtB,QAAI,QAAQ,CAAA;AAEZ,aAAwB,KAAA,GAAA,8BAAA,2BAAA,KAAA,4BAAA,QAAA,MAA2B;AAA9C,UAAI,cAAW,4BAAA,EAAA;AAClB,UAAI,MAAM,YAAY,MAAM,IAAI;AAEhC,UAAI,QAAQ,OAAO;AACjB,eAAO;;AAGT,UAAI,KAAK;AACP,QAAAL,UAAS,OAAO,GAAG;;;AAIvB,UAAM,QAAQ,EAAE,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,EAAC;AACxC,UAAM,SAAS,UAAU;AAEzB,WAAO;EACT;ACjHA,MAAA;;IAAA,SAAA,QAAA;AAAmC,gBAAAO,gBAAA,MAAA;AAkBjC,eAAAA,eAAY,UAA6B;AAAzC,YAAA,QACE,OAAA,KAAA,MAAM,QAAQ,KAAC;AAVjB,cAAA,YAAgC;AAChC,cAAA,aAAyB;AACzB,cAAA,aAAsB;AACtB,cAAA,aAAsC;AACtC,cAAA,iBAAoC;AACpC,cAAA,mBAA2C;AAC3C,cAAA,gBAAsC;AACtC,cAAA,wBAA2C;AAyB3C,cAAA,oBAAoB,SAAC,IAAoB;AACvC,cAAI,aAAa,GAAG,UAAU;AAC1B,cAAA,KAA0B,OAAxBH,aAAS,GAAA,WAAET,YAAQ,GAAA;AACnB,cAAA,SAAWA,UAAQ;AACnB,cAAAU,WAAYD,WAAU,QAAO;AACnC,cAAI,iBAAiBA,WAAU;AAC/B,gBAAK,YAAY,GAAG;AACpB,cAAI,aAAa,MAAK,aAAa,SAAS,GAAG,SAAwB;AACvE,cAAI,aAAa,MAAK,aAAa,WAAW;AAC9C,cAAI,kBAAkB,WAAW,SAAU;AAE3C,gBAAK,iBAAiB,kBACpB,eAAe,eAAc,EAAG,YAChC,eAAe;AAGjB,UAAAT,UAAS,cAAc,GAAG,UAAU,IAAIU,SAAQ;AAChD,UAAAV,UAAS;UAEN,GAAG,WAAW,oBAAoBS,WAAU,MAAM,iBACjD,uBAAuBA,UAAS,IAChC;AAEJ,cAAIC,SAAQ,mBAAmB;AAC7B,mBAAO,aAAaA,SAAQ;iBACvB;AACL,mBAAO,aAAa,eAAe,YAAY,KAAK;;AAGtD,iBAAO,iBAAiBA,SAAQ;AAEhC,cAAIG,WACFJ,WAAU,iBAAiB,UAAU,KACrC,CAAC,eAAe,YAAY,mBAAmB;AAEjD,UAAAT,UAAS,cAAc,CAACa,QAAO;AAI/B,gBAAK,aAAaA,YACf,GAAG,UAA0B,UAAU,SAAS,oBAAoB;;AAGzE,cAAA,kBAAkB,SAAC,IAAoB;AACrC,cAAI,iBAAiB,MAAK,UAAU;AACpC,cAAI,aAAa,MAAK;AACtB,cAAI,kBAAkB,WAAW,SAAS;AAE1C,cAAI,GAAG,SAAS;AAEd,gBAAI,oBAAoB,MAAK,UAAU,MAAM,gBAAgB;AAC3D,6BAAe,SAAS,EAAE,MAAM,gBAAgB,gBAAe,CAAE;;iBAE9D;AAEL,2BAAe,SAAS,EAAE,MAAM,iBAAgB,CAAE;;AAGpD,cAAI,MAAK,YAAY;AACnB,2BAAe,YAAY,SAAS,EAAE;AACtC,2BAAe,QAAQ,QAAQ,kBAAkB;cAC/C,IAAI,MAAK;cACT,OAAO,IAAI,SAAS,gBAAgB,WAAW,KAAK,WAAW,QAAQ;cACvE,SAAS,GAAG;cACZ,MAAM,eAAe;aACD;;;AAI1B,cAAA,kBAAkB,SAAC,KAAiB,SAAgB;AAClD,cAAI,CAAC,MAAK,YAAY;AACpB;;AAGF,cAAI,iBAAiB,MAAK;AAC1B,cAAI,aAAa,MAAK,YAAY;AAClC,cAAI,iBAAiB,MAAK,UAAU;AAGpC,cAAI,mBAA2C;AAC/C,cAAI,WAAiC;AACrC,cAAI,wBAA2C;AAC/C,cAAI,YAAY;AAChB,cAAI,cAAqC;YACvC,gBAAgB;YAChB,eAAe,sBAAqB;YACpC,SAAS;;AAGX,cAAI,KAAK;AACP,+BAAmB,IAAI;AACvB,gBAAI,mBAAmB,iBAAiB;AAExC,gBACE,mBAAmB,oBAClB,iBAAiB,YAAY,iBAAiB,WAC/C;AACA,yBAAW,qBAAqB,YAAY,KAAK,iBAAiB,eAAc,EAAG,YAAY,0BAA0B;AAEzH,kBAAI,UAAU;AACZ,wCAAwB,0BACtB,gBACA,iBAAiB,eAAc,EAAG,cAClC,UACA,gBAAgB;AAElB,4BAAY,gBAAgB;AAE5B,oBAAI,CAAC,mBAAmB,aAAa,IAAI,aAAa,gBAAgB,GAAG;AACvE,8BAAY;AACZ,6BAAW;AACX,0CAAwB;AACxB,8BAAY,gBAAgB,sBAAqB;;;mBAGhD;AACL,iCAAmB;;;AAIvB,gBAAK,YAAY,kBAAkB,WAAW;AAE9C,cAAI,CAAC,WAAW;AACd,yBAAY;iBACP;AACL,0BAAa;;AAGf,cAAI,CAAC,SAAS;AACZ,gBACE,mBAAmB;YACnB,YAAY,YAAY,GAAG,GAC3B;AACA,yBAAW;;AAGb,kBAAK,SAAS,qBAAqB,CAAC,QAAQ;AAI5C,kBAAK,SAAS,mBACZ,CAAC,OAAO,CAAC,UAAU,MAAK,SAAS,EAAE,cAAc,kBAAkB,CAAC;AAItE,kBAAK,mBAAmB;AACxB,kBAAK,gBAAgB;AACrB,kBAAK,wBAAwB;;;AAIjC,cAAA,kBAAkB,WAAA;AAChB,cAAI,CAAC,MAAK,YAAY;AACpB,kBAAK,QAAO;;;AAIhB,cAAA,gBAAgB,SAAC,IAAoB;AACnC,cAAI,MAAK,YAAY;AACnB,gBAAI,mBAAiB,MAAK,UAAU;AACpC,gBAAI,cAAc,iBAAe;AAC7B,gBAAA,KAAsC,OAApC,qBAAgB,GAAA,kBAAE,gBAAa,GAAA;AACrC,gBAAI,WAAW,MAAK,WAAY;AAChC,gBAAI,gBAAgB,MAAK,WAAY;AACrC,gBAAI,WAAW,IAAI,SAAS,kBAAgB,UAAU,aAAa;AACnE,gBAAI,mBAAiB,MAAK;AAC1B,gBAAI,0BAAwB,MAAK;AAC3B,gBAAA,WAAa,MAAK,YAAW;AAEnC,kBAAK,UAAS;AAEd,6BAAe,QAAQ,QAAQ,iBAAiB;cAC9C,IAAI,MAAK;cACT,OAAO;cACP,SAAS,GAAG;cACZ,MAAM;aACa;AAErB,gBAAI,eAAe;AAEjB,kBAAI,uBAAqB,kBAAgB;AACvC,oBAAI,kBAAkB,IAAI,SACxB,kBACA,wBAAsB,KAAK,SAAS,KAAK,GACzC,gBAAgB,wBAAsB,UAAU,cAAc,UAAU,IAAI,IAAI;AAGlF,iCAAe,SAAS;kBACtB,MAAM;kBACN,YAAY;iBACb;AAED,oBAAI,iBAAiC;kBACnC,UAAU;kBACV,OAAO;kBACP,eAAe,eAAe,yBAAuB,kBAAgB,aAAa;kBAClF,QAAM,WAAA;AACJ,qCAAe,SAAS;sBACtB,MAAM;sBACN,YAAY;;qBACb;;;AAIL,oBAAI,cAAiD,CAAA;AACrD,yBAAwB,KAAA,GAAA,KAAA,iBAAe,eAAc,EAAG,YAAY,uBAA5C,KAAA,GAAA,QAAA,MAAmE;AAAtF,sBAAI,cAAW,GAAA,EAAA;AAClB,kBAAAR,UAAS,aAAa,YAAY,eAAe,gBAAc,CAAC;;AAGlE,iCAAe,QAAQ,QAAQ,aAAWA,UAAAA,UAAAA,UAAA,CAAA,GACrC,cAAc,GACd,WAAW,GAAA,EACd,IAAI,GAAG,WACP,OAAO,cAAc,YACrB,SAAS,GAAG,WACZ,MAAM,YAAW,CAAA,CAAA;AAGnB,iCAAe,QAAQ,QAAQ,eAAe,cAAc;yBAGnD,oBAAkB;AAC3B,oBAAI,iBAAiC;kBACnC,OAAO;kBACP,eAAe,eAAe,kBAAgB,kBAAgB,aAAa;kBAC3E,QAAM,WAAA;AACJ,qCAAe,SAAS;sBACtB,MAAM;sBACN,YAAY;qBACb;;;AAIL,iCAAe,QAAQ,QAAQ,cAAYA,UAAAA,UAAA,CAAA,GACtC,cAAc,GAAA,EACjB,WAAW,GAAG,WACd,MAAM,YAAW,CAAA,CAAA;AAGnB,iCAAe,SAAS;kBACtB,MAAM;kBACN,YAAY;iBACb;AAED,iCAAe,QAAQ,QAAQ,eAAe,cAAc;AAE5D,oBAAI,gBAAgB,wBAAsB,KAAK,SAAS,KAAK;AAC7D,oBAAI,qBAAqB,wBAAsB,UAAU,cAAc,UAAU;AACjF,oBAAI,gBAAgB,IAAI,SAAS,oBAAkB,eAAe,kBAAkB;AAEpF,mCAAiB,SAAS;kBACxB,MAAM;kBACN,YAAY;iBACb;AAED,oBAAI,cAA2B;kBAC7B,OAAO;kBACP,eAAe,eAAe,yBAAuB,oBAAkB,kBAAkB;kBACzF,QAAM,WAAA;AACJ,uCAAiB,SAAS;sBACxB,MAAM;sBACN,YAAY;qBACb;;;AAIL,mCAAiB,QAAQ,QAAQ,YAAY,WAAW;AAExD,oBAAI,GAAG,SAAS;AACd,qCAAiB,SAAS;oBACxB,MAAM;oBACN,iBAAiB,cAAc;mBAChC;;AAGH,mCAAiB,QAAQ,QAAQ,QAAMA,UAAAA,UAAA,CAAA,GAClC,6BAA6B,SAAS,UAAU,kBAAgB,CAAC,GAAA,EACpE,WAAW,GAAG,WACd,SAAS,GAAG,WACZ,MAAM,SAAS,QAAQ,QAAO,CAAA,CAAA;AAGhC,mCAAiB,QAAQ,QAAQ,gBAAcA,UAAAA,UAAA,CAAA,GAC1C,WAAW,GAAA,EACd,WAAW,GAAG,WACd,MAAM,SAAS,QAAQ,QAAO,CAAA,CAAA;;mBAG7B;AACL,+BAAe,QAAQ,QAAQ,cAAc;;;AAIjD,gBAAK,QAAO;;AA1TN,YAAA,YAAc,MAAI;AAClB,YAAAK,WAAY,UAAU,QAAO;AAEnC,YAAI,WAAW,MAAK,WAAW,IAAI,0BAA0B,SAAS,EAAE;AACxE,iBAAS,QAAQ,WAAWE,eAAc;AAC1C,iBAAS,qBAAqB;AAC9B,iBAAS,aAAa,YAAYF,SAAQ;AAE1C,YAAI,cAAc,MAAK,cAAc,IAAI,YAAY,MAAK,UAAU,wBAAwB;AAC5F,oBAAY,mBAAmB,SAAS;AACxC,oBAAY,QAAQ,GAAG,eAAe,MAAK,iBAAiB;AAC5D,oBAAY,QAAQ,GAAG,aAAa,MAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,aAAa,MAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,aAAa,MAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,WAAW,MAAK,aAAa;;;AAGtD,MAAAE,eAAA,UAAA,UAAA,WAAA;AACE,aAAK,SAAS,QAAO;;AA4SvB,MAAAA,eAAA,UAAA,cAAA,SAAY,aAAqC,OAA4B;AAC3E,YAAI,iBAAiB,KAAK,UAAU;AACpC,YAAI,cAAc,KAAK;AAGvB,YAAI,eAAe,gBAAgB,aAAa;AAG9C,cAAI,gBAAgB,gBAAgB;AAClC,wBAAY,SAAS;cACnB,MAAM;cACN,OAAO;gBACL,gBAAgB,MAAM;gBACtB,eAAe,sBAAqB;gBACpC,SAAS;;aAEZ;iBAGI;AACL,wBAAY,SAAS,EAAE,MAAM,mBAAkB,CAAE;;;AAIrD,YAAI,aAAa;AACf,sBAAY,SAAS,EAAE,MAAM,kBAAkB,MAAK,CAAE;;;AAI1D,MAAAA,eAAA,UAAA,YAAA,WAAA;AACE,YAAI,kBAAkB,KAAK,UAAU;AAC/B,YAAA,mBAAqB,KAAI;AAE/B,YAAI,kBAAkB;AACpB,2BAAiB,SAAS,EAAE,MAAM,mBAAkB,CAAE;;AAIxD,YAAI,oBAAoB,kBAAkB;AACxC,0BAAgB,SAAS,EAAE,MAAM,mBAAkB,CAAE;;;AAIzD,MAAAA,eAAA,UAAA,UAAA,WAAA;AACE,aAAK,aAAa;AAClB,aAAK,aAAa;AAClB,aAAK,aAAa;AAClB,aAAK,iBAAiB;AACtB,aAAK,mBAAmB;AACxB,aAAK,gBAAgB;AACrB,aAAK,wBAAwB;;AAjYxB,MAAAA,eAAA,WAAW;AAmYpB,aAAAA;MAtYmCL,YAAW;;AAwY9C,WAAS,qBAAqB,MAAW,MAAW,WAAsC;AACxF,QAAI,YAAY,KAAK;AACrB,QAAI,YAAY,KAAK;AACrB,QAAI,QAAQ,UAAU,MAAM;AAC5B,QAAI,QAAQ,UAAU,MAAM;AAC5B,QAAI,gBAAgB,CAAA;AAEpB,QAAI,UAAU,WAAW,UAAU,QAAQ;AACzC,oBAAc,SAAS,UAAU;AACjC,oBAAc,SAAS,KAAK,QAAQ,QAAQ;AAE5C,UAAI,UAAU,QAAQ;AAGpB,gBAAQO,YAAW,KAAK;;;AAI5B,QAAI,QAAQ,UACV,OAAO,OACP,KAAK,QAAQ,SACb,KAAK,gBAAgB,KAAK,cACxB,KAAK,YACL,IAAI;AAGR,QAAI,MAAM,cAAc;AACtB,oBAAc,SAAS;;AAGzB,QAAI,WAA0B;MAC5B,YAAY;MACZ;;AAGF,aAAqB,KAAA,GAAA,cAAA,WAAA,KAAA,YAAA,QAAA,MAAW;AAA3B,UAAI,WAAQ,YAAA,EAAA;AACf,eAAS,UAAU,MAAM,IAAI;;AAG/B,WAAO;EACT;AAEA,WAAS,uBAAuB,WAA6B;AACrD,QAAAJ,WAAY,UAAU,QAAO;AACnC,QAAI,QAAQA,SAAQ;AAEpB,QAAI,SAAS,MAAM;AACjB,cAAQA,SAAQ;;AAGlB,WAAO;EACT;AC7bA,MAAA;;IAAA,SAAA,QAAA;AAAmC,gBAAAK,gBAAA,MAAA;AAYjC,eAAAA,eAAY,UAA6B;AAAzC,YAAA,QACE,OAAA,KAAA,MAAM,QAAQ,KAAC;AARjB,cAAA,gBAAoC;AACpC,cAAA,cAA0B;AAC1B,cAAA,aAAsC;AACtC,cAAA,iBAAoC;AACpC,cAAA,gBAAsC;AACtC,cAAA,wBAA2C;AAsB3C,cAAA,oBAAoB,SAAC,IAAoB;AACjC,cAAAN,aAAc,MAAI;AACxB,cAAI,QAAQ,MAAK,WAAW,EAAE;AAC9B,cAAI,MAAM,SAAS,KAAK;AACxB,cAAI,aAAa,MAAK,aAAa,IAAI;AAEvC,gBAAK,SAAS,cAAcA,WAAU,QAAQ,QAAQ;AAGtD,gBAAK,SAAS,cACZ,CAAC,MAAK,UAAU,iBAAiB,GAAG,UAAU,MAAqB,KAClE,GAAG,WAAW,MAAK,UAAU,MAAM,mBAAmB,WAAW,SAAU,UAAW;;AAI3F,cAAA,kBAAkB,SAAC,IAAoB;AAC/B,cAAA,UAAY,MAAK,UAAS;AAChC,cAAI,aAAa,MAAK;AAEtB,gBAAK,iBAAiB,kBACpB,QAAQ,eAAc,EAAG,YACzB,MAAK,WAAW,SAAU,UAAU;AAGtC,cAAI,QAAQ,MAAK,WAAW,EAAE;AAC9B,gBAAK,gBAAgB;AACrB,gBAAK,cAAc,SAAS,KAAK;AAEjC,kBAAQ,YAAY,SAAQ;AAC5B,kBAAQ,QAAQ,QAAQ,oBAAoB;YAC1C,IAAI;YACJ,OAAO,IAAI,SAAS,SAAS,WAAW,KAAK,WAAW,QAAQ;YAChE,SAAS,GAAG;YACZ,MAAM,QAAQ;WACQ;;AAG1B,cAAA,kBAAkB,SAAC,KAAiB,SAAkB,IAAoB;AAClE,cAAA,UAAY,MAAK,UAAS;AAChC,cAAI,iBAAiB,MAAK;AAC1B,cAAI,aAAa,MAAK,YAAY;AAClC,cAAI,gBAAgB,MAAK,WAAW;AACpC,cAAI,WAAiC;AACrC,cAAI,wBAA2C;AAC/C,cAAI,YAAY;AAChB,cAAI,cAAqC;YACvC,gBAAgB;YAChB,eAAe,sBAAqB;YACpC,SAAS;;AAGX,cAAI,KAAK;AACP,gBAAI,aAAa,IAAI,gBAAgB,WAAW,eAC3C,MAAK,qBACL,CAAC,MAAK,kBAAkB,YAAY,GAAG;AAE5C,gBAAI,CAAC,YAAY;AACf,yBAAW,gBACT,YACA,KACC,GAAG,UAA0B,UAAU,SAAS,wBAAwB,GACzE,cAAc,KAAK;;;AAKzB,cAAI,UAAU;AACZ,oCAAwB,0BAA0B,gBAAgB,QAAQ,eAAc,EAAG,cAAc,UAAU,OAAO;AAC1H,wBAAY,gBAAgB;AAE5B,gBAAI,CAAC,mBAAmB,aAAa,IAAI,aAAa,OAAO,GAAG;AAC9D,0BAAY;AACZ,yBAAW;AACX,sCAAwB;AACxB,0BAAY,gBAAgB;;;AAIhC,cAAI,uBAAuB;AACzB,oBAAQ,SAAS;cACf,MAAM;cACN,OAAO;aACR;iBACI;AACL,oBAAQ,SAAS,EAAE,MAAM,qBAAoB,CAAE;;AAGjD,cAAI,CAAC,WAAW;AACd,yBAAY;iBACP;AACL,0BAAa;;AAGf,cAAI,CAAC,SAAS;AACZ,gBAAI,YAAY,YAAY,YAAY,GAAG,GAAG;AAC5C,yBAAW;;AAGb,kBAAK,gBAAgB;AACrB,kBAAK,wBAAwB;;;AAIjC,cAAA,gBAAgB,SAAC,IAAoB;AAC7B,cAAA,UAAY,MAAK,UAAS;AAChC,cAAI,WAAW,MAAK,WAAY;AAChC,cAAI,gBAAgB,MAAK,WAAY;AACrC,cAAI,WAAW,IAAI,SAAS,SAAS,UAAU,aAAa;AAC5D,cAAI,iBAAiB,MAAK;AAC1B,cAAI,wBAAwB,MAAK;AAEjC,kBAAQ,QAAQ,QAAQ,mBAAmB;YACzC,IAAI,MAAK;YACT,OAAO;YACP,SAAS,GAAG;YACZ,MAAM,QAAQ;WACO;AAEvB,cAAI,MAAK,eAAe;AACtB,gBAAI,kBAAkB,IAAI,SACxB,SACA,sBAAsB,KAAK,SAAS,KAAK,GACzC,gBAAgB,sBAAsB,UAAU,cAAc,UAAU,IAAI,IAAI;AAGlF,oBAAQ,SAAS;cACf,MAAM;cACN,YAAY;aACb;AAED,gBAAI,iBAAiC;cACnC,UAAU;cACV,OAAO;cACP,eAAe,eAAe,uBAAuB,SAAS,aAAa;cAC3E,QAAM,WAAA;AACJ,wBAAQ,SAAS;kBACf,MAAM;kBACN,YAAY;;iBACb;;;AAIL,oBAAQ,QAAQ,QAAQ,eAAaJ,UAAAA,UAAA,CAAA,GAChC,cAAc,GAAA,EACjB,IAAI,MAAK,eACT,YAAY,MAAK,cAAc,cAAc,eAAe,CAAC,GAC7D,UAAU,MAAK,cAAc,YAAY,eAAe,CAAC,GACzD,SAAS,GAAG,WACZ,MAAM,QAAQ,QAAO,CAAA,CAAA;AAGvB,oBAAQ,QAAQ,QAAQ,eAAe,cAAc;iBAChD;AACL,oBAAQ,QAAQ,QAAQ,gBAAgB;;AAI1C,gBAAK,cAAc;AACnB,gBAAK,iBAAiB;AACtB,gBAAK,gBAAgB;;AAjLf,YAAA,YAAc,SAAQ;AAE5B,YAAI,WAAW,MAAK,WAAW,IAAI,0BAA0B,SAAS,EAAE;AACxE,iBAAS,QAAQ,WAAW;AAC5B,iBAAS,qBAAqB;AAC9B,iBAAS,aAAa,YAAY,UAAU,QAAQ,QAAQ;AAE5D,YAAI,cAAc,MAAK,cAAc,IAAI,YAAY,MAAK,UAAU,2BAA2B,QAAQ,CAAC;AACxG,oBAAY,QAAQ,GAAG,eAAe,MAAK,iBAAiB;AAC5D,oBAAY,QAAQ,GAAG,aAAa,MAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,aAAa,MAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,WAAW,MAAK,aAAa;;;AAGtD,MAAAU,eAAA,UAAA,UAAA,WAAA;AACE,aAAK,SAAS,QAAO;;AAuKvB,MAAAA,eAAA,UAAA,aAAA,SAAW,IAAoB;AAC7B,eAAO,eAAe,GAAG,WAA0B,WAAW;;AAElE,aAAAA;IAAA,EAvMmCR,YAAW;;AAyM9C,WAAS,gBACP,MACA,MACA,aACA,eAAwB;AAExB,QAAI,UAAU,KAAK,QAAQ;AAC3B,QAAI,QAAQ,KAAK,SAAS,MAAM;AAChC,QAAI,QAAQ,KAAK,SAAS,MAAM;AAEhC,QAAI,QAAQ,UACV,OAAO,OACP,SACA,KAAK,SAAS;AAGhB,QAAI,aAAa;AACf,UAAI,QAAQ,IAAI,cAAc,OAAO,KAAK,IAAI,cAAc,KAAK;AAC/D,eAAO,EAAE,YAAY,MAAK;;eAEnB,QAAQ,IAAI,cAAc,KAAK,KAAK,IAAI,cAAc,OAAO;AACtE,aAAO,EAAE,UAAU,MAAK;;AAG1B,WAAO;EACT;AC5PA,MAAA;;IAAA,WAAA;AAME,eAAAS,cAAoB,SAAwB;AAA5C,YAAA,QAAA;AAAoB,aAAA,UAAA;AAJpB,aAAA,4BAA4B;AAC5B,aAAA,gBAAgB;AAChB,aAAA,eAAe;AAoBf,aAAA,WAAW,SAAC,YAA4B;AACtC,cAAI,WAAW,SAAS;AACtB,kBAAK,4BAA4B;;;AAIrC,aAAA,wBAAwB,SAAC,KAAqB;AAC5C,cAAI,iBAAiB,MAAK,QAAQ,QAAQ;AAC1C,cAAI,SAAS,sBAAsB,IAAI,SAAS;AAEhD,gBAAK,gBAAgB,CAAC,CAAC,eAAe,QAAQ,cAAc;AAC5D,gBAAK,eAAe,CAAC,CAAC,eAAe,QAAQ,cAAc,QAAQ;;AAGrE,aAAA,sBAAsB,SAAC,KAAqB;AACpC,cAAAC,WAAY,MAAI;AAChB,cAAAC,mBAAoB,MAAI;AAC9B,cAAI,gBAAgBD,SAAQ,eAAc;AAG1C,cAAI,CAACC,iBAAgB,gBAAgB;AACnC,gBACE,cAAc;YACd,CAAC,MAAK,2BACN;AACA,kBAAI,eAAeD,SAAQ,QAAQ;AAEnC,kBAAI,iBAAiB,CAAC,gBAAgB,CAAC,MAAK,gBAAgB;AAC1D,gBAAAA,SAAQ,YAAY,SAAS,GAAG;;;AAIpC,gBACE,cAAc;YACd,CAAC,MAAK,cACN;AACA,cAAAA,SAAQ,SAAS,EAAE,MAAM,iBAAgB,CAAE;;;AAI/C,gBAAK,4BAA4B;;AAzDjC,YAAI,kBAAkB,KAAK,kBAAkB,IAAI,gBAAgB,QAAQ;AACzE,wBAAgB,mBAAmB;AACnC,wBAAgB,oBAAoB;AACpC,wBAAgB,QAAQ,GAAG,eAAe,KAAK,qBAAqB;AACpE,wBAAgB,QAAQ,GAAG,aAAa,KAAK,mBAAmB;AAKhE,gBAAQ,QAAQ,GAAG,UAAU,KAAK,QAAQ;;AAG5C,MAAAD,cAAA,UAAA,UAAA,WAAA;AACE,aAAK,QAAQ,QAAQ,IAAI,UAAU,KAAK,QAAQ;AAChD,aAAK,gBAAgB,QAAO;;AA6ChC,aAAAA;IAAA,EAAC;;AClEM,MAAM,kBAAkB;IAC7B,mBAAmB;;AAGd,MAAM,oBAAoB;IAC/B,WAAW;IACX,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,aAAa;IACb,MAAM;IACN,cAAc;IACd,YAAY;;ACad,MAAA;;IAAA,WAAA;AAOE,eAAAG,yBAAY,UAA2B,kBAAoC;AAA3E,YAAA,QAAA;AALA,aAAA,mBAA2C;AAC3C,aAAA,iBAAoC;AACpC,aAAA,mBAA6C;AAC7C,aAAA,WAA4B;AAY5B,aAAA,kBAAkB,SAAC,IAAoB;AACrC,gBAAK,WAAW,MAAK,cAAc,GAAG,SAAwB;;AAahE,aAAA,kBAAkB,SAAC,KAAiB,SAAkB,IAAoB;AAClE,cAAAnB,YAAa,MAAK,YAAW;AACnC,cAAI,mBAA2C;AAC/C,cAAI,iBAAoC;AACxC,cAAI,YAAY;AAChB,cAAI,cAAqC;YACvC,gBAAgB,sBAAqB;YACrC,eAAe,sBAAqB;YACpC,SAAS,MAAK,SAAU;;AAG1B,cAAI,KAAK;AACP,+BAAmB,IAAI;AAEvB,gBAAI,MAAK,oBAAoB,GAAG,WAA0B,gBAAgB,GAAG;AAC3E,+BAAiB,wBACf,IAAI,UACJ,MAAK,UACL,gBAAgB;AAGlB,0BAAY,gBAAgB,kBAAkB,cAAc;AAC5D,0BAAY,CAAC,mBAAmB,aAAa,IAAI,aAAa,gBAAgB;AAE9E,kBAAI,WAAW;AACb,4BAAY,gBAAgB,sBAAqB;AACjD,iCAAiB;;;;AAKvB,gBAAK,YAAY,kBAAkB,WAAW;AAI9C,UAAAA,UAAS,mBACP,WAAW,CAAC,kBAAkB,CAAC,SAAS,cAAc,kBAAkB,CAAC;AAI3E,cAAI,CAAC,WAAW;AACd,yBAAY;iBACP;AACL,0BAAa;;AAGf,cAAI,CAAC,SAAS;AACZ,YAAAA,UAAS,qBAAqB,CAAC,cAAc;AAE7C,kBAAK,mBAAmB;AACxB,kBAAK,iBAAiB;;;AAI1B,aAAA,gBAAgB,SAAC,KAAqB;AAChC,cAAA,KAAuC,OAArC,mBAAgB,GAAA,kBAAE,iBAAc,GAAA;AAEtC,gBAAK,UAAS;AAEd,cAAI,oBAAoB,gBAAgB;AACtC,gBAAI,WAAW,MAAK,YAAY;AAChC,gBAAI,YAAY,SAAS,QAAQ;AACjC,gBAAI,WAAW,MAAK;AAEpB,6BAAiB,QAAQ,QAAQ,QAAMK,UAAAA,UAAA,CAAA,GAClC,6BAA6B,SAAS,UAAU,gBAAgB,CAAC,GAAA,EACpE,WAAW,IAAI,WACf,SAAS,IAAI,WACb,MAAM,UAAS,CAAA,CAAA;AAGjB,gBAAI,SAAS,QAAQ;AACnB,kBAAI,iBAAe,kBAAkB,cAAc;AAEnD,+BAAiB,SAAS;gBACxB,MAAM;gBACN,YAAY;eACb;AAED,kBAAI,IAAI,SAAS;AACf,iCAAiB,SAAS;kBACxB,MAAM;kBACN,iBAAiB,eAAe,SAAS;iBAC1C;;AAIH,+BAAiB,QAAQ,QAAQ,gBAAgB;gBAC/C,OAAO,IAAI,SACT,kBACA,eAAe,KACf,eAAe,QAAQ;gBAEzB,eAAe,CAAA;gBACf,QAAM,WAAA;AACJ,mCAAiB,SAAS;oBACxB,MAAM;oBACN,YAAY;mBACb;;gBAEH,WAAW,IAAI;gBACf,MAAM;eACP;;;AAIL,gBAAK,mBAAmB;AACxB,gBAAK,iBAAiB;;AAlItB,YAAI,cAAc,KAAK,cAAc,IAAI,YAAY,UAAU,wBAAwB;AACvF,oBAAY,iBAAiB;AAC7B,oBAAY,QAAQ,GAAG,aAAa,KAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,aAAa,KAAK,eAAe;AACxD,oBAAY,QAAQ,GAAG,WAAW,KAAK,aAAa;AAEpD,aAAK,mBAAmB;;AAO1B,MAAAc,yBAAA,UAAA,gBAAA,SAAc,WAAsB;AAClC,YAAI,OAAO,KAAK,qBAAqB,UAAU;AAC7C,iBAAO,cAAc,KAAK,gBAAgB;;AAE5C,YAAI,OAAO,KAAK,qBAAqB,YAAY;AAC/C,iBAAO,cAAc,KAAK,iBAAiB,SAAS,CAAC;;AAEvD,eAAO,kBAAkB,SAAS;;AAiHpC,MAAAA,yBAAA,UAAA,cAAA,SAAY,aAAqC,OAA4B;AAC3E,YAAI,cAAc,KAAK;AAEvB,YAAI,eAAe,gBAAgB,aAAa;AAC9C,sBAAY,SAAS,EAAE,MAAM,mBAAkB,CAAE;;AAGnD,YAAI,aAAa;AACf,sBAAY,SAAS,EAAE,MAAM,kBAAkB,MAAK,CAAE;;;AAI1D,MAAAA,yBAAA,UAAA,YAAA,WAAA;AACE,YAAI,KAAK,kBAAkB;AACzB,eAAK,iBAAiB,SAAS,EAAE,MAAM,mBAAkB,CAAE;;;AAI/D,MAAAA,yBAAA,UAAA,sBAAA,SAAoB,IAAiB,kBAAiC;AACpE,YAAI,aAAa,iBAAiB,QAAQ;AAE1C,YAAI,OAAO,eAAe,YAAY;AACpC,iBAAO,WAAW,KAAK,iBAAiB,aAAa,EAAE;;AAGzD,YAAI,OAAO,eAAe,YAAY,YAAY;AAChD,iBAAO,QAAQ,eAAe,IAAI,UAAU,CAAC;;AAG/C,eAAO;;AAEX,aAAAA;IAAA,EAAC;;AAKD,WAAS,wBAAwB,UAAoB,UAAoB,SAAwB;AAC/F,QAAI,WAAQd,UAAA,CAAA,GAAQ,SAAS,aAAa;AAE1C,aAAsB,KAAA,GAAA,KAAA,QAAQ,YAAY,uBAApB,KAAA,GAAA,QAAA,MAA2C;AAA5D,UAAID,aAAS,GAAA,EAAA;AAChB,MAAAC,UAAS,UAAUD,WAAU,UAAU,QAAQ,CAAC;;AAG9C,QAAA,KAAqB,eAAe,UAAU,OAAO,GAAnD,UAAO,GAAA,SAAE,QAAK,GAAA;AACpB,QAAI,MAAM;MACR;MACA;MACA,SAAS;MACT,SAAS;MACT,QAAQ,QAAQ,sBAAsB,QAAQ,SAAS,QAAQ;;MAC/D;IAAO;AAGT,QAAIgB,SAAQ,SAAS,MAAM;AAI3B,QAAI,SAAS,UAAU,SAAS,WAAW;AACzC,MAAAA,SAAQ,QAAQ,QAAQ,IAAIA,QAAO,SAAS,SAAS;;AAGvD,QAAIC,OAAM,SAAS,WACjB,QAAQ,QAAQ,IAAID,QAAO,SAAS,QAAQ,IAC5C,mBAAmB,SAAS,QAAQA,QAAO,OAAO;AAEpD,QAAI,WAAW,oBAAoB,IAAI,OAAO,EAAE,OAAKA,QAAE,KAAGC,KAAA,CAAE;AAE5D,WAAO,EAAE,KAAK,SAAQ;EACxB;AAKA,WAAS,kBAAkB,IAAe;AACxC,QAAI,MAAM,kBAAkB,IAAI,OAAO;AACvC,QAAI,MAAM,MACR,KAAK,MAAM,GAAG,IACd,EAAE,QAAQ,MAAK;AAEjB,WAAO,cAAc,GAAG;EAC1B;AAEA,SAAO,iBAAiB;AAExB,WAAS,kBAAkB,IAAiBC,OAAY;AACtD,QAAI,SAAS,OAAO;AACpB,QAAI,gBAAgB,SAAS,SAAS,MAAM,MAAMA;AAElD,WAAO,GAAG,aAAa,UAAU,YAAY,KAAK;EACpD;;;;ACtPE,eAAAC,mBAAY,IAAiB,UAAwC;AAArE,YAAA,QAAA;AAA6B,YAAA,aAAA,QAAA;AAAA,qBAAA,CAAA;QAAwC;AAoBrE,aAAA,oBAAoB,SAAC,IAAoB;AACjC,cAAAvB,YAAa,MAAI;AACnB,cAAA,KAAkC,MAAK,UAArC,cAAW,GAAA,aAAE,iBAAc,GAAA;AAEjC,UAAAA,UAAS,cACP,eAAe,OACb,cACC,GAAG,UAAU,IAAI,qBAAqB;AAE3C,UAAAA,UAAS,QACP,GAAG;;YACA,kBAAkB,OAAO,iBAAiB,qBAAqB;cAChE;;AAGN,aAAA,kBAAkB,SAAC,IAAoB;AACrC,cACE,GAAG,WACH,MAAK,SAAS,SACb,GAAG,UAA0B,UAAU,SAAS,UAAU,GAC3D;AACA,kBAAK,SAAS,OAAO,YAAW,EAAG,UAAU,IAAI,mBAAmB;;;AAxCtE,aAAK,WAAW;AAEhB,YAAI,WAAW,KAAK,WAAW,IAAI,0BAA0B,EAAE;AAC/D,iBAAS,qBAAqB;AAE9B,YAAI,SAAS,gBAAgB,MAAM;AACjC,mBAAS,QAAQ,WAAW,SAAS;;AAGvC,YAAI,SAAS,YAAY,MAAM;AAC7B,mBAAS,OAAO,aAAa,SAAS;;AAGxC,iBAAS,QAAQ,GAAG,eAAe,KAAK,iBAAiB;AACzD,iBAAS,QAAQ,GAAG,aAAa,KAAK,eAAe;AAErD,YAAI,wBAAwB,UAAU,SAAS,SAAS;;AA4B1D,MAAAuB,mBAAA,UAAA,UAAA,WAAA;AACE,aAAK,SAAS,QAAO;;AAEzB,aAAAA;IAAA,EAAC;;AC5DD,MAAA;;IAAA,SAAA,QAAA;AAA6C,gBAAAC,0BAAA,MAAA;AAM3C,eAAAA,yBAAY,aAAwB;AAApC,YAAA,QACE,OAAA,KAAA,MAAM,WAAW,KAAC;AALpB,cAAA,mBAA4B;AAC5B,cAAA,iBAAyB;AACzB,cAAA,kBAAsC;AAetC,cAAA,oBAAoB,SAAC,IAAoB;AACvC,gBAAK,QAAQ,QAAQ,eAAe,EAAE;AAEtC,cAAI,CAAC,MAAK,kBAAkB;AAE1B,kBAAK,QAAQ,QAAQ,aAAa,EAAE;;;AAIxC,cAAA,oBAAoB,SAAC,IAAoB;AACvC,cAAI,CAAC,MAAK,kBAAkB;AAC1B,kBAAK,QAAQ,QAAQ,YAAY,EAAE;;;AAIvC,cAAA,kBAAkB,SAAC,IAAoB;AACrC,gBAAK,QAAQ,QAAQ,aAAa,EAAE;AAEpC,cAAI,CAAC,MAAK,kBAAkB;AAE1B,kBAAK,QAAQ,QAAQ,WAAW,EAAE;;;AA9BpC,YAAI,UAAU,MAAK,UAAU,IAAI,gBAAgB,WAAW;AAC5D,gBAAQ,QAAQ,GAAG,eAAe,MAAK,iBAAiB;AACxD,gBAAQ,QAAQ,GAAG,eAAe,MAAK,iBAAiB;AACxD,gBAAQ,QAAQ,GAAG,aAAa,MAAK,eAAe;;;AAGtD,MAAAA,yBAAA,UAAA,UAAA,WAAA;AACE,aAAK,QAAQ,QAAO;;AA2BtB,MAAAA,yBAAA,UAAA,gBAAA,SAAc,MAAa;AACzB,aAAK,mBAAmB;;AAG1B,MAAAA,yBAAA,UAAA,qBAAA,SAAmB,MAAa;AAC9B,YAAI,MAAM;AAGR,cAAI,KAAK,iBAAiB;AACxB,iBAAK,gBAAgB,MAAM,aAAa;AACxC,iBAAK,kBAAkB;;eAEpB;AACL,cAAI,WAAW,KAAK,iBAEhB,SAAS,cAAc,KAAK,cAAc,IAC1C;AAEJ,cAAI,UAAU;AACZ,iBAAK,kBAAkB;AACvB,qBAAS,MAAM,aAAa;;;;AAIpC,aAAAA;IAAA,EAnE6C,eAAe;;;;;ACO1D,eAAAC,qBACE,qBACA,UAAsC;AAEtC,YAAI,cAA2B;AAE/B;;UAEE,wBAAwB,YACxB,+BAA+B;UAC/B;AACA,wBAAc;AACd,qBAAW,YAAY,CAAA;eAClB;AACL,qBAAY,uBAAuB,CAAA;;AAGrC,YAAI,WAAW,KAAK,WAAW,IAAI,wBAAwB,WAA0B;AAErF,YAAI,OAAO,SAAS,iBAAiB,UAAU;AAC7C,mBAAS,QAAQ,WAAW,SAAS;mBAC5B,gBAAgB,UAAU;AACnC,mBAAS,QAAQ,WAAW;;AAG9B,YAAI,OAAO,SAAS,mBAAmB,UAAU;AAC/C,mBAAS,iBAAiB,SAAS;;AAGrC,YAAI,wBAAwB,UAAU,SAAS,SAAS;;AAG1D,MAAAA,qBAAA,UAAA,UAAA,WAAA;AACE,aAAK,SAAS,QAAO;;AAEzB,aAAAA;IAAA,EAAC;;ACzCD,MAAAC,QAAe,aAAa;IAC1B,uBAAuB,CAAC,cAAc,eAAe,eAAe,aAAa;IACjF,sBAAsB,CAAC,YAAY;IACnC,qBAAqB;IACrB,gBAAgB;IAChB,kBAAkB;GACnB;;;;ApMVD,2BAAuB;AAEvB,MAAO,mCAAP,cAA6B,WAAW;AAAA,IAQtC,UAAU;AACR,UAAI,kBAAkB,KAAK;AAC3B,cAAQ,IAAI,qBAAqB,eAAe;AAChD,UAAI,eAAe,KAAK;AACxB,cAAQ,IAAI,kBAAkB,YAAY;AAC1C,UAAI,YAAY,gBAAgB,cAAc,qBAAqB;AACnE,UAAI,SAAS,KAAK;AAClB,cAAQ,IAAI,2BAA2B,MAAM;AAC7C,UAAI,WAAW,IAAI,SAAS,iBAAiB;AAAA,QAC3C,SAAS,CAAE,cAAeC,aAAkB;AAAA,QAC5C;AAAA,QACA,UAAU;AAAA,QACV,aAAa;AAAA,QACb,eAAe;AAAA,UACb,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,QACA,QAAQ,IAAI;AAAA,QAEZ,aAAa,KAAK;AAAA,QAClB,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,UAAU;AAAA,QACV,iBAAiB,SAAS,MAAM;AAE9B,cAAI,aAAa,CAAC,eAAe,KAAK,MAAM,cAAc,QAAQ,WAAW;AAC7E,cAAI,KAAK,QAAQ;AACf,uBAAW,KAAK,SAAS;AAAA,UAC3B;AACA,iBAAO;AAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QA0BA,kBAAkB;AAAA,MACpB,CAAC;AAED,eAAS,OAAO;AAAA,IAClB;AAAA,IAGA,SAAS,OAAO;AACd,UAAG,EAAE,MAAM,MAAM,EAAE,QAAQ,GAAG,EAAE,SAAS,KAAK,MAAM,UAAU,MAAM,eAAe;AAAA,MAEnF,OAAO;AACL,cAAM,gBAAgB;AACtB,cAAM,eAAe;AACrB,YAAI,iBAAiB,EAAE,MAAM,aAAa,GACxCC,YAAW,eAAe,SAAS,UAAU;AAC/C,UAAE,gBAAgB,EAAE,IAAI;AAAA,UACtB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,QACtB,CAAC;AACD,UAAE,gBAAgB,EAAE,YAAY,UAAU;AAC1C,YAAI,CAACA,WAAU;AACb,yBAAe,SAAS,UAAU;AAClC,cAAIC,SAAQ,eAAe,KAAK,YAAY;AAC5C,cAAI,kBAAkB,eAAe,KAAK,uBAAuB;AACjE,cAAIA,QAAO;AACT,2BAAe,IAAI;AAAA,cACjB,gBAAgBA;AAAA,YAClB,CAAC;AAAA,UACH;AACA,cAAG,iBAAiB;AAClB,2BAAe,IAAI;AAAA,cACjB,oBAAoB;AAAA,YACtB,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AApGE,gBAFK,kCAEE,WAAU,CAAC,UAAU;AAC5B,gBAHK,kCAGE,UAAS;AAAA,IACd,OAAO;AAAA,IACP,aAAa;AAAA,EACf;;;AqMdF;AAAA;AAAA;AAAA;AAEA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IAGtC,UAAU;AACR,aAAO;AACP,UAAG,KAAK,cAAc;AACpB,UAAE,KAAK,UAAU,EAAE,KAAK,CAACC,IAAG,OAAO;AACjC,eAAK,UAAU,EAAE;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,mBAAmB,IAAI;AACrB,UAAG,OAAO,UAAW,aAAa;AAChC,aAAK,UAAU,EAAE;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,UAAU,IAAI;AACZ,UAAI,KAAK,YAAY,QAAQ,QAAQ;AACrC,YAAM,EAAE,EAAE;AACV,UAAI,IAAI,KAAK,iBAAiB,GAAG;AAC/B;AAAA,MACF;AACA,UAAI,KAAK,mBAAmB,IAAI;AAChC,eAAS,IAAI,OAAO,KAAK,IAAI,IAAI,WAAW,oBAAoB;AAChE,yBAAmB,IAAI,OAAO,KAAK,OAAO,cAAc,MAAM;AAC9D,eAAS,IAAI,OAAO,KAAK,OAAO;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,IAAI,KAAK,YAAY;AAAA,MAC9B,CAAC;AACD,mBAAa,IAAI,OAAO,KAAK,WAAW;AAAA,QACtC,SAAS,IAAI,KAAK,YAAY;AAAA,MAChC,CAAC;AACD,aAAO,YAAY,SAAS,WAAW;AACrC,eAAO,WAAW,KAAK,QAAQ,MAAM;AAAA,MACvC,CAAC;AACD,UAAI,IAAI,KAAK,eAAe,GAAG;AAC7B,eAAO,iBAAiB,WAAW;AAAA,UACjC,SAAS,IAAI,KAAK,eAAe;AAAA,QACnC,GAAG,SAAS,OAAO,QAAQ;AACzB,cAAI,EAAE,WAAW,OAAO,KAAK,OAAO,oBAAoB,MAAM,MAAM,WAAW;AAC7E;AAAA,UACF;AACA,qBAAW,mBAAmB,QAAQ,OAAO,MAAM;AACnD,iBAAO,WAAW,KAAK,QAAQ,MAAM;AAAA,QACvC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAhDE,gBADK,gCACE,WAAU,CAAC,KAAK;;;ACHzB;AAAA;AAAA;AAAA;AAIA,MAAO,sCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,uBAAuB;AAG5B,eAAS,iBAAiB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IACrF;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AACjB,eAAS,oBAAoB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IACxF;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAEtB,YAAM,SAAS,MAAM;AACrB,WAAK,uBAAuB,OAAO,QAAQ;AAE3C,cAAQ,IAAI,2CAA2C,KAAK,oBAAoB;AAGhF,YAAM,QAAQ,SAAS,eAAe,+BAA+B;AACrE,UAAI,OAAO;AACT,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB,OAAO;AAC3B,cAAQ,IAAI,kEAAkE,KAAK,oBAAoB;AAEvG,UAAI,CAAC,KAAK,sBAAsB;AAE9B;AAAA,MACF;AAEA,WAAK,cAAc,KAAK,oBAAoB;AAC5C,WAAK,uBAAuB;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,SAAS;AACrB,WAAK,aAAa;AAClB,YAAM,YAAY,SAAS,cAAc,0BAA0B,SAAS;AAC5E,YAAM,mBAAmB,YAAY,UAAU,QAAQ,6BAA6B,EAAE,gBAAgB;AAEtG,WAAK,UAAU,sCAAsC,OAAO,EAAE,KAAK,MAAM;AACvE,YAAI,kBAAkB;AACpB,2BAAiB,OAAO;AAAA,QAC1B;AACA,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,OAAO;AACT,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,UAAI,UAAU,EAAE,MAAM,aAAa;AAEnC,QAAE,gBAAgB,EAAE,IAAI;AAAA,QACtB,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,MACtB,CAAC;AACD,QAAE,gBAAgB,EAAE,YAAY,UAAU;AAC1C,QAAE,eAAe,EAAE,SAAS,QAAQ;AACpC,WAAK,UAAU,mCAAmC,EAAE,eAAe,MAAM,CAAC,EAAE,KAAK,MAAM;AACrF,aAAK,+BAA+B;AACpC,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY,OAAO;AACjB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,UAAU,QAAQ,KAAK,UAAU;AACrC,UAAI,YAAY,QAAQ,QAAQ,6BAA6B,EAAE,MAAM,EAAE,OAAO;AAG9E,UAAI,YAAY,QAAQ,KAAK,EAAE,yCAAyC,CAAC;AACzE,UAAG,WAAW;AACZ,aAAK,UAAU,sCAAsC,OAAO,EAAE,KAAK,MAAM;AACvE,oBAAU,OAAO;AAAA,QACnB,CAAC;AAAA,MACH;AACA,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,YAAY,OAAO;AACjB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,WAAK,aAAa;AAAA,IACpB;AAAA,IAGA,MAAM,WAAW,OAAO;AACtB,UAAI,aAAa,EAAE,iCAAiC,GACpD,WAAW,WAAW,KAAK,WAAW,GACtCC,MAAK,WAAW,KAAK,IAAI;AAEzB,UAAI,cAAc,SAAS,cAAc,KAAK;AAC9C,kBAAY,KAAK,GAAG,WAAWA;AAC/B,QAAE,WAAW,EAAE,SAAS,cAAc;AAEtC,UAAI,YAAY,EAAE,yBAAyB;AAC3C,UAAI,aAAa,UAAU,KAAK,oBAAoB,EAAE,KAAK,aAAa;AAExE,QAAE,WAAW,EAAE,SAAS,SAAS;AACjC,UAAI,OAAO,MAAM,IAAI,KAAK,wBAAwB,EAAE,OAAO,OAAO,EAAE,MAAMA,KAAI,eAAe,WAAW,CAAC;AACzG,QAAE,IAAI,EAAE,SAAS,WAAW;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,6BAA6B,SAAS,QAAQC,OAAM,UAAU;AAC5D,WAAK,+BAA+B;AAAA,IACtC;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,SAAS,QAAQA,OAAM,UAAU;AACnD,WAAK,+BAA+B;AAAA,IACtC;AAAA;AAAA;AAAA;AAAA,IAKA,iCAAiC;AAC/B,UAAI,QAAQ,EAAE,6BAA6B;AAC3C,UAAI,kBAAkB,EAAE,kCAAkC,KAAK,EAAE,MAAM;AACvE,UAAG,gBAAgB,UAAU,GAAG;AAC9B,0BAAkB,EAAE,SAAS,EAAE,KAAK,QAAQ,QAAQ,EAAE,KAAK,QAAQ,oBAAoB;AACvF,cAAM,OAAO,eAAe;AAAA,MAE9B;AAEA,sBAAgB,IAAI,aAAa,YAAY,CAAC;AAAA,IAEhD;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe,OAAO;AACpB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,WAAK,UAAU,gDAAgD,EAAE,KAAK,MAAM;AAC1E,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,OAAO;AAC1B,YAAM,eAAe;AACrB,WAAK,UAAU,8CAA8C,MAAM,aAAa;AAAA,IAKlF;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B,OAAO;AAC/B,YAAM,eAAe;AACrB,WAAK,UAAU,mDAAmD,MAAM,aAAa;AAAA,IAKvF;AAAA,EAGF;;;ACzMA;AAAA;AAAA;AAAA;AAEA,MAAO,qDAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA,IAQjD,cAAc,OAAO;AACnB,YAAM,eAAe;AACrB,YAAM,OAAO,MAAM;AACnB,WAAK,sBAAsB,KAAK,QAAQ;AAExC,cAAQ,IAAI,4DAA4D,KAAK,mBAAmB;AAChG,cAAQ,IAAI,gDAAgD,KAAK,mBAAmB;AAGpF,YAAM,QAAQ,SAAS,eAAe,+BAA+B;AACrE,UAAI,OAAO;AACT,gBAAQ,IAAI,wDAAwD;AACpE,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB,OAAO;AACL,gBAAQ,MAAM,iDAAiD;AAAA,MACjE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB;AACd,UAAI,CAAC,KAAK,qBAAqB;AAC7B,gBAAQ,MAAM,4DAA4D;AAC1E;AAAA,MACF;AAEA,cAAQ,IAAI,+DAA+D,KAAK,mBAAmB;AAGnG,YAAM,yBAAyB,SAAS,cAAc,uCAAuC;AAC7F,UAAI,wBAAwB;AAC1B,cAAM,aAAa,KAAK,YAAY;AAAA,UAClC;AAAA,UACA;AAAA,QACF;AAEA,YAAI,cAAc,WAAW,eAAe;AAC1C,qBAAW,cAAc,KAAK,mBAAmB;AAAA,QACnD,OAAO;AACL,kBAAQ,MAAM,8FAA8F;AAAA,QAC9G;AAAA,MACF;AAGA,WAAK,sBAAsB;AAAA,IAC7B;AAAA,EACF;AAxDE,gBADK,oDACE,UAAS;AAAA,IACd,gBAAgB;AAAA,EAClB;;;ACLF;AAAA;AAAA;AAAA;AAEA,MAAO,oCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,aAAa;AAClB,WAAK,iBAAiB,CAAC;AACvB,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAClB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,QAAQ,QAAQ,KAAK,IAAI,GAC/B,kBAAkB,EAAE,mCAAmC,8BAA8B;AACrF,QAAE,eAAe,EAAE,KAAK,WAAW;AACjC,UAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,EAAE,KAAK,SAAS,CAAC;AAAA,MAChE,CAAC;AACD,YAAM,UAAU,QAAQ,OAAO,EAAE,KAAK,KAAK;AAC3C,WAAK,oBAAoB,OAAO;AAChC,WAAK,iBAAiB,OAAO;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,OAAO;AAChB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,OAAO,EAAE,KAAK,KAAK;AAC3C,YAAM,WAAW,QAAQ,OAAO,EAAE,KAAK,OAAO;AAC9C,YAAM,YAAY,QAAQ,OAAO,EAAE,KAAK,YAAY;AACpD,WAAK,aAAa,SAAS,SAAS;AACpC,WAAK,oBAAoB,OAAO;AAChC,WAAK,iBAAiB,OAAO;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,SAAS;AACxB,YAAM,cAAc,EAAE,gBAAgB,SAAS;AAC/C,kBAAY,YAAY,QAAQ,EAAE,KAAK,YAAY,KAAK,EAAE,YAAY,UAAU;AAAA,IAClF;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,OAAO;AACvB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,KAAK,KAAK;AAClC,YAAM,cAAc,EAAE,gBAAgB,SAAS;AAC/C,YAAM,kBAAkB,EAAE,QAAQ,WAAW;AAE7C,YAAM,iBAAiB,YAAY,KAAK;AACxC,sBAAgB,KAAK,QAAG,EAAE,IAAI,EAAC,WAAW,OAAM,CAAC;AAEjD,kBAAY,SAAS,mBAAmB,EAAE,KAAK,YAAY,IAAI;AAE/D,WAAK,UAAU,0CAA0C,SAAS,KAAK,eAAe,OAAO,CAAC,EAAE,KAAK,aAAW;AAC9G,oBAAY,SAAS,QAAQ,EAAE,YAAY,UAAU;AACrD,wBAAgB,KAAK,cAAc;AAAA,MACrC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AAEtB,YAAMC,QAAO;AACb,UAAI,WAAW,CAAC;AAChB,QAAE,4DAA4D,EAAE,KAAK,WAAY;AAC/E,cAAM,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,KAAK;AAC3C,YAAI,CAACA,MAAK,eAAe,OAAO,GAAG;AACjC,UAAAA,MAAK,eAAe,OAAO,IAAI,CAAC;AAAA,QAClC;AACA,QAAAA,MAAK,eAAe,OAAO,EAAE,KAAK,SAAS,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC;AACjE,iBAAS,KAAK,OAAO;AAAA,MACvB,CAAC;AACD,eAAS,QAAQ,SAAUC,OAAMC,QAAO;AACtC,QAAAF,MAAK,eAAeC,KAAI,IAAID,MAAK,eAAeC,KAAI,EAAE;AAAA,UACpD,SAAUE,IAAGC,IAAG;AACd,mBAAO,CAACD,KAAI,CAACC;AAAA,UACf;AAAA,QACF;AAAA,MACF,CAAC;AAED,cAAQ,IAAI,oBAAoBJ,MAAK,cAAc;AAAA,IAGrD;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,SAAS;AAE3B,YAAMA,QAAO;AACb,MAAAA,MAAK,eAAe,OAAO,IAAI,CAAC;AAChC,QAAE,iCAAiC,mDAAmD,EAAE,KAAK,WAAY;AACvG,QAAAA,MAAK,eAAe,OAAO,EAAE,KAAK,SAAS,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC;AAAA,MACnE,CAAC;AACD,MAAAA,MAAK,eAAe,OAAO,IAAIA,MAAK,eAAe,OAAO,EAAE;AAAA,QAC1D,SAAUG,IAAGC,IAAG;AACd,iBAAO,CAACD,KAAI,CAACC;AAAA,QACf;AAAA,MACF;AAEA,cAAQ,IAAI,kBAAkB,WAAWJ,MAAK,eAAe,OAAO,CAAC;AAAA,IAEvE;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,SAAS,WAAW;AAC/B,UAAI,qCAAqC;AACzC,UAAI,SAAU;AACZ,6CAAqC,+BAA+B,uBAAuB;AAAA,MAC7F;AAEA,eAAS,UAAU,EAAE,kCAAkC,GAAG;AAExD,cAAM,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI;AACjC,cAAM,kBAAkB,EAAE,gBAAgB,8BAA8B;AAExE,cAAM,QAAQ,EAAE,eAAe,EAAE;AACjC,cAAM,UAAU,gBAAgB,OAAO,UAAU,EAAE;AAEnD,YAAI,WAAW,GAAG;AAChB,YAAE,MAAM,EAAE,KAAK,iBAAiB,KAAK;AACrC,YAAE,MAAM,EAAE,KAAK,WAAW,KAAK;AAAA,QACjC,WAAW,UAAU,KAAK,UAAU,OAAO;AACzC,YAAE,MAAM,EAAE,KAAK,iBAAiB,IAAI;AAAA,QACtC,WAAW,WAAW,OAAO;AAC3B,YAAE,MAAM,EAAE,KAAK,iBAAiB,KAAK;AACrC,YAAE,MAAM,EAAE,KAAK,WAAW,IAAI;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,oBAAoB,SAAS;AAC3B,cAAQ,IAAI,4CAA4C,OAAO;AAC/D,WAAK,UAAU,0CAA0C,OAAO;AAAA,IAClE;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,oBAAoB,OAAO;AACzB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,KAAK,KAAK;AAElC,WAAK,UAAU,0CAA0C,OAAO;AAAA,IAKlE;AAAA,EAEF;;;ACxKA;AAAA;AAAA;AAAA;;;ACWO,MAAM,uBAAN,MAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQhC,YAAY,aAAa,2BAA2BK,WAAU,CAAC,GAAG;AAChE,WAAK,aAAa;AAClB,WAAK,QAAQA,SAAQ,SAAS;AAC9B,WAAK,SAASA,SAAQ,UAAU;AAEhC,UAAI,KAAK,OAAO;AACd,gBAAQ,IAAI,gDAAgD,YAAY;AAAA,MAC1E;AAGA,WAAK,QAAQ;AAAA,IACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,SAAS,WAAW,eAAe,OAAO;AACxC,YAAM,SAAS,KAAK,aAAa;AACjC,YAAM,QAAQ,OAAO,SAAS;AAE9B,UAAI,UAAU,QAAW;AACvB,YAAI,KAAK,OAAO;AACd,kBAAQ,IAAI,8CAA8C,cAAc,KAAK;AAAA,QAC/E;AACA,eAAO;AAAA,MACT;AAEA,UAAI,KAAK,OAAO;AACd,gBAAQ,IAAI,6CAA6C,6BAA6B,YAAY;AAAA,MACpG;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,SAAS,WAAW,YAAY;AAC9B,YAAM,SAAS,KAAK,aAAa;AACjC,aAAO,SAAS,IAAI;AAGpB,YAAM,YAAY;AAAA,QAChB;AAAA,QACA,aAAa,KAAK,IAAI;AAAA,MACxB;AAEA,UAAI;AACF,qBAAa,QAAQ,KAAK,YAAY,KAAK,UAAU,SAAS,CAAC;AAE/D,YAAI,KAAK,OAAO;AACd,kBAAQ,IAAI,0CAA0C,cAAc,UAAU;AAAA,QAChF;AAAA,MACF,SAASC,QAAP;AACA,gBAAQ,KAAK,gDAAgDA,MAAK;AAElE,aAAK,QAAQ;AACb,YAAI;AACF,uBAAa,QAAQ,KAAK,YAAY,KAAK,UAAU,SAAS,CAAC;AAAA,QACjE,SAAS,YAAP;AACA,kBAAQ,MAAM,8DAA8D,UAAU;AAAA,QACxF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe;AACb,UAAI;AACF,cAAM,SAAS,aAAa,QAAQ,KAAK,UAAU;AACnD,YAAI,CAAC;AAAQ,iBAAO,CAAC;AAErB,cAAMC,QAAO,KAAK,MAAM,MAAM;AAG9B,YAAIA,MAAK,QAAQ;AACf,iBAAOA,MAAK;AAAA,QACd,OAAO;AAEL,iBAAOA;AAAA,QACT;AAAA,MACF,SAASD,QAAP;AACA,YAAI,KAAK,OAAO;AACd,kBAAQ,KAAK,yDAAyDA,MAAK;AAAA,QAC7E;AACA,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY,WAAW;AACrB,YAAM,SAAS,KAAK,aAAa;AACjC,aAAO,OAAO,SAAS;AAEvB,YAAM,YAAY;AAAA,QAChB;AAAA,QACA,aAAa,KAAK,IAAI;AAAA,MACxB;AAEA,UAAI;AACF,qBAAa,QAAQ,KAAK,YAAY,KAAK,UAAU,SAAS,CAAC;AAE/D,YAAI,KAAK,OAAO;AACd,kBAAQ,IAAI,4CAA4C,WAAW;AAAA,QACrE;AAAA,MACF,SAASA,QAAP;AACA,gBAAQ,KAAK,kDAAkDA,MAAK;AAAA,MACtE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW;AACT,UAAI;AACF,qBAAa,WAAW,KAAK,UAAU;AAEvC,YAAI,KAAK,OAAO;AACd,kBAAQ,IAAI,iDAAiD,KAAK,YAAY;AAAA,QAChF;AAAA,MACF,SAASA,QAAP;AACA,gBAAQ,KAAK,kDAAkDA,MAAK;AAAA,MACtE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UAAU;AACR,UAAI;AACF,cAAM,SAAS,aAAa,QAAQ,KAAK,UAAU;AACnD,YAAI,CAAC;AAAQ;AAEb,cAAMC,QAAO,KAAK,MAAM,MAAM;AAC9B,cAAMC,OAAM,KAAK,IAAI;AACrB,cAAM,WAAW,KAAK,SAAS,KAAK,KAAK,KAAK;AAG9C,YAAID,MAAK,eAAgBC,OAAMD,MAAK,cAAe,UAAU;AAC3D,cAAI,KAAK,OAAO;AACd,oBAAQ,IAAI,qDAAqD,KAAK,YAAY;AAAA,UACpF;AACA,eAAK,SAAS;AAAA,QAChB;AAAA,MACF,SAASD,QAAP;AAEA,YAAI,KAAK,OAAO;AACd,kBAAQ,KAAK,wDAAwDA,MAAK;AAAA,QAC5E;AACA,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,yBAAyB,SAASD,WAAU,CAAC,GAAG;AAC9C,YAAM,EAAE,iBAAiB,OAAO,kBAAkB,MAAM,MAAM,IAAIA;AAElE,YAAM,mBAAmB,QAAQ,iBAAiB,6BAA6B;AAE/E,uBAAiB,QAAQ,YAAU;AACjC,cAAM,WAAW,OAAO,QAAQ;AAChC,cAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,cAAM,OAAO,iBAAiB,OAAO,cAAc,gBAAgB,IAAI;AAEvE,YAAI,QAAQ;AAEV,iBAAO,iBAAiB,qBAAqB,MAAM;AACjD,gBAAI;AAAM,mBAAK,cAAc;AAC7B,iBAAK,SAAS,UAAU,IAAI;AAAA,UAC9B,CAAC;AAGD,iBAAO,iBAAiB,sBAAsB,MAAM;AAClD,gBAAI;AAAM,mBAAK,cAAc;AAC7B,iBAAK,SAAS,UAAU,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAGD,WAAK,sBAAsB,SAAS,EAAE,gBAAgB,gBAAgB,CAAC;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,sBAAsB,SAASA,WAAU,CAAC,GAAG;AAC3C,YAAM,EAAE,iBAAiB,OAAO,kBAAkB,MAAM,MAAM,IAAIA;AAElE,YAAM,mBAAmB,QAAQ,iBAAiB,6BAA6B;AAE/E,uBAAiB,QAAQ,YAAU;AACjC,cAAM,WAAW,OAAO,QAAQ;AAChC,cAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,cAAM,OAAO,iBAAiB,OAAO,cAAc,gBAAgB,IAAI;AAEvE,YAAI,QAAQ;AAEV,gBAAM,eAAe,gBAAgB,QAAQ;AAC7C,gBAAM,aAAa,KAAK,SAAS,UAAU,YAAY;AAGvD,cAAI,YAAY;AACd,mBAAO,UAAU,IAAI,MAAM;AAC3B,mBAAO,UAAU,OAAO,WAAW;AACnC,mBAAO,aAAa,iBAAiB,MAAM;AAC3C,gBAAI;AAAM,mBAAK,cAAc;AAAA,UAC/B,OAAO;AACL,mBAAO,UAAU,OAAO,MAAM;AAC9B,mBAAO,UAAU,IAAI,WAAW;AAChC,mBAAO,aAAa,iBAAiB,OAAO;AAC5C,gBAAI;AAAM,mBAAK,cAAc;AAAA,UAC/B;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe;AACb,YAAM,SAAS,KAAK,aAAa;AACjC,YAAM,SAAS,aAAa,QAAQ,KAAK,UAAU;AAEnD,aAAO;AAAA,QACL,YAAY,KAAK;AAAA,QACjB,YAAY,OAAO,KAAK,MAAM,EAAE;AAAA,QAChC;AAAA,QACA,SAAS;AAAA,QACT,aAAa,SAAS,OAAO,SAAS;AAAA,MACxC;AAAA,IACF;AAAA,EACF;;;AD/QA,MAAqB,2BAArB,cAAsD,sBAAsB;AAAA,IAC1E,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,uBAAuB;AAC5B,WAAK,yBAAyB;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AAEvB,YAAM,UAAU,SAAS,KAAK,QAAQ,gBAAgB;AAEtD,WAAK,eAAe,IAAI,qBAAqB,0BAA0B;AAAA,QACrE,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,MACV,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AAEzB,WAAK,aAAa,yBAAyB,KAAK,SAAS;AAAA,QACvD,gBAAgB;AAAA,QAChB,iBAAiB,CAAC,aAAa;AAAA;AAAA,MACjC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,UAAI,KAAK,cAAc;AACrB,gBAAQ,IAAI,0CAA0C,KAAK,aAAa,aAAa,CAAC;AAAA,MACxF;AAAA,IACF;AAAA,EACF;;;AE3CA;AAAA;AAAA;AAAA;AAEA,MAAO,4BAAP,cAA6B,sBAAsB;AAAA,IASjD,WAAW,YAAY;AACrB,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAEd,WAAK,yBAAyB;AAE9B,WAAK,gBAAgB,CAAC;AAEtB,WAAK,qBAAqB;AAE1B,WAAK,qBAAqB;AAE1B,WAAK,oBAAoB;AAGzB,eAAS,iBAAiB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAGnF,YAAM,kBAAkB,SAAS,eAAe,wBAAwB;AACxE,UAAI,iBAAiB;AACnB,wBAAgB,iBAAiB,mBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC;AAAA,MAC1F;AAEA,UAAI,KAAK,QAAQ,QAAQ,uBAAuB,SAAS;AACvD,aAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AACjB,eAAS,oBAAoB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AACtF,YAAM,kBAAkB,SAAS,eAAe,wBAAwB;AACxE,UAAI,iBAAiB;AACnB,wBAAgB,oBAAoB,mBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC;AAAA,MAC7F;AAAA,IACF;AAAA,IAEA,UAAU,OAAO;AAEf,UAAI,SAAS,EAAE,MAAM,MAAM;AAC3B,6BAAuB,MAAM,cAAc,OAAO,KAAK,CAAC;AAGxD,WAAK,yBAAyB;AAG9B,WAAK,aAAa,MAAM,MAAM;AAAA,IAChC;AAAA,IAEA,SAAS,OAAO;AAEd,YAAM,eAAe;AAGrB,YAAM,eAAe,KAAK,sBAAsB,KAAK;AACrD,WAAK,kBAAkB,MAAM,eAAe,YAAY;AAAA,IAC1D;AAAA,IAEA,UAAU,OAAO;AAEf,WAAK,wBAAwB,MAAM,aAAa;AAAA,IAClD;AAAA,IAEA,QAAQ,OAAO;AACb,UAAI,WAAW,aAAa,QAAQ;AACpC,UAAI,OAAO,EAAE,MAAM,aAAa,EAAE,KAAK,MAAM;AAC7C,UAAII,UAAS;AAGb,WAAK,gBAAgB,MAAM,aAAa;AAGxC,YAAM,aAAa,KAAK;AACxB,WAAK,yBAAyB;AAE9B,UAAI,YAAY;AACd;AAAA,MACF;AAKA,WAAK,qBAAqB,MAAM,eAAe,QAAQ;AAEvD,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,mBAAS,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AAC7C,UAAAA,UAAS,EAAE,sBAAsB,EAAE,CAAC,EAAE;AAGtC,eAAK,+BAA+B;AACpC,eAAK,+BAA+BA;AACpC,eAAK,qBAAqB,MAAM;AAGhC,gBAAM,eAAe,SAAS,eAAe,wBAAwB;AACrE,cAAI,cAAc;AAChB,kBAAM,gBAAgB,UAAU,MAAM,oBAAoB,YAAY;AACtE,0BAAc,KAAK;AAAA,UACrB,OAAO;AACL,oBAAQ,MAAM,4CAA4C;AAE1D,iBAAK,eAAe,MAAM,aAAa;AAAA,UACzC;AACA;AAAA,QACF,KAAK;AACH,sBAAY,EAAE,MAAM,aAAa,EAAE,KAAK,WAAW;AACnD,UAAAA,UAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,SAAS;AAE5E,eAAK,UAAU,+BAA+B,WAAWA,OAAM,EAAE,KAAK,MAAM;AAE1E,iBAAK,iBAAiB,MAAM,aAAa;AACzC,uBAAW,MAAM,KAAK,eAAe,MAAM,aAAa,GAAG,GAAG;AAC9D,iBAAK,aAAaA,OAAM;AAAA,UAC1B,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,iBAAK,eAAe,MAAM,aAAa;AACvC,oBAAQ,MAAM,2BAA2BA,MAAK;AAAA,UAChD,CAAC;AACD;AAAA,QACF,KAAK;AACH,wBAAc,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AAElD,cAAI,UAAU,EAAE,MAAM,aAAa,EAAE,KAAK,SAAS;AAAA,UACjD,EAAE,MAAM,aAAa,EAAE,QAAQ,iBAAiB,EAAE,KAAK,UAAU;AAAA,UACjE,EAAE,MAAM,aAAa,EAAE,QAAQ,6BAA6B,EAAE,KAAK,UAAU;AAAA,UAC7E,KAAK,QAAQ,QAAQ;AAAA,UACrB,EAAE,+BAA+B,EAAE,KAAK,UAAU;AAEpD,UAAAD,UAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,SAAS;AAC5E,kBAAQ,IAAI,wBAAwB,aAAa,iBAAiB,OAAO;AAEzE,cAAI,CAAC,SAAS;AACZ,oBAAQ,MAAM,+CAA+C;AAC7D,iBAAK,eAAe,MAAM,aAAa;AACvC;AAAA,UACF;AAEA,eAAK,UAAU,iCAAiC,SAAS,aAAaA,OAAM,EAAE,KAAK,MAAM;AAEvF,iBAAK,iBAAiB,MAAM,aAAa;AACzC,uBAAW,MAAM,KAAK,eAAe,MAAM,aAAa,GAAG,GAAG;AAC9D,iBAAK,aAAaA,OAAM;AAAA,UAC1B,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,iBAAK,eAAe,MAAM,aAAa;AACvC,oBAAQ,MAAM,6BAA6BA,MAAK;AAAA,UAClD,CAAC;AACD;AAAA,QACF,KAAK;AACH,sBAAY,EAAE,MAAM,aAAa,EAAE,KAAK,WAAW;AACnD,UAAAD,UAAS,EAAE,eAAe,EAAE,CAAC,GAAG,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS;AAE5E,eAAK,UAAU,8BAA8B,WAAWA,OAAM,EAAE,KAAK,MAAM;AAEzE,iBAAK,iBAAiB,MAAM,aAAa;AACzC,uBAAW,MAAM,KAAK,eAAe,MAAM,aAAa,GAAG,GAAG;AAC9D,iBAAK,aAAaA,OAAM;AAAA,UAC1B,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,iBAAK,eAAe,MAAM,aAAa;AACvC,oBAAQ,MAAM,gCAAgCA,MAAK;AAAA,UACrD,CAAC;AACD;AAAA,QACF,KAAK;AACH,wBAAc,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AAClD,UAAAD,UAAS,EAAE,eAAe,EAAE,CAAC,GAAG,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS;AAE5E,eAAK,UAAU,gCAAgC,aAAaA,OAAM,EAAE,KAAK,MAAM;AAE7E,iBAAK,iBAAiB,MAAM,aAAa;AACzC,uBAAW,MAAM,KAAK,eAAe,MAAM,aAAa,GAAG,GAAG;AAC9D,iBAAK,aAAaA,OAAM;AAAA,UAC1B,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,iBAAK,eAAe,MAAM,aAAa;AACvC,oBAAQ,MAAM,kCAAkCA,MAAK;AAAA,UACvD,CAAC;AACD;AAAA,QACF;AACE;AAAA,MACJ;AAAA,IACF;AAAA,IAEA,KAAK,OAAO;AAEV,UAAI,WAAW,aAAa,QAAQ,SAAS;AAC7C,UAAI,cAAc,MAAM,aAAa,QAAQ,UAAU;AACvD,UAAI,OAAO,EAAE,MAAM,aAAa,EAAE,KAAK,MAAM;AAC7C,UAAI,QAAQ,EAAE,2BAA2B;AACzC,UAAI,oBAAoB,MAAM,KAAK,iCAAiC;AAGpE,WAAK,wBAAwB,MAAM,aAAa;AAGhD,YAAM,kBAAkB,EAAE,SAAS,cAAc,gBAAgB,CAAC;AAClE,YAAM,qBAAqB,gBAAgB,QAAQ,eAAe,EAAE,SAAS;AAE7E,UAAI,sBAAsB,SAAS,SAAS;AAE1C,gBAAQ,IAAI,0EAA0E;AACtF;AAAA,MACF;AAGA,WAAK,yBAAyB;AAG9B,UAAI,SAAS,oBAAoB;AAC/B,aAAK,sBAAsB,KAAK;AAChC;AAAA,MACF;AAGA,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,mBAAS,MAAM,aAAa,QAAQ,QAAQ;AAC5C,gBAAMD,UAAS,EAAE,sBAAsB,EAAE,CAAC,EAAE;AAE5C,eAAK,UAAU,yBAAyB,QAAQA,OAAM,EAAE,KAAK,MAAM;AACjE,iBAAK,oBAAoBA,OAAM;AAAA,UACjC,CAAC;AACD;AAAA,QACF,KAAK;AACH,oBAAU,MAAM,aAAa,QAAQ,SAAS;AAC9C,sBAAY,MAAM,aAAa,QAAQ,WAAW;AAClD,kBAAQ,IAAI,mBAAmB,wBAAwB,UAAU;AAEjE,gBAAM,KAAK,oBAAoB,EAAE,IAAI,WAAW;AAChD,4BAAkB,KAAK,kBAAkB,SAAS;AAClD,4BAAkB,KAAK,gBAAgB,OAAO;AAC9C,gBAAM,MAAM,MAAM;AAClB;AAAA,QACF,KAAK;AACH,mBAAS,MAAM,aAAa,QAAQ,QAAQ;AAC5C,sBAAY,MAAM,aAAa,QAAQ,WAAW;AAClD,kBAAQ,IAAI,mBAAmB,uBAAuB,SAAS;AAC/D,gBAAM,KAAK,oBAAoB,EAAE,IAAI,WAAW;AAChD,4BAAkB,KAAK,kBAAkB,SAAS;AAClD,4BAAkB,KAAK,eAAe,MAAM;AAC5C,gBAAM,MAAM,MAAM;AAClB;AAAA,QACF,KAAK;AACH,gBAAM,YAAY,MAAM,aAAa,QAAQ,WAAW;AAIxD,cAAI,cAAc,QAAQ;AACxB,uBAAW,MAAM,aAAa,QAAQ,UAAU;AAChD,qBAAS,MAAM,aAAa,QAAQ,QAAQ;AAE5C,gBAAI,aAAa,WAAW;AAC1B,0BAAY,MAAM,aAAa,QAAQ,WAAW;AAClD,sBAAQ,IAAI,mBAAmB,uBAAuB,SAAS;AAC/D,oBAAM,KAAK,oBAAoB,EAAE,IAAI,WAAW;AAChD,gCAAkB,KAAK,kBAAkB,SAAS;AAClD,gCAAkB,KAAK,eAAe,MAAM;AAC5C,gCAAkB,KAAK,iBAAiB,SAAS;AACjD,oBAAM,MAAM,MAAM;AAAA,YACpB,WAAW,aAAa,aAAa;AACnC,4BAAc,MAAM,aAAa,QAAQ,QAAQ;AACjD,sBAAQ,IAAI,qBAAqB,yBAAyB,SAAS;AACnE,oBAAM,KAAK,oBAAoB,EAAE,IAAI,WAAW;AAChD,gCAAkB,KAAK,eAAe,WAAW;AACjD,gCAAkB,KAAK,eAAe,MAAM;AAC5C,gCAAkB,KAAK,iBAAiB,WAAW;AACnD,oBAAM,MAAM,MAAM;AAAA,YACpB;AAAA,UACF,OAAO;AAEL,uBAAW,MAAM,aAAa,QAAQ,UAAU;AAChD,sBAAU,MAAM,aAAa,QAAQ,SAAS;AAE9C,gBAAI,aAAa,WAAW;AAC1B,0BAAY,MAAM,aAAa,QAAQ,QAAQ;AAC/C,sBAAQ,IAAI,mBAAmB,wBAAwB,UAAU;AACjE,oBAAM,KAAK,oBAAoB,EAAE,IAAI,WAAW;AAChD,gCAAkB,KAAK,kBAAkB,SAAS;AAClD,gCAAkB,KAAK,gBAAgB,OAAO;AAC9C,gCAAkB,KAAK,iBAAiB,SAAS;AACjD,oBAAM,MAAM,MAAM;AAAA,YACpB,WAAW,aAAa,aAAa;AACnC,4BAAc,MAAM,aAAa,QAAQ,QAAQ;AACjD,sBAAQ,IAAI,qBAAqB,0BAA0B,UAAU;AACrE,oBAAM,KAAK,oBAAoB,EAAE,IAAI,WAAW;AAChD,gCAAkB,KAAK,eAAe,WAAW;AACjD,gCAAkB,KAAK,gBAAgB,OAAO;AAC9C,gCAAkB,KAAK,iBAAiB,WAAW;AACnD,oBAAM,MAAM,MAAM;AAAA,YACpB;AAAA,UACF;AACA;AAAA,QACF;AACE,kBAAQ,IAAI,0BAA0B,MAAM;AAC5C;AAAA,MACJ;AAAA,IACF;AAAA;AAAA,IAGA,OAAO,OAAO;AACZ,UAAI,YAAY,EAAE,MAAM,aAAa,EAAE,KAAK,WAAW;AACvD,UAAI,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AAGjD,UAAI,QAAQ,EAAE,2BAA2B;AACzC,UAAI,cAAc,MAAM,KAAK,oBAAoB,EAAE,IAAI;AACvD,YAAMA,UAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,SAAS;AAElF,YAAM,MAAM,MAAM;AAClB,WAAK,UAAU,8BAA8B,QAAQ,WAAW,aAAa,EAAE,qBAAqB,EAAE,IAAI,GAAGA,OAAM,EAAE,KAAK,MAAM;AAC9H,aAAK,aAAaA,OAAM;AACxB,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,YAAY,OAAO;AACjB,cAAQ,IAAI,+BAAwB;AACpC,UAAI,QAAQ,EAAE,2BAA2B;AACzC,UAAI,WAAW,EAAE,MAAM,aAAa,EAAE,KAAK,UAAU;AACrD,UAAI,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AACjD,UAAI,YAAY,EAAE,MAAM,aAAa,EAAE,KAAK,WAAW;AACvD,UAAI,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AACjD,UAAI,cAAc,MAAM,KAAK,oBAAoB,EAAE,IAAI;AACvD,YAAMA,UAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,SAAS;AAElF,cAAQ,IAAI,8BAAuB,EAAE,UAAU,QAAQ,WAAW,QAAQ,aAAa,QAAAA,QAAO,CAAC;AAE/F,YAAM,MAAM,MAAM;AAClB,WAAK,aAAa;AAElB,UAAI,aAAa,aAAa;AAC5B,gBAAQ,IAAI,kCAA2B;AACvC,aAAK,UAAU,gCAAgC,QAAQ,QAAQ,aAAaA,OAAM,EAAE,KAAK,MAAM;AAC7F,eAAK,aAAaA,OAAM;AACxB,eAAK,YAAY;AAAA,QACnB,CAAC;AAAA,MACH,WAAW,aAAa,WAAW;AACjC,gBAAQ,IAAI,gCAAyB;AACrC,aAAK,UAAU,8BAA8B,QAAQ,WAAW,aAAa,EAAE,qBAAqB,EAAE,IAAI,GAAGA,OAAM,EAAE,KAAK,MAAM;AAC9H,eAAK,aAAaA,OAAM;AACxB,eAAK,YAAY;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB,OAAO;AAE3B,YAAM,WAAW,MAAM,aAAa,QAAQ,UAAU,KAAK,KAAK,0BAA0B,MAAM,aAAa,QAAQ,MAAM,CAAC;AAC5H,YAAM,YAAY,MAAM,aAAa,QAAQ,WAAW;AACxD,YAAM,cAAc,MAAM,aAAa,QAAQ,QAAQ;AACvD,YAAM,SAAS,MAAM,aAAa,QAAQ,QAAQ;AAClD,YAAM,UAAU,MAAM,aAAa,QAAQ,SAAS;AACpD,YAAM,OAAO,MAAM,aAAa,QAAQ,MAAM;AAC9C,YAAMA,UAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,SAAS;AAGlF,WAAK,yBAAyB;AAG9B,YAAM,iBAAiB,SAAS,cAAc,gBAAgB;AAE9D,UAAI,gBAAgB;AAClB,aAAK,qBAAqB,gBAAgB,QAAQ;AAAA,MACpD;AAGA,YAAM,gBAAgB,KAAK,QAAQ,QAAQ;AAC3C,YAAM,eAAe,KAAK,QAAQ,QAAQ;AAG1C,cAAQ,IAAI,qCAAyB;AAAA,QACnC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAGD,UAAI,CAAC,UAAU;AACb,gBAAQ,MAAM,uDAAkD;AAChE,YAAI;AAAgB,eAAK,eAAe,cAAc;AACtD;AAAA,MACF;AAEA,UAAI,CAAC,aAAa,CAAC,aAAa;AAC9B,gBAAQ,MAAM,0DAAqD;AACnE,YAAI;AAAgB,eAAK,eAAe,cAAc;AACtD;AAAA,MACF;AAEA,cAAQ,IAAI,2BAAoB,EAAE,eAAe,aAAa,CAAC;AAG/D,UAAI,aAAa,aAAa,WAAW;AACvC,YAAI,iBAAiB,WAAW,eAAe;AAE7C,kBAAQ,IAAI,oDAAwC;AACpD,eAAK,UAAU,8BAA8B,WAAWA,OAAM,EAAE,KAAK,MAAM;AACzE,gBAAI,gBAAgB;AAClB,mBAAK,iBAAiB,cAAc;AACpC,yBAAW,MAAM,KAAK,eAAe,cAAc,GAAG,GAAG;AAAA,YAC3D;AACA,iBAAK,aAAaA,OAAM;AAAA,UAC1B,CAAC,EAAE,MAAM,CAACC,WAAU;AAClB,gBAAI,gBAAgB;AAClB,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,oBAAQ,MAAM,gCAAgCA,MAAK;AAAA,UACrD,CAAC;AAAA,QACH,WAAW,iBAAiB,YAAY,eAAe;AAErD,kBAAQ,IAAI,qDAAyC;AACrD,eAAK,UAAU,+BAA+B,WAAWD,OAAM,EAAE,KAAK,MAAM;AAC1E,gBAAI,gBAAgB;AAClB,mBAAK,iBAAiB,cAAc;AACpC,yBAAW,MAAM,KAAK,eAAe,cAAc,GAAG,GAAG;AAAA,YAC3D;AACA,iBAAK,aAAaA,OAAM;AAAA,UAC1B,CAAC,EAAE,MAAM,CAACC,WAAU;AAClB,gBAAI,gBAAgB;AAClB,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,oBAAQ,MAAM,iCAAiCA,MAAK;AAAA,UACtD,CAAC;AAAA,QACH;AAAA,MACF;AAGA,UAAI,eAAe,aAAa,aAAa;AAC3C,YAAI,iBAAiB,WAAW,eAAe;AAE7C,kBAAQ,IAAI,sDAA0C;AACtD,eAAK,UAAU,gCAAgC,aAAaD,OAAM,EAAE,KAAK,MAAM;AAC7E,gBAAI,gBAAgB;AAClB,mBAAK,iBAAiB,cAAc;AACpC,yBAAW,MAAM,KAAK,eAAe,cAAc,GAAG,GAAG;AAAA,YAC3D;AACA,iBAAK,aAAaA,OAAM;AAAA,UAC1B,CAAC,EAAE,MAAM,CAACC,WAAU;AAClB,gBAAI,gBAAgB;AAClB,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,oBAAQ,MAAM,kCAAkCA,MAAK;AAAA,UACvD,CAAC;AAAA,QACH,WAAW,iBAAiB,YAAY,eAAe;AAErD,kBAAQ,IAAI,uDAA2C;AACvD,eAAK,UAAU,iCAAiC,eAAe,aAAaD,OAAM,EAAE,KAAK,MAAM;AAC7F,gBAAI,gBAAgB;AAClB,mBAAK,iBAAiB,cAAc;AACpC,yBAAW,MAAM,KAAK,eAAe,cAAc,GAAG,GAAG;AAAA,YAC3D;AACA,iBAAK,aAAaA,OAAM;AAAA,UAC1B,CAAC,EAAE,MAAM,CAACC,WAAU;AAClB,gBAAI,gBAAgB;AAClB,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,oBAAQ,MAAM,mCAAmCA,MAAK;AAAA,UACxD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B,MAAM;AAC9B,UAAI,SAAS,mBAAmB,SAAS,YAAY;AACnD,eAAO;AAAA,MACT,WAAW,SAAS,qBAAqB,SAAS,cAAc;AAC9D,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA;AAAA,IAGA,gBAAgB,OAAO;AACrB,UAAI,QAAQ,EAAE,2BAA2B;AACzC,UAAI,WAAW,EAAE,MAAM,aAAa,EAAE,KAAK,UAAU;AACrD,UAAI,UAAU,EAAE,MAAM,aAAa,EAAE,KAAK,SAAS;AACnD,UAAI,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AACjD,YAAMD,UAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,SAAS;AAGlF,UAAI,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,WAAW,KAAK,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AAC7F,UAAI,iBAAiB,KAAK,uBAAuB,OAAO,QAAQ,QAAQ;AAExE,YAAM,MAAM,MAAM;AAClB,WAAK,aAAa;AAGlB,UAAI,gBAAgB;AAClB,aAAK,qBAAqB,gBAAgB,KAAK;AAAA,MACjD;AAGA,UAAI,QAAQ;AACV,YAAI,aAAa,aAAa;AAC5B,cAAI,cAAc,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AACtD,cAAIE,YAAW,MAAM,KAAK,oBAAoB,EAAE,IAAI;AACpD,kBAAQ,IAAI,wBAAwB,yBAAyB,0BAA0BA,YAAW;AAElG,eAAK,UAAU,gCAAgC,QAAQ,aAAaA,WAAUF,OAAM,EAAE,KAAK,MAAM;AAE/F,gBAAI,gBAAgB;AAClB,mBAAK,iBAAiB,cAAc;AACpC,yBAAW,MAAM,KAAK,eAAe,cAAc,GAAG,GAAG;AAAA,YAC3D;AACA,iBAAK,aAAaA,OAAM;AACxB,iBAAK,YAAY;AAAA,UACnB,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,gBAAI,gBAAgB;AAClB,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,iBAAK,YAAY;AACjB,oBAAQ,MAAM,gCAAgCA,MAAK;AAAA,UACrD,CAAC;AAAA,QACH,OAAO;AAEL,cAAI,YAAY,EAAE,MAAM,aAAa,EAAE,KAAK,WAAW;AACvD,cAAI,cAAc,MAAM,KAAK,oBAAoB,EAAE,IAAI;AACvD,kBAAQ,IAAI,sBAAsB,uBAAuB,SAAS;AAElE,eAAK,UAAU,8BAA8B,QAAQ,WAAW,aAAa,EAAE,qBAAqB,EAAE,IAAI,GAAGD,OAAM,EAAE,KAAK,MAAM;AAE9H,gBAAI,gBAAgB;AAClB,mBAAK,iBAAiB,cAAc;AACpC,yBAAW,MAAM,KAAK,eAAe,cAAc,GAAG,GAAG;AAAA,YAC3D;AACA,iBAAK,aAAaA,OAAM;AACxB,iBAAK,YAAY;AAAA,UACnB,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,gBAAI,gBAAgB;AAClB,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,iBAAK,YAAY;AACjB,oBAAQ,MAAM,8BAA8BA,MAAK;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF,WAES,SAAS;AAChB,YAAI,aAAa,aAAa;AAC5B,cAAI,cAAc,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AACtD,cAAIC,YAAW,MAAM,KAAK,oBAAoB,EAAE,IAAI;AACpD,kBAAQ,IAAI,wBAAwB,0BAA0B,2BAA2BA,YAAW;AAEpG,eAAK,UAAU,iCAAiC,SAAS,aAAaA,WAAU,EAAE,gBAAgB,EAAE,IAAI,GAAGF,OAAM,EAAE,KAAK,MAAM;AAE5H,gBAAI,gBAAgB;AAClB,mBAAK,iBAAiB,cAAc;AACpC,yBAAW,MAAM,KAAK,eAAe,cAAc,GAAG,GAAG;AAAA,YAC3D;AACA,iBAAK,aAAaA,OAAM;AACxB,iBAAK,YAAY;AAAA,UACnB,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,gBAAI,gBAAgB;AAClB,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,iBAAK,YAAY;AACjB,oBAAQ,MAAM,gCAAgCA,MAAK;AAAA,UACrD,CAAC;AAAA,QACH,OAAO;AAEL,cAAI,YAAY,EAAE,MAAM,aAAa,EAAE,KAAK,WAAW;AACvD,cAAI,cAAc,MAAM,KAAK,oBAAoB,EAAE,IAAI;AACvD,kBAAQ,IAAI,sBAAsB,wBAAwB,UAAU;AAEpE,eAAK,UAAU,+BAA+B,SAAS,WAAW,aAAa,EAAE,gBAAgB,EAAE,IAAI,GAAGD,OAAM,EAAE,KAAK,MAAM;AAE3H,gBAAI,gBAAgB;AAClB,mBAAK,iBAAiB,cAAc;AACpC,yBAAW,MAAM,KAAK,eAAe,cAAc,GAAG,GAAG;AAAA,YAC3D;AACA,iBAAK,aAAaA,OAAM;AACxB,iBAAK,YAAY;AAAA,UACnB,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,gBAAI,gBAAgB;AAClB,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,iBAAK,YAAY;AACjB,oBAAQ,MAAM,8BAA8BA,MAAK;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB,OAAO;AACxB,UAAI,SAAS,MAAM;AAEnB,WAAK,oBAAoB,OAAO,KAAK;AAAA,IACvC;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,MAAM;AACxB,cAAQ,IAAI,SAAS,MAAM;AAC3B,YAAM,UAAU,EAAE,oCAAoC;AACtD,cAAQ,YAAY,QAAQ;AAE5B,YAAM,kBAAkB,QAAQ,OAAO,WAAY;AACjD,cAAM,gBAAgB,EAAE,IAAI,EAAE,KAAK,mBAAmB;AACtD,cAAM,OAAO,cAAc,KAAK;AAChC,cAAM,OAAO,cAAc,KAAK,MAAM,KAAK;AAC3C,cAAM,UAAU,cAAc,KAAK,SAAS,KAAK;AAGjD,cAAM,iBAAiB,GAAG,QAAQ,QAAQ,UAAU,YAAY;AAEhE,eAAO,CAAC,eAAe,SAAS,KAAK,YAAY,CAAC;AAAA,MACpD,CAAC;AAED,sBAAgB,KAAK,WAAY;AAC/B,UAAE,IAAI,EAAE,SAAS,QAAQ;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe,OAAO;AACpB,UAAI,SAAS,MAAM;AAEnB,UAAI,OAAO,OAAO;AAClB,WAAK,aAAa,IAAI;AAAA,IACxB;AAAA,IAEA,eAAe,OAAO;AACpB,YAAM,WAAW,MAAM,OAAO,QAAQ;AACtC,WAAK,kBAAkB,QAAQ;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,MAAM;AACjB,YAAM,UAAU,EAAE,gFAAgF;AAGlG,cAAQ,YAAY,QAAQ;AAG5B,UAAI,QAAQ,KAAK,KAAK,MAAM,IAAI;AAC9B,cAAM,kBAAkB,QAAQ,OAAO,WAAY;AACjD,gBAAM,OAAO,EAAE,IAAI,EAAE,KAAK,aAAa,EAAE,KAAK,EAAE,YAAY;AAC5D,gBAAM,aAAa,KAAK,YAAY;AAGpC,gBAAM,cAAc,EAAE,IAAI,EAAE,KAAK,mBAAmB;AACpD,gBAAM,WAAW,YAAY,IAAI,WAAY;AAC3C,mBAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY;AAAA,UAC3C,CAAC,EAAE,IAAI;AAGP,gBAAM,cAAc,WAAW,MAAM,KAAK,EAAE,OAAO,UAAQ,KAAK,SAAS,CAAC;AAG1E,gBAAM,gBAAgB,YAAY,MAAM,UAAQ;AAE9C,kBAAM,eAAe,KAAK,SAAS,IAAI;AAGvC,kBAAM,aAAa,SAAS,KAAK,SAAO,QAAQ,QAAQ,IAAI,SAAS,IAAI,CAAC;AAE1E,mBAAO,gBAAgB;AAAA,UACzB,CAAC;AAED,iBAAO,CAAC;AAAA,QACV,CAAC;AAED,wBAAgB,KAAK,WAAY;AAC/B,YAAE,IAAI,EAAE,SAAS,QAAQ;AAAA,QAC3B,CAAC;AAAA,MACH;AAGA,UAAI,KAAK,qBAAqB,KAAK,sBAAsB,OAAO;AAC9D,cAAM,cAAc,KAAK;AACzB,gBAAQ,OAAO,WAAY;AACzB,iBAAO,CAAC,EAAE,IAAI,EAAE,SAAS,cAAc,aAAa;AAAA,QACtD,CAAC,EAAE,SAAS,QAAQ;AAAA,MACtB;AAGA,YAAM,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,gBAAgB;AACvE,UAAI,gBAAgB,SAAS,GAAG;AAC9B,wBAAgB,UAAU,CAAC;AAAA,MAC7B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,MAAM;AAEpB,WAAK,aAAa,IAAI;AAAA,IACxB;AAAA,IAGA,WAAW,OAAO;AAChB,QAAE,uBAAuB,EAAE,YAAY,UAAU;AACjD,QAAE,MAAM,aAAa,EAAE,SAAS,UAAU;AAC1C,WAAK,aAAa;AAClB,WAAK,UAAU,iCAAiC,MAAM,aAAa,EAAE,KAAK,MAAM;AAC9E,aAAK,YAAY;AAAA,MACnB,CAAC,EAAE,MAAM,CAACA,WAAU;AAClB,aAAK,YAAY;AACjB,gBAAQ,MAAM,0BAA0BA,MAAK;AAAA,MAC/C,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,OAAO;AACjB,UAAI,MAAM,QAAQ,SAAS;AACzB;AAAA,MACF;AAEA,YAAM,eAAe;AACrB,UAAI,SAAS,MAAM;AACnB,YAAM,cAAc,OAAO,SAAS,IAAI,KAAK;AAC7C,WAAK,UAAU,uCAAuC,UAAU;AAChE,YAAM,aAAa,OAAO,QAAQ;AAClC,YAAM,SAAU,eAAe,UAAU,eAAe,QAAS,EAAE,MAAM,EAAE,KAAK,QAAQ,MAAM;AAC9F,YAAM,WAAW,SAAS,EAAE,MAAM,EAAE,KAAK,WAAW,KAAK,GAAG,EAAE;AAC9D,UAAI,QAAQ;AACV,aAAK,mBAAmB,YAAY,QAAQ;AAC5C;AAAA,MACF;AACA,WAAK,aAAa,UAAU;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB,MAAM,UAAU;AACjC,YAAM,cAAc,QAAQ,IAAI,KAAK;AACrC,UAAI,WAAW,SAAS,UAAU;AAChC,aAAK,aAAa;AAClB,aAAK,UAAU,kCAAkC,UAAU,EAAE,KAAK,MAAM;AACtE,eAAK,YAAY;AAAA,QACnB,CAAC,EAAE,MAAM,CAACA,WAAU;AAClB,eAAK,YAAY;AACjB,kBAAQ,MAAM,uBAAuBA,MAAK;AAAA,QAC5C,CAAC;AACD;AAAA,MACF;AAEA,WAAK,aAAa;AAClB,WAAK,UAAU,kCAAkC,UAAU,EAAE,KAAK,MAAM;AACtE,aAAK,YAAY;AAAA,MACnB,CAAC,EAAE,MAAM,CAACA,WAAU;AAClB,aAAK,YAAY;AACjB,gBAAQ,MAAM,uBAAuBA,MAAK;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,wBAAwB;AACtB,YAAM,QAAQ,KAAK,QAAQ,cAAc,eAAe;AACxD,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AAEA,YAAM,cAAc,MAAM,SAAS,IAAI,KAAK;AAC5C,UAAI,CAAC,YAAY;AACf;AAAA,MACF;AAEA,YAAM,aAAa,MAAM,QAAQ;AACjC,YAAM,SAAU,eAAe,UAAU,eAAe,QAAS,EAAE,KAAK,EAAE,KAAK,QAAQ,MAAM;AAC7F,YAAM,WAAW,SAAS,EAAE,KAAK,EAAE,KAAK,WAAW,KAAK,GAAG,EAAE;AAE7D,UAAI,QAAQ;AACV,aAAK,mBAAmB,YAAY,QAAQ;AAC5C;AAAA,MACF;AAEA,WAAK,aAAa,UAAU;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,MAAM;AACjB,cAAQ,IAAI,SAAS,MAAM;AAC3B,YAAM,UAAU,EAAE,uBAAuB;AACzC,cAAQ,YAAY,QAAQ;AAC5B,cAAQ,KAAK,aAAa,IAAI;AAE9B,YAAM,kBAAkB,QAAQ,OAAO,WAAY;AACjD,cAAM,gBAAgB,EAAE,IAAI,EAAE,KAAK,mBAAmB;AACtD,cAAM,OAAO,cAAc,KAAK;AAChC,cAAM,OAAO,cAAc,KAAK,MAAM,KAAK;AAC3C,cAAM,UAAU,cAAc,KAAK,SAAS,KAAK;AAGjD,cAAM,iBAAiB,GAAG,QAAQ,QAAQ,UAAU,YAAY;AAEhE,eAAO,CAAC,eAAe,SAAS,KAAK,YAAY,CAAC;AAAA,MACpD,CAAC;AAED,sBAAgB,KAAK,WAAY;AAC/B,UAAE,IAAI,EAAE,SAAS,QAAQ;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,UAAU;AAE1B,WAAK,oBAAoB;AAGzB,YAAM,aAAa,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS;AACtD,WAAK,aAAa,UAAU;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,qBAAqB,SAAS,QAAQ;AACpC,YAAM,WAAW,EAAE,OAAO;AAG1B,eAAS,YAAY,oFAAoF;AAGzG,UAAI,iBAAiB;AACrB,cAAQ,QAAQ;AAAA,QACd,KAAK;AACH,2BAAiB;AACjB;AAAA,QACF,KAAK;AACH,2BAAiB;AACjB;AAAA,QACF,KAAK;AACH,2BAAiB;AACjB;AAAA,MACJ;AAGA,eAAS,KAAK,wBAAwB,cAAc;AAGpD,eAAS,SAAS,mBAAmB,QAAQ;AAE7C,cAAQ,IAAI,8BAA8B,UAAU,OAAO;AAAA,IAC7D;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,SAAS;AACxB,YAAM,WAAW,EAAE,OAAO;AAG1B,eAAS,YAAY,iEAAiE;AAGtF,eAAS,SAAS,oBAAoB;AAGtC,iBAAW,MAAM;AACf,iBAAS,YAAY,oBAAoB;AAAA,MAC3C,GAAG,GAAG;AAEN,cAAQ,IAAI,mCAAmC,OAAO;AAAA,IACxD;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe,SAAS;AACtB,YAAM,WAAW,EAAE,OAAO;AAC1B,eAAS,YAAY,kGAAkG;AACvH,eAAS,WAAW,sBAAsB;AAC1C,cAAQ,IAAI,oBAAoB,OAAO;AAAA,IACzC;AAAA;AAAA;AAAA;AAAA,IAKA,uBAAuB,OAAO,QAAQ,UAAU;AAE9C,UAAI,QAAQ;AAEZ,UAAI,aAAa,WAAW;AAC1B,gBAAQ,EAAE,wCAAwC,UAAU,EAAE,QAAQ,qBAAqB;AAAA,MAC7F,WAAW,aAAa,aAAa;AACnC,gBAAQ,EAAE,uCAAuC,UAAU,EAAE,QAAQ,uBAAuB;AAAA,MAC9F;AAGA,UAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAChC,gBAAQ,EAAE,MAAM,aAAa,EAAE,QAAQ,4CAA4C;AAAA,MACrF;AAEA,aAAO,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI;AAAA,IACvC;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aAAa,SAAS;AACpB,YAAM,WAAW,EAAE,OAAO;AAC1B,eAAS,SAAS,eAAe;AAGjC,eAAS,KAAK,mBAAmB,EAAE,SAAS,kBAAkB;AAE9D,cAAQ,IAAI,+BAA+B,OAAO;AAAA,IACpD;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,SAAS;AACvB,YAAM,WAAW,EAAE,OAAO;AAC1B,eAAS,YAAY,eAAe;AAGpC,eAAS,KAAK,mBAAmB,EAAE,YAAY,kBAAkB;AAEjE,cAAQ,IAAI,mCAAmC,OAAO;AAAA,IACxD;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,UAAU,OAAO,SAAS;AAC1C,YAAM,YAAY,EAAE,QAAQ;AAG5B,gBAAU,YAAY,oEAAoE;AAG1F,UAAI,SAAS,SAAS;AACpB,kBAAU,SAAS,iBAAiB;AAAA,MACtC,WAAW,SAAS,WAAW;AAC7B,kBAAU,SAAS,mBAAmB;AAAA,MACxC,WAAW,SAAS,SAAS;AAC3B,kBAAU,SAAS,iBAAiB;AAAA,MACtC,WAAW,SAAS,UAAU;AAC5B,kBAAU,SAAS,kBAAkB;AAAA,MACvC;AAEA,cAAQ,IAAI,6BAA6B,QAAQ,QAAQ;AAAA,IAC3D;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,UAAU;AAChC,YAAM,YAAY,EAAE,QAAQ;AAC5B,gBAAU,YAAY,oEAAoE;AAE1F,cAAQ,IAAI,+BAA+B,QAAQ;AAAA,IACrD;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,SAAS;AACzB,YAAM,WAAW,EAAE,OAAO;AAC1B,UAAI,CAAC,SAAS,SAAS,eAAe,KAAK,CAAC,SAAS,SAAS,wBAAwB,GAAG;AACvF,iBAAS,SAAS,YAAY;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,SAAS;AAC5B,YAAM,WAAW,EAAE,OAAO;AAC1B,eAAS,YAAY,YAAY;AAAA,IACnC;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB,OAAO;AAC3B,YAAM,YAAY,EAAE,MAAM,aAAa;AACvC,YAAM,kBAAkB,EAAE,SAAS,cAAc,gBAAgB,CAAC;AAGlE,YAAM,mBAAmB,UAAU,KAAK,WAAW;AACnD,YAAM,6BAA6B,UAAU,KAAK,mBAAmB,EAAE,SAAS;AAChF,YAAM,4BAA4B,qBAAqB;AACvD,YAAM,0BAA0B,qBAAqB;AAGrD,YAAM,sBAAsB,gBAAgB,QAAQ,gBAAgB,EAAE,SAAS;AAG/E,YAAM,qBAAqB,gBAAgB,QAAQ,eAAe,EAAE,SAAS;AAC7E,YAAM,qBAAqB,qBAAqB;AAChD,YAAM,+BAA+B,UAAU,KAAK,eAAe,EAAE,SAAS;AAI9E,UAAI,sBAAsB,CAAC,6BAA6B,CAAC,4BAA4B;AACnF,eAAO;AAAA,MACT;AAGA,UAAI,wBAAwB,6BAA6B,6BAA6B;AAEpF,eAAO;AAAA,MACT,WAAW,CAAC,uBAAuB,yBAAyB;AAE1D,eAAO;AAAA,MACT,WAAW,uBAAuB,yBAAyB;AAEzD,eAAO;AAAA,MACT,OAAO;AAEL,eAAO,sBAAsB,WAAW;AAAA,MAC1C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAgB,OAAO;AACrB,YAAM,WAAW,MAAM;AACvB,YAAM,WAAW,SAAS,QAAQ;AAClC,YAAM,SAAS,SAAS,SAAS,QAAQ,MAAM;AAE/C,UAAI,SAAS,SAAS;AAEpB,YAAI,CAAC,KAAK,cAAc,KAAK,UAAQ,KAAK,SAAS,YAAY,KAAK,OAAO,MAAM,GAAG;AAClF,eAAK,cAAc,KAAK,EAAE,MAAM,UAAU,IAAI,OAAO,CAAC;AAAA,QACxD;AAAA,MACF,OAAO;AAEL,aAAK,gBAAgB,KAAK,cAAc;AAAA,UAAO,UAC7C,EAAE,KAAK,SAAS,YAAY,KAAK,OAAO;AAAA,QAC1C;AAAA,MACF;AAEA,WAAK,6BAA6B;AAClC,cAAQ,IAAI,mBAAmB,KAAK,cAAc,UAAU,KAAK,aAAa;AAAA,IAChF;AAAA;AAAA;AAAA;AAAA,IAKA,+BAA+B;AAC7B,YAAM,eAAe,KAAK,cAAc,SAAS;AAGjD,UAAI,KAAK,uBAAuB;AAC9B,aAAK,mBAAmB,MAAM,UAAU,eAAe,SAAS;AAGhE,YAAI,cAAc;AAChB,eAAK,mBAAmB;AAAA,QAC1B;AAAA,MACF;AAGA,YAAM,iBAAiB,KAAK,QAAQ,cAAc,wBAAwB;AAC1E,UAAI,gBAAgB;AAClB,uBAAe,MAAM,UAAU,eAAe,WAAW;AAAA,MAC3D;AAGA,UAAI,KAAK,yBAAyB;AAChC,aAAK,qBAAqB,cAAc,KAAK,cAAc;AAAA,MAC7D;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,YAAM,qBAAqB,KAAK,QAAQ,iBAAiB,4BAA4B;AACrF,yBAAmB,QAAQ,sBAAoB;AAE7C,YAAI,CAAC,iBAAiB,UAAU;AAC9B,gBAAM,UAAU,IAAI,UAAU,QAAQ,gBAAgB;AACtD,2BAAiB,WAAW;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB;AACf,WAAK,gBAAgB,CAAC;AAGtB,YAAM,aAAa,KAAK,QAAQ,iBAAiB,uBAAuB;AACxE,iBAAW,QAAQ,cAAY;AAC7B,iBAAS,UAAU;AAAA,MACrB,CAAC;AAED,WAAK,6BAA6B;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB;AACjB,UAAI,KAAK,cAAc,WAAW,GAAG;AACnC,gBAAQ,KAAK,oCAAoC;AACjD;AAAA,MACF;AAGA,YAAM,UAAU,KAAK,QAAQ,QAAQ;AACrC,YAAM,YAAY,SAAS,KAAK,QAAQ,QAAQ,EAAE;AAGlD,YAAM,YAAY,KAAK,cAAc;AACrC,YAAM,aAAa,cAAc,IAC7B,yCACA;AAEJ,YAAM,iBAAiB,KAAK,EAAE,YAAY,EAAE,OAAO,UAAU,CAAC;AAG9D,YAAM,QAAQ,SAAS,eAAe,0BAA0B;AAChE,UAAI,OAAO;AACT,cAAM,qBAAqB,MAAM,cAAc,eAAe;AAC9D,YAAI,oBAAoB;AACtB,6BAAmB,cAAc;AAAA,QACnC;AAAA,MACF;AAGA,WAAK,qBAAqB,EAAE,SAAS,UAAU;AAE/C,cAAQ,IAAI,2CAA2C,iBAAiB;AAGxE,UAAI,OAAO;AACT,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB,OAAO;AAC3B,YAAM,UAAU,MAAM,OAAO;AAG7B,UAAI,YAAY,4BAA4B,KAAK,8BAA8B;AAC7E,cAAM,SAAS,KAAK;AACpB,cAAMD,UAAS,KAAK;AACpB,cAAM,UAAU,KAAK;AAErB,gBAAQ,IAAI,wCAAwC,MAAM;AAG1D,cAAM,YAAY,KAAK,QAAQ,iBAAiB,2BAA2B;AAC3E,kBAAU,QAAQ,UAAQ,KAAK,wBAAwB,IAAI,CAAC;AAG5D,aAAK,UAAU,4BAA4B,QAAQA,OAAM,EAAE,KAAK,MAAM;AAEpE,eAAK,iBAAiB,OAAO;AAC7B,qBAAW,MAAM,KAAK,eAAe,OAAO,GAAG,GAAG;AAClD,eAAK,oBAAoBA,OAAM;AAAA,QACjC,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,eAAK,eAAe,OAAO;AAC3B,kBAAQ,MAAM,wBAAwBA,MAAK;AAAA,QAC7C,CAAC;AAGD,aAAK,+BAA+B;AACpC,aAAK,+BAA+B;AACpC,aAAK,qBAAqB;AAE1B;AAAA,MACF;AAGA,UAAI,YAAY,8BAA8B,KAAK,oBAAoB;AACrE,cAAM,EAAE,SAAS,UAAU,IAAI,KAAK;AAGpC,cAAMD,UAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS;AAGlD,cAAM,YAAY,KAAK,UAAU,KAAK,aAAa;AAEnD,gBAAQ,IAAI,2BAA2B,KAAK,cAAc,qBAAqB,WAAW,WAAW;AAGrG,aAAK,qBAAqB;AAG1B,YAAI,YAAY,SAAS;AACvB,eAAK,UAAU,kCAAkC,WAAW,WAAWA,OAAM,EAC1E,KAAK,MAAM;AACV,oBAAQ,IAAI,qCAAqC;AACjD,iBAAK,eAAe;AAAA,UACtB,CAAC,EACA,MAAM,CAACC,WAAU;AAChB,oBAAQ,MAAM,wBAAwBA,MAAK;AAAA,UAC7C,CAAC;AAAA,QACL,WAAW,YAAY,UAAU;AAC/B,eAAK,UAAU,mCAAmC,WAAW,WAAWD,OAAM,EAC3E,KAAK,MAAM;AACV,oBAAQ,IAAI,qCAAqC;AACjD,iBAAK,eAAe;AAAA,UACtB,CAAC,EACA,MAAM,CAACC,WAAU;AAChB,oBAAQ,MAAM,wBAAwBA,MAAK;AAAA,UAC7C,CAAC;AAAA,QACL,OAAO;AACL,kBAAQ,MAAM,oBAAoB,SAAS;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,qBAAqB,OAAO;AAE1B,UAAI,KAAK,gCAAgC,KAAK,oBAAoB;AAChE,gBAAQ,IAAI,wDAAwD;AAGpE,aAAK,eAAe,KAAK,kBAAkB;AAG3C,cAAM,YAAY,KAAK,QAAQ,iBAAiB,2BAA2B;AAC3E,kBAAU,QAAQ,UAAQ,KAAK,wBAAwB,IAAI,CAAC;AAG5D,aAAK,+BAA+B;AACpC,aAAK,+BAA+B;AACpC,aAAK,qBAAqB;AAAA,MAC5B;AAAA,IACF;AAAA,EAEF;AApwCE,gBADK,2BACE,WAAU,CAAC,kBAAkB,cAAc;AAClD,gBAFK,2BAEE,UAAS;AAAA,IACd,yBAAyB;AAAA;AAAA,IACzB,2BAA2B;AAAA;AAAA,IAC3B,yBAAyB;AAAA;AAAA,IACzB,yBAAyB;AAAA;AAAA,EAC3B;AAgwCF,WAAS,uBAAuB,cAAcE,OAAM;AAClD,aAAS,CAACC,MAAK,KAAK,KAAK,OAAO,QAAQD,KAAI,GAAG;AAC7C,mBAAa,QAAQC,MAAK,KAAK;AAAA,IACjC;AACA,WAAO;AAAA,EACT;;;AC9wCA;AAAA;AAAA;AAAA;AAEA,MAAO,0BAAP,cAA6B,sBAAsB;AAAA,IAKjD,UAAU;AACR,YAAM,QAAQ;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,SAAS;AAE/B,iBAAW,MAAM;AACf,gBAAQ,MAAM,UAAU;AAAA,MAC1B,GAAG,GAAI;AAAA,IACT;AAAA,EACF;AAhBE,gBAFK,yBAEE,WAAU,CAAC,UAAU;;;ACJ9B;AAAA;AAAA;AAAA;AAKA,MAAO,2CAAP,cAA6B,sBAAsB;AAAA,IAGjD,UAAU;AACR,YAAM,QAAQ;AACd,UAAIC,QAAO;AAAA,IACb;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,OAAO;AAEvB,YAAM,eAAe;AAErB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,kBAAkB,QAAQ,QAAQ,MAAM,EAAE,KAAK,kBAAkB;AAErE,sBAAgB,KAAK,UAAU,EAAE,YAAY,QAAQ;AACrD,sBAAgB,KAAK,WAAW,EAAE,YAAY,QAAQ;AAAA,IACxD;AAAA,EACF;;;AC1BA;AAAA;AAAA;AAAA;AAGA,MAAO,gCAAP,cAA6B,WAAW;AAAA,IAGtC,OAAO,OAAO;AACZ,YAAM,QAAQ,MAAM,OAAO,QAAQ;AACnC,UAAI,CAAC,SAAS,CAAC,KAAK;AAAgB;AAEpC,WAAK,YAAY,QAAQ;AAAA,IAC3B;AAAA,EACF;AARE,gBADK,+BACE,WAAU,CAAC,OAAO;;;ACJ3B;AAAA;AAAA;AAAA;AAEA,MAAO,6BAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,YAAY,OAAO;AACjB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,WAAK,iBAAiB;AACtB,UAAI,OAAO,EAAE,eAAe;AAC5B,UAAI,SAAS,KAAK,KAAK,QAAQ;AAC/B,UAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC3B,kBAAU;AAAA,MACZ;AACA,QAAE,eAAe,EAAE,KAAK,UAAU,MAAM;AAGxC,UAAI,cAAc,SAAS,cAAc,OAAO;AAChD,QAAE,WAAW,EAAE,KAAK;AAAA,QAClB,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,aAAa,EAAE,KAAK,MAAM;AAAA,QACzC,MAAM;AAAA,MACR,CAAC;AAED,QAAE,WAAW,EAAE,SAAS,IAAI;AAE5B,QAAE,sDAAsD,EAAE,QAAQ,OAAO;AAAA,IAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,YAAY,OAAO;AACjB,WAAK,aAAa;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,YAAY,OAAO;AACjB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,KAAK,IAAI;AACjC,cAAQ,IAAI,qCAAqC,SAAS;AAC1D,YAAM,WAAW,EAAE,cAAc,SAAS;AAC1C,YAAM,iBAAiB,SAAS,KAAK;AACrC,eAAS,OAAO;AAChB,qBAAe,OAAO;AACtB,WAAK,UAAU,mCAAmC,OAAO;AAAA,IAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,QAAQ,OAAO;AACb,YAAM,SAAS,EAAE,MAAM,aAAa;AACpC,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,WAAK,UAAU,oBAAoB,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,KAAK,CAACC,WAAU;AAExE,aAAK,YAAY;AACjB,eAAO,KAAK,OAAO,KAAK,MAAM,GAAG,OAAO,KAAK,QAAQ,GAAG,kFAAkF;AAAA,MAC5I,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe,OAAO;AAEpB,YAAM,eAAe;AAErB,WAAK,UAAU,iCAAiC,MAAM,aAAa,EAAE,KAAK,CAACA,WAAU;AACnF,UAAE,0BAA0B,EAAE,MAAM,MAAM;AAAA,MAC5C,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,iBAAiB,OAAO;AACtB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,eAAe;AACrB,YAAM,YAAY,QAAQ,QAAQ,QAAQ,EAAE,KAAK,YAAY;AAC7D,YAAM,QAAQ,EAAE,cAAc,EAAE,IAAI;AACpC,YAAM,cAAc,EAAE,qBAAqB,EAAE,IAAI;AACjD,YAAM,WAAW,EAAE,iBAAiB,EAAE,IAAI;AAI1C,WAAK,UAAU,8BAA8B,WAAW,OAAO,aAAa,QAAQ,EAAE,KAAK,CAACA,WAAU;AAAA,MAEtG,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,sBAAsB,OAAO;AAC3B,YAAM,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY;AACnD,YAAM,UAAU,EAAE,MAAM,aAAa,EAAE,KAAK,SAAS;AACrD,WAAK,UAAU,oCAAoC,OAAO;AAAA,IAC5D;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,qBAAqB,OAAO;AAC1B,WAAK,UAAU,iCAAiC;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe,OAAO;AACpB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,aAAa,QAAQ,KAAK,aAAa;AAC7C,WAAK,UAAU,4BAA4B,UAAU;AAAA,IACvD;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,OAAO;AACX,YAAM,eAAe;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,YAAY,OAAO,QAAQ;AAGjC,YAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,WAAK,SAAS;AACd,WAAK,SAAS,aAAa;AAG3B,YAAM,YAAY,SAAS,cAAc,qBAAqB;AAC9D,UAAI,WAAW;AACb,cAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,OAAO;AACb,cAAM,OAAO;AACb,cAAM,QAAQ,UAAU;AACxB,aAAK,YAAY,KAAK;AAAA,MACxB;AAEA,eAAS,KAAK,YAAY,IAAI;AAC9B,WAAK,OAAO;AAAA,IACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,mBAAmB,OAAO;AACxB,YAAM,eAAe;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,yBAAyB,OAAO,QAAQ;AAC9C,YAAM,YAAY,OAAO,QAAQ;AACjC,YAAM,WAAW,OAAO,QAAQ;AAGhC,YAAM,cAAc,SAAS,eAAe,mBAAmB;AAC/D,UAAI,gBAAgB;AACpB,UAAI,eAAe;AACnB,UAAI,aAAa;AACf,wBAAgB,YAAY,QAAQ,iBAAiB;AACrD,uBAAe,YAAY,QAAQ,gBAAgB;AAAA,MACrD;AAEA,WAAK,aAAa;AAGlB,WAAK,UAAU,kCAAkC,wBAAwB,WAAW,QAAQ,EAAE,KAAK,MAAM;AAGvG,cAAM,cAAc,eAAe,aAAa,MAAM,6BAA6B,IAAI,CAAC,IAAI;AAE5F,cAAM,MAAM,aAAa;AACzB,cAAMC,UAAS,IAAI,gBAAgB;AAAA,UACjC,gBAAgB;AAAA;AAAA,UAChB,gBAAgB,mBAAmB,aAAa;AAAA,UAChD,eAAe;AAAA,QACjB,CAAC;AACD,eAAO,SAAS,OAAO,GAAG,OAAOA,QAAO,SAAS;AAAA,MACnD,CAAC,EAAE,MAAM,CAACC,WAAU;AAClB,gBAAQ,MAAM,0CAA0CA,MAAK;AAC7D,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EAEF;;;AC9NA;AAAA;AAAA;AAAA;AAEA,MAAO,8CAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,+CAA+C;AAC5D,WAAK,oBAAoB;AAAA,IAC3B;AAAA,IAEA,YAAY,OAAO;AACjB,YAAM,gBAAgB,SAAS,MAAM,OAAO,KAAK;AACjD,WAAK,QAAQ,mBAAmB,eAAe;AAC/C,WAAK,oBAAoB,aAAa;AAAA,IACxC;AAAA,IAEA,oBAAoB,QAAQ,MAAM;AAChC,UAAI,UAAU,MAAM;AAElB,cAAM,cAAc,KAAK,QAAQ,cAAc,yCAAyC;AACxF,gBAAQ,cAAc,SAAS,YAAY,KAAK,IAAI;AAAA,MACtD;AAEA,WAAK,gBAAgB,QAAQ,CAAC,QAAQ;AACpC,cAAM,QAAQ,SAAS,IAAI,QAAQ,KAAK;AACxC,cAAM,WAAW,SAAS;AAG1B,YAAI,UAAU;AACZ,cAAI,UAAU,OAAO,4BAA4B,oBAAoB,gBAAgB;AACrF,cAAI,UAAU,IAAI,2BAA2B,kBAAkB,UAAU;AAAA,QAC3E,OAAO;AACL,cAAI,UAAU,IAAI,4BAA4B,oBAAoB,gBAAgB;AAClF,cAAI,UAAU,OAAO,2BAA2B,kBAAkB,UAAU;AAAA,QAC9E;AAGA,cAAM,OAAO,IAAI,cAAc,kBAAkB;AACjD,YAAI,MAAM;AACR,cAAI,UAAU;AACZ,iBAAK,cAAc;AACnB,iBAAK,UAAU,OAAO,YAAY;AAClC,iBAAK,UAAU,IAAI,cAAc;AACjC,iBAAK,QAAQ;AAAA,UACf,OAAO;AACL,iBAAK,cAAc;AACnB,iBAAK,UAAU,OAAO,cAAc;AACpC,iBAAK,UAAU,IAAI,YAAY;AAC/B,iBAAK,QAAQ;AAAA,UACf;AAAA,QACF;AAGA,cAAM,SAAS,IAAI,cAAc,QAAQ;AACzC,cAAM,UAAU,IAAI,cAAc,aAAa;AAE/C,YAAI,QAAQ;AACV,cAAI,UAAU;AACZ,mBAAO,UAAU,OAAO,YAAY;AACpC,mBAAO,UAAU,IAAI,cAAc;AAAA,UACrC,OAAO;AACL,mBAAO,UAAU,OAAO,cAAc;AACtC,mBAAO,UAAU,IAAI,YAAY;AAAA,UACnC;AAAA,QACF;AAEA,YAAI,SAAS;AACX,cAAI,UAAU;AACZ,oBAAQ,UAAU,OAAO,YAAY;AACrC,oBAAQ,UAAU,IAAI,WAAW;AAAA,UACnC,OAAO;AACL,oBAAQ,UAAU,OAAO,WAAW;AACpC,oBAAQ,UAAU,IAAI,YAAY;AAAA,UACpC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAhFE,gBADK,6CACE,WAAU,CAAC,UAAU;;;ACH9B;AAAA;AAAA;AAAA;AAEA,MAAO,sCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASjD,OAAO,OAAO;AACZ,YAAM,YAAY,EAAE,MAAM,aAAa;AACvC,YAAM,iBAAiB,EAAE,IAAI,UAAU,KAAK,WAAW,GAAG;AAC1D,UAAG,KAAK,OAAO,cAAc,GAAG;AAC9B,kBAAU,KAAK,iBAAiB,EAAE,KAAK,aAAa;AACpD,aAAK,WAAW,cAAc;AAAA,MAChC,OAAO;AACL,kBAAU,KAAK,iBAAiB,EAAE,KAAK,aAAa;AACpD,cAAMC,MAAK,UAAU,KAAK,IAAI;AAC9B,aAAK,UAAU,gBAAgBA,GAAE;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,OAAO,QAAQ;AACb,aAAO,OAAO,SAAS,MAAM;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,UAAU,QAAQA,KAAI;AACpB,WAAK,UAAU,4BAA4BA,GAAE,EAAE,KAAK,MAAM,OAAO,SAAS,MAAM,CAAC;AAAA,IACnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,WAAW,QAAQ;AACjB,aAAO,SAAS,MAAM;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,oBAAoB,OAAO;AACzB,YAAM,eAAe;AACrB,YAAM,SAAS,EAAE,MAAM,aAAa;AACpC,YAAM,YAAY,OAAO,KAAK,IAAI;AAElC,WAAK,UAAU,yCAAyC,SAAS;AAAA,IACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,kBAAkB,OAAO;AACvB,YAAM,SAAS,EAAE,MAAM,aAAa;AACpC,UAAI,eAAe,OAAO,KAAK,cAAc;AAC7C,YAAM,MAAM,IAAI,IAAI,OAAO,QAAQ;AACnC,UAAI,aAAa,IAAI,gBAAgB,YAAY;AACjD,UAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,YAAI,aAAa,OAAO,MAAM;AAAA,MAChC;AACA,UAAI,aAAa,IAAI,gBAAgB,YAAY;AAEjD,aAAO,WAAW;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,eAAe,OAAO;AACpB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,YAAY,QAAQ,KAAK,IAAI;AAEnC,WAAK,UAAU,mCAAmC,SAAS;AAAA,IAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,mCAAmC,OAAO;AACxC,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,YAAY,QAAQ,KAAK,IAAI;AACnC,UAAI,QAAQ,KAAK,EAAE,0CAA0C,CAAC,GAAG;AAC/D,gBAAQ,IAAI,wCAAwC;AACpD,aAAK,UAAU,mCAAmC,WAAW,IAAI;AAAA,MACnE,OAAO;AACL,gBAAQ,IAAI,KAAK,EAAE,aAAa,CAAC;AAAA,MACnC;AAAA,IAEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,cAAc,OAAO;AACnB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,YAAY,QAAQ,KAAK,YAAY;AAC3C,YAAM,cAAc,EAAE,eAAe;AAGrC,QAAE,KAAK;AAAA,QACL,KAAK,sBAAsB;AAAA,QAC3B,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS,SAASC,OAAM,YAAY,OAAO;AACvC,sBAAY,KAAK,UAAU,EAAE,YAAY,QAAQ;AACjD,kBAAQ,IAAI,+BAA+B;AAAA,QAC/C;AAAA,QACA,OAAO,SAAS,KAAK,QAAQC,QAAO;AAClC,kBAAQ,MAAM,4BAA4BA,MAAK;AAC/C,sBAAY,KAAK,QAAQ,EAAE,YAAY,QAAQ;AAAA,QACjD;AAAA,MACF,CAAC;AACD,kBAAY,MAAM,MAAM;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY,OAAO;AACjB,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AAnJE,gBAFK,qCAEE,WAAU,CAAC,WAAW;;;ACJ/B;AAAA;AAAA;AAAA;AAAA;AAEA,MAAO,2CAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AAsBE;AAgEA;AAAA;AAAA;AAAA;AAAA;AAkCA;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AASA;AAAA;AAAA;AAAA;AASA;AAAA;AAAA;AAAA;AASA;AAAA;AAAA;AAAA;AAxJA;AAAA,2CAAgB;AAEhB;AAAA,8CAAmB;AAGnB;AAAA,qCAAU;AAEV;AAAA,mCAAQ;AAER;AAAA,wCAAa;AAAA;AAAA,IAEb,UAAU;AACR,YAAM,QAAQ;AAEd,4BAAK,wBAAL;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBA,WAAW,OAAO;AAChB,YAAM,eAAe;AACrB,UAAG,KAAK,oBAAoB;AAC1B,cAAM,cAAc,KAAK,iBAAiB,KAAK,gBAAgB;AAC/D,UAAE,WAAW,EAAE,KAAK,uBAAuB,EAAE,YAAY,WAAW;AACpE,UAAE,WAAW,EAAE,KAAK,sBAAsB,EAAE,YAAY,WAAW;AACnE,8BAAK,wDAAL;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAO,OAAO;AACZ,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,WAAK,UAAU,wCAAwC,QAAQ,KAAK,eAAe,CAAC;AACpF,4BAAK,wBAAL,WAAe;AACf,WAAK;AACL,4BAAK,wCAAL,WAAuB;AACvB,4BAAK,wCAAL;AACA,4BAAK,0DAAL;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UAAU,OAAO;AACf,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,WAAK,UAAU,4CAA4C,QAAQ,KAAK,eAAe,CAAC;AACxF,4BAAK,wBAAL,WAAe;AACf,WAAK;AACL,4BAAK,wCAAL,WAAuB;AACvB,4BAAK,oCAAL;AACA,4BAAK,0DAAL;AAAA,IACF;AAAA,IAkBA,eAAe,OAAO;AACpB,YAAMC,QAAO;AACb,WAAK,UAAU,4CAA4C,EAAE,KAAK,MAAM;AAtG5E;AAuGM,6BAAAA,OAAK,wBAAL;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAO;AACb,YAAMA,QAAO;AACb,WAAK,UAAU,mCAAmC,EAAE,KAAK,MAAM;AAjHnE;AAkHM,6BAAAA,OAAK,wBAAL;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAgDF;AA5IE;AAAA,gBAAS,WAAG;AACV,QAAG,KAAK,oBAAoB;AAC1B,WAAK,gBAAgB,KAAK,iBAAiB,OAAO,CAAC,YAAYC,QAAO,gBAAgB;AACpF,eAAO,CAAC,EAAE,UAAU,EAAE,KAAK,SAAS;AAAA,MACtC,CAAC,EAAE;AACH,WAAK,aAAa,KAAK;AAAA,IACzB;AACA,SAAK,mBAAmB;AACxB,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,0BAAK,wCAAL,WAAuB;AACvB,0BAAK,wCAAL;AACA,0BAAK,oCAAL;AACA,0BAAK,0DAAL;AAAA,EACF;AAkDA;AAAA,gBAAS,SAAC,OAAO;AACf,QAAG,KAAK,oBAAoB;AAC1B,YAAM,eAAe,KAAK,iBAAiB,KAAK,gBAAgB;AAChE,QAAE,YAAY,EAAE,SAAS,QAAQ;AACjC,UAAG,KAAK,mBAAmB,KAAK,KAAK,eAAe;AAClD,aAAK;AACL,cAAM,cAAc,KAAK,iBAAiB,KAAK,gBAAgB;AAC/D,UAAE,WAAW,EAAE,YAAY,QAAQ;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAwBA;AAAA,wBAAiB,SAAC,OAAO;AACvB,QAAG,KAAK,mBAAmB;AACzB,WAAK,cAAc;AACnB,QAAE,KAAK,cAAc,EAAE,SAAS,iBAAiB,EAAE,KAAK,KAAK,UAAU;AAAA,IACzE;AAAA,EACF;AAKA;AAAA,wBAAiB,WAAG;AAClB,QAAG,KAAK,qBAAqB;AAC3B,QAAE,KAAK,gBAAgB,EAAE,SAAS,iBAAiB,EAAE,KAAK,KAAK,OAAO;AAAA,IACxE;AAAA,EACF;AAKA;AAAA,sBAAe,WAAG;AAChB,QAAG,KAAK,mBAAmB;AACzB,QAAE,KAAK,cAAc,EAAE,SAAS,iBAAiB,EAAE,KAAK,KAAK,KAAK;AAAA,IACpE;AAAA,EACF;AAKA;AAAA,iCAA0B,WAAG;AAC3B,QAAG,KAAK,yBAAyB;AAC/B,QAAE,KAAK,qBAAqB,EAAE,SAAS,UAAU;AAAA,IACnD;AAAA,EACF;AAKA;AAAA,gCAAyB,WAAG;AAC1B,QAAG,KAAK,yBAAyB;AAC/B,QAAE,KAAK,qBAAqB,EAAE,YAAY,UAAU;AAAA,IACtD;AAAA,EACF;AA/JA,gBAFK,0CAEE,WAAU,CAAC,aAAa,YAAY,cAAc,YAAY,gBAAgB;;;ACJvF;AAAA;AAAA;AAAA;AAGA,MAAO,uCAAP,cAA6B,sBAAsB;AAAA,IAKjD,UAAU;AAER,WAAK,mBAAmB,EAAE,4BAA4B;AACtD,WAAK,qBAAqB,EAAE,8BAA8B;AAC1D,YAAM,QAAQ;AACd,WAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AAMxC,YAAM,0BAA0B,SAAS,eAAe,2BAA2B;AACnF,UAAI,yBAAyB;AAC3B,UAAE,MAAM,EAAE,IAAI,oBAAoB,OAAO;AAAA,MAC3C;AAAA,IAEF;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAElB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,cAAQ,IAAI,yBAAyB,OAAO;AAC5C,YAAM,mBAAmB,QAAQ,QAAQ,aAAa;AACtD,cAAQ,IAAI,sBAAsB,gBAAgB;AAClD,YAAM,iBAAiB,QAAQ,QAAQ,mBAAmB;AAC1D,YAAM,aAAa,eAAe,KAAK,aAAa;AACpD,iBAAW,YAAY,UAAU;AACjC,uBAAiB,SAAS,UAAU;AACpC,UAAI,KAAK,oBAAoB;AAC3B,YAAI,cAAc,KAAK;AACvB,aAAK,UAAU,iCAAiC,WAAW;AAC3D,aAAK,iBAAiB,SAAS,QAAQ;AACvC,aAAK,mBAAmB,YAAY,QAAQ;AAC5C,aAAK,8BAA8B;AAAA,MACrC,OAAO;AAEL,aAAK,mBAAmB,SAAS,QAAQ;AACzC,aAAK,iBAAiB,YAAY,QAAQ;AAAA,MAC5C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,mBAAmB,OAAO;AACxB,UAAI,KAAK,oBAAoB;AAC3B,YAAI,cAAc,KAAK;AACvB,aAAK,UAAU,kCAAkC,WAAW;AAC5D,aAAK,iBAAiB,SAAS,QAAQ;AACvC,aAAK,mBAAmB,YAAY,QAAQ;AAC5C,aAAK,8BAA8B;AAAA,MACrC,OAAO;AAEL,aAAK,mBAAmB,SAAS,QAAQ;AACzC,aAAK,iBAAiB,YAAY,QAAQ;AAAA,MAC5C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,cAAc,OAAO;AACnB,UAAI,KAAK,oBAAoB;AAC3B,YAAI,cAAc,KAAK;AACvB,aAAK,UAAU,6BAA6B,WAAW,EAAE,KAAK,MAAM;AAAA,QAIpE,CAAC;AACD,aAAK,iBAAiB,SAAS,QAAQ;AACvC,aAAK,mBAAmB,YAAY,QAAQ;AAC5C,aAAK,8BAA8B;AAAA,MACrC,OAAO;AAEL,aAAK,mBAAmB,SAAS,QAAQ;AACzC,aAAK,iBAAiB,YAAY,QAAQ;AAAA,MAC5C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,gCAAgC;AAC9B,YAAM,sBAAsB,EAAE,uBAAuB;AACrD,0BAAoB,QAAQ,EAAE,WAAW,EAAE,GAAG,GAAG;AAAA,IACnD;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AAEvB,WAAK,mBAAmB,SAAS,QAAQ;AACzC,WAAK,iBAAiB,YAAY,QAAQ;AAAA,IAC5C;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU,OAAO;AAEf,YAAM,SAAS,MAAM;AACrB,YAAMC,QAAO;AACb,YAAM,cAAc,OAAO,QAAQ;AACnC,YAAM,YAAY,OAAO,QAAQ;AAGjC,YAAM,eAAe,OAAO;AAC5B,aAAO,WAAW;AAKlB,YAAM,mBAAmB,SAAS,cAAc,wBAAwB,eAAe;AACvF,UAAI,kBAAkB;AACpB,yBAAiB,UAAU,IAAI,SAAS;AACxC,yBAAiB,UAAU,OAAO,SAAS;AAAA,MAC7C;AAGA,YAAM,cAAc,SAAS,eAAe,mBAAmB;AAC/D,UAAI,aAAa;AACf,eAAO,QAAQ,aAAa,YAAY,QAAQ,cAAc;AAC9D,eAAO,QAAQ,eAAe,YAAY,QAAQ,gBAAgB;AAClE,eAAO,QAAQ,gBAAgB,YAAY,QAAQ,iBAAiB;AACpE,eAAO,QAAQ,gBAAgB,YAAY,QAAQ,iBAAiB;AAAA,MACtE;AAIA,WAAK,aAAa;AAElB,WAAK,UAAU,8BAA8B,QAAQ,WAAW,WAAW,EAAE,KAAK,MAAM;AACtF,gBAAQ,IAAI,kBAAkB;AAE9B,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,gBAAQ,MAAM,yBAAyBA,MAAK;AAC5C,eAAO,WAAW;AAClB,eAAO,cAAc;AACrB,YAAI,kBAAkB;AACpB,2BAAiB,UAAU,OAAO,SAAS;AAAA,QAC7C;AACA,QAAAD,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,OAAO;AAGV,QAAE,gCAAgC,EAAE,SAAS,QAAQ;AACrD,QAAE,mBAAmB,EAAE,KAAK;AAE5B,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,QAAE,+BAA+B,EAAE,YAAY,eAAe;AAE9D,QAAE,oBAAoB,EAAE,YAAY,UAAU;AAE9C,QAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,SAAS,UAAU;AAE7C,UAAIE,MAAK,QAAQ,KAAK,IAAI,GAC1B,OAAO,QAAQ,KAAK,MAAM;AAG1B,YAAM,SAAS,QAAQ,QAAQ,QAAQ;AACvC,YAAM,UAAU,OAAO,KAAK,UAAU;AAEtC,cAAQ,IAAI,4BAA4BA,KAAI;AAC5C,QAAE,IAAI,QAAQA,UAAS,EAAE,SAAS,eAAe;AACjD,QAAE,QAAQ,EAAE,IAAI,gBAAgB,IAAI,QAAQA,YAAW,WAAY;AACjE,UAAE,IAAI,EAAE,SAAS,eAAe;AAAA,MAClC,CAAC;AAGD,UAAI,OAAO,EAAE,eAAe;AAC5B,YAAM,YAAY;AAClB,YAAM,iBAAiB,KAAK,KAAK,cAAc,YAAY;AAE3D,UAAG,eAAe,SAAS,GAAG;AAC5B,uBAAe,KAAK,SAASA,GAAE;AAAA,MACjC,OAAO;AACL,YAAI,cAAc,SAAS,cAAc,OAAO;AAChD,UAAE,WAAW,EAAE,KAAK;AAAA,UAClB,MAAM;AAAA,UACN,OAAOA;AAAA,UACP,MAAM;AAAA,QACR,CAAC;AACD,UAAE,WAAW,EAAE,SAAS,IAAI;AAAA,MAC9B;AAEA,YAAM,iBAAiB;AACvB,YAAM,sBAAsB,KAAK,KAAK,cAAc,iBAAiB;AAErE,UAAG,oBAAoB,SAAS,GAAG;AACjC,4BAAoB,KAAK,SAAS,OAAO;AAAA,MAC3C,OAAO;AACL,YAAI,mBAAmB,SAAS,cAAc,OAAO;AACrD,UAAE,gBAAgB,EAAE,KAAK;AAAA,UACvB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QACR,CAAC;AACD,UAAE,gBAAgB,EAAE,SAAS,IAAI;AAAA,MACnC;AAEA,YAAM,YAAY,OAAO,KAAK;AAG9B,YAAM,aAAa,UAAU,QAAQ,uBAAuB;AAC5D,iBAAW,KAAK,oBAAoB,EAAE,YAAY,UAAU;AAC5D,aAAO,SAAS,UAAU;AAC1B,gBAAU,SAAS,UAAU;AAG7B,WAAK,MAAM,aAAa,iBAAiBA,KAAI,KAAK;AAClD,WAAK,MAAM,aAAa,YAAY,SAAS,KAAK;AAClD,WAAK,SAAS;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA,IAKA,SAAS,OAAO;AACd,QAAE,eAAe,EAAE,KAAK;AACxB,QAAE,6BAA6B,EAAE,KAAK;AAGtC,YAAM,UAAU,MAAM;AACtB,YAAM,YAAY,QAAQ,QAAQ,YAAY;AAC9C,cAAQ,IAAI,cAAc,SAAS;AACnC,QAAE,SAAS,EAAE,SAAS,OAAO;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW;AACT,QAAE,6BAA6B,EAAE,KAAK;AACtC,QAAE,eAAe,EAAE,KAAK;AAAA,IAC1B;AAAA,IAEA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AAErB,QAAE,wBAAwB,EAAE,YAAY,OAAO;AAE/C,YAAM,OAAO,OAAO;AAAA,IAEtB;AAAA,IAEA,cAAc,OAAO;AACnB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,cAAQ,IAAI,oBAAoB,OAAO;AACvC,UAAG,QAAQ,IAAI,EAAE,SAAS,GAAG;AAC3B,gBAAQ,IAAI,oBAAoB,QAAQ,IAAI,CAAC;AAC7C,gBAAQ,IAAI,YAAY,QAAQ,KAAK,QAAQ,CAAC;AAC9C,UAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,YAAY,QAAQ,EAAE,SAAS,SAAS;AAAA,MACpE,OAAO;AACL,gBAAQ,IAAI,kBAAkB,OAAO;AAAA,MACvC;AAAA,IAMF;AAAA,EAEF;AA9RE,gBAFK,sCAEE,WAAU,CAAE,WAAY;AAC/B,gBAHK,sCAGE,UAAS,EAAE,WAAW,OAAO;;;ACNtC;AAAA;AAAA;AAAA;AAEA,MAAO,4CAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,kBAAkB,OAAO;AAEvB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,OAAO,YAAY;AAC3C,YAAM,gBAAgB;AACtB,YAAM,cAAc,cAAc,IAAI;AACtC,YAAMC,WAAU,EAAC,MAAM,SAAS,OAAO,QAAO;AAC9C,YAAM,cAAcA,SAAQ,WAAW;AACvC,UAAG,KAAK,sBAAsB;AAC5B,cAAM,WAAW,EAAE,KAAK,iBAAiB,EAAE,IAAI;AAC/C,UAAE,KAAK,iBAAiB,EAAE,IAAI,WAAW;AACzC,aAAK,gBAAgB,UAAU,WAAW;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,gBAAgB,UAAU,aAAa;AACrC,UAAI,KAAK,eAAe;AACtB,cAAM,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO;AAE9C,eAAO,YAAY,QAAQ,UAAU;AACrC,eAAO,SAAS,QAAQ,aAAa;AAAA,MACvC;AAAA,IACF;AAAA,IAEA,iBAAiB,OAAO;AACtB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,UAAG,KAAK,eAAe;AACrB,UAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,YAAY,WAAW;AAAA,MAC3D;AAAA,IAEF;AAAA,IAEA,cAAc,OAAO;AACnB,YAAM,eAAe;AACrB,cAAQ,IAAI,gBAAgB;AAC5B,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,cAAQ,QAAQ,aAAa,EAAE,KAAK,eAAe,EAAE,YAAY,UAAU;AAAA,IAC7E;AAAA,EACF;AA9CE,gBADK,2CACE,WAAU,CAAC,QAAQ,aAAa;;;ACHzC;AAAA;AAAA;AAAA;;;ACMA,WAASC,QAAO;AAAA,EAAC;AACjB,MAAMC,OAAO,WAAW;AACtB,QAAIC,MAAK;AACT,WAAO,WAAW;AAChB,aAAOA;AAAA,IACT;AAAA,EACF,EAAE;AACF,WAASC,eAAc,OAAO;AAC5B,WAAO,UAAU,QAAQ,OAAO,UAAU;AAAA,EAC5C;AACA,WAASC,SAAQ,OAAO;AACtB,QAAI,MAAM,WAAW,MAAM,QAAQ,KAAK,GAAG;AACzC,aAAO;AAAA,IACT;AACA,UAAM,OAAO,OAAO,UAAU,SAAS,KAAK,KAAK;AACjD,QAAI,KAAK,MAAM,GAAG,CAAC,MAAM,aAAa,KAAK,MAAM,EAAE,MAAM,UAAU;AACjE,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAASC,UAAS,OAAO;AACvB,WAAO,UAAU,QAAQ,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,EACrE;AACA,MAAMC,kBAAiB,CAAC,WAAW,OAAO,UAAU,YAAY,iBAAiB,WAAW,SAAS,CAAC,KAAK;AAC3G,WAASC,iBAAgB,OAAO,cAAc;AAC5C,WAAOD,gBAAe,KAAK,IAAI,QAAQ;AAAA,EACzC;AACA,WAASE,gBAAe,OAAO,cAAc;AAC3C,WAAO,OAAO,UAAU,cAAc,eAAe;AAAA,EACvD;AACA,MAAMC,gBAAe,CAAC,OAAO,cAC3B,OAAO,UAAU,YAAY,MAAM,SAAS,GAAG,IAC7C,WAAW,KAAK,IAAI,MAClB,QAAQ;AACd,MAAMC,eAAc,CAAC,OAAO,cAC1B,OAAO,UAAU,YAAY,MAAM,SAAS,GAAG,IAC7C,WAAW,KAAK,IAAI,MAAM,YACxB,CAAC;AACP,WAASC,UAASC,KAAI,MAAM,SAAS;AACnC,QAAIA,OAAM,OAAOA,IAAG,SAAS,YAAY;AACvC,aAAOA,IAAG,MAAM,SAAS,IAAI;AAAA,IAC/B;AAAA,EACF;AACA,WAASC,MAAK,UAAUD,KAAI,SAAS,SAAS;AAC5C,QAAIE,IAAG,KAAK;AACZ,QAAIV,SAAQ,QAAQ,GAAG;AACrB,YAAM,SAAS;AACf,UAAI,SAAS;AACX,aAAKU,KAAI,MAAM,GAAGA,MAAK,GAAGA,MAAK;AAC7B,UAAAF,IAAG,KAAK,SAAS,SAASE,EAAC,GAAGA,EAAC;AAAA,QACjC;AAAA,MACF,OAAO;AACL,aAAKA,KAAI,GAAGA,KAAI,KAAKA,MAAK;AACxB,UAAAF,IAAG,KAAK,SAAS,SAASE,EAAC,GAAGA,EAAC;AAAA,QACjC;AAAA,MACF;AAAA,IACF,WAAWT,UAAS,QAAQ,GAAG;AAC7B,aAAO,OAAO,KAAK,QAAQ;AAC3B,YAAM,KAAK;AACX,WAAKS,KAAI,GAAGA,KAAI,KAAKA,MAAK;AACxB,QAAAF,IAAG,KAAK,SAAS,SAAS,KAAKE,EAAC,CAAC,GAAG,KAAKA,EAAC,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACA,WAASC,gBAAe,IAAI,IAAI;AAC9B,QAAID,IAAG,MAAM,IAAI;AACjB,QAAI,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,QAAQ;AACzC,aAAO;AAAA,IACT;AACA,SAAKA,KAAI,GAAG,OAAO,GAAG,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC3C,WAAK,GAAGA,EAAC;AACT,WAAK,GAAGA,EAAC;AACT,UAAI,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,UAAU,GAAG,OAAO;AAChE,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,QAAQ,QAAQ;AACvB,QAAIV,SAAQ,MAAM,GAAG;AACnB,aAAO,OAAO,IAAI,OAAO;AAAA,IAC3B;AACA,QAAIC,UAAS,MAAM,GAAG;AACpB,YAAM,SAAS,uBAAO,OAAO,IAAI;AACjC,YAAM,OAAO,OAAO,KAAK,MAAM;AAC/B,YAAM,OAAO,KAAK;AAClB,UAAIW,KAAI;AACR,aAAOA,KAAI,MAAM,EAAEA,IAAG;AACpB,eAAO,KAAKA,EAAC,CAAC,IAAI,QAAQ,OAAO,KAAKA,EAAC,CAAC,CAAC;AAAA,MAC3C;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAASC,YAAWC,MAAK;AACvB,WAAO,CAAC,aAAa,aAAa,aAAa,EAAE,QAAQA,IAAG,MAAM;AAAA,EACpE;AACA,WAASC,SAAQD,MAAK,QAAQ,QAAQE,UAAS;AAC7C,QAAI,CAACH,YAAWC,IAAG,GAAG;AACpB;AAAA,IACF;AACA,UAAM,OAAO,OAAOA,IAAG;AACvB,UAAM,OAAO,OAAOA,IAAG;AACvB,QAAIb,UAAS,IAAI,KAAKA,UAAS,IAAI,GAAG;AACpC,MAAAgB,OAAM,MAAM,MAAMD,QAAO;AAAA,IAC3B,OAAO;AACL,aAAOF,IAAG,IAAI,QAAQ,IAAI;AAAA,IAC5B;AAAA,EACF;AACA,WAASG,OAAM,QAAQ,QAAQD,UAAS;AACtC,UAAM,UAAUhB,SAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;AAClD,UAAM,OAAO,QAAQ;AACrB,QAAI,CAACC,UAAS,MAAM,GAAG;AACrB,aAAO;AAAA,IACT;AACA,IAAAe,WAAUA,YAAW,CAAC;AACtB,UAAM,SAASA,SAAQ,UAAUD;AACjC,aAASL,KAAI,GAAGA,KAAI,MAAM,EAAEA,IAAG;AAC7B,eAAS,QAAQA,EAAC;AAClB,UAAI,CAACT,UAAS,MAAM,GAAG;AACrB;AAAA,MACF;AACA,YAAM,OAAO,OAAO,KAAK,MAAM;AAC/B,eAASW,KAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACjD,eAAO,KAAKA,EAAC,GAAG,QAAQ,QAAQI,QAAO;AAAA,MACzC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASE,SAAQ,QAAQ,QAAQ;AAC/B,WAAOD,OAAM,QAAQ,QAAQ,EAAC,QAAQE,WAAS,CAAC;AAAA,EAClD;AACA,WAASA,WAAUL,MAAK,QAAQ,QAAQ;AACtC,QAAI,CAACD,YAAWC,IAAG,GAAG;AACpB;AAAA,IACF;AACA,UAAM,OAAO,OAAOA,IAAG;AACvB,UAAM,OAAO,OAAOA,IAAG;AACvB,QAAIb,UAAS,IAAI,KAAKA,UAAS,IAAI,GAAG;AACpC,MAAAiB,SAAQ,MAAM,IAAI;AAAA,IACpB,WAAW,CAAC,OAAO,UAAU,eAAe,KAAK,QAAQJ,IAAG,GAAG;AAC7D,aAAOA,IAAG,IAAI,QAAQ,IAAI;AAAA,IAC5B;AAAA,EACF;AAOA,MAAMM,gBAAe;AAAA,IACnB,IAAI,CAAAC,OAAKA;AAAA,IACT,GAAG,CAAAC,OAAKA,GAAE;AAAA,IACV,GAAG,CAAAA,OAAKA,GAAE;AAAA,EACZ;AACA,WAASC,kBAAiB,KAAKC,MAAK;AAClC,UAAM,WAAWJ,cAAaI,IAAG,MAAMJ,cAAaI,IAAG,IAAIC,iBAAgBD,IAAG;AAC9E,WAAO,SAAS,GAAG;AAAA,EACrB;AACA,WAASC,iBAAgBD,MAAK;AAC5B,UAAM,OAAOE,WAAUF,IAAG;AAC1B,WAAO,SAAO;AACZ,iBAAWG,MAAK,MAAM;AACpB,YAAIA,OAAM,IAAI;AACZ;AAAA,QACF;AACA,cAAM,OAAO,IAAIA,EAAC;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAASD,WAAUF,MAAK;AACtB,UAAM,QAAQA,KAAI,MAAM,GAAG;AAC3B,UAAM,OAAO,CAAC;AACd,QAAI,MAAM;AACV,eAAW,QAAQ,OAAO;AACxB,aAAO;AACP,UAAI,IAAI,SAAS,IAAI,GAAG;AACtB,cAAM,IAAI,MAAM,GAAG,EAAE,IAAI;AAAA,MAC3B,OAAO;AACL,aAAK,KAAK,GAAG;AACb,cAAM;AAAA,MACR;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASI,aAAY,KAAK;AACxB,WAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA,EAClD;AACA,MAAMC,WAAU,CAAC,UAAU,OAAO,UAAU;AAC5C,MAAMC,cAAa,CAAC,UAAU,OAAO,UAAU;AAC/C,MAAMC,aAAY,CAACC,IAAGC,OAAM;AAC1B,QAAID,GAAE,SAASC,GAAE,MAAM;AACrB,aAAO;AAAA,IACT;AACA,eAAW,QAAQD,IAAG;AACpB,UAAI,CAACC,GAAE,IAAI,IAAI,GAAG;AAChB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASC,eAAcC,IAAG;AACxB,WAAOA,GAAE,SAAS,aAAaA,GAAE,SAAS,WAAWA,GAAE,SAAS;AAAA,EAClE;AAEA,MAAMC,MAAK,KAAK;AAChB,MAAMC,OAAM,IAAID;AAChB,MAAME,SAAQD,OAAMD;AACpB,MAAMG,YAAW,OAAO;AACxB,MAAMC,eAAcJ,MAAK;AACzB,MAAMK,WAAUL,MAAK;AACrB,MAAMM,cAAaN,MAAK;AACxB,MAAMO,iBAAgBP,MAAK,IAAI;AAC/B,MAAMQ,SAAQ,KAAK;AACnB,MAAMC,QAAO,KAAK;AAClB,WAASC,SAAQC,QAAO;AACtB,UAAM,eAAe,KAAK,MAAMA,MAAK;AACrC,IAAAA,SAAQC,cAAaD,QAAO,cAAcA,SAAQ,GAAI,IAAI,eAAeA;AACzE,UAAM,YAAY,KAAK,IAAI,IAAI,KAAK,MAAMH,OAAMG,MAAK,CAAC,CAAC;AACvD,UAAM,WAAWA,SAAQ;AACzB,UAAM,eAAe,YAAY,IAAI,IAAI,YAAY,IAAI,IAAI,YAAY,IAAI,IAAI;AACjF,WAAO,eAAe;AAAA,EACxB;AACA,WAASE,YAAW,OAAO;AACzB,UAAM,SAAS,CAAC;AAChB,UAAM,OAAO,KAAK,KAAK,KAAK;AAC5B,QAAIC;AACJ,SAAKA,KAAI,GAAGA,KAAI,MAAMA,MAAK;AACzB,UAAI,QAAQA,OAAM,GAAG;AACnB,eAAO,KAAKA,EAAC;AACb,eAAO,KAAK,QAAQA,EAAC;AAAA,MACvB;AAAA,IACF;AACA,QAAI,UAAU,OAAO,IAAI;AACvB,aAAO,KAAK,IAAI;AAAA,IAClB;AACA,WAAO,KAAK,CAAClB,IAAGC,OAAMD,KAAIC,EAAC,EAAE,IAAI;AACjC,WAAO;AAAA,EACT;AACA,WAASkB,UAASC,IAAG;AACnB,WAAO,CAAC,MAAM,WAAWA,EAAC,CAAC,KAAK,SAASA,EAAC;AAAA,EAC5C;AACA,WAASJ,cAAaK,IAAGC,IAAG,SAAS;AACnC,WAAO,KAAK,IAAID,KAAIC,EAAC,IAAI;AAAA,EAC3B;AACA,WAASC,aAAYF,IAAG,SAAS;AAC/B,UAAM,UAAU,KAAK,MAAMA,EAAC;AAC5B,WAAS,UAAU,WAAYA,MAAQ,UAAU,WAAYA;AAAA,EAC/D;AACA,WAASG,oBAAmBC,QAAO,QAAQ,UAAU;AACnD,QAAIP,IAAG,MAAM;AACb,SAAKA,KAAI,GAAG,OAAOO,OAAM,QAAQP,KAAI,MAAMA,MAAK;AAC9C,cAAQO,OAAMP,EAAC,EAAE,QAAQ;AACzB,UAAI,CAAC,MAAM,KAAK,GAAG;AACjB,eAAO,MAAM,KAAK,IAAI,OAAO,KAAK,KAAK;AACvC,eAAO,MAAM,KAAK,IAAI,OAAO,KAAK,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AACA,WAASQ,WAAU,SAAS;AAC1B,WAAO,WAAWtB,MAAK;AAAA,EACzB;AACA,WAASuB,WAAUC,UAAS;AAC1B,WAAOA,YAAW,MAAMxB;AAAA,EAC1B;AACA,WAASyB,gBAAeR,IAAG;AACzB,QAAI,CAACS,gBAAeT,EAAC,GAAG;AACtB;AAAA,IACF;AACA,QAAIlB,KAAI;AACR,QAAI4B,KAAI;AACR,WAAO,KAAK,MAAMV,KAAIlB,EAAC,IAAIA,OAAMkB,IAAG;AAClC,MAAAlB,MAAK;AACL,MAAA4B;AAAA,IACF;AACA,WAAOA;AAAA,EACT;AACA,WAASC,mBAAkB,aAAa,YAAY;AAClD,UAAM,sBAAsB,WAAW,IAAI,YAAY;AACvD,UAAM,sBAAsB,WAAW,IAAI,YAAY;AACvD,UAAM,2BAA2B,KAAK,KAAK,sBAAsB,sBAAsB,sBAAsB,mBAAmB;AAChI,QAAI,QAAQ,KAAK,MAAM,qBAAqB,mBAAmB;AAC/D,QAAI,QAAS,OAAO5B,KAAK;AACvB,eAASC;AAAA,IACX;AACA,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF;AACA,WAAS4B,uBAAsB,KAAK,KAAK;AACvC,WAAO,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AAAA,EAC1E;AACA,WAASC,YAAWlC,IAAGC,IAAG;AACxB,YAAQD,KAAIC,KAAIK,UAASD,OAAMD;AAAA,EACjC;AACA,WAAS+B,iBAAgBnC,IAAG;AAC1B,YAAQA,KAAIK,OAAMA,QAAOA;AAAA,EAC3B;AACA,WAAS+B,eAAc,OAAOC,QAAOC,MAAK,uBAAuB;AAC/D,UAAMtC,KAAImC,iBAAgB,KAAK;AAC/B,UAAMI,KAAIJ,iBAAgBE,MAAK;AAC/B,UAAMlC,KAAIgC,iBAAgBG,IAAG;AAC7B,UAAM,eAAeH,iBAAgBI,KAAIvC,EAAC;AAC1C,UAAM,aAAamC,iBAAgBhC,KAAIH,EAAC;AACxC,UAAM,eAAemC,iBAAgBnC,KAAIuC,EAAC;AAC1C,UAAM,aAAaJ,iBAAgBnC,KAAIG,EAAC;AACxC,WAAOH,OAAMuC,MAAKvC,OAAMG,MAAM,yBAAyBoC,OAAMpC,MACvD,eAAe,cAAc,eAAe;AAAA,EACpD;AACA,WAASqC,aAAY,OAAOC,MAAKC,MAAK;AACpC,WAAO,KAAK,IAAID,MAAK,KAAK,IAAIC,MAAK,KAAK,CAAC;AAAA,EAC3C;AACA,WAASC,aAAY,OAAO;AAC1B,WAAOH,aAAY,OAAO,QAAQ,KAAK;AAAA,EACzC;AACA,WAASI,YAAW,OAAOP,QAAOC,MAAK,UAAU,MAAM;AACrD,WAAO,SAAS,KAAK,IAAID,QAAOC,IAAG,IAAI,WAAW,SAAS,KAAK,IAAID,QAAOC,IAAG,IAAI;AAAA,EACpF;AAEA,WAASO,SAAQ,OAAO,OAAO,KAAK;AAClC,UAAM,QAAQ,CAACC,WAAU,MAAMA,MAAK,IAAI;AACxC,QAAI,KAAK,MAAM,SAAS;AACxB,QAAI,KAAK;AACT,QAAI;AACJ,WAAO,KAAK,KAAK,GAAG;AAClB,YAAO,KAAK,MAAO;AACnB,UAAI,IAAI,GAAG,GAAG;AACZ,aAAK;AAAA,MACP,OAAO;AACL,aAAK;AAAA,MACP;AAAA,IACF;AACA,WAAO,EAAC,IAAI,GAAE;AAAA,EAChB;AACA,MAAMC,gBAAe,CAAC,OAAOvD,MAAK,OAAO,SACvCqD,SAAQ,OAAO,OAAO,OAClB,CAAAC,WAAS,MAAMA,MAAK,EAAEtD,IAAG,KAAK,QAC9B,CAAAsD,WAAS,MAAMA,MAAK,EAAEtD,IAAG,IAAI,KAAK;AACxC,MAAMwD,iBAAgB,CAAC,OAAOxD,MAAK,UACjCqD,SAAQ,OAAO,OAAO,CAAAC,WAAS,MAAMA,MAAK,EAAEtD,IAAG,KAAK,KAAK;AAC3D,WAASyD,gBAAe,QAAQR,MAAKC,MAAK;AACxC,QAAIL,SAAQ;AACZ,QAAIC,OAAM,OAAO;AACjB,WAAOD,SAAQC,QAAO,OAAOD,MAAK,IAAII,MAAK;AACzC,MAAAJ;AAAA,IACF;AACA,WAAOC,OAAMD,UAAS,OAAOC,OAAM,CAAC,IAAII,MAAK;AAC3C,MAAAJ;AAAA,IACF;AACA,WAAOD,SAAQ,KAAKC,OAAM,OAAO,SAC7B,OAAO,MAAMD,QAAOC,IAAG,IACvB;AAAA,EACN;AACA,MAAMY,eAAc,CAAC,QAAQ,OAAO,SAAS,UAAU,SAAS;AAChE,WAASC,mBAAkB1B,QAAO,UAAU;AAC1C,QAAIA,OAAM,UAAU;AAClB,MAAAA,OAAM,SAAS,UAAU,KAAK,QAAQ;AACtC;AAAA,IACF;AACA,WAAO,eAAeA,QAAO,YAAY;AAAA,MACvC,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,OAAO;AAAA,QACL,WAAW,CAAC,QAAQ;AAAA,MACtB;AAAA,IACF,CAAC;AACD,IAAAyB,aAAY,QAAQ,CAAC1D,SAAQ;AAC3B,YAAM,SAAS,YAAYI,aAAYJ,IAAG;AAC1C,YAAM,OAAOiC,OAAMjC,IAAG;AACtB,aAAO,eAAeiC,QAAOjC,MAAK;AAAA,QAChC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,SAAS,MAAM;AACb,gBAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AACjC,UAAAiC,OAAM,SAAS,UAAU,QAAQ,CAAC,WAAW;AAC3C,gBAAI,OAAO,OAAO,MAAM,MAAM,YAAY;AACxC,qBAAO,MAAM,EAAE,GAAG,IAAI;AAAA,YACxB;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,WAAS2B,qBAAoB3B,QAAO,UAAU;AAC5C,UAAM,OAAOA,OAAM;AACnB,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AACA,UAAM,YAAY,KAAK;AACvB,UAAMqB,SAAQ,UAAU,QAAQ,QAAQ;AACxC,QAAIA,WAAU,IAAI;AAChB,gBAAU,OAAOA,QAAO,CAAC;AAAA,IAC3B;AACA,QAAI,UAAU,SAAS,GAAG;AACxB;AAAA,IACF;AACA,IAAAI,aAAY,QAAQ,CAAC1D,SAAQ;AAC3B,aAAOiC,OAAMjC,IAAG;AAAA,IAClB,CAAC;AACD,WAAOiC,OAAM;AAAA,EACf;AACA,WAAS4B,cAAa,OAAO;AAC3B,UAAMC,OAAM,oBAAI,IAAI;AACpB,QAAIpC,IAAG;AACP,SAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,MAAAoC,KAAI,IAAI,MAAMpC,EAAC,CAAC;AAAA,IAClB;AACA,QAAIoC,KAAI,SAAS,MAAM;AACrB,aAAO;AAAA,IACT;AACA,WAAO,MAAM,KAAKA,IAAG;AAAA,EACvB;AAKA,MAAMC,oBAAoB,WAAW;AACnC,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,SAASC,WAAU;AACxB,eAAOA,UAAS;AAAA,MAClB;AAAA,IACF;AACA,WAAO,OAAO;AAAA,EAChB,EAAE;AACF,WAASC,WAAUC,KAAI,SAAS,UAAU;AACxC,UAAM,aAAa,aAAa,CAACC,UAAS,MAAM,UAAU,MAAM,KAAKA,KAAI;AACzE,QAAI,UAAU;AACd,QAAI,OAAO,CAAC;AACZ,WAAO,YAAY,MAAM;AACvB,aAAO,WAAW,IAAI;AACtB,UAAI,CAAC,SAAS;AACZ,kBAAU;AACV,QAAAJ,kBAAiB,KAAK,QAAQ,MAAM;AAClC,oBAAU;AACV,UAAAG,IAAG,MAAM,SAAS,IAAI;AAAA,QACxB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACA,WAASE,UAASF,KAAI,OAAO;AAC3B,QAAI;AACJ,WAAO,YAAY,MAAM;AACvB,UAAI,OAAO;AACT,qBAAa,OAAO;AACpB,kBAAU,WAAWA,KAAI,OAAO,IAAI;AAAA,MACtC,OAAO;AACL,QAAAA,IAAG,MAAM,MAAM,IAAI;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAMG,sBAAqB,CAAC,UAAU,UAAU,UAAU,SAAS,UAAU,QAAQ,UAAU;AAC/F,MAAMC,kBAAiB,CAAC,OAAOC,QAAOC,SAAQ,UAAU,UAAUD,SAAQ,UAAU,QAAQC,QAAOD,SAAQC,QAAO;AAClH,MAAMC,UAAS,CAAC,OAAOC,OAAMC,QAAO,QAAQ;AAC1C,UAAM,QAAQ,MAAM,SAAS;AAC7B,WAAO,UAAU,QAAQA,SAAQ,UAAU,YAAYD,QAAOC,UAAS,IAAID;AAAA,EAC7E;AACA,WAASE,kCAAiC,MAAM,QAAQ,oBAAoB;AAC1E,UAAM,aAAa,OAAO;AAC1B,QAAIL,SAAQ;AACZ,QAAI,QAAQ;AACZ,QAAI,KAAK,SAAS;AAChB,YAAM,EAAC,QAAQ,QAAO,IAAI;AAC1B,YAAM,OAAO,OAAO;AACpB,YAAM,EAAC,KAAAM,MAAK,KAAAC,MAAK,YAAY,WAAU,IAAI,OAAO,cAAc;AAChE,UAAI,YAAY;AACd,QAAAP,SAAQQ;AAAA,UAAY,KAAK;AAAA,YACvBC,cAAa,SAAS,OAAO,MAAMH,IAAG,EAAE;AAAA,YACxC,qBAAqB,aAAaG,cAAa,QAAQ,MAAM,OAAO,iBAAiBH,IAAG,CAAC,EAAE;AAAA,UAAE;AAAA,UAC/F;AAAA,UAAG,aAAa;AAAA,QAAC;AAAA,MACnB;AACA,UAAI,YAAY;AACd,gBAAQE;AAAA,UAAY,KAAK;AAAA,YACvBC,cAAa,SAAS,OAAO,MAAMF,MAAK,IAAI,EAAE,KAAK;AAAA,YACnD,qBAAqB,IAAIE,cAAa,QAAQ,MAAM,OAAO,iBAAiBF,IAAG,GAAG,IAAI,EAAE,KAAK;AAAA,UAAC;AAAA,UAChGP;AAAA,UAAO;AAAA,QAAU,IAAIA;AAAA,MACvB,OAAO;AACL,gBAAQ,aAAaA;AAAA,MACvB;AAAA,IACF;AACA,WAAO,EAAC,OAAAA,QAAO,MAAK;AAAA,EACtB;AACA,WAASU,qBAAoB,MAAM;AACjC,UAAM,EAAC,QAAQ,QAAQ,aAAY,IAAI;AACvC,UAAM,YAAY;AAAA,MAChB,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,IACf;AACA,QAAI,CAAC,cAAc;AACjB,WAAK,eAAe;AACpB,aAAO;AAAA,IACT;AACA,UAAM,UAAU,aAAa,SAAS,OAAO,OAC1C,aAAa,SAAS,OAAO,OAC7B,aAAa,SAAS,OAAO,OAC7B,aAAa,SAAS,OAAO;AAChC,WAAO,OAAO,cAAc,SAAS;AACrC,WAAO;AAAA,EACT;AAEA,MAAMC,UAAS,CAACC,OAAMA,OAAM,KAAKA,OAAM;AACvC,MAAMC,aAAY,CAACD,IAAGE,IAAGC,OAAM,EAAE,KAAK,IAAI,GAAG,MAAMH,MAAK,EAAE,IAAI,KAAK,KAAKA,KAAIE,MAAKE,OAAMD,EAAC;AACxF,MAAME,cAAa,CAACL,IAAGE,IAAGC,OAAM,KAAK,IAAI,GAAG,MAAMH,EAAC,IAAI,KAAK,KAAKA,KAAIE,MAAKE,OAAMD,EAAC,IAAI;AACrF,MAAMG,WAAU;AAAA,IACd,QAAQ,CAAAN,OAAKA;AAAA,IACb,YAAY,CAAAA,OAAKA,KAAIA;AAAA,IACrB,aAAa,CAAAA,OAAK,CAACA,MAAKA,KAAI;AAAA,IAC5B,eAAe,CAAAA,QAAOA,MAAK,OAAO,IAC9B,MAAMA,KAAIA,KACV,QAAS,EAAEA,MAAMA,KAAI,KAAK;AAAA,IAC9B,aAAa,CAAAA,OAAKA,KAAIA,KAAIA;AAAA,IAC1B,cAAc,CAAAA,QAAMA,MAAK,KAAKA,KAAIA,KAAI;AAAA,IACtC,gBAAgB,CAAAA,QAAOA,MAAK,OAAO,IAC/B,MAAMA,KAAIA,KAAIA,KACd,QAAQA,MAAK,KAAKA,KAAIA,KAAI;AAAA,IAC9B,aAAa,CAAAA,OAAKA,KAAIA,KAAIA,KAAIA;AAAA,IAC9B,cAAc,CAAAA,OAAK,GAAGA,MAAK,KAAKA,KAAIA,KAAIA,KAAI;AAAA,IAC5C,gBAAgB,CAAAA,QAAOA,MAAK,OAAO,IAC/B,MAAMA,KAAIA,KAAIA,KAAIA,KAClB,SAASA,MAAK,KAAKA,KAAIA,KAAIA,KAAI;AAAA,IACnC,aAAa,CAAAA,OAAKA,KAAIA,KAAIA,KAAIA,KAAIA;AAAA,IAClC,cAAc,CAAAA,QAAMA,MAAK,KAAKA,KAAIA,KAAIA,KAAIA,KAAI;AAAA,IAC9C,gBAAgB,CAAAA,QAAOA,MAAK,OAAO,IAC/B,MAAMA,KAAIA,KAAIA,KAAIA,KAAIA,KACtB,QAAQA,MAAK,KAAKA,KAAIA,KAAIA,KAAIA,KAAI;AAAA,IACtC,YAAY,CAAAA,OAAK,CAAC,KAAK,IAAIA,KAAIO,QAAO,IAAI;AAAA,IAC1C,aAAa,CAAAP,OAAK,KAAK,IAAIA,KAAIO,QAAO;AAAA,IACtC,eAAe,CAAAP,OAAK,QAAQ,KAAK,IAAIQ,MAAKR,EAAC,IAAI;AAAA,IAC/C,YAAY,CAAAA,OAAMA,OAAM,IAAK,IAAI,KAAK,IAAI,GAAG,MAAMA,KAAI,EAAE;AAAA,IACzD,aAAa,CAAAA,OAAMA,OAAM,IAAK,IAAI,CAAC,KAAK,IAAI,GAAG,MAAMA,EAAC,IAAI;AAAA,IAC1D,eAAe,CAAAA,OAAKD,QAAOC,EAAC,IAAIA,KAAIA,KAAI,MACpC,MAAM,KAAK,IAAI,GAAG,MAAMA,KAAI,IAAI,EAAE,IAClC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAOA,KAAI,IAAI,EAAE,IAAI;AAAA,IAC7C,YAAY,CAAAA,OAAMA,MAAK,IAAKA,KAAI,EAAE,KAAK,KAAK,IAAIA,KAAIA,EAAC,IAAI;AAAA,IACzD,aAAa,CAAAA,OAAK,KAAK,KAAK,KAAKA,MAAK,KAAKA,EAAC;AAAA,IAC5C,eAAe,CAAAA,QAAOA,MAAK,OAAO,IAC9B,QAAQ,KAAK,KAAK,IAAIA,KAAIA,EAAC,IAAI,KAC/B,OAAO,KAAK,KAAK,KAAKA,MAAK,KAAKA,EAAC,IAAI;AAAA,IACzC,eAAe,CAAAA,OAAKD,QAAOC,EAAC,IAAIA,KAAIC,WAAUD,IAAG,OAAO,GAAG;AAAA,IAC3D,gBAAgB,CAAAA,OAAKD,QAAOC,EAAC,IAAIA,KAAIK,YAAWL,IAAG,OAAO,GAAG;AAAA,IAC7D,iBAAiBA,IAAG;AAClB,YAAME,KAAI;AACV,YAAMC,KAAI;AACV,aAAOJ,QAAOC,EAAC,IAAIA,KACjBA,KAAI,MACA,MAAMC,WAAUD,KAAI,GAAGE,IAAGC,EAAC,IAC3B,MAAM,MAAME,YAAWL,KAAI,IAAI,GAAGE,IAAGC,EAAC;AAAA,IAC9C;AAAA,IACA,WAAWH,IAAG;AACZ,YAAME,KAAI;AACV,aAAOF,KAAIA,OAAME,KAAI,KAAKF,KAAIE;AAAA,IAChC;AAAA,IACA,YAAYF,IAAG;AACb,YAAME,KAAI;AACV,cAAQF,MAAK,KAAKA,OAAME,KAAI,KAAKF,KAAIE,MAAK;AAAA,IAC5C;AAAA,IACA,cAAcF,IAAG;AACf,UAAIE,KAAI;AACR,WAAKF,MAAK,OAAO,GAAG;AAClB,eAAO,OAAOA,KAAIA,QAAOE,MAAM,SAAU,KAAKF,KAAIE;AAAA,MACpD;AACA,aAAO,QAAQF,MAAK,KAAKA,QAAOE,MAAM,SAAU,KAAKF,KAAIE,MAAK;AAAA,IAChE;AAAA,IACA,cAAc,CAAAF,OAAK,IAAIM,SAAQ,cAAc,IAAIN,EAAC;AAAA,IAClD,cAAcA,IAAG;AACf,YAAMS,KAAI;AACV,YAAMC,KAAI;AACV,UAAIV,KAAK,IAAIU,IAAI;AACf,eAAOD,KAAIT,KAAIA;AAAA,MACjB;AACA,UAAIA,KAAK,IAAIU,IAAI;AACf,eAAOD,MAAKT,MAAM,MAAMU,MAAMV,KAAI;AAAA,MACpC;AACA,UAAIA,KAAK,MAAMU,IAAI;AACjB,eAAOD,MAAKT,MAAM,OAAOU,MAAMV,KAAI;AAAA,MACrC;AACA,aAAOS,MAAKT,MAAM,QAAQU,MAAMV,KAAI;AAAA,IACtC;AAAA,IACA,iBAAiB,CAAAA,OAAMA,KAAI,MACvBM,SAAQ,aAAaN,KAAI,CAAC,IAAI,MAC9BM,SAAQ,cAAcN,KAAI,IAAI,CAAC,IAAI,MAAM;AAAA,EAC/C;AAQA,WAASW,OAAMC,IAAG;AAChB,WAAOA,KAAI,MAAM;AAAA,EACnB;AACA,MAAMC,OAAM,CAACD,IAAGE,IAAGC,OAAM,KAAK,IAAI,KAAK,IAAIH,IAAGG,EAAC,GAAGD,EAAC;AACnD,WAASE,KAAIJ,IAAG;AACd,WAAOC,KAAIF,OAAMC,KAAI,IAAI,GAAG,GAAG,GAAG;AAAA,EACpC;AACA,WAASK,KAAIL,IAAG;AACd,WAAOC,KAAIF,OAAMC,KAAI,GAAG,GAAG,GAAG,GAAG;AAAA,EACnC;AACA,WAASM,KAAIN,IAAG;AACd,WAAOC,KAAIF,OAAMC,KAAI,IAAI,IAAI,KAAK,GAAG,CAAC;AAAA,EACxC;AACA,WAASO,KAAIP,IAAG;AACd,WAAOC,KAAIF,OAAMC,KAAI,GAAG,GAAG,GAAG,GAAG;AAAA,EACnC;AACA,MAAMQ,SAAQ,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,MAAMC,OAAM,CAAC,GAAG,kBAAkB;AAClC,MAAMC,MAAK,CAAAC,OAAKF,KAAIE,KAAI,EAAG;AAC3B,MAAMC,MAAK,CAAAD,OAAKF,MAAKE,KAAI,QAAS,CAAC,IAAIF,KAAIE,KAAI,EAAG;AAClD,MAAME,MAAK,CAAAF,QAAOA,KAAI,QAAS,OAAQA,KAAI;AAC3C,MAAMG,WAAU,CAAAd,OAAKa,IAAGb,GAAE,CAAC,KAAKa,IAAGb,GAAE,CAAC,KAAKa,IAAGb,GAAE,CAAC,KAAKa,IAAGb,GAAE,CAAC;AAC5D,WAASe,UAAS,KAAK;AACrB,QAAI,MAAM,IAAI;AACd,QAAI;AACJ,QAAI,IAAI,CAAC,MAAM,KAAK;AAClB,UAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,cAAM;AAAA,UACJ,GAAG,MAAMP,OAAM,IAAI,CAAC,CAAC,IAAI;AAAA,UACzB,GAAG,MAAMA,OAAM,IAAI,CAAC,CAAC,IAAI;AAAA,UACzB,GAAG,MAAMA,OAAM,IAAI,CAAC,CAAC,IAAI;AAAA,UACzB,GAAG,QAAQ,IAAIA,OAAM,IAAI,CAAC,CAAC,IAAI,KAAK;AAAA,QACtC;AAAA,MACF,WAAW,QAAQ,KAAK,QAAQ,GAAG;AACjC,cAAM;AAAA,UACJ,GAAGA,OAAM,IAAI,CAAC,CAAC,KAAK,IAAIA,OAAM,IAAI,CAAC,CAAC;AAAA,UACpC,GAAGA,OAAM,IAAI,CAAC,CAAC,KAAK,IAAIA,OAAM,IAAI,CAAC,CAAC;AAAA,UACpC,GAAGA,OAAM,IAAI,CAAC,CAAC,KAAK,IAAIA,OAAM,IAAI,CAAC,CAAC;AAAA,UACpC,GAAG,QAAQ,IAAKA,OAAM,IAAI,CAAC,CAAC,KAAK,IAAIA,OAAM,IAAI,CAAC,CAAC,IAAK;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,MAAMQ,SAAQ,CAACC,IAAGC,OAAMD,KAAI,MAAMC,GAAED,EAAC,IAAI;AACzC,WAASE,WAAUnB,IAAG;AACpB,QAAIkB,KAAIJ,SAAQd,EAAC,IAAIU,MAAKE;AAC1B,WAAOZ,KACH,MAAMkB,GAAElB,GAAE,CAAC,IAAIkB,GAAElB,GAAE,CAAC,IAAIkB,GAAElB,GAAE,CAAC,IAAIgB,OAAMhB,GAAE,GAAGkB,EAAC,IAC7C;AAAA,EACN;AACA,MAAME,UAAS;AACf,WAASC,UAASlB,IAAGb,IAAGY,IAAG;AACzB,UAAMe,KAAI3B,KAAI,KAAK,IAAIY,IAAG,IAAIA,EAAC;AAC/B,UAAMgB,KAAI,CAACI,IAAGC,MAAKD,KAAInB,KAAI,MAAM,OAAOD,KAAIe,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,WAASM,UAASrB,IAAGb,IAAGU,IAAG;AACzB,UAAMkB,KAAI,CAACI,IAAGC,MAAKD,KAAInB,KAAI,MAAM,MAAMH,KAAIA,KAAIV,KAAI,KAAK,IAAI,KAAK,IAAIiC,IAAG,IAAIA,IAAG,CAAC,GAAG,CAAC;AACpF,WAAO,CAACL,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,EAC1B;AACA,WAASO,UAAStB,IAAGuB,IAAGf,IAAG;AACzB,UAAMgB,OAAMN,UAASlB,IAAG,GAAG,GAAG;AAC9B,QAAIyB;AACJ,QAAIF,KAAIf,KAAI,GAAG;AACb,MAAAiB,KAAI,KAAKF,KAAIf;AACb,MAAAe,MAAKE;AACL,MAAAjB,MAAKiB;AAAA,IACP;AACA,SAAKA,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACtB,MAAAD,KAAIC,EAAC,KAAK,IAAIF,KAAIf;AAClB,MAAAgB,KAAIC,EAAC,KAAKF;AAAA,IACZ;AACA,WAAOC;AAAA,EACT;AACA,WAASE,UAASC,IAAGC,IAAGpB,IAAGb,IAAGf,MAAK;AACjC,QAAI+C,OAAM/C,MAAK;AACb,cAASgD,KAAIpB,MAAKb,MAAMiC,KAAIpB,KAAI,IAAI;AAAA,IACtC;AACA,QAAIoB,OAAMhD,MAAK;AACb,cAAQ4B,KAAImB,MAAKhC,KAAI;AAAA,IACvB;AACA,YAAQgC,KAAIC,MAAKjC,KAAI;AAAA,EACvB;AACA,WAASkC,SAAQhC,IAAG;AAClB,UAAMiC,SAAQ;AACd,UAAMH,KAAI9B,GAAE,IAAIiC;AAChB,UAAMF,KAAI/B,GAAE,IAAIiC;AAChB,UAAMtB,KAAIX,GAAE,IAAIiC;AAChB,UAAMlD,OAAM,KAAK,IAAI+C,IAAGC,IAAGpB,EAAC;AAC5B,UAAM7B,OAAM,KAAK,IAAIgD,IAAGC,IAAGpB,EAAC;AAC5B,UAAMT,MAAKnB,OAAMD,QAAO;AACxB,QAAIqB,IAAGb,IAAGQ;AACV,QAAIf,SAAQD,MAAK;AACf,MAAAgB,KAAIf,OAAMD;AACV,MAAAQ,KAAIY,KAAI,MAAMJ,MAAK,IAAIf,OAAMD,QAAOgB,MAAKf,OAAMD;AAC/C,MAAAqB,KAAI0B,UAASC,IAAGC,IAAGpB,IAAGb,IAAGf,IAAG;AAC5B,MAAAoB,KAAIA,KAAI,KAAK;AAAA,IACf;AACA,WAAO,CAACA,KAAI,GAAGb,MAAK,GAAGY,EAAC;AAAA,EAC1B;AACA,WAASgC,OAAMhB,IAAGD,IAAGN,IAAGwB,IAAG;AACzB,YACE,MAAM,QAAQlB,EAAC,IACXC,GAAED,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,IAClBC,GAAED,IAAGN,IAAGwB,EAAC,GACb,IAAI9B,IAAG;AAAA,EACX;AACA,WAAS+B,SAAQjC,IAAGb,IAAGY,IAAG;AACxB,WAAOgC,OAAMb,WAAUlB,IAAGb,IAAGY,EAAC;AAAA,EAChC;AACA,WAASmC,SAAQlC,IAAGuB,IAAGf,IAAG;AACxB,WAAOuB,OAAMT,WAAUtB,IAAGuB,IAAGf,EAAC;AAAA,EAChC;AACA,WAAS2B,SAAQnC,IAAGb,IAAGU,IAAG;AACxB,WAAOkC,OAAMV,WAAUrB,IAAGb,IAAGU,EAAC;AAAA,EAChC;AACA,WAASuC,KAAIpC,IAAG;AACd,YAAQA,KAAI,MAAM,OAAO;AAAA,EAC3B;AACA,WAASqC,UAAS,KAAK;AACrB,UAAM3C,KAAIuB,QAAO,KAAK,GAAG;AACzB,QAAIH,KAAI;AACR,QAAIjB;AACJ,QAAI,CAACH,IAAG;AACN;AAAA,IACF;AACA,QAAIA,GAAE,CAAC,MAAMG,IAAG;AACd,MAAAiB,KAAIpB,GAAE,CAAC,IAAIO,KAAI,CAACP,GAAE,CAAC,CAAC,IAAIQ,KAAI,CAACR,GAAE,CAAC,CAAC;AAAA,IACnC;AACA,UAAMM,KAAIoC,KAAI,CAAC1C,GAAE,CAAC,CAAC;AACnB,UAAM,KAAK,CAACA,GAAE,CAAC,IAAI;AACnB,UAAM4C,MAAK,CAAC5C,GAAE,CAAC,IAAI;AACnB,QAAIA,GAAE,CAAC,MAAM,OAAO;AAClB,MAAAG,KAAIqC,SAAQlC,IAAG,IAAIsC,GAAE;AAAA,IACvB,WAAW5C,GAAE,CAAC,MAAM,OAAO;AACzB,MAAAG,KAAIsC,SAAQnC,IAAG,IAAIsC,GAAE;AAAA,IACvB,OAAO;AACL,MAAAzC,KAAIoC,SAAQjC,IAAG,IAAIsC,GAAE;AAAA,IACvB;AACA,WAAO;AAAA,MACL,GAAGzC,GAAE,CAAC;AAAA,MACN,GAAGA,GAAE,CAAC;AAAA,MACN,GAAGA,GAAE,CAAC;AAAA,MACN,GAAGiB;AAAA,IACL;AAAA,EACF;AACA,WAASyB,QAAO1C,IAAG,KAAK;AACtB,QAAIG,KAAI6B,SAAQhC,EAAC;AACjB,IAAAG,GAAE,CAAC,IAAIoC,KAAIpC,GAAE,CAAC,IAAI,GAAG;AACrB,IAAAA,KAAIiC,SAAQjC,EAAC;AACb,IAAAH,GAAE,IAAIG,GAAE,CAAC;AACT,IAAAH,GAAE,IAAIG,GAAE,CAAC;AACT,IAAAH,GAAE,IAAIG,GAAE,CAAC;AAAA,EACX;AACA,WAASwC,WAAU3C,IAAG;AACpB,QAAI,CAACA,IAAG;AACN;AAAA,IACF;AACA,UAAMiB,KAAIe,SAAQhC,EAAC;AACnB,UAAMG,KAAIc,GAAE,CAAC;AACb,UAAM3B,KAAIiB,KAAIU,GAAE,CAAC,CAAC;AAClB,UAAMf,KAAIK,KAAIU,GAAE,CAAC,CAAC;AAClB,WAAOjB,GAAE,IAAI,MACT,QAAQG,OAAMb,QAAOY,QAAOI,KAAIN,GAAE,CAAC,OACnC,OAAOG,OAAMb,QAAOY;AAAA,EAC1B;AACA,MAAM0C,OAAM;AAAA,IACV,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,EACL;AACA,MAAMC,WAAU;AAAA,IACd,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,EACT;AACA,WAASC,UAAS;AAChB,UAAM,WAAW,CAAC;AAClB,UAAM,OAAO,OAAO,KAAKD,QAAO;AAChC,UAAM,QAAQ,OAAO,KAAKD,IAAG;AAC7B,QAAIhB,IAAGmB,IAAGxB,IAAG,IAAI;AACjB,SAAKK,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,WAAK,KAAK,KAAKA,EAAC;AAChB,WAAKmB,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACjC,QAAAxB,KAAI,MAAMwB,EAAC;AACX,aAAK,GAAG,QAAQxB,IAAGqB,KAAIrB,EAAC,CAAC;AAAA,MAC3B;AACA,MAAAA,KAAI,SAASsB,SAAQ,EAAE,GAAG,EAAE;AAC5B,eAAS,EAAE,IAAI,CAACtB,MAAK,KAAK,KAAMA,MAAK,IAAI,KAAMA,KAAI,GAAI;AAAA,IACzD;AACA,WAAO;AAAA,EACT;AACA,MAAIyB;AACJ,WAASC,WAAU,KAAK;AACtB,QAAI,CAACD,QAAO;AACV,MAAAA,SAAQF,QAAO;AACf,MAAAE,OAAM,cAAc,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACjC;AACA,UAAM/B,KAAI+B,OAAM,IAAI,YAAY,CAAC;AACjC,WAAO/B,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;AACA,MAAMiC,UAAS;AACf,WAASC,UAAS,KAAK;AACrB,UAAMtD,KAAIqD,QAAO,KAAK,GAAG;AACzB,QAAIjC,KAAI;AACR,QAAIa,IAAGC,IAAGpB;AACV,QAAI,CAACd,IAAG;AACN;AAAA,IACF;AACA,QAAIA,GAAE,CAAC,MAAMiC,IAAG;AACd,YAAM9B,KAAI,CAACH,GAAE,CAAC;AACd,MAAAoB,KAAIpB,GAAE,CAAC,IAAIO,KAAIJ,EAAC,IAAIC,KAAID,KAAI,KAAK,GAAG,GAAG;AAAA,IACzC;AACA,IAAA8B,KAAI,CAACjC,GAAE,CAAC;AACR,IAAAkC,KAAI,CAAClC,GAAE,CAAC;AACR,IAAAc,KAAI,CAACd,GAAE,CAAC;AACR,IAAAiC,KAAI,OAAOjC,GAAE,CAAC,IAAIO,KAAI0B,EAAC,IAAI7B,KAAI6B,IAAG,GAAG,GAAG;AACxC,IAAAC,KAAI,OAAOlC,GAAE,CAAC,IAAIO,KAAI2B,EAAC,IAAI9B,KAAI8B,IAAG,GAAG,GAAG;AACxC,IAAApB,KAAI,OAAOd,GAAE,CAAC,IAAIO,KAAIO,EAAC,IAAIV,KAAIU,IAAG,GAAG,GAAG;AACxC,WAAO;AAAA,MACL,GAAGmB;AAAA,MACH,GAAGC;AAAA,MACH,GAAGpB;AAAA,MACH,GAAGM;AAAA,IACL;AAAA,EACF;AACA,WAASmC,WAAUpD,IAAG;AACpB,WAAOA,OACLA,GAAE,IAAI,MACF,QAAQA,GAAE,MAAMA,GAAE,MAAMA,GAAE,MAAMM,KAAIN,GAAE,CAAC,OACvC,OAAOA,GAAE,MAAMA,GAAE,MAAMA,GAAE;AAAA,EAEjC;AACA,MAAMqD,MAAK,CAAArD,OAAKA,MAAK,WAAYA,KAAI,QAAQ,KAAK,IAAIA,IAAG,IAAM,GAAG,IAAI,QAAQ;AAC9E,MAAMsD,QAAO,CAAAtD,OAAKA,MAAK,UAAUA,KAAI,QAAQ,KAAK,KAAKA,KAAI,SAAS,OAAO,GAAG;AAC9E,WAASuD,aAAY,MAAM,MAAMnE,IAAG;AAClC,UAAM0C,KAAIwB,MAAKhD,KAAI,KAAK,CAAC,CAAC;AAC1B,UAAMyB,KAAIuB,MAAKhD,KAAI,KAAK,CAAC,CAAC;AAC1B,UAAMK,KAAI2C,MAAKhD,KAAI,KAAK,CAAC,CAAC;AAC1B,WAAO;AAAA,MACL,GAAGD,KAAIgD,IAAGvB,KAAI1C,MAAKkE,MAAKhD,KAAI,KAAK,CAAC,CAAC,IAAIwB,GAAE,CAAC;AAAA,MAC1C,GAAGzB,KAAIgD,IAAGtB,KAAI3C,MAAKkE,MAAKhD,KAAI,KAAK,CAAC,CAAC,IAAIyB,GAAE,CAAC;AAAA,MAC1C,GAAG1B,KAAIgD,IAAG1C,KAAIvB,MAAKkE,MAAKhD,KAAI,KAAK,CAAC,CAAC,IAAIK,GAAE,CAAC;AAAA,MAC1C,GAAG,KAAK,IAAIvB,MAAK,KAAK,IAAI,KAAK;AAAA,IACjC;AAAA,EACF;AACA,WAASoE,QAAOxD,IAAG4B,IAAG,OAAO;AAC3B,QAAI5B,IAAG;AACL,UAAI,MAAMgC,SAAQhC,EAAC;AACnB,UAAI4B,EAAC,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIA,EAAC,IAAI,IAAIA,EAAC,IAAI,OAAOA,OAAM,IAAI,MAAM,CAAC,CAAC;AACzE,YAAMQ,SAAQ,GAAG;AACjB,MAAApC,GAAE,IAAI,IAAI,CAAC;AACX,MAAAA,GAAE,IAAI,IAAI,CAAC;AACX,MAAAA,GAAE,IAAI,IAAI,CAAC;AAAA,IACb;AAAA,EACF;AACA,WAASyD,OAAMzD,IAAG,OAAO;AACvB,WAAOA,KAAI,OAAO,OAAO,SAAS,CAAC,GAAGA,EAAC,IAAIA;AAAA,EAC7C;AACA,WAAS0D,YAAW,OAAO;AACzB,QAAI1D,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,IAAIK,KAAI,MAAM,CAAC,CAAC;AAAA,QACpB;AAAA,MACF;AAAA,IACF,OAAO;AACL,MAAAL,KAAIyD,OAAM,OAAO,EAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAC,CAAC;AACzC,MAAAzD,GAAE,IAAIK,KAAIL,GAAE,CAAC;AAAA,IACf;AACA,WAAOA;AAAA,EACT;AACA,WAAS2D,eAAc,KAAK;AAC1B,QAAI,IAAI,OAAO,CAAC,MAAM,KAAK;AACzB,aAAOR,UAAS,GAAG;AAAA,IACrB;AACA,WAAOX,UAAS,GAAG;AAAA,EACrB;AACA,MAAMoB,SAAN,MAAY;AAAA,IACV,YAAY,OAAO;AACjB,UAAI,iBAAiBA,QAAO;AAC1B,eAAO;AAAA,MACT;AACA,YAAM,OAAO,OAAO;AACpB,UAAI5D;AACJ,UAAI,SAAS,UAAU;AACrB,QAAAA,KAAI0D,YAAW,KAAK;AAAA,MACtB,WAAW,SAAS,UAAU;AAC5B,QAAA1D,KAAIe,UAAS,KAAK,KAAKkC,WAAU,KAAK,KAAKU,eAAc,KAAK;AAAA,MAChE;AACA,WAAK,OAAO3D;AACZ,WAAK,SAAS,CAAC,CAACA;AAAA,IAClB;AAAA,IACA,IAAI,QAAQ;AACV,aAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,MAAM;AACR,UAAIA,KAAIyD,OAAM,KAAK,IAAI;AACvB,UAAIzD,IAAG;AACL,QAAAA,GAAE,IAAIM,KAAIN,GAAE,CAAC;AAAA,MACf;AACA,aAAOA;AAAA,IACT;AAAA,IACA,IAAI,IAAI,KAAK;AACX,WAAK,OAAO0D,YAAW,GAAG;AAAA,IAC5B;AAAA,IACA,YAAY;AACV,aAAO,KAAK,SAASN,WAAU,KAAK,IAAI,IAAI;AAAA,IAC9C;AAAA,IACA,YAAY;AACV,aAAO,KAAK,SAASjC,WAAU,KAAK,IAAI,IAAI;AAAA,IAC9C;AAAA,IACA,YAAY;AACV,aAAO,KAAK,SAASwB,WAAU,KAAK,IAAI,IAAI;AAAA,IAC9C;AAAA,IACA,IAAIkB,QAAO,QAAQ;AACjB,UAAIA,QAAO;AACT,cAAM,KAAK,KAAK;AAChB,cAAMC,MAAKD,OAAM;AACjB,YAAIE;AACJ,cAAMxE,KAAI,WAAWwE,MAAK,MAAM;AAChC,cAAMrC,KAAI,IAAInC,KAAI;AAClB,cAAM0B,KAAI,GAAG,IAAI6C,IAAG;AACpB,cAAM,OAAOpC,KAAIT,OAAM,KAAKS,MAAKA,KAAIT,OAAM,IAAIS,KAAIT,OAAM,KAAK;AAC9D,QAAA8C,MAAK,IAAI;AACT,WAAG,IAAI,MAAO,KAAK,GAAG,IAAIA,MAAKD,IAAG,IAAI;AACtC,WAAG,IAAI,MAAO,KAAK,GAAG,IAAIC,MAAKD,IAAG,IAAI;AACtC,WAAG,IAAI,MAAO,KAAK,GAAG,IAAIC,MAAKD,IAAG,IAAI;AACtC,WAAG,IAAIvE,KAAI,GAAG,KAAK,IAAIA,MAAKuE,IAAG;AAC/B,aAAK,MAAM;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAAA,IACA,YAAYD,QAAOzE,IAAG;AACpB,UAAIyE,QAAO;AACT,aAAK,OAAON,aAAY,KAAK,MAAMM,OAAM,MAAMzE,EAAC;AAAA,MAClD;AACA,aAAO;AAAA,IACT;AAAA,IACA,QAAQ;AACN,aAAO,IAAIwE,OAAM,KAAK,GAAG;AAAA,IAC3B;AAAA,IACA,MAAM3C,IAAG;AACP,WAAK,KAAK,IAAIZ,KAAIY,EAAC;AACnB,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,OAAO;AACb,YAAMU,OAAM,KAAK;AACjB,MAAAA,KAAI,KAAK,IAAI;AACb,aAAO;AAAA,IACT;AAAA,IACA,YAAY;AACV,YAAMA,OAAM,KAAK;AACjB,YAAM,MAAM5B,OAAM4B,KAAI,IAAI,MAAMA,KAAI,IAAI,OAAOA,KAAI,IAAI,IAAI;AAC3D,MAAAA,KAAI,IAAIA,KAAI,IAAIA,KAAI,IAAI;AACxB,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,OAAO;AACb,YAAMA,OAAM,KAAK;AACjB,MAAAA,KAAI,KAAK,IAAI;AACb,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,YAAM3B,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,MAAAwD,QAAO,KAAK,MAAM,GAAG,KAAK;AAC1B,aAAO;AAAA,IACT;AAAA,IACA,OAAO,OAAO;AACZ,MAAAA,QAAO,KAAK,MAAM,GAAG,CAAC,KAAK;AAC3B,aAAO;AAAA,IACT;AAAA,IACA,SAAS,OAAO;AACd,MAAAA,QAAO,KAAK,MAAM,GAAG,KAAK;AAC1B,aAAO;AAAA,IACT;AAAA,IACA,WAAW,OAAO;AAChB,MAAAA,QAAO,KAAK,MAAM,GAAG,CAAC,KAAK;AAC3B,aAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK;AACV,MAAAd,QAAO,KAAK,MAAM,GAAG;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,UAAU,OAAO;AACxB,WAAO,IAAIkB,OAAM,KAAK;AAAA,EACxB;AAEA,WAASI,qBAAoB,OAAO;AAClC,QAAI,SAAS,OAAO,UAAU,UAAU;AACtC,YAAM,OAAO,MAAM,SAAS;AAC5B,aAAO,SAAS,4BAA4B,SAAS;AAAA,IACvD;AACA,WAAO;AAAA,EACT;AACA,WAASH,OAAM,OAAO;AACpB,WAAOG,qBAAoB,KAAK,IAAI,QAAQ,UAAU,KAAK;AAAA,EAC7D;AACA,WAASC,eAAc,OAAO;AAC5B,WAAOD,qBAAoB,KAAK,IAC5B,QACA,UAAU,KAAK,EAAE,SAAS,GAAG,EAAE,OAAO,GAAG,EAAE,UAAU;AAAA,EAC3D;AAEA,MAAME,aAAY,uBAAO,OAAO,IAAI;AACpC,MAAMC,eAAc,uBAAO,OAAO,IAAI;AACtC,WAASC,YAAW,MAAMC,MAAK;AAC7B,QAAI,CAACA,MAAK;AACR,aAAO;AAAA,IACT;AACA,UAAM,OAAOA,KAAI,MAAM,GAAG;AAC1B,aAASzC,KAAI,GAAGN,KAAI,KAAK,QAAQM,KAAIN,IAAG,EAAEM,IAAG;AAC3C,YAAML,KAAI,KAAKK,EAAC;AAChB,aAAO,KAAKL,EAAC,MAAM,KAAKA,EAAC,IAAI,uBAAO,OAAO,IAAI;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AACA,WAAS+C,KAAIC,OAAM,OAAO,QAAQ;AAChC,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAOC,OAAMJ,YAAWG,OAAM,KAAK,GAAG,MAAM;AAAA,IAC9C;AACA,WAAOC,OAAMJ,YAAWG,OAAM,EAAE,GAAG,KAAK;AAAA,EAC1C;AACA,MAAME,YAAN,MAAe;AAAA,IACb,YAAYC,eAAc;AACxB,WAAK,YAAY;AACjB,WAAK,kBAAkB;AACvB,WAAK,cAAc;AACnB,WAAK,QAAQ;AACb,WAAK,WAAW,CAAC;AACjB,WAAK,mBAAmB,CAAC,YAAY,QAAQ,MAAM,SAAS,oBAAoB;AAChF,WAAK,WAAW,CAAC;AACjB,WAAK,SAAS;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,WAAK,OAAO;AAAA,QACV,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AACA,WAAK,QAAQ,CAAC;AACd,WAAK,uBAAuB,CAAC,KAAKC,aAAYV,eAAcU,SAAQ,eAAe;AACnF,WAAK,mBAAmB,CAAC,KAAKA,aAAYV,eAAcU,SAAQ,WAAW;AAC3E,WAAK,aAAa,CAAC,KAAKA,aAAYV,eAAcU,SAAQ,KAAK;AAC/D,WAAK,YAAY;AACjB,WAAK,cAAc;AAAA,QACjB,MAAM;AAAA,QACN,WAAW;AAAA,QACX,kBAAkB;AAAA,MACpB;AACA,WAAK,sBAAsB;AAC3B,WAAK,UAAU;AACf,WAAK,UAAU;AACf,WAAK,UAAU;AACf,WAAK,UAAU,CAAC;AAChB,WAAK,aAAa;AAClB,WAAK,QAAQ;AACb,WAAK,SAAS,CAAC;AACf,WAAK,WAAW;AAChB,WAAK,0BAA0B;AAC/B,WAAK,SAASD,aAAY;AAAA,IAC5B;AAAA,IACA,IAAI,OAAO,QAAQ;AACjB,aAAOJ,KAAI,MAAM,OAAO,MAAM;AAAA,IAChC;AAAA,IACA,IAAI,OAAO;AACT,aAAOF,YAAW,MAAM,KAAK;AAAA,IAC/B;AAAA,IACA,SAAS,OAAO,QAAQ;AACtB,aAAOE,KAAIH,cAAa,OAAO,MAAM;AAAA,IACvC;AAAA,IACA,SAAS,OAAO,QAAQ;AACtB,aAAOG,KAAIJ,YAAW,OAAO,MAAM;AAAA,IACrC;AAAA,IACA,MAAM,OAAOU,OAAM,aAAa,YAAY;AAC1C,YAAM,cAAcR,YAAW,MAAM,KAAK;AAC1C,YAAM,oBAAoBA,YAAW,MAAM,WAAW;AACtD,YAAM,cAAc,MAAMQ;AAC1B,aAAO,iBAAiB,aAAa;AAAA,QACnC,CAAC,WAAW,GAAG;AAAA,UACb,OAAO,YAAYA,KAAI;AAAA,UACvB,UAAU;AAAA,QACZ;AAAA,QACA,CAACA,KAAI,GAAG;AAAA,UACN,YAAY;AAAA,UACZ,MAAM;AACJ,kBAAM,QAAQ,KAAK,WAAW;AAC9B,kBAAM,SAAS,kBAAkB,UAAU;AAC3C,gBAAIC,UAAS,KAAK,GAAG;AACnB,qBAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,KAAK;AAAA,YACxC;AACA,mBAAOC,gBAAe,OAAO,MAAM;AAAA,UACrC;AAAA,UACA,IAAI,OAAO;AACT,iBAAK,WAAW,IAAI;AAAA,UACtB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,MAAIC,YAAW,IAAIN,UAAS;AAAA,IAC1B,aAAa,CAACG,UAAS,CAACA,MAAK,WAAW,IAAI;AAAA,IAC5C,YAAY,CAACA,UAASA,UAAS;AAAA,IAC/B,OAAO;AAAA,MACL,WAAW;AAAA,IACb;AAAA,IACA,aAAa;AAAA,MACX,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF,CAAC;AAED,WAASI,cAAa,MAAM;AAC1B,QAAI,CAAC,QAAQC,eAAc,KAAK,IAAI,KAAKA,eAAc,KAAK,MAAM,GAAG;AACnE,aAAO;AAAA,IACT;AACA,YAAQ,KAAK,QAAQ,KAAK,QAAQ,MAAM,OACrC,KAAK,SAAS,KAAK,SAAS,MAAM,MACnC,KAAK,OAAO,QACZ,KAAK;AAAA,EACT;AACA,WAASC,cAAa,KAAKC,OAAM,IAAI,SAAS,QAAQ;AACpD,QAAI,YAAYA,MAAK,MAAM;AAC3B,QAAI,CAAC,WAAW;AACd,kBAAYA,MAAK,MAAM,IAAI,IAAI,YAAY,MAAM,EAAE;AACnD,SAAG,KAAK,MAAM;AAAA,IAChB;AACA,QAAI,YAAY,SAAS;AACvB,gBAAU;AAAA,IACZ;AACA,WAAO;AAAA,EACT;AACA,WAASC,cAAa,KAAK,MAAM,eAAeC,QAAO;AACrD,IAAAA,SAAQA,UAAS,CAAC;AAClB,QAAIF,QAAOE,OAAM,OAAOA,OAAM,QAAQ,CAAC;AACvC,QAAI,KAAKA,OAAM,iBAAiBA,OAAM,kBAAkB,CAAC;AACzD,QAAIA,OAAM,SAAS,MAAM;AACvB,MAAAF,QAAOE,OAAM,OAAO,CAAC;AACrB,WAAKA,OAAM,iBAAiB,CAAC;AAC7B,MAAAA,OAAM,OAAO;AAAA,IACf;AACA,QAAI,KAAK;AACT,QAAI,OAAO;AACX,QAAI,UAAU;AACd,UAAM,OAAO,cAAc;AAC3B,QAAIzD,IAAGmB,IAAG,MAAM,OAAO;AACvB,SAAKnB,KAAI,GAAGA,KAAI,MAAMA,MAAK;AACzB,cAAQ,cAAcA,EAAC;AACvB,UAAI,UAAU,UAAa,UAAU,QAAQ0D,SAAQ,KAAK,MAAM,MAAM;AACpE,kBAAUJ,cAAa,KAAKC,OAAM,IAAI,SAAS,KAAK;AAAA,MACtD,WAAWG,SAAQ,KAAK,GAAG;AACzB,aAAKvC,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAMA,MAAK;AAC9C,wBAAc,MAAMA,EAAC;AACrB,cAAI,gBAAgB,UAAa,gBAAgB,QAAQ,CAACuC,SAAQ,WAAW,GAAG;AAC9E,sBAAUJ,cAAa,KAAKC,OAAM,IAAI,SAAS,WAAW;AAAA,UAC5D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,QAAQ;AACZ,UAAM,QAAQ,GAAG,SAAS;AAC1B,QAAI,QAAQ,cAAc,QAAQ;AAChC,WAAKvD,KAAI,GAAGA,KAAI,OAAOA,MAAK;AAC1B,eAAOuD,MAAK,GAAGvD,EAAC,CAAC;AAAA,MACnB;AACA,SAAG,OAAO,GAAG,KAAK;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AACA,WAAS2D,aAAY,OAAO,OAAOC,QAAO;AACxC,UAAM,mBAAmB,MAAM;AAC/B,UAAM,YAAYA,WAAU,IAAI,KAAK,IAAIA,SAAQ,GAAG,GAAG,IAAI;AAC3D,WAAO,KAAK,OAAO,QAAQ,aAAa,gBAAgB,IAAI,mBAAmB;AAAA,EACjF;AACA,WAASC,aAAY,QAAQ,KAAK;AAChC,UAAM,OAAO,OAAO,WAAW,IAAI;AACnC,QAAI,KAAK;AACT,QAAI,eAAe;AACnB,QAAI,UAAU,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAC/C,QAAI,QAAQ;AAAA,EACd;AACA,WAASC,WAAU,KAAKf,UAASgB,IAAGC,IAAG;AACrC,IAAAC,iBAAgB,KAAKlB,UAASgB,IAAGC,IAAG,IAAI;AAAA,EAC1C;AACA,WAASC,iBAAgB,KAAKlB,UAASgB,IAAGC,IAAGlE,IAAG;AAC9C,QAAI,MAAM,SAAS,SAASoE,OAAM,cAAcN;AAChD,UAAM,QAAQb,SAAQ;AACtB,UAAM,WAAWA,SAAQ;AACzB,UAAM,SAASA,SAAQ;AACvB,QAAI,OAAO,YAAY,KAAKoB;AAC5B,QAAI,SAAS,OAAO,UAAU,UAAU;AACtC,aAAO,MAAM,SAAS;AACtB,UAAI,SAAS,+BAA+B,SAAS,8BAA8B;AACjF,YAAI,KAAK;AACT,YAAI,UAAUJ,IAAGC,EAAC;AAClB,YAAI,OAAO,GAAG;AACd,YAAI,UAAU,OAAO,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,MAAM;AACnF,YAAI,QAAQ;AACZ;AAAA,MACF;AAAA,IACF;AACA,QAAI,MAAM,MAAM,KAAK,UAAU,GAAG;AAChC;AAAA,IACF;AACA,QAAI,UAAU;AACd,YAAQ,OAAO;AAAA,MACf;AACE,YAAIlE,IAAG;AACL,cAAI,QAAQiE,IAAGC,IAAGlE,KAAI,GAAG,QAAQ,GAAG,GAAGlC,IAAG;AAAA,QAC5C,OAAO;AACL,cAAI,IAAImG,IAAGC,IAAG,QAAQ,GAAGpG,IAAG;AAAA,QAC9B;AACA,YAAI,UAAU;AACd;AAAA,MACF,KAAK;AACH,YAAI,OAAOmG,KAAI,KAAK,IAAI,GAAG,IAAI,QAAQC,KAAI,KAAK,IAAI,GAAG,IAAI,MAAM;AACjE,eAAOI;AACP,YAAI,OAAOL,KAAI,KAAK,IAAI,GAAG,IAAI,QAAQC,KAAI,KAAK,IAAI,GAAG,IAAI,MAAM;AACjE,eAAOI;AACP,YAAI,OAAOL,KAAI,KAAK,IAAI,GAAG,IAAI,QAAQC,KAAI,KAAK,IAAI,GAAG,IAAI,MAAM;AACjE,YAAI,UAAU;AACd;AAAA,MACF,KAAK;AACH,uBAAe,SAAS;AACxB,QAAAE,QAAO,SAAS;AAChB,kBAAU,KAAK,IAAI,MAAMG,WAAU,IAAIH;AACvC,kBAAU,KAAK,IAAI,MAAMG,WAAU,IAAIH;AACvC,YAAI,IAAIH,KAAI,SAASC,KAAI,SAAS,cAAc,MAAMhG,KAAI,MAAMD,QAAO;AACvE,YAAI,IAAIgG,KAAI,SAASC,KAAI,SAAS,cAAc,MAAMjG,UAAS,GAAG;AAClE,YAAI,IAAIgG,KAAI,SAASC,KAAI,SAAS,cAAc,KAAK,MAAMjG,QAAO;AAClE,YAAI,IAAIgG,KAAI,SAASC,KAAI,SAAS,cAAc,MAAMjG,UAAS,MAAMC,GAAE;AACvE,YAAI,UAAU;AACd;AAAA,MACF,KAAK;AACH,YAAI,CAAC,UAAU;AACb,UAAAkG,QAAO,KAAK,UAAU;AACtB,UAAAN,SAAQ9D,KAAIA,KAAI,IAAIoE;AACpB,cAAI,KAAKH,KAAIH,QAAOI,KAAIE,OAAM,IAAIN,QAAO,IAAIM,KAAI;AACjD;AAAA,QACF;AACA,eAAOG;AAAA,MACT,KAAK;AACH,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,YAAI,OAAON,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,UAAU;AACd;AAAA,MACF,KAAK;AACH,eAAOK;AAAA,MACT,KAAK;AACH,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,YAAI,OAAON,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC;AAAA,MACF,KAAK;AACH,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,eAAOK;AACP,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,YAAI,OAAON,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC;AAAA,MACF,KAAK;AACH,kBAAUlE,KAAIA,KAAI,IAAI,KAAK,IAAI,GAAG,IAAI;AACtC,kBAAU,KAAK,IAAI,GAAG,IAAI;AAC1B,YAAI,OAAOiE,KAAI,SAASC,KAAI,OAAO;AACnC,YAAI,OAAOD,KAAI,SAASC,KAAI,OAAO;AACnC;AAAA,MACF,KAAK;AACH,YAAI,OAAOD,IAAGC,EAAC;AACf,YAAI,OAAOD,KAAI,KAAK,IAAI,GAAG,IAAI,QAAQC,KAAI,KAAK,IAAI,GAAG,IAAI,MAAM;AACjE;AAAA,IACF;AACA,QAAI,KAAK;AACT,QAAIjB,SAAQ,cAAc,GAAG;AAC3B,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AACA,WAASuB,gBAAeC,QAAO,MAAM,QAAQ;AAC3C,aAAS,UAAU;AACnB,WAAO,CAAC,QAASA,UAASA,OAAM,IAAI,KAAK,OAAO,UAAUA,OAAM,IAAI,KAAK,QAAQ,UACjFA,OAAM,IAAI,KAAK,MAAM,UAAUA,OAAM,IAAI,KAAK,SAAS;AAAA,EACzD;AACA,WAASC,UAAS,KAAK,MAAM;AAC3B,QAAI,KAAK;AACT,QAAI,UAAU;AACd,QAAI,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,QAAQ,KAAK,MAAM,KAAK,SAAS,KAAK,GAAG;AAC5E,QAAI,KAAK;AAAA,EACX;AACA,WAASC,YAAW,KAAK;AACvB,QAAI,QAAQ;AAAA,EACd;AACA,WAASC,gBAAe,KAAK,UAAU,QAAQC,OAAM,MAAM;AACzD,QAAI,CAAC,UAAU;AACb,aAAO,IAAI,OAAO,OAAO,GAAG,OAAO,CAAC;AAAA,IACtC;AACA,QAAI,SAAS,UAAU;AACrB,YAAM,YAAY,SAAS,IAAI,OAAO,KAAK;AAC3C,UAAI,OAAO,UAAU,SAAS,CAAC;AAC/B,UAAI,OAAO,UAAU,OAAO,CAAC;AAAA,IAC/B,WAAW,SAAS,YAAY,CAAC,CAACA,OAAM;AACtC,UAAI,OAAO,SAAS,GAAG,OAAO,CAAC;AAAA,IACjC,OAAO;AACL,UAAI,OAAO,OAAO,GAAG,SAAS,CAAC;AAAA,IACjC;AACA,QAAI,OAAO,OAAO,GAAG,OAAO,CAAC;AAAA,EAC/B;AACA,WAASC,gBAAe,KAAK,UAAU,QAAQD,OAAM;AACnD,QAAI,CAAC,UAAU;AACb,aAAO,IAAI,OAAO,OAAO,GAAG,OAAO,CAAC;AAAA,IACtC;AACA,QAAI;AAAA,MACFA,QAAO,SAAS,OAAO,SAAS;AAAA,MAChCA,QAAO,SAAS,OAAO,SAAS;AAAA,MAChCA,QAAO,OAAO,OAAO,OAAO;AAAA,MAC5BA,QAAO,OAAO,OAAO,OAAO;AAAA,MAC5B,OAAO;AAAA,MACP,OAAO;AAAA,IAAC;AAAA,EACZ;AACA,WAASE,YAAW,KAAK,MAAMd,IAAGC,IAAG,MAAM,OAAO,CAAC,GAAG;AACpD,UAAM,QAAQN,SAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAC1C,UAAM,SAAS,KAAK,cAAc,KAAK,KAAK,gBAAgB;AAC5D,QAAI1D,IAAG;AACP,QAAI,KAAK;AACT,QAAI,OAAO,KAAK;AAChB,IAAA8E,eAAc,KAAK,IAAI;AACvB,SAAK9E,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACjC,aAAO,MAAMA,EAAC;AACd,UAAI,QAAQ;AACV,YAAI,KAAK,aAAa;AACpB,cAAI,cAAc,KAAK;AAAA,QACzB;AACA,YAAI,CAACqD,eAAc,KAAK,WAAW,GAAG;AACpC,cAAI,YAAY,KAAK;AAAA,QACvB;AACA,YAAI,WAAW,MAAMU,IAAGC,IAAG,KAAK,QAAQ;AAAA,MAC1C;AACA,UAAI,SAAS,MAAMD,IAAGC,IAAG,KAAK,QAAQ;AACtC,MAAAe,cAAa,KAAKhB,IAAGC,IAAG,MAAM,IAAI;AAClC,MAAAA,MAAK,KAAK;AAAA,IACZ;AACA,QAAI,QAAQ;AAAA,EACd;AACA,WAASc,eAAc,KAAK,MAAM;AAChC,QAAI,KAAK,aAAa;AACpB,UAAI,UAAU,KAAK,YAAY,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;AAAA,IACxD;AACA,QAAI,CAACzB,eAAc,KAAK,QAAQ,GAAG;AACjC,UAAI,OAAO,KAAK,QAAQ;AAAA,IAC1B;AACA,QAAI,KAAK,OAAO;AACd,UAAI,YAAY,KAAK;AAAA,IACvB;AACA,QAAI,KAAK,WAAW;AAClB,UAAI,YAAY,KAAK;AAAA,IACvB;AACA,QAAI,KAAK,cAAc;AACrB,UAAI,eAAe,KAAK;AAAA,IAC1B;AAAA,EACF;AACA,WAAS0B,cAAa,KAAKhB,IAAGC,IAAG,MAAM,MAAM;AAC3C,QAAI,KAAK,iBAAiB,KAAK,WAAW;AACxC,YAAM,UAAU,IAAI,YAAY,IAAI;AACpC,YAAMjH,QAAOgH,KAAI,QAAQ;AACzB,YAAM/G,SAAQ+G,KAAI,QAAQ;AAC1B,YAAMiB,OAAMhB,KAAI,QAAQ;AACxB,YAAMiB,UAASjB,KAAI,QAAQ;AAC3B,YAAM,cAAc,KAAK,iBAAiBgB,OAAMC,WAAU,IAAIA;AAC9D,UAAI,cAAc,IAAI;AACtB,UAAI,UAAU;AACd,UAAI,YAAY,KAAK,mBAAmB;AACxC,UAAI,OAAOlI,OAAM,WAAW;AAC5B,UAAI,OAAOC,QAAO,WAAW;AAC7B,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AACA,WAASkI,oBAAmB,KAAK,MAAM;AACrC,UAAM,EAAC,GAAAnB,IAAG,GAAAC,IAAG,GAAAlE,IAAG,GAAAvB,IAAG,OAAM,IAAI;AAC7B,QAAI,IAAIwF,KAAI,OAAO,SAASC,KAAI,OAAO,SAAS,OAAO,SAAS,CAACjG,UAASC,KAAI,IAAI;AAClF,QAAI,OAAO+F,IAAGC,KAAIzF,KAAI,OAAO,UAAU;AACvC,QAAI,IAAIwF,KAAI,OAAO,YAAYC,KAAIzF,KAAI,OAAO,YAAY,OAAO,YAAYP,KAAID,UAAS,IAAI;AAC9F,QAAI,OAAOgG,KAAIjE,KAAI,OAAO,aAAakE,KAAIzF,EAAC;AAC5C,QAAI,IAAIwF,KAAIjE,KAAI,OAAO,aAAakE,KAAIzF,KAAI,OAAO,aAAa,OAAO,aAAaR,UAAS,GAAG,IAAI;AACpG,QAAI,OAAOgG,KAAIjE,IAAGkE,KAAI,OAAO,QAAQ;AACrC,QAAI,IAAID,KAAIjE,KAAI,OAAO,UAAUkE,KAAI,OAAO,UAAU,OAAO,UAAU,GAAG,CAACjG,UAAS,IAAI;AACxF,QAAI,OAAOgG,KAAI,OAAO,SAASC,EAAC;AAAA,EAClC;AAEA,MAAMmB,eAAc,IAAI,OAAO,sCAAsC;AACrE,MAAMC,cAAa,IAAI,OAAO,uEAAuE;AACrG,WAASC,cAAa,OAAOnB,OAAM;AACjC,UAAMoB,YAAW,KAAK,OAAO,MAAMH,YAAW;AAC9C,QAAI,CAACG,YAAWA,SAAQ,CAAC,MAAM,UAAU;AACvC,aAAOpB,QAAO;AAAA,IAChB;AACA,YAAQ,CAACoB,SAAQ,CAAC;AAClB,YAAQA,SAAQ,CAAC,GAAG;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,iBAAS;AACT;AAAA,IACF;AACA,WAAOpB,QAAO;AAAA,EAChB;AACA,MAAMqB,gBAAe,CAAAnH,OAAK,CAACA,MAAK;AAChC,WAASoH,mBAAkB,OAAO,OAAO;AACvC,UAAM,MAAM,CAAC;AACb,UAAM,WAAWvC,UAAS,KAAK;AAC/B,UAAM,OAAO,WAAW,OAAO,KAAK,KAAK,IAAI;AAC7C,UAAMwC,QAAOxC,UAAS,KAAK,IACvB,WACE,UAAQC,gBAAe,MAAM,IAAI,GAAG,MAAM,MAAM,IAAI,CAAC,CAAC,IACtD,UAAQ,MAAM,IAAI,IACpB,MAAM;AACV,eAAW,QAAQ,MAAM;AACvB,UAAI,IAAI,IAAIqC,cAAaE,MAAK,IAAI,CAAC;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AACA,WAASC,QAAO,OAAO;AACrB,WAAOF,mBAAkB,OAAO,EAAC,KAAK,KAAK,OAAO,KAAK,QAAQ,KAAK,MAAM,IAAG,CAAC;AAAA,EAChF;AACA,WAASG,eAAc,OAAO;AAC5B,WAAOH,mBAAkB,OAAO,CAAC,WAAW,YAAY,cAAc,aAAa,CAAC;AAAA,EACtF;AACA,WAASI,WAAU,OAAO;AACxB,UAAM,MAAMF,QAAO,KAAK;AACxB,QAAI,QAAQ,IAAI,OAAO,IAAI;AAC3B,QAAI,SAAS,IAAI,MAAM,IAAI;AAC3B,WAAO;AAAA,EACT;AACA,WAASG,QAAO9C,UAAS,UAAU;AACjC,IAAAA,WAAUA,YAAW,CAAC;AACtB,eAAW,YAAYI,UAAS;AAChC,QAAIe,QAAOhB,gBAAeH,SAAQ,MAAM,SAAS,IAAI;AACrD,QAAI,OAAOmB,UAAS,UAAU;AAC5B,MAAAA,QAAO,SAASA,OAAM,EAAE;AAAA,IAC1B;AACA,QAAI,QAAQhB,gBAAeH,SAAQ,OAAO,SAAS,KAAK;AACxD,QAAI,SAAS,EAAE,KAAK,OAAO,MAAMqC,WAAU,GAAG;AAC5C,cAAQ,KAAK,oCAAoC,QAAQ,GAAG;AAC5D,cAAQ;AAAA,IACV;AACA,UAAM,OAAO;AAAA,MACX,QAAQlC,gBAAeH,SAAQ,QAAQ,SAAS,MAAM;AAAA,MACtD,YAAYsC,cAAanC,gBAAeH,SAAQ,YAAY,SAAS,UAAU,GAAGmB,KAAI;AAAA,MACtF,MAAAA;AAAA,MACA;AAAA,MACA,QAAQhB,gBAAeH,SAAQ,QAAQ,SAAS,MAAM;AAAA,MACtD,QAAQ;AAAA,IACV;AACA,SAAK,SAASK,cAAa,IAAI;AAC/B,WAAO;AAAA,EACT;AACA,WAAS0C,SAAQ,QAAQ,SAASC,QAAO,MAAM;AAC7C,QAAI,YAAY;AAChB,QAAI/F,IAAG,MAAM;AACb,SAAKA,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,cAAQ,OAAOA,EAAC;AAChB,UAAI,UAAU,QAAW;AACvB;AAAA,MACF;AACA,UAAI,YAAY,UAAa,OAAO,UAAU,YAAY;AACxD,gBAAQ,MAAM,OAAO;AACrB,oBAAY;AAAA,MACd;AACA,UAAI+F,WAAU,UAAarC,SAAQ,KAAK,GAAG;AACzC,gBAAQ,MAAMqC,SAAQ,MAAM,MAAM;AAClC,oBAAY;AAAA,MACd;AACA,UAAI,UAAU,QAAW;AACvB,YAAI,QAAQ,CAAC,WAAW;AACtB,eAAK,YAAY;AAAA,QACnB;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,WAASC,WAAU,QAAQ,OAAO,aAAa;AAC7C,UAAM,EAAC,KAAA9I,MAAK,KAAAC,KAAG,IAAI;AACnB,UAAM,SAAS8I,aAAY,QAAQ9I,OAAMD,QAAO,CAAC;AACjD,UAAM,WAAW,CAAC,OAAOgJ,SAAQ,eAAe,UAAU,IAAI,IAAI,QAAQA;AAC1E,WAAO;AAAA,MACL,KAAK,SAAShJ,MAAK,CAAC,KAAK,IAAI,MAAM,CAAC;AAAA,MACpC,KAAK,SAASC,MAAK,MAAM;AAAA,IAC3B;AAAA,EACF;AACA,WAASgJ,eAAc,eAAe,SAAS;AAC7C,WAAO,OAAO,OAAO,OAAO,OAAO,aAAa,GAAG,OAAO;AAAA,EAC5D;AAEA,WAASC,iBAAgB,QAAQ,WAAW,CAAC,EAAE,GAAG,aAAa,QAAQ,UAAU,YAAY,MAAM,OAAO,CAAC,GAAG;AAC5G,QAAI,CAACC,SAAQ,QAAQ,GAAG;AACtB,iBAAWC,UAAS,aAAa,MAAM;AAAA,IACzC;AACA,UAAM7C,SAAQ;AAAA,MACZ,CAAC,OAAO,WAAW,GAAG;AAAA,MACtB,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,UAAU,CAAC,UAAU2C,iBAAgB,CAAC,OAAO,GAAG,MAAM,GAAG,UAAU,YAAY,QAAQ;AAAA,IACzF;AACA,WAAO,IAAI,MAAM3C,QAAO;AAAA,MACtB,eAAe,QAAQ,MAAM;AAC3B,eAAO,OAAO,IAAI;AAClB,eAAO,OAAO;AACd,eAAO,OAAO,CAAC,EAAE,IAAI;AACrB,eAAO;AAAA,MACT;AAAA,MACA,IAAI,QAAQ,MAAM;AAChB,eAAO8C;AAAA,UAAQ;AAAA,UAAQ;AAAA,UACrB,MAAMC,sBAAqB,MAAM,UAAU,QAAQ,MAAM;AAAA,QAAC;AAAA,MAC9D;AAAA,MACA,yBAAyB,QAAQ,MAAM;AACrC,eAAO,QAAQ,yBAAyB,OAAO,QAAQ,CAAC,GAAG,IAAI;AAAA,MACjE;AAAA,MACA,iBAAiB;AACf,eAAO,QAAQ,eAAe,OAAO,CAAC,CAAC;AAAA,MACzC;AAAA,MACA,IAAI,QAAQ,MAAM;AAChB,eAAOC,sBAAqB,MAAM,EAAE,SAAS,IAAI;AAAA,MACnD;AAAA,MACA,QAAQ,QAAQ;AACd,eAAOA,sBAAqB,MAAM;AAAA,MACpC;AAAA,MACA,IAAI,QAAQ,MAAM,OAAO;AACvB,cAAM,UAAU,OAAO,aAAa,OAAO,WAAW,UAAU;AAChE,eAAO,IAAI,IAAI,QAAQ,IAAI,IAAI;AAC/B,eAAO,OAAO;AACd,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAASC,gBAAe,OAAO,SAAS,UAAU,oBAAoB;AACpE,UAAMjD,SAAQ;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,MACX,QAAQ,oBAAI,IAAI;AAAA,MAChB,cAAcX,cAAa,OAAO,kBAAkB;AAAA,MACpD,YAAY,CAAC,QAAQ4D,gBAAe,OAAO,KAAK,UAAU,kBAAkB;AAAA,MAC5E,UAAU,CAAC,UAAUA,gBAAe,MAAM,SAAS,KAAK,GAAG,SAAS,UAAU,kBAAkB;AAAA,IAClG;AACA,WAAO,IAAI,MAAMjD,QAAO;AAAA,MACtB,eAAe,QAAQ,MAAM;AAC3B,eAAO,OAAO,IAAI;AAClB,eAAO,MAAM,IAAI;AACjB,eAAO;AAAA,MACT;AAAA,MACA,IAAI,QAAQ,MAAM,UAAU;AAC1B,eAAO8C;AAAA,UAAQ;AAAA,UAAQ;AAAA,UACrB,MAAMI,qBAAoB,QAAQ,MAAM,QAAQ;AAAA,QAAC;AAAA,MACrD;AAAA,MACA,yBAAyB,QAAQ,MAAM;AACrC,eAAO,OAAO,aAAa,UACvB,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAC,YAAY,MAAM,cAAc,KAAI,IAAI,SACpE,QAAQ,yBAAyB,OAAO,IAAI;AAAA,MAClD;AAAA,MACA,iBAAiB;AACf,eAAO,QAAQ,eAAe,KAAK;AAAA,MACrC;AAAA,MACA,IAAI,QAAQ,MAAM;AAChB,eAAO,QAAQ,IAAI,OAAO,IAAI;AAAA,MAChC;AAAA,MACA,UAAU;AACR,eAAO,QAAQ,QAAQ,KAAK;AAAA,MAC9B;AAAA,MACA,IAAI,QAAQ,MAAM,OAAO;AACvB,cAAM,IAAI,IAAI;AACd,eAAO,OAAO,IAAI;AAClB,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAAS7D,cAAa,OAAOK,YAAW,EAAC,YAAY,MAAM,WAAW,KAAI,GAAG;AAC3E,UAAM,EAAC,cAAcA,UAAS,YAAY,aAAaA,UAAS,WAAW,WAAWA,UAAS,QAAO,IAAI;AAC1G,WAAO;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,cAAcyD,YAAW,WAAW,IAAI,cAAc,MAAM;AAAA,MAC5D,aAAaA,YAAW,UAAU,IAAI,aAAa,MAAM;AAAA,IAC3D;AAAA,EACF;AACA,MAAMC,WAAU,CAAC,QAAQ7D,UAAS,SAAS,SAAS8D,aAAY9D,KAAI,IAAIA;AACxE,MAAM+D,oBAAmB,CAAC,MAAM,UAAU9D,UAAS,KAAK,KAAK,SAAS,eACnE,OAAO,eAAe,KAAK,MAAM,QAAQ,MAAM,gBAAgB;AAClE,WAASsD,SAAQ,QAAQ,MAAMT,UAAS;AACtC,QAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,IAAI,GAAG;AACtD,aAAO,OAAO,IAAI;AAAA,IACpB;AACA,UAAM,QAAQA,SAAQ;AACtB,WAAO,IAAI,IAAI;AACf,WAAO;AAAA,EACT;AACA,WAASa,qBAAoB,QAAQ,MAAM,UAAU;AACnD,UAAM,EAAC,QAAQ,UAAU,WAAW,cAAcpE,aAAW,IAAI;AACjE,QAAI,QAAQ,OAAO,IAAI;AACvB,QAAIqE,YAAW,KAAK,KAAKrE,aAAY,aAAa,IAAI,GAAG;AACvD,cAAQyE,oBAAmB,MAAM,OAAO,QAAQ,QAAQ;AAAA,IAC1D;AACA,QAAItD,SAAQ,KAAK,KAAK,MAAM,QAAQ;AAClC,cAAQuD,eAAc,MAAM,OAAO,QAAQ1E,aAAY,WAAW;AAAA,IACpE;AACA,QAAIwE,kBAAiB,MAAM,KAAK,GAAG;AACjC,cAAQL,gBAAe,OAAO,UAAU,aAAa,UAAU,IAAI,GAAGnE,YAAW;AAAA,IACnF;AACA,WAAO;AAAA,EACT;AACA,WAASyE,oBAAmB,MAAM,OAAO,QAAQ,UAAU;AACzD,UAAM,EAAC,QAAQ,UAAU,WAAW,OAAM,IAAI;AAC9C,QAAI,OAAO,IAAI,IAAI,GAAG;AACpB,YAAM,IAAI,MAAM,yBAAyB,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI,IAAI,OAAO,IAAI;AAAA,IACtF;AACA,WAAO,IAAI,IAAI;AACf,YAAQ,MAAM,UAAU,aAAa,QAAQ;AAC7C,WAAO,OAAO,IAAI;AAClB,QAAID,kBAAiB,MAAM,KAAK,GAAG;AACjC,cAAQG,mBAAkB,OAAO,SAAS,QAAQ,MAAM,KAAK;AAAA,IAC/D;AACA,WAAO;AAAA,EACT;AACA,WAASD,eAAc,MAAM,OAAO,QAAQ,aAAa;AACvD,UAAM,EAAC,QAAQ,UAAU,WAAW,cAAc1E,aAAW,IAAI;AACjE,QAAI8D,SAAQ,SAAS,KAAK,KAAK,YAAY,IAAI,GAAG;AAChD,cAAQ,MAAM,SAAS,QAAQ,MAAM,MAAM;AAAA,IAC7C,WAAWpD,UAAS,MAAM,CAAC,CAAC,GAAG;AAC7B,YAAM,MAAM;AACZ,YAAM,SAAS,OAAO,QAAQ,OAAO,CAAAvF,OAAKA,OAAM,GAAG;AACnD,cAAQ,CAAC;AACT,iBAAW,QAAQ,KAAK;AACtB,cAAM,WAAWwJ,mBAAkB,QAAQ,QAAQ,MAAM,IAAI;AAC7D,cAAM,KAAKR,gBAAe,UAAU,UAAU,aAAa,UAAU,IAAI,GAAGnE,YAAW,CAAC;AAAA,MAC1F;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS4E,iBAAgB,UAAU,MAAM,OAAO;AAC9C,WAAOP,YAAW,QAAQ,IAAI,SAAS,MAAM,KAAK,IAAI;AAAA,EACxD;AACA,MAAMQ,YAAW,CAAC3E,MAAK,WAAWA,SAAQ,OAAO,SAC7C,OAAOA,SAAQ,WAAW4E,kBAAiB,QAAQ5E,IAAG,IAAI;AAC9D,WAAS6E,WAAU5E,MAAK,cAAcD,MAAK,gBAAgB,OAAO;AAChE,eAAW,UAAU,cAAc;AACjC,YAAM,QAAQ2E,UAAS3E,MAAK,MAAM;AAClC,UAAI,OAAO;AACT,QAAAC,KAAI,IAAI,KAAK;AACb,cAAM,WAAWyE,iBAAgB,MAAM,WAAW1E,MAAK,KAAK;AAC5D,YAAI4D,SAAQ,QAAQ,KAAK,aAAa5D,QAAO,aAAa,gBAAgB;AACxE,iBAAO;AAAA,QACT;AAAA,MACF,WAAW,UAAU,SAAS4D,SAAQ,cAAc,KAAK5D,SAAQ,gBAAgB;AAC/E,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASyE,mBAAkB,cAAc,UAAU,MAAM,OAAO;AAC9D,UAAM,aAAa,SAAS;AAC5B,UAAM,WAAWC,iBAAgB,SAAS,WAAW,MAAM,KAAK;AAChE,UAAM,YAAY,CAAC,GAAG,cAAc,GAAG,UAAU;AACjD,UAAMzE,OAAM,oBAAI,IAAI;AACpB,IAAAA,KAAI,IAAI,KAAK;AACb,QAAID,OAAM8E,kBAAiB7E,MAAK,WAAW,MAAM,YAAY,MAAM,KAAK;AACxE,QAAID,SAAQ,MAAM;AAChB,aAAO;AAAA,IACT;AACA,QAAI4D,SAAQ,QAAQ,KAAK,aAAa,MAAM;AAC1C,MAAA5D,OAAM8E,kBAAiB7E,MAAK,WAAW,UAAUD,MAAK,KAAK;AAC3D,UAAIA,SAAQ,MAAM;AAChB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO2D;AAAA,MAAgB,MAAM,KAAK1D,IAAG;AAAA,MAAG,CAAC,EAAE;AAAA,MAAG;AAAA,MAAY;AAAA,MACxD,MAAM8E,cAAa,UAAU,MAAM,KAAK;AAAA,IAAC;AAAA,EAC7C;AACA,WAASD,kBAAiB7E,MAAK,WAAWD,MAAK,UAAU,MAAM;AAC7D,WAAOA,MAAK;AACV,MAAAA,OAAM6E,WAAU5E,MAAK,WAAWD,MAAK,UAAU,IAAI;AAAA,IACrD;AACA,WAAOA;AAAA,EACT;AACA,WAAS+E,cAAa,UAAU,MAAM,OAAO;AAC3C,UAAM,SAAS,SAAS,WAAW;AACnC,QAAI,EAAE,QAAQ,SAAS;AACrB,aAAO,IAAI,IAAI,CAAC;AAAA,IAClB;AACA,UAAM,SAAS,OAAO,IAAI;AAC1B,QAAI9D,SAAQ,MAAM,KAAKT,UAAS,KAAK,GAAG;AACtC,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAASuD,sBAAqB,MAAM,UAAU,QAAQ,OAAO;AAC3D,QAAI;AACJ,eAAW,UAAU,UAAU;AAC7B,cAAQF,UAASO,SAAQ,QAAQ,IAAI,GAAG,MAAM;AAC9C,UAAIR,SAAQ,KAAK,GAAG;AAClB,eAAOU,kBAAiB,MAAM,KAAK,IAC/BG,mBAAkB,QAAQ,OAAO,MAAM,KAAK,IAC5C;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACA,WAASZ,UAAS7D,MAAK,QAAQ;AAC7B,eAAW,SAAS,QAAQ;AAC1B,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AACA,YAAM,QAAQ,MAAMA,IAAG;AACvB,UAAI4D,SAAQ,KAAK,GAAG;AAClB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,WAASI,sBAAqB,QAAQ;AACpC,QAAI,OAAO,OAAO;AAClB,QAAI,CAAC,MAAM;AACT,aAAO,OAAO,QAAQgB,0BAAyB,OAAO,OAAO;AAAA,IAC/D;AACA,WAAO;AAAA,EACT;AACA,WAASA,0BAAyB,QAAQ;AACxC,UAAM/E,OAAM,oBAAI,IAAI;AACpB,eAAW,SAAS,QAAQ;AAC1B,iBAAWD,QAAO,OAAO,KAAK,KAAK,EAAE,OAAO,CAAA9C,OAAK,CAACA,GAAE,WAAW,GAAG,CAAC,GAAG;AACpE,QAAA+C,KAAI,IAAID,IAAG;AAAA,MACb;AAAA,IACF;AACA,WAAO,MAAM,KAAKC,IAAG;AAAA,EACvB;AACA,WAASgF,6BAA4B,MAAMnE,OAAM3G,QAAO,OAAO;AAC7D,UAAM,EAAC,OAAM,IAAI;AACjB,UAAM,EAAC,KAAA6F,OAAM,IAAG,IAAI,KAAK;AACzB,UAAM,SAAS,IAAI,MAAM,KAAK;AAC9B,QAAIzC,IAAG,MAAM+F,QAAO;AACpB,SAAK/F,KAAI,GAAG,OAAO,OAAOA,KAAI,MAAM,EAAEA,IAAG;AACvC,MAAA+F,SAAQ/F,KAAIpD;AACZ,aAAO2G,MAAKwC,MAAK;AACjB,aAAO/F,EAAC,IAAI;AAAA,QACV,GAAG,OAAO,MAAMqH,kBAAiB,MAAM5E,IAAG,GAAGsD,MAAK;AAAA,MACpD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAM4B,WAAU,OAAO,WAAW;AAClC,MAAMC,YAAW,CAAC,QAAQ5H,OAAMA,KAAI,OAAO,UAAU,CAAC,OAAOA,EAAC,EAAE,QAAQ,OAAOA,EAAC;AAChF,MAAM6H,gBAAe,CAAC,cAAc,cAAc,MAAM,MAAM;AAC9D,WAASC,aAAY,YAAY,aAAa,YAAYtK,IAAG;AAC3D,UAAM,WAAW,WAAW,OAAO,cAAc;AACjD,UAAM,UAAU;AAChB,UAAMuK,QAAO,WAAW,OAAO,cAAc;AAC7C,UAAM,MAAMC,uBAAsB,SAAS,QAAQ;AACnD,UAAM,MAAMA,uBAAsBD,OAAM,OAAO;AAC/C,QAAI,MAAM,OAAO,MAAM;AACvB,QAAI,MAAM,OAAO,MAAM;AACvB,UAAM,MAAM,GAAG,IAAI,IAAI;AACvB,UAAM,MAAM,GAAG,IAAI,IAAI;AACvB,UAAM,KAAKvK,KAAI;AACf,UAAM,KAAKA,KAAI;AACf,WAAO;AAAA,MACL,UAAU;AAAA,QACR,GAAG,QAAQ,IAAI,MAAMuK,MAAK,IAAI,SAAS;AAAA,QACvC,GAAG,QAAQ,IAAI,MAAMA,MAAK,IAAI,SAAS;AAAA,MACzC;AAAA,MACA,MAAM;AAAA,QACJ,GAAG,QAAQ,IAAI,MAAMA,MAAK,IAAI,SAAS;AAAA,QACvC,GAAG,QAAQ,IAAI,MAAMA,MAAK,IAAI,SAAS;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AACA,WAASE,gBAAe,QAAQ,QAAQ,IAAI;AAC1C,UAAM,YAAY,OAAO;AACzB,QAAI,QAAQ,OAAO,MAAM,kBAAkB;AAC3C,QAAI,aAAaL,UAAS,QAAQ,CAAC;AACnC,aAAS5H,KAAI,GAAGA,KAAI,YAAY,GAAG,EAAEA,IAAG;AACtC,qBAAe;AACf,mBAAa4H,UAAS,QAAQ5H,KAAI,CAAC;AACnC,UAAI,CAAC,gBAAgB,CAAC,YAAY;AAChC;AAAA,MACF;AACA,UAAIkI,cAAa,OAAOlI,EAAC,GAAG,GAAG2H,QAAO,GAAG;AACvC,WAAG3H,EAAC,IAAI,GAAGA,KAAI,CAAC,IAAI;AACpB;AAAA,MACF;AACA,eAAS,GAAGA,EAAC,IAAI,OAAOA,EAAC;AACzB,cAAQ,GAAGA,KAAI,CAAC,IAAI,OAAOA,EAAC;AAC5B,yBAAmB,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC;AAC1D,UAAI,oBAAoB,GAAG;AACzB;AAAA,MACF;AACA,aAAO,IAAI,KAAK,KAAK,gBAAgB;AACrC,SAAGA,EAAC,IAAI,SAAS,OAAO,OAAOA,EAAC;AAChC,SAAGA,KAAI,CAAC,IAAI,QAAQ,OAAO,OAAOA,EAAC;AAAA,IACrC;AAAA,EACF;AACA,WAASmI,iBAAgB,QAAQ,IAAI,YAAY,KAAK;AACpD,UAAM,YAAYN,cAAa,SAAS;AACxC,UAAM,YAAY,OAAO;AACzB,QAAI,OAAO,aAAa;AACxB,QAAI,aAAaD,UAAS,QAAQ,CAAC;AACnC,aAAS5H,KAAI,GAAGA,KAAI,WAAW,EAAEA,IAAG;AAClC,oBAAc;AACd,qBAAe;AACf,mBAAa4H,UAAS,QAAQ5H,KAAI,CAAC;AACnC,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AACA,YAAM,SAAS,aAAa,SAAS;AACrC,YAAM,SAAS,aAAa,SAAS;AACrC,UAAI,aAAa;AACf,iBAAS,SAAS,YAAY,SAAS,KAAK;AAC5C,qBAAa,MAAM,WAAW,IAAI,SAAS;AAC3C,qBAAa,MAAM,WAAW,IAAI,SAAS,QAAQ,GAAGA,EAAC;AAAA,MACzD;AACA,UAAI,YAAY;AACd,iBAAS,WAAW,SAAS,IAAI,UAAU;AAC3C,qBAAa,MAAM,WAAW,IAAI,SAAS;AAC3C,qBAAa,MAAM,WAAW,IAAI,SAAS,QAAQ,GAAGA,EAAC;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AACA,WAASoI,qBAAoB,QAAQ,YAAY,KAAK;AACpD,UAAM,YAAYP,cAAa,SAAS;AACxC,UAAM,YAAY,OAAO;AACzB,UAAM,SAAS,MAAM,SAAS,EAAE,KAAK,CAAC;AACtC,UAAM,KAAK,MAAM,SAAS;AAC1B,QAAI7H,IAAG,aAAa;AACpB,QAAI,aAAa4H,UAAS,QAAQ,CAAC;AACnC,SAAK5H,KAAI,GAAGA,KAAI,WAAW,EAAEA,IAAG;AAC9B,oBAAc;AACd,qBAAe;AACf,mBAAa4H,UAAS,QAAQ5H,KAAI,CAAC;AACnC,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AACA,UAAI,YAAY;AACd,cAAM,aAAa,WAAW,SAAS,IAAI,aAAa,SAAS;AACjE,eAAOA,EAAC,IAAI,eAAe,KAAK,WAAW,SAAS,IAAI,aAAa,SAAS,KAAK,aAAa;AAAA,MAClG;AACA,SAAGA,EAAC,IAAI,CAAC,cAAc,OAAOA,EAAC,IAC3B,CAAC,aAAa,OAAOA,KAAI,CAAC,IACzBqI,MAAK,OAAOrI,KAAI,CAAC,CAAC,MAAMqI,MAAK,OAAOrI,EAAC,CAAC,IAAK,KAC3C,OAAOA,KAAI,CAAC,IAAI,OAAOA,EAAC,KAAK;AAAA,IACpC;AACA,IAAAiI,gBAAe,QAAQ,QAAQ,EAAE;AACjC,IAAAE,iBAAgB,QAAQ,IAAI,SAAS;AAAA,EACvC;AACA,WAASG,iBAAgB,IAAIpL,MAAKC,MAAK;AACrC,WAAO,KAAK,IAAI,KAAK,IAAI,IAAIA,IAAG,GAAGD,IAAG;AAAA,EACxC;AACA,WAASqL,iBAAgB,QAAQ,MAAM;AACrC,QAAIvI,IAAG,MAAMuE,QAAO,QAAQ;AAC5B,QAAI,aAAaD,gBAAe,OAAO,CAAC,GAAG,IAAI;AAC/C,SAAKtE,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,mBAAa;AACb,eAAS;AACT,mBAAaA,KAAI,OAAO,KAAKsE,gBAAe,OAAOtE,KAAI,CAAC,GAAG,IAAI;AAC/D,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AACA,MAAAuE,SAAQ,OAAOvE,EAAC;AAChB,UAAI,YAAY;AACd,QAAAuE,OAAM,OAAO+D,iBAAgB/D,OAAM,MAAM,KAAK,MAAM,KAAK,KAAK;AAC9D,QAAAA,OAAM,OAAO+D,iBAAgB/D,OAAM,MAAM,KAAK,KAAK,KAAK,MAAM;AAAA,MAChE;AACA,UAAI,YAAY;AACd,QAAAA,OAAM,OAAO+D,iBAAgB/D,OAAM,MAAM,KAAK,MAAM,KAAK,KAAK;AAC9D,QAAAA,OAAM,OAAO+D,iBAAgB/D,OAAM,MAAM,KAAK,KAAK,KAAK,MAAM;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AACA,WAASiE,4BAA2B,QAAQzF,UAAS,MAAM,MAAM,WAAW;AAC1E,QAAI/C,IAAG,MAAMuE,QAAO;AACpB,QAAIxB,SAAQ,UAAU;AACpB,eAAS,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI;AAAA,IACzC;AACA,QAAIA,SAAQ,2BAA2B,YAAY;AACjD,MAAAqF,qBAAoB,QAAQ,SAAS;AAAA,IACvC,OAAO;AACL,UAAIK,QAAO,OAAO,OAAO,OAAO,SAAS,CAAC,IAAI,OAAO,CAAC;AACtD,WAAKzI,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,QAAAuE,SAAQ,OAAOvE,EAAC;AAChB,wBAAgB8H;AAAA,UACdW;AAAA,UACAlE;AAAA,UACA,OAAO,KAAK,IAAIvE,KAAI,GAAG,QAAQ,OAAO,IAAI,EAAE,IAAI,IAAI;AAAA,UACpD+C,SAAQ;AAAA,QACV;AACA,QAAAwB,OAAM,OAAO,cAAc,SAAS;AACpC,QAAAA,OAAM,OAAO,cAAc,SAAS;AACpC,QAAAA,OAAM,OAAO,cAAc,KAAK;AAChC,QAAAA,OAAM,OAAO,cAAc,KAAK;AAChC,QAAAkE,QAAOlE;AAAA,MACT;AAAA,IACF;AACA,QAAIxB,SAAQ,iBAAiB;AAC3B,MAAAwF,iBAAgB,QAAQ,IAAI;AAAA,IAC9B;AAAA,EACF;AAEA,WAASG,mBAAkB;AACzB,WAAO,OAAO,WAAW,eAAe,OAAO,aAAa;AAAA,EAC9D;AACA,WAASC,gBAAe,SAAS;AAC/B,QAAI,SAAS,QAAQ;AACrB,QAAI,UAAU,OAAO,SAAS,MAAM,uBAAuB;AACzD,eAAS,OAAO;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AACA,WAASC,eAAc,YAAY,MAAM,gBAAgB;AACvD,QAAI;AACJ,QAAI,OAAO,eAAe,UAAU;AAClC,sBAAgB,SAAS,YAAY,EAAE;AACvC,UAAI,WAAW,QAAQ,GAAG,MAAM,IAAI;AAClC,wBAAgB,gBAAgB,MAAM,KAAK,WAAW,cAAc;AAAA,MACtE;AAAA,IACF,OAAO;AACL,sBAAgB;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AACA,MAAMC,oBAAmB,CAAC,YAAY,OAAO,iBAAiB,SAAS,IAAI;AAC3E,WAASC,UAAS,IAAI,UAAU;AAC9B,WAAOD,kBAAiB,EAAE,EAAE,iBAAiB,QAAQ;AAAA,EACvD;AACA,MAAME,aAAY,CAAC,OAAO,SAAS,UAAU,MAAM;AACnD,WAASC,oBAAmB,QAAQ,OAAO,QAAQ;AACjD,UAAM,SAAS,CAAC;AAChB,aAAS,SAAS,MAAM,SAAS;AACjC,aAAShJ,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1B,YAAM,MAAM+I,WAAU/I,EAAC;AACvB,aAAO,GAAG,IAAI,WAAW,OAAO,QAAQ,MAAM,MAAM,MAAM,CAAC,KAAK;AAAA,IAClE;AACA,WAAO,QAAQ,OAAO,OAAO,OAAO;AACpC,WAAO,SAAS,OAAO,MAAM,OAAO;AACpC,WAAO;AAAA,EACT;AACA,MAAMiJ,gBAAe,CAAClF,IAAGC,IAAG,YAAYD,KAAI,KAAKC,KAAI,OAAO,CAAC,UAAU,CAAC,OAAO;AAC/E,WAASkF,mBAAkBC,IAAG,QAAQ;AACpC,UAAMC,WAAUD,GAAE;AAClB,UAAM,SAASC,YAAWA,SAAQ,SAASA,SAAQ,CAAC,IAAID;AACxD,UAAM,EAAC,SAAS,QAAO,IAAI;AAC3B,QAAI,MAAM;AACV,QAAIpF,IAAGC;AACP,QAAIiF,cAAa,SAAS,SAASE,GAAE,MAAM,GAAG;AAC5C,MAAApF,KAAI;AACJ,MAAAC,KAAI;AAAA,IACN,OAAO;AACL,YAAM,OAAO,OAAO,sBAAsB;AAC1C,MAAAD,KAAI,OAAO,UAAU,KAAK;AAC1B,MAAAC,KAAI,OAAO,UAAU,KAAK;AAC1B,YAAM;AAAA,IACR;AACA,WAAO,EAAC,GAAAD,IAAG,GAAAC,IAAG,IAAG;AAAA,EACnB;AACA,WAASqF,qBAAoB,KAAK,OAAO;AACvC,QAAI,YAAY,KAAK;AACnB,aAAO;AAAA,IACT;AACA,UAAM,EAAC,QAAQ,wBAAuB,IAAI;AAC1C,UAAM,QAAQR,kBAAiB,MAAM;AACrC,UAAM,YAAY,MAAM,cAAc;AACtC,UAAM,WAAWG,oBAAmB,OAAO,SAAS;AACpD,UAAM,UAAUA,oBAAmB,OAAO,UAAU,OAAO;AAC3D,UAAM,EAAC,GAAAjF,IAAG,GAAAC,IAAG,IAAG,IAAIkF,mBAAkB,KAAK,MAAM;AACjD,UAAM,UAAU,SAAS,QAAQ,OAAO,QAAQ;AAChD,UAAM,UAAU,SAAS,OAAO,OAAO,QAAQ;AAC/C,QAAI,EAAC,OAAAtF,QAAO,QAAA0F,QAAM,IAAI;AACtB,QAAI,WAAW;AACb,MAAA1F,UAAS,SAAS,QAAQ,QAAQ;AAClC,MAAA0F,WAAU,SAAS,SAAS,QAAQ;AAAA,IACtC;AACA,WAAO;AAAA,MACL,GAAG,KAAK,OAAOvF,KAAI,WAAWH,SAAQ,OAAO,QAAQ,uBAAuB;AAAA,MAC5E,GAAG,KAAK,OAAOI,KAAI,WAAWsF,UAAS,OAAO,SAAS,uBAAuB;AAAA,IAChF;AAAA,EACF;AACA,WAASC,kBAAiB,QAAQ3F,QAAO0F,SAAQ;AAC/C,QAAI,UAAU;AACd,QAAI1F,WAAU,UAAa0F,YAAW,QAAW;AAC/C,YAAM,YAAYX,gBAAe,MAAM;AACvC,UAAI,CAAC,WAAW;AACd,QAAA/E,SAAQ,OAAO;AACf,QAAA0F,UAAS,OAAO;AAAA,MAClB,OAAO;AACL,cAAM,OAAO,UAAU,sBAAsB;AAC7C,cAAM,iBAAiBT,kBAAiB,SAAS;AACjD,cAAM,kBAAkBG,oBAAmB,gBAAgB,UAAU,OAAO;AAC5E,cAAM,mBAAmBA,oBAAmB,gBAAgB,SAAS;AACrE,QAAApF,SAAQ,KAAK,QAAQ,iBAAiB,QAAQ,gBAAgB;AAC9D,QAAA0F,UAAS,KAAK,SAAS,iBAAiB,SAAS,gBAAgB;AACjE,mBAAWV,eAAc,eAAe,UAAU,WAAW,aAAa;AAC1E,oBAAYA,eAAc,eAAe,WAAW,WAAW,cAAc;AAAA,MAC/E;AAAA,IACF;AACA,WAAO;AAAA,MACL,OAAAhF;AAAA,MACA,QAAA0F;AAAA,MACA,UAAU,YAAYE;AAAA,MACtB,WAAW,aAAaA;AAAA,IAC1B;AAAA,EACF;AACA,MAAMC,UAAS,CAAArL,OAAK,KAAK,MAAMA,KAAI,EAAE,IAAI;AACzC,WAASsL,gBAAe,QAAQ,SAAS,UAAU,aAAa;AAC9D,UAAM,QAAQb,kBAAiB,MAAM;AACrC,UAAM,UAAUG,oBAAmB,OAAO,QAAQ;AAClD,UAAM,WAAWJ,eAAc,MAAM,UAAU,QAAQ,aAAa,KAAKY;AACzE,UAAM,YAAYZ,eAAc,MAAM,WAAW,QAAQ,cAAc,KAAKY;AAC5E,UAAM,gBAAgBD,kBAAiB,QAAQ,SAAS,QAAQ;AAChE,QAAI,EAAC,OAAA3F,QAAO,QAAA0F,QAAM,IAAI;AACtB,QAAI,MAAM,cAAc,eAAe;AACrC,YAAM,UAAUN,oBAAmB,OAAO,UAAU,OAAO;AAC3D,YAAM,WAAWA,oBAAmB,OAAO,SAAS;AACpD,MAAApF,UAAS,SAAS,QAAQ,QAAQ;AAClC,MAAA0F,WAAU,SAAS,SAAS,QAAQ;AAAA,IACtC;AACA,IAAA1F,SAAQ,KAAK,IAAI,GAAGA,SAAQ,QAAQ,KAAK;AACzC,IAAA0F,UAAS,KAAK,IAAI,GAAG,cAAc,KAAK,MAAM1F,SAAQ,WAAW,IAAI0F,UAAS,QAAQ,MAAM;AAC5F,IAAA1F,SAAQ6F,QAAO,KAAK,IAAI7F,QAAO,UAAU,cAAc,QAAQ,CAAC;AAChE,IAAA0F,UAASG,QAAO,KAAK,IAAIH,SAAQ,WAAW,cAAc,SAAS,CAAC;AACpE,QAAI1F,UAAS,CAAC0F,SAAQ;AACpB,MAAAA,UAASG,QAAO7F,SAAQ,CAAC;AAAA,IAC3B;AACA,WAAO;AAAA,MACL,OAAAA;AAAA,MACA,QAAA0F;AAAA,IACF;AAAA,EACF;AACA,WAASK,aAAY,OAAO,YAAY,YAAY;AAClD,UAAM,aAAa,cAAc;AACjC,UAAM,eAAe,KAAK,MAAM,MAAM,SAAS,UAAU;AACzD,UAAM,cAAc,KAAK,MAAM,MAAM,QAAQ,UAAU;AACvD,UAAM,SAAS,eAAe;AAC9B,UAAM,QAAQ,cAAc;AAC5B,UAAM,SAAS,MAAM;AACrB,QAAI,OAAO,UAAU,cAAe,CAAC,OAAO,MAAM,UAAU,CAAC,OAAO,MAAM,QAAS;AACjF,aAAO,MAAM,SAAS,GAAG,MAAM;AAC/B,aAAO,MAAM,QAAQ,GAAG,MAAM;AAAA,IAChC;AACA,QAAI,MAAM,4BAA4B,cAC/B,OAAO,WAAW,gBAClB,OAAO,UAAU,aAAa;AACnC,YAAM,0BAA0B;AAChC,aAAO,SAAS;AAChB,aAAO,QAAQ;AACf,YAAM,IAAI,aAAa,YAAY,GAAG,GAAG,YAAY,GAAG,CAAC;AACzD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,MAAMC,gCAAgC,WAAW;AAC/C,QAAI,mBAAmB;AACvB,QAAI;AACF,YAAM7G,WAAU;AAAA,QACd,IAAI,UAAU;AACZ,6BAAmB;AACnB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO,iBAAiB,QAAQ,MAAMA,QAAO;AAC7C,aAAO,oBAAoB,QAAQ,MAAMA,QAAO;AAAA,IAClD,SAASoG,IAAP;AAAA,IACF;AACA,WAAO;AAAA,EACT,EAAE;AACF,WAASU,cAAa,SAAS,UAAU;AACvC,UAAM,QAAQf,UAAS,SAAS,QAAQ;AACxC,UAAMxD,WAAU,SAAS,MAAM,MAAM,mBAAmB;AACxD,WAAOA,WAAU,CAACA,SAAQ,CAAC,IAAI;AAAA,EACjC;AAEA,WAASwE,cAAa,IAAIjJ,KAAIrD,IAAG,MAAM;AACrC,WAAO;AAAA,MACL,GAAG,GAAG,IAAIA,MAAKqD,IAAG,IAAI,GAAG;AAAA,MACzB,GAAG,GAAG,IAAIrD,MAAKqD,IAAG,IAAI,GAAG;AAAA,IAC3B;AAAA,EACF;AACA,WAASkJ,uBAAsB,IAAIlJ,KAAIrD,IAAG,MAAM;AAC9C,WAAO;AAAA,MACL,GAAG,GAAG,IAAIA,MAAKqD,IAAG,IAAI,GAAG;AAAA,MACzB,GAAG,SAAS,WAAWrD,KAAI,MAAM,GAAG,IAAIqD,IAAG,IACzC,SAAS,UAAUrD,KAAI,IAAI,GAAG,IAAIqD,IAAG,IACrCrD,KAAI,IAAIqD,IAAG,IAAI,GAAG;AAAA,IACtB;AAAA,EACF;AACA,WAASmJ,sBAAqB,IAAInJ,KAAIrD,IAAG,MAAM;AAC7C,UAAM,MAAM,EAAC,GAAG,GAAG,MAAM,GAAG,GAAG,KAAI;AACnC,UAAM,MAAM,EAAC,GAAGqD,IAAG,MAAM,GAAGA,IAAG,KAAI;AACnC,UAAMxB,KAAIyK,cAAa,IAAI,KAAKtM,EAAC;AACjC,UAAMuB,KAAI+K,cAAa,KAAK,KAAKtM,EAAC;AAClC,UAAM+C,KAAIuJ,cAAa,KAAKjJ,KAAIrD,EAAC;AACjC,UAAMU,KAAI4L,cAAazK,IAAGN,IAAGvB,EAAC;AAC9B,UAAM2L,KAAIW,cAAa/K,IAAGwB,IAAG/C,EAAC;AAC9B,WAAOsM,cAAa5L,IAAGiL,IAAG3L,EAAC;AAAA,EAC7B;AAEA,MAAMyM,aAAY,oBAAI,IAAI;AAC1B,WAASC,iBAAgB,QAAQnH,UAAS;AACxC,IAAAA,WAAUA,YAAW,CAAC;AACtB,UAAM,WAAW,SAAS,KAAK,UAAUA,QAAO;AAChD,QAAI,YAAYkH,WAAU,IAAI,QAAQ;AACtC,QAAI,CAAC,WAAW;AACd,kBAAY,IAAI,KAAK,aAAa,QAAQlH,QAAO;AACjD,MAAAkH,WAAU,IAAI,UAAU,SAAS;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACA,WAASE,cAAa,KAAK,QAAQpH,UAAS;AAC1C,WAAOmH,iBAAgB,QAAQnH,QAAO,EAAE,OAAO,GAAG;AAAA,EACpD;AAEA,MAAMqH,yBAAwB,SAAS,OAAOxG,QAAO;AACnD,WAAO;AAAA,MACL,EAAEG,IAAG;AACH,eAAO,QAAQ,QAAQH,SAAQG;AAAA,MACjC;AAAA,MACA,SAASjE,IAAG;AACV,QAAA8D,SAAQ9D;AAAA,MACV;AAAA,MACA,UAAU,OAAO;AACf,YAAI,UAAU,UAAU;AACtB,iBAAO;AAAA,QACT;AACA,eAAO,UAAU,UAAU,SAAS;AAAA,MACtC;AAAA,MACA,MAAMiE,IAAG,OAAO;AACd,eAAOA,KAAI;AAAA,MACb;AAAA,MACA,WAAWA,IAAG,WAAW;AACvB,eAAOA,KAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,MAAMsG,yBAAwB,WAAW;AACvC,WAAO;AAAA,MACL,EAAEtG,IAAG;AACH,eAAOA;AAAA,MACT;AAAA,MACA,SAASjE,IAAG;AAAA,MACZ;AAAA,MACA,UAAU,OAAO;AACf,eAAO;AAAA,MACT;AAAA,MACA,MAAMiE,IAAG,OAAO;AACd,eAAOA,KAAI;AAAA,MACb;AAAA,MACA,WAAWA,IAAG,YAAY;AACxB,eAAOA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,WAASuG,eAAc,KAAK,OAAO1G,QAAO;AACxC,WAAO,MAAMwG,uBAAsB,OAAOxG,MAAK,IAAIyG,uBAAsB;AAAA,EAC3E;AACA,WAASE,uBAAsB,KAAK,WAAW;AAC7C,QAAI,OAAO;AACX,QAAI,cAAc,SAAS,cAAc,OAAO;AAC9C,cAAQ,IAAI,OAAO;AACnB,iBAAW;AAAA,QACT,MAAM,iBAAiB,WAAW;AAAA,QAClC,MAAM,oBAAoB,WAAW;AAAA,MACvC;AACA,YAAM,YAAY,aAAa,WAAW,WAAW;AACrD,UAAI,oBAAoB;AAAA,IAC1B;AAAA,EACF;AACA,WAASC,sBAAqB,KAAK,UAAU;AAC3C,QAAI,aAAa,QAAW;AAC1B,aAAO,IAAI;AACX,UAAI,OAAO,MAAM,YAAY,aAAa,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAAA,IACpE;AAAA,EACF;AAEA,WAASC,YAAW,UAAU;AAC5B,QAAI,aAAa,SAAS;AACxB,aAAO;AAAA,QACL,SAASC;AAAA,QACT,SAASC;AAAA,QACT,WAAWC;AAAA,MACb;AAAA,IACF;AACA,WAAO;AAAA,MACL,SAASC;AAAA,MACT,SAAS,CAACxL,IAAGN,OAAMM,KAAIN;AAAA,MACvB,WAAW,CAAAgF,OAAKA;AAAA,IAClB;AAAA,EACF;AACA,WAAS+G,kBAAiB,EAAC,OAAAlO,QAAO,KAAAC,MAAK,OAAO,MAAM,MAAK,GAAG;AAC1D,WAAO;AAAA,MACL,OAAOD,SAAQ;AAAA,MACf,KAAKC,OAAM;AAAA,MACX,MAAM,SAASA,OAAMD,SAAQ,KAAK,UAAU;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AACA,WAASmO,YAAW,SAAS,QAAQ,QAAQ;AAC3C,UAAM,EAAC,UAAU,OAAO,YAAY,KAAK,SAAQ,IAAI;AACrD,UAAM,EAAC,SAAS,UAAS,IAAIN,YAAW,QAAQ;AAChD,UAAM,QAAQ,OAAO;AACrB,QAAI,EAAC,OAAA7N,QAAO,KAAAC,MAAK,KAAI,IAAI;AACzB,QAAImD,IAAG;AACP,QAAI,MAAM;AACR,MAAApD,UAAS;AACT,MAAAC,QAAO;AACP,WAAKmD,KAAI,GAAG,OAAO,OAAOA,KAAI,MAAM,EAAEA,IAAG;AACvC,YAAI,CAAC,QAAQ,UAAU,OAAOpD,SAAQ,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,QAAQ,GAAG;AAC9E;AAAA,QACF;AACA,QAAAA;AACA,QAAAC;AAAA,MACF;AACA,MAAAD,UAAS;AACT,MAAAC,QAAO;AAAA,IACT;AACA,QAAIA,OAAMD,QAAO;AACf,MAAAC,QAAO;AAAA,IACT;AACA,WAAO,EAAC,OAAAD,QAAO,KAAAC,MAAK,MAAM,OAAO,QAAQ,MAAK;AAAA,EAChD;AACA,WAASmO,eAAc,SAAS,QAAQ,QAAQ;AAC9C,QAAI,CAAC,QAAQ;AACX,aAAO,CAAC,OAAO;AAAA,IACjB;AACA,UAAM,EAAC,UAAU,OAAO,YAAY,KAAK,SAAQ,IAAI;AACrD,UAAM,QAAQ,OAAO;AACrB,UAAM,EAAC,SAAAC,UAAS,SAAS,UAAS,IAAIR,YAAW,QAAQ;AACzD,UAAM,EAAC,OAAA7N,QAAO,KAAAC,MAAK,MAAM,MAAK,IAAIkO,YAAW,SAAS,QAAQ,MAAM;AACpE,UAAM,SAAS,CAAC;AAChB,QAAIG,UAAS;AACb,QAAI,WAAW;AACf,QAAI,OAAO3G,QAAO;AAClB,UAAM,gBAAgB,MAAM,QAAQ,YAAY,WAAW,KAAK,KAAK0G,SAAQ,YAAY,SAAS,MAAM;AACxG,UAAM,cAAc,MAAMA,SAAQ,UAAU,KAAK,MAAM,KAAK,QAAQ,UAAU,WAAW,KAAK;AAC9F,UAAM,cAAc,MAAMC,WAAU,cAAc;AAClD,UAAM,aAAa,MAAM,CAACA,WAAU,YAAY;AAChD,aAASlL,KAAIpD,QAAO6L,QAAO7L,QAAOoD,MAAKnD,MAAK,EAAEmD,IAAG;AAC/C,MAAAuE,SAAQ,OAAOvE,KAAI,KAAK;AACxB,UAAIuE,OAAM,MAAM;AACd;AAAA,MACF;AACA,cAAQ,UAAUA,OAAM,QAAQ,CAAC;AACjC,UAAI,UAAU,WAAW;AACvB;AAAA,MACF;AACA,MAAA2G,UAAS,QAAQ,OAAO,YAAY,QAAQ;AAC5C,UAAI,aAAa,QAAQ,YAAY,GAAG;AACtC,mBAAWD,SAAQ,OAAO,UAAU,MAAM,IAAIjL,KAAIyI;AAAA,MACpD;AACA,UAAI,aAAa,QAAQ,WAAW,GAAG;AACrC,eAAO,KAAKqC,kBAAiB,EAAC,OAAO,UAAU,KAAK9K,IAAG,MAAM,OAAO,MAAK,CAAC,CAAC;AAC3E,mBAAW;AAAA,MACb;AACA,MAAAyI,QAAOzI;AACP,kBAAY;AAAA,IACd;AACA,QAAI,aAAa,MAAM;AACrB,aAAO,KAAK8K,kBAAiB,EAAC,OAAO,UAAU,KAAAjO,MAAK,MAAM,OAAO,MAAK,CAAC,CAAC;AAAA,IAC1E;AACA,WAAO;AAAA,EACT;AACA,WAASsO,gBAAe,MAAM,QAAQ;AACpC,UAAM,SAAS,CAAC;AAChB,UAAM,WAAW,KAAK;AACtB,aAASnL,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,YAAM,MAAMgL,eAAc,SAAShL,EAAC,GAAG,KAAK,QAAQ,MAAM;AAC1D,UAAI,IAAI,QAAQ;AACd,eAAO,KAAK,GAAG,GAAG;AAAA,MACpB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASoL,iBAAgB,QAAQ,OAAO,MAAM,UAAU;AACtD,QAAIxO,SAAQ;AACZ,QAAIC,OAAM,QAAQ;AAClB,QAAI,QAAQ,CAAC,UAAU;AACrB,aAAOD,SAAQ,SAAS,CAAC,OAAOA,MAAK,EAAE,MAAM;AAC3C,QAAAA;AAAA,MACF;AAAA,IACF;AACA,WAAOA,SAAQ,SAAS,OAAOA,MAAK,EAAE,MAAM;AAC1C,MAAAA;AAAA,IACF;AACA,IAAAA,UAAS;AACT,QAAI,MAAM;AACR,MAAAC,QAAOD;AAAA,IACT;AACA,WAAOC,OAAMD,UAAS,OAAOC,OAAM,KAAK,EAAE,MAAM;AAC9C,MAAAA;AAAA,IACF;AACA,IAAAA,QAAO;AACP,WAAO,EAAC,OAAAD,QAAO,KAAAC,KAAG;AAAA,EACpB;AACA,WAASwO,eAAc,QAAQzO,QAAOO,MAAK,MAAM;AAC/C,UAAM,QAAQ,OAAO;AACrB,UAAM,SAAS,CAAC;AAChB,QAAI,OAAOP;AACX,QAAI6L,QAAO,OAAO7L,MAAK;AACvB,QAAIC;AACJ,SAAKA,OAAMD,SAAQ,GAAGC,QAAOM,MAAK,EAAEN,MAAK;AACvC,YAAM,MAAM,OAAOA,OAAM,KAAK;AAC9B,UAAI,IAAI,QAAQ,IAAI,MAAM;AACxB,YAAI,CAAC4L,MAAK,MAAM;AACd,iBAAO;AACP,iBAAO,KAAK,EAAC,OAAO7L,SAAQ,OAAO,MAAMC,OAAM,KAAK,OAAO,KAAI,CAAC;AAChE,UAAAD,SAAQ,OAAO,IAAI,OAAOC,OAAM;AAAA,QAClC;AAAA,MACF,OAAO;AACL,eAAOA;AACP,YAAI4L,MAAK,MAAM;AACb,UAAA7L,SAAQC;AAAA,QACV;AAAA,MACF;AACA,MAAA4L,QAAO;AAAA,IACT;AACA,QAAI,SAAS,MAAM;AACjB,aAAO,KAAK,EAAC,OAAO7L,SAAQ,OAAO,KAAK,OAAO,OAAO,KAAI,CAAC;AAAA,IAC7D;AACA,WAAO;AAAA,EACT;AACA,WAAS0O,kBAAiB,MAAM,gBAAgB;AAC9C,UAAM,SAAS,KAAK;AACpB,UAAM,WAAW,KAAK,QAAQ;AAC9B,UAAM,QAAQ,OAAO;AACrB,QAAI,CAAC,OAAO;AACV,aAAO,CAAC;AAAA,IACV;AACA,UAAM,OAAO,CAAC,CAAC,KAAK;AACpB,UAAM,EAAC,OAAA1O,QAAO,KAAAC,KAAG,IAAIuO,iBAAgB,QAAQ,OAAO,MAAM,QAAQ;AAClE,QAAI,aAAa,MAAM;AACrB,aAAOG,eAAc,MAAM,CAAC,EAAC,OAAA3O,QAAO,KAAAC,MAAK,KAAI,CAAC,GAAG,QAAQ,cAAc;AAAA,IACzE;AACA,UAAMM,OAAMN,OAAMD,SAAQC,OAAM,QAAQA;AACxC,UAAM,eAAe,CAAC,CAAC,KAAK,aAAaD,WAAU,KAAKC,SAAQ,QAAQ;AACxE,WAAO0O,eAAc,MAAMF,eAAc,QAAQzO,QAAOO,MAAK,YAAY,GAAG,QAAQ,cAAc;AAAA,EACpG;AACA,WAASoO,eAAc,MAAM,UAAU,QAAQ,gBAAgB;AAC7D,QAAI,CAAC,kBAAkB,CAAC,eAAe,cAAc,CAAC,QAAQ;AAC5D,aAAO;AAAA,IACT;AACA,WAAOC,iBAAgB,MAAM,UAAU,QAAQ,cAAc;AAAA,EAC/D;AACA,WAASA,iBAAgB,MAAM,UAAU,QAAQ,gBAAgB;AAC/D,UAAM,eAAe,KAAK,OAAO,WAAW;AAC5C,UAAM,YAAYC,WAAU,KAAK,OAAO;AACxC,UAAM,EAAC,eAAe,cAAc,SAAS,EAAC,SAAQ,EAAC,IAAI;AAC3D,UAAM,QAAQ,OAAO;AACrB,UAAM,SAAS,CAAC;AAChB,QAAI,YAAY;AAChB,QAAI7O,SAAQ,SAAS,CAAC,EAAE;AACxB,QAAIoD,KAAIpD;AACR,aAAS,SAASc,IAAGyL,IAAG7K,IAAG,IAAI;AAC7B,YAAM,MAAM,WAAW,KAAK;AAC5B,UAAIZ,OAAMyL,IAAG;AACX;AAAA,MACF;AACA,MAAAzL,MAAK;AACL,aAAO,OAAOA,KAAI,KAAK,EAAE,MAAM;AAC7B,QAAAA,MAAK;AAAA,MACP;AACA,aAAO,OAAOyL,KAAI,KAAK,EAAE,MAAM;AAC7B,QAAAA,MAAK;AAAA,MACP;AACA,UAAIzL,KAAI,UAAUyL,KAAI,OAAO;AAC3B,eAAO,KAAK,EAAC,OAAOzL,KAAI,OAAO,KAAKyL,KAAI,OAAO,MAAM7K,IAAG,OAAO,GAAE,CAAC;AAClE,oBAAY;AACZ,QAAA1B,SAAQuM,KAAI;AAAA,MACd;AAAA,IACF;AACA,eAAW,WAAW,UAAU;AAC9B,MAAAvM,SAAQ,WAAWA,SAAQ,QAAQ;AACnC,UAAI6L,QAAO,OAAO7L,SAAQ,KAAK;AAC/B,UAAI;AACJ,WAAKoD,KAAIpD,SAAQ,GAAGoD,MAAK,QAAQ,KAAKA,MAAK;AACzC,cAAM,KAAK,OAAOA,KAAI,KAAK;AAC3B,gBAAQyL,WAAU,eAAe,WAAWtF,eAAc,cAAc;AAAA,UACtE,MAAM;AAAA,UACN,IAAIsC;AAAA,UACJ,IAAI;AAAA,UACJ,cAAczI,KAAI,KAAK;AAAA,UACvB,aAAaA,KAAI;AAAA,UACjB;AAAA,QACF,CAAC,CAAC,CAAC;AACH,YAAI0L,cAAa,OAAO,SAAS,GAAG;AAClC,mBAAS9O,QAAOoD,KAAI,GAAG,QAAQ,MAAM,SAAS;AAAA,QAChD;AACA,QAAAyI,QAAO;AACP,oBAAY;AAAA,MACd;AACA,UAAI7L,SAAQoD,KAAI,GAAG;AACjB,iBAASpD,QAAOoD,KAAI,GAAG,QAAQ,MAAM,SAAS;AAAA,MAChD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASyL,WAAU1I,UAAS;AAC1B,WAAO;AAAA,MACL,iBAAiBA,SAAQ;AAAA,MACzB,gBAAgBA,SAAQ;AAAA,MACxB,YAAYA,SAAQ;AAAA,MACpB,kBAAkBA,SAAQ;AAAA,MAC1B,iBAAiBA,SAAQ;AAAA,MACzB,aAAaA,SAAQ;AAAA,MACrB,aAAaA,SAAQ;AAAA,IACvB;AAAA,EACF;AACA,WAAS2I,cAAa,OAAO,WAAW;AACtC,WAAO,aAAa,KAAK,UAAU,KAAK,MAAM,KAAK,UAAU,SAAS;AAAA,EACxE;;;AC/iFA,MAAMC,YAAN,MAAe;AAAA,IACb,cAAc;AACZ,WAAK,WAAW;AAChB,WAAK,UAAU,oBAAI,IAAI;AACvB,WAAK,WAAW;AAChB,WAAK,YAAY;AAAA,IACnB;AAAA,IACA,QAAQ,OAAO,OAAO,MAAM,MAAM;AAChC,YAAM,YAAY,MAAM,UAAU,IAAI;AACtC,YAAM,WAAW,MAAM;AACvB,gBAAU,QAAQ,CAAAC,QAAMA,IAAG;AAAA,QACzB;AAAA,QACA,SAAS,MAAM;AAAA,QACf;AAAA,QACA,aAAa,KAAK,IAAI,OAAO,MAAM,OAAO,QAAQ;AAAA,MACpD,CAAC,CAAC;AAAA,IACJ;AAAA,IACA,WAAW;AACT,UAAI,KAAK,UAAU;AACjB;AAAA,MACF;AACA,WAAK,WAAW;AAChB,WAAK,WAAWC,kBAAiB,KAAK,QAAQ,MAAM;AAClD,aAAK,QAAQ;AACb,aAAK,WAAW;AAChB,YAAI,KAAK,UAAU;AACjB,eAAK,SAAS;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,OAAO,KAAK,IAAI,GAAG;AACzB,UAAI,YAAY;AAChB,WAAK,QAAQ,QAAQ,CAAC,OAAO,UAAU;AACrC,YAAI,CAAC,MAAM,WAAW,CAAC,MAAM,MAAM,QAAQ;AACzC;AAAA,QACF;AACA,cAAM,QAAQ,MAAM;AACpB,YAAIC,KAAI,MAAM,SAAS;AACvB,YAAIC,QAAO;AACX,YAAI;AACJ,eAAOD,MAAK,GAAG,EAAEA,IAAG;AAClB,iBAAO,MAAMA,EAAC;AACd,cAAI,KAAK,SAAS;AAChB,gBAAI,KAAK,SAAS,MAAM,UAAU;AAChC,oBAAM,WAAW,KAAK;AAAA,YACxB;AACA,iBAAK,KAAK,IAAI;AACd,YAAAC,QAAO;AAAA,UACT,OAAO;AACL,kBAAMD,EAAC,IAAI,MAAM,MAAM,SAAS,CAAC;AACjC,kBAAM,IAAI;AAAA,UACZ;AAAA,QACF;AACA,YAAIC,OAAM;AACR,gBAAM,KAAK;AACX,eAAK,QAAQ,OAAO,OAAO,MAAM,UAAU;AAAA,QAC7C;AACA,YAAI,CAAC,MAAM,QAAQ;AACjB,gBAAM,UAAU;AAChB,eAAK,QAAQ,OAAO,OAAO,MAAM,UAAU;AAC3C,gBAAM,UAAU;AAAA,QAClB;AACA,qBAAa,MAAM;AAAA,MACrB,CAAC;AACD,WAAK,YAAY;AACjB,UAAI,cAAc,GAAG;AACnB,aAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAAA,IACA,UAAU,OAAO;AACf,YAAM,SAAS,KAAK;AACpB,UAAI,QAAQ,OAAO,IAAI,KAAK;AAC5B,UAAI,CAAC,OAAO;AACV,gBAAQ;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,UACT,OAAO,CAAC;AAAA,UACR,WAAW;AAAA,YACT,UAAU,CAAC;AAAA,YACX,UAAU,CAAC;AAAA,UACb;AAAA,QACF;AACA,eAAO,IAAI,OAAO,KAAK;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAAA,IACA,OAAO,OAAO,OAAO,IAAI;AACvB,WAAK,UAAU,KAAK,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE;AAAA,IAChD;AAAA,IACA,IAAI,OAAO,OAAO;AAChB,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ;AAC3B;AAAA,MACF;AACA,WAAK,UAAU,KAAK,EAAE,MAAM,KAAK,GAAG,KAAK;AAAA,IAC3C;AAAA,IACA,IAAI,OAAO;AACT,aAAO,KAAK,UAAU,KAAK,EAAE,MAAM,SAAS;AAAA,IAC9C;AAAA,IACA,MAAM,OAAO;AACX,YAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK;AACpC,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AACA,YAAM,UAAU;AAChB,YAAM,QAAQ,KAAK,IAAI;AACvB,YAAM,WAAW,MAAM,MAAM,OAAO,CAAC,KAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,SAAS,GAAG,CAAC;AACjF,WAAK,SAAS;AAAA,IAChB;AAAA,IACA,QAAQ,OAAO;AACb,UAAI,CAAC,KAAK,UAAU;AAClB,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK;AACpC,UAAI,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,MAAM,MAAM,QAAQ;AACnD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IACA,KAAK,OAAO;AACV,YAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK;AACpC,UAAI,CAAC,SAAS,CAAC,MAAM,MAAM,QAAQ;AACjC;AAAA,MACF;AACA,YAAM,QAAQ,MAAM;AACpB,UAAID,KAAI,MAAM,SAAS;AACvB,aAAOA,MAAK,GAAG,EAAEA,IAAG;AAClB,cAAMA,EAAC,EAAE,OAAO;AAAA,MAClB;AACA,YAAM,QAAQ,CAAC;AACf,WAAK,QAAQ,OAAO,OAAO,KAAK,IAAI,GAAG,UAAU;AAAA,IACnD;AAAA,IACA,OAAO,OAAO;AACZ,aAAO,KAAK,QAAQ,OAAO,KAAK;AAAA,IAClC;AAAA,EACF;AACA,MAAIE,YAAW,IAAIL,UAAS;AAE5B,MAAMM,eAAc;AACpB,MAAMC,iBAAgB;AAAA,IACpB,QAAQC,OAAMC,KAAI,QAAQ;AACxB,aAAO,SAAS,MAAMA,MAAKD;AAAA,IAC7B;AAAA,IACA,MAAMA,OAAMC,KAAI,QAAQ;AACtB,YAAM,KAAKC,OAAMF,SAAQF,YAAW;AACpC,YAAM,KAAK,GAAG,SAASI,OAAMD,OAAMH,YAAW;AAC9C,aAAO,MAAM,GAAG,QACZ,GAAG,IAAI,IAAI,MAAM,EAAE,UAAU,IAC7BG;AAAA,IACN;AAAA,IACA,OAAOD,OAAMC,KAAI,QAAQ;AACvB,aAAOD,SAAQC,MAAKD,SAAQ;AAAA,IAC9B;AAAA,EACF;AACA,MAAMG,aAAN,MAAgB;AAAA,IACd,YAAY,KAAK,QAAQ,MAAMF,KAAI;AACjC,YAAM,eAAe,OAAO,IAAI;AAChC,MAAAA,MAAKG,SAAQ,CAAC,IAAI,IAAIH,KAAI,cAAc,IAAI,IAAI,CAAC;AACjD,YAAMD,QAAOI,SAAQ,CAAC,IAAI,MAAM,cAAcH,GAAE,CAAC;AACjD,WAAK,UAAU;AACf,WAAK,MAAM,IAAI,MAAMF,eAAc,IAAI,QAAQ,OAAOC,KAAI;AAC1D,WAAK,UAAUK,SAAQ,IAAI,MAAM,KAAKA,SAAQ;AAC9C,WAAK,SAAS,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE;AACtD,WAAK,YAAY,KAAK,SAAS,KAAK,MAAM,IAAI,QAAQ;AACtD,WAAK,QAAQ,CAAC,CAAC,IAAI;AACnB,WAAK,UAAU;AACf,WAAK,QAAQ;AACb,WAAK,QAAQL;AACb,WAAK,MAAMC;AACX,WAAK,YAAY;AAAA,IACnB;AAAA,IACA,SAAS;AACP,aAAO,KAAK;AAAA,IACd;AAAA,IACA,OAAO,KAAKA,KAAI,MAAM;AACpB,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,KAAK;AAClB,cAAM,eAAe,KAAK,QAAQ,KAAK,KAAK;AAC5C,cAAM,UAAU,OAAO,KAAK;AAC5B,cAAM,SAAS,KAAK,YAAY;AAChC,aAAK,SAAS;AACd,aAAK,YAAY,KAAK,MAAM,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC;AAC1D,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,IAAI;AACnB,aAAK,MAAMG,SAAQ,CAAC,IAAI,IAAIH,KAAI,cAAc,IAAI,IAAI,CAAC;AACvD,aAAK,QAAQG,SAAQ,CAAC,IAAI,MAAM,cAAcH,GAAE,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,IACA,SAAS;AACP,UAAI,KAAK,SAAS;AAChB,aAAK,KAAK,KAAK,IAAI,CAAC;AACpB,aAAK,UAAU;AACf,aAAK,QAAQ,KAAK;AAAA,MACpB;AAAA,IACF;AAAA,IACA,KAAK,MAAM;AACT,YAAM,UAAU,OAAO,KAAK;AAC5B,YAAMK,YAAW,KAAK;AACtB,YAAM,OAAO,KAAK;AAClB,YAAMN,QAAO,KAAK;AAClB,YAAM,OAAO,KAAK;AAClB,YAAMC,MAAK,KAAK;AAChB,UAAI;AACJ,WAAK,UAAUD,UAASC,QAAO,QAAS,UAAUK;AAClD,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,QAAQ,IAAI,IAAIL;AACrB,aAAK,QAAQ,IAAI;AACjB;AAAA,MACF;AACA,UAAI,UAAU,GAAG;AACf,aAAK,QAAQ,IAAI,IAAID;AACrB;AAAA,MACF;AACA,eAAU,UAAUM,YAAY;AAChC,eAAS,QAAQ,SAAS,IAAI,IAAI,SAAS;AAC3C,eAAS,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,CAAC;AACtD,WAAK,QAAQ,IAAI,IAAI,KAAK,IAAIN,OAAMC,KAAI,MAAM;AAAA,IAChD;AAAA,IACA,OAAO;AACL,YAAM,WAAW,KAAK,cAAc,KAAK,YAAY,CAAC;AACtD,aAAO,IAAI,QAAQ,CAAC,KAAK,QAAQ;AAC/B,iBAAS,KAAK,EAAC,KAAK,IAAG,CAAC;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,UAAU;AAChB,YAAM,SAAS,WAAW,QAAQ;AAClC,YAAM,WAAW,KAAK,aAAa,CAAC;AACpC,eAASN,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,iBAASA,EAAC,EAAE,MAAM,EAAE;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAEA,MAAMY,WAAU,CAAC,KAAK,KAAK,eAAe,UAAU,SAAS;AAC7D,MAAMC,UAAS,CAAC,SAAS,eAAe,iBAAiB;AACzD,EAAAC,UAAS,IAAI,aAAa;AAAA,IACxB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,EACR,CAAC;AACD,MAAM,mBAAmB,OAAO,KAAKA,UAAS,SAAS;AACvD,EAAAA,UAAS,SAAS,aAAa;AAAA,IAC7B,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa,CAACC,UAASA,UAAS,gBAAgBA,UAAS,gBAAgBA,UAAS;AAAA,EACpF,CAAC;AACD,EAAAD,UAAS,IAAI,cAAc;AAAA,IACzB,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAYD;AAAA,IACd;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,YAAYD;AAAA,IACd;AAAA,EACF,CAAC;AACD,EAAAE,UAAS,SAAS,cAAc;AAAA,IAC9B,WAAW;AAAA,EACb,CAAC;AACD,EAAAA,UAAS,IAAI,eAAe;AAAA,IAC1B,QAAQ;AAAA,MACN,WAAW;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,WAAW;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,YAAY;AAAA,QACV,QAAQ;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,SAAS;AAAA,UACP,MAAM;AAAA,UACN,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,YAAY;AAAA,QACV,QAAQ;AAAA,UACN,IAAI;AAAA,QACN;AAAA,QACA,SAAS;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,IAAI,CAAAE,OAAKA,KAAI;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACD,MAAMC,cAAN,MAAiB;AAAA,IACf,YAAY,OAAOC,SAAQ;AACzB,WAAK,SAAS;AACd,WAAK,cAAc,oBAAI,IAAI;AAC3B,WAAK,UAAUA,OAAM;AAAA,IACvB;AAAA,IACA,UAAUA,SAAQ;AAChB,UAAI,CAACC,UAASD,OAAM,GAAG;AACrB;AAAA,MACF;AACA,YAAM,gBAAgB,KAAK;AAC3B,aAAO,oBAAoBA,OAAM,EAAE,QAAQ,CAAAE,SAAO;AAChD,cAAM,MAAMF,QAAOE,IAAG;AACtB,YAAI,CAACD,UAAS,GAAG,GAAG;AAClB;AAAA,QACF;AACA,cAAM,WAAW,CAAC;AAClB,mBAAWE,WAAU,kBAAkB;AACrC,mBAASA,OAAM,IAAI,IAAIA,OAAM;AAAA,QAC/B;AACA,SAACC,SAAQ,IAAI,UAAU,KAAK,IAAI,cAAc,CAACF,IAAG,GAAG,QAAQ,CAAC,SAAS;AACrE,cAAI,SAASA,QAAO,CAAC,cAAc,IAAI,IAAI,GAAG;AAC5C,0BAAc,IAAI,MAAM,QAAQ;AAAA,UAClC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,QAAQ,QAAQ;AAC9B,YAAM,aAAa,OAAO;AAC1B,YAAMG,WAAUC,sBAAqB,QAAQ,UAAU;AACvD,UAAI,CAACD,UAAS;AACZ,eAAO,CAAC;AAAA,MACV;AACA,YAAM,aAAa,KAAK,kBAAkBA,UAAS,UAAU;AAC7D,UAAI,WAAW,SAAS;AACtB,QAAAE,UAAS,OAAO,QAAQ,aAAa,UAAU,EAAE,KAAK,MAAM;AAC1D,iBAAO,UAAU;AAAA,QACnB,GAAG,MAAM;AAAA,QACT,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,IACA,kBAAkB,QAAQ,QAAQ;AAChC,YAAM,gBAAgB,KAAK;AAC3B,YAAM,aAAa,CAAC;AACpB,YAAM,UAAU,OAAO,gBAAgB,OAAO,cAAc,CAAC;AAC7D,YAAM,QAAQ,OAAO,KAAK,MAAM;AAChC,YAAM,OAAO,KAAK,IAAI;AACtB,UAAIzB;AACJ,WAAKA,KAAI,MAAM,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AACtC,cAAM,OAAO,MAAMA,EAAC;AACpB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B;AAAA,QACF;AACA,YAAI,SAAS,WAAW;AACtB,qBAAW,KAAK,GAAG,KAAK,gBAAgB,QAAQ,MAAM,CAAC;AACvD;AAAA,QACF;AACA,cAAM,QAAQ,OAAO,IAAI;AACzB,YAAI,YAAY,QAAQ,IAAI;AAC5B,cAAM,MAAM,cAAc,IAAI,IAAI;AAClC,YAAI,WAAW;AACb,cAAI,OAAO,UAAU,OAAO,GAAG;AAC7B,sBAAU,OAAO,KAAK,OAAO,IAAI;AACjC;AAAA,UACF,OAAO;AACL,sBAAU,OAAO;AAAA,UACnB;AAAA,QACF;AACA,YAAI,CAAC,OAAO,CAAC,IAAI,UAAU;AACzB,iBAAO,IAAI,IAAI;AACf;AAAA,QACF;AACA,gBAAQ,IAAI,IAAI,YAAY,IAAIQ,WAAU,KAAK,QAAQ,MAAM,KAAK;AAClE,mBAAW,KAAK,SAAS;AAAA,MAC3B;AACA,aAAO;AAAA,IACT;AAAA,IACA,OAAO,QAAQ,QAAQ;AACrB,UAAI,KAAK,YAAY,SAAS,GAAG;AAC/B,eAAO,OAAO,QAAQ,MAAM;AAC5B;AAAA,MACF;AACA,YAAM,aAAa,KAAK,kBAAkB,QAAQ,MAAM;AACxD,UAAI,WAAW,QAAQ;AACrB,QAAAN,UAAS,IAAI,KAAK,QAAQ,UAAU;AACpC,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,WAASuB,UAAS,YAAY,YAAY;AACxC,UAAM,UAAU,CAAC;AACjB,UAAM,OAAO,OAAO,KAAK,UAAU;AACnC,aAASzB,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAM,OAAO,WAAW,KAAKA,EAAC,CAAC;AAC/B,UAAI,QAAQ,KAAK,OAAO,GAAG;AACzB,gBAAQ,KAAK,KAAK,KAAK,CAAC;AAAA,MAC1B;AAAA,IACF;AACA,WAAO,QAAQ,IAAI,OAAO;AAAA,EAC5B;AACA,WAASwB,sBAAqB,QAAQ,YAAY;AAChD,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AACA,QAAID,WAAU,OAAO;AACrB,QAAI,CAACA,UAAS;AACZ,aAAO,UAAU;AACjB;AAAA,IACF;AACA,QAAIA,SAAQ,SAAS;AACnB,aAAO,UAAUA,WAAU,OAAO,OAAO,CAAC,GAAGA,UAAS,EAAC,SAAS,OAAO,aAAa,CAAC,EAAC,CAAC;AAAA,IACzF;AACA,WAAOA;AAAA,EACT;AAEA,WAASG,WAAUC,QAAO,iBAAiB;AACzC,UAAM,OAAOA,UAASA,OAAM,WAAW,CAAC;AACxC,UAAM,UAAU,KAAK;AACrB,UAAMC,OAAM,KAAK,QAAQ,SAAY,kBAAkB;AACvD,UAAMC,OAAM,KAAK,QAAQ,SAAY,kBAAkB;AACvD,WAAO;AAAA,MACL,OAAO,UAAUA,OAAMD;AAAA,MACvB,KAAK,UAAUA,OAAMC;AAAA,IACvB;AAAA,EACF;AACA,WAASC,aAAY,QAAQ,QAAQ,iBAAiB;AACpD,QAAI,oBAAoB,OAAO;AAC7B,aAAO;AAAA,IACT;AACA,UAAMC,KAAIL,WAAU,QAAQ,eAAe;AAC3C,UAAMM,KAAIN,WAAU,QAAQ,eAAe;AAC3C,WAAO;AAAA,MACL,KAAKM,GAAE;AAAA,MACP,OAAOD,GAAE;AAAA,MACT,QAAQC,GAAE;AAAA,MACV,MAAMD,GAAE;AAAA,IACV;AAAA,EACF;AACA,WAASE,QAAO,OAAO;AACrB,QAAIC,IAAGC,IAAGC,IAAGC;AACb,QAAIlB,UAAS,KAAK,GAAG;AACnB,MAAAe,KAAI,MAAM;AACV,MAAAC,KAAI,MAAM;AACV,MAAAC,KAAI,MAAM;AACV,MAAAC,KAAI,MAAM;AAAA,IACZ,OAAO;AACL,MAAAH,KAAIC,KAAIC,KAAIC,KAAI;AAAA,IAClB;AACA,WAAO;AAAA,MACL,KAAKH;AAAA,MACL,OAAOC;AAAA,MACP,QAAQC;AAAA,MACR,MAAMC;AAAA,MACN,UAAU,UAAU;AAAA,IACtB;AAAA,EACF;AACA,WAASC,yBAAwB,OAAO,eAAe;AACrD,UAAM,OAAO,CAAC;AACd,UAAM,WAAW,MAAM,uBAAuB,aAAa;AAC3D,QAAItC,IAAG;AACP,SAAKA,KAAI,GAAG,OAAO,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACjD,WAAK,KAAK,SAASA,EAAC,EAAE,KAAK;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AACA,WAASuC,YAAW,OAAO,OAAO,SAAShB,WAAU,CAAC,GAAG;AACvD,UAAM,OAAO,MAAM;AACnB,UAAM,aAAaA,SAAQ,SAAS;AACpC,QAAIvB,IAAG,MAAM,cAAc;AAC3B,QAAI,UAAU,MAAM;AAClB;AAAA,IACF;AACA,SAAKA,KAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC7C,qBAAe,CAAC,KAAKA,EAAC;AACtB,UAAI,iBAAiB,SAAS;AAC5B,YAAIuB,SAAQ,KAAK;AACf;AAAA,QACF;AACA;AAAA,MACF;AACA,mBAAa,MAAM,OAAO,YAAY;AACtC,UAAIiB,gBAAe,UAAU,MAAM,eAAe,UAAU,KAAKC,MAAK,KAAK,MAAMA,MAAK,UAAU,KAAK;AACnG,iBAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASC,0BAAyBC,OAAM;AACtC,UAAM,OAAO,OAAO,KAAKA,KAAI;AAC7B,UAAM,QAAQ,IAAI,MAAM,KAAK,MAAM;AACnC,QAAI3C,IAAG,MAAMoB;AACb,SAAKpB,KAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC7C,MAAAoB,OAAM,KAAKpB,EAAC;AACZ,YAAMA,EAAC,IAAI;AAAA,QACT,GAAGoB;AAAA,QACH,GAAGuB,MAAKvB,IAAG;AAAA,MACb;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASwB,WAAUjB,QAAO,MAAM;AAC9B,UAAM,UAAUA,UAASA,OAAM,QAAQ;AACvC,WAAO,WAAY,YAAY,UAAa,KAAK,UAAU;AAAA,EAC7D;AACA,WAASkB,aAAY,YAAY,YAAY,MAAM;AACjD,WAAO,GAAG,WAAW,MAAM,WAAW,MAAM,KAAK,SAAS,KAAK;AAAA,EACjE;AACA,WAASC,eAAcnB,QAAO;AAC5B,UAAM,EAAC,KAAAC,MAAK,KAAAC,MAAK,YAAY,WAAU,IAAIF,OAAM,cAAc;AAC/D,WAAO;AAAA,MACL,KAAK,aAAaC,OAAM,OAAO;AAAA,MAC/B,KAAK,aAAaC,OAAM,OAAO;AAAA,IACjC;AAAA,EACF;AACA,WAASkB,kBAAiB,QAAQ,UAAU,YAAY;AACtD,UAAM,WAAW,OAAO,QAAQ,MAAM,OAAO,QAAQ,IAAI,CAAC;AAC1D,WAAO,SAAS,UAAU,MAAM,SAAS,UAAU,IAAI,CAAC;AAAA,EAC1D;AACA,WAASC,qBAAoB,OAAO,QAAQ,UAAU,MAAM;AAC1D,eAAW,QAAQ,OAAO,wBAAwB,IAAI,EAAE,QAAQ,GAAG;AACjE,YAAM,QAAQ,MAAM,KAAK,KAAK;AAC9B,UAAK,YAAY,QAAQ,KAAO,CAAC,YAAY,QAAQ,GAAI;AACvD,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASC,cAAa,YAAY,QAAQ;AACxC,UAAM,EAAC,OAAO,aAAa,KAAI,IAAI;AACnC,UAAM,SAAS,MAAM,YAAY,MAAM,UAAU,CAAC;AAClD,UAAM,EAAC,QAAQ,QAAQ,OAAO,aAAY,IAAI;AAC9C,UAAM,QAAQ,OAAO;AACrB,UAAM,QAAQ,OAAO;AACrB,UAAM7B,OAAMyB,aAAY,QAAQ,QAAQ,IAAI;AAC5C,UAAM,OAAO,OAAO;AACpB,QAAI;AACJ,aAAS7C,KAAI,GAAGA,KAAI,MAAM,EAAEA,IAAG;AAC7B,YAAM,OAAO,OAAOA,EAAC;AACrB,YAAM,EAAC,CAAC,KAAK,GAAGkD,QAAO,CAAC,KAAK,GAAG,MAAK,IAAI;AACzC,YAAM,aAAa,KAAK,YAAY,KAAK,UAAU,CAAC;AACpD,cAAQ,WAAW,KAAK,IAAIH,kBAAiB,QAAQ3B,MAAK8B,MAAK;AAC/D,YAAM,YAAY,IAAI;AACtB,YAAM,OAAOF,qBAAoB,OAAO,QAAQ,MAAM,KAAK,IAAI;AAC/D,YAAM,UAAUA,qBAAoB,OAAO,QAAQ,OAAO,KAAK,IAAI;AAAA,IACrE;AAAA,EACF;AACA,WAASG,iBAAgB,OAAO,MAAM;AACpC,UAAMC,UAAS,MAAM;AACrB,WAAO,OAAO,KAAKA,OAAM,EAAE,OAAO,CAAAhC,SAAOgC,QAAOhC,IAAG,EAAE,SAAS,IAAI,EAAE,MAAM;AAAA,EAC5E;AACA,WAASiC,sBAAqB,QAAQH,QAAO;AAC3C,WAAOI;AAAA,MAAc;AAAA,MACnB;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,cAAcJ;AAAA,QACd,OAAAA;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,WAASK,mBAAkB,QAAQL,QAAO,SAAS;AACjD,WAAOI,eAAc,QAAQ;AAAA,MAC3B,QAAQ;AAAA,MACR,WAAWJ;AAAA,MACX,QAAQ;AAAA,MACR,KAAK;AAAA,MACL;AAAA,MACA,OAAAA;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,WAASM,aAAY,MAAM,OAAO;AAChC,UAAM,eAAe,KAAK,WAAW;AACrC,UAAM,OAAO,KAAK,UAAU,KAAK,OAAO;AACxC,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AACA,YAAQ,SAAS,KAAK;AACtB,eAAW,UAAU,OAAO;AAC1B,YAAM,SAAS,OAAO;AACtB,UAAI,CAAC,UAAU,OAAO,IAAI,MAAM,UAAa,OAAO,IAAI,EAAE,YAAY,MAAM,QAAW;AACrF;AAAA,MACF;AACA,aAAO,OAAO,IAAI,EAAE,YAAY;AAAA,IAClC;AAAA,EACF;AACA,MAAMC,sBAAqB,CAAC,SAAS,SAAS,WAAW,SAAS;AAClE,MAAMC,oBAAmB,CAAC,QAAQ,WAAW,SAAS,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM;AACvF,MAAMC,eAAc,CAAC,UAAU,MAAM,UAAU,YAAY,CAAC,KAAK,UAAU,KAAK,YAC3E,EAAC,MAAMrB,yBAAwB,OAAO,IAAI,GAAG,QAAQ,KAAI;AAC9D,MAAMsB,qBAAN,MAAwB;AAAA,IACtB,YAAY,OAAO,cAAc;AAC/B,WAAK,QAAQ;AACb,WAAK,OAAO,MAAM;AAClB,WAAK,QAAQ;AACb,WAAK,kBAAkB,CAAC;AACxB,WAAK,cAAc,KAAK,QAAQ;AAChC,WAAK,QAAQ,KAAK,YAAY;AAC9B,WAAK,UAAU;AACf,WAAK,WAAW;AAChB,WAAK,QAAQ;AACb,WAAK,cAAc;AACnB,WAAK,iBAAiB;AACtB,WAAK,aAAa;AAClB,WAAK,aAAa;AAClB,WAAK,sBAAsB;AAC3B,WAAK,qBAAqB;AAC1B,WAAK,WAAW;AAChB,WAAK,YAAY,CAAC;AAClB,WAAK,WAAW;AAAA,IAClB;AAAA,IACA,aAAa;AACX,YAAM,OAAO,KAAK;AAClB,WAAK,UAAU;AACf,WAAK,WAAW;AAChB,WAAK,WAAWhB,WAAU,KAAK,QAAQ,IAAI;AAC3C,WAAK,YAAY;AAAA,IACnB;AAAA,IACA,YAAY,cAAc;AACxB,UAAI,KAAK,UAAU,cAAc;AAC/B,QAAAY,aAAY,KAAK,WAAW;AAAA,MAC9B;AACA,WAAK,QAAQ;AAAA,IACf;AAAA,IACA,aAAa;AACX,YAAM,QAAQ,KAAK;AACnB,YAAM,OAAO,KAAK;AAClB,YAAM,UAAU,KAAK,WAAW;AAChC,YAAM,WAAW,CAAC,MAAMzB,IAAGC,IAAGG,OAAM,SAAS,MAAMJ,KAAI,SAAS,MAAMI,KAAIH;AAC1E,YAAM,MAAM,KAAK,UAAU6B,gBAAe,QAAQ,SAASV,iBAAgB,OAAO,GAAG,CAAC;AACtF,YAAM,MAAM,KAAK,UAAUU,gBAAe,QAAQ,SAASV,iBAAgB,OAAO,GAAG,CAAC;AACtF,YAAM,MAAM,KAAK,UAAUU,gBAAe,QAAQ,SAASV,iBAAgB,OAAO,GAAG,CAAC;AACtF,YAAM,YAAY,KAAK;AACvB,YAAM,MAAM,KAAK,UAAU,SAAS,WAAW,KAAK,KAAK,GAAG;AAC5D,YAAM,MAAM,KAAK,UAAU,SAAS,WAAW,KAAK,KAAK,GAAG;AAC5D,WAAK,SAAS,KAAK,cAAc,GAAG;AACpC,WAAK,SAAS,KAAK,cAAc,GAAG;AACpC,WAAK,SAAS,KAAK,cAAc,GAAG;AACpC,WAAK,SAAS,KAAK,cAAc,GAAG;AACpC,WAAK,SAAS,KAAK,cAAc,GAAG;AAAA,IACtC;AAAA,IACA,aAAa;AACX,aAAO,KAAK,MAAM,KAAK,SAAS,KAAK,KAAK;AAAA,IAC5C;AAAA,IACA,UAAU;AACR,aAAO,KAAK,MAAM,eAAe,KAAK,KAAK;AAAA,IAC7C;AAAA,IACA,cAAc,SAAS;AACrB,aAAO,KAAK,MAAM,OAAO,OAAO;AAAA,IAClC;AAAA,IACA,eAAexB,QAAO;AACpB,YAAM,OAAO,KAAK;AAClB,aAAOA,WAAU,KAAK,SAClB,KAAK,SACL,KAAK;AAAA,IACX;AAAA,IACA,QAAQ;AACN,WAAK,QAAQ,OAAO;AAAA,IACtB;AAAA,IACA,WAAW;AACT,YAAM,OAAO,KAAK;AAClB,UAAI,KAAK,OAAO;AACd,QAAAmC,qBAAoB,KAAK,OAAO,IAAI;AAAA,MACtC;AACA,UAAI,KAAK,UAAU;AACjB,QAAAN,aAAY,IAAI;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AACX,YAAM,UAAU,KAAK,WAAW;AAChC,YAAMb,QAAO,QAAQ,SAAS,QAAQ,OAAO,CAAC;AAC9C,YAAM,QAAQ,KAAK;AACnB,UAAIxB,UAASwB,KAAI,GAAG;AAClB,aAAK,QAAQD,0BAAyBC,KAAI;AAAA,MAC5C,WAAW,UAAUA,OAAM;AACzB,YAAI,OAAO;AACT,UAAAmB,qBAAoB,OAAO,IAAI;AAC/B,gBAAM,OAAO,KAAK;AAClB,UAAAN,aAAY,IAAI;AAChB,eAAK,UAAU,CAAC;AAAA,QAClB;AACA,YAAIb,SAAQ,OAAO,aAAaA,KAAI,GAAG;AACrC,UAAAoB,mBAAkBpB,OAAM,IAAI;AAAA,QAC9B;AACA,aAAK,YAAY,CAAC;AAClB,aAAK,QAAQA;AAAA,MACf;AAAA,IACF;AAAA,IACA,cAAc;AACZ,YAAM,OAAO,KAAK;AAClB,WAAK,WAAW;AAChB,UAAI,KAAK,oBAAoB;AAC3B,aAAK,UAAU,IAAI,KAAK,mBAAmB;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,sBAAsB,kBAAkB;AACtC,YAAM,OAAO,KAAK;AAClB,YAAM,UAAU,KAAK,WAAW;AAChC,UAAI,eAAe;AACnB,WAAK,WAAW;AAChB,YAAM,aAAa,KAAK;AACxB,WAAK,WAAWC,WAAU,KAAK,QAAQ,IAAI;AAC3C,UAAI,KAAK,UAAU,QAAQ,OAAO;AAChC,uBAAe;AACf,QAAAY,aAAY,IAAI;AAChB,aAAK,QAAQ,QAAQ;AAAA,MACvB;AACA,WAAK,gBAAgB,gBAAgB;AACrC,UAAI,gBAAgB,eAAe,KAAK,UAAU;AAChD,QAAAP,cAAa,MAAM,KAAK,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,YAAY;AACV,YAAM/B,UAAS,KAAK,MAAM;AAC1B,YAAM,YAAYA,QAAO,iBAAiB,KAAK,KAAK;AACpD,YAAM,SAASA,QAAO,gBAAgB,KAAK,WAAW,GAAG,WAAW,IAAI;AACxE,WAAK,UAAUA,QAAO,eAAe,QAAQ,KAAK,WAAW,CAAC;AAC9D,WAAK,WAAW,KAAK,QAAQ;AAC7B,WAAK,kBAAkB,CAAC;AAAA,IAC1B;AAAA,IACA,MAAM8C,QAAO,OAAO;AAClB,YAAM,EAAC,aAAa,MAAM,OAAOrB,MAAI,IAAI;AACzC,YAAM,EAAC,QAAQ,SAAQ,IAAI;AAC3B,YAAM,QAAQ,OAAO;AACrB,UAAI,SAASqB,WAAU,KAAK,UAAUrB,MAAK,SAAS,OAAO,KAAK;AAChE,UAAIsB,QAAOD,SAAQ,KAAK,KAAK,QAAQA,SAAQ,CAAC;AAC9C,UAAIhE,IAAG,KAAK;AACZ,UAAI,KAAK,aAAa,OAAO;AAC3B,aAAK,UAAU2C;AACf,aAAK,UAAU;AACf,iBAASA;AAAA,MACX,OAAO;AACL,YAAIrB,SAAQqB,MAAKqB,MAAK,CAAC,GAAG;AACxB,mBAAS,KAAK,eAAe,MAAMrB,OAAMqB,QAAO,KAAK;AAAA,QACvD,WAAW7C,UAASwB,MAAKqB,MAAK,CAAC,GAAG;AAChC,mBAAS,KAAK,gBAAgB,MAAMrB,OAAMqB,QAAO,KAAK;AAAA,QACxD,OAAO;AACL,mBAAS,KAAK,mBAAmB,MAAMrB,OAAMqB,QAAO,KAAK;AAAA,QAC3D;AACA,cAAM,6BAA6B,MAAM,IAAI,KAAK,MAAM,QAASC,SAAQ,IAAI,KAAK,IAAIA,MAAK,KAAK;AAChG,aAAKjE,KAAI,GAAGA,KAAI,OAAO,EAAEA,IAAG;AAC1B,eAAK,QAAQA,KAAIgE,MAAK,IAAI,MAAM,OAAOhE,EAAC;AACxC,cAAI,QAAQ;AACV,gBAAI,2BAA2B,GAAG;AAChC,uBAAS;AAAA,YACX;AACA,YAAAiE,QAAO;AAAA,UACT;AAAA,QACF;AACA,aAAK,UAAU;AAAA,MACjB;AACA,UAAI,UAAU;AACZ,QAAAhB,cAAa,MAAM,MAAM;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,mBAAmB,MAAMN,OAAMqB,QAAO,OAAO;AAC3C,YAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,YAAM,QAAQ,OAAO;AACrB,YAAM,QAAQ,OAAO;AACrB,YAAM,SAAS,OAAO,UAAU;AAChC,YAAM,cAAc,WAAW;AAC/B,YAAM,SAAS,IAAI,MAAM,KAAK;AAC9B,UAAIhE,IAAG,MAAMkD;AACb,WAAKlD,KAAI,GAAG,OAAO,OAAOA,KAAI,MAAM,EAAEA,IAAG;AACvC,QAAAkD,SAAQlD,KAAIgE;AACZ,eAAOhE,EAAC,IAAI;AAAA,UACV,CAAC,KAAK,GAAG,eAAe,OAAO,MAAM,OAAOkD,MAAK,GAAGA,MAAK;AAAA,UACzD,CAAC,KAAK,GAAG,OAAO,MAAMP,MAAKO,MAAK,GAAGA,MAAK;AAAA,QAC1C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,eAAe,MAAMP,OAAMqB,QAAO,OAAO;AACvC,YAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,YAAM,SAAS,IAAI,MAAM,KAAK;AAC9B,UAAIhE,IAAG,MAAMkD,QAAO;AACpB,WAAKlD,KAAI,GAAG,OAAO,OAAOA,KAAI,MAAM,EAAEA,IAAG;AACvC,QAAAkD,SAAQlD,KAAIgE;AACZ,eAAOrB,MAAKO,MAAK;AACjB,eAAOlD,EAAC,IAAI;AAAA,UACV,GAAG,OAAO,MAAM,KAAK,CAAC,GAAGkD,MAAK;AAAA,UAC9B,GAAG,OAAO,MAAM,KAAK,CAAC,GAAGA,MAAK;AAAA,QAChC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,gBAAgB,MAAMP,OAAMqB,QAAO,OAAO;AACxC,YAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,YAAM,EAAC,WAAW,KAAK,WAAW,IAAG,IAAI,KAAK;AAC9C,YAAM,SAAS,IAAI,MAAM,KAAK;AAC9B,UAAIhE,IAAG,MAAMkD,QAAO;AACpB,WAAKlD,KAAI,GAAG,OAAO,OAAOA,KAAI,MAAM,EAAEA,IAAG;AACvC,QAAAkD,SAAQlD,KAAIgE;AACZ,eAAOrB,MAAKO,MAAK;AACjB,eAAOlD,EAAC,IAAI;AAAA,UACV,GAAG,OAAO,MAAMkE,kBAAiB,MAAM,QAAQ,GAAGhB,MAAK;AAAA,UACvD,GAAG,OAAO,MAAMgB,kBAAiB,MAAM,QAAQ,GAAGhB,MAAK;AAAA,QACzD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,UAAUA,QAAO;AACf,aAAO,KAAK,YAAY,QAAQA,MAAK;AAAA,IACvC;AAAA,IACA,eAAeA,QAAO;AACpB,aAAO,KAAK,YAAY,KAAKA,MAAK;AAAA,IACpC;AAAA,IACA,WAAWvB,QAAO,QAAQ,MAAM;AAC9B,YAAM,QAAQ,KAAK;AACnB,YAAM,OAAO,KAAK;AAClB,YAAM,QAAQ,OAAOA,OAAM,IAAI;AAC/B,YAAM,QAAQ;AAAA,QACZ,MAAMW,yBAAwB,OAAO,IAAI;AAAA,QACzC,QAAQ,OAAO,QAAQX,OAAM,IAAI;AAAA,MACnC;AACA,aAAOY,YAAW,OAAO,OAAO,KAAK,OAAO,EAAC,KAAI,CAAC;AAAA,IACpD;AAAA,IACA,sBAAsB4B,QAAOxC,QAAO,QAAQ,OAAO;AACjD,YAAM,cAAc,OAAOA,OAAM,IAAI;AACrC,UAAI,QAAQ,gBAAgB,OAAO,MAAM;AACzC,YAAM,SAAS,SAAS,OAAO,QAAQA,OAAM,IAAI;AACjD,UAAI,SAAS,QAAQ;AACnB,cAAM,SAAS;AACf,gBAAQY,YAAW,OAAO,aAAa,KAAK,YAAY,KAAK;AAAA,MAC/D;AACA,MAAA4B,OAAM,MAAM,KAAK,IAAIA,OAAM,KAAK,KAAK;AACrC,MAAAA,OAAM,MAAM,KAAK,IAAIA,OAAM,KAAK,KAAK;AAAA,IACvC;AAAA,IACA,UAAUxC,QAAO,UAAU;AACzB,YAAM,OAAO,KAAK;AAClB,YAAM,UAAU,KAAK;AACrB,YAAM,SAAS,KAAK,WAAWA,WAAU,KAAK;AAC9C,YAAM,OAAO,QAAQ;AACrB,YAAM,aAAa,KAAK,eAAeA,MAAK;AAC5C,YAAM,QAAQgC,aAAY,UAAU,MAAM,KAAK,KAAK;AACpD,YAAMQ,SAAQ,EAAC,KAAK,OAAO,mBAAmB,KAAK,OAAO,kBAAiB;AAC3E,YAAM,EAAC,KAAK,UAAU,KAAK,SAAQ,IAAIrB,eAAc,UAAU;AAC/D,UAAI9C,IAAG;AACP,eAAS,QAAQ;AACf,iBAAS,QAAQA,EAAC;AAClB,cAAM,aAAa,OAAO,WAAW,IAAI;AACzC,eAAO,CAACwC,gBAAe,OAAOb,OAAM,IAAI,CAAC,KAAK,WAAW,cAAc,WAAW;AAAA,MACpF;AACA,WAAK3B,KAAI,GAAGA,KAAI,MAAM,EAAEA,IAAG;AACzB,YAAI,MAAM,GAAG;AACX;AAAA,QACF;AACA,aAAK,sBAAsBmE,QAAOxC,QAAO,QAAQ,KAAK;AACtD,YAAI,QAAQ;AACV;AAAA,QACF;AAAA,MACF;AACA,UAAI,QAAQ;AACV,aAAK3B,KAAI,OAAO,GAAGA,MAAK,GAAG,EAAEA,IAAG;AAC9B,cAAI,MAAM,GAAG;AACX;AAAA,UACF;AACA,eAAK,sBAAsBmE,QAAOxC,QAAO,QAAQ,KAAK;AACtD;AAAA,QACF;AAAA,MACF;AACA,aAAOwC;AAAA,IACT;AAAA,IACA,mBAAmBxC,QAAO;AACxB,YAAM,SAAS,KAAK,YAAY;AAChC,YAAM,SAAS,CAAC;AAChB,UAAI3B,IAAG,MAAM;AACb,WAAKA,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,gBAAQ,OAAOA,EAAC,EAAE2B,OAAM,IAAI;AAC5B,YAAIa,gBAAe,KAAK,GAAG;AACzB,iBAAO,KAAK,KAAK;AAAA,QACnB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB;AACf,aAAO;AAAA,IACT;AAAA,IACA,iBAAiBU,QAAO;AACtB,YAAM,OAAO,KAAK;AAClB,YAAM,SAAS,KAAK;AACpB,YAAM,SAAS,KAAK;AACpB,YAAM,SAAS,KAAK,UAAUA,MAAK;AACnC,aAAO;AAAA,QACL,OAAO,SAAS,KAAK,OAAO,iBAAiB,OAAO,OAAO,IAAI,CAAC,IAAI;AAAA,QACpE,OAAO,SAAS,KAAK,OAAO,iBAAiB,OAAO,OAAO,IAAI,CAAC,IAAI;AAAA,MACtE;AAAA,IACF;AAAA,IACA,QAAQ,MAAM;AACZ,YAAM,OAAO,KAAK;AAClB,WAAK,OAAO,QAAQ,SAAS;AAC7B,WAAK,QAAQjB,QAAO4B,gBAAe,KAAK,QAAQ,MAAM/B,aAAY,KAAK,QAAQ,KAAK,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAC;AAAA,IACrH;AAAA,IACA,OAAO,MAAM;AAAA,IAAC;AAAA,IACd,OAAO;AACL,YAAM,MAAM,KAAK;AACjB,YAAM,QAAQ,KAAK;AACnB,YAAM,OAAO,KAAK;AAClB,YAAMsC,YAAW,KAAK,QAAQ,CAAC;AAC/B,YAAM,OAAO,MAAM;AACnB,YAAMC,UAAS,CAAC;AAChB,YAAML,SAAQ,KAAK,cAAc;AACjC,YAAM,QAAQ,KAAK,cAAeI,UAAS,SAASJ;AACpD,YAAM,0BAA0B,KAAK,QAAQ;AAC7C,UAAIhE;AACJ,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,KAAK,KAAK,MAAMgE,QAAO,KAAK;AAAA,MAC3C;AACA,WAAKhE,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAO,EAAEhE,IAAG;AACtC,cAAM,UAAUoE,UAASpE,EAAC;AAC1B,YAAI,QAAQ,QAAQ;AAClB;AAAA,QACF;AACA,YAAI,QAAQ,UAAU,yBAAyB;AAC7C,UAAAqE,QAAO,KAAK,OAAO;AAAA,QACrB,OAAO;AACL,kBAAQ,KAAK,KAAK,IAAI;AAAA,QACxB;AAAA,MACF;AACA,WAAKrE,KAAI,GAAGA,KAAIqE,QAAO,QAAQ,EAAErE,IAAG;AAClC,QAAAqE,QAAOrE,EAAC,EAAE,KAAK,KAAK,IAAI;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,SAASkD,QAAOmB,SAAQ;AACtB,YAAM,OAAOA,UAAS,WAAW;AACjC,aAAOnB,WAAU,UAAa,KAAK,YAAY,UAC3C,KAAK,6BAA6B,IAAI,IACtC,KAAK,0BAA0BA,UAAS,GAAG,IAAI;AAAA,IACrD;AAAA,IACA,WAAWA,QAAOmB,SAAQ,MAAM;AAC9B,YAAM,UAAU,KAAK,WAAW;AAChC,UAAI;AACJ,UAAInB,UAAS,KAAKA,SAAQ,KAAK,YAAY,KAAK,QAAQ;AACtD,cAAM,UAAU,KAAK,YAAY,KAAKA,MAAK;AAC3C,kBAAU,QAAQ,aACf,QAAQ,WAAWK,mBAAkB,KAAK,WAAW,GAAGL,QAAO,OAAO;AACzE,gBAAQ,SAAS,KAAK,UAAUA,MAAK;AACrC,gBAAQ,MAAM,QAAQ,KAAKA,MAAK;AAChC,gBAAQ,QAAQ,QAAQ,YAAYA;AAAA,MACtC,OAAO;AACL,kBAAU,KAAK,aACZ,KAAK,WAAWG,sBAAqB,KAAK,MAAM,WAAW,GAAG,KAAK,KAAK;AAC3E,gBAAQ,UAAU;AAClB,gBAAQ,QAAQ,QAAQ,eAAe,KAAK;AAAA,MAC9C;AACA,cAAQ,SAAS,CAAC,CAACgB;AACnB,cAAQ,OAAO;AACf,aAAO;AAAA,IACT;AAAA,IACA,6BAA6B,MAAM;AACjC,aAAO,KAAK,uBAAuB,KAAK,mBAAmB,IAAI,IAAI;AAAA,IACrE;AAAA,IACA,0BAA0BnB,QAAO,MAAM;AACrC,aAAO,KAAK,uBAAuB,KAAK,gBAAgB,IAAI,MAAMA,MAAK;AAAA,IACzE;AAAA,IACA,uBAAuBoB,cAAa,OAAO,WAAWpB,QAAO;AAC3D,YAAMmB,UAAS,SAAS;AACxB,YAAME,SAAQ,KAAK;AACnB,YAAM,WAAWD,eAAc,MAAM;AACrC,YAAM,SAASC,OAAM,QAAQ;AAC7B,YAAM,UAAU,KAAK,uBAAuBC,SAAQtB,MAAK;AACzD,UAAI,QAAQ;AACV,eAAOQ,kBAAiB,QAAQ,OAAO;AAAA,MACzC;AACA,YAAMxC,UAAS,KAAK,MAAM;AAC1B,YAAM,YAAYA,QAAO,wBAAwB,KAAK,OAAOoD,YAAW;AACxE,YAAM,WAAWD,UAAS,CAAC,GAAGC,qBAAoB,SAASA,cAAa,EAAE,IAAI,CAACA,cAAa,EAAE;AAC9F,YAAM,SAASpD,QAAO,gBAAgB,KAAK,WAAW,GAAG,SAAS;AAClE,YAAMuD,SAAQ,OAAO,KAAK3D,UAAS,SAASwD,YAAW,CAAC;AACxD,YAAM,UAAU,MAAM,KAAK,WAAWpB,QAAOmB,OAAM;AACnD,YAAM,SAASnD,QAAO,oBAAoB,QAAQuD,QAAO,SAAS,QAAQ;AAC1E,UAAI,OAAO,SAAS;AAClB,eAAO,UAAU;AACjB,QAAAF,OAAM,QAAQ,IAAI,OAAO,OAAOb,kBAAiB,QAAQ,OAAO,CAAC;AAAA,MACnE;AACA,aAAO;AAAA,IACT;AAAA,IACA,mBAAmBR,QAAO,YAAYmB,SAAQ;AAC5C,YAAM,QAAQ,KAAK;AACnB,YAAME,SAAQ,KAAK;AACnB,YAAM,WAAW,aAAa;AAC9B,YAAM,SAASA,OAAM,QAAQ;AAC7B,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AACA,UAAIhD;AACJ,UAAI,MAAM,QAAQ,cAAc,OAAO;AACrC,cAAML,UAAS,KAAK,MAAM;AAC1B,cAAM,YAAYA,QAAO,0BAA0B,KAAK,OAAO,UAAU;AACzE,cAAM,SAASA,QAAO,gBAAgB,KAAK,WAAW,GAAG,SAAS;AAClE,QAAAK,WAAUL,QAAO,eAAe,QAAQ,KAAK,WAAWgC,QAAOmB,SAAQ,UAAU,CAAC;AAAA,MACpF;AACA,YAAM,aAAa,IAAIpD,YAAW,OAAOM,YAAWA,SAAQ,UAAU;AACtE,UAAIA,YAAWA,SAAQ,YAAY;AACjC,QAAAgD,OAAM,QAAQ,IAAI,OAAO,OAAO,UAAU;AAAA,MAC5C;AACA,aAAO;AAAA,IACT;AAAA,IACA,iBAAiBhD,UAAS;AACxB,UAAI,CAACA,SAAQ,SAAS;AACpB;AAAA,MACF;AACA,aAAO,KAAK,mBAAmB,KAAK,iBAAiB,OAAO,OAAO,CAAC,GAAGA,QAAO;AAAA,IAChF;AAAA,IACA,eAAe,MAAM,eAAe;AAClC,aAAO,CAAC,iBAAiBkC,oBAAmB,IAAI,KAAK,KAAK,MAAM;AAAA,IAClE;AAAA,IACA,kBAAkBO,QAAO,MAAM;AAC7B,YAAM,YAAY,KAAK,0BAA0BA,QAAO,IAAI;AAC5D,YAAM,0BAA0B,KAAK;AACrC,YAAM,gBAAgB,KAAK,iBAAiB,SAAS;AACrD,YAAM,iBAAiB,KAAK,eAAe,MAAM,aAAa,KAAM,kBAAkB;AACtF,WAAK,oBAAoB,eAAe,MAAM,SAAS;AACvD,aAAO,EAAC,eAAe,eAAc;AAAA,IACvC;AAAA,IACA,cAAc,SAASd,QAAO,YAAY,MAAM;AAC9C,UAAIO,oBAAmB,IAAI,GAAG;AAC5B,eAAO,OAAO,SAAS,UAAU;AAAA,MACnC,OAAO;AACL,aAAK,mBAAmBP,QAAO,IAAI,EAAE,OAAO,SAAS,UAAU;AAAA,MACjE;AAAA,IACF;AAAA,IACA,oBAAoB,eAAe,MAAM,YAAY;AACnD,UAAI,iBAAiB,CAACO,oBAAmB,IAAI,GAAG;AAC9C,aAAK,mBAAmB,QAAW,IAAI,EAAE,OAAO,eAAe,UAAU;AAAA,MAC3E;AAAA,IACF;AAAA,IACA,UAAU,SAASP,QAAO,MAAMmB,SAAQ;AACtC,cAAQ,SAASA;AACjB,YAAM9C,WAAU,KAAK,SAAS2B,QAAOmB,OAAM;AAC3C,WAAK,mBAAmBnB,QAAO,MAAMmB,OAAM,EAAE,OAAO,SAAS;AAAA,QAC3D,SAAU,CAACA,WAAU,KAAK,iBAAiB9C,QAAO,KAAMA;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,SAAS,cAAc2B,QAAO;AAC7C,WAAK,UAAU,SAASA,QAAO,UAAU,KAAK;AAAA,IAChD;AAAA,IACA,cAAc,SAAS,cAAcA,QAAO;AAC1C,WAAK,UAAU,SAASA,QAAO,UAAU,IAAI;AAAA,IAC/C;AAAA,IACA,2BAA2B;AACzB,YAAM,UAAU,KAAK,YAAY;AACjC,UAAI,SAAS;AACX,aAAK,UAAU,SAAS,QAAW,UAAU,KAAK;AAAA,MACpD;AAAA,IACF;AAAA,IACA,wBAAwB;AACtB,YAAM,UAAU,KAAK,YAAY;AACjC,UAAI,SAAS;AACX,aAAK,UAAU,SAAS,QAAW,UAAU,IAAI;AAAA,MACnD;AAAA,IACF;AAAA,IACA,gBAAgB,kBAAkB;AAChC,YAAMP,QAAO,KAAK;AAClB,YAAMyB,YAAW,KAAK,YAAY;AAClC,iBAAW,CAAC,QAAQ,MAAM,IAAI,KAAK,KAAK,WAAW;AACjD,aAAK,MAAM,EAAE,MAAM,IAAI;AAAA,MACzB;AACA,WAAK,YAAY,CAAC;AAClB,YAAM,UAAUA,UAAS;AACzB,YAAM,UAAUzB,MAAK;AACrB,YAAM,QAAQ,KAAK,IAAI,SAAS,OAAO;AACvC,UAAI,OAAO;AACT,aAAK,MAAM,GAAG,KAAK;AAAA,MACrB;AACA,UAAI,UAAU,SAAS;AACrB,aAAK,gBAAgB,SAAS,UAAU,SAAS,gBAAgB;AAAA,MACnE,WAAW,UAAU,SAAS;AAC5B,aAAK,gBAAgB,SAAS,UAAU,OAAO;AAAA,MACjD;AAAA,IACF;AAAA,IACA,gBAAgBqB,QAAO,OAAO,mBAAmB,MAAM;AACrD,YAAM,OAAO,KAAK;AAClB,YAAMrB,QAAO,KAAK;AAClB,YAAM+B,OAAMV,SAAQ;AACpB,UAAIhE;AACJ,YAAM2E,QAAO,CAAC,QAAQ;AACpB,YAAI,UAAU;AACd,aAAK3E,KAAI,IAAI,SAAS,GAAGA,MAAK0E,MAAK1E,MAAK;AACtC,cAAIA,EAAC,IAAI,IAAIA,KAAI,KAAK;AAAA,QACxB;AAAA,MACF;AACA,MAAA2E,MAAKhC,KAAI;AACT,WAAK3C,KAAIgE,QAAOhE,KAAI0E,MAAK,EAAE1E,IAAG;AAC5B,QAAA2C,MAAK3C,EAAC,IAAI,IAAI,KAAK,gBAAgB;AAAA,MACrC;AACA,UAAI,KAAK,UAAU;AACjB,QAAA2E,MAAK,KAAK,OAAO;AAAA,MACnB;AACA,WAAK,MAAMX,QAAO,KAAK;AACvB,UAAI,kBAAkB;AACpB,aAAK,eAAerB,OAAMqB,QAAO,OAAO,OAAO;AAAA,MACjD;AAAA,IACF;AAAA,IACA,eAAe,SAASA,QAAO,OAAO,MAAM;AAAA,IAAC;AAAA,IAC7C,gBAAgBA,QAAO,OAAO;AAC5B,YAAM,OAAO,KAAK;AAClB,UAAI,KAAK,UAAU;AACjB,cAAM,UAAU,KAAK,QAAQ,OAAOA,QAAO,KAAK;AAChD,YAAI,KAAK,UAAU;AACjB,UAAAR,aAAY,MAAM,OAAO;AAAA,QAC3B;AAAA,MACF;AACA,WAAK,KAAK,OAAOQ,QAAO,KAAK;AAAA,IAC/B;AAAA,IACA,MAAM,MAAM;AACV,UAAI,KAAK,UAAU;AACjB,aAAK,UAAU,KAAK,IAAI;AAAA,MAC1B,OAAO;AACL,cAAM,CAAC,QAAQ,MAAM,IAAI,IAAI;AAC7B,aAAK,MAAM,EAAE,MAAM,IAAI;AAAA,MACzB;AACA,WAAK,MAAM,aAAa,KAAK,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;AAAA,IACpD;AAAA,IACA,cAAc;AACZ,YAAM,QAAQ,UAAU;AACxB,WAAK,MAAM,CAAC,mBAAmB,KAAK,WAAW,EAAE,KAAK,SAAS,OAAO,KAAK,CAAC;AAAA,IAC9E;AAAA,IACA,aAAa;AACX,WAAK,MAAM,CAAC,mBAAmB,KAAK,YAAY,KAAK,SAAS,GAAG,CAAC,CAAC;AAAA,IACrE;AAAA,IACA,eAAe;AACb,WAAK,MAAM,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAAA,IACtC;AAAA,IACA,cAAcA,QAAO,OAAO;AAC1B,UAAI,OAAO;AACT,aAAK,MAAM,CAAC,mBAAmBA,QAAO,KAAK,CAAC;AAAA,MAC9C;AACA,YAAM,WAAW,UAAU,SAAS;AACpC,UAAI,UAAU;AACZ,aAAK,MAAM,CAAC,mBAAmBA,QAAO,QAAQ,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,IACA,iBAAiB;AACf,WAAK,MAAM,CAAC,mBAAmB,GAAG,UAAU,MAAM,CAAC;AAAA,IACrD;AAAA,EACF;AACA,EAAAJ,mBAAkB,WAAW,CAAC;AAC9B,EAAAA,mBAAkB,UAAU,qBAAqB;AACjD,EAAAA,mBAAkB,UAAU,kBAAkB;AAE9C,WAASgB,mBAAkBjD,QAAO,MAAM;AACtC,QAAI,CAACA,OAAM,OAAO,MAAM;AACtB,YAAM,eAAeA,OAAM,wBAAwB,IAAI;AACvD,UAAI,SAAS,CAAC;AACd,eAAS3B,KAAI,GAAG,OAAO,aAAa,QAAQA,KAAI,MAAMA,MAAK;AACzD,iBAAS,OAAO,OAAO,aAAaA,EAAC,EAAE,WAAW,mBAAmB2B,MAAK,CAAC;AAAA,MAC7E;AACA,MAAAA,OAAM,OAAO,OAAOkD,cAAa,OAAO,KAAK,CAACC,IAAG1C,OAAM0C,KAAI1C,EAAC,CAAC;AAAA,IAC/D;AACA,WAAOT,OAAM,OAAO;AAAA,EACtB;AACA,WAASoD,sBAAqB,MAAM;AAClC,UAAMpD,SAAQ,KAAK;AACnB,UAAM,SAASiD,mBAAkBjD,QAAO,KAAK,IAAI;AACjD,QAAIC,OAAMD,OAAM;AAChB,QAAI3B,IAAG,MAAM,MAAMiE;AACnB,UAAM,mBAAmB,MAAM;AAC7B,UAAI,SAAS,SAAS,SAAS,QAAQ;AACrC;AAAA,MACF;AACA,UAAIO,SAAQP,KAAI,GAAG;AACjB,QAAArC,OAAM,KAAK,IAAIA,MAAK,KAAK,IAAI,OAAOqC,KAAI,KAAKrC,IAAG;AAAA,MAClD;AACA,MAAAqC,QAAO;AAAA,IACT;AACA,SAAKjE,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,aAAO2B,OAAM,iBAAiB,OAAO3B,EAAC,CAAC;AACvC,uBAAiB;AAAA,IACnB;AACA,IAAAiE,QAAO;AACP,SAAKjE,KAAI,GAAG,OAAO2B,OAAM,MAAM,QAAQ3B,KAAI,MAAM,EAAEA,IAAG;AACpD,aAAO2B,OAAM,gBAAgB3B,EAAC;AAC9B,uBAAiB;AAAA,IACnB;AACA,WAAO4B;AAAA,EACT;AACA,WAASoD,0BAAyB9B,QAAO,OAAO3B,UAAS,YAAY;AACnE,UAAM,YAAYA,SAAQ;AAC1B,QAAI0D,OAAM;AACV,QAAIC,eAAc,SAAS,GAAG;AAC5B,MAAAD,QAAO,MAAM,MAAM1D,SAAQ;AAC3B,cAAQA,SAAQ;AAAA,IAClB,OAAO;AACL,MAAA0D,QAAO,YAAY;AACnB,cAAQ;AAAA,IACV;AACA,WAAO;AAAA,MACL,OAAOA,QAAO;AAAA,MACd;AAAA,MACA,OAAO,MAAM,OAAO/B,MAAK,IAAK+B,QAAO;AAAA,IACvC;AAAA,EACF;AACA,WAASE,2BAA0BjC,QAAO,OAAO3B,UAAS,YAAY;AACpE,UAAM,SAAS,MAAM;AACrB,UAAM,OAAO,OAAO2B,MAAK;AACzB,QAAIe,QAAOf,SAAQ,IAAI,OAAOA,SAAQ,CAAC,IAAI;AAC3C,QAAIkC,QAAOlC,SAAQ,OAAO,SAAS,IAAI,OAAOA,SAAQ,CAAC,IAAI;AAC3D,UAAM,UAAU3B,SAAQ;AACxB,QAAI0C,UAAS,MAAM;AACjB,MAAAA,QAAO,QAAQmB,UAAS,OAAO,MAAM,MAAM,MAAM,QAAQA,QAAO;AAAA,IAClE;AACA,QAAIA,UAAS,MAAM;AACjB,MAAAA,QAAO,OAAO,OAAOnB;AAAA,IACvB;AACA,UAAMD,SAAQ,QAAQ,OAAO,KAAK,IAAIC,OAAMmB,KAAI,KAAK,IAAI;AACzD,UAAMH,QAAO,KAAK,IAAIG,QAAOnB,KAAI,IAAI,IAAI;AACzC,WAAO;AAAA,MACL,OAAOgB,QAAO;AAAA,MACd,OAAO1D,SAAQ;AAAA,MACf,OAAAyC;AAAA,IACF;AAAA,EACF;AACA,WAASqB,eAAc,OAAO,MAAM,QAAQrF,IAAG;AAC7C,UAAM,aAAa,OAAO,MAAM,MAAM,CAAC,GAAGA,EAAC;AAC3C,UAAM,WAAW,OAAO,MAAM,MAAM,CAAC,GAAGA,EAAC;AACzC,UAAM4B,OAAM,KAAK,IAAI,YAAY,QAAQ;AACzC,UAAMC,OAAM,KAAK,IAAI,YAAY,QAAQ;AACzC,QAAI,WAAWD;AACf,QAAI,SAASC;AACb,QAAI,KAAK,IAAID,IAAG,IAAI,KAAK,IAAIC,IAAG,GAAG;AACjC,iBAAWA;AACX,eAASD;AAAA,IACX;AACA,SAAK,OAAO,IAAI,IAAI;AACpB,SAAK,UAAU;AAAA,MACb;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,KAAK;AAAA,MACL,KAAAA;AAAA,MACA,KAAAC;AAAA,IACF;AAAA,EACF;AACA,WAASyD,YAAW,OAAO,MAAM,QAAQtF,IAAG;AAC1C,QAAIsB,SAAQ,KAAK,GAAG;AAClB,MAAA+D,eAAc,OAAO,MAAM,QAAQrF,EAAC;AAAA,IACtC,OAAO;AACL,WAAK,OAAO,IAAI,IAAI,OAAO,MAAM,OAAOA,EAAC;AAAA,IAC3C;AACA,WAAO;AAAA,EACT;AACA,WAASuF,uBAAsB,MAAM5C,OAAMqB,QAAO,OAAO;AACvD,UAAM,SAAS,KAAK;AACpB,UAAM,SAAS,KAAK;AACpB,UAAM,SAAS,OAAO,UAAU;AAChC,UAAM,cAAc,WAAW;AAC/B,UAAM,SAAS,CAAC;AAChB,QAAIhE,IAAG,MAAM,MAAM;AACnB,SAAKA,KAAIgE,QAAO,OAAOA,SAAQ,OAAOhE,KAAI,MAAM,EAAEA,IAAG;AACnD,cAAQ2C,MAAK3C,EAAC;AACd,aAAO,CAAC;AACR,WAAK,OAAO,IAAI,IAAI,eAAe,OAAO,MAAM,OAAOA,EAAC,GAAGA,EAAC;AAC5D,aAAO,KAAKsF,YAAW,OAAO,MAAM,QAAQtF,EAAC,CAAC;AAAA,IAChD;AACA,WAAO;AAAA,EACT;AACA,WAASwF,YAAW,QAAQ;AAC1B,WAAO,UAAU,OAAO,aAAa,UAAa,OAAO,WAAW;AAAA,EACtE;AACA,WAASC,SAAQR,OAAM,QAAQ,YAAY;AACzC,QAAIA,UAAS,GAAG;AACd,aAAOxC,MAAKwC,KAAI;AAAA,IAClB;AACA,YAAQ,OAAO,aAAa,IAAI,IAAI,OAAO,OAAO,OAAO,aAAa,IAAI;AAAA,EAC5E;AACA,WAASS,aAAY,YAAY;AAC/B,QAAI,SAAS1B,QAAOU,MAAKiB,MAAKC;AAC9B,QAAI,WAAW,YAAY;AACzB,gBAAU,WAAW,OAAO,WAAW;AACvC,MAAA5B,SAAQ;AACR,MAAAU,OAAM;AAAA,IACR,OAAO;AACL,gBAAU,WAAW,OAAO,WAAW;AACvC,MAAAV,SAAQ;AACR,MAAAU,OAAM;AAAA,IACR;AACA,QAAI,SAAS;AACX,MAAAiB,OAAM;AACN,MAAAC,UAAS;AAAA,IACX,OAAO;AACL,MAAAD,OAAM;AACN,MAAAC,UAAS;AAAA,IACX;AACA,WAAO,EAAC,OAAA5B,QAAO,KAAAU,MAAK,SAAS,KAAAiB,MAAK,QAAAC,QAAM;AAAA,EAC1C;AACA,WAASC,kBAAiB,YAAYtE,UAAS,OAAO2B,QAAO;AAC3D,QAAI,OAAO3B,SAAQ;AACnB,UAAM,MAAM,CAAC;AACb,QAAI,CAAC,MAAM;AACT,iBAAW,gBAAgB;AAC3B;AAAA,IACF;AACA,QAAI,SAAS,MAAM;AACjB,iBAAW,gBAAgB,EAAC,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,KAAI;AAC5E;AAAA,IACF;AACA,UAAM,EAAC,OAAAyC,QAAO,KAAAU,MAAK,SAAS,KAAAiB,MAAK,QAAAC,QAAM,IAAIF,aAAY,UAAU;AACjE,QAAI,SAAS,YAAY,OAAO;AAC9B,iBAAW,qBAAqB;AAChC,WAAK,MAAM,QAAQ,OAAOxC,QAAO;AAC/B,eAAOyC;AAAA,MACT,YAAY,MAAM,WAAW,OAAOzC,QAAO;AACzC,eAAO0C;AAAA,MACT,OAAO;AACL,YAAIE,WAAUF,SAAQ5B,QAAOU,MAAK,OAAO,CAAC,IAAI;AAC9C,eAAOiB;AAAA,MACT;AAAA,IACF;AACA,QAAIG,WAAU,MAAM9B,QAAOU,MAAK,OAAO,CAAC,IAAI;AAC5C,eAAW,gBAAgB;AAAA,EAC7B;AACA,WAASoB,WAAU,MAAMhB,IAAG1C,IAAG,SAAS;AACtC,QAAI,SAAS;AACX,aAAO2D,MAAK,MAAMjB,IAAG1C,EAAC;AACtB,aAAO4D,UAAS,MAAM5D,IAAG0C,EAAC;AAAA,IAC5B,OAAO;AACL,aAAOkB,UAAS,MAAMlB,IAAG1C,EAAC;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AACA,WAAS2D,MAAK,MAAM,IAAIE,KAAI;AAC1B,WAAO,SAAS,KAAKA,MAAK,SAASA,MAAK,KAAK;AAAA,EAC/C;AACA,WAASD,UAAShF,IAAGgD,QAAOU,MAAK;AAC/B,WAAO1D,OAAM,UAAUgD,SAAQhD,OAAM,QAAQ0D,OAAM1D;AAAA,EACrD;AACA,WAASkF,kBAAiB,YAAY,EAAC,cAAa,GAAG,OAAO;AAC5D,eAAW,gBAAgB,kBAAkB,SACzC,UAAU,IAAI,OAAO,IACrB;AAAA,EACN;AACA,MAAMC,iBAAN,cAA4BvC,mBAAkB;AAAA,IAC5C,mBAAmB,MAAMjB,OAAMqB,QAAO,OAAO;AAC3C,aAAOuB,uBAAsB,MAAM5C,OAAMqB,QAAO,KAAK;AAAA,IACvD;AAAA,IACA,eAAe,MAAMrB,OAAMqB,QAAO,OAAO;AACvC,aAAOuB,uBAAsB,MAAM5C,OAAMqB,QAAO,KAAK;AAAA,IACvD;AAAA,IACA,gBAAgB,MAAMrB,OAAMqB,QAAO,OAAO;AACxC,YAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,YAAM,EAAC,WAAW,KAAK,WAAW,IAAG,IAAI,KAAK;AAC9C,YAAM,WAAW,OAAO,SAAS,MAAM,WAAW;AAClD,YAAM,WAAW,OAAO,SAAS,MAAM,WAAW;AAClD,YAAM,SAAS,CAAC;AAChB,UAAIhE,IAAG,MAAM,MAAM;AACnB,WAAKA,KAAIgE,QAAO,OAAOA,SAAQ,OAAOhE,KAAI,MAAM,EAAEA,IAAG;AACnD,cAAM2C,MAAK3C,EAAC;AACZ,eAAO,CAAC;AACR,aAAK,OAAO,IAAI,IAAI,OAAO,MAAMkE,kBAAiB,KAAK,QAAQ,GAAGlE,EAAC;AACnE,eAAO,KAAKsF,YAAWpB,kBAAiB,KAAK,QAAQ,GAAG,MAAM,QAAQlE,EAAC,CAAC;AAAA,MAC1E;AACA,aAAO;AAAA,IACT;AAAA,IACA,sBAAsBmE,QAAOxC,QAAO,QAAQ,OAAO;AACjD,YAAM,sBAAsBwC,QAAOxC,QAAO,QAAQ,KAAK;AACvD,YAAM,SAAS,OAAO;AACtB,UAAI,UAAUA,WAAU,KAAK,YAAY,QAAQ;AAC/C,QAAAwC,OAAM,MAAM,KAAK,IAAIA,OAAM,KAAK,OAAO,GAAG;AAC1C,QAAAA,OAAM,MAAM,KAAK,IAAIA,OAAM,KAAK,OAAO,GAAG;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,iBAAiB;AACf,aAAO;AAAA,IACT;AAAA,IACA,iBAAiBjB,QAAO;AACtB,YAAM,OAAO,KAAK;AAClB,YAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,YAAM,SAAS,KAAK,UAAUA,MAAK;AACnC,YAAM,SAAS,OAAO;AACtB,YAAM,QAAQsC,YAAW,MAAM,IAC3B,MAAM,OAAO,QAAQ,OAAO,OAAO,MAAM,MACzC,KAAK,OAAO,iBAAiB,OAAO,OAAO,IAAI,CAAC;AACpD,aAAO;AAAA,QACL,OAAO,KAAK,OAAO,iBAAiB,OAAO,OAAO,IAAI,CAAC;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AACX,WAAK,sBAAsB;AAC3B,YAAM,WAAW;AACjB,YAAM,OAAO,KAAK;AAClB,WAAK,QAAQ,KAAK,WAAW,EAAE;AAAA,IACjC;AAAA,IACA,OAAO,MAAM;AACX,YAAM,OAAO,KAAK;AAClB,WAAK,eAAe,KAAK,MAAM,GAAG,KAAK,KAAK,QAAQ,IAAI;AAAA,IAC1D;AAAA,IACA,eAAe,MAAMxB,QAAO,OAAO,MAAM;AACvC,YAAM,QAAQ,SAAS;AACvB,YAAM,EAAC,OAAAd,QAAO,aAAa,EAAC,OAAM,EAAC,IAAI;AACvC,YAAM,OAAO,OAAO,aAAa;AACjC,YAAM,aAAa,OAAO,aAAa;AACvC,YAAM,QAAQ,KAAK,UAAU;AAC7B,YAAM,EAAC,eAAe,eAAc,IAAI,KAAK,kBAAkBc,QAAO,IAAI;AAC1E,eAAShE,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAOhE,MAAK;AAC1C,cAAM,SAAS,KAAK,UAAUA,EAAC;AAC/B,cAAM,UAAU,SAASkF,eAAc,OAAO,OAAO,IAAI,CAAC,IAAI,EAAC,MAAM,MAAM,KAAI,IAAI,KAAK,yBAAyBlF,EAAC;AAClH,cAAM,UAAU,KAAK,yBAAyBA,IAAG,KAAK;AACtD,cAAM,SAAS,OAAO,WAAW,CAAC,GAAG,OAAO,IAAI;AAChD,cAAM,aAAa;AAAA,UACjB;AAAA,UACA,MAAM,QAAQ;AAAA,UACd,oBAAoB,CAAC,SAASwF,YAAW,OAAO,OAAO,MAAMtC,WAAU,MAAM,QAAQA,WAAU,MAAM;AAAA,UACrG,GAAG,aAAa,QAAQ,OAAO,QAAQ;AAAA,UACvC,GAAG,aAAa,QAAQ,SAAS,QAAQ;AAAA,UACzC,QAAQ,aAAa,QAAQ,OAAO,KAAK,IAAI,QAAQ,IAAI;AAAA,UACzD,OAAO,aAAa,KAAK,IAAI,QAAQ,IAAI,IAAI,QAAQ;AAAA,QACvD;AACA,YAAI,gBAAgB;AAClB,qBAAW,UAAU,iBAAiB,KAAK,0BAA0BlD,IAAG,KAAKA,EAAC,EAAE,SAAS,WAAW,IAAI;AAAA,QAC1G;AACA,cAAMuB,WAAU,WAAW,WAAW,KAAKvB,EAAC,EAAE;AAC9C,QAAA6F,kBAAiB,YAAYtE,UAAS,OAAO2B,MAAK;AAClD,QAAAgD,kBAAiB,YAAY3E,UAAS,MAAM,KAAK;AACjD,aAAK,cAAc,KAAKvB,EAAC,GAAGA,IAAG,YAAY,IAAI;AAAA,MACjD;AAAA,IACF;AAAA,IACA,WAAW,MAAM,WAAW;AAC1B,YAAM,EAAC,OAAM,IAAI,KAAK;AACtB,YAAM,WAAW,OAAO,wBAAwB,KAAK,KAAK,EACvD,OAAO,UAAQ,KAAK,WAAW,QAAQ,OAAO;AACjD,YAAM,UAAU,OAAO,QAAQ;AAC/B,YAAM,SAAS,CAAC;AAChB,YAAM,WAAW,CAAC,SAAS;AACzB,cAAM,SAAS,KAAK,WAAW,UAAU,SAAS;AAClD,cAAM,MAAM,UAAU,OAAO,KAAK,OAAO,IAAI;AAC7C,YAAIkF,eAAc,GAAG,KAAK,MAAM,GAAG,GAAG;AACpC,iBAAO;AAAA,QACT;AAAA,MACF;AACA,iBAAW,QAAQ,UAAU;AAC3B,YAAI,cAAc,UAAa,SAAS,IAAI,GAAG;AAC7C;AAAA,QACF;AACA,YAAI,YAAY,SAAS,OAAO,QAAQ,KAAK,KAAK,MAAM,MACzD,YAAY,UAAa,KAAK,UAAU,QAAY;AACjD,iBAAO,KAAK,KAAK,KAAK;AAAA,QACxB;AACA,YAAI,KAAK,UAAU,MAAM;AACvB;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,OAAO,QAAQ;AAClB,eAAO,KAAK,MAAS;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAAA,IACA,eAAehC,QAAO;AACpB,aAAO,KAAK,WAAW,QAAWA,MAAK,EAAE;AAAA,IAC3C;AAAA,IACA,eAAe,cAAcnC,OAAM,WAAW;AAC5C,YAAM,SAAS,KAAK,WAAW,cAAc,SAAS;AACtD,YAAMmC,SAASnC,UAAS,SACpB,OAAO,QAAQA,KAAI,IACnB;AACJ,aAAQmC,WAAU,KACd,OAAO,SAAS,IAChBA;AAAA,IACN;AAAA,IACA,YAAY;AACV,YAAM,OAAO,KAAK;AAClB,YAAM,OAAO,KAAK;AAClB,YAAM,SAAS,KAAK;AACpB,YAAM,SAAS,CAAC;AAChB,UAAIlD,IAAG;AACP,WAAKA,KAAI,GAAG,OAAO,KAAK,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAClD,eAAO,KAAK,OAAO,iBAAiB,KAAK,UAAUA,EAAC,EAAE,OAAO,IAAI,GAAGA,EAAC,CAAC;AAAA,MACxE;AACA,YAAM,eAAe,KAAK;AAC1B,YAAM4B,OAAM,gBAAgBmD,sBAAqB,IAAI;AACrD,aAAO;AAAA,QACL,KAAAnD;AAAA,QACA;AAAA,QACA,OAAO,OAAO;AAAA,QACd,KAAK,OAAO;AAAA,QACZ,YAAY,KAAK,eAAe;AAAA,QAChC,OAAO;AAAA,QACP,SAAS,KAAK;AAAA,QACd,OAAO,eAAe,IAAI,KAAK,qBAAqB,KAAK;AAAA,MAC3D;AAAA,IACF;AAAA,IACA,yBAAyBsB,QAAO;AAC9B,YAAM,EAAC,aAAa,EAAC,QAAQ,SAAQ,GAAG,SAAS,EAAC,MAAM,WAAW,aAAY,EAAC,IAAI;AACpF,YAAM,aAAa,aAAa;AAChC,YAAM,SAAS,KAAK,UAAUA,MAAK;AACnC,YAAM,SAAS,OAAO;AACtB,YAAM,WAAWsC,YAAW,MAAM;AAClC,UAAI,QAAQ,OAAO,OAAO,IAAI;AAC9B,UAAIxB,SAAQ;AACZ,UAAIoC,UAAS,WAAW,KAAK,WAAW,QAAQ,QAAQ,QAAQ,IAAI;AACpE,UAAI,MAAMnB;AACV,UAAImB,YAAW,OAAO;AACpB,QAAApC,SAAQoC,UAAS;AACjB,QAAAA,UAAS;AAAA,MACX;AACA,UAAI,UAAU;AACZ,gBAAQ,OAAO;AACf,QAAAA,UAAS,OAAO,SAAS,OAAO;AAChC,YAAI,UAAU,KAAK3D,MAAK,KAAK,MAAMA,MAAK,OAAO,MAAM,GAAG;AACtD,UAAAuB,SAAQ;AAAA,QACV;AACA,QAAAA,UAAS;AAAA,MACX;AACA,YAAM,aAAa,CAACkB,eAAc,SAAS,KAAK,CAAC,WAAW,YAAYlB;AACxE,UAAI,OAAO,OAAO,iBAAiB,UAAU;AAC7C,UAAI,KAAK,MAAM,kBAAkBd,MAAK,GAAG;AACvC,eAAO,OAAO,iBAAiBc,SAAQoC,OAAM;AAAA,MAC/C,OAAO;AACL,eAAO;AAAA,MACT;AACA,MAAAnB,QAAO,OAAO;AACd,UAAI,KAAK,IAAIA,KAAI,IAAI,cAAc;AACjC,QAAAA,QAAOQ,SAAQR,OAAM,QAAQ,UAAU,IAAI;AAC3C,YAAI,UAAU,YAAY;AACxB,kBAAQA,QAAO;AAAA,QACjB;AACA,cAAM,aAAa,OAAO,mBAAmB,CAAC;AAC9C,cAAM,WAAW,OAAO,mBAAmB,CAAC;AAC5C,cAAMrD,OAAM,KAAK,IAAI,YAAY,QAAQ;AACzC,cAAMC,OAAM,KAAK,IAAI,YAAY,QAAQ;AACzC,eAAO,KAAK,IAAI,KAAK,IAAI,MAAMA,IAAG,GAAGD,IAAG;AACxC,eAAO,OAAOqD;AAAA,MAChB;AACA,UAAI,SAAS,OAAO,iBAAiB,UAAU,GAAG;AAChD,cAAM,WAAWxC,MAAKwC,KAAI,IAAI,OAAO,qBAAqB,UAAU,IAAI;AACxE,gBAAQ;AACR,QAAAA,SAAQ;AAAA,MACV;AACA,aAAO;AAAA,QACL,MAAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,OAAOA,QAAO;AAAA,MACxB;AAAA,IACF;AAAA,IACA,yBAAyB/B,QAAO,OAAO;AACrC,YAAMvB,SAAQ,MAAM;AACpB,YAAMJ,WAAU,KAAK;AACrB,YAAM,WAAWA,SAAQ;AACzB,YAAM,kBAAkBsC,gBAAetC,SAAQ,iBAAiB,QAAQ;AACxE,UAAI8E,SAAQpB;AACZ,UAAI,MAAM,SAAS;AACjB,cAAM,aAAa,WAAW,KAAK,eAAe/B,MAAK,IAAI,MAAM;AACjE,cAAMiB,SAAQ5C,SAAQ,iBAAiB,SACnC4D,2BAA0BjC,QAAO,OAAO3B,UAAS,UAAU,IAC3DyD,0BAAyB9B,QAAO,OAAO3B,UAAS,UAAU;AAC9D,cAAM,aAAa,KAAK,eAAe,KAAK,OAAO,KAAK,YAAY,OAAO,WAAW2B,SAAQ,MAAS;AACvG,QAAAmD,UAASlC,OAAM,QAASA,OAAM,QAAQ,aAAeA,OAAM,QAAQ;AACnE,QAAAc,QAAO,KAAK,IAAI,iBAAiBd,OAAM,QAAQA,OAAM,KAAK;AAAA,MAC5D,OAAO;AACL,QAAAkC,UAAS1E,OAAM,iBAAiB,KAAK,UAAUuB,MAAK,EAAEvB,OAAM,IAAI,GAAGuB,MAAK;AACxE,QAAA+B,QAAO,KAAK,IAAI,iBAAiB,MAAM,MAAM,MAAM,KAAK;AAAA,MAC1D;AACA,aAAO;AAAA,QACL,MAAMoB,UAASpB,QAAO;AAAA,QACtB,MAAMoB,UAASpB,QAAO;AAAA,QACtB,QAAAoB;AAAA,QACA,MAAApB;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AACL,YAAM,OAAO,KAAK;AAClB,YAAM,SAAS,KAAK;AACpB,YAAM,QAAQ,KAAK;AACnB,YAAM,OAAO,MAAM;AACnB,UAAIjF,KAAI;AACR,aAAOA,KAAI,MAAM,EAAEA,IAAG;AACpB,YAAI,KAAK,UAAUA,EAAC,EAAE,OAAO,IAAI,MAAM,MAAM;AAC3C,gBAAMA,EAAC,EAAE,KAAK,KAAK,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAAmG,eAAc,KAAK;AACnB,EAAAA,eAAc,WAAW;AAAA,IACvB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,IACpB,eAAe;AAAA,IACf,SAAS;AAAA,IACT,YAAY;AAAA,MACV,SAAS;AAAA,QACP,MAAM;AAAA,QACN,YAAY,CAAC,KAAK,KAAK,QAAQ,SAAS,QAAQ;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AACA,EAAAA,eAAc,YAAY;AAAA,IACxB,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAEA,MAAMG,oBAAN,cAA+B1C,mBAAkB;AAAA,IAC/C,aAAa;AACX,WAAK,sBAAsB;AAC3B,YAAM,WAAW;AAAA,IACnB;AAAA,IACA,mBAAmB,MAAMjB,OAAMqB,QAAO,OAAO;AAC3C,YAAM,SAAS,MAAM,mBAAmB,MAAMrB,OAAMqB,QAAO,KAAK;AAChE,eAAShE,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,eAAOA,EAAC,EAAE,UAAU,KAAK,0BAA0BA,KAAIgE,MAAK,EAAE;AAAA,MAChE;AACA,aAAO;AAAA,IACT;AAAA,IACA,eAAe,MAAMrB,OAAMqB,QAAO,OAAO;AACvC,YAAM,SAAS,MAAM,eAAe,MAAMrB,OAAMqB,QAAO,KAAK;AAC5D,eAAShE,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,cAAM,OAAO2C,MAAKqB,SAAQhE,EAAC;AAC3B,eAAOA,EAAC,EAAE,UAAU6D,gBAAe,KAAK,CAAC,GAAG,KAAK,0BAA0B7D,KAAIgE,MAAK,EAAE,MAAM;AAAA,MAC9F;AACA,aAAO;AAAA,IACT;AAAA,IACA,gBAAgB,MAAMrB,OAAMqB,QAAO,OAAO;AACxC,YAAM,SAAS,MAAM,gBAAgB,MAAMrB,OAAMqB,QAAO,KAAK;AAC7D,eAAShE,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,cAAM,OAAO2C,MAAKqB,SAAQhE,EAAC;AAC3B,eAAOA,EAAC,EAAE,UAAU6D,gBAAe,QAAQ,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,0BAA0B7D,KAAIgE,MAAK,EAAE,MAAM;AAAA,MAChH;AACA,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB;AACf,YAAMrB,QAAO,KAAK,YAAY;AAC9B,UAAId,OAAM;AACV,eAAS7B,KAAI2C,MAAK,SAAS,GAAG3C,MAAK,GAAG,EAAEA,IAAG;AACzC,QAAA6B,OAAM,KAAK,IAAIA,MAAKc,MAAK3C,EAAC,EAAE,KAAK,KAAK,0BAA0BA,EAAC,CAAC,IAAI,CAAC;AAAA,MACzE;AACA,aAAO6B,OAAM,KAAKA;AAAA,IACpB;AAAA,IACA,iBAAiBqB,QAAO;AACtB,YAAM,OAAO,KAAK;AAClB,YAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,YAAM,SAAS,KAAK,UAAUA,MAAK;AACnC,YAAMnB,KAAI,OAAO,iBAAiB,OAAO,CAAC;AAC1C,YAAMC,KAAI,OAAO,iBAAiB,OAAO,CAAC;AAC1C,YAAMG,KAAI,OAAO;AACjB,aAAO;AAAA,QACL,OAAO,KAAK;AAAA,QACZ,OAAO,MAAMJ,KAAI,OAAOC,MAAKG,KAAI,OAAOA,KAAI,MAAM;AAAA,MACpD;AAAA,IACF;AAAA,IACA,OAAO,MAAM;AACX,YAAM,SAAS,KAAK,YAAY;AAChC,WAAK,eAAe,QAAQ,GAAG,OAAO,QAAQ,IAAI;AAAA,IACpD;AAAA,IACA,eAAe,QAAQ6B,QAAO,OAAO,MAAM;AACzC,YAAM,QAAQ,SAAS;AACvB,YAAM,EAAC,QAAQ,OAAM,IAAI,KAAK;AAC9B,YAAM,EAAC,eAAe,eAAc,IAAI,KAAK,kBAAkBA,QAAO,IAAI;AAC1E,YAAM,QAAQ,OAAO;AACrB,YAAM,QAAQ,OAAO;AACrB,eAAShE,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAOhE,MAAK;AAC1C,cAAMuG,SAAQ,OAAOvG,EAAC;AACtB,cAAM,SAAS,CAAC,SAAS,KAAK,UAAUA,EAAC;AACzC,cAAM,aAAa,CAAC;AACpB,cAAM,SAAS,WAAW,KAAK,IAAI,QAAQ,OAAO,mBAAmB,GAAG,IAAI,OAAO,iBAAiB,OAAO,KAAK,CAAC;AACjH,cAAM,SAAS,WAAW,KAAK,IAAI,QAAQ,OAAO,aAAa,IAAI,OAAO,iBAAiB,OAAO,KAAK,CAAC;AACxG,mBAAW,OAAO,MAAM,MAAM,KAAK,MAAM,MAAM;AAC/C,YAAI,gBAAgB;AAClB,qBAAW,UAAU,iBAAiB,KAAK,0BAA0BA,IAAGuG,OAAM,SAAS,WAAW,IAAI;AACtG,cAAI,OAAO;AACT,uBAAW,QAAQ,SAAS;AAAA,UAC9B;AAAA,QACF;AACA,aAAK,cAAcA,QAAOvG,IAAG,YAAY,IAAI;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,0BAA0BkD,QAAO,MAAM;AACrC,YAAM,SAAS,KAAK,UAAUA,MAAK;AACnC,UAAI,SAAS,MAAM,0BAA0BA,QAAO,IAAI;AACxD,UAAI,OAAO,SAAS;AAClB,iBAAS,OAAO,OAAO,CAAC,GAAG,QAAQ,EAAC,SAAS,MAAK,CAAC;AAAA,MACrD;AACA,YAAM,SAAS,OAAO;AACtB,UAAI,SAAS,UAAU;AACrB,eAAO,SAAS;AAAA,MAClB;AACA,aAAO,UAAUW,gBAAe,UAAU,OAAO,SAAS,MAAM;AAChE,aAAO;AAAA,IACT;AAAA,EACF;AACA,EAAAyC,kBAAiB,KAAK;AACtB,EAAAA,kBAAiB,WAAW;AAAA,IAC1B,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,YAAY;AAAA,MACV,SAAS;AAAA,QACP,MAAM;AAAA,QACN,YAAY,CAAC,KAAK,KAAK,eAAe,QAAQ;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACA,EAAAA,kBAAiB,YAAY;AAAA,IAC3B,QAAQ;AAAA,MACN,GAAG;AAAA,QACD,MAAM;AAAA,MACR;AAAA,MACA,GAAG;AAAA,QACD,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,QACP,WAAW;AAAA,UACT,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAASE,mBAAkB,UAAU,eAAe,QAAQ;AAC1D,QAAI,SAAS;AACb,QAAI,SAAS;AACb,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,gBAAgBC,MAAK;AACvB,YAAM,aAAa;AACnB,YAAM,WAAW,aAAa;AAC9B,YAAM,SAAS,KAAK,IAAI,UAAU;AAClC,YAAM,SAAS,KAAK,IAAI,UAAU;AAClC,YAAM,OAAO,KAAK,IAAI,QAAQ;AAC9B,YAAM,OAAO,KAAK,IAAI,QAAQ;AAC9B,YAAM,UAAU,CAAC,OAAO3B,IAAG1C,OAAMsE,eAAc,OAAO,YAAY,UAAU,IAAI,IAAI,IAAI,KAAK,IAAI5B,IAAGA,KAAI,QAAQ1C,IAAGA,KAAI,MAAM;AAC7H,YAAM,UAAU,CAAC,OAAO0C,IAAG1C,OAAMsE,eAAc,OAAO,YAAY,UAAU,IAAI,IAAI,KAAK,KAAK,IAAI5B,IAAGA,KAAI,QAAQ1C,IAAGA,KAAI,MAAM;AAC9H,YAAM,OAAO,QAAQ,GAAG,QAAQ,IAAI;AACpC,YAAM,OAAO,QAAQuE,UAAS,QAAQ,IAAI;AAC1C,YAAM,OAAO,QAAQC,KAAI,QAAQ,IAAI;AACrC,YAAM,OAAO,QAAQA,MAAKD,UAAS,QAAQ,IAAI;AAC/C,gBAAU,OAAO,QAAQ;AACzB,gBAAU,OAAO,QAAQ;AACzB,gBAAU,EAAE,OAAO,QAAQ;AAC3B,gBAAU,EAAE,OAAO,QAAQ;AAAA,IAC7B;AACA,WAAO,EAAC,QAAQ,QAAQ,SAAS,QAAO;AAAA,EAC1C;AACA,MAAME,sBAAN,cAAiCjD,mBAAkB;AAAA,IACjD,YAAY,OAAO,cAAc;AAC/B,YAAM,OAAO,YAAY;AACzB,WAAK,sBAAsB;AAC3B,WAAK,cAAc;AACnB,WAAK,cAAc;AACnB,WAAK,UAAU;AACf,WAAK,UAAU;AAAA,IACjB;AAAA,IACA,aAAa;AAAA,IAAC;AAAA,IACd,MAAMI,QAAO,OAAO;AAClB,YAAMrB,QAAO,KAAK,WAAW,EAAE;AAC/B,YAAM,OAAO,KAAK;AAClB,UAAI,KAAK,aAAa,OAAO;AAC3B,aAAK,UAAUA;AAAA,MACjB,OAAO;AACL,YAAI,SAAS,CAAC3C,OAAM,CAAC2C,MAAK3C,EAAC;AAC3B,YAAImB,UAASwB,MAAKqB,MAAK,CAAC,GAAG;AACzB,gBAAM,EAAC,KAAA5C,OAAM,QAAO,IAAI,KAAK;AAC7B,mBAAS,CAACpB,OAAM,CAACkE,kBAAiBvB,MAAK3C,EAAC,GAAGoB,IAAG;AAAA,QAChD;AACA,YAAIpB,IAAG;AACP,aAAKA,KAAIgE,QAAO,OAAOA,SAAQ,OAAOhE,KAAI,MAAM,EAAEA,IAAG;AACnD,eAAK,QAAQA,EAAC,IAAI,OAAOA,EAAC;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe;AACb,aAAO8G,WAAU,KAAK,QAAQ,WAAW,EAAE;AAAA,IAC7C;AAAA,IACA,oBAAoB;AAClB,aAAOA,WAAU,KAAK,QAAQ,aAAa;AAAA,IAC7C;AAAA,IACA,sBAAsB;AACpB,UAAIlF,OAAM6E;AACV,UAAI5E,OAAM,CAAC4E;AACX,eAASzG,KAAI,GAAGA,KAAI,KAAK,MAAM,KAAK,SAAS,QAAQ,EAAEA,IAAG;AACxD,YAAI,KAAK,MAAM,iBAAiBA,EAAC,GAAG;AAClC,gBAAM,aAAa,KAAK,MAAM,eAAeA,EAAC,EAAE;AAChD,gBAAM,WAAW,WAAW,aAAa;AACzC,gBAAM,gBAAgB,WAAW,kBAAkB;AACnD,UAAA4B,OAAM,KAAK,IAAIA,MAAK,QAAQ;AAC5B,UAAAC,OAAM,KAAK,IAAIA,MAAK,WAAW,aAAa;AAAA,QAC9C;AAAA,MACF;AACA,aAAO;AAAA,QACL,UAAUD;AAAA,QACV,eAAeC,OAAMD;AAAA,MACvB;AAAA,IACF;AAAA,IACA,OAAO,MAAM;AACX,YAAM,QAAQ,KAAK;AACnB,YAAM,EAAC,UAAS,IAAI;AACpB,YAAM,OAAO,KAAK;AAClB,YAAM,OAAO,KAAK;AAClB,YAAM,UAAU,KAAK,kBAAkB,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ;AAClF,YAAM,UAAU,KAAK,KAAK,KAAK,IAAI,UAAU,OAAO,UAAU,MAAM,IAAI,WAAW,GAAG,CAAC;AACvF,YAAM,SAAS,KAAK,IAAImF,cAAa,KAAK,QAAQ,QAAQ,OAAO,GAAG,CAAC;AACrE,YAAM,cAAc,KAAK,eAAe,KAAK,KAAK;AAClD,YAAM,EAAC,eAAe,SAAQ,IAAI,KAAK,oBAAoB;AAC3D,YAAM,EAAC,QAAQ,QAAQ,SAAS,QAAO,IAAIP,mBAAkB,UAAU,eAAe,MAAM;AAC5F,YAAM,YAAY,UAAU,QAAQ,WAAW;AAC/C,YAAM,aAAa,UAAU,SAAS,WAAW;AACjD,YAAM,YAAY,KAAK,IAAI,KAAK,IAAI,UAAU,SAAS,IAAI,GAAG,CAAC;AAC/D,YAAM,cAAcQ,aAAY,KAAK,QAAQ,QAAQ,SAAS;AAC9D,YAAM,cAAc,KAAK,IAAI,cAAc,QAAQ,CAAC;AACpD,YAAM,gBAAgB,cAAc,eAAe,KAAK,8BAA8B;AACtF,WAAK,UAAU,UAAU;AACzB,WAAK,UAAU,UAAU;AACzB,WAAK,QAAQ,KAAK,eAAe;AACjC,WAAK,cAAc,cAAc,eAAe,KAAK,qBAAqB,KAAK,KAAK;AACpF,WAAK,cAAc,KAAK,IAAI,KAAK,cAAc,eAAe,aAAa,CAAC;AAC5E,WAAK,eAAe,MAAM,GAAG,KAAK,QAAQ,IAAI;AAAA,IAChD;AAAA,IACA,eAAehH,IAAG,OAAO;AACvB,YAAM,OAAO,KAAK;AAClB,YAAM,OAAO,KAAK;AAClB,YAAM,gBAAgB,KAAK,kBAAkB;AAC7C,UAAK,SAAS,KAAK,UAAU,iBAAkB,CAAC,KAAK,MAAM,kBAAkBA,EAAC,KAAK,KAAK,QAAQA,EAAC,MAAM,QAAQ,KAAK,KAAKA,EAAC,EAAE,QAAQ;AAClI,eAAO;AAAA,MACT;AACA,aAAO,KAAK,uBAAuB,KAAK,QAAQA,EAAC,IAAI,gBAAgByG,IAAG;AAAA,IAC1E;AAAA,IACA,eAAe,MAAMzC,QAAO,OAAO,MAAM;AACvC,YAAM,QAAQ,SAAS;AACvB,YAAM,QAAQ,KAAK;AACnB,YAAM,YAAY,MAAM;AACxB,YAAM,OAAO,MAAM;AACnB,YAAM,gBAAgB,KAAK;AAC3B,YAAM,WAAW,UAAU,OAAO,UAAU,SAAS;AACrD,YAAM,WAAW,UAAU,MAAM,UAAU,UAAU;AACrD,YAAM,eAAe,SAAS,cAAc;AAC5C,YAAM,cAAc,eAAe,IAAI,KAAK;AAC5C,YAAM,cAAc,eAAe,IAAI,KAAK;AAC5C,YAAM,EAAC,eAAe,eAAc,IAAI,KAAK,kBAAkBA,QAAO,IAAI;AAC1E,UAAI,aAAa,KAAK,aAAa;AACnC,UAAIhE;AACJ,WAAKA,KAAI,GAAGA,KAAIgE,QAAO,EAAEhE,IAAG;AAC1B,sBAAc,KAAK,eAAeA,IAAG,KAAK;AAAA,MAC5C;AACA,WAAKA,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAO,EAAEhE,IAAG;AACtC,cAAM,gBAAgB,KAAK,eAAeA,IAAG,KAAK;AAClD,cAAM,MAAM,KAAKA,EAAC;AAClB,cAAM,aAAa;AAAA,UACjB,GAAG,UAAU,KAAK;AAAA,UAClB,GAAG,UAAU,KAAK;AAAA,UAClB;AAAA,UACA,UAAU,aAAa;AAAA,UACvB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,YAAI,gBAAgB;AAClB,qBAAW,UAAU,iBAAiB,KAAK,0BAA0BA,IAAG,IAAI,SAAS,WAAW,IAAI;AAAA,QACtG;AACA,sBAAc;AACd,aAAK,cAAc,KAAKA,IAAG,YAAY,IAAI;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,iBAAiB;AACf,YAAM,OAAO,KAAK;AAClB,YAAM,WAAW,KAAK;AACtB,UAAI,QAAQ;AACZ,UAAIA;AACJ,WAAKA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACpC,cAAM,QAAQ,KAAK,QAAQA,EAAC;AAC5B,YAAI,UAAU,QAAQ,CAAC,MAAM,KAAK,KAAK,KAAK,MAAM,kBAAkBA,EAAC,KAAK,CAAC,SAASA,EAAC,EAAE,QAAQ;AAC7F,mBAAS,KAAK,IAAI,KAAK;AAAA,QACzB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,uBAAuB,OAAO;AAC5B,YAAM,QAAQ,KAAK,YAAY;AAC/B,UAAI,QAAQ,KAAK,CAAC,MAAM,KAAK,GAAG;AAC9B,eAAOyG,QAAO,KAAK,IAAI,KAAK,IAAI;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAAA,IACA,iBAAiBvD,QAAO;AACtB,YAAM,OAAO,KAAK;AAClB,YAAM,QAAQ,KAAK;AACnB,YAAM,SAAS,MAAM,KAAK,UAAU,CAAC;AACrC,YAAM,QAAQ+D,cAAa,KAAK,QAAQ/D,MAAK,GAAG,MAAM,QAAQ,MAAM;AACpE,aAAO;AAAA,QACL,OAAO,OAAOA,MAAK,KAAK;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB,MAAM;AACtB,UAAIrB,OAAM;AACV,YAAM,QAAQ,KAAK;AACnB,UAAI7B,IAAG,MAAM,MAAM,YAAYuB;AAC/B,UAAI,CAAC,MAAM;AACT,aAAKvB,KAAI,GAAG,OAAO,MAAM,KAAK,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC5D,cAAI,MAAM,iBAAiBA,EAAC,GAAG;AAC7B,mBAAO,MAAM,eAAeA,EAAC;AAC7B,mBAAO,KAAK;AACZ,yBAAa,KAAK;AAClB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,MAAM;AACT,eAAO;AAAA,MACT;AACA,WAAKA,KAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC7C,QAAAuB,WAAU,WAAW,0BAA0BvB,EAAC;AAChD,YAAIuB,SAAQ,gBAAgB,SAAS;AACnC,UAAAM,OAAM,KAAK,IAAIA,MAAKN,SAAQ,eAAe,GAAGA,SAAQ,oBAAoB,CAAC;AAAA,QAC7E;AAAA,MACF;AACA,aAAOM;AAAA,IACT;AAAA,IACA,aAAa,MAAM;AACjB,UAAIA,OAAM;AACV,eAAS7B,KAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACjD,cAAMuB,WAAU,KAAK,0BAA0BvB,EAAC;AAChD,QAAA6B,OAAM,KAAK,IAAIA,MAAKN,SAAQ,UAAU,GAAGA,SAAQ,eAAe,CAAC;AAAA,MACnE;AACA,aAAOM;AAAA,IACT;AAAA,IACA,qBAAqB,cAAc;AACjC,UAAI,mBAAmB;AACvB,eAAS7B,KAAI,GAAGA,KAAI,cAAc,EAAEA,IAAG;AACrC,YAAI,KAAK,MAAM,iBAAiBA,EAAC,GAAG;AAClC,8BAAoB,KAAK,eAAeA,EAAC;AAAA,QAC3C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,eAAe,cAAc;AAC3B,aAAO,KAAK,IAAI6D,gBAAe,KAAK,MAAM,KAAK,SAAS,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC;AAAA,IACrF;AAAA,IACA,gCAAgC;AAC9B,aAAO,KAAK,qBAAqB,KAAK,MAAM,KAAK,SAAS,MAAM,KAAK;AAAA,IACvE;AAAA,EACF;AACA,EAAAgD,oBAAmB,KAAK;AACxB,EAAAA,oBAAmB,WAAW;AAAA,IAC5B,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,WAAW;AAAA,MACT,eAAe;AAAA,MACf,cAAc;AAAA,IAChB;AAAA,IACA,YAAY;AAAA,MACV,SAAS;AAAA,QACP,MAAM;AAAA,QACN,YAAY,CAAC,iBAAiB,YAAY,eAAe,eAAe,cAAc,KAAK,KAAK,UAAU,eAAe,SAAS;AAAA,MACpI;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AACA,EAAAA,oBAAmB,cAAc;AAAA,IAC/B,aAAa,CAAC9F,UAASA,UAAS;AAAA,IAChC,YAAY,CAACA,UAASA,UAAS;AAAA,EACjC;AACA,EAAA8F,oBAAmB,YAAY;AAAA,IAC7B,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,QACN,QAAQ;AAAA,UACN,eAAe,OAAO;AACpB,kBAAMlE,QAAO,MAAM;AACnB,gBAAIA,MAAK,OAAO,UAAUA,MAAK,SAAS,QAAQ;AAC9C,oBAAM,EAAC,QAAQ,EAAC,WAAU,EAAC,IAAI,MAAM,OAAO;AAC5C,qBAAOA,MAAK,OAAO,IAAI,CAAC,OAAO3C,OAAM;AACnC,sBAAM,OAAO,MAAM,eAAe,CAAC;AACnC,sBAAM,QAAQ,KAAK,WAAW,SAASA,EAAC;AACxC,uBAAO;AAAA,kBACL,MAAM;AAAA,kBACN,WAAW,MAAM;AAAA,kBACjB,aAAa,MAAM;AAAA,kBACnB,WAAW,MAAM;AAAA,kBACjB;AAAA,kBACA,QAAQ,CAAC,MAAM,kBAAkBA,EAAC;AAAA,kBAClC,OAAOA;AAAA,gBACT;AAAA,cACF,CAAC;AAAA,YACH;AACA,mBAAO,CAAC;AAAA,UACV;AAAA,QACF;AAAA,QACA,QAAQkH,IAAG,YAAY,QAAQ;AAC7B,iBAAO,MAAM,qBAAqB,WAAW,KAAK;AAClD,iBAAO,MAAM,OAAO;AAAA,QACtB;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,UACT,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,UACA,MAAM,aAAa;AACjB,gBAAI,YAAY,YAAY;AAC5B,kBAAM,QAAQ,OAAO,YAAY;AACjC,gBAAI5F,SAAQ,SAAS,GAAG;AACtB,0BAAY,UAAU,MAAM;AAC5B,wBAAU,CAAC,KAAK;AAAA,YAClB,OAAO;AACL,2BAAa;AAAA,YACf;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAM6F,kBAAN,cAA6BvD,mBAAkB;AAAA,IAC7C,aAAa;AACX,WAAK,sBAAsB;AAC3B,WAAK,qBAAqB;AAC1B,YAAM,WAAW;AAAA,IACnB;AAAA,IACA,OAAO,MAAM;AACX,YAAM,OAAO,KAAK;AAClB,YAAM,EAAC,SAAS,MAAM,MAAM,SAAS,CAAC,GAAG,SAAQ,IAAI;AACrD,YAAM,qBAAqB,KAAK,MAAM;AACtC,UAAI,EAAC,OAAAI,QAAO,MAAK,IAAIoD,kCAAiC,MAAM,QAAQ,kBAAkB;AACtF,WAAK,aAAapD;AAClB,WAAK,aAAa;AAClB,UAAIqD,qBAAoB,IAAI,GAAG;AAC7B,QAAArD,SAAQ;AACR,gBAAQ,OAAO;AAAA,MACjB;AACA,WAAK,SAAS,KAAK;AACnB,WAAK,gBAAgB,KAAK;AAC1B,WAAK,aAAa,CAAC,CAAC,SAAS;AAC7B,WAAK,SAAS;AACd,YAAMzC,WAAU,KAAK,6BAA6B,IAAI;AACtD,UAAI,CAAC,KAAK,QAAQ,UAAU;AAC1B,QAAAA,SAAQ,cAAc;AAAA,MACxB;AACA,MAAAA,SAAQ,UAAU,KAAK,QAAQ;AAC/B,WAAK,cAAc,MAAM,QAAW;AAAA,QAClC,UAAU,CAAC;AAAA,QACX,SAAAA;AAAA,MACF,GAAG,IAAI;AACP,WAAK,eAAe,QAAQyC,QAAO,OAAO,IAAI;AAAA,IAChD;AAAA,IACA,eAAe,QAAQA,QAAO,OAAO,MAAM;AACzC,YAAM,QAAQ,SAAS;AACvB,YAAM,EAAC,QAAQ,QAAQ,UAAU,SAAQ,IAAI,KAAK;AAClD,YAAM,EAAC,eAAe,eAAc,IAAI,KAAK,kBAAkBA,QAAO,IAAI;AAC1E,YAAM,QAAQ,OAAO;AACrB,YAAM,QAAQ,OAAO;AACrB,YAAM,EAAC,UAAU,QAAO,IAAI,KAAK;AACjC,YAAM,eAAesD,UAAS,QAAQ,IAAI,WAAW,OAAO;AAC5D,YAAM,eAAe,KAAK,MAAM,uBAAuB,SAAS,SAAS;AACzE,UAAI,aAAatD,SAAQ,KAAK,KAAK,UAAUA,SAAQ,CAAC;AACtD,eAAShE,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAO,EAAEhE,IAAG;AAC1C,cAAMuG,SAAQ,OAAOvG,EAAC;AACtB,cAAM,SAAS,KAAK,UAAUA,EAAC;AAC/B,cAAM,aAAa,eAAeuG,SAAQ,CAAC;AAC3C,cAAM,WAAWrB,eAAc,OAAO,KAAK,CAAC;AAC5C,cAAM,SAAS,WAAW,KAAK,IAAI,OAAO,iBAAiB,OAAO,KAAK,GAAGlF,EAAC;AAC3E,cAAM,SAAS,WAAW,KAAK,IAAI,SAAS,WAAW,OAAO,aAAa,IAAI,OAAO,iBAAiB,WAAW,KAAK,WAAW,QAAQ,QAAQ,QAAQ,IAAI,OAAO,KAAK,GAAGA,EAAC;AAC9K,mBAAW,OAAO,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK;AACpD,mBAAW,OAAOA,KAAI,KAAM,KAAK,IAAI,OAAO,KAAK,IAAI,WAAW,KAAK,CAAC,IAAK;AAC3E,YAAI,SAAS;AACX,qBAAW,SAAS;AACpB,qBAAW,MAAM,SAAS,KAAKA,EAAC;AAAA,QAClC;AACA,YAAI,gBAAgB;AAClB,qBAAW,UAAU,iBAAiB,KAAK,0BAA0BA,IAAGuG,OAAM,SAAS,WAAW,IAAI;AAAA,QACxG;AACA,YAAI,CAAC,cAAc;AACjB,eAAK,cAAcA,QAAOvG,IAAG,YAAY,IAAI;AAAA,QAC/C;AACA,qBAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,iBAAiB;AACf,YAAM,OAAO,KAAK;AAClB,YAAM,UAAU,KAAK;AACrB,YAAM,SAAS,QAAQ,WAAW,QAAQ,QAAQ,eAAe;AACjE,YAAM2C,QAAO,KAAK,QAAQ,CAAC;AAC3B,UAAI,CAACA,MAAK,QAAQ;AAChB,eAAO;AAAA,MACT;AACA,YAAM,aAAaA,MAAK,CAAC,EAAE,KAAK,KAAK,0BAA0B,CAAC,CAAC;AACjE,YAAM,YAAYA,MAAKA,MAAK,SAAS,CAAC,EAAE,KAAK,KAAK,0BAA0BA,MAAK,SAAS,CAAC,CAAC;AAC5F,aAAO,KAAK,IAAI,QAAQ,YAAY,SAAS,IAAI;AAAA,IACnD;AAAA,IACA,OAAO;AACL,YAAM,OAAO,KAAK;AAClB,WAAK,QAAQ,oBAAoB,KAAK,MAAM,WAAW,KAAK,OAAO,IAAI;AACvE,YAAM,KAAK;AAAA,IACb;AAAA,EACF;AACA,EAAAwE,gBAAe,KAAK;AACpB,EAAAA,gBAAe,WAAW;AAAA,IACxB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACA,EAAAA,gBAAe,YAAY;AAAA,IACzB,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAMI,uBAAN,cAAkC3D,mBAAkB;AAAA,IAClD,YAAY,OAAO,cAAc;AAC/B,YAAM,OAAO,YAAY;AACzB,WAAK,cAAc;AACnB,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,iBAAiBV,QAAO;AACtB,YAAM,OAAO,KAAK;AAClB,YAAM,QAAQ,KAAK;AACnB,YAAM,SAAS,MAAM,KAAK,UAAU,CAAC;AACrC,YAAM,QAAQ+D,cAAa,KAAK,QAAQ/D,MAAK,EAAE,GAAG,MAAM,QAAQ,MAAM;AACtE,aAAO;AAAA,QACL,OAAO,OAAOA,MAAK,KAAK;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IACA,gBAAgB,MAAMP,OAAMqB,QAAO,OAAO;AACxC,aAAOwD,6BAA4B,KAAK,IAAI,EAAE,MAAM7E,OAAMqB,QAAO,KAAK;AAAA,IACxE;AAAA,IACA,OAAO,MAAM;AACX,YAAM,OAAO,KAAK,YAAY;AAC9B,WAAK,cAAc;AACnB,WAAK,eAAe,MAAM,GAAG,KAAK,QAAQ,IAAI;AAAA,IAChD;AAAA,IACA,YAAY;AACV,YAAM,OAAO,KAAK;AAClB,YAAMG,SAAQ,EAAC,KAAK,OAAO,mBAAmB,KAAK,OAAO,kBAAiB;AAC3E,WAAK,KAAK,QAAQ,CAAC,SAASjB,WAAU;AACpC,cAAM,SAAS,KAAK,UAAUA,MAAK,EAAE;AACrC,YAAI,CAAC,MAAM,MAAM,KAAK,KAAK,MAAM,kBAAkBA,MAAK,GAAG;AACzD,cAAI,SAASiB,OAAM,KAAK;AACtB,YAAAA,OAAM,MAAM;AAAA,UACd;AACA,cAAI,SAASA,OAAM,KAAK;AACtB,YAAAA,OAAM,MAAM;AAAA,UACd;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAOA;AAAA,IACT;AAAA,IACA,gBAAgB;AACd,YAAM,QAAQ,KAAK;AACnB,YAAM,YAAY,MAAM;AACxB,YAAM,OAAO,MAAM;AACnB,YAAM,UAAU,KAAK,IAAI,UAAU,QAAQ,UAAU,MAAM,UAAU,SAAS,UAAU,GAAG;AAC3F,YAAM,cAAc,KAAK,IAAI,UAAU,GAAG,CAAC;AAC3C,YAAM,cAAc,KAAK,IAAI,KAAK,mBAAoB,cAAc,MAAQ,KAAK,mBAAoB,GAAG,CAAC;AACzG,YAAM,gBAAgB,cAAc,eAAe,MAAM,uBAAuB;AAChF,WAAK,cAAc,cAAe,eAAe,KAAK;AACtD,WAAK,cAAc,KAAK,cAAc;AAAA,IACxC;AAAA,IACA,eAAe,MAAMH,QAAO,OAAO,MAAM;AACvC,YAAM,QAAQ,SAAS;AACvB,YAAM,QAAQ,KAAK;AACnB,YAAM,OAAO,MAAM;AACnB,YAAM,gBAAgB,KAAK;AAC3B,YAAMrC,SAAQ,KAAK,YAAY;AAC/B,YAAM,UAAUA,OAAM;AACtB,YAAM,UAAUA,OAAM;AACtB,YAAM,oBAAoBA,OAAM,cAAc,CAAC,IAAI,MAAMiF;AACzD,UAAI,QAAQ;AACZ,UAAI5G;AACJ,YAAM,eAAe,MAAM,KAAK,qBAAqB;AACrD,WAAKA,KAAI,GAAGA,KAAIgE,QAAO,EAAEhE,IAAG;AAC1B,iBAAS,KAAK,cAAcA,IAAG,MAAM,YAAY;AAAA,MACnD;AACA,WAAKA,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAOhE,MAAK;AACtC,cAAM,MAAM,KAAKA,EAAC;AAClB,YAAI,aAAa;AACjB,YAAI,WAAW,QAAQ,KAAK,cAAcA,IAAG,MAAM,YAAY;AAC/D,YAAI,cAAc,MAAM,kBAAkBA,EAAC,IAAI2B,OAAM,8BAA8B,KAAK,UAAU3B,EAAC,EAAE,CAAC,IAAI;AAC1G,gBAAQ;AACR,YAAI,OAAO;AACT,cAAI,cAAc,cAAc;AAC9B,0BAAc;AAAA,UAChB;AACA,cAAI,cAAc,eAAe;AAC/B,yBAAa,WAAW;AAAA,UAC1B;AAAA,QACF;AACA,cAAM,aAAa;AAAA,UACjB,GAAG;AAAA,UACH,GAAG;AAAA,UACH,aAAa;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,KAAK,0BAA0BA,IAAG,IAAI,SAAS,WAAW,IAAI;AAAA,QACzE;AACA,aAAK,cAAc,KAAKA,IAAG,YAAY,IAAI;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,uBAAuB;AACrB,YAAM,OAAO,KAAK;AAClB,UAAI,QAAQ;AACZ,WAAK,KAAK,QAAQ,CAAC,SAASkD,WAAU;AACpC,YAAI,CAAC,MAAM,KAAK,UAAUA,MAAK,EAAE,CAAC,KAAK,KAAK,MAAM,kBAAkBA,MAAK,GAAG;AAC1E;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,cAAcA,QAAO,MAAM,cAAc;AACvC,aAAO,KAAK,MAAM,kBAAkBA,MAAK,IACrC4D,WAAU,KAAK,0BAA0B5D,QAAO,IAAI,EAAE,SAAS,YAAY,IAC3E;AAAA,IACN;AAAA,EACF;AACA,EAAAqE,qBAAoB,KAAK;AACzB,EAAAA,qBAAoB,WAAW;AAAA,IAC7B,iBAAiB;AAAA,IACjB,WAAW;AAAA,MACT,eAAe;AAAA,MACf,cAAc;AAAA,IAChB;AAAA,IACA,YAAY;AAAA,MACV,SAAS;AAAA,QACP,MAAM;AAAA,QACN,YAAY,CAAC,KAAK,KAAK,cAAc,YAAY,eAAe,aAAa;AAAA,MAC/E;AAAA,IACF;AAAA,IACA,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AACA,EAAAA,qBAAoB,YAAY;AAAA,IAC9B,aAAa;AAAA,IACb,SAAS;AAAA,MACP,QAAQ;AAAA,QACN,QAAQ;AAAA,UACN,eAAe,OAAO;AACpB,kBAAM5E,QAAO,MAAM;AACnB,gBAAIA,MAAK,OAAO,UAAUA,MAAK,SAAS,QAAQ;AAC9C,oBAAM,EAAC,QAAQ,EAAC,WAAU,EAAC,IAAI,MAAM,OAAO;AAC5C,qBAAOA,MAAK,OAAO,IAAI,CAAC,OAAO3C,OAAM;AACnC,sBAAM,OAAO,MAAM,eAAe,CAAC;AACnC,sBAAM,QAAQ,KAAK,WAAW,SAASA,EAAC;AACxC,uBAAO;AAAA,kBACL,MAAM;AAAA,kBACN,WAAW,MAAM;AAAA,kBACjB,aAAa,MAAM;AAAA,kBACnB,WAAW,MAAM;AAAA,kBACjB;AAAA,kBACA,QAAQ,CAAC,MAAM,kBAAkBA,EAAC;AAAA,kBAClC,OAAOA;AAAA,gBACT;AAAA,cACF,CAAC;AAAA,YACH;AACA,mBAAO,CAAC;AAAA,UACV;AAAA,QACF;AAAA,QACA,QAAQkH,IAAG,YAAY,QAAQ;AAC7B,iBAAO,MAAM,qBAAqB,WAAW,KAAK;AAClD,iBAAO,MAAM,OAAO;AAAA,QACtB;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,UACT,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,UACA,MAAM,SAAS;AACb,mBAAO,QAAQ,MAAM,KAAK,OAAO,QAAQ,SAAS,IAAI,OAAO,QAAQ;AAAA,UACvE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,GAAG;AAAA,QACD,MAAM;AAAA,QACN,YAAY;AAAA,UACV,SAAS;AAAA,QACX;AAAA,QACA,aAAa;AAAA,QACb,MAAM;AAAA,UACJ,UAAU;AAAA,QACZ;AAAA,QACA,aAAa;AAAA,UACX,SAAS;AAAA,QACX;AAAA,QACA,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,MAAMO,iBAAN,cAA4BZ,oBAAmB;AAAA,EAC/C;AACA,EAAAY,eAAc,KAAK;AACnB,EAAAA,eAAc,WAAW;AAAA,IACvB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,eAAe;AAAA,IACf,QAAQ;AAAA,EACV;AAEA,MAAMC,mBAAN,cAA8B9D,mBAAkB;AAAA,IAC9C,iBAAiBV,QAAO;AACtB,YAAM,SAAS,KAAK,YAAY;AAChC,YAAM,SAAS,KAAK,UAAUA,MAAK;AACnC,aAAO;AAAA,QACL,OAAO,OAAO,UAAU,EAAEA,MAAK;AAAA,QAC/B,OAAO,KAAK,OAAO,iBAAiB,OAAO,OAAO,IAAI,CAAC;AAAA,MACzD;AAAA,IACF;AAAA,IACA,gBAAgB,MAAMP,OAAMqB,QAAO,OAAO;AACxC,aAAOwD,6BAA4B,KAAK,IAAI,EAAE,MAAM7E,OAAMqB,QAAO,KAAK;AAAA,IACxE;AAAA,IACA,OAAO,MAAM;AACX,YAAM,OAAO,KAAK;AAClB,YAAM,OAAO,KAAK;AAClB,YAAM,SAAS,KAAK,QAAQ,CAAC;AAC7B,YAAM,SAAS,KAAK,OAAO,UAAU;AACrC,WAAK,SAAS;AACd,UAAI,SAAS,UAAU;AACrB,cAAMzC,WAAU,KAAK,6BAA6B,IAAI;AACtD,YAAI,CAAC,KAAK,QAAQ,UAAU;AAC1B,UAAAA,SAAQ,cAAc;AAAA,QACxB;AACA,cAAM,aAAa;AAAA,UACjB,OAAO;AAAA,UACP,WAAW,OAAO,WAAW,OAAO;AAAA,UACpC,SAAAA;AAAA,QACF;AACA,aAAK,cAAc,MAAM,QAAW,YAAY,IAAI;AAAA,MACtD;AACA,WAAK,eAAe,QAAQ,GAAG,OAAO,QAAQ,IAAI;AAAA,IACpD;AAAA,IACA,eAAe,QAAQyC,QAAO,OAAO,MAAM;AACzC,YAAMrC,SAAQ,KAAK,YAAY;AAC/B,YAAM,QAAQ,SAAS;AACvB,eAAS3B,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAOhE,MAAK;AAC1C,cAAMuG,SAAQ,OAAOvG,EAAC;AACtB,cAAMuB,WAAU,KAAK,0BAA0BvB,IAAGuG,OAAM,SAAS,WAAW,IAAI;AAChF,cAAM,gBAAgB5E,OAAM,yBAAyB3B,IAAG,KAAK,UAAUA,EAAC,EAAE,CAAC;AAC3E,cAAM+B,KAAI,QAAQJ,OAAM,UAAU,cAAc;AAChD,cAAMK,KAAI,QAAQL,OAAM,UAAU,cAAc;AAChD,cAAM,aAAa;AAAA,UACjB,GAAAI;AAAA,UACA,GAAAC;AAAA,UACA,OAAO,cAAc;AAAA,UACrB,MAAM,MAAMD,EAAC,KAAK,MAAMC,EAAC;AAAA,UACzB,SAAAT;AAAA,QACF;AACA,aAAK,cAAcgF,QAAOvG,IAAG,YAAY,IAAI;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AACA,EAAA0H,iBAAgB,KAAK;AACrB,EAAAA,iBAAgB,WAAW;AAAA,IACzB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,UAAU;AAAA,IACV,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,EAAAA,iBAAgB,YAAY;AAAA,IAC1B,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,GAAG;AAAA,QACD,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAMC,WAAN,MAAc;AAAA,IACZ,cAAc;AACZ,WAAK,IAAI;AACT,WAAK,IAAI;AACT,WAAK,SAAS;AACd,WAAK,UAAU;AACf,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,gBAAgB,kBAAkB;AAChC,YAAM,EAAC,GAAA5F,IAAG,GAAAC,GAAC,IAAI,KAAK,SAAS,CAAC,KAAK,GAAG,GAAG,gBAAgB;AACzD,aAAO,EAAC,GAAAD,IAAG,GAAAC,GAAC;AAAA,IACd;AAAA,IACA,WAAW;AACT,aAAOsF,UAAS,KAAK,CAAC,KAAKA,UAAS,KAAK,CAAC;AAAA,IAC5C;AAAA,IACA,SAAS,OAAO,OAAO;AACrB,YAAM,QAAQ,KAAK;AACnB,UAAI,CAAC,SAAS,CAAC,OAAO;AACpB,eAAO;AAAA,MACT;AACA,YAAM,MAAM,CAAC;AACb,YAAM,QAAQ,UAAQ;AACpB,YAAI,IAAI,IAAI,MAAM,IAAI,KAAK,MAAM,IAAI,EAAE,OAAO,IAAI,MAAM,IAAI,EAAE,MAAM,KAAK,IAAI;AAAA,MAC/E,CAAC;AACD,aAAO;AAAA,IACT;AAAA,EACF;AACA,EAAAK,SAAQ,WAAW,CAAC;AACpB,EAAAA,SAAQ,gBAAgB;AAExB,MAAMC,cAAa;AAAA,IACjB,OAAO,OAAO;AACZ,aAAOtG,SAAQ,KAAK,IAAI,QAAQ,KAAK;AAAA,IACvC;AAAA,IACA,QAAQ,WAAW4B,QAAO,OAAO;AAC/B,UAAI,cAAc,GAAG;AACnB,eAAO;AAAA,MACT;AACA,YAAM,SAAS,KAAK,MAAM,QAAQ;AAClC,UAAI;AACJ,UAAI,QAAQ;AACZ,UAAI,MAAM,SAAS,GAAG;AACpB,cAAM,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK,CAAC;AAC1F,YAAI,UAAU,QAAQ,UAAU,MAAO;AACrC,qBAAW;AAAA,QACb;AACA,gBAAQ2E,gBAAe,WAAW,KAAK;AAAA,MACzC;AACA,YAAM,WAAWC,OAAM,KAAK,IAAI,KAAK,CAAC;AACtC,YAAM,aAAa,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,QAAQ,GAAG,EAAE,GAAG,CAAC;AACtE,YAAMvG,WAAU,EAAC,UAAU,uBAAuB,YAAY,uBAAuB,WAAU;AAC/F,aAAO,OAAOA,UAAS,KAAK,QAAQ,MAAM,MAAM;AAChD,aAAO0F,cAAa,WAAW,QAAQ1F,QAAO;AAAA,IAChD;AAAA,IACA,YAAY,WAAW2B,QAAO,OAAO;AACnC,UAAI,cAAc,GAAG;AACnB,eAAO;AAAA,MACT;AACA,YAAM,SAAS,YAAa,KAAK,IAAI,IAAI,KAAK,MAAM4E,OAAM,SAAS,CAAC,CAAC;AACrE,UAAI,WAAW,KAAK,WAAW,KAAK,WAAW,GAAG;AAChD,eAAOF,YAAW,QAAQ,KAAK,MAAM,WAAW1E,QAAO,KAAK;AAAA,MAC9D;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS2E,gBAAe,WAAW,OAAO;AACxC,QAAI,QAAQ,MAAM,SAAS,IAAI,MAAM,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE;AAC3F,QAAI,KAAK,IAAI,KAAK,KAAK,KAAK,cAAc,KAAK,MAAM,SAAS,GAAG;AAC/D,cAAQ,YAAY,KAAK,MAAM,SAAS;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AACA,MAAIE,SAAQ,EAAC,YAAAH,YAAU;AAEvB,EAAA9G,UAAS,IAAI,SAAS;AAAA,IACpB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAW,CAAC,MAAMS,aAAYA,SAAQ;AAAA,MACtC,WAAW,CAAC,MAAMA,aAAYA,SAAQ;AAAA,MACtC,QAAQ;AAAA,MACR,YAAY,CAAC;AAAA,MACb,kBAAkB;AAAA,MAClB,aAAa;AAAA,IACf;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,UAAUwG,OAAM,WAAW;AAAA,MAC3B,OAAO,CAAC;AAAA,MACR,OAAO,CAAC;AAAA,MACR,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,iBAAiB;AAAA,IACnB;AAAA,EACF,CAAC;AACD,EAAAjH,UAAS,MAAM,eAAe,SAAS,IAAI,OAAO;AAClD,EAAAA,UAAS,MAAM,cAAc,SAAS,IAAI,aAAa;AACvD,EAAAA,UAAS,MAAM,cAAc,eAAe,IAAI,aAAa;AAC7D,EAAAA,UAAS,MAAM,eAAe,SAAS,IAAI,OAAO;AAClD,EAAAA,UAAS,SAAS,SAAS;AAAA,IACzB,WAAW;AAAA,IACX,aAAa,CAACC,UAAS,CAACA,MAAK,WAAW,QAAQ,KAAK,CAACA,MAAK,WAAW,OAAO,KAAKA,UAAS,cAAcA,UAAS;AAAA,IAClH,YAAY,CAACA,UAASA,UAAS,gBAAgBA,UAAS;AAAA,EAC1D,CAAC;AACD,EAAAD,UAAS,SAAS,UAAU;AAAA,IAC1B,WAAW;AAAA,EACb,CAAC;AACD,EAAAA,UAAS,SAAS,eAAe;AAAA,IAC/B,aAAa,CAACC,UAASA,UAAS,qBAAqBA,UAAS;AAAA,IAC9D,YAAY,CAACA,UAASA,UAAS;AAAA,EACjC,CAAC;AAED,WAASiH,UAASrG,QAAO,OAAO;AAC9B,UAAM,WAAWA,OAAM,QAAQ;AAC/B,UAAM,aAAa,SAAS,iBAAiBsG,mBAAkBtG,MAAK;AACpE,UAAM,eAAe,SAAS,MAAM,UAAUuG,iBAAgB,KAAK,IAAI,CAAC;AACxE,UAAM,kBAAkB,aAAa;AACrC,UAAM,QAAQ,aAAa,CAAC;AAC5B,UAAM,OAAO,aAAa,kBAAkB,CAAC;AAC7C,UAAM,WAAW,CAAC;AAClB,QAAI,kBAAkB,YAAY;AAChC,MAAAC,YAAW,OAAO,UAAU,cAAc,kBAAkB,UAAU;AACtE,aAAO;AAAA,IACT;AACA,UAAM,UAAUC,kBAAiB,cAAc,OAAO,UAAU;AAChE,QAAI,kBAAkB,GAAG;AACvB,UAAIpI,IAAG;AACP,YAAM,kBAAkB,kBAAkB,IAAI,KAAK,OAAO,OAAO,UAAU,kBAAkB,EAAE,IAAI;AACnG,MAAAqI,MAAK,OAAO,UAAU,SAASnD,eAAc,eAAe,IAAI,IAAI,QAAQ,iBAAiB,KAAK;AAClG,WAAKlF,KAAI,GAAG,OAAO,kBAAkB,GAAGA,KAAI,MAAMA,MAAK;AACrD,QAAAqI,MAAK,OAAO,UAAU,SAAS,aAAarI,EAAC,GAAG,aAAaA,KAAI,CAAC,CAAC;AAAA,MACrE;AACA,MAAAqI,MAAK,OAAO,UAAU,SAAS,MAAMnD,eAAc,eAAe,IAAI,MAAM,SAAS,OAAO,eAAe;AAC3G,aAAO;AAAA,IACT;AACA,IAAAmD,MAAK,OAAO,UAAU,OAAO;AAC7B,WAAO;AAAA,EACT;AACA,WAASJ,mBAAkBtG,QAAO;AAChC,UAAM2G,UAAS3G,OAAM,QAAQ;AAC7B,UAAM,aAAaA,OAAM,UAAU;AACnC,UAAM,WAAWA,OAAM,UAAU,cAAc2G,UAAS,IAAI;AAC5D,UAAM,WAAW3G,OAAM,aAAa;AACpC,WAAO,KAAK,MAAM,KAAK,IAAI,UAAU,QAAQ,CAAC;AAAA,EAChD;AACA,WAASyG,kBAAiB,cAAc,OAAO,YAAY;AACzD,UAAM,mBAAmBG,gBAAe,YAAY;AACpD,UAAM,UAAU,MAAM,SAAS;AAC/B,QAAI,CAAC,kBAAkB;AACrB,aAAO,KAAK,IAAI,SAAS,CAAC;AAAA,IAC5B;AACA,UAAM,UAAUC,YAAW,gBAAgB;AAC3C,aAASxI,KAAI,GAAG,OAAO,QAAQ,SAAS,GAAGA,KAAI,MAAMA,MAAK;AACxD,YAAM,SAAS,QAAQA,EAAC;AACxB,UAAI,SAAS,SAAS;AACpB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,KAAK,IAAI,SAAS,CAAC;AAAA,EAC5B;AACA,WAASkI,iBAAgB,OAAO;AAC9B,UAAM,SAAS,CAAC;AAChB,QAAIlI,IAAG;AACP,SAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAMA,MAAK;AAC9C,UAAI,MAAMA,EAAC,EAAE,OAAO;AAClB,eAAO,KAAKA,EAAC;AAAA,MACf;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASmI,YAAW,OAAO,UAAU,cAAc,SAAS;AAC1D,QAAI,QAAQ;AACZ,QAAI/C,QAAO,aAAa,CAAC;AACzB,QAAIpF;AACJ,cAAU,KAAK,KAAK,OAAO;AAC3B,SAAKA,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACjC,UAAIA,OAAMoF,OAAM;AACd,iBAAS,KAAK,MAAMpF,EAAC,CAAC;AACtB;AACA,QAAAoF,QAAO,aAAa,QAAQ,OAAO;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AACA,WAASiD,MAAK,OAAO,UAAU,SAAS,YAAY,UAAU;AAC5D,UAAMrE,SAAQH,gBAAe,YAAY,CAAC;AAC1C,UAAMa,OAAM,KAAK,IAAIb,gBAAe,UAAU,MAAM,MAAM,GAAG,MAAM,MAAM;AACzE,QAAI,QAAQ;AACZ,QAAIuC,SAAQpG,IAAGoF;AACf,cAAU,KAAK,KAAK,OAAO;AAC3B,QAAI,UAAU;AACZ,MAAAgB,UAAS,WAAW;AACpB,gBAAUA,UAAS,KAAK,MAAMA,UAAS,OAAO;AAAA,IAChD;AACA,IAAAhB,QAAOpB;AACP,WAAOoB,QAAO,GAAG;AACf;AACA,MAAAA,QAAO,KAAK,MAAMpB,SAAQ,QAAQ,OAAO;AAAA,IAC3C;AACA,SAAKhE,KAAI,KAAK,IAAIgE,QAAO,CAAC,GAAGhE,KAAI0E,MAAK1E,MAAK;AACzC,UAAIA,OAAMoF,OAAM;AACd,iBAAS,KAAK,MAAMpF,EAAC,CAAC;AACtB;AACA,QAAAoF,QAAO,KAAK,MAAMpB,SAAQ,QAAQ,OAAO;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AACA,WAASuE,gBAAe,KAAK;AAC3B,UAAM,MAAM,IAAI;AAChB,QAAIvI,IAAG;AACP,QAAI,MAAM,GAAG;AACX,aAAO;AAAA,IACT;AACA,SAAK,OAAO,IAAI,CAAC,GAAGA,KAAI,GAAGA,KAAI,KAAK,EAAEA,IAAG;AACvC,UAAI,IAAIA,EAAC,IAAI,IAAIA,KAAI,CAAC,MAAM,MAAM;AAChC,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAMyI,gBAAe,CAAC,UAAU,UAAU,SAAS,UAAU,UAAU,UAAU,SAAS;AAC1F,MAAMC,kBAAiB,CAAC/G,QAAO,MAAM2G,YAAW,SAAS,SAAS,SAAS,SAAS3G,OAAM,IAAI,IAAI2G,UAAS3G,OAAM,IAAI,IAAI2G;AACzH,WAASK,QAAO,KAAK,UAAU;AAC7B,UAAM,SAAS,CAAC;AAChB,UAAM,YAAY,IAAI,SAAS;AAC/B,UAAM,MAAM,IAAI;AAChB,QAAI3I,KAAI;AACR,WAAOA,KAAI,KAAKA,MAAK,WAAW;AAC9B,aAAO,KAAK,IAAI,KAAK,MAAMA,EAAC,CAAC,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,WAAS4I,qBAAoBjH,QAAOuB,QAAO,iBAAiB;AAC1D,UAAMkD,UAASzE,OAAM,MAAM;AAC3B,UAAMkH,cAAa,KAAK,IAAI3F,QAAOkD,UAAS,CAAC;AAC7C,UAAMpC,SAAQrC,OAAM;AACpB,UAAM+C,OAAM/C,OAAM;AAClB,UAAM,UAAU;AAChB,QAAI,YAAYA,OAAM,gBAAgBkH,WAAU;AAChD,QAAIP;AACJ,QAAI,iBAAiB;AACnB,UAAIlC,YAAW,GAAG;AAChB,QAAAkC,UAAS,KAAK,IAAI,YAAYtE,QAAOU,OAAM,SAAS;AAAA,MACtD,WAAWxB,WAAU,GAAG;AACtB,QAAAoF,WAAU3G,OAAM,gBAAgB,CAAC,IAAI,aAAa;AAAA,MACpD,OAAO;AACL,QAAA2G,WAAU,YAAY3G,OAAM,gBAAgBkH,cAAa,CAAC,KAAK;AAAA,MACjE;AACA,mBAAaA,cAAa3F,SAAQoF,UAAS,CAACA;AAC5C,UAAI,YAAYtE,SAAQ,WAAW,YAAYU,OAAM,SAAS;AAC5D;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASoE,gBAAe,QAAQ1C,SAAQ;AACtC,IAAA2C,MAAK,QAAQ,CAACxE,WAAU;AACtB,YAAM,KAAKA,OAAM;AACjB,YAAM,QAAQ,GAAG,SAAS;AAC1B,UAAIvE;AACJ,UAAI,QAAQoG,SAAQ;AAClB,aAAKpG,KAAI,GAAGA,KAAI,OAAO,EAAEA,IAAG;AAC1B,iBAAOuE,OAAM,KAAK,GAAGvE,EAAC,CAAC;AAAA,QACzB;AACA,WAAG,OAAO,GAAG,KAAK;AAAA,MACpB;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAASgJ,mBAAkBzH,UAAS;AAClC,WAAOA,SAAQ,YAAYA,SAAQ,aAAa;AAAA,EAClD;AACA,WAAS0H,gBAAe1H,UAAS,UAAU;AACzC,QAAI,CAACA,SAAQ,SAAS;AACpB,aAAO;AAAA,IACT;AACA,UAAM,OAAO2H,QAAO3H,SAAQ,MAAM,QAAQ;AAC1C,UAAM,UAAU4H,WAAU5H,SAAQ,OAAO;AACzC,UAAM,QAAQD,SAAQC,SAAQ,IAAI,IAAIA,SAAQ,KAAK,SAAS;AAC5D,WAAQ,QAAQ,KAAK,aAAc,QAAQ;AAAA,EAC7C;AACA,WAAS6H,oBAAmB,QAAQzH,QAAO;AACzC,WAAO2B,eAAc,QAAQ;AAAA,MAC3B,OAAA3B;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,WAAS0H,mBAAkB,QAAQnG,QAAO,MAAM;AAC9C,WAAOI,eAAc,QAAQ;AAAA,MAC3B;AAAA,MACA,OAAAJ;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,WAASoG,YAAW,OAAOC,WAAU,SAAS;AAC5C,QAAI,MAAMC,oBAAmB,KAAK;AAClC,QAAK,WAAWD,cAAa,WAAa,CAAC,WAAWA,cAAa,SAAU;AAC3E,YAAMd,cAAa,GAAG;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AACA,WAASgB,WAAU9H,QAAO2G,SAAQiB,WAAU,OAAO;AACjD,UAAM,EAAC,KAAA5D,MAAK,MAAA+D,OAAM,QAAA9D,SAAQ,OAAA+D,QAAO,MAAK,IAAIhI;AAC1C,UAAM,EAAC,WAAW,QAAAyB,QAAM,IAAI;AAC5B,QAAI,WAAW;AACf,QAAI,UAAU,QAAQ;AACtB,UAAMwG,UAAShE,UAASD;AACxB,UAAMkE,SAAQF,SAAQD;AACtB,QAAI/H,OAAM,aAAa,GAAG;AACxB,eAASmI,gBAAe,OAAOJ,OAAMC,MAAK;AAC1C,UAAIxI,UAASoI,SAAQ,GAAG;AACtB,cAAM,iBAAiB,OAAO,KAAKA,SAAQ,EAAE,CAAC;AAC9C,cAAM,QAAQA,UAAS,cAAc;AACrC,iBAASnG,QAAO,cAAc,EAAE,iBAAiB,KAAK,IAAIwG,UAAStB;AAAA,MACrE,WAAWiB,cAAa,UAAU;AAChC,kBAAU,UAAU,SAAS,UAAU,OAAO,IAAIK,UAAStB;AAAA,MAC7D,OAAO;AACL,iBAASI,gBAAe/G,QAAO4H,WAAUjB,OAAM;AAAA,MACjD;AACA,iBAAWqB,SAAQD;AAAA,IACrB,OAAO;AACL,UAAIvI,UAASoI,SAAQ,GAAG;AACtB,cAAM,iBAAiB,OAAO,KAAKA,SAAQ,EAAE,CAAC;AAC9C,cAAM,QAAQA,UAAS,cAAc;AACrC,iBAASnG,QAAO,cAAc,EAAE,iBAAiB,KAAK,IAAIyG,SAAQvB;AAAA,MACpE,WAAWiB,cAAa,UAAU;AAChC,kBAAU,UAAU,OAAO,UAAU,SAAS,IAAIM,SAAQvB;AAAA,MAC5D,OAAO;AACL,iBAASI,gBAAe/G,QAAO4H,WAAUjB,OAAM;AAAA,MACjD;AACA,eAASwB,gBAAe,OAAOlE,SAAQD,IAAG;AAC1C,iBAAW4D,cAAa,SAAS,CAAC5C,WAAUA;AAAA,IAC9C;AACA,WAAO,EAAC,QAAQ,QAAQ,UAAU,SAAQ;AAAA,EAC5C;AACA,MAAMoD,SAAN,cAAoBpC,SAAQ;AAAA,IAC1B,YAAY,KAAK;AACf,YAAM;AACN,WAAK,KAAK,IAAI;AACd,WAAK,OAAO,IAAI;AAChB,WAAK,UAAU;AACf,WAAK,MAAM,IAAI;AACf,WAAK,QAAQ,IAAI;AACjB,WAAK,MAAM;AACX,WAAK,SAAS;AACd,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,WAAW;AAAA,QACd,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AACA,WAAK,WAAW;AAChB,WAAK,YAAY;AACjB,WAAK,aAAa;AAClB,WAAK,gBAAgB;AACrB,WAAK,cAAc;AACnB,WAAK,eAAe;AACpB,WAAK,OAAO;AACZ,WAAK,gBAAgB;AACrB,WAAK,MAAM;AACX,WAAK,MAAM;AACX,WAAK,SAAS;AACd,WAAK,QAAQ,CAAC;AACd,WAAK,iBAAiB;AACtB,WAAK,cAAc;AACnB,WAAK,cAAc;AACnB,WAAK,UAAU;AACf,WAAK,aAAa;AAClB,WAAK,oBAAoB,CAAC;AAC1B,WAAK,cAAc;AACnB,WAAK,YAAY;AACjB,WAAK,iBAAiB;AACtB,WAAK,WAAW;AAChB,WAAK,WAAW;AAChB,WAAK,gBAAgB;AACrB,WAAK,gBAAgB;AACrB,WAAK,eAAe;AACpB,WAAK,eAAe;AACpB,WAAK,SAAS,CAAC;AACf,WAAK,oBAAoB;AACzB,WAAK,WAAW;AAAA,IAClB;AAAA,IACA,KAAKpG,UAAS;AACZ,WAAK,UAAUA,SAAQ,WAAW,KAAK,WAAW,CAAC;AACnD,WAAK,OAAOA,SAAQ;AACpB,WAAK,WAAW,KAAK,MAAMA,SAAQ,GAAG;AACtC,WAAK,WAAW,KAAK,MAAMA,SAAQ,GAAG;AACtC,WAAK,gBAAgB,KAAK,MAAMA,SAAQ,YAAY;AACpD,WAAK,gBAAgB,KAAK,MAAMA,SAAQ,YAAY;AAAA,IACtD;AAAA,IACA,MAAM,KAAK2B,QAAO;AAChB,aAAO;AAAA,IACT;AAAA,IACA,gBAAgB;AACd,UAAI,EAAC,UAAU,UAAU,eAAe,cAAa,IAAI;AACzD,iBAAW8G,iBAAgB,UAAU,OAAO,iBAAiB;AAC7D,iBAAWA,iBAAgB,UAAU,OAAO,iBAAiB;AAC7D,sBAAgBA,iBAAgB,eAAe,OAAO,iBAAiB;AACvE,sBAAgBA,iBAAgB,eAAe,OAAO,iBAAiB;AACvE,aAAO;AAAA,QACL,KAAKA,iBAAgB,UAAU,aAAa;AAAA,QAC5C,KAAKA,iBAAgB,UAAU,aAAa;AAAA,QAC5C,YAAYxH,gBAAe,QAAQ;AAAA,QACnC,YAAYA,gBAAe,QAAQ;AAAA,MACrC;AAAA,IACF;AAAA,IACA,UAAU,UAAU;AAClB,UAAI,EAAC,KAAAZ,MAAK,KAAAC,MAAK,YAAY,WAAU,IAAI,KAAK,cAAc;AAC5D,UAAIsC;AACJ,UAAI,cAAc,YAAY;AAC5B,eAAO,EAAC,KAAAvC,MAAK,KAAAC,KAAG;AAAA,MAClB;AACA,YAAM,QAAQ,KAAK,wBAAwB;AAC3C,eAAS7B,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAClD,QAAAmE,SAAQ,MAAMnE,EAAC,EAAE,WAAW,UAAU,MAAM,QAAQ;AACpD,YAAI,CAAC,YAAY;AACf,UAAA4B,OAAM,KAAK,IAAIA,MAAKuC,OAAM,GAAG;AAAA,QAC/B;AACA,YAAI,CAAC,YAAY;AACf,UAAAtC,OAAM,KAAK,IAAIA,MAAKsC,OAAM,GAAG;AAAA,QAC/B;AAAA,MACF;AACA,MAAAvC,OAAM,cAAcA,OAAMC,OAAMA,OAAMD;AACtC,MAAAC,OAAM,cAAcD,OAAMC,OAAMD,OAAMC;AACtC,aAAO;AAAA,QACL,KAAKmI,iBAAgBpI,MAAKoI,iBAAgBnI,MAAKD,IAAG,CAAC;AAAA,QACnD,KAAKoI,iBAAgBnI,MAAKmI,iBAAgBpI,MAAKC,IAAG,CAAC;AAAA,MACrD;AAAA,IACF;AAAA,IACA,aAAa;AACX,aAAO;AAAA,QACL,MAAM,KAAK,eAAe;AAAA,QAC1B,KAAK,KAAK,cAAc;AAAA,QACxB,OAAO,KAAK,gBAAgB;AAAA,QAC5B,QAAQ,KAAK,iBAAiB;AAAA,MAChC;AAAA,IACF;AAAA,IACA,WAAW;AACT,aAAO,KAAK;AAAA,IACd;AAAA,IACA,YAAY;AACV,YAAMc,QAAO,KAAK,MAAM;AACxB,aAAO,KAAK,QAAQ,WAAW,KAAK,aAAa,IAAIA,MAAK,UAAUA,MAAK,YAAYA,MAAK,UAAU,CAAC;AAAA,IACvG;AAAA,IACA,eAAe;AACb,WAAK,SAAS,CAAC;AACf,WAAK,oBAAoB;AAAA,IAC3B;AAAA,IACA,eAAe;AACb,MAAAsH,UAAS,KAAK,QAAQ,cAAc,CAAC,IAAI,CAAC;AAAA,IAC5C;AAAA,IACA,OAAO,UAAU,WAAW,SAAS;AACnC,YAAM,EAAC,aAAa,OAAO,OAAO,SAAQ,IAAI,KAAK;AACnD,YAAM,aAAa,SAAS;AAC5B,WAAK,aAAa;AAClB,WAAK,WAAW;AAChB,WAAK,YAAY;AACjB,WAAK,WAAW,UAAU,OAAO,OAAO;AAAA,QACtC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,MACV,GAAG,OAAO;AACV,WAAK,QAAQ;AACb,WAAK,cAAc;AACnB,WAAK,iBAAiB;AACtB,WAAK,cAAc;AACnB,WAAK,oBAAoB;AACzB,WAAK,cAAc;AACnB,WAAK,mBAAmB;AACxB,WAAK,aAAa,KAAK,aAAa,IAChC,KAAK,QAAQ,QAAQ,OAAO,QAAQ,QACpC,KAAK,SAAS,QAAQ,MAAM,QAAQ;AACxC,UAAI,CAAC,KAAK,mBAAmB;AAC3B,aAAK,iBAAiB;AACtB,aAAK,oBAAoB;AACzB,aAAK,gBAAgB;AACrB,aAAK,SAASC,WAAU,MAAM,OAAO,WAAW;AAChD,aAAK,oBAAoB;AAAA,MAC3B;AACA,WAAK,iBAAiB;AACtB,WAAK,QAAQ,KAAK,WAAW,KAAK,CAAC;AACnC,WAAK,gBAAgB;AACrB,YAAM,kBAAkB,aAAa,KAAK,MAAM;AAChD,WAAK,sBAAsB,kBAAkBvB,QAAO,KAAK,OAAO,UAAU,IAAI,KAAK,KAAK;AACxF,WAAK,UAAU;AACf,WAAK,6BAA6B;AAClC,WAAK,uBAAuB;AAC5B,WAAK,4BAA4B;AACjC,UAAI,SAAS,YAAY,SAAS,YAAY,SAAS,WAAW,SAAS;AACzE,aAAK,QAAQX,UAAS,MAAM,KAAK,KAAK;AACtC,aAAK,cAAc;AACnB,aAAK,cAAc;AAAA,MACrB;AACA,UAAI,iBAAiB;AACnB,aAAK,sBAAsB,KAAK,KAAK;AAAA,MACvC;AACA,WAAK,UAAU;AACf,WAAK,IAAI;AACT,WAAK,SAAS;AACd,WAAK,YAAY;AAAA,IACnB;AAAA,IACA,YAAY;AACV,UAAI,gBAAgB,KAAK,QAAQ;AACjC,UAAI,YAAY;AAChB,UAAI,KAAK,aAAa,GAAG;AACvB,qBAAa,KAAK;AAClB,mBAAW,KAAK;AAAA,MAClB,OAAO;AACL,qBAAa,KAAK;AAClB,mBAAW,KAAK;AAChB,wBAAgB,CAAC;AAAA,MACnB;AACA,WAAK,cAAc;AACnB,WAAK,YAAY;AACjB,WAAK,iBAAiB;AACtB,WAAK,UAAU,WAAW;AAC1B,WAAK,iBAAiB,KAAK,QAAQ;AAAA,IACrC;AAAA,IACA,cAAc;AACZ,MAAAiC,UAAS,KAAK,QAAQ,aAAa,CAAC,IAAI,CAAC;AAAA,IAC3C;AAAA,IACA,sBAAsB;AACpB,MAAAA,UAAS,KAAK,QAAQ,qBAAqB,CAAC,IAAI,CAAC;AAAA,IACnD;AAAA,IACA,gBAAgB;AACd,UAAI,KAAK,aAAa,GAAG;AACvB,aAAK,QAAQ,KAAK;AAClB,aAAK,OAAO;AACZ,aAAK,QAAQ,KAAK;AAAA,MACpB,OAAO;AACL,aAAK,SAAS,KAAK;AACnB,aAAK,MAAM;AACX,aAAK,SAAS,KAAK;AAAA,MACrB;AACA,WAAK,cAAc;AACnB,WAAK,aAAa;AAClB,WAAK,eAAe;AACpB,WAAK,gBAAgB;AAAA,IACvB;AAAA,IACA,qBAAqB;AACnB,MAAAA,UAAS,KAAK,QAAQ,oBAAoB,CAAC,IAAI,CAAC;AAAA,IAClD;AAAA,IACA,WAAWlJ,OAAM;AACf,WAAK,MAAM,cAAcA,OAAM,KAAK,WAAW,CAAC;AAChD,MAAAkJ,UAAS,KAAK,QAAQlJ,KAAI,GAAG,CAAC,IAAI,CAAC;AAAA,IACrC;AAAA,IACA,mBAAmB;AACjB,WAAK,WAAW,kBAAkB;AAAA,IACpC;AAAA,IACA,sBAAsB;AAAA,IAAC;AAAA,IACvB,kBAAkB;AAChB,WAAK,WAAW,iBAAiB;AAAA,IACnC;AAAA,IACA,mBAAmB;AACjB,WAAK,WAAW,kBAAkB;AAAA,IACpC;AAAA,IACA,aAAa;AACX,aAAO,CAAC;AAAA,IACV;AAAA,IACA,kBAAkB;AAChB,WAAK,WAAW,iBAAiB;AAAA,IACnC;AAAA,IACA,8BAA8B;AAC5B,MAAAkJ,UAAS,KAAK,QAAQ,6BAA6B,CAAC,IAAI,CAAC;AAAA,IAC3D;AAAA,IACA,mBAAmB,OAAO;AACxB,YAAM,WAAW,KAAK,QAAQ;AAC9B,UAAIjK,IAAG,MAAM;AACb,WAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAMA,MAAK;AAC9C,eAAO,MAAMA,EAAC;AACd,aAAK,QAAQiK,UAAS,SAAS,UAAU,CAAC,KAAK,OAAOjK,IAAG,KAAK,GAAG,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,IACA,6BAA6B;AAC3B,MAAAiK,UAAS,KAAK,QAAQ,4BAA4B,CAAC,IAAI,CAAC;AAAA,IAC1D;AAAA,IACA,+BAA+B;AAC7B,MAAAA,UAAS,KAAK,QAAQ,8BAA8B,CAAC,IAAI,CAAC;AAAA,IAC5D;AAAA,IACA,yBAAyB;AACvB,YAAM1I,WAAU,KAAK;AACrB,YAAM,WAAWA,SAAQ;AACzB,YAAM,WAAW,KAAK,MAAM;AAC5B,YAAM,cAAc,SAAS,eAAe;AAC5C,YAAM,cAAc,SAAS;AAC7B,UAAI,gBAAgB;AACpB,UAAI,WAAW,WAAW;AAC1B,UAAI,CAAC,KAAK,WAAW,KAAK,CAAC,SAAS,WAAW,eAAe,eAAe,YAAY,KAAK,CAAC,KAAK,aAAa,GAAG;AAClH,aAAK,gBAAgB;AACrB;AAAA,MACF;AACA,YAAM,aAAa,KAAK,eAAe;AACvC,YAAM,gBAAgB,WAAW,OAAO;AACxC,YAAM,iBAAiB,WAAW,QAAQ;AAC1C,YAAM,WAAW4I,aAAY,KAAK,MAAM,QAAQ,eAAe,GAAG,KAAK,QAAQ;AAC/E,kBAAY5I,SAAQ,SAAS,KAAK,WAAW,WAAW,YAAY,WAAW;AAC/E,UAAI,gBAAgB,IAAI,WAAW;AACjC,oBAAY,YAAY,YAAYA,SAAQ,SAAS,MAAM;AAC3D,oBAAY,KAAK,YAAYyH,mBAAkBzH,SAAQ,IAAI,IAC3D,SAAS,UAAU0H,gBAAe1H,SAAQ,OAAO,KAAK,MAAM,QAAQ,IAAI;AACxE,2BAAmB,KAAK,KAAK,gBAAgB,gBAAgB,iBAAiB,cAAc;AAC5F,wBAAgB6I,WAAU,KAAK;AAAA,UAC7B,KAAK,KAAKD,cAAa,WAAW,QAAQ,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC;AAAA,UACzE,KAAK,KAAKA,aAAY,YAAY,kBAAkB,IAAI,CAAC,CAAC,IAAI,KAAK,KAAKA,aAAY,iBAAiB,kBAAkB,IAAI,CAAC,CAAC;AAAA,QAC/H,CAAC;AACD,wBAAgB,KAAK,IAAI,aAAa,KAAK,IAAI,aAAa,aAAa,CAAC;AAAA,MAC5E;AACA,WAAK,gBAAgB;AAAA,IACvB;AAAA,IACA,8BAA8B;AAC5B,MAAAF,UAAS,KAAK,QAAQ,6BAA6B,CAAC,IAAI,CAAC;AAAA,IAC3D;AAAA,IACA,gBAAgB;AAAA,IAAC;AAAA,IACjB,YAAY;AACV,MAAAA,UAAS,KAAK,QAAQ,WAAW,CAAC,IAAI,CAAC;AAAA,IACzC;AAAA,IACA,MAAM;AACJ,YAAM,UAAU;AAAA,QACd,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AACA,YAAM,EAAC,OAAO,SAAS,EAAC,OAAO,UAAU,OAAO,WAAW,MAAM,SAAQ,EAAC,IAAI;AAC9E,YAAM,UAAU,KAAK,WAAW;AAChC,YAAM,eAAe,KAAK,aAAa;AACvC,UAAI,SAAS;AACX,cAAM,cAAchB,gBAAe,WAAW,MAAM,QAAQ,IAAI;AAChE,YAAI,cAAc;AAChB,kBAAQ,QAAQ,KAAK;AACrB,kBAAQ,SAASD,mBAAkB,QAAQ,IAAI;AAAA,QACjD,OAAO;AACL,kBAAQ,SAAS,KAAK;AACtB,kBAAQ,QAAQA,mBAAkB,QAAQ,IAAI;AAAA,QAChD;AACA,YAAI,SAAS,WAAW,KAAK,MAAM,QAAQ;AACzC,gBAAM,EAAC,OAAO,MAAM,QAAQ,QAAO,IAAI,KAAK,eAAe;AAC3D,gBAAM,cAAc,SAAS,UAAU;AACvC,gBAAM,eAAelC,WAAU,KAAK,aAAa;AACjD,gBAAM,MAAM,KAAK,IAAI,YAAY;AACjC,gBAAM,MAAM,KAAK,IAAI,YAAY;AACjC,cAAI,cAAc;AAChB,kBAAM,cAAc,SAAS,SAAS,IAAI,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAC7E,oBAAQ,SAAS,KAAK,IAAI,KAAK,WAAW,QAAQ,SAAS,cAAc,WAAW;AAAA,UACtF,OAAO;AACL,kBAAM,aAAa,SAAS,SAAS,IAAI,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAC5E,oBAAQ,QAAQ,KAAK,IAAI,KAAK,UAAU,QAAQ,QAAQ,aAAa,WAAW;AAAA,UAClF;AACA,eAAK,kBAAkB,OAAO,MAAM,KAAK,GAAG;AAAA,QAC9C;AAAA,MACF;AACA,WAAK,eAAe;AACpB,UAAI,cAAc;AAChB,aAAK,QAAQ,KAAK,UAAU,MAAM,QAAQ,KAAK,SAAS,OAAO,KAAK,SAAS;AAC7E,aAAK,SAAS,QAAQ;AAAA,MACxB,OAAO;AACL,aAAK,QAAQ,QAAQ;AACrB,aAAK,SAAS,KAAK,UAAU,MAAM,SAAS,KAAK,SAAS,MAAM,KAAK,SAAS;AAAA,MAChF;AAAA,IACF;AAAA,IACA,kBAAkB,OAAO,MAAM,KAAK,KAAK;AACvC,YAAM,EAAC,OAAO,EAAC,OAAO,QAAO,GAAG,UAAAyC,UAAQ,IAAI,KAAK;AACjD,YAAM,YAAY,KAAK,kBAAkB;AACzC,YAAM,mBAAmBA,cAAa,SAAS,KAAK,SAAS;AAC7D,UAAI,KAAK,aAAa,GAAG;AACvB,cAAM,aAAa,KAAK,gBAAgB,CAAC,IAAI,KAAK;AAClD,cAAM,cAAc,KAAK,QAAQ,KAAK,gBAAgB,KAAK,MAAM,SAAS,CAAC;AAC3E,YAAI,cAAc;AAClB,YAAI,eAAe;AACnB,YAAI,WAAW;AACb,cAAI,kBAAkB;AACpB,0BAAc,MAAM,MAAM;AAC1B,2BAAe,MAAM,KAAK;AAAA,UAC5B,OAAO;AACL,0BAAc,MAAM,MAAM;AAC1B,2BAAe,MAAM,KAAK;AAAA,UAC5B;AAAA,QACF,WAAW,UAAU,SAAS;AAC5B,yBAAe,KAAK;AAAA,QACtB,WAAW,UAAU,OAAO;AAC1B,wBAAc,MAAM;AAAA,QACtB,WAAW,UAAU,SAAS;AAC5B,wBAAc,MAAM,QAAQ;AAC5B,yBAAe,KAAK,QAAQ;AAAA,QAC9B;AACA,aAAK,cAAc,KAAK,KAAK,cAAc,aAAa,WAAW,KAAK,SAAS,KAAK,QAAQ,aAAa,CAAC;AAC5G,aAAK,eAAe,KAAK,KAAK,eAAe,cAAc,WAAW,KAAK,SAAS,KAAK,QAAQ,cAAc,CAAC;AAAA,MAClH,OAAO;AACL,YAAI,aAAa,KAAK,SAAS;AAC/B,YAAI,gBAAgB,MAAM,SAAS;AACnC,YAAI,UAAU,SAAS;AACrB,uBAAa;AACb,0BAAgB,MAAM;AAAA,QACxB,WAAW,UAAU,OAAO;AAC1B,uBAAa,KAAK;AAClB,0BAAgB;AAAA,QAClB;AACA,aAAK,aAAa,aAAa;AAC/B,aAAK,gBAAgB,gBAAgB;AAAA,MACvC;AAAA,IACF;AAAA,IACA,iBAAiB;AACf,UAAI,KAAK,UAAU;AACjB,aAAK,SAAS,OAAO,KAAK,IAAI,KAAK,aAAa,KAAK,SAAS,IAAI;AAClE,aAAK,SAAS,MAAM,KAAK,IAAI,KAAK,YAAY,KAAK,SAAS,GAAG;AAC/D,aAAK,SAAS,QAAQ,KAAK,IAAI,KAAK,cAAc,KAAK,SAAS,KAAK;AACrE,aAAK,SAAS,SAAS,KAAK,IAAI,KAAK,eAAe,KAAK,SAAS,MAAM;AAAA,MAC1E;AAAA,IACF;AAAA,IACA,WAAW;AACT,MAAAU,UAAS,KAAK,QAAQ,UAAU,CAAC,IAAI,CAAC;AAAA,IACxC;AAAA,IACA,eAAe;AACb,YAAM,EAAC,MAAM,UAAAV,UAAQ,IAAI,KAAK;AAC9B,aAAOA,cAAa,SAASA,cAAa,YAAY,SAAS;AAAA,IACjE;AAAA,IACA,aAAa;AACX,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,sBAAsB,OAAO;AAC3B,WAAK,4BAA4B;AACjC,WAAK,mBAAmB,KAAK;AAC7B,UAAIvJ,IAAG;AACP,WAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAMA,MAAK;AAC9C,YAAIkF,eAAc,MAAMlF,EAAC,EAAE,KAAK,GAAG;AACjC,gBAAM,OAAOA,IAAG,CAAC;AACjB;AACA,UAAAA;AAAA,QACF;AAAA,MACF;AACA,WAAK,2BAA2B;AAAA,IAClC;AAAA,IACA,iBAAiB;AACf,UAAI,aAAa,KAAK;AACtB,UAAI,CAAC,YAAY;AACf,cAAM,aAAa,KAAK,QAAQ,MAAM;AACtC,YAAI,QAAQ,KAAK;AACjB,YAAI,aAAa,MAAM,QAAQ;AAC7B,kBAAQ2I,QAAO,OAAO,UAAU;AAAA,QAClC;AACA,aAAK,cAAc,aAAa,KAAK,mBAAmB,OAAO,MAAM,MAAM;AAAA,MAC7E;AACA,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB,OAAOvC,SAAQ;AAChC,YAAM,EAAC,KAAK,mBAAmB,OAAM,IAAI;AACzC,YAAM,SAAS,CAAC;AAChB,YAAM,UAAU,CAAC;AACjB,UAAI,kBAAkB;AACtB,UAAI,mBAAmB;AACvB,UAAIpG,IAAGqK,IAAG,MAAM,OAAO,UAAU,YAAY9F,QAAO,YAAYsF,QAAOD,SAAQ;AAC/E,WAAK5J,KAAI,GAAGA,KAAIoG,SAAQ,EAAEpG,IAAG;AAC3B,gBAAQ,MAAMA,EAAC,EAAE;AACjB,mBAAW,KAAK,wBAAwBA,EAAC;AACzC,YAAI,OAAO,aAAa,SAAS;AACjC,QAAAuE,SAAQ,OAAO,UAAU,IAAI,OAAO,UAAU,KAAK,EAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAC;AACpE,qBAAa,SAAS;AACtB,QAAAsF,SAAQD,UAAS;AACjB,YAAI,CAAC1E,eAAc,KAAK,KAAK,CAAC5D,SAAQ,KAAK,GAAG;AAC5C,UAAAuI,SAAQS,cAAa,KAAK/F,OAAM,MAAMA,OAAM,IAAIsF,QAAO,KAAK;AAC5D,UAAAD,UAAS;AAAA,QACX,WAAWtI,SAAQ,KAAK,GAAG;AACzB,eAAK+I,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,0BAAc,MAAMA,EAAC;AACrB,gBAAI,CAACnF,eAAc,WAAW,KAAK,CAAC5D,SAAQ,WAAW,GAAG;AACxD,cAAAuI,SAAQS,cAAa,KAAK/F,OAAM,MAAMA,OAAM,IAAIsF,QAAO,WAAW;AAClE,cAAAD,WAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AACA,eAAO,KAAKC,MAAK;AACjB,gBAAQ,KAAKD,OAAM;AACnB,0BAAkB,KAAK,IAAIC,QAAO,eAAe;AACjD,2BAAmB,KAAK,IAAID,SAAQ,gBAAgB;AAAA,MACtD;AACA,MAAAd,gBAAe,QAAQ1C,OAAM;AAC7B,YAAM,SAAS,OAAO,QAAQ,eAAe;AAC7C,YAAM,UAAU,QAAQ,QAAQ,gBAAgB;AAChD,YAAM,UAAU,CAAC,SAAS,EAAC,OAAO,OAAO,GAAG,KAAK,GAAG,QAAQ,QAAQ,GAAG,KAAK,EAAC;AAC7E,aAAO;AAAA,QACL,OAAO,QAAQ,CAAC;AAAA,QAChB,MAAM,QAAQA,UAAS,CAAC;AAAA,QACxB,QAAQ,QAAQ,MAAM;AAAA,QACtB,SAAS,QAAQ,OAAO;AAAA,QACxB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB,OAAO;AACtB,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB,OAAOlD,QAAO;AAC7B,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB,OAAO;AAAA,IAAC;AAAA,IACzB,gBAAgBA,QAAO;AACrB,YAAM,QAAQ,KAAK;AACnB,UAAIA,SAAQ,KAAKA,SAAQ,MAAM,SAAS,GAAG;AACzC,eAAO;AAAA,MACT;AACA,aAAO,KAAK,iBAAiB,MAAMA,MAAK,EAAE,KAAK;AAAA,IACjD;AAAA,IACA,mBAAmB,SAAS;AAC1B,UAAI,KAAK,gBAAgB;AACvB,kBAAU,IAAI;AAAA,MAChB;AACA,YAAM,QAAQ,KAAK,cAAc,UAAU,KAAK;AAChD,aAAOqH,aAAY,KAAK,iBAAiBC,aAAY,KAAK,OAAO,OAAO,CAAC,IAAI,KAAK;AAAA,IACpF;AAAA,IACA,mBAAmB,OAAO;AACxB,YAAM,WAAW,QAAQ,KAAK,eAAe,KAAK;AAClD,aAAO,KAAK,iBAAiB,IAAI,UAAU;AAAA,IAC7C;AAAA,IACA,eAAe;AACb,aAAO,KAAK,iBAAiB,KAAK,aAAa,CAAC;AAAA,IAClD;AAAA,IACA,eAAe;AACb,YAAM,EAAC,KAAA5I,MAAK,KAAAC,KAAG,IAAI;AACnB,aAAOD,OAAM,KAAKC,OAAM,IAAIA,OAC1BD,OAAM,KAAKC,OAAM,IAAID,OACrB;AAAA,IACJ;AAAA,IACA,WAAWsB,QAAO;AAChB,YAAM,QAAQ,KAAK,SAAS,CAAC;AAC7B,UAAIA,UAAS,KAAKA,SAAQ,MAAM,QAAQ;AACtC,cAAM,OAAO,MAAMA,MAAK;AACxB,eAAO,KAAK,aACb,KAAK,WAAWmG,mBAAkB,KAAK,WAAW,GAAGnG,QAAO,IAAI;AAAA,MACjE;AACA,aAAO,KAAK,aACZ,KAAK,WAAWkG,oBAAmB,KAAK,MAAM,WAAW,GAAG,IAAI;AAAA,IAClE;AAAA,IACA,YAAY;AACV,YAAM,cAAc,KAAK,QAAQ;AACjC,YAAM,MAAMtC,WAAU,KAAK,aAAa;AACxC,YAAM,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;AAClC,YAAM,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;AAClC,YAAM,aAAa,KAAK,eAAe;AACvC,YAAM,UAAU,YAAY,mBAAmB;AAC/C,YAAM2D,KAAI,aAAa,WAAW,OAAO,QAAQ,UAAU;AAC3D,YAAMC,KAAI,aAAa,WAAW,QAAQ,SAAS,UAAU;AAC7D,aAAO,KAAK,aAAa,IACrBA,KAAI,MAAMD,KAAI,MAAMA,KAAI,MAAMC,KAAI,MAClCA,KAAI,MAAMD,KAAI,MAAMC,KAAI,MAAMD,KAAI;AAAA,IACxC;AAAA,IACA,aAAa;AACX,YAAM,UAAU,KAAK,QAAQ;AAC7B,UAAI,YAAY,QAAQ;AACtB,eAAO,CAAC,CAAC;AAAA,MACX;AACA,aAAO,KAAK,wBAAwB,EAAE,SAAS;AAAA,IACjD;AAAA,IACA,sBAAsB,WAAW;AAC/B,YAAM,OAAO,KAAK;AAClB,YAAM,QAAQ,KAAK;AACnB,YAAMlJ,WAAU,KAAK;AACrB,YAAM,EAAC,MAAM,UAAAgI,UAAQ,IAAIhI;AACzB,YAAM+G,UAAS,KAAK;AACpB,YAAM,eAAe,KAAK,aAAa;AACvC,YAAM,QAAQ,KAAK;AACnB,YAAM,cAAc,MAAM,UAAUA,UAAS,IAAI;AACjD,YAAM,KAAKU,mBAAkB,IAAI;AACjC,YAAM,QAAQ,CAAC;AACf,YAAM,aAAa,KAAK,WAAW,KAAK,WAAW,CAAC;AACpD,YAAM,YAAY,WAAW,aAAa,WAAW,cAAc;AACnE,YAAM,gBAAgB,YAAY;AAClC,YAAM,mBAAmB,SAAS,OAAO;AACvC,eAAOwB,aAAY,OAAO,OAAO,SAAS;AAAA,MAC5C;AACA,UAAI,aAAaxK,IAAG,WAAW;AAC/B,UAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI2K,KAAIC;AACpC,UAAIrB,cAAa,OAAO;AACtB,sBAAc,iBAAiB,KAAK,MAAM;AAC1C,cAAM,KAAK,SAAS;AACpB,cAAM,cAAc;AACpB,aAAK,iBAAiB,UAAU,GAAG,IAAI;AACvC,QAAAqB,MAAK,UAAU;AAAA,MACjB,WAAWrB,cAAa,UAAU;AAChC,sBAAc,iBAAiB,KAAK,GAAG;AACvC,aAAK,UAAU;AACf,QAAAqB,MAAK,iBAAiB,UAAU,MAAM,IAAI;AAC1C,cAAM,cAAc;AACpB,cAAM,KAAK,MAAM;AAAA,MACnB,WAAWrB,cAAa,QAAQ;AAC9B,sBAAc,iBAAiB,KAAK,KAAK;AACzC,cAAM,KAAK,QAAQ;AACnB,cAAM,cAAc;AACpB,aAAK,iBAAiB,UAAU,IAAI,IAAI;AACxC,QAAAoB,MAAK,UAAU;AAAA,MACjB,WAAWpB,cAAa,SAAS;AAC/B,sBAAc,iBAAiB,KAAK,IAAI;AACxC,aAAK,UAAU;AACf,QAAAoB,MAAK,iBAAiB,UAAU,KAAK,IAAI;AACzC,cAAM,cAAc;AACpB,cAAM,KAAK,OAAO;AAAA,MACpB,WAAW,SAAS,KAAK;AACvB,YAAIpB,cAAa,UAAU;AACzB,wBAAc,kBAAkB,UAAU,MAAM,UAAU,UAAU,IAAI,GAAG;AAAA,QAC7E,WAAWpI,UAASoI,SAAQ,GAAG;AAC7B,gBAAM,iBAAiB,OAAO,KAAKA,SAAQ,EAAE,CAAC;AAC9C,gBAAM,QAAQA,UAAS,cAAc;AACrC,wBAAc,iBAAiB,KAAK,MAAM,OAAO,cAAc,EAAE,iBAAiB,KAAK,CAAC;AAAA,QAC1F;AACA,aAAK,UAAU;AACf,QAAAqB,MAAK,UAAU;AACf,cAAM,cAAc;AACpB,cAAM,MAAM;AAAA,MACd,WAAW,SAAS,KAAK;AACvB,YAAIrB,cAAa,UAAU;AACzB,wBAAc,kBAAkB,UAAU,OAAO,UAAU,SAAS,CAAC;AAAA,QACvE,WAAWpI,UAASoI,SAAQ,GAAG;AAC7B,gBAAM,iBAAiB,OAAO,KAAKA,SAAQ,EAAE,CAAC;AAC9C,gBAAM,QAAQA,UAAS,cAAc;AACrC,wBAAc,iBAAiB,KAAK,MAAM,OAAO,cAAc,EAAE,iBAAiB,KAAK,CAAC;AAAA,QAC1F;AACA,cAAM,cAAc;AACpB,cAAM,MAAM;AACZ,aAAK,UAAU;AACf,QAAAoB,MAAK,UAAU;AAAA,MACjB;AACA,YAAM,QAAQ9G,gBAAetC,SAAQ,MAAM,eAAe,WAAW;AACrE,YAAM,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,cAAc,KAAK,CAAC;AACvD,WAAKvB,KAAI,GAAGA,KAAI,aAAaA,MAAK,MAAM;AACtC,cAAM,cAAc,KAAK,WAAW,KAAK,WAAWA,EAAC,CAAC;AACtD,cAAM,YAAY,YAAY;AAC9B,cAAM,YAAY,YAAY;AAC9B,cAAM,aAAa,YAAY,cAAc,CAAC;AAC9C,cAAM,mBAAmB,YAAY;AACrC,cAAM,YAAY,YAAY;AAC9B,cAAM,YAAY,YAAY;AAC9B,cAAM,iBAAiB,YAAY,kBAAkB,CAAC;AACtD,cAAM,uBAAuB,YAAY;AACzC,oBAAY4I,qBAAoB,MAAM5I,IAAGsI,OAAM;AAC/C,YAAI,cAAc,QAAW;AAC3B;AAAA,QACF;AACA,2BAAmBkC,aAAY,OAAO,WAAW,SAAS;AAC1D,YAAI,cAAc;AAChB,gBAAM,MAAM,KAAKG,MAAK;AAAA,QACxB,OAAO;AACL,gBAAM,MAAM,KAAKC,MAAK;AAAA,QACxB;AACA,cAAM,KAAK;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,IAAAD;AAAA,UACA,IAAAC;AAAA,UACA,OAAO;AAAA,UACP,OAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AACA,WAAK,eAAe;AACpB,WAAK,eAAe;AACpB,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB,WAAW;AAC5B,YAAM,OAAO,KAAK;AAClB,YAAMrJ,WAAU,KAAK;AACrB,YAAM,EAAC,UAAAgI,WAAU,OAAO,YAAW,IAAIhI;AACvC,YAAM,eAAe,KAAK,aAAa;AACvC,YAAM,QAAQ,KAAK;AACnB,YAAM,EAAC,OAAO,YAAY,SAAS,OAAM,IAAI;AAC7C,YAAM,KAAKyH,mBAAkBzH,SAAQ,IAAI;AACzC,YAAM,iBAAiB,KAAK;AAC5B,YAAM,kBAAkB,SAAS,CAAC,UAAU;AAC5C,YAAM,WAAW,CAACuF,WAAU,KAAK,aAAa;AAC9C,YAAM,QAAQ,CAAC;AACf,UAAI9G,IAAG,MAAM,MAAM,OAAO+B,IAAGC,IAAG,WAAW,OAAO,MAAM,YAAY,WAAW;AAC/E,UAAI,eAAe;AACnB,UAAIuH,cAAa,OAAO;AACtB,QAAAvH,KAAI,KAAK,SAAS;AAClB,oBAAY,KAAK,wBAAwB;AAAA,MAC3C,WAAWuH,cAAa,UAAU;AAChC,QAAAvH,KAAI,KAAK,MAAM;AACf,oBAAY,KAAK,wBAAwB;AAAA,MAC3C,WAAWuH,cAAa,QAAQ;AAC9B,cAAM,MAAM,KAAK,wBAAwB,EAAE;AAC3C,oBAAY,IAAI;AAChB,QAAAxH,KAAI,IAAI;AAAA,MACV,WAAWwH,cAAa,SAAS;AAC/B,cAAM,MAAM,KAAK,wBAAwB,EAAE;AAC3C,oBAAY,IAAI;AAChB,QAAAxH,KAAI,IAAI;AAAA,MACV,WAAW,SAAS,KAAK;AACvB,YAAIwH,cAAa,UAAU;AACzB,UAAAvH,MAAM,UAAU,MAAM,UAAU,UAAU,IAAK;AAAA,QACjD,WAAWb,UAASoI,SAAQ,GAAG;AAC7B,gBAAM,iBAAiB,OAAO,KAAKA,SAAQ,EAAE,CAAC;AAC9C,gBAAM,QAAQA,UAAS,cAAc;AACrC,UAAAvH,KAAI,KAAK,MAAM,OAAO,cAAc,EAAE,iBAAiB,KAAK,IAAI;AAAA,QAClE;AACA,oBAAY,KAAK,wBAAwB;AAAA,MAC3C,WAAW,SAAS,KAAK;AACvB,YAAIuH,cAAa,UAAU;AACzB,UAAAxH,MAAM,UAAU,OAAO,UAAU,SAAS,IAAK;AAAA,QACjD,WAAWZ,UAASoI,SAAQ,GAAG;AAC7B,gBAAM,iBAAiB,OAAO,KAAKA,SAAQ,EAAE,CAAC;AAC9C,gBAAM,QAAQA,UAAS,cAAc;AACrC,UAAAxH,KAAI,KAAK,MAAM,OAAO,cAAc,EAAE,iBAAiB,KAAK;AAAA,QAC9D;AACA,oBAAY,KAAK,wBAAwB,EAAE,EAAE;AAAA,MAC/C;AACA,UAAI,SAAS,KAAK;AAChB,YAAI,UAAU,SAAS;AACrB,yBAAe;AAAA,QACjB,WAAW,UAAU,OAAO;AAC1B,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,YAAM,aAAa,KAAK,eAAe;AACvC,WAAK/B,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,eAAO,MAAMA,EAAC;AACd,gBAAQ,KAAK;AACb,cAAM,cAAc,YAAY,WAAW,KAAK,WAAWA,EAAC,CAAC;AAC7D,gBAAQ,KAAK,gBAAgBA,EAAC,IAAI,YAAY;AAC9C,eAAO,KAAK,wBAAwBA,EAAC;AACrC,qBAAa,KAAK;AAClB,oBAAYsB,SAAQ,KAAK,IAAI,MAAM,SAAS;AAC5C,cAAM,YAAY,YAAY;AAC9B,cAAMf,SAAQ,YAAY;AAC1B,cAAM,cAAc,YAAY;AAChC,cAAM,cAAc,YAAY;AAChC,YAAI,gBAAgB;AACpB,YAAI,cAAc;AAChB,UAAAwB,KAAI;AACJ,cAAI,cAAc,SAAS;AACzB,gBAAI/B,OAAM,OAAO,GAAG;AAClB,8BAAgB,CAAC,KAAK,QAAQ,UAAU,UAAU;AAAA,YACpD,WAAWA,OAAM,GAAG;AAClB,8BAAgB,CAAC,KAAK,QAAQ,UAAU,SAAS;AAAA,YACnD,OAAO;AACL,8BAAgB;AAAA,YAClB;AAAA,UACF;AACA,cAAIuJ,cAAa,OAAO;AACtB,gBAAI,eAAe,UAAU,aAAa,GAAG;AAC3C,2BAAa,CAAC,YAAY,aAAa,aAAa;AAAA,YACtD,WAAW,eAAe,UAAU;AAClC,2BAAa,CAAC,WAAW,QAAQ,SAAS,IAAI,YAAY,aAAa;AAAA,YACzE,OAAO;AACL,2BAAa,CAAC,WAAW,QAAQ,SAAS,aAAa;AAAA,YACzD;AAAA,UACF,OAAO;AACL,gBAAI,eAAe,UAAU,aAAa,GAAG;AAC3C,2BAAa,aAAa;AAAA,YAC5B,WAAW,eAAe,UAAU;AAClC,2BAAa,WAAW,QAAQ,SAAS,IAAI,YAAY;AAAA,YAC3D,OAAO;AACL,2BAAa,WAAW,QAAQ,SAAS,YAAY;AAAA,YACvD;AAAA,UACF;AACA,cAAI,QAAQ;AACV,0BAAc;AAAA,UAChB;AAAA,QACF,OAAO;AACL,UAAAvH,KAAI;AACJ,wBAAc,IAAI,aAAa,aAAa;AAAA,QAC9C;AACA,YAAI;AACJ,YAAI,YAAY,mBAAmB;AACjC,gBAAM,eAAemH,WAAU,YAAY,eAAe;AAC1D,gBAAMS,UAAS,WAAW,QAAQ5J,EAAC;AACnC,gBAAM6J,SAAQ,WAAW,OAAO7J,EAAC;AACjC,cAAI2F,OAAM3D,KAAI,aAAa,aAAa;AACxC,cAAI0H,QAAO3H,KAAI,aAAa;AAC5B,kBAAQ,cAAc;AAAA,YACtB,KAAK;AACH,cAAA4D,QAAOiE,UAAS;AAChB;AAAA,YACF,KAAK;AACH,cAAAjE,QAAOiE;AACP;AAAA,UACF;AACA,kBAAQ,WAAW;AAAA,YACnB,KAAK;AACH,cAAAF,SAAQG,SAAQ;AAChB;AAAA,YACF,KAAK;AACH,cAAAH,SAAQG;AACR;AAAA,UACF;AACA,qBAAW;AAAA,YACT,MAAAH;AAAA,YACA,KAAA/D;AAAA,YACA,OAAOkE,SAAQ,aAAa;AAAA,YAC5B,QAAQD,UAAS,aAAa;AAAA,YAC9B,OAAO,YAAY;AAAA,UACrB;AAAA,QACF;AACA,cAAM,KAAK;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAArJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW;AAAA,UACX;AAAA,UACA,aAAa,CAACwB,IAAGC,EAAC;AAAA,UAClB;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,IACA,0BAA0B;AACxB,YAAM,EAAC,UAAAuH,WAAU,MAAK,IAAI,KAAK;AAC/B,YAAM,WAAW,CAACzC,WAAU,KAAK,aAAa;AAC9C,UAAI,UAAU;AACZ,eAAOyC,cAAa,QAAQ,SAAS;AAAA,MACvC;AACA,UAAI,QAAQ;AACZ,UAAI,MAAM,UAAU,SAAS;AAC3B,gBAAQ;AAAA,MACV,WAAW,MAAM,UAAU,OAAO;AAChC,gBAAQ;AAAA,MACV,WAAW,MAAM,UAAU,SAAS;AAClC,gBAAQ;AAAA,MACV;AACA,aAAO;AAAA,IACT;AAAA,IACA,wBAAwB,IAAI;AAC1B,YAAM,EAAC,UAAAA,WAAU,OAAO,EAAC,YAAY,QAAQ,QAAO,EAAC,IAAI,KAAK;AAC9D,YAAM,aAAa,KAAK,eAAe;AACvC,YAAM,iBAAiB,KAAK;AAC5B,YAAM,SAAS,WAAW,OAAO;AACjC,UAAI;AACJ,UAAIxH;AACJ,UAAIwH,cAAa,QAAQ;AACvB,YAAI,QAAQ;AACV,UAAAxH,KAAI,KAAK,QAAQ;AACjB,cAAI,eAAe,QAAQ;AACzB,wBAAY;AAAA,UACd,WAAW,eAAe,UAAU;AAClC,wBAAY;AACZ,YAAAA,MAAM,SAAS;AAAA,UACjB,OAAO;AACL,wBAAY;AACZ,YAAAA,MAAK;AAAA,UACP;AAAA,QACF,OAAO;AACL,UAAAA,KAAI,KAAK,QAAQ;AACjB,cAAI,eAAe,QAAQ;AACzB,wBAAY;AAAA,UACd,WAAW,eAAe,UAAU;AAClC,wBAAY;AACZ,YAAAA,MAAM,SAAS;AAAA,UACjB,OAAO;AACL,wBAAY;AACZ,YAAAA,KAAI,KAAK;AAAA,UACX;AAAA,QACF;AAAA,MACF,WAAWwH,cAAa,SAAS;AAC/B,YAAI,QAAQ;AACV,UAAAxH,KAAI,KAAK,OAAO;AAChB,cAAI,eAAe,QAAQ;AACzB,wBAAY;AAAA,UACd,WAAW,eAAe,UAAU;AAClC,wBAAY;AACZ,YAAAA,MAAM,SAAS;AAAA,UACjB,OAAO;AACL,wBAAY;AACZ,YAAAA,MAAK;AAAA,UACP;AAAA,QACF,OAAO;AACL,UAAAA,KAAI,KAAK,OAAO;AAChB,cAAI,eAAe,QAAQ;AACzB,wBAAY;AAAA,UACd,WAAW,eAAe,UAAU;AAClC,wBAAY;AACZ,YAAAA,MAAK,SAAS;AAAA,UAChB,OAAO;AACL,wBAAY;AACZ,YAAAA,KAAI,KAAK;AAAA,UACX;AAAA,QACF;AAAA,MACF,OAAO;AACL,oBAAY;AAAA,MACd;AACA,aAAO,EAAC,WAAW,GAAAA,GAAC;AAAA,IACtB;AAAA,IACA,oBAAoB;AAClB,UAAI,KAAK,QAAQ,MAAM,QAAQ;AAC7B;AAAA,MACF;AACA,YAAM,QAAQ,KAAK;AACnB,YAAMwH,YAAW,KAAK,QAAQ;AAC9B,UAAIA,cAAa,UAAUA,cAAa,SAAS;AAC/C,eAAO,EAAC,KAAK,GAAG,MAAM,KAAK,MAAM,QAAQ,MAAM,QAAQ,OAAO,KAAK,MAAK;AAAA,MAC1E;AAAE,UAAIA,cAAa,SAASA,cAAa,UAAU;AACjD,eAAO,EAAC,KAAK,KAAK,KAAK,MAAM,GAAG,QAAQ,KAAK,QAAQ,OAAO,MAAM,MAAK;AAAA,MACzE;AAAA,IACF;AAAA,IACA,iBAAiB;AACf,YAAM,EAAC,KAAK,SAAS,EAAC,gBAAe,GAAG,MAAAG,OAAM,KAAA/D,MAAK,OAAAkE,QAAO,QAAAD,QAAM,IAAI;AACpE,UAAI,iBAAiB;AACnB,YAAI,KAAK;AACT,YAAI,YAAY;AAChB,YAAI,SAASF,OAAM/D,MAAKkE,QAAOD,OAAM;AACrC,YAAI,QAAQ;AAAA,MACd;AAAA,IACF;AAAA,IACA,qBAAqB,OAAO;AAC1B,YAAM,OAAO,KAAK,QAAQ;AAC1B,UAAI,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,SAAS;AACvC,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,KAAK;AACnB,YAAM1G,SAAQ,MAAM,UAAU,CAAAhB,OAAKA,GAAE,UAAU,KAAK;AACpD,UAAIgB,UAAS,GAAG;AACd,cAAM,OAAO,KAAK,WAAW,KAAK,WAAWA,MAAK,CAAC;AACnD,eAAO,KAAK;AAAA,MACd;AACA,aAAO;AAAA,IACT;AAAA,IACA,SAAS,WAAW;AAClB,YAAM,OAAO,KAAK,QAAQ;AAC1B,YAAM,MAAM,KAAK;AACjB,YAAM,QAAQ,KAAK,mBAAmB,KAAK,iBAAiB,KAAK,sBAAsB,SAAS;AAChG,UAAIlD,IAAG;AACP,YAAM,WAAW,CAAC,IAAI6K,KAAI,UAAU;AAClC,YAAI,CAAC,MAAM,SAAS,CAAC,MAAM,OAAO;AAChC;AAAA,QACF;AACA,YAAI,KAAK;AACT,YAAI,YAAY,MAAM;AACtB,YAAI,cAAc,MAAM;AACxB,YAAI,YAAY,MAAM,cAAc,CAAC,CAAC;AACtC,YAAI,iBAAiB,MAAM;AAC3B,YAAI,UAAU;AACd,YAAI,OAAO,GAAG,GAAG,GAAG,CAAC;AACrB,YAAI,OAAOA,IAAG,GAAGA,IAAG,CAAC;AACrB,YAAI,OAAO;AACX,YAAI,QAAQ;AAAA,MACd;AACA,UAAI,KAAK,SAAS;AAChB,aAAK7K,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,gBAAM,OAAO,MAAMA,EAAC;AACpB,cAAI,KAAK,iBAAiB;AACxB;AAAA,cACE,EAAC,GAAG,KAAK,IAAI,GAAG,KAAK,GAAE;AAAA,cACvB,EAAC,GAAG,KAAK,IAAI,GAAG,KAAK,GAAE;AAAA,cACvB;AAAA,YACF;AAAA,UACF;AACA,cAAI,KAAK,WAAW;AAClB;AAAA,cACE,EAAC,GAAG,KAAK,KAAK,GAAG,KAAK,IAAG;AAAA,cACzB,EAAC,GAAG,KAAK,KAAK,GAAG,KAAK,IAAG;AAAA,cACzB;AAAA,gBACE,OAAO,KAAK;AAAA,gBACZ,OAAO,KAAK;AAAA,gBACZ,YAAY,KAAK;AAAA,gBACjB,kBAAkB,KAAK;AAAA,cACzB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AACX,YAAM,EAAC,OAAO,KAAK,SAAS,EAAC,KAAI,EAAC,IAAI;AACtC,YAAM,aAAa,KAAK,WAAW,KAAK,WAAW,CAAC;AACpD,YAAM,YAAY,KAAK,aAAa,WAAW,cAAc;AAC7D,UAAI,CAAC,WAAW;AACd;AAAA,MACF;AACA,YAAM,gBAAgB,KAAK,WAAW,KAAK,WAAW,CAAC,CAAC,EAAE;AAC1D,YAAM,cAAc,KAAK;AACzB,UAAI,IAAI2K,KAAI,IAAIC;AAChB,UAAI,KAAK,aAAa,GAAG;AACvB,aAAKJ,aAAY,OAAO,KAAK,MAAM,SAAS,IAAI,YAAY;AAC5D,QAAAG,MAAKH,aAAY,OAAO,KAAK,OAAO,aAAa,IAAI,gBAAgB;AACrE,aAAKI,MAAK;AAAA,MACZ,OAAO;AACL,aAAKJ,aAAY,OAAO,KAAK,KAAK,SAAS,IAAI,YAAY;AAC3D,QAAAI,MAAKJ,aAAY,OAAO,KAAK,QAAQ,aAAa,IAAI,gBAAgB;AACtE,aAAKG,MAAK;AAAA,MACZ;AACA,UAAI,KAAK;AACT,UAAI,YAAY,WAAW;AAC3B,UAAI,cAAc,WAAW;AAC7B,UAAI,UAAU;AACd,UAAI,OAAO,IAAI,EAAE;AACjB,UAAI,OAAOA,KAAIC,GAAE;AACjB,UAAI,OAAO;AACX,UAAI,QAAQ;AAAA,IACd;AAAA,IACA,WAAW,WAAW;AACpB,YAAM,cAAc,KAAK,QAAQ;AACjC,UAAI,CAAC,YAAY,SAAS;AACxB;AAAA,MACF;AACA,YAAM,MAAM,KAAK;AACjB,YAAM,OAAO,KAAK,kBAAkB;AACpC,UAAI,MAAM;AACR,QAAAE,UAAS,KAAK,IAAI;AAAA,MACpB;AACA,YAAM,QAAQ,KAAK,gBAAgB,KAAK,cAAc,KAAK,mBAAmB,SAAS;AACvF,UAAI9K,IAAG;AACP,WAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,cAAM,OAAO,MAAMA,EAAC;AACpB,cAAM,WAAW,KAAK;AACtB,cAAM,QAAQ,KAAK;AACnB,YAAI,KAAK,UAAU;AACjB,cAAI,YAAY,KAAK,SAAS;AAC9B,cAAI,SAAS,KAAK,SAAS,MAAM,KAAK,SAAS,KAAK,KAAK,SAAS,OAAO,KAAK,SAAS,MAAM;AAAA,QAC/F;AACA,YAAIgC,KAAI,KAAK;AACb,QAAA+I,YAAW,KAAK,OAAO,GAAG/I,IAAG,UAAU,IAAI;AAAA,MAC7C;AACA,UAAI,MAAM;AACR,QAAAgJ,YAAW,GAAG;AAAA,MAChB;AAAA,IACF;AAAA,IACA,YAAY;AACV,YAAM,EAAC,KAAK,SAAS,EAAC,UAAAzB,WAAU,OAAO,QAAO,EAAC,IAAI;AACnD,UAAI,CAAC,MAAM,SAAS;AAClB;AAAA,MACF;AACA,YAAM,OAAOL,QAAO,MAAM,IAAI;AAC9B,YAAM,UAAUC,WAAU,MAAM,OAAO;AACvC,YAAM,QAAQ,MAAM;AACpB,UAAIb,UAAS,KAAK,aAAa;AAC/B,UAAIiB,cAAa,YAAYA,cAAa,YAAYpI,UAASoI,SAAQ,GAAG;AACxE,QAAAjB,WAAU,QAAQ;AAClB,YAAIhH,SAAQ,MAAM,IAAI,GAAG;AACvB,UAAAgH,WAAU,KAAK,cAAc,MAAM,KAAK,SAAS;AAAA,QACnD;AAAA,MACF,OAAO;AACL,QAAAA,WAAU,QAAQ;AAAA,MACpB;AACA,YAAM,EAAC,QAAQ,QAAQ,UAAU,SAAQ,IAAImB,WAAU,MAAMnB,SAAQiB,WAAU,KAAK;AACpF,MAAAwB,YAAW,KAAK,MAAM,MAAM,GAAG,GAAG,MAAM;AAAA,QACtC,OAAO,MAAM;AAAA,QACb;AAAA,QACA;AAAA,QACA,WAAWzB,YAAW,OAAOC,WAAU,OAAO;AAAA,QAC9C,cAAc;AAAA,QACd,aAAa,CAAC,QAAQ,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,IACA,KAAK,WAAW;AACd,UAAI,CAAC,KAAK,WAAW,GAAG;AACtB;AAAA,MACF;AACA,WAAK,eAAe;AACpB,WAAK,SAAS,SAAS;AACvB,WAAK,WAAW;AAChB,WAAK,UAAU;AACf,WAAK,WAAW,SAAS;AAAA,IAC3B;AAAA,IACA,UAAU;AACR,YAAM,OAAO,KAAK;AAClB,YAAM,KAAK,KAAK,SAAS,KAAK,MAAM,KAAK;AACzC,YAAM,KAAK1F,gBAAe,KAAK,QAAQ,KAAK,KAAK,GAAG,EAAE;AACtD,UAAI,CAAC,KAAK,WAAW,KAAK,KAAK,SAASkG,OAAM,UAAU,MAAM;AAC5D,eAAO,CAAC;AAAA,UACN,GAAG;AAAA,UACH,MAAM,CAAC,cAAc;AACnB,iBAAK,KAAK,SAAS;AAAA,UACrB;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO,CAAC;AAAA,QACN,GAAG;AAAA,QACH,MAAM,CAAC,cAAc;AACnB,eAAK,eAAe;AACpB,eAAK,SAAS,SAAS;AACvB,eAAK,UAAU;AAAA,QACjB;AAAA,MACF,GAAG;AAAA,QACD,GAAG,KAAK;AAAA,QACR,MAAM,MAAM;AACV,eAAK,WAAW;AAAA,QAClB;AAAA,MACF,GAAG;AAAA,QACD,GAAG;AAAA,QACH,MAAM,CAAC,cAAc;AACnB,eAAK,WAAW,SAAS;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,wBAAwB,MAAM;AAC5B,YAAM,QAAQ,KAAK,MAAM,6BAA6B;AACtD,YAAM,SAAS,KAAK,OAAO;AAC3B,YAAM,SAAS,CAAC;AAChB,UAAI/J,IAAG;AACP,WAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,cAAM,OAAO,MAAMA,EAAC;AACpB,YAAI,KAAK,MAAM,MAAM,KAAK,OAAO,CAAC,QAAQ,KAAK,SAAS,OAAO;AAC7D,iBAAO,KAAK,IAAI;AAAA,QAClB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,wBAAwBkD,QAAO;AAC7B,YAAM,OAAO,KAAK,QAAQ,MAAM,WAAW,KAAK,WAAWA,MAAK,CAAC;AACjE,aAAOgG,QAAO,KAAK,IAAI;AAAA,IACzB;AAAA,IACA,aAAa;AACX,YAAM,WAAW,KAAK,wBAAwB,CAAC,EAAE;AACjD,cAAQ,KAAK,aAAa,IAAI,KAAK,QAAQ,KAAK,UAAU;AAAA,IAC5D;AAAA,EACF;AAEA,MAAM+B,iBAAN,MAAoB;AAAA,IAClB,YAAY,MAAM,OAAO,UAAU;AACjC,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,WAAW;AAChB,WAAK,QAAQ,uBAAO,OAAO,IAAI;AAAA,IACjC;AAAA,IACA,UAAU,MAAM;AACd,aAAO,OAAO,UAAU,cAAc,KAAK,KAAK,KAAK,WAAW,KAAK,SAAS;AAAA,IAChF;AAAA,IACA,SAAS,MAAM;AACb,YAAM,QAAQ,OAAO,eAAe,IAAI;AACxC,UAAI;AACJ,UAAIC,mBAAkB,KAAK,GAAG;AAC5B,sBAAc,KAAK,SAAS,KAAK;AAAA,MACnC;AACA,YAAM,QAAQ,KAAK;AACnB,YAAMC,MAAK,KAAK;AAChB,YAAM,QAAQ,KAAK,QAAQ,MAAMA;AACjC,UAAI,CAACA,KAAI;AACP,cAAM,IAAI,MAAM,6BAA6B,IAAI;AAAA,MACnD;AACA,UAAIA,OAAM,OAAO;AACf,eAAO;AAAA,MACT;AACA,YAAMA,GAAE,IAAI;AACZ,MAAAC,kBAAiB,MAAM,OAAO,WAAW;AACzC,UAAI,KAAK,UAAU;AACjB,QAAAtK,UAAS,SAAS,KAAK,IAAI,KAAK,SAAS;AAAA,MAC3C;AACA,aAAO;AAAA,IACT;AAAA,IACA,IAAIqK,KAAI;AACN,aAAO,KAAK,MAAMA,GAAE;AAAA,IACtB;AAAA,IACA,WAAW,MAAM;AACf,YAAM,QAAQ,KAAK;AACnB,YAAMA,MAAK,KAAK;AAChB,YAAM,QAAQ,KAAK;AACnB,UAAIA,OAAM,OAAO;AACf,eAAO,MAAMA,GAAE;AAAA,MACjB;AACA,UAAI,SAASA,OAAMrK,UAAS,KAAK,GAAG;AAClC,eAAOA,UAAS,KAAK,EAAEqK,GAAE;AACzB,YAAI,KAAK,UAAU;AACjB,iBAAOE,WAAUF,GAAE;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAASC,kBAAiB,MAAM,OAAO,aAAa;AAClD,UAAM,eAAeE,OAAM,uBAAO,OAAO,IAAI,GAAG;AAAA,MAC9C,cAAcxK,UAAS,IAAI,WAAW,IAAI,CAAC;AAAA,MAC3CA,UAAS,IAAI,KAAK;AAAA,MAClB,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,UAAS,IAAI,OAAO,YAAY;AAChC,QAAI,KAAK,eAAe;AACtB,MAAAyK,eAAc,OAAO,KAAK,aAAa;AAAA,IACzC;AACA,QAAI,KAAK,aAAa;AACpB,MAAAzK,UAAS,SAAS,OAAO,KAAK,WAAW;AAAA,IAC3C;AAAA,EACF;AACA,WAASyK,eAAc,OAAO,QAAQ;AACpC,WAAO,KAAK,MAAM,EAAE,QAAQ,cAAY;AACtC,YAAM,gBAAgB,SAAS,MAAM,GAAG;AACxC,YAAM,aAAa,cAAc,IAAI;AACrC,YAAM,cAAc,CAAC,KAAK,EAAE,OAAO,aAAa,EAAE,KAAK,GAAG;AAC1D,YAAM,QAAQ,OAAO,QAAQ,EAAE,MAAM,GAAG;AACxC,YAAM,aAAa,MAAM,IAAI;AAC7B,YAAM,cAAc,MAAM,KAAK,GAAG;AAClC,MAAAzK,UAAS,MAAM,aAAa,YAAY,aAAa,UAAU;AAAA,IACjE,CAAC;AAAA,EACH;AACA,WAASoK,mBAAkB,OAAO;AAChC,WAAO,QAAQ,SAAS,cAAc;AAAA,EACxC;AAEA,MAAMM,YAAN,MAAe;AAAA,IACb,cAAc;AACZ,WAAK,cAAc,IAAIP,eAAcrH,oBAAmB,YAAY,IAAI;AACxE,WAAK,WAAW,IAAIqH,eAActD,UAAS,UAAU;AACrD,WAAK,UAAU,IAAIsD,eAAc,QAAQ,SAAS;AAClD,WAAK,SAAS,IAAIA,eAAclB,QAAO,QAAQ;AAC/C,WAAK,mBAAmB,CAAC,KAAK,aAAa,KAAK,QAAQ,KAAK,QAAQ;AAAA,IACvE;AAAA,IACA,OAAO,MAAM;AACX,WAAK,MAAM,YAAY,IAAI;AAAA,IAC7B;AAAA,IACA,UAAU,MAAM;AACd,WAAK,MAAM,cAAc,IAAI;AAAA,IAC/B;AAAA,IACA,kBAAkB,MAAM;AACtB,WAAK,MAAM,YAAY,MAAM,KAAK,WAAW;AAAA,IAC/C;AAAA,IACA,eAAe,MAAM;AACnB,WAAK,MAAM,YAAY,MAAM,KAAK,QAAQ;AAAA,IAC5C;AAAA,IACA,cAAc,MAAM;AAClB,WAAK,MAAM,YAAY,MAAM,KAAK,OAAO;AAAA,IAC3C;AAAA,IACA,aAAa,MAAM;AACjB,WAAK,MAAM,YAAY,MAAM,KAAK,MAAM;AAAA,IAC1C;AAAA,IACA,cAAcoB,KAAI;AAChB,aAAO,KAAK,KAAKA,KAAI,KAAK,aAAa,YAAY;AAAA,IACrD;AAAA,IACA,WAAWA,KAAI;AACb,aAAO,KAAK,KAAKA,KAAI,KAAK,UAAU,SAAS;AAAA,IAC/C;AAAA,IACA,UAAUA,KAAI;AACZ,aAAO,KAAK,KAAKA,KAAI,KAAK,SAAS,QAAQ;AAAA,IAC7C;AAAA,IACA,SAASA,KAAI;AACX,aAAO,KAAK,KAAKA,KAAI,KAAK,QAAQ,OAAO;AAAA,IAC3C;AAAA,IACA,qBAAqB,MAAM;AACzB,WAAK,MAAM,cAAc,MAAM,KAAK,WAAW;AAAA,IACjD;AAAA,IACA,kBAAkB,MAAM;AACtB,WAAK,MAAM,cAAc,MAAM,KAAK,QAAQ;AAAA,IAC9C;AAAA,IACA,iBAAiB,MAAM;AACrB,WAAK,MAAM,cAAc,MAAM,KAAK,OAAO;AAAA,IAC7C;AAAA,IACA,gBAAgB,MAAM;AACpB,WAAK,MAAM,cAAc,MAAM,KAAK,MAAM;AAAA,IAC5C;AAAA,IACA,MAAM,QAAQ,MAAM,eAAe;AACjC,OAAC,GAAG,IAAI,EAAE,QAAQ,SAAO;AACvB,cAAM,MAAM,iBAAiB,KAAK,oBAAoB,GAAG;AACzD,YAAI,iBAAiB,IAAI,UAAU,GAAG,KAAM,QAAQ,KAAK,WAAW,IAAI,IAAK;AAC3E,eAAK,MAAM,QAAQ,KAAK,GAAG;AAAA,QAC7B,OAAO;AACL,UAAApC,MAAK,KAAK,UAAQ;AAChB,kBAAM,UAAU,iBAAiB,KAAK,oBAAoB,IAAI;AAC9D,iBAAK,MAAM,QAAQ,SAAS,IAAI;AAAA,UAClC,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,QAAQ0C,WAAU,WAAW;AACjC,YAAM,cAAcC,aAAY,MAAM;AACtC,MAAAzB,UAAS,UAAU,WAAW,WAAW,GAAG,CAAC,GAAG,SAAS;AACzD,MAAAwB,UAAS,MAAM,EAAE,SAAS;AAC1B,MAAAxB,UAAS,UAAU,UAAU,WAAW,GAAG,CAAC,GAAG,SAAS;AAAA,IAC1D;AAAA,IACA,oBAAoB,MAAM;AACxB,eAASjK,KAAI,GAAGA,KAAI,KAAK,iBAAiB,QAAQA,MAAK;AACrD,cAAM,MAAM,KAAK,iBAAiBA,EAAC;AACnC,YAAI,IAAI,UAAU,IAAI,GAAG;AACvB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO,KAAK;AAAA,IACd;AAAA,IACA,KAAKmL,KAAI,eAAe,MAAM;AAC5B,YAAM,OAAO,cAAc,IAAIA,GAAE;AACjC,UAAI,SAAS,QAAW;AACtB,cAAM,IAAI,MAAM,MAAMA,MAAK,2BAA2B,OAAO,GAAG;AAAA,MAClE;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAIM,YAAW,IAAID,UAAS;AAE5B,MAAMG,qBAAN,cAAgC/H,mBAAkB;AAAA,IAChD,OAAO,MAAM;AACX,YAAM,OAAO,KAAK;AAClB,YAAM,EAAC,MAAM,SAAS,CAAC,EAAC,IAAI;AAC5B,YAAM,qBAAqB,KAAK,MAAM;AACtC,UAAI,EAAC,OAAAI,QAAO,MAAK,IAAIoD,kCAAiC,MAAM,QAAQ,kBAAkB;AACtF,WAAK,aAAapD;AAClB,WAAK,aAAa;AAClB,UAAIqD,qBAAoB,IAAI,GAAG;AAC7B,QAAArD,SAAQ;AACR,gBAAQ,OAAO;AAAA,MACjB;AACA,UAAI,KAAK,QAAQ,UAAU;AACzB,cAAM,EAAC,SAAS,MAAM,SAAQ,IAAI;AAClC,aAAK,SAAS,KAAK;AACnB,aAAK,gBAAgB,KAAK;AAC1B,aAAK,aAAa,CAAC,CAAC,SAAS;AAC7B,aAAK,SAAS;AACd,cAAMzC,WAAU,KAAK,6BAA6B,IAAI;AACtD,QAAAA,SAAQ,UAAU,KAAK,QAAQ;AAC/B,aAAK,cAAc,MAAM,QAAW;AAAA,UAClC,UAAU,CAAC;AAAA,UACX,SAAAA;AAAA,QACF,GAAG,IAAI;AAAA,MACT;AACA,WAAK,eAAe,QAAQyC,QAAO,OAAO,IAAI;AAAA,IAChD;AAAA,IACA,cAAc;AACZ,YAAM,EAAC,SAAQ,IAAI,KAAK;AACxB,UAAI,CAAC,KAAK,sBAAsB,UAAU;AACxC,aAAK,qBAAqByH,UAAS,WAAW,MAAM;AAAA,MACtD;AACA,YAAM,YAAY;AAAA,IACpB;AAAA,IACA,eAAe,QAAQzH,QAAO,OAAO,MAAM;AACzC,YAAM,QAAQ,SAAS;AACvB,YAAM,EAAC,QAAQ,QAAQ,UAAU,SAAQ,IAAI,KAAK;AAClD,YAAM,YAAY,KAAK,0BAA0BA,QAAO,IAAI;AAC5D,YAAM,gBAAgB,KAAK,iBAAiB,SAAS;AACrD,YAAM,iBAAiB,KAAK,eAAe,MAAM,aAAa;AAC9D,YAAM,QAAQ,OAAO;AACrB,YAAM,QAAQ,OAAO;AACrB,YAAM,EAAC,UAAU,QAAO,IAAI,KAAK;AACjC,YAAM,eAAesD,UAAS,QAAQ,IAAI,WAAW,OAAO;AAC5D,YAAM,eAAe,KAAK,MAAM,uBAAuB,SAAS,SAAS;AACzE,UAAI,aAAatD,SAAQ,KAAK,KAAK,UAAUA,SAAQ,CAAC;AACtD,eAAShE,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAO,EAAEhE,IAAG;AAC1C,cAAMuG,SAAQ,OAAOvG,EAAC;AACtB,cAAM,SAAS,KAAK,UAAUA,EAAC;AAC/B,cAAM,aAAa,eAAeuG,SAAQ,CAAC;AAC3C,cAAM,WAAWrB,eAAc,OAAO,KAAK,CAAC;AAC5C,cAAM,SAAS,WAAW,KAAK,IAAI,OAAO,iBAAiB,OAAO,KAAK,GAAGlF,EAAC;AAC3E,cAAM,SAAS,WAAW,KAAK,IAAI,SAAS,WAAW,OAAO,aAAa,IAAI,OAAO,iBAAiB,WAAW,KAAK,WAAW,QAAQ,QAAQ,QAAQ,IAAI,OAAO,KAAK,GAAGA,EAAC;AAC9K,mBAAW,OAAO,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK;AACpD,mBAAW,OAAOA,KAAI,KAAM,KAAK,IAAI,OAAO,KAAK,IAAI,WAAW,KAAK,CAAC,IAAK;AAC3E,YAAI,SAAS;AACX,qBAAW,SAAS;AACpB,qBAAW,MAAM,SAAS,KAAKA,EAAC;AAAA,QAClC;AACA,YAAI,gBAAgB;AAClB,qBAAW,UAAU,iBAAiB,KAAK,0BAA0BA,IAAGuG,OAAM,SAAS,WAAW,IAAI;AAAA,QACxG;AACA,YAAI,CAAC,cAAc;AACjB,eAAK,cAAcA,QAAOvG,IAAG,YAAY,IAAI;AAAA,QAC/C;AACA,qBAAa;AAAA,MACf;AACA,WAAK,oBAAoB,eAAe,MAAM,SAAS;AAAA,IACzD;AAAA,IACA,iBAAiB;AACf,YAAM,OAAO,KAAK;AAClB,YAAM2C,QAAO,KAAK,QAAQ,CAAC;AAC3B,UAAI,CAAC,KAAK,QAAQ,UAAU;AAC1B,YAAId,OAAM;AACV,iBAAS7B,KAAI2C,MAAK,SAAS,GAAG3C,MAAK,GAAG,EAAEA,IAAG;AACzC,UAAA6B,OAAM,KAAK,IAAIA,MAAKc,MAAK3C,EAAC,EAAE,KAAK,KAAK,0BAA0BA,EAAC,CAAC,IAAI,CAAC;AAAA,QACzE;AACA,eAAO6B,OAAM,KAAKA;AAAA,MACpB;AACA,YAAM,UAAU,KAAK;AACrB,YAAM,SAAS,QAAQ,WAAW,QAAQ,QAAQ,eAAe;AACjE,UAAI,CAACc,MAAK,QAAQ;AAChB,eAAO;AAAA,MACT;AACA,YAAM,aAAaA,MAAK,CAAC,EAAE,KAAK,KAAK,0BAA0B,CAAC,CAAC;AACjE,YAAM,YAAYA,MAAKA,MAAK,SAAS,CAAC,EAAE,KAAK,KAAK,0BAA0BA,MAAK,SAAS,CAAC,CAAC;AAC5F,aAAO,KAAK,IAAI,QAAQ,YAAY,SAAS,IAAI;AAAA,IACnD;AAAA,EACF;AACA,EAAAgJ,mBAAkB,KAAK;AACvB,EAAAA,mBAAkB,WAAW;AAAA,IAC3B,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AACA,EAAAA,mBAAkB,YAAY;AAAA,IAC5B,aAAa;AAAA,MACX,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,QACP,WAAW;AAAA,UACT,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,UACA,MAAM,MAAM;AACV,mBAAO,MAAM,KAAK,QAAQ,OAAO,KAAK,iBAAiB;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,GAAG;AAAA,QACD,MAAM;AAAA,MACR;AAAA,MACA,GAAG;AAAA,QACD,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAIC,eAA2B,uBAAO,OAAO;AAAA,IAC7C,WAAW;AAAA,IACX,eAAezF;AAAA,IACf,kBAAkBG;AAAA,IAClB,oBAAoBO;AAAA,IACpB,gBAAgBM;AAAA,IAChB,qBAAqBI;AAAA,IACrB,eAAeE;AAAA,IACf,iBAAiBC;AAAA,IACjB,mBAAmBiE;AAAA,EACnB,CAAC;AAED,WAASE,YAAW;AAClB,UAAM,IAAI,MAAM,iFAAiF;AAAA,EACnG;AACA,MAAM,cAAN,MAAkB;AAAA,IAChB,YAAYtK,UAAS;AACnB,WAAK,UAAUA,YAAW,CAAC;AAAA,IAC7B;AAAA,IACA,KAAK,cAAc;AAAA,IAAC;AAAA,IACpB,UAAU;AACR,aAAOsK,UAAS;AAAA,IAClB;AAAA,IACA,MAAM,OAAOC,SAAQ;AACnB,aAAOD,UAAS;AAAA,IAClB;AAAA,IACA,OAAO,WAAWC,SAAQ;AACxB,aAAOD,UAAS;AAAA,IAClB;AAAA,IACA,IAAI,WAAW,QAAQ,MAAM;AAC3B,aAAOA,UAAS;AAAA,IAClB;AAAA,IACA,KAAK/G,IAAG1C,IAAG,MAAM;AACf,aAAOyJ,UAAS;AAAA,IAClB;AAAA,IACA,QAAQ,WAAW,MAAM,SAAS;AAChC,aAAOA,UAAS;AAAA,IAClB;AAAA,IACA,MAAM,WAAW,MAAM;AACrB,aAAOA,UAAS;AAAA,IAClB;AAAA,EACF;AACA,cAAY,WAAW,SAAS,SAAS;AACvC,WAAO,OAAO,YAAY,WAAW,OAAO;AAAA,EAC9C;AACA,MAAIE,YAAW;AAAA,IACb,OAAO;AAAA,EACT;AAEA,WAASC,cAAa,SAAS,MAAM,OAAO,WAAW;AACrD,UAAM,EAAC,YAAY,MAAArJ,OAAM,QAAO,IAAI;AACpC,UAAM,SAAS,WAAW,YAAY;AACtC,QAAI,UAAU,SAAS,OAAO,QAAQ,SAAS,OAAO,WAAWA,MAAK,QAAQ;AAC5E,YAAM,eAAe,OAAO,iBAAiBsJ,iBAAgBC;AAC7D,UAAI,CAAC,WAAW;AACd,eAAO,aAAavJ,OAAM,MAAM,KAAK;AAAA,MACvC,WAAW,WAAW,gBAAgB;AACpC,cAAM,KAAKA,MAAK,CAAC;AACjB,cAAMwB,SAAQ,OAAO,GAAG,aAAa,cAAc,GAAG,SAAS,IAAI;AACnE,YAAIA,QAAO;AACT,gBAAMH,SAAQ,aAAarB,OAAM,MAAM,QAAQwB,MAAK;AACpD,gBAAMO,OAAM,aAAa/B,OAAM,MAAM,QAAQwB,MAAK;AAClD,iBAAO,EAAC,IAAIH,OAAM,IAAI,IAAIU,KAAI,GAAE;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AACA,WAAO,EAAC,IAAI,GAAG,IAAI/B,MAAK,SAAS,EAAC;AAAA,EACpC;AACA,WAASwJ,0BAAyB,OAAO,MAAM5C,WAAU,SAAS,WAAW;AAC3E,UAAM,WAAW,MAAM,6BAA6B;AACpD,UAAM,QAAQA,UAAS,IAAI;AAC3B,aAASvJ,KAAI,GAAG,OAAO,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACrD,YAAM,EAAC,OAAAkD,QAAO,MAAAP,MAAI,IAAI,SAAS3C,EAAC;AAChC,YAAM,EAAC,IAAI,GAAE,IAAIgM,cAAa,SAAShM,EAAC,GAAG,MAAM,OAAO,SAAS;AACjE,eAASqK,KAAI,IAAIA,MAAK,IAAI,EAAEA,IAAG;AAC7B,cAAM,UAAU1H,MAAK0H,EAAC;AACtB,YAAI,CAAC,QAAQ,MAAM;AACjB,kBAAQ,SAASnH,QAAOmH,EAAC;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS+B,0BAAyB,MAAM;AACtC,UAAM,OAAO,KAAK,QAAQ,GAAG,MAAM;AACnC,UAAM,OAAO,KAAK,QAAQ,GAAG,MAAM;AACnC,WAAO,SAAS,KAAK,KAAK;AACxB,YAAM,SAAS,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI;AAChD,YAAM,SAAS,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI;AAChD,aAAO,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC;AAAA,IAC5D;AAAA,EACF;AACA,WAASC,mBAAkB,OAAO9C,WAAU,MAAM,kBAAkB,kBAAkB;AACpF,UAAM,QAAQ,CAAC;AACf,QAAI,CAAC,oBAAoB,CAAC,MAAM,cAAcA,SAAQ,GAAG;AACvD,aAAO;AAAA,IACT;AACA,UAAM,iBAAiB,SAAS,SAAS,cAAcrG,QAAO;AAC5D,UAAI,CAAC,oBAAoB,CAACoJ,gBAAe,SAAS,MAAM,WAAW,CAAC,GAAG;AACrE;AAAA,MACF;AACA,UAAI,QAAQ,QAAQ/C,UAAS,GAAGA,UAAS,GAAG,gBAAgB,GAAG;AAC7D,cAAM,KAAK,EAAC,SAAS,cAAc,OAAArG,OAAK,CAAC;AAAA,MAC3C;AAAA,IACF;AACA,IAAAiJ,0BAAyB,OAAO,MAAM5C,WAAU,gBAAgB,IAAI;AACpE,WAAO;AAAA,EACT;AACA,WAASgD,uBAAsB,OAAOhD,WAAU,MAAM,kBAAkB;AACtE,QAAI,QAAQ,CAAC;AACb,aAAS,eAAe,SAAS,cAAcrG,QAAO;AACpD,YAAM,EAAC,YAAY,SAAQ,IAAI,QAAQ,SAAS,CAAC,cAAc,UAAU,GAAG,gBAAgB;AAC5F,YAAM,EAAC,MAAK,IAAIsJ,mBAAkB,SAAS,EAAC,GAAGjD,UAAS,GAAG,GAAGA,UAAS,EAAC,CAAC;AACzE,UAAI7C,eAAc,OAAO,YAAY,QAAQ,GAAG;AAC9C,cAAM,KAAK,EAAC,SAAS,cAAc,OAAAxD,OAAK,CAAC;AAAA,MAC3C;AAAA,IACF;AACA,IAAAiJ,0BAAyB,OAAO,MAAM5C,WAAU,cAAc;AAC9D,WAAO;AAAA,EACT;AACA,WAASkD,0BAAyB,OAAOlD,WAAU,MAAM,WAAW,kBAAkB,kBAAkB;AACtG,QAAI,QAAQ,CAAC;AACb,UAAM,iBAAiB6C,0BAAyB,IAAI;AACpD,QAAI,cAAc,OAAO;AACzB,aAAS,eAAe,SAAS,cAAclJ,QAAO;AACpD,YAAMwJ,WAAU,QAAQ,QAAQnD,UAAS,GAAGA,UAAS,GAAG,gBAAgB;AACxE,UAAI,aAAa,CAACmD,UAAS;AACzB;AAAA,MACF;AACA,YAAMrG,UAAS,QAAQ,eAAe,gBAAgB;AACtD,YAAM,cAAc,CAAC,CAAC,oBAAoB,MAAM,cAAcA,OAAM;AACpE,UAAI,CAAC,eAAe,CAACqG,UAAS;AAC5B;AAAA,MACF;AACA,YAAM,WAAW,eAAenD,WAAUlD,OAAM;AAChD,UAAI,WAAW,aAAa;AAC1B,gBAAQ,CAAC,EAAC,SAAS,cAAc,OAAAnD,OAAK,CAAC;AACvC,sBAAc;AAAA,MAChB,WAAW,aAAa,aAAa;AACnC,cAAM,KAAK,EAAC,SAAS,cAAc,OAAAA,OAAK,CAAC;AAAA,MAC3C;AAAA,IACF;AACA,IAAAiJ,0BAAyB,OAAO,MAAM5C,WAAU,cAAc;AAC9D,WAAO;AAAA,EACT;AACA,WAASoD,iBAAgB,OAAOpD,WAAU,MAAM,WAAW,kBAAkB,kBAAkB;AAC7F,QAAI,CAAC,oBAAoB,CAAC,MAAM,cAAcA,SAAQ,GAAG;AACvD,aAAO,CAAC;AAAA,IACV;AACA,WAAO,SAAS,OAAO,CAAC,YACpBgD,uBAAsB,OAAOhD,WAAU,MAAM,gBAAgB,IAC7DkD,0BAAyB,OAAOlD,WAAU,MAAM,WAAW,kBAAkB,gBAAgB;AAAA,EACnG;AACA,WAASqD,cAAa,OAAOrD,WAAU,MAAM,WAAW,kBAAkB;AACxE,UAAM,QAAQ,CAAC;AACf,UAAM,cAAc,SAAS,MAAM,aAAa;AAChD,QAAI,iBAAiB;AACrB,IAAA4C,0BAAyB,OAAO,MAAM5C,WAAU,CAAC,SAAS,cAAcrG,WAAU;AAChF,UAAI,QAAQ,WAAW,EAAEqG,UAAS,IAAI,GAAG,gBAAgB,GAAG;AAC1D,cAAM,KAAK,EAAC,SAAS,cAAc,OAAArG,OAAK,CAAC;AACzC,yBAAiB,kBAAkB,QAAQ,QAAQqG,UAAS,GAAGA,UAAS,GAAG,gBAAgB;AAAA,MAC7F;AAAA,IACF,CAAC;AACD,QAAI,aAAa,CAAC,gBAAgB;AAChC,aAAO,CAAC;AAAA,IACV;AACA,WAAO;AAAA,EACT;AACA,MAAIsD,eAAc;AAAA,IAChB,0BAAAV;AAAA,IACA,OAAO;AAAA,MACL,MAAM,OAAOjF,IAAG3F,UAAS,kBAAkB;AACzC,cAAMgI,YAAWuD,qBAAoB5F,IAAG,KAAK;AAC7C,cAAM,OAAO3F,SAAQ,QAAQ;AAC7B,cAAM,mBAAmBA,SAAQ,oBAAoB;AACrD,cAAM,QAAQA,SAAQ,YAClB8K,mBAAkB,OAAO9C,WAAU,MAAM,kBAAkB,gBAAgB,IAC3EoD,iBAAgB,OAAOpD,WAAU,MAAM,OAAO,kBAAkB,gBAAgB;AACpF,cAAMnF,YAAW,CAAC;AAClB,YAAI,CAAC,MAAM,QAAQ;AACjB,iBAAO,CAAC;AAAA,QACV;AACA,cAAM,6BAA6B,EAAE,QAAQ,CAAC,SAAS;AACrD,gBAAMlB,SAAQ,MAAM,CAAC,EAAE;AACvB,gBAAM,UAAU,KAAK,KAAKA,MAAK;AAC/B,cAAI,WAAW,CAAC,QAAQ,MAAM;AAC5B,YAAAkB,UAAS,KAAK,EAAC,SAAS,cAAc,KAAK,OAAO,OAAAlB,OAAK,CAAC;AAAA,UAC1D;AAAA,QACF,CAAC;AACD,eAAOkB;AAAA,MACT;AAAA,MACA,QAAQ,OAAO8C,IAAG3F,UAAS,kBAAkB;AAC3C,cAAMgI,YAAWuD,qBAAoB5F,IAAG,KAAK;AAC7C,cAAM,OAAO3F,SAAQ,QAAQ;AAC7B,cAAM,mBAAmBA,SAAQ,oBAAoB;AACrD,YAAI,QAAQA,SAAQ,YAChB8K,mBAAkB,OAAO9C,WAAU,MAAM,kBAAkB,gBAAgB,IAC7EoD,iBAAgB,OAAOpD,WAAU,MAAM,OAAO,kBAAkB,gBAAgB;AAClF,YAAI,MAAM,SAAS,GAAG;AACpB,gBAAM,eAAe,MAAM,CAAC,EAAE;AAC9B,gBAAM5G,QAAO,MAAM,eAAe,YAAY,EAAE;AAChD,kBAAQ,CAAC;AACT,mBAAS3C,KAAI,GAAGA,KAAI2C,MAAK,QAAQ,EAAE3C,IAAG;AACpC,kBAAM,KAAK,EAAC,SAAS2C,MAAK3C,EAAC,GAAG,cAAc,OAAOA,GAAC,CAAC;AAAA,UACvD;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,MACA,MAAM,OAAOkH,IAAG3F,UAAS,kBAAkB;AACzC,cAAMgI,YAAWuD,qBAAoB5F,IAAG,KAAK;AAC7C,cAAM,OAAO3F,SAAQ,QAAQ;AAC7B,cAAM,mBAAmBA,SAAQ,oBAAoB;AACrD,eAAO8K,mBAAkB,OAAO9C,WAAU,MAAM,kBAAkB,gBAAgB;AAAA,MACpF;AAAA,MACA,QAAQ,OAAOrC,IAAG3F,UAAS,kBAAkB;AAC3C,cAAMgI,YAAWuD,qBAAoB5F,IAAG,KAAK;AAC7C,cAAM,OAAO3F,SAAQ,QAAQ;AAC7B,cAAM,mBAAmBA,SAAQ,oBAAoB;AACrD,eAAOoL,iBAAgB,OAAOpD,WAAU,MAAMhI,SAAQ,WAAW,kBAAkB,gBAAgB;AAAA,MACrG;AAAA,MACA,EAAE,OAAO2F,IAAG3F,UAAS,kBAAkB;AACrC,cAAMgI,YAAWuD,qBAAoB5F,IAAG,KAAK;AAC7C,eAAO0F,cAAa,OAAOrD,WAAU,KAAKhI,SAAQ,WAAW,gBAAgB;AAAA,MAC/E;AAAA,MACA,EAAE,OAAO2F,IAAG3F,UAAS,kBAAkB;AACrC,cAAMgI,YAAWuD,qBAAoB5F,IAAG,KAAK;AAC7C,eAAO0F,cAAa,OAAOrD,WAAU,KAAKhI,SAAQ,WAAW,gBAAgB;AAAA,MAC/E;AAAA,IACF;AAAA,EACF;AAEA,MAAMwL,oBAAmB,CAAC,QAAQ,OAAO,SAAS,QAAQ;AAC1D,WAASC,kBAAiBC,QAAO1D,WAAU;AACzC,WAAO0D,OAAM,OAAO,CAAAjM,OAAKA,GAAE,QAAQuI,SAAQ;AAAA,EAC7C;AACA,WAAS2D,6BAA4BD,QAAO,MAAM;AAChD,WAAOA,OAAM,OAAO,CAAAjM,OAAK+L,kBAAiB,QAAQ/L,GAAE,GAAG,MAAM,MAAMA,GAAE,IAAI,SAAS,IAAI;AAAA,EACxF;AACA,WAASmM,cAAaF,QAAO,SAAS;AACpC,WAAOA,OAAM,KAAK,CAACnI,IAAG1C,OAAM;AAC1B,YAAM,KAAK,UAAUA,KAAI0C;AACzB,YAAM,KAAK,UAAUA,KAAI1C;AACzB,aAAO,GAAG,WAAW,GAAG,SACtB,GAAG,QAAQ,GAAG,QACd,GAAG,SAAS,GAAG;AAAA,IACnB,CAAC;AAAA,EACH;AACA,WAASgL,WAAU,OAAO;AACxB,UAAM,cAAc,CAAC;AACrB,QAAIpN,IAAG,MAAM,KAAK,KAAK,OAAO;AAC9B,SAAKA,KAAI,GAAG,QAAQ,SAAS,CAAC,GAAG,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACtD,YAAM,MAAMA,EAAC;AACb,OAAC,EAAC,UAAU,KAAK,SAAS,EAAC,OAAO,cAAc,EAAC,EAAC,IAAI;AACtD,kBAAY,KAAK;AAAA,QACf,OAAOA;AAAA,QACP;AAAA,QACA;AAAA,QACA,YAAY,IAAI,aAAa;AAAA,QAC7B,QAAQ,IAAI;AAAA,QACZ,OAAO,SAAU,MAAM;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACA,WAASqN,aAAYC,UAAS;AAC5B,UAAM,SAAS,CAAC;AAChB,eAAWC,SAAQD,UAAS;AAC1B,YAAM,EAAC,OAAO,KAAK,YAAW,IAAIC;AAClC,UAAI,CAAC,SAAS,CAACR,kBAAiB,SAAS,GAAG,GAAG;AAC7C;AAAA,MACF;AACA,YAAM,SAAS,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI,EAAC,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAAC;AACzF,aAAO;AACP,aAAO,UAAU;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AACA,WAASS,eAAcF,UAASG,SAAQ;AACtC,UAAM,SAASJ,aAAYC,QAAO;AAClC,UAAM,EAAC,cAAc,cAAa,IAAIG;AACtC,QAAIzN,IAAG,MAAM;AACb,SAAKA,KAAI,GAAG,OAAOsN,SAAQ,QAAQtN,KAAI,MAAM,EAAEA,IAAG;AAChD,eAASsN,SAAQtN,EAAC;AAClB,YAAM,EAAC,SAAQ,IAAI,OAAO;AAC1B,YAAM,QAAQ,OAAO,OAAO,KAAK;AACjC,YAAM,SAAS,SAAS,OAAO,cAAc,MAAM;AACnD,UAAI,OAAO,YAAY;AACrB,eAAO,QAAQ,SAAS,SAAS,eAAe,YAAYyN,QAAO;AACnE,eAAO,SAAS;AAAA,MAClB,OAAO;AACL,eAAO,QAAQ;AACf,eAAO,SAAS,SAAS,SAAS,gBAAgB,YAAYA,QAAO;AAAA,MACvE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASC,kBAAiB,OAAO;AAC/B,UAAM,cAAcN,WAAU,KAAK;AACnC,UAAM,WAAWD,cAAa,YAAY,OAAO,CAAAI,UAAQA,MAAK,IAAI,QAAQ,GAAG,IAAI;AACjF,UAAM7D,QAAOyD,cAAaH,kBAAiB,aAAa,MAAM,GAAG,IAAI;AACrE,UAAMrD,SAAQwD,cAAaH,kBAAiB,aAAa,OAAO,CAAC;AACjE,UAAMrH,OAAMwH,cAAaH,kBAAiB,aAAa,KAAK,GAAG,IAAI;AACnE,UAAMpH,UAASuH,cAAaH,kBAAiB,aAAa,QAAQ,CAAC;AACnE,UAAM,mBAAmBE,6BAA4B,aAAa,GAAG;AACrE,UAAM,iBAAiBA,6BAA4B,aAAa,GAAG;AACnE,WAAO;AAAA,MACL;AAAA,MACA,YAAYxD,MAAK,OAAO/D,IAAG;AAAA,MAC3B,gBAAgBgE,OAAM,OAAO,cAAc,EAAE,OAAO/D,OAAM,EAAE,OAAO,gBAAgB;AAAA,MACnF,WAAWoH,kBAAiB,aAAa,WAAW;AAAA,MACpD,UAAUtD,MAAK,OAAOC,MAAK,EAAE,OAAO,cAAc;AAAA,MAClD,YAAYhE,KAAI,OAAOC,OAAM,EAAE,OAAO,gBAAgB;AAAA,IACxD;AAAA,EACF;AACA,WAAS+H,gBAAe,YAAY,WAAW7I,IAAG1C,IAAG;AACnD,WAAO,KAAK,IAAI,WAAW0C,EAAC,GAAG,UAAUA,EAAC,CAAC,IAAI,KAAK,IAAI,WAAW1C,EAAC,GAAG,UAAUA,EAAC,CAAC;AAAA,EACrF;AACA,WAASwL,kBAAiB,YAAY,YAAY;AAChD,eAAW,MAAM,KAAK,IAAI,WAAW,KAAK,WAAW,GAAG;AACxD,eAAW,OAAO,KAAK,IAAI,WAAW,MAAM,WAAW,IAAI;AAC3D,eAAW,SAAS,KAAK,IAAI,WAAW,QAAQ,WAAW,MAAM;AACjE,eAAW,QAAQ,KAAK,IAAI,WAAW,OAAO,WAAW,KAAK;AAAA,EAChE;AACA,WAASC,YAAW,WAAWJ,SAAQ,QAAQ,QAAQ;AACrD,UAAM,EAAC,KAAK,IAAG,IAAI;AACnB,UAAM,aAAa,UAAU;AAC7B,QAAI,CAACtM,UAAS,GAAG,GAAG;AAClB,UAAI,OAAO,MAAM;AACf,kBAAU,GAAG,KAAK,OAAO;AAAA,MAC3B;AACA,YAAM,QAAQ,OAAO,OAAO,KAAK,KAAK,EAAC,MAAM,GAAG,OAAO,EAAC;AACxD,YAAM,OAAO,KAAK,IAAI,MAAM,MAAM,OAAO,aAAa,IAAI,SAAS,IAAI,KAAK;AAC5E,aAAO,OAAO,MAAM,OAAO,MAAM;AACjC,gBAAU,GAAG,KAAK,OAAO;AAAA,IAC3B;AACA,QAAI,IAAI,YAAY;AAClB,MAAAyM,kBAAiB,YAAY,IAAI,WAAW,CAAC;AAAA,IAC/C;AACA,UAAM,WAAW,KAAK,IAAI,GAAGH,QAAO,aAAaE,gBAAe,YAAY,WAAW,QAAQ,OAAO,CAAC;AACvG,UAAM,YAAY,KAAK,IAAI,GAAGF,QAAO,cAAcE,gBAAe,YAAY,WAAW,OAAO,QAAQ,CAAC;AACzG,UAAM,eAAe,aAAa,UAAU;AAC5C,UAAM,gBAAgB,cAAc,UAAU;AAC9C,cAAU,IAAI;AACd,cAAU,IAAI;AACd,WAAO,OAAO,aACV,EAAC,MAAM,cAAc,OAAO,cAAa,IACzC,EAAC,MAAM,eAAe,OAAO,aAAY;AAAA,EAC/C;AACA,WAASG,kBAAiB,WAAW;AACnC,UAAM,aAAa,UAAU;AAC7B,aAAS,UAAU,KAAK;AACtB,YAAM,SAAS,KAAK,IAAI,WAAW,GAAG,IAAI,UAAU,GAAG,GAAG,CAAC;AAC3D,gBAAU,GAAG,KAAK;AAClB,aAAO;AAAA,IACT;AACA,cAAU,KAAK,UAAU,KAAK;AAC9B,cAAU,KAAK,UAAU,MAAM;AAC/B,cAAU,OAAO;AACjB,cAAU,QAAQ;AAAA,EACpB;AACA,WAASC,YAAW,YAAY,WAAW;AACzC,UAAM,aAAa,UAAU;AAC7B,aAAS,mBAAmBC,YAAW;AACrC,YAAM,SAAS,EAAC,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,EAAC;AACpD,MAAAA,WAAU,QAAQ,CAAC,QAAQ;AACzB,eAAO,GAAG,IAAI,KAAK,IAAI,UAAU,GAAG,GAAG,WAAW,GAAG,CAAC;AAAA,MACxD,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,aACH,mBAAmB,CAAC,QAAQ,OAAO,CAAC,IACpC,mBAAmB,CAAC,OAAO,QAAQ,CAAC;AAAA,EAC1C;AACA,WAASC,UAAS,OAAO,WAAWR,SAAQ,QAAQ;AAClD,UAAM,aAAa,CAAC;AACpB,QAAIzN,IAAG,MAAM,QAAQ,KAAK,OAAO;AACjC,SAAKA,KAAI,GAAG,OAAO,MAAM,QAAQ,QAAQ,GAAGA,KAAI,MAAM,EAAEA,IAAG;AACzD,eAAS,MAAMA,EAAC;AAChB,YAAM,OAAO;AACb,UAAI;AAAA,QACF,OAAO,SAAS,UAAU;AAAA,QAC1B,OAAO,UAAU,UAAU;AAAA,QAC3B+N,YAAW,OAAO,YAAY,SAAS;AAAA,MACzC;AACA,YAAM,EAAC,MAAM,MAAK,IAAIF,YAAW,WAAWJ,SAAQ,QAAQ,MAAM;AAClE,eAAS,QAAQ,WAAW;AAC5B,gBAAU,WAAW;AACrB,UAAI,CAAC,IAAI,UAAU;AACjB,mBAAW,KAAK,MAAM;AAAA,MACxB;AAAA,IACF;AACA,WAAO,SAASQ,UAAS,YAAY,WAAWR,SAAQ,MAAM,KAAK;AAAA,EACrE;AACA,WAASS,YAAW,KAAKxE,OAAM/D,MAAKkE,QAAOD,SAAQ;AACjD,QAAI,MAAMjE;AACV,QAAI,OAAO+D;AACX,QAAI,QAAQA,QAAOG;AACnB,QAAI,SAASlE,OAAMiE;AACnB,QAAI,QAAQC;AACZ,QAAI,SAASD;AAAA,EACf;AACA,WAASuE,YAAW,OAAO,WAAWV,SAAQ,QAAQ;AACpD,UAAM,cAAcA,QAAO;AAC3B,QAAI,EAAC,GAAA1L,IAAG,GAAAC,GAAC,IAAI;AACb,eAAW,UAAU,OAAO;AAC1B,YAAM,MAAM,OAAO;AACnB,YAAM,QAAQ,OAAO,OAAO,KAAK,KAAK,EAAC,OAAO,GAAG,QAAQ,GAAG,QAAQ,EAAC;AACrE,YAAM,SAAU,OAAO,cAAc,MAAM,UAAW;AACtD,UAAI,OAAO,YAAY;AACrB,cAAM6H,SAAQ,UAAU,IAAI;AAC5B,cAAMD,UAAS,MAAM,QAAQ,IAAI;AACjC,YAAIpF,SAAQ,MAAM,KAAK,GAAG;AACxB,UAAAxC,KAAI,MAAM;AAAA,QACZ;AACA,YAAI,IAAI,UAAU;AAChB,UAAAkM,YAAW,KAAK,YAAY,MAAMlM,IAAGyL,QAAO,aAAa,YAAY,QAAQ,YAAY,MAAM7D,OAAM;AAAA,QACvG,OAAO;AACL,UAAAsE,YAAW,KAAK,UAAU,OAAO,MAAM,QAAQlM,IAAG6H,QAAOD,OAAM;AAAA,QACjE;AACA,cAAM,QAAQ5H;AACd,cAAM,UAAU6H;AAChB,QAAA7H,KAAI,IAAI;AAAA,MACV,OAAO;AACL,cAAM4H,UAAS,UAAU,IAAI;AAC7B,cAAMC,SAAQ,MAAM,QAAQ,IAAI;AAChC,YAAIrF,SAAQ,MAAM,KAAK,GAAG;AACxB,UAAAzC,KAAI,MAAM;AAAA,QACZ;AACA,YAAI,IAAI,UAAU;AAChB,UAAAmM,YAAW,KAAKnM,IAAG,YAAY,KAAK8H,QAAO4D,QAAO,cAAc,YAAY,SAAS,YAAY,GAAG;AAAA,QACtG,OAAO;AACL,UAAAS,YAAW,KAAKnM,IAAG,UAAU,MAAM,MAAM,QAAQ8H,QAAOD,OAAM;AAAA,QAChE;AACA,cAAM,QAAQ7H;AACd,cAAM,UAAU6H;AAChB,QAAA7H,KAAI,IAAI;AAAA,MACV;AAAA,IACF;AACA,cAAU,IAAIA;AACd,cAAU,IAAIC;AAAA,EAChB;AACA,EAAAlB,UAAS,IAAI,UAAU;AAAA,IACrB,aAAa;AAAA,IACb,SAAS;AAAA,MACP,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF,CAAC;AACD,MAAIwM,WAAU;AAAA,IACZ,OAAO,OAAO,MAAM;AAClB,UAAI,CAAC,MAAM,OAAO;AAChB,cAAM,QAAQ,CAAC;AAAA,MACjB;AACA,WAAK,WAAW,KAAK,YAAY;AACjC,WAAK,WAAW,KAAK,YAAY;AACjC,WAAK,SAAS,KAAK,UAAU;AAC7B,WAAK,UAAU,KAAK,WAAW,WAAW;AACxC,eAAO,CAAC;AAAA,UACN,GAAG;AAAA,UACH,KAAK,WAAW;AACd,iBAAK,KAAK,SAAS;AAAA,UACrB;AAAA,QACF,CAAC;AAAA,MACH;AACA,YAAM,MAAM,KAAK,IAAI;AAAA,IACvB;AAAA,IACA,UAAU,OAAO,YAAY;AAC3B,YAAMpK,SAAQ,MAAM,QAAQ,MAAM,MAAM,QAAQ,UAAU,IAAI;AAC9D,UAAIA,WAAU,IAAI;AAChB,cAAM,MAAM,OAAOA,QAAO,CAAC;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,UAAU,OAAO,MAAM3B,UAAS;AAC9B,WAAK,WAAWA,SAAQ;AACxB,WAAK,WAAWA,SAAQ;AACxB,WAAK,SAASA,SAAQ;AAAA,IACxB;AAAA,IACA,OAAO,OAAOsI,QAAOD,SAAQ,YAAY;AACvC,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AACA,YAAM,UAAUT,WAAU,MAAM,QAAQ,OAAO,OAAO;AACtD,YAAM,iBAAiB,KAAK,IAAIU,SAAQ,QAAQ,OAAO,CAAC;AACxD,YAAM,kBAAkB,KAAK,IAAID,UAAS,QAAQ,QAAQ,CAAC;AAC3D,YAAM,QAAQ8D,kBAAiB,MAAM,KAAK;AAC1C,YAAM,gBAAgB,MAAM;AAC5B,YAAM,kBAAkB,MAAM;AAC9B,MAAA3E,MAAK,MAAM,OAAO,SAAO;AACvB,YAAI,OAAO,IAAI,iBAAiB,YAAY;AAC1C,cAAI,aAAa;AAAA,QACnB;AAAA,MACF,CAAC;AACD,YAAM,0BAA0B,cAAc,OAAO,CAAC,OAAOwE,UAC3DA,MAAK,IAAI,WAAWA,MAAK,IAAI,QAAQ,YAAY,QAAQ,QAAQ,QAAQ,GAAG,CAAC,KAAK;AACpF,YAAME,UAAS,OAAO,OAAO;AAAA,QAC3B,YAAY5D;AAAA,QACZ,aAAaD;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc,iBAAiB,IAAI;AAAA,QACnC,eAAe,kBAAkB;AAAA,MACnC,CAAC;AACD,YAAM,aAAa,OAAO,OAAO,CAAC,GAAG,OAAO;AAC5C,MAAAgE,kBAAiB,YAAYzE,WAAU,UAAU,CAAC;AAClD,YAAM,YAAY,OAAO,OAAO;AAAA,QAC9B;AAAA,QACA,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,MACb,GAAG,OAAO;AACV,YAAM,SAASqE,eAAc,cAAc,OAAO,eAAe,GAAGC,OAAM;AAC1E,MAAAQ,UAAS,MAAM,UAAU,WAAWR,SAAQ,MAAM;AAClD,MAAAQ,UAAS,eAAe,WAAWR,SAAQ,MAAM;AACjD,UAAIQ,UAAS,iBAAiB,WAAWR,SAAQ,MAAM,GAAG;AACxD,QAAAQ,UAAS,eAAe,WAAWR,SAAQ,MAAM;AAAA,MACnD;AACA,MAAAK,kBAAiB,SAAS;AAC1B,MAAAK,YAAW,MAAM,YAAY,WAAWV,SAAQ,MAAM;AACtD,gBAAU,KAAK,UAAU;AACzB,gBAAU,KAAK,UAAU;AACzB,MAAAU,YAAW,MAAM,gBAAgB,WAAWV,SAAQ,MAAM;AAC1D,YAAM,YAAY;AAAA,QAChB,MAAM,UAAU;AAAA,QAChB,KAAK,UAAU;AAAA,QACf,OAAO,UAAU,OAAO,UAAU;AAAA,QAClC,QAAQ,UAAU,MAAM,UAAU;AAAA,QAClC,QAAQ,UAAU;AAAA,QAClB,OAAO,UAAU;AAAA,MACnB;AACA,MAAA1E,MAAK,MAAM,WAAW,CAAC,WAAW;AAChC,cAAM,MAAM,OAAO;AACnB,eAAO,OAAO,KAAK,MAAM,SAAS;AAClC,YAAI,OAAO,UAAU,GAAG,UAAU,GAAG,EAAC,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,EAAC,CAAC;AAAA,MAC7E,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAMqF,gBAAN,MAAmB;AAAA,IACjB,eAAe,QAAQ,aAAa;AAAA,IAAC;AAAA,IACrC,eAAe,SAAS;AACtB,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB,OAAO,MAAM,UAAU;AAAA,IAAC;AAAA,IACzC,oBAAoB,OAAO,MAAM,UAAU;AAAA,IAAC;AAAA,IAC5C,sBAAsB;AACpB,aAAO;AAAA,IACT;AAAA,IACA,eAAe,SAASvE,QAAOD,SAAQ,aAAa;AAClD,MAAAC,SAAQ,KAAK,IAAI,GAAGA,UAAS,QAAQ,KAAK;AAC1C,MAAAD,UAASA,WAAU,QAAQ;AAC3B,aAAO;AAAA,QACL,OAAAC;AAAA,QACA,QAAQ,KAAK,IAAI,GAAG,cAAc,KAAK,MAAMA,SAAQ,WAAW,IAAID,OAAM;AAAA,MAC5E;AAAA,IACF;AAAA,IACA,WAAW,QAAQ;AACjB,aAAO;AAAA,IACT;AAAA,IACA,aAAa1I,SAAQ;AAAA,IACrB;AAAA,EACF;AAEA,MAAMmN,iBAAN,cAA4BD,cAAa;AAAA,IACvC,eAAe,MAAM;AACnB,aAAO,QAAQ,KAAK,cAAc,KAAK,WAAW,IAAI,KAAK;AAAA,IAC7D;AAAA,IACA,aAAalN,SAAQ;AACnB,MAAAA,QAAO,QAAQ,YAAY;AAAA,IAC7B;AAAA,EACF;AAEA,MAAMoN,eAAc;AACpB,MAAMC,eAAc;AAAA,IAClB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA,IACd,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,IACX,cAAc;AAAA,IACd,YAAY;AAAA,EACd;AACA,MAAMC,iBAAgB,WAAS,UAAU,QAAQ,UAAU;AAC3D,WAASC,YAAW,QAAQ,aAAa;AACvC,UAAM,QAAQ,OAAO;AACrB,UAAM,eAAe,OAAO,aAAa,QAAQ;AACjD,UAAM,cAAc,OAAO,aAAa,OAAO;AAC/C,WAAOH,YAAW,IAAI;AAAA,MACpB,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,UACL,SAAS,MAAM;AAAA,UACf,QAAQ,MAAM;AAAA,UACd,OAAO,MAAM;AAAA,QACf;AAAA,MACF;AAAA,IACF;AACA,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,YAAY,MAAM,aAAa;AACrC,QAAIE,eAAc,WAAW,GAAG;AAC9B,YAAM,eAAeE,cAAa,QAAQ,OAAO;AACjD,UAAI,iBAAiB,QAAW;AAC9B,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AACA,QAAIF,eAAc,YAAY,GAAG;AAC/B,UAAI,OAAO,MAAM,WAAW,IAAI;AAC9B,eAAO,SAAS,OAAO,SAAS,eAAe;AAAA,MACjD,OAAO;AACL,cAAM,gBAAgBE,cAAa,QAAQ,QAAQ;AACnD,YAAI,kBAAkB,QAAW;AAC/B,iBAAO,SAAS;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,MAAMC,wBAAuBC,gCAA+B,EAAC,SAAS,KAAI,IAAI;AAC9E,WAASC,aAAY,MAAM,MAAM,UAAU;AACzC,SAAK,iBAAiB,MAAM,UAAUF,qBAAoB;AAAA,EAC5D;AACA,WAASG,gBAAe,OAAO,MAAM,UAAU;AAC7C,UAAM,OAAO,oBAAoB,MAAM,UAAUH,qBAAoB;AAAA,EACvE;AACA,WAASI,iBAAgB,OAAO,OAAO;AACrC,UAAM,OAAOR,aAAY,MAAM,IAAI,KAAK,MAAM;AAC9C,UAAM,EAAC,GAAAxM,IAAG,GAAAC,GAAC,IAAI8K,qBAAoB,OAAO,KAAK;AAC/C,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,GAAG/K,OAAM,SAAYA,KAAI;AAAA,MACzB,GAAGC,OAAM,SAAYA,KAAI;AAAA,IAC3B;AAAA,EACF;AACA,WAASgN,kBAAiB,UAAU,QAAQ;AAC1C,eAAW,QAAQ,UAAU;AAC3B,UAAI,SAAS,UAAU,KAAK,SAAS,MAAM,GAAG;AAC5C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,WAASC,sBAAqB,OAAO,MAAM,UAAU;AACnD,UAAM,SAAS,MAAM;AACrB,UAAM,WAAW,IAAI,iBAAiB,aAAW;AAC/C,UAAI,UAAU;AACd,iBAAW,SAAS,SAAS;AAC3B,kBAAU,WAAWD,kBAAiB,MAAM,YAAY,MAAM;AAC9D,kBAAU,WAAW,CAACA,kBAAiB,MAAM,cAAc,MAAM;AAAA,MACnE;AACA,UAAI,SAAS;AACX,iBAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,aAAS,QAAQ,UAAU,EAAC,WAAW,MAAM,SAAS,KAAI,CAAC;AAC3D,WAAO;AAAA,EACT;AACA,WAASE,sBAAqB,OAAO,MAAM,UAAU;AACnD,UAAM,SAAS,MAAM;AACrB,UAAM,WAAW,IAAI,iBAAiB,aAAW;AAC/C,UAAI,UAAU;AACd,iBAAW,SAAS,SAAS;AAC3B,kBAAU,WAAWF,kBAAiB,MAAM,cAAc,MAAM;AAChE,kBAAU,WAAW,CAACA,kBAAiB,MAAM,YAAY,MAAM;AAAA,MACjE;AACA,UAAI,SAAS;AACX,iBAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,aAAS,QAAQ,UAAU,EAAC,WAAW,MAAM,SAAS,KAAI,CAAC;AAC3D,WAAO;AAAA,EACT;AACA,MAAMG,sBAAqB,oBAAI,IAAI;AACnC,MAAIC,uBAAsB;AAC1B,WAASC,kBAAiB;AACxB,UAAM,MAAM,OAAO;AACnB,QAAI,QAAQD,sBAAqB;AAC/B;AAAA,IACF;AACA,IAAAA,uBAAsB;AACtB,IAAAD,oBAAmB,QAAQ,CAAC,QAAQ,UAAU;AAC5C,UAAI,MAAM,4BAA4B,KAAK;AACzC,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAASG,+BAA8B,OAAO,QAAQ;AACpD,QAAI,CAACH,oBAAmB,MAAM;AAC5B,aAAO,iBAAiB,UAAUE,eAAc;AAAA,IAClD;AACA,IAAAF,oBAAmB,IAAI,OAAO,MAAM;AAAA,EACtC;AACA,WAASI,iCAAgC,OAAO;AAC9C,IAAAJ,oBAAmB,OAAO,KAAK;AAC/B,QAAI,CAACA,oBAAmB,MAAM;AAC5B,aAAO,oBAAoB,UAAUE,eAAc;AAAA,IACrD;AAAA,EACF;AACA,WAASG,sBAAqB,OAAO,MAAM,UAAU;AACnD,UAAM,SAAS,MAAM;AACrB,UAAM,YAAY,UAAUC,gBAAe,MAAM;AACjD,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AACA,UAAM,SAASC,WAAU,CAAC7F,QAAOD,YAAW;AAC1C,YAAMa,KAAI,UAAU;AACpB,eAASZ,QAAOD,OAAM;AACtB,UAAIa,KAAI,UAAU,aAAa;AAC7B,iBAAS;AAAA,MACX;AAAA,IACF,GAAG,MAAM;AACT,UAAM,WAAW,IAAI,eAAe,aAAW;AAC7C,YAAM,QAAQ,QAAQ,CAAC;AACvB,YAAMZ,SAAQ,MAAM,YAAY;AAChC,YAAMD,UAAS,MAAM,YAAY;AACjC,UAAIC,WAAU,KAAKD,YAAW,GAAG;AAC/B;AAAA,MACF;AACA,aAAOC,QAAOD,OAAM;AAAA,IACtB,CAAC;AACD,aAAS,QAAQ,SAAS;AAC1B,IAAA0F,+BAA8B,OAAO,MAAM;AAC3C,WAAO;AAAA,EACT;AACA,WAASK,iBAAgB,OAAO,MAAM,UAAU;AAC9C,QAAI,UAAU;AACZ,eAAS,WAAW;AAAA,IACtB;AACA,QAAI,SAAS,UAAU;AACrB,MAAAJ,iCAAgC,KAAK;AAAA,IACvC;AAAA,EACF;AACA,WAASK,sBAAqB,OAAO,MAAM,UAAU;AACnD,UAAM,SAAS,MAAM;AACrB,UAAM,QAAQF,WAAU,CAAC,UAAU;AACjC,UAAI,MAAM,QAAQ,MAAM;AACtB,iBAASX,iBAAgB,OAAO,KAAK,CAAC;AAAA,MACxC;AAAA,IACF,GAAG,OAAO,CAAC,SAAS;AAClB,YAAM,QAAQ,KAAK,CAAC;AACpB,aAAO,CAAC,OAAO,MAAM,SAAS,MAAM,OAAO;AAAA,IAC7C,CAAC;AACD,IAAAF,aAAY,QAAQ,MAAM,KAAK;AAC/B,WAAO;AAAA,EACT;AACA,MAAMgB,eAAN,cAA0BzB,cAAa;AAAA,IACrC,eAAe,QAAQ,aAAa;AAClC,YAAM,UAAU,UAAU,OAAO,cAAc,OAAO,WAAW,IAAI;AACrE,UAAI,WAAW,QAAQ,WAAW,QAAQ;AACxC,QAAAK,YAAW,QAAQ,WAAW;AAC9B,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IACA,eAAe,SAAS;AACtB,YAAM,SAAS,QAAQ;AACvB,UAAI,CAAC,OAAOH,YAAW,GAAG;AACxB,eAAO;AAAA,MACT;AACA,YAAM,UAAU,OAAOA,YAAW,EAAE;AACpC,OAAC,UAAU,OAAO,EAAE,QAAQ,CAAC,SAAS;AACpC,cAAM,QAAQ,QAAQ,IAAI;AAC1B,YAAIpJ,eAAc,KAAK,GAAG;AACxB,iBAAO,gBAAgB,IAAI;AAAA,QAC7B,OAAO;AACL,iBAAO,aAAa,MAAM,KAAK;AAAA,QACjC;AAAA,MACF,CAAC;AACD,YAAM,QAAQ,QAAQ,SAAS,CAAC;AAChC,aAAO,KAAK,KAAK,EAAE,QAAQ,CAAC9D,SAAQ;AAClC,eAAO,MAAMA,IAAG,IAAI,MAAMA,IAAG;AAAA,MAC/B,CAAC;AACD,aAAO,QAAQ,OAAO;AACtB,aAAO,OAAOkN,YAAW;AACzB,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB,OAAO,MAAM,UAAU;AACtC,WAAK,oBAAoB,OAAO,IAAI;AACpC,YAAM,UAAU,MAAM,aAAa,MAAM,WAAW,CAAC;AACrD,YAAMwB,YAAW;AAAA,QACf,QAAQb;AAAA,QACR,QAAQC;AAAA,QACR,QAAQM;AAAA,MACV;AACA,YAAM,UAAUM,UAAS,IAAI,KAAKF;AAClC,cAAQ,IAAI,IAAI,QAAQ,OAAO,MAAM,QAAQ;AAAA,IAC/C;AAAA,IACA,oBAAoB,OAAO,MAAM;AAC/B,YAAM,UAAU,MAAM,aAAa,MAAM,WAAW,CAAC;AACrD,YAAM,QAAQ,QAAQ,IAAI;AAC1B,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AACA,YAAME,YAAW;AAAA,QACf,QAAQH;AAAA,QACR,QAAQA;AAAA,QACR,QAAQA;AAAA,MACV;AACA,YAAM,UAAUG,UAAS,IAAI,KAAKhB;AAClC,cAAQ,OAAO,MAAM,KAAK;AAC1B,cAAQ,IAAI,IAAI;AAAA,IAClB;AAAA,IACA,sBAAsB;AACpB,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,eAAe,QAAQjF,QAAOD,SAAQ,aAAa;AACjD,aAAOmG,gBAAe,QAAQlG,QAAOD,SAAQ,WAAW;AAAA,IAC1D;AAAA,IACA,WAAW,QAAQ;AACjB,YAAM,YAAY6F,gBAAe,MAAM;AACvC,aAAO,CAAC,EAAE,aAAa,UAAU;AAAA,IACnC;AAAA,EACF;AAEA,WAASO,iBAAgB,QAAQ;AAC/B,QAAI,CAACC,iBAAgB,KAAM,OAAO,oBAAoB,eAAe,kBAAkB,iBAAkB;AACvG,aAAO5B;AAAA,IACT;AACA,WAAOwB;AAAA,EACT;AAEA,MAAMK,iBAAN,MAAoB;AAAA,IAClB,cAAc;AACZ,WAAK,QAAQ,CAAC;AAAA,IAChB;AAAA,IACA,OAAO,OAAO,MAAM,MAAMC,SAAQ;AAChC,UAAI,SAAS,cAAc;AACzB,aAAK,QAAQ,KAAK,mBAAmB,OAAO,IAAI;AAChD,aAAK,QAAQ,KAAK,OAAO,OAAO,SAAS;AAAA,MAC3C;AACA,YAAMC,eAAcD,UAAS,KAAK,aAAa,KAAK,EAAE,OAAOA,OAAM,IAAI,KAAK,aAAa,KAAK;AAC9F,YAAM,SAAS,KAAK,QAAQC,cAAa,OAAO,MAAM,IAAI;AAC1D,UAAI,SAAS,gBAAgB;AAC3B,aAAK,QAAQA,cAAa,OAAO,MAAM;AACvC,aAAK,QAAQ,KAAK,OAAO,OAAO,WAAW;AAAA,MAC7C;AACA,aAAO;AAAA,IACT;AAAA,IACA,QAAQA,cAAa,OAAO,MAAM,MAAM;AACtC,aAAO,QAAQ,CAAC;AAChB,iBAAW,cAAcA,cAAa;AACpC,cAAM,SAAS,WAAW;AAC1B,cAAM,SAAS,OAAO,IAAI;AAC1B,cAAM3C,UAAS,CAAC,OAAO,MAAM,WAAW,OAAO;AAC/C,YAAIxD,UAAS,QAAQwD,SAAQ,MAAM,MAAM,SAAS,KAAK,YAAY;AACjE,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,aAAa;AACX,UAAI,CAACvI,eAAc,KAAK,MAAM,GAAG;AAC/B,aAAK,YAAY,KAAK;AACtB,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA,IACA,aAAa,OAAO;AAClB,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK;AAAA,MACd;AACA,YAAMkL,eAAc,KAAK,SAAS,KAAK,mBAAmB,KAAK;AAC/D,WAAK,oBAAoB,KAAK;AAC9B,aAAOA;AAAA,IACT;AAAA,IACA,mBAAmB,OAAO,KAAK;AAC7B,YAAMlP,UAAS,SAAS,MAAM;AAC9B,YAAMK,WAAUsC,gBAAe3C,QAAO,WAAWA,QAAO,QAAQ,SAAS,CAAC,CAAC;AAC3E,YAAMmP,WAAUC,YAAWpP,OAAM;AACjC,aAAOK,aAAY,SAAS,CAAC,MAAM,CAAC,IAAIgP,mBAAkB,OAAOF,UAAS9O,UAAS,GAAG;AAAA,IACxF;AAAA,IACA,oBAAoB,OAAO;AACzB,YAAM,sBAAsB,KAAK,aAAa,CAAC;AAC/C,YAAM6O,eAAc,KAAK;AACzB,YAAM,OAAO,CAACtL,IAAG1C,OAAM0C,GAAE,OAAO,CAAA/C,OAAK,CAACK,GAAE,KAAK,CAAAJ,OAAKD,GAAE,OAAO,OAAOC,GAAE,OAAO,EAAE,CAAC;AAC9E,WAAK,QAAQ,KAAK,qBAAqBoO,YAAW,GAAG,OAAO,MAAM;AAClE,WAAK,QAAQ,KAAKA,cAAa,mBAAmB,GAAG,OAAO,OAAO;AAAA,IACrE;AAAA,EACF;AACA,WAASE,YAAWpP,SAAQ;AAC1B,UAAM,WAAW,CAAC;AAClB,UAAMmP,WAAU,CAAC;AACjB,UAAM,OAAO,OAAO,KAAK5E,UAAS,QAAQ,KAAK;AAC/C,aAASzL,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,MAAAqQ,SAAQ,KAAK5E,UAAS,UAAU,KAAKzL,EAAC,CAAC,CAAC;AAAA,IAC1C;AACA,UAAM,QAAQkB,QAAO,WAAW,CAAC;AACjC,aAASlB,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,YAAM,SAAS,MAAMA,EAAC;AACtB,UAAIqQ,SAAQ,QAAQ,MAAM,MAAM,IAAI;AAClC,QAAAA,SAAQ,KAAK,MAAM;AACnB,iBAAS,OAAO,EAAE,IAAI;AAAA,MACxB;AAAA,IACF;AACA,WAAO,EAAC,SAAAA,UAAS,SAAQ;AAAA,EAC3B;AACA,WAASG,SAAQjP,UAAS,KAAK;AAC7B,QAAI,CAAC,OAAOA,aAAY,OAAO;AAC7B,aAAO;AAAA,IACT;AACA,QAAIA,aAAY,MAAM;AACpB,aAAO,CAAC;AAAA,IACV;AACA,WAAOA;AAAA,EACT;AACA,WAASgP,mBAAkB,OAAO,EAAC,SAAAF,UAAS,SAAQ,GAAG9O,UAAS,KAAK;AACnE,UAAM,SAAS,CAAC;AAChB,UAAM,UAAU,MAAM,WAAW;AACjC,eAAW,UAAU8O,UAAS;AAC5B,YAAMlF,MAAK,OAAO;AAClB,YAAM,OAAOqF,SAAQjP,SAAQ4J,GAAE,GAAG,GAAG;AACrC,UAAI,SAAS,MAAM;AACjB;AAAA,MACF;AACA,aAAO,KAAK;AAAA,QACV;AAAA,QACA,SAASsF,YAAW,MAAM,QAAQ,EAAC,QAAQ,OAAO,SAAStF,GAAE,EAAC,GAAG,MAAM,OAAO;AAAA,MAChF,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACA,WAASsF,YAAWvP,SAAQ,EAAC,QAAQ,MAAK,GAAG,MAAM,SAAS;AAC1D,UAAM,OAAOA,QAAO,gBAAgB,MAAM;AAC1C,UAAM,SAASA,QAAO,gBAAgB,MAAM,IAAI;AAChD,QAAI,SAAS,OAAO,UAAU;AAC5B,aAAO,KAAK,OAAO,QAAQ;AAAA,IAC7B;AACA,WAAOA,QAAO,eAAe,QAAQ,SAAS,CAAC,EAAE,GAAG;AAAA,MAClD,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,WAASwP,cAAa,MAAMnP,UAAS;AACnC,UAAM,kBAAkBT,UAAS,SAAS,IAAI,KAAK,CAAC;AACpD,UAAM,kBAAkBS,SAAQ,YAAY,CAAC,GAAG,IAAI,KAAK,CAAC;AAC1D,WAAO,eAAe,aAAaA,SAAQ,aAAa,gBAAgB,aAAa;AAAA,EACvF;AACA,WAASoP,2BAA0BxF,KAAI,WAAW;AAChD,QAAI,OAAOA;AACX,QAAIA,QAAO,WAAW;AACpB,aAAO;AAAA,IACT,WAAWA,QAAO,WAAW;AAC3B,aAAO,cAAc,MAAM,MAAM;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACA,WAASyF,2BAA0B,MAAM,WAAW;AAClD,WAAO,SAAS,YAAY,YAAY;AAAA,EAC1C;AACA,WAASC,kBAAiBtH,WAAU;AAClC,QAAIA,cAAa,SAASA,cAAa,UAAU;AAC/C,aAAO;AAAA,IACT;AACA,QAAIA,cAAa,UAAUA,cAAa,SAAS;AAC/C,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAASuH,eAAc3F,KAAI,cAAc;AACvC,QAAIA,QAAO,OAAOA,QAAO,KAAK;AAC5B,aAAOA;AAAA,IACT;AACA,WAAO,aAAa,QAAQ0F,kBAAiB,aAAa,QAAQ,KAAK1F,IAAG,OAAO,CAAC,EAAE,YAAY;AAAA,EAClG;AACA,WAAS4F,kBAAiB7P,SAAQK,UAAS;AACzC,UAAM,gBAAgB8J,WAAUnK,QAAO,IAAI,KAAK,EAAC,QAAQ,CAAC,EAAC;AAC3D,UAAM,eAAeK,SAAQ,UAAU,CAAC;AACxC,UAAM,iBAAiBmP,cAAaxP,QAAO,MAAMK,QAAO;AACxD,UAAM,WAAW,uBAAO,OAAO,IAAI;AACnC,UAAM6B,UAAS,uBAAO,OAAO,IAAI;AACjC,WAAO,KAAK,YAAY,EAAE,QAAQ,CAAA+H,QAAM;AACtC,YAAM,YAAY,aAAaA,GAAE;AACjC,UAAI,CAAChK,UAAS,SAAS,GAAG;AACxB,eAAO,QAAQ,MAAM,0CAA0CgK,KAAI;AAAA,MACrE;AACA,UAAI,UAAU,QAAQ;AACpB,eAAO,QAAQ,KAAK,kDAAkDA,KAAI;AAAA,MAC5E;AACA,YAAM,OAAO2F,eAAc3F,KAAI,SAAS;AACxC,YAAM,YAAYyF,2BAA0B,MAAM,cAAc;AAChE,YAAM,sBAAsB,cAAc,UAAU,CAAC;AACrD,eAAS,IAAI,IAAI,SAAS,IAAI,KAAKzF;AACnC,MAAA/H,QAAO+H,GAAE,IAAI6F,SAAQ,uBAAO,OAAO,IAAI,GAAG,CAAC,EAAC,KAAI,GAAG,WAAW,oBAAoB,IAAI,GAAG,oBAAoB,SAAS,CAAC,CAAC;AAAA,IAC1H,CAAC;AACD,IAAA9P,QAAO,KAAK,SAAS,QAAQ,aAAW;AACtC,YAAM,OAAO,QAAQ,QAAQA,QAAO;AACpC,YAAM,YAAY,QAAQ,aAAawP,cAAa,MAAMnP,QAAO;AACjE,YAAM,kBAAkB8J,WAAU,IAAI,KAAK,CAAC;AAC5C,YAAM,sBAAsB,gBAAgB,UAAU,CAAC;AACvD,aAAO,KAAK,mBAAmB,EAAE,QAAQ,eAAa;AACpD,cAAM,OAAOsF,2BAA0B,WAAW,SAAS;AAC3D,cAAMxF,MAAK,QAAQ,OAAO,QAAQ,KAAK,SAAS,IAAI,KAAK;AACzD,QAAA/H,QAAO+H,GAAE,IAAI/H,QAAO+H,GAAE,KAAK,uBAAO,OAAO,IAAI;AAC7C,QAAA6F,SAAQ5N,QAAO+H,GAAE,GAAG,CAAC,EAAC,KAAI,GAAG,aAAaA,GAAE,GAAG,oBAAoB,SAAS,CAAC,CAAC;AAAA,MAChF,CAAC;AAAA,IACH,CAAC;AACD,WAAO,KAAK/H,OAAM,EAAE,QAAQ,CAAAhC,SAAO;AACjC,YAAMO,SAAQyB,QAAOhC,IAAG;AACxB,MAAA4P,SAAQrP,QAAO,CAACb,UAAS,OAAOa,OAAM,IAAI,GAAGb,UAAS,KAAK,CAAC;AAAA,IAC9D,CAAC;AACD,WAAOsC;AAAA,EACT;AACA,WAAS6N,aAAY/P,SAAQ;AAC3B,UAAMK,WAAUL,QAAO,YAAYA,QAAO,UAAU,CAAC;AACrD,IAAAK,SAAQ,UAAUsC,gBAAetC,SAAQ,SAAS,CAAC,CAAC;AACpD,IAAAA,SAAQ,SAASwP,kBAAiB7P,SAAQK,QAAO;AAAA,EACnD;AACA,WAAS2P,UAASvO,OAAM;AACtB,IAAAA,QAAOA,SAAQ,CAAC;AAChB,IAAAA,MAAK,WAAWA,MAAK,YAAY,CAAC;AAClC,IAAAA,MAAK,SAASA,MAAK,UAAU,CAAC;AAC9B,WAAOA;AAAA,EACT;AACA,WAASwO,YAAWjQ,SAAQ;AAC1B,IAAAA,UAASA,WAAU,CAAC;AACpB,IAAAA,QAAO,OAAOgQ,UAAShQ,QAAO,IAAI;AAClC,IAAA+P,aAAY/P,OAAM;AAClB,WAAOA;AAAA,EACT;AACA,MAAMkQ,YAAW,oBAAI,IAAI;AACzB,MAAMC,cAAa,oBAAI,IAAI;AAC3B,WAASC,YAAW,UAAU,UAAU;AACtC,QAAI,OAAOF,UAAS,IAAI,QAAQ;AAChC,QAAI,CAAC,MAAM;AACT,aAAO,SAAS;AAChB,MAAAA,UAAS,IAAI,UAAU,IAAI;AAC3B,MAAAC,YAAW,IAAI,IAAI;AAAA,IACrB;AACA,WAAO;AAAA,EACT;AACA,MAAME,cAAa,CAACC,MAAK,KAAKpQ,SAAQ;AACpC,UAAM,OAAO8C,kBAAiB,KAAK9C,IAAG;AACtC,QAAI,SAAS,QAAW;AACtB,MAAAoQ,KAAI,IAAI,IAAI;AAAA,IACd;AAAA,EACF;AACA,MAAMC,UAAN,MAAa;AAAA,IACX,YAAYvQ,SAAQ;AAClB,WAAK,UAAUiQ,YAAWjQ,OAAM;AAChC,WAAK,cAAc,oBAAI,IAAI;AAC3B,WAAK,iBAAiB,oBAAI,IAAI;AAAA,IAChC;AAAA,IACA,IAAI,WAAW;AACb,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,IAAI,OAAO;AACT,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,IAAI,KAAK,MAAM;AACb,WAAK,QAAQ,OAAO;AAAA,IACtB;AAAA,IACA,IAAI,OAAO;AACT,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,IAAI,KAAKyB,OAAM;AACb,WAAK,QAAQ,OAAOuO,UAASvO,KAAI;AAAA,IACnC;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,IAAI,QAAQpB,UAAS;AACnB,WAAK,QAAQ,UAAUA;AAAA,IACzB;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,SAAS;AACP,YAAML,UAAS,KAAK;AACpB,WAAK,WAAW;AAChB,MAAA+P,aAAY/P,OAAM;AAAA,IACpB;AAAA,IACA,aAAa;AACX,WAAK,YAAY,MAAM;AACvB,WAAK,eAAe,MAAM;AAAA,IAC5B;AAAA,IACA,iBAAiB,aAAa;AAC5B,aAAOoQ;AAAA,QAAW;AAAA,QAChB,MAAM,CAAC;AAAA,UACL,YAAY;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MAAC;AAAA,IACN;AAAA,IACA,0BAA0B,aAAa,YAAY;AACjD,aAAOA;AAAA,QAAW,GAAG,0BAA0B;AAAA,QAC7C,MAAM;AAAA,UACJ;AAAA,YACE,YAAY,2BAA2B;AAAA,YACvC,eAAe;AAAA,UACjB;AAAA,UACA;AAAA,YACE,YAAY;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MAAC;AAAA,IACL;AAAA,IACA,wBAAwB,aAAahN,cAAa;AAChD,aAAOgN;AAAA,QAAW,GAAG,eAAehN;AAAA,QAClC,MAAM,CAAC;AAAA,UACL,YAAY,wBAAwBA;AAAA,UACpC,YAAY;AAAA,UACZ,YAAYA;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MAAC;AAAA,IACN;AAAA,IACA,gBAAgB,QAAQ;AACtB,YAAM6G,MAAK,OAAO;AAClB,YAAM,OAAO,KAAK;AAClB,aAAOmG;AAAA,QAAW,GAAG,eAAenG;AAAA,QAClC,MAAM,CAAC;AAAA,UACL,WAAWA;AAAA,UACX,GAAG,OAAO,0BAA0B,CAAC;AAAA,QACvC,CAAC;AAAA,MAAC;AAAA,IACN;AAAA,IACA,cAAc,WAAW,YAAY;AACnC,YAAM,cAAc,KAAK;AACzB,UAAI5G,SAAQ,YAAY,IAAI,SAAS;AACrC,UAAI,CAACA,UAAS,YAAY;AACxB,QAAAA,SAAQ,oBAAI,IAAI;AAChB,oBAAY,IAAI,WAAWA,MAAK;AAAA,MAClC;AACA,aAAOA;AAAA,IACT;AAAA,IACA,gBAAgB,WAAW,UAAU,YAAY;AAC/C,YAAM,EAAC,SAAAhD,UAAS,KAAI,IAAI;AACxB,YAAMgD,SAAQ,KAAK,cAAc,WAAW,UAAU;AACtD,YAAM,SAASA,OAAM,IAAI,QAAQ;AACjC,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AACA,YAAM,SAAS,oBAAI,IAAI;AACvB,eAAS,QAAQ,UAAQ;AACvB,YAAI,WAAW;AACb,iBAAO,IAAI,SAAS;AACpB,eAAK,QAAQ,CAAAnD,SAAOmQ,YAAW,QAAQ,WAAWnQ,IAAG,CAAC;AAAA,QACxD;AACA,aAAK,QAAQ,CAAAA,SAAOmQ,YAAW,QAAQhQ,UAASH,IAAG,CAAC;AACpD,aAAK,QAAQ,CAAAA,SAAOmQ,YAAW,QAAQlG,WAAU,IAAI,KAAK,CAAC,GAAGjK,IAAG,CAAC;AAClE,aAAK,QAAQ,CAAAA,SAAOmQ,YAAW,QAAQzQ,WAAUM,IAAG,CAAC;AACrD,aAAK,QAAQ,CAAAA,SAAOmQ,YAAW,QAAQnB,cAAahP,IAAG,CAAC;AAAA,MAC1D,CAAC;AACD,YAAM6L,SAAQ,MAAM,KAAK,MAAM;AAC/B,UAAIA,OAAM,WAAW,GAAG;AACtB,QAAAA,OAAM,KAAK,uBAAO,OAAO,IAAI,CAAC;AAAA,MAChC;AACA,UAAIoE,YAAW,IAAI,QAAQ,GAAG;AAC5B,QAAA9M,OAAM,IAAI,UAAU0I,MAAK;AAAA,MAC3B;AACA,aAAOA;AAAA,IACT;AAAA,IACA,oBAAoB;AAClB,YAAM,EAAC,SAAA1L,UAAS,KAAI,IAAI;AACxB,aAAO;AAAA,QACLA;AAAA,QACA8J,WAAU,IAAI,KAAK,CAAC;AAAA,QACpBvK,UAAS,SAAS,IAAI,KAAK,CAAC;AAAA,QAC5B,EAAC,KAAI;AAAA,QACLA;AAAA,QACAsP;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,QAAQ3L,QAAO,SAAS,WAAW,CAAC,EAAE,GAAG;AAC3D,YAAM,SAAS,EAAC,SAAS,KAAI;AAC7B,YAAM,EAAC,UAAU,YAAW,IAAIiN,aAAY,KAAK,gBAAgB,QAAQ,QAAQ;AACjF,UAAInQ,WAAU;AACd,UAAIoQ,aAAY,UAAUlN,MAAK,GAAG;AAChC,eAAO,UAAU;AACjB,kBAAUmN,YAAW,OAAO,IAAI,QAAQ,IAAI;AAC5C,cAAM,cAAc,KAAK,eAAe,QAAQ,SAAS,WAAW;AACpE,QAAArQ,WAAUsQ,gBAAe,UAAU,SAAS,WAAW;AAAA,MACzD;AACA,iBAAW,QAAQpN,QAAO;AACxB,eAAO,IAAI,IAAIlD,SAAQ,IAAI;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AAAA,IACA,eAAe,QAAQ,SAAS,WAAW,CAAC,EAAE,GAAG,oBAAoB;AACnE,YAAM,EAAC,SAAQ,IAAImQ,aAAY,KAAK,gBAAgB,QAAQ,QAAQ;AACpE,aAAOvQ,UAAS,OAAO,IACnB0Q,gBAAe,UAAU,SAAS,QAAW,kBAAkB,IAC/D;AAAA,IACN;AAAA,EACF;AACA,WAASH,aAAY,eAAe,QAAQ,UAAU;AACpD,QAAInN,SAAQ,cAAc,IAAI,MAAM;AACpC,QAAI,CAACA,QAAO;AACV,MAAAA,SAAQ,oBAAI,IAAI;AAChB,oBAAc,IAAI,QAAQA,MAAK;AAAA,IACjC;AACA,UAAM,WAAW,SAAS,KAAK;AAC/B,QAAI,SAASA,OAAM,IAAI,QAAQ;AAC/B,QAAI,CAAC,QAAQ;AACX,YAAM,WAAWuN,iBAAgB,QAAQ,QAAQ;AACjD,eAAS;AAAA,QACP;AAAA,QACA,aAAa,SAAS,OAAO,CAAAC,OAAK,CAACA,GAAE,YAAY,EAAE,SAAS,OAAO,CAAC;AAAA,MACtE;AACA,MAAAxN,OAAM,IAAI,UAAU,MAAM;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AACA,MAAMyN,eAAc,WAAS7Q,UAAS,KAAK,KACtC,OAAO,oBAAoB,KAAK,EAAE,OAAO,CAAC,KAAKC,SAAQ,OAAOwQ,YAAW,MAAMxQ,IAAG,CAAC,GAAG,KAAK;AAChG,WAASuQ,aAAY,OAAOlN,QAAO;AACjC,UAAM,EAAC,cAAc,YAAW,IAAIwN,cAAa,KAAK;AACtD,eAAW,QAAQxN,QAAO;AACxB,YAAM,aAAa,aAAa,IAAI;AACpC,YAAM,YAAY,YAAY,IAAI;AAClC,YAAM,SAAS,aAAa,eAAe,MAAM,IAAI;AACrD,UAAK,eAAemN,YAAW,KAAK,KAAKI,aAAY,KAAK,MACpD,aAAa1Q,SAAQ,KAAK,GAAI;AAClC,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI4Q,WAAU;AAEd,MAAMC,mBAAkB,CAAC,OAAO,UAAU,QAAQ,SAAS,WAAW;AACtE,WAASC,sBAAqB7I,WAAU,MAAM;AAC5C,WAAOA,cAAa,SAASA,cAAa,YAAa4I,iBAAgB,QAAQ5I,SAAQ,MAAM,MAAM,SAAS;AAAA,EAC9G;AACA,WAAS8I,eAAc,IAAIC,KAAI;AAC7B,WAAO,SAASxN,IAAG1C,IAAG;AACpB,aAAO0C,GAAE,EAAE,MAAM1C,GAAE,EAAE,IACjB0C,GAAEwN,GAAE,IAAIlQ,GAAEkQ,GAAE,IACZxN,GAAE,EAAE,IAAI1C,GAAE,EAAE;AAAA,IAClB;AAAA,EACF;AACA,WAASmQ,sBAAqB,SAAS;AACrC,UAAM,QAAQ,QAAQ;AACtB,UAAMC,oBAAmB,MAAM,QAAQ;AACvC,UAAM,cAAc,aAAa;AACjC,IAAAvI,UAASuI,qBAAoBA,kBAAiB,YAAY,CAAC,OAAO,GAAG,KAAK;AAAA,EAC5E;AACA,WAASC,qBAAoB,SAAS;AACpC,UAAM,QAAQ,QAAQ;AACtB,UAAMD,oBAAmB,MAAM,QAAQ;AACvC,IAAAvI,UAASuI,qBAAoBA,kBAAiB,YAAY,CAAC,OAAO,GAAG,KAAK;AAAA,EAC5E;AACA,WAASE,WAAU,MAAM;AACvB,QAAIzC,iBAAgB,KAAK,OAAO,SAAS,UAAU;AACjD,aAAO,SAAS,eAAe,IAAI;AAAA,IACrC,WAAW,QAAQ,KAAK,QAAQ;AAC9B,aAAO,KAAK,CAAC;AAAA,IACf;AACA,QAAI,QAAQ,KAAK,QAAQ;AACvB,aAAO,KAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT;AACA,MAAM0C,aAAY,CAAC;AACnB,MAAMC,YAAW,CAACxR,SAAQ;AACxB,UAAM,SAASsR,WAAUtR,IAAG;AAC5B,WAAO,OAAO,OAAOuR,UAAS,EAAE,OAAO,CAACE,OAAMA,GAAE,WAAW,MAAM,EAAE,IAAI;AAAA,EACzE;AACA,WAASC,iBAAgB,KAAK9O,QAAOW,OAAM;AACzC,UAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,eAAWvD,QAAO,MAAM;AACtB,YAAM,SAAS,CAACA;AAChB,UAAI,UAAU4C,QAAO;AACnB,cAAM,QAAQ,IAAI5C,IAAG;AACrB,eAAO,IAAIA,IAAG;AACd,YAAIuD,QAAO,KAAK,SAASX,QAAO;AAC9B,cAAI,SAASW,KAAI,IAAI;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAASoO,oBAAmB7L,IAAG,WAAW,aAAa,SAAS;AAC9D,QAAI,CAAC,eAAeA,GAAE,SAAS,YAAY;AACzC,aAAO;AAAA,IACT;AACA,QAAI,SAAS;AACX,aAAO;AAAA,IACT;AACA,WAAOA;AAAA,EACT;AACA,MAAM8L,SAAN,MAAY;AAAA,IACV,YAAY,MAAM,YAAY;AAC5B,YAAM9R,UAAS,KAAK,SAAS,IAAIuQ,QAAO,UAAU;AAClD,YAAM,gBAAgBiB,WAAU,IAAI;AACpC,YAAM,gBAAgBE,UAAS,aAAa;AAC5C,UAAI,eAAe;AACjB,cAAM,IAAI;AAAA,UACR,8CAA+C,cAAc,KAAK,oDAClB,cAAc,OAAO,KAAK;AAAA,QAC5E;AAAA,MACF;AACA,YAAMrR,WAAUL,QAAO,eAAeA,QAAO,kBAAkB,GAAG,KAAK,WAAW,CAAC;AACnF,WAAK,WAAW,KAAKA,QAAO,YAAY8O,iBAAgB,aAAa,GAAG;AACxE,WAAK,SAAS,aAAa9O,OAAM;AACjC,YAAM,UAAU,KAAK,SAAS,eAAe,eAAeK,SAAQ,WAAW;AAC/E,YAAM,SAAS,WAAW,QAAQ;AAClC,YAAMqI,UAAS,UAAU,OAAO;AAChC,YAAMC,SAAQ,UAAU,OAAO;AAC/B,WAAK,KAAKoJ,KAAI;AACd,WAAK,MAAM;AACX,WAAK,SAAS;AACd,WAAK,QAAQpJ;AACb,WAAK,SAASD;AACd,WAAK,WAAWrI;AAChB,WAAK,eAAe,KAAK;AACzB,WAAK,UAAU,CAAC;AAChB,WAAK,YAAY,CAAC;AAClB,WAAK,UAAU;AACf,WAAK,QAAQ,CAAC;AACd,WAAK,0BAA0B;AAC/B,WAAK,YAAY;AACjB,WAAK,UAAU,CAAC;AAChB,WAAK,aAAa;AAClB,WAAK,aAAa,CAAC;AACnB,WAAK,uBAAuB;AAC5B,WAAK,kBAAkB,CAAC;AACxB,WAAK,SAAS,CAAC;AACf,WAAK,WAAW,IAAI2O,eAAc;AAClC,WAAK,WAAW,CAAC;AACjB,WAAK,iBAAiB,CAAC;AACvB,WAAK,WAAW;AAChB,WAAK,sBAAsB;AAC3B,WAAK,WAAW;AAChB,WAAK,YAAYgD,UAAS,UAAQ,KAAK,OAAO,IAAI,GAAG3R,SAAQ,eAAe,CAAC;AAC7E,WAAK,eAAe,CAAC;AACrB,MAAAoR,WAAU,KAAK,EAAE,IAAI;AACrB,UAAI,CAAC,WAAW,CAAC,QAAQ;AACvB,gBAAQ,MAAM,mEAAmE;AACjF;AAAA,MACF;AACA,MAAAzS,UAAS,OAAO,MAAM,YAAYqS,qBAAoB;AACtD,MAAArS,UAAS,OAAO,MAAM,YAAYuS,oBAAmB;AACrD,WAAK,YAAY;AACjB,UAAI,KAAK,UAAU;AACjB,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA,IACA,IAAI,cAAc;AAChB,YAAM,EAAC,SAAS,EAAC,aAAa,oBAAmB,GAAG,OAAA5I,QAAO,QAAAD,SAAQ,aAAY,IAAI;AACnF,UAAI,CAAC1E,eAAc,WAAW,GAAG;AAC/B,eAAO;AAAA,MACT;AACA,UAAI,uBAAuB,cAAc;AACvC,eAAO;AAAA,MACT;AACA,aAAO0E,UAASC,SAAQD,UAAS;AAAA,IACnC;AAAA,IACA,IAAI,OAAO;AACT,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA,IACA,IAAI,KAAKjH,OAAM;AACb,WAAK,OAAO,OAAOA;AAAA,IACrB;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,QAAQpB,UAAS;AACnB,WAAK,OAAO,UAAUA;AAAA,IACxB;AAAA,IACA,cAAc;AACZ,WAAK,cAAc,YAAY;AAC/B,UAAI,KAAK,QAAQ,YAAY;AAC3B,aAAK,OAAO;AAAA,MACd,OAAO;AACL,QAAA4R,aAAY,MAAM,KAAK,QAAQ,gBAAgB;AAAA,MACjD;AACA,WAAK,WAAW;AAChB,WAAK,cAAc,WAAW;AAC9B,aAAO;AAAA,IACT;AAAA,IACA,QAAQ;AACN,MAAAC,aAAY,KAAK,QAAQ,KAAK,GAAG;AACjC,aAAO;AAAA,IACT;AAAA,IACA,OAAO;AACL,MAAAlT,UAAS,KAAK,IAAI;AAClB,aAAO;AAAA,IACT;AAAA,IACA,OAAO2J,QAAOD,SAAQ;AACpB,UAAI,CAAC1J,UAAS,QAAQ,IAAI,GAAG;AAC3B,aAAK,QAAQ2J,QAAOD,OAAM;AAAA,MAC5B,OAAO;AACL,aAAK,oBAAoB,EAAC,OAAAC,QAAO,QAAAD,QAAM;AAAA,MACzC;AAAA,IACF;AAAA,IACA,QAAQC,QAAOD,SAAQ;AACrB,YAAMrI,WAAU,KAAK;AACrB,YAAM,SAAS,KAAK;AACpB,YAAM,cAAcA,SAAQ,uBAAuB,KAAK;AACxD,YAAM,UAAU,KAAK,SAAS,eAAe,QAAQsI,QAAOD,SAAQ,WAAW;AAC/E,YAAM,WAAWrI,SAAQ,oBAAoB,KAAK,SAAS,oBAAoB;AAC/E,YAAM,OAAO,KAAK,QAAQ,WAAW;AACrC,WAAK,QAAQ,QAAQ;AACrB,WAAK,SAAS,QAAQ;AACtB,WAAK,eAAe,KAAK;AACzB,UAAI,CAAC4R,aAAY,MAAM,UAAU,IAAI,GAAG;AACtC;AAAA,MACF;AACA,WAAK,cAAc,UAAU,EAAC,MAAM,QAAO,CAAC;AAC5C,MAAAlJ,UAAS1I,SAAQ,UAAU,CAAC,MAAM,OAAO,GAAG,IAAI;AAChD,UAAI,KAAK,UAAU;AACjB,YAAI,KAAK,UAAU,IAAI,GAAG;AACxB,eAAK,OAAO;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,IACA,sBAAsB;AACpB,YAAMA,WAAU,KAAK;AACrB,YAAM,gBAAgBA,SAAQ,UAAU,CAAC;AACzC,MAAAwH,MAAK,eAAe,CAAC,aAAa,WAAW;AAC3C,oBAAY,KAAK;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IACA,sBAAsB;AACpB,YAAMxH,WAAU,KAAK;AACrB,YAAM,YAAYA,SAAQ;AAC1B,YAAM6B,UAAS,KAAK;AACpB,YAAM,UAAU,OAAO,KAAKA,OAAM,EAAE,OAAO,CAAC,KAAK+H,QAAO;AACtD,YAAIA,GAAE,IAAI;AACV,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AACL,UAAI,QAAQ,CAAC;AACb,UAAI,WAAW;AACb,gBAAQ,MAAM;AAAA,UACZ,OAAO,KAAK,SAAS,EAAE,IAAI,CAACA,QAAO;AACjC,kBAAM,eAAe,UAAUA,GAAE;AACjC,kBAAM,OAAO2F,eAAc3F,KAAI,YAAY;AAC3C,kBAAM,WAAW,SAAS;AAC1B,kBAAM,eAAe,SAAS;AAC9B,mBAAO;AAAA,cACL,SAAS;AAAA,cACT,WAAW,WAAW,cAAc,eAAe,WAAW;AAAA,cAC9D,OAAO,WAAW,iBAAiB,eAAe,aAAa;AAAA,YACjE;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AACA,MAAApC,MAAK,OAAO,CAAC,SAAS;AACpB,cAAM,eAAe,KAAK;AAC1B,cAAMoC,MAAK,aAAa;AACxB,cAAM,OAAO2F,eAAc3F,KAAI,YAAY;AAC3C,cAAM,YAAYtH,gBAAe,aAAa,MAAM,KAAK,KAAK;AAC9D,YAAI,aAAa,aAAa,UAAauO,sBAAqB,aAAa,UAAU,IAAI,MAAMA,sBAAqB,KAAK,SAAS,GAAG;AACrI,uBAAa,WAAW,KAAK;AAAA,QAC/B;AACA,gBAAQjH,GAAE,IAAI;AACd,YAAIxJ,SAAQ;AACZ,YAAIwJ,OAAM/H,WAAUA,QAAO+H,GAAE,EAAE,SAAS,WAAW;AACjD,UAAAxJ,SAAQyB,QAAO+H,GAAE;AAAA,QACnB,OAAO;AACL,gBAAM,aAAaM,UAAS,SAAS,SAAS;AAC9C,UAAA9J,SAAQ,IAAI,WAAW;AAAA,YACrB,IAAAwJ;AAAA,YACA,MAAM;AAAA,YACN,KAAK,KAAK;AAAA,YACV,OAAO;AAAA,UACT,CAAC;AACD,UAAA/H,QAAOzB,OAAM,EAAE,IAAIA;AAAA,QACrB;AACA,QAAAA,OAAM,KAAK,cAAcJ,QAAO;AAAA,MAClC,CAAC;AACD,MAAAwH,MAAK,SAAS,CAAC,YAAYoC,QAAO;AAChC,YAAI,CAAC,YAAY;AACf,iBAAO/H,QAAO+H,GAAE;AAAA,QAClB;AAAA,MACF,CAAC;AACD,MAAApC,MAAK3F,SAAQ,CAACzB,WAAU;AACtB,QAAA2L,SAAQ,UAAU,MAAM3L,QAAOA,OAAM,OAAO;AAC5C,QAAA2L,SAAQ,OAAO,MAAM3L,MAAK;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IACA,kBAAkB;AAChB,YAAM,WAAW,KAAK;AACtB,YAAM,UAAU,KAAK,KAAK,SAAS;AACnC,YAAM,UAAU,SAAS;AACzB,eAAS,KAAK,CAACmD,IAAG1C,OAAM0C,GAAE,QAAQ1C,GAAE,KAAK;AACzC,UAAI,UAAU,SAAS;AACrB,iBAASpC,KAAI,SAASA,KAAI,SAAS,EAAEA,IAAG;AACtC,eAAK,oBAAoBA,EAAC;AAAA,QAC5B;AACA,iBAAS,OAAO,SAAS,UAAU,OAAO;AAAA,MAC5C;AACA,WAAK,kBAAkB,SAAS,MAAM,CAAC,EAAE,KAAKqS,eAAc,SAAS,OAAO,CAAC;AAAA,IAC/E;AAAA,IACA,8BAA8B;AAC5B,YAAM,EAAC,WAAW,UAAU,MAAM,EAAC,SAAQ,EAAC,IAAI;AAChD,UAAI,SAAS,SAAS,SAAS,QAAQ;AACrC,eAAO,KAAK;AAAA,MACd;AACA,eAAS,QAAQ,CAAC,MAAMnP,WAAU;AAChC,YAAI,SAAS,OAAO,CAAAnB,OAAKA,OAAM,KAAK,QAAQ,EAAE,WAAW,GAAG;AAC1D,eAAK,oBAAoBmB,MAAK;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,2BAA2B;AACzB,YAAM,iBAAiB,CAAC;AACxB,YAAM,WAAW,KAAK,KAAK;AAC3B,UAAIlD,IAAG;AACP,WAAK,4BAA4B;AACjC,WAAKA,KAAI,GAAG,OAAO,SAAS,QAAQA,KAAI,MAAMA,MAAK;AACjD,cAAM,UAAU,SAASA,EAAC;AAC1B,YAAI,OAAO,KAAK,eAAeA,EAAC;AAChC,cAAM,OAAO,QAAQ,QAAQ,KAAK,OAAO;AACzC,YAAI,KAAK,QAAQ,KAAK,SAAS,MAAM;AACnC,eAAK,oBAAoBA,EAAC;AAC1B,iBAAO,KAAK,eAAeA,EAAC;AAAA,QAC9B;AACA,aAAK,OAAO;AACZ,aAAK,YAAY,QAAQ,aAAa0Q,cAAa,MAAM,KAAK,OAAO;AACrE,aAAK,QAAQ,QAAQ,SAAS;AAC9B,aAAK,QAAQ1Q;AACb,aAAK,QAAQ,KAAK,QAAQ;AAC1B,aAAK,UAAU,KAAK,iBAAiBA,EAAC;AACtC,YAAI,KAAK,YAAY;AACnB,eAAK,WAAW,YAAYA,EAAC;AAC7B,eAAK,WAAW,WAAW;AAAA,QAC7B,OAAO;AACL,gBAAM,kBAAkByL,UAAS,cAAc,IAAI;AACnD,gBAAM,EAAC,oBAAoB,gBAAe,IAAI3K,UAAS,SAAS,IAAI;AACpE,iBAAO,OAAO,gBAAgB,WAAW;AAAA,YACvC,iBAAiB2K,UAAS,WAAW,eAAe;AAAA,YACpD,oBAAoB,sBAAsBA,UAAS,WAAW,kBAAkB;AAAA,UAClF,CAAC;AACD,eAAK,aAAa,IAAI,gBAAgB,MAAMzL,EAAC;AAC7C,yBAAe,KAAK,KAAK,UAAU;AAAA,QACrC;AAAA,MACF;AACA,WAAK,gBAAgB;AACrB,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB;AACf,MAAA+I,MAAK,KAAK,KAAK,UAAU,CAAC,SAAS,iBAAiB;AAClD,aAAK,eAAe,YAAY,EAAE,WAAW,MAAM;AAAA,MACrD,GAAG,IAAI;AAAA,IACT;AAAA,IACA,QAAQ;AACN,WAAK,eAAe;AACpB,WAAK,cAAc,OAAO;AAAA,IAC5B;AAAA,IACA,OAAO,MAAM;AACX,YAAM7H,UAAS,KAAK;AACpB,MAAAA,QAAO,OAAO;AACd,YAAMK,WAAU,KAAK,WAAWL,QAAO,eAAeA,QAAO,kBAAkB,GAAG,KAAK,WAAW,CAAC;AACnG,YAAM,gBAAgB,KAAK,sBAAsB,CAACK,SAAQ;AAC1D,WAAK,cAAc;AACnB,WAAK,oBAAoB;AACzB,WAAK,qBAAqB;AAC1B,WAAK,SAAS,WAAW;AACzB,UAAI,KAAK,cAAc,gBAAgB,EAAC,MAAM,YAAY,KAAI,CAAC,MAAM,OAAO;AAC1E;AAAA,MACF;AACA,YAAM,iBAAiB,KAAK,yBAAyB;AACrD,WAAK,cAAc,sBAAsB;AACzC,UAAI,aAAa;AACjB,eAASvB,KAAI,GAAG,OAAO,KAAK,KAAK,SAAS,QAAQA,KAAI,MAAMA,MAAK;AAC/D,cAAM,EAAC,WAAU,IAAI,KAAK,eAAeA,EAAC;AAC1C,cAAM,QAAQ,CAAC,iBAAiB,eAAe,QAAQ,UAAU,MAAM;AACvE,mBAAW,sBAAsB,KAAK;AACtC,qBAAa,KAAK,IAAI,CAAC,WAAW,eAAe,GAAG,UAAU;AAAA,MAChE;AACA,mBAAa,KAAK,cAAcuB,SAAQ,OAAO,cAAc,aAAa;AAC1E,WAAK,cAAc,UAAU;AAC7B,UAAI,CAAC,eAAe;AAClB,QAAAwH,MAAK,gBAAgB,CAAC,eAAe;AACnC,qBAAW,MAAM;AAAA,QACnB,CAAC;AAAA,MACH;AACA,WAAK,gBAAgB,IAAI;AACzB,WAAK,cAAc,eAAe,EAAC,KAAI,CAAC;AACxC,WAAK,QAAQ,KAAKsJ,eAAc,KAAK,MAAM,CAAC;AAC5C,YAAM,EAAC,SAAS,WAAU,IAAI;AAC9B,UAAI,YAAY;AACd,aAAK,cAAc,YAAY,IAAI;AAAA,MACrC,WAAW,QAAQ,QAAQ;AACzB,aAAK,mBAAmB,SAAS,SAAS,IAAI;AAAA,MAChD;AACA,WAAK,OAAO;AAAA,IACd;AAAA,IACA,gBAAgB;AACd,MAAAtJ,MAAK,KAAK,QAAQ,CAACpH,WAAU;AAC3B,QAAA2L,SAAQ,UAAU,MAAM3L,MAAK;AAAA,MAC/B,CAAC;AACD,WAAK,oBAAoB;AACzB,WAAK,oBAAoB;AAAA,IAC3B;AAAA,IACA,sBAAsB;AACpB,YAAMJ,WAAU,KAAK;AACrB,YAAM,iBAAiB,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;AAC3D,YAAM,YAAY,IAAI,IAAIA,SAAQ,MAAM;AACxC,UAAI,CAAC8R,WAAU,gBAAgB,SAAS,KAAK,CAAC,CAAC,KAAK,yBAAyB9R,SAAQ,YAAY;AAC/F,aAAK,aAAa;AAClB,aAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAAA,IACA,uBAAuB;AACrB,YAAM,EAAC,eAAc,IAAI;AACzB,YAAM,UAAU,KAAK,uBAAuB,KAAK,CAAC;AAClD,iBAAW,EAAC,QAAQ,OAAAyC,QAAO,MAAK,KAAK,SAAS;AAC5C,cAAMW,QAAO,WAAW,oBAAoB,CAAC,QAAQ;AACrD,QAAAmO,iBAAgB,gBAAgB9O,QAAOW,KAAI;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,yBAAyB;AACvB,YAAM,eAAe,KAAK;AAC1B,UAAI,CAAC,gBAAgB,CAAC,aAAa,QAAQ;AACzC;AAAA,MACF;AACA,WAAK,eAAe,CAAC;AACrB,YAAM,eAAe,KAAK,KAAK,SAAS;AACxC,YAAM,UAAU,CAAC,QAAQ,IAAI;AAAA,QAC3B,aACG,OAAO,CAAAkO,OAAKA,GAAE,CAAC,MAAM,GAAG,EACxB,IAAI,CAACA,IAAG7S,OAAMA,KAAI,MAAM6S,GAAE,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,MAClD;AACA,YAAM,YAAY,QAAQ,CAAC;AAC3B,eAAS7S,KAAI,GAAGA,KAAI,cAAcA,MAAK;AACrC,YAAI,CAACqT,WAAU,WAAW,QAAQrT,EAAC,CAAC,GAAG;AACrC;AAAA,QACF;AAAA,MACF;AACA,aAAO,MAAM,KAAK,SAAS,EACxB,IAAI,CAAA6S,OAAKA,GAAE,MAAM,GAAG,CAAC,EACrB,IAAI,CAAA/N,QAAM,EAAC,QAAQA,GAAE,CAAC,GAAG,OAAO,CAACA,GAAE,CAAC,GAAG,OAAO,CAACA,GAAE,CAAC,EAAC,EAAE;AAAA,IAC1D;AAAA,IACA,cAAc,YAAY;AACxB,UAAI,KAAK,cAAc,gBAAgB,EAAC,YAAY,KAAI,CAAC,MAAM,OAAO;AACpE;AAAA,MACF;AACA,MAAAwI,SAAQ,OAAO,MAAM,KAAK,OAAO,KAAK,QAAQ,UAAU;AACxD,YAAM,OAAO,KAAK;AAClB,YAAM,SAAS,KAAK,SAAS,KAAK,KAAK,UAAU;AACjD,WAAK,UAAU,CAAC;AAChB,MAAAvE,MAAK,KAAK,OAAO,CAAC,QAAQ;AACxB,YAAI,UAAU,IAAI,aAAa,aAAa;AAC1C;AAAA,QACF;AACA,YAAI,IAAI,WAAW;AACjB,cAAI,UAAU;AAAA,QAChB;AACA,aAAK,QAAQ,KAAK,GAAG,IAAI,QAAQ,CAAC;AAAA,MACpC,GAAG,IAAI;AACP,WAAK,QAAQ,QAAQ,CAAC,MAAM7F,WAAU;AACpC,aAAK,OAAOA;AAAA,MACd,CAAC;AACD,WAAK,cAAc,aAAa;AAAA,IAClC;AAAA,IACA,gBAAgB,MAAM;AACpB,UAAI,KAAK,cAAc,wBAAwB,EAAC,MAAM,YAAY,KAAI,CAAC,MAAM,OAAO;AAClF;AAAA,MACF;AACA,eAASlD,KAAI,GAAG,OAAO,KAAK,KAAK,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/D,aAAK,eAAeA,EAAC,EAAE,WAAW,UAAU;AAAA,MAC9C;AACA,eAASA,KAAI,GAAG,OAAO,KAAK,KAAK,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/D,aAAK,eAAeA,IAAG4R,YAAW,IAAI,IAAI,KAAK,EAAC,cAAc5R,GAAC,CAAC,IAAI,IAAI;AAAA,MAC1E;AACA,WAAK,cAAc,uBAAuB,EAAC,KAAI,CAAC;AAAA,IAClD;AAAA,IACA,eAAekD,QAAO,MAAM;AAC1B,YAAM,OAAO,KAAK,eAAeA,MAAK;AACtC,YAAM,OAAO,EAAC,MAAM,OAAAA,QAAO,MAAM,YAAY,KAAI;AACjD,UAAI,KAAK,cAAc,uBAAuB,IAAI,MAAM,OAAO;AAC7D;AAAA,MACF;AACA,WAAK,WAAW,QAAQ,IAAI;AAC5B,WAAK,aAAa;AAClB,WAAK,cAAc,sBAAsB,IAAI;AAAA,IAC/C;AAAA,IACA,SAAS;AACP,UAAI,KAAK,cAAc,gBAAgB,EAAC,YAAY,KAAI,CAAC,MAAM,OAAO;AACpE;AAAA,MACF;AACA,UAAIhD,UAAS,IAAI,IAAI,GAAG;AACtB,YAAI,KAAK,YAAY,CAACA,UAAS,QAAQ,IAAI,GAAG;AAC5C,UAAAA,UAAS,MAAM,IAAI;AAAA,QACrB;AAAA,MACF,OAAO;AACL,aAAK,KAAK;AACV,QAAAqS,sBAAqB,EAAC,OAAO,KAAI,CAAC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,OAAO;AACL,UAAIvS;AACJ,UAAI,KAAK,mBAAmB;AAC1B,cAAM,EAAC,OAAA6J,QAAO,QAAAD,QAAM,IAAI,KAAK;AAC7B,aAAK,QAAQC,QAAOD,OAAM;AAC1B,aAAK,oBAAoB;AAAA,MAC3B;AACA,WAAK,MAAM;AACX,UAAI,KAAK,SAAS,KAAK,KAAK,UAAU,GAAG;AACvC;AAAA,MACF;AACA,UAAI,KAAK,cAAc,cAAc,EAAC,YAAY,KAAI,CAAC,MAAM,OAAO;AAClE;AAAA,MACF;AACA,YAAM,SAAS,KAAK;AACpB,WAAK5J,KAAI,GAAGA,KAAI,OAAO,UAAU,OAAOA,EAAC,EAAE,KAAK,GAAG,EAAEA,IAAG;AACtD,eAAOA,EAAC,EAAE,KAAK,KAAK,SAAS;AAAA,MAC/B;AACA,WAAK,cAAc;AACnB,aAAOA,KAAI,OAAO,QAAQ,EAAEA,IAAG;AAC7B,eAAOA,EAAC,EAAE,KAAK,KAAK,SAAS;AAAA,MAC/B;AACA,WAAK,cAAc,WAAW;AAAA,IAChC;AAAA,IACA,uBAAuB,eAAe;AACpC,YAAM,WAAW,KAAK;AACtB,YAAM,SAAS,CAAC;AAChB,UAAIA,IAAG;AACP,WAAKA,KAAI,GAAG,OAAO,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACjD,cAAM,OAAO,SAASA,EAAC;AACvB,YAAI,CAAC,iBAAiB,KAAK,SAAS;AAClC,iBAAO,KAAK,IAAI;AAAA,QAClB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,+BAA+B;AAC7B,aAAO,KAAK,uBAAuB,IAAI;AAAA,IACzC;AAAA,IACA,gBAAgB;AACd,UAAI,KAAK,cAAc,sBAAsB,EAAC,YAAY,KAAI,CAAC,MAAM,OAAO;AAC1E;AAAA,MACF;AACA,YAAM,WAAW,KAAK,6BAA6B;AACnD,eAASA,KAAI,SAAS,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AAC7C,aAAK,aAAa,SAASA,EAAC,CAAC;AAAA,MAC/B;AACA,WAAK,cAAc,mBAAmB;AAAA,IACxC;AAAA,IACA,aAAa,MAAM;AACjB,YAAM,MAAM,KAAK;AACjB,YAAM,OAAO,KAAK;AAClB,YAAM,UAAU,CAAC,KAAK;AACtB,YAAM,OAAO,KAAK;AAClB,YAAM,OAAO;AAAA,QACX;AAAA,QACA,OAAO,KAAK;AAAA,QACZ,YAAY;AAAA,MACd;AACA,UAAI,KAAK,cAAc,qBAAqB,IAAI,MAAM,OAAO;AAC3D;AAAA,MACF;AACA,UAAI,SAAS;AACX,QAAA8K,UAAS,KAAK;AAAA,UACZ,MAAM,KAAK,SAAS,QAAQ,IAAI,KAAK,OAAO,KAAK;AAAA,UACjD,OAAO,KAAK,UAAU,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAAA,UAC7D,KAAK,KAAK,QAAQ,QAAQ,IAAI,KAAK,MAAM,KAAK;AAAA,UAC9C,QAAQ,KAAK,WAAW,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK;AAAA,QACnE,CAAC;AAAA,MACH;AACA,WAAK,WAAW,KAAK;AACrB,UAAI,SAAS;AACX,QAAAE,YAAW,GAAG;AAAA,MAChB;AACA,WAAK,aAAa;AAClB,WAAK,cAAc,oBAAoB,IAAI;AAAA,IAC7C;AAAA,IACA,cAAczE,QAAO;AACnB,aAAO+F,gBAAe/F,QAAO,KAAK,WAAW,KAAK,WAAW;AAAA,IAC/D;AAAA,IACA,0BAA0BW,IAAG,MAAM3F,UAAS,kBAAkB;AAC5D,YAAM,SAASsL,aAAY,MAAM,IAAI;AACrC,UAAI,OAAO,WAAW,YAAY;AAChC,eAAO,OAAO,MAAM3F,IAAG3F,UAAS,gBAAgB;AAAA,MAClD;AACA,aAAO,CAAC;AAAA,IACV;AAAA,IACA,eAAe,cAAc;AAC3B,YAAM,UAAU,KAAK,KAAK,SAAS,YAAY;AAC/C,YAAM,WAAW,KAAK;AACtB,UAAI,OAAO,SAAS,OAAO,CAAAQ,OAAKA,MAAKA,GAAE,aAAa,OAAO,EAAE,IAAI;AACjE,UAAI,CAAC,MAAM;AACT,eAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM,CAAC;AAAA,UACP,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,SAAS;AAAA,UACT,OAAO,WAAW,QAAQ,SAAS;AAAA,UACnC,OAAO;AAAA,UACP,UAAU;AAAA,UACV,SAAS,CAAC;AAAA,UACV,SAAS;AAAA,QACX;AACA,iBAAS,KAAK,IAAI;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AAAA,IACA,aAAa;AACX,aAAO,KAAK,aAAa,KAAK,WAAWuB,eAAc,MAAM,EAAC,OAAO,MAAM,MAAM,QAAO,CAAC;AAAA,IAC3F;AAAA,IACA,yBAAyB;AACvB,aAAO,KAAK,6BAA6B,EAAE;AAAA,IAC7C;AAAA,IACA,iBAAiB,cAAc;AAC7B,YAAM,UAAU,KAAK,KAAK,SAAS,YAAY;AAC/C,UAAI,CAAC,SAAS;AACZ,eAAO;AAAA,MACT;AACA,YAAM,OAAO,KAAK,eAAe,YAAY;AAC7C,aAAO,OAAO,KAAK,WAAW,YAAY,CAAC,KAAK,SAAS,CAAC,QAAQ;AAAA,IACpE;AAAA,IACA,qBAAqB,cAAcgQ,UAAS;AAC1C,YAAM,OAAO,KAAK,eAAe,YAAY;AAC7C,WAAK,SAAS,CAACA;AAAA,IACjB;AAAA,IACA,qBAAqBpQ,QAAO;AAC1B,WAAK,eAAeA,MAAK,IAAI,CAAC,KAAK,eAAeA,MAAK;AAAA,IACzD;AAAA,IACA,kBAAkBA,QAAO;AACvB,aAAO,CAAC,KAAK,eAAeA,MAAK;AAAA,IACnC;AAAA,IACA,kBAAkB,cAAc,WAAWoQ,UAAS;AAClD,YAAM,OAAOA,WAAU,SAAS;AAChC,YAAM,OAAO,KAAK,eAAe,YAAY;AAC7C,YAAM,QAAQ,KAAK,WAAW,mBAAmB,QAAW,IAAI;AAChE,UAAI9O,SAAQ,SAAS,GAAG;AACtB,aAAK,KAAK,SAAS,EAAE,SAAS,CAAC8O;AAC/B,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,qBAAqB,cAAcA,QAAO;AAC/C,cAAM,OAAO,MAAM,EAAC,SAAAA,SAAO,CAAC;AAC5B,aAAK,OAAO,CAAC,QAAQ,IAAI,iBAAiB,eAAe,OAAO,MAAS;AAAA,MAC3E;AAAA,IACF;AAAA,IACA,KAAK,cAAc,WAAW;AAC5B,WAAK,kBAAkB,cAAc,WAAW,KAAK;AAAA,IACvD;AAAA,IACA,KAAK,cAAc,WAAW;AAC5B,WAAK,kBAAkB,cAAc,WAAW,IAAI;AAAA,IACtD;AAAA,IACA,oBAAoB,cAAc;AAChC,YAAM,OAAO,KAAK,UAAU,YAAY;AACxC,UAAI,QAAQ,KAAK,YAAY;AAC3B,aAAK,WAAW,SAAS;AAAA,MAC3B;AACA,aAAO,KAAK,UAAU,YAAY;AAAA,IACpC;AAAA,IACA,QAAQ;AACN,UAAItT,IAAG;AACP,WAAK,KAAK;AACV,MAAAE,UAAS,OAAO,IAAI;AACpB,WAAKF,KAAI,GAAG,OAAO,KAAK,KAAK,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC3D,aAAK,oBAAoBA,EAAC;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,UAAU;AACR,WAAK,cAAc,eAAe;AAClC,YAAM,EAAC,QAAQ,IAAG,IAAI;AACtB,WAAK,MAAM;AACX,WAAK,OAAO,WAAW;AACvB,UAAI,QAAQ;AACV,aAAK,aAAa;AAClB,QAAAoT,aAAY,QAAQ,GAAG;AACvB,aAAK,SAAS,eAAe,GAAG;AAChC,aAAK,SAAS;AACd,aAAK,MAAM;AAAA,MACb;AACA,WAAK,cAAc,SAAS;AAC5B,aAAOT,WAAU,KAAK,EAAE;AACxB,WAAK,cAAc,cAAc;AAAA,IACnC;AAAA,IACA,iBAAiB,MAAM;AACrB,aAAO,KAAK,OAAO,UAAU,GAAG,IAAI;AAAA,IACtC;AAAA,IACA,aAAa;AACX,WAAK,eAAe;AACpB,UAAI,KAAK,QAAQ,YAAY;AAC3B,aAAK,qBAAqB;AAAA,MAC5B,OAAO;AACL,aAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAAA,IACA,iBAAiB;AACf,YAAM,YAAY,KAAK;AACvB,YAAM,WAAW,KAAK;AACtB,YAAM,OAAO,CAAC,MAAMY,cAAa;AAC/B,iBAAS,iBAAiB,MAAM,MAAMA,SAAQ;AAC9C,kBAAU,IAAI,IAAIA;AAAA,MACpB;AACA,YAAM,WAAW,CAACrM,IAAGnF,IAAGC,OAAM;AAC5B,QAAAkF,GAAE,UAAUnF;AACZ,QAAAmF,GAAE,UAAUlF;AACZ,aAAK,cAAckF,EAAC;AAAA,MACtB;AACA,MAAA6B,MAAK,KAAK,QAAQ,QAAQ,CAAC,SAAS,KAAK,MAAM,QAAQ,CAAC;AAAA,IAC1D;AAAA,IACA,uBAAuB;AACrB,UAAI,CAAC,KAAK,sBAAsB;AAC9B,aAAK,uBAAuB,CAAC;AAAA,MAC/B;AACA,YAAM,YAAY,KAAK;AACvB,YAAM,WAAW,KAAK;AACtB,YAAM,OAAO,CAAC,MAAMwK,cAAa;AAC/B,iBAAS,iBAAiB,MAAM,MAAMA,SAAQ;AAC9C,kBAAU,IAAI,IAAIA;AAAA,MACpB;AACA,YAAM,UAAU,CAAC,MAAMA,cAAa;AAClC,YAAI,UAAU,IAAI,GAAG;AACnB,mBAAS,oBAAoB,MAAM,MAAMA,SAAQ;AACjD,iBAAO,UAAU,IAAI;AAAA,QACvB;AAAA,MACF;AACA,YAAM,WAAW,CAAC1J,QAAOD,YAAW;AAClC,YAAI,KAAK,QAAQ;AACf,eAAK,OAAOC,QAAOD,OAAM;AAAA,QAC3B;AAAA,MACF;AACA,UAAI;AACJ,YAAM,WAAW,MAAM;AACrB,gBAAQ,UAAU,QAAQ;AAC1B,aAAK,WAAW;AAChB,aAAK,OAAO;AACZ,aAAK,UAAU,QAAQ;AACvB,aAAK,UAAU,QAAQ;AAAA,MACzB;AACA,iBAAW,MAAM;AACf,aAAK,WAAW;AAChB,gBAAQ,UAAU,QAAQ;AAC1B,aAAK,MAAM;AACX,aAAK,QAAQ,GAAG,CAAC;AACjB,aAAK,UAAU,QAAQ;AAAA,MACzB;AACA,UAAI,SAAS,WAAW,KAAK,MAAM,GAAG;AACpC,iBAAS;AAAA,MACX,OAAO;AACL,iBAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,eAAe;AACb,MAAAb,MAAK,KAAK,YAAY,CAAC,UAAU,SAAS;AACxC,aAAK,SAAS,oBAAoB,MAAM,MAAM,QAAQ;AAAA,MACxD,CAAC;AACD,WAAK,aAAa,CAAC;AACnB,MAAAA,MAAK,KAAK,sBAAsB,CAAC,UAAU,SAAS;AAClD,aAAK,SAAS,oBAAoB,MAAM,MAAM,QAAQ;AAAA,MACxD,CAAC;AACD,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IACA,iBAAiB,OAAO,MAAM,SAAS;AACrC,YAAM,SAAS,UAAU,QAAQ;AACjC,UAAI,MAAM,MAAM/I,IAAG;AACnB,UAAI,SAAS,WAAW;AACtB,eAAO,KAAK,eAAe,MAAM,CAAC,EAAE,YAAY;AAChD,aAAK,WAAW,MAAM,SAAS,mBAAmB,EAAE;AAAA,MACtD;AACA,WAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,eAAO,MAAMA,EAAC;AACd,cAAM,aAAa,QAAQ,KAAK,eAAe,KAAK,YAAY,EAAE;AAClE,YAAI,YAAY;AACd,qBAAW,SAAS,YAAY,EAAE,KAAK,SAAS,KAAK,cAAc,KAAK,KAAK;AAAA,QAC/E;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB;AAClB,aAAO,KAAK,WAAW,CAAC;AAAA,IAC1B;AAAA,IACA,kBAAkB,gBAAgB;AAChC,YAAM,aAAa,KAAK,WAAW,CAAC;AACpC,YAAMqE,UAAS,eAAe,IAAI,CAAC,EAAC,cAAc,OAAAnB,OAAK,MAAM;AAC3D,cAAM,OAAO,KAAK,eAAe,YAAY;AAC7C,YAAI,CAAC,MAAM;AACT,gBAAM,IAAI,MAAM,+BAA+B,YAAY;AAAA,QAC7D;AACA,eAAO;AAAA,UACL;AAAA,UACA,SAAS,KAAK,KAAKA,MAAK;AAAA,UACxB,OAAAA;AAAA,QACF;AAAA,MACF,CAAC;AACD,YAAM,UAAU,CAACsQ,gBAAenP,SAAQ,UAAU;AAClD,UAAI,SAAS;AACX,aAAK,UAAUA;AACf,aAAK,aAAa;AAClB,aAAK,mBAAmBA,SAAQ,UAAU;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,cAAc,MAAM,MAAM8L,SAAQ;AAChC,aAAO,KAAK,SAAS,OAAO,MAAM,MAAM,MAAMA,OAAM;AAAA,IACtD;AAAA,IACA,mBAAmB9L,SAAQ,YAAY,QAAQ;AAC7C,YAAM,eAAe,KAAK,QAAQ;AAClC,YAAM,OAAO,CAACS,IAAG1C,OAAM0C,GAAE,OAAO,CAAA/C,OAAK,CAACK,GAAE,KAAK,CAAAJ,OAAKD,GAAE,iBAAiBC,GAAE,gBAAgBD,GAAE,UAAUC,GAAE,KAAK,CAAC;AAC3G,YAAM,cAAc,KAAK,YAAYqC,OAAM;AAC3C,YAAM,YAAY,SAASA,UAAS,KAAKA,SAAQ,UAAU;AAC3D,UAAI,YAAY,QAAQ;AACtB,aAAK,iBAAiB,aAAa,aAAa,MAAM,KAAK;AAAA,MAC7D;AACA,UAAI,UAAU,UAAU,aAAa,MAAM;AACzC,aAAK,iBAAiB,WAAW,aAAa,MAAM,IAAI;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,cAAc6C,IAAG,QAAQ;AACvB,YAAM,OAAO;AAAA,QACX,OAAOA;AAAA,QACP;AAAA,QACA,YAAY;AAAA,QACZ,aAAa,KAAK,cAAcA,EAAC;AAAA,MACnC;AACA,YAAM,cAAc,CAAC,YAAY,OAAO,QAAQ,UAAU,KAAK,QAAQ,QAAQ,SAASA,GAAE,OAAO,IAAI;AACrG,UAAI,KAAK,cAAc,eAAe,MAAM,WAAW,MAAM,OAAO;AAClE;AAAA,MACF;AACA,YAAM,UAAU,KAAK,aAAaA,IAAG,QAAQ,KAAK,WAAW;AAC7D,WAAK,aAAa;AAClB,WAAK,cAAc,cAAc,MAAM,WAAW;AAClD,UAAI,WAAW,KAAK,SAAS;AAC3B,aAAK,OAAO;AAAA,MACd;AACA,aAAO;AAAA,IACT;AAAA,IACA,aAAaA,IAAG,QAAQ,aAAa;AACnC,YAAM,EAAC,SAAS,aAAa,CAAC,GAAG,SAAA3F,SAAO,IAAI;AAC5C,YAAM,mBAAmB;AACzB,YAAM8C,UAAS,KAAK,mBAAmB6C,IAAG,YAAY,aAAa,gBAAgB;AACnF,YAAM,UAAUuM,eAAcvM,EAAC;AAC/B,YAAM,YAAY6L,oBAAmB7L,IAAG,KAAK,YAAY,aAAa,OAAO;AAC7E,UAAI,aAAa;AACf,aAAK,aAAa;AAClB,QAAA+C,UAAS1I,SAAQ,SAAS,CAAC2F,IAAG7C,SAAQ,IAAI,GAAG,IAAI;AACjD,YAAI,SAAS;AACX,UAAA4F,UAAS1I,SAAQ,SAAS,CAAC2F,IAAG7C,SAAQ,IAAI,GAAG,IAAI;AAAA,QACnD;AAAA,MACF;AACA,YAAM,UAAU,CAACmP,gBAAenP,SAAQ,UAAU;AAClD,UAAI,WAAW,QAAQ;AACrB,aAAK,UAAUA;AACf,aAAK,mBAAmBA,SAAQ,YAAY,MAAM;AAAA,MACpD;AACA,WAAK,aAAa;AAClB,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB6C,IAAG,YAAY,aAAa,kBAAkB;AAC/D,UAAIA,GAAE,SAAS,YAAY;AACzB,eAAO,CAAC;AAAA,MACV;AACA,UAAI,CAAC,aAAa;AAChB,eAAO;AAAA,MACT;AACA,YAAM,eAAe,KAAK,QAAQ;AAClC,aAAO,KAAK,0BAA0BA,IAAG,aAAa,MAAM,cAAc,gBAAgB;AAAA,IAC5F;AAAA,EACF;AACA,MAAMwM,qBAAoB,MAAM3K,MAAKiK,OAAM,WAAW,CAAC,UAAU,MAAM,SAAS,WAAW,CAAC;AAC5F,MAAM,aAAa;AACnB,SAAO,iBAAiBA,QAAO;AAAA,IAC7B,UAAU;AAAA,MACR;AAAA,MACA,OAAOlS;AAAA,IACT;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,OAAO6R;AAAA,IACT;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,OAAOtH;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,OAAOI;AAAA,IACT;AAAA,IACA,SAAS;AAAA,MACP;AAAA,MACA,OAAOyG;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,OAAOU;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,OAAO,IAAI,UAAU;AACnB,QAAAnH,UAAS,IAAI,GAAG,KAAK;AACrB,QAAAiI,mBAAkB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,MACA,OAAO,IAAI,UAAU;AACnB,QAAAjI,UAAS,OAAO,GAAG,KAAK;AACxB,QAAAiI,mBAAkB;AAAA,MACpB;AAAA,IACF;AAAA,EACF,CAAC;AAED,WAASC,SAAQ,KAAK,SAAS,UAAU;AACvC,UAAM,EAAC,YAAY,aAAa,GAAA5R,IAAG,GAAAC,IAAG,aAAa,YAAW,IAAI;AAClE,QAAI,cAAc,cAAc;AAChC,QAAI,UAAU;AACd,QAAI,IAAID,IAAGC,IAAG,aAAa,aAAa,aAAa,WAAW,WAAW;AAC3E,QAAI,cAAc,aAAa;AAC7B,oBAAc,cAAc;AAC5B,UAAI,IAAID,IAAGC,IAAG,aAAa,WAAW,aAAa,aAAa,aAAa,IAAI;AAAA,IACnF,OAAO;AACL,UAAI,IAAID,IAAGC,IAAG,aAAa,WAAW2E,UAAS,aAAaA,QAAO;AAAA,IACrE;AACA,QAAI,UAAU;AACd,QAAI,KAAK;AAAA,EACX;AACA,WAASiN,iBAAgB,OAAO;AAC9B,WAAOC,mBAAkB,OAAO,CAAC,cAAc,YAAY,cAAc,UAAU,CAAC;AAAA,EACtF;AACA,WAASC,qBAAoB,KAAK,aAAa,aAAa,YAAY;AACtE,UAAMC,KAAIH,iBAAgB,IAAI,QAAQ,YAAY;AAClD,UAAM,iBAAiB,cAAc,eAAe;AACpD,UAAM,aAAa,KAAK,IAAI,eAAe,aAAa,cAAc,CAAC;AACvE,UAAM,oBAAoB,CAAC,QAAQ;AACjC,YAAM,iBAAiB,cAAc,KAAK,IAAI,eAAe,GAAG,KAAK,aAAa;AAClF,aAAOzJ,aAAY,KAAK,GAAG,KAAK,IAAI,eAAe,aAAa,CAAC;AAAA,IACnE;AACA,WAAO;AAAA,MACL,YAAY,kBAAkB4J,GAAE,UAAU;AAAA,MAC1C,UAAU,kBAAkBA,GAAE,QAAQ;AAAA,MACtC,YAAY5J,aAAY4J,GAAE,YAAY,GAAG,UAAU;AAAA,MACnD,UAAU5J,aAAY4J,GAAE,UAAU,GAAG,UAAU;AAAA,IACjD;AAAA,EACF;AACA,WAASC,YAAW7R,IAAG8R,QAAOlS,IAAGC,IAAG;AAClC,WAAO;AAAA,MACL,GAAGD,KAAII,KAAI,KAAK,IAAI8R,MAAK;AAAA,MACzB,GAAGjS,KAAIG,KAAI,KAAK,IAAI8R,MAAK;AAAA,IAC3B;AAAA,EACF;AACA,WAASC,SAAQ,KAAK,SAAS5L,SAAQ,SAAS5D,MAAK,UAAU;AAC7D,UAAM,EAAC,GAAA3C,IAAG,GAAAC,IAAG,YAAYgC,QAAO,aAAa,aAAa,OAAM,IAAI;AACpE,UAAM,cAAc,KAAK,IAAI,QAAQ,cAAc,UAAUsE,UAAS,aAAa,CAAC;AACpF,UAAM,cAAc,SAAS,IAAI,SAAS,UAAUA,UAAS,cAAc;AAC3E,QAAI,gBAAgB;AACpB,UAAM6L,SAAQzP,OAAMV;AACpB,QAAI,SAAS;AACX,YAAM,uBAAuB,SAAS,IAAI,SAAS,UAAU;AAC7D,YAAM,uBAAuB,cAAc,IAAI,cAAc,UAAU;AACvE,YAAM,sBAAsB,uBAAuB,wBAAwB;AAC3E,YAAM,gBAAgB,uBAAuB,IAAKmQ,SAAQ,sBAAuB,qBAAqB,WAAWA;AACjH,uBAAiBA,SAAQ,iBAAiB;AAAA,IAC5C;AACA,UAAM,OAAO,KAAK,IAAI,MAAOA,SAAQ,cAAc7L,UAAS1B,GAAE,IAAI;AAClE,UAAM,eAAeuN,SAAQ,QAAQ;AACrC,UAAM,aAAanQ,SAAQ,cAAc;AACzC,UAAM,WAAWU,OAAM,cAAc;AACrC,UAAM,EAAC,YAAY,UAAU,YAAY,SAAQ,IAAIoP,qBAAoB,SAAS,aAAa,aAAa,WAAW,UAAU;AACjI,UAAM,2BAA2B,cAAc;AAC/C,UAAM,yBAAyB,cAAc;AAC7C,UAAM,0BAA0B,aAAa,aAAa;AAC1D,UAAM,wBAAwB,WAAW,WAAW;AACpD,UAAM,2BAA2B,cAAc;AAC/C,UAAM,yBAAyB,cAAc;AAC7C,UAAM,0BAA0B,aAAa,aAAa;AAC1D,UAAM,wBAAwB,WAAW,WAAW;AACpD,QAAI,UAAU;AACd,QAAI,UAAU;AACZ,UAAI,IAAI/R,IAAGC,IAAG,aAAa,yBAAyB,qBAAqB;AACzE,UAAI,WAAW,GAAG;AAChB,cAAM,UAAUgS,YAAW,wBAAwB,uBAAuBjS,IAAGC,EAAC;AAC9E,YAAI,IAAI,QAAQ,GAAG,QAAQ,GAAG,UAAU,uBAAuB,WAAW2E,QAAO;AAAA,MACnF;AACA,YAAM,KAAKqN,YAAW,wBAAwB,UAAUjS,IAAGC,EAAC;AAC5D,UAAI,OAAO,GAAG,GAAG,GAAG,CAAC;AACrB,UAAI,WAAW,GAAG;AAChB,cAAM,UAAUgS,YAAW,wBAAwB,uBAAuBjS,IAAGC,EAAC;AAC9E,YAAI,IAAI,QAAQ,GAAG,QAAQ,GAAG,UAAU,WAAW2E,UAAS,wBAAwB,KAAK,EAAE;AAAA,MAC7F;AACA,UAAI,IAAI5E,IAAGC,IAAG,aAAa,WAAY,WAAW,aAAc,aAAc,aAAa,aAAc,IAAI;AAC7G,UAAI,aAAa,GAAG;AAClB,cAAM,UAAUgS,YAAW,0BAA0B,yBAAyBjS,IAAGC,EAAC;AAClF,YAAI,IAAI,QAAQ,GAAG,QAAQ,GAAG,YAAY,0BAA0B,KAAK,IAAI,aAAa2E,QAAO;AAAA,MACnG;AACA,YAAM,KAAKqN,YAAW,0BAA0B,YAAYjS,IAAGC,EAAC;AAChE,UAAI,OAAO,GAAG,GAAG,GAAG,CAAC;AACrB,UAAI,aAAa,GAAG;AAClB,cAAM,UAAUgS,YAAW,0BAA0B,yBAAyBjS,IAAGC,EAAC;AAClF,YAAI,IAAI,QAAQ,GAAG,QAAQ,GAAG,YAAY,aAAa2E,UAAS,uBAAuB;AAAA,MACzF;AAAA,IACF,OAAO;AACL,UAAI,OAAO5E,IAAGC,EAAC;AACf,YAAM,cAAc,KAAK,IAAI,uBAAuB,IAAI,cAAcD;AACtE,YAAM,cAAc,KAAK,IAAI,uBAAuB,IAAI,cAAcC;AACtE,UAAI,OAAO,aAAa,WAAW;AACnC,YAAM,YAAY,KAAK,IAAI,qBAAqB,IAAI,cAAcD;AAClE,YAAM,YAAY,KAAK,IAAI,qBAAqB,IAAI,cAAcC;AAClE,UAAI,OAAO,WAAW,SAAS;AAAA,IACjC;AACA,QAAI,UAAU;AAAA,EAChB;AACA,WAASoS,SAAQ,KAAK,SAAS9L,SAAQ,SAAS,UAAU;AACxD,UAAM,EAAC,aAAa,YAAY,cAAa,IAAI;AACjD,QAAI,WAAW,QAAQ;AACvB,QAAI,aAAa;AACf,MAAA4L,SAAQ,KAAK,SAAS5L,SAAQ,SAAS,aAAa7B,MAAK,QAAQ;AACjE,eAASzG,KAAI,GAAGA,KAAI,aAAa,EAAEA,IAAG;AACpC,YAAI,KAAK;AAAA,MACX;AACA,UAAI,CAAC,MAAM,aAAa,GAAG;AACzB,mBAAW,aAAa,gBAAgByG;AACxC,YAAI,gBAAgBA,SAAQ,GAAG;AAC7B,sBAAYA;AAAA,QACd;AAAA,MACF;AAAA,IACF;AACA,IAAAyN,SAAQ,KAAK,SAAS5L,SAAQ,SAAS,UAAU,QAAQ;AACzD,QAAI,KAAK;AACT,WAAO;AAAA,EACT;AACA,WAAS,sBAAsB,KAAK,SAAS,OAAO;AAClD,UAAM,EAAC,GAAAvG,IAAG,GAAAC,IAAG,YAAY,aAAa,YAAW,IAAI;AACrD,UAAM,cAAc,KAAK,IAAI,QAAQ,cAAc,aAAa,CAAC;AACjE,UAAM,cAAc,QAAQ,cAAc;AAC1C,QAAIhC;AACJ,QAAI,OAAO;AACT,MAAA2T,SAAQ,KAAK,SAAS,aAAalN,IAAG;AAAA,IACxC;AACA,QAAI,UAAU;AACd,QAAI,IAAI1E,IAAGC,IAAG,aAAa,aAAayE,MAAK,YAAY,IAAI;AAC7D,SAAKzG,KAAI,GAAGA,KAAI,aAAa,EAAEA,IAAG;AAChC,UAAI,OAAO;AAAA,IACb;AACA,QAAI,UAAU;AACd,QAAI,IAAI+B,IAAGC,IAAG,aAAa,YAAY,aAAayE,IAAG;AACvD,SAAKzG,KAAI,GAAGA,KAAI,aAAa,EAAEA,IAAG;AAChC,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AACA,WAASqU,YAAW,KAAK,SAAS/L,SAAQ,SAAS,UAAU,UAAU;AACrE,UAAM,EAAC,SAAA/G,SAAO,IAAI;AAClB,UAAM,EAAC,aAAa,gBAAe,IAAIA;AACvC,UAAM,QAAQA,SAAQ,gBAAgB;AACtC,QAAI,CAAC,aAAa;AAChB;AAAA,IACF;AACA,QAAI,OAAO;AACT,UAAI,YAAY,cAAc;AAC9B,UAAI,WAAW,mBAAmB;AAAA,IACpC,OAAO;AACL,UAAI,YAAY;AAChB,UAAI,WAAW,mBAAmB;AAAA,IACpC;AACA,QAAI,QAAQ,aAAa;AACvB,4BAAsB,KAAK,SAAS,KAAK;AAAA,IAC3C;AACA,QAAI,OAAO;AACT,MAAAoS,SAAQ,KAAK,SAAS,QAAQ;AAAA,IAChC;AACA,IAAAO,SAAQ,KAAK,SAAS5L,SAAQ,SAAS,UAAU,QAAQ;AACzD,QAAI,OAAO;AAAA,EACb;AACA,MAAMgM,cAAN,cAAyB3M,SAAQ;AAAA,IAC/B,YAAY,KAAK;AACf,YAAM;AACN,WAAK,UAAU;AACf,WAAK,gBAAgB;AACrB,WAAK,aAAa;AAClB,WAAK,WAAW;AAChB,WAAK,cAAc;AACnB,WAAK,cAAc;AACnB,WAAK,cAAc;AACnB,WAAK,cAAc;AACnB,UAAI,KAAK;AACP,eAAO,OAAO,MAAM,GAAG;AAAA,MACzB;AAAA,IACF;AAAA,IACA,QAAQ,QAAQ,QAAQ,kBAAkB;AACxC,YAAMpB,SAAQ,KAAK,SAAS,CAAC,KAAK,GAAG,GAAG,gBAAgB;AACxD,YAAM,EAAC,OAAO,SAAQ,IAAIiG,mBAAkBjG,QAAO,EAAC,GAAG,QAAQ,GAAG,OAAM,CAAC;AACzE,YAAM,EAAC,YAAY,UAAU,aAAa,aAAa,cAAa,IAAI,KAAK,SAAS;AAAA,QACpF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,GAAG,gBAAgB;AACnB,YAAM,UAAU,KAAK,QAAQ,UAAU;AACvC,YAAM,iBAAiB1C,gBAAe,eAAe,WAAW,UAAU;AAC1E,YAAM,gBAAgB,kBAAkB4C,QAAOC,eAAc,OAAO,YAAY,QAAQ;AACxF,YAAM,eAAe6N,YAAW,UAAU,cAAc,SAAS,cAAc,OAAO;AACtF,aAAQ,iBAAiB;AAAA,IAC3B;AAAA,IACA,eAAe,kBAAkB;AAC/B,YAAM,EAAC,GAAAxS,IAAG,GAAAC,IAAG,YAAY,UAAU,aAAa,YAAW,IAAI,KAAK,SAAS;AAAA,QAC3E;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,GAAG,gBAAgB;AACnB,YAAM,EAAC,QAAAsG,SAAQ,QAAO,IAAI,KAAK;AAC/B,YAAM,aAAa,aAAa,YAAY;AAC5C,YAAM,cAAc,cAAc,cAAc,UAAUA,WAAU;AACpE,aAAO;AAAA,QACL,GAAGvG,KAAI,KAAK,IAAI,SAAS,IAAI;AAAA,QAC7B,GAAGC,KAAI,KAAK,IAAI,SAAS,IAAI;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,gBAAgB,kBAAkB;AAChC,aAAO,KAAK,eAAe,gBAAgB;AAAA,IAC7C;AAAA,IACA,KAAK,KAAK;AACR,YAAM,EAAC,SAAAT,UAAS,cAAa,IAAI;AACjC,YAAM+G,WAAU/G,SAAQ,UAAU,KAAK;AACvC,YAAM,WAAWA,SAAQ,WAAW,KAAK;AACzC,YAAM,WAAWA,SAAQ;AACzB,WAAK,cAAeA,SAAQ,gBAAgB,UAAW,OAAO;AAC9D,WAAK,cAAc,gBAAgBkF,OAAM,KAAK,MAAM,gBAAgBA,IAAG,IAAI;AAC3E,UAAI,kBAAkB,KAAK,KAAK,cAAc,KAAK,KAAK,cAAc,GAAG;AACvE;AAAA,MACF;AACA,UAAI,KAAK;AACT,UAAI,eAAe;AACnB,UAAI6B,SAAQ;AACV,uBAAeA,UAAS;AACxB,cAAM,aAAa,KAAK,aAAa,KAAK,YAAY;AACtD,YAAI,UAAU,KAAK,IAAI,SAAS,IAAI,cAAc,KAAK,IAAI,SAAS,IAAI,YAAY;AACpF,YAAI,KAAK,iBAAiB1B,KAAI;AAC5B,yBAAe0B;AAAA,QACjB;AAAA,MACF;AACA,UAAI,YAAY/G,SAAQ;AACxB,UAAI,cAAcA,SAAQ;AAC1B,YAAM,WAAW6S,SAAQ,KAAK,MAAM,cAAc,SAAS,QAAQ;AACnE,MAAAC,YAAW,KAAK,MAAM,cAAc,SAAS,UAAU,QAAQ;AAC/D,UAAI,QAAQ;AAAA,IACd;AAAA,EACF;AACA,EAAAC,YAAW,KAAK;AAChB,EAAAA,YAAW,WAAW;AAAA,IACpB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AACA,EAAAA,YAAW,gBAAgB;AAAA,IACzB,iBAAiB;AAAA,EACnB;AAEA,WAASE,UAAS,KAAKjT,UAAS,QAAQA,UAAS;AAC/C,QAAI,UAAUsC,gBAAe,MAAM,gBAAgBtC,SAAQ,cAAc;AACzE,QAAI,YAAYsC,gBAAe,MAAM,YAAYtC,SAAQ,UAAU,CAAC;AACpE,QAAI,iBAAiBsC,gBAAe,MAAM,kBAAkBtC,SAAQ,gBAAgB;AACpF,QAAI,WAAWsC,gBAAe,MAAM,iBAAiBtC,SAAQ,eAAe;AAC5E,QAAI,YAAYsC,gBAAe,MAAM,aAAatC,SAAQ,WAAW;AACrE,QAAI,cAAcsC,gBAAe,MAAM,aAAatC,SAAQ,WAAW;AAAA,EACzE;AACA,WAASkT,QAAO,KAAK,UAAU,QAAQ;AACrC,QAAI,OAAO,OAAO,GAAG,OAAO,CAAC;AAAA,EAC/B;AACA,WAASC,eAAcnT,UAAS;AAC9B,QAAIA,SAAQ,SAAS;AACnB,aAAOoT;AAAA,IACT;AACA,QAAIpT,SAAQ,WAAWA,SAAQ,2BAA2B,YAAY;AACpE,aAAOqT;AAAA,IACT;AACA,WAAOH;AAAA,EACT;AACA,WAASI,UAAS,QAAQ,SAASpH,UAAS,CAAC,GAAG;AAC9C,UAAM,QAAQ,OAAO;AACrB,UAAM,EAAC,OAAO,cAAc,GAAG,KAAK,YAAY,QAAQ,EAAC,IAAIA;AAC7D,UAAM,EAAC,OAAO,cAAc,KAAK,WAAU,IAAI;AAC/C,UAAMzJ,SAAQ,KAAK,IAAI,aAAa,YAAY;AAChD,UAAMU,OAAM,KAAK,IAAI,WAAW,UAAU;AAC1C,UAAM,UAAU,cAAc,gBAAgB,YAAY,gBAAgB,cAAc,cAAc,YAAY;AAClH,WAAO;AAAA,MACL;AAAA,MACA,OAAAV;AAAA,MACA,MAAM,QAAQ;AAAA,MACd,MAAMU,OAAMV,UAAS,CAAC,UAAU,QAAQU,OAAMV,SAAQU,OAAMV;AAAA,IAC9D;AAAA,EACF;AACA,WAAS8Q,aAAY,KAAK,MAAM,SAASrH,SAAQ;AAC/C,UAAM,EAAC,QAAQ,SAAAlM,SAAO,IAAI;AAC1B,UAAM,EAAC,OAAO,OAAAyC,QAAO,MAAM,KAAI,IAAI6Q,UAAS,QAAQ,SAASpH,OAAM;AACnE,UAAM,aAAaiH,eAAcnT,QAAO;AACxC,QAAI,EAAC,MAAAoD,QAAO,MAAM,QAAO,IAAI8I,WAAU,CAAC;AACxC,QAAIzN,IAAGuG,QAAOtC;AACd,SAAKjE,KAAI,GAAGA,MAAK,MAAM,EAAEA,IAAG;AAC1B,MAAAuG,SAAQ,QAAQvC,UAAS,UAAU,OAAOhE,KAAIA,OAAM,KAAK;AACzD,UAAIuG,OAAM,MAAM;AACd;AAAA,MACF,WAAW5B,OAAM;AACf,YAAI,OAAO4B,OAAM,GAAGA,OAAM,CAAC;AAC3B,QAAA5B,QAAO;AAAA,MACT,OAAO;AACL,mBAAW,KAAKV,OAAMsC,QAAO,SAAShF,SAAQ,OAAO;AAAA,MACvD;AACA,MAAA0C,QAAOsC;AAAA,IACT;AACA,QAAI,MAAM;AACR,MAAAA,SAAQ,QAAQvC,UAAS,UAAU,OAAO,MAAM,KAAK;AACrD,iBAAW,KAAKC,OAAMsC,QAAO,SAAShF,SAAQ,OAAO;AAAA,IACvD;AACA,WAAO,CAAC,CAAC;AAAA,EACX;AACA,WAASwT,iBAAgB,KAAK,MAAM,SAAStH,SAAQ;AACnD,UAAM,SAAS,KAAK;AACpB,UAAM,EAAC,OAAO,OAAAzJ,QAAO,KAAI,IAAI6Q,UAAS,QAAQ,SAASpH,OAAM;AAC7D,UAAM,EAAC,MAAA9I,QAAO,MAAM,QAAO,IAAI8I,WAAU,CAAC;AAC1C,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAIzN,IAAGuG,QAAO,OAAO,MAAM,MAAM;AACjC,UAAM,aAAa,CAACrD,YAAWc,UAAS,UAAU,OAAOd,SAAQA,WAAU;AAC3E,UAAM,QAAQ,MAAM;AAClB,UAAI,SAAS,MAAM;AACjB,YAAI,OAAO,MAAM,IAAI;AACrB,YAAI,OAAO,MAAM,IAAI;AACrB,YAAI,OAAO,MAAM,KAAK;AAAA,MACxB;AAAA,IACF;AACA,QAAIyB,OAAM;AACR,MAAA4B,SAAQ,OAAO,WAAW,CAAC,CAAC;AAC5B,UAAI,OAAOA,OAAM,GAAGA,OAAM,CAAC;AAAA,IAC7B;AACA,SAAKvG,KAAI,GAAGA,MAAK,MAAM,EAAEA,IAAG;AAC1B,MAAAuG,SAAQ,OAAO,WAAWvG,EAAC,CAAC;AAC5B,UAAIuG,OAAM,MAAM;AACd;AAAA,MACF;AACA,YAAMxE,KAAIwE,OAAM;AAChB,YAAMvE,KAAIuE,OAAM;AAChB,YAAM,SAASxE,KAAI;AACnB,UAAI,WAAW,OAAO;AACpB,YAAIC,KAAI,MAAM;AACZ,iBAAOA;AAAA,QACT,WAAWA,KAAI,MAAM;AACnB,iBAAOA;AAAA,QACT;AACA,gBAAQ,SAAS,OAAOD,MAAK,EAAE;AAAA,MACjC,OAAO;AACL,cAAM;AACN,YAAI,OAAOA,IAAGC,EAAC;AACf,gBAAQ;AACR,iBAAS;AACT,eAAO,OAAOA;AAAA,MAChB;AACA,cAAQA;AAAA,IACV;AACA,UAAM;AAAA,EACR;AACA,WAASgT,mBAAkB,MAAM;AAC/B,UAAM,OAAO,KAAK;AAClB,UAAM,aAAa,KAAK,cAAc,KAAK,WAAW;AACtD,UAAM,cAAc,CAAC,KAAK,cAAc,CAAC,KAAK,SAAS,CAAC,KAAK,WAAW,KAAK,2BAA2B,cAAc,CAAC,KAAK,WAAW,CAAC;AACxI,WAAO,cAAcD,mBAAkBD;AAAA,EACzC;AACA,WAASG,yBAAwB1T,UAAS;AACxC,QAAIA,SAAQ,SAAS;AACnB,aAAO2T;AAAA,IACT;AACA,QAAI3T,SAAQ,WAAWA,SAAQ,2BAA2B,YAAY;AACpE,aAAO4T;AAAA,IACT;AACA,WAAOC;AAAA,EACT;AACA,WAASC,qBAAoB,KAAK,MAAMrR,QAAO,OAAO;AACpD,QAAI,OAAO,KAAK;AAChB,QAAI,CAAC,MAAM;AACT,aAAO,KAAK,QAAQ,IAAI,OAAO;AAC/B,UAAI,KAAK,KAAK,MAAMA,QAAO,KAAK,GAAG;AACjC,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AACA,IAAAwQ,UAAS,KAAK,KAAK,OAAO;AAC1B,QAAI,OAAO,IAAI;AAAA,EACjB;AACA,WAASc,kBAAiB,KAAK,MAAMtR,QAAO,OAAO;AACjD,UAAM,EAAC,UAAU,SAAAzC,SAAO,IAAI;AAC5B,UAAM,gBAAgByT,mBAAkB,IAAI;AAC5C,eAAW,WAAW,UAAU;AAC9B,MAAAR,UAAS,KAAKjT,UAAS,QAAQ,KAAK;AACpC,UAAI,UAAU;AACd,UAAI,cAAc,KAAK,MAAM,SAAS,EAAC,OAAAyC,QAAO,KAAKA,SAAQ,QAAQ,EAAC,CAAC,GAAG;AACtE,YAAI,UAAU;AAAA,MAChB;AACA,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AACA,MAAMuR,aAAY,OAAO,WAAW;AACpC,WAAStV,MAAK,KAAK,MAAM+D,QAAO,OAAO;AACrC,QAAIuR,cAAa,CAAC,KAAK,QAAQ,SAAS;AACtC,MAAAF,qBAAoB,KAAK,MAAMrR,QAAO,KAAK;AAAA,IAC7C,OAAO;AACL,MAAAsR,kBAAiB,KAAK,MAAMtR,QAAO,KAAK;AAAA,IAC1C;AAAA,EACF;AACA,MAAMwR,eAAN,cAA0B7N,SAAQ;AAAA,IAChC,YAAY,KAAK;AACf,YAAM;AACN,WAAK,WAAW;AAChB,WAAK,UAAU;AACf,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,YAAY;AACjB,WAAK,QAAQ;AACb,WAAK,UAAU;AACf,WAAK,YAAY;AACjB,WAAK,aAAa;AAClB,WAAK,iBAAiB;AACtB,WAAK,gBAAgB;AACrB,UAAI,KAAK;AACP,eAAO,OAAO,MAAM,GAAG;AAAA,MACzB;AAAA,IACF;AAAA,IACA,oBAAoB,WAAW,WAAW;AACxC,YAAMpG,WAAU,KAAK;AACrB,WAAKA,SAAQ,WAAWA,SAAQ,2BAA2B,eAAe,CAACA,SAAQ,WAAW,CAAC,KAAK,gBAAgB;AAClH,cAAM,OAAOA,SAAQ,WAAW,KAAK,QAAQ,KAAK;AAClD,QAAAkU,4BAA2B,KAAK,SAASlU,UAAS,WAAW,MAAM,SAAS;AAC5E,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,IACA,IAAI,OAAO,QAAQ;AACjB,WAAK,UAAU;AACf,aAAO,KAAK;AACZ,aAAO,KAAK;AACZ,WAAK,iBAAiB;AAAA,IACxB;AAAA,IACA,IAAI,SAAS;AACX,aAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,WAAW;AACb,aAAO,KAAK,cAAc,KAAK,YAAYmU,kBAAiB,MAAM,KAAK,QAAQ,OAAO;AAAA,IACxF;AAAA,IACA,QAAQ;AACN,YAAM,WAAW,KAAK;AACtB,YAAM,SAAS,KAAK;AACpB,aAAO,SAAS,UAAU,OAAO,SAAS,CAAC,EAAE,KAAK;AAAA,IACpD;AAAA,IACA,OAAO;AACL,YAAM,WAAW,KAAK;AACtB,YAAM,SAAS,KAAK;AACpB,YAAM,QAAQ,SAAS;AACvB,aAAO,SAAS,OAAO,SAAS,QAAQ,CAAC,EAAE,GAAG;AAAA,IAChD;AAAA,IACA,YAAYnP,QAAO,UAAU;AAC3B,YAAMhF,WAAU,KAAK;AACrB,YAAM,QAAQgF,OAAM,QAAQ;AAC5B,YAAM,SAAS,KAAK;AACpB,YAAM,WAAWoP,gBAAe,MAAM,EAAC,UAAU,OAAO,OAAO,KAAK,MAAK,CAAC;AAC1E,UAAI,CAAC,SAAS,QAAQ;AACpB;AAAA,MACF;AACA,YAAM,SAAS,CAAC;AAChB,YAAM,eAAeV,yBAAwB1T,QAAO;AACpD,UAAIvB,IAAG;AACP,WAAKA,KAAI,GAAG,OAAO,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACjD,cAAM,EAAC,OAAAgE,QAAO,KAAAU,KAAG,IAAI,SAAS1E,EAAC;AAC/B,cAAM,KAAK,OAAOgE,MAAK;AACvB,cAAM6G,MAAK,OAAOnG,IAAG;AACrB,YAAI,OAAOmG,KAAI;AACb,iBAAO,KAAK,EAAE;AACd;AAAA,QACF;AACA,cAAM3I,KAAI,KAAK,KAAK,QAAQ,GAAG,QAAQ,MAAM2I,IAAG,QAAQ,IAAI,GAAG,QAAQ,EAAE;AACzE,cAAM,eAAe,aAAa,IAAIA,KAAI3I,IAAGX,SAAQ,OAAO;AAC5D,qBAAa,QAAQ,IAAIgF,OAAM,QAAQ;AACvC,eAAO,KAAK,YAAY;AAAA,MAC1B;AACA,aAAO,OAAO,WAAW,IAAI,OAAO,CAAC,IAAI;AAAA,IAC3C;AAAA,IACA,YAAY,KAAK,SAASkH,SAAQ;AAChC,YAAM,gBAAgBuH,mBAAkB,IAAI;AAC5C,aAAO,cAAc,KAAK,MAAM,SAASvH,OAAM;AAAA,IACjD;AAAA,IACA,KAAK,KAAKzJ,QAAO,OAAO;AACtB,YAAM,WAAW,KAAK;AACtB,YAAM,gBAAgBgR,mBAAkB,IAAI;AAC5C,UAAI,OAAO,KAAK;AAChB,MAAAhR,SAAQA,UAAS;AACjB,cAAQ,SAAU,KAAK,OAAO,SAASA;AACvC,iBAAW,WAAW,UAAU;AAC9B,gBAAQ,cAAc,KAAK,MAAM,SAAS,EAAC,OAAAA,QAAO,KAAKA,SAAQ,QAAQ,EAAC,CAAC;AAAA,MAC3E;AACA,aAAO,CAAC,CAAC;AAAA,IACX;AAAA,IACA,KAAK,KAAK,WAAWA,QAAO,OAAO;AACjC,YAAMzC,WAAU,KAAK,WAAW,CAAC;AACjC,YAAM,SAAS,KAAK,UAAU,CAAC;AAC/B,UAAI,OAAO,UAAUA,SAAQ,aAAa;AACxC,YAAI,KAAK;AACT,QAAAtB,MAAK,KAAK,MAAM+D,QAAO,KAAK;AAC5B,YAAI,QAAQ;AAAA,MACd;AACA,UAAI,KAAK,UAAU;AACjB,aAAK,iBAAiB;AACtB,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACA,EAAAwR,aAAY,KAAK;AACjB,EAAAA,aAAY,WAAW;AAAA,IACrB,gBAAgB;AAAA,IAChB,YAAY,CAAC;AAAA,IACb,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,wBAAwB;AAAA,IACxB,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACA,EAAAA,aAAY,gBAAgB;AAAA,IAC1B,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AACA,EAAAA,aAAY,cAAc;AAAA,IACxB,aAAa;AAAA,IACb,YAAY,CAACzU,UAASA,UAAS,gBAAgBA,UAAS;AAAA,EAC1D;AAEA,WAAS6U,WAAU,IAAI,KAAK,MAAM,kBAAkB;AAClD,UAAMrU,WAAU,GAAG;AACnB,UAAM,EAAC,CAAC,IAAI,GAAG,MAAK,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,gBAAgB;AAC5D,WAAQ,KAAK,IAAI,MAAM,KAAK,IAAIA,SAAQ,SAASA,SAAQ;AAAA,EAC3D;AACA,MAAMsU,gBAAN,cAA2BlO,SAAQ;AAAA,IACjC,YAAY,KAAK;AACf,YAAM;AACN,WAAK,UAAU;AACf,WAAK,SAAS;AACd,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,UAAI,KAAK;AACP,eAAO,OAAO,MAAM,GAAG;AAAA,MACzB;AAAA,IACF;AAAA,IACA,QAAQ,QAAQ,QAAQ,kBAAkB;AACxC,YAAMpG,WAAU,KAAK;AACrB,YAAM,EAAC,GAAAQ,IAAG,GAAAC,GAAC,IAAI,KAAK,SAAS,CAAC,KAAK,GAAG,GAAG,gBAAgB;AACzD,aAAS,KAAK,IAAI,SAASD,IAAG,CAAC,IAAI,KAAK,IAAI,SAASC,IAAG,CAAC,IAAK,KAAK,IAAIT,SAAQ,YAAYA,SAAQ,QAAQ,CAAC;AAAA,IAC9G;AAAA,IACA,SAAS,QAAQ,kBAAkB;AACjC,aAAOqU,WAAU,MAAM,QAAQ,KAAK,gBAAgB;AAAA,IACtD;AAAA,IACA,SAAS,QAAQ,kBAAkB;AACjC,aAAOA,WAAU,MAAM,QAAQ,KAAK,gBAAgB;AAAA,IACtD;AAAA,IACA,eAAe,kBAAkB;AAC/B,YAAM,EAAC,GAAA7T,IAAG,GAAAC,GAAC,IAAI,KAAK,SAAS,CAAC,KAAK,GAAG,GAAG,gBAAgB;AACzD,aAAO,EAAC,GAAAD,IAAG,GAAAC,GAAC;AAAA,IACd;AAAA,IACA,KAAKT,UAAS;AACZ,MAAAA,WAAUA,YAAW,KAAK,WAAW,CAAC;AACtC,UAAI,SAASA,SAAQ,UAAU;AAC/B,eAAS,KAAK,IAAI,QAAQ,UAAUA,SAAQ,eAAe,CAAC;AAC5D,YAAM,cAAc,UAAUA,SAAQ,eAAe;AACrD,cAAQ,SAAS,eAAe;AAAA,IAClC;AAAA,IACA,KAAK,KAAK,MAAM;AACd,YAAMA,WAAU,KAAK;AACrB,UAAI,KAAK,QAAQA,SAAQ,SAAS,OAAO,CAAC+K,gBAAe,MAAM,MAAM,KAAK,KAAK/K,QAAO,IAAI,CAAC,GAAG;AAC5F;AAAA,MACF;AACA,UAAI,cAAcA,SAAQ;AAC1B,UAAI,YAAYA,SAAQ;AACxB,UAAI,YAAYA,SAAQ;AACxB,MAAAuU,WAAU,KAAKvU,UAAS,KAAK,GAAG,KAAK,CAAC;AAAA,IACxC;AAAA,IACA,WAAW;AACT,YAAMA,WAAU,KAAK,WAAW,CAAC;AACjC,aAAOA,SAAQ,SAASA,SAAQ;AAAA,IAClC;AAAA,EACF;AACA,EAAAsU,cAAa,KAAK;AAClB,EAAAA,cAAa,WAAW;AAAA,IACtB,aAAa;AAAA,IACb,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACA,EAAAA,cAAa,gBAAgB;AAAA,IAC3B,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAEA,WAASE,cAAa,KAAK,kBAAkB;AAC3C,UAAM,EAAC,GAAAhU,IAAG,GAAAC,IAAG,MAAM,OAAA6H,QAAO,QAAAD,QAAM,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,QAAQ,SAAS,QAAQ,GAAG,gBAAgB;AACxG,QAAIF,OAAMC,QAAOhE,MAAKC,SAAQ;AAC9B,QAAI,IAAI,YAAY;AAClB,aAAOgE,UAAS;AAChB,MAAAF,QAAO,KAAK,IAAI3H,IAAG,IAAI;AACvB,MAAA4H,SAAQ,KAAK,IAAI5H,IAAG,IAAI;AACxB,MAAA4D,OAAM3D,KAAI;AACV,MAAA4D,UAAS5D,KAAI;AAAA,IACf,OAAO;AACL,aAAO6H,SAAQ;AACf,MAAAH,QAAO3H,KAAI;AACX,MAAA4H,SAAQ5H,KAAI;AACZ,MAAA4D,OAAM,KAAK,IAAI3D,IAAG,IAAI;AACtB,MAAA4D,UAAS,KAAK,IAAI5D,IAAG,IAAI;AAAA,IAC3B;AACA,WAAO,EAAC,MAAA0H,OAAM,KAAA/D,MAAK,OAAAgE,QAAO,QAAA/D,QAAM;AAAA,EAClC;AACA,WAASoQ,aAAY3N,OAAM,OAAOzG,MAAKC,MAAK;AAC1C,WAAOwG,QAAO,IAAI8B,aAAY,OAAOvI,MAAKC,IAAG;AAAA,EAC/C;AACA,WAASoU,kBAAiB,KAAK,MAAM,MAAM;AACzC,UAAM,QAAQ,IAAI,QAAQ;AAC1B,UAAM5N,QAAO,IAAI;AACjB,UAAM0L,KAAImC,QAAO,KAAK;AACtB,WAAO;AAAA,MACL,GAAGF,aAAY3N,MAAK,KAAK0L,GAAE,KAAK,GAAG,IAAI;AAAA,MACvC,GAAGiC,aAAY3N,MAAK,OAAO0L,GAAE,OAAO,GAAG,IAAI;AAAA,MAC3C,GAAGiC,aAAY3N,MAAK,QAAQ0L,GAAE,QAAQ,GAAG,IAAI;AAAA,MAC7C,GAAGiC,aAAY3N,MAAK,MAAM0L,GAAE,MAAM,GAAG,IAAI;AAAA,IAC3C;AAAA,EACF;AACA,WAASoC,mBAAkB,KAAK,MAAM,MAAM;AAC1C,UAAM,EAAC,mBAAkB,IAAI,IAAI,SAAS,CAAC,oBAAoB,CAAC;AAChE,UAAM,QAAQ,IAAI,QAAQ;AAC1B,UAAMpC,KAAIqC,eAAc,KAAK;AAC7B,UAAM,OAAO,KAAK,IAAI,MAAM,IAAI;AAChC,UAAM/N,QAAO,IAAI;AACjB,UAAM,eAAe,sBAAsBlH,UAAS,KAAK;AACzD,WAAO;AAAA,MACL,SAAS6U,aAAY,CAAC,gBAAgB3N,MAAK,OAAOA,MAAK,MAAM0L,GAAE,SAAS,GAAG,IAAI;AAAA,MAC/E,UAAUiC,aAAY,CAAC,gBAAgB3N,MAAK,OAAOA,MAAK,OAAO0L,GAAE,UAAU,GAAG,IAAI;AAAA,MAClF,YAAYiC,aAAY,CAAC,gBAAgB3N,MAAK,UAAUA,MAAK,MAAM0L,GAAE,YAAY,GAAG,IAAI;AAAA,MACxF,aAAaiC,aAAY,CAAC,gBAAgB3N,MAAK,UAAUA,MAAK,OAAO0L,GAAE,aAAa,GAAG,IAAI;AAAA,IAC7F;AAAA,EACF;AACA,WAASsC,eAAc,KAAK;AAC1B,UAAM,SAASN,cAAa,GAAG;AAC/B,UAAMlM,SAAQ,OAAO,QAAQ,OAAO;AACpC,UAAMD,UAAS,OAAO,SAAS,OAAO;AACtC,UAAM,SAASqM,kBAAiB,KAAKpM,SAAQ,GAAGD,UAAS,CAAC;AAC1D,UAAM,SAASuM,mBAAkB,KAAKtM,SAAQ,GAAGD,UAAS,CAAC;AAC3D,WAAO;AAAA,MACL,OAAO;AAAA,QACL,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,QACV,GAAGC;AAAA,QACH,GAAGD;AAAA,QACH;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,GAAG,OAAO,OAAO,OAAO;AAAA,QACxB,GAAG,OAAO,MAAM,OAAO;AAAA,QACvB,GAAGC,SAAQ,OAAO,IAAI,OAAO;AAAA,QAC7B,GAAGD,UAAS,OAAO,IAAI,OAAO;AAAA,QAC9B,QAAQ;AAAA,UACN,SAAS,KAAK,IAAI,GAAG,OAAO,UAAU,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC;AAAA,UAClE,UAAU,KAAK,IAAI,GAAG,OAAO,WAAW,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC;AAAA,UACpE,YAAY,KAAK,IAAI,GAAG,OAAO,aAAa,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC;AAAA,UACxE,aAAa,KAAK,IAAI,GAAG,OAAO,cAAc,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC;AAAA,QAC5E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS8C,SAAQ,KAAK3K,IAAGC,IAAG,kBAAkB;AAC5C,UAAM,QAAQD,OAAM;AACpB,UAAM,QAAQC,OAAM;AACpB,UAAM,WAAW,SAAS;AAC1B,UAAM,SAAS,OAAO,CAAC,YAAY+T,cAAa,KAAK,gBAAgB;AACrE,WAAO,WACH,SAASxB,YAAWxS,IAAG,OAAO,MAAM,OAAO,KAAK,OAChD,SAASwS,YAAWvS,IAAG,OAAO,KAAK,OAAO,MAAM;AAAA,EACtD;AACA,WAASsU,WAAU,QAAQ;AACzB,WAAO,OAAO,WAAW,OAAO,YAAY,OAAO,cAAc,OAAO;AAAA,EAC1E;AACA,WAASC,mBAAkB,KAAK,MAAM;AACpC,QAAI,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA,EACzC;AACA,WAASC,aAAY,MAAM,QAAQ,UAAU,CAAC,GAAG;AAC/C,UAAMzU,KAAI,KAAK,MAAM,QAAQ,IAAI,CAAC,SAAS;AAC3C,UAAMC,KAAI,KAAK,MAAM,QAAQ,IAAI,CAAC,SAAS;AAC3C,UAAMyI,MAAK,KAAK,IAAI,KAAK,MAAM,QAAQ,IAAI,QAAQ,IAAI,SAAS,KAAK1I;AACrE,UAAM2I,MAAK,KAAK,IAAI,KAAK,MAAM,QAAQ,IAAI,QAAQ,IAAI,SAAS,KAAK1I;AACrE,WAAO;AAAA,MACL,GAAG,KAAK,IAAID;AAAA,MACZ,GAAG,KAAK,IAAIC;AAAA,MACZ,GAAG,KAAK,IAAIyI;AAAA,MACZ,GAAG,KAAK,IAAIC;AAAA,MACZ,QAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACA,MAAM+L,cAAN,cAAyB9O,SAAQ;AAAA,IAC/B,YAAY,KAAK;AACf,YAAM;AACN,WAAK,UAAU;AACf,WAAK,aAAa;AAClB,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,gBAAgB;AACrB,UAAI,KAAK;AACP,eAAO,OAAO,MAAM,GAAG;AAAA,MACzB;AAAA,IACF;AAAA,IACA,KAAK,KAAK;AACR,YAAM,EAAC,eAAe,SAAS,EAAC,aAAa,gBAAe,EAAC,IAAI;AACjE,YAAM,EAAC,OAAO,MAAK,IAAI0O,eAAc,IAAI;AACzC,YAAM,cAAcC,WAAU,MAAM,MAAM,IAAII,sBAAqBH;AACnE,UAAI,KAAK;AACT,UAAI,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,GAAG;AAC9C,YAAI,UAAU;AACd,oBAAY,KAAKC,aAAY,OAAO,eAAe,KAAK,CAAC;AACzD,YAAI,KAAK;AACT,oBAAY,KAAKA,aAAY,OAAO,CAAC,eAAe,KAAK,CAAC;AAC1D,YAAI,YAAY;AAChB,YAAI,KAAK,SAAS;AAAA,MACpB;AACA,UAAI,UAAU;AACd,kBAAY,KAAKA,aAAY,OAAO,aAAa,CAAC;AAClD,UAAI,YAAY;AAChB,UAAI,KAAK;AACT,UAAI,QAAQ;AAAA,IACd;AAAA,IACA,QAAQ,QAAQ,QAAQ,kBAAkB;AACxC,aAAO9J,SAAQ,MAAM,QAAQ,QAAQ,gBAAgB;AAAA,IACvD;AAAA,IACA,SAAS,QAAQ,kBAAkB;AACjC,aAAOA,SAAQ,MAAM,QAAQ,MAAM,gBAAgB;AAAA,IACrD;AAAA,IACA,SAAS,QAAQ,kBAAkB;AACjC,aAAOA,SAAQ,MAAM,MAAM,QAAQ,gBAAgB;AAAA,IACrD;AAAA,IACA,eAAe,kBAAkB;AAC/B,YAAM,EAAC,GAAA3K,IAAG,GAAAC,IAAG,MAAM,WAAU,IAAI,KAAK,SAAS,CAAC,KAAK,KAAK,QAAQ,YAAY,GAAG,gBAAgB;AACjG,aAAO;AAAA,QACL,GAAG,cAAcD,KAAI,QAAQ,IAAIA;AAAA,QACjC,GAAG,aAAaC,MAAKA,KAAI,QAAQ;AAAA,MACnC;AAAA,IACF;AAAA,IACA,SAAS,MAAM;AACb,aAAO,SAAS,MAAM,KAAK,QAAQ,IAAI,KAAK,SAAS;AAAA,IACvD;AAAA,EACF;AACA,EAAAyU,YAAW,KAAK;AAChB,EAAAA,YAAW,WAAW;AAAA,IACpB,eAAe;AAAA,IACf,aAAa;AAAA,IACb,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,EACd;AACA,EAAAA,YAAW,gBAAgB;AAAA,IACzB,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAEA,MAAIrS,YAAwB,uBAAO,OAAO;AAAA,IAC1C,WAAW;AAAA,IACX,YAAYkQ;AAAA,IACZ,aAAakB;AAAA,IACb,cAAcK;AAAA,IACd,YAAYY;AAAA,EACZ,CAAC;AAED,WAASE,gBAAehU,OAAMqB,QAAO,OAAO,gBAAgBzC,UAAS;AACnE,UAAM,UAAUA,SAAQ,WAAW;AACnC,QAAI,WAAW,OAAO;AACpB,aAAOoB,MAAK,MAAMqB,QAAOA,SAAQ,KAAK;AAAA,IACxC;AACA,UAAM,YAAY,CAAC;AACnB,UAAM,eAAe,QAAQ,MAAM,UAAU;AAC7C,QAAI,eAAe;AACnB,UAAM,WAAWA,SAAQ,QAAQ;AACjC,QAAIc,KAAId;AACR,QAAIhE,IAAG,cAAc,SAAS,MAAM;AACpC,cAAU,cAAc,IAAI2C,MAAKmC,EAAC;AAClC,SAAK9E,KAAI,GAAGA,KAAI,UAAU,GAAGA,MAAK;AAChC,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAIqK;AACJ,YAAM,gBAAgB,KAAK,OAAOrK,KAAI,KAAK,WAAW,IAAI,IAAIgE;AAC9D,YAAM,cAAc,KAAK,IAAI,KAAK,OAAOhE,KAAI,KAAK,WAAW,IAAI,GAAG,KAAK,IAAIgE;AAC7E,YAAM,iBAAiB,cAAc;AACrC,WAAKqG,KAAI,eAAeA,KAAI,aAAaA,MAAK;AAC5C,gBAAQ1H,MAAK0H,EAAC,EAAE;AAChB,gBAAQ1H,MAAK0H,EAAC,EAAE;AAAA,MAClB;AACA,cAAQ;AACR,cAAQ;AACR,YAAM,YAAY,KAAK,MAAMrK,KAAI,WAAW,IAAI,IAAIgE;AACpD,YAAM,UAAU,KAAK,IAAI,KAAK,OAAOhE,KAAI,KAAK,WAAW,IAAI,GAAG,KAAK,IAAIgE;AACzE,YAAM,EAAC,GAAG,SAAS,GAAG,QAAO,IAAIrB,MAAKmC,EAAC;AACvC,gBAAU,OAAO;AACjB,WAAKuF,KAAI,WAAWA,KAAI,SAASA,MAAK;AACpC,eAAO,MAAM,KAAK;AAAA,WACf,UAAU,SAAS1H,MAAK0H,EAAC,EAAE,IAAI,YAC/B,UAAU1H,MAAK0H,EAAC,EAAE,MAAM,OAAO;AAAA,QAClC;AACA,YAAI,OAAO,SAAS;AAClB,oBAAU;AACV,yBAAe1H,MAAK0H,EAAC;AACrB,kBAAQA;AAAA,QACV;AAAA,MACF;AACA,gBAAU,cAAc,IAAI;AAC5B,MAAAvF,KAAI;AAAA,IACN;AACA,cAAU,cAAc,IAAInC,MAAK,QAAQ;AACzC,WAAO;AAAA,EACT;AACA,WAASiU,kBAAiBjU,OAAMqB,QAAO,OAAO,gBAAgB;AAC5D,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAIhE,IAAGuG,QAAOxE,IAAGC,IAAG,OAAO,UAAU,UAAU,YAAY,MAAM;AACjE,UAAM,YAAY,CAAC;AACnB,UAAM,WAAWgC,SAAQ,QAAQ;AACjC,UAAM,OAAOrB,MAAKqB,MAAK,EAAE;AACzB,UAAM,OAAOrB,MAAK,QAAQ,EAAE;AAC5B,UAAMkU,MAAK,OAAO;AAClB,SAAK7W,KAAIgE,QAAOhE,KAAIgE,SAAQ,OAAO,EAAEhE,IAAG;AACtC,MAAAuG,SAAQ5D,MAAK3C,EAAC;AACd,MAAA+B,MAAKwE,OAAM,IAAI,QAAQsQ,MAAK;AAC5B,MAAA7U,KAAIuE,OAAM;AACV,YAAM,SAASxE,KAAI;AACnB,UAAI,WAAW,OAAO;AACpB,YAAIC,KAAI,MAAM;AACZ,iBAAOA;AACP,qBAAWhC;AAAA,QACb,WAAWgC,KAAI,MAAM;AACnB,iBAAOA;AACP,qBAAWhC;AAAA,QACb;AACA,gBAAQ,SAAS,OAAOuG,OAAM,KAAK,EAAE;AAAA,MACvC,OAAO;AACL,cAAM,YAAYvG,KAAI;AACtB,YAAI,CAACkF,eAAc,QAAQ,KAAK,CAACA,eAAc,QAAQ,GAAG;AACxD,gBAAM,qBAAqB,KAAK,IAAI,UAAU,QAAQ;AACtD,gBAAM,qBAAqB,KAAK,IAAI,UAAU,QAAQ;AACtD,cAAI,uBAAuB,cAAc,uBAAuB,WAAW;AACzE,sBAAU,KAAK;AAAA,cACb,GAAGvC,MAAK,kBAAkB;AAAA,cAC1B,GAAG;AAAA,YACL,CAAC;AAAA,UACH;AACA,cAAI,uBAAuB,cAAc,uBAAuB,WAAW;AACzE,sBAAU,KAAK;AAAA,cACb,GAAGA,MAAK,kBAAkB;AAAA,cAC1B,GAAG;AAAA,YACL,CAAC;AAAA,UACH;AAAA,QACF;AACA,YAAI3C,KAAI,KAAK,cAAc,YAAY;AACrC,oBAAU,KAAK2C,MAAK,SAAS,CAAC;AAAA,QAChC;AACA,kBAAU,KAAK4D,MAAK;AACpB,gBAAQ;AACR,iBAAS;AACT,eAAO,OAAOvE;AACd,mBAAW,WAAW,aAAahC;AAAA,MACrC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS8W,uBAAsB,SAAS;AACtC,QAAI,QAAQ,YAAY;AACtB,YAAMnU,QAAO,QAAQ;AACrB,aAAO,QAAQ;AACf,aAAO,QAAQ;AACf,aAAO,eAAe,SAAS,QAAQ,EAAC,OAAOA,MAAI,CAAC;AAAA,IACtD;AAAA,EACF;AACA,WAASoU,oBAAmB,OAAO;AACjC,UAAM,KAAK,SAAS,QAAQ,CAAC,YAAY;AACvC,MAAAD,uBAAsB,OAAO;AAAA,IAC/B,CAAC;AAAA,EACH;AACA,WAASE,2CAA0C,MAAM,QAAQ;AAC/D,UAAM,aAAa,OAAO;AAC1B,QAAIhT,SAAQ;AACZ,QAAI;AACJ,UAAM,EAAC,OAAM,IAAI;AACjB,UAAM,EAAC,KAAApC,MAAK,KAAAC,MAAK,YAAY,WAAU,IAAI,OAAO,cAAc;AAChE,QAAI,YAAY;AACd,MAAAmC,SAAQmG,aAAY+B,cAAa,QAAQ,OAAO,MAAMtK,IAAG,EAAE,IAAI,GAAG,aAAa,CAAC;AAAA,IAClF;AACA,QAAI,YAAY;AACd,cAAQuI,aAAY+B,cAAa,QAAQ,OAAO,MAAMrK,IAAG,EAAE,KAAK,GAAGmC,QAAO,UAAU,IAAIA;AAAA,IAC1F,OAAO;AACL,cAAQ,aAAaA;AAAA,IACvB;AACA,WAAO,EAAC,OAAAA,QAAO,MAAK;AAAA,EACtB;AACA,MAAIiT,qBAAoB;AAAA,IACtB,IAAI;AAAA,IACJ,UAAU;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB,CAAC,OAAO,MAAM1V,aAAY;AAC9C,UAAI,CAACA,SAAQ,SAAS;AACpB,QAAAwV,oBAAmB,KAAK;AACxB;AAAA,MACF;AACA,YAAM,iBAAiB,MAAM;AAC7B,YAAM,KAAK,SAAS,QAAQ,CAAC,SAAS,iBAAiB;AACrD,cAAM,EAAC,OAAO,UAAS,IAAI;AAC3B,cAAM,OAAO,MAAM,eAAe,YAAY;AAC9C,cAAMpU,QAAO,SAAS,QAAQ;AAC9B,YAAIlC,SAAQ,CAAC,WAAW,MAAM,QAAQ,SAAS,CAAC,MAAM,KAAK;AACzD;AAAA,QACF;AACA,YAAI,CAAC,KAAK,WAAW,oBAAoB;AACvC;AAAA,QACF;AACA,cAAM,QAAQ,MAAM,OAAO,KAAK,OAAO;AACvC,YAAI,MAAM,SAAS,YAAY,MAAM,SAAS,QAAQ;AACpD;AAAA,QACF;AACA,YAAI,MAAM,QAAQ,SAAS;AACzB;AAAA,QACF;AACA,YAAI,EAAC,OAAAuD,QAAO,MAAK,IAAIgT,2CAA0C,MAAMrU,KAAI;AACzE,cAAM,YAAYpB,SAAQ,aAAa,IAAI;AAC3C,YAAI,SAAS,WAAW;AACtB,UAAAuV,uBAAsB,OAAO;AAC7B;AAAA,QACF;AACA,YAAI5R,eAAc,KAAK,GAAG;AACxB,kBAAQ,QAAQvC;AAChB,iBAAO,QAAQ;AACf,iBAAO,eAAe,SAAS,QAAQ;AAAA,YACrC,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,KAAK,WAAW;AACd,qBAAO,KAAK;AAAA,YACd;AAAA,YACA,KAAK,SAASuU,IAAG;AACf,mBAAK,QAAQA;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI;AACJ,gBAAQ3V,SAAQ,WAAW;AAAA,UAC3B,KAAK;AACH,wBAAYoV,gBAAehU,OAAMqB,QAAO,OAAO,gBAAgBzC,QAAO;AACtE;AAAA,UACF,KAAK;AACH,wBAAYqV,kBAAiBjU,OAAMqB,QAAO,OAAO,cAAc;AAC/D;AAAA,UACF;AACE,kBAAM,IAAI,MAAM,qCAAqCzC,SAAQ,YAAY;AAAA,QAC3E;AACA,gBAAQ,aAAa;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,OAAO;AACb,MAAAwV,oBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAEA,WAASI,WAAU,MAAM,QAAQ,UAAU;AACzC,UAAM,WAAW,KAAK;AACtB,UAAM,SAAS,KAAK;AACpB,UAAM,UAAU,OAAO;AACvB,UAAM,QAAQ,CAAC;AACf,eAAW,WAAW,UAAU;AAC9B,UAAI,EAAC,OAAAnT,QAAO,KAAAU,KAAG,IAAI;AACnB,MAAAA,OAAM0S,iBAAgBpT,QAAOU,MAAK,MAAM;AACxC,YAAM,SAAS2S,YAAW,UAAU,OAAOrT,MAAK,GAAG,OAAOU,IAAG,GAAG,QAAQ,IAAI;AAC5E,UAAI,CAAC,OAAO,UAAU;AACpB,cAAM,KAAK;AAAA,UACT,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,OAAO,OAAOV,MAAK;AAAA,UACnB,KAAK,OAAOU,IAAG;AAAA,QACjB,CAAC;AACD;AAAA,MACF;AACA,YAAM,iBAAiBiR,gBAAe,QAAQ,MAAM;AACpD,iBAAW,OAAO,gBAAgB;AAChC,cAAM,YAAY0B,YAAW,UAAU,QAAQ,IAAI,KAAK,GAAG,QAAQ,IAAI,GAAG,GAAG,IAAI,IAAI;AACrF,cAAM,cAAcC,eAAc,SAAS,QAAQ,SAAS;AAC5D,mBAAW,cAAc,aAAa;AACpC,gBAAM,KAAK;AAAA,YACT,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,OAAO;AAAA,cACL,CAAC,QAAQ,GAAGC,UAAS,QAAQ,WAAW,SAAS,KAAK,GAAG;AAAA,YAC3D;AAAA,YACA,KAAK;AAAA,cACH,CAAC,QAAQ,GAAGA,UAAS,QAAQ,WAAW,OAAO,KAAK,GAAG;AAAA,YACzD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASF,YAAW,UAAU,OAAO,MAAM,MAAM;AAC/C,QAAI,MAAM;AACR;AAAA,IACF;AACA,QAAIrT,SAAQ,MAAM,QAAQ;AAC1B,QAAIU,OAAM,KAAK,QAAQ;AACvB,QAAI,aAAa,SAAS;AACxB,MAAAV,SAAQwT,iBAAgBxT,MAAK;AAC7B,MAAAU,OAAM8S,iBAAgB9S,IAAG;AAAA,IAC3B;AACA,WAAO,EAAC,UAAU,OAAAV,QAAO,KAAAU,KAAG;AAAA,EAC9B;AACA,WAAS+S,qBAAoB,UAAU,MAAM;AAC3C,UAAM,EAAC,GAAA1V,KAAI,MAAM,GAAAC,KAAI,KAAI,IAAI,YAAY,CAAC;AAC1C,UAAM,aAAa,KAAK;AACxB,UAAM,SAAS,CAAC;AAChB,SAAK,SAAS,QAAQ,CAAC,EAAC,OAAAgC,QAAO,KAAAU,KAAG,MAAM;AACtC,MAAAA,OAAM0S,iBAAgBpT,QAAOU,MAAK,UAAU;AAC5C,YAAM,QAAQ,WAAWV,MAAK;AAC9B,YAAM,OAAO,WAAWU,IAAG;AAC3B,UAAI1C,OAAM,MAAM;AACd,eAAO,KAAK,EAAC,GAAG,MAAM,GAAG,GAAAA,GAAC,CAAC;AAC3B,eAAO,KAAK,EAAC,GAAG,KAAK,GAAG,GAAAA,GAAC,CAAC;AAAA,MAC5B,WAAWD,OAAM,MAAM;AACrB,eAAO,KAAK,EAAC,GAAAA,IAAG,GAAG,MAAM,EAAC,CAAC;AAC3B,eAAO,KAAK,EAAC,GAAAA,IAAG,GAAG,KAAK,EAAC,CAAC;AAAA,MAC5B;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AACA,WAASqV,iBAAgBpT,QAAOU,MAAK,QAAQ;AAC3C,WAAMA,OAAMV,QAAOU,QAAO;AACxB,YAAM6B,SAAQ,OAAO7B,IAAG;AACxB,UAAI,CAAC,MAAM6B,OAAM,CAAC,KAAK,CAAC,MAAMA,OAAM,CAAC,GAAG;AACtC;AAAA,MACF;AAAA,IACF;AACA,WAAO7B;AAAA,EACT;AACA,WAAS6S,UAASzS,IAAG1C,IAAG,MAAMtC,KAAI;AAChC,QAAIgF,MAAK1C,IAAG;AACV,aAAOtC,IAAGgF,GAAE,IAAI,GAAG1C,GAAE,IAAI,CAAC;AAAA,IAC5B;AACA,WAAO0C,KAAIA,GAAE,IAAI,IAAI1C,KAAIA,GAAE,IAAI,IAAI;AAAA,EACrC;AAEA,WAASsV,qBAAoB,UAAU,MAAM;AAC3C,QAAI,SAAS,CAAC;AACd,QAAI,QAAQ;AACZ,QAAIpW,SAAQ,QAAQ,GAAG;AACrB,cAAQ;AACR,eAAS;AAAA,IACX,OAAO;AACL,eAASmW,qBAAoB,UAAU,IAAI;AAAA,IAC7C;AACA,WAAO,OAAO,SAAS,IAAIjC,aAAY;AAAA,MACrC;AAAA,MACA,SAAS,EAAC,SAAS,EAAC;AAAA,MACpB;AAAA,MACA,WAAW;AAAA,IACb,CAAC,IAAI;AAAA,EACP;AACA,WAASmC,kBAAiB,QAAQ;AAChC,WAAO,UAAU,OAAO,SAAS;AAAA,EACnC;AAEA,WAASC,gBAAe,SAAS1U,QAAO,WAAW;AACjD,UAAM,SAAS,QAAQA,MAAK;AAC5B,QAAI2U,QAAO,OAAO;AAClB,UAAM,UAAU,CAAC3U,MAAK;AACtB,QAAI;AACJ,QAAI,CAAC,WAAW;AACd,aAAO2U;AAAA,IACT;AACA,WAAOA,UAAS,SAAS,QAAQ,QAAQA,KAAI,MAAM,IAAI;AACrD,UAAI,CAACrV,gBAAeqV,KAAI,GAAG;AACzB,eAAOA;AAAA,MACT;AACA,eAAS,QAAQA,KAAI;AACrB,UAAI,CAAC,QAAQ;AACX,eAAO;AAAA,MACT;AACA,UAAI,OAAO,SAAS;AAClB,eAAOA;AAAA,MACT;AACA,cAAQ,KAAKA,KAAI;AACjB,MAAAA,QAAO,OAAO;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AACA,WAASC,aAAY,MAAM5U,QAAO,OAAO;AACvC,UAAM2U,QAAOE,iBAAgB,IAAI;AACjC,QAAI5W,UAAS0W,KAAI,GAAG;AAClB,aAAO,MAAMA,MAAK,KAAK,IAAI,QAAQA;AAAA,IACrC;AACA,QAAI,SAAS,WAAWA,KAAI;AAC5B,QAAIrV,gBAAe,MAAM,KAAK,KAAK,MAAM,MAAM,MAAM,QAAQ;AAC3D,aAAOwV,mBAAkBH,MAAK,CAAC,GAAG3U,QAAO,QAAQ,KAAK;AAAA,IACxD;AACA,WAAO,CAAC,UAAU,SAAS,OAAO,SAAS,OAAO,EAAE,QAAQ2U,KAAI,KAAK,KAAKA;AAAA,EAC5E;AACA,WAASG,mBAAkB,SAAS9U,QAAO,QAAQ,OAAO;AACxD,QAAI,YAAY,OAAO,YAAY,KAAK;AACtC,eAASA,SAAQ;AAAA,IACnB;AACA,QAAI,WAAWA,UAAS,SAAS,KAAK,UAAU,OAAO;AACrD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAAS+U,iBAAgBJ,OAAMlW,QAAO;AACpC,QAAI,QAAQ;AACZ,QAAIkW,UAAS,SAAS;AACpB,cAAQlW,OAAM;AAAA,IAChB,WAAWkW,UAAS,OAAO;AACzB,cAAQlW,OAAM;AAAA,IAChB,WAAWR,UAAS0W,KAAI,GAAG;AACzB,cAAQlW,OAAM,iBAAiBkW,MAAK,KAAK;AAAA,IAC3C,WAAWlW,OAAM,cAAc;AAC7B,cAAQA,OAAM,aAAa;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AACA,WAASuW,iBAAgBL,OAAMlW,QAAO,YAAY;AAChD,QAAI;AACJ,QAAIkW,UAAS,SAAS;AACpB,cAAQ;AAAA,IACV,WAAWA,UAAS,OAAO;AACzB,cAAQlW,OAAM,QAAQ,UAAUA,OAAM,MAAMA,OAAM;AAAA,IACpD,WAAWR,UAAS0W,KAAI,GAAG;AACzB,cAAQA,MAAK;AAAA,IACf,OAAO;AACL,cAAQlW,OAAM,aAAa;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AACA,WAASoW,iBAAgB,MAAM;AAC7B,UAAMxW,WAAU,KAAK;AACrB,UAAM,aAAaA,SAAQ;AAC3B,QAAIsW,QAAOhU,gBAAe,cAAc,WAAW,QAAQ,UAAU;AACrE,QAAIgU,UAAS,QAAW;AACtB,MAAAA,QAAO,CAAC,CAACtW,SAAQ;AAAA,IACnB;AACA,QAAIsW,UAAS,SAASA,UAAS,MAAM;AACnC,aAAO;AAAA,IACT;AACA,QAAIA,UAAS,MAAM;AACjB,aAAO;AAAA,IACT;AACA,WAAOA;AAAA,EACT;AAEA,WAASM,iBAAgB,QAAQ;AAC/B,UAAM,EAAC,OAAAxW,QAAO,OAAAuB,QAAO,KAAI,IAAI;AAC7B,UAAM,SAAS,CAAC;AAChB,UAAM,WAAW,KAAK;AACtB,UAAM,eAAe,KAAK;AAC1B,UAAM,aAAakV,eAAczW,QAAOuB,MAAK;AAC7C,eAAW,KAAKwU,qBAAoB,EAAC,GAAG,MAAM,GAAG/V,OAAM,OAAM,GAAG,IAAI,CAAC;AACrE,aAAS3B,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,YAAM,UAAU,SAASA,EAAC;AAC1B,eAASqK,KAAI,QAAQ,OAAOA,MAAK,QAAQ,KAAKA,MAAK;AACjD,QAAAgO,gBAAe,QAAQ,aAAahO,EAAC,GAAG,UAAU;AAAA,MACpD;AAAA,IACF;AACA,WAAO,IAAImL,aAAY,EAAC,QAAQ,SAAS,CAAC,EAAC,CAAC;AAAA,EAC9C;AACA,WAAS4C,eAAczW,QAAOuB,QAAO;AACnC,UAAM,QAAQ,CAAC;AACf,UAAM,QAAQvB,OAAM,wBAAwB,MAAM;AAClD,aAAS3B,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,YAAM,OAAO,MAAMA,EAAC;AACpB,UAAI,KAAK,UAAUkD,QAAO;AACxB;AAAA,MACF;AACA,UAAI,CAAC,KAAK,QAAQ;AAChB,cAAM,QAAQ,KAAK,OAAO;AAAA,MAC5B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASmV,gBAAe,QAAQ,aAAa,YAAY;AACvD,UAAM,YAAY,CAAC;AACnB,aAAShO,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AAC1C,YAAM,OAAO,WAAWA,EAAC;AACzB,YAAM,EAAC,OAAO,MAAM,OAAA9D,OAAK,IAAI+R,WAAU,MAAM,aAAa,GAAG;AAC7D,UAAI,CAAC/R,UAAU,SAAS,MAAO;AAC7B;AAAA,MACF;AACA,UAAI,OAAO;AACT,kBAAU,QAAQA,MAAK;AAAA,MACzB,OAAO;AACL,eAAO,KAAKA,MAAK;AACjB,YAAI,CAAC,MAAM;AACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO,KAAK,GAAG,SAAS;AAAA,EAC1B;AACA,WAAS+R,WAAU,MAAM,aAAa,UAAU;AAC9C,UAAM/R,SAAQ,KAAK,YAAY,aAAa,QAAQ;AACpD,QAAI,CAACA,QAAO;AACV,aAAO,CAAC;AAAA,IACV;AACA,UAAM,aAAaA,OAAM,QAAQ;AACjC,UAAM,WAAW,KAAK;AACtB,UAAM,aAAa,KAAK;AACxB,QAAI,QAAQ;AACZ,QAAI,OAAO;AACX,aAASvG,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,YAAM,UAAU,SAASA,EAAC;AAC1B,YAAM,aAAa,WAAW,QAAQ,KAAK,EAAE,QAAQ;AACrD,YAAM,YAAY,WAAW,QAAQ,GAAG,EAAE,QAAQ;AAClD,UAAIuU,YAAW,YAAY,YAAY,SAAS,GAAG;AACjD,gBAAQ,eAAe;AACvB,eAAO,eAAe;AACtB;AAAA,MACF;AAAA,IACF;AACA,WAAO,EAAC,OAAO,MAAM,OAAAhO,OAAK;AAAA,EAC5B;AAEA,MAAMgS,aAAN,MAAgB;AAAA,IACd,YAAY,MAAM;AAChB,WAAK,IAAI,KAAK;AACd,WAAK,IAAI,KAAK;AACd,WAAK,SAAS,KAAK;AAAA,IACrB;AAAA,IACA,YAAY,KAAK,QAAQ,MAAM;AAC7B,YAAM,EAAC,GAAAxW,IAAG,GAAAC,IAAG,OAAM,IAAI;AACvB,eAAS,UAAU,EAAC,OAAO,GAAG,KAAKyE,KAAG;AACtC,UAAI,IAAI1E,IAAGC,IAAG,QAAQ,OAAO,KAAK,OAAO,OAAO,IAAI;AACpD,aAAO,CAAC,KAAK;AAAA,IACf;AAAA,IACA,YAAYuE,QAAO;AACjB,YAAM,EAAC,GAAAxE,IAAG,GAAAC,IAAG,OAAM,IAAI;AACvB,YAAM,QAAQuE,OAAM;AACpB,aAAO;AAAA,QACL,GAAGxE,KAAI,KAAK,IAAI,KAAK,IAAI;AAAA,QACzB,GAAGC,KAAI,KAAK,IAAI,KAAK,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAASwW,YAAW,QAAQ;AAC1B,UAAM,EAAC,OAAO,MAAAX,OAAM,KAAI,IAAI;AAC5B,QAAIrV,gBAAeqV,KAAI,GAAG;AACxB,aAAOY,gBAAe,OAAOZ,KAAI;AAAA,IACnC;AACA,QAAIA,UAAS,SAAS;AACpB,aAAOM,iBAAgB,MAAM;AAAA,IAC/B;AACA,QAAIN,UAAS,SAAS;AACpB,aAAO;AAAA,IACT;AACA,UAAM,WAAWa,iBAAgB,MAAM;AACvC,QAAI,oBAAoBH,YAAW;AACjC,aAAO;AAAA,IACT;AACA,WAAOb,qBAAoB,UAAU,IAAI;AAAA,EAC3C;AACA,WAASe,gBAAe,OAAOvV,QAAO;AACpC,UAAM,OAAO,MAAM,eAAeA,MAAK;AACvC,UAAMoQ,WAAU,QAAQ,MAAM,iBAAiBpQ,MAAK;AACpD,WAAOoQ,WAAU,KAAK,UAAU;AAAA,EAClC;AACA,WAASoF,iBAAgB,QAAQ;AAC/B,UAAM/W,SAAQ,OAAO,SAAS,CAAC;AAC/B,QAAIA,OAAM,0BAA0B;AAClC,aAAOgX,yBAAwB,MAAM;AAAA,IACvC;AACA,WAAOC,uBAAsB,MAAM;AAAA,EACrC;AACA,WAASA,uBAAsB,QAAQ;AACrC,UAAM,EAAC,OAAAjX,SAAQ,CAAC,GAAG,MAAAkW,MAAI,IAAI;AAC3B,UAAM,QAAQI,iBAAgBJ,OAAMlW,MAAK;AACzC,QAAIa,gBAAe,KAAK,GAAG;AACzB,YAAM,aAAab,OAAM,aAAa;AACtC,aAAO;AAAA,QACL,GAAG,aAAa,QAAQ;AAAA,QACxB,GAAG,aAAa,OAAO;AAAA,MACzB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASgX,yBAAwB,QAAQ;AACvC,UAAM,EAAC,OAAAhX,QAAO,MAAAkW,MAAI,IAAI;AACtB,UAAMtW,WAAUI,OAAM;AACtB,UAAMyE,UAASzE,OAAM,UAAU,EAAE;AACjC,UAAMqC,SAAQzC,SAAQ,UAAUI,OAAM,MAAMA,OAAM;AAClD,UAAM,QAAQuW,iBAAgBL,OAAMlW,QAAOqC,MAAK;AAChD,UAAM,SAAS,CAAC;AAChB,QAAIzC,SAAQ,KAAK,UAAU;AACzB,YAAM8E,UAAS1E,OAAM,yBAAyB,GAAGqC,MAAK;AACtD,aAAO,IAAIuU,WAAU;AAAA,QACnB,GAAGlS,QAAO;AAAA,QACV,GAAGA,QAAO;AAAA,QACV,QAAQ1E,OAAM,8BAA8B,KAAK;AAAA,MACnD,CAAC;AAAA,IACH;AACA,aAAS3B,KAAI,GAAGA,KAAIoG,SAAQ,EAAEpG,IAAG;AAC/B,aAAO,KAAK2B,OAAM,yBAAyB3B,IAAG,KAAK,CAAC;AAAA,IACtD;AACA,WAAO;AAAA,EACT;AAEA,WAAS6Y,WAAU,KAAK,QAAQ,MAAM;AACpC,UAAM,SAASL,YAAW,MAAM;AAChC,UAAM,EAAC,MAAM,OAAA7W,QAAO,KAAI,IAAI;AAC5B,UAAM,WAAW,KAAK;AACtB,UAAM,aAAa,SAAS;AAC5B,UAAMpB,SAAQ,SAAS;AACvB,UAAM,EAAC,QAAQA,QAAO,QAAQA,OAAK,IAAI,cAAc,CAAC;AACtD,QAAI,UAAU,KAAK,OAAO,QAAQ;AAChC,MAAAuK,UAAS,KAAK,IAAI;AAClB,MAAAgO,QAAO,KAAK,EAAC,MAAM,QAAQ,OAAO,OAAO,MAAM,OAAAnX,QAAO,KAAI,CAAC;AAC3D,MAAAqJ,YAAW,GAAG;AAAA,IAChB;AAAA,EACF;AACA,WAAS8N,QAAO,KAAK,KAAK;AACxB,UAAM,EAAC,MAAM,QAAQ,OAAO,OAAO,MAAM,OAAAnX,OAAK,IAAI;AAClD,UAAM,WAAW,KAAK,QAAQ,UAAU,IAAI;AAC5C,QAAI,KAAK;AACT,QAAI,aAAa,OAAO,UAAU,OAAO;AACvC,MAAAoX,cAAa,KAAK,QAAQ,KAAK,GAAG;AAClC,MAAAlB,MAAK,KAAK,EAAC,MAAM,QAAQ,OAAO,OAAO,OAAAlW,QAAO,SAAQ,CAAC;AACvD,UAAI,QAAQ;AACZ,UAAI,KAAK;AACT,MAAAoX,cAAa,KAAK,QAAQ,KAAK,MAAM;AAAA,IACvC;AACA,IAAAlB,MAAK,KAAK,EAAC,MAAM,QAAQ,OAAO,OAAO,OAAAlW,QAAO,SAAQ,CAAC;AACvD,QAAI,QAAQ;AAAA,EACd;AACA,WAASoX,cAAa,KAAK,QAAQ,OAAO;AACxC,UAAM,EAAC,UAAU,OAAM,IAAI;AAC3B,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,UAAU;AACd,eAAW,WAAW,UAAU;AAC9B,YAAM,EAAC,OAAA/U,QAAO,KAAAU,KAAG,IAAI;AACrB,YAAM,aAAa,OAAOV,MAAK;AAC/B,YAAM,YAAY,OAAOoT,iBAAgBpT,QAAOU,MAAK,MAAM,CAAC;AAC5D,UAAI,OAAO;AACT,YAAI,OAAO,WAAW,GAAG,WAAW,CAAC;AACrC,gBAAQ;AAAA,MACV,OAAO;AACL,YAAI,OAAO,WAAW,GAAG,KAAK;AAC9B,YAAI,OAAO,WAAW,GAAG,WAAW,CAAC;AAAA,MACvC;AACA,iBAAW,CAAC,CAAC,OAAO,YAAY,KAAK,SAAS,EAAC,MAAM,SAAQ,CAAC;AAC9D,UAAI,UAAU;AACZ,YAAI,UAAU;AAAA,MAChB,OAAO;AACL,YAAI,OAAO,UAAU,GAAG,KAAK;AAAA,MAC/B;AAAA,IACF;AACA,QAAI,OAAO,OAAO,MAAM,EAAE,GAAG,KAAK;AAClC,QAAI,UAAU;AACd,QAAI,KAAK;AAAA,EACX;AACA,WAASmT,MAAK,KAAK,KAAK;AACtB,UAAM,EAAC,MAAM,QAAQ,UAAU,OAAAtX,QAAO,OAAAoB,OAAK,IAAI;AAC/C,UAAM,WAAWwV,WAAU,MAAM,QAAQ,QAAQ;AACjD,eAAW,EAAC,QAAQ,KAAK,QAAQ,KAAK,OAAAnT,QAAO,KAAAU,KAAG,KAAK,UAAU;AAC7D,YAAM,EAAC,OAAO,EAAC,kBAAkBnE,OAAK,IAAI,CAAC,EAAC,IAAI;AAChD,YAAM,WAAW,WAAW;AAC5B,UAAI,KAAK;AACT,UAAI,YAAY;AAChB,MAAAyY,YAAW,KAAKrX,QAAO,YAAY0V,YAAW,UAAUrT,QAAOU,IAAG,CAAC;AACnE,UAAI,UAAU;AACd,YAAM,WAAW,CAAC,CAAC,KAAK,YAAY,KAAK,GAAG;AAC5C,UAAI;AACJ,UAAI,UAAU;AACZ,YAAI,UAAU;AACZ,cAAI,UAAU;AAAA,QAChB,OAAO;AACL,UAAAuU,oBAAmB,KAAK,QAAQvU,MAAK,QAAQ;AAAA,QAC/C;AACA,cAAM,aAAa,CAAC,CAAC,OAAO,YAAY,KAAK,KAAK,EAAC,MAAM,UAAU,SAAS,KAAI,CAAC;AACjF,eAAO,YAAY;AACnB,YAAI,CAAC,MAAM;AACT,UAAAuU,oBAAmB,KAAK,QAAQjV,QAAO,QAAQ;AAAA,QACjD;AAAA,MACF;AACA,UAAI,UAAU;AACd,UAAI,KAAK,OAAO,YAAY,SAAS;AACrC,UAAI,QAAQ;AAAA,IACd;AAAA,EACF;AACA,WAASgV,YAAW,KAAKrX,QAAO,QAAQ;AACtC,UAAM,EAAC,KAAAgE,MAAK,QAAAC,QAAM,IAAIjE,OAAM,MAAM;AAClC,UAAM,EAAC,UAAU,OAAAqC,QAAO,KAAAU,KAAG,IAAI,UAAU,CAAC;AAC1C,QAAI,aAAa,KAAK;AACpB,UAAI,UAAU;AACd,UAAI,KAAKV,QAAO2B,MAAKjB,OAAMV,QAAO4B,UAASD,IAAG;AAC9C,UAAI,KAAK;AAAA,IACX;AAAA,EACF;AACA,WAASsT,oBAAmB,KAAK,QAAQ1S,QAAO,UAAU;AACxD,UAAM,oBAAoB,OAAO,YAAYA,QAAO,QAAQ;AAC5D,QAAI,mBAAmB;AACrB,UAAI,OAAO,kBAAkB,GAAG,kBAAkB,CAAC;AAAA,IACrD;AAAA,EACF;AAEA,MAAIrD,SAAQ;AAAA,IACV,IAAI;AAAA,IACJ,oBAAoB,OAAO,OAAO3B,UAAS;AACzC,YAAM,SAAS,MAAM,KAAK,YAAY,CAAC,GAAG;AAC1C,YAAM,UAAU,CAAC;AACjB,UAAI,MAAMvB,IAAG,MAAM;AACnB,WAAKA,KAAI,GAAGA,KAAI,OAAO,EAAEA,IAAG;AAC1B,eAAO,MAAM,eAAeA,EAAC;AAC7B,eAAO,KAAK;AACZ,iBAAS;AACT,YAAI,QAAQ,KAAK,WAAW,gBAAgBwV,cAAa;AACvD,mBAAS;AAAA,YACP,SAAS,MAAM,iBAAiBxV,EAAC;AAAA,YACjC,OAAOA;AAAA,YACP,MAAM8X,aAAY,MAAM9X,IAAG,KAAK;AAAA,YAChC;AAAA,YACA,MAAM,KAAK,WAAW,QAAQ;AAAA,YAC9B,OAAO,KAAK;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AACA,aAAK,UAAU;AACf,gBAAQ,KAAK,MAAM;AAAA,MACrB;AACA,WAAKA,KAAI,GAAGA,KAAI,OAAO,EAAEA,IAAG;AAC1B,iBAAS,QAAQA,EAAC;AAClB,YAAI,CAAC,UAAU,OAAO,SAAS,OAAO;AACpC;AAAA,QACF;AACA,eAAO,OAAO4X,gBAAe,SAAS5X,IAAGuB,SAAQ,SAAS;AAAA,MAC5D;AAAA,IACF;AAAA,IACA,WAAW,OAAO,OAAOA,UAAS;AAChC,YAAMtB,QAAOsB,SAAQ,aAAa;AAClC,YAAM,WAAW,MAAM,6BAA6B;AACpD,YAAM,OAAO,MAAM;AACnB,eAASvB,KAAI,SAAS,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AAC7C,cAAM,SAAS,SAASA,EAAC,EAAE;AAC3B,YAAI,CAAC,QAAQ;AACX;AAAA,QACF;AACA,eAAO,KAAK,oBAAoB,MAAM,OAAO,IAAI;AACjD,YAAIC,SAAQ,OAAO,MAAM;AACvB,UAAA4Y,WAAU,MAAM,KAAK,QAAQ,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IACA,mBAAmB,OAAO,OAAOtX,UAAS;AACxC,UAAIA,SAAQ,aAAa,sBAAsB;AAC7C;AAAA,MACF;AACA,YAAM,WAAW,MAAM,6BAA6B;AACpD,eAASvB,KAAI,SAAS,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AAC7C,cAAM,SAAS,SAASA,EAAC,EAAE;AAC3B,YAAI2X,kBAAiB,MAAM,GAAG;AAC5B,UAAAkB,WAAU,MAAM,KAAK,QAAQ,MAAM,SAAS;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB,OAAO,MAAMtX,UAAS;AACtC,YAAM,SAAS,KAAK,KAAK;AACzB,UAAI,CAACoW,kBAAiB,MAAM,KAAKpW,SAAQ,aAAa,qBAAqB;AACzE;AAAA,MACF;AACA,MAAAsX,WAAU,MAAM,KAAK,QAAQ,MAAM,SAAS;AAAA,IAC9C;AAAA,IACA,UAAU;AAAA,MACR,WAAW;AAAA,MACX,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,MAAMK,cAAa,CAAC,WAAW,aAAa;AAC1C,QAAI,EAAC,YAAY,UAAU,WAAW,SAAQ,IAAI;AAClD,QAAI,UAAU,eAAe;AAC3B,kBAAY,KAAK,IAAI,WAAW,QAAQ;AACxC,iBAAW,UAAU,mBAAmB,KAAK,IAAI,UAAU,QAAQ;AAAA,IACrE;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,KAAK,IAAI,UAAU,SAAS;AAAA,IAC1C;AAAA,EACF;AACA,MAAMC,cAAa,CAACrU,IAAG1C,OAAM0C,OAAM,QAAQ1C,OAAM,QAAQ0C,GAAE,iBAAiB1C,GAAE,gBAAgB0C,GAAE,UAAU1C,GAAE;AAC5G,MAAMgX,UAAN,cAAqBzR,SAAQ;AAAA,IAC3B,YAAYzG,SAAQ;AAClB,YAAM;AACN,WAAK,SAAS;AACd,WAAK,iBAAiB,CAAC;AACvB,WAAK,eAAe;AACpB,WAAK,eAAe;AACpB,WAAK,QAAQA,QAAO;AACpB,WAAK,UAAUA,QAAO;AACtB,WAAK,MAAMA,QAAO;AAClB,WAAK,cAAc;AACnB,WAAK,cAAc;AACnB,WAAK,aAAa;AAClB,WAAK,YAAY;AACjB,WAAK,WAAW;AAChB,WAAK,MAAM;AACX,WAAK,SAAS;AACd,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,WAAW;AAChB,WAAK,WAAW;AAChB,WAAK,SAAS;AACd,WAAK,WAAW;AAAA,IAClB;AAAA,IACA,OAAO,UAAU,WAAW,SAAS;AACnC,WAAK,WAAW;AAChB,WAAK,YAAY;AACjB,WAAK,WAAW;AAChB,WAAK,cAAc;AACnB,WAAK,YAAY;AACjB,WAAK,IAAI;AAAA,IACX;AAAA,IACA,gBAAgB;AACd,UAAI,KAAK,aAAa,GAAG;AACvB,aAAK,QAAQ,KAAK;AAClB,aAAK,OAAO,KAAK,SAAS;AAC1B,aAAK,QAAQ,KAAK;AAAA,MACpB,OAAO;AACL,aAAK,SAAS,KAAK;AACnB,aAAK,MAAM,KAAK,SAAS;AACzB,aAAK,SAAS,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IACA,cAAc;AACZ,YAAM,YAAY,KAAK,QAAQ,UAAU,CAAC;AAC1C,UAAI,cAAc+I,UAAS,UAAU,gBAAgB,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC;AAC7E,UAAI,UAAU,QAAQ;AACpB,sBAAc,YAAY,OAAO,CAAC,SAAS,UAAU,OAAO,MAAM,KAAK,MAAM,IAAI,CAAC;AAAA,MACpF;AACA,UAAI,UAAU,MAAM;AAClB,sBAAc,YAAY,KAAK,CAACnF,IAAG1C,OAAM,UAAU,KAAK0C,IAAG1C,IAAG,KAAK,MAAM,IAAI,CAAC;AAAA,MAChF;AACA,UAAI,KAAK,QAAQ,SAAS;AACxB,oBAAY,QAAQ;AAAA,MACtB;AACA,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,MAAM;AACJ,YAAM,EAAC,SAAAb,UAAS,IAAG,IAAI;AACvB,UAAI,CAACA,SAAQ,SAAS;AACpB,aAAK,QAAQ,KAAK,SAAS;AAC3B;AAAA,MACF;AACA,YAAM,YAAYA,SAAQ;AAC1B,YAAM,YAAY2H,QAAO,UAAU,IAAI;AACvC,YAAM,WAAW,UAAU;AAC3B,YAAM,cAAc,KAAK,oBAAoB;AAC7C,YAAM,EAAC,UAAU,WAAU,IAAIgQ,YAAW,WAAW,QAAQ;AAC7D,UAAIrP,QAAOD;AACX,UAAI,OAAO,UAAU;AACrB,UAAI,KAAK,aAAa,GAAG;AACvB,QAAAC,SAAQ,KAAK;AACb,QAAAD,UAAS,KAAK,SAAS,aAAa,UAAU,UAAU,UAAU,IAAI;AAAA,MACxE,OAAO;AACL,QAAAA,UAAS,KAAK;AACd,QAAAC,SAAQ,KAAK,SAAS,aAAa,UAAU,UAAU,UAAU,IAAI;AAAA,MACvE;AACA,WAAK,QAAQ,KAAK,IAAIA,QAAOtI,SAAQ,YAAY,KAAK,QAAQ;AAC9D,WAAK,SAAS,KAAK,IAAIqI,SAAQrI,SAAQ,aAAa,KAAK,SAAS;AAAA,IACpE;AAAA,IACA,SAAS,aAAa,UAAU,UAAU,YAAY;AACpD,YAAM,EAAC,KAAK,UAAU,SAAS,EAAC,QAAQ,EAAC,QAAO,EAAC,EAAC,IAAI;AACtD,YAAM,WAAW,KAAK,iBAAiB,CAAC;AACxC,YAAM,aAAa,KAAK,aAAa,CAAC,CAAC;AACvC,YAAM,aAAa,aAAa;AAChC,UAAI,cAAc;AAClB,UAAI,YAAY;AAChB,UAAI,eAAe;AACnB,UAAI,MAAM;AACV,UAAIoE,OAAM,CAAC;AACX,WAAK,YAAY,QAAQ,CAAC,YAAY3F,OAAM;AAC1C,cAAM,YAAY,WAAY,WAAW,IAAK,IAAI,YAAY,WAAW,IAAI,EAAE;AAC/E,YAAIA,OAAM,KAAK,WAAW,WAAW,SAAS,CAAC,IAAI,YAAY,IAAI,UAAU,UAAU;AACrF,yBAAe;AACf,qBAAW,WAAW,UAAUA,KAAI,IAAI,IAAI,EAAE,IAAI;AAClD,UAAA2F,QAAO;AACP;AAAA,QACF;AACA,iBAAS3F,EAAC,IAAI,EAAC,MAAM,GAAG,KAAA2F,MAAK,KAAK,OAAO,WAAW,QAAQ,WAAU;AACtE,mBAAW,WAAW,SAAS,CAAC,KAAK,YAAY;AAAA,MACnD,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,SAAS,aAAa,UAAU,UAAU,YAAY;AACpD,YAAM,EAAC,KAAK,WAAW,SAAS,EAAC,QAAQ,EAAC,QAAO,EAAC,EAAC,IAAI;AACvD,YAAM,WAAW,KAAK,iBAAiB,CAAC;AACxC,YAAM,cAAc,KAAK,cAAc,CAAC;AACxC,YAAM,cAAc,YAAY;AAChC,UAAI,aAAa;AACjB,UAAI,kBAAkB;AACtB,UAAI,mBAAmB;AACvB,UAAI+D,QAAO;AACX,UAAI,MAAM;AACV,WAAK,YAAY,QAAQ,CAAC,YAAY1J,OAAM;AAC1C,cAAM,YAAY,WAAY,WAAW,IAAK,IAAI,YAAY,WAAW,IAAI,EAAE;AAC/E,YAAIA,KAAI,KAAK,mBAAmB,aAAa,IAAI,UAAU,aAAa;AACtE,wBAAc,kBAAkB;AAChC,sBAAY,KAAK,EAAC,OAAO,iBAAiB,QAAQ,iBAAgB,CAAC;AACnE,UAAA0J,SAAQ,kBAAkB;AAC1B;AACA,4BAAkB,mBAAmB;AAAA,QACvC;AACA,iBAAS1J,EAAC,IAAI,EAAC,MAAA0J,OAAM,KAAK,kBAAkB,KAAK,OAAO,WAAW,QAAQ,WAAU;AACrF,0BAAkB,KAAK,IAAI,iBAAiB,SAAS;AACrD,4BAAoB,aAAa;AAAA,MACnC,CAAC;AACD,oBAAc;AACd,kBAAY,KAAK,EAAC,OAAO,iBAAiB,QAAQ,iBAAgB,CAAC;AACnE,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB;AACf,UAAI,CAAC,KAAK,QAAQ,SAAS;AACzB;AAAA,MACF;AACA,YAAM,cAAc,KAAK,oBAAoB;AAC7C,YAAM,EAAC,gBAAgB,UAAU,SAAS,EAAC,OAAO,QAAQ,EAAC,QAAO,GAAG,IAAG,EAAC,IAAI;AAC7E,YAAM,YAAY2P,eAAc,KAAK,KAAK,MAAM,KAAK,KAAK;AAC1D,UAAI,KAAK,aAAa,GAAG;AACvB,YAAI,MAAM;AACV,YAAI3P,QAAOI,gBAAe,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,KAAK,WAAW,GAAG,CAAC;AACvF,mBAAW,UAAU,UAAU;AAC7B,cAAI,QAAQ,OAAO,KAAK;AACtB,kBAAM,OAAO;AACb,YAAAJ,QAAOI,gBAAe,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,KAAK,WAAW,GAAG,CAAC;AAAA,UACrF;AACA,iBAAO,OAAO,KAAK,MAAM,cAAc;AACvC,iBAAO,OAAO,UAAU,WAAW,UAAU,EAAEJ,KAAI,GAAG,OAAO,KAAK;AAClE,UAAAA,SAAQ,OAAO,QAAQ;AAAA,QACzB;AAAA,MACF,OAAO;AACL,YAAI,MAAM;AACV,YAAI/D,OAAMmE,gBAAe,OAAO,KAAK,MAAM,cAAc,SAAS,KAAK,SAAS,KAAK,YAAY,GAAG,EAAE,MAAM;AAC5G,mBAAW,UAAU,UAAU;AAC7B,cAAI,OAAO,QAAQ,KAAK;AACtB,kBAAM,OAAO;AACb,YAAAnE,OAAMmE,gBAAe,OAAO,KAAK,MAAM,cAAc,SAAS,KAAK,SAAS,KAAK,YAAY,GAAG,EAAE,MAAM;AAAA,UAC1G;AACA,iBAAO,MAAMnE;AACb,iBAAO,QAAQ,KAAK,OAAO;AAC3B,iBAAO,OAAO,UAAU,WAAW,UAAU,EAAE,OAAO,IAAI,GAAG,OAAO,KAAK;AACzE,UAAAA,QAAO,OAAO,SAAS;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe;AACb,aAAO,KAAK,QAAQ,aAAa,SAAS,KAAK,QAAQ,aAAa;AAAA,IACtE;AAAA,IACA,OAAO;AACL,UAAI,KAAK,QAAQ,SAAS;AACxB,cAAM,MAAM,KAAK;AACjB,QAAAmF,UAAS,KAAK,IAAI;AAClB,aAAK,MAAM;AACX,QAAAE,YAAW,GAAG;AAAA,MAChB;AAAA,IACF;AAAA,IACA,QAAQ;AACN,YAAM,EAAC,SAAS,MAAM,aAAa,YAAY,IAAG,IAAI;AACtD,YAAM,EAAC,OAAO,QAAQ,UAAS,IAAI;AACnC,YAAM,eAAelK,UAAS;AAC9B,YAAM,YAAYuY,eAAc,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK;AAC/D,YAAM,YAAYnQ,QAAO,UAAU,IAAI;AACvC,YAAM,EAAC,OAAO,WAAW,QAAO,IAAI;AACpC,YAAM,WAAW,UAAU;AAC3B,YAAM,eAAe,WAAW;AAChC,UAAI;AACJ,WAAK,UAAU;AACf,UAAI,YAAY,UAAU,UAAU,MAAM;AAC1C,UAAI,eAAe;AACnB,UAAI,YAAY;AAChB,UAAI,OAAO,UAAU;AACrB,YAAM,EAAC,UAAU,WAAW,WAAU,IAAIgQ,YAAW,WAAW,QAAQ;AACxE,YAAM,gBAAgB,SAASnX,IAAGC,IAAG,YAAY;AAC/C,YAAI,MAAM,QAAQ,KAAK,YAAY,KAAK,MAAM,SAAS,KAAK,YAAY,GAAG;AACzE;AAAA,QACF;AACA,YAAI,KAAK;AACT,cAAM,YAAY6B,gBAAe,WAAW,WAAW,CAAC;AACxD,YAAI,YAAYA,gBAAe,WAAW,WAAW,YAAY;AACjE,YAAI,UAAUA,gBAAe,WAAW,SAAS,MAAM;AACvD,YAAI,iBAAiBA,gBAAe,WAAW,gBAAgB,CAAC;AAChE,YAAI,WAAWA,gBAAe,WAAW,UAAU,OAAO;AAC1D,YAAI,YAAY;AAChB,YAAI,cAAcA,gBAAe,WAAW,aAAa,YAAY;AACrE,YAAI,YAAYA,gBAAe,WAAW,UAAU,CAAC,CAAC,CAAC;AACvD,YAAI,UAAU,eAAe;AAC3B,gBAAM,cAAc;AAAA,YAClB,QAAQ,YAAY,KAAK,QAAQ;AAAA,YACjC,YAAY,WAAW;AAAA,YACvB,UAAU,WAAW;AAAA,YACrB,aAAa;AAAA,UACf;AACA,gBAAM,UAAU,UAAU,MAAM9B,IAAG,WAAW,CAAC;AAC/C,gBAAM,UAAUC,KAAI;AACpB,UAAAsX,iBAAgB,KAAK,aAAa,SAAS,SAAS,UAAU,mBAAmB,QAAQ;AAAA,QAC3F,OAAO;AACL,gBAAM,UAAUtX,KAAI,KAAK,KAAK,WAAW,aAAa,GAAG,CAAC;AAC1D,gBAAM,WAAW,UAAU,WAAWD,IAAG,QAAQ;AACjD,gBAAM,eAAeqU,eAAc,WAAW,YAAY;AAC1D,cAAI,UAAU;AACd,cAAI,OAAO,OAAO,YAAY,EAAE,KAAK,CAAApV,OAAKA,OAAM,CAAC,GAAG;AAClD,YAAA0V,oBAAmB,KAAK;AAAA,cACtB,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,QAAQ;AAAA,YACV,CAAC;AAAA,UACH,OAAO;AACL,gBAAI,KAAK,UAAU,SAAS,UAAU,SAAS;AAAA,UACjD;AACA,cAAI,KAAK;AACT,cAAI,cAAc,GAAG;AACnB,gBAAI,OAAO;AAAA,UACb;AAAA,QACF;AACA,YAAI,QAAQ;AAAA,MACd;AACA,YAAM,WAAW,SAAS3U,IAAGC,IAAG,YAAY;AAC1C,QAAA+I,YAAW,KAAK,WAAW,MAAMhJ,IAAGC,KAAK,aAAa,GAAI,WAAW;AAAA,UACnE,eAAe,WAAW;AAAA,UAC1B,WAAW,UAAU,UAAU,WAAW,SAAS;AAAA,QACrD,CAAC;AAAA,MACH;AACA,YAAM,eAAe,KAAK,aAAa;AACvC,YAAM,cAAc,KAAK,oBAAoB;AAC7C,UAAI,cAAc;AAChB,iBAAS;AAAA,UACP,GAAG8H,gBAAe,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,WAAW,CAAC,CAAC;AAAA,UACxE,GAAG,KAAK,MAAM,UAAU;AAAA,UACxB,MAAM;AAAA,QACR;AAAA,MACF,OAAO;AACL,iBAAS;AAAA,UACP,GAAG,KAAK,OAAO;AAAA,UACf,GAAGA,gBAAe,OAAO,KAAK,MAAM,cAAc,SAAS,KAAK,SAAS,YAAY,CAAC,EAAE,MAAM;AAAA,UAC9F,MAAM;AAAA,QACR;AAAA,MACF;AACA,MAAAyP,uBAAsB,KAAK,KAAK,KAAK,aAAa;AAClD,YAAM,aAAa,aAAa;AAChC,WAAK,YAAY,QAAQ,CAAC,YAAYvZ,OAAM;AAC1C,YAAI,cAAc,WAAW,aAAa;AAC1C,YAAI,YAAY,WAAW,aAAa;AACxC,cAAM,YAAY,IAAI,YAAY,WAAW,IAAI,EAAE;AACnD,cAAM,YAAY,UAAU,UAAU,WAAW,cAAc,WAAW,YAAY,UAAU,UAAU;AAC1G,cAAM6J,SAAQ,WAAW,eAAe;AACxC,YAAI9H,KAAI,OAAO;AACf,YAAIC,KAAI,OAAO;AACf,kBAAU,SAAS,KAAK,KAAK;AAC7B,YAAI,cAAc;AAChB,cAAIhC,KAAI,KAAK+B,KAAI8H,SAAQ,UAAU,KAAK,OAAO;AAC7C,YAAA7H,KAAI,OAAO,KAAK;AAChB,mBAAO;AACP,YAAAD,KAAI,OAAO,IAAI+H,gBAAe,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,WAAW,OAAO,IAAI,CAAC;AAAA,UAChG;AAAA,QACF,WAAW9J,KAAI,KAAKgC,KAAI,aAAa,KAAK,QAAQ;AAChD,UAAAD,KAAI,OAAO,IAAIA,KAAI,YAAY,OAAO,IAAI,EAAE,QAAQ;AACpD,iBAAO;AACP,UAAAC,KAAI,OAAO,IAAI8H,gBAAe,OAAO,KAAK,MAAM,cAAc,SAAS,KAAK,SAAS,YAAY,OAAO,IAAI,EAAE,MAAM;AAAA,QACtH;AACA,cAAM,QAAQ,UAAU,EAAE/H,EAAC;AAC3B,sBAAc,OAAOC,IAAG,UAAU;AAClC,QAAAD,KAAIyX,QAAO,WAAWzX,KAAI,WAAW,cAAc,eAAeA,KAAI8H,SAAQ,KAAK,OAAO,KAAK,GAAG;AAClG,iBAAS,UAAU,EAAE9H,EAAC,GAAGC,IAAG,UAAU;AACtC,YAAI,cAAc;AAChB,iBAAO,KAAK6H,SAAQ;AAAA,QACtB,OAAO;AACL,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,CAAC;AACD,MAAA4P,sBAAqB,KAAK,KAAK,KAAK,aAAa;AAAA,IACnD;AAAA,IACA,YAAY;AACV,YAAM,OAAO,KAAK;AAClB,YAAM,YAAY,KAAK;AACvB,YAAM,YAAYvQ,QAAO,UAAU,IAAI;AACvC,YAAM,eAAeC,WAAU,UAAU,OAAO;AAChD,UAAI,CAAC,UAAU,SAAS;AACtB;AAAA,MACF;AACA,YAAM,YAAYkQ,eAAc,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK;AAC/D,YAAM,MAAM,KAAK;AACjB,YAAM9P,YAAW,UAAU;AAC3B,YAAM,eAAe,UAAU,OAAO;AACtC,YAAM,6BAA6B,aAAa,MAAM;AACtD,UAAIvH;AACJ,UAAI0H,QAAO,KAAK;AAChB,UAAI,WAAW,KAAK;AACpB,UAAI,KAAK,aAAa,GAAG;AACvB,mBAAW,KAAK,IAAI,GAAG,KAAK,UAAU;AACtC,QAAA1H,KAAI,KAAK,MAAM;AACf,QAAA0H,QAAOI,gBAAe,KAAK,OAAOJ,OAAM,KAAK,QAAQ,QAAQ;AAAA,MAC/D,OAAO;AACL,cAAM,YAAY,KAAK,YAAY,OAAO,CAAC,KAAKzE,UAAS,KAAK,IAAI,KAAKA,MAAK,MAAM,GAAG,CAAC;AACtF,QAAAjD,KAAI,6BAA6B8H,gBAAe,KAAK,OAAO,KAAK,KAAK,KAAK,SAAS,YAAY,KAAK,OAAO,UAAU,KAAK,oBAAoB,CAAC;AAAA,MAClJ;AACA,YAAM/H,KAAI+H,gBAAeP,WAAUG,OAAMA,QAAO,QAAQ;AACxD,UAAI,YAAY,UAAU,UAAUF,oBAAmBD,SAAQ,CAAC;AAChE,UAAI,eAAe;AACnB,UAAI,cAAc,UAAU;AAC5B,UAAI,YAAY,UAAU;AAC1B,UAAI,OAAO,UAAU;AACrB,MAAAwB,YAAW,KAAK,UAAU,MAAMhJ,IAAGC,IAAG,SAAS;AAAA,IACjD;AAAA,IACA,sBAAsB;AACpB,YAAM,YAAY,KAAK,QAAQ;AAC/B,YAAM,YAAYkH,QAAO,UAAU,IAAI;AACvC,YAAM,eAAeC,WAAU,UAAU,OAAO;AAChD,aAAO,UAAU,UAAU,UAAU,aAAa,aAAa,SAAS;AAAA,IAC1E;AAAA,IACA,iBAAiBpH,IAAGC,IAAG;AACrB,UAAIhC,IAAG,QAAQ;AACf,UAAIuU,YAAWxS,IAAG,KAAK,MAAM,KAAK,KAAK,KAClCwS,YAAWvS,IAAG,KAAK,KAAK,KAAK,MAAM,GAAG;AACzC,aAAK,KAAK;AACV,aAAKhC,KAAI,GAAGA,KAAI,GAAG,QAAQ,EAAEA,IAAG;AAC9B,mBAAS,GAAGA,EAAC;AACb,cAAIuU,YAAWxS,IAAG,OAAO,MAAM,OAAO,OAAO,OAAO,KAAK,KACpDwS,YAAWvS,IAAG,OAAO,KAAK,OAAO,MAAM,OAAO,MAAM,GAAG;AAC1D,mBAAO,KAAK,YAAYhC,EAAC;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,YAAYkH,IAAG;AACb,YAAM,OAAO,KAAK;AAClB,UAAI,CAACwS,YAAWxS,GAAE,MAAM,IAAI,GAAG;AAC7B;AAAA,MACF;AACA,YAAM,cAAc,KAAK,iBAAiBA,GAAE,GAAGA,GAAE,CAAC;AAClD,UAAIA,GAAE,SAAS,eAAeA,GAAE,SAAS,YAAY;AACnD,cAAM,WAAW,KAAK;AACtB,cAAM,WAAWiS,YAAW,UAAU,WAAW;AACjD,YAAI,YAAY,CAAC,UAAU;AACzB,UAAAlP,UAAS,KAAK,SAAS,CAAC/C,IAAG,UAAU,IAAI,GAAG,IAAI;AAAA,QAClD;AACA,aAAK,eAAe;AACpB,YAAI,eAAe,CAAC,UAAU;AAC5B,UAAA+C,UAAS,KAAK,SAAS,CAAC/C,IAAG,aAAa,IAAI,GAAG,IAAI;AAAA,QACrD;AAAA,MACF,WAAW,aAAa;AACtB,QAAA+C,UAAS,KAAK,SAAS,CAAC/C,IAAG,aAAa,IAAI,GAAG,IAAI;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AACA,WAASwS,YAAW,MAAM,MAAM;AAC9B,SAAK,SAAS,eAAe,SAAS,gBAAgB,KAAK,WAAW,KAAK,UAAU;AACnF,aAAO;AAAA,IACT;AACA,QAAI,KAAK,YAAY,SAAS,WAAW,SAAS,YAAY;AAC5D,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,MAAIC,iBAAgB;AAAA,IAClB,IAAI;AAAA,IACJ,UAAUP;AAAA,IACV,MAAM,OAAO,OAAO7X,UAAS;AAC3B,YAAM,SAAS,MAAM,SAAS,IAAI6X,QAAO,EAAC,KAAK,MAAM,KAAK,SAAA7X,UAAS,MAAK,CAAC;AACzE,MAAA+L,SAAQ,UAAU,OAAO,QAAQ/L,QAAO;AACxC,MAAA+L,SAAQ,OAAO,OAAO,MAAM;AAAA,IAC9B;AAAA,IACA,KAAK,OAAO;AACV,MAAAA,SAAQ,UAAU,OAAO,MAAM,MAAM;AACrC,aAAO,MAAM;AAAA,IACf;AAAA,IACA,aAAa,OAAO,OAAO/L,UAAS;AAClC,YAAM,SAAS,MAAM;AACrB,MAAA+L,SAAQ,UAAU,OAAO,QAAQ/L,QAAO;AACxC,aAAO,UAAUA;AAAA,IACnB;AAAA,IACA,YAAY,OAAO;AACjB,YAAM,SAAS,MAAM;AACrB,aAAO,YAAY;AACnB,aAAO,eAAe;AAAA,IACxB;AAAA,IACA,WAAW,OAAO,MAAM;AACtB,UAAI,CAAC,KAAK,QAAQ;AAChB,cAAM,OAAO,YAAY,KAAK,KAAK;AAAA,MACrC;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ2F,IAAG,YAAY,QAAQ;AAC7B,cAAMhE,SAAQ,WAAW;AACzB,cAAM,KAAK,OAAO;AAClB,YAAI,GAAG,iBAAiBA,MAAK,GAAG;AAC9B,aAAG,KAAKA,MAAK;AACb,qBAAW,SAAS;AAAA,QACtB,OAAO;AACL,aAAG,KAAKA,MAAK;AACb,qBAAW,SAAS;AAAA,QACtB;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,QACN,OAAO,CAAC,QAAQ,IAAI,MAAM,QAAQ;AAAA,QAClC,UAAU;AAAA,QACV,SAAS;AAAA,QACT,eAAe,OAAO;AACpB,gBAAM,WAAW,MAAM,KAAK;AAC5B,gBAAM,EAAC,QAAQ,EAAC,eAAe,YAAY,WAAW,OAAA3C,OAAK,EAAC,IAAI,MAAM,OAAO;AAC7E,iBAAO,MAAM,uBAAuB,EAAE,IAAI,CAAC,SAAS;AAClD,kBAAM,QAAQ,KAAK,WAAW,SAAS,gBAAgB,IAAI,MAAS;AACpE,kBAAM,cAAc4I,WAAU,MAAM,WAAW;AAC/C,mBAAO;AAAA,cACL,MAAM,SAAS,KAAK,KAAK,EAAE;AAAA,cAC3B,WAAW,MAAM;AAAA,cACjB,WAAW5I;AAAA,cACX,QAAQ,CAAC,KAAK;AAAA,cACd,SAAS,MAAM;AAAA,cACf,UAAU,MAAM;AAAA,cAChB,gBAAgB,MAAM;AAAA,cACtB,UAAU,MAAM;AAAA,cAChB,YAAY,YAAY,QAAQ,YAAY,UAAU;AAAA,cACtD,aAAa,MAAM;AAAA,cACnB,YAAY,cAAc,MAAM;AAAA,cAChC,UAAU,MAAM;AAAA,cAChB,WAAW,aAAa,MAAM;AAAA,cAC9B,cAAc;AAAA,cACd,cAAc,KAAK;AAAA,YACrB;AAAA,UACF,GAAG,IAAI;AAAA,QACT;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,OAAO,CAAC,QAAQ,IAAI,MAAM,QAAQ;AAAA,QAClC,SAAS;AAAA,QACT,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,aAAa,CAACQ,UAAS,CAACA,MAAK,WAAW,IAAI;AAAA,MAC5C,QAAQ;AAAA,QACN,aAAa,CAACA,UAAS,CAAC,CAAC,kBAAkB,UAAU,MAAM,EAAE,SAASA,KAAI;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AAEA,MAAM6Y,SAAN,cAAoBjS,SAAQ;AAAA,IAC1B,YAAYzG,SAAQ;AAClB,YAAM;AACN,WAAK,QAAQA,QAAO;AACpB,WAAK,UAAUA,QAAO;AACtB,WAAK,MAAMA,QAAO;AAClB,WAAK,WAAW;AAChB,WAAK,MAAM;AACX,WAAK,SAAS;AACd,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,WAAW;AAChB,WAAK,SAAS;AACd,WAAK,WAAW;AAAA,IAClB;AAAA,IACA,OAAO,UAAU,WAAW;AAC1B,YAAM,OAAO,KAAK;AAClB,WAAK,OAAO;AACZ,WAAK,MAAM;AACX,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK,SAAS;AACtD;AAAA,MACF;AACA,WAAK,QAAQ,KAAK,QAAQ;AAC1B,WAAK,SAAS,KAAK,SAAS;AAC5B,YAAM,YAAYI,SAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAC1D,WAAK,WAAW6H,WAAU,KAAK,OAAO;AACtC,YAAM,WAAW,YAAYD,QAAO,KAAK,IAAI,EAAE,aAAa,KAAK,SAAS;AAC1E,UAAI,KAAK,aAAa,GAAG;AACvB,aAAK,SAAS;AAAA,MAChB,OAAO;AACL,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,IACA,eAAe;AACb,YAAM,MAAM,KAAK,QAAQ;AACzB,aAAO,QAAQ,SAAS,QAAQ;AAAA,IAClC;AAAA,IACA,UAAUZ,SAAQ;AAChB,YAAM,EAAC,KAAA3C,MAAK,MAAA+D,OAAM,QAAA9D,SAAQ,OAAA+D,QAAO,SAAApI,SAAO,IAAI;AAC5C,YAAM,QAAQA,SAAQ;AACtB,UAAI,WAAW;AACf,UAAI,UAAU,QAAQ;AACtB,UAAI,KAAK,aAAa,GAAG;AACvB,iBAASuI,gBAAe,OAAOJ,OAAMC,MAAK;AAC1C,iBAAShE,OAAM2C;AACf,mBAAWqB,SAAQD;AAAA,MACrB,OAAO;AACL,YAAInI,SAAQ,aAAa,QAAQ;AAC/B,mBAASmI,QAAOpB;AAChB,mBAASwB,gBAAe,OAAOlE,SAAQD,IAAG;AAC1C,qBAAWiB,MAAK;AAAA,QAClB,OAAO;AACL,mBAAS+C,SAAQrB;AACjB,mBAASwB,gBAAe,OAAOnE,MAAKC,OAAM;AAC1C,qBAAWgB,MAAK;AAAA,QAClB;AACA,mBAAWhB,UAASD;AAAA,MACtB;AACA,aAAO,EAAC,QAAQ,QAAQ,UAAU,SAAQ;AAAA,IAC5C;AAAA,IACA,OAAO;AACL,YAAM,MAAM,KAAK;AACjB,YAAM,OAAO,KAAK;AAClB,UAAI,CAAC,KAAK,SAAS;AACjB;AAAA,MACF;AACA,YAAM,WAAWuD,QAAO,KAAK,IAAI;AACjC,YAAM,aAAa,SAAS;AAC5B,YAAMZ,UAAS,aAAa,IAAI,KAAK,SAAS;AAC9C,YAAM,EAAC,QAAQ,QAAQ,UAAU,SAAQ,IAAI,KAAK,UAAUA,OAAM;AAClE,MAAAyC,YAAW,KAAK,KAAK,MAAM,GAAG,GAAG,UAAU;AAAA,QACzC,OAAO,KAAK;AAAA,QACZ;AAAA,QACA;AAAA,QACA,WAAWvB,oBAAmB,KAAK,KAAK;AAAA,QACxC,cAAc;AAAA,QACd,aAAa,CAAC,QAAQ,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,EACF;AACA,WAASqQ,aAAY,OAAO,WAAW;AACrC,UAAM,QAAQ,IAAID,OAAM;AAAA,MACtB,KAAK,MAAM;AAAA,MACX,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAtM,SAAQ,UAAU,OAAO,OAAO,SAAS;AACzC,IAAAA,SAAQ,OAAO,OAAO,KAAK;AAC3B,UAAM,aAAa;AAAA,EACrB;AACA,MAAIwM,gBAAe;AAAA,IACjB,IAAI;AAAA,IACJ,UAAUF;AAAA,IACV,MAAM,OAAO,OAAOrY,UAAS;AAC3B,MAAAsY,aAAY,OAAOtY,QAAO;AAAA,IAC5B;AAAA,IACA,KAAK,OAAO;AACV,YAAM,aAAa,MAAM;AACzB,MAAA+L,SAAQ,UAAU,OAAO,UAAU;AACnC,aAAO,MAAM;AAAA,IACf;AAAA,IACA,aAAa,OAAO,OAAO/L,UAAS;AAClC,YAAM,QAAQ,MAAM;AACpB,MAAA+L,SAAQ,UAAU,OAAO,OAAO/L,QAAO;AACvC,YAAM,UAAUA;AAAA,IAClB;AAAA,IACA,UAAU;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,QAAQ;AAAA,MACV;AAAA,MACA,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA,eAAe;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IACA,aAAa;AAAA,MACX,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAMwY,OAAM,oBAAI,QAAQ;AACxB,MAAIC,mBAAkB;AAAA,IACpB,IAAI;AAAA,IACJ,MAAM,OAAO,OAAOzY,UAAS;AAC3B,YAAM,QAAQ,IAAIqY,OAAM;AAAA,QACtB,KAAK,MAAM;AAAA,QACX,SAAArY;AAAA,QACA;AAAA,MACF,CAAC;AACD,MAAA+L,SAAQ,UAAU,OAAO,OAAO/L,QAAO;AACvC,MAAA+L,SAAQ,OAAO,OAAO,KAAK;AAC3B,MAAAyM,KAAI,IAAI,OAAO,KAAK;AAAA,IACtB;AAAA,IACA,KAAK,OAAO;AACV,MAAAzM,SAAQ,UAAU,OAAOyM,KAAI,IAAI,KAAK,CAAC;AACvC,MAAAA,KAAI,OAAO,KAAK;AAAA,IAClB;AAAA,IACA,aAAa,OAAO,OAAOxY,UAAS;AAClC,YAAM,QAAQwY,KAAI,IAAI,KAAK;AAC3B,MAAAzM,SAAQ,UAAU,OAAO,OAAO/L,QAAO;AACvC,YAAM,UAAUA;AAAA,IAClB;AAAA,IACA,UAAU;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,QAAQ;AAAA,MACV;AAAA,MACA,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA,eAAe;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IACA,aAAa;AAAA,MACX,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAM0Y,eAAc;AAAA,IAClB,QAAQ,OAAO;AACb,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO;AAAA,MACT;AACA,UAAIja,IAAG;AACP,UAAI+B,KAAI;AACR,UAAIC,KAAI;AACR,UAAI,QAAQ;AACZ,WAAKhC,KAAI,GAAG,MAAM,MAAM,QAAQA,KAAI,KAAK,EAAEA,IAAG;AAC5C,cAAM,KAAK,MAAMA,EAAC,EAAE;AACpB,YAAI,MAAM,GAAG,SAAS,GAAG;AACvB,gBAAM,MAAM,GAAG,gBAAgB;AAC/B,UAAA+B,MAAK,IAAI;AACT,UAAAC,MAAK,IAAI;AACT,YAAE;AAAA,QACJ;AAAA,MACF;AACA,aAAO;AAAA,QACL,GAAGD,KAAI;AAAA,QACP,GAAGC,KAAI;AAAA,MACT;AAAA,IACF;AAAA,IACA,QAAQ,OAAO,eAAe;AAC5B,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO;AAAA,MACT;AACA,UAAID,KAAI,cAAc;AACtB,UAAIC,KAAI,cAAc;AACtB,UAAI,cAAc,OAAO;AACzB,UAAIhC,IAAG,KAAK;AACZ,WAAKA,KAAI,GAAG,MAAM,MAAM,QAAQA,KAAI,KAAK,EAAEA,IAAG;AAC5C,cAAM,KAAK,MAAMA,EAAC,EAAE;AACpB,YAAI,MAAM,GAAG,SAAS,GAAG;AACvB,gBAAMqG,UAAS,GAAG,eAAe;AACjC,gBAAM6Q,KAAIgD,uBAAsB,eAAe7T,OAAM;AACrD,cAAI6Q,KAAI,aAAa;AACnB,0BAAcA;AACd,6BAAiB;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AACA,UAAI,gBAAgB;AAClB,cAAM,KAAK,eAAe,gBAAgB;AAC1C,QAAAnV,KAAI,GAAG;AACP,QAAAC,KAAI,GAAG;AAAA,MACT;AACA,aAAO;AAAA,QACL,GAAAD;AAAA,QACA,GAAAC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAASmY,cAAa,MAAM,QAAQ;AAClC,QAAI,QAAQ;AACV,UAAI7Y,SAAQ,MAAM,GAAG;AACnB,cAAM,UAAU,KAAK,MAAM,MAAM,MAAM;AAAA,MACzC,OAAO;AACL,aAAK,KAAK,MAAM;AAAA,MAClB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS8Y,eAAc,KAAK;AAC1B,SAAK,OAAO,QAAQ,YAAY,eAAe,WAAW,IAAI,QAAQ,IAAI,IAAI,IAAI;AAChF,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AACA,WAASC,mBAAkB,OAAO,MAAM;AACtC,UAAM,EAAC,SAAS,cAAc,OAAAnX,OAAK,IAAI;AACvC,UAAM,aAAa,MAAM,eAAe,YAAY,EAAE;AACtD,UAAM,EAAC,OAAO,MAAK,IAAI,WAAW,iBAAiBA,MAAK;AACxD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,QAAQ,WAAW,UAAUA,MAAK;AAAA,MAClC,KAAK,MAAM,KAAK,SAAS,YAAY,EAAE,KAAKA,MAAK;AAAA,MACjD,gBAAgB;AAAA,MAChB,SAAS,WAAW,WAAW;AAAA,MAC/B,WAAWA;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,WAASoX,gBAAe,SAAS/Y,UAAS;AACxC,UAAM,MAAM,QAAQ,MAAM;AAC1B,UAAM,EAAC,MAAM,QAAQ,MAAK,IAAI;AAC9B,UAAM,EAAC,UAAU,UAAS,IAAIA;AAC9B,UAAM,WAAW2H,QAAO3H,SAAQ,QAAQ;AACxC,UAAM,YAAY2H,QAAO3H,SAAQ,SAAS;AAC1C,UAAM,aAAa2H,QAAO3H,SAAQ,UAAU;AAC5C,UAAM,iBAAiB,MAAM;AAC7B,UAAM,kBAAkB,OAAO;AAC/B,UAAM,oBAAoB,KAAK;AAC/B,UAAM,UAAU4H,WAAU5H,SAAQ,OAAO;AACzC,QAAIqI,UAAS,QAAQ;AACrB,QAAIC,SAAQ;AACZ,QAAI,qBAAqB,KAAK,OAAO,CAAC,OAAO,aAAa,QAAQ,SAAS,OAAO,SAAS,SAAS,MAAM,SAAS,SAAS,MAAM,QAAQ,CAAC;AAC3I,0BAAsB,QAAQ,WAAW,SAAS,QAAQ,UAAU;AACpE,QAAI,gBAAgB;AAClB,MAAAD,WAAU,iBAAiB,UAAU,cACnC,iBAAiB,KAAKrI,SAAQ,eAC/BA,SAAQ;AAAA,IACX;AACA,QAAI,oBAAoB;AACtB,YAAM,iBAAiBA,SAAQ,gBAAgB,KAAK,IAAI,WAAW,SAAS,UAAU,IAAI,SAAS;AACnG,MAAAqI,WAAU,oBAAoB,kBAC5B,qBAAqB,qBAAqB,SAAS,cACnD,qBAAqB,KAAKrI,SAAQ;AAAA,IACtC;AACA,QAAI,iBAAiB;AACnB,MAAAqI,WAAUrI,SAAQ,kBACjB,kBAAkB,WAAW,cAC5B,kBAAkB,KAAKA,SAAQ;AAAA,IACnC;AACA,QAAI,eAAe;AACnB,UAAM,eAAe,SAAS,MAAM;AAClC,MAAAsI,SAAQ,KAAK,IAAIA,QAAO,IAAI,YAAY,IAAI,EAAE,QAAQ,YAAY;AAAA,IACpE;AACA,QAAI,KAAK;AACT,QAAI,OAAO,UAAU;AACrB,IAAAd,MAAK,QAAQ,OAAO,YAAY;AAChC,QAAI,OAAO,SAAS;AACpB,IAAAA,MAAK,QAAQ,WAAW,OAAO,QAAQ,SAAS,GAAG,YAAY;AAC/D,mBAAexH,SAAQ,gBAAiB,WAAW,IAAIA,SAAQ,aAAc;AAC7E,IAAAwH,MAAK,MAAM,CAAC,aAAa;AACvB,MAAAA,MAAK,SAAS,QAAQ,YAAY;AAClC,MAAAA,MAAK,SAAS,OAAO,YAAY;AACjC,MAAAA,MAAK,SAAS,OAAO,YAAY;AAAA,IACnC,CAAC;AACD,mBAAe;AACf,QAAI,OAAO,WAAW;AACtB,IAAAA,MAAK,QAAQ,QAAQ,YAAY;AACjC,QAAI,QAAQ;AACZ,IAAAc,UAAS,QAAQ;AACjB,WAAO,EAAC,OAAAA,QAAO,QAAAD,QAAM;AAAA,EACvB;AACA,WAAS2Q,iBAAgB,OAAOtV,OAAM;AACpC,UAAM,EAAC,GAAAjD,IAAG,QAAA4H,QAAM,IAAI3E;AACpB,QAAIjD,KAAI4H,UAAS,GAAG;AAClB,aAAO;AAAA,IACT,WAAW5H,KAAK,MAAM,SAAS4H,UAAS,GAAI;AAC1C,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAAS4Q,qBAAoB,QAAQ,OAAOjZ,UAAS0D,OAAM;AACzD,UAAM,EAAC,GAAAlD,IAAG,OAAA8H,OAAK,IAAI5E;AACnB,UAAM,QAAQ1D,SAAQ,YAAYA,SAAQ;AAC1C,QAAI,WAAW,UAAUQ,KAAI8H,SAAQ,QAAQ,MAAM,OAAO;AACxD,aAAO;AAAA,IACT;AACA,QAAI,WAAW,WAAW9H,KAAI8H,SAAQ,QAAQ,GAAG;AAC/C,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS4Q,iBAAgB,OAAOlZ,UAAS0D,OAAM,QAAQ;AACrD,UAAM,EAAC,GAAAlD,IAAG,OAAA8H,OAAK,IAAI5E;AACnB,UAAM,EAAC,OAAO,YAAY,WAAW,EAAC,MAAAyE,OAAM,OAAAC,OAAK,EAAC,IAAI;AACtD,QAAI,SAAS;AACb,QAAI,WAAW,UAAU;AACvB,eAAS5H,OAAM2H,QAAOC,UAAS,IAAI,SAAS;AAAA,IAC9C,WAAW5H,MAAK8H,SAAQ,GAAG;AACzB,eAAS;AAAA,IACX,WAAW9H,MAAK,aAAa8H,SAAQ,GAAG;AACtC,eAAS;AAAA,IACX;AACA,QAAI2Q,qBAAoB,QAAQ,OAAOjZ,UAAS0D,KAAI,GAAG;AACrD,eAAS;AAAA,IACX;AACA,WAAO;AAAA,EACT;AACA,WAASyV,oBAAmB,OAAOnZ,UAAS0D,OAAM;AAChD,UAAM,SAASA,MAAK,UAAU1D,SAAQ,UAAUgZ,iBAAgB,OAAOtV,KAAI;AAC3E,WAAO;AAAA,MACL,QAAQA,MAAK,UAAU1D,SAAQ,UAAUkZ,iBAAgB,OAAOlZ,UAAS0D,OAAM,MAAM;AAAA,MACrF;AAAA,IACF;AAAA,EACF;AACA,WAAS0V,QAAO1V,OAAM,QAAQ;AAC5B,QAAI,EAAC,GAAAlD,IAAG,OAAA8H,OAAK,IAAI5E;AACjB,QAAI,WAAW,SAAS;AACtB,MAAAlD,MAAK8H;AAAA,IACP,WAAW,WAAW,UAAU;AAC9B,MAAA9H,MAAM8H,SAAQ;AAAA,IAChB;AACA,WAAO9H;AAAA,EACT;AACA,WAAS6Y,QAAO3V,OAAM,QAAQ,gBAAgB;AAC5C,QAAI,EAAC,GAAAjD,IAAG,QAAA4H,QAAM,IAAI3E;AAClB,QAAI,WAAW,OAAO;AACpB,MAAAjD,MAAK;AAAA,IACP,WAAW,WAAW,UAAU;AAC9B,MAAAA,MAAK4H,UAAS;AAAA,IAChB,OAAO;AACL,MAAA5H,MAAM4H,UAAS;AAAA,IACjB;AACA,WAAO5H;AAAA,EACT;AACA,WAAS6Y,oBAAmBtZ,UAAS0D,OAAM,WAAW,OAAO;AAC3D,UAAM,EAAC,WAAW,cAAc,aAAY,IAAI1D;AAChD,UAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,UAAM,iBAAiB,YAAY;AACnC,UAAM,EAAC,SAAS,UAAU,YAAY,YAAW,IAAI6U,eAAc,YAAY;AAC/E,QAAIrU,KAAI4Y,QAAO1V,OAAM,MAAM;AAC3B,UAAMjD,KAAI4Y,QAAO3V,OAAM,QAAQ,cAAc;AAC7C,QAAI,WAAW,UAAU;AACvB,UAAI,WAAW,QAAQ;AACrB,QAAAlD,MAAK;AAAA,MACP,WAAW,WAAW,SAAS;AAC7B,QAAAA,MAAK;AAAA,MACP;AAAA,IACF,WAAW,WAAW,QAAQ;AAC5B,MAAAA,MAAK,KAAK,IAAI,SAAS,UAAU,IAAI;AAAA,IACvC,WAAW,WAAW,SAAS;AAC7B,MAAAA,MAAK,KAAK,IAAI,UAAU,WAAW,IAAI;AAAA,IACzC;AACA,WAAO;AAAA,MACL,GAAGoI,aAAYpI,IAAG,GAAG,MAAM,QAAQkD,MAAK,KAAK;AAAA,MAC7C,GAAGkF,aAAYnI,IAAG,GAAG,MAAM,SAASiD,MAAK,MAAM;AAAA,IACjD;AAAA,EACF;AACA,WAAS6V,aAAY,SAAS,OAAOvZ,UAAS;AAC5C,UAAM,UAAU4H,WAAU5H,SAAQ,OAAO;AACzC,WAAO,UAAU,WACb,QAAQ,IAAI,QAAQ,QAAQ,IAC5B,UAAU,UACR,QAAQ,IAAI,QAAQ,QAAQ,QAAQ,QACpC,QAAQ,IAAI,QAAQ;AAAA,EAC5B;AACA,WAASwZ,yBAAwB9Q,WAAU;AACzC,WAAOkQ,cAAa,CAAC,GAAGC,eAAcnQ,SAAQ,CAAC;AAAA,EACjD;AACA,WAAS+Q,sBAAqB,QAAQ,SAAS,cAAc;AAC3D,WAAO1X,eAAc,QAAQ;AAAA,MAC3B;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,WAAS2X,mBAAkB,WAAW,SAAS;AAC7C,UAAM,WAAW,WAAW,QAAQ,WAAW,QAAQ,QAAQ,WAAW,QAAQ,QAAQ,QAAQ;AAClG,WAAO,WAAW,UAAU,SAAS,QAAQ,IAAI;AAAA,EACnD;AACA,MAAMC,WAAN,cAAsBvT,SAAQ;AAAA,IAC5B,YAAYzG,SAAQ;AAClB,YAAM;AACN,WAAK,UAAU;AACf,WAAK,UAAU,CAAC;AAChB,WAAK,iBAAiB;AACtB,WAAK,QAAQ;AACb,WAAK,oBAAoB;AACzB,WAAK,gBAAgB,CAAC;AACtB,WAAK,cAAc;AACnB,WAAK,WAAW;AAChB,WAAK,QAAQA,QAAO,SAASA,QAAO;AACpC,WAAK,SAAS,KAAK;AACnB,WAAK,UAAUA,QAAO;AACtB,WAAK,aAAa;AAClB,WAAK,QAAQ;AACb,WAAK,aAAa;AAClB,WAAK,OAAO;AACZ,WAAK,YAAY;AACjB,WAAK,SAAS;AACd,WAAK,SAAS;AACd,WAAK,SAAS;AACd,WAAK,IAAI;AACT,WAAK,IAAI;AACT,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,SAAS;AACd,WAAK,cAAc;AACnB,WAAK,mBAAmB;AACxB,WAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,WAAWK,UAAS;AAClB,WAAK,UAAUA;AACf,WAAK,oBAAoB;AACzB,WAAK,WAAW;AAAA,IAClB;AAAA,IACA,qBAAqB;AACnB,YAAM,SAAS,KAAK;AACpB,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,KAAK;AACnB,YAAMA,WAAU,KAAK,QAAQ,WAAW,KAAK,WAAW,CAAC;AACzD,YAAM,OAAOA,SAAQ,WAAW,MAAM,QAAQ,aAAaA,SAAQ;AACnE,YAAM,aAAa,IAAIN,YAAW,KAAK,OAAO,IAAI;AAClD,UAAI,KAAK,YAAY;AACnB,aAAK,oBAAoB,OAAO,OAAO,UAAU;AAAA,MACnD;AACA,aAAO;AAAA,IACT;AAAA,IACA,aAAa;AACX,aAAO,KAAK,aACZ,KAAK,WAAW+Z,sBAAqB,KAAK,MAAM,WAAW,GAAG,MAAM,KAAK,aAAa;AAAA,IACxF;AAAA,IACA,SAAS,SAASzZ,UAAS;AACzB,YAAM,EAAC,UAAS,IAAIA;AACpB,YAAM,cAAc,UAAU,YAAY,MAAM,MAAM,CAAC,OAAO,CAAC;AAC/D,YAAM,QAAQ,UAAU,MAAM,MAAM,MAAM,CAAC,OAAO,CAAC;AACnD,YAAM,aAAa,UAAU,WAAW,MAAM,MAAM,CAAC,OAAO,CAAC;AAC7D,UAAI,QAAQ,CAAC;AACb,cAAQ4Y,cAAa,OAAOC,eAAc,WAAW,CAAC;AACtD,cAAQD,cAAa,OAAOC,eAAc,KAAK,CAAC;AAChD,cAAQD,cAAa,OAAOC,eAAc,UAAU,CAAC;AACrD,aAAO;AAAA,IACT;AAAA,IACA,cAAc,cAAc7Y,UAAS;AACnC,aAAOwZ,yBAAwBxZ,SAAQ,UAAU,WAAW,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAAA,IACzF;AAAA,IACA,QAAQ,cAAcA,UAAS;AAC7B,YAAM,EAAC,UAAS,IAAIA;AACpB,YAAM,YAAY,CAAC;AACnB,MAAAwH,MAAK,cAAc,CAAC,YAAY;AAC9B,cAAM,WAAW;AAAA,UACf,QAAQ,CAAC;AAAA,UACT,OAAO,CAAC;AAAA,UACR,OAAO,CAAC;AAAA,QACV;AACA,cAAM,SAASkS,mBAAkB,WAAW,OAAO;AACnD,QAAAd,cAAa,SAAS,QAAQC,eAAc,OAAO,YAAY,KAAK,MAAM,OAAO,CAAC,CAAC;AACnF,QAAAD,cAAa,SAAS,OAAO,OAAO,MAAM,KAAK,MAAM,OAAO,CAAC;AAC7D,QAAAA,cAAa,SAAS,OAAOC,eAAc,OAAO,WAAW,KAAK,MAAM,OAAO,CAAC,CAAC;AACjF,kBAAU,KAAK,QAAQ;AAAA,MACzB,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,aAAa,cAAc7Y,UAAS;AAClC,aAAOwZ,yBAAwBxZ,SAAQ,UAAU,UAAU,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAAA,IACxF;AAAA,IACA,UAAU,cAAcA,UAAS;AAC/B,YAAM,EAAC,UAAS,IAAIA;AACpB,YAAM,eAAe,UAAU,aAAa,MAAM,MAAM,CAAC,YAAY,CAAC;AACtE,YAAM,SAAS,UAAU,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC;AAC1D,YAAM,cAAc,UAAU,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC;AACpE,UAAI,QAAQ,CAAC;AACb,cAAQ4Y,cAAa,OAAOC,eAAc,YAAY,CAAC;AACvD,cAAQD,cAAa,OAAOC,eAAc,MAAM,CAAC;AACjD,cAAQD,cAAa,OAAOC,eAAc,WAAW,CAAC;AACtD,aAAO;AAAA,IACT;AAAA,IACA,aAAa7Y,UAAS;AACpB,YAAM8C,UAAS,KAAK;AACpB,YAAM1B,QAAO,KAAK,MAAM;AACxB,YAAM,cAAc,CAAC;AACrB,YAAM,mBAAmB,CAAC;AAC1B,YAAM,kBAAkB,CAAC;AACzB,UAAI,eAAe,CAAC;AACpB,UAAI3C,IAAG;AACP,WAAKA,KAAI,GAAG,MAAMqE,QAAO,QAAQrE,KAAI,KAAK,EAAEA,IAAG;AAC7C,qBAAa,KAAKqa,mBAAkB,KAAK,OAAOhW,QAAOrE,EAAC,CAAC,CAAC;AAAA,MAC5D;AACA,UAAIuB,SAAQ,QAAQ;AAClB,uBAAe,aAAa,OAAO,CAAC,SAAS2B,QAAO+J,WAAU1L,SAAQ,OAAO,SAAS2B,QAAO+J,QAAOtK,KAAI,CAAC;AAAA,MAC3G;AACA,UAAIpB,SAAQ,UAAU;AACpB,uBAAe,aAAa,KAAK,CAACuD,IAAG1C,OAAMb,SAAQ,SAASuD,IAAG1C,IAAGO,KAAI,CAAC;AAAA,MACzE;AACA,MAAAoG,MAAK,cAAc,CAAC,YAAY;AAC9B,cAAM,SAASkS,mBAAkB1Z,SAAQ,WAAW,OAAO;AAC3D,oBAAY,KAAK,OAAO,WAAW,KAAK,MAAM,OAAO,CAAC;AACtD,yBAAiB,KAAK,OAAO,gBAAgB,KAAK,MAAM,OAAO,CAAC;AAChE,wBAAgB,KAAK,OAAO,eAAe,KAAK,MAAM,OAAO,CAAC;AAAA,MAChE,CAAC;AACD,WAAK,cAAc;AACnB,WAAK,mBAAmB;AACxB,WAAK,kBAAkB;AACvB,WAAK,aAAa;AAClB,aAAO;AAAA,IACT;AAAA,IACA,OAAO,SAAS,QAAQ;AACtB,YAAMA,WAAU,KAAK,QAAQ,WAAW,KAAK,WAAW,CAAC;AACzD,YAAM8C,UAAS,KAAK;AACpB,UAAI;AACJ,UAAI,eAAe,CAAC;AACpB,UAAI,CAACA,QAAO,QAAQ;AAClB,YAAI,KAAK,YAAY,GAAG;AACtB,uBAAa;AAAA,YACX,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF,OAAO;AACL,cAAMkF,YAAW0Q,aAAY1Y,SAAQ,QAAQ,EAAE,KAAK,MAAM8C,SAAQ,KAAK,cAAc;AACrF,uBAAe,KAAK,aAAa9C,QAAO;AACxC,aAAK,QAAQ,KAAK,SAAS,cAAcA,QAAO;AAChD,aAAK,aAAa,KAAK,cAAc,cAAcA,QAAO;AAC1D,aAAK,OAAO,KAAK,QAAQ,cAAcA,QAAO;AAC9C,aAAK,YAAY,KAAK,aAAa,cAAcA,QAAO;AACxD,aAAK,SAAS,KAAK,UAAU,cAAcA,QAAO;AAClD,cAAM0D,QAAO,KAAK,QAAQqV,gBAAe,MAAM/Y,QAAO;AACtD,cAAM,kBAAkB,OAAO,OAAO,CAAC,GAAGgI,WAAUtE,KAAI;AACxD,cAAM,YAAYyV,oBAAmB,KAAK,OAAOnZ,UAAS,eAAe;AACzE,cAAM,kBAAkBsZ,oBAAmBtZ,UAAS,iBAAiB,WAAW,KAAK,KAAK;AAC1F,aAAK,SAAS,UAAU;AACxB,aAAK,SAAS,UAAU;AACxB,qBAAa;AAAA,UACX,SAAS;AAAA,UACT,GAAG,gBAAgB;AAAA,UACnB,GAAG,gBAAgB;AAAA,UACnB,OAAO0D,MAAK;AAAA,UACZ,QAAQA,MAAK;AAAA,UACb,QAAQsE,UAAS;AAAA,UACjB,QAAQA,UAAS;AAAA,QACnB;AAAA,MACF;AACA,WAAK,gBAAgB;AACrB,WAAK,WAAW;AAChB,UAAI,YAAY;AACd,aAAK,mBAAmB,EAAE,OAAO,MAAM,UAAU;AAAA,MACnD;AACA,UAAI,WAAWhI,SAAQ,UAAU;AAC/B,QAAAA,SAAQ,SAAS,KAAK,MAAM,EAAC,OAAO,KAAK,OAAO,SAAS,MAAM,OAAM,CAAC;AAAA,MACxE;AAAA,IACF;AAAA,IACA,UAAU,cAAc,KAAK0D,OAAM1D,UAAS;AAC1C,YAAM,gBAAgB,KAAK,iBAAiB,cAAc0D,OAAM1D,QAAO;AACvE,UAAI,OAAO,cAAc,IAAI,cAAc,EAAE;AAC7C,UAAI,OAAO,cAAc,IAAI,cAAc,EAAE;AAC7C,UAAI,OAAO,cAAc,IAAI,cAAc,EAAE;AAAA,IAC/C;AAAA,IACA,iBAAiB,cAAc0D,OAAM1D,UAAS;AAC5C,YAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,YAAM,EAAC,WAAW,aAAY,IAAIA;AAClC,YAAM,EAAC,SAAS,UAAU,YAAY,YAAW,IAAI6U,eAAc,YAAY;AAC/E,YAAM,EAAC,GAAG,KAAK,GAAG,IAAG,IAAI;AACzB,YAAM,EAAC,OAAAvM,QAAO,QAAAD,QAAM,IAAI3E;AACxB,UAAI,IAAI0F,KAAIwQ,KAAI,IAAIvQ,KAAIwQ;AACxB,UAAI,WAAW,UAAU;AACvB,QAAAxQ,MAAK,MAAOhB,UAAS;AACrB,YAAI,WAAW,QAAQ;AACrB,eAAK;AACL,UAAAe,MAAK,KAAK;AACV,eAAKC,MAAK;AACV,UAAAwQ,MAAKxQ,MAAK;AAAA,QACZ,OAAO;AACL,eAAK,MAAMf;AACX,UAAAc,MAAK,KAAK;AACV,eAAKC,MAAK;AACV,UAAAwQ,MAAKxQ,MAAK;AAAA,QACZ;AACA,QAAAuQ,MAAK;AAAA,MACP,OAAO;AACL,YAAI,WAAW,QAAQ;AACrB,UAAAxQ,MAAK,MAAM,KAAK,IAAI,SAAS,UAAU,IAAK;AAAA,QAC9C,WAAW,WAAW,SAAS;AAC7B,UAAAA,MAAK,MAAMd,SAAQ,KAAK,IAAI,UAAU,WAAW,IAAI;AAAA,QACvD,OAAO;AACL,UAAAc,MAAK,KAAK;AAAA,QACZ;AACA,YAAI,WAAW,OAAO;AACpB,eAAK;AACL,UAAAC,MAAK,KAAK;AACV,eAAKD,MAAK;AACV,UAAAwQ,MAAKxQ,MAAK;AAAA,QACZ,OAAO;AACL,eAAK,MAAMf;AACX,UAAAgB,MAAK,KAAK;AACV,eAAKD,MAAK;AACV,UAAAwQ,MAAKxQ,MAAK;AAAA,QACZ;AACA,QAAAyQ,MAAK;AAAA,MACP;AACA,aAAO,EAAC,IAAI,IAAAzQ,KAAI,IAAAwQ,KAAI,IAAI,IAAAvQ,KAAI,IAAAwQ,IAAE;AAAA,IAChC;AAAA,IACA,UAAU,IAAI,KAAK7Z,UAAS;AAC1B,YAAM,QAAQ,KAAK;AACnB,YAAM6E,UAAS,MAAM;AACrB,UAAI,WAAW,cAAcpG;AAC7B,UAAIoG,SAAQ;AACV,cAAM,YAAYiT,eAAc9X,SAAQ,KAAK,KAAK,GAAG,KAAK,KAAK;AAC/D,WAAG,IAAIuZ,aAAY,MAAMvZ,SAAQ,YAAYA,QAAO;AACpD,YAAI,YAAY,UAAU,UAAUA,SAAQ,UAAU;AACtD,YAAI,eAAe;AACnB,oBAAY2H,QAAO3H,SAAQ,SAAS;AACpC,uBAAeA,SAAQ;AACvB,YAAI,YAAYA,SAAQ;AACxB,YAAI,OAAO,UAAU;AACrB,aAAKvB,KAAI,GAAGA,KAAIoG,SAAQ,EAAEpG,IAAG;AAC3B,cAAI,SAAS,MAAMA,EAAC,GAAG,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,UAAU,aAAa,CAAC;AACzE,aAAG,KAAK,UAAU,aAAa;AAC/B,cAAIA,KAAI,MAAMoG,SAAQ;AACpB,eAAG,KAAK7E,SAAQ,oBAAoB;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc,KAAK,IAAIvB,IAAG,WAAWuB,UAAS;AAC5C,YAAM,cAAc,KAAK,YAAYvB,EAAC;AACtC,YAAM,kBAAkB,KAAK,iBAAiBA,EAAC;AAC/C,YAAM,EAAC,WAAW,UAAU,WAAU,IAAIuB;AAC1C,YAAM,WAAW2H,QAAO3H,SAAQ,QAAQ;AACxC,YAAM,SAASuZ,aAAY,MAAM,QAAQvZ,QAAO;AAChD,YAAM,YAAY,UAAU,EAAE,MAAM;AACpC,YAAM,UAAU,YAAY,SAAS,cAAc,SAAS,aAAa,aAAa,IAAI;AAC1F,YAAM,SAAS,GAAG,IAAI;AACtB,UAAIA,SAAQ,eAAe;AACzB,cAAM,cAAc;AAAA,UAClB,QAAQ,KAAK,IAAI,UAAU,SAAS,IAAI;AAAA,UACxC,YAAY,gBAAgB;AAAA,UAC5B,UAAU,gBAAgB;AAAA,UAC1B,aAAa;AAAA,QACf;AACA,cAAM,UAAU,UAAU,WAAW,WAAW,QAAQ,IAAI,WAAW;AACvE,cAAM,UAAU,SAAS,YAAY;AACrC,YAAI,cAAcA,SAAQ;AAC1B,YAAI,YAAYA,SAAQ;AACxB,QAAAuU,WAAU,KAAK,aAAa,SAAS,OAAO;AAC5C,YAAI,cAAc,YAAY;AAC9B,YAAI,YAAY,YAAY;AAC5B,QAAAA,WAAU,KAAK,aAAa,SAAS,OAAO;AAAA,MAC9C,OAAO;AACL,YAAI,YAAY3U,UAAS,YAAY,WAAW,IAAI,KAAK,IAAI,GAAG,OAAO,OAAO,YAAY,WAAW,CAAC,IAAK,YAAY,eAAe;AACtI,YAAI,cAAc,YAAY;AAC9B,YAAI,YAAY,YAAY,cAAc,CAAC,CAAC;AAC5C,YAAI,iBAAiB,YAAY,oBAAoB;AACrD,cAAM,SAAS,UAAU,WAAW,WAAW,WAAW,UAAU;AACpE,cAAM,SAAS,UAAU,WAAW,UAAU,MAAM,WAAW,CAAC,GAAG,WAAW,aAAa,CAAC;AAC5F,cAAM,eAAeiV,eAAc,YAAY,YAAY;AAC3D,YAAI,OAAO,OAAO,YAAY,EAAE,KAAK,CAAApV,OAAKA,OAAM,CAAC,GAAG;AAClD,cAAI,UAAU;AACd,cAAI,YAAYO,SAAQ;AACxB,UAAAmV,oBAAmB,KAAK;AAAA,YACtB,GAAG;AAAA,YACH,GAAG;AAAA,YACH,GAAG;AAAA,YACH,GAAG;AAAA,YACH,QAAQ;AAAA,UACV,CAAC;AACD,cAAI,KAAK;AACT,cAAI,OAAO;AACX,cAAI,YAAY,YAAY;AAC5B,cAAI,UAAU;AACd,UAAAA,oBAAmB,KAAK;AAAA,YACtB,GAAG;AAAA,YACH,GAAG,SAAS;AAAA,YACZ,GAAG,WAAW;AAAA,YACd,GAAG,YAAY;AAAA,YACf,QAAQ;AAAA,UACV,CAAC;AACD,cAAI,KAAK;AAAA,QACX,OAAO;AACL,cAAI,YAAYnV,SAAQ;AACxB,cAAI,SAAS,QAAQ,QAAQ,UAAU,SAAS;AAChD,cAAI,WAAW,QAAQ,QAAQ,UAAU,SAAS;AAClD,cAAI,YAAY,YAAY;AAC5B,cAAI,SAAS,QAAQ,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAAA,QAC9D;AAAA,MACF;AACA,UAAI,YAAY,KAAK,gBAAgBvB,EAAC;AAAA,IACxC;AAAA,IACA,SAAS,IAAI,KAAKuB,UAAS;AACzB,YAAM,EAAC,KAAI,IAAI;AACf,YAAM,EAAC,aAAa,WAAW,eAAe,WAAW,UAAU,WAAU,IAAIA;AACjF,YAAM,WAAW2H,QAAO3H,SAAQ,QAAQ;AACxC,UAAI,iBAAiB,SAAS;AAC9B,UAAI,eAAe;AACnB,YAAM,YAAY8X,eAAc9X,SAAQ,KAAK,KAAK,GAAG,KAAK,KAAK;AAC/D,YAAM,iBAAiB,SAAS,MAAM;AACpC,YAAI,SAAS,MAAM,UAAU,EAAE,GAAG,IAAI,YAAY,GAAG,GAAG,IAAI,iBAAiB,CAAC;AAC9E,WAAG,KAAK,iBAAiB;AAAA,MAC3B;AACA,YAAM,0BAA0B,UAAU,UAAU,SAAS;AAC7D,UAAI,UAAU,WAAW,OAAOvB,IAAGqK,IAAG,MAAM;AAC5C,UAAI,YAAY;AAChB,UAAI,eAAe;AACnB,UAAI,OAAO,SAAS;AACpB,SAAG,IAAIyQ,aAAY,MAAM,yBAAyBvZ,QAAO;AACzD,UAAI,YAAYA,SAAQ;AACxB,MAAAwH,MAAK,KAAK,YAAY,cAAc;AACpC,qBAAe,iBAAiB,4BAA4B,UACxD,cAAc,WAAY,WAAW,IAAI,aAAe,WAAW,IAAI,aACvE;AACJ,WAAK/I,KAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC7C,mBAAW,KAAKA,EAAC;AACjB,oBAAY,KAAK,gBAAgBA,EAAC;AAClC,YAAI,YAAY;AAChB,QAAA+I,MAAK,SAAS,QAAQ,cAAc;AACpC,gBAAQ,SAAS;AACjB,YAAI,iBAAiB,MAAM,QAAQ;AACjC,eAAK,cAAc,KAAK,IAAI/I,IAAG,WAAWuB,QAAO;AACjD,2BAAiB,KAAK,IAAI,SAAS,YAAY,SAAS;AAAA,QAC1D;AACA,aAAK8I,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,yBAAe,MAAMA,EAAC,CAAC;AACvB,2BAAiB,SAAS;AAAA,QAC5B;AACA,QAAAtB,MAAK,SAAS,OAAO,cAAc;AAAA,MACrC;AACA,qBAAe;AACf,uBAAiB,SAAS;AAC1B,MAAAA,MAAK,KAAK,WAAW,cAAc;AACnC,SAAG,KAAK;AAAA,IACV;AAAA,IACA,WAAW,IAAI,KAAKxH,UAAS;AAC3B,YAAM,SAAS,KAAK;AACpB,YAAM6E,UAAS,OAAO;AACtB,UAAI,YAAYpG;AAChB,UAAIoG,SAAQ;AACV,cAAM,YAAYiT,eAAc9X,SAAQ,KAAK,KAAK,GAAG,KAAK,KAAK;AAC/D,WAAG,IAAIuZ,aAAY,MAAMvZ,SAAQ,aAAaA,QAAO;AACrD,WAAG,KAAKA,SAAQ;AAChB,YAAI,YAAY,UAAU,UAAUA,SAAQ,WAAW;AACvD,YAAI,eAAe;AACnB,qBAAa2H,QAAO3H,SAAQ,UAAU;AACtC,YAAI,YAAYA,SAAQ;AACxB,YAAI,OAAO,WAAW;AACtB,aAAKvB,KAAI,GAAGA,KAAIoG,SAAQ,EAAEpG,IAAG;AAC3B,cAAI,SAAS,OAAOA,EAAC,GAAG,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,WAAW,aAAa,CAAC;AAC3E,aAAG,KAAK,WAAW,aAAauB,SAAQ;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe,IAAI,KAAK,aAAaA,UAAS;AAC5C,YAAM,EAAC,QAAQ,OAAM,IAAI;AACzB,YAAM,EAAC,GAAAQ,IAAG,GAAAC,GAAC,IAAI;AACf,YAAM,EAAC,OAAA6H,QAAO,QAAAD,QAAM,IAAI;AACxB,YAAM,EAAC,SAAS,UAAU,YAAY,YAAW,IAAIwM,eAAc7U,SAAQ,YAAY;AACvF,UAAI,YAAYA,SAAQ;AACxB,UAAI,cAAcA,SAAQ;AAC1B,UAAI,YAAYA,SAAQ;AACxB,UAAI,UAAU;AACd,UAAI,OAAOQ,KAAI,SAASC,EAAC;AACzB,UAAI,WAAW,OAAO;AACpB,aAAK,UAAU,IAAI,KAAK,aAAaT,QAAO;AAAA,MAC9C;AACA,UAAI,OAAOQ,KAAI8H,SAAQ,UAAU7H,EAAC;AAClC,UAAI,iBAAiBD,KAAI8H,QAAO7H,IAAGD,KAAI8H,QAAO7H,KAAI,QAAQ;AAC1D,UAAI,WAAW,YAAY,WAAW,SAAS;AAC7C,aAAK,UAAU,IAAI,KAAK,aAAaT,QAAO;AAAA,MAC9C;AACA,UAAI,OAAOQ,KAAI8H,QAAO7H,KAAI4H,UAAS,WAAW;AAC9C,UAAI,iBAAiB7H,KAAI8H,QAAO7H,KAAI4H,SAAQ7H,KAAI8H,SAAQ,aAAa7H,KAAI4H,OAAM;AAC/E,UAAI,WAAW,UAAU;AACvB,aAAK,UAAU,IAAI,KAAK,aAAarI,QAAO;AAAA,MAC9C;AACA,UAAI,OAAOQ,KAAI,YAAYC,KAAI4H,OAAM;AACrC,UAAI,iBAAiB7H,IAAGC,KAAI4H,SAAQ7H,IAAGC,KAAI4H,UAAS,UAAU;AAC9D,UAAI,WAAW,YAAY,WAAW,QAAQ;AAC5C,aAAK,UAAU,IAAI,KAAK,aAAarI,QAAO;AAAA,MAC9C;AACA,UAAI,OAAOQ,IAAGC,KAAI,OAAO;AACzB,UAAI,iBAAiBD,IAAGC,IAAGD,KAAI,SAASC,EAAC;AACzC,UAAI,UAAU;AACd,UAAI,KAAK;AACT,UAAIT,SAAQ,cAAc,GAAG;AAC3B,YAAI,OAAO;AAAA,MACb;AAAA,IACF;AAAA,IACA,uBAAuBA,UAAS;AAC9B,YAAM,QAAQ,KAAK;AACnB,YAAM,QAAQ,KAAK;AACnB,YAAM,QAAQ,SAAS,MAAM;AAC7B,YAAM,QAAQ,SAAS,MAAM;AAC7B,UAAI,SAAS,OAAO;AAClB,cAAMgI,YAAW0Q,aAAY1Y,SAAQ,QAAQ,EAAE,KAAK,MAAM,KAAK,SAAS,KAAK,cAAc;AAC3F,YAAI,CAACgI,WAAU;AACb;AAAA,QACF;AACA,cAAMtE,QAAO,KAAK,QAAQqV,gBAAe,MAAM/Y,QAAO;AACtD,cAAM,kBAAkB,OAAO,OAAO,CAAC,GAAGgI,WAAU,KAAK,KAAK;AAC9D,cAAM,YAAYmR,oBAAmB,OAAOnZ,UAAS,eAAe;AACpE,cAAMgF,SAAQsU,oBAAmBtZ,UAAS,iBAAiB,WAAW,KAAK;AAC3E,YAAI,MAAM,QAAQgF,OAAM,KAAK,MAAM,QAAQA,OAAM,GAAG;AAClD,eAAK,SAAS,UAAU;AACxB,eAAK,SAAS,UAAU;AACxB,eAAK,QAAQtB,MAAK;AAClB,eAAK,SAASA,MAAK;AACnB,eAAK,SAASsE,UAAS;AACvB,eAAK,SAASA,UAAS;AACvB,eAAK,mBAAmB,EAAE,OAAO,MAAMhD,MAAK;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc;AACZ,aAAO,CAAC,CAAC,KAAK;AAAA,IAChB;AAAA,IACA,KAAK,KAAK;AACR,YAAMhF,WAAU,KAAK,QAAQ,WAAW,KAAK,WAAW,CAAC;AACzD,UAAI,UAAU,KAAK;AACnB,UAAI,CAAC,SAAS;AACZ;AAAA,MACF;AACA,WAAK,uBAAuBA,QAAO;AACnC,YAAM,cAAc;AAAA,QAClB,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK;AAAA,MACf;AACA,YAAM,KAAK;AAAA,QACT,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACV;AACA,gBAAU,KAAK,IAAI,OAAO,IAAI,OAAO,IAAI;AACzC,YAAM,UAAU4H,WAAU5H,SAAQ,OAAO;AACzC,YAAM,oBAAoB,KAAK,MAAM,UAAU,KAAK,WAAW,UAAU,KAAK,KAAK,UAAU,KAAK,UAAU,UAAU,KAAK,OAAO;AAClI,UAAIA,SAAQ,WAAW,mBAAmB;AACxC,YAAI,KAAK;AACT,YAAI,cAAc;AAClB,aAAK,eAAe,IAAI,KAAK,aAAaA,QAAO;AACjD,QAAAgY,uBAAsB,KAAKhY,SAAQ,aAAa;AAChD,WAAG,KAAK,QAAQ;AAChB,aAAK,UAAU,IAAI,KAAKA,QAAO;AAC/B,aAAK,SAAS,IAAI,KAAKA,QAAO;AAC9B,aAAK,WAAW,IAAI,KAAKA,QAAO;AAChC,QAAAkY,sBAAqB,KAAKlY,SAAQ,aAAa;AAC/C,YAAI,QAAQ;AAAA,MACd;AAAA,IACF;AAAA,IACA,oBAAoB;AAClB,aAAO,KAAK,WAAW,CAAC;AAAA,IAC1B;AAAA,IACA,kBAAkB,gBAAgB,eAAe;AAC/C,YAAM,aAAa,KAAK;AACxB,YAAM8C,UAAS,eAAe,IAAI,CAAC,EAAC,cAAc,OAAAnB,OAAK,MAAM;AAC3D,cAAM,OAAO,KAAK,MAAM,eAAe,YAAY;AACnD,YAAI,CAAC,MAAM;AACT,gBAAM,IAAI,MAAM,oCAAoC,YAAY;AAAA,QAClE;AACA,eAAO;AAAA,UACL;AAAA,UACA,SAAS,KAAK,KAAKA,MAAK;AAAA,UACxB,OAAAA;AAAA,QACF;AAAA,MACF,CAAC;AACD,YAAM,UAAU,CAACsQ,gBAAe,YAAYnP,OAAM;AAClD,YAAM,kBAAkB,KAAK,iBAAiBA,SAAQ,aAAa;AACnE,UAAI,WAAW,iBAAiB;AAC9B,aAAK,UAAUA;AACf,aAAK,iBAAiB;AACtB,aAAK,sBAAsB;AAC3B,aAAK,OAAO,IAAI;AAAA,MAClB;AAAA,IACF;AAAA,IACA,YAAY6C,IAAG,QAAQ,cAAc,MAAM;AACzC,UAAI,UAAU,KAAK,qBAAqB;AACtC,eAAO;AAAA,MACT;AACA,WAAK,sBAAsB;AAC3B,YAAM3F,WAAU,KAAK;AACrB,YAAM,aAAa,KAAK,WAAW,CAAC;AACpC,YAAM8C,UAAS,KAAK,mBAAmB6C,IAAG,YAAY,QAAQ,WAAW;AACzE,YAAM,kBAAkB,KAAK,iBAAiB7C,SAAQ6C,EAAC;AACvD,YAAM,UAAU,UAAU,CAACsM,gBAAenP,SAAQ,UAAU,KAAK;AACjE,UAAI,SAAS;AACX,aAAK,UAAUA;AACf,YAAI9C,SAAQ,WAAWA,SAAQ,UAAU;AACvC,eAAK,iBAAiB;AAAA,YACpB,GAAG2F,GAAE;AAAA,YACL,GAAGA,GAAE;AAAA,UACP;AACA,eAAK,OAAO,MAAM,MAAM;AAAA,QAC1B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,mBAAmBA,IAAG,YAAY,QAAQ,aAAa;AACrD,YAAM3F,WAAU,KAAK;AACrB,UAAI2F,GAAE,SAAS,YAAY;AACzB,eAAO,CAAC;AAAA,MACV;AACA,UAAI,CAAC,aAAa;AAChB,eAAO;AAAA,MACT;AACA,YAAM7C,UAAS,KAAK,MAAM,0BAA0B6C,IAAG3F,SAAQ,MAAMA,UAAS,MAAM;AACpF,UAAIA,SAAQ,SAAS;AACnB,QAAA8C,QAAO,QAAQ;AAAA,MACjB;AACA,aAAOA;AAAA,IACT;AAAA,IACA,iBAAiBA,SAAQ6C,IAAG;AAC1B,YAAM,EAAC,QAAQ,QAAQ,SAAA3F,SAAO,IAAI;AAClC,YAAMgI,YAAW0Q,aAAY1Y,SAAQ,QAAQ,EAAE,KAAK,MAAM8C,SAAQ6C,EAAC;AACnE,aAAOqC,cAAa,UAAU,WAAWA,UAAS,KAAK,WAAWA,UAAS;AAAA,IAC7E;AAAA,EACF;AACA,EAAA2R,SAAQ,cAAcjB;AACtB,MAAIoB,kBAAiB;AAAA,IACnB,IAAI;AAAA,IACJ,UAAUH;AAAA,IACV,aAAAjB;AAAA,IACA,UAAU,OAAO,OAAO1Y,UAAS;AAC/B,UAAIA,UAAS;AACX,cAAM,UAAU,IAAI2Z,SAAQ,EAAC,OAAO,SAAA3Z,SAAO,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,aAAa,OAAO,OAAOA,UAAS;AAClC,UAAI,MAAM,SAAS;AACjB,cAAM,QAAQ,WAAWA,QAAO;AAAA,MAClC;AAAA,IACF;AAAA,IACA,MAAM,OAAO,OAAOA,UAAS;AAC3B,UAAI,MAAM,SAAS;AACjB,cAAM,QAAQ,WAAWA,QAAO;AAAA,MAClC;AAAA,IACF;AAAA,IACA,UAAU,OAAO;AACf,YAAM,UAAU,MAAM;AACtB,UAAI,WAAW,QAAQ,YAAY,GAAG;AACpC,cAAM,OAAO;AAAA,UACX;AAAA,QACF;AACA,YAAI,MAAM,cAAc,qBAAqB,IAAI,MAAM,OAAO;AAC5D;AAAA,QACF;AACA,gBAAQ,KAAK,MAAM,GAAG;AACtB,cAAM,cAAc,oBAAoB,IAAI;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,WAAW,OAAO,MAAM;AACtB,UAAI,MAAM,SAAS;AACjB,cAAM,mBAAmB,KAAK;AAC9B,YAAI,MAAM,QAAQ,YAAY,KAAK,OAAO,kBAAkB,KAAK,WAAW,GAAG;AAC7E,eAAK,UAAU;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,WAAW;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU,CACV;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,YAAY;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,MACb,SAAS;AAAA,MACT,cAAc;AAAA,MACd,WAAW;AAAA,MACX,cAAc;AAAA,MACd,WAAW,CAAC,KAAK,SAAS,KAAK,SAAS;AAAA,MACxC,UAAU,CAAC,KAAK,SAAS,KAAK,SAAS;AAAA,MACvC,oBAAoB;AAAA,MACpB,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa;AAAA,MACb,WAAW;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,MACA,YAAY;AAAA,QACV,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC,KAAK,KAAK,SAAS,UAAU,UAAU,QAAQ;AAAA,QAC9D;AAAA,QACA,SAAS;AAAA,UACP,QAAQ;AAAA,UACR,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,aAAa+Z;AAAA,QACb,MAAM,cAAc;AAClB,cAAI,aAAa,SAAS,GAAG;AAC3B,kBAAM,OAAO,aAAa,CAAC;AAC3B,kBAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,kBAAM,aAAa,SAAS,OAAO,SAAS;AAC5C,gBAAI,QAAQ,KAAK,WAAW,KAAK,QAAQ,SAAS,WAAW;AAC3D,qBAAO,KAAK,QAAQ,SAAS;AAAA,YAC/B,WAAW,KAAK,OAAO;AACrB,qBAAO,KAAK;AAAA,YACd,WAAW,aAAa,KAAK,KAAK,YAAY,YAAY;AACxD,qBAAO,OAAO,KAAK,SAAS;AAAA,YAC9B;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,QACA,YAAYA;AAAA,QACZ,YAAYA;AAAA,QACZ,aAAaA;AAAA,QACb,MAAM,aAAa;AACjB,cAAI,QAAQ,KAAK,WAAW,KAAK,QAAQ,SAAS,WAAW;AAC3D,mBAAO,YAAY,QAAQ,OAAO,YAAY,kBAAkB,YAAY;AAAA,UAC9E;AACA,cAAI,QAAQ,YAAY,QAAQ,SAAS;AACzC,cAAI,OAAO;AACT,qBAAS;AAAA,UACX;AACA,gBAAM,QAAQ,YAAY;AAC1B,cAAI,CAACpW,eAAc,KAAK,GAAG;AACzB,qBAAS;AAAA,UACX;AACA,iBAAO;AAAA,QACT;AAAA,QACA,WAAW,aAAa;AACtB,gBAAM,OAAO,YAAY,MAAM,eAAe,YAAY,YAAY;AACtE,gBAAM3D,WAAU,KAAK,WAAW,SAAS,YAAY,SAAS;AAC9D,iBAAO;AAAA,YACL,aAAaA,SAAQ;AAAA,YACrB,iBAAiBA,SAAQ;AAAA,YACzB,aAAaA,SAAQ;AAAA,YACrB,YAAYA,SAAQ;AAAA,YACpB,kBAAkBA,SAAQ;AAAA,YAC1B,cAAc;AAAA,UAChB;AAAA,QACF;AAAA,QACA,iBAAiB;AACf,iBAAO,KAAK,QAAQ;AAAA,QACtB;AAAA,QACA,gBAAgB,aAAa;AAC3B,gBAAM,OAAO,YAAY,MAAM,eAAe,YAAY,YAAY;AACtE,gBAAMA,WAAU,KAAK,WAAW,SAAS,YAAY,SAAS;AAC9D,iBAAO;AAAA,YACL,YAAYA,SAAQ;AAAA,YACpB,UAAUA,SAAQ;AAAA,UACpB;AAAA,QACF;AAAA,QACA,YAAY+Z;AAAA,QACZ,WAAWA;AAAA,QACX,cAAcA;AAAA,QACd,QAAQA;AAAA,QACR,aAAaA;AAAA,MACf;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,WAAW;AAAA,IACb;AAAA,IACA,aAAa;AAAA,MACX,aAAa,CAACva,UAASA,UAAS,YAAYA,UAAS,cAAcA,UAAS;AAAA,MAC5E,YAAY;AAAA,MACZ,WAAW;AAAA,QACT,aAAa;AAAA,QACb,YAAY;AAAA,MACd;AAAA,MACA,WAAW;AAAA,QACT,WAAW;AAAA,MACb;AAAA,MACA,YAAY;AAAA,QACV,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,wBAAwB,CAAC,aAAa;AAAA,EACxC;AAEA,MAAIsP,WAAuB,uBAAO,OAAO;AAAA,IACzC,WAAW;AAAA,IACX,YAAY4G;AAAA,IACZ,QAAQ/T;AAAA,IACR,QAAQyW;AAAA,IACR,UAAUK;AAAA,IACV,OAAOF;AAAA,IACP,SAASuB;AAAA,EACT,CAAC;AAED,MAAME,eAAc,CAAC,QAAQ,KAAKrY,QAAO,gBAAgB;AACvD,QAAI,OAAO,QAAQ,UAAU;AAC3B,MAAAA,SAAQ,OAAO,KAAK,GAAG,IAAI;AAC3B,kBAAY,QAAQ,EAAC,OAAAA,QAAO,OAAO,IAAG,CAAC;AAAA,IACzC,WAAW,MAAM,GAAG,GAAG;AACrB,MAAAA,SAAQ;AAAA,IACV;AACA,WAAOA;AAAA,EACT;AACA,WAASsY,gBAAe,QAAQ,KAAKtY,QAAO,aAAa;AACvD,UAAM,QAAQ,OAAO,QAAQ,GAAG;AAChC,QAAI,UAAU,IAAI;AAChB,aAAOqY,aAAY,QAAQ,KAAKrY,QAAO,WAAW;AAAA,IACpD;AACA,UAAM,OAAO,OAAO,YAAY,GAAG;AACnC,WAAO,UAAU,OAAOA,SAAQ;AAAA,EAClC;AACA,MAAM2F,cAAa,CAAC3F,QAAOrB,SAAQqB,WAAU,OAAO,OAAOiH,aAAY,KAAK,MAAMjH,MAAK,GAAG,GAAGrB,IAAG;AAChG,MAAM4Z,iBAAN,cAA4B1R,OAAM;AAAA,IAChC,YAAY,KAAK;AACf,YAAM,GAAG;AACT,WAAK,cAAc;AACnB,WAAK,cAAc;AACnB,WAAK,eAAe,CAAC;AAAA,IACvB;AAAA,IACA,KAAK,cAAc;AACjB,YAAM,QAAQ,KAAK;AACnB,UAAI,MAAM,QAAQ;AAChB,cAAM,SAAS,KAAK,UAAU;AAC9B,mBAAW,EAAC,OAAA7G,QAAO,MAAK,KAAK,OAAO;AAClC,cAAI,OAAOA,MAAK,MAAM,OAAO;AAC3B,mBAAO,OAAOA,QAAO,CAAC;AAAA,UACxB;AAAA,QACF;AACA,aAAK,eAAe,CAAC;AAAA,MACvB;AACA,YAAM,KAAK,YAAY;AAAA,IACzB;AAAA,IACA,MAAM,KAAKA,QAAO;AAChB,UAAIgC,eAAc,GAAG,GAAG;AACtB,eAAO;AAAA,MACT;AACA,YAAM,SAAS,KAAK,UAAU;AAC9B,MAAAhC,SAAQ,SAASA,MAAK,KAAK,OAAOA,MAAK,MAAM,MAAMA,SAC/CsY,gBAAe,QAAQ,KAAK3X,gBAAeX,QAAO,GAAG,GAAG,KAAK,YAAY;AAC7E,aAAO2F,YAAW3F,QAAO,OAAO,SAAS,CAAC;AAAA,IAC5C;AAAA,IACA,sBAAsB;AACpB,YAAM,EAAC,YAAY,WAAU,IAAI,KAAK,cAAc;AACpD,UAAI,EAAC,KAAAtB,MAAK,KAAAC,KAAG,IAAI,KAAK,UAAU,IAAI;AACpC,UAAI,KAAK,QAAQ,WAAW,SAAS;AACnC,YAAI,CAAC,YAAY;AACf,UAAAD,OAAM;AAAA,QACR;AACA,YAAI,CAAC,YAAY;AACf,UAAAC,OAAM,KAAK,UAAU,EAAE,SAAS;AAAA,QAClC;AAAA,MACF;AACA,WAAK,MAAMD;AACX,WAAK,MAAMC;AAAA,IACb;AAAA,IACA,aAAa;AACX,YAAMD,OAAM,KAAK;AACjB,YAAMC,OAAM,KAAK;AACjB,YAAMyG,UAAS,KAAK,QAAQ;AAC5B,YAAM,QAAQ,CAAC;AACf,UAAI,SAAS,KAAK,UAAU;AAC5B,eAAU1G,SAAQ,KAAKC,SAAQ,OAAO,SAAS,IAAK,SAAS,OAAO,MAAMD,MAAKC,OAAM,CAAC;AACtF,WAAK,cAAc,KAAK,IAAI,OAAO,UAAUyG,UAAS,IAAI,IAAI,CAAC;AAC/D,WAAK,cAAc,KAAK,OAAOA,UAAS,MAAM;AAC9C,eAAS,QAAQ1G,MAAK,SAASC,MAAK,SAAS;AAC3C,cAAM,KAAK,EAAC,MAAK,CAAC;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB,OAAO;AACtB,YAAM,SAAS,KAAK,UAAU;AAC9B,UAAI,SAAS,KAAK,QAAQ,OAAO,QAAQ;AACvC,eAAO,OAAO,KAAK;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAAA,IACA,YAAY;AACV,YAAM,UAAU;AAChB,UAAI,CAAC,KAAK,aAAa,GAAG;AACxB,aAAK,iBAAiB,CAAC,KAAK;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,iBAAiB,OAAO;AACtB,UAAI,OAAO,UAAU,UAAU;AAC7B,gBAAQ,KAAK,MAAM,KAAK;AAAA,MAC1B;AACA,aAAO,UAAU,OAAO,MAAM,KAAK,oBAAoB,QAAQ,KAAK,eAAe,KAAK,WAAW;AAAA,IACrG;AAAA,IACA,gBAAgBqB,QAAO;AACrB,YAAM,QAAQ,KAAK;AACnB,UAAIA,SAAQ,KAAKA,SAAQ,MAAM,SAAS,GAAG;AACzC,eAAO;AAAA,MACT;AACA,aAAO,KAAK,iBAAiB,MAAMA,MAAK,EAAE,KAAK;AAAA,IACjD;AAAA,IACA,iBAAiB,OAAO;AACtB,aAAO,KAAK,MAAM,KAAK,cAAc,KAAK,mBAAmB,KAAK,IAAI,KAAK,WAAW;AAAA,IACxF;AAAA,IACA,eAAe;AACb,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AACA,EAAAuY,eAAc,KAAK;AACnB,EAAAA,eAAc,WAAW;AAAA,IACvB,OAAO;AAAA,MACL,UAAUA,eAAc,UAAU;AAAA,IACpC;AAAA,EACF;AAEA,WAASC,iBAAgB,mBAAmB,WAAW;AACrD,UAAM,QAAQ,CAAC;AACf,UAAM,cAAc;AACpB,UAAM,EAAC,QAAQ,MAAM,KAAA9Z,MAAK,KAAAC,MAAK,WAAW,OAAO,UAAU,WAAW,cAAa,IAAI;AACvF,UAAM,OAAO,QAAQ;AACrB,UAAM,YAAY,WAAW;AAC7B,UAAM,EAAC,KAAK,MAAM,KAAK,KAAI,IAAI;AAC/B,UAAM,aAAa,CAACqD,eAActD,IAAG;AACrC,UAAM,aAAa,CAACsD,eAAcrD,IAAG;AACrC,UAAM,eAAe,CAACqD,eAAc,KAAK;AACzC,UAAM,cAAc,OAAO,SAAS,YAAY;AAChD,QAAI,UAAUyW,UAAS,OAAO,QAAQ,YAAY,IAAI,IAAI;AAC1D,QAAI,QAAQ,SAAS,SAAS;AAC9B,QAAI,UAAU,eAAe,CAAC,cAAc,CAAC,YAAY;AACvD,aAAO,CAAC,EAAC,OAAO,KAAI,GAAG,EAAC,OAAO,KAAI,CAAC;AAAA,IACtC;AACA,gBAAY,KAAK,KAAK,OAAO,OAAO,IAAI,KAAK,MAAM,OAAO,OAAO;AACjE,QAAI,YAAY,WAAW;AACzB,gBAAUA,SAAQ,YAAY,UAAU,YAAY,IAAI,IAAI;AAAA,IAC9D;AACA,QAAI,CAACzW,eAAc,SAAS,GAAG;AAC7B,eAAS,KAAK,IAAI,IAAI,SAAS;AAC/B,gBAAU,KAAK,KAAK,UAAU,MAAM,IAAI;AAAA,IAC1C;AACA,QAAI,WAAW,SAAS;AACtB,gBAAU,KAAK,MAAM,OAAO,OAAO,IAAI;AACvC,gBAAU,KAAK,KAAK,OAAO,OAAO,IAAI;AAAA,IACxC,OAAO;AACL,gBAAU;AACV,gBAAU;AAAA,IACZ;AACA,QAAI,cAAc,cAAc,QAAQ0W,cAAa/Z,OAAMD,QAAO,MAAM,UAAU,GAAI,GAAG;AACvF,kBAAY,KAAK,MAAM,KAAK,KAAKC,OAAMD,QAAO,SAAS,QAAQ,CAAC;AAChE,iBAAWC,OAAMD,QAAO;AACxB,gBAAUA;AACV,gBAAUC;AAAA,IACZ,WAAW,cAAc;AACvB,gBAAU,aAAaD,OAAM;AAC7B,gBAAU,aAAaC,OAAM;AAC7B,kBAAY,QAAQ;AACpB,iBAAW,UAAU,WAAW;AAAA,IAClC,OAAO;AACL,mBAAa,UAAU,WAAW;AAClC,UAAIga,cAAa,WAAW,KAAK,MAAM,SAAS,GAAG,UAAU,GAAI,GAAG;AAClE,oBAAY,KAAK,MAAM,SAAS;AAAA,MAClC,OAAO;AACL,oBAAY,KAAK,KAAK,SAAS;AAAA,MACjC;AAAA,IACF;AACA,UAAM,gBAAgB,KAAK;AAAA,MACzBC,gBAAe,OAAO;AAAA,MACtBA,gBAAe,OAAO;AAAA,IACxB;AACA,aAAS,KAAK,IAAI,IAAI5W,eAAc,SAAS,IAAI,gBAAgB,SAAS;AAC1E,cAAU,KAAK,MAAM,UAAU,MAAM,IAAI;AACzC,cAAU,KAAK,MAAM,UAAU,MAAM,IAAI;AACzC,QAAImF,KAAI;AACR,QAAI,YAAY;AACd,UAAI,iBAAiB,YAAYzI,MAAK;AACpC,cAAM,KAAK,EAAC,OAAOA,KAAG,CAAC;AACvB,YAAI,UAAUA,MAAK;AACjB,UAAAyI;AAAA,QACF;AACA,YAAIwR,cAAa,KAAK,OAAO,UAAUxR,KAAI,WAAW,MAAM,IAAI,QAAQzI,MAAKma,mBAAkBna,MAAK,YAAY,iBAAiB,CAAC,GAAG;AACnI,UAAAyI;AAAA,QACF;AAAA,MACF,WAAW,UAAUzI,MAAK;AACxB,QAAAyI;AAAA,MACF;AAAA,IACF;AACA,WAAOA,KAAI,WAAW,EAAEA,IAAG;AACzB,YAAM,KAAK,EAAC,OAAO,KAAK,OAAO,UAAUA,KAAI,WAAW,MAAM,IAAI,OAAM,CAAC;AAAA,IAC3E;AACA,QAAI,cAAc,iBAAiB,YAAYxI,MAAK;AAClD,UAAI,MAAM,UAAUga,cAAa,MAAM,MAAM,SAAS,CAAC,EAAE,OAAOha,MAAKka,mBAAkBla,MAAK,YAAY,iBAAiB,CAAC,GAAG;AAC3H,cAAM,MAAM,SAAS,CAAC,EAAE,QAAQA;AAAA,MAClC,OAAO;AACL,cAAM,KAAK,EAAC,OAAOA,KAAG,CAAC;AAAA,MACzB;AAAA,IACF,WAAW,CAAC,cAAc,YAAYA,MAAK;AACzC,YAAM,KAAK,EAAC,OAAO,QAAO,CAAC;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AACA,WAASka,mBAAkB,OAAO,YAAY,EAAC,YAAY,YAAW,GAAG;AACvE,UAAM,MAAMjV,WAAU,WAAW;AACjC,UAAM,SAAS,aAAa,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM;AAC9D,UAAMV,UAAS,OAAO,cAAc,KAAK,OAAO;AAChD,WAAO,KAAK,IAAI,aAAa,OAAOA,OAAM;AAAA,EAC5C;AACA,MAAM4V,mBAAN,cAA8BjS,OAAM;AAAA,IAClC,YAAY,KAAK;AACf,YAAM,GAAG;AACT,WAAK,QAAQ;AACb,WAAK,MAAM;AACX,WAAK,cAAc;AACnB,WAAK,YAAY;AACjB,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,MAAM,KAAK7G,QAAO;AAChB,UAAIgC,eAAc,GAAG,GAAG;AACtB,eAAO;AAAA,MACT;AACA,WAAK,OAAO,QAAQ,YAAY,eAAe,WAAW,CAAC,SAAS,CAAC,GAAG,GAAG;AACzE,eAAO;AAAA,MACT;AACA,aAAO,CAAC;AAAA,IACV;AAAA,IACA,yBAAyB;AACvB,YAAM,EAAC,YAAW,IAAI,KAAK;AAC3B,YAAM,EAAC,YAAY,WAAU,IAAI,KAAK,cAAc;AACpD,UAAI,EAAC,KAAAtD,MAAK,KAAAC,KAAG,IAAI;AACjB,YAAM,SAAS,CAAAb,OAAMY,OAAM,aAAaA,OAAMZ;AAC9C,YAAM,SAAS,CAAAA,OAAMa,OAAM,aAAaA,OAAMb;AAC9C,UAAI,aAAa;AACf,cAAM,UAAUyB,MAAKb,IAAG;AACxB,cAAM,UAAUa,MAAKZ,IAAG;AACxB,YAAI,UAAU,KAAK,UAAU,GAAG;AAC9B,iBAAO,CAAC;AAAA,QACV,WAAW,UAAU,KAAK,UAAU,GAAG;AACrC,iBAAO,CAAC;AAAA,QACV;AAAA,MACF;AACA,UAAID,SAAQC,MAAK;AACf,YAAIyG,UAAS;AACb,YAAIzG,QAAO,OAAO,oBAAoBD,QAAO,OAAO,kBAAkB;AACpE,UAAA0G,UAAS,KAAK,IAAIzG,OAAM,IAAI;AAAA,QAC9B;AACA,eAAOA,OAAMyG,OAAM;AACnB,YAAI,CAAC,aAAa;AAChB,iBAAO1G,OAAM0G,OAAM;AAAA,QACrB;AAAA,MACF;AACA,WAAK,MAAM1G;AACX,WAAK,MAAMC;AAAA,IACb;AAAA,IACA,eAAe;AACb,YAAM,WAAW,KAAK,QAAQ;AAC9B,UAAI,EAAC,eAAe,SAAQ,IAAI;AAChC,UAAI;AACJ,UAAI,UAAU;AACZ,mBAAW,KAAK,KAAK,KAAK,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAK,MAAM,QAAQ,IAAI;AAC9E,YAAI,WAAW,KAAM;AACnB,kBAAQ,KAAK,UAAU,KAAK,sBAAsB,0CAA0C,mCAAmC;AAC/H,qBAAW;AAAA,QACb;AAAA,MACF,OAAO;AACL,mBAAW,KAAK,iBAAiB;AACjC,wBAAgB,iBAAiB;AAAA,MACnC;AACA,UAAI,eAAe;AACjB,mBAAW,KAAK,IAAI,eAAe,QAAQ;AAAA,MAC7C;AACA,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB;AACjB,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,aAAa;AACX,YAAM,OAAO,KAAK;AAClB,YAAM,WAAW,KAAK;AACtB,UAAI,WAAW,KAAK,aAAa;AACjC,iBAAW,KAAK,IAAI,GAAG,QAAQ;AAC/B,YAAM,0BAA0B;AAAA,QAC9B;AAAA,QACA,QAAQ,KAAK;AAAA,QACb,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,WAAW,SAAS;AAAA,QACpB,MAAM,SAAS;AAAA,QACf,OAAO,SAAS;AAAA,QAChB,WAAW,KAAK,WAAW;AAAA,QAC3B,YAAY,KAAK,aAAa;AAAA,QAC9B,aAAa,SAAS,eAAe;AAAA,QACrC,eAAe,SAAS,kBAAkB;AAAA,MAC5C;AACA,YAAM,YAAY,KAAK,UAAU;AACjC,YAAM,QAAQ6Z,iBAAgB,yBAAyB,SAAS;AAChE,UAAI,KAAK,WAAW,SAAS;AAC3B,QAAAO,oBAAmB,OAAO,MAAM,OAAO;AAAA,MACzC;AACA,UAAI,KAAK,SAAS;AAChB,cAAM,QAAQ;AACd,aAAK,QAAQ,KAAK;AAClB,aAAK,MAAM,KAAK;AAAA,MAClB,OAAO;AACL,aAAK,QAAQ,KAAK;AAClB,aAAK,MAAM,KAAK;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAAA,IACA,YAAY;AACV,YAAM,QAAQ,KAAK;AACnB,UAAIjY,SAAQ,KAAK;AACjB,UAAIU,OAAM,KAAK;AACf,YAAM,UAAU;AAChB,UAAI,KAAK,QAAQ,UAAU,MAAM,QAAQ;AACvC,cAAM4D,WAAU5D,OAAMV,UAAS,KAAK,IAAI,MAAM,SAAS,GAAG,CAAC,IAAI;AAC/D,QAAAA,UAASsE;AACT,QAAA5D,QAAO4D;AAAA,MACT;AACA,WAAK,cAActE;AACnB,WAAK,YAAYU;AACjB,WAAK,cAAcA,OAAMV;AAAA,IAC3B;AAAA,IACA,iBAAiB,OAAO;AACtB,aAAOiD,cAAa,OAAO,KAAK,MAAM,QAAQ,QAAQ,KAAK,QAAQ,MAAM,MAAM;AAAA,IACjF;AAAA,EACF;AAEA,MAAMiV,eAAN,cAA0BF,iBAAgB;AAAA,IACxC,sBAAsB;AACpB,YAAM,EAAC,KAAApa,MAAK,KAAAC,KAAG,IAAI,KAAK,UAAU,IAAI;AACtC,WAAK,MAAMW,gBAAeZ,IAAG,IAAIA,OAAM;AACvC,WAAK,MAAMY,gBAAeX,IAAG,IAAIA,OAAM;AACvC,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IACA,mBAAmB;AACjB,YAAM,aAAa,KAAK,aAAa;AACrC,YAAMuE,UAAS,aAAa,KAAK,QAAQ,KAAK;AAC9C,YAAM,cAAcU,WAAU,KAAK,QAAQ,MAAM,WAAW;AAC5D,YAAM,SAAS,aAAa,KAAK,IAAI,WAAW,IAAI,KAAK,IAAI,WAAW,MAAM;AAC9E,YAAM,WAAW,KAAK,wBAAwB,CAAC;AAC/C,aAAO,KAAK,KAAKV,UAAS,KAAK,IAAI,IAAI,SAAS,aAAa,KAAK,CAAC;AAAA,IACrE;AAAA,IACA,iBAAiB,OAAO;AACtB,aAAO,UAAU,OAAO,MAAM,KAAK,oBAAoB,QAAQ,KAAK,eAAe,KAAK,WAAW;AAAA,IACrG;AAAA,IACA,iBAAiB,OAAO;AACtB,aAAO,KAAK,cAAc,KAAK,mBAAmB,KAAK,IAAI,KAAK;AAAA,IAClE;AAAA,EACF;AACA,EAAA8V,aAAY,KAAK;AACjB,EAAAA,aAAY,WAAW;AAAA,IACrB,OAAO;AAAA,MACL,UAAUnU,OAAM,WAAW;AAAA,IAC7B;AAAA,EACF;AAEA,WAASoU,SAAQ,SAAS;AACxB,UAAM,SAAS,UAAW,KAAK,IAAI,IAAI,KAAK,MAAMrU,OAAM,OAAO,CAAC,CAAC;AACjE,WAAO,WAAW;AAAA,EACpB;AACA,WAASsU,eAAc,mBAAmB,WAAW;AACnD,UAAM,SAAS,KAAK,MAAMtU,OAAM,UAAU,GAAG,CAAC;AAC9C,UAAM,iBAAiB,KAAK,KAAK,UAAU,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC;AACrE,UAAM,QAAQ,CAAC;AACf,QAAI,UAAUkC,iBAAgB,kBAAkB,KAAK,KAAK,IAAI,IAAI,KAAK,MAAMlC,OAAM,UAAU,GAAG,CAAC,CAAC,CAAC;AACnG,QAAI,MAAM,KAAK,MAAMA,OAAM,OAAO,CAAC;AACnC,QAAI,cAAc,KAAK,MAAM,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC;AACxD,QAAI,YAAY,MAAM,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI;AACxD,OAAG;AACD,YAAM,KAAK,EAAC,OAAO,SAAS,OAAOqU,SAAQ,OAAO,EAAC,CAAC;AACpD,QAAE;AACF,UAAI,gBAAgB,IAAI;AACtB,sBAAc;AACd,UAAE;AACF,oBAAY,OAAO,IAAI,IAAI;AAAA,MAC7B;AACA,gBAAU,KAAK,MAAM,cAAc,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,IAAI;AAAA,IACtE,SAAS,MAAM,UAAW,QAAQ,UAAU,cAAc;AAC1D,UAAM,WAAWnS,iBAAgB,kBAAkB,KAAK,OAAO;AAC/D,UAAM,KAAK,EAAC,OAAO,UAAU,OAAOmS,SAAQ,OAAO,EAAC,CAAC;AACrD,WAAO;AAAA,EACT;AACA,MAAME,oBAAN,cAA+BtS,OAAM;AAAA,IACnC,YAAY,KAAK;AACf,YAAM,GAAG;AACT,WAAK,QAAQ;AACb,WAAK,MAAM;AACX,WAAK,cAAc;AACnB,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,MAAM,KAAK7G,QAAO;AAChB,YAAM,QAAQ8Y,iBAAgB,UAAU,MAAM,MAAM,MAAM,CAAC,KAAK9Y,MAAK,CAAC;AACtE,UAAI,UAAU,GAAG;AACf,aAAK,QAAQ;AACb,eAAO;AAAA,MACT;AACA,aAAOV,gBAAe,KAAK,KAAK,QAAQ,IAAI,QAAQ;AAAA,IACtD;AAAA,IACA,sBAAsB;AACpB,YAAM,EAAC,KAAAZ,MAAK,KAAAC,KAAG,IAAI,KAAK,UAAU,IAAI;AACtC,WAAK,MAAMW,gBAAeZ,IAAG,IAAI,KAAK,IAAI,GAAGA,IAAG,IAAI;AACpD,WAAK,MAAMY,gBAAeX,IAAG,IAAI,KAAK,IAAI,GAAGA,IAAG,IAAI;AACpD,UAAI,KAAK,QAAQ,aAAa;AAC5B,aAAK,QAAQ;AAAA,MACf;AACA,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IACA,yBAAyB;AACvB,YAAM,EAAC,YAAY,WAAU,IAAI,KAAK,cAAc;AACpD,UAAID,OAAM,KAAK;AACf,UAAIC,OAAM,KAAK;AACf,YAAM,SAAS,CAAAb,OAAMY,OAAM,aAAaA,OAAMZ;AAC9C,YAAM,SAAS,CAAAA,OAAMa,OAAM,aAAaA,OAAMb;AAC9C,YAAM,MAAM,CAACA,IAAGsb,OAAM,KAAK,IAAI,IAAI,KAAK,MAAMxU,OAAM9G,EAAC,CAAC,IAAIsb,EAAC;AAC3D,UAAI1a,SAAQC,MAAK;AACf,YAAID,QAAO,GAAG;AACZ,iBAAO,CAAC;AACR,iBAAO,EAAE;AAAA,QACX,OAAO;AACL,iBAAO,IAAIA,MAAK,EAAE,CAAC;AACnB,iBAAO,IAAIC,MAAK,CAAE,CAAC;AAAA,QACrB;AAAA,MACF;AACA,UAAID,QAAO,GAAG;AACZ,eAAO,IAAIC,MAAK,EAAE,CAAC;AAAA,MACrB;AACA,UAAIA,QAAO,GAAG;AACZ,eAAO,IAAID,MAAK,CAAE,CAAC;AAAA,MACrB;AACA,UAAI,KAAK,SAAS,KAAK,QAAQ,KAAK,iBAAiBA,SAAQ,IAAI,KAAK,KAAK,CAAC,GAAG;AAC7E,eAAO,IAAIA,MAAK,EAAE,CAAC;AAAA,MACrB;AACA,WAAK,MAAMA;AACX,WAAK,MAAMC;AAAA,IACb;AAAA,IACA,aAAa;AACX,YAAM,OAAO,KAAK;AAClB,YAAM,oBAAoB;AAAA,QACxB,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,MACZ;AACA,YAAM,QAAQua,eAAc,mBAAmB,IAAI;AACnD,UAAI,KAAK,WAAW,SAAS;AAC3B,QAAAH,oBAAmB,OAAO,MAAM,OAAO;AAAA,MACzC;AACA,UAAI,KAAK,SAAS;AAChB,cAAM,QAAQ;AACd,aAAK,QAAQ,KAAK;AAClB,aAAK,MAAM,KAAK;AAAA,MAClB,OAAO;AACL,aAAK,QAAQ,KAAK;AAClB,aAAK,MAAM,KAAK;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB,OAAO;AACtB,aAAO,UAAU,SACb,MACAhV,cAAa,OAAO,KAAK,MAAM,QAAQ,QAAQ,KAAK,QAAQ,MAAM,MAAM;AAAA,IAC9E;AAAA,IACA,YAAY;AACV,YAAMjD,SAAQ,KAAK;AACnB,YAAM,UAAU;AAChB,WAAK,cAAc8D,OAAM9D,MAAK;AAC9B,WAAK,cAAc8D,OAAM,KAAK,GAAG,IAAIA,OAAM9D,MAAK;AAAA,IAClD;AAAA,IACA,iBAAiB,OAAO;AACtB,UAAI,UAAU,UAAa,UAAU,GAAG;AACtC,gBAAQ,KAAK;AAAA,MACf;AACA,UAAI,UAAU,QAAQ,MAAM,KAAK,GAAG;AAClC,eAAO;AAAA,MACT;AACA,aAAO,KAAK,mBAAmB,UAAU,KAAK,MAC1C,KACC8D,OAAM,KAAK,IAAI,KAAK,eAAe,KAAK,WAAW;AAAA,IAC1D;AAAA,IACA,iBAAiB,OAAO;AACtB,YAAM,UAAU,KAAK,mBAAmB,KAAK;AAC7C,aAAO,KAAK,IAAI,IAAI,KAAK,cAAc,UAAU,KAAK,WAAW;AAAA,IACnE;AAAA,EACF;AACA,EAAAuU,kBAAiB,KAAK;AACtB,EAAAA,kBAAiB,WAAW;AAAA,IAC1B,OAAO;AAAA,MACL,UAAUtU,OAAM,WAAW;AAAA,MAC3B,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,WAASwU,uBAAsB,MAAM;AACnC,UAAM,WAAW,KAAK;AACtB,QAAI,SAAS,WAAW,KAAK,SAAS;AACpC,YAAM,UAAUpT,WAAU,SAAS,eAAe;AAClD,aAAOtF,gBAAe,SAAS,QAAQ,SAAS,KAAK,MAAM/C,UAAS,KAAK,IAAI,IAAI,QAAQ;AAAA,IAC3F;AACA,WAAO;AAAA,EACT;AACA,WAAS0b,kBAAiB,KAAK,MAAM,OAAO;AAC1C,YAAQlb,SAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AACvC,WAAO;AAAA,MACL,GAAGmb,cAAa,KAAK,KAAK,QAAQ,KAAK;AAAA,MACvC,GAAG,MAAM,SAAS,KAAK;AAAA,IACzB;AAAA,EACF;AACA,WAASC,iBAAgB,OAAO,KAAKzX,OAAMrD,MAAKC,MAAK;AACnD,QAAI,UAAUD,QAAO,UAAUC,MAAK;AAClC,aAAO;AAAA,QACL,OAAO,MAAOoD,QAAO;AAAA,QACrB,KAAK,MAAOA,QAAO;AAAA,MACrB;AAAA,IACF,WAAW,QAAQrD,QAAO,QAAQC,MAAK;AACrC,aAAO;AAAA,QACL,OAAO,MAAMoD;AAAA,QACb,KAAK;AAAA,MACP;AAAA,IACF;AACA,WAAO;AAAA,MACL,OAAO;AAAA,MACP,KAAK,MAAMA;AAAA,IACb;AAAA,EACF;AACA,WAAS0X,oBAAmBhb,QAAO;AACjC,UAAM,OAAO;AAAA,MACX,GAAGA,OAAM,OAAOA,OAAM,SAAS;AAAA,MAC/B,GAAGA,OAAM,QAAQA,OAAM,SAAS;AAAA,MAChC,GAAGA,OAAM,MAAMA,OAAM,SAAS;AAAA,MAC9B,GAAGA,OAAM,SAASA,OAAM,SAAS;AAAA,IACnC;AACA,UAAM,SAAS,OAAO,OAAO,CAAC,GAAG,IAAI;AACrC,UAAM,aAAa,CAAC;AACpB,UAAM,UAAU,CAAC;AACjB,UAAM,aAAaA,OAAM,aAAa;AACtC,UAAM,iBAAiBA,OAAM,QAAQ;AACrC,UAAM,kBAAkB,eAAe,oBAAoBiF,MAAK,aAAa;AAC7E,aAAS5G,KAAI,GAAGA,KAAI,YAAYA,MAAK;AACnC,YAAM,OAAO,eAAe,WAAW2B,OAAM,qBAAqB3B,EAAC,CAAC;AACpE,cAAQA,EAAC,IAAI,KAAK;AAClB,YAAM,gBAAgB2B,OAAM,iBAAiB3B,IAAG2B,OAAM,cAAc,QAAQ3B,EAAC,GAAG,eAAe;AAC/F,YAAM,SAASkJ,QAAO,KAAK,IAAI;AAC/B,YAAM,WAAWsT,kBAAiB7a,OAAM,KAAK,QAAQA,OAAM,aAAa3B,EAAC,CAAC;AAC1E,iBAAWA,EAAC,IAAI;AAChB,YAAM,eAAewX,iBAAgB7V,OAAM,cAAc3B,EAAC,IAAI,eAAe;AAC7E,YAAM,QAAQ,KAAK,MAAMoK,WAAU,YAAY,CAAC;AAChD,YAAM,UAAUsS,iBAAgB,OAAO,cAAc,GAAG,SAAS,GAAG,GAAG,GAAG;AAC1E,YAAM,UAAUA,iBAAgB,OAAO,cAAc,GAAG,SAAS,GAAG,IAAI,GAAG;AAC3E,MAAAE,cAAa,QAAQ,MAAM,cAAc,SAAS,OAAO;AAAA,IAC3D;AACA,IAAAjb,OAAM;AAAA,MACJ,KAAK,IAAI,OAAO;AAAA,MAChB,OAAO,IAAI,KAAK;AAAA,MAChB,KAAK,IAAI,OAAO;AAAA,MAChB,OAAO,IAAI,KAAK;AAAA,IAClB;AACA,IAAAA,OAAM,mBAAmBkb,sBAAqBlb,QAAO,YAAY,OAAO;AAAA,EAC1E;AACA,WAASib,cAAa,QAAQ,MAAM,OAAO,SAAS,SAAS;AAC3D,UAAM,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC;AACpC,UAAM,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC;AACpC,QAAI7a,KAAI;AACR,QAAIC,KAAI;AACR,QAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1B,MAAAD,MAAK,KAAK,IAAI,QAAQ,SAAS;AAC/B,aAAO,IAAI,KAAK,IAAI,OAAO,GAAG,KAAK,IAAIA,EAAC;AAAA,IAC1C,WAAW,QAAQ,MAAM,KAAK,GAAG;AAC/B,MAAAA,MAAK,QAAQ,MAAM,KAAK,KAAK;AAC7B,aAAO,IAAI,KAAK,IAAI,OAAO,GAAG,KAAK,IAAIA,EAAC;AAAA,IAC1C;AACA,QAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1B,MAAAC,MAAK,KAAK,IAAI,QAAQ,SAAS;AAC/B,aAAO,IAAI,KAAK,IAAI,OAAO,GAAG,KAAK,IAAIA,EAAC;AAAA,IAC1C,WAAW,QAAQ,MAAM,KAAK,GAAG;AAC/B,MAAAA,MAAK,QAAQ,MAAM,KAAK,KAAK;AAC7B,aAAO,IAAI,KAAK,IAAI,OAAO,GAAG,KAAK,IAAIA,EAAC;AAAA,IAC1C;AAAA,EACF;AACA,WAAS6a,sBAAqBlb,QAAO,YAAY,SAAS;AACxD,UAAM,QAAQ,CAAC;AACf,UAAM,aAAaA,OAAM,aAAa;AACtC,UAAM,OAAOA,OAAM;AACnB,UAAM,QAAQ4a,uBAAsB,IAAI,IAAI;AAC5C,UAAM,gBAAgB5a,OAAM;AAC5B,UAAM,kBAAkB,KAAK,YAAY,oBAAoBiF,MAAK,aAAa;AAC/E,aAAS5G,KAAI,GAAGA,KAAI,YAAYA,MAAK;AACnC,YAAM,qBAAqB2B,OAAM,iBAAiB3B,IAAG,gBAAgB,QAAQ,QAAQA,EAAC,GAAG,eAAe;AACxG,YAAM,QAAQ,KAAK,MAAMoK,WAAUoN,iBAAgB,mBAAmB,QAAQ7Q,QAAO,CAAC,CAAC;AACvF,YAAM1B,QAAO,WAAWjF,EAAC;AACzB,YAAMgC,KAAI8a,WAAU,mBAAmB,GAAG7X,MAAK,GAAG,KAAK;AACvD,YAAM,YAAY8X,sBAAqB,KAAK;AAC5C,YAAMrT,QAAOsT,kBAAiB,mBAAmB,GAAG/X,MAAK,GAAG,SAAS;AACrE,YAAM,KAAK;AAAA,QACT,GAAG,mBAAmB;AAAA,QACtB,GAAAjD;AAAA,QACA;AAAA,QACA,MAAA0H;AAAA,QACA,KAAK1H;AAAA,QACL,OAAO0H,QAAOzE,MAAK;AAAA,QACnB,QAAQjD,KAAIiD,MAAK;AAAA,MACnB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACA,WAAS8X,sBAAqB,OAAO;AACnC,QAAI,UAAU,KAAK,UAAU,KAAK;AAChC,aAAO;AAAA,IACT,WAAW,QAAQ,KAAK;AACtB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAASC,kBAAiBjb,IAAG0I,IAAG,OAAO;AACrC,QAAI,UAAU,SAAS;AACrB,MAAA1I,MAAK0I;AAAA,IACP,WAAW,UAAU,UAAU;AAC7B,MAAA1I,MAAM0I,KAAI;AAAA,IACZ;AACA,WAAO1I;AAAA,EACT;AACA,WAAS+a,WAAU9a,IAAG0I,IAAG,OAAO;AAC9B,QAAI,UAAU,MAAM,UAAU,KAAK;AACjC,MAAA1I,MAAM0I,KAAI;AAAA,IACZ,WAAW,QAAQ,OAAO,QAAQ,IAAI;AACpC,MAAA1I,MAAK0I;AAAA,IACP;AACA,WAAO1I;AAAA,EACT;AACA,WAASib,iBAAgBtb,QAAO,YAAY;AAC1C,UAAM,EAAC,KAAK,SAAS,EAAC,YAAW,EAAC,IAAIA;AACtC,aAAS3B,KAAI,aAAa,GAAGA,MAAK,GAAGA,MAAK;AACxC,YAAM,cAAc,YAAY,WAAW2B,OAAM,qBAAqB3B,EAAC,CAAC;AACxE,YAAM,SAASkJ,QAAO,YAAY,IAAI;AACtC,YAAM,EAAC,GAAAnH,IAAG,GAAAC,IAAG,WAAW,MAAA0H,OAAM,KAAA/D,MAAK,OAAAgE,QAAO,QAAA/D,QAAM,IAAIjE,OAAM,iBAAiB3B,EAAC;AAC5E,YAAM,EAAC,cAAa,IAAI;AACxB,UAAI,CAACkF,eAAc,aAAa,GAAG;AACjC,cAAM,eAAekR,eAAc,YAAY,YAAY;AAC3D,cAAM,UAAUjN,WAAU,YAAY,eAAe;AACrD,YAAI,YAAY;AAChB,cAAM,eAAeO,QAAO,QAAQ;AACpC,cAAM,cAAc/D,OAAM,QAAQ;AAClC,cAAM,gBAAgBgE,SAAQD,QAAO,QAAQ;AAC7C,cAAM,iBAAiB9D,UAASD,OAAM,QAAQ;AAC9C,YAAI,OAAO,OAAO,YAAY,EAAE,KAAK,CAAA3E,OAAKA,OAAM,CAAC,GAAG;AAClD,cAAI,UAAU;AACd,UAAA0V,oBAAmB,KAAK;AAAA,YACtB,GAAG;AAAA,YACH,GAAG;AAAA,YACH,GAAG;AAAA,YACH,GAAG;AAAA,YACH,QAAQ;AAAA,UACV,CAAC;AACD,cAAI,KAAK;AAAA,QACX,OAAO;AACL,cAAI,SAAS,cAAc,aAAa,eAAe,cAAc;AAAA,QACvE;AAAA,MACF;AACA,MAAA3L;AAAA,QACE;AAAA,QACApJ,OAAM,aAAa3B,EAAC;AAAA,QACpB+B;AAAA,QACAC,KAAK,OAAO,aAAa;AAAA,QACzB;AAAA,QACA;AAAA,UACE,OAAO,YAAY;AAAA,UACnB;AAAA,UACA,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAASkb,gBAAevb,QAAO,QAAQ,UAAU,YAAY;AAC3D,UAAM,EAAC,IAAG,IAAIA;AACd,QAAI,UAAU;AACZ,UAAI,IAAIA,OAAM,SAASA,OAAM,SAAS,QAAQ,GAAG8E,IAAG;AAAA,IACtD,OAAO;AACL,UAAI,gBAAgB9E,OAAM,iBAAiB,GAAG,MAAM;AACpD,UAAI,OAAO,cAAc,GAAG,cAAc,CAAC;AAC3C,eAAS3B,KAAI,GAAGA,KAAI,YAAYA,MAAK;AACnC,wBAAgB2B,OAAM,iBAAiB3B,IAAG,MAAM;AAChD,YAAI,OAAO,cAAc,GAAG,cAAc,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACA,WAASmd,gBAAexb,QAAO,cAAc,QAAQ,YAAY;AAC/D,UAAM,MAAMA,OAAM;AAClB,UAAM,WAAW,aAAa;AAC9B,UAAM,EAAC,OAAApB,QAAO,UAAS,IAAI;AAC3B,QAAK,CAAC,YAAY,CAAC,cAAe,CAACA,UAAS,CAAC,aAAa,SAAS,GAAG;AACpE;AAAA,IACF;AACA,QAAI,KAAK;AACT,QAAI,cAAcA;AAClB,QAAI,YAAY;AAChB,QAAI,YAAY,aAAa,UAAU;AACvC,QAAI,iBAAiB,aAAa;AAClC,QAAI,UAAU;AACd,IAAA2c,gBAAevb,QAAO,QAAQ,UAAU,UAAU;AAClD,QAAI,UAAU;AACd,QAAI,OAAO;AACX,QAAI,QAAQ;AAAA,EACd;AACA,WAASyb,yBAAwB,QAAQla,QAAO,OAAO;AACrD,WAAOI,eAAc,QAAQ;AAAA,MAC3B;AAAA,MACA,OAAAJ;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,MAAMma,qBAAN,cAAgCrB,iBAAgB;AAAA,IAC9C,YAAY,KAAK;AACf,YAAM,GAAG;AACT,WAAK,UAAU;AACf,WAAK,UAAU;AACf,WAAK,cAAc;AACnB,WAAK,eAAe,CAAC;AACrB,WAAK,mBAAmB,CAAC;AAAA,IAC3B;AAAA,IACA,gBAAgB;AACd,YAAM,UAAU,KAAK,WAAW7S,WAAUoT,uBAAsB,KAAK,OAAO,IAAI,CAAC;AACjF,YAAM9R,KAAI,KAAK,QAAQ,KAAK,WAAW,QAAQ;AAC/C,YAAMC,KAAI,KAAK,SAAS,KAAK,YAAY,QAAQ;AACjD,WAAK,UAAU,KAAK,MAAM,KAAK,OAAOD,KAAI,IAAI,QAAQ,IAAI;AAC1D,WAAK,UAAU,KAAK,MAAM,KAAK,MAAMC,KAAI,IAAI,QAAQ,GAAG;AACxD,WAAK,cAAc,KAAK,MAAM,KAAK,IAAID,IAAGC,EAAC,IAAI,CAAC;AAAA,IAClD;AAAA,IACA,sBAAsB;AACpB,YAAM,EAAC,KAAA9I,MAAK,KAAAC,KAAG,IAAI,KAAK,UAAU,KAAK;AACvC,WAAK,MAAMW,gBAAeZ,IAAG,KAAK,CAAC,MAAMA,IAAG,IAAIA,OAAM;AACtD,WAAK,MAAMY,gBAAeX,IAAG,KAAK,CAAC,MAAMA,IAAG,IAAIA,OAAM;AACtD,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IACA,mBAAmB;AACjB,aAAO,KAAK,KAAK,KAAK,cAAc0a,uBAAsB,KAAK,OAAO,CAAC;AAAA,IACzE;AAAA,IACA,mBAAmB,OAAO;AACxB,MAAAP,iBAAgB,UAAU,mBAAmB,KAAK,MAAM,KAAK;AAC7D,WAAK,eAAe,KAAK,UAAU,EAChC,IAAI,CAAC,OAAO9Y,WAAU;AACrB,cAAM,QAAQ+G,UAAS,KAAK,QAAQ,YAAY,UAAU,CAAC,OAAO/G,MAAK,GAAG,IAAI;AAC9E,eAAO,SAAS,UAAU,IAAI,QAAQ;AAAA,MACxC,CAAC,EACA,OAAO,CAAClC,IAAGhB,OAAM,KAAK,MAAM,kBAAkBA,EAAC,CAAC;AAAA,IACrD;AAAA,IACA,MAAM;AACJ,YAAM,OAAO,KAAK;AAClB,UAAI,KAAK,WAAW,KAAK,YAAY,SAAS;AAC5C,QAAA2c,oBAAmB,IAAI;AAAA,MACzB,OAAO;AACL,aAAK,eAAe,GAAG,GAAG,GAAG,CAAC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,eAAe,cAAc,eAAe,aAAa,gBAAgB;AACvE,WAAK,WAAW,KAAK,OAAO,eAAe,iBAAiB,CAAC;AAC7D,WAAK,WAAW,KAAK,OAAO,cAAc,kBAAkB,CAAC;AAC7D,WAAK,eAAe,KAAK,IAAI,KAAK,cAAc,GAAG,KAAK,IAAI,cAAc,eAAe,aAAa,cAAc,CAAC;AAAA,IACvH;AAAA,IACA,cAAczZ,QAAO;AACnB,YAAM,kBAAkBuD,QAAO,KAAK,aAAa,UAAU;AAC3D,YAAM,aAAa,KAAK,QAAQ,cAAc;AAC9C,aAAO+Q,iBAAgBtU,SAAQ,kBAAkB4D,WAAU,UAAU,CAAC;AAAA,IACxE;AAAA,IACA,8BAA8B,OAAO;AACnC,UAAI5B,eAAc,KAAK,GAAG;AACxB,eAAO;AAAA,MACT;AACA,YAAM,gBAAgB,KAAK,eAAe,KAAK,MAAM,KAAK;AAC1D,UAAI,KAAK,QAAQ,SAAS;AACxB,gBAAQ,KAAK,MAAM,SAAS;AAAA,MAC9B;AACA,cAAQ,QAAQ,KAAK,OAAO;AAAA,IAC9B;AAAA,IACA,8BAA8B,UAAU;AACtC,UAAIA,eAAc,QAAQ,GAAG;AAC3B,eAAO;AAAA,MACT;AACA,YAAM,iBAAiB,YAAY,KAAK,eAAe,KAAK,MAAM,KAAK;AACvE,aAAO,KAAK,QAAQ,UAAU,KAAK,MAAM,iBAAiB,KAAK,MAAM;AAAA,IACvE;AAAA,IACA,qBAAqBhC,QAAO;AAC1B,YAAM,cAAc,KAAK,gBAAgB,CAAC;AAC1C,UAAIA,UAAS,KAAKA,SAAQ,YAAY,QAAQ;AAC5C,cAAM,aAAa,YAAYA,MAAK;AACpC,eAAOka,yBAAwB,KAAK,WAAW,GAAGla,QAAO,UAAU;AAAA,MACrE;AAAA,IACF;AAAA,IACA,iBAAiBA,QAAO,oBAAoB,kBAAkB,GAAG;AAC/D,YAAM,QAAQ,KAAK,cAAcA,MAAK,IAAIyD,WAAU;AACpD,aAAO;AAAA,QACL,GAAG,KAAK,IAAI,KAAK,IAAI,qBAAqB,KAAK;AAAA,QAC/C,GAAG,KAAK,IAAI,KAAK,IAAI,qBAAqB,KAAK;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,IACA,yBAAyBzD,QAAO,OAAO;AACrC,aAAO,KAAK,iBAAiBA,QAAO,KAAK,8BAA8B,KAAK,CAAC;AAAA,IAC/E;AAAA,IACA,gBAAgBA,QAAO;AACrB,aAAO,KAAK,yBAAyBA,UAAS,GAAG,KAAK,aAAa,CAAC;AAAA,IACtE;AAAA,IACA,sBAAsBA,QAAO;AAC3B,YAAM,EAAC,MAAAwG,OAAM,KAAA/D,MAAK,OAAAgE,QAAO,QAAA/D,QAAM,IAAI,KAAK,iBAAiB1C,MAAK;AAC9D,aAAO;AAAA,QACL,MAAAwG;AAAA,QACA,KAAA/D;AAAA,QACA,OAAAgE;AAAA,QACA,QAAA/D;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB;AACf,YAAM,EAAC,iBAAiB,MAAM,EAAC,SAAQ,EAAC,IAAI,KAAK;AACjD,UAAI,iBAAiB;AACnB,cAAM,MAAM,KAAK;AACjB,YAAI,KAAK;AACT,YAAI,UAAU;AACd,QAAAsX,gBAAe,MAAM,KAAK,8BAA8B,KAAK,SAAS,GAAG,UAAU,KAAK,aAAa,MAAM;AAC3G,YAAI,UAAU;AACd,YAAI,YAAY;AAChB,YAAI,KAAK;AACT,YAAI,QAAQ;AAAA,MACd;AAAA,IACF;AAAA,IACA,WAAW;AACT,YAAM,MAAM,KAAK;AACjB,YAAM,OAAO,KAAK;AAClB,YAAM,EAAC,YAAY,KAAI,IAAI;AAC3B,YAAM,aAAa,KAAK,aAAa;AACrC,UAAIld,IAAGsI,SAAQiB;AACf,UAAI,KAAK,YAAY,SAAS;AAC5B,QAAA0T,iBAAgB,MAAM,UAAU;AAAA,MAClC;AACA,UAAI,KAAK,SAAS;AAChB,aAAK,MAAM,QAAQ,CAAC,MAAM/Z,WAAU;AAClC,cAAIA,WAAU,GAAG;AACf,YAAAoF,UAAS,KAAK,8BAA8B,KAAK,KAAK;AACtD,kBAAM,cAAc,KAAK,WAAW,KAAK,WAAWpF,SAAQ,CAAC,CAAC;AAC9D,YAAAia,gBAAe,MAAM,aAAa7U,SAAQ,UAAU;AAAA,UACtD;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,WAAW,SAAS;AACtB,YAAI,KAAK;AACT,aAAKtI,KAAI,aAAa,GAAGA,MAAK,GAAGA,MAAK;AACpC,gBAAM,cAAc,WAAW,WAAW,KAAK,qBAAqBA,EAAC,CAAC;AACtE,gBAAM,EAAC,OAAAO,QAAO,UAAS,IAAI;AAC3B,cAAI,CAAC,aAAa,CAACA,QAAO;AACxB;AAAA,UACF;AACA,cAAI,YAAY;AAChB,cAAI,cAAcA;AAClB,cAAI,YAAY,YAAY,UAAU;AACtC,cAAI,iBAAiB,YAAY;AACjC,UAAA+H,UAAS,KAAK,8BAA8B,KAAK,MAAM,UAAU,KAAK,MAAM,KAAK,GAAG;AACpF,UAAAiB,YAAW,KAAK,iBAAiBvJ,IAAGsI,OAAM;AAC1C,cAAI,UAAU;AACd,cAAI,OAAO,KAAK,SAAS,KAAK,OAAO;AACrC,cAAI,OAAOiB,UAAS,GAAGA,UAAS,CAAC;AACjC,cAAI,OAAO;AAAA,QACb;AACA,YAAI,QAAQ;AAAA,MACd;AAAA,IACF;AAAA,IACA,aAAa;AAAA,IAAC;AAAA,IACd,aAAa;AACX,YAAM,MAAM,KAAK;AACjB,YAAM,OAAO,KAAK;AAClB,YAAM,WAAW,KAAK;AACtB,UAAI,CAAC,SAAS,SAAS;AACrB;AAAA,MACF;AACA,YAAM,aAAa,KAAK,cAAc,CAAC;AACvC,UAAIjB,SAAQuB;AACZ,UAAI,KAAK;AACT,UAAI,UAAU,KAAK,SAAS,KAAK,OAAO;AACxC,UAAI,OAAO,UAAU;AACrB,UAAI,YAAY;AAChB,UAAI,eAAe;AACnB,WAAK,MAAM,QAAQ,CAAC,MAAM3G,WAAU;AAClC,YAAIA,WAAU,KAAK,CAAC,KAAK,SAAS;AAChC;AAAA,QACF;AACA,cAAM,cAAc,SAAS,WAAW,KAAK,WAAWA,MAAK,CAAC;AAC9D,cAAM,WAAWgG,QAAO,YAAY,IAAI;AACxC,QAAAZ,UAAS,KAAK,8BAA8B,KAAK,MAAMpF,MAAK,EAAE,KAAK;AACnE,YAAI,YAAY,mBAAmB;AACjC,cAAI,OAAO,SAAS;AACpB,UAAA2G,SAAQ,IAAI,YAAY,KAAK,KAAK,EAAE;AACpC,cAAI,YAAY,YAAY;AAC5B,gBAAM,UAAUV,WAAU,YAAY,eAAe;AACrD,cAAI;AAAA,YACF,CAACU,SAAQ,IAAI,QAAQ;AAAA,YACrB,CAACvB,UAAS,SAAS,OAAO,IAAI,QAAQ;AAAA,YACtCuB,SAAQ,QAAQ;AAAA,YAChB,SAAS,OAAO,QAAQ;AAAA,UAC1B;AAAA,QACF;AACA,QAAAkB,YAAW,KAAK,KAAK,OAAO,GAAG,CAACzC,SAAQ,UAAU;AAAA,UAChD,OAAO,YAAY;AAAA,QACrB,CAAC;AAAA,MACH,CAAC;AACD,UAAI,QAAQ;AAAA,IACd;AAAA,IACA,YAAY;AAAA,IAAC;AAAA,EACf;AACA,EAAA+U,mBAAkB,KAAK;AACvB,EAAAA,mBAAkB,WAAW;AAAA,IAC3B,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,YAAY;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY,CAAC;AAAA,MACb,kBAAkB;AAAA,IACpB;AAAA,IACA,MAAM;AAAA,MACJ,UAAU;AAAA,IACZ;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,mBAAmB;AAAA,MACnB,UAAUtV,OAAM,WAAW;AAAA,IAC7B;AAAA,IACA,aAAa;AAAA,MACX,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,SAAS,OAAO;AACd,eAAO;AAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT,mBAAmB;AAAA,IACrB;AAAA,EACF;AACA,EAAAsV,mBAAkB,gBAAgB;AAAA,IAChC,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,eAAe;AAAA,EACjB;AACA,EAAAA,mBAAkB,cAAc;AAAA,IAC9B,YAAY;AAAA,MACV,WAAW;AAAA,IACb;AAAA,EACF;AAEA,MAAMC,aAAY;AAAA,IAChB,aAAa,EAAC,QAAQ,MAAM,MAAM,GAAG,OAAO,IAAI;AAAA,IAChD,QAAQ,EAAC,QAAQ,MAAM,MAAM,KAAM,OAAO,GAAE;AAAA,IAC5C,QAAQ,EAAC,QAAQ,MAAM,MAAM,KAAO,OAAO,GAAE;AAAA,IAC7C,MAAM,EAAC,QAAQ,MAAM,MAAM,MAAS,OAAO,GAAE;AAAA,IAC7C,KAAK,EAAC,QAAQ,MAAM,MAAM,OAAU,OAAO,GAAE;AAAA,IAC7C,MAAM,EAAC,QAAQ,OAAO,MAAM,QAAW,OAAO,EAAC;AAAA,IAC/C,OAAO,EAAC,QAAQ,MAAM,MAAM,QAAS,OAAO,GAAE;AAAA,IAC9C,SAAS,EAAC,QAAQ,OAAO,MAAM,QAAS,OAAO,EAAC;AAAA,IAChD,MAAM,EAAC,QAAQ,MAAM,MAAM,OAAQ;AAAA,EACrC;AACA,MAAMC,SAAS,OAAO,KAAKD,UAAS;AACpC,WAASE,QAAO1Y,IAAG1C,IAAG;AACpB,WAAO0C,KAAI1C;AAAA,EACb;AACA,WAASqb,OAAM9b,QAAO,OAAO;AAC3B,QAAIuD,eAAc,KAAK,GAAG;AACxB,aAAO;AAAA,IACT;AACA,UAAM,UAAUvD,OAAM;AACtB,UAAM,EAAC,QAAA+b,SAAQ,OAAAC,QAAO,WAAU,IAAIhc,OAAM;AAC1C,QAAI,QAAQ;AACZ,QAAI,OAAO+b,YAAW,YAAY;AAChC,cAAQA,QAAO,KAAK;AAAA,IACtB;AACA,QAAI,CAAClb,gBAAe,KAAK,GAAG;AAC1B,cAAQ,OAAOkb,YAAW,WACtB,QAAQ,MAAM,OAAOA,OAAM,IAC3B,QAAQ,MAAM,KAAK;AAAA,IACzB;AACA,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,IACT;AACA,QAAIC,QAAO;AACT,cAAQA,WAAU,WAAWrW,UAAS,UAAU,KAAK,eAAe,QAChE,QAAQ,QAAQ,OAAO,WAAW,UAAU,IAC5C,QAAQ,QAAQ,OAAOqW,MAAK;AAAA,IAClC;AACA,WAAO,CAAC;AAAA,EACV;AACA,WAASC,2BAA0B,SAAShc,MAAKC,MAAK,UAAU;AAC9D,UAAM,OAAO0b,OAAM;AACnB,aAASvd,KAAIud,OAAM,QAAQ,OAAO,GAAGvd,KAAI,OAAO,GAAG,EAAEA,IAAG;AACtD,YAAM,WAAWsd,WAAUC,OAAMvd,EAAC,CAAC;AACnC,YAAM,SAAS,SAAS,QAAQ,SAAS,QAAQ,OAAO;AACxD,UAAI,SAAS,UAAU,KAAK,MAAM6B,OAAMD,SAAQ,SAAS,SAAS,KAAK,KAAK,UAAU;AACpF,eAAO2b,OAAMvd,EAAC;AAAA,MAChB;AAAA,IACF;AACA,WAAOud,OAAM,OAAO,CAAC;AAAA,EACvB;AACA,WAASM,4BAA2Blc,QAAO,UAAU,SAASC,MAAKC,MAAK;AACtE,aAAS7B,KAAIud,OAAM,SAAS,GAAGvd,MAAKud,OAAM,QAAQ,OAAO,GAAGvd,MAAK;AAC/D,YAAM,OAAOud,OAAMvd,EAAC;AACpB,UAAIsd,WAAU,IAAI,EAAE,UAAU3b,OAAM,SAAS,KAAKE,MAAKD,MAAK,IAAI,KAAK,WAAW,GAAG;AACjF,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO2b,OAAM,UAAUA,OAAM,QAAQ,OAAO,IAAI,CAAC;AAAA,EACnD;AACA,WAASO,oBAAmB,MAAM;AAChC,aAAS9d,KAAIud,OAAM,QAAQ,IAAI,IAAI,GAAG,OAAOA,OAAM,QAAQvd,KAAI,MAAM,EAAEA,IAAG;AACxE,UAAIsd,WAAUC,OAAMvd,EAAC,CAAC,EAAE,QAAQ;AAC9B,eAAOud,OAAMvd,EAAC;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACA,WAAS+d,SAAQ,OAAO,MAAM,YAAY;AACxC,QAAI,CAAC,YAAY;AACf,YAAM,IAAI,IAAI;AAAA,IAChB,WAAW,WAAW,QAAQ;AAC5B,YAAM,EAAC,IAAI,GAAE,IAAIC,SAAQ,YAAY,IAAI;AACzC,YAAM,YAAY,WAAW,EAAE,KAAK,OAAO,WAAW,EAAE,IAAI,WAAW,EAAE;AACzE,YAAM,SAAS,IAAI;AAAA,IACrB;AAAA,EACF;AACA,WAASC,eAActc,QAAO,OAAOoY,MAAK,WAAW;AACnD,UAAM,UAAUpY,OAAM;AACtB,UAAM,QAAQ,CAAC,QAAQ,QAAQ,MAAM,CAAC,EAAE,OAAO,SAAS;AACxD,UAAM,OAAO,MAAM,MAAM,SAAS,CAAC,EAAE;AACrC,QAAI,OAAOuB;AACX,SAAK,QAAQ,OAAO,SAAS,MAAM,QAAQ,CAAC,QAAQ,IAAI,OAAO,GAAG,SAAS,GAAG;AAC5E,MAAAA,SAAQ6W,KAAI,KAAK;AACjB,UAAI7W,UAAS,GAAG;AACd,cAAMA,MAAK,EAAE,QAAQ;AAAA,MACvB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASgb,qBAAoBvc,QAAO,QAAQ,WAAW;AACrD,UAAM,QAAQ,CAAC;AACf,UAAMoY,OAAM,CAAC;AACb,UAAM,OAAO,OAAO;AACpB,QAAI/Z,IAAG;AACP,SAAKA,KAAI,GAAGA,KAAI,MAAM,EAAEA,IAAG;AACzB,cAAQ,OAAOA,EAAC;AAChB,MAAA+Z,KAAI,KAAK,IAAI/Z;AACb,YAAM,KAAK;AAAA,QACT;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,WAAQ,SAAS,KAAK,CAAC,YAAa,QAAQie,eAActc,QAAO,OAAOoY,MAAK,SAAS;AAAA,EACxF;AACA,MAAMoE,aAAN,cAAwBpU,OAAM;AAAA,IAC5B,YAAY,OAAO;AACjB,YAAM,KAAK;AACX,WAAK,SAAS;AAAA,QACZ,MAAM,CAAC;AAAA,QACP,QAAQ,CAAC;AAAA,QACT,KAAK,CAAC;AAAA,MACR;AACA,WAAK,QAAQ;AACb,WAAK,aAAa;AAClB,WAAK,WAAW,CAAC;AACjB,WAAK,cAAc;AACnB,WAAK,aAAa;AAAA,IACpB;AAAA,IACA,KAAK,WAAW,MAAM;AACpB,YAAM,OAAO,UAAU,SAAS,UAAU,OAAO,CAAC;AAClD,YAAM,UAAU,KAAK,WAAW,IAAIgC,UAAS,MAAM,UAAU,SAAS,IAAI;AAC1E,cAAQ,KAAK,IAAI;AACjB,MAAAiF,SAAQ,KAAK,gBAAgB,QAAQ,QAAQ,CAAC;AAC9C,WAAK,aAAa;AAAA,QAChB,QAAQ,KAAK;AAAA,QACb,OAAO,KAAK;AAAA,QACZ,YAAY,KAAK;AAAA,MACnB;AACA,YAAM,KAAK,SAAS;AACpB,WAAK,cAAc,KAAK;AAAA,IAC1B;AAAA,IACA,MAAM,KAAK9N,QAAO;AAChB,UAAI,QAAQ,QAAW;AACrB,eAAO;AAAA,MACT;AACA,aAAOua,OAAM,MAAM,GAAG;AAAA,IACxB;AAAA,IACA,eAAe;AACb,YAAM,aAAa;AACnB,WAAK,SAAS;AAAA,QACZ,MAAM,CAAC;AAAA,QACP,QAAQ,CAAC;AAAA,QACT,KAAK,CAAC;AAAA,MACR;AAAA,IACF;AAAA,IACA,sBAAsB;AACpB,YAAMlc,WAAU,KAAK;AACrB,YAAM,UAAU,KAAK;AACrB,YAAM,OAAOA,SAAQ,KAAK,QAAQ;AAClC,UAAI,EAAC,KAAAK,MAAK,KAAAC,MAAK,YAAY,WAAU,IAAI,KAAK,cAAc;AAC5D,eAAS,aAAa,QAAQ;AAC5B,YAAI,CAAC,cAAc,CAAC,MAAM,OAAO,GAAG,GAAG;AACrC,UAAAD,OAAM,KAAK,IAAIA,MAAK,OAAO,GAAG;AAAA,QAChC;AACA,YAAI,CAAC,cAAc,CAAC,MAAM,OAAO,GAAG,GAAG;AACrC,UAAAC,OAAM,KAAK,IAAIA,MAAK,OAAO,GAAG;AAAA,QAChC;AAAA,MACF;AACA,UAAI,CAAC,cAAc,CAAC,YAAY;AAC9B,qBAAa,KAAK,gBAAgB,CAAC;AACnC,YAAIN,SAAQ,WAAW,WAAWA,SAAQ,MAAM,WAAW,UAAU;AACnE,uBAAa,KAAK,UAAU,KAAK,CAAC;AAAA,QACpC;AAAA,MACF;AACA,MAAAK,OAAMY,gBAAeZ,IAAG,KAAK,CAAC,MAAMA,IAAG,IAAIA,OAAM,CAAC,QAAQ,QAAQ,KAAK,IAAI,GAAG,IAAI;AAClF,MAAAC,OAAMW,gBAAeX,IAAG,KAAK,CAAC,MAAMA,IAAG,IAAIA,OAAM,CAAC,QAAQ,MAAM,KAAK,IAAI,GAAG,IAAI,IAAI;AACpF,WAAK,MAAM,KAAK,IAAID,MAAKC,OAAM,CAAC;AAChC,WAAK,MAAM,KAAK,IAAID,OAAM,GAAGC,IAAG;AAAA,IAClC;AAAA,IACA,kBAAkB;AAChB,YAAM,MAAM,KAAK,mBAAmB;AACpC,UAAID,OAAM,OAAO;AACjB,UAAIC,OAAM,OAAO;AACjB,UAAI,IAAI,QAAQ;AACd,QAAAD,OAAM,IAAI,CAAC;AACX,QAAAC,OAAM,IAAI,IAAI,SAAS,CAAC;AAAA,MAC1B;AACA,aAAO,EAAC,KAAAD,MAAK,KAAAC,KAAG;AAAA,IAClB;AAAA,IACA,aAAa;AACX,YAAMN,WAAU,KAAK;AACrB,YAAM,WAAWA,SAAQ;AACzB,YAAM,WAAWA,SAAQ;AACzB,YAAM,aAAa,SAAS,WAAW,WAAW,KAAK,mBAAmB,IAAI,KAAK,UAAU;AAC7F,UAAIA,SAAQ,WAAW,WAAW,WAAW,QAAQ;AACnD,aAAK,MAAM,KAAK,YAAY,WAAW,CAAC;AACxC,aAAK,MAAM,KAAK,YAAY,WAAW,WAAW,SAAS,CAAC;AAAA,MAC9D;AACA,YAAMK,OAAM,KAAK;AACjB,YAAMC,OAAM,KAAK;AACjB,YAAM,QAAQuc,gBAAe,YAAYxc,MAAKC,IAAG;AACjD,WAAK,QAAQ,SAAS,SAAS,SAAS,WACpC+b,2BAA0B,SAAS,SAAS,KAAK,KAAK,KAAK,KAAK,KAAK,kBAAkBhc,IAAG,CAAC,IAC3Fic,4BAA2B,MAAM,MAAM,QAAQ,SAAS,SAAS,KAAK,KAAK,KAAK,GAAG;AACvF,WAAK,aAAa,CAAC,SAAS,MAAM,WAAW,KAAK,UAAU,SAAS,SACjEC,oBAAmB,KAAK,KAAK;AACjC,WAAK,YAAY,UAAU;AAC3B,UAAIvc,SAAQ,SAAS;AACnB,cAAM,QAAQ;AAAA,MAChB;AACA,aAAO2c,qBAAoB,MAAM,OAAO,KAAK,UAAU;AAAA,IACzD;AAAA,IACA,gBAAgB;AACd,UAAI,KAAK,QAAQ,qBAAqB;AACpC,aAAK,YAAY,KAAK,MAAM,IAAI,UAAQ,CAAC,KAAK,KAAK,CAAC;AAAA,MACtD;AAAA,IACF;AAAA,IACA,YAAY,YAAY;AACtB,UAAIla,SAAQ;AACZ,UAAIU,OAAM;AACV,UAAI,OAAO;AACX,UAAI,KAAK,QAAQ,UAAU,WAAW,QAAQ;AAC5C,gBAAQ,KAAK,mBAAmB,WAAW,CAAC,CAAC;AAC7C,YAAI,WAAW,WAAW,GAAG;AAC3B,UAAAV,SAAQ,IAAI;AAAA,QACd,OAAO;AACL,UAAAA,UAAS,KAAK,mBAAmB,WAAW,CAAC,CAAC,IAAI,SAAS;AAAA,QAC7D;AACA,eAAO,KAAK,mBAAmB,WAAW,WAAW,SAAS,CAAC,CAAC;AAChE,YAAI,WAAW,WAAW,GAAG;AAC3B,UAAAU,OAAM;AAAA,QACR,OAAO;AACL,UAAAA,QAAO,OAAO,KAAK,mBAAmB,WAAW,WAAW,SAAS,CAAC,CAAC,KAAK;AAAA,QAC9E;AAAA,MACF;AACA,YAAM,QAAQ,WAAW,SAAS,IAAI,MAAM;AAC5C,MAAAV,SAAQmG,aAAYnG,QAAO,GAAG,KAAK;AACnC,MAAAU,OAAMyF,aAAYzF,MAAK,GAAG,KAAK;AAC/B,WAAK,WAAW,EAAC,OAAAV,QAAO,KAAAU,MAAK,QAAQ,KAAKV,SAAQ,IAAIU,MAAI;AAAA,IAC5D;AAAA,IACA,YAAY;AACV,YAAM,UAAU,KAAK;AACrB,YAAM9C,OAAM,KAAK;AACjB,YAAMC,OAAM,KAAK;AACjB,YAAMN,WAAU,KAAK;AACrB,YAAM,WAAWA,SAAQ;AACzB,YAAM,QAAQ,SAAS,QAAQqc,2BAA0B,SAAS,SAAShc,MAAKC,MAAK,KAAK,kBAAkBD,IAAG,CAAC;AAChH,YAAM,WAAWiC,gBAAe,SAAS,UAAU,CAAC;AACpD,YAAM,UAAU,UAAU,SAAS,SAAS,aAAa;AACzD,YAAM,aAAayD,UAAS,OAAO,KAAK,YAAY;AACpD,YAAM,QAAQ,CAAC;AACf,UAAI,QAAQ1F;AACZ,UAAI,MAAM;AACV,UAAI,YAAY;AACd,gBAAQ,CAAC,QAAQ,QAAQ,OAAO,WAAW,OAAO;AAAA,MACpD;AACA,cAAQ,CAAC,QAAQ,QAAQ,OAAO,aAAa,QAAQ,KAAK;AAC1D,UAAI,QAAQ,KAAKC,MAAKD,MAAK,KAAK,IAAI,MAAS,UAAU;AACrD,cAAM,IAAI,MAAMA,OAAM,UAAUC,OAAM,yCAAyC,WAAW,MAAM,KAAK;AAAA,MACvG;AACA,YAAM,aAAaN,SAAQ,MAAM,WAAW,UAAU,KAAK,kBAAkB;AAC7E,WAAK,OAAO,OAAO,QAAQ,GAAG,OAAOM,MAAK,OAAO,CAAC,QAAQ,IAAI,MAAM,UAAU,KAAK,GAAG,SAAS;AAC7F,QAAAkc,SAAQ,OAAO,MAAM,UAAU;AAAA,MACjC;AACA,UAAI,SAASlc,QAAON,SAAQ,WAAW,WAAW,UAAU,GAAG;AAC7D,QAAAwc,SAAQ,OAAO,MAAM,UAAU;AAAA,MACjC;AACA,aAAO,OAAO,KAAK,KAAK,EAAE,KAAK,CAACjZ,IAAG1C,OAAM0C,KAAI1C,EAAC,EAAE,IAAI,CAAAL,OAAK,CAACA,EAAC;AAAA,IAC7D;AAAA,IACA,iBAAiB,OAAO;AACtB,YAAM,UAAU,KAAK;AACrB,YAAM,WAAW,KAAK,QAAQ;AAC9B,UAAI,SAAS,eAAe;AAC1B,eAAO,QAAQ,OAAO,OAAO,SAAS,aAAa;AAAA,MACrD;AACA,aAAO,QAAQ,OAAO,OAAO,SAAS,eAAe,QAAQ;AAAA,IAC/D;AAAA,IACA,oBAAoB,MAAMmB,QAAO,OAAO4I,SAAQ;AAC9C,YAAMvK,WAAU,KAAK;AACrB,YAAM8c,WAAU9c,SAAQ,KAAK;AAC7B,YAAM,OAAO,KAAK;AAClB,YAAM,YAAY,KAAK;AACvB,YAAM,cAAc,QAAQ8c,SAAQ,IAAI;AACxC,YAAM,cAAc,aAAaA,SAAQ,SAAS;AAClD,YAAM,OAAO,MAAMnb,MAAK;AACxB,YAAM,QAAQ,aAAa,eAAe,QAAQ,KAAK;AACvD,YAAM,QAAQ,KAAK,SAAS,OAAO,MAAM4I,YAAW,QAAQ,cAAc,YAAY;AACtF,YAAM,YAAYvK,SAAQ,MAAM;AAChC,aAAO,YAAY0I,UAAS,WAAW,CAAC,OAAO/G,QAAO,KAAK,GAAG,IAAI,IAAI;AAAA,IACxE;AAAA,IACA,mBAAmB,OAAO;AACxB,UAAIlD,IAAG,MAAM;AACb,WAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,eAAO,MAAMA,EAAC;AACd,aAAK,QAAQ,KAAK,oBAAoB,KAAK,OAAOA,IAAG,KAAK;AAAA,MAC5D;AAAA,IACF;AAAA,IACA,mBAAmB,OAAO;AACxB,aAAO,UAAU,OAAO,OAAO,QAAQ,KAAK,QAAQ,KAAK,MAAM,KAAK;AAAA,IACtE;AAAA,IACA,iBAAiB,OAAO;AACtB,YAAM,UAAU,KAAK;AACrB,YAAM,MAAM,KAAK,mBAAmB,KAAK;AACzC,aAAO,KAAK,oBAAoB,QAAQ,QAAQ,OAAO,QAAQ,MAAM;AAAA,IACvE;AAAA,IACA,iBAAiB,OAAO;AACtB,YAAM,UAAU,KAAK;AACrB,YAAM,MAAM,KAAK,mBAAmB,KAAK,IAAI,QAAQ,SAAS,QAAQ;AACtE,aAAO,KAAK,MAAM,OAAO,KAAK,MAAM,KAAK;AAAA,IAC3C;AAAA,IACA,cAAc,OAAO;AACnB,YAAM,YAAY,KAAK,QAAQ;AAC/B,YAAM,iBAAiB,KAAK,IAAI,YAAY,KAAK,EAAE;AACnD,YAAM,QAAQ8G,WAAU,KAAK,aAAa,IAAI,UAAU,cAAc,UAAU,WAAW;AAC3F,YAAM,cAAc,KAAK,IAAI,KAAK;AAClC,YAAM,cAAc,KAAK,IAAI,KAAK;AAClC,YAAM,eAAe,KAAK,wBAAwB,CAAC,EAAE;AACrD,aAAO;AAAA,QACL,GAAI,iBAAiB,cAAgB,eAAe;AAAA,QACpD,GAAI,iBAAiB,cAAgB,eAAe;AAAA,MACtD;AAAA,IACF;AAAA,IACA,kBAAkB,aAAa;AAC7B,YAAM,WAAW,KAAK,QAAQ;AAC9B,YAAM,iBAAiB,SAAS;AAChC,YAAMgF,UAAS,eAAe,SAAS,IAAI,KAAK,eAAe;AAC/D,YAAM,eAAe,KAAK,oBAAoB,aAAa,GAAGoS,qBAAoB,MAAM,CAAC,WAAW,GAAG,KAAK,UAAU,GAAGpS,OAAM;AAC/H,YAAM7G,QAAO,KAAK,cAAc,YAAY;AAC5C,YAAM,WAAW,KAAK,MAAM,KAAK,aAAa,IAAI,KAAK,QAAQA,MAAK,IAAI,KAAK,SAASA,MAAK,CAAC,IAAI;AAChG,aAAO,WAAW,IAAI,WAAW;AAAA,IACnC;AAAA,IACA,oBAAoB;AAClB,UAAI,aAAa,KAAK,OAAO,QAAQ,CAAC;AACtC,UAAIjF,IAAG;AACP,UAAI,WAAW,QAAQ;AACrB,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,KAAK,wBAAwB;AAC3C,UAAI,KAAK,eAAe,MAAM,QAAQ;AACpC,eAAQ,KAAK,OAAO,OAAO,MAAM,CAAC,EAAE,WAAW,mBAAmB,IAAI;AAAA,MACxE;AACA,WAAKA,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,qBAAa,WAAW,OAAO,MAAMA,EAAC,EAAE,WAAW,mBAAmB,IAAI,CAAC;AAAA,MAC7E;AACA,aAAQ,KAAK,OAAO,OAAO,KAAK,UAAU,UAAU;AAAA,IACtD;AAAA,IACA,qBAAqB;AACnB,YAAM,aAAa,KAAK,OAAO,UAAU,CAAC;AAC1C,UAAIA,IAAG;AACP,UAAI,WAAW,QAAQ;AACrB,eAAO;AAAA,MACT;AACA,YAAM,SAAS,KAAK,UAAU;AAC9B,WAAKA,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,mBAAW,KAAKyd,OAAM,MAAM,OAAOzd,EAAC,CAAC,CAAC;AAAA,MACxC;AACA,aAAQ,KAAK,OAAO,SAAS,KAAK,cAAc,aAAa,KAAK,UAAU,UAAU;AAAA,IACxF;AAAA,IACA,UAAU,QAAQ;AAChB,aAAO6E,cAAa,OAAO,KAAK2Y,OAAM,CAAC;AAAA,IACzC;AAAA,EACF;AACA,EAAAW,WAAU,KAAK;AACf,EAAAA,WAAU,WAAW;AAAA,IACnB,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,gBAAgB,CAAC;AAAA,IACnB;AAAA,IACA,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,WAASG,aAAY,OAAO,KAAK,SAAS;AACxC,QAAI,KAAK;AACT,QAAI,KAAK,MAAM,SAAS;AACxB,QAAI,YAAY,YAAY,YAAY;AACxC,QAAI,SAAS;AACX,UAAI,OAAO,MAAM,EAAE,EAAE,OAAO,OAAO,MAAM,EAAE,EAAE,KAAK;AAChD,SAAC,EAAC,IAAI,GAAE,IAAIpS,cAAa,OAAO,OAAO,GAAG;AAAA,MAC5C;AACA,OAAC,EAAC,KAAK,YAAY,MAAM,WAAU,IAAI,MAAM,EAAE;AAC/C,OAAC,EAAC,KAAK,YAAY,MAAM,WAAU,IAAI,MAAM,EAAE;AAAA,IACjD,OAAO;AACL,UAAI,OAAO,MAAM,EAAE,EAAE,QAAQ,OAAO,MAAM,EAAE,EAAE,MAAM;AAClD,SAAC,EAAC,IAAI,GAAE,IAAIA,cAAa,OAAO,QAAQ,GAAG;AAAA,MAC7C;AACA,OAAC,EAAC,MAAM,YAAY,KAAK,WAAU,IAAI,MAAM,EAAE;AAC/C,OAAC,EAAC,MAAM,YAAY,KAAK,WAAU,IAAI,MAAM,EAAE;AAAA,IACjD;AACA,UAAM,OAAO,aAAa;AAC1B,WAAO,OAAO,cAAc,aAAa,eAAe,MAAM,cAAc,OAAO;AAAA,EACrF;AACA,MAAMqS,mBAAN,cAA8BJ,WAAU;AAAA,IACtC,YAAY,OAAO;AACjB,YAAM,KAAK;AACX,WAAK,SAAS,CAAC;AACf,WAAK,UAAU;AACf,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,cAAc;AACZ,YAAM,aAAa,KAAK,uBAAuB;AAC/C,YAAM,QAAQ,KAAK,SAAS,KAAK,iBAAiB,UAAU;AAC5D,WAAK,UAAUG,aAAY,OAAO,KAAK,GAAG;AAC1C,WAAK,cAAcA,aAAY,OAAO,KAAK,GAAG,IAAI,KAAK;AACvD,YAAM,YAAY,UAAU;AAAA,IAC9B;AAAA,IACA,iBAAiB,YAAY;AAC3B,YAAM,EAAC,KAAA1c,MAAK,KAAAC,KAAG,IAAI;AACnB,YAAM,QAAQ,CAAC;AACf,YAAM,QAAQ,CAAC;AACf,UAAI7B,IAAG,MAAMiE,OAAM,MAAMmB;AACzB,WAAKpF,KAAI,GAAG,OAAO,WAAW,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACnD,eAAO,WAAWA,EAAC;AACnB,YAAI,QAAQ4B,QAAO,QAAQC,MAAK;AAC9B,gBAAM,KAAK,IAAI;AAAA,QACjB;AAAA,MACF;AACA,UAAI,MAAM,SAAS,GAAG;AACpB,eAAO;AAAA,UACL,EAAC,MAAMD,MAAK,KAAK,EAAC;AAAA,UAClB,EAAC,MAAMC,MAAK,KAAK,EAAC;AAAA,QACpB;AAAA,MACF;AACA,WAAK7B,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,QAAAoF,QAAO,MAAMpF,KAAI,CAAC;AAClB,QAAAiE,QAAO,MAAMjE,KAAI,CAAC;AAClB,eAAO,MAAMA,EAAC;AACd,YAAI,KAAK,OAAOoF,QAAOnB,SAAQ,CAAC,MAAM,MAAM;AAC1C,gBAAM,KAAK,EAAC,MAAM,MAAM,KAAKjE,MAAK,OAAO,GAAE,CAAC;AAAA,QAC9C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,yBAAyB;AACvB,UAAI,aAAa,KAAK,OAAO,OAAO,CAAC;AACrC,UAAI,WAAW,QAAQ;AACrB,eAAO;AAAA,MACT;AACA,YAAM2C,QAAO,KAAK,kBAAkB;AACpC,YAAM,QAAQ,KAAK,mBAAmB;AACtC,UAAIA,MAAK,UAAU,MAAM,QAAQ;AAC/B,qBAAa,KAAK,UAAUA,MAAK,OAAO,KAAK,CAAC;AAAA,MAChD,OAAO;AACL,qBAAaA,MAAK,SAASA,QAAO;AAAA,MACpC;AACA,mBAAa,KAAK,OAAO,MAAM;AAC/B,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB,OAAO;AACxB,cAAQ2b,aAAY,KAAK,QAAQ,KAAK,IAAI,KAAK,WAAW,KAAK;AAAA,IACjE;AAAA,IACA,iBAAiB,OAAO;AACtB,YAAM,UAAU,KAAK;AACrB,YAAM,UAAU,KAAK,mBAAmB,KAAK,IAAI,QAAQ,SAAS,QAAQ;AAC1E,aAAOA,aAAY,KAAK,QAAQ,UAAU,KAAK,cAAc,KAAK,SAAS,IAAI;AAAA,IACjF;AAAA,EACF;AACA,EAAAC,iBAAgB,KAAK;AACrB,EAAAA,iBAAgB,WAAWJ,WAAU;AAErC,MAAI/a,UAAsB,uBAAO,OAAO;AAAA,IACxC,WAAW;AAAA,IACX,eAAeqY;AAAA,IACf,aAAaS;AAAA,IACb,kBAAkBG;AAAA,IAClB,mBAAmBgB;AAAA,IACnB,WAAWc;AAAA,IACX,iBAAiBI;AAAA,EACjB,CAAC;AAED,MAAMC,iBAAgB;AAAA,IACpB5S;AAAA,IACAxH;AAAA,IACAiM;AAAA,IACAjN;AAAA,EACF;;;ACpgVA,EAAAqb,OAAM,SAAS,GAAGC,cAAa;AAE/B,MAAOC,gBAAQF;;;AHDf,MAAO,gCAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,YAAMG,QAAO;AAEb,QAAE,uBAAuB,EAAE,KAAK,WAAY;AAC1C,QAAAA,MAAK,WAAW,EAAE,IAAI,GAAGA,KAAI;AAAA,MAC/B,CAAC;AAED,QAAE,KAAK,OAAO,EAAE,GAAG,iBAAiB,SAAU,OAAO,SAAS;AAE5D,QAAAA,MAAK,WAAW,EAAE,IAAI,mBAAmB,GAAGA,KAAI;AAAA,MAClD,CAAC;AACD,QAAE,KAAK,OAAO,EAAE,GAAG,iBAAiB,WAAY;AAC9C,UAAE,uBAAuB,EAAE,KAAK,WAAY;AAC1C,UAAAA,MAAK,WAAW,EAAE,IAAI,GAAGA,KAAI;AAAA,QAC/B,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IAEA,WAAW,gBAAgBA,OAAM;AAC/B,YAAM,UAAU,eAAe,KAAK,UAAU;AAC9C,YAAMC,UAAS,eAAe,KAAK,QAAQ;AAE3C,YAAMC,UAAS;AAAA,QACb,QAAQD;AAAA,QACR,OAAO,KAAK,EAAE,cAAc;AAAA,QAC5B,QAAQ,eAAe,KAAK,cAAc;AAAA,QAC1C,QAAQ,eAAe,KAAK,cAAc;AAAA,MAC5C;AAEA,YAAM,UAAU,IAAI,UAAU;AAAA,QAC5B,GAAG;AAAA,QACH,eAAe,KAAK,UAAU;AAAA,QAC9BC;AAAA,MACF;AAAA,IACF;AAAA,EAEF;;;AI9CA;AAAA;AAAA;AAAA;AAIA,MAAO,iCAAP,cAA6B,sBAAsB;AAAA,IAQjD,aAAa;AACX,YAAM,WAAW;AAEjB,WAAK,eAAe;AAAA,QAClB,SAAS,KAAK;AAAA,QACd,WAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,YAAMC,QAAO;AAEb,UAAI,cAAc,KAAK,UAAU,MAAM,GAAG;AAC1C,kBAAY,QAAQ,SAAU,aAAaC,QAAO;AAChD,QAAAD,MAAK,aAAa,WAAW,EAAE,KAAKA,KAAI,EAAE;AAAA,MAC5C,CAAC;AAAA,IAGH;AAAA,IAEA,oBAAoB;AAClB,YAAMA,QAAO;AACb,WAAK,WAAW,qBAAS,OAAO,KAAK,SAAS;AAAA,QAC5C,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,OAAOA,MAAK,WAAW,KAAKA,KAAI;AAAA,MAClC,CAAC;AAAA,IACH;AAAA,IAEA,sBAAsB;AACpB,cAAQ,IAAI,yBAAyB;AACrC,YAAMA,QAAO;AACb,WAAK,WAAW,qBAAS,OAAO,KAAK,SAAS;AAAA,QAC5C,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,OAAOA,MAAK,aAAa,KAAKA,KAAI;AAAA,MACpC,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,OAAO;AAChB,cAAQ,IAAI,mBAAmB;AAC/B,cAAQ,IAAI,UAAU,MAAM,QAAQ;AACpC,UAAG,KAAK,yBAAyB;AAC/B,UAAE,KAAK,qBAAqB,EAAE,KAAK,CAACC,QAAO,kBAAkB;AACzD,YAAE,aAAa,EAAE,IAAIA,MAAK;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAClB,cAAQ,IAAI,sBAAsB;AAClC,cAAQ,IAAI,UAAU,MAAM,IAAI;AAChC,cAAQ,IAAI,eAAe,MAAM,QAAQ;AAEzC,UAAG,KAAK,2BAA2B;AACjC,UAAE,KAAK,uBAAuB,EAAE,KAAK,CAACA,QAAO,kBAAkB;AAC7D,YAAE,aAAa,EAAE,IAAIA,MAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EAEF;AA3EE,gBAFK,gCAEE,UAAS;AAAA,IACd,MAAM;AAAA,EACR;AAEA,gBANK,gCAME,WAAU,CAAC,oBAAoB,gBAAgB;;;ACVxD;AAAA;AAAA;AAAA;AAEA,MAAAC,wBAA6B;AAE7B,MAAMC,QAAN,MAAW;AAAA,IACT,YAAY,KAAK;AACf,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,MAAM,OAAO,QAAQ,MAAM;AAEzB,UAAI;AAEJ,UAAI;AACF,iBAAS,MAAM,EAAE,KAAK;AAAA,UACpB,KAAK,KAAK;AAAA,UACV;AAAA,UACA,MAAM;AAAA,QACR,CAAC;AAED,eAAO;AAAA,MACT,SAASC,QAAP;AACA,gBAAQ,MAAMA,MAAK;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAEA,MAAO,mCAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,kBAAkB;AAAA,IAEzB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAEd,WAAK,WAAW,EAAE,KAAK,OAAO;AAC9B,cAAQ,IAAI,mBAAmB,KAAK,QAAQ;AAK5C,WAAK,gBAAgB,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB;AAG5D,WAAK,SAAS,GAAG,SAAS,6BAA6B,SAAS,OAAO;AACrE,gBAAQ,IAAI,yBAAyB,MAAM,OAAO,KAAK;AACvD,cAAM,OAAO,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM;AAC3C,aAAK,KAAK,0BAA0B,EAAE,YAAY,WAAW;AAAA,MAC/D,CAAC;AAAA,IACD;AAAA,IAEA,aAAa;AAGX,YAAM,WAAW;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,UAAU,OAAO;AACjC,YAAM,eAAe;AACrB,cAAQ,IAAI,WAAW,KAAK;AAE5B,YAAM,OAAO,MAAM;AACnB,cAAQ,IAAI,UAAU,IAAI;AAG1B,YAAM,WAAW,IAAI,SAAS,IAAI;AAClC,cAAQ,IAAI,cAAc,QAAQ;AAClC,cAAQ,IAAI,gBAAgB,EAAE,IAAI,EAAE,eAAe,CAAC;AAKpD,YAAM,mBAAmB,SAASC,kBAAiB,YAAY,UAAU;AACvE,YAAI,MAAM,WAAW,MAAM,GAAG;AAC9B,YAAI,OAAO,IAAI,CAAC,EAAE,MAAM,SAAS,EAAE,CAAC;AACpC,YAAI,OAAO,KAAK,IAAI,CAAC,CAAC;AACtB,YAAIC,KAAI,KAAK;AACb,YAAI,QAAQ,IAAI,WAAWA,EAAC;AAC5B,eAAOA,MAAK;AACV,gBAAMA,EAAC,IAAI,KAAK,WAAWA,EAAC;AAAA,QAC9B;AACA,eAAO,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,EAAE,MAAM,KAAK,CAAC;AAAA,MACnD;AAGA,cAAQ,IAAI,cAAc,QAAQ;AAClC,YAAM,YAAY,SAAS,KAAK,YAAY,EAAE,KAAK,KAAK;AACxD,cAAQ,IAAI,+BAA+B,SAAS;AACpD,UAAG,aAAa,UAAU,WAAW,OAAO,GAAG;AAG7C,cAAM,YAAY,iBAAiB,WAAW,GAAG,KAAK,mBAAmB;AACzE,cAAM,eAAe,IAAI,mCAAa,WAAW,sCAAsC;AACvF,qBAAa,OAAO,SAASF,QAAO,MAAM;AACxC,cAAIA,QAAO;AAET,oBAAQ,IAAIA,MAAK;AAAA,UACnB,OAAO;AAEL,kBAAM,WAAW,KAAK;AACtB,oBAAQ,IAAI,eAAe,QAAQ;AAAA,UAiBrC;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,cAAM,OAAO,OAAO;AAAA,MACtB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU,OAAO;AACf,YAAM,eAAe;AAGrB,UAAI,SAAS,EAAE,wBAAwB,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,GAAG;AAC1E,UAAG,OAAO,QAAQ;AAGhB,eAAO,MAAM,MAAM;AAAA,MACrB,OAAO;AACL,YAAI,gBAAgB,CAAC;AACrB,cAAM,YAAY,KAAK,gBAAgB;AAEvC,sBAAc,YAAY,IAAI;AAC9B,aAAK,UAAU,iCAAiC,MAAM,eAAe,aAAa,EAAE,KAAK,MAAM;AAC7F,mBAAS,EAAE,wBAAwB,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,GAAG;AACtE,iBAAO,MAAM,MAAM;AAAA,QAErB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU,OAAO;AACf,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,aAAa,QAAQ,KAAK,aAAa;AAC7C,YAAM,YAAY,QAAQ,KAAK,YAAY;AAC3C,YAAM,YAAY,QAAQ,KAAK,YAAY;AAC3C,YAAM,cAAc,QAAQ,QAAQ,WAAW,EAAE,KAAK,IAAI;AAI1D,WAAK,UAAU,iCAAiC,MAAM,eAAe,EAAE,aAAa,YAAY,YAAY,WAAW,YAAY,WAAW,eAAe,YAAY,CAAC,EAAE,KAAK,MAAM;AACrL,cAAM,cAAc,EAAE,+BAA+B;AAErD,YAAI,YAAY,KAAK,iBAAiB,EAAE,WAAW,KAAK,YAAY,KAAK,iBAAiB,EAAE,IAAI,MAAM,IAAI;AACxG,sBAAY,KAAK,iBAAiB,cAAc,EAAE,KAAK,YAAY,IAAI;AACvE,sBAAY,QAAQ,QAAQ;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,OAAO;AAGlB,UAAI,SAAS,EAAE,KAAK,OAAO;AAC3B,UAAG,OAAO,QAAQ;AAEhB,gBAAQ,IAAI,eAAe;AAC3B,eAAO,MAAM,MAAM;AACnB,eAAO,OAAO;AAAA,MAEhB,OAAO;AACL,gBAAQ,IAAI,kBAAkB;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuBA,MAAM,OAAO,OAAO;AAClB,WAAK,aAAa;AAClB,YAAM,UAAU,EAAE,MAAM,aAAa,GACrC,gBAAgB,EAAE,QAAQ,KAAK,QAAQ,CAAC,GACxC,UAAU,QAAQ,QAAQ,QAAQ,GAClCG,QAAO;AAGP,UAAI,gBAAgB,cAAc,QAAQ,GAAG,EAAE,KAAK,YAAY;AAChE,UAAG,cAAc,UAAU,GAAG;AAC5B,wBAAgB,cAAc,OAAO,EAAE,KAAK,KAAK;AAAA,MACnD;AAEA,UAAG,cAAc,UAAU,GAAG;AAE5B,cAAM,eAAe,EAAE,2BAA2B;AAClD,wBAAgB,EAAE,cAAc;AAChC,qBAAa,OAAO,aAAa;AACjC,sBAAc,QAAQ,GAAG,EAAE,OAAO,YAAY;AAC9C,sBAAc,QAAQ,GAAG,EAAE,KAAK,cAAc,EAAE,SAAS,cAAc;AAAA,MACzE,OAAO;AAEL,sBAAc,QAAQ,GAAG,EAAE,KAAK,cAAc,EAAE,SAAS,cAAc;AAAA,MACzE;AAIA,YAAM,cAAc,QAAQ,KAAK,uBAAuB;AACxD,UAAI,WAAW;AAGf,UAAG,YAAY,SAAS,mBAAmB,GAAG;AAC5C,cAAM,oBAAqB,YAAY,KAAK,yBAAyB;AACrE,mBAAW,kBAAkB,KAAK,WAAW;AAE7C,cAAM,MAAM,kBAAkB,KAAK,KAAK;AACxC,YAAI,IAAI,SAAS,GAAG;AAElB,wBAAc,KAAK,OAAO,kBAAkB,KAAK,KAAK,EAAE,KAAK,KAAK,CAAC;AAAA,QACrE,OAAO;AAEL,gBAAM,WAAW,kBAAkB,KAAK,YAAY,EAAE,MAAM;AAC5D,gBAAM,aAAa,cAAc,QAAQ,GAAG;AAC5C,qBAAW,KAAK,GAAG,EAAE,OAAO;AAC5B,qBAAW,KAAK,YAAY,EAAE,OAAO;AACrC,mBAAS,SAAS,UAAU;AAAA,QAC9B;AAAA,MAGF,OAAO;AAEL,cAAM,mBAAmB,YAAY,KAAK,mBAAmB;AAC7D,cAAM,gBAAgB,iBAAiB,KAAK,kBAAkB;AAE9D,YAAG,iBAAiB,KAAK,QAAQ,GAAG;AAClC,gBAAM,YAAY,iBAAiB,KAAK,qBAAqB,EAAE,KAAK,KAAK;AACzE,gBAAM,YAAY,KAAK,iBAAiB,WAAW,YAAY;AAC/D,gBAAM,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,kBAAkB;AAC9D,cAAI;AACJ,cAAG,gBAAgB;AAEjB,4BAAgB,GAAG,KAAK,oCAAoC;AAAA,UAC9D,OAAO;AACL,4BAAgB,KAAK;AAAA,UACvB;AAEA,gBAAM,eAAe,IAAI,mCAAa,WAAW,aAAa;AAC9D,cAAIC,YAAW,MAAM,KAAK,UAAU,YAAY;AAChD,qBAAWA,UAAS;AAEpB,wBAAc,KAAK,OAAO,SAAS;AAAA,QAErC,OAAO;AACL,gBAAM,OAAO,cAAc,IAAI,CAAC,EAAE,MAAM,CAAC;AACzC,cAAG,MAAM;AACP,oBAAQ,IAAI,sBAAsB,IAAI;AACtC,gBAAI,SAAS,IAAI,WAAW;AAC5B,mBAAO,SAAS,SAASC,QAAO;AAG9B,kBAAI,cAAc,SAAS,GAAG;AAE5B,8BAAc,KAAK,OAAOA,OAAM,OAAO,MAAM;AAAA,cAC/C,OAAO;AAEL,sBAAM,aAAa,cAAc,QAAQ,GAAG;AAC5C,sBAAM,WAAW,iBAAiB,KAAK,4BAA4B,EAAE,MAAM;AAC3E,2BAAW,KAAK,YAAY,EAAE,OAAO;AACrC,2BAAW,KAAK,GAAG,EAAE,OAAO;AAC5B,yBAAS,SAAS,UAAU;AAAA,cAC9B;AAAA,YAEF;AAEA,mBAAO,cAAc,IAAI;AAEzB,kBAAM,SAAS,IAAI;AAAA,cACjB;AAAA,cACA,KAAK;AAAA,YACP;AACA,gBAAID,YAAW,MAAM,KAAK,UAAU,MAAM;AAC1C,uBAAWA,UAAS;AAAA,UACtB;AAAA,QACF;AAAA,MAEF;AAGA,oBAAc,IAAI,QAAQ;AAE1B,UAAG,cAAc,KAAK,WAAW,GAAG;AAClC,cAAM,QAAQ,cAAc,QAAQ,MAAM;AAE1C,cAAM,OAAO;AAEb,mBAAW,WAAW;AACpB,mBAAS,OAAO;AAAA,QAClB,GAAG,GAAG;AAAA,MAER;AAEA,cAAQ,MAAM,MAAM;AACpB,WAAK,WAAW,OAAO;AACvB,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,OAAO;AACjB,UAAI,UAAU,EAAE,MAAM,aAAa,GACnC,aAAa,QAAQ,QAAQ,oBAAoB;AACjD,iBAAW,KAAK,WAAW,EAAE,YAAY,UAAU;AACnD,cAAQ,SAAS,UAAU;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,0BAA0B,OAAO;AACrC,YAAMD,QAAO;AACb,YAAM,SAAS,MAAM,eACrB,UAAU,EAAE,MAAM;AAClB,UAAIG,SAAQ;AAEZ,UAAG,OAAO,SAAS,OAAO,MAAM,CAAC,GAAG;AAElC,QAAAA,SAAQ,OAAO;AAAA,MACjB,OAAO;AAEL,QAAAA,SAAQ,MAAM,aAAa;AAAA,MAC7B;AAIA,UAAIA,UAASA,OAAM,CAAC,GAAG;AACrB,YAAI,SAAS,IAAI,WAAW;AAC5B,YAAI,OAAOA,OAAM,CAAC,GAClB,SAAS,QAAQ,QAAQ,QAAQ,GACjC,iBAAiB,OAAO,KAAK,iBAAiB;AAE9C,eAAO,SAAS,eAAgBC,IAAG;AACjC,cAAIC,QAAO,eAAe,SAAS,EAAE,MAAM;AAC3C,cAAI,KAAK,KAAK,WAAW,OAAO,GAAG;AAEjC,gBAAI,EAAEA,KAAI,EAAE,GAAG,OAAO,GAAG;AACvB,gBAAEA,KAAI,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAAA,YACrC,OAAO;AACL,gBAAEC,KAAI,EAAE,OAAO;AACf,kBAAI,eAAe,SAAS,cAAc,OAAO;AACjD,gBAAE,YAAY,EAAE,KAAK;AAAA,gBACnB,KAAKD,GAAE,OAAO;AAAA,gBACd,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP,MAAM;AAAA,cACR,CAAC;AACD,gBAAE,YAAY,EAAE,SAAS,cAAc;AAAA,YACzC;AAAA,UACF,WAAU,KAAK,KAAK,WAAW,OAAO,GAAG;AAEvC,gBAAI,EAAEC,KAAI,EAAE,GAAG,KAAK,GAAG;AACrB,gBAAEA,KAAI,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAAA,YACrC,OAAO;AACL,gBAAEC,KAAI,EAAE,OAAO;AACf,kBAAI,eAAe,SAAS,cAAc,KAAK;AAC/C,gBAAE,YAAY,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAC3C,gBAAE,YAAY,EAAE,SAAS,cAAc;AAAA,YACzC;AAAA,UACF,OAAO;AAEL,gBAAI,YAAY,KAAK,KAAK,MAAM,GAAG,GACnC,WAAW,UAAU,CAAC,GACtB,YAAY,UAAU,UAAU,SAAS,CAAC;AAE1C,cAAEC,KAAI,EAAE,OAAO;AACf,gBAAI,QAAQ,MAAM,IAAIT,MAAKI,MAAK,SAAS,EAAE,OAAO,OAAO,EAAE,WAAsB,SAAmB,CAAC;AACrG,cAAE,KAAK,EAAE,SAAS,cAAc;AAAA,UAClC;AACA,iBAAO,KAAK,gBAAgB,EAAE,SAAS,QAAQ;AAC/C,gBAAM,UAAU,OAAO,KAAK,kBAAkB;AAC9C,cAAG,QAAQ,SAAS,GAAG;AACrB,oBAAQ,IAAI,CAAC,EAAE,cAAc,IAAI,MAAM,iBAAiB,CAAC;AAAA,UAC3D;AAAA,QACF;AAEA,eAAO,cAAcG,OAAM,CAAC,CAAC;AAAA,MAC/B;AAAA,IACF;AAAA;AAAA,IAGA,MAAM,aAAa,OAAO;AACxB,cAAQ,IAAI,eAAe;AAC3B,UAAI,UAAU,EAAE,MAAM,aAAa,GACnC,WAAW,QAAQ,IAAI;AACvB,UAAIE,QAAO,QAAQ,KAAK;AAExB,YAAM,YAAY;AAClB,YAAM,YAAY,QAAQ,KAAK,YAAY;AAC3C,UAAI,QAAQ,MAAM,IAAIT,MAAK,KAAK,SAAS,EAAE,OAAO,OAAO,EAAE,WAAW,UAAU,YAAY,MAAM,YAAY,UAAU,CAAC;AACzH,QAAES,KAAI,EAAE,OAAO;AACf,QAAE,KAAK,EAAE,YAAY,OAAO;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,WAAW,OAAO;AACtB,YAAML,QAAO;AACb,YAAM,SAAS,MAAM,eACrB,UAAU,EAAE,MAAM;AAClB,UAAIG,SAAQ;AAEZ,UAAG,OAAO,SAAS,OAAO,MAAM,CAAC,GAAG;AAElC,QAAAA,SAAQ,OAAO;AAAA,MACjB,OAAO;AAEL,QAAAA,SAAQ,MAAM,aAAa;AAAA,MAC7B;AAIA,UAAIA,UAASA,OAAM,CAAC,GAAG;AACrB,YAAI,SAAS,IAAI,WAAW;AAC5B,YAAI,OAAOA,OAAM,CAAC,GAClB,SAAS,QAAQ,QAAQ,QAAQ,GACjC,iBAAiB,OAAO,KAAK,iBAAiB;AAG9C,YAAG,QAAQ,KAAK,eAAe,GAAG;AAChC,cAAI,gBAAgB,EAAE,QAAQ,KAAK,sBAAsB,CAAC;AAC1D,cAAG,MAAM;AAEP,kBAAM,SAAS,IAAI;AAAA,cACjB;AAAA,cACA;AAAA,YACF;AACA,gBAAIF,YAAW,MAAM,KAAK,UAAU,MAAM;AAC1C,gBAAI,WAAWA,UAAS;AACxB,gBAAG,eAAe;AAEhB,4BAAc,IAAI,QAAQ;AAC1B,4BAAc,IAAI,CAAC,EAAE,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,YACxD;AAAA,UACF;AAAA,QACF;AAEA,eAAO,SAAS,eAAgBG,IAAG;AACjC,cAAIC,QAAO,eAAe,SAAS,EAAE,MAAM;AAC3C,cAAI,KAAK,KAAK,WAAW,OAAO,GAAG;AAEjC,gBAAI,EAAEA,KAAI,EAAE,GAAG,OAAO,GAAG;AACvB,gBAAEA,KAAI,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAAA,YACrC,OAAO;AACL,gBAAEC,KAAI,EAAE,OAAO;AACf,kBAAI,eAAe,SAAS,cAAc,OAAO;AACjD,gBAAE,YAAY,EAAE,KAAK;AAAA,gBACnB,KAAKD,GAAE,OAAO;AAAA,gBACd,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP,MAAM;AAAA,cACR,CAAC;AACD,gBAAE,YAAY,EAAE,SAAS,cAAc;AAAA,YACzC;AAAA,UACF,WAAU,KAAK,KAAK,WAAW,OAAO,GAAG;AAEvC,gBAAI,EAAEC,KAAI,EAAE,GAAG,KAAK,GAAG;AACrB,gBAAEA,KAAI,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAAA,YACrC,OAAO;AACL,gBAAEC,KAAI,EAAE,OAAO;AACf,kBAAI,eAAe,SAAS,cAAc,KAAK;AAC/C,gBAAE,YAAY,EAAE,KAAK,OAAOD,GAAE,OAAO,MAAM;AAC3C,gBAAE,YAAY,EAAE,SAAS,cAAc;AAAA,YACzC;AAAA,UACF,OAAO;AAEL,gBAAI,YAAY,KAAK,KAAK,MAAM,GAAG,GACnC,WAAW,UAAU,CAAC,GACtB,YAAY,UAAU,UAAU,SAAS,CAAC;AAE1C,cAAEC,KAAI,EAAE,OAAO;AACf,gBAAI,QAAQ,MAAM,IAAIT,MAAKI,MAAK,SAAS,EAAE,OAAO,OAAO,EAAE,WAAsB,SAAmB,CAAC;AACrG,cAAE,KAAK,EAAE,SAAS,cAAc;AAAA,UAClC;AACA,iBAAO,KAAK,gBAAgB,EAAE,SAAS,QAAQ;AAAA,QACjD;AAEA,eAAO,cAAcG,OAAM,CAAC,CAAC;AAAA,MAC/B;AAAA,IACF;AAAA,IAGA,WAAW,QAAQ;AACjB,aAAO,KAAK,gBAAgB,EAAE,YAAY,QAAQ;AAClD,aAAO,KAAK,iBAAiB,EAAE,KAAK,EAAE;AACtC,aAAO,KAAK,4CAA4C,EAAE,YAAY,UAAU;AAAA,IAClF;AAAA,IAEA,UAAU,QAAQ;AAChB,aAAO,IAAI;AAAA,QACT,CAACG,UAAS,WAAW;AAEnB,iBAAO,OAAO,CAACT,QAAO,SAAS;AAC7B,gBAAGA,QAAO;AACR,sBAAQ,IAAIA,MAAK;AACjB,qBAAOA,MAAK;AAAA,YACd,OACK;AACH,cAAAS,SAAQ,IAAI;AAAA,YACd;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAMA,iBAAiB,YAAY,UAAU;AACrC,UAAI,MAAM,WAAW,MAAM,GAAG;AAC9B,UAAI,OAAO,IAAI,CAAC,EAAE,MAAM,SAAS,EAAE,CAAC;AACpC,UAAI,OAAO,KAAK,IAAI,CAAC,CAAC;AACtB,UAAIP,KAAI,KAAK;AACb,UAAI,QAAQ,IAAI,WAAWA,EAAC;AAC5B,aAAOA,MAAK;AACV,cAAMA,EAAC,IAAI,KAAK,WAAWA,EAAC;AAAA,MAC9B;AACA,aAAO,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,EAAE,MAAM,KAAK,CAAC;AAAA,IACnD;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY,OAAO;AACjB,YAAM,eAAe;AACrB,QAAE,4BAA4B,EAAE,QAAQ,MAAM;AAC9C,UAAI,QAAQ,KAAK,EAAE,+CAA+C,CAAC,GAAG;AACpE,YAAI,UAAU,EAAE,MAAM,aAAa;AACnC,YAAI,OAAO,QAAQ,QAAQ,UAAU;AACrC,aAAK,UAAU,mCAAmC,MAAM,aAAa,EAAE,KAAK,MAAM;AAChF,eAAK,OAAO;AAAA,QACd,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,KAAK,EAAE,aAAa,CAAC;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,yBAAyB,OAAO;AAC9B,YAAM,eAAe;AACrB,QAAE,4BAA4B,EAAE,QAAQ,MAAM;AAC9C,UAAI,QAAQ,KAAK,EAAE,mDAAmD,CAAC,GAAG;AACxE,YAAI,UAAU,EAAE,MAAM,aAAa;AACnC,aAAK,UAAU,kDAAkD,MAAM,aAAa,EAAE,KAAK,MAAM;AAC/F,YAAE,mBAAmB,EAAE,OAAO;AAAA,QAChC,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,KAAK,EAAE,aAAa,CAAC;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,OAAO;AACnB,YAAM,eAAe;AACrB,QAAE,4BAA4B,EAAE,QAAQ,MAAM;AAC9C,UAAI,QAAQ,KAAK,EAAE,+CAA+C,CAAC,GAAG;AACpE,YAAI,UAAU,EAAE,MAAM,aAAa;AACnC,YAAI,OAAO,QAAQ,QAAQ,UAAU;AACrC,aAAK,UAAU,qCAAqC,MAAM,aAAa,EAAE,KAAK,MAAM;AAClF,eAAK,OAAO;AAAA,QACd,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,KAAK,EAAE,aAAa,CAAC;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,OAAO;AACtB,YAAM,eAAe;AACrB,QAAE,4BAA4B,EAAE,QAAQ,MAAM;AAC9C,UAAI,QAAQ,KAAK,EAAE,+CAA+C,CAAC,GAAG;AACpE,YAAI,UAAU,EAAE,MAAM,aAAa;AACnC,YAAI,OAAO,QAAQ,QAAQ,UAAU;AACrC,aAAK,UAAU,wCAAwC,MAAM,aAAa,EAAE,KAAK,MAAM;AACrF,eAAK,OAAO;AAAA,QACd,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,KAAK,EAAE,aAAa,CAAC;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,OAAO;AAC7B,YAAM,eAAe;AACrB,QAAE,4BAA4B,EAAE,QAAQ,MAAM;AAC9C,UAAI,QAAQ,KAAK,EAAE,+CAA+C,CAAC,GAAG;AACpE,YAAI,UAAU,EAAE,MAAM,aAAa;AACnC,YAAI,OAAO,QAAQ,QAAQ,UAAU;AACrC,aAAK,UAAU,iDAAiD,MAAM,aAAa,EAAE,KAAK,MAAM;AAC9F,eAAK,OAAO;AAAA,QACd,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,KAAK,EAAE,aAAa,CAAC;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,OAAO;AAC7B,YAAM,eAAe;AACrB,QAAE,4BAA4B,EAAE,QAAQ,MAAM;AAC9C,UAAI,QAAQ,KAAK,EAAE,+CAA+C,CAAC,GAAG;AACpE,YAAI,UAAU,EAAE,MAAM,aAAa;AACnC,YAAI,OAAO,QAAQ,QAAQ,OAAO;AAClC,aAAK,UAAU,iDAAiD,MAAM,aAAa,EAAE,KAAK,MAAM;AAC9F,eAAK,OAAO;AAAA,QACd,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,KAAK,EAAE,aAAa,CAAC;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAClB,YAAM,eAAe;AACrB,UAAI,SAAS,MAAM;AAEnB,YAAM,OAAO,OAAO,QAAQ,MAAM;AAGlC,YAAM,cAAc,EAAE,oBAAoB;AAG1C,WAAK,UAAU,oCAAoC,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,KAAK,MAAM;AAC9F,oBAAY,MAAM,MAAM;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAClB,YAAM,eAAe;AACrB,UAAI,SAAS,MAAM;AACnB,YAAM,YAAY,EAAE,oBAAoB;AAGxC,YAAM,OAAO,OAAO,QAAQ,MAAM;AAClC,WAAK,UAAU,oCAAoC,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,KAAK,MAAM;AAC9F,kBAAU,MAAM,MAAM;AAAA,MACxB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAMA,WAAW,OAAO;AAChB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,cAAQ,IAAI,YAAY,OAAO;AAC/B,YAAM,WAAW,QAAQ,KAAK,WAAW;AACzC,YAAM,aAAa,QAAQ,KAAK,aAAa;AAC7C,YAAM,cAAc,QAAQ,KAAK,cAAc;AAC/C,cAAQ,IAAI,eAAe,QAAQ;AACnC,cAAQ,IAAI,iBAAiB,UAAU;AACvC,cAAQ,IAAI,kBAAkB,WAAW;AACzC,YAAM,cAAc,EAAE,oBAAoB;AAE1C,kBAAY,KAAK,uBAAuB,EAAE,IAAI,UAAU;AACxD,kBAAY,KAAK,qBAAqB,EAAE,IAAI,QAAQ;AAEpD,YAAM,aAAa,YAAY,KAAK,wBAAwB;AAC5D,YAAM,oBAAoB,IAAI,YAAY,iBAAiB;AAAA,QACzD,QAAQ,EAAE,OAAO,YAAY;AAAA,QAC7B,SAAS;AAAA,QACT,YAAY;AAAA,MACd,CAAC;AACD,iBAAW,IAAI,WAAW;AAE1B,iBAAW,CAAC,EAAE,cAAc,iBAAiB;AAE7C,kBAAY,MAAM,MAAM;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,WAAK,UAAU,wCAAwC,MAAM,aAAa,EAAE,KAAK,MAAM;AACrF,UAAE,qBAAqB,EAAE,MAAM,MAAM;AAAA,MACvC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,OAAO;AAC1B,YAAM,eAAe;AACrB,YAAM,MAAM,MAAM,cAAc,aAAa,MAAM;AACnD,YAAM,QAAQ,IAAI,UAAU,MAAM,SAAS,eAAe,iBAAiB,CAAC;AAC5E,YAAM,GAAG,EACN,KAAK,CAAAE,cAAYA,UAAS,KAAK,CAAC,EAChC,KAAK,CAAAM,UAAQ;AACZ,iBAAS,eAAe,wBAAwB,EAAE,YAAYA;AAC9D,cAAM,KAAK;AAAA,MACb,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,OAAO;AACtB,YAAM,eAAe;AACrB,YAAM,OAAO,MAAM;AACnB,YAAM,WAAW,IAAI,SAAS,IAAI;AAClC,YAAM,KAAK,QAAQ;AAAA,QACjB,QAAQ;AAAA,QACR,MAAM;AAAA,MACR,CAAC,EACE,KAAK,CAAAN,cAAYA,UAAS,KAAK,CAAC,EAChC,KAAK,CAAAO,UAAQ;AACZ,YAAIA,MAAK,SAAS;AAChB,iBAAO,SAAS,OAAO;AAAA,QACzB,OAAO;AACL,gBAAM,uBAAuB;AAAA,QAC/B;AAAA,MACF,CAAC;AAAA,IACL;AAAA,EAEF;;;ACnxBA;AAAA;AAAA;AAAA;AAEA,MAAO,0CAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,2CAA2C;AAAA,IAC1D;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UAAU,OAAO;AACf,YAAM,YAAY,MAAM,OAAO;AAC/B,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,kBAAkB;AAEzE,uBAAiB,QAAQ,cAAY;AACnC,iBAAS,UAAU;AAAA,MACrB,CAAC;AAED,WAAK,gBAAgB;AACrB,WAAK,QAAQ,2BAA2B,WAAW;AAAA,IACrD;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB,OAAO;AACrB,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,kBAAkB;AACzE,YAAM,oBAAoB,KAAK,QAAQ,iBAAiB,0BAA0B;AAGlF,YAAM,oBAAoB,KAAK,QAAQ,cAAc,kDAAkD;AACvG,UAAI,mBAAmB;AACrB,0BAAkB,UAAU,kBAAkB,WAAW,iBAAiB;AAC1E,0BAAkB,gBAAgB,kBAAkB,SAAS,KAAK,kBAAkB,SAAS,iBAAiB;AAAA,MAChH;AAGA,YAAM,eAAe,kBAAkB,SAAS;AAChD,WAAK,kBAAkB,WAAW,CAAC;AACnC,WAAK,gBAAgB,WAAW,CAAC;AAEjC,UAAI,cAAc;AAChB,aAAK,kBAAkB,UAAU,OAAO,UAAU;AAClD,aAAK,gBAAgB,UAAU,OAAO,UAAU;AAAA,MAClD,OAAO;AACL,aAAK,kBAAkB,UAAU,IAAI,UAAU;AAC/C,aAAK,gBAAgB,UAAU,IAAI,UAAU;AAAA,MAC/C;AAEA,WAAK,QAAQ,GAAG,kBAAkB,yBAAyB;AAAA,IAC7D;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,wBAAwB,OAAO;AAC7B,YAAM,eAAe;AACrB,YAAM,kBAAkB,KAAK,mBAAmB;AAEhD,UAAI,gBAAgB,WAAW,GAAG;AAChC,aAAK,UAAU,oDAAiD;AAChE;AAAA,MACF;AAEA,WAAK,QAAQ,iCAAiC,gBAAgB,yBAAyB;AAEvF,WAAK,aAAa;AAClB,WAAK,aAAa,YAAY,oCAA8B,gBAAgB,qBAAqB;AAGjG,WAAK,QAAQ,QAAQ,oBAAoB,KAAK,UAAU,eAAe;AAEvE,WAAK,UAAU,qDAAqD,EACjE,KAAK,MAAM;AACV,aAAK,QAAQ,+CAA0C;AACvD,aAAK,YAAY;AAAA,MACnB,CAAC,EACA,MAAM,CAAAC,WAAS;AACd,aAAK,QAAQ,kCAA6BA,MAAK;AAC/C,aAAK,YAAY;AACjB,aAAK,UAAU,iDAA8CA,OAAM,OAAO;AAAA,MAC5E,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,sBAAsB,OAAO;AAC3B,YAAM,eAAe;AACrB,YAAM,kBAAkB,KAAK,mBAAmB;AAEhD,UAAI,gBAAgB,WAAW,GAAG;AAChC,aAAK,UAAU,oDAAiD;AAChE;AAAA,MACF;AAEA,WAAK,QAAQ,iCAAiC,gBAAgB,yBAAyB;AAGvF,YAAM,iBAAiB,yDAAsD,gBAAgB;AAC7F,UAAI,CAAC,QAAQ,cAAc,GAAG;AAC5B,aAAK,QAAQ,iCAAiC;AAC9C;AAAA,MACF;AAEA,WAAK,aAAa;AAClB,WAAK,aAAa,UAAU,wCAAkC,gBAAgB,yBAAyB;AACvG,WAAK,iBAAiB;AAGtB,WAAK,QAAQ,QAAQ,oBAAoB,KAAK,UAAU,eAAe;AAEvE,WAAK,UAAU,mDAAmD,EAC/D,KAAK,MAAM;AACV,aAAK,QAAQ,+CAA0C;AACvD,aAAK,YAAY;AACjB,aAAK,aAAa,aAAa,oCAAoC;AAAA,MACrE,CAAC,EACA,MAAM,CAAAA,WAAS;AACd,aAAK,QAAQ,kCAA6BA,MAAK;AAC/C,aAAK,YAAY;AACjB,aAAK,gBAAgB;AACrB,aAAK,UAAU,+CAA4CA,OAAM,OAAO;AAAA,MAC1E,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,oBAAoB,OAAO;AACzB,YAAM,eAAe;AAGrB,UAAI,WAAW,MAAM,OAAO,QAAQ;AAGpC,WAAK,QAAQ,kCAA2B,MAAM,MAAM;AACpD,WAAK,QAAQ,6BAAsB,MAAM,OAAO,OAAO;AACvD,WAAK,QAAQ,iDAA0C,QAAQ;AAG/D,UAAI,CAAC,YAAY,aAAa,aAAa;AAEzC,cAAM,SAAS,MAAM,OAAO,QAAQ,uCAAuC;AAC3E,YAAI,QAAQ;AACV,qBAAW,OAAO,QAAQ;AAC1B,eAAK,QAAQ,mDAA4C,QAAQ;AAAA,QACnE;AAAA,MACF;AAGA,UAAI,CAAC,YAAY,aAAa,aAAa;AACzC,aAAK,QAAQ,wDAAmD;AAChE,aAAK,UAAU,oDAAoD;AACnE;AAAA,MACF;AAEA,WAAK,QAAQ,wCAAwC,UAAU;AAG/D,YAAM,iBAAiB;AACvB,UAAI,CAAC,QAAQ,cAAc,GAAG;AAC5B,aAAK,QAAQ,8CAA8C,UAAU;AACrE;AAAA,MACF;AAEA,WAAK,mBAAmB,MAAM,MAAM;AAGpC,YAAM,OAAO,QAAQ,WAAW;AAEhC,WAAK,UAAU,mDAAmD,MAAM,MAAM,EAC3E,KAAK,MAAM;AACV,aAAK,QAAQ,+CAA0C,UAAU;AACjE,aAAK,kBAAkB,MAAM,MAAM;AAAA,MACrC,CAAC,EACA,MAAM,CAAAA,WAAS;AACd,aAAK,QAAQ,4CAAuC,aAAaA,MAAK;AACtE,aAAK,kBAAkB,MAAM,MAAM;AACnC,aAAK,UAAU,+CAA4CA,OAAM,OAAO;AAAA,MAC1E,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,aAAa,MAAMC,UAAS;AAC1B,YAAM,kBAAkB,KAAK;AAG7B,sBAAgB,YAAY;AAG5B,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,0BAAgB,UAAU,IAAI,YAAY;AAC1C;AAAA,QACF,KAAK;AACH,0BAAgB,UAAU,IAAI,eAAe;AAC7C;AAAA,QACF,KAAK;AACH,0BAAgB,UAAU,IAAI,eAAe;AAC7C;AAAA,QACF,KAAK;AACH,0BAAgB,UAAU,IAAI,cAAc;AAC5C;AAAA,QACF;AACE,0BAAgB,UAAU,IAAI,YAAY;AAAA,MAC9C;AAGA,sBAAgB,YAAY;AAAA,iDACiB,KAAK,cAAc,IAAI;AAAA,QAChEA;AAAA;AAAA,IAEN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,cAAc,MAAM;AAClB,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,UAAUA,UAAS;AACjB,WAAK,aAAa,SAASA,QAAO;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,kBAAkB;AAChB,WAAK,gBAAgB,WAAW;AAChC,WAAK,gBAAgB,UAAU,OAAO,UAAU;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,mBAAmB;AACjB,WAAK,gBAAgB,WAAW;AAChC,WAAK,gBAAgB,UAAU,IAAI,UAAU;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe;AACb,WAAK,kBAAkB,WAAW;AAClC,WAAK,kBAAkB,UAAU,IAAI,UAAU;AAG/C,YAAM,eAAe,KAAK,kBAAkB,WAAW,KAAK,kBAAkB,KAAK;AACnF,YAAM,OAAO,aAAa,cAAc,kBAAkB;AAC1D,UAAI,MAAM;AACR,aAAK,cAAc;AACnB,aAAK,UAAU,IAAI,SAAS;AAAA,MAC9B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,WAAK,kBAAkB,WAAW;AAClC,WAAK,kBAAkB,UAAU,OAAO,UAAU;AAGlD,YAAM,YAAY,KAAK,kBAAkB,cAAc,kBAAkB;AACzE,UAAI,WAAW;AACb,kBAAU,cAAc;AACxB,kBAAU,UAAU,OAAO,SAAS;AAAA,MACtC;AAEA,YAAM,UAAU,KAAK,gBAAgB,cAAc,kBAAkB;AACrE,UAAI,SAAS;AACX,gBAAQ,cAAc;AACtB,gBAAQ,UAAU,OAAO,SAAS;AAAA,MACpC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,mBAAmB,QAAQ;AACzB,aAAO,WAAW;AAClB,aAAO,UAAU,IAAI,UAAU;AAE/B,YAAM,OAAO,OAAO,cAAc,kBAAkB;AACpD,UAAI,MAAM;AACR,aAAK,QAAQ,eAAe,KAAK;AACjC,aAAK,cAAc;AACnB,aAAK,UAAU,IAAI,SAAS;AAAA,MAC9B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,kBAAkB,QAAQ;AACxB,aAAO,WAAW;AAClB,aAAO,UAAU,OAAO,UAAU;AAElC,YAAM,OAAO,OAAO,cAAc,kBAAkB;AACpD,UAAI,QAAQ,KAAK,QAAQ,cAAc;AACrC,aAAK,cAAc,KAAK,QAAQ;AAChC,aAAK,UAAU,OAAO,SAAS;AAC/B,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,qBAAqB;AACnB,YAAM,oBAAoB,KAAK,QAAQ,iBAAiB,0BAA0B;AAClF,aAAO,MAAM,KAAK,iBAAiB,EAAE,IAAI,cAAY,SAAS,KAAK;AAAA,IACrE;AAAA,EACF;AAxWE,gBADK,yCACE,WAAU,CAAC,eAAe,aAAa,mBAAmB,kBAAkB;;;ACHrF;AAAA;AAAA;AAAA;AAGA,MAAO,2BAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AAER,YAAM,QAAQ;AACd,UAAI,eAAe,EAAE,eAAe;AACpC,UAAG,aAAa,QAAO;AACrB,YAAI,UAAU,aAAa,KAAK,SAAS;AAEzC,UAAE,IAAI,SAAS,EAAE,MAAM,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,IAEA,oBAAoB,OAAO;AACzB,YAAM,gBAAgB;AAGtB,QAAE,gBAAgB,EAAE,IAAI;AAAA,QACtB,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,MACtB,CAAC;AACD,QAAE,gBAAgB,EAAE,YAAY,UAAU;AAC1C,QAAE,eAAe,EAAE,SAAS,QAAQ;AAEpC,UAAI,UAAU,EAAE,MAAM,aAAa,GACnC,UAAU,QAAQ,KAAK,UAAU,GACjC,iBAAiB,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAEzC,UAAI,QAAQ,eAAe,KAAK,iBAAiB;AACjD,YAAM,KAAK,iBAAiB,OAAO;AAEnC,qBAAe,MAAM,MAAM;AAAA,IAC7B;AAAA,IAEA,YAAY,OAAO;AACjB,UAAI,aAAa,EAAE,MAAM,aAAa,EAAE,KAAK,aAAa;AAC1D,WAAK,UAAU,8BAA8B,kBAAkB,UAAU;AAAA,IAC3E;AAAA,IAEA,mBAAmB,OAAO;AACxB,QAAE,iBAAiB,EAAE,MAAM,MAAM;AACjC,aAAO,qBAAqB;AAAA,IAC9B;AAAA,IAEA,OAAO,OAAO;AACZ,YAAM,eAAe;AACrB,QAAE,YAAY,EAAE,MAAM,MAAM;AAAA,IAC9B;AAAA,IAEA,cAAc,OAAO;AACnB,YAAM,eAAe;AACrB,QAAE,uBAAuB,EAAE,MAAM,MAAM;AAAA,IACzC;AAAA,IAEA,WAAW,OAAO;AAChB,YAAM,eAAe;AACrB,QAAE,gBAAgB,EAAE,MAAM,MAAM;AAAA,IAClC;AAAA,IAEA,eAAe,OAAO;AACpB,UAAI,WAAW,EAAE,MAAM,aAAa,EAAE,KAAK,WAAW;AACtD,WAAK,UAAU,+BAA+B,QAAQ,EAAE,KAAK,MAAM;AACjE,UAAE,8CAA8C,EAAE,IAAI,aAAa,YAAY,CAAC;AAChF,UAAE,oBAAoB,EAAE,MAAM,MAAM;AAAA,MACtC,CAAC;AAAA,IACH;AAAA,IAEA,iBAAiB,OAAO;AACtB,WAAK,UAAU,+BAA+B,EAAE,KAAK,CAACC,WAAS;AAC7D,UAAE,gDAAgD,EAAE,IAAI,aAAa,YAAY,CAAC;AAClF,UAAE,sBAAsB,EAAE,MAAM,MAAM;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB,OAAO;AACzB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,UAAU,QAAQ,KAAK,UAAU;AACrC,WAAK,UAAU,0CAA0C,OAAO;AAAA,IAClE;AAAA,IAEA,sBAAsB,OAAO;AAC3B,QAAE,wCAAwC,EAAE,IAAI,aAAa,YAAY,CAAC;AAC1E,UAAI,iBAAiB,EAAE,cAAc;AACrC,qBAAe,MAAM,MAAM;AAAA,IAC7B;AAAA,IAEA,MAAM,OAAO;AACX,UAAI,SAAS,EAAE,MAAM,aAAa,EAAE,QAAQ,QAAQ;AACpD,QAAE,MAAM,EAAE,MAAM,MAAM;AAAA,IACxB;AAAA,IAEA,6BAA6B,OAAO;AAClC,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAEtB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,UAAU,QAAQ,KAAK,UAAU;AACrC,UAAI,qBAAqB,0BAA0B;AAEnD,UAAI,YAAY,EAAE,kBAAkB;AAEpC,gBAAU,YAAY,QAAQ;AAAA,IAChC;AAAA,IAEA,YAAY,OAAO;AACjB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,cAAQ,QAAQ,QAAQ,EAAE,MAAM,EAAE,MAAM,MAAM;AAC9C,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;;;AClHA;AAAA;AAAA;AAAA;AAEA,6BAAyB;AAEzB,MAAO,mCAAP,cAA6B,WAAW;AAAA,IACtC,UAAU;AAER,WAAK,QAAQ,iBAAiB,kBAAkB,KAAK,0BAA0B,KAAK,IAAI,CAAC;AAAA,IAC3F;AAAA,IAEA,aAAa;AACX,WAAK,QAAQ,oBAAoB,kBAAkB,KAAK,0BAA0B,KAAK,IAAI,CAAC;AAAA,IAC9F;AAAA,IAEA,4BAA4B;AAE1B,YAAM,gBAAgB,KAAK,QAAQ,cAAc,0BAA0B;AAC3E,UAAI,CAAC;AAAe;AAEpB,YAAM,cAAc,cAAc,cAAc,2BAA2B;AAC3E,YAAM,eAAe,cAAc,cAAc,oBAAoB;AAErE,UAAI,CAAC,eAAe,CAAC;AAAc;AAGnC,YAAM,mBAAmB,aAAa,QAAQ,iBAAiB;AAC/D,YAAM,gBAAgB,MAAM,gBAAgB,EAAE,IAAI,YAAU;AAAA,QAC1D,OAAO;AAAA,QACP;AAAA,MACF,EAAE;AAGF,+BAAAC,SAAa;AAAA,QACX,OAAO;AAAA,QACP,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,OAAO,SAAU,MAAM,QAAQ;AAC7B,iBAAO,KAAK,YAAY;AACxB,gBAAM,cAAc,cAAc;AAAA,YAAO,CAAAC,OACvCA,GAAE,MAAM,YAAY,EAAE,WAAW,IAAI;AAAA,UACvC;AACA,iBAAO,WAAW;AAAA,QACpB;AAAA,QACA,UAAU,SAAU,MAAM;AACxB,uBAAa,QAAQ,KAAK;AAAA,QAC5B;AAAA,QACA,WAAW,SAAS,OAAO,WAAW,WAAW,WAAW;AAE1D,cAAI,WAAW;AACb,sBAAU,MAAM,SAAS;AACzB,sBAAU,MAAM,WAAW;AAAA,UAC7B;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;;;ACvDA;AAAA;AAAA;AAAA;AAKA,MAAO,oCAAP,cAA6B,sBAAsB;AAAA,IASjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAElB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,aAAa,EAAE,KAAK,eAAe;AACvC,UAAI,UAAU,EAAE,KAAK,YAAY;AAGjC,UAAI,aAAa;AACjB,iBAAW,KAAK,UAAU,EAAE,KAAK,WAAW;AAE1C,YAAI,EAAE,IAAK,EAAE,KAAK,8BAA8B,EAAE,UAAU,GAAG;AAC7D,uBAAa;AAAA,QACf;AAAA,MACF,CAAC;AACD,UAAI,YAAY;AAEd,gBAAQ,YAAY,UAAU;AAAA,MAChC,OAAO;AACL,gBAAQ,SAAS,UAAU;AAAA,MAC7B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,OAAO;AACnB,YAAM,SAAS,MAAM;AACrB,WAAK,uBAAuB,MAAM;AAElC,WAAK,aAAa;AAClB,WAAK,UAAU,iCAAiC,MAAM,EAAE,KAAK,MAAM;AACjE,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,WAAK,UAAU,mCAAmC,MAAM,aAAa;AAAA,IACvE;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,OAAO;AAChB,YAAM,SAAS,MAAM;AACrB,WAAK,uBAAuB,MAAM;AAElC,WAAK,aAAa;AAClB,WAAK,UAAU,8BAA8B,MAAM,EAAE,KAAK,MAAM;AAC9D,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAAO;AACZ,YAAM,SAAS,MAAM;AACrB,UAAI,OAAO,UAAU,SAAS,UAAU;AAAG;AAE3C,WAAK,uBAAuB,MAAM;AAElC,WAAK,aAAa;AAClB,WAAK,UAAU,yBAAyB,MAAM,EAAE,KAAK,MAAM;AACzD,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,iBAAiB,OAAO;AAEtB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,aAAa,QAAQ,GAAG,UAAU;AAExC,YAAM,aAAa,QAAQ,QAAQ,MAAM,EAAE,KAAK,6DAA6D,EAAE,MAAM;AAErH,UAAI,YAAY;AACd,mBAAW,KAAK,YAAY,IAAI;AAAA,MAClC,OAAO;AACL,mBAAW,KAAK,YAAY,KAAK;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,uBAAuB,QAAQ;AAC7B,YAAM,cAAc,SAAS,eAAe,mBAAmB;AAC/D,UAAI,CAAC;AAAa;AAElB,aAAO,QAAQ,aAAa,YAAY,QAAQ,cAAc;AAC9D,aAAO,QAAQ,eAAe,YAAY,QAAQ,gBAAgB;AAClE,aAAO,QAAQ,gBAAgB,YAAY,QAAQ,iBAAiB;AACpE,aAAO,QAAQ,gBAAgB,YAAY,QAAQ,iBAAiB;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,YAAM,qBAAqB,KAAK,QAAQ,iBAAiB,4BAA4B;AACrF,yBAAmB,QAAQ,sBAAoB;AAC7C,YAAI,CAAC,iBAAiB,UAAU;AAC9B,2BAAiB,WAAW,IAAI,UAAU,QAAQ,kBAAkB,EAAE,UAAU,SAAS,CAAC;AAAA,QAC5F;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAEF;AAjIE,gBAFK,mCAEE,UAAS;AAAA,IACd,YAAY;AAAA,IACZ,YAAY;AAAA,EACd;AAEA,gBAPK,mCAOE,WAAU,CAAE,aAAa,QAAS;;;ACZ3C;AAAA;AAAA;AAAA;AAEA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IAOtC,SAAS,OAAO;AACd,UAAI,WAAW,EAAE,MAAM,aAAa;AAEpC,QAAE,uBAAuB,EAAE,KAAK,WAAW,SAAS,KAAK,SAAS,CAAC;AACnE,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,YAAY,OAAO;AAEjB,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,oBAAoB;AAClB,UAAI,SAAS,IAAI,MAAM;AACvB,eAAQ,QAAQ,EAAE,uBAAuB,GAAG;AAC1C,YAAG,EAAE,IAAI,EAAE,KAAK,SAAS,GAAG;AAC1B,iBAAO,KAAK,SAAS,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;AAAA,QAC1C;AAAA,MACF;AAGA,QAAE,oCAAoC,EAAE,IAAI,OAAO,KAAK,GAAG,CAAC,EAAE,QAAQ,QAAQ;AAG9E,YAAM,eAAe,OAAO,SAAS;AACrC,QAAE,oCAAoC,EAAE,KAAK,WAAW;AACtD,YAAG,cAAc;AACf,YAAE,IAAI,EAAE,YAAY,WAAW;AAAA,QACjC,OAAO;AACL,YAAE,IAAI,EAAE,SAAS,WAAW;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAEF;AApCE;AAAA;AAAA;AAAA,gBALK,gCAKE,WAAU,CAAC,UAAU,QAAQ;;;ACPtC;AAAA;AAAA;AAAA;AACA,MAAI,UAAU;AAEd,MAAO,gCAAP,cAA6B,sBAAsB;AAAA,IAIjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IAEnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,QAAE,KAAK,YAAY,EAAE,GAAG,oBAAoB,SAAU,OAAO;AAC3D,YAAI,SAAS,EAAE,MAAM,MAAM;AAE3B,gBAAQ,IAAI,MAAM;AAElB,YAAI,OAAO,KAAK,IAAI,KAAK,WAAW;AAClC,YAAE,WAAW,EAAE,SAAS,WAAW;AACnC,YAAE,UAAU,EAAE,YAAY,WAAW;AAAA,QACvC,WAAU,OAAO,KAAK,IAAI,KAAK,YAAY;AACzC,YAAE,WAAW,EAAE,YAAY,WAAW;AACtC,YAAE,UAAU,EAAE,SAAS,WAAW;AAAA,QACpC;AAAA,MACF,CAAC;AAMD,UAAG,QAAQ,IAAI,eAAe,KAAK,QAAW;AAC5C,sBAAc,WAAW;AAAA,MAC3B;AAGA,UAAI,QAAQ,cAAc,SAAS;AAEnC,UAAG,MAAM,MAAM;AACb,sBAAc,KAAK;AAAA;AAEnB,sBAAc,KAAK;AAErB,QAAE,QAAQ,EAAE,GAAG,SAAS,uBAAuB,CAACC,OAAM,cAAc,OAAO,CAAC;AAAA,IAC9E;AAAA,EACF;AA1CE,gBAFK,+BAEE,WAAU,CAAC,QAAQ;AA4C5B,MAAI,gBAAgB;AAAA,IAClB,YAAY,WAAW;AACrB,aAAO,QAAQ,IAAI,iBAAiB,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC,GAAG;AAAA,QAClE,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,MAAM,WAAW;AAAA,IAAC;AAAA,IAClB,eAAe,WAAW;AACxB,aAAO,EAAE,cAAc;AAAA,IACzB;AAAA,IACA,iBAAiB,WAAW;AAC1B,aAAO,EAAE,qBAAqB;AAAA,IAChC;AAAA,IACA,UAAU,WAAW;AACnB,aAAO,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC;AAAA,IAChD;AAAA,IACA,UAAU,SAAS,QAAQ;AACzB,aAAO,QAAQ,IAAI,iBAAiB,KAAK,UAAU,MAAM,GAAG;AAAA,QAC1D,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,MAAM,SAAS,YAAY;AACzB,UAAI,cAAc,MAAM;AACtB,qBAAa;AAAA,MACf;AACA,oBAAc,iBAAiB,UAAU;AACzC,oBAAc,cAAc,EAAE,YAAY,QAAQ;AAClD,oBAAc,gBAAgB,EAAE,YAAY,QAAQ;AACpD,aAAO,cAAc,SAAS;AAAA,QAC5B,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IACA,MAAM,SAAS,YAAY;AACzB,UAAI,cAAc,MAAM;AACtB,qBAAa;AAAA,MACf;AACA,oBAAc,iBAAiB,UAAU;AACzC,oBAAc,cAAc,EAAE,SAAS,QAAQ;AAC/C,oBAAc,gBAAgB,EAAE,SAAS,QAAQ;AACjD,aAAO,cAAc,SAAS;AAAA,QAC5B,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,SAAS,YAAY;AAC3B,UAAI,cAAc,MAAM;AACtB,qBAAa;AAAA,MACf;AACA,UAAI,cAAc,cAAc,EAAE,SAAS,QAAQ,GAAG;AACpD,eAAO,cAAc,KAAK,UAAU;AAAA,MACtC,OAAO;AACL,eAAO,cAAc,KAAK,UAAU;AAAA,MACtC;AAAA,IACF;AAAA,IACA,kBAAkB,SAAS,YAAY;AACrC,UAAI,YAAY;AACd,eAAO,cAAc,cAAc,EAAE,SAAS,YAAY;AAAA,MAC5D,OAAO;AACL,eAAO,cAAc,cAAc,EAAE,YAAY,YAAY;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;;;AC/GA;AAAA;AAAA;AAAA;AAEA,MAAO,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,oCAAoC,EAAE,KAAK,OAAO,CAAC;AAExD,WAAK,kBAAkB,SAAS,MAAM;AACpC,YAAI,SAAS;AACb,gBAAO,MAAM;AAAA,UACX,KAAK;AACH,qBAAS;AACT;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF;AACE;AAAA,QACJ;AACA,eAAO;AAAA,MACT;AAAA,IAEF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,oCAAoC,UAAU;AAAA,IAI9C;AAAA,IAEA,yBAAyB,SAAS;AAChC,UAAIC,YAAW,CAAC;AAEhB,UAAI,SAAS;AACX,QAAAA,YAAW,EAAE,UAAU,UAAU;AAAA,MACnC;AACA,UAAI,UAAUA,UAAS,MAAM;AAC7B,UAAIC,WAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM;AAEhD,aAAOA,YAAW,QAAQA,SAAQ,SAAS,IAAI,SAASA,SAAQ,CAAC,CAAC,IAAI;AAAA,IACxE;AAAA,IAEA,yBAAyB,eAAe,aAAa;AACnD,UAAID,YAAW,CAAC,GACdE,YAAW;AAEb,UAAI,aAAa;AACf,QAAAF,YAAW;AAAA,UACT,mCAAmC,+GAA+G;AAAA,QACpJ;AAAA,MACF;AAEA,eAAS,WAAWA,WAAU;AAC5B,YAAIC,WAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM;AAChD,YAAI,cAAc,SAASA,SAAQ,CAAC,CAAC;AAErC,YAAI,cAAcC,WAAU;AAC1B,UAAAA,YAAW;AAAA,QACb;AAAA,MACF;AAEA,aAAOA,YAAW;AAAA,IACpB;AAAA,EACF;AAxEE,gBADK,gCACE,WAAU,CAAC,YAAY,QAAQ,WAAW;;;ACHnD;AAAA;AAAA;AAAA;AAEA,MAAO,0BAAP,cAA6B,sBAAsB;AAAA,IAUjD,aAAa;AACX,YAAM,WAAW;AAEjB,WAAK,YAAY;AACjB,WAAK,eAAe;AAGpB,aAAO,WAAW;AAAA,QAChB,QAAQ,KAAK,EAAE,wBAAwB;AAAA,QACvC,YAAY,KAAK,EAAE,wBAAwB;AAAA,QAC3C,YAAY,KAAK,EAAE,wBAAwB;AAAA,QAC3C,SAAS,SAAS,MAAM;AACtB,iBAAO,OAAO,IAAI,MAAM,OAAO,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,MAAM;AAAA,QAC1E;AAAA,QACA,aAAa,SAAS,MAAM;AAC1B,iBAAO,OAAO,IAAI,MAAM,OAAO,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,UAAU;AAAA,QAC9E;AAAA,QACA,aAAa,SAAS,MAAM;AAC1B,iBAAO,OAAO,IAAI,MAAM,OAAO,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,UAAU;AAAA,QAC9E;AAAA,QACA,OAAO,SAAS,MAAM;AACpB,iBAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,EAAE,IAAI,EAAE,OAAO,OAAO,OAAO;AAAA,QACpE;AAAA,MACF;AACA,cAAQ,IAAI,wBAAwB,OAAO,QAAQ;AACnD,WAAK,cAAc,CAAC;AAAA,IAEtB;AAAA;AAAA,IAGA,UAAU;AACR,YAAM,QAAQ;AAEd,YAAM,iBAAiB,SAAS,MAAM;AACpC,mBAAW,WAAU;AACnB,YAAE,sBAAsB,EAAE,QAAQ,MAAM;AAAA,QAC1C,GAAG,IAAI;AAAA,MACT;AAEA,qBAAe,IAAI;AAGnB,WAAK,cAAc;AAAA,IACrB;AAAA,IAEA,8BAA8B,IAAI;AAChC,QAAE,EAAE,EAAE,KAAK,SAAS,QAAQ,EAAE,EAAE,EAAE,KAAK,YAAY,CAAC,CAAC;AAAA,IACvD;AAAA,IAEA,0BAA0B,IAAI;AAC5B,QAAE,EAAE,EAAE,KAAK,SAAS,YAAY,EAAE,EAAE,EAAE,KAAK,YAAY,CAAC,CAAC;AAAA,IAC3D;AAAA,IAEA,0BAA0B,IAAI;AAC5B,QAAE,EAAE,EAAE,KAAK,SAAS,YAAY,EAAE,EAAE,EAAE,KAAK,YAAY,CAAC,CAAC;AAAA,IAC3D;AAAA,IAEA,iBAAiB;AACf,WAAK,gBAAgB,KAAK;AAC1B,WAAK,SAAS,KAAK;AACnB,UAAI,SAAS,YAAY,KAAK,WAAW;AACzC,WAAK,MAAM,MAAM;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB;AACd,YAAM,qBAAqB,CAAC,EAAE,MAAM,KAAK,SAAS,iBAAiB,4BAA4B,CAAC;AAChG,WAAK,cAAc,mBAAmB,IAAI,SAAU,kBAAkB;AACpE,eAAO,IAAI,UAAU,QAAQ,kBAAkB,EAAE,UAAU,SAAS,CAAC;AAAA,MACvE,CAAC;AACD,cAAQ,IAAI,SAAS,KAAK,YAAY,iBAAiB;AAAA,IACzD;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe;AACb,cAAQ,IAAI,QAAQ,KAAK,YAAY,iBAAiB;AACtD,WAAK,YAAY,IAAI,SAAU,SAAS;AACtC,gBAAQ,KAAK;AAAA,MACf,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AAChB,WAAK,YAAY,IAAI,SAAU,SAAS;AAEtC,YAAI;AACF,kBAAQ,QAAQ;AAAA,QAClB,SAASC,QAAP;AAAA,QAEF;AAAA,MACF,CAAC;AACD,cAAQ,IAAI,aAAa,KAAK,YAAY,iBAAiB;AAC3D,WAAK,cAAc,CAAC;AAAA,IACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,iBAAiB;AACf,cAAQ,IAAI,iBAAiB;AAE7B,WAAK,cAAc;AAAA,IACrB;AAAA,EAEF;AAzHE,gBAFK,yBAEE,WAAU,CAAC,kBAAkB,cAAc,YAAY;AAE9D,gBAJK,yBAIE,UAAS;AAAA,IACd,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,aAAa;AAAA,EACf;;;ACVF;AAAA;AAAA;AAAA;AAIA,MAAO,gCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,cAAQ,IAAI,iCAAiC;AAC7C,WAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AAAA,IAC1C;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,OAAO;AACnB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,UAAU,QAAQ,IAAI;AAC1B,YAAMC,QAAO;AACb,WAAK,UAAU,uBAAuB,OAAO,EAAE,KAAK,CAACC,cAAa;AAEhE,eAAO,SAAS,OAAO;AAAA,MACzB,CAAC;AAAA,IACH;AAAA,EAEF;;;ACzBA;AAAA;AAAA;AAAA;AAGA,MAAO,sCAAP,cAA6B,sBAAsB;AAAA,IAIjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,WAAK,cAAc;AACnB,QAAE,KAAK,OAAO,EAAE,GAAG,iBAAiB,CAAC,UAAU;AAC7C,aAAK,YAAY,KAAK,WAAW;AAAA,MACnC,CAAC;AACD,QAAE,KAAK,OAAO,EAAE,GAAG,iBAAiB,CAAC,UAAU;AAC7C,aAAK,SAAS,KAAK,WAAW;AAAA,MAChC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,YAAY,MAAM;AAChB,UAAG,KAAK,eAAe;AACrB,UAAE,KAAK,WAAW,EAAE,SAAS,QAAQ;AACrC,UAAE,KAAK,YAAY,IAAI,CAAC,EAAE,YAAY,QAAQ;AAC9C,aAAK,YAAY,IAAI,EAAE,cAAc,IAAI,YAAY,cAAc,CAAC;AAAA,MACtE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,SAAS,MAAM;AACb,UAAG,KAAK,eAAe;AACrB,aAAK,YAAY,IAAI,EAAE,cAAc,IAAI,YAAY,WAAW,CAAC;AAAA,MACnE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW;AACT,UAAG,KAAK,eAAe;AACrB,YAAG,KAAK,YAAY,SAAS,KAAK,cAAc,GAAG;AACjD,eAAK;AACL,gBAAM,cAAc,KAAK,YAAY,KAAK,cAAc,CAAC;AACzD,gBAAM,UAAU,KAAK,YAAY,KAAK,WAAW;AACjD,kBAAQ,cAAc,IAAI,YAAY,cAAc,CAAC;AACrD,YAAE,WAAW,EAAE,SAAS,qBAAqB;AAC7C,YAAE,OAAO,EAAE,YAAY,QAAQ,EAAE,SAAS,qBAAqB;AAAA,QACjE,OAAO;AACL,YAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAtDE,gBAFK,qCAEE,WAAU,CAAC,MAAM;;;ACL1B;AAAA;AAAA;AAAA;AAEA,MAAO,qCAAP,cAA6B,WAAW;AAAA,IAGtC,iBAAiB,OAAO;AACtB,UAAI,SAAS,MAAM,eACnB,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM;AAEtC,cAAO,MAAM;AAAA,QACX,KAAK;AACH,YAAE,MAAM,EAAE,SAAS,YAAY;AAC/B,YAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,MAAM;AACvC;AAAA,QACF,KAAK;AACH,YAAE,MAAM,EAAE,YAAY,YAAY;AAClC,YAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,UAAU;AAC3C;AAAA,MACJ;AAAA,IACF;AAAA,EAEF;AAlBE,gBADK,oCACE,WAAU,CAAC,OAAO;;;ACH3B;AAAA;AAAA;AAAA;AAGA,MAAO,uDAAP,cAA6B,sBAAsB;AAAA,IAKjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,qBAAqB;AACnB,WAAK,WAAW,qBAAS,OAAO,KAAK,SAAS;AAAA,QAC5C,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,OAAO,KAAK,cAAc,KAAK,IAAI;AAAA,MACrC,CAAC;AAAA,IACH;AAAA,IAEA,cAAc,OAAO;AACnB,YAAM,cAAc,MAAM,KAAK,KAAK,QAAQ,QAAQ,EAAE,IAAI,WAAS;AAEjE,eAAO,MAAM,QAAQ;AAAA,MACvB,CAAC,EAAE,OAAO,CAAAC,QAAMA,QAAO,UAAaA,QAAO,IAAI;AAE/C,cAAQ,IAAI,6BAA6B,WAAW;AACpD,cAAQ,IAAI,eAAe,KAAK,cAAc;AAC9C,cAAQ,IAAI,yBAAyB,KAAK,QAAQ,QAAQ,4CAA4C;AAEtG,UAAI,YAAY,WAAW,GAAG;AAC5B,gBAAQ,MAAM,mCAAmC;AACjD;AAAA,MACF;AAEA,YAAM,YAAY,SAAS,cAAc,yBAAyB,GAAG,aAAa,SAAS;AAC3F,UAAI,CAAC,WAAW;AACd,gBAAQ,MAAM,sBAAsB;AACpC;AAAA,MACF;AAGA,YAAM,aAAa,KAAK,kBAAkB,KAAK,QAAQ,QAAQ;AAC/D,YAAM,YAAY,IAAI,IAAI,YAAY,OAAO,SAAS,MAAM,EAAE;AAC9D,cAAQ,IAAI,oCAAoC,UAAU;AAC1D,cAAQ,IAAI,6BAA6B,SAAS;AAElD,UAAI,CAAC,YAAY;AACf,gBAAQ,MAAM,wBAAwB;AACtC;AAAA,MACF;AAEA,cAAQ,IAAI,4BAA4B,SAAS;AACjD,cAAQ,IAAI,uBAAuB;AAAA,QACjC,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB,cAAc;AAAA,QAChB,CAAC;AAAA,MACH,CAAC;AAED,YAAM,WAAW;AAAA,QACf,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB,cAAc;AAAA,QAChB,CAAC;AAAA,MACH,CAAC,EACA,KAAK,CAAAC,cAAY;AAChB,YAAI,CAACA,UAAS,IAAI;AAChB,kBAAQ,MAAM,yCAAyCA,UAAS,MAAM;AACtE,kBAAQ,MAAM,oBAAoB,SAAS;AAC3C,kBAAQ,MAAM,qBAAqB,OAAO,SAAS,IAAI;AACvD,iBAAOA,UAAS,KAAK,EAAE,KAAK,UAAQ;AAClC,oBAAQ,MAAM,aAAa,IAAI;AAAA,UACjC,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ,IAAI,iCAAiC;AAAA,QAC/C;AAAA,MACF,CAAC,EACA,MAAM,CAAAC,WAAS;AACd,gBAAQ,MAAM,8BAA8BA,MAAK;AAAA,MACnD,CAAC;AAAA,IACH;AAAA,EACF;AAzFE,gBADK,sDACE,UAAS;AAAA,IACd,WAAW;AAAA,EACb;;;ACNF;AAAA;AAAA;AAAA;AAEA,MAAO,uCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,cAAQ,IAAI,0CAA0C;AAAA,IACxD;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,cAAQ,IAAI,wCAAwC;AACpD,cAAQ,IAAI,YAAY,KAAK,OAAO;AACpC,cAAQ,IAAI,sCAAsC,KAAK,wBAAwB;AAC/E,cAAQ,IAAI,uCAAuC,KAAK,yBAAyB;AACjF,WAAK,iBAAiB;AAAA,IACxB;AAAA,IAEA,qBAAqB;AACnB,cAAQ,IAAI,qBAAqB;AACjC,WAAK,iBAAiB;AAAA,IACxB;AAAA,IAEA,mBAAmB;AACjB,YAAM,oBAAoB,KAAK,QAAQ,cAAc,+BAA+B;AACpF,cAAQ,IAAI,+BAA+B,iBAAiB;AAC5D,UAAI,CAAC;AAAmB;AAExB,YAAM,sBAAsB,kBAAkB;AAC9C,cAAQ,IAAI,yBAAyB,mBAAmB;AAExD,UAAI,wBAAwB,YAAY;AACtC,aAAK,iBAAiB;AAAA,MACxB,WAAW,wBAAwB,aAAa;AAC9C,aAAK,kBAAkB;AAAA,MACzB,OAAO;AAEL,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,mBAAmB;AACjB,cAAQ,IAAI,uBAAuB;AACnC,WAAK,sBAAsB,MAAM,UAAU;AAC3C,WAAK,uBAAuB,MAAM,UAAU;AAAA,IAC9C;AAAA,IAEA,oBAAoB;AAClB,cAAQ,IAAI,wBAAwB;AACpC,WAAK,sBAAsB,MAAM,UAAU;AAC3C,WAAK,uBAAuB,MAAM,UAAU;AAAA,IAC9C;AAAA,IAEA,mBAAmB;AACjB,cAAQ,IAAI,uBAAuB;AACnC,WAAK,sBAAsB,MAAM,UAAU;AAC3C,WAAK,uBAAuB,MAAM,UAAU;AAAA,IAC9C;AAAA,EACF;AAzDE,gBADK,sCACE,WAAU,CAAC,mBAAmB,kBAAkB;;;ACHzD;AAAA;AAAA;AAAA;AAEA,MAAO,sCAAP,cAA6B,WAAW;AAAA,IACtC,KAAK,OAAO;AAIV,UAAG,EAAE,MAAM,MAAM,EAAE,QAAQ,GAAG,EAAE,SAAS,KAAK,MAAM,UAAU,MAAM,eAAe;AAAA,MAEnF,OAAO;AACL,cAAM,eAAe;AACrB,cAAM,gBAAgB;AACtB,YAAI,UAAU,EAAE,MAAM,aAAa;AACnC,gBAAQ,YAAY,QAAQ;AAC5B,UAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,YAAY,MAAM;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;;;ACjBA;AAAA;AAAA;AAAA;AAEA,MAAO,gCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,aAAa;AAClB,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,YAAY;AACV,YAAMC,QAAO;AACb,YAAM,OAAO,EAAE,kBAAkB,EAAE,IAAI;AACvC,cAAQ,IAAI,YAAY,MAAM;AAE9B,WAAK,mBAAmB,IAAI;AAG5B,QAAE,QAAQ,EAAE,GAAG,gBAAgB,SAAU,OAAO,OAAO;AAErD,QAAAA,MAAK,mBAAmB,KAAK;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IAEA,mBAAmB,MAAM;AACvB,YAAM,kBAAkB,EAAE,mBAAmB;AAC7C,UAAI,QAAQ,QAAQ;AAElB,wBAAgB,KAAK;AAAA,MACvB,OAAO;AAEL,wBAAgB,KAAK;AAAA,MACvB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAIA,oBAAoB,OAAO;AACzB,YAAMA,QAAO;AACb,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,SAAS,QAAQ,KAAK,SAAS;AAErC,WAAK,UAAU,0CAA0C,QAAQ,IAAI,GAAG,MAAM,EAAE,KAAK,aAAW;AAC9F,QAAAA,MAAK,iBAAiB;AAAA,MACxB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAClB,UAAI,QAAQ,EAAE,MAAM,aAAa,EAAE,KAAK,IAAI,GAC5C,kBAAkB,EAAE,gBAAgB,8BAA8B;AAClE,QAAE,eAAe,EAAE,KAAK,WAAW;AACjC,UAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,EAAE,KAAK,SAAS,CAAC;AAAA,MAChE,CAAC;AAED,WAAK,wBAAwB;AAC7B,WAAK,kBAAkB;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,OAAO;AAChB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,OAAO,EAAE,KAAK,KAAK;AAC3C,YAAM,YAAY,QAAQ,OAAO,EAAE,KAAK,YAAY;AACpD,WAAK,aAAa,SAAS,SAAS;AACpC,WAAK,wBAAwB;AAC7B,WAAK,kBAAkB;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB;AAClB,UAAI,sBAAsB,EAAE,2CAA2C,EACpE,IAAI,WAAY;AACf,eAAO,SAAS,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC;AAAA,MACvC,CAAC,EACA,IAAI;AAEP,QAAE,sBAAsB,EAAE,IAAI,mBAAmB;AAAA,IACnD;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B;AACxB,QAAE,kCAAkC,EAAE,IAAI,EAAE,EAAE,OAAO;AACrD,QAAE,4BAA4B,EAAE,IAAI,EAAE;AAAA,IACxC;AAAA,IAEA,0BAA0B;AACxB,WAAK,aAAa;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,SAAS,WAAW;AAC/B,UAAI,qCAAqC;AACzC,UAAI,SAAU;AACZ,6CAAqC,+BAA+B,uBAAuB;AAAA,MAC7F;AACA,eAAQ,UAAU,EAAE,kCAAkC,GAAG;AACvD,cAAM,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI;AACjC,cAAM,kBAAkB,EAAE,gBAAgB,8BAA8B;AAExE,YAAI,QAAQ,EAAE,eAAe,EAAE;AAC/B,cAAM,UAAU,gBAAgB,OAAO,UAAU,EAAE;AAEnD,YAAI,WAAW,GAAG;AAChB,YAAE,MAAM,EAAE,KAAK,iBAAiB,KAAK;AACrC,YAAE,MAAM,EAAE,KAAK,WAAW,KAAK;AAAA,QACjC,WAAW,UAAU,KAAK,UAAU,OAAO;AACzC,YAAE,MAAM,EAAE,KAAK,iBAAiB,IAAI;AAAA,QACtC,WAAW,WAAW,OAAO;AAC3B,YAAE,MAAM,EAAE,KAAK,iBAAiB,KAAK;AACrC,YAAE,MAAM,EAAE,KAAK,WAAW,IAAI;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;;;AC5HA;AAAA;AAAA;AAAA;AAEA,MAAO,+CAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA,IAQjD,cAAc,OAAO;AACnB,YAAM,SAAS,MAAM;AACrB,WAAK,kBAAkB,OAAO,QAAQ;AAEtC,cAAQ,IAAI,qDAAqD,KAAK,eAAe;AAGrF,YAAM,QAAQ,SAAS,eAAe,6BAA6B;AACnE,UAAI,OAAO;AACT,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB;AACd,UAAI,CAAC,KAAK,iBAAiB;AACzB,gBAAQ,MAAM,qDAAqD;AACnE;AAAA,MACF;AAEA,cAAQ,IAAI,wDAAwD,KAAK,eAAe;AAGxF,YAAM,uBAAuB,SAAS,cAAc,qCAAqC;AACzF,UAAI,sBAAsB;AACxB,cAAM,0BAA0B,KAAK,YAAY;AAAA,UAC/C;AAAA,UACA;AAAA,QACF;AAEA,YAAI,2BAA2B,wBAAwB,qBAAqB;AAC1E,kCAAwB,oBAAoB,KAAK,eAAe;AAAA,QAClE,OAAO;AACL,kBAAQ,MAAM,yEAAyE;AAAA,QACzF;AAAA,MACF;AAGA,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AAnDE,gBADK,8CACE,UAAS;AAAA,IACd,YAAY;AAAA,EACd;;;ACLF;AAAA;AAAA;AAAA;AAGA,uBAAS,MAAM,IAAI,WAAK,CAAC;AAEzB,MAAO,mCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,UAAIC,QAAO;AAEX,UAAI,qBAAS,KAAK,SAAS;AAAA,QACzB,eAAe;AAAA,QACf,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,QACX,QAAQ,SAAU,OAAO;AACvB,UAAAA,MAAK,YAAY;AAAA,QACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWF,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,SAAS,OAAO;AACd,UAAI,WAAW,EAAE,6DAA6D;AAC9E,YAAM,qBAAqB,EAAE,MAAM,aAAa,EAAE,QAAQ,sBAAsB;AAEhF,QAAE,QAAQ,EAAE,YAAY,kBAAkB;AAE1C,YAAMC,SAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY;AAK5C,YAAM,eAAe,EAAE,eAAe;AACtC,mBAAa,KAAK,gBAAgB,EAAE,SAAS,QAAQ;AAErD,WAAK;AAAA,QACH;AAAA,QACAA;AAAA;AAAA,MACF,EAAE,KAAK,MAAM;AACX,cAAM,cAAc,EAAE,kCAAkC;AACxD,cAAM,iBAAiB,YAAY,GAAGA,MAAK;AAC3C,cAAM,SAAS,eAAe,KAAK,SAAS;AAC5C,UAAE,iBAAiB,QAAQ,EAAE,YAAY,QAAQ;AAAA,MACnD,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,OAAO;AACtB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,eAAe;AACrB,YAAM,YAAY,QAAQ,QAAQ,uBAAuB,EAAE,KAAK,YAAY;AAC5E,WAAK,UAAU,+BAA+B,MAAM,eAAe,SAAS,EAAE,KAAK,CAACC,WAAU;AAAA,MAE9F,CAAC;AAAA,IAEH;AAAA,IAGA,YAAY,OAAO;AACjB,WAAK,UAAU,mCAAmC,EAAE;AAAA,IACtD;AAAA,IAEA,kBAAkB,OAAO;AACvB,YAAMF,QAAO;AACb,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,WAAK,aAAa;AAClB,WAAK,UAAU,2CAA2C,MAAM,aAAa,EAAE,KAAK,aAAW;AAC7F,gBAAQ,SAAS,QAAQ;AACzB,QAAAA,MAAK,YAAY;AACjB,UAAE,kBAAkB,EAAE,MAAM,MAAM;AAAA,MACpC,CAAC;AAAA,IAEH;AAAA,IAEA,aAAa,OAAO;AAClB,WAAK,UAAU,gDAAgD,EAAE,KAAK,aAAW;AAAA,MACjF,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB,OAAO;AACzB,YAAMA,QAAO;AACb,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,WAAK,aAAa;AAClB,WAAK,UAAU,2CAA2C,EAAE,KAAK,aAAW;AAG1E,gBAAQ,SAAS,QAAQ;AACzB,QAAAA,MAAK,YAAY;AACjB,UAAE,kBAAkB,EAAE,MAAM,MAAM;AAAA,MACpC,CAAC;AAAA,IAEH;AAAA,IAEA,cAAc;AACb,UAAI,SAAS,EAAE,0BAA0B;AACzC,UAAIG,SAAQ,CAAC;AACb,eAAS,SAAS,QAAQ;AACxB,YAAIC,MAAK,EAAE,KAAK,EAAE,KAAK,SAAS;AAChC,QAAAD,OAAM,KAAKC,GAAE;AAAA,MACf;AAEA,WAAK,UAAU,yCAAyC,MAAMD,QAAO,KAAK,QAAQ,QAAQ,SAAS;AAAA,IACpG;AAAA,EACF;;;AC9HA;AAAA;AAAA;AAAA;AAEA,MAAqB,wBAArB,cAAmD,sBAAsB;AAAA,IAEvE,UAAU;AACR,YAAM,QAAQ;AACd,UAAIE,QAAO;AAKX,QAAE,QAAQ,EAAE,GAAG,eAAe,SAAU,OAAO;AAE7C,QAAAA,MAAK,gBAAgB,MAAM;AAC3B,QAAAA,MAAK,mBAAmB,MAAM;AAC9B,QAAAA,MAAK,cAAc,MAAM;AACzB,QAAAA,MAAK,UAAU,MAAM;AACrB,cAAM,QAAQ,MAAM;AACpB,cAAM,oBAAoB,MAAM;AAChC,cAAM,iBAAiB,MAAM;AAC7B,cAAM,yBAAyB,MAAM;AACrC,QAAAA,MAAK,aAAa;AAClB,QAAAA,MAAK;AAAA,UACH;AAAA,UACAA,MAAK;AAAA,UACLA,MAAK;AAAA,UACLA,MAAK;AAAA,UACL;AAAA,UACAA,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACA,EAAE,KAAK,MAAM;AAGX,4BAAkB,EAAE,mBAAmB,CAAC;AACxC,cAAI,aAAa,EAAE,+BAA+B;AAClD,qBAAW,YAAY,OAAO;AAC9B,qBAAW,QAAQ,OAAO;AAC1B,UAAAA,MAAK,4BAA4B,eAAe;AAEhD,UAAAA,MAAK,iBAAiB;AACtB,UAAAA,MAAK,YAAY;AAAA,QACnB,CAAC;AAAA,MACH,CAAC;AAEH,QAAE,QAAQ,EAAE,GAAG,aAAa,SAAU,OAAO;AAC3C,YAAI,cAAc,MAAM;AAGxB,QAAAA,MAAK,UAAU,uCAAuC,WAAW;AAAA,MAEnE,CAAC;AAAA,IACH;AAAA,IAEA,yBAAyB,SAAS;AAChC,UAAIC,YAAW,CAAC;AAChB,UAAIC;AAEJ,UAAI,SAAS;AACX,QAAAD,YAAW,EAAE,UAAU,UAAU;AAAA,MACnC;AAEA,UAAIA,UAAS,SAAS,GAAG;AACvB,YAAI,UAAUA,UAAS,MAAM;AAC7B,QAAAC,WAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM;AAAA,MAC9C;AAEA,aAAOA,YAAW,QAAQA,SAAQ,SAAS,IAAI,SAASA,SAAQ,CAAC,CAAC,IAAI;AAAA,IACxE;AAAA,EAEF;;;ACvEA;AAAA;AAAA;AAAA;;;ACMA,MAAqB,YAArB,MAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO7B,YAAY,EAAC,SAAS,SAAAC,SAAQ,GAAG;AAC/B,WAAK,UAAU;AACf,WAAK,UAAUA;AACf,WAAK,WAAW;AAAA,IAClB;AAAA,IAEA,aAAa;AAEX,WAAK,eAAe;AAAA,IACtB;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,KAAK,IAAIC,OAAM;AACnB,SAAG,gBAAgB;AAGnB,UAAIC,MAAK,GAAG,aAAa,QAAQ,IAAI,GACrC,OAAO,GAAG,aAAa,QAAQ,MAAM,GACrC,UAAU,GAAG,aAAa,QAAQ,SAAS,GAC3C,QAAQ,GAAG,aAAa,QAAQ,OAAO,GACvC,UAAU,EAAE,GAAG,MAAM;AAKrB,UAAI,SAAS,QAAQ,OAAO,GAC1B,UAAU,OAAO,KAAK,UAAU;AAClC,UAAG,OAAO,SAAS,QAAQ,GAAE;AAE3B,UAAE,sBAAsB,EAAE,OAAO,EAAE,uFAAuF,KAAK,EAAE,iDAAiD,qGAAqG,CAAC;AAExR;AAAA,MACF;AACA,UAAG,WAAW,uBAAuB,EAAE,MAAM,EAAE,SAAS,aAAa,EAAE,SAAS,GAAE;AAEhF,UAAE,sBAAsB,EAAE,OAAO,EAAE,uFAAuF,KAAK,EAAE,6CAA6C,qGAAqG,CAAC;AAEpR;AAAA,MACF;AACA,YAAM,QAAQ,OAAO,KAAK,OAAO;AACjC,YAAM,yBAAyB,OAAO,KAAK,KAAK;AAEhD,UAAIC,QAAO,QAAQ,KAAK,8BAA8B;AAEtD,UAAI,oBAAoB,EAAE,MAAM,EAAE,SAAS,8BAA8B,EAAE,MAAMA,KAAI,IAAI;AAIzF,QAAEF,MAAK,OAAO,EAAE,QAAQ;AAAA,QACtB,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,kBAAkB;AAAA,QAClB;AAAA,QACA,aAAaC;AAAA,QACb,SAAS,KAAK;AAAA,QACd;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAgB;AACd,UAAID,QAAO;AAGX,QAAE,KAAK,OAAO,EAAE,GAAG,aAAa,mBAAmB,SAAS,IAAI;AAG9D,gBAAQ,IAAI,eAAe,GAAG,MAAM;AACpC,YAAG,EAAE,GAAG,MAAM,EAAE,QAAQ,QAAQ,EAAE,KAAK,+CAA+C,EAAE,SAAS,GAAE;AACjG,YAAE,GAAG,MAAM,EAAE,SAAS,WAAW;AACjC,aAAG,cAAc,aAAa,gBAAgB;AAC9C,aAAG,cAAc,aAAa,aAAa;AAAA,QAC7C,OAAO;AACL,YAAE,GAAG,MAAM,EAAE,SAAS,SAAS;AAAA,QACjC;AAAA,MACF,CAAC;AAGD,QAAE,KAAK,OAAO,EAAE,GAAG,aAAa,mBAAmB,SAAS,IAAI;AAE9D,UAAE,GAAG,MAAM,EAAE,YAAY,SAAS;AAClC,UAAE,GAAG,MAAM,EAAE,YAAY,WAAW;AAAA,MACtC,CAAC;AAGD,QAAE,KAAK,OAAO,EAAE,GAAG,YAAY,mBAAmB,SAAS,IAAI;AAC7D,WAAG,eAAe;AAAA,MACpB,CAAC;AAGD,QAAE,KAAK,OAAO,EAAE,GAAG,QAAQ,mBAAmB,SAAU,IAAI;AAC1D,UAAE,GAAG,MAAM,EAAE,YAAY,SAAS;AAClC,UAAE,GAAG,MAAM,EAAE,YAAY,WAAW;AACpC,QAAAA,MAAK,KAAK,GAAG,eAAeA,KAAI;AAAA,MAClC,CAAC;AAAA,IACH;AAAA,EAEF;;;ACrHA,MAAqB,YAArB,MAA+B;AAAA,IAC7B,YAAY,iBAAiB,MAAM;AACjC,WAAK,iBAAiB;AACtB,UAAIG,QAAO;AACX,QAAE,QAAQ,EAAE,GAAG,aAAa,oBAAoB,SAASC,IAAG;AAE1D,QAAAD,MAAK,KAAKC,GAAE,eAAeD,KAAI;AAAA,MACjC,CAAC;AACD,QAAE,QAAQ,EAAE,GAAG,WAAW,oBAAoB,SAAUC,IAAG;AACzD,UAAE,aAAa,EAAE,YAAY,YAAY;AACzC,YAAGD,MAAK,gBAAgB;AACtB,YAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC;AAAA,QAC/C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,KAAK,IAAIA,OAAM;AACb,UAAI,SAAS,EAAE,GAAG,MAAM,GACxBE,MAAK,OAAO,KAAK,IAAI,GACrB,kBAAkB,OAAO,KAAK,mBAAmB,GACjD,qBAAqB,OAAO,KAAK,qBAAqB;AAEtD,UAAGF,MAAK,gBAAgB;AACtB,YAAIG,QAAO,OAAO,KAAK,iBAAiB,GACxCC,QAAO,OAAO,KAAK,iBAAiB;AACpC,QAAAD,MAAK,KAAK,EAAE,UAAU,MAAM,CAAC;AAC7B,QAAAC,MAAK,KAAK,EAAE,UAAU,MAAM,CAAC;AAAA,MAC/B;AAEA,SAAG;AACH,MAAAC,wBAAuB,GAAG,cAAc,OAAO,KAAK,CAAC;AACrD,UAAI,OAAOL,MAAK,gBAAgB,SAAS,eAAe,eAAe,CAAC;AACxE,UAAG,QAAQ,MAAM;AACf,WAAG,aAAa,aAAa,MAAM,EAAE,IAAI,EAAE,WAAW,IAAI,GAAG,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC;AAAA,MACxF;AAEA,UAAG,oBAAoB;AACrB,6BAAqB,mBAAmB,MAAM,GAAG;AACjD,iBAAQ,eAAe,oBAAoB;AACzC,cAAI,OAAO,EAAE,MAAM,WAAW;AAC9B,eAAK,SAAS,YAAY;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IAEA,gBAAgB,IAAI;AAClB,UAAG,MAAM,MAAM;AACb,YAAI,WAAW,GAAG,UAAU,IAAI;AAChC,iBAAS,MAAM,MAAM;AACrB,iBAAS,MAAM,OAAO;AACtB,iBAAS,MAAM,WAAW;AAC1B,iBAAS,MAAM,gBAAgB;AAG/B,iBAAS,KAAK,YAAY,QAAQ;AAClC,mBAAW,WAAW;AACpB,mBAAS,KAAK,YAAY,QAAQ;AAAA,QACpC,CAAC;AAED,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAMA,WAASK,wBAAuB,cAAcC,OAAM;AAClD,aAAS,CAACC,MAAK,KAAK,KAAK,OAAO,QAAQD,KAAI,GAAG;AAC7C,mBAAa,QAAQC,MAAK,KAAK;AAAA,IACjC;AACA,WAAO;AAAA,EACT;;;AC1EA,MAAqB,WAArB,MAA8B;AAAA,IAC5B,YAAY,EAAE,iBAAiB,iBAAiB,WAAW,GAAG;AAC5D,UAAIC,QAAO;AACX,WAAK,kBAAkB;AACvB,WAAK,iBAAiB,UAAU;AAChC,WAAK,kBAAkB,eAAe;AACtC,WAAK,eAAe,eAAe;AAEnC,WAAK,aAAa,EAAE,MAAM,OAAO,SAAS,MAAM,CAAC;AAAA,IACnD;AAAA,IAEA,iBAAiB,YAAY;AAC3B,UAAI,UAAU,EAAE,KAAK,eAAe;AACpC,UAAIC,OAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;AAC/D,UAAIC,QAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW;AAClE,UAAIC,SAAQ,EAAE,UAAU,EAAE,MAAM;AAChC,cAAQ,IAAI;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,KAAKF;AAAA,QACL,MAAMC,QAAOC,SAAQ,QAAQ,MAAM,IAAI;AAAA,QACvC,OAAO,QAAQ,MAAM,IAAI;AAAA,QACzB,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,IAEA,eAAe,UAAU;AACvB,UAAIH,QAAO;AAGX,QAAE,QAAQ,EAAE,GAAG,aAAa,SAAU,IAAI;AAExC,YAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,UAAU,GAAG;AAChC,YAAE,QAAQ,EAAE,QAAQ,MAAM;AAAA,QAC5B;AAAA,MACF,CAAC;AAGD,QAAE,QAAQ,EAAE,GAAG,aAAa,SAAU,IAAI;AAExC,YAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,UAAU,GAAG;AAChC,YAAE,QAAQ,EAAE,QAAQ,MAAM;AAAA,QAC5B;AAAA,MACF,CAAC;AAGD,QAAE,QAAQ,EAAE,GAAG,YAAY,SAAU,IAAI;AACvC,WAAG,eAAe;AAAA,MACpB,CAAC;AAGD,QAAE,QAAQ,EAAE,GAAG,QAAQ,SAAU,IAAI;AAEnC,QAAAA,MAAK,KAAK,GAAG,aAAa;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IAEA,KAAK,OAAO;AACV,UAAI,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,GAAG;AAC5C,YAAI,qBAAqB,MAAM,aAAa,QAAQ,oBAAoB,GACtEI,MAAK,MAAM,aAAa,QAAQ,IAAI;AACtC,YAAI,oBAAoB;AACtB,+BAAqB,mBAAmB,MAAM,GAAG;AACjD,mBAAS,eAAe,oBAAoB;AAC1C,cAAE,MAAM,WAAW,EAAE,OAAO;AAAA,UAC9B;AAAA,QACF;AACA,UAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC;AAE7C,YAAI,SAASA,MAAK,SAASA,GAAE,IAAI;AAEjC,UAAE,KAAK,eAAe,EAAE,QAAQ;AAAA,UAC9B,MAAM;AAAA,UACN,aAAa;AAAA,QACf,CAAC;AAAA,MACH;AAEA,WAAK,aAAa,EAAE,MAAM,OAAO,SAAS,KAAK,CAAC;AAAA,IAClD;AAAA,IAEA,kBAAkB,SAAS;AACzB,UAAIJ,QAAO;AACX,QAAE,QAAQ,EAAE,GAAG,aAAa,SAAS,WAAY;AAC/C,QAAAA,MAAK,aAAa,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC;AAAA,MACjD,CAAC;AACD,QAAE,QAAQ,EAAE,GAAG,WAAW,SAAS,WAAY;AAC7C,QAAAA,MAAK,aAAa,EAAE,MAAM,OAAO,SAAS,KAAK,CAAC;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,IAEA,aAAa,EAAE,MAAAK,QAAO,MAAM,UAAU,MAAM,GAAG;AAC7C,UAAIL,QAAO;AACX,iBAAW,WAAY;AACrB,YAAI,UAAU,EAAEA,MAAK,eAAe;AACpC,YAAIK,OAAM;AACR,cAAI,SAAS;AACX,oBAAQ,OAAO;AAAA,UACjB,OAAO;AACL,oBAAQ,OAAO,CAAC;AAAA,UAClB;AAAA,QACF,OAAO;AACL,cAAI,SAAS;AACX,oBAAQ,QAAQ;AAAA,UAClB,OAAO;AACL,oBAAQ,QAAQ,CAAC;AAAA,UACnB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;;;AHxGA,MAAqB,sBAArB,cAAiD,sBAAsB;AAAA,IAIrE,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,gBAAgB;AACrB,WAAK,WAAW,IAAI,SAAS;AAAA,QAC3B,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,YAAY;AAAA,MACd,CAAC;AACD,UAAI,YAAY,IAAI,UAAU;AAC9B,UAAI,YAAY,IAAI,UAAU,EAAE,SAAS,cAAc,CAAC;AACxD,UAAG,KAAK,gBAAgB;AACtB,UAAE,QAAQ,EAAE,GAAG,aAAa,oCAAoC,KAAK,aAAa,KAAK,IAAI,CAAC;AAC5F,UAAE,QAAQ,EAAE,GAAG,aAAa,oCAAoC,KAAK,aAAa,KAAK,IAAI,CAAC;AAAA,MAC9F;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAAO;AACZ,WAAK,QAAQ,eAAe;AAE5B,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,SAAS,OAAO;AACxC,UAAI,SAAS;AACX;AAAA,MACF;AACA,YAAM,aAAa,QAAQ,SAAS,UAAU;AAC9C,YAAM,SAAS,QAAQ,KAAK;AAC5B,YAAM,aAAa,QAAQ,QAAQ,uBAAuB;AAC1D,iBAAW,KAAK,oBAAoB,EAAE,YAAY,UAAU;AAC5D,UAAG,YAAY;AACb,eAAO,YAAY,UAAU;AAC7B,gBAAQ,YAAY,UAAU;AAAA,MAChC,OAAO;AACL,eAAO,SAAS,UAAU;AAC1B,gBAAQ,SAAS,UAAU;AAAA,MAC7B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,OAAO;AAClB,UAAG,KAAK,iBAAiB,MAAM;AAC7B,aAAK,gBAAgB,WAAW,MAAM,KAAK,UAAU,KAAK,GAAG,GAAG;AAAA,MAClE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,OAAO;AAClB,mBAAa,KAAK,aAAa;AAC/B,WAAK,gBAAgB;AAAA,IACvB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UAAU,OAAO;AACf,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,SAAS,OAAO;AACxC,UAAI,SAAS;AACX;AAAA,MACF;AACA,YAAM,SAAS,QAAQ,KAAK;AAC5B,YAAM,aAAa,QAAQ,QAAQ,uBAAuB;AAC1D,iBAAW,KAAK,sCAAsC,EAAE,YAAY,UAAU;AAE9E,aAAO,SAAS,UAAU;AAC1B,cAAQ,SAAS,UAAU;AAAA,IAC7B;AAAA,EACF;AAnFE,gBAFmB,qBAEZ,WAAU,CAAC,OAAO;;;AIP3B;AAAA;AAAA;AAAA;;;ACCA,MAAM,cAAN,cAA0B,WAAW;AAAA,IACnC,aAAa;AACX,WAAK,eAAe,KAAK,aAAa,KAAK,IAAI;AAAA,IACjD;AAAA,IACA,UAAU;AACR,UAAI,OAAO,WAAW,aAAa;AACjC,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,IACA,mBAAmB;AACjB,WAAK,eAAe,IAAI,OAAO,KAAK,OAAO,aAAa,KAAK,eAAe,KAAK,mBAAmB;AACpG,WAAK,aAAa,YAAY,iBAAiB,KAAK,YAAY;AAAA,IAClE;AAAA,IACA,eAAe;AACb,WAAK,QAAQ,KAAK,aAAa,SAAS;AACxC,YAAM,oBAAoB,KAAK,MAAM;AACrC,UAAI,sBAAsB,QAAQ;AAChC,cAAM,mBAAmB,KAAK,wBAAwB,iBAAiB;AACvE,aAAK,qBAAqB,gBAAgB;AAAA,MAC5C;AACA,UAAI,KAAK,MAAM,aAAa,QAAQ;AAClC,aAAK,YAAY,KAAK,MAAM,QAAQ;AAAA,MACtC;AAAA,IACF;AAAA,IACA,qBAAqB,SAAS;AAC5B,UAAI,KAAK;AACP,aAAK,mBAAmB,QAAQ,QAAQ,iBAAiB;AAC3D,UAAI,KAAK;AACP,aAAK,YAAY,QAAQ,QAAQ,SAAS;AAC5C,UAAI,KAAK;AACP,aAAK,WAAW,QAAQ,QAAQ,YAAY;AAC9C,UAAI,KAAK;AACP,aAAK,aAAa,QAAQ,QAAQ,+BAA+B;AACnE,UAAI,KAAK;AACP,aAAK,YAAY,QAAQ,QAAQ,+BAA+B;AAClE,UAAI,KAAK;AACP,aAAK,cAAc,QAAQ,QAAQ,WAAW;AAChD,UAAI,KAAK;AACP,aAAK,iBAAiB,QAAQ,QAAQ,eAAe;AAAA,IACzD;AAAA,IACA,YAAY,UAAU;AACpB,UAAI,KAAK;AACP,aAAK,gBAAgB,QAAQ,SAAS,SAAS,IAAI,EAAE,SAAS;AAChE,UAAI,KAAK;AACP,aAAK,eAAe,QAAQ,SAAS,SAAS,IAAI,EAAE,SAAS;AAAA,IACjE;AAAA,IACA,IAAI,sBAAsB;AACxB,aAAO;AAAA,QACL,QAAQ,CAAC,sBAAsB,UAAU;AAAA,QACzC,uBAAuB;AAAA,UACrB,SAAS,KAAK;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc,OAAO;AACnB,UAAI,MAAM,SAAS,SAAS;AAC1B,cAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAAA,IACA,wBAAwB,mBAAmB;AACzC,YAAMC,QAAO,CAAC;AACd,wBAAkB,QAAQ,CAAC,cAAc;AACvC,cAAM,OAAO,UAAU,MAAM,CAAC;AAC9B,QAAAA,MAAK,IAAI,IAAI,UAAU;AAAA,MACzB,CAAC;AACD,aAAOA;AAAA,IACT;AAAA,EACF;AACA,cAAY,UAAU;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,cAAY,SAAS;AAAA,IACnB,SAAS;AAAA,EACX;;;ADjFA,MAAO,yCAAP,cAA6B,YAAmB;AAAA,IAO9C,mBAAmB;AACjB,UAAG,KAAK,cAAc;AACpB,aAAK,UAAU,KAAK,SAAS;AAAA,MAC/B;AACA,YAAM,iBAAiB;AAAA,IACzB;AAAA,IAEA,eAAe;AACb,YAAM,aAAa;AACnB,UAAG,OAAO,KAAK,MAAM,YAAa,aAAa;AAC7C,YAAG,KAAK,kBAAkB;AACxB,YAAE,KAAK,aAAa,EAAE,IAAI,KAAK,MAAM,QAAQ;AAC7C,eAAK,YAAY;AAAA,QACnB;AAAA,MACF,WAAU,OAAO,KAAK,MAAM,QAAS,aAAa;AAEhD,aAAK,mBAAmB,KAAK,MAAM,IAAI;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,cAAc,OAAO;AACnB,UAAG,MAAM,OAAO,SAAS;AACvB,cAAM,eAAe;AAAA,MACvB;AACA,YAAM,cAAc,KAAK;AAAA,IAC3B;AAAA;AAAA,IAGA,IAAI,sBAAsB;AACxB,aAAO;AAAA,QACL,QAAQ,CAAC,UAAU;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,mBAAmBC,OAAM;AACvB,UAAI,mBAAmB,IAAI,OAAO,KAAK,OAAO,cAAc,KAAK,MAAM;AAEvE,UAAIC,WAAU;AAAA,QACZ,OAAOD;AAAA,QACP,QAAQ,CAAC,UAAU;AAAA,MACrB;AAEA,uBAAiB,mBAAmBC,UAAQ,CAAC,SAAS,WAAW;AAC/D,YAAG,UAAU,OAAO,KAAK,OAAO,oBAAoB,IAAI;AACtD,cAAG,QAAQ,SAAS,GAAG;AACrB,cAAE,KAAK,aAAa,EAAE,IAAI,QAAQ,CAAC,EAAE,QAAQ;AAC7C,iBAAK,YAAY;AAAA,UACnB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,UAAU,IAAI;AACZ,UAAI,MAAM,EAAE,EAAE;AACd,WAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,WAAW,oBAAoB;AACrE,WAAK,SAAS,IAAI,OAAO,KAAK,OAAO;AAAA,QACnC,KAAK,KAAK;AAAA,QACV,OAAO,IAAI,KAAK,YAAY;AAAA,MAC9B,CAAC;AACD,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,cAAc;AACZ,UAAIC,QAAO;AACX,UAAG,KAAK,kBAAkB;AACxB,YAAI,EAAE,KAAK,aAAa,EAAE,IAAI,GAAG;AAC/B,cAAI,mBAAmB,IAAI,OAAO,KAAK,OAAO,cAAc,KAAK,MAAM;AACvE,iBAAO,iBAAiB,WAAW;AAAA,YACjC,SAAS,EAAE,KAAK,aAAa,EAAE,IAAI;AAAA,UACrC,GAAG,SAAS,OAAO,QAAQ;AACzB,gBAAI,EAAE,WAAW,OAAO,KAAK,OAAO,oBAAoB,MAAM,MAAM,WAAW;AAC7E;AAAA,YACF;AACA,uBAAW,mBAAmBA,MAAK,QAAQ,OAAOA,MAAK,MAAM;AAAA,UAC/D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAnFE,gBAFK,wCAEE,WAAU,CAAC,OAAO,SAAS;AAElC,gBAJK,wCAIE;AACP,gBALK,wCAKE;;;AEPT;AAAA;AAAA;AAAA;AAEA,MAAO,6BAAP,cAA6B,WAAW;AAAA,IAEtC,UAAU;AACR,QAAE,0BAA0B,EAAE;AAAA,QAC5B;AAAA,UACE,MAAM;AAAA,UACN,SAAS,WAAW;AAClB,mBAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK;AAAA,UAChD;AAAA,QACF;AAAA,MACF;AAAA,IAEF;AAAA,EAEF;;;AChBA;AAAA;AAAA;AAAA;AAEA,MAAO,6BAAP,cAA6B,sBAAsB;AAAA,IAKjD,UAAU;AACR,YAAM,QAAQ;AACd,YAAMC,QAAO;AACb,UAAG,KAAK,iBAAiB;AACvB,aAAK,cAAc,QAAQ,CAAC,QAAQC,QAAO,YAAY;AACrD,gBAAM,uBAAuB,EAAE,MAAM,EAAE,KAAK,SAAS;AACrD,UAAAD,MAAK,YAAY,CAAC,GAAG,oBAAoB;AAAA,QAC3C,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,gCAAgC,OAAO;AACrC,UAAIA,QAAO;AACX,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,uBAAuB,QAAQ,KAAK,SAAS;AAGjD,WAAK,UAAU,iDAAiD,CAAC,sBAAsB,iBAAiB,EAAE,KAAK,aAAW;AACxH,QAAAA,MAAK,YAAY,SAAS,oBAAoB;AAAA,MAChD,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,YAAY,SAAS,sBAAsB;AACzC,YAAM,EAAE,MAAAE,OAAM,SAAS,MAAM,IAAI;AAIjC,UAAI,eAAe,uBAAuB,oBAAoB;AAC9D,UAAI,YAAY,EAAE,wBAAwB,EAAE,KAAK,yCAAyC;AAE1F,gBAAU,QAAQ,SAAS;AAC3B,gBAAU;AAAA,QACR;AAAA,UACE,OAAO,WAAW;AAAC,mBAAO,EAAE,IAAI,EAAE,KAAK,YAAY;AAAA,UAAC;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,OAAO;AACvB,YAAM,eAAe;AACrB,UAAIF,QAAO;AACX,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,OAAO,QAAQ,QAAQ,MAAM;AACnC,WAAK,UAAU,qCAAqC,KAAK,CAAC,CAAC;AAAA,IAI7D;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,OAAO;AAC1B,YAAM,eAAe;AACrB,WAAK,UAAU,wCAAwC,MAAM,aAAa;AAAA,IAI5E;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB,OAAO;AACxB,YAAM,eAAe;AACrB,UAAIA,QAAO;AACX,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,qBAAqB,QAAQ,KAAK,sBAAsB;AAE9D,YAAM,oBAAoB,QAAQ,KAAK,qBAAqB;AAE5D,YAAM,4BAA4B,QAAQ,KAAK,6BAA6B;AAE5E,QAAE,oCAAoC,EAAE,IAAI,kBAAkB;AAC9D,QAAE,+BAA+B,EAAE,IAAI,iBAAiB;AACxD,QAAE,2CAA2C,EAAE,IAAI,yBAAyB;AAAA,IAC9E;AAAA,EACF;AA3FE,gBAFK,4BAEE,WAAU,CAAC,SAAS,QAAQ;;;ACJrC;AAAA;AAAA;AAAA;AAEA,MAAqB,wBAArB,cAAmD,sBAAsB;AAAA,IAEvE,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,kBAAkB;AACvB,WAAK,mBAAmB;AACxB,WAAK,wBAAwB;AAAA,IAC/B;AAAA,IAEA,aAAa;AACX,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,QAAQ;AAAA,MACvB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB;AAClB,YAAM,wBAAwB,SAAS,eAAe,sBAAsB;AAE5E,WAAK,UAAU,IAAI,UAAU,QAAQ,KAAK,SAAS;AAAA,QACjD,MAAM;AAAA,QACN,SAAS,MAAM;AACb,gBAAM,gBAAgB,sBAAsB,UAAU,IAAI;AAC1D,wBAAc,UAAU,OAAO,QAAQ;AACvC,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AAAA,QACX,SAAS;AAAA,MACX,CAAC;AAGD,WAAK,QAAQ,iBAAiB,oBAAoB,MAAM;AACtD,aAAK,4BAA4B;AACjC,aAAK,4BAA4B;AAAA,MACnC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AAAA,IAErB;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B;AACxB,YAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,YAAM,cAAc,UAAU,IAAI,cAAc;AAChD,YAAM,WAAW,UAAU,IAAI,gBAAgB;AAC/C,YAAM,eAAe,UAAU,IAAI,oBAAoB;AAGvD,UAAK,eAAe,gBAAgB,OAAQ,aAAa,OAAO,iBAAiB,KAAK;AACpF,aAAK,QAAQ,UAAU,IAAI,cAAc;AAAA,MAC3C,OAAO;AACL,aAAK,QAAQ,UAAU,OAAO,cAAc;AAAA,MAC9C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,8BAA8B;AAC5B,YAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,YAAM,YAAY,UAAU,IAAI,cAAc;AAC9C,YAAM,WAAW,UAAU,IAAI,gBAAgB;AAC/C,YAAM,eAAe,UAAU,IAAI,oBAAoB;AAEvD,YAAM,cAAc,SAAS,cAAc,eAAe;AAC1D,UAAI,CAAC;AAAa;AAGlB,UAAI,WAAW;AACb,cAAM,QAAQ,YAAY,cAAc,qCAAqC,aAAa;AAC1F,YAAI;AAAO,gBAAM,UAAU;AAAA,MAC7B,OAAO;AAEL,cAAM,WAAW,YAAY,cAAc,uCAAuC;AAClF,YAAI;AAAU,mBAAS,UAAU;AAAA,MACnC;AAGA,UAAI,aAAa,KAAK;AACpB,cAAM,WAAW,YAAY,cAAc,iBAAiB;AAC5D,YAAI;AAAU,mBAAS,UAAU;AAAA,MACnC;AAEA,UAAI,iBAAiB,KAAK;AACxB,cAAM,WAAW,YAAY,cAAc,qBAAqB;AAChE,YAAI;AAAU,mBAAS,UAAU;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAMA,8BAA8B;AAC5B,YAAM,cAAc,SAAS,cAAc,eAAe;AAC1D,UAAI,CAAC;AAAa;AAGlB,YAAM,cAAc,YAAY,cAAc,qBAAqB;AACnE,UAAI,aAAa;AACf,oBAAY,iBAAiB,SAAS,CAAC,UAAU;AAC/C,eAAK,YAAY,KAAK;AAAA,QACxB,CAAC;AAAA,MACH;AAGA,YAAM,cAAc,YAAY,cAAc,qBAAqB;AACnE,UAAI,aAAa;AACf,oBAAY,iBAAiB,SAAS,CAAC,UAAU;AAC/C,eAAK,aAAa,KAAK;AAAA,QACzB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,YAAY,OAAO;AACjB,YAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAG5D,YAAM,eAAe,EAAE,eAAe;AACtC,YAAM,oBAAoB,aAAa,KAAK,oCAAoC;AAChF,UAAI,kBAAkB,UAAU,kBAAkB,IAAI,KAAK,kBAAkB,IAAI,MAAM,KAAK;AAC1F,kBAAU,IAAI,gBAAgB,kBAAkB,IAAI,CAAC;AAAA,MACvD,OAAO;AACL,kBAAU,OAAO,cAAc;AAAA,MACjC;AAGA,YAAM,mBAAmB,aAAa,KAAK,iBAAiB;AAC5D,UAAI,iBAAiB,UAAU,iBAAiB,GAAG,UAAU,GAAG;AAC9D,kBAAU,IAAI,kBAAkB,GAAG;AAAA,MACrC,OAAO;AACL,kBAAU,OAAO,gBAAgB;AAAA,MACnC;AAGA,YAAM,uBAAuB,aAAa,KAAK,qBAAqB;AACpE,UAAI,qBAAqB,UAAU,qBAAqB,GAAG,UAAU,GAAG;AACtE,kBAAU,IAAI,sBAAsB,GAAG;AAAA,MACzC,OAAO;AACL,kBAAU,OAAO,oBAAoB;AAAA,MACvC;AAGA,YAAM,SAAS,OAAO,SAAS,WAAW,MAAM,UAAU,SAAS;AACnE,aAAO,SAAS,OAAO;AAGvB,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,KAAK;AAAA,MACpB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aAAa,OAAO;AAClB,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,KAAK;AAAA,MACpB;AAAA,IACF;AAAA,EACF;;;ACzLA;AAAA;AAAA;AAAA;AAGA,MAAqB,yBAArB,cAAoD,sBAAsB;AAAA,IAGxE,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,aAAa;AAClB,WAAK,YAAY;AACjB,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,aAAa;AAAA,IACpB;AAAA,IAEA,aAAa;AACX,WAAK,iBAAiB;AACtB,UAAI,KAAK,WAAW;AAClB,qBAAa,KAAK,SAAS;AAAA,MAC7B;AACA,UAAI,KAAK,iBAAiB;AACxB,aAAK,gBAAgB,QAAQ;AAAA,MAC/B;AACA,YAAM,WAAW;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe;AACb,YAAM,gBAAgB,KAAK,QAAQ,cAAc,wBAAwB;AACzE,UAAI,CAAC,eAAe;AAClB;AAAA,MACF;AAEA,UAAI,CAAC,KAAK,0BAA0B;AAClC;AAAA,MACF;AAEA,WAAK,kBAAkB,IAAI,QAAQ,eAAe;AAAA,QAChD,OAAO,KAAK,gBAAgB;AAAA,QAC5B,SAAS,MAAM;AAEb,gBAAMG,YAAW,KAAK,sBAAsB,UAAU,IAAI;AAC1D,UAAAA,UAAS,UAAU,OAAO,QAAQ;AAClC,iBAAOA;AAAA,QACT;AAAA,QACA,MAAM;AAAA,QACN,WAAW;AAAA,QACX,SAAS;AAAA,QACT,WAAW;AAAA,QACX,QAAQ,CAAC,GAAG,CAAC;AAAA,QACb,cAAc;AAAA,UACZ,UAAU;AAAA,QACZ;AAAA,MACF,CAAC;AAID,oBAAc,iBAAiB,oBAAoB,MAAM;AACvD,aAAK,wBAAwB;AAC7B,aAAK,yBAAyB;AAAA,MAChC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B;AAExB,YAAM,UAAU,SAAS,cAAc,qBAAqB;AAC5D,UAAI,CAAC,SAAS;AACZ;AAAA,MACF;AAGA,cAAQ,iBAAiB,cAAc,MAAM;AAC3C,aAAK,kBAAkB;AAAA,MACzB,CAAC;AAED,cAAQ,iBAAiB,cAAc,MAAM;AAC3C,aAAK,oBAAoB;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AAEzB,YAAM,UAAU,SAAS,cAAc,qBAAqB;AAC5D,UAAI,CAAC,SAAS;AACZ;AAAA,MACF;AAGA,YAAM,eAAe,QAAQ,cAAc,gCAAgC;AAC3E,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AAGA,mBAAa,iBAAiB,SAAS,CAAC,UAAU;AAChD,aAAK,cAAc,KAAK;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,gBAAgB,OAAO;AACrB,WAAK,iBAAiB;AAGtB,YAAM,SAAS,MAAM;AACrB,aAAO,aAAa,SAAS,KAAK,gBAAgB,CAAC;AAEnD,WAAK,aAAa,WAAW,MAAM;AAEjC,eAAO,gBAAgB,OAAO;AAE9B,YAAI,KAAK,iBAAiB;AACxB,eAAK,gBAAgB,KAAK;AAAA,QAC5B;AAAA,MACF,GAAG,GAAG;AAAA,IACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,iBAAiB,OAAO;AACtB,UAAI,KAAK,YAAY;AACnB,qBAAa,KAAK,UAAU;AAC5B,aAAK,aAAa;AAAA,MACpB;AAGA,UAAI,SAAS,MAAM,eAAe;AAChC,cAAM,cAAc,gBAAgB,OAAO;AAAA,MAC7C;AAGA,WAAK,oBAAoB;AAAA,IAC3B;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB;AAEpB,UAAI,KAAK,WAAW;AAClB,qBAAa,KAAK,SAAS;AAAA,MAC7B;AAGA,WAAK,YAAY,WAAW,MAAM;AAChC,YAAI,KAAK,iBAAiB;AACxB,eAAK,gBAAgB,KAAK;AAAA,QAC5B;AAAA,MACF,GAAG,GAAG;AAAA,IACR;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB;AAClB,UAAI,KAAK,WAAW;AAClB,qBAAa,KAAK,SAAS;AAC3B,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,cAAc,OAAO;AAEnB,UAAI,KAAK,iBAAiB;AACxB,aAAK,gBAAgB,KAAK;AAAA,MAC5B;AAAA,IAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,cAAc,OAAO;AACnB,YAAM,eAAe;AAGrB,UAAI,KAAK,iBAAiB;AACxB,aAAK,gBAAgB,KAAK;AAAA,MAC5B;AAGA,YAAM,OAAO,SAAS,eAAe,cAAc;AACnD,UAAI,MAAM;AAER,cAAM,gBAAgB,KAAK,cAAc,gCAAgC;AACzE,YAAI,eAAe;AACjB,wBAAc,OAAO;AAAA,QACvB;AAGA,cAAM,cAAc,SAAS,cAAc,OAAO;AAClD,oBAAY,OAAO;AACnB,oBAAY,OAAO;AACnB,oBAAY,QAAQ;AACpB,aAAK,YAAY,WAAW;AAG5B,cAAM,eAAe,SAAS,cAAc,OAAO;AACnD,qBAAa,OAAO;AACpB,qBAAa,OAAO;AACpB,qBAAa,QAAQ;AACrB,aAAK,YAAY,YAAY;AAG7B,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,kBAAkB;AAEhB,aAAO,OAAO,MAAM,IAAI,uBAAuB,KAAK;AAAA,IACtD;AAAA,EACF;AAnPE,gBADmB,wBACZ,WAAU,CAAC,iBAAiB;;;ACJrC;AAAA;AAAA;AAAA;AACA,MAAO,4BAAP,cAA6B,WAAW;AAAA,IAItC,UAAU;AACR,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,cAAc;AACZ,QAAE,KAAK,aAAa,EAAE,KAAK,SAASC,IAAG,IAAI;AACzC,YAAI,KAAK,gBAAgB,cAAc,gBAAgB;AACvD,cAAM,EAAE,EAAE;AACV,YAAI,IAAI,KAAK,mBAAmB,GAAG;AACjC;AAAA,QACF;AACA,YAAI,KAAK,qBAAqB,IAAI;AAClC,yBAAiB,IAAI,KAAK,iBAAiB;AAC3C,sBAAc,IAAI,KAAK,cAAc;AACrC,uBAAe,IAAI,KAAK,uBAAuB;AAC/C,uBAAe,UAAU;AAAA,UACvB,OAAO,YAAa,IAAI,KAAK,cAAc;AAAA,UAC3C,eAAe,KAAK,MAAM,WAAW,eAAe,KAAK,YAAY,CAAC,CAAC;AAAA,UACvE,UAAU;AAAA,QACZ,CAAC;AACD,YAAI,CAAC,YAAY,QAAQ;AACvB;AAAA,QACF;AACA,oBAAY,UAAU;AAAA,UACpB,OAAO,YAAa,IAAI,KAAK,cAAc;AAAA,UAC3C,oBAAoB;AAAA,UACpB,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB,CAAC;AACD,yBAAiB,eAAe,QAAQ,aAAa;AACrD,uBAAe,YAAY;AAAA,UACzB,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,UACP,MAAM;AAAA,UACN,aAAa;AAAA,UACb,OAAO;AAAA,UACP,SAAS,IAAI,KAAK,yBAAyB;AAAA,UAC3C,eAAe,SAAS,UAAU,QAAQ;AACxC,mBAAO,YAAY,UAAU,OAAO,YAAY,KAAK,YAAY,CAAC;AAAA,UACpE;AAAA,QACF,CAAC;AACD,eAAO,IAAI,KAAK,gBAAgB,EAAE,MAAM,WAAW;AACjD,cAAI;AACJ,kBAAQ,YAAY,KAAK,WAAW,EAAE;AACtC,cAAI,CAAC,OAAO;AACV,mBAAO;AAAA,UACT;AACA,YAAE,KAAK,IAAI,KAAK,WAAW,GAAG;AAAA,YAC5B;AAAA,UACF,GAAG,SAASC,OAAM;AAChB,gBAAI;AACJ,qBAAS,WAAWA,MAAK,gBAAgB,CAAC;AAC1C,2BAAe,UAAU,OAAO,KAAK,MAAM,MAAM,CAAC;AAClD,wBAAY,KAAK,cAAc,KAAK;AACpC,yBAAa,KAAK,OAAO,QAAQ,CAAC,CAAC;AACnC,mBAAO,eAAe,YAAY,OAAO;AAAA,UAC3C,CAAC;AACD,iBAAO;AAAA,QACT,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAhEE,gBAFK,2BAEE,WAAU,CAAC,QAAQ;;;ACH5B;AAAA;AAAA;AAAA;AAEA,MAAO,6BAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa;AACX,YAAM,WAAW;AAMjB,WAAK,QAAQ,EAAE,KAAK,OAAO;AAAA,IAC7B;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAEd,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,oBAAoB;AAClB,WAAK,MAAM,KAAK,SAAS,EAAE,KAAK,SAASC,IAAG,IAAI;AAE9C,cAAM,MAAM,EAAE,EAAE;AAChB,YAAI,GAAG,QAAQ,mBAAmB;AAChC;AAAA,QACF;AACA,WAAG,QAAQ,oBAAoB;AAC/B,cAAM,iBAAiB,IAAI,KAAK,iBAAiB;AACjD,cAAM,cAAc,IAAI,KAAK,cAAc;AAC3C,cAAM,eAAe,IAAI,KAAK,uBAAuB;AACrD,uBAAe,UAAU;AAAA,UACvB,OAAO,YAAa,IAAI,KAAK,cAAc;AAAA,UAC3C,eAAe,KAAK,MAAM,WAAW,eAAe,KAAK,YAAY,CAAC,CAAC;AAAA,UACvE,UAAU;AAAA,QACZ,CAAC;AACD,YAAI,CAAC,YAAY,QAAQ;AACvB;AAAA,QACF;AACA,oBAAY,UAAU;AAAA,UACpB,OAAO,YAAa,IAAI,KAAK,cAAc;AAAA,UAC3C,oBAAoB;AAAA,UACpB,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB,CAAC;AACD,cAAM,iBAAiB,eAAe,QAAQ,aAAa;AAC3D,uBAAe,YAAY;AAAA,UACzB,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,UACP,MAAM;AAAA,UACN,aAAa;AAAA,UACb,OAAO;AAAA,UACP,SAAS,IAAI,KAAK,yBAAyB;AAAA,UAC3C,eAAe,SAAS,UAAU,QAAQ;AACxC,mBAAO,YAAY,UAAU,OAAO,YAAY,KAAK,YAAY,CAAC;AAAA,UACpE;AAAA,QACF,CAAC;AACD,eAAO,IAAI,KAAK,gBAAgB,EAAE,MAAM,WAAW;AACjD,gBAAM,QAAQ,YAAY,KAAK,WAAW,EAAE;AAC5C,cAAI,CAAC,OAAO;AACV,mBAAO;AAAA,UACT;AACA,YAAE,KAAK,IAAI,KAAK,WAAW,GAAG;AAAA,YAC5B;AAAA,UACF,GAAG,SAASC,OAAM;AAChB,gBAAI;AACJ,qBAAS,WAAWA,MAAK,gBAAgB,CAAC;AAC1C,2BAAe,UAAU,OAAO,KAAK,MAAM,MAAM,CAAC;AAClD,wBAAY,KAAK,cAAc,KAAK;AACpC,yBAAa,KAAK,OAAO,QAAQ,CAAC,CAAC;AACnC,mBAAO,eAAe,YAAY,OAAO;AAAA,UAC3C,CAAC;AACD,iBAAO;AAAA,QACT,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EAEF;;;AC9EA;AAAA;AAAA;AAAA;AAEA,MAAO,2BAAP,cAA6B,sBAAsB;AAAA,IAEjD,WAAW,OAAO;AAChB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,cAAQ,IAAI,OAAO;AACnB,QAAE,qBAAqB,EAAE,YAAY,UAAU;AAC/C,WAAK,UAAU,qBAAqB,QAAQ,KAAK,SAAS,CAAC;AAAA,IAC7D;AAAA,EACF;;;ACVA;AAAA;AAAA;AAAA;AACA,2BAAwB;AACxB,qBAAO;AAEP,MAAO,+BAAP,cAA6B,WAAW;AAAA,IAQtC,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,QAAQ;AAAA,IACf;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAEd,UAAG,CAAC,KAAK;AAAc;AAGvB,YAAMC,QAAO;AACb,WAAK,wBAAwB,IAAI,mBAAAC,QAAY,WAAW;AACxD,UAAI,KAAK,aAAa;AAEpB,YAAI,SAAS,EAAE,KAAK,OAAO;AAE3B,YAAG,KAAK,uBAAuB,IAAI;AACjC,mBAAS,EAAE,IAAI,KAAK,oBAAoB,EAAE,KAAK,KAAK,OAAO;AAAA,QAC7D;AAEA,iBAASC,QAAO,KAAK,aAAa;AAChC,gBAAM,YAAY,KAAK,YAAYA,IAAG;AAEtC,iBAAO,KAAKA,IAAG,EAAE,KAAK,WAAW;AAC/B,cAAE,IAAI,EAAE,SAAS,WAAW;AAC5B,kBAAM,QAAQ,IAAI,mBAAAD,QAAY;AAAA,cAC5B;AAAA,gBACE,gBAAgB;AAAA,gBAChB,aAAa;AAAA,gBACb,SAAS;AAAA,cACX;AAAA,YACF;AACA,gBAAG,KAAK,OAAO;AACb,oBAAM,cAAc,EAAE,MAAM,KAAK,CAAC;AAAA,YACpC;AACA,kBAAM,GAAG,SAAS,SAAU,OAAO;AAEjC,oBAAM,iBAAiB,EAAE,MAAM,cAAc,eAAe,CAAC;AAC7D,6BAAe,YAAY,WAAW;AACtC,6BAAe,SAAS,qBAAqB,WAAW;AAAA,YAC1D,CAAC;AACD,kBAAM,MAAMD,MAAK,qBAAqB;AAAA,UACxC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AAEjB,UAAI,KAAK,yBAAyB,MAAM;AACtC,aAAK,sBAAsB,QAAQ;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AA7DE,gBAFK,8BAEE,UAAS;AAAA,IACd,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,eAAe;AAAA,EACjB;;;ACVF;AAAA;AAAA;AAAA;AAQA,MAAO,6BAAP,cAA6B,sBAAsB;AAAA,IAMjD,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAMd,UAAIG,QAAO;AACX,UAAI,UAAU,EAAE,KAAK,OAAO,EAAE,OAAO;AACrC,UAAI,KAAK,eAAe;AACtB,YAAI,KAAK,cAAc,qBAAqB;AAE1C,cAAI,mBAAmB,EAAE,KAAK,OAAO,EAAE,QAAQ,QAAQ;AAEvD,cAAI,eAAe,EAAE,sBAAsB;AAC3C,uBAAa,QAAQ;AAAA,YACnB,MAAM;AAAA,YACN,aAAa,KAAK,EAAE,cAAc;AAAA,YAClC,gBAAgB;AAAA,YAChB,WAAW,SAAUC,OAAM,KAAK;AAC9B,kBAAI,aAAa,EAAE,KAAK,IAAI,IAAI;AAEhC,oBAAM,aAAa;AACnB,kBAAI,UAAU,WAAW,KAAK,UAAU;AAExC,kBAAG,SAAS;AAEV,gBAAAA,MAAK,KAAK,GAAG;AACb,wBAAQ,KAAK,wBAAwB,EAAE,KAAK,YAAY,KAAK,EAAE,YAAY,UAAU,EAAE,OAAO,EAAE,YAAY,UAAU;AAAA,cACxH;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ,KAAK,oDAAoD,KAAK,UAAU;AAAA,QAClF;AAAA,MAEF,OAAO;AAEL,YAAI,UAAU,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB;AAGnD,YAAI,QAAQ,WAAW,KAAK,EAAE,KAAK,OAAO,EAAE,GAAG,gBAAgB,GAAG;AAChE,oBAAU,EAAE,KAAK,OAAO;AAAA,QAC1B;AAGA,gBAAQ,KAAK,WAAW;AACtB,cAAI,QAAQ,EAAE,IAAI;AAGlB,cAAI,MAAM,SAAS,2BAA2B,GAAG;AAC/C;AAAA,UACF;AAEA,cAAIC,WAAU;AAAA,YACZ,OAAO,MAAM,KAAK,cAAc,KAAK;AAAA,YACrC,mBAAmB;AAAA,UACrB;AAEA,gBAAM,QAAQA,QAAO;AACrB,gBAAM,WAAW,MAAM,KAAK,iBAAiB;AAC7C,cAAI,UAAU;AACZ,kBAAM,KAAK,UAAU,EAAE,IAAI,aAAa,QAAQ;AAAA,UAClD;AACA,gBAAM,GAAG,gCAAgC,WAAY;AACnD,kBAAM,gBAAgB,MAAM,IAAI,CAAC;AACjC,gBAAI,eAAe;AACjB,4BAAc,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,KAAK,CAAC,CAAC;AAAA,YACpE;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IAGF;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,EACF;AAvFE,gBAFK,4BAEE,UAAS;AAAA,IACd,OAAO;AAAA,EACT;;;ACZF;AAAA;AAAA;AAAA;AAEA,MAAO,+BAAP,cAA6B,sBAAsB;AAAA,IAQjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,eAAe;AAAA,QAClB,QAAQ,KAAK;AAAA,QACb,SAAS,KAAK;AAAA,MAChB;AAEA,WAAK,QAAQ,EAAE,KAAK,OAAO;AAAA,IAC7B;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,UAAIC,QAAO;AACX,UAAI,cAAc,KAAK,UAAU,MAAM,GAAG;AAC1C,UAAG,YAAY,CAAC,KAAK,IAAI;AACvB,sBAAc,CAAC,QAAQ;AAAA,MACzB;AACA,kBAAY,QAAQ,SAAU,aAAaC,QAAO;AAChD,QAAAD,MAAK,aAAa,WAAW,EAAE,KAAKA,KAAI,EAAE;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA,IAEA,qBAAqB;AACnB,YAAMA,QAAO;AACb,UAAI,aAAaA,MAAK,MAAM,KAAK,wBAAwB;AAIzD,iBAAW,GAAG,SAAS,WAAW;AAChC,cAAM,OAAOA,MAAK;AAElB,iBAAS,SAAS,OAAO;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,IAEA,aAAa;AAAA,IAEb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,WAAW,OAAO;AAEhB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAME,MAAK,QAAQ,KAAK,IAAI;AAC5B,YAAM,QAAQ,QAAQ,KAAK,OAAO;AAClC,YAAM,UAAU,QAAQ,KAAK,SAAS;AACtC,YAAM,WAAW,QAAQ,KAAK,UAAU;AACxC,YAAM,iBAAiB,QAAQ,KAAK,iBAAiB;AACrD,YAAM,oBAAoB,QAAQ,KAAK,oBAAoB;AAC3D,YAAM,eAAe,QAAQ,KAAK,wBAAwB;AAQ1D,UAAI,gBAAgB,QAAQ,KAAK,OAAO,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG;AAC/D,sBAAgB,IAAI;AACpB,UAAI,iBAAiB,QAAQ,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB;AAChF,qBAAe,YAAY,cAAc;AAEzC,cAAQ,KAAK,iBAAiB,EAAE,SAAS,cAAc;AAEvD,WAAK,UAAU,8BAA8B,OAAOA,KAAI,SAAS,UAAU,YAAY;AAAA,IACzF;AAAA,EAEF;AA9EE,gBAFK,8BAEE,UAAS;AAAA,IACd,MAAM;AAAA,IACN,KAAK;AAAA,EACP;;;ACPF;AAAA;AAAA;AAAA;AACA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IACtC,UAAU;AACR,QAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa;AACnD,QAAE,iBAAiB,EAAE,OAAO;AAAA,IAC9B;AAAA,EACF;;;ACNA;AAAA;AAAA;AAAA;AAAA,MAAAC,wBAAsB;AAItB,MAAO,4BAAP,cAA6B,sBAAsB;AAAA,IAWjD,aAAa;AACX,YAAM,WAAW;AACjB,YAAM,eAAe,KAAK;AAG1B,WAAK,eAAe;AAAA,QAClB,WAAW,KAAK;AAAA,QAChB,YAAY,KAAK;AAAA,QACjB,SAAS,KAAK;AAAA,QACd,gBAAgB,KAAK;AAAA,MACvB;AACA,WAAK,eAAe;AAAA,IACtB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,YAAMC,QAAO;AACb,YAAM,cAAc,KAAK,UAAU,MAAM,GAAG;AAE5C,kBAAY,QAAQ,SAAU,aAAaC,QAAO;AAEhD,YAAI,eAAe,IAAI;AAAC;AAAA,QAAM;AAAC;AAC/B,QAAAD,MAAK,aAAa,WAAW,EAAE,KAAKA,KAAI,EAAE;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B;AAExB,WAAK,mBAAmB,CAAC;AAAA,IAC3B;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB;AAClB,YAAMA,QAAO;AACb,QAAE,0BAA0B,EAAE,QAAQ;AAAA,QACpC,aAAa,KAAK,EAAE,wBAAwB;AAAA,QAC5C,gBAAgB,EAAE,mBAAmB;AAAA,MACvC,CAAC;AACD,QAAE,0BAA0B,EAAE,GAAG,kBAAkB,SAAUE,IAAG;AAC9D,QAAAA,GAAE,eAAe;AACjB,YAAIC,QAAOD,GAAE,OAAO;AAEpB,cAAM,WAAWC,MAAK;AAGtB,UAAE,KAAK;AAAA,UACL,MAAM;AAAA,UACN,KAAK,2DAA2D;AAAA,UAChE,SAAS,CAACA,UAAS;AAEjB,kBAAM,yBAAyB,EAAE,6BAA6B;AAC9D,mCAAuB,KAAK,QAAQ,EAAE,OAAO;AAC7C,gBAAG,uBAAuB,SAAS,2BAA2B,GAAG;AAC/D,qCAAuB,IAAI,gBAAgB;AAC3C,qCAAuB,QAAQ,SAAS;AAAA,YAC1C;AACA,mCAAuB,QAAQ;AAAA,cAC7B,aAAa,KAAK,EAAE,2BAA2B;AAAA,cAC/C,MAAMA;AAAA,YACR,CAAC;AACD,mCAAuB,YAAY,QAAQ;AAC3C,mCAAuB,GAAG,kBAAkB,SAAUD,IAAG;AACvD,kBAAIC,QAAOD,GAAE,OAAO;AACpB,oBAAM,cAAcC,MAAK;AAEzB,gBAAE,2BAA2B,EAAE,KAAK,YAAY,KAAK;AAAA,YACvD,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MAEH,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB;AACpB,YAAMH,QAAO;AAEb,QAAE,qBAAqB,EAAE,KAAK,SAAUC,QAAQ;AAE9C,6BAAS,OAAO,MAAM;AAAA,UACpB,OAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,YACN,KAAK;AAAA,UACP;AAAA,UACA,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU,SAAU,OAAO;AACzB,kBAAM,cAAc,EAAE,MAAM,KAAK;AACjC,wBAAY,SAAS,UAAU;AAAA,UACjC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,uBAAuB;AACrB,YAAMD,QAAO;AACb,YAAM,eAAeA,MAAK;AAI1B,QAAE,uBAAuB,EAAE,KAAK,SAAUC,QAAQ;AAChD,6BAAS,OAAO,MAAM;AAAA,UACpB,OAAO;AAAA,UAEP,OAAO,SAAoB,KAAK;AAC9B,kBAAM,UAAU,EAAE,IAAI,IAAI,EAAE,KAAK,IAAI;AAGrC,kBAAM,aAAa,EAAE,IAAI,EAAE,EAAE,KAAK,OAAO;AACzC,kBAAMG,YAAW,IAAI;AAErB,YAAAJ,MAAK,UAAU,4BAA4B,SAAS,cAAc,YAAYI,WAAUJ,MAAK,cAAc,EAAE,KAAK,MAAM;AACtH,uBAAS,cAAc,IAAI,YAAY,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,aAAa,EAAE,CAAC,CAAC;AAAA,YACzG,CAAC;AAAA,UAEH;AAAA;AAAA;AAAA;AAAA,UAIA,UAAU,SAAoB,KAAK;AACjC,kBAAM,SAAS,EAAE,IAAI,IAAI;AACzB,kBAAM,kBAAkB,OAAO,KAAK,oBAAoB;AACxD,kBAAMI,YAAW,IAAI;AAErB,YAAAJ,MAAK,UAAU,mCAAmC,iBAAiB,cAAcI,SAAQ,EAAE,KAAK,MAAM;AACpG,uBAAS,cAAc,IAAI,YAAY,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,aAAa,EAAE,CAAC,CAAC;AAAA,YACzG,CAAC;AAAA,UACH;AAAA,QAEF,CAAC;AAAA,MACH,CAAC;AAGD,QAAE,+BAA+B,EAAE,KAAK,SAAUH,QAAQ;AACxD,6BAAS,OAAO,MAAM;AAAA,UACpB,OAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,YACN,KAAK;AAAA,UACP;AAAA,UACA,MAAM;AAAA,QACR,CAAC;AAAA,MACH,CAAC;AAGD,QAAE,gCAAgC,EAAE,KAAK,SAAUA,QAAQ;AACzD,6BAAS,OAAO,MAAM;AAAA,UACpB,OAAO;AAAA,YACL,MAAM;AAAA,YACN,KAAK,CAAC,UAAU,kBAAkB,iBAAiB;AAAA,UACrD;AAAA,UACA,MAAM;AAAA,UAEN,OAAO,SAAoB,KAAK;AAC9B,kBAAM,UAAU,EAAE,IAAI,IAAI,EAAE,KAAK,IAAI;AAGrC,kBAAM,aAAa,EAAE,IAAI,EAAE,EAAE,KAAK,OAAO;AACzC,kBAAMG,YAAW,IAAI;AAErB,YAAAJ,MAAK,UAAU,4BAA4B,SAAS,cAAc,YAAYI,WAAUJ,MAAK,cAAc,EAAE,KAAK,MAAM;AACtH,uBAAS,cAAc,IAAI,YAAY,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,aAAa,EAAE,CAAC,CAAC;AAAA,YACzG,CAAC;AAAA,UAEH;AAAA;AAAA;AAAA;AAAA,UAIA,UAAU,SAAoB,KAAK;AACjC,kBAAM,SAAS,EAAE,IAAI,IAAI;AACzB,kBAAM,kBAAkB,OAAO,KAAK,oBAAoB;AACxD,kBAAMI,YAAW,IAAI;AAErB,YAAAJ,MAAK,UAAU,mCAAmC,iBAAiB,cAAcI,SAAQ,EAAE,KAAK,MAAM;AACpG,uBAAS,cAAc,IAAI,YAAY,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,aAAa,EAAE,CAAC,CAAC;AAAA,YACzG,CAAC;AAAA,UACH;AAAA,QAEF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,OAAO;AAC7B,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,cAAc,KAAK,KAAK,IAAI,kBAAkB;AAGlD,UAAI,KAAK,QAAQ,QAAQ,IAAI;AAE7B,SAAG,KAAK,0BAA0B,EAAE,YAAY,QAAQ;AAAA,IAE1D;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,OAAO;AACtB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,cAAc,KAAK,KAAK,IAAI,kBAAkB;AAGlD,UAAI,eAAe,QAAQ,QAAQ,IAAI,EAAE,KAAK,wBAAwB;AACtE,mBAAa,KAAK;AAClB,UAAI,QAAQ,aAAa,KAAK,mBAAmB,EAAE,IAAI;AAGvD,WAAK,UAAU,mCAAmC,OAAO,WAAW,EAAE,KAAK,MAAM;AAC/E,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,OAAO;AAIhB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,SAAS;AACf,YAAM,QAAQ,OAAO,IAAI;AAEzB,YAAMC,WAAU,EAAC,MAAM,QAAQ,OAAO,OAAM;AAC5C,YAAM,UAAU,IAAI,KAAK,iBAAiBA,SAAQ,KAAK;AAGvD,YAAM,gBAAgB,EAAE,OAAO;AAE/B,QAAE,IAAI,KAAK,mBAAmB,EAAE,SAAS,QAAQ;AACjD,oBAAc,YAAY,QAAQ;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,OAAO;AAEjB,YAAML,QAAO;AACb,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS,QAAQ,QAAQ,QAAQ;AACvC,YAAM,UAAU,OAAO,KAAK,IAAI;AAChC,UAAI,aAAa,OAAO,QAAQ,SAAS,EAAE,KAAK,cAAc;AAE9D,UAAG,cAAc,QAAW;AAE1B,qBAAa,OAAO,QAAQ,kBAAkB,EAAE,KAAK,cAAc;AAAA,MACrE;AAGA,YAAM,eAAe,EAAE,aAAa,EAAE,SAAS;AAC/C,WAAK,aAAa;AAClB,WAAK,UAAU,iCAAiC,SAAS,YAAY,YAAY,EAAE,KAAK,MAAM;AAE5F,iBAAS,cAAc,IAAI,YAAY,gBAAgB,CAAC;AACxD,eAAO,OAAO;AACd,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,OAAO;AAEvB,YAAMA,QAAO;AACb,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS,QAAQ,QAAQ,QAAQ;AACvC,YAAM,qBAAqB,QAAQ,KAAK,iBAAiB;AAEzD,YAAM,eAAe,EAAE,aAAa,EAAE,SAAS;AAC/C,WAAK,aAAa;AAClB,WAAK,UAAU,mCAAmC,oBAAoB,YAAY,EAAE,KAAK,MAAM;AAC7F,eAAO,OAAO;AACd,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB,OAAO;AACvB,YAAM,eAAe;AAErB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,SAAS,QAAQ,QAAQ,QAAQ;AACvC,YAAM,UAAU,OAAO,KAAK,IAAI;AAChC,YAAM,aAAa,OAAO,QAAQ,SAAS,EAAE,KAAK,cAAc;AAChE,WAAK,UAAU,2BAA2B,SAAS,UAAU,EAAE,KAAK,MAAM;AACxE,iBAAS,cAAc,IAAI,YAAY,gBAAgB,CAAC;AAAA,MAC1D,CAAC;AACD,cAAQ,YAAY,QAAQ;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB,OAAO;AAExB,YAAM,eAAe;AACrB,YAAMA,QAAO;AACb,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS;AACf,YAAMK,WAAU,EAAC,MAAM,QAAQ,OAAO,YAAW;AACjD,YAAM,cAAc,OAAO,IAAI;AAE/B,YAAM,SAASA,SAAQ,WAAW;AAElC,eAAS,cAAc,IAAI,YAAY,yBAAyB,CAAC;AACjE,WAAK,UAAU,8BAA8B,QAAQ,KAAK,iBAAiB,EAAE,KAAK,MAAM;AACtF,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB,OAAO;AACxB,YAAM,eAAe;AACrB,YAAML,QAAO;AACb,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,SAAS;AACf,YAAMK,WAAU,EAAC,MAAM,QAAQ,OAAO,WAAU;AAChD,YAAM,cAAc,OAAO,IAAI;AAE/B,YAAM,SAASA,SAAQ,WAAW;AAElC,eAAS,cAAc,IAAI,YAAY,yBAAyB,CAAC;AACjE,WAAK,UAAU,8BAA8B,QAAQ,KAAK,iBAAiB,EAAE,KAAK,MAAM;AACtF,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAElB,YAAM,eAAe;AAErB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,SAAS;AACf,YAAMA,WAAU,EAAC,MAAM,UAAU,OAAO,SAAQ;AAChD,YAAM,cAAc,OAAO,IAAI;AAC/B,YAAM,SAASA,SAAQ,WAAW;AAElC,WAAK,UAAU,uBAAuB,QAAQ,KAAK,iBAAiB;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe,OAAO;AACpB,YAAML,QAAO;AACb,WAAK,mBAAmB,CAAC;AAEzB,YAAM,eAAe;AAKrB,YAAM,cAAc,EAAE,iBAAiB;AAEvC,YAAM,gBAAgB,EAAE,gBAAgB;AACxC,oBAAc,KAAK,YAAY,MAAM;AACrC,YAAM,eAAc,KAAK;AAEzB,YAAM,QAAQ,YAAY,KAAK,OAAO,EAAE,MAAM;AAE9C,YAAM,gBAAgB,MAAM,KAAK,gBAAgB;AAEjD,YAAM,iBAAiB,MAAM,KAAK,iBAAiB;AACnD,YAAM,UAAU,KAAK,SAAS,SAAS;AACvC,WAAK,aAAa;AAClB,WAAK,UAAU,wBAAwB,cAAc,eAAe,gBAAgB,OAAO,EAAE,KAAK,MAAM;AACtG,sBAAc,KAAK,YAAY,IAAI;AAEnC,cAAM,cAAc,EAAE,SAAS;AAC/B,cAAM,gBAAgB,EAAE,WAAW;AACnC,cAAM,oBAAoB,YAAY,QAAQ,YAAY;AAC1D,sBAAc,IAAI,EAAE,OAAO,kBAAkB,CAAC;AAU9C,UAAE,4BAA4B,EAAE,QAAQ;AAExC,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,kCAAkC,OAAO;AACvC,YAAM,eAAe;AAErB,WAAK,8BAA8B,MAAM;AAAA,IAC3C;AAAA;AAAA;AAAA;AAAA,IAKA,mCAAmC,OAAO;AACxC,YAAM,eAAe;AAErB,WAAK,8BAA8B,OAAO;AAAA,IAC5C;AAAA;AAAA;AAAA;AAAA,IAKA,8BAA8B,WAAW;AACvC,YAAMA,QAAO;AACb,WAAK,mBAAmB,CAAC;AAEzB,YAAM,eAAc,KAAK;AAEzB,YAAM,cAAc,EAAE,iBAAiB;AACvC,YAAM,QAAQ,YAAY,KAAK,OAAO,EAAE,MAAM;AAC9C,YAAM,gBAAgB,MAAM,KAAK,gBAAgB;AACjD,YAAM,gBAAgB,MAAM,KAAK,gBAAgB;AACjD,YAAM,iBAAiB,MAAM,KAAK,iBAAiB,KAAK;AACxD,YAAM,gBAAgB,EAAE,gBAAgB;AACxC,YAAM,UAAU,KAAK,SAAS,SAAS;AACvC,oBAAc,KAAK,YAAY,MAAM;AACrC,WAAK,aAAa;AAClB,WAAK,UAAU,mCAAmC,cAAc,eAAe,eAAe,gBAAgB,WAAW,OAAO,EAAE,KAAK,MAAM;AAC3I,sBAAc,KAAK,YAAY,IAAI;AAEnC,cAAM,cAAc,EAAE,SAAS;AAC/B,cAAM,gBAAgB,EAAE,WAAW;AACnC,cAAM,oBAAoB,YAAY,QAAQ,YAAY;AAC1D,sBAAc,IAAI,EAAE,OAAO,kBAAkB,CAAC;AAC9C,UAAE,4BAA4B,EAAE,QAAQ;AAExC,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAGA,uBAAuB,OAAO;AAC5B,YAAM,eAAe;AACrB,YAAM,gBAAgB,EAAE,kBAAkB;AAC1C,YAAM,YAAY,EAAE,8BAA8B,aAAa,EAAE,KAAK;AAGtE,QAAE,yCAAyC,aAAa,EAAE,SAAS,QAAQ;AAC3E,gBAAU,QAAQ,EAAE,MAAM,GAAE,CAAC,EAAE,YAAY,QAAQ;AAEnD,WAAK,oBAAoB,MAAM;AAAA,IACjC;AAAA,IAEA,wBAAwB,OAAO;AAC7B,YAAM,eAAe;AACrB,YAAM,gBAAgB,EAAE,kBAAkB;AAC1C,YAAM,WAAW,EAAE,4BAA4B,aAAa;AAC5D,eAAS,SAAS,QAAQ;AAC1B,YAAM,cAAc,SAAS;AAE7B,UAAI,wBAAwB,cAAc;AAC1C,UAAI,yBAAyB,GAAE;AAC7B,gCAAwB;AAAA,MAC1B;AAEA,YAAM,YAAY,SAAS,MAAM,cAAc,uBAAuB,WAAW;AAEjF,gBAAU,YAAY,QAAQ;AAE9B,WAAK,oBAAoB,KAAK;AAAA,IAChC;AAAA,IAEA,yBAAyB,OAAO;AAC9B,YAAM,eAAe;AACrB,YAAM,gBAAgB,EAAE,kBAAkB;AAC1C,YAAM,aAAa,EAAE,yCAAyC,aAAa,EAAE,MAAM;AAGnF,QAAE,yCAAyC,aAAa,EAAE,SAAS,QAAQ;AAC3E,YAAM,iBAAiB,WAAW,QAAQ;AAE1C,YAAM,YAAY,eAAe,MAAM,GAAE,CAAC;AAG1C,YAAM,iBAAiB,UAAU;AACjC,UAAI,iBAAiB,GAAG;AACtB,UAAE,MAAM,WAAU,WAAW,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAI,IAAI,cAAe,CAAC;AAAA,MACjF;AACA,gBAAU,YAAY,QAAQ;AAE9B,WAAK,oBAAoB,IAAI;AAAA,IAC/B;AAAA,IAEA,0BAA0B,OAAO;AAC/B,YAAM,eAAe;AACrB,YAAM,gBAAgB,EAAE,kBAAkB;AAC1C,YAAM,WAAW,EAAE,4BAA4B,aAAa;AAC5D,eAAS,SAAS,QAAQ;AAC1B,YAAM,YAAY,SAAS,MAAM,GAAE,CAAC;AAEpC,gBAAU,YAAY,QAAQ;AAE9B,WAAK,oBAAoB,OAAO;AAAA,IAClC;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,oBAAoB,KAAK;AACvB,UAAI,cAAc,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC;AAEpD,UAAI,WAAW,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;AAE9C,cAAQ,KAAK;AAAA,QACX,KAAK;AACH,yBAAe;AACf;AAAA,QACF,KAAK;AACH,yBAAe;AACf;AAAA,QACF,KAAK;AACH,wBAAc;AACd;AAAA,QACF,KAAK;AACH,wBAAc;AACd;AAAA,MACJ;AACA,QAAE,eAAe,EAAE,KAAK,WAAW;AAEnC,UAAI,eAAe,GAAG;AACpB,UAAE,oCAAoC,EAAE,KAAK,YAAY,IAAI;AAC7D,UAAE,kCAAkC,EAAE,KAAK,YAAY,KAAK;AAAA,MAC9D,WAAW,eAAe,UAAU;AAElC,UAAE,kCAAkC,EAAE,KAAK,YAAY,IAAI;AAC3D,UAAE,oCAAoC,EAAE,KAAK,YAAY,KAAK;AAAA,MAChE,OAAO;AACL,UAAE,+BAA+B,EAAE,KAAK,YAAY,KAAK;AAAA,MAC3D;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB,OAAO;AAC9B,YAAM,eAAe;AACrB,WAAK,aAAa;AAElB,UAAI,aAAa,CAAC;AAClB,QAAE,qBAAqB,EAAE,KAAK,SAAUC,QAAO;AAC7C,mBAAW,EAAE,IAAI,EAAE,KAAK,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK;AAAA,MACtD,CAAC;AAED,WAAK,UAAU,yBAAyB,KAAK,mBAAmB,KAAK,kBAAkB,UAAU,EAAE,KAAK,MAAM;AAC5G,UAAE,kBAAkB,EAAE,MAAM,MAAM;AAClC,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,YAAM,YAAY,EAAE,MAAM,aAAa;AACvC,YAAM,YAAY,UAAU,IAAI;AAEhC,UAAI,UAAU,KAAK,SAAS,GAAG;AAE7B,aAAK,iBAAiB,KAAK,UAAU,IAAI,CAAC;AAC1C,UAAE,2BAA2B,EAAE,KAAK,YAAY,KAAK;AAAA,MACvD,OAAO;AAEL,cAAMA,SAAQ,KAAK,iBAAiB,QAAQ,SAAS;AACrD,aAAK,iBAAiB,OAAOA,QAAO,CAAC;AACrC,YAAI,KAAK,iBAAiB,UAAU,GAAG;AACrC,YAAE,2BAA2B,EAAE,KAAK,YAAY,IAAI;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,OAAO;AAC1B,YAAMD,QAAO;AACb,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,MAAAA,MAAK,WAAW,aAAaA,MAAK,aAAa;AAC/C,MAAAA,MAAK,aAAa;AAClB,WAAK,UAAU,iCAAiC,MAAM,aAAa,EAAE,KAAK,aAAW;AAEnF,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,OAAO;AAC7B,YAAMA,QAAO;AACb,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,MAAAA,MAAK,aAAa;AAClB,eAAS,cAAc,IAAI,YAAY,yBAAyB,CAAC;AACjE,WAAK,UAAU,yCAAyC,KAAK,mBAAmB,KAAK,aAAa,EAAE,KAAK,aAAW;AAClH,QAAAA,MAAK,YAAY;AACjB,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,gCAAgC,OAAO;AACrC,YAAMA,QAAO;AACb,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,MAAAA,MAAK,aAAa;AAClB,eAAS,cAAc,IAAI,YAAY,yBAAyB,CAAC;AACjE,WAAK,UAAU,kDAAkD,KAAK,iBAAiB,EAAE,KAAK,aAAW;AACvG,QAAAA,MAAK,YAAY;AACjB,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC;AAAA,IACH;AAAA,EAEF;AAlpBE,gBAFK,2BAEE,UAAS;AAAA,IACd,MAAM;AAAA,IACN,cAAc;AAAA,IACd,WAAW;AAAA,IACX,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,EACZ;;;ACbF;AAAA;AAAA;AAAA;AAAA;AAGA,MAAO,gCAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AAgFE;AAAA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AAAA;AAAA;AAAA,IAtGA,UAAU;AACR,YAAM,QAAQ;AACd,YAAMM,QAAO;AACb,eAAS,gBAAgB,iBAAiB,8BAA8B,CAAC,UAAU;AAVvF;AAWM,6BAAAA,OAAK,8BAAL,SAAkB,OAAOA;AAAA,MAC3B,CAAC;AAED,UAAG,KAAK,mBAAmB;AACzB,aAAK,WAAW,qBAAS,OAAO,KAAK,gBAAgB;AAAA,UACnD,WAAW;AAAA,UACX,OAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,WAAW,OAAO;AAChB,YAAM,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,mCAAmC;AAC/E,YAAM,UAAU,MAAM,OAAO,KAAK;AAClC,cAAQ,KAAK,KAAK,EAAE,SAAS,QAAQ;AACrC,YAAM,MAAM,QAAQ,KAAK,kBAAkB;AAC3C,UAAG,IAAI,UAAU,GAAG;AAClB,cAAMC,OAAM,SAAS,cAAc,KAAK;AACxC,QAAAA,KAAI,MAAM;AACV,UAAEA,IAAG,EAAE,SAAS,cAAc;AAC9B,UAAE,OAAO,EAAE,OAAOA,IAAG;AAAA,MACvB;AACA,QAAE,GAAG,EAAE,YAAY,QAAQ;AAC3B,QAAE,GAAG,EAAE,KAAK,OAAO,OAAO;AAAA,IAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,OAAO;AAClB,YAAM,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,mCAAmC;AAC/E,cAAQ,KAAK,wBAAwB,EAAE,YAAY,QAAQ;AAC3D,cAAQ,KAAK,eAAe,EAAE,SAAS,QAAQ;AAAA,IACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,QAAQ,OAAO;AACb,UAAG,KAAK,mBAAkB;AACxB,UAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,CAACC,QAAO,SAAS;AAC/D,gBAAM,SAAS,EAAE,IAAI,EAAE,KAAK,QAAQ;AACpC,gBAAMC,YAAWD,SAAQ;AACzB,eAAK,QAAQ,GAAGC,aAAY,QAAQ;AACpC,YAAE,MAAM,EAAE,KAAK,oBAAoB,EAAE,IAAIA,SAAQ;AAAA,QACnD,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,SAAS,OAAO;AACd,YAAM,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,QAAQ;AACnD,WAAK,QAAQ,MAAM;AACnB,4BAAK,0CAAL;AACA,QAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,YAAY,QAAQ;AACjD,4BAAK,wDAAL,WAA+B,MAAM;AAAA,IACvC;AAAA,EAsCF;AAhCE;AAAA,gCAAyB,SAAC,eAAe;AACvC,QAAG,KAAK,mBAAmB;AACzB,QAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,YAAY,cAAc;AAAA,IACvE;AACA,MAAE,aAAa,EAAE,SAAS,cAAc;AAAA,EAC1C;AAQA;AAAA,mBAAY,SAAC,OAAOH,OAAM;AAhG5B;AAkGI,UAAM,eAAe,MAAM,OAAO,UAAU,WAAW,OAAO;AAC9D,IAAAA,MAAK,QAAQ,YAAY;AACzB,QAAG,iBAAiBA,MAAK,gBAAgB,IAAI;AAC3C;AAAA,IACF;AACA,yBAAAA,OAAK,0CAAL;AAAA,EACF;AAKA;AAAA,yBAAkB,WAAG;AACnB,QAAG,KAAK,oBAAoB;AAC1B,QAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,YAAY,cAAc;AACvE,QAAE,KAAK,gBAAgB,EAAE,SAAS,QAAQ;AAAA,IAC5C;AAAA,EACF;AA7GA,gBAFK,+BAEE,WAAU,CAAC,aAAa,YAAY,WAAW;;;ACLxD;AAAA;AAAA;AAAA;AAAA;AAGA,MAAO,gCAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AAoDE;AAAA;AAAA;AAAA;AAwEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA;AAAA;AAAA;AAAA;AAkGA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAM;AAsBN;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAM;AA0BN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAM;AAkBN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAM;AAcN;AAAA;AAAA;AAAA;AASA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AAAA;AAcA;AAAA;AAAA;AAAA;AAcA;AAAA;AAAA;AAAA;AASA;AAAA;AAAA;AAAA;AAMA,yBAAM;AAwBN,yBAAM;AAON;AAQA;AAKA,yBAAM;AAaN;AAUA;AAOA;AAMA;AAmBA;AAMA;AASA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA7hBA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,cAAc;AAEnB,WAAK,sBAAsB;AAC3B,WAAK,gBAAgB;AACrB,WAAK,sBAAsB;AAC3B,WAAK,aAAa;AAElB,WAAK,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,KAAK;AAE1D,WAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,KAAK;AAEhE,WAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,KAAK;AAE5D,WAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,mBAAmB,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE;AAEnG,WAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,wBAAwB;AAEnE,WAAK,QAAQ,aAAa,KAAK,UAAU;AACzC,WAAK,QAAQ,oBAAoB,KAAK,gBAAgB;AACtD,WAAK,QAAQ,cAAc,KAAK,WAAW;AAC3C,WAAK,QAAQ,gBAAgB,KAAK,YAAY;AAE9C,4BAAK,kBAAL;AAAA,IACF;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,UAAG,KAAK,UAAU;AAChB,aAAK,eAAe;AAAA,MACtB,OAAO;AACL,8BAAK,wCAAL;AACA,8BAAK,sDAAL;AAAA,MACF;AAAA,IACF;AAAA,IAEA,aAAa;AACX,UAAG,KAAK,QAAQ,QAAQ,mBAAmB,QAAQ;AACjD;AAAA,MACF;AAEA,WAAK,eAAe;AAAA,IACtB;AAAA;AAAA;AAAA;AAAA;AAAA,IA6BA,eAAe,OAAO;AACpB,UAAG,KAAK,iBAAiB,KAAK,uBAAuB,sBAAK,kCAAL,YAAuB;AAC1E;AAAA,MACF;AAEA,WAAK,sBAAsB,WAAW,MAAM;AAC1C,aAAK,sBAAsB;AAC3B,8BAAK,wCAAL;AACA,aAAK,aAAa;AAClB,aAAK,QAAQ,iBAAiB;AAAA,MAChC,GAAG,GAAG;AAAA,IACR;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe;AACb,4BAAK,sDAAL;AACA,YAAM,+BAA+B,sBAAK,gEAAL,WAAmC,KAAK,uBAAuB;AACpG,4BAAK,4CAAL;AACA,WAAK,gBAAgB,WAAW,YAAY;AAC1C,aAAK,gBAAgB;AACrB,cAAM,KAAK,UAAU;AAErB,YAAG,sBAAK,kCAAL,YAAuB;AACxB,eAAK,QAAQ;AAAA,QACf,OAAO;AACL,eAAK,aAAa;AAAA,QACpB;AAAA,MACF,GAAG,sBAAK,gEAAL,WAAmC,sBAAK,oDAAL,cAAkC,4BAA4B;AAAA,IACtG;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU;AACR,4BAAK,4CAAL;AACA,iBAAW,MAAM;AACf,8BAAK,oCAAL;AAAA,MACF,GAAG,sBAAK,gEAAL,WAAmC,sBAAK,wDAAL,WAAiC;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA;AAAA,IA8BA,eAAe,OAAO;AACpB,4BAAK,gDAAL;AACA,4BAAK,wCAAL;AACA,UAAG,KAAK,qBAAqB;AAC3B,qBAAa,KAAK,mBAAmB;AACrC,aAAK,sBAAsB;AAAA,MAC7B;AACA,UAAG,KAAK,eAAe;AACrB,qBAAa,KAAK,aAAa;AAC/B,aAAK,gBAAgB;AACrB,aAAK,QAAQ,iBAAiB;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,iBAAiB,OAAO;AACtB,WAAK,eAAe;AACpB,4BAAK,sCAAL,WAAsB,KAAK,aAAa,GAAG,KAAK,MAAM;AACpD,YAAG,KAAK,UAAU;AAChB,eAAK,eAAe;AAAA,QACtB;AAAA,MACF,CAAC;AACD,4BAAK,8BAAL;AAAA,IACF;AAAA,IAEA,MAAM,YAAY,OAAO;AACvB,YAAM,eAAe;AAErB,YAAM,eAAe,sBAAK,gCAAL;AACrB,UAAG,CAAC,gBAAgB,CAAC,sBAAK,4CAAL,WAAyB,eAAe;AAC3D,8BAAK,kDAAL;AACA;AAAA,MACF;AAEA,UAAG,CAAC,aAAa,QAAQ;AACvB,aAAK,aAAa;AAClB,cAAM,sBAAK,gDAAL;AACN,8BAAK,kDAAL,WAA4B;AAC5B;AAAA,MACF;AAEA,WAAK,aAAa;AAClB,YAAM,sBAAK,sDAAL;AAAA,IACR;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,UAAU,OAAO;AACrB,UAAG,sBAAK,kCAAL,YAAuB;AACxB;AAAA,MACF;AAEA,UAAG,KAAK,kBAAkB;AACxB;AAAA,MACF;AAEA,4BAAK,gCAAL,WAAmB,KAAK,cAAc;AAGtC,YAAM,sBAAK,sCAAL,WAAsB,KAAK,aAAa,KAAK,cAAc;AAEjE,YAAM,sBAAK,sDAAL;AAAA,IACR;AAAA,IAEA,MAAM,cAAc,OAAO;AACzB,UAAG,sBAAK,sCAAL,YAAyB;AAC1B;AAAA,MACF;AAEA,UAAG,KAAK,kBAAkB;AACxB;AAAA,MACF;AAGA,YAAM,sBAAK,sCAAL,WAAsB,KAAK,aAAa,KAAK,cAAc;AAEjE,YAAM,sBAAK,sDAAL;AAAA,IACR;AAAA,EA+TF;AAhfE;AAAA,aAAM,WAAG;AACP,QAAG,KAAK,eAAe;AACrB,QAAE,KAAK,WAAW,EAAE,KAAK,CAACI,QAAO,SAAS;AACxC,UAAE,IAAI,EAAE,YAAY,YAAY,EAAE,YAAY,cAAc;AAC5D,YAAGA,WAAU,KAAK,aAAa;AAC7B,YAAE,IAAI,EAAE,SAAS,YAAY;AAAA,QAC/B,OAAO;AACL,YAAE,IAAI,EAAE,SAAS,cAAc;AAAA,QACjC;AAAA,MACF,CAAC;AAAA,IACH;AACA,0BAAK,4CAAL;AACA,0BAAK,oCAAL;AACA,0BAAK,4CAAL;AACA,0BAAK,sDAAL;AACA,QAAG,CAAC,sBAAK,kCAAL,YAAuB;AACzB,4BAAK,8BAAL;AAAA,IACF;AAAA,EACF;AAsDA;AAAA,gCAAyB,WAAG;AAC1B,QAAG,CAAC,KAAK,UAAU;AACjB,YAAM,qBAAqB,sBAAK,gEAAL;AAC3B,UAAG,oBAAoB;AACrB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,WAAO,sBAAK,oDAAL;AAAA,EACT;AAKA;AAAA,oCAA6B,WAAG;AAC9B,UAAM,OAAO,KAAK,YAAY,KAAK,WAAW;AAC9C,WAAO,EAAE,IAAI,EAAE,KAAK,gBAAgB;AAAA,EACtC;AA+FM;AAAA,uBAAgB,eAAC,SAASC,OAAM;AAEpC,QAAG,KAAK,eAAc;AACpB,YAAM,YAAYA,QAAO,UAAU,YAAY;AAC/C,4BAAK,oDAAL;AACA,YAAM,sBAAK,gDAAL;AACN,WAAK,cAAcA;AACnB,4BAAK,4CAAL;AACA,4BAAK,oCAAL;AACA,4BAAK,4CAAL;AACA,4BAAK,sDAAL;AACA,YAAM,QAAQ,IAAI;AAAA,QAChB,sBAAK,oCAAL,WAAqB,KAAK,YAAY,OAAO,GAAG;AAAA,QAChD,sBAAK,kCAAL,WAAoB,KAAK,YAAYA,KAAI,GAAG;AAAA,MAC9C,CAAC;AACD,4BAAK,sCAAL;AAAA,IACF;AAAA,EACF;AAKA;AAAA,8BAAuB,WAAG;AACxB,UAAM,OAAO,KAAK,YAAY,KAAK,WAAW;AAC9C,UAAM,eAAe,EAAE,IAAI,EAAE,KAAK,gBAAgB;AAClD,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AAQM;AAAA,oBAAa,eAAC,MAAM;AACxB,QAAG,QAAQ,KAAK,YAAY;AAC1B;AAAA,IACF;AAGA,QAAG,KAAK,YAAY,UAAU,KAAK,YAAY;AAC7C;AAAA,IACF;AAEA,QAAG,KAAK,gBAAgB;AACtB,YAAMC,YAAY,MAAM,IAAI,KAAK,KAAK,cAAc,EAAE,OAAO,OAAO,EAAE,KAAW,CAAC;AAElF,YAAM,cAAc,EAAEA,UAAS,WAAW,MAAM,EAAE,CAAC;AACnD,kBAAY,SAAS,cAAc;AACnC,QAAE,KAAK,OAAO,EAAE,OAAO,WAAW;AAAA,IACpC;AAAA,EACF;AASM;AAAA,sBAAe,eAAC,MAAM,WAAU;AACpC,UAAM,QAAQ,EAAE,IAAI;AACpB,UAAM,mBAAmB,cAAc,YAAY,wBAAwB;AAC3E,UAAM,YAAY,uFAAuF;AACzG,UAAM,SAAS,gBAAgB;AAC/B,MAAE,IAAI,EAAE,IAAI,sBAAsB,GAAG,KAAK,sBAAsB;AAChE,MAAE,IAAI,EAAE,YAAY,YAAY;AAChC,MAAE,IAAI,EAAE,SAAS,cAAc;AAC/B,WAAO,IAAI,QAAQ,CAACC,UAASC,OAAM,WAAW,MAAMD,SAAQ,GAAG,sBAAK,gEAAL,WAAmC,KAAK,oBAAoB,CAAC;AAAA,EAC9H;AASM;AAAA,qBAAc,eAAC,MAAM,WAAU;AACnC,UAAM,QAAQ,EAAE,IAAI;AACpB,UAAM,mBAAmB,cAAc,YAAY,2BAA2B;AAC9E,UAAM,YAAY,uFAAuF;AACzG,UAAM,SAAS,gBAAgB;AAC/B,MAAE,IAAI,EAAE,IAAI,sBAAsB,GAAG,KAAK,sBAAsB;AAChE,MAAE,IAAI,EAAE,YAAY,cAAc;AAClC,MAAE,IAAI,EAAE,SAAS,YAAY;AAC7B,WAAO,IAAI,QAAQ,CAACA,UAASC,OAAM,WAAW,MAAMD,SAAQ,GAAG,sBAAK,gEAAL,WAAmC,KAAK,oBAAoB,CAAC;AAAA,EAC9H;AAKA;AAAA,0BAAmB,WAAG;AACpB,QAAG,KAAK,eAAe;AACrB,QAAE,KAAK,UAAU,EAAE,KAAK,GAAG,KAAK,cAAc,KAAK,KAAK,YAAY;AAAA,IACtE;AAAA,EACF;AAKA;AAAA,uBAAgB,WAAG;AACjB,0BAAK,kDAAL;AACA,QAAG,sBAAK,kCAAL,YAAuB;AACxB,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAKA;AAAA,0BAAmB,WAAG;AACpB,QAAG,KAAK,sBAAsB;AAC5B,UAAG,sBAAK,sCAAL,YAAyB;AAC1B,UAAE,KAAK,iBAAiB,EAAE,SAAS,QAAQ;AAAA,MAC7C,OAAO;AACL,UAAE,KAAK,iBAAiB,EAAE,YAAY,QAAQ;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AAKA;AAAA,sBAAe,WAAG;AAChB,QAAG,KAAK,kBAAkB;AACxB,UAAG,sBAAK,kCAAL,YAAuB;AACxB,UAAE,KAAK,aAAa,EAAE,SAAS,QAAQ;AAAA,MACzC,OAAO;AACL,UAAE,KAAK,aAAa,EAAE,YAAY,QAAQ;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAKA;AAAA,8BAAuB,WAAG;AACxB,SAAK,QAAQ,sBAAsB;AACnC,SAAK,mBAAmB;AACxB,QAAG,KAAK,kBAAkB;AACxB,QAAE,KAAK,aAAa,EAAE,SAAS,UAAU;AAAA,IAC3C;AACA,QAAG,KAAK,sBAAsB;AAC5B,QAAE,KAAK,iBAAiB,EAAE,SAAS,UAAU;AAAA,IAC/C;AAAA,EACF;AAKA;AAAA,6BAAsB,WAAG;AACvB,SAAK,QAAQ,qBAAqB;AAClC,SAAK,mBAAmB;AACxB,QAAG,KAAK,kBAAkB;AACxB,QAAE,KAAK,aAAa,EAAE,YAAY,UAAU;AAAA,IAC9C;AACA,QAAG,KAAK,sBAAsB;AAC5B,QAAE,KAAK,iBAAiB,EAAE,YAAY,UAAU;AAAA,IAClD;AAAA,EACF;AAKA;AAAA,sBAAe,WAAG;AAChB,QAAG,KAAK,kBAAiB;AACvB,QAAE,KAAK,aAAa,EAAE,YAAY,QAAQ;AAAA,IAC5C;AAAA,EACF;AAKA;AAAA,mBAAY,WAAG;AACb,QAAG,KAAK,kBAAiB;AACvB,QAAE,KAAK,aAAa,EAAE,SAAS,QAAQ;AAAA,IACzC;AAAA,EACF;AAEM;AAAA,+BAAwB,iBAAG;AAC/B,UAAM,eAAe,sBAAK,gCAAL;AACrB,QAAG,CAAC,gBAAgB,CAAC,sBAAK,4CAAL,WAAyB,eAAe;AAC3D,4BAAK,kDAAL;AACA;AAAA,IACF;AAEA,QAAG,KAAK,YAAY;AAClB,4BAAK,kDAAL,WAA4B;AAC5B;AAAA,IACF;AAEA,QAAG,aAAa,cAAc,GAAG;AAC/B,YAAM,sBAAK,gDAAL,WAA2B;AAAA,IACnC,OAAO;AACL,mBAAa,iBAAiB,cAAc,YAAa;AACvD,YAAG,sBAAK,gCAAL,eAAyB,cAAc;AACxC;AAAA,QACF;AACA,cAAM,sBAAK,gDAAL,WAA2B;AAAA,MACnC,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,IACnB;AAAA,EACF;AAEM;AAAA,4BAAqB,iBAAG;AAC5B,UAAM,eAAe,sBAAK,gCAAL;AACrB,QAAG,gBAAgB,CAAC,aAAa,QAAQ;AACvC,YAAM,aAAa,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA;AAAA,oBAAa,WAAG;AACd,QAAG,CAAC,KAAK,gBAAgB;AACvB,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,aAAa,KAAK,WAAW;AAAA,EAC3C;AAEA;AAAA,0BAAmB,SAAC,OAAO;AACzB,UAAM,SAAS,MAAM,cAAc,QAAQ;AAC3C,WAAO,UAAU,OAAO,aAAa,KAAK;AAAA,EAC5C;AAEM;AAAA,4BAAqB,eAAC,OAAO;AACjC,QAAI;AACF,YAAM,MAAM,KAAK;AACjB,4BAAK,kDAAL,WAA4B;AAAA,IAC9B,SAAQE,QAAN;AACA,UAAGA,OAAM,SAAS,mBAAmB;AACnC,8BAAK,kDAAL,WAA4B;AAAA,MAC9B,OAAO;AACL,aAAK,WAAW,0BAA0BA,OAAM,SAAS;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AAEA;AAAA,+BAAwB,WAAG;AACzB,UAAM,eAAe,sBAAK,gCAAL;AACrB,QAAG,CAAC,gBAAgB,CAAC,sBAAK,4CAAL,WAAyB,eAAe;AAC3D,4BAAK,kDAAL;AACA;AAAA,IACF;AAEA,0BAAK,kDAAL,WAA4B,KAAK,cAAc,aAAa,SAAS,eAAe;AAAA,EACtF;AAEA;AAAA,6BAAsB,SAAC,MAAM;AAC3B,QAAG,KAAK,yBAAyB;AAC/B,QAAE,KAAK,oBAAoB,EAAE,YAAY,QAAQ;AACjD,WAAK,qBAAqB,cAAc;AAAA,IAC1C;AAAA,EACF;AAEA;AAAA,6BAAsB,WAAG;AACvB,QAAG,KAAK,yBAAyB;AAC/B,QAAE,KAAK,oBAAoB,EAAE,SAAS,QAAQ;AAAA,IAChD;AAAA,EACF;AAEA;AAAA,0BAAmB,WAAG;AACpB,QAAG,KAAK,mBAAmB;AACzB,YAAM,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB;AACnE,YAAM,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB;AACrE,YAAMC,YAAW,sBAAK,oDAAL,aAAiC;AAClD,mBAAa,IAAI,kBAAkB,MAAM;AACzC,oBAAc,IAAI,kBAAkB,MAAM;AAC1C,mBAAa,IAAI,sBAAsB,EAAE;AACzC,oBAAc,IAAI,sBAAsB,EAAE;AAC1C,iBAAW,MAAM;AACf,qBAAa,IAAI,kBAAkB,EAAE;AACrC,sBAAc,IAAI,kBAAkB,EAAE;AACtC,qBAAa,IAAI,sBAAsB,GAAGA,YAAW;AACrD,sBAAc,IAAI,mBAAmB,GAAGA,YAAW;AACnD,sBAAc,IAAI,sBAAsB,GAAGA,YAAW;AAAA,MACxD,GAAG,sBAAK,gEAAL,WAAmC,KAAK,oBAAoB;AAAA,IACjE;AAAA,EACF;AAEA;AAAA,wBAAiB,WAAG;AAClB,QAAG,KAAK,mBAAmB;AACzB,QAAE,KAAK,cAAc,EAAE,SAAS,QAAQ;AAAA,IAC1C;AAAA,EACF;AAEA;AAAA,wBAAiB,WAAG;AAClB,QAAG,KAAK,mBAAmB;AACzB,QAAE,KAAK,cAAc,EAAE,YAAY,QAAQ;AAAA,IAC7C;AAAA,EACF;AAKA;AAAA,uBAAgB,WAAG;AACjB,WAAO,KAAK,eAAe;AAAA,EAC7B;AAKA;AAAA,qBAAc,WAAG;AACf,WAAO,KAAK,eAAe,KAAK,aAAa;AAAA,EAC/C;AAMA;AAAA,oCAA6B,SAAC,eAAe;AAC3C,WAAO,gBAAgB;AAAA,EACzB;AAjiBA,gBAFK,+BAEE,WAAU,CAAC,QAAQ,QAAQ,eAAe,WAAW,WAAW,SAAS,YAAY,gBAAgB;;;ACL9G;AAAA;AAAA;AAAA;AAGA,MAAO,iCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AACxC,WAAK,sBAAsB,CAAC;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAAO;AACZ,WAAK,aAAa;AAClB,YAAM,YAAY,EAAE,MAAM,aAAa,EAAE,KAAK,SAAS;AACvD,cAAQ,IAAI,eAAe,SAAS;AACpC,WAAK,MAAM,aAAa,cAAc,WAAW,KAAK;AACtD,WAAK;AAAA,QACH;AAAA,QACA;AAAA,MACF,EAAE,KAAK,MAAM;AACX,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,8BAA8B,OAAO;AACnC,WAAK,aAAa;AAClB,YAAM,aAAa,EAAE,MAAM,aAAa,EAAE,KAAK,SAAS;AAExD,WAAK;AAAA,QACH;AAAA,QACA;AAAA,MACF,EAAE,KAAK,MAAM;AACX,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,OAAO;AACjB,WAAK,aAAa;AAClB,WAAK;AAAA,QACH;AAAA,QACA,MAAM;AAAA,MACR,EAAE,KAAK,MAAM;AACX,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,uBAAuB,OAAO;AAC5B,cAAQ,IAAI,6BAA6B;AACzC,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS,QAAQ,KAAK,SAAS;AACrC,YAAM,YAAY,QAAQ,KAAK,YAAY;AAC3C,WAAK,UAAU,8CAA8C,QAAQ,SAAS,EAAE,KAAK,MAAM;AACzF,UAAE,mBAAmB,EAAE,QAAQ,iBAAiB,sBAAsB,QAAQ;AAAA,MAChF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,OAAO;AAC1B,cAAQ,IAAI,2BAA2B;AACvC,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS,QAAQ,KAAK,SAAS;AACrC,YAAM,YAAY,QAAQ,KAAK,YAAY;AAC3C,WAAK,UAAU,4CAA4C,QAAQ,SAAS,EAAE,KAAK,MAAM;AACvF,UAAE,mBAAmB,EAAE,QAAQ,iBAAiB,sBAAsB,QAAQ;AAAA,MAChF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,wBAAwB,OAAO;AAC7B,YAAM,eAAe;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,UAAU,EAAE,MAAM;AACxB,YAAM,SAAS,KAAK,eAAe,QAAQ,QAAQ;AACnD,YAAM,YAAY,KAAK,eAAe,QAAQ,WAAW;AACzD,UAAI,CAAC,OAAO,UAAU,MAAM,KAAK,CAAC,OAAO,UAAU,SAAS,GAAG;AAC7D;AAAA,MACF;AACA,YAAM,QAAQ,KAAK,oBAAoB,SAAS,MAAM;AACtD,YAAM,8BAA8B,KAAK,eAAe,QAAQ,qBAAqB;AACrF,YAAM,sBAAsB,OAAO,UAAU,2BAA2B,IAAI,8BAA8B,MAAM;AAChH,YAAM,aAAa,MAAM,WAAW,SAAS,IAAI,MAAM,aAAa,CAAC,YAAY;AACjF,YAAM,YAAY;AAClB,YAAM,cAAc,KAAK,sBAAsB,QAAQ,MAAM,WAAW;AAExE,WAAK,aAAa;AAClB,WAAK,UAAU,oDAAoD,QAAQ,WAAW,YAAY,WAAW,qBAAqB,WAAW,EAAE,KAAK,MAAM;AACxJ,aAAK,YAAY;AACjB,aAAK,8BAA8B,MAAM;AACzC,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAChE,UAAE,mBAAmB,EAAE,QAAQ,iBAAiB,sBAAsB,QAAQ;AAAA,MAChF,CAAC,EAAE,MAAM,MAAM;AACb,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,OAAO;AACzB,cAAQ,IAAI,0BAA0B;AACtC,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS,QAAQ,KAAK,SAAS;AACrC,YAAM,YAAY,QAAQ,KAAK,YAAY;AAC3C,WAAK,UAAU,2CAA2C,QAAQ,SAAS,EAAE,KAAK,MAAM;AACtF,UAAE,mBAAmB,EAAE,QAAQ,iBAAiB,sBAAsB,QAAQ;AAAA,MAChF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,6BAA6B,OAAO;AAClC,cAAQ,IAAI,8CAA8C;AAC1D,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS,QAAQ,KAAK,SAAS;AACrC,YAAM,eAAe,QAAQ,KAAK,eAAe;AACjD,YAAM,kBAAkB,QAAQ,KAAK,mBAAmB;AACxD,WAAK,UAAU,6DAA6D,QAAQ,iBAAiB,YAAY,EAAE,KAAK,MAAM;AAAA,MAG9H,CAAC;AAAA,IACH;AAAA,IAEA,6BAA6B,OAAO;AAClC,cAAQ,IAAI,oCAAoC;AAChD,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS,QAAQ,KAAK,SAAS;AACrC,YAAM,eAAe,QAAQ,KAAK,eAAe;AACjD,YAAM,gBAAgB,QAAQ,KAAK,gBAAgB;AAEnD,WAAK,UAAU,qDAAqD,QAAQ,eAAe,YAAY,EAAE,KAAK,MAAM;AAClH,UAAE,oBAAoB,eAAe,EAAE,KAAK,kBAAkB,EAAE,KAAK,sBAAsB;AAC3F,cAAM,OAAO,QAAQ,QAAQ,IAAI;AACjC,cAAM,eAAc,oBAAI,KAAK,GAAE,mBAAmB;AAClD,aAAK,KAAK,uBAAuB,EAAE,KAAK,WAAW;AAAA,MACrD,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAMA,SAAS,OAAO;AACd,YAAM,eAAe;AAErB,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,SAAS,QAAQ,KAAK,SAAS;AACrC,eAAS,cAAc,IAAI,YAAY,yBAAyB,CAAC;AAEjE,WAAK,UAAU,oCAAoC,MAAM,EAAE,KAAK,MAAM;AACpE,gBAAQ,IAAI,iBAAiB,4BAA4B;AACzD,UAAE,aAAa,EAAE,KAAK;AACtB,UAAE,yBAAyB,EAAE,KAAK;AAClC,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAGlE,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,OAAO;AACvB,eAAS,cAAc,IAAI,YAAY,yBAAyB,CAAC;AACjE,QAAE,yBAAyB,EAAE,KAAK;AAClC,QAAE,aAAa,EAAE,KAAK;AACtB,eAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,IAClE;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,OAAO;AACtB,YAAM,eAAe;AACrB,cAAQ,IAAI,qBAAqB;AACjC,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,sBAAsB,QAAQ,KAAK,sBAAsB;AAE/D,cAAQ,QAAQ,SAAS;AAEzB,WAAK,UAAU,uCAAuC,mBAAmB,EAAE,KAAK,MAAM;AACpF,gBAAQ,IAAI,0BAA0B,0CAA0C;AAChF,UAAE,+CAA+C,EAAE,QAAQ,EAAE,UAAU,SAAS,CAAC;AAEjF,UAAE,oBAAoB,EAAE,MAAM,MAAM;AAAA,MACtC,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,mBAAmB,OAAO;AACxB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,MAAM,QAAQ,KAAK,KAAK;AAC9B,YAAM,SAAS,QAAQ,KAAK,SAAS;AACrC,YAAM,QAAQ,QAAQ,QAAQ,gCAAgC;AAC9D,YAAM,iBAAiB,MAAM,KAAK,aAAa,KAAK,IAAI,SAAS;AACjE,YAAM,aAAa,kBAAkB,KAAK,CAAC,IAAI,cAAc,MAAM,GAAG,EAAE,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,EAAE,OAAO,OAAO;AAEnH,UAAI,WAAW,SAAS,GAAG,GAAG;AAC5B;AAAA,MACF;AAEA,WAAK,aAAa;AAClB,WAAK,UAAU,+CAA+C,QAAQ,KAAK,UAAU,EAAE,KAAK,MAAM;AAChG,aAAK,YAAY;AACjB,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC,EAAE,MAAM,MAAM;AACb,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,qBAAqB,OAAO;AAC1B,YAAM,eAAe;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,UAAU,EAAE,MAAM;AACxB,YAAM,SAAS,KAAK,eAAe,QAAQ,QAAQ;AACnD,YAAM,cAAc,KAAK,eAAe,QAAQ,aAAa;AAC7D,UAAI,CAAC,OAAO,UAAU,MAAM,KAAK,CAAC,OAAO,UAAU,WAAW,GAAG;AAC/D;AAAA,MACF;AACA,YAAM,QAAQ,KAAK,oBAAoB,SAAS,MAAM;AACtD,YAAM,aAAa,MAAM,WAAW,SAAS,IAAI,MAAM,aAAa,CAAC,YAAY;AACjF,YAAM,YAAY;AAClB,WAAK,sBAAsB,QAAQ,CAAC,CAAC;AAErC,WAAK,aAAa;AAClB,WAAK,UAAU,mDAAmD,QAAQ,aAAa,YAAY,WAAW,CAAC,GAAG,IAAI,EAAE,KAAK,MAAM;AACjI,aAAK,YAAY;AACjB,aAAK,8BAA8B,MAAM;AACzC,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC,EAAE,MAAM,MAAM;AACb,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,0BAA0B,OAAO;AAC/B,YAAM,eAAe;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,UAAU,EAAE,MAAM;AACxB,YAAM,SAAS,KAAK,eAAe,QAAQ,QAAQ;AACnD,YAAM,cAAc,KAAK,eAAe,QAAQ,aAAa;AAC7D,YAAM,WAAW,KAAK,eAAe,QAAQ,UAAU;AACvD,UAAI,CAAC,OAAO,UAAU,MAAM,KAAK,CAAC,OAAO,UAAU,WAAW,KAAK,CAAC,OAAO,UAAU,QAAQ,GAAG;AAC9F;AAAA,MACF;AACA,YAAM,QAAQ,KAAK,oBAAoB,SAAS,MAAM;AACtD,YAAM,aAAa,MAAM,WAAW,SAAS,IAAI,MAAM,aAAa,CAAC,YAAY;AACjF,YAAM,YAAY;AAClB,YAAM,eAAe,KAAK,sBAAsB,QAAQ,MAAM,WAAW;AACzE,YAAM,cAAc,CAAC,GAAG,cAAc,QAAQ,EAAE,OAAO,CAAC,UAAU,OAAO,UAAU,KAAK,CAAC;AACzF,WAAK,sBAAsB,QAAQ,WAAW;AAE9C,WAAK,aAAa;AAClB,WAAK,UAAU,mDAAmD,QAAQ,aAAa,YAAY,WAAW,aAAa,QAAQ,EAAE,KAAK,MAAM;AAC9I,aAAK,YAAY;AACjB,aAAK,8BAA8B,MAAM;AACzC,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC,EAAE,MAAM,MAAM;AACb,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,qBAAqB,OAAO;AAC1B,YAAM,eAAe;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,UAAU,EAAE,MAAM;AACxB,YAAM,SAAS,KAAK,eAAe,QAAQ,QAAQ;AACnD,YAAM,WAAW,KAAK,eAAe,QAAQ,UAAU;AACvD,UAAI,CAAC,OAAO,UAAU,QAAQ,GAAG;AAC/B;AAAA,MACF;AACA,YAAM,QAAQ,KAAK,oBAAoB,SAAS,MAAM;AACtD,YAAM,aAAa,MAAM,WAAW,SAAS,IAAI,MAAM,aAAa,CAAC,YAAY;AACjF,YAAM,YAAY;AAClB,YAAM,cAAc,CAAC,GAAG,KAAK,sBAAsB,QAAQ,MAAM,WAAW,CAAC;AAC7E,kBAAY,IAAI;AAChB,WAAK,sBAAsB,QAAQ,WAAW;AAE9C,WAAK,aAAa;AAClB,WAAK,UAAU,mDAAmD,QAAQ,UAAU,YAAY,WAAW,aAAa,IAAI,EAAE,KAAK,MAAM;AACvI,aAAK,YAAY;AACjB,aAAK,8BAA8B,MAAM;AACzC,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC,EAAE,MAAM,MAAM;AACb,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,2BAA2B,OAAO;AAChC,YAAM,eAAe;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,UAAU,EAAE,MAAM;AACxB,YAAM,SAAS,KAAK,eAAe,QAAQ,QAAQ;AACnD,YAAM,cAAc,KAAK,eAAe,QAAQ,aAAa;AAC7D,UAAI,CAAC,OAAO,UAAU,MAAM,KAAK,CAAC,OAAO,UAAU,WAAW,GAAG;AAC/D;AAAA,MACF;AACA,YAAM,QAAQ,KAAK,oBAAoB,SAAS,MAAM;AACtD,YAAM,8BAA8B,KAAK,eAAe,QAAQ,qBAAqB;AACrF,YAAM,sBAAsB,OAAO,UAAU,2BAA2B,IAAI,8BAA8B,MAAM;AAChH,YAAM,aAAa,MAAM,WAAW,SAAS,IAAI,MAAM,aAAa,CAAC,YAAY;AACjF,YAAM,YAAY;AAClB,YAAM,cAAc,KAAK,sBAAsB,QAAQ,MAAM,WAAW;AAExE,WAAK,aAAa;AAClB,WAAK,UAAU,kDAAkD,QAAQ,aAAa,YAAY,WAAW,qBAAqB,WAAW,EAAE,KAAK,MAAM;AACxJ,aAAK,YAAY;AACjB,aAAK,8BAA8B,MAAM;AACzC,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC,EAAE,MAAM,MAAM;AACb,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,6BAA6B,OAAO;AAClC,YAAM,eAAe;AACrB,YAAM,SAAS,MAAM;AACrB,YAAM,SAAS,KAAK,eAAe,QAAQ,QAAQ;AACnD,YAAM,cAAc,KAAK,eAAe,QAAQ,aAAa;AAC7D,UAAI,CAAC,OAAO,UAAU,MAAM,KAAK,CAAC,OAAO,UAAU,WAAW,GAAG;AAC/D;AAAA,MACF;AAEA,YAAM,eAAe,SAAS,eAAe,iCAAiC,QAAQ;AACtF,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AACA,eAAS,iBAAiB,sEAAsE,EAAE,QAAQ,CAAC,iBAAiB;AAC1H,eAAO,aAAa,QAAQ;AAC5B,eAAO,aAAa,QAAQ;AAC5B,eAAO,aAAa,QAAQ;AAAA,MAC9B,CAAC;AACD,mBAAa,QAAQ,iBAAiB,OAAO,MAAM;AACnD,mBAAa,QAAQ,sBAAsB,OAAO,WAAW;AAC7D,mBAAa,QAAQ,kBAAkB;AACvC,YAAM,QAAQ,UAAU,MAAM,oBAAoB,YAAY;AAC9D,YAAM,KAAK;AAAA,IACb;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,+BAA+B;AAC7B,YAAM,eAAe,SAAS,cAAc,sEAAsE;AAClH,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AACA,YAAM,SAAS,KAAK,eAAe,cAAc,gBAAgB;AACjE,YAAM,cAAc,KAAK,eAAe,cAAc,qBAAqB;AAC3E,aAAO,aAAa,QAAQ;AAC5B,aAAO,aAAa,QAAQ;AAC5B,aAAO,aAAa,QAAQ;AAC5B,UAAI,CAAC,OAAO,UAAU,MAAM,KAAK,CAAC,OAAO,UAAU,WAAW,GAAG;AAC/D;AAAA,MACF;AACA,YAAM,QAAQ,EAAE,qBAAqB,QAAQ;AAC7C,YAAM,QAAQ,KAAK,oBAAoB,OAAO,MAAM;AAEpD,YAAM,aAAa,MAAM,WAAW,SAAS,IAAI,MAAM,aAAa,CAAC,YAAY;AACjF,YAAM,YAAY;AAClB,WAAK,sBAAsB,QAAQ,CAAC,CAAC;AACrC,WAAK,aAAa;AAClB,WAAK,UAAU,6CAA6C,QAAQ,aAAa,YAAY,SAAS,EAAE,KAAK,MAAM;AACjH,aAAK,YAAY;AACjB,iBAAS,cAAc,IAAI,YAAY,wBAAwB,CAAC;AAAA,MAClE,CAAC,EAAE,MAAM,MAAM;AACb,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,iBAAiB,OAAO;AACtB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,oBAAoB,SAAS,SAAS,MAAM;AAC1C,YAAM,eAAe,QAAQ,QAAQ,wCAAwC;AAC7E,YAAM,QAAQ,aAAa,SAAS,IAAI,eAAe,KAAK,mBAAmB,SAAS,MAAM;AAC9F,YAAM,cAAc,MAAM,IAAI,CAAC;AAC/B,UAAI,CAAC,aAAa;AAChB,eAAO;AAAA,UACL,YAAY,CAAC;AAAA,UACb,WAAW;AAAA,UACX,aAAa,CAAC;AAAA,UACd,qBAAqB;AAAA,QACvB;AAAA,MACF;AAEA,YAAM,iBAAiB,YAAY,QAAQ,cAAc,IAAI,SAAS;AACtE,YAAM,kBAAkB,YAAY,QAAQ,eAAe,IAAI,SAAS;AACxE,YAAM,sBAAsB,KAAK,eAAe,aAAa,qBAAqB;AAClF,YAAM,aAAa,kBAAkB,KAAK,CAAC,IAAI,cAAc,MAAM,GAAG,EAAE,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,EAAE,OAAO,OAAO;AACnH,YAAM,cAAc,mBAAmB,KAAK,CAAC,IAAI,eAAe,MAAM,GAAG,EAAE,IAAI,CAAC,UAAU,SAAS,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,UAAU,OAAO,UAAU,KAAK,CAAC;AACxJ,aAAO;AAAA,QACL;AAAA,QACA,YAAY,YAAY,QAAQ,aAAa,cAAc,SAAS;AAAA,QACpE;AAAA,QACA,qBAAqB,OAAO,UAAU,mBAAmB,IAAI,sBAAsB;AAAA,MACrF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,mBAAmB,SAAS,SAAS,MAAM;AACzC,YAAM,eAAe,QAAQ,QAAQ,gCAAgC;AACrE,UAAI,aAAa,SAAS,GAAG;AAC3B,eAAO;AAAA,MACT;AACA,UAAI,WAAW,QAAQ,WAAW,UAAa,WAAW,IAAI;AAC5D,cAAM,WAAW,SAAS,eAAe,oBAAoB,QAAQ;AACrE,YAAI,UAAU;AACZ,iBAAO,EAAE,QAAQ;AAAA,QACnB;AAAA,MACF;AACA,aAAO,EAAE;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,sBAAsB,QAAQ,gBAAgB,CAAC,GAAG;AAChD,YAAMC,OAAM,OAAO,MAAM;AACzB,UAAI,MAAM,QAAQ,KAAK,oBAAoBA,IAAG,CAAC,GAAG;AAChD,eAAO,CAAC,GAAG,KAAK,oBAAoBA,IAAG,CAAC;AAAA,MAC1C;AACA,aAAO,MAAM,QAAQ,aAAa,IAAI,CAAC,GAAG,aAAa,IAAI,CAAC;AAAA,IAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,sBAAsB,QAAQ,OAAO;AACnC,YAAMA,OAAM,OAAO,MAAM;AACzB,WAAK,oBAAoBA,IAAG,IAAI,MAAM,QAAQ,KAAK,IAAI,MAAM,OAAO,CAAC,UAAU,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC;AAAA,IAC7G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,8BAA8B,QAAQ;AACpC,YAAM,eAAe,SAAS,eAAe,6BAA6B,QAAQ;AAClF,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AACA,YAAM,QAAQ,UAAU,MAAM,oBAAoB,YAAY;AAC9D,YAAM,KAAK;AAAA,IACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,eAAe,QAAQA,MAAK;AAC1B,YAAM,MAAM,QAAQ,UAAUA,IAAG;AACjC,YAAM,QAAQ,OAAO,SAAS,KAAK,EAAE;AACrC,aAAO,OAAO,UAAU,KAAK,IAAI,QAAQ;AAAA,IAC3C;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY,OAAO;AACjB,UAAI,SAAS,MAAM;AAEnB,UAAI,iBAAiB,EAAE,MAAM,EAAE,KAAK,YAAY;AAChD,WAAK,aAAa,OAAO,OAAO,cAAc;AAAA,IAChD;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,MAAM,gBAAgB;AAGjC,YAAM,UAAU,EAAE,IAAI,4BAA4B;AAClD,cAAQ,YAAY,QAAQ;AAC5B,UAAI,SAAS,IAAI;AACf;AAAA,MACF;AACA,YAAM,kBAAkB,QAAQ,OAAO,WAAW;AAChD,cAAM,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK;AAEzC,eAAO,CAAC,KAAK,YAAY,EAAE,SAAS,KAAK,YAAY,CAAC;AAAA,MACxD,CAAC;AAED,sBAAgB,KAAK,WAAW;AAC9B,UAAE,IAAI,EAAE,SAAS,QAAQ;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,EAGF;;;AC3jBA;AAAA;AAAA;AAAA;AACA,0BAAsB;AAEtB,MAAO,6BAAP,cAA6B,sBAAsB;AAAA,IAKjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,oBAAoB;AAClB,WAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa;AAC7C,UAAI,KAAK,KAAK;AACZ,cAAM,oBAAoB,WAAY;AACpC,iBAAO;AAAA,YACL,gBAAgB;AAAA,cACd,SAAS,MAAM,MAAM;AAAA,YACvB;AAAA,UACF;AAAA,QACF;AACA,aAAK,gBAAY,kBAAAC,SAAU;AAAA,UACzB,KAAK,KAAK;AAAA,UACV,SAAS,KAAK;AAAA,UACd,SAAS;AAAA,YACP,kBAAAA,QAAU,QAAQ;AAAA,YAClB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AA9BE,gBADK,4BACE,UAAS;AAAA,IACd,MAAM;AAAA,EACR;;;ACNF;AAAA;AAAA;AAAA;AAGA,MAAO,4BAAP,cAA6B,sBAAsB;AAAA,IAIjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AAAA,IAC1C;AAAA,IAGA,OAAO,OAAO;AACZ,QAAE,KAAK,YAAY,EAAE,YAAY,YAAY;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,OAAO;AACjB,UAAI,UAAU,EAAE,MAAM,aAAa;AACnC,UAAI,aAAa,QAAQ,KAAK,SAAS;AAGvC,WAAK,MAAM,aAAa,YAAY,YAAY,KAAK;AACrD,WAAK,UAAU,8BAA8B;AAAA,IAC/C;AAAA,EAGF;AAzBE,gBAFK,2BAEE,WAAU,CAAC,OAAO;;;ACL3B;AAAA;AAAA;AAAA;AAEA,MAAO,sCAAP,cAA6B,sBAAsB;AAAA,IAGjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,YAAY;AACjB,UAAIC,QAAO;AACX,QAAE,QAAQ,EAAE;AAAA,QACV;AAAA,QACA;AAAA,QACA,SAAU,OAAO;AACf,UAAAA,MAAK,WAAW,IAAI;AAAA,QACtB;AAAA,MACF;AAEA,QAAE,QAAQ,EAAE;AAAA,QACV;AAAA,QACA;AAAA,QACA,SAAU,OAAO;AACf,UAAAA,MAAK,WAAW,IAAI;AAAA,QACtB;AAAA,MACF;AAEA,eAAS,SAAS;AAAA,QAChB;AAAA,MACF,GAAG;AACD,QAAAA,MAAK,WAAW,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,WAAWA,OAAM;AACf,UAAI,UAAU,EAAEA,KAAI,GAClB,YAAY,QAAQ,KAAK,WAAW,GACpC,SAAS,QAAQ,KAAK,SAAS;AAGjC,UAAI,QAAQ,QAAQ,IAAI;AAExB,UAAI,QAAQ,KAAK,MAAM,KAAK,YAAY;AACtC,gBAAQ,QAAQ,KAAK,SAAS;AAAA,MAChC;AAEA,UAAI,kBAAkB;AAAA,QACpB,mBAAmB,2BAA2B,wCAAwC,2BAA2B;AAAA,MACnH;AACA,UAAI,gBAAgB,GAAG,QAAQ,GAAG;AAChC,wBAAgB,IAAI,KAAK;AAAA,MAC3B,OAAO;AACL,wBAAgB,KAAK,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;;;ACrDA;AAAA;AAAA;AAAA;AAEA,MAAO,mCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,UAAU;AAGf,WAAK,+BAA+B,KAAK,wBAAwB,KAAK,IAAI;AAG1E,eAAS,iBAAiB,gBAAgB,KAAK,4BAA4B;AAC3E,eAAS,iBAAiB,sBAAsB,KAAK,4BAA4B;AAGjF,eAAS,iBAAiB,yBAAyB,KAAK,4BAA4B;AACpF,eAAS,iBAAiB,2BAA2B,KAAK,4BAA4B;AAAA,IACxF;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AACjB,eAAS,oBAAoB,gBAAgB,KAAK,4BAA4B;AAC9E,eAAS,oBAAoB,sBAAsB,KAAK,4BAA4B;AACpF,eAAS,oBAAoB,yBAAyB,KAAK,4BAA4B;AACvF,eAAS,oBAAoB,2BAA2B,KAAK,4BAA4B;AAAA,IAC3F;AAAA,IAEA,wBAAwB,OAAO;AAE7B,iBAAW,MAAM;AACf,YAAI,KAAK,WAAW,KAAK,QAAQ,aAAa;AAC5C,eAAK,UAAU;AAAA,QACjB;AAAA,MACF,GAAG,GAAG;AAAA,IACR;AAAA,IAEA,YAAY,OAAO;AACjB,YAAM,eAAe;AAErB,YAAM,cAAc,MAAM;AAC1B,YAAM,YAAY,YAAY,QAAQ,IAAI;AAC1C,YAAM,YAAY,UAAU,QAAQ;AAGpC,YAAM,cAAc,KAAK,QAAQ,cAAc,6BAA6B,aAAa;AACzF,YAAM,cAAc,KAAK,QAAQ,cAAc,6BAA6B,aAAa;AAEzF,UAAI,CAAC,eAAe,CAAC;AAAa;AAIlC,YAAM,sBAAsB,YAAY,UAAU,SAAS,QAAQ;AACnE,YAAM,eAAe;AAGrB,WAAK,mBAAmB,aAAa,aAAa,YAAY;AAG9D,WAAK,oBAAoB,WAAW,YAAY;AAGhD,WAAK,oBAAoB,WAAW,YAAY;AAGhD,WAAK,kBAAkB,WAAW,YAAY;AAG9C,WAAK,gBAAgB,WAAW,YAAY;AAG5C,WAAK,UAAU,WAAW,YAAY;AAAA,IACxC;AAAA,IAEA,mBAAmB,QAAQ,QAAQ,WAAW;AAC5C,UAAI,WAAW;AACb,eAAO,UAAU,OAAO,QAAQ;AAChC,eAAO,UAAU,IAAI,QAAQ;AAC7B,eAAO,QAAQ,YAAY;AAAA,MAC7B,OAAO;AACL,eAAO,UAAU,IAAI,QAAQ;AAC7B,eAAO,UAAU,OAAO,QAAQ;AAChC,eAAO,QAAQ,YAAY;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,oBAAoB,WAAW,WAAW;AACxC,YAAM,gBAAgB,KAAK,QAAQ,iBAAiB,oCAAoC,aAAa;AACrG,oBAAc,QAAQ,YAAU;AAC9B,eAAO,UAAU,OAAO,UAAU,CAAC,SAAS;AAAA,MAC9C,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB,WAAW,WAAW;AACtC,YAAM,WAAW,KAAK,QAAQ,iBAAiB,UAAU;AACzD,eAAS,QAAQ,SAAO;AACtB,cAAM,aAAa,IAAI,cAAc,kCAAkC,aAAa;AACpF,YAAI,YAAY;AACd,qBAAW,UAAU,OAAO,UAAU,CAAC,SAAS;AAAA,QAClD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB,WAAW,WAAW;AACxC,YAAM,gBAAgB,KAAK,QAAQ,iBAAiB,kBAAkB,aAAa;AACnF,oBAAc,QAAQ,YAAU;AAE9B,YAAI,OAAO,UAAU,SAAS,qBAAqB;AAAG;AACtD,YAAI,OAAO,UAAU,SAAS,cAAc;AAAG;AAC/C,YAAI,OAAO,UAAU,SAAS,cAAc;AAAG;AAG/C,eAAO,UAAU,OAAO,aAAa,SAAS;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgB,WAAW,WAAW;AACpC,YAAM,WAAW,KAAK,QAAQ,iBAAiB,UAAU;AAEzD,eAAS,QAAQ,SAAO;AAEtB,cAAM,aAAa,IAAI,cAAc,kCAAkC,aAAa;AACpF,YAAI,YAAY;AACd,qBAAW,UAAU,OAAO,UAAU,CAAC,SAAS;AAAA,QAClD;AAGA,cAAM,aAAa,IAAI,iBAAiB,YAAY,WAAW;AAC/D,mBAAW,QAAQ,UAAQ;AACzB,eAAK,UAAU,OAAO,aAAa,SAAS;AAAA,QAC9C,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IAEA,sBAAsB,WAAW;AAC/B,YAAM,YAAY,KAAK,QAAQ,cAAc,oBAAoB;AACjE,YAAM,UAAU,MAAM,KAAK,UAAU,iBAAiB,IAAI,CAAC;AAE3D,aAAO,QAAQ,OAAO,CAAC,SAAS,QAAQC,WAAU;AAChD,YAAI,OAAO,QAAQ,UAAU,WAAW;AACtC,kBAAQ,KAAKA,MAAK;AAAA,QACpB;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,IAEA,UAAU,WAAW,WAAW;AAC9B,YAAM,UAAU,KAAK,WAAW;AAChC,UAAI,CAAC;AAAS;AAEd,YAAMC,OAAM,SAAS,iBAAiB;AACtC,mBAAa,QAAQA,MAAK,UAAU,SAAS,CAAC;AAAA,IAChD;AAAA,IAEA,YAAY;AACV,YAAM,UAAU,KAAK,WAAW;AAChC,UAAI,CAAC;AAAS;AAGd,YAAM,eAAe,KAAK,QAAQ,iBAAiB,2BAA2B;AAE9E,mBAAa,QAAQ,YAAU;AAC7B,cAAM,YAAY,OAAO,QAAQ;AACjC,cAAM,aAAa,KAAK,cAAc,SAAS,SAAS;AAExD,YAAI,eAAe,MAAM;AACvB,gBAAM,YAAY,eAAe;AACjC,gBAAM,cAAc,KAAK,QAAQ,cAAc,6BAA6B,aAAa;AAEzF,cAAI,aAAa;AAEf,iBAAK,mBAAmB,QAAQ,aAAa,SAAS;AAGtD,iBAAK,oBAAoB,WAAW,SAAS;AAG7C,iBAAK,oBAAoB,WAAW,SAAS;AAG7C,iBAAK,kBAAkB,WAAW,SAAS;AAG3C,iBAAK,gBAAgB,WAAW,SAAS;AAAA,UAC3C;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,aAAa;AACX,YAAM,eAAe,KAAK,QAAQ,QAAQ,MAAM;AAChD,aAAO,eAAe,aAAa,KAAK;AAAA,IAC1C;AAAA,IAEA,cAAc,SAAS,WAAW;AAChC,YAAMA,OAAM,SAAS,iBAAiB;AACtC,aAAO,aAAa,QAAQA,IAAG;AAAA,IACjC;AAAA,EACF;;;AC1MA;AAAA;AAAA;AAAA;AAEA,MAAO,2BAAP,cAA6B,sBAAsB;AAAA,IACjD,UAAU;AACR,YAAM,QAAQ;AAAA,IAGhB;AAAA;AAAA;AAAA,EAIF;;;ACXA;AAAA;AAAA;AAAA;AAIA,MAAAC,wBAAyB;AAEzB,MAAO,yBAAP,cAA6B,WAAW;AAAA,IAGtC,UAAU;AAGR,YAAM,YAAY,KAAK,QAAQ,QAAQ,QAAQ;AAC/C,UAAI;AAAW;AAEf,UAAI,QAAQ,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;AAC/C,UAAI,gBAAgB,MAAM,EAAE,KAAK,EAAE,KAAK,eAAe,CAAC,EAAE,IAAI,SAC5D,OACA;AACA,eAAO,EAAE,OAAO,OAAO,MAAa;AAAA,MACtC,CAAC;AAED,gCAAAC,SAAa;AAAA,QACX;AAAA,QACA,OAAO,SAAU,MAAM,QAAQ;AAC7B,iBAAO,KAAK,YAAY;AACxB,cAAI,cAAc,cAAc;AAAA,YAAO,CAACC,OACtCA,GAAE,MAAM,YAAY,EAAE,WAAW,IAAI;AAAA,UACvC;AACA,iBAAO,WAAW;AAAA,QACpB;AAAA,QACA,UAAU,SAAU,MAAM;AACxB,gBAAM,QAAQ,KAAK;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,OAAO,OAAO;AACZ,UAAI,MAAM,WAAW,IAAI;AACvB,cAAM,eAAe;AACrB,YAAI,SAAS,EAAE,MAAM,aAAa;AAClC,YAAI,QAAQ,EAAE,KAAK,OAAO,IAAI,CAAC;AAC/B,YAAI,SAAS,IAAI;AAEf,cAAI,OAAO,MAAM,KAAK;AAEtB,eAAK,QAAQ,SAAO;AAClB,gBAAI,aAAa,EAAE,KAAK,GAAG;AAC3B,gBAAI,cAAc,MAAM,EAAE,QAAQ,YAAY,KAAK,YAAY,CAAC,MAAM,IAAI;AACxE,mBAAK,iBAAiB,YAAY,IAAI;AACtC,kBAAI,aAAa,KAAK,UAAU,UAAU;AAC1C,gBAAE,UAAU,EAAE,SAAS,KAAK,YAAY;AAAA,YAC1C;AAAA,UACF,CAAC;AAED,iBAAO,IAAI,EAAE;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IAEA,UAAU,OAAO;AACf,UAAI,SAAS,EAAE,MAAM,aAAa;AAClC,UAAI,QAAQ,EAAE,KAAK,OAAO,KAAK,CAAC;AAChC,aAAO,OAAO;AAEd,WAAK,iBAAiB,OAAO,KAAK;AAAA,IACpC;AAAA,IAEA,UAAU,OAAO;AACf,UAAI,MAAM,SAAS,cAAc,KAAK;AACtC,QAAE,GAAG,EAAE,SAAS,KAAK;AACrB,QAAE,GAAG,EAAE,KAAK,eAAe,sBAAsB;AACjD,QAAE,GAAG,EAAE,KAAK,KAAK;AAEjB,aAAO;AAAA,IACT;AAAA,IAEA,iBAAiB,KAAK,MAAM;AAC1B,UAAI,UAAU,KAAK,YAAY;AAC/B,UAAI,MAAM;AACR,gBAAQ,KAAK,GAAG;AAAA,MAClB,OAAO;AACL,kBAAU,QAAQ,OAAO,SAAUC,IAAG;AACpC,iBAAOA,OAAM;AAAA,QACf,CAAC;AAAA,MACH;AACA,QAAE,KAAK,WAAW,EAAE,IAAI,QAAQ,KAAK,GAAG,CAAC,EAAE,QAAQ,QAAQ;AAAA,IAC7D;AAAA,IAEA,cAAc;AACZ,UAAI,OAAO,EAAE,KAAK,WAAW,EAAE,IAAI;AACnC,aAAO,MAAM,IAAI;AAAA,IACnB;AAAA,EACF;AAtFE,gBADK,wBACE,WAAU,CAAC,UAAU,OAAO;;;ACPrC;AAAA;AAAA;AAAA;AAEA,MAAqB,qBAArB,cAAgD,WAAW;AAAA,IACzD,WAAW,OAAO;AAChB,YAAM,eAAe;AACrB,UAAI,OAAO,MAAM,MACf,UAAU,EAAE,MAAM,aAAa,GAC/B,YAAY,QAAQ,KAAK,QAAQ,GACjC,cAAc,EAAE,mBAAmB;AACrC,UAAI,SAAS,KAAK;AAChB,YAAI,QAAQ,EAAE,KAAK,QAAQ,IAAI,CAAC;AAChC,gBAAQ,IAAI,EAAE;AAEd,YAAI,UAAU,IAAI;AAChB,cAAI,MAAM,SAAS,cAAc,KAAK,GACpC,OAAO,SAAS,cAAc,MAAM,GACpC,QAAQ,SAAS,cAAc,MAAM;AAEvC,YAAE,GAAG,EAAE,KAAK,eAAe,4BAA4B;AAEvD,YAAE,IAAI,EAAE,KAAK,KAAK;AAClB,YAAE,IAAI,EAAE,SAAS,WAAW;AAC5B,YAAE,KAAK,EAAE,KAAK,QAAG;AAEjB,YAAE,GAAG,EAAE,SAAS,iDAAiD;AACjE,YAAE,IAAI,EAAE,SAAS,GAAG;AACpB,YAAE,KAAK,EAAE,SAAS,GAAG;AAErB,YAAE,GAAG,EAAE,SAAS,SAAS;AAEzB,cAAIC,SAAQ,WAAW,YAAY,IAAI,EAAE,MAAM,GAAG,CAAC;AACnD,UAAAA,OAAM,KAAK,KAAK;AAEhB,sBAAY,IAAIA,OAAM,KAAK,GAAG,CAAC;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,UAAU,OAAO;AACf,YAAM,eAAe;AACrB,UAAI,UAAU,EAAE,MAAM,aAAa,GACjC,OAAO,QAAQ,SAAS,YAAY,EAAE,KAAK,GAC3C,cAAc,EAAE,mBAAmB;AAErC,UAAIA,SAAQ,WAAW,YAAY,IAAI,EAAE,MAAM,GAAG,CAAC;AAEnD,UAAI,WAAWA,OAAM,OAAO,SAAU,IAAI;AACxC,eAAO,OAAO;AAAA,MAChB,CAAC;AAED,kBAAY,IAAI,SAAS,KAAK,GAAG,CAAC;AAClC,cAAQ,OAAO;AAAA,IACjB;AAAA,EACF;AAEA,WAAS,WAAWA,QAAO;AACzB,QAAI,WAAWA,OAAM,OAAO,SAAU,IAAI;AACxC,aAAO,OAAO,QAAQ,OAAO;AAAA,IAC/B,CAAC;AACD,WAAO;AAAA,EACT;;;AC5DA;AAAA;AAAA;AAAA;AAEA,MAAqB,qBAArB,cAAgD,sBAAsB;AAAA,IAEpE,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,oBAAoB;AAAA,IAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,sBAAsB;AAEpB,YAAM,QAAQ,KAAK,QAAQ,iBAAiB,mBAAmB;AAC/D,YAAM,QAAQ,UAAQ;AACpB,aAAK,iBAAiB,UAAU,CAAC,UAAU;AACzC,cAAI,CAAC,KAAK,cAAc,GAAG;AACzB,kBAAM,eAAe;AACrB,kBAAM,gBAAgB;AAAA,UACxB;AACA,eAAK,UAAU,IAAI,eAAe;AAAA,QACpC,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,cAAc,OAAO;AACnB,YAAM,SAAS,EAAE,MAAM,aAAa;AACpC,YAAM,QAAQ,OAAO,KAAK,QAAQ;AAClC,YAAM,UAAU,OAAO,KAAK,UAAU;AAEtC,UAAI,CAAC,OAAO;AACV,gBAAQ,MAAM,kBAAkB;AAChC;AAAA,MACF;AAGA,YAAM,OAAO,SAAS,eAAe,eAAe;AACpD,YAAM,YAAY,SAAS,eAAe,eAAe;AAEzD,YAAM,gBAAgB,KAAK;AAC3B,YAAM,YAAY,cAAc,QAAQ,MAAM,MAAM,KAAK;AAEzD,WAAK,SAAS;AACd,gBAAU,QAAQ;AAGlB,YAAM,QAAQ,IAAI,UAAU,MAAM,SAAS,eAAe,gBAAgB,CAAC;AAC3E,YAAM,KAAK;AAAA,IACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,gBAAgB;AACd,YAAM,OAAO,SAAS,eAAe,kBAAkB;AACvD,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd,OAAO;AACL,gBAAQ,MAAM,4BAA4B;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;;;AC/EA;AAAA;AAAA;AAAA;AAEA,MAAO,yCAAP,cAA6B,sBAAsB;AAAA,IAIjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,0CAA0C;AACvD,WAAK,mBAAmB;AAAA,IAC1B;AAAA,IAIA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,QAAQ,6CAA6C;AAAA,IAC5D;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UAAU,OAAO;AACf,YAAM,YAAY,MAAM,OAAO;AAC/B,YAAM,aAAa,KAAK,QAAQ,iBAAiB,kBAAkB;AAEnE,iBAAW,QAAQ,cAAY;AAC7B,iBAAS,UAAU;AAAA,MACrB,CAAC;AAED,WAAK,mBAAmB;AACxB,WAAK,qBAAqB;AAC1B,WAAK,QAAQ,8BAA8B,WAAW;AAAA,IACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAgB,OAAO;AACrB,WAAK,mBAAmB;AACxB,WAAK,qBAAqB;AAC1B,WAAK,QAAQ,oDAAoD;AAAA,IACnE;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,YAAM,eAAe,KAAK,QAAQ,iBAAiB,0BAA0B;AAC7E,YAAM,eAAe,aAAa,SAAS;AAE3C,UAAI,KAAK,uBAAuB;AAC9B,aAAK,mBAAmB,WAAW,CAAC;AAEpC,YAAI,cAAc;AAChB,eAAK,mBAAmB,UAAU,OAAO,qBAAqB;AAC9D,eAAK,mBAAmB,UAAU,IAAI,aAAa;AAAA,QACrD,OAAO;AACL,eAAK,mBAAmB,UAAU,OAAO,aAAa;AACtD,eAAK,mBAAmB,UAAU,IAAI,qBAAqB;AAAA,QAC7D;AAEA,aAAK,QAAQ,iBAAiB,eAAe,YAAY,eAAe,aAAa,kBAAkB;AAAA,MACzG;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,uBAAuB;AACrB,YAAM,aAAa,KAAK,QAAQ,iBAAiB,kBAAkB;AACnE,YAAM,eAAe,KAAK,QAAQ,iBAAiB,0BAA0B;AAC7E,YAAM,iBAAiB,KAAK,QAAQ,cAAc,8BAA8B;AAEhF,UAAI,kBAAkB,WAAW,SAAS,GAAG;AAC3C,YAAI,aAAa,WAAW,GAAG;AAC7B,yBAAe,UAAU;AACzB,yBAAe,gBAAgB;AAAA,QACjC,WAAW,aAAa,WAAW,WAAW,QAAQ;AACpD,yBAAe,UAAU;AACzB,yBAAe,gBAAgB;AAAA,QACjC,OAAO;AACL,yBAAe,UAAU;AACzB,yBAAe,gBAAgB;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,OAAO;AAClB,YAAM,eAAe;AAErB,WAAK,QAAQ,mCAAmC;AAEhD,YAAM,eAAe,KAAK,QAAQ,iBAAiB,0BAA0B;AAC7E,WAAK,QAAQ,SAAS,aAAa,sBAAsB;AAEzD,UAAI,aAAa,WAAW,GAAG;AAC7B,cAAM,qDAAkD;AACxD,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,MAAM,KAAK,YAAY,EAAE,IAAI,cAAY;AAC3D,cAAM,MAAM,SAAS,QAAQ,IAAI;AACjC,cAAM,oBAAoB,IAAI,cAAc,wBAAwB;AACpE,eAAO,oBAAoB,kBAAkB,YAAY,KAAK,IAAI;AAAA,MACpE,CAAC;AAGD,YAAM,cAAc,KAAK,uBAAuB;AAChD,YAAM,iBAAiB,GAAG;AAAA;AAAA;AAAA,EAA0C,YAAY,KAAK,IAAI;AAEzF,WAAK,QAAQ,6BAA6B;AAC1C,UAAI,CAAC,QAAQ,cAAc,GAAG;AAC5B,aAAK,QAAQ,gBAAgB;AAC7B,eAAO;AAAA,MACT;AAEA,WAAK,QAAQ,4BAA4B,aAAa,gBAAgB;AAGtE,YAAM,OAAO,KAAK;AAClB,WAAK,QAAQ,iBAAiB,KAAK,SAAS;AAC5C,WAAK,QAAQ,YAAY,KAAK,IAAI;AAClC,WAAK,QAAQ,gBAAgB,KAAK,QAAQ;AAC1C,WAAK,QAAQ,gBAAgB,KAAK,QAAQ;AAE1C,UAAI,KAAK,YAAY,QAAQ;AAC3B,aAAK,OAAO;AACZ,aAAK,QAAQ,6BAA6B;AAAA,MAC5C,OAAO;AACL,aAAK,QAAQ,iDAAiD;AAC9D,cAAM,iDAAiD;AAAA,MACzD;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAjJE,gBADK,wCACE,WAAU,CAAC,cAAc;AAChC,gBAFK,wCAEE,UAAS,EAAE,WAAW,QAAQ,gBAAgB,OAAO;;;ACJ9D;AAAA;AAAA;AAAA;AAuBA,MAAO,2BAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkDjD,MAAM,UAAU,OAAO;AACrB,YAAM,MAAM,KAAK,QAAQ,QAAQ;AACjC,YAAM,aAAa,MAAM,OAAO,QAAQ;AAGxC,YAAM,oBAAoB,EAAE,oLAAoL;AAIhN,YAAM,iBAAiB,kBAAkB,IAAI,CAACC,QAAO,WAAW;AAAA,QAC9D;AAAA,QACA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;AAAA,MAC5B,EAAE,EAAE,QAAQ,EAAE,OAAO,UAAQ,KAAK,KAAK,SAAS,CAAC;AAGjD,YAAM,4BAA4B,eAAe,IAAI,UAAQ,KAAK,KAAK;AACvE,YAAM,kBAAkB,eAAe,IAAI,UAAQ,KAAK,IAAI;AAK5D,UAAI;AAEF,cAAMC,YAAW,MAAM,IAAI,KAAK,GAAG,EAAE,OAAO,QAAQ;AAAA,UAClD,QAAQ;AAAA,UACR,eAAe;AAAA,QACjB,CAAC;AAED,cAAM,eAAeA,UAAS;AAG9B,YAAG,aAAa,SAAS,GAAG;AAC1B,gBAAMC,QAAO;AAGb,oCAA0B,QAAQ,CAAC,aAAaF,WAAU;AACxD,gBAAGA,SAAQ,aAAa,QAAQ;AAC9B,kBAAI,YAAY,EAAE,WAAW,EAAE,KAAK,iBAAiB;AAGrD,kBAAG,cAAc,QAAW;AAC1B,4BAAY,EAAE,iCAAkC,YAAY,MAAO,EAAE,KAAK,iBAAiB;AAAA,cAC7F;AAEA,oBAAM,OAAO,aAAaA,MAAK,EAAE;AACjC,oBAAM,QAAQ,EAAE,gBAAgB,gCAAiC,aAAc;AAG/E,kBAAG,MAAM,KAAK,OAAO,MAAM,QAAW;AAEpC,sBAAM,KAAK,IAAI;AAEf,sBAAM,cAAc,EAAE,IAAI,MAAM,KAAK,OAAO,GAAG;AAC/C,4BAAY,IAAI,IAAI;AAAA,cACtB,OAAO;AAEL,sBAAM,IAAI,IAAI;AAAA,cAChB;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AAEL,eAAK,uBAAuB;AAAA,QAC9B;AAAA,MACF,SAASG,QAAP;AACA,gBAAQ,MAAM,uBAAuBA,MAAK;AAC1C,aAAK,uBAAuB;AAAA,MAC9B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,yBAAyB;AAEvB,QAAE,qDAAqD,EAAE,SAAS,UAAU;AAG5E,QAAE,aAAa,EAAE,YAAY,QAAQ,EAAE,SAAS,MAAM;AAAA,IACxD;AAAA,IAEA,kBAAkB,OAAO;AAEvB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,gBAAgB;AACtB,YAAM,cAAc,cAAc,IAAI;AACtC,YAAMC,WAAU,EAAC,MAAM,MAAM,OAAO,MAAK;AACzC,YAAM,cAAcA,SAAQ,WAAW;AACvC,UAAG,KAAK,sBAAsB;AAC5B,UAAE,KAAK,iBAAiB,EAAE,IAAI,WAAW;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AA7IE,gBAFK,0BAEE,WAAU,CAAC,aAAa;;;ACzBjC;AAAA;AAAA;AAAA;AAEA,MAAO,mCAAP,cAA6B,sBAAsB;AAAA,IAEjD,MAAM,WAAW,OAAO;AACtB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,wCAAwC,EAC5D,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,cAAc,OAAO;AACzB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,2CAA2C,EAC/D,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IAEH;AAAA,IAEA,MAAM,cAAc,OAAO;AACzB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,4CAA4C,EAChE,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,gBAAgB,OAAO;AAC3B,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,6CAA6C,EACjE,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,UAAU,OAAO;AACrB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,uCAAuC,EAC3D,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,cAAc,OAAO;AACzB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,4CAA4C,EAChE,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,eAAe,OAAO;AAC1B,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,4CAA4C,EAChE,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,oBAAoB,OAAO;AAC/B,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,kDAAkD,EACtE,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,iCAAiC,OAAO;AAC5C,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,iEAAiE,EACnF,KAAK,MAAM;AACV,aAAK,qBAAqB;AAAA,MAC5B,CAAC;AACH,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,MAAM,8BAA8B,OAAO;AACzC,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,8DAA8D,EAChF,KAAK,MAAM;AACV,aAAK,qBAAqB;AAAA,MAC5B,CAAC;AACH,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,MAAM,qBAAqB,OAAO;AAChC,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU,mDAAmD,EACrE,KAAK,MAAM;AACV,aAAK,qBAAqB;AAC1B,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,uBAAuB;AAErB,4BAAsB,MAAM;AAC1B,cAAM,QAAQ,SAAS,cAAc,2BAA2B;AAChE,YAAI,OAAO;AACT,kBAAQ,IAAI,4CAAuC;AACnD,gBAAM,iBAAiB,IAAI,UAAU,MAAM,KAAK;AAChD,yBAAe,KAAK;AAAA,QACtB,OAAO;AAEL,qBAAW,MAAM;AACf,kBAAMC,SAAQ,SAAS,cAAc,2BAA2B;AAChE,gBAAIA,QAAO;AACT,sBAAQ,IAAI,4CAAuC;AACnD,oBAAM,iBAAiB,IAAI,UAAU,MAAMA,MAAK;AAChD,6BAAe,KAAK;AAAA,YACtB,OAAO;AACL,sBAAQ,MAAM,iDAA4C;AAAA,YAC5D;AAAA,UACF,GAAG,GAAG;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAEF;;;AChJA;AAAA;AAAA;AAAA;AAOA,MAAO,qCAAP,cAA6B,sBAAsB;AAAA,IACjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,YAAY;AACjB,WAAK,cAAc;AACnB,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,wBAAwB;AACtB,WAAK,WAAW,IAAI,iBAAiB,CAAC,cAAc;AAClD,kBAAU,QAAQ,CAAC,aAAa;AAE9B,mBAAS,WAAW,QAAQ,CAAC,SAAS;AACpC,gBAAI,KAAK,aAAa,GAAG;AAEvB,kBAAI,KAAK,YAAY,SAAS,KAAK,gBAAgB,IAAI,GAAG;AACxD,qBAAK,eAAe,IAAI;AAAA,cAC1B;AAEA,oBAAM,iBAAiB,KAAK,mBAAmB,oCAAoC;AACnF,8BAAgB,QAAQ,eAAa;AACnC,sBAAM,SAAS,UAAU,iBAAiB,iCAAiC;AAC3E,uBAAO,QAAQ,SAAO,KAAK,eAAe,GAAG,CAAC;AAAA,cAChD,CAAC;AAGD,kBAAI,KAAK,WAAW,SAAS,cAAc,KAAK,KAAK,eAAe,mBAAmB,GAAG;AACxF,sBAAM,SAAS,KAAK,iBAAiB,iCAAiC;AACtE,uBAAO,QAAQ,SAAO,KAAK,eAAe,GAAG,CAAC;AAAA,cAChD;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAGD,WAAK,SAAS,QAAQ,KAAK,SAAS;AAAA,QAClC,WAAW;AAAA,QACX,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAgB,KAAK;AACnB,aAAO,IAAI,QAAQ,oCAAoC,MAAM;AAAA,IAC/D;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB;AAEd,YAAM,iBAAiB,KAAK,QAAQ,iBAAiB,oCAAoC;AAEzF,qBAAe,QAAQ,eAAa;AAElC,YAAI,UAAU,YAAY,eAAe;AACvC;AAAA,QACF;AAGA,cAAM,SAAS,UAAU,iBAAiB,iCAAiC;AAC3E,eAAO,QAAQ,SAAO,KAAK,eAAe,GAAG,CAAC;AAAA,MAChD,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe,KAAK;AAElB,UAAI,IAAI,QAAQ,cAAc;AAC5B;AAAA,MACF;AAEA,UAAI,QAAQ,eAAe;AAG3B,YAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAQ,YAAY;AACpB,cAAQ,QAAQ,SAAS;AACzB,cAAQ,QAAQ,WAAW,IAAI;AAG/B,UAAI,WAAW,aAAa,SAAS,GAAG;AACxC,cAAQ,YAAY,GAAG;AAGvB,YAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAQ,YAAY;AACpB,cAAQ,YAAY;AACpB,cAAQ,YAAY,OAAO;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc,OAAO;AACnB,YAAM,eAAe;AACrB,YAAM,WAAW,MAAM,cAAc,QAAQ;AAE7C,WAAK,UAAU,uCAAuC,QAAQ;AAAA,IAChE;AAAA,IAEA,aAAa;AAEX,UAAI,KAAK,UAAU;AACjB,aAAK,SAAS,WAAW;AAAA,MAC3B;AAGA,YAAM,WAAW,KAAK,QAAQ,iBAAiB,sBAAsB;AACrE,eAAS,QAAQ,aAAW;AAC1B,cAAM,MAAM,QAAQ,cAAc,KAAK;AACvC,YAAI,KAAK;AACP,iBAAO,IAAI,QAAQ;AACnB,kBAAQ,WAAW,aAAa,KAAK,OAAO;AAC5C,kBAAQ,OAAO;AAAA,QACjB;AAAA,MACF,CAAC;AAED,YAAM,WAAW;AAAA,IACnB;AAAA,EACF;;;AC7IA;AAAA;AAAA;AAAA;AAEA,MAAO,oCAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,WAAK,OAAO,KAAK,KAAK,YAAY,WAAW;AAC7C,YAAM,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,GAAG;AAClE,kBAAY,QAAQ,CAAC,eAAe;AAClC,aAAK,QAAQ,uBAAuB,YAAY;AAChD,iBAAS,gBAAgB,iBAAiB,YAAY,CAAC,UAAU;AAC/D,eAAK,QAAQ,GAAG,iBAAiB,EAAE,KAAK,GAAG;AAAA,QAC7C,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;;;ACnBA;AAAA;AAAA;AAAA;AAGA,MAAO,0BAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa,OAAO;AAClB,WAAK,UAAU,0BAA0B;AAAA,IAC3C;AAAA,EAEF;;;ACTA;AAAA;AAAA;AAAA;AAOA,MAAqB,0BAArB,cAAqD,sBAAsB;AAAA,IACzE,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,uBAAuB;AAC5B,WAAK,yBAAyB;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AACvB,YAAM,UAAU,SAAS,gBAAgB,aAAa,gBAAgB;AAEtE,WAAK,eAAe,IAAI,qBAAqB,qCAAqC;AAAA,QAChF,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,MACV,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AAEzB,WAAK,aAAa,SAAS,4BAA4B,IAAI;AAG3D,WAAK,aAAa,yBAAyB,KAAK,SAAS;AAAA,QACvD,gBAAgB;AAAA,QAChB,iBAAiB,CAAC,aAAa;AAE7B,iBAAO,aAAa;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,UAAI,KAAK,cAAc;AACrB,gBAAQ,MAAM,mCAAmC;AACjD,gBAAQ,MAAM,KAAK,aAAa,aAAa,CAAC;AAC9C,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF;AAAA,EACF;;;ACtDA;AAAA;AAAA;AAAA;AAGA,MAAqB,kBAArB,cAA6C,sBAAsB;AAAA,IAEjE,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AAAA,IAC1C;AAAA,IAEA,kBAAkB,OAAO;AACvB,UAAI,SAAS,EAAE,MAAM,MAAM;AAC3B,YAAM;AACN,MAAAC,wBAAuB,MAAM,cAAc,OAAO,KAAK,CAAC;AAAA,IAC1D;AAAA,IAEA,gBAAgB,OAAO;AACrB,UAAI,SAAS,EAAE,MAAM,aAAa,GAChC,WAAW,OAAO,SAAS,UAAU,GACrC,SAAS,SAAS,OAAO,KAAK,IAAI,CAAC;AACrC,QAAE,2BAA2B,EAAE,YAAY,UAAU;AACrD,UAAI,CAAC;AAAU,eAAO,SAAS,UAAU;AAEzC,WAAK,UAAU,8BAA8B,WAAW,OAAO,MAAM;AAAA,IACvE;AAAA,IAEA,aAAa,OAAO;AAClB,UAAI,SAAS,EAAE,MAAM,aAAa,GAChC,WAAW,EAAE,YAAY;AAC3B,eAAS,YAAY,eAAe,EAAE,SAAS,WAAW;AAC1D,eACG,KAAK,iBAAiB,EACtB,YAAY,YAAY,EACxB,SAAS,gBAAgB;AAC5B,aAAO,SAAS,eAAe,EAAE,YAAY,WAAW;AACxD,aACG,KAAK,iBAAiB,EACtB,SAAS,YAAY,EACrB,YAAY,gBAAgB;AAE/B,WAAK,UAAU,0BAA0B;AAAA,IAC3C;AAAA,IAEA,cAAc,OAAO;AACnB,UAAI,SAAS,EAAE,MAAM,aAAa,GAChC,UAAU,EAAE,WAAW;AACzB,cAAQ,YAAY,eAAe,EAAE,SAAS,WAAW;AACzD,cACG,KAAK,iBAAiB,EACtB,YAAY,YAAY,EACxB,SAAS,gBAAgB;AAC5B,aAAO,SAAS,eAAe,EAAE,YAAY,WAAW;AACxD,aACG,KAAK,iBAAiB,EACtB,SAAS,YAAY,EACrB,YAAY,gBAAgB;AAE/B,WAAK,UAAU,2BAA2B;AAAA,IAC5C;AAAA,IAEA,UAAU,OAAO;AACf,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,OAAO;AAClD,cAAQ,IAAI,WAAW,QAAQ;AAKjC,QAAE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM,EAAC,UAAU,OAAM;AAAA,QACvB,SAAS,CAACC,UAAS;AACjB,kBAAQ,IAAI,yBAAyB;AACrC,mBAAS,OAAO;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,eAAe,OAAO;AACpB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,YAAY,QAAQ,KAAK,SAAS;AACxC,WAAK,MAAM,aAAa,cAAc,WAAW,KAAK;AACtD,eAAS,OAAO;AAAA,IAClB;AAAA,EACF;AAMA,WAASD,wBAAuB,cAAcC,OAAM;AAClD,aAAS,CAACC,MAAK,KAAK,KAAK,OAAO,QAAQD,KAAI,GAAG;AAC7C,mBAAa,QAAQC,MAAK,KAAK;AAAA,IACjC;AACA,WAAO;AAAA,EACT;;;AC5GA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;;;ACAA,MAAO,4BAAQ;AAAA,IACb,SAAS;AAAA,IACT,WAAW;AAAA,EACb;;;ADAA,MAAO,sCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU;AACjD,WAAK,kBAAkB;AACvB,WAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,kBAAkB;AAC9D,UAAG,KAAK,gBAAgB;AACtB,YAAG,KAAK,YAAY;AAClB,eAAK,YAAY,iBAAiB,SAAS,KAAK,WAAW,KAAK,IAAI,CAAC;AACrE,eAAK,gBAAgB,EAAE,KAAK,WAAW,CAAC;AAAA,QAC1C,OAAO;AAEL,eAAK,kBAAkB;AACvB,eAAK,wBAAwB;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAAA,IAEA,WAAW,OAAO;AAChB,WAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAAA,IAC7C;AAAA,IAEA,gBAAgB,QAAQ;AACtB,YAAM,QAAQ,OAAO,IAAI;AACzB,UAAI,qBAAqB;AACzB,UAAG,KAAK,mBAAmB,MAAM;AAC/B,cAAM,oBAAoB,IAAI,OAAO,KAAK,iBAAiB,GAAG;AAC9D,gBAAQ,IAAI,iBAAiB;AAC7B,6BAAqB,kBAAkB,KAAK,KAAK,IAAI,0BAAkB,QAAQ,0BAAkB;AAAA,MACnG,OAAO;AAEL,6BAAqB,UAAU,MAAM,UAAU,OAAO,0BAAkB,QAAQ,0BAAkB;AAAA,MACpG;AACA,UAAG,KAAK,oBAAoB,oBAAoB;AAC9C,aAAK,kBAAkB;AACvB,aAAK,wBAAwB;AAAA,MAC/B;AAAA,IACF;AAAA,IAEA,0BAA0B;AACxB,WAAK,QAAQ,yBAAyB,KAAK,iBAAiB;AAC5D,YAAM,YAAY;AAClB,YAAM,YAAa;AAAA,QACjB,iBAAiB,KAAK;AAAA,MACxB;AACA,YAAM,uBAAuB,IAAI,YAAY,WAAW;AAAA,QACtD,QAAQ;AAAA,MACV,CAAC;AAED,WAAK,QAAQ,cAAc,oBAAoB;AAC/C,QAAE,KAAK,OAAO,EAAE,QAAQ,EAAC,MAAM,WAAW,QAAQ,UAAS,CAAC;AAAA,IAC9D;AAAA,EACF;AArDE,gBADK,qCACE,WAAU,CAAC,OAAO;;;ADD3B,MAAO,wCAAP,cAA6B,oCAA0B;AAAA,IACrD,gBAAgB,QAAQ;AACtB,YAAM,YAAY,OAAO,KAAK,SAAS;AACvC,cAAQ,IAAI,sBAAqB,OAAO,KAAK,SAAS,CAAC;AACvD,UAAI,qBAAqB;AACzB,2BAAqB,YAAY,0BAAkB,QAAO,0BAAkB;AAE5E,UAAG,KAAK,oBAAoB,oBAAoB;AAC9C,aAAK,kBAAkB;AACvB,aAAK,wBAAwB;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;;;AGfA;AAAA;AAAA;AAAA;AAIA,MAAO,qCAAP,cAA6B,oCAA0B;AAAA,IACrD,aAAa;AACX,YAAM,WAAW;AACjB,UAAG,KAAK,gBAAgB;AACtB,YAAG,KAAK,YAAY;AAClB,eAAK,YAAY,iBAAiB,UAAU,KAAK,WAAW,KAAK,IAAI,CAAC;AAAA,QACxE;AAAA,MACF;AAAA,IAEF;AAAA,IACA,gBAAgB,QAAQ;AACtB,cAAQ,IAAI,OAAO,IAAI,CAAC;AACxB,YAAM,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACF;;;AClBA;AAAA;AAAA;AAAA;AAGA,MAAO,sCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AAEjB,UAAG,KAAK,gBAAgB;AACtB,aAAK,iBAAiB,KAAK,aAAa;AACxC,aAAK,mBAAmB,CAAC;AACzB,aAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,SAAS,EAAE;AACxD,aAAK,kBAAkB,0BAAkB;AACzC,UAAE,QAAQ,EAAE,GAAG,gCAAgC,uDAAuD,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAAA,MACxI;AAAA,IACF;AAAA,IAEA,iBAAiB,OAAO;AACtB,WAAK,QAAQ,wBAAwB,MAAM,OAAO,iBAAiB;AACnE,YAAM,SAAS,EAAE,MAAM,aAAa;AACpC,WAAK,qBAAqB,QAAQ,MAAM,OAAO,eAAe;AAAA,IAChE;AAAA,IAEA,qBAAqB,QAAQ,OAAO;AAClC,YAAMC,SAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,MAAM;AAC/C,WAAK,iBAAiBA,MAAK,IAAI;AAE/B,YAAM,0BAA0B,KAAK,iBAAiB,OAAO,CAAAC,OAAK,OAAOA,EAAC,EAAE,KAAK,CAAC;AAElF,UAAI,aAAa,wBAAwB,MAAM,CAACC,WAAUA,WAAU,0BAAkB,KAAK;AAE3F,qBAAe,wBAAwB,WAAW,KAAK;AAEvD,YAAM,qBAAqB,aAAa,0BAAkB,QAAQ,0BAAkB;AAEpF,UAAG,uBAAuB,KAAK,iBAAiB;AAC9C,aAAK,kBAAkB;AACvB,aAAK,wBAAwB;AAAA,MAC/B;AAAA,IACF;AAAA,IAEA,0BAA0B;AACxB,WAAK,QAAQ,yBAAyB,KAAK,iBAAiB;AAC5D,YAAM,YAAY;AAClB,YAAM,YAAa;AAAA,QACjB,IAAI,KAAK;AAAA,QACT,iBAAiB,KAAK;AAAA,MACxB;AACA,YAAM,uBAAuB,IAAI,YAAY,WAAW;AAAA,QACtD,QAAQ;AAAA,MACV,CAAC;AAED,WAAK,QAAQ,cAAc,oBAAoB;AAC/C,QAAE,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,QAAS,UAAS,CAAC;AAAA,IAChE;AAAA,EACF;AApDE,gBADK,qCACE,WAAU,CAAC,OAAO;;;ACJ3B;AAAA;AAAA;AAAA;AAGA,MAAO,wCAAP,cAA6B,sBAAsB;AAAA,IAIjD,aAAa;AACX,YAAM,WAAW;AACjB,UAAG,KAAK,gBAAgB;AACtB,iBAAS;AACT,UAAE,QAAQ,EAAE,GAAG,gCAAgC,yDAAyD,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAAA,MAC1I;AAAA,IACF;AAAA,IAEA,iBAAiB,OAAO;AACtB,WAAK,QAAQ,gCAAgC;AAC7C,YAAM,WAAW,MAAM,OAAO;AAC9B,YAAM,QAAQ,MAAM,OAAO;AAC3B,YAAM,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,iBAAiB;AAE9D,cAAO,OAAO;AAAA,QACZ,KAAK,0BAAkB;AACrB,sBAAY,SAAS,QAAQ;AAC7B;AAAA,QACF,KAAK,0BAAkB;AACrB,sBAAY,YAAY,QAAQ;AAChC;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAzBE,gBAFK,uCAEE,WAAU,CAAC,OAAO;;;ACL3B;AAAA;AAAA;AAAA;AAKA,MAAO,oCAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa;AACX,YAAM,WAAW;AACjB,YAAMC,QAAO;AAEb,WAAK,eAAe;AACpB,aAAO,sBAAsB,CAAC;AAC9B,WAAK,eAAe,CAAC;AAErB,aAAO,0BAA0B,WAAW;AAC1C,QAAAA,MAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAEd,UAAIA,QAAO;AAGX,UAAI,mBAAmB,EAAE,uBAAuB,EAAE,KAAK,mBAAmB;AAC1E,cAAQ,IAAI,mCAAmC,CAAC,kBAAkB;AAGlE,UAAG,CAAC,kBAAkB;AAEpB,aAAK,uBAAuB;AAG5B,aAAK,uBAAuB;AAC5B,UAAE,uBAAuB,EAAE,KAAK,0BAA0B,IAAI;AAAA,MAChE;AAAA,IAEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWA,yBAAyB;AACvB,cAAQ,IAAI,oBAAoB;AAChC,YAAMA,QAAO;AAIb,YAAM,iBAAiB,SAAS,qBAAqB,QAAQ,EAAE,CAAC;AAEhE,YAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,YAAM,MAAM;AACZ,qBAAe,WAAW,aAAa,OAAO,cAAc;AAQ5D,eAAS,iBAAiB,iBAAiB,SAAS,OAAO;AAEzD,cAAM,UAAU,MAAM,OAAO;AAE7B,cAAM,SAAS,MAAM,OAAO;AAE5B,QAAAA,MAAK,qBAAqB,SAAS,MAAM;AAAA,MAC3C,CAAC;AAGD,YAAM,SAAS,EAAE,cAAc,EAAE,OAAO;AACxC,aAAO,SAAS,MAAM;AAGtB,QAAE,QAAQ,EAAE,GAAG,SAAS,4BAA4B,SAAS,OAAO;AAClE,gBAAQ,IAAI,gBAAgB;AAE5B,YAAI,SAAS,QAAQ,YAAY,WAAW,cAAc,YAAY;AACtE,kBAAU,EAAE,MAAM,aAAa;AAC/B,qBAAa,QAAQ,KAAK,MAAM;AAChC,wBAAgB,QAAQ,KAAK,SAAS;AACtC,gBAAQ,IAAI,eAAe,YAAY;AACvC,YAAK,OAAO,oBAAoB,UAAU,KAAK,MAAO;AACpD,uBAAa,QAAQ,KAAK,MAAM;AAChC,sBAAY,QAAQ,KAAK,KAAK;AAC9B,yBAAe,kBAAkB;AACjC,mBAAS,IAAI,YAAY;AAAA,YACvB,IAAI;AAAA,YACJ,KAAK;AAAA,YACL,MAAM;AAAA,UACR,CAAC;AACD,iBAAO,aAAa;AACpB,cAAG,eAAe;AAChB,mBAAO,GAAG,SAAS,WAAW;AAC5B,qBAAOA,MAAK,oBAAoB,UAAU;AAAA,YAC5C,CAAC;AAAA,UACH;AACA,cAAI,UAAU,MAAM;AAClB,mBAAO,oBAAoB,UAAU,IAAI;AAAA,cACvC;AAAA,cACA,OAAO;AAAA,cACP,IAAI;AAAA,cACJ,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF,OAAO;AAEL,kBAAQ,IAAI,+BAA+B;AAC3C,mBAAS,OAAO,oBAAoB,UAAU,EAAE;AAChD,UAAAA,MAAK,qBAAqB,YAAY,MAAM;AAC5C,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,SAAS,QAAQ;AACpC,cAAQ,IAAI,cAAc,kBAAkB;AAC5C,YAAM,eAAe,KAAK,cAAc,OAAO;AAG/C,mBAAa,MAAM,MAAM;AACzB,aAAO,UAAU;AAGjB,mBAAa,GAAG,mBAAmB,WAAW;AAC5C,gBAAQ,IAAI,kCAAkC;AAC9C,eAAO,WAAW;AAAA,MACpB,CAAC;AAGD,aAAO,oBAAoB,OAAO,EAAE,OAAO,IAAI;AAAA,IACjD;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,SAAS;AAC3B,cAAQ,IAAI,eAAe,sBAAsB;AACjD,YAAM,cAAc,KAAK,qBAAqB,SAAS,MAAM;AAC7D,UAAI,aAAa;AACf,aAAK,UAAU,gCAAgC,WAAW;AAAA,MAC5D;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,SAAS;AACrB,aAAO,EAAE,gBAAgB,SAAS;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,qBAAqB,SAAS,SAAO,QAAQ;AAC3C,UAAI,cAAc;AAClB,YAAM,eAAe,KAAK,cAAc,OAAO;AAC/C,UAAI,gBAAgB,MAAM;AACxB,sBAAc,aAAa,KAAK,eAAe;AAC/C,qBAAa,MAAM,MAAM;AAAA,MAC3B;AACA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,yBAAyB;AACvB,cAAQ,IAAI,oBAAoB;AAChC,UAAIA,QAAO;AAEX,QAAE,QAAQ,EAAE,GAAG,SAAS,mBAAmB,SAAS,OAAO;AACzD,gBAAQ,IAAI,gBAAgB;AAC5B,cAAM,UAAU,EAAE,MAAM,aAAa;AAGrC,cAAM,eAAe,QAAQ,KAAK,eAAe;AACjD,cAAM,WAAW,gBAAgB;AACjC,gBAAQ,IAAI,yBAAyB,WAAW;AAChD,cAAM,SAAS,SAAS,eAAe,QAAQ;AAG/C,cAAM,eAAe,EAAE,kBAAkB,YAAY;AAErD,YAAG,aAAa,KAAK,KAAK,MAAM,QAAW;AACzC;AAAA,QACF;AAEA,YAAGA,MAAK,aAAa,QAAQ,KAAK,QAAW;AAC3C,UAAAA,MAAK,aAAa,QAAQ,IAAI;AAE9B,uBAAa,GAAG,mBAAmB,WAAW;AAC5C,oBAAQ,IAAI,kCAAkC;AAC9C,mBAAO,MAAM;AAAA,UACf,CAAC;AACD,iBAAO,iBAAiB,SAAS,WAAW;AAC1C,yBAAa,MAAM,MAAM;AACzB,YAAAA,MAAK,UAAU,gCAAgC,YAAY;AAAA,UAC7D,CAAC;AAAA,QACH;AAGA,eAAO,KAAK;AAAA,MACd,CAAC;AAAA,IAEH;AAAA,EAEF;;;AClOA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAO,kCAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AA2JE;AAAA;AAAA;AAAA;AAAA;AAuBA;AAAA;AAAA;AAAA;AAAA;AAuBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA;AAAA;AAAA;AAAA;AAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA1PA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,YAAY;AACjB,UAAG,KAAK,iBAAiB;AACvB,aAAK,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI;AACxC,aAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB;AACpE,aAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU;AACnD,aAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW;AACrD,aAAK,oBAAoB,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB;AACxE,aAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB;AACjE,YAAG,KAAK,mBAAmB,QAAW;AACpC,eAAK,iBAAiB;AAAA,QACxB;AACA,gBAAQ,IAAI,KAAK,cAAc;AAC/B,aAAK,uBAAuB;AAE5B,8BAAK,gDAAL;AAEA,YAAG,KAAK,mBAAmB;AACzB,iBAAO,GAAG,MAAM,MAAM;AACpB,gBAAG,KAAK,UAAU,MAAM;AACtB,mBAAK,aAAa;AAAA,YACpB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY;AACV,UAAG,KAAK,UAAU,MAAM;AACtB,aAAK,aAAa;AAAA,MACpB;AACA,cAAO,KAAK,iBAAiB;AAAA,QAC3B,KAAK;AACH,cAAG,KAAK,OAAO,gBAAgB;AAC7B,gBAAG,KAAK,OAAO,eAAe,KAAK,GAAG,YAAY,OAAO;AACvD,mBAAK,UAAU;AAAA,YACjB;AAAA,UACF;AACA,cAAG,KAAK,OAAO,WAAW;AACxB,iBAAK,OAAO,UAAU;AAAA,UACxB,OAAO;AACL,iBAAK,oBAAoB;AAAA,UAC3B;AACA;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAK;AACjB;AAAA,MACJ;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa;AACX,WAAK,oBAAoB;AACzB,UAAG,KAAK,UAAU,MAAM;AACtB,aAAK,aAAa;AAAA,MACpB;AAEA,cAAO,KAAK,iBAAiB;AAAA,QAC3B,KAAK;AACH,cAAG,KAAK,OAAO,YAAY;AACzB,iBAAK,OAAO,WAAW;AAAA,UACzB;AACA;AAAA,QACF,KAAK;AACH,eAAK,OAAO,MAAM;AAClB;AAAA,MACJ;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY;AACV,WAAK,uBAAuB;AAC5B,UAAG,KAAK,UAAU,MAAM;AACtB,aAAK,aAAa;AAAA,MACpB;AAEA,cAAO,KAAK,iBAAiB;AAAA,QAC3B,KAAK;AACH,cAAG,KAAK,OAAO,WAAW;AACxB,iBAAK,OAAO,UAAU;AAAA,UACxB;AACA;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAK;AACjB;AAAA,MACJ;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe;AA1GjB;AA2GI,WAAK,QAAQ,qBAAqB,KAAK,0CAA0C,KAAK,YAAY,KAAK,aAAa,KAAK,IAAI;AAC7H,cAAO,KAAK,iBAAiB;AAAA,QAC3B,KAAK;AACH,cAAG,KAAK,UAAU;AAChB,iBAAK,SAAS,IAAI,MAAM;AAAA,cACtB,gBAAgB,KAAK;AAAA,cACrB,EAAE,KAAK,KAAK,UAAU,YAAY,KAAK;AAAA,YACzC;AACA,iBAAK,OAAO,GAAG,SAAS,CAAC,UAAU,sBAAK,4CAAL,WAAyB,MAAM;AAAA,UACpE,OAAO;AAEL,iBAAK,WAAW,2BAA2B;AAC3C,kCAAK,8CAAL;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,cAAG,CAAC,KAAK,WAAW,CAAC,KAAK,UAAU;AAElC,iBAAK,WAAW,wCAAwC;AACxD,kCAAK,8CAAL;AACA;AAAA,UACF;AACA,cAAIC,QAAO;AACX,UAAAA,MAAK,QAAQ,0CAA0C;AACvD,cAAI,YAAYA,MAAK;AACrB,cAAGA,MAAK,UAAU;AAChB,wBAAY,qBAAAA,OAAK,gCAAL,SAAmBA,MAAK;AAAA,UACtC;AACA,UAAAA,MAAK,SAAS,IAAI,OAAO,GAAG;AAAA,YAC1B,gBAAgBA,MAAK;AAAA,YACrB;AAAA,cACE,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,SAAS;AAAA,cACT,YAAY,EAAE,UAAU,GAAG,UAAU,KAAK,gBAAgB,gBAAgB,GAAG,gBAAgB,GAAG,KAAK,GAAG,UAAU,EAAE;AAAA,cACpH,QAAQ,EAAE,WAAW,CAAC,UAAU;AA9I5C,oBAAAC;AA8I8C,gCAAAA,MAAAD,OAAK,gCAAL,KAAAC,KAAmB,OAAOD;AAAA,cAAM,GAAG,iBAAiB,CAAC,UAAU;AA9I7G,oBAAAC;AA8I+G,gCAAAA,MAAAD,OAAK,0CAAL,KAAAC,KAAwB,OAAOD;AAAA,cAAM,EAAE;AAAA,YAC5I;AAAA,UACF;AACA;AAAA,QACF;AAEE,eAAK,WAAW,gEAAgE;AAChF;AAAA,MACJ;AAAA,IACF;AAAA,EA8GF;AAxGE;AAAA,4BAAqB,WAAG;AACtB,UAAM,iBAAiB,SAAS,qBAAqB,QAAQ,EAAE,CAAC;AAChE,QAAG,EAAE,qBAAqB,EAAE,UAAU,KAAK,KAAK,mBAAmB,WAAW;AAC5E,WAAK,QAAQ,gCAAgC;AAC7C,YAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,YAAM,KAAK;AACX,YAAM,MAAM;AACZ,qBAAe,WAAW,aAAa,OAAO,cAAc;AAAA,IAC9D;AAEA,QAAG,EAAE,wBAAwB,EAAE,UAAU,KAAK,KAAK,mBAAmB,SAAS;AAC7E,WAAK,QAAQ,8BAA8B;AAC3C,YAAM,WAAW,SAAS,cAAc,QAAQ;AAChD,eAAS,KAAK;AACd,eAAS,MAAM;AACf,qBAAe,WAAW,aAAa,UAAU,cAAc;AAAA,IACjE;AAAA,EACF;AAMA;AAAA,0BAAmB,SAAC,OAAO;AACzB,QAAG,CAAC,KAAK,sBAAsB;AAC7B,WAAK,uBAAuB;AAC5B,UAAI,SAAS,MAAM;AACnB,YAAM,aAAa,IAAI,YAAY,qBAAqB;AAAA,QACtD,QAAQ,EAAE,UAAU,KAAK,IAAI,OAAe;AAAA,QAC5C,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ,CAAC;AACD,UAAG,KAAK,iBAAiB;AACvB,aAAK,QAAQ,qBAAqB,WAAW,MAAM;AACnD,aAAK,aAAa,cAAc,UAAU;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAQA;AAAA,oBAAa,SAAC,OAAOA,OAAM;AACzB,QAAI,SAAS,MAAM;AAEnB,QAAGA,MAAK,mBAAmB;AACzB,MAAAA,MAAK,UAAU;AAAA,IACjB;AAEA,UAAM,mBAAmB,IAAI,YAAY,qBAAqB;AAAA,MAC5D,QAAQ,EAAE,UAAU,KAAK,IAAI,OAAe;AAAA,MAC5C,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,IACZ,CAAC;AACD,QAAG,KAAK,iBAAiB;AACvB,WAAK,QAAQ,qBAAqB,iBAAiB,MAAM;AACzD,WAAK,aAAa,cAAc,gBAAgB;AAAA,IAClD;AAAA,EACF;AAQA;AAAA,yBAAkB,SAAC,OAAOA,OAAM;AApOlC;AAqOI,QAAI,QAAQ,MAAM;AAElB,SAAK,QAAQ,2BAA2B,OAAO;AAC/C,SAAK,QAAQ,gBAAgB,GAAG,YAAY,OAAO;AAEnD,YAAO,OAAO;AAAA,MACZ,KAAK,GAAG,YAAY;AAClB,aAAK,oBAAoB;AACzB,6BAAAA,OAAK,4CAAL,SAAyB;AACzB;AAAA,IACJ;AAAA,EACF;AAKA;AAAA,2BAAoB,WAAG;AACrB,QAAG,KAAK,uBAAuB;AAC7B,QAAE,KAAK,kBAAkB,EAAE,YAAY,QAAQ;AAAA,IACjD;AAAA,EACF;AAOA;AAAA,oBAAa,SAAC,KAAK;AACjB,QAAI,QAAQ;AACZ,QAAIE,SAAQ,IAAI,MAAM,KAAK;AAC3B,WAAOA,OAAM,CAAC;AAAA,EAChB;AAhQA,gBAFK,iCAEE,WAAU,CAAC,UAAU,cAAc;;;ACJ5C;AAAA;AAAA;AAAA;AAEA,MAAO,mCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO/C,WAAW,OAAO;AAChB,YAAM,SAAS,EAAE,MAAM,aAAa;AACpC,UAAI,YAAY,OAAO,KAAK,WAAW;AACvC,YAAM,MAAM,IAAI,IAAI,OAAO,QAAQ;AACnC,UAAI,aAAa,IAAI,aAAa,SAAS;AAC3C,UAAI,aAAa,OAAO,aAAa,KAAK;AACxC,YAAI,aAAa,OAAO,MAAM;AAAA,MAChC;AACA,UAAI,aAAa,IAAI,aAAa,SAAS;AAE3C,aAAO,WAAW;AAAA,IACpB;AAAA,EACJ;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAO,0BAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AAsBE;AAQA;AAWA;AAAA;AAAA,IArCA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,cAAc,CAAC;AACpB,WAAK,QAAQ;AAAA,IACf;AAAA,IAEA,aAAa,OAAO;AAClB,YAAM,YAAY,MAAM,OAAO;AAC/B,YAAM,YAAY,MAAM,OAAO;AAE/B,4BAAK,gCAAL,WAAmB;AACnB,4BAAK,0BAAL,WAAgB;AAEhB,WAAK,qBAAqB,WAAW,SAAS;AAE9C,4BAAK,4BAAL;AAAA,IACF;AAAA,IA2BA,qBAAqB,WAAW,WAAW;AACzC,UAAG,KAAK,OAAO;AACb,UAAE,cAAc,EAAE,KAAK;AACvB,aAAK,uBAAuB,WAAW,SAAS;AAAA,MAClD;AAAA,IACF;AAAA,IAEA,uBAAuB,WAAW,WAAW;AAC3C,YAAM,gBAAgB,EAAE,cAAc,EAAE,KAAK,aAAa;AAC1D,YAAM,gBAAgB,EAAE,cAAc,EAAE,KAAK,aAAa;AAC1D,YAAM,oBAAoB,EAAE,cAAc,EAAE,KAAK,iBAAiB;AAElE,cAAQ,IAAI,gBAAgB,SAAS;AACrC,cAAQ,IAAI,gBAAgB,SAAS;AACrC,cAAQ,IAAI,oBAAoB,KAAK,WAAW;AAEhD,wBAAkB,KAAK,KAAK,UAAU,KAAK,WAAW,CAAC;AACvD,UAAG,aAAa,MAAM;AACpB,sBAAc,KAAK,KAAK,UAAU,SAAS,CAAC;AAAA,MAC9C,OAAO;AACL,sBAAc,KAAK,EAAE;AAAA,MACvB;AACA,UAAG,aAAa,MAAM;AACpB,sBAAc,KAAK,KAAK,UAAU,SAAS,CAAC;AAAA,MAC9C,OAAO;AACL,sBAAc,KAAK,EAAE;AAAA,MACvB;AAAA,IACF;AAAA,EAEF;AAtDE;AAAA,oBAAa,SAAC,QAAQ;AACpB,QAAG,QAAQ;AACT,eAAQC,QAAO,QAAQ;AACrB,aAAK,YAAYA,IAAG,KAAK,OAAOA,IAAG;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA;AAAA,iBAAU,SAAC,QAAQ;AACjB,QAAG,QAAQ;AACT,eAAQA,QAAO,QAAQ;AACrB,YAAG,CAAC,KAAK,YAAY,eAAeA,IAAG,GAAG;AACxC,eAAK,YAAYA,IAAG,IAAI;AAAA,QAC1B;AACA,aAAK,YAAYA,IAAG,KAAK,OAAOA,IAAG;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA;AAAA,kBAAW,WAAG;AACZ,QAAG,KAAK,iBAAiB;AACvB,QAAE,KAAK,YAAY,EAAE,IAAI,KAAK,UAAU,KAAK,WAAW,CAAC;AAAA,IAC3D;AAAA,EACF;AA3CA,gBAFK,yBAEE,WAAU,CAAC,QAAQ;;;ACJ5B;AAAA;AAAA;AAAA;AAEA,MAAO,oCAAP,cAA6B,WAAW;AAAA,IACtC,MAAM,OAAO;AACX,UAAG,MAAM,OAAO,WAAW,SAAS;AAClC,eAAO,WAAW,EAAE,MAAM,aAAa,EAAE,KAAK,KAAK;AAAA,MACrD;AAAA,IACF;AAAA,EACF;;;ACNQ,MAAM,UAAU,CAAC,EAAC,MAAM,cAAc,QAAQ,+BAAS,UAAU,2BAA0B,GAAE,EAAC,MAAM,eAAe,QAAQ,gCAAS,UAAU,4BAA2B,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAS,UAAU,6BAA4B,GAAE,EAAC,MAAM,WAAW,QAAQ,4BAAS,UAAU,wBAAuB,GAAE,EAAC,MAAM,aAAa,QAAQ,8BAAS,UAAU,0BAAyB,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAS,UAAU,+BAA8B,GAAE,EAAC,MAAM,iBAAiB,QAAQ,kCAAS,UAAU,8BAA6B,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAS,UAAU,+BAA8B,GAAE,EAAC,MAAM,6BAA6B,QAAQ,8CAAS,UAAU,0CAAyC,GAAE,EAAC,MAAM,qBAAqB,QAAQ,sCAAS,UAAU,kCAAiC,GAAE,EAAC,MAAM,QAAQ,QAAQ,yBAAU,UAAU,qBAAoB,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAU,UAAU,6BAA4B,GAAE,EAAC,MAAM,eAAe,QAAQ,gCAAU,UAAU,4BAA2B,GAAE,EAAC,MAAM,iBAAiB,QAAQ,kCAAU,UAAU,8BAA6B,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAU,UAAU,6BAA4B,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAU,UAAU,+BAA8B,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,oBAAoB,QAAQ,qCAAU,UAAU,iCAAgC,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAU,UAAU,6BAA4B,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAU,UAAU,+BAA8B,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAU,UAAU,6BAA4B,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,UAAU,QAAQ,2BAAU,UAAU,uBAAsB,GAAE,EAAC,MAAM,aAAa,QAAQ,8BAAU,UAAU,0BAAyB,GAAE,EAAC,MAAM,WAAW,QAAQ,4BAAU,UAAU,wBAAuB,GAAE,EAAC,MAAM,YAAY,QAAQ,6BAAU,UAAU,yBAAwB,GAAE,EAAC,MAAM,YAAY,QAAQ,6BAAU,UAAU,yBAAwB,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,mBAAmB,QAAQ,oCAAU,UAAU,gCAA+B,GAAE,EAAC,MAAM,QAAQ,QAAQ,yBAAU,UAAU,qBAAoB,GAAE,EAAC,MAAM,eAAe,QAAQ,gCAAU,UAAU,4BAA2B,GAAE,EAAC,MAAM,aAAa,QAAQ,8BAAU,UAAU,0BAAyB,GAAE,EAAC,MAAM,QAAQ,QAAQ,yBAAU,UAAU,qBAAoB,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,iBAAiB,QAAQ,kCAAU,UAAU,8BAA6B,GAAE,EAAC,MAAM,eAAe,QAAQ,gCAAU,UAAU,4BAA2B,GAAE,EAAC,MAAM,oBAAoB,QAAQ,qCAAU,UAAU,iCAAgC,GAAE,EAAC,MAAM,mCAAmC,QAAQ,oDAAU,UAAU,gDAA+C,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAU,UAAU,+BAA8B,GAAE,EAAC,MAAM,mBAAmB,QAAQ,oCAAU,UAAU,gCAA+B,GAAE,EAAC,MAAM,UAAU,QAAQ,2BAAU,UAAU,uBAAsB,GAAE,EAAC,MAAM,QAAQ,QAAQ,yBAAU,UAAU,qBAAoB,GAAE,EAAC,MAAM,yBAAyB,QAAQ,0CAAU,UAAU,sCAAqC,GAAE,EAAC,MAAM,kCAAkC,QAAQ,+BAAU,UAAU,8CAA6C,GAAE,EAAC,MAAM,WAAW,QAAQ,4BAAU,UAAU,wBAAuB,GAAE,EAAC,MAAM,4BAA4B,QAAQ,6CAAU,UAAU,yCAAwC,GAAE,EAAC,MAAM,oBAAoB,QAAQ,qCAAU,UAAU,iCAAgC,GAAE,EAAC,MAAM,yBAAyB,QAAQ,0CAAU,UAAU,sCAAqC,GAAE,EAAC,MAAM,qBAAqB,QAAQ,sCAAU,UAAU,kCAAiC,GAAE,EAAC,MAAM,0BAA0B,QAAQ,2CAAU,UAAU,uCAAsC,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,eAAe,QAAQ,gCAAU,UAAU,4BAA2B,GAAE,EAAC,MAAM,iBAAiB,QAAQ,kCAAU,UAAU,8BAA6B,GAAE,EAAC,MAAM,wBAAwB,QAAQ,yCAAU,UAAU,qCAAoC,GAAE,EAAC,MAAM,SAAS,QAAQ,0BAAU,UAAU,sBAAqB,GAAE,EAAC,MAAM,iBAAiB,QAAQ,kCAAU,UAAU,8BAA6B,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAU,UAAU,+BAA8B,GAAE,EAAC,MAAM,eAAe,QAAQ,gCAAU,UAAU,4BAA2B,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,eAAe,QAAQ,gCAAU,UAAU,4BAA2B,GAAE,EAAC,MAAM,QAAQ,QAAQ,yBAAU,UAAU,qBAAoB,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,oBAAoB,QAAQ,qCAAU,UAAU,iCAAgC,GAAE,EAAC,MAAM,mBAAmB,QAAQ,oCAAU,UAAU,gCAA+B,GAAE,EAAC,MAAM,qCAAqC,QAAQ,sDAAU,UAAU,kDAAiD,GAAE,EAAC,MAAM,qBAAqB,QAAQ,sCAAU,UAAU,kCAAiC,GAAE,EAAC,MAAM,oBAAoB,QAAQ,qCAAU,UAAU,iCAAgC,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,6BAA6B,QAAQ,8CAAU,UAAU,0CAAyC,GAAE,EAAC,MAAM,iBAAiB,QAAQ,kCAAU,UAAU,8BAA6B,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAU,UAAU,6BAA4B,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,uBAAuB,QAAQ,wCAAU,UAAU,oCAAmC,GAAE,EAAC,MAAM,WAAW,QAAQ,4BAAU,UAAU,wBAAuB,GAAE,EAAC,MAAM,WAAW,QAAQ,4BAAU,UAAU,wBAAuB,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAU,UAAU,6BAA4B,GAAE,EAAC,MAAM,iBAAiB,QAAQ,kCAAU,UAAU,8BAA6B,GAAE,EAAC,MAAM,UAAU,QAAQ,2BAAU,UAAU,uBAAsB,GAAE,EAAC,MAAM,WAAW,QAAQ,4BAAU,UAAU,wBAAuB,GAAE,EAAC,MAAM,SAAS,QAAQ,0BAAU,UAAU,sBAAqB,GAAE,EAAC,MAAM,qBAAqB,QAAQ,8BAAU,UAAU,iCAAgC,GAAE,EAAC,MAAM,WAAW,QAAQ,4BAAU,UAAU,wBAAuB,GAAE,EAAC,MAAM,aAAa,QAAQ,8BAAU,UAAU,0BAAyB,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAU,UAAU,6BAA4B,GAAE,EAAC,MAAM,UAAU,QAAQ,2BAAU,UAAU,uBAAsB,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,cAAc,QAAQ,+BAAU,UAAU,2BAA0B,GAAE,EAAC,MAAM,eAAe,QAAQ,gCAAU,UAAU,4BAA2B,GAAE,EAAC,MAAM,WAAW,QAAQ,4BAAU,UAAU,wBAAuB,GAAE,EAAC,MAAM,UAAU,QAAQ,2BAAU,UAAU,uBAAsB,GAAE,EAAC,MAAM,oBAAoB,QAAQ,qCAAU,UAAU,iCAAgC,GAAE,EAAC,MAAM,yBAAyB,QAAQ,kCAAU,UAAU,qCAAoC,GAAE,EAAC,MAAM,iBAAiB,QAAQ,0BAAU,UAAU,6BAA4B,GAAE,EAAC,MAAM,OAAO,QAAQ,wBAAU,UAAU,oBAAmB,GAAE,EAAC,MAAM,aAAa,QAAQ,8BAAU,UAAU,0BAAyB,GAAE,EAAC,MAAM,aAAa,QAAQ,8BAAU,UAAU,0BAAyB,GAAE,EAAC,MAAM,uBAAuB,QAAQ,wCAAU,UAAU,oCAAmC,GAAE,EAAC,MAAM,sBAAsB,QAAQ,0BAAU,UAAU,kCAAiC,GAAE,EAAC,MAAM,8BAA8B,QAAQ,kCAAU,UAAU,0CAAyC,GAAE,EAAC,MAAM,mBAAmB,QAAQ,oCAAU,UAAU,gCAA+B,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAW,UAAU,+BAA8B,GAAE,EAAC,MAAM,QAAQ,QAAQ,yBAAW,UAAU,qBAAoB,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAW,UAAU,+BAA8B,GAAE,EAAC,MAAM,SAAS,QAAQ,0BAAW,UAAU,sBAAqB,GAAE,EAAC,MAAM,mCAAmC,QAAQ,uCAAW,UAAU,+CAA8C,GAAE,EAAC,MAAM,iCAAiC,QAAQ,qCAAW,UAAU,6CAA4C,GAAE,EAAC,MAAM,gCAAgC,QAAQ,oCAAW,UAAU,4CAA2C,GAAE,EAAC,MAAM,iCAAiC,QAAQ,qCAAW,UAAU,6CAA4C,GAAE,EAAC,MAAM,mCAAmC,QAAQ,uCAAW,UAAU,+CAA8C,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAW,UAAU,+BAA8B,GAAE,EAAC,MAAM,gBAAgB,QAAQ,iCAAW,UAAU,6BAA4B,GAAE,EAAC,MAAM,iBAAiB,QAAQ,kCAAW,UAAU,8BAA6B,GAAE,EAAC,MAAM,gBAAgB,QAAQ,yBAAW,UAAU,4BAA2B,GAAE,EAAC,MAAM,kBAAkB,QAAQ,mCAAW,UAAU,+BAA8B,CAAC;AACtzS,MAAO,qBAAQ;;;ACCvB,qBAAY,QAAQ,CAAC,eAAe;AAClC,gBAAY,SAAS,WAAW,MAAM,WAAW,OAAO,OAAO;AAAA,EACjE,CAAC;;;ACND,IAAE,WAAU;AACV,MAAE,sBAAsB,EAAE,GAAG,SAAS,SAAS,OAAO;AAEpD,UAAI,aAAa,EAAE,IAAI,EAAE,KAAK,SAAS,GACvC,cAAc,EAAE,QAAQ;AACxB,UAAI,YAAY,YAAY,KAAK,aAAa;AAC9C,QAAE,SAAS,EAAE,KAAK,YAAY,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC;AACjD,kBAAY,KAAK,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,QAAQ,CAAC;AAC9D,kBAAY,KAAK,eAAe,EAAE,IAAI,EAAE;AACxC,kBAAY,KAAK,YAAY,EAAE,IAAI,EAAE;AACrC,kBAAY,KAAK,UAAU,EAAE,IAAI,UAAU;AAC3C,kBAAY,MAAM,MAAM;AAAA,IAC1B,CAAC;AAAA,EACH,CAAC;;;ACbD,oBAAO;AACP,0BAAO;AACP,oBAAO;AACP,mBAAO;AACP,sBAAO;AACP,uBAAO;AACP,mBAAO;;;ACJP,GAAC,SAAU,cAAc;AACxB,QAAI,OAAO,aAAa,YAAY,YAAY;AAC/C,mBAAa,UAAU,aAAa,qBAAqB,aAAa,sBAAsB,aAAa,yBAAyB,SAASC,SAAQ,UAAU;AAC5J,YAAI,UAAU;AACd,YAAIC,aAAY,QAAQ,YAAY,QAAQ,eAAe,iBAAiB,QAAQ;AACpF,YAAIC,SAAQ;AAEZ,eAAOD,UAASC,MAAK,KAAKD,UAASC,MAAK,MAAM,SAAS;AACtD,YAAEA;AAAA,QACH;AAEA,eAAO,QAAQD,UAASC,MAAK,CAAC;AAAA,MAC/B;AAAA,IACD;AAEA,QAAI,OAAO,aAAa,YAAY,YAAY;AAC/C,mBAAa,UAAU,SAASC,SAAQ,UAAU;AACjD,YAAI,UAAU;AAEd,eAAO,WAAW,QAAQ,aAAa,GAAG;AACzC,cAAI,QAAQ,QAAQ,QAAQ,GAAG;AAC9B,mBAAO;AAAA,UACR;AAEA,oBAAU,QAAQ;AAAA,QACnB;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD,GAAG,OAAO,QAAQ,SAAS;;;AChC3B,MAAI,OAAO,kBAAkB;AACvB,cAAU,SAAS,cAAc,KAAK;AAC1C,YAAQ,YAAY;AAEpB,QAAI,iBAAiB,SAAS,WAAW,UAAU;AACjD,eAAS,WAAW;AACpB,UACE,UAAU,CAAC,KACX,UAAU,CAAC,EAAE,QAAQ,eACrB,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,UAAU,GAClD;AACA,YAAI,YAAY,YAAY;AAC5B,YAAI,aAAa,OAAO,yBAAyB,WAAW,WAAW;AACvE,YAAI,cAAc,WAAW,KAAK;AAChC,iBAAO,eAAe,WAAW,aAAa;AAAA,YAC5C,KAAK,SAAS,OAAO;AACnB,qBAAO,KAAK;AAAW,qBAAK,YAAY,KAAK,SAAS;AACtD,yBAAW,IAAI,KAAK,MAAM,KAAK;AAAA,YACjC;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC,EAAE,QAAQ,SAAS,EAAE,WAAW,MAAM,SAAS,KAAK,CAAC;AAEtD,YAAQ,YAAY;AAAA,EACtB;AAxBM;;;ACWN,kCAAO;AAwBP,MAAAC,oBAAsB;;;ACpCtB;AAAA,IACE,IAAM;AAAA,MACJ,MAAQ;AAAA,QACN,gBAAkB;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,kBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAa;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAW;AAAA,UACT,SAAW;AAAA,UACX,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN,QAAU;AAAA,QACV,OAAS;AAAA,QACT,SAAW;AAAA,QACX,YAAc;AAAA,QACd,KAAO;AAAA,QACP,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,QAAU;AAAA,QACV,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,OAAS;AAAA,QACT,OAAS;AAAA,QACT,SAAW;AAAA,QACX,gBAAkB;AAAA,QAClB,UAAY;AAAA,QACZ,SAAW;AAAA,QACX,QAAU;AAAA,QACV,SAAW;AAAA,QACX,KAAO;AAAA,QACP,IAAM;AAAA,QACN,QAAU;AAAA,QACV,aAAe;AAAA,QACf,kBAAoB;AAAA,QACpB,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,QACT,IAAM;AAAA,QACN,IAAM;AAAA,QACN,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,IAAM;AAAA,QACN,WAAa;AAAA,QACb,KAAO;AAAA,QACP,sBAAwB;AAAA,QACxB,MAAQ;AAAA,QACR,MAAQ;AAAA,QACR,IAAM;AAAA,QACN,aAAe;AAAA,QACf,QAAU;AAAA,QACV,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,oBAAsB;AAAA,QACtB,SAAW;AAAA,QACX,WAAa;AAAA,QACb,QAAU;AAAA,QACV,IAAM;AAAA,QACN,SAAW;AAAA,UACT,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,iBAAmB;AAAA,QACnB,UAAY;AAAA,UACV,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,UACZ,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,QACd,aAAe;AAAA,QACf,YAAc;AAAA,UACZ,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,WAAa;AAAA,QACb,iBAAmB;AAAA,QACnB,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,QAAU;AAAA,QACZ;AAAA,QACA,QAAU;AAAA,QACV,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,QACT,MAAQ;AAAA,UACN,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,kBAAoB;AAAA,QACpB,mBAAqB;AAAA,QACrB,SAAW;AAAA,QACX,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,aAAe;AAAA,UACb,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,cAAgB;AAAA,QAChB,YAAc;AAAA,UACZ,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,QAChB,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,gBAAkB;AAAA,QAClB,SAAW;AAAA,QACX,SAAW;AAAA,QACX,SAAW;AAAA,QACX,UAAY;AAAA,QACZ,SAAW;AAAA,UACT,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,oBAAsB;AAAA,QACtB,UAAY;AAAA,UACV,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,QACT,SAAW;AAAA,QACX,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,aAAe;AAAA,UACb,SAAW;AAAA,UACX,QAAU;AAAA,UACV,KAAO;AAAA,QACT;AAAA,QACA,MAAQ;AAAA,QACR,WAAa;AAAA,UACX,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,gBAAkB;AAAA,QAClB,QAAU;AAAA,QACV,WAAa;AAAA,QACb,MAAQ;AAAA,QACR,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,kBAAoB;AAAA,QACpB,mBAAqB;AAAA,QACrB,QAAU;AAAA,QACV,OAAS;AAAA,UACP,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,gBAAkB;AAAA,UAChB,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,UACd,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,OAAS;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,QACd,MAAQ;AAAA,QACR,mBAAqB;AAAA,QACrB,mBAAqB;AAAA,QACrB,MAAQ;AAAA,QACR,cAAgB;AAAA,QAChB,QAAU;AAAA,UACR,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,cAAgB;AAAA,UACd,KAAO;AAAA,UACP,OAAS;AAAA,QACX;AAAA,QACA,QAAU;AAAA,QACV,cAAgB;AAAA,QAChB,OAAS;AAAA,QACT,aAAe;AAAA,QACf,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,MAAQ;AAAA,MACV;AAAA,MACA,YAAc;AAAA,QACZ,QAAU;AAAA,UACR,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,QAAU;AAAA,QACR,iBAAmB;AAAA,QACnB,oBAAsB;AAAA,QACtB,kCAAoC;AAAA,QACpC,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,qBAAuB;AAAA,UACrB,wBAA0B;AAAA,UAC1B,oBAAsB;AAAA,QACxB;AAAA,QACA,0BAA4B;AAAA,UAC1B,kBAAoB;AAAA,UACpB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,oBAAsB;AAAA,UACtB,aAAe;AAAA,UACf,aAAe;AAAA,UACf,gBAAkB;AAAA,UAClB,aAAe;AAAA,UACf,aAAe;AAAA,UACf,kBAAoB;AAAA,QACtB;AAAA,QACA,oBAAsB;AAAA,UACpB,gBAAkB;AAAA,UAClB,OAAS;AAAA,QACX;AAAA,QACA,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;;;AD3RA,MAAMC,eAAc,YAAY,MAAM;AACtC,EAAAA,aAAY,QAAQ;AACpB,SAAO,WAAaA;AAEpB,EAAAC,QAAe,WAAWD,cAAa,EAAE,OAAO,KAAK,CAAC;AACtD,SAAO,cAAcE;AACrB,EAAAA,aAAY,KAAK;AAIjB,IAAE,WAAY;AACZ,MAAE,cAAc,EAAE,GAAG,SAAS,SAASC,IAAG;AACxC,MAAAA,GAAE,gBAAgB;AAClB,UAAI,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ;AACpC,aAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AAGD;AAMA,SAAO,YAAY,kBAAAC;AAWnB,MAAMC,QAAO,IAAIC,MAAK;AACtB,SAAO,OAAOD;AACd,SAAO,cAAc;AAAA,IACnB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;;;AEzDA;AAAA;AAAA;AAAA;AAEA,MAAO,+BAAP,cAA6B,sBAAsB;AAAA,IAEjD,uBAAuB,OAAO;AAE5B,YAAM,eAAe;AACrB,YAAM,SAAS,EAAE,0BAA0B;AAC3C,aAAO,MAAM,MAAM;AACnB,WAAK,UAAU,sCAAsC,MAAM,aAAa,EAAE,KAAK,CAACE,WAAU;AAAA,MAE1F,CAAC;AAAA,IAEH;AAAA,IAEA,cAAc,OAAO;AAEnB,YAAM,eAAe;AACrB,UAAI,SAAS,EAAE,0BAA0B;AACzC,aAAO,MAAM,MAAM;AACnB,WAAK,UAAU,iCAAiC,MAAM,aAAa,EAAE,KAAK,CAACA,WAAU;AACnF,iBAAS,EAAE,0BAA0B;AACrC,eAAO,MAAM,MAAM;AAAA,MACrB,CAAC;AAAA,IAEH;AAAA,EAEF;;;AC3BA,MAAAC,gCAAA;AAAA,WAAAA,+BAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,gCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,IAC9B;AAAA,EACF;;;ACPA,MAAAC,gCAAA;AAAA,WAAAA,+BAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,gCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAC5B,QAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa;AAAA,IACrD;AAAA,EACF;;;ACRA,MAAAC,gCAAA;AAAA,WAAAA,+BAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,gCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAC5B,QAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa;AAAA,IACrD;AAAA,EACF;;;ACRA,MAAAC,gCAAA;AAAA,WAAAA,+BAAA;AAAA,mBAAAC;AAAA;AAIA,MAAOC,gCAAP,cAA6B,WAAW;AAAA,IAGtC,UAAU;AAER,WAAK,eAAe,QAAQ,CAAC,YAAY;AACvC,YAAI,QAAQ,SAAS;AAAA,UACnB,SAAS;AAAA,UACT,WAAW;AAAA,UACX,WAAW,KAAK;AAAA,QAClB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IAEA,aAAa;AAEX,WAAK,eAAe,QAAQ,CAAC,YAAY;AACvC,cAAM,UAAU,QAAQ,YAAY,OAAO;AAC3C,YAAI,SAAS;AACX,kBAAQ,QAAQ;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAtBE,gBADKA,+BACE,WAAU,CAAC,SAAS;;;ACL7B,MAAAC,gCAAA;AAAA,WAAAA,+BAAA;AAAA,mBAAAC;AAAA;AAKA,MAAOC,gCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aAAa,OAAO;AAClB,YAAM,eAAe;AAErB,YAAM,SAAS,MAAM;AACrB,YAAM,OAAO,OAAO,QAAQ;AAC5B,UAAI,CAAC,MAAM;AACT;AAAA,MACF;AAEA,WAAK,SAAS,MAAM,MAAM;AAAA,IAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,SAAS,MAAM,QAAQ;AAC3B,UAAI;AACF,cAAM,UAAU,UAAU,UAAU,IAAI;AACxC,aAAK,iBAAiB,MAAM;AAAA,MAC9B,SAAS,QAAP;AACA,aAAK,aAAa,MAAM,MAAM;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,MAAM,QAAQ;AACzB,YAAM,WAAW,SAAS,cAAc,UAAU;AAClD,eAAS,QAAQ;AACjB,eAAS,aAAa,YAAY,EAAE;AACpC,eAAS,MAAM,WAAW;AAC1B,eAAS,MAAM,OAAO;AACtB,eAAS,KAAK,YAAY,QAAQ;AAClC,eAAS,OAAO;AAChB,eAAS,YAAY,MAAM;AAC3B,eAAS,OAAO;AAChB,WAAK,iBAAiB,MAAM;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,QAAQ;AACvB,UAAI,OAAO,UAAU,SAAS,4CAA4C,GAAG;AAC3E;AAAA,MACF;AAEA,YAAM,OAAO,OAAO,cAAc,sCAAsC;AACxE,YAAM,eAAe,MAAM,aAAa,KAAK,KAAK;AAElD,aAAO,UAAU,IAAI,4CAA4C;AACjE,UAAI,MAAM;AACR,aAAK,cAAc;AAAA,MACrB;AAEA,aAAO,WAAW,MAAM;AACtB,eAAO,UAAU,OAAO,4CAA4C;AACpE,YAAI,MAAM;AACR,eAAK,cAAc;AAAA,QACrB;AAAA,MACF,GAAG,GAAI;AAAA,IACT;AAAA,EACF;;;ACjFA,MAAAC,gCAAA;AAAA,WAAAA,+BAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,gCAAP,cAA6B,sBAAsB;AAAA,IACjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,mBAAmB;AACxB,WAAK,iBAAiB;AACtB,WAAK,qBAAqB,KAAK,kBAAkB,KAAK,IAAI;AAC1D,eAAS,iBAAiB,mBAAmB,KAAK,kBAAkB;AAAA,IACtE;AAAA,IAEA,aAAa;AACX,eAAS,oBAAoB,mBAAmB,KAAK,kBAAkB;AACvE,WAAK,sBAAsB;AAC3B,WAAK,oBAAoB;AACzB,YAAM,WAAW;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,OAAO;AACvB,UAAI,MAAM,QAAQ,OAAO,+BAA+B;AACtD;AAAA,MACF;AAEA,WAAK,iBAAiB;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,sBAAsB,OAAO;AAC3B,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAEtB,UAAI,SAAS,eAAe,6BAA6B,GAAG;AAC1D;AAAA,MACF;AAEA,WAAK,aAAa;AAClB,WAAK,UAAU,yCAAyC,MAAM,aAAa,EAAE,MAAM,MAAM;AACvF,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IAEA,qBAAqB;AACnB,WAAK,iBAAiB,CAAC;AACvB,YAAM,WAAW,KAAK,QAAQ,iBAAiB,kEAAkE;AACjH,eAAS,QAAQ,CAAC,OAAO;AACvB,aAAK,eAAe,KAAK,IAAI,UAAU,QAAQ,IAAI,EAAE,UAAU,UAAU,WAAW,MAAM,CAAC,CAAC;AAAA,MAC9F,CAAC;AAAA,IACH;AAAA,IAEA,wBAAwB;AACtB,WAAK,gBAAgB,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAC3D,WAAK,iBAAiB,CAAC;AAAA,IACzB;AAAA,IAEA,mBAAmB;AACjB,WAAK,iBAAiB,CAAC;AACvB,YAAM,WAAW,KAAK,QAAQ,iBAAiB,cAAc;AAC7D,eAAS,QAAQ,CAAC,OAAO;AACvB,cAAM,UAAU,IAAI,UAAU,QAAQ,IAAI,EAAE,aAAa,WAAW,WAAW,UAAU,SAAS,SAAS,CAAC;AAC5G,gBAAQ,KAAK;AACb,aAAK,eAAe,KAAK,OAAO;AAAA,MAClC,CAAC;AAAA,IACH;AAAA,IAEA,sBAAsB;AACpB,WAAK,gBAAgB,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAC3D,WAAK,iBAAiB,CAAC;AAAA,IACzB;AAAA,EACF;;;AC3EA,MAAAC,gCAAA;AAAA,WAAAA,+BAAA;AAAA,mBAAAC;AAAA;AACA,MAAAC,kBAAwB;AACxB,MAAAC,aAAuB;AAGvB,MAAM,oBAAoB,EAAE,IAAI,yBAAS,IAAI,kBAAO;AAKpD,MAAOC,gCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,WAAK,sBAAsB,KAAK,gBAAgB,KAAK,IAAI;AACzD,WAAK,oBAAoB,KAAK,cAAc,KAAK,IAAI;AAAA,IACvD;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,iBAAiB,CAAC;AACvB,4BAAsB,MAAM;AAC1B,aAAK,UAAU;AACf,8BAAsB,MAAM;AAC1B,eAAK,oBAAoB;AACzB,eAAK,OAAO;AAAA,QACd,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IAEA,aAAa;AACX,WAAK,sBAAsB;AAC3B,WAAK,uBAAuB;AAC5B,WAAK,eAAe,QAAQ;AAC5B,YAAM,WAAW;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY;AACV,UAAI,OAAO,cAAc,eAAe,CAAC,UAAU,OAAO;AACxD,aAAK,YAAY;AACjB;AAAA,MACF;AAEA,WAAK,sBAAsB;AAC3B,WAAK,qBAAqB;AAC1B,WAAK,gBAAgB;AAErB,WAAK,gBAAgB,UAAU,MAAM,oBAAoB,KAAK,SAAS;AAAA,QACrE,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,MACT,CAAC;AACD,WAAK,cAAc,KAAK;AACxB,eAAS,KAAK,UAAU,IAAI,yBAAyB;AACrD,WAAK,YAAY;AACjB,WAAK,QAAQ,iBAAiB,SAAS,KAAK,mBAAmB;AAC/D,WAAK,QAAQ,iBAAiB,mBAAmB,KAAK,mBAAmB,EAAE,MAAM,KAAK,CAAC;AAAA,IACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAgB,OAAO;AACrB,UAAI,MAAM,WAAW,KAAK,SAAS;AACjC,aAAK,eAAe,KAAK;AAAA,MAC3B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB;AACd,eAAS,KAAK,UAAU,OAAO,yBAAyB;AACxD,WAAK,QAAQ,oBAAoB,SAAS,KAAK,mBAAmB;AAClE,WAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AACtB,eAAS,iBAAiB,8BAA8B,EAAE,QAAQ,CAAC,YAAY;AAC7E,YAAI,YAAY,KAAK,SAAS;AAC5B;AAAA,QACF;AAEA,cAAM,WAAW,UAAU,MAAM,YAAY,OAAO;AACpD,kBAAU,QAAQ;AAClB,gBAAQ,OAAO;AAAA,MACjB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB;AACpB,UAAI,CAAC,KAAK,sBAAsB,KAAK,iBAAiB;AACpD;AAAA,MACF;AAEA,WAAK,kBAAkB,YAAU,KAAK,iBAAiB;AAAA,QACrD,QAAQ,kBAAkB,KAAK,MAAM,KAAK;AAAA,QAC1C,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,UAAU,SAAS;AAAA,QACnB,UAAU,MAAM,KAAK,OAAO;AAAA,QAC5B,QAAQ,CAAC,gBAAgB,UAAU,aAAa;AAC9C,mBAAS,kBAAkB,MAAM,SAAS;AAAA,QAC5C;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,OAAO;AACzB,aAAO,eAAe;AACtB,WAAK,iBAAiB,KAAK;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AAChB,UAAI,KAAK,QAAQ,kBAAkB,SAAS,MAAM;AAChD,iBAAS,KAAK,YAAY,KAAK,OAAO;AAAA,MACxC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,uBAAuB;AACrB,eAAS,iBAAiB,qCAAqC,EAAE,QAAQ,CAAC,YAAY;AACpF,cAAM,UAAU,UAAU,QAAQ,YAAY,OAAO;AACrD,iBAAS,KAAK;AACd,iBAAS,QAAQ;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,YAAM,QAAQ,SAAS,eAAe,6BAA6B;AACnE,UAAI,OAAO;AACT,kBAAU,MAAM,YAAY,KAAK,GAAG,QAAQ;AAC5C,cAAM,OAAO;AAAA,MACf;AAEA,YAAM,aAAa,SAAS,eAAe,aAAa;AACxD,UAAI,YAAY;AACd,mBAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,SAAS;AACP,YAAM,QAAQ,KAAK,kBAAkB,KAAK,aAAa,MAAM,KAAK,EAAE,YAAY,IAAI;AACpF,YAAM,CAAC,WAAW,OAAO,IAAI,KAAK,kBAAkB;AACpD,YAAM,QAAQ,KAAK,WAAW,iBAAiB,yBAAyB;AACxE,UAAI,eAAe;AAEnB,YAAM,QAAQ,CAAC,SAAS;AACtB,cAAM,eAAe,KAAK,aAAa,MAAM,KAAK;AAClD,cAAM,cAAc,KAAK,iBAAiB,MAAM,WAAW,OAAO;AAClE,cAAMC,WAAU,gBAAgB;AAEhC,aAAK,UAAU,OAAO,UAAU,CAACA,QAAO;AACxC,YAAIA,UAAS;AACX,0BAAgB;AAAA,QAClB;AAAA,MACF,CAAC;AAED,UAAI,KAAK,gBAAgB;AACvB,aAAK,YAAY,UAAU,OAAO,UAAU,eAAe,CAAC;AAAA,MAC9D;AAEA,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB;AAClB,UAAI,CAAC,KAAK,mBAAmB,KAAK,gBAAgB,cAAc,WAAW,GAAG;AAC5E,eAAO,CAAC,MAAM,IAAI;AAAA,MACpB;AAEA,YAAM,CAAC,WAAW,OAAO,IAAI,KAAK,gBAAgB;AAClD,aAAO,CAAC,WAAW,WAAW,SAAS;AAAA,IACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aAAa,MAAM,OAAO;AACxB,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AAEA,YAAM,aAAa,KAAK,QAAQ,qBAAqB;AACrD,aAAO,WAAW,SAAS,KAAK;AAAA,IAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,iBAAiB,MAAM,WAAW,SAAS;AACzC,UAAI,CAAC,aAAa,CAAC,SAAS;AAC1B,eAAO;AAAA,MACT;AAEA,YAAM,WAAW,KAAK,QAAQ;AAC9B,UAAI,CAAC,UAAU;AACb,eAAO;AAAA,MACT;AAEA,YAAM,aAAa,KAAK,aAAa,QAAQ;AAC7C,YAAM,aAAa,KAAK,WAAW,SAAS;AAC5C,YAAM,WAAW,KAAK,SAAS,OAAO;AAEtC,aAAO,cAAc,cAAc,cAAc;AAAA,IACnD;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,SAAS;AACpB,YAAM,CAAC,MAAM,OAAO,GAAG,IAAI,QAAQ,MAAM,GAAG,EAAE,IAAI,MAAM;AACxD,aAAO,IAAI,KAAK,MAAM,QAAQ,GAAG,GAAG;AAAA,IACtC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,WAAW,MAAM;AACf,aAAO,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AAAA,IACrE;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,SAAS,MAAM;AACb,aAAO,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,GAAG,IAAI,IAAI,IAAI,GAAG;AAAA,IACtF;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AACtB,WAAK,sBAAsB;AAE3B,WAAK,WAAW,iBAAiB,kEAAkE,EAAE,QAAQ,CAAC,YAAY;AACxH,YAAI,QAAQ,QAAQ,SAAS,GAAG;AAC9B;AAAA,QACF;AAEA,aAAK,eAAe,KAAK,IAAI,UAAU,QAAQ,SAAS,EAAE,UAAU,UAAU,WAAW,MAAM,CAAC,CAAC;AAAA,MACnG,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AACtB,WAAK,gBAAgB,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAC3D,WAAK,iBAAiB,CAAC;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AACvB,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AA/RE,gBADKD,+BACE,WAAU,CAAC,UAAU,aAAa,QAAQ,OAAO;;;ACX1D,MAAAE,gCAAA;AAAA,WAAAA,+BAAA;AAAA,mBAAAC;AAAA;AAGA,MAAOC,gCAAP,cAA6B,sBAAsB;AAAA,IAQjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,WAAW;AAAA,IAClB;AAAA,IAEA,aAAa;AAEX,UAAI,YAAY;AAChB,UAAI,aAAa;AAEjB,cAAQ,IAAI,iBAAiB,KAAK,eAAe;AAEjD,UAAI,KAAK,oBAAoB,QAAQ;AACnC,oBAAY;AACZ,qBAAa;AAAA,MACf;AAEA,YAAM,UAAU,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU;AAC/C,YAAMC,QAAO;AAAA,QACX,QAAQ,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ;AAAA,QACrC,UAAU,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU;AAAA,MAC3C;AAEA,YAAMC,UAAS;AAAA,QACb,MAAM;AAAA,QACN,MAAMD;AAAA,QACN,SAAS;AAAA,UACP,SAAS;AAAA,YACP,QAAQ;AAAA,cACN,SAAS,KAAK;AAAA,cACd,QAAQ;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,cACJ,aAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,YACN,GAAG;AAAA,cACD,cAAc;AAAA,cACd,cAAc;AAAA,cACd,aAAa;AAAA,gBACX,OAAO;AAAA,cACT;AAAA,cACA,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,UAAU;AAAA,cACZ;AAAA,cACA,YAAY;AAAA,gBACV,OAAO;AAAA,cACT;AAAA,cACA,MAAM;AAAA,gBACJ,UAAU,KAAK;AAAA,gBACf,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,YAAM,UAAU,IAAIE;AAAA,QAClB,SAAS,eAAe,OAAO;AAAA,QAC/BD;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUF;AAnFE,gBAFKF,+BAEE,UAAS;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;;;ACTF,MAAAI,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,OAAO;AAGjB,YAAM,cAAc,WAAW;AAAA,IAClC;AAAA,EACF;;;AChBA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAIjD,UAAU;AACR,YAAM,QAAQ;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAAO;AACZ,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,SAAS,EAAE,KAAK,WAAW;AACjC,YAAM,YAAY,OAAO,IAAI;AAC7B,UAAI,aAAa,QAAQ;AACvB,eAAO,IAAI,OAAO;AAAA,MAEpB,OAAO;AACL,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,cAAQ,OAAO,EAAE,KAAK,uBAAuB,EAAE,YAAY,QAAQ;AAAA,IACrE;AAAA,EAEF;AAvBE,gBAFKA,gCAEE,WAAU,CAAC,OAAO;;;ACJ3B,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AACA,uBAAoB;AAEpB,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,WAAW,EAAE,KAAK,OAAO;AAG9B,WAAK,eAAe,KAAK,SAAS,KAAK,uBAAuB;AAC9D,WAAK,QAAQ,KAAK,SAAS,QAAQ,QAAQ;AAC3C,WAAK,WAAW,KAAK,SAAS,OAAO;AACrC,WAAK,mBAAmB,KAAK,SAAS,KAAK,iBAAiB;AAC5D,WAAK,YAAY,KAAK,SAAS,KAAK,YAAY;AAEhD,WAAK,aAAa,KAAK,SAAS,KAAK,aAAa;AAGlD,WAAK,SAAS,GAAG,mBAAmB,KAAK,aAAa,KAAK,IAAI,CAAC;AAAA,IAClE;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY,OAAO;AACjB,QAAE,MAAM,aAAa,EAAE,YAAY,QAAQ;AAAA,IAC7C;AAAA,IAEA,eAAe,OAAO;AACpB,WAAK,kBAAkB;AACvB,WAAK,QAAQ,QAAQ,SAAS;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB;AAClB,YAAM,eAAe,KAAK,MAAM,KAAK,4BAA4B;AAEjE,UAAG,KAAK,SAAS,SAAS,QAAQ,GAAG;AACnC,aAAK,SAAS,YAAY,QAAQ;AAClC,aAAK,iBAAiB,YAAY,QAAQ;AAC1C,qBAAa,SAAS,UAAU;AAAA,MAClC,OAAO;AACL,aAAK,SAAS,SAAS,QAAQ;AAC/B,aAAK,iBAAiB,SAAS,QAAQ;AACvC,qBAAa,YAAY,UAAU;AAAA,MACrC;AAAA,IACF;AAAA,IAEA,aAAa,OAAO;AAElB,WAAK,kBAAkB;AAKvB,YAAM,QAAQ,KAAK,SAAS,KAAK,qBAAqB;AACtD,YAAM,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,KAAK,SAAS,OAAO,CAAC;AACnE,YAAM,mBAAmB,KAAK,YAAY,KAAK,WAAW,YAAY;AAEtE,YAAM,mBAAmB,KAAK,YAAY,KAAK,UAAU,IAAI,WAAS,QAAQ,CAAC,GAAG,cAAc,KAAK;AAErG,YAAM,WAAW;AAAA,QACf,UAAU,EAAE,OAAO,iBAAiB,CAAC,GAAG,QAAQ,iBAAiB,CAAC,GAAG,MAAM,KAAK,WAAW;AAAA,QAC3F,UAAU,EAAE,OAAO,iBAAiB,CAAC,GAAG,QAAQ,iBAAiB,CAAC,GAAG,MAAM,KAAK,WAAW;AAAA,QAC3F,YAAY;AAAA,QACZ,mBAAmB;AAAA,QACnB,cAAc;AAAA,MAChB;AACA,WAAK,UAAU,MAAM,QAAQ,QAAQ;AACrC,WAAK,MAAM,MAAM,cAAc;AAAA,IACjC;AAAA,IAEA,WAAW,OAAO;AAChB,YAAMC,QAAO;AACb,WAAK,QAAQ,QAAQ,UAAU;AAAA,QAC7B,MAAM;AAAA,QACN,MAAM,EAAC,OAAO,KAAK,UAAU,CAAC,GAAG,QAAQ,KAAK,UAAU,CAAC,EAAC;AAAA,MAC5D,CAAC,EAAE,KAAK,SAAU,MAAM;AACtB,cAAM,cAAc,EAAEA,MAAK,SAAS,KAAK,qBAAqB,CAAC;AAC/D,oBAAY,KAAK,OAAO,IAAI;AAC5B,QAAAA,MAAK,SAAS,KAAK,eAAe,MAAM;AACxC,QAAAA,MAAK,QAAQ,QAAQ,SAAS;AAC9B,QAAAA,MAAK,SAAS,SAAS,QAAQ;AAAA,MACjC,CAAC;AACD,WAAK,kBAAkB;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA,IAKA,YAAYC,OAAM,SAAS,qBAAqB,MAAM;AACpD,UAAIC,SAAQD,MAAK,CAAC,GAClBE,UAASF,MAAK,CAAC,GACf,WAAW,QAAQ,CAAC,GACpB,YAAY,QAAQ,CAAC;AAGrB,YAAM,cAAc,qBAAqBC,SAAQC,UAAS;AAG1D,UAAID,SAAQ,UAAU;AACpB,QAAAA,SAAQ;AACR,QAAAC,UAAS,qBAAqB,KAAK,MAAM,WAAW,WAAW,IAAIA;AAAA,MACrE;AAGA,UAAIA,UAAS,WAAW;AACtB,QAAAA,UAAS;AACT,QAAAD,SAAQ,qBAAqB,KAAK,MAAM,YAAY,WAAW,IAAIA;AAAA,MACrE;AAEA,aAAO,CAACA,QAAOC,OAAM;AAAA,IACvB;AAAA,EACF;;;ACrHA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AACA,MAAAC,kBAAoB;AACpB,MAAAC,wBAA6B;AAE7B,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAIjD,UAAU;AACR,YAAM,QAAQ;AACd,YAAM,YAAY,EAAE,KAAK,OAAO;AAChC,WAAK,eAAe,UAAU,KAAK,QAAQ;AAC3C,WAAK,QAAQ,UAAU,KAAK,OAAO;AACnC,WAAK,aAAa,UAAU,KAAK,aAAa;AAC9C,WAAK,gBAAgB,UAAU,KAAK,gBAAgB;AACpD,WAAK,WAAW,UAAU,OAAO,EAAE,KAAK,GAAG;AAC3C,WAAK,YAAY,UAAU,KAAK,YAAY;AAAA,IAC9C;AAAA,IAGA,kBAAkB,OAAO;AACvB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAEtB,WAAK,aAAa,MAAM,MAAM;AAAA,IAChC;AAAA,IAEA,aAAa,OAAO;AAClB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,UAAG,EAAE,KAAK,WAAW,SAAY;AAC/B,aAAK,QAAQ,QAAQ,SAAS;AAC9B,gBAAQ,IAAI,mBAAmB;AAAA,MACjC;AACA,cAAQ,IAAI,mBAAmB;AAE/B,YAAM,QAAQ,KAAK,aAAa,KAAK,iBAAiB;AACtD,YAAM,cAAc,KAAK,SAAS,KAAK,KAAK;AAC5C,YAAM,KAAK,OAAO,YAAY,KAAK,KAAK,CAAC;AAGzC,YAAM,WAAW;AAAA,QACf,UAAU,EAAE,OAAO,KAAK,UAAU,CAAC,GAAG,QAAQ,KAAK,UAAU,CAAC,EAAE;AAAA,QAChE,UAAU,EAAE,OAAO,KAAK,UAAU,CAAC,IAAI,GAAG,QAAQ,KAAK,UAAU,CAAC,IAAI,EAAE;AAAA,QACxE,YAAY;AAAA,QACZ,mBAAmB;AAAA,QACnB,cAAc;AAAA,MAChB;AACA,WAAK,UAAU,MAAM,QAAQ,QAAQ;AAAA,IACvC;AAAA,IAEA,WAAW,OAAO;AAChB,YAAMC,QAAO;AACb,WAAK,QAAQ,QAAQ,UAAU;AAAA,QAC7B,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC,EAAE,KAAK,SAAU,MAAM;AACtB,cAAM,cAAcA,MAAK,SAAS,KAAK,KAAK;AAC5C,UAAE,WAAW,EAAE,KAAK,OAAO,IAAI;AAC/B,QAAAA,MAAK,aAAa,MAAM,MAAM;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,EAEF;AAzDE,gBAFKD,gCAEE,WAAU,CAAC,OAAO;;;ACN3B,MAAAE,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,WAAW,EAAE,aAAa,KAAK,OAAO;AAC3C,WAAK,cAAc,EAAE,qBAAqB,KAAK,OAAO;AACtD,WAAK,aAAa,EAAE,kBAAkB,KAAK,OAAO;AAClD,WAAK,eAAe,EAAE,oBAAoB,KAAK,OAAO;AACtD,WAAK,YAAY,KAAK;AACtB,WAAK,YAAY,YAAY,QAAQ;AACrC,WAAK,aAAa,KAAK;AACvB,WAAK,aAAa,YAAY,QAAQ;AAAA,IACxC;AAAA,IAEA,KAAK,OAAO;AACV,WAAK,SAAS,KAAK;AACnB,WAAK,YAAY,KAAK;AACtB,WAAK,WAAW,KAAK;AACrB,WAAK,aAAa,KAAK;AAAA,IACzB;AAAA,IAEA,OAAO,OAAO;AACZ,WAAK,YAAY,KAAK;AACtB,WAAK,SAAS,KAAK;AACnB,WAAK,WAAW,KAAK;AACrB,WAAK,aAAa,KAAK;AAAA,IACzB;AAAA,IAEA,OAAO,OAAO;AACZ,YAAM,eAAe;AACrB,YAAMC,QAAO;AACb,WAAK,aAAa;AAClB,WAAK,aAAa,KAAK;AACvB,YAAM,WAAW,KAAK,YAAY,IAAI;AACtC,WAAK,UAAU,qBAAqB,QAAQ,EAAE,KAAK,aAAW;AAC5D,QAAAA,MAAK,YAAY,KAAK;AACtB,QAAAA,MAAK,SAAS,KAAK,QAAQ;AAC3B,QAAAA,MAAK,SAAS,KAAK;AACnB,QAAAA,MAAK,WAAW,KAAK;AACrB,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EAEF;;;AC7CA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAgBA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA,IAMjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU;AACR,YAAM,QAAQ;AAEd,UAAI,KAAK,WAAW,WAAW,GAAG;AAChC,aAAK,IAAI;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM;AACJ,YAAMC,YAAW,KAAK;AACtB,YAAMC,SAAQD,UAAS,QAAQ,UAAU,IAAI;AAE7C,WAAK,gBAAgB,YAAYC,MAAK;AAGtC,YAAM,OAAO,KAAK;AAClB,YAAM,UAAU,KAAK,KAAK,SAAS,CAAC;AACpC,YAAM,aAAa,QAAQ,cAAc,iDAAiD;AAC1F,UAAI,YAAY;AACd,mBAAW,MAAM;AAAA,MACnB;AAEA,WAAK,QAAQ,yBAAyB;AAAA,IACxC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAO,OAAO;AACZ,YAAM,MAAM,MAAM,OAAO,QAAQ,4CAA4C;AAC7E,UAAI,KAAK;AACP,YAAI,OAAO;AACX,aAAK,QAAQ,uBAAuB;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AApDE,gBADKF,gCACE,WAAU,CAAC,aAAa,OAAO,YAAY,YAAY,YAAY;;;ACjB5E,MAAAG,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAIjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,iCAAiC;AAAA,IAChD;AAAA,IAEA,UAAU,OAAO;AACf,YAAM,eAAe;AACrB,WAAK,oBAAoB,CAAC;AAC1B,WAAK,gBAAgB;AACrB,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,UAAU,OAAO;AACf,YAAM,eAAe;AACrB,YAAM,UAAU,MAAM,cAAc,QAAQ;AAE5C,UAAI,KAAK,kBAAkB,SAAS,OAAO,GAAG;AAC5C,aAAK,oBAAoB,KAAK,kBAAkB,OAAO,SAAO,QAAQ,OAAO;AAAA,MAC/E,OAAO;AACL,aAAK,oBAAoB,CAAC,GAAG,KAAK,mBAAmB,OAAO;AAAA,MAC9D;AAEA,WAAK,gBAAgB;AACrB,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,cAAc,OAAO;AACnB,YAAM,UAAU,MAAM,OAAO;AAC7B,WAAK,sBAAsB,OAAO;AAAA,IACpC;AAAA,IAEA,sBAAsB,SAAS;AAC7B,YAAM,QAAQ,IAAI,YAAY,oBAAoB;AAAA,QAChD,QAAQ,EAAE,QAAiB;AAAA,QAC3B,SAAS;AAAA,MACX,CAAC;AACD,WAAK,QAAQ,cAAc,KAAK;AAAA,IAClC;AAAA,IAEA,kBAAkB;AAChB,YAAM,UAAU,KAAK,QAAQ,iBAAiB,mBAAmB;AAEjE,cAAQ,QAAQ,SAAO;AACrB,cAAM,UAAU,IAAI,QAAQ;AAC5B,cAAM,cAAc,CAAC;AAErB,YAAI,aAAa;AACf,cAAI,UAAU,OAAO,YAAY,KAAK,kBAAkB,WAAW,CAAC;AAAA,QACtE,OAAO;AACL,cAAI,UAAU,OAAO,YAAY,KAAK,kBAAkB,SAAS,OAAO,CAAC;AAAA,QAC3E;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,uBAAuB;AACrB,YAAM,QAAQ,IAAI,YAAY,mBAAmB;AAAA,QAC/C,QAAQ,EAAE,cAAc,KAAK,kBAAkB;AAAA,QAC/C,SAAS;AAAA,MACX,CAAC;AACD,WAAK,QAAQ,cAAc,KAAK;AAAA,IAClC;AAAA;AAAA,IAGA,IAAI,eAAe;AACjB,aAAO,KAAK;AAAA,IACd;AAAA;AAAA,IAGA,IAAI,aAAa,MAAM;AACrB,WAAK,oBAAoB,QAAQ,CAAC;AAClC,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AA3EE,gBADKA,gCACE,WAAU,CAAC,KAAK;AACvB,gBAFKA,gCAEE,UAAS,EAAE,cAAc,MAAM;;;ACJxC,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AACA,MAAAC,eAAiB;AAEjB,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAEjD,UAAU;AACR,YAAM,QAAQ;AAEd,iBAAW,MAAM;AACf,aAAK,qBAAqB;AAAA,MAC5B,GAAG,GAAG;AAAA,IACR;AAAA,IAEA,uBAAuB;AAGrB,YAAMC,cAAa,EAAE,KAAK,OAAO,EAAE,GAAG,YAAY,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,MAAM;AAM5F,YAAM,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,CAAC;AAExD,UAAIA,eAAc,YAAY;AAE5B,mBAAW,kBAAkB;AAC7B,mBAAW,aAAa,YAAY,UAAU;AAG9C,cAAM,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,gCAAgC;AACzE,oBAAY,KAAK,YAAY,IAAI;AAGjC,UAAE,UAAU,EAAE,SAAS,UAAU,EAAE,IAAI;AAAA,UACrC,oBAAoB;AAAA,UACpB,SAAS;AAAA,UACT,UAAU;AAAA,QACZ,CAAC;AAED,gBAAQ,IAAI,sBAAsB;AAAA,MACpC;AAGA,UAAI,iBAAiB,EAAE,4BAA4B;AACnD,UAAG,eAAe,UAAU,GAAG;AAC7B,yBAAiB,EAAE,kBAAkB;AAAA,MACvC;AACA,YAAM,yBAAyB,EAAE,KAAK,OAAO,EAAE,KAAK,kCAAkC;AAEtF,UAAI,uBAAuB,UAAU,CAAC,eAAe,KAAK,wBAAwB,KAAK,CAACA,aAAY;AAClG,+BAAuB,YAAY,iBAAiB;AAAA,MAEtD;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,iBAAiB,OAAO;AACtB,YAAM,eAAe;AAErB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,qBAAqB,EAAE,sBAAsB;AACnD,YAAM,oBAAoB,QAAQ,QAAQ,sBAAsB;AAChE,YAAM,YAAY,EAAE,kBAAkB,EAAE,KAAK,YAAY,KAAK,EAAE,4BAA4B,EAAE,KAAK,YAAY;AAC/G,YAAM,WAAW,kBAAkB,KAAK,IAAI;AAC5C,WAAK,UAAU,+CAA+C,MAAM,eAAe,UAAU,WAAW,IAAI,EAAE,KAAK,aAAW;AAE5H,2BAAmB,MAAM,MAAM;AAAA,MACjC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,mBAAmB,OAAO;AACxB,YAAM,eAAe;AAErB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,iBAAiB,QAAQ,QAAQ,gCAAgC;AACvE,YAAM,cAAc,QAAQ,KAAK,aAAa;AAE9C,YAAM,YAAY,EAAE,kBAAkB,EAAE,KAAK,YAAY,KAAK,EAAE,4BAA4B,EAAE,KAAK,YAAY;AAE/G,YAAM,WAAW,eAAe,KAAK,WAAW;AAEhD,WAAK,UAAU,+CAA+C,MAAM,QAAQ,UAAU,WAAW,WAAW,EAAE,KAAK,aAAW;AAAA,MAC9H,CAAC;AAAA,IACH;AAAA,IAEA,wBAAwB,OAAO;AAC7B,YAAM,eAAe;AAErB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,QAAQ,MAAM;AAEpB,YAAM,WAAW,MAAM,QAAQ;AAE/B,YAAM,YAAY,MAAM,QAAQ;AAEhC,YAAM,iBAAiB,QAAQ,QAAQ,kBAAkB;AAEzD,YAAM,WAAW,IAAI,eAAe,KAAK,WAAW;AAEpD,YAAM,SAAS,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,CAAC,EAAE;AAElD,YAAM,UAAU,GAAG,OAAO,SAAS,aAAa,OAAO,SAAS;AAGhE,YAAM,GAAG,WAAW,UAAU,EAC7B,KAAK,CAAAC,cAAYA,UAAS,KAAK,CAAC,EAChC,KAAK,UAAQ;AACZ,cAAM,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,WAAW,EAAE,MAAM,KAAK,KAAK,CAAC;AAC5D,eAAO,WAAW,IAAI;AAAA,MACxB,CAAC,EACA,MAAM,CAAAC,WAAS,QAAQ,MAAM,UAAUA,MAAK,CAAC;AAG9C,QAAE,sBAAsB,EAAE,MAAM,MAAM;AAAA,IACxC;AAAA,EACF;;;AC3HA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASjD,UAAU;AAER,WAAK,QAAQ,UAAU,IAAI,0BAA0B;AAAA,IACvD;AAAA,IAEA,aAAa;AACX,WAAK,QAAQ,UAAU,OAAO,0BAA0B;AAAA,IAC1D;AAAA;AAAA,IAGA,WAAW,OAAO;AAEhB,UAAI,CAAC,KAAK,QAAQ,UAAU,SAAS,eAAe,KAChD,CAAC,KAAK,QAAQ,UAAU,SAAS,wBAAwB,GAAG;AAC9D,aAAK,QAAQ,UAAU,IAAI,YAAY;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,WAAW,OAAO;AAChB,WAAK,QAAQ,UAAU,OAAO,YAAY;AAAA,IAC5C;AAAA,EACF;;;AChCA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQjD,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,cAAQ,IAAI,6CAA6C;AACzD,WAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AACjB,cAAQ,IAAI,gDAAgD;AAAA,IAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,qBAAqB;AACnB,WAAK,QAAQ,iBAAiB,cAAc,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAC5E,WAAK,QAAQ,iBAAiB,cAAc,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAC5E,WAAK,QAAQ,iBAAiB,WAAW,KAAK,cAAc,KAAK,IAAI,CAAC;AAAA,IACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,iBAAiB,OAAO;AACtB,WAAK,QAAQ,UAAU,IAAI,SAAS;AAGpC,UAAI,KAAK,kBAAkB;AACzB,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,iBAAiB,OAAO;AACtB,WAAK,QAAQ,UAAU,OAAO,SAAS;AAEvC,UAAI,KAAK,kBAAkB;AACzB,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,cAAc,OAAO;AACnB,UAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;AAC9C,cAAM,eAAe;AACrB,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,eAAe;AACb,YAAM,OAAO,KAAK,QAAQ,cAAc,GAAG;AAC3C,UAAI,MAAM;AACR,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,cAAc;AAEZ,cAAQ,IAAI,sBAAsB;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,cAAc;AACZ,cAAQ,IAAI,qBAAqB;AAAA,IACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,gBAAgB,SAAS;AACvB,UAAI,SAAS;AACX,aAAK,QAAQ,UAAU,IAAI,SAAS;AAAA,MACtC,OAAO;AACL,aAAK,QAAQ,UAAU,OAAO,SAAS;AAAA,MACzC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,iBAAiB,OAAO;AACtB,YAAM,SAAS,MAAM,cAAc,QAAQ;AAC3C,YAAM,SAAS,MAAM,cAAc,QAAQ;AAE3C,cAAQ,IAAI,YAAY,mBAAmB,QAAQ;AAEnD,WAAK,gBAAgB,IAAI;AAKzB,iBAAW,MAAM;AACf,aAAK,gBAAgB,KAAK;AAAA,MAC5B,GAAG,GAAI;AAAA,IACT;AAAA,EACF;;;ACrJA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWjD,UAAU;AAER,WAAK,QAAQ,UAAU,IAAI,wBAAwB;AAAA,IACrD;AAAA,IAEA,aAAa;AACX,WAAK,QAAQ,UAAU,OAAO,wBAAwB;AAAA,IACxD;AAAA;AAAA,IAGA,WAAW,OAAO;AAEhB,UAAI,CAAC,KAAK,QAAQ,UAAU,SAAS,eAAe,KAChD,CAAC,KAAK,QAAQ,UAAU,SAAS,wBAAwB,GAAG;AAC9D,aAAK,QAAQ,UAAU,IAAI,YAAY;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,WAAW,OAAO;AAChB,WAAK,QAAQ,UAAU,OAAO,YAAY;AAAA,IAC5C;AAAA,EACF;;;AClCA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWjD,UAAU;AAER,WAAK,QAAQ,UAAU,IAAI,qBAAqB;AAAA,IAClD;AAAA,IAEA,aAAa;AACX,WAAK,QAAQ,UAAU,OAAO,qBAAqB;AAAA,IACrD;AAAA;AAAA,IAGA,WAAW,OAAO;AAEhB,UAAI,CAAC,KAAK,QAAQ,UAAU,SAAS,eAAe,KAChD,CAAC,KAAK,QAAQ,UAAU,SAAS,wBAAwB,GAAG;AAC9D,aAAK,QAAQ,UAAU,IAAI,YAAY;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,WAAW,OAAO;AAChB,WAAK,QAAQ,UAAU,OAAO,YAAY;AAAA,IAC5C;AAAA,EACF;;;AClCA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAEjD,eAAe,OAAO;AACpB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,cAAc,QAAQ,KAAK,cAAc;AAC/C,YAAM,SAAS,EAAE,4BAA4B,aAAa;AAC1D,aAAO,MAAM,MAAM;AACnB,aAAO,KAAK,qBAAqB,EAAE,MAAM;AAAA,IAC3C;AAAA,IAEA,YAAY,OAAO;AACjB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,cAAc,QAAQ,KAAK,cAAc;AAC/C,YAAM,SAAS,EAAE,4BAA4B,aAAa;AAC1D,WAAK,UAAU,gCAAgC,EAAE,eAAe,KAAK,CAAC,EAAE,KAAK,MAAM;AACjF,eAAO,MAAM,MAAM;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,IAEA,YAAY,OAAO;AACjB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,QAAQ,KAAK,UAAU;AACvC,YAAM,SAAS,QAAQ,QAAQ,mBAAmB;AAClD,WAAK,UAAU,gCAAgC,OAAO,EAAE,KAAK,MAAM;AACjE,eAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,IAEA,cAAc,OAAO;AACnB,UAAI,SAAS,EAAE,MAAM,aAAa;AAClC,UAAI,gBAAgB,SAAS,OAAO,KAAK,eAAe,CAAC,GACvD,sBAAsB,SAAS,OAAO,KAAK,qBAAqB,CAAC,GACjE,gBAAgB,SAAS,OAAO,KAAK,eAAe,CAAC,GACrD,OAAO,OAAO,KAAK,MAAM;AAC3B,WAAK;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,MAAM;AACX,UAAE,2BAA2B,EAAE,MAAM,MAAM;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA,IAEA,iBAAiB,OAAO;AACtB,UAAI,SAAS,EAAE,MAAM,aAAa;AAClC,UAAI,gBAAgB,SAAS,OAAO,KAAK,eAAe,CAAC,GACvD,sBAAsB,SAAS,OAAO,KAAK,qBAAqB,CAAC,GACjE,gBAAgB,SAAS,OAAO,KAAK,eAAe,CAAC,GACrD,OAAO,OAAO,KAAK,MAAM;AAC3B,WAAK,UAAU,2CAA2C,EAAE,eAAe,KAAK,CAAC,EAAE,KAAK,MAAM;AAC5F,UAAE,2BAA2B,EAAE,MAAM,MAAM;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAMA,OAAO,OAAO;AACZ,UAAI,SAAS,EAAE,MAAM,aAAa;AAClC,UAAI,sBAAsB,SAAS,OAAO,KAAK,qBAAqB,CAAC;AACrE,WAAK,UAAU,gCAAgC,mBAAmB;AAAA,IACpE;AAAA,EAEF;;;ACvEA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc;AACpD,WAAK,QAAQ,KAAK,UAAU,KAAK,OAAO;AACxC,WAAK,SAAS,KAAK,KAAK;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,WAAK,UAAU,KAAK,IAAI,KAAK,OAAO,EAAE,SAAS,QAAQ;AACvD,WAAK,UAAU,KAAK,SAAS,KAAK,QAAQ,EAAE,YAAY,QAAQ;AAEhE,WAAK,UAAU,KAAK,SAAS,KAAK,KAAK;AAEvC,UAAI,KAAK,UAAU,QAAQ;AACzB,aAAK,cAAc,KAAK,aAAa,CAAC;AAAA,MACxC;AAEA,WAAK,WAAW;AAChB,WAAK,cAAc;AAAA,IACrB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY,OAAO;AACjB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,QAAQ,QAAQ,KAAK,OAAO;AAClC,WAAK,SAAS,UAAU,SAAS,SAAS,MAAM;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa;AACX,UAAI,KAAK,eAAe;AACtB,YAAI,KAAK,UAAU,QAAQ;AACzB,YAAE,KAAK,UAAU,EAAE,YAAY,QAAQ;AAAA,QACzC,OAAO;AACL,YAAE,KAAK,UAAU,EAAE,SAAS,QAAQ;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB;AACd,UAAI,KAAK,kBAAkB;AACzB,YAAI,KAAK,UAAU,QAAQ;AACzB,YAAE,KAAK,aAAa,EAAE,YAAY,QAAQ;AAAA,QAC5C,OAAO;AACL,YAAE,KAAK,aAAa,EAAE,SAAS,QAAQ;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe;AACb,UAAI,KAAK,eAAe;AACtB,eAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,IAAI;AAAA,MACjD;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc,SAAS;AACrB,UAAI,KAAK,kBAAkB;AACzB,UAAE,KAAK,aAAa,EAAE,KAAK,OAAO;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAvFE,gBADKA,gCACE,WAAU,CAAC,WAAW,MAAM;;;ACHrC,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAIjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,eAAe;AAAA,IACtB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAAA,IAEhB;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,IAAIC,OAAM,UAAU;AACvB,SAAG,gBAAgB;AAEnB,YAAM,OAAO,GAAG,aAAa,QAAQ,MAAM,GACzC,UAAU,GAAG,aAAa,QAAQ,SAAS,GAC3C,QAAQ,GAAG,aAAa,QAAQ,OAAO,GACvC,UAAU,EAAE,GAAG,MAAM,GACrB,QAAQ,QAAQ,QAAQ,WAAW;AAMrC,UAAI,CAAC,eAAe,sBAAsB,EAAE,SAAS,IAAI,KAAK,QAAQ,QAAW;AAC/E,cAAM,SAAS,cAAc;AAC7B;AAAA,MACF,OAAO;AACL,cAAM,YAAY,cAAc;AAAA,MAClC;AAEA,YAAM,WAAW,MAAM,KAAK,UAAU;AAEtC,cAAQ,IAAI,QAAQ;AAEpB,UAAG,CAAC,UAAU;AACZ,QAAAA,MAAK,aAAa;AAClB,QAAAA,MAAK,UAAU,gCAA+B,EAAE,eAAe,MAAM,GAAG,MAAM,SAAS,OAAO,QAAQ,EAAE,KAAK,MAAM;AAEjH,UAAAA,MAAK,YAAY;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAgB;AACd,UAAIA,QAAO;AAYX,WAAK,YAAY,QAAQ,SAAU,IAAIC,QAAO;AAC5C,UAAE,EAAE,EAAE,GAAG,aAAa,SAAS,IAAI;AACjC,gBAAM,QAAQ,EAAE,GAAG,MAAM,EAAE,QAAQ,WAAW;AAE9C,cAAG,MAAM,KAAK,UAAU,GAAG;AACzB,kBAAM,QAAQ,SAAS;AAAA,UACzB;AACA,gBAAM,YAAY,SAAS;AAAA,QAC7B,CAAC;AAAA,MACH,CAAC;AAGD,QAAE,KAAK,OAAO,EAAE,GAAG,YAAY,SAAS,IAAI;AAC1C,WAAG,eAAe;AAClB,cAAM,QAAQ,EAAE,GAAG,MAAM,EAAE,QAAQ,WAAW;AAE9C,YAAG,MAAM,KAAK,UAAU,GAAG;AACzB,gBAAM,QAAQ,MAAM;AAAA,QACtB;AACA,cAAM,SAAS,SAAS;AAAA,MAC5B,CAAC;AAGC,WAAK,YAAY,QAAQ,SAAU,IAAIA,QAAO;AAC5C,UAAE,EAAE,EAAE,GAAG,QAAQ,SAAU,IAAI;AAC7B,gBAAM,QAAQ,EAAE,GAAG,MAAM,EAAE,QAAQ,WAAW;AAC9C,gBAAM,WAAW,MAAM,KAAK,WAAW;AAEvC,gBAAM,YAAY,SAAS;AAC3B,UAAAD,MAAK,KAAK,GAAG,eAAeA,OAAM,QAAQ;AAAA,QAC5C,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,OAAO;AAEzB,YAAM,OAAO,MAAM;AACnB,WAAK,UAAU,yCAAyC,MAAK,EAAE,eAAe,MAAM,CAAC,EAAE,KAAK,MAAM;AAChG,0BAAkB,EAAE,gCAAgC,CAAC;AACrD,UAAE,gCAAgC,EAAE,YAAY,QAAQ;AACxD,UAAE,mBAAmB,EAAE,KAAK;AAAA,MAC9B,CAAC;AAAA,IAEH;AAAA,IAEA,YAAY,OAAO;AACjB,YAAM,UAAU,EAAE,MAAM,aAAa;AAErC,YAAM,gBAAgB,QAAQ,KAAK,gBAAgB;AAEnD,YAAM,cAAc,QAAQ,KAAK,cAAc;AAE/C,YAAM,OAAO,EAAE,gCAAgC,EAAE,KAAK,MAAM,EAAE,CAAC;AAE/D,WAAK,UAAU,gCAAgC,MAAK,EAAE,eAAe,KAAK,GAAG,eAAe,WAAW,EAAE,KAAK,MAAM;AAClH,UAAE,gCAAgC,EAAE,SAAS,QAAQ;AACrD,UAAE,mBAAmB,EAAE,KAAK;AAAA,MAC9B,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,OAAO;AACpB,QAAE,gCAAgC,EAAE,SAAS,QAAQ;AACrD,QAAE,mBAAmB,EAAE,KAAK;AAAA,IAChC;AAAA,IAEA,WAAW,OAAO;AAEhB,YAAM,OAAO,EAAE,MAAM,aAAa,EAAE,QAAQ,WAAW;AAEvD,WAAK,UAAU,mCAAmC,KAAK,CAAC,GAAG,EAAE,eAAe,MAAM,CAAC,EAAE,KAAK,MAAM;AAC9F,gBAAQ,IAAI,cAAc;AAAA,MAC5B,CAAC;AAAA,IAEH;AAAA,EAEF;AAlJE,gBAFKD,gCAEE,WAAU,CAAE,MAAO;;;ACJ5B,MAAAG,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAMA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMjD,UAAU,OAAO;AACf,YAAM,eAAe;AAErB,YAAM,SAAS,MAAM;AACrB,YAAM,yBAAyB,OAAO,QAAQ;AAC9C,YAAM,YAAY,OAAO,QAAQ;AACjC,YAAM,WAAW,OAAO,QAAQ;AAChC,YAAM,aAAa,OAAO,QAAQ;AAClC,YAAM,cAAc,OAAO,QAAQ;AACnC,YAAM,gBAAgB,OAAO,QAAQ;AACrC,YAAM,eAAe,OAAO,QAAQ;AACpC,YAAM,aAAa,OAAO,QAAQ;AAElC,UAAI,CAAC,YAAY;AACf,gBAAQ,MAAM,8CAA8C;AAC5D;AAAA,MACF;AAEA,WAAK,aAAa;AAGlB,WAAK;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,MAAM;AAGX,cAAM,MAAM,IAAI,IAAI,YAAY,OAAO,SAAS,MAAM;AACtD,YAAI,eAAe,eAAe;AAChC,cAAI,aAAa,IAAI,kBAAkB,WAAW;AAGlD,cAAI,aAAa,IAAI,kBAAkB,aAAa;AAGpD,cAAI,aAAa,IAAI,gBAAgB,cAAc,EAAE;AAIrD,cAAI,cAAc;AAChB,gBAAI,aAAa,IAAI,iBAAiB,YAAY;AAAA,UACpD,OAAO;AAEL,gBAAI,aAAa,IAAI,iBAAiB,OAAO,SAAS,WAAW,OAAO,SAAS,MAAM;AAAA,UACzF;AAAA,QACF;AACA,eAAO,SAAS,OAAO,IAAI,SAAS;AAAA,MACtC,CAAC,EAAE,MAAM,CAACC,WAAU;AAElB,gBAAQ,MAAM,+BAA+BA,MAAK;AAClD,aAAK,YAAY;AAAA,MAEnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe,OAAO;AACpB,YAAM,eAAe;AAErB,YAAM,SAAS,MAAM;AACrB,YAAM,yBAAyB,OAAO,QAAQ;AAC9C,YAAM,YAAY,OAAO,QAAQ;AACjC,YAAM,WAAW,OAAO,QAAQ;AAChC,YAAM,aAAa,OAAO,QAAQ;AAClC,YAAM,cAAc,OAAO,QAAQ;AACnC,YAAM,gBAAgB,OAAO,QAAQ;AACrC,YAAM,eAAe,OAAO,QAAQ;AACpC,YAAM,aAAa,OAAO,QAAQ;AAElC,UAAI,CAAC,YAAY;AACf,gBAAQ,MAAM,8CAA8C;AAC5D;AAAA,MACF;AAEA,WAAK,aAAa;AAElB,WAAK;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,MAAM;AACX,cAAM,MAAM,IAAI,IAAI,YAAY,OAAO,SAAS,MAAM;AACtD,YAAI,eAAe,eAAe;AAChC,cAAI,aAAa,IAAI,kBAAkB,WAAW;AAClD,cAAI,aAAa,IAAI,kBAAkB,aAAa;AACpD,cAAI,aAAa,IAAI,gBAAgB,cAAc,EAAE;AACrD,cAAI,cAAc;AAChB,gBAAI,aAAa,IAAI,iBAAiB,YAAY;AAAA,UACpD,OAAO;AACL,gBAAI,aAAa,IAAI,iBAAiB,OAAO,SAAS,WAAW,OAAO,SAAS,MAAM;AAAA,UACzF;AAAA,QACF;AACA,eAAO,SAAS,OAAO,IAAI,SAAS;AAAA,MACtC,CAAC,EAAE,MAAM,CAACA,WAAU;AAClB,gBAAQ,MAAM,gDAAgDA,MAAK;AACnE,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAME,SAAS,OAAO;AACd,YAAM,eAAe;AAErB,YAAM,SAAS,MAAM;AACrB,YAAM,YAAY,OAAO,QAAQ;AACjC,YAAM,aAAa,OAAO,QAAQ;AAElC,UAAI,CAAC,YAAY;AACf,gBAAQ,MAAM,8CAA8C;AAC5D;AAAA,MACF;AAEA,WAAK,aAAa;AAElB,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA,EACJ;;;ACzIA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA,IAajD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,YAAY;AACjB,WAAK,iBAAiB,oBAAI,IAAI;AAAA,IAEhC;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,cAAc,OAAO;AACnB,YAAM,eAAe;AACrB,WAAK,aAAa;AAIlB,WAAK,0BAA0B;AAE/B,YAAM,cAAc,KAAK,sBAAsB;AAC/C,WAAK,UAAU,sCAAsC,MAAM,eAAe,WAAW,EAClF,KAAK,MAAM;AACV,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,WAAW,OAAO;AAChB,YAAM,eAAe;AACrB,WAAK,aAAa;AAIlB,WAAK,uBAAuB,MAAM,MAAM;AAGxC,WAAK,0BAA0B;AAE/B,YAAM,cAAc,KAAK,sBAAsB;AAC/C,WAAK,UAAU,sCAAsC,MAAM,eAAe,WAAW,EAClF,KAAK,MAAM;AACV,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe,OAAO;AACpB,YAAM,eAAe;AACrB,WAAK,aAAa;AAGlB,YAAM,OAAO,UAAU,OAAO,UAAU;AAGxC,WAAK,0BAA0B;AAE/B,YAAM,cAAc,KAAK,sBAAsB;AAC/C,WAAK,UAAU,sCAAsC,MAAM,eAAe,WAAW,EAClF,KAAK,MAAM;AACV,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,WAAK,aAAa;AAGlB,WAAK,2BAA2B;AAGhC,WAAK,0BAA0B;AAE/B,YAAM,cAAc,KAAK,sBAAsB;AAC/C,WAAK,UAAU,sCAAsC,MAAM,eAAe,WAAW,EAClF,KAAK,MAAM;AACV,aAAK,YAAY;AAAA,MACnB,CAAC,EACA,MAAM,CAACC,WAAU;AAChB,gBAAQ,MAAM,yBAAyBA,MAAK;AAC5C,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,wBAAwB;AACtB,aAAO;AAAA,QACL,UAAU,KAAK,gBAAgB;AAAA,QAC/B,qBAAqB,KAAK,sBAAsB;AAAA,QAChD,eAAe,KAAK,gBAAgB;AAAA,MACtC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,kBAAkB;AAChB,UAAI,KAAK,wBAAwB;AAC/B,eAAO,KAAK,oBAAoB;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,wBAAwB;AACtB,UAAI,CAAC,KAAK,yBAAyB;AACjC,eAAO,CAAC;AAAA,MACV;AAEA,YAAM,kBAAkB,KAAK,sBAAsB;AAAA,QAAO,SACxD,IAAI,UAAU,SAAS,UAAU,KAAK,IAAI,QAAQ;AAAA,MACpD;AACA,aAAO,gBAAgB,IAAI,SAAO,IAAI,QAAQ,QAAQ;AAAA,IACxD;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,kBAAkB;AAChB,UAAI,CAAC,KAAK,qBAAqB;AAC7B,eAAO;AAAA,MACT;AAEA,YAAM,eAAe,KAAK,kBAAkB;AAAA,QAAK,SAC/C,IAAI,UAAU,SAAS,QAAQ,KAAK,IAAI,UAAU,SAAS,UAAU;AAAA,MACvE;AACA,aAAO,eAAe,aAAa,QAAQ,OAAO;AAAA,IACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,uBAAuB,eAAe;AACpC,UAAI,CAAC,KAAK;AAAqB;AAG/B,WAAK,kBAAkB,QAAQ,SAAO;AACpC,YAAI,UAAU,OAAO,UAAU,UAAU;AAAA,MAC3C,CAAC;AAGD,oBAAc,UAAU,IAAI,QAAQ;AAAA,IACtC;AAAA;AAAA;AAAA;AAAA,IAKA,6BAA6B;AAC3B,UAAI,CAAC,KAAK;AAAyB;AAGnC,WAAK,sBAAsB,QAAQ,SAAO;AACxC,YAAI,UAAU,OAAO,UAAU;AAAA,MACjC,CAAC;AAGD,YAAM,YAAY,KAAK,sBAAsB,KAAK,SAAO,CAAC,IAAI,QAAQ,QAAQ;AAC9E,UAAI,WAAW;AACb,kBAAU,UAAU,IAAI,UAAU;AAAA,MACpC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,0BAA0B,wBAAwB,MAAM,eAAe,MAAM;AAC3E,YAAM,eAAe,KAAK,sBAAsB;AAGhD,YAAMC,UAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAIzD,MAAAA,QAAO,OAAO,qBAAqB;AACnC,YAAM,eAAe,CAAC;AACtB,iBAAW,CAACC,IAAG,KAAKD,SAAQ;AAC1B,YAAIC,KAAI,WAAW,qBAAqB,GAAG;AACzC,uBAAa,KAAKA,IAAG;AAAA,QACvB;AAAA,MACF;AACA,mBAAa,QAAQ,CAAAA,SAAOD,QAAO,OAAOC,IAAG,CAAC;AAG9C,UAAI,aAAa,uBAAuB,aAAa,oBAAoB,SAAS,GAAG;AACnF,qBAAa,oBAAoB,QAAQ,cAAY;AACnD,UAAAD,QAAO,OAAO,yBAAyB,QAAQ;AAAA,QACjD,CAAC;AAAA,MACH;AAGA,UAAI,aAAa,iBAAiB,aAAa,kBAAkB,cAAc;AAC7E,QAAAA,QAAO,IAAI,iBAAiB,aAAa,aAAa;AAAA,MACxD,OAAO;AACL,QAAAA,QAAO,OAAO,eAAe;AAAA,MAC/B;AAGA,UAAI,aAAa,aAAa,MAAM;AAClC,QAAAA,QAAO,IAAI,YAAY,MAAM;AAAA,MAC/B,OAAO;AACL,QAAAA,QAAO,OAAO,UAAU;AAAA,MAC1B;AAGA,UAAI,uBAAuB;AACzB,YAAI,0BAA0B,OAAO;AACnC,UAAAA,QAAO,IAAI,kBAAkB,qBAAqB;AAAA,QACpD,OAAO;AACL,UAAAA,QAAO,OAAO,gBAAgB;AAAA,QAChC;AAAA,MACF;AAGA,UAAI,iBAAiB,MAAM;AACzB,YAAI,eAAe,GAAG;AACpB,UAAAA,QAAO,IAAI,QAAQ,YAAY;AAAA,QACjC,OAAO;AACL,UAAAA,QAAO,OAAO,MAAM;AAAA,QACtB;AAAA,MACF;AAGA,YAAM,SAAS,OAAO,SAAS,YAAYA,QAAO,SAAS,IAAI,MAAMA,QAAO,SAAS,IAAI;AAGzF,aAAO,QAAQ,aAAa,CAAC,GAAG,IAAI,MAAM;AAAA,IAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,oBAAoB,OAAO;AACzB,YAAM,eAAe;AACrB,WAAK,aAAa;AAElB,YAAM,WAAW,MAAM,cAAc,QAAQ;AAG7C,WAAK,0BAA0B,QAAQ;AAGvC,aAAO,SAAS,OAAO,OAAO,SAAS;AAAA,IACzC;AAAA,EAEF;AA9RE,gBADKF,gCACE,UAAS;AAAA,IACd,cAAc,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IAC3C,YAAY,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,EACvD;AACA,gBALKA,gCAKE,WAAU;AAAA,IACf;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,EACF;;;ACXF,MAAAI,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAIjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,sDAAsD;AACnE,WAAK,wBAAwB,CAAC;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,cAAc,OAAO;AACnB,YAAM,eAAe;AAErB,YAAM,iBAAiB,MAAM;AAC7B,YAAM,YAAY,eAAe,QAAQ;AAEzC,UAAI,MAAM,YAAY,KAAK,sBAAsB,QAAW;AAC1D,aAAK,YAAY,WAAW,cAAc;AAAA,MAC5C,WAAW,MAAM,WAAW,MAAM,SAAS;AACzC,aAAK,cAAc,WAAW,cAAc;AAAA,MAC9C,OAAO;AACL,aAAK,aAAa,WAAW,cAAc;AAAA,MAC7C;AAEA,WAAK,sBAAsB;AAC3B,WAAK,QAAQ,sBAAsB,KAAK,sBAAsB,KAAK,IAAI,GAAG;AAAA,IAC5E;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,WAAW,gBAAgB;AACtC,WAAK,wBAAwB,CAAC,SAAS;AACvC,WAAK,oBAAoB,KAAK,gBAAgB,cAAc;AAAA,IAC9D;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,WAAW,gBAAgB;AACvC,UAAI,KAAK,sBAAsB,SAAS,SAAS,GAAG;AAClD,aAAK,wBAAwB,KAAK,sBAAsB,OAAO,CAAAC,QAAMA,QAAO,SAAS;AAAA,MACvF,OAAO;AACL,aAAK,wBAAwB,CAAC,GAAG,KAAK,uBAAuB,SAAS;AAAA,MACxE;AACA,WAAK,oBAAoB,KAAK,gBAAgB,cAAc;AAAA,IAC9D;AAAA;AAAA;AAAA;AAAA,IAKA,YAAY,WAAW,gBAAgB;AACrC,YAAM,eAAe,KAAK,gBAAgB,cAAc;AACxD,YAAM,aAAa,KAAK,IAAI,KAAK,mBAAmB,YAAY;AAChE,YAAM,WAAW,KAAK,IAAI,KAAK,mBAAmB,YAAY;AAE9D,YAAM,kBAAkB,KAAK;AAC7B,YAAM,WAAW,CAAC;AAElB,eAASC,KAAI,YAAYA,MAAK,UAAUA,MAAK;AAC3C,YAAI,gBAAgBA,EAAC,GAAG;AACtB,mBAAS,KAAK,gBAAgBA,EAAC,EAAE,QAAQ,SAAS;AAAA,QACpD;AAAA,MACF;AAGA,YAAM,eAAe,oBAAI,IAAI,CAAC,GAAG,KAAK,uBAAuB,GAAG,QAAQ,CAAC;AACzE,WAAK,wBAAwB,MAAM,KAAK,YAAY;AAAA,IACtD;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,gBAAgB;AAC9B,aAAO,KAAK,mBAAmB,QAAQ,cAAc;AAAA,IACvD;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AACtB,WAAK,mBAAmB,QAAQ,aAAW;AACzC,cAAM,YAAY,QAAQ,QAAQ;AAClC,cAAM,aAAa,KAAK,sBAAsB,SAAS,SAAS;AAEhE,gBAAQ,UAAU,OAAO,YAAY,UAAU;AAAA,MACjD,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU,OAAO;AACf,YAAM,iBAAiB,MAAM;AAC7B,YAAM,YAAY,eAAe,QAAQ;AAGzC,UAAI,CAAC,KAAK,sBAAsB,SAAS,SAAS,GAAG;AACnD,aAAK,aAAa,WAAW,cAAc;AAC3C,aAAK,sBAAsB;AAAA,MAC7B;AAGA,YAAM,aAAa,QAAQ,cAAc,KAAK,UAAU,KAAK,qBAAqB,CAAC;AACnF,YAAM,aAAa,QAAQ,aAAa,SAAS;AACjD,YAAM,aAAa,QAAQ,eAAe,eAAe,QAAQ,WAAW;AAG5E,eAAS,cAAc,IAAI,YAAY,mCAAmC,CAAC;AAG3E,WAAK,gBAAgB;AAErB,WAAK,QAAQ,YAAY,KAAK,sBAAsB,sBAAsB,KAAK,sBAAsB,KAAK,IAAI,GAAG;AAAA,IACnH;AAAA;AAAA;AAAA;AAAA,IAKA,QAAQ,OAAO;AAEb,eAAS,cAAc,IAAI,YAAY,iCAAiC,CAAC;AAGzE,WAAK,mBAAmB;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AAChB,WAAK,mBAAmB,QAAQ,aAAW;AACzC,cAAM,YAAY,QAAQ,QAAQ;AAClC,cAAM,aAAa,KAAK,sBAAsB,SAAS,SAAS;AAEhE,YAAI,YAAY;AACd,kBAAQ,UAAU,IAAI,UAAU;AAAA,QAClC,OAAO;AACL,kBAAQ,UAAU,IAAI,cAAc;AAAA,QACtC;AAAA,MACF,CAAC;AAGD,iBAAW,MAAM;AACf,aAAK,mBAAmB;AAAA,MAC1B,GAAG,GAAG;AAAA,IACR;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,WAAK,mBAAmB,QAAQ,aAAW;AACzC,gBAAQ,UAAU,OAAO,YAAY,cAAc;AAAA,MACrD,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB;AACf,WAAK,wBAAwB,CAAC;AAC9B,WAAK,oBAAoB;AACzB,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,qBAAqB;AACvB,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAxLE,gBADKF,gCACE,WAAU,CAAC,aAAa;AAC/B,gBAFKA,gCAEE,UAAS,EAAE,kBAAkB,MAAM;;;ACJ5C,MAAAG,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAIjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,WAAK,QAAQ,0CAA0C;AAAA,IACzD;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,wCAAwC,KAAK,qBAAqB;AAAA,IACjF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,WAAK,QAAQ,2BAA2B;AAAA,IAE1C;AAAA,IAEA,MAAM,gBAAgB,OAAO;AAC3B,YAAM,eAAe;AACrB,YAAM,cAAc,MAAM,cAAc,QAAQ;AAChD,YAAM,iBAAiB,MAAM,cAAc,QAAQ;AAEnD,UAAI,CAAC,QAAQ,cAAc,GAAG;AAC5B;AAAA,MACF;AAGA,YAAM,qBAAqB,MAAM,cAAc,QAAQ;AACvD,WAAK,0BAA0B,aAAa,kBAAkB;AAG9D,UAAI;AACF,cAAM,KAAK;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,SAASC,QAAP;AACA,gBAAQ,MAAM,qCAAqCA,MAAK;AAAA,MAC1D;AAAA,IACF;AAAA,IAEA,0BAA0B,aAAa,4BAA4B;AAEjE,YAAM,0BAA0B,CAAC,UAAU;AACzC,cAAM,QAAQ,MAAM,OAAO;AAC3B,cAAMC,WAAU,2BAA2B,QAAQ,YAAY,KAAK;AAEpE,YAAI,QAAQA,QAAO,GAAG;AAEpB,eAAK;AAAA,YACH;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,oBAAoB,oCAAoC,uBAAuB;AAAA,MAC1F;AAEA,eAAS,iBAAiB,oCAAoC,uBAAuB;AAGrF,YAAM,gBAAgB,CAAC,UAAU;AAC/B,cAAM,WAAW,MAAM,OAAO;AAG9B,YAAI,OAAO,SAAS,aAAa,4BAA4B;AAE3D,iBAAO,SAAS,OAAO;AAAA,QACzB,OAAO;AAEL,cAAI,UAAU;AAEZ,mBAAO,SAAS,OAAO;AAAA,UACzB,OAAO;AAEL,mBAAO,SAAS,OAAO;AAAA,UACzB;AAAA,QACF;AAEA,iBAAS,oBAAoB,qBAAqB,aAAa;AAAA,MACjE;AAEA,eAAS,iBAAiB,qBAAqB,aAAa;AAG5D,YAAM,qBAAqB,CAAC,UAAU;AACpC,cAAMA,WAAU,MAAM,OAAO;AAC7B,cAAMA,YAAW,iBAAiB;AAClC,gBAAQ,MAAM,8BAA8BA,QAAO;AAEnD,iBAAS,oBAAoB,2BAA2B,kBAAkB;AAAA,MAC5E;AAEA,eAAS,iBAAiB,2BAA2B,kBAAkB;AAAA,IACzE;AAAA,EACF;AAvGE,gBADKF,gCACE,WAAU,CAAC,UAAU,YAAY,iBAAiB,cAAc;AACvE,gBAFKA,gCAEE,UAAS,EAAE,gBAAgB,OAAO;;;ACJ3C,MAAAG,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAMA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA,IASjD,UAAU;AACR,YAAM,QAAQ;AACd,cAAQ,IAAI,gDAAyC;AAAA,QACnD,eAAe,KAAK;AAAA,QACpB,eAAe,KAAK;AAAA,QACpB,WAAW,KAAK;AAAA,MAClB,CAAC;AACD,WAAK,wBAAwB;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B;AACxB,cAAQ,IAAI,0CAAmC,KAAK,cAAc;AAElE,WAAK,oBAAoB,KAAK,cAAc;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe,OAAO;AACpB,cAAQ,IAAI,mCAA4B;AACxC,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAGtB,WAAK,iBAAiB,CAAC,KAAK;AAC5B,cAAQ,IAAI,+BAA0B,KAAK,cAAc;AAGzD,WAAK,oBAAoB,KAAK,cAAc;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,oBAAoB,WAAW;AAC7B,UAAI,CAAC,KAAK,yBAAyB,CAAC,KAAK;AAAuB;AAEhE,UAAI,WAAW;AAEb,aAAK,mBAAmB,MAAM,UAAU;AAGxC,aAAK,mBAAmB,cAAc;AAAA,MACxC,OAAO;AAEL,aAAK,mBAAmB,MAAM,UAAU;AAGxC,aAAK,mBAAmB,cAAc;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAjEE,gBADKA,gCACE,WAAU,CAAC,gBAAgB,cAAc;AAChD,gBAFKA,gCAEE,UAAS;AAAA,IACd,WAAW,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,EAC5C;;;ACVF,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAIA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAMjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,WAAK,qBAAqB,CAAC;AAC3B,WAAK,2BAA2B,CAAC;AACjC,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,uBAAuB;AAC5B,WAAK,mBAAmB;AACxB,WAAK,2BAA2B;AAChC,WAAK,yBAAyB;AAC9B,WAAK,oBAAoB;AACzB,WAAK,6BAA6B;AAGlC,WAAK,2BAA2B;AAChC,WAAK,kCAAkC;AACvC,WAAK,gCAAgC;AAGrC,WAAK,yBAAyB;AAC9B,WAAK,8BAA8B;AAGnC,eAAS,iBAAiB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IACrF;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,yBAAyB;AAC9B,eAAS,oBAAoB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IACxF;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AAEvB,YAAM,UAAU,SAAS,KAAK,QAAQ,gBAAgB;AAGtD,YAAM,aAAa,aAAa,KAAK;AAErC,WAAK,eAAe,IAAI,qBAAqB,YAAY;AAAA,QACvD,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,MACV,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,YAAM,yBAAyB;AAG/B,YAAM,MAAM,MAAM,cAAc;AAChC,UAAI,KAAK;AACP,eAAO,SAAS,OAAO;AAAA,MACzB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB;AACpB,WAAK,0BAA0B;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA,IAKA,+BAA+B;AAC7B,WAAK,+BAA+B,KAAK,6BAA6B,KAAK,IAAI;AAC/E,WAAK,6BAA6B,KAAK,2BAA2B,KAAK,IAAI;AAE3E,eAAS,iBAAiB,qCAAqC,KAAK,4BAA4B;AAChG,eAAS,iBAAiB,mCAAmC,KAAK,0BAA0B;AAAA,IAC9F;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AACzB,eAAS,oBAAoB,qCAAqC,KAAK,4BAA4B;AACnG,eAAS,oBAAoB,mCAAmC,KAAK,0BAA0B;AAAA,IACjG;AAAA;AAAA;AAAA;AAAA,IAKA,+BAA+B;AAC7B,WAAK,0BAA0B;AAC/B,WAAK,QAAQ,sCAAsC;AAGnD,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,6BAA6B;AAC3B,WAAK,0BAA0B;AAC/B,WAAK,QAAQ,oCAAoC;AAGjD,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AACtB,YAAM,WAAW,KAAK,QAAQ,cAAc,qBAAqB;AACjE,UAAI,UAAU;AACZ,iBAAS,UAAU,IAAI,mBAAmB;AAAA,MAC5C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AACtB,YAAM,WAAW,KAAK,QAAQ,cAAc,qBAAqB;AACjE,UAAI,UAAU;AACZ,iBAAS,UAAU,OAAO,mBAAmB;AAC7C,iBAAS,UAAU,OAAO,WAAW;AACrC,iBAAS,gBAAgB,oBAAoB;AAAA,MAC/C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,YAAM,oBAAoB,KAAK,QAAQ,cAAc,qBAAqB;AAC1E,UAAI,qBAAqB,CAAC,KAAK,kBAAkB;AAC/C,aAAK,mBAAmB,qBAAS,OAAO,mBAAmB;AAAA,UACzD,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,SAAS,CAAC,QAAQ;AAChB,iBAAK,YAAY;AAAA,UACnB;AAAA,UACA,OAAO,CAAC,QAAQ;AACd,iBAAK,cAAc,GAAG;AACtB,uBAAW,MAAM;AACf,mBAAK,YAAY;AAAA,YACnB,GAAG,GAAG;AAAA,UACR;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,6BAA6B;AAC3B,YAAM,4BAA4B,KAAK,QAAQ,cAAc,sBAAsB;AACnF,UAAI,6BAA6B,CAAC,KAAK,0BAA0B;AAC/D,aAAK,2BAA2B,qBAAS,OAAO,2BAA2B;AAAA,UACzE,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,SAAS,CAAC,QAAQ;AAChB,iBAAK,oBAAoB;AAAA,UAC3B;AAAA,UACA,OAAO,CAAC,QAAQ;AACd,iBAAK,mBAAmB,GAAG;AAC3B,uBAAW,MAAM;AACf,mBAAK,oBAAoB;AAAA,YAC3B,GAAG,GAAG;AAAA,UACR;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AACzB,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,6BAA6B;AAEpF,uBAAiB,QAAQ,YAAU;AACjC,cAAM,WAAW,OAAO,QAAQ;AAChC,cAAM,SAAS,KAAK,QAAQ,cAAc,QAAQ;AAClD,cAAM,OAAO,OAAO,cAAc,gBAAgB;AAElD,YAAI,UAAU,MAAM;AAClB,iBAAO,iBAAiB,qBAAqB,MAAM;AACjD,iBAAK,cAAc;AACnB,iBAAK,kBAAkB,UAAU,IAAI;AAAA,UACvC,CAAC;AAED,iBAAO,iBAAiB,sBAAsB,MAAM;AAClD,iBAAK,cAAc;AACnB,iBAAK,kBAAkB,UAAU,KAAK;AAAA,UACxC,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAED,WAAK,sBAAsB;AAC3B,WAAK,4BAA4B;AAAA,IACnC;AAAA;AAAA;AAAA;AAAA,IAKA,8BAA8B;AAC5B,YAAM,oBAAoB,KAAK,QAAQ,cAAc,4BAA4B;AACjF,YAAM,SAAS,KAAK,QAAQ,cAAc,+CAA+C;AACzF,YAAM,OAAO,QAAQ,cAAc,gBAAgB;AAEnD,UAAI,qBAAqB,CAAC,kBAAkB,UAAU,SAAS,MAAM,GAAG;AACtE,0BAAkB,UAAU,IAAI,MAAM;AACtC,YAAI;AAAM,eAAK,cAAc;AAC7B,aAAK,kBAAkB,8BAA8B,IAAI;AAAA,MAC3D;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,kBAAkB,UAAU,QAAQ;AAClC,UAAI,KAAK,cAAc;AACrB,aAAK,aAAa,SAAS,UAAU,MAAM;AAAA,MAC7C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AACtB,UAAI,CAAC,KAAK;AAAc;AAExB,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,6BAA6B;AAEpF,uBAAiB,QAAQ,YAAU;AACjC,cAAM,WAAW,OAAO,QAAQ;AAChC,cAAM,SAAS,KAAK,QAAQ,cAAc,QAAQ;AAClD,cAAM,OAAO,OAAO,cAAc,gBAAgB;AAElD,YAAI,UAAU,MAAM;AAElB,gBAAM,aAAa,KAAK,aAAa,SAAS,UAAU,KAAK;AAG7D,cAAI,YAAY;AACd,mBAAO,UAAU,IAAI,MAAM;AAC3B,mBAAO,UAAU,OAAO,WAAW;AACnC,mBAAO,aAAa,iBAAiB,MAAM;AAC3C,iBAAK,cAAc;AAAA,UACrB,OAAO;AACL,mBAAO,UAAU,OAAO,MAAM;AAC9B,mBAAO,UAAU,IAAI,WAAW;AAChC,mBAAO,aAAa,iBAAiB,OAAO;AAC5C,iBAAK,cAAc;AAAA,UACrB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,UAAI,KAAK,cAAc;AACrB,gBAAQ,IAAI,2CAA2C,KAAK,aAAa,aAAa,CAAC;AAAA,MACzF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,KAAK;AACjB,YAAM,YAAY,IAAI,KAAK,QAAQ;AACnC,YAAM,cAAc,IAAI,WAAW;AACnC,YAAM,cAAc,KAAK;AAEzB,WAAK,aAAa,IAAI,MAAM,YAAY;AAExC,WAAK,UAAU,0CAA0C,IAAI,MAAM,WAAW,aAAa,WAAW,EACnG,KAAK,MAAM;AACV,aAAK,aAAa,IAAI,MAAM,SAAS;AAAA,MACvC,CAAC,EACA,MAAM,CAAAC,WAAS;AACd,aAAK,aAAa,IAAI,MAAM,OAAO;AACnC,aAAK,mBAAmB;AAAA,MAC1B,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB,KAAK;AACtB,YAAM,mBAAmB,IAAI,KAAK,QAAQ;AAC1C,YAAM,cAAc,IAAI,WAAW;AACnC,YAAM,oBAAoB,KAAK;AAE/B,WAAK,aAAa,IAAI,MAAM,YAAY;AAExC,WAAK,UAAU,kDAAkD,IAAI,MAAM,kBAAkB,mBAAmB,WAAW,EACxH,KAAK,MAAM;AACV,aAAK,aAAa,IAAI,MAAM,SAAS;AAAA,MACvC,CAAC,EACA,MAAM,CAAAA,WAAS;AACd,aAAK,aAAa,IAAI,MAAM,OAAO;AACnC,aAAK,2BAA2B;AAAA,MAClC,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU,OAAO;AACf,YAAM,YAAY,MAAM,cAAc,QAAQ;AAC9C,YAAM,cAAc,KAAK;AAEzB,YAAM,aAAa,QAAQ,aAAa,SAAS;AACjD,YAAM,aAAa,QAAQ,eAAe,WAAW;AACrD,YAAM,aAAa,gBAAgB;AAEnC,YAAM,cAAc,MAAM,UAAU;AAGpC,WAAK,0BAA0B;AAG/B,WAAK,gBAAgB;AAAA,IACvB;AAAA;AAAA;AAAA;AAAA,IAKA,SAAS,OAAO;AACd,UAAI,KAAK,WAAW;AAClB;AAAA,MACF;AAEA,YAAM,eAAe;AACrB,YAAM,aAAa,aAAa;AAIhC,UAAI,CAAC,KAAK,yBAAyB;AACjC;AAAA,MACF;AAEA,YAAM,WAAW,MAAM;AACvB,eAAS,UAAU,IAAI,WAAW;AAIlC,UAAI;AACF,cAAM,iBAAiB,MAAM,aAAa,QAAQ,YAAY;AAC9D,YAAI,gBAAgB;AAClB,gBAAM,aAAa,KAAK,MAAM,cAAc;AAC5C,cAAI,WAAW,SAAS,GAAG;AACzB,qBAAS,aAAa,sBAAsB,WAAW,MAAM;AAAA,UAC/D;AAAA,QACF;AAAA,MACF,SAASC,IAAP;AAAA,MAEF;AAGA,WAAK,iBAAiB,KAAK;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU,OAAO;AACf,UAAI,KAAK,WAAW;AAClB;AAAA,MACF;AAEA,YAAM,WAAW,MAAM;AACvB,eAAS,UAAU,OAAO,WAAW;AAAA,IAEvC;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,OAAO;AACV,UAAI,KAAK,WAAW;AAClB;AAAA,MACF;AAEA,YAAM,eAAe;AAErB,YAAM,WAAW,MAAM;AAGvB,YAAM,iBAAiB,MAAM,aAAa,QAAQ,YAAY;AAC9D,YAAM,YAAY,MAAM,aAAa,QAAQ,WAAW;AACxD,YAAM,cAAc,KAAK;AAEzB,UAAI,aAAa,CAAC;AAElB,UAAI,gBAAgB;AAElB,YAAI;AACF,uBAAa,KAAK,MAAM,cAAc;AACtC,eAAK,QAAQ,sBAAsB,WAAW,iBAAiB;AAAA,QACjE,SAASA,IAAP;AACA,eAAK,SAAS,4CAA4CA,EAAC;AAC3D,mBAAS,UAAU,OAAO,WAAW;AACrC,mBAAS,gBAAgB,oBAAoB;AAC7C;AAAA,QACF;AAAA,MACF,WAAW,WAAW;AAEpB,qBAAa,CAAC,SAAS;AACvB,aAAK,QAAQ,wBAAwB,WAAW;AAAA,MAClD,OAAO;AAEL,iBAAS,UAAU,OAAO,WAAW;AACrC,iBAAS,gBAAgB,oBAAoB;AAC7C;AAAA,MACF;AAGA,WAAK,gBAAgB;AAErB,eAAS,UAAU,OAAO,WAAW;AACrC,eAAS,gBAAgB,oBAAoB;AAG7C,iBAAW,QAAQ,CAAAC,QAAM;AACvB,cAAM,iBAAiB,KAAK,QAAQ,cAAc,oBAAoBA,OAAM;AAC5E,YAAI,gBAAgB;AAClB,eAAK,aAAa,gBAAgB,YAAY;AAAA,QAChD;AAAA,MACF,CAAC;AAGD,UAAI,WAAW,WAAW,GAAG;AAC3B,aAAK,UAAU,sCAAsC,MAAM,QAAQ,WAAW,CAAC,GAAG,WAAW,EAC1F,KAAK,MAAM;AACV,eAAK,aAAa,UAAU,SAAS;AACrC,eAAK,eAAe;AACpB,eAAK,mBAAmB;AAAA,QAC1B,CAAC,EACA,MAAM,CAAAF,WAAS;AACd,eAAK,gBAAgB,YAAYA,MAAK;AAAA,QACxC,CAAC;AAAA,MACL,OAAO;AAEL,aAAK,UAAU,gDAAgD,MAAM,QAAQ,KAAK,UAAU,UAAU,GAAG,WAAW,EACjH,KAAK,MAAM;AACV,eAAK,aAAa,UAAU,SAAS;AACrC,eAAK,eAAe;AACpB,eAAK,mBAAmB;AACxB,eAAK,QAAQ,sBAAsB,WAAW,iBAAiB;AAAA,QACjE,CAAC,EACA,MAAM,CAAAA,WAAS;AACd,eAAK,gBAAgB,YAAYA,MAAK;AAAA,QACxC,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,YAAYA,QAAO;AACjC,iBAAW,QAAQ,CAAAE,QAAM;AACvB,cAAM,iBAAiB,KAAK,QAAQ,cAAc,oBAAoBA,OAAM;AAC5E,YAAI,gBAAgB;AAClB,eAAK,aAAa,gBAAgB,OAAO;AAAA,QAC3C;AAAA,MACF,CAAC;AACD,WAAK,eAAe;AACpB,WAAK,mBAAmB;AACxB,WAAK,SAAS,iBAAiB,WAAW,qBAAqBF,MAAK;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,OAAO;AACnB,YAAM,eAAe;AAErB,YAAM,YAAY,MAAM,cAAc,QAAQ;AAC9C,YAAM,iBAAiB,MAAM,cAAc,QAAQ,eAAe;AAGlE,WAAK,yBAAyB;AAC9B,WAAK,8BAA8B;AAGnC,YAAM,QAAQ,SAAS,eAAe,qCAAqC;AAC3E,UAAI,OAAO;AACT,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB;AACtB,YAAM,YAAY,KAAK;AACvB,YAAM,iBAAiB,KAAK;AAC5B,YAAM,cAAc,KAAK;AAEzB,UAAI,CAAC;AAAW;AAGhB,WAAK,gBAAgB;AAErB,UAAI,gBAAgB;AAClB,aAAK,aAAa,gBAAgB,YAAY;AAAA,MAChD;AAEA,WAAK,UAAU,yCAAyC,gBAAgB,WAAW,WAAW,EAC3F,KAAK,MAAM;AACV,YAAI,gBAAgB;AAClB,eAAK,aAAa,gBAAgB,SAAS;AAAA,QAC7C;AAEA,aAAK,mBAAmB;AAExB,aAAK,yBAAyB;AAC9B,aAAK,8BAA8B;AAAA,MACrC,CAAC,EACA,MAAM,CAAAA,WAAS;AACd,YAAI,gBAAgB;AAClB,eAAK,aAAa,gBAAgB,OAAO;AAAA,QAC3C;AAEA,aAAK,mBAAmB;AAExB,aAAK,yBAAyB;AAC9B,aAAK,8BAA8B;AAAA,MACrC,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,YAAM,WAAW,MAAM;AACvB,YAAM,YAAY,SAAS,QAAQ;AACnC,YAAM,kBAAkB,SAAS,QAAQ;AAEzC,UAAI,SAAS,SAAS;AAEpB,YAAI,CAAC,KAAK,mBAAmB,SAAS,SAAS,GAAG;AAChD,eAAK,mBAAmB,KAAK,SAAS;AACtC,eAAK,yBAAyB,KAAK,eAAe;AAAA,QACpD;AAAA,MACF,OAAO;AAEL,aAAK,qBAAqB,KAAK,mBAAmB,OAAO,CAAAE,QAAMA,QAAO,SAAS;AAC/E,aAAK,2BAA2B,KAAK,yBAAyB,OAAO,CAAAA,QAAMA,QAAO,eAAe;AAAA,MACnG;AAEA,WAAK,6BAA6B;AAClC,WAAK,QAAQ,aAAa,KAAK,mBAAmB,mBAAmB;AAAA,IACvE;AAAA;AAAA;AAAA;AAAA,IAKA,+BAA+B;AAC7B,YAAM,eAAe,KAAK,mBAAmB,SAAS;AAGtD,UAAI,KAAK,uBAAuB;AAC9B,aAAK,mBAAmB,MAAM,UAAU,eAAe,SAAS;AAGhE,YAAI,cAAc;AAChB,eAAK,mBAAmB;AAAA,QAC1B;AAAA,MACF;AAGA,YAAM,iBAAiB,KAAK,QAAQ,cAAc,wBAAwB;AAC1E,UAAI,gBAAgB;AAClB,uBAAe,MAAM,UAAU,eAAe,WAAW;AAAA,MAC3D;AAGA,UAAI,KAAK,yBAAyB;AAChC,aAAK,qBAAqB,cAAc,KAAK,mBAAmB;AAAA,MAClE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,YAAM,qBAAqB,KAAK,QAAQ,iBAAiB,4BAA4B;AACrF,yBAAmB,QAAQ,sBAAoB;AAE7C,YAAI,CAAC,iBAAiB,UAAU;AAC9B,2BAAiB,WAAW,IAAI,UAAU,QAAQ,gBAAgB;AAAA,QACpE;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB;AACf,WAAK,qBAAqB,CAAC;AAC3B,WAAK,2BAA2B,CAAC;AAGjC,YAAM,aAAa,KAAK,QAAQ,iBAAiB,0BAA0B;AAC3E,iBAAW,QAAQ,cAAY;AAC7B,iBAAS,UAAU;AAAA,MACrB,CAAC;AAED,WAAK,6BAA6B;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,OAAO;AACzB,YAAM,eAAe;AAErB,YAAM,gBAAgB,KAAK,mBAAmB;AAC9C,UAAI,kBAAkB;AAAG;AAGzB,YAAM,QAAQ,SAAS,eAAe,6BAA6B;AACnE,UAAI,OAAO;AACT,cAAM,qBAAqB,MAAM,cAAc,eAAe;AAC9D,YAAI,oBAAoB;AACtB,gBAAMC,WAAU,kBAAkB,IAC9B,yEACA,wBAAqB;AACzB,6BAAmB,cAAcA;AAAA,QACnC;AAGA,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,6BAA6B;AAC3B,YAAM,gBAAgB,KAAK,mBAAmB;AAC9C,UAAI,kBAAkB;AAAG;AAGzB,WAAK,gBAAgB;AAGrB,WAAK,mBAAmB,QAAQ,CAAAD,QAAM;AACpC,cAAM,iBAAiB,KAAK,QAAQ,cAAc,qBAAqBA,OAAM;AAC7E,YAAI,gBAAgB;AAClB,eAAK,aAAa,eAAe,QAAQ,gCAAgC,GAAG,YAAY;AAAA,QAC1F;AAAA,MACF,CAAC;AAGD,WAAK;AAAA,QAAU;AAAA,QACb,KAAK;AAAA,QACL,KAAK,UAAU,KAAK,kBAAkB;AAAA,QACtC,KAAK;AAAA,MAAgB,EACpB,KAAK,MAAM;AACV,aAAK,eAAe;AACpB,aAAK,mBAAmB;AACxB,aAAK,QAAQ,wBAAwB,0BAA0B;AAAA,MACjE,CAAC,EACA,MAAM,CAAAF,WAAS;AACd,aAAK,mBAAmB;AACxB,aAAK,SAAS,uBAAuBA,MAAK;AAAA,MAC5C,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,OAAO;AACzB,YAAM,eAAe;AAErB,YAAM,gBAAgB,KAAK,yBAAyB;AACpD,UAAI,kBAAkB;AAAG;AAGzB,WAAK,gBAAgB;AAGrB,WAAK,mBAAmB,QAAQ,CAAAE,QAAM;AACpC,cAAM,iBAAiB,KAAK,QAAQ,cAAc,qBAAqBA,OAAM;AAC7E,YAAI,gBAAgB;AAClB,eAAK,aAAa,eAAe,QAAQ,gCAAgC,GAAG,YAAY;AAAA,QAC1F;AAAA,MACF,CAAC;AAGD,WAAK;AAAA,QAAU;AAAA,QACb,MAAM;AAAA,QACN,KAAK,UAAU,KAAK,wBAAwB;AAAA,QAC5C,KAAK;AAAA,MAAgB,EACpB,KAAK,MAAM;AACV,aAAK,eAAe;AACpB,aAAK,mBAAmB;AACxB,aAAK,QAAQ,qCAAqC,0BAA0B;AAAA,MAC9E,CAAC,EACA,MAAM,CAAAF,WAAS;AACd,aAAK,mBAAmB;AACxB,aAAK,SAAS,gCAAgCA,MAAK;AAAA,MACrD,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe,OAAO;AACpB,YAAM,aAAa,MAAM,OAAO,MAAM,YAAY;AAClD,WAAK,oBAAoB;AACzB,WAAK,aAAa;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,eAAe;AACb,YAAM,aAAa,KAAK,qBAAqB;AAC7C,YAAM,eAAe,KAAK,QAAQ,iBAAiB,gCAAgC;AAEnF,mBAAa,QAAQ,UAAQ;AAE3B,YAAI,eAAe,IAAI;AACrB,eAAK,MAAM,UAAU;AACrB;AAAA,QACF;AAGA,cAAM,eAAe,KAAK,cAAc,kBAAkB,GAAG,aAAa,YAAY,KAAK;AAC3F,cAAM,kBAAkB,KAAK,cAAc,0BAA0B,GAAG,aAAa,YAAY,KAAK;AACtG,cAAM,cAAc,MAAM,KAAK,KAAK,iBAAiB,cAAc,CAAC,EACjE,IAAI,SAAO,IAAI,YAAY,KAAK,EAAE,YAAY,CAAC;AAGlD,cAAM,eAAe,aAAa,SAAS,UAAU;AACrD,cAAM,kBAAkB,gBAAgB,SAAS,UAAU;AAG3D,cAAM,cAAc,WAAW,MAAM,KAAK,EAAE,OAAO,UAAQ,KAAK,SAAS,CAAC;AAC1E,cAAM,gBAAgB,YAAY;AAAA,UAAK,UACrC,YAAY,KAAK,SAAO,QAAQ,QAAQ,IAAI,SAAS,IAAI,CAAC;AAAA,QAC5D;AAEA,YAAI,gBAAgB,mBAAmB,eAAe;AACpD,eAAK,MAAM,UAAU;AAAA,QACvB,OAAO;AACL,eAAK,MAAM,UAAU;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,SAAS,OAAO,WAAW;AACtC,UAAI,CAAC,SAAS;AACZ;AAAA,MACF;AAGA,cAAQ,UAAU,OAAO,iBAAiB,eAAe,kBAAkB;AAG3E,WAAK,QAAQ;AAGb,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,kBAAQ,UAAU,IAAI,eAAe;AACrC,qBAAW,MAAM;AACf,oBAAQ,UAAU,OAAO,eAAe;AAAA,UAC1C,GAAG,GAAI;AACP;AAAA,QACF,KAAK;AACH,kBAAQ,UAAU,IAAI,aAAa;AACnC,qBAAW,MAAM;AACf,oBAAQ,UAAU,OAAO,aAAa;AAAA,UACxC,GAAG,GAAI;AACP;AAAA,QACF,KAAK;AACH,kBAAQ,UAAU,IAAI,kBAAkB;AAExC;AAAA,MACJ;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB;AACf,YAAM,kBAAkB,KAAK,QAAQ,iBAAiB,oBAAoB;AAC1E,sBAAgB,QAAQ,QAAM;AAC5B,WAAG,MAAM,UAAU;AAAA,MACrB,CAAC;AAED,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,YAAY;AACnE,uBAAiB,QAAQ,QAAM;AAC7B,WAAG,UAAU,OAAO,WAAW;AAAA,MACjC,CAAC;AAGD,WAAK,0BAA0B;AAG/B,WAAK,eAAe;AAAA,IACtB;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AAChB,YAAM,cAAc,KAAK,QAAQ,cAAc,sBAAsB;AACrE,UAAI,aAAa;AACf,aAAK,mBAAmB,YAAY;AAAA,MACtC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,UAAI,KAAK,qBAAqB,QAAW;AACvC,mBAAW,MAAM;AACf,gBAAM,cAAc,KAAK,QAAQ,cAAc,sBAAsB;AACrE,cAAI,aAAa;AACf,wBAAY,QAAQ,KAAK;AAEzB,iBAAK,eAAe,EAAE,QAAQ,YAAY,CAAC;AAAA,UAC7C;AAAA,QACF,GAAG,GAAG;AAAA,MACR;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAOA,kBAAkB;AAChB,WAAK,qBAAqB,YAAY,MAAM;AAC1C,aAAK,kBAAkB;AAAA,MACzB,GAAG,EAAE;AAAA,IACP;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB;AACf,UAAI,KAAK,oBAAoB;AAC3B,sBAAc,KAAK,kBAAkB;AACrC,aAAK,qBAAqB;AAAA,MAC5B;AACA,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAiB,OAAO;AACtB,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,yBAAyB;AAChF,WAAK,sBAAsB;AAE3B,uBAAiB,QAAQ,eAAa;AACpC,cAAM,OAAO,UAAU,sBAAsB;AAC7C,cAAM,kBAAkB;AAExB,YAAI,MAAM,UAAU,KAAK,MAAM,iBAAiB;AAC9C,eAAK,sBAAsB,EAAE,WAAW,WAAW,KAAK;AAAA,QAC1D,WAAW,MAAM,UAAU,KAAK,SAAS,iBAAiB;AACxD,eAAK,sBAAsB,EAAE,WAAW,WAAW,OAAO;AAAA,QAC5D;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB;AAClB,UAAI,KAAK,qBAAqB;AAC5B,cAAM,EAAE,WAAW,UAAU,IAAI,KAAK;AACtC,cAAM,cAAc;AAEpB,YAAI,cAAc,MAAM;AACtB,oBAAU,YAAY,KAAK,IAAI,GAAG,UAAU,YAAY,WAAW;AAAA,QACrE,WAAW,cAAc,QAAQ;AAC/B,oBAAU,YAAY,KAAK;AAAA,YACzB,UAAU,eAAe,UAAU;AAAA,YACnC,UAAU,YAAY;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAEtB,YAAM,SAAS,MAAM;AACrB,WAAK,2BAA2B,OAAO,QAAQ;AAC/C,WAAK,kCAAkC,OAAO,QAAQ;AAEtD,cAAQ,IAAI,sDAAsD,KAAK,wBAAwB;AAG/F,YAAM,QAAQ,SAAS,eAAe,wBAAwB;AAC9D,UAAI,OAAO;AACT,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,sBAAsB,OAAO;AACjC,YAAM,UAAU,MAAM,OAAO;AAG7B,UAAI,YAAY,4BAA4B,KAAK,0BAA0B;AACzE,cAAM,cAAc,KAAK;AACzB,cAAM,qBAAqB,KAAK;AAEhC,gBAAQ,IAAI,qDAAqD,WAAW;AAG5E,aAAK,2BAA2B;AAChC,aAAK,kCAAkC;AAGvC,aAAK,0BAA0B,aAAa,kBAAkB;AAG9D,cAAM,KAAK,UAAU,2CAA2C,aAAa,KAAK;AAClF;AAAA,MACF;AAGA,UAAI,YAAY,6CAA6C,KAAK,+BAA+B;AAC/F,gBAAQ,IAAI,2DAA2D,KAAK,6BAA6B;AAEzG,cAAM,cAAc,KAAK;AACzB,aAAK,gCAAgC;AAGrC,cAAM,KAAK,UAAU,2CAA2C,aAAa,IAAI;AACjF;AAAA,MACF;AAGA,UAAI,YAAY,yCAAyC,KAAK,wBAAwB;AACpF,gBAAQ,IAAI,gDAAgD,KAAK,sBAAsB;AACvF,aAAK,sBAAsB;AAC3B;AAAA,MACF;AAGA,UAAI,YAAY,iCAAiC,KAAK,mBAAmB,SAAS,GAAG;AACnF,gBAAQ,IAAI,sDAAsD,KAAK,mBAAmB,MAAM;AAChG,aAAK,2BAA2B;AAChC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaA,MAAM,gBAAgB,OAAO;AAC3B,YAAM,eAAe;AAErB,YAAM,cAAc,MAAM,cAAc,QAAQ;AAChD,YAAM,gBAAgB,MAAM,cAAc,QAAQ;AAClD,YAAM,iBAAiB,MAAM,cAAc,QAAQ;AACnD,YAAM,qBAAqB,MAAM,cAAc,QAAQ;AAGvD,UAAI,CAAC,QAAQ,cAAc,GAAG;AAC5B;AAAA,MACF;AAGA,WAAK,0BAA0B,aAAa,kBAAkB;AAG9D,YAAM,KAAK,UAAU,2CAA2C,aAAa,KAAK;AAAA,IACpF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,0BAA0B,aAAa,4BAA4B;AAEjE,YAAM,sBAAsB,CAAC,UAAU;AACrC,cAAM,QAAQ,MAAM,OAAO;AAC3B,cAAMG,WAAU,2BAA2B,QAAQ,YAAY,KAAK;AAGpE,cAAM,cAAc,SAAS,eAAe,yCAAyC;AACrF,YAAI,aAAa;AACf,gBAAM,qBAAqB,YAAY,cAAc,eAAe;AACpE,cAAI,oBAAoB;AACtB,+BAAmB,cAAcA;AAAA,UACnC;AAAA,QACF;AAGA,aAAK,gCAAgC;AAGrC,YAAI,aAAa;AACf,gBAAM,gBAAgB,UAAU,MAAM,oBAAoB,WAAW;AACrE,wBAAc,KAAK;AAAA,QACrB;AAGA,iBAAS,oBAAoB,oCAAoC,mBAAmB;AAAA,MACtF;AAEA,eAAS,iBAAiB,oCAAoC,mBAAmB;AAGjF,YAAM,kBAAkB,CAAC,UAAU;AACjC,cAAM,WAAW,MAAM,OAAO;AAG9B,YAAI,UAAU;AACZ,iBAAO,SAAS,OAAO,6BAA6B;AAAA,QACtD,OAAO;AACL,iBAAO,SAAS,OAAO;AAAA,QACzB;AAGA,iBAAS,oBAAoB,qBAAqB,eAAe;AAAA,MACnE;AAEA,eAAS,iBAAiB,qBAAqB,eAAe;AAG9D,YAAM,iBAAiB,CAAC,UAAU;AAChC,cAAMA,WAAU,MAAM,OAAO;AAC7B,cAAMA,YAAW,iBAAiB;AAClC,gBAAQ,MAAM,8BAA8BA,QAAO;AAGnD,iBAAS,oBAAoB,2BAA2B,cAAc;AAAA,MACxE;AAEA,eAAS,iBAAiB,2BAA2B,cAAc;AAAA,IACrE;AAAA,EACF;AAtkCE,gBADKJ,gCACE,WAAU,CAAC,qBAAqB,6BAA6B,kBAAkB,cAAc;AACpG,gBAFKA,gCAEE,UAAS;AAAA,IACd,aAAa;AAAA,EACf;;;ACRF,MAAAK,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAQjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,mBAAmB;AAGxB,WAAK,2BAA2B;AAChC,WAAK,kCAAkC;AACvC,WAAK,gCAAgC;AAGrC,eAAS,iBAAiB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IACrF;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AACjB,eAAS,oBAAoB,oBAAoB,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IACxF;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAEtB,YAAM,SAAS,MAAM;AACrB,WAAK,2BAA2B,OAAO,QAAQ;AAC/C,WAAK,kCAAkC,OAAO,QAAQ;AAEtD,cAAQ,IAAI,oDAAoD,KAAK,wBAAwB;AAG7F,YAAM,QAAQ,SAAS,eAAe,wBAAwB;AAC9D,UAAI,OAAO;AACT,cAAM,gBAAgB,UAAU,MAAM,oBAAoB,KAAK;AAC/D,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,sBAAsB,OAAO;AACjC,YAAM,UAAU,MAAM,OAAO;AAG7B,UAAI,YAAY,4BAA4B,KAAK,0BAA0B;AACzE,cAAM,cAAc,KAAK;AACzB,cAAM,qBAAqB,KAAK;AAEhC,gBAAQ,IAAI,mDAAmD,WAAW;AAG1E,aAAK,2BAA2B;AAChC,aAAK,kCAAkC;AAGvC,aAAK,0BAA0B,aAAa,kBAAkB;AAG9D,cAAM,KAAK,UAAU,2CAA2C,aAAa,KAAK;AAClF;AAAA,MACF;AAGA,UAAI,YAAY,6CAA6C,KAAK,+BAA+B;AAC/F,gBAAQ,IAAI,yDAAyD,KAAK,6BAA6B;AAEvG,cAAM,cAAc,KAAK;AACzB,aAAK,gCAAgC;AAGrC,cAAM,KAAK,UAAU,2CAA2C,aAAa,IAAI;AAAA,MACnF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AAChB,WAAK,gBAAgB,CAAC,KAAK;AAC3B,WAAK,oBAAoB;AAAA,IAC3B;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB;AACd,YAAM,UAAU,6BAA6B,KAAK;AAElD,YAAM,SAAS;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,UAAU;AAAA,UACV,oBAAoB;AAAA,QACtB;AAAA,MACF,CAAC,EACA,KAAK,CAAAC,cAAYA,UAAS,KAAK,CAAC,EAChC,KAAK,CAAAC,UAAQ;AACZ,cAAM,oBAAoBA,KAAI;AAC9B,aAAK,qBAAqB;AAAA,MAC5B,CAAC,EACA,MAAM,CAAAC,WAAS;AACd,gBAAQ,MAAM,6BAA6BA,MAAK;AAAA,MAClD,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AAChB,YAAM,SAAS,2CAA2C,KAAK;AAE/D,YAAM,QAAQ;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,UAAU;AAAA,UACV,oBAAoB;AAAA,QACtB;AAAA,MACF,CAAC,EACA,KAAK,CAAAF,cAAYA,UAAS,KAAK,CAAC,EAChC,KAAK,CAAAC,UAAQ;AACZ,cAAM,oBAAoBA,KAAI;AAC9B,aAAK,qBAAqB;AAAA,MAC5B,CAAC,EACA,MAAM,CAAAC,WAAS;AACd,gBAAQ,MAAM,sCAAsCA,MAAK;AAAA,MAC3D,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB;AACpB,UAAI,KAAK,wBAAwB;AAC/B,aAAK,oBAAoB,UAAU,OAAO,aAAa,CAAC,KAAK,aAAa;AAAA,MAC5E;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB;AACnB,UAAI,KAAK,wBAAwB;AAC/B,cAAM,WAAW,KAAK,oBAAoB,iBAAiB,4BAA4B;AACvF,iBAAS,QAAQ,aAAW;AAC1B,cAAI,UAAU,QAAQ,OAAO;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,0BAA0B,OAAO;AAC/B,YAAM,eAAe,SAAS,cAAc,wBAAwB;AAEpE,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AAEA,UAAI;AACF,YAAI,OAAO,cAAc,eAAe,UAAU,OAAO;AACvD,gBAAM,QAAQ,IAAI,UAAU,MAAM,YAAY;AAC9C,gBAAM,KAAK;AAAA,QACb,OAAO;AACL,uBAAa,UAAU,IAAI,MAAM;AACjC,uBAAa,MAAM,UAAU;AAC7B,mBAAS,KAAK,UAAU,IAAI,YAAY;AAExC,gBAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,mBAAS,YAAY;AACrB,mBAAS,KAAK,YAAY,QAAQ;AAAA,QACpC;AAAA,MACF,SAASA,QAAP;AACA,gBAAQ,MAAM,wBAAwBA,MAAK;AAAA,MAC7C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,uBAAuB;AACrB,4BAAsB,MAAM;AAC1B,cAAM,QAAQ,SAAS,cAAc,uBAAuB;AAC5D,YAAI,OAAO;AACT,gBAAM,iBAAiB,IAAI,UAAU,MAAM,KAAK;AAChD,yBAAe,KAAK;AAAA,QACtB,OAAO;AACL,qBAAW,MAAM;AACf,kBAAMC,SAAQ,SAAS,cAAc,uBAAuB;AAC5D,gBAAIA,QAAO;AACT,oBAAM,iBAAiB,IAAI,UAAU,MAAMA,MAAK;AAChD,6BAAe,KAAK;AAAA,YACtB;AAAA,UACF,GAAG,GAAG;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYA,MAAM,gBAAgB,OAAO;AAC3B,YAAM,eAAe;AAErB,YAAM,cAAc,MAAM,cAAc,QAAQ;AAChD,YAAM,gBAAgB,MAAM,cAAc,QAAQ;AAClD,YAAM,iBAAiB,MAAM,cAAc,QAAQ;AACnD,YAAM,qBAAqB,MAAM,cAAc,QAAQ;AAGvD,UAAI,CAAC,QAAQ,cAAc,GAAG;AAC5B;AAAA,MACF;AAGA,WAAK,0BAA0B,aAAa,kBAAkB;AAG9D,YAAM,KAAK,UAAU,2CAA2C,aAAa,KAAK;AAAA,IACpF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,0BAA0B,aAAa,4BAA4B;AAEjE,YAAM,sBAAsB,CAAC,UAAU;AACrC,cAAM,QAAQ,MAAM,OAAO;AAC3B,cAAMC,WAAU,2BAA2B,QAAQ,YAAY,KAAK;AAGpE,cAAM,cAAc,SAAS,eAAe,yCAAyC;AACrF,YAAI,aAAa;AACf,gBAAM,qBAAqB,YAAY,cAAc,eAAe;AACpE,cAAI,oBAAoB;AACtB,+BAAmB,cAAcA;AAAA,UACnC;AAAA,QACF;AAGA,aAAK,gCAAgC;AAGrC,YAAI,aAAa;AACf,gBAAM,gBAAgB,UAAU,MAAM,oBAAoB,WAAW;AACrE,wBAAc,KAAK;AAAA,QACrB;AAGA,iBAAS,oBAAoB,oCAAoC,mBAAmB;AAAA,MACtF;AAEA,eAAS,iBAAiB,oCAAoC,mBAAmB;AAGjF,YAAM,kBAAkB,CAAC,UAAU;AACjC,cAAM,WAAW,MAAM,OAAO;AAG9B,YAAI,UAAU;AACZ,iBAAO,SAAS,OAAO,6BAA6B;AAAA,QACtD,OAAO;AACL,iBAAO,SAAS,OAAO;AAAA,QACzB;AAGA,iBAAS,oBAAoB,qBAAqB,eAAe;AAAA,MACnE;AAEA,eAAS,iBAAiB,qBAAqB,eAAe;AAG9D,YAAM,iBAAiB,CAAC,UAAU;AAChC,cAAMA,WAAU,MAAM,OAAO;AAC7B,cAAMA,YAAW,iBAAiB;AAClC,gBAAQ,MAAM,8BAA8BA,QAAO;AAGnD,iBAAS,oBAAoB,2BAA2B,cAAc;AAAA,MACxE;AAEA,eAAS,iBAAiB,2BAA2B,cAAc;AAAA,IACrE;AAAA,EACF;AAjTE,gBADKL,gCACE,WAAU,CAAC,mBAAmB,iBAAiB,eAAe;AACrE,gBAFKA,gCAEE,UAAS;AAAA,IACd,aAAa;AAAA,IACb,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;;;ACRF,MAAAM,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,QAAQ,iCAAiC,KAAK,YAAY;AAC/D,WAAK,uBAAuB;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,yBAAyB;AACvB,WAAK,QAAQ,iBAAiB,cAAc,KAAK,YAAY,KAAK,IAAI,CAAC;AACvE,WAAK,QAAQ,iBAAiB,cAAc,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,YAAY,OAAO;AACjB,YAAM,cAAc,UAAU,IAAI,mBAAmB;AAAA,IACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,YAAY,OAAO;AACjB,YAAM,cAAc,UAAU,OAAO,mBAAmB;AAAA,IAC1D;AAAA,EACF;AAvCE,gBADKA,gCACE,UAAS,EAAE,OAAO,OAAO;;;ACHlC,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAMA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA,IAMjD,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,UAAU;AACR,YAAM,QAAQ;AAEd,UAAI,KAAK,uBAAuB;AAC9B,aAAK,mBAAmB,WAAW;AAAA,MACrC;AAGA,WAAK,QAAQ,iBAAiB,kBAAkB,MAAM;AACpD,cAAM,kBAAkB,KAAK,QAAQ,cAAc,wCAAwC;AAC3F,YAAI,iBAAiB;AACnB,0BAAgB,MAAM;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aAAa,OAAO;AAClB,YAAM,aAAa,QAAQ,MAAM,cAAc,MAAM,KAAK,IAAI;AAE9D,UAAI,KAAK,uBAAuB;AAC9B,aAAK,mBAAmB,WAAW,WAAW,WAAW;AAAA,MAC3D;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,mBAAmB,OAAO;AACxB,YAAM,WAAW,MAAM,cAAc;AAErC,UAAI,KAAK,uBAAuB;AAC9B,YAAI,UAAU;AACZ,eAAK,mBAAmB,UAAU,OAAO,QAAQ;AAAA,QACnD,OAAO;AACL,eAAK,mBAAmB,UAAU,IAAI,QAAQ;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAxDE,gBADKA,gCACE,WAAU,CAAC,gBAAgB,cAAc;;;ACPlD,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAGA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,uBAAuB;AAC5B,WAAK,yBAAyB;AAC9B,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AAEvB,YAAM,UAAU,SAAS,KAAK,QAAQ,gBAAgB;AAGtD,YAAM,UAAU,KAAK,cAAc;AACnC,YAAM,aAAa,qBAAqB;AAExC,WAAK,eAAe,IAAI,qBAAqB,YAAY;AAAA,QACvD,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,MACV,CAAC;AAED,UAAI,SAAS;AACX,gBAAQ,IAAI,mDAAmD,YAAY;AAAA,MAC7E;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB;AAEd,YAAM,OAAO,OAAO,SAAS;AAE7B,UAAI,KAAK,SAAS,sBAAsB,GAAG;AACzC,eAAO;AAAA,MACT,WAAW,KAAK,SAAS,WAAW,GAAG;AACrC,eAAO;AAAA,MACT,OAAO;AAEL,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AAEzB,WAAK,aAAa,yBAAyB,KAAK,SAAS;AAAA,QACvD,gBAAgB;AAAA,QAChB,iBAAiB,CAAC,aAAa;AAAA;AAAA,MACjC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,OAAO;AACnB,YAAM,gBAAgB,MAAM;AAC5B,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,WAAK,aAAa;AAElB,aAAO,SAAS,OAAO,cAAc,QAAQ;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,UAAI,KAAK,cAAc;AACrB,gBAAQ,IAAI,4CAA4C,KAAK,aAAa,aAAa,CAAC;AAAA,MAC1F;AAAA,IACF;AAAA,EACF;;;ACxFA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAIA,MAAOC,iCAAP,cAA6B,WAAW;AAAA,IAItC,UAAU;AACR,cAAQ,IAAI,+DAA+D,KAAK,cAAc;AAG9F,UAAI,KAAK,sBAAsB,KAAK,gBAAgB,UAAU,UAAU;AACtE,aAAK,yBAAyB;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,iBAAiB,OAAO;AAEtB,YAAM,gBAAgB,MAAM,cAAc,QAAQ;AAClD,cAAQ,IAAI,2BAA2B,aAAa;AAEpD,UAAI,KAAK,uBAAuB,eAAe;AAC7C,aAAK,iBAAiB,QAAQ;AAC9B,gBAAQ,IAAI,gCAAgC,KAAK,iBAAiB,KAAK;AAAA,MACzE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAgB,OAAO;AAErB,YAAM,gBAAgB,MAAM,cAAc,QAAQ;AAClD,cAAQ,IAAI,2BAA2B,aAAa;AAEpD,UAAI,KAAK,sBAAsB,eAAe;AAC5C,aAAK,gBAAgB,QAAQ;AAC7B,gBAAQ,IAAI,gCAAgC,KAAK,gBAAgB,KAAK;AAAA,MACxE;AAGA,WAAK,wBAAwB,aAAa;AAAA,IAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,wBAAwB,WAAW;AACjC,UAAI,cAAc,UAAU;AAC1B,aAAK,yBAAyB;AAAA,MAChC,OAAO;AACL,aAAK,wBAAwB;AAAA,MAC/B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,2BAA2B;AACzB,UAAI,CAAC,KAAK;AAA4B;AAEtC,YAAM,WAAW,KAAK,wBAAwB,cAAc,YAAY;AACxE,UAAI,CAAC;AAAU;AAEf,YAAM,cAAc,SAAS,iBAAiB,qBAAqB;AACnE,YAAM,SAAS,SAAS,iBAAiB,WAAW;AAGpD,kBAAY,QAAQ,WAAS;AAC3B,cAAM,WAAW;AACjB,cAAM,aAAa,iBAAiB,MAAM;AAAA,MAC5C,CAAC;AAGD,aAAO,QAAQ,WAAS;AACtB,cAAM,UAAU,IAAI,UAAU;AAC9B,cAAM,MAAM,gBAAgB;AAAA,MAC9B,CAAC;AAGD,eAAS,UAAU,IAAI,UAAU;AACjC,eAAS,aAAa,iBAAiB,MAAM;AAE7C,cAAQ,IAAI,+CAA+C;AAAA,IAC7D;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,0BAA0B;AACxB,UAAI,CAAC,KAAK;AAA4B;AAEtC,YAAM,WAAW,KAAK,wBAAwB,cAAc,YAAY;AACxE,UAAI,CAAC;AAAU;AAEf,YAAM,cAAc,SAAS,iBAAiB,qBAAqB;AACnE,YAAM,SAAS,SAAS,iBAAiB,WAAW;AAGpD,kBAAY,QAAQ,WAAS;AAC3B,cAAM,WAAW;AACjB,cAAM,gBAAgB,eAAe;AAAA,MACvC,CAAC;AAGD,aAAO,QAAQ,WAAS;AACtB,cAAM,UAAU,OAAO,UAAU;AACjC,cAAM,MAAM,gBAAgB;AAAA,MAC9B,CAAC;AAGD,eAAS,UAAU,OAAO,UAAU;AACpC,eAAS,gBAAgB,eAAe;AAExC,cAAQ,IAAI,4BAA4B;AAAA,IAC1C;AAAA,EACF;AA3HE,gBADKA,gCACE,WAAU,CAAC,cAAc,aAAa,mBAAmB;AAChE,gBAFKA,gCAEE,UAAS,EAAE,WAAW,OAAO;;;ACNtC,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAGA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,uBAAuB;AAC5B,WAAK,yBAAyB;AAC9B,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AAEvB,YAAM,UAAU,SAAS,KAAK,QAAQ,gBAAgB;AAGtD,YAAM,UAAU,KAAK,cAAc;AACnC,YAAM,aAAa,2BAA2B;AAE9C,WAAK,eAAe,IAAI,qBAAqB,YAAY;AAAA,QACvD,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,MACV,CAAC;AAED,UAAI,SAAS;AACX,gBAAQ,IAAI,gDAAgD,YAAY;AAAA,MAC1E;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB;AAEd,YAAM,OAAO,OAAO,SAAS;AAE7B,UAAI,KAAK,SAAS,sBAAsB,GAAG;AACzC,eAAO;AAAA,MACT,WAAW,KAAK,SAAS,WAAW,GAAG;AACrC,eAAO;AAAA,MACT,OAAO;AAEL,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AAEzB,WAAK,aAAa,yBAAyB,KAAK,SAAS;AAAA,QACvD,gBAAgB;AAAA,QAChB,iBAAiB,CAAC,aAAa;AAE7B,iBAAO,aAAa,8BAA8B,aAAa;AAAA,QACjE;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,mBAAmB,OAAO;AACxB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,WAAK,UAAU,mCAAmC,MAAM,aAAa,EAAE,KAAK,MAAM;AAChF,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,eAAe,OAAO;AACpB,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,WAAK,UAAU,uCAAuC,MAAM,aAAa,EAAE,KAAK,MAAM;AACpF,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,UAAI,KAAK,cAAc;AACrB,gBAAQ,IAAI,yCAAyC,KAAK,aAAa,aAAa,CAAC;AAAA,MACvF;AAAA,IACF;AAAA,IAEA,aAAa;AACX,WAAK,QAAQ,4BAA4B;AACzC,YAAM,WAAW;AAAA,IACnB;AAAA,EACF;AAnGE,gBADKA,gCACE,WAAU,CAAC,cAAc;;;ACJlC,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAGA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,uBAAuB;AAC5B,WAAK,yBAAyB;AAC9B,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AAEvB,YAAM,UAAU,SAAS,KAAK,QAAQ,gBAAgB;AAGtD,YAAM,UAAU,KAAK,cAAc;AACnC,YAAM,aAAa,uBAAuB;AAE1C,WAAK,eAAe,IAAI,qBAAqB,YAAY;AAAA,QACvD,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,MACV,CAAC;AAED,UAAI,SAAS;AACX,gBAAQ,IAAI,qDAAqD,YAAY;AAAA,MAC/E;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB;AAEd,YAAM,OAAO,OAAO,SAAS;AAE7B,UAAI,KAAK,SAAS,sBAAsB,GAAG;AACzC,eAAO;AAAA,MACT,WAAW,KAAK,SAAS,WAAW,GAAG;AACrC,eAAO;AAAA,MACT,OAAO;AAEL,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AAEzB,WAAK,aAAa,yBAAyB,KAAK,SAAS;AAAA,QACvD,gBAAgB;AAAA,QAChB,iBAAiB,CAAC,aAAa;AAAA;AAAA,MACjC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa,OAAO;AAClB,YAAM,eAAe;AACrB,WAAK,aAAa;AAElB,YAAM,OAAO,SAAS,MAAM,cAAc,QAAQ,IAAI;AAGtD,YAAM,mBAAmB,KAAK,oBAAoB;AAClD,UAAI,kBAAkB;AAEpB,yBAAiB,0BAA0B,MAAM,IAAI;AAIrD,eAAO,SAAS,OAAO,OAAO,SAAS;AAAA,MACzC,OAAO;AACL,gBAAQ,MAAM,2CAA2C;AACzD,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc,OAAO;AACnB,YAAM,eAAe;AACrB,WAAK,aAAa;AAElB,YAAM,UAAU,MAAM,cAAc;AAGpC,WAAK,UAAU,uBAAuB,MAAM,eAAe,OAAO,EAC/D,KAAK,MAAM;AAEV,cAAM,mBAAmB,KAAK,oBAAoB;AAClD,YAAI,kBAAkB;AAEpB,2BAAiB,0BAA0B,MAAM,CAAC;AAGlD,iBAAO,SAAS,OAAO,OAAO,SAAS;AAAA,QACzC,OAAO;AAEL,iBAAO,SAAS,OAAO;AAAA,QACzB;AAAA,MACF,CAAC,EACA,MAAM,CAACC,WAAU;AAChB,gBAAQ,MAAM,2BAA2BA,MAAK;AAC9C,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,sBAAsB;AACpB,YAAM,gBAAgB,SAAS,cAAc,qCAAqC;AAClF,UAAI,eAAe;AACjB,eAAO,KAAK,YAAY,qCAAqC,eAAe,gBAAgB;AAAA,MAC9F;AACA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,UAAI,KAAK,cAAc;AACrB,gBAAQ,IAAI,8CAA8C,KAAK,aAAa,aAAa,CAAC;AAAA,MAC5F;AAAA,IACF;AAAA,EACF;;;ACjJA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAGA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,IAOjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,oBAAoB;AACzB,WAAK,wBAAwB;AAC7B,WAAK,eAAe;AAAA,IACtB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,mBAAmB,QAAQ;AAAA,IAClC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,0BAA0B;AACxB,YAAM,gBAAgB;AAAA,QACpB,OAAO;AAAA,QACP,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,WAAW;AAAA,QACX,OAAO,MAAM,KAAK,eAAe;AAAA,MACnC;AAEA,WAAK,kBAAkB,qBAAS,OAAO,KAAK,mBAAmB,aAAa;AAC5E,WAAK,oBAAoB,qBAAS,OAAO,KAAK,qBAAqB,aAAa;AAAA,IAClF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,iBAAiB;AACf,YAAM,aAAa,MAAM,KAAK,KAAK,kBAAkB,iBAAiB,IAAI,CAAC,EACxE,IAAI,CAAC,SAAS,KAAK,QAAQ,WAAW,EACtC,OAAO,CAAC,UAAU,SAAS,MAAM,SAAS,CAAC;AAE9C,WAAK,sBAAsB,QAAQ,WAAW,KAAK,GAAG;AACtD,WAAK,oBAAoB;AAAA,IAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,yBAAyB,OAAO;AAC9B,WAAK,qBAAqB,MAAM,OAAO,SAAS,IAAI,YAAY,EAAE,KAAK;AACvE,WAAK,oBAAoB;AAAA,IAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,sBAAsB;AACpB,YAAM,aAAa,KAAK;AACxB,YAAM,gBAAgB,KAAK,oBAAoB,iBAAiB,IAAI;AAEpE,oBAAc,QAAQ,CAAC,SAAS;AAC9B,YAAI,eAAe,IAAI;AACrB,eAAK,MAAM,YAAY,WAAW,QAAQ,WAAW;AACrD;AAAA,QACF;AAEA,cAAM,iBAAiB,KAAK,QAAQ,iBAAiB,IAAI,YAAY;AACrE,cAAM,iBAAiB,KAAK,QAAQ,iBAAiB,IAAI,YAAY;AACrE,cAAM,iBAAiB,GAAG,iBAAiB,gBAAgB,KAAK;AAEhE,YAAI,eAAe,SAAS,UAAU,GAAG;AACvC,eAAK,MAAM,YAAY,WAAW,QAAQ,WAAW;AAAA,QACvD,OAAO;AACL,eAAK,MAAM,YAAY,WAAW,QAAQ,WAAW;AAAA,QACvD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAzFE,gBADKA,gCACE,WAAU,CAAC,eAAe,iBAAiB,iBAAiB;;;ACJrE,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAM,YAAY;AAElB,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAQjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,WAAK,cAAc;AACnB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,UAAU,UAAU,QAAQ,oBAAoB,KAAK,cAAc;AAAA,QACtE,UAAU;AAAA,QACV,WAAW;AAAA,MACb,CAAC;AACD,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,aAAa;AACX,WAAK,iBAAiB;AACtB,WAAK,eAAe;AACpB,WAAK,iBAAiB;AACtB,YAAM,WAAW;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,OAAO,OAAO;AACZ,YAAM,eAAe;AAErB,UAAI,KAAK,QAAQ,UAAU,SAAS,aAAa,GAAG;AAClD,aAAK,MAAM;AACX;AAAA,MACF;AAEA,WAAK,KAAK;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAO;AACL,WAAK,QAAQ,UAAU,IAAI,aAAa;AACxC,WAAK,aAAa,aAAa,iBAAiB,MAAM;AACtD,WAAK,WAAW,KAAK,eAAe;AACpC,WAAK,eAAe;AACpB,WAAK,OAAO;AAAA,IACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO;AACX,UAAI,CAAC,KAAK,QAAQ,UAAU,SAAS,aAAa,GAAG;AACnD;AAAA,MACF;AAEA,aAAO,eAAe;AACtB,WAAK,QAAQ,UAAU,OAAO,aAAa;AAC3C,WAAK,aAAa,aAAa,iBAAiB,OAAO;AACvD,WAAK,WAAW,KAAK,gBAAgB;AACrC,WAAK,iBAAiB;AACtB,WAAK,OAAO;AAAA,IACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,WAAW,OAAO;AAChB,WAAK,eAAe;AACpB,WAAK,aAAa,aAAa,cAAc,KAAK;AAClD,WAAK,aAAa,aAAa,SAAS,KAAK;AAC7C,WAAK,UAAU,IAAI,UAAU,QAAQ,KAAK,cAAc;AAAA,QACtD,UAAU;AAAA,QACV,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,iBAAiB;AACf,WAAK,SAAS,KAAK;AACnB,WAAK,SAAS,QAAQ;AACtB,WAAK,UAAU;AAAA,IACjB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,SAAS;AACP,UAAI,CAAC,KAAK,iBAAiB;AACzB;AAAA,MACF;AAEA,WAAK,aAAa,UAAU,OAAO,WAAW;AAC9C,WAAK,iBAAiB;AACtB,WAAK,cAAc,OAAO,WAAW,MAAM;AACzC,aAAK,aAAa,UAAU,IAAI,WAAW;AAC3C,aAAK,cAAc;AAAA,MACrB,GAAG,SAAS;AAAA,IACd;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,mBAAmB;AACjB,UAAI,KAAK,gBAAgB,MAAM;AAC7B;AAAA,MACF;AAEA,aAAO,aAAa,KAAK,WAAW;AACpC,WAAK,cAAc;AAAA,IACrB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,iBAAiB;AACf,UAAI,KAAK,yBAAyB,MAAM;AACtC;AAAA,MACF;AAEA,WAAK,uBAAuB,SAAS,KAAK,MAAM;AAChD,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,mBAAmB;AACjB,UAAI,KAAK,yBAAyB,MAAM;AACtC;AAAA,MACF;AAEA,eAAS,KAAK,MAAM,WAAW,KAAK;AACpC,WAAK,uBAAuB;AAAA,IAC9B;AAAA,EACF;AA5JE,gBADKA,gCACE,WAAU,CAAC,QAAQ;AAE1B,gBAHKA,gCAGE,UAAS;AAAA,IACd,aAAa;AAAA,IACb,YAAY;AAAA,EACd;;;ACVF,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AACjB,WAAK,iBAAiB;AACtB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,KAAK,OAAO;AACV,YAAM,eAAe;AAErB,UAAI,CAAC,KAAK,sBAAsB,CAAC,KAAK,kBAAkB,CAAC,KAAK,kBAAkB;AAC9E;AAAA,MACF;AAEA,WAAK,iBAAiB,KAAK,gBAAgB;AAC3C,WAAK,qBAAqB;AAC1B,WAAK,YAAY,YAAY,KAAK,eAAe;AACjD,WAAK,cAAc,UAAU,OAAO,QAAQ;AAC5C,WAAK,cAAc,aAAa,eAAe,OAAO;AACtD,WAAK,eAAe;AACpB,WAAK,kBAAkB,aAAa,iBAAiB,MAAM;AAC3D,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,MAAM,OAAO;AACX,aAAO,eAAe;AAEtB,UAAI,CAAC,KAAK,kBAAkB,CAAC,KAAK,sBAAsB,CAAC,KAAK,kBAAkB;AAC9E;AAAA,MACF;AAEA,WAAK,qBAAqB;AAC1B,WAAK,eAAe,YAAY,KAAK,eAAe;AACpD,WAAK,cAAc,UAAU,IAAI,QAAQ;AACzC,WAAK,cAAc,aAAa,eAAe,MAAM;AACrD,WAAK,iBAAiB;AACtB,WAAK,kBAAkB,aAAa,iBAAiB,OAAO;AAC5D,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,gBAAgB,OAAO;AACrB,YAAM,gBAAgB;AAAA,IACxB;AAAA,IAEA,aAAa;AACX,UAAI,KAAK,sBAAsB,KAAK,kBAAkB,KAAK,gBAAgB,kBAAkB,KAAK,gBAAgB;AAChH,aAAK,eAAe,YAAY,KAAK,eAAe;AAAA,MACtD;AAEA,WAAK,iBAAiB;AACtB,YAAM,WAAW;AAAA,IACnB;AAAA,IAEA,uBAAuB;AACrB,WAAK,gBAAgB,QAAQ,iBAAiB;AAAA,IAChD;AAAA,IAEA,yBAAyB;AACvB,4BAAsB,MAAM;AAC1B,eAAO,KAAK,gBAAgB,QAAQ;AAAA,MACtC,CAAC;AAAA,IACH;AAAA,IAEA,iBAAiB;AACf,UAAI,KAAK,yBAAyB,MAAM;AACtC;AAAA,MACF;AAEA,WAAK,uBAAuB,SAAS,KAAK,MAAM;AAChD,eAAS,KAAK,MAAM,WAAW;AAC/B,eAAS,KAAK,UAAU,IAAI,oBAAoB;AAAA,IAClD;AAAA,IAEA,mBAAmB;AACjB,UAAI,KAAK,yBAAyB,MAAM;AACtC;AAAA,MACF;AAEA,eAAS,KAAK,MAAM,WAAW,KAAK;AACpC,eAAS,KAAK,UAAU,OAAO,oBAAoB;AACnD,WAAK,uBAAuB;AAAA,IAC9B;AAAA,EACF;AApFE,gBADKA,gCACE,WAAU,CAAC,UAAU,SAAS,aAAa,WAAW,YAAY;;;ACH3E,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAkCA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAMjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,gBAAgB;AAAA,IACvB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,gBAAgB;AAAA,IACvB;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AACjB,UAAI,KAAK,eAAe;AACtB,aAAK,cAAc,QAAQ;AAAA,MAC7B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AAChB,UAAI,OAAO,cAAc,eAAe,UAAU,OAAO;AACvD,aAAK,gBAAgB,IAAI,UAAU,MAAM,KAAK,SAAS;AAAA,UACrD,UAAU;AAAA,UACV,UAAU;AAAA;AAAA,UACV,OAAO;AAAA,QACT,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,MAAM,kDAAkD;AAAA,MAClE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,KAAK,OAAO;AACV,UAAI,OAAO;AACT,cAAM,eAAe;AAGrB,aAAK,gBAAgB,MAAM;AAAA,MAC7B;AAEA,UAAI,KAAK,eAAe;AACtB,aAAK,cAAc,KAAK;AAAA,MAC1B,OAAO;AACL,gBAAQ,MAAM,iDAAiD;AAAA,MACjE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO;AACL,UAAI,KAAK,eAAe;AACtB,aAAK,cAAc,KAAK;AAAA,MAC1B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAO,OAAO;AACZ,YAAM,eAAe;AAGrB,UAAI,MAAM,QAAQ;AAChB,cAAM,OAAO,KAAK;AAAA,MACpB;AAEA,WAAK,KAAK;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAO;AACb,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAGtB,UAAI,MAAM,QAAQ;AAChB,cAAM,OAAO,KAAK;AAAA,MACpB;AAGA,WAAK,KAAK;AAGV,iBAAW,MAAM;AAEf,YAAI,KAAK,uBAAuB;AAC9B,eAAK,qBAAqB;AAAA,QAC5B,OAAO;AAEL,eAAK,kBAAkB;AAAA,QACzB;AAGA,aAAK,qBAAqB;AAAA,MAC5B,GAAG,GAAG;AAAA,IACR;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB;AAElB,YAAM,UAAU,SAAS,cAAc,kCAAkC;AACzE,UAAI,SAAS;AACX,cAAM,OAAO,QAAQ,cAAc,yBAAyB;AAC5D,YAAI,MAAM;AACR,kBAAQ,IAAI,qCAAqC,KAAK,EAAE;AACxD,eAAK,OAAO;AACZ;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,KAAK,0CAA0C;AAAA,IACzD;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,uBAAuB;AACrB,YAAM,cAAc,IAAI,YAAY,oBAAoB;AAAA,QACtD,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ;AAAA,UACN,SAAS,KAAK,kBAAkB,KAAK,eAAe,KAAK,QAAQ;AAAA,UACjE,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,QACpC;AAAA,MACF,CAAC;AAED,WAAK,QAAQ,cAAc,WAAW;AAAA,IACxC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,uBAAuB;AACrB,YAAM,SAAS,KAAK;AAGpB,YAAM,CAAC,gBAAgB,UAAU,IAAI,OAAO,MAAM,GAAG;AAErD,UAAI,CAAC,kBAAkB,CAAC,YAAY;AAClC,gBAAQ,MAAM,2CAA2C,MAAM;AAC/D;AAAA,MACF;AAGA,YAAM,oBAAoB,SAAS,cAAc,sBAAsB,kBAAkB;AAEzF,UAAI,mBAAmB;AAErB,cAAM,aAAa,KAAK,YAAY,qCAAqC,mBAAmB,cAAc;AAE1G,YAAI,cAAc,OAAO,WAAW,UAAU,MAAM,YAAY;AAC9D,kBAAQ,IAAI,6BAA6B,MAAM;AAC/C,qBAAW,UAAU,EAAE;AAAA,QACzB,OAAO;AACL,kBAAQ,MAAM,sCAAsC,MAAM;AAAA,QAC5D;AAAA,MACF,OAAO;AACL,gBAAQ,MAAM,kDAAkD,cAAc;AAAA,MAChF;AAAA,IACF;AAAA,EACF;AAlLE,gBADKA,gCACE,UAAS;AAAA,IACd,SAAS;AAAA,IACT,eAAe;AAAA,EACjB;;;ACtCF,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,OAAO;AAChB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,OAAO,QAAQ,IAAI;AACzB,QAAE,QAAQ,EAAE,QAAQ,gBAAgB,IAAI;AAAA,IAC1C;AAAA,EAEF;;;ACvBA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAMA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA;AAAA;AAAA;AAAA,IAcjD,UAAU;AACR,YAAM,QAAQ;AACd,UAAI,CAAC,KAAK,eAAe;AACvB;AAAA,MACF;AAEA,UAAI,KAAK,gBAAgB,QAAW;AAClC,aAAK,cAAc;AAAA,MACrB;AAEA,UAAI,CAAC,KAAK,eAAe,CAAC,KAAK,YAAY,GAAG;AAC5C,aAAK,cAAc;AACnB;AAAA,MACF;AAEA,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,wBAAwB;AACtB,YAAM,kBAAkB,KAAK,gBAAgB;AAC7C,UAAI,CAAC,iBAAiB;AACpB,aAAK,WAAW,sCAAsC;AACtD;AAAA,MACF;AAEA,sBAAgB,iBAAiB,qBAAqB,MAAM;AAC1D,aAAK,aAAa;AAAA,MACpB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAe;AACb,UAAI,KAAK,aAAa;AACpB;AAAA,MACF;AAEA,UAAI,CAAC,KAAK,mBAAmB;AAC3B,aAAK,WAAW,uCAAuC;AACvD;AAAA,MACF;AAEA,WAAK,YAAY;AACjB,YAAMC,UAAS,KAAK,oBAAoB;AACxC,WAAK,UAAU,KAAK,mBAAmB,GAAGA,OAAM,EAC7C,KAAK,MAAM;AACV,aAAK,cAAc;AACnB,aAAK,cAAc;AAAA,MACrB,CAAC,EACA,QAAQ,MAAM;AACb,aAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB;AAChB,aAAO,KAAK,QAAQ,cAAc,qBAAqB;AAAA,IACzD;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc;AACZ,YAAM,kBAAkB,KAAK,gBAAgB;AAC7C,UAAI,CAAC,iBAAiB;AACpB,eAAO;AAAA,MACT;AAEA,aAAO,CAAC,gBAAgB,UAAU,SAAS,MAAM;AAAA,IACnD;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc;AACZ,UAAI,KAAK,kBAAkB;AACzB,aAAK,cAAc,UAAU,OAAO,QAAQ;AAAA,MAC9C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc;AACZ,UAAI,KAAK,kBAAkB;AACzB,aAAK,cAAc,UAAU,IAAI,QAAQ;AAAA,MAC3C;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB;AACpB,UAAI,KAAK,wBAAwB,KAAK,kBAAkB,SAAS,GAAG;AAClE,eAAO,KAAK;AAAA,MACd;AAEA,aAAO,CAAC,KAAK,iBAAiB,KAAK,WAAW;AAAA,IAChD;AAAA;AAAA;AAAA;AAAA,IAKA,gBAAgB;AACd,YAAM,iBAAiB,KAAK,QAAQ,QAAQ,iCAAiC;AAC7E,UAAI,CAAC,gBAAgB;AACnB;AAAA,MACF;AAEA,QAAE,cAAc,EAAE,QAAQ,eAAe;AAAA,IAC3C;AAAA,EACF;AApIE,gBADKD,gCACE,WAAU,CAAC,QAAQ,SAAS;AACnC,gBAFKA,gCAEE,UAAS;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;;;ACfF,MAAAE,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAOA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,uBAAuB;AAG5B,WAAK,4BAA4B;AAGjC,WAAK,yBAAyB;AAC9B,WAAK,YAAY;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,8BAA8B;AAC5B,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,6BAA6B;AAEpF,uBAAiB,QAAQ,aAAW;AAElC,YAAI,UAAU,SAAS,SAAS;AAAA,UAC9B,QAAQ;AAAA;AAAA,QACV,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,yBAAyB;AAEvB,YAAM,UAAU,SAAS,KAAK,QAAQ,gBAAgB;AAGtD,YAAM,UAAU,KAAK,cAAc;AACnC,YAAM,aAAa,uBAAuB;AAE1C,WAAK,eAAe,IAAI,qBAAqB,YAAY;AAAA,QACvD,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,MACV,CAAC;AAED,UAAI,SAAS;AACX,gBAAQ,IAAI,qDAAqD,YAAY;AAAA,MAC/E;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB;AACd,YAAM,WAAW,OAAO,SAAS;AAEjC,UAAI,SAAS,SAAS,sBAAsB,GAAG;AAC7C,eAAO;AAAA,MACT,WAAW,SAAS,SAAS,SAAS,GAAG;AACvC,eAAO;AAAA,MACT,WAAW,SAAS,SAAS,WAAW,GAAG;AACzC,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B;AACzB,YAAM,mBAAmB,KAAK,QAAQ,iBAAiB,6BAA6B;AAEpF,uBAAiB,QAAQ,YAAU;AACjC,cAAM,WAAW,OAAO,QAAQ;AAChC,cAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,cAAM,OAAO,OAAO,cAAc,6CAA6C;AAE/E,YAAI,QAAQ;AAEV,gBAAM,eAAe,CAAC,OAAO,UAAU,SAAS,WAAW;AAC3D,gBAAM,cAAc,KAAK,aAAa,SAAS,UAAU,YAAY;AAGrE,cAAI,aAAa;AAEf,mBAAO,UAAU,IAAI,MAAM;AAC3B,mBAAO,UAAU,OAAO,WAAW;AACnC,mBAAO,aAAa,iBAAiB,MAAM;AAC3C,gBAAI;AAAM,mBAAK,UAAU,IAAI,YAAY;AAAA,UAC3C,OAAO;AAEL,mBAAO,UAAU,OAAO,MAAM;AAC9B,mBAAO,UAAU,IAAI,WAAW;AAChC,mBAAO,aAAa,iBAAiB,OAAO;AAC5C,gBAAI;AAAM,mBAAK,UAAU,OAAO,YAAY;AAAA,UAC9C;AAGA,iBAAO,iBAAiB,qBAAqB,MAAM;AACjD,gBAAI;AAAM,mBAAK,UAAU,IAAI,YAAY;AACzC,iBAAK,aAAa,SAAS,UAAU,IAAI;AAAA,UAC3C,CAAC;AAED,iBAAO,iBAAiB,sBAAsB,MAAM;AAClD,gBAAI;AAAM,mBAAK,UAAU,OAAO,YAAY;AAC5C,iBAAK,aAAa,SAAS,UAAU,KAAK;AAAA,UAC5C,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAc;AACZ,UAAI,KAAK,cAAc;AACrB,gBAAQ,MAAM,2BAA2B;AACzC,gBAAQ,MAAM,KAAK,aAAa,aAAa,CAAC;AAC9C,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF;AAAA,EACF;;;ACtIA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAOjD,aAAa;AAEX,YAAM,WAAW;AACjB,WAAK,eAAe;AAAA,QAClB,eAAe,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,IACA,UAAU;AACR,YAAM,QAAQ;AAId,WAAK,iBAAiB;AAAA,IACxB;AAAA,IAEA,yBAAyB;AAEvB,WAAK,oBAAoB,QAAQ,CAAC,SAASC,WAAU;AAEnD,UAAE,OAAO,EAAE,eAAe;AAAA,UACtB,qBAAqB;AAAA,UACrB,YAAY;AAAA,UACZ,gBAAgB;AAAA,UAChB,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,OAAO;AAAA,UACP,SAAS;AAAA,UACT,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,WAAW,EAAE,OAAO,EAAE,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,UAMvC,WAAW;AAAA,UACX,kBAAkB;AAAA,UAClB,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,eAAe;AAAA;AAAA;AAAA,UAIf,UAAU,WAAU;AAEhB,gBAAIC,QAAO,EAAE,OAAO,EAAE,eAAe,WAAW;AAChD,gBAAI,MAAM,EAAE,OAAO,EAAE,KAAK,cAAc;AAGxC,cAAE,KAAK;AAAA,cACH;AAAA,cACA,MAAM;AAAA,cACN,MAAMA;AAAA,YACV,CAAC,EAAE,OAAO,WAAU;AAAA,YAWpB,CAAC,EAAE,KAAK,SAASA,OAAK;AAAA,YAEtB,CAAC,EAAE,KAAK,SAAS,OAAO,YAAW;AAAA,YAEnC,CAAC;AAAA,UAIL;AAAA,QACJ,CAAC;AAAA,MACL,CAAC;AAAA,IAED;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB,OAAO;AAC3B,YAAM,eAAe;AACrB,WAAK,UAAU,sCAAsC,EAAE,KAAK,aAAW;AAErE,cAAM,mBAAmB,EAAE,mBAAmB;AAC9C,yBAAiB,MAAM,MAAM;AAC7B,yBAAiB,GAAG,mBAAmB,SAAUC,QAAO;AAEtD,2BAAiB,KAAK,EAAE;AACxB,2BAAiB,IAAI,iBAAiB;AAAA,QACxC,CAAC;AAAA,MAEH,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB,OAAO;AAC3B,YAAM,eAAe;AAErB,WAAK,UAAU,sCAAsC,EAAE,KAAK,aAAW;AAErE,UAAE,mBAAmB,EAAE,MAAM,MAAM;AAAA,MACrC,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,OAAO;AAC7B,YAAMC,QAAO;AACb,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,eAAe,EAAE,0BAA0B,EAAE,IAAI;AACvD,YAAM,kBAAkB,EAAE,6BAA6B,EAAE,IAAI;AAC7D,QAAE,mBAAmB,EAAE,MAAM,MAAM;AACnC,WAAK,aAAa;AAClB,WAAK,UAAU,0CAA0C,cAAc,eAAe,EAAE,KAAK,aAAW;AAEtG,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAwB,OAAO;AAC7B,YAAMA,QAAO;AACb,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,kBAAkB,EAAE,0BAA0B,EAAE,IAAI;AAC1D,QAAE,mBAAmB,EAAE,MAAM,MAAM;AACnC,WAAK,aAAa;AAClB,WAAK,UAAU,0CAA0C,eAAe,EAAE,KAAK,aAAW;AAExF,QAAAA,MAAK,YAAY;AAAA,MACnB,CAAC;AAAA,IAEH;AAAA;AAAA;AAAA;AAAA,IAKA,sBAAsB,OAAO;AAC3B,YAAM,kBAAkB,EAAE,0BAA0B,EAAE,IAAI;AAC1D,UAAI,mBAAmB,IAAI;AACzB,UAAE,2BAA2B,EAAE,KAAK,YAAY,KAAK;AAAA,MACvD,OAAO;AACL,UAAE,2BAA2B,EAAE,KAAK,YAAY,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EAEF;AAjKE,gBAFKJ,gCAEE,WAAU,CAAE,cAAc;AACjC,gBAHKA,gCAGE,UAAS;AAAA,IACd,MAAM;AAAA,EACR;;;ACPF,MAAAK,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;;;ACAA,WAASC,SAAQ,KAAK;AACpB;AAEA,QAAI,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,UAAU;AACvE,MAAAA,WAAU,SAAUC,MAAK;AACvB,eAAO,OAAOA;AAAA,MAChB;AAAA,IACF,OAAO;AACL,MAAAD,WAAU,SAAUC,MAAK;AACvB,eAAOA,QAAO,OAAO,WAAW,cAAcA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;AAAA,MAC3H;AAAA,IACF;AAEA,WAAOD,SAAQ,GAAG;AAAA,EACpB;AAEA,WAASE,iBAAgB,UAAU,aAAa;AAC9C,QAAI,EAAE,oBAAoB,cAAc;AACtC,YAAM,IAAI,UAAU,mCAAmC;AAAA,IACzD;AAAA,EACF;AAEA,WAASC,mBAAkB,QAAQ,OAAO;AACxC,aAASC,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,UAAI,aAAa,MAAMA,EAAC;AACxB,iBAAW,aAAa,WAAW,cAAc;AACjD,iBAAW,eAAe;AAC1B,UAAI,WAAW;AAAY,mBAAW,WAAW;AACjD,aAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,IAC1D;AAAA,EACF;AAEA,WAASC,cAAa,aAAa,YAAY,aAAa;AAC1D,QAAI;AAAY,MAAAF,mBAAkB,YAAY,WAAW,UAAU;AACnE,QAAI;AAAa,MAAAA,mBAAkB,aAAa,WAAW;AAC3D,WAAO;AAAA,EACT;AAEA,WAASG,iBAAgB,KAAKC,MAAK,OAAO;AACxC,QAAIA,QAAO,KAAK;AACd,aAAO,eAAe,KAAKA,MAAK;AAAA,QAC9B;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,UAAU;AAAA,MACZ,CAAC;AAAA,IACH,OAAO;AACL,UAAIA,IAAG,IAAI;AAAA,IACb;AAEA,WAAO;AAAA,EACT;AAEA,WAASC,WAAU,UAAU,YAAY;AACvC,QAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AAC3D,YAAM,IAAI,UAAU,oDAAoD;AAAA,IAC1E;AAEA,aAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW;AAAA,MACrE,aAAa;AAAA,QACX,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,IACF,CAAC;AACD,QAAI;AAAY,MAAAC,iBAAgB,UAAU,UAAU;AAAA,EACtD;AAEA,WAASC,iBAAgBC,IAAG;AAC1B,IAAAD,mBAAkB,OAAO,iBAAiB,OAAO,iBAAiB,SAASA,iBAAgBC,IAAG;AAC5F,aAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,IAC/C;AACA,WAAOD,iBAAgBC,EAAC;AAAA,EAC1B;AAEA,WAASF,iBAAgBE,IAAGC,IAAG;AAC7B,IAAAH,mBAAkB,OAAO,kBAAkB,SAASA,iBAAgBE,IAAGC,IAAG;AACxE,MAAAD,GAAE,YAAYC;AACd,aAAOD;AAAA,IACT;AAEA,WAAOF,iBAAgBE,IAAGC,EAAC;AAAA,EAC7B;AAEA,WAASC,6BAA4B;AACnC,QAAI,OAAO,YAAY,eAAe,CAAC,QAAQ;AAAW,aAAO;AACjE,QAAI,QAAQ,UAAU;AAAM,aAAO;AACnC,QAAI,OAAO,UAAU;AAAY,aAAO;AAExC,QAAI;AACF,cAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,MAAC,CAAC,CAAC;AAC7E,aAAO;AAAA,IACT,SAASC,IAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAASC,wBAAuBC,OAAM;AACpC,QAAIA,UAAS,QAAQ;AACnB,YAAM,IAAI,eAAe,2DAA2D;AAAA,IACtF;AAEA,WAAOA;AAAA,EACT;AAEA,WAASC,4BAA2BD,OAAM,MAAM;AAC9C,QAAI,SAAS,OAAO,SAAS,YAAY,OAAO,SAAS,aAAa;AACpE,aAAO;AAAA,IACT;AAEA,WAAOD,wBAAuBC,KAAI;AAAA,EACpC;AAEA,WAASE,cAAa,SAAS;AAC7B,QAAI,4BAA4BL,2BAA0B;AAE1D,WAAO,SAAS,uBAAuB;AACrC,UAAI,QAAQH,iBAAgB,OAAO,GAC/B;AAEJ,UAAI,2BAA2B;AAC7B,YAAI,YAAYA,iBAAgB,IAAI,EAAE;AAEtC,iBAAS,QAAQ,UAAU,OAAO,WAAW,SAAS;AAAA,MACxD,OAAO;AACL,iBAAS,MAAM,MAAM,MAAM,SAAS;AAAA,MACtC;AAEA,aAAOO,4BAA2B,MAAM,MAAM;AAAA,IAChD;AAAA,EACF;AAEA,WAAS,eAAe,QAAQ,UAAU;AACxC,WAAO,CAAC,OAAO,UAAU,eAAe,KAAK,QAAQ,QAAQ,GAAG;AAC9D,eAASP,iBAAgB,MAAM;AAC/B,UAAI,WAAW;AAAM;AAAA,IACvB;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,KAAK,QAAQ,UAAU,UAAU;AACxC,QAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;AACjD,aAAO,QAAQ;AAAA,IACjB,OAAO;AACL,aAAO,SAASS,MAAKC,SAAQC,WAAUC,WAAU;AAC/C,YAAI,OAAO,eAAeF,SAAQC,SAAQ;AAE1C,YAAI,CAAC;AAAM;AACX,YAAI,OAAO,OAAO,yBAAyB,MAAMA,SAAQ;AAEzD,YAAI,KAAK,KAAK;AACZ,iBAAO,KAAK,IAAI,KAAKC,SAAQ;AAAA,QAC/B;AAEA,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAEA,WAAO,KAAK,QAAQ,UAAU,YAAY,MAAM;AAAA,EAClD;AAEA,WAAS,eAAe,KAAKlB,IAAG;AAC9B,WAAO,gBAAgB,GAAG,KAAK,sBAAsB,KAAKA,EAAC,KAAK,4BAA4B,KAAKA,EAAC,KAAK,iBAAiB;AAAA,EAC1H;AAEA,WAAS,mBAAmB,KAAK;AAC/B,WAAO,mBAAmB,GAAG,KAAK,iBAAiB,GAAG,KAAK,4BAA4B,GAAG,KAAK,mBAAmB;AAAA,EACpH;AAEA,WAAS,mBAAmB,KAAK;AAC/B,QAAI,MAAM,QAAQ,GAAG;AAAG,aAAO,kBAAkB,GAAG;AAAA,EACtD;AAEA,WAAS,gBAAgB,KAAK;AAC5B,QAAI,MAAM,QAAQ,GAAG;AAAG,aAAO;AAAA,EACjC;AAEA,WAAS,iBAAiB,MAAM;AAC9B,QAAI,OAAO,WAAW,eAAe,KAAK,OAAO,QAAQ,KAAK,QAAQ,KAAK,YAAY,KAAK;AAAM,aAAO,MAAM,KAAK,IAAI;AAAA,EAC1H;AAEA,WAAS,sBAAsB,KAAKA,IAAG;AACrC,QAAI,KAAK,OAAO,OAAO,OAAO,OAAO,WAAW,eAAe,IAAI,OAAO,QAAQ,KAAK,IAAI,YAAY;AAEvG,QAAI,MAAM;AAAM;AAChB,QAAI,OAAO,CAAC;AACZ,QAAI,KAAK;AACT,QAAImB,MAAK;AAET,QAAI,IAAI;AAER,QAAI;AACF,WAAK,KAAK,GAAG,KAAK,GAAG,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,MAAM;AAChE,aAAK,KAAK,GAAG,KAAK;AAElB,YAAInB,MAAK,KAAK,WAAWA;AAAG;AAAA,MAC9B;AAAA,IACF,SAAS,KAAP;AACA,MAAAmB,MAAK;AACL,WAAK;AAAA,IACP,UAAE;AACA,UAAI;AACF,YAAI,CAAC,MAAM,GAAG,QAAQ,KAAK;AAAM,aAAG,QAAQ,EAAE;AAAA,MAChD,UAAE;AACA,YAAIA;AAAI,gBAAM;AAAA,MAChB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,4BAA4BZ,IAAG,QAAQ;AAC9C,QAAI,CAACA;AAAG;AACR,QAAI,OAAOA,OAAM;AAAU,aAAO,kBAAkBA,IAAG,MAAM;AAC7D,QAAIa,KAAI,OAAO,UAAU,SAAS,KAAKb,EAAC,EAAE,MAAM,GAAG,EAAE;AACrD,QAAIa,OAAM,YAAYb,GAAE;AAAa,MAAAa,KAAIb,GAAE,YAAY;AACvD,QAAIa,OAAM,SAASA,OAAM;AAAO,aAAO,MAAM,KAAKb,EAAC;AACnD,QAAIa,OAAM,eAAe,2CAA2C,KAAKA,EAAC;AAAG,aAAO,kBAAkBb,IAAG,MAAM;AAAA,EACjH;AAEA,WAAS,kBAAkB,KAAK,KAAK;AACnC,QAAI,OAAO,QAAQ,MAAM,IAAI;AAAQ,YAAM,IAAI;AAE/C,aAASP,KAAI,GAAG,OAAO,IAAI,MAAM,GAAG,GAAGA,KAAI,KAAKA;AAAK,WAAKA,EAAC,IAAI,IAAIA,EAAC;AAEpE,WAAO;AAAA,EACT;AAEA,WAAS,qBAAqB;AAC5B,UAAM,IAAI,UAAU,sIAAsI;AAAA,EAC5J;AAEA,WAAS,mBAAmB;AAC1B,UAAM,IAAI,UAAU,2IAA2I;AAAA,EACjK;AAEA,WAAS,WAAW,MAAM,OAAO,gBAAgB;AAC/C,QAAI,SAAS,KAAK;AAChB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,SAAS,IAAI,KAAK,QAAQ,KAAK,MAAM,KAAK,CAAC;AAAA,EACzD;AACA,WAASqB,QAAO,IAAI,IAAI,MAAM;AAC5B,QAAIrB;AACJ,SAAK,MAAM,CAAC;AACZ,SAAK,MAAM,CAAC;AACZ,QAAI,MAAM,IACN,MAAM;AACV,QAAI,MAAM;AACR,WAAKA,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,YAAI,KAAKA,EAAC,CAAC,IAAI,IAAI,KAAKA,EAAC,CAAC;AAAA,MAC5B;AAAA,IACF,OAAO;AACL,WAAKA,MAAK,KAAK;AACb,YAAIA,EAAC,IAAI,IAAIA,EAAC;AAAA,MAChB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAASsB,UAASF,IAAG;AACnB,WAAO,OAAO,UAAU,SAAS,KAAKA,EAAC,MAAM;AAAA,EAC/C;AACA,WAAS,SAASG,IAAG;AACnB,WAAO,OAAOA,OAAM;AAAA,EACtB;AACA,WAAS,UAAUA,IAAG;AACpB,WAAO,OAAOA,OAAM;AAAA,EACtB;AACA,WAASC,UAASjB,IAAG;AACnB,WAAOA,MAAK,OAAO,QAAQ,OAAO,UAAU,SAAS,KAAKA,EAAC,MAAM;AAAA,EACnE;AACA,WAASkB,QAAOlB,IAAG;AACjB,WAAO,OAAO,UAAU,SAAS,KAAKA,EAAC,MAAM;AAAA,EAC/C;AACA,WAASmB,YAAWnB,IAAG;AACrB,WAAO,OAAO,UAAU,SAAS,KAAKA,EAAC,MAAM;AAAA,EAC/C;AAYA,WAASoB,OAAMC,IAAG;AAChB,QAAI,SAASA,EAAC,GAAG;AACf,aAAO,KAAKA;AAAA,IACd,WAAW,UAAUA,EAAC,GAAG;AACvB,aAAO,CAAC,CAACA;AAAA,IACX,WAAWC,QAAOD,EAAC,GAAG;AACpB,aAAO,IAAI,KAAKA,GAAE,QAAQ,CAAC;AAAA,IAC7B,WAAWE,YAAWF,EAAC,GAAG;AACxB,aAAOA;AAAA,IACT,WAAW,MAAM,QAAQA,EAAC,GAAG;AAC3B,UAAI,KAAK,CAAC;AACV,eAASG,KAAI,GAAGA,KAAIH,GAAE,QAAQG,MAAK;AACjC,WAAG,KAAKJ,OAAMC,GAAEG,EAAC,CAAC,CAAC;AAAA,MACrB;AACA,aAAO;AAAA,IACT,WAAWC,UAASJ,EAAC,GAAG;AACtB,UAAIK,KAAI,CAAC;AACT,eAASC,MAAKN,IAAG;AACf,QAAAK,GAAEC,EAAC,IAAIP,OAAMC,GAAEM,EAAC,CAAC;AAAA,MACnB;AACA,aAAOD;AAAA,IACT,OAAO;AACL,aAAOL;AAAA,IACT;AAAA,EACF;AAUA,WAASO,OAAMC,IAAGC,IAAG,YAAY,YAAY;AAC3C,QAAI,OAAO,CAAC,GACR,IACAC,IACA,OAAO,CAAC;AACZ,iBAAa,cAAc,CAAC;AAC5B,iBAAa,cAAc,CAAC;AAC5B,SAAKA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACtC,WAAK,WAAWA,EAAC,CAAC,IAAI;AAAA,IACxB;AACA,SAAKA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACtC,WAAK,WAAWA,EAAC,CAAC,IAAI;AAAA,IACxB;AACA,QAAIC,KAAIC,OAAMJ,EAAC;AACf,SAAKE,MAAKD,IAAG;AACX,UAAIE,GAAED,EAAC,KAAK,QAAQ,KAAKA,EAAC,GAAG;AAC3B,QAAAC,GAAED,EAAC,IAAID,GAAEC,EAAC;AAAA,MACZ,WAAW,KAAKA,EAAC,GAAG;AAClB,aAAK,CAAC;AACN,WAAG,KAAK,MAAM,IAAI,MAAM,QAAQC,GAAED,EAAC,CAAC,IAAIC,GAAED,EAAC,IAAI,CAACC,GAAED,EAAC,CAAC,CAAC;AACrD,WAAG,KAAKD,GAAEC,EAAC,CAAC;AACZ,QAAAC,GAAED,EAAC,IAAI;AAAA,MACT,WAAW,SAASD,GAAEC,EAAC,CAAC,KAAK,UAAUD,GAAEC,EAAC,CAAC,KAAKG,YAAWJ,GAAEC,EAAC,CAAC,KAAKI,UAASL,GAAEC,EAAC,CAAC,GAAG;AAClF,QAAAC,GAAED,EAAC,IAAID,GAAEC,EAAC;AAAA,MACZ,OAAO;AACL,YAAI,MAAM,QAAQD,GAAEC,EAAC,CAAC,GAAG;AACvB,eAAK,CAAC;AACN,cAAI,MAAM,QAAQC,GAAED,EAAC,CAAC,GAAG;AACvB,eAAG,KAAK,MAAM,IAAIC,GAAED,EAAC,CAAC;AAAA,UACxB;AACA,aAAG,KAAK,MAAM,IAAID,GAAEC,EAAC,CAAC;AACtB,UAAAC,GAAED,EAAC,IAAI;AAAA,QACT,WAAWK,UAASN,GAAEC,EAAC,CAAC,GAAG;AACzB,cAAI,CAACK,UAASJ,GAAED,EAAC,CAAC,GAAG;AACnB,YAAAC,GAAED,EAAC,IAAI,CAAC;AAAA,UACV;AACA,mBAASM,MAAKP,GAAEC,EAAC,GAAG;AAClB,YAAAC,GAAED,EAAC,EAAEM,EAAC,IAAIP,GAAEC,EAAC,EAAEM,EAAC;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAOL;AAAA,EACT;AAwGA,WAAS,cAAc,cAAc,WAAW,KAAK;AACnD,aAASM,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACnC,UAAIC,KAAI,IAAID,EAAC,EAAE,CAAC,EAAE,IAAIA,EAAC,EAAE,CAAC,CAAC,EAAE,MAAM,IAAIA,EAAC,EAAE,CAAC,GAAG,IAAIA,EAAC,EAAE,CAAC,CAAC;AACvD,UAAIC,OAAM,WAAW;AACnB,eAAOA;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,SAAS,OAAO,QAAQ,gBAAgB,sBAAsB;AACrE,QAAI,WAAW,SAASC,UAAS,YAAY;AAC3C,UAAIC,WAAU,WAAW,MAAM,YAAY;AAC3C,UAAIA,YAAW,MAAM;AACnB,iBAASH,KAAI,GAAGA,KAAIG,SAAQ,QAAQH,MAAK;AACvC,cAAI,MAAM,OAAOG,SAAQH,EAAC,EAAE,UAAU,GAAGG,SAAQH,EAAC,EAAE,SAAS,CAAC,CAAC,KAAK;AACpE,cAAI,OAAO,MAAM;AACf,yBAAa,WAAW,QAAQG,SAAQH,EAAC,GAAG,GAAG;AAAA,UACjD;AAAA,QACF;AAAA,MACF;AACA,MAAAG,WAAU,WAAW,MAAM,YAAY;AACvC,UAAIA,YAAW,MAAM;AACnB,iBAAS,KAAK,GAAG,KAAKA,SAAQ,QAAQ,MAAM;AAC1C,cAAI,OAAO,OAAOA,SAAQ,EAAE,EAAE,UAAU,GAAGA,SAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,KAAK;AACvE,cAAI,QAAQ,MAAM;AAChB,yBAAa,WAAW,QAAQA,SAAQ,EAAE,GAAG,IAAI;AAAA,UACnD;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,QAAI,OAAO,SAASC,MAAKC,IAAG;AAC1B,UAAIA,MAAK,MAAM;AACb,YAAI,SAASA,EAAC,GAAG;AACf,iBAAO,SAASA,EAAC;AAAA,QACnB,WAAWC,YAAWD,EAAC,KAAK,CAAC,yBAAyB,kBAAkB,SAASA,GAAE,QAAQ,IAAI,QAAQ,cAAc,MAAM,IAAI;AAC7H,iBAAOA,GAAE,MAAM;AAAA,QACjB,WAAW,MAAM,QAAQA,EAAC,GAAG;AAC3B,cAAIE,KAAI,CAAC;AACT,mBAASP,KAAI,GAAGA,KAAIK,GAAE,QAAQL,MAAK;AACjC,YAAAO,GAAE,KAAKH,MAAKC,GAAEL,EAAC,CAAC,CAAC;AAAA,UACnB;AACA,iBAAOO;AAAA,QACT,WAAWC,UAASH,EAAC,GAAG;AACtB,cAAII,KAAI,CAAC;AACT,mBAASC,MAAKL,IAAG;AACf,YAAAI,GAAEC,EAAC,IAAIN,MAAKC,GAAEK,EAAC,CAAC;AAAA,UAClB;AACA,iBAAOD;AAAA,QACT,OAAO;AACL,iBAAOJ;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO,KAAK,KAAK;AAAA,EACnB;AACA,WAAS,QAAQM,IAAGC,IAAG;AACrB,QAAID,IAAG;AACL,eAASX,KAAI,GAAGA,KAAIW,GAAE,QAAQX,MAAK;AACjC,QAAAY,GAAED,GAAEX,EAAC,CAAC;AAAA,MACR;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,iBAAiBW,IAAGC,IAAG;AAC9B,QAAID,IAAG;AACL,eAASX,KAAI,GAAGA,KAAIW,GAAE,QAAQX,MAAK;AACjC,YAAIY,GAAED,GAAEX,EAAC,CAAC,GAAG;AACX,iBAAOA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,oBAAoBW,IAAG,WAAW;AACzC,QAAIV,KAAI,CAAC;AACT,QAAIU,IAAG;AACL,eAASX,KAAI,GAAGA,KAAIW,GAAE,QAAQX,MAAK;AACjC,YAAI,UAAUW,GAAEX,EAAC,CAAC,GAAG;AACnB,UAAAC,GAAE,KAAKD,EAAC;AAAA,QACV;AAAA,MACF;AAAA,IACF;AACA,WAAOC;AAAA,EACT;AACA,WAAS,gBAAgBU,IAAGC,IAAG;AAC7B,QAAI,MAAM,iBAAiBD,IAAGC,EAAC;AAC/B,WAAO,QAAQ,KAAK,OAAOD,GAAE,GAAG;AAAA,EAClC;AACA,WAAS,mBAAmBA,IAAGC,IAAG;AAChC,QAAI,UAAU,oBAAoBD,IAAGC,EAAC;AACtC,WAAO,QAAQ,IAAI,SAAUZ,IAAG;AAC9B,aAAOW,GAAEX,EAAC;AAAA,IACZ,CAAC;AAAA,EACH;AACA,WAAS,uBAAuBS,IAAGG,IAAG;AACpC,QAAI,MAAM;AACV,IAAAH,GAAE,QAAQ,SAAUI,IAAG;AACrB,UAAID,GAAEC,EAAC,GAAG;AACR,cAAMA;AAAA,MACR;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AACA,WAAS,WAAWJ,IAAG;AACrB,QAAIE,KAAI,CAAC;AACT,IAAAF,GAAE,QAAQ,SAAUI,IAAG;AACrB,MAAAF,GAAE,KAAKE,EAAC;AAAA,IACV,CAAC;AACD,WAAOF;AAAA,EACT;AACA,WAAS,mBAAmBA,IAAGC,IAAG;AAChC,QAAI,MAAM,iBAAiBD,IAAGC,EAAC;AAC/B,QAAI,MAAM,IAAI;AACZ,MAAAD,GAAE,OAAO,KAAK,CAAC;AAAA,IACjB;AACA,WAAO,QAAQ;AAAA,EACjB;AACA,WAAS,UAAUA,IAAG;AACpB,QAAI,MAAM,aAAa,MAAM;AAC3B,aAAO,MAAM,KAAKA,EAAC;AAAA,IACrB,OAAO;AACL,UAAI,MAAM,CAAC;AACX,YAAM,UAAU,KAAK,MAAM,KAAKA,EAAC;AACjC,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,OAAOG,IAAGC,IAAG;AACpB,QAAI,MAAMD,GAAE,QAAQC,EAAC;AACrB,QAAI,MAAM,IAAI;AACZ,MAAAD,GAAE,OAAO,KAAK,CAAC;AAAA,IACjB;AACA,WAAO,QAAQ;AAAA,EACjB;AAMA,WAAS,gBAAgBE,MAAKC,MAAK,OAAO,eAAe;AACvD,QAAIC,KAAIF,KAAIC,IAAG;AACf,QAAIC,MAAK,MAAM;AACb,MAAAA,KAAI,CAAC;AACL,MAAAF,KAAIC,IAAG,IAAIC;AAAA,IACb;AACA,IAAAA,GAAE,gBAAgB,YAAY,MAAM,EAAE,KAAK;AAC3C,WAAOA;AAAA,EACT;AAUA,WAAS,QAAQ,MAAM,MAAM,cAAc;AACzC,QAAI,KAAK,QAAQ,IAAI,MAAM,IAAI;AAC7B,UAAI,cAAc;AAChB,aAAK,QAAQ,IAAI;AAAA,MACnB,OAAO;AACL,aAAK,KAAK,IAAI;AAAA,MAChB;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,CAAC;AACb,OAAS,MAAM,GAAG,MAAM,KAAK,OAAO;AAClC,UAAM,GAAG,KAAK,MAAM,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAAA,EACtD;AAFS;AAGT,WAASC,QAAO;AACd,QAAI,KAAK,KAAK,OAAO,IAAI,aAAa;AACtC,QAAI,KAAK,KAAK,OAAO,IAAI,aAAa;AACtC,QAAI,KAAK,KAAK,OAAO,IAAI,aAAa;AACtC,QAAI,KAAK,KAAK,OAAO,IAAI,aAAa;AACtC,WAAO,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,IAAI,GAAI,IAAI,MAAM,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,IAAI,GAAI,IAAI,MAAM,MAAM,MAAM,KAAK,KAAO,EAAI,IAAI,MAAM,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,KAAK,KAAO,GAAI,IAAI,MAAM,MAAM,IAAI,GAAI,IAAI,MAAM,MAAM,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,KAAK,GAAI,IAAI,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,IAAI,GAAI,IAAI,MAAM,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,KAAK,GAAI;AAAA,EAC/Z;AACA,WAAS,YAAYC,QAAOC,SAAQ,UAAU;AAC5C,QAAI,SAAS;AAAA,MACX,GAAGD,OAAM,IAAIC,QAAO;AAAA,MACpB,GAAGD,OAAM,IAAIC,QAAO;AAAA,IACtB,GACI,KAAK,KAAK,IAAI,WAAW,MAAM,KAAK,KAAK,CAAC,GAC1C,KAAK,KAAK,IAAI,WAAW,MAAM,KAAK,KAAK,CAAC;AAC9C,WAAO;AAAA,MACL,GAAG,OAAO,IAAI,KAAK,OAAO,IAAI,KAAKA,QAAO;AAAA,MAC1C,GAAG,OAAO,IAAI,KAAK,OAAO,IAAI,KAAKA,QAAO;AAAA,MAC1C;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAWA,WAAS,SAASC,IAAG;AACnB,QAAIA,MAAK,MAAM;AACb,aAAO;AAAA,IACT;AACA,QAAI,MAAMA,GAAE,QAAQ,UAAU,EAAE,GAC5B,KAAK,MACLC,KAAI,IAAI;AACZ,WAAO,GAAG,KAAK,IAAI,OAAO,EAAEA,EAAC,CAAC,GAAG;AAAA,IAAC;AAClC,WAAO,IAAI,MAAM,GAAGA,KAAI,CAAC;AAAA,EAC3B;AACA,WAASC,MAAK,KAAKC,KAAI;AACrB,UAAM,IAAI,UAAU,QAAQ,OAAO,QAAQ,WAAW,CAAC,GAAG,IAAI;AAC9D,aAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,OAAO;AACzC,MAAAA,IAAG,IAAI,GAAG,CAAC;AAAA,IACb;AAAA,EACF;AACA,WAASC,KAAI,KAAKD,KAAI;AACpB,QAAIE,KAAI,CAAC;AACT,aAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,OAAO;AACzC,MAAAA,GAAE,KAAKF,IAAG,IAAI,GAAG,CAAC,CAAC;AAAA,IACrB;AACA,WAAOE;AAAA,EACT;AAEA,WAAS,MAAM;AACb,aAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,WAAK,IAAI,IAAI,UAAU,IAAI;AAAA,IAC7B;AACA,QAAI,OAAO,YAAY,aAAa;AAClC,UAAI;AACF,YAAI,MAAM,UAAU,UAAU,SAAS,CAAC;AACxC,gBAAQ,IAAI,GAAG;AAAA,MACjB,SAASC,IAAP;AAAA,MAAW;AAAA,IACf;AAAA,EACF;AACA,WAAS,MAAMC,IAAG;AAChB,WAAOA,KAAI,IAAI,KAAKA,KAAI,IAAI,IAAI;AAAA,EAClC;AACA,WAASC,MAAK,iBAAiB,aAAa,mBAAmB;AAC7D,WAAO,WAAY;AACjB,UAAIC,KAAI;AACR,UAAI;AACF,YAAI,eAAe,MAAM;AACvB,UAAAA,KAAI,YAAY,MAAM,MAAM,SAAS;AAAA,QACvC;AAAA,MACF,SAASH,IAAP;AACA,YAAI,+BAA+BA,EAAC;AAAA,MACtC;AACA,UAAI,mBAAmB,SAAS,qBAAqB,QAAQG,OAAM,oBAAoB;AACrF,YAAI;AACF,UAAAA,KAAI,gBAAgB,MAAM,MAAM,SAAS;AAAA,QAC3C,SAASH,IAAP;AACA,cAAI,+BAA+BA,EAAC;AAAA,QACtC;AAAA,MACF;AACA,aAAOG;AAAA,IACT;AAAA,EACF;AACA,WAAS,QAAQC,MAAKC,MAAK,gBAAgB;AACzC,QAAI,CAACD,KAAI,IAAIC,IAAG,GAAG;AACjB,MAAAD,KAAI,IAAIC,MAAK,eAAe,CAAC;AAAA,IAC/B;AACA,WAAOD,KAAI,IAAIC,IAAG;AAAA,EACpB;AACA,WAAS,iBAAiB,QAAQC,MAAK;AACrC,QAAI,QAAQ,OAAO;AACnB,WAAO,SAAS,MAAM;AACpB,UAAI,iBAAiBA,MAAK;AACxB,eAAO;AAAA,MACT,OAAO;AACL,gBAAQ,MAAM;AAAA,MAChB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,aAAa,OAAOC,QAAO,YAAY,gBAAgB;AAC9D,QAAIA,OAAM,WAAW,GAAG;AACtB,MAAAA,OAAM,KAAK,KAAK;AAAA,IAClB,OAAO;AACL,UAAIC,QAAO,iBAAiB,KAAK;AACjC,UAAIC,OAAM;AACV,UAAIC,OAAMH,OAAM;AAChB,UAAII,SAAQ,KAAK,OAAOF,OAAMC,QAAO,CAAC;AACtC,aAAOA,OAAMD,MAAK;AAChB,YAAIG,KAAI,WAAW,OAAOL,OAAMI,MAAK,CAAC,IAAIH;AAC1C,YAAII,KAAI,GAAG;AACT,UAAAF,OAAMC;AAAA,QACR,OAAO;AACL,UAAAF,OAAME,SAAQ;AAAA,QAChB;AACA,QAAAA,SAAQ,KAAK,OAAOF,OAAMC,QAAO,CAAC;AAAA,MACpC;AACA,MAAAH,OAAM,OAAOI,QAAO,GAAG,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,WAAS,kBAAkB,IAAI,UAAU,KAAK;AAC5C,UAAM,OAAO,GAAG;AAChB,QAAI,YAAY,IAAI,iBAAiB,QAAQ;AAC7C,aAASE,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,UAAI,UAAUA,EAAC,MAAM,IAAI;AACvB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,QAAQb,IAAG,qBAAqB;AACvC,QAAIA,GAAE,iBAAiB;AACrB,MAAAA,GAAE,gBAAgB;AAAA,IACpB,OAAO;AACL,MAAAA,GAAE,cAAc;AAAA,IAClB;AACA,QAAI,CAAC,uBAAuBA,GAAE,gBAAgB;AAC5C,MAAAA,GAAE,eAAe;AAAA,IACnB;AAAA,EACF;AACA,WAASc,YAAW,IAAI,UAAU,WAAW,oBAAoB;AAC/D,QAAI,sBAAsB,kBAAkB,IAAI,UAAU,SAAS,GAAG;AACpE,aAAO;AAAA,IACT,OAAO;AACL,WAAK,GAAG;AAAA,IACV;AACA,WAAO,MAAM,QAAQ,OAAO,WAAW;AACrC,UAAI,kBAAkB,IAAI,QAAQ,GAAG;AACnC,eAAO;AAAA,MACT,OAAO;AACL,aAAK,GAAG;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACA,WAAS,eAAed,IAAG;AACzB,WAAOA,GAAE,cAAcA,GAAE;AAAA,EAC3B;AACA,WAAS,cAAc,IAAI,IAAIe,YAAW;AACxC,SAAK,SAAS,EAAE;AAChB,QAAI,OAAO,GAAG,UAAU,YAAY,aAAa;AAC/C,SAAG,UAAU,UAAU;AAAA,IACzB,OAAO;AACL,SAAG,YAAY;AAAA,IACjB;AACA,QAAI;AACF,UAAI,KAAK,GAAG;AACZ,UAAI,MAAM,MAAM;AACd,eAAO,GAAG,SAAS,GAAG;AACpB,aAAG,OAAO,GAAG,KAAK,CAAC,CAAC;AAAA,QACtB;AACA,iBAASF,KAAI,GAAGA,KAAIE,WAAU,QAAQF,MAAK;AACzC,cAAIE,WAAUF,EAAC,GAAG;AAChB,eAAG,IAAIE,WAAUF,EAAC,CAAC;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAASb,IAAP;AACA,UAAI,+BAA+BA,EAAC;AAAA,IACtC;AAAA,EACF;AACA,WAAS,cAAc,IAAI;AACzB,WAAO,GAAG,aAAa,OAAO,OAAO,GAAG,UAAU,YAAY,cAAc,GAAG,YAAY,GAAG,UAAU,UAAU;AAAA,EACpH;AACA,WAAS,YAAY,IAAI,cAAc,iBAAiB;AACtD,QAAI,MAAM,gBAAgB,OAAO,CAAC,IAAI,MAAM,QAAQ,YAAY,IAAI,eAAe,aAAa,MAAM,KAAK;AAC3G,QAAI,MAAM,mBAAmB,OAAO,CAAC,IAAI,MAAM,QAAQ,eAAe,IAAI,kBAAkB,gBAAgB,MAAM,KAAK;AACvH,QAAI,YAAY,cAAc,EAAE,GAC5B,aAAa,UAAU,MAAM,KAAK;AACtC,QAAI,UAAU,SAASgB,SAAQC,MAAKC,UAAS;AAC3C,eAASL,KAAI,GAAGA,KAAIK,SAAQ,QAAQL,MAAK;AACvC,YAAII,MAAK;AACP,cAAI,WAAW,QAAQC,SAAQL,EAAC,CAAC,MAAM,IAAI;AACzC,uBAAW,KAAKK,SAAQL,EAAC,CAAC;AAAA,UAC5B;AAAA,QACF,OAAO;AACL,cAAI,MAAM,WAAW,QAAQK,SAAQL,EAAC,CAAC;AACvC,cAAI,QAAQ,IAAI;AACd,uBAAW,OAAO,KAAK,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,YAAQ,MAAM,GAAG;AACjB,YAAQ,OAAO,GAAG;AAClB,kBAAc,IAAI,WAAW,KAAK,GAAG,GAAG,UAAU;AAAA,EACpD;AACA,WAAS,WAAW,IAAI;AACtB,WAAO,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,QAAQ,EAAE,KAAK,GAAG,UAAU,QAAQ,GAAG,mBAAmB,QAAQ,GAAG,YAAY;AAAA,EAClH;AAIA,WAASM,UAAS,IAAI;AACpB,WAAO,cAAc,EAAE;AAAA,EACzB;AACA,WAASC,UAAS,IAAI,OAAO;AAC3B,QAAI,OAAO,SAASC,MAAKC,KAAIC,QAAO;AAClC,UAAID,OAAM,QAAQC,UAAS,QAAQA,OAAM,SAAS,GAAG;AACnD,YAAID,IAAG,WAAW;AAChB,cAAI,QAAQ,SAASC,MAAK,EAAE,MAAM,KAAK;AACvC,kBAAQ,OAAO,SAAU,MAAM;AAC7B,YAAAD,IAAG,UAAU,IAAI,IAAI;AAAA,UACvB,CAAC;AAAA,QACH,OAAO;AACL,sBAAYA,KAAIC,MAAK;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AACA,QAAI,WAAW,EAAE,GAAG;AAClB,cAAQ,IAAI,SAAUD,KAAI;AACxB,eAAO,KAAKA,KAAI,KAAK;AAAA,MACvB,CAAC;AAAA,IACH,OAAO;AACL,WAAK,IAAI,KAAK;AAAA,IAChB;AAAA,EACF;AACA,WAASE,UAAS,IAAI,OAAO;AAC3B,QAAI,GAAG,WAAW;AAChB,aAAO,GAAG,UAAU,SAAS,KAAK;AAAA,IACpC,OAAO;AACL,aAAO,cAAc,EAAE,EAAE,QAAQ,KAAK,MAAM;AAAA,IAC9C;AAAA,EACF;AACA,WAASC,aAAY,IAAI,OAAO;AAC9B,QAAI,OAAO,SAASJ,MAAKC,KAAIC,QAAO;AAClC,UAAID,OAAM,QAAQC,UAAS,QAAQA,OAAM,SAAS,GAAG;AACnD,YAAID,IAAG,WAAW;AAChB,cAAI,QAAQ,SAASC,MAAK,EAAE,MAAM,KAAK;AACvC,gBAAM,QAAQ,SAAU,MAAM;AAC5B,YAAAD,IAAG,UAAU,OAAO,IAAI;AAAA,UAC1B,CAAC;AAAA,QACH,OAAO;AACL,sBAAYA,KAAI,MAAMC,MAAK;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AACA,QAAI,WAAW,EAAE,GAAG;AAClB,cAAQ,IAAI,SAAUD,KAAI;AACxB,eAAO,KAAKA,KAAI,KAAK;AAAA,MACvB,CAAC;AAAA,IACH,OAAO;AACL,WAAK,IAAI,KAAK;AAAA,IAChB;AAAA,EACF;AACA,WAASI,aAAY,IAAI,OAAO;AAC9B,QAAI,QAAQ;AACZ,QAAI,OAAO,SAASL,MAAKC,KAAIC,QAAO;AAClC,UAAID,OAAM,QAAQC,UAAS,QAAQA,OAAM,SAAS,GAAG;AACnD,YAAID,IAAG,WAAW;AAChB,UAAAA,IAAG,UAAU,OAAOC,MAAK;AAAA,QAC3B,OAAO;AACL,cAAI,MAAM,SAASD,KAAIC,MAAK,GAAG;AAC7B,kBAAM,YAAYD,KAAIC,MAAK;AAAA,UAC7B,OAAO;AACL,kBAAM,SAASD,KAAIC,MAAK;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,WAAW,EAAE,GAAG;AAClB,cAAQ,IAAI,SAAUD,KAAI;AACxB,eAAO,KAAKA,KAAI,KAAK;AAAA,MACvB,CAAC;AAAA,IACH,OAAO;AACL,WAAK,IAAI,KAAK;AAAA,IAChB;AAAA,EACF;AACA,WAASK,eAAc,KAAK,OAAO,OAAO,MAAM;AAC9C,WAAOC,iBAAgB,MAAM,KAAK,OAAO,OAAO,IAAI;AAAA,EACtD;AACA,WAASA,iBAAgBC,KAAI,KAAK,OAAO,OAAO,MAAM;AACpD,QAAIC,KAAID,OAAM,OAAO,SAAS,cAAc,GAAG,IAAI,SAAS,gBAAgBA,KAAI,GAAG;AACnF,QAAIE;AACJ,YAAQ,SAAS,CAAC;AAClB,SAAKA,MAAK,OAAO;AACf,MAAAD,GAAE,MAAMC,EAAC,IAAI,MAAMA,EAAC;AAAA,IACtB;AACA,QAAI,OAAO;AACT,MAAAD,GAAE,YAAY;AAAA,IAChB;AACA,WAAO,QAAQ,CAAC;AAChB,SAAKC,MAAK,MAAM;AACd,MAAAD,GAAE,aAAaC,IAAG,KAAK,KAAKA,EAAC,CAAC;AAAA,IAChC;AACA,WAAOD;AAAA,EACT;AACA,WAAS,qBAAqB,IAAI;AAChC,QAAI,MAAM,GAAG,sBAAsB,GAC/B,OAAO,SAAS,MAChB,UAAU,SAAS,iBACvB,YAAY,OAAO,eAAe,QAAQ,aAAa,KAAK,WACxD,aAAa,OAAO,eAAe,QAAQ,cAAc,KAAK,YAClE,YAAY,QAAQ,aAAa,KAAK,aAAa,GAC/C,aAAa,QAAQ,cAAc,KAAK,cAAc,GAC1DE,OAAM,IAAI,MAAM,YAAY,WACxBC,QAAO,IAAI,OAAO,aAAa;AACnC,WAAO;AAAA,MACL,GAAG,KAAK,MAAMA,KAAI;AAAA,MAClB,GAAG,KAAK,MAAMD,IAAG;AAAA,IACnB;AAAA,EACF;AACA,WAAS,WAAW,IAAI;AACtB,WAAO;AAAA,MACL,GAAG,GAAG;AAAA,MACN,GAAG,GAAG;AAAA,IACR;AAAA,EACF;AACA,WAAS,mBAAmB,IAAI;AAC9B,QAAI;AACF,aAAO;AAAA,QACL,GAAG,WAAW,GAAG,MAAM,QAAQ,KAAK;AAAA,QACpC,GAAG,WAAW,GAAG,OAAO,QAAQ,KAAK;AAAA,MACvC;AAAA,IACF,SAASF,IAAP;AACA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,EACF;AACA,WAAS,cAAc,IAAI;AACzB,QAAI;AACF,aAAO;AAAA,QACL,GAAG,WAAW,GAAG,EAAE,QAAQ,KAAK;AAAA,QAChC,GAAG,WAAW,GAAG,EAAE,QAAQ,KAAK;AAAA,MAClC;AAAA,IACF,SAASA,IAAP;AACA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,EACF;AACA,WAAS,mBAAmB,IAAI,UAAU;AACxC,QAAI,KAAK,SAAS,aAAa,EAAE,sBAAsB;AACvD,QAAI,KAAK,GAAG,sBAAsB;AAClC,QAAII,KAAI,SAAS;AACjB,WAAO;AAAA,MACL,IAAI,GAAG,OAAO,GAAG,QAAQA;AAAA,MACzB,IAAI,GAAG,MAAM,GAAG,OAAOA;AAAA,IACzB;AAAA,EACF;AACA,WAAS,eAAe,IAAI,UAAU;AACpC,QAAI,KAAK,GAAG,sBAAsB;AAClC,QAAIA,KAAI,SAAS;AACjB,WAAO;AAAA,MACL,GAAG,GAAG,QAAQA;AAAA,MACd,GAAG,GAAG,SAASA;AAAA,IACjB;AAAA,EACF;AACA,MAAI;AACJ,GAAC,SAAUC,eAAc;AACvB,IAAAA,cAAa,KAAK,IAAI;AACtB,IAAAA,cAAa,MAAM,IAAI;AAAA,EACzB,GAAG,iBAAiB,eAAe,CAAC,EAAE;AACtC,WAAS,eAAe,IAAI;AAC1B,WAAO,cAAc,aAAa,aAAa,MAAM,aAAa;AAAA,EACpE;AACA,WAAS,aAAa,IAAI;AACxB,WAAO,eAAe,EAAE,MAAM,aAAa;AAAA,EAC7C;AAYA,WAAS,MAAM;AACb,aAAS,OAAO,UAAU,QAAQ,YAAY,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC5F,gBAAU,IAAI,IAAI,UAAU,IAAI;AAAA,IAClC;AACA,WAAO,UAAU,IAAI,SAAU,IAAI;AACjC,aAAO,MAAM;AAAA,IACf,CAAC,EAAE,KAAK,GAAG;AAAA,EACb;AACA,WAAS,YAAY;AACnB,aAAS,QAAQ,UAAU,QAAQ,YAAY,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAClG,gBAAU,KAAK,IAAI,UAAU,KAAK;AAAA,IACpC;AACA,WAAO,UAAU,KAAK,GAAG;AAAA,EAC3B;AACA,WAAS,MAAM;AACb,aAAS,QAAQ,UAAU,QAAQ,UAAU,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAChG,cAAQ,KAAK,IAAI,UAAU,KAAK;AAAA,IAClC;AACA,WAAO,QAAQ,IAAI,SAAU,IAAI;AAC/B,aAAO,MAAM,KAAK;AAAA,IACpB,CAAC,EAAE,KAAK,GAAG;AAAA,EACb;AACA,MAAI,SAAS;AACb,MAAI,SAAS;AACb,MAAI,QAAQ;AACZ,MAAI,OAAO;AAGX,MAAI,WAAW;AACf,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,MAAI,kBAAkB;AACtB,MAAI,oBAAoB;AACxB,MAAI,0BAA0B;AAC9B,MAAI,qBAAqB;AACzB,MAAI,kBAAkB;AACtB,MAAI,yBAAyB,kBAAkB;AAC/C,MAAI,kBAAkB;AACtB,MAAI,qBAAqB;AACzB,MAAI,kBAAkB;AACtB,MAAI,0BAA0B;AAC9B,MAAI,kBAAkB;AACtB,MAAI,iBAAiB;AACrB,MAAI,2BAA2B;AAC/B,MAAI,sBAAsB;AAC1B,MAAI,0BAA0B;AAC9B,MAAI,8BAA8B;AAClC,MAAI,gCAAgC;AACpC,MAAI,+BAA+B;AACnC,MAAI,wBAAwB;AAC5B,MAAI,uBAAuB;AAC3B,MAAI,gBAAgB;AACpB,MAAI,uBAAuB;AAC3B,MAAI,mBAAmB;AACvB,MAAI,4BAA4B;AAChC,MAAI,4BAA4B;AAChC,MAAI,yBAAyB;AAC7B,MAAI,yBAAyB;AAC7B,MAAI,0BAA0B;AAC9B,MAAI,uCAAuC;AAC3C,MAAI,qCAAqC;AACzC,MAAI,uBAAuB;AAC3B,MAAI,oBAAoB;AACxB,MAAI,uBAAuB;AAC3B,MAAI,qBAAqB;AACzB,MAAI,2BAA2B;AAC/B,MAAI,6BAA6B;AACjC,MAAI,sBAAsB;AAC1B,MAAI,wBAAwB;AAC5B,MAAI,2BAA2B;AAC/B,MAAI,6BAA6B;AACjC,MAAI,yBAAyB;AAC7B,MAAI,aAAa;AACjB,MAAI,oBAAoB;AACxB,MAAI,wBAAwB;AAC5B,MAAI,wBAAwB;AAC5B,MAAI,0BAA0B;AAC9B,MAAI,gCAAgC;AACpC,MAAI,2BAA2B,IAAI,iBAAiB;AACpD,MAAI,6BAA6B;AACjC,MAAI,6BAA6B;AACjC,MAAI,8BAA8B;AAClC,MAAI,8BAA8B;AAClC,MAAI,0BAA0B;AAE9B,MAAI,kBAAkB;AAAA,IACpB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,kBAAkB;AAAA,EACpB;AACA,MAAI,mBAAmB;AACvB,MAAI,YAAY;AAChB,MAAI,OAAO;AACX,MAAI,SAAS;AACb,MAAI,eAAe;AACnB,MAAI,aAAa;AACjB,MAAI,cAAc;AAClB,MAAI,eAAe;AACnB,MAAI,KAAK;AAAA,IACP,KAAK;AAAA,EACP;AACA,WAAS,MAAM,MAAM,YAAY;AAC/B,aAASC,MAAK,YAAY;AACxB,WAAK,aAAaA,IAAG,KAAK,WAAWA,EAAC,CAAC;AAAA,IACzC;AAAA,EACF;AACA,WAAS,MAAMC,OAAM,YAAY;AAC/B,iBAAa,cAAc,CAAC;AAC5B,eAAW,UAAU;AACrB,eAAW,QAAQ,GAAG;AACtB,WAAOC,iBAAgB,GAAG,KAAKD,OAAM,MAAM,MAAM,UAAU;AAAA,EAC7D;AACA,WAAS,KAAKE,IAAG;AACf,WAAO,4BAA4BA,GAAE,CAAC,IAAI,YAAYA,GAAE,CAAC,IAAI;AAAA,EAC/D;AACA,WAAS,aAAa,QAAQ,MAAM,OAAO;AACzC,SAAK,aAAa,MAAM,MAAM,OAAO,MAAM,OAAO,IAAI;AACtD,SAAK,aAAa,QAAQ,MAAM,SAAS,MAAM,SAAS,IAAI;AAC5D,QAAI,MAAM,aAAa;AACrB,WAAK,aAAa,cAAc,MAAM,WAAW;AAAA,IACnD;AACA,QAAI,MAAM,SAAS,KAAK,MAAM,UAAU,KAAK,CAAC,MAAM,gBAAgB,GAAG;AACrE,UAAI,MAAM,MAAM,SAAS,EAAE,QAAQ,GAAG,MAAM,KAAK,MAAM,KACnD,QAAQ,MAAM,SAAS,EAAE,MAAM,GAAG,GAClC,aAAa;AACjB,cAAQ,OAAO,SAAUC,IAAG;AAC1B,sBAAc,KAAK,MAAMA,KAAI,MAAM,WAAW,IAAI;AAAA,MACpD,CAAC;AACD,WAAK,aAAa,kBAAkB,UAAU;AAAA,IAChD,WAAW,MAAM,gBAAgB,GAAG;AAClC,WAAK,aAAa,kBAAkB,MAAM,gBAAgB,CAAC;AAAA,IAC7D;AACA,aAASJ,MAAK,iBAAiB;AAC7B,UAAI,MAAMA,EAAC,GAAG;AACZ,aAAK,aAAa,gBAAgBA,EAAC,GAAG,MAAMA,EAAC,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACA,WAAS,eAAeK,MAAK,MAAM,KAAK;AACtC,QAAIA,KAAI,WAAW,SAAS,KAAK;AAC/B,MAAAA,KAAI,aAAa,MAAMA,KAAI,WAAW,GAAG,CAAC;AAAA,IAC5C,OAAO;AACL,MAAAA,KAAI,YAAY,IAAI;AAAA,IACtB;AAAA,EACF;AAOA,WAAS,cAAc,MAAM,OAAO,UAAU;AAC5C,QAAIC,KAAI,CAAC,MAAM,KAAK;AACpB,QAAI,UAAU;AACZ,MAAAA,GAAE,KAAK,QAAQ;AAAA,IACjB;AACA,WAAOA,GAAE,KAAK,GAAG;AAAA,EACnB;AACA,MAAI,sBAAsB;AAC1B,MAAI,0BAA0B;AAC9B,MAAI,wBAAwB;AAC5B,MAAI,sBAAsB;AAC1B,MAAI,WAAW;AACf,MAAI,UAAU;AACd,MAAI,aAAa;AACjB,MAAI,cAAc;AAClB,MAAIC,eAAc;AAClB,MAAI,oBAAoB;AACxB,MAAI,kBAAkB;AACtB,MAAI,gBAAgB;AACpB,MAAI,cAAc;AAClB,MAAIC,mBAAkB;AACtB,MAAIC,oBAAmB;AACvB,MAAI,kBAAkB;AACtB,MAAI,kBAAkB;AACtB,MAAI,gBAAgB;AACpB,MAAIC,kBAAiB;AACrB,MAAIC,mBAAkB;AACtB,MAAI,YAAY;AAChB,MAAIC,oBAAmB;AACvB,MAAIC,kBAAiB;AACrB,MAAIC,mBAAkB;AACtB,MAAI,kBAAkB;AACtB,MAAI,kBAAkB;AACtB,MAAIC,oBAAmB;AACvB,MAAI,eAAe;AACnB,MAAI,yBAAyB;AAC7B,MAAI,wBAAwB;AAC5B,MAAI,sBAAsB,cAAc,SAASR,YAAW;AAC5D,MAAI,0BAA0B,cAAc,SAAS,eAAe;AACpE,MAAI,wBAAwB,cAAc,SAAS,aAAa;AAChE,MAAI,0BAA0B,cAAc,SAASG,eAAc;AACnE,MAAI,2BAA2B,cAAc,SAASC,gBAAe;AACrE,MAAI,2BAA2B,cAAc,SAAS,eAAe;AACrE,MAAI,yBAAyB,cAAc,SAAS,aAAa;AACjE,MAAI,2BAA2B,cAAc,SAASH,gBAAe;AACrE,MAAI,4BAA4B,cAAc,SAAS,iBAAiB;AACxE,MAAI,oBAAoB,cAAc,SAAS,SAAS;AACxD,MAAI,uBAAuB,cAAc,UAAUD,YAAW;AAC9D,MAAI,2BAA2B,cAAc,UAAU,eAAe;AACtE,MAAI,yBAAyB,cAAc,UAAU,aAAa;AAClE,MAAI,0BAA0B,cAAc,UAAUG,eAAc;AACpE,MAAI,2BAA2B,cAAc,UAAUC,gBAAe;AACtE,MAAI,yBAAyB,cAAc,UAAU,aAAa;AAClE,MAAI,2BAA2B,cAAc,UAAUH,gBAAe;AACtE,MAAI,qBAAqB,cAAc,UAAU,SAAS;AAC1D,MAAI,yBAAyB,cAAc,YAAYD,YAAW;AAClE,MAAI,6BAA6B,cAAc,YAAY,eAAe;AAC1E,MAAI,2BAA2B,cAAc,YAAY,aAAa;AACtE,MAAI,4BAA4B,cAAc,YAAYG,eAAc;AACxE,MAAI,6BAA6B,cAAc,YAAYC,gBAAe;AAC1E,MAAI,2BAA2B,cAAc,YAAY,aAAa;AACtE,MAAI,6BAA6B,cAAc,YAAYH,gBAAe;AAC1E,MAAI,+BAA+B,cAAc,YAAY,iBAAiB;AAC9E,MAAI,uBAAuB,cAAc,YAAY,SAAS;AAC9D,MAAI,oBAAoB;AACxB,MAAI,qBAAqB,IAAI,eAAe;AAC5C,MAAI,oBAAoB,IAAI,cAAc;AAC1C,MAAI,iBAAiB,IAAI,eAAe;AACxC,MAAI,2BAA2B,IAAI,uBAAuB;AAC1D,MAAI,mBAAmB,IAAI,aAAa;AAExC,MAAI;AACJ,GAAC,SAAUQ,wBAAuB;AAChC,IAAAA,uBAAsB,QAAQ,IAAI;AAClC,IAAAA,uBAAsB,SAAS,IAAI;AACnC,IAAAA,uBAAsB,UAAU,IAAI;AACpC,IAAAA,uBAAsB,SAAS,IAAI;AACnC,IAAAA,uBAAsB,WAAW,IAAI;AACrC,IAAAA,uBAAsB,QAAQ,IAAI;AAAA,EACpC,GAAG,0BAA0B,wBAAwB,CAAC,EAAE;AACxD,MAAI;AACJ,GAAC,SAAUC,kBAAiB;AAC1B,IAAAA,iBAAgB,QAAQ,IAAI;AAC5B,IAAAA,iBAAgB,aAAa,IAAI;AACjC,IAAAA,iBAAgB,QAAQ,IAAI;AAC5B,IAAAA,iBAAgB,YAAY,IAAI;AAChC,IAAAA,iBAAgB,aAAa,IAAI;AACjC,IAAAA,iBAAgB,QAAQ,IAAI;AAC5B,IAAAA,iBAAgB,YAAY,IAAI;AAChC,IAAAA,iBAAgB,kBAAkB,IAAI;AACtC,IAAAA,iBAAgB,gBAAgB,IAAI;AACpC,IAAAA,iBAAgB,iBAAiB,IAAI;AACrC,IAAAA,iBAAgB,eAAe,IAAI;AACnC,IAAAA,iBAAgB,qBAAqB,IAAI;AACzC,IAAAA,iBAAgB,qBAAqB,IAAI;AACzC,IAAAA,iBAAgB,MAAM,IAAI;AAC1B,IAAAA,iBAAgB,WAAW,IAAI;AAC/B,IAAAA,iBAAgB,OAAO,IAAI;AAC3B,IAAAA,iBAAgB,KAAK,IAAI;AACzB,IAAAA,iBAAgB,SAAS,IAAI;AAC7B,IAAAA,iBAAgB,UAAU,IAAI;AAAA,EAChC,GAAG,oBAAoB,kBAAkB,CAAC,EAAE;AAE5C,WAAS,cAAc;AACrB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AACA,WAAS,eAAe;AACtB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,MAAI,kBAAkB,WAAY;AAChC,aAASC,iBAAgBC,SAAQ;AAC/B,MAAAC,iBAAgB,MAAMF,gBAAe;AACrC,WAAK,SAASC;AACd,MAAAE,iBAAgB,MAAM,MAAM,MAAM;AAClC,MAAAA,iBAAgB,MAAM,MAAM,MAAM;AAClC,MAAAA,iBAAgB,MAAM,MAAM,MAAM;AAClC,MAAAA,iBAAgB,MAAM,MAAM,MAAM;AAClC,MAAAA,iBAAgB,MAAM,WAAW,aAAa,CAAC;AAC/C,MAAAA,iBAAgB,MAAM,QAAQ,MAAM;AACpC,WAAK,KAAKF,QAAO;AACjB,WAAK,KAAKA,QAAO;AACjB,WAAK,KAAKA,QAAO;AACjB,WAAK,KAAKA,QAAO;AAAA,IACnB;AACA,IAAAG,cAAaJ,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuBK,IAAGC,IAAG;AAC3C,eAAO,YAAY;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,IAAI,IAAIC,KAAIC,KAAI;AAC/C,eAAO,CAAC;AAAA,MACV;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBH,IAAGC,IAAGG,IAAGC,IAAG;AAC1C,YAAItB,KAAI,CAAC;AACT,QAAAA,GAAE,KAAK,MAAMA,IAAG,KAAK,iBAAiBiB,IAAGC,IAAGD,KAAII,IAAGH,EAAC,CAAC;AACrD,QAAAlB,GAAE,KAAK,MAAMA,IAAG,KAAK,iBAAiBiB,KAAII,IAAGH,IAAGD,KAAII,IAAGH,KAAII,EAAC,CAAC;AAC7D,QAAAtB,GAAE,KAAK,MAAMA,IAAG,KAAK,iBAAiBiB,KAAII,IAAGH,KAAII,IAAGL,IAAGC,KAAII,EAAC,CAAC;AAC7D,QAAAtB,GAAE,KAAK,MAAMA,IAAG,KAAK,iBAAiBiB,IAAGC,KAAII,IAAGL,IAAGC,EAAC,CAAC;AACrD,eAAOlB;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB,KAAK;AAC3C,eAAO,KAAK,gBAAgB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAAA,MACxD;AAAA,IACF,CAAC,CAAC;AACF,WAAOY;AAAA,EACT,EAAE;AAEF,MAAI,YAAY;AAChB,MAAI,UAAU;AACd,MAAI,SAAS;AACb,MAAI,UAAU;AACd,MAAI,WAAW;AAEf,MAAI;AAAJ,MAAe;AACf,WAAS,OAAO,QAAQ,OAAO,OAAO,SAAS,SAAS,SAAS,SAAS;AACxE,WAAO,IAAI,MAAM;AAAA,MACf;AAAA,MACA,YAAYW,MAAK;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,WAAW;AAAA,MACpB,SAAS,WAAW;AAAA,IACtB,CAAC;AAAA,EACH;AACA,WAAS,aAAa;AACpB,QAAI,OAAO,CAAC;AACZ,SAAK,KAAK,MAAM,MAAM,SAAS;AAC/B,SAAK,OAAO,SAAUC,QAAO;AAC3B,aAAO,KAAKA,MAAK;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AACA,WAAS,cAAc,QAAQ,OAAO,OAAO,SAAS,SAAS,SAAS,SAAS;AAC/E,WAAO,WAAW,OAAO,QAAQ,OAAO,OAAO,SAAS,SAAS,SAAS,OAAO,CAAC;AAAA,EACpF;AACA,WAAS,gBAAgB,IAAI,UAAU,KAAK;AAC1C,UAAM,OAAO,GAAG;AAChB,QAAI,YAAY,IAAI,iBAAiB,QAAQ;AAC7C,aAASC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,UAAI,UAAUA,EAAC,MAAM,IAAI;AACvB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,GAAGC,IAAG;AACb,WAAOA,GAAE,cAAcA,GAAE;AAAA,EAC3B;AACA,WAAS,IAAIA,IAAG,QAAQ,KAAK,WAAW;AACtC,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,QACL,MAAM,CAAC,MAAM;AAAA,QACb,KAAK;AAAA,MACP;AAAA,IACF,OAAO;AACL,UAAI,OAAOA,GAAE,eAAeA,GAAE,aAAa,IAAIA,GAAE;AACjD,UAAI,OAAO,SAAS,eAAe,KAAK,SAAS;AAC/C,eAAO;AAAA,UACL;AAAA,UACA,KAAK,KAAK,QAAQ,GAAG;AAAA,QACvB;AAAA,MACF,OAAO;AACL,YAAI,MAAM;AAAA,UACR,MAAM,CAAC;AAAA,UACP,KAAK;AAAA,QACP,GACI,OAAO,SAASC,MAAK,IAAI;AAC3B,cAAI,KAAK,KAAK,EAAE;AAChB,cAAI,OAAO,KAAK;AACd,gBAAI,MAAM,IAAI,KAAK,SAAS;AAAA,UAC9B,WAAW,GAAG,cAAc,MAAM;AAChC,YAAAA,MAAK,GAAG,UAAU;AAAA,UACpB;AAAA,QACF;AACA,aAAK,MAAM;AACX,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,WAAS,GAAGC,IAAGC,KAAI;AACjB,QAAIJ,KAAI,GACJK;AACJ,SAAKL,KAAI,GAAGK,KAAIF,GAAE,QAAQH,KAAIK,IAAGL,MAAK;AACpC,UAAIG,GAAEH,EAAC,EAAE,CAAC,MAAMI,KAAI;AAClB;AAAA,MACF;AAAA,IACF;AACA,QAAIJ,KAAIG,GAAE,QAAQ;AAChB,MAAAA,GAAE,OAAOH,IAAG,CAAC;AAAA,IACf;AAAA,EACF;AACA,MAAIM,QAAO;AACX,MAAI,mBAAmB;AACvB,MAAI,mBAAmB;AACvB,WAAS,gBAAgB;AACvB,WAAO,oBAAoB,kBAAkB,SAAS,mBAAmB,UAAU,kBAAkB,QAAQ,UAAU,iBAAiB;AAAA,EAC1I;AACA,WAAS,gBAAgB;AACvB,WAAO,oBAAoB,iBAAiB,SAAS;AAAA,EACvD;AACA,MAAI,YAAY,YAAY,CAAC,GAAGhB,iBAAgB,WAAWb,kBAAiBI,iBAAgB,GAAGS,iBAAgB,WAAW,eAAeR,eAAc,GAAGQ,iBAAgB,WAAW,iBAAiBP,gBAAe,GAAG;AACxN,MAAI,OAAO;AACX,MAAI,SAAS;AACb,MAAI,SAAS;AACb,WAAS,QAAQkB,IAAG,QAAQ;AAC1B,QAAIA,MAAK;AAAM,aAAO;AAAA,QACpB,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AACA,QAAI,KAAK,QAAQA,EAAC,GACdM,KAAI,SAAS,IAAI,CAAC;AACtB,WAAO;AAAA,MACL,GAAGA,GAAE,SAAS,GAAG;AAAA,MACjB,GAAGA,GAAE,SAAS,GAAG;AAAA,IACnB;AAAA,EACF;AACA,WAAS,aAAaN,IAAG;AACvB,WAAO,QAAQA,IAAG,IAAI;AAAA,EACxB;AACA,WAAS,eAAeA,IAAG;AACzB,WAAO,QAAQA,IAAG,MAAM;AAAA,EAC1B;AACA,WAAS,eAAeA,IAAG;AACzB,WAAO,QAAQA,IAAG,MAAM;AAAA,EAC1B;AACA,WAAS,SAASO,UAAS,KAAK;AAC9B,WAAOA,SAAQ,OAAOA,SAAQ,KAAK,GAAG,IAAIA,SAAQ,GAAG;AAAA,EACvD;AACA,WAAS,QAAQP,IAAG;AAClB,WAAOA,GAAE,WAAWA,GAAE,QAAQ,SAAS,IAAIA,GAAE,UAAUA,GAAE,kBAAkBA,GAAE,eAAe,SAAS,IAAIA,GAAE,iBAAiBA,GAAE,iBAAiBA,GAAE,cAAc,SAAS,IAAIA,GAAE,gBAAgB,CAACA,EAAC;AAAA,EAClM;AACA,WAAS,WAAWA,IAAG;AACrB,WAAO,QAAQA,EAAC,EAAE;AAAA,EACpB;AA4BA,WAAS,MAAM,KAAK,MAAMQ,KAAI,YAAYC,UAAS;AACjD,WAAO,KAAK,MAAMD,GAAE;AACpB,eAAW,UAAUA,IAAG;AACxB,QAAI,IAAI,kBAAkB;AACxB,UAAI,iBAAiB,MAAMA,KAAI,OAAOC,QAAO;AAAA,IAC/C,WAAW,IAAI,aAAa;AAC1B,UAAIC,OAAM,OAAOF,IAAG;AACpB,UAAI,MAAME,IAAG,IAAIF;AACjB,UAAIE,IAAG,IAAI,WAAY;AACrB,YAAI,MAAMA,IAAG,KAAK,IAAI,MAAMA,IAAG,EAAE,OAAO,KAAK;AAAA,MAC/C;AACA,UAAI,YAAY,OAAO,MAAM,IAAIA,IAAG,CAAC;AAAA,IACvC;AAAA,EACF;AACA,WAAS,QAAQ,KAAK,MAAMF,KAAI;AAC9B,QAAI,QAAQ;AACZ,QAAIA,OAAM;AAAM;AAChB,YAAQ,KAAK,SAAU,KAAK;AAC1B,eAAS,KAAK,MAAMA,GAAE;AACtB,UAAIA,IAAG,WAAW,MAAM;AACtB,YAAI,IAAI,qBAAqB;AAC3B,cAAI,oBAAoB,MAAMA,KAAI,KAAK;AACvC,cAAI,cAAc,KAAK,SAAS,IAAI;AAAG,gBAAI,oBAAoB,SAAS,IAAI,GAAGA,KAAI,KAAK;AAAA,QAC1F,WAAW,MAAM,aAAa;AAC5B,cAAIE,OAAM,OAAOF,IAAG;AACpB,cAAIE,IAAG,KAAK,IAAI,YAAY,OAAO,MAAM,IAAIA,IAAG,CAAC;AACjD,cAAIA,IAAG,IAAI;AACX,cAAI,MAAMA,IAAG,IAAI;AAAA,QACnB;AAAA,MACF;AACA,UAAIF,IAAG,gBAAgB;AACrB,gBAAQ,KAAKA,IAAG,eAAe,CAAC,GAAGA,IAAG,eAAe,CAAC,CAAC;AAAA,MACzD;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAAS,QAAQ,KAAKA,KAAI;AACxB,QAAI,OAAO;AAAM;AACjB,QAAI,UAAU,OAAO,QAAQ,WAAW,SAAS,iBAAiB,GAAG,IAAI,IAAI,UAAU,OAAO,MAAM,CAAC,GAAG;AACxG,aAASG,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACvC,MAAAH,IAAG,QAAQG,EAAC,CAAC;AAAA,IACf;AAAA,EACF;AACA,WAAS,OAAO,KAAK,OAAOH,KAAI;AAC9B,QAAII,KAAIC;AACR,QAAI,OAAO,IAAI,QAAQ,CAAC;AACxB,QAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AACtC,QAAI,KAAK,KAAK,EAAED,EAAC,IAAIJ;AACrB,IAAAA,IAAG,UAAUI;AACb,WAAOA;AAAA,EACT;AACA,WAAS,SAAS,KAAK,OAAOJ,KAAI;AAChC,QAAI,QAAQ,IAAI,KAAK,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,EAAEA,IAAG,OAAO;AAChE,QAAIA,IAAG,WAAW;AAChB,eAASG,KAAI,GAAGA,KAAIH,IAAG,UAAU,QAAQG,MAAK;AAC5C,gBAAQ,KAAKH,IAAG,UAAUG,EAAC,EAAE,CAAC,GAAGH,IAAG,UAAUG,EAAC,EAAE,CAAC,CAAC;AAAA,MACrD;AACA,MAAAH,IAAG,UAAU,SAAS;AAAA,IACxB;AACA,IAAAA,IAAG,eAAeA,IAAG,YAAY;AAAA,EACnC;AACA,MAAI,qBAAqB;AACzB,WAAS,kBAAkB,UAAU,KAAKA,KAAI,KAAK;AACjD,QAAI,YAAY,MAAM;AACpB,aAAOA;AAAA,IACT,OAAO;AACL,UAAIM,KAAI,SAAS,MAAM,GAAG,GACtB,KAAK,CAAC,GACN,KAAK,CAAC;AACV,cAAQA,IAAG,SAAU,KAAK;AACxB,YAAIC,KAAI,IAAI,MAAM,kBAAkB;AACpC,YAAIA,MAAK,MAAM;AACb,aAAG,KAAKA,GAAE,CAAC,CAAC;AAAA,QACd,OAAO;AACL,aAAG,KAAK,GAAG;AAAA,QACb;AAAA,MACF,CAAC;AACD,UAAI,GAAG,SAAS,KAAK,GAAG,WAAW,GAAG;AACpC,WAAG,KAAK,QAAQ;AAAA,MAClB;AACA,UAAI,MAAM,SAASC,KAAIC,IAAG;AACxB,QAAAD,KAAI,UAAUR,IAAG;AACjB,YAAIU,KAAI,GAAGD,EAAC;AACZ,YAAI,OAAO;AACX,YAAI,SAASC;AACb,YAAI,WAAW,IAAID,IAAGC,IAAG,KAAK,YAAY,IAAI;AAC9C,YAAI,SAAS,OAAO,IAAI;AACtB,mBAASC,KAAI,GAAG,CAAC,QAAQA,KAAI,SAAS,KAAKA,MAAK;AAC9C,qBAAS,SAAS,KAAKA,EAAC;AACxB,qBAASR,KAAI,GAAGA,KAAI,GAAG,QAAQA,MAAK;AAClC,kBAAI,gBAAgB,QAAQ,GAAGA,EAAC,GAAG,GAAG,GAAG;AACvC;AAAA,cACF;AAAA,YACF;AACA,qBAAS,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,QAAQ,MAAM;AAC9C,kBAAI,gBAAgB,QAAQ,GAAG,EAAE,GAAG,GAAG,GAAG;AACxC,gBAAAH,IAAG,MAAM,QAAQ,CAACS,IAAG,MAAM,CAAC;AAC5B,uBAAO;AACP;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,4BAAsBT,KAAI,KAAK,GAAG;AAClC,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,sBAAsBA,KAAI,KAAK,OAAO;AAC7C,IAAAA,IAAG,YAAYA,IAAG,aAAa,CAAC;AAChC,IAAAA,IAAG,UAAU,KAAK,CAAC,KAAK,KAAK,CAAC;AAAA,EAChC;AACA,MAAI,iBAAiB,SAASY,gBAAe,KAAK,KAAKZ,KAAI,UAAUC,UAAS;AAC5E,QAAI,cAAc,KAAK,SAAS,GAAG,GAAG;AACpC,UAAI,MAAM,kBAAkB,UAAU,KAAKD,KAAI,SAAS,GAAG,CAAC;AAC5D,YAAM,KAAK,SAAS,GAAG,GAAG,KAAKA,KAAIC,QAAO;AAAA,IAC5C;AACA,QAAI,QAAQ,eAAe,IAAI,aAAa,kBAAkB,KAAK,MAAM;AACvE,UAAI,aAAa,oBAAoB,GAAG;AAAA,IAC1C;AACA,UAAM,KAAK,KAAK,kBAAkB,UAAU,KAAKD,KAAI,GAAG,GAAGA,KAAIC,QAAO;AAAA,EACxE;AACA,MAAI,gBAAgB,gBAAgB,CAAC,GAAGY,iBAAgB,eAAe,WAAW;AAAA,IAChF,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC,GAAGA,iBAAgB,eAAe,eAAe;AAAA,IAChD,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC,GAAGA,iBAAgB,eAAe,mBAAmB;AAAA,IACpD,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC,GAAG;AACJ,WAAS,UAAU,MAAM,KAAK,KAAK,QAAQ;AACzC,aAASV,MAAK,IAAI,QAAQ,IAAI,GAAG;AAC/B,UAAI,IAAI,QAAQ,IAAI,EAAE,eAAeA,EAAC,GAAG;AACvC,YAAI,QAAQ,IAAI,EAAEA,EAAC,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,WAAY;AAC3B,aAASW,cAAa;AACpB,MAAAC,iBAAgB,MAAMD,WAAU;AAAA,IAClC;AACA,IAAAE,cAAaF,aAAY,MAAM,CAAC;AAAA,MAC9B,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,gBAAgB,mBAAmB;AAC1D,eAAO,SAAU,KAAK,KAAKd,KAAI,UAAU;AACvC,cAAI,OAAO,qBAAqB,cAAc;AAAG,2BAAe,KAAK,KAAKA,KAAI,QAAQ;AAAA,eAAO;AAC3F,gBAAI,IAAI,kBAAkB,MAAM;AAC9B,kBAAI,KAAK,IAAI,iBAAiB;AAAA,gBAC5B,KAAK,CAAC;AAAA,gBACN,QAAQ,CAAC;AAAA,gBACT,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,eAAe,CAAC;AAAA,cAClB;AACA,kBAAI,OAAO,SAASiB,MAAKR,IAAG;AAC1B,oBAAI,SAAS,GAAGA,EAAC,GACb,WAAW,IAAIA,IAAG,QAAQ,KAAK,YAAY,IAAI,GAC/C,WAAW;AACf,yBAASE,KAAI,GAAGA,KAAI,SAAS,KAAKA,MAAK;AACrC,sBAAI;AAAU;AACd,2BAAS,SAAS,KAAKA,EAAC;AACxB,2BAASR,KAAI,GAAGA,KAAI,GAAG,cAAc,QAAQA,MAAK;AAChD,wBAAI,GAAG,cAAcA,EAAC,KAAK,QAAQ,gBAAgB,QAAQ,GAAG,cAAcA,EAAC,GAAG,GAAG,GAAG;AACpF,yBAAG,OAAO;AACV,iCAAW,aAAa,cAAc;AACtC,iCAAW,aAAa,iBAAiB;AACzC,iCAAW;AACX;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,GACI,KAAK,SAASe,IAAGT,IAAG;AACtB,oBAAI,GAAG,MAAM;AACX,sBAAI,SAAS,GAAGA,EAAC,GACb,eACA;AACJ,qBAAG;AACH,sBAAI,KAAK,WAAWA,EAAC;AACrB,2BAAS,WAAW,cAAc;AAChC,wBAAI,aAAa,eAAe,OAAO,GAAG;AACxC,0BAAIE,KAAI,aAAa,OAAO;AAC5B,0BAAIA,GAAE,YAAY,OAAOA,GAAE,SAAS,KAAKA,GAAE,SAAS,GAAG,OAAO;AAC5D,iCAASR,KAAI,GAAGA,KAAI,GAAG,OAAO,EAAE,QAAQA,MAAK;AAC3C,qCAAW,IAAIM,IAAG,QAAQ,KAAK,GAAG,OAAO,EAAEN,EAAC,EAAE,CAAC,KAAK,IAAI;AACxD,mCAAS,QAAQ,GAAG,QAAQ,SAAS,KAAK,SAAS;AACjD,4CAAgB,SAAS,KAAK,KAAK;AACnC,gCAAI,GAAG,OAAO,EAAEA,EAAC,EAAE,CAAC,KAAK,QAAQ,gBAAgB,eAAe,GAAG,OAAO,EAAEA,EAAC,EAAE,CAAC,GAAG,GAAG,GAAG;AACvF,iCAAG,OAAO,EAAEA,EAAC,EAAE,CAAC,EAAE,MAAM,eAAe,CAACM,IAAG,aAAa,CAAC;AACzD;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,GACI,cAAc,SAASU,eAAc;AACvC,mBAAG,OAAO;AAAA,cACZ,GACI,cAAc,SAASC,eAAc;AACvC,mBAAG,OAAO;AAAA,cACZ;AACA,kBAAI,eAAe,cAAc;AACjC,kBAAI,eAAe,YAAY;AAC/B,6BAAe,KAAKC,kBAAiB,IAAI;AACzC,6BAAe,KAAK,eAAe,EAAE;AAAA,YACvC;AACA,gBAAI,eAAe,cAAc,KAAK,QAAQ;AAC9C,gBAAI,eAAe,GAAG,EAAE,KAAK,CAACrB,KAAI,QAAQ,CAAC;AAC3C,YAAAA,IAAG,cAAc,WAAY;AAC3B,kBAAI,IAAI,kBAAkB,MAAM;AAC9B,mCAAmB,IAAI,eAAe,eAAe,SAAU,IAAI;AACjE,yBAAO,OAAO;AAAA,gBAChB,CAAC;AACD,mBAAG,IAAI,eAAe,GAAG,GAAGA,GAAE;AAC9B,oBAAI,IAAI,eAAe,cAAc,WAAW,GAAG;AACjD,0BAAQ,KAAKqB,kBAAiB,IAAI,eAAe,WAAW;AAC5D,0BAAQ,KAAK,eAAe,IAAI,eAAe,SAAS;AACxD,yBAAO,IAAI;AAAA,gBACb;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOP;AAAA,EACT,EAAE;AACF,MAAI,wBAAwB,WAAY;AACtC,aAASQ,yBAAwB;AAC/B,MAAAP,iBAAgB,MAAMO,sBAAqB;AAAA,IAC7C;AACA,IAAAN,cAAaM,wBAAuB,MAAM,CAAC;AAAA,MACzC,KAAK;AAAA,MACL,OAAO,SAAS,WAAW;AACzB,YAAI,iBAAiB,CAAC;AACtB,eAAO,SAAU,KAAK,KAAKtB,KAAI,UAAU;AACvC,cAAI,CAAC,IAAI,SAAS;AAChB,gBAAI,UAAU;AAAA,cACZ,MAAM;AAAA,cACN,YAAY,CAAC;AAAA,cACb,WAAW,CAAC;AAAA,YACd;AACA,gBAAI,OAAO,SAASuB,MAAKd,IAAG;AAC1B,kBAAIC,KAAI,GAAGD,EAAC;AACZ,kBAAI,YAAY,QAAQC,MAAK,OAAO,CAAC,IAAI,QAAQ,QAAQ,gBAAgBA,IAAG,UAAU,GAAG,MAAMA,GAAE,WAAW,QAAQ,CAACA,GAAE,QAAQ,OAAO;AACpI,0BAAUc,mBAAkBf,IAAG,KAAKC,EAAC;AACrC,gBAAAA,GAAE,UAAUA,GAAE,WAAW,CAAC;AAC1B,gBAAAA,GAAE,QAAQ,OAAO;AACjB,+BAAe,KAAKA,EAAC;AAAA,cACvB;AAAA,YACF,GACI,MAAM,SAASe,KAAIhB,IAAG;AACxB,kBAAIC,KAAI,GAAGD,EAAC;AACZ,uBAASN,KAAI,GAAGA,KAAI,eAAe,QAAQA,MAAK;AAC9C,oBAAIO,MAAK,eAAeP,EAAC,KAAK,CAAC,gBAAgBM,GAAE,iBAAiBA,GAAE,WAAW,KAAKC,EAAC,GAAG;AACtF,kBAAAA,GAAE,QAAQ,OAAO;AACjB,iCAAe,OAAOP,IAAG,CAAC;AAC1B,4BAAU,iBAAiBM,IAAG,KAAKC,EAAC;AAAA,gBACtC;AAAA,cACF;AAAA,YACF;AACA,kBAAM,KAAKgB,kBAAiB,kBAAkB,UAAU,KAAK,MAAMA,gBAAe,GAAG,IAAI;AACzF,kBAAM,KAAKC,iBAAgB,kBAAkB,UAAU,KAAK,KAAKA,eAAc,GAAG,GAAG;AAAA,UACvF;AACA,UAAA3B,IAAG,cAAc,WAAY;AAC3B,mBAAO,IAAI,QAAQ,GAAG,EAAEA,IAAG,OAAO;AAAA,UACpC;AACA,iBAAO,KAAK,KAAKA,GAAE;AACnB,cAAI,QAAQ,GAAG,EAAEA,IAAG,OAAO,IAAIA;AAAA,QACjC;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOsB;AAAA,EACT,EAAE;AACF,MAAI,eAAe,WAAY;AAC7B,aAASM,cAAaC,SAAQ;AAC5B,MAAAd,iBAAgB,MAAMa,aAAY;AAClC,MAAAf,iBAAgB,MAAM,kBAAkB,MAAM;AAC9C,MAAAA,iBAAgB,MAAM,qBAAqB,MAAM;AACjD,MAAAA,iBAAgB,MAAM,cAAc,MAAM;AAC1C,MAAAA,iBAAgB,MAAM,yBAAyB,MAAM;AACrD,MAAAgB,UAASA,WAAU,CAAC;AACpB,WAAK,iBAAiBA,QAAO,kBAAkB;AAC/C,WAAK,oBAAoBA,QAAO,qBAAqB;AACrD,WAAK,wBAAwB,sBAAsB,SAAS;AAC5D,WAAK,aAAa,WAAW,SAAS,KAAK,gBAAgB,KAAK,iBAAiB;AAAA,IACnF;AACA,IAAAb,cAAaY,eAAc,CAAC;AAAA,MAC1B,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,IAAI,KAAK5B,KAAI,UAAUC,UAAS;AACtD,YAAID,OAAM;AAAM;AAChB,YAAI,MAAM;AACV,YAAI,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,mBAAmB;AAC3E,eAAK,WAAW,KAAK,KAAKA,KAAI,UAAUC,QAAO;AAAA,QACjD,WAAW,QAAQuB,qBAAoB,OAAO;AAAiB,eAAK,sBAAsB,KAAK,KAAKxB,KAAI,UAAUC,QAAO;AAAA,aAAO;AAC9H,yBAAe,KAAK,KAAKD,KAAI,UAAUC,QAAO;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS6B,IAAG,IAAI,OAAO,UAAU9B,KAAIC,UAAS;AACnD,YAAI,KAAKD,OAAM,OAAO,OAAO,UACzB,KAAKA,OAAM,OAAO,WAAWA;AACjC,aAAK,QAAQ,IAAI,OAAO,IAAI,IAAIC,QAAO;AACvC,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS8B,KAAI,IAAI,OAAO/B,KAAI;AACjC,gBAAQ,IAAI,OAAOA,GAAE;AACrB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,IAAI,OAAO,eAAe,SAAS,QAAQ;AACjE,YAAI,kBAAkB,cAAc,MAAM,OAAO,eAAe,eAAe,iBAAiB,QAAQ,cAAc,gBAAgB;AACtI,YAAI,cAAc,cAAc,KAAK,CAAC,cAAc,KAAK,SAAS,KAAK,IAAI,SAAS,KAAK,IAAI,OACzF,qBAAqB,EAAE,cAAc,KAAK,CAAC,cAAc,KAAK,SAAS,KAAK;AAChF,YAAI,KAAK,aAAa,aAAa,GAC/B,KAAK,eAAe,aAAa,GACjC,KAAK,eAAe,aAAa;AACrC,gBAAQ,IAAI,SAAU,KAAK;AACzB,cAAI;AACJ,0BAAgB,iBAAiB;AAAA,YAC/B,SAAS,GAAG;AAAA,YACZ,SAAS,GAAG;AAAA,YACZ,SAAS,GAAG;AAAA,YACZ,SAAS,GAAG;AAAA,UACd;AACA,cAAI,YAAY,SAASgC,WAAU,MAAM;AACvC,gBAAI,SAAS;AACX,mBAAK,UAAU;AAAA,YACjB;AAAA,UACF;AACA,cAAI,kBAAkB;AAAA,YACpB,cAAc,SAAS,WAAWC,MAAK;AACrC,kBAAI,YAAY,cAAc,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACjE,OAAOA,KAAI,kBAAkBA,KAAI;AACrC,mBAAK,aAAa,MAAM,MAAM,QAAQ,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,OAAO,WAAW,WAAW,WAAW,GAAG,CAAC;AAAA,YACvI;AAAA,YACA,eAAe,SAAS,YAAYA,MAAK;AACvC,cAAAA,KAAI,eAAe,aAAa,MAAM,MAAM,QAAQ,UAAU,OAAO,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,OAAO,GAAG,GAAG;AAAA,YAC7I;AAAA,UACF;AACA,cAAI,MAAM,CAAC,sBAAsB,CAAC,mBAAmB,cAAc,KAAK,SAAS,KAAK,GAClF,UAAU,MAAM,eAAe;AACnC,gBAAM,SAAS,YAAY,OAAO;AAClC,0BAAgB,OAAO,EAAE,GAAG;AAC5B,oBAAU,GAAG;AACb,cAAI,cAAc,GAAG;AAAA,QACvB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOL;AAAA,EACT,EAAE;AAQF,MAAI,qBAAqB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAClE,MAAI,4BAA4B,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACzE,MAAI,SAAS,IAAI,KAAK;AAatB,WAAS,SAAS,IAAIM,KAAI;AACxB,QAAIA,IAAG,MAAM,GAAG;AAAG,aAAOA,IAAG,IAAI,GAAG,IAAI,WAAW;AAAA,aAAmBA,IAAG,MAAM,GAAG;AAAG,aAAOA,IAAG,IAAI,GAAG,IAAI,IAAI;AAAA;AAAQ,cAAQA,IAAG,IAAI,GAAG,MAAMA,IAAG,IAAI,GAAG;AAAA,EAC1J;AACA,WAAS,OAAO,IAAIA,KAAI;AACtB,WAAO,KAAK,SAAS,IAAIA,GAAE;AAAA,EAC7B;AACA,WAAS,WAAW,IAAIA,KAAI;AAC1B,WAAO,KAAK,KAAK,KAAK,IAAIA,IAAG,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,IAAIA,IAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AAAA,EACtE;AACA,WAAS,SAAS,IAAIA,KAAI;AACxB,QAAIA,IAAG,IAAI,GAAG,GAAG;AACf,aAAOA,IAAG,IAAI,GAAG,IAAI,IAAI;AAAA,IAC3B,WAAWA,IAAG,KAAK,GAAG,GAAG;AACvB,aAAOA,IAAG,IAAI,GAAG,IAAI,IAAI;AAAA,IAC3B,OAAO;AACL,aAAOA,IAAG,IAAI,GAAG,IAAI,IAAI;AAAA,IAC3B;AAAA,EACF;AACA,WAAS,MAAM,IAAIA,KAAI;AACrB,QAAIC,KAAI,SAAS,IAAID,GAAE,GACnBE,KAAI,KAAK,KAAKD,EAAC,GACfE,KAAI,SAAS,IAAIH,GAAE;AACvB,QAAIG,MAAK,KAAKA,MAAK;AAAG,MAAAD,MAAK,KAAK;AAChC,QAAIA,KAAI;AAAG,MAAAA,MAAK,IAAI,KAAK;AACzB,WAAOA;AAAA,EACT;AACA,WAAS,WAAW,IAAIE,KAAI;AAC1B,QAAI,KAAK,GAAG,GACRC,MAAK,GAAG,IAAI,GAAG,GACf,KAAK,GAAG,GACRC,MAAK,GAAG,IAAI,GAAG,GACf,KAAKF,IAAG,GACRG,MAAKH,IAAG,IAAIA,IAAG,GACf,KAAKA,IAAG,GACRI,MAAKJ,IAAG,IAAIA,IAAG;AACnB,WAAO,MAAM,MAAM,MAAMC,OAAM,MAAM,MAAM,MAAMC,OAAM,MAAMC,OAAMA,OAAMF,OAAM,MAAM,MAAM,MAAMC,OAAM,MAAM,MAAM,MAAMD,OAAM,MAAMG,OAAMA,OAAMF,OAAM,MAAMC,OAAM,MAAMF,OAAM,MAAMG,OAAMA,OAAMF,OAAM,MAAM,MAAM,MAAMC,OAAM,MAAM,MAAM,MAAMC,OAAM,MAAMH,OAAMA,OAAME,OAAM,MAAM,MAAM,MAAMC,OAAM,MAAM,MAAM,MAAMD,OAAM,MAAMD,OAAMA,OAAME,OAAM,MAAMH,OAAM,MAAME,OAAM,MAAMD,OAAMA,OAAME;AAAA,EACnY;AAyFA,WAAS,YAAY,WAAW,SAAS,UAAU;AACjD,QAAIC,KAAI,SAAS,WAAW,OAAO,GAC/BC,KAAI,SAAS,WAAW,OAAO,GAC/B,oBAAoB,WAAW,IAAI,mBAAmBA,EAAC,IAAI,0BAA0BA,EAAC,GACtFC,SAAQ,KAAK,KAAKF,EAAC,GACnBG,KAAI,KAAK,IAAI,WAAW,KAAK,IAAID,MAAK,CAAC,IAAI,kBAAkB,CAAC,GAC9DE,KAAI,KAAK,IAAI,WAAW,KAAK,IAAIF,MAAK,CAAC,IAAI,kBAAkB,CAAC;AAClE,WAAO;AAAA,MACL,GAAG,UAAU,IAAIE;AAAA,MACjB,GAAG,UAAU,IAAID;AAAA,IACnB;AAAA,EACF;AACA,WAAS,oBAAoB,WAAW,SAASE,SAAQ;AACvD,QAAIL,KAAI,SAAS,WAAW,OAAO,GAC/B,SAAS,KAAK,KAAK,KAAKA,EAAC,GACzBG,KAAIE,UAAS,IAAI,KAAK,IAAI,MAAM,GAChCD,KAAIC,UAAS,IAAI,KAAK,IAAI,MAAM;AACpC,WAAO,CAAC;AAAA,MACN,GAAG,QAAQ,IAAID;AAAA,MACf,GAAG,QAAQ,IAAID;AAAA,IACjB,GAAG;AAAA,MACD,GAAG,QAAQ,IAAIC;AAAA,MACf,GAAG,QAAQ,IAAID;AAAA,IACjB,CAAC;AAAA,EACH;AACA,WAAS,WAAW,KAAK,MAAM,YAAY,YAAY;AACrD,iBAAa,cAAc,OAAO,KAAK,cAAc,OAAO,KAAK,IAAI,IAAI,KAAK,aAAa;AAC3F,iBAAa,cAAc,OAAO,KAAK,cAAc,OAAO,KAAK,IAAI,IAAI,KAAK,aAAa;AAC3F,QAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,GAC/B,OAAO,KAAK,IAAI,KAChB,OAAO,OAAO,KAAK,GACnBC,KAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,aAAa,OAAO,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,aAAa,OAAO,IAAI;AACxG,QAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,GAC/B,OAAO,KAAK,IAAI,KAChB,OAAO,OAAO,KAAK,GACnBD,KAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,aAAa,OAAO,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,aAAa,OAAO,IAAI;AACxG,WAAO;AAAA,MACL,GAAGC;AAAA,MACH,GAAGD;AAAA,IACL;AAAA,EACF;AAEA,WAAS,oBAAoB,eAAe,cAAc,UAAU;AAClE,QAAI,kBAAkB,cAAc,UAAU,aAAa,GAAG;AAC5D,aAAO;AAAA,IACT,OAAO;AACL,UAAI,gBAAgB,aAAa;AACjC,aAAO,iBAAiB,QAAQ,kBAAkB,eAAe;AAC/D,YAAI,kBAAkB,eAAe,UAAU,aAAa,GAAG;AAC7D,iBAAO;AAAA,QACT,OAAO;AACL,0BAAgB,cAAc;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS,UAAU,KAAK;AACtB,QAAI,OAAO,QAAQ,YAAY;AAC7B,UAAI,eAAeG,MAAK;AACxB,aAAO,IAAI;AAAA,IACb,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,eAAe,UAAU,KAAK,KAAK;AAC1C,QAAIC,KAAI,IAAI,YACRN,KAAI,SAAS,QAAQM,EAAC,GACtB,KAAK,SAAS,QAAQ,GAAG,GACzB,WAAW,IAAI,GACf,YAAY,WAAW,GAAG,GAC1B,UAAU,IAAI,GACd,aAAa,UAAU,GAAG;AAC9B,WAAO,YAAY,KAAK,WAAWN,GAAE,KAAK,aAAa,KAAK,UAAUA,GAAE;AAAA,EAC1E;AACA,WAAS,qBAAqB,oBAAoB,eAAe,cAAc;AAC7E,QAAI,KAAK;AACT,QAAI,cAAc,cAAc,aAAa,qBAAqB,GAC9D,SAAS,eAAe,OAAO,2BAA2B,cAAc,QAAQ;AACpF,aAASO,KAAI,GAAGA,KAAI,mBAAmB,QAAQA,MAAK;AAClD,WAAK,oBAAoB,eAAe,cAAc,SAAS,mBAAmBA,EAAC,EAAE,QAAQ;AAC7F,UAAI,MAAM,MAAM;AACd,YAAI,mBAAmBA,EAAC,EAAE,QAAQ;AAChC,cAAIC,WAAU,kBAAkB,cAAc,mBAAmBD,EAAC,EAAE,QAAQ,EAAE,GAC1E,UAAU,mBAAmBA,EAAC,EAAE,kBAAkB;AACtD,cAAI,WAAW,CAACC,YAAWA,UAAS;AAClC,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO,CAAC,mBAAmBD,EAAC,GAAG,EAAE;AAAA,MACnC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,MAAI,cAAc;AAClB,MAAI,qBAAqB;AACzB,MAAI,aAAa;AACjB,MAAI,aAAa;AACjB,MAAI,aAAa;AACjB,MAAI,YAAY;AAChB,MAAI,aAAa;AACjB,MAAI,sBAAsB;AAC1B,MAAI,oBAAoB;AACxB,MAAI,iBAAiB;AACrB,MAAI,iBAAiB;AACrB,MAAI,OAAO,SAASE,QAAO;AACzB,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,SAASC,SAAQ;AAC3B,WAAO;AAAA,EACT;AACA,MAAI,WAAW;AAAA,IACb,oBAAoB;AAAA,IACpB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,EACd;AACA,MAAI;AACJ,GAAC,SAAUC,wBAAuB;AAChC,IAAAA,uBAAsB,kBAAkB,IAAI;AAC5C,IAAAA,uBAAsB,WAAW,IAAI;AACrC,IAAAA,uBAAsB,cAAc,IAAI;AAAA,EAC1C,GAAG,0BAA0B,wBAAwB,CAAC,EAAE;AACxD,MAAI,oBAAoB,oBAAI,IAAI;AAChC,oBAAkB,IAAI,sBAAsB,kBAAkB,SAAU,IAAIL,IAAG;AAC7E,OAAG,MAAM,OAAO,GAAG,OAAOA,GAAE,GAAG,IAAI;AACnC,OAAG,MAAM,MAAM,GAAG,OAAOA,GAAE,GAAG,IAAI;AAAA,EACpC,CAAC;AACD,oBAAkB,IAAI,sBAAsB,cAAc,SAAU,IAAIA,IAAG;AACzE,OAAG,aAAa,KAAK,GAAG,OAAOA,GAAE,CAAC,CAAC;AACnC,OAAG,aAAa,KAAK,GAAG,OAAOA,GAAE,CAAC,CAAC;AAAA,EACrC,CAAC;AACD,MAAI,oBAAoB,oBAAI,IAAI;AAChC,oBAAkB,IAAI,sBAAsB,kBAAkB,SAAU,IAAI;AAC1E,WAAO;AAAA,MACL,GAAG,GAAG;AAAA,MACN,GAAG,GAAG;AAAA,IACR;AAAA,EACF,CAAC;AACD,oBAAkB,IAAI,sBAAsB,cAAc,SAAU,IAAI;AACtE,WAAO;AAAA,MACL,GAAG,WAAW,GAAG,aAAa,GAAG,CAAC;AAAA,MAClC,GAAG,WAAW,GAAG,aAAa,GAAG,CAAC;AAAA,IACpC;AAAA,EACF,CAAC;AACD,MAAI,cAAc,oBAAI,IAAI;AAC1B,cAAY,IAAI,sBAAsB,kBAAkB,SAAU,IAAIN,IAAG;AACvE,OAAG,MAAM,QAAQ,GAAG,OAAOA,GAAE,GAAG,IAAI;AACpC,OAAG,MAAM,SAAS,GAAG,OAAOA,GAAE,GAAG,IAAI;AAAA,EACvC,CAAC;AACD,cAAY,IAAI,sBAAsB,cAAc,SAAU,IAAIA,IAAG;AACnE,OAAG,aAAa,SAAS,GAAG,OAAOA,GAAE,CAAC,CAAC;AACvC,OAAG,aAAa,UAAU,GAAG,OAAOA,GAAE,CAAC,CAAC;AAAA,EAC1C,CAAC;AACD,MAAI,cAAc,oBAAI,IAAI;AAC1B,cAAY,IAAI,sBAAsB,kBAAkB,SAAU,IAAI;AACpE,WAAO;AAAA,MACL,GAAG,GAAG;AAAA,MACN,GAAG,GAAG;AAAA,IACR;AAAA,EACF,CAAC;AACD,cAAY,IAAI,sBAAsB,cAAc,SAAU,IAAI;AAChE,WAAO;AAAA,MACL,GAAG,WAAW,GAAG,aAAa,OAAO,CAAC;AAAA,MACtC,GAAG,WAAW,GAAG,aAAa,QAAQ,CAAC;AAAA,IACzC;AAAA,EACF,CAAC;AACD,MAAI,UAAU,CAAC,YAAY,aAAa,YAAY,YAAY,YAAY,WAAW,kBAAkB;AACzG,MAAI,WAAW,SAASY,YAAW;AAAA,EAAC;AACpC,MAAI,QAAQ,SAASC,OAAM,KAAKC,KAAI;AAClC,QAAI,OAAO;AAAM;AACjB,UAAM,CAAC,SAAS,GAAG,KAAK,IAAI,WAAW,QAAQ,IAAI,UAAU,OAAO,MAAM,CAAC,GAAG;AAC9E,aAASP,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACnC,MAAAO,IAAG,MAAM,IAAIP,EAAC,GAAG,CAAC,IAAIA,EAAC,CAAC,CAAC;AAAA,IAC3B;AAAA,EACF;AACA,MAAI,eAAe,SAASQ,cAAaC,IAAG,IAAI,UAAU;AACxD,QAAIC,KAAID,GAAE,cAAcA,GAAE;AAC1B,WAAO,CAAC,kBAAkBC,IAAG,SAAS,uBAAuB,GAAG,EAAE;AAAA,EACpE;AACA,MAAIC,QAAO,WAAY;AACrB,aAASA,MAAK,IAAI,SAAS;AACzB,MAAAC,iBAAgB,MAAMD,KAAI;AAC1B,WAAK,KAAK;AACV,WAAK,UAAU;AACf,MAAAE,iBAAgB,MAAM,UAAU,MAAM;AACtC,MAAAA,iBAAgB,MAAM,QAAQf,MAAK,CAAC;AACpC,MAAAe,iBAAgB,MAAM,WAAW,IAAI;AACrC,MAAAA,iBAAgB,MAAM,UAAU,CAAC,CAAC;AAClC,MAAAA,iBAAgB,MAAM,gBAAgB,MAAM;AAC5C,WAAK,eAAe,QAAQ;AAAA,IAC9B;AACA,IAAAC,cAAaH,OAAM,CAAC;AAAA,MAClB,KAAK;AAAA,MACL,OAAO,SAAS,WAAWF,IAAG;AAC5B,aAAK,UAAUA;AAAA,MACjB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB;AAC9B,aAAK,UAAU,CAAC,KAAK;AAAA,MACvB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,QAAQ;AAC/B,YAAIjB,KAAI,CAAC;AACT,cAAM,KAAK,QAAQ,SAAUC,IAAG;AAC9B,UAAAD,GAAEC,EAAC,IAAI;AAAA,QACT,CAAC;AACD,cAAM,SAAS,OAAO,MAAM,KAAK,IAAI,CAAC,GAAG,SAAUA,IAAG;AACpD,UAAAD,GAAEC,EAAC,IAAI;AAAA,QACT,CAAC;AACD,aAAK,OAAO,SAAS;AACrB,iBAASO,MAAKR,IAAG;AACf,eAAK,OAAO,KAAKQ,EAAC;AAAA,QACpB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,QAAQ;AAClC,YAAIR,KAAI,CAAC;AACT,cAAM,KAAK,QAAQ,SAAUC,IAAG;AAC9B,UAAAD,GAAEC,EAAC,IAAI;AAAA,QACT,CAAC;AACD,cAAM,SAAS,OAAO,MAAM,KAAK,IAAI,CAAC,GAAG,SAAUA,IAAG;AACpD,iBAAOD,GAAEC,EAAC;AAAA,QACZ,CAAC;AACD,aAAK,OAAO,SAAS;AACrB,iBAASO,MAAKR,IAAG;AACf,eAAK,OAAO,KAAKQ,EAAC;AAAA,QACpB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,QAAQ;AAClC,YAAIR,KAAI,CAAC;AACT,cAAM,KAAK,QAAQ,SAAUC,IAAG;AAC9B,UAAAD,GAAEC,EAAC,IAAI;AAAA,QACT,CAAC;AACD,cAAM,SAAS,OAAO,MAAM,KAAK,IAAI,CAAC,GAAG,SAAUA,IAAG;AACpD,cAAID,GAAEC,EAAC;AAAG,mBAAOD,GAAEC,EAAC;AAAA;AAAO,YAAAD,GAAEC,EAAC,IAAI;AAAA,QACpC,CAAC;AACD,aAAK,OAAO,SAAS;AACrB,iBAASO,MAAKR,IAAG;AACf,eAAK,OAAO,KAAKQ,EAAC;AAAA,QACpB;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOW;AAAA,EACT,EAAE;AACF,WAAS,yBAAyB,IAAI;AACpC,WAAO;AAAA,MACL,GAAG,GAAG,WAAW,cAAc,GAAG,WAAW;AAAA,MAC7C,GAAG,GAAG,WAAW,eAAe,GAAG,WAAW;AAAA,IAChD;AAAA,EACF;AACA,MAAI;AACJ,GAAC,SAAUI,kBAAiB;AAC1B,IAAAA,iBAAgB,aAAa,IAAI;AACjC,IAAAA,iBAAgB,QAAQ,IAAI;AAC5B,IAAAA,iBAAgB,gBAAgB,IAAI;AAAA,EACtC,GAAG,oBAAoB,kBAAkB,CAAC,EAAE;AAC5C,MAAI,OAAO,SAAU,OAAO;AAC1B,IAAAC,WAAUC,OAAM,KAAK;AACrB,QAAI,SAASC,cAAaD,KAAI;AAC9B,aAASA,MAAK,IAAIE,SAAQ,SAAS;AACjC,UAAI;AACJ,MAAAP,iBAAgB,MAAMK,KAAI;AAC1B,cAAQ,OAAO,KAAK,MAAM,IAAI,OAAO;AACrC,MAAAJ,iBAAgBO,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,eAAe,MAAM;AACpE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,cAAc;AAAA,QAC3D,GAAG;AAAA,QACH,GAAG;AAAA,MACL,CAAC;AACD,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,qBAAqB;AAAA,QAClE,GAAG;AAAA,QACH,GAAG;AAAA,MACL,CAAC;AACD,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,kBAAkB;AAAA,QAC/D,GAAG;AAAA,QACH,GAAG;AAAA,MACL,CAAC;AACD,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,0BAA0B,MAAM;AAC/E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,wBAAwB,MAAM;AAC7E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,kBAAkB,KAAK;AACtE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,yBAAyB,MAAM;AAC9E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,uBAAuB,CAAC,CAAC;AACxE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,0BAA0B,MAAM;AAC/E,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,eAAe,MAAM;AACpE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,YAAY,CAAC,CAAC;AAC7D,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,aAAa;AAAA,QAC1D,SAAS,CAAC;AAAA,QACV,QAAQ,CAAC;AAAA,QACT,QAAQ,CAAC;AAAA,QACT,QAAQ,CAAC;AAAA,QACT,OAAO,CAAC;AAAA,QACR,eAAe,CAAC;AAAA,QAChB,UAAU,CAAC;AAAA,MACb,CAAC;AACD,YAAM,SAAS,MAAM,QAAQ,IAAI;AACjC,MAAAC,UAAS,MAAM,IAAI,MAAM,MAAM;AAC/B,YAAM,eAAe,MAAM,cAAc,KAAKD,wBAAuB,KAAK,CAAC;AAC3E,YAAM,aAAa,MAAM,YAAY,KAAKA,wBAAuB,KAAK,CAAC;AACvE,YAAM,eAAe,MAAM,cAAc,KAAKA,wBAAuB,KAAK,CAAC;AAC3E,YAAM,qBAAqBD,QAAO,uBAAuB;AACzD,YAAM,oBAAoBA,QAAO,sBAAsB;AACvD,YAAM,UAAU,MAAM;AACtB,YAAM,QAAQA,QAAO,UAAU;AAC/B,YAAM,SAASA,QAAO,WAAW;AACjC,YAAM,cAAcA,QAAO,gBAAgB;AAC3C,YAAM,gBAAgBA,QAAO,iBAAiB;AAC9C,YAAM,WAAWA,QAAO,WAAW;AACnC,YAAM,yBAAyBA,QAAO;AACtC,YAAM,UAAUA,QAAO;AACvB,YAAM,cAAcA,QAAO,eAAe;AAC1C,YAAM,oBAAoBA,QAAO;AACjC,UAAI,MAAM,aAAa;AACrB,cAAM,gBAAgB,MAAM,aAAa,KAAKC,wBAAuB,KAAK,CAAC;AAC3E,iBAAS,iBAAiB,UAAU,MAAM,aAAa;AAAA,MACzD;AACA,UAAID,QAAO,eAAe,MAAM;AAC9B,cAAM,iBAAiB;AAAA,MACzB,OAAO;AACL,YAAIA,QAAO,cAAc,OAAOA,QAAO,eAAe,YAAY;AAChE,gBAAM,iBAAiBA,QAAO;AAAA,QAChC,OAAO;AACL,gBAAM,iBAAiB,SAAU,WAAWG,SAAQ;AAClD,gBAAI,MAAM,yBAAyB,MAAM,sBAAsB,eAAe;AAC5E,qBAAO,MAAM,sBAAsB,cAAc,WAAWA,OAAM;AAAA,YACpE,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAIH,QAAO,gBAAgB;AACzB,cAAM,sBAAsBA,QAAO;AAAA,MACrC,OAAO;AACL,cAAM,sBAAsB,SAAUI,KAAI;AACxC,cAAI,MAAM,yBAAyB,MAAM,sBAAsB,gBAAgB;AAC7E,mBAAO,MAAM,sBAAsB,eAAeA,GAAE;AAAA,UACtD,OAAO;AACL,mBAAOA,IAAG,UAAU,IAAI;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AACA,UAAIJ,QAAO,UAAU;AACnB,YAAI,cAAc,MAAM,GAAG,aAAa,mBAAmB;AAC3D,YAAI,eAAe,MAAM;AACvB,wBAAc,MAAK,oBAAI,KAAK,GAAE,QAAQ;AACtC,gBAAM,GAAG,aAAa,uBAAuB,WAAW;AAAA,QAC1D;AACA,cAAM,oBAAoB,KAAKA,OAAM;AAAA,MACvC;AACA,YAAM,aAAa,GAAG,MAAM,IAAIK,kBAAiB,MAAM,YAAY;AACnE,aAAO;AAAA,IACT;AACA,IAAAV,cAAaG,OAAM,CAAC;AAAA,MAClB,KAAK;AAAA,MACL,OAAO,SAAS,aAAaR,IAAG;AAC9B,YAAI,KAAK,SAAS;AAChB,cAAI,sBAAsB;AAAA,YACxB,GAAG,SAAS,gBAAgB;AAAA,YAC5B,GAAG,SAAS,gBAAgB;AAAA,UAC9B,GACI,MAAM,oBAAoB,IAAI,KAAK,kBAAkB,GACrD,MAAM,oBAAoB,IAAI,KAAK,kBAAkB,GACrDgB,QAAO;AAAA,YACT,GAAG,MAAM,KAAK,cAAc;AAAA,YAC5B,GAAG,MAAM,KAAK,cAAc;AAAA,UAC9B,GACAC,MAAKD,MAAK,IAAI,KAAK,QAAQ,GACvBE,MAAKF,MAAK,IAAI,KAAK,QAAQ,GAC3B,KAAK,KAAK,cAAc,IAAI,KAAK,QAAQ,QAAQ;AACrD,cAAI,KAAK,WAAW,KAAK,QAAQ,YAAY;AAC3C,YAAAC,OAAM,KAAK,QAAQ,WAAW,aAAa,KAAK,eAAe;AAC/D,YAAAC,OAAM,KAAK,QAAQ,WAAW,YAAY,KAAK,eAAe;AAAA,UAChE;AACA,UAAAD,OAAM;AACN,UAAAC,OAAM;AACN,eAAK,OAAOD,KAAIC,KAAIlB,EAAC;AACrB,eAAK,gBAAgBgB;AACrB,eAAK,oBAAoB;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASG,IAAG,KAAKrB,KAAI;AAC1B,YAAI,KAAK,UAAU,GAAG,GAAG;AACvB,eAAK,UAAU,GAAG,EAAE,KAAKA,GAAE;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASsB,KAAI,KAAKtB,KAAI;AAC3B,YAAI,KAAK,UAAU,GAAG,GAAG;AACvB,cAAIuB,KAAI,CAAC;AACT,mBAAS9B,KAAI,GAAGA,KAAI,KAAK,UAAU,GAAG,EAAE,QAAQA,MAAK;AACnD,gBAAI,KAAK,UAAU,GAAG,EAAEA,EAAC,MAAMO,KAAI;AACjC,cAAAuB,GAAE,KAAK,KAAK,UAAU,GAAG,EAAE9B,EAAC,CAAC;AAAA,YAC/B;AAAA,UACF;AACA,eAAK,UAAU,GAAG,IAAI8B;AAAA,QACxB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYrB,IAAG;AAC7B,YAAI,KAAK,SAAS;AAChB,eAAK,UAAU;AACf,eAAK,aAAa,IAAI,UAAU,iBAAiB,KAAK,YAAY;AAClE,eAAK,aAAa,IAAI,UAAU,eAAe,KAAK,UAAU;AAC9D,UAAAsB,aAAY,SAAS,MAAM,SAAS,QAAQ;AAC5C,eAAK,OAAOtB,EAAC;AACb,eAAK,KAAKA,EAAC;AACX,eAAK,UAAU;AACf,cAAI,KAAK,OAAO;AACd,iBAAK,WAAW,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,YAAY,KAAK,OAAO;AAC3F,iBAAK,UAAU;AAAA,UACjB,OAAO;AACL,gBAAI,KAAK,yBAAyB,KAAK,sBAAsB,gBAAgB;AAC3E,kBAAI,KAAK,sBAAsB,eAAe,KAAK,SAAS,KAAK,QAAQ,YAAY,KAAK,OAAO,CAAC,MAAM,MAAM;AAC5G,qBAAK,QAAQ,YAAY,KAAK,SAAS,KAAK,UAAU;AACtD,qBAAK,UAAU,cAAc,KAAK,OAAO;AAAA,cAC3C;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcA,IAAG;AAC/B,YAAIA,GAAE,kBAAkB;AACtB;AAAA,QACF;AACA,YAAI,kBAAkB,KAAK,sBAAsBA,GAAE,UAAU,KAAKA,GAAE,WAAW;AAC/E,YAAI,mBAAmB,KAAK,UAAU,KAAK,KAAK,SAAS,GAAG;AAC1D,cAAI,KAAK,KAAK,YAAYA,EAAC,KAAK,aAAaA,IAAG,KAAK,IAAI,KAAK,OAAO;AACrE,cAAI,IAAI;AACN,iBAAK,wBAAwB;AAC7B,iBAAK,iBAAiB;AACtB,gBAAI,KAAK,oBAAoB,WAAW,GAAG;AACzC,sBAAQ,IAAI,sCAAsC;AAAA,YACpD;AACA,gBAAI,cAAcA,GAAE,UAAUA,GAAE;AAChC,gBAAIuB,SAAQ,qBAAqB,KAAK,qBAAqB,KAAK,IAAI,WAAW;AAC/E,gBAAIA,UAAS,MAAM;AACjB,mBAAK,wBAAwBA,OAAM,CAAC;AACpC,mBAAK,iBAAiBA,OAAM,CAAC;AAAA,YAC/B;AACA,gBAAI,KAAK,yBAAyB,QAAQ,KAAK,kBAAkB,MAAM;AACrE;AAAA,YACF;AACA,gBAAI,UAAU,KAAK,sBAAsB,WAAW,KAAK,sBAAsB,SAAS,KAAK,gBAAgBvB,EAAC,IAAI;AAClH,gBAAI,WAAW,MAAM;AACnB,mBAAK,iBAAiB;AAAA,YACxB;AACA,gBAAI,KAAK,OAAO;AACd,mBAAK,UAAU,KAAK,eAAe,UAAU,IAAI;AACjD,cAAAY,UAAS,KAAK,SAAS,SAAS,UAAU;AAC1C,mBAAK,QAAQ,aAAa,MAAM,IAAI;AACpC,mBAAK,QAAQ,MAAM,WAAW;AAC9B,kBAAI,KAAK,WAAW,MAAM;AACxB,oBAAI,MAAM,KAAK,QAAQ,YAAY,KAAK,EAAE;AAC1C,qBAAK,QAAQ,MAAM,OAAO,IAAI,IAAI;AAClC,qBAAK,QAAQ,MAAM,MAAM,IAAI,IAAI;AACjC,qBAAK,QAAQ,YAAY,KAAK,OAAO;AAAA,cACvC,OAAO;AACL,oBAAIY,KAAI,qBAAqB,KAAK,cAAc;AAChD,qBAAK,QAAQ,MAAM,OAAOA,GAAE,IAAI;AAChC,qBAAK,QAAQ,MAAM,MAAMA,GAAE,IAAI;AAC/B,yBAAS,KAAK,YAAY,KAAK,OAAO;AAAA,cACxC;AAAA,YACF,OAAO;AACL,mBAAK,UAAU,KAAK;AAAA,YACtB;AACA,gBAAI,KAAK,mBAAmB;AAC1B,sBAAQxB,EAAC;AAAA,YACX;AACA,iBAAK,UAAU,aAAaA,EAAC;AAC7B,gBAAI,KAAK,WAAW,KAAK,QAAQ,YAAY;AAC3C,mBAAK,iBAAiB;AAAA,gBACpB,GAAG,KAAK,QAAQ,WAAW;AAAA,gBAC3B,GAAG,KAAK,QAAQ,WAAW;AAAA,cAC7B;AAAA,YACF;AACA,iBAAK,aAAa,KAAK,QAAQ,YAAY,KAAK,OAAO;AACvD,iBAAK,iBAAiB,qBAAqB,KAAK,OAAO;AACvD,iBAAK,aAAa;AAAA,cAChB,GAAG,KAAK,eAAe,IAAI,KAAK,WAAW;AAAA,cAC3C,GAAG,KAAK,eAAe,IAAI,KAAK,WAAW;AAAA,YAC7C;AACA,iBAAK,QAAQ,KAAK,QAAQ,QAAQ,KAAK,OAAO;AAC9C,iBAAK,aAAa,GAAG,UAAU,iBAAiB,KAAK,YAAY;AACjE,iBAAK,aAAa,GAAG,UAAU,eAAe,KAAK,UAAU;AAC7D,YAAAY,UAAS,SAAS,MAAM,SAAS,QAAQ;AACzC,iBAAK,UAAU,oBAAoB;AAAA,cACjC,IAAI,KAAK;AAAA,cACT,KAAK,KAAK;AAAA,cACV,GAAGZ;AAAA,cACH,MAAM;AAAA,cACN,MAAM,KAAK;AAAA,YACb,CAAC;AAAA,UACH,WAAW,KAAK,wBAAwB;AACtC,oBAAQA,EAAC;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcA,IAAG;AAC/B,YAAI,KAAK,SAAS;AAChB,cAAI,CAAC,KAAK,SAAS;AACjB,gBAAI,iBAAiB,KAAK,UAAU,aAAa;AAAA,cAC/C,IAAI,KAAK;AAAA,cACT,KAAK,KAAK;AAAA,cACV,GAAGA;AAAA,cACH,MAAM;AAAA,cACN,MAAM,KAAK;AAAA,YACb,CAAC;AACD,gBAAI,mBAAmB,OAAO;AAC5B,kBAAI,CAAC,KAAK,SAAS;AACjB;AAAA,cACF;AACA,mBAAK,KAAK,cAAc;AACxB,mBAAK,UAAU;AAAA,YACjB,OAAO;AACL,mBAAK,MAAM;AAAA,YACb;AAAA,UACF;AACA,cAAI,KAAK,SAAS;AAChB,gBAAI,QAAQ,aAAaA,EAAC,GACtBiB,MAAK,MAAM,IAAI,KAAK,QAAQ,GAC5BC,MAAK,MAAM,IAAI,KAAK,QAAQ,GAC5B,MAAM,KAAK,cAAc,IAAI,KAAK,QAAQ,QAAQ;AACtD,iBAAK,gBAAgB;AAAA,cACnB,GAAG,MAAM;AAAA,cACT,GAAG,MAAM;AAAA,YACX;AACA,iBAAK,oBAAoB;AAAA,cACvB,GAAG,SAAS,gBAAgB;AAAA,cAC5B,GAAG,SAAS,gBAAgB;AAAA,YAC9B;AACA,gBAAI,KAAK,WAAW,KAAK,QAAQ,YAAY;AAC3C,cAAAD,OAAM,KAAK,QAAQ,WAAW,aAAa,KAAK,eAAe;AAC/D,cAAAC,OAAM,KAAK,QAAQ,WAAW,YAAY,KAAK,eAAe;AAAA,YAChE;AACA,YAAAD,OAAM;AACN,YAAAC,OAAM;AACN,iBAAK,OAAOD,KAAIC,KAAIlB,EAAC;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe;AAC7B,YAAI,KAAK,cAAc,QAAQ,KAAK,WAAW,MAAM;AACnD,iBAAO;AAAA,YACL,GAAG,KAAK,QAAQ,IAAI,KAAK,WAAW;AAAA,YACpC,GAAG,KAAK,QAAQ,IAAI,KAAK,WAAW;AAAA,UACtC;AAAA,QACF,OAAO;AACL,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,GAAG;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,SAAS;AAC5B,aAAK,aAAa,KAAK,QAAQ,YAAY,KAAK,OAAO;AACvD,aAAK,iBAAiB,qBAAqB,KAAK,OAAO;AACvD,aAAK,aAAa;AAAA,UAChB,GAAG,KAAK,eAAe,IAAI,KAAK,WAAW;AAAA,UAC3C,GAAG,KAAK,eAAe,IAAI,KAAK,WAAW;AAAA,QAC7C;AACA,aAAK,QAAQ,KAAK,QAAQ,QAAQ,KAAK,OAAO;AAC9C,QAAAY,UAAS,KAAK,SAAS,KAAK,QAAQ,IAAI,IAAI;AAC5C,aAAK,iBAAiB,yBAAyB,KAAK,OAAO;AAC3D,aAAK,WAAW;AAChB,aAAK,WAAW;AAAA,MAClB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAOZ,IAAG;AACxB,YAAI,KAAK,kBAAkB,KAAK,eAAe,KAAK,gBAAgB,KAAK,OAAO,GAAG;AACjF,eAAK,qBAAqB;AAAA,YACxB,GAAG,KAAK,QAAQ,aAAa,KAAK;AAAA,YAClC,GAAG,KAAK,QAAQ,YAAY,KAAK;AAAA,UACnC;AACA,eAAK,QAAQ,WAAW,YAAY,KAAK,OAAO;AAChD,eAAK,UAAU,KAAK;AAAA,QACtB,OAAO;AACL,eAAK,qBAAqB;AAAA,QAC5B;AACA,QAAAsB,aAAY,KAAK,SAAS,KAAK,QAAQ,IAAI,IAAI;AAC/C,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAOL,KAAIC,KAAIlB,IAAG;AAChC,YAAI,aAAa,KAAK,OAAO;AAAA,UAC3B,GAAG,KAAK,WAAW,IAAIiB;AAAA,UACvB,GAAG,KAAK,WAAW,IAAIC;AAAA,QACzB,CAAC,GACG,OAAO,KAAK,aAAa,YAAY,KAAK,SAAS,KAAK,gBAAgB,KAAK,OAAOlB,EAAC;AACzF,YAAI,QAAQ,MAAM;AAChB,cAAI,KAAK,eAAe,KAAK,IAAI,KAAK,OAAO,GAAG;AAC9C,gBAAI,WAAW,MAAM,KAAK,KAAK,WAAW,MAAM,KAAK,GAAG;AACtD,kBAAI,CAAC,KAAK,gBAAgB;AACxB,oBAAI,KAAK,KAAK,oBAAoB,KAAK,cAAc;AACrD,gBAAAY,UAAS,IAAI,SAAS,UAAU;AAChC,oBAAI,KAAK,mBAAmB;AAC1B,uBAAK,kBAAkB,YAAY,EAAE;AACrC,uBAAK,yBAAyB,qBAAqB,KAAK,eAAe,UAAU;AACjF,uBAAK,uBAAuB,qBAAqB,KAAK,iBAAiB;AACvE,uBAAK,WAAW,KAAK,uBAAuB,IAAI,KAAK,qBAAqB;AAC1E,uBAAK,WAAW,KAAK,uBAAuB,IAAI,KAAK,qBAAqB;AAAA,gBAC5E,OAAO;AACL,uBAAK,eAAe,WAAW,YAAY,EAAE;AAAA,gBAC/C;AACA,qBAAK,UAAU;AACf,qBAAK,iBAAiB;AAAA,cACxB;AACA,qBAAO;AAAA,YACT,OAAO;AACL,kBAAI,KAAK,gBAAgB;AACvB,qBAAK,QAAQ,WAAW,YAAY,KAAK,OAAO;AAChD,qBAAK,UAAU,KAAK;AACpB,qBAAK,iBAAiB;AACtB,qBAAK,yBAAyB;AAC9B,qBAAK,uBAAuB;AAC5B,qBAAK,WAAW;AAChB,qBAAK,WAAW;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AACA,eAAK,QAAQ,YAAY,KAAK,SAAS;AAAA,YACrC,GAAG,KAAK,IAAI,KAAK;AAAA,YACjB,GAAG,KAAK,IAAI,KAAK;AAAA,UACnB,CAAC;AACD,eAAK,UAAU,YAAY;AAAA,YACzB,IAAI,KAAK;AAAA,YACT,KAAK;AAAA,YACL,GAAGZ;AAAA,YACH,MAAM;AAAA,YACN,MAAM,KAAK;AAAA,YACX,aAAa,KAAK;AAAA,UACpB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,YAAI,KAAK,WAAW,MAAM;AACxB,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,yBAAyB;AACtD,eAAO,0BAA0B,KAAK,kBAAkB,KAAK,KAAK,KAAK,WAAW,KAAK;AAAA,MACzF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAKA,IAAG,OAAO;AAC7B,YAAI,SAAS,KAAK,SAAS;AACzB,cAAIyB,aAAY,CAAC,GACb,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO;AAChD,UAAAA,WAAU,KAAK,CAAC,KAAK,SAAS,MAAM,MAAM,KAAK,KAAK,CAAC;AACrD,eAAK,UAAU,YAAY;AAAA,YACzB,IAAI,KAAK;AAAA,YACT,KAAK,KAAK,sBAAsB;AAAA,YAChC,UAAU;AAAA,YACV,GAAGzB;AAAA,YACH,MAAM;AAAA,YACN,WAAWyB;AAAA,YACX,MAAM,KAAK;AAAA,YACX,aAAa;AAAA,cACX,GAAG,KAAK,WAAW;AAAA,cACnB,GAAG,KAAK,WAAW;AAAA,YACrB;AAAA,UACF,CAAC;AAAA,QACH,WAAW,CAAC,KAAK,SAAS;AACxB,eAAK,sBAAsB,YAAY,KAAK,sBAAsB,UAAU,KAAK,cAAc,IAAI;AAAA,QACrG;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,KAAK,OAAO;AACpC,YAAI,SAAS;AACb,YAAI,KAAK,yBAAyB,KAAK,sBAAsB,GAAG,GAAG;AACjE,mBAAS,KAAK,sBAAsB,GAAG,EAAE,KAAK;AAAA,QAChD,WAAW,KAAK,UAAU,GAAG,GAAG;AAC9B,mBAASlC,KAAI,GAAGA,KAAI,KAAK,UAAU,GAAG,EAAE,QAAQA,MAAK;AACnD,gBAAI;AACF,kBAAImC,KAAI,KAAK,UAAU,GAAG,EAAEnC,EAAC,EAAE,KAAK;AACpC,kBAAImC,MAAK,MAAM;AACb,yBAASA;AAAA,cACX;AAAA,YACF,SAAS1B,IAAP;AAAA,YAAW;AAAA,UACf;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,YAAI,MAAM;AAAA,UACR,MAAM;AAAA,UACN,YAAY,iBAAiB;AAAA,UAC7B,YAAY,iBAAiB;AAAA,QAC/B;AACA,YAAI,KAAK,yBAAyB,QAAQ,KAAK,sBAAsB,QAAQ,MAAM;AACjF,cAAI,OAAO,KAAK,sBAAsB;AACtC,cAAI,KAAK,sBAAsB,iBAAiB,MAAM;AACpD,gBAAI,aAAa,KAAK,sBAAsB;AAC5C,gBAAI,aAAa,KAAK,sBAAsB;AAAA,UAC9C;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO,KAAK;AAC1B,YAAI,oBAAoB,KAAK,YAAY,GACrC,OAAO,kBAAkB,MACzB,aAAa,kBAAkB,YAC/B,aAAa,kBAAkB;AACnC,YAAI,QAAQ,MAAM;AAChB,iBAAO;AAAA,QACT,OAAO;AACL,cAAI,KAAK,OAAO,KAAK,IAAI,IAAI,YACzB,KAAK,OAAO,KAAK,IAAI,IAAI;AAC7B,iBAAO,WAAW,KAAK,MAAM,IAAI,EAAE;AAAA,QACrC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,KAAK;AACpC,aAAK,iBAAiB,MAAM,OAAO;AAAA,MACrC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,KAAKa,SAAQ,gBAAgB,OAAOb,IAAG;AAClE,YAAI,KAAK,yBAAyB,QAAQ,KAAK,sBAAsB,qBAAqB,OAAO,KAAK,sBAAsB,sBAAsB,YAAY;AAC5J,iBAAO,KAAK,sBAAsB,kBAAkB,KAAKa,SAAQ,gBAAgB,OAAOb,EAAC;AAAA,QAC3F,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYA,IAAG;AAC7B,iBAAS2B,QAAO,KAAK,UAAU;AAC7B,cAAIC,KAAI,KAAK,SAASD,IAAG;AACzB,cAAI,KAAKC,GAAE,CAAC,EAAE5B,EAAC;AACf,cAAI4B,GAAE,CAAC,GAAG;AACR,iBAAK,CAAC;AAAA,UACR;AACA,cAAI,CAAC,IAAI;AACP,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUA,IAAG,UAAU;AACrC,YAAI,SAAS;AACb,YAAIA,IAAG;AACL,cAAID,OAAM,UAAUC,EAAC;AACrB,eAAK,SAASD,IAAG,IAAI,CAAC,SAAU3B,IAAG;AACjC,gBAAIC,KAAID,GAAE,cAAcA,GAAE;AAC1B,gBAAIjB;AACJ,gBAAI,SAAS6C,EAAC,GAAG;AACf,cAAA7C,KAAI,kBAAkBkB,IAAG2B,IAAG,OAAO,EAAE;AAAA,YACvC,WAAW,OAAOA,OAAM,YAAY;AAClC,cAAA7C,KAAI6C,GAAE5B,IAAG,OAAO,EAAE;AAAA,YACpB;AACA,mBAAOjB;AAAA,UACT,GAAG,aAAa,KAAK;AAAA,QACvB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa6C,IAAG;AAC9B,YAAID,OAAM,OAAOC,OAAM,aAAaA,GAAE,eAAeA;AACrD,eAAO,KAAK,SAASD,IAAG;AAAA,MAC1B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,aAAK,WAAW,CAAC;AAAA,MACnB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYjB,SAAQ,SAAS;AAC3C,YAAIA,QAAO,UAAU;AACnB,cAAI,SAAS;AACX,iBAAK,oBAAoB,QAAQA,OAAM;AAAA,UACzC,OAAO;AACL,iBAAK,oBAAoB,KAAKA,OAAM;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASmB,WAAU;AACxB,aAAK,aAAa,IAAI,KAAK,IAAId,kBAAiB,KAAK,YAAY;AACjE,aAAK,aAAa,IAAI,UAAU,iBAAiB,KAAK,YAAY;AAClE,aAAK,aAAa,IAAI,UAAU,eAAe,KAAK,UAAU;AAC9D,aAAK,eAAe;AACpB,aAAK,aAAa;AAClB,aAAK,eAAe;AACpB,YAAI,KAAK,iBAAiB,MAAM;AAC9B,mBAAS,oBAAoB,UAAU,KAAK,aAAa;AAAA,QAC3D;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOP;AAAA,EACT,EAAEN,KAAI;AACN,MAAI,iBAAiB,CAAC,SAAS,YAAY,UAAU,UAAU,QAAQ;AACvE,MAAI,gCAAgC,eAAe,KAAK,GAAG;AAC3D,MAAI,WAAW,WAAY;AACzB,aAAS4B,UAASC,UAAS;AACzB,MAAA5B,iBAAgB,MAAM2B,SAAQ;AAC9B,MAAA1B,iBAAgB,MAAM,gBAAgB,MAAM;AAC5C,MAAAA,iBAAgB,MAAM,QAAQ,CAAC;AAC/B,MAAAA,iBAAgB,MAAM,OAAO,CAAC,CAAC;AAC/B,MAAAA,iBAAgB,MAAM,uBAAuB,MAAM;AACnD,MAAAA,iBAAgB,MAAM,uBAAuB,MAAM;AACnD,MAAAA,iBAAgB,MAAM,mBAAmB,MAAM;AAC/C,MAAAA,iBAAgB,MAAM,mBAAmB,MAAM;AAC/C,MAAAA,iBAAgB,MAAM,eAAe,MAAM;AAC3C,MAAAA,iBAAgB,MAAM,eAAe,MAAM;AAC3C,MAAA2B,WAAUA,YAAW,CAAC;AACtB,WAAK,sBAAsBA,SAAQ,uBAAuB;AAC1D,WAAK,eAAe,IAAI,aAAa;AACrC,WAAK,OAAOA,SAAQ,QAAQ;AAC5B,WAAK,sBAAsBA,SAAQ,uBAAuB,sBAAsB;AAChF,WAAK,kBAAkB,kBAAkB,IAAI,KAAK,mBAAmB;AACrE,WAAK,kBAAkB,kBAAkB,IAAI,KAAK,mBAAmB;AACrE,WAAK,cAAc,YAAY,IAAI,KAAK,mBAAmB;AAC3D,WAAK,cAAc,YAAY,IAAI,KAAK,mBAAmB;AAC3D,UAAI,KAAKA,SAAQ,OAAO,CAAC;AACzB,MAAAC,QAAO,KAAK,KAAK,EAAE;AAAA,IACrB;AACA,IAAA3B,cAAayB,WAAU,CAAC;AAAA,MACtB,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,eAAO,KAAK,gBAAgB,EAAE;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAIxC,IAAG;AACjC,aAAK,gBAAgB,IAAIA,EAAC;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,IAAI;AAC1B,eAAO,KAAK,YAAY,EAAE;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU;AACxB,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ2C,IAAG;AACzB,aAAK,OAAOA;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe3C,IAAG;AAChC,QAAAA,KAAIA,MAAK,CAAC;AACV,YAAI,KAAK;AAAA,UACP,QAAQ,CAAC;AAAA,QACX,GACIC;AACJ,aAAKA,MAAKD,IAAG;AACX,aAAGC,EAAC,IAAID,GAAEC,EAAC;AAAA,QACb;AACA,aAAKA,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACnC,aAAG,OAAO,QAAQA,EAAC,CAAC,IAAID,GAAE,QAAQC,EAAC,CAAC,KAAK;AAAA,QAC3C;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,yBAAyB;AACvC,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,UAAU;AAC/C,aAAK,sBAAsB;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,IAAImB,SAAQ;AACpC,YAAI,GAAG,kBAAkB,MAAM;AAC7B,cAAI,MAAM,KAAK,eAAeA,OAAM;AACpC,cAAIwB,KAAI,IAAI,KAAK,IAAI,KAAK,IAAI;AAC9B,UAAAtB,UAAS,IAAI,SAAS,kBAAkB;AACxC,aAAG,iBAAiBsB;AACpB,iBAAOA;AAAA,QACT,OAAO;AACL,iBAAO,GAAG;AAAA,QACZ;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,IAAI;AACnC,YAAI,GAAG,gBAAgB;AACrB,aAAG,eAAe,QAAQ;AAC1B,iBAAO,GAAG;AAAA,QACZ;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,EAAE;AAEF,MAAI,sBAAsB;AAC1B,MAAI,gBAAgB,WAAY;AAC9B,aAASK,eAAc,UAAU;AAC/B,MAAAhC,iBAAgB,MAAMgC,cAAa;AACnC,WAAK,WAAW;AAChB,MAAA/B,iBAAgB,MAAM,kBAAkB,CAAC,CAAC;AAC1C,MAAAA,iBAAgB,MAAM,cAAc,oBAAI,IAAI,CAAC;AAC7C,MAAAA,iBAAgB,MAAM,iBAAiB,oBAAI,IAAI,CAAC;AAChD,MAAAA,iBAAgB,MAAM,8BAA8B,oBAAI,IAAI,CAAC;AAC7D,MAAAA,iBAAgB,MAAM,yBAAyB,oBAAI,IAAI,CAAC;AACxD,MAAAA,iBAAgB,MAAM,eAAe,MAAM;AAAA,IAC7C;AACA,IAAAC,cAAa8B,gBAAe,CAAC;AAAA,MAC3B,KAAK;AAAA,MACL,KAAK,SAASC,OAAM;AAClB,YAAI,KAAK,eAAe,MAAM;AAC5B,iBAAO,KAAK;AAAA,QACd,OAAO;AACL,iBAAO,KAAK;AAAA,QACd;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,KAAK,SAASA,OAAM;AAClB,eAAO,KAAK,eAAe;AAAA,MAC7B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBtC,KAAI;AAClC,YAAI,QAAQ;AACZ,aAAK,cAAc,CAAC;AACpB,gBAAQ,KAAK,gBAAgB,SAAUR,IAAG;AACxC,cAAIQ,IAAGR,EAAC,GAAG;AACT,kBAAM,YAAY,KAAKA,EAAC;AAAA,UAC1B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS+C,SAAQ;AACtB,YAAI,SAAS;AACb,aAAK,MAAM;AACX,gBAAQ,KAAK,gBAAgB,SAAU/C,IAAG;AACxC,iBAAO,OAAO,SAAS,YAAYA,GAAE,KAAK,mBAAmB;AAAA,QAC/D,CAAC;AACD,aAAK,eAAe,SAAS;AAAA,MAC/B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,aAAK,2BAA2B,MAAM;AACtC,aAAK,sBAAsB,MAAM;AACjC,aAAK,WAAW,MAAM;AACtB,aAAK,cAAc,MAAM;AACzB,aAAK,cAAc;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB;AACpC,YAAI,SAAS;AACb,gBAAQ,KAAK,YAAY,SAAUA,IAAG;AACpC,cAAI,KAAK,OAAO,SAAS,SAAS,YAAYA,GAAE,EAAE;AAClD,cAAI8B,OAAM;AAAA,YACR,GAAG,SAAS,KAAK9B,GAAE,IAAI,YAAY,EAAE;AAAA,YACrC,GAAG,SAAS,KAAKA,GAAE,IAAI,WAAW,EAAE;AAAA,UACtC;AACA,iBAAO,2BAA2B,IAAIA,GAAE,IAAI8B,IAAG;AAC/C,iBAAO,sBAAsB,IAAI9B,GAAE,IAAI8B,IAAG;AAC1C,iBAAO,WAAW,IAAI9B,GAAE,IAAI;AAAA,YAC1B,GAAG,GAAG;AAAA,YACN,GAAG,GAAG;AAAA,UACR,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,iBAAiB,kBAAkBgD,WAAU;AAC3E,YAAI,SAAS;AACb,YAAIrB,MAAK,gBAAgB,IAAI,iBAAiB,GAC1CC,MAAK,gBAAgB,IAAI,iBAAiB;AAC9C,gBAAQ,KAAK,YAAY,SAAU5B,IAAG;AACpC,cAAI,KAAK,OAAO,2BAA2B,IAAIA,GAAE,EAAE;AACnD,cAAI,IAAI;AACN,gBAAIH,KAAI,GAAG,IAAI8B,KACX/B,KAAI,GAAG,IAAIgC;AACf,gBAAI,KAAK,OAAO,WAAW,IAAI5B,GAAE,EAAE;AACnC,gBAAI,KAAK;AAAA,cACP,GAAGH;AAAA,cACH,GAAGD;AAAA,cACH,GAAG,GAAG;AAAA,cACN,GAAG,GAAG;AAAA,YACR;AACA,gBAAII,GAAE,IAAI,uBAAuBA,GAAE,IAAI,oBAAoB,WAAW;AACpE,kBAAI,gBAAgB;AAAA,gBAClB,GAAGA,GAAE,IAAI,WAAW,cAAcA,GAAE,IAAI,WAAW;AAAA,gBACnD,GAAGA,GAAE,IAAI,WAAW,eAAeA,GAAE,IAAI,WAAW;AAAA,cACtD;AACA,iBAAG,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AACvB,iBAAG,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AACvB,iBAAG,IAAI,KAAK,IAAI,GAAG,GAAG,cAAc,IAAI,GAAG,CAAC;AAC5C,iBAAG,IAAI,KAAK,IAAI,GAAG,GAAG,cAAc,IAAI,GAAG,CAAC;AAAA,YAC9C;AACA,mBAAO,sBAAsB,IAAIA,GAAE,IAAI;AAAA,cACrC,GAAGH;AAAA,cACH,GAAGD;AAAA,YACL,CAAC;AACD,YAAAI,GAAE,IAAI,MAAM,OAAO,GAAG,IAAI;AAC1B,YAAAA,GAAE,IAAI,MAAM,MAAM,GAAG,IAAI;AACzB,YAAAgD,UAAShD,GAAE,KAAKA,GAAE,IAAI,IAAI,EAAE;AAAA,UAC9B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASiD,MAAKX,IAAG;AACtB,YAAI,SAAS;AACb,gBAAQ,KAAK,YAAY,SAAUtC,IAAG;AACpC,cAAIN,KAAI,OAAO,WAAW,IAAIM,GAAE,EAAE;AAClC,cAAIkD,KAAI,OAAO,sBAAsB,IAAIlD,GAAE,EAAE;AAC7C,cAAI,OAAO,OAAO,2BAA2B,IAAIA,GAAE,EAAE;AACrD,UAAAsC,GAAEtC,GAAE,KAAKA,GAAE,IAAIkD,IAAGxD,IAAG,IAAI;AAAA,QAC3B,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASyD,KAAI,IAAIC,KAAI;AAC1B,YAAI,MAAM;AACV,QAAAA,MAAKA,OAAM,KAAK,SAAS,MAAM,GAAG;AAClC,YAAI,MAAM,iBAAiB,KAAK,gBAAgB,SAAUpD,IAAG;AAC3D,iBAAOA,GAAE,OAAOoD;AAAA,QAClB,CAAC;AACD,YAAI,QAAQ,IAAI;AACd,eAAK,SAAS,SAAS,IAAI,mBAAmB;AAC9C,eAAK,eAAe,KAAK;AAAA,YACvB,IAAIA;AAAA,YACJ;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,QAAO,IAAI;AACzB,YAAI,SAAS;AACb,YAAI,MAAM;AACV,aAAK,iBAAiB,KAAK,eAAe,OAAO,SAAUrD,IAAG;AAC5D,cAAI,MAAMA,GAAE,QAAQ;AACpB,cAAI,CAAC,KAAK;AACR,mBAAO,SAAS,YAAYA,GAAE,KAAK,mBAAmB;AAAA,UACxD;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO,IAAI;AACzB,YAAI,MAAM;AACV,YAAI,MAAM,iBAAiB,KAAK,gBAAgB,SAAUA,IAAG;AAC3D,iBAAOA,GAAE,QAAQ;AAAA,QACnB,CAAC;AACD,YAAI,QAAQ,IAAI;AACd,eAAK,OAAO,GAAG;AAAA,QACjB,OAAO;AACL,eAAK,IAAI,EAAE;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAO6C;AAAA,EACT,EAAE;AAEF,MAAI,4BAA4B;AAChC,MAAI,kBAAkB;AACtB,MAAI,uBAAuB;AAC3B,MAAI,oBAAoB;AACxB,MAAI,oBAAoB;AACxB,MAAI,gBAAgB;AACpB,MAAI,mBAAmB;AACvB,MAAI,cAAc,WAAY;AAC5B,aAASS,aAAY,UAAU,eAAeb,UAAS;AACrD,UAAI,QAAQ;AACZ,MAAA5B,iBAAgB,MAAMyC,YAAW;AACjC,WAAK,WAAW;AAChB,WAAK,gBAAgB;AACrB,MAAAxC,iBAAgB,MAAM,YAAY,MAAM;AACxC,MAAAA,iBAAgB,MAAM,QAAQ,MAAM;AACpC,MAAAA,iBAAgB,MAAM,eAAe,CAAC,CAAC;AACvC,MAAAA,iBAAgB,MAAM,UAAU,CAAC,CAAC;AAClC,MAAAA,iBAAgB,MAAM,0BAA0B,CAAC,CAAC;AAClD,MAAAA,iBAAgB,MAAM,0BAA0B,CAAC,CAAC;AAClD,MAAAA,iBAAgB,MAAM,YAAY,CAAC,CAAC;AACpC,MAAAA,iBAAgB,MAAM,gBAAgB,MAAM;AAC5C,MAAAA,iBAAgB,MAAM,iBAAiB,CAAC,CAAC;AACzC,WAAK,WAAW,IAAI,SAAS;AAAA,QAC3B,MAAM,KAAK,SAAS;AAAA,QACpB,KAAK;AAAA,UACH,UAAU,KAAK,SAAS;AAAA,UACxB,oBAAoB;AAAA,UACpB,WAAW;AAAA,UACX,MAAM;AAAA,UACN,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,YAAY;AAAA,QACd;AAAA,MACF,CAAC;AACD,WAAK,SAAS,KAAK,YAAY,SAAU6B,IAAG;AAC1C,cAAM,SAAS,QAAQA,EAAC;AAAA,MAC1B,CAAC;AACD,MAAAF,WAAUA,YAAW,CAAC;AACtB,WAAK,eAAeA,SAAQ,gBAAgB;AAAA,IAC9C;AACA,IAAA1B,cAAauC,cAAa,CAAC;AAAA,MACzB,KAAK;AAAA,MACL,OAAO,SAASC,YAAW,SAAS,aAAa;AAC/C,YAAI,SAAS;AACb,YAAIL,KAAIR,QAAO;AAAA,UACb,UAAU,QAAQ;AAAA,QACpB,GAAG,eAAe,CAAC,CAAC;AACpB,QAAAQ,GAAE,QAAQM,MAAKN,GAAE,OAAO,SAAUlD,IAAG;AACnC,iBAAO,QAAQ,QAAQA,EAAC;AAAA,QAC1B,GAAG,KAAK;AACR,QAAAkD,GAAE,OAAOM,MAAKN,GAAE,MAAM,SAAUlD,IAAG;AACjC,iBAAO,QAAQ,OAAOA,EAAC;AAAA,QACzB,CAAC;AACD,QAAAkD,GAAE,OAAOM,MAAKN,GAAE,MAAM,SAAUlD,IAAG;AACjC,iBAAO,QAAQ,OAAOA,EAAC;AAAA,QACzB,CAAC;AACD,YAAI,sBAAsB,QAAQ,iBAAiB,SAAUA,IAAG;AAAA,QAAC,GAAG,KAAK,OAAO;AAChF,QAAAkD,GAAE,cAAcM,MAAKN,GAAE,aAAa,SAAUlD,IAAG;AAC/C,iBAAO,mBAAmBA,EAAC;AAAA,QAC7B,CAAC;AACD,QAAAkD,GAAE,WAAW,SAAU,IAAIxC,IAAG;AAC5B,iBAAO,QAAQ,WAAW,IAAIA,EAAC;AAAA,QACjC;AACA,QAAAwC,GAAE,YAAY,SAAU,IAAI;AAC1B,iBAAO,QAAQ,YAAY,EAAE;AAAA,QAC/B;AACA,YAAI,QAAQ,eAAe;AACzB,UAAAA,GAAE,gBAAgB,QAAQ;AAC1B,UAAAA,GAAE,iBAAiB,QAAQ;AAAA,QAC7B;AACA,YAAIA,GAAE,qBAAqB,QAAQA,GAAE,eAAe,MAAM;AACxD,kBAAQA,GAAE,aAAa;AAAA,YACrB,KAAK,gBAAgB,aACnB;AACE,cAAAA,GAAE,oBAAoB,SAAU,KAAK3B,SAAQ,gBAAgB,OAAO;AAClE,uBAAO;AAAA,kBACL,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC;AAAA,kBAC9B,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC;AAAA,gBAChC;AAAA,cACF;AACA;AAAA,YACF;AAAA,YACF,KAAK,gBAAgB,QACnB;AACE,kBAAI,UAAU2B,GAAE,sBAAsB;AACtC,cAAAA,GAAE,oBAAoB,SAAU,KAAK3B,SAAQ,gBAAgB,OAAO;AAClE,oBAAI1B,KAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,eAAe,IAAI,UAAU,eAAe,IAAI,UAAU,IAAI;AAC9F,oBAAID,KAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,eAAe,IAAI,UAAU,eAAe,IAAI,UAAU,IAAI;AAC9F,uBAAO;AAAA,kBACL,GAAGC;AAAA,kBACH,GAAGD;AAAA,gBACL;AAAA,cACF;AACA;AAAA,YACF;AAAA,YACF,KAAK,gBAAgB,gBACnB;AACE,cAAAsD,GAAE,oBAAoB,SAAU,KAAK3B,SAAQ,gBAAgB,OAAO;AAClE,oBAAI1B,KAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,eAAe,IAAI,eAAe,IAAI,MAAM,IAAI,IAAI;AAC9F,oBAAID,KAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,eAAe,IAAI,eAAe,IAAI,MAAM,IAAI,IAAI;AAC9F,uBAAO;AAAA,kBACL,GAAGC;AAAA,kBACH,GAAGD;AAAA,gBACL;AAAA,cACF;AACA;AAAA,YACF;AAAA,UACJ;AAAA,QACF;AACA,YAAI,KAAK,QAAQ,MAAM;AACrB,UAAAsD,GAAE,cAAc,KAAK;AACrB,eAAK,OAAO,KAAK,SAAS,UAAU,KAAK,SAAS,aAAa,GAAGA,EAAC;AACnE,kBAAQ,KAAK,eAAe,SAAU,aAAa;AACjD,mBAAO,OAAO,KAAK,UAAU,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC;AAAA,UAC7D,CAAC;AACD,eAAK,KAAK,GAAG,cAAc,SAAU,IAAI;AACvC,mBAAO,SAAS,WAAW,EAAE;AAAA,UAC/B,CAAC;AAAA,QACH,OAAO;AACL,eAAK,KAAK,YAAYA,EAAC;AAAA,QACzB;AACA,aAAK,SAAS,KAAK;AAAA,UACjB;AAAA,UACA,SAASA;AAAA,QACX,CAAC;AACD,gBAAQ,KAAK,KAAK,IAAI;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY9B,SAAQ,SAAS;AAC3C,aAAK,QAAQ,KAAK,KAAK,YAAYA,SAAQ,OAAO;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUqC,SAAQ,SAAS;AACzC,YAAI,KAAK,QAAQ,MAAM;AACrB,eAAK,cAAc,KAAK,CAACA,SAAQ,YAAY,IAAI,CAAC;AAAA,QACpD,OAAO;AACL,eAAK,KAAK,UAAUA,SAAQ,OAAO;AAAA,QACrC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAaA,SAAQ;AACnC,YAAI,KAAK,QAAQ,MAAM;AACrB,eAAK,KAAK,aAAaA,OAAM;AAAA,QAC/B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,SAAS;AAClC,YAAI,SAAS;AACb,gBAAQ,SAAS,SAAUnB,IAAG;AAC5B,iBAAO,KAAK,UAAUA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,QAClC,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,YAAI,MAAM,CAAC;AACX,gBAAQ,KAAK,UAAU,SAAUtC,IAAG;AAClC,UAAAA,GAAE,QAAQ,MAAM;AAAA,QAClB,CAAC;AACD,aAAK,SAAS,SAAS;AACvB,YAAI,KAAK,QAAQ,MAAM;AACrB,cAAI,iBAAiB,KAAK,KAAK;AAC/B,mBAASsC,MAAK,gBAAgB;AAC5B,gBAAI,KAAK,CAACA,IAAG,eAAeA,EAAC,EAAE,CAAC,CAAC,CAAC;AAAA,UACpC;AACA,eAAK,SAAS,iBAAiB,KAAK,SAAS,aAAa,CAAC;AAAA,QAC7D;AACA,eAAO,KAAK;AACZ,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,SAASG,UAAS;AAC1C,YAAI,oBAAoB,gBAAgB,KAAK,UAAU,SAAUzC,IAAG;AAClE,iBAAOA,GAAE,YAAY;AAAA,QACvB,CAAC;AACD,YAAI,qBAAqB,MAAM;AAC7B,UAAA0C,QAAO,kBAAkB,SAASD,YAAW,CAAC,CAAC;AAAA,QACjD;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOa;AAAA,EACT,EAAE;AAEF,WAAS,oBAAoB,UAAU,MAAM;AAC3C,QAAI,SAAS,IAAI,GAAG;AAClB,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,MACV;AAAA,IACF,OAAO;AACL,aAAO;AAAA,QACL,IAAI,KAAK;AAAA,QACT,QAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACA,WAAS,wBAAwB,WAAW,IAAI;AAC9C,QAAI,UAAU,uBAAuB,UAAU,SAAS,SAAU7D,IAAG;AACnE,aAAOA,GAAE,OAAO;AAAA,IAClB,CAAC;AACD,QAAI,YAAY,MAAM;AACpB,aAAO,QAAQ,WAAW;AAAA,IAC5B,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,aAAa,IAAI;AACxB,QAAI,YAAY,CAAC;AACjB,QAAIO,KAAI,GAAG;AACX,WAAOA,MAAK,MAAM;AAChB,gBAAU,KAAKA,GAAE,EAAE;AACnB,MAAAA,KAAIA,GAAE;AAAA,IACR;AACA,WAAO;AAAA,EACT;AACA,MAAI,qBAAqB,WAAY;AACnC,aAAS0D,oBAAmB,UAAU,gBAAgB;AACpD,MAAA7C,iBAAgB,MAAM6C,mBAAkB;AACxC,WAAK,WAAW;AAChB,WAAK,iBAAiB;AACtB,MAAA5C,iBAAgB,MAAM,YAAY,OAAO,2BAA2B,UAAU,IAAI,aAAa,IAAI,GAAG;AACtG,MAAAA,iBAAgB,MAAM,eAAe,IAAI;AACzC,MAAAA,iBAAgB,MAAM,mBAAmB,CAAC,CAAC;AAC3C,MAAAA,iBAAgB,MAAM,uBAAuB,CAAC,CAAC;AAC/C,MAAAA,iBAAgB,MAAM,2BAA2B,IAAI;AACrD,MAAAA,iBAAgB,MAAM,4BAA4B,CAAC,CAAC;AACpD,MAAAA,iBAAgB,MAAM,iBAAiB,CAAC,CAAC;AACzC,MAAAA,iBAAgB,MAAM,qBAAqB,IAAI;AAC/C,MAAAA,iBAAgB,MAAM,4BAA4B,oBAAI,IAAI,CAAC;AAC3D,MAAAA,iBAAgB,MAAM,0BAA0B,oBAAI,IAAI,CAAC;AACzD,MAAAA,iBAAgB,MAAM,sCAAsC,oBAAI,IAAI,CAAC;AACrE,MAAAA,iBAAgB,MAAM,gBAAgB,IAAI;AAC1C,MAAAA,iBAAgB,MAAM,QAAQ,MAAM;AACpC,MAAAA,iBAAgB,MAAM,oBAAoB,MAAM;AAAA,IAClD;AACA,IAAAC,cAAa2C,qBAAoB,CAAC;AAAA,MAChC,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI;AAC7B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe;AAC7B,YAAI,YAAY;AAChB,YAAI,KAAK,oBAAoB,SAAS,GAAG;AACvC,cAAI,cAAc,KAAK,oBAAoB,CAAC,EAAE,SAAS;AACvD,cAAI,sBAAsB,KAAK,oBAAoB,CAAC,EAAE;AACtD,cAAI,eAAe,oBAAoB;AACvC,cAAI,iBAAiB,aAAa;AAChC,gBAAI,gBAAgB,QAAQ,CAAC,aAAa,aAAa,qBAAqB,WAAW,GAAG;AACxF,0BAAY,KAAK,oBAAoB,CAAC;AAAA,YACxC;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAOtC,SAAQ;AAC7B,YAAI,uBACA,QAAQ;AACZ,YAAI,MAAMA,QAAO,KAAK,eAAe;AACrC,YAAI,YAAY,KAAK,aAAa;AAClC,YAAI,oBAAoB,CAAC;AACzB,0BAAkB,KAAK;AAAA,UACrB,IAAI;AAAA,UACJ,IAAI,KAAK,SAAS,MAAM,GAAG;AAAA,UAC3B,KAAKA,QAAO;AAAA,UACZ,eAAe,IAAI;AAAA,UACnB,cAAc;AAAA,UACd,aAAaA,QAAO;AAAA,UACpB,UAAU;AAAA,UACV,WAAW,aAAa,OAAO,UAAU,SAAS,QAAQ;AAAA,QAC5D,CAAC;AACD,iBAAS,oBAAoB,IAAIgC,KAAI,YAAY1D,IAAG,kBAAkB;AACpE,cAAIG,KAAI,WAAW,GACfD,KAAI,WAAW;AACnB,cAAI,GAAG,uBAAuB,GAAG,oBAAoB,WAAW;AAC9D,gBAAI,gBAAgB;AAAA,cAClB,GAAG,GAAG,WAAW,cAAc,GAAG,WAAW;AAAA,cAC7C,GAAG,GAAG,WAAW,eAAe,GAAG,WAAW;AAAA,YAChD;AACA,YAAAC,KAAI,KAAK,IAAIA,IAAG,CAAC;AACjB,YAAAD,KAAI,KAAK,IAAIA,IAAG,CAAC;AACjB,YAAAC,KAAI,KAAK,IAAIA,IAAG,cAAc,IAAIH,GAAE,CAAC;AACrC,YAAAE,KAAI,KAAK,IAAIA,IAAG,cAAc,IAAIF,GAAE,CAAC;AACrC,uBAAW,IAAIG;AACf,uBAAW,IAAID;AAAA,UACjB;AACA,4BAAkB,KAAK;AAAA,YACrB;AAAA,YACA,IAAIwD;AAAA,YACJ,KAAK;AAAA,YACL,aAAa;AAAA,YACb,eAAe,GAAG;AAAA,YAClB,cAAc;AAAA,YACd,UAAU;AAAA,YACV,WAAW,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,SAAS;AAAA,UACtF,CAAC;AAAA,QACH;AACA,aAAK,eAAe,KAAK,SAAU,IAAIA,KAAIF,IAAGxD,IAAG,kBAAkB;AACjE,cAAI,OAAO0B,QAAO,IAAI;AACpB,gCAAoB,IAAIgC,KAAI;AAAA,cAC1B,GAAGF,GAAE;AAAA,cACL,GAAGA,GAAE;AAAA,YACP,GAAGxD,IAAG,gBAAgB;AAAA,UACxB;AAAA,QACF,CAAC;AACD,SAAC,wBAAwB,KAAK,uBAAuB,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,QAAQ,QAAQ,SAAUkD,IAAG;AAC1J,cAAIA,GAAE,OAAOxB,QAAO,IAAI;AACtB,gBAAIuC,UAAS,MAAM,yBAAyB,IAAIf,GAAE,IAAI;AACtD,gBAAIlD,KAAI,MAAM,uBAAuB,IAAIkD,GAAE,IAAI;AAC/C,gBAAI,KAAK;AAAA,cACP,GAAGxB,QAAO,SAAS,IAAIuC,QAAO,CAAC,EAAE;AAAA,cACjC,GAAGvC,QAAO,SAAS,IAAIuC,QAAO,CAAC,EAAE;AAAA,YACnC;AACA,gCAAoBf,GAAE,IAAIA,GAAE,MAAM,IAAIlD,IAAG,MAAM,mCAAmC,IAAIkD,GAAE,IAAI,CAAC;AAAA,UAC/F;AAAA,QACF,CAAC;AACD,gBAAQ,mBAAmB,SAAU5C,IAAG;AACtC,cAAI,aAAaA,GAAE,iBAAiB,MAChC,oBAAoB,cAAc,eAAe,MAAM,UAAUA,GAAE,IAAIA,GAAE,GAAG,GAC5E,eAAe;AAAA,YACjB,GAAG;AAAA,YACH,GAAG;AAAA,UACL;AACA,cAAI,cAAc,CAAC,mBAAmB;AACpC,gBAAI,aAAa,MAAM;AACrB,kBAAI,mBAAmB,MAAM,eAAeA,IAAG,MAAM,IAAI;AACzD,kBAAI,iBAAiB,OAAO,MAAM;AAChC,gBAAAA,GAAE,MAAM,iBAAiB,IAAI;AAAA,cAC/B,OAAO;AACL,oBAAI,CAAC,iBAAiB,UAAUA,GAAE,cAAc,QAAQ;AACtD,kBAAAA,GAAE,MAAMA,GAAE;AACV,kBAAAA,GAAE,WAAW;AAAA,gBACf;AAAA,cACF;AAAA,YACF;AAAA,UACF,WAAW,cAAc,mBAAmB;AAC1C,2BAAe,MAAM,4BAA4BA,GAAE,aAAa;AAAA,UAClE;AACA,cAAI,aAAa,QAAQ,CAAC,mBAAmB;AAC3C,kBAAM,SAAS,aAAa,WAAW,UAAU,SAAS,OAAO,OAAOA,GAAE,EAAE;AAAA,UAC9E,OAAO;AACL,YAAAA,GAAE,YAAY;AAAA,UAChB;AACA,cAAIA,GAAE,UAAU;AACd,kBAAM,SAAS,YAAYA,GAAE,IAAIA,GAAE,GAAG;AAAA,UACxC;AACA,UAAAA,GAAE,eAAe,MAAM,SAAS,mBAAmBA,GAAE,IAAIA,GAAE,IAAI,IAAI,aAAa,GAAGA,GAAE,IAAI,IAAI,aAAa,CAAC;AAC3G,gBAAM,SAAS,YAAYA,GAAE,IAAI,aAAa;AAC9C,gBAAM,SAAS,OAAO;AAAA,YACpB,QAAQA,GAAE;AAAA,UACZ,CAAC,EAAE,YAAY,MAAM,SAAS,uBAAuB,MAAM,MAAM,SAAS,4BAA4B,IAAI;AAC1G,gBAAM,SAAS,OAAO;AAAA,YACpB,QAAQA,GAAE;AAAA,UACZ,CAAC,EAAE,YAAY,MAAM,SAAS,uBAAuB,MAAM,MAAM,SAAS,4BAA4B,IAAI;AAAA,QAC5G,CAAC;AACD,YAAI,kBAAkB,CAAC,EAAE,iBAAiB,MAAM;AAC9C,cAAI,eAAe,IAAI;AACvB,cAAI,iBAAiB,kBAAkB,CAAC,EAAE,eAAe;AACvD,gBAAI,kBAAkBoB,QAAO,KAAK,eAAe,IAAI;AACrD,gBAAI,kBAAkB,CAAC,EAAE,cAAc,OAAO;AAC5C,kBAAI,KAAK,KAAK,SAAS,YAAY,KAAK,SAAS,oBAAoB,YAAY,CAAC;AAClF,kBAAI,KAAK,KAAK,SAAS,YAAY,KAAK,SAAS,oBAAoB,kBAAkB,CAAC,EAAE,aAAa,CAAC;AACxG,kBAAI8B,KAAI;AAAA,gBACN,GAAG,GAAG,IAAI9B,QAAO,IAAI,IAAI,GAAG;AAAA,gBAC5B,GAAG,GAAG,IAAIA,QAAO,IAAI,IAAI,GAAG;AAAA,cAC9B;AACA,8BAAgB,MAAM,OAAO8B,GAAE,IAAI;AACnC,8BAAgB,MAAM,MAAMA,GAAE,IAAI;AAClC,mBAAK,SAAS,WAAW,eAAe;AAAA,YAC1C;AAAA,UACF;AAAA,QACF;AACA,aAAK,SAAS,KAAK,iBAAiB;AAAA,UAClC,UAAU;AAAA,UACV,GAAG9B,QAAO;AAAA,UACV,IAAI;AAAA,UACJ,SAAS,KAAK;AAAA,QAChB,CAAC;AACD,aAAK,SAAS;AAAA,MAChB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW;AACzB,YAAI,SAAS;AACb,gBAAQ,KAAK,iBAAiB,SAAU,UAAU;AAChD,iBAAO,SAAS,YAAY,SAAS,IAAI,iBAAiB;AAC1D,iBAAO,SAAS,YAAY,SAAS,IAAI,gBAAgB;AAAA,QAC3D,CAAC;AACD,aAAK,0BAA0B;AAC/B,aAAK,gBAAgB,SAAS;AAC9B,aAAK,SAAS,iBAAiB;AAC/B,aAAK,cAAc;AACnB,aAAK,eAAe,MAAM;AAC1B,aAAK,eAAe;AACpB,aAAK,yBAAyB,MAAM;AACpC,aAAK,uBAAuB,MAAM;AAClC,aAAK,mCAAmC,MAAM;AAC9C,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AAAA,MAAC;AAAA,IAC3B,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,MAAM;AACzB,aAAK,OAAO;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAOA,SAAQ;AAC7B,YAAI,SAAS;AACb,YAAI,KAAKA,QAAO,KAAK,eAAe;AACpC,YAAIgC,MAAK,KAAK,SAAS,MAAM,EAAE;AAC/B,YAAI,WAAWhC,QAAO;AACtB,YAAI,SAAS,KAAK,SAAS,SAAS,YAAYgC,GAAE;AAClD,YAAI,KAAK;AAAA,UACP,GAAG,SAAS;AAAA,UACZ,GAAG,SAAS;AAAA,QACd;AACA,aAAK,oBAAoB,SAAS;AAClC,YAAI,KAAK,eAAe,MAAM;AAC5B,aAAG,KAAK,KAAK,YAAY;AACzB,aAAG,KAAK,KAAK,YAAY;AAAA,QAC3B;AACA,YAAI,OAAO,SAASQ,MAAKpC,KAAI,QAAQ,wBAAwB;AAC3D,cAAI,wBAAwB;AAC1B,gBAAI,gCAAgC,oBAAI,IAAI;AAC5C,oBAAQ,OAAO,iBAAiB,SAAU,UAAU;AAClD,kBAAI,CAAC,8BAA8B,IAAI,SAAS,MAAM,EAAE,KAAK,WAAW,QAAQ,SAAS,CAAC,GAAG;AAC3F,oBAAI,SAAS,UAAU,OAAO,yBAAyB;AACrD,yBAAO,SAAS,SAAS,SAAS,IAAI,gBAAgB;AAAA,gBACxD;AACA,uBAAO,oBAAoB,KAAK;AAAA,kBAC9B;AAAA,kBACA,qBAAqBJ,QAAO,KAAK,eAAe,IAAI;AAAA,kBACpD,GAAG;AAAA,gBACL,CAAC;AACD,wBAAQ,OAAO,SAAS,aAAa,aAAa,SAAS,KAAK,GAAG,SAAUyC,IAAG;AAC9E,yBAAO,8BAA8B,IAAIA,GAAE,EAAE;AAAA,gBAC/C,CAAC;AAAA,cACH,OAAO;AACL,uBAAO,SAAS,YAAY,SAAS,IAAI,gBAAgB;AAAA,cAC3D;AAAA,YACF,CAAC;AAAA,UACH;AACA,iBAAO,SAAS,mBAAmBrC,KAAI,OAAO,GAAG,OAAO,CAAC;AACzD,iBAAO,SAAS,KAAK,iBAAiB;AAAA,YACpC,IAAIA;AAAA,YACJ,GAAGJ,QAAO;AAAA,YACV,KAAK;AAAA,cACH,GAAG,OAAO;AAAA,cACV,GAAG,OAAO;AAAA,YACZ;AAAA,YACA,kBAAkB,OAAO;AAAA,YACzB,SAAS,OAAO;AAAA,UAClB,CAAC;AAAA,QACH;AACA,YAAI,WAAW;AAAA,UACb,GAAG,GAAG;AAAA,UACN,GAAG,GAAG;AAAA,UACN,GAAG,OAAO;AAAA,UACV,GAAG,OAAO;AAAA,QACZ;AACA,aAAK,IAAI,UAAU,IAAI;AACvB,aAAK,eAAe,gBAAgB,UAAU,KAAK,kBAAkB,SAAUI,KAAI4B,KAAI1D,IAAGwC,IAAG;AAC3F,eAAKV,KAAIU,IAAG,KAAK;AAAA,QACnB,CAAC;AACD,aAAK,yBAAyB,QAAQ,SAAUE,IAAG0B,IAAG;AACpD,cAAIpE,KAAI,OAAO,uBAAuB,IAAIoE,EAAC;AAC3C,cAAI,KAAK;AAAA,YACP,GAAG,SAAS,IAAI1B,GAAE,CAAC,EAAE;AAAA,YACrB,GAAG,SAAS,IAAIA,GAAE,CAAC,EAAE;AAAA,YACrB,GAAG1C,GAAE;AAAA,YACL,GAAGA,GAAE;AAAA,UACP;AACA,UAAA0C,GAAE,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI;AACzB,UAAAA,GAAE,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI;AACxB,eAAKA,GAAE,CAAC,GAAG,IAAI,KAAK;AAAA,QACtB,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,4BAA4B,OAAO;AACjD,YAAI,oBAAoB,KAAK,SAAS,YAAY,MAAM,EAAE;AAC1D,YAAI,cAAc,MAAM;AACxB,YAAI,gBAAgB,MAAM,IAAI;AAC5B,cAAI,WAAW,KAAK,SAAS,YAAY,WAAW;AACpD,4BAAkB,KAAK,SAAS;AAChC,4BAAkB,KAAK,SAAS;AAAA,QAClC;AACA,YAAI,MAAM,GAAG,qBAAqB;AAChC,cAAI,iBAAiB,KAAK,4BAA4B,MAAM,GAAG,mBAAmB;AAClF,4BAAkB,KAAK,eAAe;AACtC,4BAAkB,KAAK,eAAe;AAAA,QACxC;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQhB,SAAQ;AAC9B,YAAI,SAAS;AACb,YAAI,KAAKA,QAAO,KAAK,eAAe;AACpC,YAAI,WAAW,KAAK,SAAS,YAAY,EAAE;AAC3C,aAAK,mBAAmB;AAAA,UACtB,GAAGA,QAAO,IAAI;AAAA,UACd,GAAGA,QAAO,IAAI;AAAA,QAChB;AACA,YAAI,GAAG,qBAAqB;AAC1B,eAAK,cAAc,KAAK,4BAA4B,GAAG,mBAAmB;AAC1E,eAAK,0BAA0B,GAAG;AAAA,QACpC;AACA,YAAI,OAAO;AACX,YAAI,KAAK,GAAG,aAAa,uBAAuB;AAChD,YAAI,KAAK,SAAS,sBAAsB,SAAS,MAAM,QAAQ,OAAO,SAAS;AAC7E,iBAAO;AAAA,QACT;AACA,YAAI,MAAM;AACR,eAAK,gBAAgB,SAAS;AAC9B,eAAK,oBAAoB,SAAS;AAClC,eAAK,SAAS,iBAAiB;AAC/B,cAAI,kBAAkBA,QAAO,KAAK,eAAe,IAAI,GACjD,cAAc,gBAAgB,iBAAiB,wBAAwB,GACvE,YAAY,aAAa,eAAe,GACxC2C,KAAI,CAAC;AACT,gBAAM,UAAU,KAAK,MAAMA,IAAG,WAAW;AACzC,gBAAM,UAAU,KAAK,MAAMA,IAAG,SAAS;AACvC,eAAK,eAAe,gBAAgB,SAAU/D,IAAG;AAC/C,mBAAO+D,GAAE,QAAQ/D,GAAE,GAAG,MAAM;AAAA,UAC9B,CAAC;AACD,eAAK,eAAe,oBAAoB;AACxC,cAAI,OAAO,SAAS4D,MAAK,KAAK,WAAW,qBAAqB;AAC5D,gBAAI,CAAC,IAAI,mBAAmB,OAAO,SAAS,mBAAmB;AAC7D,kBAAI,gBAAgB,CAAC,IAAI;AACzB,kBAAI,sBAAsB,iBAAiB,IAAI,oBAAoB,iBAAiB;AACpF,kBAAI,0BAA0B,CAAC,kBAAkB,IAAI,oBAAoB,SAAS,IAAI,oBAAoB,cAAc;AACxH,kBAAI,iBAAiB,uBAAuB,yBAAyB;AACnE,wBAAQ,OAAO,SAAS,aAAa,UAAU,GAAG,SAAU,OAAO;AACjE,sBAAI,eAAe,IAAI;AACvB,sBAAI,MAAM,cAAc,SAAS,MAAM,YAAY,SAAS,IAAI,kBAAkB,SAAS,CAAC,OAAO,SAAS,aAAa,aAAa,OAAO,YAAY,GAAG;AAC1J,wBAAI,UAAU,MAAM,IAChB,YAAY,OAAO,SAAS,MAAM,OAAO,GACzC5D,KAAI,OAAO,SAAS,SAAS,YAAY,SAAS,GAClD,eAAe;AAAA,sBACjB,GAAGA,GAAE;AAAA,sBACL,GAAGA,GAAE;AAAA,sBACL,GAAGA,GAAE;AAAA,sBACL,GAAGA,GAAE;AAAA,oBACP;AACA,wBAAI,gBAAgB;AAAA,sBAClB,IAAI;AAAA,sBACJ,GAAG;AAAA,sBACH;AAAA,oBACF;AACA,2BAAO,gBAAgB,KAAK,aAAa;AACzC,wBAAI,UAAU,OAAO,yBAAyB;AAC5C,6BAAO,SAAS,SAAS,SAAS,iBAAiB;AAAA,oBACrD;AAAA,kBACF;AAAA,gBACF,CAAC;AACD,uBAAO,gBAAgB,KAAK,SAAU+D,IAAG7B,IAAG;AAC1C,sBAAI,OAAO,SAAS,aAAa,aAAa6B,GAAE,OAAO7B,GAAE,KAAK,GAAG;AAC/D,2BAAO;AAAA,kBACT,WAAW,OAAO,SAAS,aAAa,WAAWA,GAAE,OAAO6B,GAAE,KAAK,GAAG;AACpE,2BAAO;AAAA,kBACT,OAAO;AACL,2BAAO;AAAA,kBACT;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF;AACA,mBAAO,SAAS,OAAO;AAAA,cACrB,QAAQ;AAAA,YACV,CAAC,EAAE,SAAS,OAAO,SAAS,uBAAuB,MAAM,OAAO,SAAS,4BAA4B,IAAI;AACzG,mBAAO,SAAS,OAAO;AAAA,cACrB,QAAQ;AAAA,YACV,CAAC,EAAE,SAAS,OAAO,SAAS,uBAAuB,MAAM,OAAO,SAAS,4BAA4B,IAAI;AACzG,mBAAO,OAAO,SAAS,KAAKC,mBAAkB;AAAA,cAC5C,IAAI;AAAA,cACJ,GAAG5C,QAAO;AAAA,cACV,kBAAkB,OAAO;AAAA,cACzB,KAAK,OAAO;AAAA,cACZ;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH;AACA,cAAI,OAAO,KAAK,SAAS,MAAM,EAAE;AACjC,eAAK,oBAAoB,KAAK,yBAAyB,IAAI;AAC3D,cAAI,KAAK,qBAAqB,CAAC,wBAAwB,KAAK,mBAAmB,EAAE,GAAG;AAClF,iBAAK,oBAAoB;AAAA,UAC3B;AACA,cAAI,kBAAkB,KAAK,EAAE;AAC7B,cAAI,oBAAoB,OAAO;AAC7B,iBAAK,SAAS;AACd,mBAAO;AAAA,UACT,OAAO;AACL,iBAAK,eAAe;AAAA,UACtB;AACA,cAAI,KAAK,qBAAqB,MAAM;AAClC,iBAAK,yBAAyB,MAAM;AACpC,iBAAK,uBAAuB,MAAM;AAClC,iBAAK,kBAAkB,QAAQ,QAAQ,SAAU,KAAK;AACpD,kBAAI,KAAK,OAAO,SAAS,SAAS,YAAY,IAAI,IAAI;AACtD,qBAAO,yBAAyB,IAAI,IAAI,MAAM,CAAC;AAAA,gBAC7C,GAAG,GAAG,IAAI,SAAS;AAAA,gBACnB,GAAG,GAAG,IAAI,SAAS;AAAA,cACrB,GAAG,IAAI,EAAE,CAAC;AACV,qBAAO,uBAAuB,IAAI,IAAI,MAAM,EAAE;AAC9C,qBAAO,mCAAmC,IAAI,IAAI,MAAM;AAAA,gBACtD,GAAG,GAAG;AAAA,gBACN,GAAG,GAAG;AAAA,cACR,CAAC;AACD,mBAAK,IAAI,IAAI,OAAO,mBAAmB,GAAG;AAAA,YAC5C,CAAC;AAAA,UACH;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,MAAM;AACnC,YAAI,SAAS;AACb,YAAI,UAAU,oBAAoB,KAAK,UAAU,IAAI;AACrD,YAAI,YAAY,KAAK,cAAc,QAAQ,EAAE;AAC7C,YAAI,aAAa,MAAM;AACrB,sBAAY;AAAA,YACV,IAAI,QAAQ;AAAA,YACZ,SAAS,oBAAI,IAAI;AAAA,UACnB;AACA,eAAK,cAAc,QAAQ,EAAE,IAAI;AAAA,QACnC;AACA,iBAAS,OAAO,UAAU,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACzG,cAAI,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,QAChC;AACA,aAAK,oBAAoB,MAAM,MAAM,GAAG;AACxC,gBAAQ,KAAK,SAAU,IAAI;AACzB,cAAI,OAAO,OAAO,SAAS,MAAM,EAAE;AACnC,oBAAU,QAAQ,IAAI;AAAA,YACpB;AAAA,YACA;AAAA,YACA,QAAQ,QAAQ;AAAA,UAClB,CAAC;AACD,iBAAO,yBAAyB,IAAI,IAAI;AAAA,QAC1C,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB;AACpC,YAAI,SAAS;AACb,iBAAS,QAAQ,UAAU,QAAQ,MAAM,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC5F,cAAI,KAAK,IAAI,UAAU,KAAK;AAAA,QAC9B;AACA,gBAAQ,KAAK,SAAU,IAAI;AACzB,cAAIgC,MAAK,OAAO,SAAS,MAAM,EAAE;AACjC,cAAI,YAAY,OAAO,yBAAyBA,GAAE;AAClD,cAAI,aAAa,MAAM;AACrB,gBAAI1D,KAAI,oBAAI,IAAI;AAChB,sBAAU,QAAQ,QAAQ,SAAU,QAAQ;AAC1C,kBAAI,OAAO,OAAO,IAAI;AACpB,gBAAAA,GAAE,IAAI,MAAM;AAAA,cACd;AAAA,YACF,CAAC;AACD,sBAAU,UAAUA;AACpB,mBAAO,OAAO,yBAAyB0D,GAAE;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBa,SAAQ;AACxC,YAAI,SAAS;AACb,iBAAS,QAAQ,UAAU,QAAQ,MAAM,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAChH,cAAI,QAAQ,CAAC,IAAI,UAAU,KAAK;AAAA,QAClC;AACA,YAAI,aAAa,IAAI,IAAI,SAAU,IAAI;AACrC,iBAAO,OAAO,SAAS,MAAM,EAAE;AAAA,QACjC,CAAC;AACD,gBAAQ,YAAY,SAAUb,KAAI;AAChC,cAAI,YAAY,OAAO,yBAAyBA,GAAE;AAClD,cAAI,aAAa,MAAM;AACrB,gBAAI,SAAS,uBAAuB,UAAU,SAAS,SAAU3D,IAAG;AAClE,qBAAOA,GAAE,SAAS2D;AAAA,YACpB,CAAC;AACD,gBAAI,UAAU,MAAM;AAClB,qBAAO,SAASa;AAAA,YAClB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAeC,OAAM;AACnC,YAAI,SAAS;AACb,YAAI,YAAY,KAAK,cAAcA,KAAI;AACvC,YAAI,aAAa,MAAM;AACrB,oBAAU,QAAQ,QAAQ,SAAU,QAAQ;AAC1C,mBAAO,OAAO,yBAAyB,OAAO,IAAI;AAAA,UACpD,CAAC;AACD,oBAAU,QAAQ,MAAM;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe9C,SAAQ,yBAAyB,6BAA6B;AAC3F,YAAI,MAAMA,QAAO;AACjB,YAAI,mBAAmB;AAAA,UACrB,QAAQ;AAAA,UACR,KAAK;AAAA,QACP;AACA,YAAI,+BAA+B,CAAC,eAAe,KAAK,UAAU,KAAKA,QAAO,GAAG,GAAG;AAClF,cAAI,QAAQ,IAAI;AAChB,cAAI,MAAM,OAAO;AACf,gBAAI,IAAI,iBAAiB;AACvB,mBAAK,SAAS,YAAY,IAAI,aAAa;AAAA,YAC7C,OAAO;AACL,oBAAM,OAAOA,QAAO,IAAI,IAAI;AAAA,YAC9B;AACA,6BAAiB,SAAS;AAAA,UAC5B,WAAW,MAAM,QAAQ;AACvB,6BAAiB,MAAM,KAAK,SAAS,aAAa,OAAOA,QAAO,IAAI,uBAAuB;AAC3F,gBAAI,IAAI,iBAAiB;AACvB,oBAAM,YAAY,IAAI,aAAa;AAAA,YACrC,OAAO;AACL,oBAAM,OAAOA,QAAO,EAAE;AAAA,YACxB;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOsC;AAAA,EACT,EAAE;AAEF,MAAI,gBAAgB,CAAC;AACrB,MAAI,oBAAoB,CAAC;AACzB,MAAI,WAAW,CAAC;AAChB,MAAI,kBAAkB;AAAA,IACpB,KAAK,SAASZ,KAAI,IAAIoB,OAAM9C,SAAQ;AAClC,UAAIV,KAAI,cAAcwD,KAAI;AAC1B,UAAI,CAACxD,IAAG;AACN,cAAM;AAAA,UACJ,SAAS,qCAAqCwD,QAAO;AAAA,QACvD;AAAA,MACF,OAAO;AACL,eAAO,IAAIxD,GAAE,IAAIU,OAAM;AAAA,MACzB;AAAA,IACF;AAAA,IACA,OAAO,SAAS+C,OAAM,KAAK;AACzB,UAAI,UAAU,SAAS,IAAI,IAAI;AAC/B,aAAO,gBAAgB,IAAI,IAAI,UAAU,IAAI,MAAM,QAAQ,UAAU,GAAG,CAAC;AAAA,IAC3E;AAAA,IACA,SAAS,SAAS,QAAQ,UAAU,aAAa,aAAa,eAAe;AAC3E,UAAIC,KAAI,kBAAkB,SAAS,IAAI;AACvC,UAAIA,MAAK,MAAM;AACb,eAAOA,GAAE,UAAU,aAAa,aAAa,aAAa;AAAA,MAC5D,OAAO;AACL,YAAI,kEAAkE,SAAS,IAAI;AAAA,MACrF;AAAA,IACF;AAAA,IACA,iBAAiB,SAAS,gBAAgB,KAAK;AAC7C,eAAS,IAAI,IAAI,IAAI;AACrB,oBAAc,IAAI,IAAI,IAAI,IAAI;AAC9B,wBAAkB,IAAI,IAAI,IAAI,IAAI;AAAA,IACpC;AAAA,EACF;AAEA,MAAI,yBAAyB,WAAY;AACvC,aAASC,wBAAuB,UAAUjD,SAAQ;AAChD,MAAAP,iBAAgB,MAAMwD,uBAAsB;AAC5C,WAAK,WAAW;AAChB,MAAAvD,iBAAgB,MAAM,UAAU,MAAM;AACtC,MAAAA,iBAAgB,MAAM,KAAK,MAAM;AACjC,MAAAA,iBAAgB,MAAM,KAAK,MAAM;AACjC,MAAAA,iBAAgB,MAAM,KAAK,MAAM;AACjC,MAAAA,iBAAgB,MAAM,KAAK,MAAM;AACjC,MAAAA,iBAAgB,MAAM,iBAAiB,MAAM;AAC7C,MAAAA,iBAAgB,MAAM,UAAU,aAAa,CAAC;AAC9C,MAAAA,iBAAgB,MAAM,WAAW,CAAC,CAAC;AACnC,MAAAA,iBAAgB,MAAM,YAAY,MAAM;AACxC,MAAAA,iBAAgB,MAAM,QAAQ,MAAM;AACpC,MAAAM,UAASA,WAAU,CAAC;AACpB,WAAK,WAAW,SAAS;AACzB,UAAI,SAAS,UAAU;AACrB,aAAK,QAAQ,KAAK,SAAS,QAAQ;AAAA,MACrC;AACA,UAAIA,QAAO,UAAU;AACnB,aAAK,QAAQ,KAAKA,QAAO,QAAQ;AAAA,MACnC;AAAA,IACF;AACA,IAAAL,cAAasD,yBAAwB,CAAC;AAAA,MACpC,KAAK;AAAA,MACL,OAAO,SAAS/C,UAAS8C,IAAG;AAC1B,aAAK,QAAQ,KAAKA,EAAC;AACnB,aAAK,SAAS,iBAAiB,KAAK,UAAUA,EAAC;AAAA,MACjD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASpC,aAAYoC,IAAG;AAC7B,aAAK,UAAU,KAAK,QAAQ,OAAO,SAAU,IAAI;AAC/C,iBAAO,OAAOA;AAAA,QAChB,CAAC;AACD,aAAK,SAAS,oBAAoB,KAAK,UAAUA,EAAC;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASE,SAAQ,aAAa,aAAa,eAAe;AAC/D,aAAK,gBAAgB,gBAAgB,QAAQ,MAAM,aAAa,aAAa,aAAa;AAC1F,aAAK,OAAO,OAAO,KAAK;AACxB,aAAK,OAAO,OAAO,KAAK;AACxB,aAAK,OAAO,OAAO,KAAK,IAAI,KAAK;AACjC,aAAK,OAAO,OAAO,KAAK,IAAI,KAAK;AAAA,MACnC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,YAAWnC,IAAG;AAC5B,aAAK,SAAS,mBAAmB,KAAK,UAAUA,EAAC;AAAA,MACnD;AAAA,IACF,CAAC,CAAC;AACF,WAAOiC;AAAA,EACT,EAAE;AAEF,MAAI;AAAJ,MAAgB;AAAhB,MAAmC;AACnC,MAAI;AACJ,GAAC,SAAUG,aAAY;AACrB,IAAAA,YAAW,KAAK,IAAI;AACpB,IAAAA,YAAW,MAAM,IAAI;AACrB,IAAAA,YAAW,OAAO,IAAI;AACtB,IAAAA,YAAW,QAAQ,IAAI;AAAA,EACzB,GAAG,eAAe,aAAa,CAAC,EAAE;AAClC,MAAI,MAAM,WAAW;AACrB,MAAI,OAAO,WAAW;AACtB,MAAI,QAAQ,WAAW;AACvB,MAAI,SAAS,WAAW;AACxB,MAAI,eAAe,CAAC,MAAM,KAAK;AAC/B,MAAI,eAAe,CAAC,KAAK,MAAM;AAC/B,MAAI,4BAA4B,WAAY;AAC1C,aAASC,2BAA0B,UAAU,SAAS,WAAW;AAC/D,MAAA5D,iBAAgB,MAAM4D,0BAAyB;AAC/C,WAAK,WAAW;AAChB,WAAK,UAAU;AACf,MAAA3D,iBAAgB,MAAM,cAAc,IAAI;AACxC,MAAAA,iBAAgB,MAAM,gBAAgB,MAAM;AAC5C,MAAAA,iBAAgB,MAAM,aAAa,MAAM;AACzC,MAAAA,iBAAgB,MAAM,aAAa,CAAC,CAAC;AACrC,MAAAA,iBAAgB,MAAM,mBAAmB,CAAC;AAC1C,MAAAA,iBAAgB,MAAM,UAAU,KAAK;AACrC,MAAAA,iBAAgB,MAAM,YAAY,EAAE;AACpC,MAAAA,iBAAgB,MAAM,aAAa,IAAI;AACvC,MAAAA,iBAAgB,MAAM,QAAQ,UAAU;AACxC,MAAAA,iBAAgB,MAAM,MAAMf,MAAK,CAAC;AAClC,MAAAe,iBAAgB,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;AAC3C,MAAAA,iBAAgB,MAAM,QAAQ,MAAM;AACpC,WAAK,OAAO,SAAS,SAAS,YAAY,SAAS;AACnD,WAAK,UAAU,KAAK;AAAA,QAClB,GAAG;AAAA,QACH,GAAG;AAAA,QACH,IAAI,KAAK,YAAY,CAAC;AAAA,QACtB,IAAI,KAAK,YAAY,CAAC;AAAA,QACtB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK,KAAK,YAAY,CAAC;AAAA,QACvB,KAAK,KAAK,YAAY,CAAC;AAAA,QACvB,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AACA,IAAAC,cAAa0D,4BAA2B,CAAC;AAAA,MACvC,KAAK;AAAA,MACL,OAAO,SAAS,6BAA6B;AAC3C,aAAK,SAAS,OAAO,qBAAqB,MAAM,CAAC,KAAK,UAAU,CAAC,EAAE,IAAI,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC;AAAA,MAC9F;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,UAAU;AAC7B,aAAK,cAAc,KAAK,SAAS,OAAO,uBAAuB,QAAQ;AACvE,aAAK,UAAU,CAAC,EAAE,KAAK,KAAK,YAAY,CAAC;AACzC,aAAK,UAAU,CAAC,EAAE,KAAK,KAAK,YAAY,CAAC;AACzC,aAAK,2BAA2B;AAAA,MAClC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,MAAM;AACpB,aAAK,cAAc;AACnB,aAAK,UAAU,CAAC,EAAE,KAAK,KAAK,UAAU,CAAC,EAAE;AACzC,aAAK,UAAU,CAAC,EAAE,KAAK,KAAK,UAAU,CAAC,EAAE;AACzC,aAAK,2BAA2B;AAAA,MAClC;AAAA,IACF,CAAC,CAAC;AACF,WAAOA;AAAA,EACT,EAAE;AACF,MAAI,aAAa,aAAa,CAAC,GAAG3D,iBAAgB,YAAY,KAAK,MAAM,GAAGA,iBAAgB,YAAY,OAAO,IAAI,GAAGA,iBAAgB,YAAY,MAAM,KAAK,GAAGA,iBAAgB,YAAY,QAAQ,GAAG,GAAG;AAC1M,MAAI,oBAAoB,oBAAoB,CAAC,GAAGA,iBAAgB,mBAAmB,KAAK,KAAK,GAAGA,iBAAgB,mBAAmB,OAAO,MAAM,GAAGA,iBAAgB,mBAAmB,MAAM,GAAG,GAAGA,iBAAgB,mBAAmB,QAAQ,IAAI,GAAG;AACpP,MAAI,wBAAwB,wBAAwB,CAAC,GAAGA,iBAAgB,uBAAuB,KAAK,IAAI,GAAGA,iBAAgB,uBAAuB,OAAO,GAAG,GAAGA,iBAAgB,uBAAuB,MAAM,MAAM,GAAGA,iBAAgB,uBAAuB,QAAQ,KAAK,GAAG;AAC5Q,WAAS,eAAeiD,IAAG;AACzB,WAAOA,GAAE,MAAM,WAAW,IAAI,MAAMA,GAAE,MAAM,CAAC;AAAA,EAC/C;AACA,WAAS,iBAAiBA,IAAG,MAAM;AACjC,WAAOA,GAAE,MAAM,QAAQ,IAAI,MAAM;AAAA,EACnC;AACA,WAAS,YAAYA,IAAG,MAAM;AAC5B,YAAQA,GAAE,YAAY,mBAAmB,sBAAsB,IAAI;AAAA,EACrE;AACA,WAAS,YAAYA,IAAG,MAAM;AAC5B,YAAQA,GAAE,YAAY,uBAAuB,kBAAkB,IAAI;AAAA,EACrE;AACA,WAAS,gBAAgBA,IAAG,MAAM;AAChC,WAAOA,GAAE,cAAc,OAAOA,GAAE,cAAc,OAAO,iBAAiBA,IAAG,IAAI,MAAM,OAAOA,GAAE,eAAe,OAAOA,GAAE,WAAW,QAAQ,IAAI,MAAM;AAAA,EACnJ;AACA,WAAS,WAAWA,IAAG,MAAM;AAC3B,QAAI,iBAAiBA,IAAG,IAAI,GAAG;AAC7B,aAAO;AAAA,IACT,WAAW,iBAAiBA,IAAG,UAAU,IAAI,CAAC,GAAG;AAC/C,aAAO,UAAU,IAAI;AAAA,IACvB,OAAO;AACL,UAAI,aAAa,YAAYA,IAAG,IAAI;AACpC,UAAI,iBAAiBA,IAAG,UAAU,GAAG;AACnC,eAAO;AAAA,MACT,OAAO;AACL,YAAI,aAAa,YAAYA,IAAG,IAAI;AACpC,YAAI,iBAAiBA,IAAG,UAAU,GAAG;AACnC,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,MAAI,OAAO;AAAA,IACT,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAPA,MAQI,UAAU;AAAA,IACZ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAfA,MAgBI,QAAQ;AAAA,IACV,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAvBA,MAwBI,SAAS;AAAA,IACX,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AA/BA,MAgCI,WAAW;AAAA,IACb,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAvCA,MAwCI,YAAY;AAAA,IACd,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AA/CA,MAgDI,cAAc;AAAA,IAChB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAvDA,MAwDI,eAAe;AAAA,IACjB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AA/DA,MAgEI,UAAU;AAAA,IACZ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACA,MAAI,cAAc;AAAA,IAChB,OAAO,CAAC,IAAI;AAAA,IACZ,UAAU,CAAC,OAAO;AAAA,IAClB,QAAQ,CAAC,KAAK;AAAA,IACd,SAAS,CAAC,MAAM;AAAA,IAChB,WAAW,CAAC,QAAQ;AAAA,IACpB,YAAY,CAAC,SAAS;AAAA,IACtB,cAAc,CAAC,WAAW;AAAA,IAC1B,eAAe,CAAC,YAAY;AAAA,IAC5B,UAAU,CAAC,OAAO;AAAA,IAClB,eAAe,CAAC,MAAM,OAAO,SAAS,MAAM;AAAA,EAC9C;AACA,MAAI,wBAAwB;AAAA,IAC1B,cAAc;AAAA,MACZ,OAAO,CAAC,KAAK,MAAM,QAAQ,KAAK;AAAA,IAClC;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO,CAAC,GAAG;AAAA,IACb;AAAA,IACA,mBAAmB;AAAA,MACjB,OAAO,CAAC,KAAK;AAAA,IACf;AAAA,IACA,oBAAoB;AAAA,MAClB,OAAO,CAAC,MAAM;AAAA,IAChB;AAAA,IACA,kBAAkB;AAAA,MAChB,OAAO,CAAC,IAAI;AAAA,IACd;AAAA,IACA,uBAAuB;AAAA,MACrB,OAAO,CAAC,MAAM,KAAK;AAAA,IACrB;AAAA,IACA,uBAAuB;AAAA,MACrB,OAAO,CAAC,KAAK,MAAM;AAAA,IACrB;AAAA,EACF;AACA,WAAS,eAAeG,OAAM9C,SAAQ;AACpC,IAAAA,UAASA,WAAU,CAAC;AACpB,QAAI8C,UAAS,gBAAgB,WAAW;AACtC,aAAO,uBAAuB9C,OAAM;AAAA,IACtC;AACA,QAAI2C,KAAI,YAAYG,KAAI;AACxB,QAAIH,MAAK,MAAM;AACb,aAAO,cAAcG,OAAMQ,KAAIX,IAAG,SAAU,IAAI;AAC9C,eAAOrB,QAAO;AAAA,UACZ,KAAK,GAAG;AAAA,UACR,KAAK,GAAG;AAAA,QACV,GAAG,EAAE;AAAA,MACP,CAAC,GAAGtB,OAAM;AAAA,IACZ;AACA,IAAA2C,KAAI,sBAAsBG,KAAI;AAC9B,QAAIH,MAAK,MAAM;AACb,aAAO,wBAAwBG,OAAMH,GAAE,OAAO3C,OAAM;AAAA,IACtD;AACA,UAAM;AAAA,MACJ,SAAS,mCAAmC8C,QAAO;AAAA,IACrD;AAAA,EACF;AACA,WAAS,cAAc,MAAM,WAAW9C,SAAQ;AAC9C,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,IAAIrB,MAAK;AAAA,MACT,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,WAAW,UAAU,SAAS;AAAA,MAC9B,WAAW;AAAA,MACX,UAAUqB,QAAO,YAAY;AAAA,IAC/B;AAAA,EACF;AACA,WAAS,qBAAqB,UAAU,SAAS,WAAW;AAC1D,WAAO,IAAI,0BAA0B,UAAU,SAAS,SAAS;AAAA,EACnE;AACA,MAAI,wBAAwB;AAC5B,WAAS,wBAAwB,MAAM,OAAOA,SAAQ;AACpD,QAAI,KAAK;AAAA,MACP;AAAA,MACA,WAAW,CAAC;AAAA,MACZ,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,IAAIrB,MAAK;AAAA,MACT,UAAUqB,QAAO,YAAY;AAAA,MAC7B,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,WAAW;AAAA,MACX,OAAOA,QAAO,SAAS;AAAA,MACvB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW,EAAEA,QAAO,cAAc;AAAA,MAClC,eAAe;AAAA,IACjB;AACA,WAAO,eAAe,IAAI,uBAAuB;AAAA,MAC/C,KAAK,SAAS0B,OAAM;AAClB,eAAO,KAAK;AAAA,MACd;AAAA,MACA,KAAK,SAAS6B,KAAIrC,IAAG;AACnB,aAAK,gBAAgB,WAAW,MAAMA,EAAC;AAAA,MACzC;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AACA,WAAS,sBAAsB,IAAI;AACjC,WAAO,GAAG,SAAS,KAAK,GAAG,MAAMsC,SAAQ,KAAK,GAAG,WAAW,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,MAAMA,SAAQ,KAAK,SAAS,GAAG,CAAC,CAAC;AAAA,EACnH;AACA,WAAS,8BAA8B,MAAM;AAC3C,QAAI,SAAS,IAAI,GAAG;AAClB,aAAO,eAAe,MAAM,IAAI;AAAA,IAClC,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,UAAI,sBAAsB,IAAI,GAAG;AAC/B,YAAI,QAAQ;AACZ,eAAO,cAAc,MAAM,CAAC;AAAA,UAC1B,GAAG,MAAM,CAAC;AAAA,UACV,GAAG,MAAM,CAAC;AAAA,UACV,IAAI,MAAM,CAAC;AAAA,UACX,IAAI,MAAM,CAAC;AAAA,UACX,MAAM,MAAM,CAAC,KAAK,OAAO,IAAI,MAAM,CAAC;AAAA,UACpC,MAAM,MAAM,CAAC,KAAK,OAAO,IAAI,MAAM,CAAC;AAAA,UACpC,KAAK,MAAM,CAAC;AAAA,UACZ,KAAK,MAAM,CAAC;AAAA,UACZ,KAAK,MAAM,CAAC,KAAK;AAAA,QACnB,CAAC,GAAG;AAAA,UACF,UAAU,MAAM,CAAC,KAAK;AAAA,QACxB,CAAC;AAAA,MACH,OAAO;AACL,YAAI,YAAYF,KAAI,MAAM,SAAU,OAAO;AACzC,cAAI,SAAS,KAAK,GAAG;AACnB,gBAAIX,KAAI,YAAY,KAAK;AACzB,mBAAOA,MAAK,OAAOrB,QAAO;AAAA,cACxB,KAAKqB,GAAE,CAAC,EAAE;AAAA,cACV,KAAKA,GAAE,CAAC,EAAE;AAAA,cACV,KAAK;AAAA,YACP,GAAGA,GAAE,CAAC,CAAC,IAAI;AAAA,UACb,WAAW,sBAAsB,KAAK,GAAG;AACvC,mBAAO;AAAA,cACL,GAAG,MAAM,CAAC;AAAA,cACV,GAAG,MAAM,CAAC;AAAA,cACV,IAAI,MAAM,CAAC;AAAA,cACX,IAAI,MAAM,CAAC;AAAA,cACX,MAAM,MAAM,CAAC,KAAK,OAAO,IAAI,MAAM,CAAC;AAAA,cACpC,MAAM,MAAM,CAAC,KAAK,OAAO,IAAI,MAAM,CAAC;AAAA,cACpC,KAAK,MAAM,CAAC;AAAA,cACZ,KAAK,MAAM,CAAC;AAAA,cACZ,KAAK,MAAM,CAAC,KAAK;AAAA,YACnB;AAAA,UACF;AAAA,QACF,CAAC,EAAE,OAAO,SAAU,IAAI;AACtB,iBAAO,MAAM;AAAA,QACf,CAAC;AACD,eAAO,cAAc,WAAW,WAAW,CAAC,CAAC;AAAA,MAC/C;AAAA,IACF,OAAO;AACL,UAAI,KAAK;AACT,aAAO,eAAe,GAAG,MAAM,GAAG,OAAO;AAAA,IAC3C;AAAA,EACF;AACA,WAAS,gBAAgB,aAAa;AACpC,QAAIc,KAAI,KACJ,OAAO,KAAK,KAAK,IAAI,aACrBd,KAAI,CAAC;AACT,QAAI,UAAU;AACd,aAAS9D,KAAI,GAAGA,KAAI,aAAaA,MAAK;AACpC,UAAIJ,KAAIgF,KAAIA,KAAI,KAAK,IAAI,OAAO,GAC5BjF,KAAIiF,KAAIA,KAAI,KAAK,IAAI,OAAO;AAChC,MAAAd,GAAE,KAAK;AAAA,QACL,GAAGlE;AAAA,QACH,GAAGD;AAAA,QACH,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP,CAAC;AACD,iBAAW;AAAA,IACb;AACA,WAAOmE;AAAA,EACT;AACA,WAAS,MAAM,UAAU,aAAa;AACpC,QAAI,iBAAiB,cAAc,SAAS,QACxCA,KAAI,CAAC,GACL,eAAe,SAASe,cAAa,IAAI,IAAIC,KAAIC,KAAI,kBAAkB,IAAI,IAAI;AACjF,uBAAiB,cAAc;AAC/B,UAAIrD,OAAMoD,MAAK,MAAM,gBACjBnD,OAAMoD,MAAK,MAAM;AACrB,eAAS/E,KAAI,GAAGA,KAAI,gBAAgBA,MAAK;AACvC,QAAA8D,GAAE,KAAK;AAAA,UACL,GAAG,KAAKpC,MAAK1B;AAAA,UACb,GAAG,KAAK2B,MAAK3B;AAAA,UACb,IAAI,MAAM,OAAO,IAAI;AAAA,UACrB,IAAI,MAAM,OAAO,IAAI;AAAA,UACrB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,IACF;AACA,aAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,mBAAa,MAAM,MAAM,SAASA,EAAC,CAAC;AAAA,IACtC;AACA,WAAO8D;AAAA,EACT;AACA,WAAS,eAAe,OAAO,aAAa;AAC1C,QAAIrE,KAAI,CAAC;AACT,aAASO,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,MAAAP,GAAE,KAAK,CAAC,MAAMO,EAAC,EAAE,CAAC,GAAG,MAAMA,EAAC,EAAE,CAAC,GAAG,MAAMA,EAAC,EAAE,CAAC,GAAG,MAAMA,EAAC,EAAE,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAMA,EAAC,EAAE,CAAC,GAAG,MAAMA,EAAC,EAAE,CAAC,CAAC,CAAC;AAAA,IACzG;AACA,WAAO,MAAMP,IAAG,WAAW;AAAA,EAC7B;AACA,WAAS,mBAAmB,aAAa;AACvC,WAAO,eAAe,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,WAAW;AAAA,EACvH;AACA,WAAS,iBAAiB,aAAa;AACrC,WAAO,eAAe,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,WAAW;AAAA,EAC7G;AACA,WAAS,kBAAkB,aAAa;AACtC,WAAO,eAAe,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,WAAW;AAAA,EACnF;AACA,WAAS,SAAS,QAAQ,iBAAiB;AACzC,QAAIwD,KAAI,CAAC,GACLvD,SAAQ,kBAAkB,MAAM,KAAK;AACzC,aAASM,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,KAAK,OAAOA,EAAC,EAAE,IAAI,KACnB,KAAK,OAAOA,EAAC,EAAE,IAAI;AACvB,MAAAiD,GAAE,KAAK;AAAA,QACL,GAAG,OAAO,KAAK,KAAK,IAAIvD,MAAK,IAAI,KAAK,KAAK,IAAIA,MAAK;AAAA,QACpD,GAAG,OAAO,KAAK,KAAK,IAAIA,MAAK,IAAI,KAAK,KAAK,IAAIA,MAAK;AAAA,QACpD,IAAI,OAAOM,EAAC,EAAE;AAAA,QACd,IAAI,OAAOA,EAAC,EAAE;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AACA,WAAOiD;AAAA,EACT;AACA,MAAI,mBAAmB,oBAAI,IAAI;AAC/B,mBAAiB,IAAI,sBAAsB,QAAQ,eAAe;AAClE,mBAAiB,IAAI,sBAAsB,SAAS,eAAe;AACnE,mBAAiB,IAAI,sBAAsB,WAAW,kBAAkB;AACxE,mBAAiB,IAAI,sBAAsB,QAAQ,kBAAkB;AACrE,mBAAiB,IAAI,sBAAsB,SAAS,gBAAgB;AACpE,mBAAiB,IAAI,sBAAsB,UAAU,iBAAiB;AACtE,WAAS,uBAAuB9B,SAAQ;AACtC,IAAAA,UAASA,WAAU,CAAC;AACpB,QAAI,cAAcA,QAAO,eAAe,IACpC,QAAQA,QAAO;AACnB,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AACA,QAAI,CAAC,iBAAiB,IAAI,KAAK,GAAG;AAChC,YAAM,IAAI,MAAM,YAAY,QAAQ,uCAAuC;AAAA,IAC7E;AACA,QAAI,KAAK,iBAAiB,IAAI,KAAK,EAAE,WAAW;AAChD,QAAIA,QAAO,UAAU;AACnB,WAAK,SAAS,IAAIA,QAAO,QAAQ;AAAA,IACnC;AACA,QAAI2C,KAAI,cAAc,gBAAgB,WAAW,IAAI3C,OAAM;AAC3D,QAAI,KAAKsB,QAAOqB,IAAG;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAEA,MAAI,yBAAyB,WAAY;AACvC,aAASkB,wBAAuB,UAAU,KAAK;AAC7C,UAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,MAAApE,iBAAgB,MAAMoE,uBAAsB;AAC5C,WAAK,WAAW;AAChB,WAAK,MAAM;AACX,WAAK,UAAU;AACf,MAAAnE,iBAAgB,MAAM,MAAM,MAAM;AAClC,MAAAA,iBAAgB,MAAM,UAAU,MAAM;AACtC,WAAK,KAAKf,MAAK;AACf,WAAK,SAAS,IAAI,IAAI,UAAU;AAAA,IAClC;AACA,IAAAgB,cAAakE,yBAAwB,CAAC;AAAA,MACpC,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,SAAS;AAClC,aAAK,IAAI,UAAU;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,eAAO,KAAK,IAAI,YAAY;AAAA,MAC9B;AAAA,IACF,CAAC,CAAC;AACF,WAAOA;AAAA,EACT,EAAE;AACF,MAAI,uBAAuB;AAC3B,MAAI,oBAAoB;AACxB,MAAI,2BAA2B;AAC/B,MAAI,2BAA2B;AAC/B,MAAI,qCAAqC;AAEzC,WAAS,sBAAsB,IAAI,UAAU,iBAAiB,eAAe,iBAAiB,UAAU;AACtG,QAAI,iBAAiB,qBAAqB,UAAU,eAAe,eAAe;AAClF,QAAIjF,KAAI;AAAA,MACN,YAAY,GAAG,cAAc;AAAA,MAC7B,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,OAAO,GAAG;AAAA,MACV,UAAU,CAAC,yBAAyB,GAAG,QAAQ,EAAE,KAAK,GAAG;AAAA,IAC3D;AACA,QAAI,YAAY,MAAM;AACpB,UAAI,iBAAiB,UAAU,sBAAsB,GAAG;AACtD,QAAAA,GAAE,mBAAmB;AAAA,MACvB,OAAO;AACL,QAAAA,GAAE,WAAW;AAAA,MACf;AAAA,IACF;AACA,QAAI,iBAAiB,SAAS,sBAAsBA,EAAC;AACrD,aAAS,eAAe,gBAAgB,CAAC,CAAC;AAC1C,WAAO;AAAA,EACT;AACA,WAAS,eAAe,KAAK,KAAK,UAAU,WAAW,QAAQ;AAC7D,QAAIW,KAAI,IAAI,UAAU,IAAI,YACtB,KAAK,OACL,MAAM,UAAU,YAAY,KAAK,QAAQ;AAC7C,aAASuE,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACnC,UAAI,IAAIA,EAAC,MAAMvE,IAAG;AAChB,aAAK;AACL;AAAA,MACF;AAAA,IACF;AACA,WAAO,SAAS,CAAC,KAAK;AAAA,EACxB;AACA,MAAI,gCAAgC,IAAI,mBAAmB,gBAAgB;AAC3E,MAAI,uCAAuC;AAC3C,MAAI,sBAAsB,WAAY;AACpC,aAASwE,qBAAoB,UAAU;AACrC,MAAAtE,iBAAgB,MAAMsE,oBAAmB;AACzC,WAAK,WAAW;AAChB,MAAArE,iBAAgB,MAAM,OAAO,MAAM;AACnC,MAAAA,iBAAgB,MAAM,eAAe,MAAM;AAC3C,MAAAA,iBAAgB,MAAM,uBAAuB,MAAM;AACnD,MAAAA,iBAAgB,MAAM,MAAM,MAAM;AAClC,MAAAA,iBAAgB,MAAM,0BAA0B,MAAM;AACtD,MAAAA,iBAAgB,MAAM,iBAAiB,MAAM;AAC7C,MAAAA,iBAAgB,MAAM,qBAAqB,MAAM;AACjD,MAAAA,iBAAgB,MAAM,mBAAmB;AAAA,QACvC,IAAI;AAAA,QACJ,SAAS;AAAA,MACX,CAAC;AACD,MAAAA,iBAAgB,MAAM,iBAAiB,MAAM;AAC7C,MAAAA,iBAAgB,MAAM,cAAc,MAAM;AAC1C,MAAAA,iBAAgB,MAAM,mBAAmB,MAAM;AAC/C,MAAAA,iBAAgB,MAAM,oBAAoB,MAAM;AAChD,MAAAA,iBAAgB,MAAM,kBAAkB,MAAM;AAC9C,MAAAA,iBAAgB,MAAM,YAAY,MAAM;AACxC,MAAAA,iBAAgB,MAAM,eAAe,MAAM;AAC3C,MAAAA,iBAAgB,MAAM,uBAAuB,CAAC,CAAC;AAC/C,MAAAA,iBAAgB,MAAM,qBAAqB,IAAI;AAC/C,MAAAA,iBAAgB,MAAM,WAAW,MAAM;AACvC,MAAAA,iBAAgB,MAAM,uBAAuB,CAAC,CAAC;AAC/C,MAAAA,iBAAgB,MAAM,kBAAkB,MAAM;AAC9C,MAAAA,iBAAgB,MAAM,gBAAgB,MAAM;AAC5C,MAAAA,iBAAgB,MAAM,oBAAoB,MAAM;AAChD,MAAAA,iBAAgB,MAAM,kBAAkB,MAAM;AAC9C,MAAAA,iBAAgB,MAAM,YAAY,IAAI,cAAc,CAAC;AACrD,UAAI,YAAY,SAAS,aAAa;AACtC,WAAK,mBAAmB,KAAK,kBAAkB,KAAK,IAAI;AACxD,WAAK,iBAAiB,KAAK,gBAAgB,KAAK,IAAI;AACpD,eAAS,GAAG,WAAWW,kBAAiB,0BAA0B,KAAK,gBAAgB;AACvF,eAAS,GAAG,WAAW,eAAe,CAAC,0BAA0B,IAAI,cAAc,CAAC,EAAE,KAAK,GAAG,GAAG,KAAK,cAAc;AAAA,IACtH;AACA,IAAAV,cAAaoE,sBAAqB,CAAC;AAAA,MACjC,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,KAAK,aAAa;AACnD,YAAI,YAAY,KAAK,SAAS,aAAa;AAC3C,YAAI,SAASC,YAAW,aAAa,0BAA0B,WAAW,IAAI;AAC9E,YAAI,IAAI,kBAAkB,MAAM;AAC9B,cAAI,QAAQA,YAAW,aAAa,IAAI,gBAAgB,WAAW,IAAI;AACvE,cAAI,SAAS,MAAM;AACjB,qBAASA,YAAW,MAAM,YAAY,0BAA0B,WAAW,KAAK;AAAA,UAClF;AACA,iBAAO,SAAS;AAAA,QAClB,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB1E,IAAG;AACnC,YAAI;AACJ,YAAI;AACJ,YAAIA,GAAE,UAAU,KAAKA,GAAE,WAAW,GAAG;AACnC;AAAA,QACF;AACA,YAAI,cAAcA,GAAE,UAAUA,GAAE;AAChC,yBAAiB,KAAK,qBAAqBA,EAAC;AAC5C,YAAI,kBAAkB,MAAM;AAC1B,qBAAW,KAAK,mBAAmB,eAAe,IAAI,KAAK,WAAW;AACtE,cAAI,YAAY,QAAQ,SAAS,aAAa,qBAAqB,MAAM,SAAS;AAChF;AAAA,UACF;AAAA,QACF;AACA,YAAI,gBAAgB;AAClB,cAAI,gBAAgBA,GAAE,eAClB;AACJ,cAAI,YAAY,aAAa,qBAAqB,MAAM,SAAS;AAC/D,oBAAQA,EAAC;AACT,iBAAK,oBAAoB;AACzB,kBAAM,eAAe,IAAI;AACzB,gBAAI,IAAI,0BAA0B,QAAQ,CAAC,IAAI,uBAAuB,UAAUA,EAAC,GAAG;AAClF,qBAAO;AAAA,YACT;AACA,gBAAI,OAAO,qBAAqBA,IAAG,UAAU,KAAK,SAAS,WAAW;AACtE,gBAAI,qBAAqB;AAAA,cACvB,SAAS;AAAA,YACX;AACA,YAAAgC,QAAO,oBAAoB,GAAG;AAC9B,+BAAmB,oBAAoB;AACvC,gBAAI,IAAI,OAAO;AACb,iCAAmB,QAAQ,IAAI;AAAA,YACjC,OAAO;AACL,kBAAI,mBAAmB,YAAY,aAAa,mBAAmB;AACnE,kBAAI,oBAAoB,MAAM;AAC5B,mCAAmB,QAAQ;AAAA,cAC7B;AAAA,YACF;AACA,gBAAI,sBAAsB,IAAI,qBAAqB,IAAI,mBAAmB,UAAU,aAAahC,EAAC,IAAI,CAAC;AACvG,iCAAqB2E,OAAM,oBAAoB,mBAAmB;AAClE,gBAAI,mBAAmB,kBAAkB,QAAQ,mBAAmB,kBAAkB,GAAG;AACvF,kBAAI,cAAc,KAAK,SAAS,OAAO;AAAA,gBACrC,QAAQ;AAAA,cACV,CAAC,EAAE;AACH,kBAAI,eAAe,mBAAmB,gBAAgB;AACpD,wBAAQ3E,EAAC;AACT,oBAAI,IAAI,kBAAkB;AACxB,sBAAI,iBAAiB;AAAA,oBACnB,SAAS;AAAA,oBACT,gBAAgB,mBAAmB;AAAA,kBACrC,GAAGA,EAAC;AAAA,gBACN;AACA,gBAAAA,GAAE,4BAA4BA,GAAE,yBAAyB;AACzD,uBAAO;AAAA,cACT;AAAA,YACF;AACA,gBAAI,IAAI,sBAAsB;AAC5B,kBAAI,kBAAkB,IAAI,qBAAqB,UAAU,MAAM,KAAKA,EAAC;AACrE,kBAAI,mBAAmB,MAAM;AAC3B,mCAAmB,SAAS;AAAA,cAC9B;AAAA,YACF;AACA,iBAAK,sBAAsB,mBAAmB,WAAW,KAAK,SAAS,qBAAqB,IAAI,KAAK,SAAS,SAAS,QAAQ,CAAC,IAAI,KAAK,SAAS,SAAS;AAC3J,gBAAI,kBAAkB,KAAK,SAAS,OAAO,cAAc,KAAK,mBAAmB;AACjF,gBAAI,kBAAkB,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;AAC3C,gBAAI,gBAAgB,UAAU,SAAS,GAAG;AACxC,8BAAgB,CAAC,IAAI,gBAAgB,UAAU,CAAC,EAAE;AAClD,8BAAgB,CAAC,IAAI,gBAAgB,UAAU,CAAC,EAAE;AAAA,YACpD,WAAW,gBAAgB,cAAc;AACvC,kBAAIiB,MAAK,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK;AAC1C,kBAAIC,MAAK,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK;AAC1C,8BAAgB,CAAC,IAAID,MAAKC,MAAK,KAAK,IAAI,MAAM,KAAK,IAAI;AACvD,8BAAgB,CAAC,IAAIA,MAAKD,MAAK,KAAK,IAAI,MAAM,KAAK,IAAI;AAAA,YACzD;AACA,+BAAmB,SAAS;AAC5B,+BAAmB,gBAAgB;AACnC,iBAAK,KAAK,KAAK,SAAS,sBAAsB,kBAAkB;AAChE,gBAAI,UAAU,CAAC;AACf,gBAAI,IAAI,SAAS;AACf,uBAAS2D,QAAO,IAAI,SAAS;AAC3B,oBAAIlD,KAAI,YAAY,aAAakD,IAAG;AACpC,oBAAIlD,IAAG;AACL,0BAAQ,IAAI,QAAQkD,IAAG,CAAC,IAAIlD;AAAA,gBAC9B;AAAA,cACF;AACA,mBAAK,GAAG,gBAAgB,OAAO;AAAA,YACjC;AACA,gBAAI,mBAAmB,gBAAgB;AACrC,kBAAI,YAAY,KAAK,GAAG;AACxB,kBAAI,yBAAyB,KAAK,SAAS,eAAe,WAAW,sCAAsC,eAAe,EAAE;AAC5H,kBAAI,0BAA0B,MAAM;AAClC,qBAAK,SAAS,eAAe,WAAW,sCAAsC,eAAe,IAAI,KAAK,EAAE;AACxG,qBAAK,GAAG,gBAAgB;AAAA,cAC1B,OAAO;AACL,qBAAK,GAAG,gBAAgB;AAAA,cAC1B;AAAA,YACF;AACA,0BAAc,4BAA4B,cAAc,6BAA6B,CAAC;AACtF,0BAAc,0BAA0B,KAAK,KAAK,EAAE;AACpD,iBAAK,SAAS,QAAQ,KAAK,GAAG,SAAS,QAAQX,kBAAiBf,IAAG,OAAO;AAAA,UAC5E;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBA,IAAG;AACjC,YAAI,KAAKA,GAAE,iBAAiBA,GAAE;AAC9B,YAAI,GAAG,2BAA2B;AAChC,UAAAuC,MAAK,GAAG,2BAA2B,KAAK,SAAS,oBAAoB,KAAK,KAAK,QAAQ,CAAC;AACxF,aAAG,0BAA0B,SAAS;AAAA,QACxC;AACA,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI;AAC7B,YAAI,OAAO,mBAAmB,IAAI,KAAK,QAAQ,GAC3C,MAAM,eAAe,IAAI,KAAK,QAAQ;AAC1C,aAAK,0BAA0B,MAAM,GAAG;AACxC,aAAK,gBAAgB,QAAQ,MAAM,GAAG;AACtC,eAAO,KAAK,gBAAgB;AAAA,MAC9B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,aAAK,6BAA6B;AAAA,MACpC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,0BAA0B,MAAM,KAAK;AACnD,aAAK,kBAAkB,KAAK,mBAAmB,CAAC;AAChD,YAAIsC,KAAIC,eAAc,aAAa;AAAA,UACjC,UAAU;AAAA,QACZ,CAAC;AACD,aAAK,SAAS,0BAA0BD,EAAC;AACzC,YAAInC,MAAK,KAAK,SAAS,MAAMmC,EAAC;AAC9B,aAAK,SAAS,YAAYA,IAAG,IAAI;AACjC,QAAAA,GAAE,MAAM,QAAQ,IAAI,IAAI;AACxB,QAAAA,GAAE,MAAM,SAAS,IAAI,IAAI;AACzB,aAAK,SAAS,OAAOA,EAAC;AACtB,aAAK,gBAAgB,KAAKnC;AAC1B,aAAK,gBAAgB,UAAUmC;AAC/B,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,+BAA+B;AAC7C,YAAI,KAAK,gBAAgB,SAAS;AAChC,eAAK,SAAS,SAAS,KAAK,gBAAgB,SAAS,IAAI;AACzD,iBAAO,KAAK,gBAAgB;AAC5B,iBAAO,KAAK,gBAAgB;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,YAAInB,KAAI,KAAK,SAAS,aAAa;AACnC,aAAK,SAAS,IAAIA,IAAG,eAAe,KAAK,cAAc;AACvD,aAAK,SAAS,IAAIA,IAAG3C,kBAAiB,KAAK,gBAAgB;AAAA,MAC7D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,MAAM;AAAA,MAAC;AAAA,IAC9B,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,OAAOgE,OAAM;AAClD,aAAK,MAAM,KAAK,SAAS,eAAe;AAAA,UACtC,gBAAgB,KAAK;AAAA,UACrB,gBAAgB,KAAK;AAAA,UACrB,QAAQ,KAAK,GAAG;AAAA,UAChB,QAAQ,KAAK,gBAAgB;AAAA,UAC7B,YAAY,KAAK,GAAG;AAAA,UACpB,iBAAiB,KAAK,GAAG;AAAA,UACzB,WAAW,KAAK,GAAG;AAAA,UACnB,UAAU,KAAK,GAAG;AAAA,UAClB,MAAM,KAAK,GAAG;AAAA,UACd,UAAU,KAAK,GAAG;AAAA,UAClB,YAAY,KAAK,GAAG;AAAA,UACpB;AAAA,UACA,MAAMA;AAAA,QACR,CAAC;AACD,aAAK,IAAI,UAAU;AACnB,aAAK,IAAI,SAAS,KAAK,SAAS,aAAa;AAC7C,aAAK,GAAG,SAAS,KAAK,SAAS,aAAa;AAC5C,aAAK,SAAS,KAAK,uBAAuB,KAAK,GAAG;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,8BAA8B;AAC5C,aAAK,cAAc;AACnB,aAAK,SAAS,SAAS,KAAK,KAAK,KAAK;AACtC,YAAI,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,OAAO,KAAK,GAAG,KAAK,IAAI;AAC9D,aAAK,GAAG,qBAAqB,KAAK,KAAK,MAAM,IAAI;AACjD,aAAK,iBAAiB,cAAc,KAAK,GAAG;AAC5C,aAAK,SAAS,KAAK,uBAAuB,KAAK,GAAG;AAClD,aAAK,SAAS,sBAAsB,KAAK,IAAI,UAAU,SAAS,EAAE,WAAW,KAAK,gBAAgB,IAAI,KAAK,KAAK,KAAK,gBAAgB,SAAS,SAAS;AACvJ,aAAK,IAAI,oBAAoB,KAAK,IAAI,UAAU,SAAS;AACzD,aAAK,IAAI,mBAAmB,KAAK,IAAI,UAAU,SAAS,EAAE;AAC1D,aAAK,IAAI,qBAAqB,KAAK,IAAI,UAAU,SAAS,EAAE;AAC5D,aAAK,IAAI,uBAAuB,cAAc,IAAI,SAAS;AAC3D,aAAK,SAAS,SAAS,KAAK,IAAI,mBAAmB,KAAK;AACxD,aAAK,iBAAiB,oBAAoB,KAAK,IAAI;AACnD,aAAK,iBAAiB,gBAAgB,KAAK,IAAI,kBAAkB,UAAU;AAC3E,aAAK,IAAI,UAAU,SAAS,IAAI,KAAK;AACrC,aAAK,IAAI,SAAS,KAAK,SAAS,aAAa;AAC7C,aAAK,aAAa,KAAK,gBAAgB;AACvC,aAAK,gBAAgB;AACrB,aAAK,SAAS,iBAAiB,KAAK,EAAE;AAAA,MACxC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB;AACjC,YAAI,YAAY;AAChB,YAAI,CAAC,KAAK,GAAG,SAAS;AACpB,sBAAY;AAAA,QACd;AACA,YAAI,KAAK,OAAO,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,mBAAmB;AACvE,sBAAY;AAAA,QACd;AACA,YAAI,KAAK,GAAG,YAAY,KAAK,GAAG,OAAO,KAAK,EAAE,KAAK,OAAO,QAAQ,KAAK,GAAG,sBAAsB;AAC9F,sBAAY;AAAA,QACd;AACA,YAAI,KAAK,OAAO,QAAQ,CAAC,KAAK,IAAI,aAAa,KAAK,EAAE,GAAG;AACvD,cAAI,KAAK,GAAG,OAAO,GAAG;AACpB,wBAAY;AAAA,UACd,OAAO;AACL,iBAAK,MAAM;AAAA,UACb;AAAA,QACF;AACA,YAAI,UAAU,CAAC;AACf,YAAI,aAAa,KAAK,SAAS,eAAe,KAAK,OAAO,OAAO,wBAAwB,+BAA+B;AAAA,UACtH,UAAU,KAAK;AAAA,UACf,QAAQ,KAAK,GAAG;AAAA,UAChB,UAAU,KAAK,GAAG;AAAA,UAClB,YAAY,KAAK;AAAA,QACnB,CAAC;AACD,YAAI,eAAe,OAAO;AACxB,sBAAY;AAAA,QACd,WACSC,SAAQ,UAAU,MAAM,UAAU;AACzC,oBAAU;AACV,UAAAhD,QAAO,SAAS,KAAK,WAAW,CAAC,CAAC;AAAA,QACpC,OAAO;AACL,oBAAU,KAAK,WAAW,CAAC;AAAA,QAC7B;AACA,eAAO,CAAC,WAAW,OAAO;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB,eAAe;AACrD,YAAI,kBAAkB,KAAK,GAAG;AAC9B,YAAI,KAAK,GAAG,YAAY,MAAM;AAC5B,cAAI,MAAM,KAAK,SAAS,6BAA6B,KAAK,GAAG,QAAQ;AACrE,4BAAkB,IAAI,UAAU,CAAC;AAAA,QACnC;AACA,aAAK,mBAAmB,sBAAsB,KAAK,IAAI,iBAAiB,eAAe,KAAK,gBAAgB,SAAS,KAAK,gBAAgB,IAAI,KAAK,QAAQ;AAC3J,aAAK,iBAAiB,KAAK,iBAAiB;AAC5C,aAAK,iBAAiB,gBAAgB;AACtC,aAAK,kBAAkB,KAAK,iBAAiB,SAAS;AACtD,aAAK,aAAa,KAAK,SAAS,MAAM,KAAK,eAAe;AAAA,MAC5D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,eAAe,OAAO;AACrD,YAAI,QAAQ;AACZ,YAAI,eAAe,KAAK,OAAO,KAAK,IAAI,UAAU,CAAC,MAAM,KAAK;AAC9D,YAAI;AACJ,YAAI,oBAAoB,KAAK,SAAS,aAAa,EAAE,iBAAiB,CAAC,KAAK,gBAAgB,KAAK,wBAAwB,KAAK,GAAG,OAAO,WAAW,yBAAyB,GAAG,EAAE,KAAK,EAAE,CAAC;AACzL,gBAAQ,mBAAmB,SAAU,WAAW;AAC9C,eAAK,MAAM,OAAO,QAAQ,cAAc,kBAAkB,cAAc,MAAM,oBAAoB,MAAM,OAAO,QAAQ,CAAC,UAAU,IAAI,SAAS,OAAO,IAAI;AACxJ,gBAAI,gBAAgB,UAAU,IAAI,SAAS,YAAY,CAAC,gBAAgB,UAAU,IAAI,SAAS,UAAU;AACvG,kBAAIQ,KAAI,mBAAmB,WAAW,MAAM,QAAQ,GAChDxD,KAAI,eAAe,WAAW,MAAM,QAAQ;AAChD,6BAAe;AAAA,gBACb,GAAGwD,GAAE;AAAA,gBACL,GAAGA,GAAE;AAAA,gBACL,GAAGxD,GAAE;AAAA,gBACL,GAAGA,GAAE;AAAA,cACP;AACA,oBAAM,oBAAoB,KAAK;AAAA,gBAC7B,IAAI;AAAA,gBACJ,UAAU;AAAA,gBACV,GAAG;AAAA,gBACH,UAAU,UAAU,IAAI;AAAA,gBACxB,KAAK;AAAA,cACP,CAAC;AACD,oBAAM,SAAS,SAAS,WAAW,iBAAiB;AAAA,YACtD;AAAA,UACF;AAAA,QACF,CAAC;AACD,YAAI,cAAc;AAChB,cAAI,YAAY,gBAAgB,KAAK,SAAS,iBAAiB,SAAU,MAAM;AAC7E,mBAAO,KAAK,UAAU,MAAM,KAAK,IAAI,IAAI,SAAS,QAAQ,KAAK,IAAI,IAAI,UAAU,MAAM,GAAG;AAAA,UAC5F,CAAC;AACD,cAAI,aAAa,MAAM;AACrB,gBAAI,cAAc,KAAK,iBAAiB,SAAS;AACjD,oBAAQ,aAAa,SAAU,IAAI;AACjC,kBAAI,GAAG,aAAa,qBAAqB,MAAM,SAAS;AACtD,oBAAI,mBAAmB,GAAG,aAAa,mBAAmB;AAC1D,oBAAI,oBAAoB,QAAQ,qBAAqB,MAAM,GAAG,OAAO;AACnE;AAAA,gBACF;AACA,oBAAIkD,KAAI;AAAA,kBACN,GAAG;AAAA,kBACH;AAAA,gBACF;AACA,gBAAAA,GAAE,WAAWwC,YAAW,IAAI,0BAA0B,MAAM,SAAS,aAAa,GAAG,IAAI;AACzF,oBAAIlC,KAAI,mBAAmBN,GAAE,IAAI,MAAM,QAAQ,GAC3ClD,KAAI,eAAekD,GAAE,IAAI,MAAM,QAAQ;AAC3C,gBAAAA,GAAE,IAAI;AAAA,kBACJ,GAAGM,GAAE;AAAA,kBACL,GAAGA,GAAE;AAAA,kBACL,GAAGxD,GAAE;AAAA,kBACL,GAAGA,GAAE;AAAA,gBACP;AACA,oBAAI,UAAU,IAAI,IAAI,QAAQ,MAAM;AAClC,kBAAAkD,GAAE,OAAO,UAAU,IAAI,IAAI;AAAA,gBAC7B;AACA,gBAAAA,GAAE,MAAM,UAAU;AAClB,sBAAM,oBAAoB,KAAKA,EAAC;AAChC,sBAAM,SAAS,SAASA,GAAE,UAAU,iBAAiB;AAAA,cACvD;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AACL,cAAI,aAAa,mBAAmB,KAAK,SAAS,iBAAiB,SAAU,MAAM;AACjF,mBAAO,KAAK,UAAU;AAAA,UACxB,CAAC;AACD,qBAAW,QAAQ,SAAU,WAAW;AACtC,gBAAI+C,eAAc,MAAM,iBAAiB,SAAS;AAClD,oBAAQA,cAAa,SAAU,IAAI;AACjC,kBAAI,GAAG,aAAa,qBAAqB,MAAM,SAAS;AACtD,oBAAI,mBAAmB,GAAG,aAAa,mBAAmB;AAC1D,oBAAI,oBAAoB,QAAQ,qBAAqB,MAAM,GAAG,OAAO;AACnE;AAAA,gBACF;AACA,oBAAI/C,KAAI;AAAA,kBACN,GAAG;AAAA,kBACH;AAAA,gBACF;AACA,oBAAI,UAAU,IAAI,IAAI,kBAAkB,MAAM;AAC5C,kBAAAA,GAAE,WAAWwC,YAAW,IAAI,UAAU,IAAI,IAAI,gBAAgB,MAAM,SAAS,aAAa,GAAG,IAAI;AAAA,gBACnG;AACA,oBAAIxC,GAAE,YAAY,MAAM;AACtB,kBAAAA,GAAE,WAAWwC,YAAW,IAAI,0BAA0B,MAAM,SAAS,aAAa,GAAG,IAAI;AAAA,gBAC3F;AACA,oBAAI,UAAU,IAAI,IAAI,kBAAkB,SAAS,MAAM,qBAAqB,MAAM,kBAAkB,IAAI,IAAI,kBAAkB,OAAO;AACnI,sBAAIxC,GAAE,aAAa,MAAM,GAAG,SAAS;AACnC;AAAA,kBACF;AAAA,gBACF;AACA,oBAAI,UAAU,IAAI,IAAI,0BAA0B,QAAQ,CAAC,UAAU,IAAI,IAAI,uBAAuBA,GAAE,UAAU,KAAK,GAAG;AACpH;AAAA,gBACF;AACA,oBAAI,iBAAiB,UAAU,IAAI,IAAI;AACvC,oBAAI,kBAAkB,QAAQ,mBAAmB,IAAI;AACnD,sBAAI,MAAM,SAAS,OAAO;AAAA,oBACxB,QAAQA,GAAE;AAAA,kBACZ,CAAC,EAAE,UAAU,gBAAgB;AAC3B;AAAA,kBACF;AAAA,gBACF;AACA,oBAAIM,KAAI,mBAAmB,IAAI,MAAM,QAAQ,GACzCxD,KAAI,eAAe,IAAI,MAAM,QAAQ;AACzC,gBAAAkD,GAAE,IAAI;AAAA,kBACJ,GAAGM,GAAE;AAAA,kBACL,GAAGA,GAAE;AAAA,kBACL,GAAGxD,GAAE;AAAA,kBACL,GAAGA,GAAE;AAAA,gBACP;AACA,gBAAAkD,GAAE,MAAM,UAAU;AAClB,oBAAI,UAAU,IAAI,IAAI,QAAQ,MAAM;AAClC,kBAAAA,GAAE,OAAO,UAAU,IAAI,IAAI;AAAA,gBAC7B;AACA,sBAAM,oBAAoB,KAAKA,EAAC;AAChC,sBAAM,SAAS,SAASA,GAAE,UAAU,iBAAiB;AAAA,cACvD;AAAA,YACF,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AACA,aAAK,oBAAoB,KAAK,SAAUmB,IAAG7B,IAAG;AAC5C,cAAI6B,GAAE,SAAS,mBAAmB,CAAC7B,GAAE,SAAS,iBAAiB;AAC7D,mBAAO;AAAA,UACT,WAAW,CAAC6B,GAAE,SAAS,mBAAmB7B,GAAE,SAAS,iBAAiB;AACpE,mBAAO;AAAA,UACT,OAAO;AACL,gBAAI6B,GAAE,SAAS,mBAAmB7B,GAAE,SAAS,iBAAiB;AAC5D,kBAAI,MAAM,SAAS,aAAa,WAAW6B,GAAE,SAAS,eAAe7B,GAAE,SAAS,aAAa,GAAG;AAC9F,uBAAO;AAAA,cACT,WAAW,MAAM,SAAS,aAAa,WAAWA,GAAE,SAAS,eAAe6B,GAAE,SAAS,aAAa,GAAG;AACrG,uBAAO;AAAA,cACT;AAAA,YACF,OAAO;AACL,kBAAIA,GAAE,QAAQ,QAAQ7B,GAAE,QAAQ,MAAM;AACpC,oBAAI6B,GAAE,OAAO7B,GAAE,MAAM;AACnB,yBAAO;AAAA,gBACT,WAAW6B,GAAE,OAAO7B,GAAE,MAAM;AAC1B,yBAAO;AAAA,gBACT;AAAO;AAAA,cACT,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,cAAc;AAC7C,YAAI;AACJ,YAAI,aAAa,WAAW,mBAAmB;AAC7C,cAAIvB,KAAI,KAAK,SAAS,gBAAgB,IAAI,SAAUjB,IAAG;AACrD,mBAAOA,GAAE;AAAA,UACX,CAAC;AACD,UAAAiB,GAAE,KAAK,MAAMA,IAAG,mBAAmB,KAAK,SAAS,gBAAgB,IAAI,SAAUjB,IAAG;AAChF,mBAAOA,GAAE;AAAA,UACX,CAAC,CAAC,CAAC;AACH,UAAAiB,GAAE,KAAK,wBAAwB;AAC/B,gCAAsBA,GAAE,KAAK,GAAG;AAAA,QAClC,WAAW,aAAa,WAAW,sBAAsB;AACvD,gCAAsB,aAAa;AAAA,QACrC,WAAW,aAAa,WAAW,0BAA0B;AAC3D,gCAAsB,KAAK,SAAS,gBAAgB,IAAI,SAAUjB,IAAG;AACnE,mBAAOA,GAAE;AAAA,UACX,CAAC,EAAE,KAAK,GAAG;AAAA,QACb,WAAW,aAAa,WAAW,0BAA0B;AAC3D,gCAAsB,KAAK,SAAS,gBAAgB,IAAI,SAAUA,IAAG;AACnE,mBAAOA,GAAE;AAAA,UACX,CAAC,EAAE,KAAK,GAAG;AAAA,QACb,WAAW,aAAa,WAAW,oCAAoC;AACrE,cAAIkG,MAAK,KAAK,SAAS,gBAAgB,IAAI,SAAUlG,IAAG;AACtD,mBAAOA,GAAE;AAAA,UACX,CAAC;AACD,UAAAkG,IAAG,KAAK,MAAMA,KAAI,mBAAmB,KAAK,SAAS,gBAAgB,IAAI,SAAUlG,IAAG;AAClF,mBAAOA,GAAE;AAAA,UACX,CAAC,CAAC,CAAC;AACH,gCAAsBkG,IAAG,KAAK,GAAG;AAAA,QACnC;AACA,eAAO,KAAK,SAAS,aAAa,EAAE,iBAAiB,mBAAmB;AAAA,MAC1E;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ5F,IAAG;AACzB,aAAK,oBAAoB,SAAS;AAClC,aAAK,oBAAoB;AACzB,aAAK,WAAW;AAChB,YAAIuB,UAASvB,GAAE,KAAK,eAAe;AACnC,aAAK,KAAKuB,QAAO,IAAI;AACrB,YAAI,CAAC,KAAK,IAAI;AACZ,iBAAO;AAAA,QACT;AACA,aAAK,yBAAyB,KAAK,GAAG;AACtC,aAAK,gBAAgB,KAAK,uBAAuB;AACjD,aAAK,MAAM,KAAK,GAAG,kBAAkB;AACrC,YAAI,wBAAwB,KAAK,iBAAiB,GAC9C,yBAAyB,eAAe,uBAAuB,CAAC,GAChE,YAAY,uBAAuB,CAAC,GACpC,UAAU,uBAAuB,CAAC;AACtC,YAAI,cAAc,OAAO;AACvB,eAAK,WAAW;AAChB,iBAAO;AAAA,QACT;AACA,aAAK,SAAS,SAAS,KAAK,IAAI,KAAK;AACrC,aAAK,SAAS,2BAA2B;AACzC,YAAI,KAAK,OAAO,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,GAAG,UAAU;AACrD,eAAK,MAAM;AAAA,QACb;AACA,aAAK,wBAAwB,KAAK,aAAa;AAC/C,aAAK,iBAAiB,KAAK,eAAevB,GAAE,CAAC;AAC7C,YAAI,KAAK,OAAO,MAAM;AACpB,eAAK,uBAAuB,KAAK,GAAG,OAAO,OAAO;AAAA,QACpD,OAAO;AACL,eAAK,4BAA4B;AAAA,QACnC;AACA,aAAK,4BAA4B,KAAK,iBAAiB,KAAK,GAAG;AAC/D,aAAK,SAAS,oBAAoB;AAAA,MACpC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,mBAAmB;AAC/C,aAAK,UAAU,kBAAkB,EAAE,WAAW,CAAC;AAAA,MACjD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAOoB,SAAQ;AAC7B,YAAI,KAAK,UAAU;AACjB,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,gBAAgB,SAAS;AAChC,cAAI,sBAAsB,eAAe,KAAK,iBAAiB,KAAK,QAAQ;AAC5E,eAAK,SAAS,mBAAmB,KAAK,gBAAgB,SAASA,QAAO,IAAI,GAAGA,QAAO,IAAI,CAAC;AACzF,cAAI,eAAe;AAAA,YACjB,GAAGA,QAAO,IAAI;AAAA,YACd,GAAGA,QAAO,IAAI;AAAA,YACd,GAAG,oBAAoB;AAAA,YACvB,GAAG,oBAAoB;AAAA,UACzB,GACI,eACA,KACA;AACJ,mBAASnB,KAAI,GAAGA,KAAI,KAAK,oBAAoB,QAAQA,MAAK;AACxD,gBAAI,WAAW,cAAc,KAAK,oBAAoBA,EAAC,EAAE,CAAC,GAAG;AAC3D,8BAAgB,KAAK,oBAAoBA,EAAC;AAC1C;AAAA,YACF;AAAA,UACF;AACA,cAAI,kBAAkB,KAAK,qBAAqB,KAAK,qBAAqB,MAAM;AAC9E,kBAAM,KAAK,wBAAwB;AACnC,iBAAK,SAAS,YAAY,KAAK,kBAAkB,IAAI,gBAAgB;AACrE,gBAAI,KAAK,kBAAkB,UAAU;AACnC,mBAAK,kBAAkB,SAAS,SAAS,YAAY,KAAK,SAAS,wBAAwB;AAC3F,mBAAK,kBAAkB,SAAS,SAAS,YAAY,KAAK,SAAS,0BAA0B;AAAA,YAC/F;AACA,iBAAK,eAAe,IAAI;AAAA,UAC1B;AACA,cAAI,iBAAiB,MAAM;AACzB,iBAAK,SAAS,SAAS,cAAc,IAAI,gBAAgB;AACzD,kBAAM,KAAK,wBAAwB;AACnC,gBAAI,cAAc,YAAY,MAAM;AAClC,sBAAQ,cAAc,SAAS,YAAY,QAAQ,KAAK,cAAc,SAAS,YAAY,QAAQ,KAAK,KAAK,IAAI,qBAAqB,cAAc,SAAS,qBAAqB,cAAc,SAAS,kBAAkB,OAAO,KAAK,IAAI,kBAAkB;AAC7P,kBAAI,OAAO;AACT,oBAAI,KAAK,KAAK,SAAS,eAAe,oBAAoB;AAAA,kBACxD,gBAAgB,KAAK,IAAI,UAAU,GAAG;AAAA,kBACtC,gBAAgB,cAAc,SAAS;AAAA,kBACvC,YAAY,KAAK;AAAA,gBACnB,CAAC;AACD,oBAAI,IAAI;AACN,gCAAc,SAAS,SAAS,SAAS,KAAK,SAAS,wBAAwB;AAC/E,gCAAc,SAAS,SAAS,YAAY,KAAK,SAAS,0BAA0B;AAAA,gBACtF,OAAO;AACL,gCAAc,SAAS,SAAS,YAAY,KAAK,SAAS,wBAAwB;AAClF,gCAAc,SAAS,SAAS,SAAS,KAAK,SAAS,0BAA0B;AAAA,gBACnF;AACA,qBAAK,eAAe,KAAK,cAAc,QAAQ;AAC/C,qBAAK,SAAS,iBAAiB,KAAK,GAAG;AAAA,cACzC,OAAO;AACL,gCAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AACA,eAAK,oBAAoB;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,IAAI;AAChC,YAAI,GAAG,UAAU,GAAG,YAAY,WAAW,GAAG;AAC5C,eAAK,SAAS,eAAe,EAAE;AAAA,QACjC,OAAO;AACL,iBAAO,GAAG;AAAA,QACZ;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,eAAe;AAChD,YAAI,qBAAqB,KAAK,IAAI,qBAAqB;AACvD,YAAI,MAAM,KAAK,wBAAwB;AACvC,YAAI,sBAAsB,KAAK,gBAAgB,GAAG;AAChD,cAAI,QAAQ,GAAG;AACb,iBAAK,IAAI,SAAS,KAAK,IAAI;AAC3B,iBAAK,IAAI,WAAW,KAAK,IAAI;AAAA,UAC/B,OAAO;AACL,iBAAK,IAAI,SAAS,KAAK,IAAI;AAC3B,iBAAK,IAAI,WAAW,KAAK,IAAI;AAAA,UAC/B;AACA,eAAK,iBAAiB,GAAG;AACzB,iBAAO;AAAA,QACT,OAAO;AACL,eAAK,SAAS,KAAK,aAAa;AAChC,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAOD,IAAG;AACxB,YAAI,SAAS;AACb,YAAI,gBAAgBA,GAAE;AACtB,aAAK,SAAS,2BAA2B;AACzC,aAAK,SAAS,oBAAoB;AAClC,YAAI,kBAAkB,UAAU,kBAAkB,iBAAiB;AACnE,YAAI,oBAAoB,KAAK,SAAS,aAAa,EAAE,iBAAiB,6BAA6B;AACnG,gBAAQ,mBAAmB,SAAU,IAAI;AACvC,iBAAO,SAAS,YAAY,IAAI,eAAe;AAAA,QACjD,CAAC;AACD,YAAI,KAAK,OAAO,KAAK,IAAI,aAAa,MAAM;AAC1C,cAAI,qBAAqB,KAAK,IAAI,qBAAqB;AACvD,cAAI,MAAM,KAAK,wBAAwB;AACvC,cAAI,oBAAoB,KAAK,IAAI;AACjC,cAAI;AACJ,cAAI,KAAK,qBAAqB,MAAM;AAClC,2BAAe,KAAK,iBAAiBA,IAAG,KAAK,GAAG;AAChD,gBAAI,gBAAgB,MAAM;AACxB,mBAAK,mBAAmBA,GAAE,CAAC;AAAA,YAC7B,OAAO;AACL,kBAAI,qBAAqB,kBAAkB,OAAO,aAAa,IAAI;AACjE,qBAAK,iBAAiB,GAAG;AAAA,cAC3B,OAAO;AACL,oBAAI,CAAC,aAAa,SAAS;AACzB,uBAAK,mBAAmBA,GAAE,CAAC;AAAA,gBAC7B,WAAW,aAAa,OAAO,GAAG;AAChC,+BAAa,KAAK,uBAAuB;AAAA,oBACvC,UAAU;AAAA,oBACV,YAAY,KAAK;AAAA,oBACjB,gBAAgB,KAAK,SAAS,SAAS;AAAA,kBACzC,GAAG,aAAa;AAChB,uBAAK,mBAAmBA,GAAE,CAAC;AAAA,gBAC7B,OAAO;AACL,sBAAI,QAAQ,GAAG;AACb,yBAAK,IAAI,SAAS,aAAa;AAC/B,yBAAK,IAAI,WAAW,aAAa;AAAA,kBACnC,OAAO;AACL,yBAAK,IAAI,SAAS,aAAa;AAC/B,yBAAK,IAAI,WAAW,aAAa;AAAA,kBACnC;AACA,sBAAI,cAAc;AAClB,sBAAI,sBAAsB,KAAK,IAAI,kBAAkB,OAAO,aAAa,IAAI;AAC3E,wBAAI,CAAC,KAAK,IAAI,gBAAgB,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,GAAG,EAAE,gBAAgB,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,kBAAkB,gBAAgB,KAAK,GAAG,KAAK,CAAC,KAAK,SAAS,eAAe,gBAAgB,KAAK,GAAG,GAAG;AACjN,oCAAc;AAAA,oBAChB;AAAA,kBACF;AACA,gCAAc,eAAe,aAAa,cAAc,KAAK,IAAI,UAAU,KAAK,IAAI,UAAU,KAAK,IAAI,OAAO,KAAK,KAAK,YAAY;AACpI,sBAAI,aAAa;AACf,yBAAK,MAAM,cAAc,KAAK,eAAe,WAAW;AAAA,kBAC1D,OAAO;AACL,yBAAK,mBAAmBA,GAAE,CAAC;AAAA,kBAC7B;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF,OAAO;AACL,iBAAK,mBAAmBA,GAAE,CAAC;AAAA,UAC7B;AACA,eAAK,SAAS,iBAAiB,KAAK,EAAE;AACtC,eAAK,GAAG,YAAY,KAAK,SAAS,aAAa;AAC/C,eAAK,6BAA6B;AAClC,eAAK,IAAI,YAAY,KAAK,SAAS,aAAa;AAChD,iBAAO,KAAK,IAAI;AAChB,iBAAO,KAAK,IAAI;AAChB,iBAAO,KAAK,IAAI;AAChB,iBAAO,KAAK,IAAI;AAChB,iBAAO,KAAK,IAAI;AAChB,iBAAO,KAAK;AACZ,iBAAO,KAAK;AACZ,iBAAO,KAAK;AACZ,iBAAO,KAAK;AACZ,iBAAO,KAAK;AACZ,iBAAO,KAAK,IAAI;AAChB,cAAI,gBAAgB,MAAM;AACxB,iBAAK,cAAc,YAAY;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,KAAK;AACxC,YAAI;AACJ,YAAI,YAAY,KAAK,SAAS,aAAa;AAC3C,iBAASC,KAAI,GAAGA,KAAI,KAAK,SAAS,gBAAgB,QAAQA,MAAK;AAC7D,qBAAW,KAAK,SAAS,gBAAgBA,EAAC;AAC1C,cAAI,SAAS,UAAU,GAAG;AACxB,gBAAI4E,KAAI,eAAe,KAAK,WAAW,SAAS,UAAU,KAAK,UAAU,SAAS,OAAO;AACzF,gBAAIA,OAAM,OAAO;AACf,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB7E,IAAG,KAAK;AACvC,YAAI;AACJ,YAAI,KAAK,kBAAkB,YAAY,MAAM;AAC3C,cAAI,mBAAmB,KAAK,kBAAkB;AAC9C,cAAI,cAAcA,GAAE,EAAE,UAAUA,GAAE,EAAE;AACpC,cAAI,oBAAoB,MAAM;AAC5B,mBAAO;AAAA,UACT;AACA,cAAI,gBAAgB,KAAK,kBAAkB;AAC3C,cAAI,OAAO,qBAAqBA,GAAE,GAAG,eAAe,KAAK,SAAS,WAAW;AAC7E,cAAI,MAAM,KAAK,SAAS,6BAA6B,IAAI,QAAQ,EAAE,KAAK,GAAG,GAAG,IAAI;AAClF,cAAI,KAAK,IAAI,YAAY0C,QAAO1C,IAAG;AAAA,YACjC,UAAU,iBAAiB,IAAI,YAAY,IAAI,UAAU,CAAC;AAAA,YAC1D,UAAU,iBAAiB,IAAI,YAAY;AAAA,YAC3C,QAAQ,iBAAiB,IAAI,WAAW;AAAA,YACxC,QAAQ,iBAAiB,IAAI,WAAW;AAAA,UAC1C,CAAC,IAAIA;AACL,cAAI,eAAe,KAAK,SAAS,iBAAiB,IAAI,OAAO,IAAI,IAAI,UAAU,KAAK,SAAS,qBAAqB,IAAI,KAAK,SAAS,SAAS,UAAU;AACvJ,cAAI,gBAAgB,iBAAiB,IAAI;AACzC,cAAI,2BAA2B,iBAAiB,IAAI,uBAAuB,iBAAiB,IAAI,qBAAqB,eAAe,MAAM,iBAAiB,KAAKA,GAAE,CAAC,IAAI;AACvK,cAAI,aAAa,4BAA4B,OAAO,2BAA2B,iBAAiB,OAAO,gBAAgB,gBAAgB,QAAQ,aAAa,CAAC,KAAK,OAAO,aAAa,CAAC,IAAI;AAC3L,cAAI,cAAc,MAAM;AACtB,iBAAK0C,QAAO,IAAI;AAAA,cACd,QAAQ;AAAA,YACV,CAAC;AAAA,UACH;AACA,cAAI,iBAAiB,IAAI,UAAU,MAAM;AACvC,eAAG,SAAS,iBAAiB,IAAI;AAAA,UACnC;AACA,cAAI,sBAAsB,iBAAiB,IAAI,qBAAqB,iBAAiB,IAAI,mBAAmB,KAAK,kBAAkB,IAAI,aAAa1C,GAAE,CAAC,IAAI,CAAC;AAC5J,eAAKqF,OAAM,IAAI,mBAAmB;AAClC,aAAG,UAAU;AACb,yBAAe,KAAK,SAAS,sBAAsB,EAAE;AACrD,uBAAa,SAAS;AACtB,uBAAa,gBAAgB;AAC7B,cAAI,iBAAiB,IAAI,YAAY;AACnC,yBAAa,gBAAgB,iBAAiB,IAAI,UAAU;AAAA,UAC9D;AACA,cAAI,iBAAiB,IAAI,SAAS;AAChC,gBAAI,WAAW,CAAC;AAChB,qBAASC,QAAO,iBAAiB,IAAI,SAAS;AAC5C,kBAAIlD,KAAI,KAAK,kBAAkB,GAAG,aAAakD,IAAG;AAClD,kBAAIlD,IAAG;AACL,yBAAS,iBAAiB,IAAI,QAAQkD,IAAG,CAAC,IAAIlD;AAAA,cAChD;AAAA,YACF;AACA,yBAAa,gBAAgB,QAAQ;AAAA,UACvC;AAAA,QACF,OAAO;AACL,yBAAe,KAAK,kBAAkB;AAAA,QACxC;AACA,YAAI,cAAc;AAChB,uBAAa,YAAY,KAAK,SAAS,wBAAwB;AAC/D,uBAAa,YAAY,KAAK,SAAS,0BAA0B;AAAA,QACnE;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,KAAK;AACpC,aAAK,iBAAiB,qBAAqB,KAAK,KAAK,MAAM,IAAI;AAC/D,aAAK,IAAI,UAAU,GAAG,IAAI,KAAK,IAAI;AACnC,aAAK,SAAS,SAAS,KAAK,KAAK,KAAK;AACtC,aAAK,IAAI,eAAe;AACxB,aAAK,IAAI,kBAAkB,cAAc,KAAK,GAAG;AACjD,aAAK,SAAS,sBAAsB,KAAK,YAAY,KAAK,IAAI,kBAAkB,WAAW,KAAK,KAAK,KAAK,IAAI,kBAAkB,SAAS,GAAG;AAC5I,aAAK,SAAS,eAAe,KAAK,gBAAgB;AAClD,aAAK,SAAS,QAAQ,KAAK,IAAI,MAAM;AACrC,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,YAAI,KAAK,IAAI,WAAW,KAAK,KAAK,IAAI,gBAAgB;AACpD,iBAAO;AAAA,QACT,OAAO;AACL,cAAI,oBAAoB,KAAK,IAAI,mBAC7B,mBAAmB,KAAK,IAAI,wBAAwB,SAAS,IAAI,GACjE,gBAAgB,KAAK,IAAI,UAAU,gBAAgB;AACvD,iBAAO,CAAC,cAAc,MAAM,OAAO,CAAC,CAAC,mBAAmB,mBAAmB,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,eAAe,mBAAmB,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,mBAAmB,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,UAAU,iBAAiB,CAAC,yBAAyB,KAAK,GAAG,CAAC,CAAC,CAAC;AAAA,QAC3P;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,KAAK,eAAe;AAC3C,YAAI,KAAK,IAAI,SAAS;AACpB,eAAK,SAAS,KAAK,wBAAwB,KAAK,KAAK,aAAa;AAAA,QACpE,OAAO;AACL,cAAI,QAAQ,GAAG;AACb,iBAAK,IAAI,SAAS,KAAK,IAAI,kBAAkB;AAC7C,iBAAK,IAAI,WAAW,KAAK,IAAI,kBAAkB;AAAA,UACjD,OAAO;AACL,iBAAK,IAAI,SAAS,KAAK,IAAI,kBAAkB;AAC7C,iBAAK,IAAI,WAAW,KAAK,IAAI,kBAAkB;AAAA,UACjD;AACA,eAAK,IAAI,UAAU,GAAG,IAAI,KAAK,IAAI;AAAA,QACrC;AACA,YAAI,KAAK,kBAAkB;AACzB,eAAK,iBAAiB,qBAAqB,KAAK,GAAG;AAAA,QACrD;AACA,aAAK,SAAS,iBAAiB,KAAK,KAAK;AAAA,UACvC;AAAA,UACA,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASyD,OAAM,cAAc,KAAK,eAAe,cAAc;AACpE,aAAK,IAAI,UAAU,GAAG,EAAE,qBAAqB,KAAK,GAAG;AACrD,YAAI,KAAK,IAAI,mBAAmB;AAC9B,eAAK,IAAI,kBAAkB,qBAAqB,KAAK,GAAG;AAAA,QAC1D;AACA,aAAK,IAAI,UAAU,GAAG,IAAI;AAC1B,qBAAa,cAAc,KAAK,GAAG;AACnC,YAAI,KAAK,IAAI,mBAAmB;AAC9B,cAAI,qBAAqB,KAAK,IAAI,kBAAkB;AACpD,eAAK,SAAS,cAAc;AAAA,YAC1B,OAAO;AAAA,YACP,kBAAkB,QAAQ,IAAI,qBAAqB,KAAK,IAAI;AAAA,YAC5D,aAAa,QAAQ,IAAI,aAAa,YAAY,KAAK,IAAI;AAAA,YAC3D,kBAAkB,QAAQ,IAAI,qBAAqB,KAAK,IAAI;AAAA,YAC5D,aAAa,QAAQ,IAAI,aAAa,YAAY,KAAK,IAAI;AAAA,YAC3D,kBAAkB,KAAK,IAAI;AAAA,YAC3B,YAAY,KAAK;AAAA,YACjB,aAAa;AAAA,UACf,GAAG,aAAa;AAAA,QAClB;AACA,YAAI,QAAQ,GAAG;AACb,eAAK,SAAS,sBAAsB,KAAK,YAAY,KAAK,IAAI,UAAU,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC;AAAA,QACtG,OAAO;AACL,eAAK,SAAS,sBAAsB,KAAK,YAAY,KAAK,IAAI,UAAU,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC;AAAA,QACtG;AACA,YAAI,KAAK,IAAI,UAAU,CAAC,EAAE,eAAe;AACvC,cAAI,YAAY,KAAK,IAAI,UAAU,CAAC;AACpC,oBAAU,qBAAqB,KAAK,GAAG;AACvC,eAAK,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,UAAU,CAAC,EAAE;AAC9C,eAAK,IAAI,UAAU,CAAC,EAAE,cAAc,KAAK,GAAG;AAAA,QAC9C;AACA,YAAIC,UAAS,YAAY,GAAG;AAC1B,eAAK,IAAI,UAAU,YAAY;AAAA,QACjC;AACA,YAAI,KAAK,qBAAqB;AAC5B,eAAK,IAAI,UAAU,CAAC,EAAE,UAAU,KAAK,mBAAmB;AACxD,eAAK,sBAAsB;AAAA,QAC7B;AACA,aAAK,SAAS,oBAAoB,KAAK,KAAK,MAAM,aAAa;AAC/D,aAAK,SAAS,SAAS,KAAK,KAAK,KAAK;AACtC,aAAK,SAAS,WAAW,KAAK,IAAI,UAAU,CAAC,EAAE,OAAO;AAAA,MACxD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,4BAA4B,MAAM,MAAM;AACtD,aAAK,oBAAoB,KAAK,EAAE,IAAI;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,0BAA0B;AACxC,eAAO,KAAK,iBAAiB,OAAO,IAAI,KAAK;AAAA,MAC/C;AAAA,IACF,CAAC,CAAC;AACF,WAAOX;AAAA,EACT,EAAE;AAEF,MAAI,mBAAmB,SAAU,qBAAqB;AACpD,IAAAlE,WAAU8E,mBAAkB,mBAAmB;AAC/C,QAAI,SAAS5E,cAAa4E,iBAAgB;AAC1C,aAASA,kBAAiB,UAAU,eAAe;AACjD,UAAI;AACJ,MAAAlF,iBAAgB,MAAMkF,iBAAgB;AACtC,cAAQ,OAAO,KAAK,MAAM,UAAU,aAAa;AACjD,YAAM,WAAW;AACjB,YAAM,gBAAgB;AACtB,MAAAjF,iBAAgBO,wBAAuB,KAAK,GAAG,YAAY,CAAC,KAAK,gBAAgB,wBAAwB,EAAE,KAAK,GAAG,CAAC;AACpH,MAAAP,iBAAgBO,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,YAAM,eAAe,MAAM,YAAY,KAAKA,wBAAuB,KAAK,CAAC;AACzE,aAAO;AAAA,IACT;AACA,IAAAN,cAAagF,mBAAkB,CAAC;AAAA,MAC9B,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,aAAK,KAAK,IAAI,cAAc,KAAK,YAAY;AAAA,MAC/C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,aAAK,SAAS,WAAW,EAAE;AAAA,MAC7B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,MAAM;AACzB,aAAK,OAAO;AACZ,aAAK,GAAG,cAAc,KAAK,YAAY;AAAA,MACzC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,WAAWxE,SAAQ;AAC/C,YAAI,QAAQA,QAAO;AACnB,eAAO,SAAS,OAAO,QAAQ,MAAM,UAAU;AAAA,MACjD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,IAAI;AACjC,YAAI,MAAM;AACV,YAAI,QAAQ,IAAI,UAAU,IAAI;AAC9B,cAAM,sBAAsB,IAAI;AAChC,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOwE;AAAA,EACT,EAAE,kBAAkB;AAEpB,MAAI,qBAAqB,WAAY;AACnC,aAASC,oBAAmB,UAAU,SAAS;AAC7C,MAAAnF,iBAAgB,MAAMmF,mBAAkB;AACxC,WAAK,WAAW;AAChB,WAAK,UAAU;AACf,MAAAlF,iBAAgB,MAAM,sBAAsB,MAAM;AAClD,WAAK,qBAAqB;AAAA,IAC5B;AACA,IAAAC,cAAaiF,qBAAoB,MAAM,CAAC;AAAA,MACtC,KAAK;AAAA,MACL,OAAO,SAASC,YAAW/C,IAAG,WAAW,gBAAgB;AACvD,YAAIA,GAAE,UAAU,MAAM;AACpB,cAAI,kBAAkB,WAAW;AAC/B,YAAAA,GAAE,SAAS,eAAe,SAAS;AACnC,gBAAIgD,OAAMhD,GAAE,SAAS,eAAe,OAAOA,GAAE,WAAWA,GAAE,WAAW;AACrE,YAAAA,GAAE,SAAS,SAASA,GAAE,QAAQgD,IAAG;AAAA,UACnC,OAAO;AACL,YAAAhD,GAAE,SAASsC,eAAc,aAAa,CAAC,GAAGtC,GAAE,SAAS,eAAe,OAAOA,GAAE,WAAWA,GAAE,WAAW,GAAG;AAAA,UAC1G;AACA,UAAAA,GAAE,SAAS,aAAaA,GAAE,QAAQ,kBAAkBA,GAAE,EAAE;AACxD,mBAASoC,QAAOpC,GAAE,YAAY;AAC5B,YAAAA,GAAE,SAAS,aAAaA,GAAE,QAAQoC,MAAKpC,GAAE,WAAWoC,IAAG,CAAC;AAAA,UAC1D;AACA,UAAApC,GAAE,OAAO,MAAM,WAAW;AAC1B,UAAAA,GAAE,SAAS,eAAeA,GAAE,QAAQA,GAAE,SAAS,aAAa,CAAC;AAC7D,UAAAA,GAAE,SAAS,MAAMA,GAAE,MAAM;AACzB,cAAI,KAAK;AACT,UAAAA,GAAE,OAAO,MAAM,kBAAkB;AACjC,UAAAA,GAAE,OAAO,MAAM,eAAe;AAC9B,UAAAA,GAAE,OAAO,MAAM,cAAc;AAC7B,UAAAA,GAAE,OAAO,MAAM,aAAa;AAC5B,UAAAA,GAAE,OAAO,MAAM,YAAY;AAC3B,cAAI,CAACA,GAAE,UAAU,GAAG;AAClB,YAAAA,GAAE,OAAO,MAAM,UAAU;AAAA,UAC3B;AACA,UAAAA,GAAE,OAAO,MAAM;AAAA,YACb,SAASA;AAAA,UACX;AAAA,QACF;AACA,eAAOA,GAAE;AAAA,MACX;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASX,SAAQW,IAAG;AACzB,QAAAA,GAAE,UAAUA,GAAE,OAAO,cAAcA,GAAE,OAAO,WAAW,YAAYA,GAAE,MAAM;AAC3E,eAAOA,GAAE;AACT,eAAOA,GAAE;AAAA,MACX;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAeA,IAAG,cAAc;AAC9C,YAAIA,GAAE,oBAAoB,QAAQ,cAAc;AAC9C,UAAAA,GAAE,mBAAmB;AAAA,YACnB,GAAG;AAAA,YACH,GAAG;AAAA,UACL;AAAA,QACF;AACA,eAAOA,GAAE;AAAA,MACX;AAAA,IACF,CAAC,CAAC;AACF,WAAO8C;AAAA,EACT,EAAE;AAEF,MAAI,iBAAiB,WAAY;AAC/B,aAASG,kBAAiB;AACxB,MAAAtF,iBAAgB,MAAMsF,eAAc;AACpC,MAAArF,iBAAgB,MAAM,cAAc,CAAC,CAAC;AACtC,MAAAA,iBAAgB,MAAM,mBAAmB,KAAK;AAC9C,MAAAA,iBAAgB,MAAM,QAAQ,KAAK;AACnC,MAAAA,iBAAgB,MAAM,iBAAiB;AAAA,QACrC,SAAS;AAAA,MACX,CAAC;AACD,MAAAA,iBAAgB,MAAM,SAAS,CAAC,CAAC;AAAA,IACnC;AACA,IAAAC,cAAaoF,iBAAgB,CAAC;AAAA,MAC5B,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,OAAO,OAAO,eAAe;AAChD,YAAI,MAAM;AACV,YAAI,CAAC,KAAK,MAAM;AACd,eAAK,OAAO;AACZ,cAAI,CAAC,KAAK,mBAAmB,KAAK,WAAW,KAAK,GAAG;AACnD,gBAAIpE,KAAI,KAAK,WAAW,KAAK,EAAE,QAC3B9B,KAAI,GACJ,QAAQ;AACZ,gBAAI,CAAC,KAAK,mBAAmB,KAAK,gBAAgB,OAAO,OAAO,aAAa,GAAG;AAC9E,qBAAO,CAAC,SAASA,KAAI8B,MAAK,QAAQ,OAAO;AACvC,oBAAI,KAAK,cAAc,KAAK,GAAG;AAC7B,uBAAK,WAAW,KAAK,EAAE9B,EAAC,EAAE,OAAO,aAAa;AAAA,gBAChD,OAAO;AACL,sBAAI;AACF,0BAAM,KAAK,WAAW,KAAK,EAAEA,EAAC,EAAE,OAAO,aAAa;AAAA,kBACtD,SAASS,IAAP;AACA,wBAAI,oCAAoC,QAAQ,SAASA,GAAE,WAAWA,GAAE;AAAA,kBAC1E;AAAA,gBACF;AACA,gBAAAT;AACA,oBAAI,KAAK,cAAc,QAAQ,KAAK,WAAW,KAAK,KAAK,MAAM;AAC7D,0BAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,eAAK,OAAO;AACZ,eAAK,OAAO;AAAA,QACd,OAAO;AACL,eAAK,MAAM,QAAQ,SAAS;AAAA,QAC9B;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS;AACvB,YAAIsF,KAAI,KAAK,MAAM,IAAI;AACvB,YAAIA,IAAG;AACL,eAAK,KAAK,MAAM,MAAMA,EAAC;AAAA,QACzB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO,iBAAiB,UAAU;AAChD,YAAI,UAAU,WAAW,GAAG;AAC1B,eAAK,aAAa,CAAC;AAAA,QACrB,WAAW,UAAU,WAAW,GAAG;AACjC,cAAI,OAAO,oBAAoB,UAAU;AACvC,mBAAO,KAAK,WAAW,eAAe;AAAA,UACxC,WAAW,gBAAgB,WAAW;AACpC,gBAAI;AACJ,qBAAStF,MAAK,gBAAgB,WAAW;AACvC,oBAAM,gBAAgB,UAAUA,EAAC;AACjC,qBAAO,KAAK,WAAW,GAAG,KAAK,CAAC,GAAG,eAAe;AAAA,YACpD;AAAA,UACF;AAAA,QACF,WAAW,UAAU,WAAW,GAAG;AACjC,iBAAO,KAAK,WAAW,eAAe,KAAK,CAAC,GAAG,QAAQ;AAAA,QACzD;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,UAAU;AACpC,eAAO,KAAK,WAAW,QAAQ,KAAK,CAAC;AAAA,MACvC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,KAAK;AACpC,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,OAAO,UAAU,eAAe;AACnD,YAAI,QAAQ;AACZ,YAAI,OAAO,SAAS2D,MAAK,KAAK;AAC5B,0BAAgB,MAAM,YAAY,KAAK,UAAU,aAAa;AAC9D,mBAAS,YAAY,SAAS,aAAa,CAAC;AAC5C,mBAAS,UAAU7D,MAAK,CAAC,IAAI;AAAA,QAC/B;AACA,YAAI,OAAO,UAAU,UAAU;AAC7B,eAAK,KAAK;AAAA,QACZ,WAAW,MAAM,UAAU,MAAM;AAC/B,mBAASE,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,iBAAK,MAAMA,EAAC,CAAC;AAAA,UACf;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAASO,KAAI;AAC3B,aAAK,iBAAiB,IAAI;AAC1B,YAAI;AACF,UAAAA,IAAG;AAAA,QACL,SAASE,IAAP;AACA,cAAI,oCAAoCA,EAAC;AAAA,QAC3C;AACA,aAAK,iBAAiB,KAAK;AAAA,MAC7B;AAAA,IACF,CAAC,CAAC;AACF,WAAOyF;AAAA,EACT,EAAE;AACF,MAAI,2BAA2B,SAAU,iBAAiB;AACxD,IAAAlF,WAAUmF,2BAA0B,eAAe;AACnD,QAAI,SAASjF,cAAaiF,yBAAwB;AAClD,aAASA,4BAA2B;AAClC,MAAAvF,iBAAgB,MAAMuF,yBAAwB;AAC9C,aAAO,OAAO,MAAM,MAAM,SAAS;AAAA,IACrC;AACA,IAAArF,cAAaqF,2BAA0B,CAAC;AAAA,MACtC,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,OAAO,OAAO,eAAe;AAC3D,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOA;AAAA,EACT,EAAE,cAAc;AAKhB,WAAS,yBAAyB,MAAM;AACtC,QAAIC,KAAI;AACR,QAAI,SAAS,IAAI,GAAG;AAClB,MAAAA,KAAI;AAAA,QACF,MAAM;AAAA,QACN,SAAS,CAAC;AAAA,MACZ;AAAA,IACF,OAAO;AACL,MAAAA,KAAI;AAAA,IACN;AACA,IAAAA,GAAE,QAAQ,KAAKA,GAAE,QAAQ,MAAMC,MAAK;AACpC,WAAOD;AAAA,EACT;AACA,MAAI,UAAU,SAAU,iBAAiB;AACvC,IAAAE,WAAUC,UAAS,eAAe;AAClC,QAAI,SAASC,cAAaD,QAAO;AACjC,aAASA,SAAQ,UAAU,WAAWE,IAAG;AACvC,UAAI;AACJ,MAAAC,iBAAgB,MAAMH,QAAO;AAC7B,cAAQ,OAAO,KAAK,IAAI;AACxB,YAAM,WAAW;AACjB,YAAM,YAAY;AAClB,MAAAI,iBAAgBC,wBAAuB,KAAK,GAAG,MAAM,MAAM;AAC3D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,IAAI;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAH,KAAIA,MAAK,CAAC;AACV,YAAM,KAAKA,GAAE,MAAMJ,MAAK;AACxB,YAAM,WAAWI,GAAE,YAAY;AAC/B,YAAM,YAAYA,GAAE,QAAQ;AAC5B,YAAM,SAASA,GAAE,UAAU,CAAC;AAC5B,YAAM,aAAaA,GAAE,cAAc,CAAC;AACpC,eAAS,UAAU,MAAM,QAAQ;AAC/B,cAAM,KAAK,QAAQ,MAAM,OAAO,MAAM,CAAC;AAAA,MACzC;AACA,aAAO;AAAA,IACT;AACA,IAAAI,cAAaN,UAAS,CAAC;AAAA,MACrB,KAAK;AAAA,MACL,OAAO,SAAS,YAAYO,IAAG;AAC7B,YAAI,cAAc,KAAK,YAAY,OAAO,MAAM,KAAK;AACrD,YAAIA,MAAK,MAAM;AACb,cAAI;AACF,gBAAI,KAAK,OAAOA,OAAM,WAAW,WAAWA,EAAC,IAAIA;AACjD,gBAAI,CAAC,MAAM,EAAE,GAAG;AACd,4BAAc;AAAA,YAChB;AAAA,UACF,SAASC,IAAP;AAAA,UACF;AAAA,QACF;AACA,aAAK,WAAW;AAAA,MAClB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,OAAO,OAAO,eAAe;AAC3D,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,YAAWC,IAAG;AAC5B,aAAK,UAAUA;AACf,aAAK,SAAS,kBAAkB,MAAMA,EAAC;AAAA,MACzC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,aAAY;AAC1B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,CAAC,CAAC;AACF,WAAOX;AAAA,EACT,EAAE,cAAc;AAEhB,MAAI,aAAa,CAAC;AAClB,MAAI,iBAAiB;AAAA,IACnB,KAAK,SAASY,KAAI,UAAUC,OAAM,WAAWC,SAAQ;AACnD,UAAIC,KAAI,WAAWF,KAAI;AACvB,UAAI,CAACE,IAAG;AACN,cAAM;AAAA,UACJ,SAAS,oCAAoCF,QAAO;AAAA,QACtD;AAAA,MACF,OAAO;AACL,eAAO,IAAIE,GAAE,UAAU,WAAWD,OAAM;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,UAAU,SAASE,UAASH,OAAM,SAAS;AACzC,iBAAWA,KAAI,IAAI;AAAA,IACrB;AAAA,EACF;AAEA,MAAI,eAAe,SAAU,UAAU;AACrC,IAAAd,WAAUkB,eAAc,QAAQ;AAChC,QAAI,SAAShB,cAAagB,aAAY;AACtC,aAASA,cAAa,UAAU,WAAWf,IAAG;AAC5C,UAAI;AACJ,MAAAC,iBAAgB,MAAMc,aAAY;AAClC,cAAQ,OAAO,KAAK,MAAM,UAAU,WAAWf,EAAC;AAChD,YAAM,WAAW;AACjB,YAAM,YAAY;AAClB,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQY,cAAa,IAAI;AACxE,MAAAb,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,MAAM;AACzE,MAAAH,KAAIA,MAAK;AAAA,QACP,OAAO;AAAA,MACT;AACA,YAAM,SAASA,GAAE,KAAK;AACtB,aAAO;AAAA,IACT;AACA,IAAAI,cAAaW,eAAc,CAAC;AAAA,MAC1B,KAAK;AAAA,MACL,OAAO,SAAS,WAAW;AACzB,YAAIC,YAAW,KAAK,KAAK,GAAG;AAC1B,iBAAO,KAAK,MAAM,IAAI;AAAA,QACxB,OAAO;AACL,iBAAO,KAAK;AAAA,QACd;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAASX,IAAG;AAC1B,aAAK,QAAQA;AACb,aAAK,YAAY;AACjB,aAAK,SAAS,YAAY,IAAI;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB;AAC9B,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAWY,IAAG;AAC5B,YAAIA,GAAE,SAAS,MAAM;AACnB,eAAK,SAASA,GAAE,KAAK;AAAA,QACvB;AACA,YAAIA,GAAE,YAAY,MAAM;AACtB,eAAK,YAAYA,GAAE,QAAQ;AAC3B,eAAK,SAAS,YAAY,IAAI;AAAA,QAChC;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOF;AAAA,EACT,EAAE,OAAO;AACT,EAAAb,iBAAgB,cAAc,QAAQ,OAAO;AAC7C,WAAS,eAAeP,IAAG;AACzB,WAAOA,GAAE,SAAS,aAAa;AAAA,EACjC;AACA,iBAAe,SAAS,aAAa,MAAM,YAAY;AAEvD,WAAS,WAAWuB,IAAG;AACrB,WAAOA,MAAK,OAAO,OAAOA,GAAE,MAAM,GAAG,EAAE,OAAO,SAAUA,IAAG;AACzD,aAAOA,MAAK,QAAQA,GAAE,SAAS;AAAA,IACjC,CAAC;AAAA,EACH;AACA,WAAS,SAASC,MAAK,KAAK,QAAQ;AAClC,aAASC,MAAK,KAAK;AACjB,MAAAD,KAAIC,EAAC,IAAI;AAAA,IACX;AAAA,EACF;AACA,MAAI,YAAY;AAChB,MAAI,0BAA0B;AAC9B,MAAI,YAAY;AAChB,MAAI,mBAAmB;AACvB,MAAI,SAAS;AACb,MAAI,UAAU;AACd,MAAI,0BAA0B;AAC9B,MAAI,6BAA6B;AACjC,MAAI,oBAAoB;AACxB,MAAI,qBAAqB;AACzB,MAAI,aAAa;AACjB,MAAI,gBAAgB;AACpB,WAAS,YAAY,WAAWR,SAAQ;AACtC,QAAI,UAAU,gBAAgB;AAC5B,UAAI,KAAK,UAAU,kBAAkB,GACjCO,OAAM,CAAC;AACX,UAAI,UAAU,UAAU,eAAe;AACvC,UAAIxB,KAAI0B,QAAO,CAAC,GAAG,OAAO;AAC1B,eAASF,MAAK,SAAS,gBAAgB;AACvC,gBAAU,OAAO,QAAQ,SAAU,KAAK;AACtC,YAAI,QAAQ,kBAAkB;AAC5B,cAAIG,MAAK,UAAU,SAAS,QAAQ,KAAK,EAAE;AAC3C,cAAIA,OAAM,MAAM;AACd,gBAAIC,aAAY,oBAAI,IAAI,CAAC,WAAW,QAAQ,OAAO,CAAC;AACpD,gBAAID,IAAG,kBAAkB,yBAAyB;AAChD,uBAASE,MAAKF,KAAI;AAChB,gBAAAC,WAAU,IAAIC,EAAC;AAAA,cACjB;AAAA,YACF;AACA,YAAA7B,KAAI8B,OAAM9B,IAAG2B,KAAI,CAAC,SAAS,GAAG,WAAWC,UAAS,CAAC;AACnD,qBAASJ,MAAKG,KAAI,GAAG;AAAA,UACvB;AAAA,QACF;AAAA,MACF,CAAC;AACD,UAAIV,SAAQ;AACV,QAAAjB,KAAI,SAASA,IAAGiB,SAAQ,GAAG;AAAA,MAC7B;AACA,gBAAU,UAAUjB,IAAGwB,IAAG;AAAA,IAC5B;AAAA,EACF;AACA,WAAS,qBAAqB,WAAW,QAAQ;AAC/C,QAAI,OAAO,UAAU,SAAS,QAAQ,QAAQ,UAAU,kBAAkB,CAAC;AAC3E,QAAI,QAAQ,QAAQ,KAAK,UAAU;AACjC,gBAAU,YAAY,KAAK,QAAQ;AAAA,IACrC;AAAA,EACF;AACA,WAAS,kBAAkB,WAAW;AACpC,QAAI,UAAU,cAAc,UAAU,iBAAiB;AACrD,UAAI,mBAAmB,CAAC;AACxB,MAAAE,QAAO,kBAAkB,UAAU,UAAU;AAC7C,MAAAA,QAAO,kBAAkB,UAAU,eAAe;AAClD,gBAAU,kBAAkB;AAAA,IAC9B;AAAA,EACF;AAGA,WAAS,kBAAkB,WAAWK,SAAQ;AAC5C,QAAI,UAAU;AAAA,MACZ,UAAUA,QAAO;AAAA,MACjB,IAAI;AAAA,MACJ;AAAA,IACF,GACI,eAAeC,QAAO,SAASD,OAAM;AACzC,WAAO,IAAI,aAAa,UAAU,UAAU,WAAW,YAAY;AAAA,EACrE;AACA,WAAS,gBAAgB,WAAWE,IAAG;AACrC,QAAI,cAAc;AAClB,QAAI,SAASA,EAAC,GAAG;AACf,oBAAc,eAAe,IAAI,UAAU,UAAUA,IAAG,WAAW,CAAC,CAAC;AAAA,IACvE,WAAWA,GAAE,QAAQ,QAAQA,GAAE,WAAW,MAAM;AAC9C,UAAI,KAAKA;AACT,UAAIC,KAAIF,QAAO,CAAC,GAAG,GAAG,OAAO;AAC7B,oBAAc,eAAe,IAAI,UAAU,UAAU,GAAG,MAAM,WAAWE,EAAC;AAAA,IAC5E,OAAO;AACL,oBAAcD;AAAA,IAChB;AACA,gBAAY,KAAK,YAAY,MAAME,MAAK;AACxC,cAAU,cAAc,mBAAmB,aAAa,YAAY,EAAE;AACtE,cAAU,SAAS,YAAY,EAAE,IAAI;AACrC,WAAO;AAAA,EACT;AACA,MAAIC,aAAY,SAAU,iBAAiB;AACzC,IAAAC,WAAUD,YAAW,eAAe;AACpC,QAAI,SAASE,cAAaF,UAAS;AACnC,aAASA,WAAU,UAAUL,SAAQ;AACnC,UAAI;AACJ,MAAAQ,iBAAgB,MAAMH,UAAS;AAC/B,cAAQ,OAAO,KAAK,IAAI;AACxB,YAAM,WAAW;AACjB,MAAAI,iBAAgBC,wBAAuB,KAAK,GAAG,wBAAwB,GAAG;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,CAAC,CAAC;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,CAAC,CAAC;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,CAAC,CAAC;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,KAAK,MAAM;AAC1D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,KAAK,MAAM;AAC1D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,KAAK,MAAM;AAC1D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,KAAK,MAAM;AAC1D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,MAAM,MAAM;AAC3D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,IAAI;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,CAAC,CAAC;AAC3D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,MAAM;AACxE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,MAAM;AACxE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,KAAK;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAV,UAASA,WAAU,CAAC;AACpB,YAAM,WAAWA,QAAO,YAAY;AACpC,YAAM,aAAaA,QAAO,cAAc,SAAS,SAAS;AAC1D,YAAM,eAAeA,QAAO;AAC5B,YAAM,aAAaA,QAAO;AAC1B,YAAM,SAAS,oBAAI,IAAI;AACvB,YAAM,aAAa,CAAC;AACpB,YAAM,aAAaW,OAAMX,QAAO,cAAc,CAAC,CAAC;AAChD,YAAM,KAAKA,QAAO,MAAM,MAAM,YAAY,KAAI,oBAAI,KAAK,GAAE,QAAQ;AACjE,YAAM,eAAe;AAAA,QACnB,YAAY,MAAM;AAAA,QAClB,OAAOA,QAAO,SAAS,MAAM,SAAS;AAAA,QACtC,UAAU,CAAC;AAAA,MACb;AACA,UAAIA,QAAO,QAAQ;AACjB,iBAAS,WAAWA,QAAO,QAAQ;AACjC,gBAAM,KAAK,SAASA,QAAO,OAAO,OAAO,CAAC;AAAA,QAC5C;AAAA,MACF;AACA,YAAM,QAAQ,WAAY;AACxB,YAAIE,KAAI,OAAO,OAAO,MAAM,YAAY,SAAS;AACjD,cAAM,YAAY,MAAMA,IAAG,CAAC,UAAUF,OAAM,CAAC;AAC7C,eAAOE;AAAA,MACT;AACA,YAAM,WAAW,CAAC;AAClB,YAAM,mBAAmB,CAAC;AAC1B,UAAIA,KAAIF,QAAO,YAAY,CAAC,GACxB,KAAK,CAAC;AACV,UAAI,oBAAoB,MAAM,qBAAqB;AACnD,UAAI,mBAAmB;AACrB,YAAI,kBAAkB,MAAM,SAAS,SAAS,iBAAiB;AAC/D,YAAI,iBAAiB;AACnB,UAAAE,GAAE,KAAK,MAAMA,IAAG,mBAAmB,eAAe,CAAC;AAAA,QACrD;AACA,iBAASU,KAAI,GAAGA,KAAIV,GAAE,QAAQU,MAAK;AACjC,cAAI,KAAK,yBAAyBV,GAAEU,EAAC,CAAC;AACtC,aAAG,GAAG,QAAQ,EAAE,IAAI;AAAA,QACtB;AAAA,MACF;AACA,YAAM,aAAa,WAAW;AAC9B,UAAIZ,QAAO,OAAO;AAChB,cAAM,eAAe,EAAE,SAAS,uBAAuB,IAAI;AAAA,UACzD,MAAM,aAAa;AAAA,UACnB,SAAS;AAAA,YACP,OAAOA,QAAO;AAAA,YACd,UAAUA,QAAO,iBAAiB,MAAM;AAAA,YACxC,IAAI;AAAA,YACJ,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAa,cAAaR,YAAW,CAAC;AAAA,MACvB,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,YAAY;AAC1C,YAAIS,KAAI;AACR,YAAI,KAAK,cAAc;AACrB,cAAI;AACF,YAAAA,KAAI,KAAK,aAAa,UAAU;AAAA,UAClC,SAASC,IAAP;AACA,gBAAI,yCAAyCA,EAAC;AAAA,UAChD;AAAA,QACF;AACA,eAAOD;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,UAAU,UAAU,OAAO,YAAY,cAAc;AACjF,YAAIA;AACJ,YAAI,UAAU;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,YAAI,KAAK,YAAY;AACnB,cAAI;AACF,YAAAA,KAAI,KAAK,WAAW,OAAO;AAAA,UAC7B,SAASC,IAAP;AACA,gBAAI,uCAAuCA,EAAC;AAAA,UAC9C;AAAA,QACF,OAAO;AACL,UAAAD,KAAI,KAAK,SAAS,eAAe,uBAAuB,OAAO;AAAA,QACjE;AACA,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,KAAK;AACvC,iBAASF,MAAK,KAAK;AACjB,eAAK,aAAaA,EAAC,IAAI,IAAIA,EAAC;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcI,MAAK,MAAM,QAAQ;AAC/C,aAAK,WAAW,MAAM,IAAI,KAAK,WAAW,MAAM,KAAK,CAAC;AACtD,aAAK,WAAW,MAAM,EAAEA,IAAG,IAAI;AAAA,MACjC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBA,MAAK,QAAQ;AAC7C,eAAO,KAAK,WAAW,MAAM,IAAI,KAAK,WAAW,MAAM,EAAEA,IAAG,IAAI;AAAA,MAClE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,QAAQhB,SAAQ;AACtC,aAAK,WAAW;AAChB,SAAC,WAAW,MAAM,KAAK,CAAC,GAAG,QAAQ,KAAK,OAAO,KAAK,KAAK,MAAM;AAC/D,oBAAY,MAAMA,OAAM;AAAA,MAC1B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU;AACxB,eAAO,MAAM,KAAK,KAAK,OAAO,KAAK,CAAC;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAaA,SAAQ;AACnC,oBAAY,MAAMA,OAAM;AAAA,MAC1B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,QAAQ;AAC9B,eAAO,KAAK,OAAO,IAAI,MAAM;AAAA,MAC/B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,QAAQA,SAAQ;AACtC,YAAIiB,KAAI,WAAW,MAAM,GACrB,kBAAkB;AACtB,YAAIA,MAAK,MAAM;AACb,mBAASL,KAAI,GAAGM,KAAID,GAAE,QAAQL,KAAIM,IAAGN,MAAK;AACxC,gBAAI,CAAC,KAAK,OAAO,IAAIK,GAAEL,EAAC,CAAC,GAAG;AAC1B,mBAAK,OAAO,IAAIK,GAAEL,EAAC,CAAC;AACpB,gCAAkB;AAAA,YACpB;AAAA,UACF;AACA,cAAI,iBAAiB;AACnB,wBAAY,MAAMZ,OAAM;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,QAAQA,SAAQ;AACzC,YAAI,SAAS;AACb,YAAIiB,KAAI,WAAW,MAAM,GACrB,QAAQ,OACR,OAAO,SAASE,MAAK,IAAI;AAC3B,cAAI,OAAO,OAAO,IAAI,EAAE,GAAG;AACzB,iCAAqB,QAAQ,EAAE;AAC/B,mBAAO,OAAO,QAAQ,EAAE,EAAE;AAC1B,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAIF,MAAK,MAAM;AACb,mBAASL,KAAI,GAAGM,KAAID,GAAE,QAAQL,KAAIM,IAAGN,MAAK;AACxC,oBAAQ,KAAKK,GAAEL,EAAC,CAAC,KAAK;AAAA,UACxB;AACA,cAAI,OAAO;AACT,wBAAY,MAAMZ,OAAM;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAWA,SAAQ;AACjC,YAAI,SAAS;AACb,aAAK,OAAO,QAAQ,SAAUiB,IAAG;AAC/B,+BAAqB,QAAQA,EAAC;AAAA,QAChC,CAAC;AACD,aAAK,OAAO,MAAM;AAClB,oBAAY,MAAMjB,OAAM;AAAA,MAC1B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,QAAQA,SAAQ;AACzC,YAAIiB,KAAI,WAAW,MAAM;AACzB,YAAIA,MAAK,MAAM;AACb,mBAASL,KAAI,GAAGM,KAAID,GAAE,QAAQL,KAAIM,IAAGN,MAAK;AACxC,gBAAI,KAAK,OAAO,IAAIK,GAAEL,EAAC,CAAC,GAAG;AACzB,mCAAqB,MAAMK,GAAEL,EAAC,CAAC;AAC/B,mBAAK,OAAO,QAAQ,EAAEK,GAAEL,EAAC,CAAC;AAAA,YAC5B,OAAO;AACL,mBAAK,OAAO,IAAIK,GAAEL,EAAC,CAAC;AAAA,YACtB;AAAA,UACF;AACA,sBAAY,MAAMZ,OAAM;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUiB,IAAGjB,SAAQ;AACnC,aAAK,cAAciB,GAAE,UAAU;AAC/B,aAAK,mBAAmBA,GAAE,eAAe;AACzC,aAAK,gBAAgBA,GAAE,UAAU;AACjC,aAAK,kBAAkB,KAAK,cAAc;AAC1C,YAAIA,GAAE,UAAU;AACd,cAAI,OAAO,CAAC,GACRL;AACJ,eAAKA,MAAKK,GAAE,UAAU;AACpB,gBAAI,WAAW,KAAK,SAASA,GAAE,SAASL,EAAC,EAAE,QAAQ,EAAE;AACrD,gBAAI,UAAU;AACZ,uBAAS,WAAWK,GAAE,SAASL,EAAC,EAAE,OAAO;AACzC,mBAAKK,GAAE,SAASL,EAAC,EAAE,QAAQ,EAAE,IAAI;AACjC,mBAAK,SAAS,gBAAgB,UAAU,IAAI;AAAA,YAC9C,OAAO;AACL,kBAAI,KAAK,KAAK,kBAAkB,mBAAmBK,GAAE,SAASL,EAAC,EAAE,QAAQ,EAAE;AAC3E,kBAAI,MAAM,MAAM;AACd,qBAAK,SAAS,gBAAgB,IAAI,IAAI;AACtC,mBAAG,WAAW,IAAI;AAClB,mBAAG,WAAWK,GAAE,SAASL,EAAC,EAAE,OAAO;AACnC,qBAAK,SAAS,GAAG,EAAE,IAAI;AAAA,cACzB,OAAO;AACL,qBAAK,KAAK,WAAWK,GAAE,SAASL,EAAC,CAAC;AAAA,cACpC;AACA,mBAAK,GAAG,EAAE,IAAI;AAAA,YAChB;AAAA,UACF;AACA,eAAKA,MAAK,KAAK,UAAU;AACvB,gBAAI,KAAK,KAAK,SAASA,EAAC,EAAE,EAAE,KAAK,MAAM;AACrC,mBAAK,cAAc,KAAK,SAASA,EAAC,EAAE,IAAI,IAAI;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,OAAO;AACnC,aAAK,aAAa;AAClB,aAAK,kBAAkB,KAAK;AAC5B,0BAAkB,IAAI;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB;AAC9B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,OAAO;AACxC,aAAK,kBAAkB;AACvB,0BAAkB,IAAI;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB;AACnC,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASQ,WAAU;AACxB,iBAASR,MAAK,KAAK,UAAU;AAC3B,eAAK,SAAS,eAAe,KAAK,SAASA,EAAC,CAAC;AAAA,QAC/C;AACA,aAAK,WAAW,CAAC;AACjB,aAAK,mBAAmB,CAAC;AACzB,aAAK,OAAO;AACZ,aAAK,QAAQ;AAAA,MACf;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU;AACxB,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBT,IAAG;AACjC,YAAIA,MAAK,MAAM;AACb,UAAAF,QAAO,KAAK,YAAYE,EAAC;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASkB,YAAWC,IAAG;AAC5B,aAAK,UAAUA;AACf,YAAIA,IAAG;AACL,eAAK,aAAa;AAAA,QACpB,OAAO;AACL,eAAK,aAAa;AAAA,QACpB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,aAAY;AAC1B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,2BAA2B,SAAS,IAAI;AACtD,aAAK,iBAAiB,QAAQ,EAAE,IAAI;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,2BAA2B,SAAS;AAClD,eAAO,KAAK,mBAAmB,KAAK,iBAAiB,QAAQ,EAAE,IAAI;AAAA,MACrE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,QAAQ,OAAO;AACzC,iBAASX,MAAK,KAAK,UAAU;AAC3B,cAAI,WAAW,YAAY;AACzB,iBAAK,SAAS,gBAAgB,KAAK,SAASA,EAAC,GAAG,KAAK;AAAA,UACvD,WAAW,WAAW,eAAe;AACnC,iBAAK,SAAS,mBAAmB,KAAK,SAASA,EAAC,GAAG,KAAK;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASY,UAAS,OAAO,SAAS;AACvC,YAAI,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG;AAC3C,cAAM,KAAK,KAAK;AAChB,aAAK,WAAW,MAAM,KAAK,GAAG;AAC9B,aAAK,YAAY,YAAY,KAAK;AAAA,MACpC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,aAAY,OAAO,SAAS;AAC1C,YAAI,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG;AAC3C,aAAK,WAAW,MAAM,OAAO,SAAUtB,IAAG;AACxC,iBAAOA,OAAM;AAAA,QACf,CAAC,EAAE,KAAK,GAAG;AACX,aAAK,YAAY,eAAe,KAAK;AAAA,MACvC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASuB,YAAW;AACzB,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,OAAO,OAAO,eAAe;AAC3D,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU;AACxB,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQC,IAAG;AACzB,aAAK,OAAOA,MAAK,CAAC;AAAA,MACpB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUA,IAAG;AAC3B,aAAK,OAAO1B,QAAO,KAAK,MAAM0B,EAAC;AAAA,MACjC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,SAAS;AAClC,YAAIzB,KAAI,gBAAgB,MAAM,OAAO;AACrC,YAAI,KAAK,WAAWA,GAAE,SAAS,aAAa,QAAQ,CAAC,SAAS,OAAO,GAAG;AACtE,cAAIyB,KAAI,KAAK,QAAQ,GACjBxB,KAAI,QAAQ;AAChB,cAAIwB,IAAG;AACL,gBAAI,oBAAoBxB,GAAE,0BAA0B;AACpD,gBAAI,MAAMwB,GAAE,iBAAiB;AAC7B,gBAAI,KAAK;AACP,cAAAzB,GAAE,WAAW;AAAA,YACf;AAAA,UACF;AAAA,QACF;AACA,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW0B,KAAI;AAC7B,eAAO,KAAK,SAASA,GAAE;AAAA,MACzB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYA,KAAI;AAC9B,YAAI1B,KAAI,KAAK,WAAW0B,GAAE;AAC1B,YAAI1B,IAAG;AACL,UAAAA,GAAE,WAAW,KAAK;AAAA,QACpB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe;AAC7B,iBAAS,OAAO,UAAU,QAAQ,MAAM,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACtF,cAAI,IAAI,IAAI,UAAU,IAAI;AAAA,QAC5B;AACA,cAAM,OAAO,CAAC;AACd,iBAASU,MAAK,KAAK,UAAU;AAC3B,cAAI,IAAI,WAAW,KAAK,IAAI,QAAQA,EAAC,MAAM,IAAI;AAC7C,iBAAK,SAASA,EAAC,EAAE,WAAW,KAAK;AAAA,UACnC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYgB,KAAI;AAC9B,YAAI1B,KAAI,KAAK,WAAW0B,GAAE;AAC1B,YAAI1B,IAAG;AACL,UAAAA,GAAE,WAAW,IAAI;AAAA,QACnB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe;AAC7B,iBAAS,QAAQ,UAAU,QAAQ,MAAM,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC5F,cAAI,KAAK,IAAI,UAAU,KAAK;AAAA,QAC9B;AACA,cAAM,OAAO,CAAC;AACd,iBAASU,MAAK,KAAK,UAAU;AAC3B,cAAI,IAAI,WAAW,KAAK,IAAI,QAAQA,EAAC,MAAM,IAAI;AAC7C,iBAAK,SAASA,EAAC,EAAE,WAAW,IAAI;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,iBAASA,MAAK,KAAK,UAAU;AAC3B,eAAK,SAAS,eAAe,KAAK,SAASA,EAAC,CAAC;AAAA,QAC/C;AACA,aAAK,WAAW,CAAC;AACjB,aAAK,mBAAmB;AACxB,aAAK,oBAAoB,CAAC;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,WAAW,aAAa;AACpD,YAAIV,KAAI,KAAK,SAAS,SAAS;AAC/B,YAAIA,IAAG;AACL,UAAAA,GAAE,WAAW,KAAK;AAClB,cAAI,CAAC,aAAa;AAChB,iBAAK,SAAS,eAAeA,EAAC;AAAA,UAChC;AACA,iBAAO,KAAK,SAAS,SAAS;AAC9B,cAAI,KAAK,kBAAkB;AACzB,mBAAO,KAAK,iBAAiB,SAAS;AAAA,UACxC;AACA,cAAI,KAAK,mBAAmB;AAC1B,mBAAO,KAAK,kBAAkB,SAAS;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,iBAAS,QAAQ,UAAU,QAAQ,WAAW,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AACjG,mBAAS,KAAK,IAAI,UAAU,KAAK;AAAA,QACnC;AACA,iBAASU,KAAI,GAAGM,KAAI,SAAS,QAAQN,KAAIM,IAAGN,MAAK;AAC/C,eAAK,cAAc,UAAUA,EAAC,CAAC;AAAA,QACjC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW;AACzB,YAAI,KAAK,KAAK,gBAAgB;AAC9B,eAAO,MAAM,OAAO,GAAG,SAAS,IAAI;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,eAAO,KAAK,WAAW,uBAAuB;AAAA,MAChD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAASiB,IAAG;AAC1B,YAAI,KAAK,KAAK,gBAAgB;AAC9B,YAAI,CAAC,IAAI;AACP,cAAI,WAAW,SAASA,EAAC,KAAKC,YAAWD,EAAC,IAAI;AAAA,YAC5C,OAAOA;AAAA,UACT,IAAIA;AACJ,eAAK,kBAAkB,MAAM,QAAQ;AACrC,eAAK,SAAS,uBAAuB,IAAI;AAAA,QAC3C,OAAO;AACL,cAAI,SAASA,EAAC,KAAKC,YAAWD,EAAC,GAAG;AAChC,eAAG,SAASA,EAAC;AAAA,UACf,OAAO;AACL,gBAAI,KAAKA;AACT,gBAAI,GAAG,OAAO;AACZ,iBAAG,SAAS,GAAG,KAAK;AAAA,YACtB;AACA,gBAAI,GAAG,UAAU;AACf,iBAAG,WAAW,GAAG;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOxB;AAAA,EACT,EAAE,cAAc;AAEhB,MAAI,iBAAiB,CAAC,kBAAkB,uBAAuB,qBAAqB,aAAa,kBAAkB,kBAAkB,qBAAqB;AAC1J,MAAI,WAAW,SAAU,YAAY;AACnC,IAAAC,WAAUyB,WAAU,UAAU;AAC9B,QAAI,SAASxB,cAAawB,SAAQ;AAClC,aAASA,UAAS,UAAU/B,SAAQ;AAClC,UAAI;AACJ,MAAAQ,iBAAgB,MAAMuB,SAAQ;AAC9B,cAAQ,OAAO,KAAK,MAAM,UAAU/B,OAAM;AAC1C,YAAM,WAAW;AACjB,MAAAS,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,CAAC,CAAC;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,IAAI;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,IAAI;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,CAAC;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,yBAAyB,MAAM;AAC9E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,wBAAwB,CAAC,KAAK,GAAG,CAAC;AACjF,YAAM,oBAAoB;AAAA,QACxB,UAAUV,QAAO;AAAA,QACjB,gBAAgBA,QAAO,kBAAkB,OAAO,MAAM,SAAS,SAAS,iBAAiBA,QAAO;AAAA,QAChG,YAAYA,QAAO,cAAc,MAAM,SAAS,SAAS;AAAA,QACzD,iBAAiBA,QAAO,mBAAmB,MAAM,SAAS,SAAS;AAAA,QACnE,gBAAgBA,QAAO;AAAA,QACvB,qBAAqBA,QAAO;AAAA,QAC5B,gBAAgBA,QAAO;AAAA,QACvB,qBAAqBA,QAAO;AAAA,QAC5B,mBAAmBA,QAAO;AAAA,QAC1B,WAAWA,QAAO;AAAA,MACpB,CAAC;AACD,YAAM,UAAU,EAAEA,QAAO,YAAY;AACrC,YAAM,UAAU;AAChB,YAAM,UAAUA,QAAO;AACvB,YAAM,OAAOA,QAAO;AACpB,YAAM,SAASA,QAAO;AACtB,YAAM,YAAYA,QAAO;AACzB,YAAM,iBAAiBA,QAAO,kBAAkB,OAAO,IAAIA,QAAO;AAClE,YAAM,sBAAsBA,QAAO;AACnC,YAAM,qBAAqB;AAC3B,YAAM,SAAS,CAAC;AAChB,YAAM,oBAAoBA,QAAO;AACjC,YAAM,iBAAiBA,QAAO;AAC9B,YAAM,sBAAsBA,QAAO;AACnC,YAAM,YAAYA,QAAO;AACzB,YAAM,WAAWA,QAAO;AACxB,YAAM,iBAAiBA,QAAO;AAC9B,YAAM,sBAAsBA,QAAO;AACnC,YAAM,gBAAgBA,QAAO,kBAAkB;AAC/C,YAAM,WAAWA,QAAO,UAAU;AAClC,YAAM,oBAAoBA,QAAO,qBAAqB;AACtD,YAAM,WAAWA,QAAO,UAAU;AAClC,YAAM,cAAcA,QAAO,eAAe,CAAC;AAC3C,YAAM,QAAQA,QAAO,SAAS,SAAS;AACvC,YAAM,YAAY;AAClB,YAAM,sBAAsBA,QAAO,uBAAuB,SAAS,SAAS;AAC5E,YAAM,wBAAwB,SAAS,SAAS;AAChD,UAAIA,QAAO,0BAA0B,OAAO;AAC1C,cAAM,wBAAwB;AAAA,MAChC;AACA,YAAM,sBAAsBA,QAAO,wBAAwB;AAC3D,UAAIA,QAAO,kBAAkB;AAC3B,cAAM,KAAK,uBAAuBA,QAAO,gBAAgB;AAAA,MAC3D;AACA,UAAI,KAAKA,QAAO,YAAYA,QAAO,oBAAoB,SAAS,SAAS;AACzE,YAAM,YAAY,EAAE;AACpB,UAAIA,QAAO,kBAAkB,MAAM;AACjC,cAAM,kBAAkBA,QAAO,cAAc;AAAA,MAC/C,OAAO;AACL,YAAI,oBAAoBA,QAAO,SAASA,QAAO,SAASA,QAAO,UAAUA,QAAO,UAAU,SAAS,SAAS,UAAU,gBAAgB;AACtI,cAAM,UAAU,iBAAiB;AAAA,MACnC;AACA,UAAI,OAAO,CAAC,SAASA,QAAO,QAAQ,EAAE,EAAE,KAAK,GAAG;AAChD,YAAM,QAAQ,MAAMA,QAAO,IAAI;AAC/B,aAAO;AAAA,IACT;AACA,IAAAa,cAAakB,WAAU,CAAC;AAAA,MACtB,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,eAAO;AAAA,UACL,GAAG,KAAK,SAAS;AAAA,UACjB,GAAG,KAAK,SAAS;AAAA,QACnB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB;AACrC,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB;AACnC,YAAI,KAAK,KAAK,WAAW,KAAK,QAAQ;AACtC,YAAI,MAAM,QAAQ,GAAG,SAAS,GAAG;AAC/B,cAAI,iBAAiB,KAAK,SAAS,4BAA4B,MAAM,KAAK;AAC1E,eAAK,qBAAqB;AAC1B,cAAI,cAAc,KAAK,SAAS,6BAA6B,KAAK,qBAAqB,MAAM,KAAK,qBAAqB;AACvH,cAAI,mBAAmB,aAAa;AAClC,iBAAK,YAAY,cAAc;AAC/B,iBAAK,SAAS,WAAW;AACzB,iBAAK,SAAS,YAAY,KAAK,SAAS,cAAc;AACtD,iBAAK,SAAS,SAAS,KAAK,SAAS,WAAW;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,QAAQ;AACxC,aAAK,SAAS,OAAO,UAAU,MAAM,MAAM;AAC3C,aAAK,mBAAmB;AACxB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,eAAe;AACpD,aAAK,KAAK,sBAAsB;AAAA,UAC9B,UAAU;AAAA,UACV,QAAQ;AAAA,QACV,CAAC;AACD,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,cAAc;AACtC,YAAIC,KAAI,KAAK,SAAS,OAAO,cAAc,YAAY;AACvD,aAAK,kBAAkBA,EAAC;AACxB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,MAAM;AAClC,aAAK,YAAY,KAAK,IAAI;AAC1B,aAAK,SAAS,iBAAiB,IAAI;AAAA,MACrC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,YAAY,KAAK,iBAAiB;AACrE,cAAM,OAAO,OAAO,KAAK,YAAY,QAAQ,UAAU,IAAI;AAC3D,YAAI,OAAO,GAAG;AACZ,eAAK,YAAY,OAAO,KAAK,CAAC;AAC9B,eAAK,SAAS,iBAAiB,IAAI;AAAA,QACrC;AACA,YAAI,CAAC,mBAAmB,KAAK,iBAAiB,KAAK,YAAY,WAAW,GAAG;AAC3E,eAAK,SAAS,eAAe,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsBhC,SAAQ;AAC5C,YAAIiC,KAAI,KAAK,YAAY;AACzB,iBAASrB,KAAI,GAAGA,KAAIqB,IAAGrB,MAAK;AAC1B,eAAK,SAAS,iBAAiB,KAAK,YAAY,CAAC,GAAGZ,OAAM;AAAA,QAC5D;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,eAAe;AACxC,YAAIiC,KAAI,CAAC;AACT,iBAASrB,KAAI,GAAGA,KAAI,KAAK,YAAY,QAAQA,MAAK;AAChD,cAAI,KAAK,YAAYA,EAAC,EAAE,UAAU,CAAC,MAAM,iBAAiB,KAAK,YAAYA,EAAC,EAAE,UAAU,CAAC,MAAM,eAAe;AAC5G,YAAAqB,GAAE,KAAK,KAAK,YAAYrB,EAAC,CAAC;AAAA,UAC5B;AAAA,QACF;AACA,iBAASM,KAAI,GAAG,QAAQe,GAAE,QAAQf,KAAI,OAAOA,MAAK;AAChD,eAAK,SAAS,iBAAiBe,GAAE,CAAC,CAAC;AAAA,QACrC;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASZ,YAAWC,IAAG,wBAAwB,0BAA0B;AAC9E,aAAKY,iBAAgBH,UAAS,SAAS,GAAG,cAAc,IAAI,EAAE,KAAK,MAAMT,EAAC;AAC1E,aAAK,SAAS,WAAWA,EAAC;AAC1B,YAAIA,IAAG;AACL,eAAK,aAAa;AAAA,QACpB,OAAO;AACL,eAAK,aAAa;AAAA,QACpB;AACA,YAAI,CAAC,wBAAwB;AAC3B,mBAASV,KAAI,GAAGA,KAAI,KAAK,YAAY,QAAQA,MAAK;AAChD,iBAAK,YAAYA,EAAC,EAAE,WAAWU,EAAC;AAChC,gBAAI,CAAC,0BAA0B;AAC7B,kBAAI,OAAO,SAAS,KAAK,YAAYV,EAAC,EAAE,UAAU,CAAC,IAAI,IAAI;AAC3D,kBAAI,KAAK,YAAYA,EAAC,EAAE,UAAU,IAAI,EAAE,YAAY,WAAW,GAAG;AAChE,qBAAK,YAAYA,EAAC,EAAE,UAAU,IAAI,EAAE,WAAWU,IAAG,MAAM,IAAI;AAAA,cAC9D;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUL,IAAG,SAAS;AACpC,aAAKiB,iBAAgBH,UAAS,SAAS,GAAG,aAAa,IAAI,EAAE,KAAK,MAAMd,IAAG,OAAO;AAClF,aAAK,cAAcA,GAAE,iBAAiBA,GAAE,UAAU;AAClD,aAAK,mBAAmBA,GAAE,sBAAsBA,GAAE,eAAe;AACjE,aAAK,iBAAiBA,GAAE;AACxB,aAAK,sBAAsBA,GAAE;AAC7B,aAAK,YAAYA,GAAE;AACnB,aAAK,oBAAoBA,GAAE;AAC3B,aAAK,WAAWA,GAAE;AAClB,YAAIA,GAAE,kBAAkB,MAAM;AAC5B,eAAK,iBAAiBA,GAAE;AAAA,QAC1B;AACA,YAAIA,GAAE,OAAO;AACX,eAAK,QAAQA,GAAE;AAAA,QACjB;AACA,QAAAhB,QAAOgB,IAAG,cAAc;AACxB,aAAK,SAAS,kBAAkB,MAAMA,EAAC;AAAA,MACzC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASG,WAAU;AACxB,aAAKc,iBAAgBH,UAAS,SAAS,GAAG,WAAW,IAAI,EAAE,KAAK,IAAI;AACpE,aAAK,UAAU;AACf,YAAI,KAAK,YAAY,MAAM;AACzB,eAAK,SAAS,gBAAgB,IAAI;AAAA,QACpC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS;AACvB,eAAO,KAAK,mBAAmB,IAAI,OAAO,EAAE,KAAK,WAAW,KAAK,KAAK,iBAAiB,KAAK,KAAK,YAAY,SAAS,KAAK;AAAA,MAC7H;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa;AAC3B,eAAO,KAAK,SAAS,OAAO,WAAW,IAAI;AAAA,MAC7C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,eAAe;AAC3C,YAAI,QAAQ;AACZ,YAAI,eAAe;AACjB,mBAASnB,KAAI,GAAGA,KAAI,KAAK,YAAY,QAAQA,MAAK;AAChD,gBAAI,KAAK,YAAYA,EAAC,EAAE,UAAU,CAAC,MAAM,iBAAiB,KAAK,YAAYA,EAAC,EAAE,UAAU,CAAC,MAAM,eAAe;AAC5G,sBAAQ;AACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,SAAS;AAC9C,aAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU;AACxB,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,eAAO,KAAK,YAAY,CAAC;AAAA,MAC3B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASuB,iBAAgB,IAAI,QAAQ;AAC1C,YAAI,eAAe;AAAA,UACjB,UAAU,KAAK;AAAA,UACf,UAAU;AAAA,QACZ;AACA,YAAI;AACJ,YAAI,iBAAiB,IAAI,sBAAsB,GAAG;AAChD,cAAI,MAAM;AACV,qBAAW,gBAAgB,MAAM,GAAG;AACpC,mBAAS,UAAU,aAAa,SAAS,MAAM,GAAG;AAAA,QACpD,WAAW,SAAS,EAAE,GAAG;AACvB,qBAAW,gBAAgB,IAAI,MAAM,IAAI,YAAY;AAAA,QACvD,OAAO;AACL,cAAI,MAAM;AACV,UAAAlC,QAAO,cAAc,IAAI,WAAW,CAAC,CAAC;AACtC,qBAAW,gBAAgB,IAAI,MAAM,IAAI,MAAM,YAAY;AAAA,QAC7D;AACA,iBAAS,SAAS;AAClB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,YAAI,MAAM,KAAK,gBAAgB,EAAE;AACjC,aAAK,oBAAoB,GAAG;AAAA,MAC9B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,IAAI;AACtC,YAAI,KAAK,YAAY,MAAM;AACzB,eAAK,SAAS,gBAAgB,IAAI;AAAA,QACpC;AACA,aAAK,WAAW;AAAA,MAClB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASuB,UAAS,OAAO,SAAS;AACvC,aAAKU,iBAAgBH,UAAS,SAAS,GAAG,YAAY,IAAI,EAAE,KAAK,MAAM,OAAO,OAAO;AACrF,YAAI,KAAK,YAAY,MAAM;AACzB,eAAK,SAAS,SAAS,KAAK;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASN,aAAY,OAAO,SAAS;AAC1C,aAAKS,iBAAgBH,UAAS,SAAS,GAAG,eAAe,IAAI,EAAE,KAAK,MAAM,OAAO,OAAO;AACxF,YAAI,KAAK,YAAY,MAAM;AACzB,eAAK,SAAS,YAAY,KAAK;AAAA,QACjC;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOA;AAAA,EACT,EAAE1B,UAAS;AAEX,MAAI,oBAAoB;AACxB,MAAI,sBAAsB;AAC1B,WAAS,gBAAgB,MAAM,UAAU+B,QAAO,QAAQ,SAAS,WAAW,UAAU;AACpF,QAAIrB;AACJ,QAAI,UAAU;AACZ,WAAK,UAAUqB,MAAK,IAAI;AACxB,eAAS,cAAc,IAAI;AAAA,IAC7B,OAAO;AACL,UAAI,KAAK,YAAY,KAAK,gBAAgB,KAAK,cAAcA,MAAK,KAAK,KAAK,SAAS,SAAS,UAAUA,MAAK,KAAK,KAAK,SAAS,SAAS;AACzI,UAAI,KAAK,KAAK,eAAeA,MAAK,KAAK,KAAK,iBAAiB,KAAK,SAAS,SAAS,eAAeA,MAAK,KAAK,KAAK,SAAS,SAAS;AACpI,UAAI,GAAG,QAAQ,QAAQ,KAAK,cAAc,MAAM;AAC9C,WAAG,OAAO,KAAK,WAAW;AAAA,MAC5B;AACA,UAAI,GAAG,iBAAiB,QAAQ,KAAK,cAAc,MAAM;AACvD,WAAG,gBAAgB,KAAK,WAAW;AAAA,MACrC;AACA,UAAI,GAAG,gBAAgB,QAAQ,KAAK,cAAc,MAAM;AACtD,WAAG,eAAe,KAAK,WAAW;AAAA,MACpC;AACA,UAAI,MAAM,KAAK,oBAAoBA,MAAK,KAAK,KAAK,sBAAsB,KAAK,sBAAsB,KAAK,SAAS,SAAS,oBAAoBA,MAAK,KAAK,KAAK,SAAS,SAAS;AAC/K,UAAI,KAAK,mBAAmB,MAAM;AAChC,YAAI,OAAO,MAAM;AACf,gBAAM,CAAC;AAAA,QACT;AACA,YAAI,IAAI,QAAQ,MAAM;AACpB,cAAI,OAAO,KAAK,gBAAgB;AAAA,QAClC;AAAA,MACF;AACA,UAAIC,KAAI,KAAK,QAAQ,KAAK,MAAMD,MAAK,IAAI;AACzC,eAAS,UAAU,OAAO,SAAS,KAAK,SAAS,SAAS,WAAW,OAAO,KAAK,SAAS,SAAS,QAAQA,MAAK,IAAI,KAAK,SAAS,SAAS;AAC3I,MAAArB,KAAI,KAAK,SAAS,sBAAsB;AAAA,QACtC,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,UAAU;AAAA,QACV,aAAa,CAAC,IAAI;AAAA,QAClB,MAAMsB;AAAA,QACN;AAAA,QACA,OAAO,KAAK;AAAA,QACZ;AAAA,QACA,qBAAqB,KAAK,YAAY,KAAK,SAAS,SAAS;AAAA,QAC7D,uBAAuB,KAAK,cAAc,KAAK,SAAS,SAAS;AAAA,MACnE,CAAC;AACD,WAAK,SAAS,iBAAiBtB,EAAC;AAChC,UAAI,YAAY,MAAM;AACpB,QAAAA,GAAE,gBAAgB;AAAA,MACpB;AACA,WAAK,UAAUqB,MAAK,IAAIrB;AAAA,IAC1B;AACA,WAAOA;AAAA,EACT;AACA,MAAIuB,cAAa,SAAU,YAAY;AACrC,IAAAhC,WAAUgC,aAAY,UAAU;AAChC,QAAI,SAAS/B,cAAa+B,WAAU;AACpC,aAASA,YAAW,UAAUtC,SAAQ;AACpC,UAAI;AACJ,MAAAQ,iBAAgB,MAAM8B,WAAU;AAChC,cAAQ,OAAO,KAAK,MAAM,UAAUtC,OAAM;AAC1C,YAAM,WAAW;AACjB,MAAAS,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,wBAAwB,GAAG;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,qBAAqB;AAC9E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,IAAI;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,KAAK;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,CAAC;AACxD,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,CAAC,MAAM,IAAI,CAAC;AACxE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,CAAC,CAAC;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,CAAC,CAAC;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,MAAM;AACzE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,wBAAwB,MAAM;AAC7E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,CAAC,CAAC;AAC5D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,KAAK;AAC/D,YAAM,KAAKV,QAAO;AAClB,YAAM,qBAAqBA,QAAO;AAClC,YAAM,SAASA,QAAO;AACtB,YAAM,SAASA,QAAO;AACtB,UAAIA,QAAO,gBAAgB;AACzB,cAAM,SAASA,QAAO,eAAe;AACrC,cAAM,WAAWA,QAAO,eAAe;AAAA,MACzC,OAAO;AACL,cAAM,WAAW,SAAS,MAAM,MAAM,MAAM;AAAA,MAC9C;AACA,UAAIA,QAAO,gBAAgB;AACzB,cAAM,SAASA,QAAO,eAAe;AACrC,cAAM,WAAWA,QAAO,eAAe;AAAA,MACzC,OAAO;AACL,cAAM,WAAW,SAAS,MAAM,MAAM,MAAM;AAAA,MAC9C;AACA,YAAM,QAAQA,QAAO;AACrB,UAAI,eAAeA,QAAO,UAAUA,QAAO,QAAQ,CAAC,IAAIA,QAAO;AAC/D,UAAI,eAAeA,QAAO,UAAUA,QAAO,QAAQ,CAAC,IAAIA,QAAO;AAC/D,eAAS,OAAO,MAAM,MAAM;AAC5B,eAAS,OAAO,MAAM,MAAM;AAC5B,YAAM,UAAU;AAChB,YAAM,SAAS;AAAA,QACb,UAAUA,QAAO;AAAA,QACjB,YAAYA,QAAO;AAAA,QACnB,kBAAkBA,QAAO,gBAAgB;AAAA,QACzC,UAAUA,QAAO;AAAA,MACnB;AACA,YAAM,gBAAgB;AACtB,UAAIA,QAAO,MAAM;AACf,QAAAA,QAAO,YAAYA,QAAO,aAAa,MAAM,SAAS,6BAA6BA,QAAO,IAAI,EAAE;AAAA,MAClG;AACA,YAAM,eAAeA,QAAO;AAC5B,YAAM,gBAAgBA,QAAO,aAAa,CAAC,MAAM,IAAI;AACrD,YAAM,gBAAgBA,QAAO;AAC7B,YAAM,qBAAqBA,QAAO;AAClC,YAAM,iBAAiBA,QAAO,kBAAkB,CAAC,MAAM,IAAI;AAC3D,YAAM,sBAAsBA,QAAO,uBAAuB,CAAC,MAAM,IAAI;AACrE,YAAM,aAAaA,QAAO;AAC1B,YAAM,kBAAkBA,QAAO;AAC/B,YAAM,QAAQA,QAAO;AACrB,YAAM,aAAa,MAAM,MAAM,QAAQ,MAAM,UAAU,cAAcA,QAAO,cAAc;AAC1F,YAAM,aAAa,OAAO,MAAM,QAAQ,MAAM,UAAU,cAAcA,QAAO,cAAc;AAC3F,UAAI,CAAC,MAAM,OAAO;AAChB,cAAM,QAAQ,MAAM,UAAU,CAAC,EAAE;AAAA,MACnC;AACA,UAAIA,QAAO,0BAA0B,MAAM;AACzC,cAAM,UAAU,CAAC,EAAE,gBAAgBA,QAAO;AAC1C,cAAM,UAAU,CAAC,EAAE,gBAAgBA,QAAO;AAAA,MAC5C;AACA,UAAI,cAAc,MAAM,SAAS,SAAS;AAC1C,UAAIA,QAAO,eAAe,OAAO;AAC/B,sBAAc;AAAA,MAChB;AACA,UAAI,MAAM,UAAU,CAAC,EAAE,0BAA0B,OAAO;AACtD,sBAAc;AAAA,MAChB;AACA,UAAI,MAAM,UAAU,CAAC,EAAE,0BAA0B,OAAO;AACtD,sBAAc;AAAA,MAChB;AACA,YAAM,gBAAgBA,QAAO,aAAa,CAAC,MAAM,IAAI;AACrD,YAAM,eAAeA,QAAO,YAAY;AACxC,UAAI,YAAYA,QAAO,YAAY,MAAM,UAAU,CAAC,EAAE,uBAAuB,MAAM,UAAU,CAAC,EAAE,uBAAuB,MAAM,SAAS,SAAS;AAC/I,UAAI,oBAAoBC,QAAO,CAAC,GAAG,MAAM,UAAU,CAAC,EAAE,kBAAkB,MAAM,UAAU,CAAC,EAAE,kBAAkBD,QAAO,cAAc,MAAM,SAAS,SAAS,UAAU;AACpK,YAAM,oBAAoB;AAAA,QACxB,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,iBAAiBC,QAAO,CAAC,GAAG,MAAM,UAAU,CAAC,EAAE,uBAAuB,MAAM,UAAU,CAAC,EAAE,uBAAuBD,QAAO,mBAAmB,MAAM,SAAS,SAAS,eAAe;AAAA,MACnL,CAAC;AACD,UAAIA,QAAO,cAAc;AACvB,0BAAkB,eAAeA,QAAO;AAAA,MAC1C;AACA,UAAIA,QAAO,cAAc;AACvB,0BAAkB,gBAAgBA,QAAO;AAAA,MAC3C;AACA,UAAIA,QAAO,WAAW;AACpB,0BAAkB,cAAcA,QAAO;AAAA,MACzC;AACA,UAAIA,QAAO,OAAO;AAChB,0BAAkB,SAASA,QAAO;AAAA,MACpC;AACA,UAAI,CAAC,MAAM,SAAS,iBAAiB;AACnC,YAAI,mBAAmB,MAAM,SAAS,gBAAgBI,MAAK;AAC3D,cAAM,SAAS,eAAe,MAAM,UAAU,CAAC,GAAG;AAAA,UAChD,WAAW;AAAA,QACb,CAAC;AACD,cAAM,SAAS,eAAe,MAAM,UAAU,CAAC,GAAG;AAAA,UAChD,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AACA,YAAM,OAAOJ,QAAO,QAAQ,MAAM,UAAU,CAAC,EAAE;AAC/C,YAAM,WAAWA,QAAO;AACxB,UAAIA,QAAO,YAAY,MAAM;AAC3B,cAAM,WAAW,MAAM,UAAU,CAAC,EAAE;AAAA,MACtC;AACA,UAAI,KAAKC,QAAO,CAAC,GAAG,MAAM,UAAU,CAAC,EAAE,UAAU;AACjD,MAAAA,QAAO,IAAI,MAAM,UAAU,CAAC,EAAE,UAAU;AACxC,MAAAA,QAAO,IAAI,MAAM,UAAU;AAC3B,YAAM,aAAa;AACnB,YAAM,kBAAkB,MAAM,cAAc,KAAK,CAAC;AAClD,YAAM,cAAc,MAAM,UAAU,CAAC,EAAE,aAAa,MAAM,UAAU,CAAC,EAAE,aAAaD,QAAO,aAAa,MAAM,SAAS,SAAS,WAAW,IAAI;AAC/I,UAAIuC,QAAOvC,QAAO,QAAQ,QAAQ,CAACwC,UAASxC,QAAO,IAAI,IAAI,CAAC,IAAIA,QAAO;AACvE,YAAM,QAAQuC,KAAI;AAClB,UAAI,SAAS,CAAC,SAAS,MAAM,UAAU,CAAC,EAAE,UAAU,MAAM,UAAU,CAAC,EAAE,UAAUvC,QAAO,IAAI,EAAE,KAAK,GAAG;AACtG,UAAI,QAAQ,KAAK,MAAM,GAAG;AACxB,cAAM,QAAQ,QAAQA,QAAO,IAAI;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AACA,IAAAa,cAAayB,aAAY,CAAC;AAAA,MACxB,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB;AACrC,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,eAAO;AAAA,UACL,GAAG,KAAK,UAAU;AAAA,UAClB,GAAG,KAAK,UAAU;AAAA,QACpB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,UAAU,IAAI,MAAM,QAAQ,IAAI;AAC3D,eAAO,QAAQ,KAAK,SAAS,MAAM,EAAE;AACrC,eAAO,gBAAgB,MAAM,IAAI,WAAW,IAAI,GAAG,QAAQ,EAAE;AAAA,MAC/D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,eAAOA,YAAW;AAAA,MACpB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,IAAI;AAC/B,eAAO,KAAK,eAAe,QAAQ,QAAQ,MAAM,OAAO,GAAG,0BAA0B,OAAO,KAAK,eAAe;AAAA,MAClH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,YAAY;AACxC,aAAK,aAAa,eAAe;AAAA,MACnC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa;AAC3B,eAAO,KAAK,aAAa,QAAQ,KAAK,UAAU,CAAC,EAAE,wBAAwB,QAAQ,KAAK,UAAU,CAAC,EAAE,wBAAwB;AAAA,MAC/H;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,UAAU;AACpC,aAAK,WAAW,aAAa;AAAA,MAC/B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUrB,IAAG,SAAS;AACpC,YAAI,aAAa;AACjB,YAAIA,GAAE,aAAa,MAAM;AACvB,uBAAa,KAAK,kBAAkB,qBAAqB,QAAQ,SAAS;AAC1E,cAAI,cAAc,MAAM;AACtB,yBAAa,KAAK,iBAAiBA,GAAE,WAAW,QAAQ,SAAS;AACjE,iBAAK,cAAc,qBAAqB,YAAY,QAAQ,SAAS;AAAA,UACvE;AACA,eAAK,qBAAqB,UAAU;AAAA,QACtC;AACA,aAAKiB,iBAAgBI,YAAW,SAAS,GAAG,aAAa,IAAI,EAAE,KAAK,MAAMrB,IAAG,OAAO;AACpF,YAAIA,GAAE,cAAc,MAAM;AACxB,eAAK,cAAcA,GAAE,UAAU;AAAA,QACjC;AACA,YAAIA,GAAE,YAAY,MAAM;AACtB,eAAK,YAAYA,GAAE,QAAQ;AAAA,QAC7B;AACA,YAAIA,GAAE,OAAO;AACX,eAAK,QAAQA,GAAE;AAAA,QACjB;AACA,YAAI,WAAW;AACf,YAAIA,GAAE,QAAQ;AACZ,qBAAW,KAAK,kBAAkB,mBAAmB,QAAQ,MAAM;AACnE,cAAI,YAAY,MAAM;AACpB,uBAAW,CAAC,8BAA8BA,GAAE,MAAM,GAAG,8BAA8BA,GAAE,MAAM,CAAC;AAC5F,iBAAK,cAAc,mBAAmB,UAAU,QAAQ,MAAM;AAAA,UAChE;AAAA,QACF,WAAWA,GAAE,SAAS;AACpB,qBAAW,KAAK,kBAAkB,mBAAmB,QAAQ,OAAO;AACpE,cAAI,YAAY,MAAM;AACpB,uBAAW,CAAC,8BAA8BA,GAAE,QAAQ,CAAC,CAAC,GAAG,8BAA8BA,GAAE,QAAQ,CAAC,CAAC,CAAC;AACpG,iBAAK,cAAc,mBAAmB,UAAU,QAAQ,OAAO;AAAA,UACjE;AAAA,QACF;AACA,YAAI,YAAY,MAAM;AACpB,eAAK,SAAS,OAAO,qBAAqB,MAAM,QAAQ;AACxD,cAAI,KAAK,SAAS,OAAO,gBAAgB,KAAK,UAAU,CAAC,CAAC,GAAG;AAC3D,iBAAK,SAAS,QAAQ,KAAK,UAAU,CAAC,EAAE,OAAO;AAAA,UACjD;AAAA,QACF;AACA,aAAK,SAAS,mBAAmB,KAAK,WAAWA,EAAC;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASO,UAASS,IAAG,SAAS;AACnC,aAAKC,iBAAgBI,YAAW,SAAS,GAAG,YAAY,IAAI,EAAE,KAAK,MAAML,EAAC;AAC1E,YAAI,SAAS;AACX,eAAK,UAAU,CAAC,EAAE,SAASA,EAAC;AAC5B,eAAK,UAAU,CAAC,EAAE,SAASA,EAAC;AAC5B,cAAI,KAAK,mBAAmB;AAC1B,iBAAK,kBAAkB,SAASA,EAAC;AAAA,UACnC;AAAA,QACF;AACA,YAAI,KAAK,WAAW;AAClB,eAAK,SAAS,kBAAkB,KAAK,WAAWA,EAAC;AAAA,QACnD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASR,aAAYQ,IAAG,SAAS;AACtC,aAAKC,iBAAgBI,YAAW,SAAS,GAAG,eAAe,IAAI,EAAE,KAAK,MAAML,EAAC;AAC7E,YAAI,SAAS;AACX,eAAK,UAAU,CAAC,EAAE,YAAYA,EAAC;AAC/B,eAAK,UAAU,CAAC,EAAE,YAAYA,EAAC;AAC/B,cAAI,KAAK,mBAAmB;AAC1B,iBAAK,kBAAkB,YAAYA,EAAC;AAAA,UACtC;AAAA,QACF;AACA,YAAI,KAAK,WAAW;AAClB,eAAK,SAAS,qBAAqB,KAAK,WAAWA,EAAC;AAAA,QACtD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASZ,YAAWC,IAAG;AAC5B,aAAKY,iBAAgBI,YAAW,SAAS,GAAG,cAAc,IAAI,EAAE,KAAK,MAAMhB,EAAC;AAC5E,YAAI,KAAK,WAAW;AAClB,eAAK,SAAS,oBAAoB,KAAK,WAAWA,EAAC;AAAA,QACrD;AACA,aAAK,SAAS,iBAAiB,IAAI;AAAA,MACrC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASF,WAAU;AACxB,aAAKc,iBAAgBI,YAAW,SAAS,GAAG,WAAW,IAAI,EAAE,KAAK,IAAI;AACtE,aAAK,YAAY;AACjB,aAAK,iBAAiB;AACtB,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,SAAS,iBAAiB,IAAI;AACnC,aAAK,YAAY;AACjB,aAAK,UAAU;AAAA,MACjB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW;AACzB,eAAO,CAAC,KAAK,UAAU,CAAC,EAAE,QAAQ,GAAG,KAAK,UAAU,CAAC,EAAE,QAAQ,CAAC;AAAA,MAClE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,eAAe,QAAQ;AACtD,YAAI,gBAAgB;AAAA,UAClB,UAAU,KAAK,OAAO;AAAA,UACtB,YAAY,KAAK,OAAO;AAAA,UACxB,kBAAkB,KAAK,OAAO,gBAAgB;AAAA,QAChD,GACI;AACJ,YAAI,SAAS,aAAa,GAAG;AAC3B,sBAAY,KAAK,SAAS,eAAe,MAAM,eAAe,aAAa;AAAA,QAC7E,OAAO;AACL,cAAI,KAAK;AACT,sBAAY,KAAK,SAAS,eAAe,MAAM,GAAG,MAAMG,OAAM,GAAG,WAAW,CAAC,GAAG,aAAa,CAAC;AAAA,QAChG;AACA,YAAI,UAAU,MAAM;AAClB,oBAAU,SAAS;AAAA,QACrB;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,WAAW,cAAc,8BAA8B,QAAQ;AAClG,YAAI,KAAK,cAAc,WAAW;AAChC,cAAI,UACA,kBAAkB;AACtB,cAAI,KAAK,aAAa,MAAM;AAC1B,uBAAW,KAAK;AAChB,8BAAkB,KAAK,SAAS,kBAAkB,KAAK,SAAS;AAChE,iBAAK,SAAS,iBAAiB,IAAI;AAAA,UACrC;AACA,eAAK,YAAY;AACjB,cAAI,QAAQ;AACV,iBAAK,cAAc,qBAAqB,WAAW,MAAM;AAAA,UAC3D;AACA,eAAK,SAAS,eAAe;AAC7B,cAAI,YAAY,MAAM;AACpB,gBAAIvC,KAAI,KAAK,YAAY;AACzB,qBAASU,MAAKV,IAAG;AACf,mBAAK,SAAS,gBAAgBA,GAAEU,EAAC,GAAG,IAAI;AAAA,YAC1C;AAAA,UACF;AACA,cAAI,CAAC,cAAc;AACjB,iBAAK,SAAS,iBAAiB,IAAI;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,eAAe,cAAc,8BAA8B,QAAQ;AAC/F,YAAI,YAAY,KAAK,iBAAiB,eAAe,MAAM;AAC3D,aAAK,qBAAqB,WAAW,cAAc,8BAA8B,MAAM;AAAA,MACzF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,KAAK,aAAa;AAChD,YAAI,UAAU,KAAK,UAAU,GAAG,GAC5B,OAAO,QAAQ,WACf,MAAM,KAAK,SAAS,aAAa,QAAQ,OAAO,GAChD,OAAO,IAAI,QAAQ,OAAO,GAC1B,OAAO,gBAAgB,MAAM,MAAM,KAAK,MAAM,QAAQ,SAAS,MAAM,WAAW;AACpF,aAAK,UAAU,GAAG,IAAI;AACtB,YAAI,OAAO,MAAM,GAAG,IAAI;AACxB,gBAAQ,qBAAqB,IAAI;AACjC,aAAK,SAAS,eAAe,OAAO;AACpC,aAAK,SAAS,KAAK,yBAAyB;AAAA,UAC1C,UAAU;AAAA,UACV,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF,CAAC,CAAC;AACF,WAAO0B;AAAA,EACT,EAAEjC,UAAS;AACX,EAAAI,iBAAgB6B,aAAY,QAAQ,YAAY;AAEhD,WAAS,qBAAqBpC,IAAG;AAC/B,QAAIA,GAAE,QAAQ,MAAM;AAClB,UAAI,OAAOD,QAAO;AAAA,QAChB,kBAAkBC,GAAE;AAAA,MACtB,GAAGA,GAAE,UAAU;AACf,MAAAA,GAAE,OAAO,MAAM,cAAc,IAAI;AACjC,UAAIwC,OAAMxC,GAAE,SAAS,eAAe,OAAOA,GAAE,WAAWA,GAAE,WAAW;AACrE,MAAAA,GAAE,SAAS,SAASA,GAAE,MAAMwC,IAAG;AAC/B,MAAAxC,GAAE,KAAK,MAAM;AAAA,QACX,SAASA;AAAA,MACX;AAAA,IACF;AACA,QAAI,SAASA,GAAE,KAAK;AACpB,QAAI,UAAU,MAAM;AAClB,UAAIA,GAAE,qBAAqBoC,aAAY;AACrC,YAAI,YAAYpC,GAAE,UAAU;AAC5B,iBAAS,aAAa,OAAO,UAAU,SAAS;AAAA,MAClD,WAAWA,GAAE,qBAAqB,UAAU;AAC1C,YAAI,WAAWA,GAAE,UAAU;AAC3B,iBAAS,YAAY,OAAO,SAAS,SAAS;AAAA,MAChD;AACA,UAAI,UAAU,MAAM;AAClB,uBAAe,QAAQA,GAAE,MAAM,CAAC;AAAA,MAClC;AAAA,IACF;AACA,WAAOA,GAAE;AAAA,EACX;AACA,WAAS,gBAAgBA,IAAG,MAAMF,SAAQ,SAAS;AACjD,yBAAqBE,EAAC;AACtB,QAAIyC,UAAS,CAAC,GAAG,CAAC;AAClB,QAAI,QAAQ,OAAO,GAAG;AACpB,MAAAA,QAAO,CAAC,IAAI,CAAC,QAAQ;AAAA,IACvB;AACA,QAAI,QAAQ,OAAO,GAAG;AACpB,MAAAA,QAAO,CAAC,IAAI,CAAC,QAAQ;AAAA,IACvB;AACA,QAAIX,KAAI;AAAA,MACN,KAAK;AAAA,MACL,QAAQhC,QAAO,SAASA,QAAO,SAAS;AAAA,MACxC,MAAMA,QAAO,OAAOA,QAAO,OAAO;AAAA,MAClC,WAAW,eAAe2C,QAAO,CAAC,IAAI,MAAMA,QAAO,CAAC,IAAI;AAAA,MACxD,kBAAkB;AAAA,IACpB;AACA,UAAMzC,GAAE,MAAM8B,EAAC;AAAA,EACjB;AACA,WAAS,kBAAkB9B,IAAG,OAAO;AACnC,QAAI,KAAKA;AACT,QAAI,GAAG,QAAQ,QAAQ,GAAG,KAAK,cAAc,MAAM;AACjD,SAAG,KAAK,WAAW,YAAY,GAAG,IAAI;AAAA,IACxC;AACA,QAAI,GAAG,UAAU,QAAQ,GAAG,OAAO,cAAc,MAAM;AACrD,SAAG,OAAO,WAAW,YAAY,GAAG,MAAM;AAAA,IAC5C;AACA,WAAO,GAAG;AACV,WAAO,GAAG;AAAA,EACZ;AACA,GAAC,SAAU,UAAU;AACnB,IAAAI,WAAU,mBAAmB,QAAQ;AACrC,QAAI,SAASC,cAAa,iBAAiB;AAC3C,aAAS,oBAAoB;AAC3B,UAAI;AACJ,MAAAC,iBAAgB,MAAM,iBAAiB;AACvC,eAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,aAAK,IAAI,IAAI,UAAU,IAAI;AAAA,MAC7B;AACA,cAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,MAAAC,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,OAAO;AAEV,MAAI,eAAe,WAAY;AAC7B,aAASkC,gBAAe;AACtB,MAAApC,iBAAgB,MAAMoC,aAAY;AAAA,IACpC;AACA,IAAA/B,cAAa+B,eAAc,MAAM,CAAC;AAAA,MAChC,KAAK;AAAA,MACL,OAAO,SAAS,MAAM,WAAW,UAAU,YAAY,SAAS;AAC9D,YAAI,cAAc,MAAM;AACtB,cAAI,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,GAC9B,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAClC,cAAI,WAAW,MAAM;AACnB,gBAAI,QAAQ,OAAO,GAAG;AACpB,iBAAG,CAAC,KAAK,QAAQ;AAAA,YACnB;AACA,gBAAI,QAAQ,OAAO,GAAG;AACpB,iBAAG,CAAC,KAAK,QAAQ;AAAA,YACnB;AACA,eAAG,CAAC,IAAI,QAAQ,QAAQ,QAAQ,OAAO,IAAI,CAAC,QAAQ,OAAO;AAC3D,eAAG,CAAC,IAAI,QAAQ,QAAQ,QAAQ,OAAO,IAAI,CAAC,QAAQ,OAAO;AAAA,UAC7D;AACA,cAAI,SAAS,GAAG,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG;AACtC,gBAAIC,SAAQ;AAAA,cACV,SAAS,MAAM,GAAG,CAAC,KAAK;AAAA,cACxB,UAAU,MAAM,GAAG,CAAC,KAAK;AAAA,YAC3B;AACA,gBAAI,SAAS,kBAAkB,aAAa,MAAM;AAChD,oBAAM,UAAU,QAAQ5C,QAAO4C,QAAO;AAAA,gBACpC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAAA,cAC5B,CAAC,CAAC;AAAA,YACJ,OAAO;AACL,oBAAM,UAAU,QAAQ5C,QAAO4C,QAAO;AAAA,gBACpC,GAAG,GAAG,CAAC;AAAA,gBACP,GAAG,GAAG,CAAC;AAAA,cACT,CAAC,CAAC;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOD;AAAA,EACT,EAAE;AAEF,WAAS,kBAAkB,UAAU,WAAW,YAAY,SAAS;AACnE,wBAAoB,UAAU,SAAS;AACvC,iBAAa,MAAM,WAAW,UAAU,YAAY,OAAO;AAC3D,QAAIzC,KAAI,IACJwC,UAAS,CAAC,GAAG,CAAC;AAClB,QAAI,QAAQ,OAAO,GAAG;AACpB,MAAAA,QAAO,CAAC,IAAI,CAAC,QAAQ;AAAA,IACvB;AACA,QAAI,QAAQ,OAAO,GAAG;AACpB,MAAAA,QAAO,CAAC,IAAI,CAAC,QAAQ;AAAA,IACvB;AACA,QAAI,UAAU,SAAS,SAAS,GAAG;AACjC,MAAAxC,KAAI,SAAS,YAAY,SAAS;AAClC,UAAI6B,KAAI;AAAA,QACN,GAAG7B;AAAA,QACH,WAAW,eAAewC,QAAO,CAAC,IAAI,MAAMA,QAAO,CAAC,IAAI;AAAA,QACxD,kBAAkB;AAAA,MACpB,GACI,eAAe;AACnB,UAAI,WAAW,eAAe;AAC5B,YAAI,eAAe,WAAW,gBAAgB,GAC1C,qBAAqB,WAAW,cAAc,IAAI;AACtD,uBAAe1C,QAAO,CAAC,GAAG,UAAU;AACpC,qBAAa,SAAS,WAAW;AACjC,qBAAa,cAAc;AAC3B,YAAI,UAAU,UAAU,MAAM;AAC5B,oBAAU,SAAS,MAAM,cAAc+B,EAAC;AACxC,mBAAS,SAAS,UAAU,QAAQ,SAAS,qBAAqB;AAClE,yBAAe,UAAU,QAAQ,UAAU,QAAQ,CAAC;AAAA,QACtD,OAAO;AACL,gBAAM,UAAU,QAAQA,EAAC;AAAA,QAC3B;AACA,qBAAa,UAAU,QAAQ,UAAU,QAAQ,YAAY;AAAA,MAC/D;AACA,UAAI,OAAO;AACX,UAAI,KAAK,QAAQ,MAAM;AACrB,aAAK,OAAO,MAAM,cAAcA,EAAC;AACjC,uBAAe,KAAK,QAAQ,KAAK,MAAM,WAAW,gBAAgB,IAAI,CAAC;AAAA,MACzE,OAAO;AACL,YAAI,KAAK,KAAK,eAAe,KAAK,QAAQ;AACxC,yBAAe,KAAK,QAAQ,KAAK,MAAM,WAAW,gBAAgB,IAAI,CAAC;AAAA,QACzE;AACA,cAAM,UAAU,MAAMA,EAAC;AAAA,MACzB;AACA,mBAAa,UAAU,QAAQ,UAAU,MAAM,UAAU;AAAA,IAC3D;AAAA,EACF;AACA,WAAS,oBAAoB,UAAUC,IAAG;AACxC,QAAIA,GAAE,UAAU,MAAM;AACpB,aAAOA,GAAE;AAAA,IACX,OAAO;AACL,UAAIa,OAAM,MAAM,aAAa;AAAA,QAC3B,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,kBAAkB;AAAA,QAClB,YAAY;AAAA,MACd,CAAC;AACD,MAAAb,GAAE,SAASa;AACX,eAAS,eAAeb,GAAE,QAAQ,SAAS,aAAa,CAAC;AACzD,UAAIA,GAAE,YAAY,MAAM;AACtB,iBAAS,SAASa,MAAKb,GAAE,QAAQ;AAAA,MACnC;AACA,eAAS,SAASa,MAAK,SAAS,cAAc;AAC9C,MAAAA,KAAI,MAAMA,KAAI,OAAO,CAAC;AACtB,MAAAA,KAAI,IAAI,YAAYb;AACpB,aAAOa;AAAA,IACT;AAAA,EACF;AAEA,MAAI,cAAc,WAAY;AAC5B,aAASC,eAAc;AACrB,MAAAvC,iBAAgB,MAAMuC,YAAW;AAAA,IACnC;AACA,IAAAlC,cAAakC,cAAa,MAAM,CAAC;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,IAAI;AACrC,YAAI,GAAG,UAAU,MAAM;AACrB,iBAAO,GAAG;AAAA,QACZ,OAAO;AACL,cAAI,SAAS,MAAM,aAAa;AAAA,YAC9B,SAAS;AAAA,YACT,SAAS;AAAA,YACT,UAAU;AAAA,YACV,kBAAkB;AAAA,YAClB,YAAY;AAAA,UACd,CAAC;AACD,aAAG,SAAS;AACZ,cAAIC,WAAU,GAAG,QAAQ,KAAK,GAAG;AACjC,aAAG,SAAS,SAAS,QAAQA,QAAO;AACpC,cAAI,SAAS,GAAG,SAAS,MAAM,MAAM,IAAI;AACzC,mBAASpC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,eAAG,SAAS,aAAa,QAAQ,yBAAyB,OAAOA,EAAC,GAAG,MAAM;AAAA,UAC7E;AACA,aAAG,SAAS,0BAA0B,MAAM;AAC5C,cAAI,GAAG,YAAY,MAAM;AACvB,eAAG,SAAS,SAAS,QAAQ,GAAG,QAAQ;AAAA,UAC1C;AACA,aAAG,SAAS,SAAS,QAAQ,GAAG,SAAS,aAAa;AACtD,iBAAO,MAAM,OAAO,OAAO,CAAC;AAC5B,iBAAO,IAAI,WAAW,GAAG;AACzB,iBAAO,MAAM,UAAU,GAAG,SAAS,YAAY,QAAQ,QAAQ;AAC/D,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,MAAM,IAAIqC,WAAU,YAAY;AAC9C,YAAI,GAAG,SAAS,YAAY,MAAM;AAChC,eAAK,mBAAmB,EAAE;AAC1B,uBAAa,MAAM,IAAI,GAAG,UAAU,UAAU;AAC9C,cAAIC,KAAIjD,QAAO,CAAC,GAAG,UAAU;AAC7B,cAAIiD,GAAE,eAAe;AACnB,YAAAA,GAAE,SAASA,GAAE;AAAA,UACf;AACA,cAAI,GAAG,QAAQ,MAAM;AACnB,eAAG,OAAOD,UAAS,SAAS,IAAIC,EAAC;AACjC,eAAG,OAAO,YAAY,GAAG,IAAI;AAAA,UAC/B,WAAWD,UAAS,cAAc,MAAM;AACtC,YAAAA,UAAS,WAAW,IAAI,GAAG,IAAI;AAAA,UACjC;AACA,uBAAa,GAAG,QAAQ,GAAG,MAAMC,EAAC;AAAA,QACpC;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,EAAE;AAEF,MAAI,oBAAoB,WAAY;AAClC,aAASI,mBAAkB,YAAYnD,SAAQ;AAC7C,MAAAQ,iBAAgB,MAAM2C,kBAAiB;AACvC,WAAK,aAAa;AAClB,MAAA1C,iBAAgB,MAAM,QAAQ,MAAM;AACpC,MAAAA,iBAAgB,MAAM,UAAU,KAAK;AACrC,MAAAA,iBAAgB,MAAM,QAAQ,MAAM;AACpC,MAAAA,iBAAgB,MAAM,cAAc,MAAM;AAC1C,MAAAA,iBAAgB,MAAM,cAAc,MAAM;AAC1C,MAAAA,iBAAgB,MAAM,WAAW,MAAM;AACvC,MAAAA,iBAAgB,MAAM,UAAU,MAAM;AACtC,MAAAA,iBAAgB,MAAM,OAAO,MAAM;AACnC,MAAAA,iBAAgB,MAAM,aAAa,MAAM;AACzC,MAAAA,iBAAgB,MAAM,aAAa,MAAM;AACzC,MAAAA,iBAAgB,MAAM,YAAY,CAAC,CAAC;AACpC,MAAAA,iBAAgB,MAAM,eAAe,CAAC;AACtC,MAAAA,iBAAgB,MAAM,sBAAsB,CAAC,CAAC;AAC9C,MAAAA,iBAAgB,MAAM,8BAA8B,CAAC,CAAC;AACtD,MAAAA,iBAAgB,MAAM,aAAa,IAAI;AACvC,MAAAA,iBAAgB,MAAM,eAAe,MAAM;AAC3C,MAAAA,iBAAgB,MAAM,KAAK,MAAM;AACjC,MAAAA,iBAAgB,MAAM,KAAK,MAAM;AACjC,MAAAA,iBAAgB,MAAM,KAAK,MAAM;AACjC,MAAAA,iBAAgB,MAAM,KAAK,MAAM;AACjC,MAAAA,iBAAgB,MAAM,WAAW,MAAM;AACvC,MAAAA,iBAAgB,MAAM,UAAU,aAAa,CAAC;AAC9C,MAAAA,iBAAgB,MAAM,YAAY,MAAM;AACxC,MAAAA,iBAAgB,MAAM,cAAc,MAAM;AAC1C,MAAAA,iBAAgB,MAAM,YAAY,MAAM;AACxC,WAAK,OAAOT,QAAO,QAAQ,KAAK,gBAAgB;AAChD,WAAK,aAAa,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK;AACjE,WAAK,aAAa,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK;AACjE,WAAK,MAAMA,QAAO,OAAO;AACzB,WAAK,YAAY,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK;AAC9D,WAAK,YAAY,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK;AAC9D,WAAK,UAAU,KAAK,IAAI,KAAK,YAAY,KAAK,UAAU;AACxD,WAAK,WAAWA,QAAO,YAAY;AACnC,WAAK,aAAaA,QAAO,cAAc;AAAA,IACzC;AACA,IAAAa,cAAasC,oBAAmB,CAAC;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYC,IAAG,UAAU;AACvC,aAAK,WAAWA;AAChB,aAAK,SAASA,MAAK,QAAQ,CAAC;AAAA,MAC9B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAeA,IAAG;AAChC,aAAK,WAAWA;AAChB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB;AAC9B,aAAK,WAAW;AAChB,aAAK,SAAS;AAAA,MAChB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OACA,SAAS,yBAAyBpB,IAAGqB,KAAIC,KAAI;AAC3C,eAAO;AAAA,UACL,GAAGtB,GAAE;AAAA,UACL,GAAGA,GAAE;AAAA,UACL,IAAIA,GAAE;AAAA,UACN,IAAIA,GAAE;AAAA,UACN,MAAMA,GAAE,OAAOqB;AAAA,UACf,MAAMrB,GAAE,OAAOsB;AAAA,QACjB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,aAAK,SAAS,aAAa;AAAA,MAC7B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoBC,IAAGC,IAAG;AACxC,YAAI,MAAM;AAAA,UACR,GAAG;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,mBAAmB;AAAA,QACrB;AACA,iBAAS5C,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,cAAI,KAAK,KAAK,SAASA,EAAC,EAAE,uBAAuB2C,IAAGC,EAAC;AACrD,cAAI,GAAG,IAAI,IAAI,GAAG;AAChB,gBAAI,IAAI,GAAG;AACX,gBAAI,IAAI,GAAG;AACX,gBAAI,IAAI,GAAG;AACX,gBAAI,IAAI,GAAG;AACX,gBAAI,IAAI,KAAK,SAAS5C,EAAC;AACvB,gBAAI,KAAK,GAAG;AACZ,gBAAI,KAAK,GAAG;AACZ,gBAAI,KAAK,GAAG;AACZ,gBAAI,KAAK,GAAG;AACZ,gBAAI,QAAQA;AACZ,gBAAI,oBAAoB,KAAK,mBAAmBA,EAAC,EAAE,CAAC,IAAI,GAAG,KAAK,KAAK,mBAAmBA,EAAC,EAAE,CAAC,IAAI,KAAK,mBAAmBA,EAAC,EAAE,CAAC;AAAA,UAC9H;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,IAAI,IAAI6C,KAAIC,KAAI;AAC/C,YAAI,MAAM,CAAC;AACX,iBAAS9C,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,cAAI,KAAK,MAAM,KAAK,KAAK,SAASA,EAAC,EAAE,iBAAiB,IAAI,IAAI6C,KAAIC,GAAE,CAAC;AAAA,QACvE;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBH,IAAGC,IAAGG,IAAGC,IAAG;AAC1C,YAAI,MAAM,CAAC;AACX,iBAAShD,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,cAAI,KAAK,MAAM,KAAK,KAAK,SAASA,EAAC,EAAE,gBAAgB2C,IAAGC,IAAGG,IAAGC,EAAC,CAAC;AAAA,QAClE;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB,KAAK;AAC3C,YAAI,MAAM,CAAC;AACX,iBAAShD,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,cAAI,KAAK,MAAM,KAAK,KAAK,SAASA,EAAC,EAAE,wBAAwB,GAAG,CAAC;AAAA,QACnE;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,4BAA4B;AAC1C,YAAI,SAAS;AACb,iBAASA,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,cAAI,KAAK,KAAK,SAASA,EAAC,EAAE,UAAU;AACpC,eAAK,2BAA2BA,EAAC,IAAI,KAAK,KAAK;AAC/C,eAAK,mBAAmBA,EAAC,IAAI,CAAC,QAAQ,UAAU,KAAK,KAAK,WAAW;AAAA,QACvE;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwBiD,WAAU,UAAU;AAC1D,YAAI,KAAKjD,IAAG;AACZ,YAAI,UAAU;AACZ,UAAAiD,YAAWA,YAAW,IAAIA,YAAW,KAAK,eAAe,KAAK,cAAcA,aAAY,KAAK;AAAA,QAC/F;AACA,YAAIA,cAAa,GAAG;AAClB,gBAAM,KAAK,SAAS,SAAS;AAC7B,gCAAsB;AAAA,QACxB,WAAWA,cAAa,GAAG;AACzB,gCAAsB;AACtB,gBAAM;AAAA,QACR,OAAO;AACL,cAAIA,aAAY,KAAK;AACnB,kBAAM;AACN,kCAAsB;AACtB,iBAAKjD,KAAI,KAAK,mBAAmB,SAAS,GAAGA,KAAI,IAAIA,MAAK;AACxD,kBAAI,KAAK,mBAAmBA,EAAC,EAAE,CAAC,KAAKiD,aAAY,KAAK,mBAAmBjD,EAAC,EAAE,CAAC,KAAKiD,WAAU;AAC1F,sBAAMjD;AACN,uCAAuBiD,YAAW,KAAK,mBAAmBjD,EAAC,EAAE,CAAC,KAAK,KAAK,2BAA2BA,EAAC;AACpG;AAAA,cACF;AAAA,YACF;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,mBAAmB,SAAS;AACvC,kCAAsB;AACtB,iBAAKA,KAAI,GAAGA,KAAI,KAAK,mBAAmB,QAAQA,MAAK;AACnD,kBAAI,KAAK,mBAAmBA,EAAC,EAAE,CAAC,KAAKiD,WAAU;AAC7C,sBAAMjD;AACN,uCAAuBiD,YAAW,KAAK,mBAAmBjD,EAAC,EAAE,CAAC,KAAK,KAAK,2BAA2BA,EAAC;AACpG;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,UACL,SAAS,KAAK,SAAS,GAAG;AAAA,UAC1B,YAAY;AAAA,UACZ,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,OAAOZ,SAAQ;AACzC,YAAIA,QAAO,OAAOA,QAAO,MAAMA,QAAO,OAAOA,QAAO,IAAI;AACtD;AAAA,QACF;AACA,YAAIkD,KAAI,IAAI,MAAMlD,OAAM;AACxB,aAAK,SAAS,KAAKkD,EAAC;AACpB,aAAK,eAAeA,GAAE,UAAU;AAChC,aAAK,aAAaA,EAAC;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,aAAK,cAAc;AACnB,aAAK,SAAS,SAAS;AACvB,aAAK,mBAAmB,SAAS;AACjC,aAAK,2BAA2B,SAAS;AAAA,MAC3C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBlD,SAAQ;AACtC,aAAK,cAAcA,QAAO;AAC1B,YAAI,KAAKA,QAAO,UAAU,MACtByD,MAAKzD,QAAO,UAAU,MACtB,KAAKA,QAAO,UAAU,MACtB0D,MAAK1D,QAAO,UAAU,MACtB,UAAU,SAAS;AAAA,UACrB,GAAG;AAAA,UACH,GAAG;AAAA,QACL,GAAG;AAAA,UACD,GAAGyD;AAAA,UACH,GAAGC;AAAA,QACL,CAAC,GACG,QAAQD,MAAK,IACb,QAAQC,MAAK,IACb,KAAK,CAAC1D,QAAO,UAAU,IAAIA,QAAO,UAAU,EAAE,GAC9C8D,MAAK,CAAC9D,QAAO,UAAU,IAAIA,QAAO,UAAU,EAAE,GAC9CuD,KAAI,QAAQE,MAAK,IACjBD,KAAI,QAAQE,MAAK,IACjBC,KAAI,KAAK,IAAIF,MAAK,EAAE,GACpBG,KAAI,KAAK,IAAIF,MAAK,EAAE;AACxB,YAAI,sBAAsB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM;AACnD,YAAI,sBAAsBI,IAAG,CAAC,MAAM,KAAKA,IAAG,CAAC,MAAM;AACnD,YAAI,uBAAuB,qBAAqB;AAC9C,cAAI1B,SAAQuB,KAAIC,KAAI,IAAI,GACpB,SAAS,CAAC,GAAG,CAAC,EAAExB,MAAK,GACrB,KAAKA,WAAU,IAAI,KAAK,IACxB2B,MAAK3B,WAAU,IAAIqB,MAAKC;AAC5B,cAAI,qBAAqB;AACvB,eAAGtB,MAAK,IAAI,KAAK2B,MAAK,KAAK;AAC3B,eAAG,MAAM,IAAI;AAAA,UACf;AACA,cAAI,qBAAqB;AACvB,YAAAD,IAAG1B,MAAK,IAAI,KAAK2B,MAAK,IAAI;AAC1B,YAAAD,IAAG,MAAM,IAAI;AAAA,UACf;AAAA,QACF;AACA,YAAI,KAAK,QAAQH,KAAI,KAAK,YAAY,GAAG,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,GAC/D,KAAK,QAAQC,KAAI,KAAK,YAAY,GAAG,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,GAC/D,KAAK,QAAQ,KAAK,YAAYE,IAAG,CAAC,IAAIH,KAAI,KAAK,YAAYG,IAAG,CAAC,GAC/D,KAAK,QAAQ,KAAK,YAAYA,IAAG,CAAC,IAAIF,KAAI,KAAK,YAAYE,IAAG,CAAC,GAC/D,WAAW,GAAG,CAAC,IAAIA,IAAG,CAAC,IAAI,GAAG,CAAC,IAAIA,IAAG,CAAC;AAC3C,YAAI,SAAS;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO,KAAK,IAAI,KAAK,EAAE;AAAA,UACvB,OAAO,KAAK,IAAI,KAAK,EAAE;AAAA,UACvB,KAAK,KAAK,MAAM;AAAA,UAChB,KAAK,KAAK,MAAM;AAAA,UAChB;AAAA,UACA,IAAIA;AAAA,UACJ,GAAGP;AAAA,UACH,GAAGC;AAAA,UACH,GAAGG;AAAA,UACH,GAAGC;AAAA,UACH;AAAA,UACA,YAAY,KAAK,GAAG,CAAC,IAAI,KAAK;AAAA,UAC9B,YAAY,KAAK,GAAG,CAAC,IAAI,KAAK;AAAA,UAC9B,UAAU,KAAKE,IAAG,CAAC,IAAI,KAAK;AAAA,UAC5B,UAAU,KAAKA,IAAG,CAAC,IAAI,KAAK;AAAA,UAC5B,0BAA0B,KAAK,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,KAAK;AAAA,UACrE,0BAA0B,KAAK,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,KAAK;AAAA,UACrE,UAAU,aAAa;AAAA,UACvB,eAAe,aAAa;AAAA,UAC5B,YAAY,aAAa;AAAA,UACzB,YAAY,GAAG,CAAC,MAAM,IAAI,MAAM;AAAA,UAChC,QAAQ,CAACP,IAAGC,IAAGG,IAAGC,IAAG,IAAI,IAAI,IAAI,EAAE;AAAA,UACnC,OAAO,CAAC,KAAK,YAAY,KAAK,UAAU;AAAA,QAC1C;AACA,eAAO,oBAAoB,OAAO,WAAW,aAAa,OAAO,aAAa,eAAe;AAC7F,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,SAAS;AACpC,YAAI,YAAY,QAAQ;AACxB,aAAK,OAAO,OAAO,KAAK,IAAI,KAAK,OAAO,MAAM,UAAU,IAAI;AAC5D,aAAK,OAAO,OAAO,KAAK,IAAI,KAAK,OAAO,MAAM,UAAU,IAAI;AAC5D,aAAK,OAAO,OAAO,KAAK,IAAI,KAAK,OAAO,MAAM,UAAU,IAAI;AAC5D,aAAK,OAAO,OAAO,KAAK,IAAI,KAAK,OAAO,MAAM,UAAU,IAAI;AAAA,MAC9D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB;AACtC,YAAI,WAAW;AACf,iBAAShD,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,cAAI,KAAK,SAASA,EAAC,EAAE,MAAM,KAAK,KAAK,SAASA,EAAC,EAAE,UAAU,GAAG,KAAK,KAAK,mBAAmBA,EAAC,CAAC;AAAA,QAC/F;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYiD,WAAU,UAAU;AAC9C,YAAI,MAAM,KAAK,wBAAwBA,WAAU,QAAQ;AACzD,eAAO,IAAI,WAAW,IAAI,QAAQ,YAAY,IAAI,YAAY,KAAK,KAAK;AAAA,UACtE,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASG,iBAAgBH,WAAU,UAAU;AAClD,YAAI,MAAM,KAAK,wBAAwBA,WAAU,QAAQ;AACzD,eAAO,IAAI,WAAW,IAAI,QAAQ,gBAAgB,IAAI,YAAY,KAAK,KAAK;AAAA,MAC9E;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmBA,WAAU,UAAU,UAAU;AAC/D,YAAI,MAAM,KAAK,wBAAwBA,WAAU,QAAQ;AACzD,eAAO,IAAI,WAAW,IAAI,QAAQ,mBAAmB,IAAI,YAAY,UAAU,KAAK,KAAK;AAAA,UACvF,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASI,SAAQjE,SAAQ;AAC9B,aAAK,YAAY,KAAK,gBAAgBA,OAAM;AAC5C,aAAK,eAAe;AACpB,aAAK,SAAS,KAAK,WAAWA,OAAM;AACpC,aAAK,IAAI,KAAK,UAAU,OAAO,CAAC;AAChC,aAAK,IAAI,KAAK,UAAU,OAAO,CAAC;AAChC,aAAK,IAAI,KAAK,UAAU,OAAO,CAAC;AAChC,aAAK,IAAI,KAAK,UAAU,OAAO,CAAC;AAChC,aAAK,UAAU,KAAK,UAAU;AAC9B,aAAK,0BAA0B;AAAA,MACjC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,KAAK,aAAa;AAAA,MAAC;AAAA,IAC1D,CAAC,CAAC;AACF,WAAOmD;AAAA,EACT,EAAE;AAEF,MAAI,gBAAgB;AACpB,MAAI,iBAAiB;AACrB,MAAI,eAAe,SAAU,UAAU;AACrC,IAAA7C,WAAU4D,eAAc,QAAQ;AAChC,QAAI,SAAS3D,cAAa2D,aAAY;AACtC,aAASA,cAAa,UAAU,WAAW/D,IAAG;AAC5C,UAAI;AACJ,MAAAK,iBAAgB,MAAM0D,aAAY;AAClC,cAAQ,OAAO,KAAK,MAAM,UAAU,WAAW/D,EAAC;AAChD,YAAM,WAAW;AACjB,YAAM,YAAY;AAClB,MAAAM,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQwD,cAAa,IAAI;AACxE,MAAAzD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,MAAM;AACzE,MAAAP,KAAIA,MAAK,CAAC;AACV,YAAM,QAAQA,GAAE,SAAS;AACzB,YAAM,SAASA,GAAE,UAAU;AAC3B,YAAM,aAAaA,GAAE,aAAa,KAAK,IAAI,KAAK;AAChD,YAAM,WAAWA,GAAE,YAAY;AAC/B,YAAM,aAAaA,GAAE,cAAc;AAAA,QACjC,eAAe;AAAA,MACjB;AACA,YAAM,WAAWA,GAAE,YAAY,OAAO,MAAM,WAAW,MAAM,QAAQA,GAAE,QAAQ,IAAIA,GAAE,SAAS,CAAC,IAAIA,GAAE;AACrG,aAAO;AAAA,IACT;AACA,IAAAU,cAAaqD,eAAc,CAAC;AAAA,MAC1B,KAAK;AAAA,MACL,OAAO,SAASC,MAAK,WAAW,6BAA6B,kBAAkB;AAC7E,YAAI,qBAAqB,mBAAmB;AAC1C,cAAI,YAAY;AAChB,cAAI,KAAK,KAAK,KAAK,MAAM;AACzB,cAAI,KAAK,WAAW,KAAK,KAAK,WAAW,GAAG;AAC1C,gBAAI,UAAU,KAAK,WAAW,IAAI,IAAI;AACtC,kBAAM,UAAU,mBAAmB,SAAS,KAAK,UAAU,KAAK;AAChE,kBAAM,UAAU,mBAAmB,SAAS,KAAK,WAAW,KAAK,YAAY,KAAK,SAAS,GAAG,KAAK;AACnG,kBAAM,YAAY,KAAK,KAAK,KAAK,MAAM;AAAA,UACzC,WAAW,KAAK,aAAa,GAAG;AAC9B,kBAAM,UAAU,YAAY,KAAK,QAAQ;AACzC,kBAAM,UAAU,mBAAmB,KAAK,UAAU,CAAC,KAAK,MAAM;AAC9D,kBAAM,YAAY,KAAK,KAAK,KAAK,MAAM;AACvC,gBAAI,KAAK,cAAc,IAAI;AACzB,kBAAIC,KAAI;AACR,oBAAM;AACN,oBAAMA;AAAA,YACR;AAAA,UACF,WAAW,KAAK,aAAa,GAAG;AAC9B,kBAAM,UAAU,YAAY,KAAK,QAAQ;AACzC,kBAAM,UAAU,mBAAmB,KAAK,UAAU,KAAK,MAAM;AAC7D,kBAAM,YAAY,KAAK,KAAK,KAAK,MAAM;AACvC,gBAAI,KAAK,cAAc,IAAI;AACzB,kBAAI,KAAK;AACT,oBAAM;AACN,oBAAM;AAAA,YACR;AAAA,UACF,OAAO;AACL,kBAAM,UAAU,mBAAmB,KAAK,UAAU,KAAK,YAAY,KAAK,SAAS,CAAC;AAClF,kBAAM,UAAU,YAAY,KAAK,QAAQ;AACzC,kBAAM,YAAY,KAAK,KAAK,KAAK,MAAM;AAAA,UACzC;AACA,iBAAO,oBAAoB,KAAK,KAAK,KAAK,KAAK;AAC/C,gBAAM,YAAY,KAAK,KAAK,KAAK,WAAW,KAAK,MAAM;AACvD,cAAIzC,KAAI;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,UACF,GACI,SAAS,KAAK,WAAW,UAAU,4BAA4B,QAC/D0C,QAAO,KAAK,WAAW,QAAQ,4BAA4B,QAC3D,YAAY,KAAK,WAAW,eAAe,4BAA4B;AAC3E,iBAAO;AAAA,YACL;AAAA,YACA,GAAG1C;AAAA,YACH,gBAAgB;AAAA,YAChB;AAAA,YACA,MAAM0C;AAAA,YACN,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AAAA,YAC1C,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AAAA,YAC1C,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AAAA,YAC1C,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW1C,IAAG;AAAA,MAAC;AAAA,IACjC,CAAC,CAAC;AACF,WAAOuC;AAAA,EACT,EAAE,OAAO;AACT,EAAAzD,iBAAgB,cAAc,QAAQ,OAAO;AAC7C,WAAS,eAAeP,IAAG;AACzB,WAAOA,GAAE,SAAS,aAAa;AAAA,EACjC;AACA,iBAAe,SAAS,aAAa,MAAM,YAAY;AAEvD,MAAI,iBAAiB,SAAU,eAAe;AAC5C,IAAAI,WAAUgE,iBAAgB,aAAa;AACvC,QAAI,SAAS/D,cAAa+D,eAAc;AACxC,aAASA,gBAAe,UAAU,WAAWnE,IAAG;AAC9C,UAAI;AACJ,MAAAK,iBAAgB,MAAM8D,eAAc;AACpC,cAAQ,OAAO,KAAK,MAAM,UAAU,WAAWnE,EAAC;AAChD,YAAM,WAAW;AACjB,MAAAM,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ4D,gBAAe,IAAI;AAC1E,YAAM,SAAS,MAAM,SAAS;AAC9B,YAAM,WAAW;AACjB,aAAO;AAAA,IACT;AACA,WAAOA;AAAA,EACT,EAAE,YAAY;AACd,EAAA7D,iBAAgB,gBAAgB,QAAQ,SAAS;AACjD,WAAS,iBAAiBP,IAAG;AAC3B,WAAOA,GAAE,SAAS,eAAe;AAAA,EACnC;AACA,iBAAe,SAAS,eAAe,MAAM,cAAc;AAE3D,MAAI,oBAAoB,SAAU,eAAe;AAC/C,IAAAI,WAAUiE,oBAAmB,aAAa;AAC1C,QAAI,SAAShE,cAAagE,kBAAiB;AAC3C,aAASA,mBAAkB,UAAU,WAAWpE,IAAG;AACjD,UAAI;AACJ,MAAAK,iBAAgB,MAAM+D,kBAAiB;AACvC,cAAQ,OAAO,KAAK,MAAM,UAAU,WAAWpE,EAAC;AAChD,YAAM,WAAW;AACjB,MAAAM,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ6D,mBAAkB,IAAI;AAC7E,YAAM,WAAW;AACjB,aAAO;AAAA,IACT;AACA,WAAOA;AAAA,EACT,EAAE,YAAY;AACd,EAAA9D,iBAAgB,mBAAmB,QAAQ,YAAY;AACvD,WAAS,oBAAoBP,IAAG;AAC9B,WAAOA,GAAE,SAAS,kBAAkB;AAAA,EACtC;AACA,iBAAe,SAAS,cAAc,iBAAiB;AAEvD,MAAI,gBAAgB,SAAU,UAAU;AACtC,IAAAI,WAAUkE,gBAAe,QAAQ;AACjC,QAAI,SAASjE,cAAaiE,cAAa;AACvC,aAASA,eAAc,UAAU,WAAWrE,IAAG;AAC7C,UAAI;AACJ,MAAAK,iBAAgB,MAAMgE,cAAa;AACnC,cAAQ,OAAO,KAAK,MAAM,UAAU,WAAWrE,EAAC;AAChD,YAAM,WAAW;AACjB,YAAM,YAAY;AAClB,MAAAM,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ8D,eAAc,IAAI;AACzE,YAAM,SAASrE,GAAE;AACjB,aAAO;AAAA,IACT;AACA,IAAAU,cAAa2D,gBAAe,CAAC;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO,SAAS,WAAW7C,IAAG;AAAA,MAAC;AAAA,IACjC,CAAC,CAAC;AACF,WAAO6C;AAAA,EACT,EAAE,OAAO;AACT,EAAA/D,iBAAgB,eAAe,QAAQ,QAAQ;AAC/C,WAAS,gBAAgBP,IAAG;AAC1B,WAAOA,GAAE,SAAS,cAAc;AAAA,EAClC;AACA,iBAAe,SAAS,cAAc,MAAM,aAAa;AAEzD,MAAI,kCAAkC;AAkBtC,MAAI,0BAA0B;AAE9B,MAAI,oBAAoB;AAExB,MAAI,cAAc,SAAU,uBAAuB;AACjD,IAAAuE,WAAUC,cAAa,qBAAqB;AAC5C,QAAI,SAASC,cAAaD,YAAW;AACrC,aAASA,aAAY,UAAUE,SAAQ;AACrC,UAAI;AACJ,MAAAC,iBAAgB,MAAMH,YAAW;AACjC,cAAQ,OAAO,KAAK,MAAM,UAAUE,OAAM;AAC1C,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQL,aAAY,IAAI;AACvE,MAAAE,UAASA,WAAU,CAAC;AACpB,YAAM,SAASA,QAAO,UAAU;AAChC,YAAM,gBAAgB,MAAM,MAAM;AAClC,YAAM,qBAAqB,MAAM,SAAS;AAC1C,aAAO;AAAA,IACT;AACA,WAAOF;AAAA,EACT,EAAE,sBAAsB;AACxB,EAAAI,iBAAgB,aAAa,QAAQ,KAAK;AAC1C,MAAI,qBAAqB;AAAA,IACvB,MAAM,YAAY;AAAA,IAClB,KAAK;AAAA,IACL,SAAS,SAASE,SAAQ,IAAI,aAAa,aAAa,eAAe;AACrE,UAAIC,KAAI,YAAY,OAAO,GAAG,QAC1BC,KAAI,YAAY,OAAO,GAAG,QAC1BC,KAAI,GAAG,SAAS,GAChBC,KAAI,GAAG,SAAS;AACpB,UAAI,iBAAiB,cAAc,QAAQ;AACzC,YAAI,KAAK,cAAc,eAAe;AACtC,QAAAH,MAAK;AACL,QAAAC,MAAK;AACL,QAAAC,MAAK,KAAK;AACV,QAAAC,MAAK,KAAK;AAAA,MACZ;AACA,SAAG,IAAIH;AACP,SAAG,IAAIC;AACP,SAAG,IAAIC;AACP,SAAG,IAAIC;AACP,aAAO,CAACH,IAAGC,IAAGC,IAAGC,IAAG,GAAG,MAAM;AAAA,IAC/B;AAAA,IACA,WAAW,SAAS,UAAU,IAAI;AAChC,aAAO;AAAA,QACL,QAAQ,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,MAAI,SAAS,SAASC,QAAO,UAAU,IAAI;AACzC,IAAAR,iBAAgB,MAAMQ,OAAM;AAC5B,SAAK,WAAW;AAChB,SAAK,KAAK;AACV,IAAAP,iBAAgB,MAAM,SAAS,MAAM;AAAA,EACvC;AACA,MAAI,UAAU,SAAU,SAAS;AAC/B,IAAAL,WAAUa,UAAS,OAAO;AAC1B,QAAI,SAASX,cAAaW,QAAO;AACjC,aAASA,SAAQ,UAAU,IAAIC,UAAS;AACtC,UAAI;AACJ,MAAAV,iBAAgB,MAAMS,QAAO;AAC7B,cAAQ,OAAO,KAAK,MAAM,UAAU,EAAE;AACtC,YAAM,WAAW;AACjB,MAAAR,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,CAAC,CAAC;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,KAAK;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe;AAAA,QAC5D,QAAQ,CAAC;AAAA,QACT,QAAQ,CAAC;AAAA,QACT,UAAU,CAAC;AAAA,MACb,CAAC;AACD,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW,MAAM;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,MAAM,MAAM;AAC3D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,UAAI,MAAM,MAAM;AAChB,UAAI,kBAAkB;AACtB,UAAI,gBAAgBA,wBAAuB,KAAK;AAChD,YAAM,OAAO,SAAS,MAAM,EAAE;AAC9B,YAAM,SAASQ,SAAQ,WAAW;AAClC,YAAM,SAAS,MAAM,WAAW,OAAO,QAAQA,SAAQ,WAAW;AAClE,YAAM,YAAYA,SAAQ,cAAc;AACxC,YAAM,QAAQA,SAAQ,UAAU;AAChC,YAAM,UAAUA,SAAQ,YAAY;AACpC,YAAM,QAAQ,MAAM,WAAW,QAAQA,SAAQ,UAAU;AACzD,YAAM,YAAY,MAAM,SAASA,SAAQ,cAAc;AACvD,YAAM,UAAUA,SAAQ,YAAY;AACpC,YAAM,KAAKA,SAAQ,MAAMC,MAAK;AAC9B,YAAM,eAAeD,SAAQ,iBAAiB;AAC9C,YAAM,SAASA,SAAQ;AACvB,YAAM,WAAWA,SAAQ;AACzB,YAAM,SAASA,SAAQ;AACvB,eAAS,aAAa,IAAI,iBAAiB,EAAE;AAC7C,aAAO;AAAA,IACT;AACA,IAAAE,cAAaH,UAAS,CAAC;AAAA,MACrB,KAAK;AAAA,MACL,KAAK,SAASI,OAAM;AAClB,eAAO,KAAK,SAAS,oBAAoB,IAAI;AAAA,MAC/C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,IAAI,aAAa;AAC5C,eAAO,KAAK,iBAAiB,KAAK,UAAU,KAAK,SAAS,KAAK;AAAA,MACjE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,WAAU,MAAM,eAAe;AAC7C,eAAO,KAAK,UAAU;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,MAAM,eAAe;AAC/C,eAAO,KAAK,YAAY;AAAA,UACtB,MAAM,YAAY;AAAA,UAClB,SAAS;AAAA,YACP,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,KAAK,gBAAgB;AACvC,YAAI,WAAW,KAAK,SAAS,oBAAoB,IAAI;AACrD,YAAI,OAAO;AACX,YAAI,KAAK,uBAAuB,MAAM;AACpC,cAAI,KAAK,wBAAwB,MAAM;AACrC;AAAA,UACF,OAAO;AACL,iBAAK,oBAAoB,OAAO,KAAK,MAAM,gBAAgB,KAAK;AAAA,UAClE;AAAA,QACF;AACA,aAAK,sBAAsB;AAC3B,aAAK,SAAS,KAAK,IAAI,OAAO,KAAK,UAAU,GAAG,CAAC;AACjD,aAAK,SAAS,eAAe,MAAM,QAAQ;AAC3C,aAAK,QAAQ,2BAA2B,IAAI;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,eAAO,MAAM,OAAO,OAAO,gBAAgB,KAAK,UAAU,SAAUC,IAAG;AACrE,iBAAOA,GAAE,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,QAAO,IAAI,eAAe,gBAAgB,wBAAwB,aAAa;AAC7F,YAAI,SAAS,KAAK,YAAY,EAAE;AAChC,YAAI,UAAU,MAAM;AAClB,eAAK,UAAU,QAAQ,eAAe,gBAAgB,wBAAwB,WAAW;AAAA,QAC3F;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,OAAO,eAAe,gBAAgB,wBAAwB,aAAa;AACnG,YAAI,OAAO,MAAM;AACjB,eAAO,KAAK;AACZ,2BAAmB,KAAK,UAAU,SAAUC,IAAG;AAC7C,iBAAOA,OAAM;AAAA,QACf,CAAC;AACD,YAAI,eAAe;AACjB,cAAI;AACF,iBAAK,SAAS,oBAAoB,IAAI,EAAE,YAAY,IAAI;AAAA,UAC1D,SAASA,IAAP;AACA,gBAAI,yCAAyCA,EAAC;AAAA,UAChD;AAAA,QACF;AACA,YAAI,CAAC,gBAAgB;AACnB,cAAIC,KAAI;AAAA,YACN,OAAO;AAAA,YACP,IAAI;AAAA,UACN;AACA,cAAI,aAAa;AACf,YAAAA,GAAE,cAAc;AAAA,UAClB;AACA,eAAK,SAAS,KAAK,4BAA4BA,EAAC;AAAA,QAClD;AACA,YAAI,CAAC,wBAAwB;AAC3B,eAAK,QAAQ,2BAA2B,IAAI;AAAA,QAC9C;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,eAAe,gBAAgB;AACvD,iBAASC,KAAI,GAAGC,KAAI,KAAK,SAAS,QAAQD,KAAIC,IAAGD,MAAK;AACpD,cAAI,QAAQ,KAAK,SAAS,CAAC;AAC3B,eAAK,UAAU,OAAO,eAAe,gBAAgB,IAAI;AACzD,eAAK,SAAS,SAAS,MAAM,IAAI,IAAI;AAAA,QACvC;AACA,aAAK,SAAS,SAAS;AACvB,aAAK,QAAQ,2BAA2B,IAAI;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,YAAI,oBAAoB,CAAC;AACzB,iBAASA,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,cAAI,cAAc,KAAK,QAAQ,OAAO,KAAK,SAASA,EAAC,EAAE,IAAI,KAAK;AAChE,4BAAkB,YAAY,EAAE,IAAI,YAAY;AAAA,QAClD;AACA,aAAK,SAAS,SAAS;AACvB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO;AAC9B,YAAI,KAAK,SAAS,qBAAqB,UAAU,MAAM;AACrD,cAAI,KAAK,SAAS,aAAa,WAAW,MAAM,KAAK,GAAG;AACtD,mBAAO;AAAA,UACT;AACA,cAAI,MAAM,SAAS,MAAM;AACvB,kBAAM,MAAM,YAAY,KAAK;AAAA,UAC/B;AACA,cAAI,YAAY,KAAK,SAAS,MAAM,MAAM,EAAE;AAC5C,cAAI,QAAQ,KAAK,SAAS,mBAAmB,EAAE,SAAS;AACxD,gBAAM,QAAQ,KAAK;AACnB,cAAI,QAAQ,KAAK,SAAS,wBAAwB,MAAM,EAAE;AAC1D,cAAI,OAAO,KAAK,YAAY,KAAK,SAAS,wBAAwB,KAAK,EAAE,IAAI,KAAK,SAAS,wBAAwB,KAAK,SAAS,oBAAoB,IAAI,CAAC;AAC1J,gBAAM,GAAG,sBAAsB;AAC/B,eAAK,SAAS,KAAK,KAAK;AACxB,eAAK,SAAS,sBAAsB,MAAM,MAAM,EAAE;AAClD,gBAAM,QAAQ;AACd,cAAI,cAAc;AAAA,YAChB,GAAG,MAAM,IAAI,KAAK;AAAA,YAClB,GAAG,MAAM,IAAI,KAAK;AAAA,UACpB;AACA,eAAK,SAAS,YAAY,MAAM,IAAI,WAAW;AAC/C,eAAK,SAAS,KAAK,0BAA0B;AAAA,YAC3C,QAAQ;AAAA,YACR,OAAO;AAAA,UACT,CAAC;AACD,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,OAAO;AACjC,YAAI,MAAM,UAAU,MAAM;AACxB,cAAI,MAAM,MAAM;AAChB,cAAIE,KAAI,KAAK,SAAS,oBAAoB,IAAI;AAC9C,cAAIA,OAAM,IAAI,YAAY;AACxB,YAAAA,GAAE,YAAY,MAAM,EAAE;AAAA,UACxB;AACA,cAAI,YAAY,KAAK,SAAS,MAAM,MAAM,EAAE;AAC5C,cAAI,QAAQ,KAAK,SAAS,mBAAmB,EAAE,SAAS;AACxD,cAAI,OAAO;AACT,mBAAO,MAAM;AAAA,UACf;AACA,eAAK,WAAW,KAAK,SAAS,OAAO,SAAU,IAAI;AACjD,mBAAO,GAAG,OAAO,MAAM;AAAA,UACzB,CAAC;AACD,iBAAO,MAAM;AACb,iBAAO,IAAI;AACX,eAAK,SAAS,KAAK,4BAA4B;AAAA,YAC7C,QAAQ;AAAA,YACR,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,eAAO,KAAK,SAAS,OAAO,SAAU,IAAI;AACxC,iBAAO,GAAG,gBAAgBb;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW;AACzB,eAAO,KAAK,SAAS,OAAO,SAAU,IAAI;AACxC,iBAAO,GAAG,gBAAgB;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,KAAK,SAASI,OAAM;AAClB,YAAI,KAAK;AACT,YAAI,KAAK,SAAS,MAAM;AACtB,iBAAO;AAAA,QACT,OAAO;AACL,cAAIU,KAAI,KAAK;AACb,iBAAOA,MAAK,MAAM;AAChB,gBAAIA,GAAE,WAAW;AACf,mBAAKA;AAAA,YACP;AACA,YAAAA,KAAIA,GAAE;AAAA,UACR;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOd;AAAA,EACT,EAAE,MAAM;AAER,MAAI,eAAe,WAAY;AAC7B,aAASe,cAAa,UAAU;AAC9B,UAAI,QAAQ;AACZ,MAAAxB,iBAAgB,MAAMwB,aAAY;AAClC,WAAK,WAAW;AAChB,MAAAvB,iBAAgB,MAAM,YAAY,CAAC,CAAC;AACpC,MAAAA,iBAAgB,MAAM,wBAAwB,CAAC,CAAC;AAChD,MAAAA,iBAAgB,MAAM,wBAAwB,CAAC,CAAC;AAChD,eAAS,KAAK,2BAA2B,SAAUkB,IAAG;AACpD,YAAI,cAAc,MAAM,YAAYA,GAAE,MAAM;AAC5C,YAAI,cAAc,MAAM,YAAYA,GAAE,MAAM;AAC5C,YAAI,eAAe,QAAQ,eAAe,QAAQ,gBAAgB,aAAa;AAC7E,gBAAM,qBAAqBA,GAAE,WAAW,EAAE,IAAI;AAC9C,gBAAM,qBAAqBA,GAAE,WAAW,EAAE,IAAI;AAC9C,kBAAQ,YAAY,YAAY,UAAUA,GAAE,UAAU;AAAA,QACxD,OAAO;AACL,cAAI,eAAe,MAAM;AACvB,gBAAIA,GAAE,OAAO,kBAAkB,aAAa;AAC1C,sBAAQ,YAAY,YAAY,UAAUA,GAAE,UAAU;AAAA,YACxD,OAAO;AACL,sBAAQ,YAAY,YAAY,QAAQA,GAAE,UAAU;AAAA,YACtD;AACA,kBAAM,qBAAqBA,GAAE,WAAW,EAAE,IAAI;AAAA,UAChD;AACA,cAAI,eAAe,MAAM;AACvB,gBAAIA,GAAE,OAAO,kBAAkB,aAAa;AAC1C,sBAAQ,YAAY,YAAY,UAAUA,GAAE,UAAU;AAAA,YACxD,OAAO;AACL,sBAAQ,YAAY,YAAY,QAAQA,GAAE,UAAU;AAAA,YACtD;AACA,kBAAM,qBAAqBA,GAAE,WAAW,EAAE,IAAI;AAAA,UAChD;AAAA,QACF;AAAA,MACF,CAAC;AACD,eAAS,KAAK,oCAAoC,SAAUA,IAAG;AAC7D,cAAM,2BAA2BA,GAAE,UAAU;AAAA,MAC/C,CAAC;AACD,eAAS,KAAK,wBAAwB,SAAUA,IAAG;AACjD,YAAI,kBAAkBA,GAAE,iBAAiB,SACrC,gBAAgB,MAAM,YAAY,eAAe,GACjD,cAAcA,GAAE,WAAW,UAAUA,GAAE,KAAK,GAC5C,aAAa,YAAY,SACzB,WAAW,MAAM,YAAY,UAAU,GACvC,UAAUA,GAAE,UAAU,IAAI,MAAM,uBAAuB,MAAM,sBAC7D,eAAeA,GAAE,UAAU,IAAI,MAAM,uBAAuB,MAAM;AACtE,YAAI,YAAY,MAAM;AACpB,kBAAQA,GAAE,WAAW,EAAE,IAAI;AAC3B,cAAIA,GAAE,WAAW,WAAWA,GAAE,WAAW,QAAQ;AAC/C,yBAAaA,GAAE,WAAW,EAAE,IAAI;AAAA,UAClC;AAAA,QACF,OAAO;AACL,iBAAO,QAAQA,GAAE,WAAW,EAAE;AAC9B,cAAIA,GAAE,WAAW,WAAWA,GAAE,WAAW,QAAQ;AAC/C,mBAAO,aAAaA,GAAE,WAAW,EAAE;AAAA,UACrC;AAAA,QACF;AACA,YAAI,iBAAiB,MAAM;AACzB,gBAAM,2BAA2B,aAAa;AAAA,QAChD;AACA,YAAI,YAAY,MAAM;AACpB,gBAAM,2BAA2B,QAAQ;AAAA,QAC3C;AAAA,MACF,CAAC;AAAA,IACH;AACA,IAAAP,cAAaY,eAAc,CAAC;AAAA,MAC1B,KAAK;AAAA,MACL,OAAO,SAAS,2BAA2B,MAAM;AAC/C,aAAK,QAAQ,SAAS;AACtB,YAAI,QAAQ,KAAK,qBAAqB,KAAK,EAAE,GACzCC;AACJ,YAAI,SAAS,MAAM;AACjB,UAAAA,KAAI,SAASA,GAAEC,IAAG;AAChB,mBAAOA,GAAE,OAAO,KAAK;AAAA,UACvB;AACA,6BAAmB,MAAM,YAAY,QAAQD,EAAC;AAC9C,6BAAmB,MAAM,YAAY,QAAQA,EAAC;AAC9C,6BAAmB,MAAM,YAAY,UAAUA,EAAC;AAChD,iBAAO,KAAK,qBAAqB,KAAK,EAAE;AAAA,QAC1C;AACA,gBAAQ,KAAK,qBAAqB,KAAK,EAAE;AACzC,YAAI,SAAS,MAAM;AACjB,UAAAA,KAAI,SAASA,GAAEC,IAAG;AAChB,mBAAOA,GAAE,OAAO,KAAK;AAAA,UACvB;AACA,6BAAmB,MAAM,YAAY,QAAQD,EAAC;AAC9C,6BAAmB,MAAM,YAAY,QAAQA,EAAC;AAC9C,6BAAmB,MAAM,YAAY,UAAUA,EAAC;AAChD,iBAAO,KAAK,qBAAqB,KAAK,EAAE;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS1B,SAAQ;AAC/B,YAAI,MAAMA,QAAO;AACjB,YAAI,KAAK,SAASA,QAAO,EAAE,KAAK,MAAM;AACpC,gBAAM,IAAI,MAAM,0BAA0BA,QAAO,KAAK,gCAAgC;AAAA,QACxF;AACA,YAAI,IAAI,mBAAmB,MAAM;AAC/B,gBAAM,IAAI,MAAM,0BAA0BA,QAAO,KAAK,yCAAyC;AAAA,QACjG;AACA,YAAI,QAAQ,IAAI,QAAQ,KAAK,UAAUA,QAAO,IAAIA,OAAM;AACxD,aAAK,SAAS,MAAM,EAAE,IAAI;AAC1B,YAAIA,QAAO,WAAW;AACpB,eAAK,cAAc,KAAK;AAAA,QAC1B;AACA,aAAK,SAAS,OAAO,MAAM,EAAE;AAC7B,aAAK,SAAS,SAAS,MAAM,IAAI,oBAAoB;AACrD,cAAM,UAAU;AAChB,aAAK,2BAA2B,KAAK;AACrC,aAAK,SAAS,KAAK,mBAAmB;AAAA,UACpC;AAAA,QACF,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,SAAS;AAChC,YAAI,QAAQ;AACZ,YAAI,SAAS,OAAO,GAAG;AACrB,kBAAQ,KAAK,SAAS,OAAO;AAC7B,cAAI,SAAS,MAAM;AACjB,kBAAM,IAAI,MAAM,oBAAoB,UAAU,GAAG;AAAA,UACnD;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,YAAI,MAAM;AACV,YAAI2B,KAAI,KAAK,SAAS,aAAa;AACnC,YAAI,QAAQ,OACRH,KAAI;AACR,eAAO,CAAC,OAAO;AACb,cAAI,OAAO,QAAQ,QAAQG,IAAG;AAC5B,oBAAQ;AAAA,UACV,OAAO;AACL,gBAAI,IAAI,qBAAqB;AAC3B,cAAAH,KAAI,IAAI;AACR,sBAAQ;AAAA,YACV,OAAO;AACL,oBAAM,IAAI;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AACA,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,YAAIA,KAAI,CAAC;AACT,iBAASI,QAAO,KAAK,UAAU;AAC7B,UAAAJ,GAAE,KAAK,KAAK,SAASI,IAAG,CAAC;AAAA,QAC3B;AACA,eAAOJ;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,OAAO,eAAe,gBAAgB,gBAAgB;AAChF,YAAI,SAAS;AACb,YAAI,cAAc,KAAK,SAAS,KAAK;AACrC,aAAK,YAAY,aAAa,IAAI;AAClC,YAAI,eAAe,CAAC;AACpB,gBAAQ,YAAY,UAAU,SAAU,QAAQ;AAC9C,cAAI,QAAQ,OAAO,SAAS,mBAAmB,EAAE,OAAO,SAAS,MAAM,OAAO,EAAE,CAAC;AACjF,cAAI,OAAO;AACT,mBAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AACD,YAAI,eAAe;AACjB,kBAAQ,YAAY,UAAU,GAAG,SAAU,IAAI;AAC7C,mBAAO,OAAO,YAAY,IAAI,eAAe,cAAc;AAAA,UAC7D,CAAC;AACD,sBAAY,UAAU,gBAAgB,cAAc;AAAA,QACtD,OAAO;AACL,cAAI,YAAY,OAAO;AACrB,oBAAQ,YAAY,UAAU,SAAUG,IAAG;AACzC,qBAAO,YAAY,MAAM,IAAIA,GAAE,EAAE;AAAA,YACnC,CAAC;AAAA,UACH;AACA,yBAAe,YAAY,UAAU;AAAA,QACvC;AACA,YAAI,YAAY,OAAO;AACrB,sBAAY,MAAM,YAAY,WAAW;AAAA,QAC3C;AACA,aAAK,SAAS,SAAS,YAAY,IAAI,IAAI;AAC3C,eAAO,KAAK,SAAS,YAAY,EAAE;AACnC,aAAK,SAAS,KAAK,qBAAqB;AAAA,UACtC,OAAO;AAAA,QACT,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,eAAe,gBAAgB,gBAAgB;AAC7E,iBAAS,MAAM,KAAK,UAAU;AAC5B,eAAK,YAAY,KAAK,SAAS,EAAE,GAAG,eAAe,gBAAgB,cAAc;AAAA,QACnF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASE,SAAQH,IAAG;AACzB,iBAASE,QAAO,KAAK,UAAU;AAC7B,UAAAF,GAAE,KAAK,SAASE,IAAG,CAAC;AAAA,QACtB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO,IAAI,yBAAyB;AAClD,YAAI,MAAM;AACV,YAAI,IAAI,qBAAqB;AAC3B,cAAI,gBAAgB,IAAI;AACxB,cAAIE,MAAK,KAAK,SAAS,MAAM,GAAG;AAChC,cAAI,MAAM,KAAK,SAAS,UAAU,EAAE;AACpC,cAAI,4BAA4B,QAAQ,cAAc,OAAO;AAC3D,iBAAK,SAAS,sBAAsB,cAAc,OAAO,EAAE;AAAA,UAC7D,OAAO;AACL,iBAAK,SAAS,0BAA0B,EAAE;AAAA,UAC5C;AACA,eAAK,SAAS,YAAY,IAAI,GAAG;AACjC,iBAAO,IAAI;AACX,iBAAO;AAAA,YACL,IAAIA;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,2BAA2B,OAAO;AAChD,YAAI,SAAS;AACb,cAAM,YAAY,OAAO,SAAS;AAClC,cAAM,YAAY,OAAO,SAAS;AAClC,cAAM,YAAY,SAAS,SAAS;AACpC,YAAI,UAAU,MAAM,SAAS,MAAM,EAAE,IAAI,SAAU,IAAI;AACrD,iBAAO,GAAG;AAAA,QACZ,CAAC;AACD,YAAI,eAAe,CAAC;AACpB,gBAAQ,SAAS,SAAU,QAAQ;AACjC,gBAAM,UAAU,KAAK,MAAM,cAAc,OAAO,SAAS,YAAY,QAAQ,wBAAwB,CAAC;AAAA,QACxG,CAAC;AACD,cAAM,UAAU,KAAK,MAAM,SAAS,YAAY;AAChD,YAAI,QAAQ,SAAS,GAAG;AACtB,cAAI,KAAK,KAAK,SAAS,eAAe;AAAA,YACpC,QAAQ;AAAA,YACR,OAAO;AAAA,UACT,GAAG,IAAI;AACP,cAAIC,MAAK,KAAK,SAAS,eAAe;AAAA,YACpC,QAAQ;AAAA,YACR,OAAO;AAAA,UACT,GAAG,IAAI;AACP,cAAI,YAAY,CAAC;AACjB,cAAI,IAAI;AACR,cAAI,SAAS,SAASC,QAAOL,IAAG;AAC9B,qBAASN,KAAI,GAAGA,KAAIM,GAAE,QAAQN,MAAK;AACjC,kBAAI,UAAUM,GAAEN,EAAC,EAAE,EAAE,GAAG;AACtB;AAAA,cACF;AACA,wBAAUM,GAAEN,EAAC,EAAE,EAAE,IAAI;AACrB,mBAAK,OAAO,YAAYM,GAAEN,EAAC,EAAE,MAAM;AACnC,mBAAK,OAAO,YAAYM,GAAEN,EAAC,EAAE,MAAM;AACnC,kBAAIM,GAAEN,EAAC,EAAE,WAAW,MAAM,MAAM,OAAO,SAASM,GAAEN,EAAC,EAAE,WAAW,MAAM,MAAM,OAAO,OAAO;AACxF,sBAAM,YAAY,SAAS,KAAKM,GAAEN,EAAC,CAAC;AAAA,cACtC,WAAW,OAAO,OAAO;AACvB,oBAAI,OAAO,OAAO;AAChB,wBAAM,YAAY,OAAO,KAAKM,GAAEN,EAAC,CAAC;AAAA,gBACpC,OAAO;AACL,wBAAM,YAAY,SAAS,KAAKM,GAAEN,EAAC,CAAC;AAAA,gBACtC;AACA,uBAAO,qBAAqBM,GAAEN,EAAC,EAAE,EAAE,IAAI;AAAA,cACzC,WAAW,OAAO,OAAO;AACvB,sBAAM,YAAY,OAAO,KAAKM,GAAEN,EAAC,CAAC;AAClC,uBAAO,qBAAqBM,GAAEN,EAAC,EAAE,EAAE,IAAI;AAAA,cACzC;AAAA,YACF;AAAA,UACF;AACA,iBAAO,EAAE;AACT,iBAAOU,GAAE;AAAA,QACX;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,MAAME,QAAO,OAAO;AACtD,YAAI,UAAU,KAAK,UAAUA,WAAU,IAAI,IAAI,CAAC,EAAE;AAClD,YAAI,QAAQ,uBAAuB,CAAC,QAAQ,oBAAoB,WAAW,QAAQ,oBAAoB,WAAW;AAChH,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,KAAK,UAAU,CAAC,EAAE,SACvB,MAAM,GAAG,qBACT,QAAQ,OAAO,OAAO,IAAI,kBAAkB,MAAM,MAClD,KAAK,KAAK,UAAU,CAAC,EAAE,SACvB,MAAM,GAAG,qBACT,QAAQ,OAAO,OAAO,IAAI,kBAAkB,MAAM;AACtD,YAAI,SAAS,QAAQ,SAAS,QAAQ,MAAM,OAAO,MAAM,IAAI;AAC3D,cAAI,UAAU,MAAM;AAChB,eAAK,SAAS,MAAM,OAAO;AAC/B,eAAK,SAAS;AAAA,YAAgB;AAAA,YAAMA;AAAA,YAAO;AAAA,YAC3C,SAAUC,OAAMD,QAAO;AACrB,qBAAO,MAAM,YAAYC,OAAMD,MAAK;AAAA,YACtC;AAAA,YAAG,SAAUC,OAAMD,QAAO;AACxB,qBAAO,MAAM,UAAUC,OAAMD,MAAK;AAAA,YACpC;AAAA,UAAC;AACD,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBN,IAAGM,QAAO,OAAO;AACjD,aAAK,SAAS,kBAAkBN,IAAGM,MAAK;AAAA,MAC1C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,IAAIE,WAAU;AAChD,YAAIR,KAAI,KAAK,SAAS,aAAa;AACnC,YAAI,QAAQ;AACZ,eAAO,CAAC,OAAO;AACb,cAAI,MAAM,QAAQ,OAAOA,IAAG;AAC1B,mBAAO;AAAA,UACT,OAAO;AACL,gBAAI,OAAOQ,WAAU;AACnB,qBAAO;AAAA,YACT,OAAO;AACL,mBAAK,GAAG;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,OAAO;AACnC,YAAI,SAAS;AACb,YAAI,cAAc,KAAK,SAAS,KAAK;AACrC,YAAI,eAAe,QAAQ,YAAY,WAAW;AAChD;AAAA,QACF;AACA,YAAI,UAAU,YAAY;AAC1B,YAAI,YAAY,kBAAkB,MAAM;AACtC,eAAK,SAAS,gBAAgB,aAAa,KAAK;AAChD,sBAAY,YAAY;AACxB,eAAK,SAAS,YAAY,SAAS,oBAAoB;AACvD,eAAK,SAAS,SAAS,SAAS,qBAAqB;AACrD,cAAI,YAAY,SAAS;AACvB,gBAAI,yBAAyB,oBAAI,IAAI;AACrC,gBAAI,eAAe,SAASC,cAAa,OAAOH,QAAO;AACrD,uBAASZ,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,oBAAIM,KAAI,MAAMN,EAAC;AACf,oBAAI,OAAO,oBAAoBM,IAAGM,QAAO,WAAW,MAAM,MAAM;AAC9D,yCAAuB,IAAIN,GAAE,EAAE;AAAA,gBACjC;AAAA,cACF;AAAA,YACF;AACA,yBAAa,YAAY,YAAY,QAAQ,CAAC;AAC9C,yBAAa,YAAY,YAAY,QAAQ,CAAC;AAC9C,oBAAQ,YAAY,UAAU,GAAG,SAAU,IAAI;AAC7C,qBAAO,gBAAgB,aAAa,IAAI,sBAAsB;AAAA,YAChE,CAAC;AAAA,UACH;AACA,eAAK,SAAS,WAAW,OAAO;AAChC,eAAK,aAAa,WAAW;AAC7B,eAAK,SAAS,KAAK,sBAAsB;AAAA,YACvC,OAAO;AAAA,UACT,CAAC;AAAA,QACH,OAAO;AACL,sBAAY,YAAY;AACxB,eAAK,SAAS,YAAY,SAAS,oBAAoB;AACvD,eAAK,SAAS,SAAS,SAAS,qBAAqB;AAAA,QACvD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,gBAAgB,aAAa,cAAc;AACzE,YAAI,SAAS;AACb,YAAI,eAAe,SAAS;AAC1B,cAAI,eAAe,SAASS,cAAa,OAAOH,QAAO;AACrD,qBAASZ,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,kBAAIM,KAAI,MAAMN,EAAC;AACf,kBAAI,CAAC,aAAa,IAAIM,GAAE,EAAE,GAAG;AAC3B,oBAAI,OAAO,oBAAoBA,IAAGM,QAAO,cAAc,MAAM,MAAM;AACjE,+BAAa,IAAIN,GAAE,EAAE;AAAA,gBACvB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,uBAAa,YAAY,YAAY,QAAQ,CAAC;AAC9C,uBAAa,YAAY,YAAY,QAAQ,CAAC;AAAA,QAChD;AACA,gBAAQ,YAAY,UAAU,GAAG,SAAU,IAAI;AAC7C,iBAAO,gBAAgB,gBAAgB,IAAI,YAAY;AAAA,QACzD,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,OAAO,gBAAgB;AACjD,YAAI,SAAS;AACb,YAAI,cAAc,KAAK,SAAS,KAAK;AACrC,YAAI,eAAe,MAAM;AACvB;AAAA,QACF;AACA,YAAI,UAAU,YAAY;AAC1B,YAAI,YAAY,kBAAkB,MAAM;AACtC,eAAK,SAAS,gBAAgB,aAAa,IAAI;AAC/C,sBAAY,YAAY;AACxB,eAAK,SAAS,SAAS,SAAS,oBAAoB;AACpD,eAAK,SAAS,YAAY,SAAS,qBAAqB;AACxD,cAAI,YAAY,SAAS;AACvB,gBAAI,aAAa,SAASU,YAAW,OAAOJ,QAAO;AACjD,uBAASZ,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,oBAAIM,KAAI,MAAMN,EAAC;AACf,uBAAO,kBAAkBM,IAAGM,QAAO,WAAW;AAAA,cAChD;AAAA,YACF;AACA,uBAAW,YAAY,YAAY,QAAQ,CAAC;AAC5C,uBAAW,YAAY,YAAY,QAAQ,CAAC;AAC5C,gBAAI,qBAAqB,SAASK,oBAAmBC,QAAO,+BAA+B;AACzF,kBAAI,iCAAiCA,OAAM,WAAW;AACpD,oBAAI,eAAe,SAASH,cAAa,OAAOH,QAAO;AACrD,2BAASZ,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,wBAAIM,KAAI,MAAMN,EAAC;AACf,2BAAO,oBAAoBM,IAAGM,QAAOM,OAAM,kBAAkBA,MAAK;AAAA,kBACpE;AAAA,gBACF;AACA,6BAAaA,OAAM,YAAY,QAAQ,CAAC;AACxC,6BAAaA,OAAM,YAAY,QAAQ,CAAC;AACxC,wBAAQA,OAAM,YAAY,UAAU,SAAUZ,IAAG;AAC/C,yBAAOA,GAAE,WAAW,KAAK;AAAA,gBAC3B,CAAC;AACD,wBAAQY,OAAM,UAAU,GAAG,SAAUf,IAAG;AACtC,yBAAOc,oBAAmBd,IAAG,IAAI;AAAA,gBACnC,CAAC;AAAA,cACH,OAAO;AACL,uBAAO,YAAYe,QAAO,IAAI;AAAA,cAChC;AAAA,YACF;AACA,oBAAQ,YAAY,UAAU,GAAG,kBAAkB;AAAA,UACrD;AACA,eAAK,SAAS,WAAW,OAAO;AAChC,eAAK,aAAa,WAAW;AAC7B,cAAI,CAAC,gBAAgB;AACnB,iBAAK,SAAS,KAAK,oBAAoB;AAAA,cACrC,OAAO;AAAA,YACT,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AACL,sBAAY,YAAY;AACxB,eAAK,SAAS,SAAS,SAAS,oBAAoB;AACpD,eAAK,SAAS,YAAY,SAAS,qBAAqB;AAAA,QAC1D;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,OAAO;AACjC,gBAAQ,KAAK,SAAS,KAAK;AAC3B,YAAI,SAAS,MAAM;AACjB,cAAI,MAAM,WAAW;AACnB,iBAAK,YAAY,KAAK;AAAA,UACxB,OAAO;AACL,iBAAK,cAAc,KAAK;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,OAAO;AAClC,YAAI,cAAc,KAAK,SAAS,KAAK;AACrC,YAAIC,KAAI,YAAY;AACpB,iBAASnB,KAAI,GAAGA,KAAImB,GAAE,QAAQnB,MAAK;AACjC,eAAK,SAAS,WAAWmB,GAAEnB,EAAC,EAAE,EAAE;AAAA,QAClC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,OAAO,gBAAgB;AAChD,YAAI,SAAS;AACb,YAAI,cAAc,KAAK,SAAS,KAAK;AACrC,YAAI,aAAa;AACf,cAAI,UAAU,YAAY;AAC1B,cAAI,OAAO,SAASoB,MAAKC,KAAI;AAC3B,gBAAI,MAAMA;AACV,gBAAI,UAAU,IAAI,mBAAmB,MACjC,gBAAgB,IAAI;AACxB,gBAAI,eAAe,IAAI;AACvB,gBAAI,iBAAiB,aAAa;AAChC,kBAAI,QAAQ,OAAO,SAAS,OAAOA,GAAE;AACrC,kBAAI,QAAQ,OAAO,SAAS,UAAUA,GAAE;AACxC,kBAAI,OAAO,YAAY,YAAY,OAAO,SAAS,wBAAwB,OAAO,IAAI,OAAO,SAAS,UAAU,OAAO,SAAS,oBAAoB,WAAW,CAAC;AAChK,oBAAM,QAAQ,YAAY;AAC1B,kBAAI,gBAAgB,MAAM;AACxB,6BAAa,OAAOA,KAAI,OAAO,gBAAgB,OAAO,WAAW;AACjE,uBAAO,2BAA2B,YAAY;AAAA,cAChD;AACA,kBAAI,SAAS;AACX,4BAAY,SAAS,aAAa;AAAA,cACpC,OAAO;AACL,4BAAY,IAAIA,KAAI,cAAc;AAAA,cACpC;AACA,kBAAI,2BAA2B,SAASC,0BAAyB,MAAMV,QAAO;AAC5E,oBAAI,OAAOA,WAAU,IAAI,IAAI;AAC7B,qBAAK,KAAK,SAAUN,IAAG;AACrB,kBAAAA,GAAE,WAAW,KAAK;AAClB,sBAAIA,GAAE,UAAU,IAAI,EAAE,QAAQ,kBAAkB,aAAa;AAC3D,oBAAAA,GAAE,UAAU,IAAI,EAAE,WAAW,KAAK;AAClC,2BAAO,kBAAkBA,IAAG,MAAM,WAAW;AAAA,kBAC/C,OAAO;AACL,oBAAAA,GAAE,UAAUM,MAAK,EAAE,WAAW,KAAK;AACnC,2BAAO,oBAAoBN,IAAGM,QAAO,WAAW;AAAA,kBAClD;AAAA,gBACF,CAAC;AAAA,cACH;AACA,kBAAI,YAAY,WAAW;AACzB,yCAAyB,OAAO,SAAS,OAAO;AAAA,kBAC9C,QAAQS;AAAA,gBACV,CAAC,GAAG,CAAC;AACL,yCAAyB,OAAO,SAAS,OAAO;AAAA,kBAC9C,QAAQA;AAAA,gBACV,CAAC,GAAG,CAAC;AAAA,cACP;AACA,qBAAO,SAAS,MAAMA,GAAE;AACxB,kBAAI,cAAc;AAAA,gBAChB,GAAG,MAAM,IAAI,KAAK;AAAA,gBAClB,GAAG,MAAM,IAAI,KAAK;AAAA,cACpB;AACA,qBAAO,SAAS,YAAYA,KAAI,WAAW;AAC3C,qBAAO,2BAA2B,WAAW;AAC7C,qBAAO,SAAS,WAAWA,GAAE;AAC7B,kBAAI,CAAC,gBAAgB;AACnB,oBAAItB,KAAI;AAAA,kBACN,OAAO;AAAA,kBACP,IAAIsB;AAAA,kBACJ,KAAK;AAAA,gBACP;AACA,oBAAI,cAAc;AAChB,kBAAAtB,GAAE,cAAc;AAAA,gBAClB;AACA,uBAAO,SAAS,KAAK,0BAA0BA,EAAC;AAAA,cAClD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,OAAO,UAAU,QAAQ,KAAK,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACxG,eAAG,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,UAC/B;AACA,kBAAQ,IAAI,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,OAAO,gBAAgB;AACrD,YAAI,SAAS;AACb,YAAI,cAAc,KAAK,SAAS,KAAK;AACrC,YAAI,aAAa;AACf,cAAI,OAAO,SAASqB,MAAK,KAAK;AAC5B,gBAAI,YAAY,WAAW;AACzB,kBAAI,aAAa,SAASJ,YAAW,OAAOJ,QAAO;AACjD,yBAASZ,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,sBAAIM,KAAI,MAAMN,EAAC;AACf,sBAAIM,GAAE,SAAS;AACb,6BAASiB,KAAI,GAAGA,KAAIjB,GAAE,QAAQ,QAAQiB,MAAK;AACzC,0BAAIjB,GAAE,QAAQiB,EAAC,KAAK,MAAM;AACxB,4BAAI,iBAAiBjB,GAAE,QAAQiB,EAAC,EAAE,WAAW;AAC7C,4BAAI,mBAAmB,OAAO,OAAO,oBAAoB,gBAAgB,GAAG,GAAG;AAC7E,iCAAO,kBAAkBjB,IAAGM,QAAO,WAAW;AAAA,wBAChD;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,yBAAW,YAAY,YAAY,OAAO,MAAM,GAAG,CAAC;AACpD,yBAAW,YAAY,YAAY,OAAO,MAAM,GAAG,CAAC;AAAA,YACtD;AACA,wBAAY,OAAO,KAAK,MAAM,cAAc;AAC5C,gBAAI,QAAQ,OAAO,SAAS,mBAAmB,EAAE,OAAO,SAAS,MAAM,GAAG,CAAC;AAC3E,gBAAI,OAAO;AACT,qBAAO,MAAM;AAAA,YACf;AAAA,UACF;AACA,mBAAS,QAAQ,UAAU,QAAQ,KAAK,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC/G,eAAG,QAAQ,CAAC,IAAI,UAAU,KAAK;AAAA,UACjC;AACA,kBAAQ,IAAI,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASY,cAAa,OAAO;AAClC,YAAI,YAAY,CAAC;AACjB,YAAIzB,KAAI,MAAM;AACd,eAAOA,MAAK,MAAM;AAChB,oBAAU,KAAKA,EAAC;AAChB,UAAAA,KAAIA,GAAE;AAAA,QACR;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,OAAO,kBAAkB;AAClD,YAAI,SAAS,QAAQ,oBAAoB,MAAM;AAC7C,iBAAO;AAAA,QACT;AACA,eAAO,KAAK,aAAa,KAAK,EAAE,QAAQ,gBAAgB,MAAM;AAAA,MAChE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,OAAO;AACpC,YAAIG,KAAI,CAAC;AACT,YAAI,OAAO,SAASkB,MAAKjB,IAAG;AAC1B,cAAI,cAAcA,GAAE,UAAU;AAC9B,UAAAD,GAAE,KAAK,MAAMA,IAAG,mBAAmB,WAAW,CAAC;AAC/C,kBAAQ,aAAakB,KAAI;AAAA,QAC3B;AACA,aAAK,KAAK;AACV,eAAOlB;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,oBAAoB,UAAU;AACzD,YAAI,sBAAsB,QAAQ,YAAY,MAAM;AAClD,iBAAO;AAAA,QACT;AACA,eAAO,KAAK,eAAe,QAAQ,EAAE,QAAQ,kBAAkB,MAAM;AAAA,MACvE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,aAAK,uBAAuB,CAAC;AAC7B,aAAK,uBAAuB,CAAC;AAC7B,aAAK,WAAW,CAAC;AAAA,MACnB;AAAA,IACF,CAAC,CAAC;AACF,WAAOE;AAAA,EACT,EAAE;AAEF,MAAI,gBAAgB,WAAY;AAC9B,aAASqB,eAAc,UAAU,SAAS;AACxC,MAAA7C,iBAAgB,MAAM6C,cAAa;AACnC,WAAK,WAAW;AAChB,WAAK,UAAU;AAAA,IACjB;AACA,IAAAjC,cAAaiC,gBAAe,CAAC;AAAA,MAC3B,KAAK;AAAA,MACL,KAAK,SAAShC,OAAM;AAClB,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASiC,MAAK,SAAS;AAC5B,gBAAQ,KAAK,SAAS,SAAU5B,IAAG;AACjC,iBAAO,QAAQA,EAAC;AAAA,QAClB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASL,KAAImB,QAAO;AACzB,eAAO,KAAK,QAAQA,MAAK;AAAA,MAC3B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASe,UAAS,OAAO,SAAS;AACvC,aAAK,KAAK,SAAUrB,IAAG;AACrB,iBAAOA,GAAE,SAAS,OAAO,OAAO;AAAA,QAClC,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASsB,aAAY,OAAO,SAAS;AAC1C,aAAK,KAAK,SAAUtB,IAAG;AACrB,iBAAOA,GAAE,YAAY,OAAO,OAAO;AAAA,QACrC,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,aAAK,KAAK,SAAUA,IAAG;AACrB,iBAAOA,GAAE,kBAAkB;AAAA,QAC7B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO;AAC9B,aAAK,KAAK,SAAUA,IAAG;AACrB,iBAAOA,GAAE,SAAS,KAAK;AAAA,QACzB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASuB,SAAQ;AACtB,aAAK,QAAQ,SAAS;AACtB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAIC,KAAI;AACtB,YAAIC,KAAI,CAAC;AACT,aAAK,KAAK,SAAUlC,IAAG;AACrB,iBAAOkC,GAAE,KAAKD,IAAGjC,EAAC,CAAC;AAAA,QACrB,CAAC;AACD,eAAOkC;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,MAAM;AAC/B,aAAK,KAAK,SAAU1B,IAAG;AACrB,iBAAOA,GAAE,WAAW,IAAI;AAAA,QAC1B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcG,KAAI;AAChC,aAAK,KAAK,SAAUH,IAAG;AACrB,iBAAOA,GAAE,cAAcG,GAAE;AAAA,QAC3B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,aAAK,KAAK,SAAUH,IAAG;AACrB,iBAAOA,GAAE,eAAe;AAAA,QAC1B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYG,KAAI;AAC9B,aAAK,KAAK,SAAUH,IAAG;AACrB,iBAAOA,GAAE,YAAYG,GAAE;AAAA,QACzB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYA,KAAI;AAC9B,aAAK,KAAK,SAAUH,IAAG;AACrB,iBAAOA,GAAE,YAAYG,GAAE;AAAA,QACzB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,OAAO;AACnC,aAAK,KAAK,SAAUH,IAAG;AACrB,iBAAOA,GAAE,cAAc,KAAK;AAAA,QAC9B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,OAAO;AACxC,aAAK,KAAK,SAAUA,IAAG;AACrB,iBAAOA,GAAE,mBAAmB,KAAK;AAAA,QACnC,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,SAAS;AACxC,aAAK,KAAK,SAAUA,IAAG;AACrB,iBAAOA,GAAE,iBAAiB,OAAO;AAAA,QACnC,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa2B,OAAM,OAAO;AACxC,aAAK,KAAK,SAAU3B,IAAG;AACrB,iBAAOA,GAAE,WAAW2B,KAAI,IAAI;AAAA,QAC9B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAclC,IAAG;AAC/B,aAAK,KAAK,SAAUO,IAAG;AACrB,iBAAOA,GAAE,aAAaP;AAAA,QACxB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASmC,YAAWC,IAAG;AAC5B,aAAK,KAAK,SAAU7B,IAAG;AACrB,iBAAOA,GAAE,WAAW6B,EAAC;AAAA,QACvB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQF,OAAM;AAC5B,aAAK,KAAK,SAAU3B,IAAG;AACrB,iBAAOA,GAAE,QAAQ2B,KAAI;AAAA,QACvB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAWA,OAAM;AAC/B,aAAK,KAAK,SAAU3B,IAAG;AACrB,iBAAOA,GAAE,WAAW2B,KAAI;AAAA,QAC1B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAWA,OAAM;AAC/B,aAAK,KAAK,SAAU3B,IAAG;AACrB,iBAAOA,GAAE,WAAW2B,KAAI;AAAA,QAC1B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,KAAK,SAAS;AACjC,aAAK,KAAK,SAAU3B,IAAG;AACrB,iBAAOA,GAAE,KAAK,KAAK,OAAO;AAAA,QAC5B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO,KAAK,SAAS;AACnC,aAAK,KAAK,SAAUA,IAAG;AACrB,iBAAOA,GAAE,OAAO,KAAK,OAAO;AAAA,QAC9B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAASnB,IAAG;AAC1B,YAAI,QAAQ;AACZ,aAAK,KAAK,SAAUmB,IAAG;AACrB,iBAAO,MAAM,SAAS,SAASA,IAAGnB,EAAC;AAAA,QACrC,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOsC;AAAA,EACT,EAAE;AAEF,MAAI,oBAAoB,SAAU,gBAAgB;AAChD,IAAAjD,WAAU4D,oBAAmB,cAAc;AAC3C,QAAI,SAAS1D,cAAa0D,kBAAiB;AAC3C,aAASA,qBAAoB;AAC3B,MAAAxD,iBAAgB,MAAMwD,kBAAiB;AACvC,aAAO,OAAO,MAAM,MAAM,SAAS;AAAA,IACrC;AACA,IAAA5C,cAAa4C,oBAAmB,CAAC;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO,SAAS,WAAWtC,IAAG;AAC5B,aAAK,KAAK,SAAU,IAAI;AACtB,iBAAO,GAAG,UAAUA;AAAA,QACtB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUkC,IAAG;AAC3B,aAAK,KAAK,SAAU,IAAI;AACtB,iBAAO,GAAG,UAAUA,EAAC;AAAA,QACvB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB;AACtC,aAAK,KAAK,SAAU,IAAI;AACtB,iBAAO,GAAG,sBAAsB;AAAA,QAClC,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,YAAI,QAAQ;AACZ,aAAK,KAAK,SAAU,IAAI;AACtB,iBAAO,MAAM,SAAS,eAAe,EAAE;AAAA,QACzC,CAAC;AACD,aAAK,MAAM;AACX,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOI;AAAA,EACT,EAAE,aAAa;AAEf,MAAI,sBAAsB,SAAU,gBAAgB;AAClD,IAAA5D,WAAU6D,sBAAqB,cAAc;AAC7C,QAAI,SAAS3D,cAAa2D,oBAAmB;AAC7C,aAASA,uBAAsB;AAC7B,MAAAzD,iBAAgB,MAAMyD,oBAAmB;AACzC,aAAO,OAAO,MAAM,MAAM,SAAS;AAAA,IACrC;AACA,IAAA7C,cAAa6C,sBAAqB,CAAC;AAAA,MACjC,KAAK;AAAA,MACL,OAAO,SAAS,cAAcnC,IAAG;AAC/B,aAAK,KAAK,SAAUI,IAAG;AACrB,iBAAOA,GAAE,cAAcJ,EAAC;AAAA,QAC1B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYA,IAAG;AAC7B,aAAK,KAAK,SAAUI,IAAG;AACrB,iBAAOA,GAAE,YAAYJ,EAAC;AAAA,QACxB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,MAAM;AACjC,aAAK,KAAK,SAAUI,IAAG;AACrB,iBAAOA,GAAE,cAAc,IAAI;AAAA,QAC7B,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,YAAI,QAAQ;AACZ,aAAK,KAAK,SAAUA,IAAG;AACrB,iBAAO,MAAM,SAAS,iBAAiBA,EAAC;AAAA,QAC1C,CAAC;AACD,aAAK,MAAM;AAAA,MACb;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASgC,WAAU;AACxB,YAAI,SAAS;AACb,aAAK,KAAK,SAAUhC,IAAG;AACrB,iBAAO,OAAO,SAAS,iBAAiBA,EAAC;AAAA,QAC3C,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAO+B;AAAA,EACT,EAAE,aAAa;AAEf,MAAI,cAAc,SAASE,eAAc;AACvC,IAAA3D,iBAAgB,MAAM2D,YAAW;AACjC,IAAA1D,iBAAgB,MAAM,oBAAoB,oBAAI,IAAI,CAAC;AAAA,EACrD;AACA,WAAS,iBAAiB;AACxB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,QACD,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,GAAG;AAAA,QACD,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,UACD,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,QACA,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS2D,QAAOxD,IAAGC,IAAGC,IAAGC,IAAGsD,IAAG;AAC7B,QAAIC,UAAS;AAAA,MACX,GAAG1D,KAAIE,KAAI;AAAA,MACX,GAAGD,KAAIE,KAAI;AAAA,IACb,GACI,KAAK,KAAK,IAAIsD,KAAI,MAAM,KAAK,KAAK,CAAC,GACnC,KAAK,KAAK,IAAIA,KAAI,MAAM,KAAK,KAAK,CAAC,GACnC,SAAS,SAASE,QAAO3D,IAAGC,IAAG;AACjC,aAAO;AAAA,QACL,GAAGyD,QAAO,IAAI,KAAK,OAAO1D,KAAI0D,QAAO,KAAK,MAAMzD,KAAIyD,QAAO,KAAK,EAAE;AAAA,QAClE,GAAGA,QAAO,IAAI,KAAK,OAAOzD,KAAIyD,QAAO,KAAK,MAAM1D,KAAI0D,QAAO,KAAK,EAAE;AAAA,MACpE;AAAA,IACF;AACA,QAAI,KAAK,OAAO1D,IAAGC,EAAC,GAChB2D,MAAK,OAAO5D,KAAIE,IAAGD,EAAC,GACpB,KAAK,OAAOD,KAAIE,IAAGD,KAAIE,EAAC,GACxB,KAAK,OAAOH,IAAGC,KAAIE,EAAC,GACpBmB,KAAI,OAAOtB,KAAIE,KAAI,GAAGD,KAAIE,KAAI,CAAC;AACnC,QAAI,OAAO,KAAK,IAAI,GAAG,GAAGyD,IAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACtC,OAAO,KAAK,IAAI,GAAG,GAAGA,IAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACtC,OAAO,KAAK,IAAI,GAAG,GAAGA,IAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACtC,OAAO,KAAK,IAAI,GAAG,GAAGA,IAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1C,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,MACV,GAAGtC;AAAA,MACH,GAAGmC;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,MAAI,kBAAkB,SAASI,iBAAgB,OAAO,YAAY;AAChE,QAAIvC,KAAI;AACR,QAAI,WAAW,CAAC,IAAI,MAAM,CAAC,GAAG;AAC5B,MAAAA,KAAI;AAAA,IACN,WAAW,WAAW,CAAC,IAAI,MAAM,CAAC,GAAG;AACnC,MAAAA,KAAI;AAAA,IACN;AACA,WAAOA;AAAA,EACT;AACA,MAAI,yBAAyB,SAASwC,wBAAuB,OAAO,YAAY;AAC9E,WAAO,gBAAgB,OAAO,UAAU,IAAI;AAAA,EAC9C;AACA,WAAS,oBAAoBrC,KAAI,OAAOsC,QAAO,gBAAgB;AAC7D,iBAAa,CAACtC,KAAI,KAAK,GAAGsC,QAAO,iBAAiB,cAAc;AAAA,EAClE;AACA,WAAS,mBAAmBtC,KAAIsC,QAAO;AACrC,QAAI,MAAM,iBAAiBA,QAAO,SAAU,OAAO;AACjD,aAAO,MAAM,CAAC,MAAMtC;AAAA,IACtB,CAAC;AACD,QAAI,MAAM,IAAI;AACZ,MAAAsC,OAAM,OAAO,KAAK,CAAC;AAAA,IACrB;AAAA,EACF;AACA,MAAI,WAAW,SAAU,iBAAiB;AACxC,IAAAvE,WAAUwE,WAAU,eAAe;AACnC,QAAI,SAAStE,cAAasE,SAAQ;AAClC,aAASA,UAAS,UAAU;AAC1B,UAAI;AACJ,MAAApE,iBAAgB,MAAMoE,SAAQ;AAC9B,cAAQ,OAAO,KAAK,IAAI;AACxB,YAAM,WAAW;AACjB,MAAAnE,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,IAAI;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB;AAAA,QAChE,MAAM,CAAC;AAAA,QACP,MAAM,CAAC;AAAA,QACP,MAAM,CAAC;AAAA,QACP,MAAM,CAAC;AAAA,MACT,CAAC;AACD,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,oBAAI,IAAI,CAAC;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,0BAA0B,oBAAI,IAAI,CAAC;AAClF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,WAAW;AAAA,QACxD,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AACD,aAAO;AAAA,IACT;AACA,IAAAU,cAAawD,WAAU,CAAC;AAAA,MACtB,KAAK;AAAA,MACL,OAAO,SAAS,cAAcvC,KAAI,gBAAgB,wBAAwB;AACxE,YAAI,kBAAkB,MAAM;AAC1B,6BAAmBA,KAAI,KAAK,gBAAgB,IAAI;AAChD,6BAAmBA,KAAI,KAAK,gBAAgB,IAAI;AAChD,6BAAmBA,KAAI,KAAK,gBAAgB,IAAI;AAChD,6BAAmBA,KAAI,KAAK,gBAAgB,IAAI;AAChD,8BAAoBA,KAAI,eAAe,EAAE,GAAG,KAAK,gBAAgB,MAAM,KAAK;AAC5E,8BAAoBA,KAAI,eAAe,EAAE,IAAI,eAAe,EAAE,GAAG,KAAK,gBAAgB,MAAM,IAAI;AAChG,8BAAoBA,KAAI,eAAe,EAAE,GAAG,KAAK,gBAAgB,MAAM,KAAK;AAC5E,8BAAoBA,KAAI,eAAe,EAAE,IAAI,eAAe,EAAE,GAAG,KAAK,gBAAgB,MAAM,IAAI;AAChG,cAAI,2BAA2B,MAAM;AACnC,iBAAK,mBAAmB;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB;AACnC,aAAK,QAAQ,OAAO,KAAK,gBAAgB,KAAK,SAAS,IAAI,KAAK,gBAAgB,KAAK,CAAC,EAAE,CAAC,IAAI;AAC7F,aAAK,QAAQ,OAAO,KAAK,gBAAgB,KAAK,SAAS,IAAI,KAAK,gBAAgB,KAAK,CAAC,EAAE,CAAC,IAAI;AAC7F,aAAK,QAAQ,OAAO,KAAK,gBAAgB,KAAK,SAAS,IAAI,KAAK,gBAAgB,KAAK,CAAC,EAAE,CAAC,IAAI;AAC7F,aAAK,QAAQ,OAAO,KAAK,gBAAgB,KAAK,SAAS,IAAI,KAAK,gBAAgB,KAAK,CAAC,EAAE,CAAC,IAAI;AAAA,MAC/F;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,YAAI,SAAS;AACb,aAAK,gBAAgB,KAAK,SAAS;AACnC,aAAK,gBAAgB,KAAK,SAAS;AACnC,aAAK,gBAAgB,KAAK,SAAS;AACnC,aAAK,gBAAgB,KAAK,SAAS;AACnC,aAAK,YAAY,QAAQ,SAAU,IAAIA,KAAI;AACzC,iBAAO,gBAAgB,KAAK,KAAK,CAACA,KAAI,GAAG,EAAE,CAAC,CAAC;AAC7C,iBAAO,gBAAgB,KAAK,KAAK,CAACA,KAAI,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACtD,iBAAO,gBAAgB,KAAK,KAAK,CAACA,KAAI,GAAG,EAAE,CAAC,CAAC;AAC7C,iBAAO,gBAAgB,KAAK,KAAK,CAACA,KAAI,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAAA,QACxD,CAAC;AACD,aAAK,gBAAgB,KAAK,KAAK,eAAe;AAC9C,aAAK,gBAAgB,KAAK,KAAK,eAAe;AAC9C,aAAK,gBAAgB,KAAK,KAAK,sBAAsB;AACrD,aAAK,gBAAgB,KAAK,KAAK,sBAAsB;AACrD,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBA,KAAIX,IAAG,wBAAwB;AAC7D,QAAAA,GAAE,IAAI0C,QAAO1C,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,CAAC;AACpC,aAAK,uBAAuB,IAAIW,KAAIX,GAAE,CAAC;AACvC,YAAI,2BAA2B,MAAM;AACnC,eAAK,cAAcW,KAAIX,IAAG,sBAAsB;AAAA,QAClD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,OAAO,OAAO,eAAe;AAC3D,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB;AACjC,YAAI,KAAK,uBAAuB,MAAM;AACpC,gBAAM,IAAI,MAAM,wEAAwE;AAAA,QAC1F;AACA,aAAK,sBAAsB,IAAI,YAAY;AAAA,MAC7C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,YAAI,SAAS;AACb,YAAI,KAAK,uBAAuB,MAAM;AACpC,eAAK,oBAAoB,iBAAiB,QAAQ,SAAUW,KAAI;AAC9D,gBAAI,QAAQ,OAAO,YAAYA,GAAE;AACjC,mBAAO,gBAAgBA,KAAI,OAAO,IAAI;AAAA,UACxC,CAAC;AACD,eAAK,gBAAgB;AACrB,eAAK,sBAAsB;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,SAAS;AACtC,YAAI,SAAS;AACb,gBAAQ,SAAS,SAAUX,IAAG;AAC5B,iBAAO,OAAO,cAAcA,GAAE,IAAIA,GAAE,GAAGA,GAAE,GAAGA,GAAE,OAAOA,GAAE,QAAQA,GAAE,QAAQ;AAAA,QAC3E,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcW,KAAIzB,IAAGC,IAAGgE,QAAOC,SAAQ,UAAU,wBAAwB;AACvF,YAAIpD,KAAI,QAAQ,KAAK,aAAaW,KAAI,cAAc;AACpD,QAAAX,GAAE,QAAQd,MAAK,QAAQc,GAAE,KAAK,QAAQb,MAAK,QAAQa,GAAE,KAAK,QAAQmD,UAAS,QAAQnD,GAAE,KAAK,QAAQoD,WAAU,QAAQpD,GAAE,KAAK;AAC3H,YAAId,MAAK,MAAM;AACb,UAAAc,GAAE,IAAId;AAAA,QACR;AACA,YAAIC,MAAK,MAAM;AACb,UAAAa,GAAE,IAAIb;AAAA,QACR;AACA,YAAIgE,UAAS,MAAM;AACjB,UAAAnD,GAAE,IAAImD;AAAA,QACR;AACA,YAAIC,WAAU,MAAM;AAClB,UAAApD,GAAE,IAAIoD;AAAA,QACR;AACA,YAAI,YAAY,MAAM;AACpB,UAAApD,GAAE,IAAI,YAAY;AAAA,QACpB;AACA,QAAAA,GAAE,EAAE,IAAIA,GAAE,IAAIA,GAAE,IAAI;AACpB,QAAAA,GAAE,EAAE,IAAIA,GAAE,IAAIA,GAAE,IAAI;AACpB,QAAAA,GAAE,KAAKA,GAAE,IAAIA,GAAE;AACf,QAAAA,GAAE,KAAKA,GAAE,IAAIA,GAAE;AACf,YAAI,KAAK,uBAAuB,MAAM;AACpC,eAAK,gBAAgBW,KAAIX,IAAG,sBAAsB;AAAA,QACpD,OAAO;AACL,eAAK,oBAAoB,iBAAiB,IAAIW,GAAE;AAAA,QAClD;AACA,eAAOX;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,MAAM,wBAAwB;AAC3D,YAAI,KAAK,KAAK,SAAS,mBAAmB;AAC1C,YAAIqD,KAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK;AACjC,YAAIA,MAAK,MAAM;AACb,cAAIC,QAAO,KAAK,QAAQD,EAAC;AACzB,cAAIE,UAAS,KAAK,UAAUF,EAAC;AAC7B,iBAAO,KAAK,cAAc,MAAME,QAAO,GAAGA,QAAO,GAAGD,MAAK,GAAGA,MAAK,GAAG,MAAM,sBAAsB;AAAA,QAClG,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,IAAI;AAC1B,eAAO,KAAK,SAAS,QAAQ,EAAE;AAAA,MACjC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,IAAI;AAC5B,eAAO,KAAK,SAAS,UAAU,EAAE;AAAA,MACnC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB3C,KAAI,wBAAwB;AAC1D,eAAO,KAAK,cAAcA,KAAI,GAAG,GAAG,GAAG,GAAG,GAAG,sBAAsB;AAAA,MACrE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAWA,KAAIzB,IAAGC,IAAGgE,QAAOC,SAAQ,UAAU;AAC5D,eAAO,KAAK,cAAczC,KAAIzB,IAAGC,IAAGgE,QAAOC,SAAQ,QAAQ;AAAA,MAC7D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAczC,KAAI,UAAU;AAC1C,YAAIX,KAAI,QAAQ,KAAK,aAAaW,KAAI,cAAc;AACpD,QAAAX,GAAE,IAAI,YAAY;AAClB,aAAK,gBAAgBW,KAAIX,EAAC;AAC1B,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,eAAO,KAAK,QAAQ,OAAO,KAAK,QAAQ;AAAA,MAC1C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,eAAO,KAAK,QAAQ,OAAO,KAAK,QAAQ;AAAA,MAC1C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO;AACrB,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO;AACrB,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQW,KAAIvB,IAAGC,IAAG;AAChC,YAAI,KAAK,YAAY,IAAIsB,GAAE,GAAG;AAC5B,iBAAO,KAAK,cAAcA,KAAI,MAAM,MAAMvB,IAAGC,IAAG,IAAI;AAAA,QACtD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYsB,KAAIzB,IAAGC,IAAG;AACpC,YAAI,KAAK,YAAY,IAAIwB,GAAE,GAAG;AAC5B,iBAAO,KAAK,cAAcA,KAAIzB,IAAGC,IAAG,MAAM,MAAM,IAAI;AAAA,QACtD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,aAAK,gBAAgB,KAAK,SAAS;AACnC,aAAK,gBAAgB,KAAK,SAAS;AACnC,aAAK,gBAAgB,KAAK,SAAS;AACnC,aAAK,gBAAgB,KAAK,SAAS;AACnC,aAAK,YAAY,MAAM;AACvB,aAAK,uBAAuB,MAAM;AAClC,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASY,QAAOY,KAAI;AACzB,2BAAmBA,KAAI,KAAK,gBAAgB,IAAI;AAChD,2BAAmBA,KAAI,KAAK,gBAAgB,IAAI;AAChD,2BAAmBA,KAAI,KAAK,gBAAgB,IAAI;AAChD,2BAAmBA,KAAI,KAAK,gBAAgB,IAAI;AAChD,aAAK,YAAY,QAAQ,EAAEA,GAAE;AAC7B,aAAK,uBAAuB,QAAQ,EAAEA,GAAE;AACxC,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYA,KAAI;AAC9B,eAAO,KAAK,YAAY,IAAIA,GAAE;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU;AACxB,eAAO,KAAK,YAAY,SAAS;AAAA,MACnC;AAAA,IACF,CAAC,CAAC;AACF,WAAOuC;AAAA,EACT,EAAE,cAAc;AAEhB,MAAI;AACJ,WAAS,oBAAoB,SAAS,aAAa,YAAY,iBAAiB,SAAS;AACvF,QAAI,aAAa,aAAa,QAAQ,IAAI,QAAQ;AAClD,QAAI,kBAAkB,aAAa,QAAQ,IAAI,QAAQ;AACvD,QAAIhB,KAAI,CAAC,GACL,OAAO,cAAc,YAAY,SAAS;AAC9C,aAAShC,KAAI,GAAGA,KAAI,YAAY,QAAQA,MAAK;AAC3C,UAAI,OAAOA,KAAI,KAAK,MAChB,QAAQ,kBAAkB;AAC9B,UAAI,SAAS;AACX,cAAM,aAAa;AAAA,MACrB;AACA,UAAIsD,MAAK,aAAa,MAAM,OACxBtE,KAAI,QAAQ,IAAIsE,KAChB,KAAKA,MAAK,QAAQ;AACtB,UAAIC,MAAK,aAAa,QAAQ,KAC1BtE,KAAI,QAAQ,IAAIsE,KAChB,KAAKA,MAAK,QAAQ;AACtB,UAAI,QAAQ,MAAM,KAAK,QAAQ,KAAK,MAAM;AACxC,YAAI,UAAU,YAAY;AAAA,UACxB,GAAGvE;AAAA,UACH,GAAGC;AAAA,QACL,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACvB,QAAAD,KAAI,QAAQ;AACZ,QAAAC,KAAI,QAAQ;AAAA,MACd;AACA,MAAA+C,GAAE,KAAK;AAAA,QACL,GAAGhD;AAAA,QACH,GAAGC;AAAA,QACH,MAAM;AAAA,QACN,MAAM;AAAA,QACN,GAAG,YAAYe,EAAC,EAAE;AAAA,MACpB,CAAC;AAAA,IACH;AACA,WAAOgC;AAAA,EACT;AACA,WAAS,oBAAoBA,IAAGwB,IAAG;AACjC,WAAOA,GAAE,QAAQxB,GAAE;AAAA,EACrB;AACA,WAAS,gBAAgBA,IAAGwB,IAAG;AAC7B,QAAI,KAAKxB,GAAE,QAAQ,IAAI,CAAC,KAAK,KAAKA,GAAE,QAAQ,KAAK,KAAKA,GAAE,OACpDY,MAAKY,GAAE,QAAQ,IAAI,CAAC,KAAK,KAAKA,GAAE,QAAQ,KAAK,KAAKA,GAAE;AACxD,WAAO,KAAKZ;AAAA,EACd;AACA,MAAI,qBAAqB,qBAAqB,CAAC,GAAG/D,iBAAgB,oBAAoB,KAAK,eAAe,GAAGA,iBAAgB,oBAAoB,OAAO,mBAAmB,GAAGA,iBAAgB,oBAAoB,QAAQ,mBAAmB,GAAGA,iBAAgB,oBAAoB,MAAM,eAAe,GAAG;AAC5S,WAAS,aAAamD,IAAG;AACvB,WAAOA,GAAE,iBAAiB;AAAA,EAC5B;AACA,WAAS,YAAYA,IAAG;AACtB,WAAOA,GAAE,iBAAiB;AAAA,EAC5B;AACA,WAAS,UAAUA,IAAG;AACpB,WAAOA,GAAE,UAAU,SAAS;AAAA,EAC9B;AACA,WAAS,mBAAmB,QAAQ;AAClC,WAAO,CAAC,OAAO,iBAAiB,OAAO,UAAU,OAAO,eAAe,CAAC;AAAA,EAC1E;AACA,MAAI,oBAAoB,WAAY;AAClC,aAASyB,mBAAkB,UAAU;AACnC,UAAI,QAAQ;AACZ,MAAA7E,iBAAgB,MAAM6E,kBAAiB;AACvC,WAAK,WAAW;AAChB,MAAA5E,iBAAgB,MAAM,eAAe,oBAAI,IAAI,CAAC;AAC9C,MAAAA,iBAAgB,MAAM,mBAAmB,oBAAI,IAAI,CAAC;AAClD,eAAS,KAAK,oCAAoC,SAAUkB,IAAG;AAC7D,YAAIA,GAAE,eAAe,QAAQ,cAAc;AACzC,gBAAM,+BAA+BA,GAAE,cAAc;AAAA,QACvD;AACA,YAAIA,GAAE,eAAe,QAAQ,cAAc;AACzC,gBAAM,+BAA+BA,GAAE,cAAc;AAAA,QACvD;AAAA,MACF,CAAC;AACD,eAAS,KAAK,sCAAsC,SAAU,IAAI;AAChE,cAAM,+BAA+B,EAAE;AAAA,MACzC,CAAC;AAAA,IACH;AACA,IAAAP,cAAaiE,oBAAmB,CAAC;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,QAAQ;AAC3C,YAAI,MAAM,KAAK,gBAAgB,IAAI,OAAO,EAAE;AAC5C,eAAO,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAAA,MACvC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,QAAQC,KAAIC,KAAI,IAAI,IAAI,UAAU,gBAAgB;AAC1E,YAAIC,MAAK,GAAG,IAAI,OAAO,IAAI,GAAG,GAC1BC,MAAK,GAAG,IAAI,OAAO,IAAI,GAAG,GAC1B,MAAM,GAAG,IAAI,GAAG,IAAI,GACpB,MAAM,GAAG,IAAI,GAAG,IAAI;AACxB,YAAI,YAAY,QAAQ,SAAS,SAAS,GAAG;AAC3C,cAAI,UAAU,KAAK,SAAS,gBAAgB,CAACD,KAAIC,KAAI,GAAG,CAAC,GAAG,QAAQ;AACpE,UAAAD,MAAK,QAAQ;AACb,UAAAC,MAAK,QAAQ;AAAA,QACf;AACA,eAAO,KAAK,KAAK,KAAK,IAAIH,MAAKE,KAAI,CAAC,IAAI,KAAK,IAAID,MAAKE,KAAI,CAAC,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,MAAMD,KAAI,CAAC,IAAI,KAAK,IAAI,MAAMC,KAAI,CAAC,CAAC;AAAA,MACzH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,IAAI,IAAI,KAAK,KAAK,UAAU,gBAAgB,WAAW;AACrF,YAAIH,MAAK,IAAI,IAAI,IAAI,IAAI,GACrBC,MAAK,IAAI,IAAI,IAAI,IAAI;AACzB,YAAI,SAAS,IACT,UAAU;AACd,iBAAS3D,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,cAAIE,KAAI,KAAK,UAAU,UAAUF,EAAC,GAAG0D,KAAIC,KAAI,IAAI,IAAI,UAAU,cAAc;AAC7E,cAAIzD,KAAI,SAAS;AACf,qBAASF,KAAI;AACb,sBAAUE;AAAA,UACZ;AAAA,QACF;AACA,eAAO,CAAC,QAAQ,UAAU,MAAM,CAAC;AAAA,MACnC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,QAAQvB,SAAQ;AACrD,YAAI,KAAKA,QAAO;AAChB,YAAI,MAAM;AAAA,UACR,MAAM,GAAG,IAAI,OAAO,KAAK,IAAI;AAAA,UAC7B,MAAM,GAAG,IAAI,OAAO,KAAK,IAAI;AAAA,UAC7B,GAAG;AAAA,UACH,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,IAAI;AAAA,QACN;AACA,eAAO,KAAK,qBAAqB,QAAQ,GAAG;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,QAAQ,KAAK,WAAW;AAC3D,aAAK,gBAAgB,IAAI,OAAO,IAAI,GAAG;AACvC,eAAO,mBAAmB;AAC1B,YAAI,WAAW;AACb,iBAAO,YAAY;AAAA,QACrB;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,KAAK,IAAI,IAAIA,SAAQ;AAC1D,YAAI;AACJ,YAAI,WAAWA,QAAO;AACtB,YAAI,YAAY;AAAA,UACd,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI;AAAA,UAChC,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI;AAAA,UAChC,GAAG,IAAI;AAAA,UACP,GAAG,IAAI;AAAA,UACP,IAAI;AAAA,UACJ,IAAI;AAAA,QACN;AACA,YAAI,YAAY,QAAQ,SAAS,SAAS,GAAG;AAC3C,cAAImF,KAAI,CAAC,IAAI,KAAK,IAAI,GAAG,GACrB,UAAU;AAAA,YACZ,GAAG,UAAU;AAAA,YACb,GAAG,UAAU;AAAA,YACb,IAAI;AAAA,YACJ,IAAI;AAAA,UACN;AACA,kBAAQ,UAAU,SAAUrB,IAAG;AAC7B,sBAAU,YAAY,SAASA,GAAE,GAAGA,GAAE,CAAC;AACvC,gBAAI,KAAK,CAAC,KAAK,MAAMqB,GAAE,CAAC,IAAI,QAAQ,KAAKA,GAAE,CAAC,IAAI,QAAQ,EAAE,GAAG,KAAK,MAAMA,GAAE,CAAC,IAAI,QAAQ,KAAKA,GAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;AAC9G,YAAAA,KAAI,GAAG,MAAM;AAAA,UACf,CAAC;AACD,cAAI,KAAKA,GAAE,CAAC;AACZ,cAAI,KAAKA,GAAE,CAAC;AACZ,gBAAM;AAAA,YACJ,MAAM,QAAQ;AAAA,YACd,MAAM,QAAQ;AAAA,YACd,GAAG,IAAI;AAAA,YACP,GAAG,IAAI;AAAA,YACP,IAAIA,GAAE,CAAC;AAAA,YACP,IAAIA,GAAE,CAAC;AAAA,UACT;AAAA,QACF,OAAO;AACL,cAAI,KAAK,IAAI;AACb,cAAI,KAAK,IAAI;AACb,gBAAMC,QAAO;AAAA,YACX,IAAI,IAAI;AAAA,YACR,IAAI,IAAI;AAAA,UACV,GAAG,SAAS;AAAA,QACd;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,QAAQpF,SAAQ;AACnD,YAAI,KAAKA,QAAO,IACZ,KAAKA,QAAO,IACZ,YAAYA,QAAO,WACnB,MAAM,KAAK,gBAAgB,IAAI,OAAO,EAAE;AAC5C,YAAI,OAAO,QAAQ,aAAa,cAAc,OAAO,WAAW;AAC9D,iBAAO;AAAA,QACT;AACA,YAAI,sBAAsB,mBAAmB,MAAM,GAC/C,uBAAuB,eAAe,qBAAqB,CAAC;AAC5D,6BAAqB,CAAC;AACtB,YAAI,aAAa,qBAAqB,CAAC;AAC3C,cAAM,KAAK,uBAAuB,YAAY,IAAI,IAAIA,OAAM;AAC5D,eAAO,KAAK,qBAAqB,QAAQ,KAAK,SAAS;AAAA,MACzD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB,QAAQA,SAAQ;AACpD,YAAI;AACJ,YAAI,OAAO,UAAU,WAAW,GAAG;AACjC,iBAAO,KAAK,qBAAqB,QAAQA,OAAM;AAAA,QACjD;AACA,YAAI,KAAKA,QAAO,IACZ,KAAKA,QAAO,IACZ,MAAMA,QAAO,KACb,MAAMA,QAAO;AACjB,YAAI,uBAAuB,mBAAmB,MAAM,GAChD,uBAAuB,eAAe,sBAAsB,CAAC,GAC7D,aAAa,qBAAqB,CAAC,GACnC,aAAa,qBAAqB,CAAC;AACvC,YAAI,OAAO,UAAU,OAAO,QAAQ,OAAO,MAAM;AAC/C,gBAAM,KAAK,uBAAuB,YAAY,IAAI,IAAIA,OAAM;AAAA,QAC9D,OAAO;AACL,cAAI,wBAAwB,KAAK,gBAAgB,IAAI,IAAI,KAAK,KAAKA,QAAO,UAAUA,QAAO,WAAW,OAAO,SAAS,GAClH,yBAAyB,eAAe,uBAAuB,CAAC,GAChE,SAAS,uBAAuB,CAAC,GACjC,SAAS,uBAAuB,CAAC;AACrC,iBAAO,kBAAkB;AACzB,cAAI,WAAW,YAAY;AACzB,mBAAO,WAAW,OAAO,OAAO,OAAO;AACvC,YAAAA,QAAO,QAAQ,uBAAuB,MAAM;AAAA,UAC9C;AACA,gBAAM,KAAK,uBAAuB,QAAQ,IAAI,IAAIA,OAAM;AAAA,QAC1D;AACA,eAAO,KAAK,qBAAqB,QAAQ,KAAKA,QAAO,SAAS;AAAA,MAChE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,WAAW,cAAc;AACrD,YAAI,SAAS;AACb,YAAI,KAAK,KAAK,SAAS,SAAS,YAAY,SAAS,GACjD,mBAAmB,SAASqF,kBAAiB,MAAM,SAAS,qBAAqB,cAAc,iBAAiB,aAAa;AAC/H,cAAI,oBAAoB,SAAS,GAAG;AAClC,gBAAI,KAAK,oBAAoB,KAAK,kBAAkB,IAAI,CAAC,GACzD,UAAU,SAAS,SAAS,SAAS,KACjC,UAAU,oBAAoB,IAAI,IAAI,cAAc,iBAAiB,OAAO;AAChF,qBAAShE,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACvC,kBAAIM,KAAI,QAAQN,EAAC,EAAE,GACf,cAAcM,GAAE,UAAU,CAAC,EAAE,cAAc,WAC3C,KAAK,cAAcA,GAAE,UAAU,CAAC,IAAIA,GAAE,UAAU,CAAC;AACrD,qBAAO,qBAAqB,GAAG,SAAS;AAAA,gBACtC,MAAM,QAAQN,EAAC,EAAE;AAAA,gBACjB,MAAM,QAAQA,EAAC,EAAE;AAAA,gBACjB,GAAG,QAAQA,EAAC,EAAE;AAAA,gBACd,GAAG,QAAQA,EAAC,EAAE;AAAA,gBACd,IAAI,YAAY,CAAC;AAAA,gBACjB,IAAI,YAAY,CAAC;AAAA,cACnB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AACA,yBAAiB,QAAQ,IAAI,aAAa,QAAQ,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AACjE,yBAAiB,KAAK,IAAI,aAAa,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;AAC5D,yBAAiB,MAAM,IAAI,aAAa,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/D,yBAAiB,OAAO,IAAI,aAAa,OAAO,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAAA,MAClE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,OAAOiE,QAAOC,QAAO,MAAM,UAAU,WAAW,KAAK,SAAS,QAAQ,cAAc,kBAAkB;AACtI,YAAI,WAAW,KAAK,UAAU,GAAG,GAC7B,aAAa,SAAS,IACtB,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GACjB,SAAS;AAAA,UACX,OAAOD;AAAA,UACP,OAAOC;AAAA,UACP,GAAG;AAAA,UACH,GAAG;AAAA,UACH,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GACI,cAAc,MAAM,MAAM,GAC1B,mBAAmB,SAAS,wBAAwB,MAAM,SAAS,qBAAqB,IAAI,MAC5F;AACJ,YAAI,kBAAkB;AACpB,cAAI,OAAO,iBAAiB,kBAAkB,SAAUpE,IAAG;AACzD,mBAAOA,GAAE,SAAS;AAAA,UACpB,CAAC;AACD,cAAI,SAAS,IAAI;AACf,6BAAiB,OAAO,MAAM,CAAC;AAC/B,qBAASE,KAAI,GAAGA,KAAI,iBAAiB,QAAQA,MAAK;AAChD,0BAAY,iBAAiBA,EAAC,EAAE;AAChC,kBAAI,UAAU,gBAAgB,MAAM;AAClC,6BAAa,IAAI,SAAS;AAAA,cAC5B;AACA,+BAAiB,IAAI,iBAAiBA,EAAC,EAAE,EAAE,UAAU,GAAG,CAAC;AACzD,+BAAiB,IAAI,iBAAiBA,EAAC,EAAE,EAAE,UAAU,IAAI,CAAC;AAAA,YAC5D;AAAA,UACF;AAAA,QACF;AACA,iBAAS,KAAK,GAAG,KAAK,YAAY,QAAQ,MAAM;AAC9C,sBAAY,YAAY,EAAE,EAAE;AAC5B,cAAI,UAAU,gBAAgB,MAAM;AAClC,yBAAa,IAAI,SAAS;AAAA,UAC5B;AACA,2BAAiB,IAAI,YAAY,EAAE,EAAE,EAAE,UAAU,GAAG,CAAC;AACrD,2BAAiB,IAAI,YAAY,EAAE,EAAE,EAAE,UAAU,IAAI,CAAC;AAAA,QACxD;AACA;AACE,cAAI,YAAY,UAAU,IAAI,YAAY;AAC1C,sBAAY,OAAO,WAAW,GAAG,MAAM;AAAA,QACzC;AACA,iBAAS,wBAAwB;AAAA,MACnC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,+BAA+B,UAAU;AACvD,YAAI,kBAAkB,KAAK,YAAY,IAAI,SAAS,SAAS;AAC7D,YAAI,QAAQ;AACZ,SAAC,SAAU,MAAM,KAAK;AACpB,cAAI,MAAM;AACR,gBAAIK,KAAI,SAASA,GAAEP,IAAG;AACpB,qBAAOA,GAAE,SAAS;AAAA,YACpB;AACA,+BAAmB,KAAK,KAAKO,EAAC;AAC9B,+BAAmB,KAAK,MAAMA,EAAC;AAC/B,+BAAmB,KAAK,QAAQA,EAAC;AACjC,+BAAmB,KAAK,OAAOA,EAAC;AAChC,qBAAS,KAAK,IAAI;AAClB,qBAAS,KAAK,KAAK;AACnB,qBAAS,KAAK,OAAO;AACrB,qBAAS,KAAK,MAAM;AAAA,UACtB;AAAA,QACF,GAAG,iBAAiB,SAAS,EAAE;AAC/B,YAAI,UAAU,GAAG;AACf,eAAK,YAAY,QAAQ,EAAE,SAAS,SAAS;AAAA,QAC/C;AACA,aAAK,gBAAgB,QAAQ,EAAE,SAAS,QAAQ,EAAE;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB,QAAQ1B,SAAQ;AACpD,YAAI;AACJ,YAAI,aAAa,MAAM,GAAG;AACxB,gBAAM,KAAK,gBAAgB,IAAI,OAAO,EAAE,KAAK;AAAA,YAC3C,MAAM;AAAA,YACN,MAAM;AAAA,YACN,GAAG;AAAA,YACH,GAAG;AAAA,YACH,IAAI;AAAA,YACJ,IAAI;AAAA,UACN;AAAA,QACF,WAAW,YAAY,MAAM,GAAG;AAC9B,gBAAM,KAAK,uBAAuB,QAAQA,OAAM;AAAA,QAClD,OAAO;AACL,gBAAM,KAAK,sBAAsB,QAAQA,OAAM;AAAA,QACjD;AACA,eAAO,YAAYA,QAAO;AAC1B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,YAAY,WAAW;AACjD,YAAI,aAAa,KAAK,SAAS,SAAS,YAAY,WAAW,QAAQ,GACnE,aAAa,KAAK,SAAS,SAAS,YAAY,WAAW,QAAQ,GACnE,KAAK,WAAW,UAAU,CAAC,GAC3B,KAAK,WAAW,UAAU,CAAC;AAC/B,YAAI,WAAW,KAAK,oBAAoB,IAAI;AAAA,UAC1C,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,SAAS;AAAA,UACT;AAAA,UACA,UAAU,KAAK,SAAS,cAAc,WAAW,QAAQ;AAAA,QAC3D,CAAC,GACG,WAAW,KAAK,oBAAoB,IAAI;AAAA,UAC1C,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,SAAS;AAAA,UACT;AAAA,UACA,UAAU,KAAK,SAAS,cAAc,WAAW,QAAQ;AAAA,QAC3D,CAAC;AACD,mBAAW,UAAU,YAAY;AACjC,mBAAW,UAAU,QAAQ;AAAA,UAC3B,WAAW;AAAA,UACX,WAAW;AAAA,UACX,gBAAgB,WAAW,UAAU,CAAC;AAAA,UACtC,gBAAgB,WAAW,UAAU,CAAC;AAAA,UACtC,aAAa,WAAW,gBAAgB;AAAA,UACxC;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,UAAUA,SAAQ;AACpD,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAI,SAAS,SAAS;AACtB,YAAI,MAAM,KAAK,gBAAgB,IAAI,OAAO,EAAE;AAC5C,YAAI,OAAO,QAAQA,QAAO,aAAa,QAAQ,OAAO,cAAcA,QAAO,WAAW;AACpF,gBAAM,KAAK,sBAAsB,QAAQA,OAAM;AAC/C,eAAK,qBAAqB,QAAQ,KAAKA,QAAO,SAAS;AAAA,QACzD;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,IAAI;AACzC,eAAO,GAAG,UAAU,KAAK,qBAAqB,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC;AAAA,MACnE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,QAAQ,aAAa;AACxD,YAAI,YAAY,KAAK,gBAAgB,IAAI,OAAO,EAAE;AAClD,YAAI,aAAa,MAAM;AACrB,oBAAU,KAAK,YAAY,CAAC;AAC5B,oBAAU,KAAK,YAAY,CAAC;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,IAAI;AAClC,eAAO,GAAG,UAAU,CAAC,aAAa,GAAG,OAAO,KAAK,GAAG,QAAQ,UAAU,SAAS,IAAI;AAAA,MACrF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI;AAC7B,eAAO,GAAG,UAAU,YAAY,GAAG,OAAO,IAAI;AAAA,MAChD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcA,SAAQ;AACpC,eAAO,8BAA8BA,OAAM;AAAA,MAC7C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO,WAAW,WAAW,YAAY;AACvD,YAAI,SAAS;AACb,YAAI,qBAAqB,oBAAI,IAAI,GAC7B,mBAAmB,oBAAI,IAAI,GAC3B,kBAAkB,oBAAI,IAAI;AAC9B,YAAI,CAAC,KAAK,SAAS,iBAAiB;AAClC,cAAI,KAAK,KAAK,SAAS,mBAAmB,SAAS,KAAK,CAAC;AACzD,sBAAY,aAAaY,MAAK;AAC9B,cAAI,mBAAmB,CAAC,GACpByC,IACA;AACJ,mBAAShC,KAAI,GAAGA,KAAI,GAAG,QAAQA,MAAK;AAClC,yBAAa,GAAGA,EAAC;AACjB,gBAAI,WAAW,YAAY,OAAO;AAChC;AAAA,YACF;AACA,6BAAiB,IAAI,UAAU;AAC/B,YAAAgC,KAAI,WAAW;AACf,gBAAI,WAAW,YAAY,WAAW,GAAG;AACvC,kBAAI,aAAaA,EAAC,GAAG;AACnB,oBAAI,CAAC,KAAK,YAAY,IAAI,SAAS,GAAG;AACpC,uBAAK,YAAY,IAAI,WAAW;AAAA,oBAC9B,KAAK,CAAC;AAAA,oBACN,OAAO,CAAC;AAAA,oBACR,QAAQ,CAAC;AAAA,oBACT,MAAM,CAAC;AAAA,kBACT,CAAC;AAAA,gBACH;AACA,qBAAK,kBAAkB,KAAK,YAAY,IAAI,SAAS,GAAG,CAAC,KAAK,KAAK,GAAG,GAAG;AAAA,kBACvE,WAAW,CAAC,YAAY,UAAU;AAAA,kBAClC,aAAa;AAAA,gBACf,GAAG,OAAO,WAAW,GAAG,OAAO,eAAeA,EAAC,GAAG,oBAAoB,gBAAgB;AACtF,gCAAgB,IAAI,SAAS;AAAA,cAC/B;AAAA,YACF,OAAO;AACL,uBAAS,MAAM,GAAG,MAAM,WAAW,YAAY,QAAQ,OAAO;AAC5D,oBAAI,OAAO,WAAW,YAAY,GAAG,GACjC,WAAW,KAAK,UAChB,WAAW,KAAK,UAChB,mBAAmB,aAAa,KAAK,UAAU,CAAC,EAAE,OAAO,GACzD,mBAAmB,aAAa,KAAK,UAAU,CAAC,EAAE,OAAO;AAC7D,oBAAI,oBAAoB,kBAAkB;AACxC,sBAAI,MAAM,KAAK,UAAU,CAAC,EAAE,QAAQ,SAAS,CAAC,GAAG,KAAK,GAAG,GACrDtB,OAAM,KAAK,UAAU,CAAC,EAAE,QAAQ,SAAS,CAAC,GAAG,KAAK,GAAG,GACrD,OAAO,CAAC,UAAU,IAAI,UAAUA,GAAE,EAAE,KAAK,GAAG,GAC5CoD,KAAI,iBAAiB,IAAI,GACzB,OAAO,KAAK,aAAa,YAAY,IAAI;AAC7C,sBAAI,oBAAoB,CAAC,KAAK,YAAY,IAAI,QAAQ,GAAG;AACvD,yBAAK,YAAY,IAAI,UAAU;AAAA,sBAC7B,KAAK,CAAC;AAAA,sBACN,OAAO,CAAC;AAAA,sBACR,QAAQ,CAAC;AAAA,sBACT,MAAM,CAAC;AAAA,oBACT,CAAC;AAAA,kBACH;AACA,sBAAI,oBAAoB,CAAC,KAAK,YAAY,IAAI,QAAQ,GAAG;AACvD,yBAAK,YAAY,IAAI,UAAU;AAAA,sBAC7B,KAAK,CAAC;AAAA,sBACN,OAAO,CAAC;AAAA,sBACR,QAAQ,CAAC;AAAA,sBACT,MAAM,CAAC;AAAA,oBACT,CAAC;AAAA,kBACH;AACA,sBAAI,KAAK,KAAK,SAAS,SAAS,YAAY,QAAQ,GAChD,KAAK,KAAK,SAAS,SAAS,YAAY,QAAQ;AACpD,sBAAI,aAAa,aAAa,oBAAoB,mBAAmB;AACnE,yBAAK,kBAAkB,KAAK,YAAY,IAAI,QAAQ,GAAG,CAAC,KAAK,KAAK,GAAG,GAAG,MAAM,OAAO,UAAU,GAAG,OAAO,KAAK,oBAAoB,gBAAgB;AAClJ,yBAAK,kBAAkB,KAAK,YAAY,IAAI,QAAQ,GAAG,CAAC,KAAK,KAAK,GAAG,GAAG,MAAM,OAAO,UAAU,GAAG,OAAO,KAAK,oBAAoB,gBAAgB;AAAA,kBACpJ,OAAO;AACL,wBAAI,iBAAiB,KAAK,SAAS,cAAc,QAAQ;AACzD,wBAAI,iBAAiB,KAAK,SAAS,cAAc,QAAQ;AACzD,wBAAI,CAACA,IAAG;AACN,sBAAAA,KAAI,KAAK,sBAAsB,UAAU,UAAU,IAAI,IAAI,KAAK,UAAU,CAAC,EAAE,SAAS,KAAK,UAAU,CAAC,EAAE,SAAS,gBAAgB,cAAc;AAC/I,uCAAiB,IAAI,IAAIA;AAAA,oBAC3B;AACA,wBAAI,kBAAkB;AACpB,2BAAK,kBAAkB,KAAK,YAAY,IAAI,QAAQ,GAAGA,GAAE,OAAO,GAAG,MAAM,OAAO,UAAU,GAAG,OAAOA,GAAE,EAAE,CAAC,GAAG,oBAAoB,gBAAgB;AAAA,oBAClJ;AACA,wBAAI,kBAAkB;AACpB,2BAAK,kBAAkB,KAAK,YAAY,IAAI,QAAQ,GAAGA,GAAE,QAAQ,IAAI,MAAM,MAAM,UAAU,GAAG,MAAMA,GAAE,EAAE,CAAC,GAAG,oBAAoB,gBAAgB;AAAA,oBAClJ;AAAA,kBACF;AACA,sBAAI,kBAAkB;AACpB,oCAAgB,IAAI,QAAQ;AAAA,kBAC9B;AACA,sBAAI,kBAAkB;AACpB,oCAAgB,IAAI,QAAQ;AAAA,kBAC9B;AACA,qCAAmB,IAAI,IAAI;AAC3B,sBAAI,oBAAoB,SAAS,KAAK,oBAAoB,SAAS,GAAG;AACpE,qCAAiB,IAAI,KAAK,UAAU,IAAI,CAAC;AAAA,kBAC3C;AAAA,gBACF,OAAO;AACL,sBAAI,gBAAgB,WAAW,YAAY,GAAG,EAAE,UAAU,KAAK,aAAa,YAAY,IAAI,CAAC,GACzF,cAAc,cAAc;AAChC,sBAAI,UAAU,WAAW,GAAG;AAC1B,yBAAK,SAAS,eAAe,eAAe;AAAA,sBAC1C,uBAAuB;AAAA,sBACvB;AAAA,oBACF,CAAC;AACD,uCAAmB,IAAI,WAAW,YAAY,GAAG,CAAC;AAClD,6BAASK,KAAI,GAAGA,KAAI,cAAc,YAAY,QAAQA,MAAK;AACzD,0BAAI,cAAc,YAAYA,EAAC,MAAM,WAAW,YAAY,GAAG,GAAG;AAChE,2CAAmB,IAAI,cAAc,YAAYA,EAAC,CAAC;AAAA,sBACrD;AAAA,oBACF;AAAA,kBACF,OAAO;AACL,uCAAmB,IAAI,WAAW,YAAY,GAAG,CAAC;AAAA,kBACpD;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,0BAAgB,QAAQ,SAAU,QAAQ;AACxC,mBAAO,cAAc,QAAQ,OAAO,YAAY,IAAI,MAAM,CAAC;AAAA,UAC7D,CAAC;AACD,2BAAiB,QAAQ,SAAUC,KAAI;AACrC,gBAAI,KAAK,OAAO,SAAS,SAAS,YAAYA,IAAG,SAAS;AAC1D,mBAAO,SAAS,eAAeA,KAAI;AAAA,cACjC;AAAA,cACA,QAAQ;AAAA,YACV,CAAC;AAAA,UACH,CAAC;AACD,6BAAmB,QAAQ,SAAU9D,IAAG;AACtC,mBAAO,SAAS,iBAAiBA,IAAG;AAAA,cAClC;AAAA,YACF,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AACA,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,aAAK,gBAAgB,MAAM;AAC3B,aAAK,YAAY,MAAM;AAAA,MACzB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,UAAU,QAAQ;AAC1C,YAAI,UAAU,MAAM;AAClB,mBAAS,UAAU;AAAA,QACrB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,MAAM,SAAS;AAClD,aAAK,UAAU,CAAC,EAAE,UAAU,QAAQ,CAAC;AACrC,aAAK,UAAU,CAAC,EAAE,UAAU,QAAQ,CAAC;AAAA,MACvC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB,UAAU,UAAU,IAAI,IAAI,cAAc,cAAc,gBAAgB,gBAAgB;AAC5H,YAAI,SAAS;AACb,YAAI,cAAc;AAAA,UAChB,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,UAAU;AAAA,UACV,UAAU;AAAA,QACZ;AACA,YAAI,aAAa,UAAU;AACzB,iBAAO;AAAA,YACL,aAAa,YAAY;AAAA,YACzB,GAAG,CAAC,KAAK,GAAG;AAAA,UACd;AAAA,QACF;AACA,YAAI2D,SAAQ,KAAK,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,GACnDI,UAAS,KAAK,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC;AACxD,YAAI,aAAa,CAAC,GACd,YAAY,CAAC;AACjB,SAAC,SAAU,OAAO,KAAK;AACrB,mBAASrE,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,gBAAI;AACJ,sBAAU,MAAMA,EAAC,CAAC,KAAK,qBAAqB,CAAC,GAAGnB,iBAAgB,oBAAoB,MAAM;AAAA,cACxF,GAAG,IAAImB,EAAC,EAAE,CAAC,EAAE;AAAA,cACb,GAAG,IAAIA,EAAC,EAAE,CAAC,EAAE,EAAE;AAAA,YACjB,CAAC,GAAGnB,iBAAgB,oBAAoB,OAAO;AAAA,cAC7C,GAAG,IAAImB,EAAC,EAAE,CAAC,EAAE,IAAI,IAAIA,EAAC,EAAE,CAAC,EAAE;AAAA,cAC3B,GAAG,IAAIA,EAAC,EAAE,CAAC,EAAE,EAAE;AAAA,YACjB,CAAC,GAAGnB,iBAAgB,oBAAoB,KAAK;AAAA,cAC3C,GAAG,IAAImB,EAAC,EAAE,CAAC,EAAE,EAAE;AAAA,cACf,GAAG,IAAIA,EAAC,EAAE,CAAC,EAAE;AAAA,YACf,CAAC,GAAGnB,iBAAgB,oBAAoB,QAAQ;AAAA,cAC9C,GAAG,IAAImB,EAAC,EAAE,CAAC,EAAE,EAAE;AAAA,cACf,GAAG,IAAIA,EAAC,EAAE,CAAC,EAAE,IAAI,IAAIA,EAAC,EAAE,CAAC,EAAE;AAAA,YAC7B,CAAC,GAAG;AACJ,gBAAI,IAAIA,EAAC,EAAE,CAAC,KAAK,QAAQ,IAAIA,EAAC,EAAE,CAAC,EAAE,SAAS,GAAG;AAC7C,uBAAS,QAAQ,UAAU,MAAMA,EAAC,CAAC,GAAG;AACpC,0BAAU,MAAMA,EAAC,CAAC,EAAE,IAAI,IAAI,OAAO,SAAS,kBAAkB,UAAU,MAAMA,EAAC,CAAC,EAAE,IAAI,GAAG,IAAIA,EAAC,EAAE,CAAC,CAAC;AAAA,cACpG;AAAA,YACF;AAAA,UACF;AAAA,QACF,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,CAAC,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,CAAC,CAAC;AACjE,YAAI,QAAQ,CAAC,KAAK,MAAM,OAAO,MAAM;AACrC,iBAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM;AACxC,mBAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM;AACxC,uBAAW,KAAK;AAAA,cACd,QAAQ,MAAM,EAAE;AAAA,cAChB,QAAQ,MAAM,EAAE;AAAA,cAChB,MAAM,WAAW,UAAU,OAAO,MAAM,EAAE,CAAC,GAAG,UAAU,OAAO,MAAM,EAAE,CAAC,CAAC;AAAA,YAC3E,CAAC;AAAA,UACH;AAAA,QACF;AACA,mBAAW,KAAK,SAAUgC,IAAGwB,IAAG;AAC9B,cAAIxB,GAAE,OAAOwB,GAAE,MAAM;AACnB,mBAAO;AAAA,UACT,WAAWA,GAAE,OAAOxB,GAAE,MAAM;AAC1B,mBAAO;AAAA,UACT,OAAO;AACL,gBAAI;AACJ,gBAAI,eAAe,eAAe,CAAC,GAAGnD,iBAAgB,cAAc,MAAM,CAAC,GAAGA,iBAAgB,cAAc,KAAK,CAAC,GAAGA,iBAAgB,cAAc,OAAO,CAAC,GAAGA,iBAAgB,cAAc,QAAQ,CAAC,GAAG,eACpM,MAAM,YAAYmD,GAAE,MAAM,GAC1B,MAAM,YAAYwB,GAAE,MAAM,GAC1B,MAAM,YAAYxB,GAAE,MAAM,GAC1B,MAAM,YAAYwB,GAAE,MAAM;AAC9B,mBAAO,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AAAA,UAC3E;AAAA,QACF,CAAC;AACD,YAAI,aAAa,WAAW,CAAC,EAAE,QAC3B,aAAa,WAAW,CAAC,EAAE;AAC/B,iBAASxD,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AAC1C,cAAI,aAAa,YAAY,KAAK,aAAa,QAAQ;AACrD,yBAAa,aAAa;AAAA,UAC5B,WAAW,CAAC,aAAa,gBAAgB,gBAAgB,cAAc,WAAWA,EAAC,EAAE,MAAM,GAAG;AAC5F,yBAAa,WAAWA,EAAC,EAAE;AAAA,UAC7B,OAAO;AACL,yBAAa;AAAA,UACf;AACA,cAAI,aAAa,gBAAgB,aAAa,QAAQ;AACpD,yBAAa,aAAa;AAAA,UAC5B,WAAW,CAAC,aAAa,gBAAgB,gBAAgB,cAAc,WAAWA,EAAC,EAAE,MAAM,GAAG;AAC5F,yBAAa,WAAWA,EAAC,EAAE;AAAA,UAC7B,OAAO;AACL,yBAAa;AAAA,UACf;AACA,cAAI,cAAc,QAAQ,cAAc,MAAM;AAC5C;AAAA,UACF;AAAA,QACF;AACA,YAAI,aAAa,cAAc;AAC7B,eAAK,eAAe,cAAc,UAAU;AAAA,QAC9C;AACA,YAAI,aAAa,cAAc;AAC7B,eAAK,eAAe,cAAc,UAAU;AAAA,QAC9C;AACA,eAAO;AAAA,UACL,GAAG,CAAC,YAAY,UAAU;AAAA,UAC1B,OAAOiE;AAAA,UACP,QAAQI;AAAA,QACV;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAerC,IAAG,MAAM,cAAc;AACpD,QAAAA,GAAE,cAAc;AAChB,YAAI,gBAAgBA,GAAE,cAAc,MAAM;AACxC,UAAAA,GAAE,aAAaA,GAAE;AAAA,QACnB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAKA,IAAG;AACtB,QAAAA,GAAE,SAAS;AACX,YAAI,aAAaA,EAAC,GAAG;AACnB,UAAAA,GAAE,aAAaA,GAAE;AAAA,QACnB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAOA,IAAG;AACxB,QAAAA,GAAE,SAAS;AACX,YAAI,aAAaA,EAAC,GAAG;AACnB,UAAAA,GAAE,aAAa;AAAA,QACjB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqBA,IAAG,QAAQ;AAC9C,YAAI,MAAM,iBAAiBA,GAAE,WAAW,SAAU,KAAK;AACrD,iBAAO,IAAI,MAAM,OAAO,KAAK,IAAI,MAAM,OAAO;AAAA,QAChD,CAAC;AACD,YAAI,QAAQ,IAAI;AACd,UAAAA,GAAE,kBAAkB;AACpB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBA,IAAG;AACjC,YAAIA,GAAE,eAAe,MAAM;AACzB,UAAAA,GAAE,aAAaA,GAAE,gBAAgB,QAAQA,GAAE,gBAAgB,QAAQ,eAAe;AAAA,QACpF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBA,IAAG;AACnC,QAAAA,GAAE,aAAa;AAAA,MACjB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,IAAIsC,KAAI;AACnC,YAAI,CAAC,MAAM,CAACA,KAAI;AACd,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,GAAG,UAAU,GAAG,eAAe,GACpCC,MAAKD,IAAG,UAAUA,IAAG,eAAe;AACxC,eAAO,GAAG,MAAMC,IAAG,KAAK,GAAG,MAAMA,IAAG,KAAK,GAAG,SAASA,IAAG,QAAQ,GAAG,SAASA,IAAG,QAAQ,GAAG,OAAOA,IAAG,MAAM,GAAG,OAAOA,IAAG;AAAA,MACzH;AAAA,IACF,CAAC,CAAC;AACF,WAAOd;AAAA,EACT,EAAE;AAEF,MAAI,eAAe,CAAC;AACpB,MAAI,aAAa;AAAA,IACf,KAAK,SAAShE,KAAI,YAAYwC,OAAMtD,SAAQ;AAC1C,UAAI2B,KAAI,aAAa2B,KAAI;AACzB,UAAI,CAAC3B,IAAG;AACN,cAAM;AAAA,UACJ,SAAS,sCAAsC2B,QAAO;AAAA,QACxD;AAAA,MACF,OAAO;AACL,eAAO,IAAI3B,GAAE,YAAY3B,OAAM;AAAA,MACjC;AAAA,IACF;AAAA,IACA,UAAU,SAAS6F,UAASvC,OAAM,MAAM;AACtC,mBAAaA,KAAI,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,MAAI,kBAAkB,SAAU,kBAAkB;AAChD,IAAAzD,WAAUiG,kBAAiB,gBAAgB;AAC3C,QAAI,SAAS/F,cAAa+F,gBAAe;AACzC,aAASA,iBAAgB9F,SAAQ;AAC/B,UAAI;AACJ,MAAAC,iBAAgB,MAAM6F,gBAAe;AACrC,cAAQ,OAAO,KAAK,MAAM9F,OAAM;AAChC,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,KAAK,MAAM;AAC1D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,MAAM,MAAM;AAC3D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ2F,iBAAgB,WAAW;AAClF,YAAM,gBAAgB;AAAA,QACpB,IAAI9F,QAAO;AAAA,QACX,IAAIA,QAAO;AAAA,QACX,IAAIA,QAAO;AAAA,QACX,IAAIA,QAAO;AAAA,MACb,CAAC;AACD,aAAO;AAAA,IACT;AACA,IAAAa,cAAaiF,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,gBAAgB;AACtC,gBAAQ,iBAAiB,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,MAAM,OAAO,KAAK,KAAK,MAAM,KAAK;AAAA,MACpG;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU;AACxB,aAAK,SAAS,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC;AACvF,aAAK,IAAI,SAAS;AAAA,UAChB,GAAG,KAAK;AAAA,UACR,GAAG,KAAK;AAAA,QACV,GAAG;AAAA,UACD,GAAG,KAAK;AAAA,UACR,GAAG,KAAK;AAAA,QACV,CAAC;AACD,aAAK,KAAK,KAAK,KAAK;AACpB,aAAK,UAAU;AAAA,UACb,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;AAAA,UAC/B,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;AAAA,UAC/B,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;AAAA,UAC/B,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;AAAA,QACjC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,QAAQ;AACtC,aAAK,KAAK,OAAO;AACjB,aAAK,KAAK,OAAO;AACjB,aAAK,KAAK,OAAO;AACjB,aAAK,KAAK,OAAO;AACjB,aAAK,QAAQ;AAAA,MACf;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYC,WAAU,UAAU;AAC9C,YAAIA,cAAa,KAAK,CAAC,UAAU;AAC/B,iBAAO;AAAA,YACL,GAAG,KAAK;AAAA,YACR,GAAG,KAAK;AAAA,UACV;AAAA,QACF,WAAWA,cAAa,KAAK,CAAC,UAAU;AACtC,iBAAO;AAAA,YACL,GAAG,KAAK;AAAA,YACR,GAAG,KAAK;AAAA,UACV;AAAA,QACF,OAAO;AACL,cAAIzE,KAAI,WAAWyE,YAAW,IAAIA,YAAW,KAAK,SAASA,YAAWA,YAAW,KAAK;AACtF,iBAAO,YAAY;AAAA,YACjB,GAAG,KAAK;AAAA,YACR,GAAG,KAAK;AAAA,UACV,GAAG;AAAA,YACD,GAAG,KAAK;AAAA,YACR,GAAG,KAAK;AAAA,UACV,GAAGzE,EAAC;AAAA,QACN;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS0E,iBAAgBD,WAAU,UAAU;AAClD,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmBA,WAAU,UAAU,UAAU;AAC/D,YAAI3E,KAAI,KAAK,YAAY2E,WAAU,QAAQ,GACvC,eAAe,YAAY,IAAI;AAAA,UACjC,GAAG,KAAK;AAAA,UACR,GAAG,KAAK;AAAA,QACV,IAAI;AAAA,UACF,GAAG,KAAK;AAAA,UACR,GAAG,KAAK;AAAA,QACV;AACA,YAAI,YAAY,KAAK,KAAK,IAAI,QAAQ,IAAI,GAAG;AAC3C,sBAAY;AAAA,QACd;AACA,eAAO,YAAY3E,IAAG,cAAc,QAAQ;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS6E,QAAO5C,IAAGwB,IAAGlD,IAAG;AAC9B,eAAOA,MAAK,KAAK,IAAI0B,IAAGwB,EAAC,KAAKlD,MAAK,KAAK,IAAI0B,IAAGwB,EAAC;AAAA,MAClD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASqB,SAAQ7C,IAAGwB,IAAGlD,IAAG;AAC/B,eAAO,KAAK,IAAIA,KAAI0B,EAAC,IAAI,KAAK,IAAI1B,KAAIkD,EAAC,IAAIxB,KAAIwB;AAAA,MACjD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuBxE,IAAGC,IAAG;AAC3C,YAAI,MAAM;AAAA,UACR,GAAG;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,UACH,IAAI,KAAK;AAAA,UACT,IAAI,KAAK;AAAA,UACT,IAAI,KAAK;AAAA,UACT,IAAI,KAAK;AAAA,QACX;AACA,YAAI,KAAK,MAAM,GAAG;AAChB,cAAI,IAAI,KAAK;AACb,cAAI,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK,IAAID,EAAC,IAAIA,KAAI,KAAK,QAAQ,KAAK,IAAI,KAAK,IAAIA,EAAC;AAAA,QACjF,WAAW,KAAK,MAAM,YAAY,KAAK,MAAM,WAAW;AACtD,cAAI,IAAI,KAAK;AACb,cAAI,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK,IAAIC,EAAC,IAAIA,KAAI,KAAK,QAAQ,KAAK,IAAI,KAAK,IAAIA,EAAC;AAAA,QACjF,OAAO;AACL,cAAIuE,KAAI,KAAK,KAAK,KAAK,IAAI,KAAK,IAC5BsB,MAAK7F,KAAI,KAAK,KAAKD,IACvB,OAAO8F,MAAKtB,OAAM,KAAK,IAAI,KAAK,KAC5B,MAAM,KAAK,IAAI,MAAMA;AACzB,cAAI,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,MAAM,KAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,GAAG;AACrF,cAAI,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,MAAM,KAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,QACvF;AACA,YAAI,oBAAoB,WAAW;AAAA,UACjC,GAAG,IAAI;AAAA,UACP,GAAG,IAAI;AAAA,QACT,GAAG;AAAA,UACD,GAAG,KAAK;AAAA,UACR,GAAG,KAAK;AAAA,QACV,CAAC;AACD,YAAI,IAAI,WAAW;AAAA,UACjB,GAAGxE;AAAA,UACH,GAAGC;AAAA,QACL,GAAG,GAAG;AACN,YAAI,IAAI,oBAAoB;AAC5B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB8F,IAAG,IAAInC,KAAI;AAC3C,eAAOA,MAAK,KAAK,MAAMmC,MAAKA,MAAKnC,MAAK,MAAMmC,MAAKA,MAAKnC;AAAA,MACxD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,KAAK,KAAK,KAAK,KAAK;AACnD,YAAIoC,MAAK,KAAK,IAAI,SAAS;AAAA,UACzB,GAAG;AAAA,UACH,GAAG;AAAA,QACL,GAAG;AAAA,UACD,GAAG;AAAA,UACH,GAAG;AAAA,QACL,CAAC,CAAC,GACE,KAAK,KAAK,IAAI,KAAK,CAAC,GACpBxB,KAAI,OAAO,WAAW,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IACpD,MAAM,CAAC,GACPsB,MAAKE,QAAO,WAAW,MAAM,MAAMA,MAAK;AAC5C,YAAIA,QAAO,IAAI;AACb,cAAIA,QAAO,YAAY,OAAO,GAAG;AAC/B,gBAAI,KAAK,kBAAkB,KAAK,KAAK,IAAI,KAAK,EAAE,KAAK,KAAK,kBAAkB,KAAK,IAAI,KAAK,GAAG,GAAG;AAC9F,kBAAI,KAAK;AAAA,gBACP,GAAG;AAAA,gBACH,GAAG,KAAK;AAAA,cACV,CAAC;AAAA,YACH;AAAA,UACF,WAAWA,QAAO,KAAK,OAAO,UAAU;AACtC,gBAAI,KAAK,kBAAkB,KAAK,KAAK,IAAI,KAAK,EAAE,KAAK,KAAK,kBAAkB,KAAK,IAAI,KAAK,GAAG,GAAG;AAC9F,kBAAI,KAAK;AAAA,gBACP,GAAG,KAAK;AAAA,gBACR,GAAG;AAAA,cACL,CAAC;AAAA,YACH;AAAA,UACF,OAAO;AACL,gBAAIC,IAAG;AACP,gBAAID,QAAO,UAAU;AACnB,cAAAC,KAAI;AACJ,kBAAI,KAAK,kBAAkBA,IAAG,KAAK,IAAI,KAAK,EAAE,GAAG;AAC/C,oBAAI,KAAK,MAAMzB;AACf,oBAAI,KAAK,kBAAkB,GAAG,KAAK,GAAG,GAAG;AACvC,sBAAI,KAAK;AAAA,oBACP,GAAGyB;AAAA,oBACH,GAAG;AAAA,kBACL,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF,WAAWD,QAAO,GAAG;AACnB,kBAAI;AACJ,kBAAI,KAAK,kBAAkB,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG;AAC/C,gBAAAC,MAAK,MAAMzB,MAAK;AAChB,oBAAI,KAAK,kBAAkByB,IAAG,KAAK,GAAG,GAAG;AACvC,sBAAI,KAAK;AAAA,oBACP,GAAGA;AAAA,oBACH,GAAG;AAAA,kBACL,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF,OAAO;AACL,cAAAA,MAAKH,MAAKtB,OAAM,KAAKwB;AACrB,kBAAI,KAAKC,KAAIzB;AACb,kBAAI,KAAK,kBAAkByB,IAAG,KAAK,IAAI,KAAK,EAAE,KAAK,KAAK,kBAAkB,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG;AAC9F,oBAAI,KAAK;AAAA,kBACP,GAAGA;AAAA,kBACH,GAAG;AAAA,gBACL,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBjG,IAAGC,IAAGC,IAAGC,IAAG;AAC1C,YAAI6C,KAAI,CAAC;AACT,QAAAA,GAAE,KAAK,MAAMA,IAAG,KAAK,iBAAiBhD,IAAGC,IAAGD,KAAIE,IAAGD,EAAC,CAAC;AACrD,QAAA+C,GAAE,KAAK,MAAMA,IAAG,KAAK,iBAAiBhD,KAAIE,IAAGD,IAAGD,KAAIE,IAAGD,KAAIE,EAAC,CAAC;AAC7D,QAAA6C,GAAE,KAAK,MAAMA,IAAG,KAAK,iBAAiBhD,KAAIE,IAAGD,KAAIE,IAAGH,IAAGC,KAAIE,EAAC,CAAC;AAC7D,QAAA6C,GAAE,KAAK,MAAMA,IAAG,KAAK,iBAAiBhD,IAAGC,KAAIE,IAAGH,IAAGC,EAAC,CAAC;AACrD,eAAO+C;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOyC;AAAA,EACT,EAAE,eAAe;AACjB,EAAA5F,iBAAgB,iBAAiB,eAAe,UAAU;AAE1D,MAAI,oBAAoB,SAAU,oBAAoB;AACpD,IAAAL,WAAU0G,oBAAmB,kBAAkB;AAC/C,QAAI,SAASxG,cAAawG,kBAAiB;AAC3C,aAASA,qBAAoB;AAC3B,UAAI;AACJ,MAAAtG,iBAAgB,MAAMsG,kBAAiB;AACvC,eAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,aAAK,IAAI,IAAI,UAAU,IAAI;AAAA,MAC7B;AACA,cAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,MAAArG,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQoG,mBAAkB,IAAI;AAC7E,aAAO;AAAA,IACT;AACA,IAAA1F,cAAa0F,oBAAmB,CAAC;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,eAAO,CAAC,GAAG,CAAC;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,WAAWnF,IAAG;AACrC,aAAK,YAAY,iBAAiB;AAAA,UAChC,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,QAChB,CAAC;AACD,aAAK,YAAY,iBAAiB;AAAA,UAChC,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,QAChB,CAAC;AACD,aAAK,YAAY,iBAAiB;AAAA,UAChC,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,UACd,IAAI,UAAU;AAAA,QAChB,CAAC;AACD,aAAK,WAAW;AAAA,UACd,QAAQA,GAAE;AAAA,UACV,QAAQA,GAAE;AAAA,QACZ;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBI,IAAGmD,KAAIC,KAAI;AAC3C,eAAO;AAAA,UACL,QAAQ,KAAK,yBAAyBpD,GAAE,QAAQmD,KAAIC,GAAE;AAAA,UACtD,QAAQ,KAAK,yBAAyBpD,GAAE,QAAQmD,KAAIC,GAAE;AAAA,QACxD;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAO2B;AAAA,EACT,EAAE,iBAAiB;AACnB,EAAArG,iBAAgB,mBAAmB,QAAQ,UAAU;AAErD,WAAS,YAAY,IAAIsG,KAAI;AAC3B,QAAI,KAAK,GAAG,MAAM,MAAM,IAAI,GACxBC,MAAKD,IAAG,MAAM,MAAM,IAAI;AAC5B,aAASnF,KAAI,GAAGA,KAAI,GAAG,QAAQA,MAAK;AAClC,eAASuB,KAAI,GAAGA,KAAI6D,IAAG,QAAQ7D,MAAK;AAClC,YAAI6D,IAAG7D,EAAC,MAAM,GAAGvB,EAAC,GAAG;AACnB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,YAAY,UAAU,OAAO,aAAa;AACjD,QAAIyC,KAAI,CAAC;AACT,QAAI,aAAa,SAAS4C,YAAWrF,IAAG;AACtC,UAAI,SAASA,EAAC,GAAG;AACf,eAAOA;AAAA,MACT,OAAO;AACL,eAAO,SAAS,MAAMA,EAAC;AAAA,MACzB;AAAA,IACF;AACA,QAAI,OAAO;AACT,UAAI,OAAO,UAAU,UAAU;AAC7B,YAAI,UAAU,KAAK;AACjB,iBAAO;AAAA,QACT;AACA,QAAAyC,GAAE,KAAK,KAAK;AAAA,MACd,OAAO;AACL,YAAI,aAAa;AACf,UAAAA,KAAI;AAAA,QACN,OAAO;AACL,cAAI,MAAM,UAAU,MAAM;AACxB,gBAAI;AACJ,aAAC,KAAKA,IAAG,KAAK,MAAM,IAAI,mBAAmB,mBAAmB,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC;AAAA,UACvF,OAAO;AACL,YAAAA,GAAE,KAAK,WAAW,KAAK,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAOA;AAAA,EACT;AACA,WAAS,mBAAmB,gBAAgB,IAAI;AAC9C,QAAI,kBAAkB,MAAM;AAC1B,qBAAe,UAAU,KAAK,EAAE;AAAA,IAClC;AAAA,EACF;AACA,WAAS,sBAAsB,gBAAgB,UAAU;AACvD,QAAI,kBAAkB,MAAM;AAC1B,yBAAmB,eAAe,WAAW,SAAU,IAAI;AACzD,eAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AACA,WAAS,qBAAqB,YAAY,UAAU,UAAU;AAC5D,QAAI,YAAY,MAAM;AACpB,eAAS,YAAY,KAAK,UAAU;AACpC,UAAI,SAAS,YAAY,WAAW,GAAG;AACrC,mBAAW,SAAS,SAAS,WAAW,QAAQ,WAAW,SAAS,cAAc;AAAA,MACpF;AAAA,IACF;AACA,QAAI,YAAY,MAAM;AACpB,UAAI,YAAY,QAAQ,WAAW,aAAa,WAAW,UAAU;AACnE,iBAAS,YAAY,KAAK,UAAU;AACpC,YAAI,SAAS,YAAY,WAAW,GAAG;AACrC,qBAAW,SAAS,SAAS,WAAW,QAAQ,WAAW,SAAS,cAAc;AAAA,QACpF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS,wBAAwB,YAAY,UAAU,UAAU;AAC/D,QAAI,YAAY,MAAM;AACpB,UAAI,cAAc,SAAS,YAAY;AACvC,yBAAmB,SAAS,aAAa,SAAU,IAAI;AACrD,eAAO,WAAW,OAAO,GAAG;AAAA,MAC9B,CAAC;AACD,UAAI,cAAc,KAAK,SAAS,YAAY,WAAW,GAAG;AACxD,mBAAW,SAAS,YAAY,WAAW,QAAQ,WAAW,SAAS,cAAc;AAAA,MACvF;AAAA,IACF;AACA,QAAI,YAAY,MAAM;AACpB,UAAI,cAAc,SAAS,YAAY;AACvC,UAAI,YAAY,QAAQ,WAAW,aAAa,WAAW,UAAU;AACnE,2BAAmB,SAAS,aAAa,SAAU,IAAI;AACrD,iBAAO,WAAW,OAAO,GAAG;AAAA,QAC9B,CAAC;AAAA,MACH;AACA,UAAI,cAAc,KAAK,SAAS,YAAY,WAAW,GAAG;AACxD,mBAAW,SAAS,YAAY,WAAW,QAAQ,WAAW,SAAS,cAAc;AAAA,MACvF;AAAA,IACF;AAAA,EACF;AACA,MAAI,kBAAkB,SAAU,iBAAiB;AAC/C,IAAAjE,WAAU8G,kBAAiB,eAAe;AAC1C,QAAI,SAAS5G,cAAa4G,gBAAe;AACzC,aAASA,iBAAgB,gBAAgBC,WAAU;AACjD,UAAI;AACJ,MAAA3G,iBAAgB,MAAM0G,gBAAe;AACrC,cAAQ,OAAO,KAAK,IAAI;AACxB,YAAM,iBAAiB;AACvB,MAAAzG,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,CAAC,CAAC;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,4BAA4B,KAAK;AAChF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,KAAK;AACzE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,KAAK;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,KAAK;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,IAAI;AACnE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,eAAe;AAChF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,yBAAyB,uBAAuB;AAC/F,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,eAAe;AAChF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,cAAc;AAC9E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,0BAA0B,wBAAwB;AACjG,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,mBAAmB;AACvF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,yBAAyB,uBAAuB;AAC/F,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,4BAA4B,2BAA2B;AACtG,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,8BAA8B,6BAA6B;AAC1G,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,6BAA6B,4BAA4B;AACxG,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,aAAa;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,CAAC,CAAC;AAChE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,CAAC,CAAC;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,oBAAI,IAAI,CAAC;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,CAAC,CAAC;AACpE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,CAAC,CAAC;AACpE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,CAAC;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,IAAI,SAASA,wBAAuB,KAAK,CAAC,CAAC;AACtG,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,oBAAI,IAAI,CAAC;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,oBAAI,IAAI,CAAC;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,CAAC,CAAC;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,CAAC;AACzD,YAAM,WAAW;AAAA,QACf,QAAQ,gBAAgB;AAAA,QACxB,SAAS,CAAC,MAAM,IAAI;AAAA,QACpB,uBAAuB;AAAA,QACvB,oBAAoB,CAAC;AAAA,QACrB,WAAW,kBAAkB;AAAA,QAC7B,WAAW;AAAA,QACX,UAAU,YAAY;AAAA,QACtB,kBAAkB,CAAC;AAAA,QACnB,WAAW,CAAC,MAAM,IAAI;AAAA,QACtB,eAAe;AAAA,UACb,MAAM;AAAA,QACR;AAAA,QACA,gBAAgB,CAAC,MAAM,IAAI;AAAA,QAC3B,oBAAoB;AAAA,QACpB,qBAAqB,CAAC,MAAM,IAAI;AAAA,QAChC,iBAAiB;AAAA,QACjB,WAAW,CAAC;AAAA,QACZ,gBAAgB;AAAA,QAChB,YAAY;AAAA,UACV,aAAa;AAAA,UACb,QAAQ;AAAA,QACV;AAAA,QACA,qBAAqB;AAAA,QACrB,OAAO;AAAA,QACP,mBAAmB;AAAA,MACrB;AACA,UAAIyG,WAAU;AACZ,QAAAxB,QAAO,MAAM,UAAUwB,SAAQ;AAAA,MACjC;AACA,MAAAxB,QAAO,MAAM,kBAAkB,MAAM,QAAQ;AAC7C,UAAI,MAAM,iBAAiB,uBAAuB,KAAK,MAAM;AAC3D,cAAM,iBAAiB,uBAAuB,EAAE,cAAc,MAAM,iBAAiB,uBAAuB,EAAE,eAAe;AAAA,MAC/H;AACA,YAAM,gBAAgB,MAAM,SAAS,iBAAiB;AACtD,YAAM,oBAAoB,MAAM,iBAAiB,+BAA+B,MAAM;AACtF,YAAM,SAAS,IAAI,kBAAkBjF,wBAAuB,KAAK,CAAC;AAClE,YAAM,eAAe,IAAI,aAAaA,wBAAuB,KAAK,CAAC;AACnE,YAAM,aAAa,MAAM,iBAAiB,SAAS;AACnD,aAAO;AAAA,IACT;AACA,IAAAU,cAAa8F,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,KAAK,SAAS7F,OAAM;AAClB,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,KAAK,SAASA,OAAM;AAClB,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB;AACrC,eAAO,KAAK,iBAAiB,KAAK,SAAS,OAAO;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,SAAS;AACxC,eAAO,WAAW,QAAQ,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,KAAK;AAAA,MAChE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe;AAC7B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ+F,IAAG,mBAAmB;AAC5C,aAAK,QAAQA;AACb,aAAK,KAAK,YAAY,KAAK,KAAK;AAChC,YAAI,mBAAmB;AACrB,eAAK,kBAAkB;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW;AACzB,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,eAAe,MAAM;AAClD,YAAIvF,KAAI,KAAK,YAAY,aAAa,GAClCwC,KAAI;AACR,YAAIxC,MAAKA,GAAE,SAAS,GAAG;AACrB,cAAI,SAAS,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AACpD,cAAI;AACF,qBAASD,KAAI,GAAGuB,KAAItB,GAAE,QAAQD,KAAIuB,IAAGvB,MAAK;AACxC,cAAAyC,KAAIA,MAAKxC,GAAED,EAAC,EAAE,MAAMC,GAAED,EAAC,GAAG,MAAM;AAAA,YAClC;AAAA,UACF,SAASF,IAAP;AACA,gBAAI,6BAA6B,gBAAgB,MAAMA,EAAC;AAAA,UAC1D;AAAA,QACF;AACA,eAAO2C;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,MAAM,SAASlD,OAAM;AACnC,YAAI,WAAW,MAAM;AACnB,iBAAO;AAAA,QACT;AACA,YAAIkB,MAAK,KAAK,aAAa,SAAS,iBAAiB;AACrD,YAAI,CAACA,OAAMA,QAAO,aAAa;AAC7B,cAAI,UAAU,WAAW,KAAK,UAAU,CAAC,MAAM,QAAW;AACxD,YAAAA,MAAKlB;AAAA,UACP,WAAW,UAAU,WAAW,KAAK,UAAU,WAAW,KAAK,CAAC,UAAU,CAAC,GAAG;AAC5E,YAAAkB,MAAK,aAAa,KAAK,iBAAiB,MAAM,KAAK,SAAS;AAAA,UAC9D;AACA,eAAK,aAAa,SAAS,mBAAmBA,GAAE;AAAA,QAClD;AACA,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAenB,UAAS,MAAM;AAC5C,YAAI,CAACA,UAAS;AACZ,UAAAA,WAAU,CAAC;AAAA,QACb,WAAWA,SAAQ,gBAAgB,QAAQ;AACzC,UAAAA,WAAU;AAAA,YACR,SAASA;AAAA,UACX;AAAA,QACF;AACA,YAAI,QAAQA,SAAQ,SAAS,KAAK,cAC9B,SAAS,YAAY,MAAM,OAAO,IAAI,GACtC,UAAU,YAAY,MAAMA,SAAQ,MAAM,GAC1C,UAAU,YAAY,MAAMA,SAAQ,MAAM,GAC1C,UAAU,CAAC,QAAQ,OAAO,SAAS,IAAI,CAAC,IAAI,CAAC,GAC7C,UAAU,SAASmG,SAAQC,QAAO,KAAK;AACzC,cAAI,CAAC,QAAQ,OAAO,SAAS,GAAG;AAC9B,gBAAI,KAAK,QAAQA,MAAK;AACtB,gBAAI,MAAM,MAAM;AACd,mBAAK,QAAQA,MAAK,IAAI,CAAC;AAAA,YACzB;AACA,eAAG,KAAK,GAAG;AAAA,UACb,OAAO;AACL,oBAAQ,KAAK,GAAG;AAAA,UAClB;AAAA,QACF;AACA,iBAASnE,KAAI,GAAG,KAAK,KAAK,YAAY,QAAQA,KAAI,IAAIA,MAAK;AACzD,cAAI,MAAM,KAAK,YAAYA,EAAC,GACxB,WAAW,IAAI,WAAW,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,WAAW,YAAY,IAAI,UACrF,WAAW,IAAI,WAAW,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,WAAW,YAAY,IAAI;AACzF,cAAI,WAAW,QAAQ,IAAI,KAAK,KAAK,WAAW,SAAS,QAAQ,KAAK,WAAW,SAAS,QAAQ,GAAG;AACnG,oBAAQ,IAAI,OAAO,GAAG;AAAA,UACxB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO5C,SAAQ;AAC7B,QAAAA,UAASA,WAAU,CAAC;AACpB,QAAAA,QAAO,QAAQA,QAAO,SAAS;AAC/B,eAAO,IAAI,oBAAoB,MAAMA,QAAO,eAAe,KAAK,eAAeA,SAAQ,IAAI,CAAC;AAAA,MAC9F;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBA,SAAQ;AACtC,QAAAA,UAASA,WAAU,CAAC;AACpB,QAAAA,QAAO,QAAQA,QAAO,SAAS;AAC/B,YAAI,mBAAmB,CAACA,QAAO,WAAW,CAACA,QAAO,UAAU,CAACA,QAAO,QAChEgH,YAAW,mBAAmB,WAAW,YAAY,MAAMhH,QAAO,OAAO,GACzE,UAAU,mBAAmB,WAAW,YAAY,MAAMA,QAAO,MAAM,GACvE,UAAU,mBAAmB,WAAW,YAAY,MAAMA,QAAO,MAAM,GACvE,SAAS,YAAY,MAAMA,QAAO,OAAO,IAAI;AACjD,YAAI,KAAK,CAAC;AACV,iBAAS,QAAQ,KAAK,oBAAoB;AACxC,cAAI,SAAS,WAAWgH,WAAU,MAAM,IAAI,GACxC,SAAS,WAAW,SAAS,MAAM,IAAI,GACvC,mBAAmB,YAAY,KAC/B,SAAS,WAAW,SAAS,MAAM,IAAI,GACvC,mBAAmB,YAAY;AACnC,cAAI,UAAU,UAAU,QAAQ;AAC9B;AAAO,uBAAS3F,KAAI,GAAG,KAAK,KAAK,mBAAmB,IAAI,EAAE,QAAQA,KAAI,IAAIA,MAAK;AAC7E,oBAAI,MAAM,KAAK,mBAAmB,IAAI,EAAEA,EAAC;AACzC,oBAAI,WAAW,QAAQ,IAAI,OAAO,IAAI,GAAG;AACvC,sBAAI,gBAAgB,oBAAoB,QAAQ,SAAS,KAAK,CAAC,IAAI,UAC/D,gBAAgB,oBAAoB,QAAQ,SAAS,KAAK,CAAC,IAAI;AACnE,sBAAI,iBAAiB,eAAe;AAClC,6BAAS;AAAA,kBACX;AACA,qBAAG,KAAK,GAAG;AAAA,gBACb;AAAA,cACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,IAAI,kBAAkB,MAAM,EAAE;AAAA,MACvC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAaM,IAAG;AAC9B,aAAK,aAAaA;AAClB,aAAK,KAAK,wBAAwB,KAAK,UAAU;AAAA,MACnD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAKA,IAAG,IAAI,KAAK;AAC/B,YAAI,UAAU,CAAC;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,QACR,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,MAAM;AAAA,QACR,CAAC;AACD,YAAI,IACA,MAAM,QAAQ,GAAG,GACjB,MAAMA,GAAE,IAAI,IAAI,GAChB,KACA,cAAcA,GAAE,UAAU,GAAG;AACjC,YAAI,YAAY;AAAA,UACd,OAAO;AAAA,UACP,kBAAkB;AAAA,UAClB,kBAAkB,QAAQ,IAAI,MAAMA,GAAE;AAAA,UACtC,aAAaA,GAAE;AAAA,UACf,kBAAkB,QAAQ,IAAI,MAAMA,GAAE;AAAA,UACtC,aAAaA,GAAE;AAAA,UACf,YAAYA;AAAA,UACZ,aAAa;AAAA,QACf;AACA,YAAI,cAAc,UAAU;AAC1B,eAAK;AACL,aAAG,cAAcA,EAAC;AAAA,QACpB,OAAO;AACL,gBAAM,KAAK,MAAM,EAAE;AACnB,cAAI,QAAQA,GAAE,IAAI,IAAI,GAAG;AACvB,iBAAK;AAAA,UACP,OAAO;AACL,iBAAKA,GAAE,aAAa,QAAQ,GAAG,IAAI,GAAG;AAAA,UACxC;AAAA,QACF;AACA,YAAI,MAAM,MAAM;AACd,oBAAU,cAAc;AACxB,sBAAY,qBAAqBA,EAAC;AAClC,UAAAA,GAAE,UAAU,GAAG,IAAI;AACnB,UAAAA,GAAE,IAAI,EAAE,IAAI,GAAG;AACf,UAAAA,GAAE,IAAI,IAAI,IAAI,GAAG;AACjB,oBAAU,QAAQ,IAAI,gBAAgB,aAAa,IAAI,GAAG;AAC1D,eAAK,cAAc,SAAS;AAC5B,eAAK,iBAAiBA,EAAC;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,YAAY,IAAI;AACxC,gCAAwB,YAAY,KAAK,iBAAiB,WAAW,QAAQ,CAAC;AAC9E,YAAIP,KAAI,KAAK,KAAK,YAAY,IAAI,CAAC;AACnC,6BAAqB,YAAY,KAAK,iBAAiBA,GAAE,WAAW,CAAC;AAAA,MACvE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,YAAY,IAAI;AACxC,gCAAwB,YAAY,KAAK,iBAAiB,WAAW,QAAQ,CAAC;AAC9E,YAAIA,KAAI,KAAK,KAAK,YAAY,IAAI,CAAC;AACnC,6BAAqB,YAAY,KAAK,iBAAiBA,GAAE,WAAW,CAAC;AAAA,MACvE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,YAAY,MAAMpB,SAAQ;AAC1D,mBAAW,QAAQ,MAAMA,OAAM;AAC/B,aAAK,iBAAiB,UAAU;AAAA,MAClC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB;AACjC,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,KAAK,mBAAmB;AACxD,YAAI,SAAS,KAAK;AAClB,aAAK,kBAAkB;AACvB,YAAI,KAAK;AACP,eAAK,eAAe,MAAK,oBAAI,KAAK,GAAE,QAAQ;AAAA,QAC9C,OAAO;AACL,eAAK,eAAe;AACpB,eAAK,SAAS,gBAAgB;AAAA,QAChC;AACA,YAAI,mBAAmB;AACrB,eAAK,kBAAkB;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,MAAMoD,KAAI,wBAAwB;AAChD,YAAI,gBAAgB,KAAK,oBAAoB;AAC7C,YAAI,CAAC,eAAe;AAClB,eAAK,kBAAkB,IAAI;AAAA,QAC7B;AACA,QAAAA,IAAG;AACH,YAAI,CAAC,eAAe;AAClB,eAAK,kBAAkB,OAAO,CAAC,sBAAsB;AAAA,QACvD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASL,MAAK,MAAMK,KAAI;AAC7B,YAAI,QAAQ,MAAM;AAChB;AAAA,QACF;AACA,YAAI,KAAK,UAAU,MAAM;AACvB,mBAAS/B,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAA+B,IAAG,KAAK/B,EAAC,CAAC;AAAA,UACZ;AAAA,QACF,OAAO;AACL,UAAA+B,IAAG,IAAI;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAapD,SAAQ;AACnC,YAAI,OAAOA,QAAO;AAClB,YAAIA,QAAO,QAAQ;AACjB,iBAAO,KAAK,SAAS,eAAe,IAAI;AAAA,QAC1C,OAAO;AACL,iBAAO,KAAK,SAAS,YAAY,IAAI;AAAA,QACvC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,YAAYA,SAAQ;AACnD,YAAI,cAAc,QAAQ,WAAW,YAAY,MAAM;AACrD,UAAAA,UAASA,WAAU,CAAC;AACpB,cAAIA,QAAO,SAAS,cAAc,MAAM,OAAO,CAAC,CAAC,WAAW,UAAU,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,UAAU,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,yBAAyB,UAAU,CAAC,CAAC,CAAC,GAAG;AACvR,oCAAwB,YAAY,KAAK,iBAAiB,WAAW,QAAQ,GAAG,KAAK,iBAAiB,WAAW,QAAQ,CAAC;AAC1H,iBAAK,gBAAgB,YAAY,CAAC,WAAW,WAAWA,QAAO,cAAc,OAAOA,QAAO,aAAa;AACxG,gBAAI,kBAAkB,WAAW,UAAU,CAAC;AAC5C,gBAAI,iBAAiB,WAAW,UAAU,CAAC;AAC3C,gBAAI,oBAAoBA,QAAO,kBAAkB;AAC/C,8BAAgB,qBAAqB,YAAY,MAAM,IAAI;AAAA,YAC7D;AACA,gBAAI,mBAAmBA,QAAO,kBAAkB;AAC9C,6BAAe,qBAAqB,YAAY,MAAM,IAAI;AAAA,YAC5D;AACA,+BAAmB,KAAK,aAAa,SAAU,IAAI;AACjD,qBAAO,WAAW,OAAO,GAAG;AAAA,YAC9B,CAAC;AACD,uBAAW,QAAQ;AACnB,gBAAI,oBAAoBA,QAAO,oBAAoB,gBAAgB,iBAAiB,gBAAgB,YAAY,WAAW,GAAG;AAC5H,mBAAK,eAAe,eAAe;AAAA,YACrC;AACA,gBAAI,mBAAmBA,QAAO,oBAAoB,eAAe,iBAAiB,eAAe,YAAY,WAAW,GAAG;AACzH,mBAAK,eAAe,cAAc;AAAA,YACpC;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsBA,SAAQ;AAC5C,YAAI,SAAS;AACb,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAI,QAAQ,KAAK,YAAY,QACzB,eAAe;AACnB,aAAK,MAAM,WAAY;AACrB,mBAASqB,KAAI,GAAGA,KAAI,OAAOA,MAAK;AAC9B,4BAAgB,OAAO,iBAAiB,OAAO,YAAY,CAAC,GAAGrB,OAAM,IAAI,IAAI;AAAA,UAC/E;AAAA,QACF,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,4BAA4B,IAAIA,SAAQ;AACtD,YAAI8B,MAAK,KAAK,MAAM,EAAE,GAClBU,KAAI,KAAK,iBAAiBV,GAAE;AAChC,YAAIU,IAAG;AACL,cAAIlB,KAAIkB,GAAE,YAAY;AACtB,mBAASnB,KAAI,GAAGA,KAAIC,IAAGD,MAAK;AAC1B,iBAAK,iBAAiBmB,GAAE,YAAY,CAAC,GAAGxC,OAAM;AAAA,UAChD;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,KAAK,aAAa,eAAe;AAC/D,YAAI,kBAAkB,IAAI,MAAM,MAC5BA,UAAS,kBAAkB;AAAA,UAC7B,YAAY;AAAA,UACZ,QAAQ,IAAI;AAAA,UACZ,QAAQ,IAAI;AAAA,UACZ,UAAU,IAAI;AAAA,UACd,UAAU,IAAI;AAAA,UACd,gBAAgB,IAAI,UAAU,CAAC;AAAA,UAC/B,gBAAgB,IAAI,UAAU,CAAC;AAAA,QACjC,IAAI;AACJ,YAAI,aAAa;AACf,eAAK,KAAK,2BAA2BA,SAAQ,aAAa;AAAA,QAC5D;AACA,aAAK,KAAK,oCAAoCA,SAAQ,aAAa;AAAA,MACrE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcA,SAAQ,KAAK;AACzC,aAAK,KAAK,wBAAwBA,SAAQ,GAAG;AAAA,MAC/C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUgH,WAAU,QAAQ;AAC1C,YAAI,KAAK,SAASA,SAAQ,IAAI,KAAK,YAAY,KAAK,aAAa,GAAGA,SAAQ,IAAIA;AAChF,iBAAS3F,KAAI,GAAGA,KAAI,GAAG,QAAQA,MAAK;AAClC,eAAK,OAAO,GAAGA,EAAC,GAAG,MAAM,MAAM;AAAA,QACjC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO,SAAS,YAAY,SAAS;AACnD,YAAI,KAAK,aAAa,SAAS,iBAAiB,KAAK,MAAM;AACzD,uBAAa,cAAc,KAAK,aAAa,SAAS,IAAI,KAAKT,MAAK;AACpE,eAAK,aAAa,SAAS,mBAAmB,UAAU;AAAA,QAC1D;AACA,YAAI,OAAO,KAAK,MAAM,OAAO;AAC7B,YAAI,CAAC,KAAK,iBAAiB,IAAI,GAAG;AAChC,cAAI,MAAM;AAAA,YACR,IAAI;AAAA,YACJ,WAAW,CAAC;AAAA,YACZ,aAAa,CAAC;AAAA,YACd,UAAU;AAAA,YACV,MAAM,CAAC;AAAA,UACT;AACA,eAAK,iBAAiB,IAAI,IAAI;AAC9B,cAAI,KAAK,iBAAiB;AACxB,gBAAI,kBAAkB,KAAK,SAAS,gBAAgB,MAAM,IAAI;AAAA,UAChE,OAAO;AACL,gBAAI,kBAAkB,KAAK,aAAa;AAAA,cACtC;AAAA,cACA,QAAQ;AAAA,YACV,CAAC;AAAA,UACH;AACA,eAAK,KAAK,sBAAsB;AAAA,YAC9B,IAAI;AAAA,UACN,CAAC;AAAA,QACH,OAAO;AACL,cAAI,SAAS;AACX,iBAAK,iBAAiB,IAAI,EAAE,kBAAkB,KAAK,aAAa;AAAA,cAC9D;AAAA,cACA,WAAW;AAAA,cACX,QAAQ;AAAA,YACV,CAAC;AAAA,UACH;AAAA,QACF;AACA,eAAO,KAAK,iBAAiB,IAAI;AAAA,MACnC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,WAAW,gBAAgBgB,MAAK;AAC7D,YAAI,KAAK,iBAAiB,SAAS,GAAG;AACpC,cAAIqF,QAAO,KAAK,iBAAiB,SAAS,EAAE,KAAK,cAAc;AAC/D,iBAAOA,SAAQ,OAAOA,MAAKrF,IAAG,IAAI;AAAA,QACpC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,WAAW,gBAAgBA,MAAKqF,OAAM;AACnE,YAAI,KAAK,iBAAiB,SAAS,GAAG;AACpC,eAAK,iBAAiB,SAAS,EAAE,KAAK,cAAc,IAAI,KAAK,iBAAiB,SAAS,EAAE,KAAK,cAAc,KAAK,CAAC;AAClH,eAAK,iBAAiB,SAAS,EAAE,KAAK,cAAc,EAAErF,IAAG,IAAIqF;AAAA,QAC/D;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBnF,KAAI;AACpC,eAAO,KAAK,iBAAiBA,GAAE,IAAI,KAAK,iBAAiBA,GAAE,EAAE,KAAK;AAAA,MACpE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,IAAIoF,gBAAe;AAC1C,YAAI,SAAS;AACb,aAAK,mBAAmB,IAAI,IAAI;AAChC,YAAI,OAAO,SAASzE,MAAK,KAAK;AAC5B,cAAIX,MAAK,OAAO,MAAM,GAAG;AACzB,iBAAO,gBAAgB,KAAK,iBAAiB;AAC7C,iBAAO,OAAO,iBAAiBA,GAAE;AACjC,iBAAO,SAAS,OAAOA,GAAE;AACzB,iBAAO,KAAK,wBAAwB;AAAA,YAClC,IAAI;AAAA,YACJ,IAAIA;AAAA,UACN,CAAC;AACD,cAAI,OAAOoF,gBAAe;AACxB,mBAAO,eAAe,GAAG;AAAA,UAC3B;AAAA,QACF;AACA,aAAK,uBAAuB,EAAE,EAAE,IAAI,IAAI;AACxC,aAAK,EAAE;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASrD,QAAO,SAAS,UAAU,eAAe;AACvD,YAAI,YAAY,KAAK,MAAM,OAAO;AAClC,YAAI,KAAK,iBAAiB,SAAS,GAAG;AACpC,eAAK,iBAAiB,SAAS,EAAE,WAAW;AAC5C,eAAK,SAAS,cAAc,WAAW,QAAQ;AAC/C,cAAI,kBAAkB,MAAM;AAC1B,mBAAO,KAAK,WAAW,OAAO;AAAA,UAChC;AAAA,QACF;AACA,eAAO;AAAA,UACL,GAAG,oBAAI,IAAI;AAAA,UACX,GAAG,oBAAI,IAAI;AAAA,QACb;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,WAAW;AACtC,YAAI,QAAQ,KAAK,iBAAiB,SAAS;AAC3C,YAAI,SAAS,MAAM;AACjB,iBAAO,MAAM,YAAY;AAAA,QAC3B,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,WAAW;AACvC,YAAI,SAAS;AACb,YAAI,YAAY,CAAC;AACjB,YAAI,QAAQ,KAAK,iBAAiB,SAAS;AAC3C,YAAI,YAAY,SAASsD,WAAUhG,IAAG;AACpC,cAAIA,GAAE,SAAS,MAAM;AACnB,gBAAI,SAAS,OAAO,iBAAiBA,GAAE,KAAK;AAC5C,gBAAI,UAAU,MAAM;AAClB,wBAAU,KAAK;AAAA,gBACb,GAAG,OAAO,gBAAgB;AAAA,gBAC1B,GAAG,OAAO,gBAAgB;AAAA,cAC5B,CAAC;AACD,cAAAgG,WAAU,MAAM;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AACA,YAAI,SAAS,MAAM;AACjB,oBAAU,KAAK;AAAA,YACb,GAAG,MAAM,gBAAgB,KAAK;AAAA,YAC9B,GAAG,MAAM,gBAAgB;AAAA,UAC3B,CAAC;AACD,oBAAU,KAAK;AAAA,QACjB;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBC,QAAO,WAAW;AAChD,YAAI,KAAKA,OAAM,MAAM;AACrB,YAAI,UAAU;AAAA,UACZ,GAAG,GAAG,CAAC;AAAA,UACP,GAAG,GAAG,CAAC;AAAA,UACP,IAAI;AAAA,UACJ,IAAI;AAAA,QACN;AACA,gBAAQ,WAAW,SAAU,UAAU;AACrC,oBAAU,YAAY,SAAS,SAAS,GAAG,SAAS,CAAC;AAAA,QACvD,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBA,QAAO,WAAW;AAClD,gBAAQ,WAAW,SAAU,UAAU;AACrC,UAAAA,SAAQ,YAAYA,QAAO,SAAS,GAAG,SAAS,CAAC;AAAA,QACnD,CAAC;AACD,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsBpH,SAAQ;AAC5C,YAAI,KAAKoF,QAAO,CAAC,GAAGpF,OAAM;AAC1B,YAAI,iBAAiB,KAAK,OAAO,GAAG,OAAO;AAC3C,WAAG,YAAY,KAAK,MAAM,GAAG,OAAO;AACpC,WAAG,KAAK,QAAQ,KAAK,SAAS;AAC9B,YAAI,KAAK,IAAI,SAAS,MAAM,EAAE;AAC9B,2BAAmB,gBAAgB,EAAE;AACrC,YAAIA,QAAO,MAAM;AACf,eAAK,gBAAgB,IAAIA,QAAO,MAAM,EAAE;AAAA,QAC1C;AACA,wBAAgB,KAAK,oBAAoB,GAAG,WAAW,EAAE;AACzD,YAAI,CAAC,KAAK,iBAAiB;AACzB,eAAK,eAAe,IAAI;AAAA,YACtB,WAAW,KAAK;AAAA,UAClB,CAAC;AAAA,QACH;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,6BAA6B,MAAM,oBAAoB;AACrE,YAAI,SAAS,qBAAqB,KAAK,cAAc,MAAM,MAAM,MAAM,GACnE,MAAM,MACN,KAAK,MACLqD,KAAI,MACJ,KAAK;AACT,iBAAShC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,cAAIgG,MAAK,KAAK,kBAAkB,KAAKhG,EAAC,CAAC;AACvC,cAAIgG,KAAI;AACN,gBAAIA,IAAG,WAAW;AAChB,oBAAMA,IAAG;AAAA,YACX;AACA,gBAAIA,IAAG,UAAU;AACf,mBAAKA,IAAG;AAAA,YACV;AACA,gBAAIA,IAAG,SAAS;AACd,mBAAKA,IAAG;AAAA,YACV;AACA,gBAAIA,IAAG,QAAQ;AACb,cAAAhE,KAAIgE,IAAG;AAAA,YACT;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,UACL,WAAW,MAAM,MAAM,CAAC,IAAI,EAAE;AAAA,UAC9B,SAAS,KAAK,KAAK,CAAChE,IAAGA,EAAC;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI,WAAW;AACxC,YAAI,OAAO,KAAK,MAAM,EAAE;AACxB,aAAK,aAAa;AAAA,UAChB;AAAA,UACA,QAAQ;AAAA,UACR;AAAA,QACF,CAAC;AACD,eAAO,KAAK,QAAQ,EAAE;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,YAAI,YAAYzC,MAAK,GACjB;AACJ,aAAK,QAAQ,KAAK,kBAAkB;AAClC,eAAK,SAAS,eAAe,MAAM,IAAI;AAAA,QACzC;AACA,aAAK,SAAS,gBAAgB;AAC9B,aAAK,QAAQ,KAAK,kBAAkB;AAClC,eAAK,QAAQ,KAAK,iBAAiB,IAAI,EAAE,IAAI,WAAW,IAAI;AAAA,QAC9D;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,IAAIP,IAAGC,IAAG;AAC3C,YAAIwB,MAAK,KAAK,MAAM,EAAE;AACtB,aAAK,SAAS,YAAYA,KAAIzB,IAAGC,EAAC;AAClC,eAAO,KAAK,QAAQ,EAAE;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASqD,SAAQ,IAAI,WAAW,2BAA2B;AAChE,YAAIG,KAAI;AAAA,UACN,GAAG,oBAAI,IAAI;AAAA,UACX,GAAG,oBAAI,IAAI;AAAA,QACb;AACA,YAAI,eAAe,SAASwD,cAAaC,KAAI;AAC3C,UAAAA,IAAG,EAAE,QAAQ,SAAU5F,IAAG;AACxB,mBAAOmC,GAAE,EAAE,IAAInC,EAAC;AAAA,UAClB,CAAC;AACD,UAAA4F,IAAG,EAAE,QAAQ,SAAUpG,IAAG;AACxB,mBAAO2C,GAAE,EAAE,IAAI3C,EAAC;AAAA,UAClB,CAAC;AAAA,QACH;AACA,YAAI,CAAC,KAAK,iBAAiB;AACzB,cAAIW,MAAK,KAAK,MAAM,EAAE;AACtB,cAAI,MAAM,MAAM;AACd,gBAAI,aAAa,KAAK,uBAAuB,EAAE;AAC/C,gBAAI,aAAa,MAAM;AACrB,0BAAYlB,MAAK;AAAA,YACnB;AACA,gBAAI,CAAC,2BAA2B;AAC9B,uBAASS,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AAC1C,qBAAK,aAAa;AAAA,kBAChB,MAAM,KAAK,MAAM,WAAWA,EAAC,CAAC;AAAA,kBAC9B,QAAQ;AAAA,kBACR;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF;AACA,yBAAa,KAAK,OAAO,OAAOS,KAAI,WAAW,IAAI,CAAC;AACpD,gBAAI,WAAW,SAAS,GAAG;AACzB,uBAASc,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AAC1C,6BAAa,KAAK,OAAO,OAAO,KAAK,MAAM,WAAWA,EAAC,CAAC,GAAG,WAAW,IAAI,CAAC;AAAA,cAC7E;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAOkB;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,UAAU;AAC3C,YAAIlD,QAAO,SAAS,QAAQ;AAC5B,YAAIA,OAAM;AACR,eAAK,gBAAgB,QAAQ,EAAEA,KAAI;AAAA,QACrC;AACA,8BAAsB,KAAK,iBAAiB,SAAS,SAAS,GAAG,QAAQ;AACzE,YAAI,MAAM,KAAK,mBAAmB,SAAS,SAAS;AACpD,YAAI,OAAO,MAAM;AACf,eAAK,mBAAmB,SAAS,SAAS,IAAI,IAAI,OAAO,SAAUO,IAAG;AACpE,mBAAOA,OAAM;AAAA,UACf,CAAC;AAAA,QACH;AACA,aAAK,KAAK,sCAAsC,QAAQ;AAAA,MAC1D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,UAAU;AAC5C,YAAI,SAAS,iBAAiB,SAAS,YAAY,WAAW,GAAG;AAC/D,eAAK,eAAe,QAAQ;AAC5B,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,QAAQ;AACrC,YAAI,SAAS;AACb,YAAI,WAAW,OAAO,WAAW,WAAW,KAAK,gBAAgB,IAAI,MAAM,IAAI;AAC/E,YAAI,UAAU;AACZ,cAAI,QAAQ,SAAS;AACrB,cAAI,sBAAsB,SAAS,YAAY,MAAM;AACrD,kBAAQ,qBAAqB,SAAU,YAAY;AACjD,qBAAS,qBAAqB,YAAY,MAAM,IAAI;AAAA,UACtD,CAAC;AACD,eAAK,mBAAmB,QAAQ;AAChC,mBAAS,QAAQ;AACjB,kBAAQ,qBAAqB,SAAU,YAAY;AACjD,mBAAO,iBAAiB,YAAY;AAAA,cAClC,OAAO;AAAA,cACP,kBAAkB;AAAA,YACpB,CAAC;AAAA,UACH,CAAC;AACD,cAAI,SAAS,MAAM;AACjB,iBAAK,eAAe,KAAK;AAAA,UAC3B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAInB,SAAQ,iBAAiB;AACvD,0BAAkB,mBAAmB,CAAC;AACtC,YAAIoB,KAAIgE,QAAO,CAAC,GAAG,eAAe;AAClC,QAAAA,QAAOhE,IAAGpB,WAAU,CAAC,CAAC;AACtB,YAAI,KAAKoF,QAAO;AAAA,UACd,SAAS;AAAA,QACX,GAAGhE,EAAC;AACJ,eAAO,KAAK,sBAAsB,EAAE;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,IAAI,WAAW,iBAAiB;AAC3D,YAAI,UAAU,CAAC;AACf,iBAASC,KAAI,GAAGuB,KAAI,UAAU,QAAQvB,KAAIuB,IAAGvB,MAAK;AAChD,kBAAQ,KAAK,KAAK,YAAY,IAAI,UAAUA,EAAC,GAAG,eAAe,CAAC;AAAA,QAClE;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,YAAI,SAAS;AACb,aAAK,SAAS,WAAY;AACxB,iBAAO,qBAAqB,CAAC;AAC7B,iBAAO,mBAAmB,CAAC;AAC3B,iBAAO,gBAAgB,MAAM;AAC7B,iBAAO,SAAS,MAAM;AACtB,iBAAO,OAAO,MAAM;AACpB,iBAAO,aAAa,MAAM;AAC1B,iBAAO,YAAY,SAAS;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASmG,WAAU;AACxB,aAAK,MAAM;AACX,aAAK,OAAO;AACZ,aAAK,gBAAgB,SAAS;AAC9B,aAAK,gBAAgB,SAAS;AAC9B,aAAK,iBAAiB,MAAM;AAC5B,aAAK,eAAe,MAAM;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,IAAI;AAC/B,eAAO,KAAK,mBAAmB,KAAK,MAAM,EAAE,CAAC,KAAK,CAAC;AAAA,MACrD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY5G,OAAM;AAChC,eAAO,KAAK,gBAAgB,IAAIA,KAAI;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,UAAUA,OAAM;AAC9C,YAAI,SAAS,MAAM;AACjB,eAAK,gBAAgB,QAAQ,EAAE,SAAS,IAAI;AAAA,QAC9C;AACA,iBAAS,OAAOA;AAChB,aAAK,gBAAgB,IAAIA,OAAM,QAAQ;AAAA,MACzC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQZ,SAAQ,iBAAiB;AAC/C,YAAI;AACF,cAAI,KAAK,KAAK,yBAAyBA,SAAQ,eAAe,GAC1D,MAAM,KAAK,eAAe,EAAE;AAChC,eAAK,oBAAoB,KAAK,EAAE;AAChC,iBAAO;AAAA,QACT,SAAS,cAAP;AACA,cAAI,YAAY;AAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,yBAAyBA,SAAQ,iBAAiB;AAChE,YAAI,OAAOoF,QAAO,CAAC,GAAGpF,OAAM;AAC5B,YAAI,iBAAiB;AACnB,UAAAoF,QAAO,MAAM,eAAe;AAAA,QAC9B;AACA,YAAI,KAAK;AACT,YAAI,GAAG,QAAQ;AACb,cAAI,GAAG,OAAO,UAAU;AACtB,eAAG,iBAAiB,GAAG;AAAA,UACzB;AAAA,QACF;AACA,YAAI,GAAG,QAAQ;AACb,cAAI,GAAG,OAAO,UAAU;AACtB,eAAG,iBAAiB,GAAG;AAAA,UACzB;AAAA,QACF;AACA,YAAIpF,QAAO,OAAO;AAChB,aAAG,iBAAiB,KAAK,YAAYA,QAAO,MAAM,CAAC,CAAC;AACpD,aAAG,iBAAiB,KAAK,YAAYA,QAAO,MAAM,CAAC,CAAC;AAAA,QACtD;AACA,YAAI,GAAG,kBAAkB,MAAM;AAC7B,cAAI,GAAG,eAAe,OAAO,GAAG;AAC9B,kBAAM;AAAA,UACR;AACA,cAAI,CAAC,GAAG,MAAM;AACZ,eAAG,OAAO,GAAG,eAAe;AAAA,UAC9B;AACA,cAAI,GAAG,eAAe,mBAAmB;AACvC,eAAG,WAAW,GAAG,YAAY,CAAC;AAC9B,qBAASqB,KAAI,GAAGuB,KAAI,GAAG,eAAe,kBAAkB,QAAQvB,KAAIuB,IAAGvB,MAAK;AAC1E,iBAAG,SAAS,KAAK,GAAG,eAAe,kBAAkBA,EAAC,CAAC;AAAA,YACzD;AAAA,UACF;AACA,cAAI,GAAG,eAAe,OAAO;AAC3B,eAAG,QAAQ,GAAG,eAAe;AAAA,UAC/B;AAAA,QACF,OAAO;AACL,cAAI,GAAG,UAAU,MAAM;AACrB,kBAAM;AAAA,UACR;AAAA,QACF;AACA,YAAI,GAAG,kBAAkB,MAAM;AAC7B,cAAI,GAAG,eAAe,OAAO,GAAG;AAC9B,kBAAM;AAAA,UACR;AAAA,QACF,OAAO;AACL,cAAI,GAAG,UAAU,MAAM;AACrB,kBAAM;AAAA,UACR;AAAA,QACF;AACA,YAAI,GAAG,kBAAkB,GAAG,gBAAgB;AAC1C,cAAI,CAAC,YAAY,GAAG,gBAAgB,GAAG,cAAc,GAAG;AACtD,kBAAM;AAAA,UACR;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAerB,SAAQ;AACrC,QAAAA,QAAO,KAAK,SAAS,KAAK,SAAS;AACnC,YAAI2B,KAAI,IAAI8F,YAAW,MAAMzH,OAAM;AACnC,6BAAqB2B,IAAG,KAAK,iBAAiBA,GAAE,QAAQ,GAAG,KAAK,iBAAiBA,GAAE,QAAQ,CAAC;AAC5F,aAAK,iBAAiBA,EAAC;AACvB,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,KAAK3B,SAAQ,eAAe;AAC9D,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAI,CAAC,IAAI,mBAAmB;AAC1B,eAAK,YAAY,KAAK,GAAG;AAAA,QAC3B;AACA,YAAI,UAAU;AACd,YAAI,UAAU,CAAC,EAAE,oBAAoB;AACrC,aAAK,QAAQ,IAAI,MAAM;AACvB,YAAI,UAAU;AAAA,UACZ,YAAY;AAAA,UACZ,QAAQ,IAAI;AAAA,UACZ,QAAQ,IAAI;AAAA,UACZ,UAAU,IAAI;AAAA,UACd,UAAU,IAAI;AAAA,UACd,gBAAgB,IAAI,UAAU,CAAC;AAAA,UAC/B,gBAAgB,IAAI,UAAU,CAAC;AAAA,QACjC;AACA,aAAK,KAAK,2BAA2B,SAAS,aAAa;AAC3D,YAAI,CAACA,QAAO,4BAA4BA,QAAO,cAAc,OAAO;AAClE,eAAK,KAAK,kBAAkB,SAAS,aAAa;AAAA,QACpD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,IAAI,SAAS;AAC9C,YAAI,SAAS;AACb,YAAI,OAAO,SAASyC,MAAK,KAAK;AAC5B,cAAIX,MAAK,OAAO,MAAM,GAAG,GACrB,MAAM,OAAO,mBAAmBA,GAAE,GAClCT,IACA;AACJ,cAAI,KAAK;AACP,iBAAKA,KAAI,GAAG,KAAK,IAAI,QAAQA,KAAI,IAAIA,MAAK;AACxC,qBAAO,eAAe,IAAIA,EAAC,CAAC;AAAA,YAC9B;AAAA,UACF;AACA,iBAAO,OAAO,mBAAmBS,GAAE;AAAA,QACrC;AACA,YAAI,SAAS;AACX,eAAK,uBAAuB,EAAE,EAAE,IAAI,IAAI;AAAA,QAC1C;AACA,aAAK,EAAE;AACP,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB9B,SAAQ,iBAAiB;AAC/D,YAAIoB,KAAIgE,QAAO,CAAC,GAAG,eAAe;AAClC,QAAAA,QAAOhE,IAAGpB,OAAM;AAChB,QAAAoB,GAAE,WAAWA,GAAE,YAAY;AAC3B,YAAI,MAAM,KAAK,6BAA6BA,GAAE,QAAQ;AACtD,QAAAA,GAAE,WAAWA,GAAE,YAAY,IAAI,UAAU,CAAC;AAC1C,QAAAA,GAAE,SAASA,GAAE,UAAU,IAAI,QAAQ,CAAC;AACpC,YAAI,iBAAiBA,GAAE,kBAAkB;AACzC,YAAI,OAAO;AAAA,UACT,KAAKgE,QAAO,CAAC,GAAGhE,EAAC;AAAA,UACjB,gBAAgBA,GAAE;AAAA,UAClB;AAAA,UACA,SAAS;AAAA,UACT,UAAU;AAAA,QACZ;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,UAAUpB,SAAQ;AAClD,YAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,YAAI,OAAO,KAAK,wBAAwBA,OAAM;AAC9C,YAAI,MAAM,IAAI,uBAAuB,UAAU,MAAM,OAAO;AAC5D,aAAK,gBAAgB,KAAK,GAAG;AAC7B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,UAAU;AAC7C,2BAAmB,KAAK,iBAAiB,SAAUwE,IAAG;AACpD,iBAAOA,OAAM;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,UAAU;AAC7C,2BAAmB,KAAK,iBAAiB,SAAUA,IAAG;AACpD,iBAAOA,OAAM;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,UAAUxE,SAAQ;AAClD,YAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,YAAI,OAAO,KAAK,wBAAwBA,OAAM;AAC9C,YAAI,MAAM,IAAI,uBAAuB,UAAU,MAAM,OAAO;AAC5D,aAAK,gBAAgB,KAAK,GAAG;AAC7B,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwBA,SAAQ,iBAAiB;AAC/D,YAAIoB,KAAIgE,QAAO,CAAC,GAAG,eAAe;AAClC,QAAAA,QAAOhE,IAAGpB,OAAM;AAChB,QAAAoB,GAAE,WAAWA,GAAE,YAAY;AAC3B,YAAI,iBAAiBA,GAAE,kBAAkB;AACzC,YAAI,OAAO;AAAA,UACT,KAAKgE,QAAO,CAAC,GAAGhE,EAAC;AAAA,UACjB,gBAAgBA,GAAE;AAAA,UAClB;AAAA,UACA,SAAS;AAAA,UACT,UAAU;AAAA,QACZ;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASsG,MAAK,IAAI,iBAAiB;AACxC,eAAO,KAAK,YAAY,IAAI,OAAO,eAAe;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,MAAK,IAAI,iBAAiB;AACxC,eAAO,KAAK,YAAY,IAAI,MAAM,eAAe;AAAA,MACnD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI,OAAO,qBAAqB;AAC1D,YAAIC,WAAU,UAAU;AACxB,YAAI,eAAe;AACnB,YAAI,qBAAqB;AACvB,yBAAe,SAASC,cAAa,IAAI;AACvC,eAAG,WAAWD,UAAS,MAAM,IAAI;AAAA,UACnC;AAAA,QACF;AACA,YAAI9F,MAAK,KAAK,MAAM,EAAE;AACtB,aAAK,WAAW,IAAI,SAAU,KAAK;AACjC,cAAI8F,YAAW,qBAAqB;AAClC,gBAAI,OAAO,IAAI,aAAa9F,MAAK,IAAI;AACrC,gBAAI,IAAI,UAAU,IAAI,EAAE,UAAU,GAAG;AACnC,kBAAI,WAAW,IAAI;AAAA,YACrB;AAAA,UACF,OAAO;AACL,gBAAI,WAAW8F,QAAO;AAAA,UACxB;AAAA,QACF,GAAG,YAAY;AACf,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,IAAI,iBAAiB;AACjD,YAAI,eAAe;AACnB,YAAI,iBAAiB;AACnB,yBAAe,SAASC,cAAa,IAAI;AACvC,gBAAI,QAAQ,GAAG,UAAU;AACzB,eAAG,WAAW,CAAC,KAAK;AAAA,UACtB;AAAA,QACF;AACA,aAAK,WAAW,IAAI,SAAU,KAAK;AACjC,cAAI,QAAQ,IAAI,UAAU;AAC1B,cAAI,WAAW,CAAC,KAAK;AAAA,QACvB,GAAG,YAAY;AAAA,MACjB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI,MAAM,cAAc;AACjD,YAAI,OAAO,KAAK,MAAM,EAAE;AACxB,YAAI,YAAY,KAAK,mBAAmB,IAAI;AAC5C,YAAI,aAAa,UAAU,QAAQ;AACjC,mBAASxG,KAAI,GAAG,KAAK,UAAU,QAAQA,KAAI,IAAIA,MAAK;AAClD,qBAASuB,KAAI,GAAG,KAAK,UAAUvB,EAAC,EAAE,YAAY,QAAQuB,KAAI,IAAIA,MAAK;AACjE,kBAAI,SAAS,KAAK,UAAUvB,EAAC,EAAE,YAAYuB,EAAC,CAAC;AAC7C,kBAAI,QAAQ;AACV;AAAA,cACF;AAAA,YACF;AACA,gBAAI,cAAc;AAChB,2BAAa,UAAUvB,EAAC,CAAC;AAAA,YAC3B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuBS,KAAI,MAAM;AAC/C,aAAK,iBAAiB,IAAIA,KAAIsD,QAAO,CAAC,GAAG,IAAI,CAAC;AAC9C,YAAI,KAAK,UAAU;AACjB,cAAI0C,MAAK,CAAC;AACV,mBAASzG,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,gBAAI,KAAK,yBAAyB,KAAK,SAASA,EAAC,CAAC;AAClD,YAAAyG,IAAG,GAAG,QAAQ,EAAE,IAAI;AAAA,UACtB;AACA,eAAK,iBAAiB,IAAIhG,GAAE,EAAE,WAAWgG;AAAA,QAC3C;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB,OAAO;AAC7C,iBAASzG,MAAK,OAAO;AACnB,eAAK,uBAAuBA,IAAG,MAAMA,EAAC,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqBS,KAAI,MAAM;AAC7C,aAAK,eAAe,IAAIA,KAAIsD,QAAO,CAAC,GAAG,IAAI,CAAC;AAC5C,YAAI,KAAK,UAAU;AACjB,cAAI0C,MAAK,CAAC;AACV,mBAASzG,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC7C,gBAAI,KAAK,yBAAyB,KAAK,SAASA,EAAC,CAAC;AAClD,YAAAyG,IAAG,GAAG,QAAQ,EAAE,IAAI;AAAA,UACtB;AACA,eAAK,eAAe,IAAIhG,GAAE,EAAE,WAAWgG;AAAA,QACzC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB,OAAO;AAC3C,iBAASzG,MAAK,OAAO;AACnB,eAAK,qBAAqBA,IAAG,MAAMA,EAAC,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQS,KAAI,gBAAgB;AAC1C,eAAO,mBAAmB,eAAe,KAAK,kBAAkBA,GAAE,IAAI,KAAK,gBAAgBA,GAAE;AAAA,MAC/F;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBA,KAAI;AACpC,eAAO,KAAK,iBAAiB,IAAIA,GAAE;AAAA,MACrC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBA,KAAI;AAClC,eAAO,KAAK,eAAe,IAAIA,GAAE;AAAA,MACnC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAeP,IAAG;AAChC,iBAASF,MAAKE,IAAG;AACf,eAAK,SAASF,EAAC,IAAIE,GAAEF,EAAC;AAAA,QACxB;AACA,YAAI,KAAK,SAAS,uBAAuB,KAAK,MAAM;AAClD,eAAK,SAAS,uBAAuB,EAAE,cAAc,KAAK,SAAS,uBAAuB,EAAE,eAAe;AAAA,QAC7G;AACA,YAAIE,GAAE,WAAW;AACf,eAAK,aAAaA,GAAE,SAAS;AAAA,QAC/B;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,aAAK,WAAW6D,QAAO,CAAC,GAAG,KAAK,gBAAgB;AAChD,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB;AACnC,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,YAAYnD,QAAO,SAAS,mBAAmB,iBAAiB;AAC9F,YAAI,iBAAiB,WAAW,QAAQA,MAAK,KAAK,MAC9C,SACA,oBAAoB,iBAAiB,WAAW,QAAQA,MAAK,EAAE,WAAW,YAAY,WAAW,UAAUA,MAAK,EAAE,WAClH,mBAAmB,iBAAiB,WAAW,QAAQA,MAAK,EAAE,aAAa,WAAW,UAAUA,MAAK,GACrG,YAAY,KAAK,MAAM,OAAO;AAClC,YAAI,WAAW,QAAQA,MAAK,GAAG;AAC7B,cAAI,WAAW,QAAQA,MAAK,EAAE,GAAG,cAAc,WAAW;AACxD,sBAAU,WAAW,QAAQA,MAAK,EAAE;AAAA,UACtC,OAAO;AACL,uBAAW,QAAQA,MAAK,EAAE,GAAG,qBAAqB,YAAYA,MAAK;AACnE,sBAAU,KAAK,sBAAsB;AAAA,cACnC,SAAS;AAAA,cACT,UAAU,kBAAkB,YAAYA,MAAK;AAAA,cAC7C,QAAQ,gBAAgB,YAAYA,MAAK;AAAA,cACzC,YAAY;AAAA,gBACV,iBAAiB;AAAA,cACnB;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AACL,oBAAU,KAAK,sBAAsB;AAAA,YACnC,SAAS;AAAA,YACT,UAAU,kBAAkB,YAAYA,MAAK;AAAA,YAC7C,QAAQ,gBAAgB,YAAYA,MAAK;AAAA,YACzC,YAAY;AAAA,cACV,iBAAiB;AAAA,YACnB;AAAA,UACF,CAAC;AAAA,QACH;AACA,gBAAQ,gBAAgB;AACxB,mBAAW,QAAQA,MAAK,IAAI;AAAA,UAC1B,IAAI;AAAA,UACJ,YAAY;AAAA,QACd;AACA,aAAK,sBAAsB,mBAAmB,WAAW,YAAY,SAASA,MAAK;AACnF,yBAAiB,qBAAqB,YAAY,MAAM,IAAI;AAC5D,gBAAQ,cAAc,CAAC,UAAU;AACjC,mBAAW,UAAUA,MAAK,IAAI;AAC9B,yBAAiB,YAAY;AAC7B,yBAAiB,WAAW,KAAK;AACjC,mBAAW,WAAW,IAAI;AAC1B,aAAK,WAAW,OAAO;AAAA,MACzB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,YAAYA,QAAO;AACnD,YAAI,WAAW,WAAW,QAAQ,WAAW,QAAQA,MAAK,KAAK,MAAM;AACnE;AAAA,QACF;AACA,YAAI,kBAAkB,WAAW,QAAQA,MAAK,EAAE,WAAW,SACvD,oBAAoB,WAAW,QAAQA,MAAK,EAAE,WAAW,WACzD,YAAY,WAAW,QAAQA,MAAK,EAAE,GAAG;AAC7C,mBAAW,UAAUA,MAAK,IAAI,WAAW,QAAQA,MAAK,EAAE;AACxD,eAAO,WAAW,QAAQA,MAAK,EAAE,WAAW;AAC5C,aAAK,sBAAsB,WAAW,mBAAmB,YAAY,iBAAiBA,MAAK;AAC3F,mBAAW,QAAQA,MAAK,EAAE,GAAG,qBAAqB,YAAY,IAAI;AAClE,mBAAW,QAAQA,MAAK,EAAE,WAAW,cAAc,UAAU;AAC7D,YAAI,WAAW,UAAU,GAAG;AAC1B,qBAAW,QAAQA,MAAK,EAAE,WAAW,WAAW,IAAI;AAAA,QACtD;AACA,mBAAW,QAAQA,MAAK,IAAI;AAC5B,YAAI,iBAAiB,WAAW,SAAS,SAAUb,IAAG;AACpD,iBAAOA,MAAK;AAAA,QACd,CAAC,MAAM,IAAI;AACT,qBAAW,QAAQ,SAAS;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB,YAAY,OAAO,YAAY,YAAYa,QAAO;AACtF,YAAI,eAAe,OAAO;AACxB,cAAIA,WAAU,GAAG;AACf,uBAAW,WAAW;AACtB,uBAAW,SAAS;AAAA,UACtB,WAAWA,WAAU,GAAG;AACtB,uBAAW,WAAW;AACtB,uBAAW,SAAS;AAAA,UACtB;AACA,kCAAwB,YAAY,KAAK,iBAAiB,UAAU,CAAC;AACrE,+BAAqB,YAAY,KAAK,iBAAiB,KAAK,CAAC;AAAA,QAC/D;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OACA,SAAS,SAAS,SAAS;AACzB,eAAO,KAAK,aAAa,SAAS,OAAO;AAAA,MAC3C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,eAAO,KAAK,aAAa,YAAY,EAAE;AAAA,MACzC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAASjC,SAAQ;AAC/B,eAAO,KAAK,aAAa,SAASA,OAAM;AAAA,MAC1C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,OAAO;AAChC,YAAI;AACJ,iBAAS,OAAO,UAAU,QAAQ,KAAK,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACxG,aAAG,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,QAC/B;AACA,gBAAQ,qBAAqB,KAAK,cAAc,WAAW,MAAM,oBAAoB,CAAC,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC;AAAA,MAChH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,OAAO;AACnC,aAAK,aAAa,cAAc,KAAK;AAAA,MACvC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,OAAO;AACjC,aAAK,aAAa,YAAY,KAAK;AAAA,MACrC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,OAAO;AACjC,aAAK,aAAa,YAAY,KAAK;AAAA,MACrC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,OAAO,eAAe,iBAAiB,iBAAiB;AAClF,eAAO,KAAK,aAAa,YAAY,OAAO,eAAe,iBAAiB,eAAe;AAAA,MAC7F;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,eAAe,iBAAiB;AAC9D,aAAK,aAAa,gBAAgB,eAAe,iBAAiB,KAAK;AAAA,MACzE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,OAAO,IAAI,iBAAiB;AAC1D,aAAK,aAAa,gBAAgB,OAAO,iBAAiB,EAAE;AAC5D,aAAK,eAAe,IAAI,KAAK,aAAa,CAAC;AAC3C,aAAK,aAAa;AAAA,UAChB,QAAQ;AAAA,UACR,MAAM,KAAK,MAAM,EAAE;AAAA,QACrB,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,UAAUA,SAAQ;AAC/C,iBAAS,oCAAoC,IAAI;AAC/C,cAAI,MAAM;AACV,cAAIA,QAAO,yBAAyB,MAAM;AACxC,qBAASqB,KAAI,GAAGA,KAAI,GAAG,YAAY,QAAQA,MAAK;AAC9C,kBAAI,GAAG,YAAYA,EAAC,EAAE,aAAarB,QAAO,yBAAyB,GAAG,YAAYqB,EAAC,EAAE,aAAarB,QAAO,uBAAuB;AAC9H,sBAAMqB;AACN;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,iBAAO,GAAG,YAAY,GAAG;AAAA,QAC3B;AACA,QAAArB,UAASA,WAAU,CAAC;AACpB,YAAI,YAAYA,QAAO,WACnB,SAAS,EAAEA,QAAO,WAAW;AACjC,YAAI,CAAC,aAAa,SAAS,cAAc,WAAW;AAClD,cAAI,OAAO,KAAK,SAAS,YAAY,SAAS,SAAS;AACvD,cAAI,KAAKA,QAAO,SAAS;AAAA,YACvB,GAAGA,QAAO,OAAO;AAAA,YACjB,GAAGA,QAAO,OAAO;AAAA,UACnB,IAAI;AAAA,YACF,GAAG,KAAK;AAAA,YACR,GAAG,KAAK;AAAA,UACV;AACA,cAAI,MAAM,MAAM;AACd,gBAAI,KAAKA,QAAO;AAChB,gBAAI,MAAM,MAAM;AACd,kBAAI,eAAe;AAAA,gBACjB;AAAA,gBACA,IAAI;AAAA,gBACJ,SAAS;AAAA,gBACT;AAAA,cACF;AACA,kBAAI,UAAU,KAAK,OAAO,gBAAgB,QAAQ,KAAK,SAAS,YAAY,SAAS,GAAG;AACtF,oBAAI,MAAM,oCAAoC,QAAQ,GAClD,OAAO,IAAI,UAAU,CAAC,MAAM,WAAW,IAAI,GAC3C,MAAM,SAAS,IAAI,IAAI,WAAW,IAAI,UACtC,QAAQ,KAAK,SAAS,YAAY,GAAG;AACzC,6BAAa,QAAQ,SAAS,IAAI,IAAI;AACtC,6BAAa,aAAa;AAC1B,6BAAa,MAAM;AACnB,6BAAa,MAAM;AACnB,6BAAa,WAAW,IAAI,UAAU,IAAI;AAC1C,6BAAa,YAAY,KAAK,cAAc,GAAG;AAAA,cACjD,WAAW,SAAS,YAAY,SAAS,GAAG;AAC1C,6BAAa,aAAa,SAAS,YAAY,CAAC;AAAA,cAClD;AACA,2BAAa,WAAW,KAAK,cAAc,SAAS,SAAS;AAC7D,mBAAK,KAAK,OAAO,sBAAsB,SAAS,SAAS,YAAY;AAAA,YACvE;AACA,qBAAS,SAAS,QAAQ,IAAI,KAAK,OAAO,uBAAuB,QAAQ,GAAG,SAAS,eAAe;AACpG,iBAAK,eAAe,UAAU,SAAS,eAAe;AACtD,qBAAS,YAAY;AACrB,qBAASqB,MAAK,SAAS,UAAU;AAC/B,kBAAI,SAAS,SAAS,eAAeA,EAAC,GAAG;AACvC,oBAAI,KAAK,SAAS,SAASA,EAAC;AAC5B,oBAAI,GAAG,UAAU,GAAG;AAClB,2BAAS,kBAAkBA,EAAC,IAAI,KAAK,YAAY,IAAI,SAAS,UAAU,SAAS,iBAAiB,SAAS,2BAA2B,EAAE,CAAC;AACzI,uBAAK,cAAc,IAAI,SAAS,kBAAkBA,EAAC,GAAG;AAAA,oBACpD,MAAM;AAAA,oBACN,MAAM;AAAA,kBACR,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,YAAYrB,SAAQ;AACnD,YAAI,CAAC,KAAK,mBAAmB,WAAW,YAAY,OAAO;AACzD,UAAAA,UAASA,WAAU,CAAC;AACpB,cAAI,YAAYA,QAAO;AACvB,cAAI,aAAa,QAAQ,cAAc,WAAW,eAAe;AAC/D;AAAA,UACF;AACA,cAAI,aAAa,QAAQ,cAAc,WAAW,eAAe;AAC/D,iBAAK,OAAO,YAAY,YAAY,SAAS;AAC7C,gBAAI,iBAAiB;AAAA,cACnB,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,YACR;AACA,qBAASqB,MAAK,WAAW,UAAU;AACjC,kBAAI,WAAW,SAAS,eAAeA,EAAC,GAAG;AACzC,oBAAI,MAAM,WAAW,SAASA,EAAC;AAC/B,oBAAI,IAAI,UAAU,GAAG;AACnB,6BAAW,kBAAkBA,EAAC,IAAI,KAAK,YAAY,KAAK,WAAW,WAAW,WAAW,iBAAiB,WAAW,2BAA2B,GAAG,CAAC;AACpJ,iCAAe,OAAO,KAAK,IAAI,eAAe,MAAM,WAAW,kBAAkBA,EAAC,EAAE,IAAI;AACxF,iCAAe,OAAO,KAAK,IAAI,eAAe,MAAM,WAAW,kBAAkBA,EAAC,EAAE,IAAI;AACxF,iCAAe,OAAO,KAAK,IAAI,eAAe,MAAM,WAAW,kBAAkBA,EAAC,EAAE,IAAI;AACxF,iCAAe,OAAO,KAAK,IAAI,eAAe,MAAM,WAAW,kBAAkBA,EAAC,EAAE,IAAI;AAAA,gBAC1F;AAAA,cACF;AAAA,YACF;AACA,gBAAI,YAAY,WAAW,KAAK,WAAW,gBAAgB,eAAe,GAAG,IAAI,GAC7E,eAAe,WAAW,KAAK,WAAW,gBAAgB,eAAe,GAAG,GAC5E,WAAW;AAAA,cACb,MAAM,KAAK,IAAI,WAAW,UAAU,OAAO,QAAQ,YAAY,eAAe,eAAe,IAAI;AAAA,cACjG,MAAM,KAAK,IAAI,WAAW,UAAU,OAAO,QAAQ,YAAY,eAAe,eAAe,IAAI;AAAA,cACjG,MAAM,KAAK,IAAI,WAAW,UAAU,OAAO,QAAQ,YAAY,eAAe,eAAe,IAAI;AAAA,cACjG,MAAM,KAAK,IAAI,WAAW,UAAU,OAAO,QAAQ,YAAY,eAAe,eAAe,IAAI;AAAA,YACnG;AACA,iBAAK,eAAe,WAAW,WAAW,WAAW,iBAAiB,QAAQ;AAC9E,qBAASuB,MAAK,WAAW,UAAU;AACjC,kBAAI,WAAW,SAAS,eAAeA,EAAC,GAAG;AACzC,oBAAI,MAAM,WAAW,SAASA,EAAC;AAC/B,oBAAI,IAAI,UAAU,GAAG;AACnB,uBAAK,cAAc,KAAK,WAAW,kBAAkBA,EAAC,GAAG,QAAQ;AAAA,gBACnE;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,qBAAW,gBAAgB;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,UAAU;AACzC,YAAI,CAAC,SAAS,QAAQ,YAAY;AAChC,cAAI,SAAS,YAAY,SAAS,GAAG;AACnC,iBAAK,iBAAiB,UAAU,KAAK,sBAAsB;AAAA,UAC7D,OAAO;AACL,iBAAK,oBAAoB,UAAU,KAAK,sBAAsB;AAAA,UAChE;AACA,cAAI,SAAS,OAAO,GAAG;AACrB,iBAAK,iBAAiB,UAAU,KAAK,iBAAiB;AAAA,UACxD,OAAO;AACL,iBAAK,oBAAoB,UAAU,KAAK,iBAAiB;AAAA,UAC3D;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,YAAYU,OAAM,MAAM;AACrD,eAAO,WAAW,IAAI,YAAYA,OAAM,IAAI;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,WAAW,SAAS,iBAAiB;AAC9D,kBAAU,WAAW,OAAO;AAC5B,YAAI,CAAC,iBAAiB;AACpB,cAAI,iBAAiB,qBAAqB,WAAW,UAAU,UAAU,UAAU;AACnF,eAAK,WAAW,cAAc;AAAA,QAChC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,WAAW,WAAW;AAClD,kBAAU,cAAc,SAAS;AACjC,YAAI,iBAAiB,qBAAqB,WAAW,UAAU,UAAU,UAAU;AACnF,aAAK,WAAW,cAAc;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,MAAMyE,QAAO;AAC3C,aAAK,gBAAgB,gBAAgBA;AACrC,aAAK,iBAAiB,IAAI;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,MAAMzD,QAAO;AAC3C,aAAK,gBAAgB,eAAeA;AACpC,aAAK,iBAAiB,IAAI;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,MAAMyD,QAAO;AACpC,aAAK,gBAAgB,SAASA;AAC9B,aAAK,iBAAiB,IAAI;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,MAAMzD,QAAO;AACxC,aAAK,gBAAgB,cAAcA;AACnC,aAAK,iBAAiB,IAAI;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,MAAM,OAAO;AACxC,YAAI,MAAM,aAAa,MAAM;AAC3B,eAAK,gBAAgB,cAAc,MAAM;AAAA,QAC3C;AACA,YAAI,MAAM,gBAAgB,MAAM;AAC9B,eAAK,gBAAgB,eAAe,MAAM;AAAA,QAC5C;AACA,YAAI,MAAM,SAAS,MAAM;AACvB,eAAK,gBAAgB,SAAS,MAAM;AAAA,QACtC;AACA,YAAI,MAAM,gBAAgB,MAAM;AAC9B,eAAK,gBAAgB,gBAAgB,MAAM;AAAA,QAC7C;AACA,aAAK,iBAAiB,IAAI;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OACA,SAAS,YAAY,WAAW;AAC9B,YAAIlD,KAAI;AACR,iBAASC,KAAI,GAAGA,KAAI,UAAU,SAAS,QAAQA,MAAK;AAClD,UAAAD,MAAK,UAAU,SAASC,EAAC,EAAE,QAAQA,OAAM,CAAC;AAC1C,UAAAD,MAAK;AAAA,QACP;AACA,eAAOA;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOuF;AAAA,EACT,EAAE,cAAc;AAEhB,MAAI,cAAc,CAAC;AACnB,WAAS,yBAAyBrD,OAAM,KAAK;AAC3C,gBAAYA,KAAI,IAAI;AAAA,EACtB;AACA,WAAS,qBAAqB,KAAK,IAAI,MAAM;AAC3C,QAAI,MAAM;AACV,QAAI,MAAM0E,SAAQ,GAAG,qBAAqB,MAAM,YAAY,GAAG,sBAAsB,IAAI;AAAA,MACvF,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,GACI,OAAO,SAAS,MAChB,UAAU,SAAS,iBACnB,YAAY,OAAO,eAAe,QAAQ,aAAa,KAAK,WAC5D,aAAa,OAAO,eAAe,QAAQ,cAAc,KAAK,YAC9D,YAAY,QAAQ,aAAa,KAAK,aAAa,GACnD,aAAa,QAAQ,cAAc,KAAK,cAAc,GACtD,MAAM,GACN,MAAM,GACNC,OAAM,IAAI,MAAM,YAAY,YAAY,MAAM,MAC9CC,QAAO,IAAI,OAAO,aAAa,aAAa,MAAM,MAClD,KAAK,aAAa,GAAG,GACrB3H,KAAI,IAAI,SAAS,IAAI,cAAc,MACnCC,KAAI,IAAI,UAAU,IAAI,eAAe,MACrCH,MAAK,GAAG,IAAI6H,SAAQ3H,IACpBD,MAAK,GAAG,IAAI2H,QAAOzH;AACvB,WAAO;AAAA,MACL,GAAGH;AAAA,MACH,GAAGC;AAAA,IACL;AAAA,EACF;AACA,WAAS,oBAAoB6E,IAAG;AAC9B,WAAO,eAAeA,EAAC,KAAK,iBAAiBA,EAAC,KAAK,oBAAoBA,EAAC;AAAA,EAC1E;AACA,WAAS,WAAW,WAAW3B,IAAG;AAChC,QAAI,UAAU,QAAQ;AACpB,gBAAU,OAAO,MAAM,UAAUA,KAAI,UAAU;AAAA,IACjD;AAAA,EACF;AACA,WAAS,QAAQ,WAAW;AAC1B,QAAI,UAAU,QAAQ;AACpB,gBAAU,OAAO,WAAW,YAAY,UAAU,MAAM;AAAA,IAC1D;AACA,WAAO,UAAU;AAAA,EACnB;AACA,WAAS,kBAAkB,IAAI;AAC7B,WAAO,GAAG;AAAA,EACZ;AACA,WAAS,gBAAgB2B,IAAG;AAC1B,WAAO,mBAAmB,WAAWA,EAAC;AAAA,EACxC;AACA,WAAS,iBAAiBA,IAAG;AAC3B,WAAO,mBAAmB,WAAWA,IAAGA,GAAE,WAAW,SAAUxD,IAAG;AAChE,UAAI,KAAKwD,GAAE,OAAOxD,EAAC;AACnB,MAAAwD,GAAE,SAAS,SAAS,IAAIA,GAAE,SAAS,YAAY;AAC/C,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,WAAS,mBAAmB,YAAYgD,SAAQ,eAAe1D,OAAM;AACnE,QAAIpE,KAAI,WAAW,GACfC,KAAI,WAAW;AACnB,QAAI6H,QAAO,uBAAuBA,QAAO,oBAAoB,WAAW;AACtE,MAAA9H,KAAI,KAAK,IAAI,WAAW,GAAG,CAAC;AAC5B,MAAAC,KAAI,KAAK,IAAI,WAAW,GAAG,CAAC;AAC5B,MAAAD,KAAI,KAAK,IAAIA,IAAG,cAAc,IAAIoE,MAAK,CAAC;AACxC,MAAAnE,KAAI,KAAK,IAAIA,IAAG,cAAc,IAAImE,MAAK,CAAC;AAAA,IAC1C;AACA,WAAO;AAAA,MACL,GAAGpE;AAAA,MACH,GAAGC;AAAA,IACL;AAAA,EACF;AACA,MAAI,yBAAyB,SAAU,kBAAkB;AACvD,IAAAT,WAAUuI,yBAAwB,gBAAgB;AAClD,QAAI,SAASrI,cAAaqI,uBAAsB;AAChD,aAASA,wBAAuB,gBAAgBxB,WAAU;AACxD,UAAI;AACJ,MAAA3G,iBAAgB,MAAMmI,uBAAsB;AAC5C,cAAQ,OAAO,KAAK,MAAM,gBAAgBxB,SAAQ;AAClD,YAAM,iBAAiB;AACvB,MAAA1G,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,IAAI;AACpE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,MAAM;AACpE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,MAAM;AACxE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,MAAM;AACzE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,MAAM;AACzE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,MAAM;AACpE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,yBAAyB,MAAM;AAC9E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,MAAM;AACzE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,MAAM;AACzE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,MAAM;AACpE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,MAAM;AACxE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,MAAM;AACxE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,cAAc;AAC9E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,wBAAwB,sBAAsB;AAC7F,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,WAAW;AACxE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,8BAA8B,6BAA6B;AAC1G,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,8BAA8B,6BAA6B;AAC1G,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,kBAAkB;AACrF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,kBAAkB;AACrF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,iBAAiB;AACnF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,2BAA2B,MAAM;AAChF,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,qBAAqB,MAAM;AAC1E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,MAAM;AACzE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,OAAO;AAAA,QACpD,MAAM,SAAS,KAAKmD,OAAM,YAAY;AACpC,iBAAO,MAAMA,OAAM,UAAU;AAAA,QAC/B;AAAA,QACA,MAAM,SAAS+E,MAAK,MAAM,YAAY;AACpC,iBAAO,MAAM,MAAM,UAAU;AAAA,QAC/B;AAAA,QACA,KAAK,SAAS,IAAI9G,IAAG;AACnB,iBAAO,KAAKA,EAAC;AAAA,QACf;AAAA,MACF,CAAC;AACD,MAAAqF,YAAWA,aAAY,CAAC;AACxB,YAAM,gBAAgB,eAAe,MAAM,aAAa,CAAC;AACzD,YAAM,oBAAoBA,aAAYA,UAAS,sBAAsB;AACrE,YAAM,0BAA0BA,YAAWA,UAAS,2BAA2B,2BAA2B;AAC1G,YAAM,eAAe,IAAI,aAAa;AACtC,YAAM,gBAAgB,IAAI,cAAczG,wBAAuB,KAAK,CAAC;AACrE,YAAM,cAAc,IAAI,YAAYA,wBAAuB,KAAK,GAAG,MAAM,aAAa;AACtF,YAAM,YAAY,WAAW,IAAI,oBAAoBA,wBAAuB,KAAK,CAAC,CAAC;AACnF,YAAM,mBAAmB;AAAA,QACvB,mBAAmB;AAAA,MACrB;AACA,YAAM,YAAY,WAAW,IAAI,iBAAiBA,wBAAuB,KAAK,GAAG,MAAM,aAAa,GAAG,MAAM,gBAAgB;AAC7H,YAAM,qBAAqB,IAAI,mBAAmBA,wBAAuB,KAAK,GAAG,MAAM,aAAa;AACpG,YAAM,qBAAqByG,aAAYA,UAAS,eAAe,CAAC;AAChE,YAAM,YAAY,WAAW,MAAM,oBAAoB,MAAM,kBAAkB;AAC/E,UAAIA,aAAYA,UAAS,eAAeA,UAAS,YAAY,QAAQ;AACnE,cAAM,YAAY,UAAUA,UAAS,YAAY,MAAM;AAAA,MACzD;AACA,YAAM,sBAAsB;AAC5B,YAAM,sBAAsB;AAC5B,UAAIA,UAAS,mBAAmB,OAAO;AACrC,YAAI;AACF,gBAAM,kBAAkB,IAAI,eAAe,SAAU,SAAS;AAC5D,gBAAI,UAAU,QAAQ,OAAO,SAAUzF,IAAG;AACxC,kBAAIkC,KAAI,MAAM,aAAalC,GAAE,QAAQ,iBAAiB;AACtD,kBAAIkC,MAAK,MAAM;AACb,oBAAIG,KAAI,MAAM,SAAS,YAAY,IAAIH,EAAC;AACxC,uBAAOG,KAAIA,GAAE,MAAMrC,GAAE,YAAY,SAASqC,GAAE,MAAMrC,GAAE,YAAY,SAAS;AAAA,cAC3E,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF,CAAC;AACD,oBAAQ,QAAQ,SAAU,IAAI;AAC5B,qBAAO,MAAM,WAAW,GAAG,MAAM;AAAA,YACnC,CAAC;AAAA,UACH,CAAC;AAAA,QACH,SAASA,IAAP;AACA,cAAI,6CAA6C;AAAA,QACnD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAN,cAAauH,yBAAwB,CAAC;AAAA,MACpC,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,SAAS,OAAOjH,IAAG;AACnD,YAAI,OAAO,QAAQ,qBAAqBsG,cAAa,aAAa;AAClE,YAAI,cAAc,cAAc,MAAM,KAAK;AAE3C,QAAAtG,GAAE,kBAAkB;AACpB,gBAAQ,KAAK,OAAO;AAAA,UAClB,GAAGA;AAAA,UACH;AAAA,QACF,CAAC;AACD,aAAK,KAAK,aAAa,QAAQ,WAAWA,EAAC;AAAA,MAC7C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcmH,SAAQ,SAAS;AAC7C,aAAK,YAAY,UAAUA,SAAQ,OAAO;AAAA,MAC5C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiBA,SAAQ;AACvC,aAAK,YAAY,aAAaA,OAAM;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,MAAM;AAChC,aAAK,YAAY,UAAU,KAAK,oBAAoB;AAAA,UAClD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,yBAAyB,mBAAmB;AAC1D,aAAK,YAAY,UAAU,KAAK,oBAAoB;AAAA,UAClD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,SAAS;AACtC,gBAAQ,cAAc,QAAQ,WAAW,YAAY,OAAO;AAAA,MAC9D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,IAAI,QAAQ;AACzC,YAAI,QAAQ;AACV,iBAAO,YAAY,EAAE;AAAA,QACvB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB,OAAO,IAAI;AAC/C,aAAK,oBAAoB,KAAK,EAAE,YAAY,EAAE;AAAA,MAChD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,0BAA0B,IAAI;AAC5C,aAAK,eAAe,IAAI,KAAK,aAAa,CAAC;AAAA,MAC7C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,IAAI;AACzC,YAAIjF,KAAI,CAAC;AACT,YAAI,GAAG,aAAa,KAAK,GAAG,aAAa,GAAG;AAC1C,cAAI,MAAM,GAAG,iBAAiB,wBAAwB;AACtD,gBAAM,UAAU,KAAK,MAAMA,IAAG,GAAG;AAAA,QACnC;AACA,eAAOA,GAAE,OAAO,SAAU,IAAI;AAC5B,iBAAO,GAAG,aAAa,KAAK,GAAG,aAAa;AAAA,QAC9C,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,OAAO,OAAO,eAAe;AAC3D,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI;AAC7B,eAAOkF,UAAS,EAAE;AAAA,MACpB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI,OAAO;AACpC,QAAAvF,UAAS,IAAI,KAAK;AAAA,MACpB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI,OAAO;AACpC,eAAOwF,UAAS,IAAI,KAAK;AAAA,MAC3B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,IAAI,OAAO;AACvC,QAAAvF,aAAY,IAAI,KAAK;AAAA,MACvB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,IAAI,OAAO;AACvC,QAAAwF,aAAY,IAAI,KAAK;AAAA,MACvB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,IAAInF,OAAM,OAAO;AAC5C,WAAG,aAAaA,OAAM,KAAK;AAAA,MAC7B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASoF,cAAa,IAAIpF,OAAM;AACrC,eAAO,GAAG,aAAaA,KAAI;AAAA,MAC7B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,IAAI,MAAM;AACtC,iBAASjC,MAAK,MAAM;AAClB,aAAG,aAAaA,IAAG,KAAKA,EAAC,CAAC;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,IAAI,SAAS;AAC3C,WAAG,mBAAmB,GAAG,gBAAgB,OAAO;AAAA,MAClD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASsH,IAAG,IAAI,OAAO,oBAAoBC,WAAU;AAC1D,YAAI,SAAS;AACb,YAAI,OAAO,SAASnG,MAAK,KAAK;AAC5B,cAAImG,aAAY,MAAM;AACpB,mBAAO,aAAa,GAAG,KAAK,OAAO,kBAAkB;AAAA,UACvD,OAAO;AACL,mBAAO,aAAa,GAAG,KAAK,OAAO,oBAAoBA,SAAQ;AAAA,UACjE;AAAA,QACF;AACA,YAAI,WAAW,EAAE,GAAG;AAClB,kBAAQ,IAAI,SAAUlG,KAAI;AACxB,mBAAO,KAAKA,GAAE;AAAA,UAChB,CAAC;AAAA,QACH,OAAO;AACL,eAAK,EAAE;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASmG,KAAI,IAAI,OAAOD,WAAU;AACvC,YAAI,SAAS;AACb,YAAI,WAAW,EAAE,GAAG;AAClB,kBAAQ,IAAI,SAAU,KAAK;AACzB,mBAAO,OAAO,aAAa,IAAI,KAAK,OAAOA,SAAQ;AAAA,UACrD,CAAC;AAAA,QACH,OAAO;AACL,eAAK,aAAa,IAAI,IAAI,OAAOA,SAAQ;AAAA,QAC3C;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,IAAI,OAAO,eAAe,SAAS,QAAQ;AACjE,aAAK,aAAa,QAAQ,IAAI,OAAO,eAAe,SAAS,MAAM;AAAA,MACrE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB,IAAI;AAC1C,eAAO,qBAAqB,EAAE;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,IAAI;AAC5B,YAAI,MAAM;AACV,YAAI,YAAY,KAAK,aAAa;AAClC,YAAI,MAAM,KAAK,YAAY,GAAG,GAC1B,KAAK,OAAO,aAAa,IAAI,iBAAiB,YAAY,IAAI,eAAe,MAC7E,qBAAqB,SAASE,oBAAmB,cAAc;AACjE,cAAI,gBAAgB,QAAQ,iBAAiB,SAAS,SAAS,aAAa,YAAY,KAAK,aAAa,aAAa,IAAI;AACzH,gBAAI,KAAK,aAAa;AACtB,gBAAI,KAAK,aAAa;AAAA,UACxB;AAAA,QACF;AACA,eAAO,MAAM,MAAM;AACjB,cAAI,KAAK,GAAG;AACZ,cAAI,KAAK,GAAG;AACZ,6BAAmB,EAAE;AACrB,eAAK,GAAG,iBAAiB,YAAY,OAAO,GAAG;AAAA,QACjD;AACA,YAAI,aAAa,SAAS,UAAU,YAAY,KAAK,UAAU,aAAa,IAAI;AAC9E,cAAI,KAAK,IAAI,gBAAgB,OAAO,KAAK,SAAS,IAAI,cAAc,iBAAiB,IAAI,QACzF1H,KAAI,KAAK,SAAS,KAAK,iBAAiB;AACxC,cAAIA,OAAM,YAAYA,OAAM,SAAS,OAAO,YAAY,OAAO,OAAO;AACpE,gBAAI,KAAK,UAAU;AACnB,gBAAI,KAAK,UAAU;AAAA,UACrB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,IAAI;AAC1B,YAAI,MAAM;AACV,YAAI,IAAI,eAAe,MAAM;AAC3B,iBAAO,WAAW,EAAE;AAAA,QACtB,WAAW,IAAI,SAAS,IAAI,MAAM,SAAS;AACzC,iBAAO,mBAAmB,GAAG;AAAA,QAC/B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,YAAI,MAAM;AACV,YAAI,IAAI,cAAc,MAAM;AAC1B,iBAAO;AAAA,YACL,GAAG,WAAW,IAAI,UAAU;AAAA,YAC5B,GAAG,WAAW,IAAI,SAAS;AAAA,UAC7B;AAAA,QACF,WAAW,IAAI,KAAK,IAAI,EAAE,SAAS;AACjC,iBAAO,cAAc,GAAG;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS2H,UAAS,IAAI,MAAM;AACjC,YAAIf,SAAQ,OAAO,gBAAgB,MAAM,WAAW;AAClD,iBAAO,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,IAAI;AAAA,QACzD,OAAO;AACL,iBAAO,GAAG,aAAa,IAAI;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,OAAO;AACzC,YAAI,KAAK,KAAK,YAAY,MAAM,IAAI,wBAAwB;AAC5D,eAAO,MAAM,GAAG,SAAS,IAAI,GAAG,CAAC,IAAI,MAAM;AAAA,MAC7C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASgB,aAAY,KAAK,MAAM;AACrC,YAAI,MAAM;AACV,YAAI,UAAU,WAAW,GAAG;AAC1B,cAAI,CAAC,SAAS,GAAG,GAAG;AAClB,gBAAI,WAAW,SAAS,uBAAuB;AAC/C,qBAAS,YAAY,GAAG;AACxB,mBAAO,UAAU,SAAS,UAAU;AAAA,UACtC;AACA,gBAAM,UAAU,SAAS,iBAAiB,GAAG,CAAC;AAAA,QAChD,OAAO;AACL,gBAAM,UAAU,IAAI,iBAAiB,IAAI,CAAC;AAAA,QAC5C;AACA,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI5H,IAAG;AACjC,YAAI,MAAM;AACV,YAAI,MAAM,OAAOA,GAAE,IAAI;AACvB,YAAI,MAAM,MAAMA,GAAE,IAAI;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,SAAS,WAAW;AAC/C,YAAI,WAAW;AACb,eAAK,gBAAgB,SAAS,uBAAuB;AAAA,QACvD,OAAO;AACL,eAAK,aAAa,SAAS,yBAAyB,MAAM;AAAA,QAC5D;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI;AAC9B,YAAIG,KAAI,KAAK,aAAa,IAAI,uBAAuB;AACrD,eAAOA,MAAK,QAAQA,OAAM;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,IAAI;AAClC,YAAI,QAAQ,KAAK,YAAY,EAAE;AAC/B,aAAK,aAAa,IAAI,CAAC,KAAK;AAC5B,eAAO,CAAC;AAAA,MACV;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB;AACtC,YAAI,aAAa,SAAS0H,YAAW,OAAO9H,IAAG;AAC7C,cAAI,CAACA,GAAE,oBAAoBA,GAAE,mBAAmB,MAAM;AACpD,gBAAI,mBAAmB+H,YAAW,eAAe/H,EAAC,GAAG,oBAAoB,KAAK,aAAa,GAAG,IAAI;AAClG,iBAAK,KAAK,OAAO,iBAAiB,IAAI,UAAU,YAAYA,EAAC;AAAA,UAC/D;AAAA,QACF;AACA,aAAK,kBAAkB,WAAW,KAAK,MAAM,sBAAsB;AACnE,aAAK,qBAAqB,WAAW,KAAK,MAAM,0BAA0B;AAC1E,aAAK,gBAAgB,WAAW,KAAK,MAAM,oBAAoB;AAC/D,aAAK,mBAAmB,WAAW,KAAK,MAAM,wBAAwB;AACtE,YAAI,kBAAkB,SAASgI,iBAAgB,OAAOhI,IAAG;AACvD,cAAI,KAAK,eAAeA,EAAC,EAAE;AAC3B,cAAI,GAAG,OAAO,GAAG,IAAI,WAAW;AAC9B,gBAAI,YAAY,GAAG,IAAI;AACvB,gBAAI,aAAa,UAAU;AAC3B,iBAAK,kBAAkB,WAAW,KAAK;AACvC,gBAAI,OAAO;AACT,mBAAK,SAAS,WAAW,QAAQ,KAAK,gBAAgB;AACtD,mBAAK,SAAS,WAAW,QAAQ,KAAK,gBAAgB;AAAA,YACxD,OAAO;AACL,mBAAK,YAAY,WAAW,QAAQ,KAAK,gBAAgB;AACzD,mBAAK,YAAY,WAAW,QAAQ,KAAK,gBAAgB;AAAA,YAC3D;AACA,iBAAK,KAAK,QAAQ,6BAA6B,2BAA2B,GAAG,IAAI,UAAU,YAAYA,EAAC;AAAA,UAC1G;AAAA,QACF;AACA,aAAK,sBAAsB,gBAAgB,KAAK,MAAM,IAAI;AAC1D,aAAK,qBAAqB,gBAAgB,KAAK,MAAM,KAAK;AAC1D,YAAI,wBAAwB,SAASiI,uBAAsB,OAAOjI,IAAG;AACnE,cAAI,KAAK,eAAeA,EAAC,EAAE;AAC3B,cAAI,GAAG,OAAO,GAAG,IAAI,WAAW;AAC9B,iBAAK,KAAK,QAAQ,2BAA2B,4BAA4B,GAAG,IAAI,UAAU,YAAYA,EAAC;AAAA,UACzG;AAAA,QACF;AACA,aAAK,oBAAoB,sBAAsB,KAAK,MAAM,IAAI;AAC9D,aAAK,sBAAsB,sBAAsB,KAAK,MAAM,KAAK;AACjE,aAAK,wBAAwB,SAAUA,IAAG;AACxC,cAAI,KAAK,eAAeA,EAAC,EAAE;AAC3B,cAAI,GAAG,OAAO,GAAG,IAAI,WAAW;AAC9B,iBAAK,KAAK,8BAA8B,GAAG,IAAI,UAAU,YAAYA,EAAC;AAAA,UACxE;AAAA,QACF,EAAE,KAAK,IAAI;AACX,YAAI,WAAW,SAASkI,UAAS,OAAOlI,IAAG,iBAAiB;AAC1D,cAAI,CAACA,GAAE,oBAAoBA,GAAE,mBAAmB,MAAM;AACpD,iBAAK,KAAK,OAAO,gBAAgB,IAAI,UAAUA,EAAC;AAAA,UAClD;AAAA,QACF;AACA,aAAK,iBAAiB,SAAS,KAAK,MAAM,oBAAoB;AAC9D,aAAK,oBAAoB,SAAS,KAAK,MAAM,wBAAwB;AACrE,YAAI,iBAAiB,SAASmI,gBAAe,OAAOnI,IAAG;AACrD,cAAI,KAAK,eAAeA,EAAC;AACzB,cAAI,GAAG,OAAO,GAAG,IAAI,UAAU;AAC7B,iBAAK,iBAAiB,GAAG,IAAI,UAAU,KAAK;AAC5C,iBAAK,KAAK,QAAQ,2BAA2B,yBAAyB,GAAG,IAAI,UAAUA,EAAC;AAAA,UAC1F;AAAA,QACF;AACA,aAAK,qBAAqB,eAAe,KAAK,MAAM,IAAI;AACxD,aAAK,oBAAoB,eAAe,KAAK,MAAM,KAAK;AACxD,YAAI,uBAAuB,SAASoI,sBAAqB,OAAOpI,IAAG;AACjE,cAAI,KAAK,eAAeA,EAAC;AACzB,cAAI,GAAG,OAAO,GAAG,IAAI,UAAU;AAC7B,iBAAK,KAAK,QAAQ,yBAAyB,0BAA0B,GAAG,IAAI,UAAUA,EAAC;AAAA,UACzF;AAAA,QACF;AACA,aAAK,mBAAmB,qBAAqB,KAAK,MAAM,IAAI;AAC5D,aAAK,qBAAqB,qBAAqB,KAAK,MAAM,KAAK;AAC/D,YAAI,UAAU,SAAU,QAAQA,IAAG;AACjC,cAAI,iBAAiB+H,YAAW,eAAe/H,EAAC,GAAG,kBAAkB,KAAK,aAAa,GAAG,IAAI;AAC9F,cAAI,UAAU,eAAe,IAAI;AACjC,cAAI,SAAS;AACX,iBAAK,kBAAkB,SAAS,QAAQA,EAAC;AAAA,UAC3C;AAAA,QACF,EAAE,KAAK,IAAI;AACX,aAAK,gBAAgB,QAAQ,KAAK,MAAMqI,YAAW;AACnD,aAAK,mBAAmB,QAAQ,KAAK,MAAM,eAAe;AAC1D,aAAK,cAAc,QAAQ,KAAK,MAAM,SAAS;AAC/C,aAAK,iBAAiB,QAAQ,KAAK,MAAM,aAAa;AACtD,YAAI,gBAAgB,SAASC,eAAc,OAAOtI,IAAG;AACnD,cAAI,iBAAiB+H,YAAW,eAAe/H,EAAC,GAAG,kBAAkB,KAAK,aAAa,GAAG,IAAI;AAC9F,cAAI,UAAU,eAAe,IAAI;AACjC,cAAI,SAAS;AACX,iBAAK,gBAAgB,SAAS,KAAK;AAAA,UACrC;AAAA,QACF;AACA,aAAK,oBAAoB,cAAc,KAAK,MAAM,IAAI;AACtD,aAAK,mBAAmB,cAAc,KAAK,MAAM,KAAK;AACtD,YAAI,gBAAgB,SAASuI,eAAc,OAAOvI,IAAG,QAAQ;AAC3D,cAAI,CAACA,GAAE,kBAAkB;AACvB,iBAAK,KAAKA,GAAE,WAAW,IAAI,sBAAsB,yBAAyB,QAAQA,EAAC;AAAA,UACrF;AAAA,QACF;AACA,aAAK,gBAAgB,cAAc,KAAK,MAAM,mBAAmB;AACjE,YAAI,cAAc,SAASwI,aAAY,OAAOxI,IAAG,QAAQ;AACvD,cAAI,CAACA,GAAE,kBAAkB;AACvB,iBAAK,KAAK,mBAAmB,QAAQA,EAAC;AAAA,UACxC;AAAA,QACF;AACA,aAAK,cAAc,YAAY,KAAK,MAAM,iBAAiB;AAC3D,YAAI,iBAAiB,SAASyI,gBAAe,OAAOzI,IAAG,QAAQ;AAC7D,cAAI,CAACA,GAAE,kBAAkB;AACvB,iBAAK,KAAK,uBAAuB,QAAQA,EAAC;AAAA,UAC5C;AAAA,QACF;AACA,aAAK,iBAAiB,eAAe,KAAK,MAAM,qBAAqB;AACrE,YAAI,gBAAgB,SAAS0I,eAAc,OAAO1I,IAAG;AACnD,eAAK,KAAK,QAAQ,2BAA2B,yBAAyB,eAAeA,EAAC,GAAGA,EAAC;AAAA,QAC5F;AACA,aAAK,qBAAqB,cAAc,KAAK,MAAM,IAAI;AACvD,aAAK,oBAAoB,cAAc,KAAK,MAAM,KAAK;AACvD,aAAK,oBAAoB,SAAUA,IAAG;AACpC,eAAK,KAAK,0BAA0B,eAAeA,EAAC,GAAGA,EAAC;AAAA,QAC1D,EAAE,KAAK,IAAI;AACX,aAAK,kBAAkB,SAAUA,IAAG;AAClC,eAAK,KAAK,wBAAwB,eAAeA,EAAC,GAAGA,EAAC;AAAA,QACxD,EAAE,KAAK,IAAI;AACX,aAAK,oBAAoB,SAAUA,IAAG;AACpC,eAAK,KAAK,0BAA0B,eAAeA,EAAC,GAAGA,EAAC;AAAA,QAC1D,EAAE,KAAK,IAAI;AACX,aAAK,sBAAsB,SAAUA,IAAG;AACtC,eAAK,KAAK,2BAA2B,eAAeA,EAAC,GAAGA,EAAC;AAAA,QAC3D,EAAE,KAAK,IAAI;AAAA,MACb;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB;AACtC,YAAI,mBAAmB,KAAK,aAAa;AACzC,aAAK,aAAa,GAAG,kBAAkBqI,cAAa,kBAAkB,KAAK,aAAa;AACxF,aAAK,aAAa,GAAG,kBAAkB,iBAAiB,kBAAkB,KAAK,gBAAgB;AAC/F,aAAK,aAAa,GAAG,kBAAkB,WAAW,kBAAkB,KAAK,WAAW;AACpF,aAAK,aAAa,GAAG,kBAAkB,eAAe,kBAAkB,KAAK,cAAc;AAC3F,aAAK,aAAa,GAAG,kBAAkBA,cAAa,oBAAoB,KAAK,eAAe;AAC5F,aAAK,aAAa,GAAG,kBAAkB,iBAAiB,oBAAoB,KAAK,kBAAkB;AACnG,aAAK,aAAa,GAAG,kBAAkB,WAAW,oBAAoB,KAAK,aAAa;AACxF,aAAK,aAAa,GAAG,kBAAkB,eAAe,oBAAoB,KAAK,gBAAgB;AAC/F,aAAK,aAAa,GAAG,kBAAkBA,cAAa,mBAAmB,KAAK,cAAc;AAC1F,aAAK,aAAa,GAAG,kBAAkB,iBAAiB,mBAAmB,KAAK,iBAAiB;AACjG,aAAK,aAAa,GAAG,kBAAkBA,cAAa,KAAK,yBAAyB,KAAK,aAAa;AACpG,aAAK,aAAa,GAAG,kBAAkB,WAAW,KAAK,yBAAyB,KAAK,WAAW;AAChG,aAAK,aAAa,GAAG,kBAAkB,eAAe,KAAK,yBAAyB,KAAK,cAAc;AACvG,aAAK,aAAa,GAAG,kBAAkBM,kBAAiB,oBAAoB,KAAK,mBAAmB;AACpG,aAAK,aAAa,GAAG,kBAAkBC,iBAAgB,oBAAoB,KAAK,kBAAkB;AAClG,aAAK,aAAa,GAAG,kBAAkB,mBAAmB,oBAAoB,KAAK,qBAAqB;AACxG,aAAK,aAAa,GAAG,kBAAkB,eAAe,oBAAoB,KAAK,iBAAiB;AAChG,aAAK,aAAa,GAAG,kBAAkBC,kBAAiB,oBAAoB,KAAK,mBAAmB;AACpG,aAAK,aAAa,GAAG,kBAAkBF,kBAAiB,mBAAmB,KAAK,kBAAkB;AAClG,aAAK,aAAa,GAAG,kBAAkBC,iBAAgB,mBAAmB,KAAK,iBAAiB;AAChG,aAAK,aAAa,GAAG,kBAAkB,eAAe,mBAAmB,KAAK,gBAAgB;AAC9F,aAAK,aAAa,GAAG,kBAAkBC,kBAAiB,mBAAmB,KAAK,kBAAkB;AAClG,aAAK,aAAa,GAAG,kBAAkBF,kBAAiB,kBAAkB,KAAK,iBAAiB;AAChG,aAAK,aAAa,GAAG,kBAAkBC,iBAAgB,kBAAkB,KAAK,gBAAgB;AAC9F,aAAK,aAAa,GAAG,kBAAkBD,kBAAiB,0BAA0B,KAAK,kBAAkB;AACzG,aAAK,aAAa,GAAG,kBAAkBC,iBAAgB,0BAA0B,KAAK,iBAAiB;AACvG,aAAK,aAAa,GAAG,kBAAkB,iBAAiB,0BAA0B,KAAK,iBAAiB;AACxG,aAAK,aAAa,GAAG,kBAAkB,eAAe,0BAA0B,KAAK,eAAe;AACpG,aAAK,aAAa,GAAG,kBAAkBC,kBAAiB,0BAA0B,KAAK,iBAAiB;AACxG,aAAK,aAAa,GAAG,kBAAkB,mBAAmB,0BAA0B,KAAK,mBAAmB;AAAA,MAC9G;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,wBAAwB;AACtC,YAAI,mBAAmB,KAAK,aAAa;AACzC,YAAI,kBAAkB;AACpB,eAAK,aAAa,IAAI,kBAAkBR,cAAa,KAAK,eAAe;AACzE,eAAK,aAAa,IAAI,kBAAkB,iBAAiB,KAAK,kBAAkB;AAChF,eAAK,aAAa,IAAI,kBAAkB,WAAW,KAAK,aAAa;AACrE,eAAK,aAAa,IAAI,kBAAkB,eAAe,KAAK,gBAAgB;AAC5E,eAAK,aAAa,IAAI,kBAAkBA,cAAa,KAAK,cAAc;AACxE,eAAK,aAAa,IAAI,kBAAkB,iBAAiB,KAAK,iBAAiB;AAC/E,eAAK,aAAa,IAAI,kBAAkBA,cAAa,KAAK,aAAa;AACvE,eAAK,aAAa,IAAI,kBAAkB,iBAAiB,KAAK,gBAAgB;AAC9E,eAAK,aAAa,IAAI,kBAAkB,WAAW,KAAK,WAAW;AACnE,eAAK,aAAa,IAAI,kBAAkB,eAAe,KAAK,cAAc;AAC1E,eAAK,aAAa,IAAI,kBAAkBA,cAAa,KAAK,aAAa;AACvE,eAAK,aAAa,IAAI,kBAAkB,WAAW,KAAK,WAAW;AACnE,eAAK,aAAa,IAAI,kBAAkB,eAAe,KAAK,cAAc;AAC1E,eAAK,aAAa,IAAI,kBAAkBM,kBAAiB,KAAK,mBAAmB;AACjF,eAAK,aAAa,IAAI,kBAAkBC,iBAAgB,KAAK,kBAAkB;AAC/E,eAAK,aAAa,IAAI,kBAAkB,mBAAmB,KAAK,qBAAqB;AACrF,eAAK,aAAa,IAAI,kBAAkB,eAAe,KAAK,iBAAiB;AAC7E,eAAK,aAAa,IAAI,kBAAkBC,kBAAiB,KAAK,mBAAmB;AACjF,eAAK,aAAa,IAAI,kBAAkBF,kBAAiB,KAAK,kBAAkB;AAChF,eAAK,aAAa,IAAI,kBAAkBC,iBAAgB,KAAK,iBAAiB;AAC9E,eAAK,aAAa,IAAI,kBAAkB,eAAe,KAAK,gBAAgB;AAC5E,eAAK,aAAa,IAAI,kBAAkBC,kBAAiB,KAAK,kBAAkB;AAChF,eAAK,aAAa,IAAI,kBAAkBF,kBAAiB,KAAK,iBAAiB;AAC/E,eAAK,aAAa,IAAI,kBAAkBC,iBAAgB,KAAK,gBAAgB;AAC7E,eAAK,aAAa,IAAI,kBAAkBE,mBAAkB,KAAK,kBAAkB;AACjF,eAAK,aAAa,IAAI,kBAAkB,iBAAiB,KAAK,iBAAiB;AAC/E,eAAK,aAAa,IAAI,kBAAkB,iBAAiB,KAAK,iBAAiB;AAC/E,eAAK,aAAa,IAAI,kBAAkB,eAAe,KAAK,eAAe;AAC3E,eAAK,aAAa,IAAI,kBAAkBD,kBAAiB,KAAK,iBAAiB;AAC/E,eAAK,aAAa,IAAI,kBAAkB,mBAAmB,KAAK,mBAAmB;AAAA,QACrF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,cAAc;AACzC,YAAI,SAAS;AACb,YAAI,iBAAiB,YAAY,iBAAiB,SAAS,MAAM;AAC/D,gBAAM,IAAI,MAAM,2DAA2D;AAAA,QAC7E;AACA,aAAK,sBAAsB;AAC3B,YAAI;AACJ,YAAI,KAAK,eAAe,MAAM;AAC5B,wBAAc,KAAK,YAAY,MAAM;AAAA,QACvC;AACA,aAAK,aAAa,cAAc,qBAAqBpJ,MAAK,EAAE,QAAQ,KAAK,EAAE,CAAC;AAC5E,YAAI,mBAAmB,KAAK,aAAa;AACzC,YAAI,oBAAoB,MAAM;AAC5B,2BAAiB,gBAAgB,mBAAmB;AACpD,cAAI,WAAW,UAAU,iBAAiB,UAAU,EAAE,OAAO,SAAU,IAAI;AACzE,mBAAO,MAAM,SAAS,OAAO,SAAS,IAAI,eAAe,KAAK,OAAO,SAAS,IAAI,cAAc,KAAK,OAAO,SAAS,IAAI,aAAa,KAAK,GAAG,gBAAgB,GAAG,aAAa,iBAAiB,KAAK;AAAA,UACtM,CAAC;AACD,kBAAQ,UAAU,SAAU,IAAI;AAC9B,yBAAa,YAAY,EAAE;AAAA,UAC7B,CAAC;AAAA,QACH;AACA,aAAKsJ,iBAAgB9B,wBAAuB,SAAS,GAAG,gBAAgB,IAAI,EAAE,KAAK,MAAM,YAAY;AACrG,aAAK,gBAAgB,eAAe,YAAY;AAChD,YAAI,KAAK,gBAAgB,MAAM;AAC7B,eAAK,sBAAsB;AAAA,QAC7B;AACA,YAAI,KAAK,eAAe,MAAM;AAC5B,eAAK,YAAY,WAAW,IAAI,oBAAoB,IAAI,CAAC;AACzD,eAAK,YAAY,WAAW,IAAI,iBAAiB,MAAM,KAAK,aAAa,GAAG,KAAK,gBAAgB;AACjG,eAAK,qBAAqB,IAAI,mBAAmB,MAAM,KAAK,aAAa;AACzE,eAAK,YAAY,WAAW,KAAK,oBAAoB,KAAK,kBAAkB;AAC5E,cAAI,eAAe,MAAM;AACvB,iBAAK,YAAY,WAAW,WAAW;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ;AACtB,aAAK8B,iBAAgB9B,wBAAuB,SAAS,GAAG,SAAS,IAAI,EAAE,KAAK,IAAI;AAChF,YAAI,KAAK,iBAAiB;AACxB,eAAK,gBAAgB,WAAW;AAAA,QAClC;AACA,YAAI,YAAY,KAAK,aAAa;AAClC,YAAI,MAAM,UAAU,iBAAiB,CAAC,0BAA0B,mBAAmB,oBAAoB,gBAAgB,EAAE,KAAK,GAAG,CAAC;AAClI,gBAAQ,KAAK,SAAU,IAAI;AACzB,iBAAO,GAAG,cAAc,GAAG,WAAW,YAAY,EAAE;AAAA,QACtD,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASZ,WAAU;AACxB,aAAK,sBAAsB;AAC3B,YAAI,KAAK,eAAe,MAAM;AAC5B,eAAK,YAAY,MAAM;AAAA,QACzB;AACA,aAAK,mBAAmB;AACxB,aAAK0C,iBAAgB9B,wBAAuB,SAAS,GAAG,WAAW,IAAI,EAAE,KAAK,IAAI;AAAA,MACpF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,IAAIlB,gBAAe;AAC1C,YAAI,KAAK,mBAAmB,MAAM;AAChC,eAAK,gBAAgB,UAAU,EAAE;AAAA,QACnC;AACA,aAAK,wBAAwB,EAAE;AAC/B,aAAKgD,iBAAgB9B,wBAAuB,SAAS,GAAG,YAAY,IAAI,EAAE,KAAK,MAAM,IAAIlB,cAAa;AAAA,MACxG;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB;AACnC,YAAI,SAAS;AACb,iBAAS,OAAO,UAAU,QAAQ,KAAK,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACrF,aAAG,IAAI,IAAI,UAAU,IAAI;AAAA,QAC3B;AACA,gBAAQ,IAAI,SAAU,KAAK;AACzB,iBAAO,OAAO,cAAc,IAAI,GAAG;AAAA,QACrC,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB;AACnC,aAAK,cAAc,MAAM;AAAA,MAC3B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,0BAA0B;AACxC,YAAI,SAAS;AACb,iBAAS,QAAQ,UAAU,QAAQ,KAAK,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC3F,aAAG,KAAK,IAAI,UAAU,KAAK;AAAA,QAC7B;AACA,gBAAQ,IAAI,SAAU,KAAK;AACzB,iBAAO,OAAO,cAAc,OAAO,GAAG;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB;AACpC,YAAI,SAAS;AACb,iBAAS,QAAQ,UAAU,QAAQ,KAAK,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC3F,aAAG,KAAK,IAAI,UAAU,KAAK;AAAA,QAC7B;AACA,gBAAQ,IAAI,SAAU,KAAK;AACzB,iBAAO,OAAO,cAAc,OAAO,GAAG;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,MAAM;AACnC,YAAI;AACJ,iBAAS,QAAQ,UAAU,QAAQ,MAAM,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAChH,cAAI,QAAQ,CAAC,IAAI,UAAU,KAAK;AAAA,QAClC;AACA,SAAC,wBAAwB,KAAK,oBAAoB,eAAe,MAAM,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC;AAAA,MAClH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB;AACpC,YAAI;AACJ,SAAC,yBAAyB,KAAK,oBAAoB,oBAAoB,MAAM,wBAAwB,SAAS;AAAA,MAChH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,OAAO;AACvC,YAAI;AACJ,iBAAS,QAAQ,UAAU,QAAQ,MAAM,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAChH,cAAI,QAAQ,CAAC,IAAI,UAAU,KAAK;AAAA,QAClC;AACA,SAAC,yBAAyB,KAAK,oBAAoB,kBAAkB,MAAM,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC;AAAA,MACxH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe5D,OAAM;AACnC,aAAK,mBAAmB,eAAeA,KAAI;AAAA,MAC7C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAUnC,IAAG,qBAAqB;AAChD,gBAAQA,IAAG,mBAAmB;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS0C,QAAO,SAAS,UAAU,cAAc;AACtD,YAAI,YAAY,KAAK,MAAM,OAAO;AAClC,YAAI,KAAK,iBAAiB,SAAS,GAAG;AACpC,eAAK,iBAAiB,SAAS,EAAE,GAAG,MAAM,YAAY,YAAY,WAAW;AAC7E,eAAK,iBAAiB,SAAS,EAAE,GAAG,MAAM,kBAAkB;AAC5D,iBAAO,KAAKqG,iBAAgB9B,wBAAuB,SAAS,GAAG,UAAU,IAAI,EAAE,KAAK,MAAM,SAAS,UAAU,YAAY;AAAA,QAC3H;AACA,eAAO;AAAA,UACL,GAAG,oBAAI,IAAI;AAAA,UACX,GAAG,oBAAI,IAAI;AAAA,QACb;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OACA,SAAS,gBAAgBjD,IAAG,OAAO;AACjC,YAAI,eAAeA,EAAC,GAAG;AACrB,UAAAA,GAAE,SAAS,SAAS,gBAAgBA,EAAC,GAAG,KAAK;AAAA,QAC/C,WAAW,oBAAoBA,EAAC,GAAG;AACjC,UAAAA,GAAE,SAAS,SAAS,qBAAqBA,EAAC,GAAG,KAAK;AAAA,QACpD,WAAW,gBAAgBA,EAAC,GAAG;AAC7B,UAAAA,GAAE,SAAS,SAAS,iBAAiBA,EAAC,GAAG,KAAK;AAAA,QAChD,OAAO;AACL,gBAAM,6CAA6CA,GAAE,OAAO;AAAA,QAC9D;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmBA,IAAG,OAAO;AAC3C,YAAI,eAAeA,EAAC,GAAG;AACrB,UAAAA,GAAE,SAAS,YAAY,gBAAgBA,EAAC,GAAG,KAAK;AAAA,QAClD,WAAW,oBAAoBA,EAAC,GAAG;AACjC,UAAAA,GAAE,SAAS,YAAY,qBAAqBA,EAAC,GAAG,KAAK;AAAA,QACvD,WAAW,gBAAgBA,EAAC,GAAG;AAC7B,UAAAA,GAAE,SAAS,YAAY,iBAAiBA,EAAC,GAAG,KAAK;AAAA,QACnD,OAAO;AACL,gBAAM,kDAAkDA,GAAE,OAAO;AAAA,QACnE;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcA,IAAGnF,SAAQ,SAAS;AAChD,YAAI,eAAemF,EAAC,GAAG;AACrB,0BAAgBA,EAAC;AACjB,cAAI,KAAKA,GAAE,UAAU,MAAM;AAC3B,UAAAA,GAAE,OAAO,MAAM,OAAO,GAAG,IAAInF,QAAO,EAAE,OAAO;AAC7C,UAAAmF,GAAE,OAAO,MAAM,MAAM,GAAG,IAAInF,QAAO,EAAE,OAAO;AAAA,QAC9C,WAAW,oBAAoBmF,EAAC,GAAG;AACjC,cAAI,OAAO,MAAMnF,QAAO,EAAE,IAAI,CAAC,KAAK,MAAMA,QAAO,EAAE,IAAI,CAAC,IAAI,UAAU,MAAMA,QAAO,EAAE,IAAI,IAAI,MAAMA,QAAO,EAAE,IAAI,IAAI,OAAOA,QAAO,EAAE,KAAK,CAAC,EAAE,IAAI,MAAMA,QAAO,EAAE,KAAK,CAAC,EAAE,IAAI,OAAOA,QAAO,EAAE,IAAI,IAAI,MAAMA,QAAO,EAAE,IAAI,IAAI,OAAOA,QAAO,EAAE,KAAK,CAAC,EAAE,IAAI,MAAMA,QAAO,EAAE,KAAK,CAAC,EAAE,IAAI;AACjR,0BAAgBmF,IAAG,MAAMnF,SAAQ,OAAO;AAAA,QAC1C,WAAW,gBAAgBmF,EAAC,GAAG;AAC7B,2BAAiBA,EAAC;AAClB,cAAI,MAAMA,GAAE,UAAU,MAAM;AAC5B,UAAAA,GAAE,OAAO,MAAM,OAAO,IAAI,IAAInF,QAAO,EAAE,OAAO;AAC9C,UAAAmF,GAAE,OAAO,MAAM,MAAM,IAAI,IAAInF,QAAO,EAAE,OAAO;AAAA,QAC/C,OAAO;AACL,gBAAM,sCAAsCmF,GAAE,OAAO;AAAA,QACvD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBA,IAAGyC,UAAS;AAC5C,YAAIrG,KAAIqG,WAAU,UAAU;AAC5B,iBAASpD,GAAE,IAAI;AACb,cAAI,MAAM,MAAM;AACd,eAAG,MAAM,UAAUjD;AAAA,UACrB;AAAA,QACF;AACA,YAAI,eAAe4D,EAAC,GAAG;AACrB,UAAAX,GAAE,gBAAgBW,EAAC,CAAC;AAAA,QACtB,WAAW,gBAAgBA,EAAC,GAAG;AAC7B,UAAAX,GAAE,iBAAiBW,EAAC,CAAC;AAAA,QACvB,WAAW,oBAAoBA,EAAC,GAAG;AACjC,UAAAX,GAAEW,GAAE,IAAI;AAAA,QACV;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBA,IAAGxD,IAAG;AACpC,YAAI,eAAewD,EAAC,GAAG;AACrB,UAAAA,GAAE,SAAS,eAAe,gBAAgBA,EAAC,GAAG,KAAK,aAAa,CAAC;AAAA,QACnE,WAAW,gBAAgBA,EAAC,GAAG;AAC7B,UAAAA,GAAE,SAAS,eAAe,iBAAiBA,EAAC,GAAG,KAAK,aAAa,CAAC;AAAA,QACpE,WAAW,oBAAoBA,EAAC,GAAG;AACjC,eAAK,eAAe,qBAAqBA,EAAC,GAAGxD,GAAE,UAAU,MAAM;AAAA,QACjE;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgBwD,IAAG,OAAO;AACxC,YAAI;AACJ,YAAI,eAAeA,EAAC,GAAG;AACrB,mBAAS,gBAAgBA,EAAC;AAAA,QAC5B,WAAW,gBAAgBA,EAAC,GAAG;AAC7B,mBAAS,iBAAiBA,EAAC;AAAA,QAC7B,WAAW,oBAAoBA,EAAC,GAAG;AACjC,mBAAS,qBAAqBA,EAAC;AAAA,QACjC;AACA,YAAI,UAAU,MAAM;AAClB,cAAI,KAAK,cAAc,MAAM;AAC3B,gBAAI,OAAO;AACT,mBAAK,SAAS,QAAQ,KAAK,UAAU;AAAA,YACvC,OAAO;AACL,mBAAK,YAAY,QAAQ,KAAK,UAAU;AAAA,YAC1C;AAAA,UACF;AACA,eAAK,SAASA,GAAE,WAAW,KAAK;AAAA,QAClC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAeA,IAAG;AAChC,YAAI,eAAeA,EAAC,GAAG;AACrB,cAAI,OAAO,gBAAgBA,EAAC;AAC5B,eAAK,WAAW,YAAY,IAAI;AAChC,iBAAOA,GAAE;AACT,iBAAOA,GAAE;AAAA,QACX,WAAW,eAAeA,EAAC,KAAK,iBAAiBA,EAAC,KAAK,oBAAoBA,EAAC,GAAG;AAC7E,4BAAkBA,EAAC;AAAA,QACrB,WAAW,gBAAgBA,EAAC,GAAG;AAC7B,cAAI,OAAO,iBAAiBA,EAAC;AAC7B,eAAK,WAAW,YAAY,IAAI;AAChC,iBAAOA,GAAE;AACT,iBAAOA,GAAE;AAAA,QACX;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYA,IAAG,WAAW,YAAY,kBAAkB;AACtE,YAAI,eAAeA,EAAC,KAAK,gBAAgBA,EAAC,GAAG;AAC3C,cAAI,KAAK,mBAAmB,eAAeA,EAAC;AAC5C,cAAI,MAAM,QAAQ,GAAG,KAAK,QAAQ,GAAG,KAAK,MAAM;AAC9C,gBAAI,MAAM;AAAA,cACR,GAAG;AAAA,cACH,GAAG;AAAA,YACL;AACA,gBAAI,kBAAkB;AACpB,oBAAM;AAAA,gBACJ,GAAG,iBAAiB;AAAA,gBACpB,GAAG,iBAAiB;AAAA,cACtB;AAAA,YACF,WAAW,qBAAqB,wBAAwB;AACtD,kBAAI,WAAW,MAAM,QAAQA,GAAE,QAAQ,IAAIA,GAAE,WAAW,CAACA,GAAE,UAAUA,GAAE,QAAQ;AAC/E,oBAAM;AAAA,gBACJ,GAAG,SAAS,CAAC,IAAI,UAAU;AAAA,gBAC3B,GAAG,SAAS,CAAC,IAAI,UAAU;AAAA,cAC7B;AAAA,YACF,OAAO;AACL,kBAAI,MAAMA,GAAE,UACR,WAAW;AACf,kBAAI,SAASA,GAAE,QAAQ,KAAKA,GAAE,WAAW,KAAKA,GAAE,WAAW,GAAG;AAC5D,sBAAM,SAAS,KAAKA,GAAE,UAAU,EAAE;AAClC,2BAAW;AAAA,cACb;AACA,oBAAM,UAAU,YAAY,KAAK,QAAQ;AAAA,YAC3C;AACA,gBAAI,OAAO,IAAI,IAAI,GAAG,IAAI,GACtB,OAAO,IAAI,IAAI,GAAG,IAAI;AAC1B,mBAAO;AAAA,cACL,WAAWA;AAAA,cACX,GAAG;AAAA,gBACD;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,MAAM;AAAA,cACN,MAAM,OAAO,GAAG;AAAA,cAChB,MAAM;AAAA,cACN,MAAM,OAAO,GAAG;AAAA,YAClB;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF,WAAW,eAAeA,EAAC,KAAK,iBAAiBA,EAAC,KAAK,oBAAoBA,EAAC,GAAG;AAC7E,iBAAOA,GAAE,KAAK,WAAW,YAAY,gBAAgB;AAAA,QACvD,OAAO;AACL,gBAAM,qCAAqCA,GAAE,OAAO;AAAA,QACtD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYA,IAAG;AAC7B,YAAIgF,YAAWhF,GAAE,KAAK,GAAG;AACvB,cAAI,KAAKA,GAAE,MAAM,IAAI;AACrB,cAAI,MAAM,MAAM;AACd,4BAAgBA,EAAC,EAAE,YAAY;AAAA,UACjC,OAAO;AACL,4BAAgBA,EAAC,EAAE,YAAY;AAAA,UACjC;AAAA,QACF,OAAO;AACL,cAAIA,GAAE,aAAa,MAAM;AACvB,YAAAA,GAAE,YAAYA,GAAE;AAChB,gBAAIA,GAAE,aAAa,MAAM;AACvB,8BAAgBA,EAAC,EAAE,YAAYA,GAAE;AAAA,YACnC,OAAO;AACL,8BAAgBA,EAAC,EAAE,YAAY;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,WAAW,OAAO;AACzC,kBAAU,SAAS;AACnB,YAAI,qBAAqB,YAAY,UAAU,YAAY,MAAM;AAC/D,eAAK,iBAAiB,WAAW,OAAO,EAAE;AAAA,QAC5C,WAAW,qBAAqBsC,eAAc,UAAU,aAAa,MAAM;AACzE,eAAK,kBAAkB,UAAU,WAAW,KAAK;AAAA,QACnD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,WAAW,YAAY,SAAS;AAC7D,0BAAkB,MAAM,WAAW,YAAY,OAAO;AAAA,MACxD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,WAAW,OAAO,gBAAgB;AAClE,YAAI,UAAU,SAAS,CAAC,KAAK,qBAAqB,CAAC,KAAK,iBAAiB,GAAG;AAC1E,cAAI,SAAS,UAAU;AACvB,cAAI,UAAU,MAAM;AAClB,gBAAI,UAAU,cAAc,MAAM;AAChC,kBAAI,OAAO;AACT,qBAAK,SAAS,QAAQ,UAAU,UAAU;AAAA,cAC5C,OAAO;AACL,qBAAK,YAAY,QAAQ,UAAU,UAAU;AAAA,cAC/C;AAAA,YACF;AACA,gBAAI,OAAO;AACT,mBAAK,SAAS,QAAQ,KAAK,UAAU;AAAA,YACvC,OAAO;AACL,mBAAK,YAAY,QAAQ,KAAK,UAAU;AAAA,YAC1C;AAAA,UACF;AACA,cAAI,UAAU,WAAW,mBAAmB,MAAM;AAChD,sBAAU,WAAW,kBAAkB,QAAQ,UAAU,WAAW,kBAAkB,UAAU,WAAW;AAC3G,gBAAI,CAAC,KAAK,iBAAiB;AACzB,mBAAK,iBAAiB,UAAU,UAAU;AAAA,YAC5C;AAAA,UACF;AACA,cAAI,UAAU,WAAW,UAAU,CAAC,MAAM,gBAAgB;AACxD,iBAAK,iBAAiB,UAAU,WAAW,UAAU,CAAC,GAAG,OAAO,GAAG,IAAI;AAAA,UACzE;AACA,cAAI,UAAU,WAAW,UAAU,CAAC,MAAM,gBAAgB;AACxD,iBAAK,iBAAiB,UAAU,WAAW,UAAU,CAAC,GAAG,OAAO,GAAG,IAAI;AAAA,UACzE;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,YAAY;AAC3C,YAAI,WAAW,aAAa,MAAM;AAChC,kBAAQ,WAAW,SAAS;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,WAAW,OAAO;AAClD,YAAI,UAAU,QAAQ;AACpB,eAAK,SAAS,UAAU,QAAQ,KAAK;AAAA,QACvC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,WAAW,OAAO;AACrD,YAAI,UAAU,QAAQ;AACpB,eAAK,YAAY,UAAU,QAAQ,KAAK;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,WAAW;AAC3C,YAAI,UAAU,QAAQ;AACpB,iBAAO,UAAU,OAAO,UAAU;AAAA,QACpC,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,WAAWjE,IAAG;AAChD,mBAAW,WAAWA,EAAC;AAAA,MACzB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,WAAW4G,IAAG;AAC/C,YAAI,UAAU,UAAUA,GAAE,UAAU;AAClC,cAAIC,WAAU,MAAM,QAAQD,GAAE,QAAQ,IAAIA,GAAE,WAAW,CAACA,GAAE,QAAQ;AAClE,eAAK,SAAS,UAAU,QAAQC,SAAQ,KAAK,GAAG,CAAC;AAAA,QACnD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,IAAI1I,IAAG;AACtC,YAAI,SAAS,kBAAkB,GAAG,QAAQ;AAC1C,YAAI,UAAU,MAAM;AAClB,eAAK,SAAS,QAAQA,EAAC;AAAA,QACzB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,IAAIyI,IAAG;AACvC,YAAIA,GAAE,UAAU;AACd,cAAI,SAAS,kBAAkB,GAAG,QAAQ;AAC1C,cAAI,QAAQ;AACV,gBAAIC,WAAU,MAAM,QAAQD,GAAE,QAAQ,IAAIA,GAAE,WAAW,CAACA,GAAE,QAAQ;AAClE,iBAAK,SAAS,QAAQC,SAAQ,KAAK,GAAG,CAAC;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,IAAI;AAClC,YAAI,cAAc,KAAK,6BAA6B,GAAG,qBAAqB,MAAM,GAAG,qBAAqB;AAC1G,aAAK,YAAY,GAAG,SAAS,WAAW;AACxC,gBAAQ,GAAG,QAAQ;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,IAAI,YAAY;AAC7C,YAAI,WAAW,YAAY,GAAG,SAAS,IAAI;AAC3C,YAAI,YAAY,MAAM;AACpB,sBAAY,MAAM,GAAG,UAAU,UAAU,UAAU;AAAA,QACrD,OAAO;AACL,cAAI,mDAAmD,GAAG,SAAS,OAAO,GAAG;AAAA,QAC/E;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,IAAI1I,IAAG;AACzC,YAAI,SAAS,kBAAkB,GAAG,QAAQ;AAC1C,YAAI,UAAU,MAAM;AAClB,eAAK,YAAY,QAAQA,EAAC;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,IAAI;AACnC,YAAI,SAAS,kBAAkB,GAAG,QAAQ;AAC1C,YAAI,UAAU,MAAM;AAClB,iBAAO,OAAO;AAAA,QAChB,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,UAAU,OAAO,eAAe,cAAc;AAC7E,YAAI,YAAY,SAAS,UAAU,SAAS,CAAC,KAAK,qBAAqB,CAAC,KAAK,iBAAiB,IAAI;AAChG,cAAI,SAAS,kBAAkB,SAAS,QAAQ;AAChD,cAAI,UAAU,MAAM;AAClB,gBAAI,SAAS,cAAc,MAAM;AAC/B,kBAAI,OAAO;AACT,qBAAK,SAAS,QAAQ,SAAS,UAAU;AAAA,cAC3C,OAAO;AACL,qBAAK,YAAY,QAAQ,SAAS,UAAU;AAAA,cAC9C;AAAA,YACF;AACA,gBAAI,kBAAkB,KAAK,kBAAkB,GAAG;AAC9C,kBAAI,oBAAoB,kBAAkB,IAAI,KAAK,mBAAmB,KAAK;AAC3E,kBAAI,OAAO;AACT,qBAAK,SAAS,QAAQ,iBAAiB;AAAA,cACzC,OAAO;AACL,qBAAK,YAAY,QAAQ,iBAAiB;AAAA,cAC5C;AAAA,YACF;AAAA,UACF;AACA,cAAI,SAAS,mBAAmB,MAAM;AACpC,qBAAS,kBAAkB,QAAQ,SAAS,kBAAkB,SAAS;AACvE,gBAAI,CAAC,KAAK,iBAAiB;AACzB,mBAAK,eAAe,UAAU,SAAS,eAAe;AAAA,YACxD;AAAA,UACF;AACA,cAAI,CAAC,cAAc;AACjB,qBAASN,KAAI,GAAGA,KAAI,SAAS,YAAY,QAAQA,MAAK;AACpD,mBAAK,kBAAkB,SAAS,YAAYA,EAAC,EAAE,WAAW,OAAO,QAAQ;AAAA,YAC3E;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,IAAImC,IAAG;AACxC,mBAAW,GAAG,UAAUA,EAAC;AAAA,MAC3B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,OAAO,OAAO;AAC5C,YAAIhB,KAAI,MAAM,GAAG,iBAAiB,wBAAwB;AAC1D,iBAASnB,KAAI,GAAGA,KAAImB,GAAE,QAAQnB,MAAK;AACjC,cAAI,OAAO;AACT,iBAAK,KAAKmB,GAAEnB,EAAC,GAAG,IAAI;AAAA,UACtB,OAAO;AACL,iBAAK,KAAKmB,GAAEnB,EAAC,GAAG,IAAI;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,YAAYrB,SAAQ;AACnD,YAAI,cAAc,QAAQ,WAAW,YAAY,MAAM;AACrD,cAAI,WAAW,UAAU,CAAC,EAAE,YAAY,MAAM;AAC5C,iBAAK,iBAAiB,WAAW,UAAU,CAAC,GAAG,OAAO,GAAG,IAAI;AAAA,UAC/D;AACA,cAAI,WAAW,UAAU,CAAC,EAAE,YAAY,MAAM;AAC5C,iBAAK,iBAAiB,WAAW,UAAU,CAAC,GAAG,OAAO,GAAG,IAAI;AAAA,UAC/D;AACA,iBAAO,KAAKkK,iBAAgB9B,wBAAuB,SAAS,GAAG,oBAAoB,IAAI,EAAE,KAAK,MAAM,YAAYpI,OAAM;AAAA,QACxH,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,UAAUA,SAAQ,SAAS;AAC3D,aAAK,cAAc,QAAQ;AAC3B,eAAO,KAAKkK,iBAAgB9B,wBAAuB,SAAS,GAAG,qBAAqB,IAAI,EAAE,KAAK,MAAM,UAAUpI,SAAQ,OAAO;AAAA,MAChI;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,UAAU;AAC7C,aAAK,iBAAiB,SAAS,QAAQ;AACvC,aAAKkK,iBAAgB9B,wBAAuB,SAAS,GAAG,wBAAwB,IAAI,EAAE,KAAK,MAAM,QAAQ;AAAA,MAC3G;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO,SAAS,YAAY,SAAS;AACnD,YAAI,KAAK,kBAAkB,aAAa,OAAO,CAAC,aAAa,OAAO,GAAG;AACrE,gBAAM,IAAI,MAAM,wEAAwE;AAAA,QAC1F;AACA,YAAI,iBAAiB,KAAK8B,iBAAgB9B,wBAAuB,SAAS,GAAG,UAAU,IAAI,EAAE,KAAK,MAAM,SAAS,YAAY,OAAO;AACpI,YAAI,kBAAkB,MAAM;AAC1B,cAAI,KAAK,mBAAmB,MAAM;AAChC,iBAAK,gBAAgB,QAAQ,eAAe,EAAE;AAAA,UAChD;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOA;AAAA,EACT,EAAE,eAAe;AAEjB,MAAI,SAAS;AACb,MAAI,aAAa,SAASvC,YAAW;AACnC,6BAAyB,YAAY,MAAM;AAAA,MACzC,UAAU,SAAS,SAAS,IAAI,OAAO;AACrC,eAAO,MAAM,QAAQ;AAAA,UACnB,MAAM,GAAG,IAAI;AAAA,UACb,MAAM,GAAG,IAAI;AAAA,UACb,KAAK,GAAG;AAAA,QACV,CAAC;AAAA,MACH;AAAA,MACA,YAAY,SAAS,WAAW,IAAI,MAAM;AACxC,cAAM,MAAM;AAAA,UACV,MAAM,KAAK,GAAG,IAAI;AAAA,UAClB,MAAM,KAAK,GAAG,IAAI;AAAA,UAClB,KAAK,KAAK,GAAG;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,oBAAoB,SAAU,uBAAuB;AACvD,IAAAhG,WAAUyK,oBAAmB,qBAAqB;AAClD,QAAI,SAASvK,cAAauK,kBAAiB;AAC3C,aAASA,mBAAkB,UAAUtK,SAAQ;AAC3C,UAAI;AACJ,MAAAC,iBAAgB,MAAMqK,kBAAiB;AACvC,cAAQ,OAAO,KAAK,MAAM,UAAUtK,OAAM;AAC1C,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQmK,mBAAkB,IAAI;AAC7E,MAAAtK,UAASA,WAAU,CAAC;AACpB,YAAM,QAAQA,QAAO,SAAS;AAC9B,YAAM,SAASA,QAAO,UAAU;AAChC,aAAO;AAAA,IACT;AACA,IAAAa,cAAayJ,oBAAmB,MAAM,CAAC;AAAA,MACrC,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI;AAC7B,eAAO;AAAA,UACL,OAAO,GAAG;AAAA,UACV,QAAQ,GAAG;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOA;AAAA,EACT,EAAE,sBAAsB;AACxB,EAAApK,iBAAgB,mBAAmB,QAAQ,WAAW;AACtD,MAAI,2BAA2B;AAAA,IAC7B,MAAM,kBAAkB;AAAA,IACxB,KAAK;AAAA,IACL,SAAS,SAASE,SAAQ,IAAI,aAAa,aAAa,eAAe;AACrE,UAAIkE,SAAQ,cAAc,SAAS,GAAG,OAClCC,UAAS,cAAc,UAAU,GAAG,QACpClE,KAAI,YAAY,OAAOiE,SAAQ,GAC/BhE,KAAI,YAAY,OAAOiE,UAAS;AACpC,SAAG,IAAIlE;AACP,SAAG,IAAIC;AACP,SAAG,IAAIgE;AACP,SAAG,IAAIC;AACP,aAAO,CAAClE,IAAGC,IAAGgE,QAAOC,OAAM;AAAA,IAC7B;AAAA,IACA,WAAW,SAASgG,WAAU,IAAI;AAChC,aAAO;AAAA,QACL,OAAO,GAAG;AAAA,QACV,QAAQ,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO;AACX,MAAI,aAAa,SAAS1E,YAAW;AACnC,6BAAyB,kBAAkB,MAAM;AAAA,MAC/C,UAAU,SAAS,SAAS,IAAI,OAAO;AACrC,eAAO,MAAM,MAAM;AAAA,UACjB,SAAS,GAAG;AAAA,UACZ,UAAU,GAAG;AAAA,QACf,CAAC;AAAA,MACH;AAAA,MACA,YAAY,SAAS,WAAW,IAAI,MAAM;AACxC,cAAM,MAAM;AAAA,UACV,SAAS,GAAG;AAAA,UACZ,UAAU,GAAG;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB,SAAU,uBAAuB;AACnD,IAAAhG,WAAU2K,gBAAe,qBAAqB;AAC9C,QAAI,SAASzK,cAAayK,cAAa;AACvC,aAASA,eAAc,UAAUxK,SAAQ;AACvC,UAAI;AACJ,MAAAC,iBAAgB,MAAMuK,cAAa;AACnC,cAAQ,OAAO,KAAK,MAAM,UAAUxK,OAAM;AAC1C,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQqK,eAAc,IAAI;AACzE,aAAO;AAAA,IACT;AACA,WAAOA;AAAA,EACT,EAAE,sBAAsB;AACxB,EAAAtK,iBAAgB,eAAe,QAAQ,OAAO;AAC9C,MAAI,uBAAuB;AAAA,IACzB,MAAM,cAAc;AAAA,IACpB,KAAK;AAAA,IACL,SAAS,SAASE,SAAQ,IAAI,aAAa,aAAa,eAAe;AACrE,SAAG,IAAI,YAAY;AACnB,SAAG,IAAI,YAAY;AACnB,SAAG,IAAI;AACP,SAAG,IAAI;AACP,aAAO,CAAC,YAAY,MAAM,YAAY,MAAM,IAAI,CAAC;AAAA,IACnD;AAAA,IACA,WAAW,SAASmK,WAAU,IAAI;AAChC,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAEA,MAAI,mBAAmB;AAAA,IACrB,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACA,MAAI1E,YAAW,SAASA,YAAW;AACjC,6BAAyB,cAAc,MAAM;AAAA,MAC3C,UAAU,SAAS,SAAS,IAAI,OAAO;AACrC,eAAO,MAAM,QAAQ,gBAAgB;AAAA,MACvC;AAAA,MACA,YAAY,SAAS,WAAW,IAAI,MAAM;AACxC,cAAM,MAAM,gBAAgB;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,aAAW;AACX,EAAAA,UAAS;AACT,aAAW;AAEX,MAAI;AACJ,GAAC,SAAU4E,gBAAe;AACxB,IAAAA,eAAcA,eAAc,KAAK,IAAI,CAAC,IAAI;AAC1C,IAAAA,eAAcA,eAAc,QAAQ,IAAI,CAAC,IAAI;AAAA,EAC/C,GAAG,kBAAkB,gBAAgB,CAAC,EAAE;AACxC,MAAI,2BAA2B,oBAAI,IAAI;AACvC,2BAAyB,IAAI,cAAc,KAAK,CAAC,gBAAgB,UAAU,gBAAgB,OAAO,CAAC;AACnG,2BAAyB,IAAI,cAAc,QAAQ,CAAC,gBAAgB,aAAa,gBAAgB,UAAU,CAAC;AAC5G,MAAI,uBAAuB;AAAA,IACzB,cAAc,SAAS,aAAa,MAAMxI,QAAO,IAAI,MAAM;AACzD,aAAO,yBAAyB,IAAI,IAAI,EAAEA,MAAK;AAAA,IACjD;AAAA,EACF;AACA,MAAI,uBAAuB;AAC3B,MAAI,2BAA2B,IAAI,oBAAoB;AACvD,MAAI,eAAe;AAEnB,MAAI,qBAAqB,WAAY;AACnC,aAASyI,oBAAmB,UAAU1K,SAAQ;AAC5C,UAAI,QAAQ;AACZ,MAAAC,iBAAgB,MAAMyK,mBAAkB;AACxC,WAAK,WAAW;AAChB,MAAAxK,iBAAgB,MAAM,WAAW,MAAM;AACvC,MAAAA,iBAAgB,MAAM,SAAS,MAAM;AACrC,MAAAA,iBAAgB,MAAM,SAAS,MAAM;AACrC,WAAK,QAAQ;AACb,WAAK,QAAQ,CAAC;AACd,WAAK,UAAUF,WAAU,CAAC;AAC1B,WAAK,SAAS,KAAK,sBAAsB,SAAUoB,IAAG;AACpD,YAAI,kBAAkB,MAAM,SAAS,YAAYA,GAAE,IAAI,wBAAwB;AAC/E,iBAASC,KAAI,GAAGA,KAAI,gBAAgB,QAAQA,MAAK;AAC/C,gBAAM,QAAQ,gBAAgBA,EAAC,CAAC;AAAA,QAClC;AAAA,MACF,CAAC;AACD,WAAK,SAAS,KAAK,wBAAwB,SAAUD,IAAG;AACtD,cAAM,WAAWA,GAAE,EAAE;AAAA,MACvB,CAAC;AACD,WAAK,SAAS,KAAK,kBAAkB,SAAUpB,SAAQ,KAAK;AAC1D,YAAI,OAAO,MAAM;AACf,cAAI,eAAe,MAAM,eAAeA,QAAO,MAAM;AACrD,cAAI,gBAAgB,MAAM;AACxB,yBAAa,cAAcA,QAAO,YAAYA,QAAO,QAAQ,CAAC;AAAA,UAChE;AACA,cAAI,eAAe,MAAM,eAAeA,QAAO,MAAM;AACrD,cAAI,gBAAgB,MAAM;AACxB,yBAAa,cAAcA,QAAO,YAAYA,QAAO,QAAQ,CAAC;AAAA,UAChE;AAAA,QACF;AAAA,MACF,CAAC;AACD,WAAK,SAAS,KAAK,uBAAuB,SAAUoB,IAAG;AACrD,YAAI,KAAKA,GAAE,aAAa;AACxB,YAAI,WAAW,MAAM,eAAe,EAAE;AACtC,eAAO,YAAY,QAAQ,GAAG,aAAa,SAAS,WAAW,aAAa,GAAG,YAAY,GAAG,gBAAgB,SAAS,WAAW,YAAY,SAAS,WAAW;AAAA,MACpK,CAAC;AAAA,IACH;AACA,IAAAP,cAAa6J,qBAAoB,CAAC;AAAA,MAChC,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,IAAI/J,UAAS;AACnC,YAAI,KAAKyE,QAAO,CAAC,GAAG,oBAAoB;AACxC,QAAAA,QAAO,IAAI,KAAK,OAAO;AACvB,QAAAzE,WAAUyE,QAAO,IAAIzE,YAAW,CAAC,CAAC;AAClC,YAAImB,MAAK,CAAC,KAAK,SAAS,gBAAgB,KAAK,OAAO,EAAE,KAAK,GAAG;AAC9D,aAAK,MAAMA,GAAE,IAAI,IAAI,YAAY,KAAK,UAAU,IAAInB,UAASmB,GAAE;AAC/D,eAAO,KAAK,MAAMA,GAAE;AAAA,MACtB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,IAAI;AAC1B,YAAI,SAAS,KAAK,SAAS,aAAa,IAAI,oBAAoB;AAChE,YAAI,UAAU,MAAM;AAClB,iBAAO,KAAK,MAAM,MAAM;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI;AAC7B,YAAI,OAAO,KAAK,QAAQ,EAAE;AAC1B,YAAI,MAAM;AACR,eAAK,QAAQ;AACb,iBAAO,KAAK,MAAM,KAAK,EAAE;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,IAAI;AACjC,YAAI,SAAS,GAAG,YACZ,YAAY,KAAK,SAAS,aAAa,GACvC;AACJ,eAAO,UAAU,QAAQ,WAAW,aAAa,WAAW,UAAU;AACpE,uBAAa,KAAK,QAAQ,MAAM;AAChC,cAAI,cAAc,MAAM;AACtB,mBAAO;AAAA,UACT;AACA,mBAAS,OAAO;AAAA,QAClB;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAO4I;AAAA,EACT,EAAE;AACF,MAAI,cAAc,WAAY;AAC5B,aAASC,aAAY,UAAU,IAAIhK,UAASmB,KAAI;AAC9C,MAAA7B,iBAAgB,MAAM0K,YAAW;AACjC,WAAK,WAAW;AAChB,WAAK,KAAK;AACV,WAAK,UAAUhK;AACf,WAAK,KAAKmB;AACV,MAAA5B,iBAAgB,MAAM,kBAAkB,MAAM;AAC9C,MAAAA,iBAAgB,MAAM,cAAc,MAAM;AAC1C,MAAAA,iBAAgB,MAAM,QAAQ,MAAM;AACpC,WAAK,aAAa;AAClB,WAAK,OAAO,KAAK,SAAS,MAAM,EAAE;AAClC,eAAS,aAAa,IAAI,sBAAsB4B,GAAE;AAClD,WAAK,iBAAiB,KAAK,cAAc,KAAK,IAAI;AAClD,WAAK,WAAW,wBAAwB,KAAK;AAC7C,eAAS,GAAG,IAAI,cAAc,KAAK,cAAc;AACjD,WAAK,eAAe;AAAA,IACtB;AACA,IAAAjB,cAAa8J,cAAa,CAAC;AAAA,MACzB,KAAK;AAAA,MACL,OAAO,SAASC,cAAa,MAAM3I,QAAO,IAAI,MAAM;AAClD,eAAO,KAAK,QAAQ,SAAS,KAAK,QAAQ,SAAS,KAAK,QAAQ,aAAa,MAAMA,QAAO,IAAI,IAAI;AAAA,MACpG;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,MAAMA,QAAO,IAAI,MAAM;AACpD,eAAO,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,eAAe,MAAMA,QAAO,IAAI,IAAI,IAAI,KAAK,QAAQ,WAAW,KAAK,QAAQ,WAAW,GAAG,SAAS;AAAA,MACxJ;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAcN,IAAG,IAAIM,QAAO;AAC1C,YAAI,GAAG,YAAY,KAAK,GAAG,WAAW;AACpC,eAAK,iBAAiB,IAAIN,IAAGM,QAAO,cAAc,GAAG;AAAA,QACvD,WAAW,GAAG,YAAY,GAAG,eAAe,KAAK,GAAG,YAAY,KAAK,WAAW,cAAc;AAC5F,eAAK,iBAAiB,IAAIN,IAAGM,QAAO,cAAc,MAAM;AAAA,QAC1D;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB;AAC9B,YAAI,SAAS;AACb,YAAI,WAAW,KAAK,SAAS,YAAY,KAAK,IAAI,wBAAwB;AAC1E,YAAI,QAAQ,SAAS4I,OAAMxJ,IAAG;AAC5B,cAAI,SAASA,EAAC,EAAE,YAAY,OAAO,GAAG,WAAW;AAC/C,qBAASA,EAAC,EAAE,kBAAkB,SAASA,EAAC,EAAE,mBAAmB,CAAC;AAC9D,mBAAO,SAAS,OAAO;AAAA,cACrB,QAAQ,SAASA,EAAC;AAAA,YACpB,CAAC,EAAE,KAAK,SAAUM,IAAG;AACnB,qBAAO,iBAAiB,SAASN,EAAC,GAAGM,IAAG,GAAG,cAAc,GAAG;AAAA,YAC9D,CAAC;AACD,mBAAO,SAAS,OAAO;AAAA,cACrB,QAAQ,SAASN,EAAC;AAAA,YACpB,CAAC,EAAE,KAAK,SAAUM,IAAG;AACnB,qBAAO,iBAAiB,SAASN,EAAC,GAAGM,IAAG,GAAG,cAAc,GAAG;AAAA,YAC9D,CAAC;AAAA,UACH,WACS,SAASN,EAAC,EAAE,YAAY,SAASA,EAAC,EAAE,eAAe,OAAO,GAAG,YAAY,OAAO,WAAW,cAAc;AAChH,qBAASA,EAAC,EAAE,kBAAkB,SAASA,EAAC,EAAE,mBAAmB,CAAC;AAC9D,mBAAO,SAAS,OAAO;AAAA,cACrB,QAAQ,SAASA,EAAC;AAAA,YACpB,CAAC,EAAE,KAAK,SAAUM,IAAG;AACnB,qBAAO,iBAAiB,SAASN,EAAC,GAAGM,IAAG,GAAG,cAAc,MAAM;AAAA,YACjE,CAAC;AACD,mBAAO,SAAS,OAAO;AAAA,cACrB,QAAQ,SAASN,EAAC;AAAA,YACpB,CAAC,EAAE,KAAK,SAAUM,IAAG;AACnB,qBAAO,iBAAiB,SAASN,EAAC,GAAGM,IAAG,GAAG,cAAc,MAAM;AAAA,YACjE,CAAC;AAAA,UACH,WAAW,SAASN,EAAC,EAAE,iBAAiB;AACtC,qBAASuB,KAAI,GAAGA,KAAI,SAASvB,EAAC,EAAE,gBAAgB,QAAQuB,MAAK;AAC3D,qBAAO,SAAS,kBAAkB,SAASvB,EAAC,EAAE,gBAAgBuB,EAAC,EAAE,CAAC,GAAG,SAASvB,EAAC,EAAE,gBAAgBuB,EAAC,EAAE,CAAC,CAAC;AAAA,YACxG;AACA,mBAAO,SAASvB,EAAC,EAAE;AAAA,UACrB;AACA,iBAAO,SAAS,WAAW,SAASA,EAAC,CAAC;AAAA,QACxC;AACA,iBAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,gBAAMA,EAAC;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,IAAI,MAAMY,QAAO,MAAM;AACtD,YAAI,SAAS;AACb,aAAK,SAAS,gBAAgB,MAAMA,QAAO,KAAK,YAAY,SAAUN,IAAGM,QAAO;AAC9E,iBAAO,OAAO,eAAe,MAAMA,QAAO,KAAK,UAAUA,MAAK,GAAG,IAAI;AAAA,QACvE,GAAG,SAAUN,IAAGM,QAAO;AACrB,iBAAO,OAAO,aAAa,MAAMA,QAAO,KAAK,UAAUA,MAAK,GAAG,IAAI;AAAA,QACrE,CAAC;AACD,WAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAC5C,WAAG,gBAAgB,KAAK,CAAC,MAAMA,MAAK,CAAC;AAAA,MACvC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASuF,WAAU;AACxB,aAAK,SAAS,IAAI,KAAK,IAAI,cAAc,KAAK,cAAc;AAC5D,eAAO,KAAK,WAAW;AACvB,YAAI,WAAW,KAAK,SAAS,YAAY,KAAK,IAAI,wBAAwB;AAC1E,iBAASnG,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,cAAI,SAASA,EAAC,EAAE,iBAAiB;AAC/B,qBAASuB,KAAI,GAAGA,KAAI,SAASvB,EAAC,EAAE,gBAAgB,QAAQuB,MAAK;AAC3D,mBAAK,SAAS,kBAAkB,SAASvB,EAAC,EAAE,gBAAgBuB,EAAC,EAAE,CAAC,GAAG,SAASvB,EAAC,EAAE,gBAAgBuB,EAAC,EAAE,CAAC,CAAC;AAAA,YACtG;AACA,mBAAO,SAASvB,EAAC,EAAE;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOsJ;AAAA,EACT,EAAE;AAEF,MAAI,mBAAmB;AACvB,WAAS,YAAYG,IAAG;AACtB,QAAIpJ,KAAI,KAAK,MAAMoJ,EAAC,GAChBhH,KAAI,KAAK,KAAKgH,EAAC;AACnB,QAAIA,KAAIpJ,KAAI,kBAAkB;AAC5B,aAAOA;AAAA,IACT,WAAWoC,KAAIgH,KAAI,kBAAkB;AACnC,aAAOhH;AAAA,IACT;AACA,WAAOgH;AAAA,EACT;AACA,MAAI,aAAa,SAAU,kBAAkB;AAC3C,IAAAjL,WAAUkL,aAAY,gBAAgB;AACtC,QAAI,SAAShL,cAAagL,WAAU;AACpC,aAASA,YAAW/K,SAAQ;AAC1B,UAAI;AACJ,MAAAC,iBAAgB,MAAM8K,WAAU;AAChC,cAAQ,OAAO,KAAK,MAAM/K,OAAM;AAChC,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ4K,YAAW,WAAW;AAC7E,MAAA7K,iBAAgBC,wBAAuB,KAAK,GAAG,MAAM,MAAM;AAC3D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,MAAM,MAAM;AAC3D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,cAAc,MAAM;AACnE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,YAAM,KAAKH,QAAO;AAClB,YAAM,KAAKA,QAAO;AAClB,YAAM,SAASA,QAAO;AACtB,YAAM,gBAAgBA,QAAO;AAC7B,UAAIA,QAAO,cAAcA,QAAO,UAAU;AACxC,cAAM,aAAaA,QAAO;AAC1B,cAAM,WAAWA,QAAO;AACxB,cAAM,KAAK,MAAM,KAAK,MAAM,SAAS,KAAK,IAAI,MAAM,UAAU;AAC9D,cAAM,KAAK,MAAM,KAAK,MAAM,SAAS,KAAK,IAAI,MAAM,UAAU;AAC9D,cAAM,KAAK,MAAM,KAAK,MAAM,SAAS,KAAK,IAAI,MAAM,QAAQ;AAC5D,cAAM,KAAK,MAAM,KAAK,MAAM,SAAS,KAAK,IAAI,MAAM,QAAQ;AAAA,MAC9D,OAAO;AACL,cAAM,aAAa,MAAM,WAAW,MAAM,IAAI,MAAM,EAAE;AACtD,cAAM,WAAW,MAAM,WAAW,MAAM,IAAI,MAAM,EAAE;AAAA,MACtD;AACA,UAAI,MAAM,WAAW,GAAG;AACtB,cAAM,YAAY;AAAA,MACpB;AACA,UAAI,MAAM,aAAa,GAAG;AACxB,cAAM,cAAc;AAAA,MACtB;AACA,UAAI,KAAK,MAAM,WAAW,MAAM,aAAa,MAAM,WAAW,SAAS,MAAM;AAC7E,YAAM,QAAQ,KAAK,IAAI,KAAK,MAAM,UAAU;AAC5C,UAAI,MAAM,eAAe;AACvB,cAAM,QAAQ,SAAS,MAAM;AAAA,MAC/B;AACA,YAAM,gBAAgB,IAAI,KAAK,KAAK,MAAM;AAC1C,YAAM,OAAO,MAAM,QAAQ;AAC3B,YAAM,SAAS,MAAM,gBAAgB,MAAM;AAC3C,YAAM,UAAU;AAAA,QACd,MAAM,MAAM,KAAK,MAAM;AAAA,QACvB,MAAM,MAAM,KAAK,MAAM;AAAA,QACvB,MAAM,MAAM,KAAK,MAAM;AAAA,QACvB,MAAM,MAAM,KAAK,MAAM;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AACA,IAAAa,cAAakK,aAAY,CAAC;AAAA,MACxB,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAI,IAAI;AACjC,eAAO,MAAM;AAAA,UACX,GAAG,KAAK;AAAA,UACR,GAAG,KAAK;AAAA,QACV,GAAG;AAAA,UACD,GAAG;AAAA,UACH,GAAG;AAAA,QACL,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB,SAAShF,WAAU;AACvD,YAAI,QAAQ,eAAe;AACzB,cAAI,KAAK,QAAQ,aAAa,QAAQ,WAAW,QAAQ,aAAa,SAAS,QAAQ,YACnFvB,KAAI,KAAK,IAAI,KAAK,QAAQ,QAAQ;AACtC,iBAAO,KAAKA,KAAIuB;AAAA,QAClB,OAAO;AACL,cAAI,KAAK,QAAQ,WAAW,QAAQ,aAAa,QAAQ,WAAW,SAAS,QAAQ,UACjF,KAAK,KAAK,IAAI,KAAK,QAAQ,UAAU;AACzC,iBAAO,QAAQ,aAAa,KAAKA;AAAA,QACnC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,gBAAgB;AACtC,YAAI,MAAM,KAAK,QAAQ,KAAK,KAAK,IAAI,GACjC,KAAK,KAAK,gBAAgB,IAAI;AAClC,gBAAQ,iBAAiB,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,MAAM,OAAO,KAAK,SAAS,MAAM,KAAK,SAAS,QAAQ,MAAM,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,MACpK;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYA,WAAU,UAAU;AAC9C,YAAIA,cAAa,GAAG;AAClB,iBAAO;AAAA,YACL,GAAG,KAAK;AAAA,YACR,GAAG,KAAK;AAAA,YACR,OAAO,KAAK;AAAA,UACd;AAAA,QACF,WAAWA,cAAa,GAAG;AACzB,iBAAO;AAAA,YACL,GAAG,KAAK;AAAA,YACR,GAAG,KAAK;AAAA,YACR,OAAO,KAAK;AAAA,UACd;AAAA,QACF;AACA,YAAI,UAAU;AACZ,UAAAA,YAAWA,YAAW;AAAA,QACxB;AACA,YAAI,QAAQ,KAAK,sBAAsB,MAAMA,SAAQ,GACjD,KAAK,KAAK,KAAK,KAAK,SAAS,KAAK,IAAI,KAAK,GAC3C,KAAK,KAAK,KAAK,KAAK,SAAS,KAAK,IAAI,KAAK;AAC/C,eAAO;AAAA,UACL,GAAG,YAAY,EAAE;AAAA,UACjB,GAAG,YAAY,EAAE;AAAA,UACjB,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,iBAAgBD,WAAU,UAAU;AAClD,YAAI3E,KAAI,KAAK,YAAY2E,WAAU,QAAQ;AAC3C,YAAIvD,KAAI,OAAO;AAAA,UACb,GAAG,KAAK;AAAA,UACR,GAAG,KAAK;AAAA,QACV,GAAGpB,EAAC;AACJ,YAAI,CAAC,KAAK,kBAAkBoB,OAAM,YAAYA,OAAM,YAAY;AAC9D,UAAAA,MAAK;AAAA,QACP;AACA,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmBuD,WAAU,UAAU,UAAU;AAC/D,YAAI3E,KAAI,KAAK,YAAY2E,WAAU,QAAQ,GACvC,UAAU,WAAW,KAAK,gBAAgB,IAAI,KAAK,IACnD,MAAM,KAAK,gBAAgB,KAAK,GAChC,aAAa3E,GAAE,QAAQ,MAAM,SAC7B,SAAS,KAAK,KAAK,KAAK,SAAS,KAAK,IAAI,UAAU,GACpD,SAAS,KAAK,KAAK,KAAK,SAAS,KAAK,IAAI,UAAU;AACxD,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAO2J;AAAA,EACT,EAAE,eAAe;AACjB,EAAA7K,iBAAgB,YAAY,eAAe,KAAK;AAEhD,MAAI,0BAA0B,SAAU,oBAAoB;AAC1D,IAAAL,WAAUmL,0BAAyB,kBAAkB;AACrD,QAAI,SAASjL,cAAaiL,wBAAuB;AACjD,aAASA,yBAAwB,YAAYhL,SAAQ;AACnD,UAAI;AACJ,MAAAC,iBAAgB,MAAM+K,wBAAuB;AAC7C,cAAQ,OAAO,KAAK,MAAM,YAAYhL,OAAM;AAC5C,YAAM,aAAa;AACnB,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,MAAM;AAC/D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,MAAM;AACpE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,aAAa,MAAM;AAClE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,IAAI;AAC/D,MAAAH,UAASA,WAAU,CAAC;AACpB,YAAM,eAAeA,QAAO,iBAAiB;AAC7C,YAAM,YAAYA,QAAO,aAAa;AACtC,YAAM,SAASA,QAAO,UAAU;AAChC,YAAM,iBAAiBA,QAAO,kBAAkB;AAChD,YAAM,YAAYA,QAAO,eAAeA,QAAO,gBAAgB;AAC/D,YAAM,iBAAiBA,QAAO,kBAAkB;AAChD,YAAM,sBAAsB;AAC5B,aAAO;AAAA,IACT;AACA,IAAAa,cAAamK,0BAAyB,CAAC;AAAA,MACrC,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,eAAO,CAAC,GAAG,CAAC;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,WAAW5J,IAAG;AACrC,YAAI,KAAKA,GAAE,WACP,KAAKA,GAAE,WACP,KAAK,KAAK,IAAI,GAAG,OAAO,GAAG,IAAI,GAC/B,KAAK,KAAK,IAAI,GAAG,OAAO,GAAG,IAAI;AACnC,YAAI,CAAC,KAAK,gBAAgBA,GAAE,eAAe,cAAcA,GAAE,eAAe,WAAW;AACnF,eAAK,sBAAsB;AAC3B,eAAK,eAAe,WAAWA,IAAG,IAAI,IAAI,IAAI,EAAE;AAAA,QAClD,OAAO;AACL,eAAK,sBAAsB;AAC3B,cAAI,KAAKA,GAAE,UAAU,MACjB,KAAKA,GAAE,UAAU,OAAO,KAAK,QAC7B2D,MAAK,IACLC,MAAK,KAAK,KAAK,gBACnB,KAAKD,MAAK,KAAK,gBACX,KAAKC,MAAK,KAAK;AACnB,eAAK,IAAI,KAAK;AACd,eAAK,IAAI,KAAK;AACd,oBAAU,OAAO,CAAC,IAAI;AACtB,oBAAU,OAAO,CAAC,IAAI;AACtB,oBAAU,OAAO,CAAC,IAAI;AACtB,oBAAU,OAAO,CAAC,IAAI;AACtB,eAAK,YAAY,YAAY;AAAA,YAC3B,UAAU;AAAA,YACV,IAAI,KAAK,KAAK;AAAA,YACd,IAAI,KAAK;AAAA,YACT,YAAY;AAAA,YACZ,UAAU,IAAI,KAAK;AAAA,YACnB,GAAG,KAAK;AAAA,YACR,IAAI,CAAC,KAAK;AAAA,YACV,IAAI,KAAK,KAAK;AAAA,YACd,IAAI,KAAK;AAAA,YACT,IAAID,MAAK;AAAA,YACT,IAAIC,MAAK;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,YAAI,KAAK,YAAY,MAAM;AACzB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,YACL,eAAe,CAACI,QAAO,CAAC,GAAG,KAAK,SAAS,cAAc,CAAC,CAAC,GAAGA,QAAO,CAAC,GAAG,KAAK,SAAS,cAAc,CAAC,CAAC,CAAC;AAAA,YACtG,QAAQA,QAAO,CAAC,GAAG,KAAK,SAAS,MAAM;AAAA,YACvC,QAAQA,QAAO,CAAC,GAAG,KAAK,SAAS,MAAM;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB5D,IAAGmD,KAAIC,KAAI;AAC3C,eAAO;AAAA,UACL,eAAe,CAAC;AAAA,YACd,GAAGpD,GAAE,cAAc,CAAC,EAAE,IAAImD;AAAA,YAC1B,GAAGnD,GAAE,cAAc,CAAC,EAAE,IAAIoD;AAAA,UAC5B,GAAG;AAAA,YACD,GAAGpD,GAAE,cAAc,CAAC,EAAE,IAAImD;AAAA,YAC1B,GAAGnD,GAAE,cAAc,CAAC,EAAE,IAAIoD;AAAA,UAC5B,CAAC;AAAA,UACD,QAAQ,KAAK,yBAAyBpD,GAAE,QAAQmD,KAAIC,GAAE;AAAA,UACtD,QAAQ,KAAK,yBAAyBpD,GAAE,QAAQmD,KAAIC,GAAE;AAAA,QACxD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,UAAU;AACvC,YAAI,YAAY,MAAM;AACpB,cAAI,SAAS,iBAAiB,QAAQ,SAAS,cAAc,UAAU,GAAG;AACxE,gBAAI,yFAAyF;AAC7F,iBAAK,YAAY,MAAM,IAAI;AAC3B,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,cAAc,CAAC,EAAE,KAAK,QAAQ,SAAS,cAAc,CAAC,EAAE,KAAK,QAAQ,SAAS,cAAc,CAAC,EAAE,KAAK,QAAQ,SAAS,cAAc,CAAC,EAAE,KAAK,MAAM;AAC5J,gBAAI,iEAAiE;AACrE,iBAAK,YAAY,MAAM,IAAI;AAC3B,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,UAAU,QAAQ,SAAS,OAAO,QAAQ,QAAQ,SAAS,OAAO,QAAQ,MAAM;AAC3F,gBAAI,qEAAqE;AACzE,iBAAK,YAAY,MAAM,IAAI;AAC3B,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,UAAU,QAAQ,SAAS,OAAO,QAAQ,QAAQ,SAAS,OAAO,QAAQ,MAAM;AAC3F,gBAAI,qEAAqE;AACzE,iBAAK,YAAY,MAAM,IAAI;AAC3B,mBAAO;AAAA,UACT;AACA,eAAK,YAAY,UAAU,KAAK;AAChC,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AACF,WAAOoG;AAAA,EACT,EAAE,iBAAiB;AAEnB,MAAI,UAAU;AAAA,IACZ,UAAU,SAAS,SAAS,IAAIC,KAAI;AAClC,aAAO;AAAA,QACL,GAAG,GAAG,IAAIA,IAAG;AAAA,QACb,GAAG,GAAG,IAAIA,IAAG;AAAA,MACf;AAAA,IACF;AAAA,IACA,YAAY,SAAS,WAAW,IAAIA,KAAI;AACtC,aAAO,GAAG,IAAIA,IAAG,IAAI,GAAG,IAAIA,IAAG;AAAA,IACjC;AAAA,IACA,QAAQ,SAAS,OAAOzH,IAAG;AACzB,aAAO,KAAK,KAAKA,GAAE,IAAIA,GAAE,IAAIA,GAAE,IAAIA,GAAE,CAAC;AAAA,IACxC;AAAA,IACA,OAAO,SAAS,MAAMA,IAAGgB,IAAG;AAC1B,aAAO;AAAA,QACL,GAAGhB,GAAE,IAAIgB;AAAA,QACT,GAAGhB,GAAE,IAAIgB;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACA,MAAI,eAAe;AACnB,MAAI,oBAAoB,KAAK,IAAI,GAAK,CAAC,eAAe,CAAC;AACvD,WAAS,kBAAkB4C,QAAO,OAAO;AACvC,QAAI,aAAa,CAAC,GACd7G,KAAI,iBAAiB6G,QAAO,KAAK,GACjC,SAAS,MAAM,SAAS,GACxB,eAAe,IAAI,SAAS,GAC5B,eAAe,WAAW7G,IAAG,cAAc,YAAY,CAAC,GACxDiD,KAAI,QAAQ,SAAS4D,QAAO,MAAM,CAAC,CAAC,GACpC8D,QAAO,QAAQ,OAAO1H,EAAC,GACvB4G,KAAI,GACJ;AACJ,aAAS/I,KAAI,GAAGA,KAAI,cAAcA,MAAK;AACrC,MAAAmC,KAAI,QAAQ,SAAS4D,QAAO,QAAQ,OAAO,QAAQ,WAAW/F,EAAC,GAAG,MAAM,IAAI,CAAC;AAC7E,gBAAU,QAAQ,OAAOmC,EAAC;AAC1B,UAAI,UAAU0H,OAAM;AAClB,QAAAA,QAAO;AACP,QAAAd,KAAI,WAAW/I,EAAC;AAAA,MAClB;AAAA,IACF;AACA,IAAAmC,KAAI,QAAQ,SAAS4D,QAAO,MAAM,MAAM,CAAC;AACzC,cAAU,QAAQ,OAAO5D,EAAC;AAC1B,QAAI,UAAU0H,OAAM;AAClB,MAAAA,QAAO;AACP,MAAAd,KAAI;AAAA,IACN;AACA,WAAO;AAAA,MACL,UAAUA;AAAA,MACV,UAAUc;AAAA,IACZ;AAAA,EACF;AACA,WAAS,oBAAoB9D,QAAO,OAAO;AACzC,QAAI,KAAK,kBAAkBA,QAAO,KAAK;AACvC,WAAO;AAAA,MACL,OAAO,QAAQ,OAAO,MAAM,SAAS,GAAG,GAAG,UAAU,MAAM,IAAI;AAAA,MAC/D,UAAU,GAAG;AAAA,IACf;AAAA,EACF;AACA,WAAS,iBAAiBA,QAAO,OAAO;AACtC,QAAI,SAAS,MAAM,SAAS,GACxB,eAAe,IAAI,SAAS,GAC5BzF,KAAI,CAAC,GACLJ,KAAI,CAAC,GACL,UAAU,CAAC,GACXhB,KAAI,CAAC,GACLsG,KAAI,CAAC,CAAC,GAAK,KAAK,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAG,CAAC;AACzE,aAASxF,KAAI,GAAGA,MAAK,QAAQA,MAAK;AAChC,MAAAM,GAAEN,EAAC,IAAI,QAAQ,SAAS,MAAMA,EAAC,GAAG+F,MAAK;AAAA,IACzC;AACA,aAAS,KAAK,GAAG,MAAM,SAAS,GAAG,MAAM;AACvC,MAAA7F,GAAE,EAAE,IAAI,QAAQ,SAAS,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC;AACjD,MAAAA,GAAE,EAAE,IAAI,QAAQ,MAAMA,GAAE,EAAE,GAAG,CAAG;AAAA,IAClC;AACA,aAAS,MAAM,GAAG,OAAO,SAAS,GAAG,OAAO;AAC1C,eAAS,SAAS,GAAG,UAAU,QAAQ,UAAU;AAC/C,YAAI,CAAC,QAAQ,GAAG;AAAG,kBAAQ,GAAG,IAAI,CAAC;AACnC,gBAAQ,GAAG,EAAE,MAAM,IAAI,QAAQ,WAAWA,GAAE,GAAG,GAAGI,GAAE,MAAM,CAAC;AAAA,MAC7D;AAAA,IACF;AACA,aAAS,MAAM,GAAG,OAAO,cAAc,OAAO;AAC5C,UAAI,CAACpB,GAAE,GAAG,GAAG;AACX,QAAAA,GAAE,GAAG,IAAI,CAAC;AAAA,MACZ;AACA,MAAAA,GAAE,GAAG,EAAE,IAAI;AACX,MAAAA,GAAE,GAAG,EAAE,IAAI,WAAW,KAAK,GAAG,IAAI;AAAA,IACpC;AACA,QAAIuK,KAAI,QACJtI,KAAI,SAAS;AACjB,aAASgD,KAAI,GAAGA,MAAKsF,KAAItI,IAAGgD,MAAK;AAC/B,UAAI,KAAK,KAAK,IAAI,GAAGA,KAAIhD,EAAC,GACtB,KAAK,KAAK,IAAIgD,IAAGsF,EAAC;AACtB,eAAS,MAAM,IAAI,OAAO,IAAI,OAAO;AACnC,YAAIlI,KAAI4C,KAAI;AACZ,QAAAjF,GAAE,MAAMqC,EAAC,EAAE,KAAK,QAAQA,EAAC,EAAE,GAAG,IAAIiE,GAAEjE,EAAC,EAAE,GAAG;AAAA,MAC5C;AAAA,IACF;AACA,WAAOrC;AAAA,EACT;AACA,WAAS,WAAWA,IAAG,QAAQ6J,IAAG,OAAO;AACvC,QAAIlC,QAAO,CAAC,GACRiD,SAAQ,CAAC,GACT,YACA,aACA,SAAS,CAAC,GACV,UAAU,CAAC;AACf,YAAQ,kBAAkB5K,IAAG,MAAM,GAAG;AAAA,MACpC,KAAK,GACH;AACE,eAAO;AAAA,MACT;AAAA,MACF,KAAK,GACH;AACE,YAAI,SAAS,cAAc;AACzB,UAAA6J,GAAE,CAAC,KAAK7J,GAAE,CAAC,EAAE,IAAIA,GAAE,MAAM,EAAE,KAAK;AAChC,iBAAO;AAAA,QACT;AACA,YAAI,cAAcA,IAAG,MAAM,GAAG;AAC5B,UAAA6J,GAAE,CAAC,IAAI,mBAAmB7J,IAAG,MAAM;AACnC,iBAAO;AAAA,QACT;AACA;AAAA,MACF;AAAA,IACJ;AACA,YAAQA,IAAG,QAAQ,KAAK2H,OAAMiD,MAAK;AACnC,iBAAa,WAAWjD,OAAM,QAAQ,QAAQ,QAAQ,CAAC;AACvD,kBAAc,WAAWiD,QAAO,QAAQ,SAAS,QAAQ,CAAC;AAC1D,aAAS9J,KAAI,GAAGA,KAAI,YAAYA,MAAK;AACnC,MAAA+I,GAAE/I,EAAC,IAAI,OAAOA,EAAC;AAAA,IACjB;AACA,aAAS,MAAM,GAAG,MAAM,aAAa,OAAO;AAC1C,MAAA+I,GAAE,MAAM,UAAU,IAAI,QAAQ,GAAG;AAAA,IACnC;AACA,WAAO,aAAa;AAAA,EACtB;AACA,WAAS,kBAAkB,OAAO,QAAQ;AACxC,QAAI,cAAc,GACdgB,OACA;AACJ,IAAAA,QAAO,WAAW,MAAM,MAAM,CAAC,EAAE,CAAC;AAClC,aAAS/J,KAAI,GAAGA,MAAK,QAAQA,MAAK;AAChC,MAAA+J,QAAO,MAAM,MAAM/J,EAAC,EAAE,CAAC;AACvB,UAAI+J,SAAQ;AAAU;AACtB,iBAAWA;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACA,WAAS,cAAc,OAAO,QAAQ;AACpC,QAAIC,QAAO,aAAa,aAAa,gBAAgB,iBAAiBhI,IAAGwB,IAAGlD,IAAG,KAAK,MAAM,IAAI,IAAI,IAAIgE,KAAIQ,KAAIpE;AAC9G,IAAAsB,KAAI,MAAM,CAAC,EAAE,IAAI,MAAM,MAAM,EAAE;AAC/B,IAAAwB,KAAI,MAAM,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE;AAC/B,IAAAlD,KAAI,MAAM,CAAC,EAAE,IAAI,MAAM,MAAM,EAAE,IAAI,MAAM,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE;AAC9D,QAAI,oBAAoB;AACxB,yBAAqB,qBAAqB;AAC1C,aAASN,KAAI,GAAGA,KAAI,QAAQA,MAAK;AAC/B,UAAI,QAAQgC,KAAI,MAAMhC,EAAC,EAAE,IAAIwD,KAAI,MAAMxD,EAAC,EAAE,IAAIM;AAC9C,UAAI,QAAQ,oBAAoB;AAC9B,6BAAqB;AAAA,MACvB,WAAW,QAAQ,oBAAoB;AACrC,6BAAqB;AAAA,MACvB;AAAA,IACF;AACA,SAAK;AACL,SAAK;AACL,SAAK;AACL,IAAAgE,MAAKtC;AACL,IAAA8C,MAAKtB;AACL,IAAA9C,MAAKJ,KAAI;AACT,UAAM,KAAKwE,MAAKR,MAAK;AACrB,WAAO,IAAM;AACb,mBAAe,KAAK5D,MAAKoE,MAAK,MAAM;AACpC,IAAAR,MAAKtC;AACL,IAAA8C,MAAKtB;AACL,IAAA9C,MAAKJ,KAAI;AACT,UAAM,KAAKwE,MAAKR,MAAK;AACrB,WAAO,IAAM;AACb,mBAAe,KAAK5D,MAAKoE,MAAK,MAAM;AACpC,qBAAiB,KAAK,IAAI,aAAa,WAAW;AAClD,sBAAkB,KAAK,IAAI,aAAa,WAAW;AACnD,IAAAkF,SAAQ,kBAAkB;AAC1B,WAAOA,SAAQ,oBAAoB,IAAI;AAAA,EACzC;AACA,WAAS,mBAAmB,OAAO,QAAQ;AACzC,QAAI,MAAM,GACN,MAAM,GACN,MAAM,MAAM,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE,GACjC,MAAM,MAAM,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE,GACjC,MAAM,MAAM,CAAC,EAAE,IAAI,GACnB,MAAM,MAAM,CAAC,EAAE,IAAI,GACnB,MAAM,MAAM,MAAM,MAAM,KACxB,SAAS,IAAM,KACfC,MAAK,MAAM,MAAM,MAAM,OAAO;AAClC,WAAO,IAAM,MAAMA;AAAA,EACrB;AACA,WAAS,QAAQ,OAAO,QAAQlB,IAAGlC,OAAMiD,QAAO;AAC9C,QAAI,OAAO,CAAC,CAAC,CAAC;AACd,aAASvI,KAAI,GAAGA,MAAK,QAAQA,MAAK;AAChC,WAAK,CAAC,EAAEA,EAAC,IAAI,MAAMA,EAAC;AAAA,IACtB;AACA,aAASvB,KAAI,GAAGA,MAAK,QAAQA,MAAK;AAChC,eAAS,KAAK,GAAG,MAAM,SAASA,IAAG,MAAM;AACvC,YAAI,CAAC,KAAKA,EAAC;AAAG,eAAKA,EAAC,IAAI,CAAC;AACzB,YAAI,CAAC,KAAKA,EAAC,EAAE,EAAE;AAAG,eAAKA,EAAC,EAAE,EAAE,IAAI,CAAC;AACjC,aAAKA,EAAC,EAAE,EAAE,EAAE,KAAK,IAAM+I,MAAK,KAAK/I,KAAI,CAAC,EAAE,EAAE,EAAE,IAAI+I,KAAI,KAAK/I,KAAI,CAAC,EAAE,KAAK,CAAC,EAAE;AACxE,aAAKA,EAAC,EAAE,EAAE,EAAE,KAAK,IAAM+I,MAAK,KAAK/I,KAAI,CAAC,EAAE,EAAE,EAAE,IAAI+I,KAAI,KAAK/I,KAAI,CAAC,EAAE,KAAK,CAAC,EAAE;AAAA,MAC1E;AAAA,IACF;AACA,QAAI6G,SAAQ,MAAM;AAChB,eAAS,MAAM,GAAG,OAAO,QAAQ,OAAO;AACtC,QAAAA,MAAK,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC;AAAA,MACzB;AAAA,IACF;AACA,QAAIiD,UAAS,MAAM;AACjB,eAAS,MAAM,GAAG,OAAO,QAAQ,OAAO;AACtC,QAAAA,OAAM,GAAG,IAAI,KAAK,SAAS,GAAG,EAAE,GAAG;AAAA,MACrC;AAAA,IACF;AACA,WAAO,KAAK,MAAM,EAAE,CAAC;AAAA,EACvB;AACA,WAAS,QAAQI,QAAO,OAAO;AAC7B,QAAI,MAAM,CAAC;AACX,IAAAA;AACA,aAAST,KAAI,GAAGA,MAAKS,QAAOT,MAAK;AAC/B,UAAI,KAAK,eAAeA,KAAIS,QAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO;AAAA,EACT;AACA,WAAS,eAAepK,IAAG,OAAO;AAChC,QAAI,cAAc;AAAA,MAChB,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AACA,QAAIA,OAAM,GAAG;AACX,aAAO,MAAM,CAAC;AAAA,IAChB;AACA,QAAI,SAAS,MAAM,SAAS;AAC5B,QAAIA,OAAM,GAAG;AACX,aAAO,MAAM,MAAM;AAAA,IACrB;AACA,QAAIgE,KAAI;AACR,QAAIX,KAAI,IAAIrD;AACZ,QAAI,WAAW,GAAG;AAChB,aAAO,MAAM,CAAC;AAAA,IAChB;AACA,QAAI,WAAW,GAAG;AAChB,aAAO;AAAA,QACL,GAAGqD,KAAIW,GAAE,CAAC,EAAE,IAAIhE,KAAIgE,GAAE,CAAC,EAAE;AAAA,QACzB,GAAGX,KAAIW,GAAE,CAAC,EAAE,IAAIhE,KAAIgE,GAAE,CAAC,EAAE;AAAA,MAC3B;AAAA,IACF;AACA,QAAI,IAAI,QAAQ;AACd,UAAI7D,KAAIkD,KAAIA,IACRhE,KAAIW,KAAIA,IACRF,KAAI,GACJuB,IACAhB,IACAE;AACJ,UAAI,WAAW,GAAG;AAChB,QAAAyD,KAAI,CAACA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAG,WAAW;AAClC,QAAA3C,KAAIlB;AACJ,QAAAE,KAAI,KAAKgD,KAAIrD;AACb,QAAAO,KAAIlB;AAAA,MACN,WAAW,WAAW,GAAG;AACvB,QAAAgC,KAAIlB,KAAIkD;AACR,QAAAhD,KAAI,KAAKF,KAAIH;AACb,QAAAO,KAAI,KAAK8C,KAAIhE;AACb,QAAAS,KAAIE,KAAIX;AAAA,MACV;AACA,aAAO;AAAA,QACL,GAAGgC,KAAI2C,GAAE,CAAC,EAAE,IAAI3D,KAAI2D,GAAE,CAAC,EAAE,IAAIzD,KAAIyD,GAAE,CAAC,EAAE,IAAIlE,KAAIkE,GAAE,CAAC,EAAE;AAAA,QACnD,GAAG3C,KAAI2C,GAAE,CAAC,EAAE,IAAI3D,KAAI2D,GAAE,CAAC,EAAE,IAAIzD,KAAIyD,GAAE,CAAC,EAAE,IAAIlE,KAAIkE,GAAE,CAAC,EAAE;AAAA,MACrD;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,oBAAoB,OAAO;AAClC,QAAIqG,UAAS;AACb,QAAI,CAAC,QAAQ,KAAK,GAAG;AACnB,UAAID,SAAQ;AACZ,UAAIE,OAAM,QAAQF,QAAO,KAAK;AAC9B,eAASlK,KAAI,GAAGA,KAAIkK,SAAQ,GAAGlK,MAAK;AAClC,YAAIgC,KAAIoI,KAAIpK,EAAC,GACTwD,KAAI4G,KAAIpK,KAAI,CAAC;AACjB,QAAAmK,WAAU,KAAKnI,IAAGwB,EAAC;AAAA,MACrB;AAAA,IACF;AACA,WAAO2G;AAAA,EACT;AACA,MAAI,sBAAsB,oBAAI,IAAI;AAClC,WAAS,mBAAmBjG,QAAO;AACjC,QAAI,MAAM,oBAAoB,IAAIA,MAAK;AACvC,QAAI,CAAC,KAAK;AACR,YAAM,CAAC;AACP,UAAI,SAAS,SAASmG,UAAS;AAC7B,eAAO,SAAUtB,IAAG;AAClB,iBAAO,KAAK,IAAIA,IAAG7E,MAAK;AAAA,QAC1B;AAAA,MACF,GACI,SAAS,SAASoG,UAAS;AAC7B,eAAO,SAAUvB,IAAG;AAClB,iBAAO,KAAK,IAAI,IAAIA,IAAG7E,MAAK;AAAA,QAC9B;AAAA,MACF,GACI,SAAS,SAASqG,QAAOjK,IAAG;AAC9B,eAAO,SAAUyI,IAAG;AAClB,iBAAOzI;AAAA,QACT;AAAA,MACF,GACI,SAAS,SAASkK,UAAS;AAC7B,eAAO,SAAUzB,IAAG;AAClB,iBAAOA;AAAA,QACT;AAAA,MACF,GACI,mBAAmB,SAAS0B,oBAAmB;AACjD,eAAO,SAAU1B,IAAG;AAClB,iBAAO,IAAIA;AAAA,QACb;AAAA,MACF,GACI,YAAY,SAAS2B,WAAUC,QAAO;AACxC,eAAO,SAAU5B,IAAG;AAClB,cAAIhJ,KAAI;AACR,mBAASC,KAAI,GAAGA,KAAI2K,OAAM,QAAQ3K,MAAK;AACrC,YAAAD,KAAIA,KAAI4K,OAAM3K,EAAC,EAAE+I,EAAC;AAAA,UACpB;AACA,iBAAOhJ;AAAA,QACT;AAAA,MACF;AACA,UAAI,KAAK,OAAO,CAAC;AACjB,eAASC,KAAI,GAAGA,KAAIkE,QAAOlE,MAAK;AAC9B,YAAI,QAAQ,CAAC,OAAOkE,MAAK,CAAC;AAC1B,iBAAS3C,KAAI,GAAGA,KAAI2C,SAAQlE,IAAGuB,MAAK;AAClC,gBAAM,KAAK,OAAO,CAAC;AAAA,QACrB;AACA,iBAAS,MAAM,GAAG,MAAMvB,IAAG,OAAO;AAChC,gBAAM,KAAK,iBAAiB,CAAC;AAAA,QAC/B;AACA,YAAI,KAAK,UAAU,KAAK,CAAC;AAAA,MAC3B;AACA,UAAI,KAAK,OAAO,CAAC;AACjB,0BAAoB,IAAIkE,QAAO,GAAG;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AACA,WAAS,aAAa,OAAOQ,WAAU;AACrC,QAAI,KAAK,mBAAmB,MAAM,SAAS,CAAC,GACxC,KAAK,GACL,KAAK;AACT,aAAS1E,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,WAAK,KAAK,MAAMA,EAAC,EAAE,IAAI,GAAGA,EAAC,EAAE0E,SAAQ;AACrC,WAAK,KAAK,MAAM1E,EAAC,EAAE,IAAI,GAAGA,EAAC,EAAE0E,SAAQ;AAAA,IACvC;AACA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AACA,WAAS,KAAK,IAAI9B,KAAI;AACpB,WAAO,KAAK,KAAK,KAAK,IAAI,GAAG,IAAIA,IAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,IAAIA,IAAG,GAAG,CAAC,CAAC;AAAA,EACtE;AACA,WAAS,QAAQ,OAAO;AACtB,WAAO,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE;AAAA,EAC9D;AACA,WAAS,eAAe,OAAO8B,WAAU,UAAU;AACjD,QAAI,QAAQ,KAAK,GAAG;AAClB,aAAO;AAAA,QACL,OAAO,MAAM,CAAC;AAAA,QACd,UAAUA;AAAA,MACZ;AAAA,IACF;AACA,QAAIkG,QAAO,aAAa,OAAOlG,SAAQ,GACnC,QAAQ,GACR,SAASA,WACT,YAAY,WAAW,IAAI,IAAI,IAC/B,MAAM;AACV,WAAO,QAAQ,KAAK,IAAI,QAAQ,GAAG;AACjC,gBAAU,OAAQ;AAClB,YAAM,aAAa,OAAO,MAAM;AAChC,eAAS,KAAK,KAAKkG,KAAI;AACvB,MAAAA,QAAO;AAAA,IACT;AACA,WAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,EACF;AACA,WAAS,oBAAoB,OAAOlG,WAAU,UAAU;AACtD,WAAO,eAAe,OAAOA,WAAU,QAAQ,EAAE;AAAA,EACnD;AACA,WAAS,uBAAuB,OAAOA,WAAU,UAAU;AACzD,WAAO,eAAe,OAAOA,WAAU,QAAQ,EAAE;AAAA,EACnD;AACA,WAAS,gBAAgB,OAAOA,WAAU;AACxC,QAAI,KAAK,aAAa,OAAOA,SAAQ,GACjC9B,MAAK,aAAa,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG8B,SAAQ,GAC5DnB,MAAKX,IAAG,IAAI,GAAG,GACfU,MAAKV,IAAG,IAAI,GAAG;AACnB,WAAOW,QAAO,IAAI,WAAW,KAAK,KAAKA,MAAKD,GAAE;AAAA,EAChD;AAsBA,WAAS,uBAAuB,IAAI,IAAIuH,KAAIC,KAAI,OAAO;AACrD,QAAIC,KAAID,MAAK,IACTE,KAAI,KAAKH,KACTI,KAAI,MAAM,KAAKH,OAAM,MAAMD,MAAK,KAChC,SAAS,qBAAqB,KAAK,GACnCK,KAAI,CAACH,KAAI,OAAO,CAAC,EAAE,CAAC,IAAIC,KAAI,OAAO,CAAC,EAAE,CAAC,GAAGD,KAAI,OAAO,CAAC,EAAE,CAAC,IAAIC,KAAI,OAAO,CAAC,EAAE,CAAC,GAAGD,KAAI,OAAO,CAAC,EAAE,CAAC,IAAIC,KAAI,OAAO,CAAC,EAAE,CAAC,GAAGD,KAAI,OAAO,CAAC,EAAE,CAAC,IAAIC,KAAI,OAAO,CAAC,EAAE,CAAC,IAAIC,EAAC,GAC3JE,KAAI,YAAY,MAAM,MAAMD,EAAC,GAC7B,gBAAgB,CAAC;AACrB,QAAIC,MAAK,MAAM;AACb,eAASC,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1B,YAAIC,MAAKF,GAAEC,EAAC,GACRE,MAAK,KAAK,IAAID,KAAI,CAAC,GACnB,KAAK,KAAK,IAAIA,KAAI,CAAC,GACnBE,KAAI;AAAA,UACN,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC,IAAID,MAAK,OAAO,CAAC,EAAE,CAAC,IAAID,MAAK,OAAO,CAAC,EAAE,CAAC;AAAA,UAC1E,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC,IAAIC,MAAK,OAAO,CAAC,EAAE,CAAC,IAAID,MAAK,OAAO,CAAC,EAAE,CAAC;AAAA,QAC5E;AACA,YAAIG,KAAI;AACR,YAAIX,MAAK,OAAO,GAAG;AACjB,UAAAW,MAAKD,GAAE,CAAC,IAAI,OAAOV,MAAK;AAAA,QAC1B,OAAO;AACL,UAAAW,MAAKD,GAAE,CAAC,IAAI,OAAOT,MAAK;AAAA,QAC1B;AACA,YAAIO,OAAM,KAAKA,OAAM,KAAOG,MAAK,KAAKA,MAAK,GAAK;AAC9C,wBAAc,KAAKD,EAAC;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAiBA,WAAS,4BAA4B,OAAO,MAAM;AAChD,WAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC;AAAA,EAC7M;AACA,WAAS,qBAAqB,OAAO;AACnC,WAAO,CAAC,4BAA4B,OAAO,GAAG,GAAG,4BAA4B,OAAO,GAAG,CAAC;AAAA,EAC1F;AACA,WAAS,YAAYE,IAAGC,IAAGC,IAAGC,IAAG;AAC/B,QAAIC,KAAIH,KAAID,IACRK,KAAIH,KAAIF,IACRM,KAAIH,KAAIH,IACRO,MAAK,IAAIF,KAAI,KAAK,IAAID,IAAG,CAAC,KAAK,GAC/B,KAAK,IAAIA,KAAIC,KAAI,KAAKC,KAAI,IAAI,KAAK,IAAIF,IAAG,CAAC,KAAK,IAChDI,KAAI,KAAK,IAAID,IAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,GAClCE,IACAC,IACAC,KAAI,CAAC,GAAG,GAAG,CAAC;AAChB,QAAIH,MAAK,GACP;AACE,MAAAC,KAAI,MAAM,IAAI,KAAK,KAAKD,EAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAKA,EAAC,CAAC,GAAG,IAAI,CAAC;AACxE,MAAAE,KAAI,MAAM,IAAI,KAAK,KAAKF,EAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAKA,EAAC,CAAC,GAAG,IAAI,CAAC;AACxE,MAAAG,GAAE,CAAC,IAAI,CAACP,KAAI,KAAKK,KAAIC;AACrB,MAAAC,GAAE,CAAC,IAAI,CAACP,KAAI,KAAKK,KAAIC,MAAK;AAC1B,MAAAC,GAAE,CAAC,IAAI,CAACP,KAAI,KAAKK,KAAIC,MAAK;AAC1B,UAAI,KAAK,IAAI,KAAK,KAAK,CAAC,KAAKD,KAAIC,MAAK,CAAC,MAAM,GAAG;AAC9C,QAAAC,GAAE,CAAC,IAAI;AACP,QAAAA,GAAE,CAAC,IAAI;AAAA,MACT;AAAA,IACF,OACA;AACE,UAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,KAAK,IAAIJ,IAAG,CAAC,CAAC,CAAC;AACjD,MAAAI,GAAE,CAAC,IAAI,IAAI,KAAK,KAAK,CAACJ,EAAC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAIH,KAAI;AAClD,MAAAO,GAAE,CAAC,IAAI,IAAI,KAAK,KAAK,CAACJ,EAAC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,MAAM,CAAC,IAAIH,KAAI;AAClE,MAAAO,GAAE,CAAC,IAAI,IAAI,KAAK,KAAK,CAACJ,EAAC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,MAAM,CAAC,IAAIH,KAAI;AAAA,IACpE;AACF,aAASQ,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1B,UAAID,GAAEC,EAAC,IAAI,KAAKD,GAAEC,EAAC,IAAI,GAAK;AAC1B,QAAAD,GAAEC,EAAC,IAAI;AAAA,MACT;AAAA,IACF;AACA,WAAOD;AAAA,EACT;AAEA,MAAI,gBAAgB,SAAU,kBAAkB;AAC9C,IAAAE,WAAUC,gBAAe,gBAAgB;AACzC,QAAI,SAASC,cAAaD,cAAa;AACvC,aAASA,eAAcE,SAAQ;AAC7B,UAAI;AACJ,MAAAC,iBAAgB,MAAMH,cAAa;AACnC,cAAQ,OAAO,KAAK,MAAME,OAAM;AAChC,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQ,MAAM;AAC7D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,CAAC;AAC1D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQL,eAAc,WAAW;AAChF,YAAM,OAAOE,QAAO;AACpB,YAAM,OAAOA,QAAO;AACpB,YAAM,OAAOA,QAAO;AACpB,YAAM,OAAOA,QAAO;AACpB,YAAM,KAAKA,QAAO;AAClB,YAAM,KAAKA,QAAO;AAClB,YAAM,KAAKA,QAAO;AAClB,YAAM,KAAKA,QAAO;AAClB,YAAM,QAAQ,CAAC;AAAA,QACb,GAAG,MAAM;AAAA,QACT,GAAG,MAAM;AAAA,MACX,GAAG;AAAA,QACD,GAAG,MAAM;AAAA,QACT,GAAG,MAAM;AAAA,MACX,GAAG;AAAA,QACD,GAAG,MAAM;AAAA,QACT,GAAG,MAAM;AAAA,MACX,GAAG;AAAA,QACD,GAAG,MAAM;AAAA,QACT,GAAG,MAAM;AAAA,MACX,CAAC;AACD,YAAM,UAAU;AAAA,QACd,MAAM,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,MAAM,IAAI;AAAA,QACzD,MAAM,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,MAAM,IAAI;AAAA,QACzD,MAAM,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,MAAM,IAAI;AAAA,QACzD,MAAM,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,MAAM,IAAI;AAAA,MAC3D;AACA,aAAO;AAAA,IACT;AACA,IAAAI,cAAaN,gBAAe,CAAC;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,gBAAgB;AACtC,gBAAQ,iBAAiB,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,MAAM,OAAO,KAAK,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,MAC5K;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYO,WAAU,UAAU;AAC9C,QAAAA,YAAWP,eAAc,mBAAmB,KAAK,OAAOO,WAAU,QAAQ;AAC1E,eAAO,aAAa,KAAK,OAAOA,SAAQ;AAAA,MAC1C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBA,WAAU,UAAU;AACpD,QAAAA,YAAWP,eAAc,mBAAmB,KAAK,OAAOO,WAAU,QAAQ;AAC1E,eAAO,gBAAgB,KAAK,OAAOA,SAAQ;AAAA,MAC7C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmBA,WAAU,UAAU,UAAU;AAC/D,QAAAA,YAAWP,eAAc,mBAAmB,KAAK,OAAOO,WAAU,QAAQ;AAC1E,eAAO,oBAAoB,KAAK,OAAOA,WAAU,QAAQ;AAAA,MAC3D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,YAAI,KAAK,UAAU,QAAQ,KAAK,WAAW,GAAG;AAC5C,eAAK,SAAS,oBAAoB,KAAK,KAAK;AAAA,QAC9C;AACA,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuBC,IAAGC,IAAG;AAC3C,YAAIC,KAAI,oBAAoB;AAAA,UAC1B,GAAGF;AAAA,UACH,GAAGC;AAAA,QACL,GAAG,KAAK,KAAK;AACb,eAAO;AAAA,UACL,GAAG,KAAK,KAAK,KAAK,IAAIC,GAAE,MAAM,IAAIF,IAAG,CAAC,IAAI,KAAK,IAAIE,GAAE,MAAM,IAAID,IAAG,CAAC,CAAC;AAAA,UACpE,GAAGC,GAAE,MAAM;AAAA,UACX,GAAGA,GAAE,MAAM;AAAA,UACX,GAAG,IAAIA,GAAE;AAAA,UACT,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,QACN;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,IAAI,IAAIC,KAAIC,KAAI;AAC/C,eAAO,uBAAuB,IAAI,IAAID,KAAIC,KAAI,KAAK,KAAK;AAAA,MAC1D;AAAA,IACF,CAAC,GAAG,CAAC;AAAA,MACH,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,QAAQL,WAAU,UAAU;AAC7D,YAAI,UAAU;AACZ,UAAAA,YAAW,uBAAuB,QAAQA,YAAW,IAAI,IAAI,GAAGA,SAAQ;AAAA,QAC1E;AACA,eAAOA;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOP;AAAA,EACT,EAAE,eAAe;AACjB,EAAAI,iBAAgB,eAAe,eAAe,QAAQ;AAEtD,MAAI,kBAAkB,SAAU,uBAAuB;AACrD,IAAAL,WAAUc,kBAAiB,qBAAqB;AAChD,QAAI,SAASZ,cAAaY,gBAAe;AACzC,aAASA,iBAAgB,YAAYX,SAAQ;AAC3C,UAAI;AACJ,MAAAC,iBAAgB,MAAMU,gBAAe;AACrC,cAAQ,OAAO,KAAK,MAAM,YAAYX,OAAM;AAC5C,YAAM,aAAa;AACnB,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQQ,iBAAgB,IAAI;AAC3E,MAAAT,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,MAAM;AACpE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,eAAe,MAAM;AACpE,MAAAH,UAASA,WAAU,CAAC;AACpB,YAAM,cAAcA,QAAO,aAAa;AACxC,YAAM,cAAc;AACpB,aAAO;AAAA,IACT;AACA,IAAAI,cAAaO,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAAS,eAAe;AAC7B,eAAO,KAAK;AAAA,MACd;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,mBAAkBC,QAAO,sBAAsB,sBAAsB,KAAK,KAAK;AAC7F,YAAI,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,GACrDL,KAAI;AAAA,UACN,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AACA,YAAI,CAAC,eAAe;AAClB,cAAI,IAAI,CAAC,MAAM,GAAG;AAChB,YAAAA,GAAE,IAAI,qBAAqB,OAAO,qBAAqB,OAAOK,OAAM,IAAI,KAAK,cAAcA,OAAM,IAAI,KAAK;AAAA,UAC5G,OAAO;AACL,YAAAL,GAAE,IAAIK,OAAM,IAAI,KAAK,cAAc,IAAI,CAAC;AAAA,UAC1C;AACA,cAAI,IAAI,CAAC,MAAM,GAAG;AAChB,YAAAL,GAAE,IAAI,qBAAqB,OAAO,qBAAqB,OAAOK,OAAM,IAAI,KAAK,cAAcA,OAAM,IAAI,KAAK;AAAA,UAC5G,OAAO;AACL,YAAAL,GAAE,IAAIK,OAAM,IAAI,KAAK,cAAc,IAAI,CAAC;AAAA,UAC1C;AAAA,QACF,OAAO;AACL,cAAI,IAAI,CAAC,MAAM,GAAG;AAChB,YAAAL,GAAE,IAAI,qBAAqB,OAAO,qBAAqB,OAAOK,OAAM,IAAI,KAAK,cAAcA,OAAM,IAAI,KAAK;AAAA,UAC5G,OAAO;AACL,YAAAL,GAAE,IAAIK,OAAM,IAAI,KAAK,cAAc,IAAI,CAAC;AAAA,UAC1C;AACA,cAAI,IAAI,CAAC,MAAM,GAAG;AAChB,YAAAL,GAAE,IAAI,qBAAqB,OAAO,qBAAqB,OAAOK,OAAM,IAAI,KAAK,cAAcA,OAAM,IAAI,KAAK;AAAA,UAC5G,OAAO;AACL,YAAAL,GAAE,IAAIK,OAAM,IAAI,KAAK,cAAc,IAAI,CAAC;AAAA,UAC1C;AAAA,QACF;AACA,eAAOL;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,WAAWA,IAAG,IAAI,IAAI,IAAI,IAAI;AAC3D,YAAI,KACA,MACA,MAAM,GAAG,OAAO,GAAG,OAAO,KAAK,GAC/B,MAAM,GAAG,OAAO,GAAG,OAAO,KAAK,GAC/B,MAAM,GAAG,OAAO,GAAG,OAAO,IAAI,IAC9B,MAAM,GAAG,OAAO,GAAG,OAAO,IAAI;AAClC,YAAI,KAAK,WAAW,MAAM;AACxB,gBAAM,KAAK,kBAAkB;AAAA,YAC3B,GAAG;AAAA,YACH,GAAG;AAAA,UACL,GAAG,IAAI,IAAI,UAAU,IAAI,UAAU,EAAE;AACrC,iBAAO,KAAK,kBAAkB;AAAA,YAC5B,GAAG;AAAA,YACH,GAAG;AAAA,UACL,GAAG,IAAI,IAAI,UAAU,IAAI,UAAU,EAAE;AAAA,QACvC,OAAO;AACL,gBAAM,KAAK,SAAS,cAAc,CAAC;AACnC,iBAAO,KAAK,SAAS,cAAc,CAAC;AAAA,QACtC;AACA,aAAK,WAAW;AAAA,UACd,eAAe,CAAC,KAAK,IAAI;AAAA,UACzB,QAAQA,GAAE;AAAA,UACV,QAAQA,GAAE;AAAA,QACZ;AACA,aAAK,YAAY,eAAe;AAAA,UAC9B,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,MAAM,IAAI;AAAA,UACV,MAAM,IAAI;AAAA,UACV,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,QACb,CAAC;AAAA,MACH;AAAA,IACF,CAAC,CAAC;AACF,WAAOG;AAAA,EACT,EAAE,uBAAuB;AACzB,EAAAT,iBAAgB,iBAAiB,QAAQ,QAAQ;AAEjD,WAAS,SAAS,IAAI,IAAIO,KAAIC,KAAI;AAChC,QAAI,MAAMD,OAAMC,OAAM,IAAI;AACxB,aAAO;AAAA,IACT,WAAW,MAAMD,OAAM,MAAMC,KAAI;AAC/B,aAAO;AAAA,IACT,WAAWD,OAAM,MAAMC,OAAM,IAAI;AAC/B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAAS,kBAAkB,MAAM,MAAM,SAAS,YAAY,YAAYI,KAAIC,KAAI,UAAU,gBAAgB;AACxG,QAAI,YAAY,gBAAgB;AAC9B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AACA,QAAI,YAAY,GAAG;AACjB,UAAI,WAAW,QAAQ,KAAK,WAAW,QAAQ,GAAG;AAChD,eAAO;AAAA,UACL,GAAG,QAAQ,WAAW,IAAI,MAAM,KAAKD,MAAKA;AAAA,UAC1C,GAAG;AAAA,QACL;AAAA,MACF,WAAW,WAAW,QAAQ,KAAK,WAAW,QAAQ,GAAG;AACvD,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG,QAAQ,WAAW,IAAI,MAAM,KAAKC,MAAKA;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO;AAAA,UACL,GAAG,OAAO,KAAKD;AAAA,UACf,GAAG,OAAO,KAAKC;AAAA,QACjB;AAAA,MACF;AAAA,IACF,WAAW,YAAY,GAAG;AACxB,UAAI,WAAW,QAAQ,KAAK,WAAW,QAAQ,GAAG;AAChD,eAAO;AAAA,UACL,GAAG,QAAQ,WAAW,IAAI,MAAM,KAAKD,MAAKA;AAAA,UAC1C,GAAG;AAAA,QACL;AAAA,MACF,WAAW,WAAW,QAAQ,KAAK,WAAW,QAAQ,GAAG;AACvD,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG,QAAQ,WAAW,IAAI,MAAM,KAAKC,MAAKA;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO;AAAA,UACL,GAAG,OAAOD;AAAA,UACV,GAAG,OAAO,KAAKC;AAAA,QACjB;AAAA,MACF;AAAA,IACF,WAAW,YAAY,GAAG;AACxB,UAAI,WAAW,QAAQ,KAAK,WAAW,QAAQ,GAAG;AAChD,eAAO;AAAA,UACL,GAAG,QAAQ,WAAW,IAAI,MAAM,KAAKD,MAAKA;AAAA,UAC1C,GAAG;AAAA,QACL;AAAA,MACF,WAAW,WAAW,QAAQ,KAAK,WAAW,QAAQ,GAAG;AACvD,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG,QAAQ,WAAW,IAAI,MAAM,KAAKC,MAAKA;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO;AAAA,UACL,GAAG,OAAO,KAAKD;AAAA,UACf,GAAG,OAAO,KAAKC;AAAA,QACjB;AAAA,MACF;AAAA,IACF,WAAW,YAAY,GAAG;AACxB,UAAI,WAAW,QAAQ,KAAK,WAAW,QAAQ,GAAG;AAChD,eAAO;AAAA,UACL,GAAG,QAAQ,WAAW,IAAI,MAAM,KAAKD,MAAKA;AAAA,UAC1C,GAAG;AAAA,QACL;AAAA,MACF,WAAW,WAAW,QAAQ,KAAK,WAAW,QAAQ,GAAG;AACvD,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG,QAAQ,WAAW,IAAI,MAAM,KAAKC,MAAKA;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,eAAO;AAAA,UACL,GAAG,OAAOD;AAAA,UACV,GAAG,OAAO,KAAKC;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,wBAAwB,SAAU,uBAAuB;AAC3D,IAAAlB,WAAUmB,wBAAuB,qBAAqB;AACtD,QAAI,SAASjB,cAAaiB,sBAAqB;AAC/C,aAASA,uBAAsB,YAAYhB,SAAQ;AACjD,UAAI;AACJ,MAAAC,iBAAgB,MAAMe,sBAAqB;AAC3C,cAAQ,OAAO,KAAK,MAAM,YAAYhB,OAAM;AAC5C,YAAM,aAAa;AACnB,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQa,uBAAsB,IAAI;AACjF,MAAAd,iBAAgBC,wBAAuB,KAAK,GAAG,iBAAiB,MAAM;AACtE,YAAM,YAAYH,QAAO,aAAa;AACtC,YAAM,SAASA,QAAO,UAAU;AAChC,YAAM,iBAAiBA,QAAO,kBAAkB;AAChD,YAAM,YAAYA,QAAO,eAAeA,QAAO,gBAAgB;AAC/D,aAAO;AAAA,IACT;AACA,IAAAI,cAAaY,wBAAuB,CAAC;AAAA,MACnC,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,WAAWhB,SAAQ,IAAI,IAAIiB,IAAGC,IAAG;AAC9D,YAAI,MAAM,GAAG,OAAO,GAAG,OAAO,IAAID,IAC9B,MAAM,GAAG,OAAO,GAAG,OAAO,IAAIC,IAC9B,MAAM,GAAG,OAAO,GAAG,OAAOD,KAAI,GAC9B,MAAM,GAAG,OAAO,GAAG,OAAOC,KAAI;AAClC,YAAI,GAAG,MAAM,GAAG;AACd,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,GAAG,MAAM,GAAG;AACd,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,GAAG,MAAM,GAAG;AACd,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,GAAG,MAAM,GAAG;AACd,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,GAAG,MAAM,GAAG;AACd,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,GAAG,MAAM,GAAG;AACd,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,GAAG,MAAM,GAAG;AACd,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,GAAG,MAAM,GAAG;AACd,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,KAAK,WAAW,MAAM;AACxB,cAAI,SAAS,MAAM,OAAO,GACtB,SAAS,MAAM,OAAO,GACtB,UAAU,SAAS,KAAK,KAAK,KAAK,GAAG,GACrC,WAAW,KAAK,KAAK,KAAK,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AACxE,eAAK,gBAAgB,kBAAkB,OAAO,OAAO,SAASlB,QAAO,WAAWA,QAAO,WAAW,KAAK,WAAW,KAAK,WAAW,UAAU,KAAK,cAAc;AAAA,QACjK,OAAO;AACL,eAAK,gBAAgB,KAAK,SAAS,cAAc,CAAC;AAAA,QACpD;AACA,YAAI,MAAM,MAAM,MAAM;AACtB,eAAO,KAAK,cAAc;AAC1B,eAAO,KAAK,cAAc;AAC1B,eAAO,KAAK,cAAc;AAC1B,eAAO,KAAK,cAAc;AAC1B,aAAK,WAAW;AAAA,UACd,eAAe,CAAC,KAAK,eAAe,KAAK,aAAa;AAAA,UACtD,QAAQA,QAAO;AAAA,UACf,QAAQA,QAAO;AAAA,QACjB;AACA,aAAK,YAAY,eAAe;AAAA,UAC9B,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC,CAAC;AACF,WAAOgB;AAAA,EACT,EAAE,uBAAuB;AACzB,EAAAd,iBAAgB,uBAAuB,QAAQ,cAAc;AAE7D,aAAW,SAAS,gBAAgB,MAAM,eAAe;AACzD,aAAW,SAAS,sBAAsB,MAAM,qBAAqB;AAErE,WAAS,IAAIiB,IAAG;AACd,WAAOA,KAAI,IAAI,KAAKA,OAAM,IAAI,IAAI;AAAA,EACpC;AACA,WAAS,kBAAkB,SAAS;AAClC,WAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;AAAA,EACpE;AACA,WAAS,UAAUC,IAAG;AACpB,WAAO,KAAK,KAAK,KAAK,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,GAAG,CAAC,CAAC;AAAA,EACtE;AACA,WAAS,YAAYpC,IAAG;AACtB,QAAI,KAAK,CAAC;AACV,OAAG,KAAK,MAAM,IAAIA,EAAC;AACnB,WAAO;AAAA,EACT;AACA,MAAI,qBAAqB,SAAU,oBAAoB;AACrD,IAAAa,WAAUwB,qBAAoB,kBAAkB;AAChD,QAAI,SAAStB,cAAasB,mBAAkB;AAC5C,aAASA,oBAAmB,YAAYrB,SAAQ;AAC9C,UAAI;AACJ,MAAAC,iBAAgB,MAAMoB,mBAAkB;AACxC,cAAQ,OAAO,KAAK,MAAM,YAAYrB,OAAM;AAC5C,YAAM,aAAa;AACnB,MAAAE,iBAAgBC,wBAAuB,KAAK,GAAG,QAAQkB,oBAAmB,IAAI;AAC9E,MAAAnB,iBAAgBC,wBAAuB,KAAK,GAAG,oBAAoB,CAAC,CAAC;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,YAAY,MAAM;AACjE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,sBAAsB,MAAM;AAC3E,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,gBAAgB,MAAM;AACrE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,SAAS,MAAM;AAC9D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,mBAAmB,MAAM;AACxE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,kBAAkB,MAAM;AACvE,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,uBAAuB,MAAM;AAC5E,YAAM,WAAWH,QAAO,YAAY,QAAQ,MAAMA,QAAO,QAAQ,IAAI,MAAMA,QAAO;AAClF,YAAM,eAAeA,QAAO,gBAAgB,OAAOA,QAAO,eAAe;AACzE,YAAM,qBAAqBA,QAAO,uBAAuB;AACzD,YAAM,QAAQ;AACd,YAAM,QAAQ;AACd,YAAM,kBAAkB;AACxB,YAAM,iBAAiBA,QAAO,kBAAkB;AAChD,YAAM,sBAAsB;AAC5B,aAAO;AAAA,IACT;AACA,IAAAI,cAAaiB,qBAAoB,CAAC;AAAA,MAChC,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,eAAO,CAAC,IAAI,EAAE;AAAA,MAChB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAYf,IAAGC,IAAG,WAAW;AAC3C,YAAI,KAAK,UAAUD,MAAK,KAAK,UAAUC,IAAG;AACxC;AAAA,QACF;AACA,YAAI,KAAK,KAAK,SAAS,OAAO,UAAU,KAAK,KAAK,OAC9C,KAAK,KAAK,SAAS,OAAO,UAAU,KAAK,KAAK,OAC9Ce,KAAI,OAAOhB,KAAI,MAAM;AACzB,aAAK,QAAQA;AACb,aAAK,QAAQC;AACb,aAAK,iBAAiB,KAAK,CAAC,IAAI,IAAID,IAAGC,IAAGe,EAAC,CAAC;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,WAAW;AACvC,YAAI,UAAU,MACVC,OACA,kBACA;AACJ,iBAAS3B,KAAI,GAAGA,KAAI,KAAK,iBAAiB,SAAS,GAAGA,MAAK;AACzD,oBAAU,WAAW,YAAY,KAAK,iBAAiBA,EAAC,CAAC;AACzD,UAAA2B,QAAO,YAAY,KAAK,iBAAiB3B,KAAI,CAAC,CAAC;AAC/C,6BAAmB,kBAAkB,OAAO;AAC5C,0BAAgB,kBAAkB2B,KAAI;AACtC,cAAI,KAAK,eAAe,KAAK,QAAQ,CAAC,MAAMA,MAAK,CAAC,GAAG;AACnD,gBAAI,eAAe,KAAK,IAAI,UAAU,OAAO,GAAG,UAAUA,KAAI,CAAC;AAC/D,gBAAI,cAAc,KAAK,IAAI,KAAK,cAAc,eAAe,CAAC;AAC9D,oBAAQ,CAAC,KAAK,iBAAiB,CAAC,IAAI;AACpC,oBAAQ,CAAC,KAAK,iBAAiB,CAAC,IAAI;AACpC,YAAAA,MAAK,CAAC,KAAK,cAAc,CAAC,IAAI;AAC9B,YAAAA,MAAK,CAAC,KAAK,cAAc,CAAC,IAAI;AAC9B,gBAAI,KAAK,iBAAiB,CAAC,MAAM,cAAc,CAAC,KAAK,cAAc,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,cAAc,CAAC,KAAK,cAAc,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,cAAc,CAAC,KAAK,iBAAiB,CAAC,MAAM,cAAc,CAAC,KAAK,cAAc,CAAC,MAAM,IAC9P,OAAOA,MAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,IAAI,IAClC,OAAOA,MAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,IAAI,IAClC,WAAW,SAAS,MACpBC,MAAK,YAAY,MAAM,CAAC,YAAY,CAAC,KAAKD,MAAK,CAAC,IAAI,QAAQ,CAAC,GAC7DE,MAAK,YAAY,MAAM,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,IAAIF,MAAK,CAAC;AACjE,iBAAK,YAAY,iBAAiB;AAAA,cAChC,IAAI,QAAQ,CAAC;AAAA,cACb,IAAI,QAAQ,CAAC;AAAA,cACb,IAAI,QAAQ,CAAC;AAAA,cACb,IAAI,QAAQ,CAAC;AAAA,YACf,CAAC;AACD,iBAAK,YAAY,YAAY;AAAA,cAC3B,GAAG;AAAA,cACH,IAAI,QAAQ,CAAC;AAAA,cACb,IAAI,QAAQ,CAAC;AAAA,cACb,IAAIA,MAAK,CAAC;AAAA,cACV,IAAIA,MAAK,CAAC;AAAA,cACV,IAAIC;AAAA,cACJ,IAAIC;AAAA,cACJ;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AACL,iBAAK,YAAY,iBAAiB;AAAA,cAChC,IAAI,QAAQ,CAAC;AAAA,cACb,IAAI,QAAQ,CAAC;AAAA,cACb,IAAI,QAAQ,CAAC;AAAA,cACb,IAAI,QAAQ,CAAC;AAAA,YACf,CAAC;AAAA,UACH;AACA,oBAAUF;AAAA,QACZ;AACA,YAAIA,SAAQ,MAAM;AAChB,eAAK,YAAY,iBAAiB;AAAA,YAChC,IAAIA,MAAK,CAAC;AAAA,YACV,IAAIA,MAAK,CAAC;AAAA,YACV,IAAIA,MAAK,CAAC;AAAA,YACV,IAAIA,MAAK,CAAC;AAAA,UACZ,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,WAAWvB,SAAQ;AAC1C,YAAI,SAAS;AACb,aAAK,iBAAiB,SAAS;AAC/B,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,kBAAkB;AACvB,YAAI,uBAAuB,SAAS0B,sBAAqB,MAAM;AAC7D,iBAAO,CAAC,UAAU,YAAY,UAAU,YAAY,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC5F,GACI,kBAAkB;AAAA,UACpB,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,UAAU,SAAS,SAAS,MAAM;AAChC,gBAAI,KAAK,WACLC,OAAM,SAAS,MAAM,IAAI,GACzB,iBAAiB;AAAA,cACnB,KAAK,SAASrB,KAAI;AAChB,uBAAO,GAAG,GAAGqB,IAAG,MAAM,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,GAAGA,IAAG,MAAM,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,GAAG;AAAA,cAC/O;AAAA,cACA,KAAK,SAASpB,KAAI;AAChB,uBAAO,GAAG,GAAGoB,IAAG,MAAM,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,GAAGA,IAAG,MAAM,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,GAAG;AAAA,cAC/O;AAAA,YACF;AACA,gBAAI,CAAC,OAAO,sBAAsB,eAAe,IAAI,EAAE,GAAG;AACxD,qBAAO;AAAA,gBACL,KAAK,EAAE,UAAU,KAAK,UAAU,MAAM,GAAG,UAAU,aAAa,UAAU,KAAK,UAAU,MAAM,GAAG,UAAU,QAAQ;AAAA,gBACpH,KAAK,CAAC,UAAU,aAAa,UAAU,KAAK,UAAU,MAAM,GAAG,UAAU,WAAW,UAAU,KAAK,UAAU,MAAM,CAAC;AAAA,cACtH,EAAE,IAAI;AAAA,YACR,OAAO;AACL,qBAAO,CAAC,UAAU,YAAY,UAAU,YAAY,UAAU,UAAU,UAAU,QAAQ;AAAA,YAC5F;AAAA,UACF;AAAA,QACF;AACA,YAAI,QAAQ,gBAAgB,UAAU,iBAAiB,EAAE,UAAU,UAAU,GACzE,MAAM,UAAU,eAAe,MAAM,IAAI,GACzC,OAAO,UAAU,eAAe,MAAM,IAAI,GAC1C,KAAK,MAAM,GAAG,GACd,MAAM,MAAM,IAAI,GAChB,KAAK,MAAM,MAAM,CAAC,GAClB,MAAM,MAAM,OAAO,CAAC;AACxB,aAAK,YAAY,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS;AAC9C,YAAI,OAAO,UAAU,cAAc,UAAU,WAAW,UAAU,cAAc,KAAK,UACjF,OAAO,UAAU,cAAc,UAAU,WAAW,UAAU,cAAc,KAAK;AACrF,YAAI,eAAe;AAAA,UACjB,GAAG,CAAC,GAAG,CAAC;AAAA,UACR,GAAG,CAAC,GAAG,CAAC;AAAA,QACV,GACI,kBAAkB;AAAA,UACpB,eAAe,SAAS,cAAc,MAAMC,KAAIC,MAAKC,KAAIC,MAAK;AAC5D,gBAAI,KAAK,WACL,MAAM;AAAA,cACR,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAAA,cAChF,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAAA,YAClF,GACIC,SAAQ;AAAA,cACV,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC;AAAA,cACpE,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC;AAAA,YACtE,GACI,WAAW;AAAA,cACb,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;AAAA,cAC9C,GAAG,CAAC,CAAC,GAAG,YAAY,IAAI,GAAG,CAAC,GAAG,UAAU,IAAI,CAAC;AAAA,YAChD,GACI,aAAa;AAAA,cACf,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC;AAAA,cAChC,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;AAAA,YAClC,GACI,aAAa;AAAA,cACf,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,QAAQ,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC;AAAA,cAC5D,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC;AAAA,YAC9D,GACI,kBAAkB;AAAA,cACpB,GAAG,CAAC,CAAC,GAAG,YAAY,IAAI,GAAG,CAAC,GAAG,UAAU,IAAI,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC;AAAA,cAC1E,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC;AAAA,YAC5E,GACI,aAAa;AAAA,cACf,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ;AAAA,cAC9B,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ;AAAA,YAChC,GACI,QAAQ,aAAa,IAAI,EAAE,CAAC,GAC5B,QAAQ,aAAa,IAAI,EAAE,CAAC,GAC5B,MAAM,GAAG,GAAG,KAAK,IAAI,GACrB,MAAM,GAAG,GAAG,KAAK,IAAI,GACrB,eAAe,GAAG,GAAG,KAAK,MAAM,MAAM,WAAW,IAAI,EAAE,CAAC,IAAI,WAAW,IAAI,EAAE,CAAC,KAAK,GAAG,GAAG,KAAK,MAAM,KAAK,WAAW,IAAI,EAAE,CAAC,IAAI,WAAW,IAAI,EAAE,CAAC,GACjJ,QAAQA,OAAM,IAAI,EAAE,GAAG,EAAE,CAAC,GAC1B,QAAQA,OAAM,IAAI,EAAE,GAAG,EAAE,CAAC,GAC1B,iBAAiB,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG;AACvC,gBAAI,GAAG,YAAY,eAAe,CAAC,KAAK,GAAG,YAAY,eAAe,CAAC,KAAK,cAAc;AACxF,qBAAO,SAAS,IAAI;AAAA,YACtB,WAAW,GAAG,YAAY,eAAe,CAAC,KAAK,QAAQ,OAAO;AAC5D,qBAAO,WAAW,IAAI;AAAA,YACxB,WAAW,GAAG,YAAY,eAAe,CAAC,KAAK,SAAS,SAAS,GAAG,YAAY,eAAe,CAAC,KAAK,CAAC,cAAc;AAClH,qBAAO,gBAAgB,IAAI;AAAA,YAC7B,WAAW,GAAG,YAAY,eAAe,CAAC,KAAK,GAAG,YAAY,eAAe,CAAC,KAAK,cAAc;AAC/F,qBAAO,WAAW,IAAI;AAAA,YACxB;AAAA,UACF;AAAA,UACA,YAAY,SAAS,WAAW,MAAM,WAAW,gBAAgB,SAAS,cAAc;AACtF,gBAAI,KAAK,WACL,SAAS;AAAA,cACX,KAAK,GAAG,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,WAAW,OAAO,IAAI,KAAK,IAAI,WAAW,OAAO;AAAA,cACjF,KAAK,GAAG,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,WAAW,OAAO,IAAI,KAAK,IAAI,WAAW,OAAO;AAAA,YACnF,EAAE,IAAI;AACN,mBAAO;AAAA,cACL,KAAK,CAAC,CAAC,QAAQ,cAAc,GAAG,CAAC,QAAQ,YAAY,GAAG,CAAC,SAAS,YAAY,CAAC;AAAA,cAC/E,KAAK,CAAC,CAAC,gBAAgB,MAAM,GAAG,CAAC,cAAc,MAAM,GAAG,CAAC,cAAc,OAAO,CAAC;AAAA,YACjF,EAAE,IAAI;AAAA,UACR;AAAA,UACA,UAAU,SAAS,SAAS,MAAMJ,KAAIC,MAAKC,KAAIC,MAAK;AAClD,gBAAI,KAAK,WACL,YAAY;AAAA,cACd,KAAK;AAAA,cACL,KAAK;AAAA,YACP,EAAE,IAAI,GACF,MAAM;AAAA,cACR,KAAK;AAAA,cACL,KAAK;AAAA,YACP,EAAE,IAAI,GACF,aAAa,GAAG,OAAO,KAAK,YAAY,IAAI,uBAAuB;AACvE,gBAAI/B,QAAO,eAAe,cAAcA,QAAO,eAAe,WAAW;AACvE,kBAAI,OAAO6B,QAAO,IAAI7B,QAAO,eAAe,QAAQ,iBAAiB,SAAS,KAAKA,QAAO,WAAW,GAAG,IAAI,OAAO;AACnH,qBAAO;AAAA,gBACL,KAAK,CAAC,CAAC4B,KAAI,IAAI,GAAG,CAACE,KAAI,IAAI,CAAC;AAAA,gBAC5B,KAAK,CAAC,CAAC,MAAMF,GAAE,GAAG,CAAC,MAAME,GAAE,CAAC;AAAA,cAC9B,EAAE,IAAI;AAAA,YACR,WAAW,CAAC,cAAc,GAAG,GAAG,GAAG,MAAM,KAAKF,MAAKE,OAAM,GAAG,GAAG,GAAG,MAAM,MAAMF,MAAKE,KAAI;AACrF,qBAAO;AAAA,gBACL,KAAK,CAAC,CAACF,KAAI,IAAI,GAAG,CAACE,KAAI,IAAI,CAAC;AAAA,gBAC5B,KAAK,CAAC,CAAC,MAAMF,GAAE,GAAG,CAAC,MAAME,GAAE,CAAC;AAAA,cAC9B,EAAE,IAAI;AAAA,YACR,WAAW,GAAG,GAAG,GAAG,MAAM,KAAKF,MAAKE,OAAM,GAAG,GAAG,GAAG,MAAM,MAAMF,MAAKE,KAAI;AACtE,qBAAO;AAAA,gBACL,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;AAAA,gBAClC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC;AAAA,cACpC,EAAE,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AACA,YAAItB,KAAI,gBAAgB,UAAU,iBAAiB,EAAE,UAAU,YAAY,IAAI,KAAK,IAAI,GAAG;AAC3F,YAAIA,IAAG;AACL,mBAASZ,KAAI,GAAGA,KAAIY,GAAE,QAAQZ,MAAK;AACjC,iBAAK,YAAYY,GAAEZ,EAAC,EAAE,CAAC,GAAGY,GAAEZ,EAAC,EAAE,CAAC,GAAG,SAAS;AAAA,UAC9C;AAAA,QACF;AACA,aAAK,YAAY,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS;AAC9C,aAAK,YAAY,UAAU,IAAI,UAAU,IAAI,SAAS;AACtD,aAAK,cAAc,SAAS;AAAA,MAC9B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBqC,IAAGnB,KAAIC,KAAI;AAC3C,eAAOkB;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOZ;AAAA,EACT,EAAE,iBAAiB;AACnB,EAAAnB,iBAAgB,oBAAoB,QAAQ,WAAW;AAEvD,aAAW,SAAS,mBAAmB,MAAM,kBAAkB;AAE/D,kBAAgB,gBAAgB,kBAAkB;AAClD,kBAAgB,gBAAgB,wBAAwB;AACxD,kBAAgB,gBAAgB,oBAAoB;AACpD,aAAW,SAAS,kBAAkB,MAAM,iBAAiB;AAE7D,WAAS,eAAe;AACtB,QAAII,KAAI,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI,GACnCC,KAAI,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI;AACvC,WAAO;AAAA,MACL,SAASD;AAAA,MACT,SAASC;AAAA,MACT,SAASD;AAAA,MACT,SAASC;AAAA,MACT,OAAOD;AAAA,MACP,OAAOC;AAAA,IACT;AAAA,EACF;AACA,MAAI,qBAAqB;AAAA,IACvB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AACA,MAAI,MAAM,CAAC;AACX,OAASX,KAAI,GAAGA,KAAI,KAAKA,MAAK;AAC5B,QAAIA,EAAC,KAAKA,KAAI,KAAK,MAAM,MAAMA,GAAE,SAAS,EAAE;AAAA,EAC9C;AAFS,MAAAA;AAGT,MAAI,oBAAoB;AACxB,MAAI,uBAAuB,WAAY;AACrC,aAASsC,sBAAqB,UAAU,IAAI,OAAO;AACjD,MAAAjC,iBAAgB,MAAMiC,qBAAoB;AAC1C,WAAK,WAAW;AAChB,WAAK,KAAK;AACV,WAAK,QAAQ;AACb,MAAAhC,iBAAgB,MAAM,SAAS,CAAC,CAAC;AACjC,MAAAA,iBAAgB,MAAM,UAAU,MAAM;AACtC,WAAK,SAAS,IAAI,aAAa;AAAA,IACjC;AACA,IAAAE,cAAa8B,uBAAsB,CAAC;AAAA,MAClC,KAAK;AAAA,MACL,OAAO,SAASC,IAAG,IAAI,KAAK7B,IAAGC,IAAG;AAChC,aAAK,OAAO,QAAQ,IAAI,KAAK;AAAA,UAC3B,OAAOD;AAAA,UACP,OAAOC;AAAA,UACP,SAASD;AAAA,UACT,SAASC;AAAA,UACT,SAASD;AAAA,UACT,SAASC;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,OAAO6B,KAAI,QAAQ,WAAW9B,IAAGC,IAAGU,IAAGC,IAAG;AACxD,YAAI,KAAK,SAAS,cAAc,KAAK;AACrC,WAAG,MAAM,WAAW;AACpB,WAAG,YAAYkB;AACf,YAAI;AAAQ,iBAAO,YAAY,EAAE;AAAA;AAAO,eAAK,SAAS,aAAa,EAAE,YAAY,EAAE;AACnF,WAAG,aAAa,MAAMA,GAAE;AACxB,WAAG,MAAM,QAAQ9B,MAAK,OAAOA,KAAI,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI,KAAK;AACrE,WAAG,MAAM,OAAOC,MAAK,OAAOA,KAAI,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI,KAAK;AACpE,YAAI;AAAW,aAAG,YAAY;AAC9B,YAAIU;AAAG,aAAG,MAAM,QAAQA,KAAI;AAC5B,YAAIC;AAAG,aAAG,MAAM,SAASA,KAAI;AAC7B,aAAK,MAAM,KAAKkB,GAAE;AAClB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,QAAQ,KAAK,QAAQ;AACnC,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,eAAK,OAAO,IAAI,EAAE,GAAG,MAAM;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,IAAI,OAAO;AAC7C,YAAI,KAAK,KAAK,SAAS,aAAa,EAAE,GAClC,MAAM,KAAK,GAAG,SAAS;AAC3B,aAAK,MAAM,KAAK,OAAO,GAAG,aAAa,kBAAkB,IAAI,UAAU,SAAS,QAAQ,KAAK,SAAS,IAAI,eAAe,YAAY;AAAA,MACvI;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,4BAA4B,IAAI,OAAO;AACrD,YAAIA,MAAK,KAAK,SAAS,MAAM,EAAE,GAC3B,OAAO,KAAK,SAAS,iBAAiBA,GAAE;AAC5C,aAAK,MAAM,KAAK,UAAU,QAAQ,OAAOA,MAAK,UAAU,QAAQ,8BAA8B;AAAA,MAChG;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,8BAA8B,IAAI,OAAO;AACvD,YAAIA,MAAK,KAAK,SAAS,MAAM,EAAE,GAC3B,OAAO,KAAK,SAAS,iBAAiBA,GAAE;AAC5C,aAAK,MAAM,KAAK,YAAY,QAAQ,OAAOA,MAAK,UAAU,QAAQ,gCAAgC;AAAA,MACpG;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,KAAK;AAChC,aAAK,MAAM,KAAK,GAAG;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,IAAI;AACnC,YAAIC,KAAI,KAAK,UAAU,EAAE,GACrBnD,KAAI,KAAK,SAAS,aAAa;AACnC,QAAAmD,GAAE,WAAWnD,GAAE;AACf,QAAAmD,GAAE,WAAWnD,GAAE;AACf,QAAAmD,GAAE,SAASnD,GAAE;AACb,QAAAmD,GAAE,WAAWnD,GAAE;AACf,QAAAmD,GAAE,WAAWnD,GAAE;AACf,QAAAmD,GAAE,SAASnD,GAAE;AACb,eAAOmD;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,cAAa,IAAIC,MAAK;AACpC,eAAO,GAAG,aAAaA,IAAG;AAAA,MAC5B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAIjC,IAAGC,IAAGiC,SAAQ;AAC3C,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAIA,QAAO;AAAQ,UAAAA,QAAO,OAAO;AACjC,YAAI,YAAY,KAAK,UAAU,EAAE;AACjC,aAAK,SAAS,QAAQ,IAAIC,kBAAiB,SAAS;AACpD,YAAID,QAAO,iBAAiB;AAC1B,UAAAA,QAAO,gBAAgB;AAAA,QACzB;AACA,aAAK,GAAG,UAAU,iBAAiB,UAAU,QAAQlC,IAAG,UAAU,QAAQC,EAAC;AAC3E,YAAIiC,QAAO,eAAe;AACxB,UAAAA,QAAO,cAAc;AAAA,QACvB;AACA,aAAK,OAAO,QAAQ,UAAU,eAAe,IAAI;AACjD,YAAIA,QAAO;AAAO,UAAAA,QAAO,MAAM;AAAA,MACjC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,IAAIlC,IAAGC,IAAGiC,SAAQ;AAC3C,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAIE,QAAO,KAAK,SAAS,SAAS,YAAY,KAAK,SAAS,MAAM,EAAE,CAAC;AACrE,YAAIF,QAAO;AAAQ,UAAAA,QAAO,OAAO;AACjC,YAAI,YAAY,KAAK,UAAU,EAAE;AACjC,aAAK,SAAS,QAAQ,IAAIC,kBAAiB,SAAS;AACpD,YAAI,KAAK,KAAK,SAAS,aAAa,EAAE,sBAAsB;AAC5D,YAAID,QAAO,iBAAiB;AAC1B,UAAAA,QAAO,gBAAgB;AAAA,QACzB;AACA,aAAK,GAAG,UAAU,iBAAiB,GAAG,IAAIlC,KAAIoC,MAAK,IAAI,GAAG,GAAG,IAAInC,KAAImC,MAAK,IAAI,CAAC;AAC/E,YAAIF,QAAO,eAAe;AACxB,UAAAA,QAAO,cAAc;AAAA,QACvB;AACA,aAAK,OAAO,QAAQ,UAAU,eAAe,IAAI;AACjD,YAAIA,QAAO;AAAO,UAAAA,QAAO,MAAM;AAAA,MACjC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY,IAAI,eAAeA,SAAQ;AACrD,YAAI,cAAc,KAAK,SAAS,SAAS,aAAa;AACtD,YAAI,MAAM,KAAK,SAAS,SAAS,YAAY,YAAY,IAAI,GACzD,KAAK,IAAI,IAAI,IAAI,IAAI,GACrB,KAAK,IAAI,IAAI,IAAI,IAAI;AACzB,aAAK,WAAW,IAAI,IAAI,IAAIA,OAAM;AAAA,MACpC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,IAAIlC,IAAGC,IAAGiC,SAAQ;AAChD,YAAI,QAAQ;AACZ,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAIA,QAAO,QAAQ;AACjB,UAAAA,QAAO,OAAO;AAAA,QAChB;AACA,YAAI,YAAY,KAAK,UAAU,EAAE;AACjC,aAAK,SAAS,QAAQ,IAAIC,kBAAiB,SAAS;AACpD,YAAID,QAAO,iBAAiB;AAC1B,UAAAA,QAAO,gBAAgB;AAAA,QACzB;AACA,mBAAW,WAAY;AACrB,gBAAM,GAAG,UAAU,iBAAiB,UAAU,QAAQlC,IAAG,UAAU,QAAQC,EAAC;AAC5E,cAAIiC,QAAO,eAAe;AACxB,YAAAA,QAAO,cAAc;AAAA,UACvB;AACA,qBAAW,WAAY;AACrB,kBAAM,OAAO,QAAQ,UAAU,eAAe,IAAI;AAClD,gBAAIA,QAAO,OAAO;AAChB,cAAAA,QAAO,MAAM;AAAA,YACf;AAAA,UACF,GAAG,EAAE;AAAA,QACP,GAAG,EAAE;AAAA,MACP;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,IAAI,+BAA+B,eAAe;AAChF,aAAK,SAAS,QAAQ,IAAIC,kBAAiB,KAAK,UAAU,EAAE,CAAC;AAC7D,YAAIE,SAAQ,KAAK,OAAO,IAAI;AAC5B,iBAAS,MAAM,GAAG,MAAMA,QAAO,OAAO;AACpC,cAAI,MAAM,aAAa;AACvB,aAAG,MAAM,OAAO,IAAI,UAAU;AAC9B,aAAG,MAAM,MAAM,IAAI,UAAU;AAC7B,eAAK,SAAS,QAAQ,UAAU,iBAAiB,GAAG;AAAA,QACtD;AACA,YAAI,+BAA+B;AACjC,eAAK,GAAG,8BAA8B,GAAG,iBAAiB,uBAAuB;AAAA,QACnF;AACA,aAAK,SAAS,QAAQ,UAAU,eAAe,kBAAkB;AAAA,MACnE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,IAAI,IAAI,iBAAiBH,SAAQ;AAC9D,YAAI,MAAM,KAAK,UAAU,EAAE,GACvB,MAAM,KAAK,UAAU,EAAE;AAC3B,YAAI,KAAK,KAAK,UAAU,GAAG,GACvBI,MAAK,KAAK,UAAU,GAAG;AAC3B,QAAAJ,UAASA,WAAU,CAAC;AACpB,YAAI,QAAQ,KAAK,SAAS,OAAO,EAAE;AACnC,aAAK,SAAS,QAAQ,KAAKC,kBAAiB,EAAE;AAC9C,YAAID,QAAO,iBAAiB;AAC1B,UAAAA,QAAO,gBAAgB;AAAA,QACzB;AACA,aAAK,SAAS,QAAQ,kBAAkB,MAAM,UAAU,iBAAiBI,GAAE;AAC3E,YAAIJ,QAAO,eAAe;AACxB,UAAAA,QAAO,cAAc;AAAA,QACvB;AACA,aAAK,SAAS,QAAQ,kBAAkB,MAAM,UAAU,eAAeI,GAAE;AACzE,eAAO,KAAK,SAAS,OAAO,EAAE,IAAI,KAAK;AAAA,MACzC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,IAAI,IAAIJ,SAAQ;AAClD,YAAI,SAAS;AACb,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAI,MAAM,KAAK,UAAU,EAAE,GACvB,MAAM,KAAK,UAAU,EAAE;AAC3B,YAAI,KAAK,KAAK,UAAU,GAAG,GACvBI,MAAK,KAAK,UAAU,GAAG;AAC3B,YAAI,QAAQ,KAAK,SAAS,OAAO,EAAE;AACnC,aAAK,SAAS,QAAQ,KAAKH,kBAAiB,EAAE;AAC9C,mBAAW,WAAY;AACrB,cAAID,QAAO,iBAAiB;AAC1B,YAAAA,QAAO,gBAAgB;AAAA,UACzB;AACA,iBAAO,SAAS,QAAQ,UAAU,iBAAiBI,GAAE;AACrD,qBAAW,WAAY;AACrB,gBAAIJ,QAAO,eAAe;AACxB,cAAAA,QAAO,cAAc;AAAA,YACvB;AACA,mBAAO,SAAS,QAAQ,KAAK,eAAeI,GAAE;AAC9C,gBAAIJ,QAAO,OAAO;AAChB,cAAAA,QAAO,MAAM,OAAO,SAAS,OAAO,EAAE,IAAI,KAAK,CAAC;AAAA,YAClD;AAAA,UACF,GAAG,CAAC;AAAA,QACN,GAAG,CAAC;AAAA,MACN;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB,IAAI;AACzC,YAAI,MAAM,KAAK,UAAU,EAAE;AAC3B,YAAI,KAAK,KAAK,UAAU,GAAG;AAC3B,aAAK,SAAS,QAAQ,KAAKC,kBAAiB,EAAE;AAC9C,aAAK,SAAS,QAAQ,UAAU,iBAAiB,kBAAkB;AACnE,aAAK,SAAS,QAAQ,UAAU,eAAe,kBAAkB;AAAA,MACnE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiBJ,IAAGG,SAAQ;AAC1C,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAI,MAAM,KAAK,kBAAkBH,EAAC;AAClC,YAAI,KAAK,KAAK,UAAU,GAAG;AAC3B,QAAAG,QAAO,UAAUA,QAAO,OAAO;AAC/B,aAAK,SAAS,QAAQ,KAAKC,kBAAiB,EAAE;AAC9C,QAAAD,QAAO,mBAAmBA,QAAO,gBAAgB;AACjD,aAAK,SAAS,QAAQ,UAAU,iBAAiB,kBAAkB;AACnE,QAAAA,QAAO,iBAAiBA,QAAO,cAAc;AAC7C,aAAK,SAAS,QAAQ,UAAU,eAAe,kBAAkB;AACjE,QAAAA,QAAO,SAASA,QAAO,MAAM;AAAA,MAC/B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,4BAA4BH,IAAGG,SAAQ;AACrD,QAAAA,UAASA,WAAU,CAAC;AACpB,YAAI,MAAM,KAAK,kBAAkBH,EAAC;AAClC,YAAI,KAAK,KAAK,UAAU,GAAG;AAC3B,QAAAG,QAAO,UAAUA,QAAO,OAAO;AAC/B,aAAK,SAAS,QAAQ,KAAKC,kBAAiB,EAAE;AAC9C,QAAAD,QAAO,mBAAmBA,QAAO,gBAAgB;AACjD,aAAK,SAAS,QAAQ,UAAU,iBAAiB,kBAAkB;AACnE,aAAK,SAAS,QAAQ,UAAU,iBAAiB,EAAE;AACnD,QAAAA,QAAO,iBAAiBA,QAAO,cAAc;AAC7C,aAAK,SAAS,QAAQ,UAAU,eAAe,EAAE;AACjD,QAAAA,QAAO,SAASA,QAAO,MAAM;AAAA,MAC/B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,yBAAyBtD,IAAGsD,SAAQ;AAClD,aAAK,iBAAiBtD,GAAE,UAAU,CAAC,GAAGsD,OAAM;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,MAAM,OAAOA,SAAQ;AAClD,aAAK,SAAS,MAAM,GAAG,OAAOA,OAAM;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,MAAM,KAAK,OAAOA,SAAQ;AACjD,QAAAA,UAASA,WAAU,CAAC;AACpB,gBAAQ,KAAK,UAAU,KAAK;AAC5B,YAAI,MAAM,KAAK,kBAAkB,KAAK,UAAU,GAAG,CAAC;AACpD,YAAI,KAAK,KAAK,UAAU,GAAG;AAC3B,YAAII,MAAK,KAAK,UAAU,KAAK;AAC7B,QAAAJ,QAAO,UAAUA,QAAO,OAAO;AAC/B,aAAK,SAAS,QAAQ,KAAKC,kBAAiB,EAAE;AAC9C,QAAAD,QAAO,mBAAmBA,QAAO,gBAAgB;AACjD,aAAK,SAAS,QAAQ,UAAU,iBAAiBI,GAAE;AACnD,QAAAJ,QAAO,iBAAiBA,QAAO,cAAc;AAC7C,aAAK,SAAS,QAAQ,OAAO,eAAeI,GAAE;AAC9C,QAAAJ,QAAO,SAASA,QAAO,MAAM;AAAA,MAC/B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,MAAM,OAAOA,SAAQ;AAClD,aAAK,SAAS,MAAM,GAAG,OAAOA,OAAM;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,UAAU,IAAI;AAC5B,YAAIvD,KAAI,GAAG,sBAAsB;AACjC,YAAI4D,KAAI5D,GAAE,IAAIA,GAAE,QAAQ,GACpBU,KAAIV,GAAE,IAAIA,GAAE,SAAS;AACzB,eAAO;AAAA,UACL,SAAS4D;AAAA,UACT,SAASlD;AAAA,UACT,SAASkD;AAAA,UACT,SAASlD;AAAA,UACT,OAAOkD;AAAA,UACP,OAAOlD;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASmD,WAAU,QAAQ;AAChC,YAAI,OAAO,UAAU;AACnB,iBAAO,KAAK,kBAAkB,MAAM;AAAA,QACtC,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,mBAAkB,IAAI;AACpC,eAAO,GAAG,SAAS;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB7D,IAAG;AACrC,eAAOA,GAAE,UAAU;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,0BAA0B,IAAI;AAC5C,YAAIA,KAAI,KAAK,kBAAkB,EAAE;AACjC,eAAO;AAAA,UACL,GAAG,SAASA,GAAE,MAAM,MAAM,EAAE;AAAA,UAC5B,GAAG,SAASA,GAAE,MAAM,KAAK,EAAE;AAAA,UAC3B,GAAGA,GAAE,aAAa,OAAO;AAAA,UACzB,GAAGA,GAAE,aAAa,QAAQ;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS8D,QAAO,KAAK,QAAQ,KAAK;AACvC,aAAK,GAAG,KAAK,IAAI,MAAM,MAAM,IAAI,mBAAmB,MAAM,gBAAgB,SAAS,UAAU,MAAM,aAAa,KAAK,IAAI,MAAM,MAAM,IAAI,GAAG;AAAA,MAC9I;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,2BAA2B,IAAI,OAAO;AACpD,YAAIZ,MAAK,KAAK,SAAS,MAAM,EAAE,GAC3B,OAAO,KAAK,SAAS,iBAAiBA,GAAE;AAC5C,aAAK,MAAM,KAAK,UAAU,QAAQ,OAAOA,MAAK,UAAU,QAAQ,8BAA8B;AAAA,MAChG;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,6BAA6B,IAAI,OAAO;AACtD,YAAIA,MAAK,KAAK,SAAS,MAAM,EAAE,GAC3B,OAAO,KAAK,SAAS,iBAAiBA,GAAE;AAC5C,aAAK,MAAM,KAAK,YAAY,QAAQ,OAAOA,MAAK,UAAU,QAAQ,gCAAgC;AAAA,MACpG;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB,IAAI;AACtC,YAAI,SAAS,KAAK,kBAAkB,EAAE;AACtC,iBAAS,MAAM,GAAG,OAAO,UAAU,UAAU,IAAI,IAAI,UAAU,SAAS,IAAI,OAAO;AACjF,eAAK,SAAS,QAAQ,QAAQ,MAAM,IAAI,KAAK,UAAU,UAAU,MAAM,IAAI,SAAY,UAAU,MAAM,CAAC,CAAC;AAAA,QAC3G;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmBC,IAAG;AACpC,iBAAS,MAAM,GAAG,OAAO,UAAU,UAAU,IAAI,IAAI,UAAU,SAAS,IAAI,OAAO;AACjF,eAAK,SAAS,QAAQA,IAAG,MAAM,IAAI,KAAK,UAAU,UAAU,MAAM,IAAI,SAAY,UAAU,MAAM,CAAC,CAAC;AAAA,QACtG;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,sBAAsB,YAAY;AAChD,YAAI,SAAS,KAAK,oBAAoB,UAAU;AAChD,iBAAS,OAAO,UAAU,QAAQG,UAAS,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC5G,UAAAA,QAAO,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,QACnC;AACA,aAAK,mBAAmB,MAAM,MAAM,CAAC,MAAM,EAAE,OAAOA,OAAM,CAAC;AAAA,MAC7D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,YAAY;AAC5C,aAAK,sBAAsB,YAAYS,YAAW;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB,YAAY;AAC/C,aAAK,sBAAsB,YAAY,eAAe;AAAA,MACxD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,YAAY;AAC1C,aAAK,sBAAsB,YAAYR,gBAAe;AACtD,aAAK,sBAAsB,YAAY,aAAa;AAAA,MACtD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,YAAY;AAC7C,aAAK,sBAAsB,YAAYA,gBAAe;AACtD,aAAK,sBAAsB,YAAY,aAAa;AACpD,aAAK,sBAAsB,YAAYA,gBAAe;AACtD,aAAK,sBAAsB,YAAY,aAAa;AAAA,MACtD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,SAAS,YAAY;AAClD,aAAK,SAAS,QAAQ,SAASQ,cAAa,MAAM,MAAM,cAAc,OAAO,IAAI,UAAU;AAAA,MAC7F;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,SAAS;AACzC,aAAK,SAAS,QAAQ,SAAS,eAAe;AAAA,MAChD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,SAAS;AACpC,aAAK,SAAS,QAAQ,SAASR,gBAAe;AAC9C,aAAK,SAAS,QAAQ,SAAS,aAAa;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,SAAS;AACvC,aAAK,SAAS,QAAQ,SAASA,gBAAe;AAC9C,aAAK,SAAS,QAAQ,SAAS,aAAa;AAC5C,aAAK,SAAS,QAAQ,SAASA,gBAAe;AAC9C,aAAK,SAAS,QAAQ,SAAS,aAAa;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,SAAS;AACxC,eAAO,QAAQ,UAAU,QAAQ;AAAA,MACnC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,YAAY,WAAW,OAAO;AAC/D,YAAI,UAAU,WAAW,WAAW,SAAS;AAC7C,YAAI,SAAS,KAAK,iBAAiB,OAAO;AAC1C,aAAK,SAAS,QAAQ,QAAQ,KAAK;AAAA,MACrC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,eAAe,YAAY,WAAW;AACpD,aAAK,mBAAmB,YAAY,WAAWQ,YAAW;AAAA,MAC5D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB,YAAY,WAAW;AACvD,aAAK,mBAAmB,YAAY,WAAW,eAAe;AAAA,MAChE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,YAAY,WAAW;AAClD,aAAK,mBAAmB,YAAY,WAAWR,gBAAe;AAC9D,aAAK,mBAAmB,YAAY,WAAW,aAAa;AAAA,MAC9D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,gBAAgB,YAAY,WAAW;AACrD,aAAK,mBAAmB,YAAY,WAAWA,gBAAe;AAC9D,aAAK,mBAAmB,YAAY,WAAW,aAAa;AAC5D,aAAK,mBAAmB,YAAY,WAAWA,gBAAe;AAC9D,aAAK,mBAAmB,YAAY,WAAW,aAAa;AAAA,MAC9D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASS,WAAU;AACxB,YAAI,YAAY,KAAK,SAAS,aAAa;AAC3C,aAAK,SAAS,QAAQ;AACtB,iBAAS,OAAO,KAAK,OAAO;AAC1B,cAAI/D,KAAI,SAAS,eAAe,KAAK,MAAM,GAAG,CAAC;AAC/C,UAAAA,MAAKA,GAAE,WAAW,YAAYA,EAAC;AAAA,QACjC;AACA,aAAK,MAAM,SAAS;AACpB,YAAI,YAAY,KAAK,SAAS,OAAO,EAAE,QACnC,UAAU,KAAK,SAAS,gBAAgB,EAAE,QAC1C,YAAY,UAAU,iBAAiB,eAAe,EAAE,QACxD,cAAc,UAAU,iBAAiB,gBAAgB,EAAE;AAC/D,iBAASgE,MAAK,UAAU,MAAM;AAC5B,mBAAS,MAAM,UAAU,KAAKA,EAAC,GAAG;AAChC,kBAAM,gDAAgDA;AAAA,UACxD;AAAA,QACF;AACA,YAAI,YAAY;AAAG,gBAAM;AACzB,YAAI,UAAU;AAAG,gBAAM;AACvB,YAAI,YAAY,GAAG;AACjB,gBAAM,eAAe,YAAY;AAAA,QACnC;AACA,YAAI,cAAc,GAAG;AACnB,gBAAM,eAAe,cAAc;AAAA,QACrC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY/B,IAAG;AAC7B,YAAIjC,KAAI,SAAS,cAAc,KAAK;AACpC,QAAAA,GAAE,YAAYiC;AACd,eAAOjC,GAAE;AAAA,MACX;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASiE,QAAO,KAAK;AAC1B,YAAIlE,KAAI;AACR,iBAAS,OAAO,KAAK;AACnB,cAAI,IAAI,eAAe,GAAG,GAAG;AAC3B,YAAAA;AAAA,UACF;AAAA,QACF;AACA,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,KAAK,KAAK;AACxB,iBAAS,OAAO,KAAK;AACnB,iBAAO,IAAI,GAAG;AAAA,QAChB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS;AACvB,eAAOmE,MAAK;AAAA,MACd;AAAA,IACF,CAAC,CAAC;AACF,WAAOnB;AAAA,EACT,EAAE;AASF,MAAI,wBAAwB;AAC5B,WAAS,mBAAmB;AAC1B,QAAIoB,KAAI,wBAAwB;AAChC;AACA,WAAOA;AAAA,EACT;AACA,WAAS,YAAYC,WAAU;AAC7B,WAAO,IAAI,uBAAuB,iBAAiB,GAAGA,SAAQ;AAAA,EAChE;;;ADpjfA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAQjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,gBAAgB;AAAA,QACnB,UAAU;AAAA,UACR,UAAU;AAAA,UACV,YAAY,EAAE,MAAM,UAAU;AAAA,QAChC;AAAA,QACA,UAAU;AAAA,UACR,UAAU;AAAA,UACV,YAAY,EAAE,MAAM,UAAU;AAAA,QAChC;AAAA,QACA,mBAAmB;AAAA,UACjB,UAAU;AAAA,UACV,YAAY,EAAE,MAAM,OAAO;AAAA,QAC7B;AAAA,MACF;AAEE,WAAK,UAAU;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAKd,UAAG,KAAK,kBAAkB,SAAS;AACjC,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc;AACZ,aAAO,EAAE,KAAK,yBAAyB;AAAA,IACzC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UAAU;AACR,UAAI,KAAK,SAAS;AAChB;AAAA,MACF;AACA,WAAK,UAAU;AACf,YAAM,cAAc,KAAK;AACzB,YAAM,aAAa;AAEnB,YAAM,eAAe,EAAE,WAAW;AAClC,YAAM,mBAAmB,KAAK,YAAY,IAAI,OAAO;AAIrD,mBAAa,KAAK,gBAAgB,EAAE,KAAK,SAAUC,QAAO;AAExD,cAAM,QAAQ,EAAE,IAAI;AACpB,cAAM,UAAU,YAAY;AAAA,UAC1B,WAAW;AAAA,QACb,CAAC;AACD,gBAAQ,kBAAkB,IAAI;AAE9B,gBAAQ,sBAAsB,WAAW,aAAa;AACtD,gBAAQ,eAAe;AAAA,UACrB,gBAAgB;AAAA,UAChB,qBAAqB,KAAK,cAAc,QAAQ;AAAA,UAChD,yBAAyB;AAAA,UACzB,UAAU;AAAA,YACR,MAAM;AAAA,YACN,SAAS,EAAE,QAAQ,EAAE;AAAA,UACvB;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,SAAS,EAAE,KAAK,GAAG;AAAA,UACrB;AAAA,QACF,CAAC;AAGD,cAAM,UAAU,MAAM,KAAK,sBAAsB;AACjD,cAAM,kBAAkB,QAAQ,OAAO,YAAY;AACnD,YAAI,gBAAgB,QAAQ;AAC1B,gBAAM,SAAS,MAAM,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC;AAC9C,gBAAM,iBAAiB,QAAQ,YAAY,gBAAgB,CAAC,GAAG;AAAA,YAC7D,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAM;AAAA,UACR,CAAC;AACD,gBAAM,iBAAiB,QAAQ,YAAY,QAAQ;AAAA,YACjD,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAM;AAAA,UACR,CAAC;AAED,gBAAM,aAAa,QAAQ,QAAQ;AAAA,YACjC,QAAQ;AAAA,YACR,QAAQ;AAAA,UACV,CAAC;AAAA,QAEH;AACA,cAAM,oBAAoB,QAAQ,OAAO,cAAc;AACvD,YAAI,kBAAkB,QAAQ;AAC5B,kBAAQ,YAAY,kBAAkB,CAAC,GAAG;AAAA,YACxC,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AACA,YAAG,WAAW,YAAY,GAAG;AAC3B,gBAAM,qBAAqB,MAAM,KAAK,+BAA+B;AACrE,6BAAmB,KAAK,SAAUA,QAAO;AACvC,oBAAQ,YAAY,MAAM;AAAA,cACxB,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,MAAM;AAAA,YACR,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAEA,gBAAQ,kBAAkB,OAAO,IAAI;AAErC,gBAAQ,KAAK,wBAAwB,CAACC,OAAM;AAO1C,UAAAA,GAAE,iBAAiB,QAAQ,iBAAiB;AAAA,QAC9C,CAAC;AAED,gBAAQ,KAAK,2BAA2B,CAACA,OAAM;AAE7C,gBAAM,QAAQA,GAAE,OAAO,QAAQ;AAC/B,gBAAM,QAAQA,GAAE,OAAO,QAAQ;AAM/B,qBAAW,UAAU,6BAA6B,OAAO,KAAK,EAAE,KAAK,MAAM;AACzE,YAAAA,GAAE,eAAe,QAAQ,iBAAiB;AAAA,UAC5C,CAAC;AAAA,QACH,CAAC;AAED,gBAAQ,KAAK,kBAAkB,CAACA,OAAM;AAEpC,gBAAM,QAAQA,GAAE,OAAO,QAAQ;AAC/B,gBAAM,QAAQA,GAAE,OAAO,QAAQ;AAM/B,qBAAW,UAAU,6BAA6B,OAAO,KAAK,EAAE,KAAK,MAAM;AACzE,YAAAA,GAAE,eAAe,QAAQ,QAAQ;AAAA,UACnC,CAAC;AAAA,QACH,CAAC;AAAA,MAEH,CAAC;AAAA,IACH;AAAA,EAEF;AA1KE,gBAFKF,gCAEE,UAAS;AAAA,IACd,WAAW,EAAC,MAAM,QAAQ,SAAS,QAAQ;AAAA,IAC3C,kBAAkB,EAAC,MAAM,QAAQ,SAAS,QAAQ;AAAA,EACpD;;;AERF,MAAAG,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAEd,YAAMC,QAAO;AACb,YAAM,UAAU,EAAE,KAAK,OAAO;AAE9B,YAAM,qBAAqB,QAAQ,KAAK,sBAAsB;AAE9D,YAAM,oBAAoB,EAAE,qBAAqB;AACjD,wBAAkB,MAAM,MAAM;AAC9B,UAAG,oBAAoB;AACrB,0BAAkB,GAAG,mBAAmB,SAAU,OAAO;AAEvD,UAAAA,MAAK,UAAU,oCAAoC,EAAE,KAAK,aAAW;AACnE,oBAAQ,IAAI,kDAAkD;AAAA,UAChE,CAAC;AAED,4BAAkB,IAAI,iBAAiB;AAAA,QACzC,CAAC;AAAA,MACH;AAAA,IAEF;AAAA,EAIF;;;AClCA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAC5B,WAAK,4BAA4B,mBAAmB;AACpD,WAAK,4BAA4B,uBAAuB;AACxD,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;;;ACVA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,UAAU;AACR,YAAM,QAAQ;AACd,WAAK,YAAY;AAEjB,cAAQ,IAAI,8BAAuB;AAAA,QACjC,OAAO,KAAK,YAAY;AAAA,MAC1B,CAAC;AAGD,UAAI,CAAC,KAAK,QAAQ,UAAU,SAAS,MAAM,GAAG;AAC5C,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,YAAY;AACV,YAAM,QAAQ,EAAE,KAAK,OAAO;AAC5B,YAAM,MAAM,MAAM;AAAA,IACpB;AAAA,IAEA,UAAU;AAER,cAAQ,IAAI,wBAAiB;AAAA,IAC/B;AAAA,IAEA,aAAa;AAEX,YAAM,QAAQ,EAAE,KAAK,OAAO;AAC5B,UAAI,MAAM,SAAS,MAAM,GAAG;AAC1B,cAAM,MAAM,MAAM;AAAA,MACpB;AACA,YAAM,WAAW;AAAA,IACnB;AAAA,EACF;AAlCE,gBADKA,gCACE,WAAU,CAAC,OAAO;;;ACH3B,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAGjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,UAAU;AACR,YAAM,QAAQ;AAEd,WAAK,SAAS;AAAA,IAChB;AAAA,IAEA,WAAW;AACT,WAAK,cAAc,UAAU,IAAI,QAAQ;AACzC,WAAK,gBAAgB,UAAU,OAAO,QAAQ;AAAA,IAChD;AAAA,IAEA,WAAW;AACT,WAAK,cAAc,UAAU,OAAO,QAAQ;AAC5C,WAAK,gBAAgB,UAAU,IAAI,QAAQ;AAAA,IAC7C;AAAA,IAEA,SAAS;AACP,UAAI,KAAK,cAAc,UAAU,SAAS,QAAQ,GAAG;AACnD,aAAK,SAAS;AAAA,MAChB,OAAO;AACL,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AA9BE,gBADKA,gCACE,WAAU,CAAC,WAAW,WAAW;;;ACH1C,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IACjD,UAAU;AACR,YAAM,QAAQ;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,WAAW,OAAO;AAChB,YAAM,eAAe;AAGrB,WAAK,aAAa;AAGlB,YAAM,YAAY,MAAM,cAAc;AAGtC,aAAO,SAAS,OAAO;AAAA,IAGzB;AAAA,IAEA,aAAa;AACX,YAAM,WAAW;AAAA,IACnB;AAAA,EACF;;;AC7BA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IACjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,KAAK;AAAA,IACZ;AAAA,IAEA,KAAK,OAAO;AACV,WAAK,QAAQ,YAAY;AACzB,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,IAC9B;AAAA,IAEA,MAAM,OAAO;AACX,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,IAC9B;AAAA,EACF;;;AChBA,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AA4BE;AA8CA;AAUA;AAWA;AAMA;AAMA;AAiBA;AAAA;AAAA,IAxHA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,KAAK;AAEV,WAAK,cAAc;AACnB,WAAK,gBAAgB;AAAA,IACvB;AAAA,IAEA,KAAK,OAAO;AACV,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,IAC9B;AAAA,IAEA,kBAAkB,OAAO;AACvB,YAAM,eAAe;AAErB,YAAM,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa;AACrD,YAAM,uBAAuB,EAAE,KAAK,OAAO,EAAE,KAAK,yBAAyB;AAE3E,4BAAK,0CAAL;AAEA,iBAAW,SAAS,QAAQ;AAC5B,2BAAqB,YAAY,QAAQ;AAAA,IAC3C;AAAA,IASA,gBAAgB,OAAO;AACrB,YAAM,eAAe;AACrB,YAAM,UAAU,EAAE,MAAM,aAAa;AACrC,YAAM,UAAU,EAAE,MAAM,aAAa,EAAE,OAAO,gBAAgB;AAC9D,YAAM,kBAAkB,QAAQ,KAAK,mBAAmB;AACxD,YAAM,YAAY,QAAQ,KAAK,YAAY;AAE3C,UAAG,QAAQ,SAAS,UAAU,GAAG;AAC/B,gBAAQ,YAAY,UAAU;AAC9B,8BAAK,oCAAL,WAAqB,WAAW;AAAA,MAClC,OAAO;AACL,YAAG,gBAAgB,SAAS,GAAG;AAC7B,kBAAQ,SAAS,UAAU;AAC3B,gCAAK,sCAAL,WAAsB;AACtB,gCAAK,sDAAL,WAA8B,SAAS;AAAA,QACzC;AAAA,MACF;AAEA,WAAK,QAAQ,mBAAmB,KAAK,aAAa;AAClD,WAAK,QAAQ,qBAAqB,KAAK,eAAe;AAEtD,4BAAK,0CAAL;AAAA,IACF;AAAA,IAEA,YAAY,OAAM;AAChB,YAAM,eAAe;AAErB,YAAM,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa;AACrD,YAAM,uBAAuB,EAAE,KAAK,OAAO,EAAE,KAAK,yBAAyB;AAE3E,iBAAW,YAAY,QAAQ;AAC/B,2BAAqB,SAAS,QAAQ;AAAA,IACxC;AAAA,IAEA,MAAM,OAAO;AACX,YAAM,eAAe;AACrB,QAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,IAC9B;AAAA,EA6DF;AAzGE;AAAA,yBAAkB,WAAG;AACnB,SAAK,cAAc;AACnB,SAAK,gBAAgB;AACrB,MAAE,KAAK,OAAO,EAAE,KAAK,0DAA0D,EAAE,YAAY,UAAU;AACvG,0BAAK,0CAAL;AAAA,EACF;AAyCA;AAAA,uBAAgB,SAAC,WAAW;AAC1B,QAAG,KAAK,eAAe,MAAM;AAC3B,WAAK,cAAc;AACnB,4BAAK,kDAAL,WAA4B;AAAA,IAC9B,WAAU,KAAK,iBAAiB,MAAM;AACpC,WAAK,gBAAgB;AACrB,4BAAK,sDAAL,WAA8B;AAAA,IAChC;AAAA,EACF;AAEA;AAAA,sBAAe,SAAC,WAAW;AACzB,QAAG,KAAK,gBAAgB,WAAW;AACjC,WAAK,cAAc;AACnB,4BAAK,kDAAL,WAA4B;AAAA,IAC9B;AACA,QAAG,KAAK,kBAAkB,WAAW;AACnC,WAAK,gBAAgB;AACrB,4BAAK,sDAAL,WAA8B;AAAA,IAChC;AAAA,EACF;AAEA;AAAA,6BAAsB,SAAC,OAAO;AAC5B,QAAG,KAAK,6BAA6B;AACnC,QAAE,KAAK,wBAAwB,EAAE,IAAI,KAAK;AAAA,IAC5C;AAAA,EACF;AAEA;AAAA,+BAAwB,SAAC,OAAO;AAC9B,QAAG,KAAK,+BAA+B;AACrC,QAAE,KAAK,0BAA0B,EAAE,IAAI,KAAK;AAAA,IAC9C;AAAA,EACF;AAEA;AAAA,+BAAwB,SAAC,SAAS,WAAW;AAC3C,QAAG,KAAK,eAAe,WAAW;AAChC,cAAQ,KAAK,eAAe,EAAE,YAAY,QAAQ;AAClD,cAAQ,KAAK,iBAAiB,EAAE,SAAS,QAAQ;AACjD;AAAA,IACF;AAEA,QAAG,KAAK,iBAAiB,WAAW;AAClC,cAAQ,KAAK,eAAe,EAAE,SAAS,QAAQ;AAC/C,cAAQ,KAAK,iBAAiB,EAAE,YAAY,QAAQ;AACpD;AAAA,IACF;AAEA,YAAQ,KAAK,eAAe,EAAE,SAAS,QAAQ;AAC/C,YAAQ,KAAK,iBAAiB,EAAE,SAAS,QAAQ;AAAA,EACnD;AAEA;AAAA,yBAAkB,WAAG;AACnB,QAAG,KAAK,sBAAsB;AAC5B,UAAG,KAAK,eAAe,QAAQ,KAAK,iBAAiB,MAAM;AACzD,UAAE,KAAK,iBAAiB,EAAE,YAAY,UAAU;AAAA,MAClD,OAAO;AACL,UAAE,KAAK,iBAAiB,EAAE,SAAS,UAAU;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AAlIA,gBAFKA,gCAEE,WAAU,CAAC,eAAe,sBAAsB,sBAAsB;;;ACJ/E,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAAA;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AA4DE;AAAA;AAAA,IAxDA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,cAAc;AACnB,WAAK,kBAAkB;AACvB,UAAG,KAAK,eAAe;AACrB,UAAE,KAAK,WAAW,EAAE,SAAS,QAAQ;AACrC,UAAE,KAAK,YAAY,KAAK,WAAW,CAAC,EAAE,YAAY,QAAQ;AAAA,MAC5D;AAEA,UAAG,KAAK,mBAAmB;AACzB,UAAE,KAAK,eAAe,EAAE,SAAS,QAAQ;AACzC,UAAE,KAAK,gBAAgB,KAAK,eAAe,CAAC,EAAE,YAAY,QAAQ;AAAA,MACpE;AAAA,IACF;AAAA,IAEA,SAAS,OAAO;AACd,UAAG,KAAK,eAAe;AACrB,YAAG,KAAK,YAAY,SAAS,KAAK,cAAc,GAAG;AACjD,eAAK;AACL,gBAAM,cAAc,KAAK,YAAY,KAAK,cAAc,CAAC;AACzD,gBAAM,UAAU,KAAK,YAAY,KAAK,WAAW;AACjD,YAAE,WAAW,EAAE,SAAS,kBAAkB;AAC1C,YAAE,OAAO,EAAE,YAAY,QAAQ,EAAE,SAAS,iBAAiB;AAC3D,qBAAW,MAAM,EAAE,WAAW,EAAE,SAAS,QAAQ,GAAG,GAAI;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,IAEA,eAAe,OAAO;AACpB,cAAQ,IAAI,KAAK;AACjB,YAAM,mBAAmB,MAAM,OAAO;AACtC,YAAM,kBAAkB,EAAE,KAAK,gBAAgB,KAAK,eAAe,CAAC,EAAE,KAAK,gBAAgB;AAC3F,UAAG,kBAAkB;AACnB,YAAG,sBAAK,kDAAL,YAA+B;AAChC,YAAE,WAAW,EAAE,YAAY,UAAU;AAAA,QACvC,OAAO;AACL,0BAAgB,YAAY,UAAU;AAAA,QACxC;AAAA,MACF,OAAO;AACL,wBAAgB,SAAS,UAAU;AACnC,UAAE,WAAW,EAAE,SAAS,UAAU;AAAA,MACpC;AAAA,IACF;AAAA,IAEA,aAAa,OAAO;AAClB,cAAQ,IAAI,KAAK;AACjB,UAAG,KAAK,mBAAmB;AACzB,aAAK;AACL,cAAM,UAAU,EAAE,KAAK,gBAAgB,KAAK,eAAe,CAAC;AAC5D,cAAM,WAAW,EAAE,KAAK,gBAAgB,KAAK,kBAAkB,CAAC,CAAC;AACjE,iBAAS,SAAS,kBAAkB;AACpC,gBAAQ,YAAY,QAAQ,EAAE,SAAS,iBAAiB;AACxD,mBAAW,MAAM,SAAS,SAAS,QAAQ,GAAG,GAAI;AAAA,MACpD;AAAA,IACF;AAAA,EASF;AAPE;AAAA,6BAAsB,WAAG;AACvB,QAAG,CAAC,KAAK,mBAAmB;AAC1B,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,mBAAmB,KAAK,gBAAgB,SAAS;AAAA,EAC/D;AAhEA,gBAFKA,gCAEE,WAAU,CAAC,QAAQ,UAAU;;;ACJtC,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAAA;AAGA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AAeE;AA8BA;AAiBA;AAIA;AAMA;AAKA;AA6BA;AAYA;AAAA;AAAA,IA9GA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,mBAAmB;AACxB,WAAK,YAAY,IAAI,UAAU,KAAK;AACpC,4BAAK,sDAAL;AAAA,IACF;AAAA,EAmHF;AAjHE;AAAA,+BAAwB,WAAG;AACzB,UAAMC,QAAO;AACb,MAAE,KAAK,OAAO,EAAE,GAAG,aAAa,mBAAmB,SAAU,IAAI;AApBrE;AAqBM,YAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,UAAI,CAAC,qBAAAA,OAAK,wBAAL,SAAe,YAAYA,MAAK,mBAAmB;AACtD,mBAAW,SAAS,SAAS;AAAA,MAC/B;AAAA,IACF,CAAC;AAGD,MAAE,KAAK,OAAO,EAAE,GAAG,aAAa,mBAAmB,SAAU,IAAI;AAC/D,YAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,iBAAW,YAAY,SAAS;AAAA,IAClC,CAAC;AAED,MAAE,KAAK,OAAO,EAAE,GAAG,aAAa,oBAAoB,SAAU,IAAI;AAChE,MAAAA,MAAK,mBAAmB,EAAE,GAAG,aAAa;AAAA,IAC5C,CAAC;AAED,MAAE,KAAK,OAAO,EAAE,GAAG,YAAY,mBAAmB,SAAU,IAAI;AAC9D,SAAG,eAAe;AAAA,IACpB,CAAC;AAED,MAAE,KAAK,OAAO,EAAE,GAAG,QAAQ,mBAAmB,SAAU,IAAI;AAzChE;AA0CM,YAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,iBAAW,YAAY,SAAS;AAChC,2BAAAA,OAAK,gBAAL,SAAW,GAAG,eAAeA;AAAA,IAC/B,CAAC;AAAA,EACH;AAEA;AAAA,YAAK,SAAC,OAAOA,OAAM;AAhDrB,oBAAAC,KAAA;AAiDI,UAAM,gBAAgB;AACtB,QAAI,aAAa,EAAE,MAAM,MAAM,EAAE,QAAQ,iBAAiB;AAG1D,UAAM,eAAe,qBAAAD,OAAK,sCAAL,SAAsB;AAE3C,UAAM,YAAY,qBAAAA,OAAK,sCAAL,SAAsB,aAAa,QAAQ,YAAY,GAAG;AAE5E,yBAAAA,OAAK,kCAAL,SAAoB,cAAc,YAAYA;AAE9C,UAAM,YAAY,gBAAAC,MAAAD,OAAK,sCAAL,KAAAC,KAAsB,YAAY;AAEpD,yBAAAD,OAAK,kDAAL;AACA,yBAAAA,OAAK,sCAAL,SAAsB,WAAW;AAAA,EACnC;AAEA;AAAA,uBAAgB,SAAC,OAAO;AACtB,WAAO,EAAE,IAAI,MAAM,aAAa,QAAQ,oBAAoB,GAAG;AAAA,EACjE;AAEA;AAAA,qBAAc,SAAC,SAASE,KAAIF,OAAM;AArEpC;AAsEI,QAAI,CAAC,qBAAAA,OAAK,wBAAL,SAAeE,KAAI,UAAU;AAChC,cAAQ,SAASA,GAAE;AAAA,IACrB;AAAA,EACF;AAEA;AAAA,gBAAS,SAAC,WAAW,WAAW;AAC9B,UAAMC,MAAK,IAAI,UAAU,KAAK,IAAI;AAClC,WAAO,UAAU,KAAKA,GAAE,EAAE,SAAS;AAAA,EACrC;AAEA;AAAA,uBAAgB,SAAC,WAAW,QAAQ;AAClC,UAAM,sBAAsB,EAAE,SAAS,EAAE,KAAK,uBAAuB;AAErE,QAAG,qBAAqB;AACtB,YAAM,cAAc,OAAO,KAAK,cAAc;AAC9C,YAAM,OAAO,oBAAoB,SAAS,WAAW;AAErD,UAAG,MAAM;AACP,cAAM,SAAS,OAAO,KAAK,QAAQ;AACnC,cAAM,mBAAmB,CAAC;AAC1B,iBAAQC,QAAO,QAAQ;AACrB,2BAAiBA,IAAG,IAAI,OAAOA,IAAG;AAAA,QACpC;AAEA,eAAO;AAAA,MACT,OAAO;AACL,cAAM,SAAS,OAAO,KAAK,QAAQ;AACnC,cAAM,mBAAmB,CAAC;AAC1B,iBAAQA,QAAO,QAAQ;AACrB,2BAAiBA,IAAG,IAAI,CAAC,OAAOA,IAAG;AAAA,QACrC;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA;AAAA,6BAAsB,WAAG;AACvB,UAAM,gBAAgB,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB;AAC5D,UAAM,gBAAgB,cAAc,KAAK,cAAc,EAAE;AAEzD,UAAM,mBAAmB,IAAI,YAAY,8BAA8B;AAAA,MACrE,QAAQ;AAAA,QACN,mBAAmB,iBAAiB,KAAK;AAAA,MAC3C;AAAA,IACF,CAAC;AACD,SAAK,QAAQ,cAAc,gBAAgB;AAAA,EAC7C;AAEA;AAAA,uBAAgB,SAAC,WAAW,WAAW;AACrC,UAAM,mBAAmB,IAAI,YAAY,4BAA4B;AAAA,MACnE,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,QAAQ,0BAA0B;AACvC,SAAK,QAAQ,cAAc,gBAAgB;AAAA,EAC7C;AA7HA,gBAFKL,gCAEE,WAAU,CAAC,iBAAiB,iBAAiB;AAEpD,gBAJKA,gCAIE,UAAS;AAAA,IACd,sBAAsB;AAAA,EACxB;;;ACTF,MAAAM,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAAA,MAAAC,mBAAAC,qBAAA,kEAAAC,mBAAAC;AAEA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AAoBE,yBAAAJ;AAsBA;AASA,yBAAAE;AAAA;AAAA,IAzCA,aAAa,OAAO;AAClB,YAAM,gBAAgB,MAAM;AAC5B,YAAM,cAAc,EAAE,aAAa,EAAE,KAAK,cAAc;AACxD,YAAM,SAAS,sBAAKF,mBAAAC,qBAAL,WAAsB;AACrC,4BAAKC,mBAAAC,qBAAL,WAAsB;AACtB,WAAK,YAAY;AACjB,4BAAK,kEAAL;AAAA,IACF;AAAA,EA2CF;AAxCE,EAAAH,oBAAA;AAAA,EAAAC,sBAAgB,SAAC,aAAa;AAC5B,YAAQ,IAAI,WAAW;AACvB,YAAQ,IAAI,KAAK,wBAAwB;AAEzC,UAAM,OAAO,KAAK,yBAAyB,SAAS,WAAW;AAE/D,UAAM,eAAe,KAAK,aAAa,WAAW;AAElD,QAAI,MAAM;AACR,aAAO,aAAa,QAAQ;AAAA,IAC9B,OAAO;AACL,YAAM,mBAAmB,aAAa,QAAQ;AAC9C,WAAI,OAAO,kBAAkB;AAC3B,yBAAiB,GAAG,KAAK;AAAA,MAC3B;AAEA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA;AAAA,qCAA8B,WAAG;AAC/B,UAAM,mBAAmB,IAAI,YAAY,8BAA8B;AAAA,MACrE,QAAQ;AAAA,QACN,mBAAmB;AAAA,MACrB;AAAA,IACF,CAAC;AACD,SAAK,QAAQ,cAAc,gBAAgB;AAAA,EAC7C;AAEA,EAAAC,oBAAA;AAAA,EAAAC,sBAAgB,SAAC,QAAQ;AACvB,UAAM,mBAAmB,IAAI,YAAY,4BAA4B;AAAA,MACnE,QAAQ;AAAA,QACN,WAAW,KAAK;AAAA,QAChB,WAAW;AAAA,MACb;AAAA,IACF,CAAC;AACD,SAAK,QAAQ,cAAc,gBAAgB;AAAA,EAC7C;AAzDA,gBAFKC,gCAEE,WAAU,CAAC,QAAQ;AAE1B,gBAJKA,gCAIE,UAAS;AAAA,IACd,qBAAqB;AAAA,IACrB,SAAS;AAAA,EACX;;;ACTF,MAAAC,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAAA,MAAAC,2BAAAC,6BAAAC,QAAAC,UAAAC,mBAAAC,qBAAAC,iBAAAC,mBAAAC,YAAAC,cAAAC,mBAAAC,qBAAAC,yBAAAC,2BAAAC,mBAAAC;AAGA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAAnD;AAAA;AAYE,yBAAAhB;AA8BA,yBAAAE;AAiBA,yBAAAE;AAIA,yBAAAE;AAMA,yBAAAE;AAKA,yBAAAE;AA+CA,yBAAAE;AAYA,yBAAAE;AAAA;AAAA,IAjIA,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,mBAAmB;AACxB,WAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE;AACvD,WAAK,YAAY,IAAI,UAAU,KAAK;AACpC,4BAAKd,2BAAAC,6BAAL;AAAA,IACF;AAAA,EAqIF;AAnIE,EAAAD,4BAAA;AAAA,EAAAC,8BAAwB,WAAG;AACzB,UAAMgB,QAAO;AACb,MAAE,KAAK,OAAO,EAAE,GAAG,aAAa,mBAAmB,SAAU,IAAI;AAjBrE;AAkBM,YAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,UAAI,CAAC,qBAAAA,OAAKT,YAAAC,cAAL,SAAe,YAAYQ,MAAK,mBAAmB;AACtD,mBAAW,SAAS,SAAS;AAAA,MAC/B;AAAA,IACF,CAAC;AAGD,MAAE,KAAK,OAAO,EAAE,GAAG,aAAa,mBAAmB,SAAU,IAAI;AAC/D,YAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,iBAAW,YAAY,SAAS;AAAA,IAClC,CAAC;AAED,MAAE,KAAK,OAAO,EAAE,GAAG,aAAa,oBAAoB,SAAU,IAAI;AAChE,MAAAA,MAAK,mBAAmB,EAAE,GAAG,aAAa;AAAA,IAC5C,CAAC;AAED,MAAE,KAAK,OAAO,EAAE,GAAG,YAAY,mBAAmB,SAAU,IAAI;AAC9D,SAAG,eAAe;AAAA,IACpB,CAAC;AAED,MAAE,KAAK,OAAO,EAAE,GAAG,QAAQ,mBAAmB,SAAU,IAAI;AAtChE;AAuCM,YAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,iBAAW,YAAY,SAAS;AAChC,2BAAAA,OAAKf,QAAAC,UAAL,SAAW,GAAG,eAAec;AAAA,IAC/B,CAAC;AAAA,EACH;AAEA,EAAAf,SAAA;AAAA,EAAAC,WAAK,SAAC,OAAOc,OAAM;AA7CrB,oBAAAC,KAAA;AA8CI,UAAM,gBAAgB;AACtB,QAAI,aAAa,EAAE,MAAM,MAAM,EAAE,QAAQ,iBAAiB;AAG1D,UAAM,eAAe,qBAAAD,OAAKb,mBAAAC,qBAAL,SAAsB;AAE3C,UAAM,YAAY,qBAAAY,OAAKP,mBAAAC,qBAAL;AAElB,yBAAAM,OAAKX,iBAAAC,mBAAL,SAAoB,cAAc,YAAYU;AAE9C,UAAM,YAAY,gBAAAC,MAAAD,OAAKP,mBAAAC,qBAAL,KAAAO;AAElB,yBAAAD,OAAKL,yBAAAC,2BAAL;AACA,yBAAAI,OAAKH,mBAAAC,qBAAL,SAAsB,WAAW;AAAA,EACnC;AAEA,EAAAX,oBAAA;AAAA,EAAAC,sBAAgB,SAAC,OAAO;AACtB,WAAO,EAAE,IAAI,MAAM,aAAa,QAAQ,oBAAoB,GAAG;AAAA,EACjE;AAEA,EAAAC,kBAAA;AAAA,EAAAC,oBAAc,SAAC,SAASY,KAAIF,OAAM;AAlEpC;AAmEI,QAAI,CAAC,qBAAAA,OAAKT,YAAAC,cAAL,SAAeU,KAAI,UAAU;AAChC,cAAQ,SAASA,GAAE;AAAA,IACrB;AAAA,EACF;AAEA,EAAAX,aAAA;AAAA,EAAAC,eAAS,SAAC,WAAW,WAAW;AAC9B,UAAMW,MAAK,IAAI,UAAU,KAAK,IAAI;AAClC,WAAO,UAAU,KAAKA,GAAE,EAAE,SAAS;AAAA,EACrC;AAEA,EAAAV,oBAAA;AAAA,EAAAC,sBAAgB,WAAG;AACjB,QAAI,mBAAmB,CAAC;AAExB,UAAM,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc;AAC9E,UAAM,gCAAgC,uBAAuB,OAAO,CAACU,QAAO,QAAQ,YAAY;AAC9F,aAAO,EAAE,MAAM,EAAE,KAAK,YAAY;AAAA,IACpC,CAAC;AACD,UAAM,kCAAkC,uBAAuB,OAAO,CAACA,QAAO,QAAQ,YAAY;AAChG,aAAO,CAAC,EAAE,MAAM,EAAE,KAAK,YAAY;AAAA,IACrC,CAAC;AACD,UAAM,2BAA2B,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc;AAClF,UAAM,kCAAkC,yBAAyB,OAAO,CAACA,QAAO,QAAQ,YAAY;AAClG,aAAO,CAAC,EAAE,MAAM,EAAE,KAAK,YAAY;AAAA,IACrC,CAAC;AACD,UAAM,oCAAoC,yBAAyB,OAAO,CAACA,QAAO,QAAQ,YAAY;AACpG,aAAO,EAAE,MAAM,EAAE,KAAK,YAAY;AAAA,IACpC,CAAC;AAED,UAAM,iBAAiB,EAAE,MAAM,+BAA+B,+BAA+B;AAC7F,UAAM,mBAAmB,EAAE,MAAM,iCAAiC,iCAAiC;AAEnG,mBAAe,KAAK,CAACA,QAAO,QAAQ,YAAY;AAC9C,YAAM,SAAS,EAAE,MAAM,EAAE,KAAK,QAAQ;AACtC,eAASC,QAAO,QAAQ;AACtB,YAAI,iBAAiB,eAAeA,IAAG,GAAG;AACxC,2BAAiBA,IAAG,KAAK,OAAOA,IAAG;AAAA,QACrC,OAAO;AACL,2BAAiBA,IAAG,IAAI,OAAOA,IAAG;AAAA,QACpC;AAAA,MACF;AAAA,IACF,CAAC;AAED,qBAAiB,KAAK,CAACD,QAAO,QAAQ,YAAY;AAChD,YAAM,SAAS,EAAE,MAAM,EAAE,KAAK,QAAQ;AACtC,eAASC,QAAO,QAAQ;AACtB,YAAI,iBAAiB,eAAeA,IAAG,GAAG;AACxC,2BAAiBA,IAAG,KAAK,CAAC,OAAOA,IAAG;AAAA,QACtC,OAAO;AACL,2BAAiBA,IAAG,IAAI,CAAC,OAAOA,IAAG;AAAA,QACrC;AAAA,MACF;AAAA,IACF,CAAC;AAED,YAAQ,IAAI,uBAAuB,gBAAgB;AACnD,WAAO;AAAA,EACT;AAEA,EAAAV,0BAAA;AAAA,EAAAC,4BAAsB,WAAG;AACvB,UAAM,gBAAgB,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB;AAC5D,UAAM,gBAAgB,cAAc,KAAK,cAAc,EAAE;AAEzD,UAAM,mBAAmB,IAAI,YAAY,8BAA8B;AAAA,MACrE,QAAQ;AAAA,QACN,mBAAmB,iBAAiB,KAAK;AAAA,MAC3C;AAAA,IACF,CAAC;AACD,SAAK,QAAQ,cAAc,gBAAgB;AAAA,EAC7C;AAEA,EAAAC,oBAAA;AAAA,EAAAC,sBAAgB,SAAC,WAAW,WAAW;AACrC,UAAM,mBAAmB,IAAI,YAAY,4BAA4B;AAAA,MACnE,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,QAAQ,0BAA0B;AACvC,SAAK,QAAQ,cAAc,gBAAgB;AAAA,EAC7C;AA5IA,gBAFKC,gCAEE,WAAU,CAAC,iBAAiB,iBAAiB;;;ACLtD,MAAAO,iCAAA;AAAA,WAAAA,gCAAA;AAAA,mBAAAC;AAAA;AAGA,MAAOC,iCAAP,cAA6B,sBAAsB;AAAA,IAEjD,aAAa;AACX,YAAM,WAAW;AACjB,WAAK,mBAAmB;AACxB,WAAK,uBAAuB,EAAE,KAAK,OAAO,EAAE,KAAK,wBAAwB;AACzE,WAAK,YAAY,IAAI,UAAU,KAAK;AACpC,WAAK,yBAAyB;AAAA,IAChC;AAAA,IAEA,2BAA2B;AACzB,YAAMC,QAAO;AACb,QAAE,KAAK,OAAO,EAAE,GAAG,aAAa,mBAAmB,SAAS,IAAI;AAC9D,cAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,YAAG,CAACA,MAAK,UAAU,YAAYA,MAAK,gBAAgB,GAAG;AACrD,qBAAW,SAAS,SAAS;AAAA,QAC/B;AAAA,MACF,CAAC;AAGD,QAAE,KAAK,OAAO,EAAE,GAAG,aAAa,mBAAmB,SAAS,IAAI;AAC9D,cAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,mBAAW,YAAY,SAAS;AAAA,MAClC,CAAC;AAED,QAAE,KAAK,OAAO,EAAE,GAAG,aAAa,oBAAoB,SAAS,IAAI;AAC/D,QAAAA,MAAK,mBAAmB,EAAE,GAAG,aAAa;AAAA,MAC5C,CAAC;AAED,QAAE,KAAK,OAAO,EAAE,GAAG,YAAY,mBAAmB,SAAS,IAAI;AAC7D,WAAG,eAAe;AAAA,MACpB,CAAC;AAED,QAAE,KAAK,OAAO,EAAE,GAAG,QAAQ,mBAAmB,SAAS,IAAI;AACzD,cAAM,aAAa,EAAE,GAAG,MAAM,EAAE,QAAQ,iBAAiB;AACzD,mBAAW,YAAY,SAAS;AAChC,QAAAA,MAAK,MAAM,GAAG,eAAeA,KAAI;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,OAAOA,OAAM;AACjB,YAAM,gBAAgB;AAEtB,UAAI,aAAa,EAAE,MAAM,MAAM,EAAE,QAAQ,iBAAiB;AAG1D,YAAM,eAAeA,MAAK,iBAAiB,KAAK;AAEhD,YAAM,YAAYA,MAAK,iBAAiB,aAAa,QAAQ,YAAY,GAAG,YAAY;AAExF,MAAAA,MAAK,eAAe,cAAc,YAAYA,KAAI;AAElD,YAAM,YAAYA,MAAK,iBAAiB,YAAY,YAAY;AAEhE,MAAAA,MAAK,uBAAuB;AAC5B,MAAAA,MAAK,uBAAuB;AAC5B,MAAAA,MAAK,iBAAiB,WAAW,SAAS;AAAA,IAC5C;AAAA,IAEA,iBAAiB,OAAO;AACtB,aAAO,EAAE,IAAI,MAAM,aAAa,QAAQ,oBAAoB,GAAG;AAAA,IACjE;AAAA,IAEA,eAAe,SAASC,KAAID,OAAM;AAChC,UAAG,CAACA,MAAK,UAAUC,KAAI,OAAO,GAAG;AAC/B,gBAAQ,SAASA,GAAE;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,UAAU,WAAW,WAAW;AAC9B,YAAMC,MAAK,IAAI,UAAU,KAAK,IAAI;AAClC,aAAO,UAAU,KAAKA,GAAE,EAAE,SAAS;AAAA,IACrC;AAAA,IAEA,iBAAiB,WAAW,QAAQ;AAClC,YAAM,SAAS,EAAE,SAAS,EAAE,KAAK,QAAQ;AAEzC,UAAG,QAAQ;AACT,cAAM,SAAS,OAAO,KAAK,QAAQ;AACnC,cAAM,mBAAmB,CAAC;AAC1B,iBAAQC,QAAO,QAAQ;AACrB,2BAAiBA,IAAG,IAAI,OAAOA,IAAG,IAAI;AAAA,QACxC;AAEA,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAEA,yBAAyB;AACvB,QAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,CAACC,QAAO,sBAAsB;AACzE,YAAG,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,UAAU,GAAG;AACxD,YAAE,iBAAiB,EAAE,KAAK,YAAY,MAAM;AAAA,QAC9C,OAAO;AACL,YAAE,iBAAiB,EAAE,KAAK,YAAY,OAAO;AAAA,QAC/C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,yBAAyB;AACvB,YAAM,gBAAgB,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB;AAC5D,YAAM,gBAAgB,cAAc,KAAK,cAAc,EAAE;AAEzD,YAAM,mBAAmB,IAAI,YAAY,8BAA8B;AAAA,QACrE,QAAQ;AAAA,UACN,mBAAmB,iBAAiB,KAAK;AAAA,QAC3C;AAAA,MACF,CAAC;AACC,WAAK,QAAQ,cAAc,gBAAgB;AAAA,IAC/C;AAAA,IAEA,iBAAiB,WAAW,WAAW;AACrC,YAAM,mBAAmB,IAAI,YAAY,4BAA4B;AAAA,QACnE,QAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AACD,WAAK,QAAQ,0BAA0B;AACvC,WAAK,QAAQ,cAAc,gBAAgB;AAAA,IAC7C;AAAA,EACF;;;AC1HQ,MAAMC,WAAU,CAAC,EAAC,MAAM,wDAAwD,QAAQ,8BAAS,UAAU,iEAAgE,GAAE,EAAC,MAAM,0DAA0D,QAAQC,+BAAS,UAAU,mEAAkE,GAAE,EAAC,MAAM,kEAAkE,QAAQA,+BAAS,UAAU,2EAA0E,GAAE,EAAC,MAAM,gDAAgD,QAAQA,+BAAS,UAAU,yDAAwD,GAAE,EAAC,MAAM,kDAAkD,QAAQA,+BAAS,UAAU,2DAA0D,GAAE,EAAC,MAAM,wDAAwD,QAAQA,+BAAS,UAAU,iEAAgE,GAAE,EAAC,MAAM,kEAAkE,QAAQA,+BAAS,UAAU,2EAA0E,GAAE,EAAC,MAAM,yEAAyE,QAAQA,+BAAS,UAAU,iFAAgF,GAAE,EAAC,MAAM,kDAAkD,QAAQA,+BAAS,UAAU,2DAA0D,GAAE,EAAC,MAAM,iDAAiD,QAAQA,gCAAS,UAAU,0DAAyD,GAAE,EAAC,MAAM,kDAAkD,QAAQA,gCAAU,UAAU,2DAA0D,GAAE,EAAC,MAAM,kDAAkD,QAAQA,gCAAU,UAAU,2DAA0D,GAAE,EAAC,MAAM,wDAAwD,QAAQA,gCAAU,UAAU,iEAAgE,GAAE,EAAC,MAAM,qDAAqD,QAAQA,gCAAU,UAAU,8DAA6D,GAAE,EAAC,MAAM,qDAAqD,QAAQA,gCAAU,UAAU,8DAA6D,GAAE,EAAC,MAAM,+CAA+C,QAAQA,gCAAU,UAAU,wDAAuD,GAAE,EAAC,MAAM,gDAAgD,QAAQA,gCAAU,UAAU,yDAAwD,GAAE,EAAC,MAAM,+CAA+C,QAAQA,gCAAU,UAAU,wDAAuD,GAAE,EAAC,MAAM,0CAA0C,QAAQA,gCAAU,UAAU,mDAAkD,GAAE,EAAC,MAAM,6CAA6C,QAAQA,gCAAU,UAAU,sDAAqD,GAAE,EAAC,MAAM,0CAA0C,QAAQA,gCAAU,UAAU,mDAAkD,GAAE,EAAC,MAAM,iEAAiE,QAAQA,gCAAU,UAAU,0EAAyE,GAAE,EAAC,MAAM,iEAAiE,QAAQA,gCAAU,UAAU,0EAAyE,GAAE,EAAC,MAAM,oEAAoE,QAAQA,gCAAU,UAAU,6EAA4E,GAAE,EAAC,MAAM,uDAAuD,QAAQA,gCAAU,UAAU,gEAA+D,GAAE,EAAC,MAAM,6CAA6C,QAAQA,gCAAU,UAAU,uDAAsD,GAAE,EAAC,MAAM,oEAAoE,QAAQA,gCAAU,UAAU,6EAA4E,GAAE,EAAC,MAAM,gDAAgD,QAAQA,gCAAU,UAAU,0DAAyD,GAAE,EAAC,MAAM,gEAAgE,QAAQA,gCAAU,UAAU,yEAAwE,GAAE,EAAC,MAAM,kEAAkE,QAAQA,gCAAU,UAAU,2EAA0E,GAAE,EAAC,MAAM,gEAAgE,QAAQA,gCAAU,UAAU,yEAAwE,GAAE,EAAC,MAAM,4DAA4D,QAAQA,gCAAU,UAAU,qEAAoE,GAAE,EAAC,MAAM,0DAA0D,QAAQA,gCAAU,UAAU,mEAAkE,GAAE,EAAC,MAAM,0DAA0D,QAAQA,gCAAU,UAAU,mEAAkE,GAAE,EAAC,MAAM,qEAAqE,QAAQA,gCAAU,UAAU,8EAA6E,GAAE,EAAC,MAAM,uDAAuD,QAAQA,gCAAU,UAAU,gEAA+D,GAAE,EAAC,MAAM,4EAA4E,QAAQA,gCAAU,UAAU,oFAAmF,GAAE,EAAC,MAAM,6DAA6D,QAAQA,gCAAU,UAAU,sEAAqE,GAAE,EAAC,MAAM,uDAAuD,QAAQA,gCAAU,UAAU,gEAA+D,GAAE,EAAC,MAAM,gDAAgD,QAAQA,gCAAU,UAAU,yDAAwD,GAAE,EAAC,MAAM,6CAA6C,QAAQA,gCAAU,UAAU,sDAAqD,GAAE,EAAC,MAAM,yDAAyD,QAAQA,gCAAU,UAAU,kEAAiE,GAAE,EAAC,MAAM,gEAAgE,QAAQA,gCAAU,UAAU,yEAAwE,GAAE,EAAC,MAAM,kEAAkE,QAAQA,gCAAU,UAAU,2EAA0E,GAAE,EAAC,MAAM,oEAAoE,QAAQA,gCAAU,UAAU,6EAA4E,GAAE,EAAC,MAAM,kEAAkE,QAAQA,gCAAU,UAAU,2EAA0E,GAAE,EAAC,MAAM,mEAAmE,QAAQA,gCAAU,UAAU,4EAA2E,GAAE,EAAC,MAAM,iDAAiD,QAAQA,gCAAU,UAAU,0DAAyD,GAAE,EAAC,MAAM,qDAAqD,QAAQA,gCAAU,UAAU,8DAA6D,GAAE,EAAC,MAAM,iDAAiD,QAAQA,gCAAU,UAAU,0DAAyD,GAAE,EAAC,MAAM,iDAAiD,QAAQA,gCAAU,UAAU,2DAA0D,GAAE,EAAC,MAAM,qDAAqD,QAAQA,gCAAU,UAAU,8DAA6D,GAAE,EAAC,MAAM,gDAAgD,QAAQA,gCAAU,UAAU,yDAAwD,GAAE,EAAC,MAAM,oDAAoD,QAAQA,gCAAU,UAAU,6DAA4D,GAAE,EAAC,MAAM,gEAAgE,QAAQA,gCAAU,UAAU,yEAAwE,GAAE,EAAC,MAAM,0DAA0D,QAAQA,gCAAU,UAAU,mEAAkE,GAAE,EAAC,MAAM,gEAAgE,QAAQA,gCAAU,UAAU,yEAAwE,GAAE,EAAC,MAAM,yDAAyD,QAAQA,gCAAU,UAAU,kEAAiE,CAAC;AAC79R,MAAOC,iCAAQF;;;ACAvB,UAAQ,IAAI,8CAAuCG,+BAAqB,MAAM;AAE9E,EAAAA,+BAAqB,QAAQ,CAAC,eAAe;AAC3C,UAAMC,QAAO,WAAW,KAAK,QAAQ,oBAAoB,EAAE,EAAE,QAAQ,eAAe,EAAE;AACtF,YAAQ,IAAI,qCAA8BA,OAAM,QAAQ,WAAW,IAAI;AACvE,gBAAY,SAASA,OAAM,WAAW,OAAO,OAAO;AAAA,EACtD,CAAC;;;ACPD,QAAM,iBAAiB,CAACC,UAAS,SAAS,cAAc;AACtD,QAAI,kBAAkB;AAEtB,QAAI,CAAC,WAAW;AACd,UAAI,mBAAmB,SAAS;AAAA,QAC9B,yBAAyBA,iCAAgC,QAAQ,aAAa,QAAQ;AAAA,MACxF;AACA,wBAAkB,CAAC,GAAG,gBAAgB,EAAE,KAAK,CAAC,OAAO,QAAQ,OAAO,SAAS,GAAG,IAAI,CAAC;AAAA,IACvF;AAEA,UAAM,SAAS,EAAE,qBAAqB;AACtC,WAAO,MAAM,MAAM;AAEnB,WAAO,KAAK,UAAU,EAAE,KAAKA,QAAO;AAEpC,QAAG,EAAE,eAAe,EAAE,KAAK,cAAc,KAAK,MAAM;AAClD,aAAO,KAAK,wBAAwB,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,cAAc,CAAC;AAAA,IACpF;AAEA,WAAO,IAAI,QAAQ,CAACC,UAAS,WAAW;AACtC,aAAO,CAAC,EAAE,iBAAiB,iBAAiB,MAAM;AAChD,QAAAA,SAAQ,KAAK;AAAA,MACf,GAAG,EAAE,MAAM,KAAK,CAAC;AACjB,aAAO,KAAK,wBAAwB,EAAE,CAAC,EAAE,iBAAiB,SAAS,MAAM;AACvE,QAAAA,SAAQ,IAAI;AACZ,eAAO,MAAM,MAAM;AAAA,MACrB,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,IACnB,CAAC;AAAA,EACH,CAAC;",
  "names": ["module", "global", "w", "window", "array", "indexOf", "isFunction", "isWindow", "document", "doc", "i", "toType", "version", "jQuery", "callback", "j", "options", "name", "clone", "length", "arr", "matches", "sort", "whitespace", "a", "b", "push", "documentElement", "expando", "rquickExpr", "escape", "e", "find", "m", "match", "tokenize", "cache", "key", "fn", "id", "node", "compare", "elements", "forward", "start", "dir", "hash", "attr", "skip", "map", "filter", "siblings", "n", "elem", "self", "root", "l", "_", "memory", "add", "index", "v", "resolve", "value", "deferred", "error", "wait", "camelCase", "Data", "data", "attrs", "hooks", "next", "scale", "nodeName", "show", "scripts", "wrap", "on", "events", "t", "handlers", "remove", "html", "swap", "width", "subtract", "end", "easing", "p", "Animation", "to", "getClass", "option", "max", "location", "s", "val", "response", "prev", "transport", "completed", "success", "params", "off", "position", "offset", "top", "method", "type", "module", "Rails", "expando", "m", "key", "$", "CustomEvent", "matches", "preventDefault", "params", "name", "data", "e", "options", "response", "parser", "error", "toArray", "option", "message", "callback", "module", "a", "b", "c", "d", "e", "h", "g", "f", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "consumer", "data", "error", "message", "key", "consumer", "params", "data", "subscription", "s", "consumer", "params", "subscription", "s", "a", "data", "name", "module", "$", "BarRating", "self", "classes", "key", "data", "html", "index", "applyStyle", "f", "options", "module", "global", "hooks", "callback", "isArray", "isObject", "a", "b", "k", "isNumber", "isDate", "map", "fn", "i", "extend", "format", "locale", "m", "t", "isValid", "to", "from", "config", "key", "name", "isFunction", "set", "now", "sign", "token", "ordinal", "array", "length", "diff", "u", "localeData", "s", "p2", "y", "daysInYear", "get", "d", "n", "x", "indexOf", "o", "h", "M", "firstWeekOffset", "weekOfYear", "hours", "minutes", "names", "j", "next", "split", "e", "data", "l", "match", "defaults", "c", "w", "tokens", "meridiem", "min", "max", "createDuration", "duration", "years", "months", "weeks", "days", "seconds", "milliseconds", "offset", "matches", "add", "subtract", "isString", "formats", "clone", "isBetween", "datetime", "toDate", "toArray", "index", "clone$1", "round", "thresholds", "module", "global", "isArray", "isFunction", "extend", "key", "merge", "i", "j", "data", "n", "toDate", "matches", "defaultOptions", "hideLegend", "setTitle", "setMin", "setMax", "setStacked", "setXtitle", "setYtitle", "options", "a", "b", "d", "isDate", "isNumber", "round", "option", "min", "max", "hex", "x", "s", "scale", "colors", "k", "point", "color", "minTime", "maxTime", "width", "defaultExport", "destroy", "d2", "position", "callback", "config", "createDataTable", "r", "addEvent", "e", "fn", "fn2", "p", "c", "success", "error", "request", "message", "$", "adapters", "Chart", "Chartkick", "getElement", "LineChart", "PieChart", "ColumnChart", "BarChart", "AreaChart", "GeoChart", "ScatterChart", "BubbleChart", "Timeline", "$", "DISALLOWED_ATTRIBUTES", "ARIA_ATTRIBUTE_PATTERN", "SAFE_URL_PATTERN", "DATA_URL_PATTERN", "allowedAttribute", "attr", "index", "i", "l", "sanitizeHtml", "elements", "j", "k", "classes", "key", "position", "start", "options", "e", "map", "match", "Dropdown", "version", "EVENT_KEY", "a", "whitespace", "option", "id", "drop", "scrollTop", "size", "element", "callback", "data", "config", "item", "selectOptions", "next", "len", "mainElements", "clone", "q", "cache", "offset", "matches", "jQuery", "module", "isArray", "module", "module", "root", "module", "root", "Symbol", "module", "Symbol", "hasOwnProperty", "e", "module", "module", "Symbol", "module", "module", "module", "isArray", "module", "isObject", "module", "isObject", "isFunction", "module", "root", "module", "uid", "module", "e", "module", "isFunction", "isObject", "hasOwnProperty", "module", "key", "module", "key", "module", "module", "module", "key", "module", "hasOwnProperty", "key", "data", "module", "hasOwnProperty", "key", "data", "module", "key", "data", "module", "index", "length", "module", "module", "eq", "module", "eq", "array", "key", "length", "module", "key", "data", "index", "module", "key", "data", "index", "module", "key", "module", "key", "data", "index", "module", "index", "length", "module", "root", "Map", "module", "Map", "module", "module", "map", "key", "data", "module", "key", "module", "key", "module", "key", "module", "key", "data", "size", "module", "index", "length", "module", "memoize", "key", "cache", "module", "memoize", "key", "cache", "module", "match", "module", "array", "index", "length", "module", "Symbol", "isArray", "INFINITY", "module", "module", "isArray", "module", "INFINITY", "module", "index", "length", "module", "get", "module", "hasOwnProperty", "key", "module", "module", "hasOwnProperty", "module", "MAX_SAFE_INTEGER", "length", "module", "MAX_SAFE_INTEGER", "module", "isArray", "index", "length", "key", "module", "has", "module", "module", "key", "data", "module", "key", "module", "key", "module", "Map", "key", "data", "module", "data", "module", "e", "module", "key", "module", "eq", "key", "module", "index", "length", "key", "module", "module", "root", "Buffer", "length", "module", "root", "Uint8Array", "module", "Uint8Array", "module", "module", "array", "index", "length", "module", "isObject", "module", "transform", "module", "module", "module", "module", "isFunction", "module", "module", "module", "root", "Buffer", "module", "hasOwnProperty", "module", "module", "module", "e", "module", "module", "key", "module", "eq", "hasOwnProperty", "key", "module", "index", "length", "key", "module", "n", "index", "module", "isArray", "hasOwnProperty", "length", "key", "module", "key", "module", "isObject", "hasOwnProperty", "key", "module", "module", "module", "isArray", "isFunction", "isObject", "key", "module", "isObject", "key", "module", "identity", "module", "module", "start", "transform", "index", "length", "array", "module", "module", "identity", "module", "module", "module", "identity", "start", "module", "eq", "isObject", "index", "module", "index", "length", "module", "merge", "module", "module", "module", "index", "length", "module", "array", "length", "index", "module", "module", "array", "index", "length", "module", "array", "module", "array", "length", "module", "array", "index", "length", "module", "cache", "key", "module", "root", "Set", "module", "noop", "module", "setToArray", "set", "index", "module", "Set", "noop", "setToArray", "INFINITY", "module", "setToArray", "array", "index", "length", "set", "module", "uniq", "array", "module", "array", "start", "end", "index", "length", "module", "array", "start", "end", "length", "module", "module", "module", "module", "module", "module", "module", "capitalize", "module", "array", "index", "length", "module", "key", "module", "module", "module", "module", "module", "module", "words", "module", "words", "createCompounder", "callback", "module", "capitalize", "createCompounder", "camelCase", "index", "module", "MAX_SAFE_INTEGER", "n", "module", "index", "module", "module", "isObject", "module", "INFINITY", "sign", "module", "module", "repeat", "n", "module", "array", "index", "length", "offset", "module", "Symbol", "isArray", "module", "array", "index", "length", "module", "array", "index", "length", "module", "array", "index", "othValue", "module", "map", "index", "key", "module", "Symbol", "Uint8Array", "eq", "setToArray", "module", "isArray", "module", "array", "index", "length", "module", "module", "module", "module", "hasOwnProperty", "key", "module", "module", "module", "hasOwnProperty", "index", "key", "module", "root", "DataView", "module", "root", "Promise", "module", "root", "WeakMap", "module", "DataView", "Map", "Promise", "Set", "WeakMap", "module", "isArray", "hasOwnProperty", "module", "module", "index", "length", "data", "key", "module", "isObject", "module", "length", "key", "module", "key", "module", "module", "key", "module", "module", "get", "module", "key", "module", "module", "module", "identity", "isArray", "module", "module", "length", "index", "module", "module", "index", "key", "collection", "module", "array", "length", "module", "module", "index", "length", "order", "module", "identity", "isArray", "index", "key", "collection", "module", "sortBy", "length", "module", "index", "length", "module", "zipObject", "module", "start", "end", "index", "length", "module", "start", "end", "module", "range", "module", "t", "e", "n", "i", "c", "o", "h", "r", "s", "a", "p", "u", "l", "A", "b", "g", "m", "C", "x", "w", "d", "f", "v", "y", "E", "S", "k", "D", "L", "module", "global", "exports", "fn", "undefined", "x", "k", "a", "b", "c", "d", "s", "i", "n", "length", "j", "hex", "from", "to", "end", "hash", "FileChecksum", "create", "callback", "start", "getMetaValue", "name", "findElement", "findElements", "root", "elements", "dispatchEvent", "BlobRecord", "response", "key", "BlobUpload", "id", "DirectUpload", "error", "DirectUploadController", "progress", "dispatch", "DirectUploadsController", "controllers", "startNextController", "progress", "error", "module", "root", "jQuery", "S2", "require", "define", "main", "handlers", "defined", "config", "name", "mapValue", "i", "j", "map", "index", "e", "callback", "$", "key", "methods", "m", "decoratedMethod", "d", "params", "length", "data", "k", "match", "id", "classes", "options", "message", "sorter", "self", "s", "option", "attrs", "matches", "attr", "c", "top", "bottom", "template", "_", "width", "val", "defaults", "item", "success", "request", "t", "Dropdown", "position", "offset", "viewport", "css", "Defaults", "l", "a", "WIDTH", "n", "select2", "e", "x", "y", "w", "h", "min", "x2", "y2", "i", "data", "module", "x", "module", "split", "left", "right", "i", "match", "key", "module", "module", "i", "key", "options", "key", "index", "isArray", "a", "b", "hash", "parseValue", "parse", "k", "x", "filter", "module", "global", "exports", "english", "s", "module", "global", "exports", "German", "l2", "n", "l22", "require_activestorage", "module", "global", "exports", "fn", "undefined", "x", "k", "a", "b", "c", "d", "s", "i", "n", "length", "j", "hex", "from", "to", "end", "hash", "FileChecksum", "create", "callback", "start", "getMetaValue", "name", "findElement", "findElements", "root", "elements", "dispatchEvent", "BlobRecord", "response", "key", "BlobUpload", "id", "DirectUpload", "error", "DirectUploadController", "progress", "dispatch", "DirectUploadsController", "controllers", "startNextController", "autocomplete", "doc", "userAgent", "clear", "top", "left", "render", "e", "key", "elements", "i", "destroy", "module", "global", "exports", "i", "key", "set", "name", "get", "e", "converter", "module", "root", "ScrollMagic", "options", "DEFAULT_OPTIONS", "Controller", "key", "log", "index", "e", "a", "b", "i", "name", "names", "callback", "remove", "progress", "after", "before", "css", "classes", "window", "U", "g", "id", "console", "now", "method", "v", "o", "_get", "offset", "option", "root", "ScrollMagic", "console", "log", "options", "DEFAULT_OPTIONS", "Controller", "g", "css", "b", "i", "transform", "Indicator", "e", "v", "closeEnough", "color", "w", "installedModules", "__webpack_require__", "moduleId", "exports", "module", "i", "l", "modules", "call", "m", "c", "d", "name", "getter", "o", "Object", "defineProperty", "enumerable", "get", "r", "Symbol", "toStringTag", "value", "t", "mode", "__esModule", "ns", "create", "key", "bind", "n", "object", "property", "prototype", "hasOwnProperty", "p", "s", "e", "SLICE$0", "Array", "slice", "createClass", "ctor", "superClass", "constructor", "Iterable", "isIterable", "Seq", "KeyedIterable", "isKeyed", "KeyedSeq", "IndexedIterable", "isIndexed", "IndexedSeq", "SetIterable", "isAssociative", "SetSeq", "maybeIterable", "IS_ITERABLE_SENTINEL", "maybeKeyed", "IS_KEYED_SENTINEL", "maybeIndexed", "IS_INDEXED_SENTINEL", "maybeAssociative", "isOrdered", "maybeOrdered", "IS_ORDERED_SENTINEL", "Keyed", "Indexed", "Set", "DELETE", "SHIFT", "SIZE", "MASK", "NOT_SET", "CHANGE_LENGTH", "DID_ALTER", "MakeRef", "ref", "SetRef", "OwnerID", "arrCopy", "arr", "offset", "len", "Math", "max", "length", "newArr", "ii", "ensureSize", "iter", "size", "__iterate", "returnTrue", "wrapIndex", "index", "uint32Index", "NaN", "wholeSlice", "begin", "end", "resolveBegin", "resolveIndex", "resolveEnd", "defaultIndex", "min", "ITERATE_KEYS", "ITERATE_VALUES", "ITERATE_ENTRIES", "REAL_ITERATOR_SYMBOL", "iterator", "FAUX_ITERATOR_SYMBOL", "ITERATOR_SYMBOL", "Iterator", "next", "this", "iteratorValue", "type", "k", "v", "iteratorResult", "done", "iteratorDone", "hasIterator", "getIteratorFn", "isIterator", "maybeIterator", "getIterator", "iterable", "iteratorFn", "isArrayLike", "emptySequence", "toSeq", "seqFromValue", "toKeyedSeq", "fromEntrySeq", "keyedSeqFromValue", "entrySeq", "toIndexedSeq", "indexedSeqFromValue", "toSetSeq", "toString", "KEYS", "VALUES", "ENTRIES", "inspect", "toSource", "of", "arguments", "__toString", "cacheResult", "_cache", "__iterateUncached", "toArray", "fn", "reverse", "seqIterate", "__iterator", "seqIterator", "isSeq", "EMPTY_SEQ", "EMPTY_REPEAT", "EMPTY_RANGE", "IS_SEQ_SENTINEL", "ArraySeq", "array", "_array", "ObjectSeq", "keys", "_object", "_keys", "IterableSeq", "_iterable", "IteratorSeq", "_iterator", "_iteratorCache", "maybeSeq", "seq", "isArray", "TypeError", "maybeIndexedSeqFromValue", "undefined", "useKeys", "cache", "maxIndex", "entry", "__iteratorUncached", "fromJS", "json", "converter", "fromJSWith", "fromJSDefault", "parentJSON", "map", "isPlainObj", "toList", "toMap", "is", "valueA", "valueB", "valueOf", "equals", "deepEqual", "a", "b", "__hash", "notAssociative", "entries", "every", "flipped", "_", "allEqual", "bSize", "has", "Repeat", "times", "_value", "Infinity", "invariant", "condition", "error", "Error", "Range", "start", "step", "abs", "_start", "_end", "_step", "ceil", "Collection", "KeyedCollection", "IndexedCollection", "SetCollection", "notSetValue", "iterations", "val", "includes", "searchValue", "indexOf", "lastIndexOf", "this$0", "other", "possibleIndex", "floor", "offsetValue", "imul", "smi", "i32", "hash", "h", "STRING_HASH_CACHE_MIN_STRLEN", "cachedHashString", "hashString", "hashCode", "hashJSObj", "string", "stringHashCache", "STRING_HASH_CACHE_SIZE", "STRING_HASH_CACHE_MAX_SIZE", "charCodeAt", "obj", "usingWeakMap", "weakMap", "UID_HASH_KEY", "canDefineProperty", "propertyIsEnumerable", "getIENodeHash", "objHashUID", "set", "isExtensible", "apply", "nodeType", "node", "uniqueID", "documentElement", "WeakMap", "assertNotInfinite", "Map", "emptyMap", "isMap", "withMutations", "forEach", "maybeMap", "IS_MAP_SENTINEL", "keyValues", "_root", "updateMap", "setIn", "keyPath", "updateIn", "remove", "deleteIn", "update", "updater", "updatedValue", "updateInDeepMap", "forceIterator", "clear", "__ownerID", "__altered", "merge", "mergeIntoMapWith", "mergeWith", "merger", "mergeIn", "iters", "mergeDeep", "deepMerger", "mergeDeepWith", "deepMergerWith", "mergeDeepIn", "sort", "comparator", "OrderedMap", "sortFactory", "sortBy", "mapper", "mutable", "asMutable", "wasAltered", "__ensureOwner", "asImmutable", "MapIterator", "iterate", "ownerID", "makeMap", "EMPTY_MAP", "MapPrototype", "ArrayMapNode", "BitmapIndexedNode", "bitmap", "nodes", "HashArrayMapNode", "count", "HashCollisionNode", "keyHash", "ValueNode", "_type", "_reverse", "_stack", "mapIteratorFrame", "mapIteratorValue", "prev", "__prev", "root", "newRoot", "newSize", "didChangeSize", "didAlter", "updateNode", "shift", "isLeafNode", "mergeIntoNode", "newNode", "idx1", "idx2", "createNodes", "packNodes", "excluding", "packedII", "packedNodes", "bit", "expandNodes", "including", "expandedNodes", "iterables", "push", "mergeIntoCollectionWith", "existing", "nextValue", "collection", "filter", "x", "mergeIntoMap", "keyPathIter", "isNotSet", "existingValue", "newValue", "nextExisting", "nextUpdated", "popCount", "idx", "canEdit", "newArray", "spliceIn", "newLen", "after", "spliceOut", "pop", "removeIn", "removed", "exists", "MAX_ARRAY_MAP_SIZE", "isEditable", "newEntries", "keyHashFrag", "MAX_BITMAP_INDEXED_SIZE", "newBitmap", "newNodes", "newCount", "MIN_HASH_ARRAY_MAP_SIZE", "keyMatch", "stack", "subNode", "List", "empty", "emptyList", "isList", "makeList", "VNode", "list", "setSize", "maybeList", "IS_LIST_SENTINEL", "listNodeFor", "_origin", "updateList", "splice", "insert", "_capacity", "_level", "_tail", "values", "oldSize", "setListBounds", "unshift", "mergeIntoListWith", "iterateList", "DONE", "ListPrototype", "removeBefore", "level", "originIndex", "newChild", "removingFirst", "oldChild", "editable", "editableVNode", "removeAfter", "sizeIndex", "EMPTY_LIST", "EMPTY_ORDERED_MAP", "left", "right", "tailPos", "getTailOffset", "tail", "iterateNodeOrLeaf", "iterateLeaf", "iterateNode", "from", "to", "origin", "capacity", "newTail", "updateVNode", "nodeHas", "lowerNode", "newLowerNode", "rawIndex", "owner", "oldOrigin", "oldCapacity", "newOrigin", "newCapacity", "newLevel", "offsetShift", "oldTailOffset", "newTailOffset", "oldTail", "beginIndex", "maxSize", "emptyOrderedMap", "isOrderedMap", "maybeOrderedMap", "makeOrderedMap", "omap", "_map", "_list", "updateOrderedMap", "newMap", "newList", "flip", "ToKeyedSequence", "indexed", "_iter", "_useKeys", "ToIndexedSequence", "ToSetSequence", "FromEntriesSequence", "flipFactory", "flipSequence", "makeSequence", "reversedSequence", "cacheResultThrough", "mapFactory", "context", "mappedSequence", "reverseFactory", "filterFactory", "predicate", "filterSequence", "countByFactory", "grouper", "groups", "groupByFactory", "isKeyedIter", "coerce", "iterableClass", "reify", "sliceFactory", "originalSize", "resolvedBegin", "resolvedEnd", "sliceSize", "resolvedSize", "sliceSeq", "skipped", "isSkipping", "takeWhileFactory", "takeSequence", "iterating", "skipWhileFactory", "skipSequence", "skipping", "concatFactory", "isKeyedIterable", "concat", "singleton", "concatSeq", "flatten", "reduce", "sum", "flattenFactory", "depth", "flatSequence", "stopped", "flatDeep", "currentDepth", "flatMapFactory", "interposeFactory", "separator", "interposedSequence", "defaultComparator", "maxFactory", "maxCompare", "comp", "zipWithFactory", "keyIter", "zipper", "zipSequence", "iterators", "isDone", "steps", "some", "validateEntry", "resolveSize", "Record", "defaultValues", "hasInitialized", "RecordType", "setProps", "RecordTypePrototype", "_name", "_defaultValues", "RecordPrototype", "valueSeq", "indexedIterable", "recordName", "defaultVal", "_empty", "makeRecord", "likeRecord", "record", "getPrototypeOf", "names", "setProp", "emptySet", "isSet", "add", "maybeSet", "IS_SET_SENTINEL", "fromKeys", "keySeq", "updateSet", "union", "intersect", "originalSet", "subtract", "OrderedSet", "__make", "EMPTY_SET", "SetPrototype", "__empty", "makeSet", "emptyOrderedSet", "isOrderedSet", "maybeOrderedSet", "EMPTY_ORDERED_SET", "OrderedSetPrototype", "makeOrderedSet", "Stack", "emptyStack", "isStack", "unshiftAll", "maybeStack", "IS_STACK_SENTINEL", "head", "_head", "peek", "makeStack", "pushAll", "EMPTY_STACK", "StackPrototype", "mixin", "methods", "keyCopier", "getOwnPropertySymbols", "toJS", "__toJS", "toJSON", "toObject", "toOrderedMap", "toOrderedSet", "toSet", "toStack", "__toStringMapper", "join", "returnValue", "find", "findEntry", "sideEffect", "joined", "isFirst", "reducer", "initialReduction", "reduction", "useFirst", "reduceRight", "reversed", "not", "butLast", "isEmpty", "countBy", "entriesSequence", "entryMapper", "filterNot", "found", "findKey", "findLast", "findLastEntry", "findLastKey", "first", "flatMap", "searchKey", "getIn", "searchKeyPath", "nested", "groupBy", "hasIn", "isSubset", "isSuperset", "keyOf", "keyMapper", "last", "lastKeyOf", "maxBy", "neg", "defaultNegComparator", "minBy", "rest", "skip", "amount", "skipLast", "skipWhile", "skipUntil", "take", "takeLast", "takeWhile", "takeUntil", "hashIterable", "IterablePrototype", "quoteString", "chain", "contains", "mapEntries", "mapKeys", "KeyedIterablePrototype", "JSON", "stringify", "String", "defaultZipper", "ordered", "keyed", "murmurHashOfSize", "hashMerge", "findIndex", "removeNum", "numArgs", "spliced", "findLastIndex", "interpose", "interleave", "zipped", "interleaved", "zip", "zipWith", "factory", "_Object$defineProperty", "configurable", "writable", "instance", "Constructor", "_defineProperties", "target", "props", "descriptor", "protoProps", "staticProps", "DEFAULT_RESPONSE_KEY", "isImmutable", "maybe", "Im", "objectify", "thing", "isObject", "fromJSOrdered", "js", "win", "File", "isFunction", "objWithHashedKeys", "fdObj", "newObj", "hashIdx", "trackKeys", "pair", "containsMultiple", "u", "f", "normalizeArray", "isFn", "isFunc", "memoize", "_memoize", "objMap", "S", "E", "objReduce", "res", "A", "systemThunkMiddleware", "getSystem", "dispatch", "getState", "action", "defaultStatusCode", "responses", "codes", "C", "w", "getList", "extractFileNameFromContentDispositionHeader", "responseFilename", "patterns", "P", "regex", "exec", "decodeURIComponent", "console", "pascalCaseFilename", "filename", "str", "replace", "upperFirst", "camelCase", "validateValueBySchema", "schema", "requiredByParam", "bypassRequiredCheck", "parameterContentMediaType", "errors", "nullable", "requiredBySchema", "maximum", "minimum", "format", "maxLength", "minLength", "uniqueItems", "maxItems", "minItems", "pattern", "schemaRequiresValue", "hasValue", "stringCheck", "arrayCheck", "arrayListCheck", "allChecks", "passedAnyCheck", "N", "objectVal", "parse", "y", "propKey", "errs", "err", "rxPattern", "RegExp", "test", "needRemove", "errorPerItem", "errorsPerIndex", "item", "isNaN", "Date", "toLowerCase", "validateParam", "param", "isOAS3", "paramRequired", "getParameterSchema", "paramDetails", "getXmlSampleSchema", "config", "exampleOverride", "xml", "$$ref", "items", "properties", "additionalProperties", "match", "memoizedCreateXMLExample", "shouldStringifyTypesConfig", "when", "shouldStringifyTypes", "defaultStringifyTypes", "getStringifiedSampleForSchema", "contentType", "memoizedSampleFromSchema", "resType", "typesToStringify", "types", "nextConfig", "M", "getYamlSampleSchema", "yamlString", "jsonExample", "YAML", "dump", "load", "lineWidth", "T", "getSampleSchema", "parseSearch", "search", "location", "params", "substr", "split", "btoa", "Buffer", "sorters", "operationsSorter", "alpha", "localeCompare", "method", "tagsSorter", "buildFormData", "data", "formArr", "encodeURIComponent", "shallowEqualKeys", "eq", "sanitizeUrl", "url", "braintreeSanitizeUrl", "requiresValidationURL", "uri", "D", "getAcceptControllingResponse", "suitable2xxResponse", "B", "z", "defaultResponse", "suitableDefaultResponse", "createDeepLinkPath", "q", "escapeDeepLinkPath", "cssEscape", "getExtensions", "defObj", "getCommonExtensions", "deeplyStripKey", "input", "keyToStrip", "numberToString", "paramToIdentifier", "returnAll", "allowHashes", "paramName", "paramIn", "generatedIdentifiers", "paramToValue", "paramValues", "allIdentifiers", "id", "generateCodeVerifier", "b64toB64UrlEncoded", "randomBytes", "createCodeChallenge", "codeVerifier", "shaJs", "digest", "isEmptyValue", "_Object$create", "setPrototypeOf", "subClass", "_Reflect$construct", "isNativeReflectConstruct", "possibleConstructorReturn", "Derived", "hasNativeReflectConstruct", "result", "Super", "NewTarget", "self", "ReferenceError", "arrayWithHoles", "iterableToArrayLimit", "unsupportedIterableToArray", "nonIterableRest", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "global", "uncurryThis", "isCallable", "getOwnPropertyDescriptor", "isForced", "path", "createNonEnumerableProperty", "hasOwn", "wrapConstructor", "NativeConstructor", "Wrapper", "options", "source", "USE_NATIVE", "VIRTUAL_PROTOTYPE", "sourceProperty", "targetProperty", "nativeProperty", "resultProperty", "TARGET", "GLOBAL", "STATIC", "stat", "PROTO", "proto", "nativeSource", "targetPrototype", "forced", "noTargetGet", "wrap", "sham", "real", "it", "check", "globalThis", "window", "Function", "NOT_FOUND", "defaultEqualityCheck", "defaultMemoize", "func", "equalityCheckOrOptions", "providedOptions", "equalityCheck", "_providedOptions$equa", "_providedOptions$maxS", "resultEqualityCheck", "put", "getEntries", "cacheIndex", "memoized", "matchingEntry", "clearCache", "getDependencies", "funcs", "dependencies", "dep", "dependencyTypes", "createSelectorCreator", "_len", "memoizeOptionsFromArgs", "_key", "createSelector", "_len2", "_key2", "_lastResult", "_recomputations", "directlyPassedOptions", "memoizeOptions", "resultFunc", "_directlyPassedOption", "_directlyPassedOption2", "finalMemoizeOptions", "memoizedResultFunc", "selector", "assign", "lastResult", "recomputations", "resetRecomputations", "_Symbol", "_Symbol$iterator", "_typeof", "_Object$keys", "_Object$getOwnPropertySymbols", "_filterInstanceProperty", "_Object$getOwnPropertyDescriptor", "_forEachInstanceProperty", "_Object$getOwnPropertyDescriptors", "_Object$defineProperties", "ownKeys", "enumerableOnly", "symbols", "sym", "_context", "_context2", "_Object$assign", "_extends", "makeWindow", "history", "open", "close", "prop", "NATIVE_BIND", "FunctionPrototype", "ImmutablePropTypes", "Immutable", "ANONYMOUS", "productionTypeChecker", "isRequired", "getProductionTypeChecker", "getPropType", "propValue", "propType", "createChainableTypeChecker", "validate", "checkType", "propName", "componentName", "propFullName", "locationName", "chainedCheckType", "createIterableSubclassTypeChecker", "subclassName", "validator", "immutableClassName", "immutableClassTypeValidator", "listOf", "mapOf", "orderedMapOf", "setOf", "orderedSetOf", "stackOf", "iterableOf", "recordOf", "shape", "mapContains", "orderedMapContains", "orderedMap", "orderedSet", "argument", "isPrototypeOf", "jsSpec", "oasVersion", "isSwagger2", "swaggerVersion", "OAS3ComponentWrapFactory", "Component", "Ori", "system", "specSelectors", "specJson", "warn", "shared", "uid", "NATIVE_SYMBOL", "USE_SYMBOL_AS_UID", "WellKnownSymbolsStore", "symbolFor", "createWellKnownSymbol", "withoutSetter", "description", "CONSTRUCTOR", "baseGet", "defaultValue", "tryToString", "wrappedWellKnownSymbolModule", "NAME", "anObject", "isArrayIteratorMethod", "lengthOfArrayLike", "getIteratorMethod", "iteratorClose", "Result", "ResultPrototype", "unboundFunction", "iterFn", "that", "AS_ENTRIES", "IS_ITERATOR", "INTERRUPTED", "stop", "callFn", "fails", "g", "O", "j", "I", "L", "F", "U", "V", "W", "H", "$", "J", "K", "G", "Q", "Z", "X", "UPDATE_SPEC", "UPDATE_URL", "UPDATE_JSON", "UPDATE_PARAM", "UPDATE_EMPTY_PARAM_INCLUSION", "VALIDATE_PARAMS", "SET_RESPONSE", "SET_REQUEST", "SET_MUTATED_REQUEST", "LOG_REQUEST", "CLEAR_RESPONSE", "CLEAR_REQUEST", "CLEAR_VALIDATE_PARAMS", "UPDATE_OPERATION_META_VALUE", "UPDATE_RESOLVED", "UPDATE_RESOLVED_SUBTREE", "SET_SCHEME", "updateSpec", "spec", "cleanSpec", "isString", "payload", "updateResolved", "updateUrl", "updateJsonSpec", "parseToJson", "specActions", "errActions", "specStr", "newSpecErr", "message", "reason", "line", "mark", "hasWarnedAboutResolveSpecDeprecation", "resolveSpec", "fetch", "resolve", "AST", "getConfigs", "modelPropertyMacro", "parameterMacro", "requestInterceptor", "responseInterceptor", "getLineNumberForPath", "baseDoc", "then", "preparedErrors", "fullPath", "newThrownErrBatch", "requestBatch", "debResolveSubtrees", "debounce", "errSelectors", "resolveSubtree", "resultMap", "specWithCurrentSubtrees", "allErrors", "clearBy", "all", "scheme", "oidcScheme", "req", "openIdConnectUrl", "status", "statusText", "openIdConnectData", "text", "specResolvedSubtree", "batchResult", "updateResolvedSubtree", "requestResolvedSubtree", "changeParam", "isXml", "changeParamByIdentity", "pathMethod", "invalidateResolvedSubtreeCache", "validateParams", "updateEmptyParamInclusion", "includeEmptyValue", "clearValidateParams", "changeConsumesValue", "changeProducesValue", "setResponse", "setRequest", "setMutatedRequest", "logRequest", "executeRequest", "oas3Selectors", "pathName", "operation", "op", "parameterInclusionSettingFor", "parameters", "paramValue", "contextUrl", "parseUrl", "operationId", "opId", "namespace", "server", "selectedServer", "namespaceVariables", "serverVariables", "globalVariables", "requestContentType", "responseContentType", "requestBody", "requestBodyValue", "requestBodyInclusionSetting", "parsedRequest", "buildRequest", "requestInterceptorWrapper", "mutatedRequest", "parsedMutatedRequest", "startTime", "execute", "duration", "catch", "serializeError", "extras", "specJsonWithResolvedSubtrees", "operationScheme", "contentTypeValues", "parameterValues", "clearResponse", "clearRequest", "setScheme", "classNames", "classes", "arg", "argType", "inner", "default", "aCallable", "_getIteratorMethod", "_Array$isArray", "allowArrayLike", "_e", "normalCompletion", "didErr", "_e2", "aFunction", "variable", "_indexOfInstanceProperty", "objectWithoutPropertiesLoose", "excluded", "sourceSymbolKeys", "UPDATE_SELECTED_SERVER", "UPDATE_REQUEST_BODY_VALUE", "UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG", "UPDATE_REQUEST_BODY_INCLUSION", "UPDATE_ACTIVE_EXAMPLES_MEMBER", "UPDATE_REQUEST_CONTENT_TYPE", "UPDATE_RESPONSE_CONTENT_TYPE", "UPDATE_SERVER_VARIABLE_VALUE", "SET_REQUEST_BODY_VALIDATE_ERROR", "CLEAR_REQUEST_BODY_VALIDATE_ERROR", "CLEAR_REQUEST_BODY_VALUE", "setSelectedServer", "selectedServerUrl", "setRequestBodyValue", "setRetainRequestBodyValueFlag", "setRequestBodyInclusion", "setActiveExamplesMember", "contextType", "contextName", "setRequestContentType", "setResponseContentType", "setServerVariableValue", "setRequestBodyValidateError", "validationErrors", "clearRequestBodyValidateError", "initRequestBodyValidateError", "clearRequestBodyValue", "requireObjectCoercible", "DESCRIPTORS", "IE8_DOM_DEFINE", "V8_PROTOTYPE_DEFINE_BUG", "toPropertyKey", "$defineProperty", "$getOwnPropertyDescriptor", "ENUMERABLE", "CONFIGURABLE", "WRITABLE", "Attributes", "current", "toLower", "escapeString", "openapi", "_ref", "v2OperationIdCompatibilityMode", "idWithoutWhitespace", "idFromPathMethod", "_context3", "_ref2", "substring", "legacyIdFromPathMethod", "_context4", "getOperationRaw", "paths", "cb", "toUpperCase", "operationObj", "cbValue", "_ref3", "rawOperationId", "normalizeSwagger", "parsedSpec", "$$normalized", "_context5", "pathParameters", "_loop", "_context6", "oid", "opList", "_context7", "__originalOperationId", "inheritsList", "toBeInherit", "inherits", "inheritName", "_step2", "_iterator2", "_loop2", "opParam", "$ref", "NEW_THROWN_ERR", "NEW_THROWN_ERR_BATCH", "NEW_SPEC_ERR", "NEW_SPEC_ERR_BATCH", "NEW_AUTH_ERR", "CLEAR", "CLEAR_BY", "newThrownErr", "newSpecErrBatch", "errArray", "newAuthErr", "IndexedObject", "toLength", "superCtor", "super_", "TempCtor", "buffer", "copyProps", "src", "dst", "SafeBuffer", "encodingOrOffset", "alloc", "allocUnsafe", "allocUnsafeSlow", "fill", "encoding", "buf", "SlowBuffer", "classof", "DOMIterables", "Iterators", "TO_STRING_TAG", "COLLECTION_NAME", "CollectionPrototype", "freeGlobal", "freeSelf", "isNothing", "subject", "common", "sequence", "repeat", "cycle", "isNegativeZero", "number", "Number", "NEGATIVE_INFINITY", "extend", "sourceKeys", "formatError", "exception", "compact", "where", "column", "snippet", "YAMLException$1", "captureStackTrace", "getLine", "lineStart", "lineEnd", "position", "maxLineLength", "maxHalfLength", "pos", "padStart", "indent", "linesBefore", "linesAfter", "re", "lineStarts", "lineEnds", "foundLineNo", "lineNoLength", "TYPE_CONSTRUCTOR_OPTIONS", "YAML_NODE_KINDS", "tag", "kind", "construct", "instanceOf", "represent", "representName", "defaultStyle", "multi", "styleAliases", "style", "alias", "compileList", "currentType", "newIndex", "previousType", "previousIndex", "Schema$1", "definition", "implicit", "explicit", "type$1", "loadKind", "compiledImplicit", "compiledExplicit", "compiledTypeMap", "scalar", "mapping", "fallback", "collectType", "failsafe", "_null", "canonical", "lowercase", "uppercase", "camelcase", "bool", "isOctCode", "isDecCode", "int", "ch", "hasDigits", "sign", "parseInt", "binary", "octal", "decimal", "hexadecimal", "YAML_FLOAT_PATTERN", "SCIENTIFIC_WITHOUT_DOT", "float", "POSITIVE_INFINITY", "parseFloat", "core", "YAML_DATE_REGEXP", "YAML_TIMESTAMP_REGEXP", "timestamp", "year", "month", "day", "hour", "minute", "second", "date", "fraction", "delta", "UTC", "setTime", "getTime", "toISOString", "BASE64_MAP", "code", "bitlen", "charAt", "tailbits", "bits", "Uint8Array", "_hasOwnProperty$3", "_toString$2", "pairKey", "pairHasKey", "objectKeys", "_toString$1", "pairs", "_hasOwnProperty$2", "_default", "_hasOwnProperty$1", "PATTERN_NON_PRINTABLE", "PATTERN_NON_ASCII_LINE_BREAKS", "PATTERN_FLOW_INDICATORS", "PATTERN_TAG_HANDLE", "PATTERN_TAG_URI", "_class", "is_EOL", "is_WHITE_SPACE", "is_WS_OR_EOL", "is_FLOW_INDICATOR", "fromHexCode", "lc", "simpleEscapeSequence", "charFromCodepoint", "fromCharCode", "simpleEscapeCheck", "simpleEscapeMap", "State$1", "onWarning", "legacy", "listener", "implicitTypes", "typeMap", "lineIndent", "firstTabInLine", "documents", "generateError", "state", "throwError", "throwWarning", "directiveHandlers", "args", "major", "minor", "version", "checkLineBreaks", "TAG", "handle", "prefix", "tagMap", "captureSegment", "checkJson", "_position", "_length", "_character", "_result", "mergeMappings", "destination", "overridableKeys", "quantity", "storeMappingPair", "keyTag", "keyNode", "valueNode", "startLine", "startLineStart", "startPos", "readLineBreak", "skipSeparationSpace", "allowComments", "checkIndent", "lineBreaks", "testDocumentSeparator", "writeFoldedLines", "readBlockSequence", "nodeIndent", "_line", "_tag", "_anchor", "anchor", "detected", "anchorMap", "composeNode", "readTagProperty", "tagHandle", "tagName", "isVerbatim", "isNamed", "readAnchorProperty", "parentIndent", "nodeContext", "allowToSeek", "allowCompact", "allowBlockStyles", "allowBlockScalars", "allowBlockCollections", "typeIndex", "typeQuantity", "typeList", "flowIndent", "blockIndent", "indentStatus", "atNewLine", "hasContent", "following", "_keyLine", "_keyLineStart", "_keyPos", "atExplicitKey", "_lineStart", "_pos", "terminator", "isPair", "isExplicitPair", "isMapping", "readNext", "captureStart", "folding", "tmp", "chomping", "didReadContent", "detectedIndent", "textIndent", "emptyLines", "atMoreIndented", "captureEnd", "hexLength", "hexResult", "withinFlowCollection", "hasPendingContent", "_lineIndent", "_kind", "readDocument", "directiveName", "directiveArgs", "documentStart", "hasDirectives", "loadDocuments", "nullpos", "loader", "loadAll", "_toString", "_hasOwnProperty", "CHAR_BOM", "ESCAPE_SEQUENCES", "DEPRECATED_BOOLEANS_SYNTAX", "DEPRECATED_BASE60_SYNTAX", "encodeHex", "character", "State", "noArrayIndent", "skipInvalid", "flowLevel", "styleMap", "sortKeys", "noRefs", "noCompatMode", "condenseFlow", "quotingType", "forceQuotes", "replacer", "explicitTypes", "duplicates", "usedDuplicates", "indentString", "spaces", "ind", "generateNextLine", "isWhitespace", "isPrintable", "isNsCharOrWhitespace", "isPlainSafe", "inblock", "cIsNsCharOrWhitespace", "cIsNsChar", "codePointAt", "needIndentIndicator", "chooseScalarStyle", "singleLineOnly", "indentPerLevel", "testAmbiguousType", "char", "prevChar", "hasLineBreak", "hasFoldableLine", "shouldTrackWidth", "previousLineBreak", "plain", "writeScalar", "iskey", "blockHeader", "dropEndingNewline", "width", "moreIndented", "lineRe", "nextLF", "lastIndex", "foldLine", "prevMoreIndented", "escapeSeq", "indentIndicator", "clip", "breakRe", "curr", "writeBlockSequence", "writeNode", "detectType", "block", "isblockseq", "tagStr", "duplicateIndex", "duplicate", "objectOrArray", "objectKey", "objectValue", "explicitPair", "pairBuffer", "objectKeyList", "encodeURI", "getDuplicateReferences", "objects", "duplicatesIndexes", "inspectNode", "renamed", "jsYaml", "Type", "Schema", "FAILSAFE_SCHEMA", "JSON_SCHEMA", "CORE_SCHEMA", "DEFAULT_SCHEMA", "YAMLException", "null", "safeLoad", "safeLoadAll", "safeDump", "_Promise", "asyncGeneratorStep", "gen", "reject", "_next", "_throw", "info", "TO_STRING_TAG_SUPPORT", "classofRaw", "CORRECT_ARGUMENTS", "callee", "NATIVE_WEAK_MAP", "sharedKey", "hiddenKeys", "OBJECT_ALREADY_INITIALIZED", "store", "wmget", "wmhas", "wmset", "metadata", "facade", "STATE", "enforce", "getterFor", "TYPE", "arraySpeciesCreate", "createMethod", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "IS_FILTER_REJECT", "NO_HOLES", "$this", "callbackfn", "specificCreate", "boundFunction", "filterReject", "toIndexedObject", "addToUnscopables", "InternalStateModule", "defineIterator", "IS_PURE", "ARRAY_ITERATOR", "setInternalState", "getInternalState", "iterated", "Arguments", "punycode", "util", "Url", "protocol", "slashes", "auth", "host", "port", "hostname", "query", "pathname", "href", "urlParse", "relative", "resolveObject", "protocolPattern", "portPattern", "simplePathPattern", "unwise", "autoEscape", "nonHostChars", "hostEndingChars", "hostnamePartPattern", "hostnamePartStart", "unsafeProtocol", "hostlessProtocol", "slashedProtocol", "querystring", "parseQueryString", "slashesDenoteHost", "queryIndex", "splitter", "uSplit", "trim", "simplePath", "lowerProto", "atSign", "hostEnd", "hec", "parseHost", "ipv6Hostname", "hostparts", "part", "newpart", "validParts", "notHost", "toASCII", "ae", "esc", "escape", "qm", "rel", "tkeys", "tk", "tkey", "rkeys", "rk", "rkey", "relPath", "isSourceAbs", "isRelAbs", "mustEndAbs", "removeAllDots", "srcPath", "psychotic", "isNullOrUndefined", "authInHost", "isNull", "hasTrailingSlash", "up", "isAbsolute", "SHOW_AUTH_POPUP", "AUTHORIZE", "LOGOUT", "PRE_AUTHORIZE_OAUTH2", "AUTHORIZE_OAUTH2", "VALIDATE", "CONFIGURE_AUTH", "RESTORE_AUTHORIZATION", "showDefinitions", "authorize", "authorizeWithPersistOption", "authActions", "persistAuthorizationIfNeeded", "logout", "logoutWithPersistOption", "preAuthorizeImplicit", "token", "isValid", "flow", "swaggerUIRedirectOauth2", "authId", "authorizeOauth2WithPersistOption", "authorizeOauth2", "authorizePassword", "username", "password", "passwordType", "clientId", "clientSecret", "form", "grant_type", "scope", "scopes", "headers", "client_id", "client_secret", "Authorization", "authorizeRequest", "body", "authorizeApplication", "authorizeAccessCodeWithFormParams", "redirectUrl", "redirect_uri", "code_verifier", "authorizeAccessCodeWithBasicAuthentication", "parsedUrl", "authSelectors", "additionalQueryStringParams", "finalServerUrl", "serverEffectiveValue", "fetchUrl", "_headers", "response", "parseError", "ok", "errData", "jsonResponse", "error_description", "jsonError", "configureAuth", "restoreAuthorization", "persistAuthorization", "authorized", "localStorage", "setItem", "definePropertyModule", "createPropertyDescriptor", "OPERATION_METHODS", "lastError", "specSource", "specResolved", "mergerFn", "oldVal", "newVal", "returnSelfOrNewMap", "externalDocs", "semver", "operations", "consumes", "produces", "security", "securityDefinitions", "findDefinition", "resolvedRes", "unresolvedRes", "definitions", "basePath", "schemes", "operationsWithRootInherited", "ops", "tags", "tagDetails", "currentTags", "operationsWithTags", "taggedMap", "ar", "taggedOperations", "tagA", "tagB", "sortFn", "requests", "mutatedRequests", "responseFor", "requestFor", "mutatedRequestFor", "allowTryItOutFor", "parameterWithMetaByIdentity", "opParams", "metaParams", "mergedParams", "currentParam", "inNameKeyedMeta", "hashKeyedMeta", "paramKey", "parameterWithMeta", "operationWithMeta", "meta", "getParameter", "inType", "hasHost", "parametersIncludeIn", "inValue", "parametersIncludeType", "typeValue", "producesValue", "currentProducesFor", "currentProducesValue", "firstProducesArrayItem", "producesOptionsFor", "operationProduces", "pathItemProduces", "globalProduces", "consumesOptionsFor", "operationConsumes", "pathItemConsumes", "globalConsumes", "matchResult", "urlScheme", "canExecuteScheme", "validateBeforeExecute", "getOAS3RequiredRequestBodyContentType", "requiredObj", "isMediaTypeSchemaPropertiesEqual", "currentMediaType", "targetMediaType", "requestBodyContent", "currentMediaTypeSchemaProperties", "targetMediaTypeSchemaProperties", "required", "qs", "protocolre", "windowsDriveLetter", "trimLeft", "rules", "address", "isSpecial", "ignore", "lolcation", "loc", "finaldestination", "unescape", "extractProtocol", "forwardSlashes", "otherSlashes", "slashesCount", "parser", "extracted", "instruction", "instructions", "base", "ins", "classNameCombinations", "getClassNameCombinations", "arrLength", "createStyleObject", "elementStyle", "stylesheet", "nonTokenClassNames", "className", "classNamesCombinations", "styleObject", "createClassNameString", "createElement", "_ref$style", "useInlineStyles", "TagName", "childrenCreator", "childrenCount", "children", "child", "allStylesheetSelectors", "startingClassName", "newLineRegex", "AllLineNumbers", "codeString", "codeStyle", "_ref2$containerStyle", "containerStyle", "paddingRight", "_ref2$numberStyle", "numberStyle", "startingLineNumber", "lines", "getInlineLineNumber", "lineNumber", "inlineLineNumberStyle", "assembleLineNumberStyles", "lineNumberStyle", "largestLineNumber", "num", "defaultLineNumberStyle", "display", "minWidth", "textAlign", "userSelect", "customLineNumberStyle", "createLineElement", "showInlineLineNumbers", "_ref3$lineProps", "lineProps", "_ref3$className", "showLineNumbers", "wrapLongLines", "flattenCodeTree", "tree", "newTree", "processLines", "codeTree", "wrapLines", "_ref4", "lastLineBreakIndex", "createWrappedLine", "createUnwrappedLine", "createLine", "splitValue", "newElem", "_line2", "_line3", "defaultRenderer", "_ref5", "rows", "isHighlightJs", "astGenerator", "highlightAuto", "_ref7", "language", "_ref7$style", "_ref7$customStyle", "customStyle", "_ref7$codeTagProps", "codeTagProps", "_ref7$useInlineStyles", "_ref7$showLineNumbers", "_ref7$showInlineLineN", "_ref7$startingLineNum", "lineNumberContainerStyle", "_ref7$lineNumberStyle", "_ref7$wrapLongLines", "_ref7$lineProps", "renderer", "_ref7$PreTag", "PreTag", "_ref7$CodeTag", "CodeTag", "_ref7$code", "defaultAstGenerator", "allLineNumbers", "defaultPreStyle", "hljs", "backgroundColor", "generatorClassName", "preProps", "defaultCodeValue", "_ref6", "hasLanguage", "listLanguages", "highlight", "whiteSpace", "registerLanguage", "SyntaxHighlighter", "yaml", "http", "bash", "powershell", "javascript", "styles", "agate", "arta", "monokai", "nord", "obsidian", "availableStyles", "getStyle", "Blob", "FormData", "globalObject", "Reflect", "propertyIsEnumerableModule", "getBuiltIn", "activeXDocument", "definePropertiesModule", "enumBugKeys", "html", "documentCreateElement", "IE_PROTO", "EmptyConstructor", "scriptTag", "content", "LT", "NullProtoObjectViaActiveX", "write", "temp", "parentWindow", "NullProtoObject", "ActiveXObject", "iframeDocument", "iframe", "document", "domain", "appendChild", "contentWindow", "Properties", "SET_METHOD", "baseToString", "baseGetTag", "getKnownSyntaxHighlighterLanguage", "MapCache", "resolver", "Cache", "UPDATE_LAYOUT", "UPDATE_FILTER", "UPDATE_MODE", "SHOW", "updateLayout", "layout", "updateFilter", "show", "shown", "changeMode", "isSpecificValue", "cloneSpecificValue", "copy", "deepCloneArray", "clone", "deepExtend", "safeGetProperty", "stringSlice", "METHOD_NAME", "baseIsNative", "getValue", "getRawTag", "objectToString", "symToStringTag", "isLength", "pna", "Duplex", "Readable", "Writable", "readable", "allowHalfOpen", "once", "onend", "_writableState", "ended", "nextTick", "onEndNT", "highWaterMark", "_readableState", "destroyed", "_destroy", "MAX_BYTES", "MAX_UINT32", "crypto", "msCrypto", "getRandomValues", "RangeError", "bytes", "generated", "process", "errorTransformers", "transformErrors", "inputs", "transformedErrors", "transformer", "newlyTransformedErrors", "transform", "_defineProperty", "_objectSpread2", "getOwnPropertyDescriptors", "defineProperties", "formatProdErrorMessage", "$$observable", "observable", "randomString", "random", "ActionTypes", "INIT", "REPLACE", "PROBE_UNKNOWN_ACTION", "isPlainObject", "preloadedState", "enhancer", "currentReducer", "currentState", "currentListeners", "nextListeners", "isDispatching", "ensureCanMutateNextListeners", "subscribe", "isSubscribed", "listeners", "replaceReducer", "nextReducer", "outerSubscribe", "observer", "observeState", "unsubscribe", "bindActionCreator", "actionCreator", "bindActionCreators", "actionCreators", "boundActionCreators", "compose", "applyMiddleware", "middlewares", "createStore", "_dispatch", "middlewareAPI", "middleware", "userAgent", "Deno", "versions", "v8", "propertyKey", "STRING_ITERATOR", "point", "base64", "ieee754", "kMaxLength", "TYPED_ARRAY_SUPPORT", "createBuffer", "__proto__", "ArrayBuffer", "byteOffset", "byteLength", "fromArrayLike", "isEncoding", "actual", "isBuffer", "checked", "assertSize", "isView", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "bidirectionalIndexOf", "dir", "arrayIndexOf", "indexSize", "valLength", "read", "readUInt16BE", "foundIndex", "hexWrite", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "byteArray", "latin1Write", "base64Write", "ucs2Write", "units", "hi", "lo", "fromByteArray", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "firstByte", "codePoint", "bytesPerSequence", "codePoints", "MAX_ARGUMENTS_LENGTH", "INSPECT_MAX_BYTES", "foo", "subarray", "typedArraySupport", "poolSize", "_augment", "species", "_isBuffer", "compare", "swap16", "swap32", "swap64", "thisStart", "thisEnd", "thisCopy", "targetCopy", "isFinite", "_arr", "ret", "out", "toHex", "checkOffset", "ext", "checkInt", "objectWriteUInt16", "littleEndian", "objectWriteUInt32", "checkIEEE754", "writeFloat", "noAssert", "writeDouble", "newBuf", "sliceLen", "readUIntLE", "mul", "readUIntBE", "readUInt8", "readUInt16LE", "readUInt32LE", "readUInt32BE", "readIntLE", "pow", "readIntBE", "readInt8", "readInt16LE", "readInt16BE", "readInt32LE", "readInt32BE", "readFloatLE", "readFloatBE", "readDoubleLE", "readDoubleBE", "writeUIntLE", "writeUIntBE", "writeUInt8", "writeUInt16LE", "writeUInt16BE", "writeUInt32LE", "writeUInt32BE", "writeIntLE", "limit", "sub", "writeIntBE", "writeInt8", "writeInt16LE", "writeInt16BE", "writeInt32LE", "writeInt32BE", "writeFloatLE", "writeFloatBE", "writeDoubleLE", "writeDoubleBE", "targetStart", "INVALID_BASE64_RE", "leadSurrogate", "toByteArray", "assignValue", "baseAssignValue", "customizer", "isNew", "arrayLikeKeys", "baseKeys", "isSymbol", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "setTimeout", "clearTimeout", "currentQueue", "queue", "draining", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "run", "marker", "Item", "noop", "title", "browser", "env", "argv", "on", "addListener", "off", "removeListener", "removeAllListeners", "emit", "prependListener", "prependOnceListener", "binding", "cwd", "chdir", "umask", "Prototype", "Hash", "blockSize", "finalSize", "_block", "_finalSize", "_blockSize", "enc", "accum", "assigned", "remainder", "_update", "rem", "lowBits", "highBits", "_hash", "_Object$setPrototypeOf", "_Object$getPrototypeOf", "_getPrototypeOf", "NonError", "super", "_prepareSuperMessage", "commonProperties", "isCalled", "destroyCircular", "seen", "to_", "forceEnumerable", "maxDepth", "deserializeError", "newError", "primitives", "primitive", "sanitizeRef", "objectContracts", "arrayContracts", "numberContracts", "stringContracts", "liftSampleHelper", "oldSchema", "setIfNotDefinedInTarget", "deprecated", "readOnly", "includeReadOnly", "writeOnly", "includeWriteOnly", "sampleFromSchemaGeneric", "respectXML", "usePlainValue", "example", "hasOneOf", "oneOf", "hasAnyOf", "anyOf", "schemaToAdd", "displayName", "_attr", "namespacePrefix", "schemaHasAny", "enum", "addPropertyToResult", "handleMinMaxItems", "sampleArray", "propertyAddedCounter", "hasExceededMaxProperties", "maxProperties", "requiredPropertiesToAdd", "addedCount", "isOptionalProperty", "canAddProperty", "overrideE", "attribute", "enumAttrVal", "attrExample", "attrDefault", "sample", "itemSchema", "itemSamples", "wrapped", "additionalProp", "additionalProp1", "additionalProps", "additionalPropSample", "toGenerateCount", "minProperties", "exclusiveMinimum", "exclusiveMaximum", "inferSchema", "createXMLExample", "XML", "declaration", "sampleFromSchema", "arg1", "arg2", "arg3", "memoizeN", "CopyToClipboard", "UPDATE_CONFIGS", "TOGGLE_CONFIGS", "configName", "configValue", "toggle", "loaded", "getItem", "componentDidCatch", "withErrorBoundary", "WrappedComponent", "component", "getComponent", "ErrorBoundary", "targetName", "getDisplayName", "WithErrorBoundary", "isReactComponent", "mapStateToProps", "swagger2SchemaKeys", "parameter", "parameterContentMediaTypes", "ReactReduxContext", "createContext", "callback", "nullListeners", "notify", "createListenerCollection", "batch", "Subscription", "parentSub", "handleChangeWrapper", "_proto", "addNestedSub", "trySubscribe", "notifyNestedSubs", "onStateChange", "Boolean", "tryUnsubscribe", "useIsomorphicLayoutEffect", "contextValue", "subscription", "previousState", "Context", "Provider", "_objectWithoutPropertiesLoose", "EMPTY_ARRAY", "NO_SUBSCRIPTION_ARRAY", "storeStateUpdatesReducer", "updateCount", "useIsomorphicLayoutEffectWithArgs", "effectFunc", "effectArgs", "captureWrapperProps", "lastWrapperProps", "lastChildProps", "renderIsScheduled", "wrapperProps", "actualChildProps", "childPropsFromStoreUpdate", "subscribeUpdates", "shouldHandleStateChanges", "childPropsSelector", "forceComponentUpdateDispatch", "didUnsubscribe", "lastThrownError", "checkForUpdates", "newChildProps", "latestStoreState", "initStateUpdates", "connectAdvanced", "selectorFactory", "_ref2$getDisplayName", "_ref2$methodName", "methodName", "_ref2$renderCountProp", "renderCountProp", "_ref2$shouldHandleSta", "_ref2$storeKey", "storeKey", "_ref2$forwardRef", "withRef", "forwardRef", "_ref2$context", "connectOptions", "wrappedComponentName", "selectorFactoryOptions", "pure", "usePureOnlyMemo", "ConnectFunction", "_useMemo", "reactReduxForwardedRef", "propsContext", "ContextToUse", "Consumer", "didStoreComeFromProps", "_useMemo2", "overriddenContextValue", "_useReducer", "previousStateUpdateResult", "renderedWrappedComponent", "Connect", "memo", "forwarded", "shallowEqual", "objA", "objB", "keysA", "keysB", "wrapMapToPropsConstant", "getConstant", "constant", "constantSelector", "dependsOnOwnProps", "getDependsOnOwnProps", "mapToProps", "wrapMapToPropsFunc", "proxy", "stateOrDispatch", "ownProps", "mapDispatchToProps", "defaultMergeProps", "stateProps", "dispatchProps", "mergeProps", "mergedProps", "areMergedPropsEqual", "hasRunOnce", "nextMergedProps", "impureFinalPropsSelectorFactory", "pureFinalPropsSelectorFactory", "areStatesEqual", "areOwnPropsEqual", "areStatePropsEqual", "hasRunAtLeastOnce", "handleSubsequentCalls", "nextState", "nextOwnProps", "nextStateProps", "statePropsChanged", "propsChanged", "stateChanged", "finalPropsSelectorFactory", "initMapStateToProps", "initMapDispatchToProps", "initMergeProps", "factories", "strictEqual", "createConnect", "_temp", "_ref$connectHOC", "connectHOC", "_ref$mapStateToPropsF", "mapStateToPropsFactories", "_ref$mapDispatchToPro", "mapDispatchToPropsFactories", "_ref$mergePropsFactor", "mergePropsFactories", "_ref$selectorFactory", "_ref3$pure", "_ref3$areStatesEqual", "_ref3$areOwnPropsEqua", "_ref3$areStatePropsEq", "_ref3$areMergedPropsE", "extraOptions", "newBatch", "withConnect", "reduxStore", "WithRoot", "identity", "connect", "WithSystem", "handleProps", "oldProps", "withMappedContainer", "getStore", "memGetComponent", "WithMappedContainer", "nextProps", "cleanProps", "omit", "render", "getComponents", "domNode", "App", "ReactDOM", "container", "failSilently", "log", "getTag", "isArguments", "isPrototype", "isTypedArray", "wellKnownSymbol", "V8_VERSION", "SPECIES", "internalObjectKeys", "toIntegerOrInfinity", "integer", "CORRECT_PROTOTYPE_GETTER", "ObjectPrototype", "baseIsArguments", "isObjectLike", "objectProto", "stubFalse", "freeExports", "freeModule", "baseKeysIn", "getMethod", "ITERATOR", "usingIterator", "iteratorMethod", "DataView", "Promise", "mapTag", "promiseTag", "setTag", "weakMapTag", "dataViewTag", "dataViewCtorString", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "Ctor", "ctorString", "isKey", "stringToPath", "isBoolean", "isNumber", "isUndefined", "isRegExp", "isDate", "isError", "isPrimitive", "redefine", "unsafe", "aConstructor", "defaultConstructor", "PromiseCapability", "promise", "$$resolve", "$$reject", "extractKey", "escapeShell", "escapeCMD", "escapePowershell", "getStringBodyOfMap", "request", "curlifyToJoin", "extractedKey", "curlify", "newLine", "isMultipartFormDataRequest", "curlified", "addWords", "addWordsWithoutLeadingSpace", "addNewLine", "addIndent", "R", "reqBody", "requestSnippetGenerator_curl_powershell", "requestSnippetGenerator_curl_bash", "requestSnippetGenerator_curl_cmd", "parseYamlConfig", "safeRenderPlugin", "componentList", "fullOverride", "mergedComponentList", "wrapComponents", "zipObject", "Original", "components", "Fallback", "getDefaultRequestBodyValue", "mediaType", "activeExamplesKey", "mediaTypeValue", "hasExamplesKey", "exampleSchema", "mediaTypeExample", "exampleValue", "RequestBody", "userHasEditedBody", "requestBodyErrors", "isExecute", "specPath", "onChange", "onChangeIncludeEmpty", "updateActiveExamplesKey", "setIsIncludedOptions", "shouldDispatchInit", "Markdown", "ModelExample", "RequestBodyEditor", "HighlightCode", "ExamplesSelectValueRetainer", "Example", "ParameterIncludeEmpty", "showCommonExtensions", "requestBodyDescription", "schemaForMediaType", "rawExamplesOfMediaType", "sampleForMediaType", "isObjectContent", "isBinaryFormat", "isBase64Format", "Input", "files", "JsonSchemaForm", "ParameterExt", "bodyProperties", "commonExt", "currentValue", "currentErrors", "included", "useInitialValFromSchemaSamples", "useInitialValFromEnum", "useInitialValue", "initialValue", "isFile", "xKey", "xVal", "dispatchInitialValue", "isIncluded", "isIncludedOptions", "isDisabled", "sampleRequestBody", "examples", "currentKey", "currentUserInputValue", "onSelect", "updateValue", "defaultToFirstExample", "expandDepth", "shallowArrayEquals", "foundKey", "OriginalCache", "setHash", "pushState", "$propertyIsEnumerable", "NASHORN_BUG", "toPrimitive", "postfix", "inspectSource", "constructorRegExp", "INCORRECT_TO_STRING", "isConstructorModern", "isConstructorLegacy", "called", "getOwnPropertyNames", "aPossiblePrototype", "setter", "CORRECT_SETTER", "ListCache", "stackClear", "stackDelete", "stackGet", "stackHas", "stackSet", "__data__", "listCacheClear", "listCacheDelete", "listCacheGet", "listCacheHas", "listCacheSet", "nativeCreate", "isKeyable", "webpackPolyfill", "deprecate", "baseIsTypedArray", "baseUnary", "nodeUtil", "nodeIsTypedArray", "objValue", "reIsUint", "_sliceInstanceProperty", "_Array$from", "arrayLikeToArray", "minLen", "baseMatches", "baseMatchesProperty", "getOwnPropertyNamesModule", "getOwnPropertyNamesExternalModule", "FREEZING", "REQUIRED", "METADATA", "setMetadata", "objectID", "weakData", "enable", "fastKey", "getWeakData", "onFreeze", "checkDCE", "__REACT_DEVTOOLS_GLOBAL_HOOK__", "OnlineValidatorBadge", "URL", "validatorUrl", "getDefinitionUrl", "setState", "sanitizedValidatorUrl", "ValidatorImage", "alt", "React", "img", "Image", "onload", "onerror", "textarea", "decodeEntity", "innerHTML", "sources", "UNESCAPE_MD_RE", "unescapeMd", "isValidEntityCode", "fromCodePoint", "surrogate1", "surrogate2", "NAMED_ENTITY_RE", "DIGITAL_ENTITY_TEST_RE", "replaceEntityPattern", "decoded", "replaceEntities", "HTML_ESCAPE_TEST_RE", "HTML_ESCAPE_REPLACE_RE", "HTML_REPLACEMENTS", "replaceUnsafeChar", "escapeHtml", "nextToken", "tokens", "tight", "blockquote_open", "blockquote_close", "getBreak", "fence", "fences", "fenceName", "langClass", "langPrefix", "fence_custom", "heading_open", "hLevel", "heading_close", "hr", "xhtmlOut", "bullet_list_open", "bullet_list_close", "list_item_open", "list_item_close", "ordered_list_open", "order", "ordered_list_close", "paragraph_open", "paragraph_close", "addBreak", "link_open", "linkTarget", "link_close", "image", "table_open", "table_close", "thead_open", "thead_close", "tbody_open", "tbody_close", "tr_open", "tr_close", "th_open", "align", "th_close", "td_open", "td_close", "strong_open", "strong_close", "em_open", "em_close", "del_open", "del_close", "ins_open", "ins_close", "mark_open", "mark_close", "sup", "hardbreak", "softbreak", "breaks", "htmlblock", "htmltag", "abbr_open", "abbr_close", "footnote_ref", "subId", "footnote_block_open", "footnote_block_close", "footnote_open", "footnote_close", "footnote_anchor", "dl_open", "dt_open", "dd_open", "dl_close", "dt_close", "dd_close", "Renderer", "Ruler", "__rules__", "__cache__", "StateInline", "parserInline", "outTokens", "posMax", "pending", "pendingLevel", "isInLabel", "linkLevel", "linkContent", "labelUnmatchedScopes", "parseLinkLabel", "labelEnd", "oldPos", "oldFlag", "skipToken", "parseAbbr", "label", "abbreviations", "normalizeLink", "normalized", "decodeURI", "parseLinkDestination", "link", "validateLink", "parseLinkTitle", "normalizeReference", "parseReference", "references", "renderInline", "_rules", "__find__", "__compile__", "chains", "rule", "enabled", "altName", "at", "opt", "before", "beforeName", "ruleName", "afterName", "strict", "disable", "getRules", "chainName", "pushPending", "cacheSet", "cacheGet", "PUNCT_CHARS", "regEscape", "RARE_RE", "SCOPED_ABBR_RE", "SCOPED_ABBR", "QUOTE_TEST_RE", "QUOTE_RE", "PUNCT_RE", "isLetter", "replaceAt", "inlineMode", "inline", "tok", "lastParagraph", "currentLabel", "insideRef", "refTokens", "footnotes", "reg", "regText", "blockTokens", "abbrRegExp", "inlineTokens", "blkIdx", "typographer", "thisLevel", "lastSpace", "nextSpace", "canOpen", "canClose", "isSingle", "OUTER", "single", "quotes", "Core", "ruler", "StateBlock", "indent_found", "bMarks", "eMarks", "tShift", "blkIndent", "lineMax", "parentType", "ddIndent", "skipBulletListMarker", "skipOrderedListMarker", "skipEmptyLines", "skipSpaces", "skipChars", "skipCharsBack", "getLines", "keepLastLF", "html_blocks", "HTML_TAG_OPEN_RE", "HTML_TAG_CLOSE_RE", "skipMarker", "_rules$1", "endLine", "nextLine", "silent", "mem", "haveEndMarker", "lastLineEmpty", "oldTShift", "oldBMarks", "oldIndent", "oldParentType", "terminatorRules", "terminate", "maxNesting", "tokenize", "cnt", "oldTight", "posAfterMarker", "indentAfterMarker", "markerValue", "markerCharCode", "contentStart", "listTokIdx", "prevEmptyEnd", "listLines", "itemLines", "oldBMark", "refs", "lineText", "cell", "aligns", "tableLines", "tbodyLines", "ddLine", "dtLine", "oldDDIndent", "ParserBlock", "hasEmptyLines", "TABS_SCAN_RE", "NEWLINES_RE", "SPACES_RE", "isTerminatorChar", "lastTabPos", "ESCAPED", "isAlphaNum", "scanDelims", "lastChar", "nextChar", "can_open", "can_close", "delims", "UNESCAPE_RE", "UNESCAPE_RE$1", "url_schemas", "EMAIL_RE", "AUTOLINK_RE", "replace$1", "attr_value", "open_tag", "HTML_TAG_RE", "DIGITAL_RE", "NAMED_RE", "_rules$2", "pmax", "matchStart", "matchEnd", "startCount", "oldCount", "labelStart", "isImage", "footnoteId", "oldLength", "footnoteSubId", "linkMatch", "emailMatch", "fullUrl", "ParserInline", "cached_pos", "StateCore", "Remarkable", "preset", "linkify", "configure", "presets", "use", "plugin", "parseInline", "element", "throwUnhandledCaseError", "theValue", "HtmlTag", "cfg", "attrs", "whitespaceRegex", "innerHtml", "setTagName", "getTagName", "setAttr", "attrName", "attrValue", "getAttrs", "getAttr", "setAttrs", "setClass", "cssClass", "addClass", "newClass", "classAttr", "getClass", "newClasses", "removeClass", "removeClasses", "hasClass", "setInnerHTML", "setInnerHtml", "getInnerHTML", "getInnerHtml", "toAnchorString", "attrsStr", "buildAttrsStr", "attrsArr", "AnchorTagBuilder", "newWindow", "truncate", "build", "createAttrs", "processAnchorText", "getAnchorText", "getAnchorHref", "createCssClass", "returnClasses", "cssClassSuffixes", "getCssClassSuffixes", "anchorText", "doTruncate", "truncateLength", "truncateLocation", "truncateLen", "ellipsisChars", "ellipsisLengthBeforeParsing", "ellipsisLength", "buildUrl", "urlObj", "fragment", "buildSegment", "segment", "remainingAvailableLength", "remainingAvailableLengthHalf", "startOffset", "endOffset", "availableLength", "urlSub", "matchQuery", "pathAndQuery", "Match", "__jsduckDummyDocProp", "matchedText", "tagBuilder", "getMatchedText", "setOffset", "getOffset", "getType", "buildTag", "extendStatics", "__extends", "__", "__assign", "urlSuffixRegex", "_super", "EmailMatch", "_this", "email", "getEmail", "HashtagMatch", "serviceName", "hashtag", "getServiceName", "getHashtag", "MentionMatch", "mention", "getMention", "PhoneMatch", "plusSign", "getPhoneNumber", "getNumber", "UrlMatch", "urlMatchType", "protocolUrlMatch", "protocolRelativeMatch", "stripPrefix", "www", "stripTrailingSlash", "decodePercentEncoding", "schemePrefixRegex", "wwwPrefixRegex", "protocolRelativeRegex", "protocolPrepended", "getUrlMatchType", "getUrl", "stripProtocolRelativePrefix", "stripSchemePrefix", "stripWwwPrefix", "removeTrailingSlash", "removePercentEncoding", "preProcessedEntityAnchorText", "Matcher", "letterRe", "digitRe", "nonDigitRe", "whitespaceRe", "quoteRe", "controlCharsRe", "alphaCharsStr", "alphaCharsAndMarksStr", "decimalNumbersStr", "alphaNumericCharsStr", "alphaNumericAndMarksCharsStr", "ipStr", "domainLabelStr", "getDomainLabelStr", "group", "getDomainNameStr", "domainNameCharRegex", "tldRegex", "EmailMatcher", "localPartCharRegex", "strictTldRegex", "parseMatches", "matches", "noCurrentEmailMatch", "CurrentEmailMatch", "mailtoTransitions", "charIdx", "currentEmailMatch", "stateNonEmailAddress", "stateMailTo", "stateLocalPart", "stateLocalPartDot", "stateAtSign", "stateDomainChar", "stateDomainHyphen", "stateDomainDot", "captureMatchIfValidAndReset", "beginEmailMatch", "hasMailtoPrefix", "resetToNonEmailMatchState", "hasDomainDot", "newState", "emailAddress", "emailAddressNormalized", "UrlMatchValidator", "urlMatch", "isValidUriScheme", "urlMatchDoesNotHaveProtocolOrDot", "urlMatchDoesNotHaveAtLeastOneWordChar", "isValidIpAddress", "containsMultipleDots", "uriSchemeMatch", "newRegex", "hasFullProtocolRegex", "ipRegex", "stringBeforeSlash", "uriSchemeMatchArr", "uriSchemeRegex", "uriScheme", "hasWordCharAfterProtocolRegex", "wordCharRegExp", "UrlMatcher", "matcherRegex", "_loop_1", "matchStr", "schemeUrlMatch", "wwwUrlMatch", "wwwProtocolRelativeMatch", "tldProtocolRelativeMatch", "this_1", "matchHasUnbalancedClosingParen", "matchHasInvalidCharAfterTld", "foundCommonScheme", "commonScheme", "indexOfSchemeStart", "startChar", "endChar", "numOpenBraces", "HashtagMatcher", "nonWordCharRegex", "phoneMatcherRegex", "PhoneMatcher", "cleanNumber", "contextClear", "testMatch", "twitterRegex", "instagramRegex", "soundcloudRegex", "MentionMatcher", "matcherRegexes", "parseHtml", "_a", "onOpenTag", "onCloseTag", "onText", "onComment", "onDoctype", "noCurrentTag", "CurrentTag", "currentDataIdx", "currentTag", "stateData", "stateTagOpen", "stateEndTagOpen", "stateTagName", "stateBeforeAttributeName", "stateAttributeName", "stateAfterAttributeName", "stateBeforeAttributeValue", "stateAttributeValueDoubleQuoted", "stateAttributeValueSingleQuoted", "stateAttributeValueUnquoted", "stateAfterAttributeValueQuoted", "stateSelfClosingStartTag", "stateMarkupDeclarationOpen", "stateCommentStart", "stateCommentStartDash", "stateComment", "stateCommentEndDash", "stateCommentEnd", "stateCommentEndBang", "stateDoctype", "startNewTag", "isClosing", "isOpening", "captureTagName", "emitTagAndPreviousTextNode", "resetToDataState", "textBeforeTag", "startIdx", "Autolinker", "urls", "phone", "replaceFn", "sanitizeHtml", "matchers", "normalizeUrlsCfg", "normalizeStripPrefixCfg", "normalizeTruncateCfg", "textOrHtml", "schemeMatches", "wwwMatches", "tldMatches", "dest", "skipTagNames", "skipTagsStackCount", "textSplit", "splitRegex", "lastIdx", "currentOffset_1", "splitText", "textNodeMatches", "parseText", "compactMatches", "removeUnwantedMatches", "matchedTextLength", "endIdx", "removeIdx", "getMatchers", "numMatchers", "textMatches", "numTextMatches", "newHtml", "createMatchReturnVal", "replaceFnResult", "getTagBuilder", "matcher", "Email", "Hashtag", "Mention", "Phone", "LINK_SCAN_RE", "isLinkClose", "createLinkifier", "links", "autolinker", "parseTokens", "ln", "htmlLinkLevel", "linkifier", "md", "useUnsafeMarkdown", "sanitized", "sanitizer", "cx", "dangerouslySetInnerHTML", "__html", "DomPurify", "addHook", "setAttribute", "defaultProps", "ALLOW_DATA_ATTR", "FORBID_ATTR", "hasWarnedAboutDeprecation", "sanitize", "ADD_ATTR", "FORBID_TAGS", "_classCallCheck", "_setPrototypeOf", "_possibleConstructorReturn", "checkItem", "createChecker", "checklist", "_React$Component", "ImmutablePureComponent", "updateOnProps", "updateOnStates", "Model", "model", "isRef", "ObjectModel", "ArrayModel", "PrimitiveModel", "getModelName", "getRefSchema", "require", "height", "ImPropTypes", "PropTypes", "formats", "_toConsumableArray", "arr2", "isFrozen", "freeze", "seal", "thisValue", "Func", "arrayForEach", "unapply", "arrayPop", "arrayPush", "stringToLowerCase", "stringMatch", "stringReplace", "stringIndexOf", "stringTrim", "regExpTest", "typeErrorCreate", "unconstruct", "thisArg", "addToSet", "lcElement", "newObject", "lookupGetter", "desc", "fallbackValue", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "html$1", "svg$1", "mathMl$1", "MUSTACHE_EXPR", "ERB_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "_toConsumableArray$1", "getGlobal", "_createTrustedTypesPolicy", "trustedTypes", "createPolicy", "suffix", "ATTR_NAME", "currentScript", "hasAttribute", "getAttribute", "policyName", "createHTML", "html$$1", "createDOMPurify", "DOMPurify", "isSupported", "originalDocument", "DocumentFragment", "HTMLTemplateElement", "Node", "Element", "NodeFilter", "_window$NamedNodeMap", "NamedNodeMap", "MozNamedAttrMap", "Text", "Comment", "DOMParser", "ElementPrototype", "cloneNode", "getNextSibling", "getChildNodes", "getParentNode", "template", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "RETURN_TRUSTED_TYPE", "_document", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "documentMode", "hooks", "createHTMLDocument", "MUSTACHE_EXPR$$1", "ERB_EXPR$$1", "DATA_ATTR$$1", "ARIA_ATTR$$1", "IS_SCRIPT_OR_DATA$$1", "ATTR_WHITESPACE$$1", "IS_ALLOWED_URI$$1", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ALLOW_ARIA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "SAFE_FOR_TEMPLATES", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_DOM_IMPORT", "SANITIZE_DOM", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "transformCaseFunc", "CONFIG", "formElement", "_parseConfig", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "ADD_TAGS", "table", "tbody", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "namespaceURI", "parentTagName", "commonSvgAndHTMLElements", "_forceRemove", "parentNode", "removeChild", "outerHTML", "_removeAttribute", "getAttributeNode", "removeAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "dirtyPayload", "parseFromString", "createDocument", "insertBefore", "createTextNode", "childNodes", "_createIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "_isClobbered", "elm", "nodeName", "textContent", "attributes", "_isNode", "_executeHook", "entryPoint", "currentNode", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_isValidAttribute", "lcTag", "lcName", "_sanitizeAttributes", "attr", "hookEvent", "keepAttr", "allowedAttributes", "forceKeepAttr", "setAttributeNS", "_sanitizeShadowDOM", "shadowNode", "shadowIterator", "nextNode", "importedNode", "oldNode", "returnNode", "toStaticHTML", "firstChild", "nodeIterator", "serializedHTML", "setConfig", "clearConfig", "isValidAttribute", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "$Symbol", "symbol", "copyright", "license", "setGlobal", "SHARED", "EXISTS", "arraySpeciesConstructor", "originalArray", "functionToString", "toAbsoluteIndex", "IS_INCLUDES", "el", "fromIndex", "createProperty", "fin", "FunctionName", "createIteratorConstructor", "setToStringTag", "IteratorsCore", "PROPER_FUNCTION_NAME", "PROPER", "CONFIGURABLE_FUNCTION_NAME", "IteratorPrototype", "BUGGY_SAFARI_ITERATORS", "returnThis", "IteratorConstructor", "DEFAULT", "IS_SET", "FORCED", "CurrentIteratorPrototype", "KEY", "getIterationMethod", "KIND", "defaultIterator", "INCORRECT_VALUES_NAME", "nativeIterator", "anyNativeIterator", "mapCacheClear", "mapCacheDelete", "mapCacheGet", "mapCacheHas", "mapCacheSet", "arrayBuffer", "getPrototype", "freeProcess", "arrayFilter", "stubArray", "nativeGetSymbols", "getSymbols", "castPath", "toKey", "reIsDeepProp", "reIsPlainProp", "ReflectOwnKeys", "ReflectApply", "receiver", "NumberIsNaN", "EventEmitter", "init", "emitter", "errorListener", "eventTargetAgnosticAddListener", "handler", "flags", "_events", "_eventsCount", "_maxListeners", "defaultMaxListeners", "checkListener", "_getMaxListeners", "_addListener", "prepend", "events", "warning", "newListener", "warned", "onceWrapper", "fired", "wrapFn", "_onceWrap", "_listeners", "unwrap", "evlistener", "arrayClone", "listenerCount", "addEventListener", "wrapListener", "removeEventListener", "setMaxListeners", "getMaxListeners", "doError", "er", "originalListener", "rawListeners", "eventNames", "Stream", "Transform", "PassThrough", "CorkedRequest", "finish", "corkReq", "pendingcb", "corkedRequestsFree", "asyncWrite", "setImmediate", "WritableState", "internalUtil", "OurUint8Array", "realHasInstance", "destroyImpl", "nop", "stream", "isDuplex", "objectMode", "writableObjectMode", "hwm", "writableHwm", "writableHighWaterMark", "defaultHwm", "finalCalled", "needDrain", "ending", "finished", "noDecode", "decodeStrings", "defaultEncoding", "writing", "corked", "sync", "bufferProcessing", "onwrite", "writecb", "writelen", "finishMaybe", "errorEmitted", "needFinish", "bufferedRequest", "clearBuffer", "afterWrite", "lastBufferedRequest", "prefinished", "bufferedRequestCount", "_write", "writev", "_writev", "destroy", "final", "_final", "doWrite", "chunk", "holder", "allBuffers", "isBuf", "callFinal", "need", "getBuffer", "hasInstance", "pipe", "valid", "newChunk", "cork", "uncork", "setDefaultEncoding", "_undestroy", "undestroy", "isConstructor", "$SyntaxError", "SyntaxError", "$Function", "$TypeError", "getEvalledConstructor", "expressionSyntax", "$gOPD", "throwTypeError", "ThrowTypeError", "calleeThrows", "gOPDthrows", "hasSymbols", "getProto", "needsEval", "TypedArray", "INTRINSICS", "AggregateError", "Atomics", "BigInt", "eval", "EvalError", "Float32Array", "Float64Array", "FinalizationRegistry", "Int8Array", "Int16Array", "Int32Array", "Proxy", "SharedArrayBuffer", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "URIError", "WeakRef", "WeakSet", "doEval", "LEGACY_ALIASES", "$concat", "$spliceApply", "$replace", "$strSlice", "rePropName", "reEscapeChar", "quote", "subString", "getBaseIntrinsic", "allowMissing", "intrinsicName", "parts", "intrinsicBaseName", "intrinsic", "intrinsicRealName", "skipFurtherCaching", "isOwn", "percentTwenties", "Format", "formatters", "RFC1738", "RFC3986", "USE_NATIVE_URL", "redefineAll", "anInstance", "$toString", "validateArgumentsLength", "arraySort", "URL_SEARCH_PARAMS", "URL_SEARCH_PARAMS_ITERATOR", "getInternalParamsState", "getInternalIteratorState", "n$Fetch", "N$Request", "Headers", "RequestPrototype", "HeadersPrototype", "plus", "sequences", "percentSequence", "percentDecode", "deserialize", "replacements", "serialize", "URLSearchParamsIterator", "URLSearchParamsState", "parseObject", "parseQuery", "bindURL", "entryIterator", "entryNext", "updateURL", "URLSearchParamsConstructor", "URLSearchParamsPrototype", "append", "getAll", "URLSearchParams", "headersHas", "headersSet", "wrapRequestOptions", "RequestConstructor", "Request", "statePlugins", "reducers", "makeReducers", "actions", "selectors", "DEFAULT_ERROR_STRUCTURE", "newErrors", "errValue", "filterValue", "seekStr", "wrapSelectors", "isShown", "thingToShow", "currentFilter", "def", "whatMode", "showSummary", "oriSelector", "taggedOps", "layoutSelectors", "configs", "maxDisplayedTags", "opsFilter", "wrapActions", "valueKey", "paramMeta", "isEmptyValueIncluded", "statusCode", "operationPath", "metaPath", "ori", "pathItems", "pathItemKeys", "viewPlugin", "rootInjects", "makeMappedContainer", "RequestSnippets", "requestSnippets", "getGenerators", "languageKeys", "generators", "getSnippetGenerators", "genFn", "getActiveLanguage", "getDefaultExpanded", "activeLanguage", "requestSnippetsSelectors", "expanded", "snippetGenerators", "activeGenerator", "cursor", "lineHeight", "paddingBottom", "paddingTop", "border", "borderRadius", "boxShadow", "borderBottom", "activeStyle", "marginTop", "marginRight", "marginLeft", "zIndex", "getBtnStyle", "SnippetComponent", "syntaxHighlight", "activated", "onWheel", "preventYScrollingBeyondElement", "justifyContent", "alignItems", "marginBottom", "onClick", "background", "xlinkHref", "paddingLeft", "color", "levels", "getLevel", "logLevel", "logLevelInt", "debug", "withCredentials", "preauthorizeBasic", "definitionBase", "preauthorizeApiKey", "afterLoad", "initOAuth", "specWrapActionReplacements", "securities", "header", "parsedAuth", "delete", "shownDefinitions", "definitionsToAuthorize", "getDefinitionsByNames", "allowedScopes", "definitionsForRequirements", "allDefinitions", "sec", "isAuthorized", "oriAction", "specSecurity", "downloadUrlPlugin", "toolbox", "download", "updateLoadingStatus", "specUrl", "checkPossibleFailReasons", "loadSpec", "credentials", "enums", "loadingStatus", "downloadConfig", "getConfigByUrl", "oriVal", "layoutActions", "parseDeepLinkHash", "OperationWrapper", "OperationTag", "OperationTagWrapper", "SCROLL_TO", "CLEAR_SCROLL_TO", "deepLinking", "tokenArray", "urlHashArray", "urlHashArrayFromIsShownKey", "assetName", "scrollTo", "rawHash", "hashArray", "isShownKey", "isShownKeyFromUrlHashArray", "tagId", "maybeOperationId", "tagIsShownKey", "readyToScroll", "scrollToKey", "getScrollToKey", "scrollToElement", "clearScrollTo", "getScrollParent", "zenscroll", "createScroller", "includeHidden", "LAST_RESORT", "getComputedStyle", "excludeStaticParent", "overflowRegex", "parentElement", "overflow", "overflowY", "overflowX", "onLoad", "phrase", "tagObj", "engaged", "onComplete", "hasError", "errorInfo", "FallbackComponent", "specWrapSelectors", "authWrapSelectors", "oas3", "oas3Actions", "oas3Reducers", "onlyOAS3", "isOAS3Helper", "OAS3NullSelector", "servers", "isSwagger2Helper", "defName", "flowKey", "flowVal", "translatedDef", "authorizationUrl", "tokenUrl", "oidcData", "grants", "grant", "translatedScopes", "acc", "cur", "resolvedSchemes", "Callbacks", "HttpAuth", "Servers", "ServersContainer", "OperationServers", "operationLink", "OperationLink", "callbacks", "OperationContainer", "callbackElements", "callbackName", "pathItemName", "pathItem", "allowTryItOut", "targetOp", "setServer", "currentServer", "variableName", "newVariableValue", "getServerVariable", "currentServerDefinition", "prevServerDefinition", "prevServerVariableDefs", "prevServerVariableDefaultValue", "currentServerVariableDefs", "currentServerVariableDefaultValue", "getEffectiveServerValue", "shouldShowVariableUI", "htmlFor", "onServerChange", "onServerVariableValueChange", "enumValue", "selected", "serverVariableValue", "NOOP", "inputValue", "applyDefaultValue", "isInvalid", "TextArea", "invalid", "onDomChange", "PureComponent", "Row", "Col", "AuthError", "JumpToPath", "autoFocus", "autoComplete", "forceUpdate", "getSelectedServer", "operationServers", "pathServers", "serversToDisplay", "displaying", "AuthItem", "JsonSchema_string", "VersionStamp", "onlineValidatorBadge", "trimmed", "onAuthChange", "ModelComponent", "disabled", "shouldRetainRequestBodyValue", "hasUserEditedBody", "userEditedRequestBody", "kv", "currentMediaTypeDefaultBodyValue", "activeExamplesMember", "locationData", "varValues", "serverValue", "validateShallowRequired", "oas3RequiredRequestBodyContentType", "oas3RequestContentType", "oas3RequestBodyValue", "missingRequiredKeys", "requiredKeys", "contentTypeVal", "requiredKey", "currentVal", "valueKeys", "valueKeyVal", "missingBodyValue", "missingKeyValues", "bodyValue", "currentMissingKey", "bodyValues", "allPlugins", "mod", "SafeRender", "isRfc3986Reserved", "isRrc3986Unreserved", "encodeDisallowedCharacters", "encoder", "TextEncoder", "encode", "byte", "encodedByte", "stylize", "explode", "valueEncoder", "_after", "_after2", "_context8", "_context9", "_context10", "middleChar", "_context11", "_context12", "_context13", "_context14", "_context15", "_context16", "_context17", "_context18", "_context19", "_context20", "_context21", "_context22", "formdata", "serializeRes", "mergeInQueryOrForm", "_x", "_http", "_callee", "_error", "_args", "headerName", "t0", "sent", "userFetch", "t1", "t2", "responseError", "abrupt", "shouldDownloadAsText", "parseBody", "oriRes", "_ref$loadSpec", "serializeHeaders", "useText", "getBody", "blob", "serializeHeaderValue", "navigatorObj", "navigator", "product", "isArrayOfFile", "STYLE_SEPARATORS", "spaceDelimited", "pipeDelimited", "SEPARATORS", "csv", "ssv", "tsv", "pipes", "formatKeyValue", "skipEncoding", "collectionFormat", "allowEmptyValue", "serializationOption", "encodeFn", "encodedKey", "formatKeyValueBySerializationOption", "allowReserved", "encodeKeyFn", "reqForm", "formData", "_step$value", "_blob", "encodeFormOrQuery", "encodedQuery", "parameterName", "_step3", "_iterator3", "_step3$value", "indices", "_req$url", "joinSearch", "strs", "hasFile", "_url$split", "_url$split2", "baseUrl", "oriSearch", "newStr", "oriQuery", "keysToRemove", "finalStr", "_objectKeys", "_deepClone", "isInteger", "charCode", "escapePathComponent", "unescapePathComponent", "hasUndefined", "objKeys", "objKeysLength", "patchErrorMessageFormatter", "messageParts", "PatchError", "_newTarget", "JsonPatchError", "deepClone", "objOps", "newDocument", "move", "getValueByPointer", "originalValue", "applyOperation", "valueToCopy", "_areEquals", "_get", "arrOps", "pointer", "getOriginalDestination", "validateOperation", "mutateDocument", "banPrototypeModifications", "existingPathFragment", "validateFunction", "applyPatch", "patch", "results", "length_1", "applyReducer", "operationResult", "pathLen", "existingPathLen", "externalValidator", "arrA", "arrB", "beforeDict", "Mirror", "observers", "ObserverInfo", "unobserve", "observe", "mirror", "observerInfo", "dirtyCheck", "generate", "fastCheck", "patches", "invertible", "_generate", "newKeys", "oldKeys", "deleted", "tree1", "tree2", "opts", "normalizeJSONPath", "getInByJsonPath", "_newValue", "allowMetaPatches", "isAdditiveMutation", "_currentValue", "_newValue2", "parentPathMatch", "fullyNormalizeArray", "cleanArray", "isPromise", "forEachNew", "mutations", "forEachNewPatch", "forEachNewPrimitive", "forEachPrimitive", "isJsonPatch", "isContextPatch", "isPatch", "isMutation", "isGenerator", "mutation", "newResults", "arrayResults", "moreResults", "jsonPath", "_t", "createErrorType", "freelyNamedKeyParents", "nonFreelyNamedKeyGrandparents", "freelyNamedPaths", "freelyNamedAncestors", "isFreelyNamed", "parentPath", "parentKey", "grandparentKey", "parentStr", "absolutifyPointer", "_pointer$split", "_pointer$split2", "urlPart", "fragmentPart", "newRefUrlPart", "ACCEPT_HEADER_VALUE_FOR_DOCUMENTS", "ABSOLUTE_URL_REGEXP", "JSONRefError", "extra", "oriError", "originalError", "docCache", "specmapRefs", "skipResolutionTestFns", "specmap", "specmapInstance", "getInstance", "getContext", "promOrVal", "splitString", "refPath", "absoluteify", "wrapError", "parentPointer", "escapeJsonPointerToken", "fullyQualifiedPointer", "safeParentPointer", "rootDoc", "contextTree", "pointerIsAParent", "currPath", "useCircularStructures", "_absolutifiedRef", "jsonPointerToArray", "extractFromDoc", "__value", "absolutifiedRef", "ancestors", "pointToAncestor", "getDoc", "fetchJSON", "docPath", "Accept", "extract", "unescapeJsonPointerToken", "_doc", "lastParentChar", "alreadyAddError", "originalDefinitionObj", "allOf", "toMerge", "_err", "absoluteRefPatches", "_ref$getBaseUrlForNod", "getBaseUrlForNodePath", "_ref$targetKeys", "targetKeys", "nodePath", "absolutifiedRefValue", "en", "opPath", "tn", "nn", "ContextTree", "createNode", "getParent", "branch", "protoValue", "ensureExists", "SpecMap", "debugLevel", "plugins", "pluginHistory", "promisedPatches", "showDebug", "allPatches", "pluginProp", "libMethods", "_getContext", "hasRun", "_hasRun", "wrappedPlugins", "wrapPlugin", "updatePatches", "_console", "_console2", "pluginObj", "isSubPath", "pathDiscriminator", "ctx", "tested", "generator", "_marked", "refCache", "traverse", "parentIndex", "indexOfFirstProperties", "isRootProperties", "traversed", "_i", "updatedPath", "isObj", "objRef", "isWithinPathDiscriminator", "delegateYield", "pluginName", "_this2", "getMutationsForPlugin", "race", "getPluginName", "getPluginHistory", "mi", "getPluginHistoryTip", "mutationIndex", "_this3", "promisedPatchThen", "setContext", "updateMutations", "_this4", "promisedPatch", "removePromisedPatch", "getCurrentPlugin", "tip", "getPluginMutationIndex", "getMutations", "currentPlugin", "getPluginRunCount", "_this5", "nextPlugin", "nextPromise", "nextPromisedPatch", "pluginCount", "promises", "getCurrentMutations", "lastMutationIndex", "getLib", "updatePluginHistory", "executePlugin", "makeFetchJSON", "_obj$allowMetaPatches", "skipNormalization", "doResolve", "_spec", "plugs", "prot", "effectiveMediaType", "styledValue", "PARAMETER_HEADER_BLACKLIST", "Cookie", "attachContentTypeForEmptyPayload", "_ref5$securities", "_ref5$operation", "_securities$authorize", "securityDef", "securityObj", "in", "cookies", "encoded", "tokenValue", "tokenType", "token_type", "requestBodyDef", "requestBodyMediaTypes", "isExplicitContentTypeValid", "firstMediaType", "mediaTypes", "accept", "_ref$securities", "_ref$operation", "_securities$specSecur", "tokenName", "oauthToken", "authorization", "_operation$consumes", "_spec$consumes", "isBodyParamPresent", "isFormDataParamPresent", "_excluded", "arrayOrEmpty", "OperationNotFoundError", "userHttp", "signal", "parameterBuilders", "specIsOAS3", "operationRaw", "_operationRaw$operati", "_ref2$serverVariables", "selectedServerObj", "serverUrls", "srv", "_servers", "vari", "variables", "variableDefinition", "variableValue", "ourUrl", "parsedContextUrl", "computedScheme", "stripNonAlpha", "computedHost", "computedPath", "_ref3$contextUrl", "firstSchemeInSpec", "combinedParameters", "paramsMap", "dedupedParameters", "builder", "versionSpecificOptions", "cookieString", "cookieName", "cookieValue", "_x2", "_resolveSubtree", "returnEntireTree", "resolveOptions", "_normalizeSwagger", "httpFn", "preFetch", "postFetch", "Http", "freshConfigs", "getLocalConfig", "configsPlugin", "arraySome", "baseIteratee", "baseSome", "isIterateeCall", "guard", "_Reflect$get", "superPropBase", "baseSet", "reactIs", "REACT_STATICS", "childContextTypes", "contextTypes", "getDefaultProps", "getDerivedStateFromError", "getDerivedStateFromProps", "mixins", "propTypes", "KNOWN_STATICS", "caller", "arity", "MEMO_STATICS", "TYPE_STATICS", "getStatics", "isMemo", "ForwardRef", "Memo", "objectPrototype", "hoistNonReactStatics", "targetComponent", "sourceComponent", "blacklist", "inheritedComponent", "targetStatics", "sourceStatics", "high", "fault", "secondBest", "settings", "subset", "defaultPrefix", "relevance", "getLanguage", "syntax", "registerAlias", "registerAliases", "languageName", "Emitter", "addText", "addKeyword", "openNode", "closeNode", "addSublanguage", "rootNode", "classPrefix", "closeAllNodes", "finalize", "toHTML", "__emitter", "ignoreIllegals", "errorRaised", "DebounceInput", "arrayMethodHasSpeciesSupport", "IS_CONCAT_SPREADABLE", "MAX_SAFE_INTEGER", "MAXIMUM_ALLOWED_INDEX_EXCEEDED", "IS_CONCAT_SPREADABLE_SUPPORT", "SPECIES_SUPPORT", "isConcatSpreadable", "spreadable", "replacement", "feature", "detection", "normalize", "POLYFILL", "NATIVE", "nativeObjectCreate", "getOwnPropertyNamesExternal", "getOwnPropertySymbolsModule", "getOwnPropertyDescriptorModule", "arraySlice", "defineWellKnownSymbol", "$forEach", "HIDDEN", "SYMBOL", "TO_PRIMITIVE", "SymbolPrototype", "QObject", "$stringify", "nativeGetOwnPropertyDescriptor", "nativeDefineProperty", "nativeGetOwnPropertyNames", "nativePropertyIsEnumerable", "AllSymbols", "ObjectPrototypeSymbols", "StringToSymbolRegistry", "SymbolToStringRegistry", "USE_SETTER", "findChild", "setSymbolDescriptor", "ObjectPrototypeDescriptor", "$defineProperties", "$getOwnPropertySymbols", "$getOwnPropertyNames", "IS_OBJECT_PROTOTYPE", "keyFor", "useSetter", "useSimple", "space", "$replacer", "hint", "windowNames", "getDescriptor", "ENUMERABLE_NEXT", "PrototypeOfArrayIteratorPrototype", "arrayIterator", "CONVERT_TO_STRING", "codeAt", "argsLength", "partArgs", "$assign", "alphabet", "chr", "argumentsLength", "propIsEnumerable", "test1", "test2", "test3", "letter", "shouldUseNative", "funcToString", "getNative", "baseFor", "createBaseFor", "isDeep", "cloneArrayBuffer", "typedArray", "baseCreate", "funcProto", "objectCtorString", "baseTimes", "isIndex", "inherited", "isArr", "isArg", "isBuff", "isType", "skipIndexes", "nativeMax", "otherArgs", "baseSetToString", "setToString", "callWithSafeIterationClosing", "arrayLike", "IS_CONSTRUCTOR", "mapfn", "innerResult", "innerError", "ArrayPrototype", "SAFE_CLOSING", "iteratorWithReturn", "SKIP_CLOSING", "ITERATION_SUPPORT", "DOMTokenList", "NodeList", "own", "mergeSort", "comparefn", "middle", "insertionSort", "llength", "rlength", "lindex", "rindex", "MATCH", "regexp", "error1", "error2", "iteratee", "reHasUnicode", "accumulator", "initAccum", "baseIsEqualDeep", "baseIsEqual", "bitmask", "SetCache", "cacheHas", "equalFunc", "isPartial", "othLength", "arrStacked", "othStacked", "arrValue", "othValue", "compared", "othIndex", "baseGetAllKeys", "keysFunc", "symbolsFunc", "nativeKeys", "srcValue", "baseTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "isBinary", "baseForOwn", "baseEach", "ReadableState", "EElistenerCount", "debugUtil", "debuglog", "StringDecoder", "BufferList", "kProxyEvents", "readableObjectMode", "readableHwm", "readableHighWaterMark", "pipesCount", "flowing", "endEmitted", "reading", "needReadable", "emittedReadable", "readableListening", "resumeScheduled", "awaitDrain", "readingMore", "decoder", "_read", "readableAddChunk", "addToFront", "skipChunkCheck", "emitReadable", "addChunk", "maybeReadMore", "isPaused", "setEncoding", "MAX_HWM", "howMuchToRead", "emitReadable_", "maybeReadMore_", "nReadingNextTick", "resume_", "fromList", "hasStrings", "nb", "endReadable", "endReadableNT", "xs", "nOrig", "doRead", "pipeOpts", "endFn", "stdout", "stderr", "unpipe", "onunpipe", "unpipeInfo", "hasUnpiped", "onclose", "onfinish", "ondrain", "ondata", "cleanedUp", "increasedAwaitDrain", "pause", "event", "resume", "dests", "ev", "paused", "_fromList", "emitErrorNT", "readableDestroyed", "writableDestroyed", "nenc", "retried", "utf16Text", "utf16End", "fillLast", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "lastNeed", "lastTotal", "utf8CheckByte", "total", "afterTransform", "ts", "_transformState", "transforming", "writechunk", "rs", "needTransform", "writeencoding", "_transform", "flush", "_flush", "prefinish", "err2", "InternalMetadataModule", "internalStateGetterFor", "CONSTRUCTOR_NAME", "wrapper", "IS_WEAK", "ADDER", "NativePrototype", "exported", "IS_ADDER", "getConstructor", "setStrong", "ARRAY_BUFFER_NON_EXTENSIBLE", "$isExtensible", "FAILS_ON_PRIMITIVES", "updateFn", "insertFn", "Sha256", "_w", "maj", "sigma0", "sigma1", "gamma0", "_b", "_c", "_d", "_f", "_g", "_h", "T1", "T2", "Sha512", "Ch", "xl", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "_ah", "_bh", "_ch", "_dh", "_eh", "_fh", "_gh", "_hh", "_al", "_bl", "_cl", "_dl", "_el", "_fl", "_gl", "_hl", "ah", "bh", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "fl", "gl", "hl", "xh", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "writeInt64BE", "copyConstructorProperties", "clearErrorStack", "installErrorCause", "normalizeStringArgument", "ERROR_STACK_INSTALLABLE", "$AggregateError", "isInstance", "AggregateErrorPrototype", "errorsArray", "defer", "channel", "IS_IOS", "IS_NODE", "clearImmediate", "Dispatch", "MessageChannel", "counter", "ONREADYSTATECHANGE", "runner", "post", "postMessage", "now", "port2", "port1", "onmessage", "importScripts", "newPromiseCapability", "promiseCapability", "newPromiseCapabilityModule", "perform", "allSettled", "capability", "promiseResolve", "alreadyCalled", "PROMISE_ANY_ERROR", "any", "alreadyResolved", "alreadyRejected", "TO_ENTRIES", "getSymbolsIn", "keysIn", "support", "viewClasses", "isArrayBufferView", "normalizeName", "normalizeValue", "iteratorFor", "consumed", "bodyUsed", "fileReaderReady", "reader", "readBlobAsArrayBuffer", "FileReader", "readAsArrayBuffer", "bufferClone", "view", "Body", "_initBody", "_bodyInit", "_bodyText", "_bodyBlob", "_bodyFormData", "_bodyArrayBuffer", "rejected", "readAsText", "chars", "decode", "oldValue", "upcased", "referrer", "Response", "bodyInit", "redirectStatuses", "redirect", "DOMException", "aborted", "xhr", "XMLHttpRequest", "abortXhr", "abort", "rawHeaders", "getAllResponseHeaders", "responseURL", "responseText", "ontimeout", "onabort", "responseType", "setRequestHeader", "onreadystatechange", "readyState", "send", "polyfill", "hexTable", "arrayToObject", "plainObjects", "combine", "compacted", "charset", "strWithoutPlus", "defaultEncoder", "$0", "mapped", "allowPrototypes", "mergeTarget", "targetItem", "searchParams", "combineReducers", "_combineReducers2", "_combineReducers3", "baseMerge", "srcIndex", "invalidProtocolRegex", "ctrlCharactersRegex", "urlSchemeRegex", "relativeFirstCharacters", "sanitizedUrl", "urlSchemeParseResults", "capitalize", "word", "indent_count", "indent_spaces", "_elem", "icount", "indents", "interrupt", "isStringContent", "get_attributes", "escapeForXML", "_cdata", "elem", "proceed", "output", "interrupted", "instant", "delay", "standalone", "_Map", "isNativeFunction", "_wrapNativeSuper", "Class", "CSS", "codeUnit", "firstCodeUnit", "algorithm", "Algorithm", "sha", "sha1", "sha224", "sha256", "sha384", "sha512", "arrayReduce", "baseReduce", "toNumber", "nativeMin", "wait", "lastArgs", "lastThis", "maxWait", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "invokeFunc", "time", "leadingEdge", "timerExpired", "shouldInvoke", "timeSinceLastCall", "trailingEdge", "timeWaiting", "debounced", "isInvoking", "cancel", "arrayMap", "baseClone", "baseUnset", "copyObject", "customOmitClone", "flatRest", "getAllKeysIn", "CLONE_DEEP_FLAG", "LITERALS", "literal", "ALLOWED_COMMENTS", "C_LINE_COMMENT_MODE", "C_BLOCK_COMMENT_MODE", "TYPES", "QUOTE_STRING_MODE", "C_NUMBER_MODE", "VALUE_CONTAINER", "endsWithParent", "excludeEnd", "keywords", "OBJECT", "BACKSLASH_ESCAPE", "illegal", "inherit", "ARRAY", "IDENT_RE", "KEYWORDS", "BUILT_INS", "lookahead", "IDENT_RE$1", "FRAGMENT", "XML_TAG", "isTrulyOpeningTag", "afterMatchIndex", "ignoreMatch", "KEYWORDS$1", "$pattern", "keyword", "built_in", "frac", "decimalInteger", "NUMBER", "variants", "SUBST", "HTML_TEMPLATE", "starts", "returnEnd", "subLanguage", "CSS_TEMPLATE", "TEMPLATE_STRING", "COMMENT", "endsParent", "SUBST_INTERNALS", "APOS_STRING_MODE", "REGEXP_MODE", "SUBST_AND_COMMENTS", "PARAMS_CONTAINS", "PARAMS", "excludeBegin", "aliases", "SHEBANG", "RE_STARTERS_RE", "UNDERSCORE_IDENT_RE", "returnBegin", "beginKeywords", "TITLE_MODE", "UNDERSCORE_TITLE_MODE", "either", "TAG_NAME_RE", "XML_ENTITIES", "XML_META_KEYWORDS", "XML_META_PAR_KEYWORDS", "APOS_META_STRING_MODE", "QUOTE_META_STRING_MODE", "TAG_INTERNALS", "case_insensitive", "URI_CHARACTERS", "STRING", "CONTAINER_STRING", "TIMESTAMP", "MODES", "HASH_COMMENT_MODE", "C_NUMBER_RE", "VALUE_MODES", "VERSION", "HEADER", "HEADERS_AND_BODY", "VAR", "BRACED_VAR", "HERE_DOC", "END_SAME_AS_BEGIN", "QUOTE_STRING", "ARITHMETIC", "NUMBER_MODE", "KNOWN_SHEBANG", "FUNCTION", "BACKTICK_ESCAPE", "APOS_STRING", "PS_COMMENT", "CMDLETS", "PS_CLASS", "PS_FUNCTION", "PS_USING", "PS_ARGUMENTS", "PS_METHODS", "GENTLEMANS_SET", "PS_TYPE", "isMergeableObject", "stringValue", "$$typeof", "REACT_ELEMENT_TYPE", "for", "cloneUnlessOtherwiseSpecified", "deepmerge", "defaultArrayMerge", "getKeys", "propertyIsOnObject", "mergeObject", "customMerge", "arrayMerge", "sourceIsArray", "deepmerge_1", "Traverse", "walk", "immutable", "parents", "alive", "walker", "node_", "modifiers", "keepGoing", "isRoot", "circular", "stopHere", "pre", "updateState", "isLeaf", "notLeaf", "notRoot", "isLast", "toS", "ps", "dec", "tryDecode", "fieldContentRegExp", "maxAge", "expires", "toUTCString", "httpOnly", "secure", "sameSite", "isNativeSmoothScrollEnabledOn", "makeScroller", "defaultDuration", "edgeOffset", "scrollTimeoutId", "setScrollTimeoutId", "stopScroll", "getTopWithEdgeOffset", "getTopOf", "scrollToY", "targetY", "onDone", "toY", "startY", "getY", "distance", "loopScroll", "getHeight", "scrollHeight", "scrollToElem", "scrollIntoView", "elemHeight", "getBoundingClientRect", "elemBottom", "containerHeight", "containerBottom", "scrollToCenterOf", "setup", "newDefaultDuration", "newEdgeOffset", "intoView", "center", "moving", "docElem", "getDocY", "scrollY", "scrollTop", "scrollingElement", "innerHeight", "clientHeight", "top", "offsetTop", "scrollContainer", "noZensmooth", "isHistorySupported", "isScrollRestorationSupported", "scrollRestoration", "zenscrollY", "targetElem", "getElementById", "diff", "RE_noZensmooth", "which", "shiftKey", "metaKey", "ctrlKey", "altKey", "historyState", "replaceState", "preventDefault", "baseZipObject", "mime", "bom", "msSaveBlob", "blobURL", "createObjectURL", "webkitURL", "tempLink", "click", "revokeObjectURL", "isClosingTag", "isSelfClosingTag", "lexer", "xmlStr", "indentor", "textNodesOnSameLine", "indicesToRemove", "rawResult", "indentation", "oneBefore", "twoBefore", "ordinaryToPrimitive", "pref", "exoticToPrim", "CSSRuleList", "CSSStyleDeclaration", "CSSValueList", "ClientRectList", "DOMRectList", "DOMStringList", "DataTransferItemList", "FileList", "HTMLAllCollection", "HTMLCollection", "HTMLFormElement", "HTMLSelectElement", "MediaList", "MimeTypeArray", "PaintRequestList", "Plugin", "PluginArray", "SVGLengthList", "SVGNumberList", "SVGPathSegList", "SVGPointList", "SVGStringList", "SVGTransformList", "SourceBufferList", "StyleSheetList", "TextTrackCueList", "TextTrackList", "TouchList", "WrappedWellKnownSymbolModule", "entryVirtual", "arrayMethodIsStrict", "$lastIndexOf", "NEGATIVE_ZERO", "STRICT_METHOD", "searchElement", "$filter", "tester", "low", "fix", "b64", "lens", "getLens", "validLen", "placeHoldersLen", "Arr", "curByte", "revLookup", "uint8", "extraBytes", "maxChunkLength", "len2", "encodeChunk", "lookup", "isLE", "mLen", "nBytes", "eLen", "eMax", "eBias", "nBits", "rt", "LN2", "un$Slice", "HAS_SPECIES_SUPPORT", "$reduce", "CHROME_VERSION", "IS_RIGHT", "$map", "Fragment", "StrictMode", "Profiler", "Suspense", "isMounted", "enqueueForceUpdate", "enqueueReplaceState", "enqueueSetState", "isPureReactComponent", "__self", "__source", "_owner", "_status", "ReactCurrentDispatcher", "ReactCurrentBatchConfig", "transition", "ReactCurrentOwner", "IsSomeRendererActing", "Children", "only", "__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED", "cloneElement", "_calculateChangedBits", "_currentValue2", "_threadCount", "createFactory", "createRef", "isValidElement", "lazy", "_payload", "_init", "useCallback", "useContext", "useDebugValue", "useEffect", "useImperativeHandle", "useLayoutEffect", "useMemo", "useReducer", "useRef", "useState", "_immutable", "_immutable2", "_utilities", "getDefaultState", "reducerKeys", "inputState", "temporaryState", "reducerName", "nextDomainState", "validateNextState", "getUnexpectedInvocationParameterMessage", "getStateName", "_getStateName3", "_interopRequireDefault", "_getUnexpectedInvocationParameterMessage3", "_validateNextState3", "_getStateName2", "reducerNames", "stateName", "unexpectedStatePropertyNames", "assignMergeValue", "baseMergeDeep", "safeGet", "assocIndexOf", "LARGE_ARRAY_SIZE", "isMasked", "reIsHostCtor", "reIsNative", "nativeObjectToString", "unmasked", "coreJsData", "maskSrcKey", "hashClear", "hashDelete", "hashGet", "hashHas", "hashSet", "getMapData", "fromRight", "cloneBuffer", "cloneTypedArray", "copyArray", "initCloneObject", "isArrayLikeObject", "toPlainObject", "mergeFunc", "stacked", "isCommon", "isTyped", "objectCreate", "typedArrayTags", "nativeKeysIn", "isProto", "baseRest", "assigner", "overRest", "nativeNow", "lastCalled", "stamp", "_s", "_n", "internalSort", "FF", "IE_OR_EDGE", "V8", "WEBKIT", "un$Sort", "FAILS_ON_UNDEFINED", "FAILS_ON_NULL", "STABLE_SORT", "itemsLength", "arrayLength", "firefox", "UA", "webkit", "$some", "arrayMethod", "stringMethod", "StringPrototype", "$includes", "notARegExp", "correctIsRegExpLogic", "searchString", "$IndexOf", "un$IndexOf", "$find", "FIND", "SKIPS_HOLES", "startsWith", "un$StartsWith", "CORRECT_IS_REGEXP_LOGIC", "$trim", "whitespaces", "whitespace", "ltrim", "rtrim", "symbolProto", "symbolToString", "castSlice", "hasUnicode", "stringToArray", "strSymbols", "baseSlice", "asciiToArray", "unicodeToArray", "rsAstral", "rsCombo", "rsFitz", "rsNonAstral", "rsRegional", "rsSurrPair", "reOptMod", "rsOptVar", "rsSeq", "rsSymbol", "reUnicode", "deburr", "words", "reApos", "deburrLetter", "reLatin", "reComboMark", "asciiWords", "hasUnicodeWord", "unicodeWords", "reAsciiWord", "reHasUnicodeWord", "rsDingbatRange", "rsLowerRange", "rsUpperRange", "rsBreakRange", "rsMathOpRange", "rsBreak", "rsDigits", "rsDingbat", "rsLower", "rsMisc", "rsUpper", "rsMiscLower", "rsMiscUpper", "rsOptContrLower", "rsOptContrUpper", "rsModifier", "rsEmoji", "reUnicodeWord", "findIndexFunc", "baseIsMatch", "getMatchData", "matchesStrictComparable", "matchData", "noCustomizer", "COMPARE_PARTIAL_FLAG", "equalArrays", "equalByTag", "equalObjects", "argsTag", "arrayTag", "objectTag", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "setCacheAdd", "setCacheHas", "mapToArray", "setToArray", "symbolValueOf", "convert", "getAllKeys", "objProps", "objLength", "objStacked", "skipCtor", "objCtor", "othCtor", "resIndex", "isStrictComparable", "memoizeCapped", "baseHasIn", "hasPath", "hasFunc", "baseProperty", "basePropertyDeep", "baseFindIndex", "toInteger", "toFinite", "INFINITY", "trimmedEndIndex", "reTrimStart", "reWhitespace", "eachFunc", "XML_CHARACTER_MAP", "EE", "_isStdio", "didOnEnd", "cleanup", "custom", "Timeout", "clearFn", "_id", "_clearFn", "setInterval", "clearInterval", "unref", "enroll", "msecs", "_idleTimeoutId", "_idleTimeout", "unenroll", "_unrefActive", "active", "_onTimeout", "registerImmediate", "messagePrefix", "onGlobalMessage", "nextHandle", "tasksByHandle", "currentlyRunningATask", "attachTo", "runIfPresent", "postMessageIsAsynchronous", "oldOnMessage", "canUsePostMessage", "script", "attachEvent", "task", "msg", "trace", "isDataDescriptor", "nativeGetPrototypeOf", "nativeConstruct", "NEW_TARGET_BUG", "ARGS_BUG", "Target", "newTarget", "$args", "assertThisInitialized", "preventExtensions", "setSpecies", "define", "previous", "getEntry", "ITERATOR_NAME", "getInternalCollectionState", "mapFn", "nextItem", "deleteAll", "wasDeleted", "remover", "allDeleted", "emplace", "getMapIterator", "speciesConstructor", "keyDerivative", "derivedKey", "sameValueZero", "keyBy", "mapValues", "noInitial", "isPresentInMap", "upsert", "updateOrInsert", "_bindInstanceProperty", "_construct", "Parent", "$every", "$findIndex", "FIND_INDEX", "Sha", "rotl30", "ft", "Sha1", "rotl5", "Sha224", "SHA512", "Sha384", "exceptions", "TEST", "V8_OR_CHAKRA_STACK_ENTRY", "IS_V8_OR_CHAKRA_STACK", "dropEntries", "cause", "$default", "Internal", "OwnPromiseCapability", "PromiseWrapper", "nativeThen", "NativePromise", "checkCorrectnessOfIteration", "microtask", "hostReportErrors", "Queue", "IS_BROWSER", "PROMISE", "getInternalPromiseState", "NativePromisePrototype", "PromiseConstructor", "PromisePrototype", "newGenericPromiseCapability", "DISPATCH_EVENT", "createEvent", "dispatchEvent", "NATIVE_REJECTION_EVENT", "PromiseRejectionEvent", "UNHANDLED_REJECTION", "SUBCLASSING", "PROMISE_CONSTRUCTOR_SOURCE", "GLOBAL_CORE_JS_PROMISE", "FakePromise", "INCORRECT_ITERATION", "isThenable", "callReaction", "reaction", "exited", "fail", "rejection", "onHandleUnhandled", "enter", "exit", "isReject", "notified", "reactions", "onUnhandled", "initEvent", "isUnhandled", "internalReject", "internalResolve", "executor", "onFulfilled", "onRejected", "$promiseResolve", "macrotask", "IS_IOS_PEBBLE", "IS_WEBOS_WEBKIT", "MutationObserver", "WebKitMutationObserver", "queueMicrotaskDescriptor", "queueMicrotask", "characterData", "Pebble", "onFinally", "runtime", "Op", "iteratorSymbol", "asyncIteratorSymbol", "asyncIterator", "toStringTagSymbol", "innerFn", "outerFn", "tryLocsList", "protoGenerator", "Generator", "_invoke", "GenStateSuspendedStart", "GenStateExecuting", "GenStateCompleted", "doneResult", "delegate", "delegateResult", "maybeInvokeDelegate", "ContinueSentinel", "_sent", "dispatchException", "tryCatch", "GenStateSuspendedYield", "GeneratorFunction", "GeneratorFunctionPrototype", "NativeIteratorPrototype", "Gp", "defineIteratorMethods", "AsyncIterator", "PromiseImpl", "invoke", "__await", "unwrapped", "previousPromise", "callInvokeWithMethodAndArg", "resultName", "nextLoc", "pushTryEntry", "locs", "tryLoc", "catchLoc", "finallyLoc", "afterLoc", "tryEntries", "resetTryEntry", "completion", "reset", "isGeneratorFunction", "genFun", "awrap", "async", "skipTempReset", "rootRecord", "rval", "caught", "hasCatch", "hasFinally", "finallyEntry", "complete", "thrown", "regeneratorRuntime", "accidentalStrictMode", "$values", "aa", "ba", "ca", "da", "ea", "fa", "ha", "ia", "ja", "ka", "acceptsBooleans", "attributeName", "attributeNamespace", "mustUseProperty", "propertyName", "sanitizeURL", "removeEmptyString", "oa", "pa", "qa", "ra", "sa", "ta", "ua", "wa", "xa", "ya", "za", "Aa", "Ba", "Ca", "Da", "Ea", "Fa", "Ga", "Ha", "Ia", "Ja", "Ma", "Ka", "La", "Na", "Oa", "Pa", "prepareStackTrace", "Qa", "_render", "Ra", "Sa", "Ta", "Va", "_valueTracker", "setValue", "stopTracking", "Wa", "Xa", "activeElement", "Ya", "defaultChecked", "_wrapperState", "initialChecked", "Za", "controlled", "$a", "ab", "bb", "eb", "fb", "defaultSelected", "gb", "hb", "ib", "jb", "kb", "lb", "mb", "ob", "MSApp", "execUnsafeLocalFunction", "pb", "lastChild", "nodeValue", "qb", "animationIterationCount", "borderImageOutset", "borderImageSlice", "borderImageWidth", "boxFlex", "boxFlexGroup", "boxOrdinalGroup", "columnCount", "columns", "flex", "flexGrow", "flexPositive", "flexShrink", "flexNegative", "flexOrder", "gridArea", "gridRow", "gridRowEnd", "gridRowSpan", "gridRowStart", "gridColumn", "gridColumnEnd", "gridColumnSpan", "gridColumnStart", "fontWeight", "lineClamp", "opacity", "orphans", "tabSize", "widows", "zoom", "fillOpacity", "floodOpacity", "stopOpacity", "strokeDasharray", "strokeDashoffset", "strokeMiterlimit", "strokeOpacity", "strokeWidth", "rb", "sb", "tb", "setProperty", "ub", "menuitem", "area", "br", "col", "embed", "keygen", "track", "wbr", "vb", "wb", "xb", "srcElement", "correspondingUseElement", "yb", "zb", "Ab", "Bb", "Cb", "stateNode", "Db", "Eb", "Fb", "Gb", "Hb", "Ib", "Jb", "Kb", "Lb", "Mb", "Ob", "Pb", "Qb", "Rb", "onError", "Sb", "Tb", "Ub", "Vb", "Wb", "Xb", "Zb", "alternate", "return", "$b", "memoizedState", "dehydrated", "ac", "cc", "sibling", "dc", "ec", "fc", "gc", "hc", "ic", "jc", "kc", "mc", "nc", "oc", "pc", "qc", "rc", "blockedOn", "domEventName", "eventSystemFlags", "nativeEvent", "targetContainers", "sc", "pointerId", "tc", "vc", "wc", "lanePriority", "unstable_runWithPriority", "priority", "hydrate", "containerInfo", "xc", "yc", "zc", "Ac", "Bc", "unstable_scheduleCallback", "unstable_NormalPriority", "Cc", "Dc", "Ec", "animationend", "animationiteration", "animationstart", "transitionend", "Fc", "Gc", "Hc", "animation", "Ic", "Jc", "Kc", "Lc", "Mc", "Nc", "Oc", "Pc", "Qc", "unstable_now", "Rc", "Uc", "pendingLanes", "expiredLanes", "suspendedLanes", "pingedLanes", "Vc", "entangledLanes", "entanglements", "Wc", "Xc", "Yc", "Zc", "$c", "eventTimes", "clz32", "bd", "cd", "dd", "unstable_UserBlockingPriority", "ed", "fd", "gd", "hd", "jd", "kd", "ld", "nd", "od", "keyCode", "pd", "qd", "rd", "_reactName", "_targetInst", "currentTarget", "isDefaultPrevented", "defaultPrevented", "isPropagationStopped", "stopPropagation", "cancelBubble", "persist", "isPersistent", "wd", "xd", "yd", "sd", "eventPhase", "bubbles", "cancelable", "timeStamp", "isTrusted", "td", "ud", "detail", "vd", "Ad", "screenX", "screenY", "clientX", "clientY", "pageX", "pageY", "getModifierState", "zd", "button", "buttons", "relatedTarget", "fromElement", "toElement", "movementX", "movementY", "Bd", "Dd", "dataTransfer", "Fd", "Hd", "animationName", "elapsedTime", "pseudoElement", "Jd", "clipboardData", "Ld", "Md", "Esc", "Spacebar", "Left", "Up", "Right", "Down", "Del", "Win", "Menu", "Apps", "Scroll", "MozPrintableKey", "Nd", "Od", "Alt", "Control", "Meta", "Shift", "Pd", "Rd", "locale", "Td", "pressure", "tangentialPressure", "tiltX", "tiltY", "twist", "pointerType", "isPrimary", "Vd", "touches", "targetTouches", "changedTouches", "Xd", "Zd", "deltaX", "wheelDeltaX", "deltaY", "wheelDeltaY", "wheelDelta", "deltaZ", "deltaMode", "$d", "be", "ce", "de", "ee", "fe", "ge", "he", "ie", "le", "datetime", "range", "tel", "week", "me", "ne", "oe", "pe", "qe", "se", "te", "ue", "ve", "we", "xe", "ye", "ze", "oninput", "Ae", "detachEvent", "Be", "Ce", "De", "Ee", "Fe", "He", "Ie", "Je", "Ke", "Le", "nextSibling", "Me", "compareDocumentPosition", "Ne", "HTMLIFrameElement", "Oe", "contentEditable", "Pe", "Qe", "Re", "Se", "Te", "Ue", "selectionStart", "selectionEnd", "anchorNode", "defaultView", "getSelection", "anchorOffset", "focusNode", "focusOffset", "Ve", "We", "Xe", "Ye", "Ze", "$e", "af", "bf", "cf", "df", "capture", "passive", "ef", "ff", "gf", "hf", "jf", "kf", "lf", "mf", "nf", "pf", "qf", "rf", "sf", "previousSibling", "tf", "vf", "wf", "xf", "yf", "zf", "Af", "Bf", "Cf", "Df", "Ef", "__reactInternalMemoizedUnmaskedChildContext", "__reactInternalMemoizedMaskedChildContext", "Ff", "Gf", "Hf", "If", "getChildContext", "Jf", "__reactInternalMemoizedMergedChildContext", "Kf", "Lf", "Mf", "Nf", "Of", "Pf", "unstable_cancelCallback", "Qf", "unstable_shouldYield", "Rf", "unstable_requestPaint", "Sf", "Tf", "unstable_getCurrentPriorityLevel", "Uf", "unstable_ImmediatePriority", "Vf", "Wf", "Xf", "unstable_LowPriority", "Yf", "unstable_IdlePriority", "Zf", "$f", "ag", "bg", "cg", "dg", "eg", "fg", "gg", "hg", "ig", "jg", "kg", "lg", "mg", "ng", "og", "pg", "qg", "rg", "sg", "childLanes", "tg", "firstContext", "lanes", "ug", "vg", "observedBits", "responders", "wg", "xg", "updateQueue", "baseState", "firstBaseUpdate", "lastBaseUpdate", "effects", "yg", "zg", "eventTime", "lane", "Ag", "Bg", "Cg", "Dg", "Eg", "Fg", "Gg", "Kg", "_reactInternals", "Hg", "Ig", "Jg", "Lg", "shouldComponentUpdate", "Mg", "Ng", "componentWillReceiveProps", "UNSAFE_componentWillReceiveProps", "Og", "getSnapshotBeforeUpdate", "UNSAFE_componentWillMount", "componentWillMount", "componentDidMount", "Pg", "Qg", "_stringRef", "Rg", "Sg", "lastEffect", "nextEffect", "firstEffect", "Tg", "Ug", "elementType", "Vg", "Wg", "Xg", "Yg", "Zg", "$g", "ih", "memoizedProps", "revealOrder", "jh", "kh", "lh", "mh", "nh", "oh", "pendingProps", "ph", "qh", "rh", "sh", "th", "uh", "_workInProgressVersionPrimary", "vh", "wh", "yh", "zh", "Ah", "Bh", "Dh", "Eh", "Fh", "Gh", "Hh", "baseQueue", "Ih", "Jh", "Kh", "lastRenderedReducer", "eagerReducer", "eagerState", "lastRenderedState", "Lh", "Mh", "_getVersion", "_source", "mutableReadLanes", "Nh", "getSnapshot", "setSnapshot", "Oh", "Ph", "Qh", "Rh", "deps", "Sh", "Th", "Uh", "Vh", "Wh", "Xh", "Yh", "Zh", "$h", "ai", "bi", "ci", "di", "readContext", "useDeferredValue", "useTransition", "useMutableSource", "useOpaqueIdentifier", "unstable_isNewReconciler", "ei", "fi", "gi", "ji", "ki", "li", "baseLanes", "ni", "oi", "pi", "UNSAFE_componentWillUpdate", "componentWillUpdate", "componentDidUpdate", "qi", "ri", "pendingContext", "Bi", "Di", "Ei", "si", "retryLane", "ti", "unstable_avoidThisFallback", "ui", "unstable_expectedLoadTime", "vi", "wi", "xi", "yi", "zi", "isBackwards", "rendering", "renderingStartTime", "tailMode", "Ai", "Fi", "Gi", "wasMultiple", "multiple", "onclick", "createElementNS", "Hi", "Ii", "Ji", "Ki", "Li", "Mi", "Ni", "Oi", "Pi", "Qi", "Ri", "Si", "Ti", "componentStack", "Ui", "Vi", "Wi", "Xi", "__reactInternalSnapshotBeforeUpdate", "Yi", "Zi", "$i", "focus", "aj", "bj", "onCommitFiberUnmount", "componentWillUnmount", "cj", "dj", "ej", "fj", "gj", "hj", "_reactRootContainer", "ij", "jj", "kj", "lj", "mj", "nj", "oj", "pj", "Y", "qj", "rj", "sj", "tj", "uj", "vj", "wj", "ck", "xj", "yj", "zj", "Aj", "Bj", "Cj", "Dj", "Ej", "Fj", "Gj", "Hj", "Ij", "Jj", "Kj", "Lj", "Mj", "callbackNode", "expirationTimes", "callbackPriority", "Nj", "Oj", "Pj", "Qj", "Rj", "Sj", "Tj", "finishedWork", "finishedLanes", "Uj", "timeoutHandle", "Wj", "Xj", "pingCache", "Yj", "Zj", "va", "ak", "bk", "dk", "rangeCount", "focusedElem", "selectionRange", "ek", "createRange", "setStart", "removeAllRanges", "addRange", "setEnd", "scrollLeft", "onCommitFiberRoot", "fk", "gk", "ik", "pendingChildren", "jk", "mutableSourceEagerHydrationData", "kk", "lk", "mk", "nk", "qk", "hydrationOptions", "mutableSources", "_internalRoot", "uk", "unstable_observedBits", "unmount", "querySelectorAll", "Vj", "vk", "Events", "wk", "findFiberByHostInstance", "bundleType", "rendererPackageName", "xk", "rendererConfig", "overrideHookState", "overrideHookStateDeletePath", "overrideHookStateRenamePath", "overrideProps", "overridePropsDeletePath", "overridePropsRenamePath", "setSuspenseHandler", "scheduleUpdate", "currentDispatcherRef", "findHostInstanceByFiber", "findHostInstancesForRefresh", "scheduleRefresh", "scheduleRoot", "setRefreshHandler", "getCurrentFiber", "yk", "supportsFiber", "inject", "createPortal", "findDOMNode", "flushSync", "unmountComponentAtNode", "unstable_batchedUpdates", "unstable_createPortal", "unstable_renderSubtreeIntoContainer", "performance", "unstable_forceFrameRate", "cancelAnimationFrame", "requestAnimationFrame", "sortIndex", "expirationTime", "priorityLevel", "unstable_Profiling", "unstable_continueExecution", "unstable_getFirstCallbackNode", "unstable_next", "unstable_pauseExecution", "unstable_wrapCallback", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "resetWarningCache", "shim", "secret", "getShim", "ReactPropTypes", "arrayOf", "objectOf", "oneOfType", "exact", "checkPropTypes", "AsyncMode", "ConcurrentMode", "ContextConsumer", "ContextProvider", "Lazy", "Portal", "isAsyncMode", "isConcurrentMode", "isContextConsumer", "isContextProvider", "isElement", "isForwardRef", "isFragment", "isLazy", "isPortal", "isProfiler", "isStrictMode", "isSuspense", "isValidElementType", "typeOf", "arrayEach", "baseAssign", "baseAssignIn", "copySymbols", "copySymbolsIn", "initCloneArray", "initCloneByTag", "funcTag", "cloneableTags", "isFlat", "isFull", "subValue", "cloneDataView", "cloneRegExp", "cloneSymbol", "dataView", "reFlags", "baseIsMap", "nodeIsMap", "baseIsSet", "nodeIsSet", "baseFlatten", "isFlattenable", "isStrict", "spreadableSymbol", "_react", "_copyToClipboard", "_objectWithoutProperties", "_assertThisInitialized", "_React$PureComponent", "_getPrototypeOf2", "_this$props", "onCopy", "_this$props2", "deselectCurrent", "clipboardToIE11Formatting", "reselectPrevious", "selection", "success", "webkitUserSelect", "MozUserSelect", "msUserSelect", "clearData", "setData", "selectNodeContents", "execCommand", "copyKey", "prompt", "removeRange", "ranges", "getRangeAt", "blur", "deepFreeze", "deepFreezeEs6", "isMatchIgnored", "escapeHTML", "original", "emitsWrappingTags", "HTMLRenderer", "parseTree", "sublanguage", "span", "TokenTree", "_walk", "_collapse", "TokenTreeEmitter", "BACKREF_RE", "NUMBER_RE", "BINARY_NUMBER_RE", "PHRASAL_WORDS_MODE", "modeOptions", "BINARY_NUMBER_MODE", "CSS_NUMBER_MODE", "METHOD_GUARD", "MATCH_NOTHING_RE", "beginShebang", "resp", "_beginMatch", "skipIfhasPrecedingDot", "__beforeBegin", "compileIllegal", "_parent", "compileMatch", "compileRelevance", "COMMON_KEYWORDS", "compileKeywords", "rawKeywords", "caseInsensitive", "compiledKeywords", "keywordList", "scoreForKeyword", "providedScore", "compileLanguage", "langRe", "MultiRegex", "matchIndexes", "regexes", "matchAt", "addRule", "compile", "terminators", "matcherRe", "regexps", "numCaptures", "ResumableMultiRegex", "multiRegexes", "regexIndex", "getMatcher", "resumingScanAtSamePosition", "considerAll", "m2", "compilerExtensions", "classNameAliases", "compileMode", "cmode", "isCompiled", "keywordPattern", "lexemes", "keywordPatternRe", "beginRe", "endSameAsBegin", "endRe", "terminatorEnd", "illegalRe", "cachedVariants", "variant", "dependencyOnParent", "mm", "term", "BuildVuePlugin", "detectedLanguage", "unknownLanguage", "computed", "highlighted", "autoDetect", "autodetect", "class", "domProps", "VuePlugin", "install", "Vue", "mergeHTMLPlugin", "originalStream", "nodeStream", "resultNode", "processed", "nodeStack", "selectStream", "attributeString", "_nodeStream", "seenDeprecations", "escape$1", "inherit$1", "NO_MATCH", "languages", "SAFE_MODE", "fixMarkupRe", "LANGUAGE_NOT_FOUND", "PLAINTEXT_LANGUAGE", "disableAutodetect", "noHighlightRe", "languageDetectRe", "tabReplace", "useBR", "shouldNotHighlight", "codeOrlanguageName", "optionsOrCode", "continuation", "fire", "_highlight", "codeToHighlight", "keywordData", "matchText", "processBuffer", "modeBuffer", "continuations", "processSubLanguage", "keywordRelevance", "processKeywords", "startNewMode", "endOfMode", "matchPlusRemainder", "matched", "lexeme", "doIgnore", "resumeScanAtSamePosition", "doBeginMatch", "newMode", "beforeCallbacks", "doEndMatch", "endMode", "lastMatch", "processLexeme", "textBeforeMatch", "badRule", "processContinuations", "processedCount", "illegalBy", "sofar", "languageSubset", "plaintext", "autoDetection", "sorted", "supersetOf", "best", "second_best", "brPlugin", "TAB_REPLACE_RE", "tabReplacePlugin", "highlightElement", "currentLang", "resultLang", "classList", "relavance", "initHighlighting", "wantsHighlight", "highlightAll", "aliasList", "lang", "fixMarkup", "highlightBlock", "userOptions", "initHighlightingOnLoad", "languageDefinition", "error$1", "rawDefinition", "unregisterLanguage", "requireLanguage", "addPlugin", "vuePlugin", "debugMode", "safeMode", "versionString", "formatter", "EConstructor", "FormattedError", "reference", "fmt", "precision", "argIndex", "escaped", "leadingZero", "nextArg", "slurpNumber", "digits", "toFixed", "vsprintf", "printf", "$entries", "getSideChannel", "utils", "arrayPrefixGenerators", "brackets", "comma", "pushToArray", "valueOrArray", "toISO", "defaultFormat", "defaults", "addQueryPrefix", "allowDots", "charsetSentinel", "delimiter", "encodeValuesOnly", "serializeDate", "skipNulls", "strictNullHandling", "sentinel", "generateArrayPrefix", "sideChannel", "tmpSc", "findFlag", "keyValue", "valuesArray", "valuesJoined", "keyPrefix", "valueSideChannel", "arrayFormat", "GetIntrinsic", "callBound", "$WeakMap", "$Map", "$weakMapGet", "$weakMapSet", "$weakMapHas", "$mapGet", "$mapSet", "$mapHas", "listGetNode", "$wm", "$m", "$o", "assert", "origSymbol", "hasSymbolSham", "symObj", "syms", "ERROR_MESSAGE", "toStr", "funcType", "bound", "binder", "boundLength", "boundArgs", "Empty", "callBind", "$indexOf", "$apply", "$call", "$reflectApply", "$max", "originalFunction", "applyBind", "hasMap", "mapSizeDescriptor", "mapSize", "mapForEach", "hasSet", "setSizeDescriptor", "setForEach", "weakMapHas", "weakSetHas", "weakRefDeref", "deref", "booleanValueOf", "bigIntValueOf", "gOPS", "symToString", "hasShammedSymbols", "isEnumerable", "gPO", "inspectCustom", "inspectSymbol", "wrapQuotes", "quoteChar", "quoteStyle", "inspect_", "maxStringLength", "customInspect", "inspectString", "baseIndent", "noIndent", "newOpts", "arrObjKeys", "symString", "markBoxed", "HTMLElement", "indentedJoin", "mapParts", "collectionOf", "setParts", "weakCollectionOf", "ys", "protoTag", "stringTag", "trailer", "lowbyte", "lineJoiner", "symMap", "allowSparse", "arrayLimit", "ignoreQueryPrefix", "interpretNumericEntities", "parameterLimit", "parseArrays", "numberStr", "parseArrayValue", "parseKeys", "givenKey", "valuesParsed", "leaf", "cleanRoot", "tempObj", "cleanStr", "skipIndex", "bracketEqualsPos", "encodedVal", "MAXIMUM_ALLOWED_LENGTH_EXCEEDED", "deleteCount", "insertCount", "actualDeleteCount", "actualStart", "InternalWeakMap", "collectionWeak", "enforceInternalState", "IS_IE11", "WeakMapPrototype", "nativeDelete", "nativeHas", "nativeGet", "nativeSet", "frozen", "ArrayIterationModule", "uncaughtFrozenStore", "UncaughtFrozenStore", "findUncaughtFrozen", "passed", "maxInt", "regexPunycode", "regexNonASCII", "regexSeparators", "stringFromCharCode", "mapDomain", "ucs2decode", "ucs2encode", "digitToBasic", "digit", "flag", "adapt", "numPoints", "firstTime", "baseMinusTMin", "basic", "oldi", "baseMinusT", "inputLength", "bias", "handledCPCount", "basicLength", "handledCPCountPlusOne", "qMinusT", "sep", "maxKeys", "kstr", "vstr", "stringifyPrimitive", "ks", "EOF", "arrayFrom", "URLSearchParamsModule", "getInternalURLState", "getInternalSearchParamsState", "NativeURL", "INVALID_SCHEME", "INVALID_HOST", "INVALID_PORT", "ALPHA", "ALPHANUMERIC", "DIGIT", "HEX_START", "OCT", "DEC", "HEX", "FORBIDDEN_HOST_CODE_POINT", "FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT", "LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE", "TAB_AND_NEW_LINE", "serializeHost", "compress", "ignore0", "ipv6", "currStart", "currLength", "C0ControlPercentEncodeSet", "fragmentPercentEncodeSet", "pathPercentEncodeSet", "userinfoPercentEncodeSet", "percentEncode", "specialSchemes", "ftp", "file", "https", "ws", "wss", "isWindowsDriveLetter", "startsWithWindowsDriveLetter", "third", "isSingleDot", "SCHEME_START", "SCHEME", "NO_SCHEME", "SPECIAL_RELATIVE_OR_AUTHORITY", "PATH_OR_AUTHORITY", "RELATIVE", "RELATIVE_SLASH", "SPECIAL_AUTHORITY_SLASHES", "SPECIAL_AUTHORITY_IGNORE_SLASHES", "AUTHORITY", "HOST", "HOSTNAME", "PORT", "FILE", "FILE_SLASH", "FILE_HOST", "PATH_START", "PATH", "CANNOT_BE_A_BASE_URL_PATH", "QUERY", "URLState", "isBase", "failure", "urlString", "stateOverride", "bufferCodePoints", "seenAt", "seenBracket", "seenPasswordToken", "cannotBeABaseURL", "includesCredentials", "encodedCodePoints", "shortenPath", "numbersSeen", "ipv4Piece", "swaps", "pieceIndex", "partsLength", "numbers", "radix", "ipv4", "cannotHaveUsernamePasswordPort", "pathSize", "setHref", "getOrigin", "URLConstructor", "getProtocol", "setProtocol", "getUsername", "setUsername", "getPassword", "setPassword", "getHost", "setHost", "getHostname", "setHostname", "getPort", "setPort", "getPathname", "setPathname", "getSearch", "setSearch", "getSearchParams", "getHash", "URLPrototype", "accessorDescriptor", "nativeCreateObjectURL", "nativeRevokeObjectURL", "OVERFLOW_ERROR", "labels", "MSIE", "scheduler", "endPos", "assignFunc", "valsLength", "_lodash", "_objectSpread", "_createSuper", "_isNativeReflectConstruct", "forceNotify", "onKeyDown", "onBlur", "debounceTimeout", "doNotify", "debouncedChangeFunc", "isDebouncing", "_debounceTimeout2", "createNotifier", "prevProps", "oldTimeout", "stateValue", "maybeOnKeyDown", "maybeOnBlur", "forceNotifyByEnter", "forceNotifyOnBlur", "inputRef", "maybeRef", "reTrim", "webpackContext", "webpackContextResolve", "idFn", "Store", "pluginsOptions", "boundSystem", "_getSystem", "configureStore", "buildSystem", "register", "rebuild", "pluginSystem", "combinePlugins", "systemExtend", "needAnotherRebuild", "callAfterLoad", "buildReducer", "getRootInjects", "getWrappedAndBoundActions", "getWrappedAndBoundSelectors", "getStateThunks", "getFn", "rebuildReducer", "_getConfigs", "reducerSystem", "states", "reducerObj", "redFn", "wrapWithTryCatch", "upName", "actionHolders", "actionName", "actionGroups", "getBoundActions", "actionGroupName", "wrappers", "newAction", "selectorGroups", "getBoundSelectors", "selectorGroupName", "selectorName", "wrappedSelector", "getSelectors", "getNestedState", "getActions", "creator", "pluginOptions", "pluginLoadType", "hasLoaded", "calledSomething", "wrapperFn", "namespaceObj", "logErrors", "rootReducer", "initialState", "middlwares", "composeEnhancers", "__REDUX_DEVTOOLS_EXTENSION_COMPOSE__", "resolvedSubtree", "getResolvedSubtree", "tryItOutEnabled", "executeInProgress", "docExpansion", "displayOperationId", "displayRequestDuration", "supportedSubmitMethods", "isDeepLinkingEnabled", "jumpToKey", "unresolvedOp", "Operation", "operationProps", "summary", "originalOperationId", "toggleShown", "onTryoutClick", "onCancelClick", "onExecute", "layoutName", "Layout", "getLayout", "AuthorizationPopup", "Auths", "AuthorizeBtn", "showPopup", "AuthorizeBtnContainer", "authorizableDefinitions", "AuthorizeOperationBtn", "auths", "Oauth2", "Button", "authorizedAuth", "nonOauthDefinitions", "oauthDefinitions", "onSubmit", "submitAuth", "logoutClick", "authEl", "ApiKeyAuth", "BasicAuth", "showValue", "ExamplesSelect", "isSyntheticChange", "selectedOptions", "_onSelect", "currentExampleKey", "currentExamplePerProps", "firstExamplesKey", "firstExample", "firstExampleKey", "isValueModified", "isModifiedValueAvailable", "showLabels", "_onDomSelect", "exampleName", "stringifyUnlessList", "currentNamespace", "_setStateForNamespace", "newStateForNamespace", "_getCurrentExampleValue", "exampleKey", "_getValueForExample", "_getStateForCurrentNamespace", "lastUserEditedValue", "valueFromExample", "_setStateForCurrentNamespace", "isModifiedValueSelected", "lastDownstreamValue", "valueFromCurrentExample", "examplesMatchingNewValue", "_onExamplesSelect", "authConfigs", "oauth2RedirectUrl", "scopesArray", "scopeSeparator", "realm", "usePkceWithAuthorizationCodeGrant", "codeChallenge", "useBasicAuthenticationWithAccessCodeGrant", "errCb", "dataset", "newScopes", "appName", "InitializedInput", "oidcUrl", "AUTH_FLOW_IMPLICIT", "AUTH_FLOW_PASSWORD", "AUTH_FLOW_ACCESS_CODE", "AUTH_FLOW_APPLICATION", "isPkceCodeGrant", "flowToDisplay", "tablet", "desktop", "onInputChange", "selectScopes", "onScopeChange", "Clear", "Duration", "LiveResponse", "showMutatedRequest", "requestSnippetsEnabled", "curlRequest", "notDocumented", "headersKeys", "ResponseBody", "returnObject", "joinedHeaders", "hasHeaders", "Curl", "SWAGGER2_OPERATION_METHODS", "OAS3_OPERATION_METHODS", "Operations", "validMethods", "renderOperationTag", "isAbsoluteUrl", "buildBaseUrl", "safeBuildUrl", "tagExternalDocsUrl", "Collapse", "DeepLink", "Link", "tagDescription", "tagExternalDocsDescription", "rawTagExternalDocsUrl", "showTag", "focusable", "isOpened", "externalDocsUrl", "extensions", "Responses", "Parameters", "Execute", "Schemes", "OperationExt", "OperationSummary", "showExtensions", "onChangeKey", "currentScheme", "tryItOutResponse", "resolvedSummary", "OperationSummaryMethod", "OperationSummaryPath", "hasSecurity", "securityIsOptional", "allowAnonymous", "applicableDefinitions", "pathParts", "OperationExtRow", "xNormalizedValue", "fileName", "downloadable", "canCopy", "canSyntaxHighlight", "rootRef", "handlePreventYScrollingBeyondElement", "contentHeight", "visibleHeight", "offsetHeight", "saveAs", "controlsAcceptHeader", "defaultCode", "ContentType", "acceptControllingResponse", "regionId", "controlId", "ariaControls", "ariaLabel", "contentTypes", "onChangeProducesWrapper", "role", "isDefault", "onContentTypeChange", "onResponseContentTypeChange", "activeContentType", "specPathWithPossibleSchema", "ResponseExtension", "activeMediaType", "examplesForMediaType", "oas3SchemaForContentType", "sampleSchema", "shouldOverrideSchemaExample", "sampleGenConfig", "targetExamplesKey", "getTargetExamplesKey", "getMediaTypeExample", "targetExample", "oldOASMediaTypeExample", "sampleResponse", "_onContentTypeChange", "omitValue", "parsedContent", "prevContent", "updateParsedContent", "bodyEl", "downloadName", "disposition", "msSaveOrOpenBlob", "formatXml", "controls", "tab", "parametersVisible", "callbackVisible", "ParameterRow", "TryItOutButton", "groupedParametersArr", "toggleTab", "onResetClick", "rawParam", "onChangeConsumes", "onChangeConsumesWrapper", "onChangeMediaType", "lastValue", "usableValue", "ParameterIncludeEmptyDefaultProps", "onCheckboxChange", "getParamKey", "paramWithMeta", "parameterMediaType", "generatedSampleValue", "onChangeWrapper", "setDefaultValue", "paramItems", "paramEnum", "paramDefaultValue", "paramExample", "ParamBody", "bodyParam", "consumesValue", "itemType", "isFormData", "isFormDataSupported", "isDisplayParamEnum", "_onExampleSelect", "oas3ValidateBeforeExecuteSuccess", "missingKey", "isPass", "handleValidationResultPass", "handleValidationResultFail", "paramsResult", "handleValidateParameters", "requestBodyResult", "handleValidateRequestBody", "handleValidationResult", "Property", "schemaExample", "propVal", "propClass", "Errors", "editorActions", "jumpToLine", "allErrorsToDisplay", "isVisible", "sortedJSErrors", "animated", "ThrownErrorItem", "errorLine", "toTitleCase", "SpecErrorItem", "locationMessage", "xclass", "Container", "fullscreen", "full", "containerClass", "DEVICES", "hide", "keepContents", "mobile", "large", "classesAr", "device", "deviceClass", "Select", "option", "allowedValues", "NoMargin", "renderNotAnimated", "Overview", "setTagShown", "_setTagShown", "showTagId", "showOpIdPrefix", "showOpId", "_onClick", "otherProps", "InfoBasePath", "Contact", "License", "InfoUrl", "Info", "termsOfServiceUrl", "contact", "externalDocsDescription", "InfoContainer", "Footer", "FilterContainer", "isLoading", "isFailed", "placeholder", "onFilterChange", "isJson", "isEditBox", "_onChange", "updateValues", "defaultProp", "handleOnChange", "toggleIsEditBox", "curl", "curlBlock", "SchemesContainer", "ModelCollapse", "onToggle", "modelName", "toggleCollapsed", "collapsedContent", "hideSelfOnExpand", "activeTab", "defaultModelRendering", "defaultModelExpandDepth", "ModelWrapper", "exampleTabId", "examplePanelId", "modelTabId", "modelPanelId", "inactive", "tabIndex", "Models", "isExpanded", "getSchemaBasePath", "defaultModelsExpandDepth", "specPathBase", "showModels", "onLoadModels", "schemaValue", "rawSchemaValue", "rawSchema", "onLoadModel", "getCollapsedContent", "handleToggle", "EnumModel", "requiredProperties", "infoProperties", "JumpToPathSection", "titleEl", "isDeprecated", "normalizedValue", "Primitive", "enumArray", "showReset", "VersionPragmaFilter", "bypass", "alsoShow", "SvgAssets", "xmlns", "xmlnsXlink", "viewBox", "BaseLayout", "isSpecEmpty", "loadingMessage", "lastErr", "lastErrMsg", "hasServers", "hasSchemes", "hasSecurityDefinitions", "JsonSchemaDefaultProps", "keyName", "getComponentSilently", "Comp", "schemaIn", "onEnumChange", "JsonSchema_array", "itemVal", "valueOrEmptyList", "ArrayItemsComponent", "arrayErrors", "needsRemoveError", "shouldRenderValue", "schemaItemsEnum", "schemaItemsType", "schemaItemsFormat", "schemaItemsSchema", "isArrayItemText", "isArrayItemFile", "itemErrors", "onItemChange", "removeItem", "addItem", "JsonSchemaArrayItemText", "JsonSchemaArrayItemFile", "onFileChange", "JsonSchema_boolean", "booleanValue", "stringifyObjectErrors", "stringError", "currentError", "JsonSchema_object", "coreComponents", "authorizationPopup", "authorizeBtn", "authorizeOperationBtn", "authError", "oauth2", "apiKeyAuth", "basicAuth", "liveResponse", "highlightCode", "responseBody", "parameterRow", "overview", "footer", "modelExample", "formComponents", "LayoutUtils", "jsonSchemaComponents", "JsonSchemaComponents", "logs", "samples", "swaggerJs", "deepLinkingPlugin", "safeRender", "PresetApis", "BasePreset", "OAS3Plugin", "GIT_DIRTY", "GIT_COMMIT", "buildInfo", "PACKAGE_VERSION", "BUILD_TIME", "SwaggerUI", "swaggerUi", "gitRevision", "gitDirty", "buildTimestamp", "dom_id", "defaultExpanded", "queryConfigEnabled", "ApisPreset", "theme", "queryConfig", "constructorConfig", "storeConfigs", "System", "downloadSpec", "fetchedConfig", "localConfig", "mergedConfig", "setConfigs", "configsActions", "querySelector", "configUrl", "loadRemoteConfig", "apis", "AllPlugins", "module", "global", "module", "module", "module", "isObject", "module", "e", "module", "module", "isObject", "document", "is", "module", "module", "isObject", "S", "fn", "O", "P", "e", "module", "module", "key", "require_has", "module", "hasOwnProperty", "key", "module", "id", "key", "module", "module", "global", "key", "module", "module", "global", "hide", "has", "O", "key", "isFunction", "module", "module", "fn", "length", "a", "b", "c", "module", "global", "hide", "name", "exports", "key", "module", "module", "module", "module", "defined", "module", "module", "min", "module", "isArray", "module", "uid", "Symbol", "name", "module", "isObject", "isArray", "C", "module", "length", "module", "create", "O", "self", "f", "length", "index", "module", "key", "find", "module", "findIndex", "module", "module", "defined", "s", "i", "l", "a", "b", "module", "module", "defined", "module", "max", "min", "index", "length", "module", "O", "length", "index", "module", "uid", "key", "module", "has", "names", "O", "i", "key", "module", "module", "O", "module", "O", "length", "i", "P", "module", "document", "module", "i", "create", "O", "module", "has", "module", "create", "NAME", "next", "module", "has", "O", "module", "hide", "Base", "NAME", "next", "DEFAULT", "methods", "key", "O", "index", "point", "module", "fn", "e", "module", "module", "index", "module", "key", "e", "O", "T", "B", "module", "module", "e", "from", "O", "C", "mapping", "index", "length", "module", "module", "module", "O", "index", "global", "hide", "i", "NAME", "key", "module", "key", "module", "name", "module", "fn", "f", "index", "length", "module", "global", "C", "module", "isObject", "has", "id", "create", "module", "isObject", "module", "create", "key", "index", "NAME", "C", "clear", "data", "next", "prev", "forEach", "f", "has", "has", "O", "P", "e", "module", "isObject", "O", "set", "e", "module", "isObject", "C", "S", "P", "module", "global", "isObject", "NAME", "methods", "Base", "C", "O", "fn", "a", "has", "get", "add", "set", "b", "index", "module", "get", "Map", "key", "set", "module", "module", "from", "NAME", "module", "length", "A", "module", "from", "mapping", "A", "n", "module", "module", "A", "B", "S", "K", "k", "T", "index", "length", "j", "key", "module", "module", "O", "D", "C", "S", "module", "fn", "module", "html", "global", "MessageChannel", "id", "fn", "setImmediate", "i", "module", "global", "Promise", "fn", "e", "module", "C", "resolve", "module", "e", "module", "global", "navigator", "module", "isObject", "C", "x", "resolve", "global", "isObject", "perform", "userAgent", "TypeError", "e", "i", "resolve", "console", "Promise", "C", "r", "x", "index", "global", "C", "isFunction", "x", "e", "perform", "module", "module", "get", "Set", "add", "module", "module", "root", "$", "defaults", "pluginName", "fn", "window", "self", "p", "i", "plugin", "instances", "ns", "d", "options", "e", "format", "r", "now", "g", "callback", "c", "event", "defaultOptions", "o", "v", "width", "height", "a", "b", "_", "id", "s", "opposites", "result", "module", "root", "a", "b", "c", "i", "e", "f", "d", "k", "g", "h", "j", "l", "CustomEvent", "params", "callback", "rotate", "index", "offset", "clone", "debounce", "wait", "css", "addClass", "removeClass", "attrs", "key", "v", "resolve", "_resolve", "w", "x", "y", "scale", "width", "height", "self", "viewport", "wrap", "touches", "z", "transform", "data", "top", "left", "center", "cx", "cy", "isDragging", "dist", "isVisible", "right", "bottom", "dx", "dy", "_bind", "options", "p", "_get", "x2", "y2", "max", "size", "format", "$", "jquery", "HTMLElement", "message", "name", "FrameLoadingStyle", "location", "left", "right", "response", "html", "template", "resolve", "match", "i", "_", "elements", "FetchMethod", "error", "FormSubmissionState", "FormEnctype", "request", "cookie", "id", "x", "y", "options", "callback", "clone", "index", "option", "root", "TimingMetric", "VisitState", "SystemStatusCode", "session", "visit", "PageStage", "position", "size", "key", "render", "e", "Turbo", "element", "document", "c", "createConsumer", "key", "m", "x", "data", "t", "N", "e", "i", "s", "o", "n", "r", "h", "a", "l", "P", "C", "I", "x", "W", "H", "u", "f", "p", "d", "m", "g", "v", "_", "w", "b", "y", "c", "$", "x", "reference", "size", "self", "i", "o", "a", "options", "id", "data", "left", "b", "_left", "right", "name", "swap", "index", "moment", "v", "l", "h", "v", "b", "a", "f", "h", "s", "l", "n", "k", "w", "rgb", "i", "r", "g", "d", "max", "range", "min", "c", "m", "p2", "j", "interpolate", "t", "color", "c2", "w2", "p", "noop", "uid", "id", "isNullOrUndef", "value", "undefined", "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", "isNonPrimitive", "n", "Symbol", "toPrimitive", "isNumber", "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", "vScale", "_parsed", "spanGaps", "dataset", "options", "axis", "min", "max", "minDefined", "maxDefined", "getUserBounds", "Math", "_lookupByKey", "lo", "getPixelForValue", "distanceToDefinedLo", "slice", "reverse", "findIndex", "point", "isNullOrUndef", "_limitValue", "hi", "distanceToDefinedHi", "_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", "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", "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", "_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", "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", "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", "found", "isFinite", "sign", "convertObjectDataToArray", "data", "meta", "iScale", "vScale", "iAxisKey", "axis", "vAxisKey", "adata", "Array", "isStacked", "stacked", "getStackKey", "indexScale", "valueScale", "id", "getUserBounds", "minDefined", "maxDefined", "Number", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "getOrCreateStack", "stacks", "stackKey", "indexValue", "subStack", "getLastIndexInStack", "positive", "getMatchingVisibleMetas", "updateStacks", "controller", "parsed", "_cachedMeta", "_stacks", "iAxis", "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", "_ctx", "ctx", "_cachedDataOpts", "getMeta", "_type", "_parsing", "_data", "_objectData", "_sharedOptions", "_drawStart", "_drawCount", "enableOptionSharing", "supportsDecimation", "$context", "_syncList", "datasetElementType", "dataElementType", "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", "obj", "bars", "getBasePixel", "_getRuler", "vpixels", "head", "_calculateBarValuePixels", "ipixels", "_calculateBarIndexPixels", "center", "height", "width", "_getStacks", "last", "grouped", "currentParsed", "iScaleValue", "skipNull", "find", "val", "isNaN", "indexOf", "_getStackCount", "_getStackIndex", "name", "_startPixel", "_endPixel", "baseValue", "minBarLength", "floating", "getDataVisibility", "startPixel", "getPixelForDecimal", "endPixel", "getValueForPixel", "halfGrid", "getLineWidthForValue", "maxBarThickness", "Infinity", "stackIndex", "rects", "numbers", "overrides", "_index_", "offset", "grid", "_value_", "beginAtZero", "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", "innerRadius", "outerRadius", "getter", "_getRotation", "toRadians", "_getCircumference", "_getRotationExtents", "isDatasetVisible", "arcs", "spacing", "getMaxBorderWidth", "getMaxOffset", "maxSize", "toPercentage", "chartWeight", "_getRingWeight", "maxWidth", "maxHeight", "maxRadius", "toDimension", "radiusLength", "_getVisibleDatasetWeightTotal", "total", "calculateTotal", "_getRingWeightOffset", "_circumference", "animateRotate", "calculateCircumference", "animationOpts", "centerX", "centerY", "animateScale", "arc", "metaData", "formatNumber", "locale", "borderAlign", "borderWidth", "hoverBorderWidth", "hoverOffset", "ringWeightOffset", "weight", "descriptors", "_scriptable", "_indexable", "startsWith", "aspectRatio", "plugins", "legend", "generateLabels", "pointStyle", "map", "style", "text", "fillStyle", "backgroundColor", "strokeStyle", "borderColor", "fontColor", "lineWidth", "onClick", "e", "legendItem", "toggleDataVisibility", "LineController", "line", "_dataset", "animationsDisabled", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "_datasetIndex", "_decimated", "showLine", "segment", "animated", "spanGaps", "maxGapLength", "isNumber", "directUpdate", "pointsCount", "prevParsed", "nullData", "border", "firstPoint", "lastPoint", "updateControlPoints", "PolarAreaController", "_parseObjectDataRadialScale", "bind", "_updateRadius", "minSize", "cutoutPercentage", "getVisibleDatasetCount", "xCenter", "yCenter", "datasetStartAngle", "getIndexAngle", "defaultAngle", "countVisibleElements", "_computeAngle", "getDistanceFromCenterForValue", "angleLines", "display", "circular", "pointLabels", "PieController", "RadarController", "_fullLoop", "pointPosition", "getPointPositionForValue", "ScatterController", "registry", "getElement", "interaction", "abstract", "Error", "DateAdapterBase", "override", "members", "prototype", "init", "formats", "format", "diff", "startOf", "endOf", "_date", "binarySearch", "metaset", "intersect", "lookupMethod", "_reversePixels", "_rlookupByKey", "_lookupByKey", "result", "distanceToDefinedLo", "slice", "lo", "findIndex", "distanceToDefinedHi", "hi", "el", "getRange", "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", "tooltipPosition", "hasValue", "final", "ret", "defaultRoutes", "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", "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", "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", "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", "_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", "version", "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", "nonZeroBetween", "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", "_points", "_segments", "_pointsUpdated", "_updateBezierControlPoints", "_computeSegments", "interpolate", "_boundSegments", "_interpolate", "interpolated", "capBezierPoints", "hitRadius", "PointElement", "mouseX", "mouseY", "inXRange", "inYRange", "hoverRadius", "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", "containsDefaultColorsDefenitions", "forceOverride", "_args", "chartOptions", "containsColorDefenition", "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", "_zero", "logarithmic", "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", "leftMovement", "rightMovement", "topMovement", "bottomMovement", "angleMultiplier", "scalingFactor", "getValueForDistanceFromCenter", "scaledDistance", "pointLabel", "distanceFromCenter", "getBasePosition", "getPointLabelPosition", "rotate", "animate", "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", "_unit", "_majorUnit", "_offsets", "_normalized", "adapters", "displayFormats", "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", "options", "options", "options", "options", "defaultOptions", "options", "defaultOptions", "options", "options", "options", "options", "options", "options", "options", "options", "options", "options", "options", "options", "options", "sign", "difference", "round", "options", "options", "options", "options", "options", "options", "sign", "difference", "options", "options", "options", "options", "sign", "options", "options", "options", "options", "options", "options", "defaultOptions", "options", "options", "options", "options", "options", "width", "format", "options", "width", "index", "options", "width", "key", "array", "options", "index", "options", "options", "options", "defaultOptions", "options", "defaultOptions", "options", "sign", "formatters", "localize", "options", "offset", "delimiter", "sign", "formatLong", "format", "options", "defaultOptions", "formatters", "getDefaultOptions", "options", "options", "reference", "match", "options", "match", "sign", "n", "match", "match", "options", "match", "match", "match", "match", "options", "match", "options", "options", "match", "match", "match", "options", "defaultOptions", "match", "options", "match", "options", "match", "options", "options", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "formattingTokensRegExp", "longFormattingTokensRegExp", "escapedStringRegExp", "doubleQuoteRegExp", "unescapedLatinCharacterRegExp", "parse", "options", "defaultOptions", "getDefaultOptions", "parser", "cleanEscapedString", "a", "b", "index", "array", "options", "options", "options", "options", "offset", "array", "sign", "isLeapYearIndex", "parse", "max", "min", "Chartkick", "import_chartkick", "Chartkick", "createPopper", "start", "start", "name", "style", "round", "round", "x", "y", "width", "height", "width", "height", "next", "getComputedStyle", "getComputedStyle", "css", "window", "min", "max", "v", "key", "toPaddingObject", "name", "options", "popperOffsets", "min", "max", "center", "offset", "effect", "x", "y", "round", "popper", "position", "getComputedStyle", "options", "effect", "options", "window", "hash", "html", "width", "height", "x", "y", "html", "width", "height", "x", "y", "getComputedStyle", "getComputedStyle", "clippingParents", "getComputedStyle", "reference", "start", "options", "popperOffsets", "offset", "key", "options", "placements", "placement", "a", "b", "options", "name", "placements", "placement", "i", "start", "_loop", "_i", "checks", "name", "offset", "options", "name", "data", "x", "y", "name", "options", "name", "popperOffsets", "data", "offset", "min", "max", "start", "round", "map", "sort", "debounce", "fn", "resolve", "merged", "key", "defaultModifiers", "defaultOptions", "createPopper", "reference", "popper", "options", "m", "index", "fn", "name", "debounce", "resolve", "destroy", "state", "effect", "noopFn", "createPopper", "defaultModifiers", "createPopper", "MAX_UID", "MILLISECONDS_MULTIPLIER", "TRANSITION_END", "toType", "object", "undefined", "Object", "prototype", "toString", "call", "match", "toLowerCase", "getUID", "prefix", "Math", "floor", "random", "document", "getElementById", "getSelector", "element", "selector", "getAttribute", "hrefAttribute", "includes", "startsWith", "split", "trim", "getSelectorFromElement", "querySelector", "getElementFromSelector", "getTransitionDurationFromElement", "transitionDuration", "transitionDelay", "window", "getComputedStyle", "floatTransitionDuration", "Number", "parseFloat", "floatTransitionDelay", "triggerTransitionEnd", "dispatchEvent", "Event", "isElement", "jquery", "nodeType", "getElement", "length", "isVisible", "getClientRects", "elementIsVisible", "getPropertyValue", "closedDetails", "closest", "summary", "parentNode", "isDisabled", "Node", "ELEMENT_NODE", "classList", "contains", "disabled", "hasAttribute", "findShadowRoot", "documentElement", "attachShadow", "getRootNode", "root", "ShadowRoot", "noop", "reflow", "offsetHeight", "getjQuery", "jQuery", "body", "DOMContentLoadedCallbacks", "onDOMContentLoaded", "callback", "readyState", "addEventListener", "push", "isRTL", "dir", "defineJQueryPlugin", "plugin", "$", "name", "NAME", "JQUERY_NO_CONFLICT", "fn", "jQueryInterface", "Constructor", "noConflict", "execute", "executeAfterTransition", "transitionElement", "waitForTransition", "durationPadding", "emulatedDuration", "called", "handler", "target", "removeEventListener", "setTimeout", "getNextActiveElement", "list", "activeElement", "shouldGetNext", "isCycleAllowed", "listLength", "index", "indexOf", "max", "min", "namespaceRegex", "stripNameRegex", "stripUidRegex", "eventRegistry", "uidEvent", "customEvents", "mouseenter", "mouseleave", "nativeEvents", "Set", "makeEventUid", "uid", "getElementEvents", "bootstrapHandler", "event", "hydrateObj", "delegateTarget", "oneOff", "EventHandler", "off", "type", "apply", "bootstrapDelegationHandler", "domElements", "querySelectorAll", "domElement", "findHandler", "events", "callable", "delegationSelector", "values", "find", "normalizeParameters", "originalTypeEvent", "delegationFunction", "isDelegated", "typeEvent", "getTypeEvent", "has", "addHandler", "wrapFunction", "relatedTarget", "handlers", "previousFunction", "replace", "removeHandler", "Boolean", "removeNamespacedHandlers", "namespace", "storeElementEvent", "handlerKey", "keys", "on", "one", "inNamespace", "isNamespace", "elementEvent", "slice", "keyHandlers", "trigger", "args", "jQueryEvent", "bubbles", "nativeDispatch", "defaultPrevented", "isPropagationStopped", "isImmediatePropagationStopped", "isDefaultPrevented", "evt", "cancelable", "preventDefault", "obj", "meta", "key", "value", "entries", "defineProperty", "configurable", "get", "elementMap", "Map", "set", "instance", "instanceMap", "size", "console", "error", "Array", "from", "remove", "delete", "normalizeData", "JSON", "parse", "decodeURIComponent", "normalizeDataKey", "chr", "Manipulator", "setDataAttribute", "setAttribute", "removeDataAttribute", "removeAttribute", "getDataAttributes", "attributes", "bsKeys", "dataset", "filter", "pureKey", "charAt", "getDataAttribute", "Config", "Default", "DefaultType", "Error", "_getConfig", "config", "_mergeConfigObj", "_configAfterMerge", "_typeCheckConfig", "jsonConfig", "constructor", "configTypes", "property", "expectedTypes", "valueType", "RegExp", "test", "TypeError", "toUpperCase", "VERSION", "BaseComponent", "_element", "_config", "Data", "DATA_KEY", "dispose", "EVENT_KEY", "propertyName", "getOwnPropertyNames", "_queueCallback", "isAnimated", "getInstance", "getOrCreateInstance", "eventName", "enableDismissTrigger", "component", "method", "clickEvent", "tagName", "EVENT_CLOSE", "EVENT_CLOSED", "CLASS_NAME_FADE", "CLASS_NAME_SHOW", "Alert", "close", "closeEvent", "_destroyElement", "each", "data", "DATA_API_KEY", "CLASS_NAME_ACTIVE", "SELECTOR_DATA_TOGGLE", "EVENT_CLICK_DATA_API", "Button", "toggle", "button", "SelectorEngine", "concat", "Element", "findOne", "children", "child", "matches", "parents", "ancestor", "prev", "previous", "previousElementSibling", "next", "nextElementSibling", "focusableChildren", "focusables", "map", "join", "el", "EVENT_TOUCHSTART", "EVENT_TOUCHMOVE", "EVENT_TOUCHEND", "EVENT_POINTERDOWN", "EVENT_POINTERUP", "POINTER_TYPE_TOUCH", "POINTER_TYPE_PEN", "CLASS_NAME_POINTER_EVENT", "SWIPE_THRESHOLD", "endCallback", "leftCallback", "rightCallback", "Swipe", "isSupported", "_deltaX", "_supportPointerEvents", "PointerEvent", "_initEvents", "_start", "touches", "clientX", "_eventIsPointerPenTouch", "_end", "_handleSwipe", "_move", "absDeltaX", "abs", "direction", "add", "pointerType", "navigator", "maxTouchPoints", "ARROW_LEFT_KEY", "ARROW_RIGHT_KEY", "TOUCHEVENT_COMPAT_WAIT", "ORDER_NEXT", "ORDER_PREV", "DIRECTION_LEFT", "DIRECTION_RIGHT", "EVENT_SLIDE", "EVENT_SLID", "EVENT_KEYDOWN", "EVENT_MOUSEENTER", "EVENT_MOUSELEAVE", "EVENT_DRAG_START", "EVENT_LOAD_DATA_API", "CLASS_NAME_CAROUSEL", "CLASS_NAME_SLIDE", "CLASS_NAME_END", "CLASS_NAME_START", "CLASS_NAME_NEXT", "CLASS_NAME_PREV", "SELECTOR_ACTIVE", "SELECTOR_ITEM", "SELECTOR_ACTIVE_ITEM", "SELECTOR_ITEM_IMG", "SELECTOR_INDICATORS", "SELECTOR_DATA_SLIDE", "SELECTOR_DATA_RIDE", "KEY_TO_DIRECTION", "interval", "keyboard", "pause", "ride", "touch", "wrap", "Carousel", "_interval", "_activeElement", "_isSliding", "touchTimeout", "_swipeHelper", "_indicatorsElement", "_addEventListeners", "cycle", "_slide", "nextWhenVisible", "hidden", "_clearInterval", "_updateInterval", "setInterval", "_maybeEnableCycle", "to", "items", "_getItems", "activeIndex", "_getItemIndex", "_getActive", "order", "defaultInterval", "_keydown", "_addTouchEventListeners", "img", "endCallBack", "clearTimeout", "swipeConfig", "_directionToOrder", "_setActiveIndicatorElement", "activeIndicator", "newActiveIndicator", "elementInterval", "parseInt", "isNext", "nextElement", "nextElementIndex", "triggerEvent", "_orderToDirection", "slideEvent", "isCycling", "directionalClassName", "orderClassName", "completeCallBack", "_isAnimated", "clearInterval", "carousel", "slideIndex", "carousels", "EVENT_SHOW", "EVENT_SHOWN", "EVENT_HIDE", "EVENT_HIDDEN", "CLASS_NAME_COLLAPSE", "CLASS_NAME_COLLAPSING", "CLASS_NAME_COLLAPSED", "CLASS_NAME_DEEPER_CHILDREN", "CLASS_NAME_HORIZONTAL", "WIDTH", "HEIGHT", "SELECTOR_ACTIVES", "parent", "Collapse", "_isTransitioning", "_triggerArray", "toggleList", "elem", "filterElement", "foundElement", "_initializeChildren", "_addAriaAndCollapsedClass", "_isShown", "hide", "show", "activeChildren", "_getFirstLevelChildren", "startEvent", "activeInstance", "dimension", "_getDimension", "style", "complete", "capitalizedDimension", "scrollSize", "getBoundingClientRect", "selected", "triggerArray", "isOpen", "selectorElements", "ESCAPE_KEY", "TAB_KEY", "ARROW_UP_KEY", "ARROW_DOWN_KEY", "RIGHT_MOUSE_BUTTON", "EVENT_KEYDOWN_DATA_API", "EVENT_KEYUP_DATA_API", "CLASS_NAME_DROPUP", "CLASS_NAME_DROPEND", "CLASS_NAME_DROPSTART", "CLASS_NAME_DROPUP_CENTER", "CLASS_NAME_DROPDOWN_CENTER", "SELECTOR_DATA_TOGGLE_SHOWN", "SELECTOR_MENU", "SELECTOR_NAVBAR", "SELECTOR_NAVBAR_NAV", "SELECTOR_VISIBLE_ITEMS", "PLACEMENT_TOP", "PLACEMENT_TOPEND", "PLACEMENT_BOTTOM", "PLACEMENT_BOTTOMEND", "PLACEMENT_RIGHT", "PLACEMENT_LEFT", "PLACEMENT_TOPCENTER", "PLACEMENT_BOTTOMCENTER", "autoClose", "boundary", "display", "offset", "popperConfig", "reference", "Dropdown", "_popper", "_parent", "_menu", "_inNavbar", "_detectNavbar", "showEvent", "_createPopper", "focus", "_completeHide", "destroy", "update", "hideEvent", "Popper", "referenceElement", "_getPopperConfig", "createPopper", "_getPlacement", "parentDropdown", "isEnd", "_getOffset", "popperData", "defaultBsPopperConfig", "placement", "modifiers", "options", "enabled", "_selectMenuItem", "clearMenus", "openToggles", "context", "composedPath", "isMenuTarget", "dataApiKeydownHandler", "isInput", "isEscapeEvent", "isUpOrDownEvent", "getToggleButton", "stopPropagation", "SELECTOR_FIXED_CONTENT", "SELECTOR_STICKY_CONTENT", "PROPERTY_PADDING", "PROPERTY_MARGIN", "ScrollBarHelper", "getWidth", "documentWidth", "clientWidth", "innerWidth", "width", "_disableOverFlow", "_setElementAttributes", "calculatedValue", "reset", "_resetElementAttributes", "isOverflowing", "_saveInitialAttribute", "overflow", "styleProperty", "scrollbarWidth", "manipulationCallBack", "setProperty", "_applyManipulationCallback", "actualValue", "removeProperty", "callBack", "sel", "EVENT_MOUSEDOWN", "className", "clickCallback", "rootElement", "Backdrop", "_isAppended", "_append", "_getElement", "_emulateAnimation", "backdrop", "createElement", "append", "EVENT_FOCUSIN", "EVENT_KEYDOWN_TAB", "TAB_NAV_FORWARD", "TAB_NAV_BACKWARD", "autofocus", "trapElement", "FocusTrap", "_isActive", "_lastTabNavDirection", "activate", "_handleFocusin", "_handleKeydown", "deactivate", "elements", "shiftKey", "EVENT_HIDE_PREVENTED", "EVENT_RESIZE", "EVENT_CLICK_DISMISS", "EVENT_MOUSEDOWN_DISMISS", "EVENT_KEYDOWN_DISMISS", "CLASS_NAME_OPEN", "CLASS_NAME_STATIC", "OPEN_SELECTOR", "SELECTOR_DIALOG", "SELECTOR_MODAL_BODY", "Modal", "_dialog", "_backdrop", "_initializeBackDrop", "_focustrap", "_initializeFocusTrap", "_scrollBar", "_adjustDialog", "_showElement", "_hideModal", "htmlElement", "handleUpdate", "scrollTop", "modalBody", "transitionComplete", "_triggerBackdropTransition", "event2", "_resetAdjustments", "isModalOverflowing", "scrollHeight", "clientHeight", "initialOverflowY", "overflowY", "isBodyOverflowing", "paddingLeft", "paddingRight", "alreadyOpen", "CLASS_NAME_SHOWING", "CLASS_NAME_HIDING", "CLASS_NAME_BACKDROP", "scroll", "Offcanvas", "blur", "completeCallback", "position", "uriAttributes", "ARIA_ATTRIBUTE_PATTERN", "SAFE_URL_PATTERN", "DATA_URL_PATTERN", "allowedAttribute", "attribute", "allowedAttributeList", "attributeName", "nodeName", "nodeValue", "attributeRegex", "some", "regex", "DefaultAllowlist", "a", "area", "b", "br", "col", "code", "div", "em", "hr", "h1", "h2", "h3", "h4", "h5", "h6", "i", "li", "ol", "p", "pre", "s", "small", "span", "sub", "sup", "strong", "u", "ul", "sanitizeHtml", "unsafeHtml", "allowList", "sanitizeFunction", "domParser", "DOMParser", "createdDocument", "parseFromString", "elementName", "attributeList", "allowedAttributes", "innerHTML", "content", "extraClass", "html", "sanitize", "sanitizeFn", "template", "DefaultContentType", "entry", "TemplateFactory", "getContent", "_resolvePossibleFunction", "hasContent", "changeContent", "_checkContent", "toHtml", "templateWrapper", "_maybeSanitize", "text", "_setContent", "arg", "templateElement", "_putElementInTemplate", "textContent", "DISALLOWED_ATTRIBUTES", "CLASS_NAME_MODAL", "SELECTOR_TOOLTIP_INNER", "SELECTOR_MODAL", "EVENT_MODAL_HIDE", "TRIGGER_HOVER", "TRIGGER_FOCUS", "TRIGGER_CLICK", "TRIGGER_MANUAL", "EVENT_INSERTED", "EVENT_CLICK", "EVENT_FOCUSOUT", "AttachmentMap", "AUTO", "TOP", "RIGHT", "BOTTOM", "LEFT", "animation", "container", "customClass", "delay", "fallbackPlacements", "title", "Tooltip", "_isEnabled", "_timeout", "_isHovered", "_activeTrigger", "_templateFactory", "_newContent", "tip", "_setListeners", "_fixTitle", "enable", "disable", "toggleEnabled", "click", "_leave", "_enter", "_hideModalHandler", "_disposePopper", "_isWithContent", "shadowRoot", "isInTheDom", "ownerDocument", "_getTipElement", "_isWithActiveTrigger", "_getTitle", "_createTipElement", "_getContentForTemplate", "_getTemplateFactory", "tipId", "setContent", "_initializeOnDelegatedTarget", "_getDelegateConfig", "attachment", "phase", "state", "triggers", "eventIn", "eventOut", "_setTimeout", "timeout", "dataAttributes", "dataAttribute", "SELECTOR_TITLE", "SELECTOR_CONTENT", "Popover", "_getContent", "EVENT_ACTIVATE", "CLASS_NAME_DROPDOWN_ITEM", "SELECTOR_DATA_SPY", "SELECTOR_TARGET_LINKS", "SELECTOR_NAV_LIST_GROUP", "SELECTOR_NAV_LINKS", "SELECTOR_NAV_ITEMS", "SELECTOR_LIST_ITEMS", "SELECTOR_LINK_ITEMS", "SELECTOR_DROPDOWN", "SELECTOR_DROPDOWN_TOGGLE", "rootMargin", "smoothScroll", "threshold", "ScrollSpy", "_targetLinks", "_observableSections", "_rootElement", "_activeTarget", "_observer", "_previousScrollData", "visibleEntryTop", "parentScrollTop", "refresh", "_initializeTargetsAndObservables", "_maybeEnableSmoothScroll", "disconnect", "_getNewObserver", "section", "observe", "observableSection", "hash", "height", "offsetTop", "scrollTo", "top", "behavior", "IntersectionObserver", "_observerCallback", "targetElement", "id", "_process", "userScrollsDown", "isIntersecting", "_clearActiveClass", "entryIsLowerThanPrevious", "targetLinks", "anchor", "_activateParents", "listGroup", "item", "activeNodes", "node", "spy", "CLASS_DROPDOWN", "SELECTOR_DROPDOWN_MENU", "NOT_SELECTOR_DROPDOWN_TOGGLE", "SELECTOR_TAB_PANEL", "SELECTOR_OUTER", "SELECTOR_INNER", "SELECTOR_INNER_ELEM", "SELECTOR_DATA_TOGGLE_ACTIVE", "Tab", "_setInitialAttributes", "_getChildren", "innerElem", "_elemIsActive", "active", "_getActiveElem", "_deactivate", "_activate", "relatedElem", "_toggleDropDown", "nextActiveElement", "preventScroll", "_setAttributeIfNotExists", "_setInitialAttributesOnChild", "_getInnerElement", "isActive", "outerElem", "_getOuterElement", "_setInitialAttributesOnTargetPanel", "open", "EVENT_MOUSEOVER", "EVENT_MOUSEOUT", "CLASS_NAME_HIDE", "autohide", "Toast", "_hasMouseInteraction", "_hasKeyboardInteraction", "_clearTimeout", "_maybeScheduleHide", "isShown", "_onInteraction", "isInteracting", "left", "right", "application", "map", "error", "message", "key", "matches", "options", "_", "index", "schema", "params", "name", "match", "e", "filter", "callback", "fetch", "set", "size", "callback", "matches", "match", "key", "oldValue", "index", "left", "right", "length", "_", "error", "name", "descriptors", "constructor", "dependencies", "module", "message", "extend", "a", "b", "application", "logger", "elements", "schema", "element", "c", "n", "array", "k", "v", "filter", "resolve", "classes", "read", "write", "adapters", "now", "secondsSince", "ConnectionMonitor", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "consumer", "data", "error", "message", "extend", "key", "Subscription", "params", "SubscriptionGuarantor", "subscription", "s", "Subscriptions", "Consumer", "createWebSocketURL", "a", "createConsumer", "getConfig", "name", "createConsumer", "attr", "i", "d", "template", "name", "noop", "morphAttrs", "morphdom", "options", "key", "childrenOnly", "name", "version", "main", "dispatch", "i", "names", "callback", "index", "debounce", "fn", "response", "e", "html", "position", "key", "message", "data", "options", "template", "add", "operations", "resolve", "consumer", "Debug", "b", "duration", "AppearanceObserver", "_", "global", "options", "width", "x", "y", "offsetSize", "i", "height", "offset", "global", "defaults", "id", "debugging", "defaultSchema", "application", "debounce", "dispatch", "xpathToElement", "xpathToElementArray", "crypto", "c", "w", "data", "e", "camelize", "name", "match", "siblings", "key", "o", "s", "_", "resolve", "consumer", "createConsumer", "request", "Log", "v", "attrs", "attr", "elements", "error", "element", "version", "description", "keywords", "homepage", "bugs", "repository", "license", "author", "contributors", "main", "module", "browser", "unpkg", "umd", "files", "scripts", "dependencies", "devDependencies", "packageInfo", "tabId", "controllers", "controller", "initialize", "params", "transport", "reflex", "name", "array", "v", "root", "message", "color", "global", "message", "name", "self", "index", "global", "i18n", "uniq", "n", "s", "i18n", "key", "camelCase", "i18n", "options", "message", "clone", "P", "BigNumber", "v", "b", "c", "e", "i", "x", "round", "p", "n", "s", "a", "k", "j", "sign", "d", "r", "y", "m", "compare", "subtract", "q", "format", "id", "p2", "t", "g2", "d2", "z", "l", "min", "max", "name", "RoundingModeMap", "options", "format", "formatNumber", "options", "repeat", "i18n", "options", "interpolate", "i18n", "message", "options", "key", "matches", "name", "i18n", "options", "locale", "key", "options", "left", "right", "zipObject", "key", "i18n", "options", "units", "sortBy", "name", "exponent", "i18n", "options", "max", "format", "parseDate", "date", "matches", "match", "i18n", "options", "message", "key", "DEFAULT_OPTIONS", "format", "options", "offset", "within", "start", "end", "i18n", "options", "t", "name", "parseDate", "range", "i18n", "message", "p2", "options", "name", "i18n", "message", "options", "key", "I18n", "interpolate", "merge", "formatNumber", "parseDate", "format", "callback", "has", "get", "size", "I18n", "callback", "label", "args", "VideoPlayer", "id", "self", "match", "VideoPlayer", "Trix", "size", "range", "name", "classes", "matches", "import_jquery", "select2", "$", "i", "j", "id", "html", "data", "error", "message", "name", "$", "methods", "options", "key", "cache", "index", "match", "callback", "position", "saved_tokens", "hidden_input", "template", "url", "results", "data", "size", "i", "name", "id", "j", "error", "index", "key", "isArray", "params", "v", "hash", "error", "self", "index", "event", "zip", "e", "i", "key", "obj", "version", "fn", "_", "name", "transform", "i", "n", "top", "left", "bottom", "right", "height", "width", "visible", "options", "index", "key", "extend", "callback", "x", "y", "clone", "$", "options", "ghostEl", "callback", "duration", "plugins", "defaults", "option", "p", "name", "dispatchEvent", "rootEl", "cloneEl", "oldIndex", "newIndex", "oldDraggableIndex", "newDraggableIndex", "putSortable", "pluginEvent", "data", "_detectDirection", "_dragElInRowColumn", "_detectNearestEmptySortable", "x", "y", "_prepareGroup", "to", "from", "dragEl", "_hideGhostForTarget", "_unhideGhostForTarget", "nearestEmptyInsertDetectEvent", "i", "_checkOutsideTargetEl", "fn", "filter", "index", "dragStartFn", "e", "dx", "dy", "clone", "target", "after", "order", "n", "id", "el", "root", "extend", "version", "drop", "autoScroll", "top", "bottom", "left", "right", "width", "height", "onSpill", "dragStart", "cancel", "p2", "i2", "self", "index", "global", "global", "hasClass", "color", "key", "error", "scale", "index", "x", "y", "width", "height", "color", "e", "names", "l", "response", "data", "defaults", "message", "event", "position", "self", "self", "self", "color", "names", "name", "m", "map", "array", "i", "d", "s", "m", "g", "capitalize", "width", "height", "o", "x", "y", "data", "defaults", "key", "getWindow", "elements", "name", "ns", "isHTML", "capitalize", "register", "name", "elements", "capitalize", "i", "extend", "modules", "methods", "key", "fn", "o", "i", "p", "before", "after", "insertAfter", "hex", "reference", "isNumber", "attr", "name", "array", "c", "toggleClass", "css", "t", "name", "hide", "a", "v", "r", "map", "data", "key", "e", "k", "v", "key", "i", "hex", "is", "i", "a", "b", "params", "p", "q", "t", "Color", "color", "round", "l", "c", "h", "r", "g", "v", "k", "m", "y", "max", "min", "s", "d", "_a", "_b", "_c", "hexParse", "_d", "x", "z", "format", "x", "y", "m", "a", "b", "o", "theta", "position", "rx", "ry", "l", "r", "c", "d", "e", "f", "cx", "cy", "matrix", "dx", "dy", "Element", "x", "y", "t", "m", "register", "svg", "b", "node", "x", "y", "width", "height", "m", "p", "e", "clone", "box", "bbox", "el", "rbox", "point", "v", "register", "extend", "i", "methods", "name", "attrs", "map", "find", "n", "on", "events", "options", "l", "ns", "off", "dispatch", "data", "data", "options", "dispatch", "events", "i", "j", "off", "on", "register", "noop", "array", "fn", "attr", "ns", "isNumber", "Color", "attrs", "i", "map", "id", "position", "ns", "extend", "find", "register", "Element", "attrs", "x", "y", "root", "height", "attr", "m", "reference", "p", "o", "width", "extend", "register", "t", "a", "m", "i", "o", "Color", "Element", "b", "c", "d", "e", "f", "cx", "cy", "x", "y", "length", "v", "methods", "fn", "matrix", "str", "transform", "i", "ctm", "o", "Element", "index", "i", "register", "attrs", "register", "Element", "register", "rx", "ry", "x", "y", "width", "height", "attrs", "width", "height", "p", "extend", "register", "ns", "register", "from", "to", "from", "x", "y", "to", "attrs", "a", "b", "c", "extend", "register", "attrs", "a", "b", "c", "width", "height", "register", "Image", "attrs", "callback", "on", "e", "p", "off", "attr", "register", "x", "y", "i", "array", "width", "height", "m", "height", "width", "x", "y", "x", "y", "width", "b", "height", "attrs", "x", "y", "x2", "y2", "width", "height", "p", "extend", "register", "attrs", "height", "x", "y", "width", "attr", "register", "k", "f", "v", "x2", "y2", "t", "steps", "fn", "from", "to", "Controller", "c", "duration", "extend", "p", "i", "d", "c", "p", "i", "j", "parser", "length", "d", "index", "a", "s", "i", "x", "y", "l", "d", "width", "height", "Color", "o", "v", "a", "b", "i", "color", "key", "extend", "from", "to", "index", "attrs", "height", "x", "y", "d", "width", "p", "register", "x", "y", "p", "width", "height", "attrs", "p", "extend", "register", "attrs", "p", "extend", "register", "attrs", "extend", "width", "height", "register", "remove", "Animator", "fn", "now", "start", "duration", "end", "w", "i", "id", "runnerInfo", "a", "b", "fn", "index", "k", "timeline", "options", "Controller", "duration", "wait", "transform", "fn", "o", "p", "position", "x", "d", "w", "t", "s", "r", "f", "noop", "timeline", "i", "index", "transforms", "id", "extend", "a", "b", "v", "attrs", "point", "y", "start", "to", "from", "width", "height", "c", "register", "attrs", "register", "Symbol", "attrs", "register", "cx", "cy", "length", "move", "x", "y", "length", "x", "y", "move", "cx", "cy", "build", "attrs", "self", "i", "dy", "o", "j", "extend", "register", "attrs", "dx", "dy", "i", "extend", "register", "attrs", "r", "rx", "ry", "size", "extend", "register", "attrs", "register", "Element", "attrs", "width", "height", "register", "height", "move", "size", "width", "x", "y", "dx", "dy", "bbox", "getWindow", "e", "m", "matrix", "p", "height", "move", "x", "y", "size", "width", "o", "attrs", "extend", "register", "attrs", "extend", "index", "register", "attrs", "register", "Element", "attrs", "o", "offset", "color", "register", "i", "Element", "attrs", "w", "name", "params", "register", "attrs", "d", "register", "attrs", "register", "extend", "Symbol", "Image", "Element", "Color", "color", "params", "data", "self", "split", "params", "options", "response", "data", "error", "extend", "i", "key", "fn", "callback", "params", "i", "files", "width", "height", "e", "message", "progress", "error", "n", "elements", "size", "x", "o", "option", "start", "end", "response", "key", "c", "r", "v", "options", "left", "match", "name", "rejected", "data", "alpha", "dx", "dy", "array", "length", "transform", "message", "self", "e", "next", "import_activestorage", "error", "progress", "id", "self", "e", "next", "array", "clear", "sort", "defaults", "s", "length", "debounce", "fn", "wait", "t", "toggleClass", "e", "key", "getEventTarget", "error", "_", "options", "config", "defaults", "_d", "isMobile", "c", "i", "format", "match", "_a", "fn", "duration", "config", "source", "key", "t", "s", "i", "n", "p", "r", "k", "a", "j", "self", "defaults", "clear", "destroy", "set", "build", "fn", "config", "e", "maxTime", "minTime", "getEventTarget", "element", "options", "debounce", "triggerChange", "toggleClass", "m", "c", "offset", "activeElement", "d", "month", "_", "array", "x", "duration", "formats", "key", "top", "left", "right", "doc", "b", "range", "option", "format", "data", "hooks", "name", "min", "max", "instances", "camelize", "value", "replace", "_", "char", "toUpperCase", "capitalize", "charAt", "slice", "dasherize", "toLowerCase", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "Array", "from", "reduce", "values", "getOwnStaticArrayValues", "forEach", "name", "add", "Set", "readInheritableStaticObjectPairs", "pairs", "push", "getOwnStaticObjectPairs", "Object", "getPrototypeOf", "reverse", "definition", "isArray", "keys", "map", "key", "extend", "extendWithReflect", "extended", "Reflect", "construct", "arguments", "new", "prototype", "create", "setPrototypeOf", "testReflectExtension", "a", "call", "b", "error", "ClassPropertiesBlessing", "classes", "properties", "classDefinition", "assign", "propertiesForClassDefinition", "get", "has", "attribute", "getAttributeName", "Error", "getAll", "TargetPropertiesBlessing", "targets", "targetDefinition", "propertiesForTargetDefinition", "target", "find", "identifier", "findAll", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "valueDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "attributeName", "data", "getAttributeNameForKey", "propertiesForValueDefinitionPair", "reader", "read", "writer", "write", "defaultValue", "set", "undefined", "delete", "hasCustomDefaultValue", "token", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "Boolean", "Number", "String", "parseValueTypeDefault", "toString", "parseValueTypeObject", "typeObject", "typeFromObject", "type", "defaultValueType", "default", "parseValueTypeDefinition", "typeFromDefaultValue", "typeFromConstant", "defaultValueForDefinition", "defaultValuesByType", "readers", "writers", "array", "boolean", "number", "object", "string", "JSON", "parse", "TypeError", "writeString", "writeJSON", "stringify", "Controller", "context", "shouldLoad", "application", "scope", "element", "initialize", "connect", "disconnect", "dispatch", "eventName", "detail", "prefix", "bubbles", "cancelable", "event", "CustomEvent", "dispatchEvent", "blessings", "kebabCase", "booleanOptions", "stringOptions", "numberOptions", "arrayOptions", "arrayOrStringOptions", "dateOptions", "dateFormats", "options", "date", "arrayOrString", "events", "elements", "mapping", "strftimeRegex", "RegExp", "join", "convertDateFormat", "format", "match", "StimulusFlatpickr", "config", "_initializeEvents", "_initializeOptions", "_initializeDateFormats", "fp", "flatpickr", "flatpickrElement", "_objectSpread2", "_initializeElements", "inputTarget", "destroy", "hook", "bind", "optionType", "optionsCamelCase", "option", "optionKebab", "_handleDaysOfWeek", "disableDaysOfWeek", "_validateDaysOfWeek", "disable", "_disable", "enableDaysOfWeek", "enable", "_enable", "days", "day", "parseInt", "console", "disabledDays", "includes", "getDay", "enabledDays", "dateFormat", "val", "e", "hasInstanceTarget", "instanceTarget", "import_default", "import_de", "self", "index", "id", "index", "d", "b", "p", "__assign", "t", "s", "i", "n", "to", "from", "i", "l", "slice", "options", "vnodeId", "isValidElement", "inEvent", "rerenderQueue", "prevDebounce", "microTick", "i", "EMPTY_OBJ", "EMPTY_ARR", "IS_NON_DIMENSIONAL", "assign", "obj", "props", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "createRef", "current", "Fragment", "diffProps", "dom", "newProps", "oldProps", "isSvg", "hydrate", "setProperty", "setStyle", "style", "value", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "indexOf", "removeAttribute", "setAttribute", "this", "event", "Component", "context", "getDomSibling", "childIndex", "sibling", "updateParentDomPointers", "child", "base", "defer", "cb", "setTimeout", "enqueueRender", "c", "push", "process", "__r", "debounceRendering", "renderQueueLength", "component", "commitQueue", "oldVNode", "oldDom", "parentDom", "sort", "a", "b", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "refs", "oldChildren", "oldChildrenLength", "Array", "isArray", "reorderChildren", "placeChild", "getLastDom", "nextSibling", "unmount", "applyRef", "tmp", "toChildArray", "out", "some", "nextDom", "sibDom", "outer", "appendChild", "insertBefore", "lastDom", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "createContext", "defaultValue", "contextId", "context", "__c", "i", "__", "Consumer", "props", "contextValue", "children", "Provider", "subs", "ctx", "this", "getChildContext", "shouldComponentUpdate", "_props", "value", "some", "c", "__e", "enqueueRender", "sub", "push", "old", "componentWillUnmount", "splice", "indexOf", "call", "contextType", "slice", "EMPTY_ARR", "options", "error", "vnode", "oldVNode", "errorInfo", "component", "ctor", "handled", "constructor", "getDerivedStateFromError", "setState", "__d", "componentDidCatch", "__E", "e", "vnodeId", "isValidElement", "inEvent", "Component", "prototype", "update", "callback", "s", "__s", "state", "assign", "__v", "_sb", "forceUpdate", "__h", "render", "Fragment", "rerenderQueue", "microTick", "Promise", "then", "bind", "resolve", "setTimeout", "process", "__r", "currentIndex", "currentComponent", "previousComponent", "prevRaf", "afterPaintEffects", "EMPTY", "oldBeforeDiff", "options", "oldBeforeRender", "oldAfterDiff", "diffed", "oldCommit", "__c", "oldBeforeUnmount", "unmount", "flushAfterPaintEffects", "component", "afterPaintEffects", "shift", "__H", "forEach", "invokeCleanup", "invokeEffect", "__h", "e", "options", "__e", "__b", "vnode", "currentComponent", "oldBeforeDiff", "oldBeforeRender", "currentIndex", "hooks", "__c", "previousComponent", "__", "hookItem", "__N", "EMPTY", "_pendingArgs", "diffed", "oldAfterDiff", "c", "length", "push", "prevRaf", "requestAnimationFrame", "afterNextFrame", "__V", "commitQueue", "some", "filter", "cb", "__v", "oldCommit", "unmount", "oldBeforeUnmount", "hasErrored", "s", "HAS_RAF", "callback", "raf", "done", "clearTimeout", "timeout", "cancelAnimationFrame", "setTimeout", "hook", "comp", "cleanup", "assign", "obj", "props", "i", "shallowDiffers", "a", "b", "PureComponent", "p", "this", "props", "PureComponent", "prototype", "Component", "isPureReactComponent", "shouldComponentUpdate", "props", "state", "shallowDiffers", "this", "oldDiffHook", "options", "__b", "vnode", "type", "__f", "ref", "REACT_FORWARD_SYMBOL", "Symbol", "for", "oldCatchError", "options", "__e", "error", "newVNode", "oldVNode", "errorInfo", "then", "component", "vnode", "__c", "__k", "oldUnmount", "unmount", "detachedClone", "detachedParent", "parentDom", "forEach", "effect", "__H", "assign", "__P", "map", "child", "removeOriginal", "originalParent", "__v", "insertBefore", "__d", "Suspense", "this", "__u", "_suspenders", "suspended", "__", "__a", "SuspenseList", "this", "_next", "_map", "options", "unmount", "vnode", "component", "__c", "__R", "__h", "type", "oldUnmount", "Suspense", "prototype", "Component", "promise", "suspendingVNode", "suspendingComponent", "c", "_suspenders", "push", "resolve", "suspended", "__v", "resolved", "onResolved", "onSuspensionComplete", "__u", "state", "__a", "suspendedVNode", "__k", "removeOriginal", "setState", "__b", "pop", "forceUpdate", "wasHydrating", "then", "componentWillUnmount", "render", "props", "detachedParent", "document", "createElement", "detachedComponent", "detachedClone", "__O", "__P", "fallback", "Fragment", "children", "list", "child", "node", "delete", "revealOrder", "size", "length", "ContextProvider", "getChildContext", "context", "Portal", "_this", "container", "_container", "_temp", "nodeType", "parentNode", "childNodes", "appendChild", "insertBefore", "before", "removeChild", "splice", "indexOf", "createPortal", "el", "containerInfo", "delegated", "get", "unsuspend", "wrappedUnsuspend", "Map", "toChildArray", "reverse", "i", "set", "componentDidUpdate", "componentDidMount", "forEach", "REACT_ELEMENT_TYPE", "Symbol", "for", "CAMEL_PROPS", "IS_DOM", "onChangeInputType", "test", "Component", "prototype", "isReactComponent", "forEach", "key", "Object", "defineProperty", "configurable", "get", "this", "set", "v", "writable", "value", "oldEventHook", "options", "event", "empty", "isPropagationStopped", "cancelBubble", "isDefaultPrevented", "defaultPrevented", "e", "persist", "nativeEvent", "currentComponent", "classNameDescriptor", "class", "oldVNodeHook", "vnode", "type", "props", "normalizedProps", "nonCustomElement", "indexOf", "i", "IS_DOM", "test", "onChangeInputType", "toLowerCase", "CAMEL_PROPS", "replace", "multiple", "Array", "isArray", "toChildArray", "children", "child", "selected", "defaultValue", "className", "enumerable", "$$typeof", "REACT_ELEMENT_TYPE", "oldBeforeRender", "__r", "__c", "x", "y", "createContext", "j", "callback", "FakeComponent", "G", "c", "createElement", "Fragment", "createContext", "flushSync", "unmountComponentAtNode", "EventSourceApi", "removeElement", "i", "matches", "j", "name", "guid", "callback", "__assign", "i", "a", "b", "s", "index", "n", "addWeeks", "m", "addDays", "startOfDay", "d", "startOfHour", "startOfMinute", "startOfSecond", "y", "w", "range", "hasOwnProperty", "hash", "key", "a", "key", "hasOwnProperty", "hash", "i", "options", "instances", "instance", "duration", "start", "startOfDay", "s", "m", "sign", "duration", "s", "sign", "i", "NativeFormatter", "start", "end", "__assign", "format", "s", "options", "a", "CmdFormatter", "FuncFormatter", "b", "instances", "startOfDay", "addDays", "start", "end", "i", "range", "c", "range", "start", "end", "__assign", "options", "startOfDay", "__assign_1", "transform", "ViewApi", "name", "i", "CalendarApi", "callback", "d", "id", "instances", "EventApi", "GregorianCalendarSystem", "parse", "m", "DateEnv", "s", "a", "n", "startOfHour", "startOfMinute", "startOfSecond", "dateOptions", "j", "__assign", "point", "point", "Splitter", "key", "instances", "populate", "__assign", "options", "__assign", "removeElement", "clippingParents", "getClippingParents", "getClippingParents", "success", "Emitter", "options", "handlers", "hash", "PositionCache", "i", "ScrollController", "ElementScrollController", "top", "left", "WindowScrollController", "n", "Theme", "__assign", "key", "ScrollResponder", "request", "createContext", "dispatch", "PureComponent", "BaseComponent", "DateComponent", "hooks", "StandardTheme", "name", "RenderHook", "createElement", "ContentHookInner", "MountHook", "rootEl", "callback", "ViewRoot", "duration", "DateProfileGenerator", "isValid", "range", "start", "end", "startOfDay", "addDays", "error", "instances", "eventSourceDef", "params", "events", "render", "html", "destroy", "removeElement", "DelayedRunner", "TaskRunner", "CalendarDataManager", "data", "CalendarDataProvider", "NamedTimeZoneImpl", "SegHierarchy", "binarySearch", "__assign", "start", "end", "index", "binarySearch", "a", "Interaction", "ElementDragging", "ToolbarSection", "createElement", "isDisabled", "BaseComponent", "Toolbar", "key", "ViewContainer", "height", "EventClicking", "EventHovering", "CalendarContent", "options", "__assign", "Fragment", "now", "CalendarRoot", "renderInner", "TableDateCell", "TableDowCell", "addDays", "NowTimer", "startOfDay", "DayHeader", "DaySeriesModel", "range", "DayTableModel", "Slicer", "instances", "Scroller", "i", "RefMap", "SimpleScrollGrid", "EventRoot", "StandardEvent", "renderInnerContent", "DayCellContent", "options", "createElement", "BaseComponent", "__assign", "DayCellRoot", "format", "Popover", "rootEl", "MorePopover", "MoreLinkRoot", "_a", "range", "Fragment", "addDays", "Calendar", "data", "flushSync", "createElement", "height", "__assign", "unmountComponentAtNode", "classList", "TableView", "createElement", "i", "TableCellTop", "__assign", "Fragment", "BaseComponent", "TableBlockEvent", "TableListItemEvent", "renderInnerContent", "TableCellMoreLink", "TableCell", "isDisabled", "addDays", "DayGridSegHierarchy", "TableRow", "options", "key", "isVisible", "left", "right", "height", "placements", "Table", "rootEl", "start", "end", "DayTableSlicer", "DayTable", "DayTableView", "TableDateProfileGenerator", "endOfWeek", "addWeeks", "main", "PointerDragging", "touches", "ElementMirror", "callback", "removeElement", "ScrollGeomCache", "top", "ElementScrollGeomCache", "WindowScrollGeomCache", "AutoScroller", "now", "sign", "left", "FeaturefulElementDragging", "OffsetTracker", "getClippingParents", "scrollEl", "point", "HitDragging", "dragging", "id", "width", "height", "transform", "__assign", "DateClicking", "Interaction", "DateSelecting", "component", "options", "getComponentTouchDelay", "EventDragging", "isValid", "startOfDay", "EventResizing", "UnselectAuto", "context", "documentPointer", "ExternalElementDragging", "start", "end", "name", "ExternalDraggable", "InferredElementDragging", "ThirdPartyDraggable", "main", "main_default", "hasClass", "color", "_", "id", "noop", "self", "name", "index", "a", "b", "options", "error", "data", "now", "filter", "error", "duration", "data", "key", "self", "event", "params", "error", "id", "data", "error", "self", "index", "self", "error", "id", "options", "noop", "uid", "id", "isNullOrUndef", "isArray", "isObject", "isNumberFinite", "finiteOrDefault", "valueOrDefault", "toPercentage", "toDimension", "callback", "fn", "each", "i", "_elementsEqual", "k", "isValidKey", "key", "_merger", "options", "merge", "mergeIf", "_mergerIf", "keyResolvers", "v", "o", "resolveObjectKey", "key", "_getKeyResolver", "_splitKey", "k", "_capitalize", "defined", "isFunction", "setsEqual", "a", "b", "_isClickEvent", "e", "PI", "TAU", "PITAU", "INFINITY", "RAD_PER_DEG", "HALF_PI", "QUARTER_PI", "TWO_THIRDS_PI", "log10", "sign", "niceNum", "range", "almostEquals", "_factorize", "i", "isNumber", "n", "x", "y", "almostWhole", "_setMinAndMaxByKey", "array", "toRadians", "toDegrees", "radians", "_decimalPlaces", "isNumberFinite", "p", "getAngleFromPoint", "distanceBetweenPoints", "_angleDiff", "_normalizeAngle", "_angleBetween", "start", "end", "s", "_limitValue", "min", "max", "_int16Range", "_isBetween", "_lookup", "index", "_lookupByKey", "_rlookupByKey", "_filterBetween", "arrayEvents", "listenArrayEvents", "unlistenArrayEvents", "_arrayUnique", "set", "requestAnimFrame", "callback", "throttled", "fn", "args", "debounce", "_toLeftRightCenter", "_alignStartEnd", "start", "end", "_textX", "left", "right", "_getStartAndCountOfVisiblePoints", "min", "max", "_limitValue", "_lookupByKey", "_scaleRangesChanged", "atEdge", "t", "elasticIn", "s", "p", "TAU", "elasticOut", "effects", "HALF_PI", "PI", "m", "d", "round", "v", "lim", "l", "h", "p2b", "n2b", "b2n", "n2p", "map$1", "hex", "h1", "b", "h2", "eq", "isShort", "hexParse", "alpha", "a", "f", "hexString", "HUE_RE", "hsl2rgbn", "n", "k", "hsv2rgbn", "hwb2rgbn", "w", "rgb", "i", "hueValue", "r", "g", "rgb2hsl", "range", "calln", "c", "hsl2rgb", "hwb2rgb", "hsv2rgb", "hue", "hueParse", "p2", "rotate", "hslString", "map", "names$1", "unpack", "j", "names", "nameParse", "RGB_RE", "rgbParse", "rgbString", "to", "from", "interpolate", "modHSL", "clone", "fromObject", "functionParse", "Color", "color", "c2", "w2", "isPatternOrGradient", "getHoverColor", "overrides", "descriptors", "getScope$1", "key", "set", "root", "merge", "Defaults", "_descriptors", "options", "name", "isObject", "valueOrDefault", "defaults", "toFontString", "isNullOrUndef", "_measureText", "data", "_longestText", "cache", "isArray", "_alignPixel", "width", "clearCanvas", "drawPoint", "x", "y", "drawPointLegend", "size", "RAD_PER_DEG", "TWO_THIRDS_PI", "QUARTER_PI", "_isPointInArea", "point", "clipArea", "unclipArea", "_steppedLineTo", "flip", "_bezierCurveTo", "renderText", "setRenderOpts", "decorateText", "top", "bottom", "addRoundedRectPath", "LINE_HEIGHT", "FONT_STYLE", "toLineHeight", "matches", "numberOrZero", "_readValueToProps", "read", "toTRBL", "toTRBLCorners", "toPadding", "toFont", "resolve", "index", "_addGrace", "toDimension", "add", "createContext", "_createResolver", "defined", "_resolve", "_cached", "_resolveWithPrefixes", "getKeysFromAllScopes", "_attachContext", "_resolveWithContext", "isFunction", "readKey", "_capitalize", "needsSubResolver", "_resolveScriptable", "_resolveArray", "createSubResolver", "resolveFallback", "getScope", "resolveObjectKey", "addScopes", "addScopesFromKey", "subGetTarget", "resolveKeysFromAllScopes", "_parseObjectDataRadialScale", "EPSILON", "getPoint", "getValueAxis", "splineCurve", "next", "distanceBetweenPoints", "monotoneAdjust", "almostEquals", "monotoneCompute", "splineCurveMonotone", "sign", "capControlPoint", "capBezierPoints", "_updateBezierControlPoints", "prev", "_isDomSupported", "_getParentNode", "parseMaxStyle", "getComputedStyle", "getStyle", "positions", "getPositionedStyle", "useOffsetPos", "getCanvasPosition", "e", "touches", "getRelativePosition", "height", "getContainerSize", "INFINITY", "round1", "getMaximumSize", "retinaScale", "supportsEventListenerOptions", "readUsedSize", "_pointInLine", "_steppedInterpolation", "_bezierInterpolation", "intlCache", "getNumberFormat", "formatNumber", "getRightToLeftAdapter", "getLeftToRightAdapter", "getRtlAdapter", "overrideTextDirection", "restoreTextDirection", "propertyFn", "_angleBetween", "_angleDiff", "_normalizeAngle", "_isBetween", "normalizeSegment", "getSegment", "_boundSegment", "compare", "inside", "_boundSegments", "findStartAndEnd", "solidSegments", "_computeSegments", "splitByStyles", "doSplitByStyles", "readStyle", "styleChanged", "Animator", "fn", "requestAnimFrame", "i", "draw", "animator", "transparent", "interpolators", "from", "to", "color", "Animation", "resolve", "effects", "duration", "numbers", "colors", "defaults", "name", "v", "Animations", "config", "isObject", "key", "option", "isArray", "options", "resolveTargetOptions", "awaitAll", "scaleClip", "scale", "min", "max", "defaultClip", "x", "y", "toClip", "t", "r", "b", "l", "getSortedDatasetIndices", "applyStack", "isNumberFinite", "sign", "convertObjectDataToArray", "data", "isStacked", "getStackKey", "getUserBounds", "getOrCreateStack", "getLastIndexInStack", "updateStacks", "index", "getFirstScaleId", "scales", "createDatasetContext", "createContext", "createDataContext", "clearStacks", "isDirectUpdateMode", "cloneIfNotShared", "createStack", "DatasetController", "valueOrDefault", "unlistenArrayEvents", "listenArrayEvents", "start", "prev", "resolveObjectKey", "range", "elements", "active", "elementType", "cache", "defined", "names", "end", "move", "getAllScaleValues", "_arrayUnique", "a", "computeMinSampleSize", "computeFitCategoryTraits", "size", "isNullOrUndef", "computeFlexCategoryTraits", "next", "parseFloatBar", "parseValue", "parseArrayOrPrimitive", "isFloatBar", "barSign", "borderProps", "top", "bottom", "setBorderSkipped", "parseEdge", "swap", "startEnd", "v2", "setInflateAmount", "BarController", "length", "center", "BubbleController", "point", "getRatioAndOffset", "TAU", "_angleBetween", "HALF_PI", "PI", "DoughnutController", "toRadians", "toPercentage", "toDimension", "formatNumber", "e", "LineController", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "isNumber", "PolarAreaController", "_parseObjectDataRadialScale", "PieController", "RadarController", "Element", "formatters", "calculateDelta", "log10", "Ticks", "autoSkip", "determineMaxTicks", "getMajorIndices", "skipMajors", "calculateSpacing", "skip", "offset", "getEvenSpacing", "_factorize", "reverseAlign", "offsetFromEdge", "sample", "getPixelForGridLine", "validIndex", "garbageCollect", "each", "getTickMarkLength", "getTitleHeight", "toFont", "toPadding", "createScaleContext", "createTickContext", "titleAlign", "position", "_toLeftRightCenter", "titleArgs", "left", "right", "height", "width", "_alignStartEnd", "Scale", "finiteOrDefault", "callback", "_addGrace", "_limitValue", "toDegrees", "j", "_measureText", "_int16Range", "_alignPixel", "w", "h", "x2", "y2", "p2", "clipArea", "renderText", "unclipArea", "TypedRegistry", "isIChartComponent", "id", "registerDefaults", "overrides", "merge", "routeDefaults", "Registry", "registry", "_capitalize", "ScatterController", "controllers", "abstract", "format", "adapters", "binarySearch", "_rlookupByKey", "_lookupByKey", "evaluateInteractionItems", "getDistanceMetricForAxis", "getIntersectItems", "_isPointInArea", "getNearestRadialItems", "getAngleFromPoint", "getNearestCartesianItems", "inRange", "getNearestItems", "getAxisItems", "Interaction", "getRelativePosition", "STATIC_POSITIONS", "filterByPosition", "array", "filterDynamicPositionByAxis", "sortByWeight", "wrapBoxes", "buildStacks", "layouts", "wrap", "setLayoutDims", "params", "buildLayoutBoxes", "getCombinedMax", "updateMaxPadding", "updateDims", "handleMaxPadding", "getMargins", "positions", "fitBoxes", "setBoxDims", "placeBoxes", "BasePlatform", "BasicPlatform", "EXPANDO_KEY", "EVENT_TYPES", "isNullOrEmpty", "initCanvas", "readUsedSize", "eventListenerOptions", "supportsEventListenerOptions", "addListener", "removeListener", "fromNativeEvent", "nodeListContains", "createAttachObserver", "createDetachObserver", "drpListeningCharts", "oldDevicePixelRatio", "onWindowResize", "listenDevicePixelRatioChanges", "unlistenDevicePixelRatioChanges", "createResizeObserver", "_getParentNode", "throttled", "releaseObserver", "createProxyAndListen", "DomPlatform", "handlers", "getMaximumSize", "_detectPlatform", "_isDomSupported", "PluginService", "filter", "descriptors", "plugins", "allPlugins", "createDescriptors", "getOpts", "pluginOpts", "getIndexAxis", "getAxisFromDefaultScaleID", "getDefaultScaleIDFromAxis", "axisFromPosition", "determineAxis", "mergeScaleConfig", "mergeIf", "initOptions", "initData", "initConfig", "keyCache", "keysCached", "cachedKeys", "addIfFound", "set", "Config", "getResolver", "needContext", "isFunction", "_attachContext", "_createResolver", "p", "hasFunction", "_descriptors", "version", "KNOWN_POSITIONS", "positionIsHorizontal", "compare2Level", "l2", "onAnimationsComplete", "animationOptions", "onAnimationProgress", "getCanvas", "instances", "getChart", "c", "moveNumericKeys", "determineLastEvent", "Chart", "uid", "debounce", "retinaScale", "clearCanvas", "setsEqual", "visible", "listener", "_elementsEqual", "_isClickEvent", "invalidatePlugins", "clipArc", "toRadiusCorners", "_readValueToProps", "parseBorderRadius$1", "o", "rThetaToXY", "theta", "pathArc", "alpha", "drawArc", "drawBorder", "ArcElement", "_isBetween", "setStyle", "lineTo", "getLineMethod", "_steppedLineTo", "_bezierCurveTo", "pathVars", "pathSegment", "fastPathSegment", "_getSegmentMethod", "_getInterpolationMethod", "_steppedInterpolation", "_bezierInterpolation", "_pointInLine", "strokePathWithCache", "strokePathDirect", "usePath2D", "LineElement", "_updateBezierControlPoints", "_computeSegments", "_boundSegments", "inRange$1", "PointElement", "drawPoint", "getBarBounds", "skipOrLimit", "parseBorderWidth", "toTRBL", "parseBorderRadius", "toTRBLCorners", "boundingRects", "hasRadius", "addNormalRectPath", "inflateRect", "BarElement", "addRoundedRectPath", "lttbDecimation", "minMaxDecimation", "dx", "cleanDecimatedDataset", "cleanDecimatedData", "getStartAndCountOfVisiblePointsSimplified", "plugin_decimation", "d", "_segments", "_findSegmentEnd", "_getBounds", "_boundSegment", "_getEdge", "_normalizeAngle", "_pointsFromSegments", "_createBoundaryLine", "_shouldApplyFill", "_resolveTarget", "fill", "_decodeFill", "parseFillOption", "decodeTargetIndex", "_getTargetPixel", "_getTargetValue", "_buildStackLine", "getLinesBelow", "addPointsBelow", "findPoint", "simpleArc", "_getTarget", "getLineByIndex", "computeBoundary", "computeCircularBoundary", "computeLinearBoundary", "_drawfill", "doFill", "clipVertical", "clipBounds", "interpolatedLineTo", "getBoxSize", "itemsEqual", "Legend", "getRtlAdapter", "drawPointLegend", "overrideTextDirection", "_textX", "restoreTextDirection", "isListened", "plugin_legend", "Title", "createTitle", "plugin_title", "map", "plugin_subtitle", "positioners", "distanceBetweenPoints", "pushOrConcat", "splitNewlines", "createTooltipItem", "getTooltipSize", "determineYAlign", "doesNotFitWithAlign", "determineXAlign", "determineAlignment", "alignX", "alignY", "getBackgroundPoint", "getAlignedX", "getBeforeAfterBodyLines", "createTooltipContext", "overrideCallbacks", "Tooltip", "x3", "y3", "plugin_tooltip", "noop", "addIfString", "findOrAddLabel", "CategoryScale", "generateTicks$1", "niceNum", "almostWhole", "almostEquals", "_decimalPlaces", "relativeLabelSize", "LinearScaleBase", "_setMinAndMaxByKey", "LinearScale", "isMajor", "generateTicks", "LogarithmicScale", "m", "getTickBackdropHeight", "measureLabelSize", "_longestText", "determineLimits", "fitWithPointLabels", "updateLimits", "buildPointLabelItems", "yForAngle", "getTextAlignForAngle", "leftForTextAlign", "drawPointLabels", "pathRadiusLine", "drawRadiusLine", "createPointLabelContext", "RadialLinearScale", "INTERVALS", "UNITS", "sorter", "parse", "parser", "round", "determineUnitForAutoTicks", "determineUnitForFormatting", "determineMajorUnit", "addTick", "_lookup", "setMajorTicks", "ticksFromTimestamps", "TimeScale", "_filterBetween", "formats", "interpolate", "TimeSeriesScale", "registerables", "Chart", "registerables", "auto_default", "self", "colors", "config", "self", "index", "import_activestorage", "Ajax", "error", "base64DataToFile", "n", "self", "response", "event", "files", "e", "next", "resolve", "html", "data", "error", "message", "event", "autocomplete", "n", "_", "elements", "matches", "position", "error", "self", "response", "id", "response", "error", "self", "self", "index", "event", "order", "id", "self", "elements", "matches", "options", "self", "id", "prev", "self", "e", "id", "prev", "next", "copyDataToDataTransfer", "data", "key", "self", "top", "left", "width", "id", "show", "data", "name", "request", "self", "self", "index", "data", "template", "i", "data", "i", "data", "self", "ScrollMagic", "key", "self", "data", "options", "self", "index", "id", "import_activestorage", "self", "index", "e", "data", "position", "options", "self", "img", "index", "position", "index", "next", "response", "resolve", "_", "error", "duration", "key", "SwaggerUI", "self", "index", "key", "import_autocompleter", "autocomplete", "n", "v", "array", "index", "response", "self", "error", "options", "modal", "copyDataToDataTransfer", "data", "key", "index", "e", "state", "self", "self", "_a", "match", "key", "matches", "elements", "index", "closest", "import_chartkick", "application", "global", "VideoPlayer", "e", "Chartkick", "i18n", "I18n", "event", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "import_default", "import_de", "component_controller_default", "visible", "component_controller_exports", "component_controller_default", "component_controller_default", "data", "config", "auto_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "self", "size", "width", "height", "component_controller_exports", "component_controller_default", "import_croppie", "import_activestorage", "component_controller_default", "self", "component_controller_exports", "component_controller_default", "component_controller_default", "self", "component_controller_exports", "component_controller_default", "component_controller_default", "template", "clone", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "import_trix", "component_controller_default", "isDisabled", "response", "error", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "self", "index", "component_controller_exports", "component_controller_default", "component_controller_default", "error", "component_controller_exports", "component_controller_default", "component_controller_default", "error", "params", "key", "component_controller_exports", "component_controller_default", "component_controller_default", "id", "i", "component_controller_exports", "component_controller_default", "component_controller_default", "error", "message", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "error", "e", "id", "message", "component_controller_exports", "component_controller_default", "component_controller_default", "response", "html", "error", "modal", "message", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "error", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "params", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "index", "data", "event", "self", "component_controller_exports", "component_controller_default", "_typeof", "obj", "_classCallCheck", "_defineProperties", "i", "_createClass", "_defineProperty", "key", "_inherits", "_setPrototypeOf", "_getPrototypeOf", "o", "p", "_isNativeReflectConstruct", "e", "_assertThisInitialized", "self", "_possibleConstructorReturn", "_createSuper", "_get", "target", "property", "receiver", "_d", "n", "extend", "isNumber", "s", "isObject", "isDate", "isFunction", "clone", "a", "isDate", "isFunction", "i", "isObject", "c", "j", "merge", "a", "b", "i", "c", "clone", "isFunction", "isNumber", "isObject", "j", "i", "o", "getValue", "matches", "_one", "d", "isFunction", "r", "isObject", "s", "j", "a", "f", "t", "l", "v", "map", "key", "l", "uuid", "point", "center", "s", "i", "each", "fn", "map", "o", "e", "x", "wrap", "r", "map", "key", "cls", "array", "flip", "min", "max", "index", "c", "i", "findParent", "classList", "_oneSet", "add", "classes", "getClass", "addClass", "_one", "el", "clazz", "hasClass", "removeClass", "toggleClass", "createElement", "createElementNS", "ns", "e", "i", "top", "left", "z", "ElementTypes", "i", "name", "createElementNS", "d", "p", "svg", "a", "EVENT_CLICK", "EVENT_MOUSEDOWN", "EVENT_MOUSEENTER", "EVENT_MOUSEOUT", "EVENT_MOUSEOVER", "EVENT_TOUCHSTART", "EVENT_TOUCHEND", "EVENT_TOUCHMOVE", "EVENT_DRAG_START", "PerimeterAnchorShapes", "AnchorLocations", "AbstractSegment", "params", "_classCallCheck", "_defineProperty", "_createClass", "x", "y", "x2", "y2", "w", "h", "uuid", "index", "i", "e", "_one", "l", "fn", "j", "guid", "t", "touches", "fn", "options", "key", "i", "g", "guid", "c", "m", "_fn", "e", "t", "p", "DefaultHandler", "_defineProperty", "TapHandler", "_classCallCheck", "_createClass", "down", "up", "clearSingle", "clearDouble", "EVENT_MOUSEDOWN", "MouseEnterExitHandler", "over", "EVENT_MOUSEENTER", "out", "EVENT_MOUSEOVER", "EVENT_MOUSEOUT", "EventManager", "params", "on", "off", "_decorate", "evt", "p2", "m", "t", "s", "r2", "x2", "y2", "a2", "b2", "m", "s", "theta", "y", "x", "length", "uuid", "p", "i", "matches", "TRUE", "FALSE", "PositioningStrategies", "_devNull", "_each", "fn", "_inputFilter", "e", "t", "Base", "_classCallCheck", "_defineProperty", "_createClass", "ContainmentType", "_inherits", "Drag", "_createSuper", "params", "_assertThisInitialized", "addClass", "dragEl", "el", "EVENT_MOUSEDOWN", "_pos", "dx", "dy", "on", "off", "l", "removeClass", "match", "b", "positions", "v", "key", "f", "destroy", "Collicat", "options", "extend", "z", "d", "DragSelection", "get", "clear", "callback", "each", "o", "add", "id", "remove", "DragManager", "addHandler", "wrap", "filter", "ElementDragHandler", "offset", "_one", "g", "k", "a", "EVENT_DRAG_START", "active", "name", "clone", "c", "EndpointRepresentation", "compute", "setVisible", "FaceValues", "LightweightFloatingAnchor", "map", "set", "isNumber", "r", "_computeFace", "x2", "y2", "ConnectionDragSelector", "j", "EndpointDragHandler", "findParent", "merge", "att", "n", "createElement", "data", "_typeof", "targetZones", "_t", "_drop", "isObject", "GroupDragHandler", "HTMLElementOverlay", "getElement", "cls", "EventGenerator", "OptimisticEventGenerator", "o", "uuid", "_inherits", "Overlay", "_createSuper", "p", "_classCallCheck", "_defineProperty", "_assertThisInitialized", "_createClass", "l", "e", "setVisible", "v", "isVisible", "get", "name", "params", "c", "register", "LabelOverlay", "isFunction", "d", "t", "map", "i", "extend", "_t", "overrides", "k", "merge", "params", "extend", "o", "p", "uuid", "Component", "_inherits", "_createSuper", "_classCallCheck", "_defineProperty", "_assertThisInitialized", "clone", "i", "_createClass", "r", "e", "key", "t", "j", "_one", "destroy", "setVisible", "v", "isVisible", "addClass", "removeClass", "getClass", "d", "id", "l", "isFunction", "Endpoint", "a", "c", "_getPrototypeOf", "prepareEndpoint", "index", "u", "Connection", "data", "isObject", "merge", "cls", "offset", "SvgComponent", "attrs", "svg", "SvgEndpoint", "classes", "handlers", "s", "AbstractConnector", "g", "dx", "dy", "x", "y", "x2", "y2", "w", "h", "location", "to", "v2", "gradientAtPoint", "compute", "ArrowOverlay", "draw", "_", "fill", "DiamondOverlay", "PlainArrowOverlay", "CustomOverlay", "_inherits", "DotEndpoint", "_createSuper", "params", "_classCallCheck", "_defineProperty", "_assertThisInitialized", "compute", "x", "y", "w", "h", "UINode", "UIGroup", "options", "uuid", "_createClass", "get", "getAnchor", "add", "u", "remove", "e", "p", "i", "l", "d", "g", "GroupManager", "f", "c", "key", "forEach", "id", "c2", "oneSet", "index", "conn", "parentEl", "_collapseSet", "_expandSet", "_expandNestedGroup", "group", "m", "_one", "el", "handleDroppedConnections", "j", "getAncestors", "SelectionBase", "each", "addClass", "removeClass", "clear", "map", "fn", "a", "name", "setVisible", "v", "EndpointSelection", "ConnectionSelection", "repaint", "Transaction", "rotate", "r", "center", "_point", "p2", "entryComparator", "reverseEntryComparator", "array", "Viewport", "width", "height", "s", "size", "offset", "dx", "dy", "b", "LightweightRouter", "cx", "cy", "ax", "ay", "o", "extend", "placeSomeAnchors", "theta", "order", "k", "ep", "theta2", "a2", "l2", "register", "StraightSegment", "location", "gradientAtPoint", "within", "closest", "b2", "q", "m2", "X", "StraightConnector", "e2", "s2", "_resolveId", "JsPlumbInstance", "defaults", "z", "_addOne", "scope", "elements", "data", "removeElement", "_oneLevel", "point", "_t", "_mergeRedraw", "r2", "destroy", "Connection", "show", "hide", "visible", "endpointFunc", "to", "color", "_typeof", "top", "left", "dragEl", "BrowserJsPlumbInstance", "attr", "filter", "getClass", "hasClass", "toggleClass", "getAttribute", "on", "callback", "off", "_maybeAdjustScroll", "getStyle", "getSelector", "_connClick", "findParent", "_connectorHover", "_connectorMouseupdown", "_epClick", "_endpointHover", "_endpointMouseupdown", "EVENT_CLICK", "_overlayHover", "_elementClick", "_elementTap", "_elementDblTap", "_elementHover", "EVENT_MOUSEOVER", "EVENT_MOUSEOUT", "EVENT_MOUSEDOWN", "EVENT_MOUSEENTER", "_getPrototypeOf", "isFunction", "t", "classes", "RectangleEndpoint", "getParams", "BlankEndpoint", "SupportedEdge", "JsPlumbListManager", "JsPlumbList", "deriveAnchor", "_loop", "n", "ArcSegment", "AbstractBezierConnector", "v2", "dist", "right", "sign", "error", "S", "steps", "length", "lut", "f_term", "l_term", "c_term", "t_term", "one_minus_t_term", "_termFunc", "terms", "prev", "x2", "y2", "a", "b", "c", "p", "r", "i", "_t", "t2", "x", "s", "a", "b", "c", "d", "A", "B", "C", "Q", "D", "S", "T", "t", "i", "_inherits", "BezierSegment", "_createSuper", "params", "_classCallCheck", "_defineProperty", "_assertThisInitialized", "_createClass", "location", "x", "y", "p", "x2", "y2", "BezierConnector", "_findControlPoint", "point", "dx", "dy", "StateMachineConnector", "w", "h", "n", "s", "FlowchartConnector", "o", "next", "cx", "cy", "commonStubCalculator", "idx", "ss", "oss", "es", "oes", "stubs", "g", "BrowserUITestSupport", "_t", "id", "e", "getAttribute", "att", "events", "EVENT_MOUSEDOWN", "size", "steps", "e2", "l", "getCanvas", "getEndpointCanvas", "within", "EVENT_CLICK", "cleanup", "k", "length", "uuid", "i", "defaults", "component_controller_default", "index", "p", "component_controller_exports", "component_controller_default", "component_controller_default", "self", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "component_controller_exports", "component_controller_default", "component_controller_default", "self", "_d", "to", "id", "key", "component_controller_exports", "component_controller_default", "_calculatePoints", "calculatePoints_fn", "_sendPointUpdate", "sendPointUpdate_fn", "component_controller_default", "component_controller_exports", "component_controller_default", "_defineDropzonesHandlers", "defineDropzonesHandlers_fn", "_drop", "drop_fn", "_getOriginTarget", "getOriginTarget_fn", "_moveElementTo", "moveElementTo_fn", "_contains", "contains_fn", "_calculatePoints", "calculatePoints_fn", "_dispatchQuestionState", "dispatchQuestionState_fn", "_sendPointUpdate", "sendPointUpdate_fn", "component_controller_default", "self", "_d", "to", "id", "index", "key", "component_controller_exports", "component_controller_default", "component_controller_default", "self", "to", "id", "key", "index", "modules", "component_controller_exports", "component_controller_default", "component_controller_default", "name", "message", "resolve"]
}
